0

x86アーキテクチャでは、カーネルコンテキストでCR3レジスタを読み取って、カーネルのページディレクトリをたどることができることを知っています。

今、私はSPARCアーキテクチャを使用してLinuxから同じ作業を行おうとしています。SPARCでカーネルのページディレクトリにアクセスするにはどうすればよいですか?

x86 CR3としてのSPARCの対応するレジスタは何ですか?

それらのページングメカニズムは同じですか?

ps。ARMはどうですか?、これらに関するドキュメントがいくつかありますが、もっと必要です...よろしくお願いします。

4

2 に答える 2

2

SPARC TLBでは、障害はソフトウェアで処理されるため、CR3のようなものはありません。必要な情報を見つけるには、現在のプロセスデータ構造を確認する必要があります。

一方、ARMはハードウェア変換を使用し、MMUは変換テーブルベースレジスタにアクセスするためにMRC/MCRを使用するコプロセッサとして処理されます。詳細については、ARMのWebサイトを参照してください: http://infocenter.arm.com/help/index.jsp?topic = / com.arm.doc.dui0056d / BABIDADG.html

于 2012-07-31T15:51:32.653 に答える
1

SPARC仕様自体は、MMUの使用を義務付けておらず、MMUの特定の実装を必要としません。これは、CPUとMMU間のインターフェイスを定義するだけです(MMUアクティビティを介して生成する必要のあるトラップが主に懸念されます)。

とは言うものの、ここで私が知っているのはSun /FujitsuのSPARCCPUについてのみであり、組み込みのもの(LEONおよびその前身)については知らないことを述べなければなりませんsun4。1990年のワークステーションCPUまでのSPARCCPUにはMMUがありました。

多くの必須ではないSPARCCPU機能と同様に、MMUの制御は、A ddress Sペース I識別子(ASI)と呼ばれるものを介して行われます。 これらのASIは、x86セグメンテーションとメモリマップドレジスタの組み合わせとして最もよく説明できるSPARCアーキテクチャの機能です。それらを使用すると、SPARC CPUに対する「アドレス」の意味が変わります(x86でセグメント[reg]を使用すると、「アドレス」の意味が変わるのと同じです)。ただし、ASIアドレス範囲の背後に構成可能な「記述子テーブル」がありません。 、ただし通常はハードウェア固有の制御レジスタ。つまり、それらは通常の物理アドレス空間ではなく、代替アドレス範囲に「マッピング」されます。

最初にsun4、、、sun4cおよびsun4dアーキテクチャsun4m(32ビットsparcv7)で、MMUが呼び出されsrmmu(SPARC参照MMU)、2レベルのハードウェアテーブルウォークが実装されました。これは非推奨であり、これに対するコントロール登録が何であったかを頭から覚えていません。

Sunがsun4uアーキテクチャを作成したとき、ハードウェアで実装された変換テーブルウォークは、オーバーヘッドが高すぎると同時にメモリを大量に消費すると見なされていました。したがって、テーブルウォーキングMMUの実装は完全にヤンクされ、ソフトウェアにMMU機能のほとんど(すべてではない)を実装することになりました。特に、ハードウェアにプログラム可能なのは、TLBの内容であるトランスレーションルックアサイドバッファーだけです。つまり、マッピングがTLBに簡単にキャッシュされない場合、MMUミストラップが発生し、トラップハンドラーがテーブルルックアップを実行して再プログラミングします。最後のTLB(後で命令を再発行することが成功するように)。sfmmuソフトウェアMMU)という名前の由来はここにあります。MMUはASI_MMU、実際のコンテキストレジスタはCPU固有ですが..。

参考までに、以下を参照してください。

再、ARM:別の投稿として、もう一度質問することをお勧めします。ARMの存在を超えて、複数の(mmuなしとmmuありの両方の)実装が進化しました(たとえば、MMU付き/なしのCortex-A8 / M3ベースのARMv7命令セットがあります)。ARM自体によるMMU仕様は、通常VMSA(仮想メモリシステムアーキテクチャ)と呼ばれ、いくつかのリビジョンがあります。この投稿はすでに長すぎて詳細を含めることができません;-)

于 2012-07-31T22:32:17.497 に答える