벤치리뷰·뉴스·정보/아키텍처·정보분석

[분석정보] Apple iPhone 5s의 A7로 모바일 ARM 64bit 일번탑승

tware 2013. 9. 13. 21:00

 

iPhone의 역사에서 가장 큰 변화가 될 iPhone 5s

 

Apple의 "iPhone 5s"는 iPhone 역사의 이정표가 된다. CPU의 명령어 세트 아키텍처가 기존의 ARMv7에서 차세대 ARMv8 (ARM Version 8)으로 바뀌어, iOS가 32-bit 기반에서 64-bit 기반으로 달라지기 때문이다. 하드웨어적으로 보면 사상 최대의 점프이며, OS의 바이너리도 완전히 달라진다.

 

 

ARM 명령어 세트 아키텍처의 변천

 

 

Apple의 프로세서 Ax 시리즈와 iPad / iPhone

 


 Apple은 iPhone 5s의 중심 SoC "A7"에 의해 모바일 부문에서는 64-bit 일번탑승 하게 된다. ARM 아키텍처 CPU의 64-bit 화는 아직 초기 단계로 서버 전용 CPU에서 일부 출하되고 있는 단계. ARM의 로드맵에서도 64 bit 프로세서는 올해 (2013년) 프로토 타입, 제품은 2014년으로 되어 있었다. 또한 ARM 자신도 64 bit 화는 우선 ARM 코어를 서버에 사용하고 싶다는 요청이 있었기 때문에 서둘렀다고 설명했다. 즉, 서버 초점이었던 것을, Apple은 스마트 폰에 넣었다.

 

2011년 "ARMv8"발표에서 2013년에 프로토 타입을 계획

 


 사실, 다른 모바일 AP (Application Processor) 공급 업체도 64-bit 화를 진행하고 있으며, 내년 (2014년)에 시장에 등장하기 시작한다. 하지만 지금은 iPhone 5s의 독주이다. Android OS 자체도 현 단계에서는 64-bit를 제품으로 낼 단계는 아니다.

 32-bit 였던 ARM 아키텍처는 2011년 가을에 발표한 "ARMv8" 명령어 세트에서 64-bit 명령어를 추가했다. 그리고 ISA (Instruction Set Architecture : 명령어 세트 아키텍처)의 발표에서 1년 만인 지난해 (2012년)에는 ARM 자신의 디자인 ARMv8 기반 CPU 마이크로 아키텍쳐 "Cortex-A57" 과 "Cortex-A53" 을 발표하고 있다. 그러나 ARM 아키텍처럴 라이센스를 받고 있는 업체는 Cortex-A53/57과 평행하게 각사 독자적인 ARMv8 구현 CPU 코어를 개발했다. Apple의 A7도 그 중 하나로 보인다.

 


Apple이 iPhone 5s를 64-bit화 하는 이유


 왜 Apple은 iPhone을 64-bit화 하려고 하는 것인가? 보통의 경우, CPU의 ISA 32-bit에서 64-bit로 이행시키는 효용은 성능 향상 보다는 메모리 주소 공간의 확장이 더 크다. 64-bit 정수 연산을 지원하지만 보통의 응용 프로그램에서 성능은 그다지 향상하지 않는다. 이에 비해 ,32-bit의 메모리 주소 공간 4GB의 한계를 넘어, 4GB 보다 큰 메모리를 주소지정 이점은 크다.

 그러나 iPhone 5s의 경우라면? ARM 기반 모바일 애플리케이션 프로세서의 경우는 사정이 다르다. 그것은 ARM의 현재의 복잡하고 오래된 ISA가 다양한 제약이 되기 때문이다. 그에 따라 ARM의 경우 64-bit 화의 큰 효용의 하나는 성능 향상의 헤드 룸을 늘리고, 현대적인 소프트웨어 구조를 도입 쉽게 하는 것에 있다.

 그러나 중기적으로 보면 태블릿에서 메모리 용량이 4GB에 도달하기 시작하기 때문에 64-bit 화에 의한 메모리 주소 공간의 확장은 의미를 가지기 시작. LPDDR 계 DRAM 칩 자체의 대용량화도 DDR을 웃도는 페이스로 진행되고 있기 때문에 하드웨어 구현상으로도 메모리의 대용량화가 용이하게 된다. 또 ARM은 가상 머신의 하드웨어 지원도 구현하고 있기 때문에 가상 머신을 위한 메모리 공간이라는 면에서도 주소 공간의 확장은 의미가있다.

 더욱 먼 지점을 보면 새로운 비 휘발성 메모리 시대에 대비한 메모리 공간의 확장이라는 의미도 있다. 현재 DRAM의 워크 메모리는 비 휘발성이 되며 스토리지와 워크 메모리가 이어지면 모바일 장치에 탑재된 수십 GB 또는 수백 GB의 메모리를 주소지정 할 필요가 생긴다. 이 경우 64 bit 아키텍처가 필수가 된다.

 


