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