7/19/2015

ARM Cortex 관련정보

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 확인 
   아래의 사이트에서 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
 ARMv7이 되면서 도입된 명칭으로 Cortex라는 새로운 ARM의 명칭이 생기고, 종류가 나누어진다.  
 현재 많이 사용되어지고 있는 ARM Series 이며, 사용되는 목적에 따라, A,R,M으로 나누어진다.
  1. A : 성능이 가장 좋은 Core로 현재 많이 사용이되고 있으며, V7, V8로 나누어진다.
  2. R : 성능이 좋지만, RTOS에 최적화하기 위해  Cache 더 사용하여 low Latency를 제공
  3. M: 성능은 많이 떨어지지만, 작고 Power 소비가 적어 MPU 즉 Micom에서 많이 사용된다. 
   A는 현재 거의 모바일이나, 성능이 좋은 CPU에서 주로 많이 이용이 되어진다. 
   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도 지원가능하다.
  1. L1 Cache: CORE마다 Harvard Arch I,D Cache로 존재하며, Core Speed와 동일.  
  2. 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

  • ARM Cache에 대한 자세한 설명과 정책
  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



  • 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 sizeMaximum
file size
Maximum
file system size
KiB16 GiBTiB
KiB256 GiBTiB
KiBTiB16 TiB
KiB[limits 1]TiB32 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 전체적인설명
   https://en.wikipedia.org/wiki/ARM_architecture
   http://www.arm.com/products/processors/instruction-set-architectures/index.php

ARM Version 별로 개별의 Core의구성이 있는 이에 관한 간단한 설명이 되어 있기에 쉽게 이해가능하다.

  • ARM CPU 비교
   이제 위에 익히 기본지식으로 아래의 ARM을 비교해보자.
   L3 Cache는 현재 Apple에서 사용하는 것 같다.

  https://en.wikipedia.org/wiki/List_of_ARM_microarchitectures

  • Cortex 관련 문서 (ARMv7)
  현재 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 제품들은 많으며, 이를 일부를 나타내고 있다.

  • ARM Core를 사용한 제품군들
   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의 기본 정보 및 문서 

  • ARM Core 일반적인 설명 및 성공요인
   https://namu.wiki/w/ARM(CPU)


  • ARM에 관련 문서
   ARM에 관련되어 한글이 지원되며, 쉽게 설명이 되어 이해하기가 쉽다.
   ARM 사이트에서 제공하는 Help이며, ARM 관련된 문서를 제공한다
   http://infocenter.arm.com/help/index.jsp