http://pc.watch.impress.co.jp/docs/column/kaigai/20121205_577351.html




big.LITTLE(이하 빅리틀) 에 대해 알아보겠습니다.
고성능 코어와 저전력 코어의 이종결합인 빅리틀은, 부하가 높은 작업은 빅코어로 빠르게 처리하고,
부하가 낮을 때는 리틀코어로 전력 소비를 억제하는 컨셉입니다.

최초는 Cortex-A15, Cortex-A7 의 결합이고, 다음 세대는 Cortex-A57, Cortex-A53 의 결합입니다.

구현 방식이 크게 3가지입니다.



(1) Cluster Migration
클러스터 단위로 전환하는겁니다.
그런데 이렇게 말하면 뭔 말인지 이해하기 어렵지요.
특정 DVFS포인트 기점으로 빅코어와 리틀코어 간에 스위칭이 일어나는데, 그 단위가 각 CPU 클러스터인겁니다. (DVFS : Dynamic Voltage and Frequency Scaling, 부하에 따라 전압과 클럭이 변화.)
빅 클러스터와 리틀 클러스터 간의 전환만 가능합니다.
Cortex-A15 4코어 + Cortex-A7 4코어 구성이라면,
Cortex-A15 4코어만으로 쓰거나, Cortex-A7 4코어만으로 쓸 수 있을뿐, 각각 2개씩 쓴다거나 하는 조합은 불가능합니다.

장점으로는 구조가 간단합니다.
단점으로는, 가변성이 적은 탓에 필요 이상의 성능이 제공되고, 그로 인해 소비전력 이득이 작아집니다.
필요 이상으로 전력을 사용할 수 밖에 없는거지요.
또한 클러스터 단위로 전환되기때문에 빅클러스터와 리틀클러스터의 코어 수가 같아야하고, 이는 다이 사이즈를 증가시킵니다.

(2) CPU Migration
코어 단위로 전환하는겁니다.
특정 DVFS 포인트(전압, 클럭)을 기점으로 빅코어와 리틀코어 간에 스위칭이 일어나는데,
빅코어 하나와 리틀코어 하나로 구성된 단위 내에서 이루어집니다.
Cortex-A15 4코어 + Cortex-A7 4코어 구성이라면,
상황에 따라 Cortex-A15 1코어, Cortex-A7 3코어를 사용하는 식으로, 코어 이용에 가변성이 있습니다.

장점은 최적화된 소비전력의 구현이 가능합니다.
빅코어와 리틀코어가 하나씩 묶인 것인 한 단위이기때문에 여기서도 빅코어와 리틀코어의 수가 같아야하지만, 이렇게 효율적으로 사용된다면 문제가 되지 않습니다.
단점으로는 DVFS 드라이버 수정 필요.

(3) MP (Multi-Processing)
빅코어, 리틀코어 동시에 다 쓰는겁니다.
빅코어와 리틀코어의 수가 달라도 상관없습니다.

장점으로는 단연 성능.
단점은, 각 작업의 부하에 따라 최적의 코어에 작업을 분배해야하기때문에 OS 수준에서 태스크 스케줄링을 최적화해줘야합니다.


슬라이드 상에는 엑시노스가 3가지 모두 지원 가능하다고 밝히고 있지만,
실제로 MP는 아직까지 개발 중인듯 합니다.


 

ARM의 빅리틀 테스트 칩은 빅코어와 리틀코어 개수가 달랐습니다.
(Cortex-A15 x2 + Cortex-A7 x3)


CPU Migration 과 Cluster Migration 의 작업 전환을 보여줍니다.

Cluster Migration 의 경우, 빅코어와 리틀코어가 일괄적으로 전환이 일어나지만,
CPU Migration 의 경우, 코어마다 각각 전환이 일어나는 것을 확인할 수 있습니다.

(각 방식별 개발 상황)



MP의 경우 전환이 필요없지만, CPU Migration 과 Cluster Migration 의 경우에는 전환 과정이 필요합니다.


