정수의산술연산과부동소수점연산 정수의산술연산부동소수점수의표현부동소수점산술연산 이자료는김종현저 - 컴퓨터구조론 ( 생능출판사 ) 의내용을편집한것입니다.
3.5 정수의산술연산 기본적인산술연산들 2 2
3.5.1 덧셈 2 의보수로표현된수들의덧셈방법 두수를더하고, 만약올림수가발생하면버림 3 3
병렬가산기 (parallel adder) 덧셈을수행하는하드웨어모듈 4- 비트병렬가산기와상태비트제어회로 4 비트수만큼의전가산기 (fulladder) 들로구성 덧셈연산결과에따라해당조건플래그들 (condition flags) 을세트 C 플래그 : 올림수 (carry) S 플래그 : 부호 (sign) Z 플래그 : 0(zero) V 플래그 : 오버플로우 (overflow) 4
덧셈오버플로우 덧셈결과가그범위를초과하여결과값이틀리게되는상태 검출방법 : 두올림수 (carry) 들간의 exclusive-or 를이용 5 V = C 4 C 3 5
3.5.2 뺄셈 6 덧셈을이용하여수행 (A : 피감수 (minuend), B : 감수 (subtrahend) A - (+B) = A + (-B) A - (-B) = A + (+B) [ 예제 3-22] 덧셈과뺄셈겸용하드웨어의블록구성도 뺄셈오버플로우 뺄셈결과가그범위를초과하여결과값이틀리게되는상태 검출방법 : 덧셈과동일 (V = C 4 C 3 ) [ 예제 3-23] 6
3.5.3 부호없는정수의곱셈 7 방법 각비트에대하여부분적 (partial product) 계산 부분적들을모두더하여최종결과를얻음 [ 예제 3-24] 부호없는정수승산기의하드웨어구성도 장 M 레지스터 : 피승수 (multiplicand) 저 Q 레지스터 : 승수 (multiplier) 저장 두배길이의결과값은 A 레지스터와 Q 레지스터에저장 7
곱셈이수행되는과정에서의레지스터내용들 8 8
2 의보수들간의곱셈 Booth 알고리즘 (Booth's algorithm) 사용 Booth 알고리즘하드웨어구성도 9 하드웨어구성 부호없는정수승산기의하드웨어에다음부분을추가 M 레지스터와병렬가산기사이에보수기 (complementer) 추가 Q 레지스터의우측에 Q -1 이라고부르는 1-비트레지스터를추가하고, 출력을 Q 0 와함께제어회로로입력 보수기 Q-1 9
Booth 알고리즘의흐름도 Booth 알고리즘을이용한곱셈의예 (-7 x 3) 10 10
3.5.4 나눗셈 나눗셈의수식표현 A B = q r 부호없는 2 진나눗셈알고리즘의흐름도 단, A : 피제수 (dividend), B : 제수 (divisor) q : 몫 (quotient) r : 나머지수 (remainder) 11 부호없는 2 진나눗셈 11
부호있는 2 진나눗셈 부호있는 2 진나눗셈알고리즘의흐름도 [ 예 ] 2 의보수나눗셈 {7 (-3)} 과정 12 A,M 부호같으면 A=A-M 다르면 A=A+M 연산전후의 A 의 부호가다르고 0 이아닌가?? A 를원상복귀 젯수와피젯수의부호가다르면보수 12
나눗셈결과값 [ 예 ] A B = q r 13 [ 예 ] 7 3 몫 (q) = 2 (0010) 나머지 (r) = 1 (0001) 7 (-3) 몫 = - 2 (1110) 나머지 = 1 (0001) (-7) 3 몫 = - 2 (1110) 나머지 = - 1 (1111) (-7) (-3) 몫 = 2 (0010) 나머지 = - 1 (1111) 13
3.6 부동소수점수의표현 부동소수점표현 (floating-point representation) : 소수점의위치를이동시킬수있는수표현방법 수표현범위확대 14 부동소수점수 (floating-point number) 의일반적인형태 N = (-1) S M B E 단, S : 부호 (sign), M : 가수 (mantissa), B : 기수 (base), E : 지수 (exponent) 10 진부동소수점수 (decimal floating-point number) [ 예 ] 274,000,000,000,000 2.74 ⅹ10 14 0.00000000000274 2.74 ⅹ10-12 2 진부동소수점수 (binary floating-point number) 기수 B = 2 단일-정밀도 (single-precision) 부동소수점수 : 32 비트복수-정밀도 (double-precision) 부동소수점수 : 64 비트 14
단일 - 정밀도부동소수점수형식의예 S : 1 비트, E : 8 비트, M : 23 비트 부동소수점표현의예 (0.1101 2 5 ) 부호 (S) 비트 = 0 지수 (E) = 00000101 가수 (M) = 1101 0000 0000 0000 0000 000 15 지수 (E) 필드의비트수증가 표현가능한수의범위확장 가수 (M) 필드의비트수증가 정밀도 (precision) 증가 표현가능한수크기의범위 1.47 x 10-39 ~ 1.7 x 10 38 (0.5 x 2-128 ~ 0.5 x 2 127 ) [ 비교 ] 32- 비트고정소수점표현방식의경우 : 1.0 x 2-31 ~ 1.0 x 2 31 2.0 x 10-9 ~ 2.0 x 10 9 소수점아래첫번째비트는항상 1 이므로, 반드시저장할필요는없음 가수 23 비트를이용하여소수점아래 24 자리수까지표현가능 같은수에대한부동소수점표현이여러가지가존재 0.1101 2 5 11.01 2 3 0.001101 2 7 정규화된표현 (Normalized representation) 수에대한표현을한가지로통일하기위한방법 ± 0.1bbb...b 2 E 위의예에서정규화된표현은 0.1101 2 5 15
부동소수점표현의예 (0.1101 2 5 ) 16 부호 (S) 비트 = 0 지수 (E) = 00000101 가수 (M) = 1101 0000 0000 0000 0000 000 소수점아래첫번째비트는항상 1 이므로, 반드시저장할필요는없음 가수 23 비트를이용하여소수점아래 24 자리수까지표현가능 16
바이어스된지수 (biased exponent) 지수를바이어스된수 (biased number) 로표현 [ 예 ]8- 비트바이어스된지수값들 (8-bit biased exponents) 17 사용목적 0에대한표현에서모든비트들이 0이되게하여, 0-검사 (zero-test) 가용이하게하기위함 0-검사가정수에서와같은방법으로가능해짐 17
부동소수점수의표현범위 부동소수점수의표현범위 0.5 2-128 에서 (1-2 -24 ) 2 127 사이의양수들 ( 대략 1.47 x 10-39 ~ 1.7 x 10 38 ) -(1-2 -24 ) 2 127 에서 -0.5 2-128 사이의음수들 18 제외되는범위 (1-2 -24 ) 2 127 보다작은음수 음수오버플로우 (negative overflow) 0.5 2-128 보다큰음수 음수언더플로우 (negative underflow) 0 0.5 2-128 보다작은양수 양수언더플로우 (positive underflow) (1-2 -24 ) 2 127 보다큰양수 양수오버플로우 (positive overflow) 18
IEEE 754 표준부동소수점수의형식 부동소수점수의표현방식의통일을 위하여미국전기전자공학회 (IEEE) 에서 정의한표준 19 표현방법 N = (-1) S 2 E-127 (1.M) 가수 : 부호화-크기표현사용지수필드 : 바이어스 127 사용 1.M 2 E 의형태를가지며, 소수점아래 의 M 부분만가수필드에저장 ( 소수점왼쪽의저장되지않는 1을 hidden bit 라고부름 ) 64- 비트복수 - 정밀도부동소수점형식을 사용하는경우 N = (-1) S 2 E-1023 (1.M) IEEE 754 표현예 (N = -13.625 ) 13.625 10 = 1101.101 2 = 1.101101 2 3 부호 (S) 비트 = 1 (-) 지수 E = 00000011 + 01111111 = 10000010 ( 바이어스 127 을더한다 ) 가수 M = 10110100000000000000000 ( 소수점좌측의 1 은비트표현에서제외 ) 19
예외경우를포함한 IEEE 754 표준 예외경우를포함한정의 (32- 비트형식 ) 만약 E = 255 이고 M 0 이면, N = NaN 만약 E = 255 이고 M = 0 이면, N = (-1) S 20 만약 0 < E < 255 이면, N = (-1) S 2 E-127 (1.M) 만약 E = 0 이고 M 0 이면, N = (-1) S 2-126 (0.M) 만약 E = 0 이고 M = 0 이면, N = (-1) S 0 예외경우를포함한정의 (64- 비트형식 ) 만약 E = 2047이고 M 0이면, N = NaN 만약 E = 2047이고 M = 0이면, N = (-1) S 만약 0 < E < 2047 이면, N = (-1) S 2 E-1023 (1.M) 만약 E = 0이고 M 0이면, N = (-1) S 2-1022 (0.M) 만약 E = 0이고 M = 0이면, N = (-1) S 0 20
3.7 부동소수점산술연산 21 3.7.1 덧셈과뺄셈 지수들이일치되도록조정 (alignment) 가수들간의연산 ( 더하기혹은빼기 ) 수행 결과를정규화 (normalization) [10 진부동소수점산술의예 ] 21
부동소수점산술의파이프라이닝 22 연산과정을독립적단계들로분리가능 단계수만큼의속도향상 대규모의부동소수점계산을처리하는거의모든슈퍼컴퓨터들에서채택 [ 예 ] 수배열 (number array) 들간의덧셈 C(I) = A(I) + B(I) 22
3.7.2 부동소수점곱셈 / 나눗셈 23 2 진수부동소수점곱셈과정 1 2 3 가수들을곱한다 지수들을더한다 결과값을정규화 2 진수부동소수점나눗셈과정 1 가수들을나눈다 2 피제수의지수에서제수의지수를뺀다 3 결과값을정규화 [ 부동소수점곱셈의예 ] (0.1011 2 3 ) (0.1001 2 5 ) < 가수곱하기 > 1011 1001 = 01100011 < 지수더하기 > 3 + 5 = 8 < 정규화 > 0.01100011 2 8 = 0.1100011 2 7 ( 결과값 ) 23
부동소수점연산과정에서발생가능한문제점 지수오버플로우 (exponent overflow) 양의지수값이최대지수값을초과 수가너무커서표현될수없는상태이므로, + 또는 - 로세트 24 지수언더플로우 (exponent underflow) 음의지수값이최대지수값을초과 수가너무작아서표현될수없는상태이므로, 0으로세트 가수언더플로우 (mantissa underflow) 가수의소수점위치조정과정에서비트들이가수의우측편으로넘치는상태 반올림 (rounding) 적용 가수오버플로우 (mantissa overflow) 같은부호를가진두가수들을덧셈하였을때올림수가발생 재조정 (realignment) 과정을통하여정규화 24