UltraSPARC T1 は "SMT" ではなかった

こないだ

1 GHz, 8コア×4-way SMTのT1

と書いてしまったが,Wikipedia情報だとこれは間違いらしい.言葉遣いをよく知らなかった.

SMT (Simultaneous MultiThreading) はスーパースカラ(複数の実行ユニット)が大前提で,複数の実行ユニットがあっても遊ぶ可能性が高いから2スレッド(以上)分の命令を(タグか何かで区別できるように拡張した上で)混ぜて突っ込んでみましょう.という定義か.Intel NetBurst, Nehalem, Sandy Bridge, Atom の HT (HyperThreading) やIBM POWER5..7, Cell PPEが該当する."Simultaneous" と名が付いたのは,複数の実行ユニットにより複数スレッドが「同時」に処理される(ことがある)からってことか.
UltraSPARC T1や,あとCUDAもそうだと思うが*1,レイテンシの隠蔽のために複数スレッドの命令をinterleaveさせるハードウェア機構を持つMPUは「バレル型」と呼ばれてるらしい.確かによく見ると真の意味で「同時」に実行されるスレッドは無いかも.オーバーラップしてはいるけどね.両方を含む言葉は「ハードウェア・マルチスレッディング」とあるな...
どうでもいいが日本人には RAW (Read after Write) って覚えづらくない? なんで Write → Read の順に起きるのに単語上では Read が先に来るんだよ! この辺,ペーパーテストを指針に習った英語ではどうにもなりませんね... 感覚がつかめない.

*1:怪しい記憶に基づいていい加減に書くと... 実行ユニットの中は16-way SIMD ("half warp") で,そこに2(ハードウェア)スレッド分の命令を強制的にinterleaveするが故に,"warp size" は 32 (論理)スレッドとなる.さらに,レイテンシを隠したければ2(ハードウェア)スレッドでは全く足りず,実に 6 warp (12ハードウェアスレッド; 192論理スレッド)を突っ込んでinterleaveせねばならない.