JP2000148444A - 複数論理fifoシステム - Google Patents

複数論理fifoシステム

Info

Publication number
JP2000148444A
JP2000148444A JP30700799A JP30700799A JP2000148444A JP 2000148444 A JP2000148444 A JP 2000148444A JP 30700799 A JP30700799 A JP 30700799A JP 30700799 A JP30700799 A JP 30700799A JP 2000148444 A JP2000148444 A JP 2000148444A
Authority
JP
Japan
Prior art keywords
register
read
fifo
write
data
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.)
Pending
Application number
JP30700799A
Other languages
English (en)
Inventor
A Sherlock Derrick
デェリック・エー・シャーロック
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JP2000148444A publication Critical patent/JP2000148444A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • 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/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2205/00Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F2205/06Indexing scheme relating to groups G06F5/06 - G06F5/16
    • G06F2205/064Linked list, i.e. structure using pointers, e.g. allowing non-contiguous address segments in one logical buffer or dynamic buffer space allocation

Abstract

(57)【要約】 【課題】単一メモリ構造を複数の独立したFIFO間に
動的に割り振って記憶容量の無駄を回避する。 【解決手段】複数論理FIFOシステムは、単一メイン
レジスタファイルを使用して、各論理FIFOについて
連結リストデータ構造を形成する。書込みデータ語が論
理FIFOシステムの待ち行列に入れられる時、アクテ
ィブ書き込みポインタレジスタが選択され、該ポインタ
に応答してメインレジスタファイルで宛先レジスタが選
択され、データ語は宛先レジスタのペイロードフィール
ドにロードされる。空きレジスタアドレスは、アクティ
ブ書き込みポインタレジスタおよび宛先レジスタのリン
クフィールドにロードされる。論理FIFOからデータ
語を読み出す時、アクティブ読み出しポインタが選択さ
れ、該ポインタに応答してメインレジスタファイルで発
信元レジスタが選択される。ソースレジスタのペイロー
ドデータが出力され、リンクデータはアクティブ読み出
しポインタにロードされる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、FIFOバッフ
ァに関する。より具体的には、この発明は、複数の独立
した論理FIFOが単一メモリ構造を共用し、動作中に
必要に応じて単一メモリ構造の記憶容量が論理FIFO
のそれぞれの間に動的に割り振られることを特徴とする
バッファシステムに関する。
【0002】
【従来の技術】先入れ先出し、即ち「FIFO」バッフ
ァは、ソースシステムからの出力レートが宛先システム
への入力レートと必ずしも同じでないソースシステム−
宛先システム間データ転送においてよく使用される周知
の記憶手段である。
【0003】
【発明が解決しようとする課題】あるアプリケーション
においては、多数の独立したFIFOバッファを同時に
実現するのが望ましい。例えば、複数のデータストリー
ムを1つ以上のソースシステムから1つ以上の宛先シス
テムへと結合するとき、それぞれのデータストリームに
1つづつ、複数のFIFOバッファが必要である。しか
しながら、複数の独立したFIFOバッファを実現する
には冗長なハードウエアを必要とし、回路スペースはも
ちろんのこと、システムコストが増大することになるの
は明らかである。更に、すべての独立FIFOが同時に
一杯になる可能性は無いが、いずれかの瞬間にどのFI
FOが最大記憶容量を必要とするかを予測することが不
可能なアプリケーションにおいては、このような冗長な
ハードウエアによるソリューションは無駄となってしま
う。
【0004】従って、この発明の目的は、単一メモリ構
造を共用する複数の独立したFIFOバッファを提供
し、これによりハードウエアの冗長を回避することにあ
る。
【0005】この発明の更なる目的は、バッファリング
される独立したデータストリームの必要に従って、単一
メモリ構造の最大記憶容量を、システム稼働中に複数の
独立したFIFO間に動的に割り振ることができるよう
にすることにより、記憶容量の無駄を回避することにあ
る。
【0006】
【課題を解決するための手段】この発明は複数の側面を
有し、それぞれの側面は、上記の目的の達成に寄与する
ものである。
【0007】側面の1つにおいては、複数論理FIFO
システムは、単一のメインレジスタファイルを使用し
て、リンクデータに関連してペイロードデータを記憶
し、システムにおけるそれぞれの論理FIFOについて
1つの連結リスト・データ構造を形成する。書き込みポ
インタ・レジスタファイルは、それぞれの論理FIFO
について1つの書き込みポインタを記憶する。読み出し
ポインタ・レジスタファイルは、それぞれの論理FIF
Oについて1つの読み出しポインタを記憶する。空きレ
ジスタ識別部は、システム全体が一杯になっていない限
り、常に空きレジスタのアドレスを示す。空きレジスタ
アドレスは、メインレジスタファイル内の1つの空きレ
ジスタに対応する。
【0008】書き込みデータ語が論理FIFOの待ち行
列に入れられるとき、以下の動作が発生する。すなわ
ち、書き込みFIFO番号入力に応答して、書き込みポ
インタ・レジスタファイル内でアクティブ書き込みポイ
ンタ・レジスタが選択される。アクティブ書き込みポイ
ンタ・レジスタの内容に応答して、メインレジスタファ
イル内で宛先レジスタが選択される。書き込みデータ語
が、宛先レジスタのペイロード・データフィールドにロ
ードされる。空きレジスタアドレスが、アクティブポイ
ンタ・レジスタおよび宛先レジスタのリンク・データフ
ィールドの両方にロードされる。こうして、書き込みデ
ータ語が論理FIFOの待ち行列に入れられた後、それ
は、メインレジスタファイルの新たなレジスタに対する
ポインタに関連して、メインレジスタに記憶される。そ
の新たなレジスタは、その論理FIFOについて次のデ
ータ語を記憶するのに使用される。これを確実に行なう
ため、新たなレジスタのアドレスは、その論理FIFO
に対応する書き込みポインタ・レジスタにロードされて
いる。
【0009】読み出しデータ語が論理FIFOの待ち行
列から取り出されるとき、以下の動作が発生する。すな
わち、読み出しFIFO番号入力に応答して、読み出し
ポインタ・レジスタファイル内でアクティブ読み出しポ
インタ・レジスタが選択される。アクティブ読み出しポ
インタ・レジスタの内容に応答して、メインレジスタフ
ァイル内でソースレジスタが選択される。読み出しデー
タ語は、ソースレジスタのペイロード・データフィール
ドから読み出しデータ出力に転送される。ソースレジス
タのリンク・データフィールドの内容が、アクティブ読
み出しポインタ・レジスタにロードされる。こうして、
語が待ち行列から取り出された後、その論理FIFOに
対する読み出しポインタは、その論理FIFOの次のエ
ントリを指すよう更新されている。
【0010】他の側面においては、空きレジスタ識別部
は記憶セルアレイを含むことができ、その場合、アレイ
におけるそれぞれの記憶セルは、メインレジスタファイ
ル内のうちの1つのレジスタに対応する。それぞれの記
憶セルの状態は、メインレジスタファイルの対応するレ
ジスタが空いているかどうかを示すよう保持される。こ
こで、空きレジスタは、論理FIFOの1つについてペ
イロードデータを現在格納していない、および論理FI
FOの1つの待ち行列に入れられる次のエントリを記憶
するための予約もされていないレジスタを意味する。記
憶セルの状態を、入力語としてまとめて優先順位エンコ
ーダに提供することができる。優先順位エンコーダの出
力を、空きレジスタアドレスを示すのに使用することが
できる。
【0011】他の側面において、空きレジスタ識別部
を、従来型(通常)のFIFOバッファとして実現する
ことができる。このような実施例においては、従来型F
IFOバッファは、論理FIFOの待ち行列から読み出
しデータ語が取り出される度に、その内容の新たな要素
としてソースレジスタのアドレスを待ち行列に入れるよ
う動作する。また、従来型FIFOバッファは、書き込
みデータ語が論理FIFOの待ち行列に入れられる度
に、その内容の1要素を取り出すように動作する。この
ように、従来型FIFOバッファは、メインレジスタフ
ァイル内の空きレジスタのアドレスを記憶するのに使用
することができる。空きレジスタアドレスを、従来型F
IFOバッファの出力から得ることができる。
【0012】更に他の側面においては、空きレジスタ識
別部を、複数論理FIFOシステム内の追加論理FIF
Oバッファとして実現することもできる。このような実
施例においては、追加論理FIFOバッファは、読み出
しデータ語が論理FIFOから取り出される度に、その
内容の新たな要素としてソースレジスタのアドレスを待
ち行列に入れるよう動作する。また、追加論理FIFO
バッファは、書き込みデータ語が論理FIFOの待ち行
列に入れられる度に、その内容の1つの要素を取り出す
ように動作する。空きレジスタアドレスを、追加論理F
IFOバッファの出力から得ることができる。
【0013】この発明の複数論理FIFOバッファシス
テムの最大の利点は、メインレジスタファイルの総ペイ
ロード容量を、システム動作中に動的に論理FIFO間
で必要に応じて割り振る点にある。従って、メモリ空間
の無駄やハードウエアの重複も回避される。
【0014】
【発明の実施の形態】1.機能の概要 この発明に従う複数論理FIFOシステムは、様々な異
なる実施形態に適用可能である。しかし、ある機能の共
通性がそれぞれの実施形態に存在する。例えば、実施形
態のそれぞれにおいて、単一の書き込みデータポートお
よび単一の読み出しデータポートがあること、またペイ
ロードデータ語が、書き込みFIFO番号入力および読
み出しFIFO番号入力にそれぞれ印加されるFIFO
選択番号に従って、複数論理FIFOシステム内の特定
の論理FIFO待ち行列に入れられたり(エンキュ
ー)、そこから取り出されたり(デキュー)することで
ある。従って、この詳細な説明は、図1に示す複数論理
FIFOシステム100の書き込みおよび読み出しタイ
ミングの機能説明から始める。複数論理FIFOシステ
ム100の書き込みおよび読み出しタイミングは、以下
に詳細に説明する特定の実施形態のそれぞれについて包
括的なものである。しかし、複数論理FIFOシステム
100が、書き込みおよび読み出し処理の両方に使用さ
れる単一クロック入力で示される点に留意されたい。こ
の単一クロック入力の実施形態は、最初の説明を簡略化
する目的でこの部分で記述される。この発明に従う複数
論理FIFOシステムは、後に詳細に説明するように、
読み出しおよび書き込み処理用に別個のクロックを用い
ることもできる。
【0015】図2は、図1の複数論理FIFOシステム
の好ましい書き込みタイミングを示すタイミング図であ
る。データ語は、 1)データ語を書き込みデータバス104に呈示する、 2)書き込みFIFO番号バス106上に、そのデータ
語が書込まれるべき論理FIFOを識別する番号を呈示
する、 3)書き込みデータおよび書き込みFIFO番号が有効
である場合、書き込み許可信号108にパルスを印加す
る、を実行することにより、クロック102に同期し
て、バッファシステム100における複数論理FIFO
のうちの1つの待ち行列に入れられる。データ語は、図
2の200に示されるように、書き込みクロック102
の次の立ち上がりエッジで、選択された論理FIFOに
ロードされる。ロードされたばかりのデータ語が複数論
理FIFOシステム100の残りのペイロード容量を満
杯にしてしまう場合、データ語がロードされた直後に空
き無し(full)インジケータ(図1には図示せず)がア
サートされる(用語「ペイロード容量」の意味の詳細は
後述する)。
【0016】図3は、図1の複数論理FIFOシステム
の好ましい読み出しタイミングを示すタイミング図であ
る。データ語は、 1)読み出しFIFO番号バス112上に、そこからデ
ータ語が読み取られるべき論理FIFOを識別する番号
を示す、 2)読み出し許可信号116にパルスを印加する、を実
行することにより、クロック102に同期して、バッフ
ァシステム100における複数論理FIFOの1つの待
ち行列から取り出される。読み出し要求に応答したデー
タが、読み出しデータバス114上に現れる。図3の3
00に示されるように、読み出しデータ114は、立ち
上がりエッジ301が発生する前であっても有効にな
る。しかし、後に詳細を説明するが、立ち上がりエッジ
301の間の読み出し許可信号116のパルスは、読み
出されている特定の論理FIFOに対応する読み出しポ
インタを更新するのに必要である。読み出しポインタ
は、図3の302に示すように立ち上がりエッジで更新
される。その後すぐに、読み出しデータ114は、30
4に示すように無効となる。従って、読み出しデータ1
14は、立ち上がりエッジ301で消費されなければな
らない。読み出されたばかりのそのデータ語が、特定の
論理FIFOに残っていた唯一のデータ語であった場
合、読み出されたばかりのその特定の論理FIFOに対
応する空き有り(empty)インジケータ118(図1に
は図示せず)が、306の時点でアサートされる。
【0017】2.第1の実施例 図4は、この発明の第1の実施例に従う複数論理FIF
Oシステム400の詳細を示す。複数論理FIFOシス
テム400は、共通の読み出しおよび書き込みクロック
401(たとえば、ホストシステムの読み出しおよび書
き込み側が、同じクロック領域にあるアプリケーショ
ン)で動作する。複数論理FIFOシステム400にお
いては、読み出しおよび書き込みは同じクロックエッジ
で発生することができる。
【0018】構造 従来型FIFOバッファシステムでは、読み出しおよび
書き込みポインタはカウンタにより保持されていたが、
バッファシステム400では、読み出しおよび書き込み
ポインタはレジスタファイルに保持される。具体的に
は、読み出しポインタは、次の読み出しレジスタファイ
ル414に格納され、書き込みポインタは、次の書き込
みレジスタファイル416に格納される。第3のレジス
タファイルであるメインレジスタファイル418は、バ
ッファシステム400におけるすべての論理FIFOに
より共用される。さらに、レジスタファイル418内で
は、1つの論理FIFOに対応するデータを含むレジス
タを、他の論理FIFOに対応するデータを含むレジス
タから区別する必要が無い。かわりに、異なる論理FI
FOに対応するデータを、レジスタサイズの粒状度(gr
anularity)でファイル418に自由に交互配置するこ
とができる。これは、連結リスト記憶技術の手段により
達成することができ、これについては以下により詳細に
説明する。空きレジスタ識別部420は、レジスタファ
イル418内でどのレジスタが空いているかを把握する
のに使用される(空きレジスタ(free register)と
は、論理FIFOに対応するペイロードデータを現在含
んでおらず、また、論理FIFOへの次の書き込みの間
に使用するための予約もされていないレジスタであ
る)。
【0019】レジスタファイル418におけるそれぞれ
のレジスタは、図5に示されるように2つのフィールド
に情報を格納することができる。一例であるレジスタ5
00は、ペイロード・フィールド502およびリンク・
フィールド504を含む。ペイロード・フィールド50
2は、所与の論理FIFOの待ち行列に入れられたデー
タ語を格納する。リンク・フィールド504は、同じ論
理FIFOにおける次のデータ語の、レジスタファイル
418における位置のポインタを格納する。ペイロード
・フィールド502は、論理FIFOの待ち行列に入れ
られる個々のデータ語のサイズにより決定される、都合
の良い任意の幅であることができる。リンク・フィール
ド504の好ましい幅を説明するため、一時本題から離
れる。
【0020】本願において「ペイロード容量」は、レジ
スタファイル418に残っている、いずれかの瞬間に任
意の論理FIFOに新たなデータ語を格納するのに使用
することのできるレジスタ数と定義される。「次の書き
込み」レジスタファイル416に格納された書き込みポ
インタのそれぞれが、次に起こる書き込み処理につい
て、ファイル418の1つのレジスタを実際上予約する
ので、ファイル418には、常に未使用レジスタがそれ
ぞれの論理FIFOにつき1つ存在する。従って、最大
ペイロード容量は、レジスタファイル418の総記憶容
量からこのオーバーヘッドを引いたものに等しい。ある
実施形態においては、m個の論理FIFOを、n個のレ
ジスタの最大ペイロード容量でサポートするのが望まれ
る場合、レジスタファイル418は、(n+m)個のレ
ジスタを含む必要がある。よって、リンク・フィールド
504は、少なくともlog(n+m)のビット幅である
必要が生じる。リンク・フィールド504の適切な幅を
決定するため、量log(n+m)が整数では無ければこ
れを切り上げる必要がある。
【0021】本願において「デコード/ゲートブロッ
ク」および「レジスタファイル」という語は、実施形態
の様々な側面を説明するのに使用されるので、それらの
語を例をあげる形で説明するために図6および図7を示
す。図6を参照すると、一例であるデコード/ゲートブ
ロック600は、「logn:n」デコーダ602およ
び一連の2入力ANDゲート604を備える。ANDゲ
ート604のそれぞれの一方の入力は、デコーダ602
の出力の1つに結合される。ANDゲート604のそれ
ぞれの他方の入力は、ゲート制御される信号606に結
合される。この回路配列の結果、選択入力610により
決定される任意の所与の時に、デコード/ゲートブロッ
ク600の出力608のうちの1つのみがアクティブ状
態になる。出力608のどれがアクティブ状態にあるか
は、ゲート制御される信号606の状態に従う。
【0022】次に図7を参照すると、例としてあげたレ
ジスタファイル700は、n個のmビットのレジスタ配
列を備えており、それぞれのレジスタは、図に示される
ように、共通クロック信号701に接続されるクロック
入力を持つ。入力データバス704はmビット幅であ
り、アレイ702におけるのn個のレジスタのそれぞれ
のデータ入力に結合される。アレイ702におけるレジ
スタのmビットのデータ出力は、mビット幅n:1マル
チプレクサ706に結合される。出力データバス708
はmビット幅であり、出力選択バス710の状態による
決定に準じて、アレイ702におけるn個のレジスタの
うちの1つからの出力を反映する。新たなデータを入力
データバス704に印加し、目的レジスタの番号を入力
選択バス712に印加し、書き込み信号714にパルス
を印加することにより、その新たなデータをアレイ70
2におけるレジスタの任意の1つに、クロック701に
同期してロードすることができる。レジスタファイル4
14、416および418のそれぞれは、例としてあげ
たレジスタファイル700の設計に従って構成すること
もできる。
【0023】図8は、図4の空きレジスタ識別部420
の好ましい設計を示す。空きレジスタ識別部420は、
レジスタファイル418に含まれるn個のレジスタのそ
れぞれについて1つの記憶セルを含み、これは図中「空
きレジスタフラグ」とラベル付けされた記憶セルアレイ
802により表わされる。第1のデコード/ゲートブロ
ック804は、優先順位エンコーダ808の出力による
決定に準じて、アレイ802における記憶セルのうちの
1つのR入力に書き込み許可信号406をゲート制御す
る。第2のデコード/ゲートブロック806は、次の読
み出しレジスタファイル414の出力に結合されるバス
424の状態による決定に準じて、アレイ802におけ
る記憶セルのうちの1つのS入力に読み出し許可信号4
10をゲート制御する。アレイ802における任意の1
つの記憶セルのQ出力がアサートされたならば、レジス
タファイル418において対応するレジスタが空いてい
ると結論づけることができる。アレイ802におけるす
べての記憶セルからのQ出力は、従来型の優先順位エン
コーダ808に入力として送られる。優先順位エンコー
ダ808の出力は、ファイル418に少なくとも1つで
も空きレジスタが存在するときはいつでも、レジスタフ
ァイル418における1つの空きレジスタのアドレスを
示す(記憶セル802の状態による決定に準じて、ま
た、優先順位エンコーダ808についていかなる符号化
体系が選択されていようとも)。図4に示される空きレ
ジスタ識別部420の設計は、単一クロックで読み出し
および書き込みクロック処理を行なうアプリケーション
に適している。
【0024】動作 複数論理FIFOシステム400に対する理解をより深
める為に、次に動作上の例を説明する。8個の独立した
論理FIFOバッファ0〜7を単一レジスタファイル4
18を使用してサポートすることが望ましい場合を想定
する。読み出しポインタおよび書き込みポインタは、所
望の論理FIFOのそれぞれについて必要である。従っ
て、レジスタファイル414、416は、それぞれ8個
のレジスタを含まなければならない。
【0025】ポインタの初期化:初期化において、所与
の論理FIFOの読み出しおよび書き込みポインタは同
じ値を含む。従って、初期化の際、レジスタファイル4
16における8個のレジスタは、例えばそれぞれ値0〜
7でロードすることができる。レジスタファイル414
の対応する8個のレジスタは、同じ値0〜7でロードさ
れるべきである。これが行われると、論理FIFO
「0」に対応する読み出しおよび書き込みポインタは、
共にレジスタファイル418におけるレジスタ「0」を
指し示し、論理FIFO「1」に対応する読み出しおよ
び書き込みポインタは、共にレジスタファイル418に
おけるレジスタ「1」を指し示し、他も同様である。
【0026】空きレジスタ識別部の初期化:初期化にお
いて、レジスタファイル416に記憶されたばかりの初
期値に起因して、レジスタファイル418におけるレジ
スタ0〜7は、論理FIFO0〜7への最初の書き込み
が発生したときに使用するために「予約」されることに
なる。従って、初期化における他の必要条件は、記憶セ
ルアレイ802におけるの記憶セル0〜7を「リセッ
ト」することである。アレイ802における他の記憶セ
ルのすべては、レジスタファイル418におけるレジス
タ8〜(n−1)が空いていることを示すよう最初に
「セット」される。
【0027】待ち行列に入れる(ENQ)処理例:次
に、バッファシステム400が最初に行なう実際の処理
が、データ語を論理FIFO「0」の待ち行列に入れる
ことであると仮定する。これを達成するために、待ち行
列に入れられるべきデータ語が書き込みデータバス40
2に与えられ、番号「0」が書き込みFIFO番号バス
404に与えられ、書き込み許可信号406にパルスが
印加される。この結果、ファイル416の入力選択ポー
トおよび出力選択ポートは、いずれも書き込みFIFO
番号バス404に結合されているので、ファイル416
におけるレジスタ「0」が、入力および出力の両方につ
いて選択される。したがって、ファイル416における
レジスタ「0」の内容がレジスタファイル418の入力
選択ポートに与えられる。ファイル416におけるレジ
スタ「0」が「0」を含んでいたので、ファイル418
におけるレジスタ「0」が入力について選択される。一
方、優先順位エンコーダ808は、ファイル418にお
いて最も低い番号のついた空きレジスタを任意に選択す
る。従って空きレジスタ識別部420は、バス426上
に番号「8」(ファイル418における空きレジスタ
「8」のアドレスに対応する)を示す。
【0028】書き込み許可信号406にパルスが印加さ
れると、ファイル416および418の両方において動
きが起きる。すなわち、ファイル416においては、バ
ス426の内容がレジスタ「0」にロードされる。ファ
イル418においては、バス402および426の内容
がレジスタ「0」にロードされる。具体的には、バス4
02の内容が、ファイル418におけるレジスタ「0」
のペイロード・フィールドにロードされ、バス426の
内容が、ファイル418におけるレジスタ「0」のリン
ク・フィールドにロードされる。留意すべきは、バス4
26の内容が、ファイル416のレジスタ「0」および
ファイル418におけるレジスタ「0」のリンク・フィ
ールドの両方にロードされるということである。ファイ
ル416のレジスタ「0」に記憶された情報は、論理F
IFO「0」に関わる次のENQ処理のための書き込み
ポインタの役割を果たす。ファイル418におけるレジ
スタ「0」のリンクフィールドに記憶された情報は、後
にも詳細を説明する通り、論理FIFO「0」に関わる
次に起こるDEQ処理(待ち行列からの取り出し処理)
中に次の読み出しレジスタファイル414により使用さ
れる。
【0029】上述のパルスが書き込み許可信号406に
印加されると、空きレジスタ識別部420内でも動きが
起きる。すなわち、パルスが印加されるときに番号
「8」が優先順位エンコーダ808の出力に存在するの
で、デコード/ゲート804は、書き込みパルスをアレ
イ802における記憶セル「8」のR入力へと転送す
る。こうして、記憶セル「8」は、クロック401に同
期してリセットされる。この結果、ファイル418にお
けるレジスタ「8」がたった今予約されてもはや空きで
はないという事実が考慮され、優先順位エンコーダ80
8の出力には新たな出力が表れる。この事例における新
たな出力とは、「9」である。すると、バッファシステ
ム400に関わる次のENQ処理中に、新たなアドレス
を使用することができる。
【0030】さて、多くのENQおよびDEQ処理がバ
ッファシステム400における8個の論理FIFOのそ
れぞれについて達成されていると想定する。これらの事
象が発生したので、初期化条件はもはや存在しない。か
わりに、レジスタファイル418に存在するのは、8個
の連結リストから成るセットである。それぞれの連結リ
ストは、ファイル418内の関連する(しかし必ずしも
連続しているとは限らない)位置に格納された一連のデ
ータ語から構成される。それぞれの連結リストは1論理
FIFOバッファを表わし、リストにおけるそれぞれの
データ語は、そのリスト即ちその論理FIFOバッファ
の次のデータ語の位置のポインタを含むリンク・フィー
ルドに関連する。一番最近に所与の論理FIFOの待ち
行列に入れられたデータ語の場合、その論理FIFOへ
の次の書き込みで使用することのできる、ファイル41
8内の未使用であるが「予約された」レジスタへのポイ
ンタをリンク・フィールドが含む点に留意されたい。
【0031】更に説明を進める為に、ここで、例えば論
理FIFO番号「3」が関わるDEQ処理を上記に示し
た条件下で行なうと想定する。ファイル414における
レジスタのそれぞれは、対応する論理FIFOの次の取
り出しデータへのポインタを含む。論理FIFO「3」
のDEQ処理を始めるため、読み出しFIFO番号バス
408上に番号「3」が示される。これにより、レジス
タファイル414におけるレジスタ「3」が入出力の両
方について選択される。ファイル414におけるレジス
タ「3」が出力について選択されているので、その内容
はバス424を介してファイル418の出力選択ポート
に与えられる。この結果、ファイル418におけるレジ
スタが出力のために選択される(この場合、論理FIF
O「3」について次の取り出しデータを含むレジス
タ)。すなわち、その内容がファイル418の出力デー
タポートに現れる。従って、論理FIFO「3」上の読
み出し要求に応答するデータが、読み出しデータバス4
12に与えられる(図3の説明で、この読み出しデータ
は、読み出し許可信号410のパルスの間に発生するク
ロック401の立ち上がりエッジで消費されなければな
らなかったことに留意)。同時に、このペイロードデー
タが読み出しデータバス412上に現れると、それに関
連するリンク・フィールドのデータが、バス428を介
してファイル414の入力データポートに与えられる。
このリンク・フィールドのデータは、論理FIFO
「3」の次の位置(論理FIFOにおける次の取り出し
データ)へのポインタである。読み取り許可信号410
にパルスが印加されると、このリンク・フィールドの内
容が、ファイル414におけるレジスタ「3」にロード
される。こうして、次に番号「3」が読み出しFIFO
番号バス408に与えられる時に、この新しいポインタ
値が選択され、これにより論理FIFO「3」における
適切な次の取り出しデータが、ファイル418の出力デ
ータポートに現れる。
【0032】上述した初期化手順が、処理が開始する前
に実施される限りに、FIFOバッファシステム400
をこのように無限大に使用することができる。このよう
なシステムに見られる唯一の制約は、空の論理FIFO
について決して読み出しを実行しないこと、および構造
全体が一杯で空きがなければ、どの論理FIFOについ
ても決して書き込みを実行しないことである(空きの有
無を示すインジケータを実現する機構については後述す
る)。
【0033】3.第2の実施例 図9は、この発明の第2の実施例に従う複数論理FIF
Oシステム900の詳細を示す。複数論理FIFOシス
テム900において、書き込みクロック901は読み出
しクロック903と別個のものである(例えば、ホスト
システムの読み出しおよび書き込み側が異なるクロック
領域にあるアプリケーション)。複数論理FIFOシス
テム900と複数論理FIFOシステム400の間の唯
一の他の違いは、空きレジスタ識別部420が優先順位
エンコーダにより実現されていたのに対し、空きレジス
タ識別部920は、従来型のFIFOバッファとして実
現されている点である。FIFO920の出力は、バス
926に「次の書き込みアドレス」を供給する。FIF
O920の入力は、バス924を介してレジスタファイ
ル914の出力に結合される。FIFO920の許可入
力およびクロック入力は、以下の意味で入れ替わる。す
なわち、複数論理FIFOシステム900への書き込み
は、FIFO920からの読み出しとなる(これは、シ
ステム900への書き込み中にFIFO920の出力に
与えられたレジスタアドレスが、ファイル916におけ
る書き込みポインタ・レジスタの1つにロードされると
いう事実を反映したものである。このように、空きレジ
スタ識別部920が、以降そのアドレスを「空き」とし
て示すのはもはや適切でない)。複数論理FIFOシス
テム900から読み出すと、FIFO920への書き込
みが行われる(これは、FIFOシステム900から読
み出しが発生すると、その読み出しに関わったファイル
918におけるレジスタが、今度は「空き」となり、従
ってこのアドレスは以降、空きレジスタ識別部920に
よってバス926上に提示できるようになるという事実
を反映したものである)。FIFO920における記憶
場所は、ファイル418におけるレジスタのアドレスを
格納するのに充分な大きさのフィールド幅を持っていな
ければならず、FIFO920における記憶場所の数
は、少なくともファイル418の最大ペイロード容量に
対応するレジスタ数はなければならない。留意すべき
は、実現においては初期化時にファイル418における
レジスタが、それぞれの論理FIFOに対して1つ予約
されるので、この数はファイル418における総レジス
タ数よりも小さくなるという点である。FIFO920
は、初期化中に予約されるレジスタを除いた、ファイル
418におけるすべてのレジスタのアドレスを含むよう
初期化されなければならない。
【0034】4.第3の実施例 図10は、この発明の第3の実施例に従う複数論理FI
FOシステム1000の詳細を示す。複数論理FIFO
システム400と同様、複数論理FIFOシステム10
00は、共通の読み出し書き込みクロック1001で動
作する(例えば、ホストシステムの読み取りおよび書き
込み側が同じクロック領域にあるアプリケーション)。
しかし、複数論理FIFOシステム1000において
は、空きレジスタ識別部は、メインレジスタファイル1
018に格納される論理FIFOののうちの1つとして
実現される。従って、通常の(ペイロード)論理FIF
Oに対する読み出しおよび書き込みは、同じクロック上
で発生してはならない。空きレジスタ識別部を論理FI
FOとして達成するためには、図に示すようにマルチプ
レクサ1030、1032、1034およびORゲート
1040が必要である。
【0035】複数論理FIFOシステム1000への書
き込みが発生すると、書き込み許可信号1006に印加
されるパルスによって、マルチプレクサ1030〜10
34のそれぞれは、「High」入力を選択する。こう
して、書き込みFIFO番号バス1004は、ファイル
1016の選択入力へと結合される。すなわち、書き込
みデータバス1002は、ファイル1018の入力デー
タポートのペイロード・フィールドに結合され、ハード
ウェアに組み込まれた(またはプログラム可能な)番号
が、ファイル1014の選択入力に与えられる。この後
者の番号が、ファイル1014において、空きレジスタ
識別部FIFOに対応する読み出しポインタを選択す
る。こうして、論理FIFOシステム1000への書き
込みと同時に、空きレジスタ識別論理FIFOについて
読み出しが発生する(複数論理FIFOシステム900
の処理に類似する)。
【0036】複数論理FIFOシステム1000からの
読み出しが発生すると、読み出し許可信号1010に印
加されたパルスによって、マルチプレクサ1030〜1
034のそれぞれは、「Low」入力を選択する。こう
して、読み出しFIFO番号バス1008は、ファイル
1014の選択入力に結合される。一方、ファイル10
18の入力データポートのペイロード・フィールドが、
今度はファイル1014の出力データポートに結合さ
れ、ファイル1016の選択入力が、今度は空きレジス
タ識別論理FIFOに対応するハードウェアに組み込ま
れた番号に結合される。こうして、論理FIFOシステ
ム1000から読み出しが発生すると、空きレジスタ識
別論理FIFOへの書き込みが発生する(これもまた、
複数論理FIFOシステム900の処理に類似する)。
【0037】5.空き有り/無しインジケータ 上記に説明した3つの実施例のうちのどれを実現化にお
いて選択するかにより、適正な空き有り/無しインジケ
ータの設計が若干異なる。例えば、読み出しおよび書き
込みが共通クロックに同期するアプリケーション(例え
ば、複数論理FIFOシステム400および1000)
については、その複数論理FIFOシステムの空き有り
/無しインジケータの設計は、読み出しおよび書き込み
が、異なるクロックに同期するアプリケーション(例え
ば、複数論理FIFOシステム900)のものよりも単
純にすることができる。後者のアプリケーションの方が
一般的であるので、そちらを詳細に説明する。
【0038】図11および図12は、読み出しおよび書
き込みが、異なるクロックに同期する複数論理FIFO
システム(例えば、複数論理FIFOシステム900)
において、空き有り/無しインジケータをそれぞれ実現
するのに好ましい回路を示す。例えば、n個の論理FI
FOが、複数論理FIFOシステム900によってサポ
ートされる場合、2*(n+1)個のカウンタが必要と
なる。2n個のカウンタが、空き有りインジケータ(そ
れぞれの論理FIFOに1つの空き有りインジケータ)
を実現するのに必要であり、更に2つの追加カウンタ
が、空き無しインジケータ(複数論理FIFOシステム
全体に1つの空き無しインジケータ)を実現するのに必
要である。
【0039】図11の構成においては、書き込みカウン
タ0〜(n−1)のすべておよび読み出しカウンタ0〜
(n−1)のすべてが、同じ値に初期化される。その
後、バッファシステム900に関わるそれぞれの書き込
み処理が、デコード/ゲートブロック1102に、パル
スが書き込み許可信号906に印加される時の書き込み
FIFO番号バス904上の値による決定に準じて、書
き込みカウンタ0〜(n−1)のうちの1つをインクリ
メントさせる。同様に、バッファシステム900に関わ
るそれぞれの読み出し処理は、デコード/ゲートブロッ
ク1104に、読み出し許可信号910にパルスを印加
する時の読み出しFIFO番号バス908上の値による
決定に準じて、読み出しカウンタ0〜(n−1)のうち
の1つをインクリメントさせる。
【0040】空き有りインジケータは、読み出しクロッ
ク領域において可視でなければならない。従って、書き
込みカウンタ0〜(n−1)は、グレイコード(交番2
進コードともいう)カウンタのような単位距離コード
(Unit Distance Code)カウンタである。それらの出力
は、同期フリップフロップ0〜(n−1)に与えられな
ければならない。同期フリップフロップの出力は、図に
示すように「G−B変換器」0〜(n−1)により、グ
レイコードから2進(バイナリ)コードに変換されなけ
ればならない。これが終了すると、減算器0〜(n−
1)により、読み出しカウンタの出力を、書き込みカウ
ンタの同期され変換された出力から減算することができ
る。減算器は、カウンタの幅を法としたA−B減算を実
行する(A-Bsubtraction modulo the width of the cou
nters)。
【0041】1106〜1109のような比較器は、対
応する減算器の出力を適切なしきい値(定数)と比較
し、それぞれの論理FIFOについて1つの空きフラグ
を生成し、オプションとしてそれぞれの論理FIFOに
ついて1つの「ほぼ空き」フラグを生成する。
【0042】図12は、読み出しおよび書き込みが、異
なるクロックに同期する複数論理FIFOシステム(例
えば、複数論理FIFOシステム900)用の空き無し
インジケータを実現するのに好ましい回路を示す。書き
込みカウンタ1200および読み出しカウンタ1202
を1つづつしか必要としないものであるが、これは「空
きの有無」を個々の論理FIFOについてではなく、論
理FIFOシステム全体の状態について参照している為
である。システム900のいずれの論理FIFOへの書
き込みであっても、システム書き込みカウンタ1200
はインクリメントし、いずれの論理FIFO900から
の読み出しであっても、システム読み出しカウンタ12
02はインクリメントする。空き無しインジケータは、
書き込みクロックの領域において可視でなければならな
い。従って、読み出しカウンタ1202はグレイコード
カウンタである。その出力は、フリップフロップ120
4よって書き込みクロックに同期される。フリップフロ
ップ1204からの同期した出力は、その後変換器12
06により2進コードに変換される。最後に、減算器1
208が、書き込みカウンタ1200の値および読み出
しカウンタ1202の同期され変換された値との間の差
を判断する。差の値は、その後比較器1210〜121
4によりしきい定数と比較され、図に示すように様々な
異なるレベルの空き無しレベルの印を生成する。例え
ば、カウンタ1200、1202が同じ値を含むよう初
期化された場合、図12におけるしきい値「1」に適正
な値は、メインレジスタファイルの最高ペイロード容量
に対応する数である。しきい値「2」、「3」に適切な
値は、それぞれその数の3/4および1/2となる。そ
の他の適正な数を、アプリケーションに応じ、およびア
プリケーションにおいて関心の対象となる空き無しレベ
ルに応じ、しきい値について選択することができる。
【0043】図11および図12に示す構成はまた、読
み出しおよび書き込みが共通クロックに同期するシステ
ム(例えば、複数論理FIFOシステム400、100
0)においても変更することなく機能する。しかし、複
数論理FIFOシステム400や1000のように読み
出しおよび書き込みが共通クロックに同期する場合、空
き有りおよび空き無しインジケータをより簡略化するこ
とができる。空き有りインジケータを作るのに、それぞ
れの論理FIFOに単一のアップ/ダウン・カウンタを
使用することができる。同期技術は全く必要無い。
【0044】この発明を実施例に関連させて詳細にわた
って説明してきたが、記述した実施例はあくまで例とし
て提示したものであり、限定的なものでは無い。当該技
術分野の当業者には明らかであるが、特許請求の範囲に
規定される本発明の精神および範囲から離れること無
く、説明した実施例の形態および詳細に対して様々な変
更が可能である。
【0045】この発明は、以下の実施態様を含む。 (1)論理FIFOの待ち行列に入れる書き込みデータ
を受け取る書き込みデータ入力(104)と、どの論理
FIFOの待ち行列に書き込みデータを入れるべきかを
示す書き込みFIFO番号入力(106)と、論理FI
FOの待ち行列から取り出した読み出しデータを出力す
る読み出しデータ出力(114)と、どの論理FIFO
の待ち行列から読み出しデータを取り出すべきかを示す
読み出しFIFO番号入力(112)と、それぞれの論
理FIFOについて1つの連結リスト・データ構造を形
成するよう、リンクデータ(504)に関連してペイロ
ードデータ(502)を格納するメインレジスタファイ
ル(418)と、それぞれの論理FIFOについて1つ
の書き込みポインタを格納する書き込みポインタ・レジ
スタファイル(416)と、それぞれの論理FIFOに
ついて1つの読み出しポインタを格納する読み出しポイ
ンタ・レジスタファイル(414)と、前記メインレジ
スタファイル(418)におけるレジスタに対応する空
きレジスタアドレスを示す空きレジスタ識別部(42
0)と、データ経路および制御回路とを備えた複数論理
FIFOシステムであって、該データ経路および制御回
路が、書き込みデータの語が論理FIFOの待ち行列に
入れられるとき、前記書き込みFIFO番号入力に応答
して、アクティブ書き込みポインタ・レジスタが前記書
き込みポインタ・レジスタファイル内で選択され、該ア
クティブ書き込みポインタ・レジスタの内容に応答し
て、宛先レジスタが前記メインレジスタファイル内で選
択され、前記書き込みデータ入力に示された書き込みデ
ータの語が、前記宛先レジスタのペイロード・データフ
ィールドにロードされ、前記空きレジスタアドレスが、
前記アクティブ書き込みポインタ・レジスタおよび前記
宛先レジスタのリンク・データフィールドの両方にロー
ドされ、読み出しデータの語が、論理FIFOの待ち行
列から取り出されるとき、前記読み出しFIFO番号入
力に応答して、アクティブ読み出しポインタ・レジスタ
が前記読み出しポインタ・レジスタファイル内で選択さ
れ、該アクティブ読み出しポインタ・レジスタの内容に
応答して、ソースレジスタが前記メインレジスタファイ
ル内で選択され、前記読み出しデータの語が、前記ソー
スレジスタのペイロード・データフィールドから前記読
み出しデータ出力へと転送され、前記ソースレジスタの
リンクデータ・フィールドの内容が、前記アクティブ読
み出しポインタ・レジスタにロードされるよう構成され
た複数論理FIFOシステム(100)。
【0046】(2)空きレジスタ識別部(420)が、
アレイにおけるそれぞれの記憶セルが前記メインレジス
タファイルにおける1つのレジスタに対応する記憶セル
アレイ(802)と、前記メインレジスタファイル内の
対応するレジスタに関わる待ち行列に入れる処理および
待ち行列から取り出す処理にそれぞれ応答して、前記記
憶セルを個々にセット(806)およびリセット(80
4)する回路と、前記記憶セルの集まった状態に応答し
て、空きレジスタアドレスを生成する優先順位エンコー
ダ(808)と、を備える請求項1に記載の複数論理F
IFOシステム(100)。
【0047】(3)空きレジスタ識別部(420)が従
来型FIFOバッファ(920)を備え、該従来型FI
FOバッファ(920)が、論理FIFOの待ち行列か
ら読み出しデータの語が取り出される度に、前記ソース
レジスタのアドレスを、その内容の新たな要素として待
ち行列に入れるよう動作することができ、該従来型FI
FOバッファ(920)が、書き込みデータの語が論理
FIFOの待ち行列に入れられる度に、その内容の1要
素を待ち行列から取り出すよう動作することができ、前
記空きレジスタアドレスが、該従来型FIFOバッファ
(920)の出力から得られるようにした請求項1に記
載の複数論理FIFOシステム。
【0048】(4)空きレジスタ識別部(420)が、
複数論理FIFOシステム(1018)内に追加論理F
IFOバッファを備え、該追加論理FIFOバッファ
が、論理FIFOの待ち行列から読み出しデータの語が
取り出される度に、前記ソースレジスタのアドレスを、
その内容の新たな要素として待ち行列に入れるよう動作
することができ、該追加論理FIFOバッファが、書き
込みデータの語が論理FIFOの待ち行列に入れられる
度に、その内容の1要素を待ち行列から取り出すように
動作することができ、前記空きレジスタアドレスが、追
加論理FIFOバッファの出力から得られるようにした
請求項1に記載の複数論理FIFOシステム。
【0049】(5)メインレジスタファイル(418)
内の空きレジスタに対応する空きレジスタアドレス(4
26)を決定するステップと、書き込みFIFO番号
(404)に応答して書き込みポインタ・レジスタファ
イル(416)内でアクティブ書き込みポインタ・レジ
スタを選択するステップと、前記アクティブ書き込みポ
インタ・レジスタの内容に応答して前記メインレジスタ
ファイル(418)内で宛先レジスタを選択する(42
2)ステップと、書き込みデータの語(402)を前記
宛先レジスタのペイロード・データフィールド(50
2)にロードするステップと、前記空きレジスタアドレ
ス(426)を、前記宛先レジスタのリンク・データフ
ィールド(504)および前記アクティブ書き込みポイ
ンタ・レジスタにロードするステップと、を含む書き込
みデータの語(402)を論理FIFOの待ち行列に入
れる方法。
【0050】(6)前記空きレジスタアドレス(42
6)を決定するステップが、記憶セルアレイ(802)
を維持するステップであって、該アレイにおけるそれぞ
れの記憶セルが、前記メインレジスタファイル(41
8)の異なるレジスタに対応し、前記メインレジスタフ
ァイル(418)の対応するレジスタが空いているかど
うかを示すステップと、前記記憶セルアレイの出力を、
入力として優先順位エンコーダ(808)に与えるステ
ップとを含む請求項5に記載の方法。
【0051】(7)前記空きレジスタアドレス(42
6)を決定するステップが、従来型FIFOバッファ
(920)の待ち行列から1つの要素を取り出すステッ
プを含み、該従来型FIFOバッファが、前記メインレ
ジスタファイル(418)における空きレジスタのアド
レスを含むようにした請求項5に記載の方法。
【0052】(8)前記空きレジスタアドレス(42
6)を決定するステップが、前記メインレジスタファイ
ル(1018)内の追加論理FIFOバッファの待ち行
列から1つの要素を取り出すステップと含み、該追加論
理FIFOバッファが、前記メインレジスタファイル
(1018)内の空きレジスタのアドレスを含むように
した請求項5に記載の方法。
【0053】(9)読み出しFIFO番号(408)に
応答してアクティブ読み出しポインタ・レジスタを読み
出しポインタ・レジスタファイル内で選択するステップ
と、該アクティブ読み出しポインタ・レジスタの内容に
応答してソースレジスタをメインレジスタファイル(4
18)内で選択するステップと、読み出しデータ語を前
記ソースレジスタのペイロード・データフィールド(5
02)から得るステップと、前記ソースレジスタのリン
ク・データフィールド(504)の内容を前記アクティ
ブ読み出しポインタ・レジスタにロードするステップ
と、を含む論理FIFOの待ち行列からから読み出しデ
ータの語を取り出す方法。
【0054】
【発明の効果】単一メモリ構造の最大記憶容量を、シス
テム稼働中に複数の独立したFIFO間に動的に割り振
ることにより、記憶容量の無駄を回避することができ
る。
【図面の簡単な説明】
【図1】この発明の1実施例に基づく複数論理FIFO
システムの好ましい入力および出力を示す概略図。
【図2】図1の複数論理FIFOシステムの好ましい書
き込みタイミングを示すタイミング図。
【図3】図1の複数論理FIFOシステムの好ましい読
み出しタイミングを示すタイミング図。
【図4】この発明の第1の実施例に従う複数論理FIF
Oシステムの概略を示すブロック図。
【図5】図4のメインレジスタファイルのそれぞれのレ
ジスタに含まれる好ましいビットフィールドを示すブロ
ック図。
【図6】デコード/ゲート機能ブロックの一例の概略を
示すブロック図。
【図7】レジスタファイルの一例の概略を示すブロック
図。
【図8】図4の空きレジスタ識別部の好ましい設計を示
すブロック図。
【図9】この発明の第2の実施例に従う複数論理FIF
Oシステムの概略を示すブロック図。
【図10】この発明の第3の実施例に従う複数論理FI
FOシステムの概略を示すブロック図。
【図11】複数論理FIFOシステムにおける論理FI
FOに空き有りインジケータを実現するのに好ましい回
路を概略的に示すブロック図。
【図12】複数論理FIFOシステムに空き無しインジ
ケータを実現するのに好ましい回路を概略的に示すブロ
ック図。
【符号の説明】
100 複数論理FIFOシステム 104 書き込みデータ入力 106 書き込みFIFO番号入力 112 読み出しFIFO番号入力 114 読み出しデータ出力 414 読み出しポインタ・レジスタファイル 416 書き込みポインタ・レジスタファイル 418 メインレジスタファイル 420:空きレジスタ識別部 502:ペイロードデータ 504:リンクデータ

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】論理FIFOの待ち行列に入れる書き込み
    データを受け取る書き込みデータ入力と、 どの論理FIFOの待ち行列に書き込みデータを入れる
    べきかを示す書き込みFIFO番号入力と、 論理FIFOの待ち行列から取り出した読み出しデータ
    を出力する読み出しデータ出力と、 どの論理FIFOの待ち行列から読み出しデータを取り
    出すべきかを示す読み出しFIFO番号入力と、 それぞれの論理FIFOについて1つの連結リスト・デ
    ータ構造を形成するよう、リンクデータに関連してペイ
    ロードデータを格納するメインレジスタファイルと、 それぞれの論理FIFOについて1つの書き込みポイン
    タを格納する書き込みポインタ・レジスタファイルと、 それぞれの論理FIFOについて1つの読み出しポイン
    タを格納する読み出しポインタ・レジスタファイルと、 前記メインレジスタファイル内のレジスタに対応する空
    きレジスタアドレスを示す空きレジスタ識別部と、 データ経路および制御回路とを備えた複数論理FIFO
    システムであって、該データ経路および制御回路が、書
    き込みデータ語が論理FIFOの待ち行列に入れられる
    とき、前記書き込みFIFO番号入力に応答して、アク
    ティブ書き込みポインタ・レジスタが前記書き込みポイ
    ンタ・レジスタファイル内で選択され、該アクティブ書
    き込みポインタ・レジスタの内容に応答して、宛先レジ
    スタが前記メインレジスタファイル内で選択され、前記
    書き込みデータ入力に呈示された書き込みデータ語が、
    前記宛先レジスタのペイロード・データフィールドにロ
    ードされ、前記空きレジスタアドレスが、前記アクティ
    ブ書き込みポインタ・レジスタおよび前記宛先レジスタ
    のリンク・データフィールドの両方にロードされ、 読み出しデータ語が論理FIFOの待ち行列から取り出
    されるとき、前記読み出しFIFO番号入力に応答し
    て、アクティブ読み出しポインタ・レジスタが前記読み
    出しポインタ・レジスタファイル内で選択され、該アク
    ティブ読み出しポインタ・レジスタの内容に応答して、
    ソースレジスタが前記メインレジスタファイル内で選択
    され、読み出しデータ語が、前記ソースレジスタのペイ
    ロード・データフィールドから前記読み出しデータ出力
    へと転送され、前記ソースレジスタのリンクデータ・フ
    ィールドの内容が、前記アクティブ読み出しポインタ・
    レジスタにロードされるよう構成された複数論理FIF
    Oシステム。
