ablog

不器用で落着きのない技術者のメモ

プロセッサのマルチスレッド

プロセッサを支える技術  ??果てしなくスピードを追求する世界 (WEB+DB PRESS plus)

プロセッサを支える技術  ??果てしなくスピードを追求する世界 (WEB+DB PRESS plus)

  • 本来、スレッド(Thread)というのはソフトウェアの用語で、プログラムを並列的に実行できる部分に分けたそれぞれの部分を指す。
  • このような複数のスレッドを並列に実行できるハードウェア機能を持つプロセッサを「マルチスレッドプロセッサ」と呼ぶ。
  • プロセッサはキャッシュを持っているが、キャッシュミスしてメインメモリまでデータを取りに行く場合、クロック周波数が2〜3GHzとすると100サイクルかそれ以上かかる。4命令を並列に実行できるスーパースカラプロセッサの場合は、400命令以上も実行できる時間が無駄になる。
  • VMT*1(垂直マルチスレッド) は複数のスレッドを切替えて実行する。
  • SMT*2(同時マルチスレッド) は複数のスレッドの命令を混ぜて実行する。
  • Intelプロセッサの「ハイパースレッディング」(Hyper Threading)というのはIntelマーケティング上の呼称で、NehalemアーキテクチャのプロセッサはSMT方式のマルチスレッドをサポートしている。
  • 1997年にIBMはPOWER3プロセッサにVMT方式を採用したが、性能向上率が小さく Poor man's multiprocessor と陰口を叩かれていた。
  • マルチスレッド化によるスループット性能向上効果は10〜30%程度。
  • 喩えて言うと、マルチスレッドは作業者のヒマな時間を有効に使うために複数の仕事を掛け持ちでやらせるようなもので、掛け持ちの作業のために多少、工具や機械などを増強したというようなもの。
  • 一方、マルチコアはその程度の生産性向上では間に合わないので、作業者を2人、4人と増やすようなものという違いがある。

*1:Vertical Multithread

*2:Simultaneous Multi-thread