64KビットDRAMのひねくれた性格

メモリにはROMとRAMがあり、RAMにはDRAMとSRAMがある。現在、何の断りもなく「メモリ」といえばDRAMをさすようだが、素直なメモリはSRAMのほうだ。DRAMはかなりひねくれていて、書けば記憶するというようなメモリではない。たとえば、電源を入れてから500マイクロ秒は動作しない→待機時間をが必要、最初の8回のアクセスは無効→ダミーサイクルが必要、アドレスを下位と上位に分けて与えるようになっている→アドレスマルチプレクサが必要、書いたデータは2ミリ秒しか記憶しない→リフレッシュが必要、といった具合だ。このうち、待機時間とダミーサイクルは、まあ、何とかしよう。しかし、アドレスマルチプレクサとリフレッシュは、気合いや根性で何とかなるものではない。
アドレスマルチプレクサは、アドレスの下位を与えて#RAS端子をLとし、下位と上位を切り替え、上位を与えて#CAS端子をLにする。読み出しの場合はこれだけでいいが、書き込みの場合は#RAS端子をLにしたあと#CAS端子をLにする前に#WE端子をLにする。これらの操作は、それぞれ数10ナノ秒くらいの間隔をとり、順序よく行う必要がある。そして、数10ナノ秒くらいの時間は、遅延線かコンデンサと抵抗か、いずれにせよ心もとないアナログ的手法で作らなければならない。
リフレッシュは、アドレスの下位を与えて#RAS端子をLにする。これで、該当する4096ビットの記憶が復活し、もう2ミリ秒、記憶する。操作としては、そう難しくない。問題は、これを本物の読み書きの合間にやらなければならないことで、そのタイミングをどう見付けるか、あるいは、どう作るかが課題となる。ぼくは、CPUにザイログのZ80を使うことにした(写真、シャープの互換チップだがライセンス契約を結んでいるためZ80のマーキングがある)。
LH0080A
Z80は、現在のCPUがみなもっているパイプラインをもっておらず、命令を読み込んだあと解釈する期間、メモリを読み書きしないことがはっきりしているため、このタイミングで#RFSH端子をLとし、リフレッシュの指示をする。この仕組みを利用するとZ80にしかつながらないDRAMボードになるが、64KビットDRAMは、もっぱらZ80で使われた、ということで納得しよう。こうでもしないと、8個のDRAMを動かすために16個のTTLが必要になってしまう。
広告
カテゴリー: DRAM パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中