CS

CPU

Jinn 2023. 11. 3. 23:43

CPU는 메모리에 저장된 명령어를 읽고, 해석하고, 실행하는 장치이다.

CPU의 구성 요소에는 ALU, 제어장치, 레지스터가 있다.

  • ALU: 계산 담당
  • 제어장치: 명령어를 읽고 해석
  • 레지스터: 임시 저장 장치

 

ALU

1+2를 계산하려면 피연산자(1, 2)와 연산(+)이 필요하다.

ALU는 레지스터로부터 피연산자를 받고, 제어장치로부터 수행할 연산을 알려주는 제어 신호를 받는다.

이후 받아들인 피연산자와 제어 신호로 연산을 수행한다.

CPU가 메모리에 접근하는 속도보다 레지스터에 접근하는 속도가 훨씬 빠르기 때문에 결과값은 메모리가 아닌 레지스터에 우선 저장한다.

ALU는 연산 결과와 더불어 연산 결과에 대한 추가적인 상태 정보인 플래그를 내보낸다.

 

부호 플래그 연산 결과의 부호를 나타냄 1은 음수, 0은 양수를 의미함
제로 플래그 연산 결과가 0인지 나타냄 1일 경우 연산 결과가 0, 0일 경우 연산 결과가 1
캐리 플래그 연산 결과 올림이나 빌림 발생 여부 1은 발생함, 0은 발생하지 않음을 의미함
오버플로우 플래그 오버플로우 발생 여부를 나타냄 1은 발생함, 0은 발생하지 않음을 의미함
인터럽트 플래그 인터럽트 가능 여부를 나타냄 1은 가능함, 0은 불가능함을 의미함
슈퍼바이저 플래그 커널 모드인지 사용자 모드인지 1은 커널 모드로 실행중, 0은 사용자 모드로 실행중을 의미함

 

 

제어장치

제어 신호를 내보내고, 명령어를 해석하는 부품.

제어 신호는 부품들을 관리하고 작동시키는 전기 신호.

 

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

  • 클럭 신호
  • 해석할 명령어
  • 플래그 값
  • 제어 신호

제어장치가 내보내는 정보

  • CPU 내부에 전달하는 제어 신호(To. 레지스터, ALU)
  • CPU 외부에 전달하는 제어 신호(To. 메모리, I/O장치)

 

레지스터
  • 프로그램 카운터: 메모리에서 가져올 명령어의 주소를 저장한다.
  • 명령어 레지스터: 메모리에서 읽은 명령어를 저장하는 레지스터.
  • 메모리 주소 레지스터: 메모리의 주소를 저장하는 레지스터.
  • 메모리 버퍼 레지스터: 메모리와 주고받을 값(데이터, 명령어)을 저장하는 레지스터.
  • 범용 레지스터: 일반적인 상황에서 사용할 수 있는 레지스터. 테이터와 주소 모두 저장 가능.
  • 플래그 레지스터: 연산 결과 또는 CPU 상태에 대한 부가적인 정보를 저장하는 레지스터.
  • 스택 포인터: 스택에 마지막으로 저장한 값의 위치를 저장하는 레지스터.
  • 베이스 레지스터

 

1. 첫번째로 실행할 프로그램의 주소가 프로그램 카운터에 저장된다.

2. 프로그램 카운터에서 읽은 주소값이 메모리 주소 레지스터에 저장된다.

3. 제어장치에서 '메모리 읽기' 제어 신호와 메모리 주소 레지스터 값이 각각 제어 버스와 주소 버스를 통해 메모리로 전달.

4. 메모리에 저장된 값은 데이터 버스를 통해 메모리 버퍼 레지스터로 전달되고, 프로그램 카운터가 증가된다.

5. 메모리 버퍼 레지스터에 저장된 값은 명령어 레지스터로 이동한다.

6. 제어장치는 명령어 레지스터의 명령어를 해석하고 제어 신호를 발생시킨다.

7. 1~6을 반복하여 메모리에 저장된 프로그램을 실행한다.