2014년 3월 31일 월요일

LLVM을 통해서 살펴본 Apple A7 (ARM64)의 특징

LLVM의 Backend과정은 머신에 종속적인 코드를 생성해 준다.
따라서 Backend과정에 사용되는 코드를 보면  Backend에 사용될 하드웨어의 사양이 유추가 가능한데. Apple에서 사용하는 iPhone5S, iPad Air, IPad Mini retina에 사용되는 A7의 하드웨어 사양을 알아보자. 물론 Apple 의 A7은 자세한 하드웨어 사양은 공개되지 않았다.

# A7의 OoO

최근은 SoC는 OoO를 지원한다. (Out of Order) 또한 OoO를 사용하기 위한 OpBuffer의 깊이도 중요한다. LLVM의 코드에 보면 이것을 알수 있다.

<code>
 15def CycloneModel : SchedMachineModel {                                      
 16  let IssueWidth = 6; // 6 micro-ops are dispatched per cycle.              
 17  let MicroOpBufferSize = 192; // Based on the reorder buffer.              
 18  let LoadLatency = 4; // Optimistic load latency.                          
 19  let MispredictPenalty = 16; // 14-19 cycles are typical.                  
 20}
</code>

OoO 는 6개가 Decode가 가능하며, Op 버퍼는 192이다. 그리고 파이프 라인 깊이는 16단임을 알수 있다.

이것을 Intel의 Haswell과 비교해 보자

                                     |  A7   | Haswell |                                          
| OoO                         |       6   |         4     |                                 
| OpBuffer                  |  192   |    192     |                   
| LoadLatency           |      4    |        4     |              
| MispredictPenalty  |     16   |      16     |                    

ARMv8 64와 X86을 동등 비교할 수는 없고, 또한 X86의 8개의 uOP ports를 사용한다.

하지만 Apple의 최소 ARM64는 구조로만 좁혀서 비교해 보면
X86의 그것과 대등한 수준이라고 할 수 있다.
다시말하면 현재 Apple SoC A7으로도  Desktop이나 Server군으로도
충분한 활용이 가능고 볼수 있다.
물론 이것은 Tool Chain까지의 이야기며 Application Lv은 또 다른 이야기가 될것이다.  

# A7의 Core Resource

## 4개의 Interger Piles 와 48엔트리의 버퍼

## 2개의 Branch Unit과 24엔트리 버퍼                                                                                                        
## 1개의 간접 Branch Unit                                                                            

## 2개의 Shifter Pipe 와 24엔트리 버퍼

## 1개의 Mul Pipe와 32엔트리 버퍼

## 1개의 Div Pipe와 16엔트리 버퍼

## 1개의 정수 Div

## 2개의 load/store pipe 와 28엔트리 버퍼

## 3개의 fp/vector pipe 와 48엔트리 버퍼

## 2개의 fp/vector 산술,곱하기 pipe 와 32엔트리 버퍼

## 1개의 fp/vector div,sqrt pipe 와 16엔트리 버퍼

## 1개의 fp 비교기 pipe 와 16엔트리 버퍼

댓글 없음:

댓글 쓰기