ì¼ë‹¨ "ì •ì„¤"í™” ë˜ì–´ë²„린 ê´´ë‹´ë‚´ìš©
- Exynos는 ë™ê¸°ì‹ ë©€í‹°ì½”ì–´ë¼ ì „ê¸°ëŠ” 좀 ë” ë¨¹ê³ ì„±ëŠ¥ì´ ë” ì¢‹ë‹¤. 특히 ë™ê¸°ì‹ì´ë¼ 코어간 협ë™ì´ 잘 ë˜ì–´ì„œ 1ê°œ 태스í¬ì— ëŒ€í•´ì„œë„ ë‘ ì½”ì–´ê°€ í˜‘ë ¥í•˜ì—¬ ë” ë¹ ë¥¸ 처리가 가능하다.
- Snapdragon(퀄컴)ì€ ë¹„ë™ê¸°ì‹ ë©€í‹°ì½”ì–´ë¼ ì „ê¸°ë¥¼ 좀 ëœ ë¨¹ëŠ” ëŒ€ì‹ ì½”ì–´ê°„ 협ë™ì´ 잘 안ë˜ì–´ ì„±ëŠ¥ì´ ë–¨ì–´ì§„ë‹¤.
ë¨¼ì € ì´ Context ë‚´ì—ì„œ ë™ê¸°ì‹ (Synchronous) / 비ë™ê¸°ì‹ (Asynchronous)ì´ ì–¸ê¸‰í•˜ëŠ” 대ìƒì€ ê° coreë¡œ 주어지는 clockì˜ frequency controlì´ë‹¤.
Asynchronous Multicoreë¼ëŠ”게 퀄컴ì—ì„œ 내세우는 ë°©ì‹ì¸ë°, ê° Core별로 Frequency를 다르게 줄 수 있다는 ì´ì•¼ê¸°ë‹¤. 즉, Core 0, 1 ì´ë ‡ê²Œ ë‘ê°œ 있ì„ë•Œ, Core 0ì€ 1GHz, Core 1ì€ 500MHz ê°™ì€ ì‹ìœ¼ë¡œ ì„¤ì •í–ˆë‹¤ê°€ 둘다 1.2GHzë¡œ ì„¤ì •í–ˆë‹¤ê°€ ì´ëŸ°ê²Œ ëœë‹¤. 반대로 Synchronous Multicore는 í•ìƒ ë‘˜ì˜ ì†ë„ê°€ 같다.
ê²°ë¡ ë¶€í„° ì´ì•¼ê¸° 하ìžë©´, 양쪽다 ì œëŒ€ë¡œ DVFS mechanismì„ ì‚¬ìš©í•œë‹¤ê³ í–ˆì„ë–¼, Synchronous multicore는 ìƒëŒ€ì 으로 ì „ë ¥ì„ ë” ë¨¹ê²Œ ë˜ëŠ” ì ì´ ìžˆê³ , ì„±ëŠ¥ì— ìžˆì–´ì„œëŠ” ì´ë¶€ë¶„ë•Œë¬¸ì— ì°¨ì´ê°€ 나는 경우는 대충 ì—†ë‹¤ê³ ë³´ë©´ ëœë‹¤. ë”°ë¼ì„œ ì™„ì „ ê°™ì€ ì¡°ê±´ì—서는 무조건 Asynchronous multicoreê°€ ë‚«ë‹¤ê³ í•´ë„ ë 것 같다. (ë‚˜ë„ Exynosê°€ asynchronousê°€ ë˜ì—ˆìœ¼ë©´ 하는 사람ì¸ë°... ì´ê±´ 다른 ë¬¸ì œê³ ...) ê° ì½”ì–´ë³„ë¡œ 다른 í´ëŸ 줄 수 있게 설계하면 asynchê°€ ë˜ëŠ”ê±°ê³ ê·¸ëƒ¥ í•˜ë‚˜ì˜ clock source/dividerì—ì„œ 코어들한테 í•œë²ˆì— ì£¼ë©´ synchê°€ ë˜ëŠ” ê²ƒì¼ ë¿.
Exynos4210ì´ Snapdragon (구체ì ì œí’ˆì€ ëª¨ë¥´ê² ëŠ”ë°, 대충 4210ì´ëž‘ ê°™ì€ ì„¸ëŒ€ ì œí’ˆ 기준) 보다 대체ì 으로 ì„±ëŠ¥ì´ ì¢‹ì€ê±´ 맞는ë°, ì´ê±´ ë‘˜ì´ ì„œë¡œ Synch/Asynch multicoreë¼ì„œ ìƒê¸°ëŠ” ì°¨ì´ì™€ ë¬´ê´€í•˜ê³ , 버스/메모리/기타IP ë“¤ì„ ë´ì•¼ 하는 ë¬¸ì œë‹¤.
ë˜í•˜ë‚˜ "ë™ê¸°ì‹"ì´ë¼ì„œ "ë‹¨ì¼ Task"ì— ëŒ€í•´ 여러 코어가 í˜‘ë ¥ì´ ê°€ëŠ¥í•˜ë‹¤ëŠ” ì´ì•¼ê¸°ëŠ” ì™„ì „ ê°œë»¥ì¸ ê´´ë‹´ìž„.
ë‹¨ì¼ taskì— ëŒ€í•´ ë‘ ì½”ì–´ì—ì„œ í˜‘ë ¥í•´ì„œ ëŒ ìˆ˜ìžˆìœ¼ë©´ ì• ì´ˆì— distributed algorithmì´ë‹ˆ ë니 í•˜ê³ ê³ ë¯¼í• ì´ìœ ê°€ ì• ì´ˆì— ì—†ìŒ. 그게 진짜 가능한 ì¼ì´ë¼ë©´ 아가님하 í¬í•¨í•´ ì´ìª½ë¶„야 computer scientist들 ì „ë¶€ 다 개삽질 수ì‹ë…„í•œ 것ì´ëž€ ì´ì•¼ê¸°. ê·¸ëž˜ë„ ê·¸ê²Œ 진짜로 가능한 ì¼ì´ë¼ë©´ ì‹¤ì œ ë‚´ê°€ 담당하는 ì—…ë¬´ë„ ìƒë‹¹ížˆ 쉬워지긴 하는ë°, ì• ì´ˆì— ë¶ˆê°€ëŠ¥í•œ ì´ì•¼ê¸°ë‹ˆ ë...
ë‘ ì½”ì–´ê°€ í˜‘ë ¥í•´ì„œ ì¼ì„ 하기 위해서는 taskë„ ë‘ê°œ ì´ìƒìœ¼ë¡œ ìª¼ê°œì ¸ì•¼ í•˜ê³ , ì´ ë‘˜ì´ ë” ìž˜ í˜‘ë ¥í•˜ê¸° 위해서는 쪼개진 taskë“¤ì´ ì„œë¡œ ì—°ê´€ì´ ì—†ì–´ì§ˆìˆ˜ë¡ ë” ì¢‹ë‹¤. 단언컨ë°, 논리ì 으로 í•˜ë‚˜ì˜ taskê°€ 여러 ì½”ì–´ì— ë™ì‹œì— ë™ìž‘하는건 안ëœë‹¤. 아니.. ë™ì¼ task를 ë‘ ì½”ì–´ì— ì˜¬ë¦´ 수는 있는ë°, 그러면 그냥 í•œ ì½”ì–´ì— í•œ task올린거보다 ëŠë ¤ì§ˆê±¸? ã…‹ ê·¸ë¦¬ê³ , ë‘ ì½”ì–´ì— ìž…ë ¥ë˜ëŠ” clockì´ ë™ì¼ frequencyëƒ ì•„ë‹ˆëƒëŠ” ì´ ë¬¸ì œì— ì „í˜€ 무관하다. ë‘개로 쪼갰는ë°, 하나는 full frequency 1Ghz기준으로 utilizationì´ í•˜ë‚˜ëŠ” 95%, 하나는 40%ë©´ 하나는 1Ghzë¡œ ëŒê³ 하나는 대충 500MHzë¡œ ëŒë©´ì„œ 하는거나 둘다 1GHzë¡œ 하는거나 ì†ë„ë©´ì—서는 별 ì°¨ì´ ì—†ë‹¤. 소모 ì „ë ¥ì€ ì¢€ ë§Žì´ ì°¨ì´ë‚˜ê² 지만....