Cortex-A57을 발전시킨 Cortex-A72

 

ARM은 2016년의 하이엔드 CPU IP로 Cortex-A72를 추진하고 있습니다. Cortex-A72는 Cortex-A57의 후소작으로 ARM의 자체 코어 중에선 가장 선응이 높은 CPU코어입니다. 높은 싱글 스레드 성능을 낮은 소비 전력으로 달성할 수 있으며, Cortex-A72이 주요 목표로 삼은 프로세스 기술은 14/16nm 노드의 FinFET 3D 트랜지스터 프로세스입니다. 현 세대인 Cortex-A57과 비교하면 같은 프로세스 노드라 해도 Cortex-A72가 성능이 높으며 다이 크기도 작다고 합니다.

 

1.jpg

 

Cortex-A72의 성능을 Cortex-A57과 비교한 것입니다. SIMD/부동 소수점 연산 계통은 유닛을 대폭 재설계해 성능이 크게 올랐으며 정수 연산도 성능은 향상됐습니다.

 

2.jpg

 

Cortex-A72의 기본 설계는 Cortex-A57과 상당 부분이 비슷합니다. Cortex-A57은 Cortex-A15을 기반으로 만들었으며 Cortex-A15부터 Cortex-A72까지는 기본적인 설계의 공통점이 많습니다. 모두 3명령 디코딩에 8실행 파이프 라인의 아웃 오브 오더 머신입니다. 그러나 아키텍처를 보면 다음 세대로 가면서 크게 개선되는 점이 있습니다. Cortex-A72는 Cortex-A15부터 시작된 ARM 고성능 CPU 아키텍처의 완성형이라 할 수도 있겠습니다.
 
3.jpg

 

Cortex-A72의 설계를 주도한 Mike Filippo(Lead Architect and ARM Fellow)
 
 
명령 디코딩은 3명령/사이클을 유지하고 여러 부분을 개량
 
아래는 Cortex-A72 코어 전체의 블럭 다이어그램입니다. 대략적인 구조는 이미 밝힌 대로 Cortex-A57에서 크게 달라지지 않았습니다. CPU 코어의 면적은 TSMC(Taiwan Semiconductor Manufacturing Company)의 16FF+에서 1.15제곱mm로 매우 작습니다. 설계를 보면 작은 크기로 만들면서 여러 부분에서 Cortex-A57보다 튜닝이 됐으며 IPC(Instruction-per-Clock)가 향상됐고 작동 클럭의 상한도 약간 올라갔습니다. 
 
4.jpg

 

Cortex-A72 블럭 다이어그램
 
Cortex-A72의 실행 파이프 라인 위쪽에선 분기 예측(Branch Prediction)이 크게 바뀌었습니다. ARM은 Cortex-A15 이후 Cortex-A12/17도 포함해서 bi 모드 프레딕터를 사용했습니다. 그러나 Cortex-A72에서는 bi-mode 알고리즘을 제외했습니다. 분기 예측 매커니즘의 세부 사항은 밝혀지지 않았지만 알고리즘은 새로워지고 예측 정확도가 향상됐습니다.
 

BTB(Branch Target Buffer)는 2K-4K, 용량이 더 작고 접속이 빠른 micro BTB는 64엔트리에서, 니어 브런치는 micro BTB에서 2단계 액세스입니다. 이들 버퍼의 숫자는 Cortex-A57에서 변한 것이 없으나 micro BTB의 태그 구조가 보다 효율적으로 변했습니다.

 

5.jpg

 

L1명령 캐시는 48KB로 3-way 세트 어소시에이티브로 약간 변칙적인 구성입니다. Translation Lookaside Buffer(TLB)는 L1 명령 캐시의 ITLB가 48엔트리, L2 TLB가 1,024엔트리의 2레벨 구성입니다. TLB는 서버 등의 애플리케이션에서 부하가 걸리는 부분이기에 기존 세대의 Cortex-A57보다 확장됐습니다. 페치와 함께 분기 예측 스테이지는 기존 Cortex-A57과 같은 5스테이지를 유지합니다.

 

