작성: 2020-07-21 수정: 2020-07-21

CPU의 기본 구조

프로그램이 실행될 떄, CPU의 동작에 대한 정리

컴퓨터는 모든정보를 숫자(이진수)로 변경해 처리한다. -> (기계어: Machine Code) 기계어를 사람이 이해 할 수 있는 언어(어셈블리: Assembly)로 변경하는 것을 니모닉(MNemonic)이라고 한다.

프로그램이 실행되는 과정

  1. 프로그램은 기본적으로 보조기억장치에 저장되어 있음.
  2. 보조기억장치의 프로그램을 주기억장치에 적재
  3. 프로그램이 필요로 하는 연산을 CPU가 처리

CPU의 구성 요소들

제어장치, 산술 논리 장치(ALU), 레지스터

  1. 제어장치: skip…
  2. 산술 논리 장치: 실제 연산 작업을 수행하는 장치
  3. 레지스터: 연산이 일어나기 전에 데이터를 임시로 보관하는 장치
레지스터의 종류 기능
주소 레지스터 읽거나 쓸 메모리의 주소 저장
프로그램 카운터 다음 명령어의 메모리 주소 저장
데이터 레지스터 메모리에서 읽어온 데이터 저장
명령어 레지스터 메모리에서 읽어온 명령어 저장
어큐뮬레이터 연산에 사용되는 데이터 저장

CPU가 동작하는 간단한 예제

아래와 같은 프로그램이 동작할 때,

주소 메모리
10 3
11 4
100 LOAD 10
101 ADD 11
102 STORE 12
  1. 최초 프로그램 카운터(이하 PC) 는 100번지를 가르키고 있다. (PC <- 100)
  2. PC의 주소를 메모리 주소 레지스터(이하 MAR에) 전달한다. (MAR <- 100)
  3. MAR의 주소에 있는 실제 데이터를 메모리 데이터 레지스터(이하 MDR)에 적재한다. (MDR <- LOAD 10)
  4. 해당 데이터(LOAD 10)가 값이 아닌 명령어기 떄문에 명령어 레지스터(이하 IR)에 전달한다. (IR <- LOAD 10)
  5. PC의 값이 1 증가한다. (PC <- 101)
  6. IR의 명령어를 제어 장치에 전달한다. (Control Unit <- LOAD 10)
  7. 제어 장치는 해당 명령어를 해독(DECODE) 한다. (LOAD 10)
  8. 제어 장치는 MAR에 10을 전달 한다. (MAR <- 10)
  9. MDR에 MAR의 주소의 실제 데이터를 적재한다. (MDR <- 3)
  10. 해당 데이터는 명령어가 아닌 값이기 때문에, IR이 아닌 어큐뮬레이터(이하 ACC)로 전달한다. (ACC <- 3)
  11. PC가 가르키는 101번지 주소를 MAR에 전달한다. (MAR <- 101)
  12. 101번지의 데이터(ADD 11)를 MDR에 적재한다. (MDR <- ADD 11)
  13. 해당 데이터가 명령어 이기 때문에 IR에 전달한다. (IR <- ADD 11)
  14. PC의 값이 1 증가 한다. (PC <- 102)
  15. IR의 값을 제어 장치로 전달하고, 제어 장치는 해당 명령어(ADD 11)를 DECODE 한다. (Control Unit <- ADD 11)
  16. ACC의 값을 ALU(산술 논리 장치)에 전달한다. (ALU <- 3)
  17. 제어 장치는 MAR에 11번지의 주소를 전달한다. (MAR <- 11)
  18. MDR은 MAR의 주소의 실제 데이터를 적재한다. (MDR <- 4)
  19. MDR의 데이터를 ACC로 전달한다. (ACC <- 4)
  20. ACC의 값을 ALU에 전달되어 이전의 3과 ADD 연산이 일어난다. (ALU <- 7)
  21. ALU의 값(7)을 ACC로 전달한다. (ACC <- 7)
  22. PC의 값을 MAR로 전달한다. (MAR <- 102)
  23. MAR의 주소의 실제 데이터를 MDR에 적제 한다. (MDR <- STORE 12)
  24. MDR의 값이 값이 아닌 명령어이기 때문에 IR로 전달된다. (IR <- STORE 12)
  25. PC의 값이 증가한다. (PC <- 103)
  26. IR의 값을 제어장치에 전달하고 제어장치는 해당 명령어를 DECODE 한다. (Control Unit <- STORE 102)
  27. 제어 장치는 MAR에 12번지의 주소를 전달한다. (MAR <- 12)
  28. ACC의 값(7)을 MDR에 전달한다. (MDR <- 7)
  29. MDR의 데이터를 MAR의 주소(12)에 저장한다. (12번지 <- 7)