도전2022
arm 관련 정리 된 곳 본문
좋은 곳 하나를 찾았다.
http://m50008sc.springnote.com/pages/3045336 에 있는 내용.
잘 정리 된 여러 내용이 있다.
ARM 프로세서 에 대한 자료 모음
- ARM_기반_모바일_프로세서의_구조_및_특징.pdf
- ARM사의_CortexTM-M3의_특성_및_최신_동향.pdf
- Luminary_Micro社의Cortex-M3_Quick_Start(下).pdf
- HMS39C7092K[1].pdf : ARM7TDI 내장 마이컴 한글 메뉴얼
ARM 소개
1990년 ARM Limited. 설립 배경.
- ACORN Computer와 Apple Computer의 합작.
- Cambridge. UK.
- 12 Engineers & CEO.
ARM 프로세스는 80년대 중반에 Acorn Computer Group에 의해서 고안되고 제조됨. Acorn RISC Machine에서 Advanced RISC Machine으로 변화 됨.
ARM 설립 목적.
- ACORN RISC 머신의 RISC 칩을 더욱 발전시켜나가려는 목적.
- ARM Architecture는 처음에는 ACORN 아르키메데스에 쓰였었다.
32Bit RISC Intellectual Property(IP) 제공.
- ARM은 Silicon을 제조 판매하지 않는다. ARM사는 직접 반도체를 제조하여 판매하는 것이 아니라 설계한 Processor를 Hard Macrocell(Library 형태) 또는 Synthesizable core(Source [RTL]형태)로 제공한다.
- 반도체 제조회사 또는 SoC 제조사에서는 ARM사로부터 제공받은 ARM Core와 주변장치를 추가하여 SoC(System on Chip)를 만들어 사용자에게 판매하거나 자체 제품에서 사용한다.
RISC / CISC 비교.
Hard Macrocell / Synthesizable Core 비교.
ARM Architecture
- ARM Core의 기본 구조를 일컫는 말.
- 처리되는 데이터의 사이즈 / 명령어의 구조 / 레지스터 등과 같은 추상적인 구성 및 동작 원리.
ARM architecture의 특징.
- 32bit RISC Architecture.
- 강력하고, 간단한 명령어 지원.
: 32bit ARM Command / 16bit Thumb Command Mode 지원 .
: Jazelle Core를 확장하면, 8bit Java byte Code 실행 가능.
- Big/Little Endian 지원.
- FIQ 지원
- Pipeline 지원
ARM Core 또는 ARM Processor Core.
- ARM Architecture의 기본 원리를 이용하여 구현한 프로세서의 핵심 부분을 지칭함.
[16bit Thumb Command Mode가 추가된 사유]
32bit 명령어 체계에서는 Code Size가 증가하게된다. 그렇기 때문에 16bit 명령어 체계를 추가해서 약 65% 수준으로 Code Size를 줄일 수 있다.
[Jazelle]
JAVA H/W Accelerator. [자바 하드웨어 가속기]
- Little-Endian, Intel 계열의 CPU와 같이 하위 바이트를 메모리의 하위 어드레스에 위치하는 방식.
- Big-Endian, Motorola 계열의 CPU와 같이 상위 바이트의 메모리를 하위 어드레스에 위치하는 방식.
[FIQ] (Fast Interrupt ReQuest.)
빠른 인터럽트 처리를 위해 별도의 FAST 인터럽트 방식을 제공.
[Pipeline]
프로세서의 모든 부분들가 메모리 장치들이 계속적으로 쉬지 않고 동작 한다.
1. 하나의 명령이 수행되는 동안, 2. 다음 수행할 명령을 Decode하고, 3. 그 다음 수행되어야할 명령을 메모리로부터 읽어 온다.
ARM Architecture 종류.(v4, v4T, v5TE, v5TEJ, v6 등… )
[ARM 아키텍처의 계보]
1. ARMv4 아키텍처는 32비트 주소 영역에서 32비트 ISA(Instruction Set Architecture) 동작이 가능하다. 16비트 Thumb 명령어 셋을 탑재한 ARMv4T 아키텍처는 32비트 코드의 이점을 그대로 살리고, 메모리 공간을 35% 이상 절약할 수 있도록 해주었다.
2. ARMv5TE(1999년) 아키텍처는 개선된 thumb 아키텍처와 ‘Enhanced’ DSP 명령어 셋을 ARM ISA에 추가하였다. 이러한 Thumb의 변화에는 소수의 명령어 추가와 함께 ARM/Thumb 인터워킹(interworking)의 개선, 컴파일 성능의 대폭적인 향상, ARM/Thumb 루틴의 혼합 사용, 코드 크기와 성능에 대한 균형도 포함되어 있다. 또한 ‘Enhanced’ DSP 명령어들은 복잡한 수치연산에 있어 70%의 성능개선을 보여주었다.
3. ARMv5TEJ(2000년) 아키텍처에는 Jazelle(자바 하드웨어 가속기) 확장명령어가 추가되었으며, 이로써 자바 가속 기술을 탑재한 아키텍처가 탄생하게 된다. Jazelle이 탄생함에 따라 가속 기술을 사용하지 않은 JVM(Java Virtual Machine)보다 속도 면에서 8배가 향상되었으며, 소비전력의 측면에서도 80%를 줄일 수 있게 된다.
4. ARMv6(2001년) 아키텍처가 발표되면서 여러 방면에서 기능 개선이 이루어졌다. 특히 메모리 시스템, 예외 처리의 개선, 멀티프로세싱 환경을 위한 더 많은 지원 등이 이에 해당한다. ARMv6 아키텍처에는 SIMD(Single Instruction Multiple Data) 소프트웨어 실행을 지원하는 미디어 명령이 포함되어 있으며,
SIMD 명령들은 오디오 및 비디오 코덱을 포함하는 응용 프로그램들의 사용 확대를 위해 최적화되었다.
5. ARM1136J(2002년) (F)-8 코어. 스트롱암 CPU는 DEC(Digital Equipment Coporation)에 의해서 ARM과 함께 개발되었다. 이것이 최초의 modified-Harvard 아키텍처(명령어 캐시와 데이터 캐시를 분리해서 사용)를 채용한 제품이며, modified-Harvard 아키텍처로 ARM의 쓰기 처리 능력의 고속화가 가능하게 되었다. 스트롱암의 주요 특징 중에는 5단 파이프라인의 채용, 64비트 곱셈 및 일부 곱셈 기능을 제외한 모든 일반 명령어들의 싱글 사이클 처리 등이 포함되어 있다.
인텔의 ARM 칩셋들에는 Xscale과 함께 SA11xx 시리즈의 제품들이 있다. 이중 SA11xx 시리즈는 오히려 스트롱암으로 더 잘 알려져 있기도 하다. 스트롱암 프로세서는 휴대용 전화기와 가전제품 등의 설계에 적합하며, 현재 컴팩의 iPAQ H3600 포켓 PC, HP의 조나다 핸드헬드 PC, 팜(Palm) PDA 및 많은 제품들에 사용되었다. 인텔이 개발한 SA110은 일반적인 표준 임베디드 프로세서이며, 팜 크기의 기기를 위해 개발된 SA1100와 SA1111 프로세서는 인텔이 사용하는 ARM 코어의 ASIC 패밀리의 공식 명칭이 되었다(SA는 StrongARM의 약어이다)
SIMD (Single Instruction Multiple Data) : 병렬 프로세서의 한 종류로, 하나의 명령어로 여러 개의 값을 동시에 계산하는 방식이다. 벡터 프로세서에서 많이 사용되는 방식으로, 비디오 게임 콘솔이나 그래픽 카드와 같은 분야에 자주 적용되며 MMX에도 사용되었다.
ARM Family.
ARM Family 분류. (ARM7, ARM9, ARM10, ARM11, Strong ARM, XScale)
Ex] ARM7TDMI : T : Thumb Mode (16비트 압축 Mode)
D : Debug Mode
M : Multiplication (32비트 하드웨어 곱셈기)
I : ICE (In Circuit Emulation)
[ARM7] 3단계 Pipeline. fetch, decode, execute
[ARM9] 5단계 Pipeline. fetch, decode, execute, memory, write
[ARM11] 8 단계 Pipeline. 40% 성능 향상, 8개의 다른 Processor를 동시에 처리가능.
[xScale Family의 Pipeline 수] 명령어에 따라 가변적이다.
Von-neumann
- 데이타 메모리와 프로그램 메모리가 구분되어있지 않고 하나의 버스를 가지고 있는 구조.
- 명령어와 데이터를 위한 메모리 인터페이스가 하나
- 명령어를 읽을 때 데이터를 읽거나 쓸 수 없다
- IBM 계열 PC(개인용 PC), ARM7 등
Havard
- 데이타 메모리와 프로그램 메모리가 분리되어 각각의 어드레스와 데이타 버스를 가지고 있는 구조.
- 명령어를 위한 메모리 인터페이스와 데이터를 위한 메모리 인터페이스가 분리
- 명령어를 읽을 때 데이터를 읽거나 쓸 수 있어 성능이 우수
- 버스 시스템이 복잡하여 설계가 복잡 4. ARM9, ARM10, XScale 등
ARM/Thumb Interwork.
- ARM State에서 Thumb State로 Thumb State에서 ARM State로 상태가 전환되는 작업.
- BX 명령에 의해서 이루어진다.
[ARM State]
32bit ARM 명령을 수행하는 상태.
Reset 및 SWI, IRQ, FIQ, UNDEF, ABORT와 같은 Exception 발생시 프로세서는 무조건 ARM State가 된다.
[Thumb State]
16bit Thumb 명령을 수행하는 상태.
[BX] (Branch And Exchange)
ARM 모드와 THUMB 모드를 변화하느데 사용된다.
BLX{<cond>} <Rm>
Rm의 bit 0의 값으로 CPSR의 THUMB 모드를 설정한다.
Un-aligned Access.
- 기존의 ARM Architecture v4T, v5T, v5TE 등은 지원되지 않는다. Data Abort 발생.
- ARM Architecture v6에서는 지원한다. ARM11 부터 지원.
ARM Processor Roadmap
[ARM 프로세서의 특징]
1. 멀티미디어, 통신분야에서 요구되는 고성능의 구현.
2. 휴대용 제품에서 요구되는 저전력의 구현.
3. 작은 다이 싸이즈를 통한 저가격의 구현.
ARM Instruction Set Architecture.
The ARM processor architecture provides support for the 32-bit ARM and 16-bit Thumb® Instruction Set Architectures (ISAs)
along with architecture extensions to provide support for Java acceleration (Jazelle™),security (TrustZone™), Intelligent Energy Manager (IEM), SIMD, and NEON™ technologies.
ARM Command Mode = 모든 명령어들이 32비트 길이를 가진다. Thumb Command Mode = 가장 보편적으로 사용되는 명령어들을 16비트 포맷으로 압축한다.
[Thumb®/®-2] - 16bit Thumb Command Mode를 사용하여 Code Size를 줄일 수 있다. 향상된 성능과 에너지 효율 및 코드 밀도를 제공.
[VFP v2/v3] VFP - ARM Architecture의 “Vector Floating Point Architecture and Instruction Set”을 의미함.Vector Floating Point Unit : DSP형 명령어 처리기. 이미징 애플리케이션의 성능을 향상시킴.
[Jazelle®] (Java) - JAVA H/W Accelerator. [자바 하드웨어 가속기]
[Multiprocessor Support] - Multi Processor 지원.
[TrustZone] - 물리적 주소 공간을 'Secure 영역'과 'Non-Secure 영역'으로 나눌 수 있어개방형 운영시스템 안에서 실행되는 필수 애플리케이션을 보다 강력하게 보호해준다. => 안전 거래 및 디지털 저작권 관리 가능.
[SIMD] (Single Instruction Multi Data) - 병렬 프로세서의 한 종류로, 하나의 명령어로 여러 개의 값을 동시에 계산하는 방식이다. 벡터 프로세서에서 많이 사용되는 방식으로, 비디오 게임 콘솔이나 그래픽 카드와 같은 분야에 자주 적용되며 MMX에도 사용되었다.
[NEON™] Adv SIMD (Advanced Single Instruction Multi Data) - H.264나 MP3와 같은 미디어 코덱을 가속화하는 신호 처리 확장 기술.
[VFP v3 & NEON™ Adv SIMD] - MEDIA와 DSP 기능 향상.
[Dynamic Compiler Support] - 실행 환경에서 메모리 사용 기능 향상.
[JAVA에서의 동적 (Just-in-time) 또는 정적 (Ahead-of-time) 컴파일]
AOT(Ahead-of-time) : 실재 실행시 필요 없는 모듈까지 포함한다. JIT 대비 수행속도는 빠르나 메모리 사용이 효율성이 낮다.
JIT(Just-in-time) : 실행되는 도중에 모듈이 필요할 경우면 따로 읽어서 시스템에 적재하는 방식. AOT 대비 수행속도는 다소 느리지만 메모리의 효율성이 높다.
[IEM] (Intelligent Energy Manager)
프로세서의 전력 소비를 억제하여 소비전력을 최소화 할 수 있다.
ARMv7을 이용한 ARM Core는 Cortex라는 이름을 가지고 출시되었다.
- Cortex 프로세서 제품군은 ARM 파트너들에게 성능 및 기능별로
특정 시장 및 애플리케이션 사용에 최적화된 다양한 솔루션을 제공한다.
이는 특정 시장 애플리케이션 및 성능 요건에 맞춰 기술을 개발하는 ARM의 전략을 보여주는 것이다.
- ARM Cortex 제품군은 3가지 시리즈로 구성되어 있는데,
모두 비용에 민감한 임베디드 시장에서 최상의 성능을 실현하기 위해 ARMv7 아키텍처를 따르며,
Thumb 명령어 세트를 실행한다.
ARM Cortex Family.
- ARM Cortex-A(Application) Series.
차세대 고성능 시스템을 위한 기술 채용.
Windows Mobile, Linux, Symbian 등의 개방형 운영체제.
- ARM Cortex-R(Real-time) Series.
고급 임베디드 시스템.
프린터, HDD, 자동차의 제동장치 등의 고급 임베디드 시스템.
- ARM Cortex-M(Microcontrolle) Series.
고성능 임베디드 시스템, 가격에 민감한 장치.
기존 8bit / 16bit 마이컴 시장 대응.
코어텍스라는 인체에서 가장 중요한 기관인 두뇌의 피층을 의미.
코어텍스 프로세서라는 이름은 전자 시스템에서 가장 중요한 기능을 담당한다는 뜻을 담고 있다.
ARM Cortex 제품군의 3개 시리즈는 칩 제조업체 및 OEM 들이
썸-2(Thumb-2) 기술을 통해 ARM Cortex 제품군은 개발 비용을 대폭 감소시켜 주면서 기업의 효율성을 증가시킨다.
ARM Cortex-M3.
Cortex-M3 Core.
- Harvard architecture & Bus Matrix.
- 3-stage pipeline with branch speculation(prediction).
- Thumb-2 and traditional Thumb.
- ALU with H/W divide and single cycle multiply.
- Configurable interrupt controller.
- Advanced debug.
- Optional MPU & ETM.
- Vector Table is addresses, not instructions .
- Designed to be fully programmed in C.
- 내장형 System Timer 한개 지원.
- Bit Banding.
- 미리 정의된 Memory Map.
- Nested Vectored Interrupt Controller(NVIC) 및 Interrupt를 256개 지원.
- Unaligned Data Access.
- 성능 / 코드 밀도 / 실시간 동작 / 전력 소비이 뛰어나다.
[Harvard Architecture & Bus Matrix]
Harvard Architecture는 Code / Data 버스가 분리된 Architecture를 의미합니다.
장점 : Code데이터를 읽거나 쓸 때, 동시에 Data를 읽거나 쓸 수 있다.
Cortex-M3에서는 System Bus를 추가하여, 주 Code및 Data는 Code Bus & Data Bus로,
그 외의 통신(즉, 주변부와의 통신이나 외부 RAM과의 통신)은 System Bus를 사용하도록 하였습니다.
3-stage pipeline with branch speculation(prediction)
Fetch, Decode(with branch prediction), Execute의 실행단계를 가진다.
(Fetch란 실행할 코드를 가져오는 것을 의미,
Decode란 가져온 명령어를 CPU가 알 수 있는 코드로 바꾸는 것을 의미,
Execute는 이것을 실행하는 것을 의미.
=> 각 단계는 서로에 영향을 미치지만, 동작은 독립적)
장점 : 각각의 단계가 놀지 않는다.
단점 : branch와 같이 코드가 실행될때 속도가 오히려 늦어질 수 있다.
(branch prediction = 실행 속도가 늦어지는 단점을 해결하기 위한 방법)
[Branch Prediction]
Dynamic Branch Prediction은 BTB(Branch Target Buffers, 이전에 Branch한 정보를 가지고 있음)을 사용하여 Branch 속도를 증가시킴.
Static Branch Prediction은 해당 Branch명령어를 만났을 때 Decoding상태에서 Branch할지 안할지를 판단 후
Fetch를 어디로 할지 결정한다. 이것을 통해서 Pipeline의 Flush가 좀더 덜 일어나게 만들어서 속도 향상을 이루었다.
[Thumb-2 and traditional Thumb] Cortex-M3는 Thumb2명령어만 사용 할 수 있다.
기존의 Thumb은 16비트 명령어 셋인데 반하여 Thumb2는
16비트 명령어 셋과 32비트 명령어셋을 혼합하여 사용하므로써 코드의 효율성을 높였다.
그리고 혼합된 형태이므로 이전의 ARM과 Thumb간의 모드 스위칭이 필요없어졌다.
[ALU with H/W divide and single cycle multiply]
Arithmetic (and) Logic Unit 산술 논리 장치. 정수형 나눗셈이 H/W적으로 지원. 싱글-싸이클 멀티플라이.
[Advanced debug]
H/W Breakpoint를 8개까지 & 추가된 디버깅 기능(like QXDM))
[MPU] (Memory Protection Unit)
[ETM] (Embedded Trace Macrocell)
[Vector Table]
Interrupt의 Callback function을 가지고 있는 것. 이전의 ARM 시리즈는 Vector Table은 일종의 Code 였다.
Cortex-M3의 경우는 이것이 Address로 바뀌었다.
또 다른 점은 0번째(즉, reset exception)의 메모리 주소가 0x0이 아닌 0x4라는 것입니다. 0x0에는 초기 stack address가 들어갑니다.
[Programmer's Model] 순수 C로만 코딩이 가능.
이전에 C로 하기 힘든 Stack Address 영역등의 메모리 영역 지정등이 C로도 가능하게 되었다.
[내장형 System Timer 한개 지원]
이전의 ARM 시리즈는 Timer를 사용하기 위해서 외부 타이머를 연결하여 사용해야 했다.
Cortex-M3에서는 외부의 오실레이터 소스를 받아서 작동하는 내부 Timer를 만들어 사용하거나, 기존과 같이 외부 타이머를 사용 할 수 있다.
[Bit Banding]
기존에는 한비트 내지 두비트를 바꾸더라도 System Register를 건드리기 위해서
해당 메모리 맵의 Register위치에 해당하는 메모리 값을 얻어온 다음에 바꾸어야 했는데,
Bit Banding을 쓰면, 해당 비트에 해당하는 4바이트 단위의 메모리주소에 32비트값을 0x0또는 0xffffffff으로 바꾸면 매핑되어 있는 Bit가 바뀐다.
[미리 정의된 Memory Map]
Memory Map이 Cortex-M3에서 predefine되어 있다.
이전에는 ADS의 scl등을 사용하여 메모리 멥을 결정해주었어야 했지만, Cortex-M3에서는 Memory Map을 미리 일정한 구조로 predefine해놓았다.
[NVIC] (Nested Vectored Interrupt Controller)
Interrupt로 전환하는 속도가 이전의 50% ~ 75%정도 좋아졌다.
Interrupt의 개수가 많아지면서 Interrupt들이 겹쳐서 발생하는 경우 많아져
이를 해결하기 위해서 각 Interrupt에 Priority(Preempting Priority & Subpriority)를 주고,
이를 이용해서 Interrupt가 실행중에 실행 할 건지(Nested), 아님 해당 Interrupt가 샐행이 끝난 뒤에 실행할 건지를 판단한다.
[Interrupt 256개 지원]
시스템에서 미리 정의된 16개를 제외하면 실제 240개 사용 가능.
[Unaligned Data Access]
이제 0x1001에서 4바이트를 그냥 읽어드릴 수 있게 되었다. 단 4바이트 단위의 주소에서 엑세스하는 것이 가장 빠르다.
8Bit vs. Cortex-M3 Microcontroller.
MICROCHIP - PIC / ATMEL - AVR / INTEL - 8051
[PIC]
PIC는 마이크로칩에서 만든 8비트 마이크로 콘트롤러이다.
[8051]
8051은 인텔에서 만든 8비트 마이크로 콘트롤러이다. 각종 제어 용도에 적합하게 설계되어 있다.
8051을 보통 MCP 라고도 한다.(Micro Control Unit)
8051은 하나의 칩 내에 8비트 CPU부분과 ROM, RAM, I/O Port, Timer/Counter,
Serial Port, Clock Generator 부분을 포함하고 있어 적은 수의 외부 부품으로 동작이 가능하게 되어있다.
[AVR 8515] (Advanced Virtual RISC)
PIC는 AVR에서 만든 8비트 마이크로 콘트롤러이다. (ATmega 8515)
[DMIPS] (Dhrystone Million Instructions Per Second )
Dhrystone : 드라이스톤은 벤치마크 테스트의 결과를 정수화해서 하중한 값으로 비교하는 방법.
Ex) 입력클럭: 8MHz 동작클럭 :72MHz, 90DMIPS(90*.72 = 1.25DMIPS/MHz)
[MIPS] (Million Instructions Per Second)
밉스는 프로세서의 성능을 나타내는 단위로 초당 몇 백만개의 명령어를 처리할 수 있는지를 나타내는 수치이다.
ex) 50 MIPS 성능을 갖는 프로세서가 있다면 초당 5천만개의 명령어를 처리할 수 있음을 의미한다.
[MFLOPS] (Mega Floating-Point Operations Per Second)
플롭스는 초당 수행할 수 있는 부동소수점 연산의 횟수를 의미하는 컴퓨터 성능 단위이다.
ex) 1 MFLOPS라면 1초에 백만번의 부동소수점 연산을 처리할 수 있다는 것을 의미한다.
[ISA] (Instruction Set Achitecture)
[NMI] (Non-Maskable-Interrupt)
NMI는 Response time에 매우 민감하거나 절대 disabled되어서는 안되는 성격의 interrupt를 위에 사용된다.
일반적인 인터럽트는 인터럽트의 금지(마스크)가 가능한 것에 대해서 NMI는 문자 그대로 그것을 억제할 수 없다.
Ex) debugging 관련 interrupt 나, system reset, 치명적인 시스템 errory 등이 있다.
[SysTick] (System Tick)
[PSR] (Program Status Register)
[xPSR] (Special-purpose Program Status Registers)
Features List.
고속의 곱셈 누적 연산을 수행할 수 있는 장치.
ARM7TDMI Processor Modes.
Cortex-M3 Processor Modes
'참고자료' 카테고리의 다른 글
OpenCL (0) | 2010.02.24 |
---|---|
언리얼 개발 킷 (0) | 2010.02.23 |
HP Universal Print Driver Series for Windows (0) | 2010.02.09 |
베가스. (0) | 2010.02.09 |
eBook 자료조사 (0) | 2010.02.08 |