64비트 컴퓨팅

64-bit computing

컴퓨터 아키텍처에서 64비트 정수, 메모리 주소 또는 기타 데이터 단위는 64비트(8 옥텟) 폭이다.또한 64비트 중앙처리장치(CPU)와 산술논리장치(ALU) 아키텍처는 그 크기의 프로세서 레지스터, 어드레스 버스 또는 데이터 버스를 기반으로 하는 아키텍처들이다. 64비트 마이크로컴퓨터는 64비트 마이크로프로세서가 표준인 컴퓨터들이다.소프트웨어 관점에서 64비트 컴퓨팅은 64비트 가상 메모리 주소에 시스템 코드를 사용하는 것을 의미한다.그러나 모든 64비트 명령 집합이 전체 64비트 가상 메모리 주소를 지원하는 것은 아니다. 예를 들어 x86-64ARMv8은 가상 주소의 48비트만 지원하며 나머지 16비트는 모두 0 또는 모두 1이어야 하며 64비트 명령 집합은 64비트 미만의 물리적 메모리 주소를 지원한다.

64비트라는 용어는 64비트 프로세서가 표준인 컴퓨터의 세대를 묘사한다. 64비트는 컴퓨터 아키텍처, 버스, 메모리, CPU의 특정 클래스를 정의하는 단어 크기, 그리고 그 위에서 실행되는 소프트웨어. 64비트 CPU는 1970년대(Cray-1, 1975년)부터 슈퍼컴퓨터에 사용되어 왔다.1990년대 초반부터 ET 컴퓨터(RISC) 기반 워크스테이션서버, 특히 MIPS R4000, R8000R10000, DEC(Digital Equipment Corporation) Alpha, Sun Microsystems UltraSPARC, IBM RS64POWER3 이상 IBM Power 마이크로프로세서.2003년, 64비트 CPUx86-64 가공 업체와 파워 PCG5의 형태로(이전에 32비트)주류 개인용 컴퓨터 시장에 가서 2012[1]의 ARM아키텍처는 스마트 폰과 태블릿 컴퓨터, 먼저 9월 20일 2013년에, 아이 폰 5S는 대치에 ARMv8-A 애플 A7로 구동에서 판매 목표에 소개됐다 소개되었다.p(SoC).

64비트 레지스터는 2개64(18조 또는 1.8×1019)의 다른 값을 가질 수 있다.64비트로 저장할 수 있는 정수 값의 범위는 사용하는 정수 표현에 따라 달라진다.With the two most common representations, the range is 0 through 18,446,744,073,709,551,615 (264 − 1) for representation as an (unsigned) binary number, and −9,223,372,036,854,775,808 (−263) through 9,223,372,036,854,775,807 (263 − 1) for representation as two's complement.따라서 64비트 메모리 주소를 가진 프로세서는 바이트 주소 가능 메모리의 2바이트64(16 eiB)에 직접 액세스할 수 있다.

64비트 컴퓨터 아키텍처는 추가 자격요건 없이 일반적으로 64비트 폭의 정수 및 어드레싱 프로세서 레지스터를 가지고 있어 64비트 데이터 유형과 주소를 직접 지원할 수 있다.그러나 CPU는 레지스터와 크기가 다른 외부 데이터 버스 또는 주소 버스를 더 크게 가질 수 있다(32비트 펜티엄은 예를 들어 64비트 데이터 버스를 가지고 있다).[2]

이 용어는 64비트 부동 소수점 산술 숫자와 같은 저수준 데이터 유형의 크기를 나타낼 수도 있다.

건축적 시사점

프로세서 레지스터는 일반적으로 정수, 부동 소수점, 단일 명령어, 다중 데이터(SIMD), 제어주소, 색인 또는 기본 레지스터와 같은 다양한 용도와 이름을 가질 수 있는 주소 산술에 대한 특수 레지스터로 구분된다.그러나 현대 설계에서 이러한 기능은 더 일반적인 목적 정수 레지스터에 의해 수행되는 경우가 많다.대부분의 프로세서에서, 오직 정수나 주소 레지스터만 메모리의 데이터를 다루는데 사용될 수 있다; 다른 유형의 레지스터는 사용할 수 없다.따라서 이러한 레지스터의 크기는 일반적으로 부동 소수점 레지스터와 같이 보다 넓은 레지스터가 있더라도 직접 어드레싱 가능한 메모리의 양을 제한한다.

