リプレイシステム

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

リプレイシステム: Replay system)は、Intel Pentium 4 プロセッサのあまり知られていないサブシステムである。リプレイシステムの主要な機能は、プロセッサの命令スケジューラによって誤って実行に回された処理を捕捉することである。リプレイシステムによって捕捉された処理は、その後適切な実行に必要な条件が満たされるまでループの中で再実行される。

リプレイシステムの起源[編集]

リプレイシステムはインテルの、クロックスピードを増加させ続けるという今や存在しない探求の結果として生まれた。こうした高いクロックスピードは、非常に長いパイプラインを必要とした(Prescott コアで 31 ステージ)。このため、Prescott コアはスケジューラと実行ユニットとの間にステージが6つも存在する。許容できるパフォーマンスを維持しようとする試みの中で、インテルの技術者はスケジューラを非常に楽観的な設計にしなければならなくなった。

リプレイシステムの動作[編集]

Pentium 4 プロセッサのスケジューラは非常に積極的で、うまく実行できる保証がなくても命令を実行に回してしまう(特に、スケジューラはすべてのデータが L1 キャッシュに存在すると仮定している)。実行が失敗する典型的な理由はデータが利用できないことで、それはほぼキャッシュミスのためである。このとき、リプレイシステムは動作を開始する。リプレイシステムはスケジューラに停止するよう信号を送り、失敗した依存のある命令列を、実行が成功するまで繰り返し実行し続ける。

性能上の考察[編集]

皮肉にも、特定のケースでリプレイシステムが性能に非常に悪い影響を及ぼすことがある。通常の状況では、Pentium 4 の実行ユニットは、およそ 33% の時間使用されている。リプレイシステムが起動されると、ほぼすべてのサイクル実行ユニットを占有してしまう。これは、だんだんと重要さを増しているアーキテクチャ設計の指標である消費電力を増大させるが、実行ユニットはアイドル状態であるかのように振る舞うだけであるため、性能上のペナルティはない。しかし、ハイパースレッディング が使用されている場合、リプレイシステムは他のスレッドが実行ユニットを活用できないようにしてしまう。Prescott では、Pentium 4 は実行ユニットを占有する時間を低減させるリプレイキューを装備するようになった。これが、ハイパースレッディングに関してパフォーマンスの低下が見られた真の理由である。一方で、各スレッドが異なる種類の処理を実行している場合、リプレイシステムが処理を妨げることはなく、パフォーマンスの向上が見られる。ハイパースレッディングのパフォーマンスがアプリケーション依存であるのはこうした理由によるものである。

参考文献[編集]