2019년 2월 24일 일요일

STM32F765BI 와 STM32H743BI 비교


STM32F765BI
STM32H743BI

ARM Cortex-M7 216 MHz
ARM Cortex-M7 400 MHz

Chrom-ART Accelerator
Chrom-ART Accelerator

ART Accelerator
JPEG Codec Acceleration

Cache I/D 16+16 Kbytes
Cache I/D 16+16 Kbytes
Floating point unit
FPU
DP-FPU
Nested vector interrupt controller (NVIC)
O
O
JTAG/SW debug/ETM
O
O
Memory Protection Unit (MPU)
O
O
ROP, PC-ROP
anti-tamper
X
O
AXI and Multi-AHB bus matrix
O
O
DMA
1x 16-channel
4x
True random number generator (RNG)
O
O
Flash
2-Mbyte dual bank
2-Mbyte dual bank
RAM
512-Kbyte SRAM
+ 16-Kbyte ITCM RAM
1-Mbyte SRAM incl.
64-Kbyte ITCM RAM

FMC/SRAM/NOR/NAND/SDRAM
FMC/SRAM/NOR/NAND/SDRAM
Dual Quad-SPI
O
O
backup SRAM
91-byte + 4-Kbyte
1024-byte + 4-Kbyte
OTP
1024-byte
X
System
Power supply
1.2 V regulator
POR/PDR/PVD
Main
USB
back regulators
POR/PDR/PVD/BOR
Multi-power domains
X
O
Xtal oscillators
32 kHz + 4~16 MHz
32 kHz + 4~48 MHz
Internal RC oscillators
32 kHz + 16 MHz
32 kHz + 4, 48 & 64 MHz
PLL
1
3
Clock control
O
O
RTC/AWU
O
O
SysTick timer
1
1
watchdogs
(independent and window)
2
2
I/Os
82 / 114 / 140 / 168
82 / 114 / 140 / 168
Cyclic redundancy check (CRC)
O
O
Unique ID
X
O
Control
AC timer
16bit motor control PWM synchronized
2x
16bit motor control PWM synchronized
2x
timers
10x 16bit
2x 32bit
10x 16bit
2x 32bit
Low-Power timer
1
5
High res. timer
X
16bit
Connectivity
TFT-LCD controller
X
O
HDMI-CEC
O
O
SPI
6
6
I2S
3
3
I2C
4
4
Camera interface
O
O
Ethernet MAC
10/100 with IEEE 1588
10/100 with IEEE 1588
MDIO slave
O
O
CAN
3x 2.0B
2x FDCAN
(Flexible Data rate)
USB 2.0 OTG FS/HS
1
1
USB 2.0 OTG FS
1
1
SDMMC
2
2
USART
4
4
UART
4
4
LIN
O
O
smartcard
O
O
IrDA
O
O
modem control
O
O
Low-power UART
x
1
SAI
(Serial audio interface)
2
4
SPDIF input
4
4
DFSDM
O
8 inputs / 4 filters
SWP
(Single Wire Protocol)
X
O
Analog
DAC
2x 12-bit, 2-channel
2x 12-bit, 2-channel
ADC
3x 12-bit
24 channels / 2.4 MSPS
3x 14-bit
20 channels / up to 2 MSPS
Temperature sensor
O
O
COMP
x
2
OpAmp
x
2

2019년 2월 20일 수요일

STM32F767VGT6 외부 핀의 기능 요약


