레지스터란 무엇입니까?

컴퓨터에 특별한 관심이 없다면 컴퓨터의 유일한 형태의 메모리가 하드 드라이브와 RAM이라고 가정해도 무방할 것입니다. 컴퓨터에 관심이 있는 사람들은 이것이 사실이 아니라는 것을 알 것입니다. CPU에는 또한 CPU가 액세스할 수 있도록 RAM에서 데이터를 캐시하는 데 사용되는 캐시 세트가 있습니다. 더 빠르게. 주로 속도 및/또는 용량이 적절한 판매 포인트이고 일반적으로 성능 수준에 영향을 미치기 때문에 이러한 모든 기능은 광고된 기능입니다.

그러나 실제로는 다른 메모리 계층이 있습니다. L1 캐시가 실제 처리 코어에 최대한 가깝다고 생각할 수 있지만 메모리 계층 구조에는 다른 상위 계층이 있습니다. 이것은 CPU 레지스터입니다. 이것들이 실제로 광고되거나 언급되지 않는 이유는 실제로 전혀 변경되지 않기 때문입니다. 기술적으로 레지스터의 수와 크기는 실제로 아키텍처의 기본 요소일 수 있습니다. 이는 모든 x86-64 CPU가 동일한 수의 레지스터를 갖는다는 것을 의미합니다. 경쟁 포인트가 아니기 때문에 마케팅되지 않습니다.

레지스터는 무엇을 합니까?

레지스터는 프로세서에 대해 빠르게 사용할 수 있는 저장 위치입니다. 레지스터에 대한 액세스는 제로 레이턴시로 즉각적이지만 L1 캐시조차도 최신 CPU에서 대략 4-5 사이클 레이턴시를 갖습니다. 이러한 액세스의 즉각성은 레지스터의 사용 사례를 암시합니다. 레지스터는 CPU에 의해 능동적으로 작동되는 명령어를 저장하는 데 사용됩니다. 또한 처리할 데이터 포인트를 저장합니다. 일부 레지스터는 범용이고 다른 레지스터는 매우 구체적인 목적을 가지고 있습니다. 특수 목적 레지스터의 예는 프로세서가 프로그램 시퀀스에서 자신의 위치를 ​​추적하는 프로그램 카운터입니다.

많은 레지스터는 사용자가 액세스할 수 있는 것으로 간주됩니다. 그렇다고 해서 컴퓨터 사용자가 입력할 값을 선택할 수 있는 것은 아닙니다. 이는 실행 중인 소프트웨어가 이러한 레지스터에 로드할 데이터를 지정할 수 있음을 의미합니다. 더 적은 수의 레지스터가 내부에 있으므로 소프트웨어가 해당 레지스터를 전혀 처리할 수 없습니다. 현재 실행 중인 명령어를 저장하는 명령어 레지스터는 내부 레지스터의 한 예이다.

이름 변경 등록

CPU 아키텍처는 레지스터의 단일 구성만 허용할 수 있지만 실제로 약간의 뉘앙스가 있습니다. 모든 최신 CPU는 레지스터 이름 바꾸기를 사용합니다. 이것은 더 많은 물리적 레지스터를 갖고 이를 사용하여 데이터를 미리 로드하거나 그렇지 않으면 덮어쓰여졌을 비순차 명령어와 관련된 데이터를 저장할 수 있는 기술입니다. CPU가 추가 레지스터의 데이터를 필요로 하는 지점에 도달하면 이전에 주소 지정이 가능한 레지스터를 주소 지정 불가능으로 만드는 동시에 주소 지정이 가능하도록 이름을 변경합니다.

레지스터 이름 변경 프로세스는 비순차적 실행에 매우 유용할 수 있습니다. 예를 들어, 메모리 위치가 다음에 기록되도록 프로그램되어 있고 명령이 그 순서대로 실행되었다면 괜찮습니다. 그러나 쓰기를 먼저 수행하도록 명령을 재정렬하면 읽기 명령이 잘못된 값을 얻게 됩니다. 이를 방지하기 위해 읽을 원래 값은 사용되지 않은 레지스터에 저장되어 관련 명령어가 처리될 때 이름이 바뀝니다.

결론

레지스터는 메모리 계층에서 가장 높은 계층입니다. CPU에서 직접 주소를 지정할 수 있는 유일한 부분이며 대기 시간이 없습니다. 레지스터는 CPU에서 활발하게 실행 중인 데이터를 저장하는 데 사용됩니다. 또한 어떤 명령어가 다음에 실행될 것인지 추적하는 프로그램 카운터와 같은 다른 데이터 포인트를 저장하는 데 사용됩니다. AVX-512 지원 여부에 따라 16개의 범용 레지스터와 16 또는 32개의 부동 소수점 레지스터가 있는 x86-64 아키텍처에서 매우 제한된 수의 레지스터를 사용할 수 있습니다.