[Arm프로세서] Arm 아키텍처의 레지스터 소개
By Guillermo Austin Kim | 2022년 4월 10일 |
Arm 아키텍처를 구성하는 기능을 이해하려면 먼저 무엇을 알아야 할까요? Arm 코어에 내장된 레지스터입니다. 레지스터를 잘 알려면 무엇을 알아야 할까요? 레지스터들이 어떻게 구성돼 있고 어떤 방식으로 사용되는지 파악하면 레지스터를 잘 안다고 말할 수 있습니다. Arm 아키텍처에서 정의된 기능들은 "레지스터를 어떻게 변경하고 설정할까?"가 그 실체이고 정체입니다. 메모리 아키텍처 관점으로 레지스터는 무엇일까요? Arm 코어가 사용하는 저장 매체 중에 가장 속도가 빠른 게 레지스터입니다. 레지스터 다음으로 속도가 빠른 저장 매체로 캐시와 RAM을 주로 언급합니다. 캐시나 RAM을 사용하는 것보다 되도록 레지스터를 사용해 데이터를 연산하면 성능을 최적화할 수 있습니다. 그럼 레지스터는 어떻게 표기할까요
[ARM프로세서] 익셉션 벡터 테이블 소개
By Guillermo Austin Kim | 2020년 10월 21일 |
이번 포스팅에서는 ARMv7과 ARMv8 아키텍처의 익셉션 벡터 테이블을 차례로 소개합니다. ARMv7 익셉션 벡터 테이블 "표 7.2"는 ARMv7 익셉션 벡터 테이블입니다. 우선 표를 읽고 해석해 봅시다. 표 7.2 ARMv7 익셉션 벡터 테이블 표의 가장 왼쪽 윗 부분에 "익셉션 벡터 베이스 주소"가 보이는데, 이는 익셉션 벡터의 기준이 되는 주소를 뜻합니다. 익셉션 벡터 베이스 주소는 0x0이나 0xffff_0000으로 지정할 수 있는데, 리눅스와 같은 범용 운영체제에서는 0xffff_0000에 익셉션 벡터 베이스 주소를 지정합니다. 이어서 "+0x04"~"+0x1C"로 표기된 부분은 익셉션 벡터 베이스 주소 기준의 오프셋 주소를 나타냅니다. 이해를 돕기 위해 한 가지 예를 들겠습니
[ARM프로세서] ARM7 아키텍처의 익셉션 소개
By Guillermo Austin Kim | 2020년 11월 17일 |
"누군가 여러분에게 ARM 아키텍처의 익셉션이 무엇인가요?"라고 묻는다면, 아마 ARMv7 아키텍처에서 설명하는 익셉션이 머릿 속에 떠오를 가능성이 높습니다. ARMv7 아키텍처의 익셉션의 종류와 익셉션 테이블은 기존 ARM 아키텍처의 익셉션의 개념을 물려 받았기 때문입니다. 20년 전에 ARMv5에서 ARM6 아키텍처에 적용된 익셉션의 기본 동작 방식을 ARMv7 아키텍처에서 거의 그대로 확인할 수 있습니다. 가격과 성능을 만족해야 하는 소형 디바이스에서 32비트 ARMv7 아키텍처 기반의 CortexA7, CortexA9 프로세서를 많이 탑재하고 있습니다. 또한 고성능 컴퓨터나 최신 휴대폰에 ARMv8 아키텍처 기반의 ARM 프로세서를 탑재하는데, ARMv8 아키텍처의 익셉션은 기존 ARMv7 아키텍
[Arm프로세서] 캐시: 캐시 관련 용어 알아보기(Arm 아키텍처 관점)
By Guillermo Austin Kim | 2022년 7월 22일 |
Arm 아키텍처는 캐시를 제어하는 명령어를 제공하는데, 명령어의 동작 원리를 제대로 파악하려면 Arm 아키텍처에서 정의된 캐시의 동작과 관련된 용어를 알아야 합니다. 먼저 캐시와 관련된 용어를 소개하고 캐시를 제어하는 명령어를 소개합니다. 실전 개발에서 캐시의 동작을 설명할 때 '캐시 플러시(Cache Flush)'란 용어를 많이 씁니다. 일반적으로 캐시의 데이터를 메인 메모리에 내린다는 의미로 사용됩니다. 리눅스 커널이나 RTOS에서 Arm 프로세서의 캐시를 제어하는 함수나 레이블의 이름에 flush가 포함된 경우가 많습니다. 일반적으로 캐시 플러시는 캐시 라인에 있는 데이터를 메인 메모리에 복사해 캐시와 메인 메모리에 있는 데이터의 싱크를 맞추는 동작을 뜻합니다. 그런데 Arm 아키텍처 문서를