最も遅いCPU命令を競う「Assembly Hall of Shame」

원제: Assembly Hall of Shame

왜 중요한가

CPU命令の最悪ケース性能を体系的に測定するアプローチは、リアルタイムシステムやセキュリティ研究における最悪実行時間(WCET)分析の知見に貢献する。

セキュリティ研究者xoreaxeaxeaxが、x86 CPU命令の「最低パフォーマンス」を競うプロジェクト「Assembly Hall of Shame」をGitHubで公開した。現在の王者はfxrstor64命令で、PCIeファブリック経由のMMIO領域から512バイトのFPU/MMX/XMM状態を読み込む際に意図的に競合を発生させることで極限の低速化を実現している。

「Assembly Hall of Shame」は、命令レイテンシ分析の通常の目的である「高速化」とは正反対に、単一命令が達成できる最低のパフォーマンスを追求する実験的プロジェクトだ。GitHubリポジトリにはfsin、idiv、rdrand、wbinvd、mfenceなど数十種類の命令に対するベンチマーク用コードが収録されている。

現在のx86部門チャンピオンはfxrstor64命令。この命令はFPU・MMX・XMMレジスタの512バイト状態をメモリから復元するものだが、プロジェクトでは復元元をPCIeファブリック上の高レイテンシMMIO領域に設定。さらに複数のハンマーコアが別のMMIOレジスタに対して4バイト読み取りを連続実行することでPCIeルートコンプレックスを飽和させ、CPU 0のfxrstor64が大量の非ポステッドトランザクションの後ろにキューイングされる状況を作り出している。

リポジトリにはlock_hammer_fxrstor64、split_lock_hammer、vpgatherddなど複数の「汚名候補」命令が含まれており、各命令のパフォーマンス測定ツールも同梱されている。ライセンスはMITで、コミュニティからの新たな「最遅命令」候補の貢献を歓迎している。

출처

github.com — 원문 읽기 →