JP4664559B2 - リングバッファフローエラーの検出のための方法および装置 - Google Patents

リングバッファフローエラーの検出のための方法および装置 Download PDF

Info

Publication number
JP4664559B2
JP4664559B2 JP2001539102A JP2001539102A JP4664559B2 JP 4664559 B2 JP4664559 B2 JP 4664559B2 JP 2001539102 A JP2001539102 A JP 2001539102A JP 2001539102 A JP2001539102 A JP 2001539102A JP 4664559 B2 JP4664559 B2 JP 4664559B2
Authority
JP
Japan
Prior art keywords
ring buffer
flow indicator
flow
indicator value
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2001539102A
Other languages
English (en)
Other versions
JP2003530735A (ja
Inventor
エムリーズ ウィリアムズ,
アンドリュー フェルプス,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JP2003530735A publication Critical patent/JP2003530735A/ja
Application granted granted Critical
Publication of JP4664559B2 publication Critical patent/JP4664559B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/10Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Detection And Correction Of Errors (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

【0001】
(発明の分野)
本発明はデジタルデータの通信に関する。より詳細には、本発明は、リングバッファ内部のアンダーフロー状態またはオーバーフロー状態を検出するための方法と装置に関する。
【0002】
(関連技術)
コンピュータシステム内のデータの転送速度が増加し続けるにつれて、コンピュータシステムのコンポーネント間でのデータの送信および受信を調整することは、より困難になる。データは、データが送信および受信されたとき、コントロールされるために使用されるグローバルなクロック信号のコントロール下で、コンピュータシステムコンポーネント間を典型的に転送される。
【0003】
クロック周波数がより早いデータの転送速度を提供するように増加するにつれて、クロックスキューは、顕著な問題になり得る。クロックスキューにより、グローバルなクロック信号は、異なる時間および予測できない時間で様々なコンピュータシステムのコンポーネントに到達するようになる。従って、第2のコンポーネントにデータを送信する第1のコンポーネントは、データが第2のコンポーネントによってラッチされると確実とはなり得ない。クロックスキューは、異なるモジュールまたは異なるチップ上で配置されたコンピュータシステムのコンポーネント間で特に顕著である。
【0004】
コンピュータシステムのコンポーネント間でデータを転送することに関係するいくつかの通信の問題を改善するための一つの方法は、リングバッファとしてインプリメントされるFIFOを使用してコンピュータシステムのコンポーネント間でバッファデータを転送することである。リングバッファは、データ項目のアレイならびに読み出しポインターおよび書き込みポインターを典型的に含む。データがリングバッファに到達すると、データは、アレイを経て進むように書き込みポインターを使用してリングバッファ内に格納され、アレイ中の連続したロケーションの中に連続したデータアイテムを格納する。書き込みポインターがアレイの末端に到達すると、書き込みポインターは冒頭にラップアラウンド(wrap around)する。受信側において、読み出しポインターは、アレイからの連続したデータアイテムを読み出すために使用される。
【0005】
残念なことに、リングバッファは、オーバーフローエラーおよびアンダーフローエラーになる傾向になり得る。オーバーフローエラーは、アレイが一杯になり、書き込みポインターが読み出しポインターを経て進んだときに起こり、データが読み出され得る前に上書きされる。アンダーフローエラーは、アレイが空になり読み出しポインターが書き込みポインターを経て進み、書き込まれる前に項目を読み出すときに起こる。
【0006】
フローエラー(例として、アンダーフローエラーまたはオーバーフローエラー)は、データを受信するときにデータを調べることによって典型的に検出されることができない。従来のエラー検出およびエラー修正の技術(例えば、エラー修正コードおよびエラー検出コード)は、データワード中の1以上のビットがデータ転送の間に変更されると、検出され得る。しかし、それらのエラーは、全体のデータワードがオーバーフローエラーまたはアンダーフローエラーの結果として置換されると、検出できない。
【0007】
特に汎用性のあるインプリメンテーションにおいて、書き込みポインターロジックは、遠隔源から達するデータに関連したクロックを使用し、一方で読み出しポインターロジックは、ローカルクロックを使用する。複数のクロックの使用は、フローエラーの検出を特に困難にさせる。
【0008】
必要とされることは、データ転送プロセスの終わりで受信されるデータを調べることによって、オーバーフローエラーおよびアンダーフローエラーを検出することを可能にする方法および装置である。
【0009】
(要旨)
本発明の一つの実施形態は、リングバッファ内で発生するアンダーフローエラーおよびオーバーフローエラーを検出するためのシステムを提供する。そのシステムがリングバッファを経て転送されるべきデータワードを受信すると、システムはリングバッファ内にデータワードと一緒に格納されるフローインジケータ値を生成する。このフローインジケータ値は、リングバッファから読み出している間にアンダーフローが起こるかどうか、またはリングバッファに書き込んでいる間にオーバーフローが起こるかどうかを判定することを容易にする情報を含む。次に、このシステムは、リングバッファ内の項目の中にフローインジケータ値とともにデータワードを書き込む。その後になって、このシステムはリングバッファからの項目を読み出し、予想されたフローインジケータ値を生成する。このシステムは、リングバッファから読み出されたフローインジケータ値と予想されたフローインジケータ値とを比較する。フローインジケータ値が予想されたフローインジケータ値と異なる場合、システムは、アンダーフローまたはオーバーフローが起きたことを示すエラー信号を生成する。
【0010】
本発明の一つの実施形態において、フローインジケータ値は周期的に変化し、その結果予測可能な異なるフローインジケータ値は、項目への連続した書き込み動作の際にリングバッファ内の項目の中へ書き込まれる。この予測可能な異なるフローインジケータ値は、フローインジケータ値と予想されたフローインジケータ値とを比較することによって、システムがアンダーフロー状態、またはオーバーフロー状態を検出することを可能にする。リングバッファから読み出されたフローインジケータ値が予想されたフローインジケータ値と異なる場合、アンダーフロー状態またはオーバーフロー状態が起きている。
【0011】
本発明の一つの実施形態において、フローインジケータ値は、リングバッファに関する書き込みポインターが最大値に達する毎に変化するシングルビットを含んでいる。
【0012】
本発明の一つの実施形態において、フローインジケータ値は、データワードのパリティビット内部で偶数パリティと奇数パリティとの間を変化するように符号化される。
【0013】
本発明の一つの実施形態において、リングバッファは奇数サイズであり、フローインジケータ値は、連続した書き込み動作において0と1との間を交互にとるシングルビットである。
【0014】
本発明の一つの実施形態において、フローインジケータ値は、データワード中のパリティビットの偶数パリティと奇数パリティとの間を変化するように符号化される。さらに、リングバッファは奇数サイズであり、パリティビットは、連続した書き込み動作において偶数パリティと奇数パリティとの間を交互にとる。
【0015】
本発明の一つの実施形態において、フローインジケータ値は、アンダーフローエラーをオーバーフローエラーと識別することを可能にするフロー方向インジケータをさらに包含する。
【0016】
(詳細な説明)
以下の説明は、当業者が本発明を為し、使用することが可能なように提供され、そして特定の用途および要件のコンテキストにおいて提供される。開示された実施形態の様々な改変は、当業者にとって容易に明らかとなり、本明細書中で規定される一般的な原理は、本発明の意図および範囲から逸脱することなく、他の実施形態および用途に適用され得る。従って、本発明は、示される実施形態に限定されることを意図しないが、本明細書中で開示される原理および特徴と一致する最も広い範囲に認められる。
【0017】
(コンピュータシステム)
図1は、本発明の実施形態によるコンピュータシステム100を示す。コンピュータシステム100は、多くのコンポーネントを含んでおり、プロセッサー120、メモリ130、およびデバイス140を含んでいる。
【0018】
プロセッサー120は、コードおよび/またはデータを処理できるあらゆるタイプの演算デバイスを含み得る。限定されないが、これは、メインフレームプロセッサー、マルチプロセッサーシステム、マイクロプロセッサー、デバイスコントローラ、および電気製品内部の演算ユニットを含んでいる。プロセッサー120は、他のコンピュータシステムのコンポーネントからのデータ104を受信するインプットポート122を含む。リングバッファ108内でデータ104は、データ105に変換される。これは、受信クロック信号110の制御下で作動するインプットポート122から内部のプロセッサー回路部112へ転送される。
【0019】
入力ポート122はリングバッファ108を含み、これは、データ104がデバイス140から内部のプロセッサー回路部112へ転送される際にデータ104をバッファリングするためのものである。データ104は、送信クロック信号106を使用してデバイス140からリングバッファ108へクロック(clock)される。データ105は、受信クロック信号110を使用してリングバッファ108の外部にクロック(clock)される。リングバッファ108は、本発明の実施形態に従って、フローエラーを検出するための特別な回路部を含んでいることに留意されたい。
【0020】
このフローエラーの検出回路部が、プロセッサーだけでなく、転送データに関与するあらゆるタイプのデバイスとともに一般に使用され得ることにも留意されたい。例えば、フローエラーの検出回路部は、デジタルシステム内部のI/Oデバイス、メモリデバイスまたは切り換えデバイスで使用され得る。
【0021】
メモリ130は、プロセッサー120による実行のためのコードおよび/またはデータを格納するために使用され得るあらゆるタイプのランダムアクセスメモリを含む。
【0022】
デバイス140は、プロセッサー120にデータを転送するコンピュータシステム100内部のあらゆるタイプのデバイスを含み得る。これは、限定されないが、周辺機器デバイス、オフチップキャッシュ、別のメモリおよび別のプロセッサーを含む。デバイス140は、リングバッファ108の中へデータ104を転送する遠隔送信器102を含む。デバイス140は、プロセッサー120とは別個のモジュールまたは別個のチップ上に設置され得る。あるいは、デバイス140は、プロセッサー120と同じチップ上に設置され得る。記述される実施形態において、デバイス140は、コンピュータシステム100の内部に設置される。別の実施形態において、デバイス140は、コンピュータシステム100に対して外部に設置される。
【0023】
本発明は、コンピュータシステム内部のリングバッファに限定されないことに留意されたい。一般に、本発明は、例えばデジタル通信網を含む、リングバッファを使用するデータを転送するためのあらゆるシステムに適用され得る。
【0024】
(リングバッファの第1の実施形態)
図2は、本発明の第1の実施形態によるリングバッファ108と関連した回路部を示している。本実施形態において、リングバッファ108は、0、1、2、3、4、5、6、7、および8と名付けられたの9つの項目を含む。各々の項目は、フローインジケータビットおよびデータワードを含む。より詳細には、項目0は、フローインジケータビット220およびデータワード210を含む。項目1は、フローインジケータビット221およびデータワード211を含む。項目2は、フローインジケータビット222およびデータワード212を含む。項目3は、フローインジケータビット223およびデータワード213を含む。項目4は、フローインジケータビット224およびデータワード214を含む。項目5は、フローインジケータビット225およびデータワード215を含む。項目6は、フローインジケータビット226およびデータワード216を含む。項目7は、フローインジケータビット227およびデータワード217を含む。項目8は、フローインジケータビット228およびデータワード218を含む。
【0025】
リングバッファ108は、書き込みカウンター230および読み出しカウンター240(これらは、読み出しポインターおよび書き込みポインターとも呼ばれ得る)と関連している。書き込みカウンター230は、リングバッファ108内へ書き込むためにその次の項目を表す値(0から8まで)を含む。読み出しカウンター240は、リングバッファ108内から読み出すためにその次の項目を表す同様の値(0から8まで)を含む。
【0026】
書き込みカウンター230のコンテンツは、比較回路232を通って進行し、比較回路232は、書き込みカウンター230が最大値8に達しているかどうかを確認するために試験を行う。最大値8に達していれば、比較回路232は、トグルフリップフロップ234のトグル入力中へ進行する1の値を生成する。これにより、トグルフリップフロップ234は状態を変化させる。トグルフリップフロップ234のコンテンツは、書き込み動作の間、対応するデータワードとともに、リングバッファ108へ書き込まれることに留意されたい。書き込みカウンター230およびトグルフリップフロップ234は、送信クロック信号106の制御下で動作することにも留意されたい。リングバッファ108の左側にある回路部は、リングバッファ108を書き込みポインター230が循環するとき交互に、フローインジケータビット220〜228の中へ連続的に0を書き込み、次いで、フローインジケータビット220〜228の中へ連続的に1を書き込む。
【0027】
読み出しカウンター240のコンテンツは、比較回路242を通って入力し、比較回路242は、読み出しカウンター240が最大値8に達しているかどうかを確認するために試験を行う。最大値8に達していれば、比較回路242は、トグルフリップフロップ244のトグル入力中へ進行する1の値を生成する。これにより、トグルフリップフロップ244はその状態を変化させる。読み出しカウンター240およびトグルフリップフロップ244の両方とも受信クロック110の制御下で動作する。
【0028】
リングバッファ108の左側にある回路部は、読み出しカウンター240がリングバッファ108を介して走査するとき、連続的に0を生成し、次いで、リングバッファ108を通る次のパスの間に連続的に1を生成する。
【0029】
トグルフリップフロップ244のコンテンツは、フローエラー信号248を生成するために、排他的ORゲート246を使用してリングバッファ108から読み出されるフローインジケータビットと比較される。リングバッファ108から読み出されたフローインジケータビットが、トグルフリップフロップ244に格納された予想されたフローインジケータビットと一致する場合、フローエラー信号248は0の値を想定する。そうでなければ、フローエラー信号248は1の値を想定する。
【0030】
リングバッファ108から読み出されたフローインジケータビットがトグルフリップフロップ244に格納された予想されたフローインジケータビットと一致しない場合、リングバッファ108から読み出されたフローインジケータビットが、リングバッファ108にわたる書き込みカウンター230による前の循環、または次の循環のどちらかで書き込まれたということを示している。従って、アンダ−フローまたはオーバーフローが生じている。
【0031】
(リングバッファの第2の実施形態)
図3は、本発明の第2の実施形態によるリングバッファ108と関連した回路部を示している。この第2の実施形態は、図1で示された第1の実施形態と本質的に同じ態様で動作する。唯一の違いは、フローインジケータビットがリングバッファ238の各々の項目と関連するパリティビット内部に符号化されることである。従って、リングバッファ108の各々の項目は、(符号化されたフロー情報を有する)パリティビット、およびデータワードを含む。より詳細には、項目0は、パリティビット320およびデータワード210を含む。項目1は、パリティビット321およびデータワード211を含む。項目2は、パリティビット322およびデータワード212を含む。項目3は、パリティビット323およびデータワード213を含む。項目4は、パリティビット324およびデータワード214を含む。項目5は、パリティビット325およびデータワード215を含む。項目6は、パリティビット326およびデータワード216を含む。項目7は、パリティビット327およびデータワード217を含む。項目8は、パリティビット328およびデータワード218を含む。
【0032】
図2に示された第1の実施形態のように、リングバッファ108は、送信クロック信号106の制御下で動作する書き込みカウンター230を含む。送信クロック信号106もまた、トグルフリップフロップ304のクロック入力中へ進行する。トグルフリップフロップ304のトグル入力は1の値に拘束され、トグルフリップフロップ304は、送信クロック信号106がクロック循環を介して前進する毎に状態を変化させる。従って、トグルフリップフロップ304は、0および1の値を交互に生成する。
【0033】
トグルフリップフロップ304の出力は、パリティ生成回路302の偶数/奇数制御の入力へ進行する。パリティ生成回路302は、データ104からデータワードを受信し、データワード付随するパリティビットを作成する。このパリティビットは、偶数パリティまたは奇数パリティのどちらか一方を作成し得る。偶数パリティの場合、パリティビットを加えたデータワード中に偶数のがある。奇数パリティの場合、パリティビットを加えたデータワード中に奇数のがある。この偶数または奇数の選択は、パリティ生成回路302の偶数/奇数制御の入力によって選択される。書き込み制御の間、パリティ生成回路302によって生成されたパリティビットは、リングバッファ108に付随するデータワードとともに記録される。
【0034】
トグルフリップフロップ304のコンテンツが、偶数パリティと奇数パリティとの間で交互になるとき、パリティ生成回路302によって生成したパリティビットの方向性は、偶数パリティと奇数パリティとの間で交互になることに留意されたい。従って、リングバッファ108格納される交互のパリティビットは、偶数パリティおよび奇数パリティを有する。リングバッファ108内の項目の数が奇数なので、リングバッファ108の個々のパリティビットの方向性は、書き込みカウンター230がリングバッファ108を通って連続的に進行するときに偶数と奇数との間を循環する。例えば、リングバッファ108を介した第1通過に関して、パリティビット{320、321、322、323、324、325、326、327、および328}は、以下の方向性パターン{偶数、奇数、偶数、奇数、偶数、奇数、偶数、奇数、偶数}を有する。リングバッファ108を介する書き込みカウンター230による第2の通過に関して、パリティビットは、逆のパターン{奇数、偶数、奇数、偶数、奇数、偶数、奇数、偶数、奇数}を有する。これは、図3で示された回路部が第1の通過で書かれたパリティビットと第2の通過で同じ位置に書かれたパリティビットとを区別することを可能にする。これは、オーバーフローエラーおよびアンダーフローエラーを検出することを可能にする。エラー検出の目的で、連続したパリティの変化が、バッファの全ての単一データワードの中へ格納する回路が適している。
【0035】
図2にあるように、リングバッファ108はまた、受信クロック信号110の制御下で動作する読み出しカウンター240を含む。さらに受信クロック信号110は、トグルフリップフロップ312のクロック入力へ進む。トグルフリップフロップ312のトグル入力は1の値に拘束され、トグルフリップフロップ312は、受信クロック信号110がクロック循環を介して前進する毎に状態を変化させる。従って、トグルフリップフロップ312は、0および1の値を交互に生成する。
【0036】
トグルフリップフロップ312の出力は、パリティ生成回路310の偶数/奇数の制御の入力へ進行する。パリティ生成回路310は、リングバッファ108からデータワードを受信し、予想されたパリティビットを生成する。この予想されたパリティビットは、フローエラー信号318を生成するために排他的ORゲート316を使用してリングバッファ108の対応する項目から読み出されるパリティビットに対して比較される。リングバッファ108から読み出されたパリティビットが、パリティ生成回路310によって生成された予想されたパリティビットと一致する場合、フローエラー信号318は、0の値を想定する。さもなければ、フローエラー信号318は、1の値を想定する。
【0037】
リングバッファ108から読み出されたフローインジケータビットが、予想されたフローインジケータビットに一致しない場合、これは、リングバッファ108から読み出されたフローインジケータビットが書き込みカウンター230によるリングバッファ108を介して、前の循環または次の循環のどちらか一方に書き込まれたことを表す。または、読み出されたデータのパリティが書き込まれたデータのパリティと同じでないということを表す。従って、アンダーフロー、オーバーフロー、またはデータ格納のエラーが起こる。これらのエラーの二つ以上が同時に起こることはあまりない。
【0038】
図3で示される本発明の一つの実施形態において、パリティ生成回路302およびトグルフリップフロップ304は、送信器(例えば図1の遠隔送信器102)と一体化されることに留意されたい。この実施形態において、パリティ生成回路302の出力は、送信器と受信器との間を転送される。これは、シングル信号が通信エラーおよびフローエラーをともに検出するために使用されることを可能にする。本発明の別の実施形態において、パリティ生成回路302およびトグルフリップフロップ304は受信器と一体化される。この場合、パリティ信号は、遠隔送信器102および入力ポート122の間を送信されない。
【0039】
(リングバッファの第3の実施形態)
図4は、本発明の第3の実施形態によるリングバッファ108に関連した回路部を示す。この第3の実施形態において、追加した回路部は、アンダーフローエラーおよびオーバーフローエラーを区別するために図2で示された回路部に追加される。
【0040】
追加したフロー方向インジケータビット420〜428は、リングバッファ108の項目に追加される。より詳細には、フロー方向インジケータビット420は項目0に追加され、フロー方向インジケータビット421は項目1に追加され、フロー方向インジケータビット422は項目2に追加され、フロー方向インジケータビット423は項目3に追加され、フロー方向インジケータビット424は項目4に追加され、フロー方向インジケータビット425は項目5に追加され、フロー方向インジケータビット426は項目6に追加され、フロー方向インジケータビット427は項目7に追加され、およびフロー方向インジケータビット428は項目8に追加される。
【0041】
トグルフリップフロップ404は、ANDゲート403の出力からの入力を受信する。ANDゲート403は、比較回路232の出力からの入力、およびトグルフリップフロップ234の出力からの別の入力を受信する。書き込み動作の間、トグルフリップフロップ404の出力は、対応するデータワードおよびフローインジケータビットとともにリングバッファ108の項目中へ書き込まれる。
【0042】
リングバッファ108の右側で、トグルフリップフロップ408は、ANDゲート407の出力からの入力を受信する。ANDゲート407は、比較回路242の出力からの入力、およびトグルフリップフロップ244の出力からの別の入力を受信する。予想されたフロー方向インジケータ409、予想されたフローインジケータ245、および観測されたフロー方向インジケータ429は、アンダーフロー信号412を生成するためにXORゲート414および410を介してゲート制御(gate)される。
【0043】
図4で示される回路部の演算に隠された論理は、図7Aおよび図7Bを参照することで説明され得る。図7Aにおいて、フロー方向ビットは、比較回路232の出力が1であり、かつトグルフリップフロップ404の出力が1であるときに変化することに留意されたい。従って、フロー方向インジケータビットは、フローインジケータビットが変化するとき1回おきに変化する。このことは、エラーがオーバーフローかどうかを排他的ORゲート410が判定することを可能にする。
【0044】
図7Bは、検査によって図7Aから抽出される。図7Aにおいて、項目Bがリングバッファ108のロケーション7で予測される場合に、項目Aが観測されるとき、次いでロケーション7で予測される項目は、まだ書き込まれていない。これは、アンダーフローの事象の定義である。一方、項目Cがリングバッファ108のロケーション7で観測される場合、その予測された項目は、新しい項目によってすでに上書きされている。これは、オーバーフローの事象の定義である。図7Bのそれぞれの線は、図7Aからのこの検査プロセスによって抽出される。
【0045】
図7Bを参照して、予想されたフローインジケータおよびフロー方向インジケータビットが実際に認識されるビットと同じ場合、システムはエラーなしで機能する。これは、システムは“OK”であることを意味する。図7Bは、演算“(予想されたフローインジケータ)XOR(予想されたフロー方向インジケータ)XOR(観測フロー方向インジケータ)”の値に対するカラムを含む。予想されたフローインジケータが観測フローインジケータと異なる場合にアンダーフロー状態を表すことは、図7Bから認識され得る。予想されたフローインジケータおよび観測フローインジケータが異なる場合、ならびにこの演算が値0を生成する場合、エラーはオーバーフローである。多くの組み合わせは、“ストレンジ(STRANGE)”の意味を有するように記されることに留意されたい。これは、これらのエラーのタイプがシステム動作の間に起こるべきではないことを表し、エラーが起こる場合、そのエラーがオーバーフロー、アンダーフロー、または他のタイプのエラーを含んでいるかどうかは明らかでない。
【0046】
(書き込み機構の動作)
図5Aは、本発明の第1実施形態によるリングバッファ108へ書き込む機構の動作を示すフローチャートである。そのシステムは、最初にフローインジケータ値および書き込みカウンター230を初期化する(ステップ502)。これらの値が初期化された後、このシステムは、リングバッファ108へ書き込む時間まで待機するループに入る(ステップ505)。リングバッファ108へ書き込む時間になると、このシステムは、書き込みカウンター230によって示されたリングバッファ108内部の項目にデータワードおよびフローインジケータ値を書き込む(ステップ506)。次に、このシステムは、書き込みカウンター230をインクリメントし(ステップ508)、値が最大値8に等しいかどうかを認識するために書き込みカウンター230をテストする(ステップ510)。値が最大値8に等しい場合、このシステムは、フローインジケータ値を変化させ(ステップ510)、次のデータワードに関するプロセスを繰り返すようにステップ505へ戻る。値が最大値8に等しくない場合、このシステムはステップ505へ直接戻る。
【0047】
(読み出し機構の動作)
図5Bは、本発明の第1実施形態によるリングバッファ108から読み出す機構の動作を示すフローチャートである。そのシステムは、最初にフローインジケータ値および読み出しカウンター240を初期化する(ステップ522)。これらの値が初期化された後、このシステムは、リングバッファ108から読み出す時間まで待機するループに入る(ステップ526)。リングバッファ108から読み出される時間になると、システムは、読み出しカウンター240によって示されたリングバッファ108内部の項目からデータワード、および対応したフローインジケータ値を読み出す(ステップ528)。次に、システムは、リングバッファ108から読み出されたフローインジケータ値が予想されたフローインジケータ値と一致しているかどうかを判定する(ステップ530)。一致しない場合、システムはエラー信号を生成する(ステップ531)。
【0048】
一致する場合、システムは、読み出しカウンター240をインクリメントし(ステップ532)、最大値8に等しいかどうかを認識するために読み出しカウンター240をテストする(ステップ533)。最大値8に等しい場合、システムは、フローインジケータ値を変化させ(ステップ534)、次のデータワードへのプロセスを繰り返すためにステップ526に戻る。最大値8に等しくない場合、システムは直接ステップ526に戻る。
(エラーフリー動作の例)
図6Aは、本発明の第1実施形態によるリングバッファ108のエラーフリー動作を示している。図6Aにおいて、時間は左から右へと進み、列は時間が異なる点での様々な量の状態を示している。
【0049】
図6Aに見られ得るように、リングバッファ108に書き込まれたフローインジケータ値は、書き込みカウンター230がリングバッファ108を介して循環し終えると0と1との間を交互にとる。読み出しカウンター240は、リングバッファ108の同じ項目を介して循環するので、予想されたフローインジケータは、リングバッファ108から読み出されたフローインジケータ値と同じ値を有する。従って、フローエラー信号248は決してアサートされない。
【0050】
(オーバーフローの例)
図6Bは、本発明の第1実施形態によるリングバッファ108のオーバーフロー状態の検出を示している。この例において、読み出しプロセスは、書き込みプロセスの半分の速度で生ずる。読み出しカウンター240が項目6に初めて遭遇すると、書き込みカウンターは、項目6のフローインジケータ値の1を書き込むために2度リングバッファ108を循環することに留意されたい。これは、リングバッファ108から読み出されたフローインジケータ値を予想されたフローインジケータ値と一致させない。従って、フローエラー信号が生成される。
【0051】
(アンダーフローの例)
図6Cは、本発明の第1実施形態によるリングバッファのアンダーフロー状態の検出を図示している。この例において、書き込みプロセスは、読み出しプロセスの半分の速度で生ずる。従って、読み出しプロセスが項目4を得ると、それは、書き込みプロセスによる前の循環から継続されるフローインジケータ値の1を読み出す。これは、リングバッファ108から読み出されたフローインジケータ値を予想されたフローインジケータ値と一致させない。従って、フローエラー信号が生成される。このフローエラー信号は、システムによってラッチされ、その後リセットされるまで持続される。
【0052】
発明の実施形態の前述した記述は、図および説明のみの目的で提示される。それらは、網羅すること、または、開示された形式に本発明を限定することを意図しない。従って、多くの変更および改変は、当業者にとって明白である。さらに、上記の開示は、発明を限定することを意図していない。発明の範囲は、添付の特許請求の範囲によって規定される。
【図面の簡単な説明】
【図1】 図1は、本発明の実施形態によるコンピュータシステムを示す。
【図2】 図2は、本発明の第1実施形態によるリングバッファに関連する回路部を示す。
【図3】 図3は、本発明の第2実施形態によるリングバッファに関連する回路部を示す。
【図4】 図4は、本発明の第3実施形態によるリングバッファに関連する回路部を示す。
【図5A】 図5Aは、本発明の実施形態によるリングバッファ内へ書き込む機構の動作を示すフローチャートである。
【図5B】 図5Bは、本発明の実施形態によるリングバッファから読み出す機構の動作を示すフローチャートである。
【図6A】 図6Aは、本発明の実施形態によるリングバッファのエラーフリー動作を示す。
【図6B】 図6Bは、本発明の実施形態によるリングバッファのオーバーフロー状態の検出を示す。
【図6C】 図6Cは、本発明の実施形態によるリングバッファのアンダーフロー状態の検出を示す。
【図7A】 図7Aは、本発明の実施形態による図4で示された回路部の演算に隠された論理を示す表である。
【図7B】 図7Bは、本発明の実施形態による図4で示された回路部の演算に隠された論理を示す表である。

Claims (17)

  1. 第1クロックドメインで動作する書き込み機構により書き込まれ、第2クロックドメインで動作する読み出し機構により読み出されるリングバッファ内のアンダーフローエラーおよびオーバーフローエラーを検出する方法であって、該方法は、
    該リングバッファを介して転送されるデータワードを受信するステップと、
    該リングバッファに該データワードとともに格納されるフローインジケータ値を生成するステップであって、該フローインジケータ値は、該リングバッファから読み出している間にアンダーフローが起きるか、または、該リングバッファに書き込んでいる間にオーバーフローが起きるかどうかを判定することを容易にする情報を含み、該フローインジケータ値は周期的に変化し、予想可能な異なるフローインジケータ値は、各々の項目への連続的な書き込み動作に際して該リングバッファの各々の項目に書き込まれる、ステップと、
    該リングバッファの項目に該フローインジケータ値とともにデータワードを格納するステップと、
    該読み出し機構を使用して、該リングバッファから該項目を読み出すステップと、
    該読み出し機構内で、予想されたフローインジケータ値を生成するステップであって、該予想されたフローインジケータ値は、該フローインジケータ値と該予想された異なるフローインジケータ値との間の差としてアンダーフロー状態およびオーバーフロー状態を検出することを可能にする、ステップと、
    該リングバッファから読み出した該項目のフローインジケータ値と該予想されたフローインジケータ値とを比較するステップと、
    該フローインジケータ値が該予想されたフローインジケータ値と異なる場合フローエラー信号を生成するステップと
    有し
    該方法は更に、
    前記リングバッファに前記データワードとともに格納されるフロー方向インジケータ値を生成するステップであって、該フロー方向インジケータ値は、フローエラーがオーバーフローであるか、またはアンダーフローであるかを判定することを容易にする情報を含む、ステップと、
    前記リングバッファの前記項目に該データワードとともに該フロー方向インジケータ値を格納するステップと、
    該フロー方向インジケータの予想された値および前記フローインジケータの予想された値ならびに該フロー方向インジケータの観測された値を使用して観測されたフローエラーがアンダーフローであるか、またはオーバーフローであるかを演算するステップと
    を有する、
    方法。
  2. 前記フローインジケータ値は、前記リングバッファの書き込みポインターが最大値に達する毎に変化するシングルビットを含み、該書き込みポインターは、該リングバッファ内の書き込まれる項目を示す、請求項1に記載の方法。
  3. 前記フローインジケータ値は、前記データワードのパリティビットにおいて偶数パリティと奇数パリティとの間を変化するように符号化される、請求項1に記載の方法。
  4. 前記リングバッファは奇数サイズであり、前記フローインジケータ値は、連続的な書き込み動作において0と1との間を交互にとるシングルビットである、請求項1に記載の方法。
  5. 前記フローインジケータ値は、前記データワードのパリティビットにおいて偶数パリティと奇数パリティとの間を変化するように符号化され、前記リングバッファは奇数サイズであり、該パリティビットは連続的な書き込み動作において偶数パリティと奇数パリティとの間を交互にとる、請求項1に記載の方法。
  6. 前記フローインジケータ値は、アンダーフローエラーをオーバーフローエラーと区別することを可能にするフロー方向インジケータをさらに含む、請求項1に記載の方法。
  7. 前記データワードとともに格納される前記フローインジケータ値を生成するステップは、前記リングバッファを含むチップとは別個の遠隔送信器で行われる、請求項1に記載の方法。
  8. 前記データワードとともに格納される前記フローインジケータ値を生成するステップは前記リングバッファを含むチップ内で局所的に行われる、請求項1に記載の方法。
  9. リングバッファ内でアンダーフローエラーおよびオーバーフローエラーを検出する装置と、
    該リングバッファと、
    該リングバッファにデータワードとともに格納されるフローインジケータ値を生成するフローインジケータジェネレータであって、該フローインジケータ値は、該リングバッファから読み出す間にアンダーフローが起こるかどうか、または、該リングバッファへ書き込む間にオーバーフローが起こるかどうかを判定することを容易にする情報を含み、
    該フローインジケータジェネレータは、該フローインジケータ値を周期的に変化するように構成され、予想可能な異なるフローインジケータ値は、項目への連続的な書き込み動作の際に該リングバッファの各々の項目に書き込まれ、該予想可能な異なるフローインジケータ値は、該フローインジケータ値と予想されたフローインジケータ値との間の差としてアンダーフロー状態またはオーバーフロー状態を検出することを可能にする、フローインジケータジェネレータと、
    第1クロックドメインで動作し、該リングバッファの項目に該フローインジケータ値とともに該データワードを格納するように構成される、書き込み機構と、
    第2クロックドメインで動作し、該リングバッファから該項目を読み出すように構成される、読み出し機構と、
    該読み出し機構内で、予想されたフローインジケータ値を生成するように構成される、予想フローインジケータジェネレータと、
    該リングバッファから読み出された該項目からのフローインジケータ値を該予想されたフローインジケータ値と比較するように構成された、比較機構と、
    該フローインジケータ値が該予想されたフローインジケータ値と異なる場合、
    フローエラー信号を生成するように構成された、エラージェネレータと、
    を備
    前記フローインジケータジェネレータは、前記リングバッファに前記データワードとともに格納されるフロー方向インジケータ値を生成するように構成され、該フロー方向インジケータ値は、フローエラーがオーバーフローであるか、またはアンダーフローであるかを判定することを容易にする情報を含み、
    前記比較機構は、前記リングバッファから読み出された前記項目からのフロー方向インジケータ値を前記予想されたフローインジケータ値と比較し、フローエラーがオーバーフローであるか、または、アンダーフローであるかを判定するように構成される、
    装置。
  10. 前記フローインジケータ値はシングルビットを含み、前記フローインジケータジェネレータは、前記リングバッファへの書き込みポインターが最大値に達する毎に該シングルビットを変化するように構成され、該書き込みポインターは、該リングバッファ内書き込まれる項目を示す、請求項に記載の装置。
  11. 前記フローインジケータジェネレータは、前記データワードのパリティビットにおける偶数パリティと奇数パリティとの間の変化で前記フローインジケータ値を符号化するように構成される、請求項に記載の装置。
  12. 前記リングバッファは奇数サイズであり、前記フローインジケータは、連続的な書き込み動作で0と1との間を交互にとるシングルビットである、請求項に記載の装置。
  13. 前記フローインジケータジェネレータは、前記データワードのパリティビットにおける偶数パリティと奇数パリティとの間の変化前記フローインジケータ値を符号化するように構成され、リングバッファは奇数サイズであり、該パリティビットは、連続的な書き込み動作で偶数パリティと奇数パリティとの間を交互にとる、請求項に記載の装置。
  14. 前記フローインジケータ値はフロー方向インジケータをさらに含み、前記フローインジケータジェネレータは、アンダーフローエラーをオーバーフローエラーと区別することを可能にするように該フロー方向インジケータを変化するように構成される、請求項に記載の装置。
  15. 前記フローインジケータジェネレータは、前記リングバッファを含むチップと分かれた遠隔送信器に配置される、請求項に記載の装置。
  16. 前記フローインジケータジェネレータは、前記リングバッファを含むチップ内に配置される、請求項に記載の装置。
  17. リングバッファ内のアンダーフローエラーおよびオーバーフローエラーを検出する装置を含むコンピュータシステムであって、
    プロセッサーと、
    メモリと、
    該リングバッファと、
    該リングバッファにデータワードとともに格納されるフローインジケータ値を生成するフローインジケータジェネレータであって、該フローインジケータ値は、該リングバッファから読み出す間にアンダーフローが起こるかどうか、または該リングバッファへ書きこむ間にオーバーフローが起こるかどうかを判定することを容易にする情報を含むフローインジケータジェネレータと、
    該フローインジケータジェネレータは、該フローインジケータ値を周期的に変化するように構成され、予想可能な異なるフローインジケータ値は、項目への連続的な書き込み動作の際に該リングバッファの各々の項目に書き込まれ、該予想可能な異なるフローインジケータ値は、該フローインジケータ値と予想されたフローインジケータ値との間の差としてアンダーフロー状態またはオーバーフロー状態を検出することを可能にする、フローインジケータジェネレータと、
    第1クロックドメインで動作し、該リングバッファの項目に該フローインジケータ値とともに該データワードを格納するように構成される書き込み機構と、
    第2クロックドメインで動作し、該リングバッファからの項目を読み出すように構成される読み出し機構と、
    該読み出し機構内で、予想されたフローインジケータ値を生成するように構成される予想フローインジケータジェネレータと、
    該リングバッファから読み出された該項目からのフローインジケータ値を該予想されたフローインジケータ値と比較するように構成された比較機構と、
    該フローインジケータ値が該予想されたフローインジケータ値と異なる場合、
    フローエラー信号を生成するように構成されたエラージェネレータと、
    を備
    前記フローインジケータジェネレータは、前記リングバッファに前記データワードとともに格納されるフロー方向インジケータ値を生成するように構成され、該フロー方向インジケータ値は、フローエラーがオーバーフローであるか、またはアンダーフローであるかを判定することを容易にする情報を含み、
    前記比較機構は、前記リングバッファから読み出された前記項目からのフロー方向インジケータ値を前記予想されたフローインジケータ値と比較し、フローエラーがオーバーフローであるか、または、アンダーフローであるかを判定するように構成される、
    コンピュータシステム。
JP2001539102A 1999-11-15 2000-11-13 リングバッファフローエラーの検出のための方法および装置 Expired - Lifetime JP4664559B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/418,624 US6408409B1 (en) 1999-11-15 1999-11-15 Method and apparatus for ring buffer flow error detection
US09/418,624 1999-11-15
PCT/US2000/042118 WO2001037076A2 (en) 1999-11-15 2000-11-13 Method and apparatus for ring buffer flow error detection

Publications (2)

Publication Number Publication Date
JP2003530735A JP2003530735A (ja) 2003-10-14
JP4664559B2 true JP4664559B2 (ja) 2011-04-06

Family

ID=23658894

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001539102A Expired - Lifetime JP4664559B2 (ja) 1999-11-15 2000-11-13 リングバッファフローエラーの検出のための方法および装置

Country Status (6)

Country Link
US (1) US6408409B1 (ja)
EP (1) EP1264234B1 (ja)
JP (1) JP4664559B2 (ja)
AU (1) AU3269501A (ja)
DE (1) DE60025537D1 (ja)
WO (1) WO2001037076A2 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2366880B (en) * 2000-09-15 2005-01-05 Mitel Corp Method of Validating Data in Circular Buffers
US6880050B1 (en) * 2000-10-30 2005-04-12 Lsi Logic Corporation Storage device, system and method which can use tag bits to synchronize queuing between two clock domains, and detect valid entries within the storage device
GB0204144D0 (en) * 2002-02-22 2002-04-10 Koninkl Philips Electronics Nv Transferring data between differently clocked busses
JP3801088B2 (ja) * 2002-04-19 2006-07-26 株式会社デンソー 車両用通信装置
JP2004171411A (ja) * 2002-11-21 2004-06-17 Hitachi Global Storage Technologies Netherlands Bv データ記憶装置及びバッファメモリの管理方法
US7219333B2 (en) * 2002-11-22 2007-05-15 Texas Instruments Incorporated Maintaining coherent synchronization between data streams on detection of overflow
JP4417807B2 (ja) * 2004-08-25 2010-02-17 株式会社東芝 エラスティックバッファ
JP4439384B2 (ja) * 2004-12-03 2010-03-24 株式会社ソニー・コンピュータエンタテインメント バッファリング装置およびメモリ装置の利用方法
JP4439385B2 (ja) * 2004-12-03 2010-03-24 株式会社ソニー・コンピュータエンタテインメント バッファリング装置およびバッファリング方法
US11076143B1 (en) * 2016-12-12 2021-07-27 Facebook Technologies, Llc In-band tear detection with compression
US11762725B2 (en) * 2020-04-13 2023-09-19 Red Hat, Inc. Detecting and managing losses of event datasets in a computing network
CN113377580B (zh) * 2021-06-28 2023-06-02 中国西安卫星测控中心 一种地基遥测数据帧计数溢出修复和误码检测修复方法
EP4177755B1 (de) * 2021-11-05 2024-07-17 Fresenius Medical Care Deutschland GmbH Vorrichtung und verfahren zur speicherung von echtzeitdaten einer medizinischen behandlung

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4692893A (en) 1984-12-24 1987-09-08 International Business Machines Corp. Buffer system using parity checking of address counter bit for detection of read/write failures
JPH01129635A (ja) * 1987-11-16 1989-05-22 Nec Corp 受信fifo制御回路
US5208810A (en) * 1990-10-10 1993-05-04 Seiko Corp. Method of data flow control
JP2703417B2 (ja) * 1991-04-05 1998-01-26 富士通株式会社 受信バッファ
JPH052867A (ja) * 1991-06-27 1993-01-08 Fujitsu Ltd オーバフロー・アンダーフロー検出回路
US5469545A (en) * 1991-10-03 1995-11-21 Compaq Computer Corp. Expandable communication system with data flow control
US5581705A (en) * 1993-12-13 1996-12-03 Cray Research, Inc. Messaging facility with hardware tail pointer and software implemented head pointer message queue for distributed memory massively parallel processing system
US5732286A (en) * 1995-08-10 1998-03-24 Cirrus Logic, Inc. FIFO based receive packet throttle for receiving long strings of short data packets
US5721830A (en) * 1995-09-12 1998-02-24 Pc-Tel, Inc. Host signal processing communication system that compensates for missed execution of signal maintenance procedures
US5898893A (en) * 1995-10-10 1999-04-27 Xilinx, Inc. Fifo memory system and method for controlling
US5884099A (en) * 1996-05-31 1999-03-16 Sun Microsystems, Inc. Control circuit for a buffer memory to transfer data between systems operating at different speeds
US6091705A (en) * 1996-12-20 2000-07-18 Sebring Systems, Inc. Method and apparatus for a fault tolerant, software transparent and high data integrity extension to a backplane bus or interconnect
US5978868A (en) * 1997-08-28 1999-11-02 Cypress Semiconductor Corp. System for generating buffer status flags by comparing read and write pointers and determining direction of progression of read pointer with respect to write pointer
JPH11122308A (ja) * 1997-10-09 1999-04-30 Nec Eng Ltd オーバーフロー及びアンダーフロー検出回路
US6233675B1 (en) * 1999-03-25 2001-05-15 Rise Technology Company Facility to allow fast execution of and, or, and test instructions

Also Published As

Publication number Publication date
US6408409B1 (en) 2002-06-18
JP2003530735A (ja) 2003-10-14
WO2001037076A2 (en) 2001-05-25
EP1264234B1 (en) 2006-01-11
EP1264234A2 (en) 2002-12-11
AU3269501A (en) 2001-05-30
DE60025537D1 (de) 2006-04-06
WO2001037076A3 (en) 2002-10-10

Similar Documents

Publication Publication Date Title
JP4664559B2 (ja) リングバッファフローエラーの検出のための方法および装置
KR100837802B1 (ko) 데이터 입출력 오류 검출 기능을 갖는 반도체 메모리 장치
US7020757B2 (en) Providing an arrangement of memory devices to enable high-speed data access
TWI430085B (zh) 具有分離循環冗餘碼訊框之有效率帶內可靠性技術的方法、積體電路與系統以及動態隨機存取記憶體裝置
US7480847B2 (en) Error correction code transformation technique
US8464145B2 (en) Serial interface devices, systems and methods
EP2141848A2 (en) Error detection in high speed asymmetric interfaces using dedicated interface lines
US20030097526A1 (en) High-speed first-in-first-out buffer
US10860518B2 (en) Integrated circuit system
US20050055489A1 (en) Bridge circuit for use in retiming in a semiconductor integrated circuit
KR950015189B1 (ko) 광폭의 선입선출버퍼(fifo)의 에러검출장치
US20230239256A1 (en) Wide Elastic Buffer
US6715111B2 (en) Method and apparatus for detecting strobe errors
US7383492B2 (en) First-in/first-out (FIFO) information protection and error detection method and apparatus
US5774482A (en) Apparatus and method for processing errors associated with data transfers in a computer
US11847344B2 (en) Base die, memory system, and semiconductor structure
US6996015B2 (en) First-in first-out memory system with single bit collision detection
US20230134961A1 (en) Base die, memory system, and semiconductor structure
CN117242441A (zh) 数据传输电路、芯片和终端
JPS61150181A (ja) フア−ストイン・フア−ストアウト方式レジスタの制御方式
JP2005174090A (ja) データ転送回路
Mahfoud et al. Self checking FIFO queue
JPH04264644A (ja) バッファ記憶装置の読出しエラー検出回路
JPH038040A (ja) 1ビット誤リ情報記憶装置
JPH02193429A (ja) 装置間通信方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070928

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100827

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100902

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20101118

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101124

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101213

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110107

R150 Certificate of patent or registration of utility model

Ref document number: 4664559

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140114

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term