256ビットまたは512ビットのマイクロプロセッサがないのはなぜですか?


95

8ビットマイクロプロセッサでは、そのデータバスは8本のデータラインで構成されています。16ビットマイクロプロセッサでは、そのデータバスは16本のデータラインなどで構成されます。

256ビットマイクロプロセッサも512ビットマイクロプロセッサもないのはなぜですか?データラインの数を単純に増やして256ビットマイクロプロセッサまたは512ビットマイクロプロセッサを作成しないのはなぜですか。

256ビットマイクロプロセッサまたは512ビットマイクロプロセッサの作成を妨げる障害は何ですか?


20
マーケティングでさえ、数を永遠に増やし続けることはできません。
オリンラスロップ

82
なぜ256ブレードのカミソリがないのですか?
Rocketmagnet

11
@OlinLathrop 5つのブレードとバッテリーを備えたGillete Fusion Powerをチェックしてください
ブレンダンロング

6
答えは、この質問に対する答えとほぼ同じです。1と2と3と4と5と6と8と12と16のシリンダー車があります。なぜ32気筒車と64気筒車、128気筒車がないのですか?
ラッセルマクマホン

13
@Russell:シリンダーの世界的な不足があるからです。
オリンラスロップ

回答:


110

考えてみてください。「256ビット」プロセッサの存在を具体的にどう思いますか?そもそも、プロセッサのビットネスの理由は何ですか?

それ以上の認定が行われない場合、プロセッサのビット数はそのALU幅を指します。これは、1回の操作でネイティブに処理できる2進数の幅です。したがって、「32ビット」プロセッサは、単一命令で最大32ビット幅の値を直接操作できます。したがって、256ビットプロセッサには、1回の操作で256ビットの数値を加算、減算、論理和、論理積などできる非常に大きなALUが含まれます。なぜあなたはそれが欲しいのですか?プロセッサがループなどの反復を100回しかカウントしていない場合でも、大規模で高価なALUを所有し、支払う価値があるのはどのような問題ですか?

ポイントは、ワイドALUを大量に使用する場合でも、その機能のごく一部を使用する場合でも、ワイドALUに料金を支払う必要があることです。256ビットALUを正当化するには、1つの命令で256ビットワードを操作することで本当にメリットが得られる、十分に重要な問題を見つける必要があります。おそらくいくつかの例を考えることができますが、そのようなチップを製造するために必要な大きな投資から利益を得ることができるとメーカーに感じさせるような問題は十分ではありません。広いALUから本当に恩恵を受けることができるニッチではあるが重要な(十分な資金がある)問題がある場合、そのアプリケーションには非常に高価で高度にターゲットを絞ったプロセッサが表示されます。ただし、その価格は、それが設計された狭いアプリケーション以外での幅広い使用を妨げます。例えば、256ビットが軍事用に特定の暗号化アプリケーションを可能にした場合、それぞれ100〜1000ドルの費用がかかる特殊な256ビットプロセッサが登場するでしょう。ただし、これらのいずれかをトースター、電源、または車に入れません。

また、幅の広いALUはALUをより高価にするだけでなく、チップの他の部分も高価にすることを明確にする必要があります。256ビット幅のALUは、256ビット幅のデータパスが必要であることも意味します。それだけでも多くのシリコン領域が必要になります。そのデータはどこかから来てどこかに行く必要があるため、ワイドALUを効果的に使用するにはレジスタ、キャッシュ、その他のメモリなどが必要になります。

もう1つのポイントは、任意の幅プロセッサで任意の幅演算を実行できることです。32ビットメモリワードを8命令でPIC 18の別の32ビットメモリワードに追加できますが、2命令で32ビットにスケーリングされた同じアーキテクチャで実行できます。ポイントは、幅の狭いALUが幅の広い計算の実行を妨げることはなく、幅の広い計算に時間がかかることだけです。したがって、能力ではなく速度の問題です。特定の幅の数値を使用する必要があるアプリケーションのスペクトルを見ると、256ビットワードを必要とするものはほとんどありません。他の人を助けないハードウェアでそれらの少数のアプリケーションだけを加速する費用は、それだけの価値がなく、製品開発のための良い投資をしません。


9
私はそれを言うのは嫌いですが、ここでは同意しません。例として、ビデオゲームのグラフィックスレンダリングを考えてみましょう。100億ドルの価値があると聞いたことがあるかもしれない小さな市場です。
Rocketmagnet

39
@Rocket:まず、OPはグラフィックプロセッサではなくマイクロプロセッサについて質問しました。第二に、グラフィックスのレンダリングには特に広い単語は必要ありません。多数の小さな操作を並行して実行できますが、32ビットデータで動作する8つのCPUコアを「256ビット」プロセッサと並行して呼び出すことはありません。各コアがネイティブで64ビットデータを操作できるという理由だけで、クアッドコアPCを「256ビット」プロセッサと呼んでいますか?それはこの用語の誤用であり、Intelマーケティングでさえ、複数のコアをそのように売り込んでいるようには見えません。
オリンラスロップ

30
@Rocket:SIMDは異なるタイプの並列処理ですが、私はそれをワイドALUとは呼びません。小さなALUの束だけが並列に緊密に実行されます。たとえば、このようなSIMDプロセッサでは、すべてのキャリーで256ビットの加算を行うことはできません。並列処理は、より広いALUとは異なります。あなたはあなたの道から外れて反対になっているようです。おそらく、並行対広域についての言い回しを議論することができますが、型破りな定義を使用し、他の解釈が驚くほど間違っていると主張することは、単に放尿コンテストに参加することです。
オリンラスロップ

15
@Rocket:CPUが多数の操作を並行して実行することで、一度に256ビットで動作できるからといって、CPUが「256ビット」CPUになるわけではありません。つまり、実際には256ビット幅の数値を直接処理できることを意味しますが、それはできません。あなたが言ったように、別々の並列ALUユニット間にキャリーはありません。これは、256ビットALUではありません。CPUのビット数が何を意味するのか、通常とは異なる定義を持っているようです。一度に処理できるビット数ではなく、全体として処理できる単語の幅です。
オリンラスロップ

19
私が学校にいたとき、ソフトウェアの人々は「論理的な」命令セットの幅でビット数を測定し、ハードウェアの人々はバス幅でビット数を測定すると教えられました。そのため、8088はソフトウェアの人々には16ビットのプロセッサであり、ハードウェアの人々には8ビットのプロセッサでした。8086はすべての人にとって16ビットでした。もちろん、マーケティング担当者は見つけることができる最大数を取得するので、このコメントスレッドを読んで512ビットCPUのマーケティングを開始しないようにしましょう。:
マークハリソン

34

まあ、私は256ビットや512ビットについては知りませんが、1024ビットプロセッサについて聞いたことがあります(今は見つかりません)。単語はVLIWです非常に長い指示語。したがって、これは命令バスであり、データバス幅ではありません。利点は、命令レベル並列処理(ILP)を大規模に実装できることです。

ILPとの最初の出会いは20年前のMotorola DSPでした。これには、メモリ間でデータを移動しながらMAC(乗算および累積)を実行するための命令があったため、次の命令で新しいMACを無駄なく実行できますデータを移動するための2つのMAC間の時間。
現在、このオプションを提供する汎用コントローラーもあります。VLIWはこれをはるかに高い規模で適用します。

20

さらに読む
VLIWアーキテクチャ


ほとんどの金融計算:(この問題に今実行中
私はとても混乱して

x86はVLIW CPUだと思いました。;-)
マッケ

1
@MarcusLindblom VLIWが可変長命令語を意味する場合のみ。;-)
CVn

3
@ AK4749その場合、予測は、「実際の」会計規則を使用してトランザクションを処理する銀行によって破棄される可能性があります。つまり、これらのルールに基づいて計画を実行すると、実際の銀行はナノセントの精度ではなく、実際の会計ルールを使用するため、期待される結果が得られません。そしてもちろん、市場が不確実だからです。したがって、開始時の1セントのエラーが出力で1兆ドルのエラーを与える場合、その1兆ドルはシミュレーション効果のみであり、クライアントが計画を立てるために使用するものではありません。
ザフォトン

