ARM 아키텍처

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

ARM 아키텍처는 영국의 Acorn Computers가 1983년에 시작한 프로젝트로, 저전력, 고성능을 목표로 하는 RISC(축소 명령어 집합 컴퓨팅) 기반의 프로세서 아키텍처이다. 1985년 최초의 ARM1 칩 출시 이후, ARM2, ARM3 등을 거쳐 ARM6, ARM7, StrongARM, ARM9, ARM10, ARM11, Cortex 시리즈, ARMv8-A, ARMv9-A 등 다양한 코어들이 개발되었다. ARM 아키텍처는 명령어 집합, Thumb 명령어 집합, Jazelle, DSP 및 SIMD 확장, VFP(Vector Floating Point), 보안 확장(TrustZone) 등 다양한 특징을 갖추고 있으며, 32비트 및 64비트 아키텍처를 모두 지원한다. ARM은 라이선싱을 통해 다양한 기업에 IP 코어를 제공하며, 삼성전자, 애플, 퀄컴 등 많은 회사에서 ARM 아키텍처 기반의 프로세서를 개발하고 있다. ARM 아키텍처는 안드로이드, iOS, 윈도우, macOS 등 다양한 운영 체제를 지원하며, 모바일 기기, 임베디드 시스템, 서버, 자동차 등 다양한 분야에서 널리 사용되고 있다.

ARM 아키텍처
일반 정보
이름ARM
설계자소피 윌슨
스티브 퍼버
에이콘 컴퓨터/Arm Holdings
비트32비트, 64비트
발표1985년
설계 방식RISC
유형로드-스토어
분기조건 코드, 비교 및 분기
개방 여부독점
ARM 64/32비트
발표2011년
버전ARMv8-R, ARMv8-A, ARMv8.1-A, ARMv8.2-A, ARMv8.3-A, ARMv8.4-A, ARMv8.5-A, ARMv8.6-A, ARMv8.7-A, ARMv8.8-A, ARMv8.9-A, ARMv9.0-A, ARMv9.1-A, ARMv9.2-A, ARMv9.3-A, ARMv9.4-A, ARMv9.5-A, ARMv9.6-A
인코딩AArch64/A64 및 AArch32/A32는 32비트 명령어를 사용, AArch32/T32 (Thumb-2)는 혼합된 16비트 및 32비트 명령어를 사용함.
엔디언양방향성 (기본 리틀 엔디언)
확장SVE, SVE2, SME, AES, SM3, SM4, SHA, CRC32, RNDR, TME; 모두 필수: Thumb-2, Neon, VFPv4-D16, VFPv4; 구식: Jazelle
GPR31 × 64비트 정수 레지스터
FPR32 × 128비트 레지스터 (스칼라 32비트 및 64비트 FP 또는 SIMD FP 또는 정수용); 또는 암호화
ARM 32비트
버전ARMv9-R, ARMv9-M, ARMv8-R, ARMv8-M, ARMv7-A, ARMv7-R, ARMv7E-M, ARMv7-M, ARMv6-M
인코딩32비트, Thumb-2 확장은 혼합된 16비트 및 32비트 명령어를 사용
엔디언양방향성 (기본 리틀 엔디언)
확장Thumb-2, Neon, Jazelle, AES, SM3, SM4, SHA, CRC32, RNDR, DSP, Saturated, FPv4-SP, FPv5, Helium
GPR15 × 32비트 정수 레지스터 (R14 (링크 레지스터) 포함, R15 (PC) 제외)
FPR최대 32 × 64비트 레지스터, SIMD/부동 소수점 (선택 사항)
ARM 32비트 (레거시)
버전ARMv6, ARMv5, ARMv4T, ARMv3, ARMv2
인코딩32비트, Thumb 확장은 혼합된 16비트 및 32비트 명령어를 사용
엔디언양방향성 (기본 리틀 엔디언) (ARMv3 이상)
확장Thumb, Jazelle
GPR15 × 32비트 정수 레지스터 (R14 (링크 레지스터) 포함, R15 (PC, 구형은 26비트 주소 지정) 제외)
FPR해당 없음
추가 정보
다른 이름아키텍처
📚 더 읽어볼만한 페이지
  • 명령어 집합 구조 - PA-RISC
    PA-RISC는 휴렛 팩커드에서 개발한 RISC 기반 명령어 집합 아키텍처로, HP 서버 및 워크스테이션에 사용되었으며 대용량 L1 캐시와 SIMD 명령어 확장 등의 특징을 가졌으나 아이테니엄 아키텍처로의 전환으로 단종되었다.
  • 명령어 집합 구조 - IA-64
    IA-64는 인텔과 HP가 공동 개발한 64비트 ISA로, EPIC 아키텍처를 채택하여 병렬성을 극대화하려 했으나, x86 호환성 문제와 소프트웨어 생태계 부족으로 상용 시장에서 실패하고 단종되었다.
  • 마이크로프로세서 - 중앙 처리 장치
    중앙 처리 장치(CPU)는 컴퓨터 시스템의 핵심 부품으로, 프로그램 명령어를 해석하고 실행하여 데이터를 처리하는 장치이다.
  • 마이크로프로세서 - 슬로켓
  • 마이크로컨트롤러 - 마이크로프로세서
  • 마이크로컨트롤러 - 아두이노
    아두이노는 Atmel AVR 마이크로컨트롤러 기반의 오픈 소스 하드웨어 플랫폼으로, C 언어와 유사한 스케치를 통해 프로그래밍이 가능하며, 다양한 플러그인 쉴드를 이용해 기능을 확장할 수 있어 교육, 시제품 제작, IoT 개발 등에 활용된다.

2. 역사

애콘이 1980년대 초 BBC 마이크로의 성공을 바탕으로 차세대 머신 개발을 추진하는 과정에서 ARM 아키텍처 개발이 시작되었다. 당시 애콘은 기존 6502 프로세서의 성능 한계에 직면했고, 더욱 효율적이고 저전력의 32비트 프로세서 개발이 시급했다.

소피 윌슨(Sophie Wilson)과 스티브 퍼버(Steve Furber)가 프로젝트를 이끌었다. 윌슨은 명령어 집합 아키텍처 설계를, 퍼버는 하드웨어 설계를 주도했다. 이들은 버클리 RISC와 스탠퍼드 대학교 연구의 영향을 받아 RISC(축소 명령어 집합 컴퓨팅) 아키텍처를 채택했다.

개발팀은 VLSI Technology영어를 "실리콘 파트너"로 선택하여, 애콘이 설계를 제공하고 VLSI가 레이아웃과 제조를 담당했다. 1985년 4월 26일, 최초의 ARM 실리콘 칩인 ARM1이 정상 작동했다. ARM1은 6MHz로 작동했으며, BBC 마이크로용 세컨드 프로세서로 처음 실용화되었다.

1986년ARM2가 8MHz로 등장했고, 이듬해에는 10~12MHz로 작동하는 버전이 출시되었다. ARM2는 부스의 곱셈 알고리즘을 통해 곱셈을 하드웨어로 구현하고, "FIQ(Fast Interrupt reQuest) 모드"를 추가하여 인터럽트 처리 속도를 높였다.

ARM2는 1987년 애콘 아키메데스(Acorn Archimedes) 시리즈에 처음 사용되었다. Dhrystone 벤치마크에서 ARM2는 7MHz MC68000 기반 시스템보다 약 7배, 16MHz 인텔 80386과 거의 동등한 성능을 보였다.

