Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

dongdorodongdong

CPU 상태 본문

Electronic Calculator Architecture

CPU 상태

d5ngs 2020. 7. 12. 18:32

Major State

  • 정의
    - CPU의 상태를 나타내며 Fetch, Indirect, Execute, Interrupt의 상태가 있음
    - 4가지 단계를 반복적으로 거치며 동작을 수행
    - Major Cycle 또는 Machine Cycle이라고도 함

  • 특징
    - Major State Register를 통해 알 수 있음



Fetch (인출 단계)


  • 정의
    - 명령어를 주기억장치에서 IR(명령 레지스터)로 가져와 해독하는 단계

  • 특징
    - 해석된 명령어가 1Cycle 명령이면 이를 수행한 후 다시 Fetch Cycle로 변천
    - 1Cycle 명령이 아니면 해석된 명령어의 Mode bit에 따라 직접주소와 간접주소를 판단
    "Mode bit 0 : 직접주소, Execute 단계로 변천"
    "Mode bit 1 : 간접주소, Indirect 단계로 변천"

  • 순서
  •  MAR <- PC

     PC에 있는 번지를 MAR에 전송

     MBR <- M[MAR]
     PC <- PC + 1

     MAR이 지정하는 위치의 값을 MBR에 전송

     다음에 실행할 명령의 위치를 지정하기 위해 PC의 값을 1증가

     IR <- MBR[OP]
     I <- MBR[I]

     명령어의 OP Code 부분을 IR에 전송
     * 현재 MBR에는 주기억장치에서 읽어온 명령이 있음
     명령어의 모든 비트를 플립플롭 I에 전송

     F <- 1 또는 R <- 1

     I가 0이면 플립플롭 F에 1을 전송하여 Execute 단계로 변천

     I가 1이면 플립플롭 R에 1을 전송하여 Indirect 단계로 변천



Execute (실행 단계)


  • 정의
    - Fetch 단계에서 인출하여 해석한 명령을 실행하는 단계
    - Flag Register의 상태 변화를 검사하여 Interrupt 단계로 변천할 것인지를 판단

  • 특징
    - Interrupt 요청 신호를 나타내는 Flag Register의 변화가 없으면 Fetch 단계로 변천

  • 예시 (ADD 연산 수행)
  •  MAR <- MBR[AD]

     MBR에 있는 명령어의 번지 부분을 MAR에 전송
     * 현재 MBR에는 Fetch 단계에서 읽어온 명령어가 들어 있음

     MBR <- M[MAR]

     MAR이 지정하는 위치의 값을 MBR에 전송

     AC <- AC + MBR

     누산기의 값과 MBR의 값을 더해 누산기에 전송
     * 실질적인 ADD 연산이 이루어지는 부분

     F <- 0 또는 R <- 1

     * 실행 단계는 F와 R의 플립플롭 상태가 F=1, R=0임
     F에 0을 전송하면 F=0, R=0이 되어 Fetch 단계로 변천

     R에 1을 전송하면 F=1, R=1이 되어 Interrupt 단계로 변천



Indirect (간접 단계)


  • 정의
    - Fetch 단계에서 해석된 명령어의 주소부가 간접주소인 경우 수행
    - 간접주소일 때, 유효주소를 계산하기 위해 다시 Indirect 단계를 수행
    - 간접주소가 아닐 때, 명령어에 따라 Execute 단계 또는 Fetch 단계로 이동할지 판단

  • 순서
  •  MAR <- MBR[AD]

     MBR에 있는 명령어의 번지 부분을 MAR에 전송

     MBR <- M[MAR]

     MAR이 지정하는 위치의 값을 MBR에 전송

     

     동작 없음

     F <- 1

     R <- 0

     F에 1, R에 0을 전송하여 Execute 단계로 변천



Interrupt (인터럽트 단계)


  • 정의
    - 인터럽트 발생 시 복귀주소(PC)를 저장시키고, 제어순서를 인터럽트 처리 프로그램의 첫 번째 명령으로 옮기는 단계

  • 특징
    - 인터럽트 단계를 마친 후에는 항상 Fetch 단계로 변천
    - Interrupt가 발생할 때만 실행되어 다른 일을 처리하고 돌아오기 때문에 H/W로 실현되는 서브루틴의 호출이라고도 함

  • 순서
  •  MBR[AD] <- PC

     PC <- 0

     PC가 가지고 있는 명령의 주소를 MBR의 주소 부분으로 전송

     복귀주소를 저장할 0번지를 PC에 전송

     MAR <- PC

     PC <- PC + 1

     PC가 가지고 있는 값 0번지를 MAR에 전송

     인터럽트 처리 루틴으로 이동할 수 있는 인터럽트 벡터의 위치를 지정하기 위해 PC의 값을 1 증가

     M[MAR] <- MBR

     IEN <- 0

     다음에 실행할 명령의 주소를 메모리의 MAR이 가리키는 위치인 0번지에 저장

     인터럽트 단계가 끝날 때까지 다른 인터럽트가 발생하지 않게 IEN에 0을 전송

     F <- 0

     R <- 0

     F에 0, R에 0을 전송하여 Fetch 단계로 변천


주요 명령 마이크로 오퍼레이션


  • ADD ( AC <- AC + M[AD] )
  •  MAR <- MBR[AD]

     MBR에 있는 명령어의 번지 부분을 MAR에 전송

     MBR <- M[MAR]

     MAR이 지정하는 위치의 값을 MBR에 전송

     AC <- AC + MBR

     누산기의 값과 MBR의 값을 더해 누산기에 전송


  • LDA ( AC <- M[AD] )
  •  MAR <- MBR[AD]

     MBR에 있는 명령어의 번지 부분을 MAR에 전송

     MBR <- M[MAR]

     AC <- 0

     MAR이 지정하는 위치의 값을 MBR에 전송
     AC에 0을 전송하여 AC를 초기화

     AC <- AC + MBR

     메모리에서 가져온 MBR과 AC를 더해 AC에 전송
     * 초기화된 AC에 더해지므로 메모리의 값을 AC로 불러오는 것


  • STA ( M[AD] <- AC )
  •  MAR <- MBR[AD]

     MBR에 있는 명령어의 번지 부분을 MAR에 전송

     MBR <- AC

     AC의 값을 MBR에 전송

      M(MAR) <- MBR

     MBR의 값을 메모리의 MAR이 지정하는 위치에 전송


  • BSA
  • MAR <- MBR[AD]

     MBR[AD] <- PC

     PC <- MBR[AD]

     MBR에 있는 명령어의 번지 부분을 MAR에 전송

     * MBR[AD]는 복귀주소가 저장될 위치이면서 부프로그램이 시작되기 바로 전 번지

     PC의 값(복귀주소)를 MBR의 주소부분으로 전송

     * 복귀주소를 저장하기 위한 준비단계
     MBR의 주소 부분을 PC로 전송
     * 부프로그램이 시작되기 바로 전 주소를 PC에 전송

     M[MAR] <- MBR[AD]

     MBR에 있는 명령어의 번지 부분을 MAR이 가리키는 위치에 전송

     * 부프로그램이 시작되기 바로 전 주소에 복귀주소를 저장

     PC <- PC + 1

     PC의 값을 1 증가

     * 부프로그램의 시작


'Electronic Calculator Architecture' 카테고리의 다른 글

제어 데이터 / 장치 / 메모리  (0) 2020.07.12
Micro Operation (마이크로 오퍼레이션)  (0) 2020.07.12
Operand (자료부)  (0) 2020.07.01
OP Code (연산자부)  (0) 2020.07.01
CPU 구성 요소  (0) 2020.06.21