JP30700799A 1998-10-30 1999-10-28 複数論理fifoシステム Pending JP2000148444A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US183705 1980-09-03
US09/183,705 US6269413B1 (en) 1998-10-30 1998-10-30 System with multiple dynamically-sized logical FIFOs sharing single memory and with read/write pointers independently selectable and simultaneously responsive to respective read/write FIFO selections

Publications (1)

Publication Number Publication Date
JP2000148444A true JP2000148444A (ja) 2000-05-30

Family

ID=22673985

Family Applications (1)

Application Number Title Priority Date Filing Date
JP30700799A Pending JP2000148444A (ja) 1998-10-30 1999-10-28 複数論理fifoシステム

Country Status (2)

Country Link
US (1) US6269413B1 (ja)
JP (1) JP2000148444A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100397502B1 (ko) * 2001-07-10 2003-09-13 엘지전자 주식회사 다중처리시스템의 프로세서 유닛간 동적 인터페이스 방법
CN113272796A (zh) * 2018-11-21 2021-08-17 圣巴诺瓦系统公司 可重配置的数据处理器的配置卸载

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6453365B1 (en) * 1998-02-11 2002-09-17 Globespanvirata, Inc. Direct memory access controller having decode circuit for compact instruction format
US6996820B1 (en) * 1999-04-05 2006-02-07 Cisco Technology, Inc. Efficient multiple priority list memory system
US20060034275A1 (en) 2000-05-03 2006-02-16 At&T Laboratories-Cambridge Ltd. Data transfer, synchronising applications, and low latency networks
US6370600B1 (en) * 1999-05-25 2002-04-09 Advanced Micro Devices, Inc. Staging buffer for translating clock domains when source clock frequency exceeds target clock frequency
US6434640B1 (en) 1999-05-25 2002-08-13 Advanced Micro Devices, Inc. Unload counter adjust logic for a receiver buffer
US6564271B2 (en) 1999-06-09 2003-05-13 Qlogic Corporation Method and apparatus for automatically transferring I/O blocks between a host system and a host adapter
US6546451B1 (en) * 1999-09-30 2003-04-08 Silicon Graphics, Inc. Method and apparatus for decoupling processor speed from memory subsystem speed in a node controller
US6622198B2 (en) * 2000-08-31 2003-09-16 United Memories, Inc. Look-ahead, wrap-around first-in, first-out integrated (FIFO) circuit device architecture
US6658525B1 (en) * 2000-09-28 2003-12-02 International Business Machines Corporation Concurrent access of an unsegmented buffer by writers and readers of the buffer
US6925506B1 (en) * 2000-09-29 2005-08-02 Cypress Semiconductor Corp. Architecture for implementing virtual multiqueue fifos
US6851000B2 (en) * 2000-10-03 2005-02-01 Broadcom Corporation Switch having flow control management
US6546461B1 (en) 2000-11-22 2003-04-08 Integrated Device Technology, Inc. Multi-port cache memory devices and FIFO memory devices having multi-port cache memory devices therein
US6492881B2 (en) * 2001-01-31 2002-12-10 Compaq Information Technologies Group, L.P. Single to differential logic level interface for computer systems
US7082071B2 (en) * 2001-08-23 2006-07-25 Integrated Device Technology, Inc. Integrated DDR/SDR flow control managers that support multiple queues and MUX, DEMUX and broadcast operating modes
US6795360B2 (en) 2001-08-23 2004-09-21 Integrated Device Technology, Inc. Fifo memory devices that support all four combinations of DDR or SDR write modes with DDR or SDR read modes
US6952791B2 (en) * 2001-12-03 2005-10-04 Broadcom Corporation Method and circuit for initializing a de-skewing buffer in a clock forwarded system
US7397768B1 (en) 2002-09-11 2008-07-08 Qlogic, Corporation Zone management in a multi-module fibre channel switch
US7319669B1 (en) 2002-11-22 2008-01-15 Qlogic, Corporation Method and system for controlling packet flow in networks
US7738496B1 (en) 2002-12-31 2010-06-15 Cypress Semiconductor Corporation Device that provides the functionality of dual-ported memory using single-ported memory for multiple clock domains
US7330927B1 (en) * 2003-05-07 2008-02-12 Avago Technologies General Ip (Singapore) Pte. Ltd. Apparatus and methodology for a pointer manager
US8447900B1 (en) 2003-06-12 2013-05-21 Marvell International Ltd. Adaptive multiple FIFO scheme
US7646767B2 (en) 2003-07-21 2010-01-12 Qlogic, Corporation Method and system for programmable data dependant network routing
US7120075B1 (en) 2003-08-18 2006-10-10 Integrated Device Technology, Inc. Multi-FIFO integrated circuit devices that support multi-queue operating modes with enhanced write path and read path queue switching
US7234101B1 (en) 2003-08-27 2007-06-19 Qlogic, Corporation Method and system for providing data integrity in storage systems
US7219263B1 (en) 2003-10-29 2007-05-15 Qlogic, Corporation Method and system for minimizing memory corruption
JP2005157444A (ja) * 2003-11-20 2005-06-16 Toshiba Corp Fifo制御回路
US7934057B1 (en) 2003-12-24 2011-04-26 Cypress Semiconductor Corporation Logic for implementing a dual clock domain read access with predictable timing for bi-directional inputs/outputs
US7042792B2 (en) * 2004-01-14 2006-05-09 Integrated Device Technology, Inc. Multi-port memory cells for use in FIFO applications that support data transfers between cache and supplemental memory arrays
US7930377B2 (en) 2004-04-23 2011-04-19 Qlogic, Corporation Method and system for using boot servers in networks
US7669190B2 (en) 2004-05-18 2010-02-23 Qlogic, Corporation Method and system for efficiently recording processor events in host bus adapters
US7200693B2 (en) * 2004-08-27 2007-04-03 Micron Technology, Inc. Memory system and method having unidirectional data buses
US7577772B2 (en) * 2004-09-08 2009-08-18 Qlogic, Corporation Method and system for optimizing DMA channel selection
US20060064531A1 (en) * 2004-09-23 2006-03-23 Alston Jerald K Method and system for optimizing data transfer in networks
US7676611B2 (en) * 2004-10-01 2010-03-09 Qlogic, Corporation Method and system for processing out of orders frames
US7380030B2 (en) 2004-10-01 2008-05-27 Qlogic, Corp. Method and system for using an in-line credit extender with a host bus adapter
US7398335B2 (en) * 2004-11-22 2008-07-08 Qlogic, Corporation Method and system for DMA optimization in host bus adapters
US7164425B2 (en) * 2004-12-21 2007-01-16 Qlogic Corporation Method and system for high speed network application
US7392437B2 (en) 2005-01-20 2008-06-24 Qlogic, Corporation Method and system for testing host bus adapters
US7209405B2 (en) * 2005-02-23 2007-04-24 Micron Technology, Inc. Memory device and method having multiple internal data buses and memory bank interleaving
US7231480B2 (en) * 2005-04-06 2007-06-12 Qlogic, Corporation Method and system for receiver detection in PCI-Express devices
US7281077B2 (en) * 2005-04-06 2007-10-09 Qlogic, Corporation Elastic buffer module for PCI express devices
US20060230052A1 (en) * 2005-04-12 2006-10-12 Parama Networks, Inc. Compact and hitlessly-resizable multi-channel queue
US7555577B2 (en) * 2005-05-13 2009-06-30 Texas Instruments Incorporated Data transfer apparatus with channel controller and transfer controller capable of slave and standalone operation
US20070028027A1 (en) * 2005-07-26 2007-02-01 Micron Technology, Inc. Memory device and method having separate write data and read data buses
US7797467B2 (en) 2005-11-01 2010-09-14 Lsi Corporation Systems for implementing SDRAM controllers, and buses adapted to include advanced high performance bus features
US7461195B1 (en) 2006-03-17 2008-12-02 Qlogic, Corporation Method and system for dynamically adjusting data transfer rates in PCI-express devices
US8145809B1 (en) 2007-03-09 2012-03-27 Cypress Semiconductor Corporation Busy detection logic for asynchronous communication port
JP2008293484A (ja) * 2007-04-27 2008-12-04 Panasonic Corp バッファメモリ共有装置
US20090086750A1 (en) * 2007-09-27 2009-04-02 Integrated Device Technology, Inc. Non-Random Access Rapid I/O Endpoint In A Multi-Processor System
US7945716B2 (en) * 2007-09-27 2011-05-17 Integrated Device Technology, Inc. Serial buffer supporting virtual queue to physical memory mapping
US8681526B2 (en) * 2008-07-02 2014-03-25 Cradle Ip, Llc Size and retry programmable multi-synchronous FIFO
US8832393B2 (en) 2012-04-18 2014-09-09 Lsi Corporation Alignment for multiple FIFO pointers
US9395924B2 (en) * 2013-01-22 2016-07-19 Seagate Technology Llc Management of and region selection for writes to non-volatile memory
JP6056576B2 (ja) * 2013-03-18 2017-01-11 富士通株式会社 割り込み要因を特定する方法及び装置
US10346381B2 (en) * 2013-11-14 2019-07-09 Facebook, Inc. Atomic update operations in a data storage system
US20150324136A1 (en) * 2014-05-07 2015-11-12 Lsi Corporation Storage system having fifo storage and reserved storage
CN104636087B (zh) * 2015-02-09 2018-06-26 华为技术有限公司 读取数据的控制方法和装置
KR102624808B1 (ko) 2016-07-13 2024-01-17 삼성전자주식회사 멀티 랭크로 구성된 메모리와 인터페이싱을 수행하는 인터페이스 회로

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4757440A (en) * 1984-04-02 1988-07-12 Unisys Corporation Pipelined data stack with access through-checking
US5133062A (en) * 1986-03-06 1992-07-21 Advanced Micro Devices, Inc. RAM buffer controller for providing simulated first-in-first-out (FIFO) buffers in a random access memory
US4949301A (en) * 1986-03-06 1990-08-14 Advanced Micro Devices, Inc. Improved pointer FIFO controller for converting a standard RAM into a simulated dual FIFO by controlling the RAM's address inputs
US5163046A (en) 1989-11-30 1992-11-10 At&T Bell Laboratories Dynamic window sizing in a data network
US5014265A (en) 1989-11-30 1991-05-07 At&T Bell Laboratories Method and apparatus for congestion control in a data network
US5247626A (en) * 1990-05-29 1993-09-21 Advanced Micro Devices, Inc. Fddi controller having flexible buffer management
US5210749A (en) * 1990-05-29 1993-05-11 Advanced Micro Devices, Inc. Configuration of srams as logical fifos for transmit and receive of packet data
US5136582A (en) * 1990-05-29 1992-08-04 Advanced Micro Devices, Inc. Memory management system and method for network controller
US5043981A (en) * 1990-05-29 1991-08-27 Advanced Micro Devices, Inc. Method of and system for transferring multiple priority queues into multiple logical FIFOs using a single physical FIFO
US5325487A (en) * 1990-08-14 1994-06-28 Integrated Device Technology, Inc. Shadow pipeline architecture in FIFO buffer
US5426639A (en) * 1991-11-29 1995-06-20 At&T Corp. Multiple virtual FIFO arrangement
US5444853A (en) * 1992-03-31 1995-08-22 Seiko Epson Corporation System and method for transferring data between a plurality of virtual FIFO's and a peripheral via a hardware FIFO and selectively updating control information associated with the virtual FIFO's
US5442390A (en) 1993-07-07 1995-08-15 Digital Equipment Corporation Video on demand with memory accessing and or like functions
US5414455A (en) 1993-07-07 1995-05-09 Digital Equipment Corporation Segmented video on demand system
CA2130064C (en) * 1993-10-27 1999-05-18 Cory A. Cherichetti Method and apparatus for transferring data between a host processor and a subsystem processor in a data processing system
US6049802A (en) * 1994-06-27 2000-04-11 Lockheed Martin Corporation System and method for generating a linked list in a computer memory
US5553061A (en) * 1994-06-27 1996-09-03 Loral Fairchild Corporation Packet processor having service priority and loss priority features
US5487061A (en) * 1994-06-27 1996-01-23 Loral Fairchild Corporation System and method for providing multiple loss and service priorities
US5687316A (en) * 1994-07-29 1997-11-11 International Business Machines Corporation Communication apparatus and methods having P-MAC, I-MAC engines and buffer bypass for simultaneously transmitting multimedia and packet data
US5521916A (en) * 1994-12-02 1996-05-28 At&T Corp. Implementation of selective pushout for space priorities in a shared memory asynchronous transfer mode switch
US5519701A (en) * 1995-03-29 1996-05-21 International Business Machines Corporation Architecture for high performance management of multiple circular FIFO storage means
US5604742A (en) * 1995-05-31 1997-02-18 International Business Machines Corporation Communications system and method for efficient management of bandwidth in a FDDI station
US5625625A (en) 1995-07-07 1997-04-29 Sun Microsystems, Inc. Method and apparatus for partitioning data load and unload functions within an interface system for use with an asynchronous transfer mode system
US5937205A (en) * 1995-12-06 1999-08-10 International Business Machines Corporation Dynamic queue prioritization by modifying priority value based on queue's level and serving less than a maximum number of requests per queue
US5850568A (en) * 1995-12-22 1998-12-15 Cypress Semiconductor Corporation Circuit having plurality of carry/sum adders having read count, write count, and offset inputs to generate an output flag in response to FIFO fullness
US6044225A (en) * 1996-03-13 2000-03-28 Diamond Multimedia Systems, Inc. Multiple parallel digital data stream channel controller
US5797043A (en) * 1996-03-13 1998-08-18 Diamond Multimedia Systems, Inc. System for managing the transfer of data between FIFOs within pool memory and peripherals being programmable with identifications of the FIFOs
US5987590A (en) * 1996-04-02 1999-11-16 Texas Instruments Incorporated PC circuits, systems and methods
US6081852A (en) * 1996-04-26 2000-06-27 Texas Instruments Incorporated Packet data transferring system for autonomously operating a DMA by autonomous boot mode select signal wherein the DMA is enabled to at least one program control list
US6006286A (en) * 1996-04-26 1999-12-21 Texas Instruments Incorporated System for controlling data packet transfers by associating plurality of data packet transfer control instructions in packet control list including plurality of related logical functions
SG77135A1 (en) * 1996-04-26 2000-12-19 Texas Instruments Inc Method and system for assigning a channel number to a received data packet
US5996032A (en) * 1996-04-30 1999-11-30 Texas Instruments Incorporated System for writing a plurality of data bits less than from the total number of bits in a data register using a single register write operation
JPH1040211A (ja) * 1996-04-30 1998-02-13 Texas Instr Inc <Ti> パケット化されたデータ通信インタフェース機器内での直接メモリアクセス優先順位を割り当てるための方法ならびにdmaチャンネル回路
US5974516A (en) * 1996-10-18 1999-10-26 Samsung Electronics Co., Ltd. Byte-writable two-dimensional FIFO buffer having storage locations with fields indicating storage location availability and data ordering
US6141744A (en) * 1997-03-24 2000-10-31 Texas Instruments Incorporated PC circuits, systems and methods
US5974483A (en) * 1997-05-21 1999-10-26 Microsoft Corporation Multiple transparent access to in put peripherals
US6137807A (en) * 1997-12-05 2000-10-24 Whittaker Corporation Dual bank queue memory and queue control system
US6188699B1 (en) * 1997-12-11 2001-02-13 Pmc-Sierra Ltd. Multi-channel encoder/decoder
US6134625A (en) * 1998-02-18 2000-10-17 Intel Corporation Method and apparatus for providing arbitration between multiple data streams
US6151644A (en) * 1998-04-17 2000-11-21 I-Cube, Inc. Dynamically configurable buffer for a computer network
US6178473B1 (en) * 1998-10-15 2001-01-23 Compaq Computer Corporation System for selectively incrementing a count number of an associated node only when the node is put in use in conjunction with a successful compare and swap operation

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100397502B1 (ko) * 2001-07-10 2003-09-13 엘지전자 주식회사 다중처리시스템의 프로세서 유닛간 동적 인터페이스 방법
CN113272796A (zh) * 2018-11-21 2021-08-17 圣巴诺瓦系统公司 可重配置的数据处理器的配置卸载
CN113272796B (zh) * 2018-11-21 2023-03-24 圣巴诺瓦系统公司 可重配置的数据处理器

