32

私はプログラミングが初めてで、CS 以外のバックグラウンドを持っています (正式な学位はありません)。私は主に C# を使用して winforms をプログラミングしています。

私は32ビットと64ビットについて混乱しています...つまり、32ビットOS、32ビットプロセッサ、およびプログラムが最大メモリを持つことができるベースについて聞いたことがあります。プログラムの速度にどのように影響するか。頭に浮かび続ける多くの質問があります。

Computer Organization と Architecture の本を読んでみました。しかし、そこに書かれていることを理解するには私が愚かすぎるか、ライターは読者が CS のバックグラウンドを持っていると想定しています。

誰かがこれらのことを平易で簡単な英語で説明してくれるか、それを行う何かを教えてくれませんか.

編集: 32 ビット モードでは、最大 4GB のメモリにアクセスできます。64 ビット モードでは、はるかに多くのアクセスが可能になります。

BOUNTY : 以下の回答は本当に良いです....特にMartinによるものです。しかし、私は徹底的な説明を見ていますが、平易な簡単な英語です。

4

15 に答える 15

42

それは本当にすべてワイヤーに帰着します。

デジタル回路では、ある要素 (CPU) から別の要素 (メモリ チップ) に送信できるのは、0 と 1 (通常は低電圧と高電圧) のみです。ワイヤが 1 つしかない場合、1 クロック サイクルごとに 1 または 0 のいずれかをワイヤでしか送信できません。これは、2 バイトしかアドレス指定できないことを意味します (バイト アドレス指定と、速度のためにアドレス全体が 1 サイクルで送信されると仮定します!)。

2 本のワイヤがある場合、4 バイトをアドレス指定できます。(0, 0)、(0, 1)、(1, 0)、または (1, 1) を 2 本のワイヤで送信できるためです。つまり、基本的には 2 のワイヤ数乗です。

したがって、ワイヤが 32 本ある場合は 4 GB をアドレス指定でき、ワイヤが 64 本ある場合はさらに多くのアドレスを指定できます。

ワイヤが許容するよりも大きなアドレス空間に対処するためにエンジニアが実行できる方法は他にもあります。たとえば、アドレスを 2 つの部分に分割し、最初のサイクルで半分を送信し、次のサイクルで後半を送信します。ただし、これはメモリ インターフェイスが半分の速度になることを意味します。

私のコメントをここに編集しました (未編集) ;) そして、何か興味深いものを追加したい人がいれば wiki にします。

他のコメントが述べたように、2^32 (2 の 32 乗) = 4294967296、つまり 4 GB です。2^64 は 18,446,744,073,709,551,616 です。さらに掘り下げると (おそらく Hennesey & Patterson でこれを読んでいると思います)、プロセッサには、計算結果を格納するための「スクラッチ スペース」として使用するレジスタが含まれています。CPU は単純な算術演算を行う方法と、データを移動する方法を知っているだけです。当然、これらのレジスタのサイズは、アーキテクチャの「# ビット」と同じビット幅であるため、32 ビット CPU のレジスタは 32 ビット幅になり、64 ビット CPU のレジスタは 64 ビットになります。幅。

浮動小数点 (倍精度を処理するため) またはその他の SIMD 命令 (単一命令、複数データ コマンド) に関しては例外があります。CPU は、メイン メモリ (RAM) との間でデータの読み込みと保存を行います。CPU もこれらのレジスタを使用してメモリ アドレス (物理および仮想) を計算するため、CPU がアドレス指定できるメモリの量はレジスタの幅と同じになります。特別な拡張レジスタを使用してアドレス計算を処理する CPU もいくつかありますが、エンジニアがそれが必要であることに気付いた後に追加されたものを「考えた後」と呼んでいます。

現時点では、実際の物理メモリのアドレス指定には 64 ビットが非常に多くなります。ほとんどの 64 ビット CPU では、実用性のために、CPU をメモリに配線する際にかなりの数の配線が省略されます。貴重なマザーボードのスペースを使い切って、常に 0 のワイヤを配線するのは意味がありません。言うまでもなく、今日の DIMM 密度で最大量の RAM を使用するには、40 億個の Dimm スロットが必要になります:)

