ARMv8 메모리 속성 및 속성(메모리 유형 및 속성)에 대한 소개를 설명하는 기사

ARMv8에서는 메모리를 일반 메모리(Normal Memory)와 디바이스 메모리(Device Memory) 로 구분하는데 , 일반 메모리는 시스템의 대부분의 메모리에 적합한 반면, 디바이스 메모리는 주변기기에서 사용되는 메모리에 적합합니다.

1. 일반 기억력

일반 메모리 유형 속성은 시스템의 대부분의 메모리에 적용됩니다. 이는 아키텍처를 통해 하드웨어가 해당 위치에 대한 액세스 권한에 관계없이 해당 위치에 대한 추측 데이터 읽기 액세스를 수행할 수 있음을 의미합니다. 일반 메모리에 접근하는 순서를 보장하기 위해서는 메모리 배리어 명령어인 DMB를 사용해야 한다.

1.1 공유 가능한 일반 메모리

일반 메모리 주소는 다음 공유성 속성 중 하나를 가질 수 있습니다.

내부 공유 가능은 내부 내부 공유 가능 공유 영역에 적용됩니다.

외부 공유 가능은 내부 공유 가능 및 외부 공유 가능 영역에 적용됩니다.

공유할 수 없습니다.

1.1.1 내부 공유 및 외부 공유 가능

ARM 아키텍처는 시스템을 일련의 내부 및 외부 공유 가능 특성 영역으로 추상화합니다.

각 내부 공유 도메인에는 그룹의 각 구성원에 대해 데이터 일관성이 있고 데이터 액세스를 위해 그룹의 모든 구성원이 만든 내부 공유 가능 속성을 사용하는 데 사용되는 관찰자 세트가 포함되어 있습니다.

각 외부 공유 도메인에는 그룹의 각 구성원에 대해 데이터 일관성이 있고 그룹의 모든 구성원이 만든 외부 공유 가능 속성을 사용하여 데이터 액세스에 사용되는 관찰자 세트가 포함되어 있습니다.

또한 다음과 같은 속성이 있습니다.

각 관찰자는 내부 공유 도메인의 구성원일 뿐입니다.

각 관찰자는 단일 외부 공유 도메인의 구성원만 될 수 있습니다.

내부 공유 가능 도메인의 모든 관찰자는 항상 동일한 외부 공유 가능 도메인의 구성원입니다.

이는 내부 공유 영역이 적절한 하위 집합일 필요는 없지만 외부 공유 영역의 하위 집합임을 의미합니다.

캐시할 수 없는 위치에 대한 모든 데이터 액세스는 모든 관찰자에게 데이터 일관성이 있으므로 캐시할 수 없는 위치는 항상 외부 공유 가능한 것으로 간주됩니다. 내부 공유 도메인은 단일 하이퍼바이저 또는 운영 체제에 의해 제어되는 PE 모음으로 예상됩니다.

시스템에 두 개의 프로세서 클러스터가 있는 경우 다음을 확인해야 합니다.

각 클러스터 내에서 프로세서의 데이터 캐시 및 통합 캐시에서 내부 공유 가능 속성이 있는 모든 메모리 위치로의 데이터 액세스는 투명합니다.

그러나 내부 공유 가능 속성만 있는 경우 두 클러스터 간의 데이터 액세스 중에 일관성을 유지하는 데 캐시가 필요하지 않습니다. 외부 공유 가능 속성인 경우 데이터 일관성이 필요합니다.

이러한 시스템에서 내부 공유 가능 속성의 경우 각 클러스터는 서로 다른 공유 가능 영역에 있지만 외부 공유 가능 속성의 경우 하위 시스템의 모든 구성 요소는 동일한 공유 가능 영역에 있습니다.

시스템은 두 개의 하위 시스템을 구현할 수 있습니다. 한 하위 시스템의 데이터 캐시와 통합 캐시가 다른 하위 시스템에서 액세스할 수 없는 경우 시스템에는 두 개의 외부 공유 가능 영역이 있습니다.

