JP5304421B2 - 追い越しモードを有するデータバッファ装置 - Google Patents

追い越しモードを有するデータバッファ装置 Download PDF

Info

Publication number
JP5304421B2
JP5304421B2 JP2009111987A JP2009111987A JP5304421B2 JP 5304421 B2 JP5304421 B2 JP 5304421B2 JP 2009111987 A JP2009111987 A JP 2009111987A JP 2009111987 A JP2009111987 A JP 2009111987A JP 5304421 B2 JP5304421 B2 JP 5304421B2
Authority
JP
Japan
Prior art keywords
data
input
buffer
priority
tag 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 - Fee Related
Application number
JP2009111987A
Other languages
English (en)
Other versions
JP2010262435A (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.)
Fujitsu Semiconductor Ltd
Original Assignee
Fujitsu Semiconductor Ltd
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 Fujitsu Semiconductor Ltd filed Critical Fujitsu Semiconductor Ltd
Priority to JP2009111987A priority Critical patent/JP5304421B2/ja
Priority to US12/768,473 priority patent/US8122169B2/en
Publication of JP2010262435A publication Critical patent/JP2010262435A/ja
Application granted granted Critical
Publication of JP5304421B2 publication Critical patent/JP5304421B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/405Coupling between buses using bus bridges where the bridge performs a synchronising function
    • G06F13/4059Coupling between buses using bus bridges where the bridge performs a synchronising function where the synchronisation uses buffers, e.g. for speed matching between buses

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)

Description

