検索
連載

スーパースカラって何?Q&Aで学ぶマイコン講座(35)(3/3 ページ)

マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、初級者の方からよく質問される「スーパースカラって何?」です。

Share
Tweet
LINE
Hatena
前のページへ |       

実際のスーパースカラ

 ここでは、ARM Cortex-M7プロセッサ(以下、Cortex-M7)を搭載したマイコン「STM32F7シリーズ」(STマイクロエレクトロニクス製)を例にとって説明します(図4参照)。


図4:実際のスーパースカラ(STM32F7の場合) (クリックで拡大)

 デュアルのスーパースカラなので、ALU(Arithmetic and Logic Unit)が2つあります。命令コードを64ビット(32ビット命令×2)でフェッチしてきて、2命令を同時にデコードし、デコードした結果を、2つのALUに発行(Issue)します。そして同時実行します。

 命令をフェッチしてからデコードするまでは3段のパイプライン処理です。デコード処理が2段になっており、最初のデコード(Decode)はそのままデコードと呼んでいますが、2つ目のデコードは発行(Issue)と呼ばれています。デコード(Decode)した命令を、後段の実行パイプラインに発行(Issue)します。

 論理演算命令(シフト含む)と算術演算命令はALUが実行しますが、その他の命令は専用のパイプラインが用意されていて、別のハードウェアが実行します。デコードされた命令の種類によって各パイプラインへ振り分けられます。そして、これらも並列処理されます。ロード/ストアー命令はロード/ストアーパイプラン、複雑な積和演算命令などはMACパイプライン、浮動小数点演算は浮動小数点演算パイプラインです。

スーパースカラの利点と欠点

利点

 複数命令を同時に実行しますので、総合的なパフォーマンスが高くなります。しかし、実際は単純な複数倍にはなりません。

 なぜなら同時にデコードされた複数の命令の組み合わせによっては、同時に実行ができない場合があるからです。

 例えば、一方の演算結果を、もう一方の演算が使用する場合は、同時に演算できません。また、条件分岐なども、最初の演算の結果によって次に実行する命令が決まりますので、同時実行はできません。そのため、総合的には、複数本のパイプラインがあるからといって、パフォーマンスが単純な複数倍にはなりませんが、それでも高性能になることには変わりありません(一般的にはデュアルのスーパースカラはシングルパイプラインの1.6倍のパフォーマンスになるといわれています)。

 しかし、同時実行できない命令を、統合開発環境のコンパイラが同時実行しないように並び替えてくれる機能(オプション)があります。その機能を活用すれば、最大限パフォーマンスを上げることができます。統合開発環境の中には、製品を選択すると自動的にスーパースカラ対応になるコンパイラもありますが、ユーザーがオプションを選択する場合もありますので、注意と確認が必要です。

欠点

 パイプライン回路を複数個持つため、マイコン内部のハードウェアは増加し、複雑になります。また、並列処理プロセスの制御回路も必要になります。ハードウェアが増えると、製造コストに影響し、一般的にはマイコンの価格が高くなります。そのため、マイコンの開発者は、効率よく論理回路を構成して、価格も最低限に抑えなければなりません。例えば、図4のALUパイプラインでは、上段のパイプラインにはシフト回路が入っていますが、下段には入っていません。これは、シフト命令のパイプラインを1つにしても、パフォーマンスにはあまり影響しないと考え、下段のパイプラインでは、シフト回路を節約した工夫といえます。

次の記事を読む

筆者プロフィール

菅井 賢(すがい まさる)
(STマイクロエレクトロニクス マイクロコントローラ製品部 アプリケーション・マネージャー)

 日系半導体メーカーにて、25年以上にわたりマイコンの設計業務に携わる。その後、STマイクロエレクトロニクスに入社し、現在までARM Cortex-Mプロセッサを搭載したSTM32ファミリの技術サポート業務に従事。ARMマイコン以外にも精通しており、一般的な4ビットマイコンから32ビットマイコンまで幅広い知識を有する。業務の傍らマイコンに関する技術論文や記事の執筆を行っており、複雑な技術を誰にでも分かりやすい文章で解説することがモットー。


Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る