問題タブ [tlb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
memory-management - まだRAMにない場合、命令を含むメモリページの物理アドレスをどのように知ることができますか?
ニワトリと卵の例えのために、プロセスの命令がどのように実行されるかという点で少し混乱しています。
プログラムの CPU 命令は、ハードディスクに保存されます。プログラムが実行されるとき、命令を含むメモリのページは RAM、L3、L2、L1i に移動する必要があります。しかし、TLB ルックアップ後にしか物理アドレスを見つけることができない場合、物理アドレスを RAM にロードするために、どのようにして物理アドレスを知ることができますか?
x86 - L1 バッファの処理
L1 命令キャッシュには、..... 命令が含まれています。CPU が icache から命令をフェッチし、L1 命令 Translation Lookaside Buffer (iTLB) を使用して仮想アドレスをルックアップする必要があるのは、どのタイプの命令ですか? 命令がフェッチされ、L1 データ TLB が仮想アドレスのルックアップに使用される理由はわかりますが、iTLB が使用される理由はわかりません。これを引き起こすのは、どのタイプの x86 命令ですか?
caching - キャッシュ ライン フラッシュは TLB にアクセスしますか?
clflush
意図的に DTLB をスラッシングし、TLB エントリが指すアドレスとは (おそらく) 切り離されたメモリ領域を使用して、L1-3 から特定のキャッシュ ラインをフラッシュしたいとします。これは実際に、フラッシュしているキャッシュラインのページベースアドレスを TLB に戻しますか?
要するに、clflush
まったくTLBに触れますか? コヒーレンシを尊重するこの命令により、その後、その行がメモリに書き戻されると想定しています (明らかに TLB ルックアップが必要です)。
memory - TLB とデータ キャッシュについて
TLBとキャッシュを使用してCPUがデータにアクセスする方法を知っています。しかし、データキャッシュとTLBの両方が同じCPUキャッシュを共有しているか、MMUハードウェアがTLB用に別のキャッシュを持っているか、混乱しています。コンテキスト スイッチが発生したときに、TLB とデータ キャッシュの内容をフラッシュするのは誰ですか?
tlb - プロセス間での TLB エントリの維持
Translation Lookaside Buffer は、効率的な仮想アドレスから物理アドレスへの変換のために、システム内のすべてのコアで使用されるリソースです。マルチコア/マルチプロセッサ アーキテクチャでは、2 つの異なる物理ページ フレームに同時にマップする (異なるプロセスの) 同じ仮想ページ アドレスに対して TLB ルックアップが必要になる可能性があります。この競合は TLB でどのように処理されますか?
Ulrich Drepper の記事http://www.akkadia.org/drepper/cpumemory.pdfでは、拡張 TLB タグ付けについて説明しています (これは、タグに使用されるビット数によってまだ制限されています)。最近の CPU はこの問題をどのように処理しますか? 関連記事への参照またはリンクは非常に役立ちます。
caching - 実効アドレス変換時間の計算
実効アドレス変換時間を計算する式を知っている人はいますか?
たとえば、次の問題を解決する方法:
以下のような情報が与えられます。
TLB は 1024 エントリを保持でき、1 クロック サイクル (1 ナノ秒) でアクセスできます。
ページ テーブル エントリは、100 クロック サイクルまたは 100 ナノ秒で見つけることができます。
平均ページ交換時間は 6 ミリ秒です。
ページ参照が 99% の時間 TLB によって処理され、0.01% だけがページ フォールトにつながる場合、有効なアドレス変換時間はどれくらいですか?
1 nsec + (0.01% x 100 nsec) ですか?
assembly - Microblaze での起動時の MMU/TLB へのアクセス
Microblaze (実際には OVP でシミュレート) で TLB をセットアップしようとしていますがC_USE_MMU
、3
.
これは私のブートコードです:
以下の行は、期待どおりに更新r1
さ0x00040000
れます。
しかし、次の行では:
の値msr
は変更されないため、コードは次のように失敗します。
と:
(msr
更新されていないため、まだ読み取りが行われている0x00000000
ため、プロセッサは MMU サポートが利用できないことを正しく評価しています)。
私のコードが を更新しないのはなぜmsr
ですか?
arm - PDE キャッシュとは
ARM ベースの SoC の次の仕様があります。
- L1 データ キャッシュ = 32 KB、64 B/ライン、2 ウェイ、LRU
- L2 キャッシュ = 1 MB、64 B/ライン、16 ウェイ
- L1 データ TLB (ロード用): 32 エントリ、完全連想
- L2 データ TLB: 512 エントリ、4 ウェイ
- PDE キャッシュ: 16 エントリ (仮想空間 1 MB あたり 1 エントリ)
そして、PDE キャッシュとは何だろうか? TLBに似たものだと思いますが、よくわかりません。
回答
PDE (ページ ディレクトリ エントリ) は、TLB とは別に実装できる中間テーブル ウォーク キャッシュのようです。
Cortex-A15 MPCore プロセッサは、テーブル ウォークの一部として中間レベルの変換テーブル エントリを格納する専用キャッシュを実装しています。