メモリー・・・いろんなのが増えましたねぇ。主流なタイプが一種類に 絞られて進んでいけば良いものを、トレンドは数種類のメモリが市場に 共存してしまうという、うっかりするとぜんぜん自分のマシンにマッチして いないメモリーモジュールを掴まされてしまいそうなこの頃である。 ここらでちょいと まとめといてみようぢゃないすか(^-^)♪ ソフトウェア上でのメモリ 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個処理できる時間を
待たされることになります。昔のFPM、EDOメモリでは
この速度表記が使用されていました。
・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の仕様書