스마트폰이나 태블릿 PC에 관심을 기울여 보신 적이 있다면 내부 하드웨어에 대해 언급하는 스펙 부분에 "ARM"이란 용어가 사용된걸 본적이 있으실 겁니다. 이 "ARM" 프로세서는 인텔(Intel) x86 CPU를 사용하는 기존의 노트북이나 컴퓨터와 구분하고 차별화 하기 위한 핵심으로서 자주 여기 저기서 이야기를 꺼내기도 합니다.

 

그런데 이 ARM이란 것이 정확히 무엇일까요? 프로세서, CPU의 구조일까요? 하드웨어의 브랜드 이름일까요? 혹은 다른 무언가 일까요? ARM이 정확히 무엇을 의미하는지는 설명하는 곳이 거의 없는것 같습니다. 이번 글에서는 혼란스러운 부분을 정리하고 기본에서부터 하나씩 살펴보도록 하겠습니다.

 

 

ARM의 핵심은 RISC

 

 

ARM은 Advanced RISC Machine (진보된 RISC 기기)의 약자입니다. 이름 중간을 보시면 또 다른 약자가 등장하는데 (예, 그렇습니다. 약자가 중첩된 셈이지요) 이 약자는 Reduced Instruction Set Computing (줄여진 명령 집합 컴퓨팅)을 의미합니다.

 

RISC는 넓게 보자면 프로세서를 위한 일종의 설계 철학이라고 할 수 있습니다. 이 설계 철학은 상대적으로 단순한 명령 집합을 가진 프로세서가 복잡한 명령 집합을 가진 프로세서 보다 훨씬 더 효율적일 것이라는 믿음으로부터 생겨났습니다. 용어 자체는 1980년대의 연구 프로젝트인 "Berkeley RISC (버클리 RISC)"에서 사용되기 시작했습니다. 이 버클리 RISC 프로젝트는 앞서 언급했던 설계 접근 방식이 어떤 가능성을 지지고 있는지 조사했고 실제로 이 방식에 기반한 프로세서들을 만들어 내기도 했습니다.

 

모든 ARM 프로세서는 이 RISC 설계를 염두에 두고 만들어 졌습니다. 하지만 RISC 설계는 고려 사항일뿐 그렇게 많은 것을 의미하고 있는 것은 아닙니다. RISC 자체는 설계에 대한 접근 방식일뿐 기술적 표준이나 혹은 프로세서의 구조를 의미하는 것은 아니기 때문입니다. 그렇지만 여전히 RISC의 기본을 이해하는 것은 ARM을 이해하기 위한 기본 틀을 형성해 줍니다.

 

 

ARM의 기본

 

 
ARM 프로세서는 자기 자신을 언급 할때 아키텍처, 즉 구조 라는 말을 자주 사용하기 때문에 종종 인텔사의 프로세서와 비교했을때 오해를 받기도 합니다. 인텔사는 모든 새로운 칩 설계에 고유 코드를 부여하고 각각을 새로운 아키텍처라고 이야기합니다. 모든 칩이 같은 명령 집합(x86)을 사용해서 유사점이 상당히 많은 경우에도 말이지요. 반면에 ARM은 자신의 설계를 끊김이 없는, 연관성이 있는 하나의 가족으로 취급합니다. 새로운 변경 사항이 생겨도 ARM 프로세서 아키텍처의 한 부분일뿐 전혀 새로운 프로세서로 여겨지거나 완전히 다른 것으로 분류하지 않습니다. 단지 새로운 버전 번호를 부여받을 뿐입니다. 


소비자와 가장 관련이 있는 특성은 칩의 물리적 설계인 마이크로 아키텍처가 아닌 논리적 구조인 명령 집합입니다. 명령 집합은 실행될 소프트웨어, 프로그램에게 프로세서가 제공하는 기본 능력과 기능, 명령의 집합입니다. 이 명령 집합이 어떤 산술/수치 계산이 사용될 수 있는지와 캐시가 어떻게 할당되어야 할지를, 그리고 명령이 어떤 순서로 실행되어야 할지를 결정합니다. 프로세서, CPU의 어느 한 명령 집합을 위해 설계된 소프트웨어는 다시 수정되거나 갱신되지 않는 이상 다른 명령 집합에서는 실행될 수가 없습니다.

 

