중앙처리장치
- 컴퓨터 시스템에 부착된 모든 장치의 동작을 제어하고, 명령을 실행하는 장치
- 메모리에 저장된 값을 읽어 들이고, 해석하고, 실행하는 장치
- 구성
- 제어장치
- 연산장치
- 레지스터
- 중앙처리장치의 성능을 나타내는 단위
- MPS : 1초당 명형 실행 수 / 1백만
- FLOPS : 1초당 부동소수점 연산 횟수
- 클럭 속도(HZ) : CPU 동작 클럭 주파
연산장치(ALU)
- 제어장치의 명려에 따라 실제로 연산을 수행하는 장치
- 수행 연산
- 산술
- 논리
- 관계
- 이동(Shift)
- 연산 장치가 받아들이는 정보
- ALU는 계산하는 부품
- 계산에 필요한 재료 :
- 피연산자 : 레지스터에서 받아드림
- 수행할 연산 : 제어장치로 부터 수행할 연산을 알려주는 제어신호를 받아들임
- 연산 장치가 내보내는 정보
- 연산을 수행한 결과 : 특정 숫자나 문자, 메모리 주소
- 바로 메모리에 저장되지 않고 일시적으로 레지스터에 저장 됨
- 연산 결과에 대한 추가적인 상태 정보 : 플래그
- 연산 장치의 구성 요소
- 가산기
- 2진수의 덧셈을 수행하는 회로
- 보수기
- 뺄셈의 수셈을 위해 입력된 값을 보수로 변화하는 회로
- 누산기
- 연산되 결과를 일시적으로 저장하는 레지스터
- 데이터 레지스터
- 연산에 사용될 데이터를 기억하는 레지스터
- 상태 레지스터
- 연산 중에 발생하는 여러 가지 상태 값을 기억하는 레지스터
- 부호값, 오버플로, 언더플로 ,자리올림, 인터럽트 등
- 인덱스 레지스터
- 주소 변경을 위해 사용되는 레지스터
- 가산기
제어장치
- 컴퓨터에 있는 모든 장치들의 동작을 지시하고 제어하는 장치
- 주기억장치에서 읽어 들인 명령어를 해독하여 해당하는 장치에게 제어신호를 보내 정확하게 수행하도록 지시
- 제어장치가 받아들이는정보
- 제어장치는 클럭 신호를 받아들임
- 클럭 : 컴퓨터의 모든 부품을 일사불란하게 움직일 수 있게 하는 시간 단위
- 클럭의 주기에 맞춰 한 레지스터에서 다른 레지스터로 데이터가 이동 되거나 AUL에서 연산이수행되거나, CPU가 메모리에 저장된 명령어를 읽어들인다.
- 제어장치는 '해석해야 할 명령어'를 받아들입니다
- CPU가 해석해야 할 명령어는 명령어 레지스터라는 특별한 레지스터에 저장된다.
- 해석할 명령여를 받아들이고 해석한 뒤, 제어 신호를 발생시켜 컴퓨터 부품들에 수행해야 할 내용을 알려줌
- 제어장치는 상태 레지스터 속 플래그 값을 받아들임
- 플래그는 ALU 연산에 대한 추가적인 상태 정보
- 제어장치는 플래그 값을 받아들이고 이를 참고하여 제어 신호를 발생시킴
- 제어장치는 시스템 버스, 그 중에서 제어 버스로 전달된 제어 신로를 받아들임
- 제어신호는 CPU뿐만 아니라 입출력장치를 비롯한 CPU외부 장치도 발생시킬수 있음
- 제어장치는 제어 버스를 통해 외부로 부터 전달된 제어 신호를 받아들이기도 함
- 제어장치는 클럭 신호를 받아들임
- 제어장치가 내보내는 정보
- CPU 외부에 전달하는 제어신호
- 제어 버스로 제어신호를 보냄
- 메모리에 전달하는 제어신호 : 메모리에 저장된 값을 읽거나 메모리에 새로운 값을 쓰고싶을때
- 입출력 장치에 전달하는 제어신호 : 입출력장치의 값을 읽거나 입출력 장치에 새로운 값을 쓰고 싶을때
- 제어 버스로 제어신호를 보냄
- CPU 내부에 절달하는 제어신호 :
- ALU에 전달하는 제어 신호
- 레지스터에 전달하는 제어신호
- ALU에 수행할 연산을 지시하기 위해, 레지스터에는 레지스타 간에 데이터를 이동시키거나 레지스터에 저장된 명령어를 해석하기 위해
- CPU 외부에 전달하는 제어신호
레지스터
- CPU 내부에서 처리할 명령어나 연산의 중간 결과값 등을 일시적으로 기억하는 소량의 임시 기억장소
- 플립플롭 이나 래치들의 연결하여 구성
- 플립플롭 : 기억장치를 구성하는 전자회로 : 1비트의 정보를 기억함
- 래치 : 1비트 이상의 입력된 값을 다음 입력이 있기 전까지 그래도 유지하는 전자 회로
- 레지스터는 메모리 중에서 속도가 가장 빠름 -> 비쌈
- 종류
- 프로그램 카운터 (PC)
- 메모리에서 가져올 명령어의 주소, 즉 메모리에서 읽어 들일 명령어의 주소를 저장
- 명령어 레지스터(IR)
- 해석할 명령어 , 즉 방금 메모리에서 읽어 들인 명령어를 저장하는 레지스터
- 메모리 주소 레지스터(MAR)
- 메모리의 주소를 저장하는 레지스터
- CPU가 읽어 들이고자 하는 주소 값을 주소 버스로 보낼 때 메모리 주소 레지스터를 거침
- 메모리 버퍼 레지스터
- 메모리와 주고받을 값(데이터,명령어)을 저장하는 레지스터
- 범용 레지스터
- 다양하고 일반적인 상황에서 자유롭게 사용할 수 있는 레지스터
- 플래그 레지스터 : 연산 결과 또는 CPU상태에 대한 부가적인 정보를 저장하는 레지스터
- 프로그램 카운터 (PC)
CPU내의 명령 실행 순서
- CPU로실행할프로그램이1000번지부터1500번지까지저장되어있다고가정
- 프로그램을처음부터실행하기위해프로그램카운터에는1000이 저장
- 이는메모리에서가져올명령어가1000번지에있다는걸의미
- 1000번지를 읽어들이기 위해 버스로 1000번지를 내보내야함
- 이를 위해 메로리 주소 레지스터에는 1000이 저장
- '메모리 읽기' 제어 신호 -> 제어버스
- 메모리 주소 레지스터 값 -> 데이터 버스
- 두개의 값이 메모리로 보내짐
- 메모리 1000번지에 저장된 값은 데이터 버스를 통해 메모리 버퍼 레지스터로 전달
- 프로그램 카운터는 증가 되어 다음 명령어를 읽어들이 준비
- 메모리 버퍼 레지스터에 저장된 값은 명령어 레지스터로 이동
- 제어장치는 명령어 레지스터의 명령어를 해석하고 제어 신호를 발생