CPU는 메모리에 저장된 명령어를 읽어 들이고, 해석하고 실행하는 장치이다.
CPU 내부에는 계산을 담당하는 ALU, 명령어를 읽고 해석하는 제어장치
그리고 작은 임시 저장 장치인 레지스터로 구성 되어있다.
이 중 ALU와 제어장치에 대해 학습해보자.
ALU
ALU는 연산한 결괏값과 플래그를 내보낸다.
계산을 하려면 피연산자와 계산을 수행할 연산이 필요하다.
그래서 ALU는 레지스터를 통해 피연산자를 받아들이고 제어장치로부터 수행할 연사을 알려주는 제어 신호를 받아들인다.
ALU는 연산을 수행하고 결괏값을 내보내는데 일시적으로 레지스터에 저장이 된다.
이유는 CPU가 메모리에 접근하는 속도는 레지스터에 접근하는 속도보다 훨씬 느린데
ALU가 연산할때마다 결과를 메모리에 저장한다면 CPU는 메모리에 자주 접근하게 된다.
그렇게되면 프로그램 실행 속도를 늦출 수 있기 때문에 ALU의 결괏값은 메모리가 아닌 레지스터에 우선 저장된다.
또한 ALU는 계산 결과와 더불어 '플래그'를 내보낸다. 이진수만봐서 음수인지 양수인지 판단하기 어려워서 구분하기 위해 플래그를 내보내고 또 레지스터보다 결과값이 클경우 '결괏값이 너무 크다'라는 추가 정보를 내보낸다.
제어장치
제어장치는 제어 신호를 내보내고 명령어를 해석하는 부품이다.
CPU의 구성 요소 중 가장 정교하게 설계된 부품인데 제조사마다 조금씩 차이가 있다.
제어 장치의 역할에는 크게 4가지가 있다.
- 클럭 신호를 받아들인다.
- 해석해야 할 명령어를 받아들인다.
- 플래그 레지스터 속 플래그 값을 받아들인다.
- 제어장치는 시스템 버스, 그중에서 제어 버스로 전달된 제어 신호를 받아들인다.
- 클럭 신호를 받아들인다.
클럭(clock)이란 컴퓨터의 모든 부품을 일사분란하게 움직일 수 있게 하는 시간 단위이다.
주기에 맞춰 한 레지스터에서 다른 레지스터로 데이터가 이동되거나, ALU에서 연산이 수행되거나, CPU가 메모리에 저장된 명령어를 읽어 들이는 것이다.
2. 해석해야 할 명령어를 받아들인다.
CPU가 해석해야 할 명령어는 명령어 레지스터라는 특별한 레지스터에 저장된다.
제어장치는 이 명령어 레지스터로부터 해석할 명령어를 받아들이고 해석한 뒤, 제어 신호를 발생시켜
컴퓨터 부품들에 수행해야 할 내용을 알려준다.
3. 플래그 제지스터 속 플래그 값을 받아들인다.
플래그는 ALU 연산에 대한 추가적인 상태 정보이다. 컴퓨터 부품들을 제어할 때 중요한 참고 사항이 된다.
그렇기에 제어장치는 플래그 값을 받아들이고 이를 참고하여 제어 신호를 발생시킨다.
4. 제어장치는 시스템 버스, 그중에서 제어 버스로 전달된 제어 신호를 받아들인다.
제어 신호는 CPU뿐만 아니라 입출력 장치를 비롯한 CPU 외부 장치도 발생시킬 수 있다.
제어장치는 제어 버스를 통해 외부로부터 전달된 제어 신호를 받아들이기도 한다.
제어장치는 크게 2가지를 제어 신호를 전달한다.
CPU 외부와 CPU 내부 인데 CPU 외부에 제어 신호를 전달한다는 말은
제어 버스로 제어 신호를 내보낸다는 말과 같다.
이러한 제어 신호에는 크게 메모리에 전달하는 제어 신호와 입출력장치에 전달하는 제어 신호가 있다.
제어장치가 메모리에 저장된 값을 읽거나 쓸 때는 메모리로 제어 신호를 내보내고
입출력장치의 값을 읽거나 새로운 값을 쓰고 싶을 때는 입출력장치로 제어 신호를 내보낸다.
또 CPU 내부에 전달하는 제어 신호에는 크게 ALU에 전달하는 제어 신호, 레지스터에 전달하는 제어 신호가 있다.
ALU에는 수행할 연산을 지시하기 위해, 레지스터에는 레지스터 간에 데이터를 이동시키거나 레지스터에 저장된 명령어를
해석하기 위해 제어 신호를 내보낸다.
'컴퓨터공학(CS) 배우기 > 혼공 컴퓨터 구조 + 운영체제' 카테고리의 다른 글
[CS] 명령어 사이클 (0) | 2023.04.03 |
---|---|
[CS] 레지스터 (0) | 2023.04.02 |
[CS] 명령어의 구조 (1) | 2023.03.27 |
[CS] 소스코드와 명령어 (0) | 2023.03.26 |
[CS] 0과 1로 숫자를 표현하는 방법 (0) | 2023.03.22 |