전자식 컴퓨터에서 CPU가 정보를 한 번에 처리하는 단위의 크기는 4~8비트부터 시작해서 16, 32비트를 거친 뒤 64비트의 순으로 두 배씩 증가해 왔다.
컴덕후, 전산 전공자는 누구나 다 아는 기초 교양 컴퓨터 역사 이야기이다만.. 수 년 전에 썼던 글을 첨삭· 보완해서 다시 올린다.

1. 32비트

임베디드 같은 거 말고.. 키보드와 모니터가 달려서 사람이 직접 다룰 수 있는 범용 컴퓨터 급에서, 편법이나 제약 없이 완벽한 보호 모드, 선점형 멀티태스킹/멀티스레딩 따위가 구현 가능해진 것은.. 아무래도 32비트부터이다. CPU가 4GB 정도의 넉넉한 주소 공간은 직통으로 취급할 수 있어야 가상 메모리라는 걸 구현할 수 있고, 다른 멀티태스킹 기능들도 이를 토대로 구현 가능하기 때문이다.

가상 메모리라는 건 실제로 존재하는 메모리보다 더 많은 메모리를 쓰게 해 주며, 메모리에 로드되는 응용 프로그램의 유연성과 안전을 향상시켜 주는 매우 유용한 개념이다. 하지만 이건 결과적으로 메모리 접근 과정에 계층을 하나 더 추가하는 것이고 이에 따른 엄청난 실행 오버헤드가 필요하다. 또한, '메모리를 관리하기 위한 메모리'가 추가로 더 필요하다.

결국 이걸 지원하려면 컴퓨터의 메모리가 최소한 수 MB 이상 단위로 필요하며, 포인터의 크기도 16비트로는 어림도 없다. 당시에 OS/2, Windows NT 같은 운영체제가 DOS/Windows 3.x와는 비교할 수 없이 많은 메모리가 필요하여 일반 PC 사용자가 범접할 수 없었던 건 다 이유가 있었다. 단순히 GUI 셸이나 유니코드 지원 때문만이 아니다.

뭐, GUI고 뭐고 다 때려치우고.. 옛날 '알테어'처럼 천공 카드와 패널 스위치로, 오실로스코프 화면으로 소통하는 극한의 특수 컴퓨터라면.. 비좁은 16비트 공간에서도 운영체제의 고급 개념들을 구현 자체는 할 수 있을 것이다. 하지만 그건 실용적인 가치가 없으며, 마치 16비트 word 크기에서 부동소수점을 구현하는 것만큼이나 굉장한 무리수일 것이다.

80386 CPU 자체는 1980년대 중반에 등장했다. 얘는 머신 워드의 크기가 32비트로 확장됨과 동시에 가상 메모리 주소로부터 실제 물리 메모리를 매핑하는 기능, context switching을 순식간에 수행하는 기능도 하드웨어 차원에서 직통으로 지원하기 시작했다. 286에 비하면 엄청난 발전이다. 멀티스레딩이 하드웨어적으로 지원이 돼야 당장 에디터나 워드 프로세서에서 오타를 빨간 점선으로 표시해 주는 기능부터가 랙 없이 수월하게 구현할 수 있다.

물론 16비트 시절에도 사용자가 보기에 UI와 백그라운드 작업이 동시에 수행되는 프로그램이 없지는 않았다. 하지만 그런 기능은 마치 16비트 시절에 64KB가 넘는 데이터를 다루던 것처럼 굉장히 삽질스럽고 성능 오버헤드가 큰 편법으로 구현된 것이었다. (찔끔찔끔 idle time processing을 직접 구현)
더구나 Windows용 프로그램의 경우, 메뉴 하나만 꺼내도 그 작업은 계속되지 못하고 중단돼야 했다. idle time processing이 없는 message loop에 진입했기 때문이다.