本発明は,追い越しモードを有するデータバッファ装置に関する。
データバッファ装置は,通信装置やコンピュータシステム装置などに広く設けられ,受信したデータを一次的に記憶し,適宜そのデータを出力する。データバッファ装置の一例としては,入力データを一次的に記憶し,入力した順番でデータを出力するFIFO(First-in First-out)バッファがある。
図1は,一般的なFIFOバッファの構成図である。図1(A)のFIFOバッファは,パケット形式のデータD1〜D5が入力され,その入力した順にバッファメモリ10内に一次的に記憶し,そして,記憶されたデータD1〜D5を,入力した順に出力する。
また,図1(B)のFIFOバッファは,入力されたデータD1〜D5を入力した順にバッファメモリ10内に一次的に記憶し,ただし,優先度の高いデータD3を先に出力し,それより優先度の低いデータD1,D2,D4,D5を出力する。優先度の高いデータD3を先に出力するためには,データD3の高い優先度という情報を何らかの方法で記憶しておき,出力時にデータD3を優先的に出力する回路が必要になる。
優先度の高いデータを先に出力できるようにするために,優先度に対応した複数のFIFOバッファを設けることが提案されている。例えば,特許文献1,2などである。
特開2003−364581号公報 特開2004−7530号公報
単一のFIFOバッファであれば入力データが入力順に記憶されているのでその順に出力すれば良い。しかし,優先度などに対応した複数のFIFOバッファを有する構成の場合,入力順に出力するというFIFOバッファ本来の機能を実現するためには,各FIFOバッファ内のデータ間の入力順を判別することが必要になる。そのような判定を行う回路構成またはソフトウエア構成は単純ではない。
そこで,本発明の目的は,データの入力順を判定できるデータバッファ装置を提供することにある。
データバッファ装置の側面は,
入力されるデータを記憶し,前記記憶されたデータをある順番で出力するデータバッファ装置において,
入力データ毎にタグ値を生成するタグ値生成ユニットと,
第1〜第nの優先度を有する第1〜第n優先度データをそれぞれ,その入力された順に,前記タグ値と共に記憶する第1〜第nのバッファユニットと,
前記第1〜第nのバッファユニット内のそれぞれ先頭の第1〜第n優先度データのいずれかを出力するデータ出力ユニットとを有し,
前記タグ値生成ユニットは,前記第jのバッファユニットと前記第1〜第j−1のバッファユニットとのそれぞれの間の入力順に対応する第jのタグ値を,j=2〜nについてそれぞれ生成し,前記第jのタグ値について,前記第jのバッファユニットに先入力データが入力されることに応答して,当該先入力データの次に入力する後入力データのタグ値を前記先入力データのタグ値から異ならせ,前記第1〜第j−1のバッファユニットに先入力データが入力されることに応答して,当該先入力データの次に入力する後入力データのタグ値を前記先入力データのタグ値と同じにし,
前記データ出力ユニットは,通常出力モードの場合に,前記第1〜第nのバッファユニットのそれぞれ先頭の前記第1〜第n優先度データのタグ値に応じて,前記第1〜第n優先度データのうち最先に入力されたデータを出力し,前記通常出力モード以外のモードの場合に,入力順にかかわらず,前記第1〜第nのバッファユニットのうちいずれかのバッファユニットのデータを出力する。
上記の側面によれば,複数のバッファユニット内のデータ間の入力順を簡単に判別することができる。
一般的なFIFOバッファの構成図である。 本実施の形態におけるデータバッファ装置の構成図である。 2つのバッファユニットを有するデータバッファ装置の構成と動作を示す図である。 2つのバッファユニットを有するデータバッファ装置の構成と動作を示す図である。 2つのバッファユニットを有するデータバッファ装置の構成と動作を示す図である。 3つのバッファユニットを有するデータバッファ装置の構成と動作を示す図である。 3つのバッファユニットを有するデータバッファ装置の構成と動作を示す図である。 3つのバッファユニットを有するデータバッファ装置の構成と動作を示す図である。 3つのバッファユニットを有するデータバッファ装置の構成と動作を示す図である。 3つのバッファユニットを有するデータバッファ装置の構成と動作を示す図である。 n個のバッファユニットを有するデータバッファ装置のタグ値を示す図である。 n個のバッファユニットを有するデータバッファ装置でのタグ値比較による出力データ選択方法を示す図である。 2つのバッファユニットを有するデータバッファ装置のハードウエア回路図である。 2つのバッファユニットを有するデータバッファ装置のハードウエア回路図である。 3つのバッファユニットを有するデータバッファ装置のハードウエア回路図である。 3つのバッファユニットを有するデータバッファ装置のハードウエア回路図である。 PCI Express規格でのリンク層/トランザクション層のデータバッファ装置の構成図である。 PCI Express規格に適用したデータバッファ装置の回路図である。 クレジット信号とモード信号との対応表を示す図である。 2つのバッファユニットを有するデータバッファ装置の入力部の制御を示すフローチャート図である。 2つのバッファユニットを有するデータバッファ装置の出力部の制御を示すフローチャート図である。 タグ比較のフローチャート図である。 3つのバッファユニットを有するデータバッファ装置の入力部の制御を示すフローチャート図である。 3つのバッファユニットを有するデータバッファ装置の出力部の制御を示すフローチャート図である。 データバッファ装置以外の例を示す図である。
[データバッファ回路の構成]
図2は,本実施の形態におけるデータバッファ装置の構成図である。データバッファ装置は,入力されるデータD1〜D12を優先度別にバッファユニットFIFOに記憶し,記憶されたデータをバッファユニット間で入力順に出力するか,または入力順にかかわらず特定のバッファユニットのデータを出力するか,または高優先度のデータが低優先度のデータを追い抜いて出力する。いずれかの出力モードが選択される。入力回路20は,入力されるデータD1〜D12のそれぞれのヘッダなどに含まれる優先度を判別し,それらのデータD1〜D12を,n種類の優先度に対応する第1〜第nのバッファユニットFIFO0〜FIFOn−1に,それぞれ入力順に記憶する。第1から第nが優先度の高い順になっている。
以下,第1〜第nのバッファユニットの引用符号をFIFO0〜FIFOn−1とする。つまり,引用符号のサフィックス番号(FIFO0〜FIFOn−1)は,名称番号(第1〜第n)とは,番号が−1されている。タグ値Tnについても同様である。図1の例はn=3の例でありn−1=2であるので,第3のバッファユニットはFIFO2になる。
図2では,n=3の例が示され,優先度の高い順に第1,第2,第3のバッファユニットFIFO0〜FIFO2が設けられている。第1のバッファユニットFIFO0が最も優先度の高い高優先データを記憶し,第2のバッファユニットFIFO1が次に優先度の高い中優先データを記憶し,第3のバッファユニットFIFO2が最も優先度が低い低優先データを記憶する。各バッファユニットFIFO0〜2は,それぞれ対応する優先度の入力データを入力順に記憶し入力順に出力するFirst-in First-outバッファである。
入力回路20は,入力データ毎にタグ値を生成するタグ値生成ユニットを内蔵する。このタグ値生成ユニットは,基準バッファであるバッファユニットFIFO2と,それより優先度が高い他のバッファユニットFIFO0,1とのそれぞれの間の入力順に対応するタグ値T2を生成し,それらのバッファユニットFIFO2,1,0内に入力データと共に記憶する。タグ値生成ユニットは,タグ値T2について,バッファユニットFIFO2に入力データが入力されることに応答して,次の入力データのタグ値T2を異なる値に変更し,バッファユニットFIFO0,1に入力データが入力されることに応答して,次の入力データのタグ値T2は変更しない。
さらに,タグ値生成ユニットは,基準バッファであるバッファユニットFIFO1と,それより優先度が高い他のバッファユニットFIFO0との間の入力順に対応するタグ値T1を生成し,バッファユニットFIFO1,0内に入力データと共に記憶する。この場合も,タグ値生成ユニットは,タグ値T1について,バッファユニットFIFO1に入力データが入力されることに応答して,次の入力データのタグ値T1を異なる値に変更し,バッファユニットFIFO0に入力データが入力されることに応答して,次の入力データのタグ値T1は変更しない。
一般化すると,タグ値生成ユニットは,第jのバッファユニット(基準バッファ)と第1〜第j−1のバッファユニットとのそれぞれの間の入力順に対応する第jのタグ値を,j=2〜nの場合についてそれぞれ生成する。さらに,タグ値生成ユニットは,第jのタグ値について,第jのバッファユニット(基準バッファ)に先入力データが入力されることに応答して,当該先入力データの次に入力する後入力データのタグ値を先入力データのタグ値から異ならせ,第1〜第j−1のバッファユニット(基準バッファよりも優先度が高いバッファ)に先入力データが入力されることに応答して,当該先入力データの次に入力する後入力データのタグ値を先入力データのタグ値と同じにする。以下に説明するn=2の例とn=3の例により,上記のタグ値が具体的に理解される。
入力回路20は,入力データD1〜D12,例えばパケット形式のデータ,のヘッダ情報からその優先度を判別し,さらに,上記のタグ値T1,T2を生成し,対応するバッファユニットFIFOに書き込む。すなわち,ライトイネーブル信号WE0,1,2をアサートすることにより,入力データDとタグ値T1,T2とをバッファユニットFIFO0〜2のうち対応するバッファユニットに書き込む。
各バッファユニットFIFO内には,一般的なFIFOバッファと同じ構成を有し,例えば,ライトポインタとリードポインタを管理する制御部を有し,入力データが最後尾のバッファに書き込まれるたびにライトポインタがインクリメントされ,同様に,先頭のバッファからデータが読み出され出力されるたびにリードポインタがインクリメントされる。
出力回路21は,通常出力モードでは,バッファユニットFIFO0,1,2の先頭のデータのタグ値T1,T2に基づいて入力順を判定し,最も先に入力されたデータから出力する。さらに,出力回路21は,通常出力モード以外のモードでは,入力順にかかわらず指定されたバッファユニットのデータを順に出力する。また,出力回路21は,追い越し出力モードでは,出力が停止されたバッファユニットのデータより高い優先度のバッファユニットのデータを,出力停止状態のバッファユニットのデータを追い越して出力する。出力が停止されたバッファユニットのデータより高い優先度のバッファユニットが複数ある場合は,それらのバッファユニット間ではタグ値に基づいて入力順にデータを出力する。出力回路21は,実際に出力したデータがいずれのバッファユニットかを示す出力結果信号23をFIFO制御回路22に出力する。そして,出力回路21は,通常出力モードに戻った後は,タグ値T1,T2に基づいて入力順を判定し入力順に出力する。タグ値の比較を利用することで,入力順を簡単に判定することができる。
FIFO制御回路22は,各バッファユニットFIFOに対してリードイネーブル信号RE0,1,2をアサートして,それらのバッファユニットからデータを出力させる。そして,出力結果信号23に基づいて,出力されたバッファユニットのリードポインタの更新を制御する。FIFO制御回路22は,入力回路20に代わって,各バッファユニットFIFOに対してライトイネーブル信号WE0,1,2をアサートしてもよい。
出力回路21は,モード信号MODE1,2,3を供給され,モード信号に対応して前述の通常出力モードか通常出力モード以外のモードか追い越し動作モードかの何れかで出力データを選択し出力する。モード信号については,後に具体例で詳述する。
データ出力ユニットである出力回路は,一般化して言えば,通常出力モードの場合に,第1〜第nのバッファユニットのそれぞれ先頭の第1〜第n優先度データのタグ値に応じて,第1〜第n優先度データのうち最先に入力されたデータを出力し,通常出力モード以外のモードでは,指定されたバッファユニットのデータを順に出力し,追い越し出力モードの場合に,優先度の高いデータを入力順が遅くても優先度の低いデータより先に出力することを許可する。
[2つのバッファユニットを有するデータバッファの例]
図3,図4,図5は,2つのバッファユニットを有するデータバッファ装置の構成と動作を示す図である。図3は通常出力モードを,図4は追い越し出力モードを,図5は追い越し出力モード後の通常出力モードをそれぞれ示す。これらは,n=2の例であり,よって,バッファユニットは高い優先度のFIFO0と低い優先度のFIFO1が設けられる。また,タグ値Tn−1〜T1は,n=2でありT1のみの1種類である。以下では簡単のためにタグ値Tとした。
図3に示されるとおり,入力データDinとしてデータD1〜D9が順番に入力し,それぞれの優先度が図示されるとおりとする。一方,高優先のバッファユニットFIFO0には,高優先のデータD1,D3,D4,D6が入力順に記憶され,低優先のバッファユニットFIFO1には,低優先のデータD2,D5,D7,D8が入力順に記憶される。
図3には,入力回路内のタグ値生成方法30に示されている。タグ値Tは,基準バッファである低優先バッファユニットFIFO1に対して生成される。つまり,基準バッファである低優先バッファユニットFIFO1にデータが入力するたびにタグ値Tは+1され,次の入力データのタグ値として与えられる。言い換えれば,タグ値は,基準バッファである低優先バッファユニットFIFO1にデータが入力することに応答して,異なる値に変更され,その次に入力するデータのタグ値となる。異なる値になれば良いのでタグ値Tが−1されてもよい。また,基準バッファ以外の他のバッファである高優先バッファユニットFIFO0にデータが入力した時は,同じ値に維持される。
このタグ値生成方法によれば,図3の入力データD1〜D9の例では,データD1,D2のタグ値はT=0,データD2が低優先バッファユニットFIFO1に入力したので,タグ値はT=1となり次のデータD3のタグ値として与えられる。その結果,データD3,D4,D5にはタグ値T=1が与えられる。さらに,データD5が低優先度のデータであるので,次のデータD6にはタグ値T=2が与えられる。同様に,データD7が低優先度のデータであるので,次のデータD8にはタグ値T=3が与えられ,データD8が低優先度のデータであるので,次のデータD9にはタグ値T=4が与えられる。
次に,図3には,出力回路内のタグ値に基づく出力データ選択方法32が示されている。バッファユニットFIFO0,1の先頭のデータのタグ値Tを比較し,不一致であれば,そのタグ値Tの基準バッファであるFIFO1のデータが選択され,一致であれば基準バッファであるFIFO1以外の他のバッファユニットFIFO0のデータが選択される。図3の例では,バッファユニットは2つしかないので,基準バッファであるFIFO1以外の他のバッファユニットは,FIFO0のみである。
上記の出力データ選択方法32によれば,出力データDoutは,データD1〜D8の入力順になる。つまり,入力されるデータをその優先度に対応して別々のバッファユニットFIFO0,1に記憶しても,タグ値を比較することで,どのバッファユニットの先頭データが最先に入力されたデータかを判別することができる。タグ値が一致するか不一致かの判断を行えば良いので,簡単なハードウエア回路で判別回路を構成することができるし,簡単なソフトウエア処理により判別することができる。以上が通常出力モードである。
図4には,低優先バッファユニットFIFO1が出力停止になった時の追い越し出力モードの動作が示されている。入力データD1〜D9は,図3と同じであり,タグ値生成方法30により図3と同じようにタグ値Tが生成され,2つのバッファユニットFIFO0,1に書き込まれている。そして,何らかの事情で低優先バッファユニットFIFO1が出力停止になっている。この場合は,出力停止になっている低優先バッファユニットFIFO1のデータを追い越して,それより優先度が高い高優先バッファユニットFIFO0のデータD1,D3,D4が順に出力データDoutとして出力される。したがって,出力回路は,出力データ選択方法40に基づいて,タグ値Tにかかわらず,出力停止しているバッファユニットFIFO1より優先度が高い他のバッファユニットFIFO0を選択し,入力順に出力データを選択する。図4の例では,バッファユニットFIFO0からデータD1,D3,D4が追い越して出力されている。
高優先バッファユニットFIFO0が出力停止になった場合は,低優先バッファユニットFIFO1のデータは高優先バッファユニットのデータを追い越すことは許されない。ただし,入力順が先であれば出力される。
図4の追い越し出力モード以外に,指定されたバッファユニットのデータの出力を許可するようにしても良い。たとえば,一方のバッファユニットFIFOの出力を停止し他方のバッファユニットFIFOの出力を許可するようにしても良い。
図5には,追い越し出力モード後の通常出力モードの動作が示されている。図4の追い越し出力モードでは,高優先バッファユニットFIFO0からデータD1,D3,D4が出力停止中の低優先バッファユニットFIFO1のデータD2を追い越して出力された。その結果,図5では,高優先バッファユニットFIFO0には,データD6,D9が記憶され,それらのタグ値TはT=2,4である。
通常出力モードの出力データ選択方法32により,2つのバッファユニットFIFO0,1の先頭のデータ間でタグ値Tが比較され,不一致なら基準バッファである低優先バッファユニットFIFO1のデータが選択され,一致なら基準バッファFIFO1以外のバッファユニットFIFO0のデータが選択される。その結果,データD2が選択され出力される。その次は,データD5とデータD6のタグ値Tが比較され,この場合も不一致であるので,低優先バッファユニット内のデータD2が選択される。その次は,データD7とデータD6のタグ値Tが比較され,この場合はT=2で一致するので高優先バッファユニット内のデータD6が選択される。
以上のように,追い越し出力モードから通常出力モードに復帰した後でも,バッファユニットの先頭のデータのタグ値を比較することで,そのデータが最先に入力したかを容易に検出することができる。同様に,通常出力モード以外のモードから通常出力モードに復帰した後も同様に入力順に出力することができる。したがって,任意のタイミングで通常出力モードと追い越し出力モードまたは通常以外のモードとを切り替えることが可能である。
図2〜図5の例に示されるように,各バッファユニットFIFOの段数が4段の場合は,タグ値はこれら4段の区別とさらに入力されるデータの区別とが可能であればよい。つまり5種類のタグ値を順次変更しながら生成すれば良い。上記の例のように,タグ値Tを0から+1する場合は,タグ値Tは,0,1,2,3,4を順次サイクリックに生成すればよい。タグ値Tは4から−1しても良いし,0から10まで+2してもよい。
上記の2つのバッファユニットのうち高優先バッファユニットを基準バッファとしてタグ値を設定してもよい。その場合は,高優先バッファユニットにデータが入力されるたびにタグ値は変更され,次のデータのタグ値に与えられる。
[3つのバッファユニットを有するデータバッファの例]
図6〜図10は,3つのバッファユニットを有するデータバッファ装置の構成と動作を示す図である。図6は通常出力モードを,図7〜図9は追い越し出力モードを,図10は追い越し出力モード後の通常出力モードをそれぞれ示す。これらは,n=3の例であり,よって,バッファユニットは高優先度のFIFO0と中優先度のFIFO1と低優先度のFIFO2が設けられる。また,タグ値Tn−1〜T1は,n=3であるので,基準バッファがバッファユニットFIFO2の場合のタグ値T2と,バッファユニットFIFO1の場合のタグ値T1の2種類である。
図6は通常出力モードの動作を示している。図6において,入力データDinとしてデータD1〜D12が入力され,それらの優先度(高,中,低)が図示されるとおりとする。図示しない入力回路は,タグ値生成方法60に示されるとおり,それぞれのタグ値T2,T1について,基準バッファである低い優先度のバッファユニットFIFO2,FIFO1に入力データが入力するたびに,それらに対応するタグ値T2,T1を+1だけ変更する。タグ値T2は,低優先バッファユニットFIFO2を基準バッファとした場合,他のより高い優先度のバッファユニットFIFO1,0との入力順を規定するものであり,入力データが基準バッファFIFO2に入力されると,タグ値T2を+1してその次の入力データのタグ値T2とする。同様に,タグ値T1は,中優先バッファユニットFIFO1を基準バッファとした場合,他のより高い優先度のバッファユニットFIFO0との入力順を規定するものであり,入力データが基準バッファFIFO1に入力されると,タグ値T1を+1してその次の入力データのタグ値T1とする。したがって,タグ値T1は,バッファユニットFIFO0,1のデータに与えられ,バッファユニットFIFO2のデータには与えられない。
図6の例では,タグ値T2については,データD2,D7,D8,D10が低優先であるので,それらの次のデータD3,D8,D9,D11のタグ値T2はそれぞれ+1されている。同様に,タグ値T1については,データD3,D4,D9が中優先であるので,それらの次のデータD4,D5,D11のタグ値T1はそれぞれ+1されている。なお,データD9の次のデータD10は低優先であるので,タグ値T1には関係しないので,その次のデータD11のタグ値T1が+1されている。
通常出力モードでは,図示しない出力回路は,タグ値に基づく出力データ選択方法62により,各バッファユニットの先頭のそれぞれのタグ値T2,T1を比較して,どのデータが最先に入力されたかを判定する。すなわち,出力回路は,タグ値T2について,その基準バッファである低優先バッファユニットFIFO2の先頭のタグ値T2と,それより高い優先度のバッファユニットFIFO1,FIFO0の先頭のタグ値T2とを比較し,全て不一致であれば基準バッファのデータが最先の入力順であると判断し,1つでも一致していれば高い優先度のバッファユニットFIFO1,FIFO0のいずれかのデータが最先の入力順であると判断する。
したがって,タグ値T2が全て不一致の場合はタグ値の比較は終了するが,1つでも一致する場合は,さらに,タグ値T1について,その基準バッファである中優先バッファユニットFIFO1の先頭のタグ値T1と,それより高い優先度のバッファユニットFIFO0の先頭のタグ値T1とを比較する。そして,不一致なら基準バッファFIFO1の先頭のデータが最先の入力順であり,一致なら高優先バッファユニットFIFO0の先頭のデータが最先の入力順であると判断する。
上記の出力データ選択方法62によれば,図6の入力データD1〜D12の場合は,まず,データD2のタグ値T2とD3,D1のタグ値T2とを比較し,全て不一致ではないので(データD2とD1はT2が一致),次に,データD3のタグ値T1とデータD1のタグ値T1とを比較し,一致であるのでデータD1が最先であることが判明する。よって,高優先バッファFIFO0からデータD1が出力される。
次に,データD2のタグ値T2とD3,D5のタグ値T2とを比較し,全て不一致であるので,データD2が最先であると判明し,低優先バッファFIFO2からデータD2が出力される。さらに,次に,データD7のタグ値T2とD3,D5のタグ値T2とを比較し,全て不一致ではないので(全て一致),次に,データD3のタグ値T1とデータD5のタグ値T1とを比較し,不一致であるのでデータD3が最先であることが判明する。よって,中優先バッファFIFO1からデータD3が出力される。以下,同様にして,3つのバッファユニット内のデータがタグ値の比較により入力順に出力される。したがって,3つバッファユニット全体で単一のFIFOと同じ機能を有することになる。
図7は,中優先と低優先バッファユニットFIFO1,2の出力が停止した場合の追い越し出力モードを示している。図6と同様の入力データDinであり,図6と同様にそれらのデータが3つのバッファユニットFIFO0,1,2に格納される。そして,何らかの理由により中優先と低優先のバッファユニットFIFO1,2の出力が停止している状態では,高優先のバッファユニットFIFO0のデータがそれより優先度が低いバッファユニットFIFO1,2のデータを追い越して出力される。つまり,出力データ選択方法72によれば,タグ値にかかわらず,唯一出力可能な高優先バッファユニットFIFO0のデータD1,D5,D6が出力される。
図8は,低優先バッファユニットFIFO2の出力停止時の追い越し出力モードを示している。図6と同様の入力データDinであり,図6と同様にそれらのデータが3つのバッファユニットFIFO0,1,2に格納される。そして,低優先のバッファユニットFIFO2が出力停止状態では,高優先と中優先バッファユニットFIFO0,1のデータがそれより優先度が低いバッファユニットFIFO2のデータを追い越して出力される。ただし,高優先と中優先バッファユニットFIFO0,1のデータ間は,タグ値T1の比較により入力順に出力される。
タグ値比較による出力データ選択方法82によれば,出力回路は,高優先と中優先バッファユニットFIFO0,1のタグ値T1の比較を行い,不一致なら中優先バッファユニットFIFO1のデータを出力し,一致なら高優先バッファユニットFIFO0のデータを出力する。このタグ値T1の比較により,図8の例では,データD1,D3,D4,D5,D6,D9,D11,D12が順番に出力される。これにより,バッファユニットFIFO0,1内のデータが,出力停止中のバッファユニットFIFO2内のデータを追い越して出力される。
図9は,中優先バッファユニットFIFO1の出力停止時の追い越し出力モードを示している。図6と同様の入力データDinであり,図6と同様にそれらのデータが3つのバッファユニットFIFO0,1,2に格納される。
そして,出力データ選択方法92によれば,中優先のバッファユニットFIFO1が出力停止状態では,高優先と低優先バッファユニットFIFO0,2のデータがタグ値T2の比較により入力順に出力され,高優先バッファユニットFIFO0内のデータが出力停止中の中優先バッファユニットFIFO1のデータを追い越して出力される。ただし,低優先バッファユニットFIFO2内のデータは,出力停止中の中優先バッファユニットFIFO1のデータを追い越すことは禁止される。
図9の入力データDinの例の場合は,データD2,D1のタグ値T2の比較によりデータD1が最先入力順と判断されて出力され,データD2,D5のタグ値T2の比較によりデータD2が選択され出力される。その後も同様に,タグ値T2の比較により,データD5,D6が選択されて出力される。しかし,低優先バッファユニットFIFO2内のデータD7については,停止中の中優先バッファユニットFIFO1内のデータD3を追い越すことは禁止されているので,その後は,高優先バッファユニットFIFO0内のデータD11が選択され出力される。
この追い越し禁止の判断は,たとえば,次のようにして行うことができる。すなわち,低優先バッファユニットFIFO2内のデータD7のタグ値T2と中優先バッファユニットFIFO1内のデータD3のタグ値T2とを比較し,不一致ならデータD7の出力を許可し,一致ならデータD7はそもそも選択されない。したがって,低優先バッファユニットFIFO2を基準バッファとするタグ値T2の比較判定により,低優先バッファユニットFIFO2のデータが最先か否かの判定を行い,その判定結果に基づいて低優先バッファユニットFIFO2のデータ出力を許可する。ただし,出力停止中の中優先バッファユニットFIFO1のデータの出力は禁止するようにすればよい。
さらに,停止中のバッファユニットFIFO1を基準バッファとするタグ値T1の比較結果によらず,それより高い優先度のバッファユニットFIFO0のデータを選択するようにすればよい。
図10は,図7の追い越し出力モードから復帰した後の通常出力モードの動作を示している。図7の追い越し出力モードで高優先バッファユニットFIFO0内のデータD1,D5,D6が出力され,データD11のみが残っている。この状態から,タグ比較による出力データ選択方法62によれば,それぞれのタグ値T1,T2を比較し,全て不一致なら基準バッファの低い優先度のデータが選択され,1つでも一致なら基準バッファ以外の高い優先度のデータが選択される。図6で説明したとおりである。
その結果,図10の復帰後の通常出力モードの動作では,まず,データD2のタグ値T2とデータD2,D11のタグ値T2とが比較され,全て不一致であるので,基準バッファのデータD2が選択され出力される。次に,データD7のタグ値T2とデータD2,D11のタグ値T2とが比較され,一部一致するので,データD3のタグ値T1とデータD11のタグ値T1とが比較され,不一致であるのでデータD3が選択され出力される。以下同様にして,出力データDoutとして,データD4,D7,D8,D9,D10,D11,D12が順次出力される。
図8,図9の追い越し出力モードの後の通常出力モードも同様にして,タグ比較による出力データ選択方法62により最先の入力順のデータから出力することができる。
高優先バッファユニットが出力停止状態,または高優先と中優先バッファユニットが出力停止状態の場合は,それぞれ出力状態のより低い優先バッファユニットについて,出力停止状態のバッファユニットも含めてタグ比較を行い,最先であれば出力を許可し,最先でなければ出力されず,そして,出力停止状態のバッファユニットの出力を禁止することで,追い越し出力モードが可能になる。
上記の追い越し出力モード以外に,特定のバッファユニットのみからの出力を許可するようにしてもよい。この場合は,タグ比較による入力順に出力するという制御は行われない。その場合も,通常出力モードに復帰した後は,タグ比較により残っているデータを入力順に出力することができる。
[n個のバッファユニットを有するデータバッファ装置]
図11,n個のバッファユニットを有するデータバッファ装置のタグ値を示す図である。さらに,図12は,n個のバッファユニットを有するデータバッファ装置でのタグ値比較による出力データ選択方法を示す図である。
図11に示されるとおり,タグ値の付与は次のように行われる。まず,最高優先の第1のバッファユニットFIFO0から最低優先の第nのバッファユニットFIFOn−1までn個のバッファユニットが設けられている。数字が小さいほど優先度が高く,大きいほど優先度が低い。そして,第nのバッファユニットFIFOn−1を基準バッファとする第nのタグ値Tn−1は,第nのバッファユニットFIFOn−1内のデータが,それより優先度の高い他のバッファユニットFIFO0〜FIFOn−2内の全てのデータより先か否かを判断するためのタグ値である。したがって,第nのタグ値Tn−1は,FIFOn−1〜FIFO0のデータに付与される。
次に,第n−1のバッファユニットFIFOn−2を基準バッファとする第n−1のタグ値Tn−2は,第n−1のバッファユニットFIFOn−2内のデータが,それより優先度の高い他のバッファユニットFIFO0〜FIFOn−3内の全てのデータより先か否かを判断するためのタグ値である。したがって,第n−1のタグ値Tn−2は,FIFOn−2〜FIFO0のデータに付与される。
以下,タグ値Tn−3〜T1は,上記と同様の入力順を判断するためのタグ値であり,それぞれの基準バッファとそれより優先度が高いバッファのデータに付与される。最高優先バッファユニットFIFO0のためのタグ値は必要ない。
前述したとおり,このタグ値の生成方法によれば,基準のバッファユニットにデータが入力されるたびに,その基準バッファユニットに対応するタグ値を+1,または変更,させ,その次のデータにそのタグ値を与える。したがって,基準バッファユニットのタグ値と,それ以外のより高い優先度のバッファユニットのタグ値とを比較して,基準バッファユニットのタグ値が他のタグ値と全て不一致であれば,基準バッファユニットにデータが入力された後に,他のバッファユニットにデータが入力されたことは明らかであり,基準バッファユニットのデータが最先の入力データであることが確認できる。このような考え方に基づいて,タグ値比較による出力データの選択方法が決められている。
図12は,n個のバッファユニットを有するデータバッファ装置でのタグ値比較による出力データ選択方法を示す図である。タグ値の比較は,各バッファユニット内の先頭のデータのタグ値間の比較である。タグ値の比較は,最も優先度の低いバッファユニットFIFOn−1を基準バッファとするタグ値Tn−1から,タグ値T1まで順番に行われる。
工程Sn−1において,基準バッファFIFOn−1のタグ値Tn−1と,それより高い優先度のバッファFIFOn−2〜FIFO0のタグ値Tn−1とがそれぞれ比較される。そして,全てが不一致の場合は,基準バッファFIFOn−1のデータが最先と判断され,タグ値比較による出力データ選択工程は終了する。一方,いずれかが一致する場合は,基準バッファFIFOn−1のデータが最先ではないことが確定し,それ以外のバッファFIFOn−2〜FIFO0のいずれが最先かの判定が行われる。
工程Sn−2において,基準バッファFIFOn−2のタグ値Tn−2と,それより高い優先度のバッファFIFOn−3〜FIFO0のタグ値Tn−2とがそれぞれ比較される。そして,全てが不一致の場合は,基準バッファFIFOn−2のデータが最先と判断され,タグ値比較による出力データ選択工程は終了する。一方,いずれかが一致する場合は,基準バッファFIFOn−2のデータが最先ではないことが確定し,それ以外のバッファ内でのタグ値判定が行われる。
上記と同様の判定工程を基準バッファFIFO1のタグ値T1まで繰り返される。いずれかの判定工程で,タグ値が全て異なることが検出されると,判定工程は終了する。
上記のタグ値の判定は,タグ値が一致か不一致かの判定を行うことを基本工程としているので,簡単なハードウエア回路で実現することもできれば,簡単なプログラムによっても実現することができる。
上記とは異なり,基準バッファユニットを優先度が高いバッファユニットにし,その基準の優先度が高いバッファユニットにデータが入力されたときに,その後の入力データのタグ値を+1するようにしてもよい。その場合は,図11,図12において,バッファユニットFIFO0が最も優先度が低く,バッファユニットFIFOn−1が最も優先度が高くなる。そして,タグ値の比較処理は,図12と同様に行うことができる。また,追い越し出力モードにおいても,同様に行うことができる。
[2つのバッファユニットを有するデータバッファ装置のハードウエア回路]
図13は,2つのバッファユニットを有するデータバッファ装置のハードウエア回路図である。図2との関係で説明すると,図示しない入力回路20で入力データが優先度別に振り分けられ,高優先の入力データDin0が高優先バッファユニットFIFO0に書き込まれ,低優先の入力データDin1が低優先バッファユニットFIFO1に書き込まれる。識別子生成回路130は,図2の入力回路20内に含まれるものであるが,低優先バッファユニットFIFO1にデータが書き込まれるたびに生成される書き込みトリガ信号Wtrに応答して,識別子としてタグ値T1を変更する。つまり,この識別子T1は,低優先バッファユニットFIFO1を基準バッファとした時のタグ値T1である。そして,変更されたタグ値T1は,次の入力データと共にバッファユニットFIFO1,0に書き込まれる。
図2の出力回路21は,タグ値T1を比較する比較器131と,オアゲート132と,バッファFIFO0,1のいずれかのデータを選択するセレクタSEL1とを有する。通常出力モードでは,モード信号MODE1はLレベル(「0」)であり,オアゲート132の出力S1は,比較器131の比較結果になる。比較器131は,各バッファユニット内の先頭データのタグ値T1を比較し,不一致であれば0を,一致であれば1を出力する。比較器の出力はそのままセレクタSEL1の選択信号S1になる。よって,タグ値T1が不一致であればS1=0になり,セレクタSEL1は低優先バッファユニットFIFO1のデータを選択し,出力データDoutとして出力する。タグ値T1が一致であればS1=1になり,セレクタSEL1は高優先バッファユニットFIFO0のデータを選択し,出力データDoutとして出力する。
この時の選択信号S1は,FIFO制御回路22に供給され,選択信号S1によりFIFO制御回路22は,どちらのバッファユニットFIFOのデータが選択されたかを知らされ,それに基づいて,有効な出力データとして選択された側のバッファユニットにリードイネーブル信号RE0,RE1を介して通知する。これに応答して,そのバッファユニット内のリードポインタがインクリメントされ,適切にデータ出力処理が完了する。
一方,低優先バッファFIFO1が出力停止し追い越し出力モードになると,モード信号MODE1=1になる。これにより,オアゲート132の出力の選択信号S1は強制的に1になり,高優先バッファFIFO0内のデータが,タグ値にかかわらず,つまり比較器131の出力にかかわらず,セレクタSEL1で選択され出力データDoutとして出力される。
図14は,2つのバッファユニットを有するデータバッファ装置のハードウエア回路図である。図13と同様に,高優先バッファユニットFIFO0と,低優先バッファユニットFIFO1とが設けられ,図示しない入力回路20から高優先データDin0と低優先データDin1とが対応するバッファユニットFIFO0,1に記憶される。
図14の構成では,高優先データDin0と低優先データDin1とがそれぞれのライトイネーブル信号WE0,WE1と共にバッファユニットFIFO0,1に供給され,ライトイネーブル信号WE0,WE1に応答してバッファユニットがデータの書き込みを行う。さらに,ライトイネーブル信号WE1がカウンタ140にカウントアップイネーブル信号CEとして入力され,それに応答して,カウンタ140は,カウント値を+1インクリメントする。このカウンタ140のカウント値が識別子であるタグ値T1として,次に入力するデータと共にバッファユニットに書き込まれる。つまり,カウンタ140は,図13の識別子生成回路130に対応する。
図14の出力回路21は,図13と同様に,比較器131,オアゲート132,セレクタSEL1とを有し,モード信号MODE1が供給される。したがって,通常出力モードと,低優先バッファユニットFIFO1が停止状態の時の追い越し出力モードとは,図13と同じである。
しかし,図14の出力回路21は,さらに,選択信号S1とモード信号MODE0を入力するアンドゲート133と,アンドゲート133の出力信号S10に応答してセレクタSEL1の出力データを停止する高優先停止回路134とを有する。この構成を有することで,高優先バッファユニットFIFO0が出力停止状態では,モード信号MODE1=0,MODE0=1になる。これにより,タグ値T1の比較により比較器131が一致を検出して出力を1にすると,オアゲート132の出力S1も1になり,セレクタSEL1は高優先バッファFIFO0のデータを選択する。しかし,選択信号S1の1と,モード信号MODE0の1とにより,アンドゲート133の出力S10が1となり,高優先停止回路134がセレクタSEL1の出力の通過を禁止する。これにより,高優先バッファFIFO0内のデータが出力データDoutとして出力されることは禁止される。
一方,タグ値T1の比較により比較器131が不一致を検出して出力を0にすると,選択信号S1が0になり,セレクタSEL1は低優先バッファFIFO1のデータを選択する。このとき,アンドゲート133の出力S10は0になるので,高優先停止回路134はセレクタSEL1が選択したデータの通過を許可する。これにより,低優先バッファFIFO1内のデータであって,入力順が出力停止中の高優先バッファFIFO0内のデータより先のデータは出力されるが,後のデータはタグ値比較により出力されない。
基準バッファユニットを高優先バッファユニットFIFO0とするタグ値を生成する場合は,セレクタSEL1の選択信号S1に対する選択入力を,図13,14とは逆の関係にすればよい。別の言い方をすれば,バッファユニットFIFO0,1の優先度を逆にすればよい。
[3つのバッファユニットを有するデータバッファ装置のハードウエア回路]
図15は,3つのバッファユニットを有するデータバッファ装置のハードウエア回路図である。図15中,3つのバッファユニットFIFO0,1,2が設けられ,3つのバッファユニットにそれぞれ対応する優先度の入力データDin0,1,2が,タグ値T2,T1と共に記憶される。タグ値T2は3つのバッファユニットすべてに記憶され,タグ値T1は高優先と中優先のバッファユニットFIFO0,1だけに記憶される。
識別子生成回路150−2は,低優先バッファユニットFIFO2にデータが書き込まれるたびに,その書き込みトリガ信号Wtr2に応答して,識別子であるタグ値T2を変更する。同様に,識別子生成回路150−1は,中優先バッファユニットFIFO1にデータが書き込まれるたびに,その書き込みトリガ信号Wtr1に応答して,識別子であるタグ値T1を変更する。
出力回路21は,比較器151,152,アンドゲート153,オアゲート154,セレクタSEL1を有し,これらの回路によりタグ値T2の比較判定を行う。さらに,出力回路21は,比較器155,オアゲート156,セレクタSEL2とを有し,これらの回路によりタグ値T1の比較判定を行う。
さらに,出力回路21には,低優先バッファユニットFIFO2の出力停止を指示するモード信号MODE2と,中優先バッファユニットFIFO1の出力停止を指示するモード信号MODE1とが供給される。
まず,通常出力モードでは,モード信号MODE2=0,MODE1=0である。そして,比較器151,152がタグ値T2の比較を行い,いずれも不一致ならそれらの出力が0になり,アンドゲート153の両入力は1,その出力は0になり,選択信号S1は0になる。図中,入力端子,出力端子の○は反転を意味している。その結果,セレクタSEL1が低優先バッファFIFO2の出力を選択し,出力データDoutとして出力する。比較器151,152のいずれかが一致を検出すると,選択信号S1は1になり,セレクタSEL1は高優先または中優先バッファFIFO0,1を選択する。
さらに,比較器155がタグ値T1の比較を行い,不一致であれば出力が0になり選択信号S2は0になり,セレクタSEL2は中優先バッファFIFO1のデータを選択し,一致であれば出力が1になり選択信号S2は1になり,セレクタSEL2は高優先バッファFIFO0のデータを選択する。
次に,低優先バッファFIFO2だけが出力停止状態では,モード信号MODE2=1,MODE1=0である。よって,選択信号S1は1になり,比較器151,152の比較結果にかかわらず,セレクタSEL1は低優先バッファユニットFIFO2のデータを選択しない。中優先と高優先のデータ間でタグ値による順番管理が行われる。
さらに,低優先バッファユニットFIFO2と中優先バッファユニットFIFO1が出力停止状態では,モード信号MODE2=1,MODE1=1である。よって,選択信号S1は1になり,選択信号S2も1になり,セレクタSEL1,SEL2により高優先バッファユニットFIFO0のデータを選択する。
また,中優先バッファFIFO1だけが出力停止状態では,モード信号MODE2=0,MODE1=1である。よって,選択信号S1はタグ値T2の比較結果に従うことになり,セレクタSEL1は,低優先バッファFIFO2のデータが最先の時のみ低優先バッファFIFO2のデータを選択する。また,選択信号S2は強制的に1にされ,タグ値T1の比較結果にかかわらず,セレクタSEL2は高優先バッファFIFO0のデータを選択する。したがって,低優先のデータが最先ならそれが出力され,中優先,低優先,高優先または中優先,高優先,低優先の入力順なら中優先のデータはセレクタSEL2により出力が禁止され,高優先のデータが追い越して出力され,高優先のデータが最先ならそれが出力される。
FIFO制御回路22には,選択信号S1,S2が供給され,それらの信号に基づいてどのバッファユニットが選択されたかを検出し,対応するリードイネーブル信号RE0,1,2により,対応するバッファユニットに読み出しを通知し,リードポインタの更新を指示する。
図16は,3つのバッファユニットを有するデータバッファ装置のハードウエア回路図である。図15とは,3つのバッファユニットを有することと,出力回路21の構成などは同じである。ただし,図15の識別子生成回路150−2,150−1の代わりに,カウンタ160,161が設けられている。そして,図示しない入力回路から3種類の入力データDin0,Din1,Din2が,ライトイネーブル信号WE0,WE1,WE2と共に,対応するバッファユニットFIFO0,1,2に供給される。そして,カウンタ160は,ライトイネーブル信号WE0に応答してカウント値を+1インクリメントし,カウンタ161は,ライトイネーブル信号WE1に応答してカウント値を+1インクリメントする。これにより,前述したとおりタグ値T2,T1が生成される。出力回路21の構成は図15と同じであり,その動作も同じである。
図15,16のデータバッファ装置では,中優先バッファFIFO1が停止状態,高優先バッファFIFO0が停止状態に制御することはできない。しかし,以下に説明するデータバッファ装置ではそれらに制御することができる。
高優先バッファユニット側を基準バッファユニットにしてタグ値を設定する場合は,図15,図16において,バッファユニットFIFO0を低優先に,バッファユニットFIFO2を高優先に置き換えることで,同じ出力回路でタグ値の比較を行うことができる。
[PCI Express規格への適用例]
PCI Express規格では,パケットによるデータ転送を行い,Posted,Completion,Non Postedの3種類のパケットが存在する。リンク層/トランザクション層ではこれらの3種類のパケットをバッファリングし,転送可能な状態の時にバッファからパケットのデータを出力する。このバッファリングに,上記してきたデータバッファ装置を適用することができる。
バッファに入力されたパケットのデータは通常動作時では入力された順に転送されるが,転送先の状況に応じて転送不可状態が発生する。規格ではこの転送不可状態をブロッキングと称している。転送先がパケットのデータを受信できない場合に転送不可状態であることが転送先から通知され,データバッファはそれに対応する種類のパケットを出力停止しなければならない。つまり,転送不可状態を,上記3種類のパケット毎に管理することが規格上求められている。たとえば,Non Postedが転送不可状態になると,Non Postedのパケットは転送不可であるが,PostedとCompletionのパケットは転送可能である。さらに,PostedとCompletionのパケットは,転送不可状態のNon Postedのパケットを追い越して転送可能である。その後,Non Postedのパケットの転送不可状態が解除された後は,再度入力順に転送される。
上記の規格から理解できるとおり,Posted,Completion,Non Postedの3種類のパケットは,順番に高優先,中優先,低優先に対応つけることで,前述のデータバッファ装置を適用することができる。
図17は,PCI Express規格でのリンク層/トランザクション層のデータバッファ装置の構成図である。このデータバッファ装置は,図2のデータバッファ装置に類似している。まず,3つのバッファユニットFIFO0,FIFO1,FIFO2が,それぞれPosted,Completion,Non Postedのパケットデータのバッファユニットとして設けられている。優先度は,FIFO0,FIFO1,FIFO2の順に高,中,低である。そして,パケット形式の入力データDin0,Din1,Din2が入力し,入力回路20はそれらをPosted,Completion,Non Postedに分けて対応するバッファユニットに書き込む。さらに,入力回路20は,タグ値も生成し,対応するバッファユニットに書き込む。
出力回路21は,通常動作モードでは,3つのバッファユニット内のデータ間の入力順位をタグ値の比較により検出し,入力順に出力データDoutとして出力する。さらに,出力回路21には,転送先から,転送可能か不可能かを示すクレジット信号Posted-C,Completion-C,Non Posted-Cを供給される。たとえば,クレジット信号がクレジット有りを示す0なら転送可能,クレジットなしを示す1なら転送不能を意味する。そして,それらのクレジット信号が1の転送不能を示す場合に,対応するバッファユニットからのパケットのデータ転送を停止し,他のバッファユニットからのパケットのデータの転送を,入力順に基づいて行う。ただし,転送停止中のバッファユニット内のデータを追い越して転送されるのは,それより優先度が高いバッファユニット内のデータに限られる。
仮に,Non Postedのクレジット信号が転送不可状態になると,それより優先度の高いPosted, Completionのパケットの間でタグ値比較による順番管理が行われる。そして,Non Postedのクレジット信号が転送可能状態に変わり転送不可状態が解除されると,3つのバッファユニット間でタグ値比較による順番管理が行われる。
図18は,PCI Express規格に適用したデータバッファ装置の回路図である。図16のデータバッファ装置とは,出力回路21に破線100の外側の高優先停止回路181,アンドゲート180,モード信号生成回路182が追加されている。それに伴って,FIFO制御回路22には,選択信号S1,S2に加えて,信号S10も供給される。図18の破線100内の構成は,図16の破線100内の構成と同じである。
図19は,クレジット信号とモード信号との対応表を示す図である。モード信号生成回路182は,各クレジット信号Posted-C,Completion-C,Non Posted-Cに対応して,それぞれモード信号MODE0,MODE1,MODE2を生成する。各クレジット信号Posted-C,Completion-C,Non Posted-Cがクレジット有りであれば,モード信号MODE0,MODE1,MODE2は0になり,クレジット無しであれば1になり,対応するバッファユニットは出力停止状態にされる。
図15,図16のデータバッファ装置において,入力順にデータを出力する通常出力モード(MODE2=0,MODE1=0)と,低優先バッファFIFO2のみが出力停止したときの動作(MODE2=1,MODE1=0)と,中優先バッファFIFO1のみが出力停止したときの動作(MODE2=0,MODE1=1)と,低優先と中優先バッファFIFO2,1が出力停止した時の動作(MODE2=1,MODE1=1)については既に説明した。
そこで,高優先バッファFIFO0のみが出力停止した時の動作(MODE2=0,MODE1=0,MODE0=1)について説明する。この場合,タグ値比較により低優先バッファFIFO0または中優先バッファFIFO1のデータが最先と判定されれば,選択信号S1,S2のいずれかが0になり,セレクタSEL1,SEL2で選択されたデータが高優先停止回路181を経由して出力される。このタグ値比較により停止中の高優先バッファ内のデータを追い越して低優先,中優先のデータが出力されることはない。また,タグ比較により高優先バッファFIFO0のデータが最先と判定されれば,選択信号S1,S2が共に1となり,アンドゲート180の出力信号S10は1になる。その結果,高優先停止回路181は,セレクタSEL1,SEL2が選択した高優先バッファFIFO0のデータの出力を禁止する。これにより高優先バッファユニットのデータ出力は停止状態になる。
さらに,高優先バッファFIFO0と中優先バッファFIFO1が出力停止した時の動作(MODE2=0,MODE1=1,MODE0=1)について説明する。この場合,選択信号S1は,タグ値比較結果に依存するが,選択信号S2は強制的にS2=1になる。そして,低優先のデータが最先なら選択信号S1はS1=0になり低優先のデータが出力される。しかし,高優先のデータが最先なら,選択信号S1はS1=1になるので,S2=1,MODE0=1により,アンドゲート180の出力信号S10=1になり,高優先停止回路181は高優先のデータの出力を禁止する。中優先のデータは選択信号S2=1により出力されない。したがって,低優先データは,入力順が先の時のみ出力され,停止中の高優先データ,中優先データを追い越すことはない。
最後に,高優先バッファFIFO0と低優先バッファFIFO2が出力停止した時の動作(MODE2=1,MODE1=0,MODE0=1)について説明する。この場合,選択信号S1は強制的にS1=1になり,選択信号S2はタグ値比較結果に依存する。よって,低優先バッファのデータは強制的に出力停止される。そして,中優先のデータが最先なら選択信号S2はS2=0になり出力される。一方,高優先のデータが最先なら選択信号S2はS2=1になり,高優先停止回路181が高優先のデータの出力を禁止する。よって,中優先のデータが停止中の高優先のデータを追い越すことはない。
[プログラム制御の例]
図2のデータバッファ装置の入力回路と出力回路は,ハードウエア回路ではなくプログラム制御によっても実現可能である。図示されないCPUが以下に示すフローチャートのプログラムを実行することで,上記と同様の制御を行う。
図20は,2つのバッファユニットを有するデータバッファ装置の入力部の制御を示すフローチャート図である。図2におけるデータバッファ装置の入力回路20を,CPUなどのプロセッサとプログラムメモリとで構成し,プログラムメモリ内のプログラムをプロセッサに実行させることで同じ機能を実現できる。
図20は,そのプログラムの処理を示しており,入力部は,高優先データを入力すると(S200),それに対応する高優先バッファFIFO0に空きがあれば(S201のYES),現在のタグT1を付与し(S202),高優先バッファFIFO0に入力データとタグ値T1とを書き込む(S203)。また,入力部は,低優先データを入力すると(S204),それに対応する低優先バッファFIFO1に空きがあれば(S205のYES),現在のタグT1を付与し(S206),低優先バッファFIFO1に入力データとタグ値T1とを書き込む(S207)。そして,現在のタグ値T1を更新する(S208)。これによりその後の入力データのタグ値T1は更新された値になる。
図21は,2つのバッファユニットを有するデータバッファ装置の出力部の制御を示すフローチャート図である。図2におけるデータバッファ装置の出力回路21を,CPUなどのプロセッサとプログラムメモリとで構成し,プログラムメモリ内のプログラムをプロセッサに実行させることで同じ機能を実現できる。
出力部は,低優先バッファFIFO1と高優先バッファFIFO0のタグ値T1を比較して低優先バッファFIFO1のデータが先か否かを判定し,先なら低優先バッファFIFO1のデータを先でないなら高優先バッファFIFO0のデータを出力する。図21によれば,出力部は,低優先データがバッファ内にある場合は(S210),モードが通常出力モードの場合(S211のYES),基準バッファとなるFIFO1の番号を引数Nとし(N=1)(S212),タグ比較処理S213を実行する。
図22は,タグ比較のフローチャート図である。これによれば,S220〜S225がループ処理であり,工程S225の終了条件に達するまで繰り返される。まず,工程S220での初期化で引数iについてi=0とする。この引数iは,タグ値の比較での基準バッファに対する比較対象バッファの番号である。バッファユニットFIFOは2つしかないので,この場合はi=0になる。そして,バッファFIFOi(FIFO0)にデータがあれば(S221のYES),バッファFIFOi(FIFO0)とバッファFIFON(FIFO1)のタグ値TNが比較され(S222),タグTNが不一致であれば(S223のYES),引数iがインクリメントされ(S224),ループ処理の終了条件i=Nに一致すれば(S225),ループ処理が終了する。バッファユニットは2つしかなくN=1であるので,ループ処理の最初S220に戻ることなく,タグフラグがONにされる(S226)。また,タグTNが一致であれば(S223のNO),タグフラグがOFFにされる(S227)。
図21の工程S213に戻り,出力部は,タグフラグがONであれば(S214のYES),低優先バッファFIFO1のデータが先であるので,低優先バッファFIFO1のデータを出力する(S215)。また,タグフラグがONでないなら(S214のYES),高優先データがあれば(S216のYES),そのデータを出力する(S217)。
また,出力部は,工程S211で低優先バッファが出力停止状態になり追い越しモードになっていれば(NO),高優先データがあれば(S216のNO),高優先データを出力する。
図23は,3つのバッファユニットを有するデータバッファ装置の入力部の制御を示すフローチャート図である。図23には,高優先データと,中優先データと,低優先データに対する入力処理が示されているが,高優先データの処理S200〜S203と低優先データの処理S204〜S208とは,図20と同じであり,中優先データの処理S230〜S234が追加されている。ただし,低優先データの処理ではバッファユニットがFIFO2,タグ値がT2になっている。また,高優先データの処理ではタグ値T1,T2となっている。
中優先データについて,入力部は,中優先データが入力されると(S230),中優先バッファFIFO1に空きがあれば(S231のYES),現在のタグ値T1,T2を付与し,中優先バッファユニットFIFO1に入力データとタグ値T1,T2とを書き込む(S233)。そして,その後,タグ値T1を更新する。これによりその後の入力データのタグ値T1は更新された値になる。
同様に,入力部は,低優先データを低優先バッファユニットFIFO2に入力した後,タグ値T2を更新する(S208)。
図24は,3つのバッファユニットを有するデータバッファ装置の出力部の制御を示すフローチャート図である。出力部は,低優先バッファFIFO2と高優先,中優先バッファFIFO0,FIFO1のタグ値T2を比較して低優先バッファFIFO2のデータが先頭か否かを判定し,先頭なら低優先バッファFIFO2のデータを出力し,先頭でないならさらに,中優先バッファFIFO1と高優先バッファFIFO0のタグ値T1を比較して中優先バッファFIFO1のデータが先頭か否かを判定し,先頭なら中優先バッファFIFO1のデータを出力し,先頭でなければ高優先バッファFIFO0のデータを出力する。
図24によれば,出力部は,低優先データがバッファ内にある場合は(S240),モード信号MODE2=0の通常モードの場合(S241のYES),基準バッファとなるFIFO2の番号を引数Nとし(N=2)(S242),タグ比較処理S213を実行する。
タグ比較処理S213は,図21に示されるとおりであり,ループ処理の初期化工程S220で,引数iをi=0に設定する。前述したとおり,この引数iは,タグ値の比較での基準バッファに対する比較対象バッファの番号である。そして,バッファFIFOiにデータがあれば(S211のYES),バッファFIFOiと基準バッファFIFON(N=2)のタグ値TN(N=2)とを比較し(S222),タグ値TNが不一致であれば(S223のYES),引数iをインクリメントする(S224)。そして,ループ処理S222〜S225をi=Nになるまで繰り返す。つまり,基準バッファに対する比較対象バッファFIFOiがi=0〜i=N−1までタグ値TNの比較を繰り返す。そして,全てのタグ比較で不一致であれば,タグフラグをオンにする(S226)。
1つでもタグ比較で一致があれば(S223のNO),タグフラグをオフにする(S227)。タグフラグがオンであれば基準バッファFIFOiのデータが先頭であり,タグフラグがオフであれば先頭でないことを意味する。
図24に戻り,出力部は,工程S243でタグフラグがオンの場合は,低優先バッファFIFO2のデータを出力する。工程S243でタグフラグがオフの場合は,中優先バッファFIFO1にデータがあれば(S245のYES),そして,モード信号MODE1=0であれば(S246のYES),基準バッファとなるFIFO1の番号を引数Nとし(N=1)(S247),タグ比較処理S213を行う。この処理は,図21と図22の出力部の制御で説明したのと同じであり,出力部は,バッファFIFO1,FIFO0のタグ値T1を比較する。
そして,出力部は,タグフラグがオンであれば(S248のYES),中優先バッファFIFO1のデータを出力する(S249)。また,タグフラグがオフであれば(S248のNO),高優先バッファFIFO0にデータがあれば(S250のYES),モード信号MODE0=0であれば(S251のYES)高優先バッファFIFO0のデータを出力し,モード信号MODE0=1であれば(S251のNO)高優先バッファFIFO0のデータは出力されない。この場合は,出力停止中の高優先バッファFIFO0内のデータより先の入力順を持つデータが他のバッファFIFO1,FIFO2になくいずれのデータも出力されない。
工程S241,S246でモード信号がMODE2=1またはMODE1=1の場合には,対応するバッファFIFO2またはFIFO1のデータは出力されない。
上記のフローチャート図において,高優先バッファ側を基準バッファとしてタグ値を生成する場合は,各フローチャート図において,低優先バッファユニットと高優先バッファユニットとを置き換えればよい。
さらに,追い越し出力モードではなく,単にあるバッファユニットを選択してそれからデータを出力するモードでは,非選択のバッファユニットのデータの出力を禁止し,選択したバッファユニットのデータ間でタグ値の比較を行って出力するバッファユニットを選択すればよい。
[データバッファ装置以外の例]
図25は,データバッファ装置以外の例を示す図である。上記では,データバッファ装置が複数の優先度を有する入力データを一旦記憶し,入力順に出力するか,または一部の優先度のバッファの出力を停止し優先度が高いバッファのデータが出力停止中のバッファのデータを追い抜いて出力するかを行うことを説明した。
しかしながら,必ずしもデータバッファ装置に限らず,他の例においても,何らかの構造体やクラスが発生する場合,それらを優先度に応じて別々に記憶し,それらを発生順に使用または出力したり,一部の優先度の使用や出力を禁止して追い抜いて使用や出力をする場合にも適用可能である。
図25に示されるとおり,工程S300では,構造体やクラスを生成した際にタグ値を付与し,それらを優先度別に別々に記憶する。図中,300,301,302と3つの優先度別に記憶されている。そして,工程S301では,タグ値の比較によりどの構造体またはクラスが先に生成されたか否かを判断する。タグ値の比較処理は,前述したのと同じである。
以上説明したとおり,本実施の形態によれば,入力データを所定の属性別に且つ入力順にFIFOバッファユニットに記憶し,タグ値比較によりバッファユニットのデータ間の入力順を検出することができる。よって,属性に基づいて特定のバッファユニットのデータの出力を行った後,タグ値比較により全てのデータを入力順に出力することが簡単に行える。
以上の実施の形態をまとめると,次の付記のとおりである。
(付記1)
入力されるデータを記憶し,前記記憶されたデータをある順番で出力するデータバッファ装置において,
入力データ毎にタグ値を生成するタグ値生成ユニットと,
第1の優先度を有する第1優先度データをその入力された順に前記タグ値と共に記憶する第1のバッファユニットと,
前記第1の優先度より低い第2の優先度を有する第2優先度データをその入力された順に前記タグ値と共に記憶する第2のバッファユニットと,
前記第1及び第2のバッファユニット内のそれぞれ先頭の第1または第2優先度データのいずれかを出力するデータ出力ユニットとを有し,
前記タグ値生成ユニットは,前記第2の優先度を有する先入力データの入力に応答して,当該先入力データの次に入力する後入力データのタグ値を前記先入力データのタグ値から異ならせ,前記第1の優先度を有する先入力データの入力に応答して,当該先入力データの次に入力する後入力データのタグ値を前記先入力データのタグ値と同じにし,
前記データ出力ユニットは,通常出力モードの場合に,前記第1及び第2のバッファユニットのそれぞれ先頭の前記第1及び第2優先度データのタグ値に応じて,前記第1及び第2優先度データのうち先に入力されたデータを出力し,追い越し出力モードの場合に,入力順にかかわらず,前記第1のバッファユニットの前記第1優先度データを前記第2のバッファユニットの前記第2優先度データより先に出力するデータバッファ装置。
(付記2)
付記1において,
前記データ出力ユニットは,通常出力モードの場合に,前記第1及び第2のバッファユニットのそれぞれ先頭の前記第1及び第2優先度データのタグ値が同じなら前記第1優先度データを出力し,異なるなら前記第2優先度データを出力するデータバッファ装置。
(付記3)
付記1において,
前記第1及び第2のバッファユニットは,それぞれk段数のバッファを有し,
前記タグ値生成ユニットは,それぞれ区別可能なk+1種類のタグ値を順次生成するデータバッファ装置。
(付記4)
入力されるデータを記憶し,前記記憶されたデータをある順番で出力するデータバッファ装置において,
入力データ毎にタグ値を生成するタグ値生成ユニットと,
第1〜第nの優先度を有する第1〜第n優先度データをそれぞれ,その入力された順に,前記タグ値と共に記憶する第1〜第nのバッファユニットと,
前記第1〜第nのバッファユニット内のそれぞれ先頭の第1〜第n優先度データのいずれかを出力するデータ出力ユニットとを有し,
前記タグ値生成ユニットは,前記第jのバッファユニットと前記第1〜第j−1のバッファユニットとのそれぞれの間の入力順に対応する第jのタグ値を,j=2〜nについてそれぞれ生成し,前記第jのタグ値について,前記第jのバッファユニットに先入力データが入力されることに応答して,当該先入力データの次に入力する後入力データのタグ値を前記先入力データのタグ値から異ならせ,前記第1〜第j−1のバッファユニットに先入力データが入力されることに応答して,当該先入力データの次に入力する後入力データのタグ値を前記先入力データのタグ値と同じにし,
前記データ出力ユニットは,通常出力モードの場合に,前記第1〜第nのバッファユニットのそれぞれ先頭の前記第1〜第n優先度データのタグ値に応じて,前記第1〜第n優先度データのうち最先に入力されたデータを出力し,前記通常出力モード以外のモードの場合に,入力順にかかわらず,前記第1〜第nのバッファユニットのうちいずれかのバッファユニットのデータを出力するデータバッファ装置。
(付記5)
付記4において,
前記データ出力ユニットは,通常出力モードの場合に,
前記第nのタグ値から前記第2のタグ値まで順番に,前記第jのバッファユニットと前記第1〜第j−1のバッファユニットとのそれぞれの間で先頭のデータの前記第jのタグ値を比較し,
前記第nのタグ値から前記第2のタグ値のいずれかで,最初に当該第jのタグ値が全て異なる場合に前記第jのバッファユニットのデータを出力し,前記第nのタグ値から前記第2のタグ値の全てで当該第jのタグ値が全て異なることにならない場合に前記第1のバッファユニットのデータを出力するデータバッファ装置。
(付記6)
付記5において,
前記第1の優先度から前記第nの優先度の順に優先度が高く,
前記データ出力ユニットは,前記第1〜第nのバッファユニットのいずれかが出力停止状態の場合は,当該出力停止状態のバッファユニットのデータの出力を禁止し,前記出力停止状態のバッファユニットより優先度が高いバッファユニットのデータを前記出力停止状態のバッファユニットのデータを入力順で追い越して出力するデータバッファ装置。
(付記7)
付記6において,
前記データ出力ユニットは,前記出力停止状態のバッファユニットより優先度が低いバッファユニットのデータの入力順が前記停止状態のバッファユニットのデータの入力順より先の場合に,当該優先度が低いバッファユニットのデータを出力するデータバッファ装置。
(付記8)
付記4において,
前記データ出力ユニットは,前記通常出力モード以外のモードから前記通常出力モードに復帰した場合は,前記第1〜第nのバッファユニットのそれぞれ先頭の前記第1〜第n優先度データのタグ値に応じて,前記第1〜第n優先度データのうち最先に入力されたデータを出力するデータバッファ装置。
(付記9)
付記4において,
前記第1の優先度から前記第nの優先度の順に優先度が高く,
前記データ出力ユニットは,前記通常出力モード以外のモードでは,優先度の高いバッファユニットのデータがそれより優先度が低いバッファユニットのデータを入力順で追い越して出力するデータバッファ装置。
(付記10)
付記4において,
前記第1〜第nのバッファユニットは,それぞれk段数のバッファを有し,
前記タグ値生成ユニットは,前記第n〜第2のタグ値それぞれについて,それぞれ区別可能なk+1種類のタグ値を順次生成するデータバッファ装置。
(付記11)
付記4において,
前記nは3であることを特徴とするデータバッファ装置。
(付記12)
入力されるデータを記憶し,前記記憶されたデータをある順番で出力するデータバッファ装置において,
入力データ毎にタグ値を生成するタグ値生成ユニットと,
第1〜第nの優先度を有する第1〜第n優先度データをそれぞれ,その入力された順に,前記タグ値と共に記憶する第1〜第nのバッファユニットと,
前記第1〜第nのバッファユニット内のそれぞれ先頭の第1〜第n優先度データのいずれかを出力するデータ出力ユニットとを有し,
前記第1の優先度から前記第nの優先度の順に優先度が高く,
前記タグ値生成ユニットは,前記第jのバッファユニットと前記第1〜第j−1のバッファユニットとのそれぞれの間の入力順に対応する第jのタグ値を,j=2〜nについてそれぞれ生成し,前記第jのタグ値について,前記第jのバッファユニットに先入力データが入力されることに応答して,当該先入力データの次に入力する後入力データのタグ値を前記先入力データのタグ値から異ならせ,前記第1〜第j−1のバッファユニットに先入力データが入力されることに応答して,当該先入力データの次に入力する後入力データのタグ値を前記先入力データのタグ値と同じにし,
前記データ出力ユニットは,通常出力モードの場合に,前記第1〜第nのバッファユニットのそれぞれ先頭の前記第1〜第n優先度データのタグ値に応じて,前記第1〜第n優先度データのうち最先に入力されたデータを出力し,追い越し出力モードの場合に,入力順にかかわらず,優先度の高いデータを優先度の低いデータより先に出力するデータバッファ装置。
(付記13)
入力されるデータを記憶し,前記記憶されたデータをある順番で出力するデータバッファ方法において,
入力データ毎にタグ値を生成するタグ値生成工程と,
第1〜第nの優先度を有する第1〜第n優先度データをそれぞれ,その入力された順に,前記タグ値と共に第1〜第nのバッファユニットに記憶する入力工程と,
前記第1〜第nのバッファユニット内のそれぞれ先頭の第1〜第n優先度データのいずれかを出力するデータ出力工程とを有し,
前記タグ値生成工程では,前記第jのバッファユニットと前記第1〜第j−1のバッファユニットとのそれぞれの間の入力順に対応する第jのタグ値を,j=2〜nについてそれぞれ生成し,前記第jのタグ値について,前記第jのバッファユニットに先入力データが入力されることに応答して,当該先入力データの次に入力する後入力データのタグ値を前記先入力データのタグ値から異ならせ,前記第1〜第j−1のバッファユニットに先入力データが入力されることに応答して,当該先入力データの次に入力する後入力データのタグ値を前記先入力データのタグ値と同じにし,
前記データ出力工程では,通常出力モードの場合に,前記第1〜第nのバッファユニットのそれぞれ先頭の前記第1〜第n優先度データのタグ値に応じて,前記第1〜第n優先度データのうち最先に入力されたデータを出力し,前記通常出力モード以外のモードの場合に,入力順にかかわらず,前記第1〜第nのバッファユニットのうちいずれかのバッファユニットのデータを出力するデータバッファ方法。
FIFO:バッファユニット 20:入力回路,入力部
21:出力回路,出力部 22:FIFO制御回路
T1,T2:タグ値 D1〜:データ

