|
|
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월 24일 일요일
STM32F765BI 와 STM32H743BI 비교
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 시리즈 마이크로컨트롤러 특징 요약
- 고성능 32비트 ARM Cortex-M7 코어를 갖는 제어용 마이크로 컨트롤러
- 동작 온도가 -40도씨 ~ +85도씨의 범위일 때 최고 216MHz의 시스템 클록으로 동작
- 1024KB의 플래시 메모리와 512KB의 SRAM을 내장
- 4개의 32비트 옵션 바이트를 가짐
- 16KB의 명령 캐시 메모리와 16KB의 데이터 캐시 메모리를 가짐
- 1.7 ~ 3.6V의 전원으로 동작
- VBAT 단자를 통하여 별도로 공급되는 전원으로는 LSE, RTC, 4KB의 백업 SRAM등을 구동
- 내부에 1% 정밀도의 16MHz RC 오실레이터 HSI를 가짐
- 4~26MHz의 크리스털을 외부에 접속하여 사용하는 오실레이터 회로 HSE를 가짐
- 각각 16채널까지 동작할 수 있는 2개의 DMA 제어기를 가짐
- 최고 180MHz의 높은 속도로 동작하는 82개의 병령 I/O 포트(GPIO)를 가짐
- 이중 80개는 5V 로직이 사용 가능한 비트(5V-tolerant I/O)임
- 18개의 타이머
- 1개의 SysTick 타이머
- 13개의 16비트 타이머
- 2개의 32비트 타이머
- 2개의 워치독 타이머
- 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)
- 12비트 분해능 및 최고 2MSPS의 변환 속도를 갖는 A/D 컨버터 3개
- 외부에서 16개, 내부에서 3개의 아날로그 채널을 연결할 수 있음
- 12비트 분해능의 D/A 컨버터 2개
- 시계 및 캘린더 구현을 위한 RTC
- 32비트 CRC 계산기와 난수 발생기
- XGA(1024x768)까지 지원하는 TFT-LCD 컨트롤러
- 디지털 카메라 인터페이스 및 하드웨어 JPEG codec
- JTAG 및 SWD(Serial Wire Debug) 인터페이스를 사용한 디버그 기능 지원
- 100핀 LQFP(Low-profile Quad Flat Package)로 되어 있음
- 산업용(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 |
- 주요 특징
- ARM사는 반도체 제조회사가 아니다.
- 자신이 설계한 ARM 코어를 IP(Intellectual Property) 라이센스 형태로 제공
- 이 라이센스를 계약한 반도체 회사는 자사에서 설계한 I/O회로를 추가하여 제품 모델 생산 판매
- ARM사도 에뮬레이터와 같은 하드웨어 개발 툴이나 C컴파일러 같은 소프트웨어 개발툴은 자사 제품을 가짐
- 가격이 싸다
- 구조가 간단하고 라이센스로 받아 사용하므로 개발 비용이 적게듦
- ARM은 전세계 32비트 임베디드 RISC 시장의 약 75% 장악
- 소비전력이 적다.
- 빠른 속도에서 발열이 적다
- 모바일 기기에서 각광받음
- 칩 면적(die size)이 작다
- 적은 트랜지스터의 수를 사용하고 초미세 공정으로 칩 면적이 작게 설계
- 고성능 32비트 RISC 프로세서이다
- RISC 구조
- 캐시 메모리(cache memory) 내장
- 파이프라인 처리방식 (평균적으로 1사이클에 1명령)
- 초기에는 폰 노이만(Von Neumann) 구조
- ARM7 제품군부터는 수정된 하버드 구조(Modified Harvard Architecture)
- 명령 페치와 데이터 액세스를 동시에 수행할 수 있도록 개선
- 명령처리 구조를 단순화
- 모든 데이터 처리나 연산 명령은 내부 레지스터를 중심으로 이루어짐
- 레지스터와 메모리 사이의 데이터 이동은 별도의 로드(load) 및 스토어(store) 명령으로 수행
- 많은 범용 레지스터와 효율적인 명령 세트를 가짐
- 32비트의 고정 길이 명령을 가짐
- 명령의 종류가 적음
- 연산 명령보다는 데이터 이동이나 제어처리 명령이 많음
- 효율적인 명령 세트를 가짐
- 대부분의 명령에서 조건부 실행이 가능
- 16비트의 Thumb 명령
- 메모리에서 코드의 집적 효율을 높임
- Cortex-M3 모델부터 Thumb-2 명령을 사용 (Thumb 명령 개선)
- 명령 세트를 확장하기가 매우 용이한 구조(ISA : Instruction Set Architecture)
- 보조 프로세서를 이용한 명령 세트 확장이 용이
- DSP 보조 프로세서나 VFP 부동소수점 연산 보조 프로세서 등이 이에 해당
- 내부 구조가 철저하게 모듈식
- 캐시 메모리나 MMU/MPU 또는 Jazelle, TrustZone 등의 기능을 추가로 확장하는 것이 매우 용이
- Cortex-M4
- DSP 기능과 VFP 부동소수점 연산장치를 내장하고 있는 Cortex-M3의 상위 모델
- Cortex-M7
- M4를 더욱 고속화한 모델
- 엔디안 모드 지원
- 바이트 머신(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 |
피드 구독하기:
글 (Atom)
