그들은 동일하지 않습니다. 레지스터는 CPU가 실제로 작업하는 값이있는 위치입니다. CPU 설계는 레지스터에있을 때만 실제로 값을 수정하거나 다른 방식으로 작동 할 수 있도록합니다. 따라서 레지스터는 논리를 작동시킬 수 있지만 메모리 (캐시 포함)는 CPU가 읽고 쓰는 값만 보유 할 수 있습니다.
직장에서 목수를 상상해보십시오. 그는 자신의 손 (레지스터)에 몇 가지 항목을 가지고 있으며 자주 작업하는 워크 벤치 (캐시)에 아주 가까이 있지만이 순간에는 올바르게 사용하지 않고 작업장 (메인 메모리)에 관련된 것들 현재 진행중인 프로젝트이지만 워크 벤치에있을만큼 즉시 중요하지는 않습니다.
편집 : 다음은 레지스터 논리의 작동 방식에 대한 간단한 설명입니다.
R1..R4라는 네 개의 레지스터가 있다고 상상해 봅시다. 다음과 같은 문장을 컴파일하면 :
x = y + z * 3;
컴파일러는 (해체 할 때) 다음과 같은 기계 코드를 출력합니다.
LOAD R1, ADDRESS_Z //move the value of Z into register 1
MUL R1, 3 //multiply the value of register 1 by 3
LOAD R2, ADDRESS_Y //move the value of Y into register 2
ADD R1, R2 //adds the value in R2 to the value in R1
STORE R1, ADDRESS_X //move the value of register 1 into X
대부분의 최신 CPU에는 32 비트 또는 64 비트 폭의 레지스터가 있으므로 보유 할 수있는 크기까지 모든 값을 계산할 수 있습니다. 더 작은 값을 위해 특수 레지스터가 필요하지 않습니다. 레지스터의 일부만 사용하도록 지시하는 특수 ASM 명령어 만 사용합니다. 그리고 두 손만 가진 목수와 마찬가지로 레지스터는 한 번에 적은 양의 데이터 만 보유 할 수 있지만 활성 데이터를주고받으며 재사용 할 수 있습니다. 즉, "많은 레지스터"는 그렇지 않습니다. 결국 필요합니다. (물론 사용할 수있는 것이 많으면 물론 컴파일러가 더 빠른 코드를 생성 할 수 있지만 꼭 필요한 것은 아닙니다.)