중앙처리장치의 구성
중앙처리장치
주기억장치로부터 받은 프로그램 명령어와 데이터를 처리하고, 명령어의 수행 순서를 제어함
레지스터
주소 저장
메모리 주소 레지스터(MAR, Memory Address Register): 읽기와 쓰기 연산을 수행할 주기억 장치의 주소 저장
프로그램 카운터: 다음에 수행할 명령어의 주소 저장
스택 포인터: 스택의 최상위 주소 저장
인덱스 레지스터: 인덱스 주소지정 방식에서 인덱스 저장
명령어 저장
명령어 레지스터(Instryction Register): 현재 실행 중인 명령어 저장
데이터 저장
메모리 버퍼 레지스터(MBR): 주기억 장치에서 읽어온 데이터나 주기억 장치에 저장할 데이터 임시 저장
누산기(AC, Accumulator): 연산 결과 임시 저장
CPU 상태 저장
프로그램 상태 레지스터(PSR): CPU의 현재 상태 정보 저장
명령어 처리 과정
명령어 사이클
- 인출 사이클, 실행 사이클: 항상 수행
- 간접 사이클, 인터럽트 사이클: 필요한 경우만 수행, 주소지정 방식과 인터럽트 요구에 따라 수행여부 결정
인출 사이클
- 주기억 장치에서 명령어 인출
- 다음 명령어를 인출하기 위해 PC(Program Counter)값을 증가시킴
인출 사이클의 동작 과정
- 프로그램 카운터에 저장된 주소를 메모리 주소 레지스터에 전달
- 메모리 주소 레지스터에 저장된 내용을 토대로 주기억 장치의 해당 주소에서 명령어를 인출
- 메모리 버퍼 레지스터에 저장
- 다음 명령어를 인출하기 위해 프로그램 카운터 값을 증가시킴
- 메모리 버퍼 레지스터에 저장된 내용이 명령어 레지스터에 전달됨
실행 사이클
- 인출한 명령어 해독
- 해독 결과에 따라 제어 신호를 발생시켜 명령어 실행
간접 사이클
연산코드의 주소가 데이터를 직접 가르키는 게 아닌 데이터를 가르키고 이는 주기억 장치의 주소를 가르킴
인터럽트 사이클
인터럽트: 중앙처리장치가 프로그램을 수행하는 동안 컴퓨터 시스템의 내부와 외부에서 발생하는 예기치 못한 사건
명령어 세트
명령어 형식
연산코드(Operation Code)와 주소필드(Operand)로 구성
연산 코드
- 연산 기능: 사칙연산, 시프트, 보수 등의 산술 연산과 논리곱(AND), 논리합(OR), 논리 부정(NOT) 등의 논리 연산 수행
- 데이터 전달 기능: 레지스터와 레지스터 사이, 레지스터와 주기억 장치 사이에 데이터 전달
- 제어 기능: 조건 분기와 무조건 분기 등을 이용하여 명령어의 실행 순서를 제어
- 입출력 기능: 프로그램과 데이터를 주기억 장치에 전달하고, 연산 결과는 출력 장치로 전달
주소필드
기억장치의 주소, 숫자나 문자, 논리 데이터 등을 저장함
주소 필드 수에 따른 명령어 분류
- 0-주소 명령어: 연산코드만 존재하며 스택 구조 컴퓨터에서 사용됨, PUSH 연산, POP 연산 등
- 1-주소 명령어: 단일 누산기 구조 컴퓨터에서 사용
- 2-주소 명령어: 2개의 주소 필드, 가장 일반적인 형태
- 3-주소 명령어: 3개의 주소 필드, 주소 필드에 레지스터 번호나 주기억 장치의 주소를 지정