신호이름 핀번호 I/O 기능
전원
VDD 11,27,50,75,100 power Digital Circuit Power Supply : 디지털 회로의 전원 및 CPU에 내장된 전압 레귤레이터의 입력 단자. 여기에는 1.7~3.6V가 입력되어야 하며, 이 전원 단자들은 4.7uF와 0.1uF 커패시터로 필터링 및 디커플링해주는 것이 좋다
VBAT 6 power Backup Power Supply : LSE, RTC, 백업 SRAM 등과 같은 배터리 백업 회로 부분의 전원. 여기에는 1.65~3.6V의 백업용 전원이 입력되어야 한다.
VSS 10,26,49,74,99 ground Digital Circuit Ground : 이 소자에서 모든 디지털 회로의 접지 단자
VREF+ 20 I Positive Refrence Voltage : A/D 컨버터의 기준 전압. 1.65~VDDA 범위의 안정된 전압이 입력되어야 한다.
VDDA 21 power Analog Circuit Power Supply : A/D 컨버터, D/A 컨버터, RC 오실레이터, PLL 등과 같은 아날로그 회로 부분의 전원. 여기에는 1.8~3.6V가 입력되어야 하며, 1uF와 0.01uF 커패시터로 필터링 및 디커플링해주는 것이 좋다.
VSSA 19 ground Analog Circuit Ground : 이 소자에서 모든 아날로그 회로의 접지 단자.
VCAP1
VCAP2
48
73
O Regulator External Capacitor 1/2 : 소자 내부의 전압 레귤레이터를 안정시키기 위하여 외부에 커패시터를 연결하기 위한 단자. 이 단자와 접지 사이에 2.2uF의 커패시터를 연결해야 한다.
클록 오실레이터
OSC_IN
OSC_OUT
12
13
I
O
HSE Oscillator Input / HSE Oscillator Output : 외부에 수정발진자를 접속하여 내부에서 HSE 클록을 발생하는 회로의 입력 단자. 여기에는 4~26MHz의 수정발진자를 접속하여, 접지와의 사이에 5~25pF의 커패시터를 접속한다. 수정발진자를 사용하는 대신에 외부에서 클록신호를 인하하려면 OSC_IN 단자에 접속해야 하며, 이 때 OSC_OUT 단자는 사용하지 않는다.
* OSC_IN 신호는 GPIO의 PH0와 기능을 겸하고 있으며, OSC_OUT 신호는 GPIO의 PH1과 기능을 겸하고 있다.
OSC32_IN
OSC32_OUT
8
9
I
O
LSE Oscillator Input / LSE Oscillator Output : 외부에 수정발진자를 접속하여 내부에서 LSE 클록을 발생하는 회로의 입력단자. 여기에는 32.768kHz의 수정발진자를 접속하며, 접지와의 사이에 5~16pF의 커패시터를 접속한다. 수정발진자를 사용하는 대신에 외부에서 클록신호를 인가하려면 OSC32_IN 단자에 접속해야 하며, 이 때 OSC32_OUT 단자는 사용하지 않는다.
* OSC32_IN 신호는 GPIO의 PC14와 기능을 겸하고 있으며, OSC32_OUT 신호는 GPIO의 PC15와 기능을 겸하고 있다.
리셋 및 부팅
NRST 14 I/O External System Reset : CPU 외부 시스템 리셋 신호. 이 신호는 내부에서 약 40k옴의 저항으로 VDD에 풀업되어 있으며 300ns 이상의 low enable 신호에 의하여 동작한다. 이 신호는 내부에서 워치독 타이머나 소프트웨어 리셋 등에 의하여 20us 이상의 리셋 출력 신호로 동작하기도 한다.
BOOT0 94 I Boot 0 : 부팅 모드를 결정하는 입력 단자. 리셋 후에 SYSCLK의 4번째 상승에지에서 이 단자 신호가 입력되어 아래와 같이 부팅 모드를 결정한다.
BOOT0 = 0 : 옵션 바이트 BOOT_ADD0[15:0]에 지정된 번지에서 부팅한다. (디폴트로 ITCM 영역의 플래시 메모리 0x0020 0000 번지)
BOOT0 = 1 : 옵션 바이트 BOOT_ADD1[15:0]에 지정된 번지에서 부팅한다. (디폴트로 시스템 메모리 영역의 0x0010 0000 번지)
JTAG 및 SWD
JTMS/SWDIO 72 I/O Test Mode Select 또는 Serial Wire Data Input/Output : JTAG 인터페이스의 JTMS 신호 또는 SWD 인터페이스의 직렬 데이터 입출력 신호. 내부에서 약 40k옴 정도의 저항으로 풀업되어 있다.
* 이 신호는 GPIO의 PA13 단자와 기능을 겸하고 있다.
JTCK/SWCLK 76 I Test Clock 또는 Serial Wire Clock : JTAG 인터페이스의 JTCK 신호 또는 SWD 인터페이스의 직렬 클록 신호. 내부에서 약 40k옴 정도의 저항으로 풀업되어 있다.
* 이 신호는 GPIO의 PA14 단자와 기능을 겸하고 있다.
JTDI 77 I Test Data Input : JTAG 인터페이스의 JTDI 신호. 내부에서 약 40k옴 정도의 저항으로 풀업되어 있다.
* 이 신호는 GPIO의 PA15 단자와 기능을 겸하고 있다.
JTDO 89 O Test Data Output : JTAG 인터페이스의 JTDO 신호. 내부에서 풀업 또는 풀다운되지 않고 플로팅 되어 있다.
* 이 신호는 GPIO의 PB3 단자와 기능을 겸하고 있다.
NJTRST 90 I Test Reset : JTAG 인터페이스의 NJTRST 신호. 내부에서 약 40k옴 정도의 저항으로 풀업되어 있다.
* 이 신호는 GPIO의 PB4 단자와 기능을 겸하고 있다.
병렬 I/O 포트
PA0
PA1
PA2
PA3
PA4
PA5
PA6
PA7
PA8
PA9
PA10
PA11
PA12
PA13
PA14
PA15
22
23
24
25
28
29
30
31
67
68
69
70
71
72
76
77
I/O *
I/O *
I/O *
I/O *
I/O
I/O
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
General-Purpose Input/Output Port A : 16비트의 병렬 I/O 포트. 16비트의 병렬 입출력은 물론이고, 비트 단위의 입출력이 가능하다.
 출력 모드로 설정할 때는 푸시풀(push-pull) 또는 약 40k옴(30k옴~50k옴) 정도의 풀업저항이나 풀다운 저항을 갖는 오픈 드레인(open drain)으로 설정할 수 있다.
 입력 모드로 설정할 때는 플로팅(floating), 약 40k옴(30k옴~50k옴) 정도의 풀업저항이나 풀다운 저항을 갖는 입력, 아날로그 입력 등으로 설정할 수 있다.
 각 핀은 16가지의 부수적인 기능을 수행할 수도 있다.
