컴퓨터 & 코딩/CS

[혼공학습단 10기][혼공컴운] CPU의 작동 원리

구로그 2023. 7. 3. 18:31
728x90

1️⃣ ALU 

1) 레지스터에서 피연산자를 받아들임

2) 제어 장치에서 제어 신호를 받아들여 연산 수행

3) 결괏값을 레지스터에 저장

4) 플래그 레지스터에 플래그를 내보냄 

 

✏️  플래그
연산 결과에 대한 추가적인 정보
종류: 부호 플래그, 제로 플래그, 캐리 플래그, 오버플로우 플래그, 인터럽트 플래그, 슈퍼바이저 플래그  

 

 

 

2️⃣ 제어장치

- 클럭 신호, 해석해야 할 명령어, 플래그 값, 제어 신호를 받아들인다. 

- CPU의 내/외부로 제어 신호를 보내고 명령어를 해석한다. 

⇨ CPU 외부: 메모리, 입출력장치(값을 읽거나 쓰고 싶을 때)

⇨ CPU 내부: ALU(수행할 연산 지시), 레지스터(레지스터 간 데이터 이동, 저장된 명령어 해석)  

 

 

 

 

3️⃣ 레지스터 

1. 프로그램 카운터 PC (Program Counter): 메모리에서 가져올 명령어의 주소, 즉 메모리를 읽어 들일 명령어의 주소를 저장 (IP - Instruction Pointer) 

2. 명령어 레지스터 IR (Instruction Register): 방금 메모리에서 읽어 들인 명령어를 저장 

3. 메모리 주소 레지스터 MAR (Memory Address Register): 메모리의 주소를 저장

4. 메모리 버퍼 레지스터 MBR (Memory Buffer Register) 혹은 MDR(Memory Data Register): 메모리와 주고받을 값(데이터와 명령어)을 저장  

5. 플래그 레지스터: 연산 결과 또는 CPU 상태에 대한 부가적인 정보를 저장 

6. 범용 레지스터: 데이터와 주소를 모두 저장할 수 있는 레지스터. 

 

 

 ✓ 특정 레지스터를 이용한 주소 지정 방식 

- 스택 주소 지정 방식:  스택과 스택 포인터(스택에 마지막으로 저장한 값의 위치를 저장하는 레지스터)를 이용한 주소 방식. 

- 변위주소지정방식 : 오퍼랜드 필드의 값(변위)과 특정 레지스터의 값을 더하여 유효 주소를 얻어내는 주소 지정 방식 

- 상대 주소 지정 방식: 오퍼랜드 + 프로그램 카운터  

- 베이스 레지스터 주소 지정 방식: 오퍼랜드(기준 주소) + 베이스 레지스터의 값(기준 주소로부터 떨어진 거리)

 

 

 

 

4️⃣ 명령어 사이클과 인터럽트 

✏️ 명령어 사이클 Instruction Cycle
1) 인출 사이클 fetch cycle
2) 실행 사이클 execusion cycle
3) 간접 사이클 indirect cycle 
3) 인터럽트 사이클 Inturrupt cycle  

 

✓ 인터럽트의 종류 

 

  • 동기 인터럽트 synchronous interrupts: CPU에 의해 발생하는 인터럽트 (예외) 

동기 인터럽트의 종류: 

- 폴트 fault (예외 처리 후 예외가 발생한 명령어부터 실행 재개)

- 트랩 trap (예외 처리 후 예외가 발생한 명령어의 다음 명령어부터 실행 재개 / 디버깅)

- 중단 abort (프로그램 강제 중단) 

 

 

  • 비동기 인터럽트 asynchronous interrupts: 입출력장치에 의해 발생하는 인터럽트 (하드웨어 인터럽트) 

하드웨어 인터럽트 처리 순서: 

1. 인터럽트 요청 신호

2. 인터럽트 여부 확인

3. 인터럽트 요청을 확인 후 인터럽트 플래그(가능/불가능)를 통해 인터럽트를 받아들일 수 있는지 여부 확인

4. 지금까지의 작업 백업 (스택에 백업 /  메모리의 스택 영역) 

5. 인터럽트 벡터(인터럽트 서비스 루틴을 식별하기 위한 정보)를 참조하여 인터럽트 서비스 루틴(인터럽트 핸들러)을 실행

6. 서비스 루틴 실행이 끝나면 백업해둔 작업 복구하여 실행 재개 

 

 

인터럽트의 종류: 

- 막을 수 있는 인터럽트 maskable interrupt

- 막을 수 없는 인터럽트 non maskable interrupt : 가장 우선순위가 높은 인터럽트 (정전, 하드웨어 고장) 

 

 

반응형