대부분의 고성능 32비트 및 64비트 프로세서(일부 주목할 만한 예외는 구형 또는 임베디드 ARM 아키텍처(Ambedded ARM Architecture)와 32비트 MIPS 아키텍처(MIPS) CPU는 64비트 데이터 단위를 기반으로 하는 플로팅 포인트 하드웨어가 통합되어 있다.예를 들어 x86/x87 아키텍처는 64비트(및 32비트) 부동소수점 값을 메모리에 로드하고 저장할 수 있는 지침을 가지고 있지만, 내부 부동소수점 데이터와 레지스터 형식은 80비트 폭인 반면 범용 레지스터는 32비트 폭이다.반대로 64비트 알파 계열은 64비트 부동소수점 데이터와 레지스터 형식, 64비트 정수 레지스터를 사용한다.

역사

많은 컴퓨터 명령 집합은 단일 정수 레지스터가 컴퓨터의 물리적 메모리나 가상 메모리의 어떤 위치에 메모리 주소를 저장할 수 있도록 설계된다.따라서 메모리에 대한 총 주소 수는 종종 이러한 레지스터의 너비에 의해 결정된다.The IBM System/360 of the 1960s was an early 32-bit computer; it had 32-bit integer registers, although it only used the low order 24 bits of a word for addresses, resulting in a 16 MiB (16 × 10242 bytes) address space. 32-bit superminicomputers, such as the DEC VAX, became common in the 1970s, and 32-bit microprocessors, such as the Motorola 68000 인텔 80386을 시작으로 한 x86 계열의 32비트 멤버들과 함께 1980년대 중반에 등장하여 32비트를 편리한 레지스터 사이즈로서 사실상의 컨센서스 같은 것으로 만들었다.

32비트 주소 레지스터는 2개의32 주소, 즉 RAM(Random-Access Memory)의 4GiB를 참조할 수 있다는 것을 의미했다.이러한 아키텍처가 고안되었을 때, 4 GiB의 메모리는 설치 시 일반적인 양(4MiB)을 훨씬 초과하여, 이것은 주소를 지정하기에 충분한 여유공간으로 간주되었다. 42억 9천만 개의 주소는 다른 중요한 이유로 작업하기에 적합한 크기로 간주되었다: 42억 9천만 개의 정수는 m에 고유한 참조를 할당하기에 충분하다.데이터베이스와 같은 응용프로그램의 OST 엔터티.

크레용-1과 같은 1970년대와 1980년대의 일부 슈퍼컴퓨터 아키텍처는 64비트 어드레싱을 지원하지는 않았지만 64비트 폭의 레지스터를 사용했고 64비트 정수 산수를 지원했다.[3]1980년대 중반, 인텔 i860[4] 개발은 (윈도우즈 NT의 경우[5] 너무 늦은) 1989년 출시로 절정에 달하기 시작했다; i860은 32비트 정수 레지스터와 32비트 주소 지정을 가지고 있었기 때문에, 비록 그것의 그래픽 장치가 64비트 정수 산수를 지원했지만, 완전한 64비트 프로세서는 아니었다.[6]그러나 메모리 비용의 지속적인 감소로 RAM의 양이 4GiB에 근접하게 설치되었고, 특정 유형의 문제를 처리하기 위해 4GiB 천장을 초과하는 가상 메모리 공간을 사용하는 것이 바람직해진 1990년대 초반까지 32비트가 표준으로 유지되었다.이에 대응하여, MIPS와 DEC는 처음에는 고급 워크스테이션서버 머신을 위한 64비트 마이크로프로세서 아키텍처를 개발했다.1990년대 중반까지 HAL Computer Systems, Sun Microsystems, IBM, Silicon GraphicsHewlett Packard는 워크스테이션 및 서버 시스템을 위한 64비트 아키텍처를 개발했다.이러한 추세에 대한 주목할 만한 예외는 32비트 데이터와 31비트 주소 크기를 사용한 IBM의 메인프레임이었다. IBM 메인프레임은 2000년까지 64비트 프로세서를 포함하지 않았다.1990년대에는 소비자 전자제품과 임베디드 애플리케이션에서 저가 64비트 마이크로프로세서 몇 개가 사용되었다.특히, 닌텐도[7] 64와 플레이스테이션 2는 개인용 컴퓨터에 도입되기 전에 64비트 마이크로프로세서를 가지고 있었다.고급 프린터, 네트워크 장비, 산업용 컴퓨터도 퀀텀 이펙트 소자 R5000과 같은 64비트 마이크로프로세서를 사용했다.[citation needed] 64비트 컴퓨팅은 2003년부터 애플 매킨토시 라인의 일부 모델이 파워로 전환되면서 개인용 컴퓨터 데스크탑으로 흘러가기 시작했다.PC 970 프로세서(애플에서 G5로 표기)와 어드밴스트 마이크로 디바이스(AMD)가 첫 64비트 x86-64 프로세서를 출시했다.

64비트 데이터 타임라인

1961
IBM은 64비트 데이터 워드와 32비트 또는 64비트 명령어를 사용하는 IBM 7030 스트레치 슈퍼 컴퓨터를 제공한다.
1974
Control Data Corporation은 64비트 워드 아키텍처를 사용하는 CDC Star-100 벡터 슈퍼컴퓨터를 출시한다(이전의 CDC 시스템은 60비트 아키텍처를 기반으로 했다).
International Computers Limited는 32비트, 64비트, 128비트 2의 보완 정수인 64비트 및 128비트 부동소수점, 32비트, 64비트 및 128비트 포장 소수점, 128비트 축전지 레지스터를 갖춘 ICL 2900 시리즈를 출시한다.이 아키텍처는 ICL과 후지쓰 기계들의 연이은 과정을 통해 살아남았다.가장 최근의 것은 64비트 인텔 프로세서의 원래 환경을 모방하는 후지쯔 초신성이다.
1976
크레이 리서치는 64비트 워드 아키텍처를 기반으로 한 최초의 크레이-1 슈퍼컴퓨터를 납품하며 이후 크레이 벡터 슈퍼컴퓨터의 기초를 형성하게 된다.
1983
Elxsi는 Elxsi 6400 병렬 미니수페어 컴퓨터를 출시한다.Elxsi 아키텍처에는 64비트 데이터 레지스터가 있지만 32비트 주소 공간이 있다.
1989
인텔인텔 i860 RISC(Reduced Instruction Set Computer) 프로세서를 도입한다."64비트 마이크로프로세서"로 마케팅되는 이 회사는 본질적으로 32비트 아키텍처를 가지고 있었으며, 64비트 정수 연산이 가능한 3D 그래픽 유닛으로 개선되었다.[8]
1993
Atari는 아키텍처에 64비트 데이터 경로가 포함되어 있는 Atari Jaguar 비디오 게임기를 소개한다.[9]

64비트 주소 타임라인

1991
MIPS Computer SystemsMIPS III 아키텍처를 구현하는 최초의 64비트 마이크로프로세서 R4000을 생산하고, MIPS 아키텍처의 세 번째 개정판이다.[10]CPU는 IRIS Crimson으로 시작하는 SGI 그래픽 워크스테이션에서 사용된다.Kendall Square ResearchOSF/1을 실행하는 독점적인 64비트 RISC 프로세서 아키텍처를 기반으로 최초의 KSR1 슈퍼컴퓨터를 제공한다.
1992
DEC(Digital Equipment Corporation)는 프리즘 프로젝트에서 탄생한 순수 64비트 알파 아키텍처를 소개한다.[11]
1994
인텔은 32비트 IA-32 프로세서의 후속으로 64비트 IA-64 아키텍처(Hewlett-Packard와 공동 개발) 계획을 발표한다.1998년부터 1999년까지의 출시일이 목표였다.
1995
Sun은 64비트 SPARC 프로세서인 UltraSPARC를 출시한다.[12]후지쯔 소유의 HAL Computer Systems는 HAL이 독자적으로 설계한 1세대 SPARC64인 64비트 CPU를 기반으로 워크스테이션을 출시한다.IBM은 최초의 64비트 PowerPC AS 프로세서인 A10과 A30 마이크로프로세서를 출시한다.[13]IBM은 또한 운영 체제, 데이터베이스 및 애플리케이션을 변환할 수 있는 64비트 AS/400 시스템 업그레이드를 출시한다.
1996
닌텐도는 MIPS R4000의 저가 변종을 중심으로 제작된 닌텐도 64 비디오 게임기를 선보인다.HP는 64비트 PA-RISC 2.0 아키텍처의 첫 번째 구현인 PA-8000을 출시한다.[14]
1998
IBM은 풀 64비트 PowerPC/POWER 프로세서의 POWER3 라인을 출시한다.[15]
1999
인텔은 IA-64 아키텍처에 대한 명령 집합을 공개한다.AMD는 'x86-64'(later branded AMD64)라고 불리는 IA-32에 64비트 확장을 공개한다.
2000
IBM은 최초의 64비트 z/Architecture 메인프레임zSeries z900을 출하한다. z/Architecture는 32비트 시스템/360 아키텍처의 후손으로 32비트 ESA/390 아키텍처의 64비트 버전이다.
2001
인텔은 출시 지연을 거듭한 끝에 IA-64 프로세서 라인을 출하한다.이제 Itanium을 브랜드화하고 고급 서버를 타깃으로 하고 있는 이타늄은 판매량이 기대에 미치지 못한다.
2003
AMD는 최초의 x86 기반 64비트 프로세서 아키텍처인 AMD64 아키텍처를 기반으로 OpteronAthlon 64 프로세서 라인을 선보인다.애플은 64비트 "G5" 파워도 출하한다.IBM이 생산한 PC 970 CPU.인텔은 자사의 Itanium 칩이 유일한 64비트 프로세서로 남을 것이라고 주장한다.
2004
Intel은 AMD의 시장 성공에 대응하여 IA-32e라는 이름의 AMD64 확장자 복제본을 개발해왔다고 인정한다.Intel은 새로운 64비트 명령 집합을 지원하는 XeonPentium 4 프로세서 제품군의 업데이트된 버전을 출하한다.
VIA Technologies이사야 64비트 프로세서를 발표한다.[16]
2006
소니, IBM, 도시바는 플레이스테이션 3, 서버, 워크스테이션 및 기타 가전제품에서 사용할 수 있는 64비트 Cell 프로세서를 제조하기 시작한다.인텔은 모바일, 데스크탑, 워크스테이션 라인의 첫 번째 메인스트림 x86-64 프로세서로 코어 2 듀오를 출시했다.이전 64비트 확장 프로세서 라인은 소비자 소매 시장에 널리 보급되지 않았다(64비트 펜티엄 4/D의 대부분은 OEM이었고), 64비트 펜티엄 4, 펜티엄 D, 셀러론은 수율 문제로 2006년 후반까지 양산에 참여하지 않았다(대부분의 양호한 수율 웨이퍼가 서버와 메인프레임을 대상으로 한 반면 주류는 여전히 130nm 32이다).-bit 프로세서 라인 2006년까지)를 만들었고, 코어 2가 데뷔한 후 곧 로우엔드가 되었다.AMD는 최초의 64비트 모바일 프로세서를 출시하고 90nm에 제조했다.
2011
ARM 홀딩스ARM 아키텍처의 첫 64비트 버전인 ARMv8-A를 발표한다.[17]
2012
ARM 홀딩스는 2012년 10월 30일 64비트 아키텍처를 기반으로 한 첫 번째 코어인 Cortex-A53과 Cortex-A57 코어를 발표했다.[1][18]
2013
애플은 A7 ARMv8-A 기반 시스템 온어칩을 사용하는 스마트폰에 세계 최초의 64비트 프로세서가 탑재된 아이폰 5S를 발표한다.
2014
구글은 64비트 Tegra K1 칩에서 구동되는 최초의 안드로이드 기기인 넥서스 9 태블릿을 발표한다.