Cortex-A72 명령 디코딩의 피크 대역은 Cortex-A15/57과 같은 3명령/사이클입니다. 명령 디코드 폭을 넓히면 CPU의 복잡도가 훨씬 높아지기 때문이라고 봅니다. 그러나 명령 디코드 효율을 높여 평균 명령 디코드 수를 늘렸습니다. 또 ARM은 명령 디코딩&레지스터 리네이밍을 대폭 재설계해 이 부분을 간단하게 만들었습니다. 

 

6.jpg

 

 

처리할 수 있는 명령 수는 사이클 당 3 Micro-OPs에서 5로 확대

 

파이프 라인 스테이지는 명령 디코딩에서 3사이클, 다음의 리네이밍에서 2사이클. 페치부터 명령 디코딩과 리네임까지 총 10사이클이 됩니다. Cortex-A57까지 그랬던 것처럼 ARM은 깊은 파이프 라인 구조를 만들더 더 높은 클럭을 쉽게 달성할 수 있도록 했습니다.

 

3-way의 명령 디코더부터는 각 사이클마다 최고 3Micro-OPs(내부 명령)을 출력할 수 있습니다. 3개의 Micro-OPs는 레지스터 리네이밍 스테이지를 거쳐 처리 유닛에 발행됩니다. 여기까지는 3 Micro-OPs/사이클인데 다음의 처리 유닛에서 더 자세한 명령으로 분할합니다. 처리 단계에선 각 실행 파이프에 번들된 전용 큐로 처리됩니다. 

 

7.jpg

 

Cortex-A57에서 크게 달라진 점은 처리 유닛에서 이슈 큐에 대한 명령 처리가 5 Micro-OPs가 됐다는 것입니다. Cortex-A15/A57까지는 여기가 3 Micro-OPs/사이클이라 병목 현상을 일으키기 쉬웠지만 Cortex-A72에서는 5 Micro-OPs로 확장되면서 8개의 실행 파이프 라인을 쓰기 쉬워져, 실행 파이프라인의 가동 효율이 높아졌습니다. 
 
8.jpg

 

Cortex의 처리 아키텍처
 
이 부분의 구조는 인텔과 AMD의 고성능 CPU 계열과 비슷합니다. 인텔과 AMD의 경우는 CISC(Complex Instruction Set Computer)의 x86 명령이라 CISC 포맷에서 복합한 Fused Micro-OPs로 변환, 처리 단계에서 Fused Micro-OPs를 해석해 이슈 포트로 보냅니다.
 

RISC(Reduced Instruction Set Computer)인 Cortex-A72의 경우에 ARM은 ARMv8의 64-bit 아키텍처 AArch64 명령으로 아키텍처 명령들을 합쳐 하나의 Fused Micro-OPs 인스트럭션 퓨전으로 만듭니다. 이에 따라 처리 시 해석되는 Micro-OPs를 늘리고 명령 스케쥴러의 부담을 줄입니다.

 

디스패치 스테이지에서는 주로 레지스터 파일 액세스의 전력과 면적을 줄입니다. 레지스터 파일의 구성 변경은 포트 공유로 레지스터 파일의 리드 포트 수를 줄이고 레지스터 방향의 면적을 줄이며 전력을 낮춥니다. 아웃 오브 오더 윈도는 Cortex-A57과 같은 128명령이며 리드 레지스터 크기도 마찬가지입니다. 

 

 

SIMD/이동 소수점 파이프라인을 재설계, 레이턴시를 크게 단축

 

각 실행 유닛에 대한 이슈 큐는 각각의 이슈 포트마다 독립된 베이션 스테이션 방식입니다. 각 포트마다 8 Micro-OPs분의 큐를 갖습니다.

 

실행 파이프 라인의 구성은 Cortex-A15/57을 거의 승계해 총 8파이프입니다. 간단한 명령의 실행 클러스터가 2개, 분기 유닛이 1개, 곱셈이나 나눗셈 등 복잡한 명령의 클러스터가 1개, SIMD(Single Instruction, Multiple Data)/FPU 명령의 클러스터가 2개, 로드/스토어의 클러스터가 2개로 구성됩니다.

 

