[컴퓨터 구조] 4. CPU의 작동 원리
[컴퓨터 구조] 4. CPU의 작동 원리
Chapter4 CPU의 작동 원리
4-1 ALU와 제어장치
- ALU는 레지스터를 통해 피연산자를 받아들이고, 제어장치로부터 수행할 연산을 알려주는 제어 신호를 받아들임
- 연산을 수행한 결과는 특정 숫자나 문자가 될 수도 있고, 메모리 주소가 될 수도 있음
- 이 결과는 바로 메모리에 저장되지 않고 일시적으로 레지스터에 저장됨
- ALU는 계산 결과와 더불어 플래그를 내보내고 이러한 플래그는 플래그 레지스터에 저장
제어장치
- 제어장치 : 제어장치는 제어 신호를 내보내고 명령어를 해석하는 부품
- 제어 신호 : 컴퓨터 부품들을 관리하고 작동시키기 위한 일종의 전기 신호
- 제어장치는 클럭 신호를 받아들임
- 클럭 : 컴퓨터의 시간 단위
- 제어장치는 ‘해석해야 할 명령어’를 받아들임
- CPU가 해석해야 할 명령어는 명령어 레지스터에 저장
- 제어장치는 플래그 레지스터 속 플래그 값을 받아들임
- 제어장치는 시스템 버스, 그중에서 제어 버스로 전달된 제어 신호를 받아들임
- 제어장치는 CPU 내부와 외부로 제어 신호를 내보냄
- CPU 외부 : 제어 버스로 제어 신호를 내보냄
- CPU 내부 : ALU 혹은 레지스터에게 제어 신호를 전달
- 제어장치는 클럭 신호를 받아들임
4-2 레지스터
반드시 알아야 할 레지스터
- 프로그램 카운터 : 메모리에서 가져올 명령어의 주소를 저장
- 명령어 레지스터 : 해석할 명령어, 즉 방금 메모리에서 읽어 들인 명령어를 저장
- 메모리 주소 레지스터 : 메모리의 주소를 저장
- 메모리 버퍼 레지스터 : 메모리와 주고받을 값(데이터와 명령어)을 저장
- 범용 레지스터 : 이름처럼 다양하고 일반적인 상황에 자유롭게 사용
- 플래그 레지스터 : ALU 연산 결과에 따른 플래그를 저장
특정 레지스터를 이용한 주소 지정 방식(1) : 스택 주소 지정 방식
- 스택 주소 지정 방식 : 스택과 스택 포인터를 이용한 주소 지정 방식
- 스택 포인터 : 스택의 꼭대기를 가리키는 포인터
- 스택 영역 : 메모리 안에 스택처럼 사용할 영역
특정 레지스터를 이용한 주소 지정 방식(1) : 변위 주소 지정 방식
- 변위 주소 지정 방식 : 오퍼랜드 필드의 값(변위)과 특정 레지스터의 값을 더하여 유효 주소를 얻어내는 지정 방식
- 상대 주소 지정 방식 : 오퍼랜드와 프로그램 카운터의 값을 더하여 유효 주소를 얻는 방식
- 베이스 레지스터 주소 지정 방식 : 오퍼랜드와 베이스 레지스터의 값을 더하여 유효 주소를 얻는 방식
4-3 명령어 사이클과 인터럽트
명령어 사이클
- 명령어 사이클 : 각각의 명령어들은 일정한 주기가 반복되며 실행되는데 ,이러한 주기
- 인출 사이클 : 메모리에 있는 명령어를 CPU로 가지고 오는 단계
- 실행 사이클 : CPU로 가져온 명령어를 실행하는 단계
- 간접 사이클 : 명령어 실행을 위해 메모리 접근을 한번 더 거쳐야 할 때
인터럽트
- 인터럽트 : CPU의 작업을 방해하는 신호
- 동기 인터럽트(예외) : CPU에 발생하는 인터럽트
- 폴트(fault) : 예외를 처리한 직후 예외가 발생한 명령어부터 실행을 재개하는 예외 ex) 페이지 fault
- 트랩 : 예외를 처리한 직후 예외가 발생한 명령어의 다음 명령어부터 실행을 재개하는 예외 ex) 디버깅
- 중단(abort) : 실행 중인 프로그램을 강제로 중단시킬 수밖에 없는 심각한 오류를 발견했을 때 발생하는 예외
- 소프트웨어 인터럽트 : 시스템 호출이 발생했을 때
- 비동기 인터럽트(하드웨어 인터럽트) : 주로 입출력장치에 의해 발생하는 인터럽트
- 입출력장치는 CPU에 인터럽트 요청 신호를 보냄
- CPU는 실행 사이클이 끝나고 명령어를 인출하기 전 항상 인터럽트 여부를 확인
- CPU는 인터럽트 플래그를 통해 현재 인터럽트를 받아들일 수 있는지 여부를 확인
- CPU가 인터럽트를 수용하기 위해서는 플래그 레지스터의 입터럽트 플래그가 활성화되어 있어야 함
- 인터럽트를 받아들일 수 있다면 CPU는 지금까지의 작업을 백업
- CPU는 인터럽트 벡터를 참조하여 인터럽트 서비스 루틴을 실행
- 인터럽트 서비스 루틴(인터럽트 핸들러) : 인터럽트를 처리하기 위한 프로그램
- 인터럽트 벡터 : 인터럽트 서비스 루틴을 식별하기 위한 정보
- 인터럽트 서비스 루틴이 끝나면 백업해 둔 작업을 복구하여 실행을 재개
혼자 공부하는 컴퓨터구조 + 운영체제를 통해 진행한 스터디를 정리한 내용입니다.
문제가 될시에는 수정 혹은 삭제하겠습니다.
This post is licensed under CC BY 4.0 by the author.