ARM2는 32비트 데이터 버스, 26비트 주소 공간, 16개의 32비트 레지스터(프로그램 카운터 포함)를 갖추었다. 트랜지스터 수는 30,000개로, 마이크로코드캐시가 없어 저전력, 간편한 열처리가 가능했다. 그럼에도 인텔 80286, 인텔 386보다 뛰어난 성능을 제공했다. 후속 기종인 ARM3는 4KB 캐시를 탑재하여 성능을 더욱 향상시켰다.

1980년대 후반, 애플은 애콘과 공동으로 새로운 ARM 코어 개발에 착수했다. 1990년 애콘은 개발팀을 분사하여 Advanced RISC Machines를 설립했다. 이 때문에 ARM은 Advanced RISC Machine의 약자로 알려져 있다. Advanced RISC Machines는 1998년 런던 증권거래소나스닥에 상장될 때 ARM Limited가 되었다.

ARM61991년에 최초 모델이 출시되었고, 애플은 ARM6 기반 ARM610을 애플 뉴턴에 채용했다. ARM2는 30,000개, ARM6는 35,000개의 트랜지스터를 사용했다.

ARM6의 개량판 ARM7휴대 전화에 널리 채용되며 ARM의 초석이 되었다. ARMv4 아키텍처 기반 ARM7TDMI는 Thumb 명령어(후술)를 구현하여 저전력과 높은 코드 효율을 제공, 휴대 전화게임보이 어드밴스 등에 채용되었다.

DEC는 ARMv4 아키텍처 라이선스를 얻어 스트롱ARM을 제조했다. 이는 인텔로 이관되었고, 인텔은 XScale을 개발했다. 이후 ARM9, ARM10을 거쳐, NEC와의 제휴 등으로 휴대 전화용 프로세서 지위를 확고히 한 ARM11이 출시된다.

2005년 제품 라인업을 개편, 애플리케이션 프로세서용 Cortex-A, 실시간 제어용 Cortex-R, 임베디드 시스템Cortex-M으로 시리즈를 분류했다. 2012년 11월, ARM 최초 64비트 아키텍처 프로세서 코어 Cortex-A50 시리즈를 발표했다.

ARM 칩은 세계에서 가장 많이 사용되는 CPU 설계 중 하나이며, 2004년 세계 시장 점유율은 61%였다.

ARM 아키텍처 버전 역사

👆
좌우로 밀어서 보기
버전연도설명
ARMv432비트 주소 영역, 32비트 ISA(Instruction Set Architecture) 동작
ARMv4T16비트 Thumb 명령어 셋 탑재. 메모리 공간 35% 이상 절약
ARMv5TE1999개선된 thumb 아키텍처와 ‘Enhanced’ DSP 명령어 셋을 ARM ISA에 추가
ARMv5TEJ2000Jazelle(자바 하드웨어 가속기) 확장 명령어 추가
ARMv62001메모리 시스템, 예외 처리 개선, 멀티프로세싱 지원, SIMD(Single Instruction Multiple Data) 미디어 명령어 포함

2.1. 초기 개발

애크론 컴퓨터(Acorn Computers)는 1981년 12월 BBC 마이크로(BBC Micro)를 출시하여 첫 성공을 거두었다. MOS 테크놀로지 6502(MOS Technology 6502) CPU를 기반으로 했지만, 더 빠른 동적 램(DRAM)을 사용하여 애플 II(Apple II) 등 경쟁 기종보다 약 두 배의 성능을 보였다.

1981년 IBM PC 출시로 데스크톱 컴퓨터 시장은 큰 변화를 겪었다. 인텔 8088 CPU를 사용한 PC는 이전 8비트 기종보다 향상된 성능을 제공했고, 취미와 게임 시장은 필수적인 비즈니스 도구 시장으로 변하기 시작했다. 모토로라 68000, 내셔널 세미컨덕터 NS32016과 같은 새로운 32비트 설계도 시장에 진출했다.

에이콘은 이 시장에서 경쟁하기 위해 에이콘 비즈니스 컴퓨터(Acorn Business Computer)라는 새로운 설계를 제시했다. BBC 마이크로의 10배 성능을 동일한 가격에 구현하는 것을 목표로 했다. 그러나 기존 16비트 설계는 비싸면서도 성능이 충분하지 않았고, 새로운 32비트 설계도 지원 칩 문제로 비용이 많이 들었다. 소피 윌슨(Sophie Wilson)에 따르면, 당시 테스트된 모든 프로세서는 약 4 Mbit/s 대역폭으로 거의 동일한 성능을 보였다.

캘리포니아 대학교 버클리의 RISC 보고서와 웨스턴 디자인 센터(Western Design Center) 방문은 에이콘이 자체 CPU 설계를 시작하는 계기가 되었다. 1983년 말, 에이콘은 Acorn RISC Machine (ARM) 프로젝트를 시작했다.

초기 버클리 RISC 설계는 교육용 시스템에 가까웠지만, ARM은 6502의 장점인 빠른 인터럽트 처리 기능을 추가했다. 이를 위해 ARM 설계는 물리적인 주소 공간을 64MB로 제한하고 26비트 주소를 사용했다. 명령어는 4바이트(32비트) 길이로 4바이트 경계에 맞춰야 했으므로, 명령어 주소의 하위 2비트는 항상 0이었다. 이는 프로그램 카운터(PC)가 24비트만 필요하고, 8비트 프로세서 플래그와 함께 단일 32비트 레지스터에 저장할 수 있음을 의미했다. 이 결정으로 인터럽트 오버헤드가 절반으로 줄었다.

또한 ARM은 페이지 모드 DRAM을 활용하여 메모리 성능을 향상시키는 "S-사이클" 명령어를 추가했다. 이를 통해 사용 가능할 경우 메모리 성능이 두 배로 향상되었으며, 특히 그래픽 성능에 중요했다.

윌슨은 BBC BASIC으로 프로세서 시뮬레이션을 작성했고, 이는 두 번째 6502 프로세서를 갖춘 BBC 마이크로에서 실행되었다. 윌슨은 Acorn의 CEO인 허먼 하우저에게 더 많은 자원을 요청했고, 하우저는 승인하여 윌슨의 ISA를 기반으로 실제 프로세서를 설계할 소규모 팀을 구성했다.

BBC 마이크로용 ARM1 두 번째 프로세서
BBC 마이크로용 ARM1 두 번째 프로세서

Acorn은 VLSI 테크놀로지를 실리콘 파트너로 선택했다. 1985년 4월 26일, ARM 실리콘의 첫 번째 샘플인 ARM1이 개발되었다. 이 버전은 6MHz로 작동했다.

첫 번째 ARM 애플리케이션은 BBC 마이크로의 두 번째 프로세서로, 지원 칩 개발 및 CAD 소프트웨어 속도 향상에 사용되었다. 윌슨은 ARM 어셈블리어로 BBC 베이직을 다시 작성하여 코드를 매우 압축적으로 만들었고, 이는 ARM 에뮬레이터 테스트에 유용하게 사용되었다.

1980년대 초, 영국의 애콘은 Acorn RISC Machine (ARM) 프로젝트를 시작했다. 이는 BBC 마이크로의 성공을 바탕으로 차세대 머신 개발을 추진하는 과정에서 6502 프로세서의 성능 한계를 극복하고, 효율적이고 저전력의 32비트 프로세서 개발을 목표로 했다.

소피 윌슨(Sophie Wilson)과 스티브 퍼버(Steve Furber)를 중심으로 한 소규모 팀은 버클리 RISC와 스탠퍼드 대학교 연구의 영향을 받아 RISC(축소 명령어 집합 컴퓨팅) 아키텍처를 채택했다.

