본문 바로가기
Computer Science/컴퓨터 구조 (Computer Architecture)

[혼공컴운] Ch4. CPU의 작동 원리 (ALU, 제어장치)

by hyuga_ 2023. 10. 4.

ALU와 제어장치

CPU는 ALU, 제어장치, 여러개의 레지스터 로 이루어져 있다.

  • ALU: 계산하는 장치 (산술논리 장치)
  • 제어장치: 제어 신호를 발생시키고 명령어를 해석하는 장치

 

ALU (산술논리 장치, Arithmetic logic unit)

 

(해당 강의에서는 다루지 않으나, ALU 안에는 가산기, 검출기 등 다양한 회로가 있다.)

 

ALU가 받는 정보 (input to ALU)

계산을 하기 위해서는 피연산자와 수행할 연산이 필요하다

2 + 1 을 수행하라 → 21은 피연산자이고, +는 수행할 연산(연산자)이다

  • 피연산자는 레지스터에서 받아들이고,
  • 수행할 연산은 제어장치로부터 제어신호로써 받아들이게 된다

 

ALU가 내보내는 정보 (output from ALU)

 

1. 연산 결과

binary 형태의 연산 결과 (숫자, 문자, 주소 등)를 레지스터로 내보낸다

 

ALU가 내보내는 결과를 메모리가 아니라 레지스터에 저장하는 이유는?

  • CPU가 레지스터에 접근하는 속도가 더 빠르기 때문이다
  • 임시적으로 계산한 결과를 일단 레지스터에 담고, 최종 결과값을 메모리에 쓰기를 통해 새기거나, 다른 레지스터와 다른 연산을 수행한다

 

 

2. 플래그

플래그를 플래그 레지스터에 내보낸다

 

플래그의 역할

: 연산 결과에 대한 부가 정보를 담고 있다

 

플래그의 종류

 

1. 부호 플래그

  • 의미: 연산한 결과의 부호를 나타낸다 (2장 이진법에서 나온 개념)
  • 사용 예시: 부호 플래그가 1일 경우 계산 결과는 음수, 0일 경우 계산 결과는 양수를 의미한다

 

2. 제로 플래그

  • 의미: 연산 결과가 0인지 여부를 나타낸다
  • 사용 예시: 제로 플래그가 1일 경우 연산 결과는 0, 0일 경우 연산 결과는 0이 아님을 의미한다

 

3. 캐리 플래그

  • 의미: 연산 결과 올림수나 빌림수가 발생했는지를 나타낸다
  • 사용 예시: 캐리 플래그가 1일 경우 올림수나 빌림수가 발생했음을 의미하고, 0일 경우 발생하지 않았음을 의미한다

 

4. 오버플로우 플래그

  • 의미: 오버플로우가 발생했는지를 나타낸다 (오버플로우: 연산 결과가 (결과를 담을 레지스터에 비해) 너무 크다)
  • 사용 예시: 오버플로우 플래그가 1일 경우 오버플로우가 발생했음을 의미하고, 0일 경우 발생하지 않았음을 의미한다

 

5. 인터럽트 플래그

  • 의미: 인터럽트가 가능한지를 나타낸다 (인터럽트는 아래에서 설명)
  • 사용 예시: 인터럽트 플래그가 1일 경우 인터럽트가 가능함을 의미하고, 0일 경우 인터럽트가 불가능함을 의미한다

 

6. 슈퍼바이저 플래그

  • 의미: 커널 모드로 실행 중인지, 사용자 모드로 실행 중인지를 나타낸다. (커널 모드와 사용자 모드는 09장에서 설명)
  • 사용 예시: 슈퍼바이저 플래그가 1일 경우 커널 모드로 실행 중임을 의미하고, 0일 경우 사용자 모드로 실행 중임을 의미한다

 

플래그 레지스터

: 플래그들은 플래그 레지스터라는 특수한 레지스터에 각각 저장된다

 

 

제어장치

제어장치가 받아들이는 정보

1. 클럭 (Clock)

  • 클럭(clock)이란 CPU의 속도를 나타내는 단위(클럭 속도 = Hz 표기). 클럭은 1초 동안 파장이 한 번 움직이는 시간을 의미하는데, 이 시간 동안 처리하는 데이터 양에 따라 CPU의 속도가 달라지게 된다.
  • 클럭 신호의 단위에 맞춰서 명령어들이 수행되기 때문에, 클럭 속도에 따라 컴퓨터의 여타 부품이 작업하는 속도도 달라진다.

 

2. 해석할 명령어

  • 명령어 레지스터로부터 해석할 명령어를 받는다
    • 해석할 명령어 받기 → 명령어 해석 → 제어신호 내보내기

 

3. 플래그

  • 플래그 레지스터로부터 플래그 값을 받는다
  • 명령어 레지스터로부터 해석할 명령어를 받을 때, 플래그를 통해 부가 정보를 같이 받아야 정확한 해석이 가능하다

 

4. 제어 신호

  • 제어장치뿐 아니라, 입출력 장치 등 주변 장치도 제어 신호를 발생시킨다
  • 이처럼 외부로부터 오는 제어 신호를 제어장치가 받아 작업을 수행한다

 

제어장치가 내보내는 정보

 

1. CPU 내부에 전달하는 제어 신호

  • 레지스터, ALU 에 내보내는 제어 신호
    • → 레지스터: 행동을 지시 (정보를 이동해라, 값을 저장해라, 어떤 행동을 해라)
    • → ALU: 수행할 연산을 지시 (무슨 연산을 수행할지)

 

2. CPU 외부에 전달하는 제어 신호

  • 메모리, 입출력장치에 내보내는 제어 신호
    • → 메모리: 읽기/쓰기 지시
    • → 입출력장치: 입출력장치 읽기/쓰기/테스트 지시
  1.