[어셈러브 - 프로그래밍의 철학이 있는 곳] 아키텍쳐의 특성과 어셈블리 - ARM 아케텍쳐 - 정의와 변천사

89 views
Skip to first unread message

코람데오

unread,
Jan 4, 2014, 5:14:55 AM1/4/14
to asm...@googlegroups.com

2. ARM


1) 정의와 변천


초기엔 생소했지만 스마트폰이 많이 보급되면서 지금은 접하기 쉬운 아키텍쳐명이 ARM일 것이다.
ARM 아키텍쳐는 ARM이라는 회사가 직접 CPU를 만들어 파는 것이 아닌 IP(Intellecual property)를 파는 업체다.
즉 CPU의 소스코드를 파는 업체라는 뜻이다.
CPU의 소스코드라 하면 일부 분들은 당황 할 수 있을 것이다.
“CPU가 하드웨어인데 소프트웨어마냥 소스코드라니.. 회로도 말인가?”
초기 반도체를 설계할 때에는 로직도를 그려 제작하였다.
하지만 반도체 기술의 발전으로 로직 자체를 언어로서 표현하여 로직간의 관계를 프로그래밍 하여 테스트할 수 있는 프로그래밍 가능한 칩(CPLD,FPGA)에 넣어 시험해 볼 수 있게 되었다.
일부 제품은 반도체를 직접 ASIC으로 만들지 않고 CPLD나 FPGA 상태로 양산하기도 할 정도로 가격과 성능이 좋아 졌다.
이런 반도체 개발 방식의 변경은 각종 하드웨어 기능을 소스로서 거래를 가능하게 했고, 이렇게 CPU소스부분만 판매하는 업체 중 하나가 바로 ARM 인 것이다.
소프트웨어를 제작하는 사람이 사용할 라이브러리를 구매하여 사용하듯, ARM을 가지고 SOC(System on chip)을 만들고자 하는 사람은 구매하고자 하는 ARM의 버전을 결정하고 주변기기로 사용할 IP들도 같이 구매하여 서로 연결되고 관리하는 부분의 코드를 추가하여 완성하게 된다.
물론 코드만 완성하고 FPGA로 디버깅을 한다고 해서 끝나는 것은 아니다.
FPGA 와 ASIC간의 특성 차이도 있기 때문에 완성된 코드를 디자인 하우스에 맡겨 최적화 및 특성 조정을 한 후 반도체 제작 공정에 들어가게 된다.

ARM과 x86의 대표적인 차이라면 RISC와 CISC다.
RISC는 대부분의 연산을 레지스터 상에서 하기 때문에 한 클럭에 수행되는 명령이 적다.
대신 명령 하나하나가 단순해서 구현하는 시스템의 속도를 높이기가 수월하다.
하지만 intel이 x86의 성능 향상을 위하여 많은 투자를 하면서 이 경계가 모호해졌다.
펜티엄 이후부턴 내부적으로 CISC명령을 RISC수준의 명령으로 풀어 적절한 파이프라인에 할당하는 슈퍼스케일러스가 적용되었기 때문이다.
다른 연재에서도 다루겠지만 이런 구조는 x86을 보다 빠르게 만드는 장점이 되기도 했지만, x86와 같은 CISC특유의 강점인 쉬운 원자화구현을 더이상 하기 어렵게 만드는 원인이 되기도 하였다.
사실 요즘처럼 멀티코어가 기본으로 쓰이게 된 시절에는 기존 x86의 원자화는 의미가 없을태니 강점이 없어졌다고 할 수 없다.

ARM은 초기 저전력 고효율을 목표로 시작한 CPU다보니 MMU조차 없었다.
임베디드 환경에서는 가상메모리로 PC처럼 하드디스크로 메모리 스와핑을 할 일이 없을 것이라는 생각이었던 것 같다.
하지만 리눅스가 임베디드로서 본격적으로 사용되기 시작하고, 저가 CPU를 여러개 쓰는 것 보다 고성능 CPU하나에 멀티테스킹을 사용하는 것이 효율적으로 생각되면서 ARM은 MMU를 추가하게 된것 같다.
공정이 점점 낮아지면서 저 전력으로 보다 많은 로직을 내장 할 수 있게 되자 JAVA 가속기능과 MAC연산기능,SIMD명령등을 추가하게 된다.
여기서 잠깐 SIMD에 대해 언급하고자 한다.
간혹 SIMD 명령이 DSP와 비슷할 것이다라고 예상하는 분들도 계실 것이지만, 널리 쓰이는 DSP들은 SIMD 아키텍쳐가 아닌 병렬 명령실행이나 입력가 출력 메모리 영역의 분리를 통한 순차 연산등을 사용한다.
초기에는 DSP는 멀티미디어와 같은 배열 연산이나 부동소숫점 연산을 빠르게 할 수 있다는 장점을 가지고 있었지만, 범용 CPU들이 슈퍼스케일러스와 SIMD명령 내장으로 오히려 범용 CPU가 DSP보다 빠른 경우도 많다.

--
작성자: 코람데오 , 날짜: 1/04/2014 07:14:00 오후 , 이 글의 주소: 어셈러브 - 프로그래밍의 철학이 있는 곳
Reply all
Reply to author
Forward
0 new messages