본문 바로가기
Recent Study/컴퓨터구조

Computer Arithmetic

by Thinking 2024. 11. 5.

Computer Arithmetic

컴퓨터 산술은 컴퓨터가 숫자와 논리 연산을 수행하는 방법을 다루며, 이를 이해하기 위해 여러 논리 게이트, 보수 시스템, 부동 소수점 표기법 등이 필요합니다.

NAND 게이트

NAND 게이트는 구성의 단순성, 부품의 폭넓은 가용성, 비용 효율성 등 여러 장점이 있어, 모든 기본 논리 기능을 수행할 수 있습니다. 이는 NAND 게이트만으로도 AND, OR, NOT, XOR 등 모든 논리 연산을 구현할 수 있다는 것을 의미합니다.


2의 보수 (Two's Complement)

2의 보수는 컴퓨터에서 음수 표현에 널리 사용되는 방식으로, 다음과 같은 장점을 가집니다.

  1. 0의 표현이 하나뿐이다.
    •   2의 보수 표현에서는 +0과 -0이 존재하지 않으며, 0은 하나의 상태로만 표현됩니다. 이는 계산의 일관성과 효율성을 높입니다.
  2. 양수와 음수 변환이 간편하다.
    •   양수를 음수로 변환할 때, 모든 비트를 반전하고 1을 더하면 됩니다. 이 방식은 하드웨어적으로 간단하게 구현됩니다.
  3. 오버플로우(Overflow) 발생 및 탐지 방법
    •   두 수를 더하거나 뺄 때 결과가 표현 가능한 범위를 벗어나면 오버플로우가 발생합니다. 오버플로우 발생 여부는 가장 왼쪽 비트(MSB)의 변화를 통해 감지할 수 있습니다. 두 수의 부호가 같을 때 결과의 부호가 다르면 오버플로우가 발생한 것입니다.

Adder와 연산

컴퓨터에서 덧셈기(Adder)는 기본적인 산술 연산을 담당합니다. 덧셈기를 활용하여 덧셈, 뺄셈, 곱셈, 나눗셈을 구현할 수 있습니다. 특히, Booth 알고리즘은 2의 보수 곱셈을 수행하는 효율적인 방법으로, 부호 있는 정수 곱셈에 적합합니다.

2의 보수 덧셈, 뺄셈, 곱셈, 나눗셈

  • 덧셈: 두 수를 Adder로 더하여 결과를 얻습니다.
  • 뺄셈: 피감수에 감수를 2의 보수로 변환한 뒤 더해 뺄셈을 수행합니다.
  • 곱셈: Booth 알고리즘을 사용하여 각 비트를 곱하고 Shift-Add 방식으로 결과를 합산합니다.
  • 나눗셈: 나눗셈은 순차적으로 뺄셈을 반복하며 몫을 구하는 방식으로 구현됩니다.

Unsigned Multiplication and Signed Multiplication

  • Unsigned Multiplication: 부호 없는 수의 곱셈으로, 단순히 각 비트를 곱하고 Shift-Add 방식으로 합산하여 결과를 계산합니다.
  • Signed Multiplication: 부호 있는 수의 곱셈으로, 2의 보수 표현을 활용하며 Booth 알고리즘을 적용하여 음수와 양수를 처리합니다.

Real Numbers

실수는 소수점을 포함하는 수로, 컴퓨터에서는 부동 소수점(Floating Point) 방식으로 표현됩니다. 이 방식은 매우 큰 수나 매우 작은 수를 효과적으로 표현할 수 있습니다.

부동 소수점 표기법 (Floating Point Representation)

부동 소수점 표현은 다음과 같은 3가지 컴포넌트로 구성됩니다.

  1. 부호(Sign): 0은 양수, 1은 음수를 나타냅니다.
  2. 지수(Exponent): 수의 크기를 조절하는 지수 값으로, Biased 표현을 사용해 음수 지수를 처리합니다.
  3. 가수(Significand or Mantissa): 소수점을 포함한 유효 자릿수로, 기본적으로 2진수로 표현됩니다.

부동 소수점 표기는 정밀도와 표현 범위를 넓혀주며, 다음과 같은 이유로 사용됩니다.

  • 정수와 실수의 표현 방식 구분
    • 정수와 실수는 범위와 정밀도가 다릅니다. 정수는 -2^32 ~ 2^32-1 범위를 표현할 수 있고, 실수는 매우 작은 값부터 매우 큰 값까지 다양하게 표현할 수 있습니다.
  • IEEE 754 표준
    • IEEE 754 표준은 부동 소수점을 표현하는 국제 표준입니다.
    • 32비트 단정도: 1비트 부호, 8비트 지수, 23비트 가수로 구성됩니다.
    • 64비트 배정도: 1비트 부호, 11비트 지수, 52비트 가수로 구성됩니다.

특별한 값: NaN (Not a Number)

NaN은 "숫자가 아님"을 의미하며, 0으로 나누거나 잘못된 연산의 결과로 발생할 수 있습니다.


부동 소수점 연산 (Floating Point Arithmetic)

부동 소수점 연산에는 덧셈, 뺄셈, 곱셈, 나눗셈이 포함됩니다. 부동 소수점 연산에서 지수와 가수를 조정하여 두 수의 범위를 맞춘 후 연산을 수행합니다.

  • 덧셈과 뺄셈: 두 수의 지수를 맞춘 후 가수를 더하거나 뺍니다.
  • 곱셈: 지수끼리 더하고 가수끼리 곱합니다.
  • 나눗셈: 지수끼리 빼고 가수끼리 나눕니다.

FP Adder

FP Adder(부동 소수점 덧셈기)는 두 개의 부동 소수점 숫자를 더하는 회로입니다. FP Adder는 다음 과정을 통해 덧셈을 수행합니다.

  1. 지수 정렬: 두 숫자의 지수를 비교하여 더 작은 수의 지수를 큰 수의 지수와 일치시키고, 가수를 조정합니다.
  2. 가수 덧셈: 정렬된 지수에 맞춰 가수를 더하거나 빼줍니다.
  3. 정규화(Normalization): 결과를 정규화하여 표현 범위를 유지합니다.
  4. 반올림: 필요한 정밀도에 맞춰 반올림을 수행하여 최종 결과를 얻습니다.

예시: IEEE 754 단정도 표현 예제

예를 들어, 십진수 5.75를 IEEE 754 단정도 표현으로 변환하는 과정은 다음과 같습니다.

  1. 부호: 5.75는 양수이므로 부호는 0.
  2. 이진 변환: 5.75를 이진수로 바꾸면 101.11.
  3. 정규화: 1.0111 x 2^2.
  4. 지수: 지수는 2이고, 127을 더해 129 (10000001)로 표현.
  5. 가수: 소수점 이하만 저장하므로 01110000000000000000000이 가수가 됩니다.

결과적으로, IEEE 754 단정도 표현은 다음과 같습니다.

  • 0 10000001 01110000000000000000000

이와 같이, IEEE 754 표준을 통해 실수를 정밀하게 표현할 수 있습니다.


컴퓨터 아키텍처에서의 실수 표현 (Floating Point Representation)

컴퓨터는 정수와 실수를 각각 다른 방식으로 표현합니다. 정수는 주로 2의 보수 방식으로 표현되고, 실수는 IEEE 754 표준에 따른 부동소수점(Floating Point) 방식으로 나타냅니다.

 

정수 표현: 2의 보수

정수는 2의 보수를 사용하여 음수를 포함한 범위를 표현합니다. 이 방식은 음수와 양수 간 변환이 간단하고, 산술 연산에서 오버플로우(overflow)를 쉽게 감지할 수 있다는 장점이 있습니다.

 

실수 표현: 부동소수점

부동소수점 표현 방식에서는 실수를 부호(sign), 지수(exponent), 유효숫자(significand 또는 mantissa) 세 가지 컴포넌트로 나눠서 표현합니다.

1. 부호 (Sign)

  • 부호 비트는 0이면 양수, 1이면 음수를 나타냅니다.

2. 지수 (Exponent)

  • 실수의 크기를 표현하기 위해 지수를 사용합니다.
  • 지수는 2의 보수가 아닌 바이어스(bias) 방식으로 표현됩니다. 예를 들어 8비트 지수에서는 -127에서 +128까지 표현할 수 있으며, 바이어스를 127로 사용합니다.
    • 예시: 8비트 지수에서 0을 표현하기 위해 실제 값 -127에 바이어스를 더해 표현합니다.
  • 바이어스 방식의 장점:
    • 범위가 -127에서 +128로 더 실용적인 범위를 가지게 됩니다.
    • 부호와 상관없이 숫자 비교가 용이해져, 최상위 비트(MSB)만으로 크기를 판단할 수 있습니다.

 

3. 유효숫자 (Significand 또는 Mantissa)

  • 유효숫자는 실수의 정확도를 결정하는 값입니다.
  • 정규화(Normalization) 방식으로 표현되며, 항상 가장 왼쪽에 1이 오도록 조정됩니다. 따라서 실제로 저장되는 비트는 1을 생략하고 표현합니다. 예를 들어, 23비트의 fraction을 사용하는 경우, 실제로는 24비트의 유효숫자를 표현할 수 있게 됩니다.

 

Single Precision

32비트 단일 정밀도는 다음과 같은 구조로 실수를 표현합니다:

  • 1비트: 부호 비트
  • 8비트: 지수 비트 (바이어스 127)
  • 23비트: 유효숫자

정규화된 표현으로 인해, 0은 표현할 수 없습니다. 대신 다음과 같은 방식으로 특별한 값을 나타냅니다:

  • 지수 비트가 0이고 유효숫자가 0일 때: 0
  • 지수 비트가 0이고 유효숫자가 비 0일 때: denormalized number로, 유효숫자를 왼쪽으로 시프트하여 표현합니다.
  • 지수 비트가 모두 1이고 유효숫자가 0일 때: 양의 무한대(+∞) 또는 음의 무한대(-∞)
  • 지수 비트가 모두 1이고 유효숫자가 비 0일 때: NaN(Not a Number), 정의되지 않은 연산 결과를 나타낼 때 사용됩니다.

실수의 연산

부동소수점의 연산에는 덧셈, 뺄셈, 곱셈, 나눗셈이 있으며, 연산의 정확도와 범위를 유지하기 위해 아래와 같은 방식이 적용됩니다.

  1. 덧셈 및 뺄셈: 지수를 맞추고 유효숫자를 더한 뒤, 필요에 따라 정규화합니다.
  2. 곱셈: 지수를 더하고 유효숫자를 곱한 뒤 정규화합니다.
  3. 나눗셈: 지수를 빼고 유효숫자를 나눈 뒤 정규화합니다.

이를 통해 실수를 표현하는 범위가 확장되며, 고정소수점 방식에 비해 큰 수와 작은 수를 동시에 표현할 수 있는 유연성이 생깁니다.

 

https://kuocw.korea.ac.kr/contentView/contentView.action?content_no=6419&subjectNo=1384

 

(컴퓨터구조) 컴퓨터구조 (190403)

공학>컴퓨터 · 통신>컴퓨터과학 조회1015 주차5 차시2 년도/학기  2019 / 1 강     사  최린 저 작 권   등 록 자  운영자 등록일자  2019-04-04 첨부파일   원본출처 원본

kuocw.korea.ac.kr

'Recent Study > 컴퓨터구조' 카테고리의 다른 글

Pipeline  (2) 2024.11.05
Linking  (0) 2024.10.25
Instruction Set Architecture  (1) 2024.10.25