* 핀은 +5V 레벨의 로직 신호를 입력하는 것이 가능(5V-tolerant)하다.
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
PB8
PB9
PB10
PB11
PB12
PB13
PB14
PB15
34
35
36
89
90
91
92
93
95
96
46
47
51
52
53
54
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
General-Purpose Input/Output Port B : 16비트의 병렬 I/O 포트. 16비트의 병렬 입출력은 물론이고, 비트 단위의 입출력이 가능하다.
 출력 모드로 설정할 때는 푸시풀(push-pull) 또는 약 40k옴(30k옴~50k옴) 정도의 풀업저항이나 풀다운 저항을 갖는 오픈 드레인(open drain)으로 설정할 수 있다.
 입력 모드로 설정할 때는 플로팅(floating), 약 40k옴(30k옴~50k옴) 정도의 풀업저항이나 풀다운 저항을 갖는 입력, 아날로그 입력 등으로 설정할 수 있다.
 각 핀은 16가지의 부수적인 기능을 수행할 수도 있다.
* 핀은 +5V 레벨의 로직 신호를 입력하는 것이 가능(5V-tolerant)하다.
PC0
PC1
PC2
PC3
PC4
PC5
PC6
PC7
PC8
PC9
PC10
PC11
PC12
PC13
PC14
PC15
15
16
17
18
32
33
63
64
65
66
78
79
80
7
8
9
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
General-Purpose Input/Output Port C : 16비트의 병렬 I/O 포트. 16비트의 병렬 입출력은 물론이고, 비트 단위의 입출력이 가능하다.
 출력 모드로 설정할 때는 푸시풀(push-pull) 또는 약 40k옴(30k옴~50k옴) 정도의 풀업저항이나 풀다운 저항을 갖는 오픈 드레인(open drain)으로 설정할 수 있다.
 입력 모드로 설정할 때는 플로팅(floating), 약 40k옴(30k옴~50k옴) 정도의 풀업저항이나 풀다운 저항을 갖는 입력, 아날로그 입력 등으로 설정할 수 있다.
 각 핀은 16가지의 부수적인 기능을 수행할 수도 있다.