メモリ量の増加以外に、64 ビット プロセッサは 2^32 より大きい整数の計算を高速化します。以前のプログラマー (またはプログラマーによってもプログラムされるコンパイラー;) は、2 つの 32 ビット レジスタを使用し、オーバーフロー状況を処理することによって、64 ビット レジスタを持つことをシミュレートする必要がありました。しかし、64 ビット CPU では、CPU 自体によって処理されます。

欠点は、必要な回路量が (およそ) 2 倍になるだけで、64 ビット CPU (すべてが等しい) は 32 ビット CPU よりも多くの電力を消費することです。ただし、実際には、同等の比較はできません。新しい CPU は、電力リークが少ない新しいシリコン プロセスで製造され、同じダイ サイズにより多くの回路を詰め込むことができるなどの理由からです。ただし、64 ビット アーキテクチャでは 2 倍の電力が消費されます。メモリー。x86 の可変命令長はかつて「醜い」と考えられていましたが、実際には、固定命令サイズを使用するアーキテクチャと比較して利点となっています。

于 2009-08-16T09:36:16.020 に答える
42

人間とコンピューターを比較して、この質問に答えてみましょう。うまくいけば、これはあなたのためにいくつかの光を当てるでしょう:

注意事項

  • 驚くべきことですが、コンピューターは非常に愚かです。

メモリー

  • 人々は記憶を持っています (おそらく、夫と政治家は例外です)。人々は、後で使用するために情報を記憶に保存します。
    • 質問 (たとえば、「あなたの電話番号は何ですか?」) で、人は情報を取得して回答を与えることができます (たとえば、「867-5309」)。
  • 現代のすべてのコンピュータにはメモリがあり、後で使用するためにメモリに情報を保存します。
    • コンピュータは頭が悪いので、非常に具体的な質問をして情報を取得することしかできません。「あなたの記憶 のXの値は何ですか?」
      • 上記の質問では、Xアドレスと呼ばれ、ポインターとも呼ばれます。

つまり、人間とコンピューターには根本的な違いがあります。記憶から情報を呼び出すには、コンピューターにアドレスを指定する必要がありますが、人間はアドレスを指定しません。(ある意味では、「あなたの電話番号」は「あなたの誕生日」とは異なる情報を提供するため、住所であると言えますが、それは別の会話です.)

数字

  • 人々は10 進数法を使用します。つまり、10 進数の各桁は、0、1、2、3、4、5、6、7、8、または 9 のいずれかになります。1 桁につき10 個の選択肢があります。
  • 最新のコンピュータはすべて、2 進数システムを使用しています。つまり、2 進数のすべての桁について、その桁は 1 または 0 のいずれかしかありません。コンピュータには、桁ごとに2 つのオプションがあります。
    • コンピュータ用語では、単一の 2 進数は a bitと呼ばれ、 b inary dig itの略です。

住所

  • コンピュータのすべてのアドレスは 2 進数です。
  • コンピュータ内のすべてのアドレスには、最大桁数 (またはビット数) があります。これは主に、コンピューターのハードウェアに柔軟性がなく (固定とも呼ばれます)、アドレスが非常に長くなるということを事前に知る必要があるためです。
  • 「32 ビット」や「64 ビット」などの用語は、コンピュータが情報を保存および取得できる最長のアドレスを表しています。この意味での英語の「32 ビット」は、「このコンピューターは、メモリに関する命令が 32 バイナリ桁以下の長さのアドレスを持つことを期待している」ことを意味します。
    • ご想像のとおり、コンピュータが処理できるビット数が多いほど、検索できるアドレスが長くなるため、一度に管理できるメモリが増えます。

32 ビットと 64 ビットのアドレッシング

  • 柔軟性のない (固定の) 桁数 (例: 10 進数 2 桁) の場合、表現できる数字は範囲と呼ばれます(例: 00 から 99、または 100 個の一意の数字)。10 進数を追加すると、範囲が 10 倍になります (たとえば、10 進数 3 桁 -> 000 から 999、または 1000 個の一意の数字)。
  • これはコンピューターにも当てはまりますが、コンピューターは 10 進マシンではなく 2 進マシンであるため、2数( bit )を追加しても範囲は2倍にしか増加しません。

    アドレス範囲:
    • 1 ビット アドレス指定では、2 つの一意のアドレス (0 と 1) について話すことができます。
    • 2 ビットのアドレス指定では、4 つの一意のアドレス (00、01、10、および 11) について話すことができます。
    • 3 ビット アドレス指定では、8 つの一意のアドレス (000、001、010、011、100、101、110、および 111) について話すことができます。
    • そしてしばらくすると... 32 ビットのアドレッシングでは、4,294,967,296 個の一意のアドレスについて話すことができます。
    • さらにしばらくすると... 64 ビット アドレス指定では、18,446,744,073,709,551,616 の一意のアドレスについて話すことができますそれはたくさんの思い出です!

