[이재구코너]'버그 인사이드’로 날린 5억달러

1947년 9월9일=그레이스 호퍼, 마크II를 멈추게 한 나방 발견

일반입력 :2010/09/11 00:04    수정: 2010/09/15 10:53

이재구 기자

컴퓨터 조상에게서 예견된 버그

“이 하나의 작은 오류가 6주도 안되는 동안 5억달러 이상의 손실을 가져온 주범이었다.”

앤디 그로브 인텔 전 회장은 1994년 펜티엄칩 버그문제로 들인 비용에 대해 후일 이같이 술회했다.

컴퓨터같은 정밀한 기계에서의 HW, 또는 SW적 오류를 의미하는 버그의 기원은 컴퓨터의 조상인 ‘해석엔진(Analytical Engine)'에서 이미 예견돼 왔다. 그리고 이후 컴퓨터는 실제로 수많은 문제를 만들어 왔다.

그것은 150여년 전 영국의 한 아리따운 수재 아가씨의 이야기에서 시작됐다.

“...해석엔진이 필요한 데이터를 제공할 수 있도록 해석과정은 똑같이 수행되어야 한다. 여기에 가능한 실수의 원인이 숨어있다. 실제 기계 메커니즘 상 실수가 없다 하더라도 카드는 잘못된 명령을 제시할 수 있다.”

1843년 영국. 26세의 한 아가씨가 당대의 석학 찰스 배비지가 설계한 세계최초의 기계식 컴퓨터 ‘해석엔진에 토를 달았다. 이태리 엔지니어가 만든 해설서를 영어로 번역하면서 설명을 추가한 것이다.

컴퓨터 하드웨어의 ‘버그(bug)’의 가능성을 언급한 최초의 사례였다. 그녀는 19세기를 대표하는 낭만주의 시인 바이런의 딸 에이다 러브레이스였다.

에이다는 오늘날 컴퓨터 설계의 비조로 숭앙받는 괴팍한 성격의 찰스 배비지도 인정하는 인텔리였고 인류 최초의 프로그래머로 인정받는 여성이었다.

발명왕 토머스 에디슨도 1878년 정밀한 기계에서 발생하는 결함에 대해 버그라는 단어를 사용해 정의를 내린 선구자 중 한 사람이었다.

“내 모든 발명품에 있어서는 쭉 그래왔다. 최초의 단계는 직관이며 다음에는 순식간에 몰려온다. 그리고 발명품이 멈춰버려 곤란해진다. 이어 작은 결함과 어려움으로 불리는 ‘버그(Bugs)'가 생긴다.

하지만 오늘날 우리가 일컫는 버그는 제2차세계대전 때로 거슬러 올라간다.

■최초의 컴퓨터 버그를 발견하다

“아, 여기에 벌레(bug)가 있었네!”

1947년 9월 9일. 하버드대에서 근무하던 한 여성이 컴퓨터가 멈춘 원인을 찾던 도중 컴퓨터 패널의 릴레이 사이에서 나방을 발견했다. 그녀는 미 군함계산식프로젝트를 맡아 하버드에서 마크II컴퓨터를 담당하던 그레이스 호퍼중위였다.

그녀가 다루는 컴퓨터는 당시로서는 최신식 디지털 컴퓨터인 마크II였다. 이 컴퓨터는 상관 하워드 에이킨 예비역 해군 중령이 만든 것이었다. 하버드 물리학과 출신의 까탈스런 성격의 소유자인 에이킨은 IBM과 함께 마크컴퓨터시리즈를 개발한 인물이었다. 호퍼중위는 릴레이 사이에서 벌레가 발견된 전후 정황을 컴퓨터 로그기록 노트에 적었다.

“08:00 활동시작. 10:00 활동 멈춤, 릴레이를 교환하다. 11:00 코사인테이프 시작 15:25 멀티덧셈기테스트하다. 15:45 70번 패널(나방) 릴레이. 최초의 실제 벌레(버그)를 발견했다...”

그녀는 이어 그 증거물인 나방을 스카치테이프로 노트에 붙여 놓았다.

