• ベストアンサー

CPUのアドレス変換ついて

CPUのアドレス変換ついて、ご教示願いたく、投稿させて頂きました。 【質問】 仮想アドレス⇒物理アドレスに変換する際、なぜ2段階に分け、変換するのでしょうか? また、TLBは、どこに内蔵されており、どのようにして、TLBを用い、 アドレス変換しているのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

>なぜ、仮想アドレス上位ビットを区切って、1レベル アドレス変換 2レベル アドレス変換をすると、なぜページ変換テーブルのサイズが小さくなるのでしょうか? アドレスが32bitで、10bit+10bit+12bit と区切られていたとすると、もし上位20bitを区切ってないと、2^20個のエントリを持つ変換テーブルが必要です。区切ってあると上位の2^10個のエントリは必要ですが、下位のテーブルは必要な部分だけあればいい。また下位のテーブルはページアウトも出来ます。 >あと、TLBは何のためにCPUの中にあるのでしょうか? 高速化のためと書いたはずですが。 >CPUの中においても、上記同様、仮想アドレス上位ビットを区切ってアドレス変換をするのでしょうか?それとも、仮想アドレスに対する物理アドレスへの変換対応表をもっているのでしょうか? いろいろ方式があると思いますが、キャッシュなので区切ってない方式が多いかと思います。 >もし、TLBにアドレス変換対応表をもっている場合、どのアドレスがTLBに登録されているのでしょうか? 高速化のためのキャッシュなので今使っている物です。今使ったばかりの物というか。

GTO001
質問者

お礼

notnotさん、分かりやすい回答ありがとうございます。 教えて頂いたことを今後の勉強に活かしていきたいと思います。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

何のCPUの何が二段という話のことでしょうか? (1) TLBを使うと言うこと? TLBはCPUの中にあります。TLBはアドレス変換の高速化のためにあります。 (2) 上位ビットをいくつかに区切って(x86だと10bitずつ2つに区切って)使うと言うこと? ページ変換テーブルのサイズを小さくするためです。

GTO001
質問者

補足

notnotさん、回答ありがとうございます。 説明不足で、すみません。 教えて頂きたかったことは、主に、上記(2)の内容です。 なぜ、仮想アドレス上位ビットを区切って、1レベル アドレス変換 2レベル アドレス変換をすると、なぜページ変換テーブルの サイズが小さくなるのでしょうか? あと、TLBは何のためにCPUの中にあるのでしょうか? CPUの中においても、上記同様、仮想アドレス上位ビットを区切ってアドレス変換をするのでしょうか?それとも、仮想アドレスに対する物理アドレスへの変換対応表をもっているのでしょうか? もし、TLBにアドレス変換対応表をもっている場合、どのアドレスがTLBに登録されているのでしょうか? 頭の中で、ちゃんと整理ができていなく、申し訳ありませんが、 ご教示の程、宜しくお願い致します。

関連するQ&A