ARM은 Embedded CPU시장에서 거의 모든 제조사들이 사용하는 CPU이며, 이전에 많이 사용이 하였던 PowerPC 제조사였던 Freescale(Motorola) 마저도 ARM을 사용하고 있다.
기존의 ARM9에서 Version up이 되면서 Cortex라는 것으로 변경이되어 그 특성과 기존특성을 알아보자.
https://developer.arm.com/products/software-development-tools/compilers/arm-compiler-5/docs/dui0471/k/key-features-of-arm-architecture-versions/about-the-arm-architectures
1.1 ARM Core 기본설명
ARM에서 예전부터 가장많이 사용되어지는 ARM9 부터 최근에 많이 사용되어지는 Cortex Series로
변경이 되면서 FPU,Thum32 및 기타기능이 추가되어 ARM 내부에서도 많이 변경이 되었으며 이는 곳 컴파일러의 지원과 기존의 호환성과도 중요하다고 본다.
- ARM의 Version 확인
https://ko.wikipedia.org/wiki/ARM_%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98
- ARM Cortex-A,R,M Series
현재 많이 사용되어지고 있는 ARM Series 이며, 사용되는 목적에 따라, A,R,M으로 나누어진다.
- A : 성능이 가장 좋은 Core로 현재 많이 사용이되고 있으며, V7, V8로 나누어진다.
- R : 성능이 좋지만, RTOS에 최적화하기 위해 Cache 더 사용하여 low Latency를 제공
- M: 성능은 많이 떨어지지만, 작고 Power 소비가 적어 MPU 즉 Micom에서 많이 사용된다.
R은 아직 저 역시 경험해보지 못했지만, 주로 의학이나, 군용으로 사용될 것 같다.
M은 현재 거의 Micom이며, 지금 현재 STM에서도 주로 많이 볼수 있다.
SOC에서는 Cortex-A만 따라 하나만 사용하지 않고, 조합으로도 많이 사용한다.
- ARM의 Cortex 관련문서
ARM의 Cortex-A , Cortex-R , Cortex-M 관련 정보 및 문서를 쉽게 얻을수 있다.
1.2 ARM 의 CACHE
ARM9인 경우 Harvard architecture로 I-Cache와 D-Cache를 분리하여 사용을 하고 있으며,
별도로 TCM(Tightly Coupled Memory) 이라고 사용하고 있는데, 일종의 SRAM or Cache라고 생각하면 되겠다. 사용용도는 SOC의 내부마다 조금씩 다른것 같다.
- Cortex의 Cache system
Cortex인 경우 Intel에서 사용되는 Cache처럼 Level1,2로 나뉘어지며, V8에서는 L3도 지원가능하다.
- L1 Cache: CORE마다 Harvard Arch I,D Cache로 존재하며, Core Speed와 동일.
- L2 Cache: Multi일 경우, CORE들과 공유하며, 단일구성의 SRAM으로 이는 Speed는 정확히 잘 모르겠음.
- TCM (Tightly Coupled Memory)
time-critical routine이 시간 or 속도 관계없는 routine 인 것 같다.
나의 경우는 DM335 사용 했을 때, TCM을 DeepSleep 들어 갔을때, Wake up 용 ISR로 사용하였다.
RTOS를 사용한다면, TCM이 많이 사용할 필요가 경우, ISR의 Fast latency와 이를 DRAM 대신
이용하여, 최적화가 가능할 것 같다.
https://developer.arm.com/docs/dui0471/k/key-features-of-arm-architecture-versions/tightly-coupled-memory
- ARM Cache에 대한 자세한 설명과 정책
- ARMv7 Cortex-A의 Cache 구성 비교 및 확인가능
이에 대해 비교 설명해주고 있다.
L1 Cache는 I-Cache와 D-Cache로 분리된 Harvard architecture로 구성이 되어 있고,
L2 Cache는 공유된 형식으로 일종의 buffer로 돌아가는 것 같다..
https://namu.wiki/w/ARM%20Cortex-A%20%EC%8B%9C%EB%A6%AC%EC%A6%88
- ARMv8 Cortex-A Cache 구성확인
기본구성은 역시 ARMv7과 동일하지만 L3까지도 사용이 가능한것 같다.
이곳에서 보면 Cortex-A 가 L2 Cache를 보면 여러 Core를 공유하며 사용하는 것 같다.
https://developer.arm.com/docs/den0024/latest/11-caches
- Cortex-A8의 Architecture 및 Pipleline 구조
http://processors.wiki.ti.com/index.php/Cortex-A8
http://processors.wiki.ti.com/index.php/Cortex-A8_Features
http://processors.wiki.ti.com/index.php/Feature_Comparison:_ARM_926,_1136_and_Cortex-A8
http://processors.wiki.ti.com/index.php/Cortex-A8_Architecture
https://namu.wiki/w/ARM%20Cortex-A%20%EC%8B%9C%EB%A6%AC%EC%A6%88
- Cortex-A8의 Neon 구조
http://processors.wiki.ti.com/index.php/Cortex-A8_Neon_Architecture
1.3 ARM의 MMU
http://egloos.zum.com/recipes/v/5232056
Block size | Maximum file size | Maximum file system size |
---|---|---|
1 KiB | 16 GiB | 4 TiB |
2 KiB | 256 GiB | 8 TiB |
4 KiB | 2 TiB | 16 TiB |
8 KiB[limits 1] | 2 TiB | 32 TiB |
https://ko.wikipedia.org/wiki/Ext3
http://superuser.com/questions/521551/cat-proc-meminfo-what-do-all-those-numbers-mean
http://absorbed.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-%EB%82%A8%EC%95%84-%EC%9E%88%EB%8A%94-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EC%98%A4%ED%95%B4%EC%99%80-%EC%A7%84%EC%8B%A4
1.4 AMBA (Advanced Microcontroller Bus Architecture)
ARM 내부에서 사용되어지는 BUS이며 AHB, ASB, APB 등으로 구성이 되며 ARM에서는 이를 AMBA라고한다.
Version에 따라 구성역시 달라지기 때문에 이는 AMBA의 Version을 확인하고 구성을 확인하는 것이 좋다.
예를 들면 ASB 같은 경우, 현재 사용 AMBA 3 이후 부터는 사용되지 않고 있다.
AMBA의 중요성은 System의 성능과도 가장 밀접하며, BUS의 Clock에 따라 전체 System의 성능이 좌우 되기 때문이다.
아무리 Core가 늘어난다고 하여도, 늘어날수 있는 성능의 한계는 이미 정해져 있다고 본다.
https://www.arm.com/products/system-ip/amba-specifications.php
https://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture
- ARM Architecture 전체적인설명
http://www.arm.com/products/processors/instruction-set-architectures/index.php
ARM Version 별로 개별의 Core의구성이 있는 이에 관한 간단한 설명이 되어 있기에 쉽게 이해가능하다.
- ARM CPU 비교
L3 Cache는 현재 Apple에서 사용하는 것 같다.
https://en.wikipedia.org/wiki/List_of_ARM_microarchitectures
- Cortex 관련 문서 (ARMv7)
https://web.eecs.umich.edu/~prabal/teaching/eecs373-f10/readings/ARMv7-M_ARM.pdf
2. ARM의 Cortex-Core 기본비교
최근에 가장 많이 사용하고 있는 ARM Core Version은 V7이며, 이를 Cortex라고 부르면,
이를 A,M 나누고 세부적으로 더 나눈다.
이를 정확히 이해하기 위해서 세부기능의 사용용도와 정확한 용어를 메뉴얼에서 습득하자.
- Cortex Version 의 각 기능별 성능 비교
현재 ARM Core Version을 사용한 CPU 제품들은 많으며, 이를 일부를 나타내고 있다.
- ARM Core를 사용한 제품군들
만약 아키텍쳐로 비교를 원한다면, PowerPC와 비교를 하면될꺼 같다.
13년전만 해도 가장 많이 사용을 했지만 현재는 거의 사용이 되고 있지 않는것 같다.
https://ko.wikipedia.org/wiki/%ED%8C%8C%EC%9B%8CPC
https://en.wikipedia.org/wiki/PowerQUICC
3. ARM의 기본 정보 및 문서
- ARM Core 일반적인 설명 및 성공요인
- ARM에 관련 문서