web-dev-qa-db-ja.com

異なるCPUでのハードウェア強制DEP

異なるメーカー(Intel、AMD、nVidia、テキサスなど)のCPUにハードウェアDEPを実装する方法に違いはありますか?

ハードウェアDEPがx86とARMで機能する方法に大きな違いはありますか?

6
StupidOne

X86互換のCPUは適切な名前が付けられています。これらは互いに互換です。これは、同じOSコードがそれらすべてで機能することを意味します。したがって、プロセッサ(オペレーティングシステム自体を含む)で実行されるコードの観点から見ると、ブランドによって状況は(大きく)変化しません。 世代に応じて状況は変化します:新しいシステムにはNXビットがありますが、古いシステムには依存する必要がありますセグメントレジスタや複雑なTLB /キャッシュダンスのトリック(詳細は この答え を参照)。

コアの概念はすべての最新のCPUで同じです。アドレススペースは固定サイズのページに分割されます(または、異なるページサイズがサポートされている場合、それらの長さはすべて指定されたアトミック長の倍数で、通常は4または8 kBです)。アクセス権はページ単位で適用されます。ページ全体が読み取り可能および/または書き込み可能および/または実行可能です。

ハードウェアの観点から、 [〜#〜] mmu [〜#〜] の実装の詳細はかなり異なる可能性がありますが、かなり一般的なフレームワーク内では、各ページのアクセス権はテーブルに保存されます(特定のCPUレジスタに記録されているマスターテーブルのアドレス)、専用の構造体( [〜#〜] tlb [〜#〜] )にキャッシュされ、より高速にアクセスできます。すべてのメモリアクセスで、ターゲットページの権限がTLBからロードされ(TLBはRAMから入力されます)、アクセスタイプと比較されます。CPUは、それが実行しているメモリアクセスの数(コードの実行、データの読み取り、データの書き込みのいずれか)。古いx86でのDEPのハードウェアサポートの欠如MMUは、当時のIntel設計者による省略です(80386の1982年頃)おそらくトランジスタの層をどこかに節約しました。1979年の由緒ある 680 にはMMUが含まれていませんでしたが、各アクセスのコネクタのアクセスタイプ。コードの実行とデータの読み取りを区別しました。

ARM CPUでは、同じ概念が有効です(それでもページ単位のアクセス権です)が、MMUテーブル形式はx86とは異なります。

8
Thomas Pornin