본문 바로가기
CS/Computer Architecture

Floating Point Number

by 테리는당근을좋아해 2019. 12. 15.

1. Floating-point number

소수를 포함해 매우 큰 수와 작은 수 표현

 

1) Notation

- decimal : 1.0 x 10^(-9) (normalized number)

- binary : 1.0(2) x 2^(-1)

 

2. floating-point representation

±1. xxxxxx( 2)  ×  2 ^ y ( x :  fration , y : exponent)

- Fractionexponent는 한 word(32 bits) 안에서 표현.

- Fraction을 표현하는데 많은 비트를 사용할 수록 정확도(precision) 증가

- Exponent에 많은 비트를 사용하면 표현할 수 있는 숫자 범위(range) 증가

- overflow : exponent field로 표현할 수 없이 큰 양수가 들어올 때 

- underflow : exponent filed에 표현할 수 없이 큰 음수가 들어올 때

- overflowunderflow 줄이기 위해 double precision 사용

 

 

3. IEEE 754 floationg-point format

1) s : sign bit(0 or 1)

2) significand :

1+fraction (Normalized number에서 정수 부분은 항상 1이기 때문에 fraction1을 제외한 소수 부분만 나타냄.

(더 많은 비트의 significand 표현가능. Ex : single precision에서 24bits 표현가능(암시적인 1 bitfraction 23 bits))

3) Exponent :

actual exponent + bias = biased exponent (biased exponent로 바꿈으로써 unsigned로 표현 -> 정렬 시 간단)

(single precision : 127, double precision : 1203)

Biased exponent

(in single precision) Actual exponent : -128 ~ 127, biased exponent : -1 ~ 254

Biased exponen의 몇 가지 표현은 특정한 값을 표현하기 위해 예약되어 있음 1+fraction

Single precision

Double precision

Object represented

Exponent

Fraction

Exponent

Fraction

 

0

0

0

0

0

0

Nonzero

0

Nonzero

Denormalized number

1-254

Anything

1-2046

Anything

floating-point number

255

0

2047

0

Infinity

255

Nonzero

2047

Nonzero

nan

4) Single precision에서 표현 범위

Smallest value

Exponent : 00000001 -> actual exponent = 1 – 127 : -126

Fraction : 00…0000 -> significand = 1 + fraction : 1.0

-1.000….0000(2) * 2^-126

Largest value

Exponent : 1111110 -> actual exponent = 254 – 127 : 127

Fraction : 11…1111 -> significand = 1 + fraction : 1.1111…1

+1.1111….1111(2) * 2^127

 

-1.000….0000(2) * 2^-126 ~ +1.1111….1111(2) * 2^127

 

 

4. Floating point addition(binary)

ex) 0.5 + (-0.4375)

(binarization) 1.0 * 2^-1 – 1.11 * 2^-2

 

1)Align(지수가 높은 수의 지수로 통일해줌)
1.0 * 2^-1 – 0.111 * 2^-1

 

2)Add significands(두 수를 더함)
0.001
* 2^-1

 

3)Normalize, check over/underflow
1.0
* 2^-4

 

4)Round(반올림)

1. 더 작은 지수를 찾는다.

2. 지수의 차 계산

3. 더 작은 수의 significand 지수의 차 만큼 shift right

4. significand의 뺄셈 연산 수행

5. Significand의 결과값을 통해 exponent 계산하고, normalization 수행

6. Fraction 계산 ( significand – 1)

7. Overflow 또는 underflow 발생 시 round

 

5. Floating point support in MIPS ISA

1) Floating point addition and subtraction

-add.s, add.d, sub.s, sub.d (s: single precision, d: double precision)

 

2) Floating point multiplication and division

-mul.s, mul.d, div.s, div.d

 

3) Floating point data transfer operation

- lwc1, swc1

 

4) Floating point comparison

-c.eq.s, c.eq.d, c.lt.s, c.lt.d… (condition code flag 0 또는 1로 설정)

 

5) Floating point branch true/false

- condition code flag 기반

- bc1t : condition code flagtruebranch

- bc1f : condition code flagfalsebranch

 

6) Floating point register 구분

-$f0, $f1,…, $f31( 32)

-Double precisionfloating point register 쌍으로 사용 ($f0,$f1), ($f2,$f3), …

-Floating point instructionfloating point register만 사용

'CS > Computer Architecture' 카테고리의 다른 글

Language of the Computer  (0) 2019.12.23
Computer Abstraction and Technology  (1) 2019.12.22
Processor - Datapath  (0) 2019.12.17
Memory Hierarchy  (0) 2019.12.16
Processor - logic design basics  (0) 2019.12.16

댓글