1. CPU의 동작
int a = 2; // 메모리 100 번지
int b = 3; // 메모리 101 번지
int sum; // 메모리 103 번지
sum = a + b
위의 코드를 CPU가 이해할 수 있으려면 컴파일러를 이용해 기계어로 변환해야 하지만,
사람이 이해할 수 있도록 아래와 같은 유사코드로 변환했다고 가정한다.
LOAD mem(100), register 1; // 메모리 100번지 데이터를 레지스터1로 이동
LOAD mem(101), register 2; // 메모리 101번지 데이터를 레지스터2로 이동
ADD register 5, register 1, register 2; // 레지스터 1과 레지스터 2를 더한 후 레지스터 5에 임시저장
MOVE register 5, mem(103); // 레지스터 5의 결과를 메모리 103번지에 저장
1. LOAD
제어장치는 메모리 100 번지의 값을 레지스터 1로 옮기라는 명령을 내린다.
제어장치는 메모리 101 번지의 값을 레지스터 2로 옮기라는 명령을 내린다.
2. ADD
제어장치는 레지스터 1과 2의 값을 ALU로 보내서 더하라는 명령을 내린다.
결과값 5는 레지스터 5에 임시로 보관된다.
3. MOVE
레지스터 5의 값을 메모리 103 번지로 옮기라는 명령을 내린다.
2. 레지스터의 작동
LOAD mem(100), register 1; // 메모리 100번지 데이터를 레지스터 1로 이동
해당 명령어가 어떻게 처리되는지 레지스터를 중심으로 정리한다.
1. 프로그램 카운터
실행해야 하는 코드의 행 번호 1이 저장되어 있다고 가정한다.
1이 제어장치에 전달되면 해당 명령어가 실행되고 명령어 레지스터에 명령어가 탑재된다.
2. 명령어 레지스터
제어장치가 명령어 레지스터의 명령어를 해석해서 메모리 100 번지에 있는 데이터를 가져오라는 제어신호를 보낸다.
3. 메모리 주소 레지스터
100이라는 메모리 주소가 저장된다. 메모리에 있는 데이터를 CPU로 옮기는 일은 메모리 관리자가 담당한다.
메모리 주소 레지스터에 있는 100을 읽어 메모리에 저장된 값 2를 메모리 버퍼 레지스터에 보낸다.
4. 메모리 버퍼 레지스터
제어장치는 메모리 버퍼 레지스터에 레지스터 1로 저장된 값 2를 옮기라는 제어 신호를 보내고, 레지스터 1에 2가 담긴다.
'CS > 컴퓨터 구조' 카테고리의 다른 글
[컴퓨터 구조] 메모리의 종류 (0) | 2024.11.17 |
---|---|
[컴퓨터 구조] 시스템 버스(FSB) (0) | 2024.11.16 |
[컴퓨터 구조] 명령어 주소 지정 방식 (0) | 2024.11.12 |
[컴퓨터 구조] 명령어의 구조 (0) | 2024.11.11 |
[컴퓨터 구조] CPU의 기본 구성 (0) | 2024.11.10 |