JP5625737B2 - 転送装置、転送方法および転送プログラム - Google Patents

転送装置、転送方法および転送プログラム Download PDF

Info

Publication number
JP5625737B2
JP5625737B2 JP2010237859A JP2010237859A JP5625737B2 JP 5625737 B2 JP5625737 B2 JP 5625737B2 JP 2010237859 A JP2010237859 A JP 2010237859A JP 2010237859 A JP2010237859 A JP 2010237859A JP 5625737 B2 JP5625737 B2 JP 5625737B2
Authority
JP
Japan
Prior art keywords
request
stored
order control
requests
address range
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
JP2010237859A
Other languages
English (en)
Other versions
JP2012093798A (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
Priority to JP2010237859A priority Critical patent/JP5625737B2/ja
Priority to EP11176036A priority patent/EP2447851A1/en
Priority to US13/195,064 priority patent/US20120102293A1/en
Publication of JP2012093798A publication Critical patent/JP2012093798A/ja
Application granted granted Critical
Publication of JP5625737B2 publication Critical patent/JP5625737B2/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/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、転送装置、転送方法および転送プログラムに関する。
従来、メモリに記憶された情報に対する処理の要求を転送する順序を制御することで、処理を実行する順序を制御する技術が知られている。このような転送装置の一例として、I/O(Input Output)装置から受信した処理の要求を一時的に記憶し、処理を実行するシステムコントローラに対して、記憶した要求を送信するブリッジ装置が知られている。
図21は、従来のブリッジ装置を説明するための図である。図21に示す例では、ブリッジ装置は、処理の対象となるメモリのアドレスと情報に対する処理の内容とを示す要求をI/O装置から受信する。そして、ブリッジ装置は、複数の要求を並列処理するシステムコントローラに対して、I/O装置から受信した要求を送信する。
ここで、システムコントローラは、処理を効率的に実行するため、メモリに格納された情報の一部を、所定のキャッシュライン単位で自装置にキャッシュする。また、システムコントローラは、自装置にキャッシュされた情報がメモリに格納された情報のうち、どのアドレスに格納された情報であるかを示すTAGメモリを有する。
そして、システムコントローラは、要求を受信した場合には、受信した要求が示すメモリのアドレスを用いて、TAGメモリを検索するスヌープを実行する。その後、システムコントローラは、スヌープの実行結果に応じて、要求が示す処理の内容を実行するとともに、実行した処理に合わせて、自装置のキャッシュとTAGメモリの内容とを更新する。
一方、I/O装置は、発行順序通りに実行される要求(NIR:Non−Interleaved−Request)と、発行順序とは無関係に実行される要求(IR:Interleaved−Request)とを発行する。このため、ブリッジ装置は、自装置に記憶された要求にNIRが含まれる場合には、NIRの順序関係を保持しつつ要求を送信する。
図22は、従来のブリッジ装置が有する記憶領域を説明するための図である。例えば、ブリッジ装置は、図22に示す例では、個々の要求を格納する複数の記憶領域であるQ#0〜#(N−1)を有する。また、各記憶領域Q#0〜#(N−1)は、ブリッジ装置が要求を受信した順序を示すエントリー間関係情報と、格納された要求がNIRであるか否かを示すエントリー状態フラグとを有する。
このようなブリッジ装置は、I/O装置から要求を受信した場合には、受信した要求を解析し、受信した要求がNIRであるか否かを判別する。そして、ブリッジ装置は、受信した要求がNIRであると判別した場合には、受信した要求をいずれかの記憶領域に格納し、格納した要求がNIRであることを示すエントリー状態フラグを設定する。また、ブリッジ装置は、要求を格納した記憶領域に、要求を受信した順序をエントリー間関係情報として記憶する。
その後、ブリッジ装置は、各記憶領域のエントリー状態フラグとエントリー間関係情報とに基づいて、一番初めに受信したNIRをシステムコントローラへ送信する。また、ブリッジ装置は、送信したNIRの実行結果を応答としてシステムコントローラから受信した場合には、送信したNIRの次に受信したNIRをシステムコントローラへ送信する。また、ブリッジ装置は、IRをI/Oから受信した場合には、システムコントローラからの応答を待たずに、IRをシステムコントローラへ送信する。
図23は、ブリッジ装置が実行する処理の流れを説明するための図である。図23に示す例では、ブリッジ装置は、I/O装置からNIR#a−0とIR#b−0とを受信する(図23中(1)、(2))。このような場合には、ブリッジ装置は、NIR#a−0をシステムコントローラへ送信するとともに、NIR#a−0の応答を待たずにIR#b−0をシステムコントローラへ送信する(図23中(3)〜(6))。
このような場合には、システムコントローラは、受信したNIR#a−0とIR#b−0とを並列に実行する(図23中(7)、(8))。その後、システムコントローラは、NIR#a−0とIR#b−0との実行結果を応答としてブリッジ装置へ送信する(図23中(9)、(10))。
つまり、ブリッジ装置は、図24に示すように、NIR#a−0に対する応答を受信せずとも、IR#b−0の要求をシステムコントローラへ送信する。なお、図24は、ブリッジ装置が実行する処理の流れを説明するためのタイムチャートであり、左から右の方向へ時間が経過するものとする。
国際公開第2007/097017号
しかしながら、上述したNIRに対する応答を待たずにIRを送信する技術では、各要求が示すメモリのアドレスとは無関係に要求を送信するので、メモリに格納された情報に対する処理を効率的に実行させることができないという問題があった。以下、図25〜図27を用いて説明する。
図25は、システムコントローラの処理性能の低下を説明するための図(1)である。図25に示す例では、システムコントローラは、ブリッジ装置から要求#1〜#4を受信する。しかし、システムコントローラは、要求#1〜#4が示すアドレスが同一のキャッシュラインアドレスに含まれる場合には、キャッシュの整合性を保持するため、要求#1〜#4のスヌープを同時に行わず、要求#1のスヌープのみを実行する。
そして、システムコントローラは、要求#1が示す処理の内容を実行し、実行した処理に合わせてキャッシュとTAGメモリとの更新が終了するまでは、要求#2〜#4のスヌープを拒否する。つまり、システムコントローラは、同一のキャッシュラインアドレスに含まれるアドレスを示す要求を複数受信した場合には、キャッシュの整合性を保持するため、後続の要求を滞留させる結果、効率的な処理を実行することができない。
図26は、システムコントローラの処理性能の低下を説明するための図(2)である。図26に示す例では、ブリッジ装置は、同一のキャッシュラインアドレスに含まれるアドレスを示すIR#a−0、IR#a−1を受信する(図26中(1)、(2))。このような場合には、ブリッジ装置は、IR#a−0とIR#a−1とをシステムコントローラへ送信する(図26中(3)〜(5))。
しかし、システムコントローラは、IR#a−0の処理が完了し、キャッシュとTAGメモリとの更新が終了するまでは、IR#a−1のスヌープを実行することができず、IR#a−1を滞留させてしまう(図26中(6)〜(9))。
このため、図27のタイムチャートに示すように、ブリッジ装置は、IR#a−0とIR#a−1とを同時にシステムコントローラへ送信した場合には、IR#a−1の実行を滞留させ、システムコントローラの処理性能を低下させてしまう。
開示の技術は、一側面では、メモリに格納された情報に対する処理を効率的に実行させる。
開示の技術は、一側面では、メモリに格納された情報に対する処理の要求を、処理の対象となるデータをキャッシュメモリに保持する単位となるドレス範囲ごとに記憶可能な複数の記憶部を有する転送装置である。また、転送装置は、第一の装置から受信した要求を解析し、要求された処理の対象となるデータが格納されたメモリアドレスを内包するアドレス範囲を特定する特定する。そして、転送装置は、受信した要求を特定したアドレス範囲に対応する記憶部に格納する。その後、転送装置は、各記憶部に格納した要求が第二の装置によって実行されているか否かを記憶部ごとに判別する。そして、転送装置は、要求が実行されていないと判別された記憶部に格納されている要求を第二の装置へ送信する。
一側面では、メモリに格納された情報に対する処理を効率的に実行させる。
図1は、実施例1に係る転送装置を説明するための図である。 図2は、実施例2に係るI/Oコントローラを説明するための図である。 図3は、実施例2に係るROUを説明するための図である。 図4は、IRQを説明するための図である。 図5は、キャッシュラインを説明するための図である。 図6は、NIRQを説明するための図である。 図7は、要求の振分けを説明するための図である。 図8は、enqueue処理と送信処理との流れを説明するための図である。 図9は、実施例2に係るI/Oコントローラが要求のアドレス範囲に応じて要求を送信する処理を説明するための図である。 図10は、実施例2に係るI/Oコントローラの処理の流れを説明するためのタイムチャートである。 図11は、queueを説明するための図である。 図12は、enqueue処理を説明するための図である。 図13は、要求の発行処理を説明するための図である。 図14は、dequeue処理を説明するための図である。 図15は、実施例2に係るROUの処理の流れを説明するためのフローチャートである。 図16は、フィラーが実行する処理の流れを説明するためのフローチャートである。 図17は、アービターが実行する処理の流れを説明するためのフローチャートである。 図18は、トランスミッタが実行する処理の流れを説明するためのフローチャートである。 図19は、レシーバが実行する処理の流れを説明するためのフローチャートである。 図20は、転送プログラムを実行するコンピュータの一例を説明するための図である。 図21は、従来のブリッジ装置を説明するための図である。 図22は、従来のブリッジ装置が有する記憶領域を説明するための図である。 図23は、ブリッジ装置が実行する処理の流れを説明するための図である。 図24は、ブリッジ装置が実行する処理の流れを説明するためのタイムチャートである。 図25は、システムコントローラの処理性能の低下を説明するための図(1)である。 図26は、システムコントローラの処理性能の低下を説明するための図(2)である。 図27は、従来のブリッジ装置の処理の流れを説明するためのタイムチャートである。
以下に添付図面を参照して本願に係る転送装置、転送方法および転送プログラムについて説明する。
以下の実施例1では、図1を用いて、転送装置の一例を説明する。なお図1は、実施例1に係る転送装置を説明するための図である。
図1に示すように、転送装置1は、記憶部2、記憶部3、記憶部4を有する。なお、転送装置1は、図示した記憶部以外にも、記憶部を有するものとする。また、転送装置1は、特定部5、格納部6、判別部7、送信部8を有する。転送装置1は、第1の情報処理装置から受信した要求を、キャッシュメモリを有する第2の情報処理装置へ発行する。記憶部2〜4は、メモリに格納された情報に対する処理の要求を、処理を実行する単位となる所定の大きさで区切られたキャッシュラインアドレスごとに記憶する。特定部5は、要求を第一の情報処理装置から受信した場合には、受信した要求を解析し、第2の情報処理装置が有するキャッシュのうち、要求された処理の対象となるデータを格納するメモリアドレスを内包するキャッシュラインアドレスを特定する。
格納部6は、受信した要求を特定部5によって特定されたキャッシュラインアドレスごとに異なる記憶部2〜4に格納する。判別部7は、格納部6によって各記憶部2〜4に格納された要求が第二の情報処理装置によって実行されているか否かを判別する。送信部8は、判別部7によって記憶部に格納されたいずれの要求も第二の情報処理装置によって実行されていないと判別された記憶部(例えば、記憶部2)に格納された要求を第二の情報処理装置へ送信する。
このように、転送装置1は、メモリに格納された情報に対する処理の要求を受信した場合には、要求された処理の対象となるデータを格納するメモリアドレスを含んだキャッシュラインアドレスを特定する。そして、転送装置1は、特定したキャッシュラインアドレスごとに異なる記憶部へ要求を格納する。その後、転送装置1は、各記憶部2〜4に格納された要求が第二の情報処理装置によって実行されているか否かを判別する。そして、転送装置1は、第二の情報処理装置によって実行されていないと判別された要求のみが格納されている記憶部(例えば、記憶部2)に記憶されている要求を第二の情報処理装置へ送信する。一方、転送装置1は、格納された要求が第二の情報処理装置によって実行されていると判別された記憶部(例えば、記憶部3)からは、新たな要求を第二の情報処理装置へ送信しない。
つまり、転送装置1は、第二の情報処理装置に対して、互いに異なるキャッシュラインアドレスに含まれるアドレスを処理の対象とする要求のみを送信する。このため、転送装置は、第二の情報処理装置に効率的な処理を実行させることができる。
例えば、第二の情報処理装置は、同一のキャッシュラインアドレスに含まれるアドレスを処理の対象とする複数の要求を受信した場合には、キャッシュの整合性を保持するため、いずれか一つの要求を実行している間、後続の要求を滞留させてしまう。しかし、転送装置1は、処理対象を含むキャッシュラインアドレスごとに異なる記憶部へ要求を格納し、各記憶部に格納された要求が第二の情報処理装置によって実行されているか否かを判別する。
そして、転送装置1は、第二の情報処理装置によって実行されていないと判別された要求のみが格納されている記憶部に記憶されている要求を第二の情報処理装置へ送信する。つまり、転送装置1は、第二の情報処理装置が実行している要求とは異なるキャッシュラインアドレスを処理対象とする要求のみを送信する。このため、転送装置1は、第二の情報処理装置による要求の滞留を解消し、効率的な処理を第二の情報処理装置に実行させることができる。
以下の実施例2では、転送装置の一例として、I/O(Input Output)コントローラを説明する。
まず、図2を用いて、実施例2に係るI/Oコントローラを説明する。図2に示すように、I/Oコントローラ10は、FIFO(First In First Out)20、ROU(Request-Ordering-Unit)30を有する。また、I/Oコントローラ10は、メモリに格納された情報に対する処理の要求を発行するI/O装置40と、要求が示す処理を実行するシステムコントローラ41と接続される。また、システムコントローラ41は、メモリ42と接続される。
ここで、I/O装置40とI/Oコントローラ10とは、PCI(Peripheral Component Interconnect)−Expressのbusで接続されているものとする。また、I/O装置40は、I/O装置40に接続されるHDD(Hard Disk Drive)等の記憶装置から送信された要求をI/Oコントローラ10へ送信するものとする。
また、システムコントローラ41はキャッシュメモリを有し、メモリ42に格納された情報を256bit単位でキャッシュするものとする。つまり、システムコントローラ41が有するキャッシュメモリのキャッシュラインのサイズは256bitであるものとする。また、I/Oコントローラ10は、64bitの要求を送受信するものとする。
また、I/Oコントローラ10は、「DMA(Direct Memory Access)read」又は「DMA write weakly ordered」又は「DMA strongly weakly ordered」を要求として受信するものとする。ここで、「DMA write weakly ordered」と「DMA read」は、実行順制御が不要な要求であるIR(Interleaved-Request)である。また「DMA strongly weakly ordered」とは、実行順制御が必要な要求であるNIR(Non‐Interleaved‐Request)である。
このようなI/Oコントローラ10は、I/O装置40から要求を受信した場合には、受信した要求をFIFO20に蓄積し、ROU30を用いて、FIFO20に蓄積した要求をシステムコントローラ41へ送信する。
次に、図3を用いて、実施例2に係るROU30が有する各部について説明する。図3は、実施例2に係るROUを説明するための図である。図3に示すように、ROU30は、フィラー31、IRQ(Interleaved-Request-Queue)#0〜IRQ#7、NIRQ(Non‐Interleaved‐Request-Queue)32を有する。また、ROU30は、アービター33、トランスミッタ34、レシーバ35を有する。
各IRQ#0〜#7は、メモリ42に格納された情報に対する処理の要求のうち、実行順制御が不要な要求であるIRを記憶する記憶部である。以下、図4を用いて、各IRQ#0〜#7について具体的に説明する。
図4に示す例では、IRQは、コマンド情報とアドレス情報とを有する。ここで、各IRQ#0〜#7には、同一のコマンド種別であって、同一のキャッシュラインアドレスに含まれるアドレスを処理の対象とするIRが格納される。ここで、コマンド情報は、格納された要求のコマンド種別を示す。例えば、コマンド情報には「DMA write weakly ordered」又は「DMA read」を示す情報が格納される。
また、アドレス情報は、格納された各要求が処理対象とするアドレスを含んだキャッシュラインアドレスを示すアドレス情報を示す。つまり、一つのIRQには、同一のコマンド種別であって、同一のキャッシュラインアドレスに含まれるアドレスを処理対象とする複数の要求が格納される。例えば、アドレス情報には、格納された各要求による処理の対象となるデータが格納されたメモリアドレスの上位ビットを示す情報が格納される。
つまり、アドレス情報には、格納された各要求による処理の対象となるデータが格納されたメモリアドレスを内包するキャッシュラインアドレスを示す情報が格納される。このため、一つのIRQには、同じ処理内容の要求であって、処理の対象であるデータが格納されたメモリアドレスの上位ビットが同一である要求が格納される。
例えば、実施例2に関わるシステムコントローラ41は、メモリ42に格納された情報を「256」bit単位で自装置内のキャッシュメモリにキャッシュする。このため、システムコントローラ41は、キャッシュラインサイズを「256」bitとして、メモリ42に記憶された情報をキャッシュする。
図5は、キャッシュラインを説明するための図である。図5に示すように、アドレス「0x00001088」、「0x00001152」、「0x00001216」は、アドレス「0x00001024」と同一のキャッシュラインアドレスに含まれるアドレスとなる。また、アドレス「0x00001280」、「0x00001344」、「0x00001408」、「0x00001472」は、アドレス「0x00001024」とは異なるキャッシュラインアドレスに含まれるアドレスとなる。
ここで、図5中のブロックとは、CPUがメモリのディレクトリ情報を管理する単位を言う。例えば、CPUは、ブロックのサイズが「64」bitである場合には、メモリに記憶された情報を、「64」bitごとに管理する。このような場合には、図5に示す例では、アドレス「0x00001088」、「0x00001152」、「0x00001216」、「0x00001280」、「0x00001344」、「0x00001408」、「0x00001472」は、アドレス「0x00001024」と異なるブロックに含まれるデータが格納されたアドレスとなる。
なお、以下の説明では、同一のキャッシュラインアドレスに内包されるアドレスを「同一のアドレス範囲に含まれるアドレス」として説明する。このため、図5に示す例では、アドレス「0x00001024」に対する要求は、アドレス「0x00001024」と同一アドレス範囲内の同じアドレスに対する要求である。また、アドレス「0x00001088」、「0x00001152」、「0x00001216」に対する要求は、アドレス「0x00001024」に対する要求と同一アドレス範囲内の異なるアドレスに対する要求となる。また、アドレス「0x00001280」、「0x00001344」、「0x00001408」、「0x00001472」に対する要求は、アドレス「0x00001024」に対する要求と同一アドレス範囲外の要求となる。
図4に戻って、IRQは、複数の記憶領域であるエントリー#0〜#3を有する。各エントリー#0〜#3は、それぞれ一つずつ要求を格納することができる記憶領域である。また、各エントリー#0〜#3は、格納された要求を一意に識別するためのタグ情報#0〜#3を有する。
また、各エントリー#0〜#3は、各エントリーに格納された要求の発行処理を制御するための情報であるstate machine#0〜#3を有する。state machine#0〜#3は、「無効」、「発行可能」、「応答待ち」を示す状態のいずれかに遷移することによって、各エントリー#0〜#3に要求を格納する処理と、各エントリー#0〜#3に格納されたIRの発行処理とを制御する。
新たな要求は、ステートマシンが無効のエントリーに格納される。例えば、後述するフィラー31は、state machine#0が「無効」を示すエントリー#0に新たな要求を格納する。また、後述するトランスミッタ34は、state machine#0が「発行可能」を示す状態である場合には、エントリー#0に格納されている要求をシステムコントローラ41へ送信する。また、後述するトランスミッタ34は、「応答待ち」状態のstate machineを有するIRQからは、要求をシステムコントローラ41へ送信せず、他のIRQに格納された要求を送信する。
図3に戻って、NIRQ32は、メモリ42に格納された情報に対する処理の要求のうち、実行順序が保持される要求であるNIRを記憶する記憶部である。図6は、NIRQを説明するための図である。具体的には、NIRQ32は、図6に示すように、複数の記憶領域としてエントリー#0〜#7を有し、各エントリー#0〜#7に一つずつNIRを格納する。
また、各エントリー#0〜#7は、それぞれ独立したコマンド情報とアドレス情報とタグ情報とを記録する領域を有する。ここで、各エントリー#0〜#7のコマンド情報とは、各エントリー#0〜#7に格納されたNIRのコマンド種別を示す情報である。
また、各エントリー#0〜#7のアドレス情報とは、各エントリー#0〜#7に格納されたNIRによる処理の対象となるデータが格納されたメモリアドレスを含むアドレス範囲を示す情報である。具体的には、アドレス情報には、NIRによる処理の対象となるデータが格納されたメモリアドレスの上位ビットが格納される。
また、タグ情報とは、各エントリー#0〜#7に格納されたNIRを一意に示す情報である。また、各エントリー#0〜#7は、各エントリー#0〜#7に格納されたNIRが有効か否かを示すバリッドを記録する領域を有する。
また、各エントリー#0〜#7は、NIRQ32に格納された要求を受信した順序と、各IRQ#0〜#7に格納された要求を受信した順序との関係を示す順序制御フラグが格納されたスコアボードをそれぞれ有する。加えて、スコアボードに記憶される順序制御フラグは、各エントリー#0〜#7に格納された要求が処理の対象とするアドレス範囲と、各IRQ#0〜#7に格納された各要求が処理の対象とするアドレス範囲との関係も示す。
つまり、各エントリー#0〜#7が有するスコアボードには、各エントリーに格納された要求による処理の対象となるデータが格納されたメモリアドレスを含むアドレス範囲と、各IRQ#0〜#7に格納された要求による処理の対象となるデータが格納されたメモリアドレスを含むアドレス範囲との関係と、各エントリーに格納された要求を受信した順序と各IRQ#0〜#7に格納された各要求を受信した順序との関係とを示す順序制御フラグが格納される。
このため、後述するアービター33は、スコアボードに格納された順序制御フラグを用いて、NIRQ32の各エントリー#0〜#7に格納されたNIRよりも先にI/Oコントローラ10が受信したIRであって、同じアドレス範囲に含まれるアドレスに格納された情報を処理の対象とするIRが格納されたIRQを容易に検出することができる。
以下、スコアボードについて具体的に説明する。各エントリー#0〜#7は、それぞれ8個の格納領域を有するスコアボードを有する。また、各スコアボードの各格納領域は、各IRQ#0〜#7のいずれかと対応付けられる。また、スコアボードの各格納領域には、「1」又は「0」の値が格納される。後述するように、フィラー31は、NIRQ32の各エントリー#0〜#7に格納された要求と同一のアドレス範囲に含まれるアドレスを処理対象とする要求が格納されたIRQを検索する。そして、フィラー31は、検索されたIRQと対応付けられたスコアボードの格納領域に「1」を格納する。
つまり、スコアボードは、NIRQ32の各エントリー#0〜#7ごとに、IRQ#0〜#7に格納された要求のうち同一アドレス範囲に含まれるアドレスを処理対象とする要求であって、NIRQ32の各エントリー#0〜#7に格納された要求よりもI/Oコントローラ10によって先に受信された要求が格納されたIRQと対応付けられた格納領域に「1」が格納される。
このため、例えば、スコアボードは、IRQ#1と対応付けられた記憶領域に「1」が格納されていた場合には、NIRQ32のエントリー#0に格納された要求と同一のアドレス範囲に含まれるアドレスを処理対象とする要求であって、NIRQ32のエントリー#0に格納された要求よりも先に受信した要求がIRQ#1に格納されていることを示すことができる。
このように、スコアボードは、NIRQ32に格納された要求と各IRQ#0〜#7に格納された要求とをI/Oコントローラ10が受信した順序を示すフラグが格納される。このようなスコアボードの一例として、エントリー#0のスコアボードが有する格納領域のうち、IRQ#0と対応付けられた格納領域に「1」が格納されている例について説明する。このようなスコアボードは、NIRQ32のエントリー#0に格納された要求と同一のアドレス範囲を処理対象とし、かつ、NIRQ32のエントリー#0に格納された要求よりも先にI/Oコントローラ10によって受信された要求がIRQ#0に格納されていることを示す。
また、NIRQ32は、要求の発行処理を制御するための情報であるstate machine headを有する。state machine headは、「発行可能」を示す状態と「応答待ち」を示す状態とのいずれかに遷移することによって、各エントリー#0〜#7に格納された要求の発行処理を制御する。
次に、state machine headの状態と実行される処理の一例について説明する。例えば、後述するトランスミッタ34は、state machine headが「発行可能」を示す場合には、NIRQ32の各エントリー#0〜#7に格納された要求をシステムコントローラ41へ送信する。また、後述するトランスミッタ34は、state machine headが「応答待ち」である場合には、NIRQ32の各エントリー#0〜#7に格納された要求をシステムコントローラ41へ送信しない。
図3に戻って、フィラー31は、要求をI/O装置40から受信した場合には、受信した要求を解析し、要求がNIRであるか否かを判別する。また、フィラー31は、受信した要求を解析し、要求された処理の対象となるデータが格納されたメモリアドレスを内包するアドレス範囲を特定する。そして、フィラー31は、要求がNIRであると判別した場合には、要求をNIRQ32に格納する。また、フィラー31は、要求がNIRではないと判別した場合には、特定したアドレス範囲ごとに異なるIRQ#0〜#7に要求を格納する。
具体的には、フィラー31は、FIFO20に格納された要求を取得する。そして、フィラー31は、取得した要求を解析し、要求された処理の対象となるデータが格納されたメモリアドレスを内包するアドレス範囲と、要求された処理の内容を特定する。その後、フィラー31は、特定した処理の内容が「DMA write weakly ordered」(IR)又は「DMA read」(IR)である場合には、図7中の点線で示すように、特定したアドレスに応じたIRQに取得した要求を格納する。
また、フィラー31は、特定した処理の要求が「DMA write strongly ordered」(NIR)である場合には、図7中の実線で示すように、NIRQ32に取得した要求を格納する。なお、図7は、要求の振分けを説明するための図である。
以下、フィラー31が取得した要求をIRQ#0〜#7、又は、NIRQ32に格納する処理について詳しく説明する。以下の説明では、フィラー31が取得した処理の内容が「DMA write weakly ordered」(IR)である場合、「DMA write strongly ordered」(NIR)である場合、「DMA read」(IR)である場合を説明する。
まず、フィラー31が取得した処理の内容が「DMA write weakly ordered」(IR)である場合について説明する。フィラー31は、取得した要求がIRであると判別した場合には、特定したアドレス範囲と同一のアドレス情報が格納され、かつ、特定した処理の内容と同一のコマンド情報が格納されたIRQをIRQ#0〜#7から検索する。
フィラー31は、検索の結果、特定したアドレス範囲と同一のアドレス情報が格納され、かつ、特定した処理の内容と同一のコマンド情報が格納されたIRQを検出した場合には、検出したIRQに空のエントリーがあるか否かを判別する。なお、空のエントリーとは、要求が格納されていないエントリーである。
そして、フィラー31は、検出したIRQに空のエントリーがあると判別した場合には、検出したIRQが有する空のエントリーに取得した要求を格納するenqueue処理を実行する。また、フィラー31は、enqueue処理を実行した場合には、要求を格納したエントリーが有するstate machineの状態を発行可能に遷移させる。
フィラー31は、検出したIRQに空のエントリーが無いと判別した場合には、コマンド情報とアドレス情報とが格納されていないIRQをIRQ#0〜#7から検索する。つまり、フィラー31は、要求が格納されていない空きIRQを検索する。そして、フィラー31は、検索の結果、空きIRQを検出した場合には、検出した空きIRQに取得した要求を格納するenqueue処理を実行する。また、フィラー31は、enqueue処理を実行した場合には、要求を格納したエントリーが有するstate machineの状態を発行可能に遷移させる。
また、フィラー31は、空きIRQに要求を格納した場合には、要求を格納したIRQに、特定したアドレス範囲をアドレス情報として格納するとともに、要求を格納したIRQに、特定した処理の内容をコマンド情報として格納する。また、フィラー31は、空きIRQが検出されなかった場合には、空きIRQができるまで処理をストールする。
フィラー31は、特定したアドレス範囲と同一のアドレス情報が格納され、かつ、特定した処理の内容と同一のコマンド情報が格納されたIRQが検出されなかった場合には、空きIRQを検索する。そして、フィラー31は、検索の結果、空きIRQを検出した場合には、検出した空きIRQに取得した要求を格納するenqueue処理を実行するとともに、要求を格納したIRQにアドレス情報とコマンド情報とを格納する。また、フィラー31は、空きIRQが検出されなかった場合には、空きIRQができるまで処理をストールする。
次に、フィラー31が取得した処理の内容が「DMA write strongly ordered」(NIR)である場合について説明する。フィラー31は、取得した要求がNIRであると判別した場合には、NIRQ32に空きエントリーがあるか否かを判別する。
そして、フィラー31は、NIRQ32に空きエントリーがあると判別した場合には、NIRQ32の空きエントリーに取得した要求を格納するenqueue処理を実行する。また、フィラー31は、NIRQ32が有する各エントリー#0〜#7のバリッドが全て「0」である際にenqueue処理を実行した場合には、state machine headの状態を発行可能状態に遷移させる。
また、フィラー31は、NIRQ32が有する各エントリー#0〜#7のバリッドのいずれかが「1」であった場合には、NIRQ32が有する各エントリー#0〜#7のうち、バリッドに「1」が格納され、かつ、最も最後に受信された要求が格納されたエントリーの次のエントリーに要求を格納する。
また、フィラー31は、特定したアドレス範囲をアドレス情報として、要求を格納したエントリーに格納するとともに、特定した処理の内容をコマンド情報として、要求を格納したエントリーに格納する。また、フィラー31は、要求を格納したエントリーのバリッドに「1」を格納する。
また、フィラー31は、特定したアドレス範囲と同一のアドレス情報を有するIRQをIRQ#0〜#7から検索する。そして、フィラー31は、検索の結果、特定したアドレス範囲と同一のアドレス情報を有するIRQを検出した場合には、検出したIRQが有するコマンド情報に「DMA write weakly ordered」が格納されているか否かを判別する。
そして、フィラー31は、検出したIRQのコマンド情報に「DMA write weakly ordered」が格納されていると判別した場合には、要求を格納したNIRQのエントリーが有するスコアボードの格納領域のうち、検出したIRQと対応付けられた格納領域に「1」を格納する。また、フィラー31は、検出したIRQのコマンド情報に「DMA read」が格納されていると判別した場合には、要求を格納したNIRQのエントリーが有するスコアボードの格納領域のうち、検出したIRQと対応付けられた格納領域に「0」を格納する。
つまり、フィラー31は、NIRQ32に格納された要求を受信した順序及び各要求のアドレス範囲と、各IRQ#0〜#7に格納された要求を受信した順序及び各要求のアドレス範囲との関係を示すスコアボードを、NIRを格納したNIRQのエントリに作成する。また、フィラー31は、NIRQ32に空きエントリーがないと判別した場合には、NIRQ32に空きエントリーができるまで処理をストールする。
次に、フィラー31が取得した処理の内容が「DMA read」(IR)である場合について説明する。フィラー31は、処理の内容が「DMA read」であると判別した場合には、特定されたアドレス範囲と同一のアドレス情報が格納されたIRQをIRQ#0〜#7から検索する。また、フィラー31は、検索の結果、特定されたアドレス範囲と同一のアドレス情報が格納されたIRQを検出した場合には、検出したIRQに格納されているコマンド情報が「DMA write weakly ordered」であるか否かを判別する。
そして、フィラー31は、検出したIRQに格納されているコマンド情報が「DMA write weakly ordered」であると判別した場合には、検出されたIRQに格納されている要求がすべて発行されるまで処理をストールする。つまり、フィラー31は、「DMA read」の要求が「DMA write weakly ordered」よりも先に実行されないように、「DMA write weakly ordered」が送信されるまで、処理をストールする。
また、フィラー31は、検索の結果、特定されたアドレス範囲と同一のアドレス情報が格納されているIRQが検出されなかった場合には、特定されたアドレス範囲と同一のアドレス情報が格納されているエントリーをNIRQ32から検索する。そして、フィラー31は、特定されたアドレス範囲と同一のアドレス情報が格納されているエントリーをNIRQ32から検出した場合には、後述するトランスミッタ34によって検出されたエントリーに格納されているNIRが送信されるまで、処理をストールする。
つまり、フィラー31は、「DMA read」の要求が「DMA write strongly ordered」よりも先に実行されないように、「DMA write strongly ordered」が送信されるまで、処理をストールする。
また、フィラー31は、特定されたアドレス範囲と同一のアドレス情報が格納されているエントリーをNIRQ32から検出しなかった場合には、取得した要求と同一の要求が格納されているIRQをIRQ#0〜#7から検索する。つまり、フィラー31は、特定したアドレス範囲と同一のアドレス情報が格納され、かつ、特定した処理の内容と同一のコマンド情報が格納されているIRQをIRQ#0〜#7から検索する。
フィラー31は、検索した結果、取得した要求と同一の要求が格納されているIRQを検出した場合には、検出したIRQに空きエントリーがあるか否かを判別する。そして、フィラー31は、空きエントリーがあると判別した場合には、検出したIRQに取得した要求を格納するenqueue処理を実行するとともに、エントリーのstate machineを発行可能状態に遷移させる。
また、フィラー31は、検出したIRQに空きエントリーがないと判別した場合には、空きIRQを検索し、空きIRQが検出された場合には、検出された空きIRQに要求を格納するenqueue処理を実行する。また、フィラー31は、要求を格納したエントリーのstate machineの状態を発行可能状態に遷移させる。また、フィラー31は、空きIRQを検索した結果、空きIRQが検出されなかった場合には、空きIRQができるまで処理をストールする。
図3に戻って、アービター33は、フィラー31によって各IRQ#0〜#7に格納されている要求がシステムコントローラ41によって実行されているか否かを、IRQ#0〜#7ごとに判別する。また、アービター33は、NIRQ32に格納されている要求のうち、最も先にNIRQ32に格納された要求によって処理の対象となるデータが格納されたメモリアドレスを内包するアドレス範囲と同一のアドレス範囲に内包されたメモリアドレスに格納された情報を処理の対象とする要求がシステムコントローラ41によって実行されているか否かを判別する。
具体的には、アービター33は、NIRQ32が有するstate machine headの状態が発行可能状態であるか否かを判別する。そして、アービター33は、state machine headの状態が発行可能状態であると判別した場合には、バリッドに「1」が格納されており、かつ、最も先に受信されたNIRが格納されたエントリーをNIRQ32のエントリー#0〜#7から検索する。
そして、アービター33は、検索の結果、バリッドに「1」が格納されており、かつ、最も先にNIRが格納されたエントリーを検出した場合には、検出したエントリーが有するスコアボードに「1」が格納されているか否かを判別する。そして、アービター33は、スコアボードに「1」が格納されていないと判別した場合には、検出されたエントリーをトランスミッタ34へ通知する。
また、アービター33は、スコアボードに「1」が格納されていると判別した場合には、「1」が格納されている格納領域と対応付けられたIRQを特定する。そして、アービター33は、特定したIRQのうち、state machineが発行可能状態であるエントリーを有し、かつ、state machineが応答待ち状態であるエントリーを有しないIRQを検索する。
また、アービター33は、検索の結果、要件に合致するIRQを検出した場合には、例えばラウンドロビンアービトレーション方式を用いて、readの要求を通知するかwriteの要求をシステムコントローラに通知するかを決定する。そして、アービター33は、readの要求をシステムコントローラに通知すると決定した場合には、検出したIRQのうち、格納された要求の量が最も少ないIRQをトランスミッタ34へ通知する。また、アービター33は、writeの要求をシステムコントローラに通知すると決定した場合には、検出したIRQのうち、格納された要求の量が最も多いIRQをトランスミッタ34へ通知する。
また、アービター33は、NIRQのstate machine headの状態が発行可能状態ではないと判別した場合には、各IRQ#0〜#7から、state machineが発行可能状態となっているエントリーを有するIRQを検索する。そして、アービター33は、検索の結果、state machineが発行可能状態となっているエントリーを有するIRQを検出した場合には、検出したIRQのうち、応答待ち状態のstate machineを有していないIRQを検索する。
その後、アービター33は、検索の結果、応答待ち状態のstate machineを有していないIRQを検出した場合には、ラウンドロビンアービトレーション方式を用いて、readの要求を通知するかwriteの要求を通知するかを決定する。そして、アービター33は、readの要求をシステムコントローラに通知すると決定した場合には、スコアボードを検索し、検出されたIRQと対応付けられた格納領域に「1」が格納されているか否かを判別する。
その後、アービター33は、検出されたIRQと対応付けられたスコアボードの格納領域に「1」が格納されていると判別した場合には、対応付けられた格納領域に「1」が格納されているIRQのうち、格納されている要求の数が最も少ないIRQをトランスミッタ34へ通知する。また、アービター33は、検出されたIRQと対応付けられたスコアボードの格納領域に「1」が格納されていないと判別した場合には、検出されたIRQのうち、格納された要求の数が最も少ないIRQをトランスミッタ34へ通知する。
また、アービター33は、writeの要求をシステムコントローラに通知すると決定した場合には、スコアボードを検索し、検出されたIRQと対応付けられた格納領域に「1」が格納されているか否かを判別する。その後、アービター33は、検出されたIRQと対応付けられたスコアボードの格納領域に「1」が格納されていると判別した場合には、対応付けられた格納領域に「1」が格納されているIRQのうち、格納された要求の数が最も多いIRQをトランスミッタ34へ通知する。
また、アービター33は、検出されたIRQと対応付けられた格納領域に「1」が格納されていないと判別した場合には、検出されたIRQのうち、格納された要求の数が最も多いIRQをトランスミッタ34へ通知する。
一方、アービター33は、特定したIRQのうち、state machineが発行可能状態であるエントリーを有し、かつ、state machineが応答待ち状態であるエントリーを有しないIRQが検出されなかった場合には、処理をアイドル状態にする。その後、アービター33は、再度NIRQ32が有するstate machine headの状態が発行可能状態であるか否かを判別する。
このように、アービター33は、各IRQ#0〜#7が有するstate machineの状態に基づいて、各IRQ#0〜#7に格納された要求がシステムコントローラ41によって実行中であるか否かを判別する。つまり、アービター33は、各IRQ#0〜#7に格納された要求のアドレス範囲と同一のアドレス範囲に含まれるアドレスを処理対象とする要求がシステムコントローラ41によって実行中であるか否かを判別する。
そして、アービター33は、システムコントローラ41によって実行されている要求のアドレス範囲とは異なるアドレス範囲に含まれるアドレスを処理対象とする要求が格納されているIRQをトランスミッタ34に通知する。このため、I/Oコントローラ10は、システムコントローラ41に対して、同一のアドレス範囲に含まれるアドレスを処理対象とする複数の要求を送信することなく、I/O装置40から受信した要求を送信することができる。このため、I/Oコントローラ10は、システムコントローラ41に要求を滞留させることなく、効率的な処理を実行させることができる。
また、アービター33は、スコアボードを用いて、NIRQ32に格納された要求と同一のアドレス範囲を処理対象とし、かつ、NIRQ32に格納された要求よりも先に受信された「DMAwrite weakly ordered」(IR)がいずれかのIRQに記憶されているか否かを判別する。そして、アービター33は、NIRQ32に格納された要求と同一のアドレス範囲を処理対象とし、かつ、NIRQ32に格納された要求よりも先に受信された「DMAwrite weakly ordered」(IR)がいずれかのIRQに記憶されている場合には、先に受信された「DMAwrite weakly ordered」(IR)をシステムコントローラへ送信する。
つまり、アービター33は、NIRQ32が有する各エントリー#0〜#7のスコアボードに基づいて、NIRQ32に格納された要求のうち最も先に格納した要求について、同一のアドレス範囲に内包されたメモリアドレスに格納された情報を処理の対象とするIRがシステムコントローラ41によって実行されているか否かを判別する。このため、アービター33は、NIRQ32に格納された要求の実行順序を保持するとともに、同一のアドレス範囲を処理対象とするNIRとIRをシステムコントローラ41へ送信しない。結果として、I/Oコントローラ10は、システムコントローラ41に効率的な処理を実行させることができる。
トランスミッタ34は、アービター33によって要求が実行されていないと判別された、IRQ又はNIRQ32に格納されている要求をシステムコントローラ41へ送信する。具体的には、トランスミッタ34は、NIRQ32が有するエントリー、又は、要求が格納されたIRQの通知を受信する。このような場合には、トランスミッタ34は、システムコントローラ41が実行中である要求の数を示すOutstanding数が所定の値よりも大きいか否かを判別する。
そして、トランスミッタ34は、Outstanding数が所定の数よりも小さいと判別した場合には、アービター33から通知された要求をシステムコントローラ41へ送信する。つまり、トランスミッタ34は、アービター33から通知されたエントリーに格納されたNIR、または、アービター33から通知されたIRQに格納された要求のうち、最も先に格納された要求をシステムコントローラ41へ送信する。
また、トランスミッタ34は、Outstanding数が所定の値と等しいか所定の値より大きいと判別した場合には、システムコントローラ41に対して送信した要求に対する応答を後述するレシーバ35が受信するまで待機する。そして、トランスミッタ34は、応答を受信した旨を示す信号をレシーバ35から受信した場合には、アービター33から通知された要求をシステムコントローラ41へ送信する。つまり、トランスミッタ34は、アービター33から通知されたエントリーに格納された要求、または、アービター33から通知されたIRQに格納された要求のうち、最も先に格納された要求をシステムコントローラ41へ送信する。
また、トランスミッタ34は、IRQに格納された要求をシステムコントローラ41へ送信した場合には、送信した要求が格納されたエントリーのstate machineを応答待ち状態に遷移させる。また、トランスミッタ34は、一つのIRQに格納された全ての要求を発行した場合には、全ての要求が発行されたIRQと対応付けられたスコアボードの全ての格納領域に「0」を格納する。また、トランスミッタ34は、NIRQ32に格納された要求をシステムコントローラ41へ送信した場合には、NIRQ32が有するstate machine headの状態を応答待ち状態に遷移させる。
レシーバ35は、システムコントローラ41へ送信した要求に対する応答を受信する。具体的には、レシーバ35は、システムコントローラ41から応答を受信した場合には、トランスミッタ34に対して、応答を受信した旨を示す信号を送信する。また、レシーバ35は、受信した応答を解析し、応答がNIRに対する応答であるか否かを判別する。
そして、レシーバ35は、受信した応答がNIRに対する応答であると判別した場合には、NIRQ32が有するエントリー#0〜#7のうち、最も先に要求が格納されたエントリーのバリッドに「0」を格納するdequeue処理を実行する。また、レシーバ35は、受信した応答がNIRに対する応答ではないと判別した場合には、受信した応答に対応する要求を特定する。そして、レシーバ35は、特定した要求が格納されたIRQとエントリーとを判別し、判別されたIRQが有するエントリーのstate machineの状態を無効状態に遷移させる。
例えば、フィラー31、アービター33、トランスミッタ34、レシーバ35とは、電子回路である。ここで、電子回路の例として、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路、またはCPU(Central Processing Unit)やMPU(Micro Processing Unit)などを適用する。
また、FIFO20、各IRQ#0〜#7、NIRQ32は、複数のフリップフロップ(FF)やラッチにより構成されるレジスタファイル、RAM(Random Access Memory)などの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置を用いて構成可能である。
次に、図8を用いて、スコアボードを用いたenqueue処理と送信処理の流れを説明する。図8は、enqueue処理と送信処理との流れを説明するための図である。図8に示す例では、フィラー31によってNIRが新たにNIRQに格納されるものとする。また、新たに格納されるNIRによる処理の対象となるデータが格納されたメモリアドレスを内包するアドレス範囲に含まれるメモリアドレスを処理の対象とする一つの要求がIRQ#2に格納されているものとする。
図8の(1)に示すように、フィラー31は、NIRQ32のエントリー#1に要求を格納した場合には、エントリー#1が有するバリッドに「1」を格納する。また、フィラー31は、エントリー#1に格納した要求のアドレス範囲と同一のアドレス情報を有するIRQ#2を特定する。そして、フィラー31は、図8中(2)に示すように、エントリー#1が有するスコアボードのうち、IRQ#2と対応付けられた格納領域に「1」を格納する。
また、図8中(3)に示すように、アービター33は、エントリー#1のバリッドに「1」が格納されていることを検出する。このため、図8中(4)に示すように、アービター33は、エントリー#1が有するスコアボードを確認し、IRQ#2と対応付けられた格納領域に「1」が格納されていることを検出する。つまり、アービター33は、NIRQ32のエントリー#1に格納された要求と同じアドレス範囲を処理対象とし、かつ、NIRQ32のエントリー#1に格納された要求よりも先に受信された要求がIRQ#2に格納されていると判別する。
このため、図8中(5)に示すように、アービター33は、IRQ#2に格納された要求をトランスミッタ34に通知する。このため、図8中(6)に示すように、トランスミッタ34は、IRQ#2に格納された要求をシステムコントローラに送信するとともに、NIRQ32の各エントリー#0〜#7が有するスコアボードのうち、IRQ#2と対応付けられた全ての格納領域に「0」を格納する。その後、図8中(7)、(8)に示すように、トランスミッタ34は、NIRQ32のエントリー#1に格納された要求をシステムコントローラ41へ送信する。
次に、図9を用いて、I/Oコントローラが要求を送信する処理の流れについて説明する。図9は、実施例2に関わるI/Oコントローラが要求のアドレス範囲に応じて、要求を送信する処理を説明するための図である。
例えば、図9中(1)、(2)に示すように、I/Oコントローラ10は、アドレス範囲「a」に含まれるアドレスを処理対象とする要求としてIR#a−0、IR#a−1・・・を受信する。また、図9中(3)、(4)に示すように、I/Oコントローラ10は、アドレス範囲「b」に含まれるアドレスを処理対象とする要求としてIR#b−0、IR#b−1・・・を受信する。また、図9中(5)、(6)に示すように、I/Oコントローラ10は、アドレス範囲「c」に含まれるアドレスを処理対象とする要求としてIR#c−0、IR#c−1・・・を受信する。
このような場合には、I/Oコントローラ10は、処理対象とする情報が格納されたメモリアドレスが同一のアドレス範囲に含まれない複数の要求をシステムコントローラ41へ送信する。つまり、図9中(7)〜(10)に示すように、I/Oコントローラ10は、IR#a−0、IR#b−0、IR#c−0をシステムコントローラ41へ送信する。このため、図9中(11)〜(14)に示すように、システムコントローラ41は、後続の要求を滞留させることなく、受信した要求IR#a−0、IR#b−0、IR#c−0を並列に実行し、応答をI/Oコントローラ10へ送信することができる。
図10は、実施例2に係るI/Oコントローラの処理の流れを説明するためのタイムチャートである。図10に示す例では、I/Oコントローラ10は、それぞれ異なるアドレス範囲を処理対象とする要求であるIR#a−0、IR#b−0、IR#c−0、IR#d−0をシステムコントローラ41へ送信する。
このため、システムコントローラ41は、各要求IR#a−0、IR#b−0、IR#c−0、IR#d−0を滞留させることなく並列に実行し、応答をI/Oコントローラ10へ送信する。また、I/Oコントローラは、各要求の応答を受信した場合には、それぞれ異なるアドレス範囲を処理対象とする要求であるIR#a−1、IR#b−1、IR#c−1、IR#d−1をシステムコントローラ41へ送信する。
つまり、I/Oコントローラ10は、それぞれ異なるアドレス範囲を処理対象とする要求をシステムコントローラ41へ送信する。このため、I/Oコントローラ10は、要求の滞留を発生させることなく、システムコントローラ41に効率的な処理を実行させることができる。
次に、図11を用いて、実施形態によるI/Oコントローラ10と従来のブリッジ装置が有するqueueについて説明する。図11は、queueを説明するための図である。図11に示す例では、従来のブリッジ装置は、単に、IRとNIRとを区別無く格納する複数の記憶領域であるQ#0〜Q#7を有していた。このため、従来のブリッジ装置は、各Q#0〜#7に格納された要求がIRであるかNIRであるかを判別する処理を行う。
一方、図11に示すように、実施形態によるI/Oコントローラ10は、IRを格納するIRQ#0〜#7とNIRを格納するNIRQ32とを個別に有する。このため、I/Oコントローラ10は、各IRQ#0〜#7とNIRQ32に格納された要求がIRであるかNIRであるかを判別せずとも、適切な処理を行うことができる。結果として、I/Oコントローラ10は、より効率的な処理を行うことができる。
次に、図12を用いて、実施形態によるI/Oコントローラ10と従来のブリッジ装置とによるenqueue処理を説明する。なお、図12は、enqueue処理を説明するための図である。図12に示す例では、従来のブリッジ装置は、実行順制御を行う要求であるNIRと実行順制御を行わない要求であるIRとを区別せずに、いずれかの記憶領域Q#nに要求を格納していた。また、従来のブリッジ装置は、各要求による処理の対象となるデータが格納されたメモリアドレスを考慮していなかった。
一方、図12に示すように、実施形態のI/Oコントローラ10は、実行順制御を行う要求であるNIRをNIRQ32に格納し、実行順制御を行わない要求であるIRをアドレス範囲に応じたIRQ#nに格納する。また、I/Oコントローラ10は、一つのIRQには、同一アドレス範囲内を処理対象とする要求のみを格納する。このため、I/Oコントローラ10は、効率的に、異なるアドレス範囲を処理対象とする要求をシステムコントローラ41へ送信することができる。
次に、図13を用いて、実施形態によるI/Oコントローラ10と従来のブリッジ装置とによる要求の発行処理について説明する。図13に示す例では、従来のブリッジ装置は、順序制御の要否を示すフラグと要求を各Qの間の到着順を示すフラグとに応じた順序で、実行順制御を行う要求(NIR)を送信していた。また、従来のブリッジ装置は、実行順制御が不要な要求(IR)については、単に、各Qから要求を一つづつ発行していた。
一方、実施形態によるI/Oコントローラ10は、NIRQ32に記憶された要求、つまり実行順制御を行う要求(NIR)をNIRQから一つずつ送信する。このため、I/Oコントローラ10は、システムコントローラ41からNIRに対する応答を受信した場合には、次に送信すべきNIRを即時に判別し、判別したNIRをシステムコントローラ41に対して送信することができる。また、I/Oコントローラ10は、一つのIRQから一つのIRをシステムコントローラ41へ送信するので、次に送信すべきIRを即時に判断することができる。
また、I/Oコントローラ10は、NIRQ32の各エントリー#0〜#7が有するスコアボードの順序制御フラグに応じた順にNIRとIRとを送信するので、同一のアドレス範囲に含まれるアドレスを処理対象とするNIRとIRとを同時にシステムコントローラ41へ送信することを防ぐ。結果として、I/Oコントローラ10は、システムコントローラ41が処理を行なわない時間を削減し、より効率的な処理を実行させることができる。
次に、図14を用いて、実施形態によるI/Oコントローラ10と従来のブリッジ装置とによるdequeue処理を説明する。なお、図14は、dequeue処理を説明するための図である。図14に示す例では、従来のブリッジ装置は、実行順制御を行う要求(NIR)又は実行順制御が不要な要求(IR)に対する応答を受信した場合には、受信した応答に対応する要求が格納されていたQ#nから要求をdequeueしていた。
一方、I/Oコントローラ10は、実行順制御が不要な要求(IR)に対する応答を受信した場合には、受信した応答に対する要求が格納されていたIRQから要求をdequeueする。またI/Oコントローラ10は、実行順制御を行う要求(NIR)に対する応答を受信した場合には、受信した応答に対する要求が格納されていた記憶領域を検索せずとも、対応する要求が格納されていたエントリーのバリッドに「0」を格納するだけでよい。つまり、I/Oコントローラ10は、システムコントローラに送信したNIRに対する応答を受信した場合には、NIRQ32が有するエントリーのうち、受信した応答に対応する要求が格納されていたエントリーのバリッドに「0」を格納するだけでdequeue処理を終了させることができる。この結果、I/Oコントローラ10は、少ない処理量でdequeue処理を実行することができる。
[補完装置の処理]
次に、図15を用いて、ROU30の処理の流れを説明する。図15は、実施例2に係るROUの処理の流れを説明するためのフローチャートである。図15に示す例では、ROUは、FIFO20から要求を取得する(ステップS101)。
次に、ROU30は、フィラー31を用いて、取得した要求をIRQ#0〜#7のいずれか又はNIRQ32に格納するenqueue処理を行う(ステップS102)。次に、ROU30は、アービター33を用いて、IRQ#0〜#7又はNIRQ32に格納された要求の中から送信する要求を決定する調停処理を行う(ステップS103)。次に、ROU30は、トランスミッタ34を用いて、ステップS103において決定した要求をシステムコントローラ41へ送信する(ステップS104)。
ここで、ROU30は、ROUから受信した要求に対する応答をシステムコントローラ41が送信した場合には(ステップS105、S106)、レシーバ35を用いて、システムコントローラ41が送信した応答を受信する(ステップS107)。次に、ROU30は、受信した応答がNIRに対する応答であるか否かを判別する(ステップS108)。
そして、ROU30は、受信した応答がNIRに対する応答であると判別した場合には(ステップS108肯定)、NIRQ32に対するdequeue処理を実行する(ステップS109)。一方、ROU30は、受信した応答がNIRに対する応答ではないと判別した場合には(ステップS108否定)、IRQに対するdequeue処理を実行する(ステップS110)。その後、ROU30は、処理を終了する。
次に、図16を用いて、フィラー31が実行する処理の流れを説明する。なお、図16は、フィラー31が実行する処理の流れを説明するためのフローチャートである。図16に示す例では、フィラー31は、FIFO20から要求を取得した場合には、取得した要求が「DMA read」であるか否かを判別する(ステップS201)。そして、フィラー31は、取得した要求が「DMA read」であると判別した場合には(ステップS201肯定)、取得した要求による処理の対象であるデータが格納されたメモリアドレスを内包するアドレス範囲と、「DMA write weakly ordered」が格納されたIRQのアドレス情報が一致するか否かを判別する(ステップS202)。
次に、フィラー31は、アドレス情報が一致しないと判別した場合には(ステップS202否定)、取得した要求のアドレス範囲とNIRQ32に格納された各要求のアドレス範囲とが一致するか否かを判別する(ステップS203)。そして、フィラー31は、アドレス範囲が一致しないと判別した場合には(ステップS203否定)、取得した要求と同じコマンド情報とアドレス情報とを有するIRQがあるか否かを判別する(ステップS204)。
フィラー31は、取得した要求と同じコマンド情報とアドレス情報とを有するIRQがあると判別した場合には、(ステップS204肯定)、取得した要求と同じコマンド情報とアドレス情報とを有するIRQに空きエントリーがあるか否かを判別する(ステップS205)。そして、フィラー31は、取得した要求と同じコマンド情報とアドレス情報とを有するIRQに空きエントリーがあると判別した場合には(ステップS205肯定)、空きエントリーに取得した要求を格納するenqueue処理を実行する(ステップS206)。その後、フィラー31は、処理を終了する。
一方、フィラー31は、取得した要求と同じコマンド情報とアドレス情報とを有するIRQに空きエントリーがないと判別した場合には(ステップS205否定)、空のIRQがあるか否かを判別する(ステップS207)。そして、フィラー31は、空のIRQがあると判別した場合には(ステップS207肯定)、空のIRQに取得した要求を格納するenqueue処理を実行する(ステップS208)。その後、フィラー31は、処理を終了する。
一方、フィラー31は、空のIRQがないと判別した場合には(ステップS207否定)、空のIRQができるまで処理をストールする(ステップS209)。また、フィラー31は、取得した要求のアドレス範囲と各IRQ#0〜#7のいずれかのアドレス情報とが一致すると判別した場合には(ステップS202肯定)、アドレス情報が一致するIRQの全ての要求が出力されるまで処理をストールする(ステップS210)。
また、フィラー31は、取得した要求のアドレス範囲とNIRQ32に格納された要求のアドレス範囲とが一致すると判別した場合には(ステップS203肯定)、NIRQ32に格納された要求のうち、アドレス範囲が一致する全ての要求が出力されるまで処理をストールする(ステップS210)。
また、フィラー31は、取得した要求が「DMA read」であると判別した場合には(ステップS201否定)、取得した要求が「DMA write strongly ordered」であるか否かを判別する(ステップS211)。そして、フィラー31は、取得した要求が「DMA write strongly ordered」であると判別した場合には(ステップS211肯定)、NIRQ32に空きエントリーがあるか否かを判別する(ステップS212)。
その後、フィラー31は、NIRQ32に空きエントリーがあると判別した場合には(ステップS212肯定)、取得した要求をNIRQ32に格納するenqueue処理を実行する(ステップS213)。また、フィラー31は、スコアボードを更新し(ステップS214)、その後処理を終了する。
また、フィラー31は、NIRQ32に空きエントリーがないと判別した場合には(ステップS212否定)、NIRQ32に空きエントリーができるまで処理をストールする(ステップS215)。また、フィラー31は、取得した要求が「DMA write strongly ordered」ではないと判別した場合には(ステップS211否定)、上述したステップS204〜S209の処理を実行し、要求をIRQにenqueueする。また、フィラー31は、同じコマンド情報とアドレス情報とを有するIRQがないと判別した場合には(ステップS204否定)、空のIRQがあるか否かを判別する(ステップS207)。
次に、図17を用いて、アービター33が実行する処理の流れについて説明する。なお、図17は、アービターが実行する処理の流れを説明するためのフローチャートである。図17に示す例では、まず、アービター33は、NIRQ32のstate machine headを確認し、NIRQ32の先頭要求が発行可能状態であるか否かを判別する(ステップS301)。
次に、アービター33は、NIRQ32の先頭要求が発行可能状態であると判別した場合には(ステップS301肯定)、先頭要求が格納されたエントリーのスコアボードに順序制御フラグ「1」が立っているか否かを判別する(ステップS302)。そして、アービター33は、先頭要求が格納されたエントリーのスコアボードに順序制御フラグ「1」が立っていないと判別した場合には(ステップS302否定)、NIRQ32の先頭要求が格納されたエントリーをトランスミッタ34に通知する(ステップS303)。その後、アービター33は、処理を終了する。
また、アービター33は、NIRQ32の先頭要求が発行可能状態ではないと判別した場合には(ステップS301否定)、応答待ちの要求が無く、かつ、発行可能状態の要求があるIRQがあるか否かを判別する(ステップS304)。そして、アービター33は、応答待ちの要求が無く、かつ、発行可能状態の要求があるIRQがあると判別した場合には(ステップS304肯定)、ラウンドロビンアービトレーション方式を用いて、read要求をシステムコントローラに送信するか否かを判別する(ステップS305)。
また、アービター33は、read要求を送信すると判別した場合には(ステップS305肯定)、スコアボードを確認し、順序制御フラグが立っているIRQがあるか否かを判別する(ステップS306)。そして、アービター33は、順序制御フラグが立っているIRQがあると判別した場合には(ステップS306肯定)、順序制御フラグが立っているIRQのうち、格納されている要求の数が最も少ないIRQをトランスミッタ34に通知する(ステップS307)。その後、アービター33は、処理を終了する。
また、アービター33は、スコアボードに順序制御フラグが立っているIRQが無いと判別した場合には(ステップS306否定)、順序制御フラグが立っていないIRQのうち、格納されている要求の数が最も少ないIRQをトランスミッタ34に通知する(ステップS308)。その後、アービター33は、処理を終了する。
また、アービター33は、read要求を送信しないと判別した場合、つまり、write要求を送信すると判別した場合には(ステップS305否定)、スコアボードを確認し、順序制御フラグが立っているIRQがあるか否かを判別する(ステップS309)。そして、アービター33は、順序制御フラグが立っているIRQがあると判別した場合には(ステップS309肯定)、順序制御フラグが立っているIRQのうち、格納された要求の数が最も多いIRQをトランスミッタ34に通知する(ステップS310)。その後、アービター33は、処理を終了する。
また、アービター33は、順序制御フラグが立っているIRQが無いと判別した場合には(ステップS309否定)、順序制御フラグが立っていないIRQのうち、格納された要求の数が最も多いIRQをトランスミッタ34に通知する(ステップS311)。その後、アービター33は、処理を終了する。
また、アービター33は、応答待ちの要求が無く、かつ、発行可能状態の要求があるIRQがないと判別した場合には(ステップS304否定)、処理をストールする(ステップS312)。また、アービター33は、先頭要求が格納されたエントリーのスコアボードに順序制御フラグ「1」が立っていると判別した場合には(ステップS302肯定)、応答待ちの要求が無く、かつ、発行可能状態の要求があるIRQがあるか否かを判別する(ステップS304)。この後、上記と同様にS304以降の処理を実行する。
次に、図18を用いて、トランスミッタ34が実行する処理の流れを説明する。図18は、トランスミッタが実行する処理の流れを説明するための図である。図18に示す例では、トランスミッタ34は、アービター33から送信対象となる要求が通知されたか否かを判別する(ステップS401)。
そして、トランスミッタ34は、アービターから要求を受信した場合には(ステップS401肯定)、システムコントローラ41にトランスミッタが送信し、かつ、システムコントローラ41からの応答が取得されていない要求の数がOutstanding数未満か否かを判別する(ステップS402)。その後、トランスミッタ34は、システムコントローラ41にシステムコントローラ41にトランスミッタが送信し、かつ、システムコントローラ41からの応答が取得されていない要求の数がOutstanding数未満であると判別した場合には(ステップS402肯定)、アービター33から通知された要求をシステムコントローラに送信する(ステップS405)。その後、トランスミッタ34は、処理を終了する。
一方、トランスミッタ34は、システムコントローラ41にトランスミッタが送信し、かつ、システムコントローラ41からの応答が取得されていない要求の数がOutstanding数と同数であると判別した場合には(ステップS402否定)、システムコントローラ41に送信した要求に対する応答を待つ(ステップS403)。そして、トランスミッタ34は、システムコントローラ41からの応答を受信した場合には(ステップS404)、アービター33から通知された要求を送信する(ステップS405)。その後、トランスミッタ34は、処理を終了する。また、トランスミッタ34は、アービターから要求を受信しなかった場合には(ステップS401否定)、アービターからの要求を待機(アイドル)する(ステップS406)。
次に、図19を用いて、レシーバ35が実行する処理の流れについて説明する。図19は、レシーバが実行する処理の流れを説明するためのフローチャートである。図19に示す例では、レシーバ35は、システムコントローラ41からの応答の受信処理を行い、応答が返されたか否かを判別する(ステップS501)。
そして、レシーバ35は、システムコントローラ41から応答が返された場合には(ステップS501肯定)、応答がNIRに対する応答であるか否かを判別する(ステップS502)。その後、レシーバ35は、応答がNIRに対する応答であると判別した場合には(ステップS502肯定)、NIRQ32に格納された先頭要求をdequeueする(ステップS503)。また、レシーバ35は、応答がNIRに対する応答ではないと判別した場合には(ステップS502否定)、対応するIRQの先頭要求をdequeueする(ステップS504)。
また、レシーバ35は、システムコントローラ41からの応答が返されていないと判別した場合には(ステップS501否定)、応答の受信まで待機(アイドル)する(ステップS505)。
[実施例2の効果]
上述したように、I/Oコントローラ10は、複数のIRQ#0〜#7を有する。そして、I/Oコントローラ10は、受信した要求による処理の対象となるデータが格納されたメモリアドレスを含むアドレス範囲を特定し、特定したアドレス範囲ごとに異なるIRQへ要求を格納する。また、I/Oコントローラ10は、IRQ#0〜#7に格納された要求がシステムコントローラ41によって実行されているか否かを判別する。そして、I/Oシステムコントローラ41は、格納された要求がシステムコントローラ41によって実行されていないと判別されたIRQに格納されている要求をシステムコントローラ41へ送信する。つまり、I/Oシステムコントローラ41は、それぞれ異なるアドレス範囲を処理対象とする複数の要求をシステムコントローラ41に送信する。
このため、I/Oコントローラ10は、システムコントローラ41に効率的な処理を実行させることができる。つまり、システムコントローラ41は、それぞれ異なるアドレス範囲を処理対象とする複数の要求を並列に実行するので、後続の要求に係るスヌープを拒否せずに処理を実行することができる。この結果、システムコントローラ41は、後続の要求を滞留させず、効率的に処理を実行することができる。
また、I/Oコントローラ10は、NIRQ32を有し、受信した要求が実行順制御を行う要求(NIR)である場合には、受信した要求をNIRQ32に格納する。そして、I/Oコントローラ10は、NIRQ32に格納された先頭要求をシステムコントローラ41へ出力する場合には、NIRQ32の先頭要求と同じアドレス範囲を処理の対象とする要求が実行されているか否かを判別する。その後、I/Oコントローラ10は、NIRQ32の先頭要求と同じアドレス範囲を処理の対象とする要求がシステムコントローラによって実行されていないと判別した場合には、NIRQ32の先頭要求をシステムコントローラ41へ送信する。
このため、I/Oコントローラ10は、NIRとIRとを中継する場合にも、それぞれ異なるアドレス範囲を処理対象とする複数の要求をシステムコントローラ41に送信することができる。結果として、I/Oコントローラ10は、システムコントローラ41に効率的な処理を実行させることができる。
また、I/Oコントローラ10は、NIRを格納するNIRQ32とIRを格納するIRQ#0〜#7とを個別に有する。このため、I/Oコントローラ10は、要求を送信する際にNIRQ32やIRQ#0〜#7に格納された要求がNIRであるかIRであるかを判別せずとも、適切な種別の要求を送信することができる。つまり、I/Oコントローラ10は、より効率的に送信処理を実行することができる。
また、I/Oコントローラ10は、NIRQ32に格納された要求のアドレス範囲及び要求を受信した順序と、各IRQ#0〜#7に格納された要求のアドレス範囲及び要求を受信した順序との関係を示すスコアボードを作成する。そして、I/Oコントローラ10は、NIRQ32の先頭要求を送信する場合には、スコアボードを用いて、同一のアドレス範囲を処理対象とし、かつ、先頭要求よりも先に受信されたIRの有無を判別する。このため、I/Oコントローラ10は、NIRQ32の先頭要求を送信する際に、先頭要求の実行順序を保持するとともに、各IRQ#0〜#7に格納されたアドレス情報を確認する処理を容易にし、効率的に送信処理を実行することができる。
また、I/Oコントローラ10は、システムコントローラ41から要求を受信するレシーバ35を有し、レシーバ35が応答を受信した場合には、新たな要求をシステムコントローラ41へ送信する。このため、I/Oコントローラ10は、システムコントローラ41に対して、常に所定の数(Outstanding数)の要求を実行させることができる。
これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例3として本発明に含まれる他の実施例を説明する。
(1)IRQの数について
上述したI/Oコントローラ10は、8つのIRQ#0〜#7を有していた。しかし、IRQの数はこれに限定されるものではなく、任意の数のIRQを設置してよい。また、各IRQ#0〜#7は、4つのエントリーを有していた。しかし、エントリの数はこれに限定されるものではなく、任意の数のエントリーを設置してよい。また、NIRQ32は、8つのエントリー#0〜#7を有していた。しかし、NIRQのエントリの数はこれに限定されるものではなく、任意の数のエントリーを設置してよい。
(2)要求について
上述したI/Oコントローラ10は、DMA(Direct Memory Access)の要求を受信し、受信した要求をシステムコントローラ41へ送信していた。しかし、要求の種類はこれに限定されるものではなく、DMA以外にも、任意の形式の要求を処理することとしてよい。また、上述したI/O装置40は、HDD(Hard Disk Drive)から受信したDMAの要求をI/Oコントローラへ送信していた。しかし、要求の発行元はこれに限定されるものではなく、I/O装置40は、HDD以外にも、任意の装置が発行したメモリに対する処理の要求をI/Oコントローラ10へ送信することとしてもよい。
(3)アドレス範囲の大きさについて
上述したシステムコントローラ41は、メモリ42に記憶された情報を256bitでキャッシュしていた。このため、I/Oコントローラ10は、一つのアドレス範囲を256bitとした。しかし、アドレス範囲はこれに限定されるものではない。例えば、I/Oコントローラ10は、システムコントローラ41がメモリ42に記憶された情報を512bit単位でキャッシュする場合には、一つのアドレス範囲を512bitとすればよい。
(4)プログラム
ところで、実施例1に係る転送装置1、および実施例2に係るI/Oコントローラ10は、ハードウェアを利用して各種の処理を実現する場合を説明した。しかし、転送装置あるいはI/Oコントローラの実現の仕方はこれに限定されるものではなく、あらかじめ用意されたプログラムを転送装置が有するコンピュータで実行することによって実現するようにしてもよい。そこで、以下では、図20を用いて、実施例1に示した転送装置と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図20は、転送プログラムを実行するコンピュータの一例を説明するための図である。
図20に例示されたコンピュータ100は、RAM(Random Access Memory)120、ROM(Read Only Memory)130、HDD(Hard Disk Drive)150がバス170で接続される。また、図20に例示されたコンピュータ100は、CPU(Central Processing Unit)140がバス170で接続される。さらにバス170には、要求を送受信するためのI/O(Input Output)160が接続される。
HDD150には、要求記憶領域151があらかじめ設定される。ここで、要求記憶領域151は、独立した複数の記憶領域を有し、図1に示す記憶部A2〜C4と同様の機能を有する。ROM130には、特定プログラム131、格納プログラム132、判別プログラム133、送信プログラム134があらかじめ保持される。CPU140が各プログラム131〜134をROM130から読み出して実行することにより、図20に示す例では、各プログラム131〜134は、特定プロセス141、格納プロセス142、判別プロセス143、送信プロセス144として機能する。なお、各プロセス141〜144は、図1に示した各部5〜8と同様の機能を発揮する。また、各プロセス141〜144は、実施例2または実施例3に係る各部と同等の機能を発揮するようにすることも可能である。
なお、本実施例で説明した補完プログラムは、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、HD、フレキシブルディスク(FD)、CD−ROM(Compact Disk Read Only Memory)、MO(Magneto Optical Disk)、DVD(Digital Versatile Disk)などのコンピュータで読取可能な記録媒体に記録される。また、このプログラムは、コンピュータによって記録媒体から読み出されることによって実行することもできる。
1 転送装置
2 記憶部A
3 記憶部B
4 記憶部C
5 特定部
6 格納部
7 判別部
8 送信部
10 I/Oコントローラ
20 FIFO
30 ROU
31 フィラー
32 NIRQ
33 アービター
34 トランスミッタ
35 レシーバ

Claims (8)

  1. メモリに格納された情報に対する処理の要求を、処理の対象となるデータをキャッシュメモリに保持する単位となるドレス範囲ごとに記憶可能な複数の記憶部と、
    第一の装置から受信した要求を解析し、要求された処理の対象となるデータが格納されたメモリアドレスを内包する前記アドレス範囲を特定する特定部と、
    前記受信した要求を前記特定部によって特定されたアドレス範囲に対応する記憶部に格納する格納部と、
    前記格納部によって記憶部に格納された要求が第二の装置によって実行されているか否かを記憶部ごとに判別する判別部と、
    前記判別部によって要求が実行されていないと判別された記憶部に格納されている要求を前記第二の装置へ送信する送信部と、
    を有することを特徴とする転送装置。
  2. メモリに格納された情報に対する処理の要求のうち、実行順序を守る必要のある要求を記憶する順序制御記憶部と、
    前記要求のうち、実行順序を守る必要のない要求を、処理を実行する単位となる所定の大きさで区切られたアドレス範囲ごとに記憶する複数の非順序制御記憶部と、
    一の装置から受信した要求を解析し、当該要求の実行順制御が必要な要求か否かを判別する順序制御判定部と、
    前記要求を第一の装置から受信した場合には、当該要求を解析し、当該要求された処理の対象となるデータが格納されたメモリアドレスを内包する前記アドレス範囲を特定する特定部と、
    前記順序制御判定部によって前記実行順制御が必要な要求であると判別された場合には、当該要求を前記順序制御記憶部に格納し、前記順序制御判定部によって前記実行順制御が不要な要求であると判別された場合には、前記特定部によって特定されたアドレス範囲ごとに異なる前記非順序制御記憶部に当該要求を格納する格納部と、
    前記格納部によって格納された要求が該要求を実行する第二の装置によって実行されているか否かを非順序制御記憶部ごとに判別する判別部と、
    前記判別部によって前記要求が実行されていないと判別された非順序制御記憶部に格納された要求を前記第二の装置へ送信する送信部と、
    を有することを特徴とする転送装置。
  3. 前記判別部は、さらに、前記順序制御記憶部に格納された要求のうち最も先に格納された要求について、当該要求によって処理の対象となるデータが格納されたメモリアドレスを内包する前記アドレス範囲を特定し、当該特定したアドレス範囲に含まれたメモリアドレスに格納されたデータを処理の対象とする他の要求が前記第二の装置によって実行されているか否かを判別し、
    前記送信部は、さらに、前記判別部によって、前記特定したアドレス範囲に含まれたメモリアドレスに格納されたデータを処理の対象とする他の要求が前記第二の装置によって実行されていないと判別された場合には、前記順序制御記憶部に格納された要求のうち最も先に格納された要求を前記第二の装置へ送信することを特徴とする請求項2に記載の転送装置。
  4. 前記転送装置は、
    前記順序制御記憶部に格納された要求を受信した順番と各非順序制御記憶部に格納された要求を受信した順番との関係、及び、前記順序制御記憶部に格納された要求によって処理の対象となるデータが格納されたメモリアドレスを内包した前記アドレス範囲と各非順序制御記憶部に格納された要求によって処理の対象となるデータが格納されたメモリアドレスを内包したアドレス範囲との関係を示すスコアボード情報を作成する作成部をさらに有し、
    前記判別部は、前記作成部によって作成されたスコアボード情報に基づいて、前記順序制御記憶部に格納された要求のうち最も先に格納された要求について、当該要求と同一のアドレス範囲に内包されたメモリアドレスを処理の対象とし、かつ、当該要求よりも先に受信された要求がいずれかの非順序制御記憶部に格納されているか否かを判別し、当該要件を満たす非順序制御記憶部があると判別した場合には、該非順序制御記憶部に格納された要求が前記第二の装置によって実行されているか否かを判別することを特徴とする請求項3に記載の転送装置。
  5. 前記転送装置は、
    前記第二の装置へ送信した要求に対する応答を前記第二の装置から受信する応答受信部をさらに有し、
    前記送信部は、前記応答受信部によって応答が受信された場合には、新たな要求を前記第二の装置へ送信することを特徴とする請求項2〜4のいずれか一つに記載の転送装置。
  6. 前記複数の非順序制御記憶部は、前記要求のうち、実行順序を守る必要のない要求を、処理の対象となるデータをキャッシュメモリに保持する単位となるアドレス範囲ごとに記憶することを特徴とする請求項2〜5のいずれか1つに記載の転送装置。
  7. メモリに格納された情報に対する処理の要求のうち、実行順序が保持される要求を記憶する順序制御記憶装置と、前記要求のうち、実行順制御が不要な要求を記憶する複数の非順序制御記憶装置とを有する転送装置によって実行される転送方法であって、
    第一の装置から受信した要求を解析し、当該要求の実行順制御が必要な要求か否かを判別する順序制御判定ステップと、
    前記第一の装置から受信した要求を解析し、処理を実行する単位となる所定の大きさで区切られたアドレス範囲であって、当該要求された処理の対象となるデータが格納されたメモリアドレスを内包するアドレス範囲を特定する特定ステップと、
    前記順序制御判定ステップによって前記実行順制御が必要な要求であると判別された場合には、当該要求を前記順序制御記憶装置に格納し、前記順序制御判定ステップによって前記実行順制御が不要な要求であると判別された場合には、前記特定ステップによって特定されたアドレス範囲ごとに異なる前記非順序制御記憶装置に当該要求を格納する格納ステップと、
    前記格納ステップによって格納された要求が該要求を実行する第二の装置によって実行されているか否かを非順序制御記憶装置ごとに判別する判別ステップと、
    前記判別ステップによって前記要求が実行されていないと判別された非順序制御記憶装置に格納された要求を前記第二の装置へ送信する送信ステップと、
    を含むことを特徴とする転送方法。
  8. メモリに格納された情報に対する処理の要求のうち、実行順序が保持される要求を記憶する順序制御記憶装置と、前記要求のうち、実行順制御が不要な要求を記憶する複数の非順序制御記憶装置とを有する転送装置によって実行される転送プログラムであって、
    第一の装置から受信した要求を解析し、当該要求の実行順制御が必要な要求か否かを判別する順序制御判定手順と、
    前記第一の装置から受信した要求を解析し、処理を実行する単位となる所定の大きさで区切られたアドレス範囲であって、当該要求された処理の対象となるデータが格納されたメモリアドレスを内包するアドレス範囲を特定する特定手順と、
    前記順序制御判定手順によって前記実行順制御が必要な要求であると判別された場合には、当該要求を前記順序制御記憶装置に格納し、前記順序制御判定手順によって前記実行順制御が不要な要求であると判別された場合には、前記特定手順によって特定されたアドレス範囲ごとに異なる前記非順序制御記憶装置に当該要求を格納する格納手順と、
    前記格納手順によって格納された要求が該要求を実行する第二の装置によって実行されているか否かを非順序制御記憶装置ごとに判別する判別手順と、
    前記判別手順によって前記要求が実行されていないと判別された非順序制御記憶装置に格納された要求を前記第二の装置へ送信する送信手順と、
    を実行させることを特徴とする転送プログラム。
JP2010237859A 2010-10-22 2010-10-22 転送装置、転送方法および転送プログラム Expired - Fee Related JP5625737B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2010237859A JP5625737B2 (ja) 2010-10-22 2010-10-22 転送装置、転送方法および転送プログラム
EP11176036A EP2447851A1 (en) 2010-10-22 2011-07-29 Transmission device, transmission method, and transmission program
US13/195,064 US20120102293A1 (en) 2010-10-22 2011-08-01 Transmission device, transmission method, and non-transitory computer-readable storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010237859A JP5625737B2 (ja) 2010-10-22 2010-10-22 転送装置、転送方法および転送プログラム

Publications (2)

Publication Number Publication Date
JP2012093798A JP2012093798A (ja) 2012-05-17
JP5625737B2 true JP5625737B2 (ja) 2014-11-19

Family

ID=44514543

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010237859A Expired - Fee Related JP5625737B2 (ja) 2010-10-22 2010-10-22 転送装置、転送方法および転送プログラム

Country Status (3)

Country Link
US (1) US20120102293A1 (ja)
EP (1) EP2447851A1 (ja)
JP (1) JP5625737B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6142783B2 (ja) * 2013-11-25 2017-06-07 富士通株式会社 メモリコントローラ,情報処理装置及びメモリコントローラの制御方法
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
US10579548B2 (en) * 2018-03-29 2020-03-03 Western Digital Technologies, Inc. Adaptive interleaving of data transfer requests
KR20210012439A (ko) * 2019-07-25 2021-02-03 삼성전자주식회사 마스터 지능 소자 및 이의 제어 방법
TW202243484A (zh) * 2021-04-26 2022-11-01 聯陽半導體股份有限公司 30076 新竹科學工業園區創新一路13號3樓 電子裝置、電子系統及控制方法
US12001352B1 (en) * 2022-09-30 2024-06-04 Amazon Technologies, Inc. Transaction ordering based on target address

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3693183B2 (ja) * 1992-12-18 2005-09-07 富士通株式会社 データ処理装置
US6311286B1 (en) * 1993-04-30 2001-10-30 Nec Corporation Symmetric multiprocessing system with unified environment and distributed system functions
JP2000076176A (ja) * 1998-08-31 2000-03-14 Nec Corp シーケンス回路及びシーケンス処理方法
US6385708B1 (en) * 1998-11-16 2002-05-07 Infineon Technologies Ag Using a timing-look-up-table and page timers to determine the time between two consecutive memory accesses
JP3501727B2 (ja) * 2000-05-18 2004-03-02 エヌイーシーコンピュータテクノ株式会社 リクエスト順序制御装置
US7069399B2 (en) * 2003-01-15 2006-06-27 Via Technologies Inc. Method and related apparatus for reordering access requests used to access main memory of a data processing system
US20050289306A1 (en) * 2004-06-28 2005-12-29 Sridhar Muthrasanallur Memory read requests passing memory writes
JP4443474B2 (ja) * 2005-06-14 2010-03-31 株式会社ソニー・コンピュータエンタテインメント コマンド転送制御装置およびコマンド転送制御方法
US7870351B2 (en) * 2007-11-15 2011-01-11 Micron Technology, Inc. System, apparatus, and method for modifying the order of memory accesses
CN101908368A (zh) * 2009-06-04 2010-12-08 威刚科技(苏州)有限公司 电子存储装置及其操作方法

Also Published As

Publication number Publication date
US20120102293A1 (en) 2012-04-26
JP2012093798A (ja) 2012-05-17
EP2447851A1 (en) 2012-05-02

Similar Documents

Publication Publication Date Title
JP5625737B2 (ja) 転送装置、転送方法および転送プログラム
JP5118199B2 (ja) マルチスレッドおよびマルチコア・システムのためのキャッシュ、および、その方法
US8589638B2 (en) Terminating barriers in streams of access requests to a data store while maintaining data consistency
US20080168233A1 (en) Cache circuitry, data processing apparatus and method for handling write access requests
IL229736A (en) Memory Controller and Method Activate the memory controller
TW201539196A (zh) 用於處理多個交易之資料處理系統及方法
EP1895423B1 (en) System controller, identical-address-request-queuing preventing method, and information processing apparatus having identical address-request-queuing preventing function
JPH11175454A (ja) 自動直接メモリ・アクセス機能を備えたコンピュータ・システム
US10061728B2 (en) Arbitration and hazard detection for a data processing apparatus
TW484065B (en) Dynamic priority external transaction system
JPH11175455A (ja) コンピュータ・システムにおける通信方法及び装置
JP2011170848A (ja) トレースデータの優先度の選択
WO2023076591A1 (en) Hardware management of direct memory access commands
US9697127B2 (en) Semiconductor device for controlling prefetch operation
US8667199B2 (en) Data processing apparatus and method for performing multi-cycle arbitration
JP2011232917A (ja) 半導体集積回路、及びリクエスト制御方法
US9367464B2 (en) Cache circuit having a tag array with smaller latency than a data array
US8356119B2 (en) Performance by reducing transaction request ordering requirements
JP2006301825A (ja) アドレス競合時のスタベーション防止方法およびチップセットおよびマルチプロセッサシステム
US6145032A (en) System for recirculation of communication transactions in data processing in the event of communication stall
US20100058024A1 (en) Data Transfer Apparatus, Data Transfer Method And Processor
JP3873589B2 (ja) プロセッサシステム
US7650483B2 (en) Execution of instructions within a data processing apparatus having a plurality of processing units
KR101133806B1 (ko) 병렬 통신 버스를 통한 인터럽트 메시지 전송 방법 및 컴퓨터 시스템
US9928195B2 (en) Interconnect and method of operation of an interconnect for ordered write observation (OWO)

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130805

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140319

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140408

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140609

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140915

R150 Certificate of patent or registration of utility model

Ref document number: 5625737

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees