cortex-a9などのARMプロセッサはマイクロコードを使用しますか?


12

ARMプロセッサ(新旧)はマイクロコードを使用しますか?もしそうなら、何のために?それらの命令は、マイクロ操作に変換されずに直接実行できるほど単純ではありませんか?

回答:


14

TL、DR; ARMプロセッサは、(例えば、1つまたは複数に命令をデコードするハードウェアブロックが存在するマイクロコードCPUに類似の概念を使用しながら、マイクロオペレーションが)、それらがされていない 伝統的な意味ではマイクロコード、各マイクロ命令を格納するためのROMを使用してもこれらのマイクロ命令/操作は、実際のハードウェアで生成された後に変更できますか。実際、ARMプロセッサは、命令デコーダでハードワイヤード制御使用して、マイクロオペレーションを生成します。

ただし、実際には、命令デコーダーの変更はマイクロコード化されたプロセッサーの変更に似ています。これは、ARM がそのCPUアーキテクチャのハードウェア記述言語(HDL)ソースコードを個々のメーカーにライセンス供与し、ハードウェアレベルの変更の実装を大幅に容易にするためです。典型的なRISC命令デコーダーとCISC命令デコーダーの違いの詳細については、マイクロプロセッサー設計ウィキブック命令デコーダーのセクションを参照してください。


ARMアーキテクチャ自体は従来の意味でマイクロコード化されていません 、個々の命令より小さなマイクロ操作にデコードされます。最新のARMプロセッサは「単純」とはほど遠い-命令自体は非​​常に直交していますが、多くの最新技術(パイプライン処理、スーパースカラー命令、アウトオブオーダー実行、キャッシング、浮動小数点ユニットなどの拡張複雑な命令など)がありますまたは最新のA9コアが持っているNEON命令)。実際、どのプロセッサーも、マイクロ操作に変換せずに実行できるほど単純ですが、これは本質的に「すべての卵を1つのバスケットに入れる」ことです-命令セットで考えられるエラータを修正したり、生産後に拡張/変更したりすることはできません。

ただし、命令デコードステージについてのみ話している場合、実際には多くのARMプロセッサは事後の変更を可能にする方法でマイクロコード化されていませんが、これはARMテクノロジのライセンスを取得しているほとんどのメーカーが実際のハードウェアソースコード(HDLで記述)。これにより、マイクロコードステージが不要になりますが、個々の命令は実際のハードウェアブロックに「コンパイル」されるため、消費電力が削減されます。これにより、各メーカーによるエラッタ修正も可能になります。

実際、CISCベースのCPU(x86など)でも、マイクロコードを使用する必要はありません。ただし、実際には、命令セットの複雑さとライセンス、消費電力、およびアプリケーションのさまざまな違いにより、マイクロコードの選択はx86の場合に最適です。ただし、ARMの場合、命令セット(デコーダー)の変更はハードウェア自体の観点から実装と制御がはるかに簡単であるため(メーカーがカスタマイズできるため)、あまり役に立ちません。


マイクロコードを使用すると、場合によってはプロセッサの設計を実際に簡素化できますが(各命令は実際のハードウェアではなく「マイクロプログラム」として存在するため)、これは事実上単なる命令デコーダーです(Thumb-2拡張などARM命令デコーダーとインラインで別個の命令デコーダーを追加することにより、存在する長さの命令)。機能的にはこれらのユニットはマイクロコードを使用して実装できますが、CPU自体の各制御信号の出力を定義する必要がある場合でも、電力消費に関しては賢明ではありません。これはしませ ただし、ARMコアには予想されるすべての最新の構造(パイプライン化、命令/データキャッシュ、マイクロTLBバッファ、分岐予測、仮想メモリなど)があるため、実際のCPU自体の「複雑さ」に関係があります。 )。

ARMの場合、命令セットの直交性を考えると、そのようなマイクロコード化されたアプローチの実装に伴う複雑さは、命令デコーダブロックで直接関連するハードウェアを変更するだけの利点を上回ります。これは確かに可能ですが、ハードウェアの変更を直接変更(およびコンパイル/テスト/エミュレート)できるのであれば、いわば「車輪の再発明」になります。


この場合、ARMソースコード自体をマイクロコーディングの一種として「考える」ことができますが、事後的に変更可能なROMに各マイクロ操作/マイクロプログラムを保存する代わりに、命令デコーダーのハードウェア。命令デコーダー自体はVHDL / Verilogで記述されているため、既存の命令に変更を加えることは、ソースコードの変更、再コンパイル、新しいハードウェアのテスト(FPGAまたはシミュレーターなど)と同じくらい簡単です。これは、開発中のテスト/シミュレーションがはるかに難しく、生産後の変更がさらに困難な最新のx86ハードウェアの複雑さと対照的です(トランジスタのサイズは、最も高価な最新のFPGA。これにより、マイクロコードストアの使用に利点が追加されます。FPGAを使用した物理ハードウェア。


ARMのマイクロコードはハードウェアに常駐していますよね?
クラーケン

1
ある意味、@ Kraken。マイクロシーケンサーを使用する代わりに、各命令は命令デコーダーによって、そのオペコードの個々のマイクロ操作/マイクロ命令(1つまたは複数のクロックサイクル)に直接変換されます。Microprocessor Design Wikibook のInstruction Decoderの記事は、典型的なRISC命令デコーダーとCISC命令デコーダーの違いを説明するのにも役立ちます。
ブレークスルー

ありがとう。これは私にとって非常に明確です。再度、感謝します。努力のために+1。
クラーケン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.