김종현 컴퓨터 구조론 개정 5판 생릉출판사, 김종상 컴퓨터 시스템 구조 3판 프로텍미디어를 정리하여 정리하였다.
1. 명령 실행
– CPU는 명령이 저장된 메모리에서 명령을 받아 실행함으로써 작업을 수행합니다.
– CPU 명령을 실행하는 데 필요한 프로세스를 명령 주기라고 합니다.
그것은 말한다.
이 명령 주기는 CPU 프로그램이 실행되는 순간부터 전원이 꺼지거나 복구할 수 없는 오류로 중단될 때까지 반복됩니다.
– 명령 실행은 크게 두 부분으로 나뉩니다.
CPU 메모리에서 명령어를 읽는 단계를 명령어 가져오기라고 합니다.
명령문을 실행하는 단계를 명령문 실행이라고 합니다.
로 나누어
2. CPU 내부 레지스터
2-1) 프로그램 카운터(PC) :
가져온 다음 명령의 주소를 포함하는 레지스터오전. 명령문을 가져온 후 내용은 자동으로 1씩 증가합니다(PC ← PC + 1). 분기 명령이 실행되면 대상 주소로 업데이트됩니다.
2-2) 어큐뮬레이터(AC) :
데이터를 임시로 저장하는 레지스터오전. 이 레지스터의 비트 수는 CPU가 한 번에 처리할 수 있는 데이터의 양, 즉 단어 길이에 해당합니다.
2-3) 명령어 레지스터(IR) :
이 레지스터에는 가져온 마지막 명령이 포함되어 있습니다.
2-4) 메모리 주소 레지스터(MAR):
시스템 주소 버스에 로드되기 전에 PC에 저장된 명령 주소를 임시로 저장하는 주소 레지스터입니다.
오전. 이 레지스터의 출력 라인은 주소 버스 라인에 직접 연결됩니다.
2-5) 메모리 버퍼 레지스터(MBR):
저장 장치에 저장하거나 저장 장치에서 읽을 데이터를 임시로 저장하는 버퍼 레지스터.오전. 이 레지스터의 입력 및 출력 라인은 데이터 버스 라인에 직접 연결됩니다.
3. 지급 주기
– CPU 명령을 받다할 단계오전. 각 명령어 사이클이 시작될 때 CPU는 PC가 가리키는 메모리 위치에서 명령을 검색합니다.
다음 다음 명령어를 순서대로 읽을 수 있도록 PC를 1씩 늘립니다.
이 과정을 폴링 주기라고 합니다.
– Fetch Cycle의 각 단계에서 수행되는 연산은 다음과 같이 Micro-Operation으로 표현된다.
t0: 3월 ← PC
t0: CPU 내부 버스를 통해 PC의 내용을 MAR로 보냅니다.
주소는 시스템 주소 버스에 직접 연결된 MAR을 통해 메모리로 전송됩니다.
t1 : MBR ← M(MAR), PC ← PC + 1
t1: 주소로 표시된 메모리 위치에서 읽은 명령어가 MBR에 로드되고 PC에 다음 명령어를 가리키도록 1이 추가됩니다.
t2: IR ← MBR
t2: MBR에 저장된 명령 코드를 IR로 보냅니다.
– 여기서 t0, t1, t2는 CPU 클록의 각 주기~을 참고하여 인출 명령은 이 클럭 주기를 사용합니다.
예를 들어 CPU의 클록 주파수가 1GHz인 경우 각 클록 주기는 1ns입니다.
클럭이 3개이므로 1ns * 3 = 3ns가 걸립니다.
4. 실행 주기
– CPU 디코드 명령그에 따라 산술을 수행하다할 단계오전. 다음과 같은 유형의 작업이 있습니다.
(1) 데이터 이동 : CPU와 메모리 간 또는 CPU와 I/O 장치 간 데이터 이동
(2) 데이터 처리 : 데이터에 대한 산술 또는 논리 연산 수행
(3) 데이터 저장 : 연산 결과 데이터 또는 입력 장치에서 읽은 데이터를 저장 장치에 저장
(4) 프로그램 제어 : 프로그램 실행 순서 결정
– 명령은 연산 코드 + 피연산자(addr) 구성되었습니다
CPU가 수행할 연산은 연산 코드에 지정되며 피연산자는 명령어가 사용할 데이터가 저장되는 메모리 주소를 나타냅니다.
네 가지 동작에 해당하는 명령의 예는 다음과 같습니다.
– 실행 주기의 모든 명령어는 IR에 로드된 명령어를 꺼내서 시작합니다.
인출 주기가 끝날 때 명령어가 IR에 로드되기 때문입니다.
4-1) 데이터 이동: 로드 중 주소
t0: 3월 ← IR(주소)
IR에 로드된 명령의 피연산자 주소는 MAR을 통해 저장 장치로 전송됩니다.
t1: MBR ← 엠(마르)
데이터는 주소로 표시된 메모리 위치에서 검색되어 MBR에 저장됩니다.
t2: AC ← MBR
LOAD 명령은 MBR에 저장된 데이터를 AC 레지스터로 로드하여 완료됩니다.
4-2) 데이터 저장: STA 주소
t0: 3월←IR(주소)
데이터를 저장할 메모리 위치의 주소가 MAR로 전송됩니다.
t1: MBR ← 교류
버퍼 레지스터 MBR에 저장할 데이터를 보낸다.
이러한 방식으로 저장할 주소 위치와 저장할 데이터가 모두 메모리로 전송되었습니다.
t2 : 남(3월) ← MBR
데이터는 주소로 지정된 메모리 위치에 저장됩니다.
4-3) 데이터 처리: 주소 추가
산술 데이터 처리 연산은 다양하지만 덧셈 연산의 예는 다음과 같다.
추가 연산은 AC 레지스터의 내용과 메모리에 저장된 데이터를 더하고 AC 레지스터에 다시 저장합니다.
t0: 3월 ← IR(주소)
명령의 피연산자는 주소 버스를 통해 메모리로 전송됩니다.
t1: MBR ← 엠(마르)
데이터는 저장 위치에서 가져와 MBR에 로드됩니다.
t2: AC ← 교류 +MBR
AC 레지스터의 데이터와 내용이 더해지고 그 결과가 다시 AC 레지스터에 저장됩니다.
4-4) 프로그램 제어: JUMP 주소
일반적으로 명령어는 메모리에 저장된 순서대로 실행됩니다.
pc가 1씩 증가하면 다음 명령을 실행합니다.
명령의 실행 순서를 결정하기 위해 별도의 명령이 필요하지 않습니다.
그러나 완전히 다른 곳에서 명령을 수행해야 하는 경우 프로그램 수행 순서를 조정하는 연산이 필요합니다.
따라서 현재 PC 내용이 나타내는 위치가 아닌 다른 위치의 명령으로 실행 순서를 변경하는 명령을 분기 명령이라고 합니다.
t0: PC ← IR(주소)
여기서 피연산자는 분기의 대상 주소를 가리키므로 실행 주기는 해당 주소를 PC로 로드하기만 하면 됩니다.
그런 다음 다음 명령어 가져오기 주기에서 해당 주소가 가리키는 메모리 위치에서 명령어를 가져오므로 명령어 실행 순서가 반대로 됩니다.