ARM big.LITTLE 솔루션

 

[image]
1. 개요
2. 구동 방식
2.1. 클러스터 마이그레이션 모드
2.2. IKS 모드
2.3. HMP 모드
2.4. DynamIQ
3. 현황
4. 라이센스 취득사
4.1. ARMv7 명령어셋 기반 아키텍처 조합
4.2. ARMv8 명령어셋 기반 아키텍처 조합
4.3. ARMv8.2 명령어셋 기반 아키텍처 조합
4.4. 기타


1. 개요


ARM Holdings에서 개발한 전력 소모 개선 솔루션.
ARM Holdings에서 개발하는 CPU 마이크로아키텍처ARM Cortex-A 시리즈가 시간이 지나면서 점차 고성능화되자, 전통적인 ARM CPU 설계에서의 가장 큰 특징이라 부를 수 있는 전력 대 성능비가 저하되고 CPU 대기 시간 동안의 누설전류 문제가 점차 증가하게 되었다. big.LITTLE은 이러한 단점을 개선하고자 개발되었다. ARM CPU의 전통에서 벗어나서 '''미칠 듯한 발열'''과 '''자비없는 전력 소모율'''을 보여주기 시작하는 ARM Cortex-A15ARM Cortex-A7을 하나의 칩 안에서 쓰기 위한 인터커넥트인 CCI-400이 발표되면서 big.LITTLE을 본격적으로 도입하기 시작했다.

2. 구동 방식