含意

つまり、64 ビット コンピューターは32 ビット コンピューターよりもはるかに多くの情報を格納および取得できます。Web の閲覧、電子メールのチェック、ソリティアのプレイなどはすべて 32 ビット アドレッシングの範囲内で快適に動作するため、ほとんどのユーザーにとってこれはあまり意味がありません。64 ビットのメリットが実際に発揮されるのは、大量のデータがあり、コンピューターが処理しなければならない領域です。デジタル信号処理、ギガピクセル写真、高度な 3D ゲームはすべて、64 ビット環境で大量のデータ処理が大幅に向上する分野です。

于 2009-08-19T23:51:12.097 に答える
32

最新のプロセッサの多くは、32 ビット モードと 64 ビット モードの 2 つのモードで実行できます。32 ビット モードでは、最大 4GB のメモリにアクセスできます。64 ビット モードでは、さらに多くの機能にアクセスできます。古いプロセッサは 32 ビット モードのみをサポートします。

オペレーティング システムは、これらのモードのいずれかでプロセッサを使用することを選択しました。インストール時に、プロセッサを 32 ビット モードで動作させるか、64 ビット モードで動作させるかを選択します。プロセッサは 64 ビット モードで動作し続けることができますが、32 ビットから 64 ビットに切り替えるには、システムの再インストールが必要になります。古いシステムは 32 ビット モードのみをサポートします。

アプリケーションは、32 ビットまたは 64 ビット モードで作成 (またはコンパイル) することもできます。ここでの互換性はより複雑です。プロセッサが 64 ビット モードで実行されている場合でも、エミュレーション機能として 32 ビット アプリケーションをサポートできるからです。したがって、64 ビット オペレーティング システムでは、32 ビット アプリケーションまたは 64 ビット アプリケーションのいずれかを実行できます。32 ビット オペレーティング システムでは、32 ビット アプリケーションのみを実行できます。

繰り返しますが、サイズの選択は、主にアクセスするメイン メモリの量の問題です。32 ビット アプリケーションは、多くのシステムで 2GB に制限されることがよくあります。これは、システムがそれ自体にいくらかのアドレス空間を必要とするためです。

パフォーマンス (速度) の観点からは、大きな違いはありません。64 ビット アプリケーションは 64 ビット ポインターを使用するため、少し遅くなる可能性があります。そのため、特定の操作に対してより多くのメモリ アクセスが必要になります。同時に、64 ビット整数演算を 1 つの命令として実行できるのに対し、32 ビット プロセッサは複数の命令でそれらをエミュレートする必要があるため、少し高速になる可能性もあります。ただし、これらの 64 ビット整数演算はかなり一般的ではありません。

AMD64 および Intel64 プロセッサでは、このエミュレーション モードはほとんどがハードウェアで行われるため、32 ビット アプリケーションを実行しても実際のパフォーマンスが低下することはありません。ネイティブに。これは、32 ビット (x86) アプリケーションのエミュレートが非常に不十分な Itanium では大きく異なります。

于 2009-08-16T08:52:12.943 に答える
18

人里離れた小さな町、ビンビルの話をしましょう。ビンビルには 1 本の道路がありました。ビンビルに出入りするすべての人は、この道路を車で行かなければなりませんでした。しかし、町に近づくと分岐点がありました。左に行くことも、右に行くこともできます。

実際、家に通じる道を除いて、すべての道には分岐点がありました。それらの道は単に家で終わりました。どの道にも名前がありませんでした。ビンビル計画委員会によって作成された巧妙なアドレス指定スキームのおかげで、名前は必要ありませんでした。これは、道路と家を示すビンビルの地図です。

              ------- []  00
             /
       ------
      /      \
     /        ------- []  01
-----
     \        ------- []  10
      \      /
       ------
             \
              ------- []  11

