부동소수점
부동소수점 연산과 연산과 데이터패스 데이터패스
성신여자대학교 IT 학부 우종정 교수
시작하면서
2시작하면서
학습목표
z 부동소수점 연산의 의미 및 표준화된 표현 방식에 대한 학습
z 정규화와 잠복 비트에 대한 개념 소개
z 부동소수점 수에 대한 사칙 연산 및 예외 처리를 학습
z SPIM 데이터패스의 단계별 기능과 개념적 데이터패스를 학습
z 명령어 종류별 데이터 이동 경로를 분석
Embedded System Lab. in Sungshin W. University
목차
z 부동소수점 개요
z 부동소수점 표현
z 부동소수점 사칙 연산
z 데이터패스 개요
z 데이터패스 보행
시작하면서
3시작하면서
학습 내용의 현주소
z컴퓨터의 발전과 성능의 의미
z명령어집합구조
z프로세서: 데이터패스, 제어장치
z메모리: 주기억장치, 캐쉬, 가상기억장치
z입출력장치: 하드디스크, ODD
Embedded System Lab. in Sungshin W. University z버스 구조
z성능 향상을 위한 고급 기술:
파이프라인, RAID, 병렬처리
Processor Computer
Control (“brain”)
Datapath (“brawn”)
Memory (where programs, data live when running)
Devices
Input
Output
부동소수점
4부동소수점 개요 개요
부동소수점 연산
z 소프트웨어로 수행한다면 너무 느림
z 하드웨어로 수행한다면 많은 칩 면적을 요구
z 별도의 칩을 사용하여 구현 → coprocessor
z 1990년대 초반부터 하드웨어 기술 발전으로 동일한 프로세서 칩 에 정수 및 부동소수점 하드웨어의 배치
논점
Embedded System Lab. in Sungshin W. University
논점
z 부동소수점 연산은 어떻게?
z 표현 방식은?
정규형(normal form) z 범위(range)와 정밀도(precision)?z 근사값 처리(rounding)는?
z 예외처리(exception)는?
z …
부동소수점
5부동소수점 개요 개요
과학적 표기
z예를 들어 6.02 * 1023 의 구성요소
가수(mantissa 혹은 significand): 6.02
지수(exponent): 23
기수 혹은 밑(radix 혹은 base): 10 z일반적으로 기수는 고정 → 표현 불필요z가수와 지수를 분리 표현할 필요
예: 6.02E23부동소수점
6부동소수점 개요 개요
표준화의 필요성
z 동일한 내용 다른 표현
0.10100 * 23
0.01010 * 24
10.1000 * 21z 컴퓨터 제작사마다 다른 형식의 표현 난무 IEEE 위원회에서 1985년 표준안으로 IEEE 754 채택
z IEEE 위원회에서 1985년 표준안으로 IEEE 754 채택
z 현재 IEEE 754 표준안을 대부분의 PC와 워크스테이션에서 사용
부동소수점
7부동소수점 표현 표현
IEEE 754 표준화
z단일 정밀도(single precision): 32 비트 표현
부호=1 비트, 지수=8 비트, 가수=23 비트z2배 혹은 복수 정밀도(double precision): 64 비트 표현
부호=1 비트, 지수=11 비트, 가수=52 비트 Short (32-bit) formatEmbedded System Lab. in Sungshin W. University
Long (64-bit) format Sign Exponent Significand
8 bits, bias = 127,
–126 to 127
11 bits, bias = 1023,
–1022 to 1023
52 bits for fractional part (plus hidden 1 in integer part) 23 bits for fractional part
(plus hidden 1 in integer part)
부동소수점
8부동소수점 표현 표현
단일 정밀도
z 32 비트로 구성 (-1)S* 1.M * 2E-127
E: exponent M: mantissa
excess-127 sign+magnitude, normalized S: sign
Embedded System Lab. in Sungshin W. University
z 부호 비트 S: 0(양수) 혹은 1(음수)
z 지수 필드 E: excess-127 코드
z 가수 필드 M: 크기
정규화(normalize)
잠복 비트(hidden bit)z 기수: 항상 2진법을 사용하므로 표현 불필요
binary integer binary significand w/hidden
integer bit
부동소수점
9부동소수점 표현 표현
단일 정밀도
z예제:
11000000110000000000000000000000라는 IEEE 754 표현
의 값?
S=1, M=10000000000000000000000, E=100000012=12910
(- 1)1* 1.10000000000000000000000* 2129-127
따라서 –1.5 * 22= -6.0Embedded System Lab. in Sungshin W. University
부동소수점
10부동소수점 표현 표현
단일 정밀도
z 예제: 3 * 210의 IEEE754 표현은?
부호 비트: 0 (양수)
가수의 2진 표현: 11 (10진법으로 3)
정규화된 가수: 1.1
가수의 표현(23 비트): 10000000000000000000000
정규화 후의 지수 값: 10 +1
Embedded System Lab. in Sungshin W. University
정규화 후의 지수 값: 10 + 1
지수의 excess-127 값: 10 + 1 + 127
지수의 표현(8 비트): 10001010
최종 표현01000101010000000000000000000000
• 초록색: 부호 비트
•
검은색: 지수 필드• 빨간색: 가수 필드
부동소수점
11부동소수점 표현 표현
단일 정밀도의 예외
z예약된 지수 표현: 00000000 혹은 11111111
z지수가 00000000일 경우 잠복 비트가 없음
가수 필드가 모두 0일 경우는 0을 표현한 것이 됨 z지수가 11111111일 경우
가수 필드가 모두 0이면 무한대(∞)가수 필 가 두 0이 아니면 숫자가 아님(N N N N b )
가수 필드가 모두 0이 아니면 숫자가 아님(NaN: Not a Number) z표현 가능한 숫자의 범위
최소 지수 필드 : 00000001
최소 지수 값: 1 – 127 = -126
최대 지수 필드: 11111110
최대 지수 값: 254 – 127 = 127
최대 표현 가능한 수: 1.11…11 * 2127(3.4E38)
최소 표현 가능한 수: 0.00…01 * 2-126(1.4E-45)부동소수점
12부동소수점 표현 표현
범위와 정확도의 상호조정(tradeoff)
z 32 비트로 표현 가능한 종류는 고정
z 지수 필드의 비트 수를 증가시키면
표현 범위 ↑
정확도 혹은 정밀도↓z 가수 필드의 비트 수를 증가시키면 현 범위
표현 범위 ↓
정확도 혹은 정밀도 ↑z 범위와 정확도를 동시에 높이려면 64 비트를 사용하는 복수 정 밀도를 사용해야 함.
부동소수점
13부동소수점 표현 표현
오버플로우와 언더플로우
z오버플로우(overflow):
주어진 표현 방식의 범위가 작아 표현할 수 없을 때
심각한 오류
예를 들면 단일 정밀도 표현에서 1.0 * 2130z언더플로우(underflow):
Embedded System Lab. in Sungshin W. University z언더플로우(underflow):
주어진 표현 방식의 정확도가 떨어져 소수(fraction) 부분을 정확히 표현할 수 없을 때
심각한 오류가 아님
예를 들면 단일 정밀도 표현에서 1.0000 0000 0000 0000 0000 0001 * 20 1.0 * 2-130부동소수점
14부동소수점 사칙연산 사칙연산
부동소수점 뎃셈
z 덧셈할 2개의 수를 부호, 지수, 가수로 분할하고 가수에 잠복 비 트를 추가
z 지수 중 큰 것을 선택
z 작은 지수를 포함하는 수의 가수를 지수의 차이만큼 오른쪽으로 쉬프트
가수를 덧셈
Embedded System Lab. in Sungshin W. University z 가수를 덧셈
z 정규화
z 계산된 부호, 지수, 가수를 합병
여기서는 언더플로우(underflow) 혹은 오버플로우(overflow)를 고려하지 않았음
부동소수점
15부동소수점 사칙연산 사칙연산
부동소수점 덧셈
z예제: 1.000 * 2-1+ (-1.110) * 2-2
지수 조정•
큰 지수: -1•
가수 정렬: -1.110 * 2-2= -0.111 * 2-1
가수 덧셈•
1 000 * 2-1+ ( 0 111) * 2-1= 0 001 * 2-1Embedded System Lab. in Sungshin W. University
•
1.000 * 21+ (-0.111) * 21= 0.001 * 21
정규화•
0.001 * 2-1= 0.010 * 2-2
= 0.100 * 2-3
= 1.000 * 2-4
부동소수점
16부동소수점 사칙연산 사칙연산
부동소수점 곱셈(나눗셈)
z 곱셈할 2개의 수를 부호, 지수, 가수로 분할하고 가수에 잠복 비 트를 추가
z 2개의 부호 비트를 exclusive or 하여 결과 부호 비트로 사용
z 2개의 지수를 합한(뺀) 후 127을 뺌(더함)
z 2개의 가수에 대하여 곱셈(나눗셈) 연산
Embedded System Lab. in Sungshin W. University z 정규화
z 결과를 합병
부동소수점
17부동소수점 사칙연산 사칙연산
부동소수점 곱셈(나눗셈)
z곱셈 예제: 1.000 * 2-1* (-1.110) * 2-2
바이어스 없는 지수 덧셈•
(-1 + 127) + (-2 + 127) – 127 = -3 + 127
가수에 대하여 곱셈 연산•
1.000 * 1.110 = 1.110 * 2-3
정규화 오버플로우/언더플로우 점검
정규화, 오버플로우/언더플로우 점검
결과를 합병•
-1.11 * 2-3부동소수점
18부동소수점 사칙연산 사칙연산
근사값
z 단일 정밀도에서 표현 가능한 최소/최대 수를 벗어나는 수의 표 현은?
이중 정밀도 사용
Rounding•
Round to nearest, round to odd, round to even, … 예외
예외
z 무효 연산
z 오버플로우
z 언더플로우
z 나누기-0
z …
데이터패스
19데이터패스 개요 개요
von Neumann 컴퓨터 구성요소
z프로세서
z메모리
z입/출력 장치
프로세서의 구성요소
z제어장치(Control Unit) 혹은 명령어장치(Instruction Unit)
Embedded System Lab. in Sungshin W. University
제어장치( ) 혹은 명령어장치( )
메모리로부터 명령어를 가져와서 명령어를 해독한 후 자신과 시스 템 전체에게 제어신호(control signal)를 제공z데이터패스(Datapath) 혹은 실행장치(Execution Unit)
프로세서 저장장치(레지스터)
명령어에 대한 산술/논리 연산을 수행하거나 주소계산을 수행하는 데 필요한 하드웨어
상호 연결 버스와 스위치
…데이터패스
20데이터패스 개요 개요
데이터패스 설계
z 문제점: 명령어 인출을 포함한 모든 연산 과정을 하나의 블록으 로 설계하는 것은 비효율적이며 다루기 어려움
z 해결책:
명령어 실행 단계를 여러 단계를 분할하여 설계한 후 각 단계를 연 결하여 전체 데이터패스를 완성
작은 모듈 설계가 용이Embedded System Lab. in Sungshin W. University
작은 모듈 설계가 용이
다른 모듈에 영향을 주지 않고 최적화 혹은 변경 용이데이터패스
21데이터패스 개요 개요
SPIM 데이터패스 단계별 동작
z명령어 인출
명령어 종류에 상관없이 메모리 혹은 캐쉬로부터 PC가 가리키는 32 비트를 IR로 읽기
PC로 하여금 다음 명령어를 지시하도록 조정 z명령어 해독
IR을 필드별로 분해Embedded System Lab. in Sungshin W. University
IR을 필드별로 분해
opcode를 해석하여 명령어 형식과 필드 길이를 결정
opcode를 해석과 동시에 메모리 혹은 캐쉬로부터 Rs와 Rt가 지시 하는 내용을 읽기데이터패스
22데이터패스 개요 개요
SPIM 데이터패스 단계별 동작
z 명령어 실행
대부분 명령어: 실제 작업(+, -, *, / 등)을 수행
load/store의 경우? 예를 들면lw $t0, 40($t1)
•
메모리 접근 주소 계산: $t1 + 40 z 메모리 접근l d/ t 명령어는 메모리 접근
Embedded System Lab. in Sungshin W. University
load/store 명령어는 메모리 접근
다른 명령어는 idle z 레지스터 쓰기
대부분 명령어: 연산한 결과를 레지스터에 기록
load: 읽은 내용을 레지스터에 기록
store/branch/jump는 idle데이터패스
23데이터패스 개요 개요
개념적 데이터패스
PC ruction emo
ry
rtrs rd
egist er s
ALU
ata m or y
inst m
e
+4
rt
re D a me m
imm
instruction
fetch decode/
register read
execute memory register write
데이터패스
24데이터패스 보행 보행
명령어 실행
z 컴퓨터 구조 및 컴퓨터 구현마다 상이함
z SPIM 명령어의 경우
명령어의 공통 실행과정•
명령어 인출•
명령어 해독 레지스터 인출•
레지스터 인출
명령어 고유의 실행과정•
연산 실행, 주소 계산, 분기 등•
메모리 접근•
레지스터 쓰기데이터패스
25데이터패스 보행 보행
명령어 실행
명령어인출 레지스터
쓰기
R-형식, 적재
분기
저장 적재
Embedded System Lab. in Sungshin W. University
명령어 해독 레지스터 인출
연산 실행 주소 계산 분기
메모리접근
분기
적재, 저장
R-형식
데이터패스
26데이터패스 보행 보행
R-format 데이터 이동 경로
z add, sub, slt 등
z 예제: add r3, r1, r2 # r3 = r1+r2
z 기계어:
00000000001 00010 00011 00000 100000 opcode r1 r2 r3
function
Embedded System Lab. in Sungshin W. University z 동작 과정
1.
명령어 인출 및 PC 증가2.
명령어 해독 및 r1 과 r2 읽기3.
2단계에서 읽은 r1 과 r2 더하기4.
idle5.
3단계에서 연산한 결과를 r3에 쓰기데이터패스
27데이터패스 보행 보행
R-format 데이터 이동 경로
z
add r3, r1, r2
# r3 = r1+r2PC ction or y gist er s
ALU
ry
2 1
reg[1]+reg[2]
reg[1]
Embedded System Lab. in Sungshin W. University
instru c mem
+4
re g
ALUData memo
imm
3 reg[2]
데이터패스
28데이터패스 보행 보행
I-format 데이터 이동 경로
z addi, subi, slti, lw, sw 등
z 예제: slti r3, r1, 17 # r3 = r1 < 17 ? 1 : 0
z 기계어:
00101000001 00011 0000000000010001 opcode r1 r3 17
Embedded System Lab. in Sungshin W. University z 동작 과정
1.
명령어 인출 및 PC 증가2.
명령어 해독 및r1
읽기3.
2단계에서 읽은r1
과17 비교 4.
idle5.
3단계에서 비교한 결과에 따라 0 혹은 1을r3에 쓰기
데이터패스
29데이터패스 보행 보행
I-format 데이터 이동 경로
z
slti r3, r1, 17
# r3 = r1 < 17 ? 1 : 0PC ction or y gist er s
ALU
ry
3 1
reg[1]-17 reg[1]
instru c mem
+4
re g
ALUData memo r
imm
x
17
데이터패스
30데이터패스 보행 보행
I-format 데이터 이동 경로
z
sw r3, 17(r1)
# MEM[r1+17] ← r3z 기계어:
10101100001 00011 0000000000010001 opcode r1 r3 17
z 동작 과정
1.
명령어 인출 및 PC 증가2.
명령어 해독 및r1
과r3
읽기3.
2단계에서 읽은r1
과17 더하기
4.
3단계에서 계산한 메모리 주소에 2단계에서 읽은r3를 쓰기
5.
idle데이터패스
31데이터패스 보행 보행
I-format 데이터 이동 경로
z
sw r3, 17(r1)
# MEM[r1+17] ← r3PC ction mor y gist er s
ALU
a ory
3
1 reg[1]+17
reg[1]
Embedded System Lab. in Sungshin W. University
instru me
m
+4
re
ALUDat a mem o
imm
x
17 reg[3]
MEM[r1+17] ← r3
데이터패스
32데이터패스 보행 보행
I-format 데이터 이동 경로
z
lw r3, 17(r1)
# r3 ← MEM[r1+17]z 기계어:
10001100001 00011 0000000000010001 opcode r1 r3 17
Embedded System Lab. in Sungshin W. University z 동작 과정
1.
명령어 인출 및 PC 증가2.
명령어 해독 및r1
과r3
읽기3.
2단계에서 읽은r1
과17 더하기 4.
3단계에서 계산한 주소의 메모리 읽기5.
4단계에서 읽은 메모리 내용을 2단계에서 읽은r3에 쓰기
데이터패스
33데이터패스 보행 보행
I-format 데이터 이동 경로
z
lw r3, 17(r1)
# r3 ← MEM[r1+17]PC ction or y gist er s
ALU
ry
x
1 reg[1]+17
reg[1]
MEM[r1+17]
Embedded System Lab. in Sungshin W. University
instru c mem
+4
re g
ALUData memo
imm
3
17
데이터패스
34데이터패스 보행 보행
데이터가 올바른 방향으로 이동하려면?
PC
struction m emo ry
rd rt rsre gi st er s
ALU
D ata emor y
Embedded System Lab. in Sungshin W. University
in s m
+4
D m e
imm
Controller opcode, funct
학습정리
35학습정리
평가하기
z1.510의 IEEE 754 표현은 16진수로 ( 3FC00000)이다.
zIEEE 754 표현은 정규화 과정을 사용한다. IEEE 754 표현에서 예 외 조치가 없다면 십진수로 ( 0)이라는 수를 표현할 수 없다.
z명령어 “bre r1, r2, label”을 실행할 때 2번째 단계에서 읽은 r1과명령어 , , 을 실행할 때 번째 단계에서 읽은 과 r2를 3번째 단계에서는 ( 뺄셈)한다. 여기서 bre 명령어는 r1과 r2 레지스터의 내용이 동일할 경우 label이 지시하는 장소로 분 기하는 명령어이다.
학습정리
36학습정리
정리하기
z 부동소수점 연산 개요
부동소수점 수의 의미와 과학적 표기법
표준화의 필요성 z 부동소수점 표현
단일정밀도와 2배정밀도
정규화와 잠복비트
단일정밀도 예외 오버플로우와 언더플로우
단일정밀도 예외, 오버플로우와 언더플로우 z 부동소수점 사칙 연산z 데이터패스 개요