CPU의 기본 구성
CPU는 명령어를 해석하여 실행하는 장치로 산술논리 연산장치, 제어장치, 레지스터로 구성된다. 요리를 하는 과정에서 빗대어보면 요리사에 해당한다.
- 산술논리 연산장치(Arithmetic and Logic Unit, ALU): 데이터의 덧셈, 뺄셈, 곱셈, 나눗셈과 같은 산술 연산과 AND, OR 같은 논리 연산을 수행한다. 요리에 비유하면 요리사가 재료를 손질하는 것이다.
- 제어장치(Control Unit): CPU에서 작업을 지시하는 부분으로 요리에 비유하면 요리사가 머릿속으로 '도마 위의 재료를 가져와라', '양파 껍질을 미리 벗겨 놓아라' 등의 지시가 이루어지는 것이다.
- 레지스터(Register): CPU 내에 데이터를 임시로 보관하는 곳이다. 요리에 비유하면 재료를 냄비에 필요한 만큼 잠시 넣어두는 것이다.
CPU의 명령어 처리 과정
간단한 덧셈 프로그램으로 산술논리 연산장치, 제어장치, 레지스터가 어떻게 협업하는지 살펴보면 다음과 같다.
int a = 2, b=3, sum;
sum = a + b;
위의 소스코드는 사람이 인식할 수 있지만 CPU는 0과 1의 2진수로 이루어진 기계어만 인식하기 때문에 컴파일러를 통해 기계어로 바꿔야한다. 기계어는 사람이 인식하기 어려운 언어이므로 위의 소스코드를 어셈블리어로 바꾸어 보면 다음과 같다.
LOAD mem(100), register 2;
LOAD mem(120), register 3;
ADD register 5, register 2, register 3;
MOVE register, mem(160);
CPU가 연산을 하려면 필요한 데이터를 CPU로 가져와 임시로 보관해야 하는데 이 때에는 레지스터를 사용하여 메모리 100번지와 120번지에 있는 값을 레지스터 2와 3으로 가져온다. 데이터가 준비되면 산술논리 연산장치에서 두 값을 더하여 그 결과값을 레지스터 5에 저장하고 레지스터 5에 저장된 값을 최종적으로 메모리의 160번지로 옮긴다.
제어장치는 위의 명령어들을 해석하여 제어 신호를 보내고 CPU 내의 데이터 흐름을 조절한다. 가령 위의 예에서 '메모리에서 데이터를 가져와라', '덧셈을 실행하라', '덧셈한 결과값을 메모리로 옮겨놔라'라는 신호이다. 아래 그림은 위의 소스 코드를 CPU의 명령어 처리 과정으로 나타낸 것이다.
레지스터의 종류
레지스터의 종류에는 여러 가지가 있는데, 위의 예에서 예를 들었던 레지스터는 데이터 레지스터(DR)와 주소 레지스터(AR)이다.
- 데이터 레지스터(Data Register): 메모리에서 가져온 데이터를 임시로 보관할 때 사용한다. CPU에 있는 대부분의 레지스터가 데이터 레지스터이기 때문에 일반 레지스터라고도 불린다.
- 주소 레지스터(Address Register): 데이터 또는 명령어가 저장된 메모리의 주소를 저장한다.
이 밖에도 특별한 용도로 사용되는 레지스터도 있는데 이를 특수 레지스터라고 부른다. 이는 사용자가 임의로 변경할 수 없다.
- 프로그램 카운터(Program Counter): CPU는 다음에 처리해야 할 명령어를 알아야 한다. 따라서, 프로그램 카운터는 다음에 실행할 명령어의 주소를 가리킨다. 명령어 포인터라고도 불린다.
- 메모리 주소 레지스터(Memory Address Register): 메모리에서 데이터를 가져오거나 보낼 때 주소를 지정하기 위해 사용한다. 명령어를 처리하는 과정에서 필요한 메모리 주소를 저장한다.
- 메모리 버퍼 레지스터(Memory Buffer Register): 메모리에서 가져온 데이터나 메모리로 옮겨 갈 데이터를 임시로 저장한다. 항상 메모리 주소 레지스터와 함께 동작한다.
위의 어셈블리어 코드 1행은 아래 그림과 같다.
① 프로그램 카운터에는 현재 실행 중인 코드의 행 번호 1이 저장되어 있고 이 번호는 제어장치에 전송된다.
② 제어장치가 명령어 레지스터에 있는 명령어를 해석하여 메모리에 있는 데이터를 가져오라는 제어 신호를 보낸다.
③ 메모리 주소 레지스터에는 100이 저장되고, 메모리 관리자는 메모리의 100번지에 저장된 값을 메모리 버퍼 레지스터로 가
져온다.
④ 제어장치는 메모리 버퍼 레지스터에 저장된 값을 레지스터 2로 옮긴다.
'운영체제 > 기초' 카테고리의 다른 글
7. 컴퓨터 성능 향상 기술 (0) | 2020.10.14 |
---|---|
6. CPU와 메모리(2) (0) | 2020.10.14 |
4. 하드웨어의 기본 구성 (0) | 2020.10.05 |
3. 운영체제의 구조 (0) | 2020.10.05 |
2. 운영체제의 역사 (0) | 2020.09.28 |