(57)【特許請求の範囲】
【請求項１】
シフトレジスタ中の複数のバイトレーンへのデータを受取り、
目的地アドレスに対するアドレスオフセット値を決定し、
前記アドレスオフセット値に応答して、受信メモリ装置に書込まれる前記シフトレジスタ中のデータ素子のサブブロックにウインドウを移動し、前記ウインドウは前記受信メモリ装置中のバイトレーンに対応するバイトレーンを有しており、
前記サブブロック中のデータ素子の並びを変えずに、各データ素子が正確なバイトレーンにあるように、前記サブブロック中の各データ素子を前記受信メモリ装置に書込み、
前記ウインドウを移動することは、前記データの受取りと前記メモリ装置への書込みとに応じてウインドウを移動することを含む、方法。
【請求項２】
前記データの受取りは、データ素子を含んでいるデータのブロックの受取りを含んでいる請求項１記載の方法。
【請求項３】
前記データの受取りは、データの多バイトブロックを検索するためのメモリのバーストアクセスを含んでいる請求項２記載の方法。
【請求項４】
データのブロックは前記受信メモリ装置への書込みのために有効ではないデータ素子を含んでいる請求項３記載の方法。
【請求項５】
前記データの受取りは、供給メモリ装置から複数のデータ素子の受取りを含んでおり、
前記供給メモリ装置は第１のバス幅を有し、シフトレジスタは第２のバス幅を有している請求項１記載の方法。
【請求項６】
第２のバス幅は第１のバス幅よりも大きい請求項５記載の方法。
【請求項７】
前記ウインドウを移動することは、前記受信メモリ装置に書込まれるデータの前記サブブロック中の第１の有効なデータ素子に対応するデータ素子の位置にポインタ値を変更することを含んでいる請求項１記載の方法。
【請求項８】
前記変更はシフトレジスタ中のデータ位置の数によるポインタ値の変更を含み、前記数は受信されたデータの大きさに対応している請求項７記載の方法。
【請求項９】
前記変更は、受信されたデータのバイトの大きさに対応しているバイト位置の数によるポインタ値のインクリメントを含んでいる請求項７記載の方法。
【請求項１０】
前記変更は、書込まれたデータのバイトの大きさに対応するバイト位置の数によるポインタ値のデクリメントを含んでいる請求項９記載の方法。
【請求項１１】
前記ウインドウを指し示すことは、さらに、前記ポインタ値に応答するシフトレジスタの状態を指示することを含んでいる請求項７記載の方法。
【請求項１２】
前記状態は空の状態である請求項１１記載の方法。
【請求項１３】
前記状態は一杯の状態である請求項１１記載の方法。
【請求項１４】
第１のメモリ装置に対するアクセスを制御してそのアクセスにおいて検索されたデータ素子に対して目的地アドレスを割当てるように動作するメモリ制御装置と、
アクセスにおいて検索された複数のデータ素子を受信するように動作する供給メモリ装置と、
複数のバイトレーンを有し、供給メモリ装置からローカルメモリに書込まれる複数のデータ素子を受信するように動作する受信メモリ装置と、
データフォーマット装置とを具備し、そのデータフォーマット装置は、
供給メモリ装置から前記データ素子を受信し、前記受信メモリ装置へ前記データ素子を書込むように動作するシフトレジスタと、
目的地アドレスに対するアドレスオフセット値を決定し、前記アドレスオフセット値に応答して、前記シフトレジスタ中のデータ素子のサブブロックにウインドウを移動するように動作するポインタ管理装置であって、前記ウインドウは前記受信メモリ装置中のバイトレーンに対応するバイトレーンを有しており、前記サブブロック中のデータ素子の並びを変えずに、前記サブブロック中の各データ素子が前記受信メモリ装置の正確なバイトレーンに書込まれるポインタ管理装置とを具備しており、
前記ウインドウを移動することは、前記シフトレジスタ中の前記データ素子の受信と前記受信メモリ装置への書込みとに応じてウインドウを移動することを含む、装置。
【請求項１５】
前記メモリ制御装置は、マルチバイトのデータブロックを検索するバーストアクセスを制御するように動作するバーストアクセスメモリを備えている請求項１４記載の装置。
【請求項１６】
前記供給メモリ装置は、ランダムアクセスメモリ（ＲＡＭ）を含んでいる請求項１４記載の装置。
【請求項１７】
前記受信メモリ装置は、先入れ先出（ＦＩＦＯ）メモリを含んでいる請求項１４記載の装置。
【請求項１８】
供給メモリ装置は第１のバス幅を有し、シフトレジスタは第２のバス幅を有し、
第２のバス幅は第１のバス幅よりも大きい請求項１４記載の装置。
【請求項１９】
第２のバス幅は第１のバス幅の４倍の大きさである請求項１８記載の装置。
【請求項２０】
前記ポインタ管理装置は、前記受信メモリ装置に書込まれるデータのサブブロック中の第１の有効なデータ素子の位置に対応しているシフトレジスタ中のデータ素子の位置にポインタ値を変更するように構成されている請求項１４記載の装置。
【請求項２１】
前記ポインタ管理装置は、ポインタ値に応答してシフトレジスタの状態を示す信号を生成するように構成されている請求項２０記載の装置。
【請求項２２】
前記状態は空の状態である請求項２１記載の装置。
【請求項２３】
前記状態は一杯の状態である請求項２１記載の装置。
【請求項２４】
マシン実行可能な命令を含んでいるマシン読取り可能な媒体を有する装置において、前記命令は、
シフトレジスタ中の複数のバイトレーンに第１のメモリ装置からデータを受信し、
目的地アドレスに対するアドレスオフセット値を決定し、
前記アドレスオフセット値に応答して、第２のメモリ装置に書込まれる前記シフトレジスタ中のデータ素子のサブブロックにウインドウを移動し、前記ウインドウは前記第２のメモリ装置中のバイトレーンに対応するバイトレーンを有しており、
前記サブブロック中のデータ素子の並びを変えずに、各データ素子が正確なバイトレーンにあるように、前記サブブロック中の各データ素子を前記第２のメモリ装置に書込むようにマシンを制御する動作を行わせ、
前記ウインドウを移動することは、前記データの受信と前記第２のメモリ装置への書込みとに応じてウインドウを移動することを含む、装置。
【請求項２５】
データをマシンに受信させるように動作させる命令は、マシンにデータ素子を含んでいるデータのブロックを受信させるように動作させる命令を含んでいる請求項２４記載の装置。
【請求項２６】
さらに、前記第２のメモリ装置に書込まれるデータのサブブロック中の第１の有効なデータ素子に対応するデータ素子の位置にポインタ値をマシンが変更するように動作させる命令を含んでいる請求項２４記載の装置。
【請求項２７】
さらに、ポインタ値に応答してシフトレジスタの状態をマシンが指示する命令を含んでいる請求項２６記載の装置。
【請求項２８】
前記状態は空の状態である請求項２７記載の装置。
【請求項２９】
前記状態は一杯の状態である請求項２７記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、目的地アドレスに基づいたデータシフタを使用するデータフォーマット装置に関する。
【背景技術】
【０００２】
コンピュータシステムにおいては、中央処理装置（ＣＰＵ）はアドレスを与えることによりメモリにアクセスし、そのアドレスはデータ素子を集合的に記憶しているメモリセルのグループの特有の位置を示している。最初にメモリにアクセスするときには多くの動作が行われる可能性がある。これらの動作は最初のアクセスでは比較的遅くてもよい。その後データ自身が転送される。例えばある制御信号は処理を開始するために発生される。次にアドレスがメモリに送られる。この動作のオーバーヘッドまたは潜在性のために、メモリへの最初のアクセスは比較的長い時間を取ることができ、例えば多くの装置では４乃至７クロックサイクルを要している。
【０００３】
メモリの待ち時間を減少させるために、ある種のメモリ装置は各アクセスに対して連続的にメモリから４つの６４ビットワード（２５６ビットまたは３２バイト）を含むデータのブロックを読取っている。この“バーストアクセスモード”または“バースティング”の利点は、連続する３つのアクセスに対して最初のアクセスのオーバーヘッドの反復を避けていることである。後続するアクセスは４乃至７クロックサイクルの代わりに１乃至３クロックサイクルに短縮されることができる。
【０００４】
バースティングをサポートするメモリ装置はバイトアドレス可能ではない。特定のバイトアドレスでメモリ位置をアクセスする代わりに、メモリ装置はデータ素子の多バイトブロックを検索する。データブロック内のデータ素子の幾つかはリクエストに対して有効ではない可能性がある。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
データフォーマット装置はランダムアクセスメモリ（ＲＡＭ）のようなソースからデータの多ブロックを取出し、その多ブロックを多数の小さいブロックに分解するために使用される。小さくされた各ブロックはその後適当なローカルメモリアドレスへ送られることができる。制御プログラムは小さい各ブロックの大きさとそれらの目的地アドレスとを決定する。小さい各ブロックは大きなブロック内のバイト境界まで分解されることができる。目的地アドレスはまた任意のバイト境界に位置されることができる。これはデータフォーマット装置の応答特性を複雑にする。供給ＲＡＭから来るときのデータ素子がどのバイトレーンかには関係なく、データフォーマット装置は新しいアドレスに書込まれるために正確なバイトレーンにこれらのバイトがあることを確実にしなければなにない。
【課題を解決するための手段】
【０００６】
本発明のデータフォーマット装置はシフトレジスタおよびポインタ管理装置を含んでいる。供給ランダムアクセスメモリ（ＲＡＭ）は、ローカルメモリアドレスに書込まれる、メモリに対するバーストアクセス動作で検索された多バイトのデータブロックからのデータを記憶する。シフトレジスタは供給ＲＡＭからデータを受取り、そのＲＡＭからのデータの読取りに応答して、および、データの受信先入れ先出し（ＦＩＦＯ）メモリへの書込みに応答して、そのデータをシフトする。ポインタ管理装置は、データがシフトレジスタ中へシフトされ、シフトレジスタからシフトされて取出されるように、データのサブブロック中の第１の有効なバイトを指示するポインタを動かすことにより、ＦＩＦＯの正確なバイトレーンへそのポインタを維持する。
【０００７】
ポインタ管理装置はポインタ値に基づいたインジケータを生成し、それはシフトレジスタが一杯（またはほぼ一杯）であるか空（またはほとんど空）であるかを制御プログラムに通知する。
【発明を実施するための最良の形態】
【０００８】
図１は、本発明の１実施形態によるデータフォーマット装置102 を含むメモリアクセスシステム100 を示している。メモリ制御装置104 は”バーストアクセス”モードでメモリ装置106 からデータを読取ることができ、それにおいてデータの多バイトブロックがメモリから検索され、ローカルメモリアドレスに送られる前に一次的にランダムアクセスメモリ（ＲＡＭ）のような別のメモリ装置中にロードされる。データブロック中のデータ素子はリクエストに対して有効でなくてもよい。また有効なデータブロックおよびそれらの目的地アドレスはバーストアクセスされた多バイトブロック中の任意のバイト境界に位置されることができる。
【０００９】
データフォーマット装置102 は供給ＲＡＭ108 からデータブロックを取出し、そのデータを１以上のローカルメモリアドレスに送ってもよい。データフォーマット装置102 は供給ＲＡＭ108 から読取った大きい多バイトデータブロックをその大きいブロック内の適当なバイト境界において多数のもっと小さいブロックに分割することができる。小さい各ブロックはローカルメモリ115 中の目的地アドレスに送られることができる。メモリ制御装置104 は小さい各ブロックの大きさおよびそれらの目的地アドレスを決定する。
【００１０】
データフォーマット装置102 は、供給ＲＡＭ108 からの現在の大きいブロックからどれだけの数のバイトが各目的地アドレスに対して書込まれたかの追跡を維持するためにカウンタ110 を含んでいてもよい。データフォーマット装置102 は供給ＲＡＭ108 から受信されたときにどのバイトレーンのデータ素子であるかには無関係に、新しいアドレスに書込むために正確なバイトレーンにデータをシフトする。例えば、４バイトのブロックでは、最初の２バイトはアドレス2 に書込まれる必要がある。第３のバイトはアドレス10に書込まれる必要がある可能性があり、第４のバイトはアドレス7 に書込まれる必要がある可能性がある。メモリバスが図２に示されているように４バイト幅であるならば、最初の２バイトはレーン2 および3 でそれぞれ必要になり、一方、第３のバイトはバイトレーン3 中にある必要があり、第４のバイトはバイトレーン4 中にある必要がある。
【００１１】
データフォーマット装置102 は正確なバイトレーンにデータをシフトするシフトレジスタ112 を含んでいる。データフォーマット装置は任意の所定の瞬間に正確なバイトレーンを追跡し、決定するために別のカウンタのセット111 を使用してもよい。これらの値と、あるパラメータと、およびその現在の状態に基づいて、データフォーマット装置102 は、データ素子が受信ＦＩＦＯ（先入れ先出）レジスタまたはＲＡＭ116 に書込まれることが許容される前に、データを適当な位置、すなわち正しいバイトレーンにシフトする。
【００１２】
データ素子はＲＡＭ108 が読取られるときＲＡＭのデータバス114 からシフトレジスタ中に書込まれる。メモリ制御装置104 からのＲＡＭ読取りストローブ信号は、読取りが発生したことをシフトレジスタに通知する。読取りが発生したとき、全体の供給ＲＡＭ108 のデータバスのデータはシフトレジスタ112 の最下位の部分にコピーされ、シフトレジスタの下位の部分からのデータはシフトレジスタの上位の部分へシフトされる。シフトレジスタ112 の最上位の部分のデータは失われることができる。
【００１３】
シフトレジスタ112 の幅は供給ＲＡＭの速度およびワード幅と受信ＦＩＦＯの速度およびワード幅との不整合に依存している。小さい不整合に対しては、供給ＲＡＭのデータバスの幅の４倍のシフトレジスタの幅で充分である。
【００１４】
ポインタ管理装置120 は図２に示されるようにシフトレジスタ112 中のバイトのウインドウ200 を制御する。ウインドウ200 はポインタを含み、そのポインタは、次に受信ＦＩＦＯ116 に書込まれるワードの最下位バイト202 を指すポインタと次に受信ＦＩＦＯ116 に書込まれるワードの最上位バイト204 を指すポインタ（ｓｒ ポインタ）とを含んでいる。ｓｒ ポインタは受信ＦＩＦＯ116 に書込まれる最初のバイトが正確なバイトレーンにあることを確実にするためにメモリ制御装置104 により与えられたアドレスオフセットを考慮に入れる。
【００１５】
ポインタ管理装置120 は、供給ＲＡＭ108 、受信ＦＩＦＯ116 、メモリ制御装置104 の動作を監視し、ポインタを管理するために外部メモリアドレスおよび関連するバイトをエネーブルする。例えば、ポインタは供給ＲＡＭ108 から読取られたデータの量により上位へシフトされる。データ素子が受信ＦＩＦＯ116 に書込まれるとき、ポインタは書かれたバイトの数だけデクリメントされる。しかしながら、データがＲＡＭ108 から読込まれており、同時に受信ＦＩＦＯ116 に書込まれているならば、ポインタの値はどれだけの数の有効なバイトが受信ＦＩＦＯ116 に書込まれるかに依存している。この場合に、ポインタ値は受信ＦＩＦＯ116 に書込まれている有効なバイトの数により減少され、供給ＲＡＭ108 から読取られているバイトの数により増加される。実際の値は次式で決定され、
ｒａｍｌ ｄｂ 幅−バイト エネーブル
ここで、“ｒａｍｌ ｄｂ 幅”はバイトで表わした供給ＲＡＭのデータバス114の幅を表し、“バイト エネーブル”は受信ＦＩＦＯ116 に書込まれるバイトの数を表している。
【００１６】
バイト エネーブルはメモリ制御装置104 により設定されることができ、所定の外部メモリアドレスに対する受信ＦＩＦＯ116 への書込みの都度使用される。受信ＦＩＦＯ116 に対する全ての書込動作は、所定の外部メモリアドレスに対する可能性のある最初と最後の書みを除いてｒａｍ２ ｄｂ 幅（すなわちバイトによる受信ＦＩＦＯのデータバス117 の幅）である充分に有効なワードを含んでいることが期待される。新しいアドレスに対して書込まれた目的地のＲＡＭ108 から最初に読取られた場合に、もしもバイト エネーブルがｒａｍ２ ｄｂ 幅と同じ値に設定されない場合には、フルワードより少ないデータが受信ＦＩＦＯ116 に書込まれる。 この場合に、受信ＦＩＦＯに任意の最後の書込の場合に、バイト エネーブルがポインタを調整して、それによりシフトレジスタ112 中に残されたデータ量を表す。
【００１７】
図３は１実施例によるポインタ管理動作300 を示すフローチャートである。以下は動作300 を記述するＶerilog言語を示している。
【００１８】
常に（p0sedge クロックまたはp0sedge リセット）
開始
もしも（リセット）ならば、
ポインタ［４：０］<=５' ｈ１Ｆ；
それでなく、もしも（ポインタ リセット）ならば、
ポインタ［４：０］<=５' ｈ１Ｆ；
それでなく、もしも（読取り ストローブおよび書込み ストローブ）ならば、
ポインタ［４：０］<=  ポインタ［４：０］＋（ram1 db 幅−
バイト エネーブル［ram2  db  幅；0］）；
それでなく、もしも（読取り ストローブおよび！書込み ストローブ）ならば、
ポインタ［４：０］<=  ポインタ［４：０］＋´ram1 db 幅；
それでなく、もしも（書込み ストローブ）ならば、
ポインタ［４：０］<=  ポインタ［４：０］−バイト エネーブル［ram2 db 幅；0］；
それでなければ、
ポインタ［４：０］<=  ポインタ［４：０］；
終了
割当てｓｒ ポインタ［４：０］
＝ポインタ［４：０］＋アドレス オフセット［´r2 log2−1:0 ］；  
ポインタ管理装置動作300 はクロック信号において実行する（ブロック302 ）。外部メモリに対する新しいスタートアドレスが導入されるとき、ポインタ管理装置120 は、受信されたバイトがデフォルト位置から異なったレーンへシフトされる必要がある場合には、ポインタオフセット値を新しい値に変更する。この新しいスタートアドレスは信号“アドレス オフセット”として保存され、ｓｒ ポインタは次の式で示された値を割当てられる。
【００１９】
ｓｒ ポインタ＝ポインタ［４：０］＋アドレス オフセット［´r2 log2−1:0 ］
ここで、r2 log2はram2 db 幅パラメータのベース２の対数である。すなわちバイトで表した受信ＦＩＦＯのデータバスの幅である。
【００２０】
ポインタ管理装置120 は、メモリ制御装置104 によって規定されたようにデータのブロックが終了して別のデータのブロックが開始されるとき、シフトレジスタ114 が空になったことを示す値にポインタをリセットする（ブロック305 ）。この例では、空の値は１６進の値１Ｆである。ポインタはまた、ポインタリセット信号がメモリ制御装置104 により発生されたとき空の値にリセットされてもよい（ブロック306 ）。
【００２１】
メモリ制御装置104 は、ポインタ管理装置120 に書込みストローブ信号を送ることによって受信ＦＩＦＯ116 にデータが書込まれるときを示す。メモリ制御装置104 はポインタ管理装置120 に読取りストローブ信号を送ることによって供給ＲＡＭ108 からデータが読取られたときを示す。
【００２２】
読取りストローブ信号と書込みストローブ信号とが同じクロックサイクル中に受信された場合には（ブロック308 ）、ポインタ管理装置120 はポインタ値をポインタの現在の値  プラス  バイトで表した供給ＲＡＭのデータバス114の幅  マイナス  バイト エネーブル値に等しい値に変化させる（ブロック310 ）。バイト エネーブル値は可能性のある最初または最後の書込みを除いた全ての書込みに対して、バイトで表した受信ＦＩＦＯデータバス117 の幅である。
【００２３】
読取りストローブ信号が受信されたがクロックサイクル中に書込みストローブ信号がない場合（ブロック312 ）には、ポインタ管理装置120 は、現在の値  マイナス  バイトエネーブル値に等しい値にポインタ値を変更する（ブロック314 ）。
【００２４】
ポインタ管理装置120 が最後の２つの条件のいずれもが真ではなく、書込みストローブ信号が受信されたことを決定した場合には、ポインタ管理装置120 はポインタの値を現在の値プラスバイトで表した供給ＲＡＭのデータバス114 の幅に等しく変更する（ブロック318 ）。
【００２５】
ポインタ管理装置120 が前の条件がいずれも真ではないと決定した場合には（ブロック320 ）、ポインタ管理装置120 はポインタの値を変更しない（ブロック322 ）。
【００２６】
ポインタ管理動作300 の以下のような例について検討する。：
ram1 db 幅＝８（バイト）
ram2 db 幅＝４（バイト）
シフトレジスタ中のバイト数＝３２
アドレス オフセット＝３
この例において１５バイトが外部メモリアドレスの３に書込まれる。これは供給ＲＡＭから２回の８バイトの読取りおよび受信ＦＩＦＯへの５つの４バイトの書込みを必要とする（アドレスオフセットのために４ではない）。
【００２７】
ポインタは図４に示されるように、シフトレジスタが空であることを示す値５'ｈ１Ｆにより開始される。アドレスオフセットは、メモリ制御装置104 が次に来るデータに対する新しい外部メモリアドレスを割当てるときに３に設定される。
【００２８】
次に、読取りストローブ信号が発生して、８個のデータバイトがシフトレジスタ112 中に位置されていることをポインタ管理装置120 に指示する。ポインタ管理装置120 は８をポインタの値に加えてポインタ値を５' ｈ１Ｆ＋４' ｈ８＝５' ｈ０７に変化させる。この値は５' ｈ１Ｆから５' ｈ００にワープする。それはシフトレジスタ112 が５' ｈ１Ｆにおいてその最上位の可能な値にあるからである。受信ＦＩＦＯへ書込まれる第１のバイトはシフトレジスタ112 のバイトＡ，９，８，７に位置する。その理由は図５に示されるようにｓｒ ポインタは５' ｈ０７＋２' ｈ３＝５' ｈ０Ａに等しいからである。バイト７から０まではシフトレジスタ中の有効バイトである。したがってシフトレジスタのバイト７はＲＡＭ108 から読取られた第１の有効バイトである。バイト７は受信ＦＩＦＯ110 のためにバイトレーン０にシフトされる。このシフトはアドレス オフセットのために生じたものである。この同じシフト量は、メモリ制御装置104 が新しい外部メモリアドレスを発生するまで受信ＦＩＦＯ116 に書込まれた全てのデータに対して影響する。
【００２９】
次のクロック後、書込みストローブ信号だけが発生し、読取りストローブ信号は存在しないと仮定する。バイト エネーブルは４であるがこれは第１の書込みの場合にはダミー値である。これはポインタが全ての可能なオフセットを有して適切な位置に進ことを可能にする。ポインタ管理装置120 は図６に示されているようにポインタの値を５' ｈ０７−３' ｈ４＝５' ｈ０３に変化する。受信ＦＩＦＯへ書込まれる次のバイトはシフトレジスタのバイト６，５，４，３に位置するものである。その理由はｓｒ ポインタは５' ｈ０３＋２' ｈ３＝５' ｈ０６に等しいからである。
【００３０】
次のクロックの後、読取りストローブ信号と書込みストローブ信号が同時に発生するものと仮定する。バイト７から０までにあるデータはバイト１５から８へ移動し、新しいデータを読取って入力させる余裕を形成する。バイト１５から８にあるデータはバイト２３から１６へ移動し、以下同様である。バイト エネーブルは４である。ポインタ管理装置120 は２つのファクタ：読取りおよび書込みに基づいてポインタの値を変化させる。ポインタの値は図５に示されているように５' ｈ０３＋４' ｈ８−３' ｈ４＝５' ｈ０７に変化される。受信ＦＩＦＯへ書込まれる次のバイトはシフトレジスタのバイトＡ，９，８，７に位置するものである。その理由はｓｒ ポインタは５' ｈ０７＋２' ｈ３＝５' ｈ０Ａに等しいからである。
【００３１】
次のクロックにおいて、書込みストローブ信号だけが発生し、読取りストローブ信号は存在しないものと仮定する。バイト エネーブルは４である。ポインタ管理装置120 は図６に示されているようにポインタの値を５' ｈ０７−３' ｈ４＝５' ｈ０３に変化する。受信ＦＩＦＯへ書込まれる次のバイトはシフトレジスタのバイトで６，５，４，３に対する値である。その理由はｓｒ ポインタは５' ｈ０３＋２' ｈ３＝５' ｈ０６に等しいからである。
【００３２】
次のクロックにおいて、再び書込みストローブ信号だけが発生し、読取りストローブ信号は存在しない。バイト エネーブルは値４を有している。ポインタは図７に示されているようにｃの値を５' ｈ０３−３' ｈ４＝５' ｈ１Ｆに変化する。受信ＦＩＦＯへ書込まれる次のバイトはシフトレジスタのバイトで２，１，０，および１Ｆに対する値である。その理由はｓｒ ポインタは５' ｈ１Ｆ＋２' ｈ３＝５' ｈ０２に等しいからである。
【００３３】
最後のクロックにおいて、再び書込みストローブ信号だけが発生し、読取りストローブ信号は存在しないと仮定する。バイト エネーブルは値２を有する。ポインタはその値を５' ｈ０２−３' ｈ２＝５' ｈ００に変化する。受信ＦＩＦＯへ書込まれるバイトは存在しない。
【００３４】
削除
【００３５】
削除
【００３６】
この状態でポインタは値５' ｈ００を有していることに注目すべきである。５' ｈ１Ｆの値はシフトレジスタが空であることを示しているが、これはその場合ではない。その代わりにこの値は、シフトレジスタ中に有効なデータである可能性のあるさらに１つのバイトが存在することを示している。このバイトは異なった外部メモリアドレスに書込まれても書込まれてなくてもよい。これはメモリ制御装置104 がバイトにより度のようにすることを望んでいるかに依存している。データのこのバイトが全く有効ではない場合には、新しい外部メモリアドレスが発生される前にポインタ リセット信号がメモリ制御装置104 によって主張される。受信ＦＩＦＯ116 へ書込まれるものはない。その理由は、バイト エネーブルは所定のアドレスに対して指定されたデータのブロックの最後の書込みのためのram2 db 幅よりも小さくすることができるからである。この例に対してこれは読取りおよび書込みが完了した場合である。
【００３７】
シフトレジスタ112 の別の機能は供給ＲＡＭから読取らない、或いは受信ＦＩＦＯ116 へデータを書込もうとしないメモリ制御装置を注意することである。これらはシフトレジスタ112 が正常な動作をすることを許される状態になるまで、これらの機能を行うことからメモリ制御装置の機能を維持するために使用されることができる一時的な状態である。ポインタ値は、シフトレジスタ112 がほとんど一杯またはほとんど空であることを示し、例えばフラグを設定することによって一時的な注意を通知するために使用されることができる。例えば、シフトレジスタ112 がほとんど一杯であれば、それはこの状態をメモリ制御装置104 に示す。シフトレジスタ112 は、書込みストローブ信号が発生するまでこの状態にとどまり、それはシフトレジスタ112 から書込まれないデータを押し出すことなくデータを読取るための余裕を形成する。読取りを連続することを可能にする実際の事象の組合わせは構成に応じて異なっている。
【００３８】
シフトレジスタ112 がほとんど空であるとき、この状態は構成に応じてポインタが空である幾つかのバイト内であるときメモリ制御装置104 に通報される。シフトレジスタ112 は読取りストローブ信号が発生するまでこの状態にとどまってもよく、それは受信ＦＩＦＯ116 に書込まれるために利用されるデータが存在することを示している。前のように書込みを連続することを可能にする実際の事象の組合わせは構成に応じて異なっている。
【００３９】
多くの実施形態が記載されたが、それにもかかわらず、種々の変形が本発明の技術的範囲を逸脱することなく行われることができることを理解するであろう。例えばフローチャートに示されたブロックは飛び越され、或いは異なる順序で実行されても、依然として所望の結果を生成することができる。したがって、その他の実施形態は特許請求の範囲に記載された本発明の技術的範囲に含まれるものである。
【図面の簡単な説明】
【００４０】
【図１】本発明の１実施形態によるメモリアクセスシステムのブロック図。
【図２】書込まれるデータ素子の可動ウインドウ中のポインタを含むシフトレジスタのブロック図。
【図３】本発明の１実施形態によるポインタ管理装置動作を示すフロー図。
【図４】例示的なポインタ管理動作の異なったフェーズに対応する異なった位置のウインドウを含む図２のシフトレジスタのブロック図。
【図５】例示的なポインタ管理動作の異なったフェーズに対応する異なった位置のウインドウを含む図２のシフトレジスタのブロック図。
【図６】例示的なポインタ管理動作の異なったフェーズに対応する異なった位置のウインドウを含む図２のシフトレジスタのブロック図。
【図７】例示的なポインタ管理動作の異なったフェーズに対応する異なった位置のウインドウを含む図２のシフトレジスタのブロック図。
【図１】
0004571403.tif 000002
【図２】
0004571403.tif 000003
【図３】
0004571403.tif 000004
【図４】
0004571403.tif 000005
【図５】
0004571403.tif 000006
【図６】
0004571403.tif 000007
【図７】
0004571403.tif 000008