Ch4. CPU의 작동 원리
04-1 ALU와 제어장치
- ALU
- 받아들이는 정보
- 레지스터를 통해 피연산자를 받음
- 제어장치를 통해 제어신호를 받음
피연산자 + 제어신호 -> 다양한 연산 수행
- 내보내는 정보
- 플래그
연산 결과에 대한 추가적인 상태 정보
플래그 종류 | 의미 |
---|
부호 플래그 | 연산 결과의 부호 |
제로 플래그 | 연산 결과가 0인지 여부 |
캐리 플래그 | 올림수, 빌림수 발생 여부 |
오버플로우 플래그 | 오버플로우 발생 여부 |
인터럽트 플래그 | 인터럽트 가능 여부 |
슈퍼바이저 플래그 | 커널 모드, 사용자 모드 |
-
제어장치
- 제어장치는 클럭 신호를 받아들인다.
- 제어장치는 '해석해야 할 명령어'를 받아들인다.
- 명령어 레지스터
CPU가 해석해야 할 명령어가 저장되는 곳
-
제어장치는 플래그 레지스터 속 플래그 값을 받아들인다.
플래그 값을 받아들여 제어 신호를 발생 시킴
-
제어장치는 제어 버스로 전달된 제어 신호를 받아들인다.
제어 버스를 통해 외부로부터 전달 된 신호를 받기도 함
04-2 레지스터
- 반드시 알아야 할 레지스터
- 프로그램 카운터
메모리에서 가져올 명령어의 주소를 저장함
명령어 포인터라고 부르기도 함
- 명령어 레지스터
해석할 명령어를 저장함
- 메모리 주소 레지스터
메모리의 주소를 저장함
- 메모리 버퍼 레지스터
메모리와 주고받을 값을 저장함
- 플래그 레지스터
연산 결과 또는 부가적 정보를 저장함
- 범용 레지스터
다양하고 자유롭게 사용할 수 있음
- 스택 주소 지정 방식
스택과 스택 포인터를 이용한 주소 지정 방식
- 스택 포인터
스택에 마지막으로 저장한 값의 위치를 저장하는 레지스터
- 스택 영역
스택처럼 사용하기로 약속된 영역
- 변위 주소 지정 방식
오퍼랜드 필드의 값과 특정 레지스터의 값을 더해 유효 주소를 얻어내는 방식
- 상대 주소 지정 방식
오퍼랜드 + 카운터 값 = 유효 주소
- 베이스 레지스터 주소 지정 방식
오퍼랜드 + 베이스 레지스터 값 = 유효주소
기본 미션: p. 125의 확인 문제 2번 풀고 인증하기
- 플래그 레지스터: 연산 결과 또는 부가적 정보를 저장하는 레지스터
- 프로그램 카운터: 메모리에서 가져올 명령어의 주소를 저장하는 레지스터
- 범용 레지스터: 데이터와 주소를 모두 저장할 수 있는 레지스터
- 명령어 레지스터: 해석할 명령어를 저장하는 레지스터
04-3 명령어 사이클과 인터럽트
- 명령어 사이클
하나의 명령어를 처리하는 정형화된 흐름
프로그램 속 각각의 명령어들이 반복하며 실행되는 주기
- 인출 사이클
메모리에 있는 명령어를 CPU로 가지고 오는 과정
- 실행 사이클
CPU로 가져온 명령어를 실행하는 단계
- 간접 사이클
명령어를 실행하기 위해 한 번 더 메모리에 접근하는 단계
- 인터럽트
정해진 명령어의 흐름이 끊어지는 상황
CPU의 작업을 방해하는 신호
- 동기 인터럽트(= 예외)
CPU에 의해 발생하는 인터럽트
- 폴트
예외를 처리한 직후 예외가 발생한 명령어부터 실행 재개
- 트랩
예외가 발생한 명령어 다음부터 실행 재개
- 중단
프로그램을 강제로 중단
- 소프트웨어 인터럽트
시스템 호출이 발생
- 비동기 인터럽트(= 하드웨어 인터럽트)
입출력장치에 의해 발생하는 인터럽트
- 처리 순서
- 입출력장치->CPU: 인터럽트 요청 신호 전달
- CPU: 인터럽트 여부와 이를 받아들일 수 있는지 여부 확인
- CPU: 인터럽트를 받아들일 수 있다면 작업을 백업함
- CPU: 인터럽트 벡터를 참조해 인터럽트 서비스 루틴 실행
- 인터럽트 요청 신호
인터럽트 하기 전 CPU에게 보내는 신호
- 인터럽트 플래그
인터럽트를 받을지, 말지 결정하는 플래그
- 인터럽트 서비스 루틴(= 인터럽트 핸들러)
인터럽트를 처리하기 위한 프로그램
- 인터럽트 벡터
인터럽트 서비스 루틴을 식별하기 위한 정보
Ch5. CPU 성능 향상 기법
05-1 빠른 CPU를 위한 설계 기법
선택미션: Ch.05(05-1) 코어와 스레드, 멀티 코어와 멀티 스레드의 개념을 정리하기
- 코어와 멀티 코어
- 코어
명령어를 실행하는 부품
- 멀티코어(= 멀티코어 프로세서)
코어를 여러 개 포함하고 있는 CPU
- 스레드와 멀티 스레드
- 스레드
실행의 흐름 단위
- 하드웨어적 스레드
하나의 코어가 동시에 처리하는 명령어 단위
- 멀티스레드 프로세서(= 멀티스레드 CPU)
하나의 코어로 여러 명령어를 동시에 처리하는 CPU
- 하이퍼스레딩
인텔의 멀티스레드 기술
- 소프트웨어적 스레드
하나의 프로그램에서 독립적으로 실행되는 단위
기본미션: p. 155의 확인 문제 4번 풀고 인증하기
멀티코어 CPU를 도식화한 그림에서의 빈칸: 코어
05-2 명령어 병렬 처리 기법
- 명령어 파이프라인
- 명령어 인출
- 명령어 해석
- 명령어 실행
- 결과 저장
- 명령어 파이프라이닝
명령어들을 명령어 파이프라인에 넣고 동시에 처리하는 기법
- 파이프라인 위험
- 데이터 위험
명령어간 데이터 의존성에 의해 발생
- 제어 위험
프로그램 카운터의 갑작스런 변화에 의해 발생
- 분기 예측
프로그램이 어디로 분기할지 미리 예측하고 인출하는 기술
-구조적 위험(= 자원 위험)
명령어들을 겹쳐 실행하는 중 같은 부품을 사용하려고 할 때 발생
- 슈퍼 스칼라
여러 개의 명령어 파이프라인을 포함한 구조
- 슈퍼스칼라 프로세서(= 슈퍼스칼라 CPU)
슈퍼스칼라 구조로 명령어 처리가 가능한 CPU
- 비순차적 명령어 처리(OoOE)
명령어들을 순차적으로 실행하지 않는 기법
순서를 바꿔 실행해도 무방한 명령어를 먼저 실행하여 멈추는것을 방지하는 기법
05-3 CISC와 RISC
- 명령어 집합(ISA)
CPU가 이해할 수 있는 명령어들의 모음
- CISC
복잡한 명령어 집합을 활용하는 컴퓨터
- 적은 수의 명령으로 동작 가능
- 명령어의 규격화가 어려움
- 사용 빈도가 낮은 명령어가 많음
- RISC
단순한 명령어 집합을 활용하는 컴퓨터
- 많은 수의 명령으로 동작함
- 명령어 파이프라이닝이 쉬움
으앙 주중엔 발표준비 하느라 하루만에 몰아서 하려니까 힘드네요...
다음주부턴 방학이니까 더 열심히 해보겠습니당