次期 Itanium は VLIW 実行を止める

# 注 この話は誤報だったようだ id:nminoru:20111121:poulson (2011/11/21)

  1. Real World Technologies | Poulson: The Future of Itanium Servers
  2. Ando's Processor Information Page | 最近の話題 2011年6月4日
  3. PC Watch | 【ISSCC2011レポート】IntelとAMDが次世代64bitプロセッサの概要を公表

Itanium(IA-64)アーキテクチャVLIW(Very Long Instruction Word) 風の命令セットを持っていた。この VLIW では、3つの命令が入った16バイトの命令バンドルを基本とし、命令バンドルを前後につなげて命令グループを構成し、命令グループは資源が許す限り同一サイクルで実行可能である。ただし Itanium は命令バンドル内の各命令の終わりに(制約はあるものの)ストップビットを打つことができ、命令バンドルの途中で命令グループを打ち切ることができる。この点が単なる VLIW と異なるので、Intel は EPIC(Explicitly Parallel Instruction Computing)と呼んでいた*1

この EPIC によってアセンブラコンパイラが明示的に命令並列性を指定するのが IA-64 アーキテクチャの最大の特徴だった。

しかし 1. の記事によると、最新の Poulson は VLIW を捨てて、Out-Of-Order 実行に移るという。

EPIC は命令バンドルを連結することでいくらでもグループ内の命令を増やすことができるが、Itanium2 シリーズは命令バンドル2個分を含んだ命令グループつまり最大6命令までしか実行できない。長すぎる命令グループはかえって性能を落とすので、これまでの IA-64 用バイナリは Itanium2 シリーズに特化したバイナリを作成していた。

そのため 3. の「ISSCC2011 で Poulson は 11 段パイプラインの 12 命令同時実行と発表」という記事を読んで、「EPIC で 12 命令を同時実行するためには、4 バンドルを貫通する命令グループが必要だ。既存のバイナリは 2 バンドル同時実行用に最適化されており Poulson では性能がでない。かといって Poulson に特化すると、Tukwila 以前の CPU での性能がぼろぼろになってしまう。かといって 2 バージョンに分けて OS やアプリを提供するほどの市場はないし」と思っていたのだ。

それが結局、EPIC を捨ててスーパースカラーな Out-Of-Order 実行になってしまうという。まあ、すでに IA-64 版の開発は、 MicrosoftWindows Server を(id:nminoru:20100407:itanium)、RedHatRHEL を、Oracle が全製品を (id:nminoru:20110324:itanium) 止めたところなので、過去のバイナリとの性能互換性を失うような拡張はできないよな。

気になった Poulson の特徴を列挙

  • Out-of-order 実行をするために register renaming をやる。これはフロントエンドのデコードフェーズで実行される。
  • Instruction Buffer (IB; おそらく Reorder Buffer に相当すると思われる)が 32 バンドル、96 命令分を待機させる。IB はスレッド毎に存在する。
  • IB は内部に ALU, Integer, FP, Branch, Memory の 7 種類のキューを持ち、各演算器の空きを待っている。
  • ロード・ストアは1サイクルの4種類出せる。
  • Multithreading は、Montecito 以降は主にキャッシュミスを契機とした SoEMT モデルを採用していたが、より粒度の細かい "fine-grain multithreading" となり数クロック毎にスレッドを切り替える。

IA-64命令をOut-of-Order実行しても大丈夫か?

EPIC の命令グループは VLIW 的に 1 サイクルで同時に実行されることが前提だが、バンドル内の各命令は Slot0 → Slot1 → Slot2 のように逐次実行されても正しく動作するように並べてある。実際、割り込みは命令単位で発生するので、割り込みから復帰した場合にはバンドルの途中から再実行されるのだ。

そのため Itanium プロセッサを Out-of-Ordre 実行モデルに変えるのは問題ないと思われる。

*1:このストップビット機能を巡ってIntergraphから特許訴訟を起こされたこともあった。http://t.co/lQZkxaD http://t.co/QDebGJz http://t.co/iQMyz7J