4. CPU의 작동 원리 - ALU와 제어장치 #39
jcrescent61
started this conversation in
혼자 공부하는 컴퓨터 구조+운영체제
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
강의 보러가기
ALU와 제어장치
CPU는 메모리에 저장된 명령어를 읽어 들이고, 해석하고, 실행하는 장치이다. 그리고 CPU 내부에는 계산을 담당하는 ALU, 명령어를 읽어 들이고 해석하는 제어장치, 작은 임시 저장 장치인 레지스터라는 구성 요소가 있다. 이번에는 ALU와 제어장치에 대해서 알아보자.
ALU
ALU는 계산하는 장치이다. 계산을 하기 위해서는 피연산자와 수행할 연산이 필요하다. ALU가 받아들이는 정보들에 대해서 알아보자.
레지스터를 통해 피연산자를 받아들이고, 제어장치로부터 수행할 연산을 알려주는 제어 신호를 받아들인다. ALU는 레지스터와 제어장치로부터 받아들인 피연산자와 제어 신호로 산술 연산, 논리 연산 등 다양한 연산을 수행한다.
이번에는 ALU가 내보내는 정보를 알아보자.
연산을 수행한 결과는 특정 숫자나 문자가 될 수도 있고, 메모리 주소가 될 수도 있다. 그리고 이 결괏값은 발 메모리에 저장되지 않고 일시적으로 레지스터에 저장된다.
레지스터에 저장하는 이유는 CPU가 메모리에 접근하는 속도보다 레지스터에 접근하는 속도가 훨씬 빠르기 때문이다. 연산할때 마다 결과를 메모리에 저장한다면 CPU는 메모리에 자주 접근하게 되고 CPU가 프로그램 실행 속도를 늦출 수 있다. 그래서 ALU의 결괏값을 메모리가 아닌 레지스터에 우선 저장하는 것이다.
ALU는 계산 결과와 더불어 플래그를 내보낸다. 이 플래그는 이번 절에서 알아야 할 중요한 키워드이다.
플래그란 연산 결과에 대한 추가적인 상태 정보를 플래그라고 한다.
앞서 설명했던 것 처럼 이진수만 봐서는 음수인지 양수인지 판단하기 어렵다. 그래서 음수와 양수를 구분하기 위해 플래그를 사용한다. 때때로 ALU는 결괏값뿐만 아니라 연산 결과에 대한 추가적인 정보를 내보내야 할 때가 있다. 연산 결과가 음수일 때 ALU는 '방금 계산한 결과는 음수'라는 추가 정보를 내보낸다. 혹은 연산 결과가 연산 결과를 담을 레지스터보다 클 때 ALU는 '결괏값이 너무 크다'라는 추가 정보를 내보낸다.
이러한 플래그는 CPU가 프로그램을 실행하는 도중 반드시 기억해야 하는 일종의 참고 정보이다. 그리고 플래그들은 플래그 레지스터라는 레지스터에 저장된다. 플래그 레지스터는 이름 그대로 플래그 값들을 저장하는 레지스터이다. 이 레지스터를 읽으면 연산 결과에 대한 추가적인 정보, 참고 정보를 얻을 수 있게된다.
플래그 레지스터가 위와 같은 형태로 구성되어있다고 가정을 하고 ALU가 연산을 수행한 직후 부호 플래그가 1이 되었다면 연산 결과는 음수임을 알 수 있다.
제로 플래그가 1이 되었으니 연산 결과는 0임을 알 수 있다.
이 밖에도 ALU 내부에는 여러 계산을 위한 회로들이 있다. 대표적으로 덧셈을 위한 가산기, 뺄셈을 위한 보수기, 시프트 연산을 수행 해주는 시프터, 오버플로우를 대비한 오버플로우 검출기 등이 있다.
제어장치
제어장치는 제어 신호를 내보내고, 명령어를 해석하는 부품이다. 제어 신호는 컴퓨터 부품들을 관리하고 작동시키기 위한 일종의 전기 신호이다. 참고로 제어장치는 CPU의 구성 요소 중 가장 정교하게 설계된 부품이라고 해도 과언이 아니다. 그래서 CPU 제조사마다 제어장치의 구현 방식이나 명령어를 해석하는 방식, 받아들이고 내보내는 정보에는 조금씩 차이가 있다. 이번에는 제어창치가 받아들이고 내보내는 가장 대표적인 정보에만 초첨을 맞추어 제어장치의 역할을 이해하는 데만 초첨을 맞춰보자.
제어장치가 받아들이는 정보
제어장치가 내보내는 정보
Beta Was this translation helpful? Give feedback.
All reactions