(57)【要約】データフォーマット装置100 はシフトレジスタ112 とポインタ管理装置120 とを備えている。シフトレジスタ112 は供給ＲＡＭ108 からデータを受信し、そのデータを供給ＲＡＭ108 からのデータの読取りおよび受信ＦＩＦＯバッファ116 へのデータの書込みに応答してシフトする。ポインタ管理装置120 は、データがシフトレジスタ112 にシフトされて出入りするようにポインタを移動させることによりＦＩＦＯの正しいバイトレーンにデータのサブブロック中の第１の有効なバイトに対して指向するポインタを維持する。【選択図】図１
2004537805.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータレーンにおいてデータを受取り、
目的地アドレスに対するアドレスオフセット値を決定し、
前記データを目的地アドレスに対応する１以上のデータレーンにシフトする方法。
【請求項２】
前記データレーンは、バイトレーンを含んでいる請求項１記載の方法。
【請求項３】
前記データの受取りは、データ素子のブロックの受取りを含んでいる請求項１記載の方法。
【請求項４】
前記データの受取りは、データの多バイトブロックを検索するためのメモリのバーストアクセスを含んでいる請求項３記載の方法。
【請求項５】
データのブロックはアクセスのために有効ではないデータ素子を含んでいる請求項４記載の方法。
【請求項６】
前記受取りは、複数のデータレーン中の第１のメモリ装置からシフトレジスタへの複数のデータ素子の受取りを含んでおり、
前記第１のメモリ装置は第１のバス幅を有し、シフトレジスタは第２のバス幅を有している請求項１記載の方法。
【請求項７】
第２のバス幅は第１のバス幅よりも大きい請求項６記載の方法。
【請求項８】
前記シフトはシフトレジスタ中のデータのシフトを含んでいる請求項１記載の方法。
【請求項９】
さらに、第２のメモリ装置に書込まれるデータのサブブロック中の第１の有効なデータ素子に対応するデータ素子位置にポインタ値を変更する請求項８記載の方法。
【請求項１０】
前記変更はシフトレジスタ中のデータ位置の数によるポインタ値の変更を含み、前記数は受信されたデータの大きさに対応している請求項９記載の方法。
【請求項１１】
前記変更は、受信されたデータのバイトの大きさに対応しているバイト位置の数によるポインタ値の構成を含んでいる請求項９記載の方法。
【請求項１２】
さらに、第２のメモリ装置にシフトされたデータを書込み、
前記変更は、シフトレジスタ中のデータ位置の数によるポインタ値の変更を含み、この数は受信されたデータの大きさに対応している使用する請求項９記載の方法。
【請求項１３】
前記変更は、書込まれたデータのバイトのサイズに対応するバイト位置の数によるポインタ値のデクリメントを含んでいる請求項１１記載の方法。
【請求項１４】
さらに、ポインタ値に応答してシフトレジスタの状態を指示する請求項９記載の方法。
【請求項１５】
前記状態は空の状態である請求項１４記載の方法。
【請求項１６】
前記状態は満杯の状態である請求項１４記載の方法。
【請求項１７】
第１のメモリ装置に対するアクセスを制御してそのアクセスにおいて検索されたデータ素子に対する目的地アドレスを割当てるように動作するメモリ制御装置と、
アクセスにおいて検索された複数のデータ素子を受信するように動作する供給メモリ装置と、
複数のデータレーンを有し、供給メモリ装置からローカルメモリに書込まれる複数のデータ素子を受信するように動作する受信メモリ装置と、
データフォーマット装置とを具備し、そのデータフォーマット装置は、
供給メモリ装置からデータ素子を受信し、供給メモリ装置からのデータの受信および受信メモリ装置へのデータの書込みに応答してデータ素子をシフトするように動作するシフトレジスタと、
目的地アドレスに対応する１以上のデータレーン中へ前記データ素子をシフトするために目的地アドレスに対するアドレスオフセット値を決定するように動作するポインタ管理装置とを具備している装置。
【請求項１８】
メモリ制御装置は、マルチバイトのデータブロックを検索するバーストアクセスを制御するように動作するバーストアクセスメモリを備えている請求項１７記載の装置。
【請求項１９】
供給メモリ装置は、ランダムアクセスメモリ（ＲＡＭ）を含んでいる請求項１７記載の装置。
【請求項２０】
設けられたメモリ装置は、ランダムアクセスメモリ（ＲＡＭ）を含んでいる請求項１７記載の装置。
【請求項２１】
受信メモリ装置は、先入れ先出（ＦＩＦＯ）メモリを含んでいる請求項１７記載の装置。
【請求項２２】
供給メモリ装置は第１のバス幅を有し、シフトレジスタは第２のバス幅を有し、
第２のバス幅は第１のバス幅よりも大きい請求項１７記載の装置。
【請求項２３】
第２のバス幅は第１のバス幅の４倍の大きさである請求項２２記載の装置。
【請求項２４】
ポインタ管理装置は、第２のメモリ装置に書込まれるデータのサブブロック中の第１の有効なデータ素子の位置に対応するシフトレジスタ中のデータ素子位置にポインタ値を変更するように動作する請求項１７記載の装置。
【請求項２５】
ポインタ管理装置は、ポインタ値に応答してシフトレジスタの状態を示す信号を生成するように動作する請求項２４記載の装置。
【請求項２６】
状態は空の状態である請求項２５記載の装置。
【請求項２７】
状態は満杯の状態である請求項２５記載の装置。
【請求項２８】
マシン実行可能な命令を含んでいるマシン読取り可能な媒体を有するアーティクルにおいて、前記命令は、マシンを制御して、
複数のデータレーン中のデータを受信して目的地アドレスに対するアドレスオフセット値を決定し、
前記データを目的地アドレスに対応する１以上のデータレーンへシフトするようにマシンを制御する動作を行わせるアーティクル。
【請求項２９】
データレーンはバイトレーンを含んでいる請求項２８記載の装置。
【請求項３０】
データをマシンに受信させるように動作させる命令は、マシンにデータ素子のブロックを受信させるように動作させる命令を含んでいる請求項２８記載の装置。
【請求項３１】
さらに、第２のメモリ装置に書込まれるデータのサブブロック中の第１の有効なデータ素子に対応するデータ素子位置にポインタ値を変更するようにマシンを動作させる命令を含んでいる請求項２８記載の装置。
【請求項３２】
さらに、ポインタ値に応答してシフトレジスタの状態をマシンに指示させる命令を含んでいる請求項３１記載の装置。
【請求項３３】
状態は空の状態である請求項３２記載の装置。
【請求項３４】
状態は満杯の状態である請求項３２記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、目的地アドレスに基づいたデータシフタを使用するデータフォーマット装置に関する。
【背景技術】
【０００２】
コンピュータシステムにおいては、中央処理装置（ＣＰＵ）はアドレスを与えることによりメモリにアクセスし、そのアドレスはデータ素子を集合的に記憶しているメモリセルのグループの特有の位置を示している。最初にメモリにアクセスするときには多くの動作が行われる可能性がある。これらの動作は最初のアクセスでは比較的遅くてもよい。その後データ自身が転送される。例えばある制御信号は処理を開始するために発生される。次にアドレスがメモリに送られる。この動作のオーバーヘッドまたは潜在性のために、メモリへの最初のアクセスは比較的長い時間を取ることができ、例えば多くの装置では４乃至７クロックサイクルを要している。
【０００３】
メモリの潜在性を減少させるために、ある種のメモリ装置は各アクセスに対して連続的にメモリから４つの６４ビットワード（２５６ビットまたは３２バイト）を含むデータのブロックを読取っている。この“バーストアクセスモード”または“バースティング”の利点は、連続する３つのアクセスに対して最初のアクセスのオーバーヘッドの反復を避けていることである。後続するアクセスは４乃至７クロックサイクルの代わりに１乃至３クロックサイクルに短縮されることができる。
【０００４】
バースティングをサポートするメモリ装置はバイトアドレス可能ではない。特定のバイトアドレスでメモリ位置をアクセスする代わりに、メモリ装置はデータ素子の多バイトブロックを検索する。データブロック内のデータ素子の幾つかはリクエストに対して有効ではない可能性がある。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
データフォーマット装置はランダムアクセスメモリ（ＲＡＭ）のようなソースからデータの多ブロックを取出すために使用され、その多ブロックを多数の小さいブロックに分解する。小さくされた各ブロックはその後適当なローカルメモリアドレスへ送られることができる。制御プログラムは小さい各ブロックは大き差とそれらの目的地アドレスとを決定する。小さい各ブロックは大きなブロック内のバイト境界まで分解されることができる。目的地アドレスはまた任意のバイト境界に位置されることができる。これはデータフォーマット装置の応答特性を複雑にする。供給ＲＡＭから来るときのデータ素子がどのバイトレーンかには関係なく、データフォーマット装置は新しいアドレスに書込まれるために正確なバイトレーンにこれらのバイトがあることを確実にしなければなにない。
【課題を解決するための手段】
【０００６】
本発明のデータフォーマット装置はシフトレジスタおよびポインタ管理装置を含んでいる。供給ランダムアクセスメモリ（ＲＡＭ）は、ローカルメモリアドレスに書込まれるメモリに対するバーストアクセス動作で検索される多バイトのデータブロックからのデータを記憶する。シフトレジスタは供給ＲＡＭからデータを受取り、そのＲＡＭからのデータの読取りに応答してそのデータをシフトし、データを先入れ先出し（ＦＩＦＯ）メモリに書込む。ポインタ管理装置はポインタを維持し、そのポインタはデータがシフトレジスタ中へシフトされ、シフトレジスタからシフトされて取出されるようにポインタを動かすことによりＦＩＦＯの正確なバイトレーンへデータのサブブロックで第１の有効なバイトを指示する。
【０００７】
ポインタ管理装置はポインタ値に基づいたインジケータを生成し、それはシフトレジスタが一杯（またはほぼ一杯）であるか空（またはほとんど空）であるかを制御プログラムに通知する。
【発明を実施するための最良の形態】
【０００８】
図１は、本発明の１実施形態によるデータフォーマット装置102 を含むメモリアクセスシステム100 を示している。メモリ制御装置104 は”バーストアクセス”モードでメモリ装置106 からデータを読取ることができ、それにおいてデータの多バイトブロックがメモリから検索され、ローカルメモリアドレスに送られる前に一次的にランダムアクセスメモリ（ＲＡＭ）のような別のメモリ装置中に負荷される。データブロック中のデータ素子はリクエストに対して有効でなくてもよい。また有効なデータブロックおよびそれらの目的地アドレスはバーストアクセスされた多バイトブロック中の任意のバイト境界に位置されることができる。
【０００９】
データフォーマット装置102 は供給ＲＡＭ108 からデータブロックを取出し、そのデータを１以上のローカルメモリアドレスに送ってもよい。データフォーマット装置102 は供給ＲＡＭ108 から読取った大きい多バイトデータブロックを大きいブロック内の適当なバイト境界において多数のもっと小さいブロックに分割することができる。小さい各ブロックはローカルメモリ115 中の目的地アドレスに送られることができる。メモリ制御装置104 は小さい各ブロックの大きさおよびそれらの目的地アドレスを決定する。
【００１０】
データフォーマット装置102 はカウンタ110 を含んでいてもよく、それは各目的地アドレスに対して書込まれた供給ＲＡＭ108 からの現在の大きいブロックからどれだけの数のバイトの追跡を維持するために設けられている。データフォーマット装置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 から読取られているバイトの数により増加される。実際の値は次式で決定され、
ｒａｍｌ ｄｂ 幅−バイト エネーブル
ここで、“ｒａｍｌ ｄｂ 幅”はバイトにおけるＲＡＭのデータバスの幅を表し、“バイト エネーブル”は受信ＦＩＦＯ116 に書込まれるバイトの数を表している。
【００１６】
バイト エネーブルはメモリ制御装置104 により設定されることができ、所定の外部メモリアドレスに対する受信ＦＩＦＯ116 への書込みの都度使用される。受信ＦＩＦＯ116 に対する全ての書込動作は、所定の外部メモリアドレスに対して最初と最後に書込まれる可能性のあることを除いてｒａｍ２ ｄｂ 幅（すなわちバイトによる受信ＦＩＦＯのデータバス117 の幅）である充分に有効なワードを含んでいることが期待される。新しいアドレスに対して書込まれた目的地のＲＡＭ108 から最初に読取られた場合に、もしもバイト エネーブルがｒａｍ２ ｄｂ 幅と同じ値に設定されない場合には、フルワードより少ないデータが受信ＦＩＦＯ116 に書込まれる。この場合に、受信ＦＩＦＯに任意の最後の書込の場合に、バイト エネーブルがポインタを調整して、それによりシフトレジスタ112 中に残されたデータ量を表す。
【００１７】
図３は１実施例によるポインタ管理動作300 を示すフローチャートである。以下は動作300 を記述するＶerilog言語を示している。
【００１８】
常に（p0sedge クロックまたはp0sedge リセット）
開始
もしも（リセット）ならば、
ポインタ［４：０］≦５' ｈ１Ｆ；
それでなければ、もしも（ポインタ リセット）ならば、
ポインタ［４：０］≦５' ｈ１Ｆ；
それでなければ、もしも（読取り ストローブおよび書込み ストローブ）ならば、
ポインタ［４：０］≦  ポインタ［４：０］＋（ram1 db 幅−
バイト エネーブル［ram2  db  幅；01］）；
それでなければ、もしも（読取り ストローブおよび書込み ストローブ）ならば、
ポインタ［４：０］≦  ポインタ［４：０］＋´ram1 db 幅；
それでなければ、もしも（書込み ストローブ）ならば、
ポインタ［４：０］≦  ポインタ［４：０］−バイト エネーブル［ram2 db 幅；01］）；
それでなければ、
ポインタ［４：０］≦  ポインタ［４：０］；
終了
割当てｓｒ ポインタ［４：０］
＝ポインタ［４：０］＋アドレス オフセット［´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 はポインタ値をポインタの現在の値プラスバイトで表した供給ＲＡＭのデータバスの幅マイナスバイト エネーブル値に等しい値に変化させる（ブロック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 に書込まれるために利用されるデータが存在することを示している。前のように書込みを連続することを可能にする実際の事象の組合わせは構成に応じて異なっている。
【００３９】
多くの実施形態が記載されたが、それにもかかわらず、種々の変形が本発明の技術的範囲を逸脱することなく行われることができることを理解するであろう。例えばフローチャートに示されたブロックは飛び越され、或いは異なる順序で実行されても、依然として所望の結果を生成することができる。したがって、その他の実施形態は特許請求の範囲に記載された本発明の技術的範囲に含まれるものである。
【図面の簡単な説明】
【００４０】
【図１】本発明の１実施形態によるメモリアクセスシステムのブロック図。
【図２】書込まれるデータ素子の可動ウインドウ中のポインタを含むシフトレジスタのブロック図。
【図３】本発明の１実施形態によるポインタ管理装置動作を示すフロー図。
【図４】例示的なポインタ管理動作の異なったフェーズに対応する異なった位置のウインドウを含む図２のシフトレジスタのブロック図。
【図５】例示的なポインタ管理動作の異なったフェーズに対応する異なった位置のウインドウを含む図２のシフトレジスタのブロック図。
【図６】例示的なポインタ管理動作の異なったフェーズに対応する異なった位置のウインドウを含む図２のシフトレジスタのブロック図。
【図７】例示的なポインタ管理動作の異なったフェーズに対応する異なった位置のウインドウを含む図２のシフトレジスタのブロック図。
【図１】
2004537805.tif 000003
【図２】
2004537805.tif 000004
【図３】
2004537805.tif 000005
【図４】
2004537805.tif 000006
【図５】
2004537805.tif 000007
【図６】
2004537805.tif 000008
【図７】
2004537805.tif 000009
【国際公開パンフレット】
2004537805.tif 000010
2004537805.tif 000011
2004537805.tif 000012
2004537805.tif 000013
2004537805.tif 000014
2004537805.tif 000015
2004537805.tif 000016
2004537805.tif 000017
2004537805.tif 000018
2004537805.tif 000019
2004537805.tif 000020
2004537805.tif 000021
2004537805.tif 000022
2004537805.tif 000023
2004537805.tif 000024
2004537805.tif 000025
2004537805.tif 000026
2004537805.tif 000027
2004537805.tif 000028
2004537805.tif 000029
2004537805.tif 000030
2004537805.tif 000031
【国際調査報告】
2004537805.tif 000032
2004537805.tif 000033