アプリ版:「スタンプのみでお礼する」機能のリリースについて

質問させてください。

CPUの高速化の技術として、マルチコアとスーパースカラというものがあります。
どちらも並列処理を実現するもので、

マルチコアはCPUのコアを複数配置する方法。
スーパースカラは1つのコアの中に処理系統を複数配置する方法。

というのはわかるのですが、それって結局同じことではないかと混乱しています。

CPUのコアの中には、演算装置、制御装置、レジスタなどがあると認識していますが、例えばスーパースカラの場合、その中のどれか一つが共有されているとか、そういうことでしょうか?
ただその場合、共有するところは並列作業が実現できなくなると思うのですが・・・。

どなたかご存知でしたらお教えください。

以上よろしくお願いします。

A 回答 (5件)

スーパースカラは並列処理を実現する技術ではなく、内部的な並列実行によってシングルスレッドの処理速度を上げる技術である。

命令列が潜在的に持つ並列性を越えることはできないので、幾ら演算装置を用意しても性能の向上には限界がある。
スーパースカラでは、(内部的には複数化される場合もあるが)アプリケーションから見えるレジスタセットはCPU一つ分だけ。内部的には並列実行しても最終的には直列実行したように振る舞うため、整合性を取るために制御装置が非常に複雑化する。
アウトオブオーダー実行はこの延長線上の技術になる。アウトオブオーダー実行ではメモリへの書き込み順序が変わってしまうような場合もあるが、基本的にはCPU外部からはCPU命令列をその順番に実行したように見えるように調整する。
なお、ハイパースレッディングはシングルコアの中にレジスタセットを複数配置することでスーパースカラで使いきれない演算装置を有効活用しようとする技術になる。

マルチコアは、一つのCPUチップの中にCPUを複数配置して並列性能を高める技術で、並行して実行したい処理が多数あれば性能が上がるが、シングルスレッド用プログラムしかないとマルチコアにしても性能は上がらない。多くの場合、それぞれのCPUコアの中ではスーパースカラ技術も使われている。
    • good
    • 0

>単体のスーパースカラ以上の性能を出そうとして出てきたのがマルチコアです。


それインテルのハイパースレッティングに代表されるようなハードウェアマルチスレッディングの方。
マルチコアはマルチプロセッサの延長線の方の技術。
    • good
    • 0

>スーパースカラは1つのコアの中に処理系統を複数配置する方法。



よくこういう解釈を見かけますが、これは正しくありません。スーパースカラの定義は、複数命令を同時発行できるというものです。ですから、スーパースカラでありながら処理系統が一つしかないというCPUも理屈の上ではあり得ますが、複数命令を同時発行しておいてその先の演算器やレジスタのポート数が一系統しかないというのでは、リザーベーションステーションに命令がどんどんたまっていくばかりで性能がでません。それでは複数命令発行にする意味がないため、結果的に複数の演算器をもちパイプラインも複数持たせて、並列処理をできるようにしているわけです。

> 例えばスーパースカラの場合、その中のどれか一つが共有されているとか、そういうことでしょうか?
ふつうは、複数のパイプラインがそれぞれ異なるリソース(演算器、レジスタのポート、バスなど)を使うように制御しますから、それをできるだけの演算器の数やバスの本数が必要になります。場合によってはリソースを共有する必要があったりしますが、基本的にはできるだけ共有しないように制御します。

マルチコアとスーパースカラで同じくらいの並列性を持たせようとすると、理屈の上ではチップ上の演算器の全数は同じくらいになりますから、たしかにあなたのいうとおりマルチコアでもスーパースカラでも大局的には同じじゃないのというのは、その通りです。しかしスーパースカラでマルチコアと同じくらいの並列性を持たせようとするのは現実的には不可能でしょう。
たとえばコアが16個載っているチップがあって、それぞれのコアのパイプラインは一本だけとします。これと似たようなことをスーパースカラーでやろうとすると、16命令同時発行にすることになります。16命令同時発行となるとパイプラインも16本ということになりますが、スーパスカラでは命令間の依存はすべてハードウェアで解消することになりますから、これをやるにはとんでもない物量の論理が必要で(巨大なリザーベーションステーション、大量のレジスタポート、効率の良い命令ディスパッチのアルゴリズムなど)、また物量が増えれば制御も複雑になり、クロック周波数を上げることが難しくなります。スーパースカラでは、性能とトランジスタの物量を天秤にかけると、4命令から6命令同時発行くらいが落としどころでそれ以上になるとかける物量に対する性能向上の割があいません。そこで、単体のスーパースカラ以上の性能を出そうとして出てきたのがマルチコアです。
    • good
    • 2

 検索でマルチコアとスーパースカラを調べれば詳しく書かれているはずです。

以下のリンクを参照すればわかると思います。

 マルチコア:http://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%AB% …
 スーパースカラ:http://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%BC% …

 簡単に言いますと、マルチコアは複数のCPUを同時に並列実行して処理を高速化する技術です。複数のソフトウェアを同時に実行するなどで威力を発揮します。

 それに対して、スーパースカラはCPUの実行プロセスを細分化して並列処理出来る部分を並列化した高速化手法です。複数のパイプラインを使用して、逐次プロセスで同時並列実行しても問題が生じないプロセスを並列化して実行します。

 つまり、一つの命令を実行中に、次の命令の実行を並行しておこなうのがスーパースカラと考えて良いでしょう。複数の命令を細分化して並列実行して行けば、先の命令で演算している間に、次の命令のデータを読み込めるなど、時間の無駄が省けるからです。スーパースカラでは実行出来るCPUは1つだけで、実行出来るソフトも一つだけです。

 マルチコアは複数の処理を複数のCPUを使用して処理する方法ですが、スーパースカラは1つのCPUでデータの読み込み、演算処理、データの書き込みなどの過程を分割化して、それぞれの処理を並行しておこなうことで、先の命令を実行中に、次の命令の一部を実行出来るというもので、命令実行時間の無駄を省くのが目的です。

 つまり、データ読み込み装置、演算処理装置、データ書き込み装置があるとすれば、以下のように実行するのがスーパースカラです。

 読み込み装置:命令3実行中、命令2休止中、命令1休止中
 演算処理装置:命令3休止中、命令2実行中、命令1休止中
 書き込み装置:命令3休止中、命令2休止中、命令1実行中

 このようにすると、データ読み込み装置。演算処理装置、データ書き込み装置の3つが、どれも実行中になって遊んでいる装置が無くなります。何もしていない装置が無くなるようにしたのが、スーパースカラです。

この回答への補足

詳しい説明ありがとうございます。
ちなみにこれはパプラインにも当てはまると思うのですが、パイプラインと比べるとどう異なっているのでしょうか?
質問ばかりで申し訳ありません・・・。

補足日時:2014/07/30 17:20
    • good
    • 1

どのくらい調べた?

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!