CPU의 작동 원리 - 제어장치, ALU, 레지스터

Computer Science/OS + CA · 2023. 4. 7. 13:44

CPU는 메모리에 저장한 명령어를 읽고 해석하는 제어장치, 계산을 담당하는 ALU, 작은 임시 저장 장치인 레지스터로 이루어져 있다.  

1. ALU와 제어장치 

ALU

  • ALU가 받아들이는 정보
    • ALU는 레지스터를 통해 피연산자를 받아들이고, 제어장치로부터 수행할 연산을 알려주는 제어 신호를 받아들인다
  • ALU가 내보내는 정보
    • 연산을 수행한 결과는 특정 숫자나 문자, 메모리 주소가 될 수도 있다. 
    • 결과 값은 바로 메모리에 저장되지 않고 일시적으로 레지스터에 저장된다. -> CPU는 레지스터에 임시로 저장하는 것을 통해서 실행 속도를 빠르게 할 수 있다. 
    • ALU는 계산 결과와 함께 플래그를 내보낼 수 있다. 
      • 플래그는 CPU가 프로그램 실행 도중 반드시 기억해야 하는 참고 정보이다. 
      • 플래그는 플래그 레지스터에 저장된다. 

제어장치

  • 제어장치가 받아들이는 정보 
    • 클럭 신호
      • 클럭(clock) 신호는 논리 상태 High와 Low가 주기적으로 나타나는 방형파(square wave) 신호이다. 
      • 클럭 주기에 맞춰서 CPU가 메모리에 저장된 명령어를 읽어들인다. 
    • 해석해야할 명령어
      • CPU가 해석해야 할 명령어는 명령어 레지스터에 저장된다.
      • 명령어 레지스터로부터 해석할 명령어를 받아들이고, 제어 신호를 발생시키고 전달한다. 
    • 플래그 값
      • 플래그 레지스터에서 플래그 값을 받아들이고, 제어 신호를 발생시키고 전달한다.
    • 제어 신호
      • 제어장치는 시스템 버스의 제어 버스로 전달된 제어 신호를 받아들인다. 
      • 제어 버스를 통해서 외부로부터 전달된 제어 신호를 받아들일 수 있다. 
  • 제어장치가 내보내는 정보
    • CPU 외부로 전달하는 제어 신호
      • 메모리에 전달하는 제어 신호
        • 메모리에 새로운 값을 쓰거나 읽고 싶을 때 
      • 입출력장치에 전달하는 제어 신호 
        • 입출력 장치에 새로운 값을 쓰고 싶을 때 
    • CPU 내부로 전달하는 제어 신호 
      • ALU에 전달하는 제어 신호
        • 수행할 연산을 지시
      • 레지스터에 전달하는 제어 신호 
        • 레지스터 간에 데이터를 이동
        • 레지스터에 저장된 명령어를 해석

2. 레지스터

알아야 할 레지스터

  1. 프로그램 카운터 (PC : Program Counter)
    명령어 포인터 (IP:Instruction Pointer)라고도 부르며, 메모리에서 읽어 들일 명령어의 주소를 저장한다. 
  2. 명령어 레지스터 (IR : Instruction Register)
    메모리에서 읽어 들인 명령어를 저장
    한다. 제어 장치는 명령어 레지스터 속 명령어를 읽고, 해석한 뒤 제어 신호를 내보낸다. 
  3. 메모리 주소 레지스터 (MAR : Memory Address Register)
    메모리의 주소를 저장한다. CPU는 읽으려는 주소 값을 주소 버스로 보낼 때, 메모리 주소 레지스터를 사용한다. 
  4. 메모리 버퍼 레지스터 (MBR : Memory Buffer Register)
    메모리로부터 데이터와 명령어를 저장
    한다. 메모리에 쓰려고 하거나 전달받은 값이 있을 때 메모리 버퍼 레지스터를 사용한다. 
  5. 범용 레지스터 (general purpose register)
    일반적인 상황에서 자유롭게 사용할 수 있는 레지스터이다. 범용 레지스터에서는 데이터와 주소를 모두 저장할 수 있다. 
  6. 플래그 레지스터 (flag register)
    연산 결과나 CPU 상태에 대한 부가적인 정보를 저장하는 레지스터
    이다.
  7. 스택 포인터 (stack pointer)
    스택 주소 지정 방식에
    사용되는 레지스터이다.
  8. 베이스 레지스터 (base register) 
    변위 주소 지정 방식에 사용
    되는 레지스터이다. 

3. 특정 레지스터를 이용한 주소 지정 방식

스택 주소 지정 방식 

스택과 스택 포인터를 이용한 주소 지정 방식이다. 스택 포인터는 스택에 마지막으로 저장한 값의 위치를 저장하는 레지스터, 스택의 맨 윗 부분을 가리킨다. 스택 영역은 아래 그림과 같이 메모리 영역안에 존재한다. 

변위 주소 지정 방식

변위 주소 방식은 오퍼랜드 필드의 값과 특정 레지스터의 값을 더하여 유효 주소를 얻어내는 주소 지정 방식이다. 

변위 주소 지정 방식에는 다음과 같은 방법들이 있다. 

  • 상대 주소 지정 방식 
    오퍼랜드와 프로그램 카운터(읽어올 명령어의 주소를 가지고 있는)의 값을 더하여 유효 주소를 얻어내는 방식이다. 만약 오퍼랜드가 -3이면, CPU는 읽어들이기로 한 명령어로부터 '세 번째 이전' 번지에 있는 명령어를 실행한다. 
  • 베이스 레지스터 지정 방식 
    오퍼랜드와 베이스 레지스터의 값을 더하여 유효 주소를 얻어내는 방식이다. 베이스 레지스터 속 기준 주소로부터 얼마나 떨어진 주소에 접근할 것인지 연산한다. 

 

본 게시물은 한빛 미디어 <혼자 공부하는 컴퓨터구조+운영체제>를 공부한 것을 정리하여 기록한 게시물입니다.
사진 출처 (맨 위 부터)

1. https://velog.io/@front/%ED%8C%A8%EC%BA%A0-%EC%BB%B4%ED%93%A8%ED%84%B0-%EA%B5%AC%EC%A1%B0-22%EA%B0%95-35%EA%B0%95-%EC%A0%95%EB%A6%AC

 

컴퓨터 구조 22강 ~ 35강 정리

레지스터에 저장된 데이터에 대해 수행되는 기본적인 연산레지스터 사이에서 이진 정보를 전송하는 레지스터 전송 마이크로 연산레지스터에 저장된 수치 데이터에 대해 산술 연산을 수행하는

velog.io

2. https://www.google.com/search?q=CPU+%EC%A0%9C%EC%96%B4%EC%9E%A5%EC%B9%98&tbm=isch&ved=2ahUKEwja2a_Z1pb-AhVW_WEKHcQ8AkQQ2-cCegQIABAA&oq=CPU+%EC%A0%9C%EC%96%B4%EC%9E%A5%EC%B9%98&gs_lcp=CgNpbWcQAzIHCAAQGBCABDIHCAAQGBCABDoECCMQJzoFCAAQgAQ6BggAEAcQHlCBEVjZFGD3FWgAcAB4AIABggGIAeEEkgEDMC41mAEAoAEBqgELZ3dzLXdpei1pbWfAAQE&sclient=img&ei=unkvZNqUFtb6hwPE-YigBA&bih=936&biw=1618&rlz=1C1GCEU_koKR1035KR1035&hl=ko#imgrc=658ib03FBQCANM 

 

CPU 제어장치 - Google 검색

3) CPU, 제어장치, 연산장치, 제어장치,... blog.naver.com

www.google.com