티스토리 뷰

 

 

CPU Instruction Cycle

  1. 명령어 패치(Instruction Fetch)
    • 메모리에서 명령어를 명령어 레지스터(IR)로 가져온다
    • 실행할 명령어의 주소를 어떻게 알 수 있을까?
      • 이는 프로그램 카운터(PC)가 가리키는 주소에서 명령어를 가져온다.
  2. 디코드(Decode)
    • IR에 있는 명령어의 오퍼레이션 코드(opcode)를 식별한다.
    • 오퍼레이션 코드를 식별하기 위해 우리는 무엇을 사용할까?
      • 이는 명령어 레지스터(IR)에 저장된 비트 패턴을 분석하여 식별한다.
  3. 데이터 패치(Data Fetch), MRI 명령어인 경우
    • 지정된 “주소”에서 타깃 메모리 위치로부터 데이터를 데이터 레지스터(DR)로 읽어온다.
  4. 실행(Execute)
    • 디코드된 명령어를 실행
  5. 결과 데이터 저장(Store Result Data)
    • 누산기(AC)에서 결과 데이터를 지정된 “주소”의 타깃 메모리 위치로 쓴다.
요약하면 
1. 하드디스크에서 가져온다
2. 메모리에 올려놓는다
3. 저장한 주소값을 PC에 올려 놓는다
-> 이 과정을 반복한다고 할 수 있다.

Data Unit

 

 

Special Purpose Registers
한 개의 역할만 하는 레지스터

Name Description Usage Size
AR Address Register
주소 레지스터
데이터 또는 다음 명령어의 "메모리 주소"를 보관한다.
(단, 다음에 수행할 명령어의 주소는 PC로부터 전달된 값)
12
PC Program Counter
프로그램 카운터
다음에 실행할 명령어의 "메모리 주소"를 보관
명령어 사이클마다 자동으로 업데이트되어
다음 명령어의 위치를 가리킨다.
12
IR Instruction Register
명령어 레지스터
현재 실행 중인 명령어를 저장 (readonly)
Instruction 전체 path
Hdd -> Memeory -> (instruction) -> IR -> Memeory -> Hdd
16
DR Data Register
데이터 레지스터 
데이터 (연산의 두 번째 피연산자 또는 결과)를 보관
데이터는 메모리에서 DR로 로드되거나,
DR에서 메모리로 결과를 저장할 때 사용된다
1st Path of Data: Memory -> (operand) -> DR
AC<-AC+DR
2nd Path of Data: AC-> DR -> (result) -> Memeory
16
AC Accumulator 수치적/논리적 첫 번째 연산을 수행하고 결과를 저장
예를 들어, 누산기는 DR과의 연산 결과를 저장할 수 있다
HDD → Memeory → DR → AC → DR → Memeory → HDD
16
TR Temporary Register 일시적인 데이터를 보관, 주로 복잡한 연산을 수행할 때 중간 결과를 임시로 저장 16
INPR Input Register 외부에서 입력된 문자를 보관 8
OUTR Output Register 출력할 문자를 보관 8

 

CPU는 주어진 Instruction Cycle만 반복적으로 수행한다.
다른 일은 안한다.
CPU는 전기가 꺼지면 아무 일도 안한다.
전원이 들어왔을 때는 Instruction을 fetch하기 위해 AR<-PC를 실행한다.
이유는 PC는 메모리에 연결되어 있지 않기 때문이다.

덧셈 연자를 실행했을 때 

1. PC가 OS에 의해 로드된다.

사용자가 프로그램 아이콘을 더블 클릭하면? (프로그램 시작 계기 / 이걸 인터럽트라고 한다)
다음 서브루틴(1.1~1.3)을 반복한다.
1.1: 운영체제(OS)는 하드 드라이브(HDD)에서 해당 파일을 찾는다. (Ch 10,11)
1.2: OS는 메인 메모리(MM) 내의 비어 있는 공간을 찾아 그곳으로 파일을 이동시킨다.(Ch 8,9)
       OS는 프로그램의 첫 번째 명령어 주소를 알고 있다.
1.3: 이 주소를 프로그램 카운터(PC) (= 프로그램의 첫 번째 주소)에 로드한다.
        PC는 프로그램의 첫 번째 줄의 주소를 보관한다

 

2. T0: AR <- PC (Instruction Fetch)

CPU는 PC에 저장된 값을 주소 레지스터(AR)로 이동시킨다.
AR은 이제 메모리에서 가져올 데이터의 주소를 가지고 있다.

 

3. T1: IR <- M[AR] PC++ (Instruction Fetch)

CPU는 AR이 가리키는 메모리 위치에서 데이터를 읽어 명령어 레지스터(IR)로 이동시킨다.
동시에 PC는 다음 명령어의 주소로 증가한다(PC++).

 

4. T2: AR<-IR(0-11) (Decode)

CPU는 IR에 저장된 명령어를 디코드한다. 이 과정은 명령어를 해석하여 어떤 작업을 수행할지 결정한다.
또한, CPU는 필요한 데이터의 주소를 IR에서 추출하여 AR에 로드한다.

 

5. T3: DR<-M[AR] (Data Fetch if MRI)

CPU는 AR에 저장된 주소에서 메인 메모리로부터 데이터를 읽어 데이터 레지스터(DR)로 이동시킨다.

 

6. T4: AC<-AC+DR (Execute)

CPU는 덧셈 연산자(ADD op)를 사용하여 누산기(AC)와 DR에 저장된 데이터를 더한다.
결과는 AC에 저장됩니다.

 

'CS > OS' 카테고리의 다른 글

운영체제 0장 (들어가기 앞서)  (0) 2024.07.02