당시 컴퓨터는 기계식과 자전거체인 같은 릴레이식이 주류여서 달각달각 소리를 내면서 동작했다. 가동부분이 몇천군데나 되었기 때문이었다. 그리고 나방, 쥐 등이 이 기계를 고장내기 일쑤였다.

호퍼중위의 발견의 순간은 이미 사용되던 정밀한 기계에 사용되던 ‘버그(Bug)'가 보다 실질적이고 구체적인 의미로 다가온 순간이었다.

그리고 이후 호퍼의 보고서에 등장한 ‘버그’는 세계 2차대전 중 레이더 오작동 설명에 사용되는 등 컴퓨터와 첨단정밀기기에 가장 널리 등장하는 단어가 된다. 그중 가장 유명한 것으로 인텔의 펜티엄칩 버그와 밀레니엄버그를 빼놓을 수 없다.

■ 오류확률 ‘100억분의 1’의 희귀 상황

“펜티엄칩은 어떤 특정 숫자의 나눗셈에서는 오류값을 보입니다. 예를 들면 1을 824,633,702,441로 나눈 후 다시 똑같은 수로 곱하면 ‘1’이 되지 않고 0.999999996247이 나옵니다.”1994년 10월 16일. 미 버지니아 린치버그대학의 토머스 나이슬리 수학과 교수는 인텔의 새 펜티엄칩컴퓨터로 연산하던 중 오류를 발견, 인텔에 알렸다. 그의 글은 다음처럼 이어졌다.

“이 버그는 지금까지 내가 시험해 본 모든 펜티엄칩 컴퓨터에서 발견됐습니다. 여기에는 델의 P90,게이트웨이의 P90,마이크론의 P60, 인사이트의 P60, 패커드 벨사의 P60 등이 포함됩니다. 이는 이전에 나온 어떤 486칩에서도 나타나지 않은 것이었습니다..... ”

인텔 486칩을 업그레드한 신형 인텔 586칩, 펜티엄칩의 버그는 이렇게 처음 보고됐다.

나이슬리교수가 인텔에 펜티엄칩의 버그를 알린 지 2주째인 10월 30일. 인터넷PC통신망인 컴퓨서브의 캐노퍼스(Canopus)포럼에 글이 올라와 공유되면서 사람들에게 펜티엄 칩의 오류가 알려지기 시작했다.

“이건 90억번 내지 100억번에 한번 일어날 만한 매우 희귀한 상황입니다.”

펜티엄 칩을 설계한 스티브 스미스의 말은 사실이었다. 앤디 그로브 인텔 CEO가 후일 그의 저서 ‘편집광만이 살아남는다’에서 밝힌 대로 “수학자를 빼고는 누가 그렇게 세밀하고 정밀한 계산을 하겠는가” 하는 게 인텔의 생각이었다.

인텔은 펜티엄 칩 버그 문제로 문의해 오는 고객들에게 자동 응답 팩스를 설치했다. 회신 팩스에는 “펜티엄칩의 버그는 ‘미묘한 오류(Subtle flaw)'이며 스프레드시트 사용자들의 경우 2만7천년에 한번 오류를 겪게 될 것”이라는 내용이 담겼다.

■‘버그 인사이드’로 날린 4억7천500만달러

고객들에게 보낸 인텔의 답신은 결국 ‘고객들이 펜티엄컴퓨터 칩에 의한 버그를 경험하기 이전에 컴퓨터를 폐기하게 될 것’이라는 얘기였다.

하지만 상황은 인텔이 생각한 것처럼 그렇게 녹록치만은 않았다. 고객들은 바보가 아니었다.

이들의 결론은 “이대로라면 매일 전세계에서 스프레드시트를 사용하는 고객 가운데 3명이 잘못된 결과를 얻을 수 있으며 과학작업을 수행하는 사람들은 더 많은 에러를 경험하게 되리라는 것”이었다. 여기에는 ‘반복되는 연산기능 수행시 눈덩이처럼 불어나는 계산결과의 오류 가능성도 포함돼 있었다.

이후 인터넷 상에서 벌어진 수많은 의견과 논의가 언론의 주목을 끌었다. 추수감사절 주간인 11월22일 아침까지도 문제가 없는 듯 보였다. 하지만 CNN이 이 문제를 취재해 보도하면서 여론은 벌집을 쑤신 듯 했다.

