문제

CPU의 제어 장치가 레지스터에서 데이터를 검색하는 방법은 무엇입니까?비트로 비트를 검색합니까?

예를 들어 두 개의 숫자를 추가하는 경우 a + b, 계산이 메모리 레벨에서 어떻게 발생합니까?

도움이 되었습니까?

해결책

16 개의 32 비트 레지스터와 32 비트 정수를 추가 할 수있는 단위가있는 프로세서가 있다고합시다. 등록 x를 추가하고 y를 등록하고 등록 z에 등록을 저장하는 매우 단순화 된 방법은 다음과 같습니다.

먼저 x 숫자가 주어진 하드웨어를 만들고 레지스터 x의 첫 번째 비트를 선택하고 "Operand1"의 첫 번째 비트로 이동할 수 있습니다. 이것은 X가 16 개의 값 중 하나 일 수 있고 하드웨어가 16 개의 레지스터 중 하나의 첫 번째 비트를 읽을 수 있어야하기 때문에 실제로는 매우 복잡합니다.

두 번째 로이 하드웨어를 사용하고 32 개 복사본을 만들고 각 비트에 대해 하나의 복사본을 등록하십시오. 이제 우리는 512 비트 중 32 비트를 옮길 수있는 매우 복잡한 하드웨어가 있습니다.

셋째,이 모든 것을 "operand2"로 이동하기 위해 적절한 변경 사항을 적절한 변경 사항으로 복제합니다.

넷째, 우리는 Operand1 및 Operand2를 추가 할 수있는 하드웨어를 구축하고 32 비트 위치 "출력"

에 합계를 저장합니다.

및 다섯째, "출력"에서 값을 취할 수있는 하드웨어를 구축합니다. 그것을 등록 z에 저장하십시오.

다른 팁

CPU는 레지스터에 직접 액세스 할 수 있습니다. a 및 b 이 이미 레지스터에있는 경우, CPU는 (산술 논리 단위를 통해)을 직접 (산술 논리 단위를 통해) 및 출력을 저장할 수 있습니다.메모리에 대한 액세스가 필요하지 않습니다.그러나 데이터 A 및 B 을 메모리 또는 스택에서 레지스터로 이동하고 그 반대로 이동할 수 있습니다.이들은 별도의 작업입니다.

레지스터는 크기가 4 ~ 64 비트 일 수 있으며 CPU 아키텍처에 따라 다릅니다. x86-64 CPU 레지스터는 64 비트이므로 2 개의 64 비트 숫자가 하나의 동작이다.

( CPU 레지스터 은 메모리보다 CPU의 일부로 간주됩니다. 놀랍게도 주소 지정은 매우 다릅니다.)
제어 유닛 은 일반적으로 범용 레지스터의 값에 액세스하지 않습니다. 그것은 ALU를 예를 들어, 예를 들어, 레지스터 값을 공급하는 것을 제어합니다. 단어 에 의해.
(거기 은 DEC PDP-8 / s 또는 모토로라 14500과 같은 것과 같습니다.)

아키텍처 ( "논리적"레지스터 )이 있으며 구현 이 있습니다. 여기서 Register Renaming 물리적 레지스터에서 논리 레지스터를 추상화합니다.
2- 피연산자 지침은 여러 읽기 포트를 발생시킵니다.
(다음, 지침 수준 병렬 처리 , 여러 쓰기 포트도).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 cs.stackexchange
scroll top