작성: 2020-07-21 수정:
2020-07-21
CPU의 기본 구조
프로그램이 실행될 떄, CPU의 동작에 대한 정리
컴퓨터는 모든정보를 숫자(이진수)로 변경해 처리한다. -> (기계어: Machine Code) 기계어를 사람이 이해 할 수 있는 언어(어셈블리: Assembly)로 변경하는 것을 니모닉(MNemonic)이라고 한다.
프로그램이 실행되는 과정
- 프로그램은 기본적으로 보조기억장치에 저장되어 있음.
- 보조기억장치의 프로그램을 주기억장치에 적재
- 프로그램이 필요로 하는 연산을 CPU가 처리
CPU의 구성 요소들
제어장치, 산술 논리 장치(ALU), 레지스터
- 제어장치: skip…
- 산술 논리 장치: 실제 연산 작업을 수행하는 장치
- 레지스터: 연산이 일어나기 전에 데이터를 임시로 보관하는 장치
레지스터의 종류 | 기능 |
---|---|
주소 레지스터 | 읽거나 쓸 메모리의 주소 저장 |
프로그램 카운터 | 다음 명령어의 메모리 주소 저장 |
데이터 레지스터 | 메모리에서 읽어온 데이터 저장 |
명령어 레지스터 | 메모리에서 읽어온 명령어 저장 |
어큐뮬레이터 | 연산에 사용되는 데이터 저장 |
CPU가 동작하는 간단한 예제
아래와 같은 프로그램이 동작할 때,
주소 | 메모리 |
---|---|
10 | 3 |
11 | 4 |
… | … |
100 | LOAD 10 |
101 | ADD 11 |
102 | STORE 12 |
- 최초 프로그램 카운터(이하 PC) 는 100번지를 가르키고 있다. (PC <- 100)
- PC의 주소를 메모리 주소 레지스터(이하 MAR에) 전달한다. (MAR <- 100)
- MAR의 주소에 있는 실제 데이터를 메모리 데이터 레지스터(이하 MDR)에 적재한다. (MDR <- LOAD 10)
- 해당 데이터(LOAD 10)가 값이 아닌 명령어기 떄문에 명령어 레지스터(이하 IR)에 전달한다. (IR <- LOAD 10)
- PC의 값이 1 증가한다. (PC <- 101)
- IR의 명령어를 제어 장치에 전달한다. (Control Unit <- LOAD 10)
- 제어 장치는 해당 명령어를 해독(DECODE) 한다. (LOAD 10)
- 제어 장치는 MAR에 10을 전달 한다. (MAR <- 10)
- MDR에 MAR의 주소의 실제 데이터를 적재한다. (MDR <- 3)
- 해당 데이터는 명령어가 아닌 값이기 때문에, IR이 아닌 어큐뮬레이터(이하 ACC)로 전달한다. (ACC <- 3)
- PC가 가르키는 101번지 주소를 MAR에 전달한다. (MAR <- 101)
- 101번지의 데이터(ADD 11)를 MDR에 적재한다. (MDR <- ADD 11)
- 해당 데이터가 명령어 이기 때문에 IR에 전달한다. (IR <- ADD 11)
- PC의 값이 1 증가 한다. (PC <- 102)
- IR의 값을 제어 장치로 전달하고, 제어 장치는 해당 명령어(ADD 11)를 DECODE 한다. (Control Unit <- ADD 11)
- ACC의 값을 ALU(산술 논리 장치)에 전달한다. (ALU <- 3)
- 제어 장치는 MAR에 11번지의 주소를 전달한다. (MAR <- 11)
- MDR은 MAR의 주소의 실제 데이터를 적재한다. (MDR <- 4)
- MDR의 데이터를 ACC로 전달한다. (ACC <- 4)
- ACC의 값을 ALU에 전달되어 이전의 3과 ADD 연산이 일어난다. (ALU <- 7)
- ALU의 값(7)을 ACC로 전달한다. (ACC <- 7)
- PC의 값을 MAR로 전달한다. (MAR <- 102)
- MAR의 주소의 실제 데이터를 MDR에 적제 한다. (MDR <- STORE 12)
- MDR의 값이 값이 아닌 명령어이기 때문에 IR로 전달된다. (IR <- STORE 12)
- PC의 값이 증가한다. (PC <- 103)
- IR의 값을 제어장치에 전달하고 제어장치는 해당 명령어를 DECODE 한다. (Control Unit <- STORE 102)
- 제어 장치는 MAR에 12번지의 주소를 전달한다. (MAR <- 12)
- ACC의 값(7)을 MDR에 전달한다. (MDR <- 7)
- MDR의 데이터를 MAR의 주소(12)에 저장한다. (12번지 <- 7)