15 × 32비트 정수 레지스터. R14(링크 레지스터)를 포함하지만 R15(PC 기준. 구형에 26비트 어드레싱 사용)를 포함하지는 않음
ARM 아키텍처(ARM architecture, 과거 명칭: Advanced RISC Machine, 최초 명칭: Acorn RISC Machine)는 임베디드 기기에 많이 사용되는 RISC 프로세서이다. 1983년 컴퓨터과학자소피 윌슨(Sophie Wilson)(이 당시에는 이름이 로저 윌슨(Roger Wilson)이었으나 1994년 성전환 수술을 받아 개명했다.)과 스티브 퍼버(Steve Furber)를 주축으로 개발을 진행했다. 저전력을 사용하도록 설계하여 ARM CPU는 모바일 시장 및 싱글 보드 컴퓨터로 불리는 개인용 컴퓨터에서 뚜렷한 강세를 보인다.
1990년 11월에 애플과 VLSI의 조인트 벤처 형식으로 ARM(Advanced RISC Machines Ltd.)가 생김.
계보
ARMv4 아키텍처는 32비트 주소 영역에서 32비트 ISA(Instruction Set Architecture) 동작이 가능하다. 16비트 Thumb 명령어 셋을 탑재한 ARMv4T 아키텍처는 32비트 코드의 이점을 그대로 살리고, 메모리 공간을 35% 이상 절약할 수 있도록 해주었다.
ARMv5TE(1999년) 아키텍처는 개선된 thumb 아키텍처와 ‘Enhanced’ DSP 명령어 셋을 ARM ISA에 추가하였다. 이러한 Thumb의 변화에는 소수의 명령어 추가와 함께 ARM/Thumb 인터워킹(interworking)의 개선, 컴파일 성능의 대폭적인 향상, ARM/Thumb 루틴의 혼합 사용, 코드 크기와 성능에 대한 균형도 포함되어 있다. 또한 ‘Enhanced’ DSP 명령어들은 복잡한 수치연산에서 70%의 성능 개선을 보여주었다.
ARMv5TEJ(2000년) 아키텍처에는 Jazelle(자바 하드웨어 가속기) 확장명령어가 추가되었으며, 이로써 자바 가속 기술을 탑재한 아키텍처가 탄생하게 된다. ARMv5TJE 아키텍처는 Jazelle의 탄생함에 따라 가속 기술을 사용하지 않은 JVM(Java Virtual Machine)보다 속도 면에서 8배가 향상되었으며, 소비전력의 측면에서도 80%를 줄일 수 있게 된다.
ARMv6(2001년) 아키텍처가 발표되면서 여러 방면에서 기능 개선이 이루어졌다. 특히 메모리 시스템, 예외 처리의 개선, 멀티프로세싱 환경을 위한 더 많은 지원 등이 이에 해당한다. 이것 이외도 ARMv6 아키텍처에는 SIMD(Single Instruction Multiple Data) 소프트웨어 실행을 지원하는 미디어 명령이 포함되어 있으며, SIMD 명령들은 오디오 및 비디오 코덱을 포함하는 응용 프로그램들의 사용 확대를 위해 최적화되었다.
ARM1136J(2002년) (F)-8 코어. 스트롱암 CPU는 DEC(Digital Equipment Corporation)에 의해서 ARM과 함께 개발되었다. 이것이 최초의 modified-Harvard 아키텍처(명령어 캐시와 데이터 캐시를 분리해서 사용)를 채용한 제품이며, modified-Harvard 아키텍처로 ARM의 쓰기 처리 능력의 고속화가 가능하게 되었다. 스트롱암의 주요 특징 중에는 5단 파이프라인의 채용, 64비트 곱셈 및 일부 곱셈 기능을 제외한 모든 일반 명령어들의 싱글 사이클 처리 등이 포함되어 있다.
트러스트존 테크놀로지(TrustZone Technology)라는 이름으로 마케팅된 보안 확장 기능은 ARMv6KZ 이상의 애플리케이션 프로파일 아키텍처에 포함된다. 하드웨어 기반 접근 제어의 지원을 받는 2개의 가상 프로세서를 제공함으로써 SoC의 다른 전용 보안 코어를 추가하지 않으므로 비용을 낮출 수 있다.
ARMv8-M용 트러스트존 (Cortex-M 프로파일)
TrustZone for ARMv8-M Technology로 마케팅되는 보안 확장 기능은 ARMv8-M 아키텍처에 도입되었다.
loop:CMPRi,Rj; set condition "NE" if (i != j),; "GT" if (i > j),; or "LT" if (i < j)SUBGTRi,Ri,Rj; if "GT" (Greater Than), i = i-j;SUBLTRj,Rj,Ri; if "LT" (Less Than), j = j-i;BNEloop; if "NE" (Not Equal), then loop
크로스 컴파일
현재 이클립스나 WAF 등을 통해서 운영체제와 상관없이 일정수준을 만족하는 기준에서 작성된 소스코드를 원하는 운영체제에 맞는 실행파일로 빌드를 지원하고있다. 한편 ARM社 역시 이러한 오픈소스와 작동하는 GNU Compiler (GCC) 툴체인 프로그램을 제공하고있다.[4][5]
이에 따라 특히 기존 인텔이나 AMDx86계열의 리눅스 프로그램들은 자유로이 싱글보드 컴퓨터에 포팅되어 사용할 수 있는 생태계가 형성되었다.