ご覧のとおり、各家には 2 桁の住所があります。その住所だけで、a) 各家屋を一意に識別し (重複はありません)、b) そこへの行き方を教えてくれます。街中を移動するのは簡単です。各フォークにはゼロまたは 1 のラベルが付けられており、計画委員会はこれをビンビル交差点トレーサー、または略してビットと呼んでいます。最初の分岐に近づいたら、アドレスの最初のビットを見てください。ゼロの場合は左に移動します。1 の場合は、右に移動します。次に、2 番目の分岐点に到達したら、2 番目の数字を見て、必要に応じて左または右に移動します。

Binville に住んでいる友達に会いに行きたいとしましょう。彼女は 10 番の家に住んでいると言っています。Binville の最初の分岐点に着いたら、右に進みます (1)。2 つ目の分岐点を左 (0) に進みます。あなたがそこにいます!

ビンビルは数年間このように存在していましたが、その牧歌的な環境、優れた公園システム、寛大なヘルスケアについての噂が広まり始めました。(結局のところ、道路標識にお金をかけなくても、もっと良いことに使えます。)しかし、問題がありました。わずか 2 ビットで、アドレッシング スキームは 4 つのハウスに限定されていました。

そこで、計画委員会は考えをまとめて計画を立てました。各住所に少しずつ追加して、家屋の数を 2 倍にするというものでした。計画を実行するために、彼らは町のはずれに新しい分岐点を建設し、全員が新しい住所を取得するようにしました。これが新しい地図で、町に通じる新しい分岐点とビンビルの新しい部分を示しています。

                     ------- []  000
                    /
              ------
             /      \
            /        ------- []  001
       -----                            Old Binville
      /     \        ------- []  010
     /       \      /
    /         ------
   /                \
  /                  ------- []  011
--
  \                  -------     100
   \                /
    \         ------
     \       /      \
      \     /        ------- []  101
       -----                            New Binville (some homes not built yet)
            \        -------     110
             \      /
              ------
                    \
                     -------     111

Binville の元の部分の全員が、住所の前にゼロを追加しただけであることに気付きましたか? 新しいビットは、作成された新しい交差点を表します。ビット数が 1 つ増えると、アドレス数は 2 倍になります。市民は自分たちの町の最大サイズを常に知っていました。彼らがしなければならなかったのは、ビット数で累乗された 2 の値を計算することだけでした。3 ビットで、2 3 = 8 家を持つことができます。

数年が経ち、ビンビルは再び満員になりました。引っ越しを希望する人が増えたため、(必要な交差点とともに)別のビットが追加され、町のサイズは 16 戸に倍増しました。ビンビルのアドレスはすぐに 16 ビットになり、最大 2 16 (16,384) の家を収容できましたが、それだけでは十分ではありませんでした。人々は次々とやって来ました!

そこで計画委員会は、この問題をきっぱりと解決することを決定しました。つまり、32 ビットまでジャンプするということです。40 億以上の家 (2 32 ) に十分なアドレスがあれば、十分でしょう!

そしてそれは... 約 25 年間、ビンビルはもはや人里離れた小さな町ではありませんでした。今や大都市でした。実際、それは数十億人の住民を抱える国全体と同じくらい大きくなりつつありました. しかし、公園はまだ素晴らしく、誰もが健康管理が行き届いていたので、人口は増え続けました.

増加し続ける人口に直面して、計画委員会は再び頭をまとめ、都市の別の拡張を提案しました。今回は 64 ビットを使用します。現在、ビンビル市の制限内にいくつの家が収まるか知っていますか? そうです: 18,446,744,073,709,551,616. その数は非常に多く、約 20 億個の地球に居住し、すべての人に独自の住所を与えることができます。

64 ビットを使用することは、すべてのアドレッシングの問題に対する万能薬ではありませんでした。アドレスの書き込みには、古い 32 ビット アドレスの 2 倍のスペースが必要です。さらに悪いことに、一部の市民は新しい 64 ビット フォーマットを使用するように住所を更新していませんでした。しかし、それは問題ありませんでした。32 ビットを使用している人々は、ニーズを満たすのに十分な数の都市にアクセスできました。彼らはまだ変化の必要性を感じていませんでした。

64ビットで十分ですか?現時点では誰にもわかりませんが、ビンビルの市民は 128 ビット アドレスの発表を待っています...

于 2009-08-22T03:42:28.253 に答える
3

マーティンの答えは、ほとんど正確で詳細です。

