4. CPU 작동 원리
4.1 ALU와 제어장치
ALU : 레지스터를 통해 피연산자를 받아들이고, 제어장치로부터 수행할 연산을 알려주는 제어 신호를 받아들임
계산결과와 플래그를 내보냄
플래그 : 연산 결과에 대한 추가적인 상태 정보
ex ) 부호 플래그, 제로 플래그, 캐리 플래그, 오버플로우 플래그, 인터럽트 플래그, 슈퍼바이저 플래그
제어장치
- 제어장치 : 제어 신호를 내보내고, 명령어를 해석하는 부품
- 제어신호 : 컴퓨터 부품들을 관리하고 작동시키기 위한 일종의 전기 신호
제어장치가 받아들이는 정보
1) 제어장치는 클럭 신호를 받아들임
- 클럭 : 컴퓨터의 모든 부품을 일사불란하게 움직일 수 있게 하는 시간 단위
2) 제어장치는 '해석해야 할 명령어'를 받아들임
3) 제어장치는 플래그 레지스터 속 플래그 값을 받아들임
4) 제어장치는 시스템 버스, 그중에서 제어 버스로 전달된 제어 신호를 받아들임
제어장치가 내보내는 정보
- 제어장치가 CPU 외부에 제어 신호를 전달한다 > 제어 버스로 제어 신호를 내보낸다
- 제어신호는 크게 메모리에 전달하는 제어 신호/ 입출력장치에 전달하는 제어 신호로 나뉨
4.2 레지스터
프로그램 속 명령어와 데이터는 실행 전후로 반드시 레지스터에 저장
반드시 알아야 할 8개 레지스터
1. 프로그램 카운터(PC)
- 메모리에서 가져올 명령어의 주소, 즉 메모리에서 읽어 들일 명령어의 주소를 저장함
- 명령어 포인터라고 부르는 CPU도 있음
2. 명령어 레지스터(IR)
- 해석할 명령어, 즉 방금 메모리에서 읽어 들인 명렁어를 저장하는 레지스터
- 제어장치는 명령어 레지스터 속 명령어를 받아들이고 이를 해석한 뒤 제어 신호를 내보냄
3. 메모리 레지스터(MAR)
- 메모리의 주소를 저장하는 레지스터
- CPU가 읽어 들이고자 하는 주소 값을 주소 버스로 보낼 때 메모리 주소 레지스터를 거치게 됨
4. 메모리 버퍼 레지스터
- 메모리와 주고받을 값을 저장하는 레지스터
- 메모리에 쓰고 싶은 값이나 메모리로부터 전달받은 값은 메모리 버퍼 레지스터를 거침
- CPU가 주소 버스로 내보낼 값이 메모리 주소 레지스터를 거친다면, 데이터 버스로 주고 받을 값은 메모리 버퍼 레지스터로 거침
5. 범용 레지스터
- 다양하고 일반적인 상황에서 자유롭게 사용할 수 있는 레지스터
- 데이터와 주소 모두 저장할 수 있음
- 현재 대다수 CPU는 모두 범용 레지스터 가짐
6. 플래그 레지스터
- 연산 결과 또는 CPU 상태에 대한 부가적인 정보를 저장하는 레지스터
7. 스택포인터
8. 베이스 레지스터
특정 레지스터를 이용한 주소 지정 방식(1) : 스택 주소 지정 방식
- 스택 주소 지정 방식 : 스택과 스택 포인터를 이용한 주소 지정 방식
- 스택 포인터 : 스택 꼭대기를 가리키는 레지스터
-> 스택 포인터는 스택에 마지막으로 저장한 값의 위치를 저장하는 레지스터
특정 레지스터를 이용한 주소 지정 방식(2) : 변위 주소 지정 방식
- 변위 주소 지정 방식 : 오퍼랜드 필드의 값(변위)과 특정 레지스터의 값을 더하여 유효 주소를 얻어내는 주소 지정 방식
- 오퍼랜드 필드의 주소와 어떤 레지스터를 더하는지에 따라 상대 주소 지정방식, 베이스 레지스터 주소 지정 방식 등으로 나뉨
상대 주소 지정 방식
- 오퍼랜드와 프로그램 카운터의 값을 더하여 유효 주소를 얻는 방식
베이스 레지스터 주소 지정 방식
- 오퍼랜드와 베이스 레지스터의 값을 더하여 유효 주소를 얻는 방식
- 베이스 레지스터 : 기준 주소로서의 역할을 함
4.3 명령어 사이클과 인터럽트
명령어 사이클 : 하나의 명령어를 처리하는 정형화된 흐름
인터럽트 : 그 흐름이 끊어지는 상황
명령어 사이클
- 하나의 명령어가 처리되는 주기로 인출, 실행, 간접, 인터럽트 사이클로 구성
- 인출 사이클 : 메모리에 있는 명령어를 CPU로 가지고 오는 단계
- 실행 사이클 : CPU로 가져온 명령어를 실행하는 단계
- 간접 사이클 : 메모리 접근이 더 필요한 경우 실행하는 단계
- 인터럽트 사이클 : 인터럽트가 발생한 경우
인터럽트
- CPU의 정상적인 작업을 방해하는 신호
- 예외(동기 인터럽트) : CPU에 의해 발생하는 인터럽트
- 하드웨어 인터럽트(비동기 인터럽트) : 입출력장치에 의해 발생하는 인터럽트
ex) 전자레인지 조리 완료 알림
하드웨어 인터럽트
- 알림과 같은 인터럽트
- 처리순서
1) 입출력장치는 CPU에 인터럽트 요청 신호를 보냄
2) CPU는 실행 사이클이 끝나고 명령어를 인출하기 전 항상 인터럽트 여부를 확인함
3) CPU는 인터럽트 요청을 확인하고 인터럽트 플래그를 통해 현재 인터럽트를 받아들일 수 있는지 여부를 확인함
4) 인터럽트를 받아들일 수 있다면 CPU는 지금까지의 작업을 백업함
5) CPU는 인터럽트 벡터를 참조하여 인터럽트 서비스 루틴을 실행함
6) 인터럽트 서비스 루틴 실행이 끝나면 4)에서 백업해 둔 작업을 복구하여 실행을 재개함
- 인터럽트 요청 신호 : CPU의 작업을 방해하는 인터럽트에 대한 요청
- 인터럽트 플래그 : 인터럽트 요청 신호를 받아들일지 무시할지를 결정하는 비트
- 인터럽트 벡터 : 인터럽트 서비스 루틴의 시작 주소를 포함하는 인터럽트 서비스 루틴의 식별 정보
- 인터럽트 서비스 루틴 : 인터럽트를 처리하기 위한 동작들로 이루어진 프로그램
예외
- 예외 발생 시 CPU는 하던 일을 중단하고 해당 예외를 처리함. 처리 후 다시 본래 하던 작업으로 돌아와 실행 재개함.
- 폴트 : 예외 처리 직후 예외가 발생한 명령어부터 실행을 재개하는 예외
- 트랩 : 예외 처리 직후 예외가 발생한 명령어의 다음 명령어부터 실행을 재개하는 예외
주로 디버깅할 때 사용
- 중단 : CPU가 실행 중인 프로그램을 중단시킬 수밖에 없는 심각한 오류 발생 시 발생
- 소프트웨어 인터럽트 : 시스템 호출이 발생했을때 발생
'CS > 컴퓨터구조' 카테고리의 다른 글
| 컴퓨터 구조 | 보조기억장치, 입출력장치 (3) | 2025.08.12 |
|---|---|
| 컴퓨터 구조 | 메모리와 캐시 메모리 (1) | 2025.08.06 |
| 컴퓨터 구조 | CPU 성능 향상 기법 (4) | 2025.08.01 |
| 컴퓨터 구조 | 컴퓨터 구조, 데이터, 명령어 (2) | 2025.07.28 |