Linaro에서 ARMv8의 AArch64(ARM64) 빌드 툴체인 및 관련 정보를 제공하고 있다.

http://www.linaro.org/engineering/engineering-projects/armv8


gcc-linaro 4.8 (Aarch64, GNU/Linux) 버전을 설치했다.

(http://releases.linaro.org/13.09/components/toolchain/binaries/gcc-linaro-aarch64-linux-gnu-4.8-2013.09_linux.tar.xz)

경로를 아래로 설정하고,

~/bin/gcc-linaro-aarch64-linux-gnu-4.8-2013.09_linux 

환경변수 설정 스크립트 생성. (env_linaro-arm64-linux_toolchain.sh)

export PATH=$HOME/bin/gcc-linaro-aarch64-linux-gnu-4.8-2013.09_linux/bin:$PATH

export ARCH=arm64

export CROSS_COMPILE=aarch64-linux-gnu-


3.10.x 버전대 커널 소스를 받았다.

https://www.kernel.org/

linux-3.10.16.tar.xz


ARM64용 defconfig가 아직은 달랑 하나만 있다.^^

$ ls arch/arm64/configs/

defconfig


빌드 해보자.

$ source ~/bin/env_linaro-arm64-linux_toolchain.sh

$ make defconfig

$ make -j4


T32 simulator에 커널 로딩해서 확인.


지금 당장 ARM64를 해야 하는건 아니지만, 언젠가는 부딪쳐야 할 산이다.

공부할것들이 첩첩산중으로 쌓였다.ㅠㅠ


클리앙 게시판에서 논쟁 중인 64bit ARM(AArch64)에 대한 글.


http://www.clien.net/cs2/bbs/board.php?bo_table=lecture&wr_id=186703

http://www.clien.net/cs2/bbs/board.php?bo_table=lecture&wr_id=187235


기존 ARMv7-A 아키텍처에서 ARMv8-A 아키텍처로 변환되면서,

64bit(AArch64 :64bit ARM) 도입 및 아키텍처의 개선으로 성능 향상이 있다.


성능 향상에 대한 논점이 레지스터 크기 증가(64비트)및 갯수 증가에 따른 잇점을 다룸.

기존 ARMv7-A는 32비트 (architectural) register 16개(R0~R15)를 가졌으나

ARMv8-A는 64비트 (architectural) register 31개(R0~R30)를 가지고 있다.

SIMD(NEON)명령에 대한 레지스터도 증가.

=> Multiple issue 성능 향상이 있을것으로 생각됨.

http://cs.nyu.edu/courses/fall10/V22.0436-001/lecture17.html


OOO관련 Register renaming 정보:

Cortex-A9의 경우 register renaming scheme으로 56개의 physical register pool에 architectural register를 mapping 해준다고 한다.

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0388e/CHDIBEGC.html

Cortex-A15 그리고, ARMv8-A의 Cortex-A57는 더 많은 수의 physical register pool을 가지고 있을 것으로 생각된다.


Intel 경우

Superscalar가 처음 도입된 Intel P6에서는 40개였다.(AMD K5는 16개)

instruction window(buffer) 정보:

intel의 Haswell은 192개, Sandy Bridge는 168개, Nehalem은 128개.

http://www.tomshardware.com/reviews/core-i7-4770k-haswell-review,3521.html


OOO관련 논쟁의 경우,

컴파일러가 최적화된 코드를 생성하지 못하는 경우도 있고, JAVA의 byte code 또는 Python 등의 인터프리터 언어 경우,

컴파일러가 백앤드에서 생성하는 코드만큼 최적화가 이루어지지 않는다면, OOO에 의한 성능 향상의 여지가 있다고 생각한다.


ARM에서 CMSIS Version 3를 발표했다.

CMSIS는 Cortex™ Microcontroller Software Interface Standard 의 약자로서
Cortex-M 시리즈에서 사용할 API 등의 표준을 정한 것이다.

CMSIS 2.0 에서는 Cortex-M4 지원, CMSIS-DSP 라이브러리를 포함하였고,

이번 CMSIS 3.0 에서는 RTOS-API, SVD(System View Description)가 포함되었다.


uCOS-II, FreeRTOS 등 어떤 RTOS를 사용할지라도, CMSIS-RTOS API를 Adaptation Layer로 두고,

 Application 개발자는 CMSIS-RTOS API 를 통해 미들웨어 및 라이브러리의 재사용성을 높이려는 정책이다.

Video 1: Introduction to CMSIS Version 3: Explains the components and benefits of CMSIS.
(http://youtu.be/ivR96rfgVlg)

Video 2: Using CMSIS-RTOS: Shows the RTOS functionality with the RTX implementation.
(http://youtu.be/KGZgXJ7uMV4)

출처 :   http://www.arm.com/products/processors/cortex-m/cortex-microcontroller-software-interface-standard.php/ 

Virtualization 기능과 연관하여 System MMU에 대해 설명한 문서.



SMMU의 이점으로

1) 연속된 물리적인 메모리 공간을 필요로 하는
주요 Memory Accessing Device (GPU, Video engine 등)들이
메모리 단편화의 문제로 물리적으로 연속된 메모리 공간을 reserved 하여 사용하던 기존 방식에서
물리적으로 단편화된 메모리를 영역을 SMMU를 통해 하나의 연속된 메모리 공간으로 Accessing을 할 수 있다는 것.

2) Virtualization 입장에서는 SMMU를 통해 Stage2 Address Translation을 처리하므로, performance 향상이 가능하다는 것




출처 : http://www.arm.com/files/pdf/System-MMU-Whitepaper-v8.0.pdf
 
Cortex-M3 코어로 펌웨어 개발시 ARM7과 다른 부분에 대해 잘 정리되어 있다.



출처 : http://www.arm.com/files/pdf/Cortex-M3_programming_for_ARM7_developers.pdf
 


● ARM Processor를 제품군으로 분류한 그림



Classic ARM Processors
ARM11™ Series - Performance processors based on the ARMv6 architecture
ARM9™ Series- Popular processors based on the the ARMv5 architecture
ARM7™ Series- Classic processors for general purpose applications 

ARM Cortex Embedded Processors
Cortex-R Series - Exceptional performance for real-time applications
Cortex-M Series - Cost-sensitive solutions for deterministic microcontroller applications

ARM Cortex Application Processors 
Cortex™-A Series - High performance processors for open Operating Systems


● ARM Architecture and Processors 로 분류한 그림


위 그림에는 Cortex-A7, Cortex-A15가 빠져있다.
 
Programmers Guide로 잘 정리 되어 있다.

TrustZone, SMP, Cortex-A15 에 대한 내용 등 Cortex-A 시리즈에 대한 최근 내용들도 다루고 있고,
Linux, GCC를 기준으로 기술된 부분이 있어 이해하는데 도움이 된다.


출처 :  http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.den0013b/index.html 

"It is ideally suited for programmers with a desktop PC or x86 background taking their first steps into the ARM-based world."
이 문구가 인텔을 경쟁자로 의식한 문구로 보인다.^^

+ Recent posts