[컴퓨터시스템구조] 7일차 - instruction cycle



만든 날짜:2018-09-18 오후 12:52
해당 글은 수업을 들으며 정리한 내용입니다. 오류 및 개인적인 내용이 다수 포함 될 수 있습니다. 또는 학습에는 적합하지 않을 수 있습니다.




(외울필요없다 종이에 있음) (이것만 가지고 왠만한거다함)

0이나 8로 시작하는건 AND로 쓰겠다.
Branch 가지, 갈라지다, 분기점

BUN : 조건없이 무조건 뛰어라
BSA : 돌아올 주소를 저장하고 뛴다.
ISZ : 증가(0이면 스킵)

[Register-ref]
CLA 7800
0111 1000 0000 0000
Clear AC (0으로 다 채워라)

CLE 7400
0111 0100 0000 0000
E(EndCarry)를 0으로 만들어라

CMA AC 내용을 보수 취하라. (여기서는 1의 보수)
CIR 서큘러 시프트 라잍
SPA AC가 양수면 다음 명령을 스킵. (MSB(가장중요비트,젤왼쪽비트)가 0이면 양수, 1이면음수)
..
HLT Stop. 명령어를 끝내라.

[IO]
INP  AC에 인풋을 집어 넣어라.
OUT AC로부터 아웃풋을 빼내라.



  • Completeness / efficiency:
    • By using a limited no. of instructions it is possible to show the detailed logic design of the computer
완성도/효율 : 제한된 숫자의 명령어를 가지고 컴퓨터를 디자인하자.




IR 16비트 (명령어부(?)+주소부)
12비트는 주소
1000 0000 0000


SC (시퀀스 카운터) : 순서를 카운터한다. 한 클럭이 뛸 때마다 수행하도록 하게 한다.

INR (클럭이 뛸 때마다 1씩 증가)
CLR (다 0으로 리셋하라) (한 명령 끝나면 리셋)
( 클럭이 뛸 때마다. T0,T1,T2,... 순으로 순서를 맞춰준다.)

4X16디코더


  • D3T4 : SC ß 0
D3랑 T4가 둘 다 1일 때 SC를 0으로(리셋) 한다.


D3가 1일때 T4가 1이되면 초기화 시켜라


  • T0 : AR ß PC
T0가 1일때 AR에 PC를 넣어라.
T0가 1일때 , 주소레지스터에 프로그램카운터 내용을 넣어라
T0가 1일때, PC가 가리키고 있는 주소를 AR에 넣는다
Bus는 PC가 가진다.(select=010) , AR은 LD가 1

명령을 수행하는 사이클 (Instruction Cycle)

각 명령어를 수행하는 사이클
(한 명령어를 수행할때 여러 클럭으로 나눠서한다.)
각 명령어는 하나의 사이클로 수행한다.

  1. 메모리로 부터 명령어 하나를 가져온다. (Fetch)
  2. 명령어를 해석한다.(Decode) 0111->7 -> D7
  3. 유효 주소를 파악한다. (간접주소를 갖고 있는 경우)
  4. 수행한다.
  5. 4번 까지를 계속 반복하는데 , 1에서 HALT 명령이 들어오면 종료한다.

SC starts from 0: T0 T1 T2 ...


Fetch
Fetch를 하려면 주소를 알아야한다.
T0 : AR<-PC (PC가 가진 주소를 AR에 넣는다.) ( 다음 명령어의 주소)
T1 : IR <-M[AR], PC<-PC+1(PC의 INR==1) (PC를 읽어오면 PC는 바로 다음꺼를 가리키게된다.)
T2 : D0,...,D7 <- Decode IR(12-14), AR<-IR(0-11), I<-IR (15) 
                         ____________________:3개 비트 확인 디코더
                                                        ______________:주소부분.
                                                                                _________ :I 부분

T0가 1일때 버스는 010 (PC) , AR의 로드도 1




T1이 1일 때, 메모리에 Read시그널을주어읽고 M을 버스에 올린다.(select:111) PC의 INR은 1, IR의 LD은 1

T2가 1일 때, IR을 버스에 101, AR은 로드 (I는??->IR 내부에서 되는듯.)




D7이 1이면  X111 (레지스터 아니면 IO 명령이다.) 아니면 메모리 레퍼런스

AR<-M[AR] 간접주소의 경우 다시 그 주소로가서 주소를 가져온다.

메모리 레퍼는 T4일 때 작동.




  • D7I´T3   : Execute a register-ref. instruction
D7이 1이고 I가 0, T3가 1일 때 수행한다.


Nothing은 간접주소가 아닐경우.

T가 3단계펄스고 D7과 I에 따라서 어떤 명령인지 파악이 가능하다. 


메모리,레지스터 레퍼런스, IO 명령을 디자인 해보자.


메모리 명령어 D0~D6까지.

심볼릭 설명: 그냥 설명용.

메모리에 있는 데이터를 처리하려면 직접적으론 안된다. 레지스터 끼리 읽어서 처리해야함.

  • AND(D0): AND to AC
    • D0T4 : DR ß M[AR]
    • D0T5 : AC ß AC^DR, SC ß 0
 AND는 0xxx 아니면 8xxx  D0==1, T4==1
D0T4: 일때 M은 Read, S는 111 , DR은 LD
D0T5: 일때 계산하고 SC를 0으로 한다. (버스는 아무도 안갖는다. by pass 사용)

  • ADD(D1): ADD to AC (덧셈은 두 수가 필요)
    • D1T4 : DR ß M[AR]
    • D1T5 : AC ß AC+DR, E ß COUT, SC ß 0
carry가 있으면 E에 넣는다.

  • LDA(D2): load to AC
    • D2T4 : DR ß M[AR]
      S2S1S0=7, M read on, DR LD on
    • D2T5 : AC ß DR(By pass), SC ß 0
      bus는 아무도 안갖는다. 
  • STA(D3): store AC
    • D3T4 : M[AR] ß AC, SC ß 0
      버스는 AC (s=100), M write=1,
  • BUN(D4): branch unconditionally (무조건 뛰어라)
    • D4T4 : PC ß AR, SC ß 0 (1증가 무시하고 설정한 곳으로 뛴다.) (무조건 뛰어라)
      버스는AR (s=001), PC LD=1(on), 
집가서 한 번 다시보기
[컴퓨터시스템구조] 7일차 - instruction cycle [컴퓨터시스템구조] 7일차 - instruction cycle Reviewed by Lifer on 11/04/2018 Rating: 5

댓글 없음:

Powered by Blogger.