How Big is 128 bit?
Windows 7が32ビットと64ビットアーキテクチャで登場し、次のプロセッサとOSは128ビットになると信じられています。 それは本当でしょうか。また、それは次の自然な流れなのでしょうか。 32 ビットコンピューティングから始めると、CPU は 232 ビットの情報を処理することができます。 64ビットでは、同じく264ビットで、18,446,744,073,709,551,616、つまり18エクサバイト(5兆)以上のメモリとなります。 これは64ビットの場合です。 では、128ビットは? 2128、つまり3.4028236692093846346337460743177e+38ビットになる。 これは大変な数のビットです。 では、これは必要なのでしょうか? という疑問がある。演算可能なビットと利用可能なビットは別物である。 コンピュータ、さらに言えばソフトウェアがそのようなビット空間を使えるかどうか?
The CPU
前問への対処は、CPUの構造に依存します。 CPUには、レジスタ、演算を行うALU(arithmetic-logic unit )、キャッシュからメモリにデータを移動させるデータバスがあります。 フェッチ-エグゼキュートサイクルは、データがどのように処理されるかを扱う上で重要である。
レジスタはメモリの一部ではなく、むしろ一時記憶領域であり、制御ユニットという名目で機能するものである。 命令やデータを受け取り、論理演算や算術演算を行う。 詳細は、CPUまたはマイクロプロセッサ・ユニットの役割
The Registers in the CPU
レジスタは何をするのか
レジスタはメモリまたはCPUから情報を受け取り、一時的に保持し、制御ユニットの指示に従って情報を渡します。 レジスタはクロックと結びついており、レジスタの命令が1クロックサイクルで実行されます。 レジスタの数はコンピュータによって異なり、それぞれが特定の機能を実行するように設計されています。 レジスタは、設計されたビット数に応じて特定の記憶容量を持っています。
1]アキュムレータレジスタは特殊なデータレジスタで、ALUの最後の処理段階の結果を格納します。
2] ユーザー可視レジスタはデータレジスタとアドレスレジスタに分けられます。
3] アドレスレジスタはメモリレジスタと次のデータを保持するために使用します。
4]データレジスタはデータを格納します。
5]コンディションレジスタは命令を実行するかどうかを決定します。
6]コンスタントレジスタは読み取り専用の値を格納します。
7]浮動小数点レジスタは浮動小数点数のレジスタです。
8]汎用レジスタはデータおよびアドレスのレジスタを持ちます。
9]特殊用途レジスタはプログラムの状態を保持するもので、プログラムカウンタ、
10]スタックポインタ、
11]ステータスレジスタからなります。
12]プログラムカウンタは次に実行される命令のアドレス、
13]命令レジスタは実行中の命令などを保持しています。
14]インデックスレジスタはメモリアドレスのインデックスを格納します。
A Visual Interpretation of How a CPU Worksを読むと、レジスタについての詳細がわかります。
Physical Address Extension in 32 Bit Processors
では、32ビットプロセッサが64ビットと同様に機能する方法はありますか。 実はあるのです。 これは物理アドレス拡張 (PAE) と呼ばれます。
Physical Address Extension は、CPU が設計上利用可能なメモリよりも多くのメモリをアドレス指定できるようにする技術です。 これは、32 ビットを 64 ビットまで動作させることができる x86 システムでのみ行うことができます。 物理アドレス拡張は、アドレッシングレジスタが全メモリを異なるバンクに分割し、全メモリにアクセスできるようにすることで実現されます。 32 ビットのデータ・レジスタがデータを受信すると、データを第 2 バンクに分割して 64 ビット演算を取得し、1 サイクルで処理されます。 これにより、CPUサイクルは1サイクルで2つのレジスタを処理し、ALUに送って処理するように動作するようになります。
Non-Uniform Memory Access
Another CPU implementation is Non-Uniform Memory Access (NUMA), which allows CPU’s to access memory regardless the distance of the memory addresses.これは、CPUのメモリアドレスの距離に関係なくメモリにアクセスできるようにするものです。 CPUに近いメモリ位置もあれば、遠いメモリ位置もあるため、遠いメモリのデータをCPUが処理するのに時間がかかることになる。 これを解決するために、CPUをノードに分解し、ノード単位で処理を行うことで、メモリの物理的な位置に関係なく、より高速に処理を行うことができるようになりました。 NUMAが導入されていれば、アプリケーションは32ビット環境で64ビット処理を利用することができるのです。 このような処理により、128 ビットのオペレーションが可能になるのでしょうか。
64 ビットと 128 ビット OS
32 ビット プロセッサを 64 ビットとして、64 ビット プロセッサを 128 ビットとして機能させる CPU プロセスがある一方で、128 ビット システムを使用することは必然ではありません。 現在、x86(32ビット)システムにしか適用されていないPhysical Address Extensionを64ビットシステムにも適用して128ビットシステムのように振る舞えるように修正すれば、128ビットでの動作に一歩近づくことになる。 NUMAを使った修正も同様で、この場合、64ビットCPUは当然32ビットCPUよりもサイズが大きくなるため、CPUから距離のあるメモリロケーションの数を使用しなければならないからです。 暗号化を行うのに1回の処理サイクルで済むので、暗号化処理が速くなります。 しかし、これは、128ビット・プロセッサをフルに活用するには、CPUの動作にシームレスに融合するように書かれたアプリケーションが必要であることを示しています。
この時点で、これがアプリケーション実践における最大の欠点の1つとなっています。 ほとんどのアプリケーションは、まだ 32 ビット・レベルでしか書かれておらず、64 ビット・レベルですらありません。 これでは、128ビットのアプリケーションを作成するために書き直したソフトウェア設計プログラムが必要になります。 Visual Studioや.Net Framework、SQL Server 2005、SQL Server 2008などのソフトウェア設計プログラムは、128ビットのアプリケーションを作成しなければならないでしょう。
128 ビット プロセスは何を達成するのか?
より大きく高速な処理能力は、その質問に対する自然な答えです。 多くの処理能力を必要とする複雑なアプリケーション、つまり、1CPUサイクルで達成できる処理が理想的です。 これらは工学、あるいは数学、科学的な演算です。 高度な金融や経済のモデリング。 また、医療、生物、化学などの複雑な処理も高速に実行する必要があります。 これらのアプリケーションのうち、結果を素早く出す必要があるものには、128ビットCPUと同期できるOSが有効です。 128 ビット アーキテクチャの問題点については、Windows 128 ビット アーキテクチャ – プロセッサが処理できる RAM の量
Intel Micro Architecture Image.を参照してください。 Wikimedia Commons
Intel 1820 アーキテクチャ Image: Wikimedia Commons
Numa: Image Wikimedia Commons
This post is part of the series: 64 ビット コンピューティングと 32 ビット コンピューティング
CPU が高度化するにつれて、それをサポートするオペレーティング システムも高度化します。 これは、64 ビット コンピュータと古い 32 ビット コンピュータで現在起こっています。 CPUのサイズがオペレーティングシステムにどのように影響するかを理解することが、この連載の目標です。
- Windows7のX64とX86の違い
- 32ビットと64ビットのWindows7の違いを比較する
- 128ビットOSは実現できるのか、何を実現するのか