• ベストアンサー

CPUのアドレス変換ついて

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

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

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

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

GTO001
質問者

お礼

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

その他の回答 (1)

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

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

GTO001
質問者

補足

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

関連するQ&A

  • 仮想アドレス

    仮想メモリにおけるアドレス変換方式について教えて下さい。 (TLBではなく、基本的な説明)

  • アドレス変換について

    論理・物理アドレス変換を高速化する方法を教えてください。

  • VMware CPUの割り当て

    いつも参考にさせていただいております。 VMwareを勉強中です。 1個で6コアのXeonCPUがあるとします。 これをVMware vSphere5で使うとき、いわゆるオーバーコミット(仮想リソース>実際のリソース)ならないようにゲストOSの設計をしたいのですが、以下の質問があります。 質問1 CPUがハイパースレッティング(HT)に対応しているのですが、このときゲストOSではCPUの稼動上限の周波数で合計12個のコアを割り当てられるという考え方で合っているのでしょうか。 質問2 3GHzの物理CPU"1コア"を、1個のゲストOSで仮想CPUソケット2個(@1.5GHz) の割り当てをしたとき、これはオーバーコミットではない、と考えてよいのでしょうか。 質問3 3GHzの物理CPU"1コア"を、1GHzの仮想CPUを3個を作って3ゲストOSに割り当てるとき、これはオーバーコミットではない、と考えてよいのでしょうか。 よろしくおねがいします。

  • 仮想メモリアドレスについて

    OSが管理している仮想メモリアドレスについて質問させて下さい。 物理メモリのアドレスといわれるものと、 仮想メモリのアドレスといわれるものは、 いずれもハードディスク上に存在し、ハードディスク上で OSによって管理されている情報(アドレス)ということになりますか?

  • サーバ仮想化におけるCPUコアについて

    こんばんは。まだ勉強中なのですが、 サーバ仮想化を行う時のCPUのコアについて教えてください。 たとえば、 6Core/12スレッドのCPUを2個搭載します。 ハイパーバイザーはVMware vSphere5またはHyper-Vを使います。 この時、計12Core有していますので、 仮想マシンに対しては、12コアから各々割り当てていくということを認識していますが(ESX等が使う分は置いといて) 1.ハイパースレッドが有効なら、2倍の計24コアいけるということでしょうか。 2.実際このあたりを考慮する際はあくまで物理コアをもとに設計をするのでしょうか。 3.上記のとおりとすれば性能的には落ちるよう感じてしまいますが実際はどうなんでしょうか。 そもそも考え方が間違っていればご教示頂ければ幸いです><

  • 仮想アドレス空間

    こんにちは 仮想アドレス空間と仮想メモリはどういう関係ですか? 物理メモリと仮想メモリはわかりますがwindows 2000にある4GBの仮想アドレス空間と仮想メモリはどういうつながりがありますか?

  • ESXi5仮想サーバーのCPU数とコア数について

    ESXi5の仮想サーバーに割り当てるプロセッサ数とコア数と物理サーバーの関係について教えて頂けますでしょうか。 物理サーバー環境:1プロセッサ8コア が2個あります。ですので合計16コアになります。 そこに4台の仮想サーバーを構築します。 物理サーバーのCP処理能力は計6GHZで、仮想サーバー4台の処理負荷は計2GZ程度です。 仮想サーバーにはCPU数とコア数の両方が設定できますが割り当ての考え方がわかりません。 例えば、物理プロセッサは2個なので仮想サーバー数には足りないため、コア数16個を振り分けるように ・仮想サーバーのCPU数:各1個  仮想サーバーのコア数:各4個 もしくは、物理サーバーのコア数16個を仮想サーバーのCPUとして振り分けるように ・仮想サーバーのCPU数数:各4個 仮想サーバーのコア数:各1個 と2通りが考えられるのですがどのように割り当てを考えればよいのでしょうか? 何卒ご教授いただけますようお願いいたします。

  • OSの処理、MMUのアドレス変換表について

    (1)マルチスレッドで、CPUの別コアでそれぞれ処理が進められているとき、タスクの共通のリソースにアクセスする場合も、各コアのMMUのアドレス変換表を参照すると思っています。 OSはアプリケーションソフトのメモリ割り当ての際に共通のリソースに関しては全コアのMMUのアドレス変換表に情報を書き込むのでしょうか。 (2)CPUの各コアのセグメントレジスタに情報を書き込むのはOSの役割と考えて間違いないでしょうか。 勉強を始めたばかりで、そもそも質問が的外れでしたら申し訳ございません。

  • 物理アドレス拡張(PAE)の有効の確認

    私のPCの使用は、1次32KB命令+32KBデータ、2次1MB(CPU内蔵)とあります。物理アドレス拡張(PAE)の有効か無効かはどのようにすればわかりますか

  • 物理アドレス拡張(PAE)とは

    私のPCはFUJITSU EX30X です。ビスタです。CPUは インテルCeleronM プロセッサー520 1.600Hz キャッシュメモリ 1次:32KB命令+32KBデータ 2次 1MB(CPU内蔵)チップセット モバイルインテルExpressチップセット です。 あるソフトを入れるのに32ビットなら物理アドレス拡張(PAE)対応してることが条件だそうです。物理アドレス拡張はどこで見ればわかりますか