ARM

포스트: 173|조회수: 0|TERM
Items

Posts

173 posts

[Arm프로세서] GIC: 인터럽트 콘트롤러가 필요한 이유

Guillermo Austin Kim|2022년 8월 3일

인터럽트 콘트롤러가 필요한 이유는 무엇일까요? 컴퓨터는 다음과 같이 구성돼 있기 때문입니다. ● CPU ● 메모리 ● I/O 장치 마이크로 프로세서는 CPU와 메모리를 깊이 있게 다룹니다. 그런데 실제 고객이 사용하는 제품은 키보드나 마우스와 같은 외부 I/O 장치가 필요합니다. 외부 I/O 장치를 CPU가 다양한 방식으로 제어하는데, 이 중 가장 효율적인 방법이 인터럽트입니다. 예를 들어 휴대폰에서 터치 화면을 만지면 터치 인터럽트가 유발돼 CPU 코어에게 터치가 눌렸다는 사실을 알립니다. 또한 노트북에서 마우스나 키보드를 움직이면 인터럽트를 통해 CPU와 통신합니다. 외부 I/O 장치가 인터럽트를 올려주면 이를 통해(Consolidation)해서 CPU에

[Arm프로세서] 캐시: 캐시 관련 어셈블리 명령어

Guillermo Austin Kim|2022년 7월 22일

캐시를 설정하거나 원하는 방식으로 캐시를 구동하려면 캐시와 연관된 시스템 레지스터만 설정해야 한다고 생각할 수 있습니다. Arm 아키텍처에서는 캐시를 세세하게 동작시킬 수 있는 어셈블리 명령어를 제공합니다. 이번에는 캐시를 제어하는 어셈블리 명령어를 알아봅시다. 표 17.5 캐시 관련 어셈블리 명령어 시스템을 초기화할 때 캐시를 원하는 방식으로 설정해야 성능을 제대로 낼 수 있습니다. 이를 위해 캐시를 제어하는 명령어의 사용 방법을 잘 익혀 둘 필요가 있습니다. 시스템을 초기화하는 과정에서 캐시를 스팩에 마젝 적절히 설정하면 시스템의 성능을 극대화할 수 있습니다.

[Arm프로세서] 캐시: 캐시 관련 용어 알아보기(Arm 아키텍처 관점)

Guillermo Austin Kim|2022년 7월 22일

Arm 아키텍처는 캐시를 제어하는 명령어를 제공하는데, 명령어의 동작 원리를 제대로 파악하려면 Arm 아키텍처에서 정의된 캐시의 동작과 관련된 용어를 알아야 합니다. 먼저 캐시와 관련된 용어를 소개하고 캐시를 제어하는 명령어를 소개합니다. 실전 개발에서 캐시의 동작을 설명할 때 '캐시 플러시(Cache Flush)'란 용어를 많이 씁니다. 일반적으로 캐시의 데이터를 메인 메모리에 내린다는 의미로 사용됩니다. 리눅스 커널이나 RTOS에서 Arm 프로세서의 캐시를 제어하는 함수나 레이블의 이름에 flush가 포함된 경우가 많습니다. 일반적으로 캐시 플러시는 캐시 라인에 있는 데이터를 메인 메모리에 복사해 캐시와 메인 메모리에 있는 데이터의 싱크를 맞추는 동작을 뜻합니다. 그런데 Arm 아키텍처 문서를

[Arm프로세서] 캐시(Cache): Set-associative 캐시 구조

Guillermo Austin Kim|2022년 6월 27일

Set-associative 캐시는 하나의 Set(집합)가 여러 개의 캐시 엔트리로 구성된 캐시 구조입니다. Set-associative란 용어에서 Set은 수학에서 정의된 집합으로 비유할 수 있는데, 하나의 Set가 여러 개의 캐시 엔트리로 구성된 구조입니다. 다음 그림을 보면서 Set-associative 캐시의 구조를 배워 봅시다. 그림 17.10 Set-associative 캐시의 구조 그림의 가장 윗 부분에는 주소가 보이는데, 주소를 세 부분으로 나눠져 있습니다. ① 로 표기된 부분은 주소의 인덱스 값으로 캐시 라인에 접근하는 동작을 나타냅니다. 그런데 캐시 라인은 4Way로 구성돼 있으므로 1개의 Set는 4개의 캐시 라인으로 구성돼 있다는 사실을 알 수 있습니다. 그림에서