개발팀은 VLSI 테크놀로지를 실리콘 파트너로 선택하여 1985년 4월 26일에 최초의 ARM 실리콘 칩인 ARM1을 개발했다. ARM1은 6MHz로 작동했으며, BBC 마이크로용 세컨드 프로세서로 활용되었다. BBC 베이직은 어셈블리어로 다시 작성되어 ARM 에뮬레이터 테스트에 사용되었다.

1986년 말, 곱셈 연산 하드웨어 구현과 인터럽트 처리 속도 향상 등 개선을 거친 ARM2가 8MHz로 출시되었고, 이듬해에는 10~12MHz 버전이 출시되었다. ARM2는 1987년에 출시된 애콘 아키메데스(Acorn Archimedes) 시리즈에 탑재되어 상업적인 성공을 거두었다. Dhrystone 벤치마크에 따르면, ARM2는 7MHz로 작동하는 MC68000 기반 시스템보다 약 7배의 성능을 보였고, 16MHz의 인텔 80386과 거의 동등한 속도를 가졌다. ARM2는 고속 I/O에 대응하도록 설계되었고, DMA 컨트롤러와 같은 지원 칩을 생략하여 설계를 간소화했다.

ARM2는 32비트 데이터 버스, 26비트 주소 공간, 16개의 32비트 레지스터(프로그램 카운터 포함)를 갖추고 있었다. 트랜지스터 수는 30,000개로, 모토로라 68000의 68,000개보다 적었다. 이는 ARM2가 마이크로코드캐시를 탑재하지 않아 저전력과 간편한 열처리가 가능했기 때문이다. ARM2는 인텔 80286이나 인텔 386에 비해 뛰어난 성능을 제공했다.

후속 기종인 ARM3는 4KB의 캐시를 탑재하여 성능을 더욱 향상시켰다.

2.2. Advanced RISC Machines Ltd. 설립 및 발전

1980년대 후반, 애플은 에이콘과 협력하여 새로운 ARM 코어 개발을 시작했다. 이 협력은 매우 중요하게 여겨져, 에이콘은 1990년에 개발팀을 분사하여 Advanced RISC Machines Ltd. (ARM Ltd.)를 설립했다. 이로 인해 ARM은 Acorn RISC Machine이 아닌 Advanced RISC Machine의 약자로 알려지게 되었다. Advanced RISC Machines는 1998년 런던 증권거래소나스닥에 상장되면서 ARM Limited가 되었다.

이러한 과정을 거쳐 개발된 ARM6는 1991년에 최초 모델이 출시되었고, 애플은 ARM6 기반의 ARM610을 애플 뉴턴에 채택했다. ARM6는 이전 모델인 ARM2에 비해 트랜지스터 수가 30,000개에서 35,000개로 약간 증가했지만, 코어 크기는 대체로 동일하게 유지되었다. 이는 최종 사용자가 ARM 코어와 다양한 옵션 부품을 조합하여 완전한 CPU를 만들 수 있도록 하여, 저렴한 비용으로 고성능을 얻을 수 있게 하는 설계 철학을 반영한 것이다.

ARM6의 개량판인 ARM7휴대 전화 시장에서 큰 성공을 거두었다. 특히, ARM7을 재설계한 ARM7TDMI는 Thumb 명령어(후술)를 도입하여 코드 밀도를 높이고 저전력 소비를 실현했다. 이 덕분에 ARM7TDMI는 게임보이 어드밴스와 같은 휴대용 게임기를 비롯한 다양한 민생 기기에 널리 채택되었다. TDMI는 Thumb 명령어, 디버깅(Debug) 회로, 곱셈기(Multiplier), ICE 기능을 탑재하고 있음을 의미하지만, 이후 코어에는 이러한 기능이 표준으로 탑재되면서 이 명칭은 생략되었다.

DEC는 ARMv4 아키텍처 설계 라이선스를 획득하여 스트롱ARM을 제조했다. 233MHz에서 StrongARM은 단 1W의 전력만 소비했으며, 이는 나중에 소송 해결의 일환으로 인텔에 이관되었다. 인텔은 이를 기반으로 XScale을 개발했다.

이후에도 StrongARM 기술의 피드백을 받은 ARM9ARM10을 거쳐, NEC와의 제휴 등을 통해 휴대 전화용 프로세서로서의 지위를 확고히 한 ARM11이 출시되었다.

2.3. 지속적인 발전과 64비트 아키텍처 도입

ARM은 StrongARM, ARM9, ARM10, ARM11 등 지속적인 기술 개발을 통해 성능을 향상시키고, 다양한 분야로 적용 범위를 확대했다. 2005년, Cortex 시리즈를 발표하며, 고성능 애플리케이션 프로세서 (Cortex-A), 실시간 제어 (Cortex-R), 임베디드 시스템 (Cortex-M) 등 목적에 따라 특화된 프로세서를 제공하기 시작했다.

2001년에 발표된 ARMv6 아키텍처는 메모리 시스템, 예외 처리, 멀티프로세싱 환경 지원 등이 개선되었다. SIMD (Single Instruction Multiple Data) 소프트웨어 실행을 지원하는 미디어 명령어가 포함되어 오디오 및 비디오 코덱을 포함하는 응용 프로그램들의 사용 확대를 위해 최적화되었다.

2011년, 64비트 아키텍처인 ARMv8-A를 발표하며, AArch64 (ARM64)를 도입하여 서버 시장 등 고성능 컴퓨팅 분야로 진출했다. 2021년에는 Armv9-A 아키텍처를 발표하여 보안 및 인공지능 기능을 강화하였다.

3. 주요 특징

ARM 아키텍처는 RISC 기반으로 설계되어 명령어 집합이 간결하고 효율적이며, 대부분의 명령어는 1사이클로 실행된다.

다른 RISC 아키텍처와 달리 ARM 아키텍처는 PC 상대 주소 지정, 프리/포스트-인크리먼트 주소 지정 모드 등 다양한 주소 지정 모드를 지원한다.

ARM 명령어의 특징은 명령어 최상위 4비트를 조건 코드로 사용하여 조건부 실행이 가능하다는 것이다. 이를 통해 분기 명령어 없이 조건에 따라 실행 여부를 결정할 수 있다.

또한, 쉬프트 연산을 "데이터 처리" 명령어(산술, 논리, 레지스터 간 대입)와 통합할 수 있다. 이러한 특징으로 ARM 프로그램은 일반적인 RISC 프로세서보다 높은 코드 밀도를 가진다.

코드 효율을 높이기 위해 ARM 프로세서는 Thumb이라는 16비트 명령어 모드를 제공한다. Thumb 명령어는 메모리 포트나 버스가 32비트보다 좁은 환경에서 더 나은 성능을 낼 수 있다.

ARM은 자바 바이트코드를 하드웨어에서 직접 실행하는 Jazelle DBX(Direct Bytecode eXecution) 기술을 구현했다.

ARMv5TEARMv5TEJ 아키텍처는 디지털 신호 처리(DSP) 및 멀티미디어 애플리케이션을 위해 부호 있는 곱셈-누산 연산, 포화 가산 및 감산, 선행 0 개수(leading zero count) 등의 명령어를 추가했다.

고급 SIMD 확장은 NEON이라고도 불리며, 미디어 및 디지털 신호 처리에 적합한 64비트 및 128비트 SIMD 명령어 집합이다.

VFP (Vector Floating Point)는 ARM 아키텍처의 부동 소수점 연산 코프로세서 확장 기능으로, 반정밀도(v3 이상), 단정밀도, 배정밀도 부동소수점 연산을 지원한다.

트러스트존(TrustZone) 기술은 ARMv6KZ 이상 아키텍처에 포함된 보안 확장 기능이다.

3.1. 명령어 집합 아키텍처 (ISA)