すべてのメモリ制限は、アプリケーションごとの仮想メモリ制限であり、コンピューターの実際の物理メモリの制限ではないことに言及したいと思います。実際、32 ビット システムであっても、1 つのアプリケーションで 4Gb を超えるメモリを扱うことができます。ポインタを使用して一度にすべてにアクセスすることはできないため、より多くの作業が必要になります。リンクテキスト

言及されていないもう 1 つのことは、従来の x86 プロセッサと x86-64 の違いは、ポインタ サイズだけでなく、命令セットにもあるということです。ポインターはより大きく、より多くのメモリを消費しますが (4 ではなく 8 バイト)、より大きなレジスタ セット (8 ではなく 15 の汎用レジスタ、iirc) によって補償されるため、実際には、計算作業を行うコードのパフォーマンスが向上する可能性があります。

于 2009-08-16T09:09:51.840 に答える
2

一般的なコンピュータのメモリは、数十億の正方形を持つ巨大なビンゴカードと考えてください。ボード上の個々の正方形に対処するために、各行と列にB-5、I-12、O-52などのラベルを付けるスキームがあります。

カードに十分な数の正方形がある場合、最終的には文字が不足するため、各正方形を一意にアドレス指定できるようにするには、より多くの文字を再利用し、より大きな数字を書き始める必要があります。

あなたがそれを知る前に、アナウンサーはあなたの100億の正方形のカードにどの正方形をマークするかをあなたに知らせるために迷惑な巨大な数字と文字の組み合わせを吐き出している。BAZC500000、IAAA12000000、OAAAAAA523111221

コンピューターのビット数は、特定の正方形に対応するための文字と数字の複雑さの限界を指定します。

32ビットは、カードが2 ^ 32の正方形よりも大きい場合、値の読み取りまたは指定されたメモリ位置への新しい値の書き込みに必要な特定の正方形を一意に物理的にアドレス指定するのに十分なワイヤとトランジスタがコンピュータにないことを意味します。

64ビットコンピューターは、巨大な2 ^ 64の正方形を個別にアドレス指定できますが、そのためには、各正方形に固有のアドレスがあることを確認するために、各正方形にさらに多くの文字と数字が必要です。これが、64ビットコンピュータがより多くのメモリを必要とする理由です。

アドレス制限のその他の一般的な例は、市内電話番号です。それらは通常7桁の111-2222であるか、番号1,112,222として再フォーマットされます..自分の電話番号を必要とする9,999,999人以上の人がいる場合はどうなりますか?市外局番と国番号を追加すると、電話番号は7桁から10から11になり、より多くのスペースを占有します。

差し迫ったIPv4の不足に精通している場合は、同じ問題が発生します。IPv4アドレスは32ビットです。つまり、可能な一意のIPアドレスは2 ^ 32(〜40億)であり、現在はそれよりもはるかに多くの人がいます。

私が言及したすべてのスキーム(コンピューター、電話番号、IPv4アドレス)にはオーバーヘッドがあり、特定の部分が組織的な目的のために予約されているため、使用可能なスペースがはるかに少なくなります。

64ビットの世界でのパフォーマンスの約束は、一度に4バイトを送信する(ABCD)代わりに、64ビットコンピューターが一度に8バイトを送信できる(ABCDEFGH)ため、アルファベットがメモリの異なる領域間で最大2回転送されることです。 32ビットコンピュータと同じくらい高速です。使用できるメモリが多いほど高速に実行される一部のアプリケーションにも利点があります。

実世界では、intel et alによる64ビットデスクトッププロセッサは実際には真の64ビットプロセッサではなく、いくつかのタイプの操作で32ビットに制限されているため、実世界では32ビットと64ビットのアプリケーション間のパフォーマンス限界です。64ビットモードでは、より多くのハードウェアレジスタを使用できるため、パフォーマンスが向上しますが、「偽の」64ビットプロセッサでより多くのメモリを使用すると、一部の領域でパフォーマンスが低下する可能性があるため、通常は問題が発生します。将来的には、デスクトッププロセッサが完全に64ビットになると、パフォーマンスがさらに向上するでしょう。

于 2009-08-18T23:54:27.737 に答える
2

マーティンの答えは素晴らしいです。いくつかの追加ポイントを追加するだけです... .NETについて言及したので、CLI / JITにはx86とx64の間にいくつかの違いがあり、最適化が異なります(たとえば、テールコール)、高度なのようなものvolatile。これはすべて、コードに影響を与える可能性があります。

