[Computer Architecture] Ch.3 컴퓨터 산술과 논리연산(2)

2024. 4. 24. 02:55카테고리 없음

목차

3.1 ALU의 구성 요소

3.2 정수의 표현

3.3 논리 연산

3.4 시프트 연산

3.5 정수의 산술 연산

3.6 부동소수점 수의 표현

3.7 부동소수점 산술 연산

 

< 3.6 부동소수점 수의 표현 >

1. 부동소수점 표현(floating-point representation)

: 소수점의 위치를 이동시킬 수 있는 수 표현 방법

~> 수 표현 범위 확대

- 부동소수점 수(floating-point number)의 일반적인 형태

부동소수점 수의 일반적인 형태

S: 부호(sign)  /  M: 가수(mantissa)  /  B: 기수(base)  /  E: 지수(exponent)

 

- 10진 부동소수점 수(decimal floating-point number)

[예]

예: 10진 부동소수점 수

- 2진 부동소수점 수(binary floating-point number)

> 기수 B=2

> 단일-정밀도(single-precision) 부동소수점 수: 32비트

> 복수-정밀도(double-precision) 부동소수점 수: 64비트

*점밀도가 더 높다 ~> M 유효숫자 길이가 길다

 

2. 단일-정밀도 부동소수점 수 형식의 예

- S: 1비트, E: 8비트, M: 23비트

단일-정밀도 부동소수점 수 형식의 예

- 지수(E) 필드의 비트 수 증가 ~> 표현 가능한 수의 범위 확장

- 가수(M) 필드의 비트 수 증가 ~> 정밀도(precision) 증가

표현가능한 수 크기의 범위

 

[비교] 32-비트 고정소수점(fixed-point) 표현 방식의 경우:

비교) 32-비트 고정소수점 표현 방식의 경우

3. 같은 수에 대한 부동소수점 표현

- 같은 수에 대한 부동소수점 표현이 여러 가지 존재

같은 수에 대한 부동소수점 표현이 여러 가지 존재

- 정규화된 표현(Normalized representation)

> 수에 대한 표현을 한 가지로 통일하기 위한 방법

정규화된 표현

> 위의 예에서 정규화된 표현은

 

4. 부동소수점 표현의 예

- 부호(S) 비트: 0

- 지수(E) = 00000101

- 가수(M) = 1101 0000 0000 0000 0000 0000

- 데이터 표현

데이터 표현

* 소수점 아래 첫 비트는 항상 1이므로, 반드시 저장할 필요는 없음(hidden bit)

~> 가수 23비트를 이용하여 소수점 아래 24자리 수까지 표현 가능

 

5. 바이어스된 지수(biased exponent)

- 지수를 바이어스된 수(biased number)로 표현

- 사용 목적

> 부동소수점 수들 간의 크기 비교가 용이

> 0(혹은 0에 매우 가까운 값)에 대한 표현에서 모든 비트들이 0이 되도록 함으로써, 0-검사(zeo-test)가 용이

 

~> 크기 비교 및 zero-test가 정수 경우와 같은 방법으로 가능해짐

 

6. 8-비트 바이어스된 지수값들(8-bit biased exponents)

* 상식) 책: -128 / IEEE(표준 방식): -127이 바이어스다.

8-비트 바이어스된 지수값들

 

[예제3-27]

10진수 N=-13.625에 대한 32-비트 부동소수점 표현을 구하라.

예제 3-27

 

7. 부동소수점 수의 표현 범위

- 부동소수점 수의 표현 범위

부동소수점 수의 표현 범위

- 제외되는 범위

부동소수점 수의 제외 범위

 

8. 32-비트 데이터 형식의 표현 가능한 수의 범위

32-비트 데이터 형식의 표현 가능한 수의 범위

 

9. IEEE 754 표준 부동소수점 수의 형식

: 부동소수점 수의 표현 방식의 통일을 위하여 미국전기전자공학회(IEEE)에서 정의한 표준

- 32-비트 단일-정밀도 부동소수점 수의 표현

> 가수: 부호화-크기 표현 사용

> 지수 필드: 바이어스 127 사용

> 1.M x 2^E의 형태를 가지며, 소수점 아래의 M부분만 가수 필드에 저장

(소수점 왼쪽의 저장되지 않는 1을 hidden bit라고 부름)

- 64-비트 복수-정밀도 부동소수점의 표현

 

- 단일-정밀도 형식과 복수-정밀도 형식

[예제3-28]

예제 3-28

 

 

10. 예외(exception) 경우를 포함한 IEEE 754 표준

- 예외 경우를 포함한 정의(32-비트 형식)

예외 경우를 포함한 정의(32-비트 형식)

- 예외 경우를 포함한 정의(64-비트 형식)

예외 경우를 포함한 정의(64-비트 형식)

 

11. IEEE 754-2008에서 추가된 정의

- 4배수-정밀도(quadruple-precision: 128-비트) 부동소수점 수의 표현

4배수 정밀도 부동소수점 수의 표현

> 가수: 부호화-크기 표현 사용

> 지수 필드: 바이어스 16383 사용 (범위: -16382  ~  +16383)

- IEEE 754 형식의 주요 파라미터들

 

 

< 3.7 부동소수점 산술 연산 >

< 3.7.1 덧셈과 뺄셈 >

1. 덧셈과 뺄셈

- 지수들이 일치되도록 조정(alignment): (더 큰 수 기준)

- 가수들 간의 연산(+ or -) 수행

- 결과를 정규화(normalization)

[참고] 10진 부동소수점 산술의 예

[참고] 10진 부동소수점 산술의 예

[예제3-29]

예제 3-29: 부동소수점 수들 간의 덧셈

2. 부동소수점 산술의 파이프라이닝

- 연산 과정을 독립적 단계들로 분리 가능

- 단계 수만큼의 속도 향상

- 대규모의 부동소수점 계산을 처리하는 거의 모든 슈퍼컴퓨터들에서 채택

[예] 수 배열(number array)들 간의 덧셈

C(I) = A(I) + B(I)

 

< 3.7.2 부동소수점 곱셈 / 나눗셈 >

1. 2진수 부동소수점 곱셈 과정

1) 가수들을 곱한다

2) 지수들을 더한다

3) 결과값을 정규화

부동소수점 곱셈의 예

 

2. 부동소수점 연산 과정에서 발생 가능한 문제점

- 지수 오버플로우(exponent overflow)

> 양의 지수값이 최대 지수값을 초과

~> 수가 너무 커서 표현될 수 없는 상태이므로, +∞ 또는 -∞로 세트

 

- 지수 언더플로우(exponent underflow)

> 음의 지수값이 최대 지수값을 초과

~> 수가 너무 작아서 표현될 수 없는 상태이므로, 0으로 세트

 

- 가수 언더플로우(mantissa underflow)

> 가수의 소수점 위치 조정 과정에서 비트들이 가수의 우측 편으로 넘치는 상태

~> 반올림(rounding) 적용

 

- 가수 오버플로우(mantissa overflow)

> 같은 부호를 가진 두 가수들을 덧셈하였을 때 올림수가 발생

~> 재조정(realignment) 과정을 통하여 정규화

 

< Appendix: Postfix변환 예제 >

(A-B*(((C-D*E)/F)/G)*E

Appendix, Postfix 변환 예제