2016-11-14 4 views
0

私の理解では、プロセッサのワードサイズは、そのプロセッサが1回の計算で処理するビット数です。これは、現在(通常は)32または64ビットです。しかし、私の研究によると、単語のサイズは過去には小さく、時間とともに徐々に増加しています。最適な(プロセッサ)ワードサイズはどのように決定されますか?大きい方が良い?

私もワードサイズは

がこれを考えると、システムバス、命令サイズ、アドレスのサイズなどを介してデータ転送を指示するものであることを理解し、どのように最適なワードサイズが決定されますか?大きなワードサイズはいつも良いですか?そうでない場合、なぜですか?

より大きいワードサイズは、1つのバスサイクル(1ワードをバスに転送するのにかかる時間)がより長くかかることを意味するので、

ありがとうございます。

+0

62ビット?そのことを聞いたことはありません。まあ、一つは、大きなワードサイズは、より広いアドレス空間にアクセスする能力を与え、ある程度命令の複雑さを増やします。 – babon

+0

@babon Typo!ありがとう。 –

答えて

1

しかし私の研究では、単語のサイズが の過去のものよりも小さく、徐々に増加していることがわかりました。

はい、非常に適切です。 Intelは、16ビットおよび32ビットCPU(それぞれ8086および80386プロセッサが最初のものでした)の先駆けとして、AMD64(別名x86-64または単にx64)アーキテクチャを開発しました。 Intelは80386で始まった32ビットx86アーキテクチャです。Intelはまったく新しいもの、IA-64アーキテクチャを作成しましたが、実際に誰もそれを使用していません。

私は大きな ワードサイズは1つのバスサイクル(それはバスを介し 一つの単語を転送するのにかかる時間)が長くかかることを意味するので、より大きなワードサイズは、常に良いではないと思われますか?

あなたのバスが輸送したいデーターと同じではないという前提で、これは正しいです。 16ビットバスで32ビットのデータを送信するには、実際には時間がかかります。しかし、64ビットバス上で64ビットデータを転送するには、16ビットバス上で16ビットデータを転送するのと同じくらい時間がかかります。

このため、ワードサイズはバスの幅と同じです。フォンノイマンマシンには3つのバスがあるので、実際にワードサイズとして定義するものについて何らかの論争がありましたが、通常はデータバスが意味されます。

したがって、ワードサイズが長年にわたって増加しているという事実は、技術の進歩によってもたらされます(関連:Moore's Law)。科学は進歩してより良い、より速いCPUを目指しています。

ここでは64ビットCPUがありますが、命令セットでは即値オペランド(リテラル)も64ビットとして扱われます。つまり、0x1を64ビットレジスタにロードするには、最低9バイト(即値オペランド+オペコード)が必要です。アーキテクチャが64ビットレジスタに1つの符号拡張またはゼロ拡張バイトをロードする特別な命令を提供しない場合、これは明らかに不利になります。したがって、それを改善する方法、特に実行時間の増加を犠牲にしてコードサイズを縮小しようとする 命令セットが改善されました。

「最適なワードサイズ」はありません。アプリケーションと環境によって異なります。速度が必要なプログラムもあれば、サイズが小さくなければならないプログラムもあります。命令は非常に小さいので、それは「親指」と呼ばれていますなぜ私にはわからない


は、おそらく彼らはシンブルで収まります。

+0

素晴らしい応答をありがとう。あなたの最後のコメントに関して質問があります。「結局のところ、最適な単語サイズはありません。」アプリケーションと環境によって異なります。プログラムによっては速度が必要なものもあれば、サイズが小さくなければならないものもあります。 "したがって、「最適なワードサイズ」はありませんが、*バスはどんなワードサイズでも転送できるだけの幅を持っていたと仮定すると、ワードサイズが大きいほど常に良いでしょうか? –

+0

@ handler'shandleトレードオフをする必要があります。 128ビットのデータバスを持ち、一度に128ビットを転送することができます。それは素晴らしいです!しかし、これらの128ビットを転送するようにCPUに指示する命令は、何らかの形で送信されるべきデータを組み込む必要があり、これは128ビットのサイズである。したがって、命令セットの設計者は、何らかの形でそのデータを圧縮する方法を考え出すか、または命令は単純にそれらの128ビット(16バイト)しか持たないので、明らかに非常に大きくなります。したがって、ここでのトレードオフは高速化(大データバス)またはサイズ縮小(小データバス)です。 – Downvoter

+0

@handler'shandle本当にもっと知りたいのであれば、ARM Thumbについて読むことを強くお勧めします。それは私が言及したトレードオフに関するものです。 – Downvoter

1

この場合、最適なワードサイズはどのように決定されますか?

ワードサイズはプロセッサ設計の一部として決定されます。それは必ずしも最適ではありません。過去のワードサイズは、8,12,16,32,36、および64ビットを含む。ワードサイズのビット数が多いほど、プロセッサの実装は複雑になります。 64ビット加算(メモリアドレスの計算を含む)は、16ビット加算よりも4倍多くの比較を行います。

大きなワードサイズはいつも良いですか?そうでない場合、なぜですか?

"640Kは誰にでも十分であるはずです。"

32ビット(4GBのメモリ)が永久に持続するのに十分な時間があると考えられました。 64ビットでどれくらいの時間がかかりますか?

大きいワードサイズはメモリを消費し、実装がより複雑になります。トレードオフがあります。

ワードサイズが大きくなると、1つのバスサイクル(1ワードをバスに転送するのにかかる時間)が長くかかるため、より大きなワードサイズが必ずしも優れているとは思われません。

バス転送サイズはプロセッサのワードサイズと異なる場合があります。それはしばしばボトルネックです。

関連する問題