컴퓨터구조론 (IEEE)

숫자를 표현하는 방법 -> fixed point / floating point

fixed point -> 정수 부분 28자리 / 소수 이하 4자리

floating point -> 소수점이 떠다니는 floating (부동소수점이 왔다 갔다 하느냐가 아니라 지수의 크기가 왔다갔다)

  • 이진수의 normalized form -> 1.으로 시작
  • (1.xxxx * 2 yyy승)
  • 문제는 결코 1이 될 수 없음

-> sign and magnitude 표현방식 (지수보다는 유효자리가 더 맣이 필요하겠지.) ->유효자리 23비트, 지수 8비트 (지수 자체에는 +-포함)

0이면 + 1이면 - 왜? 대소 비교문제 때문이다. sorting 즉 대소 비교와 관련 되어 있다. 정수처럼 보고 뺴서 크기 비교를 함녀 시간이 단축 된다. 즉 정수에 적합한 인코딩 유지가 목푣.

이 떄, 비교할 경우 유효자리보다 지수가 더 중요하기에, 지수를 먼저 적어주고 유효자리를 그 다음에 적는다.

17.335를 -17.335로 바꾸려면 floating point 에서는 앞 부호만 바꿔준다.

MIPS 에서는 2.0 x 10의 -38승 ~ 2.0 x 10의 38승 -> overflow 지수가 너무 커서 지수 필드에 들어갈 수 없는 경우.

underflow도 발생 -> 음수 지수의 절댓값이 너무 커서 지수 부분에 표현될 수 없는 경우

지수가 - 일때는 ? 부동 소수점에서 지수는 2의 보수로 표현하는 것이 바람직 하지 않다.

+ -> 전부 부호 0 - -> 전부 부호 1

따라서 -가 항상 커보인다. 해결은 간단 -> 지수에서는 부호를 반대로 써주면 된다 (과거)

IEEE 754 -> overflow문제까지 고려. 이건 원래 값 4를 더하면 -> 딱 맞아 떨어진다. 3bit일 때는 2의 3-1승을 더하면 부호가 바뀐다. 즉 모든 지수 값에 일정한 값을 더하면 된다.

floating point addition

(i) -> 지수 부분을 통일한다 -> 윗자리가 짤리는 건 불가능 따라서 지수가 큰 녀석에게 맞춰준다.

image

1.exponent comparison (지수 빼고)

  1. Mantissa alignment(유효자리 조정 -> 지수가 작은 걸 큰 녀석에게 맞춘다)
  2. Mantissa addition (유효자리 더한다)
  3. Normalization & Rounding (반올림)

순서도에서 본다면 1번이 1과2를 같이 한 것이고, 2가 더하는 거고 아래는 다 노말리이징 하고 반올림하는 부분

floating point Multiplication

image

bias 2번 더해지니 1개 빼주는것 잊지 말기


참고자료

컴퓨터 구조 및 설계 지음 DAVID A.PATTERSON, JOHN L>HENNESSY

숭실대학교 컴퓨터구조론 강의

0%