Claims (8)

  1. 入力されるデータを記憶し,前記記憶されたデータをある順番で出力するデータバッファ装置において,
    入力データ毎にタグ値を生成するタグ値生成ユニットと,
    第1の優先度を有する第1優先度データをその入力された順に前記タグ値と共に記憶する第1のバッファユニットと,
    前記第1の優先度より低い第2の優先度を有する第2優先度データをその入力された順に前記タグ値と共に記憶する第2のバッファユニットと,
    前記第1及び第2のバッファユニット内のそれぞれ先頭の第1または第2優先度データのいずれかを出力するデータ出力ユニットとを有し,
    前記タグ値生成ユニットは,前記第2の優先度を有する先入力データの入力に応答して,当該先入力データの次に入力する後入力データのタグ値を前記先入力データのタグ値から異ならせ,前記第1の優先度を有する先入力データの入力に応答して,当該先入力データの次に入力する後入力データのタグ値を前記先入力データのタグ値と同じにし,
    前記データ出力ユニットは,通常出力モードの場合に,前記第1及び第2のバッファユニットのそれぞれ先頭の前記第1及び第2優先度データのタグ値が一致するか否か判定し,不一致なら前記第2の優先度データを出力し,一致なら前記第1の優先度データを出力し,追い越し出力モードの場合に,入力順にかかわらず,前記第1のバッファユニットの前記第1優先度データを前記第2のバッファユニットの前記第2優先度データより先に出力するデータバッファ装置。
  2. 入力されるデータを記憶し,前記記憶されたデータをある順番で出力するデータバッファ装置において,
    入力データ毎にタグ値を生成するタグ値生成ユニットと,
    第1〜第nの優先度を有する第1〜第n優先度データをそれぞれ,その入力された順に,前記タグ値と共に記憶する第1〜第nのバッファユニットと,
    前記第1〜第nのバッファユニット内のそれぞれ先頭の第1〜第n優先度データのいずれかを出力するデータ出力ユニットとを有し,
    前記タグ値生成ユニットは,前記第jのバッファユニットと前記第1〜第j−1のバッファユニットとのそれぞれの間の入力順に対応する第jのタグ値を,j=2〜nについてそれぞれ生成し,前記第jのタグ値について,前記第jのバッファユニットに先入力データが入力されることに応答して,当該先入力データの次に入力する後入力データのタグ値を前記先入力データのタグ値から異ならせ,前記第1〜第j−1のバッファユニットに先入力データが入力されることに応答して,当該先入力データの次に入力する後入力データのタグ値を前記先入力データのタグ値と同じにし,
    前記データ出力ユニットは,通常出力モードの場合に,前記第1〜第nのバッファユニットのそれぞれ先頭の前記第1〜第n優先度データのタグ値について,前記第nのタグ値から前記第2のタグ値まで順番に,前記第jのバッファユニットと前記第1〜第j−1のバッファユニットとのそれぞれの間で先頭のデータの前記第jのタグ値が一致するか否か判定し,前記第nのタグ値から前記第2のタグ値のいずれかで,最初に当該第jのタグ値が全て異なる場合に前記第jのバッファユニットのデータを出力し,前記第nのタグ値から前記第2のタグ値の全てで当該第jのタグ値が全て異なることにならない場合に前記第1のバッファユニットのデータを出力し,前記通常出力モード以外のモードの場合に,入力順にかかわらず,前記第1〜第nのバッファユニットのうちいずれかのバッファユニットのデータを出力するデータバッファ装置。
  3. 請求項において,
    前記第1の優先度から前記第nの優先度の順に優先度が高く,
    前記データ出力ユニットは,前記第1〜第nのバッファユニットのいずれかが出力停止状態の場合は,当該出力停止状態のバッファユニットのデータの出力を禁止し,前記出力停止状態のバッファユニットより優先度が高いバッファユニットのデータを前記出力停止状態のバッファユニットのデータを入力順で追い越して出力するデータバッファ装置。
  4. 請求項において,
    前記データ出力ユニットは,前記出力停止状態のバッファユニットより優先度が低いバッファユニットのデータの入力順が前記停止状態のバッファユニットのデータの入力順より先の場合に,当該優先度が低いバッファユニットのデータを出力するデータバッファ装置。
  5. 請求項において,
    前記データ出力ユニットは,前記通常出力モード以外のモードから前記通常出力モードに復帰した場合は,前記第1〜第nのバッファユニットのそれぞれ先頭の前記第1〜第n優先度データのタグ値に応じて,前記第1〜第n優先度データのうち最先に入力されたデータを出力するデータバッファ装置。
  6. 請求項において,
    前記第1の優先度から前記第nの優先度の順に優先度が高く,
    前記データ出力ユニットは,前記通常出力モード以外のモードでは,優先度の高いバッファユニットのデータがそれより優先度が低いバッファユニットのデータを入力順で追い越して出力するデータバッファ装置。
  7. 入力されるデータを記憶し,前記記憶されたデータをある順番で出力するデータバッファ装置において,
    入力データ毎にタグ値を生成するタグ値生成ユニットと,
    第1〜第nの優先度を有する第1〜第n優先度データをそれぞれ,その入力された順に,前記タグ値と共に記憶する第1〜第nのバッファユニットと,
    前記第1〜第nのバッファユニット内のそれぞれ先頭の第1〜第n優先度データのいずれかを出力するデータ出力ユニットとを有し,
    前記第1の優先度から前記第nの優先度の順に優先度が高く,
    前記タグ値生成ユニットは,前記第jのバッファユニットと前記第1〜第j−1のバッファユニットとのそれぞれの間の入力順に対応する第jのタグ値を,j=2〜nについてそれぞれ生成し,前記第jのタグ値について,前記第jのバッファユニットに先入力データが入力されることに応答して,当該先入力データの次に入力する後入力データのタグ値を前記先入力データのタグ値から異ならせ,前記第1〜第j−1のバッファユニットに先入力データが入力されることに応答して,当該先入力データの次に入力する後入力データのタグ値を前記先入力データのタグ値と同じにし,
    前記データ出力ユニットは,通常出力モードの場合に,前記第1〜第nのバッファユニットのそれぞれ先頭の前記第1〜第n優先度データのタグ値について,前記第nのタグ値から前記第2のタグ値まで順番に,前記第jのバッファユニットと前記第1〜第j−1のバッファユニットとのそれぞれの間で先頭のデータの前記第jのタグ値が一致するか否か判定し,前記第nのタグ値から前記第2のタグ値のいずれかで,最初に当該第jのタグ値が全て異なる場合に前記第jのバッファユニットのデータを出力し,前記第nのタグ値から前記第2のタグ値の全てで当該第jのタグ値が全て異なることにならない場合に前記第1のバッファユニットのデータを出力し,追い越し出力モードの場合に,入力順にかかわらず,優先度の高いデータを優先度の低いデータより先に出力するデータバッファ装置。
  8. 入力されるデータを記憶し,前記記憶されたデータをある順番で出力するデータバッファ方法において,
    入力データ毎にタグ値を生成するタグ値生成工程と,
    第1〜第nの優先度を有する第1〜第n優先度データをそれぞれ,その入力された順に,前記タグ値と共に第1〜第nのバッファユニットに記憶する入力工程と,
    前記第1〜第nのバッファユニット内のそれぞれ先頭の第1〜第n優先度データのいずれかを出力するデータ出力工程とを有し,
    前記タグ値生成工程では,前記第jのバッファユニットと前記第1〜第j−1のバッファユニットとのそれぞれの間の入力順に対応する第jのタグ値を,j=2〜nについてそれぞれ生成し,前記第jのタグ値について,前記第jのバッファユニットに先入力データが入力されることに応答して,当該先入力データの次に入力する後入力データのタグ値を前記先入力データのタグ値から異ならせ,前記第1〜第j−1のバッファユニットに先入力データが入力されることに応答して,当該先入力データの次に入力する後入力データのタグ値を前記先入力データのタグ値と同じにし,
    前記データ出力工程では,通常出力モードの場合に,前記第1〜第nのバッファユニットのそれぞれ先頭の前記第1〜第n優先度データのタグ値について,前記第nのタグ値から前記第2のタグ値まで順番に,前記第jのバッファユニットと前記第1〜第j−1のバッファユニットとのそれぞれの間で先頭のデータの前記第jのタグ値が一致するか否か判定し,前記第nのタグ値から前記第2のタグ値のいずれかで,最初に当該第jのタグ値が全て異なる場合に前記第jのバッファユニットのデータを出力し,前記第nのタグ値から前記第2のタグ値の全てで当該第jのタグ値が全て異なることにならない場合に前記第1のバッファユニットのデータを出力し,前記通常出力モード以外のモードの場合に,入力順にかかわらず,前記第1〜第nのバッファユニットのうちいずれかのバッファユニットのデータを出力するデータバッファ方法。