1
もちろん、彼らは現在の決定の基礎として10年にわたる予測を決して使用しません。プログラマーとして私もそれほど愚かではありません。ただし、(そして明確にするために、私たちは発散するエラーの問題を解決して存在しないようにしました)最大のクライアントは実際、ベンダーに明かさないことを選んだどんな悪意のある目的でもこれらのタイプの能力を必要とします。また、数年のために金融スペースに働いた、私は金融会社が実際に高精度計算(1/2)を使用しないということを伝えることができます
とても混乱イム

28

マイクロプロセッサの「ビットネス」は、通常、汎用レジスタのサイズに関して定義されます。サイズは、プロセッサがネイティブに処理できる数と、アクセスできるメモリの量を決定します。ほぼすべてのアルゴリズムで64ビットの数値で十分であり、アドレス可能なメモリの量(1600万テラバイト)で十分です。汎用レジスターのサイズを増やすことには、何の利点もありません。反対に、レジスタの操作を実行するために使用される算術論理ユニット(ALU)の領域は、ビット量の2乗に比例します。256ビットALUは16倍大きくなり、大幅に遅くなります。

一方、プロセッサを拡張して、一度に多くの小さな操作を行えるようにすることにはポイントがあります。実際、IntelのSandy BridgeおよびIvy Bridgeプロセッサはまさにそれを行い、256ビットのSIMDレジスタを持ち、サイクルごとに2つの算術演算と1つのメモリ演算を実行できます。したがって、定期的に使用される用語を曲げたいとする卑劣なマーケティング担当者であれば、256ビット、または768ビットプロセッサと呼ぶことを正当化できます。


それは印象的なアーキテクチャです。
トリグヴェLaugstøl

6
+1「定期的に使用される用語を曲げたい卑劣なマーケティング担当者」。
ダンニーリー

14

第一に、プロセッサのビットサイズは通常、データバスのサイズのような実装の詳細ではなく、機械語プログラマーに見える抽象的なアーキテクチャによって決定されます。

たとえば、Motorola 68000は32ビットプロセッサです。32ビットのデータレジスタと32ビットのアドレスレジスタがあります。現在、そのアーキテクチャファミリの最初のバージョンでは、24ビットのアドレス行のみが公開されています。さらに、8ビットのデータバスのみを持つバリアントが存在します(したがって、32ビットメモリ操作は、複数のアクセスサイクルとしてプロセッサによって実行されます)。

さて、質問については、なぜ256と512に行かないのか。プロセッサは「ネイティブに」いくつかの種類のデータ型を操作するので、これらのデータ型のそれぞれに対して256または512ビットが何を意味するかを調べると役立ちます。整数、ポインター、浮動小数点型があります。

  1. 整数:プログラムは、32ビットおよび64ビットの整数から多くの燃費を得ます。64ビットが制限である場合、それに対する修正は、ソフトウェアで実装されたbignum整数を持つことです。高レベル言語は、整数型を実装できるため、「fixnums」と「bignums」の間で操作がスムーズに移行します。もちろん、bignumsでパフォーマンスに打撃を与えますが、それを全体像で考慮する必要があります。つまり、プログラム内の操作のうち、bignumの操作の数です。256ビットまたは512ビットの数は、bignumの必要性を排除するものではなく、bignumに切り替える前にヘッドルームを増やすだけです。2048ビットの公開鍵を操作したい場合、512ビットの整数は機能しません(ただし、512ビットの桁のbignumは高速です)。

  2. ポインター:より広いポインターは、2つのことを可能にします:より広いアドレス空間、およびポインターに格納される追加のメタデータ。アドレス空間は最近では仮想化されているため、メモリが増加しなくても拡張できます。128ビットポインターがある場合、アドレス空間が非常に大きいため、オペレーティングシステムとカーネルのすべてのユーザー空間プロセスを単一の保護されていない空間のランダムな場所に配置できることが提案されています。衝突する。単により大きなアドレス空間を作成するのではなく、ファットポインターを使用して、参照対象オブジェクトに関する情報(タイプ、サイズ、その他の情報)またはセキュリティ関連情報など、アドレスビットではないビットを伝送できます。おそらく、この種のことには「最適な太さ」があります。もし推測するなら、私はそれでも128ビットで制限します。ありません tは256ビットポインターに行くのが理にかなっているようですが、512を気にする必要はありません。太いポインターには欠点があります。ポインターを含むすべてのデータ構造が肥大化します。そして、一般的に、ポインターを同じサイズにする必要があります。そうしないと、命令セットアーキテクチャ(メモリセグメントなど)で複雑になるため、フルポインター(セグメント記述子とオフセット)またはローカルポインター(理解されたセグメント内のオフセット) 。

  3. 浮動小数点型:浮動小数点数のビット数が多いほど、精度が高くなります。浮動小数点型は、より広い表現から最も恩恵を受けると思います。256ビットまたは512ビットの浮動小数点型は、数値コードの安定性と、多くの反復を必要とする科学計算の品質を向上させ、途中でエラーを蓄積します。浮動小数点の精度は整数の精度と同じではありません。浮動小数点型をfixnumsとbignumsのような範囲に分けることはできません。浮動小数点の精度が上がると、すべての不正確な数値の品質に影響を与えます。ゼロに近いか、大きさが大きいかは関係ありません。浮動小数点指数のビット数を増やすと、浮動小数点数の範囲が大幅に拡張され、bignum整数にビットを追加するよりもはるかに高速になります。