공유 가능한 일반 메모리의 경우 Load-Exclusive 및 Store-Exclusive 명령어는 동일한 공유 도메인에 있는 여러 관찰자(다중 코어)가 액세스할 가능성을 고려합니다.

1.2 공유 불가능한 일반 메모리

일반 메모리 영역의 경우 공유할 수 없는 일반 메모리는 단일 CPU에서만 액세스할 수 있는 일반 메모리의 일부입니다. 공유 불가능 일반 메모리에는 메모리가 캐시 불가능하지 않는 한 여러 관찰자가 데이터 액세스의 일관성을 보장하기 위해 하드웨어가 필요하지 않습니다.

공유 불가능한 메모리의 경우 다른 관찰자가 이 메모리 시스템을 공유하는 경우 소프트웨어는 캐시 유지 관리 관련 지침을 사용하여 여러 관찰자 간의 데이터 통신에서 캐시 일관성 문제를 확인해야 합니다. 또한, 메모리 처리 순서를 보장하기 위해서는 추가적인 메모리 배리어 작업이 필요합니다.

또한, 비공유 메모리의 경우 Load-Exclusive 및 Store-Exclusive 명령어 지원 여부에 대해 다중 관찰자 액세스 가능성이 고려되며 이는 특정 구현 IMPLEMENTATION DEFINED에 의해 정의됩니다.

1.3 일반 메모리의 캐시 가능성 속성

외부 공유 가능, 내부 공유 가능 및 공유 불가능 속성 외에도 각 일반 메모리에는 캐시 속성이 할당됩니다.

연속 기록 캐시 가능.후기록 캐시 가능.

캐시할 수 없습니다.

캐시 속성은 메모리 영역의 공유 도메인 외부에 있는 관찰자에게 일관성 제어 메커니즘을 제공합니다. 어떤 경우에는 연속 기입 캐시나 캐시 불가능 영역을 사용하는 것이 하드웨어 일관성 메커니즘이나 캐시 유지 관리를 사용하는 프로그램을 사용하는 것보다 일관성을 제어하는 ​​더 나은 메커니즘을 제공할 수 있습니다. 이를 위해 아키텍처에서는 캐시 불가능 또는 연속 기입 캐시 메모리에 다음과 같은 속성이 있어야 합니다.

관찰자가 특정 캐시 수준 내의 메모리 시스템에 액세스하면 해당 캐시 수준의 Write-Through 캐시 또는 캐시 불가능한 메모리 위치에 대한 전체 쓰기가 해당 캐시 수준 외부의 메모리 시스템에 액세스하는 모든 관찰자에게 표시됩니다. .은(는) 명시적인 캐시 유지 관리 없이도 표시됩니다.

레벨 캐시 외부의 메모리 시스템에 접근하는 관찰자에 의해 완료된 레벨 캐시에 캐시 불가능

메모리 위치에 대한 쓰기는 명시적인 캐시 유지 관리 없이 해당 수준의 캐시 내부 메모리 시스템에 액세스하는 모든 관찰자에게 표시됩니다.

캐시할 수 없는 일반 메모리 액세스의 경우 DMB 명령어는 단일 주변 장치 또는 IMPLEMENTATION DEFINED 크기 메모리 블록에 대한 모든 액세스에 대해 사전 배리어 순서 관계를 도입합니다.

일반 메모리의 경우 Arm 아키텍처는 두 가지 개념적 캐시 수준(내부 캐시와 외부 캐시)에 대해 독립적으로 정의되는 캐시 속성을 제공합니다. 이러한 개념적 수준 캐시와 구현된 물리적 수준 캐시 간의 관계는 구현이 정의되어 있으며 내부 및 외부 공유 도메인 간의 경계와 구별될 수 있습니다.

내부는 가장 안쪽 캐시, 즉 PE에 가장 가까운 캐시를 나타내며 항상 가장 낮은 수준의 캐시를 포함합니다.

내부 캐시 속성으로 제어되는 캐시는 외부 캐시 속성으로 제어되는 캐시 외부에 위치할 수 없습니다.

