ARM Architecture
- Vector table : ARMv7-A vs ARMv8 2014.04.16
- Linux kernel ARM64로 빌드하기 2013.10.20
- 클리앙 게시판에서 논쟁 중인 64bit ARM(AArch64)에 대한 글. 2013.10.20 2
- Introduction to CMSIS Version 3 2012.03.01
- System MMU Whitepaper 2012.02.22
- Migrating from ARM7 to Cortex-M3 2012.02.15
- AN179 Cortex™-M3 Embedded Software Development 2012.02.15
- ARM Processor Overview 2012.02.15
- Cortex-A Series Programmers Guide 2012.02.15
- Memory access (re)ordering and barriers 2012.02.08
Vector table : ARMv7-A vs ARMv8
Linux kernel ARM64로 빌드하기
Linaro에서 ARMv8의 AArch64(ARM64) 빌드 툴체인 및 관련 정보를 제공하고 있다.
http://www.linaro.org/engineering/engineering-projects/armv8
gcc-linaro 4.8 (Aarch64, GNU/Linux) 버전을 설치했다.
경로를 아래로 설정하고,
~/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 버전대 커널 소스를 받았다.
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)에 대한 글.
클리앙 게시판에서 논쟁 중인 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에 의한 성능 향상의 여지가 있다고 생각한다.
Introduction to 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/
System MMU Whitepaper
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
Migrating from ARM7 to Cortex-M3
출처 : http://www.arm.com/files/pdf/Cortex-M3_programming_for_ARM7_developers.pdf
AN179 Cortex™-M3 Embedded Software Development
Cortex-M Series는 Classic ARM과 비교할때 Exception handling, Execution Mode 등에서
다른 구조를 가지고 있다.
Table of Contents
- 1. The Cortex™-M3
- 2. Developing software for Cortex-M3
- 3. Moving Existing ARM Projects to the Cortex-M3
- 4. Debugging with the Cortex-M3
출처 : http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dai0179b/index.html
ARM Processor Overview
● ARM Processor를 제품군으로 분류한 그림
● ARM Architecture and Processors 로 분류한 그림
위 그림에는 Cortex-A7, Cortex-A15가 빠져있다.
Cortex-A Series 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."
이 문구가 인텔을 경쟁자로 의식한 문구로 보인다.^^
Memory access (re)ordering and barriers
출처 : http://blogs.arm.com/software-enablement/431-memory-access-ordering-an-introduction/
http://blogs.arm.com/software-enablement/448-memory-access-ordering-part-2-barriers-and-the-linux-kernel/
http://blogs.arm.com/software-enablement/594-memory-access-ordering-part-3-memory-access-ordering-in-the-arm-architecture/