SMTはいらない子か
参考
https://gigazine.net/news/20191230-simultaneous-multithreading/お断り
頭の中に浮かんだ適当なイメージで話をしているとお断りをしておきます。SMTとは
SMTは1つのコアを2つあるように見せかける技術です。実際のコアを論理上のコアで分けています。
これによりCPUの処理性能が30%向上されると言われています。
たしかに動画をレンダリングすると処理時間が早くなったりします。
ただし、同一のコアに2つコアがあると見せかけている技術なので、レンダリング中の1コアの使用率100%の場合、論理コア1つ分の処理性能は50%+α程度の性能しか発揮できません。
SMTの利点
SMTが有利な点としては、SSDやメモリへのアクセスする経路が増えてきたことから、コアがアクセスしにいく回数を増やしても問題がないだろうということで実装されているのではないかと思います。つまり、帯域が余ってるなら使い切ろう。
道路が空いているならその道路に走らせる車の量を増やしていこうという技術だと思っています。
SMTの欠点
ですが、道路を通って向こう側に移動するには時間がかかります。したがって、マルチスレッディングに対応しはじめたころのプログラムに限っては有利な話ではありますが、完璧にコア性能を引き出されるようなプログラムではSMTは意味がないのではないかと思います。
つまり、いままでは道路の向こう側に資材置き場がありましたが、処理工場にも倉庫を設置できるようになってきたので、道路の広さ自体はあまり意味がなくなったようなものでしょうか。
具体的には、CPUキャッシュ>DRAMキャッシュ>SSDキャッシュ>SSDの順で優先度がしっかり管理がなされてきたということだと思います。
アクセスの管理がされるようになり道路が混まなくなった、というイメージが頭に浮かんでいます。(思いつきですので、正しいかどうかは知りません。)
ゲーマー目線
また、ゲーム用のプログラムでは、マルチスレッディングに対応しても6つのコアしか使いませんといったようなケースもあるかもしれません。このようなプログラムで使用するコアが、論理コアとして同一の実際のコアに割り当てられてしまった場合、SMTでは逆効果になっていると思います。
これではコア性能を100%発揮できないからです。
したがって、利用者が意図的に実際のコアに使用する論理コアがかぶらないように指定してあげると性能を回復できるでしょう。
対処法
私はApplicationPriorityChangerというソフトウェアを用いています。タスクマネージャーからコアが被らなくすると遅くなるというのを発見してから、自動的にコア管理してくれるサービスとして当ソフトウェアを利用しています。
よくわからなければ(私もよくわかっていませんが)、ゲーム用のPCと作業用のPCで分けてしまえば問題ないと思います。
その際にゲーム用のPCはSMTを切ってしまいましょうといった感じでしょうか。
結論
・基本SMTは要らない。SMTはBIOS上で切ることができる。・SMTを利用することで、一部ソフトウェアは処理性能が向上するケースもある
・SMTを利用することで、一部ソフトウェアは処理性能が低下するケースもある。
利用するコアを指定することで上記デメリットは回避することが可能である。
以上
コメント
コメントを投稿