Cobraだけどメモメモ★ミ

277 名前:Socket774[sage] 投稿日:2005/08/18(木) 04:48:58 ID:utgzC6yN
OpteronとMMIOと4GB以上のメモリ

PCI/PCI Expressはmemory mapped I/Oのための一定のアドレススペースを
必要とします。これらは32bitしかアドレッシングできないデバイスを考慮して
慣習的に32bitの限界(4GB)から手前に確保されます。この領域に重なる
メモリにはアクセスできないため、32bitモードでは4GB積んでも3.5GB程度しか
使うことができません。一方64bitモードでは、MMIO領域と重なるメモリを4GB
以降のスペースにremapしてアクセス可能にすることができます。IntelのCPUでは
この作業をチップセットが行いますが、Opteronはメモリコントローラを内蔵して
いるためCPUが行います。ここまでは前置きです。本題。

MMIO領域のremap機能を持つのはRevsion E以降のコアだけです。

結論。4GB以上のメモリを積む時は必ずRevision E以降のCPUを使いましょう。
と忘れない内にメモ。

278 名前:Socket774[sage] 投稿日:2005/08/18(木) 06:54:11 ID:5sdPS0XQ
>>277
マジですか?

279 名前:Socket774[sage] 投稿日:2005/08/18(木) 08:11:50 ID:utgzC6yN
>>278
ttp://docs.FreeBSD.org/cgi/mid.cgi?43034B86.9080900
| The E stepping Opteron can remap memory. The earlier versions can't.
というわけなのですが、ネタ帳↓を見るとabsolutely can'tというわけでもなさそうです。

ttp://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/26094.PDF
BIOS and kernel developer's guide
3.5.8 Memory Hoistingには
3.5.8.1 Memory Hoisting for Revision D and Earlier Revisionsという項目がありますし
サンプルアルゴリズムも載っています。が、
3.5.8.2 Memory Hoisting for Revision E and Later Revisionsによると、Revision Eでは
Memory Hole Registerが増設され、はるかに簡単に実装できるようになったようです。

(BIOSコードが)がんばればできるけど面倒なのでRevision Eだけサポート

あたりが真相かもしれません。がんばったBIOSもあるらしい雰囲気↓なのですけど、
ttp://docs.FreeBSD.org/cgi/mid.cgi?43020F08.6070108
| I believe that there are some Opteron systems that can do this, though.
これが本当にRevision D以前といかしたBIOSによるものなのか、たまたま使った
CPUがRevision Eだっただけなのかはわかりません。

ただ以下の例もあるとのこと
http://pc7.2ch.net/test/read.cgi/jisaku/1122667479/281-291