これらの理由から、今後の主な傾向は、ハードウェア浮動小数点数の幅の増加であり、必ずしもポインターと整数の幅の増加が続くとは思わない。

浮動小数点数は、過去に他の型よりもすでに先行していることに注意してください。たとえば、しばらくの間、64ビットIEEEダブルフロートをサポートする32ビットプロセッサが優勢でした。これは、32ビットのポインターと整数を使用して多くのことを実行できますが、深刻な数値処理では32ビットの浮動小数点数が非常に制限されるためです。

浮動小数点表現で現れると便利な非常に便利な機能の1つは、型タグの予備ビットです。動的な高レベル言語(オブジェクトには型はあるが、格納場所には任意の型の値が保持される)での浮動小数点型の実装は、ポインターや整数のようなオブジェクトにスペアビットがあり、型タグを識別するため、これは浮動小数点数では困難です。そのため、しばしば起こることは、浮動小数点数がヒープに割り当てられることです。一部のスキームは仮数からビットを盗むため、その言語の浮動小数点型は、同じマシン上の他の言語の浮動小数点と比較して精度を失います。


素敵な説明。ちなみに、一般的なx86プロセッサには長い間80ビットの浮動小数点がありました。80ビットはFPUの内部にあり、通常32または64ビットがエクスポートされます。
オリンラスロップ

技術的には、すでに完了しています。Googleの「nan boxing」または「nun boxing」。さらに有望なのは、64ビットARMのハードウェアタイプタグですが、残念ながら間もなくそうなることはありません。
ホワイトクォーク

3
80バージョンに直接アクセスできました。TurboPascalでプログラミングを学んでいた90年代に、80ビットのfloat型がありました。
ダン・ニーリー

@DanNeely:3つの80ビット数を256ビットチャンクに、または3つの42ビット数を128ビットチャンクに、または3つを組み合わせて、プロセッサが3D座標の浮動小数点型の恩恵を受けると時々思っていました21ビットの数値を64ビットのチャンクに。そのようなことを実装するのはどれほど難しいのでしょうか?
supercat

@supercat GPGU Wikipedia:[NVidia] GPUのほとんどの操作は、ベクトル化された方法で動作します。1つの操作は、一度に最大4つの値に対して実行できます。たとえば、ある色<R1、G1、B1>を別の色<R2、G2、B2>で変調する場合、GPUは結果の色<R1 * R2、G1 * G2、B1 * B2>を1つに生成できます操作。
カズ

9

実際には、役に立つことは何もしません。64ビットの数値はほとんどすべての目的に十分な精度を提供しますが(Intelシステムには80ビットの浮動小数点があります)、余分なラインはコストと電力消費を増加させますが、クロック速度にわずかに悪影響を及ぼします。

