컴퓨터의 가장 핵심적인 제어 장치이자 두뇌.
컴퓨터 부품과 정보를 교환하고 시스템을 제어하고, 프로그래밍 언어를 해석하고 실행한다.
CPU는 0,1의 2진수로 구성된 기계어만 인식한다.
아래와 같이 프로그래밍이 작성되었다고 해보자.
int D2 = 2, D3 = 3, sum;
sum = D2+D3
그러면 실행 process는 아래와 같다.
1 메모리 100번지에 있는 값을 레지스터 2로 갖고 온다 (D2 = 2)
2 메모리 120번지에 있는 값을 레지스터 3으로 갖고 온다 (D3 = 3)
3 레지스터에 있는 2와 3을 더한 결과 5를 레지스터에 넣는다
4 레지스터에 있는 5를 메모리 160번지에 저장한다
이는 매우 단순하게 정리한 것이고, 실제로는 많은 레지스터의 도움을 받으며 연산과정이 실행된다.
버스는 CPU - 메모리, 주변장치 간에 데이터를 오고가게 해주는 이동 수단이다.
버스의 대역폭 (bandwidth) 은 CPU가 한번에 처리할 수 있는 데이터의 크기를 말한다.
레지스터는 크게 2가지로 나뉜다.
user-visible register (사용자 프로그램에 의해 변경 가능)
user-invisible register (사용자가 임의로 변경할 수 없는, 특수 레지스터)
int D2 = 2, D3 = 3, sum;
sum = D2+D3
여기서 int D2 = 2
의 진행 과정을 다시 분석하면 레지스터의 역할을 좀 더 이해할 수 있다.
1 프로그램 카운터에 실행하는 코드 첫 번째 행이 저장된다
2 이 번호는 제어장치에 전송되고, 명령어 레지스터에는 해당 명령어가 저장된다
3 제어 장치가 명령어 레지스터에 있는 명령어를 해석 > 메모리에 있는 데이터를 갖고 오라고 명령한다
4 메모리 주소 레지스터에는 100번지 라는 주소가 저장된다
5 메모리 관리자는 메모리의 100번지에 저장된 값을 메모리 버퍼 레지스터로 갖고 온다
6 제어장치는 메모리 버퍼 레지스터에 저장된 값을 레지스터 2로 옮긴다
출처: 쉽게 배우는 운영체제, 조성호