왜 ARM 아키텍처인가

 

최근 스마트폰이나 태블릿 전용 프로세서의 대부분은 ARM 기반입니다. 태블릿은 그게 덜한 편이지만 스마트폰의 경우 ARM 이외의 아키텍처를 채택한 경우는 매우 적습니다. 이렇게 된 이유는 역사를 돌이켜 봐야 알 수 있습니다. 단적으로 말하면 노키아의 심비안 OS가 ARM 기반이라서 그렇다고 말할 수 있지만, 좀 더 제대로 설명하고자 합니다.

 

스마트폰의 초창기라고는 해도 그리 오래 된 시절은 아니고, 1990년 대 중반의 이야기가 되는데, 당시 핸드폰은 아래 그림같은 구성을 취했습니다. 아날로그 방식이었던 시절이라 가능했던 것입니다. UI용 프로세서는 아주 간단한 액정 표시와 키패드, 전화 번호부를 처리할 수 있으면 됐습니다. 32비트 프로세서가 아니어도 충분히 커버할 수 있어, 16비트 프로세서를 썼던 제품도 있습니다.

 

01.png

 

초기 핸드폰의 구성

  

그런데 이것이 디지털 통신으로 바뀌면서 모뎀에 통신 처리를 담당하는 프로세서가 필요해 졌습니다. 그래서 모뎀과 조합한 베이스밴드 프로세서라는 게 등장했습니다. 이것은 ARM9 급의 CPU 코어에 경우에 따라서 DSP 등을 조합해 구현되는 것이 많았습니다. 이 경우 화면의 표시나 키패드 제어는 베이스밴드 프로세서가 담당하게 됩니다.

 

02.png

 

디지털 통신으로 바뀐 핸드폰의 구성

 

그러나 핸드폰에서 점점 애플리케이션 성능을 필요로 하면서 이것만으로 부족하게 됐습니다. 또 핸드폰의 카메라 기능이 늘어난 것도 큰 영향이 있습니다. 결국 이런 기능의 처리를 베이스밴드 프로세서에서 할 수 없을 수준이 되며, 그러다보니 애플리케이션 프로세서라는 것을 쓰게 됩니다.

 

03.png

 

새로운 성능을 필요로 하면서 애플리케이션 프로세서가 등장

 

원래 이 애플리케이션 프로세서는 다양한 제조사가 만들었습니다. 일본만 해도 히타치(지금은 르네사스 일렉트로닉스)의 SH 시리즈와 마쓰시타 전기 산업(지금은 파나소닉)의 UniPhier가 있었습니다. 외국에는 MIPS 기반의 프로세서를 탑재한 경우도 있습니다.

 

하지만 결국 이들은 모두 ARM으로 합쳐지게 됩니다. 가장 큰 이유는 이러한 핸드폰의 OS가 개발 공정 수 등의 이유로 심비안 OS로 집약됐기 때문입니다. 노키아는 자사의 핸드폰 뿐만 아니라 다른 회사의 핸드폰에도 심비안 OS를 적극적으로 OEM 공급했는데, 이를 이용하기 위해 필연적으로 CPU 아키텍처가 ARM으로 압축 된 것입니다.

 

일단 시장 점유율이 줄어든 아키텍처는 점점 쇠퇴해 갔습니다. 그리고 시장 점유율을 확보하는 데 성공한 아키텍처가 점점 시장을 독점화하려는 움직임은 핸드폰에서도 그대로 적용됐습니다. 이 결과 아이폰 1세대가 나오기 진전인 2006년에 심비안 OS(즉 ARM)의 시장 점유율은 압도적이었습니다. 2006년의 핸드폰 OS는 북미 이외 시장에서 심비안이 60% 이상을 차지했고, 동남아에선 90%를 넘어섰습니다. 일본과 중국도 60%가 나왔다네요.

 

북미 시장을 제외한 이유는 이 지역이 윈도우 CE 기반 핸드폰에 이어 RIM(Research In Motion)의 블랙베리가 있었기 때문입니다. 그러나 블랙베리나 윈도우 CE 기반 제품의 대부분이 ARM 기반의 프로세서를 채용했기에, 핸드폰 시장에선 ARM으로 대동단결이 된 셈입니다.

 

그 후에 있었던 일은 뻔합니다. 애플이 아이폰을 출시하고 구글이 안드로이드를 내놓으면서 지금처럼 됐지만, 모두 ARM 기반 SoC가 대부분입니다. 그러다보니 SoC를 만드는 쪽이나 SoC를 사용해 스마트폰을 만드는 쪽 모두 어지간한 이유가 없으면 아키텍처를 바꿀 이유가 없습니다. 또 같은 아키텍처를 유지하는 게 개발 환경이나 소프트웨어 자산을 활용하기 쉽습니다. 물론 ARM도 트렌드에 맞춰 유연하게 아키텍처를 진화시켰기에 아키텍처를 굳이 바꿀만한 이유가 생기지 않았다는 것도 있습니다.

 

 

