今時のメモリー
 メモリー・・・いろんなのが増えましたねぇ。主流なタイプが一種類に
絞られて進んでいけば良いものを、トレンドは数種類のメモリが市場に
共存してしまうという、うっかりするとぜんぜん自分のマシンにマッチして
いないメモリーモジュールを掴まされてしまいそうなこの頃である。

 ここらでちょいと まとめといてみようぢゃないすか(^-^)♪

	ソフトウェア上でのメモリ
	Segment
Memory Map
0x000000
	Base/Conventional
0x0A0000
	UMA
		BIOS ROM
		UMB
		EMS  補足
0x100000
	XMS
	HMA

	ハードウェア上でのメモリ
	ROM & RAM<
	ROM
	Masked ROM
	PROM
	EPROM
	EEPROM
	EEROM
	FlashROM

	RAM
	DRAM
	FPM-DRAM
	EDO-DRAM
	SDRAM
	DDR-SDRAM
	VCM-SDRAM
	RDRAM
	Flash Memory
	SRAM
	Burst SRAM
	PB-SRAM

	形状
	IC
	SOJ
	TSOP
	SIMM
	DIMM
	U-DIMM
	R-DIMM
	FB-DIMM
	SO-DIMM
	RIMM
	RIMM1600
	RIMM3200
	RIMM6400
	RIMM2100
	RIMM4200
	RIMM8500
	RIMM2400
	RIMM4800
	RIMM9600
	RIMM3100
	RIMM6250
	RIMM12500
	
	Rambus XDR
	
	
	SO-RIMM
	専用メモリ

	動作速度
	ns

	PC66
	PC100
	PC133

	PC200 同意語DDR200
	PC266 同意語DDR266
	PC333 同意語DDR333

	PC400 同意語DDR400
	PC533 同意語DDR533
	PC667 同意語DDR667

	PC600
	PC700
	PC800
	PC1066
	PC1200

	PC1600 同意語DDR200
	PC2100 同意語DDR266
	PC2700 同意語DDR333

	PC3200 同意語DDR400
	PC4200 同意語DDR533
	PC5300 同意語DDR667

	RUMBUS(PC600)
	RUMBUS(PC700)
	RUMBUS(PC800)

	Latency
	Band Width

	機能
	Parity
	ECC
	拡張機能?
	Interleaving
	ECC Memory Scrubbing
	Cache
	Battery Backup Memory
	NVRAM
	VRAM
	Texture Memory


 単純にメモリーと言っても、その言葉が意味するものは二種類に
分けられます。ひとつは、ソフトウェア上で見たときのメモリと、
ハードウェア上で見たときのメモリです。
 場合によっては、ハードウェア上でのメモリの実装のされかたに
よってソフトウェア上でのメモリの見え方、認識のされ方が違ってきます。


 ・ソフトウェア上でのメモリ

 まずは簡単に、ソフトウェア上での見え方というか、そういうのを説明
しましょう。ソフトウェア上での見え方は、そのコンピュータに実装されて
いるCPUなどのハードウェアの違いで大きく異なります。なぜならコンセプト
が異なるためにメモリ空間の扱われ方が違うからです。ここでは、現在
もっとも多く使用されているであろうIntel系CPUを実装しているマシンとして
軽く説明をします。

 Intel系CPUでは、I/O Mapped I/Oというメモリ空間が採用されています。
これは、メインメモリとI/O(周辺装置を制御するための空間)が別のエリア
として扱われています。これに対して、メインメモリと同じ空間に配置されて
いる設計をMemory Mapped  I/Oといいますが、それはここでは考慮しません。

 Intel系CPUには動作モードが二種類有り、8086互換(リアル)モードと、最新CPUの
