0001名無しさん必死だな
2018/01/10(水) 10:17:37.75ID:wKdBJl8/0消費電力もガバ上げで原発メルトダウン待ったなし
関連情報
Finding a CPU Design Bug in the Xbox 360 | Random ASCII
https://randomascii.wordpress.com/2018/01/07/finding-a-cpu-design-bug-in-the-xbox-360/
Xbox 360で採用されているIBM製のCPU「PowerPC」にも似たようなCPU脆弱性が存在
日本製CPUのCellを採用したPS3には無関係の話
このCPU脆弱性問題の原因とされている技術「投機的実行」に関して、ゲーム機Xbox 360時代から投機的実行に基づくバグがあったことをゲーム開発者が明らかにしています。
Finding a CPU Design Bug in the Xbox 360 | Random ASCII
https://randomascii.wordpress.com/2018/01/07/finding-a-cpu-design-bug-in-the-xbox-360/
Googleで働くソフトウェアエンジニアのブルース・ドーソン氏が、自身のブログ「Random ASCII」で、かつてのXbox 360で苦労したCPUバグについて述懐しています。
このバグは、今話題のメルトダウンやスペクターと基本的には同じ構造を持つとドーソンさんは述べています。
Xbox 360で採用されていたIBM製のCPU「PowerPC」は、3つのCPUコアと1つのL2キャッシュメモリを持っていました。
3コア+1MBのL2キャッシュという独特の構造のPowerPCには、L2キャッシュをバイパスしてL1キャッシュに直接データをプリフェッチできる「xDCBT」命令がオプションで追加されました。
データのプリフェッチがパフォーマンスに大きな影響を与えることから、積極的にxDCBT命令オプションを利用しようとしたゲーム開発者は多かったそうですが、
ヒープクラッシュを頻繁に起こしてしまうことがあり、ドーソン氏はゲーム内のコードから、xDCBT命令を取り払ったそうです。
しかし、xDCBT命令を使っていないコードでも深刻なクラッシュ現象に悩まされたドーソン氏は、
IBMに電子メールでCPU内部の構造について説明を求めた結果、PowerPCは非常に長いCPUパイプラインを採用していることがわかったそうです。
下の模式図がPowerPCのCPUパイプライン。
ドーソン氏は命令を順序通りに実行するインオーダー実行型のCPUとはいえ長すぎるパイプラインだと述べています。
上の模式図の「Branch Predictor」では「予測」が行われ、その予測はフェッチされ、デコードされ、実行されます。しかし、予測は正しいことが確認されるまで破棄されないで保持されます。
これは、メルトダウンやスペクターにおける投機的実行とほとんど同じ構造です。
ドーソン氏によると、Branch PredictorとxDCBT命令の相性は極めて悪いことがわかったとのこと。
ドーソン氏は同僚とともに、ゲーム内のxDCBT関連コードをすべてブレークポイントに置き換える実験をしたところ、
「ブレークポイントは実行されない」「クラッシュがなくなる」という2つの現象が確認されました。
Branch Predictorがゲームのコードの安定性に悪影響を与えていることが明らかに。