ZXSpectrumコンテンドメモリ


ZX_Spectrum_Contended_Memory

 「ZXSpectrum ContendedMemory」  
ZXSpectrumの64KBのアドレス可能なメモリ空間の一部は、競合メモリと呼ばれます。残りのメモリでは、Z80 マイクロプロセッサが専用バスマスターであるため、読み取りと書き込みはフルバス速度で動作しますが、競合するメモリスペースはULAとZ80の間で共有され、ULAの優先度が高くなります。競合するメモリは、Z80メモリマップのアドレス0x4000..0x7FFFを占有します。これは、48KBマシンの最初の16KB RAMであり、16KBマシンのRAM全体です。
競合は、ULAがこのRAM内のディスプレイと属性データを読み取ってTVビデオディスプレイを生成した結果として発生します。したがって、水平フライバック、垂直フライバック、または画面の境界線では競合は発生しません。
Z80がULAI / Oポートにアクセスしているときに、ULAが競合するメモリを読み取る必要がある場合も、I / Oへのアクセスが競合します。ULA I / Oポートは、アドレスが偶数のポートです(アドレスビット0は0です)。
Z80は、ULAが競合するメモリにアクセスする必要があるときはいつでも、独自の競合するメモリの読み取りまたは書き込みを続行する前に待機する必要がユーザーへの影響は、競合するメモリまたは競合するI / Oを使用するプログラムは、それを回避するプログラムよりも実行速度が遅くなることです。

コンテンツ
1 雪虫
2 回路
3 参考文献
4 外部リンク

雪虫
ULAは、Z80のクロックを停止してメモリにアクセスする前に、Z80の読み取りまたは書き込みが完了するのを待つ必要がそれだけで最初の中にZ80のクロックを停止しますクロックサイクルのマシンサイクル。
初期のスペクトラムでは、マシンサイクルで最大1つの競合メモリアクセスが発生すると想定しています。これは、プログラマが割り込みベクトルテーブルを競合領域内に収まるように構成した場合、命令フェッチサイクルでは当てはまりません。その場合、ULAはそのビデオアドレスのロードを拒否し、表示されるビデオバイトはプロセッサが読み取っていたものになります。この結果、ディスプレイにランダムなノイズ、つまり「雪」が発生します。
この効果は通常の操作では発生しなかったため(プログラマーの意図的な介入が必要でした)、ほとんど見られず、一部のゲームでのみ使用されました特別なグラフィック効果として。
すべての128kbバージョンを含むSpectrumのそれ以降のバージョンは、バグを修正します。

回路
ULAは、競合するメモリアクセス中にバスマスターになるためにZ80のバス要求/許可メカニズムを使用しません。代わりに、Z80クロック入力のハイ周期を延長して、すべてのマイクロプロセッサアクティビティを停止します。これはバス要求を実行するよりも洗練されていませんが、より少ないZ80クロックへの競合するメモリアクセスを取得します。これにより、ULAが事前に表示データを読み取る必要がなくなり、完全なULAの混雑した回路の利点が得られます。
ULAはメモリシステムICに直接接続し、Z80は絶縁直列電流制限抵抗を介してICに接続します。これにより、Z80がメモリを駆動している間に、ULAとメモリが相互に駆動できるようになります。トライステートバスドライバICの代わりに抵抗を使用すると、回路のコストが削減されますが、Z80、ULA、およびメモリICからより高い平均I / Oピン電流が必要になります。

参考文献
^ 「ZXSpectrumULA – SinclairFAQ –雪の効果」。faqwiki.zxnet.co.uk 。

外部リンク
Sinclair FAQWikiの競合メモリ
worldofspectrum.orgの競合メモリ
zxdesign.infoの競合メモリ