작성자 |
|
||
---|---|---|---|
작성일 | 2013-04-07 17:15:12 KST | 조회 | 201 |
제목 |
부동 소숫점 오류와 인텔
|
인텔 사에서 펜티엄 I CPU를 만들때 이론적으로는 달성이 불가능하다고 여겨진 SRT 알고리즘 (디지털 기기들은 회로상 나눗셈을 못합니다... 이를 해결하기 위해 만든 방안 중 하나인데 간단하게 나눗셈 과정에서 미리 작성된 숫자들을 테이블에서 찾아봄) 의 몇몇 숫자들을 빼놓고 CPU를 만들었습니다.
그런데 인텔 펜티엄 컴퓨터를 연구용으로 사용하던 어떤 박사가 분자 단위의 물리 시뮬레이션에서 인텔 컴퓨터만 혼자서 다른 숫자를 표기한다는 것을 발견하였습니다. 이로서 이 버그가 발견되었는데, 실은 모든 부동 소숫점 계산 중 90억분에 1만이 이 오류를 나타내고, 그다지 심각한 오류가 아닙니다.
부동 소수점 연산은 대부분의 사용자들이 사용하지 않는 기능이고, 그때만 하더라도 은행기관이나 나사가 쓸까말까 하던 연산이었습니다. (지금은 게임이라는 흉악한 것들 때문에...) 최악의 경우 (260억분의 1 확률) 소숫점 5번 자리가 틀리게 연산이 됩니다. 그럼 은행에서 돈을 계산하는데 0.00001 센트가 잘못된다는 것이죠.
그런데 문제는 인텔의 대처 방안이었습니다. 위와 같은 이유로 괜찮다고 안일하게 대처해서 경쟁자 IBM에게 매우매우 까였고, 이는 곧 모든 CPU의 리콜로 마무리되었습니다. 인텔은 260억 달러의 손실을 보았다고 보고했죠 (그리고 IBM은 망하고 인텔이 세계를 지배하게 되....)
자신의 컴퓨터도 같은 오류가 있는지 확인해 보려면 간단합니다. 계산기 프로그램을 켜서 다음 계산을 해 보세요
4195835/3145727 -> 이게 바로 최악의 경우입니다
답은 1.3338204491362241002 인데
버그가 있을 경우
1.333739068902037589 로 나오게 됩니다
하하하하
© PlayXP Inc. All Rights Reserved.