본문 바로가기
CS/컴퓨터 구조

[Chapter 3.6 컴퓨터 구조 및 설계] 부동 소수점 덧셈

by 베어 그릴스 2022. 7. 15.
320x100
본 정리는 CS422-컴퓨터 구조 및 설계 : 하드웨어/소프트웨어 인터페이스. David A. Patterson, 존 헤네시 책을 바탕으로 하고 있음을 미리 알립니다.

 

부동 소수점 덧셈


부동 소수점끼리 간의 덧셈을 한번 알아보자.

 

  1. F1과 F2의 hidden bit을 복구 시킨다. ex) F1이 011000....000이었다면 앞에 1이 숨겨져 1.011일 것이다.
  2. 이제 자릿 수를 맞춰준다.
    1. 자릿 수를 맞추는 방법 : E1과 E2 중에 큰 것을 고른다.(E1이라고 가정하자.) E1 - E2  만큼 F2를 right shift(나누기 2) 해준다. 표현할 수 없는 bit로 넘어가면 G R S bit를 사용해 Round nearest even(chapter 3.5 참고) 해준다.
    2. 여기서 F2를 즉, E가 더 작은 쪽을 right shift 하는 이유는 작은 쪽의 소수 부분 즉 F를 right shift해야 작은 쪽의 E가 커져서 자릿 수 맞춤이 되기 때문이다. (한번 아무 수나 예를 들어서 해보면 이해가 될 것이다.)
  3. F2와 F1을 더해 F3으로 만든다.
  4. F3을 정규화 한다.(1.xxx * 2^yyy )
  5. 정규화된 F3에 대해서 표현할 수 없는 bit로 넘어가면 G R S bit를 사용해 Round nearest even(chapter 3.5 참고) 해준다.
  6. F3와 E3를 사용해 다시 부동소수점 표현으로 바꾸어준다.

부동 소수점 덧셈 하드웨어

ex)

(0.5 = 1.0000 x 2^-1 ) + (-0.4375 = -1.1100 x 2^ -2 ) 를 구해보자.

 

1. hidden bit은 이미 복구되어있으니 냅둔다.

2. -2가 더 작으니 -1.1100을 right shift 1 해준다. 즉, -0.1110 0(G)0(R)0(S) x 2^-1 G가 0이므로 내림해준다. 즉, -0.1110 x 2^-1이 된다.

3. 1.0000 과 -0.1110을 더해준다. → 0.0001 

4. 0.0001 x 2^-1 이므로 1.000 x 2^ -5 이 된다.

5. GRS는 모두 0이므로 정규화 완료!

 

 

부동 소숫점 덧셈은 정수 덧셈보다 더 복잡해서 더 많은 clock cylcle이 걸린다는 점을 알고 있도록 하자.

728x90