10


6

私たち全員が64ビットと32ビットという用語を投げかけてきたと確信していますが、実際にはどういう意味ですか?

私は彼らがメモリアドレスのサイズと関係があると確信しています。 64ビットマシンでは、オブジェクトへの参照は64ビットです。 しかし、もう少し深く掘り下げたいと思います。

  1. 「64ビットマシン」というフレーズがよく聞こえます。コンピュータのどの部分が実際にビット数に対応していますか? プロセッサ? オペレーティング・システム?

  2. 大きなメモリアドレスを持つことの利点は何ですか?

質問を追加することもできますが、簡単なほうが良いと思います。

みんなありがとう:D

7 Answer


17


64ビットは、レジスタの幅、メモリアドレス空間などを表します。 1つの利点は、4GBを超えるメモリをアドレス指定できることです。

ウィキペディアには、 64ビットコンピューティングに関する記事があります。

編集:より多くのメモリに対する*利点*は、オペレーティングシステムとプログラムがより多くの仮想アドレス空間(16エクサバイト(172億GB))を持つこと、そしてさらに重要なことに、より多くの物理メモリをシステムに追加してアドレス指定できることです。ディスクとの間の仮想メモリの交換が少なくなります。

幅の広いレジスタとデータバスの利点は、同じ量のデータを簡単に移動できることです。 2つ以上のレジスタを必要とする操作を1つで実行できるようになりました。

そのため、ソフトウェアが64ビット用に再コンパイルされると、通常パフォーマンスが向上します。

*デメリット*は、データが広くなると、同じデータが使用するスペースが増えることを意味します。 たとえば、300という数値を格納するには9ビットが必要です。 32ビット整数に格納されている場合、23ビットが無駄になります。 64ビットでは、その無駄は55ビットになります。 そのため、ツールを変更しなくても、64ビットへの単純な再コンパイルによって、高速ではあるがわずかに肥大化したソフトウェアが生成される可能性があります。

編集:* 64ビットのテクノロジページもあります*。


6


違いは正確に32ビットです;-)

64ビットOSを実行するには64ビットハードウェア(プロセッサ)が必要です。 64ビットソフトウェアを実行するには64ビットOSが必要です。 これが依存関係です。

  • 32ビットシステムでは、4ギガバイト(2 ^ 32)メモリのアドレス指定に制限されています。64ビットでは、2 ^ 64バイトの理論上の制限があります。

  • 64ビットソフトウェアは、主にポインタが4ではなく8バイトであるため、わずかに多くのメモリを必要とします。

  • x86_64では、64ビットの実行可能ファイルは、多くの命令にオペコードが追加されているため、より多くのメモリが必要となり、実行速度が遅くなる可能性があります。

  • x86_64では、64ビットソフトウェアはより多くのレジスタを使用でき、より高速に動作する可能性があります。


3


  • 64ビットシステムは、かなり多くのメモリを直接アドレス指定できます。

  • 64ビットシステムでは、32ビットの2倍のサイズのデータ​​をまとめて処理できます。

オフィスオートメーションスイートのようないくつかのプログラムでは、32ビット対64ビットはほとんど目に見える違いを生じません。

しかし、データベース、グラフィック/ビデオ処理、ホスティング仮想マシンなどの他のアプリケーションでは、一度に多くの物理メモリにアクセスでき、各命令でより多くの情報を処理できるということは、パフォーマンスに大きな違いをもたらします。

今日では、多くの32ビットチップが64ビット拡張機能を持っています。 FPU(数学)や SSMD(ベクトル)演算はすでに64ビットモードで行われます。

http://www.infopackets.com/news/hardware/2006/20060824_32_bit_vs_64_bit_systems_whats_the_difference.htm[32-bit Vs]を参照してください。 64ビットシステム:違いは何ですか。


2


  1. CPUレジスタとメモリアドレス指定

  2. システムはもっと多くのメモリを参照(参照)できます。


2


基本に戻りましょう。

最近のコンピュータの99%は、 フォンノイマンアーキテクチャと呼ばれるものに基づいています。 基本的に、コンピュータは次のような一定のサイクルにあります。

  1. RAMからコマンドを取得する

  2. CPU上でコマンドを実行する

    http://upload.wikimedia.org/wikipedia/commons/1/1c/Von_Neumann_architecture.png[alt text http://upload.wikimedia.org/wikipedia/commons/1/1c/Von_Neumann_architecture.png]

32/64ビットシステム(または他の任意のビットサイズ)を参照するとき、基本的にあなたはコンピュータのアーキテクチャと実装について話している:

  • メモリ容量(RAM)

  • CPUレジスタのサイズ

  • バスサイズ CPU、RAM、I / Oなどの間

64ビットシステムの場合、アドレス空間は2 ^ 64です。 これが、32ビットシステムが4GBを超えるRAMを持つことができない理由です。 どうしたら `2 ^ 32`より大きいメモリ空間をアドレス指定できますか

パフォーマンスの違いに関しては、明確な答えはありません(CISCまたはRISCアーキテクチャが優れている場合は明確な答えがないのと同じです)。 使用しているアプリケーションによって大きく異なります。

要約すると、64ビットアーキテクチャは、コンピュータを構築するための単なる異なる方法です。 それはそれがより良い、より悪い、あるいは違うことをするという意味ではありません(低レベルでは、すべてのコンピュータがフェッチ実行をしています)。 それは単に*コンピュータを実装する別の方法*です。


2


一番良い答えはx86 bit x64アセンブラでの比較だろうと私は思う

あなたのx32ビットプログラムが変数、例えば整数(5)を登録するとき、コードはこれと同等です:

5を押す

理解を深めるために、 'push X’は次のショートカットです。

sub esp、4 //変数mov [esp]のスペースを作るために、espを4で減算します(4 * 8 = 32ビット。これはx32実行可能ファイルのポインタサイズです)、X //は@espで変数を移動します

これらのレジスタは32ビット(4バイト長)であり、これは32ビットプログラミング言語におけるポインタのサイズです。

64ビットコードでは、サイズは2倍大きくなり、レジスタも増えます。レジスタESPはx64実行可能ファイルに存在しますが、x32実行可能ファイルのように広く使用されているわけではありません。

代わりに、すべての登録者が名前の前に「R」を付けます(EAXはRAXになり、ESPはRSPになり、EDXはRDXになる、など)。

x64実行可能ファイルのコードは、「push X」のショートカットが異なることを除けば、それほど変わりません。

sub esp、8 mov [rsp]、X

RSPはESPの2倍のサイズ、つまり64ビット、8バイトです。

つまり、x 64ビットの実行可能ファイルはx 32ビットの実行可能ファイルよりも多くのメモリを使用します。


-3


正確には64ビットまたは32ビットはメインバスの幅だけを参照します。