간단히 서술하면, 성능이 좋으면 전성비가 나쁘고 전성비가 좋으면 성능이 나쁘다는 문제를 단일 종류 코어로 모두 해결하기는 힘드니까 고성능 코어와 저전력 코어를 함께 집어넣는다는 것이다.
크게 3가지 구동 방식으로 구성되어 있다. 명칭이 공개될 때마다 변경되고 있다. '''굵은 글씨'''는 다양한 명칭 중 정착된 명칭이다.
  • 클러스터 마이그레이션 (Cluster Migration) → CPU 코어 마이그레이션 (CPU Core Migration)
  • CPU 마이그레이션 (CPU Migration) → IKS (In-Kernel Switcher)
  • big.LITTLE 멀티 프로세싱 (big.LITTLE Multi Processing / Global Task Scheduling / HMP (Heterogeneous Multi-Processing)

2.1. 클러스터 마이그레이션 모드


[image]
일의 가중에 따라 리틀코어 부분의 멀티코어 혹은 빅코어 부분의 멀티코어 중 한쪽의 코어 클러스터만 선택해서 활성화 시킨다. 이는 기존의 거버너와 크게 다르지 않으며, 내부적으로 클럭을 반토막 내거나 두 배로 뻥튀기해서 두 클러스터 간을 조정한다. [1]
3가지 구동 방법 중 가장 기본적이면서 가장 효율과 유연성이 '''상대적'''으로 떨어지는 기술이지만, 구현이 쉽고 '''절대적'''으로 비교하면 효율 자체는 나쁘지 않다. 당장 엑시노스 기반 갤럭시 S4 WCDMA 모델이 스냅드래곤 기반 갤럭시 S4 LTE 모델과 배터리 타임이 비슷하거나 비교 우위를 점하는 상황이 보이는 것을 증거로 들 수 있다.

2.2. IKS 모드


[image]
리눅스 커널단에서 가상 코어를 구성한 뒤, 빅코어와 리틀코어 사이를 아키텍처의 구분 없이 이동한다. 사실 클러스터 마이그레이션 자체도 IKS 모드의 범주에 포함되지만, IKS 모드의 진정한 목적은 '''빅코어와 리틀코어의 혼용'''이다. 최대 쿼드코어로 구성하되, 일의 경중에 따라 사용되는 아키텍처를 다르게 구성한다.
리눅스 커널은 첫 번째부터 네 번째까지의 가상 코어를 구성하고, 각 가상 코어는 빅코어 싱글코어와 리틀코어 싱글코어로 이루어져 있다. 리눅스 스케줄러는 4개의 코어에 일을 전담하되, 들어오는 작업량에 따라 능동적으로 빅코어와 리틀코어 구분 없이 사이사이를 오고간다. 예를 들어 작업의 부담이 덜할 경우 리틀코어를 4개로 구동하고, 리소스가 조금 더 필요할 경우엔 리틀코어 2개의 작업을 빅코어로 옮겨 리틀코어 1개+빅코어 3개 또는 리틀코어 2개+빅코어 2개로 구성을 자유자재로 변경한다. 아마 처음 구상한 big.LITTLE 모델에 가장 가까운 형태라고 추정된다.
이미 2013년 5월에 관련 소스가 처음으로 공개되었으며, 정식 지원은 아니지만, 엑시노스 5420 기기에 기존 클러스터 마이그레이션을 대체한 커스텀 커널들이 있다.

2.3. HMP 모드


[image]
Heterogeneous Multi Processing
이기종 간 다중 처리

간단히 말해서 빅코어로 이루어진 클러스터와 리틀코어로 이루어진 클러스터를 클러스터에 무관하게 필요한 시점에서 '''각각 사용'''한다. IKS 모드와 같이 빅코어-리틀코어 한 쌍으로 구성된 가상 코어를 설정하고 가상 코어 내에서 부하량에 따라 일을 수동적으로 분담하는 것이 아니라, 스케줄러 자체에서 코어 각각을 통솔해 모든 코어 전체를 구동한다. 이 경우에도 전력 효율을 위해 리틀코어부터 작업이 할당되며, 리틀코어가 감당하기 어려운 작업은 빅코어에 할당하고 높은 멀티스레드 구동능력이 필요할 경우 빅코어와 리틀코어 전부를 동시에 구동시키는 것도 가능하다.
Linaro Connect 2012에서 ARM Cortex-A7 트리플+ARM Cortex-A15 듀얼 구성의 테스트 칩 'TC2'를 시연하며 'HMP 모드가 IKS 모드 대비 약 1.4배의 전력을 소모한다'면서, 이는 'HMP 모드에서 ARM Cortex-A15가 필요없이 켜지기 때문'이라는 문제를 크게 다룬 적이 있었다. 다만 이 부분은 HMP가 적용된 커널이 본격적으로 도입되는 2014년도에는 해결된 문제. HMP를 제대로 구현했다면 빅코어가 필요없이 켜지는 문제 자체가 일어날 수 없다. IKS 모드는 구조상 빅코어와 리틀코어의 코어 수가 같아야 하는 문제가 있기에 AP 설계에 제약이 걸리지만, HMP 모드에서는 관련 문제가 없다는 이점이 있다. 삼성전자에서 기존 AP의 HMP 지원 선언을 한 이후에 유출된 삼성 엑시노스 5260의 CPU-Z 구동 스크린샷을 볼 때, 모바일 기기에서도 IKS 모드보다 HMP 모드를 전면으로 내세운 것으로 추측되고 있다.
또한 필요한 경우 8코어를 전부 동원하는 방식이 가능한 것도 IKS 모드 대비 강점이다. 물론 이런 경우는 폰이 화룡마냥 불타오르긴 하겠지만 장기적으로 부하를 거는 경우가 아니라면 어느 정도 활용할 부분이 있다는 점을 고려해야 한다. 어쨌든 지원을 해야 쓸지 말지 결정이라도 하는 거니까. 빅리틀 초기에 삼성의 AP 설계 결함으로 문제가 발생한 적이 있는데 이것은 삼성 엑시노스/big.LITTLE 솔루션 관련 논란 항목 참조.

2.4. DynamIQ


2017년 3월 ARM이 발표한 차세대 big.LITTLE로써 Cortex A시리즈 중 ARM v8.2기반의 IP부터 지원한다.
기본적으로 HMP와 같은 동작 원리이지만, 기존의 big.LITTLE은 부하가 높은 작업을 리틀코어에서 빅코어로 옮기거나, 그 반대로 빅에서 리틀로 옮겨야 하는 상황이 번번히 발생하며, 이 경우 big.LITTLE 구성 요소 중 CCI(Cache Coherent Interconnect)를 이용하여 각각의 클러스터의 캐시를 단순히 동기화하여 big.LITTLE의 작업 전환을 구현한다. 하지만 각각의 클러스터는 서로 다른 계층의 캐시를 가지고 있고 클러스터의 범위를 넘어선 캐시의 공유는 불가하기 때문에 이렇게 작업을 넘겨주는 과정에서 효율이 떨어지게 된다. DynamIQ 방식은 서로 다른 종류의 코어를 하나의 클러스터로 묶고 거대한 3차 캐시를 능동적으로 공유함으로 이 작업 전환 과정의 리소스 소모를 최대한으로 줄일 수 있게 된다. 특히 설계면에서도 기존에는 클러스터로 묶여있던 코어의 구성을 매우 능동적으로 바꿀 수 있다. 1+3 구조의 쿼드코어 구성이나 4+4+4 구조의 12코어 구성의 big.LITTLE도 기존보다 쉽게 구현할 수 있게 되어서 하드웨어 벤더들이 좀 더 라인업의 구성을 용이하게 할 수 있다.
DynamIQ를 최초로 지원하는 Cortex A 솔루션인 Cortex A75와 A55가 공개됨과 동시에 발표된 내용으로는 기존의 A53만의 8코어 구조를 A75와 A55의 1+7코어 구조로 바꾸는 것만으로도 기존 대비 141%의 싱글스레드 성능, 42%배의 멀티스레드 성능 향상이 있으며 이때의 반도체 면적의 증가는 겨우 13%에 그친다고 한다.
본격적으로 DynamlQ가 적용된 AP가 시장에 출시되면서 2가지 활용도가 두드러지는데, 첫 번째는 미들레인지 AP에서의 big코어 탑재 증가이다. 이는 상대적으로 구공정이 되버린 10nm대 공정에서도 미들레인지 메인스트림급의 AP를 양산할 수 있게 된 배경상황에 맞물려, 코어수를 좀 더 유동적으로 조절할 수 있게 되면서 4+4코어 구성의 하이엔드급보다는 낮고 0+8코어의 기존 구성보다는 성능이 올라간 2+6코어 구성의 채택율이 높아젔다. 두 번째로 플레그쉽 기종의 부스트클럭 유지용이다. 기존의 4+4코어의 big.LITTLE 구성 AP에서 싱글 쓰레드의 리소스가 더 필요한 경우 일시적으로 big코어에 부스트 클럭을 적용하여 싱글코어 리소스를 확보하는 방법으로 임시 해결책을 내놓는 상황이었다. 이에 1+3+4코어 또는 2+2+4코어같이 DynamlQ를 적용하면 부스트 클럭이 적용되는 코어는 좀 더 높은 클럭과 전력사용이 용이한 cell을 적용할 수 있게 되었다. 또한 부스트 클럭이 적용되지 않는 상대적으로 클럭이 낮은 big코어가 중간에서 받쳐주는 MIDdle 코어의 역할을 할 수 있게 유동성이 더해진 것은 덤.

3. 현황


2014년 기준으로 HMP가 구현된 커널이 도입되어 안정화를 마친 후 그동안의 우려와 잡음을 불식시키고 모바일 업계에서 사실상의 표준으로 등극한 상황.

4. 라이센스 취득사



4.1. ARMv7 명령어셋 기반 아키텍처 조합



4.1.1. ARM Cortex-A15 + ARM Cortex-A7 조합


  • 르네사스
    • MP6530: 듀얼+듀얼 조합의 쿼드코어
  • 미디어텍
    • MT8135: 듀얼+듀얼 조합의 쿼드코어
  • 삼성전자
    • 엑시노스 5 Octa (5410 / 5420 / 5422 & 5800 / 5430): 쿼드+쿼드 조합의 옥타코어
    • 엑시노스 5 Hexa (5260): 듀얼+쿼드 조합의 헥사코어
  • 하이실리콘[2]
    • Kirin 920 / 925: 쿼드+쿼드 조합의 옥타코어
  • Allwinner
    • A80: 쿼드+쿼드 조합의 옥타코어
  • LG전자
    • Nuclun 7111: 쿼드+쿼드 조합의 옥타코어

4.1.2. ARM Cortex-A17 + ARM Cortex-A7 조합



4.2. ARMv8 명령어셋 기반 아키텍처 조합



4.2.1. ARM Cortex-A57 + ARM Cortex-A53 조합



4.2.2. ARM Cortex-A72 + ARM Cortex-A53 조합



4.2.3. ARM Cortex-A73 + ARM Cortex-A53 조합



4.2.4. ARM Cortex-A53 + ARM Cortex-A53 조합


의외로 생각될 수 있는 조합 중에 동일한 로직의 CPU코어를 사용하는 A53+A53의 조합이 있다. 보통은 빅 쪽을 담당하는 A53의 최고 클럭 속도가 리틀 쪽에 비해 더 빠르기 때문에 이러한 조합도 충분히 타당한 것.
이것이 가능한 이유는 단일 셀을 어떻게 구성하느냐에 따라 성능과 셀 면적간의 트레이드-오프 관계가 형성되기 때문이다. 즉 같은 로직이라고 해도 고밀도 셀을 활용하여 설계할 경우 최대 클럭이 제한되는 대신 코어가 차지하는 면적이 줄어들면서 원가 측면에서 유리해지고, 반면 방열 면적 확보에는 불리한 설계가 되지만 저클럭 영역에서는 더 좋은 대기전류 특성을 보이게 된다. 반대로 고성능 셀을 사용할 경우 셀 내 트랜지스터 성능의 향상 덕분에 클럭 속도를 끌어올릴 수 있는 대신 구동전력과 대기전력 측면에서 불리할 수밖에 없고 면적 등과 관련된 원가에서도 불리해진다.

4.2.5. ARM Cortex-A72 + ARM Cortex-A53 + ARM Cortex-A53 조합


미디어텍에서 big.LITTLE 솔루션을 응용한 big.MIDdle.LITTLE 솔루션을 적용하여 만든 조합이다. 3개의 클러스터로 구분되어 있으며 ARM Cortex-A72 듀얼코어 CPU가 빅코어, 클럭이 약간 높은 ARM Cortex-A53 쿼드코어가 미드코어, 클럭을 낮춘 ARM Cortex-A53 쿼드코어가 리틀코어의 역할을 한다. 미디어텍 이외에 이런 조합을 사용하는 제조사는 없다.
  • 미디어텍
    • Helio X20 MT6797: 듀얼+쿼드+쿼드 조합의 데카코어
    • Helio X23 MT6797D: 듀얼+쿼드+쿼드 조합의 데카코어
    • Helio X25 MT6797T: 듀얼+쿼드+쿼드 조합의 데카코어
    • Helio X27 MT6797X: 듀얼+쿼드+쿼드 조합의 데카코어

4.2.6. ARM Cortex-A73 + ARM Cortex-A53 + ARM Cortex-A35 조합


미디어텍ARM Cortex-A53보다 더욱 전성비가 좋은 ARM Cortex-A35 코어를 세계 최초로 리틀 클러스터에 사용하면서 ARM Cortex-A73 + ARM Cortex-A53 + ARM Cortex-A35 조합을 선보였다.

4.3. ARMv8.2 명령어셋 기반 아키텍처 조합



4.3.1. ARM Cortex-A77 + ARM Cortex-A55 조합


  • 스냅드래곤 865: 싱글+트리플+쿼드 조합의 옥타코어. 855까지는 Kryo 4xx의 세미 커스텀 코어를 사용했지만 이 제품부터는 레퍼런스 코어를 그대로 서용한다.
  • 엑시노스 9 Series (980): 듀얼+헥사 조합의 옥타코어.

4.4. 기타


  • Apple
    • A10 Fusion: 듀얼+듀얼 조합의 쿼드코어. 빅 코어와 리틀 코어 각각 애플의 ARMv8-A 호환 자체 아키텍처인 Apple HurricaneApple Zephyr를 사용한다.[3]
    • A10X Fusion: 트리플+트리플 조합의 헥사코어. 빅 코어와 리틀 코어 각각 ARMv8-A 호환 자체 아키텍처인 Apple HurricaneApple Zephyr를 사용한다.
    • A11 Bionic: 듀얼+쿼드 조합의 헥사코어. 빅 코어와 리틀 코어 각각 ARMv8-A 호환 자체 아키텍처인 Apple MonsoonApple Mistral을 사용한다.
    • A12 Bionic: 듀얼+쿼드 조합의 헥사코어. 빅 코어와 리틀 코어 각각 ARMv8-A 호환 자체 아키텍처인 Apple VortexApple Tempest를 사용한다.
    • A12X Bionic: 쿼드+쿼드 조합의 옥타코어. 빅 코어와 리틀 코어 각각 ARMv8-A 호환 자체 아키텍처인 Apple VortexApple Tempest를 사용한다.

[1] 커널 입장에서 코어가 LITTLE에서 big으로 작업이 넘어갈 때, 부하는 커졌는데 클럭은 떨어졌다고 인식하는 것을 해소하기 위해서이다.[2] 화웨이의 자회사이다.[3] A10 시리즈는 APPLE의 첫 big.LITTLE이 적용된 AP로 일종의 시험적 성격이 강한 클러스터 마이그레이션 방식으로 동작한다. 이후에 출시된 A11부터는 HMP모드로 동작