386의 잔재 또는 유산, 32비트여 이제는 안녕.
그런데 64비트로 비트가 늘어나는 일의 참된 보람은 속도나 메모리 이외에 있다. 마치 리모델링이나 재건축처럼 구조적 변경을 통해 미래로의 도약을 꾀하는 일이라서다. 윈도우 95라는 대박이 터질 수 있었던 것도 32비트로의 이행 그 자체는 별것 없더라도 미래로의 도약을 의미할 수 있어서였다. 64비트로의 이행도 마찬가지다. 이런 계기가 있어야 그간 미뤄왔던 개비(改備)를 할 수 있다. 예컨대 64비트가 되면서 모던 암호화와 같은 새로운 기능이 추가되기도 한다. ARMv7에서 v8으로의 버전업도 그런 점프였다.
하지만 모든 비약이 쉽지만은 않다. 인텔조차도 32비트 x86(IA-32)에서 64비트로의 도약(IA-64)을 자체적으로 시도하다가 좌초, 대신 경쟁사 AMD의 x64를 사실상 표준으로 삼았다. 당시 실패 원인은 여럿이 있었지만, 하위호환성 무시라는 오판 또한 빠지지 않는다. 과거와의 단절이 거북하기에 누구나 주저했던 것. 그 덕에 지금은 하위호환성을 확보한 x64가 지배하게 되었지만, 이마저도 쉽지는 않다.
한동안은 64비트 윈도우를 깔면 각종 드라이브가 지원을 하지 않아서 윈도우는 무조건 32비트를 깔라고 추천하던 시절도 있었다. 64비트 IE에서 32비트 액티브X가 돌지 않아 일을 볼 수 없기도 했다.
16비트 지원은 더 힘들다. 근래 대세가 된 64비트 윈도우 10에서는 16비트 서브시스템이 아예 없으니 지원이 안 된다. 32비트 윈도우 10에서는 NTVDM이라는 기능을 활성화해서 16비트 프로그램을 근근이 돌릴 수는 있지만, 이렇게 과거의 유산을 끌고 다니는 일 자체가 이제는 점점 서러워진다.
16비트의 신세를 목격한 탓인지 모두들 슬슬 32비트도 손절을 생각하기 시작했다. 2019년에 32비트라니 쓸 만큼 쓰지 않았냐며 그들을 놓아주자고 한다. 가장 극단적인 것은 올가을 등장할 macOS로 최신 버전 카탈리나는 32비트 코드가 아예 돌지 않을 예정이다. 지난 8월부터 구글 플레이 스토어는 64비트 코드가 패키지 안에 동봉되어 있지 않으면 받아주지를 않고 있다. 64비트 시대를 총력 준비하라는 신호다.
리눅스 서버처럼 많은 것들이 오픈소스라면 공개된 소스코드를 64비트로 컴파일만 하면 비교적 쉽게 끝난다. 하지만 윈도우의 경우 명작 고전 게임들처럼 제조사가 망하고 .exe만 남아 있는 경우도 허다하다. 따라서 윈도우 만큼은 아무리 64비트가 무르익어도 macOS처럼 가뿐하게 32비트를 버릴 수는 없을 것이다. 윈도우 10은 고독하게 온 세상의 과거를 짊어지고 있다.
누구에게나 버리기 힘든 32비트 애플리케이션 하나쯤은 있을 수 있다. 버전업을 하면 되겠지만 커지고 무거워진 모습이 내 마음에는 영 맞지 않을 수도 있다. 아니면 그 32비트가 마지막 버전일 수도 있다.
그래도 세월은 거스를 수 없다. 32비트 기계가 사라지듯 32비트 노장 앱들도 그 시절의 16비트 프로그램이 모두 사라져 갔듯이 결국은 사라질 것이다. 32비트 프로그램에 맡겨둔 우리의 추억도 아집임을 깨닫게 되는 날도 올 것이다.
물론 서글플 수도 있다.
하지만 그렇게 적어도 컴퓨터의 세상에서 386 세대는 퇴장해 가고 있다. 그리고 그 자리에 미래가 찾아오고 있다.
64비트와 32비트 이야기
64비트라 하면 32비트보다 숫자가 갑자기 두 배로 늘어났으니 두 배 좋아진 느낌이다. 그런데 그게 꼭 그런 건 아니다.
비트란 2진수 0 또는 1이 하나의 비트.
32비트니 64비트니 하는 말이란 CPU 명령 하나에 담을 수 있는 정보의 크기를 말한다. 0 또는 1을 32개까지 담을 수 있는지 아니면 64개까지 담을 수 있는지의 차이다. 32비트는 정수로 치자면 (0 또는 1의 두 가지 경우의 수이므로) 2의 32승, 그러니까 (이를 구글 검색에 2^32로 넣어보면) 4294967296라는 수가 된다. 64비트는 이를 두 배씩 다시 32번 곱하게 되니 굳이 세고 싶지 않다. 이미 32비트만으로도 못할 일은 없어 보이고, 대부분은 그렇다. 그래서인지 32비트에게는 긴 전성기가 찾아왔다.
32비트 시대는 지금으로부터 24년 전 바로 이맘때. 윈도우 95의 등장과 함께 본격적으로 시작되었다. 그전까지만 해도 윈도우는 16비트였다. 32비트 인텔 386 프로세서가 등장한 것은 이미 그때로부터도 거의 10년 전의 일이었지만, 하드웨어의 발전을 소프트웨어는 좇아가기 바빴다.
윈도우 95는 본격적인 32비트 기반 멀티태스킹을 일반 대중에 안착시키며 386 이후의 시대(x86), 즉 32비트 시대를 완성했다. 당시 설치 필수사양은 386DX에 4MB(!) 메모리, 50MB(!)의 저장공간이었다. 마이크로소프트의 황금기였다. 32비트 시대라 하니 종래의 16비트에서 모든 것이 두 배가 된 기분이었고, 모두가 그 버블에 기꺼이 취했다. 그렇게 시작한 32비트 전성시대는 20년 이상 이어진다.
그러나 비트란 성능과는 별도다. 그저 더 큰 수를 다룰 수 있을 뿐이다. 2013년의 여러 32비트 안드로이드폰들이 당시 64비트 아이폰 5S보다 코어도 더 많았고 빨랐던 것과 마찬가지다. 그럼에도 누구라도 64와 32 중 고르라면 두 배나 커 보이는 64에 눈길이 간다.
32비트는 역사의 저편으로 빠르게 사라져 가고 있다. 가장 큰 이유는 32비트 너머의 수까지도 다루는 일이 늘어났기 때문이다. 위에서 다룬 2^32 = 4294967296라는 수치는 대략 40억. 달리 생각해 보면 별로 큰 수도 아니다. 10억이 1기가이니 겨우 4기가에 해당한다. 요즈음 메모리 4기가면 서민 사양이다. 32비트에서는 4기가 이상의 수를 다루기가 다소 번잡해서, 32비트 운영체제에서는 메모리 4GB 미만만이 인식되곤 했다.
반면 64비트의 이론적 메모리 한계는 16 엑사바이트다. 엑사바이트? 엑사는 페타 다음이니 100만 테라(1024x1024)다. 기가바이트로 환산하면 17억 기가바이트. 64비트가 대중화된 요즈음에도 128비트 프로세서의 이야기가 전혀 들리지 않을법하다.
그런데 실은 32비트 프로세서에서도 4GB 이상 쓸 수 있었다는 반전이 있다. 돈만 내면 안 되는 일이란 없다. 예컨대 32비트의 윈도우 서버에서도 PAE라는 기능을 활용, 제품에 따라 32~128GB의 메모리를 꽂아 쓸 수 있었다. (맥이나 리눅스도 마찬가지로 등급과 버전에 따라 지원한다)
마찬가지로 64비트 시대라지만 돈을 얼마나 내는지에 따라 지원 메모리는 달라진다. 윈도우 서버는 24TB, 윈도우 10은 512GB(홈 버전은 128GB)가 최대 허용 메모리다. 엑사바이트급 무진장과는 거리가 있다. 하지만 소프트웨어 탓만 할 수도 없는 것이 그 이상 꽂을 수 있는 보드를 찾는 것이 더 힘들다.
당분간 지구인에게 64비트는 충분해 보인다.