PowerPC7400のMPC7400 Part Number Specicationが発表されました。この資料の性格から、おそらく現状のG4 chipの実際の諸元に最も近い値が表記されていると考えられます。
これによるとXPC7400RX450PGと呼ばれる450MhzのPowerPC G4は、コア電圧が2.15Vで、消費電力は通常8.9W、最大16.3wであり *1、これまで言われてきた消費電力 *2,*3 より大きい様です。特に最大消費電力はこれまでのPowerPCシリーズの中で最大級となりました。
また注目すべきは既に、Revision E (Device Rev 2.2)のPowerPC7400, 400MHzとRevision G (Device rev 2.6)が混在するということと、350MHzではありますが、Die-Junction温度105度を保証した *1、ポータブル機搭載可能なG4が存在するということでしょう。
|
さて、今回はG3とG4とのL1 cacheの違いに触れてみたいと思います。既にG4アクセラレーターカードを入手した人々はアプリケーションベンチマークを実行し、G3とG4との性能差がとても小さく、同一動作周波数のPowerPC G3とG4を比較した場合、一部のアプリケーションではでは、数%性能が劣るとして、PowerPC G4があたかもG3コアにAltiVecが付属しただけのCPUであると評価しています。確かにAltiVec以外のインストラクション実行スピードに変化はほとんどなく、唯一倍精度かけ算命令が33%性能が向上しただけの変化です *4。実際には、かけ算命令の性能向上がPhotoshopのフィルターなどのベンチマーク向上に現れているようです。
私が注目したのはL1 cacheの取り扱いの違いです。両者の容量は共に32Kbyteと同じですが *4、その動作には違いがあります。
|
PowerPC G3には32KbyteのData cacheと32Kbyteの命令キャッシュが独立してあります。Level 1 cacheはCPUコア内部にあって、全てのメモリのアクセスを司るLoad/Storeユニットから高速にアクセス出来るように設計されています。G3 CPU L1 cache and Load/Store Unitの緑の一マスは32bit(1word,4byte)で、Cache内部では32byteをひとかたまりに管理されます。問題はLevel 1 cache内部に見あたらない、新しいエリアにメモリアクセスした時に発生します。
L1 Cacheミスが発生すると、メモリ(L2cacheを含む)からメモリが直接Level 1 cacheに展開され、最初のアクセスは成就します。しかし、PowerPC G3は32Byte、1ラインが全て埋まるまで、同じユニットにはアクセス出来ず、パイプラインは停止(Stall)してしまいます。Level 1 data cache Tagが直後に書き代わるため、同一ブロックへのアクセスは禁止されます。
|
これは隣接するメモリをすぐに読み込めないということです。
これに対し、PowerPC G4ではどうなっているのでしょうか。
PowerPC G4では新たにLoad Fold Queue(LFQ)ユニットが新設され、メモリが読み込まれた直後から、どの部分にもアクセスが出来ます *4。そのために連続した近隣のデータ読み出しが起こってもパイプラインがStallすることはありません。LFQユニット内部のデータは次のキャッシュミス発生時にLevel 1 Data cacheに書き出されます。
この機構はまさにMacOSの為にあるのではないでしょうか。G3に最適化されたプログラムであれば、極力この様なデータ配列にならないように最初から考慮されているはず。だからベンチマークにあまり差が出ないのかもしれません。MacOSのデータ受け渡しは68Kの時代から引
|
きずったフォーマットであり、パイプラインstallを潜在的に引き起こす危険性が高いと思われます。PowerPC G4は、基本部分でMacOSの処理能力向上に手を貸していると考えます。
|
MOTOROLA MPC7400 POWERPC MICROPROCESSORS,Fact sheet (PDF)
|