1. ARM에 관한 기본숙지 사항
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
ARMv7이 되면서 도입된 명칭으로 Cortex라는 새로운 ARM의 명칭이 생기고, 종류가 나누어진다.
현재 많이 사용되어지고 있는 ARM Series 이며, 사용되는 목적에 따라, A,R,M으로 나누어진다.
- A : 성능이 가장 좋은 Core로 현재 많이 사용이되고 있으며, V7, V8로 나누어진다.
- R : 성능이 좋지만, RTOS에 최적화하기 위해 Cache 더 사용하여 low Latency를 제공
- M: 성능은 많이 떨어지지만, 작고 Power 소비가 적어 MPU 즉 Micom에서 많이 사용된다.
A는 현재 거의 모바일이나, 성능이 좋은 CPU에서 주로 많이 이용이 되어진다.
R은 아직 저 역시 경험해보지 못했지만, 주로 의학이나, 군용으로 사용될 것 같다.
M은 현재 거의 Micom이며, 지금 현재 STM에서도 주로 많이 볼수 있다.
SOC에서는 Cortex-A만 따라 하나만 사용하지 않고, 조합으로도 많이 사용한다.
아래의 상단 검색 사이트에서 원하는 키워드로 찾을수 있으며,
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인 경우 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)
Cache의 기능인 것 같은데, 주로 Low Latency을 바라는 ISR을 이곳에 사용을 하는것이라는 목적인 것 같다.
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
http://egloos.zum.com/recipes/v/5170809
- ARMv7 Cortex-A의 Cache 구성 비교 및 확인가능
Cortex A를 사용하는 모바일이나, 그외 SOC에 대해 비교 및 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
http://processors.wiki.ti.com/index.php/Cortex-A8_Neon_Architecture
1.3 ARM의 MMU
http://egloos.zum.com/recipes/v/5232056
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
https://en.wikipedia.org/wiki/ARM_architecture
http://www.arm.com/products/processors/instruction-set-architectures/index.php
ARM Version 별로 개별의 Core의구성이 있는 이에 관한 간단한 설명이 되어 있기에 쉽게 이해가능하다.
이제 위에 익히 기본지식으로 아래의 ARM을 비교해보자.
L3 Cache는 현재 Apple에서 사용하는 것 같다.
https://en.wikipedia.org/wiki/List_of_ARM_microarchitectures
현재 Cotex는 V7과 V8을 사용하고 있다.
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 의 각 기능별 성능 비교
https://en.wikipedia.org/wiki/Comparison_of_ARMv7-A_cores
현재 ARM Core Version을 사용한 CPU 제품들은 많으며, 이를 일부를 나타내고 있다.
https://en.wikipedia.org/wiki/List_of_applications_of_ARM_cores
만약 아키텍쳐로 비교를 원한다면, PowerPC와 비교를 하면될꺼 같다.
13년전만 해도 가장 많이 사용을 했지만 현재는 거의 사용이 되고 있지 않는것 같다.
https://ko.wikipedia.org/wiki/%ED%8C%8C%EC%9B%8CPC
https://en.wikipedia.org/wiki/PowerQUICC
3. ARM의 기본 정보 및 문서
https://namu.wiki/w/ARM(CPU)
ARM에 관련되어 한글이 지원되며, 쉽게 설명이 되어 이해하기가 쉽다.