[ 출처 ]
혼자 공부하는 컴퓨터 구조 + 운영체제 04강
https://www.youtube.com/watch?v=kFWP6sFKyp0
[ ALU와 제어 장치 ]
ALU
= 계산을 하기 위해서는 피연산자와 제어 신호가 필요함
= 피연산자 ( by. 레지스터 ) + 제어 신호 ( by. 제어장치 ) 받아들임
= 결괏값 ( to. 레지스터) + 플래그 ( to. 플래그 레지스터 ) 내보냄
플래그
= 연산 결과에 대한 부가 정보
1. 부호 플래그 = 연산 결과의 부호
2. 제로 플래그 = 연산 결과가 0인지 여부
3. 캐리 플래그 = 연산 결과 올림수나 빌림수 발생 여부
4. 오버플로우 플래그 = 오버플로우 발생 여부
5. 인터럽트 플래그 = 인터럽트 가능 여부
6. 슈퍼바이저 플래그 = 커널 모드 or 사용자 모드 실행 여부
제어 장치
= 클럭 신호 + 해석할 명령어 ( by. 명령어 레지스터 ) + 플래그 ( by. 플래그 레지스터 ) + 제어 신호 받아들임
= 제어 신호 ( to. CPU 내부 = 레지스터 + ALU) + 제어 신호 ( to. CPU 외부 = 메모리 + 입출력장치) 내보냄
클럭
= 컴퓨터의 모든 부품을 일사불란하게 움직일 수 있게 하는 시간 단위
[ 레지스터 ]
레지스터
= CPU 내부의 작은 임시저장장치
= 프로그램 속 명령어와 데이터는 실행 전후로 레지스터에 저장
중요한 레지스터 종류
1. 프로그램 카운터 = 메모리에서 가져올 다음 명령어의 주소
2. 명령어 레지스터 = 해석할 명령어 (제어장치가 해석)
3. 메모리 주소 레지스터 = 메모리와 주고받을 주소 (CPU가 주소를 주소 버스로 주고 받을 때 사용)
4. 메모리 버퍼 레지스터 = 메모리와 주고받을 데이터와 명령어 (CPU가 값을 데이터 버스로 주고 받을 때 사용)
5. 플래그 레지스터 = 연산 결과 또는 CPU 상태에 대한 부가 정보
6. 범용 레지스터 = 다양하고 일반적인 상황에서 자유롭게 사용
7. 스택 포인터 = 스택의 꼭대기를 가리키는 레지스터, 스택 주소 지정 방식에 사용
8. 베이스 레지스터 = 변위 주소 지정 방식에 사용
스택 주소 지정 방식
= 스택과 스택 포인터를 이용한 주소 지정 방식
변위 주소 지정 방식
= 오퍼랜드 필드의 값 (변위)과 특정 레지스터의 값을 더하여 유효 주소를 얻는 주소 지정 방식
= 상대 주소 지정 방식 (변위 + 프로그램 카운터) or 베이스 레지스터 주소 지정 방식 (변위 + 베이스 레지스터)
[ 명령어 사이클과 인터럽트 ]
명령어 사이클
= 프로그램 속 명령어들은 일정한 주기가 반복되며 실행
= 어떤 명령어는 인출과 실행 사이클만으로 실행
= 어떤 명령어는 인출, 간접, 실행 사이클을 거쳐 실행
인출 사이클 = 먼저 CPU로 갖고 오기
실행 사이클 = 갖고 왔으면 실행하기
간접 사이클 = 추가적인 메모리 접근 필요 (ex. 간접 주소 지정 방식)
인터럽트
= 명령어 사이클을 방해할 때 발생
= 동기 인터럽트 (예외) + 비동기 인터럽트 (하드웨어 인터럽트)
동기 인터럽트 (예외)
= CPU가 예기치 못한 상황을 접했을 때 발생
= 폴트 + 트랩 + 중단 + 소프트웨어 인터럽트
비동기 인터럽트 (하드웨어 인터럽트)
= 주로 입출력장치에 의해 발생
= 알림과 같은 역할
= 입출력 작업 도중에도 효율적으로 명령어를 처리하기 위해 사용
= 막을 수 있는 인터럽트(대부분 인터럽트 플래그로 막을 수 있음) + 막을 수 없는 인터럽트(ex. 하드웨어 고장, 정전)
인터럽트 처리 순서
1. 입출력장치는 CPU에 인터럽트 요청 신호를 보냄
2. CPU는 실행 사이클이 끝나고 명령어를 인출하기 전 항상 인터럽트 여부를 확인
3. CPU는 인터럽트 요청을 확인하고 인터럽트 플래그를 통해 현재 인터럽트를 받아들일 수 있는지 여부 확인
4. 인터럽트를 받아들일 수 있다면 CPU는 지금까지의 작업을 백업 (메모리의 스택 영역에 백업)
5. CPU는 인터럽트 벡터를 참조하여 인터럽트 서비스 루틴을 실행
6. 인터럽트 서비스 루틴 실행이 끝나면 4에서 백업해 둔 작업을 복구하여 실행을 재개
인터럽트 요청 신호
= CPU의 작업을 방해하는 인터럽트에 대한 요청
인터럽트 플래그
= 인터럽트 요청 신호를 받아들일지 무시할지를 결정하는 비트
인터럽트 서비스 루틴
= 인터럽트가 발생했을 때 해당 인터럽트를 처리하기 위한 프로그램
= 프로그램이기에 메모리에 저장
인터럽트 벡터
= 인터럽트 서비스 루틴의 시작 주소를 포함하는 인터럽트 서비스 루틴의 식별정보
CPU가 인터럽트를 처리한다
= 인터럽트 서비스 루틴을 실행하고, 본래 수행하던 작업으로 다시 되돌아온다
( + 인터럽트의 시작 주소는 인터럽트 벡터를 통해 알 수 있다 )
'CS > 컴퓨터 구조' 카테고리의 다른 글
[ 컴퓨터 구조 ] 메모리 종류 (1) | 2025.03.21 |
---|---|
[ 컴퓨터 구조 ] 명령어 (0) | 2025.02.05 |
[ 컴퓨터 구조 ] 명령어 (0) | 2025.01.22 |
[ 컴퓨터 구조 ] 전체적인 컴퓨터 구조 (0) | 2025.01.14 |