JP2009111987A 2009-05-01 2009-05-01 追い越しモードを有するデータバッファ装置 Expired - Fee Related JP5304421B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009111987A JP5304421B2 (ja) 2009-05-01 2009-05-01 追い越しモードを有するデータバッファ装置
US12/768,473 US8122169B2 (en) 2009-05-01 2010-04-27 Data buffering based on priority tagging of input data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009111987A JP5304421B2 (ja) 2009-05-01 2009-05-01 追い越しモードを有するデータバッファ装置

Publications (2)

Publication Number Publication Date
JP2010262435A JP2010262435A (ja) 2010-11-18
JP5304421B2 true JP5304421B2 (ja) 2013-10-02

Family

ID=43031240

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009111987A Expired - Fee Related JP5304421B2 (ja) 2009-05-01 2009-05-01 追い越しモードを有するデータバッファ装置

Country Status (2)

Country Link
US (1) US8122169B2 (ja)
JP (1) JP5304421B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5305472B2 (ja) * 2010-11-24 2013-10-02 Necアクセステクニカ株式会社 非同期fifo間順序制御回路、データ処理装置及びそれらに用いる非同期fifo間順序制御方法
JP5492750B2 (ja) * 2010-11-24 2014-05-14 株式会社日立製作所 パケット転送装置およびパケット転送方法
JP5526006B2 (ja) 2010-11-25 2014-06-18 ジヤトコ株式会社 コーストストップ車両及びコーストストップ車両の制御方法
JP5906625B2 (ja) * 2011-09-15 2016-04-20 株式会社リコー アクセス制御装置、画像形成装置およびアクセス制御方法
US9270610B2 (en) * 2013-02-27 2016-02-23 Apple Inc. Apparatus and method for controlling transaction flow in integrated circuits
US11281618B2 (en) * 2014-10-31 2022-03-22 Xlnx, Inc. Methods and circuits for deadlock avoidance

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02299053A (ja) * 1989-05-15 1990-12-11 Fujitsu Ltd 複数のfifo情報格納装置における優先順位管理方式
JPH10341240A (ja) * 1997-06-06 1998-12-22 Toyo Commun Equip Co Ltd 交換装置
JP3675417B2 (ja) 2002-03-07 2005-07-27 ソニー株式会社 通信中継方法、通信中継装置、通信ネットワーク装置、ネットワークアドレス決定方法、通信方法、通信端末装置並びにネットワークネームサーバ装置。
US7936814B2 (en) 2002-03-28 2011-05-03 International Business Machines Corporation Cascaded output for an encoder system using multiple encoders
US7480754B2 (en) * 2003-06-27 2009-01-20 Seagate Technology, Llc Assignment of queue execution modes using tag values

