Special Purpose Registers

  • AR(Address Register): 메모리 주소 저장, size 12
  • PC(Program Counter): 다음에 실행될 명령어의 주소 저장, size 12
  • IR(Instruction Register): 지금 실행될 명령어 저장, size 16
  • DR(Data Register): 데이터를 저장, size 16
  • TR(Temporary Register): 임시 데이터 저장, size 16
  • AC(Accumulator): 산술연산, AC <- AC + DR, size 16

Data units in CPU

  • 이 그림을 그릴줄 알아야 함
  • 7개의 레지스터가 버스를 통해서 서로 연결
  • 데이터가 동시에 들어오면 안되기 때문에 MUX(multiplexer)를 통해 데이터를 보낼 레지스터 결정
  • ex: S2 = 1 S1 = 1 S0 = 1이라면, Memory Unit으로 데이터가 흘러감
  • ex: PC에 있는 값을 AR로 보내고 싶다면? S2, S1, S2를 각각 010으로 세팅하고 AR의 LD를 1로 세팅
  • LD(load): 이 단자의 값이 1이면 버스를 통해 해당 레지스터로 데이터가 들어옴
  • INR(increment): 이 단자의 값이 1이면 레지스터가 1 증가
  • CLR(clear): 이 단자의 값이 1이면 레지스터 값이 0이 됌
  • IR에는 레지스터 값이 변하면 안되므로 LD단자 밖에 없다
  • Memory Unit의 주소를 Address 단자를 통해 AR이 결정한다
  • E(overflow bit)

CPu Instruction Cycle

  1. Instruction Fetch
  • 메모리에서 IR로 명령어를 가져옴
  1. Decode
  • IR의 명령어 opcode를 알아냄
  1. Decide effective address, if MRI instruction
  • 메모리로부터 effective address를 읽어들임 (if I bit = 1)
  1. Data Fetch, if necessary, if MRI instruction
  2. Execute
  • decoded instruction을 실행
  1. Store result data, if necessary
  • result data를 AC로부터 타겟 메모리 주소에 씀

예시로 보는 프로그램의 CPU단 실행 순서

  1. 프로그램의 아이콘을 클릭
  2. OS가 HDD(SSD)에서 해당 파일을 찾는다
  3. OS가 메인메모리에서 빈 공간을 찾는다
  4. OS가 프로그램의 첫 번째 명령어의 주소를 불러온다
  5. CPU가 PC값을 AR로 보낸다 (AR <- PC)
  6. CPU가 M[AR]의 값을 IR로 보내고 PC값을 증가 시킴 (IR <- M[AR], PC++)
  7. CPU가 IR에 저장된 명령어를 decode한다 (AR <- IR(0-11))
  8. CPU가 메인메모리에서 DR로 데이터를 이동시킨다 (DR <- M[AR])
  9. CPU가 adder와 AC를 이용해 ADD op를 실행시킨다 (AC <- AC+DR)