CPUにおける64-bitと32-bitの違い [プロセッサ]
最近は64-bit CPUが入っている機器が珍しく無くなってきました。パソコンに入っているIntelのプロセッサから始まって、ルータなどのネットワーク機器、スマホ、さらには最近AI関連で話題のNVIDIA Jetson Nano、5,000円以下で手に入る教育用コンピュータ・ボードのRaspberry Piまで、色々な所で使われています。
Interface(インターフェース) 2016年11月号
2,699円(税込)
Interface(インターフェース) 2016年11月号
そこで、今回は64-bit CPUと従来の32-bit CPUとの相違点について説明していきたいと思います。
1. 64-bit CPUとは
まず、64-bit CPUの定義をしておきたいと思います。
「一度に64-bitの演算が可能なCPU」一番簡単に言ってしまえばこうなります。一度とは、1つの命令実行で、ということになります。64-bitの演算とは二進数で64桁の整数値同士の演算となります。それが、可能なCPUですから、それ以外の演算が出来ても良いわけです。
一般にbit数が増えるほど演算回路は複雑になり実装は困難になりますから、64-bit演算器は事実上それが最大のbit数となります。128-bit演算が可能なら、そちらの方が規模が大きいので、わざわざ64-bit演算器とは言わず128-bit演算器と言うでしょう。従って64-bit CPUとは実質的には64-bit以下の演算が可能なCPUとなると思います。
2. 64-bit CPUの詳細動作
さらに細かく64-bit CPUの要件を見ていきます。64-bit CPUとは言っても何もかも64-bitにしなければならない、というわけではありません。
例えば、64-bit CPUでは演算で使用するデータや出力データは64-bit長でなければならないですが、プログラムのは構成要素となる命令セットまで64-bitにしなければならない訳ではありません。実際、多くの64-bit CPUの命令セットは32-bit長です。64-bit命令の命令セットへの実装は32-bit長でも表現できるからです。
逆に、64-bitが強制される訳ではありませんが、実際は64-bitにしないと現実的な64-bit CPUにならない仕様もあります。プログラム(命令)やデータを格納するメモリ空間は64-bitでなければならない訳ではありませんが、近年の高性能CPUは実アドレスよりも広大な仮想アドレス空間をサポートしており、32-bit CPUでさえ、32-bit以上のアドレス空間を持つものがあります。
64-bit CPUでは、そもそも64-bit演算が可能ですので、ほとんど性能低下を起こさずに64-bitまで容易にアドレス空間を拡張することが出来ます。従って、64-bit CPUのアドレス空間は64-bitのものが一般的です。
また、データのメモリへのLoad/Store命令は64-bitでなければいけない訳ではありませんが、メモリへのアクセスは時間がかかるため、32-bitのデータを2回読みに行くのは性能低下の一因となります。64-bit CPUを採用する最大の動機は性能の向上にありますので、やはり64-bitのLoad/Store命令をサポートせざるを得ないことになります。
非常に簡単にではありますが、64-bit CPUの定義や一般的構成について説明させていただきました。次回はその64-bit CPUの実装上の障害について紹介していきたいと思います。
これら64-bit CPUの説明をしている本は少ないし、あったとしても記述の量も少ないのですが、ARMプロセッサ向けの説明だと以下の本にも記述はされています。このように関連する本から少しずつ説明を拾って理解に結びつけて行くしか無いようです。今後、他のプロセッサ・アーキテクチャの例についてもできるだけ紹介していきたいと思います。
Interface(インターフェース) 2016年11月号
2,699円(税込)
Interface(インターフェース) 2016年11月号
コメント 0