ARM 아키텍처는 RISC 기반으로 설계되어, 명령어 집합이 간결하고 효율적이다. 기본적으로 32비트 고정 길이 명령어를 사용하며, 로드/스토어 아키텍처, 3 오퍼랜드 레지스터 간 연산 방식을 채택하고 있다. 대부분의 명령어는 1사이클로 실행 가능하다.

다른 RISC 아키텍처에 비해 ARM 아키텍처는 PC 상대 주소 지정, 프리/포스트-인크리먼트 주소 지정 모드 등 다양한 주소 지정 모드를 지원한다.

시간이 지나면서 ARM 명령어 집합은 점차 확장되었다. 예를 들어, 초기 ARM 프로세서(ARM7TDMI 이전)에는 2바이트 값을 로드하는 명령어가 없었다.

ARM 명령어 집합의 독특한 점 중 하나는 명령어의 최상위 4비트를 조건 코드로 사용하여 조건부 실행이 가능하다는 것이다. 이를 통해 대부분의 명령어는 분기 명령어 없이 조건에 따라 실행 여부를 결정할 수 있다.

조건부 실행은 코드 내에서 작은 if문에 해당하는 부분을 분기 명령어 없이 처리할 수 있게 해준다. 예를 들어, 유클리드 호제법을 C언어로 작성하면 다음과 같다.

```c
int gcd(int i, int j)
{
while (i != j) {
if (i > j)
i -= j;
else
j -= i;
}
return i;
}
```

이 코드를 ARM 어셈블리어로 작성하면 다음과 같이 while 루프 부분을 구현할 수 있다.

```assembly
loop
CMP Ri, Rj ; i와 j를 비교
SUBGT Ri, Ri, Rj ; "GT" (i > j)이면 i = i - j;
SUBLT Rj, Rj, Ri ; "LT" (i < j)이면 j = j - i;
BNE loop ; "NE" (i != j)이면 loop로 돌아감
```

위 코드에서는 조건 코드(GT, LT, NE)를 사용하여 분기 명령어 없이 조건부 실행을 구현함으로써 코드 밀도를 높였다.

또 다른 특징은 쉬프트 연산을 "데이터 처리" 명령어(산술, 논리, 레지스터 간 대입)와 통합할 수 있다는 점이다. 예를 들어, C언어의 `a += (j << 2);` 문장은 ARM 명령어 하나로 표현 가능하다.

```assembly
ADD Ra, Ra, Rj, LSL #2
```

이러한 특징들 덕분에 ARM 프로그램은 일반적인 RISC 프로세서보다 높은 코드 밀도를 가진다. 명령어 페치 횟수가 줄어들고, 분기로 인한 지연을 피하기 쉬워 파이프라인 처리를 효율적으로 사용할 수 있다. 이는 ARM이 복잡한 CPU 설계와 경쟁할 수 있게 해준 중요한 요인 중 하나이다.

3.2. Thumb 명령어 집합

ARM 프로세서는 코드 효율을 높이기 위해 Thumb이라는 16비트 명령어 모드를 가지고 있다. 이는 SuperH의 16비트 명령어/32비트 데이터 구조를 본떠 추가되었다. Thumb 명령어는 조건 실행을 위한 4비트 프리디케이트(predicate)가 제거되어, 메모리 포트나 버스가 32비트보다 좁은 환경에서 32비트 코드보다 더 나은 성능을 제공한다.

임베디드 애플리케이션에서는 32비트 데이터 경로가 일부 주소 범위에만 해당하고(예: 게임보이 어드밴스), 나머지는 16비트 또는 그보다 좁은 경우가 많다. 이러한 상황에서는 Thumb 코드로 컴파일하고, CPU 부하가 큰 부분만 32비트 명령어 집합을 사용하여 수작업으로 최적화하는 것이 일반적이다.

Thumb 명령어와 ARM 명령어는 단일 실행 파일 내에서 함께 사용할 수 있지만, Thumb 명령어 실행 모드와 ARM 명령어 실행 모드는 독립적이다. 따라서 둘을 모두 사용하려면 프로세서 상태를 전환해야 한다. 상태 전환은 분기 명령어(BX, BLX)를 통해 수행되며, 일반적으로 함수 단위로 Thumb 명령어와 ARM 명령어를 구분하여 함수 호출 시 전환한다.

Thumb 기술이 처음 탑재된 프로세서는 ARM7TDMI이다. ARM9 및 이후 제품군(XScale 포함)은 모두 Thumb 기술을 탑재하고 있다.