12월12일. 앤디 그로브가 출근했을 때 전화메시지를 놓아두는 자리에 있는 작은 전보는 지옥같은 상황의 시작이었다. 거기엔 ‘IBM, 모든 펜티엄 장착 컴퓨터의 판매 중단’이라고 인쇄된 서류가 접혀진 채 놓여 있었다.

12월19일 인텔 본사 528호 회의실. 12인용 탁자에 모인 임원진들의 결론이 내려졌다.

“펜티엄칩의 사용목적이 통계분석이든 오락이든 또는 그 무엇이든 간에, 원하는 사람에게는 누구나 새로운 칩을 대체해 주기로 합니다.”

이틀 후인 21일. 앤디 그로브는 결국 참담한 발표를 하기에 이른다.

“지난 몇 주 동안 심각한 문제가 있었습니다. 우리가 매우 작은 기술적 문제로 본 것이 치명적이었습니다. 인텔의 PC제조업체들을 지원하기 위해 우리는 무조건적인 칩 교환정책을 밝히는 바입니다.” 컴퓨터 역사상 최초의 고객을 상대로 한 리콜이었고 원인은 ‘버그'였다.

인텔은 버그의 위험성을 깨닫는데만 4억7천500만 달러를 날린 셈이었다. 반년치 R&D예산이자, 5년 치 광고비였다. 그러나 5년 후 전세계는 천문학적인 비용을 들이게 되는 세기의 버그를 맞이하게 된다.

■Y2K버그에 헛돈 5천만달러를?

1960년대 초 프로그래밍 컴퓨터의 등장에 따라 프로그래머들은 연도표시문제를 고민해 왔었다. 그들에게 컴퓨터 메모리용량은 턱없이 작았다. 그래서 이들은 컴퓨터 메모리용량을 절약하고 싶어했다.

그 결과 당시 프로그래머들은 그레이스 호퍼와 밥 베머가 만든 코볼(COBOL)언어로 연도를 표시하되, 8자리가 아닌 6자리만 쓰도록 설계했다. 즉, 2자리는 일, 2자리는 월, 그리고 나머지 2자리는 ‘19’를 뺀 연도의 뒷자리만 쓰도록 한 것이었다.

“컴퓨터는 ‘00’으로 표기된 년도표시 프로그램을 1900년으로 이해할까, 아니면 2000년으로 이해할까?”

1971년. IBM소속의 컴퓨터프로그래머이자 엔지니어인 밥 베머는 이미 이 문제의 심각성을 내다보았다.

그것은 그가 부지불식간에 1964년 4월에 등장한 최초의 기종간 프로그램호환형 컴퓨터인 IBM360을 설계하면서 Y2K버그를 넣었기 때문인지도 몰랐다.

그는 1970년 닉슨대통령에게 이 문제의 심각성을 주장했고 이를 더 널리 알리기 위해 잡지에 기고를 했다. 1년후 그는 당시 미니컴퓨터를 만들던 하니웰의 하니웰컴퓨터저널에 이 문제를 기고했고, 1979년엔 일반인 대상의 인터페이스에이지라는 잡지에도 문제를 거론했다.

결과는 조롱으로 돌아왔다. IBM의 상사나 동료들 모두가 그랬다.

하지만 2000년을 1년 앞두고 전세계는 시끄러워졌다. 사람들은 Y2K버그를 두려워하고 있었다. 40년간 얘기되어오고 경고되어 오던 것이 그제서야 먹힌 듯 싶었다.

“5천억달러를 들인 전세계적인 밀레니엄 버그 대응비용이 돈낭비에 불과했었나?”

2000년 1월 1일 O시 Y2K버그 운명의 시간에 거의 전세계 컴퓨터시스템에 아무런 피해를 입히지 않은 것이 확인되면서 BBC는 그렇게 반문했다.

관련기사

Y2K소동의 원인이 된 연도표기를 2자리만 써도 인식하게 만들어준 당사자인 밥 베머는 소동을 1년 앞두고 이렇게 말했다.

“그레이스 호퍼와 내가 코볼언어를 너무 쉽게 만든 게 잘못이야.”

*본 칼럼 내용은 본지 편집방향과 다를 수 있습니다.