Loading AI tools
임베디드 기기에 많이 사용되는 RISC 프로세서 위키백과, 무료 백과사전
ARM 아키텍처(ARM architecture, 과거 명칭: Advanced RISC Machine, 최초 명칭: Acorn RISC Machine)는 임베디드 기기에 많이 사용되는 RISC 프로세서이다. 1983년 컴퓨터과학자 소피 윌슨(Sophie Wilson)(이 당시에는 이름이 로저 윌슨(Roger Wilson)이었으나 1994년 성전환 수술을 받아 개명했다.)과 스티브 퍼버(Steve Furber)를 주축으로 개발을 진행했다. 저전력을 사용하도록 설계하여 ARM CPU는 모바일 시장 및 싱글 보드 컴퓨터로 불리는 개인용 컴퓨터에서 뚜렷한 강세를 보인다.
발표 | 2011년 |
---|---|
버전 | Armv8-A, Armv8.1-A, Armv8.2-A, Armv8.3-A, Armv8.4-A, Armv8.5-A, Armv8.6-A |
인코딩 | AArch64/A64 및 AArch32/A32는 32비트 명령어를 사용하며, T32(Thumb-2)는 혼재된 16비트, 32비트 명령어를 사용함. ARMv7 사용자 공간 호환성.[1] |
엔디언 | Bi (기본값은 리틀/little임) |
확장 | SVE;SVE2;TME; 모두 필수 요건: Thumb-2, NEON, VFPv4-D16, VFPv4 구식: Jazelle |
레지스터 | |
범용 목적 | 31 × 64비트 정수 레지스터[1] |
부동소수점 | 32 × 128비트 레지스터[1] (스칼라 32, 64비트 FP 또는 SIMD FP 또는 정수용) 또는 암호화용 |
버전 | Armv8-R, Armv8-M, Armv8.1-M, Armv7-A, Armv7-R, Armv7E-M, Armv7-M, Armv6-M |
---|---|
인코딩 | 32비트 (예외: Thumb-2 확장은 혼재된 16비트, 32비트 명령어 사용) |
엔디언 | Bi (기본값은 리틀/little임) Cortex-M은 고정이며 중도 변경 불가. |
확장 | Thumb-2, 네온, Jazelle, DSP, Saturated, FPv4-SP, FPv5, 헬륨 |
레지스터 | |
범용 목적 | 15 × 32비트 정수 레지스터. R14(링크 레지스터)를 포함하지만 R15(PC)를 포함하지는 않음 |
부동소수점 | 최대 32 × 64비트 레지스터,[2] SIMD/부동 소수점 (선택사항) |
계열 | 아키텍처 버전 | 코어 | 기능 | 캐시 (명령어/데이터)/MMU | 일반적인 MIPS @ MHz |
---|---|---|---|---|---|
ARM1 | ARMv1 | ARM1 | 없음 | ||
ARM2 | ARMv2 | ARM2 | 곱하기 명령 (MUL) 추가 | 없음 | 4 MIPS @ 8 MHz 0.33 DMIPS/MHz |
ARMv2a | ARM250 | MEMC (MMU) 구현, 그래픽과 IO 프로세스. 아키텍처 2a:SWP와 SWPB 등의 스왑 명령추가. | 없음, MEMC1a | 7 MIPS @ 12 MHz | |
ARM3 | ARMv2a | ARM2a | ARM에 프로세스 캐시 최초 사용 | 4K 통합 | 12 MIPS @ 25 MHz 0.50 DMIPS/MHz |
ARM6 | ARMv3 | ARM60 | v3 아키텍처, 최초로 32 비트 메모리 지원(26 비트에 반대된) | 없음 | 10 MIPS @ 12 MHz |
ARM600 | 캐시와 코프로세스 버스(FPA10 부동소수점 모듈). | 4K 통합 | 28 MIPS @ 33 MHz | ||
ARM610 | 캐시, 코프로세서 버스 없음. | 4K 통합 | 17 MIPS @ 20 MHz 0.65 DMIPS/MHz | ||
ARM7 | ARMv3 | ARM700 | 8 KB 통합 | 40 MHz | |
ARM710 | 8KB 통합 | 40 MHz | |||
ARM710a | 8 KB 통합 | 40 MHz 0.68 DMIPS/MHz | |||
ARM7100 | SoC. | 8 KB 통합 | 18 MHz | ||
ARM7500 | SoC. | 4 KB 통합 | 40 MHz | ||
ARM7500FE | SoC. "FE" FPA와 EDO 메모리 컨트롤러 추가 | 4 KB 통합 | 56 MHz 0.73 DMIPS/MHz | ||
ARM7TDMI | ARMv4T | ARM7TDMI(-S) | 3-단계 파이프라인, Thumb | 없음 | 15 MIPS @ 16.8 MHz 63 DMIPS @ 70 MHz |
ARM710T | 8 KB 통합, MMU | 36 MIPS @ 40 MHz | |||
ARM720T | 8 KB 통합, MMU | 60 MIPS @ 59.8 MHz | |||
ARM740T | MPU | ||||
ARMv5TEJ | ARM7EJ-S | Jazelle DBX, 향상된 DSP 명령, 5-단계 파이프라인 | 없음 | ||
StrongARM | ARMv4 | SA-110 | 16 KB/16 KB, MMU | 203 MHz 1.0 DMIPS/MHz | |
SA-1110 | 16 KB/16 KB, MMU | 233 MHz | |||
ARM8 | ARMv4 | ARM810[3] | 5-단계 파이프라인, 고정된 예측 분기, 이중 대역폭 메모리 | 8 KB 통합, MMU | 84 MIPS @ 72 MHz 1.16 DMIPS/MHz |
ARM9TDMI | ARMv4T | ARM9TDMI | 5-단계 파이프라인 | 없음 | |
ARM920T | 16 KB/16 KB, MMU | 200 MIPS @ 180 MHz | |||
ARM922T | 8 KB/8 KB, MMU | ||||
ARM940T | 4 KB/4 KB, MPU | ||||
ARM9E | ARMv5TE | ARM946E-S | 향상된 DSP 명령 | 가변적, 메모리 밀착형 MPU | |
ARM966E-S | 캐시없음, TCMs | ||||
ARM968E-S | 캐시없음, TCMs | ||||
ARMv5TEJ | ARM926EJ-S | Jazelle DBX, 향상된 DSP 명령 | 가변적, TCMs, MMU | 220 MIPS @ 200 MHz, | |
ARMv5TE | ARM996HS | Clockless 프로세서, 향상된 DSP 명령 | 캐시없음, TCMs, MPU | ||
ARM10E | ARMv5TE | ARM1020E | VFP, 6-단계 파이프라인, 향상된 DSP 명령 | 32 KB/32 KB, MMU | |
ARM1022E | VFP | 16 KB/16 KB, MMU | |||
ARMv5TEJ | ARM1026EJ-S | Jazelle DBX, 향상된 DSP 명령 | 가변적, MMU or MPU | ||
XScale | ARMv5TE | 80200/IOP310/IOP315 | I/O 프로세서, 향상된 DSP 명령 | ||
80219 | 400/600 MHz | ||||
IOP321 | 600 BogoMips @ 600 MHz | ||||
IOP33x | |||||
IOP34x | 1-2 core, RAID Acceleration | 32K/32K L1, 512K L2, MMU | |||
PXA210/PXA250 | 응용분야 프로세서, 7-단계 파이프라인 | ||||
PXA255 | 32KB/32KB, MMU | 400 BogoMips @ 400 MHz | |||
PXA26x | default 400 MHz, up to 624 MHz | ||||
PXA27x | 응용분야 프로세서 | 32 KiB/32 Kb, MMU | 800 MIPS @ 624 MHz | ||
PXA800(E)F | |||||
Monahans | 1000 MIPS @ 1.25 GHz | ||||
PXA900 | |||||
IXC1100 | Control Plane 프로세서 | ||||
IXP2400/IXP2800 | |||||
IXP2850 | |||||
IXP2325/IXP2350 | |||||
IXP42x | |||||
IXP460/IXP465 | |||||
ARM11 | ARMv6 | ARM1136J(F)-S | SIMD, Jazelle DBX, VFP, 8-단계 파이프라인 | 가변적, MMU | 740 @ 532-665 MHz (i.MX31 SoC), 400-528 MHz |
ARMv6T2 | ARM1156T2(F)-S | SIMD, Thumb-2, VFP, 9-단계 파이프라인 | 가변적, MPU | ||
ARMv6KZ | ARM1176JZ(F)-S | SIMD, Jazelle DBX, VFP | 가변적, MMU+TrustZone | ||
ARMv6K | ARM11 MPCore | 1-4 코어 SMP, SIMD, Jazelle DBX, VFP | 가변적, MMU | ||
Cortex | ARMv7-A | Cortex-A8 | 응용분야 형상, VFP, NEON, Jazelle RCT, Thumb-2, 13-단계 슈퍼스칼라 파이프라인 | 가변적 (L1+L2), MMU+TrustZone | 2000 (2.0 DMIPS/MHz, 600 MHz부터 1 GHz) 까지 |
Cortex-A9 | 응용분야 형상, VFP, (NEON), Jazelle RCT and DBX, Thumb-2 | MMU+TrustZone | 2.5 DMIPS/MHz | ||
Cortex-A9 MPCore | As Cortex-A9, 1-4 코어 SMP | MMU+TrustZone | 2.0 DMIPS/MHz | ||
Cortex-A12 | 2.96 DMIPS/MHz | ||||
Cortex-A15 | 3.5 DMIPS/MHz | ||||
ARMv7-R | Cortex-R4(F) | 임베디드 형상, (FPU) | 가변적 캐시, MPU optional | 600 DMIPS | |
ARMv6-M | Cortex-M1 | FPGA와 연동, 마이크로컨트롤러 형상, Thumb-2 (BL, MRS, MSR, ISB, DSB, and DMB). | 없음, 선택적 메모리 밀착형. | ||
ARMv7-M | Cortex-M3 | 마이크로컨트롤러 형상, Thumb-2 only. | 캐시없음, (MPU) | 125 DMIPS @ 100 MHz | |
ARMv7E-M | Cortex-M4 | 마이크로컨트롤러 형상 | 125 DMIPS | ||
ARMv8-A | Cortex-A53 | 64비트 명령어 지원 | MMU, TrustZone, 64bit 가상 주소 | 2.3 DMIPS/MHz | |
Cortex-A57 | 64비트 명령어 지원 | MMU, TrustZone, 64bit 가상 주소 | 4.1 DMIPS/MHz | ||
Cortex-A72 | 64비트 명령어 지원 | MMU, TrustZone, 64bit 가상 주소 | |||
트러스트존 테크놀로지(TrustZone Technology)라는 이름으로 마케팅된 보안 확장 기능은 ARMv6KZ 이상의 애플리케이션 프로파일 아키텍처에 포함된다. 하드웨어 기반 접근 제어의 지원을 받는 2개의 가상 프로세서를 제공함으로써 SoC의 다른 전용 보안 코어를 추가하지 않으므로 비용을 낮출 수 있다.
TrustZone for ARMv8-M Technology로 마케팅되는 보안 확장 기능은 ARMv8-M 아키텍처에 도입되었다.
C 언어로 다음과 같은 코드를,
while (i != j) {
if (i > j)
i -= j;
else
j -= i;
}
ARM 어셈블리어로는 다음과 같이 작성할 수 있다.
loop: CMP Ri, Rj ; set condition "NE" if (i != j),
; "GT" if (i > j),
; or "LT" if (i < j)
SUBGT Ri, Ri, Rj ; if "GT" (Greater Than), i = i-j;
SUBLT Rj, Rj, Ri ; if "LT" (Less Than), j = j-i;
BNE loop ; if "NE" (Not Equal), then loop
현재 이클립스나 WAF 등을 통해서 운영체제와 상관없이 일정수준을 만족하는 기준에서 작성된 소스코드를 원하는 운영체제에 맞는 실행파일로 빌드를 지원하고있다. 한편 ARM社 역시 이러한 오픈소스와 작동하는 GNU Compiler (GCC) 툴체인 프로그램을 제공하고있다.[4][5]
이에 따라 특히 기존 인텔이나 AMD x86계열의 리눅스 프로그램들은 자유로이 싱글보드 컴퓨터에 포팅되어 사용할 수 있는 생태계가 형성되었다.
일부 마이크로컨트롤러유닛인 MCU타입 보드는 아두이노 IDE에서의 개발환경을 공식적으로 지원한다.[6][7]
MCU타입 보드인 cortex-M4칩을 장착한 ST社의 STM32 NUCLEO-F303K8는 오픈 소스 하드웨어인 아두이노 나노 보드와 헤더배치에서 호환되도록 설계되었다.[8][9] 한편 cortex-M4칩은 FPU를 포함한 32비트 CPU이다.
Cortex-A8을 채택한 10 cm X6cm 전후의 초소형 크기에 5V 전력을 사용하는 단일보드컴퓨터는 본격적으로 스마트폰이나 싱글보드컴퓨터등에 특화되어 사용되기 시작했다.[10][11]
운영체제로는 우분투계열의 우분투 메이트나 아크 리눅스등이 리눅스 OS로서 지원되며 리눅스 운영체제를 기반으로하는 안드로이드가 스마트폰등에서 그리고 다양한 임베디드 기기를 위해 웹OS나 타이젠등이 사용되고있다.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.