変わった
マッカー
渡邊鼎の!言いたい放談!
 

85 私の考えた604eのお話。

読者の方:wxxxsxxxx@wxxxxx.mxxxxx.com さんから、送られてきた文章をもとに、604Eの高速化について、ちょっと考えてみました。

以前、さわりだけは書きましたが、細かく考えてはいませんでした。

今回は、もう少し考えてみましょう。

まず、60xチップとの、ピンコンパチブルを目標にすると、別のキャッシュバスは使えません。

別に、PDSスロットでコンパチビリティーをとっても良いのですが。このときは、単純に、750の用にピン数をどっと増やして、バックサイドキャッシュを付けた新604Eチップを作り、60xバスはそのまま、PDSから出し、CPUドーターボード内部でバックサイドキャッシュを完結していれば、OKだと思います。このときは、これで完了。なにも、口を挟むことはないでしょう。

で、60xピンコンパチブルとした場合、問題になるのがバス速度です。CPU自身が保証しているバス速度が83とか100MHzなどであれば、60xバスにつなぐどんなキャッシュも、この速度以上には上げられません。勿論、この範囲で2ndキャッシュに対し、83~100MHzの速度でやっても良いのですが、750のキャッシュクロックによる、実効速度の変化が、いろんなサイトで実験されていますので、おわかりでしょうが、CPUクロックと、あまり離れた遅い2次キャッシュの転送クロックは、実効速度を上げないと言うことです。よって、今後500MHz以上を考慮すべき、次期604では100MHz程度では1/5というのは、ちょっとかわいそうではないかと思うのです。

では、バスクロックを上げないで、2次キャッシュの速度を、上げる方法があるかというと、じつは、あると言えばあるんですが。

(intelでは、来年には200MHzにバスクロックを上げるようだ、という噂がたっていますね)

1・まず、簡単に・・・

今年末頃、出荷予定だという、750のパッケージに、2ndキャッシュのチップも載せちゃったCPUがそれです。以前私だけ??が、を発見して、言っちゃったニュース3月(3/18)に、IBMから持ってきて貼り出しましたが、だれも、騒いでくれませんでした。ProcessorManiaさんだけが、賛同していただきましたけど。

ま、この方法が、一番いい方法ですね。高速バスが、ドーターボード内を走り回らないから、60xバスは、これまで通りだし。

CPUのpinは、BGAの所では、コンパチです。でも、CPUのベアチップの所では、750のように、2ndキャッシュ、バックサイドキャッシュの為の配線が、CPUパッケージの中の多層配線に入ってるわけです。

これの問題点は、あまり問題ないでしょうが、熱。も一つは、キャッシュ容量です。今は、1MBで良いのでしょうが、750は、2ndキャッシュを1MB以上に出来るようには設計していません。CPU内部でやる分には、2ndキャッシュの設計変更など簡単でしょうが、キャッシュメモリーを2M〜8Mとかにだんだん増やしたとき、CPUチップに載らなくなってしまいます。熱も問題です。mercedとか、将来の64ビットチップでは、周波数が上がることと、マルチCPUなど、キャッシュ容量を増やさざるを得ない状況になることは既に予想されています。CPUチップに乗っけられるだけ、大容量の超高速SRAMが出来ていればいいのかもしれませんが。・・・

このようなとき、チップ外に2ndキャッシュを載せたいとなると、次の方法が考えられます。

2・当たり前ですが、750のように多pinを出したCPUチップにすれば、ドーターボード内で、2ndキャッシュの配線が完結します。

3・もひとつあるのが、完全ピンコンパチブルです。でもタイミングまで同じだと意味がないので、これは、改良します。

で、wsさんの提案のような、時分割バス制御ですね。

ところで、CPUは、どういう感じで、2ndキャッシュや、主記憶、I/Oへのアクセスをしているのでしょうか。
ベンチマークに一番効くのは、CPUの内部の1次キャッシュがミスヒットして、2次キャッシュにヒットしたときどれくらい早く読み込めるか、と言うことと、1,2次キャッシュがミスヒットして、主記憶から、いかに早く読み込めるかと言うところです。
604などでは、たぶん、マザーボード上の2次キャッシュやDRAMから、CPUに読み込んでいるときは、8ワード分のバースト転送をやっているのだと思います。この間は、I/Oアクセスは無い、と思います。