Also Published As

Publication number Publication date
JP2010262435A (ja) 2010-11-18
US8122169B2 (en) 2012-02-21
US20100281193A1 (en) 2010-11-04

Similar Documents

Publication Publication Date Title
JP5304421B2 (ja) 追い越しモードを有するデータバッファ装置
US8155134B2 (en) System-on-chip communication manager
US6570403B2 (en) Quantized queue length arbiter
JP5576030B2 (ja) データ応答を順序変更するためのシステム
JP4457168B2 (ja) 資源要求調停装置、資源要求調停方法、及び、コンピュータプログラム
KR100668001B1 (ko) 메모리 액세스를 제어하기 위한 방법 및 장치
US20090248935A1 (en) Hardware Managed Context Sensitive Interrupt Priority Level Control
KR20080075910A (ko) 메모리 액세스 요청 중재
US10282343B2 (en) Semiconductor device
JPH1141258A (ja) Atmスイッチシステムの入力許容値設定方法
KR20170033643A (ko) 반도체 시스템 및 그의 동작 방법
US20050144338A1 (en) Data transfer apparatus
JP5217786B2 (ja) リクエスト調停装置及びリクエスト調停方法
US8812783B2 (en) Operation apparatus, cache apparatus, and control method thereof
JPH1023037A (ja) トラヒックシェーピング方式
US20120151243A1 (en) Synchronization circuit that facilitates multiple parallel reads and writes
US7512190B2 (en) Data transmission apparatus using asynchronous dual-rail bus and method therefor
JP2636088B2 (ja) 情報処理装置
EP1513069A2 (en) Resource management apparatus
US6625711B1 (en) Method and/or architecture for implementing queue expansion in multiqueue devices
US6831920B1 (en) Memory vacancy management apparatus and line interface unit
US20050060453A1 (en) Instruction supply control unit and semiconductor device
EP1362288B1 (en) Pipelined multi-access memory apparatus and method
US20050060475A1 (en) Data transfer apparatus and data transfer method
US6622202B2 (en) Method and device for operating a RAM memory

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130219

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130220

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130417

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: 20130528

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130610

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees