본문 바로가기
컴퓨터 구조 + 운영체제/혼자 공부하는 컴퓨터 구조 + 운영체제

_컴퓨터 구조_ 04. CPU 작동 원리

by 코딩기 2023. 11. 21.
728x90

04-1 ALU와 제어 장치

  • ALU : 계산 장치
  • 제어장치 : 제어신호를 받아들이고 명령어를 해석하는 장치
- ALU가 받아들이는 정보
	레지스터를 통해 피연산자를 받아들임
	제어장치로부터 수행할 연산을 알려주는 제어신호를 받아들임
	-> 이를 통해 산술, 논리 연산 등 다양한 연산 수행

- ALU가 내보내는 정보
	수행한 연산의 결괏값을 일시적으로 레지스터에 저장
	연산결과의 부가 정보인 플래그를 플래그 레지스터에 저장
	
	플래그
		부호 플래그 : 연산 결과의 부호값(1 -> 음수, 0 -> 양수)
		제로 플래그 : 연산결과의 0 여부(1 -> == 0, 0 -> != 0)
		캐리 플래그 : 연산 결과 올림, 빌림 수 발생 여부
		오버플로우 플래그 : 오버플로우 유무
		인터럽트 플래그 : 인터럽트 실행 가능 유무
		슈퍼바이저 플래그 : 커널 OR 사용자 모드의 실행 여부

- 제어장치가 받아들이는 정보
	1. 클럭 신호를 받아들임
		컴퓨터 시간 단위인 클럭의 주기에 맞춰 신호를 받아들임
	2. 해석해야할 명령어를 받아들임
		명령어 레지스터에 명령어 저장, 해석, 신호 발생
	3. 플래그 레지스터 속 플래그 값을 받아들임
	4. 시스템 버스 중 제어 버스로 전달된 신호를 받아들임

- 제어장치가 내보내는 정보
	값을 읽거나 쓰기 위해 제어신호를 내보냄 (입출력 장치 포함)

04-2 레지스터

  • 레지스터 : 임시 저장 장치, 명령어 & 데이터를 실행 전/후로 저장
- 주요 레지스터 종류
1. 프로그램 카운터
	메모리에서 가져올 명령어의 주소(메모리에서 읽어들일 명령어주소)
2. 명령어 레지스터
	해석할 명령어(메모리에서 방금 읽어들인 명령어)
3. 메모리 주소 레지스터
	메모리의 주소
4. 메모리 버퍼 레지스터
	메모리와 주고받을 값(데이터&명령어)
5. 플래그 레지스터
	연산결과 or CPU 상태에 대한 부가적인 정보
6. 범용 레지스터
	다양하고 일반적인 상황에 자유롭게 사용
7. 스택 포인터
	주소 지정(스택형태), 스택이 차있는 주소의 최신정보 갱신
8. 베이스 레지스터
	-> 유효 주소를 얻기위
	상대 주소 지정 방식 : 오퍼랜드 + 프로그램 카운터
	베이스 레지스터 주소 지정 방식 : 오퍼랜드 + 베이스 레지스터 주소

04-3 명령어 사이클과 인터럽트

  • 명령어 사이클 : 하나의 명령어를 처리하는 정형화된 흐름
  • 인터럽트 : 위 사이클이 끊어지는 상황
- 명령어 사이클
	명령어가 일정한 주기로 반복되며 실행되는 것

- 인출 사이클
	명령어 사이클의 첫 과정, 메모리의 명령어를 CPU로 가지고 오는 단계

- 간접 사이클
	명령어를 곧바로 실행할 수 없는 경우 추가적인 메모리 접근을 위함

- 인터럽트
	CPU의 작업을 방해하는 신호
	1. 동기 인터럽트
		'예외'라고도 칭함
		
	1. 비동기 인터럽트
		'하드웨어 인터럽트'라고도 칭함
		입출력 장치에 의해 발생(알림과 같은 역할)
		입출력 작업 도중에도 효율적으로 명령어처리를 수행하기 위함

		- 인터럽트 요청 신호
		- 인터럽트 플래그 : 요청 신호 확인 후 인터럽트 받아들임 여부
		- 인터럽트 벡터 : 서비스 루틴을 식별하기 위한 정보
		- 인터럽트 서비스 루틴(인터럽트 핸들러) : 해당 인터럽트 처리