で、私の案ですが、ピンは60xとして、ドータボードバス速度を200〜300にまで上げます、ここに、2ndキャッシュ、キャッシュコントローラー、および、PDSバス制御のASICをつけます。CPU内部バスは、300~600MHzなどです。2ndキャッシュクロックを1/2〜2/3程度にまでは上げられるでしょう。で、ドータボードの材質をガラエポから、テフロンなど高周波特性の良い物に変えて、多層板にし、ドータボード内の配線を極力短くし、分布定数回路の設計で結線します。ガラエポでも、ある程度出きるかもしれません。PDSバス制御のASICでCPUからの線は完結しますので、マザーボード内を延々と這い回るPDSバスとは、アイソレートできます。
PDSバス側にアクセスしているとき、これまでは、延々とWaitがかけられ、CPUは待つだけでしたが、これを以下の方法で、I/O,dramアクセスと2ndキャッシュアクセスを、概略並行処理するようにします。

もしかして既に、どこかでやってるかもしれませんが・・・

CPUのチップ外に対するアクセスを待たせる手法には、一般的な、WAITさせる方法と、Retryさせる手法があります。

waitでは、待ってる間は、全て、止まっていて、待ってるんですが、retryの方では、CPU内部の制御方法によっては、別の物を並行に作動させることが出来ます。

今のCPUには、内部の実行部が、複数入っているのが普通になっています。750でも、Integer演算部は2つ入ってます。

で、あるアクセスが失敗したとき、これのretry開始を、ちょっと遅らせて、実行順番に影響しない別の仕事を先にやらせるようにします。今回の話で行けば、例えば、I/Oアクセスとか、別の命令用の2次キャッシュアクセスとか。このretry再開時間を、ソフト的に設定できるようになっていると、2ndキャッシュは最高速、DRAMアクセスは、その、アクセスタイムや、同期転送クロックの周波数、I/Oにはさらに遅いタイミングでretryさせるように設定します。DRAMやI/Oアクセス時には、500MHzのCPUはまず一回アクセスし、retry保留させます。この次に2時キャッシュアクセスなど別動作をします。その後、RETRY再開時間になったらDRAMやI/Oアクセスを再開します。ゲートウェイのASICでは、最初のアクセス時にアドレスをラッチサセ、PDSバスに対して、ずっと出し続けさせます。もちろんコントロール信号も。すると、外部のDRAMコントローラーなどが、最初のアクセスからずっと動作していて、CPUがretryした頃には、データが準備できてるとか。

これで、平行動作できるようになりますが、問題があります。一昨日書いた、bus-snoopです。外部のバスマスターがアクセスして変更したDRAMがあるか、いつも監視していて、合った場合、PDSバスより内側のキャッシュに、同じアドレスの情報がないかチェックし、合った場合、外部と同期させる動作をさせます。

PDSアイソレートのASICによって、外部バス(PDSバス)が絶縁されていますので、これまでのようにCPU自身が内蔵するbus-snoop機構によって、監視することができません。よってこのASICには、bus-snoop機構が必要になります。しかも、内部外部ともに別動作をさせたいわけですから、bus-snoopによる結果、実施すべき内部キャッシュの同期動作を、覚えておき、CPUなどに対し実施させる機構や、そのバッファも必要になるかもしれません。

で、考えたんですが、1クロックだけ、外部バスsnoop時間を、外部バス動作に同期して、作動させる方法もあり得ますね。すると上記Bus-snoop機構はCPU内蔵のモノが使える。

てな感じですが、結局、結構大規模なASICになってしまいますね。開発費で数千万以上??、ASICの単価で数百円以上数千円???かかるかもしれません。

ちょっと、やりにくいですね。

やはり、1チップのパッケージ内で完結するのが一番いいように感じます。

パッケージをもっと大きくしてもいいじゃないですか、2次キャッシュをもっとたくさん、マルチCPUももっと多く、1パッケージに入れて欲しいですね。

でも、こんなのも、開発予定に入ってると思いますよ。

 

てなかんじですが、私だったら、1か2の方法をとりますね。

では。本稿、ここまで。


[Home] [Linkし放題] [Fleamarket]