さらに、すべてのコードが x64 で機能するわけではありません。DirectX または特定の COM 機能を使用するものはすべて苦労する可能性があります。実際にはパフォーマンス機能ではありませんが、知っておくことは重要です。

(「DirectX」を削除しました-私はそこでゴミを話しているかもしれません...しかし、単純に:依存するものがターゲットプラットフォームで安定していることを確認する必要があります)

于 2009-08-16T08:58:11.807 に答える
1

32ビットモードが4GBのRAMにしかアクセスできない理由を説明するには:

アクセス可能な最大メモリ空間 = 2 nバイト (n はアーキテクチャのワード長)。したがって、32 ビット アーキテクチャでは、アクセス可能な最大メモリ空間は 2 32 = 4294967296 = 4 GB の RAM です。

64 ビット アーキテクチャでは、2 64 = 大量のメモリにアクセスできます。

Tchens のコメントがこれを超えていることに気付きました。とにかく、CS のバックグラウンドがなければ、コンピューターの構成とアーキテクチャの本を理解するのはせいぜい難しいでしょう。

于 2009-08-18T22:48:10.897 に答える
1
  • プロセッサは基数 2 を使用して数値を格納します。基数 2 が選択された理由は、すべての基数の中で "最も単純" であるためです。たとえば、基数 2 の乗算表には 4 つのセルしかありませんが、基数 "10" の乗算表には 100 のセルがあります。
  • 2003 年以前は、一般的な PC プロセッサは「32 ビット対応」のみでした。
    • つまり、プロセッサのネイティブ数値演算は 32 ビット数値用でした。
    • より大きな数の数値演算を行うことはできますが、それらはプロセッサによって実行されるプログラムによって実行される必要があり、32 ビットの場合のようにプロセッサによってサポートされる「プリミティブ アクション」(機械語のコマンド) ではありません。整数(当時)
    • CPU エンジニアは 2 の累乗が好きで、16 ビットでは不十分だったため、32 ビットが選択されました。
  • 16 ビットでは不十分だったのはなぜですか? 16 ビットで、0 ~ 65535 の範囲の整数を表すことができます
    • 65535 =1111111111111111バイナリ (= 2 0 +2 1 +2 2 ...+2 15 = 2 16 -1)
    • たとえば、病院管理ソフトウェアは 65535 人を超える患者をカウントできる必要があるため、65535 では不十分です。
    • 通常、整数の大きさについて議論するとき、人々はコンピュータのメモリのサイズを考慮します。65535 では十分ではありません。コンピュータにはそれよりもはるかに多くの RAM が搭載されており、「バイト」で数えるかビットで数えるかは問題ではありません
  • しばらくは 32 ビットで十分と考えられていました。2003 年、AMD は最初の 64 ビット対応の「x86」プロセッサを導入しました。インテルもすぐに続きました。
  • 実は一昔前までは16ビットで十分と考えられていました。
  • 多くのハードウェアとソフトウェアが下位互換性を持つのは一般的な方法です。この場合、64 ビット対応の CPU も、32 ビット対応の CPU が実行できるすべてのソフトウェアを実行できることを意味します。
    • 下位互換性は、ビジネス戦略として努力されています。以前のプロセッサで可能なすべてのことを実行できる場合、より優れたプロセッサにアップグレードしたいと考えるユーザーが増えるでしょう。
    • CPU の下位互換性とは、CPU がサポートする新しいアクションが以前のマシン語に追加されることを意味します。たとえば、以前の機械語には、「で始まるすべてのオペコード1111は将来の使用のために予約されている」などの仕様があった場合があります。
    • 理論的には、この種の CPU の下位互換性は必要ありませんでした。すべてのソフトウェアが新しい互換性のないマシン言語に再コンパイルされた可能性があるからです。しかし、企業戦略や政治・経済システムにより、そうではありません。理想的な「オープンソース」の世界では、機械語の下位互換性はおそらく問題にならないでしょう。
  • x86-64 (一般的な 64 ビット CPU の機械語) の下位互換性は、「互換モード」の形で提供されます。これは、新しい CPU 機能を利用したいプログラムは、「64 ビット モード」で実行する必要があることを (OS を通じて) CPU に通知する必要があることを意味します。そして、優れた新しい CPU 64 ビット機能を使用できます。
  • したがって、プログラムが CPU の 64 ビット機能を使用するには、CPU、OS、およびプログラムのすべてが「64 ビットをサポート」する必要があります。
  • 64 ビットは、世界中のすべての人にいくつかの一意の番号を与えるのに十分です。おそらく、現在のほとんどのコンピューティングの取り組みには十分な大きさです。将来の CPU がさらに 128 ビットに移行する可能性は低いでしょう。しかし、もしそうなら、それは私が想像できるすべてのものには間違いなく十分であり、したがって256ビットの移行は必要ありません.