本領を発揮できるプロテクトモードがあります。厳密にはもっとイロイロある気も
しますが、、、特権レベルうんぬんかんぬん、、、詳しくは知りません(ぉ
某情報屋から入手した情報(ぉ
8086:リアルモード 1MBまでのメモリ空間が使用できるモード
80286:プロテクトモード 16MBまでのメモリ空間が使用できるモード
仮想メモリをハードウエアではサポートしない
※遅くなるがソフト上では一応可能
80386:ネイティブモード
(旧称エンハンスドモード)
4GBまでのメモリ空間が使用できるモード
仮想メモリをハードウエアでサポート(1ページ=4KB)

この機能を利用した物に、仮想8086モード、
仮想EMSなどがある
あと、セグメント長を(任意か固定かは知らないけど)
変えれるという特徴もあります。

何を語るにもセグメントの概念をば。

 何はともあれ、Intel系CPUのメモリ空間を考えるには8086CPUのメモリ
空間を知っておくべきでしょう。8086は、16bitなCPUです。CPUの中の
レジスタ(一種のメモリで、計算するときなど一時的にデータを置くもの)
が16bitで構成されています。メモリ空間アドレスを指定するためのアドレス
バス(信号線)は20本(20bit addressing)出ています。20bit有ると、
約1MBのメモリ空間をアドレッシング(位置指定)出来るようになります。

 しかし、レジスタ長は16bitしかないので、一度に自由にアドレッシング
出来るのは64KBの範囲に限られてしまいます。これを補うために、
8086ではセグメントレジスタと呼ばれるレジスタを利用して1MB空間を
アドレッシング出来るようになっています。セグメントレジスタの内容は、
CPU内部で4bitシフトアップされて16bit長のアドレス指定レジスタと
加算されます。その結果得られた20bitのアドレスで1MB空間をアクセス
できます。
 DS(Data Segment) Register : 0x1044
  BX(Base) Register         : 0x4400

 だとすると、アクセスされるアドレスは 0x10440+0x04400=0x14840
 0x14840番地のメモリがアクセスされることになります。
 これは、同じアドレスをアクセスするのに複数のパターンがある
 ということを示しています。セグメントの数値が変わると、BXなどの
 レジスタで指定する数値も変更しないとイケナイわけです。
 いわゆるこれが、「悪名高きセグメント」の始まりです。セグメントを
 意識しないで自由に操作できる空間は64KBの範囲内だけになります。


 ・Memory Map


Base/Conventional Memory		0x000000〜0x09FFFF

メモリの先頭から640KBまでの領域が、メインメモリ(Base/Conventional)
になります。先頭部分にはBIOS領域を含みます。

UMA:Upper Memory Area		0x0A0000〜0x0FFFFF

640KB〜1MBまでの空間(384KB)がSystem空間・I/O空間です。
I/O空間は確か専用の命令で無いとアクセスできないのだったと
思います(あやふや)。通常拡張ボードなどを取りつけると、そのカードに
アクセスするためのI/O空間が分け与えられ、いくつかの空き(何も無い空間)
が存在しています。


BIOS ROM				0x0F0000〜0x100000

UMA中の後半部分にBIOS ROMの実態があります。

 8086のメモリ空間は、1MBまでで、利用できるメインメモリはその内
640KBですので、デバイスドライバなどで実に圧迫されます。1MB以上の
空間は、MS-DOS上からでは基本的には操作できません。ですので、
普通に利用できるメモリ空間は640KBになります。これが「悪名高き640KBの壁」
という奴です。その昔、MS-DOSの技術レベルは以下にメインメモリ(Conventional)
に空きを作れる構成を構築出来るかで計られたものです。何しろ、便利な
ソフトこそ、大きい空き領域が要求される為です。そのため、イロイロな
小細工が施されたのですが、今でもその名残が多少なりとも残っていて、
システム環境(メモリ空間)を複雑怪奇なものにしています。

・姑息な手段の数々(ぉ

 ・UMB:Upper Memory Block

  これは80386くらいからだったと思いますが、MMUが
  実装されていたから出来たのかなぁ? 詳細はよく知りません。
  MMUとはMemory Management Unitのことで、簡単に言うと
  アドレス空間の入れ替え・仮想割り当てを行うことが出来ます。
  プログラム側で同じアドレスを指定してきても 実際にアクセス
  される空間は割り当てられた別の物理領域となる。これの
  おかげで いわゆる仮想記憶・仮想メモリ・スワップというのが
  実現できるわけです。(違ってたらごめん(ぉぃ))
  これはそのUMA中で空いているI/O空間がもったいないので、
  そこにメモリを割り当てて使ってしまおう、というものです。
  実際にはI/O空間であり普通のメモリとしては扱われないので、
  特殊用途に限られます。その使われ方はというと、デバイス
  ドライバを突っ込む領域として利用されています。もちろん、
  DOSの時代の話ですよ、Windowsにはまったく関係無いはず
  です。config.sysの中で、devicehigh=?????? で指定されている
  物が、UMBに割り当てられます。但し、UMBに割り当てると
  正常に動作しないドライバもありますし、容量も少量ですので、
  慎重に調整をする必要があります。
  HMAとUMBを駆使することで、かなりメインメモリ(Conventional)
  を空かせることが出来ます。
  UMBはXMSの機能の一部として提供されます。

 ・EMS:Expanded Memory Specification

  その昔のマシンでは、CPUの制限上、1MBよりも物理メモリを
  増やせない状況であったので、生まれた手法です。
  メモリを一種のI/O装置とみなし、I/O空間に窓を開けます。
  そこの制御ポートをアクセスし、バンク(ページ)切り替えという手法を
  行い、16KBごとのバンク(ページ)切り替えを行ってやることで、
  同じ空間をアクセスしつつ違うメモリを操作出来るようにして、
  1MB以上のメモリを利用出来るようにしたシステムです。
  このEMS領域を利用するためには、各EMSメモリメーカーの
  デバイスドライバをconfig.sysに組み込み、そのデバイスドライバに
  よって提供されるEMSシステムコールを使用します。ドライバは
  指定されたページ数を確保し、アクセス用のワークエリアに
  EMSページの内容をコピーします。ページの切り替えを行うと、
  ワークの内容を書き戻し、新しいページの内容をワークに
  コピーします。そんなこんなで使います。
  今にして思えば、すごい複雑怪奇な代物ですよね。
  このメモリが主流だったころ、大型アプリケーションでは、
  ?ページのEMSメモリが必要です、という動作条件が記載
  されていた物です。
  今現在の最新CPUでは、このEMSシステムをエミュレーション
  しているだけの状態になって残っています。
  仮想EMSドライバが利用されています。

  以下、某情報屋から聞き出した EMSに関する補足情報です。

  EMSについて補足
  EMSの種類
        ハードウエアEMS
                ハードウエアによって実現されるため、8086でも利用できました。
                後述するソフトウエアEMSより高速という特徴があります。
        ソフトウエアEMS
                286以降で16MBのメモリ空間使用できるようになったのですが
                当時サポートするOSもなく、使い道の無かったプロテクトメモリを
                EMSとして利用するものです。
                ただ、元もと当時のCPUは遅かった上にオーバーヘッドが大きいため
                あまり使われることはありませんでした。
                MS-DOS のメモリドライバは、EMM.SYS
        仮想EMS
                386以降でサポートされたMMUの機能を使った物
                基本的にはソフトウエアEMSがのですがMMUが素早いページ切替を
                実現するため全てのEMSの中でもっとも高速です。
                MS-DOS Ver5 時代もっともメジャーなメモリ拡張方式でした。
                HIMSYS.SYS が確保したXMSメモリを使用するため、HIMEM.SYS が組み込ま
                れていないと使用できません。
                MS-DOS のメモリドライバは、EMM386.SYS や EMM386.EXE


 ・XMS:eXtended Memory Specification

  これは80286以降から利用できるようになっていたのではないかな?
  386からだっけか?? プロテクトモードで利用できる、1MBを超えた
  空間のメモリを利用するためのメモリ管理ドライバによって管理されて
  いるメモリです。ドライバの実態はHiMEM.SYSです。
  HIMEM.SYSの管理外にはずされるメモリが存在します。それは、
  日本語表示の為に組み込まれる、日本語フォントドライバは、HiMEM.SYS
  よりも前に組み込まれ、メモリ空間に常駐します。その空間はHiMEM.SYS
  の管理機構から外れます。
  EMSを利用していたアプリケーションを正常に動作させるためには、
  仮想EMSドライバ、EMM386.EXEを組み込みます。パラメータを与えて
  やることでEMSシステムに何ページ分を分け与えるかを指定できます。
  仮想EMS領域は、XMS領域から割り当てられます。
  MS-DOS上のソフトウェアでプロテクトモードを利用せずに全メモリを利用
  したいのであれば、XMSエリアのメモリを全て仮想EMSに割り当てれば、
  EMSシステムコールのバンク・ページ切り替えを利用して全体にわたって
  利用が可能になります。現在ではあまり誉められる使い方ではないですが。


 ・HMA:High Memory Area

  80286プロセッサ以上のCPUは、8086互換モードも有りつつも
  その本性は32bitプロセッサで、32bit(286は24bit)長のアドレス
  指定でメモリ空間を利用出来るようになっています。しかし、
  それは8086と互換の無い動作で、プロテクトモード動作と呼ばれます。
  その関係で、先に述べたセグメントを組み合わせると、ちょっと
  面白いことが出来るようになりました。セグメントとレジスタの
  数値を加算したときに1MBを超える数値を指定したとします。
  たとえば、分かりやすい例でいうと、DS=0xFFFF、BX=0xFFFF
  としたとしましょう。そうすると、例の法則で加算すると
  0x10FFEF になります。8086アドレスバスでは、20bitですので、
  桁あふれして実効アドレスは0x0FFEFというunexpected(予期していない)
  なアドレスをアクセスすることになってしまいます。が、80286では
  21bit目が有効となり、1MBを超えた空間がほんのちょっぴり、
  MS-DOSの世界から互換性を保ったままで直接触れるのです。
  これを利用したのがHMAです。HMAは約64KBです。
  この領域の利用方法は、ここにMS-DOSの本体を放り込んで
  しまうというのが標準的です。こうすることで、DOS本体分の
  メインメモリがそっくり開いてしまうというわけです。
  HMAはXMSの機能の一部として提供されます。

さて、プログラム開発をしていない人が見かけそうな、システム構成中に
耳にしそうなものは、こんなものではないだろうか??
最近はこれすらも聞かないか(笑


 ・ハードウェア上でのメモリ  

 ハードウェアとしてメモリを見た場合、タイプ、形状、速度、機能で区別される。
ここでは それぞれを 説明をしていってみたいと思う。


 機能として最も基本的にして大きく二種類に分けられる。言わずと知れた
ROM(Read Only Memory)とRAM(Randam Access Memory)である。


そして、そのROMの中にも、いろいろなタイプがある。
ROMの内容は、電源が切れても消えることは無い。


	・Masked ROM
		いわゆるROMであり、製造段階で焼き込まれている情報を
		読み出すのみである。主にBIOS/Firmwareに利用される。
		読取専用メモリ。


	・PROM:Programable ROM
		製造段階では内容は何も焼き込まれていなくて、別途専用の
		ROM Writerという機械を利用して内容を一回だけ書き込める。


	・EPROM:Erasable PROM
		ROMのICにシールが張ってあり、それを剥がして紫外線に
		露光させてやることで、内容が消去できる(Erasable)。その後、
		専用のROM Writerという機械を利用して内容を一回だけ
		書き込める。失敗したり、内容の更新をしたい場合には、
		また露光させて消去すれば良い。


	・EEPROM:Electric EPROM
		紫外線露光の変わりに、消去専用の端子にある電圧を
		一定時間かけてやることで、内容の消去が出来る。
		消去後、ROM Writerで一回だけ書き込める。失敗したら
		消去しなおして書きこみ直せば良い。主にBIOS/Firmwareに
		利用され、EEPROMを組み込んだ基板に同時に消去用回路と
		書き込み用回路を組み込み、専用のプログラムでそれらを
		機能させてEEPROMの内容を更新するように利用される。
		PCとかのBIOS UpdateとかがFDとかから実施出来るのも
		こういう機能のおかげである。
		注意! PCなどのBIOS更新に失敗すると、再び起動出来なく
		     なるので、基板交換をせざるをえなくなります。
			慎重に実施しましょう。


	・EEROM:Electric Erasable ROM
		EEPROMと同じようなものだが、えてしてEEROMと
		記述されているものは容量が小さく、ほとんどの場合は何かの
		設定情報の記録に利用されている。


	・FlashROM
		EEPROMの進化版で、その制御がしやすかったり、消費電力が
		小さかったりするのである。現在の主流である。



 次に RAMであるが、これはもう今ワケ分からない(苦笑
なんで同じでないのか叫びたくなるくらいだけれども、着実に技術が進歩している結果
なので、素直に受け止めようではないか(^^;)

RAMはROMと違って、電源が切れるとRAMの内容は綺麗さっぱり消える。
しかし、その内容はプログラムから自由に何度でも書き換え・読み出しが
可能である。ソフトウェアから見るとRAMはどの種類でもほぼなんの分け隔てなく
アクセスできる。しかしRAMにはハードウェア的な動作の違いから、次のような
種類がある。

	・DRAM:Dynamic RAM
		いわゆる標準的なRAMの呼称である。DRAMと付いているメモリは、
		一定時間後とにリフレッシュ信号というのを与えて、記録内容である
		電気信号を立ち直らせるというか、書きなおすというか、しないと
		情報を長く保持できない特性がある。リフレッシュ信号はメモリコント
		ローラ回路から自動的に供給されるので、一般ユーザーは普通は
		何も気にする必要は無い。安価に回路が作れるが、消費電力が
		大きい。

	・FPM-DRAM:Fast Page Mode DRAM
		ただのDRAMを高速にアクセス出来るように細工をしたもの。
		ある連続したメモリをアクセスする場合に、DRAMチップ選択信号の
		一部(?)を固定し、アドレス信号の下位ビットのみを連続変化させ
		てメモリの内容にアクセスする。固定された範囲でアクセスされる
		領域をページといい、そのページ内は普通より高速にアクセスできる。
		DRAMチップが選択されたままになるので、反応速度が上がる、、、
		ということだったと思うが、うろ覚えだ(苦笑
		いずれにせよ、過去のものである。

	・EDO-DRAM:Extend Data Output DRAM
		メモリとCPU間での読み出し時間を短縮する技術。
		EDOに対応していないマザーボードでは利用できない。
		FPMに比べて10〜15%のパフォーマンス向上がある。

	・SDRAM:Synchronous DRAM
		クロックによってメモリチップへの信号入出力を同期させる技術。
		クロックはCPUクロックと合わせてあり、CPUとメモリのタイミングが
		同時になるようになっている。EDOメモリよりも50%くらいの
		パフォーマンス向上がある。

	・DDR-SDRAM:Double Data Rate SDRAM
		別名SDRAMII。システムクロックの立上がり、立下りの両エッジの
		タイミングでデータ入出力をするSDRAM。単純にSDRAMの二倍の
		パフォーマンスがある。
		

	・DDR2-SDRAM:Double Data Rate2 SDRAM
		メモリモジュール内部データバス(メモリチップからコネクタの手前まで)
		を2倍の幅に作り(64bit→128bit)チップから1度に取り出すデータ量を倍にし、
		現状のDDRに比較し倍速にしたメモリ側FSBクロックに同期して動作するようにしたメモリ。

	・DDR3-SDRAM:Double Data Rate2 SDRAM
		現在規格策定中。DD2で実施された内部バス幅の拡張と(128bit→256bit)、データ出力
		周波数を更に向上させたメモリになる予定。

	・VCM-SDRAM:Vertual Channel Memory SDRAM
		NECが開発した新型SDRAM。従来のSDRAMはあるアドレスにアクセス中に
		次にアクセスされるであろうメモリにアクセスを開始し、次のアクセスがCPUから
		来たときに準備できていたデータを渡す形で高速化を図っていましたが、
		この方式(VCMと対比して言うなればOCM:One Channel Memory)では、
		連続するアドレスへのアクセスには高速性能が提供できるが、マルチタスク
		環境ならではの頻繁なランダムアドレスへのアクセスに対してその性能を
		充分に発揮できないでいる。それを解決できるのがVCM-SDRAMだという。
		VCM-SDRAMはVCMコアという回路を搭載して次の新機能を提供している。
		CPUから見るとメモリアクセスの窓口は一箇所だが、VCMコア内で複数の
		Channelに割り振り、以前アクセスした近辺に注目している(準備できている)
		Channelがあればそこにアクセスをして、アドレスがランダムに変化することで
		発生するLatencyを低減できる。
		良くあるPC133 SDRAMのLatencyはL3だが、VCMコアを採用することで
		L2の性能を提供できるという。

		注意) OCMは便宜上書いた造語です。一般的な呼称ではないはず(^^;)


	・RDRAM:Rambus DRAM
		Rambus社が開発したバスインターフェースを採用したメモリモジュール。
		非常に高速なクロックで動作する単純化された専用バス(16bit)を利用するので、
		従来のDRAMよりも10倍くらいのパフォーマンスがあります。
		Direct RDRAMと、Concurrent RDRAMという種類もある。
		400Mhzのクロックで動作しており、その信号の立上がり、立下りの
		両エッジを利用してデータ入出力をおこなうので、転送レートは
		倍の800Mhzになる。300Mhz駆動のRIMMもあるようだ。

	・Flash Memory
		電源が切れても内容が保持されるメモリ。
		Flash ROMの別名。

	・SRAM:Static RAM
		DRAMと違ってリフレッシュ信号を供給する必要が無い。
		DRAMよりも高速なメモリを作れるが、高価になってしまうため、
		小容量のSRAMを外部Cacheメモリとして利用していた。

	・Burst SRAM
		アドレスを固定して連続アクセスするモード(BurstMode)を追加して
		より高速にデータの入出力を行えるようにしたSRAM。50〜167Mhz程度の
		バンド幅が出るが回路が高価にである。
		アクセス時のLatencyが小さい傾向にある。

	・PB-SRAM:Pipelined Burst SRAM
		内部にバースト回路を組み込んで、メモリアクセスをパイプライン化して
		データ入出力の高速化を図ったSRAM。あるアドレスにアクセス中に次の
		アドレスへのアクセスを開始できるため、メモリのアクセスタイムを高速化
		せずにデータ転送の高速化が可能である。Burst SRAMに比べてLatency
		が若干大きいようだ。


 ROM/RAMの形状でもいくつかの呼び名がついている。上記のタイプと続けて
記述してメモリのタイプと形状を示す表示になっているものがある。


	・ごく普通のIC形状
		今ではめったに無いのかもしれないが、いわゆるムカデ形状である。
		BIOSが記録してあるROMなどが、こういう形状のものであることが多い。

	・SOJ:Small Outline J-connector(?)
		システムボード・マザーボード上にon boardで実装されているVideo Controller
		等に増設メモリがつく場合、この形状であることが多い。これはICの足が、
		J字に曲がっていて、それ様のICソケット(くぼみ)に埋め込むように取りつける。
		付けにくいが外れにくい。

	・TSOP:Thin Small Outline Package(?)
		ガルウイング状の銅線を両側につけたDRAMパッケージの一種。SOJタイプの
		ものより、厚さが1/3程度に薄く出来るのが利点です。

	・SIMM:Single Inline Memory Module
		ついこの間まで標準的なメモリの形状だった。SIMMソケットという受け側の
		コネクタにカチッとラッチで取りつけるだけという簡単設計のメモリだ。取りつけ
		やすく、取り外しやすい。SIMMモジュールが少し斜めに取りつくものと、垂直に
		取りつくものと、水平に寝そべって取りつくソケット形状がある。古い型のものは、
		30pin端子のもの、新しいのは72pin端子である。
		SIMMモジュールは、メモリ出力データ幅が32bit幅なので、Pentium以上の
		CPUのように、64bitデータ幅を要求するCPUで使用する場合には、同一仕様の
		SIMMモジュールを2枚ペアで取りつける必要がある。

	・DIMM:Dual Inline Memory Module
		ここ最近主流のメモリ形状である。DIMMソケットという受け側のコネクタに
		カチッと垂直に固定する。168pin端子のモジュールである。SIMMのデータ幅が
		32bitなのに対して、DIMMのデータ幅は64bitなので、Pentium以上のCPUでも
		1枚ずつ取りつけて増設できる。
		パフォーマンス重視のシステムボードなどでは、メモリインターリーブを行うために
		2枚セットまたは4枚セットであることもある。
		また、より細かく分類すろと U-DIMM / R-DIMM(B-DIMM) / FB-DIMM などの分類が
		あるが、これらの間には互換性がないので注意が必要である。

	・U-DIMM:Unbuffered - Dual Inline Memory Module
		一般に単に"DIMM"と言えば、U-DIMMのことである。Chip Setからのメモリ
		制御信号がDIMMモジュール内のメモリチップまで直接配線される。これは
		Chip Setにとって電気的負荷が大きくなるため、あまりたくさんのメモリを
		接続できない。結果大容量化には向かない。しかしながら、信号が直接届く分
		スループットは速い。

	・R-DIMM:Registerd - Dual Inline Memory Module
	・B-DIMM:Buffered - Dual Inline Memory Module
		Chip Setからのメモリ制御信号は、DIMMモジュール内のバッファに受けられて
		メモリチップに転送される。この結果、Chip Setからの信号はDIMMモジュールの
		入口までで良くなり、Chip Setの電気的負荷が小さくなる。この結果、U-DIMMに
		比較してDIMMモジュールをたくさん搭載可能になり、大容量化に向いている。
		しかし、バッファを介す分スループットはU-DIMMに比べてやや落ちる。
		また、メモリチップと接続バスの動作速度の高速化に伴い、信号ノイズなどの
		問題から R-DIMMを持ってしても大容量化が難しくなってきている。
		Bufferを搭載した機構はRambus社のラインセンスが絡むので、U-DIMMに比べて
		高価である。

	・FB-DIMM:Fully Buffered - Dual Inline Memory Module
		多数の高速信号線をパラレル配線するとノイズ耐性が弱くなる点を改善する
		目的で、RIMMのようなシリアルバスを束ねたラインを採用し、メモリモジュールには
		R-DIMMのバッファよりも高機能にしたAMB(Advanced Memory Buffer)を搭載する。
		Chio Setから各DIMMモジュールのAMBをデイジーチェーンに接続する。
		この結果、高速性と安定性を保ったまま大容量化を実現できる。
		U-DIMM / R-DIMMに比べて AMB搭載分さらに高価であり、サーバーなどで
		採用されてはいるがワークステーションなど一般にはあまり普及していない。

	・SO-DIMM:Small Outline-DIMM
		Note PC用の小型DIMM。72pin/88pin/144pinの種類があるようです。

	・RIMM:Rambus Inline Memory Module とも Rambus Interface Memory Moduleとも
		解釈があるようですが、某情報網とRambus社のhomepageで見ますと単にRIMM。
		ここ最近注目されているRDRAM専用の形状。専用のchip setで構成される
		Rambus Channelというバスに接続されていて、バスの終端(terminater)まで
		途切れなく結線されていなくてはならない。そのため、RIMMモジュールの
		付いていない(空き)RIMMソケットには、Continuity Moduleを取りつけておく
		必要があり、Continuity ModuleはRambus Channelをただ繋げておくためだけの
		板切れである。嘘かまことか、Rambus社のhomepageでRIMMの説明を読むと、
		Rambus Channel 1回線につき3個までしかRIMMモジュールを取りつけられない
		のだそうだ。RDRAMは400Mhzという高速クロックで動作しているので、発熱するが
		熱対策としてRIMMモジュールには放熱板(Heat Spreader)がついている。
		168pin端子の板切れ。

	・RIMM1600: PC800対応16bit RIMMモジュールの別称。
		800Mhz動作で、16bit(2byte)入出力であることから、1600MB/secであることを
		示す。

	・RIMM3200: PC800対応32bit RIMMモジュールの別称。
		800Mhz動作で、32bit(4byte)入出力であることから、3200MB/secであることを
		示す。

	・RIMM6400: PC800対応64bit RIMMモジュールの別称。
		800Mhz動作で、64bit(8byte)入出力であることから、6400MB/secであることを
		示す。

	・RIMM2100: PC1066対応16bit RIMMモジュールの別称。
		1066Mhz動作で、16bit(2byte)入出力であることから、約2100MB/secであることを
		示す。(実際には2x1066=2132MB/sec)

	・RIMM4200: PC1066対応32bit RIMMモジュールの別称。
		1066Mhz動作で、32bit(4byte)入出力であることから、約4200MB/secであることを
		示す。(実際には4x1066=4264)

	・RIMM8500: PC1066対応64bit RIMMモジュールの別称。
		1066Mhz動作で、64bit(8byte)入出力であることから、約8500MB/secであることを
		示す。(実際には8x1066=8528MB)

	・RIMM2400: PC1200対応16bit RIMMモジュールの別称。
		1200Mhz動作で、16bit(2byte)入出力であることから、2400MB/secであることを
		示す。

	・RIMM4800: PC1200対応32bit RIMMモジュールの別称。
		1200Mhz動作で、32bit(4byte)入出力であることから、4800MB/secであることを
		示す。

	・RIMM9600: PC1200対応64bit RIMMモジュールの別称。
		1200Mhz動作で、64bit(8byte)入出力であることから、9600MB/secであることを
		示す。

	・RIMM3100: PC1600対応16bit RIMMモジュールの別称。
		1600Mhz動作で、16bit(2byte)入出力であることから、3100MB/secであることを
		示す。

	・RIMM6250: PC1600対応32bit RIMMモジュールの別称。
		1600Mhz動作で、32bit(4byte)入出力であることから、6250MB/secであることを
		示す。

	・RIMM12500: PC1600対応64bit RIMMモジュールの別称。
		1600Mhz動作で、64bit(8byte)入出力であることから、12500MB/secであることを
		示す。


	・Rambus XDR: Rambus社の開発したDDRに変わるメモリインターフェース技術XDR。
		400Mhzバスクロックの8倍速=3200Mhz=3.2GHzでデータを出力するとか。
		2Bytes-Wide(16bitバス)で秒間 6.4GB/sec出るそうな。
		最高6.4GHzまで速度アップできる模様。そうすると12.8GB/sec出せる事になる。
		もしかしてRIMMのようにバス幅も拡張してくるのなら、8Bytes-Wide(64bitバス)幅で
		6.4GHz x 8Bytes = 51.2GB/secという鬼のような大域幅のメモリになる。



	・SO-RIMM:Small Outline-RIMM
		Note PC用の小型RIMM。160pin端子。普通のRIMMと同じく放熱板がついて
		いて、空きソケットにはContinuity Moduleが必要となっているみたい。

	・専用メモリ
		ある機種専用に形状デザインされたメモリ。現在ではNotePCで良く見られる?
		基板に実装されているメモリ自体は、SDRAMなど規格に準じたものだが、
		形状がSIMM/DIMM/SO-DIMMなどの規定の形状ではなく、それ専用の形状
		になっているなど。


 メモリは上記のタイプ・形状とともに動作速度の仕様もマッチしないと、増設したいマシンでは
利用できないのである。


	・ns:nano second
		ナノ秒。従来メモリモジュールの反応速度・スピードはnsという時間帯で
		示される。nsとは1/1,000,000,000秒である。その昔SIMMで供給されていた
		メモリの多くは、100ns/80ns/70ns/60nsくらいの速度でした。
		これは、100Mhzで動作するCPUで利用していたとすると、CPUは10nsで
		1サイクルを終了しますので、充分に遅い反応速度でした。
		メインメモリに直接アクセスしたとすると、CPUが命令6個処理できる時間を
		待たされることになります。昔のFPMEDOメモリでは
		この速度表記が使用されていました。


	・PC66
		システムボード・マザーボードのベースクロックの66Mhzに同期して動作
		できることを示します。約15nsで動作している計算になります。しかし、
		この動作クロック帯が出てきたころにはCPUは200Mhzオーバーの時代です
		ので、5ns程度で1サイクルが終了することになります。
		メインメモリに直接アクセスしたとすると、CPUが命令3個処理できる時間を
		待たされることになります。
		SDRAMでの速度表記です。

	・PC100
		システムボード・マザーボードのベースクロックの100Mhzに同期して動作
		できることを示します。約10nsで動作している計算になります。しかし、
		この動作クロック帯が出てきたころにはCPUは400Mhzオーバーの時代です
		ので、2.5ns程度で1サイクルが終了することになります。
		メインメモリに直接アクセスしたとすると、CPUが命令4個処理できる時間を
		待たされることになります。
		一秒間当たり、0.8GB程度の転送速度になります。
		SDRAMでの速度表記です。

	・PC133
		システムボード・マザーボードのベースクロックの133Mhzに同期して動作
		できることを示します。約7.5nsで動作している計算になります。しかし、
		この動作クロック帯が出てきたころにはCPUは500Mhzオーバーの時代です
		ので、2ns程度で1サイクルが終了することになります。
		メインメモリに直接アクセスしたとすると、CPUが命令3.75個処理できる時間を
		待たされることになります。
		一秒間当たり、1.06GB程度の転送速度になります。
		SDRAMでの速度表記です。

	・PC200 / DDR200
		システムボード・マザーボードのベースクロックの100Mhzに同期して動作
		し、クロックの両エッジでデータを入出力するDDR-SDRAMのデータ出力速度、
		200Mhzを示します。約5nsで動作している計算になります。しかし、
		この動作クロック帯が出てきたころにはCPUは600Mhzオーバーの時代です
		ので、1.67ns程度で1サイクルが終了することになります。
		メインメモリに直接アクセスしたとすると、CPUが命令2.99個処理できる時間を
		待たされることになります。
		現在主流のDDR-SDRAMでの速度表記です。
		PC1600の同義語です。

	・PC266 / DDR266
		システムボード・マザーボードのベースクロックの133Mhzに同期して動作
		し、クロックの両エッジでデータを入出力するDDR-SDRAMのデータ出力速度、
		266Mhzを示します。約3.76nsで動作している計算になります。しかし、
		この動作クロック帯が出てきたころにはCPUは700Mhzオーバーの時代です
		ので、1.42ns程度で1サイクルが終了することになります。
		メインメモリに直接アクセスしたとすると、CPUが命令2.65個処理できる時間を
		待たされることになります。
		現在主流のDDR-SDRAMでの速度表記です。
		PC2100の同義語です。

	・PC333 / DDR333
		システムボード・マザーボードのベースクロックの166Mhzに同期して動作
		し、クロックの両エッジでデータを入出力するDDR-SDRAMのデータ出力速度、
		333Mhzを示します。約3.00nsで動作している計算になります。しかし、
		この動作クロック帯が出てきたころにはCPUは1Ghzオーバーの時代です
		ので、1.00ns程度で1サイクルが終了することになります。
		メインメモリに直接アクセスしたとすると、CPUが命令3個処理できる時間を
		待たされることになります。
		現在主流のDDR-SDRAMでの速度表記です。
		PC2700の同義語です。

	・PC400 / DDR400
		システムボード・マザーボードのベースクロックの200Mhzに同期して動作
		し、クロックの両エッジでデータを入出力するDDR2-SDRAMのデータ出力速度、
		400Mhzを示します。約2.50nsで動作している計算になります。しかし、
		この動作クロック帯が出てきたころにはCPUは1Ghzオーバーの時代です
		ので、1.00ns程度で1サイクルが終了することになります。
		メインメモリに直接アクセスしたとすると、CPUが命令2.5個処理できる時間を
		待たされることになります。
		現在主流のDDR2-SDRAMでの速度表記です。
		PC3200の同義語です。

	・PC533 / DDR533
		システムボード・マザーボードのベースクロックの266Mhzに同期して動作
		し、クロックの両エッジでデータを入出力するDDR-SDRAMのデータ出力速度、
		533Mhzを示します。約1.87nsで動作している計算になります。しかし、
		この動作クロック帯が出てきたころにはCPUは1Ghzオーバーの時代です
		ので、1.00ns程度で1サイクルが終了することになります。
		メインメモリに直接アクセスしたとすると、CPUが命令1.87個処理できる時間を
		待たされることになります。
		現在主流のDDR2-SDRAMでの速度表記です。
		PC4200の同義語です。

	・PC667 / DDR667
		システムボード・マザーボードのベースクロックの333.5Mhzに同期して動作
		し、クロックの両エッジでデータを入出力するDDR-SDRAMのデータ出力速度、
		667Mhzを示します。約1.50nsで動作している計算になります。しかし、
		この動作クロック帯が出てきたころにはCPUは1Ghzオーバーの時代です
		ので、1.00ns程度で1サイクルが終了することになります。
		メインメモリに直接アクセスしたとすると、CPUが命令1.5個処理できる時間を
		待たされることになります。
		現在主流のDDR2-SDRAMでの速度表記です。
		PC5300の同義語です。

	・PC600
		Rambus Channel 300Mhzで駆動するRDRAMでデータ出力速度600Mhzを
		示します。約1.67nsで動作している計算になります。しかし、この動作クロック帯
		が出てきたころはCPUが800Mhzオーバーがやってきました。1.25ns程度で
		1サイクルが終了することになります。
		メインメモリに直接アクセスしたとすると、CPUが命令1.336個処理できる時間を
		待たされることになります。

	・PC700
		Rambus Channel 350Mhzで駆動するRDRAMでデータ出力速度700Mhzを
		示しているのか?(苦笑 Rambus社の資料で見ると、600/800の間は711
		になっていて、711についてはなんだかあんまり説明されていない感じもする。

	・PC800
		RambusRAMBUS Channel 400Mhzで駆動するRDRAMでデータ出力速度800Mhzを
		示します。約1.25nsで動作している計算になります。しかし、この動作クロック帯
		が標準的になるころはCPUが1000Mhzオーバーがやってきます。1ns程度で
		1サイクルが終了することになります。
		メインメモリに直接アクセスしたとすると、CPUが命令1.25個処理できる時間を
		待たされることになります。
		16bitのRIMMモジュールの場合、1.6GB/sec程度の転送速度になります。
		32bitのRIMMモジュールの場合、3.2GB/sec程度の転送速度になります。
		64bitのRIMMモジュールの場合、6.4GB/sec程度の転送速度になります。

	・PC1066
		RambusRAMBUS Channel 533Mhzで駆動するRDRAMでデータ出力速度1066Mhzを
		示します。約0.93nsで動作している計算になります。
		16bitのRIMMモジュールの場合、2.1GB/sec程度の転送速度になります。
		32bitのRIMMモジュールの場合、4.2GB/sec程度の転送速度になります。
		64bitのRIMMモジュールの場合、8.5GB/sec程度の転送速度になります。

	・PC1200
		RambusRAMBUS Channel 600Mhzで駆動するRDRAMでデータ出力速度1200Mhzを
		示します。約0.83nsで動作している計算になります。
		16bitのRIMMモジュールの場合、2.4GB/sec程度の転送速度になります。
		32bitのRIMMモジュールの場合、4.8GB/sec程度の転送速度になります。
		64bitのRIMMモジュールの場合、9.6GB/sec程度の転送速度になります。


	・PC1600
		システムボード・マザーボードのベースクロックの200Mhzに同期して動作
		し、クロックの両エッジでデータを入出力するDDR-SDRAMの1秒間あたりの
		データ出力速度、1.6GB/secを示しています。
		現在注目されているDDR-SDRAMでの速度表記です。
		DDR200の同義語です。
		
		Rambus RDRAM 1600Mhzタイプとは異なります。
		RambusRAMBUS Channel 800Mhzで駆動するRDRAMでデータ出力速度1600Mhzを
		示します。約0.62nsで動作している計算になります。
		16bitのRIMMモジュールの場合、3.1GB/sec程度の転送速度になります。
		32bitのRIMMモジュールの場合、6.25GB/sec程度の転送速度になります。
		64bitのRIMMモジュールの場合、12.5GB/sec程度の転送速度になります。
		
		

	・PC2100
		システムボード・マザーボードのベースクロックの266Mhzに同期して動作
		し、クロックの両エッジでデータを入出力するDDR-SDRAMの1秒間あたりの
		データ出力速度、2.1GB/secを示しています。
		現在注目されているDDR-SDRAMでの速度表記です。
		DDR266の同義語です。

	・PC2700
		システムボード・マザーボードのベースクロックの333Mhzに同期して動作
		し、クロックの両エッジでデータを入出力するDDR-SDRAMの1秒間あたりの
		データ出力速度、2.7GB/secを示しています。
		現在注目されているDDR-SDRAMでの速度表記です。
		DDR333の同義語です。

	・PC3200
		システムボード・マザーボードのベースクロックの200Mhzに同期して動作
		し、クロックの両エッジでデータを入出力するDDR2-SDRAMの1秒間あたりの
		データ出力速度、3.2GB/secを示しています。
		現在注目されているDDR2-SDRAMでの速度表記です。
		DDR400の同義語です。

	・PC4200
		システムボード・マザーボードのベースクロックの266Mhzに同期して動作
		し、クロックの両エッジでデータを入出力するDDR-SDRAMの1秒間あたりの
		データ出力速度、4.2GB/secを示しています。
		現在注目されているDDR2-SDRAMでの速度表記です。
		DDR533の同義語です。

	・PC5300
		システムボード・マザーボードのベースクロックの333.7Mhzに同期して動作
		し、クロックの両エッジでデータを入出力するDDR2-SDRAMの1秒間あたりの
		データ出力速度、5.3GB/secを示しています。
		現在注目されているDDR2-SDRAMでの速度表記です。
		DDR667の同義語です。


	・RAMBUS(PC600)
		Rambus Channel 300Mhzで駆動するRDRAMでデータ出力速度600Mhzを
		示します。約1.67nsで動作している計算になります。しかし、この動作クロック帯
		が出てきたころはCPUが800Mhzオーバーがやってきました。1.25ns程度で
		1サイクルが終了することになります。
		メインメモリに直接アクセスしたとすると、CPUが命令1.336個処理できる時間を
		待たされることになります。

	・RAMBUS(PC700)
		Rambus Channel 350Mhzで駆動するRDRAMでデータ出力速度700Mhzを
		示しているのか?(苦笑 Rambus社の資料で見ると、600/800の間は711
		になっていて、711についてはなんだかあんまり説明されていない感じもする。

	・RAMBUS(PC800)
		RambusRAMBUS Channel 400Mhzで駆動するRDRAMでデータ出力速度800Mhzを
		示します。約1.25nsで動作している計算になります。しかし、この動作クロック帯
		が標準的になるころはCPUが1000Mhzオーバーがやってきます。1ns程度で
		1サイクルが終了することになります。
		メインメモリに直接アクセスしたとすると、CPUが命令1.25個処理できる時間を
		待たされることになります。
		1秒間当たり、1.6GB程度の転送速度になります。


	・Latency
		レイテンシーとは遅延時間のことで、ここでは メモリにアクセス制御を行った際、
		メモリが反応してデータ入出力を行えるまでの遅延時間・CPUが待たされる時間
		を言う。単位はクロック。L2は2クロックの遅延があることを示す。
		メモリベンダによってはCL:CAS Latensyと表記してあることもあるが同意。
		CASとはメモリチップの制御信号の一種である。

	・Band Width:バンド幅・転送速度
		速度表現は、メモリ自体の動作速度とは別に、実際にCPU-Memory間での
		データ転送速度で表現されることがあります。
		たとえば、「PC100 SDRAM DIMM」だと、100Mhz x 64bit bus /8bit=800MB/sec
		というのが「論理転送速度:理論上算出できる転送速度」になります。
		しかし実際にはいくらかのLatencyが入るので、実際の数値(実効値)は若干下がります。
		ちなみに、「RAMBUS800 RDRAM RIMM」だと、800Mhz x 16bit bus /8bit =1600MB/sec
		になります。


 メモリには、イロイロな付加機能があり、その付加機能に対応しているシステムボードでないと
正常にその機能を使えない(というかメモリとしても動作しないこともある)。


	・Parity
		データの整合性をチェックするための機構です。データbitにもう1bitのParity Bitを
		付け加えてあり、データ中の1の数を数えて奇数個ならParity Bitに1を設定し、
		1の個数を偶数にそろえます。もしデータ中の1の数が偶数個なら、Prity Bitを
		0に設定し、偶数にそろえます。これを偶数パリティといいます。逆に奇数個に
		そろえる場合を奇数パリティといいます。そういうチェック機構が付加されている
		メモリモジュールが「パリティ付き」と表記されます。システムボード側のメモリ
		コントローラがPartyに対応していないと機能しません。エラーが検出されると
		割り込みが発生し、なんらかの形で異常があったことが分かります。
		異常が発生したことが分かるのみです。

	・ECC Error Correction Code
		Parityを発展させた機構で、複数ビットのParity情報が
		付加されています。ECCはエラー検出のほか、1bitのエラーは修正できます。
		エラーを検出したメモリECCコントローラは、エラービットを修正後の情報をCPUへ
		渡すことが出来ます。2bit以上のエラーには対応できません。ECC機能付き
		メモリモジュールは普通のメモリモジュールよりも高価です。


 ここからは、メモリの使用のされ方による機能になります。メモリそのものの機能ではない。


	・Memory Interleaving
		メモリをインターリーブ制御するメモリコントローラを実装していると、利用可能な
		メモリアクセスを高速化する技術である。たとえば、あるアドレスのメモリへアクセス
		を実行すると、まずはアドレスから該当するメモリチップを選択する信号が生成され、
		選択信号を入力されたメモリチップはアクティブになり、読み書き可能な状態になる。
		そして読み出し(Read Cycle)もしくは書き込み(Write Cycle)の信号を受けて該当の
		処理をする。ここまでの間には、多少なり時間が消費されています。これを連続して
		同じチップをアクセスしないようにし、たとえば奇数・偶数アドレスでメモリモジュール
		を分けたバンク構成にし、奇数アドレスのメモリチップに選択信号を送り、Read/Writeを
		実行している間に平行して偶数アドレスのメモリチップに選択信号を送ります。
		そうすると、CPUが次のメモリアクセスを要求したときに既にアクティブになっているので
		チップ選択の遅延が軽減されます。

	・ECC Memory Scrubbing
		メモリスクラビング機能とはECC機能をより改善したものになります。
		通常のECC制御だとCPUにはエラー訂正後の情報が提供できますが、メモリの
		内容はエラーを起こしたままの内容が記録されています。これを、スクラビング機能
		対応のメモリコントローラは、修正後の情報をメモリに書き戻します。これにより、
		ECCにより発見された1bit errorはその都度修正された正しい情報に訂正され、
		同一メモリで2bit errorが発生する可能性を低減させることが出来ます。

	・Cache
		キャッシュメモリ。現在主流のCPUではL1/L2キャッシュはCPUチップに内蔵
		されており、あまり外部メモリとして見えないですが、昔はL2キャッシュを外部の
		専用ソケットに増設していました。Cacheメモリは通常のメモリよりも高速な
		SRAMで構成されており、高価なものになります。高価な分、容量は小さく
		256KB程度になります。CPUチップに内蔵されているCacheはCPUと等価な
		速度で動作できる高速小容量メモリです。CPU比べて動作の遅いメインメモリの
		内容を事前に蓄え、メモリアクセスがCPUパフォーマンスの足かせにならない
		ように機能します。

	・Battery Backup Memory
		通常は小容量のSRAMで構成されており、電池などによって電源を供給し、
		コンピュータ本体の電源が切れていても内容を保持する方法を採用しているメモリ。
		コンピュータBIOSでの設定情報などを記録するのが主な利用のされかた。

	・NVRAM:Non Volatile RAM
		不揮発性メモリ。小容量で、恐らくFlash Memoryの変形。電池が不要で、
		電源が切れていても内容を保持している。主に周辺機器に内蔵されて、
		その設定情報などを記録するのに利用されるようだ。

	・VRAM:Video RAM
		ビデオコントローラが使用する表示画面制御用のメモリ。多いほど高い解像度、
		色深度が利用できる。
		例) 640x480x256(8bit) color=307,200bytes
		   1024x768xFullColor(24bit) =2,359,296bytes

	・Texture Memory
		ビデオコントローラの3Dグラフィックスエンジンが利用するメモリで、
		いわゆるポリゴン系処理用である(ほんとか?

 さて、これだけ読んでしまったあなたはスバラシイ。しかしながら、ここに記載されている情報はいくらか
違っていることもあることでしょう。一応、参考にさせてもらった情報があるものを紹介させていただきます。

Kingston Technology社のホームページとカタログ
	メモリマニアになりたいならこれは押さえるべき(笑 メモリ技術に関する解説がことこまかに
	されていて、勉強になります。
(株)ハギワラ シスコム社のカタログ
	SDRAMとRDRAMのパフォーマンス比較表が載ってたので。
米RAMBUS社のホームページ
	RDRAM/RIMMの仕様書
 


Go back.

If you have any question, please contact to me.
e-Mail to SHIMSOFT.