CPUバス

CPUバス (CPU Bus) とは、CPU直結のバスである。 マルチプロセッサ構成の場合はプロセッサ同士を、またCPUとノースブリッジやキャッシュメモリ（CPUがn次キャッシュまで内蔵している場合はn+1次キャッシュ）など、システムの構成上CPUにごく近い要素を接続する。CPUがそれほど高速でなかった昔は、外部まで引っ張り出されているものもあった。 CPUバスはCPUに直接繋がったバスである。キャッシュをつなげるバスとノースブリッジをつなげるバスを分ける構成の場合は、ノースブリッジ側をシステムバス、フロントサイドバスとも呼ぶ場合がある（インテルがx86でそのような構成を導入した際にそう呼んだ）。複数のプロセッサ間を結ぶ共有バスとしても使われる（対称型マルチプロセッサ）。x86の歴史で見ると、486の時代には拡張バスとしても使われていた（VLバス）。 CPUバスの性能は、そのコンピュータ・アーキテクチャ全体の性能を大きく支配する。そのため、CPU能力の向上と共にCPUバスは高クロック化・バス幅の拡張によって、より広い帯域を獲得する方向で強化されつつある。一時期はバスを伝播する信号が放射するノイズとクロストークによって、信号線を信号が伝わる速度から、限界は低いと見られていたが、バスの駆動電圧を下げることで低エミッション化をはかり、またプリント基板の製造技術向上とCADツールのルーティング能力向上によりブレークスルーを得て、64ビット幅 1GHz以上の駆動周波数を有するCPUバスを持つ高性能プロセッサも販売されている。 インテルx86の場合はNehalemマイクロアーキテクチャで、ノースブリッジとの接続にはバスを廃しインターコネクト化した。 低コストかつ高性能化を図るためにノースブリッジをプロセッサに統合した製品がある。例えばトランスメタのCrusoe等があげられる。原理的にはCPUバスを内蔵にする事により高性能化する事ができるが、むしろ高性能化によって得られたマージンを低消費電力に活用し、低発熱低消費電力ローフットプリントの組み込みプロセッサが多い。 拡張バスがCPUバスに比べて遅く、システム性能のボトルネックとなっていた時代には、従来の拡張バスにCPUバスを加える、あるいはCPUバスそのものを引き回す事でこの問題の解決を図った時代があった。このようなバスはローカルバスと呼ばれ、代表的なものとしてi486のメモリバスをISAバスに物理的に継ぎ足した「だけ」のVESA ローカルバスが有名である。もっと時代を遡ると、ファミコンの「カセット」やMSXの「スロット」など、CPUバスは当たり前のように引き出されていた。 インテルのIA-32アーキテクチャではPentiumまで互換CPUはピン配列互換性があった。AMDとインテルの間で起こったバス方式に関する訴訟以後、x86互換CPUでもメーカー毎にバスの設計は異なる物となり互換性は無くなった。 クロック 基本的にはいわゆるベースクロックがCPUバスのクロックとしてCPUに供給される。 制御信号 バスの読み書き方向、データを確定するストローブ信号、割り込み信号、リセット信号、バス状態信号などがある。メモリコントローラを内蔵しているZ-80などではDRAMリフレッシュ用信号も出力する。 アドレスバス メモリやI/Oポートのアドレスを指定する。アドレスバスからアドレスが出力されて、制御信号でストローブ状態が確定した時、データバスのデータが有効となる。 データバス メモリやI/Oのデータを読み書きする信号である。 古い時代のCPUはこれらのバス信号が個別に出力されていた。しかし、ピン数削減から信号線を時分割多重で複数の目的に使ったりした。最近の世代のCPUでは、CPUからの入出力はプロトコルによって抽象化され、バスにはパケットの形でデータが入出力される。これにあわせて、DRAMもパケットベースのデータ入出力にシフトし、ワード線の信号を全部まとめて入出力するSDRAMと呼ばれるタイプのメモリが使われるようになった。 MITS Altair 8800 後に業界標準となるS100バスと呼ばれる拡張バスを備えた。8080のCPUバスが直接拡張スロットに延長された形となっている。 ザイログ Z80 8ビットマイクロプロセッサを代表するCPUで、同CPUのバスはバッファICを経てそのまま拡張スロットに使われた。標準化されたインタフェースとしてMSXの拡張スロットが有名である（主にゲームソフトウエアを格納したROMボードの入ったカートリッジを差し込む。拡張RAMやLANアダプタ、プリンタインターフェースなども作られた）。後年の1チップMSXでは拡張スロットインターフェースも再現された。 モトローラ 680x0 外部バスが16ビットである68000/68010を除く、68000シリーズで採用されたCPUバス。一部にピン非互換であったが、簡単な修正によって古いMPUをよりグレードの高いMPUに置き換える事が出来た。68000は標準化されたバスVMEバスを輩出し、後継MPUは同バスを拡張した。 インテル 8088 PC/XTで知られるXTバスの基本となった。 インテル 8086 日本国内において日本電気 (NEC) がピン配列互換高速CPU V30を発売する等、セカンドソース契約の範囲を超えた、付加価値を持ったピン配列互換CPU市場が形成され始める。NEC PC-9800シリーズに搭載されたCバスは、8086のCPUバスを8ビットパソコンと同じ手法でバッファICで単純に延長した物である。 インテル 80286 IBM PC/ATで知られるISAバスの基本となった。ISAはPCIバスによって取って代わられるまでPC/AT互換機の基本的なバスとなった。PC-9800シリーズでは80286のアドレスバス拡張に伴いアドレス線が追加された。 PC/ATは回路図など基本的な情報が公開された。ただ、タイミングチャートなどいくつかの重要な情報が公開されていなかったため（これは悪意ではなく、公開するにあたり定義したり測定するコストを惜しんだのだろうと思われる）、相性と呼ばれる互換性問題を後の世に残した。たとえば割り込み信号が発生した際、ある互換機はバスを順番にサンプリングし、ある互換機は一斉にサンプリングする。こういった違いがボードとCPU、あるいはボード間で干渉を起こす事で動作不具合が起きた。後にIBMはこの問題を真剣に検討し、互換機が作られる事を前提とした新しいアーキテクチャで明確な仕様を策定し、それらがPC/AT互換機にもフィードバックされた事で相性問題は解消されていった。 インテル 80386 互換CPUメーカー各社が採用し、ピン配列互換CPUを多く輩出した「互換性のあるCPUバス」として一時代を築いた。サイリックスのCx486DLC，Cx486SLCはベストセラーになった。 バス幅の32ビット化に伴い、MCAバスや、EISAバスが登場した。しかし、かつてのPC/AT互換機においてCPUのCPUバスを直接拡張バスとする事は、将来に禍根を残すという反省から、バス幅以外は同CPUの特性とはなんら関係を持っていない。依然として当時はISAバスが主流であり、新参のバス規格は乱立するバス規格に新たなバスを追加するという形で終わり、標準化され安定した接続性はPCIバスの登場まで待つ事となる。さらに後述のi486の時代には、再びCPUのCPUバス（厳密にはメモリバス）を拡張バスの一部にするという愚を冒しているとか言う者もいるが、それが必要だったんだからしゃーない。 インテル i486DX ISAバスに同CPUのバスをそのまま追加した「VESA ローカルバス」が提唱され普及した。数多くのピン配列互換CPUが登場した。電源電圧の違いから「ゲタ」と呼ばれる電圧変換・ピン配列調整アダプタが登場した。インテル自身もピン配列互換上位CPUを供給した→オーバードライブプロセッサ。 インテル Pentium ピン配列互換CPUは登場したがインテルがそれを嫌い、AMDと訴訟を起こした。これにより互換CPUメーカーはSocket 7を最後にピン配列互換CPU市場から撤退した。 P54C Pentiumとi430FX "Triton"チップセットにより、拡張バスは大きな転換期を迎えた。CPUのバスはノースブリッジを経て、標準化されたPCIバスに接続するという設計スタイルを確立し、拡張バスはCPUのCPUバスと完全に決別した（ただしエンディアンの問題は解決されなかった）。 インテル Pentium Pro バスドライブ方式にGTL方式を採用しP6アーキテクチャとして以後インテルが発売したCPUが持つCPUバスの基本となった。バスドライブ方式は低電圧化に伴い改良され、プロトコルも追加改良されていく。CPU内部でCPUバス上に複数のコアを結合したデュアルコアCPUも登場した。 DEC Alpha EVシリーズ毎に特徴のあるバス方式を採用していた。そのうちEV6バスはAMDにライセンスされAthlonで採用され、後に改良されLSI間接続バスHyperTransportになった。 AMD K8アーキテクチャ (Opteron/Athlon 64) ノースブリッジの一部の機能をCPU上に集積し、メモリアクセスバスと拡張バスを分離した。拡張バスにはHyperTransportを備える。この方式によりメモリアクセスのレイテンシが少なくする事ができ、また高速かつ標準化されているHyperTransportによって周辺デバイス・拡張スロットを充実する事ができる。 Opteronシリーズには、特別なハードウエアを用いなくてもNUMAを構成できるプロセッサがある。PC/AT互換機のプラットフォームを崩さず、特別なチップを介さずともNUMAを実現できたのはOpetronプロセッサが最初である（x86ベースのNUMAアーキテクチャマシンはPentium Pro時代から存在していたが、特別なチップセットを必要としていた）。 ミップス・テクノロジーズ MIPSアーキテクチャ MIPSシリーズはIPコアとしてよく使われる（ARM IPコアが携帯電話における標準となるまでは、世界で最も多く使われたCPU・IPコアである）。IPコア上のバスとしてOCPバスを策定した。このバスはコアを複数接続し、処理能力を倍増する事ができる。 東芝はTigerと呼ばれるi486DXピン互換MIPSプロセッサを開発した。PC/AT互換機の豊富なハードウエア資源と市場を、MIPSプロセッサと同プロセッサ上で動作するオペレーティングシステムへ導く橋渡し役として期待されたが、商業的に成功しなかった。以後同社はピン互換CPU市場からヘテロジニアスマルチコア開発へ方針転換し、ソニー・コンピュータエンタテインメントのPlayStationプラットフォームで結実し、特にEmotion Engineは高い評価を得た。 トランスメタ Crusoe CPUバスはCPU内部で終端している。メモリバスとPCIバスがそれぞれ用意されている。AMDのK8アーキテクチャと似ているが設計意図は異なる。CPUバスに高電圧高周波数の信号をやりとりすると多大な電力が輻射として損失になるが、チップ内に収容し低い電圧と最短距離でノースブリッジに接続することで損失を抑えている。これにより極めて低い消費電力で動作した。 IBM Cell CellアーキテクチャはCPUバスに相当するバスをチップ上に持つ。さらにチップ上でメモリアクセスへのパスとPPEコア・SPEコア間を結ぶバスを分離している。CPUバスをコアに集積し性能向上を図った最新の例と言える。このプロセッサの実力はこれから評価される事になるが、同チップのテクノロジを流用したPXプロセッサ（Xbox 360で採用）はソフトウエアでPentium IIIをエミュレーションし750MHz相当という恐るべき性能を発揮した。 NEC SXシリーズ CPUバスはCPUチップからMCM上で各種コントローラと接続されCPUユニット上で完結している。メモリバスはメモリコントローラを経て、CPUユニット間バスと共にリード線で一次記憶ユニット郡と結ばれている。膨大な本数だが信号の同期を図るためにリード線の長さは全て等長にされており、配線を格納しているエンクロージャーにリード線の束が何重にもなって格納されているさまは圧巻である。地球シミュレータではクラスタ構成要素の距離が不均等になる事から、それを吸収するための特別なユニットが設けられている。 ハードウェア コンピュータ・アーキテクチャ CPUソケット