[컴퓨터구조] week6

Eunbin Park·2022년 4월 11일
0

Computer Architecture

목록 보기
3/3

🎵 Twenty one pilots - Stressed Out

부동소수점 (Floating Point)

2진수 실수 정규화 표현

±1.xxxx×2yyyy\pm1.xxxx \times 2^{yyyy}

  • Sign (S) 부호
  • Fraction (F) 소수점 오른쪽 (xxxx)
    - 유효자리 (Significand): 0, 1 → 실수부분만 중요하게 됨
  • Exponent (E) 지수 (yyyy)

부동소수점의 표현

x=(1)S×(1+F)×2EBiasx = (-1)^S \times (1+F) \times 2^{E-Bias}

F - E의 trade off 관계

  • F 표현 범위가 높을 때: 높은 정확도
  • E 표현 범위가 높을 때: 넓은 표현 범위

표준

데이터 크기C 자료형표준SEFBias
Single Precision32 bitsfloatIEEE Std 7541 bit8 bits23 bits127
Double Precision64 bitsdoubleIEEE Std 19851 bit11 bits52 bits1023

S → E → F 순서 고정

수의 크기 비교

정수 비교 명령어로 실수 비교 가능
E 값이 클 수록 절대값이 큰 수

  • 음수 지수를 2의 보수로 표현 시 매우 큰 수로 보일 수 있음
  • 지수 부분을 부호와 상관없이 비교키 위해 biased 된 표현 사용

E 값에 따른 부동소수점 표현 방법

E (S: 8-bit, D: 11-bit)00이 아닌 수 F(S: 23 bits, D: 52 bits)
00비정규화 수: x=(1)S×(0+F)×21Biasx = (-1)^S \times (0+F) \times 2^{1-Bias}
1~254(S) or 2046(D)x=(1)S×(1+F)×2EBiasx = (-1)^S \times (1+F) \times 2^{E-Bias}
255(S) or 2047(D)±\pm \inftyNaN(Not a Number)
  • E의 가장 작은 값 (E = 0): 0 또는 정규화 수보다 작은 수 표현
  • E의 가장 큰 값 (E = 255(S) or 2047(D)): 무한대 또는 NaN (정규화 표현이 어려운 수도 표현이 가능해짐)

정확도

Single Precision: 약 2232^{-23} 2진수 23자리 \approx 10진수 7자리
Double Precision: 약 2522^{-52} 2진수 52자리 \approx 10진수 16자리

2진수 자릿수 ×log102×0.3\times log_{10} 2 \approx \times 0.3

덧셈과정

  1. 지수가 작은 쪽의 소수점 정렬
  2. 유효자리 덧셈
  3. 정규화 및 over/underflow 확인
    • 지수부분이 -126보다 작을 때: Underflow → 비정규화된 표현 → 0
    • 지수부분이 127보다 클 때: Overflow → 무한대로 표현
  4. 반올림
  5. 정규화 (Optional)

곱셈 과정

  1. 지수 덧셈
  2. 유효자리 곱셈
  3. 정규화 및 over/underflow 확인
    • 지수부분이 -126보다 작을 때: Underflow → 비정규화된 표현 → 0
    • 지수부분이 127보다 클 때: Overflow → 무한대로 표현
  4. 반올림 및 정규화
  5. 부호 결정

MIPS의 부동소수점 instruction

부동소수점 하드웨어 (coprocessor 1)
Single-precision: f1, $f2, ... $f31 Double-precision: $f0/f1, f2/f2/f3 (두 개씩 pair로 사용)

정확한 계산을 위해 추가 bit 사용

  • Guard bit: 자리 맞춤 정확도 개선용도
  • Round bit: 중간 결과가 부동소수점 형식과 일치하도록 사용
  • Sticky bit: 반올림의 딱 중간값의 경우 내림/올림 결정

Guard bit과 round bit을 통해 두 자리 더 추가 표현이 가능해진다.

0개의 댓글