명령어 세트의 리셋으로 성능 향상을 목표


 ARM에게 새로운 ARMv8의 의미는 ARM ISA (Instruction Set Architecture : 명령어 세트 아키텍처)의 리셋에 있다. ARM의 기존의 ARM ISA는 원래 Acorn의 교육용 컴퓨터 용으로 Acorn 전용 OS을 위해 설계됐다. 따라서 일반적인 RISC (Reduced Instruction Set Computer) 계 CPU의 ISA보다 훨씬 복잡하고 특수하다. ARM은 과거에 새로운 명령 세트 "Thumb2"계 등을 더하는 것으로, ISA 리셋을 도모 했지만, 잘 침투되지 않았다. 그래서 ARM은 64-bit 화에 있어서는 완전히 ISA를 현대적인 스타일로 일신했다.

 즉, ARMv8은 단순한 명령 64-bit 화가 아닌, 명령 세트의 쇄신으로,그로 인해 하드웨어도 크게 영향을 받는다. 구체적으로는 ARMv8 64-bit 스테이트 "AArch64"에서 명령어 형식과 레지스터 파일 구성 예외 처리 모델 등을 싹 바꾼다. ARM 명령어 세트의 특수성 이었던 명령의 조건부 실행과 복합 작업 명령, 복잡한 예외 처리 모드, 뱅크 레지스터 같은 부분을 변경한다. 말하자면, ARM의 ISA를 보통의 RISC 형 ISA로 바꾸려 한다.

 특히 성능에 미치는 영향이 큰 것은 레지스터 파일의 확장이다. ARM 아키텍처는 지금까지 범용 레지스터는 r0-r15의 16개였다. Intel 아키텍처도 16개지만, 레지스터를 많이 쓰는 RISC 형 명령계의 ARM에서는 16개는 상당한 제약이다. 게다가 ARM에서는 프로그램 카운터까지 범용 레지스터 (r15)를 사용하기 때문에 실질적으로 사용할 수 있는 레지스터 수는 더 적다. 완전히 자유롭게 사용 가능한 것은 13개, 게다가 오리지널 ARM에서는 예외 모드가 많아 예외 모드에 따라 범용 레지스터를 뱅크 전환하는 사양으로 되어 있었다.

 

ARM 레지스터 세트


 그러나 ARMv8의 AArch64에서는 레지스터는 정수 범용 레지스터가 31개 + 제로 레지스터, 미디어 레지스터가 32 개 늘었다. 뱅킹도 없다. 쓸수 있는 레지스터 공간이 넓어 AArch64는 컴파일러 친근하고 지금까지 처럼 레지스터 개수 제한으로 인한 낭비 명령 등이 없어지고 그것만으로도 속도를 기대할 수 있다. 다만 64 bit를 통한 코드 사이즈의 증가로 인해 페치 효율의 저하 등의 마이너스는 있다. 하지만 AArch64 64-bit 명령도 명령 길이는 32-bit로 억제되어 있기에 코드가 2배가 되는 것은 아니다.

 

 

ARMv8의 AArch64 레지스터


 또한 ARMv8의 구현은 실제로는 CPU가 2계열의 명령 디코더를 갖게 된다고 볼 수 있다. 명령 디코더적으로 64 bit 명령 쪽이 더 간단하고 취급하기 쉬운 것으로 보인다. 64-bit에 최적화하면 64 bit 모드 쪽이 빨라지는 CPU 마이크로 아키텍처로 되는 것은 가능하다고 보인다.

 


32-bit와의 호환성을 취한 ARMv8 아키텍처


 ARMv8에서는 호환성을 위해 기존의 명령어 세트 호환 32-bit 스테이트 "AArch32"도 준비했다. AArch32에서 기존의 ARM 명령어 세트는 Thumb2 포함해 지원한다. 따라서 ARMv8의 CPU에서도 기존의 32-bit 응용 프로그램은 그대로 64-bit OS 위에서 실행할 수 있다.

 

32bit 스테이트 "AArch32"로 호환성을 유지

 

 64-bit 스테이트 AArch64와 32-bit의 AArch32 사이는 스테이트 전환식으로 64-bit와 32-bit를 공존시킨다. 양 스테이트 간의 이동은 예외 처리에서 예외 레벨로 보면 아래의 슬라이드 처럼 된다. 새로운 실행 모델에서는 ARM의 보안 솔루션인 "TrustZone" 소프트웨어 계층과 OS 사이에 Hypervisor가 배치된다.

 

ARMv8의 예외 모델

 

 