64비트 운영 체제 타임라인

1985
크레이유닉스 운영체제의 첫 64비트 구현인 유니코스를 출시한다.[19]
1993
DEC는 Alpha 아키텍처를 기반으로 하는 자사 시스템을 위해 64비트 DEC OSF/1 AXP 유닉스 유사 운영체제(Luter name Tru64 UNIX)를 출시한다.
1994
R8000 프로세서에 대한 지원은 Silicon Graphics에 의해 릴리즈 6.0의 IRIX 운영 체제에 추가되었다.
1995
DEC는 Alpha용 OpenVMS의 첫 번째 64비트 버전인 OpenVMS 7.0을 출시한다.Alpha 아키텍처를 위한 최초의 64비트 Linux 배포가 출시된다.[20]
1996
64비트 모드에서 R4x00 프로세서를 지원하는 Silicon Graphics는 릴리즈 6.2에서 IRIX 운영 체제에 추가했다.
1998
Sun은 64비트 UltraSPARC를 완벽하게 지원하는 Solaris 7을 출시한다.
2000
IBM은 MVS에서 파생된 64비트 운영 체제인 z/OS를 새로운 zSeries 64비트 메인프레임에 출시하고, 64비트 Linux on z Systems는 CPU 릴리즈에 거의 즉시 따른다.
2001
리눅스는 (아직 x86-64 프로세서가 출시되지 않았기 때문에 시뮬레이터에서) x86-64를 완벽하게 지원하는 최초의 OS 커널이 된다.[21]
2001
마이크로소프트는 Itanium의 IA-64 아키텍처용 Windows XP 64-Bit Edition을 출시하고, 실행 계층을 통해 32비트 애플리케이션을 실행할 수 있다.
2003
애플은 파워에서 64비트 정수 산술 지원을 추가한 맥 OS X 10.3 '팬더' 운영 체제를 출시한다.PC 970 프로세서.[22]AMD64를 지원하는 여러 Linux 배포 릴리즈.AMD64를 지원하는 FreeBSD 릴리즈.
2005
1월 4일 마이크로소프트는 이전 9월 이후 IA-64 프로세서가 장착된 PC가 없어 윈도 XP 64비트 에디션을 중단했으며 이를 대체할 x86-64 버전을 개발하고 있다고 발표했다.[23]1월 31일 Sun은 AMD64 및 EM64T 프로세서를 지원하는 Solaris 10을 출시한다.애플은 4월 29일 파워가 탑재된 기기에서 64비트 커맨드라인 애플리케이션을 제한적으로 지원하는 OS X 10.4 '타이거'를 출시했다.PC 970 프로세서; Intel 기반 Mac용 이후 버전은 EM64T 프로세서가 장착된 Mac에서 64비트 명령줄 애플리케이션을 지원했다.4월 30일 마이크로소프트는 AMD64 및 EM64T 프로세서용 윈도 XP 프로페셔널 x64 Edition윈도 서버 2003 x64 Edition을 출시한다.[24]
2006
마이크로소프트는 32비트 호환성을 유지하는 AMD64/EM64T 프로세서용 64비트 버전을 포함한 Windows Vista를 출시한다.64비트 버전에서는 모든 윈도우즈 애플리케이션과 구성 요소가 64비트지만, 플러그인과의 호환성을 위해 32비트 버전을 포함하는 경우도 많다.
2007
애플은 파워가 있는 기기에서 64비트 애플리케이션을 완벽하게 지원하는 Mac OS X 10.5 "Leopard"를 출시한다.PC 970 또는 EM64T 프로세서.
2009
마이크로소프트는 윈도우즈 비스타와 마찬가지로 AMD64/Intel 64 프로세서용 64비트 버전을 포함하는 윈도우즈 7을 출시한다. 대부분의 새 컴퓨터는 기본적으로 64비트 버전으로 로드된다.마이크로소프트는 또한 최초의 64비트 전용 서버 운영 체제인 윈도우즈 서버 2008 R2를 출시한다.애플은 애플 컴퓨터의 특정 최신 모델만이 기본적으로 64비트 커널을 실행하지만 AMD64/Intel64 프로세서용 64비트 커널과 함께 출하되는 OS X 10.6 "Snow Leopard"를 출시한다.맥 OS X 10.6과 함께 번들로 제공되는 대부분의 애플리케이션도 현재 64비트다.[22]
2011
애플은 지원되는 시스템에서 기본적으로 64비트 커널을 실행하는 Mac OS X 10.7 "라이온"을 출시한다.64비트 커널을 실행할 수 없는 오래된 시스템은 32비트 커널을 실행하지만 이전 릴리스와 마찬가지로 64비트 애플리케이션을 실행할 수 있다. Lion은 32비트 프로세서가 장착된 시스템을 지원하지 않는다.Mac OS X 10.7과 함께 번들로 제공되는 거의 모든 애플리케이션도 현재 iTunes를 포함해 64비트다.
2012
Microsoft는 UEFI Class 3(CSM이 없는 UEFI) 및 Secure Boot를 지원하는 Windows 8을 출시한다.[25]
2013
애플은 AArch64 프로세서가 장착된 기계에서 64비트 애플리케이션을 지원하는 64비트 커널을 가진 iOS 7을 출시한다.
2014
구글은 64비트 프로세서를 지원하는 안드로이드 운영 체제의 첫 번째 버전인 안드로이드 롤리팝을 출시한다.
2017
애플은 AArch64 프로세서가 장착된 기계만을 지원하는 iOS 11을 출시한다.64비트 애플리케이션만 지원하는 64비트 커널을 가지고 있으며, 32비트 애플리케이션은 더 이상 호환이 되지 않는다.
2019
애플은 macOS 10.15 "Catalina"를 출시하여 32비트 Intel 애플리케이션에 대한 지원을 중단한다.
2021
구글은 안드로이드 12를 출시하여 32비트 어플리케이션에 대한 지원을 중단한다.마이크로소프트(MS)는 10월 5일 64비트 시스템만 지원하는 윈도11을 출시해 IA-32 시스템에 대한 지원을 중단한다.

프로세서 제한

원칙적으로 64비트 마이크로프로세서는 16 EiB(16 × 10246 = 264 = 18,446,744,073,709,551,616바이트 또는 약 18.4EB)의 메모리를 처리할 수 있다.그러나 모든 명령 집합과 이러한 명령 집합을 구현하는 모든 프로세서가 64비트 가상 또는 물리적 주소 공간을 지원하는 것은 아니다.

x86-64 아키텍처(2016년 기준)는 가상 메모리에 48비트를 허용하며, 주어진 프로세서에 대해서는 물리적 메모리에 최대 52비트를 허용한다.[26][27]이 제한으로 메모리 크기는 각각 256TiB(256×1024바이트4)와 4PiB(4×1024바이트5)가 허용된다.PC는 (메모리 칩의 물리적 크기 때문에) 현재 4페비바이트의 메모리를 포함할 수 없지만, AMD는 예측 가능한 미래에 이에 근접할 수 있는 대형 서버, 공유 메모리 클러스터 및 기타 물리적 주소 공간의 사용을 구상했다.따라서 52비트 물리적 주소는 전체 64비트 물리적 주소 구현 비용을 부담하지 않으면서도 확장할 수 있는 충분한 공간을 제공한다.마찬가지로, 48비트 가상 주소 공간은 32비트 제한인 4GiB(4 × 1024바이트3)의 65,536(216)를 제공하도록 설계되어 나중에 확장할 수 있고 64비트 주소 전체를 번역하는 오버헤드가 발생하지 않는다.

Power ISA v3.0은 유효주소에 대해 64비트를 허용하며, 65비트와 78비트가 허용되는 분할주소에 매핑하고, 가상메모리에 대해, 그리고 주어진 프로세서의 경우 물리적 메모리에 대해 최대 60비트를 허용한다.[28]

Oracle SPARC Architecture 2015는 가상 메모리에 64비트를 허용하며, 주어진 프로세서에 대해서는 물리적 메모리에 40비트에서 56비트를 허용한다.[29]

ARM AArch64 가상 메모리 시스템 아키텍처는 가상 메모리에 48비트를 허용하며, 주어진 프로세서에 대해서는 물리적 메모리에 32비트에서 48비트를 허용한다.[30]

DEC Alpha 규격은 최소 43비트의 가상 메모리 주소 공간(8TiB)을 지원해야 하며, 하드웨어는 나머지 지원되지 않는 비트가 0인지(미래 프로세서의 호환성을 지원하려면)를 확인하고 트랩해야 한다.알파 21064는 43비트의 가상 메모리 주소 공간(8TiB)과 34비트의 물리적 메모리 주소 공간(16GiB)을 지원했다.알파 21164는 43비트의 가상 메모리 주소 공간(8TiB)과 40비트의 물리적 메모리 주소 공간(1TiB)을 지원했다.알파 21264는 사용자가 구성할 수 있는 43비트 또는 48비트 가상 메모리 주소 공간(8TiB 또는 256TiB)과 44비트 물리적 메모리 주소 공간(16TiB)을 지원했다.


64비트 애플리케이션

32비트 대 64비트

32비트 아키텍처에서 64비트 아키텍처로 변경하는 것은 근본적인 변화인데, 대부분의 운영체제는 새로운 아키텍처를 이용하기 위해 광범위하게 수정되어야 하기 때문이다. 왜냐하면 그 소프트웨어는 하드웨어를 다루는 실제 메모리를 관리해야 하기 때문이다.[31]다른 소프트웨어도 새로운 기능을 사용하기 위해 포팅되어야 한다; 이전 32비트 소프트웨어는 32비트 명령 집합의 상위 집합인 64비트 명령 집합으로 인해 지원될 수 있다. 따라서 64비트 명령 집합을 지원하는 프로세서는 32비트 명령 집합에 대한 코드도 실행할 수 있다. 또는 소프트웨어 에뮬레이션을 통해 또는 작동에 의해서도 지원될 수 있다.32비트 x86 애플리케이션을 실행하기 위해 IA-32 프로세서 코어를 포함하는 인텔의 일부 Itanium 프로세서와 마찬가지로, 64비트 프로세서 내에 32비트 프로세서 코어를 구현한다.이러한 64비트 아키텍처의 운영 체제는 일반적으로 32비트 및 64비트 애플리케이션 모두를 지원한다.[32]

이에 대한 중요한 예외 중 하나는 IBM AS/400이며, 이 소프트웨어는 TIMI(Technology Independent Machine Interface)라고 불리는 가상 명령 집합 아키텍처(ISA)로 컴파일되고, TIMI 코드는 실행되기 전에 로우 레벨 소프트웨어에 의해 네이티브 시스템 코드로 변환된다.번역 소프트웨어는 전체 OS와 모든 소프트웨어를 새로운 플랫폼으로 이동하기 위해 다시 작성되어야 하는 모든 것이다. 마치 IBM이 이전 32/48비트 IMMI에서 새로운 64비트 PowerPC-AS로 AS/400에 대한 기본 명령 세트를 이전했을 때와 같이 이다.IMPI 명령 집합은 심지어 32비트 PowerPC와도 상당히 달랐기 때문에, 이러한 전환은 주어진 명령 집합을 32비트에서 64비트로 이동하는 것보다 훨씬 더 컸다.

x86-64 아키텍처(AMD64)를 사용하는 64비트 하드웨어에서는 대부분의 32비트 운영 체제 및 애플리케이션이 호환성 문제 없이 실행될 수 있다.64비트 아키텍처의 주소 공간이 넓어지면 디지털 비디오, 과학 컴퓨팅 및 대형 데이터베이스와 같은 애플리케이션에서 대용량 데이터 세트와 작업하기가 쉬워지지만, 이들 또는 이들의 32비트 호환성 모드가 다른 작업에 비해 비교 가격이 책정된 32비트 시스템보다 더 빠른지에 대해서는 상당한 논쟁이 있었다.

컴파일된 Java 프로그램은 수정 없이 32비트 또는 64비트 Java 가상 시스템에서 실행될 수 있다.다음과 같은 모든 기본 제공 유형의 길이와 정밀도char,short,int,long,float그리고double, 그리고 배열 지수로 사용될 수 있는 형식들은 표준에 의해 지정되며 기본 구조에 의존하지 않는다.64비트 Java 가상 시스템에서 실행되는 Java 프로그램은 더 큰 주소 공간에 액세스할 수 있다.[33]

32비트 프로세서와 64비트 프로세서를 비교할 때 속도만이 고려 대상이 아니다.다중 작업, 스트레스 테스트 및 클러스터링과 같은 애플리케이션(HPC(고성능 컴퓨팅)용)은 적절하게 배치되었을 때 64비트 아키텍처에 더 적합할 수 있다.이 때문에 64비트 클러스터는 IBM, HP, 마이크로소프트 등 대형 조직에서 광범위하게 구축되어 왔다.

요약:.

  • 64비트 프로세서는 64비트 소프트웨어로 가장 잘 작동한다.
  • 64비트 프로세서는 32비트 버전의 명령어 세트에 대해 32비트 응용 프로그램 소프트웨어를 실행할 수 있도록 역호환성을 가질 수 있으며 32비트 버전의 명령어 세트에 대해 32비트 운영 체제 실행을 지원할 수도 있다.
  • 32비트 프로세서는 64비트 소프트웨어와 호환되지 않는다.

장단점

일반적인 오해는 컴퓨터가 4 GiB 이상의 무작위 액세스 메모리를 가지고 있지 않는 한 64비트 아키텍처가 32비트 아키텍처보다 나을 것이 없다는 것이다.[34]이것은 전적으로 사실이 아니다.

  • 일부 운영 체제와 특정 하드웨어 구성은 하드웨어 어드레싱용으로 예약된 3-4 GiB 영역의 많은 부분이 있기 때문에 IA-32 시스템의 물리적 메모리 공간을 3GiB로 제한한다. 3GiB 장벽; 64비트 아키텍처는 4GiB 이상을 처리할 수 있다.그러나 펜티엄 프로의 IA-32 프로세서는 64 GiB의 물리적 주소 범위를 제공하는 PAE(Physical Address Extension)를 사용하여 36비트 물리적 메모리 주소 공간을 허용하며, 이 중 최대 62 GiB를 메인 메모리에 사용할 수 있다. PAE를 지원하는 운영 체제는 IA-32 프로세서에서조차 물리적 메모리의 4 GiB로 제한되지 않을 수 있다.그러나 드라이버 및 기타 커널 모드 소프트웨어, 즉 이전 버전인 경우 PAE와 호환되지 않을 수 있다. 이는 32비트 버전의 Microsoft Windows가 물리적 RAM의[35] 4GiB로 제한되는 이유(이 설명의 타당성에 대해서는[36] 논란이 있었지만)로 언급되어 왔다.
  • 일부 운영 체제는 OS 사용을 위해 프로세스 주소 공간의 일부를 예약하여 사용자 프로그램의 메모리 매핑에 사용할 수 있는 총 주소 공간을 효과적으로 줄인다.예를 들어 32비트 Windows는 커널에 대한 총 주소 공간의 1 또는 2 GiB(설정에 따라)를 예약하고, 사용자 모드에 사용할 수 있는 주소 공간의 3 또는 2 GiB(존중하게)만 남겨둔다.이 제한은 64비트 운영 체제에서 훨씬 더 높다.
  • 메모리 매핑된 파일은 4GiB 이상의 파일이 일반화됨에 따라 32비트 아키텍처에서 구현하기가 점점 어려워지고 있다; 그러한 큰 파일은 32비트 아키텍처에 쉽게 메모리 매핑될 수 없으며, 한 번에 파일의 일부만 주소 공간에 매핑할 수 있고, 메모리 매핑에 의해 이러한 파일에 액세스하려면 매핑된 부분을 스와핑해야 한다.필요에 따라 주소 공간을 드나든다.OS에 의해 적절히 구현된다면 메모리 매핑은 가장 효율적인 디스크-메모리 방법 중 하나이기 때문에 이것은 문제다.
  • 인코더, 디코더, 암호화 소프트웨어와 같은 일부 64비트 프로그램은 64비트 레지스터로부터 큰 혜택을 받을 수 있는 반면,[citation needed] 3D 그래픽 중심의 프로그램과 같은 다른 프로그램의 성능은 32비트에서 64비트 환경으로 전환할 때 영향을 받지 않는다.[citation needed]
  • x86-64AArch64와 같은 일부 64비트 아키텍처는 32비트 아키텍처보다 더 많은 범용 레지스터를 지원한다(단어 길이 때문에 특별히 그런 것은 아님).이는 데이터가 사용 가능한 레지스터에 들어갈 수 있는 경우 프로세서가 캐시나 메인 메모리에서 데이터를 가져올 필요가 없기 때문에 긴축 루프의 경우 상당한 속도 증가를 초래한다.
C의 예:
인트로 a, b, c, d, e; 을 위해 (a = 0; a < 100; a++) {     b = a;     c = b;     d = c;     e = d; } 
이 코드는 먼저 a, b, c, d, e의 5개의 값을 만든 다음 루프로 넣는다.루프 중에 이 코드는 b의 값을 a의 값으로, c의 값을 b의 값으로, d의 값을 c의 값으로, e의 값을 d의 값으로 바꾼다.이것은 모든 값을 a로 바꾸는 것과 같은 효과를 가진다.
프로세서가 레지스터에 두 세 개의 값이나 변수만 보관할 수 있다면, 변수 d와 e를 처리할 수 있도록 메모리와 레지스터 사이에서 일부 값을 이동시킬 필요가 있을 것이다; 이것은 많은 CPU 사이클을 필요로 하는 과정이다.레지스터에 모든 값과 변수를 담을 수 있는 프로세서는 반복마다 레지스터와 메모리 사이에서 데이터를 이동할 필요 없이 이들을 반복할 수 있다.이 동작은 컴파일러에 따라 어떠한 영향도 발생하지만 가상 메모리와 쉽게 비교할 수 있다.

64비트 아키텍처의 주요 단점은 32비트 아키텍처에 비해 동일한 데이터가 메모리에서 더 많은 공간을 차지한다는 점이다(더 긴 포인터와 다른 유형, 정렬 패딩으로 인해).이것은 주어진 프로세스의 메모리 요구사항을 증가시키고 효율적인 프로세서 캐시 사용에 영향을 미칠 수 있다.부분적인 32비트 모델을 유지하는 것은 이것을 다루는 한 가지 방법이며, 일반적으로 합리적으로 효과적이다.예를 들어 z/OS 운영 체제는 이러한 접근방식을 취하여 프로그램 코드가 31비트 주소 공간(기본 하드웨어 플랫폼의 주소 계산에는 고차 비트가 사용되지 않음)에 상주하도록 요구하는 반면 데이터 개체는 선택적으로 64비트 영역에 상주할 수 있다.그러한 애플리케이션들이 모두 큰 주소 공간을 요구하거나 64비트 데이터 항목을 조작하는 것은 아니기 때문에 이러한 애플리케이션들은 이러한 기능들의 혜택을 받지 못한다.

소프트웨어 가용성

x86 기반 64비트 시스템에는 때때로 32비트 아키텍처용으로 작성된 소프트웨어의 동등성이 결여되어 있다.마이크로소프트 윈도우에서 가장 심각한 문제는 구식 하드웨어와 호환되지 않는 장치 드라이버다.대부분의 32비트 애플리케이션 소프트웨어는 에뮬레이션 모드(예: Microsoft WoW64 Technology for IA-64 및 AMD64)라고도 하는 64비트 운영 체제에서 실행될 수 있다.64비트 윈도우즈 네이티브 모드[37] 드라이버 환경은 64비트 이상에서 실행됨32비트 Win32 하위 시스템 코드(Winprinters와 같은 사용자 모드 소프트웨어에서 실제 하드웨어 기능이 에뮬레이션되는 장치)를 호출할 수 없는 NTDLL.DLL.DLL.2007년 초(Vista x64)까지는 대부분의 장치에 64비트 드라이버를 사용할 수 없었기 때문에 64비트 버전의 Windows(윈도우)를 사용하는 것이 과제로 여겨졌다.그러나 이후 메모리 가격이 떨어지고 4GiB 이상의 RAM 사용이 증가함에 따라 이러한 추세는 64비트 컴퓨팅으로 옮겨갔다.대부분의 제조업체가 새로운 기기에 32비트 드라이버와 64비트 드라이버를 제공하기 시작했기 때문에 64비트 드라이버의 사용 불가능이 문제가 되지 않았다.64비트 드라이버는 많은 구형 기기에 제공되지 않았으며, 결과적으로 64비트 시스템에서 사용할 수 없었다.

32비트 드라이버는 64비트용으로 수정할 수 있기 때문에 드라이버 호환성은 오픈 소스 드라이버의 문제가 덜했다.2007년 초 이전에 만들어진 하드웨어에 대한 지원은 상대적으로 사용자 수가 적기 때문에 오픈 소스 플랫폼의 경우 문제가 있었다.[citation needed]

64비트 버전의 Windows(윈도우)에서는 16비트 소프트웨어를 실행할 수 없다.그러나 대부분의 32비트 애플리케이션은 잘 작동할 것이다. 64비트 사용자는 16비트 또는 32비트 운영 체제의 가상 머신을 강제로 설치하여 16비트 애플리케이션을 실행해야 한다.[38]

맥 OS X 10.4 "Tiger"와 OS X 10.5 "Leopard"는 32비트 커널만 가지고 있었지만 64비트 프로세서에서 64비트 사용자 모드 코드를 실행할 수 있다.Mac OS X 10.6 "Snow Leopard"는 32비트 커널과 64비트 커널을 모두 가지고 있었고, 대부분의 Mac에서는 64비트 프로세서에서도 32비트 커널을 사용했다.이를 통해 이러한 Mac은 32비트 장치 드라이버를 지원하면서도 64비트 프로세스를 지원할 수 있었다. 단, 64비트 드라이버와 함께 제공될 수 있는 성능상의 이점은 아니다.Mac OS X 10.7 "라이온"은 더 많은 Mac에서 64비트 커널로 실행되었고, OS X 10.8 "Mountain Lion" 이상 MacOS 릴리즈는 64비트 커널만 가지고 있다.64비트 프로세서가 장착된 시스템에서 32비트 및 64비트 MacOS 커널 모두 32비트 사용자 모드 코드를 실행할 수 있으며, MacOS Mojave(10.14)까지의 모든 버전의 MacOS에는 32비트 애플리케이션이 사용할 32비트 버전의 라이브러리가 포함되어 있으므로, MacOS용 32비트 사용자 모드 소프트웨어가 해당 시스템에서 실행될 것이다.32비트 버전의 라이브러리는 애플이 macOS 카탈리나(10.15)에서 삭제했다.

리눅스 및 대부분의 다른 유닉스 유사 운영 체제와 이들을 위한 CC+++체인은 수년간 64비트 프로세서를 지원해왔다.그러한 플랫폼을 위한 많은 애플리케이션과 라이브러리는 C와 C++로 작성된 오픈 소스 소프트웨어여서 64비트 안전하다면 64비트 버전으로 컴파일할 수 있다.이러한 출처 기반 배포 모델은 빈번한 릴리스에 중점을 두고, 그러한 운영 체제에 대한 애플리케이션 소프트웨어의 가용성을 문제 삼지 않는다.

64비트 데이터 모델

