Lecture 5 Fixed Point vs Floating Point Q-Format number ...

141 downloads 1750 Views 265KB Size Report
Understand scaling, overflow and rounding in fixed point. Understand ... Arithmetic" by David GoldbergACM Computing Surveys 23, 5 (March 1991). Lecture 5 ...
Q-Format number representation Lecture 5 Fixed Point vs Floating Point

 N-bit fixed point, 2’s complement number is given by: x = − bN −1 2 N −1 + bN − 2 2 N −2 + • • • + b1 21 + b0 20

Objectives:

N-1

Understand fixed point representations Understand scaling, overflow and rounding in fixed point Understand Q-format Understand TMS320C67xx floating point representations Understand relationship between the two in C6x architecture

0

S imaginary binary point

 Difficult to work with due to possible overflow & scaling problems  Often normalise number to some fractional representation (e.g. between ± 1) x ′ = − bN −1 20 + bN − 2 2 −1 + • • • + b1 2 N − 2 + b0 2 N −1

Reference: "What Every Computer Scientist Should Know About Floating-Point Arithmetic" by David GoldbergACM Computing Surveys 23, 5 (March 1991).

N-1

0

S imaginary binary point

Lecture 5 - Fixed point vs Floating point

5-1

Q-format notation  Q-format representation: – if N=16, 15 bit fractional representation

 Rule: – Q m + Qm – Qm x Q n

⇒Q ⇒Q

 Storing Q30 number to 16-bit memory requires rounding or truncation:

⇒ Q15 format

31

Q30

X

Q15

S

S

16

+

1

00

0000

0000

0000

 Rounding:

0

– if r = 0, round down, – r = 1, round up

15

0

r rounding by addition a '1' here

16

15

S

m

31

Q30

S

m+n

15

S

5-2

How to store Q30 number to 16-bit memory?

 Assume 16-bit data format, Q15 x Q15 ⇒ Q30 Q15

Lecture 5 - Fixed point vs Floating point

0

MPY A3,A4,A6 NOP ADDK 4000h,A6 SHR A6,15,A6 STH A6,*A7

; A3 x A4 → A6 ; Delay slot ; rounding add ; truncate bottom 15 bits ; A6 → mem[A7]

S

Lecture 5 - Fixed point vs Floating point

5-3

Lecture 5 - Fixed point vs Floating point

5-4

Avoid overflow with SADD

Safe add routine in C to avoid overflow

 SADD - saturation add instruction  Always clip to max (or min) possible  Set bit 9 of the CSR register to indicate saturation has occurred

Lecture 5 - Fixed point vs Floating point

5-5

Single Precsion Floating Point number

single precision

S

23 22

8-bit exp

 64-bit double precision floating point: 31 30

double precision

0

23-bit frac

20 19

11-bit exp

S

Odd register (e.g. A5)

x = − 1s × 2 exp −127 × 1. frac

0 31

0

52-bit frac Even register (e.g. A4)

x = − 1s × 2 exp −1023 × 1. frac

1.175 × 10−38 < x < 1.7 × 1038

2.2 × 10−308 < x < 1.7 × 10308

 MSB is sign-bit (same as fixed point)  8-bit exponent in bias-127 integer format (i.e., add 127 to it)  23-bit to represent only the fractional part of the mantissa. The MSB of the mantissa is ALWAYS ‘1’, therefore it is not stored

Lecture 5 - Fixed point vs Floating point

5-6

Double Precision Floating Point number

 Easy (and lazy) way of dealing with scaling problem  32-bit single precision floating point: 31 30

Lecture 5 - Fixed point vs Floating point

 MSB is sign-bit (same as fixed point)  11-bit exponent in bias-1023 integer format (i.e., add 1023 to it)  52-bit to represent only the fractional part of the mantissa. The MSB of the mantissa is ALWAYS ‘1’, therefore it is not stored

5-7

Lecture 5 - Fixed point vs Floating point

5-8

Examples

Problems of Q-format

 Convert 5.75 to SP FP – – – –

 Wrong Q-format representation will give totally wrong results  Even correct use of Q-format notation may reduce precision  For this example, Q12 result is totally wrong, and Q8 result is imprecise:

22

