[컴퓨터 구조] CPU : 연산장치

bien·2024년 8월 6일
0

컴퓨터구조

목록 보기
4/10

산술 논리 장치(ALU, arithmetic and logical unit)

  • 덧셈, 뺄셈 같은 두 숫자의 산술연산과 배타적 논리합, 논리곱, 논리합 같은 논리연산을 계산하는 디지털 회로.
  • 산술 논리 장치는 컴퓨터 중앙처리장치의 기본 설계 블록이다.

  • 레지스터를 통해 피연산자를 받아들이고, 제어장치로부터 수행할 연산을 알려주는 제어 신호를 받아들인다.
  • 레지스터와 제어장치로부터 받아들인 피연산자와 제어신호로 산술연산, 논리 연산 등 다양한 연산을 수행한다.

ALU의 결과물: 계산결과

  • 연산을 수행한 결과는 특정 숫자나 문자가 될 수도 있고, 메모리 주소가 될 수도 있다.
    • 이 결과값은 바로 메모리에 저장되지 않고 일시적으로 레지스터에 저장된다.
  • CPU가 메모리에 접근하는 속도는 레지스터에 접근하는 속도보다 훨씬 느리다.
    • ALU가 연산할 때 마다 결과를 메모리에 저장한다면 CPU는 메모리에 자주 접근하게 되고, 이는 프로그램 실행 속도를 늦출 수 있다.
    • 그래서 ALU의 결괏값을 메모리가 아닌 레지스터에 우선 저장하는 것이다.

ALU의 결과물: 플래그

  • 플래그(flag): 연산결과에 대한 추가적인 상태 정보
    • 연산결과가 음수일 때, ALU는 '방금 계산한 결과는 음수'라는 추가 정보를 내보낸다.
      • 이진수만으로는 음수인지 양수인지 판단하기 어렵기 때문에, 이를 구별하기 위해 플래그를 사용한다.
    • 연산 결과를 담을 레지스터보다 클때, ALU는 '결괏값이 너무 크다'라는 추가정보를 내보낸다.
      • 연산결과가 결과를 담을 레지스터보다 큰 상황을 오버플로우(overflow)라고 한다.
  • 플래그들은 반드시 플래그 레지스터라는 레지스터에 저장한다.
플래그 종류의미사용 예시
부호 플래그연산한 결과의 부호를 나타낸다.부호플래그가 1일 경우 계산결과는 음수, 0일 경우 계산결과는 양수를 의미한다.
제로 플래그연산 결과가 0인지 여부를 나타낸다.제로 플래그가 1일 경우 연산 결과는 0. 0일 경우 연산결과는 0이 아님을 의미한다.
캐리 플래그연산 결과 올림수나 빌림수가 발생했는지를 나타낸다.캐리 플래그가 1일 경우 올림수나 빌림수가 발생했음을 의미하고, 0일 경우 발생하지 않았음을 의미한다.
오버플로우 플래그오버플로우 발생 여부를 나타낸다.오버플로우 플래그가 1일 경우 오버플로우가 발생했음을 의미하고, 0일경우 발생하지 않았음을 의미한다.
인터럽트 플래그인터럽트가 가능한지를 나타낸다.인터럽트 플래그가 1일 경우 인터럽트 가능, 0일경우 불가능을 의미
슈퍼바이저 플래그커널모드로 실행중인지, 사용자모드로 실행중인지를 나타낸다슈퍼바이저 플래그가 1일 경우 커널 모드, 0일경우 사용자 모드로 실행중임을 의미한다.

마이크로 연산(micro-opertation)

  • 레지스터에서 저장된 데이터를 대상으로 수행되는 연산
  • 즉, CPU 내부에서 존재하는 레지스터의 상태를 변경시키는 동작.
    • 하나의 명령은 한 개 이상의 마이크로 연산이 수행되어 동작한다.
    • 하나의 마이크로 연산을 수행하는 시간을 마이크로 사이클 타임이라 부른다.
    • 마이크로 사이클 타임은 CPU의 속도를 나타내는 척도로 사용된다.

1) 전송

  • 레지스터 간의 데이터(이전 정보)를 주고 받는다.

2) 산술연산(사칙연산, 증감, 보수 etc)

  • 레지스터에 저장되어 있는 데이터를 대상으로 산술연산을 수행한다.

3) 논리연산(AND, OR, XOR, NOT, etc)

  • 레지스터에 저장되어 있는 데이터를 대상으로 논리 연산을 수행한다.

4) 시프트 연산

  • 레지스터에 저장되어 있는 데이터를 대상으로 시프트 연산을 수행한다.

구성

  • 가산기
    • 2개 이상의 입력된 수의 합을 계산하는 논리회로
  • 보수기
    • 보수를 처리하는 논리회로
  • 누산기
    • 산술 및 논리 연산의 결과를 일시적으로 계산하는 레지스터
    • 계산 과정에서 발생하는 중간 값을 보관하는 레지스터
  • 플리플롭
    • 한 개의 비트를 저장하는 기억회로
  • 데이터 레지스터
    • 명령어를 수행할 때 필요한 데이터를 저장하는 레지스터
    • 데이터 레지스터는 워드(word)의 크기와 동일하다.
    • 워드(word)란, 한 번에 가져올 수 있는 명령어의 크기를 말한다.

연산 과정

  1. 레지스터 또는 기억 장치에서 데이터를 가져온다.
  2. ALU에서 명령어에 따른 연산을 수행한다.
  3. 연산의 결과값을 누적기(Accumulator)에 저장한다.

ALU의 의의

  • ALU = '산술 회로' + '논리 회로'
    • 산술/논리/쉬프트 마이크로 연산을 선택적으로 수행 가능한 만능 회로
    • CPU의 연산기능을 도맡아 수행하면서, '연산'이라는 기능 자체를 ALU로 치환할 수 있는 추상화가 가능해진다.

역사: 폰 노이만의 제안

수학자 폰 노이만은 에드박이라고 불리는 새로운 컴퓨터 설계보고서를 작성했을 때, 1945년에 산술 논리장치의 개념을 제안했다. 1946년에, 그는 프린스턴의 고급 연구소(IAS)에서 컴퓨터 설계로 그의 동료와 일했다. IAS 컴퓨터는 많은 이후 컴퓨터의 원형이 된다. 제안에서, 폰 노이만은 산술논리장치를 포함해서, 그의 장치가 필요하게 될 거라는 어떤 믿음의 윤곽을 잡았다.

폰 노이만은 살술논리장치가 컴퓨터에 필요하다고 진술했다. 왜냐하면 컴퓨터가 덧셈, 뺄셈, 나눗셈, 곱셈을 포함한 기본적인 수학 연산을 계산하도록 보장되어야 했기 때문이다. 그러므로 그는 "컴퓨터는 이러한 연산을 위해 특별한 장치가 포함되어야 합리적"이라고 믿었다.

Reference

profile
Good Luck!

0개의 댓글