* 핀은 +5V 레벨의 로직 신호를 입력하는 것이 가능(5V-tolerant)하다.
PD0
PD1
PD2
PD3
PD4
PD5
PD6
PD7
PD8
PD9
PD10
PD11
PD12
PD13
PD14
PD15
81
82
83
84
85
86
87
88
55
56
57
58
59
60
61
62
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
General-Purpose Input/Output Port D : 16비트의 병렬 I/O 포트. 16비트의 병렬 입출력은 물론이고, 비트 단위의 입출력이 가능하다.
 출력 모드로 설정할 때는 푸시풀(push-pull) 또는 약 40k옴(30k옴~50k옴) 정도의 풀업저항이나 풀다운 저항을 갖는 오픈 드레인(open drain)으로 설정할 수 있다.
 입력 모드로 설정할 때는 플로팅(floating), 약 40k옴(30k옴~50k옴) 정도의 풀업저항이나 풀다운 저항을 갖는 입력, 아날로그 입력 등으로 설정할 수 있다.
 각 핀은 16가지의 부수적인 기능을 수행할 수도 있다.
* 핀은 +5V 레벨의 로직 신호를 입력하는 것이 가능(5V-tolerant)하다.
PE0
PE1
PE2
PE3
PE4
PE5
PE6
PE7
PE8
PE9
PE10
PE11
PE12
PE13
PE14
PE15
97
98
1
2
3
4
5
37
38
39
40
41
42
43
44
45
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
I/O *
General-Purpose Input/Output Port E : 16비트의 병렬 I/O 포트. 16비트의 병렬 입출력은 물론이고, 비트 단위의 입출력이 가능하다.
 출력 모드로 설정할 때는 푸시풀(push-pull) 또는 약 40k옴(30k옴~50k옴) 정도의 풀업저항이나 풀다운 저항을 갖는 오픈 드레인(open drain)으로 설정할 수 있다.
 입력 모드로 설정할 때는 플로팅(floating), 약 40k옴(30k옴~50k옴) 정도의 풀업저항이나 풀다운 저항을 갖는 입력, 아날로그 입력 등으로 설정할 수 있다.
 각 핀은 8가지의 부수적인 기능을 수행할 수도 있다.
* 핀은 +5V 레벨의 로직 신호를 입력하는 것이 가능(5V-tolerant)하다.
PH0
PH1
12
13
I/O *
I/O *
General-Purpose Input/Output Port H : 8비트의 병렬 I/O 포트. 기본적인 병렬 입출력은 물론이고, 비트 단위의 입출력이 가능하다.
 출력 모드로 설정할 때는 푸시풀(push-pull) 또는 약 40k옴(30k옴~50k옴) 정도의 풀업저항이나 풀다운 저항을 갖는 오픈 드레인(open drain)으로 설정할 수 있다.
 입력 모드로 설정할 때는 플로팅(floating), 약 40k옴(30k옴~50k옴) 정도의 풀업저항이나 풀다운 저항을 갖는 입력, 아날로그 입력 등으로 설정할 수 있다.
 각 핀은 16가지의 부수적인 기능을 수행할 수도 있다.
* 핀은 +5V 레벨의 로직 신호를 입력하는 것이 가능(5V-tolerant)하다.




STM32F7 시리즈 특징 요약



