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)
[예]

- 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) 표현 방식의 경우:

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이 바이어스다.

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

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

- 제외되는 범위

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

9. IEEE 754 표준 부동소수점 수의 형식
: 부동소수점 수의 표현 방식의 통일을 위하여 미국전기전자공학회(IEEE)에서 정의한 표준
- 32-비트 단일-정밀도 부동소수점 수의 표현

> 가수: 부호화-크기 표현 사용
> 지수 필드: 바이어스 127 사용
> 1.M x 2^E의 형태를 가지며, 소수점 아래의 M부분만 가수 필드에 저장
(소수점 왼쪽의 저장되지 않는 1을 hidden bit라고 부름)
- 64-비트 복수-정밀도 부동소수점의 표현

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

[예제3-28]

10. 예외(exception) 경우를 포함한 IEEE 754 표준
- 예외 경우를 포함한 정의(32-비트 형식)

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

11. IEEE 754-2008에서 추가된 정의
- 4배수-정밀도(quadruple-precision: 128-비트) 부동소수점 수의 표현

> 가수: 부호화-크기 표현 사용
> 지수 필드: 바이어스 16383 사용 (범위: -16382 ~ +16383)
- IEEE 754 형식의 주요 파라미터들

< 3.7 부동소수점 산술 연산 >
< 3.7.1 덧셈과 뺄셈 >
1. 덧셈과 뺄셈
- 지수들이 일치되도록 조정(alignment): (더 큰 수 기준)
- 가수들 간의 연산(+ or -) 수행
- 결과를 정규화(normalization)
[참고] 10진 부동소수점 산술의 예

[예제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
