모델별 레지스터

Model-specific register

모델별 레지스터(MSR)는 디버깅, 프로그램 실행 추적, 컴퓨터 성능 모니터링 및 특정 CPU 기능 전환에 사용되는 x86 명령 집합의 다양한 제어 레지스터 중 하나이다.

역사

인텔은 80386 프로세서의 도입과 함께 향후 버전의 프로세서에서는 반드시 존재하지 않는 "실험적" 기능을 도입하기 시작했다.그 중 첫 번째는 프로세서의 TLB(Translation Lookaside Buffer)의 시험을 가능하게 하는 두 개의 "테스트 레지스터"(TR6 및 TR7)로, 이 두 개의 특별한 변형이다.MOV 지침은 시험 레지스터로 이동하거나 시험 레지스터에서 이동할 수 있다.[1]코드와 데이터에 대한 프로세서의 캐시의 테스트를 가능하게 하는 80486(TR3–TR5)에 3개의 추가 시험 레지스터가 뒤따랐다.[2]이 다섯 개의 레지스터 중 어느 것도 후속 Pentium 프로세서에서 구현되지 않았다. MOV의 특별한 변종에서는 잘못된 opcode 예외가 생성되었다.[3][4]

인텔은 펜티엄 프로세서의 도입으로 현재와 미래의 "모델별 레지스터"에 접속하기 위한 지침(RDMSR, WRMSR)과 특정 모델에 어떤 기능이 있는지 판단하기 위한 CPUID 지침을 제공했다.이 등록부들 중 많은 수가 보관할 수 있을 만큼 유용하다는 것이 입증되었다.인텔은 이를 아키텍처 모델별 레지스터로 분류하고 향후 제품군에 포함시키기로 약속했다.[5]

MSR 사용

이러한 레지스터에 대한 읽기 및 쓰기 작업은rdmsr그리고wrmsr각각 지시사항.이것들은 특권적인 지침이기 때문에 운영체제에 의해서만 실행될 수 있다.Linux msr 커널 모듈을 사용하면 유사 파일 "/dev/cpu/x/msr"이 생성된다(각 프로세서 또는 프로세서 코어에 대해 고유한 x).이 파일에 읽기 및/또는 쓰기 권한이 있는 사용자는 I/O API 파일을 사용하여 이러한 레지스터에 액세스할 수 있다.msr-tools[6] 패키지는 참조 구현을 제공한다.

특정 프로세서 구현이 지원하는 MSR에 대한 설명서는 일반적으로 CPU 벤더의 프로세서 설명서에서 찾을 수 있다.다소 잘 알려진 MSR의 예로는 메모리 유형 범위 레지스터(MTRR)와 주소 범위 레지스터(ARR)가 있다.

참고 항목

참조

  1. ^ "10.6.2 Test Registers". 80386 PROGRAMMER'S REFERENCE MANUAL (PDF). Intel. 1986.
  2. ^ "10.6.2 Test Registers". i486 PROCESSOR PROGRAMMER'S REFERENCE MANUAL (PDF). Intel. 1990.
  3. ^ "23.2.12 Test Registers". Pentium Processor User's Manual Volume 3: Architecture and Programming Manual (PDF). Intel. 1993.
  4. ^ Alan Cruse. "Model-Specific Registers" (PPT). Lecture notes, Advanced Microcomputer Programming class, University of San Francisco, 2006.
  5. ^ "2.1 ARCHITECTURAL MSRS". Intel 64 and IA-32 Architectures Software Developer's Manual Volume 4: Model-Specific Registers. Intel. May 2020.
  6. ^ msr-tools 01.org

외부 링크