JP4779010B2 - バッファリング装置およびバッファリング方法 - Google Patents

バッファリング装置およびバッファリング方法 Download PDF

Info

Publication number
JP4779010B2
JP4779010B2 JP2008501569A JP2008501569A JP4779010B2 JP 4779010 B2 JP4779010 B2 JP 4779010B2 JP 2008501569 A JP2008501569 A JP 2008501569A JP 2008501569 A JP2008501569 A JP 2008501569A JP 4779010 B2 JP4779010 B2 JP 4779010B2
Authority
JP
Japan
Prior art keywords
request
processing
waiting
wait
queue
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
JP2008501569A
Other languages
English (en)
Other versions
JPWO2007097017A1 (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 Ltd
Original Assignee
Fujitsu 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 Ltd filed Critical Fujitsu Ltd
Publication of JPWO2007097017A1 publication Critical patent/JPWO2007097017A1/ja
Application granted granted Critical
Publication of JP4779010B2 publication Critical patent/JP4779010B2/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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、順序保証が必要な処理および順序保証が不要な処理のいずれかの処理に用いられるデータをバッファリングするバッファリング装置およびバッファリング方法に関し、特に、小さい回路規模で順序保証が必要な処理と不要な処理とを実行可能にすることができるバッファリング装置およびバッファリング方法に関する。
一般に、コンピュータなどの情報処理装置によって行われる処理には、順序保証すべきものと順序保証が不要なものとがある。順序保証すべき処理においては、前段の処理が完了するまでは次の処理が実行されないのに対し、順序保証が不要な処理においては、実行可能であれば、2つ以上の処理が並行して実行される。
これらの2種類の処理が混在している場合、通常は処理の順序を調停することが不可欠となる。具体的には、例えば特許文献1に記載されているように、処理対象のデータを分類して複数のバッファに一時的に記憶し、処理の優先度や順序を考慮しながら、データをいずれかのバッファから読み出すことが行われる。
特開平10−207831号公報
しかしながら、順序保証のために複数のバッファが設けられる場合、回路規模が増大してしまうという問題がある。すなわち、順序保証が必要な処理と順序保証が不要な処理との両方が混在している場合には、少なくとも順序保証が必要な処理対象のデータ用のバッファと順序保証が不要な処理対象のデータ用のバッファとの2つのバッファが必要となり、バッファを構成する回路が複雑かつ大規模となってしまう。
本発明はかかる点に鑑みてなされたものであり、小さい回路規模で順序保証が必要な処理と不要な処理とを実行可能にすることができるバッファリング装置およびバッファリング方法を提供することを目的とする。
上記課題を解決するために、本願が開示するバッファリング装置は、1つの態様において、順序保証が必要な処理および順序保証が不要な処理のいずれかの処理に用いられるリクエストをバッファリングするバッファリング装置であって、処理を待機する複数のリクエストと、前記複数のリクエストの各々について先行する他のリクエストの処理完了を待機する必要があるか否かを示す待ち合わせフラグとを対応付けて記憶する記憶手段と、前記記憶手段から処理対象のリクエストを1つずつ読み出す読出手段と、前記記憶手段に記憶された各リクエストについて前記記憶手段に記憶された先行する他のリクエストの処理が完了するまで前記読出手段による読み出しを待機すべきか否かを各リクエストに対応する待ち合わせフラグに設定し、各リクエストに対応付けられた待ち合わせフラグに応じて、先行する他のリクエストの処理完了を待機する必要がないリクエストを前記読出手段によって読み出させる制御手段とを有し、前記記憶手段は、複数のキューを備え、各キューにそれぞれ1つのリクエストと、当該1つのリクエストを記憶するキュー以外の複数のキューそれぞれに対応する複数の待ち合わせフラグとを対応付けて記憶し、前記制御手段は、1つのリクエストが、当該1つのリクエストを記憶するキューに含まれる複数の待ち合わせフラグの各々に対応するキューに格納された他のリクエストの処理完了を待機する必要があるか否かを、前記1つのリクエストを記憶するキューに含まれる複数の待ち合わせフラグそれぞれに設定することを特徴とする。
本発明によれば、処理を待機する複数のデータを記憶し、記憶された各データがどのデータの処理完了を待機すべきかを示す待ち合わせフラグをデータそれぞれに対応付けて設定し、各データに対応付けられた待ち合わせフラグに応じて読出順序を制御しながら処理対象のデータを1つずつ読み出す。このため、順序保証の要不要に関わらずデータを1箇所に混在させて記憶させても、各データの待ち合わせフラグを参照して適切な順序でデータを読み出すことができ、小さい回路規模で順序保証が必要な処理と不要な処理とを実行可能にすることができる。
また、本発明によれば、データが順序保証が必要な処理に用いられるか否かに応じて待ち合わせフラグを設定するため、順序保証が必要な処理に用いられるデータについては、先行するデータの処理完了を待機するように待ち合わせフラグを設定する一方、順序保証が不要な処理に用いられるデータについては、先行するデータの処理完了を待機しないように待ち合わせフラグを設定し、いずれのデータについても処理遅延を最小限に抑制することができる。
また、本発明によれば、順序保証が必要な処理に用いられるデータの待ち合わせフラグを、当該データよりも先に記憶されたデータの処理完了を待機するように設定するため、順序保証が必要なデータに関しては、1つのデータの処理完了後に次のデータを読み出すことができ、確実に順序を維持することができる。
また、本発明によれば、順序保証が不要な処理に用いられるデータの待ち合わせフラグを、読み出し中のデータの読み出し完了のみを待機するように設定するため、順序保証が不要なデータに関しては、データの伝送路が使用可能になると即座に次のデータを読み出すことができ、処理遅延を抑制することができる。
また、本発明によれば、データを1つずつ書き込む際に、待ち合わせフラグに関する待ち合わせフラグ情報をデータに付加した上で書き込むため、各データと待ち合わせフラグとの対応が明確に記憶され、正確に読み出しの順序を制御することができる。
また、本発明によれば、記憶されたデータそれぞれについて読み出し待機、応答待機、および処理完了のいずれかのステートを決定し、データのステートが遷移するとステートの遷移を待ち合わせフラグに反映する。このため、読み出されたデータに対する処理中に応答がある場合でも、より細かくデータの読み出しタイミングを制御することができ、処理遅延をさらに抑制することができる。
また、本発明によれば、いずれかのデータのステートが応答待機から処理完了に遷移した場合、順序保証が必要な処理に用いられるデータの待ち合わせフラグにおいて、ステートが遷移したデータの処理完了を待機不要に変更する。このため、順序保証が必要なデータの待ち合わせフラグを効率良く更新するとともに、データが読み出されるまでの待機時間を最小限に抑制することができる。
また、本発明によれば、いずれかのデータのステートが読み出し待機から応答待機に遷移した場合、順序保証が不要な処理に用いられるデータの待ち合わせフラグにおいて、ステートが遷移したデータの処理完了を待機不要に変更する。このため、順序保証が不要なデータの待ち合わせフラグを効率良く更新するとともに、データが読み出されるまでの待機時間を最小限に抑制することができる。
図1は、本発明の一実施の形態に係る情報処理装置の要部構成を示すブロック図である。 図2は、一実施の形態に係るI/Oコントローラの内部構成を示すブロック図である。 図3は、一実施の形態に係るキューのエントリの一例を示す図である。 図4は、一実施の形態に係るI/Oコントローラの動作を示すフロー図である。 図5は、一実施の形態に係る待ち合わせフラグの設定動作を示すフロー図である。 図6は、一実施の形態に係るリクエストの発行動作を示すフロー図である。 図7−1は、一実施の形態に係る待ち合わせフラグの一覧の具体例を示す図である。 図7−2は、図7−1に続く図である。 図7−3は、図7−2に続く図である。 図7−4は、図7−3に続く図である。 図7−5は、図7−4に続く図である。 図7−6は、図7−5に続く図である。 図7−7は、図7−6に続く図である。 図7−8は、図7−7に続く図である。 図7−9は、図7−8に続く図である。 図7−10は、図7−9に続く図である。 図7−11は、図7−10に続く図である。 図7−12は、図7−11に続く図である。
符号の説明
100 I/Oコントローラ
110 書込部
120 バッファ
130 読出部
140 順序制御部
200 システムコントローラ
300 CPU
400 メモリ
以下、本発明の一実施の形態について、図面を参照して詳細に説明する。以下においては、情報処理装置におけるリクエスト発行を例に挙げて説明するが、本発明は、例えばATM(Asynchronous Transfer Mode)セルの転送におけるバッファリングなどにも適用することができる。
図1は、本発明の一実施の形態に係る情報処理装置の要部構成を示すブロック図である。同図に示す情報処理装置は、I/O(Input/Output)コントローラ100、システムコントローラ200、CPU300、およびメモリ400を有している。
I/Oコントローラ100は、情報処理装置と他装置間のデータの入出力を制御する。具体的には、I/Oコントローラ100は、他装置から出力される様々な処理要求のためのリクエストをシステムコントローラ200へ出力する。このとき、I/Oコントローラ100は、順序保証が必要なリクエストに関しては、このリクエスト以前にI/Oコントローラ100に入力されたリクエスト(以下「先行リクエスト」という)の発行が完了した後に出力する。なお、リクエストの発行元である他装置は、情報処理装置と同一装置内にあるものでも良く、情報処理装置の外部機器などでも良い。I/Oコントローラ100と他装置とは、例えばPCIエクスプレス(PCI Express)などによって接続されている。なお、本実施の形態においては、リクエストを発行する他装置は1つの装置とは限らず、複数の他装置から様々なリクエストが発行されても良い。
システムコントローラ200は、CPU300やメモリ400を制御し、他装置からのリクエストをCPU300へ出力し、CPU300による演算処理の結果をI/Oコントローラ100経由でリクエスト発行元の他装置へ出力する。
CPU300は、メモリ400に記憶されたプログラムやデータを読み出して演算処理を行い、その結果をシステムコントローラ200へ出力する。図1においては、情報処理装置がCPU300を2つ有する構成としたが、CPU300は1つでも良く、3つ以上でも良い。
メモリ400は、CPU300によって使用されるプログラムやデータを記憶しており、例えば複数のDIMM(Dual Inline Memory Module)などから構成されている。
図2は、本実施の形態にかかるI/Oコントローラ100の内部構成を示すブロック図である。同図においては、I/Oコントローラ100のリクエストの出力に関する部分のみを示している。図2に示すI/Oコントローラ100は、書込部110、バッファ120、読出部130、および順序制御部140を有している。
書込部110は、他装置から出力されたリクエストをバッファ120内のいずれかの空いているキューに書き込む。このとき、書込部110は、順序制御部140の指示に従って、リクエストのステート情報および待ち合わせフラグ情報を付加し、得られたエントリを空きキューに書き込む。
ここでエントリは、例えば図3に示すように、リクエストの本体に相当するコマンドおよびアドレスに、ステートおよび待ち合わせフラグが付加されたフォーマットとなっている。ステートとは、リクエストの状態を表しており、先行リクエストの発行を待機している状態(以下、この状態を「PR」という)、自己の発行を待機している状態(以下、この状態を「SR」という)、システムコントローラ200からの受信応答を待機している状態(以下、この状態を「RA」という)、およびリクエスト発行が完了し無効化された状態(以下、この状態を「INV」という)の4種類があり、この順に遷移していく。また、待ち合わせフラグとは、各リクエストが発行の完了を待機すべきリクエストを示すものであり、例えばキュー#1に記憶されたリクエストがキュー#0に記憶されたリクエストの発行の完了を待機すべきである場合は、キュー#1のリクエストの待ち合わせフラグにおいて、キュー#0のフラグが立つ。
バッファ120は、複数のリクエストを記憶可能な記憶容量を有しており、それぞれ1つのリクエストを記憶する領域である複数(図2では8つ)のキューに別れている。バッファ120内のキュー#0〜#7は、リクエストにステート情報および待ち合わせフラグ情報が付加されたエントリを記憶する。
読出部130は、順序制御部140の指示に従って、バッファ120内のいずれかのキューからエントリに含まれているリクエストを読み出し、システムコントローラ200へ出力する。
順序制御部140は、他装置から書込部110へ新規リクエストが入力されると、このリクエストに関するステートをPRとし、リクエストのタイプおよび先行リクエストの有無などに応じて待ち合わせフラグを設定し、バッファ120内の空きキューへのエントリの書き込みを書込部110へ指示する。また、順序制御部140は、バッファ120内の各キュー#0〜#7のステートおよび待ち合わせフラグを参照し、それぞれのキューに記憶されているリクエストの発行順序を制御しながら、リクエストの読み出しを読出部130へ指示する。そして、順序制御部140は、リクエストの読み出しに伴ってステートおよび待ち合わせフラグが変化すると、バッファ120内の各キュー#0〜#7のエントリのステート情報および待ち合わせフラグ情報を書き換える。順序制御部140による具体的なリクエスト発行順序の制御については、後に詳述する。
次いで、上記のように構成されたI/Oコントローラ100の動作について、図4〜6に示すフロー図を参照しながら説明する。
まず、他装置から新規リクエストが出力され、I/Oコントローラ100内の書込部110に受け付けられると(ステップS100)、順序制御部140によって、バッファ120内のキュー#0〜#7から空いているキューが選択される(ステップS200)。ここで、キューが空いている状態とは、そもそもキューにエントリが記憶されていない状態か、キューに記憶されたエントリのステートがINVである状態のことである。ステートがINVであれば、対応するリクエストは既に発行済みであり、システムコントローラ200からの受信応答も返ってきているため、リクエストは無効化されており、無いものとして扱うことができる。複数のキューが空いている場合は、順序制御部140によって、任意の空きキューの選択が可能だが、例えば番号が最も小さい空きキューが新規リクエスト用のキューとして選択される。
そして、順序制御部140によって、新規リクエストのステートをPRに設定するように書込部110へ指示が出される(ステップS300)。新規リクエストは、常に先行リクエストの発行待機を示すPRとされ、もし先行リクエストがすべて発行済みであったり、先行リクエストが無かったりすれば、キューに新規リクエストが書き込まれた後に、順序制御部140によって、このリクエストのステートが自己の発行待機を示すSRに書き換えられる。
書込部110によって新規リクエストのステートが設定された後、順序制御部140によってこのリクエストの待ち合わせフラグが決定され、書込部110によって設定される(ステップS400)。待ち合わせフラグの設定は、図5に示すフロー図に従って行われる。
すなわち、順序制御部140によって、新規リクエストが順序保証を必要とするs(strong order)タイプのリクエストか順序保証が不要なw(weakly order)タイプのリクエストかが判定される(ステップS401)。新規リクエストがwタイプであれば(ステップS401No)、このリクエストは先行リクエストの発行完了を待つ必要が無いため、すべてのキューに対応するフラグが待ち合わせ不要を示す0に設定される(ステップS404)。
一方、新規リクエストがsタイプであれば(ステップS401Yes)、このリクエストは先行リクエストの発行完了を待つ必要があり、順序制御部140によって、バッファ120内のいずれかのキューに先行リクエストがあるか否かが判定される(ステップS402)。この結果、いずれのキューにも先行リクエストが無ければ(ステップS402No)、全フラグが0に設定され(ステップS404)、いずれかのキューに先行リクエストがあれば(ステップS402Yes)、この先行リクエストに対応するキューのフラグが待ち合わせ必要を示す1に設定される(ステップS403)。
このように他装置から新規リクエストが出力されるたびに、新規リクエストのタイプと先行リクエストの有無とから待ち合わせフラグを設定しておくことにより、バッファ120の各キューにリクエストが書き込まれた時点で発行可能であるか否かを待ち合わせフラグのみから判断することができる。
図4に戻って、新規リクエストのステートおよび待ち合わせフラグが設定されると、書込部110によって、新規リクエストにステート情報および待ち合わせフラグ情報が付加されたエントリが順序制御部140によって選択されたバッファ120内の空きキューに書き込まれる(ステップS500)。その後、順序制御部140によって、各キュー#0〜#7のリクエストの発行順序が決定され、決定された発行順序で読出部130によってリクエストが読み出されて発行される(ステップS600)。具体的には、リクエスト発行は、順序制御部140および読出部130が図6に示すフロー図に従って動作することにより行われる。
すなわち、順序制御部140によって、バッファ120内のキュー#0〜#7に記憶されているステートがPRのリクエストが選択される(ステップS601)。このとき、ステートがPRのリクエストが複数ある場合は、番号が最も小さいキューのリクエストが選択される。そして、順序制御部140によって、選択された発行対象のリクエストの待ち合わせフラグが確認され、全フラグが0であるか否かが判定される(ステップS602)。
この結果、待ち合わせフラグがすべて0であれば(ステップS602Yes)、先行リクエストの発行を待つ必要が無いため、発行対象のリクエストのステートが発行待機を示すSRに設定され(ステップS603)、I/Oコントローラ100とシステムコントローラ200との間の伝送路が開放され次第、読出部130によってリクエストが読み出され(ステップS604)、システムコントローラ200へ出力される。そして、順序制御部140によって、バッファ120内の読み出されたリクエストのステートが受信応答の待機を示すRAに書き換えられる(ステップS605)。その後、システムコントローラ200からの受信応答(ACK)がI/Oコントローラ100へ返ってくると、順序制御部140によって、バッファ120内の読み出されたリクエストのステートが無効化を示すINVに書き換えられる。これにより、発行対象のリクエストの発行が完了する。
一方、発行対象リクエストの待ち合わせフラグに1が含まれていれば(ステップS602No)、順序制御部140によって、このリクエストがsタイプであるか否かが確認される(ステップS606)。そして、発行対象のリクエストがsタイプである場合は(ステップS606Yes)、フラグが1であるリクエストが発行され、ステートがINVに遷移したか否かが監視される(ステップS607)。フラグが1であるリクエストのステートがINVに遷移すると(ステップS607Yes)、発行完了を待つ必要があった先行リクエストの発行が完了したことになるため、発行対象のリクエストの待ち合わせフラグにおいて、この先行リクエストのフラグが0に書き換えられ(ステップS608)、再び全フラグが0になったか否かが判定される(ステップS602)。
また、発行対象のリクエストがwタイプである場合は(ステップS606No)、フラグが1であるリクエストが読出部130によって読み出され、ステートがRAに遷移したか否かが監視される(ステップS609)。そして、フラグが1であるリクエストのステートがRAに遷移すると(ステップS609Yes)、先行リクエストによる伝送路の占有がなくなったことになるため、発行対象のリクエストの待ち合わせフラグにおいて、この先行リクエストのフラグが0に書き換えられ(ステップS610)、再び全フラグが0になったか否かが判定される(ステップS602)。
以降、発行対象のリクエストの待ち合わせフラグにおいて、すべてのフラグが0になるまで上記の処理が繰り返され、すべての先行リクエストがシステムコントローラ200へ出力されて全フラグが0となると、発行対象のリクエストが発行されてステートがRAおよびINVに順次書き換えられる。そして、発行対象のリクエストのステートがRAになることにより、後続のwタイプのリクエストの待ち合わせフラグにおいて、発行対象であったリクエストのフラグが0に書き換えられることになる。また、発行対象のリクエストのステートがINVになることにより、後続のsタイプのリクエストの待ち合わせフラグにおいて、発行対象であったリクエストのフラグが0に書き換えられることになる。
次いで、本実施の形態に係るリクエスト発行の順序について、具体的に例を挙げて説明する。ここでは、sタイプのリクエストs1、wタイプのリクエストw1、sタイプのリクエストs2、およびwタイプのリクエストw2がこの順に他装置から出力された場合について説明する。
図7−1は、バッファ120内のすべてのキュー#0〜#7が空きキューである状態、換言すれば、すべてのキュー#0〜#7に記憶されたリクエストのステートがINVである状態の各キューにおける待ち合わせフラグの一覧を示す図である。図7−1の状態では、いずれのキューにも有効なリクエストが記憶されていないため、すべてのキューの待ち合わせフラグにおいては、全フラグが0に設定されている。
その後、新規リクエストとしてリクエストs1が他装置から出力されると、リクエストs1は、書込部110によってキュー#0に書き込まれる。このとき、リクエストs1のステートは先行リクエストの発行待機を示すPRとされる。リクエストs1は、先行リクエストが無い状態で記憶されるため、リクエストs1の待ち合わせフラグにおいては、全フラグが0のままである。この状態を図7−2に示す。
次に、新規リクエストとしてリクエストw1が他装置から出力されると、リクエストw1は、書込部110によってキュー#1に書き込まれる。このとき、リクエストw1のステートはPRとされる。また、先行リクエストであるリクエストs1のステートは自己の発行待機を示すSRへ遷移する。この状態を図7−3に示す。
そして、新規リクエストとしてリクエストs2が他装置から出力されると、リクエストs2は、書込部110によってキュー#2に書き込まれる。このとき、リクエストs2のステートはPRとされる。また、リクエストs2の書き込み時には、リクエストs1およびリクエストw1がそれぞれキュー#0およびキュー#1に既に記憶されているため、リクエストs2の待ち合わせフラグにおいて、これらのリクエストに対応するキュー#0およびキュー#1のフラグが1に設定される。さらに、リクエストw1は、リクエストs1の発行完了を待つ必要が無いため、ステートがSRに書き換えられるが、先行するリクエストs1によって伝送路が占有されているため、リクエストw1の待ち合わせフラグにおいて、リクエストs1に対応するキュー#0のフラグが1に設定される。この状態を図7−4に示す。
次に、新規リクエストとしてリクエストw2が他装置から出力されると、リクエストw2は、書込部110によってキュー#3に書き込まれる。このとき、リクエストw2のステートはPRとされる。また、リクエストs1は読出部130からシステムコントローラ200へ出力され、ステートがRAに遷移する。これに伴って、読出部130からシステムコントローラ200への伝送路が使用可能となるため、リクエストw1の待ち合わせフラグにおいて、リクエストs1に対応するキュー#0のフラグが0に設定される。そして、リクエストw1が読出部130によって読み出され、システムコントローラ200へ出力される。この状態を図7−5に示す。
そして、リクエストw2は、すべての先行リクエストの発行完了を待つ必要が無いため、ステートがSRに書き換えられるが、先行するリクエストw1によって伝送路が占有されているため、リクエストw2の待ち合わせフラグにおいて、リクエストw1に対応するキュー#1のフラグが1に設定される。この状態を図7−6に示す。
次に、リクエストw1が読出部130からシステムコントローラ200へ出力され、ステートがRAに遷移する。これに伴って、読出部130からシステムコントローラ200への伝送路が使用可能となるため、リクエストw2の待ち合わせフラグにおいて、リクエストw1に対応するキュー#1のフラグが0に設定される。そして、リクエストw2が読出部130によって読み出され、システムコントローラ200へ出力される。この状態を図7−7に示す。
そして、リクエストw1の受信応答がシステムコントローラ200から返ってくると、リクエストw1は無効化され、キュー#1のステートがINVとなる。これに伴って、リクエストs2はリクエストw1の発行完了を待ったことになるため、リクエストs2の待ち合わせフラグにおいて、リクエストw1に対応するキュー#1のフラグが0に設定される。また、リクエストw2が読出部130からシステムコントローラ200へ出力され、ステートがRAに遷移する。この状態を図7−8に示す。
次に、リクエストs1の受信応答がシステムコントローラ200から返ってくると、リクエストs1は無効化され、キュー#0のステートがINVとなる。これに伴って、リクエストs2はリクエストs1の発行完了を待ったことになるため、リクエストs2の待ち合わせフラグにおいて、リクエストs1に対応するキュー#0のフラグが0に設定される。この状態を図7−9に示す。
そして、リクエストs2の待ち合わせフラグにおいて、全フラグが0になったことから、リクエストs2のステートがSRに遷移し、リクエストs2が読出部130によってシステムコントローラ200へ出力される。この状態を図7−10に示す。
続けて、リクエストw2の受信応答がシステムコントローラ200から返ってくると、リクエストw2は無効化され、キュー#3のステートがINVとなる。また、リクエストs2が読出部130からシステムコントローラ200へ出力され、ステートがRAに遷移する。この状態を図7−11に示す。
最後に、リクエストs2の受信応答がシステムコントローラ200から返ってくると、リクエストs2は無効化され、キュー#2のステートがINVとなる。こうして、すべてのキュー#0〜#7が、図7−12に示すように、再び空きキューとなる。
以上のように、本実施の形態によれば、バッファ内のすべてのキューに対応するリクエストとの発行の待ち合わせの要不要を示す待ち合わせフラグを各リクエストに対応付けておき、リクエストのタイプおよび先行リクエストのステート遷移に応じて、待ち合わせフラグにおける各リクエストのフラグを適切に設定し、発行対象のリクエストの待ち合わせフラグにおいて、すべてのフラグが待ち合わせ不要であることを示している場合に、発行対象のリクエストを発行する。このため、1つのバッファ内に書き込まれた複数のリクエストに対して、必要な順序制御を行いながら発行することができ、小さい回路規模で順序保証が必要な処理と不要な処理とを実行可能にすることができる。
なお、上記一実施の形態においては、システムコントローラ200に接続されたI/Oコントローラ100におけるバッファリングを例に挙げて説明したが、本発明は順序保証や優先度制御を必要とする様々なバッファに適用することができる。その際、上記一実施の形態においては、データそのものにステートおよび待ち合わせフラグの情報を付加することとしたが、データ自体には何の情報も付加せず、例えば順序制御部140が図7−1〜7−12に示したような一覧表を管理することにより、読出部130の読出順序を制御することなどが考えられる。
本発明は、小さい回路規模で順序保証が必要な処理と不要な処理とを実行可能にする場合に適用することができる。

Claims (9)

  1. 順序保証が必要な処理および順序保証が不要な処理のいずれかの処理に用いられるリクエストをバッファリングするバッファリング装置であって、
    処理を待機する複数のリクエストと、前記複数のリクエストの各々について先行する他のリクエストの処理完了を待機する必要があるか否かを示す待ち合わせフラグとを対応付けて記憶する記憶手段と、
    前記記憶手段から処理対象のリクエストを1つずつ読み出す読出手段と、
    前記記憶手段に記憶された各リクエストについて前記記憶手段に記憶された先行する他のリクエストの処理が完了するまで前記読出手段による読み出しを待機すべきか否かを各リクエストに対応する待ち合わせフラグに設定し、各リクエストに対応付けられた待ち合わせフラグに応じて、先行する他のリクエストの処理完了を待機する必要がないリクエストを前記読出手段によって読み出させる制御手段とを有し、
    前記記憶手段は、
    複数のキューを備え、各キューにそれぞれ1つのリクエストと、当該1つのリクエストを記憶するキュー以外の複数のキューそれぞれに対応する複数の待ち合わせフラグとを対応付けて記憶し、
    前記制御手段は、
    1つのリクエストが、当該1つのリクエストを記憶するキューに含まれる複数の待ち合わせフラグの各々に対応するキューに格納された他のリクエストの処理完了を待機する必要があるか否かを、前記1つのリクエストを記憶するキューに含まれる複数の待ち合わせフラグそれぞれに設定することを特徴とするバッファリング装置。
  2. 前記制御手段は、
    リクエストが順序保証が必要な処理に用いられるか否かに応じて待ち合わせフラグを設定することを特徴とする請求項記載のバッファリング装置。
  3. 前記制御手段は、
    順序保証が必要な処理に用いられるリクエストの待ち合わせフラグを、当該リクエストよりも先に前記記憶手段に記憶されたリクエストの処理完了を待機するように設定することを特徴とする請求項記載のバッファリング装置。
  4. 前記制御手段は、
    順序保証が不要な処理に用いられるリクエストの待ち合わせフラグを、前記読出手段によって読み出し中のリクエストの読み出し完了のみを待機するように設定することを特徴とする請求項記載のバッファリング装置。
  5. 前記記憶手段にリクエストを1つずつ書き込む書込手段をさらに有し、
    前記制御手段は、
    前記書込手段がリクエストを書き込む際に、待ち合わせフラグをリクエストに付加させた上で書き込ませることを特徴とする請求項1記載のバッファリング装置。
  6. 前記記憶手段はさらに、
    各リクエストの処理の状態を示すステートをリクエストごとに対応付けて記憶し、
    前記制御手段は、
    前記記憶手段に記憶されたリクエストそれぞれについて読み出し待機、応答待機、および処理完了のいずれかのステートを決定し、前記記憶手段に記憶されたリクエストのステートが遷移するとステートの遷移を待ち合わせフラグに反映することを特徴とする請求項1記載のバッファリング装置。
  7. 前記制御手段は、
    いずれかのリクエストのステートが応答待機から処理完了に遷移した場合、順序保証が必要な処理に用いられるリクエストの待ち合わせフラグにおいて、ステートが遷移したリクエストの処理完了を待機不要に変更することを特徴とする請求項記載のバッファリング装置。
  8. 前記制御手段は、
    いずれかのリクエストのステートが読み出し待機から応答待機に遷移した場合、順序保証が不要な処理に用いられるリクエストの待ち合わせフラグにおいて、ステートが遷移したリクエストの処理完了を待機不要に変更することを特徴とする請求項記載のバッファリング装置。
  9. 順序保証が必要な処理および順序保証が不要な処理のいずれかの処理に用いられるリクエストをバッファリングするバッファリング方法であって、
    処理を待機する複数のリクエストと、前記複数のリクエストの各々について先行する他のリクエストの処理完了を待機する必要があるか否かを示す待ち合わせフラグとを対応付けて複数のキューを備えた記憶部に記憶する記憶工程と、
    前記記憶工程にて記憶された各リクエストについて、先行する他のリクエストの処理が完了するまで読み出しを待機すべきか否かを各リクエストに対応する待ち合わせフラグに設定する設定工程と、
    前記設定工程にて各リクエストに対応付けて設定された待ち合わせフラグに応じて、先行する他のリクエストの処理完了を待機する必要がないリクエストを読み出すように読出順序を制御する制御工程と、
    前記制御工程における読出順序に従って処理対象のリクエストを1つずつ読み出す読出工程とを有し、
    前記記憶工程は、
    前記記憶部の各キューにそれぞれ1つのリクエストと、当該1つのリクエストを記憶するキュー以外の複数のキューそれぞれに対応する複数の待ち合わせフラグとを対応付けて記憶し、
    前記設定工程は、
    1つのリクエストが、当該1つのリクエストを記憶するキューに含まれる複数の待ち合わせフラグの各々に対応するキューに格納された他のリクエストの処理完了を待機する必要があるか否かを、前記1つのリクエストを記憶するキューに含まれる複数の待ち合わせフラグそれぞれに設定することを特徴とするバッファリング方法。
JP2008501569A 2006-02-27 2006-02-27 バッファリング装置およびバッファリング方法 Expired - Fee Related JP4779010B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2006/303587 WO2007097017A1 (ja) 2006-02-27 2006-02-27 バッファリング装置およびバッファリング方法

Publications (2)

Publication Number Publication Date
JPWO2007097017A1 JPWO2007097017A1 (ja) 2009-07-09
JP4779010B2 true JP4779010B2 (ja) 2011-09-21

Family

ID=38437077

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008501569A Expired - Fee Related JP4779010B2 (ja) 2006-02-27 2006-02-27 バッファリング装置およびバッファリング方法

Country Status (3)

Country Link
US (1) US8533368B2 (ja)
JP (1) JP4779010B2 (ja)
WO (1) WO2007097017A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5239769B2 (ja) * 2008-11-14 2013-07-17 富士通株式会社 リクエスト順序制御システム、リクエスト順序制御方法およびリクエスト順序制御プログラム
CN102929562B (zh) * 2012-10-09 2015-05-06 无锡江南计算技术研究所 基于识别标识的可扩展重排序方法
US9594713B2 (en) * 2014-09-12 2017-03-14 Qualcomm Incorporated Bridging strongly ordered write transactions to devices in weakly ordered domains, and related apparatuses, methods, and computer-readable media
WO2021193542A1 (ja) * 2020-03-27 2021-09-30 日本電気株式会社 通信システム

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04190435A (ja) * 1990-11-26 1992-07-08 Hitachi Ltd マルチプロセッサシステムのメモリアクセス順序保証方式
JP2000099328A (ja) * 1998-09-25 2000-04-07 Nec Corp プロセッサ及びその実行制御方法
JP2000181891A (ja) * 1998-12-18 2000-06-30 Hitachi Ltd 共有メモリアクセス順序保証方式
JP2001051845A (ja) * 1999-08-12 2001-02-23 Hitachi Ltd アウトオブオーダー実行方式
JP2002108703A (ja) * 2000-10-02 2002-04-12 Fujitsu Ltd キャッシュ制御装置及びプロセッサ
JP2003242097A (ja) * 2002-02-15 2003-08-29 Hitachi Ltd クロスコール機能を備えるディスク制御装置
WO2004031944A1 (ja) * 2002-10-04 2004-04-15 Fujitsu Limited プロセッサ及び命令制御方法
JP2006040143A (ja) * 2004-07-29 2006-02-09 Fujitsu Ltd 情報処理装置及びストア命令制御方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778438A (en) * 1995-12-06 1998-07-07 Intel Corporation Method and apparatus for maintaining cache coherency in a computer system with a highly pipelined bus and multiple conflicting snoop requests
JP3110334B2 (ja) 1997-01-23 2000-11-20 甲府日本電気株式会社 アービトレーション制御装置
JP3558001B2 (ja) 2000-05-24 2004-08-25 日本電気株式会社 命令バッファ及びバッファキュー制御
US20050125634A1 (en) * 2002-10-04 2005-06-09 Fujitsu Limited Processor and instruction control method
US20060129764A1 (en) * 2004-12-09 2006-06-15 International Business Machines Corporation Methods and apparatus for storing a command
US7284102B2 (en) * 2005-02-09 2007-10-16 International Business Machines Corporation System and method of re-ordering store operations within a processor
US7457905B2 (en) * 2005-08-29 2008-11-25 Lsi Corporation Method for request transaction ordering in OCP bus to AXI bus bridge design
US8115773B2 (en) * 2007-06-07 2012-02-14 Apple Inc. Serializing command streams for graphics processors

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04190435A (ja) * 1990-11-26 1992-07-08 Hitachi Ltd マルチプロセッサシステムのメモリアクセス順序保証方式
JP2000099328A (ja) * 1998-09-25 2000-04-07 Nec Corp プロセッサ及びその実行制御方法
JP2000181891A (ja) * 1998-12-18 2000-06-30 Hitachi Ltd 共有メモリアクセス順序保証方式
JP2001051845A (ja) * 1999-08-12 2001-02-23 Hitachi Ltd アウトオブオーダー実行方式
JP2002108703A (ja) * 2000-10-02 2002-04-12 Fujitsu Ltd キャッシュ制御装置及びプロセッサ
JP2003242097A (ja) * 2002-02-15 2003-08-29 Hitachi Ltd クロスコール機能を備えるディスク制御装置
WO2004031944A1 (ja) * 2002-10-04 2004-04-15 Fujitsu Limited プロセッサ及び命令制御方法
JP2006040143A (ja) * 2004-07-29 2006-02-09 Fujitsu Ltd 情報処理装置及びストア命令制御方法

Also Published As

Publication number Publication date
US8533368B2 (en) 2013-09-10
WO2007097017A1 (ja) 2007-08-30
JPWO2007097017A1 (ja) 2009-07-09
US20080320185A1 (en) 2008-12-25

Similar Documents

Publication Publication Date Title
KR100708128B1 (ko) 낸드 플래시 메모리 제어 장치 및 방법
JPWO2008155827A1 (ja) キャッシュ制御装置及び制御方法
JP5287301B2 (ja) ディスクリプタ転送装置、i/oコントローラ、及びディスクリプタ転送方法
JP4779010B2 (ja) バッファリング装置およびバッファリング方法
JP4688822B2 (ja) 外部デバイスアクセス装置およびシステムlsi
JP4373255B2 (ja) ダイレクトメモリアクセス制御装置および方法
JP5217786B2 (ja) リクエスト調停装置及びリクエスト調停方法
JP4642531B2 (ja) データ要求のアービトレーション
WO2009098737A1 (ja) 外部デバイスアクセス装置、その制御方法及びシステムlsi
US20080147906A1 (en) DMA Transferring System, DMA Controller, and DMA Transferring Method
JP2007047968A (ja) マルチプロセッサシステム
JP2006313479A (ja) 半導体集積回路装置及びデータ転送方法
US20080209085A1 (en) Semiconductor device and dma transfer method
JPH11232213A (ja) 入出力装置におけるデータ転送方式
US11010318B2 (en) Method and apparatus for efficient and flexible direct memory access
JP4631442B2 (ja) プロセッサ
JP2005107873A (ja) 半導体集積回路
JP5000858B2 (ja) データ処理装置
JP2000227895A (ja) 画像データ転送装置および画像データ転送方法
JP2007109199A (ja) バッファ装置、、バッファ装置の制御方法、情報処理装置
JP2018120448A (ja) 演算処理装置および情報処理システム
JP6992616B2 (ja) データ転送装置、データ転送方法、プログラム
JP2007087244A (ja) コプロセッサ及びコンピュータシステム
JP4509946B2 (ja) 割り込み優先順位設定回路
JP3467188B2 (ja) 多重化バスの順序保証システム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110207

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110329

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110526

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

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

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140708

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees