64ビットポータブル実行可能 ファイル内のセクションテーブルの16進ダンプ 。64ビットワードは、16桁の16 進 数で表現できます。コンピュータアーキテクチャ において、64ビット 整数 、メモリアドレス 、その他のデータ ユニット[ a ] は64ビット 幅のものです。また、64ビット中央処理装置 (CPU) と算術論理装置 (ALU) は、そのサイズのプロセッサレジスタ 、アドレスバス 、またはデータバス に基づくものです。このようなプロセッサを使用するコンピュータ は64ビットコンピュータです。
ソフトウェアの観点から見ると、64ビットコンピューティングとは、64ビットの仮想メモリアドレスを持つ マシンコード を使用することを意味します。ただし、すべての64ビット命令セットが完全な64ビット仮想メモリアドレスをサポートしているわけではありません。例えば、 x86-64 とAArch64 は48ビットの仮想アドレスのみをサポートし、残りの16ビットの仮想アドレスはすべて0(000...)またはすべて1(111...)である必要があります。また、いくつかの64ビット命令セットは、64ビット未満の物理メモリアドレスをサポートしています。
64ビット という用語は、64ビットプロセッサが標準となっているコンピュータの世代を指すこともあります。64ビットとは、コンピュータアーキテクチャ、バス、メモリ、CPUの特定のクラス、そして拡張してそれら上で実行されるソフトウェアを定義するワード サイズです。64ビットCPUは、1970年代からスーパーコンピュータ( Cray-1 、1975年)で使用され、 1990年代初頭からはRISC(縮小命令セットコンピュータ)ベースの ワークステーション やサーバーで使用されています。2003年には、x86-64プロセッサと PowerPC G5 の形で、64ビットCPUが主流のPC 市場に導入されました。
64ビットレジスタは、2の64乗 (18京 または1.8×10の19乗 以上)の異なる値を保持できます。64ビットで格納できる整数 値の範囲は、使用する整数表現によって異なります。最も一般的な2つの表現では、( 符号なし ) 2進数 として表現した場合の範囲は0から18,446,744,073,709,551,615(2の64 乗−1に等しい) 、 2の補数 として表現した場合の範囲は−9,223,372,036,854,775,808(−2の63乗 )から9,223,372,036,854,775,807(2の63 乗−1)です。したがって、64 ビットのメモリ アドレスを持つプロセッサは、2 64 バイト (16エクサバイト または EB) のバイト アドレス指定可能な メモリに直接アクセスできます。
64ビットコンピュータアーキテクチャは 、一般的に64ビット幅の整数レジスタとアドレスレジスタ を備えており、64ビットのデータ型とアドレスを直接サポートできます。ただし、CPUによっては、レジスタとは異なるサイズの外部データバスやアドレスバス、さらにはより大きなサイズの外部データバス やアドレスバス を備えている場合があります(例えば、32ビットのPentiumは64ビットのデータバスを備えていました)。 [ 1 ]
建築への影響 プロセッサ レジスタは通常、整数 、浮動小数点 、単一命令複数データ (SIMD)、制御 、および多くの場合アドレス演算用の特殊レジスタのいくつかのグループに分けられます。これらの特殊レジスタは、アドレス レジスタ 、インデックス レジスタ、ベース レジスタ など、さまざまな用途と名前を持ちます。ただし、最新の設計では、これらの機能はより汎用的な整数 レジスタによって実行されることがよくあります。ほとんどのプロセッサでは、メモリ内のデータのアドレス指定に使用できるのは整数レジスタまたはアドレス レジスタのみであり、他の種類のレジスタは使用できません。したがって、これらのレジスタのサイズによって、浮動小数点レジスタなどのより幅の広いレジスタが存在する場合でも、直接アドレス指定可能なメモリの量は通常制限されます。
ほとんどの高性能32ビットおよび64ビットプロセッサ(旧式または組み込みARMアーキテクチャ (ARM)および32ビットMIPSアーキテクチャ (MIPS)CPUなどの注目すべき例外)には、統合型浮動小数点ハードウェアが搭載されています。これらのハードウェアは、多くの場合、64ビットのデータ単位に基づいていますが、常にそうであるとは限りません。例えば、x86 / x87 アーキテクチャには、64ビット(および32ビット)の浮動小数点値をメモリにロードおよびストアできる命令がありますが、内部の浮動小数点データとレジスタ形式は80ビット幅であるのに対し、汎用レジスタは32ビット幅です。一方、64ビットAlpha ファミリは、64ビットの浮動小数点データとレジスタ形式、および64ビットの整数レジスタを使用します。
歴史 多くのコンピュータ命令セットは 、単一の整数レジスタに、コンピュータの物理メモリまたは仮想メモリの任意の場所への メモリアドレス を格納できるように設計されています。したがって、メモリへのアドレスの総数は、多くの場合、これらのレジスタの幅によって決まります。 1960年代のIBM System/360 は初期の32ビットコンピュータでした。32ビットの整数レジスタを備えていましたが、アドレスにはワードの下位24ビットのみを使用していたため、アドレス空間は16MiB(16×1024バイト)でした 。 DEC VAX など の 32ビットスーパー ミニ コンピュータは 1970年代に一般的になり、Motorola 68000ファミリ や、Intel 80386 で始まるx86ファミリの32ビットメンバー などの32ビットマイクロプロセッサは1980年代半ばに登場し、32ビットは便利なレジスタサイズとして事実上 のコンセンサスとなりました。
32ビットのアドレスレジスタは、 2の32乗の アドレス、つまり4GB の ランダムアクセスメモリ (RAM)を参照できることを意味しました。これらのアーキテクチャが考案された当時、4GBのメモリは一般的なシステム容量(4MiB)をはるかに超えていたため、アドレス指定には十分な余裕があると考えられていました。42億9000万のアドレスが適切なサイズと考えられたのには、別の重要な理由があります。42億9000万の整数は、 データベース などのアプリケーションにおいて、ほとんどのエンティティに一意の参照を割り当てるのに十分だからです。
1970年代と1980年代のスーパーコンピュータアーキテクチャの中には、 Cray-1 [ 2 ] など、最大 64ビット幅のレジスタを使用し、64ビット整数演算をサポートしていたが、64ビットアドレス指定はサポートしていなかった。1980年代半ばに、Intel i860 [ 3 ] の開発が始まり、1989年のリリースで最高潮に達した。i860 は32ビット整数レジスタと32ビットアドレス指定を備えていたため、グラフィックスユニットは64ビット整数演算をサポートしていたものの、完全な64ビットプロセッサではなかった。[ 4 ] しかし、メモリコストの継続的な低下によりRAMの容量が4GBに近づくインストールが実現し、特定の種類の問題を処理するには4GBの上限を超える仮想メモリ空間の使用が望ましいようになった1990年代初めまで、32ビットが標準のままであった。これに対応して、MIPSとDECは、当初はハイエンドのワークステーション とサーバー マシン向けに、64ビットのマイクロプロセッサアーキテクチャを開発した。1990年代半ばまでには、HAL Computer Systems 、Sun Microsystems 、IBM 、Silicon Graphics 、およびHewlett-Packardが、 ワークステーションとサーバーシステム向けに64ビットアーキテクチャを開発した。この傾向の注目すべき例外はIBMのメインフレーム で、当時は32ビットのデータと31ビットのアドレスサイズを使用していた。IBMメインフレームには、2000年まで64ビットプロセッサは含まれていなかった。1990年代には、いくつかの低コストの64ビットマイクロプロセッサが民生用電子機器や組み込みアプリケーションで使用されていた。特筆すべきは、Nintendo 64 [ 5 ] とPlayStation 2は 、パーソナルコンピューターに導入される前に64ビットマイクロプロセッサを搭載していたことである。ハイエンドのプリンター、ネットワーク機器、産業用コンピューターでも、Quantum Effect Devices R5000 などの64ビットマイクロプロセッサーが使用されていました。[ 6 ] 64ビットコンピューティングは、2003年以降、Apple のMacintoshシリーズの一部モデルがPowerPC 970 プロセッサー( AppleはG5 と呼んでいます)に切り替わり、Advanced Micro Devices (AMD)が初の64ビットx86-64 プロセッサーをリリースしたことをきっかけに、パーソナルコンピューターのデスクトップにも浸透し始めました。物理メモリは最終的に32ビットの制限に追いつきました。2023年には、ラップトップコンピューターには一般的に16GBのメモリが搭載され、サーバーには64GB以上のメモリが搭載されるようになり、[ 7 ] 32ビットの4GBのアドレス容量を大幅に超えました。
64ビットデータタイムライン 1961 IBM は、64 ビットのデータ ワードと 32 ビットまたは 64 ビットの命令ワードを使用するIBM 7030 Stretch スーパーコンピュータを出荷しました。 1974 Control Data Corporation は、64 ビット ワード アーキテクチャを採用した CDC Star-100 ベクトル スーパーコンピュータをリリースしました(以前の CDC システムは 60 ビット アーキテクチャに基づいていました)。インターナショナル・コンピューターズ・リミテッド社 は、 32ビット、64ビット、128ビットの2の補数 整数、64ビットおよび128ビットの浮動小数点数、32ビット、64ビット、128ビットのパック10進数、そして128ビットのアキュムレータレジスタを搭載したICL 2900シリーズを発売しました。このアーキテクチャは、ICLと富士通のマシンを次々と受け継いでいます。最新機種は富士通のSupernovaで、64ビットIntelプロセッサ上でオリジナルの環境をエミュレートします。1976 Cray Research は、 64 ビット ワード アーキテクチャをベースとし、後の Cray ベクトル スーパーコンピュータの基礎となる最初のCray-1スーパーコンピュータをリリースしました。 1983 Elxsiは、並列 ミニスーパーコンピュータ 「Elxsi 6400」を発売しました。Elxsiアーキテクチャは、64ビットのデータレジスタと32ビットのアドレス空間を備えています。1989 インテルは、 Intel i860 縮小命令セットコンピュータ (RISC)プロセッサを発表しました。「64ビットマイクロプロセッサ」として販売されたこのプロセッサは、基本的に32ビットアーキテクチャを採用し、64ビット整数演算が可能な3Dグラフィックスユニットを搭載していました。[ 8 ] 1993 アタリは、アーキテクチャに64ビット幅のデータパスをいくつか組み込んだ Atari Jaguar ビデオゲームコンソール を発表しました。[ 9 ]
64ビットアドレスタイムライン 1991 MIPSコンピュータシステムズは、 MIPSアーキテクチャ の第3版であるMIPS III アーキテクチャを実装した最初の64ビットマイクロプロセッサR4000を 製造しました。[ 10 ] このCPUは、 IRIS Crimson をはじめとするSGI グラフィックスワークステーションに使用されています。ケンドールスクエアリサーチは、 OSF/1 を実行する独自の64ビットRISCプロセッサアーキテクチャをベースにした最初のKSR1スーパーコンピュータを納入しました。1992 デジタル・イクイップメント・コーポレーション(DEC)は、 PRISM プロジェクトから生まれた純粋な64ビットAlpha アーキテクチャを導入した。[ 11 ] 1994 インテルは、32ビット IA-32 プロセッサの後継として、 64ビットIA-64アーキテクチャ( ヒューレット・パッカード と共同開発)の計画を発表しました。1998年から1999年にかけての発売が予定されていました。1995 サンは 64ビットSPARC プロセッサUltraSPARC を発売した。[ 12 ] 富士通 傘下のHALコンピュータシステムズは、HALが独自に設計した第1世代の SPARC64 である64ビットCPUを搭載したワークステーションを発売した。IBMは、最初の64ビットPowerPC ASプロセッサであるA10およびA30マイクロプロセッサをリリースした。[ 13 ] IBMはまた、オペレーティングシステム、データベース、およびアプリケーションを変換できる64ビットAS/400システムアップグレードをリリースした。1996 任天堂は 、MIPS R4000の低価格版をベースにしたビデオゲーム機「Nintendo 64」 を発売した。HPは、64ビットPA-RISC 2.0 アーキテクチャの最初の実装であるPA-8000を リリースした。[ 14 ] 1998 IBMは、完全な64ビットPowerPC/ POWERプロセッサの POWER3 シリーズをリリースしました。[ 15 ] 1999 IntelがIA-64 アーキテクチャ向けの命令セット をリリース。AMDは IA-32の64ビット拡張セット「x86-64 」(後にAMD64と改名)を公開。2000 IBM は、最初の 64 ビットz/Architecture メインフレームである zSeries z900を出荷しました。z/Architecture は、32 ビット ESA/390 アーキテクチャの 64 ビット バージョンであり、32 ビットSystem/360 アーキテクチャの後継です。 2001 インテルは、市場投入が幾度となく延期された後、IA-64プロセッサラインを出荷した。現在はItanium ブランドとしてハイエンドサーバーをターゲットとしているが、売上は期待を下回った。 2003 AMDは、x86ベースの最初の64ビットプロセッサアーキテクチャであるAMD64 アーキテクチャをベースにしたOpteron およびAthlon 64プロセッサラインを発表しました。Apple は IBM製の64ビット「G5」PowerPC 970 CPUも出荷しました。Intelは、Itaniumチップのみが64ビットプロセッサとして残ると主張しました。 2004 AMDの市場における成功を受け、IntelはAMD64拡張機能のクローンであるIA-32e(後にEM64T、さらにIntel 64に改名)を開発中であることを認めました。Intelは、新しい64ビット命令セットをサポートするXeon およびPentium 4プロセッサファミリーのアップデート版を出荷しています。 VIA Technologiesが Isaiah 64ビットプロセッサを発表。 [ 16 ] 2006 ソニー、IBM、東芝は、プレイステーション 3 、サーバー、ワークステーション、その他の機器で使用するために64 ビットCell プロセッサーの製造を開始しました。インテルは、モバイル、デスクトップ、ワークステーション ライン向けの最初の主流の x86-64 プロセッサーとして Core 2 Duo をリリースしました。それ以前の 64 ビット拡張プロセッサー ラインは消費者向け小売市場では広く入手できませんでした (64 ビットの Pentium 4/D のほとんどは OEM でした)。64 ビットの Pentium 4、Pentium D、Celeron は歩留まりの問題 (歩留まりの良いウェハーのほとんどはサーバーとメインフレームを対象としていましたが、主流は 2006 年まで 130 nm の 32 ビット プロセッサー ラインのままでした) により 2006 年後半まで量産されず、Core 2 の登場後すぐにローエンドになりました。AMD は最初の 64 ビット モバイル プロセッサーをリリースし、90 nm で製造されました。2011 ARMホールディングスは、 ARMアーキテクチャファミリー の最初の64ビットバージョンであるARMv8-Aを発表しました。[ 17 ] 2012 ARMホールディングスは、2012年10月30日に、64ビットアーキテクチャに基づく最初のコアであるCortex-A53とCortex-A57コアを発表しました。[ 18 ] [ 19 ] 2013 Apple は、スマートフォンで初の 64 ビット プロセッサを搭載したiPhone 5S 、 A7 ARMv8-A ベースのシステム オン チップ、および64 ビット プロセッサを搭載した初のタブレットであるiPad Air とiPad Mini 2 を発表しました。 2014 32ビットと64ビットの両方をサポートするRISC-Vが公開された。 [ 20 ] Googleは64ビットTegra K1チップで動作する最初のAndroidデバイスであるNexus 9タブレットを発表した。 2015 Apple は、64 ビット プロセッサ ( A8 ARMv8-A ベースのシステム オン チップ)を採用した初の iPod Touch であるiPod Touch (第 6 世代)と、64 ビット プロセッサを採用した初の Apple TV である Apple TV (第 4 世代) を発表しました。 2018 Apple は、64 ビット プロセッサであるS4 ARMv8-A ベースのシステム オン チップを採用した初の Apple Watch となるApple Watch Series 4を発表しました。 2020 概要: ARC ISA の最初の64ビットバージョンであるARCv3 ISAを発表。[ 21 ] Appleは32ビットアプリケーションをサポートしていないApple M1を リリース。2023 Qualcomm は、32 ビット ARM アプリケーションをサポートしていないSnapdragon 8 Gen 3 とSnapdragon X Eliteをリリースしました。
64ビットオペレーティングシステムのタイムライン 1985 クレイは Unix オペレーティングシステムの最初の64ビット実装であるUNICOS をリリースしました。[ 22 ] 1993 DEC は、 Alpha アーキテクチャに基づくシステム向けに、64 ビットのDEC OSF/1 AXP Unix ライクな オペレーティング システム (後に Tru64 UNIX に改名) をリリースしました。1994 R8000 プロセッサのサポートは、 Silicon Graphics によってリリース 6.0 のIRIX オペレーティング システム に追加されました。1995 DECは、Alpha向けOpenVMSの最初の完全64ビット版であるOpenVMS 7.0をリリースした。Alphaアーキテクチャ向けの最初の64ビットLinuxディストリビューションがリリースされた。 [ 23 ] 1996 64 ビット モードの R4x00 プロセッサのサポートは、Silicon Graphics によってリリース 6.2 のIRIX オペレーティング システム に追加されました。 1998 Sun は、完全な 64 ビットUltraSPARCサポートを備えた Solaris 7 をリリースしました。 2000 IBM は、新しいzSeries 64 ビット メインフレーム向けに、 MVS から派生した 64 ビット オペレーティング システムであるz/OS をリリースしました。CPUのリリースにほぼ続いて、z Systems 上の 64 ビットLinux がリリースされました。 2001 Linuxはx86-64を 完全にサポートした最初のOSカーネルとなった(x86-64プロセッサはまだリリースされていなかったため、シミュレータ上でのサポート)。[ 24 ] 2001 Microsoft は、 Itanium の IA-64 アーキテクチャ向けにWindows XP 64 ビット エディション をリリースしました。これにより、実行層を通じて32 ビット アプリケーションを実行できるようになりました。 2003 Appleは、 PowerPC 970 プロセッサ上でネイティブ64ビット整数演算のサポートを追加したMac OS X 10.3 「Panther」オペレーティングシステムをリリースしました。 [ 25 ] いくつかのLinux ディストリビューションが AMD64 のサポートをリリースしました。FreeBSDも AMD64のサポートをリリースしました。 2005 1月4日、マイクロソフトはWindows XP 64ビット版の提供を中止した。前年9月以降、IA-64プロセッサ搭載PCが販売されていなかったためである。そして、これに代わるx86-64版Windowsを開発中であると発表した。[ 26 ] 1月31日、サンはAMD64およびEM64TプロセッサをサポートするSolaris 10をリリースした。4月29日、アップルは Mac OS X 10.4 "Tiger"をリリースした。これはPowerPC 970プロセッサ搭載マシン上で64ビットコマンドラインアプリケーションを限定的にサポートする。IntelベースMac向けの後継バージョンでは、EM64Tプロセッサ搭載Mac上で64ビットコマンドラインアプリケーションをサポートした。4月30日、マイクロソフトはAMD64およびEM64Tプロセッサ搭載のWindows XP Professional x64 Edition とWindows Server 2003 x64 Editionをリリースした。 [ 27 ] 2006 Microsoftは、32ビットとの互換性を維持したAMD64/EM64Tプロセッサ向けの64ビット版を含むWindows Vistaをリリースしました。64ビット版では、すべてのWindowsアプリケーションとコンポーネントが64ビットになりますが、 プラグイン との互換性のために、多くのアプリケーションとコンポーネントの32ビット版も含まれています。 2007 Apple は、PowerPC 970 または EM64T プロセッサを搭載したマシンで 64 ビット アプリケーションを完全にサポートするMac OS X 10.5 「Leopard」をリリースしました。 2009 マイクロソフトはWindows 7 をリリースした。Windows Vistaと同様に、AMD64/Intel 64プロセッサ向けの完全な64ビット版を搭載しており、ほとんどの新しいコンピュータにはデフォルトで64ビット版が搭載されている。マイクロソフトはまた、64ビットのみに対応した初のサーバオペレーティングシステムであるWindows Server 2008 R2もリリースした。アップルは Mac OS X 10.6 (Snow Leopard)をリリースした。これはAMD64/Intel64プロセッサ向けの64ビットカーネルを搭載しているが、デフォルトで64ビットカーネルを実行するのは一部の最近のAppleコンピュータモデルのみである。Mac OS X 10.6にバンドルされているアプリケーションのほとんども64ビットになった。[ 25 ] 2010 Windows 7(64ビット)はWindows XP(32ビット)を上回り、Steamで最も人気のあるOSとなった。[ 28 ] [ 29 ] 2011 AppleはMac OS X 10.7 (Lion)をリリースしました。これは、対応機種ではデフォルトで64ビットカーネルを実行します。64ビットカーネルを実行できない古い機種では32ビットカーネルが実行されますが、以前のリリースと同様に64ビットアプリケーションを実行できます。Lionは32ビットプロセッサ搭載機種をサポートしていません。Mac OS X 10.7にバンドルされているほぼすべてのアプリケーションも、iTunesを含め64ビットになりました。 2012 マイクロソフトはUEFIクラス3(CSMなしのUEFI )と セキュアブートをサポートする Windows 8 をリリースした。[ 30 ] アップルはOS X Mountain Lion をリリースし、以前はサポートされていなかった一部の古いマシンで64ビットカーネルをデフォルトにし、32ビットカーネルを削除した。 2013 Apple はiOS 7 をリリースしました。これは、AArch64 プロセッサを搭載したマシンで、64 ビット アプリケーションをサポートする 64 ビット カーネルを備えています。 2014 Google は、64 ビット プロセッサをサポートするAndroid オペレーティング システムの最初のバージョンであるAndroid Lollipopをリリースしました。 2017 AppleはiOS 11 をリリースしました。これはAArch64プロセッサ搭載マシンのみをサポートします。64ビットカーネルを搭載し、64ビットアプリケーションのみをサポートします。32ビットアプリケーションとの互換性はなくなりました。 2018 Apple は、64 ビット サポートを導入した最初の watchOS バージョンであるwatchOS 5をリリースしました。 2019 Apple はmacOS 10.15 「Catalina」をリリースし、32 ビット Intel アプリケーションのサポートを廃止しました。 2021 Microsoft は10 月 5 日にWindows 11 をリリースしましたが、これは IA-32 および AArch32 システムのサポートを廃止し、64 ビット システムのみをサポートします。 2022 Googleは、32ビットアプリケーションのサポートを廃止したPixel 7 をリリースしました。Appleは、64ビットプロセッサを搭載したApple Watchモデル(Apple Watch Series 4以降、Apple Watch SE(第1世代)以降、および新しく導入されたApple Watch Ultraを含む)でのみ動作する初のwatchOSバージョンであるwatchOS 9をリリースし、 32 ビットプロセッサを搭載した最後のApple Watchモデルとして Apple Watch Series 3 のサポートを廃止しました。 2023 Google はAndroid 14 をリリースしましたが、32 ビット アプリケーションのサポートは廃止されました。 2024 Microsoft はWindows 11 2024 Update をリリースしましたが、その ARM バージョンでは 32 ビット ARM アプリケーションのサポートが廃止されました。
プロセッサの限界 原理的には、64ビットマイクロプロセッサは16 EB(16 × 1024 6 = 2 64 = 18,446,744,073,709,551,616バイト )のメモリをアドレス指定できます。ただし、すべての命令セット、およびそれらの命令セットを実装するすべてのプロセッサが、完全な64ビットの仮想アドレス空間または物理アドレス空間をサポートしているわけではありません。
x86-64アーキテクチャ (2024年3月現在)では、仮想メモリに48ビット、どのプロセッサでも物理メモリに最大52ビットを使用できます。[ 31 ] [ 32 ] これらの制限により、メモリサイズは それぞれ256TB (256×1024の4 バイト )と 4PB (4×1024の5 バイト )まで可能です。現在、PCには4 ペタバイト のメモリを搭載できませんが(メモリチップの物理サイズのため)、AMDは大規模サーバー、共有メモリクラスター、および近い将来にこれに近づく可能性のある物理アドレス空間のその他の用途を想定していました。したがって、52ビットの物理アドレスは、完全な64ビット物理アドレスを実装するコストをかけずに、十分な拡張の余地を提供します。同様に、48 ビットの仮想アドレス空間は、4 GB ( 4 × 1024 バイト )という 32 ビットの制限の 65,536 (2 16 ) 倍を提供するように設計されており、後で拡張できる余地があり、完全な 64 ビット アドレスを変換するオーバーヘッドが発生しません。
Power ISA v3.0では 、実効アドレスとして64ビットが許可され、仮想メモリ用に65~78ビットのセグメントアドレスにマッピングされ、任意のプロセッサでは物理メモリ用に最大60ビットまでが許可されます。[ 33 ]
Oracle SPARC アーキテクチャ2015では、仮想メモリに64ビット、任意のプロセッサに対して物理メモリに40~56ビットが許可されます。[ 34 ]
ARM AArch64 仮想メモリシステムアーキテクチャは、仮想メモリに48~56ビット、任意のプロセッサに対して物理メモリに32~56ビットを許可します。[ 35 ]
DEC Alpha 仕様では、少なくとも 43 ビットの仮想メモリ アドレス空間 (8 TB) のサポートが求められており、残りのサポートされていないビットがゼロであるかどうかをハードウェアでチェックしてトラップする必要があります (将来のプロセッサとの互換性をサポートするため)。Alpha 21064 は 、43 ビットの仮想メモリ アドレス空間 (8 TB) と 34 ビットの物理メモリ アドレス空間 (16 GB) をサポートしていました。Alpha 21164 は、 43 ビットの仮想メモリ アドレス空間 (8 TB) と 40 ビットの物理メモリ アドレス空間 (1 TB) をサポートしていました。Alpha 21264 は 、ユーザーが構成可能な 43 ビットまたは 48 ビットの仮想メモリ アドレス空間 (8 TB または 256 TB) と 44 ビットの物理メモリ アドレス空間 (16 TB) をサポートしていました。
64ビットアプリケーション
32ビットと64ビット 32 ビット アーキテクチャから64 ビット アーキテクチャへの変更は根本的な変更です。ほとんどのオペレーティング システムは 、新しいアーキテクチャを活用するために、ソフトウェアが実際のメモリ アドレス指定ハードウェアを管理する必要があるため、大幅に変更する必要があります。[ 36 ] 他のソフトウェアも新しい機能を使用するために移植する 必要があります。古い 32 ビット ソフトウェアは、64 ビット命令セットが 32 ビット命令セットのスーパーセットであるため、64 ビット命令セットをサポートするプロセッサで 32 ビット命令セットのコードも実行できる、ソフトウェアエミュレーション 、または 64 ビット プロセッサ内に 32 ビット プロセッサ コアを実際に実装することによってサポートされる場合があります。たとえば、32 ビットx86アプリケーションを実行するために IA-32 プロセッサ コアを搭載した Intel の一部Itanium プロセッサなどです。これらの 64 ビット アーキテクチャのオペレーティング システムは、通常、32 ビット アプリケーションと 64 ビット アプリケーションの両方をサポートします。[ 37 ]
大きな例外がIBM AS/400で、そのソフトウェアは TIMI ( Technology Independent Machine Interface )と呼ばれる仮想命令セットアーキテクチャ (ISA) にコンパイルされます。TIMI コードは、実行される前に低レベルソフトウェアによってネイティブマシンコードに変換されます。IBM が AS/400 のネイティブ命令セットを古い 32/48 ビット IMPI から新しい 64 ビット PowerPC- AS (コードネームAmazon)に移行したときのように、OS 全体とすべてのソフトウェアを新しいプラットフォームに移行するために書き直す必要があるのは、この変換 ソフトウェア だけです。IMPI 命令セットは32 ビットPowerPC とさえ大きく異なっていたため、この移行は特定の命令セットを 32 ビットから 64 ビットに移行するよりもさらに大きなものでした。
x86-64 アーキテクチャ(AMD64)を搭載した64ビットハードウェアでは、ほとんどの32ビットオペレーティングシステムとアプリケーションが互換性の問題なく動作します。64ビットアーキテクチャの広いアドレス空間は、デジタルビデオ 、科学計算、大規模データベース などのアプリケーションにおける大規模なデータセットの処理を容易にしますが、他のタスクにおいて、64ビットアーキテクチャまたはその32ビット互換モードが、 同価格帯の32ビットシステムよりも高速であるかどうかについては、多くの議論があります。
コンパイルされたJavaプログラムは、変更を加えることなく32ビットまたは64ビットのJava仮想マシン上で実行できます。、、、、、、、、などcharのすべての組み込み型、および配列インデックスとして使用できる型の長さと精度は標準で規定されており、基盤となるアーキテクチャに依存しません。64ビットJava仮想マシン上で実行されるJavaプログラムは、より広いアドレス空間にアクセスできます。[ 38 ] shortintlongfloatdouble
32ビットプロセッサと64ビットプロセッサを比較する際に考慮すべき要素は速度だけではありません。マルチタスク、ストレステスト、高性能コンピューティング (HPC)向けのクラスタリングといったアプリケーションは、適切に導入されれば64ビットアーキテクチャの方が適している場合があります。そのため、IBM、HP、Microsoftなどの大規模組織では、64ビットクラスタが広く導入されています。
まとめ:
64 ビット プロセッサは、64 ビット ソフトウェアで最高のパフォーマンスを発揮します。 64 ビット プロセッサには下位互換性 があり、32 ビット バージョンの命令セットで 32 ビット アプリケーション ソフトウェアを実行できるほか、32 ビット バージョンの命令セットで 32 ビット オペレーティング システムの実行もサポートされることがあります。 32 ビット プロセッサは 64 ビット ソフトウェアと互換性がありません。
長所と短所 よくある誤解として、コンピュータに4GB以上のランダムアクセスメモリ が搭載されていない限り、64ビットアーキテクチャは32ビットアーキテクチャより優れていないというものがある。[ 39 ] これは完全に真実ではない。
一部のオペレーティングシステムおよび特定のハードウェア構成では、 IA-32 システム上の物理メモリ空間が 3 GB に制限されます。これは、3 - 4 GB の領域の大部分がハードウェア アドレス指定用に予約されているためです ( 3 GB の壁 を参照)。64 ビットアーキテクチャは 4 GB をはるかに超えるアドレスを指定できます。ただし、Pentium Pro以降の IA-32 プロセッサでは、 物理アドレス拡張 (PAE) を使用して36 ビットの物理 メモリアドレス空間が許可され、64 GB の物理アドレス範囲が提供され、そのうち最大 62 GB をメインメモリで使用できます。PAE をサポートするオペレーティングシステムでは、IA-32 プロセッサ上であっても 4 GB の物理メモリに制限されない場合があります。ただし、ドライバやその他のカーネルモードソフトウェア (特に古いバージョン) は PAE と互換性がない場合があります。これが、32 ビット版のMicrosoft Windows が4 GB の物理 RAM に制限される理由として挙げられています[ 40 ] (ただし、この説明の妥当性については異論があります[ 41 ] )。一部のオペレーティングシステムでは、プロセス アドレス空間 の一部をOS用に予約しているため、ユーザープログラムがメモリをマッピングできるアドレス空間の総量が実質的に減少します。例えば、32ビット版Windowsでは、カーネル用にアドレス空間全体の1GBまたは2GB(設定によって異なります)が予約されているため、ユーザーモードで使用できるアドレス空間はそれぞれ3GBまたは2GBのみとなります。この制限は64ビット版オペレーティングシステムでは大幅に高くなります。 4GBを超えるファイルが一般的になるにつれ、32ビットアーキテクチャにおけるメモリマップファイルの 実装はますます困難になっています。このような大容量ファイルは、一度にファイルの一部しかアドレス空間にマップできないため、32ビットアーキテクチャにメモリマップすることは容易ではありません。また、メモリマップによってこのようなファイルにアクセスするには、マップされた部分を必要に応じてアドレス空間にスワップインしたりスワップアウトしたりする必要があります。これは問題です。なぜなら、OSによって適切に実装されていれば、メモリマップはディスクからメモリへの最も効率的なアクセス方法の1つだからです。エンコーダー、デコーダー、暗号化ソフトウェアなどの一部の 64 ビット プログラムは、64 ビット レジスタから大きなメリットを得ることができますが、3D グラフィックス指向のプログラムなどの他のプログラムのパフォーマンスは、32 ビット環境から 64 ビット環境に切り替えても影響を受けません。 x86-64 やAArch64 などの一部の 64 ビットアーキテクチャは、32 ビットアーキテクチャよりも多くの汎用レジスタをサポートしています(ただし、これはワード長に特有のものではありません)。これにより、データが利用可能なレジスタに収まる場合、プロセッサはキャッシュやメインメモリからデータをフェッチする必要がないため、タイトループの速度が大幅に向上します。C の例:int a , b , c , d , e ; for ( a = 0 ; a < 100 ; a ++ ) { b = a ; c = b ; d = c ; e = d ; } このコードはまず5つの値(a、b、c、d、e)を作成し、それらをループに組み込みます。ループ処理中、このコードはbの値をaの値に、cの値をbの値に、dの値をcの値に、eの値をdの値に変更します。これは、すべての値をaに変更するのと同じ効果があります。 プロセッサがレジスタに保持できる値または変数の数が2つか3つしかない場合、変数dとeも処理するには、メモリとレジスタの間で値を移動する必要があります。これは多くのCPUサイクルを消費する処理です。すべての値と変数をレジスタに保持できるプロセッサは、ループ処理でそれらを処理する際に、反復処理ごとにレジスタとメモリの間でデータを移動する必要はありません。この動作は仮想メモリと簡単に比較できますが、その影響はコンパイラに依存します。 64 ビット アーキテクチャの主なデメリットは、32 ビット アーキテクチャと比較して、同じデータでもメモリ内でより多くのスペースを占有することです (ポインタが長くなったり、他の型が使用される場合や、アライメント パディングが使用される場合など)。これにより、特定のプロセスのメモリ要件が増加し、プロセッサ キャッシュの効率的な使用に影響が出る可能性があります。部分的な 32 ビット モデルを維持することが、この問題に対処する 1 つの方法であり、一般的にかなり効果的です。たとえば、z/OS オペレーティング システムではこのアプローチを採用しており、プログラム コードは 31 ビットのアドレス空間に配置する必要があります (上位ビットは、基盤となるハードウェア プラットフォームでのアドレス計算には使用されません)。一方、データ オブジェクトはオプションで 64 ビット領域に配置できます。このようなアプリケーションのすべてが大きなアドレス空間を必要としたり、64 ビットのデータ項目を操作するわけではないため、これらのアプリケーションではこれらの機能のメリットは得られません。
ソフトウェアの可用性 x86 ベースの 64 ビット システムには、32 ビット アーキテクチャ用に作成されたソフトウェアと同等のものが存在しないことがあります。Microsoft Windows で最も深刻な問題は、旧式のハードウェアに対する デバイス ドライバーの 互換性がないことです。ほとんどの 32 ビット アプリケーション ソフトウェアは、IA-64 および AMD64 用のMicrosoft WoW64テクノロジなど、 エミュレーション モードとも呼ばれる互換モード で、64 ビット オペレーティング システムで実行できます。64 ビットの Windows ネイティブ モード[ 42 ] ドライバー環境は、64 ビットのNTDLL.DLL 上で実行されますが、これは 32 ビット Win32 サブシステム コード (多くの場合、実際のハードウェア機能が Winprinter のようにユーザー モード ソフトウェアでエミュレートされているデバイス) を呼び出すことができません。ほとんどのデバイスの 64 ビット ドライバーは 2007 年初頭 (Vista x64) まで入手できなかったため、64 ビット版の Windows を使用することは困難だと考えられていました。しかし、メモリ価格の低下と 4 GB を超える RAM の使用の増加により、その後 64 ビット コンピューティングへの傾向が強まりました。ほとんどの製造元が新しいデバイスに対して 32 ビット ドライバーと 64 ビット ドライバーの両方を提供するようになったため、64 ビット ドライバーが利用できないことは問題ではなくなりました。多くの古いデバイスには 64 ビット ドライバーが提供されていなかったため、結果として 64 ビット システムで使用できませんでした。
オープンソースドライバでは、32ビット版を64ビット版用に修正できるため、ドライバの互換性の問題は比較的少なかった。一方、2007年初頭以前に製造されたハードウェアのサポートは、オープンソースプラットフォームのユーザー数が比較的少なかったため、問題となっていた。
64ビット版のWindowsでは16ビットソフトウェアは 動作しません。ただし、ほとんどの32ビットアプリケーションは問題なく動作します。64ビットユーザーは、 16ビットアプリケーションを実行するために16ビットまたは32ビットオペレーティングシステムの仮想マシンをインストールするか、 NTVDM の代替手段のいずれかを使用する必要があります。[ 43 ]
Mac OS X 10.4 "Tiger" とMac 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 "Lion" はより多くの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 Catalina (10.15) でAppleによって削除されました。
Linux をはじめとするほとんどのUnix系 オペレーティングシステム、そしてそれらのC およびC++ ツールチェーンは 、長年にわたり64ビットプロセッサをサポートしてきました。これらのプラットフォーム向けのアプリケーションやライブラリの多くは、CおよびC++で書かれたオープンソースソフトウェア であるため、64ビット対応であれば64ビット版にコンパイルできます。頻繁なリリースを重視したこのソースベースの配布モデルにより、これらのオペレーティングシステム向けのアプリケーションソフトウェアの入手性はそれほど問題になりません。
64ビットデータモデル 32ビットプログラムでは、ポインタ と整数などのデータ型は一般的に同じ長さを持ちます。これは64ビットマシンでは必ずしも当てはまりません。[ 44 ] [ 45 ] [ 46 ] そのため、 C言語やその派生言語である C++ 、Objective-C などのプログラミング言語では、異なるデータ型を混在させることは32ビット実装では可能ですが、64ビット実装では不可能です。
64 ビット マシン上の C および C 派生言語の多くのプログラミング環境では、int変数は 32 ビット幅のままですが、長整数とポインタは 64 ビット幅です。これらは、"Long, Pointer, 64" の略であるLP64 データ モデルを持つと言われています。 [ 47 ] [ 48 ] 他のモデルとしては、3 つのデータ型すべてが 64 ビット幅のILP64データ モデル、 [ 49 ] [ 48 ] や、短 整数も 64 ビット幅のSILP64 モデルなどがあります。 [ 50 ] [ 51 ] ただし、ほとんどの場合、必要な変更は比較的小さくて簡単なため、よく書かれたプログラムの多くは、変更を加えることなく新しい環境用に再コンパイルするだけで済みます。別の選択肢として、 と を両方とも32 ビットのままにしておくことで、32 ビット コードとの互換性を維持するLLP64 モデルがあります。[ 52 ] [ 48 ] LLは long long整数 型を指し、32ビット環境を含むすべてのプラットフォームで少なくとも64ビットです。 intlong
64ビットプロセッサを搭載したシステムの中には、64ビットのlong long整数を追加したILP32 データモデルを使用しているものもあり、これは32ビットプロセッサを搭載した多くのプラットフォームでも使用されています。このモデルは、アドレス空間を大幅に小さくする代わりに、コードサイズとポインタを含むデータ構造のサイズを削減するため、一部の組み込みシステムには適しています。x86やARMなどの命令セットでは、64ビット版の命令セットの方が32ビット版よりもレジスタの数が多いため、このモデルによって空間のペナルティなしで追加のレジスタにアクセスできます。これは64ビットRISCマシンでは一般的で、x86ではx32 ABIとして検討されており、最近では Apple Watch Series 4 と5で使用されています。[ 53 ] [ 54 ]
現在、多くの64ビットプラットフォーム(Solaris、AIX 、HP-UX 、Linux、macOS、BSD、IBM z/OSなど)はLP64モデルを使用しています。Microsoft Windowsは LLP64 モデルを使用しています。LP64モデルの欠点は、aをanに格納すると切り捨てられることです。一方、ポインタをanに変換することはLP64では「正常に」動作します。LLP64モデルでは、その逆の動作となります。これらは標準に完全に準拠したコードには影響しませんが、コードはデータ型の幅について暗黙的な仮定に基づいて記述されることがよくあります。Cコードでは、ポインタを整数オブジェクトにキャストする際には、 ()ではなく( )を使用することをお勧めします。 longintlonguintptr_tlong
プログラミングモデルは特定のコンパイラに合わせて選択されるものであり、同じOS上で複数のプログラミングモデルが共存可能です。ただし、通常はOSのアプリケーションプログラミングインターフェース (API)の主要モデルとして選択されたプログラミングモデルが優先されます。
もう 1 つの考慮事項は、デバイス ドライバー に使用されるデータ モデルです。最近のほとんどのオペレーティング システムでは、ドライバーがオペレーティング システム コードの大部分を占めています (ただし、オペレーティング システムの実行時にはドライバーの多くは読み込まれない可能性があります)。多くのドライバーは、データの操作にポインターを多用し、場合によっては直接メモリ アクセス (DMA) をサポートするハードウェアに特定のサイズのポインターを読み込む必要があります。たとえば、32 ビット PCI デバイスのドライバーが、64 ビット マシンのメモリの上位領域にデータを DMA 送信するようにデバイスに要求した場合、オペレーティング システムからの、デバイスから 4 GB 境界を超えるメモリにデータを読み込む要求を満たすことができません。これは、それらのアドレスのポインターがデバイスの DMA レジスタに適合しないためです。この問題は、OS がデバイスのメモリ制限を考慮してドライバーに DMA 要求を生成するか、入出力メモリ管理ユニット (IOMMU) を使用することで解決されます。
現在の64ビットアーキテクチャ 2023 年 8 月現在、プロセッサが製造されている 64 ビット アーキテクチャは次のとおりです。
同じアーキテクチャの32ビット版から派生した64ビットアーキテクチャのほとんどは、32ビット版用に記述されたコードをネイティブに実行でき、パフォーマンスの低下はありません。例えば、x86-64プロセッサはIA-32 アプリケーションをフルスピードで実行できます。[ 55 ] このようなサポートは、一般的にバイアーキテクチャサポート、 またはより一般的にはマルチアーキテクチャサポート と呼ばれます。
参照
注記
参考文献 ^ Pentiumプロセッサ ユーザーズマニュアル 第1巻:Pentiumプロセッサ データブック (PDF) . Intel . 1993年。^ 「Cray-1コンピュータシステムハードウェアリファレンスマニュアル」 (PDF) . Cray Research . 1977 . 2013年 10月8日 閲覧 。 ^ グライムス、ジャック、レス・コーン、バラドワジ、ラジーブ (1989年7~8月). 「Intel i860 64ビットプロセッサ:3Dグラフィックス機能を備えた汎用CPU」 . IEEE Computer Graphics and Applications . 9 (4): 85– 94. Bibcode : 1989ICGA....9d..85G . doi : 10.1109/38.31467 . S2CID 38831149. 2010年11月19日 閲覧 。 ^ 「i860 プロセッサ ファミリ プログラマーズ リファレンス マニュアル」 (PDF) . Intel . 1991 . 2019年 9月12日 閲覧 。 ^ 「NEC、高コストパフォーマンスの64ビットRISCマイクロプロセッサ2機種を発表」 (プレスリリース)。NEC 。1998年1月20日。 2011年1月9日 閲覧 。VR4300 プロセッサ の各バージョンは、人気のNintendo 64™ビデオゲームや、最近発表され数々の賞を受賞したHewlett-Packard LaserJet 4000プリンタファミリなどの高度なレーザープリンタを含む、コンシューマおよびオフィスオートメーションアプリケーションで広く使用されています。 ^ MIPS R5000マイクロプロセッサの技術的背景 (PDF) 、MIPS Technologies, Inc 、 2024年8月19日 取得 ^ 「DDR5 | DRAM」 . Samsung Semiconductor Global . 2025年1月19日 閲覧。 ^ "i860 64ビットマイクロプロセッサ" . Intel. 1989年. 2011年3月19日時点の オリジナルよりアーカイブ。 2010年 11月30日 閲覧 。 ^ “アタリ・ジャガーの歴史” . アタリアゲ 。 ^ Joe Heinrich (1994). MIPS R4000 マイクロプロセッサ ユーザーズマニュアル (第2版). MIPS Technologies, Inc. ^ Richard L. Sites (1992). 「Alpha AXPアーキテクチャ」. Digital Technical Journal . 4 (4). Digital Equipment Corporation. ^ Gwennap, Linley (1994年10月3日). 「UltraSparcがSPARCのパフォーマンスを解き放つ」. マイクロプロセッサレポート . 8 (13). MicroDesign Resources. ^ Bishop, JW; et al. (1996年7月). 「PowerPC AS A10 64ビットRISCマイクロプロセッサ」. IBM Journal of Research and Development . 40 (4). IBM Corporation: 495–505 . doi : 10.1147/rd.404.0495 . ^ Gwennap, Linley (1994年11月14日). 「PA-8000は複雑さとスピードを兼ね備えている」. マイクロプロセッサレポート . 8 (15). MicroDesign Resources. ^ FP O'Connell; SW White (2000年11月). 「POWER3: 次世代PowerPCプロセッサ」. IBM Journal of Research and Development . 44 (6). IBM Corporation: 873–884 . doi : 10.1147/rd.446.0873 . ^ 「VIA、次世代Isaiahプロセッサコアの詳細を発表」 (プレスリリース)VIA Technologies, Inc. 2007年10月11日時点の オリジナルよりアーカイブ。 2007年7月18日 閲覧 。 ^ 「ARMv8 テクノロジープレビュー」 (PDF) 2011年10月31日. 2011年11月11日時点の オリジナル (PDF) からアーカイブ。 2012年 11月15日 閲覧 。 ^ 「ARM、世界で最もエネルギー効率の高い64ビットプロセッサ、Cortex-A50シリーズを発表」 (プレスリリース)。ARM ホールディングス。 2012年10月31日 閲覧 。 ^ 「ARM基調講演:ARM Cortex-A53およびARM Cortex-A57 64ビットARMv8プロセッサを発表」 ARMdevices.net 2012 年10月31日。 ^ Asanović, Krste ; Patterson, David A. (2014年8月6日). 命令セットは無料であるべき:RISC-Vの事例 (PDF) . カリフォルニア大学バークレー校 EECS 学科. UCB/EECS-2014-146. ^ 「Synopsys、新しい64ビットARCプロセッサIPを発表」 。 2022年3月31日時点のオリジナルより アーカイブ。 ^ Stefan Berka. 「Unicos オペレーティングシステム」 . www.operating-system.org. 2010年11月26日時点のオリジナルより アーカイブ。 2010年11月19日 閲覧 。 ^ Jon "maddog" Hall (2000年6月1日). 「私の人生とフリーソフトウェア」 . Linux Journal . ^ Andi Kleen. Linuxのx86-64への移植 (PDF) . Ottawa Linux Symposium 2001. 現状: カーネル、コンパイラ、ツールチェーンは動作しています。カーネルは起動し、シミュレータ上で動作し、ユーザーランドと実行プログラムの移植に使用されています。 ^ a b John Siracusa (2009年9月). 「Mac OS X 10.6 Snow Leopard: the Ars Technica review」 . Ars Technica . p. 5. 2009年10月9日時点のオリジナルより アーカイブ。 2009年9月6日 閲覧 。 ^ Joris Evers (2005年1月5日). 「Microsoft、Itanium版Windows XPを廃止」 Computerworld. 2013年6月18日時点の オリジナルよりアーカイブ。 2017年 10月17日 閲覧 。 ^ 「Microsoft、Windows Server 2003およびWindows XP Professionalの64ビット版の提供開始により速度制限を引き上げる」 (プレスリリース)。Microsoft。2005年4月25日。 2015年 9月10日 閲覧 。 ^ 「Steamハードウェア調査」 . Valve Software. 2010年12月4日. 2010年12月4日時点の オリジナル よりアーカイブ。 ^ 「Windows 7 64ビット版が最も使用されているOS」 。Bit-Tech。2010年8月4日。 ^ 「Dell BizClient プラットフォーム上の UEFI」 (PDF) 。 ^ 「AMD64プログラマーズ・マニュアル 第2巻:システムプログラミング」 Advanced Micro Devices. 2025年6月. p. 127. ^ 「Intel 64 および IA-32 アーキテクチャ ソフトウェア開発者マニュアル 第 3A 巻: システム プログラミング ガイド、パート 1」 (PDF) 。Intel。2016 年 9 月。p. 4-2。 ^ 「Power ISA バージョン3.0」 IBM 2015 年11月30日、p.983。 ^ 「Oracle SPARC Architecture 2015 Draft D1.0.9」 (PDF) . Oracle . 2016年11月16日. p. 475. 2020年4月22日時点の オリジナル (PDF)からのアーカイブ。 ^ 「AプロファイルアーキテクチャのARMアーキテクチャリファレンスマニュアル」 。2024年11月30日。セクションD8.1.6「実装された物理アドレスサイズ」、セクションD8.1.8「サポートされている仮想アドレス範囲」。 ^ Mashey, John (2006年10月). 「64ビットへの長い道のり」 . ACM Queue . 4 (8): 85– 94. doi : 10.1145/1165754.1165766 . ^ 「Windows 7: 64ビット vs 32ビット?」 W7フォーラム。2009年4月2日。2009年4月5日 時点のオリジナルより アーカイブ。 2009 年4月5日閲覧 。 ^ 「Java HotSpot VMに関するよくある質問」 . Oracle . 2024年12月13日 閲覧 。 ^ 「32ビット版Windows Vistaと64ビット版Windows Vistaの違いについての説明」 。 2011年10月15日時点の オリジナル よりアーカイブ。 2011年10月14日 閲覧 。 ^ Mark Russinovich (2008年7月21日). 「Windowsの限界に挑戦:物理メモリ」 . 2017年4月7日時点の オリジナル よりアーカイブ 。 2017年3月9日 閲覧。 ^ Chappell, Geoff (2009年1月27日). 「32ビットWindows Vistaのライセンスメモリ」 . geoffchappell.com . WP:SPS . 2017年 3月9日 閲覧 。 ^ 「ネイティブアプリケーションの内部」 Technet.microsoft.com、2006年11月1日。 2010年10月23日時点のオリジナルより アーカイブ 。 2010年11月19日 閲覧。 ^ リンカーン・スペクター (2013年8月12日). 「新しいPCで古いプログラムを実行する」 . ^ Peter Seebach (2006). 「POWER5での64ビット開発の探究:コードの移植性は実際どの程度か? 」 IBM . ^ ヘンリー・スペンサー。 「Cプログラマーのための十戒」 。 ^ 「The Story of Thud and Blunder」 . Datacenterworks.com . 2010年11月19日 閲覧。 ^ 「ILP32 および LP64 データ モデルとデータ型のサイズ」 。z /OS XL C/C++ プログラミング ガイド 。 ^ a b c 「64ビットプログラミングモデル」 。 2020年6月5日 閲覧 。 ^ 「ILP64インターフェースとLP64インターフェースの使用」 Intel 2025 年 12月19日 閲覧 。 ^ a b 「Cray C/C++リファレンスマニュアル」 . 1998年8月. 表9-1. Cray Researchシステムのデータ型マッピング. 2013年10月16日時点の オリジナルよりアーカイブ 。 2013年 10月15日 閲覧。 ^ a b 「Cray CおよびC++リファレンスマニュアル(8.7)S-2179」 。 2020年 6月24日 閲覧 。 ^ 「抽象データモデル - Windowsアプリケーション」 。2018年5月30日。 ^ 「ILP32 for AArch64 ホワイトペーパー」 ARM Limited、2015年6月9日。 2018年12月30日時点の オリジナルよりアーカイブ 。 2018年 10月9日 閲覧。 ^ 「2018年のAppleデバイス」 。woachk、セキュリティ研究者。2018年10月6日。 ^ stevewhims. 「ゲーム開発者のための64ビットプログラミング - Win32アプリ」 . learn.microsoft.com . 2025年10月22日 閲覧 。
外部リンク