이렇듯 80386은 PC의 새로운 가능성을 열었지만.. 그때는 CPU의 가격은 말할 것도 없고 메모리(RAM)의 가격도 너무 비쌌다. 그래서 가정용 PC는 1990년대를 한참 넘기고 RAM이 수십MB 이상 급으로 증가한 뒤에야 16비트의 잔재를 벗겨내고 Windows NT의 이상이 차츰 실현되었다.

그 전에 Windows 3.x는 핵심부가 명백한 16비트 기반이며, 사실 온전한 운영체제도 못 됐다. 명령의 실행 자체라기보다는 가상 8086처럼 멀티태스킹에 필요한 몇몇 기능만 80386 CPU의 기능을 활용하는 게 있었다. 가령, 도스창을 여러 개 띄우고 Windows용 프로그램과 따로 동시에 돌아가는 것 말이다.
그렇게 386 CPU의 기능을 부분적으로나마 활용하는 386 확장 모드라는 게 있으니 Win32s 같은 익스텐더 프로그램을 추가로 설치하는 것이라도 가능했을 것이다.

2. 16비트

16비트는 짧게는 포인터 자체의 한계인 64KB 메모리 제한, 그리고 x86 환경 한정으로는 640KB 기본 메모리 제약을 벗어나려고 가난하고 지저분한 프로그래밍 테크닉이 많이 동원돼야 했던 컴퓨터 환경이다.
그래도 뭔가 외형이 오늘날의 PC와 동급으로 갖춰졌다고 볼 수 있는 최소한의 마지노 선이 16비트이긴 했던 것 같다.

그 전에 8비트 컴은.. 개인적으로 그냥 롬 베이직 아니면 카트리지 게임밖에 써 본 기억이 없다. IBM 호환 PC 같은 단일 규격이 나온 것도 없어서 기계별로 파편화가 왕창 심했으며, 본격적인 프로그래밍은 C 정도의 고급 언어도 없이 그냥 어셈블리어밖에 선택의 여지가 없었다.
CPU 자체와 직접적인 관계가 있는 요소는 아니지만.. 16비트 컴퓨터에서 실현된 대표적인 특성은 바로.. 640*400급 이상의 소위 '고해상도' 그래픽임이 틀림없다. 게임기용 CPU까지 두루 생각하더라도 말이다.

8비트 컴퓨터의 화면에서 폭이 14/16픽셀급인 영문 글꼴 내지.. 영문과 동등한 자형으로 출력되는 한글을 본 적이 없다. 8비트 오락기의 상징이던 아타리/남코 폰트도 딱 CGA스러운 8*8 크기이다.

사용자 삽입 이미지

또한 Atari ST나 Apple II 같은 명품 8비트 컴도 IBM PC와 달리 컬러에다 GUI는 지원했을지언정, 해상도는 320*200이 채 안 되는 저해상도였지 않던가?

사용자 삽입 이미지
사용자 삽입 이미지

CPU의 속도와 그 시절 컴들의 메모리 용량, 디스플레이 기술, 가성비 등등을 감안했을 때 8비트로는 고해상도 그래픽이 실현되지 않았거나 못했던 것 같다. 이는 우리나라에서 옛날에 교육용 PC 보급 사업을 하던 시절에, 8비트는 민간에 많이 퍼져 있음에도 불구하고 진작에 배제하고 16비트로 앞을 내다보는 선택을 하는 데도 영향을 줬다. 고해상도 그래픽이 지원돼야 한글· 한자를 표현하는 데 애로사항이 없기 때문이다.

옛날에 초등학교 저학년에서 고학년으로 올라가면서 교과서의 글자 크기가 확 작아졌던 것처럼.. 8비트에서 16비트로 넘어가니 모니터에 찍히는 글자의 크기부터가 확 작아지고 화면이 큼직해졌다.

사용자 삽입 이미지