歴史的にCPUは、意図した目的に実用的な最小ビット数を使用しています。技術の進歩により、より広いバスとALUが可能になったため、バスのサイズが拡大し、より広い適用性が実現しました。

  • 4ビット:1桁で十分なため、(BCDスタイルの)電卓、キャッシュレジスタなどに実用的です(かなり限られた領域です)
  • 8ビット:(ASCII)文字に十分、テキスト処理システム(非常に広い領域)に実用的、低品質のサウンドにも
  • 16ビット:16ビターが一般的だったとき、2 ^ 16メモリアドレスは妥当な量でした(少なくとも2 ^ 8または2 ^ 32よりもはるかに妥当です)。16ビットは非常に許容可能なオーディオ品質をもたらし、ほとんどのA / Dコンバーターは16ビット未満の結果をもたらすため、このような値を16ビットで計算するのは理にかなっています
  • 32ビット:32ビットは、ほとんどの(すべてではない)人間が測定した量の精度に適合します。大規模なデータベースを扱う場合を除き、ほとんどの実用的な目的には2 ^ 32アドレスで十分です。
  • 64ビット:2 ^ 32バイト以上のメモリが実用的になりました。
  • 128ビット:現時点では、暗号化を除き、32を超える利点はほとんどありません。ハードディスクで2 ^ 64バイトを超えると予想されるのはいつですか?おそらくすぐに。

1
「640Kは誰にとっても十分なはずです。」
ビル

6
@jippie-ゲイツは実際にそれを言ったことはありません。
Rocketmagnet

1
実際、ほとんどの8ビットCPUは2 ^ 16バイトのメモリをアドレス指定でき、16ビットの2 ^ 32、80386(32ビット)は理論的には2 ^ 64バイト(4GB)のメモリもアドレス指定できます。とにかく当時
アクセル

1
20

3
@Michael-それはいつものことであり、私のキャリア全体を通してそれを見てきました。本当に先見の明のあるプロダクトマネージャーはほとんどいません。逸話:1970年代初頭、Robert Noyceが現在の小型化を予測するマイクロプロセッサの未来についての講演で、聴衆の誰かが言います:「くそ、床の奥にあるコンピューターを全部失いたくない」ノイスはそれに即して答えた:「あなたはそれを全く理解していない。あなたはあなたが失ったものを気にしない;あなたには他の何千人もいるだろう」。それは1970年代初期でした。ロバート・ノイスは先見の明がありました。
-stevenvh

9

実際には、ビットネスをどのように定義するかに応じて、このようなプロセッサが存在し、一般的です。現在、ほぼ間違いなく使用しています。Olinが説明したように、256ビットの数値の使用はそれほど多くありませんが、4 x 32ビットの数値はどうでしょうか。ALUが4ペアの32ビット数を同時に追加できるとしたらどうでしょう。そのようなALU(私が知っている)は、1970年代に最初にベクトルスーパーコンピューターに実装されました。このようなコンピューターを初めて所有したのは、MMXを搭載したIntel Pentiumの1つを持っていたときです。

Intel MMXガイ

それらを覚えていますか?

MMXチップには、単一命令-複数データ命令セット(SIMD)があり、1×64ビットペア、2×32ビットペア、4×16ビットペア、または8×8 ビットペアを追加できます。

しかし、それは何もありません。最新のグラフィックスカードにはGPUがあります(以前はグラフィックスプロセッシングユニットの略でしたが、現在はGeneral Processing Unitの略です)。多くの場合、これらはワイドSIMD実装であり、一度に128ビットまたは256ビットで分岐、ロード、および保存できます。IntelのLarrabeeプロトタイプマイクロアーキテクチャには、各コアに2つ以上の512ビットSIMDレジスタが含まれています。

GPU SIMD

SIMDはマルチコアと混同しないように注意してください。CPUの各コアには、整数のセットを加算できる独自のワイドALUがあります。


1
「1×16ビットのペア、2×32ビットのペア、4×16ビットのペア、または8×8ビットのペア」その部分は正しいですか?
CVn

