[8/17] CPU의 내부구성 (1) - ALU 와 제어장치
ALU와 제어장치가 내보내고 받아들이는 정보에 대해 알아보자 !
ALU
ALU는 쉽게말해 계산하는 장치로, 계산을 하기 위해선 피연산자(레지스터)와 수행할 연산(제어신호)가 필요하다. ALU 내부에는 계산을 위한 회로들이 있는데 예를 들면 가산기(+), 보수기(-), 시프터, 오버플로우 검출기 등이 있다.
- 레지스터 : 피연산자
- 제어장치 : 제어신호를 보냄
- 플래그레지스터
: ALU는 결괏값을 레지스터에 내보내는 것과 함께, 플래그를 플래그 레지스터로 내보낸다. 이 플래그 레지스터는 연산결과에 대한 부가정보를 저장하는 특수한 레지스터로, 결괏값과 함께, 결과값이 양수인지, 음수인지에 대한 정보가 더불어 내보내지는데 이것을 플래그 레지스터에 담는다. 또한 연산결과가 결과를 담을 레지스터에 비해 너무 크다면(overflow) 이 또한 플래그 레지스트에 담긴다.
- 레지스터 (결괏값 저장)
연산을 마친 ALU는 결괏값( 숫자, 문자, 주소 등 0과 1로 표현된 컴퓨터가 이해할 수 있는 정보 ) 을 레지스터에 저장하는데, 이때 메모리가 아닌 레지스터에 저장하는 이유는 CPU가 메모리보다 레지스터에 접근하는 속도가 더 빠르기 때문이다. 그래서 임시적으로 저장값을 레지스터에 담고, 이것을 메모리에 쓴다던지, 다른 레지스터와 다른 연산을 하는등의 작업을 한다.
** ALU 가 내보내는 정보를 플래그의 정보
정확한 명칭은 CPU마다 다르지만, 대부분의 CPU가 공통적으로 포함하는 플래그 종류는 다음과 같다.
부호플래그 1 |
제로플래그 0 |
캐리플래그 0 |
오버플로우 플래그 0 |
인터럽트 플래그 0 |
슈퍼바이저플래그 0 |
제어장치
- 클럭 ( 클럭신호 )
컴퓨터의 모든 부품들을 일사분란하게 (박자에 맞춰) 움직일 수 있게하는, 일정한 주기로 발생하는 신호를 클럭신호라고 한다. 이 클럭신호 단위에 맞춰서 명령어들이 수행된다. 일정한 주기로 발생하는 클럭신호 한번을 클럭주기라고 하는데, 이것을 시간단위라고 이해할 수 있다. 예를 들면 메모리에서 명령가져오기는 _|_|_|_ 이런 클럭주기로 수행된다, 라고 해석할 수 있다.
- 명령어 레지스터
명령어 레지스터라는 특수한 레지스터에 저장된 명령어를 받아들인다. 즉, 제어장치는 명령어레지스터로 부터 해석할 명령어를 받아들이고, 제어장치 내부에서 해석해서 제어신호를 내보낸다.
- 플래그 레지스터
레지스터로 부터 해석할 명령어를 받아들일때 부가적인 플래그정보도 함께 받아와야 하기에 플래그 레지스트로부터 플래그정보를 받아온다.
- 제어버스
제어신호를 전달하는 연결통로
< CPU 내부전달 >
- 제어신호 (to. 레지스터) 레지스터를 움직이게 하는 신호
- 제어신호 (to. ALU) 수행연산을 지시하는 신호
< CPU 외부전달 >
- 제어신호 (to. 메모리) 메모리 읽기,쓰기 등의 지시 신호
- 제어신호 (to. 입출력장치) 입출력장치 읽기,쓰기,테스트 등 지시 신호
*** 제어신호를 받아들이기도 한다.