# IBM 360/91
IBMのSystem/360ファミリのハイエンドモデル。浮動小数点ユニットにRobert Tomasuloが考案した動的スケジューリング方式(Tomasuloのアルゴリズム)を初めて実装したことで知られる(Source: [[@2019__MorganKaufmann__Computer Architecture - A Quantitative Approach - Chapter 3 Instruction-Level Parallelism and Its Exploitation]] §3.4)。
## Tomasuloのアルゴリズム開発の背景
IBMの目標は、360ファミリ全体向けの命令セット・コンパイラから高い浮動小数点性能を引き出すことであり、ハイエンド専用のコンパイラに頼らない方式を必要としていた。360アーキテクチャは倍精度浮動小数点レジスタをわずか4本しか持たず、これがコンパイラによるレジスタスケジューリングの効果を制限していた。さらに360/91はメモリアクセスと浮動小数点演算の遅延が長く、これらの制約がTomasuloのアルゴリズム(リザベーションステーションによる動的レジスタリネーミング)を動機づけた(Source: §3.4)。
360/91は複数の機能ユニットではなくパイプライン化された機能ユニットを持っていたが、その後の一般化された説明(複数機能ユニットを持つ構成)への拡張は概念的に単純だとされる(Source: §3.4)。
## その後の展開
Tomasuloのアルゴリズムは360/91のあと長らく採用されなかったが、1990年代以降マルチイシュープロセッサで広く採用されるようになった。キャッシュによる予測不能な遅延の隠蔽、非数値コードのスケジューリング難度への対応、特定パイプライン構造に依存しないバイナリ互換性の確保という3つの理由が採用拡大の背景として挙げられる(Source: §3.4)。
## 出典
- [[@2019__MorganKaufmann__Computer Architecture - A Quantitative Approach - Chapter 3 Instruction-Level Parallelism and Its Exploitation]] §3.4