- ベストアンサー
CPUのアドレス変換ついて
CPUのアドレス変換ついて、ご教示願いたく、投稿させて頂きました。 【質問】 仮想アドレス⇒物理アドレスに変換する際、なぜ2段階に分け、変換するのでしょうか? また、TLBは、どこに内蔵されており、どのようにして、TLBを用い、 アドレス変換しているのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>なぜ、仮想アドレス上位ビットを区切って、1レベル アドレス変換 2レベル アドレス変換をすると、なぜページ変換テーブルのサイズが小さくなるのでしょうか? アドレスが32bitで、10bit+10bit+12bit と区切られていたとすると、もし上位20bitを区切ってないと、2^20個のエントリを持つ変換テーブルが必要です。区切ってあると上位の2^10個のエントリは必要ですが、下位のテーブルは必要な部分だけあればいい。また下位のテーブルはページアウトも出来ます。 >あと、TLBは何のためにCPUの中にあるのでしょうか? 高速化のためと書いたはずですが。 >CPUの中においても、上記同様、仮想アドレス上位ビットを区切ってアドレス変換をするのでしょうか?それとも、仮想アドレスに対する物理アドレスへの変換対応表をもっているのでしょうか? いろいろ方式があると思いますが、キャッシュなので区切ってない方式が多いかと思います。 >もし、TLBにアドレス変換対応表をもっている場合、どのアドレスがTLBに登録されているのでしょうか? 高速化のためのキャッシュなので今使っている物です。今使ったばかりの物というか。
その他の回答 (1)
- notnot
- ベストアンサー率47% (4900/10358)
何のCPUの何が二段という話のことでしょうか? (1) TLBを使うと言うこと? TLBはCPUの中にあります。TLBはアドレス変換の高速化のためにあります。 (2) 上位ビットをいくつかに区切って(x86だと10bitずつ2つに区切って)使うと言うこと? ページ変換テーブルのサイズを小さくするためです。
補足
notnotさん、回答ありがとうございます。 説明不足で、すみません。 教えて頂きたかったことは、主に、上記(2)の内容です。 なぜ、仮想アドレス上位ビットを区切って、1レベル アドレス変換 2レベル アドレス変換をすると、なぜページ変換テーブルの サイズが小さくなるのでしょうか? あと、TLBは何のためにCPUの中にあるのでしょうか? CPUの中においても、上記同様、仮想アドレス上位ビットを区切ってアドレス変換をするのでしょうか?それとも、仮想アドレスに対する物理アドレスへの変換対応表をもっているのでしょうか? もし、TLBにアドレス変換対応表をもっている場合、どのアドレスがTLBに登録されているのでしょうか? 頭の中で、ちゃんと整理ができていなく、申し訳ありませんが、 ご教示の程、宜しくお願い致します。
お礼
notnotさん、分かりやすい回答ありがとうございます。 教えて頂いたことを今後の勉強に活かしていきたいと思います。