[컴퓨터 구조/운영체제] ALU와 제어장치

myungji·2024년 4월 20일

이 글은 한빛미디어 출판사의 '혼자 공부하는 컴퓨터 구조+운영체제(강민철 저)'를 정리한 내용입니다.

1. ALU

CPU 내부에서 계산을 담당

  • ALU가 받아들이는 정보: 레지스터를 통해 피연산자를 받아들이고,
    제어장치로부터 수행할 연산을 알려주는 제어 신호를 받아들임
  • ALU가 내보내는 정보: 레지스터로 결과값을 내보내고,
    플래그 레지스터로 계산 결과의 플래그를 내보냄

ALU가 레지스터로 결과값을 내보내는 이유
CPU 밖의 메모리로 내보내면 속도가 느려지기 때문에 CPU 내부에 있는 레지스터에 우선 저장

ALU가 내보내는 플래그에는 부호 정보 뿐만이 아니라 연산 결과에 대한 추가적인 상태 정보가 있다.

플래그의 종류

  1. 부호 플래그: 연산 결과의 부호를 나타낸다.
    계산 결과가 음수면 부호 플래그가 1이고, 결과값이 양수이면 부호 플래그는 0이 된다.

  2. 제로 플래그: 연산 결과가 0인지 여부를 나타낸다.
    연산 결과가 0이면 제로 플래그가 1이고, 연산 결과가 0이 아니면 제로 플래그는 0이 된다.

  3. 캐리 플래그: 연산 결과 올림수나 빌림수가 발생했는지를 나타낸다.
    연산 결과에 올림수나 빌림수가 발생했을 경우, 캐리 플래그가 1이 되고 올림수 또는 빌림수가 발생하지 않았을 경우 캐리 플래그는 0이 된다

  4. 인터럽트 플래그: 인터럽트가 가능한지를 나타낸다.
    연산 결과에 인터럽트가 가능할 경우 인터럽트 플래그는 1이 되고, 연산 결과에 인터럽트가 불가능할 경우에 인터럽트 플래그가 0이 된다.

  5. 슈퍼바이저 플래그: 커널 모드로 실행중인지, 사용자 모드로 실행중인지를 나타낸다.
    커널 모드로 실행 중이라면 슈퍼바이저 플래그가 1이고, 사용자 모드로 실행 중일 경우 슈퍼바이저 플래그는 0이 된다.

--> 이러한 플래그들은 '플래그 레지스터'에 저장된다.

이 외에도 ALU 내부에는 덧셈을 위한 가산기, 뺄셈을 위한 보수기, 시프트 연산을 수행하는 시프터, 오버플로우를 대비한 오버플로우 검출기 등이 있다.

2. 제어장치

제어장치는 제어 신호를 내보내고 명령어를 해석하는 부품이고, 제어 신호는 컴퓨터 부품들을 관리하고 작동시키기 위한 일종의 전기 신호이다.

CPU 제조사마다 제어장치의 구현 방식이나 명령어를 해석하는 방식, 
받아들이고 내보내는 정보에 조금씩 차이가 있다.

제어장치가 받아들이는 정보에는 무엇이 있을까?

1) 제어장치는 '클럭 신호'를 받아들인다

클럭이란? 컴퓨터의 모든 부품을 일사불란하게 움직일 수 있게 하는 시간 단위.

컴퓨터의 모든 부품이 클럭 신호에 맞춰 작동한다 
!= 컴퓨터의 모든 부품이 한 클럭마다 작동한다

하나의 명령어가 여러 클럭에 걸쳐 실행될 수 있다.

2) 제어장치는 '해석해야 할 명령어'를 받아들인다

CPU가 해석해야 할 명령어는 '명령어 레지스터'에 저장된다. 제어장치는 이 명령어 레지스터로부터 해석할 명령어를 받아들이고 해석한 뒤, 제어 신호를 발생시켜 컴퓨터 부품들에게 수행해야 할 내용을 알려준다.

3) 제어장치는 '플래그 레지스터 속 플래그 값'을 받아들인다

플래그는 ALU 연산에 대한 추가적인 상태 정보이기에, 제어장치가 이런 중요한 사항을 무시할 수는 없다. 따라서 제어장치는 플래그 값을 받아들이고 이를 참고하여 제어 신호를 발생시킨다.

4) 제어장치는 시스템 버스, 그 중에서 '제어 버스로 전달된 제어 신호'를 받아들인다

제어 신호는 CPU뿐만이 아니라 입출력 장치를 비롯한 CPU 외부 장치도 발생시킬 수가 있다. 제어장치는 제어 버스를 통해 외부로부터 전달된 제어 신호를 받아들이기도 한다.


제어장치가 내보내는 정보에는 무엇이 있을까?

1) CPU 외부에 전달하는 제어 신호

제어 버스로 제어 신호를 내보내는 것. 이 때 내보내는 제어 신호에는 크게 메모리에 전달하는 제어 신호, 입출력 장치(보조 기억 장치 포함)에 전달하는 제어 신호가 있다.

1-1) 메모리에 전달하는 제어 신호: 메모리에 저장된 값을 읽거나 새로운 값을 쓰고 싶을 때 메모리로 제어 신호를 보냄
1-2) 입출력 장치에 전달하는 제어 신호: 입출력 장치의 값을 읽거나 새로운 값을 쓰고 싶을 때 입출력 장치로 제어 신호를 내보냄

2) CPU 내부에 전달하는 제어 신호

CPU 내부로 전달하는 제어 신호에는 ALU에 전달하는 제어 신호, 레지스터에 전달하는 제어 신호가 있다.

2-1) ALU에 전달하는 제어 신호: ALU에는 수행할 연산을 지시하기 위해 제어 신호를 내보냄
2-2) 레지스터에 전달하는 제어 신호: 레지스터 간 데이터를 이동시키거나 레지스터에 저장된 명령어를 해석하기 위해 제어 신호를 내보냄


출처 - '혼자 공부하는 컴퓨터 구조+운영체제(한빛미디어, 강민철 저)'

profile
iOS 초보바리

0개의 댓글