STM32F767VGT6를 중심으로 STM32F7 시리즈 마이크로컨트롤러 특징 요약
  1. 고성능 32비트 ARM Cortex-M7 코어를 갖는 제어용 마이크로 컨트롤러
    • 동작 온도가 -40도씨 ~ +85도씨의 범위일 때 최고 216MHz의 시스템 클록으로 동작
  2. 1024KB의 플래시 메모리와 512KB의 SRAM을 내장
    • 4개의 32비트 옵션 바이트를 가짐
  3. 16KB의 명령 캐시 메모리와 16KB의 데이터 캐시 메모리를 가짐
  4. 1.7 ~ 3.6V의 전원으로 동작
    • VBAT 단자를 통하여 별도로 공급되는 전원으로는 LSE, RTC, 4KB의 백업 SRAM등을 구동
  5. 내부에 1% 정밀도의 16MHz RC 오실레이터 HSI를 가짐
    • 4~26MHz의 크리스털을 외부에 접속하여 사용하는 오실레이터 회로 HSE를 가짐
  6. 각각 16채널까지 동작할 수 있는 2개의 DMA 제어기를 가짐
  7. 최고 180MHz의 높은 속도로 동작하는 82개의 병령 I/O 포트(GPIO)를 가짐
    • 이중 80개는 5V 로직이 사용 가능한 비트(5V-tolerant I/O)임
  8. 18개의 타이머
    • 1개의 SysTick 타이머
    • 13개의 16비트 타이머
    • 2개의 32비트 타이머
    • 2개의 워치독 타이머
  9. 27개의 직렬통신 포트
    • 4개의 USART
    • 4개의 UART
    • 4개의 SPI(3개의 I2S 기능을 포함)
    • 2개의 SAI(Serial Audio Interface)
    • 4개의 I2C
    • 2개의 SDMMC
    • 3개의 CAN 2.0B
    • 1개의 USB
    • 1개의 SPDIFRX
    • 1개의 MDIO
    • 1개의 HDMI CEC(Consumer Electronics Control)
  10. 12비트 분해능 및 최고 2MSPS의 변환 속도를 갖는 A/D 컨버터 3개
    • 외부에서 16개, 내부에서 3개의 아날로그 채널을 연결할 수 있음
  11. 12비트 분해능의 D/A 컨버터 2개
  12. 시계 및 캘린더 구현을 위한 RTC
  13. 32비트 CRC 계산기와 난수 발생기
  14. XGA(1024x768)까지 지원하는 TFT-LCD 컨트롤러
  15. 디지털 카메라 인터페이스 및 하드웨어 JPEG codec
  16. JTAG 및 SWD(Serial Wire Debug) 인터페이스를 사용한 디버그 기능 지원
  17. 100핀 LQFP(Low-profile Quad Flat Package)로 되어 있음
  18. 산업용(industrial)으로서 -40도씨 ~ +85도씨의 온도 점위에서 사용
    • -40도씨 ~ +105도씨 온도 범위에서 사용할 수 있는 버전도 있음

ARM Cortex-M0/M0+/M3/M4/M7의 특성 비교

