64비트
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
64비트는 프로세서 레지스터, 주소 버스, 데이터 버스의 크기가 64비트인 컴퓨터 아키텍처를 의미한다. 1960년대 슈퍼컴퓨터에서 처음 사용되었으며, 1990년대 MIPS와 DEC가 64비트 마이크로프로세서를 개발하면서 워크스테이션과 서버에 도입되었다. 2003년 AMD의 x86-64 아키텍처 기반 프로세서 출시를 시작으로 개인용 컴퓨터 시장에 본격적으로 보급되었으며, 이후 모바일 및 임베디드 시스템, 게임 콘솔로 확대되었다. 64비트 아키텍처는 32비트 시스템에 비해 메모리 공간 확장, 대용량 파일 처리, 레지스터 수 증가 등의 장점을 제공하지만, 메모리 사용량 증가, 캐시 효율 저하 등의 단점도 존재한다. 주요 64비트 프로세서로는 x86-64(AMD64, Intel 64), ARMv8-A, Power ISA, SPARC V9, z/Architecture 등이 있다.
더 읽어볼만한 페이지
- 데이터 단위 - 바이트
바이트는 디지털 정보의 기본 단위로, 일반적으로 8비트로 구성되지만, 역사적으로는 다양한 비트 수를 가질 수 있었으며, 컴퓨터 메모리 용량이나 데이터 크기를 나타내는 데 널리 사용된다. - 데이터 단위 - 16비트
16비트는 16비트 정수를 사용하여 216개의 값을 저장할 수 있는 컴퓨터 아키텍처를 의미하며, 1950년대에 등장하여 미니컴퓨터와 마이크로프로세서에 널리 사용되었고, 64 KiB 메모리에 직접 접근 가능하며 뱅크 전환 등의 메모리 확장 방식을 사용했으며, MS-DOS, OS/2 1.x 등과 같은 운영 체제와 Windows Metafile, UTF-16 등의 파일 형식이 존재하며, 현재는 임베디드 시스템에서 활용된다. - 64비트 컴퓨터 - IA-64
IA-64는 인텔과 HP가 공동 개발한 64비트 ISA로, EPIC 아키텍처를 채택하여 병렬성을 극대화하려 했으나, x86 호환성 문제와 소프트웨어 생태계 부족으로 상용 시장에서 실패하고 단종되었다. - 64비트 컴퓨터 - 아이테니엄
아이테니엄은 인텔과 HP가 공동 개발한 IA-64 아키텍처 기반의 64비트 마이크로프로세서로, 엔터프라이즈 서버 및 고성능 컴퓨팅 시장을 목표로 했으나 x86-64 아키텍처의 부상과 여러 문제로 2021년 단종되었다.
64비트 | |
---|---|
64비트 컴퓨팅 | |
![]() | |
개요 | |
비트 폭 | 64비트 |
최대 표현 가능 정수 | 18,446,744,073,709,551,615 (16엑스비, 약 18.4E) |
역사 | |
개발 | 1960년대 (슈퍼컴퓨터) |
대중화 | 2000년대 초 |
주요 계기 | AMD의 x86-64 아키텍처 발표 인텔의 Itanium 아키텍처 개발 |
아키텍처 | |
주요 아키텍처 | x86-64 (AMD64, Intel 64) ARM64 (AArch64) SPARC Power MIPS |
특징 | 더 큰 주소 공간 지원 (이론상 최대 16 exbibytes) 더 많은 레지스터 활용 가능 더 효율적인 데이터 처리 |
운영 체제 | |
지원 운영 체제 | 윈도우 (Windows XP Professional x64 Edition 이상) macOS 리눅스 유닉스 BSD |
장점 | |
성능 향상 | 더 큰 메모리 공간 활용 가능 더 많은 데이터를 한 번에 처리 가능 병렬 처리 성능 향상 |
호환성 | 32비트 프로그램 실행 지원 (에뮬레이션 또는 하드웨어 지원) |
활용 분야 | |
주요 활용 분야 | 고성능 컴퓨팅 서버 워크스테이션 게임 과학 연구 데이터베이스 가상화 |
참고 사항 | |
주소 공간 제한 | 실제 사용 가능한 주소 공간은 운영 체제 및 하드웨어에 따라 제한될 수 있음 |
포인터 크기 | 64비트 운영 체제에서 포인터 크기는 64비트 (8바이트) |
자료형 크기 | C/C++에서 `long` 형의 크기는 운영 체제에 따라 32비트 또는 64비트가 될 수 있음 |
컴파일러 최적화 | 64비트 컴파일러는 32비트 컴파일러에 비해 더 나은 최적화를 제공할 수 있음 |
추가 정보 | |
관련 용어 | 32비트 16비트 컴퓨터 아키텍처 명령어 집합 아키텍처 (ISA) |
2. 역사
64비트 프로세서는 1961년 IBM 7030 스트레치 슈퍼컴퓨터를 시작으로, 1970년대와 1980년대의 슈퍼컴퓨터에 주로 사용되었다.[2] 1990년대 초, MIPS R4000, DEC 알파 등 RISC 기반 프로세서가 등장하면서 워크스테이션 및 서버 시장에 64비트 컴퓨팅이 도입되기 시작했다.
1990년대 중반, HAL 컴퓨터 시스템즈, 썬 마이크로시스템즈, IBM, 실리콘 그래픽스, 휴렛 팩커드 등 주요 컴퓨터 제조사들이 64비트 프로세서를 탑재한 워크스테이션 및 서버 시스템을 출시했다. 2000년, IBM은 64비트 메인프레임 zSeries z900을 출시하여 메인프레임 시장에도 64비트 컴퓨팅을 도입했다.[20]
다음은 64비트 컴퓨팅과 관련된 주요 사건들을 연도별로 정리한 표이다.
연도 | 사건 |
---|---|
1961년 | IBM이 IBM 7030 스트레치 슈퍼컴퓨터를 출시. 64비트 데이터 워드와 32/64비트 명령어 워드를 사용. |
1974년 | 컨트롤 데이터 코퍼레이션이 64비트 워드 아키텍처를 사용하는 CDC Star-100 벡터 슈퍼컴퓨터 출시. |
1976년 | 크레이 리서치가 64비트 워드 아키텍처 기반의 크레이-1 슈퍼컴퓨터 출시. |
1983년 | 엘시가 64비트 데이터 레지스터와 32비트 주소 공간을 가진 엘시 6400 병렬 미니 슈퍼컴퓨터 출시. |
1989년 | 인텔이 인텔 i860 RISC 프로세서 출시. 32비트 아키텍처에 64비트 정수 연산 가능 3D 그래픽 장치 추가.[7] |
1991년 | MIPS 컴퓨터 시스템즈가 최초의 64비트 마이크로프로세서인 R4000 출시.[9] |
1992년 | 디지털 이큅먼트 코퍼레이션이 순수 64비트 알파 아키텍처 소개.[10] |
1993년 | 아타리가 64비트 데이터 경로를 포함하는 아타리 재규어 비디오 게임 콘솔 출시.[8] |
1994년 | 인텔이 64비트 IA-64 아키텍처 계획 발표 (1998~1999년 출시 예정). |
1995년 | 썬 마이크로시스템즈가 64비트 SPARC 프로세서인 UltraSPARC 출시.[11] 후지쯔와 HAL 컴퓨터 시스템은 독자적으로 SPARC64 개발, 워크스테이션 출시. IBM은 64비트 AS/400 출시. |
1996년 | 닌텐도가 MIPS R4000 기반 닌텐도 64 비디오 게임 콘솔 출시.[5] HP는 PA-RISC의 64비트 버전 아키텍처(PA-RISC 2.0) 구현인 PA-8000 출시. |
1998년 | IBM이 풀 64비트 PowerPC/POWER 프로세서인 POWER3 출시.[14] |
1999년 | AMD가 x86-64 (AMD64) 공개. |
2000년 | IBM이 최초의 64비트 z/아키텍처 메인프레임 컴퓨터인 zSeries z900 출시.[20] |
2001년 | 인텔이 Itanium 프로세서 출시. |
2003년 | AMD가 AMD64 아키텍처 기반 Opteron 및 Athlon 64 프로세서 출시. |
2004년 | 인텔이 Intel 64 출시. |
2006년 | 소니, IBM, 도시바가 64비트 Cell 프로세서 생산 시작. |
2011년 | ARM 홀딩스가 ARM 아키텍처 제품군의 첫 64비트 버전인 ARMv8-A 발표.[16] |
2. 1. 개인용 컴퓨터 (PC)로의 도입
2003년 AMD가 x86-64 아키텍처 기반의 옵테론 및 애슬론 64 프로세서를 출시하고, 애플이 PowerPC 970 (G5) 프로세서를 탑재한 매킨토시 컴퓨터를 출시하면서, 32비트가 주류였던 개인용 컴퓨터 시장에서도 64비트 CPU가 사용되기 시작했다.2. 2. 한국의 64비트 컴퓨팅 도입
한국에서 64비트 컴퓨팅의 도입은 2000년대 초반부터 시작되었다. 초기에는 서버와 워크스테이션을 중심으로 64비트 시스템이 도입되기 시작했으며, 점차 개인용 컴퓨터 및 모바일 기기로 확대되었다.2003년, AMD가 64비트 아키텍처 기반의 Opteron과 Athlon 64 프로세서를 출시하면서, 국내에서도 64비트 컴퓨팅에 대한 관심이 높아졌다. 같은 해, 애플은 64비트 PowerPC 970 프로세서를 탑재한 제품을 출시하고, 부분적으로 64비트 기능을 지원하는 Mac OS X를 발표했다. 여러 리눅스 배포판에서도 AMD64를 지원하는 버전을 출시했다.[23]
2004년, 인텔은 AMD64와 호환되는 64비트 아키텍처(x64)를 개발 중임을 인정하고, 이를 구현한 노코나 (Nocona)Xeon과 Pentium 4 프로세서를 출시했다.
2005년, 마이크로소프트는 AMD64 및 Intel 64를 지원하는 Windows XP Professional x64 Edition을 출시하며 64비트 운영체제 시대를 열었다.[25]
삼성전자와 SK하이닉스 등 한국 기업들은 64비트 프로세서를 탑재한 스마트폰, 태블릿 등 모바일 기기를 전 세계에 공급하며 64비트 컴퓨팅 확산에 기여하고 있다.
현재는 대부분의 컴퓨팅 환경에서 64비트 아키텍처가 표준으로 자리 잡았다.
3. 아키텍처 특징
64비트 아키텍처는 프로세서 레지스터, 주소 버스, 데이터 버스의 크기가 64비트인 컴퓨터 구조를 말한다.
프로세서 레지스터는 ''정수'', ''부동 소수점'', 단일 명령, 다중 데이터(SIMD), ''제어'' 등으로 나뉘며, 주소 지정을 위한 특수 레지스터도 존재한다. 현대에는 이러한 기능이 범용 ''정수'' 레지스터에 통합되는 추세이다. 대부분 프로세서에서 정수 또는 주소 레지스터만이 메모리 주소 지정에 사용될 수 있다. 따라서 이러한 레지스터의 크기는 직접 주소 지정 가능한 메모리 양을 제한한다.[2]
대부분 고성능 32비트 및 64비트 프로세서는 통합 부동 소수점 하드웨어를 가지고 있으며, 이는 종종 64비트 데이터 단위를 기반으로 한다. 예를 들어, x86/x87 아키텍처는 64비트 부동 소수점 값을 메모리에 로드하고 저장할 수 있지만, 내부 부동 소수점 데이터 및 레지스터 형식은 80비트 너비이다. 반면 64비트 알파는 64비트 부동 소수점 데이터 및 레지스터 형식과 64비트 정수 레지스터를 사용한다.
많은 컴퓨터 명령어 집합은 단일 정수 레지스터가 컴퓨터의 물리적 또는 가상 메모리의 모든 위치에 대한 메모리 주소를 저장할 수 있도록 설계되었다. 1960년대 IBM System/360은 32비트 정수 레지스터를 가졌지만, 주소에 하위 24비트만 사용하여 16 MiB 주소 공간을 만들었다. 1970년대 DEC VAX와 같은 32비트 슈퍼미니컴퓨터가 널리 사용되었고, 1980년대 중반 모토로라 68000 패밀리 및 x86 계열의 32비트 멤버 (인텔 80386부터 시작)와 같은 32비트 마이크로프로세서가 등장하면서 32비트는 편리한 레지스터 크기로서 사실상 합의가 되었다.
32비트 주소 레지스터는 232개의 주소, 즉 4 GB의 RAM을 참조할 수 있었다. 당시에는 4 GB의 메모리가 일반적인 설치 용량을 훨씬 초과했기 때문에 충분한 ''헤드룸''으로 간주되었다. 42억 9천만 개의 주소는 데이터베이스와 같은 응용 프로그램에서 대부분 엔티티에 고유한 참조를 할당하기에 충분한 크기였다.
1970년대와 1980년대의 일부 슈퍼컴퓨터 아키텍처[2]는 최대 64비트 폭의 레지스터를 사용하고 64비트 정수 산술을 지원했지만, 64비트 주소 지정을 지원하지는 않았다. 1980년대 중반 인텔 i860[3] 개발이 시작되어 1989년에 출시되었는데, i860은 32비트 정수 레지스터와 32비트 주소 지정을 가지고 있었으므로, 그래픽 장치가 64비트 정수 산술을 지원했지만 완전한 64비트 프로세서는 아니었다.[4] 1990년대 초까지 메모리 비용이 지속적으로 감소함에 따라 RAM 용량이 4 GB에 접근하는 설치가 이루어졌으며, 특정 유형의 문제를 처리하기 위해 4 GB 상한을 초과하는 가상 메모리 공간을 사용하는 것이 바람직해졌다. 이에 대응하여 MIPS와 DEC는 64비트 마이크로프로세서 아키텍처를 개발했다. 1990년대 중반까지 HAL 컴퓨터 시스템즈, 선 마이크로시스템즈, IBM, 실리콘 그래픽스, 휴렛 팩커드는 워크스테이션 및 서버 시스템을 위한 64비트 아키텍처를 개발했다. 1990년대에는 여러 저가형 64비트 마이크로프로세서가 소비자 가전 제품 및 임베디드 응용 프로그램에 사용되었다. 특히 닌텐도 64[5]와 플레이스테이션 2는 개인용 컴퓨터에 도입되기 전에 64비트 마이크로프로세서를 탑재했다. 2003년부터 애플의 매킨토시 라인 일부 모델이 PowerPC 970 프로세서로 전환하고 AMD (AMD)가 첫 번째 64비트 x86-64 프로세서를 출시하면서 64비트 컴퓨팅은 개인용 컴퓨터 데스크톱으로 유입되기 시작했다. 2023년에는 랩톱 컴퓨터에 일반적으로 16GB, 서버에 최대 64 GB의 메모리가 장착되어 32비트의 4 GB 주소 용량을 크게 초과했다.
64비트 프로세서의 발전 과정은 다음과 같다.
- 1961년: IBM 7030 스트레치 슈퍼컴퓨터 출시 (64비트 데이터 워드, 32/64비트 명령어 워드).
- 1974년: 컨트롤 데이터 코퍼레이션 CDC Star-100 벡터 슈퍼컴퓨터 출시 (64비트 워드 아키텍처).
- 1976년: 크레이 리서치 크레이-1 슈퍼컴퓨터 출시 (64비트 워드 아키텍처).
- 1983년: 엘시 엘시 6400 병렬 미니 슈퍼컴퓨터 출시 (64비트 데이터 레지스터, 32비트 주소 공간).
- 1989년: 인텔 인텔 i860 축소 명령어 집합 컴퓨터(RISC) 프로세서 출시 (32비트 아키텍처, 64비트 정수 연산 지원 3D 그래픽 장치 추가).[7]
- 1991년: MIPS 컴퓨터 시스템즈 최초의 64비트 마이크로프로세서 R4000 생산 (MIPS 아키텍처 III).[9]
- 1992년: 디지털 이큅먼트 코퍼레이션 순수 64비트 알파 아키텍처 소개.[10]
- 1993년: 아타리 아타리 재규어 비디오 게임 콘솔 출시 (64비트 데이터 경로).[8]
- 1994년: 인텔 64비트 IA-64 아키텍처 계획 발표.
- 1995년: 썬 마이크로시스템즈 64비트 SPARC 프로세서 UltraSPARC 출시.[11]
- 1996년: 닌텐도 닌텐도 64 비디오 게임 콘솔 출시 (MIPS R4000 기반).
- 1998년: IBM 풀 64비트 PowerPC/POWER 프로세서 POWER3 출시.[14]
- 1999년: AMD x86-64 (AMD64) 공개.
- 2000년: IBM 최초의 64비트 z/아키텍처 메인프레임 컴퓨터 zSeries z900 출시.
- 2001년: 인텔 IA-64 프로세서 Itanium 출시.
- 2003년: AMD AMD64 아키텍처 기반 Opteron 및 Athlon 64 프로세서 출시. 애플 64비트 "G5" PowerPC 970 CPU 출시.
- 2004년: 인텔 IA-32e (EM64T, Intel 64) 출시.
- 2006년: 소니, IBM, 도시바 Cell 프로세서 생산 시작. 인텔 코어 2 듀오 출시.
- 2011년: ARM 홀딩스 ARM 아키텍처 제품군의 첫 64비트 버전 ARMv8-A 발표.[16]
- 2013년: 애플 스마트폰 최초의 64비트 프로세서 탑재 아이폰 5S 발표 (A7 ARMv8-A 기반).
- 2014년: 구글 64비트 테그라 K1 칩에서 실행되는 최초의 안드로이드 기기 넥서스 9 태블릿 발표.
원칙적으로 64비트 마이크로프로세서는 16 엑사바이트 (18,446,744,073,709,551,616 바이트)의 메모리를 어드레싱할 수 있다. 하지만, 모든 명령어 집합과 해당 명령어 집합을 구현하는 모든 프로세서가 전체 64비트 가상 또는 물리 주소 공간을 지원하는 것은 아니다.
x86-64 아키텍처는 가상 메모리에 48비트를 허용하며, 물리 메모리에 최대 52비트를 허용한다.[27][28] Power ISA v3.0은 가상 메모리에 유효 주소 64비트를 허용하며, 물리 메모리에 최대 60비트를 허용한다.[29] 오라클(Oracle)의 SPARC 아키텍처 2015는 가상 메모리에 64비트를 허용하며, 물리 메모리에 40~56비트를 허용한다.[30] ARM의 AArch64 가상 메모리 시스템 아키텍처는 가상 메모리에 48~56비트를 허용하며, 물리 메모리에 32~56비트를 허용한다.[31] DEC 알파(DEC Alpha) 사양은 최소 43비트의 가상 메모리 주소 공간(8 TB)을 지원해야 한다.
일반적으로 "64비트" 컴퓨터 아키텍처는 정수 레지스터가 64비트 폭이며, 64비트 정수 데이터를 지원하는 것을 의미한다.
64비트 CPU/OS 환경에서는 메모리 주소 공간이 대폭 확대되어, OS나 마더보드 등 시스템 사양이 허용하는 한 메모리 탑재량을 대폭 늘릴 수 있으며, 또한 응용 프로그램이 64비트를 지원함으로써 대규모 데이터 세트를 처리할 수 있게 되는 것이 주요 이점이다.
3. 1. 레지스터
64비트 프로세서는 일반적으로 64비트 크기의 정수 레지스터를 가지며, 메모리 주소 지정 및 데이터 처리에 사용된다.[2] 부동 소수점 연산을 위한 부동 소수점 레지스터도 64비트 또는 그 이상일 수 있다. 예를 들어, x86-64 아키텍처의 XMM 레지스터는 128비트이다.[52][53]64비트 아키텍처는 32비트보다 더 많은 수의 범용 레지스터를 지원하여 데이터 처리 성능 향상에 기여한다. x86-64는 16개의 범용 레지스터를 가지며, ARMv8은 128비트 부동 소수점 레지스터 32개를 제공한다.[51] Alpha는 32개의 64비트 정수 레지스터와 32개의 64비트 부동 소수점 레지스터를 갖는다.
3. 2. 메모리 주소 지정
64비트 마이크로프로세서는 이론적으로 16 엑사바이트(EiB)의 메모리를 주소 지정할 수 있다. 그러나 모든 명령어 집합과 해당 명령어 집합을 구현하는 모든 프로세서가 전체 64비트 가상 또는 물리 주소 공간을 지원하는 것은 아니다.[27][28]x86-64 아키텍처는 가상 메모리에 48비트를 허용하며, 모든 프로세서에 대해 물리 메모리에 최대 52비트를 허용한다. 이러한 제한으로 각각 256 테라바이트(TB)와 4 페타바이트(PB)의 메모리 크기를 허용한다. 48비트 가상 주소 공간은 32비트 제한인 4GB의 65,536 (216)배를 제공하도록 설계되어, 향후 확장을 위한 공간을 확보하고 전체 64비트 주소 변환에 따른 오버헤드를 발생시키지 않는다.
Power ISA v3.0은 가상 메모리에 유효 주소 64비트를 허용하며, 세분화된 주소에 매핑되어 65~78비트 사이를 허용하고, 모든 프로세서에 대해 물리 메모리에 최대 60비트를 허용한다.[29]
오라클(Oracle)의 SPARC 아키텍처 2015는 가상 메모리에 64비트를 허용하며, 모든 프로세서에 대해 물리 메모리에 40~56비트를 허용한다.[30]
ARM의 AArch64 가상 메모리 시스템 아키텍처는 가상 메모리에 48~56비트를 허용하며, 모든 프로세서에 대해 물리 메모리에 32~56비트를 허용한다.[31]
DEC 알파(DEC Alpha) 사양은 최소 43비트의 가상 메모리 주소 공간(8 TB)을 지원해야 하며, 지원되지 않는 나머지 비트가 0인지 확인해야 한다. 알파 21064(Alpha 21064)는 43비트의 가상 메모리 주소 공간(8 TB)과 34비트의 물리 메모리 주소 공간(16 GB)을 지원했다. 알파 21164(Alpha 21164)는 43비트의 가상 메모리 주소 공간(8 TB)과 40비트의 물리 메모리 주소 공간(1 TB)을 지원했다. 알파 21264(Alpha 21264)는 사용자 설정 가능한 43 또는 48비트의 가상 메모리 주소 공간(8 TB 또는 256 TB)과 44비트의 물리 메모리 주소 공간(16 TB)을 지원했다.
64비트 운영 체제에서는 32비트 운영 체제와 달리 각 프로세스가 사용할 수 있는 메모리 공간 제한이 거의 없다. 예를 들어, 64비트 버전 Windows에서는 32비트 응용 프로그램에서도 플래그를 설정하면 최대 4GB의 메모리 공간을 사용할 수 있다.[65]
3. 3. 32비트와의 차이
가장 큰 차이점은 가용 메모리의 크기 제한이다. 윈도우 10 기준으로 32비트 버전 윈도우에서는 최대 4GB의 메모리 사용이 가능하지만, 64비트 버전 윈도우에서는 최대 6TB 메모리 사용이 가능하다.[70]C/C++에서 실수를 방지하려면 기본 데이터형의 크기에 따라 판단해야 할 때는 컴파일 시 대상 아키텍처에 따라 결정되는 `sizeof` 연산자의 결과를 사용하여 항상 크기를 구해야 한다. 또한, C99의 `
많은 32비트 머신의 프로그래밍 환경인 '''ILP32''' 데이터 모델에서는 `int` 형, `long` 형, 포인터가 모두 32비트 폭이다.
그러나 64비트 머신의 프로그래밍 환경에서는 `int` 형은 32비트로 유지되지만, `long` 형과 포인터는 64비트 폭인 '''LP64''' 데이터 모델이나, `int` 형도 64비트 폭인 '''ILP64''' 데이터 모델을 채용하고 있다. 다른 데이터 모델로 '''LLP64'''가 있는데, 이는 `long long` 형과 포인터만 64비트 폭이며, `int` 형과 `long` 형은 32비트로 유지된다.
현재, 많은 64비트 컴파일러가 '''LP64''' 모델을 채용하고 있다 (Solaris, AIX, macOS, z/OS의 네이티브 컴파일러 등). 마이크로소프트의 Visual C++ 컴파일러는 '''LLP64''' 모델이다.
장치 드라이버가 어떤 데이터 모델을 채용하는가도 중요한 문제이다. 드라이버는 데이터 조작에 포인터를 빈번하게 사용하며, DMA를 위해 하드웨어에 특정 폭의 포인터를 로드해야 한다. 예를 들어, 32비트 PCI 장치의 드라이버는 4GiB를 초과하는 위치의 메모리와 DMA를 수행할 수 없다 (장치의 DMA 레지스터는 32비트 폭이기 때문).
데이터 모델 | short | int | long | long long | 포인터 | 처리 시스템 |
---|---|---|---|---|---|---|
C++ 표준 | 16 이상 | 16 이상 | 32 이상 | 64 이상 | ||
LLP64 | 16 | 32 | 32 | 64 | 64 | 마이크로소프트 Win64 (x64/IA-64) |
LP64 | 16 | 32 | 64 | 64 | 64 | 대부분의 유닉스와 유닉스 계열 OS (Solaris, Linux 등) |
ILP64 | 16 | 64 | 64 | 64 | 64 | HAL Computer Systems의 Solaris SPARC64 포팅 등 |
SILP64 | 64 | 64 | 64 | 64 | 64 | |
ILP32 | 16 | 32 | 32 | 64 | 32 | 일반적인 32비트 환경 |
LP32 | 16 | 16 | 32 | 64 | 32 | |
I16LP32 | 16 | 16 | 32 | 32 | 일반적인 16비트 환경 (far 포인터) | |
IP16L32 | 16 | 16 | 32 | 16 | 일반적인 16비트 환경 (near 포인터) |
4. 64비트 데이터 모델
64비트 시스템에서 C/C++ 등 프로그래밍 언어의 데이터 타입 크기를 정의하는 여러 모델이 존재한다.
데이터 모델 | short | int | long | long long | 포인터 |
---|---|---|---|---|---|
LP64 | 16 | 32 | 64 | 64 | 64 |
ILP64 | 16 | 64 | 64 | 64 | 64 |
SILP64 | 64 | 64 | 64 | 64 | 64 |
LLP64 | 16 | 32 | 32 | 64 | 64 |
- LP64: 대부분의 유닉스 및 유닉스 계열 시스템(리눅스, macOS 등)에서 사용한다. `long` 형과 포인터가 64비트이다.
- LLP64: 마이크로소프트 윈도우에서 사용한다. `long long` 형과 포인터만 64비트이고, `long` 형은 32비트이다.
C/C++에서 데이터형 크기에 따른 실수를 방지하려면, 컴파일 시 대상 아키텍처에 따라 결정되는 `sizeof` 연산자의 결과를 사용하여 항상 크기를 구해야 한다.
장치 드라이버가 어떤 데이터 모델을 채용하는가도 중요한 문제인데, 드라이버는 데이터 조작에 포인터를 빈번하게 사용하며, DMA를 위해 하드웨어에 특정 폭의 포인터를 로드해야 하기 때문이다.
데이터 모델 | short | int | long | long long | 포인터 | 처리 시스템 |
---|---|---|---|---|---|---|
C++ 표준 | 16 이상 | 16 이상 | 32 이상 | 64 이상 | ||
LLP64 | 16 | 32 | 32 | 64 | 64 | 마이크로소프트 Win64 (x64/IA-64) |
LP64 | 16 | 32 | 64 | 64 | 64 | 대부분의 유닉스와 유닉스 계열 OS (Solaris, Linux 등) |
ILP64 | 16 | 64 | 64 | 64 | 64 | HAL Computer Systems SPARC64용 Solaris 포트 등 |
SILP64 | 64 | 64 | 64 | 64 | 64 | |
ILP32 | 16 | 32 | 32 | 64 | 32 | 일반적인 32비트 환경 |
LP32 | 16 | 16 | 32 | 64 | 32 | |
I16LP32 | 16 | 16 | 32 | 32 | 일반적인 16비트 환경 (far 포인터) | |
IP16L32 | 16 | 16 | 32 | 16 | 일반적인 16비트 환경 (near 포인터) |
5. 장단점
64비트 시스템에서 C, C++, Objective-C 등 C 계열 프로그래밍 언어를 사용할 때, 32비트 환경과 데이터 유형의 크기가 달라져 문제가 발생할 수 있다.[40][41][42] 32비트에서는 `int`, `long`, 포인터 등이 모두 32비트이지만, 64비트 환경에서는 `long`과 포인터가 64비트가 되는 경우가 많다. (LP64 모델)[43][44]
64비트 데이터 모델은 다음과 같이 여러 종류가 있다.
데이터 모델 | short | int | long | long long | 포인터 | 예시 |
---|---|---|---|---|---|---|
ILP32 | 16 | 32 | 32 | 64 | 32 | Linux x32, arm64ilp32 ABI, MIPS N32 ABI |
LLP64 | 16 | 32 | 32 | 64 | 64 | Microsoft Windows (x86-64, IA-64, ARM64) |
LP64 | 16 | 32 | 64 | 64 | 64 | 대부분의 유닉스 및 유닉스 계열 시스템 (Solaris, Linux, BSD, macOS 등) |
ILP64 | 16 | 64 | 64 | 64 | 64 | HAL SPARC64의 Solaris |
SILP64 | 64 | 64 | 64 | 64 | 64 | 클래식 UNICOS |
대부분의 64비트 플랫폼은 LP64 모델을 사용하며, Microsoft Windows는 LLP64 모델을 사용한다. LP64 모델에서는 `long`을 `int`에 저장하면 데이터가 잘릴 수 있고, 포인터를 `long`으로 변환하는 것은 문제가 없다. 반면 LLP64 모델에서는 그 반대가 성립한다. C 코딩 시에는 `long` 대신 `intptr_t`를 사용하여 이러한 문제를 피해야 한다.
장치 드라이버 개발 시에도 데이터 모델을 고려해야 한다. 드라이버는 포인터를 사용하여 데이터를 조작하고, 직접 메모리 액세스(DMA)를 위해 특정 크기의 포인터를 하드웨어에 로드해야 할 수 있다. 예를 들어, 32비트 PCI 장치 드라이버는 4 기가바이트 이상의 메모리 주소를 처리하지 못할 수 있는데, 이는 입출력 메모리 관리 장치(IOMMU)를 사용하여 해결할 수 있다.
5. 1. 장점
64비트 프로세서는 32비트 프로세서에 비해 다음과 같은 장점들을 가진다.- 메모리 공간 확장: 32비트 시스템의 4GB 메모리 제한을 극복하여 훨씬 더 큰 용량의 메모리 사용이 가능해졌다.[56] 이는 특히 대규모 데이터를 다루는 작업에서 큰 이점을 제공한다. 예를 들어, 64비트 아키텍처는 이론적으로 약 1680만 TiB(16EiB)까지 메모리 주소 지정이 가능하다.[54]
- 대용량 파일 처리: 4GB 이상의 대용량 파일을 메모리에 매핑하여 효율적으로 처리할 수 있게 되었다.[65] 32비트 시스템에서는 큰 파일을 처리할 때 매핑 전환이 필요하여 효율이 떨어지는 반면, 64비트 시스템에서는 이러한 제약 없이 파일을 다룰 수 있다.
- 레지스터 수 증가: x86-64 아키텍처의 경우, 64비트 모드에서 추가된 레지스터를 활용하여 프로세서 성능을 향상시킬 수 있다.
- 소프트웨어 지원: 최근 대부분의 운영 체제 및 응용 프로그램이 64비트 환경에 최적화되어 제공되고 있다.[33] 64비트 시스템에서는 WOW64와 같은 에뮬레이션 레이어를 통해 32비트 응용 프로그램도 실행할 수 있다.
이러한 장점들 덕분에 64비트 시스템은 디지털 비디오, 과학 기술 계산, 대규모 데이터베이스 등 큰 데이터를 처리하는 응용 프로그램에서 유리하다.[58] 또한, 멀티태스킹, 고부하 작업, 고성능 컴퓨팅을 위한 클러스터링 등에도 64비트 아키텍처가 더 적합하다.
5. 2. 단점
64비트 아키텍처에서는 32비트에 비해 포인터 및 기타 데이터 유형의 크기가 커져, 같은 프로그램이라도 필요한 메모리 양이 늘어난다.[40][41][42] 특히 포인터 크기는 2배가 되며, 패딩으로 인해 메모리 낭비가 더 커질 수 있다. 이 때문에 캐시 효율이 떨어지고, 시스템 전체 성능에 영향을 줄 수 있다.데이터 크기가 커지면서 캐시 효율이 떨어질 수 있다. 프로세서가 캐시에 보관할 수 있는 데이터양이 상대적으로 줄어들기 때문이며, 이는 특히 대규모 데이터를 처리하는 프로그램에서 성능에 영향을 미칠 수 있다.
운영체제(OS)나 장치 드라이버와 같은 시스템 자체도 64비트 아키텍처에서는 메모리 소비가 늘어난다. 따라서 메모리 자원이 제한된 환경에서는 64비트 시스템 사용이 적합하지 않을 수 있다.
6. 64비트 응용 프로그램
대부분의 64비트 운영 체제는 32비트 응용 프로그램과의 호환성을 제공한다.[33] 예를 들어, 마이크로소프트 윈도우에서는 WOW64라는 에뮬레이션 기술을 통해 32비트 응용 프로그램을 실행할 수 있다.[38]
64비트 아키텍처의 더 큰 주소 공간은 디지털 비디오, 과학 컴퓨팅 및 대형 데이터베이스와 같은 응용 프로그램에서 대규모 데이터 세트를 사용하는 것을 더 쉽게 만든다. 하지만, 다른 작업의 경우 64비트 아키텍처 또는 32비트 호환 모드가 비슷한 가격대의 32비트 시스템보다 빠를지 여부에 대해서는 논쟁이 있어왔다.
64비트 응용 프로그램은 64비트 아키텍처의 이점을 활용하여 더 큰 메모리 공간을 사용하고, 더 많은 레지스터를 활용하여 성능을 향상시킬 수 있다. 32비트 및 64비트 프로세서를 비교할 때 속도만 고려해야 할 요소는 아니다. 고성능 컴퓨팅 (HPC)을 위한 멀티태스킹, 스트레스 테스트 및 클러스터링과 같은 응용 프로그램은 적절하게 배포될 때 64비트 아키텍처에 더 적합할 수 있다.[34] 이러한 이유로 IBM, HP 및 Microsoft와 같은 대규모 조직에서 64비트 클러스터를 널리 배포했다.
컴파일된 자바 프로그램은 수정 없이 32비트 또는 64비트 자바 가상 머신에서 실행할 수 있다.[34] 64비트 자바 가상 머신에서 실행되는 자바 프로그램은 더 큰 주소 공간에 접근할 수 있다.
하지만, 64비트 기반 시스템은 때때로 32비트 아키텍처용으로 작성된 소프트웨어가 부족할 수 있다. 마이크로소프트 윈도우에서 가장 심각한 문제는 구형 하드웨어에 대한 호환되지 않는 장치 드라이버이다.
7. 주요 64비트 프로세서
- ARM 홀딩스의 ARMv8-A 아키텍처를 채택한 프로세서 (Apple A7 이후, NVIDIA Tegra K1 이후 등)
- 밉스 테크놀로지스(MIPS)의 MIPS 아키텍처 (R4000 이후)
- IBM의 POWER (POWER3 이후 및 RS64), PowerPC (G5 이후)
- 썬 마이크로시스템즈(SUN)의 SPARC (SPARC64 이후)
- AMD(AMD)의 AMD64 (옵테론, 애슬론 64, 튜리온 64 등)
- 인텔의 Intel 64 (제온 노코나 이후. 자세한 내용은 ''x64#Intel 64를 채택하는 CPU'' 참조)
- 인텔의 IA-64 (아이테니엄 등. Intel 64와 별도 규격)
- 애플의 M1, M1 Pro/M1 Max/M1 Ultra, M2
8. 그림
참조
[1]
서적
Pentium Processor User's Manual Volume 1: Pentium Processor Data Book
https://bitsavers.or[...]
Intel
[2]
웹사이트
Cray-1 Computer System Hardware Reference Manual
https://bitsavers.tr[...]
Cray Research
2013-10-08
[3]
학술지
The Intel i860 64-Bit Processor: A General-Purpose CPU with 3D Graphics Capabilities
https://www.computer[...]
1989-07
[4]
웹사이트
i860 Processor Family Programmer's Reference Manual
https://bitsavers.or[...]
Intel
2019-09-12
[5]
보도자료
NEC Offers Two High Cost Performance 64-bit RISC Microprocessors
http://www.nec.co.jp[...]
NEC
2011-01-09
[6]
인용
MIPS R5000 Microprocessor Technical Backgrounder
http://www.sgidepot.[...]
MIPS Technologies, Inc
2024-08-19
[7]
웹사이트
i860 64-Bit Microprocessor
https://smithsonianc[...]
Intel
2010-11-30
[8]
웹사이트
Atari Jaguar History
https://www.atariage[...]
[9]
서적
MIPS R4000 Microprocessor User's Manual
MIPS Technologies, Inc.
[10]
학술지
Alpha AXP Architecture
Digital Equipment Corporation
[11]
학술지
UltraSparc Unleashes SPARC Performance
MicroDesign Resources
1994-10-03
[12]
학술지
PowerPC AS A10 64-bit RISC microprocessor
IBM Corporation
1996-07
[13]
학술지
PA-8000 Combines Complexity and Speed
MicroDesign Resources
1994-11-14
[14]
학술지
POWER3: The next generation of PowerPC processors
IBM Corporation
2000-11
[15]
보도자료
VIA Unveils Details of Next-Generation Isaiah Processor Core
https://www.via.com.[...]
VIA Technologies, Inc.
2007-07-18
[16]
웹사이트
ARMv8 Technology Preview
https://www.arm.com/[...]
2012-11-15
[17]
보도자료
ARM Launches Cortex-A50 Series, the World's Most Energy-Efficient 64-bit Processors
https://www.arm.com/[...]
ARM Holdings
2012-10-31
[18]
웹사이트
ARM Keynote: ARM Cortex-A53 and ARM Cortex-A57 64bit ARMv8 processors launched
http://armdevices.ne[...]
2012-10-31
[19]
웹사이트
Synopsys Introduces New 64-bit ARC Processor IP
https://news.synopsy[...]
[20]
웹사이트
Unicos Operating System
http://www.operating[...]
www.operating-system.org
2010-11-19
[21]
잡지
My Life and Free Software
https://www.linuxjou[...]
2000-06-01
[22]
컨퍼런스
Porting Linux to x86-64
https://www.kernel.o[...]
[23]
웹사이트
Mac OS X 10.6 Snow Leopard: the Ars Technica review
https://arstechnica.[...]
2009-09-06
[24]
웹사이트
Microsoft nixes Windows XP for Itanium
http://www.computerw[...]
Computerworld
2017-10-17
[25]
보도자료
Microsoft Raises the Speed Limit with the Availability of 64-Bit Editions of Windows Server 2003 and Windows XP Professional
https://news.microso[...]
Microsoft
2015-09-10
[26]
웹사이트
UEFI on Dell BizClient Platforms
https://uefi.org/sit[...]
[27]
웹사이트
AMD64 Programmer's Manual Volume 2: System Programming
https://www.amd.com/[...]
Advanced Micro Devices
2024-03
[28]
웹사이트
Intel 64 and IA-32 Architectures Software Developer's Manual Volume 3A: System Programming Guide, Part 1
https://www.intel.co[...]
Intel
2016-09
[29]
웹사이트
Power ISA Version 3.0
https://openpowerfou[...]
IBM
2015-11-30
[30]
웹사이트
Oracle SPARC Architecture 2015 Draft D1.0.9
https://community.or[...]
Oracle
2016-11-16
[31]
웹사이트
ARM Architecture Reference Manual for A-profile architecture
https://developer.ar[...]
2024-11-30
[32]
학술지
The Long Road to 64 Bits
2006-10
[33]
웹사이트
Windows 7: 64 bit vs 32 bit?
https://www.w7forums[...]
W7 Forums
2009-04-05
[34]
웹사이트
Frequently Asked Questions About the Java HotSpot VM
https://www.oracle.c[...]
Oracle
2024-12-13
[35]
웹사이트
A description of the differences between 32-bit versions of Windows Vista and 64-bit versions of Windows Vista
https://support.micr[...]
2011-10-14
[36]
웹사이트
Pushing the Limits of Windows: Physical Memory
https://web.archive.[...]
2017-03-09
[37]
웹사이트
Licensed Memory in 32-Bit Windows Vista
http://www.geoffchap[...]
WP:SPS
2017-03-09
[38]
웹사이트
Inside Native Applications
https://technet.micr[...]
Technet.microsoft.com
2010-11-19
[39]
웹사이트
Run an old program on a new PC
https://www.pcworld.[...]
2013-08-12
[40]
웹사이트
Exploring 64-bit development on POWER5: How portable is your code, really?
http://www.ibm.com/d[...]
2006
[41]
웹사이트
The Ten Commandments for C Programmers
http://www.lysator.l[...]
[42]
웹사이트
The Story of Thud and Blunder
http://www.datacente[...]
Datacenterworks.com
2010-11-19
[43]
웹사이트
ILP32 and LP64 data models and data type sizes
https://www.ibm.com/[...]
[44]
웹사이트
64-Bit Programming Models
http://archive.openg[...]
2020-06-05
[45]
웹사이트
Using the ILP64 Interface vs. LP64 Interface
https://www.intel.co[...]
2020-06-24
[46]
웹사이트
Abstract Data Models - Windows applications
https://docs.microso[...]
2018-05-30
[47]
웹사이트
ILP32 for AArch64 Whitepaper
http://infocenter.ar[...]
ARM Limited
2018-10-09
[48]
웹사이트
Apple devices in 2018
https://gist.github.[...]
woachk, security researcher
2018-10-06
[49]
웹사이트
Cray C/C++ Reference Manual
https://web.archive.[...]
2013-10-15
[50]
웹사이트
Cray C and C++ Reference Manual (8.7) S-2179
https://pubs.cray.co[...]
2020-06-24
[51]
뉴스
ARM TechCon 2011 - 英ARMが64bit対応の次期アーキテクチャ「ARMv8」発表、ARM 64bitの内容が明らかに | マイナビニュース
https://news.mynavi.[...]
[52]
웹사이트
x64 calling convention | Microsoft Learn
https://learn.micros[...]
[53]
웹사이트
/arch (x64) | Microsoft Learn /arch (x64) | Microsoft Learn
https://learn.micros[...]
[54]
뉴스
ASCII.jp:メモリー不足を根本的に解決する64bit OSの仕組み (4/4)
https://ascii.jp/ele[...]
[55]
웹사이트
Mac Pro (2019) のメモリの仕様
https://support.appl[...]
2023-01-10
[56]
웹사이트
Memory Limits for Windows and Windows Server Releases - Win32 apps | Microsoft Learn
https://learn.micros[...]
[57]
웹사이트
VIA Unveils Details of Next-Generation Isaiah Processor Core
http://www.via.com.t[...]
VIA Technologies, Inc.
2007-07-18
[58]
웹사이트
Frequently Asked Questions About the Java HotSpot VM
http://java.sun.com/[...]
Sun Microsystems, Inc
2007-05-03
[59]
웹사이트
List of Drivers for Intel® Graphics
https://www.intel.co[...]
[60]
뉴스
Microsoft、OEM向けWindows 10で32bit版の提供を終了 | マイナビニュース
https://news.mynavi.[...]
[61]
웹사이트
Windows 11 の仕様とシステム要件 | Microsoft
https://www.microsof[...]
[62]
웹사이트
NEC LAVIE公式サイト > サービス&サポート > Q&A > Q&A番号 023188
https://faq.nec-lavi[...]
[63]
웹사이트
Windows PE (WinPE) | Microsoft Learn
https://learn.micros[...]
[64]
웹사이트
4-Gigabyte Tuning: BCDEdit and Boot.ini - Win32 apps | Microsoft Learn
https://learn.micros[...]
[65]
뉴스
x64で本格化する64ビットWindowsの時代(1) | 日経クロステック(xTECH)
https://xtech.nikkei[...]
[66]
웹사이트
Compatibility between the 32-bit and 64-bit versions of Office | Microsoft Learn
https://learn.micros[...]
[67]
뉴스
発売目前のOffice 2010、MSお薦めは64ビット版より32ビット版 | 日経クロステック(xTECH)
https://xtech.nikkei[...]
[68]
웹사이트
20 issues of porting C++ code on the 64-bit platform.
http://www.viva64.co[...]
[69]
웹사이트
C89, size_t, and long
https://groups.googl[...]
[70]
웹인용
Windows 및 Windows Server 릴리스에 대한 메모리 제한
https://docs.microso[...]
마이크로소프트
2021-05-09
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com