본문 바로가기

시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리/17장: 메모리 모델

(11)
[Arm프로세서] Armv8:메모리 맵과 메모리 모델 지금까지 Arm 아키텍처에서 정의된 노멀 메모리 타입과 디바이스 메모리 타입을 알아봤습니다. 이어서 메모리 맵을 보면서 노멀 메모리 타입과 디바이스 메모리 타입의 특징을 자세히 알아봅시다. [정보] 메모리 맵이란? 실전 프로젝트를 진행하면 메모리 맵이란 용어를 자주 듣습니다. 메모리 맵은 무엇일까요? 프로그램에 의해 실행되는 프로세스 입장에서 바라 본 메모리 레이아웃입니다. 지도를 보면 일정한 규칙(시/도)에 따라 구획이 나눠져 있듯이 메모리 영역을 속성별로 분류한 일종의 메모리 지도가 메모리 맵입니다.  메모리 맵의 구조도 알아보기 메모리 맵은 데이터 영역, 코드와 같은 속성으로 마킹된 다양한 영역으로 구성돼 있습니다. 다음 그림을 보면서 메모리 맵에 대해 더 자세히 알아봅시다.   출처: Learn ..
[Arm프로세서] Armv8: 디바이스 메모리란? 이어서 디바이스 메모리를 알아봅시다. 메모리 맵을 보면 다양한 페리페럴 디바이스의 세부 정보와 함께 레지스터를 볼 수 있습니다. 이를 Memory-Mapped I/O 혹은 디바이스 메모리라고 합니다. 디바이스 메모리 타입은 노멀 메모리 타입과 어떤 차이점이 있을까요? Arm 프로세서 입장에서 노멀 메모리로 마킹된 데이터는 메모리에 접근하는 명령어의 순서를 바꾸는 메모리 리오더링 기법이 적용됩니다. 하지만 디바이스 메모리인 경우는 다릅니다. 디바이스 메모리로 마킹된 데이터에 액세스할 때 메모리 리오더링이 적용되면 프로그래머가 예상하지 못한 오동작이 발생할 수 있습니다. 그래서 디바이스 메모리로 마킹된 데이터는 명령어를 순차적으로 실행해야 합니다. 디바이스 메모리는 페리페럴을 제어하는 용도로 사용되므로 명령..
[Arm프로세서] Armv8: 노멀 메모리 타입이란 명령어를 실행하거나 명령어 실행 과정에서 처리되는 데이터나 코드는 노멀 메모리 타입으로 처리됩니다. 대부분의 소프트웨어 개발자가 입력한 코드는 노멀로 마킹된 메모리 영역에 로딩된다고 볼 수 있습니다.  Arm 프로세서는 노멀 메모리로 마킹된 영역의 데이터를 처리하기 위해 캐싱 기법을 적용합니다.CPU는 노멀 메모리로 마킹된 메모리 영역에 대해 다음과 같은 기법을 적용해 최적화를 수행합니다.  l  머지 액세스l  스페큘레이션(speculation)l  리오더링 액세스 노멀 메모리를 처리하는 과정에서 적용되는 다양한 기법을 소개합니다.  머지 액세스 메모리 공간에 여러 번 접근하거나 연속된 메모리 공간에 접근하는 2개 이상의 명령어를 한 번에 처리하는 동작을 머지 액세스(merge access)라고 합니다..