반응형
혼자 공부하는 컴퓨터 구조 + 운영체제(강민철 저, 한빛미디어)를 공부하며 내용을 정리한 글 입니다.
현재 블럭의 내용은 작성자의 의견 혹은 생각이며, 틀린 내용이 있을 수 있습니다. 지적 감사드립니다.
ALU
ALU는 피연산자를 받아들이고, 제어 신호를 받아들여 산술 연산, 논리 연산 등 다양한 연산 수행
결과는 숫자나 문자, 주소가 될 수 있으며 레지스터에 저장한다.
ALU는 결과뿐만 아니라 음, 양의 플래그나 오버플로우 정보도 내보낸다.
내보내는 플래그의 종류
- 부호 플래그 : 1일 경우 음수, 0일 경우 양수
- 제로 플래그 : 1일 경우 0, 0일 경우 0이 아님
- 캐리 플래그 : 1일 경우 올림이나 빌림
- 오버플로우 플래그 : 1일 경우 오버플로우 발생
- 인터럽트 플래그 : 1일 경우 인터럽트 가능
- 슈퍼바이저 플래그 : 1일 경우 커널 모드, 0일 경우 사용자 모드
제어장치
제어 신호를 내보내고, 명령어를 해석
- 클럭 신호 받기
- 해석해야할 명령어 받기
- 플래그 받기
- 제어 버스로 전달된 신호 받기
※ 클럭이란 컴퓨터 부품의 시간 단위로, 주기에 맞춰 동작을 수행한다. 하나의 명령어는 여러 클럭에 걸쳐 실행 가능하다.
레지스터
레지스터의 종류는 매우 다양하지만, 공통으로 포함된 8개의 레지스터는 아래와 같다.
- 프로그램 카운터 : 명령어의 주소 저장 (명령어 포인터라고도 부름)
- 명령어 레지스터 : 명령어를 저장
- 메모리 주소 레지스터 : 메모리의 주소 저장
- 메모리 버퍼 레지스터 : 값 저장
- 플래그 레지스터 : 플래그 저장
- 범용 레지스터 : 다양하게 사용됨
- 스택 포인터 : 스택의 꼭대기를 가리키는 레지스터
- 베이스 레지스터
특정 레지스터를 이용한 주소 지정 방식
- 스택주소지정방식 : 스택 포인터 사용
- 변위주소지정방식 : 오퍼랜드 필드의 값과 특정 레지스터 값을 더하여 유효주소를 얻어내는 방식
- 상대주소지정방식 : 오퍼랜드와 프로그램 카운터의 값을 더한다. 주로 분기할때 사용된다
- 베이스 레지스터 주소 지정 방식 : 오퍼랜드와 베이스 레지스터의 값을 더한다.
명령어 사이클
하나의 명령어를 처리하는 정형화된 흐름
- 인출 사이클 : 메모리에 있는 명령어를 CPU로 가지고 오는 단계
- 실행 사이클 : 명령어 레지스터에 담긴 값을 해석하고 제어 신호 발생
- 간접 사이클 : 모든 명령어가 인출, 실행 사이클 만으로 실행되지 않으며, 메모리 접근이 더 필요한 경우 간접 사이클 실행
인터럽트
명령어 사이클이 끊어지는 상황
- 동기 인터럽트 : CPU에 의해 발생 (exception 등)
- 비동기 인터럽트 : 입출력장치에 의해 발생. 하드웨어 인터럽트라고도 불린다.
하드웨어 인터럽트는 CPU가 주기적으로 완료를 확인하는 것이 아닌 장치의 알림을 받음으로 효율성이 좋다.
하드웨어 인터럽트의 처리 순서
- 입출력장치가 CPU에 인터럽트 요청 신호를 보냄
- 실행 사이클이 끝나고 인출 전 인터럽트 여부 확인
- 인터럽트 플래그를 통해 받을 수 있는지 확인
- 가능하다면 현재 작업을 백업
- CPU는 인터럽트 벡터를 참조하여 인터럽트 서비스 루틴 실행
- 백업한 작업 다시 실행
※ 인터럽트 서비스 루틴 : 인터럽트를 처리하기 위한 프로그램
※ 인터럽트 벡터 : 인터럽트 서비스 루틴을 식별하기 위한 정보
※ 작업들은 스택에 백업된다.
반응형
'~ 2024.03 > 컴퓨터 구조 + 운영체제' 카테고리의 다른 글
[컴퓨터 구조] 메모리와 캐시 메모리 (1) | 2024.01.04 |
---|---|
[컴퓨터 구조] CPU 성능 향상 기법 (2) | 2024.01.03 |
[컴퓨터 구조] 명령어 (2) | 2024.01.03 |
[컴퓨터 구조] 데이터 (1) | 2024.01.03 |
[컴퓨터 구조] 컴퓨터 구조 시작하기 (0) | 2024.01.03 |