사실 ARM은 칩의 기본 설계 구조만 만들 뿐 실제 기능 추가나 최적화와 같은 나머지 부분은 개별 반도체 제조사의 영역으로 맡겨두고 있습니다. 그래서 물리적 설계는 같더라도 실제 실행 가능한 명령 집합(기능)이 달라 서로 다른 칩이 되는 경우가 있습니다. (물론, 둘 다 기본 물리 구조가 같은 ARM 칩이지요) 그래서 소비자에게 의미 있는 부분은 마이크로 아키텍처가 아닌 명령 집합이라는 것을 앞서 이야기 했습니다. 그리고 이런 ARM의 특성 덕분에 용도에 따라 다양한 제품군을 만날 수 있습니다.


아키텍처가 논리적인 명령 집합을 물리적으로 표현한 것이기 때문에 마이크로 아키텍처와 명령 집합은 서로 떨어뜨려 놓고 생각할 수가 없습니다. 즉, 실행할 수 있는 논리적 기능과 명령이 많고 복잡해 질수록 실제 물리적인 칩 구조(아키텍처)도 크고 복잡해 집니다. 그런데 ARM은 글 초반부에서 언급했던 것처럼 '단순한 명령 집합을 가진 프로세서가 복잡한것 보다 더 효율적'이라고 정의하는 RISC 설계를 기반으로 하고 있기 때문에 명령 집합과 구조 자체가 단순합니다. 이것이 바로 ARM 기반 프로세서가 더 작고, 효율적이며 상대적으로 느린 이유입니다.

 

단순한 명령 집합은 적은 수의 트랜지스터만 필요로 하기 때문에 간결한 설계와 더 작은 크기를 가능하게 합니다. 반도체의 기본 부품인 트랜지스터는 전원을 소비하며 다이(die)의 크기를 증가시키기 때문에 (다이 크기의 증가는 생산 비용의 증대로 이어짐) 스마트폰이나 태블릿 PC를 위한 프로세서를 선택할 때는 가능한한 적은 수의 트랜지스터를 가진 것이 이상적입니다. 그래서 명령 집합의 수가 적어 트랜지스터의 수가 적고, 덕분에 크기가 작고 전원 소모가 낮은 ARM CPU가 스마트폰, 태블릿 PC, 모바일 기기에 많이 사용되고 있습니다.

 

 

ARM의 사업 방식은 다르다

 

 

모든 ARM 프로세서들을 하나로 이야기 하기는 어려운데 그 이유는 너무 다양한 종류가 존재하고 있고 또 각각이 가진 성능이 상이하기 때문입니다. 직관적이지가 않지요. 어떻게 해서 애플사는 같은 아키텍처, 구조를 사용하고도 다른 경쟁자들 보다 더 빠른 ARM 프로세서들을 가질 수 있었을까요?

 

이 모든 일은 ARM 프로세서를 책임지고 있는 회사인 ARM 홀딩스(ARM Holdings)가 진행하고 있는 사업 방식 때문에 발생합니다. ARM 홀딩스 사는 설계만 관여합니다. 그들은 명령 집합을 관리하고 코어 아키텍처(핵심 구조)의 새 버전을 설계하며 이 설계의 라이센스를 다른 회사에 판매합니다. 이 라이센스에 값을 지불한 회사들은 자신들의 필요에 따라 기능을 향상하거나 혹은 적합한 다른 하드웨어와 조합할 수 있게 됩니다.

 

이러한 사실들은 ARM의 코어 아키텍처(핵심 구조)가 프로세서일 뿐이라는 것을 이해하는데 도움이 됩니다. ARM은 무선 연결 기기에 대해서는 관여하지 않습니다. ARM은 그래픽 하드웨어에 대해서도 다루지 않습니다. 또한 ARM은 USB나 혹은 다른 형태의 유선 연결 기기나 하드웨어에 대해서도 다루지 않습니다. 앞서 언급한 모든것들은 프로세서 아키텍처를 조합하는 하드웨어 제조업자가 책임 지게 됩니다.

 

이러한 이유 때문에 시장에 정말로 다양한 종류의 ARM 프로세서가 생겨 나게 되었으며 서로 다르게 동작하게 되었습니다. 애플사의 경우 사내에 자신들만의 ARM 프로세서를 개발하기 위한 전문 기술팀이 있을 정도입니다. 퀄컴(Qualcomm)이나 텍사스 인스트루먼트(Texas Instruments)와 같은 다른 회사들의 경우 중간상으로서 활동하고 있습니다. 이 회사들은 ARM 아키텍처를 사와서 다양한 하드웨어와 조합한 다음 스마트폰이나 태블릿을 위한 SoC (System on a Chip, 필요한 모든 기능과 시스템을 통째로 칩 하나에 담은것)의 형태로 재판매 하고 있습니다.

 

 