5.75 to binary: +1.01110000... x exponent in bias-127 is 127+2 = 129 = 1000 0000b The fractional part is .01110000... after we drop the hidden ‘1’ bit. Answer: 0 10000001 0111000 00...00 = 40B80000 (hex)

 Convert 0.1 to DP FP – 0.1 to binary: 1.10011001(1001 repeats) x 2-4 – exponent in bias-1023 is 1023-4 = 1019 = 011 1111 1011b – The fractional part is .10011001...1010 after we drop the hidden ‘1’ bit and rounding – Answer: 0 01111111011 1001100 ...1001 1010 = 3FB9 9999 9999 999A (hex).

Lecture 5 - Fixed point vs Floating point

5-9

Q12 → 7.50195 Q12 → 7.25 Q24 → 54.38916

0111. 1000 0000 1000 * 0111. 0100 0000 0000 0110 0110. 0110 0011 1010 0000 0000 0000 Q12 → 6.38916 Q8 → 54.38281

Lecture 5 - Fixed point vs Floating point

Data types used by C6x DSPs

5 - 10

Special SP numbers  IEEE floating point standard has a set of special numbers: Special value +0 -0 1 2 +Inf -Inf NaN LFPN SFPN

Lecture 5 - Fixed point vs Floating point

5 - 11

Sign (s) 0 1 0 0 0 1 x 0 0

Exponent (e) 0 0 127 128 255 255 255 254 1

Lecture 5 - Fixed point vs Floating point

Fraction (f) 0 0 0 0 0 0 Nonzero All 1’s All 0’s

Hex Value

Decimal value

0x0000 0000

0.0 -0.0 1.0 2.0 +∞ -∞ not a number 3.40282347 e+38 1.17549435e-38

0x8000 0000 0x3F80 0000 0x4000 0000 0x7F80 0000 0xFF80 0000 0x7FFF FFFF 0x7F7F FFFF 0x0080 0000

5 - 12

Special DP numbers

TMS320C67x Internal System Architecture

 Double precision floating point special numbers: Fraction (f) 0 0 0 0 0 0 Nonzero All 1’s All 0’s

Hex Value

Decimal value

P E R I P H E R A L S

External Memory

0x0000 0000 0000 0000

0.0

0x8000 0000 0000 0000

-0.0

0x3FF0 0000 0000 0000

1.0

0x4000 0000 0000 0000

2.0

0x7FF0 0000 0000 0000

+∞

0xFFF0 0000 0000 0000 0x7FFF FFFF FFFF FFFF

-∞ not a number

0x7FEF FFFF FFFF FFFF

1.7976931348623157 e+308

0x0010 0000 0000 0000

2.2250738585072014 e-308

Internal Buses

.D1 .D2 .M1 .M2 .L1 .L2 .S1 .S2

Regs (B0-B15/31)

Exponent (e) 0 0 1023 1024 2047 2047 2047 2046 1

Regs (A0-A15/31)

Special value +0 -0 1 2 +Inf -Inf NaN LFPN SFPN

Internal Memory

CPU Lecture 5 - Fixed point vs Floating point

5 - 13

Four functional units for each datapath

Lecture 5 - Fixed point vs Floating point

5 - 14

Mapping of instructions to functional units .S Unit

.S .L .D .M

Lecture 5 - Fixed point vs Floating point

5 - 15

ADD ADDK ADD2 AND B CLR EXT MV MVC MVK MVKH

NEG NOT OR SET SHL SHR SSHL SUB SUB2 XOR ZERO

ABSSP ABSDP CMPGTSP CMPEQSP CMPLTSP CMPGTDP CMPEQDP CMPLTDP RCPSP RCPDP RSQRSP RSQRDP SPDP

.D Unit ADD NEG ADDAB (B/H/W) STB (B/H/W) LDB (B/H/W) SUB LDDW SUBAB (B/H/W) MV ZERO

Lecture 5 - Fixed point vs Floating point

.L Unit ABS ADD AND CMPEQ CMPGT CMPLT LMBD MV NEG NORM

NOT OR SADD SAT SSUB SUB SUBC XOR ZERO

MPY MPYH MPYLH MPYHL

SMPY SMPYH

ADDSP ADDDP SUBSP SUBDP INTSP INTDP SPINT DPINT SPRTUNC DPTRUNC DPSP

.M Unit MPYSP MPYDP MPYI MPYID

No Unit Used NOP

IDLE 5 - 16

Detailed internal datapaths

Data path A

Lecture 5 - Fixed point vs Floating point

Data path B

5 - 17

Suggest Documents