ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CPU의 ALU (Aruthmetic and logical unit)및 CU (Control unit)
    컴퓨터지식/컴퓨터구조 2024. 3. 31. 13:12

    배경

    CPU 내부는 아래와 같이 PC, ALU, AC, MAR (Memory Address Register , 기억장치 주소 레지스터) , 제어장치 (Control unit), IR, MBR (Memory Buffer Register, 기억장치 버퍼 레지스터) 로 구성되며,

    주기억장치에서 필요한 명령어를 읽는 과정인 fetch, 읽어온 명령어를 해석하는 decode, 해석된 명령어를 ALU를 통해 산술 및 논리연산을 싱행하는 execute, 수행 결과를 주기억장치에 저장하는 write back 싸이클로 이루어진다.

     

    이중 CPU의 3대 구성요소는 연산장치 (ALU), 제어장치 (Control unit), 레지스터 세트로 구성되며, 본 포스팅에서는 ALU와 Control unit (CU) 에 대하여 알아보려고 한다.

     

    ALU (Aruthmetic and logical unit)

    ALU 정의 및 구성요소

    CPU에서 수치 연산 및 논리 데이터에 대한 연산을 수행하는 하드웨어모듈로 모든 연산은 ALU를 통해서 수행하며, 계산기로 덧셈, 뺄셈 같은 두 숫자의 산술연산과 배타적 논리합, 논리곱, 논리합 같은 논리연산을 계산하는 디지털 회로이다.

     

    ALU가 계산을 위해서는 수행할 연산과 계산당할 피연산자가 필요하다.ALU는 레저스터를 통해 피연산자를 받으며, 제어장치로부터 어떤 연산을 수행할지 제어신호를 받는다.또한, 계산결과를 매번 메모리에 저장하면 프로그램 실행속도에 영향을 미치기 때문에 메모리보다 접근 속도가 빠른 레지스터를 활용하여 계산한 결과값을 일시적으로 레지스터에 저장한다.마지막으로, 계산을 하면서 나오는 부가적인 참고 정보인 플래그들을 플래그 레지스터에 저장한다. 

     

    이러한 이유로 아래와 같이 ALU에는 산술 연산장치, 논리 연산장치, 보수기, Shift register, 상태 register가 들어가 있다.

     

     

     

    ALU 연산과정

    • 레지스터를 통해 피연산자를 받아들이고, 제어장치로부터 제어신호 (수행할 연산)를 받음
      • input: 제어신호, 피연산자
    • 피연산자, 제어신호를 이용해 연산 수행
      • output: 연산결과, 연산결과 상태를 나타내는 플래그
    • 연산결과를 레지스터에 임시 저장 (매번 연산결과를 메모리에 저장하면 너무 느리니까)
    • 플래그를 플래그 레지스터에 저장
    더보기

    플래그 (flag)

     

    플래그란 ALU가 처리한 연산결과에 대한 추가적인 상태 정보를 의미하며, CPU가 프로그램을 실행하는 도중에 반드시 기억해야되는 참고 정보

     

    부호플래그 제로플래그 캐리플래그 오버플로우플래그 인터럽트플래그 슈퍼바이저플래그
    연산 결과의 부호 표현 연산 결과가 0인지 여부 표현 연산 결과 올림수, 빌림수 발생 표현 오버플로우 발생여부 표현 인터럽트 가능여부 표현 커널모드 실행중 OR 사용자 모드 실행중 여부 표현

     

     

    ALU의 최신 기술 동향

     

    (병렬성에 대하여 추후 포스팅 예정)

     

    - 슈퍼파이프라인, VLIW (Very long Instruction word) 구조에서는 다수의 ALU가 포함되어 동시에 병렬처리 수행

    - 데이터 해저드 해결을 위해 ALU 출력을 입력으로 바로 (ALU-write / ALU-read) 피드백하는 forwording 수행

     

     

    CU (Control unit)

     

    CU 정의 및 구성요소

    명령어 실행을 위한 명령어를 해독하고 제어신호들을 적당한 순서로 발생시키는 H/W 장치로서, 아래의 그림과 같이 명령어, 클럭, 플래그 정보를 입력받아 연산들을 적절한 순서로 처리하기 위한 신호를 내보내고 받아들이는 장치이다.

    아래 그림을 참고하여 Control unit의 input output 정보를 알아보고 연산흐름을 정리해봤다.

     

     

    출처: https://sosohan-coding.tistory.com/entry/%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-ALU-%EC%A0%9C%EC%96%B4%EC%9E%A5%EC%B9%98-%EB%A0%88%EC%A7%80%EC%8A%A4%ED%84%B0

     

    1. Control unit input

    • 클럭신호
    • 플래그 레지스터 속 플래그 값
      • ALU 연산에 대한 추가 상태 정보로 제어장치가 명령어 해석에 필요한 추가 정보
    • 해석할 명령어
      • CPU가 해석해야하는 명령어를 명령어 레지스터에서 받아서 해석한 후 제어신호를 발생하여 수행내용 전
    • 시스템버스 중 제어 버스로 전달되는 제어 신호
      • 제어장치는 제어장치와 입출력장치를 비롯한 CPU 외부 장치들도 보낼 수 있기 때문에 이러한 신호를 받아들임

     

    2. Control unit output

     

    제어장치의 경우 CPU 내부로 ALU나 레지스터의 동작을 지시하기 위한 CPU 내부에 보내는 제어신호메모리나 입출력장치의 값을 읽거나 쓰기 위한 CPU 외부에 보내는 제어신호로 나뉜다.

     

    CPU 내부에 보내는 제어 신호

    • ALU에 전달하는 제어신호
      • 수행할 연산 지시
    • 레지스터에 전달하는 제어신호
      • 레지스터간에 데이터 이동 및 레지스터에 있는 명령어를 읽기 위해 

    CPU 외부에 보내는 제어 신호

    • 메모리에 전달하는 제어신호
      • 제어장치가 메모리에 저장된 값을 읽거나 메모리에 새로운 값을 쓰기 위해
    • 입출력장치에 전달하는 제어신호
      • 입출력장치의 값을 읽기 위해

     

    CU 연산과정

    • 명령어를 해석하고 제어 신호를 내보냄
    • 플래그레지스터에서 플래그, 명령어 레지스터에서 명령어, 제어버스로부터 제어신호를 받음
      • input: 명령어, 클럭, 플래그, 제어신호
      • output: 제어신호

     

     

    References

     

    CPU 내부 구성

    [ALU] 계산을 하는 장 레지스터로부터 피연산자를 받고 제어장치로 부터 제어 신호를 받아들인다. 이런식으로 계산을 하기 위해서는 피연산자와 수행할 연산이 필요하다. 해당 결과값은 다시 다

    2mango.tistory.com

     

    CPU의 구성요소: ALU와 제어장치

    CPU의 구성요소: ALU와 제어장치 CPU는 메모리에 저장된 명령어를 읽고, 해석하고, 실행하는 장치로 크게 ALU, 레지스터, 제어장치로 구성되어 있다. 제어장치는 명령어를 읽고 해석하는 일을, ALU는

    itmaster98.tistory.com

     

    컴퓨터구조 - ALU, 제어장치, 레지스터

    CPU는 메모리에 저장된 명령어를 읽어 드리고, 해석하고, 실행하는 장치입니다. CPU 내부에는 계산을 담당하는 ALU, 명령어를 읽어 들이고 해석하는 제어장치(CU), 내부 임시 저장장치인 레지스터가

    sosohan-coding.tistory.com

     

Designed by Tistory.