RISCとCISC、それぞれの命令処理方式:ハイレベルマイコン講座:【アーキテクチャ概論】(3)(4/4 ページ)
すでにマイコンを使い込まれている上級者向けの技術解説の連載「ハイレベルマイコン講座」。今回は、マイコンの内部の命令処理の方式をRISCとCISCに分けて解説する。
【2】μ-プログラム
マイコンの内部に、ユーザーに解放していないROMを持っていて、そこに命令の処理手順を前もってプログラムしておく。該当するマクロ命令がフェッチされてきたら、そのマクロ命令の処理に相当するプログラムを走らせて、マクロ命令を処理する。このROMをμ-ROMと呼び、プログラムをμ-プログラムと呼ぶ。μ-プログラムはμ-コード(マイクロコード)と呼ばれることもある。
μ-ROMの構造やμ-プログラムの内容は、各マイコンメーカーにとって企業秘密中の企業秘密なので公開されることはない。そこで、一般的なμ-ROMの構造を簡単なブロック図にして図6に示す。実際はもっと複雑であり、特許の要素も入っているので、この図は実際と若干異なるが、μ-プログラムの処理手順を理解するには十分な図だと思う。
この図を基に、レジスタ1とレジスタ2を加算して、メモリ(RAMなど)の0x100番地に結果を入れる操作例を解説する。
- 命令用メモリ(フラッシュメモリなど)から、命令がフェッチされ、プリフェッチバッファ(FIFO:First In First Out)に入る
- プリフェッチバッファからμ-ROMへ命令が送られると、それに対応したμ-プログラムが起動する
- 最初のμ-プログラムでは「レジスタ1をALUの入力1に、レジスタ2をALUの入力2に接続する」が実行される
- このコードをデコーダがデコードして、レジスタ1とレジスタ2を開けて、ALUの該当する入力にデータを入れる制御信号が出力され、各ハードウェアが、その信号にしたがって動作する
- 1つのμ-プログラムが実行されると、自動的に次のクロックサイクルで、次のμ-プログラムが実行される。次は「ALUを加算機に設定し、演算する」。そしてハードウェアがこれに従って動作する
- 最後のμ-プログラムは「ALUの演算結果をデータ用メモリの0x100番地に入れる」。そして、ハードウェアがこれに従って動作する
これで「レジスタ1+レジスタ2→メモリアドレス0x100」の演算は完了だ。実際はもっと複雑な処理を一度に処理する構造になっていて、できる限り少ないクロックサイクルで複雑な命令を処理するように設計される。
このように、μ-プログラムを使用した演算処理は、1つのマクロ命令を実行するのに数クロックサイクルを要する。クロックサイクルごとにそのマクロ命令を実現するμ-プログラムの1ステップを実行するからである。そのため、非常に長い実行時間のマクロ命令が存在する場合もある。
では、そのような実行時間の長いマクロ命令のμ-プログラムの実行中に割り込みが起きたら、どうなるのであろうか? 実は、μ-プログラムにも割り込みの概念があり、μ-プログラムの各ステップで、割り込みが発生していないかチェックする機能がある。もし、割り込みが発生した場合は、割り込み処理のμ-プログラムに分岐するようになっているので、同期だけでなく非同期の割り込みにも、クロックサイクルレベルでの対応は可能だ。
マイコンの中に、もう1つ小さなマイコンが入っていると考えると理解しやすいと思う。
さらに、図6を見て、マクロ命令のデコーダがないことにお気づきになっただろうか? これは、マクロ命令のコードをそのままμ-ROMのアドレスに使えば、マクロ命令が不要になるためだ。マクロ命令のコードが重なることはないので、μ-ROMのアドレスの重なることはない。この手法でマクロ命令のデコーダを簡略化できるわけだ。
「μ-プログラムのデコーダが大きくなるのでは?」と思う読者もいるだろう。実はμ-ROMのビット数を数十ビットで構成し、各ビットに、こまごまと機能を割り付けると、各機能のデコーダが小さくなり、トータルでデコーダの論理規模を小さくできる。例えば、図7では、ALUの機能とALUの入力1になるソースと入力2のソースと、ALUの出力のディスティネーションを区分けして2ビットから4ビットで割り当てる。数十ビットを一度にデコードする場合のデコーダよりも、4ビット程度の比較的小さなデコーダが数個集まった方が、論理規模を小さくできる。
このように、μ-ROMを使うと、ちょっとした工夫で回路規模を小さくできる。前述したように、マイコンの内部論理回路をランダム論理またはワイヤード論理で構成するよりも、論理規模を小さくし構造を簡素化でき、回路効率を高めることが可能になる。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- マイコンアーキテクチャの基本理解 〜 キャッシュ構成、エンディアン、浮動小数点、バス構成、例外処理
すでにマイコンを使い込まれている上級者向けの技術解説の連載「ハイレベルマイコン講座」。前回に引き続き、マイコンの「アーキテクチャ」について詳しく解説する。今回は、「キャッシュ構成」、「エンディアン(Endian)」、「浮動小数点演算」、「バス構成」、「例外処理」について詳しく解説する。 - マイコンの“アーキテクチャ”って何?
すでにマイコンを使い込まれている上級者向けの技術解説の連載「ハイレベルマイコン講座」。今回から3回にわたり、マイコンのアーキテクチャについて詳しく解説する。第1回(=今回)は、まず、CPU(Central Processing Unit)の構成要素と各部の動作について解説し、次に「アーキテクチャ」の各要素についてみていく。 - マイコンに搭載されたA-Dコンバーターの測定精度を上げる方法【原因と対策】
すでにマイコンを使い込んでいるマイコン上級者に向けた技術解説連載「ハイレベルマイコン講座」。今回から2回にわたって、ノイズの影響を受けず、マイコンに搭載されているA-Dコンバーター本来の測定精度を得る方法を、実際の測定を基に解説する。 - マイコンのセキュリティ機能を詳細解説 〜ハードウェア編
マイコンを使い込んでいる上級者を対象にさらなるスキルアップ、知識習得を目指す連載「ハイレベルマイコン講座」。今回から2回にわたって、マイコンで実現されるセキュリティ機能について詳しく解説する。 - ESDによる不具合発生メカニズムと対策のヒント
今回から2回にわたり、マイコンを使用する上で必要不可欠な「ESD対策」について解説していく。第1回は「ESDの破壊モード(メカニズム)」と「ESDの主な発生要因とその対策」を取り上げる。 - データシートを正しく理解するなら「凡例」から気を抜くな
今回から3回にわたり、マイコン製品のデータシートを正しく理解することを目的に、実際のデータシートを見ながら、データシートの注意点を紹介していこう。第1回は、おろそかにされがちな「凡例」をはじめ、「絶対最大定格」「一般動作条件」「電源電圧立ち上がり/立ち下がり時間」の各項目について解説していく。