ARM Cortex-M0/M0+/M3/M4/M7의 특성 비교
. Cortex-M0 Cortex-M0+ Cortex-M3 Cortex-M4 Cortex-M7
Architecture Version ARMv6-M
(Von Neuman)
ARMv6-M
(Von Neuman)
ARMv7-M
(Harvard>
ARMv7E-M
(Harvard)
ARMv7E-M
(Harvard)
Instruction Set Thumb,
Thumb-2
Thumb,
Thumb-2
Thumb,
Thumb-2
Thumb,Thumb-2,
DSP, SIMD, FPU
Thumb,Thumb-2,
DSP, SIMD, FPU
Dhrystone DMIPS/MHz 0.87 0.95 1.25 1.27 2.14
CoreMark/MHz 2.33 2.46 3.34 3.40 5.04
Bus Protocol AHB Lite AHB Lite AHB Lite, APB AHB Lite, APB AHB Lite, AXI, APB
Pipeline Stage 3 2 3 3 6
Instruction/Data Cache No No No No 4~64KB/4~64KB
TCM(Instruction/Data) No No No No 0~16KB/0~16KB
Number of Interrupts 1~32 +NMI 1~32 + NMI 1~240 + NMI 1~240 + NMI 1~240 + NMI
Interrupt Priority 4 4 8~256 8~256 8~256
Debug JTAG, SWD JTAG, SWD JTAG, SWD JTAG, SWD JTAG, SWD
Memory Protection Unit No No Yes(option) Yes(option) Yes(option)
Bit Banding Support No No Yes Yes Yes
Single Cycle Multiply Yes(option) Yes(option) Yes Yes Yes
Hardware Divide No No Yes Yes Yes
Single Cycle DSP/SIMD No No No Yes Yes
Floation Point Hardware No No No single precision single/double precision
CMSIS support Yes Yes Yes Yes Yes
Power Consumption 12.5uW/MHz 9.8uW/MHz 31uW/MHz 32.82uW/MHz 53uW/MHz
Anouncement Year 2009 2012 2004 2010 2014



ARM 마이크로프로세서 공부 정리



  • ARM의 역사와 아키텍쳐 버전별 주요 특징
버전 발표
연도
특징 적용 제품군
ARMv1 1985 최초의 상업용 RISC 프로세서, 26비트 어드레스 사용 ARM1
ARMv2 1987 32비트 곱셈기, 온칩 캐시, 32비트 보조 프로세서 지원 ARM2, ARM3
ARMv3 1992 MMU 지원, 32비트 어드레스 사용, 64비트 MAC ARM6, ARM7
ARMv4 1996 Thumb 모드 명령 추가, 26비트 어드레스 기능 폐지 ARM7TDMI, ARM8,
ARM9TDMI, StrongARM
ARMv5 1999 MAC 향상, DSP 및 Jazelle 명령 확장 기능 지원 ARM9E/J, ARM10, Xscale
ARMv6 2001 AIMD, Thumb-2, TrustZone, 멀티프로세싱 기능 지원 ARM11, ARM11 MP Core
ARMv7 2004 제품의 브랜드명을 Cortex로 통일하고, 용도에 따라 3가지 코어 제품군으로 나눔 Cortex-A, Cortex-R, Cortex-M



  • ARM의 제품군별 주요 특징

ARM7 ARM9 ARM10 ARM11
발표 연도 1993 1996 1998 2002
파이프라인 3단계 5단계 6단계 8단계/9단계
최고 동작 속도 133 MHz 250 MHz 325 MHz 550 MHz
소비전력 0.25mW/MHz 0.2mW/MHz 0.5mW/MHz 0.6mW/MHz
명령처리 속도 0.9 MIPS/MHz 1.1 MIPS/MHz 1.35 MIPS/MHz 1.35 MIPS/MHz
기본 아키텍쳐 폰노이만 구조
온칩 캐시
수정된 하버드 구조
명령캐시/데이터캐시
수정된 하버드 구조
명령캐시/데이터캐시
수정된 하버드 구조
명령캐시/데이터캐시
곱셈기 32x8 32x8 32x16 32x16
적용 제품 코어 ARM720T
ARM7EJ-S
ARM7TDMI
ARM7TDMI-S
ARM920T
ARM922T
ARM926EJ-S
ARM946E-S
ARM1020E
ARM1022E
ARM1026EJ-S
ARM1136J-S
ARM1136JF-S
ARM1176JZ-S
ARM1176JZF-S



  • 주요 특징
    1. ARM사는 반도체 제조회사가 아니다.
      • 자신이 설계한 ARM 코어를 IP(Intellectual Property) 라이센스 형태로 제공
      • 이 라이센스를 계약한 반도체 회사는 자사에서 설계한 I/O회로를 추가하여 제품 모델 생산 판매
      • ARM사도 에뮬레이터와 같은 하드웨어 개발 툴이나 C컴파일러 같은 소프트웨어 개발툴은 자사 제품을 가짐
    2. 가격이 싸다
      • 구조가 간단하고 라이센스로 받아 사용하므로 개발 비용이 적게듦
      • ARM은 전세계 32비트 임베디드 RISC 시장의 약 75% 장악
    3. 소비전력이 적다.
      • 빠른 속도에서 발열이 적다
      • 모바일 기기에서 각광받음
    4. 칩 면적(die size)이 작다
      • 적은 트랜지스터의 수를 사용하고 초미세 공정으로 칩 면적이 작게 설계
    5. 고성능 32비트 RISC 프로세서이다
      • RISC 구조
      • 캐시 메모리(cache memory) 내장
      • 파이프라인 처리방식 (평균적으로 1사이클에 1명령)
      • 초기에는 폰 노이만(Von Neumann) 구조
      • ARM7 제품군부터는 수정된 하버드 구조(Modified Harvard Architecture)
        • 명령 페치와 데이터 액세스를 동시에 수행할 수 있도록 개선
      • 명령처리 구조를 단순화
        • 모든 데이터 처리나 연산 명령은 내부 레지스터를 중심으로 이루어짐
        • 레지스터와 메모리 사이의 데이터 이동은 별도의 로드(load) 및 스토어(store) 명령으로 수행
    6. 많은 범용 레지스터와 효율적인 명령 세트를 가짐
      • 32비트의 고정 길이 명령을 가짐
      • 명령의 종류가 적음
      • 연산 명령보다는 데이터 이동이나 제어처리 명령이 많음
      • 효율적인 명령 세트를 가짐
        • 대부분의 명령에서 조건부 실행이 가능
      • 16비트의 Thumb 명령
        • 메모리에서 코드의 집적 효율을 높임
        • Cortex-M3 모델부터 Thumb-2 명령을 사용 (Thumb 명령 개선)
    7. 명령 세트를 확장하기가 매우 용이한 구조(ISA : Instruction Set Architecture)
      • 보조 프로세서를 이용한 명령 세트 확장이 용이
        • DSP 보조 프로세서나 VFP 부동소수점 연산 보조 프로세서 등이 이에 해당
      • 내부 구조가 철저하게 모듈식
      • 캐시 메모리나 MMU/MPU 또는 Jazelle, TrustZone 등의 기능을 추가로 확장하는 것이 매우 용이
      • Cortex-M4
        • DSP 기능과 VFP 부동소수점 연산장치를 내장하고 있는 Cortex-M3의 상위 모델
      • Cortex-M7
        • M4를 더욱 고속화한 모델
    8. 엔디안 모드 지원
      • 바이트 머신(byte machine)
        • 각 메모리 번지에 바이트 단위로 명령 코드나 데이터가 저장
      • 리틀 엔디안(little endian) 지원
        • 4바이트의 워드가 낮은 번지에 LSB(Least Significant Byte)부터 차례로 저장
      • 빅 엔디안(big endian) 지원
        • 4바이트의 워드가 낮은 번지에 MSB(Most Significant Byte)부터 차례로 저장
      • Cortex-M 모델들은 리틀 엔디안 방식으로 고정


  • ARM의 AMBA 버스
    • AMBA: Advanced Microcontroller Bus Architecture
    • AHB: Advanced High-performance Bus
    • ASB: Advanced System Bus
    • APB: Advanced Peripheral Bus



ARM Cortex 제품군의 종류 및 특징
ARM
패밀리
ARM
아키텍쳐
ARM
코어
특징 처리속도
Cortex-A ARMv7-A Cortex-A5 VFP, NEON, Jazelle RCT, Thumb/Thumb-2, 1~4 cores 1.57 DMIPS/MHz per core
Cortex-A8 (2005년) VFP, NEON, Jazelle RCT, Thumb/Thumb-2, 13-stage superscalar pipeline 2.0 DMIPS/MHz
Cortex-A9 MPCore (2007년) Application profile, VFPv3 FPU, NEON, Thumb/Thumb-2, Jazelle RCT/DBX, out-of-order speculative issue superscalar, 1~4 SMP cores 2.50 DMIPS/MHz per core
Cortex-A15 MPCore (2010년) Application profile, VFPv4 FPU, NEON, Thumb-2, Jazelle RCT/DBX, out-of-order speculative issue superscalar, Large Physical Address Extensions(LPAE), Hardware virtualization, 1~4 SMP cores 3.5 ~ 4.1 DMIPS/MHz per core
Cortex-R ARMv7-R Cortex-R4
Cortex-R4F
Real-time profile, Thumb-2, FPU 1.50 DMIPS/MHz
Cortex-M ARMv6-M Cortex-M0
Cortex-M0+
(2009년) Microcontroller profile, Thumb-2 subset.
Hardware multiply instruction.(Cortex-M0+는 2012년)
0.9 DMIPS/MHz
Cortex-M1 (2007년) FPGA targeted, Microcontroller profile, Thumb-2 subset. 0.8 DMIPS/MHz
ARMv7-M Cortex-M3 (2004년) Microcontroller profile, Thumb/Thumb-2.
Hardware multiply and divide instruction
1.25 DMIPS/MHz
ARMv7E-M Cortex-M4
Cortex-M4F
(2010년) Microcontroller profile, both Thumb/Thumb-2, FPU. Hardware MAC, SIMD and divide instructions 1.25 DMIPS/MHz
1.27 DMIPS/MHz
ARMv7E-M Cortex-M7 (2014년) single and double precision FPU. 0~64KB instruction cache and data cache, 6-stage superscalar 2.14 DMIPS/MHz