ARM 아키텍처

위키百科, 우리 모두의 百科事典.

ARM 아키텍처
設計 企業 및 設計者 ARM 홀딩스
비트 32비트 , 64비트
發表 1985年
救助 RISC
類型 레지스터 -레지스트링
分期 條件 코드 , 比較, 分期
64/32비트 아키텍처
發表 2011年 (13年 前) ( 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 또는 정수용) 또는 暗號화용
32비트 아키텍처 (Cortex)
버전 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/不動 小數點 (選擇事項)
32비트 아키텍처 (레거시)
버전 ARMv6, ARMv5, ARMv4T, ARMv3, ARMv2
인코딩 32비트 (例外: Thumb 擴張은 混在된 16비트, 32비트 命令語를 使用함)
엔디言 Bi (基本값은 리틀/little任) - ARMv3 以上 基準
擴張 ARM Thumb , Jazelle
레지스터
汎用 目的 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비트 곱셈 및 一部 곱셈 機能을 除外한 모든 一般 命令語들의 싱글 사이클 處理 等이 包含되어 있다.

ARM 코어 [ 編輯 ]

系列 아키텍처 버전 코어 機能 캐시 (命令語/데이터)/ 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 假想 住所

32비트 아키텍처 [ 編輯 ]

保安 擴張 [ 編輯 ]

트러스트존 (Cortex-A 프로파일) [ 編輯 ]

트러스트존 테크놀로지(TrustZone Technology)라는 이름으로 마케팅된 保安 擴張 機能은 ARMv6KZ 以上의 애플리케이션 프로파일 아키텍처에 包含된다. 하드웨어 基盤 接近 制御의 支援을 받는 2個의 假想 프로세서를 提供함으로써 SoC의 다른 專用 保安 코어를 追加하지 않으므로 費用을 낮출 수 있다.

ARMv8-M用 트러스트존 (Cortex-M 프로파일) [ 編輯 ]

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 타이젠 等이 使用되고있다.

같이 보기 [ 編輯 ]

各州 [ 編輯 ]

外部 링크 [ 編輯 ]