32비트 프로그램에서는 일반적으로 포인터와 정수 같은 데이터 유형의 길이가 같다.이는 64비트 시스템에서 반드시 해당되는 것은 아니다.[39][40][41]따라서 C와 같은 프로그래밍 언어와 C++Objective-C와 같은 하위 언어에서 데이터 유형을 혼합하는 것은 32비트 구현에서는 작동할 수 있지만 64비트 구현에서는 작동하지 않을 수 있다.

64비트 컴퓨터의 C 및 C 파생 언어에 대한 많은 프로그래밍 환경에서,int 변수는 여전히 32비트 폭이지만 긴 정수와 포인터는 64비트 폭이다.이것들은 "Long, Pointer, 64"[42][43]의 약자인 LP64data 모델을 가지고 있는 것으로 설명된다.다른 모델로는 세 가지 데이터 유형이 모두 64비트 폭인 ILP64 데이터 모델과 짧은 정수가 64비트 폭인 SILP64 모델도 있다.[44][43][45][46]그러나 대부분의 경우 필요한 수정이 비교적 경미하고 간단하며, 잘 쓰여진 많은 프로그램들은 변경 없이 단순히 새로운 환경에 맞게 재구성될 수 있다.또 다른 대안으로 LLP64 모델이 있는데, 이 모델은 둘 모두를 남겨 32비트 코드와의 호환성을 유지한다.int그리고long 32비트인[47][43]LL32비트 환경을 포함한 모든 플랫폼에서 최소 64비트인 긴 정수형을 말한다.

또한 ILP32 데이터 모델을 사용하는 64비트 프로세서가 장착된 시스템도 있으며, 64비트 긴 정수가 추가되어 32비트 프로세서가 장착된 많은 플랫폼에서도 사용된다.이 모델은 일부 임베디드 시스템에 적합한 선택인 훨씬 더 작은 주소 공간 비용으로 포인터를 포함하는 데이터 구조와 코드 크기를 줄인다.64비트 버전의 명령어 세트가 32비트 버전보다 많은 레지스터를 가지고 있는 x86 및 ARM과 같은 명령어 세트의 경우, 공간 페널티 없이 추가 레지스터에 대한 액세스를 제공한다.64비트 RISC 기계에서 흔히 볼 수 있으며,[citation needed] x86년에 x32 ABI로 탐구되었으며, 최근에는 Apple Watch Series 4, 5에서 사용되고 있다.[48][49]

64비트 데이터 모델
데이터 모델 짧은(짧은) 인트로 긴(긴) 오래도록 포인터,
size_t
샘플 운영 체제
ILP32 16 32 32 64 32 Linux 시스템의 x32 및 arm64ilp32 ABI; MIPS N32 ABI.
LLP64 16 32 32 64 64 Visual C++MinGW를 사용하는 Microsoft Windows(x86-64 및 IA-64)
LP64 16 32 64 64 64 대부분의 Unix 및 Unix 유사 시스템(예: Solaris, Linux, BSD, macOS)Cygwin 사용 시 Windows; z/OS
ILP64 16 64 64 64 64 SPARC64에 대한 HAL 컴퓨터 시스템 포트 Solaris
SILP64 64 64 64 64 64 클래식 유니코스[45][46](UNICOS/mp 등)

오늘날 많은 64비트 플랫폼은 LP64 모델(솔라리스, AIX, HP-UX, Linux, macOS, BSD, IBM z/OS 포함)을 사용한다.마이크로소프트 윈도우는 LLP64 모델을 사용한다.LP64 모델의 단점은 a를 저장하는 것이다.long으로int잘릴지도 모른다반면 포인터를 a로 변환하는 것은longLP64로 "작동"할 것이다.LLP64 모델에서는 그 반대가 참이다.이것들은 완전한 표준 준수 코드에 영향을 미치는 문제는 아니지만, 코드는 종종 데이터 유형의 폭에 대한 암묵적인 가정으로 작성된다.C 코드는 다음을 선호해야 한다.u)intptr_t대신에long정수 객체에 포인터를 던질 때

프로그래밍 모델은 주어진 컴파일러에 적합하도록 만들어진 선택이며, 동일한 OS에 여러 개가 공존할 수 있다.그러나 OS 애플리케이션 프로그래밍 인터페이스(API)의 기본 모델로 선택한 프로그래밍 모델이 일반적으로 지배적이다.

또 다른 고려사항은 장치 드라이버에 사용되는 데이터 모델이다.드라이버는 대부분의 최신 운영 체제에서[citation needed] 운영 체제 코드의 대부분을 차지한다.많은 운전자들이 데이터를 조작하기 위해 포인터를 많이 사용하며, 경우에 따라 DMA(Direct Memory Access)를 지원하는 하드웨어에 특정 크기의 포인터를 로드해야 한다.예를 들어, 32비트 PCI 디바이스의 드라이버는 해당 주소의 포인터가 디바이스의 DMA 레지스터에 맞지 않기 때문에, 디바이스에서 4기비테 장벽 이상으로 데이터를 로드하라는 운영 체제의 요청을 충족할 수 없었다.이 문제는 DMA용 드라이버에 대한 요청을 생성할 때 OS가 기기의 메모리 제한을 고려하도록 하거나 IOMMU(입출력 메모리 관리 장치)를 사용하여 해결한다.

현재 64비트 아키텍처

2018년 5월 현재 프로세서가 제조되고 있는 64비트 아키텍처에는 다음이 포함된다.

32비트의 동일한 아키텍처에서 파생된 64비트의 대부분의 아키텍처는 성능 저하 없이 기본적으로 32비트 버전에 대해 작성된 코드를 실행할 수 있다.[citation needed]이런 종류의 지원을 흔히 바이아치 지원 또는 더 일반적으로 멀티아치 지원이라고 한다.

참고 항목

