기본미션
p.125 확인문제 2번
(1) 플래그 레지스터
(2) 프로그램 카운터
(3) 범용 레지스터
(4) 명령어 레지스터
p.155 확인문제 4번
코어
CPU : 메모리에 올라온 명령어를 읽고, 해석하고, 실행하는 장치
CPU 구성 요소 : ALU(계산), 제어장치(명령어 읽기, 해석), 레지스터
ALU : Arithmetic-Logic Unit
산술 연산과 논리 연산을 수행하는 장치
레지스터 : 피연산자 제공
제어장치 : 수행할 연산 지정해주는 제어신호(산술, 논리 등) 제공
연산 수행 결과 : 숫자, 문자, 메모리 주소
연산 수행 결과는 바로 메모리에 담지 않고 레지스터에 저장
플래그(flag)는 연산 결과에 대한 추가적인 상태 정보. 플래그 또한 ALU가 내보내는 정보
플래그들은 플래그 레지스터에 저장됨
ALu 내부에는 여러 계산을 위한 회로들이 있음
보수기(뺄셈 목적), 시프터(시프트 연산 목적), 오버플로우 검출기(오버플로우 대비 목적) 등
제어장치 : 제어신호 발생, 명령어 해석
제어신호 : 컴퓨터 부품 관리/작동을 위한 전기 신호
클럭 : 컴퓨터의 부품을 동작할 수 있게 하는 시간 단위
"컴퓨터의 모든 부품이 클럭 신호에 맞춰 작동한다" != "컴퓨터의 모든 부품이 한 클럭마다 작동한다"
-> 하나의 명령어가 여러 클럭에 걸쳐 실행될 수 있음
해석해야 할 명령어는 명령어 레지스터에 저장됨
1. 명령어 레지스터로부터 명령어를 받아들이고 해석
2. 제어신호를 발생시켜 부품들에게 해야할 일을 제공함
CPU, 입출력장치를 비롯한 CPU외부 장치들도 제어 신호를 발생시킬 수 있음
제어 장치는 이러한 제어 신호를 제어 버스를 통해 받아들이기도 함
제어 버스를 이용하여 제어 신호를 내보낸다는 의미
메모리와 입출력장치(보조기억장치 포함)에 제어 신호를 내보내는 것을 말함
ALU에 전달하는 제어 신호
레지스터에 전달하는 제어 신호
프로그램의 명령어와 데이터는 실행 전/후에 레지스터에 저장됨
이후의 정리된 내용은 부실하여 차후 보완할 예정입니다.
PC : Program Counter : 메모리에서 가져올 명령어의 주소가 저장됨
IR : Instruction Register : 해석할 명령어가 저장됨
MAR : Memory Address Register는 메모리의 주소가 저장됨
MBR : Memory Buffer Register는 메모리와 주고받을 데이터가 저장됨
범용 레지스터는 데이터와 주소 모두 저장됨
플래그 레지스터는 연산 결과 / CPU 상태에 대한 부가 정보가 저장됨
명령어 사이클 : 하나의 명령어를 처리하는 정형화된 흐름
인출 사이클 : 메모리에 저장된 명령어를 CPU로 가져오는 단계
실행 사이클 : 인출 사이클에서 가져온 명령어를 실행하는 단계
간접 사이클 : 간접 주소 지정 방식과 같이 인출 사이클을 마친 상태에서도 바로 실행 사이클에 들어가지 못 하는 경우가 있음. 이와 같이 추가적인 메모리 접근이 필요하여 진행하는 단계가 간접 사이클
인터럽트 : CPU의 작업을 방해하는 신호(현재 진행중인 작업을 멈추는 것)
동기 인터럽트(Synchronous interrupts) : CPU에 의해 발생하는 인터럽트
실행하는 프로그래밍상의 오류와 같은 예외적인 상황에 발생하는 인터럽트
동기 인터럽트는 예외라고 부름
비동기 인터럽트(Asynchronous interrupts) : 주로 입출력장치에 의해 발생하는 인터럽트 (세탁기 완료 알림 등의 알림 역할 수행)
비동기 인터럽트는 하드웨어 인터럽트라고 부름
인터럽트 서비스 루틴(ISR) : 인터럽트를 처리하기 위한 동작들로 이루어진 루틴
클럭 : Hz(헤르츠) 단위로 측정되는 프로그램의 실행 단위
클럭 속도가 빨라지면 CPU의 속도가 빨라짐
클럭 속도를 높일 수록 CPU의 발열 정도가 상승함 -> 발열에 따른 성능 저하가 유발됨 -> 클럭 속도를 무작정 높이는 것만으로는 CPU의 속도를 올리는 데에 한계가 있음
명령어를 실행하는 부품 : 코어
현대의 CPU는 내부에 여러 개의 코어가 존재
여러 개의 코어를 포함하는 CPU를 멀티코어 CPU(프로세서)
일반적으로 코어 수가 늘어날 수록 CPU의 연산 속도가 상승함
하지만 처리할 연산이 적잘하게 분배되지 못하거나 코어의 수에 비해 연산이 적은 경우 코어의 수가 많더라도 꼭 CPU의 속도를 올리는 결과를 가져오지는 않음
스레드 : 실행 흐름의 단위
하드웨어적 스레드
하나의 코어가 동시에 처리하는 명령어의 단위
멀티스레드 CPU(프로세서) : 하나의 코어로 여러 명령어를 동시에 처리하는 CPU
하이퍼스레딩 : 인텔의 멀티스레드 기술의 명칭
소프트웨어적 스레드
하나의 프로그램에서 독립적으로 실행되는 단위
동시에 여러 개의 명령어를 겹쳐 실행하는 기능
여러 개의 명령어 파이프라인을 두는 기법
명령어를 순차적으로 실행했을 경우 파이프라인의 지연이 발생될 수 있는데, 이러한 지연을 방지하고자 명령어를 비순차적으로 처리하는 기법