ARMv8-A 프로세서 모드

 


 이러한 확장에 의해 보안 가상 머신의 보안도 ARMv8에서 더 추진된다. 보안은 개인 정보를 가지고 다니는 모바일 기기의 경우는 매우 중요한 포인트다. 특히 iPhone 5s에서는 생체 인증 데이터 처럼 외부에 누설되면 치명적인 데이터를 보유하기 때문에 보안 강화가 필요하다.

 ARMv8는 ,48-bit 주소 (256TB)까지의 가상 메모리 공간을 지원 (Cortex-A57의 경우 물리 메모리 주소 공간은 44-bit) 가능하다. 대용량 메모리가 필수적인 서버에서 ARMv8가 필한 가장 큰 이유는 여기에 있다. 현재는 iPhone도 iPad도 최대 메모리는 1GB이므로, 현세대 탑재량이 증가해도 2GB. 32-bit의 제약인 4GB 공간이 문제가 되려면 아직 1 ~ 2 세대 빠르다.

 그러나 모바일용 LPDDR 계 메모리는 모바일 장치의 메모리 탑재량 수요가 급증하며, 대용량화에 박차를 가하고 있다. 4G-bit 제품으로 이행이 진행되고 더욱 8G-bit 제품으로 이행하면 태블릿에 탑재 할 수 있는 4개의 DRAM 칩으로 4GB에 도달한다. 따라서 멀지 않은 시점에서 iOS 디바이스에 탑재되는 물리 메모리도 4GB의 울타리를 넘어설 것이다. 메모리 공간의 확장은 가상 컴퓨터의 메모리 공간의 매핑도 용이하게 한다. 그렇지만 실제로는 Cortex-A15 에서 "Large Physical Address Extensions (LPAE)" 로도 40-bit까지의 실제 주소를 지원한다.

 


미래의 비 휘발성 메모리 시대의 포석도 된다


 그리 멀지 않은 시점에서 DRAM의 메모리 셀의 미세화는 한계에 이르고, 이어서 3D화 하는 NAND도 용량 증대의 한계에 이른다. 보다 정확하게는 비용을 올리지 않고 용량을 증가 시키는 것이 어려워진다. 따라서 차세대 비 휘발성 메모리가 DRAM과 NAND를 대체하는 것으로 보여진다.

 그리 될 때, 고용량이며 고속의 새로운 비휘발성 메모리 기술에 따라서 프로그램을 실행하기 위한 워크 메모리, 코드나 데이터의 저장 메모리의 양쪽을 단일 메모리로 겸하게 될 가능성이 생긴다. 지금의 iPhone과 iPad는 메인 메모리의 DRAM과 스토리지의 NAND로 나뉘어 있지만, 향후 모바일 시스템에서는 양자가 통합되어 이상한건 아니다.

 메모리와 스토리지의 구별이 없어지는 경우 프로세서 측은 모든 탑재 메모리에 주소지정 할 필요가 생긴다. 예를 들면, 수백 GB 또는 몇 TB 같은 메모리에 선형적으로 접근하는 것이 바람직해, 물리적 주소 공간의 확장이 필수적이다. 그 시점에서, PC 형 시스템이 아직 워크 메모리와 스토리지를 분리한다면 모바일 시스템 쪽이 더 넓은 물리적 메모리의 주소 능력이 필요할 것이다. 또 이것은 모바일 기기의 오래된 실행 스타일이며, NOR 플래시 시대의 "XIP (eXecute In Place)"모델로의 회귀이기도 하다.

 

유니버설 메모리의 가능성


 이렇게 보면, Apple이 64-bit 화 하는 이유도 보인다. Apple이 CPU 코어를 자체 제작한 이유도 64 bit 화에 있어서는 커스텀 CPU를 재빨리 갖고싶다 생각하면 이치에 맞는다.

 

 

2013년 9월 18일 기사 입니다.

 

 

[분석정보] ARM 코어의 다양한 라이센스 모델과 CPU코어의 설계 흐름

 

 

[분석정보] ARM버전 Windows로 시작된 x86 대 ARM의 CPU전쟁

 

 

[분석정보] 총 출전하는 스마트폰용 64bit SoC

 

 

[아키텍처] 인텔(Intel) 모바일 반격의 열쇠가 되는 ​​저전력 CPU 실버몬트(Silvermont)

 

 

[분석정보] ARM 서버는 어디에 사용될 것인가?

 

 

[분석정보] 메모리 기술 혁신이 컴퓨터 아키텍처의 변혁도 이끈다 Intel의 Rattner CTO가 보는 미래

 

 

[분석정보] 엘피다 메모리의 한계는 DRAM 종언의 상징?

 

 

[분석정보] x86을 고속화하는 조커기술 명령변환 구조

 

 

[분석정보] 5W 이하의 저전력 프로세서의 개발로 향하는 Intel