次期 Itanium は VLIW 実行を止める、というのは嘘だった
6月24日(id:nminoru:20110604:poulson)に書いた次期 Itanium の poulson が VLIW 実行を止めて、Out-of-order なスーパースカラーになるという話は嘘だったようだ。
2011-11-20 14:46:41 via web
結局、Poulsonはインオーダだったね。RWTガセ飛ばしすぎw 12-issueってのはRENIBD/Qステージの発行幅のことでで、内訳は、Mem x2, Integer Unit x2, ALU x2, FP x2, Branch x3, Nop x1という落ちであった。
2011-11-20 14:50:18 via web
- Intel's TECHNICAL PAPER | A 32 nm, 3.1 billion transistor, 12 wide issue Itanium Processor for Mission-Critical Servers (PDF 形式)
- Hotchips | Poulson: An 8 Core 32 nm Next Generation Intel Itanium Processor
資料を読む限り命令の issue は従来通り in-oder で、12 命令を同時発行するためにはコンパイラによって 12 命令以上を含む命令グループを構成しておく必要があるようだ。
フロントエンドの命令プリフェッチは 32 bytes/cycle で、これは過去の Itanium2 と一緒。1バンドル16バイトで最大3命令が入っており、1サイクルに最大 6 命令しかプリフェッチできない*1。これで 12 命令同時実行可能というからくりは、デコードされた IA-64 命令を貯めておく命令キューの存在だ。Poulson はデコード後の命令を 96 命令までキャッシュできる。ただしこれが効くのはループコードのように命令フェッチが止まる場合だ。なので 12 命令同時実行可能なのは「命令フェッチがループのようにコード」で「あらかじめ Poulson 向けにコンパイルした場合」のみだ。
実行演算器は ALU x6、Integer Unit が x2、FP Unit x2、Memory Unit x2、Branch Unit x3 になっている*2。メモリユニット数が 2 のままというのは如何ともしがたいのね。
それとは別に以下のような命令が加わるらしい。
- 整数演算命令 mpy4、mpyshl4、clz
- スレッド制御用に hint@priority
- ハードプリフェッチ制御用に mov dahr
- ソフトプリフェッチ制御用に lfetch.count