🧩 ALU와 제어장치
1) ALU : 계산 장치
- 받아들이는 정보 | 피연산자, 제어신호
- 내보내는 정보 | 결괏값(숫자, 문자, 주소 등), 플래그(연산 결과에 대한 부가 정보)
2) 제어 장치 : 제어 신호 발생시키고 명령어 해석하는 장치
- 받아들이는 정보
1) 클럭 : 컴퓨터의 모든 부품을 일사불란하게 움직이게 하는 시간 단위
2) 해석할 명령어
3) 플래그
4) 제어 신호
- 내보내는 정보
- CPU 내부에 전달하는 제어 신호 (to 레지스터, ALU)
- CPU 외부에 전달하는 제어 신호 (to 메모리, 입출력장치)
🧩 레지스터
CPU 내부의 작은 임시 저장 장치
- 프로그램 속 명령어&데이터는 실행 전후로 레지스터에 저장
⭐ 반드시 알아야 할 레지스터
1. 프로그램 카운터 : 메모리에서 가져올 명령어 주소 (메모리에서 읽어들일 명령어 주소)
2. 명령어 레지스터 : 해석할 명령어 (방금 메모리에서 읽어들인 명령어)
3. 메모리 주소 레지스터 : 메모리 주소 저장 ← 주소 버스
4. 메모리 버퍼 레지스터 : 메모리와 주고받을 값 (데이터와 명령어) ← 데이터 버스
➕ 순차적 실행 흐름 끊기는 경우
- 특정 메모리 주소로 실행 흐름 이동하는 명령어 실행 시 (예 : JUMP, CONDITIONAL JUMP, CALL, RET)
- 인터럽트 발생 시
5. 플래그 레지스터 : 연산 결과 / CPU 상태에 대한 부가 정보
6. 범용 레지스터 : 다양하고 일반적 상황에서 자유롭게 사용
7. 스택 포인터 : 스택 꼭대기 가리킴
┕ 스택 주소 지정 방식 : 스택과 스택 포인터 이용 (*스택 포인터 : 스택 꼭대기 가리키는 레지스터)
8. 베이스 레지스터 : 기준 주소 저장
┕ 변위 주소 지정 방식 : 오퍼랜드 필드 값(변위)과 특정 레지스터 값 더해 유효 주소 얻기
① 상대 주소 지정 방식 : 오퍼랜드 필드 값(변위)과 프로그램 카운터 값 더해 유효 주소 얻기
② 베이스 레지스터 주소 지정 방식 : 오퍼랜드 필드 값(변위)과 베이스 레지스터 값 더해유효 주소 얻기
🧩 명령어 사이클과 인터럽트
1. 명령어 사이클
CPU에서 실행되는 정해진 흐름, 일정한 주기
① 인출 사이클 : 가장 먼저 CPU로 가져와야 함.
② 실행 사이클 : 갖고 왔으면 실행
③ 간접 사이클 : 메모리 접근이 더 필요한 경우
④ 인터럽트 사이클 : 인터럽트가 발생한 경우
2. 인터럽트
CPU가 꼭 주목해야 하거나 얼른 처리해야 할 다른 작업이 생겼을 때, 정해진 신호를 끊는 신호
'CPU가 인터럽트 처리한다'
= 인터럽트 서비스 루틴을 실행하고, 본래 수행하던 작업으로 되돌아온다
(+ 인터럽트 시작 주소는 인터럽트 벡터 통해 확인 가능)
① 동기 인터럽트 (예외)
- CPU가 예기치 못한 상황 접했을 때 발생
- 종류 : 폴트, 트랩, 중단, SW 인터럽트
② 비동기 인터럽트 (하드웨어 인터럽트)
- 입출력 작업 도중 효율적으로 명령어 처리하기 위해 사용
- (= 알림) 인터럽트 있다면, 입출력 작업하는 동안 다른 일 수행 가능
- 종류 : 인터럽트 플래그로 막을 수 [있는 / 없는] 인터럽트
🟨 하드웨어 인터럽트 처리 순서
1) 입출력 장치, CPU에 인터럽트 요청 신호 보냄
2) CPU, 실행 사이클 끝나고 명령어 인출하기 전 항상 인터럽트 여부 확인
3) CPU, 인터럽트 요청 확인하고 인터럽트 플래그 통해 현재 인터럽트 받아들일 수 있는지 여부 확인
4) 인터럽트 받아들일 수 있다면, CPU는 지금까지의 작업 백업
5) CPU, 인터럽트 벡터 참조해 인터럽트 서비스 루틴 실행
6) 인터럽트 서비스 루틴 실행 끝나면, 4에서 백업해둔 작업 복구해 실행 재개
* 인터럽트 요청 신호 : CPU의 작업 방해하는 인터럽트에 대한 요청
* 인터럽트 플래그 : 인터럽트 요청 신호 수용할지 무시할지 결정하는 비트
* 인터럽트 벡터 : 각 인터럽트 구분 위한 정보. 인터럽트 서비스 루틴의 시작 주소를 포함하는 인터럽트 서비스 루틴 식별 정보
* 인터럽트 서비스 루틴 : 인터럽트 처리 프로그램
(참고)
https://youtu.be/lehWiAsIDrQ?feature=shared
https://youtu.be/fSCHizcezTs?feature=shared
https://youtu.be/3Yz7OnVUM28?feature=shared
'📚 관련 독서 > 혼자 공부하는 컴퓨터구조 + 운영체제' 카테고리의 다른 글
섹션6 | 메모리와 캐시 메모리 (0) | 2024.01.02 |
---|---|
섹션5 | CPU의 성능 향상 기법 (0) | 2023.12.21 |
섹션 3 | 명령어 (1) | 2023.12.17 |
섹션 2 | 데이터 (0) | 2023.12.14 |
섹션 1 | 컴퓨터 구조 시작하기 (0) | 2023.11.22 |