스카이레이크의 90% 성능, Cortex-A76
Arm이 만반의 준비 끝에 고성능 CPU 코어 Cortex-A76(Enyo)를 출시합니다. Arm이 작년(2017년)에 도입한 DynamIQ 플랫폼의 새로운 CPU 코어입니다. 4년에 걸쳐 CPU의 마이크로 아키텍쳐를 새로 만들었으며, Arm CPU 코어로선 처음으로 4 명령 디코드/사이클 방식입니다. 기존의 Arm CPU 코어는 최대 3명령 디코딩/사이클이었으나 Cortex-A76는 4명령을 동시에 디코딩하는, 더 넓은 명령 디코드 대역폭을 갖춥니다.
새로운 CPU 코어 제품군의 기반이 되는 새로운 아키텍처
성능 효율이 높은 Cortex-A76
디코딩할 수 있는 명령의 수가 늘어나면 병렬로 실행하는 평균 명령어 수 IPC (Instruction-per-Clock)가 늘어납니다. 그만큼 클럭 당 성능이 오릅니다. Cortex-A76는 Arm CPU 코어 중 가장 성능이 높은 CPU입니다. Arm은 Cortex-A76이 노트북 수준의 성능을 제공한다고 설명합니다.
예를 들어 같은 Arm CPU 코어와 비교하면 7nm 공정으로 제조한 Cortex-A76(3.3GHz)의 최고 싱글 스레드 성능은 16nm 프로세스로 만든 Cortex-A73(2.45GHz)의 약 2.1배. big.LITTLE 구성으로 소비 전력은 5W에 1.9배의 성능을 발휘한다고 Arm은설명합니다. 즉 2017년의 최고 성능에 2배에 달하는 성능을 2019년의 Cortex-A76이 실현할 수 있습니다.
"Cortex-A76는 인텔 스카이레이크와 성능 차이가 10% 정도"라고 Arm의 Nandan Nayampally(VP and GM of Client Line of Business, Arm)는 말합니다. 같은 폼펙터에서 스카이레이크의 90%에 달하는 성능을 낼 수 있기에 노트북 급이라 평가하는 것입니다. 그렇다고 Arm이 Cortex-A76을 노트북용 CPU로 최적화하거나, 노트북 수준의 전력을 사용하는 건 아닙니다. 여기에서 말하는 노트북 클래스는 인텔 CPU 수준의 성능에 도달했음을 의미하는 마케팅적인 용어라고 봐야 할 것입니다.
전력 효율을 최우선으로 중시한 Cortex-A76
실제로 Cortex-A76는 기존 Arm의 big CPU 코어와 동일한 전력 범위에서 성능을 높였습니다. 즉, 지금까지 그랬던 것처럼 스마트폰 등의 모바일 디바이스에 탑재 가능한 코어입니다. 10nm Cortex-A75와 비교하면 7nm의 Cortex-A76은 코어 당 750mW의 전력을 쓰면서 성능은 40% 향상됩니다. 또 동일 성능에선 50% 정도 전력 사용량이 줄어듭니다. 10nm와 7nm의 차이는 그리 크지 않기에 아키텍처의 향상 폭이 크다고 볼 수 있겠습니다.
10nm의 Cortex-A75와 7nm의 Cortex-A76 비교
또 Cortex-A76는 SIMD/부동 소수점 연산 파이프 라인이 향상돼 부동소수점 연산 성능이 올랐습니다. 따라서 Cortex-A73/75와 비교하면 부동소수점 시스템의 성능 향상폭이 큽니다. Cortex-A73과 비교하면 부동소수점 성능은 2.5배가 된다고 합니다. 또 SIMD 연산에선 딥 러닝을 위한 내부 명령도 추가됩니다.
Cortex-A73, A75, A76 비교
성능과 전력 효율이 개선된 Cortex-A76
Arm은 Cortex-A76 외에 새로운 GPU인 Mali-G76와 새로운 비디오 프로세서 Mali-V76도 출시합니다.
이 두가지 모두 아키텍처가 크게 바뀌었는데, Arm은 이들 신형 코어 IP를 2019년의 프리미엄 모바일 시장에 진출할 계획입니다.
Arm Mali-G76 GPU를 잠간 보자면 아키텍처 자체는 G7X 시리즈에서 계송 사용한 Bifrost입니다. 이걸 기초로 개선했습니다.
기존의 G72에 비해 G76은 성능이 30% 개선됐고, 효율도 30% 개선됐습니다. 머신 러닝은 2.7배 향상입니다.
G76의 코어 수는 32개에서 20개로 줄었으나 각 엔진의 실행 채널을 두배로 늘리고 실행 유닛의 총 수는 384개에서 480개가 됐습니다.
4명령 디코드에 확장된 Cortex-A76 프론트 엔드
Cortex-A76의 마이크로 아키텍처를 보면 꽤 효율적으로 설계돼 있음을 알 수 있습니다. 가장 큰 특징은 명령 디코드 폭이 4명령/사이클로 확장하면서 실행 코어의 확장은 최소화했다는 점입니다.
명령 디코딩 대역은 늘렸으나 실행 파이프 라인은 억제
Cortex-A76 코어의 전체 구성
Arm의 고성능 Cortex-A 시리즈는 2개의 마이크로 아키텍처가 있습니다. 하나는 Cortex-A73와 A75 등의 정수 연산과 데이터 계열 파이프 라인, 그리고 부동 소수점/SIMD 연산 파이프 인으로 분리된 구조. 다른 하나는 Cortex-A57와 A72 등 모든 파이프 라인 스케줄링이 통합된 아키텍처입니다. Cortex-A76는 후자로 Cortex-A72와 비슷한 구조입니다.
Cortex-A76는 명령 디코드가 3디코더에서 4디코더로 확장됐습니다. 그러나 실행 유닛의 명령 이슈 포트는 8개로, 3명령 디코딩의 Cortex-A72와 이슈 포트 수는 같습니다. 실행 파이프 라인의 자원은 억제하고 파이프라인의 가동율을 높이는 데 초점은 둔 아키텍처입니다. 아웃 오브 오더 윈도우도 128명령으로 억제됐습니다.
프론트 엔드에서는 먼저 분기 예측 유닛을 명령어 인출 파이프라인에서 분리해, 분기 예측을 인출 파이프라인과 평행 실행하는 방식으로 분기 예측의 지연 시간을 줄였습니다. BTB(Branch Target Buffer)는 메인이 6K로 크게 늘리고 BTB 액세스 대기 시간을 줄이기 위해 BTB를 3단계로 했습니다. 기존 아키텍처에서 채용한 64개의 마이크로 BTB 외에 더 작은 16개의 나노 BTB가 있습니다. 분기 예측 알고리즘은 알려지지 않았습니다.
BTB를 3단계로 나눈 분기 예측
L1 명령 캐시는 64KB의 4-way. 명령어 인출은 각 사이클 당 최대 4명령입니다. 그러나 16-bit 명령의 경우 최대 8명령어로인출합니다. 명령 디코더는 4명령 디코드/사이클로 arm 명령 체계의 명령을 일단 Macro OPs로 변환합니다. 디코더는 최대4Mops/사이클로 레지스터 리네이밍/디스패치 유닛에 전달합니다. 디스패치 스테이지에서 Mops는 마이크로 오퍼레이션의 Micro ops로 분해해 발송합니다. 디스패치는 최대 8uops/사이클입니다.
명령어 인출
CPU 명령은 매크로 OPs로 변환해 마이크로 Ops로 나눕니다. 이 구조 자체는 Cortex-A72와 똑같음
효율을 중시한 실행 엔진
8개의 uops는 8개의 독립적인 이슈 큐에 파견됩니다. 정수 연산 계열 이슈 포트는 4, 부동소수점/SIMD(Single Instruction, Multiple Data) 연산 이슈 포트는 2, 데이터 액세스 이슈 포트는 2개로 기존의 Cortex-A72와 구성이 같습니다.
정수 연산 시스템은 단순 ALU 포트가 2개, 간단한 ALU와 멀티 사이클의 ALU 공유 포트가 1개, 분기 단위 포트가 1개입니다. ALU는 총 3 파이프 라인으로 4명령 디코드도 정수 연산을 항상 4개 병렬로 실행할 수 있진 않습니다. 이것은 프로그램의 명령 조합을 생각한 결과입니다.
SIMD / 부동 소수점 계열은 128-bit SIMD의 2 파이프 라인입니다. 모두 정수 FMAC, 곱셈 FMUL, 덧셈 FADD를 지원하며, 한족 파이프는 나누기 FDIV, 정수 IMAC도 지원합니다. 연산 지연 시간은 FADD 2사이클, FMUL 3사이클, FMAC 4사이클로 짧습니다.
데이터 계열은 2포트가 로드/스토어를 지원하는 어드레스 제네레이터 유닛에 연결됩니다. 68개의 로드와 72개의 스토어를 지원해 메모리 액세스 레이턴시를 줄일 수 있습니다. 데이터 츠피패처도 대폭 강화됐습니다.
메모리 레벨의 병렬성 개선
L1, L2, L3의 3레벨 캐시
캐시 실효 대역이 상승
64KB의 L1 데이터 캐시는 멀티 뱅크로 액세스 대역폭을 확장했습니다. L1 데이터 캐시 로드 지연 시간은 4 사이클, 256KB나 512KB의 L2 캐시는 9사이클. L2까지 코어 전용 캐시가 있으며 L3는 CPU 코어 사이에서 공유합니다.
Arm CPU 코어의 쇄신
Arm은 지금까지 고성능 Cortex-A75에도 3명령 디코딩/사이클의 좁은 디코드 폭을 고집했습니다. 이에 비해 x86 계열 CPU 코어는 인텔 ~레이크 시리즈가 5명령 디코드, AMD ZEN이 4명령 디코드, 여기에 복합 명령어를 포함한 CISC 아키텍처라 명령 디코딩 대역이 넓습니다. 또 같은 Arm 명령 세트 아키텍처에서도 애플과 삼성, 퀄컴이 명령 디코드 폭을 넓힌 CPU를 시장에 도입했습니다. 그러나 Arm은 3명령 디코딩의 작은 CPU 코어를 고집했습니다.
그러나 Cortex-A76의 등장으로 상황이 바뀌었습니다. ARm은 이제 고성능 CPU 시장에 진입했습니다. DynamIQ 플랫폼은 고성능 코어가 4명령 디코드의 Cortex-A76, 그 아래에 3명령 디코딩의 Cortex-A75, LITTLE 코어는 2명령 디코딩 인 오더 실행의 Cortex-A55가 있습니다. DynamIQ 세대에서 Arm CPU 코어의 성능 범위를 1단계 끌어 올렸음을 알 수 있습니다.
Cortex-A 제품군의 아키텍처
또 Cortex-A76의 실행 파이프 라인과 데이터 액세스는 Cortex-A72를 그대로 따라한 것처럼 보이지만 실제로는 크게 개선됐습니다. 명령 디코딩 대역의 확장이 이루어졌습니다.