코어 클러스터들은 GIC-400 이라는 인터럽트 컨트롤러를 공유하여, 인터럽트를 전환합니다.
전환에는 하이퍼바이저(Hypervisor)를 통한 가상화를 통해서 이루어집니다.


코어 클러스터의 L2 캐시는 CCI-400 라는 cache coherency를 통해서 스테이트를 이동시킵니다.
DRAM을 거치지 않고 캐시 사이에서만 이루어지기때문에 전환 시간은 짧습니다.


스테이트의 저장, 복원은 동작 클럭이 높을수록 빠릅니다.
전환을 위해 CPU가 처리를 멈추는 시간(블랙 아웃)은 30us~50us(마이크로초) 이고, 최소 20us 까지 가능합니다.
실제 사용 중에 지연을 느낄 수 없습니다.


삼성은 이미 실제 칩 기반으로 검증을 실시했습니다.
Cortex-A15 기반 빅코어는 0.8~1.7GHz (0.9~1.2V) 로 동작하고,
Cortex-A7 기반 리틀코어는 0.2~1.0GHz (0.9~1.2V)로 동작합니다.

빅코어가 800MHz, 사용률 70% 이하일 때, 리틀코어로 전환됩니다.
리틀코어가 1.0GHz, 사용율 95% 이상일 때, 빅코어로 전환됩니다.
각 코어의 부하를 체크하는 간격은 100ms

(검증 결과, 최대 68% 의 소비전력 절감)



 

Posted by gamma0burst Trackback 0 : Comment 10

댓글을 달아 주세요

  1. addr | edit/del | reply 등대지기 2012.12.16 14:19

    68% 소비전력 절감에 깜짝 놀라고 갑니다.
    빅리틀 프로세싱이 이렇게 많이 소비전력 절감을 한다니 대단하군요.
    또 많이 배우고 뿌듯한 마음으로 댓글을남깁니다.
    항상 좋은글 감사드립니다~

    • addr | edit/del Favicon of https://gamma0burst.tistory.com BlogIcon gamma0burst 2012.12.16 14:47 신고

      감사합니다.
      스마트폰에는 빅리틀을 쓸 수 밖에 없어보입니다.
      Cortex-A15 소비전력이 너무 부담되지요.

  2. addr | edit/del | reply 파라오 2012.12.17 12:34

    본문 중에 빅리틀 하드웨어 플랫폼 이미지에서 A15x2, A7x3 이 부분은 이미지(A7 x2)로 미뤄볼때 오타가 아닐까요

  3. addr | edit/del | reply 궁금 2013.01.10 11:13

    안녕하세요. 감마님의 블로그를 즐겨보는 행인 중의 한 명입니다.
    이렇게 올려주신 자료를 보면 옆에 confidential이라고 써있는 경우가 있는데
    이런 자료들은 어떻게 구하시는 건지 궁금해요~~

    • addr | edit/del Favicon of https://gamma0burst.tistory.com BlogIcon gamma0burst 2013.01.10 15:13 신고

      맨 위에 링크해놓은 출처에 있는 이미지입니다.
      제가 개인적으로 저런 자료를 구할 수 있는 처지는 아닙니다.
      다른 사람들이 공개 or 유출하면 그 때서야 아는거지요.

  4. addr | edit/del | reply 궁금 2013.01.10 11:14

    출처에서 그냥 가져오신가용? :) 저분들은 어떻게 그런 정보를 구하는걸까요...신기하네요

  5. addr | edit/del | reply ㅇㅇㅇㅇㅇ 2013.01.10 12:25

    사진좀 퍼가도 될까요?
    오늘 발표된 삼성 옥타코어가 저 빅리틀을 기반으로 수정작업을 거친거라서 저자료가 좀 필요해보여서ㅎㅎㅎ

    • addr | edit/del Favicon of https://gamma0burst.tistory.com BlogIcon gamma0burst 2013.01.10 15:14 신고

      사진은 원출처가 있으니(맨 위의 링크) 저에게는 퍼가라 말라 할 권한이 없습니다.
      내용은 제가 작성한 것이기때문에 그대로 퍼가는건 안 되고요.