4
その上にIntelロゴとクラフトシングルのように見えた一見
クリスLaplante

4
4x32ビット変数は、まだ 32ビットのみです。ビット数は、ALUが操作できる最大の個々の整数です。並列に何度も実行しても、ビット幅は増加しません。-1
コナーウルフ

3

まだ必要ないからです。

通常、ビットネス(レジスタ内のビット数として定義します)は、アドレス可能なメモリの量にほぼ直接変換されます。プロセッサによっては、ビット長の2倍の長さのレジスタがある場合や、これらのメモリ制限を回避する手法が存在するため、これはもちろん単純化されています(16ビットウィンドウでプログラミングを行ったことを覚えている人はいますか?)


3

「単にデータ行の数を増やして256ビットを作成しないのはなぜですか」

実際、LGA-2011ソケットに適合するすべてのIntelプロセッサには256個のデータピンがあり、DRAMにつながるマザーボード上の256個のデータラインに接続します。あなたが使用した最新のラップトップまたはデスクトップマシンに少なくとも256のデータ行がなかったら少し驚いたでしょう。「間違って...データ行の数を増やしてはいけない」という誤った考えをどこから得たのかを尋ねてもいいですか?

LGA 2011ソケットデータシート、セクション6.1は、これらのCPUは、256本のデータピンと76本のアドレスピン(バンクアドレス+メモリアドレス)を有することを示しています。


-1

一度に128ビット以上を使用してデータを表現する必要がある、またはその可能性があるアプリケーションがないためです。

そして、ご存知のように、マルチメディアプロセッサとグラフィックカードは、メインボードCPUの前に到達します。写真/ビデオでは、このような大きなデータを一度に処理するのが理にかなっているからです。


-4

コンピュータシステムは、その意味では、いくつかの入力を必要とし、いくつかの出力を与えるコンピューティングマシンです。これらのラインでコンピューターを満足させる必要があるため、開発者は、アドレスバス、データバス、コントロールバスの3つのバスを持つことでベンチマークを得るようになりました。1)アドレスバスは、読み取り/書き込み操作のために、メモリ内の特定のアドレスをフェッチ/選択します。2)次に、データバスは、このデータをプロセッサおよびメモリとの間でやり取りして、処理/保存の目的で使用します。3)コントロールバスは、プロトコルを制御するインターフェイスを作成し、システムにそれを尊重するように要求します。

これらは、ユーザー/サーバー/クライアントの有用な計算を行うために必要です。一般に、パフォーマンス(タスク完了の速度、グリッチの減少など)は、システム内のボトルネックのクリアに依存します。すなわち、CPUがハードディスクドライブからの転送速度よりもはるかに高いレートで処理できる場合、ボトルネックはHDDで発生します。同様に、特定のデータ速度とコード幅に対して適切な処理速度が必要です。

最初から、H / Wの複雑さ、コスト、要件、効果的なアルゴリズムなどのさまざまな理由と、主な理由である市場範囲は、質問ホストが述べているように、256ビットまたは512ビット。これらは可能です!しかし、要件はまだ存在せず、今日のニーズと補完的なソフトウェアサポートがないため、市場の範囲はまだ見えていません。

256ビットプロセッサは、特定のプロセッサが処理できるデータバスの幅、またはALUが1回の実行で処理できることを示します。4ビット、次に8,16,32、現在は64ビット、さらには128ビットの形式を開始しました。これが現在のマーケットスコープ製品です。

したがって、これらの質問をする前に、市場側の需要とその範囲を常に確認する必要があります。あなたがそれを買う余裕がないなら、どうやってそれを買うことができますか?そして、もしあなたがそれを買うことができないなら、生産者はどのように生産することができますか?そして、彼が生産できない場合、その製品には存在しません!!


6
名詞を大文字にすると読みにくくなります。
pjc50

うーん、はい、私はそれを始める必要があります。
シュリクリシュナ

@ pjc50たぶん彼はドイツ出身ですか?ああ待って、「尋ねる」と「購入する」も大文字で表記されますが、多分そうではありません
アレックス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.