Also Published As

Publication number Publication date
US6269413B1 (en) 2001-07-31

Similar Documents

Publication Publication Date Title
JP2000148444A (ja) 複数論理fifoシステム
US6304936B1 (en) One-to-many bus bridge using independently and simultaneously selectable logical FIFOS
US4888741A (en) Memory with cache register interface structure
US5596540A (en) Serial to parallel and parallel to serial architecture for a RAM based FIFO memory
US8861515B2 (en) Method and apparatus for shared multi-bank memory in a packet switching system
US5587953A (en) First-in-first-out buffer memory
US7925804B2 (en) FIFO device and method of storing data in FIFO buffer
US6430666B1 (en) Linked list memory and method therefor
US7327674B2 (en) Prefetching techniques for network interfaces
JPH037300B2 (ja)
US7870310B2 (en) Multiple counters to relieve flag restriction in a multi-queue first-in first-out memory system
EP1402340B1 (en) First-in, first-out memory system and method thereof
US7257687B2 (en) Synchronization of active flag and status bus flags in a multi-queue first-in first-out memory system
US20030056073A1 (en) Queue management method and system for a shared memory switch
US6640267B1 (en) Architecture for multi-queue storage element
US20050091465A1 (en) FIFO memory with single port memory modules for allowing simultaneous read and write operations
US7523232B2 (en) Mark/re-read and mark/re-write operations in a multi-queue first-in first-out memory system
EP1811370A2 (en) A first-in first-out (FIFO) memory architecture providing multiport functionality
WO2001042926A1 (en) Interface for a memory unit
KR20010089024A (ko) 중재 지연 내성의 분산형 입력 버퍼 스위치 시스템 및그를 이용한 입력 데이터 처리 방법
US8094819B1 (en) Method and apparatus for high agility cryptographic key manager
JP2628701B2 (ja) 優先順位付き情報パケット用交換装置
EP0789303A1 (en) Memory system and a data communication system
KR100358178B1 (ko) 공유메모리 스위치에서의 멀티캐스팅 장치 및 그 방법
JP2006510083A (ja) ハードウエアにおける構成可能なメモリ分割