CPU는 크게 연산장치(ALU) , 제어장치(CU) , 레지스터 이렇게 3가지로 구성된다.
![](https://velog.velcdn.com/images%2Fgothae%2Fpost%2F88205f07-ebad-4567-b0ff-6dc181b7193a%2Fimage.png)
Register
- CPU의 속도와 비슷한 고속의 기억장치.
- 데이터, 상태 , 명령어, 주소 등을 임시저장
- 목적에 따라 범용 레지스터 / 특수목적 레지스터로 구분된다.
특수목적 레지스터
- MAR(메모리주소 레지스터) : 읽기/쓰기를 수행할 주기억장치 주소저장
- PC(프로그램 카운터) : 다음에 수행할 명령어 주소 저장
- IR(명령어 레지스터) : 현재 실행중인 명령어 저장
- MBR(메모리 버퍼 레지스터) : 주기억장치에서 읽어온 데이터 or 저장할 데이터 임시저장
- AC(누산기) : 연산 결과 임시 저장
CPU 동작 과정
- 주기억장치는 입력장치에서 읽어온 데이터, 보조기억장치에 저장된 프로그램 읽어옴
- CPU는 프로그램 실행을 위해 주기억장치에 저장된 프로그램 명령어와 데이터를 읽어와 처리하고 결과를 다시 주기억장치에 저장
- 주기억장치는 처리결과를 보조기억장치에 저장하거나 출력장치로 보냄
- 제어장치는 위 과정에서 명령어가 순서대로 실행되도록 각 장치를 제어
명령어 세트
CPU가 실행할 명령어의 집합
구성
![](https://velog.velcdn.com/images%2Fgothae%2Fpost%2F6e0b8d57-14ae-4317-a1b2-3c3ef03db02a%2Fimage.png)
- 연산코드
실행하는 연산의 종류에 따라 네가지 기능으로 나뉜다.
- 연산기능 : 산술논리연산 수행
- 제어기능 : 명령어의 실행 순서 제어
- 데이터 전달 기능
- 입출력 기능
- 피연산자
- 주소 : 기억장치 혹은 레지스터의 주소가 저장됨
- 숫자/문자
- 논리 데이터
명령어 사이클
CPU가 주기억장치에서 하나의 명령어를 읽어와 수행하는 일련의 과정
명령어 사이클에는 인출 / 실행 / 간접 / 인터럽트 가 있지만 간접과 인터럽트는 필수적이지 않다.
인출과 실행 사이클에 의한 명령어 처리 과정
- 인출
![](https://velog.velcdn.com/images%2Fgothae%2Fpost%2F4ff784cc-a149-4930-831e-d3bd52f525fc%2Fimage.png)
- PC에 저장된 주소를 MAR로 전달
- 저장된 내용을 토대로 주기억장치의 해당주소에서 명령어 인출
- 인출한 명령어를 MBR에 저장
- 다음 명령어를 인출하기 위해 PC값 증가 ⭐️⭐️⭐️
- MBR에 저장된 내용을 IR에 전달
이를 정리하면,
T0 : MAR <- PC
T1 : MBR <- M[MAR]
T2 : IR <- MBR
- 실행
![](https://velog.velcdn.com/images%2Fgothae%2Fpost%2F52df250a-b02d-46ef-89be-92ad8ed5e874%2Fimage.png)
T0 : MAR <- IR[Addr]
T1 : MBR <- M[MAR]
T2 : AC <- AC + MBR