참조

  1. ^ a b "ARM Launches Cortex-A50 Series, the World's Most Energy-Efficient 64-bit Processors" (Press release). ARM Holdings. Retrieved 2012-10-31.
  2. ^ Pentium Processor User's Manual Volume 1: Pentium Processor Data Book (PDF). Intel. 1993.
  3. ^ "Cray-1 Computer System Hardware Reference Manual" (PDF). Cray Research. 1977. Retrieved October 8, 2013.
  4. ^ Grimes, Jack; Kohn, Les; Bharadhwaj, Rajeev (July–August 1989). "The Intel i860 64-Bit Processor: A General-Purpose CPU with 3D Graphics Capabilities". IEEE Computer Graphics and Applications. 9 (4): 85–94. doi:10.1109/38.31467. S2CID 38831149. Retrieved 2010-11-19.
  5. ^ Zachary, G. Pascal (1994). Showstopper! The Breakneck Race to Create Windows NT and the Next Generation at Microsoft. Warner Books. ISBN 0-02-935671-7.
  6. ^ "i860 Processor Family Programmer's Reference Manual" (PDF). Intel. 1991. Retrieved September 12, 2019.
  7. ^ "NEC Offers Two High Cost Performance 64-bit RISC Microprocessors" (Press release). NEC. 1998-01-20. Retrieved 2011-01-09. Versions of the VR4300 processor are widely used in consumer and office automation applications, including the popular Nintendo 64TM video game and advanced laser printers such as the recently announced, award-winning Hewlett-Packard LaserJet 4000 printer family.
  8. ^ "i860 64-Bit Microprocessor". Intel. 1989. Retrieved 30 November 2010.
  9. ^ "Atari Jaguar History". AtariAge.
  10. ^ Joe Heinrich (1994). MIPS R4000 Microprocessor User's Manual (2nd ed.). MIPS Technologies, Inc.
  11. ^ Richard L. Sites (1992). "Alpha AXP Architecture". Digital Technical Journal. Digital Equipment Corporation. 4 (4).
  12. ^ Gwennap, Linley (3 October 1994). "UltraSparc Unleashes SPARC Performance". Microprocessor Report. MicroDesign Resources. 8 (13).
  13. ^ Bishop, J. W.; et al. (July 1996). "PowerPC AS A10 64-bit RISC microprocessor". IBM Journal of Research and Development. IBM Corporation. 40 (4): 495–505. doi:10.1147/rd.404.0495.
  14. ^ Gwennap, Linley (14 November 1994). "PA-8000 Combines Complexity and Speed". Microprocessor Report. MicroDesign Resources. 8 (15).
  15. ^ F. P. O'Connell; S. W. White (November 2000). "POWER3: The next generation of PowerPC processors". IBM Journal of Research and Development. IBM Corporation. 44 (6): 873–884. doi:10.1147/rd.446.0873.
  16. ^ "VIA Unveils Details of Next-Generation Isaiah Processor Core". VIA Technologies, Inc. Archived from the original on 2007-10-11. Retrieved 2007-07-18.
  17. ^ "ARMv8 Technology Preview" (PDF). October 31, 2011. Archived from the original (PDF) on November 11, 2011. Retrieved November 15, 2012.
  18. ^ "ARM Keynote: ARM Cortex-A53 and ARM Cortex-A57 64bit ARMv8 processors launched". ARMdevices.net. 2012-10-31.
  19. ^ Stefan Berka. "Unicos Operating System". www.operating-system.org. Archived from the original on 26 November 2010. Retrieved 2010-11-19.
  20. ^ Jon "maddog" Hall (Jun 1, 2000). "My Life and Free Software". Linux Journal.
  21. ^ Andi Kleen. Porting Linux to x86-64 (PDF). Ottawa Linux Symposium 2001. Status: The kernel, compiler, tool chain work. The kernel boots and work on simulator and is used for porting of userland and running programs
  22. ^ a b John Siracusa (September 2009). "Mac OS X 10.6 Snow Leopard: the Ars Technica review". Ars Technica. p. 5. Archived from the original on 9 October 2009. Retrieved 2009-09-06.
  23. ^ Joris Evers (5 January 2005). "Microsoft nixes Windows XP for Itanium". Computerworld. Archived from the original on 18 June 2013. Retrieved 17 October 2017.
  24. ^ "Microsoft Raises the Speed Limit with the Availability of 64-Bit Editions of Windows Server 2003 and Windows XP Professional" (Press release). Microsoft. April 25, 2005. Retrieved September 10, 2015.
  25. ^ "UEFI_on_Dell BizClient_Platforms" (PDF).
  26. ^ "AMD64 Programmer's Manual Volume 2: System Programming" (PDF). Advanced Micro Devices. December 2016. p. 120.
  27. ^ "Intel 64 and IA-32 Architectures Software Developer's Manual Volume 3A: System Programming Guide, Part 1" (PDF). Intel. September 2016. p. 4-2.
  28. ^ "Power ISA Version 3.0". IBM. November 30, 2015. p. 983.
  29. ^ "Oracle SPARC Architecture 2015 Draft D1.0.9". Oracle. p. 475.
  30. ^ "ARM Architecture Reference Manual ARMv8, for ARMv8-A architecture profile". pp. D4-1723, D4-1724, D4-1731.
  31. ^ Mashey, John (October 2006). "The Long Road to 64 Bits". ACM Queue. 4 (8): 85–94. doi:10.1145/1165754.1165766. Retrieved 2011-02-19.
  32. ^ "Windows 7: 64 bit vs 32 bit?". W7 Forums. Archived from the original on 5 April 2009. Retrieved 2009-04-05.
  33. ^ "Frequently Asked Questions About the Java HotSpot VM". Sun Microsystems, Inc. Archived from the original on 10 May 2007. Retrieved 2007-05-03.
  34. ^ "A description of the differences between 32-bit versions of Windows Vista and 64-bit versions of Windows Vista". Retrieved 2011-10-14.
  35. ^ Mark Russinovich (2008-07-21). "Pushing the Limits of Windows: Physical Memory". Retrieved 2017-03-09.
  36. ^ Chappell, Geoff (2009-01-27). "Licensed Memory in 32-Bit Windows Vista". geoffchappell.com. WP:SPS. Retrieved 9 March 2017.
  37. ^ "Inside Native Applications". Technet.microsoft.com. 2006-11-01. Archived from the original on 23 October 2010. Retrieved 2010-11-19.
  38. ^ Lincoln Spector (August 12, 2013). "Run an old program on a new PC".
  39. ^ Peter Seebach (2006). "Exploring 64-bit development on POWER5: How portable is your code, really?".
  40. ^ Henry Spencer. "The Ten Commandments for C Programmers".
  41. ^ "The Story of Thud and Blunder". Datacenterworks.com. Retrieved 2010-11-19.
  42. ^ "ILP32 and LP64 data models and data type sizes". z/OS XL C/C++ Programming Guide.
  43. ^ a b c "64-Bit Programming Models". Retrieved 2020-06-05.
  44. ^ "Using the ILP64 Interface vs. LP64 Interface". Intel. Retrieved Jun 24, 2020.
  45. ^ a b "Cray C/C++ Reference Manual". August 1998. Table 9-1. Cray Research systems data type mapping. Archived from the original on October 16, 2013. Retrieved October 15, 2013.
  46. ^ a b "Cray C and C++ Reference Manual (8.7) S-2179". Retrieved Jun 24, 2020.
  47. ^ "Abstract Data Models - Windows applications". May 30, 2018.
  48. ^ "ILP32 for AArch64 Whitepaper". ARM Limited. June 9, 2015. Archived from the original on December 30, 2018. Retrieved October 9, 2018.
  49. ^ "Apple devices in 2018". woachk, security researcher. October 6, 2018.

외부 링크