8ビットマイクロプロセッサでは、そのデータバスは8本のデータラインで構成されています。16ビットマイクロプロセッサでは、そのデータバスは16本のデータラインなどで構成されます。
256ビットマイクロプロセッサも512ビットマイクロプロセッサもないのはなぜですか?データラインの数を単純に増やして256ビットマイクロプロセッサまたは512ビットマイクロプロセッサを作成しないのはなぜですか。
256ビットマイクロプロセッサまたは512ビットマイクロプロセッサの作成を妨げる障害は何ですか?
8ビットマイクロプロセッサでは、そのデータバスは8本のデータラインで構成されています。16ビットマイクロプロセッサでは、そのデータバスは16本のデータラインなどで構成されます。
256ビットマイクロプロセッサも512ビットマイクロプロセッサもないのはなぜですか?データラインの数を単純に増やして256ビットマイクロプロセッサまたは512ビットマイクロプロセッサを作成しないのはなぜですか。
256ビットマイクロプロセッサまたは512ビットマイクロプロセッサの作成を妨げる障害は何ですか?
回答:
考えてみてください。「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ビットワードを必要とするものはほとんどありません。他の人を助けないハードウェアでそれらの少数のアプリケーションだけを加速する費用は、それだけの価値がなく、製品開発のための良い投資をしません。
まあ、私は256ビットや512ビットについては知りませんが、1024ビットプロセッサについて聞いたことがあります(今は見つかりません)。単語はVLIWです、非常に長い指示語。したがって、これは命令バスであり、データバス幅ではありません。利点は、命令レベル並列処理(ILP)を大規模に実装できることです。
ILPとの最初の出会いは20年前のMotorola DSPでした。これには、メモリ間でデータを移動しながらMAC(乗算および累積)を実行するための命令があったため、次の命令で新しいMACを無駄なく実行できますデータを移動するための2つのMAC間の時間。
現在、このオプションを提供する汎用コントローラーもあります。VLIWはこれをはるかに高い規模で適用します。
さらに読む
VLIWアーキテクチャ
マイクロプロセッサの「ビットネス」は、通常、汎用レジスタのサイズに関して定義されます。サイズは、プロセッサがネイティブに処理できる数と、アクセスできるメモリの量を決定します。ほぼすべてのアルゴリズムで64ビットの数値で十分であり、アドレス可能なメモリの量(1600万テラバイト)で十分です。汎用レジスターのサイズを増やすことには、何の利点もありません。反対に、レジスタの操作を実行するために使用される算術論理ユニット(ALU)の領域は、ビット量の2乗に比例します。256ビットALUは16倍大きくなり、大幅に遅くなります。
一方、プロセッサを拡張して、一度に多くの小さな操作を行えるようにすることにはポイントがあります。実際、IntelのSandy BridgeおよびIvy Bridgeプロセッサはまさにそれを行い、256ビットのSIMDレジスタを持ち、サイクルごとに2つの算術演算と1つのメモリ演算を実行できます。したがって、定期的に使用される用語を曲げたいとする卑劣なマーケティング担当者であれば、256ビット、または768ビットプロセッサと呼ぶことを正当化できます。
第一に、プロセッサのビットサイズは通常、データバスのサイズのような実装の詳細ではなく、機械語プログラマーに見える抽象的なアーキテクチャによって決定されます。
たとえば、Motorola 68000は32ビットプロセッサです。32ビットのデータレジスタと32ビットのアドレスレジスタがあります。現在、そのアーキテクチャファミリの最初のバージョンでは、24ビットのアドレス行のみが公開されています。さらに、8ビットのデータバスのみを持つバリアントが存在します(したがって、32ビットメモリ操作は、複数のアクセスサイクルとしてプロセッサによって実行されます)。
さて、質問については、なぜ256と512に行かないのか。プロセッサは「ネイティブに」いくつかの種類のデータ型を操作するので、これらのデータ型のそれぞれに対して256または512ビットが何を意味するかを調べると役立ちます。整数、ポインター、浮動小数点型があります。
整数:プログラムは、32ビットおよび64ビットの整数から多くの燃費を得ます。64ビットが制限である場合、それに対する修正は、ソフトウェアで実装されたbignum整数を持つことです。高レベル言語は、整数型を実装できるため、「fixnums」と「bignums」の間で操作がスムーズに移行します。もちろん、bignumsでパフォーマンスに打撃を与えますが、それを全体像で考慮する必要があります。つまり、プログラム内の操作のうち、bignumの操作の数です。256ビットまたは512ビットの数は、bignumの必要性を排除するものではなく、bignumに切り替える前にヘッドルームを増やすだけです。2048ビットの公開鍵を操作したい場合、512ビットの整数は機能しません(ただし、512ビットの桁のbignumは高速です)。
ポインター:より広いポインターは、2つのことを可能にします:より広いアドレス空間、およびポインターに格納される追加のメタデータ。アドレス空間は最近では仮想化されているため、メモリが増加しなくても拡張できます。128ビットポインターがある場合、アドレス空間が非常に大きいため、オペレーティングシステムとカーネルのすべてのユーザー空間プロセスを単一の保護されていない空間のランダムな場所に配置できることが提案されています。衝突する。単により大きなアドレス空間を作成するのではなく、ファットポインターを使用して、参照対象オブジェクトに関する情報(タイプ、サイズ、その他の情報)またはセキュリティ関連情報など、アドレスビットではないビットを伝送できます。おそらく、この種のことには「最適な太さ」があります。もし推測するなら、私はそれでも128ビットで制限します。ありません tは256ビットポインターに行くのが理にかなっているようですが、512を気にする必要はありません。太いポインターには欠点があります。ポインターを含むすべてのデータ構造が肥大化します。そして、一般的に、ポインターを同じサイズにする必要があります。そうしないと、命令セットアーキテクチャ(メモリセグメントなど)で複雑になるため、フルポインター(セグメント記述子とオフセット)またはローカルポインター(理解されたセグメント内のオフセット) 。
浮動小数点型:浮動小数点数のビット数が多いほど、精度が高くなります。浮動小数点型は、より広い表現から最も恩恵を受けると思います。256ビットまたは512ビットの浮動小数点型は、数値コードの安定性と、多くの反復を必要とする科学計算の品質を向上させ、途中でエラーを蓄積します。浮動小数点の精度は整数の精度と同じではありません。浮動小数点型をfixnumsとbignumsのような範囲に分けることはできません。浮動小数点の精度が上がると、すべての不正確な数値の品質に影響を与えます。ゼロに近いか、大きさが大きいかは関係ありません。浮動小数点指数のビット数を増やすと、浮動小数点数の範囲が大幅に拡張され、bignum整数にビットを追加するよりもはるかに高速になります。
これらの理由から、今後の主な傾向は、ハードウェア浮動小数点数の幅の増加であり、必ずしもポインターと整数の幅の増加が続くとは思わない。
浮動小数点数は、過去に他の型よりもすでに先行していることに注意してください。たとえば、しばらくの間、64ビットIEEEダブルフロートをサポートする32ビットプロセッサが優勢でした。これは、32ビットのポインターと整数を使用して多くのことを実行できますが、深刻な数値処理では32ビットの浮動小数点数が非常に制限されるためです。
浮動小数点表現で現れると便利な非常に便利な機能の1つは、型タグの予備ビットです。動的な高レベル言語(オブジェクトには型はあるが、格納場所には任意の型の値が保持される)での浮動小数点型の実装は、ポインターや整数のようなオブジェクトにスペアビットがあり、型タグを識別するため、これは浮動小数点数では困難です。そのため、しばしば起こることは、浮動小数点数がヒープに割り当てられることです。一部のスキームは仮数からビットを盗むため、その言語の浮動小数点型は、同じマシン上の他の言語の浮動小数点と比較して精度を失います。
実際には、役に立つことは何もしません。64ビットの数値はほとんどすべての目的に十分な精度を提供しますが(Intelシステムには80ビットの浮動小数点があります)、余分なラインはコストと電力消費を増加させますが、クロック速度にわずかに悪影響を及ぼします。
歴史的にCPUは、意図した目的に実用的な最小ビット数を使用しています。技術の進歩により、より広いバスとALUが可能になったため、バスのサイズが拡大し、より広い適用性が実現しました。
実際には、ビットネスをどのように定義するかに応じて、このようなプロセッサが存在し、一般的です。現在、ほぼ間違いなく使用しています。Olinが説明したように、256ビットの数値の使用はそれほど多くありませんが、4 x 32ビットの数値はどうでしょうか。ALUが4ペアの32ビット数を同時に追加できるとしたらどうでしょう。そのようなALU(私が知っている)は、1970年代に最初にベクトルスーパーコンピューターに実装されました。このようなコンピューターを初めて所有したのは、MMXを搭載したIntel Pentiumの1つを持っていたときです。
それらを覚えていますか?
MMXチップには、単一命令-複数データ命令セット(SIMD)があり、1×64ビットペア、2×32ビットペア、4×16ビットペア、または8×8 ビットペアを追加できます。
しかし、それは何もありません。最新のグラフィックスカードにはGPUがあります(以前はグラフィックスプロセッシングユニットの略でしたが、現在はGeneral Processing Unitの略です)。多くの場合、これらはワイドSIMD実装であり、一度に128ビットまたは256ビットで分岐、ロード、および保存できます。IntelのLarrabeeプロトタイプマイクロアーキテクチャには、各コアに2つ以上の512ビットSIMDレジスタが含まれています。
SIMDはマルチコアと混同しないように注意してください。CPUの各コアには、整数のセットを加算できる独自のワイドALUがあります。
「単にデータ行の数を増やして256ビットを作成しないのはなぜですか」
実際、LGA-2011ソケットに適合するすべてのIntelプロセッサには256個のデータピンがあり、DRAMにつながるマザーボード上の256個のデータラインに接続します。あなたが使用した最新のラップトップまたはデスクトップマシンに少なくとも256のデータ行がなかったら少し驚いたでしょう。「間違って...データ行の数を増やしてはいけない」という誤った考えをどこから得たのかを尋ねてもいいですか?
LGA 2011ソケットデータシート、セクション6.1は、これらのCPUは、256本のデータピンと76本のアドレスピン(バンクアドレス+メモリアドレス)を有することを示しています。
コンピュータシステムは、その意味では、いくつかの入力を必要とし、いくつかの出力を与えるコンピューティングマシンです。これらのラインでコンピューターを満足させる必要があるため、開発者は、アドレスバス、データバス、コントロールバスの3つのバスを持つことでベンチマークを得るようになりました。1)アドレスバスは、読み取り/書き込み操作のために、メモリ内の特定のアドレスをフェッチ/選択します。2)次に、データバスは、このデータをプロセッサおよびメモリとの間でやり取りして、処理/保存の目的で使用します。3)コントロールバスは、プロトコルを制御するインターフェイスを作成し、システムにそれを尊重するように要求します。
これらは、ユーザー/サーバー/クライアントの有用な計算を行うために必要です。一般に、パフォーマンス(タスク完了の速度、グリッチの減少など)は、システム内のボトルネックのクリアに依存します。すなわち、CPUがハードディスクドライブからの転送速度よりもはるかに高いレートで処理できる場合、ボトルネックはHDDで発生します。同様に、特定のデータ速度とコード幅に対して適切な処理速度が必要です。
最初から、H / Wの複雑さ、コスト、要件、効果的なアルゴリズムなどのさまざまな理由と、主な理由である市場範囲は、質問ホストが述べているように、256ビットまたは512ビット。これらは可能です!しかし、要件はまだ存在せず、今日のニーズと補完的なソフトウェアサポートがないため、市場の範囲はまだ見えていません。
256ビットプロセッサは、特定のプロセッサが処理できるデータバスの幅、またはALUが1回の実行で処理できることを示します。4ビット、次に8,16,32、現在は64ビット、さらには128ビットの形式を開始しました。これが現在のマーケットスコープ製品です。
したがって、これらの質問をする前に、市場側の需要とその範囲を常に確認する必要があります。あなたがそれを買う余裕がないなら、どうやってそれを買うことができますか?そして、もしあなたがそれを買うことができないなら、生産者はどのように生産することができますか?そして、彼が生産できない場合、その製品には存在しません!!