これが役立つことを願っています。

于 2009-08-19T22:27:45.027 に答える
0

上記のすべてが非常に詳細であることを考えると、これは非常に簡単な説明です。

32 ビットはレジスタを指します。レジスタはデータを格納する場所であり、すべてのプログラムはこれらを操作することで動作します。アセンブリはそれらに対して直接動作します (したがって、人々がアセンブリでのプログラミングに興奮することが多いのはそのためです)。

32 ビットとは、レジスタの基本セットが 32 ビットの情報を保持できることを意味します。64 ビットとは、当然のことながら、64 ビットの情報を意味します。

これにより、なぜプログラムを高速化できるのでしょうか? 大規模な操作をより高速に実行できるためです。ちなみに、特定の種類のプログラムのみが高速になります。ゲームは通常、演算が多い操作 (したがってレジスタの使用) があるため、プロセッサごとの最適化を大いに活用できます。

しかし、面白いことに、tchen が述べたように、とにかく大規模な操作を実行できる他の多くの「もの」があります。SSE、SSE2 などは、「32 ビット」システムであっても、64 ビット レジスタと 128 ビット レジスタを持ちます。

メモリをアドレス指定する能力の向上は、Windows 固有のメモリ アドレス指定システムに基づく (私が想像する) 基本レジスタ サイズの増加に直接関係しています。

それが少し役立つことを願っています。他のポスターは私よりもはるかに正確です。私は非常に簡単に説明しようとしています (ほとんど知らないことが役に立ちます :)

于 2009-08-22T00:55:40.507 に答える
0

32ビットプロセッサでアドレス可能なメモリ範囲を説明する簡単な答えは次のとおりです。

構築できる数字は 3 桁しかないため、最大数は 999 であると仮定します。数字の範囲は (0 ~ 999) です。使用できる番号はわずか 1000 です。

ただし、6 桁の数字を使用できる場合、作成できる最大数は 999999 です。現在の範囲は (0 ~ 999999) です。これで、100 万個の番号を使用できます。

同様に、プロセッサに許可されるビット数が増え、構築して最終的にデータを格納するために使用できるアドレス (前の例では数字) のセットが増えます。

これより単純なものは、読むのが面白いでしょう!

-広告。

于 2009-08-22T18:58:37.807 に答える
0

非 CS 者向け。64ビットは計算(あらゆる種類の)に適しています。また、より多くのRAMを使用できるようになります。

また、RAM が限られている場合 (VPS や RAM の小さい専用サーバーなど)、32 ビットを選択すると、RAM の消費量が少なくなります。

于 2009-08-19T18:26:19.290 に答える
0

特定のアプリケーション (マルチメディアのエンコード/デコード、レンダリングなど) は、64 ビットを完全に利用するように作成すると、パフォーマンスが大幅に (2 倍) 向上することに注意してください。

UbuntuおよびWindows Vistaの 32 ビットと 64 ビットのベンチマークを参照してください

于 2009-08-16T09:10:06.317 に答える
0

この質問に対する素晴らしい答えがありますが、この回答ブロックのすべてに収まるわけではありません....簡単な答えは、プログラムがメモリからバイトを取得するには、アドレスが必要だということです。32 ビット CPU では、各バイトのメモリ アドレスは 32 ビット (符号なし) 整数で格納され、最大値は 4 GB です。64 ビット プロセッサを使用する場合、メモリ アドレスは 64 ビット整数であり、約 1.84467441 × 10^19 の可能なメモリ アドレスが得られます。プログラミングが初めての場合は、これで十分です。プロセッサの内部動作や、32 ビット CPU で 4 GB を超える RAM にアクセスできない理由よりも、プログラミングの方法を学ぶことに集中する必要があります。

于 2009-08-22T02:31:14.133 に答える