Commodore 64는 1982년에 출시된 8비트 컴퓨터의 상표명이다. 램 용량이 64KB -_-;;라고 64라는 숫자가 붙은 것이다. ㅡ,.ㅡ;;

16비트 IBM PC 호환 기종은 저런 8비트 기종들과 달리, 처음부터 고해상도로 시작했다. 비록 CGA는 저해상도였지만 그건 IBM PC가 처음부터 그래픽이나 사운드에 별 관심이 없던 업무용 컨셉이어서 그랬던 것이고, 텍스트 모드는 고해상도였다. 그리고 그래픽도 EGA/VGA가 나오면서 한계가 금세 완화되면서 8비트와 격차를 벌렸다.

3. 64비트

이렇게 8에서 16, 16에서 32에 비해, 32에서 64비트로의 이동은 큰 격변 없이 그냥 4GB가 넘는 메모리를 사용 가능하게 하는 선에서 자연스럽게 진행되었다. 현대적인 컴퓨터의 뼈대와 근간은 32비트 레벨에서 사실상 다 완성됐기 때문이다.

그래도 32비트에서 64비트로 넘어가던 2000년대 중반 비슷한 시기에 멀티코어가 시작됐고, 모니터는 와이드 화면으로 차츰 넘어갔다는 점을 주목할 만하다.
그 과도기에 32비트 전용 멀티코어와 64비트 싱글코어 CPU도 잠깐 나왔었지만 얼마 못 가 묻혔다. 컴덕이 아닌 대부분의 일반인들은 두 요소가 모두 갖춰진 인텔 Core2 Duo CPU부터 써 보셨을 것이다.

PC에서 x86-64라는 아키텍처가 보급되기 전에 인텔에서 Itanium이라는 CPU를 내놨다가 대차게 망한 흑역사가 있다. 그리고 수십 년 전 Cray 같은 슈퍼컴 전용 아키텍처가 있던 시절에는 PC보다 훨씬 전부터 32/64비트 CPU가 일반적이긴 했다.
그래 봤자 그때의 슈퍼컴이 지금의 PC보다 성능이 못하지만 말이다. 그리고 이제는 스마트폰마저도 64비트 CPU를 쓰고 있다.

옛날에 386과 486에 이어, 펜티엄 CPU가 등장했을 때는 이게 64비트라고 말이 많았다. 대우 전자에서는 펜티엄 CPU가 달린 64비트 컴퓨터만 있으면 회사에서 업무도 광속으로 끝내고 칼퇴근이 가능하다고 말도 안 되는 유치찬란 과장 광고를 내보냈던 적이 있다. 486은 각진 로봇 머리이고, 펜티엄은 부드러운 진짜 인간 머리라고! ㅋㅋㅋ

하지만, 펜티엄이 64비트로 확장한 건 주메모리와 CPU 사이의 데이터 버스의 대역폭이다. 명령 집합, 레지스터 같은 내부 구조와 실질적인 동작이 64비트 단위로 돌아가는 건 당연히 아니다. 반대로 옛날에 386 SX는 원가를 낮추기 위해 CPU만 32비트이고 데이터 버스는 16비트였다.

Windows NT의 구버전은 DEC Alpha 같은 64비트 CPU를 지원했던 적이 있다. 하지만 운영체제 자체는 여전히 32비트 기준으로만 동작했기 때문에 64비트 성능을 제대로 발휘하지 못했다. 마치 동시대의 Windows 3.x가 386/486에서도 16비트 코드 기준으로 동작했던 것과 비슷하게 말이다.

그렇기 때문에 그때 시스템 설계 차원에서 LLP64냐 ILP64냐를 고민한다거나 INT_PTR 같은 추상 자료형을 만드는 일은 없었다. 그런 개념이 등장한 건 최소한 Visual C++ 6.0 이후에 Windows 2000 타이밍쯤의 일이다. 그때 Windows가 IA64용으로 포인터 크기가 8바이트인 진정한 64비트로 포팅됐기 때문이다.

