web-dev-qa-db-ja.com

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

ARMプロセッサ(最近および古い)はマイクロコードを使用していますか?使用している場合はどうすればよいですか?それらの命令は、マイクロオペレーションに変換せずに直接実行できるほど単純ではありませんか?

12
Kraken

TL、DR; ARMプロセッサは、マイクロコード化されたCPUと同様の概念を使用します(たとえば、命令を1つまたは複数の マイクロオペレーション にデコードするハードウェアブロックがあります))がnot従来の意味でマイクロコード化 ROMを使用して各マイクロ命令を保存するこれらのマイクロ命令/操作は、実際のハードウェアで生成された後に変更できますか?実際、ARMプロセッサは命令で ハードワイヤード制御を使用しますマイクロオペレーションを生成するデコーダ。

ただし、実際には、命令デコーダの変更は、マイクロコード化されたプロセッサの変更と同様です。これは、ARMがハードウェア記述言語のライセンスを取得しているためです( [〜#〜] hdl [〜#〜 ] )個々のメーカー向けのCPUアーキテクチャのソースコード。ハードウェアレベルの変更の実装が大幅に容易になります。一般的なRISCとCISCの違いについては、マイクロプロセッサ設計Wikibookの 命令デコーダセクション を参照してください。命令デコーダ。


ARMアーキテクチャ自体は従来の意味でマイクロコード化されていませんが、個々の命令- より小さなマイクロ操作にデコード 。現代のARMプロセッサは「単純な」とはほど遠い-命令自体は非​​常に直角ですが、多くの現代の技術(例えば最新のA9コアが持つパイプライニング、スーパースカラー命令、アウトオブオーダー実行、キャッシング、フローティングポイントユニットやNEON命令などの拡張された複雑な命令)実際、どのプロセッサもマイクロオペレーションに変換せずに実行できるほど単純ですが、これは基本的に「すべての卵を1つのバスケットに入れる」ことです。命令セットで発生する可能性のあるエラーを修正したり、製造後に拡張/変更したりすることはできません。

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

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


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

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


この場合、ARMソースコード自体をマイクロコーディングの一種として「考える」ことができますが、各マイクロオペレーション/マイクロプログラムをROM事後に変更できるため、命令デコーダのハードウェアに直接実装されます。命令デコーダ自体がVHDL/Verilogで記述されている場合、既存の命令に変更を加えるのは、ソースコードを変更するのと同じくらい簡単です。新しいハードウェア(FPGAやシミュレーターなど)の再コンパイルとテスト。これは、開発中のテスト/シミュレーションがはるかに難しく、製造後の変更がさらに難しい(最新のx86ハードウェアの複雑さとは対照的です)トランジスタのサイズは、最も高価な最新のFPGAでも実行できるサイズをはるかに超えているため、マイクロコードストアを使用することでメリットが得られます。確かにARMでも同じことが言えますが、違いは開発にあります。プロセッサハードウェア、そして直接tを見て/テストする彼はFPGAを使用して物理ハードウェアを変更します。

14
Breakthrough