ツインテール…えええ。

ツインテールについて検索してみて分かったこと。
このシステムって卒論だったんだ…。なんてこった。
http://www.mtl.t.u-tokyo.ac.jp/publications/paper/2005/J05-thesis-haruka.pdf
http://www.mtl.t.u-tokyo.ac.jp/publications/paper/2006/J06-thesis-horio.pdf
コンピュータアーキテクチャレベルで10%の速度アップって快挙じゃないか思うんだが、卒論からでもこんなものが出てくるんだね。


ひとまず理解したと思うことを以下に述べるよ。間違っていたらご指摘plz。


フロントエンド実行というものがある。フロントエンド実行とは、アウトオブオーダー処理の要である命令ウィンドウよりも前に計算を行うことである。アウトオブオーダー処理はデータの依存関係をうまく解消することで速度の向上が図れるが、実際には必ずしもうまく動作するわけではない。そこでフロントエンド実行である。命令ウィンドウよりも前段階で計算を行うことで、最適に命令が実行されない場合に備えるのだ。
ただフロントエンド実行は単純にステージ数が増えてしまう。そこでフロントエンド実行する部分を並列にした、というのがツインテールアーキテクチャの始まりのようだ。ツインテールアーキテクチャでは、アウトオブオーダー処理に必要な計算をインオーダーテールの方で行ってしまうことで速度向上を図っている。感覚的には、インオーダーテールはアウトオブオーダーテールのサポート役みたいなものか。
H18平井遥氏の卒論時点での課題は、いかにしてアウトオブオーダーテールはインオーダーテールの処理終了を認識するか、だ。インオーダーの計算が1サイクルだけであればwakeup理論*1によってアウトオブオーダーテールの処理をすぐさま実行できるらしいが、計算が2サイクル以上であったときにはこれまでのwakeup理論をそのまま利用するだけではアウトオブオーダーテールはインオーダーテールの処理終了を検知できないようで、理論の改良が必要だという。


そんな感じでしょうか。論文読むのなんてはじめてだ。

*1:詳しくは知らないですごめんなさい