64비트
1. 컴퓨터의 처리 단위
64-bit. 0부터 18,446,744,073,709,551,615[1] 까지의 정수를 나타낼 수 있고, 8 비트가 1 바이트이기에 64비트 프로세서는 정보를 싱글 코어 기준으로 클럭 1회에 8 바이트씩 처리할 수 있다. 즉 듀얼 코어이면 16 바이트, 쿼드 코어이면 32 바이트인 식이다.
CPU의 레지스터를 64비트로 확장시킨 것이다. 16비트 프로세서에서는 확장된 레지스터가 없는 기본 범용 레지스터가 존재했다. (AX,BX 등) 이후 이것은 32비트로 확장되면서 EAX, EBX (Extended -)의 이름을 가지게 된다. 이것이 또 확장된 것이 RAX, RBX 등의 64비트 확장 레지스터다. 레지스터가 확장되어 레지스터의 크기 한계로 인해 여러 번 나눠서 연산할 것을 한 번에 하게 되어 성능 향상이 발생하고, 또 64비트 레지스터를 다루는 명령어를 사용할 수 있게 되므로 프로그램은 더 발전할 수 있게 되는 것이다.
메모리를 4 GiB 이상 쓸 수 없는 32비트의 주소할당 문제 때문에 많은 소프트웨어와 하드웨어들이 32비트에서 64비트로 넘어가고 있다.[2] 또, 32비트는 날짜 표시와 밀접한 문제 때문에 2038년 이후로는 쓰기가 어려워진다.
128비트, 256비트 등도 있는데, 암호학에서는 자주 언급되지만, 64비트가 본 궤도로 진입한 시기도 얼마 지나지 않아 이를 워드 길이로 사용하는 CPU는 아직 없다.
2. 하드웨어
- Tom 칩 (보조 연산 장치)
- 아타리 재규어 (1993년) - 실제로는 CPU와 GPU가 32비트이고 보조 연산 장치만 64비트인데, 억지 논리를 내세워 64비트라고 주장했다. 자세한 내용은 문서 참조.
2.1. CPU
- 인텔
- 인텔 아이태니엄 시리즈 (2001년 ~ 2012년)
- EM64T를 지원하는 펜티엄 4 프레스캇 이상 (2004년 이후)
- 인텔 코어2 시리즈 (2006년 이후)
- AMD64 (2003년)
- AMD 슬레지해머 기반 옵테론 및 애슬론 64 시리즈 (2003년 이후)
- ARM Cortex-A 시리즈 (AArch64를 지원하는 v8 이후의 프로세서 (Cortex-A32 제외))
- 썬/오라클 SPARC (버전 9)
- PowerPC
- IBM z/Architecture (메인프레임용)
- MIPS#s-5.2
- 옐브루스 프로세서
- RISC-V (RV64I 지원 필요)
해당 문서의 문단 참고.
2.2. GPU
- 리얼리티 코프로세서
- 닌텐도 64 (1996년)
- Seta Aleck 64 (1998년)
3. 소프트웨어
- 어도비 프리미어 프로, 어도비 애프터 이펙트: CS5 버전부터 64비트용이다.
- 언리얼 엔진: 언리얼 엔진 4의 개발 환경은 64비트용이다.
- 유니티 엔진: 유니티 5.6부터 64비트용이다.
- MAGIX 베가스(구 소니 베가스): 베가스 12부터 64비트용이다.
- Atom(에디터)
- Blender: 2.81부터 64비트 전용.
- 64비트 전용 에뮬레이터
- 이 밖에도 64비트용으로 만들어진 exe 파일이 있다. 32비트 윈도우로 exe 파일을 작동시키면 올바른 win32 응용 프로그램이 아니라는 말을 띄운다.
- 운영체제
3.1. Microsoft Windows
일반용은 Windows XP x64 Edition부터[3] , 서버용은 Windows Server 2003 x64부터 64비트를 지원한다. 일반용은 Windows XP부터 마지막 일반용 윈도우로 출시된 Windows 10까지 모두 32비트와 64비트가 함께 있지만, 서버용은 2008 R2부터 마지막 서버용 윈도우로 출시된 2019까지 64비트만 있다.
운영체제 수준으로 <WoW64>(Windows on Windows 64)라는 호환 레이어를 씌워 32비트를 지원하기에 일반적인 프로그램은 32비트여도 잘 돌아간다. 64비트 프로그램으로 32비트 프로그램을 돌릴 때의 가장 큰 이점은 32비트 프로그램에 들일 수 있는 메모리 한계치인 2,147,483,648 바이트를 넘겨서 사용할 수 있는 것이다. 다만, 16비트[4][5] 는 지원하지 않아 아쉬워하는 사람이 많다. 문제는 커널에 붙어야 하는 구조의 드라이버와 '''ActiveX'''로서, 커널이 64비트이면 32비트 드라이버와 ActiveX가 작동하지 않는다. 드라이버야 어지간해선 64비트+운영체제별 지원을 해 주는 데다가 하드웨어를 제대로 써먹기에는 쓰는 것이 좋지만,[6] ActiveX는 가뜩이나 웹표준+크로스 플랫폼의 의의에 위배되는데 64비트 환경이 늘어나는 상황에도 대응을 못하고 있어서 별별 삽질을 강요받는 수준이다.
3.2. macOS
"하위호환? 그거 먹는 건가요?" 하는 애플답게 2005년에 MAC OS X 타이거부터 작업하여 2007년에 거의 갈아탔고, 2009년부턴 64비트만 지원하여 모든 앱이 64비트로 구동되고 있다[7] . 그리고 2018년부터 앱스토어에 올리는 모든 앱에 64비트 강제 의무가 붙고, 32비트는 당연히 애플 말로 ‘도태’될 예정. macOS 10.15 Catalina 부터는 아예 64비트 프로그램만 실행 가능하게 변경되었다.
3.3. Linux
오픈소스의 첨병에 선 운영체제답게 64비트를 가장 먼저 지원 시작한 운영체제이기도 하다. x86-64 명령어셋을 지원하는 리눅스 커널의 배포판 리눅스들이 64비트를 지원하는데, 64비트용 프로그램이 없어도 소스 받아서 컴파일하면 장땡이고, 64비트 환경 설정을 제대로 맞추면 제대로 돌아간다.
또한 필요하다면 Windows의 WoW64 와 같이 i686이나 AArch32 라이브러리를 별도로 설치하면 64비트 환경에서 32비트 코드를 실행하는것이 가능하다.
4. 관련 문서
[1] 최대자릿수가 놀랍게도 경 단위이다!! 앞 숫자의 자릿수는 약 '1844경'이다.[2] RAM/주소할당 문제에도 있듯이, 메모리의 용량이 16 EiB(엑시바이트)를 초과하면 인식 못 한다. 즉, 근본적인 문제가 해결된 것이 아니므로 64비트 프로그램이 완전한 해결법은 아니다. 다만, EB가 워낙 큰 단위이고 지금 램은 기가바이트 단위에서 놀고 있기 때문에 향후 몇 년에서 몇 십 년 동안은 절대 걱정하지 않아도 된다. EB(엑사바이트)는 MB(메가바이트), GB(기가바이트), TB(테라바이트), PB(페타바이트)의 다음 단위이다.[3] 제대로 된 지원은 Windows Vista부터 지원한다.[4] MS-DOS와 Windows 3.1에서 돌아가는 소프트웨어나 고전게임 등이 대표적이다. 그래서 가상머신이나 DOSBox의 힘을 빌려야 한다.[5] 32비트 OS도 Windows XP 이상의 운영체제에서는 특유의 테마가 아닌 고전 테마로 나오고, Windows Vista 이후로는 특유의 아이콘도 없이 exe 파일의 기본 아이콘 상태로 나온다.[6] 만약에 지원을 못 하면 단종된 하드웨어이거나 회사가 도산한 경우이다. 그나마, 해당 드라이버를 개발했던 당시의 관계자들을 비용을 얼마나 들이건 간에 섭외 할 수가 있다면 64비트에서도 쓸 수가 있게 수정해달라고 요청하면 되겠지만 실제로 그것이 쉬운 일인지는 상상에 맡긴다.[7] 다만 실질적으로 애플리케이션이 64비트를 지원하기 시작한 건 2009년 10.6 스노우 레오파드부터이다. Apple의 앱들도 이 시기부터 64비트로 포팅이 되기 시작하였고.