4. 여담: 클럭 속도와 오버클럭질

컴퓨터의 비트 수는 자동차의 성능으로 치면 그 자체가 마력· 토크를 나타낸다기보다는.. 그냥 배기량을 나타내는 것 같다. 2행정이냐 4행정이냐, 피스톤 왕복이냐 반켈이냐 이런 것까지 따지지는 않고 그냥 연소실의 부피이다.
오늘날이야 컴퓨터들이 코어 수가 워낙 늘어서 단편적인 클럭 속도만으로 성능의 모든 것을 나타내는 건 무리가 있다. 전력이나 발열 걱정이 없는 가정용 데스크톱 PC는 3~4GHz가 일반적이고, 노트북은 2GHz 안팎이 일반적인 듯하다.

본인이 올해 초에 지른 노트북 PC는 약간 크고 무겁더라도 나름 성능에도 약간 비중을 두고 고른 물건이었는데.. 사 놓고 보니 클럭 속도가 2GHz가 안 된다는 걸 뒤늦게 알게 되어 약간 실망(?)했다. 어쩐지 각종 광고 문구에도 CPU에 대한 언급은 눈에 잘 띄는 곳에 나와 있지 않고 제원표의 작은 글자를 꼼꼼히 살펴봐야 했다.

2010년대가 다 끝나 가고 Windows 10이 돌아가는 세상에 램은 8GB이고 CPU 속도가 2GHz도 안 되는 건 문제가 있지 않나 하는 생각이 들었다. 그래도 하드 대신 SSD가 달려 있으니 다른 쪽에서 병목이 줄어서 컴의 속도가 상대적으로 빠르게 느껴졌다.

2019년 현재, AMD의 FX-9370이 기본 클럭이 4.4GHz에 달해서 세계에서 가장 빠른 x64 CPU로 일컬어진다. 4GHz의 장벽은 메모리 4GB의 장벽하고는 아무 관계 없는 한계이며, 클럭 속도는 일단은 CPU의 비트수와도 당연히 무관한 잣대이다.
x86 진영 밖에서는 IBM zEC12라는 메인프레임용 CPU가 기본 클럭이 5.5GHz여서 세계에서 가장 빠른 마이크로프로세서라고 한다. 메인프레임은 Cray도 아니고 x86도 아니고.. 몇 비트짜리에 무슨 아키텍처와 어떤 특성을 가진 컴퓨터인지 난 잘 모르겠다..;;

자동차에도 차의 한계를 시험할 정도로 과속· 과적을 일삼는 사람이 있듯이, 컴퓨터 CPU에 대해서도 액체 질소 같은 특수한 냉각 시설까지 장만해서 오버클럭질을 즐기는 매니아 괴수 괴짜들이 있다. 세계 기록은 8GHz를 넘어 있다고 하나.. 이 상태로 컴퓨터를 지속적으로 사용하는 건 불가능하다. 그 기록을 세운 뒤에 컴퓨터의 상태도 장담할 수 없으니, 그냥 기록 수립에만 의의가 있다. 그야말로 싱글 코어만으로, latency와 throughput 중에서 오로지 latency에 속하는 성능의 극한을 시험하는 셈이다.

Posted by 사무엘

2019/08/01 08:35 2019/08/01 08:35
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1646

Trackback URL : http://moogi.new21.org/tc/trackback/1646

Leave a comment
« Previous : 1 : ... 43 : 44 : 45 : 46 : 47 : 48 : 49 : 50 : 51 : ... 1571 : Next »

블로그 이미지

철도를 명절 때에나 떠오르는 4대 교통수단 중 하나로만 아는 것은, 예수님을 사대성인· 성인군자 중 하나로만 아는 것과 같다.

- 사무엘

Archives

Authors

  1. 사무엘

Calendar

«   2019/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

Site Stats

Total hits:
1295529
Today:
383
Yesterday:
568