ARM 아키텍처의 변천

 

그럼 ARM 아키텍처가 얼마나 대단한 물건일까요? 솔직하게 말해서 명령 셋트가 아주 잘 빠진 건 아닙니다. ARM v8의 64비트 명령은 꽤 괜찮은 편이지만 32비트 명령은 아무리 좋게 말해도 단점이 많습니다.

 

이것은 그럴만한 이유가 있습니다. 원래 ARM v1(초대 ARM1 코어)는 명령 수나 성능을 늘리기 힘든 구조를 썼습니다. 그리고 그것이 그대로 지금까지 이어진 것입니다. 이것은 8080의 명령 체계를 그대로 이어받은 x86이나 x64와 같은 관점에서 봐야 할 것입니다. 명령 체계의 좋고 나쁨을 따지는 건 주관적인 판단이기도 하겠지만, 설계를 했을 때 명령 셋트에 어느 정도 여유를 둔 MIPS나 SPARC이 명령 체계 자체는 잘 만들었다고 보입니다.

 

물론 명령 체계가 잘 나왔다고 해서 성능이 무조건 높은 건 아닙니다. 지금처럼 명령을 내부 변환해서 다수의 RISC 명령으로 분해해 처리하는 방식이 주류가 되면, 명령어 셋트 자체는 성능에 큰 영향을 주지 않습니다. 또 오랬동안 휴대용 기기나 저전력 기기가 목표이기도 해서 절대적인 전력 사용량을 낮게 잡고, 그 한계를 넘지 않으면서 성능 개선을 위해 노력한 것이 ARM의 특징이고 그게 회로 기술에 살아 남아 있습니다. 다만 다른 아키텍처와 비교해서 큰 성능 차이가 나게 되자 트렌드에 맞춰 성능을 강화해 온 것이지요.

 

ARM 아키텍처와 대표적인 코어를 정리한 것이 아래 그림입니다. 현재 ARM v5 이전의 아키텍처는 거의 쓰이지 않고, ARM9을 포함해 최저 수준에 해당하는 것이 ARM v6입니다.

 

04.png

 

ARM 아키텍처와 대표적인 코어

 

이에 따라 개발된 ARM11은 초대 아이폰에 채택되었으며 최근이는 마이컴 보드인 라즈베리 파이에도 내장되는 등 여전히 널리 쓰이고 있습니다. 기본적인 명령 세트는 그 이전의 ARM v5에 비해 별로 변하지 않았지만 Thumb-2라 불리는 축소 명령 세트(명령 자체는 32비트지만 물리적인 명령 포맷을 축소해 크기를 32비트 미만으로 한 것)을 탑재한 것이 큰 변화입니다. 또 다중 처리 장치 대응 명령 등도 추가됐는데 이는 ARM과 NEC 일렉트로닉스(지금은 르네사스 일렉트로닉스)와 공동 개발을 통해 ARM11을 기반으로 한 멀티 프로세서 구성이 가능하게 된 것과 연관이 있습니다.

 

ARM v6와 ARM11 코어는 널리 쓰였지만 ARM v6는 물론 ARM11 코어는 기본적으로 싱글 이슈 인 오더(로드/스토어에 일부 아웃 오브 오더도 구현) 방식이며 동작 클럭도 몇 백 MHz 정도(초기 아이폰에 탑재된 것도 620MHz)라서 2004년이 되자 성능에서 뒤떨어지게 됩니다. 그래서 나온 것이 ARM v7A 아키텍처와 Cortex-A8 코어입니다.

 

이 세대에서 ARM은 아키텍처를 어플리케이션 전용(ARM v7A), 실시간 처리용(ARM v7R), 마이크로 컨트롤러용(ARM v7M)의 세가지로 나누었습니다. 그 머리 글자를 모으면 ARM이 된다는 게 재밌는데 ARM은 공식적으로는 그렇게 맞춘 건 아니라고 말하고 있지만요. 어쨌건 이 ARM v7A에서는 멀티 코어 대응에 더해 본격적인 OS(주로 리눅스)에 대응하는 프로세서 리소스의 가상화, NEON이라 불리는 SIMD 엔진 등도 추가했습니다. 또 자바 동작에 맞춰 Jazelle라는 자바의 바이트 코드를 원어로 실행할 수 있는 모드가 ARM v6에서 추가됐으며, ARM v7에서는 이를 확장한 Jazelle RCT(Runtime Compilation Target)이 새롭게 구현되었습니다.

 

이 ARM v7A를 최초로 지원한 것이 2005년의 Cortex-A8인데 인 오더 방식의 2명령 슈퍼 스칼라 구성입니다. 2007년에는 이것을 아웃 오브 오더 방식으로 바꾼 Cortex-A9도 출시됩니다. 또 처음부터 다중 처리 장치를 고려해 설계한 Cortex-A9 MP가 현재 널리 이용되고 있습니다. 2009년에는 반대로 성능이 더 낮아도 좋으니 저전력/소형 제품을 필요로 하는 반응에 맞춰 1명령 인오더 방식인 Cortex-A5도 출시됐습니다.

 

