3

X86_64ロングモード(64bit)はセグメンテーションセレクターが不要です。32 ビットではセグメンテーションが必要なのに、64 ビットでは役に立たないのはなぜですか? ありがとう、

4

2 に答える 2

3

X86_64ロングモードのCPUは、PAE(物理アドレス拡張)テクノロジを使用してメモリを制御します。

したがって、セグメントセレクターは必要ありません。

このPDFマニュアルを読むことをお勧めしますAMD64 Architecture Programmer’s Manual Volume 2: System Programming

グーグルamd64 volume 2、最初の結果はPDFマニュアルです。

5.3章を参照してくださいLong-Mode Page Translation。そうすれば理解できます。

于 2012-11-23T02:37:13.020 に答える
2

セグメント セレクターは、メモリがセグメントごとに実際にロードおよびアンロードされる場合に役立ちました。これは、x86 が最初に開発されたときのオプションでした。ただし、最新のオペレーティング システムはすべてページングを使用します。ページングは​​後で x86 に導入され、(いくつかのトレードオフにもかかわらず) そのシンプルさが最終的にセグメンテーションに取って代わりました。

32 ビット x86 では、16 ビット OS が新しいプロセッサ アーキテクチャに移行している間もセグメンテーションを利用できましたが、64 ビット x86 の設計中に、一部のレガシー機能 (セグメンテーションを含む) が削除されました。OS の教科書で一般的に説明されているが、実際には使用されていないもう 1 つの機能は、さまざまなアクセス許可の「リング」の概念です。古典的には 4 つのリング (番号 0-3) がありますが、実際には 0 (カーネル) と 3 (ユーザー空間) 以外は誰も使用しないため、x86-64 ではリング 1 と 2 が削除されました。ただし、新しいハイパーバイザーのサポートを追加するには-関連の命令、x86-64 は -1 と呼ばれる 0 未満の新しいリングを導入しました。

セグメンテーションにより、メモリのキャッシュ エイリアスの検出がより困難になるため、セグメンテーションをサポートすると、x86-64 チップの設計もより複雑になります。

于 2013-05-29T02:39:01.223 に答える