20

シングル コア コンピューターでは、一度に 1 つのスレッドが実行されます。各コンテキスト スイッチで、スケジューラは、スケジュールする新しいスレッドが前のスレッドと同じプロセスにあるかどうかを確認します。その場合、MMU (ページ テーブル) に関して何もする必要はありません。それ以外の場合は、ページ テーブルを新しいプロセス ページ テーブルで更新する必要があります。

マルチコア コンピューターでどのように動作するのか疑問に思っています。各コアには専用の MMU があり、同じプロセスの 2 つのスレッドが 2 つのコアで同時に実行されている場合、このコアの各 MMU は同じページ テーブルを参照するだけです。これは本当ですか ?この件に関する良い参考文献を教えていただけますか?

4

7 に答える 7

18

このスキームを見てください。これは、Corei7 CPU のシングル コアにあるすべての機能の概要です。この写真は、Computer Systems: A Programmer's Perspective、Bryant and Hallaron から引用したものです。ここ、セクション 9.21 の図にアクセスできます。

Computer Systems: A Programmer's Perspective、2/E (CS:APP2e)Randal E. Bryant および David R. O'Hallaron、カーネギー メロン大学

于 2012-09-10T08:14:42.180 に答える
2

以前の回答で申し訳ありません。回答を削除しました。

TI PandaBoard は、OMAP4430 デュアル Cortex A9 プロセッサで動作します。コアごとに 1 つの MMU があります。2 コアに対して 2 MMU を備えています。

http://forums.arm.com/index.php?/topic/15240-omap4430-panda-board-armcortex-a9-mp-core-mmu/

上記のスレッドは情報を提供します。

さらに、ARM v7 に関するその他の情報

各コアには次の機能があります。

  1. 600 MHz の ARM v7 CPU
  2. パリティ チェック付きの 32 KB の L1 命令 CACHE
  3. パリティ チェック付きの 32 KB の L1 データ CACHE
  4. 単精度および倍精度のスカラー浮動小数点演算用の組み込み FPU
  5. メモリ管理ユニット (MMU)
  6. ARM、Thumb2、および Thumb2-EE 命令セットのサポート
  7. TrustZone© セキュリティ拡張
  8. ソフトウェア デバッグ用にトレース マクロセルと CoreSight© コンポーネントをプログラムする
  9. JTAG インターフェイス
  10. AMBA© 3 AXI 64 ビット インターフェイス
  11. 8 ビット プリスケーラを備えた 32 ビット タイマー
  12. 内部ウォッチドッグ(タイマー兼用)

デュアル コア構成は、共通のコンポーネント セットによって完成します。

  1. プロセス間通信、キャッシュ 2 キャッシュおよびシステム メモリ転送、キャッシュ コヒーレンシを管理するためのスヌープ コントロール ユニット (SCU)
  2. ソフトウェアで設定可能な優先度と 2 つのコア間のルーティングを備えた 128 の独立した割り込みソースをサポートするように構成された汎用割り込み制御 (GIC) ユニット
  3. 8 ビット プリスケーラを備えた 64 ビット グローバル タイマー
  4. 非同期アクセラレータ コヒーレンシ ポート (ACP)
  5. 実行時に内部メモリ障害を検出するためのパリティ サポート
  6. 512 KB のユニファイド 8 ウェイ セット アソシアティブ L2 キャッシュ (パリティ チェックと ECC をサポート)
  7. ARM がリリースした PL310 IP ベースの L2 キャッシュ コントローラー
  8. デュアル 64 ビット AMBA 3 AXI インターフェイス (DDR メモリ アクセス用に 1 つのポートを使用するための 2 つ目のインターフェイスでのフィルタリングが可能)

これらはすべて ARM 用ですが、一般的なアイデアを提供します。

于 2012-09-10T07:42:01.293 に答える
1

これまでのところ、ここでの回答は、プロセスによって使用される仮想アドレスを物理メモリ アドレスに変換する MMU の方法である変換ルックアサイド バッファー(TLB)の存在を認識していないようです。

最近では、TLB 自体が複数レベルのキャッシュを持つ複雑な獣になっていることに注意してください。CPU の通常の RAM キャッシュ (L1 ~ L3) と同様に、現在実行中のプロセスに関する情報のみが含まれている特定の瞬間の状態を必ずしも期待する必要はありませんが、必要に応じて断片的に移動します。ウィキペディア ページのコンテキスト スイッチのセクションを参照してください。

SMP では、すべてのプロセッサの TLB がシステム ページ テーブルの一貫したビューを維持する必要があります。それを処理する 1 つの方法については、Linux カーネルブックのこのセクションなどを参照してください。

于 2012-04-03T20:46:10.260 に答える
0

私の知る限り、少なくとも SMP システムでは、物理プロセッサごとに 1 つの MMU があるため、すべてのコアが 1 つの MMU を共有します。

NUMA システムでは、各コアに個別の MMU があります。これは、各コアに独自のプライベート メモリがあるためです。

于 2012-03-29T16:58:55.590 に答える
-1

プロセッサごとのMMUの問題については、いくつかある可能性があります。各MMUが追加のメモリ帯域幅を追加することを前提としています。DDR3-12800メモリが1つのMMUを備えたプロセッサで1秒あたり1600メガ転送を許可する場合、4つを備えた1つは理論的に6400を許可します。使用可能なコアへの帯域幅を確保することはおそらくかなりの偉業です。アドバタイズされた帯域幅は、その過程でかなり削られます。

プロセッサ上のMMUの数は、プロセッサ上のコアの数とは無関係です。明らかな例はAMDの16コアCPUですが、16MMUはありません。一方、デュアルコアプロセッサには2つのMMUがある場合があります。または1つだけ。または3つ?

編集

たぶん私はMMUとチャンネルを混同していますか?

于 2012-05-15T15:53:35.093 に答える