9.jpg

 

실행 파이프 라인에서 눈에 띄는 변경점은 SIMD 파이프 라인을 크게 설계 변경해 실행 레이턴시를 대폭 단축한 것입니다. 구체적으로는 부동 소수 점 곱셈(FMUL)이 5사이클에서 3사이클로, 부동 소수 점 덧셈(FADD)는 4사이클에서 3사이클에, 부동 소수점 연산(FMAC)은 9사이클에서 6사이클로 단축됩니다. Cortex-A57에서 SIMD 파이프의 최장 레이턴시는 9사이클이나 Cortex-A72에서는 6 사이클로 줄었습니다. 이 밖에 CVT나 Radix-16 FP 나눗셈 유닛의 성능도 개선됐습니다. 실행 레이턴시가 줄어들어 아웃 오브 오더 윈도우를 넓히지 않아도 실질적으로 아웃 오브 오더 실행의 효율이 높아졌습니다.
 
10.jpg

 

Cortex-A72의 실행 지연
 
또한 데이터 포워드를 강화하고 제로 사이클의 포워딩 패스를 늘렸습니다. 의존성이 있는 명령이 연속되는 경우에도 제로 사이클 데이터 포워딩에서 계속 실행할 기회가 늘어났습니다.
 
 
로드/스토어에서 선반입과 TLB를 개량
 
Cortex-A72 로드/스토어 파이프는 2개로, 각 사이클마다 1 세이브와 1 로드가 가능합니다. 로드의 L1 히트 레이턴시는 4사이클로 Cortex-A57과 다르지 않습니다. 그러나 L1 액세스 소비 전력은 줄었으며 데이터 예측의 선반입도 개량됐습니다. Cortex-A57에서 선반입은 L1과 L2에서 개별적으로 관리됐지만 Cortex-A72에서는 L1과 L2를 통합 관리했습니다. 이에 따라 기존의 공유 L2 컨트롤 유닛에 배치됐던 것이 각각의 CPU 코어 쪽으로 이동됐습니다. 
 
11.jpg

 

L1 데이터 캐시는 32KB로 2-way 세트 어소시에이티브, 64바이트 라인. L1 데이터 캐시 TLB는 기존에 로드와 스토어로 분할됐지만 Cortex-A72에서 통합됐습니다. 공유 L2 캐시는 최대 4MB까지 지원되면서 L2 TLB의 크기도 1,024엔트리까지 확장됐습니다.
 

또 L2 캐시 중재는 슬레이브 유닛을 통해 Accelerator Coherency Port(ACP)로 접속하는 옵션이 지원됩니다. 이는 액셀러레이터 유닛이 CPU 캐시에 커히런시 액세스를 할 수 있도록 해주는 포트입니다. 일관성은 한쪽 방향으로만 작동하기에 액셀러레이터는 CPU캐시를 스누프할 수 있지만 CPU는 액셀러레이터를 스누프할 수 없습니다.

 

12.jpg

 

13.jpg

 

전체적으로 보면 Cortex-A72는 코어를 작게 유지하면서 성능을 높이는 데 집중한 아키텍처입니다. 이것은 코어의 크기를 늘리는 인텔과는 다르지요. 기존의  SIMD/부동 소수점 연산 유닛을 재설계하는 등 실행 성능을 쉽게 올릴 수 있는 부분을 주로 수정했습니다. ARM은 Cortex-A72를 하이엔드 모바일 뿐만이 아니라 저전력 서버 시장에도 추진할 것입니다.
 
14.jpg

 

15.jpg

 

기글하드웨어(http://gigglehd.com/zbxe)에 올라온 모든 뉴스와 정보 글은 다른 곳으로 퍼가실 때 작성자의 허락을 받아야 합니다. 번역한 뉴스와 정보 글을 작성자 동의 없이 무단 전재와 무단 수정하는 행위를 금지합니다.