홈 > 베스트 > 베스트
베스트

컴퓨터 소숫점 연산오차가 불러온 참사

불량우유 9 9191 32 1



 


 


 


1991년 2월 25일 사우디의 다란에 주둔중인 미군 병영에 이라크가 발사한 스커드 미사일이 명중해 28명이 사망함

당시 미군 기지엔 패트리어트가 배치되어있었고 요격을 시도했지만 실패했음

 

그 원인을 조사한 결과 패트리어트 컴퓨터의 시간 계산에 생긴 오류때문이라고 밝혀짐

패트리어트 컴퓨터는 시스템이 부팅된 후 시간을 0.1초의 정수배 단위로 측정하고 이 정수값에 0.1을 곱해 실제 시간을 계산했음

근데 그 계산을 하는 컴퓨터는 24비트 레지스터로 연산을 수행했고 이 때문에 오차가 생김

 

왜냐면, 0.1초를 2진수로 표현하면 0.0001100110011001100110011001100...로 딱 떨어지지 않는데, 실제로 24비트 레지스터에는 최대 소수점 아래 24자리까지만 저장될 수 있기 때문

따라서 소수점 아래 25자리부터의 값은 무시되어 아주 작은 오차(이 경우엔 약 0.000000095초)가 발생하게 됨

 

그 자체로는 매우 작은 오차지만 시스템이 부팅되고 오랫동안 작동중이었다면 오차 역시 작동시간에 비례해서 커짐

만약 부팅된지 20시간 정도 지난다면 시간 오차가 지나치게 커져서 레이더가 실제 미사일에서 130m 떨어진 지점을 추적하게 되어 표적을 놓치게 됨

당시 미군 패트리어트는 부팅된지 100시간은 지난 상태였고, 시간 오차는 0.34초에 달해서 레이더 추적위치 오차는 700m에 달하는 수준이었음

 

이 사건 이후 미군은 이 오차를 보정하는 소프트웨어를 보유중인 패트리어트 포대 전부에 업데이트했음

 

출처 : 군사 갤러리


Best Comment

BEST 1 철가면  
100시간 -> 0.1초 환산 = 100 * 60 * 60 * 10 = 3,600,000

0.1초 gap : 0.000000095

둘다 곱해보면 0.342초 갭 발생

MIM-104 패트리어트 기준 (4마하) 초속 : 1361.2 m/s

= 거리 오차가 465.5304 m 정도 나오네요.  위 본문에 오차는 다른 변수가 있거나.. 오차 계산을 제가 잘못했을수도 있겠네요.
BEST 2 댓글유도빌런  
[@철가면] 아 완전 이해했어!
9 Comments
우원미리 2021.06.17 21:23  

럭키포인트 6,321 개이득

절막만지셨잖아요 2021.06.17 22:03  
그...그랬구나..

럭키포인트 22,649 개이득

ㅣㅣ 2021.06.17 23:00  
이거 보니까 짱깨 생각나네

로켓/미사일 발사대 만들었는데 지역주민들이 다른곳으로 이주 안간다고 뻐팅기니까 로켓 발사하고 마을에 떨궈서 마을사람들 다 죽여버린거

럭키포인트 26,266 개이득

고이즈미 2021.06.18 03:12  
[@ㅣㅣ] 좆짱깨들은 파도파도괴담만 있네

럭키포인트 19,610 개이득

맥짱 2021.06.18 11:17  
ㄷㄷㄷ

럭키포인트 26,003 개이득

철가면 2021.06.18 13:40  
100시간 -> 0.1초 환산 = 100 * 60 * 60 * 10 = 3,600,000

0.1초 gap : 0.000000095

둘다 곱해보면 0.342초 갭 발생

MIM-104 패트리어트 기준 (4마하) 초속 : 1361.2 m/s

= 거리 오차가 465.5304 m 정도 나오네요.  위 본문에 오차는 다른 변수가 있거나.. 오차 계산을 제가 잘못했을수도 있겠네요.

럭키포인트 2,763 개이득

댓글유도빌런 2021.06.18 23:38  
[@철가면] 아 완전 이해했어!

럭키포인트 28,546 개이득

하엠봉 2021.06.21 13:03  
[@철가면]
계산이 정확하네! 역시 개집엔 나같은 브레인이 많아

럭키포인트 21,142 개이득

elohssa 2021.06.21 16:34  
[@하엠봉] 수트 하나 만들어주세요

럭키포인트 19,850 개이득

제목