특정 구현에서는 외부 캐시가 없을 수도 있습니다. 예를 들어, L1, L2, L3이 있는 3단계 캐시 아키텍처에서는 3개의 캐시가 내부 캐시일 수 있지만 외부 캐시는 없습니다. L1이 내부 캐시이고 L2와 L3이 외부 캐시일 수도 있습니다.

 Information Direct: Linux 커널 소스 코드 기술 학습 경로 + 비디오 튜토리얼 커널 소스 코드

Learning Express: Linux 커널 소스 코드 메모리 조정 파일 시스템 프로세스 관리 장치 드라이버/네트워크 프로토콜 스택

2. 장치 메모리

장치 메모리 유형 속성은 해당 위치에 액세스하면 부작용이 발생할 수 있는 메모리 위치를 정의합니다. 또는 로드에서 반환된 값은 수행된 로드 수에 따라 변경될 수 있습니다. 일반적으로 장치 메모리 특성은 메모리 매핑된 주변 장치 및 유사한 위치에 사용됩니다.

장치 메모리 영역은 일반적으로 USB uart 및 기타 모듈과 같은 일부 주변 장치에 사용됩니다. 우선 non-cacheable, 즉 캐시를 사용할 수 없으며 메모리에 직접 액세스할 수 있습니다. 데이터는 저장만 됩니다. 다른 곳에 백업되지 않으므로 데이터의 고유성과 정확성을 보장할 수 있습니다. 둘째, 주변 장치의 메모리 상호 작용에는 일반적으로 타이밍 요구 사항이 높으므로 읽기 및 쓰기 작업도 제한된 시간 내에 완료되어야 합니다. 또한 캐시를 사용하지 않는 것 외에도 장치 메모리에 액세스하면 추측 액세스와 같은 다른 메모리 액세스 최적화가 없을 수도 있습니다. 대체로 주변 장치가 사용하는 메모리 속성입니다. 주변 장치의 메모리 상호 작용은 적시성, 효율성 및 정확성을 충족해야 합니다.

장치 메모리 속성이 있는 메모리 위치에 대한 추측적 데이터 액세스는 허용되지 않습니다. 이는 모든 장치 메모리 유형에 대한 모든 메모리 액세스가 프로그램의 간단한 순차적 실행을 통해 생성되어야 함을 의미합니다.

제한된 시간 내에 장치 메모리 유형의 메모리 위치에 쓰기가 완료됩니다.

관찰자에 대한 명시적인 메모리 쓰기 효과 없이 장치 메모리 유형의 메모리 위치에서 읽은 반환 값이 변경되는 경우 제한된 시간 동안 시스템의 모든 관찰자에 대해 변경 사항을 전역적으로 관찰해야 합니다. 이러한 변경은 상태 정보를 보유하는 주변 위치에서 발생할 수 있습니다.

장치 메모리 위치에 대한 데이터 액세스는 시스템의 모든 관찰자에게 일관되며 그에 따라 외부 공유 가능으로 간주됩니다.

장치 메모리 속성이 있는 메모리 위치는 캐시에 할당할 수 없습니다.

모든 장치 메모리 유형 액세스의 경우 DMB 명령을 사용하여 단일 주변 장치 또는 지정된 크기의 메모리 블록에 대한 모든 액세스에 사전 배리어 순서 관계를 도입합니다.

메모리 위치가 정렬되지 않은 메모리 액세스를 지원할 수 없는 경우 메모리 위치에 대한 정렬되지 않은 액세스는 위치를 장치로 정의하는 변환의 첫 번째 단계에서 정렬 오류를 생성합니다.

하드웨어는 해당 메모리 위치가 모든 예외 수준에 대해 실행 안 함으로 표시되지 않는 한 장치 메모리 속성이 있는 메모리 위치에서 추측적 명령 가져오기를 차단하지 않습니다.

원저자: Arm Selection

추천

출처blog.csdn.net/youzhangjing_/article/details/132881927