ARM v7은 사실 2010년에 조금 변경이 이루어졌습니다. 2010년 8월 Hot Chips 22에서 처음 발표된 것으로 하드웨어 수준의 가상화 지원과, LPAE(Large Physical Address Extension)라는 주소 확장이 더해진 것입니다. 이 LPAE는 x86에서 말하는 PAE와 거의 같은 것으로 각각의 프로세스의 가상 주소가 32비트(4GB)로 제한되어 있지만 시스템 전체로는 40비트(1TB)로 확장된 것입니다. 스펙의 차이는 이게 전부지만 ARM은 이 변화를 계기로 아키텍처를 구분하며, 이후로 나온 코어는 모두 이 새로운 ARM v7을 준수하고 있습니다.

 

그렇게 2010년에 발표된 것이 Cortex-A15와 Cortex-A7입니다. Cortex-A15는 Cortex-A9의 상위에 위치하며 3명령 슈퍼 스칼라/아웃 오브 오더 구성을 갖췄습니다. Cortex-A7은 Cortex-A5의 후계자가 되는 코어이지만, 여기서 가장 큰 차이는 big.LITTLE 구성을 쓸 수 있다는 것입니다. 2013년에는 Cortex-A7과 A15의 중간 정도 성능인 Cortex-A12도 발표됐습니다.

 

이와 별도로 ARM은 2012년에 ARM v8 아키텍처를 발표해 64비트로 이행을 실시하고, 이에 대응하는 Cortex-A57/Cortex-A53의 두 코어를 발표해 지금까지 이르고 있습니다.

 

 

ARM 기반 SoC의 동향

 

그럼 이를 사용하는 SoC 제조 업체의 상황은 어떻게 됐을까요? 아까 말한대로 1990년대는 노키아가 큰 점유율을 차지하고 있었는데, 여기에 과감하게 올라탄 것이 퀄컴입니다. CDMA 방식의 본산이지요.

 

뒤이어 2000년 전반기엔 다양한 반도체 업체들이 핸드폰/스마트폰 전용으로 SoC를 출시합니다. 예를 들면 TI(Texas Instruments)는 OMAP 패밀리를 내놨고, 프리스케일은 MXC라 불리는 SoC(정확히는 MCM:Multi Chip Module)을 개발하고 있었습니다. 인텔도 Manitoba라 불리는 XScale기반의 SoC를 개발하고 있었으며, 에릭슨은 핸드폰용 칩을 공급하다가 STMicroelectronics와 함께 ST-에릭슨이라는 합작 기업을 만들어 여기에 제품과 개발을 이관했습니다.

 

그러던 것이 시장의 흐름이 바뀌게 됩니다.

 

05.png

 

베이스밴드와 애플리케이션 프로세서의 통합

 

06.png

 

베이스밴드와 애플리케이션 프로세서 모델의 통합

 

우선 소형화와 저가형 모델이 나오면서 베이스밴드 프로세서와 애플리케이션 프로세서를 따로 넣을 경우 실장 면적이나 부품 원가의 관점에서 비경제적이라는 지적이 나오게 됩니다. 특히 모뎀의 규격이 2.5G에서 3G를 거쳐 3.5G(HSUPA/HSDPA), 3.9G/4G(LTE)으로 진화해 가면서 이를 제대로 지원하는 모뎀이나 베이스밴드 프로세서를 출시할 수 있는 제조사가 점점 줄었습니다. 

 

가장 대표적인 예가 TI인데, 이 회사의 OMAP 프로세서는 널리 쓰였지만 모뎀이 없어 다른 회사(퀄컴)에서 모뎀 칩을 구입해야 했습니다. 따라서 핸드폰 제조사는 OMAP 프로세서와 별도로 퀄컴의 모뎀을 구입해야 했는데, 이러면 가격은 물론이고 칩이 차지하는 면적도 늘어나게 됩니다. 반면 퀄컴의 스냅드래곤 시리즈를 사용하면 모뎀 내장형도 있고 외장형의 경우에도 가격은 저렴해집니다. 그럼 TI가 퀄컴과 경쟁하기 위해선 따로 사야하는 모뎀만큼 단가를 낮춰야 하는데, 이러면 수익이 떨어지게 됩니다.

 

이러한 수익성 악화 때문에 인텔과 프리스케일은 일찍 핸드폰 SoC의 개발을 포기했고 TI도 그 뒤를 따랐습니다. ST-에릭슨의 경우 모뎀의 개발 단가가 늘어나면서 2013년에 회사를 청산했습니다. 노키아에서 모뎀 부문만 인수하면서 브로드컴에 매각한 르네사스 일렉트로닉스 역시 마찬가지입니다.

 

하지만 퀄컴의 독주는 아닙니다. 이것을 기회로 삼은 회사도 있었거든요. 그건 2화에서.

 

소스: http://pc.watch.impress.co.jp/docs/column/1month-kouza/20131205_626007.html

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