ThumbEE(Thumb 실행 환경)는 Jazelle RCT(런타임 컴파일 대상)라고도 불리는 네 번째 명령어 모드이다. 2005년에 발표되었으며, Cortex-A8 프로세서에 처음 구현되었다. ThumbEE는 Thumb-2 명령어 집합을 약간 변경하여 JIT 컴파일러처럼 실행 시 코드를 생성하는 환경에 적합하다. 주요 대상은 자바, .NET MSIL(C# 등), 파이썬, 등의 언어이다.

3.3. Jazelle

ARM은 자바 바이트코드를 하드웨어에서 직접 실행할 수 있게 해주는 기술을 구현했다. 이 기술은 ARM 및 Thumb 모드와 함께 또 다른 실행 모드로, ARM/Thumb 모드 전환과 마찬가지로 접근할 수 있다. 이 기술은 Jazelle DBX(Direct Bytecode eXecution)라고도 불리며, 나중에 나올 Jazelle RCT와는 구별된다.

Jazelle 기술이 탑재된 최초의 프로세서는 ARM926EJ-S이다. CPU 명칭에서 'J'는 Jazelle을 의미한다.

3.4. DSP 및 SIMD 확장

ARM 아키텍처는 디지털 신호 처리(DSP) 및 멀티미디어 애플리케이션을 위해 확장되면서 여러 명령어들이 추가되었다. ARMv5TEARMv5TEJ 아키텍처의 "E"는 이러한 확장을 나타낸다.

추가된 명령어는 디지털 신호 프로세서 아키텍처에서 일반적인 것으로, 부호 있는 곱셈-누산 연산, 포화 가산 및 감산, 선행 0 개수(leading zero count)의 변형 등이 있다.

고급 SIMD 확장은 NEON이라고도 불리며, 미디어 및 디지털 신호 처리에 적합한 64비트 및 128비트 SIMD 명령어 집합이다. 8/16/32/64비트 정수 연산과 32비트(단정밀도) 부동 소수점 연산을 위한 SIMD 명령어가 정의되어 있으며, ARMv7부터 사용 가능하다. 32비트 CPU에서는 배정밀도 부동 소수점수는 사용 불가능하며, 배정밀도에는 VFP를 사용한다.

대부분의 ARMv7 SoC는 NEON을 지원하지만, 엔비디아 테그라(NVIDIA Tegra) 2 시리즈 등은 지원하지 않는다.

레지스터는 VFP 레지스터로 준비된 32개의 64비트 레지스터를 사용하여 32개의 64비트 SIMD 레지스터(D0-D31) 또는 16개의 128비트 SIMD 레지스터(Q0-Q15)로 접근할 수 있다. 예를 들어 128비트 레지스터 Q0은 D0과 D1의 두 개의 64비트 레지스터 영역에 매핑되어 있다.

Cortex-A15 등에서는 NEONv2(version 2)가 탑재되어 Fused Multiply-Add가 가능하다. 이를 통해 단정밀도 부동 소수점수에서 8 FLOPS/cycle이 되었다.

무선 MMX(WMMX)는 인텔이 XScale 프로세서를 위해 개발한 SIMD 명령어 집합이다. 64비트 너비의 레지스터가 16개 제공되며, 8/16/32/64비트 SIMD 정수 연산이 가능하다. XScale 및 그 매각처인 마벨 테크놀로지 그룹(Marvell Technology Group) 제 ARM SoC에 채택되었다. 명령어 집합 자체는 x86 프로세서의 MMX와는 완전히 다르지만, GCC나 Visual C++ 등의 컴파일러에서 사용할 수 있는 내장 함수는 MMX와의 호환성이 어느 정도 확보되어 있으며, 이를 이용하면 MMX용으로 작성된 코드를 비교적 쉽게 이식할 수 있다.

3.5. 부동 소수점 연산 (VFP)

VFP (Vector Floating Point)는 ARM 아키텍처의 부동 소수점 연산 코프로세서 확장 기능이다. 반정밀도(v3 이상), 단정밀도, 배정밀도 부동소수점 연산 기능을 제공한다.

* VFPv1: 폐기됨
* VFPv2: ARMv5TE, ARMv5TEJ, ARMv6에서 사용 가능
* VFPv3: ARMv7에서 사용 가능. 일반적으로 레지스터 수는 32개이지만, 엔비디아 테그라(NVIDIA Tegra) 2 시리즈 등은 레지스터 수가 절반인 VFPv3-D16을 채용. Cortex-A8의 구현은 파이프라이닝되지 않아 매우 느림 (VFP Lite).
* VFPv4: Cortex-A5, A7, A15, 애플 A6(Apple A6), 퀄컴 스냅드래곤(Snapdragon) Krait 등에서 사용 가능. IEEE754 준수의 (곱셈 결과의 반올림을 수행하지 않는) Fused multiply add 지원. VFPv4-D16도 있음.

"Vector"라는 이름에서 알 수 있듯이, 일부 명령어에서는 벡터 모드라고 불리는 한 명령어로 여러 레지스터에 대해 연산을 수행하는 모드가 제공된다. 이 모드를 사용하면 SIMD 연산이 가능하지만, 프로그래밍 모델이 다소 복잡했다. 당시 ARM11 프로세서의 구현은 스칼라 명령어를 요소 수만큼 순차적으로 실행하는 SIMD 연산의 장점을 누릴 수 없었기 때문에, 적극적으로 사용되지 않았다. VFPv3을 구현하는 ARMv7 세대 이후에는 Advanced SIMD 확장 명령어 (NEON)가 도입되었기 때문에, 현재는 벡터 모드의 사용이 권장되지 않는다. Cortex-A9 및 A15는 벡터 모드를 지원하지 않으므로, 현재 ARM 아키텍처에서 VFP의 위치는 스칼라 전용 부동소수점 연산 코프로세서이며, SIMD 연산 용도는 NEON에 자리를 내주었다.

단정밀도 부동소수점 연산은 NEON에서도 실행 가능하지만, 배정밀도 부동소수점 연산이나 IEEE754 준수의 4가지 반올림 모드, 비정규화 수 지원 등은 NEON에는 없으므로, 이들을 사용하려면 VFP 명령어를 사용해야 한다.

3.6. 보안 확장 (TrustZone)

트러스트존(TrustZone) 기술은 ARMv6KZ 이상의 애플리케이션 프로파일 아키텍처에 포함된 보안 확장 기능으로, "TrustZone Technology"라는 이름으로 마케팅되었다. 이는 하드웨어 기반 접근 제어를 통해 두 개의 가상 프로세서를 제공함으로써, 별도의 보안 코어를 추가하지 않고도 비용을 절감할 수 있게 해준다.

ARMv8-M 아키텍처에는 "TrustZone for ARMv8-M Technology"로 마케팅되는 보안 확장 기능이 도입되었다. 이처럼 TrustZone은 Cortex-A 시리즈와 Cortex-M 시리즈에 각각 적용되어, 다양한 환경에서 보안 기능을 제공한다.

4. ARM 코어 종류

ARM은 특정 용도에 최적화된 프로세서를 선택할 수 있도록 다양한 종류의 코어를 제공한다. 주요 코어 종류는 다음과 같다.

👆
좌우로 밀어서 보기
계열아키텍처 버전코어기능캐시 (명령어/데이터)/MMU일반적인 MIPS @ MHz
ARM1ARMv1ARM1없음
ARM2ARMv2ARM2곱하기 명령 (MUL) 추가없음4MIPS @ 8 MHz
0.33 DMIPS/MHz
ARMv2aARM250MEMC (MMU) 구현, 그래픽과 IO 프로세스. 아키텍처 2a:SWP와 SWPB 등의 스왑 명령추가.없음, MEMC1a7MIPS @ 12 MHz
ARM3ARMv2aARM2aARM에 프로세스 캐시 최초 사용4K 통합12MIPS @ 25 MHz
0.50 DMIPS/MHz
ARM6ARMv3ARM60v3 아키텍처, 최초로 32 비트 메모리 지원(26 비트에 반대된)없음10MIPS @ 12 MHz
ARM600캐시와 코프로세스 버스(FPA10 부동소수점 모듈).4K 통합28MIPS @ 33 MHz
ARM610캐시, 코프로세서 버스 없음.4K 통합17MIPS @ 20 MHz
0.65 DMIPS/MHz
ARM7ARMv3ARM7008 KB 통합40 MHz
ARM7108KB 통합40 MHz
ARM710a8 KB 통합40 MHz
0.68 DMIPS/MHz
ARM7100SoC.8 KB 통합18 MHz
ARM7500SoC.4 KB 통합40 MHz
ARM7500FESoC. "FE" FPA와 EDO 메모리 컨트롤러 추가4 KB 통합56 MHz
0.73 DMIPS/MHz
ARM7TDMIARMv4TARM7TDMI(-S)3-단계 파이프라인, Thumb없음15MIPS @ 16.8 MHz
63DMIPS @ 70 MHz
ARM710T8 KB 통합, MMU36MIPS @ 40 MHz
ARM720T8 KB 통합, MMU60MIPS @ 59.8 MHz
ARM740TMPU
ARMv5TEJARM7EJ-SJazelle DBX, 향상된 DSP 명령, 5-단계 파이프라인없음
StrongARMARMv4SA-11016 KB/16 KB, MMU203 MHz
1.0 DMIPS/MHz
SA-111016 KB/16 KB, MMU233 MHz
ARM8ARMv4ARM8105-단계 파이프라인, 고정된 예측 분기, 이중 대역폭 메모리8 KB 통합, MMU84MIPS @ 72 MHz
1.16 DMIPS/MHz
ARM9TDMIARMv4TARM9TDMI5-단계 파이프라인없음
ARM920T16 KB/16 KB, MMU200MIPS @ 180 MHz
ARM922T8 KB/8 KB, MMU
ARM940T4 KB/4 KB, MPU
ARM9EARMv5TEARM946E-S향상된 DSP 명령가변적, 메모리 밀착형 MPU
ARM966E-S캐시없음, TCMs
ARM968E-S캐시없음, TCMs
ARMv5TEJARM926EJ-SJazelle DBX, 향상된 DSP 명령가변적, TCMs, MMU220MIPS @ 200 MHz
ARMv5TEARM996HSClockless 프로세서, 향상된 DSP 명령캐시없음, TCMs, MPU
ARM10EARMv5TEARM1020EVFP, 6-단계 파이프라인, 향상된 DSP 명령32 KB/32 KB, MMU
ARM1022EVFP16 KB/16 KB, MMU
ARMv5TEJARM1026EJ-SJazelle DBX, 향상된 DSP 명령가변적, MMU or MPU
XScaleARMv5TE80200/IOP310/IOP315I/O 프로세서, 향상된 DSP 명령
80219400/600 MHz
IOP321600 BogoMips @ 600 MHz
IOP33x
IOP34x1-2 core, RAID Acceleration32K/32K L1, 512K L2, MMU
PXA210/PXA250응용분야 프로세서, 7-단계 파이프라인
PXA25532KB/32KB, MMU400 BogoMips @ 400 MHz
PXA26xdefault 400 MHz, up to 624 MHz
PXA27x응용분야 프로세서32 KiB/32 Kb, MMU800MIPS @ 624 MHz
PXA800(E)F
Monahans1000MIPS @ 1.25 GHz
PXA900
IXC1100Control Plane 프로세서
IXP2400/IXP2800
IXP2850
IXP2325/IXP2350
IXP42x
IXP460/IXP465
ARM11ARMv6ARM1136J(F)-SSIMD, Jazelle DBX, VFP, 8-단계 파이프라인가변적, MMU740 @ 532-665 MHz (i.MX31 SoC), 400-528 MHz
ARMv6T2ARM1156T2(F)-SSIMD, Thumb-2, VFP, 9-단계 파이프라인가변적, MPU
ARMv6KZARM1176JZ(F)-SSIMD, Jazelle DBX, VFP가변적, MMU+TrustZone
ARMv6KARM11 MPCore1-4 코어 SMP, SIMD, Jazelle DBX, VFP가변적, MMU
CortexARMv7-ACortex-A8응용분야 형상, VFP, NEON, Jazelle RCT, Thumb-2, 13-단계 슈퍼스칼라 파이프라인가변적 (L1+L2), MMU+TrustZone2000 (2.0 DMIPS/MHz, 600 MHz부터 1 GHz) 까지
Cortex-A9응용분야 형상, VFP, (NEON), Jazelle RCT and DBX, Thumb-2MMU+TrustZone2.5 DMIPS/MHz
Cortex-A9 MPCoreAs Cortex-A9, 1-4 코어 SMPMMU+TrustZone2.0 DMIPS/MHz
Cortex-A122.96 DMIPS/MHz
Cortex-A153.5 DMIPS/MHz
ARMv7-RCortex-R4(F)임베디드 형상, (FPU)가변적 캐시, MPU optional600 DMIPS
ARMv6-MCortex-M1FPGA와 연동, 마이크로컨트롤러 형상, Thumb-2 (BL, MRS, MSR, ISB, DSB, and DMB).없음, 선택적 메모리 밀착형.
ARMv7-MCortex-M3마이크로컨트롤러 형상, Thumb-2 only.캐시없음, (MPU)125DMIPS @ 100 MHz
ARMv7E-MCortex-M4마이크로컨트롤러 형상125DMIPS
ARMv8-ACortex-A5364비트 명령어 지원MMU, TrustZone, 64bit 가상 주소2.3 DMIPS/MHz
Cortex-A5764비트 명령어 지원MMU, TrustZone, 64bit 가상 주소4.1 DMIPS/MHz
Cortex-A7264비트 명령어 지원MMU, TrustZone, 64bit 가상 주소


분류:ARM CPU

5. 32비트 아키텍처 (ARMv7-A 이전)

32비트 ARM 아키텍처는 ARMv1부터 ARMv7-A까지 발전해 왔으며, 다양한 임베디드 시스템, 모바일 기기 등에 널리 사용되었다.

👆
좌우로 밀어서 보기
계열아키텍처 버전코어기능캐시 (명령어/데이터)/MMU일반적인 MIPS @ MHz
ARM1ARMv1ARM1없음
ARM2ARMv2ARM2곱하기 명령 (MUL) 추가없음4 MIPS @ 8 MHz
0.33 DMIPS/MHz
ARMv2aARM250MEMC (MMU) 구현, 그래픽과 IO 프로세스. 아키텍처 2a: SWP와 SWPB 등의 스왑 명령 추가.없음, MEMC1a7 MIPS @ 12 MHz
ARM3ARMv2aARM2aARM에 프로세스 캐시 최초 사용4K 통합12 MIPS @ 25 MHz
0.50 DMIPS/MHz
ARM6ARMv3ARM60v3 아키텍처, 최초로 32 비트 메모리 지원(26 비트에 반대)없음10 MIPS @ 12 MHz
ARM600캐시와 코프로세스 버스(부동소수점 모듈).4K 통합28 MIPS @ 33 MHz
ARM610캐시, 코프로세서 버스 없음.4K 통합17 MIPS @ 20 MHz
0.65 DMIPS/MHz
ARM7ARMv3ARM7008 KB 통합40 MHz
ARM7108KB 통합40 MHz
ARM710a8 KB 통합40 MHz
0.68 DMIPS/MHz
ARM7100SoC.8 KB 통합18 MHz
ARM7500SoC.4 KB 통합40 MHz
ARM7500FESoC. "FE" FPA와 EDO 메모리 컨트롤러 추가4 KB 통합56 MHz
0.73 DMIPS/MHz
ARM7TDMIARMv4TARM7TDMI(-S)3-단계 파이프라인, Thumb없음15 MIPS @ 16.8 MHz
63 DMIPS @ 70 MHz
ARM710T8 KB 통합, MMU36 MIPS @ 40 MHz
ARM720T8 KB 통합, MMU60 MIPS @ 59.8 MHz
ARM740TMPU
ARMv5TEJARM7EJ-SJazelle DBX, 향상된 DSP 명령, 5-단계 파이프라인없음
StrongARMARMv4SA-11016 KB/16 KB, MMU203 MHz
1.0 DMIPS/MHz
SA-111016 KB/16 KB, MMU233 MHz
ARM8ARMv4ARM8105-단계 파이프라인, 고정된 예측 분기, 이중 대역폭 메모리8 KB 통합, MMU84 MIPS @ 72 MHz
1.16 DMIPS/MHz
ARM9TDMIARMv4TARM9TDMI5-단계 파이프라인없음
ARM920T16 KB/16 KB, MMU200 MIPS @ 180 MHz
ARM922T8 KB/8 KB, MMU
ARM940T4 KB/4 KB, MPU
ARM9EARMv5TEARM946E-S향상된 DSP 명령가변적, 메모리 밀착형 MPU
ARM966E-S캐시없음, TCMs
ARM968E-S캐시없음, TCMs
ARMv5TEJARM926EJ-SJazelle DBX, 향상된 DSP 명령가변적, TCMs, MMU220 MIPS @ 200 MHz
ARMv5TEARM996HSClockless 프로세서, 향상된 DSP 명령캐시없음, TCMs, MPU
ARM10EARMv5TEARM1020EVFP, 6-단계 파이프라인, 향상된 DSP 명령32 KB/32 KB, MMU
ARM1022EVFP16 KB/16 KB, MMU
ARMv5TEJARM1026EJ-SJazelle DBX, 향상된 DSP 명령가변적, MMU or MPU
XScaleARMv5TE80200/IOP310/IOP315I/O 프로세서, 향상된 DSP 명령
80219400/600 MHz
IOP321600 BogoMips @ 600 MHz
IOP33x
IOP34x1-2 core, RAID Acceleration32K/32K L1, 512K L2, MMU
PXA210/PXA250응용분야 프로세서, 7-단계 파이프라인
PXA25532KB/32KB, MMU400 BogoMips @ 400 MHz
PXA26xdefault 400 MHz, up to 624 MHz
PXA27x응용분야 프로세서32 KiB/32 Kb, MMU800 MIPS @ 624 MHz
PXA800(E)F
Monahans1000 MIPS @ 1.25 GHz
PXA900
IXC1100Control Plane 프로세서
IXP2400/IXP2800
IXP2850
IXP2325/IXP2350
IXP42x
IXP460/IXP465
ARM11ARMv6ARM1136J(F)-SSIMD, Jazelle DBX, VFP, 8-단계 파이프라인가변적, MMU740 @ 532-665 MHz (i.MX31 SoC), 400-528 MHz
ARMv6T2ARM1156T2(F)-SSIMD, Thumb-2, VFP, 9-단계 파이프라인가변적, MPU
ARMv6KZARM1176JZ(F)-SSIMD, Jazelle DBX, VFP가변적, MMU+TrustZone
ARMv6KARM11 MPCore1-4 코어 SMP, SIMD, Jazelle DBX, VFP가변적, MMU
CortexARMv7-ACortex-A8응용분야 형상, VFP, NEON, Jazelle RCT, Thumb-2, 13-단계 슈퍼스칼라 파이프라인가변적 (L1+L2), MMU+TrustZone2000 (2.0 DMIPS/MHz, 600 MHz부터 1 GHz) 까지
Cortex-A9응용분야 형상, VFP, (NEON), Jazelle RCT and DBX, Thumb-2MMU+TrustZone2.5 DMIPS/MHz
Cortex-A9 MPCoreAs Cortex-A9, 1-4 코어 SMPMMU+TrustZone2.0 DMIPS/MHz
Cortex-A122.96 DMIPS/MHz
Cortex-A153.5 DMIPS/MHz
ARMv7-RCortex-R4(F)임베디드 형상, (FPU)가변적 캐시, MPU optional600 DMIPS
ARMv6-MCortex-M1FPGA와 연동, 마이크로컨트롤러 형상, Thumb-2 (BL, MRS, MSR, ISB, DSB, and DMB).없음, 선택적 메모리 밀착형.
ARMv7-MCortex-M3마이크로컨트롤러 형상, Thumb-2 only.캐시없음, (MPU)125 DMIPS @ 100 MHz
ARMv7E-MCortex-M4마이크로컨트롤러 형상125 DMIPS


애크론 컴퓨터(Acorn Computers)의 첫 번째 성공적인 디자인은 1981년 12월에 출시된 BBC 마이크로(BBC Micro)였다. 이 기기는 MOS 테크놀로지 6502(MOS Technology 6502) CPU를 기반으로 했지만, 더 빠른 동적 램(DRAM)을 사용하여 애플 II(Apple II)와 같은 경쟁 제품보다 약 두 배의 성능을 보였다. 당시 일반적인 DRAM은 약 2MHz로 동작했지만, 애크론은 히타치(Hitachi)와 계약하여 더 빠른 4MHz 부품을 공급받았다.

당시 기계들은 일반적으로 프로세서와 프레임버퍼(framebuffer) 간에 메모리를 공유하여 프로세서가 별도의 입출력(I/O) 없이 화면 내용을 빠르게 업데이트할 수 있었다. 6502 설계의 특징으로 CPU는 시간의 절반 동안 메모리를 사용하지 않았다. CPU를 1MHz로 실행하면 비디오 시스템은 이러한 다운타임 동안 데이터를 읽어 RAM의 총 2MHz 대역폭을 활용했다. BBC 마이크로에서는 4MHz RAM을 사용하여 동일한 기술을 적용, 속도를 두 배로 늘렸다. 이를 통해 시장에 나와 있는 유사한 기계보다 뛰어난 성능을 발휘했다.

1981년 IBM PC가 출시되면서 데스크톱 컴퓨터 시장은 급변했다. 인텔 8088을 사용하여 전반적인 성능이 향상되었고, 이전의 8비트 설계는 경쟁력을 잃었다. 모토로라 68000 및 내셔널 세미컨덕터 NS32016과 같은 새로운 32비트 설계도 시장에 진출했다.

에이콘(Acorn)은 에이콘 비즈니스 컴퓨터(Acorn Business Computer)라는 새로운 설계를 통해 경쟁할 방법을 모색했다. BBC 마이크로의 10배 성능을 동일한 가격에 구현하는 것을 목표로 삼았다. 이는 PC보다 성능이 뛰어나고 가격이 저렴하게 만들 수 있었다. 한편, 애플 리사(Apple Lisa)는 그래픽 사용자 인터페이스(GUI) 개념을 대중에게 알렸고, 미래는 GUI를 갖춘 기계가 될 것임을 시사했다. 그러나 리사는 당시 매우 비쌌던 지원 칩, 많은 양의 메모리 및 하드 디스크 드라이브가 포함되어 9995USD의 높은 가격에 판매되었다.

엔지니어들은 사용 가능한 모든 CPU 설계를 연구했다. 기존 16비트 설계는 더 비싸면서도 BBC 마이크로 설계보다 약간 높은 성능만 제공했다. 또한, 많은 수의 지원 칩이 필요하여 컴퓨터 전체 비용을 증가시켰다. 새로운 32비트 설계도 고려했지만, 더 비쌌고 지원 칩 문제가 있었다. 소피 윌슨(Sophie Wilson)에 따르면, 당시 테스트된 모든 프로세서는 약 4Mbit/s 대역폭으로 거의 동일한 성능을 보였다.

캘리포니아 대학교 버클리의 보고서 발표와 스티브 퍼버(Steve Furber)와 소피 윌슨의 웨스턴 디자인 센터(Western Design Center) 방문은 에이콘(Acorn)이 ARM으로 이끄는 주요 사건이었다. 에이콘 팀은 고등학생들이 애플 II 기계에서 칩 레이아웃을 제작하는 것을 보고 누구든지 할 수 있다는 것을 알게 되었다. 반면, 현대적인 32비트 CPU를 개발하는 다른 설계 회사를 방문했을 때는 12명 이상의 팀원이 이미 설계의 H 버전을 작업하고 있었지만 여전히 버그가 있었다. 이는 1983년 말에 자체 CPU 설계인 에이콘 RISC 머신(Acorn RISC Machine)을 시작하기로 결정한 것을 확고하게 했다.

초기 버클리 RISC 설계는 교육용 시스템이었으며, 단순한 성능 향상을 위해 특별히 설계된 것은 아니었다. ARM은 6502의 여러 가지 장점 있는 설계 개념을 추가했다. 가장 중요한 것은 인터럽트를 빠르게 처리하는 기능이었는데, 이를 통해 추가적인 외부 하드웨어 없이도 적절한 입출력(I/O) 성능을 제공할 수 있었다. ARM 설계는 물리적인 주소 공간을 총 64MB로 제한하여 26비트의 주소를 사용했다. 명령어는 4바이트(32비트) 길이이며 4바이트 경계에 맞춰야 했으므로 명령어 주소의 하위 2비트는 항상 0이었다. 이는 프로그램 카운터(PC)가 24비트만 필요하다는 것을 의미하며, 8비트 프로세서 플래그와 함께 단일 32비트 레지스터에 저장할 수 있었다. 이 결정으로 인터럽트 오버헤드가 절반으로 줄었다.

또 다른 변화 중 하나는 명령어 집합을 수정하여 페이지 모드 DRAM을 활용한 것이다. 페이지 모드는 DRAM 칩의 거의 같은 위치 또는 "페이지"에 있을 경우 후속 메모리 액세스 속도를 두 배로 높일 수 있었다. ARM 설계는 페이지 모드를 사용하여 단일 페이지에서 여러 레지스터를 채우거나 저장하는 데 사용할 수 있는 특수 벡터와 같은 메모리 액세스 명령어인 "S-사이클"을 추가했다. 이를 통해 사용 가능할 경우 메모리 성능이 두 배로 향상되었으며, 특히 그래픽 성능에 중요했다.

버클리 RISC 설계는 레지스터 윈도우를 사용하여 프로시저 호출에서 수행되는 레지스터 저장 및 복원 횟수를 줄였지만, ARM 설계는 이를 채택하지 않았다.

윌슨은 BBC BASIC으로 프로세서 시뮬레이션을 작성했는데, 이는 두 번째 6502 프로세서를 갖춘 BBC 마이크로에서 실행되었다. 이는 Acorn 엔지니어들이 올바른 방향으로 나아가고 있다는 확신을 주었다. 윌슨은 Acorn의 CEO인 허먼 하우저에게 더 많은 자원을 요청했고, 하우저는 승인하여 윌슨의 ISA를 기반으로 실제 프로세서를 설계할 소규모 팀을 구성했다. 공식 Acorn RISC Machine 프로젝트는 1983년 10월에 시작되었다.

BBC 마이크로용 ARM1 두 번째 프로세서
BBC 마이크로용 ARM1 두 번째 프로세서


Acorn은 ROM과 맞춤형 칩의 공급업체였던 VLSI 테크놀로지를 "실리콘 파트너"로 선택했다. Acorn은 설계를 담당하고 VLSI는 레이아웃과 생산을 담당했다. ARM 실리콘의 첫 번째 샘플은 1985년 4월 26일에 처음 수령되어 테스트되었을 때 제대로 작동했다. ARM1로 알려진 이 버전은 6MHz로 작동했다.

첫 번째 ARM 애플리케이션은 BBC 마이크로의 두 번째 프로세서로, 지원 칩(VIDC, IOC, MEMC) 개발을 완료하기 위한 시뮬레이션 소프트웨어 개발에 도움을 주었고 ARM2 개발에 사용된 CAD 소프트웨어의 속도를 높였다. Wilson은 그 후 ARM 어셈블리어로 BBC 베이직을 다시 작성했다. 명령어 세트 설계를 통해 얻은 심층적인 지식을 통해 코드를 매우 압축적으로 만들 수 있었기 때문에 ARM BBC 베이직은 모든 ARM 에뮬레이터에 대한 매우 좋은 테스트가 되었다.

6. 64비트 아키텍처 (ARMv8-A 이후)

ARMv8-A 아키텍처는 64비트 명령어 집합인 AArch64 (ARM64)를 지원한다.

👆
좌우로 밀어서 보기
아키텍처코어 비트 너비Arm Ltd. 코어제3자 코어프로필참조
ARMv8-A32응용
64/32, , , ,X-Gene, 엔비디아 Denver 1/2, Cavium ThunderX, AMD K12, 애플 Cyclone (A7)/Typhoon (A8, A8X)/Twister (A9, A9X)/Hurricane+Zephyr (A10, A10X), 퀄컴 Kryo, 삼성 M1/M2 ("Mongoose") /M3 ("Meerkat")응용
64응용
ARMv8.1-A64/32발표 예정Cavium ThunderX2응용
ARMv8.2-A64/32, , , , , , ,엔비디아 Carmel, 삼성 M4 ("Cheetah"), Fujitsu A64FX (ARMv8 SVE 512비트)응용
64, with 동시 멀티스레딩 (SMT), (also having e.g. ARMv8.4 Dot Product; made for safety critical tasks such as 첨단 운전자 지원 시스템 (ADAS))애플 Monsoon+Mistral (A11) (2017년 9월)응용
ARMv8.3-A64/32발표 예정응용
64발표 예정애플 Vortex+Tempest (A12, A12X, A12Z), Marvell ThunderX3 (v8.3+)응용
ARMv8.4-A64/32발표 예정응용
64ARM Neoverse V1애플 Lightning+Thunder (A13), 애플 Firestorm+Icestorm (A14, M1)응용
ARMv8.5-A64/32발표 예정응용
64발표 예정응용
ARMv8.6-A64발표 예정애플 Avalanche+Blizzard (A15, M2), 애플 Everest+Sawtooth (A16), A17응용
ARMv8.7-A64발표 예정응용
ARMv8.8-A64발표 예정응용
ARMv8.9-A64발표 예정응용
ARMv9.0-A64ARM Cortex-A510, ARM Cortex-A710, ARM Cortex-A715, ARM Cortex-X2, ARM Cortex-X3, ARM Neoverse E2, ARM Neoverse N2, ARM Neoverse V2응용
ARMv9.1-A64발표 예정응용
ARMv9.2-A64ARM Cortex-A520, ARM Cortex-A720, ARM Cortex-X4, ARM Neoverse V3, ARM Cortex-X925애플 M4, A18응용
ARMv9.3-A64발표 예정응용
ARMv9.4-A64발표 예정응용
ARMv9.5-A64발표 예정응용
ARMv9.6-A64발표 예정응용

7. 라이선싱

ARM 홀딩스는 자체적으로 ARM 아키텍처 기반 칩을 제조하지 않고, 지적 재산권(IP) 형태로 다른 회사에 라이선스를 제공한다.

8. 운영체제 지원

ARM 코어는 다양한 제품, 특히 PDA(개인용 디지털 보조기기)와 스마트폰에 널리 사용된다. 마이크로소프트의 서피스 1세대(Surface), 서피스 2 및 포켓 PC 기기(2002년 이후), 애플아이패드, 에이수스의 이이패드 트랜스포머 태블릿 컴퓨터, 그리고 여러 크롬북 노트북 등이 ARM 기반 컴퓨팅 기기의 예시이다. 이 외에도 애플의 아이폰 스마트폰과 아이팟 휴대용 미디어 플레이어, 캐논 파워샷 디지털 카메라, 닌텐도 스위치 하이브리드 및 보안 프로세서, 닌텐도 3DS 휴대용 게임 콘솔, 톰톰 턴바이턴 내비게이션 시스템 등에도 ARM 코어가 사용되었다.

트론스마트 MK908, 록칩 기반 쿼드코어 안드로이드 "미니 PC", 크기 비교를 위해 마이크로SD 카드를 옆에 놓았다.
트론스마트 MK908, 록칩 기반 쿼드코어 안드로이드 "미니 PC", 크기 비교를 위해 마이크로SD 카드를 옆에 놓았다.


2005년, Arm은 맨체스터 대학교의 컴퓨터 스피나커(SpiNNaker) 개발에 참여했으며, 이 컴퓨터는 ARM 코어를 사용하여 인간 뇌를 시뮬레이션했다.

또한 ARM 칩은 라즈베리 파이, 비글보드, 비글본, 판다보드 등과 같은 싱글보드 컴퓨터에도 사용되는데, 이는 ARM 칩이 매우 작고 저렴하며 전력 소모량이 매우 적기 때문이다.

9. 한국 내 현황 및 전망

삼성전자, LG전자 등 대한민국의 주요 기업들은 ARM 아키텍처 기반 프로세서를 개발하고 있으며, 특히 모바일 AP 시장에서 높은 경쟁력을 보이고 있다. 삼성전자의 엑시노스 시리즈는 갤럭시 스마트폰, 태블릿 등 다양한 제품에 탑재되고 있으며, 자체 CPU 코어 개발 (Mongoose, Meerkat 등)을 통해 성능 향상을 추구하고 있다. LG전자는 자체 모바일 프로세서 개발을 중단했지만, ARM 기반 칩셋을 활용하여 스마트폰, 스마트 TV 등 다양한 제품을 출시하고 있다. 퀄컴스냅드래곤 프로세서도 국내 스마트폰 제조사들에 의해 널리 채택되고 있다.

ARM 아키텍처는 5G, 인공지능, 사물 인터넷 등 미래 기술 발전에 따라 더욱 다양한 분야에서 활용될 것으로 전망된다. 특히, 저전력, 고성능 특성을 바탕으로 모바일 기기뿐만 아니라 서버, 자동차, 가전제품 등 다양한 분야로 적용 범위가 확대될 것으로 예상된다.