- 締切済み
ハイパースレッティングとデュアルCPU対応とは?
仕事柄ビデオのエンコードを行っているのですが、エンコード時間を短縮用とハイパースレッティング対応のマシンを使用していますが、近頃デュアルCPUマシンも安くなってきているのでエンコード時間が短縮できるのであれはそちらも使用したいと考えています。 (単にHT有効なら4CPUとしてみられると思っているため..) そこで情報を収集していて、「ハイパースレッティング対応とデュアルCPU対応は別物」と言った説明をみました。 ん?、といった感じなのですが、そもそも対応の違いとはどのような違いなのかご存知の方、教えてください。 まぁ、私が使用しているソフトがどちらに(もしくは両方)対応などは不明ですが、ソフトの云々ではなくハイパースレッティング対応とデュアルCPU対応の違いを単に知りたいです。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
門外漢の私より、より踏み込んだ解説がありましたので、紹介します。 IBM にて Linux においてのハイパー・スレッドの実装について解説されています。 やはり、スケジューラーがキモになるようです。 http://www-6.ibm.com/jp/developerworks/linux/030314/j_l-htl.html
私は完全に、門外漢なのですが、 まず、ハイパースレッディングは、Pentium4 のパイプライン及び、実行ユニットを効率的に使おうという発想から使われているアイデアです。 デュアルプロセッサは、文字通り二つのプロセッサを並列に使うことで効率的に処理しようとするものです。 この二つは、並列処理を効率的に行おうという部分では同じですが、CPUの資源を完全に分離しているデュアルプロセッサと一部を共有するハイパースレッドという違いがあります。 これにより、ハイパースレッドで並列処理を行うためには、CPUの実行ユニットが片方が空いていることと、パイプラインがストールせずに実行ユニットの双方に送る命令が入らなくてはなりません。 したがって、ハイパースレッドで並列処理は考える場合は、OSなんかのスケジューラーがより適切でないとうまくいかないのでは?と思います。 また、ソフトでもはじめから、パイプラインがストールしないように命令を実行できるように最適化されていることも、必要ではないかと思います。 デュアルプロセッサでは、双方は独立しているので、バスを捕りあいすること以外は、並列に動作するのはないかと思います。
お礼
sugabeさんこんばんは。 sugabeさんの回答を読んでいて、ふと、その昔(どのくらい前かは、内緒です)アセンブラでプログラミングしていたときのことを思い出しました。 そのころ話題になっていた、パイプラインを有効にする技法。「パイプラインを有効にするには前後の命令の依存をなくす必要がある」といったものです、それと同時にデュアルCPUになった場合お互いのレジスタの内容は共有できないので一つのCPUが担当することがあります、なんて。 なんとなく違いが分かってきたような気もしますが、具体的にはどういった方法で対応させているのか知りたいと思います。
お礼
なかなか興味深い解説で読み応えがありました。 どうやらこういったことを考慮すると対応方法の違いが分かってくるのかもしれませんね。