본문 바로가기

#Arm아키텍처

(7)
[Arm프로세서] 캐시: 캐시 관련 용어 알아보기(Arm 아키텍처 관점) Arm 아키텍처는 캐시를 제어하는 명령어를 제공하는데, 명령어의 동작 원리를 제대로 파악하려면 Arm 아키텍처에서 정의된 캐시의 동작과 관련된 용어를 알아야 합니다. 먼저 캐시와 관련된 용어를 소개하고 캐시를 제어하는 명령어를 소개합니다. 실전 개발에서 캐시의 동작을 설명할 때 '캐시 플러시(Cache Flush)'란 용어를 많이 씁니다. 일반적으로 캐시의 데이터를 메인 메모리에 내린다는 의미로 사용됩니다. 리눅스 커널이나 RTOS에서 Arm 프로세서의 캐시를 제어하는 함수나 레이블의 이름에 flush가 포함된 경우가 많습니다. 일반적으로 캐시 플러시는 캐시 라인에 있는 데이터를 메인 메모리에 복사해 캐시와 메인 메모리에 있는 데이터의 싱크를 맞추는 동작을 뜻합니다. 그런데 Arm 아키텍처 문서를 보면 ..
[Arm프로세서] 메모리 아키텍처에서 캐시(Cache)란 컴퓨터가 발명된 후 초장기 시점에 컴퓨터는 어떤 모습일까요? 컴퓨터의 크기는 방 하나 정도였습니다. 그 당시에 CPU와 메인 메모리만 존재했습니다. CPU가 어떤 명령어를 실행하거나 데이터를 가져오려면 메인 메모리에 접근했습니다. 컴퓨터 기술이 발전하면서 컴퓨터의 성능을 키우려는 시도를 합니다. 처음에 CPU의 처리 속도(클럭)를 키우려는 방향으로 다양한 연구를 진행했는데 CPU의 성능을 최대로 키우면 이에 비례해 시스템의 성능도 함께 좋아질 것이라 예상했습니다. 그래서 CPU의 성능을 측정했는데 다음과 같은 흥미로운 사실을 알게 됐습니다. "CPU의 대부분 시간은 메인 메모리에 접근하는데 허비한다." CPU의 실행 속도는 매우 빠른데 메모리에 접근하는 시간은 CPU의 실행 시간에 비해 상당히 느리다는 ..
[ARM프로세서] CPU 캐시(Cache)란 이번 포스트에서는 캐시의 기본 개념에 대해 소개하고 ARM 프로세서에 적용된 캐시의 개념에 대해 설명하겠습니다. CPU 캐시(Cache)란 캐시란 컴퓨터 용어로 캐시는 데이터나 값을 미리 복사해 놓는 임시 장소를 의미합니다. 캐시는 자주 사용되는 데이터를 임시 저장해 데이터에 접근하는 속도를 최적화하기 위해 사용됩니다. 다양한 소프트웨어 분야에서 캐시가 사용되는데 CPU를 설계할 때도 캐시를 사용해 CPU의 실행 속도를 최적화합니다. 그렇다면 CPU에서 캐시는 어떤 방식으로 사용이 될까요? 캐시는 어떤 형태일까요? 의문이 계속 생깁니다. 먼저 CPU에서 사용되는 캐시에 대해 알아봅시다. 사실 처음 CPU를 연구했던 과학자들은 처음부터 캐시를 CPU에 적용한 것은 아니었습니다. 오랫동안 CPU를 설계하는 ..
[ARM프로세서] 익셉션(Exception) 소개 ARM 프로세서는 익셉션을 지원하며 운영체제의 ARM 프로세서가 지원하는 익셉션을 활용해 세부 기능을 구현합니다. 익셉션의 타입에 대해 알아보고 익셉션의 세부 동작에 대해 살펴보겠습니다. ARMv7과 ARMv8 아키텍처 별로 익셉션 벡터 테이블의 종류가 상이하지만, 익셉션이 동작하는 방식은 유사하므로 ARMv7 아키텍처 기준으로 익셉션에 대해 소개합니다.  익셉션의 종류 익셉션의 세부 동작에 대해 설명드리기 전에 먼저 익셉션의 타입에 대해 알아봅시다. 다음은 ARM의 익셉션의 종류입니다. 표 1.3 익셉션의 타입과 종류 먼저 메모리 어보트 타입으로 분류되는 익셉션에 대해 살펴봅시다. 다음은 메모리 어보트 타입으로 분류되는 익셉션입니다.    ❑ Undefined Instruction: ARM 코어가 어셈..
[ARM프로세서] 함수 호출 규약(Calling Convention)이란 호출 규약(Calling Convention)이란 무엇일까요? 어떤 함수를 호출했을 때 서브 루틴이 자신을 호출하는 함수로부터 인자를 어떤 방식으로 받아 결과를 반환하는지에 대한 규약입니다. x86, RISC-V와 같은 CPU 아키텍처마다 함수 호출 규약(Calling Convention)을 정의하는데, ARM 프로세서에서는 이를 AAPCS(Procedure Call Standard for ARM Architecture)라고 명시합니다. 앞으로, AAPCS를 함수 호출 규약이라고 명시하겠습니다. 연산을 수행하는 ARM 어셈블리 명령어에서 레지스터는 연산의 결과를 임시로 저장하는 역할에 그칩니다. 그래서 각각 레지스터의 역할을 세세하게 배울 필요가 없는데요. 함수 호출 규약을 배울 때는 다릅니다. 그것은 ..
[ARM프로세서] ARMv7 아키텍처의 레지스터 ARMv7 아키텍처에서 사용되는 레지스터는 범용과 특별 용도 레지스터로 구분할 수 있습니다. 먼저 범용 레지스터에 대해 살펴봅시다. 다음은 ARM 스팩 문서에서 발췌한 내용입니다. 출처: DDI0406C_arm_architecture_reference_manual.pdf A2.3 ARM core registers In the application-level view, an ARM processor has: • thirteen general-purpose 32-bit registers, R0 to R12 • three 32-bit registers with special uses, SP, LR, and PC, that can be described as R13 to R15. 위 내용은 "R0~R12 레지스..
[ARM프로세서] ARM프로세서, ARM아키텍처, ARM코어란 ARM 프로세서를 배울 때 가장 혼돈되는 게 용어입니다. 먼저 ARM과 관련된 용어를 소개합니다. ARM 아키텍처 아키텍처는 ARM 프로세서를 설계하는 디자인을 의미하며, 프로그래머 모델을 의미합니다. ARM 아키텍처는 레지스터, 메모리 구조, ARM 어셈블리 명령어, 함수 호출 규약과 같이 소프트웨어 개발자가 알아야 하는 주요 기능입니다. 이 책에서는 ARMv7(32비트)와 ARMv8(64비트: Aarch64) 아키텍처 기반의 프로그래머 모델을 설명합니다. ARM 프로세서 ARM 프로세서는 용어 그대로 디바이스를 뜻합니다. ARM 프로세서는 ARM 아키텍처에 의존적인데, 같은 아키텍처 버전 기반의 ARM 프로세서들은 같은 명령어를 사용합니다. 다음 표는 ARM 아키텍처와 ARM 프로세서의 관계를 나타냅..