ARM이 소비자에게 의미하는 것은?

 

 

소비자에게 있어 ARM은 '생태계'의 하나로 생각될 수 있습니다. ARM을 위해 설계된 프로그램은 오직 ARM 프로세서가 탑재된 기기에서만 실행할 수 있습니다. 반대로, x86 CPU 프로세서를 위해 개발된 프로그램 또한 ARM 기반 기기에서 실행할 수 없습니다. 예를 들면, Windows RT의 경우 x86 프로세서에서 구동되던 기존 윈도우용 프로그램을 사용할 수 없습니다. 서로가 각각 다른 생태계를 형성하고 있는 셈입니다. ARM에서 실행되던 프로그램을 x86 프로세서에서 실행되도록 하거나 혹은 그 반대로 x86 > ARM 실행이 가능하게 하려면 프로그램에 수정이 가해져야만 합니다.

 

그런데 하나의 ARM 기기에서 동작하는 운영체제(Operating Systems)는 다른 ARM 기반 기기에서도 잘 동작합니다. 이 덕분에 수 많은 버전의 안드로이드가 탄생하게 되었고 또한 HP나 블랙베리(BlackBerry)의 태블릿에도 안드로이드가 탑재될 수 있는 가능성이 생기게 됩니다. 하지만 애플사가 이 생태계를 조금 흐트러뜨려 놨습니다. iOS의 소스 코드가 공개되어 있지 않기 때문입니다. 소스 코드 공개 없이는 iOS를 다른 ARM 기기로 포팅(이전) 하는것 자체가 거의 불가능 합니다.

 

ARM은 x86에 비해 상대적으로 더 낮은 전력 소모와 더 낮은 성능을 의미하기도 합니다. 하지만 두 아키텍처 모두 시간이 지남에 따라 변화하고 있기 때문에 더 이상은 반드시 그렇다고 이야기 하기는 어려울 것 같습니다. 인텔(Intel) 사는 극도로 전력 소모가 낮은 버전의 프로세서를 만들기 위해 최선을 다하고 있습니다. 그리고 ARM 홀딩스 또한 성능 향상을 위한 설계 개선을 위해 노력하고 있는 중입니다.

 

 

ARM이 PC에 사용될 수 있을까?

 

 

ARM 프로세서 기반의 전통적인 기기들을 PC처럼 동작하게 해서 판매하려는 시도가 몇 번 있었습니다. 모토롤라(Motorola)사의 경우 아트릭스(Atrix) 스마트폰을 위한 키보드 독을 판매하며 노트븍(Laptop)을 대체할 수 있다고 광고했습니다. 아수스(ASUS)사는 키보드 독이 포함된 안드로이드 태블릿 제품군을 판매하기도 했습니다. 그리고 삼성(Samsung)은 해외에서 ARM을 기반으로 동작하는 구글 크롬북(Chromebook)을 판매하고 있습니다.

 

이러한 시도들은 ARM을 둘러싼 새로운 인기와 태풍의 가능성을 예견하게 하지만, 그 태풍의 경로와 강도를 예측하는 것은 아직 불가능 한것 같습니다. 현재의 ARM 아키텍처들은 인텔사의 가장 느린 프로세서들 보다도 매우 크게 성능이 뒤쳐지고 있습니다. 엔비디아(Nvidia)사가 ARM의 아키텍처를 사용해서 인텔사와 경쟁할 새 프로세서를 개발하고 있다고 말하고 있지만 어떻게 해서 그게 가능할지와 언제 최종 제품이 출시될지는 확실하지가 않습니다.

 

지금 현재로선 ARM이 가지고 있는 잠재적인 위협은 PC가 차지 하고 있는 영역 수평선 위에 어두운 구름으로 남아 있습니다. 위협 하고 있는것처럼 보이지만, 실제 위협은 아직 분명하지 않습니다. ARM 프로세서는 무시 무시한 태풍일까요 아니면 단순히 결국에는 흩어질 그늘진 구름 몇 개에 불과할까요? 이제 앞으로 어떤 일이 벌어질지 지켜 봐야 겠지요.