2014-09-26 2 views
3

내가 이해할 수 :메모리 계층 구조 - 왜 레지스터가 비쌉니까?

빠른 액세스 시간> 비싼

느린 액세스 시간>이하 비싼

나는 또한 레지스터 계층 구조의 맨 위에있는 것을 이해

, 가장 빠른 액세스 시간을가집니다. 조사하는데 어려움을 겪고있는 것은 입니다. 왜이 그렇게 비쌉니까? 필자가 아는 한 레지스터는 말 그대로 ALU에 직접 내장 된 회로입니다. 문자 그대로 CPU (ALU 특히)에 내장되어 있다면 사실 가장 비용이 많이 듭니까?

크기 (레지스터는 가장 작음)입니까?

+1

주소 지정을 고려하십시오. 그것들은 ALU에 가깝기 때문에, 레지스터 mux 선택을위한 최소 버스 너비가 있습니다. 이것은 명령 폭과 직접 관련이 있으며, 제한된 수의 레지스터 만 선택할 수 있습니다. 1024 개의 범용 레지스터가있는 경우 명령어에서 각 레지스터를 선택하기 위해 10 비트가 필요합니다. –

+1

시계에 대해서도 생각해보십시오. 당신이 갖고있는 것의 크기가 클수록 클수록 느린 클록 주파수가 요구됩니다. 이것이 RAM이 CPU보다 낮은 클럭 주파수에서 실행되는 이유입니다. –

+1

수요와 공급. 레지스터는 매우 부족하므로 매우 비쌉니다. L1 캐시는 부족하지만 레지스터는 아닙니다. L2가 더 풍부 해. RAM이 충분합니다. 디스크가 풍부합니다. S3은 무한합니다. 더 풍부하고 저렴하지만 액세스 속도는 느립니다. –

답변

5

레지스터는 매우 빠르고 매우 빨라야하며 많은 장소에서 동시에 액세스해야하기 때문에 레지스터가 매우 비쌉니다.

예를 들어 a = a + x; b = b + x; c = c + x; 당신은 모두 같은 레지스터를 읽고 싶어하는 세 가지 명령어가 있습니다. 따라서 레지스터는 단순한 메모리가 아닙니다. 프로세서에 있어야하는 모든 데이터 경로가 있으므로 x를 보유하는 레지스터의 동일한 데이터를 동시에 세 개의 명령으로 보낼 수 있습니다. 그리고 데이터는 많은 곳으로 갈 수 있습니다. 당신이 double a = x라고 쓰면; x가 정수인 경우 레지스터 x를 부동 소수점 장치로 보내는 데이터 경로가 있어야합니다. 또는 벡터 단위로. 등등.

그런 다음 데이터를 저장할 필요가있을뿐만 아니라 데이터를 사용할 수 있는지도 확인해야하는 문제가 있습니다. 만약 당신이 x = y + z; a = a + x; 누군가는 첫 번째 명령이 실행될 때 추가 결과가 저장 될 때까지 현재 x가 유효하지 않은 레지스터를 추적하고 실행중인 두 번째 추가를 중지해야합니다. 그것은 매우 비싸다.

그래서 약간의 메모리를 추가하는 것보다 레지스터를 만드는 것이 훨씬 더 많습니다. 그리고 그 댓가를 지불해야합니다. 레지스터는 프로세서의 속도에 매우 중요하므로 가장 비싸고 가장 빠른 기술로 프로세서를 구축 할 수 있습니다.