web-dev-qa-db-ja.com

RAMがシステム全体を認識していない場合、RAMに「メモリマップ」を含めるにはどうすればよいですか?

この質問は、ソフトウェアよりもハードウェアに関係しています。基本的に、メモリマップに関するこの記事から引用すると、次のようになります。

コンピュータサイエンスでは、メモリマップは、メモリがどのように配置されているかを示すデータの構造(通常はメモリ自体に存在します)です。

出典: http://en.wikipedia.org/wiki/Memory_map

その非常に冒頭の文に関しては、極端なあいまいさがあります。まず、RAMの目的がシステムに依存する場合、CPUのアドレス空間用にメモリをレイアウトする方法をRAMはどのように知ることができますか?

次に、RAMを変更できます。データがRAMにある場合、すべてのRAMチップは、メモリを記述する構造を持つように配線されていますか?それではうまくいきません。 CPUの範囲から見ると曖昧であり、RAMの範囲から見るとさらに意味がありません(システムはいつでも異なるメモリ、異なるハードウェア、異なるアドレス、異なるアーキテクチャなどを持つことができます)。 )。

第三に、この記事は、メモリマップがOSのファームウェアに渡されると主張しています。これは、RAMがハードワイヤードであるか、マップがCPUのアドレス空間と同期している場合にのみ意味があります。

基本的に、私は100%無知で、これに迷っています。これがどのように明確に意味があるのか​​、私にはまったくわかりません。 RAMシステムの構造に関する知識がない場合、システムのアドレスをマップすることはできません。

3
user274686

コンピュータサイエンスでは、メモリマップは、メモリがどのように配置されているかを示すデータの構造(通常はメモリ自体に存在します)です。

出典: http://en.wikipedia.org/wiki/Memory_map

その非常に冒頭の文に関しては、極端なあいまいさがあります。まず、RAMの目的がシステムに依存する場合、CPUのアドレス空間用にメモリをレイアウトする方法をRAMはどのように知ることができますか?

通常、メモリマップ自体は、デバイス上のある種の不揮発性メモリに保存されます。これにより、システムの起動時にメモリマップがプロセッサ/ MMUにロードされます。デバイスを使用している人としてメモリマップを自分で変更できます。ただし、オペレーティングシステムを実行しているシステムではレイアウトの関連性が低くなります。メモリアクセスを制御するジョブ。 DIYアプローチは通常、RAM/ROMICを既存の回路に物理的に接続している組み込みシステムでのみ必要です。

現代のコンピュータシステムに移ります...

次に、RAMを変更できます。データがRAMにある場合、すべてのRAMチップは、メモリを記述する構造を持つように配線されていますか?それではうまくいきません。 CPUの範囲から見ると曖昧であり、RAMの範囲から見るとさらに意味がありません(システムはいつでも異なるメモリ、異なるハードウェア、異なるアドレス、異なるアーキテクチャなどを持つことができます)。 )。

第三に、この記事は、メモリマップがOSのファームウェアに渡されると主張しています。これは、RAMがハードワイヤードであるか、マップがCPUのアドレス空間と同期している場合にのみ意味があります。

正確に-これがRAM自体が提供する理由です シリアルプレゼンス検出(SPD) であるため、BIOS/UEFIはRAMシステム(および、コンピューターが最後に起動されてからシステムが変更された場合)。

また、x86メモリ管理ユニットには、オペレーティングシステムで使用するための仮想メモリサポートmadeが付属しています。 MMU自体が、ハードワイヤードされた物理をブリッジしますRAMレイアウト(マザーボード上のすべてのDIMMに接続された多数のデータ/アドレスライン)です)。これはCPU自体から抽象化されます(MMUとCPUが同じダイ上にある場合でも、論理的には2つの異なる「ユニット」です)。

RAMは、システムの構造に関する知識がない場合、システムのアドレスをマップできません。

正解です。RAM自体はできません(そのため、SPD/XMPプロファイルがあります)-CPU/MMUは、起動するたびに、システムで使用可能なリソースを識別します。さらに、ほとんどのOSは 仮想メモリ 現在完全にを使用しているため、このプロセスはオペレーティングシステムの下にあるものから抽象化されています。 -)システムメモリの概念を物理的なRAM(ほとんどの人は ページング を通じてこの概念に精通しています。OSはプロセスのメモリの一部を配置できます)から分離します-解放するディスクRAM他のアプリケーション用)。

4
Breakthrough

記事によると

ブートプロセスでは、メモリレイアウトについてオペレーティングシステムカーネルに指示するために、メモリマップがファームウェアから渡されます。合計メモリのサイズ、予約済み領域に関する情報が含まれ、アーキテクチャに固有の他の詳細も提供される場合があります。

そしてそれは言う

PC BIOSは、オペレーティングシステムがメモリレイアウトを取得するために使用できる一連のルーチンを提供します。使用可能なルーチンの一部は次のとおりです。BIOS Function: INT 0x15, AX=0xE801このBIOS割り込み呼び出しは、64MB以上の構成のメモリサイズを取得するために実行中のOSによって使用されます。

次に、最初の質問に答えます。この記事では、CPUアドレス空間については何も言及されておらず、インターネットで使用されているその用語を見つけることすら簡単ではありません。 'cos CPUにはいくつかのレジスタ(CPUメモリ位置)がありますが、物を見つけるためにマップまたはある種のインデックスを必要とする大きなスペースとは異なります!また、CPUという用語は、リンクした記事のどこにもありません。記事によると、RAMはRAMからではなく、システムの他の場所から情報を取得します。 BIOSから取得します(BIOSはCMOSメモリを使用します。これはバッテリーを搭載したメモリであり、BIOSセットアップで手動で設定されますが、いくつかのものは自動的に検出されます)。そして、おそらくメモリマップには柔軟な側面があり、新しいものがロードされます。しかし、RAMはメモリマップを入れずに開始します。

それはあなたの2番目の質問に答えます。

そして、あなたが間違った3番目の質問では、記事にはメモリマップがファームウェアに渡されるとは書かれていません-いいえ!!反対のIn the boot process, a memory map is passed on from the firmwareと書かれています(ファームウェアはRAMではなく、RAMファームウェアはありません)。

BIOSの基本的なプログラムはファームウェアです。ただし、変更可能なデータは保存できます。

また、補足として、要求に応じてDDR RAMがBIOSにデータを送信するために使用するSPDと呼ばれるものがあります(このかなり高度な記事で説明されています) http://www.simmtester。 com/page/news/showpubnews.asp?num = 15 SPDがBIOSに記載されています。SPDからRAMの詳細を取得すると表示されるシステムでBIOSを構成しました。手動で入力します。 (したがって、RAMをオーバークロックすることができます)。もちろん、メモリマップはありません。その記事で言及されている、実行する速度やSPDが取得する速度などの基本的なものだけです。 BIOSの他のものは、手動で入力されたデータです。

そして、またはメモリマップを表示するには

enter image description here

2
barlop

本当に古いApple IIコンピュータには最低4k RAMがあり、さらに追加された場合はDIPスイッチを設定する必要がありました。起動時にスイッチの位置が読み取られます初期のIBMPCシステムにはDIPスイッチと64kの最小RAMもありました。メモリマップには、ディスプレイの内容やディスクバッファなどのさまざまなものがメモリ内に配置され、どのアドレス範囲にRAMがあるかがリストされています。

したがって、メモリマップの少なくとも一部は既知です-既知の場所での最小量RAM。そのメモリの一部は、メモリマップおよび検出するコードによって使用されるその他の情報を格納するために使用されます残りは完全なメモリマップを構築します。

最近のシステムは、SPDチップオンRAMモジュールを使用して、サイズとレイアウトを確認するために、より多くの自動構成(DIPスイッチは不要)を実行しますが、基本は同じです。メモリの最小量は、既知の場所にある必要があります。

0
Brian

クイックアンサー:RAMは何も「知りません」。RAMに格納されている、RAMの他のコンテンツのセマンティクスを決定するのに役立つ構造はすべて構築されます。オペレーティングシステムによって。

0
Jamie Hanrahan

ここでは間違いなく混乱が生じています。これは主に、記事がさまざまな、しかし関連するものを1か所にまとめようとしているためです。

「メモリマップ」には、同じ名前を使用したまったく異なる2つの主要なタイプがあります。

  • メモリレイアウト

    BIOSとハードウェアに関して見ているものは、実際にはもっとメモリレイアウトと呼ばれるべきです。これは、メモリのレイアウトと使用方法のdesignです。このコンテキストでは、メモリの特定の部分がさまざまな目的に使用されるように割り当てられています。

    このマップは通常、ハードウェアに具体的な方法で存在することはありません。設計者が考え出し、アレイとインデックスを使用してハードウェア/ソフトウェアに実装するナプキンまたはホワイトボードの図です。

  • メモリ割り当て

    memory-mapという用語の別の使用法は、 メモリ割り当て に関するものです。この場合、メモリ割り当てマップは、OSのメモリマネージャがプログラムに割り当てられているメモリの部分と空きメモリの部分を追跡するために使用するリストです。さまざまなプログラムがさまざまなサイズのメモリのチャンクを不確定なパターンで割り当てて解放するため、さまざまなサイズのファイルが作成および削除されたときにディスクドライブが行うのと同じようにメモリが断片化されます。

    メモリが断片化されるため、OSは、要求されたサイズのメモリのチャンクを、付属するすべてのプログラムに単純に渡すことはできません。使用済みのブロックで囲まれたさまざまなサイズの無料のブロックがあります。各空きブロックの大きさを知るために、メモリマネージャは、プログラムとの間でメモリを割り当てたり解放したりするたびに、使用済みまたは空きとしてマークするメモリの「マップ」を保持します。このマップはディスクマップ(図1)のようなもので、 VMMap (図2)のようなツールでも見ることができます。 (視覚化で使用される特定のレイアウトは異なる場合があります。たとえば、ほとんどのディスクマップではドライブが2次元で表示され、ほとんどのメモリツールではメモリが1次元で表示されますが、これは単なる設計上の選択です。)

    この割り当てマップは、実際にはメモリに格納されている配列であるリテラルマップです。

  • メモリマッピング

    (BIOSとハードウェアに関しては、 memory-mapping という用語もあります。これは、ハードウェアデバイスの一部をメモリにマッピングして、通常のメモリにアクセスするのと同じようにメモリアドレスを読み書きするだけでデバイスの読み取りと書き込みができるようにすることを指します。ただし、これは、この文脈では、「マップ」はlayoutを意味するのではなく、あるものにアナログ/エイリアスが他の何かに割り当てられる数学的なマッピングのようなものです。)


図1:Voptのディスクマップ

図2:VMMap

0
Synetech