JP4851958B2 - バスインタフェースアダプタ、データ転送方法、データ転送システム及び情報処理装置 - Google Patents

バスインタフェースアダプタ、データ転送方法、データ転送システム及び情報処理装置 Download PDF

Info

Publication number
JP4851958B2
JP4851958B2 JP2007038431A JP2007038431A JP4851958B2 JP 4851958 B2 JP4851958 B2 JP 4851958B2 JP 2007038431 A JP2007038431 A JP 2007038431A JP 2007038431 A JP2007038431 A JP 2007038431A JP 4851958 B2 JP4851958 B2 JP 4851958B2
Authority
JP
Japan
Prior art keywords
request
processor
cache
data
bus interface
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
JP2007038431A
Other languages
English (en)
Other versions
JP2008204101A (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.)
NEC Computertechno Ltd
Original Assignee
NEC Computertechno 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 NEC Computertechno Ltd filed Critical NEC Computertechno Ltd
Priority to JP2007038431A priority Critical patent/JP4851958B2/ja
Publication of JP2008204101A publication Critical patent/JP2008204101A/ja
Application granted granted Critical
Publication of JP4851958B2 publication Critical patent/JP4851958B2/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、プロセッサとシステムメモリとの間のデータ転送を制御するバスインタフェースアダプタ、その制御方法であるデータ転送方法、バスインタフェースアダプタやプロセッサ、システムメモリ等を有するデータ転送システム、及び、このデータ転送システムが形成されたボードを備えた情報処理装置に関し、特に、バスの負荷を軽減するとともに、データ高速転送を実現するのに好適なバスインタフェースアダプタ、データ転送方法、データ転送システム及び情報処理装置に関する。
従来のマルチプロセッサを搭載するコンピュータにおいて、キャッシュを内蔵するマルチプロセッサ構成のコンピュータでのキャッシュコヒーレンシのアルゴリズムとして、スヌープ方式(Snoop:監視)が採用されている(例えば、特許文献1、2参照。)。これは各プロセッサのキャッシュが自身や他プロセッサのキャッシュライン更新状態を把持、管理し、他キャッシュと更新状態の情報を交換することで、どのキャッシュに最新のデータが存在するかを知り、各プロセッサのキャッシュが必要なときに最新のデータを取得できるように自身の状態を更新したり、キャッシュラインのパージを行なう。この情報交換は共通のバスを介して行なわれるため、情報の通知と実際のデータ転送との順序が保たれる。
各プロセッサからのリード/ライトリクエストや、ストレージ系やネットワーク系のIO装置におけるDMA(Direct Memory Access)リード/ライトリクエストが発行された場合、キャッシュコヒーレンシを保つために、すべてのプロセッサに対して、スヌープ処理を必ず実施し、スヌープ処理が完全に完了してから、システムメモリへアクセスしなければならない。
まず、キャッシュラインの各キャッシュステータスについて説明する。
(1)インバリデート(Invalidate)とは、キャッシュラインは有効な情報を持たないことを示す。以下、「IV」とする。
(2)シェアード(Shared)とは、キャッシュラインは有効な情報を持ち、他のプロセッサのキャッシュにも存在し、また、キャッシュラインの内容はシステムメモリと同じであり、キャッシュラインのオーナーではないことを示す。以下、「SH」とする。
(3)クリーンイクスクルーシブ(CleanExclusive)とは、キャッシュラインは有効な情報を持ち、また、キャッシュラインの内容はシステムメモリと同じであり、プロセッサはオーナーではないことを示す。以下、「CE」とする。
(4)ダーティーイクスクルーシブ(DirtyExclusive)とは、キャッシュラインは有効な情報を持ち、他のプロセッサのキャッシュには存在せず、また、キャッシュラインの内容はシステムメモリと異なり、プロセッサはオーナーであることを示す。以下、「DE」とする。
次に、キャッシュを内蔵したマルチプロセッサと接続される従来のバスインタフェースアダプタについて説明する。この従来のバスインタフェースアダプタは、図16に示すような構成となっている。
すなわち、バスインタフェースアダプタ100は、プロセッサ200(200−1〜200−n)内のキャッシュラインとのデータコヒーレンシを保つためのプロセッサバス220(220−1〜220−n)を制御するプロセッサバスインタフェース制御部110、IO装置300(300−1〜300−n)と接続されるIOバス310(310−1〜310−n)を制御するIOバスインタフェース制御部120、システムメモリ400を制御するシステムメモリ制御部130を有している。
この従来のバスインタフェースアダプタの動作について、図17〜図32を参照して説明する。
(1)プロセッサ200−1が、データのリードを実施する場合
図17に示すように、プロセッサ200−1内のキャッシュ210−1に有効なキャッシュラインが存在していると(ステップ1000)、このキャッシュラインのデータが参照される(ステップ1001)。
図18に示すように、プロセッサ200−1内のキャッシュ210−1に有効なキャッシュラインが存在しないと(ステップ2000)、プロセッサバス220−1を介して、プロセッサ200−1がリードリクエストを発行し(ステップ2001)、バスインタフェースアダプタ100はこのリードリクエストを受信することにより(ステップ2002)、プロセッサバス220−2〜220−nを介して、プロセッサ200−2〜200−nに対して、リード付きスヌープリクエストを発行する(ステップ2003)。
プロセッサ200−2〜200−n内のキャッシュに有効なキャッシュラインが存在しない場合(ステップ2004)、プロセッサバス220−2〜220−nを介してプロセッサ200−2〜200−nは有効なキャッシュラインが存在しないことを示すレスポンスを発行し(ステップ2005)、バスインタフェースアダプタ100はこのレスポンスを受信することにより(ステップ2006)、システムメモリ400に格納されているデータが最新であることを示し(ステップ2007)、システムメモリ制御部130は、システムメモリ400に格納されているデータをリードし(ステップ2008)、プロセッサバス220−1を介して、バスインタフェースアダプタ100はこのデータをつけたレスポンスを発行する(ステップ2009)。プロセッサ200−1は、このキャッシュラインのデータを参照し、キャッシュ内に格納し(ステップ2010)、キャッシュステートをCEに変更する(ステップ2011)。
一方、図19に示すように、プロセッサ200−2〜200−n内のキャッシュに有効なキャッシュラインが存在し(ステップ2012)、キャッシュステートがSHあるいはCEの場合は(ステップ2013)、プロセッサバス220−2〜220−nを介してプロセッサ200−2〜200−nは、有効なキャッシュラインが存在し、キャッシュステートがSHあるいはCEを示すレスポンスを発行し(ステップ2014)、キャッシュステートをSHに変更し(ステップ2015)、バスインタフェースアダプタ100はこのレスポンスを受信することにより(ステップ2016)、システムメモリに格納されているデータが有効なデータであることがわかり(ステップ2017)、システムメモリ制御部130は、システムメモリ400に格納されているデータをリードし(ステップ2018)、プロセッサバス220−1を介して、バスインタフェースアダプタ100はこのデータをつけたレスポンスを発行する(ステップ2019)。プロセッサ200−1は、このキャッシュラインのデータを参照し、キャッシュ内に格納し(ステップ2020)、キャッシュステートをSHに変更する(ステップ2021)。
また、図20に示すように、プロセッサ200−2〜200−n内のキャッシュに有効なキャッシュラインが存在し(ステップ2012)、キャッシュステートがDEの場合(ステップ2022)、プロセッサバス220−2〜220−nを介して、プロセッサ200−2〜200−nは有効なキャッシュラインが存在し、キャッシュステートがDEを示すレスポンスを発行し(ステップ2023)、システムメモリ400を更新するために、キャッシュラインのライトバックリクエストを発行し(ステップ2024)、キャッシュステートをSHに変更し(ステップ2025)、バスインタフェースアダプタ100はこのレスポンスやライトバックリクエストを受信することにより(ステップ2026、ステップ2027)、このライトバックリクエストに付いているキャッシュブロックに格納されているデータが有効なデータであることを示し(ステップ2028)、バスインタフェースアダプタ100は、プロセッサバス220−1を介して、このデータをつけたレスポンスを発行し(ステップ2029)、かつ、システムメモリ制御部130は、このデータをシステムメモリ400に格納する(ステップ2030)。プロセッサ200−1は、このキャッシュラインのデータを参照し、キャッシュ内に格納し(ステップ2031)、キャッシュステートをSHに変更する(ステップ2032)。
(2)プロセッサ200−1が、データのライトを実施する場合
図21に示すように、プロセッサ200−1内のキャッシュに有効なキャッシュラインが存在しないと(ステップ3000)、プロセッサバス220−1を介して、プロセッサ200−1がリードモディファイライトリクエストを発行し(ステップ3001)、バスインタフェースアダプタ100はこのリードモディファイライトリクエストを受信することにより(ステップ3002)、プロセッサバス220−2〜220−nを介して、プロセッサ200−2〜200−nに対して、リードモディファイライト付きスヌープリクエストを発行する(ステップ3003)。
プロセッサ200−2〜200−n内のキャッシュに有効なキャッシュラインが存在しない場合(ステップ3004)、プロセッサバス220−2〜220−nを介して、有効なキャッシュラインが存在しないことを示すレスポンスを発行し(ステップ3005)、バスインタフェースアダプタ100はこのレスポンスを受信することにより(ステップ3006)、システムメモリ400に格納されているデータが有効なデータであることを示し(ステップ3007)、システムメモリ制御部130に格納されているデータをリードし(ステップ3008)、バスインタフェースアダプタ100は、プロセッサバス220−1を介して、このデータを付けたレスポンスを発行する(ステップ3009)。プロセッサ200−1はキャッシュ内に格納し、データを更新し(ステップ3010)、キャッシュステートをDEに変更する(ステップ3011)。
一方、図22に示すように、プロセッサ200−2〜200−n内のキャッシュに有効なキャッシュラインが存在し(ステップ3012)、キャッシュステートがSHあるいはCEの場合(ステップ3013)、プロセッサバス220−2〜220−nを介して、有効なキャッシュラインが存在し、キャッシュステートがSHあるいはCEを示すレスポンスを発行し(ステップ3014)、キャッシュステートをIVに変更し(ステップ3015)、バスインタフェースアダプタ100はこのレスポンスを受信することにより(ステップ3016)、システムメモリ400に格納されているデータが有効なデータであることを示し(ステップ3017)、システムメモリ制御部130は、システムメモリ400に格納されているデータをリードし(ステップ3018)、バスインタフェースアダプタ100は、プロセッサバス220−1を介して、このデータを付けたレスポンスを発行する(ステップ3019)。プロセッサ200−1はキャッシュ内に格納し、データを更新し(ステップ3020)、キャッシュステートをDEに変更する(ステップ3021)。
また、図23に示すように、プロセッサ200−2〜200−n内のキャッシュに有効なキャッシュラインが存在し(ステップ3012)、キャッシュステートがDEの場合(ステップ3022)、プロセッサバス220−2〜220−nを介して、有効なキャッシュラインが存在し、キャッシュステートがDEを示すレスポンスを発行し(ステップ3023)、システムメモリ400を更新するために、キャッシュブロックのライトバックリクエストを発行し(ステップ3024)、キャッシュステートをIVに変更し(ステップ3025)、バスインタフェースアダプタ100はこのレスポンスやライトバックリクエストを受信することにより(ステップ3026、ステップ3027)、このライトバックリクエストに付いているキャッシュブロックに格納されているデータが有効なデータであることを示し(ステップ3028)、バスインタフェースアダプタ100は、プロセッサバス220−1を介して、このデータを付けたレスポンスを発行し(ステップ3029)、かつ、システムメモリ制御部130は、このデータをシステムメモリ400に格納する(ステップ3030)。プロセッサ200−1は、キャッシュ内に格納し、データを更新し(ステップ3031)、キャッシュステートをDEに変更する(ステップ3032)。
(3)プロセッサ200−1が、インバリデートリクエストを発行する場合
図24に示すように、プロセッサ200−1内のキャッシュに有効なキャッシュラインが存在し(ステップ4000)、キャッシュステートがSHとすると(ステップ4001)、プロセッサバス220−1を介して、プロセッサ200−1がインバリデートリクエストを発行し(ステップ4002)、バスインタフェースアダプタ100はこのインバリデートリクエストを受信することにより(ステップ4003)、プロセッサバス220−2〜220−nを介して、プロセッサ200−2〜200−nに対して、インバリデート付きスヌープリクエストを発行する(ステップ4004)。
プロセッサ200−2〜200−n内のキャッシュに有効なキャッシュラインが存在しない場合(ステップ4005)、プロセッサバス220−2〜220−nを介して、有効なキャッシュラインが存在しないことを示すレスポンスを発行し(ステップ4006)、バスインタフェースアダプタ100は、このレスポンスを受信することにより(ステップ4007)、プロセッサバス220−1を介して、インバリデートリクエストの完了を示すレスポンスを発行する(ステップ4008)。プロセッサ200−1内のキャッシュラインのデータを更新し(ステップ4009)、キャッシュステートをDEに変更する(ステップ4010)。
一方、図25に示すように、プロセッサ200−2〜200−n内のキャッシュに有効なキャッシュラインが存在し(ステップ4011)、キャッシュステートがSHあるいはCEの場合(ステップ4012)、プロセッサバス220−2〜220−nを介して、有効なキャッシュブロックが存在し、キャッシュステートがSHあるいはCEを示すレスポンスを発行し(ステップ4013)、キャッシュステートをIVに変更し(ステップ4014)、バスインタフェースアダプタ100は、このレスポンスを受信することにより(ステップ4015)、プロセッサバス220−1を介してインバリデートリクエストの完了を示すレスポンスを発行する(ステップ4016)。プロセッサ200−1内のキャッシュラインのデータを更新し(ステップ4017)、キャッシュステートをDEに変更する(ステップ4018)。
また、図26に示すように、プロセッサ200−1内のキャッシュに有効なキャッシュラインが存在し(ステップ4000)、キャッシュステートがCEあるいはDEとすると(ステップ4019)、このキャッシュ内のキャッシュラインのデータを更新し(ステップ4020)、キャッシュステートをDEに変更する(ステップ4021)。
(4)IO装置が、DMAリードリクエストを発行する場合
図27に示すように、IO装置300が、IOバス310を介して、DMAリードリクエストを発行すると(ステップ5000)、バスインタフェースアダプタ100は、このDMAリードリクエストを受信し(ステップ5001)、これにより、プロセッサバス220を介して、各プロセッサ200に対して、リードを示すスヌープリクエストを発行する(ステップ5002)。
プロセッサ200内のキャッシュに有効なキャッシュラインが存在しない場合(ステップ5003)、プロセッサバス220を介して、有効なキャッシュラインが存在しないことを示すレスポンスを発行し(ステップ5004)、バスインタフェースアダプタ100はこのレスポンスを受信することにより(ステップ5005)、システムメモリ400に格納されているデータが最新のデータであることが判り(ステップ5006)、システムメモリ制御部130は、システムメモリ400に格納されているデータをリードし(ステップ5007)、バスインタフェースアダプタ100は、IOバス310を介して、IO装置300に対し、このデータを付けたレスポンスを発行する(ステップ5008)。
一方、図28に示すように、プロセッサ200内のキャッシュに有効なキャッシュラインが存在し(ステップ5009)、キャッシュステートがSHあるいはCEの場合(ステップ5010)、プロセッサバス220を介して、有効なキャッシュラインが存在し、キャッシュステートがSHあるいはCEと示すレスポンスを発行し(ステップ5011)、キャッシュステートをSHに変更し(ステップ5012)、バスインタフェースアダプタ100はこのレスポンスを受信することにより(ステップ5013)、システムメモリ400に格納されているデータが最新のデータであることが判り(ステップ5014)、システムメモリ制御部130は、システムメモリ400に格納されているデータをリードし(ステップ5015)、バスインタフェースアダプタ100は、IOバス310を介して、IO装置300に対し、このデータを付けたレスポンスを発行する(ステップ5016)。
また、図29に示すように、プロセッサ200内のキャッシュに有効なキャッシュラインが存在し(ステップ5009)、キャッシュステートがDEの場合(ステップ5017)、プロセッサバス220を介して、有効なキャッシュラインが存在し、キャッシュステートがDEを示すレスポンスを発行し(ステップ5018)、システムメモリ400を更新するために、キャッシュラインのライトバックリクエストを発行し(ステップ5019)、キャッシュステートをSHに変更し(ステップ5020)、バスインタフェースアダプタ100はこのレスポンスやライトバックリクエストを受信することにより(ステップ5021、ステップ5022)、このライトバックリクエストに付いているキャッシュブロックに格納されているデータが有効なデータであることが判り(ステップ5023)、バスインタフェースアダプタ100は、IOバス310を介して、IO装置300に対し、このデータを付けたレスポンスを発行し(ステップ5024)、かつ、システムメモリ制御部130は、このデータをシステムメモリ400に格納する(ステップ5025)。
(5)IO装置が、DMAライトリクエストを発行する場合
図30に示すように、IO装置300において、IOバス310を介して、DMAライトリクエストが発行されると(ステップ6000)、バスインタフェースアダプタ100は、このDMAライトリクエストを受信することにより(ステップ6001)、プロセッサバス220を介して、プロセッサ200に対して、リードモディファイライトを示すスヌープリクエストを発行する(ステップ6002)。
プロセッサ200内のキャッシュに有効なキャッシュラインが存在しない場合(ステップ6003)、プロセッサバス220を介して、有効なキャッシュラインが存在しないことを示すレスポンスを発行し(ステップ6004)、バスインタフェースアダプタ100はこのレスポンスを受信することにより(ステップ6005)、システムメモリ400に格納されているデータが有効なデータであることが判り(ステップ6006)、システムメモリ制御部130は、システムメモリ400に格納されているデータを更新する(ステップ6007)。
一方、図31に示すように、プロセッサ200内のキャッシュに有効なキャッシュラインが存在し(ステップ6008)、キャッシュステートがSHあるいはCEの場合(ステップ6009)、プロセッサバス220を介して、有効なキャッシュラインが存在し、キャッシュステートがSHあるいはCEを示すレスポンスを発行し(ステップ6010)、キャッシュステートをIVに変更し(ステップ6011)、バスインタフェースアダプタ100はこのレスポンスを受信することにより(ステップ6012)、システムメモリ400に格納されているデータが有効なデータであることが判り(ステップ6013)、システムメモリ制御部130は、システムメモリ400に格納されているデータを更新する(ステップ6014)。
また、図32に示すように、プロセッサ200内のキャッシュに有効なキャッシュラインが存在し(ステップ6008)、キャッシュステートがDEの場合(ステップ6015)、プロセッサバス220を介して、有効なキャッシュラインが存在し、キャッシュステートがDEを示すレスポンスを発行し(ステップ6016)、システムメモリ400を更新するために、キャッシュブロックのライトバックリクエストを発行し(ステップ6017)、キャッシュステートをIVに変更し(ステップ6018)、バスインタフェースアダプタ100はこのレスポンスやライトバックリクエストを受信することにより(ステップ6019、ステップ6020)、このライトバックリクエストに付いているキャッシュブロックに格納されているデータが有効なデータであることが判り(ステップ6021)、データを更新し(ステップ6022)、システムメモリ制御部130は、この更新したデータをシステムメモリ400に格納する(ステップ6023)。
特開2001−034533号公報 特開2003−150573号公報
しかしながら、従来のマルチプロセッサを搭載したコンピュータにおいては、各プロセッサからのリード/ライトリクエストや、ストレージ系やネットワーク系のIO装置におけるDMAリード/ライトリクエストが発行された場合、キャッシュコヒーレンシを保つために、すべてのプロセッサに対して、スヌープ処理を必ず実施し、スヌープ処理が完全に完了してから、システムメモリへアクセスしなければならなかった。このため、プロセッサバスに多大な負荷がかかるとともに、データの高速転送に支障をきたしていた。
本発明は、上記の問題を解決すべくなされたものであり、プロセッサバスの負荷を軽減するとともに、データの高速転送を可能とするバスインタフェースアダプタ、データ転送方法、データ転送システム及び情報処理装置の提供を目的とする。
この目的を達成するため、本発明のバスインタフェースアダプタは、プロセッサからのリクエストを受信するとともに、プロセッサへレスポンスを送るプロセッサバスインタフェース制御部と、システムメモリからデータをリードするとともに、システムメモリにデータをライトするシステムメモリ制御部とを有したバスインタフェースアダプタであって、二以上のプロセッサのキャッシュラインの物理アドレス及びキャッシュステータスを有する履歴テーブルを記憶する履歴テーブル記憶部と、履歴テーブルを参照する履歴テーブル制御部と、プロセッサバスインタフェース制御部で受信されたリクエストの内容及び履歴テーブル制御部での参照の結果にもとづき、リクエストを発行したプロセッサとシステムメモリとの間でデータの転送を行なうリクエスト監視部と、IO装置からのリクエストを受信するとともに、IO装置へレスポンスを送るIO装置バスインタフェース制御部とを備え、リクエスト監視部は、IO装置バスインタフェース制御部で受信されたリクエストの内容及び履歴テーブル制御部での参照の結果にもとづき、リクエストを発行したIO装置とプロセッサとの間又はリクエストを発行したIO装置とシステムメモリとの間でデータの転送を行ない、キャッシュステータスには、インバリデート、シェアード、クリーンイクスクルーシブ、ダーティーイクスクルーシブがあり、インバリデートは、キャッシュラインが有効な情報を持たないことを示し、シェアードは、一のプロセッサのキャッシュラインは有効な情報を持ち、他のプロセッサのキャッシュにも存在し、キャッシュラインの内容はシステムメモリと同じであり、キャッシュラインのオーナーではないことを示し、クリーンイクスクルーシブは、キャッシュラインは有効な情報を持ち、キャッシュラインの内容はシステムメモリと同じであり、プロセッサはオーナーではないことを示し、ダーティーイクスクルーシブは、一のプロセッサのキャッシュラインは有効な情報を持ち、他のプロセッサのキャッシュには存在せず、キャッシュラインの内容はシステムメモリと異なり、プロセッサはオーナーであることを示す構成としてある。
バスインタフェースアダプタをこのような構成とすると、各プロセッサのキャッシュラインの物理アドレスやキャッシュステータスにより構成された履歴テーブルや、この履歴テーブルを制御する履歴テーブル制御部、そして、プロセッサからのリクエストの内容に応じて制御を行なうリクエスト監視部をバスインタフェースアダプタに備えることで、プロセッサのキャッシュラインの物理アドレス等をプロセッサに問い合わせていた従来のスヌープ処理を削減できる。そして、このプロセッサへの不要なスヌープ処理が削減されることにより、プロセッサ内部のスヌープ処理を削減することができる。したがって、スヌープ処理が完了するまでの遅延時間が削減することから、システムとしてデータ転送の高速化を実現できる。
特に、現在稼動しているコンピュータでは、プロセッサ内のキャッシュの最大容量は16MBであり、システムメモリの最大容量は512GBであることから、不要なスヌープリクエストの発行を無くすことが、バス負荷を軽減させる手法として最も効果的である。なお、メモリデータベースサーバ向けのコンピュータでのシステムメモリ容量は、32GB、64GB、128GBである。
また、バスインタフェースアダプタをこのような構成とすれば、IO装置からのリクエストを受信した場合でも、プロセッサへの不要なスヌープ処理が削減されるため、データ転送の高速化を実現できる。
また、本発明のバスインタフェースアダプタは、リクエストが、二以上のプロセッサのうちの一のプロセッサで発行されたリードリクエストであり、参照の結果、履歴テーブルにリードリクエストのキャッシュラインの物理アドレスが存在しないとき、又は、履歴テーブルにリードリクエストのキャッシュラインの物理アドレスが存在するとともにキャッシュステータスがインバリデートであるとき、リクエスト監視部は、システムメモリのデータが最新であることを示して、システムメモリからデータを獲得し、このデータをリードリクエストへのレスポンスとしてリードリクエストを発行したプロセッサに対し発行する構成とすることができる。
バスインタフェースアダプタをこのような構成とすると、プロセッサからリードリクエストが発行された場合であってそのリードリクエストのキャッシュラインの物理アドレスが不存在のときでも、プロセッサへの不要なスヌープ処理が削減されるため、データ転送の高速化を実現できる。
また、本発明のバスインタフェースアダプタは、リクエストが、二以上のプロセッサのうちの一のプロセッサで発行されたリードリクエストであり、参照の結果、履歴テーブルにリードリクエストのキャッシュラインの物理アドレスが存在するとともに、キャッシュステータスがシェアード又はクリーンイクスクルーシブのいずれかであるとき、リクエスト監視部は、システムメモリのデータが最新であることを示して、システムメモリからデータを獲得し、このデータをリードリクエストへのレスポンスとしてリードリクエストを発行したプロセッサに対し発行する構成とすることができる。
バスインタフェースアダプタをこのような構成とすれば、プロセッサからリードリクエストが発行された場合であってそのリードリクエストのキャッシュラインの物理アドレスが存在しており、キャッシュステータスがインバリデート、シェアード、又は、クリーンイクスクルーシブのいずれかであるときでも、プロセッサへの不要なスヌープ処理が削減されるため、データ転送の高速化を実現できる。
また、本発明のバスインタフェースアダプタは、リクエストが、二以上のプロセッサのうちの一のプロセッサで発行されたリードリクエストであり、参照の結果、履歴テーブルにリードリクエストのキャッシュラインの物理アドレスが存在しており、キャッシュステータスがダーティーイクスクルーシブであるとき、リクエスト監視部は、二以上のプロセッサ内のキャッシュに最新のデータが存在することを示して、他のプロセッサに対してリード付きスヌープリクエストを発行し、他のプロセッサからライトバックリクエストが送られてくると、このライトバックリクエストに付されたデータをリードリクエストへのレスポンスとしてリードリクエストを発行したプロセッサに対し発行する構成とすることができる。
バスインタフェースアダプタをこのような構成とすると、プロセッサからリードリクエストが発行された場合であってそのリードリクエストのキャッシュラインの物理アドレスが存在しており、キャッシュステータスがダーティーイクスクルーシブであるときでも、プロセッサへの不要なスヌープ処理が削減されるため、データ転送の高速化を実現できる。
また、本発明のバスインタフェースアダプタは、リクエストが、二以上のプロセッサのうちの一のプロセッサで発行されたリードモディファイライトリクエストであり、参照の結果、履歴テーブルにリードモディファイライトリクエストのキャッシュラインの物理アドレスが存在していないとき、又は、当該物理アドレスが存在しておりキャッシュステータスがインバリデートであるとき、リクエスト監視部は、システムメモリのデータが最新であることを示して、システムメモリからデータを獲得し、このデータをリードモディファイライトリクエストへのレスポンスとしてリードモディファイライトリクエストを発行したプロセッサに対し発行する構成とすることができる。
バスインタフェースアダプタをこのような構成とすれば、プロセッサからリードモディファイライトリクエストが発行された場合であってそのリードモディファイライトリクエストのキャッシュラインの物理アドレスが存在しないとき、または、その物理アドレスが存在し、キャッシュステータスがインバリデートであるときでも、プロセッサへの不要なスヌープ処理が削減されるため、データ転送の高速化を実現できる。
また、本発明のバスインタフェースアダプタは、記リクエストが、二以上のプロセッサのうちの一のプロセッサで発行されたリードモディファイライトリクエストであり、参照の結果、履歴テーブルにリードモディファイライトリクエストのキャッシュラインの物理アドレスが存在しており、キャッシュステータスがシェアード又はクリーンイクスクルーシブであるとき、リクエスト監視部は、二以上のプロセッサ内のキャッシュに最新のデータが存在することを示して、他のプロセッサに対してリード付きスヌープリクエストを発行するとともに、システムメモリのデータが最新であることを示して、システムメモリからデータを獲得し、このデータをリードモディファイライトリクエストへのレスポンスとしてリードモディファイライトリクエストを発行したプロセッサに対し発行する構成とすることができる。
バスインタフェースアダプタをこのような構成とすると、プロセッサからリードモディファイライトリクエストが発行された場合であってそのリードモディファイライトリクエストのキャッシュラインの物理アドレスが存在しており、キャッシュステータスがシェアード又はクリーンイクスクルーシブのいずれかであるときでも、プロセッサへの不要なスヌープ処理が削減されるため、データ転送の高速化を実現できる。
また、本発明のバスインタフェースアダプタは、リクエストが、二以上のプロセッサのうちの一のプロセッサで発行されたリードモディファイライトリクエストであり、参照の結果、履歴テーブルにリードモディファイライトリクエストのキャッシュラインの物理アドレスが存在しており、キャッシュステータスがダーティーイクスクルーシブであるとき、リクエスト監視部は、二以上のプロセッサ内のキャッシュに最新のデータが存在することを示して、他のプロセッサに対してリード付きスヌープリクエストを発行し、他のプロセッサからライトバックリクエストが送られてくると、このライトバックリクエストに付されたデータをリードモディファイライトリクエストへのレスポンスとしてリードモディファイライトリクエストを発行したプロセッサに対し発行する構成とすることができる。
バスインタフェースアダプタをこのような構成とすれば、プロセッサからリードモディファイライトリクエストが発行された場合であってそのリードモディファイライトリクエストのキャッシュラインの物理アドレスが存在しており、キャッシュステータスがダーティーイクスクルーシブであるときでも、プロセッサへの不要なスヌープ処理が削減されるため、データ転送の高速化を実現できる。
また、本発明のバスインタフェースアダプタは、リクエストが、二以上のプロセッサのうちの一のプロセッサで発行されたインバリデートリクエストであり、参照の結果、履歴テーブルにインバリデートリクエストのキャッシュラインの物理アドレスが存在しないとき、又は、履歴テーブルにインバリデートリクエストのキャッシュラインの物理アドレスが存在しておりキャッシュステータスがインバリデートであるとき、リクエスト監視部は、インバリデートリクエストを発行したプロセッサに対して、インバリデートリクエストの完了を発行する構成とすることができる。
バスインタフェースアダプタをこのような構成とすると、プロセッサからインバリデートリクエストが発行された場合であってそのインバリデートリクエストのキャッシュラインの物理アドレスが存在しないときでも、プロセッサへの不要なスヌープ処理が削減されるため、データ転送の高速化を実現できる。
また、本発明のバスインタフェースアダプタは、リクエストが、二以上のプロセッサのうちの一のプロセッサで発行されたインバリデートリクエストであり、参照の結果、履歴テーブルにインバリデートリクエストのキャッシュラインの物理アドレスが存在しており、キャッシュステータスがシェアードであるとき、リクエスト監視部は、インバリデートリクエストを発行したプロセッサに対して、インバリデートリクエストの完了を発行する構成とすることができる。
バスインタフェースアダプタをこのような構成とすれば、プロセッサからインバリデートリクエストが発行された場合であってそのインバリデートリクエストのキャッシュラインの物理アドレスが存在し、キャッシュステータスがインバリデート又はシェアードであるときでも、プロセッサへの不要なスヌープ処理が削減されるため、データ転送の高速化を実現できる。
また、本発明のバスインタフェースアダプタは、リクエストが、IO装置で発行されたDMAリードリクエストであり、参照の結果、履歴テーブルにDMAリードリクエストのキャッシュラインの物理アドレスが存在しないとき、又は、当該物理アドレスが存在しており、キャッシュステータスがインバリデートであるとき、リクエスト監視部は、システムメモリのデータが最新であることを示して、システムメモリからデータを獲得し、このデータをDMAリードリクエストへのレスポンスとしてIO装置に対し発行する構成とすることができる。
バスインタフェースアダプタをこのような構成とすると、IO装置からDMAリードリクエストが発行された場合であってそのDMAリードリクエストのキャッシュラインの物理アドレスが存在しないとき、または、その物理アドレスが存在し、キャッシュステータスがインバリデートであるときでも、プロセッサへの不要なスヌープ処理が削減されるため、データ転送の高速化を実現できる。
また、本発明のバスインタフェースアダプタは、リクエストが、IO装置で発行されたDMAリードリクエストであり、参照の結果、履歴テーブルにDMAリードリクエストのキャッシュラインの物理アドレスが存在しており、キャッシュステータスが、シェアード又はクリーンイクスクルーシブのいずれかであるとき、リクエスト監視部は、システムメモリのデータが最新であることを示して、システムメモリからデータを獲得し、このデータをDMAリードリクエストへのレスポンスとしてIO装置に対し発行する構成とすることができる。
バスインタフェースアダプタをこのような構成とすれば、IO装置からDMAリードリクエストが発行された場合であってそのDMAリードリクエストのキャッシュラインの物理アドレスが存在し、キャッシュステータスがシェアード又はクリーンイクスクルーシブのいずれかであるときでも、プロセッサへの不要なスヌープ処理が削減されるため、データ転送の高速化を実現できる。
また、本発明のバスインタフェースアダプタは、リクエストが、IO装置で発行されたDMAリードリクエストであり、参照の結果、履歴テーブルにDMAリードリクエストのキャッシュラインの物理アドレスが存在しており、キャッシュステータスがダーティーイクスクルーシブであるとき、リクエスト監視部は、二以上のプロセッサ内のキャッシュに最新のデータが存在することを示して、二以上のプロセッサに対しリード付きスヌープリクエストを発行し、キャッシュラインのキャッシュステータスがダーティーイクスクルーシブであるキャッシュを保有するプロセッサからライトバックリクエストが送られてくると、このライトバックリクエストに付されたデータをDMAリードリクエストへのレスポンスとしてIO装置に対し発行する構成とすることができる。
バスインタフェースアダプタをこのような構成とすると、IO装置からDMAリードリクエストが発行された場合であってそのDMAリードリクエストのキャッシュラインの物理アドレスが存在し、キャッシュステータスがダーティーイクスクルーシブであるときでも、プロセッサへの不要なスヌープ処理が削減されるため、データ転送の高速化を実現できる。
また、本発明のバスインタフェースアダプタは、リクエストが、IO装置で発行されたDMAライトリクエストであり、参照の結果、履歴テーブルにDMAライトリクエストのキャッシュラインの物理アドレスが存在しないとき、リクエスト監視部は、二以上のプロセッサに対して、インバリデートリクエストの完了を発行する構成とすることができる。
バスインタフェースアダプタをこのような構成とすれば、IO装置からDMAライトリクエストが発行された場合であってそのDMAライトリクエストのキャッシュラインの物理アドレスが存在しないときでも、プロセッサへの不要なスヌープ処理が削減されるため、データ転送の高速化を実現できる。
また、本発明のバスインタフェースアダプタは、記リクエストが、IO装置で発行されたDMAライトリクエストであり、参照の結果、履歴テーブルにインバリデートリクエストのキャッシュラインの物理アドレスが存在しており、キャッシュステータスが、シェアード、クリーンイクスクルーシブ又はダーティーイクスクルーシブのいずれかであるとき、リクエスト監視部は、二以上のプロセッサ内のキャッシュに最新のデータが存在することを示して、二以上のプロセッサに対しインバリデートリクエストを発行し、キャッシュラインのキャッシュステータスがダーティーイクスクルーシブであるキャッシュを保有するプロセッサからライトバックリクエストが送られてくると、このライトバックリクエストに付されたデータをDMAライトリクエストへのレスポンスとしてIO装置に対し発行する構成とすることができる。
バスインタフェースアダプタをこのような構成とすると、IO装置からDMAライトリクエストが発行された場合であってそのDMAライトリクエストのキャッシュラインの物理アドレスが存在し、キャッシュステータスがシェアード、クリーンイクスクルーシブ又はダーティーイクスクルーシブのいずれかであるときでも、プロセッサへの不要なスヌープ処理が削減されるため、データ転送の高速化を実現できる。
また、本発明のデータ転送方法は、バスインタフェースアダプタのプロセッサバスインタフェース制御部がプロセッサからのリクエストを受信する処理を有したデータ転送方法であって、リクエストが受信されると、バスインタフェースアダプタの履歴テーブル制御部が、二以上のプロセッサに関する物理アドレス及びキャッシュステータスを有する履歴テーブルを参照し、バスインタフェースアダプタのリクエスト監視部が、履歴テーブルの参照結果にもとづき、プロセッサとシステムメモリとの間でデータの転送を行ない、バスインタフェースアダプタのIO装置バスインタフェース制御部が、IO装置からのリクエストを受信すると、リクエスト監視部が、IO装置バスインタフェース制御部で受信されたリクエストの内容及び履歴テーブル制御部での参照の結果にもとづき、リクエストを発行したIO装置とプロセッサとの間又はリクエストを発行したIO装置とシステムメモリとの間でデータの転送を行ない、キャッシュステータスには、インバリデート、シェアード、クリーンイクスクルーシブ、ダーティーイクスクルーシブがあり、インバリデートは、キャッシュラインが有効な情報を持たないことを示し、シェアードは、一のプロセッサのキャッシュラインは有効な情報を持ち、他のプロセッサのキャッシュにも存在し、キャッシュラインの内容はシステムメモリと同じであり、キャッシュラインのオーナーではないことを示し、クリーンイクスクルーシブは、キャッシュラインは有効な情報を持ち、キャッシュラインの内容はシステムメモリと同じであり、プロセッサはオーナーではないことを示し、ダーティーイクスクルーシブは、一のプロセッサのキャッシュラインは有効な情報を持ち、他のプロセッサのキャッシュには存在せず、キャッシュラインの内容はシステムメモリと異なり、プロセッサはオーナーであることを示す方法とすることができる。
データ転送方法をこのような方法とすれば、各プロセッサのキャッシュラインの物理アドレスやキャッシュステータスがバスインタフェースアダプタの内部で検索、取得できるため、プロセッサへの不要なスヌープ処理が削減され、データ転送の高速化を実現できる。
また、本発明のデータ転送システムは、キャッシュメモリを有する二以上のプロセッサと、プロセッサバスを介してプロセッサに接続されたバスインタフェースアダプタと、このバスインタフェースアダプタに接続されたシステムメモリとを備えたデータ転送システムであって、バスインタフェースアダプタが、上記のバスインタフェースアダプタからなる構成とすることができる。
データ転送システムをこのような構成とすると、プロセッサとシステムメモリとの間のデータ転送を行なう際、各プロセッサのキャッシュラインの物理アドレスやキャッシュステータスの取得をバスインタフェースアダプタの内部で行なえるため、プロセッサへの不要なスヌープ処理が削減され、データ転送の高速化を実現できる。
また、本発明の情報処理装置は、基板上にデータ転送システムが形成されたペリフェラルコンポネントインタコネクトボード(PCI)を備えた情報処理装置であって、データ転送システムが、上記のデータ転送システムを有した構成とすることができる。
情報処理装置をこのような構成とすれば、データ転送の高速化を実現したPCIを備えて、処理能力の優れた情報処理装置を提供できる。
以上のように、本発明によれば、プロセッサへの不要なスヌープ時間を削減できるため、プロセッサ内部のスヌープ処理を削減でき、スヌープ処理が完了されるまでの遅延時間が削減されることから、システムとしてデータ転送が高速となる。
以下、本発明に係るバスインタフェースアダプタ、データ転送方法、データ転送システム及び情報処理装置の好ましい実施形態について、図面を参照して説明する。
[データ転送システム及びバスインタフェースアダプタ]
まず、本発明のデータ転送システム及びバスインタフェースアダプタの実施形態について、図1を参照して説明する。
同図は、本実施形態のデータ転送システム(バスインタフェースアダプタを含む)の構成を示すブロック図である。
同図に示すように、データ転送システムAは、バスインタフェースアダプタ10と、プロセッサ20(20−1〜20−n)と、IO装置30(30−1〜30−n)と、システムメモリ40とを備えている。
ここで、バスインタフェースアダプタ10は、プロセッサバスインタフェース制御部11と、IOバスインタフェース制御部12と、システムメモリ制御部13と、履歴テーブル記憶部14と、履歴テーブル制御部15と、リクエスト監視部16とを有している。
プロセッサバスインタフェース制御部11は、プロセッサ20内のキャッシュラインとのデータコヒーレンシを保つためのプロセッサバス22(22−1〜22−n)を制御する。
このプロセッサバスインタフェース制御部11は、プロセッサバス22を介して、プロセッサ20が発行したリードリクエスト、リードモディファイライトリクエスト、インバリデートリクエストやスヌープ完了レスポンスを受信し、リクエスト監視部16やシステムメモリ制御部13へ転送する。
また、プロセッサバスインタフェース制御部11は、プロセッサバス22を介して、プロセッサ20に対して、リード付きスヌープリクエスト、モディファイライト付きスヌープリクエスト、インバリデートリクエスト、データレスポンス、リクエスト完了レスポンスを発行する。
IOバスインタフェース制御部12は、IO装置30と接続されるIOバス31(31−1〜31−n)を制御する。
このIOバスインタフェース制御部12は、IOバス31(31−1〜31−n)を介して、IO装置30が発行したDMAリードあるいはライトリクエストを受信し、リクエスト監視部16やシステムメモリ制御部13へ転送する。
さらに、IOバスインタフェース制御部12は、IOバス31を介して、IO装置30に対して、データレスポンスやリクエスト完了レスポンスを発行する。
システムメモリ制御部13は、システムメモリ40を制御する。具体的には、システムメモリ40からのデータのリード(獲得)、システムメモリ40へのデータのライト(格納)などを行う。
履歴テーブル記憶部14は、プロセッサ20内のキャッシュラインの状態が記録された履歴テーブルを記憶する。
履歴テーブルは、図2(a)〜(d)に示すように、各プロセッサ20ごとに、プロセッサ20内のキャッシュラインのコピーを保有しており、キャッシュラインの物理アドレスやキャッシュステータスで構成されている。
履歴テーブル制御部15は、履歴テーブルを制御する。具体的には、リクエスト監視部16からの指示により、プロセッサ20内のキャッシュラインのコピーを保持するために、履歴テーブルを更新し、プロセッサバス22を介して、プロセッサ20に対して、スヌープリクエストやインバリデートリクエストを発行する必要があるか否かを判断するために、履歴テーブルを参照し、履歴テーブルを制御する。
リクエスト監視部16は、プロセッサバスインタフェース制御部11やIOバスインタフェース制御部12を介して、リクエストを監視する。
このリクエスト監視部16は、プロセッサ20が発行しプロセッサバスインタフェース制御部11から転送されてきたリクエストやレスポンス、IO装置30が発行しIOバスインタフェース制御部12から転送されてきたDMAリードあるいはライトリクエストを監視し、プロセッサ20内のキャッシュラインのコピーを保有する。
[データ転送方法]
次に、本実施形態のデータ転送システムの動作(データ転送方法)について、図3〜図15を参照して説明する。
図3〜図15は、本実施形態のデータ転送システムの動作を示す動作手順図であって、図3〜図5は、プロセッサがリードリクエストを発行した場合、図6〜図8は、プロセッサがリードモディファイライトリクエストを発行した場合、図9〜図10は、プロセッサがインバリデートリクエストを発行した場合、図11〜図13は、IO装置がDMAリードリクエストを発行した場合、図14〜図15は、IO装置がDMAライトリクエストを発行した場合をそれぞれ示す。
(a)プロセッサが、リードリクエストを発行した場合
図3に示すように、プロセッサ20−1が、プロセッサバス22−1を介して、リードリクエストを発行し(ステップ100)、バスインタフェースアダプタ100のプロセッサバスインタフェース制御部11がそのリードリクエストを受信すると(ステップ101)、このリードリクエストがプロセッサバスインタフェース制御部11からリクエスト監視部16を介して履歴テーブル制御部15へ送られる。この履歴テーブル制御部15が、履歴テーブルを参照し、そのリードリクエストのキャッシュラインの物理アドレスを検索する(ステップ102)。
検索の結果、該当する物理アドレスが存在しない、あるいは該当する物理アドレスが存在するが、キャッシュステータスがIVの場合、つまり、履歴テーブルに有効なものが登録されていない場合、システムメモリ40に格納されているデータが最新のデータであることを示し(ステップ103)、システムメモリ制御部13がシステムメモリ40からデータを獲得し(ステップ104)、リクエスト監視部16は、プロセッサバスインタフェース制御部11及びプロセッサバス22−1を介し、プロセッサ20−1に対して、その獲得されたデータをリードリクエストのレスポンス(データレスポンス)として発行する(ステップ105)。プロセッサ20−1は、そのキャッシュラインのデータを参照し、キャッシュ内に格納する(ステップ106)。バスインタフェースアダプタ10の履歴テーブル制御部15は、リクエスト監視部16からの指示により、履歴テーブルにおけるプロセッサ20−1のキャッシュステートをCEに変更する(ステップ107)。
履歴テーブル制御部15が履歴テーブルを参照しそのリードリクエストのキャッシュラインの物理アドレスを検索した結果(ステップ102)、図4に示すように、該当する物理アドレスが存在し、キャッシュステータスがSHあるいはCEの場合、システムメモリ40に格納されているデータが最新のデータであることを示し(ステップ108)、システムメモリ制御部13がシステムメモリ40からデータを獲得し(ステップ109)、リクエスト監視部16は、プロセッサバスインタフェース制御部11及びプロセッサバス22−1を介し、プロセッサ20−1に対して、その獲得されたデータをリードリクエストのレスポンス(データレスポンス)として発行する(ステップ110)。プロセッサ20−1は、そのキャッシュラインのデータを参照し、キャッシュ内に格納する(ステップ111)。バスインタフェースアダプタ10の履歴テーブル制御部15は、リクエスト監視部16からの指示により、履歴テーブルにおけるプロセッサ20−1のキャッシュステートをSHに変更する(ステップ112)。
履歴テーブル制御部15が履歴テーブルを参照しそのリードリクエストのキャッシュラインの物理アドレスを検索した結果(ステップ102)、図5に示すように、該当する物理アドレスが存在し、キャッシュステータスがDEの場合、プロセッサ20内のキャッシュに最新のデータが存在することを示し(ステップ113)、リクエスト監視部16は、プロセッサバスインタフェース制御部11及びプロセッサバス22−2〜22−nを介し、プロセッサ20−2〜20−nに対して、リード付きスヌープリクエストを発行する(ステップ114)。
続いて、キャッシュラインのキャッシュステータスがDEであるキャッシュを保有するプロセッサ20−mがライトバックのリクエストを発行した場合(リード付きスヌープリクエストへのレスポンス、ステップ115)、プロセッサバスインタフェース制御部11がそのライトバックリクエストを受信し(ステップ116)、このライトバックリクエストがリクエスト監視部16を介してシステムメモリ制御部13へ送られ、システムメモリ制御部13が、ライトバックリクエストに付いているキャッシュブロックに格納されているデータによりシステムメモリ40のデータを更新し(ライトバック、ステップ117)、リクエスト監視部16が、プロセッサバスインタフェース制御部11及びプロセッサバス22−1を介し、プロセッサ20−1に対して、そのデータをリードリクエストのレスポンス(データレスポンス)として発行する(ステップ118)。プロセッサ20−1は、そのキャッシュラインのデータを参照し、キャッシュ内に格納する(ステップ119)。バスインタフェースアダプタ10の履歴テーブル制御部15は、リクエスト監視部16からの指示により、履歴テーブルにおけるプロセッサ20−1のキャッシュステートをSHに変更するとともに(ステップ120)、履歴テーブルにおけるプロセッサ20−2〜20−nのキャッシュステートをSHに変更する(ステップ121)。
(b)プロセッサが、リードモディファイライトリクエストを発行した場合
図6に示すように、プロセッサ20−1が、プロセッサバス22−1を介して、リードモディファイライトリクエストを発行し(ステップ200)、バスインタフェースアダプタ100のプロセッサバスインタフェース制御部11がそのリードモディファイライトリクエストを受信すると(ステップ201)、このリードモディファイライトリクエストがプロセッサバスインタフェース制御部11からリクエスト監視部16を介して履歴テーブル制御部15へ送られる。この履歴テーブル制御部15が、履歴テーブルを参照し、このリードモディファイライトリクエストのキャッシュラインの物理アドレスを検索する(ステップ202)。
検索の結果、該当する物理アドレスが存在しない、あるいは該当する物理アドレスが存在するが、キャッシュステータスがIVの場合、つまり、履歴テーブルに有効なものが登録されていない場合、システムメモリ40に格納されているデータが最新のデータであることを示し(ステップ203)、システムメモリ制御部13がシステムメモリ40からデータを獲得し(ステップ204)、リクエスト監視部16は、プロセッサバスインタフェース制御部11及びプロセッサバス22−1を介し、プロセッサ20−1に対して、その獲得されたデータをリードモディファイライトリクエストのレスポンス(データレスポンス)として発行する(ステップ205)。プロセッサ20−1は、キャッシュ内に格納し、データを更新する(ステップ206)。バスインタフェースアダプタ10の履歴テーブル制御部15は、リクエスト監視部16からの指示により、履歴テーブルにおけるプロセッサ20−1のキャッシュステートをDEに変更する(ステップ207)。
履歴テーブル制御部15が履歴テーブルを参照しそのリードモディファイライトリクエストのキャッシュラインの物理アドレスを検索した結果(ステップ202)、図7に示すように、該当する物理アドレスが存在し、キャッシュステータスがSHあるいはCEの場合、プロセッサ20内のキャッシュに有効なデータが存在することを示し(ステップ208)、リクエスト監視部16は、プロセッサバスインタフェース制御部11及びプロセッサバス22を介し、プロセッサ20に対して、リードモディファイライト付きスヌープリクエストを発行する(ステップ209)。また、システムメモリ40に格納されているデータが最新のデータであることから、システムメモリ制御部13は、システムメモリ40からデータを獲得し(ステップ210)、リクエスト監視部16は、プロセッサバスインタフェース制御部11及びプロセッサバス22−1を介し、プロセッサ20−1に対して、その獲得されたデータをリードモディファイライトリクエストのレスポンス(データレスポンス)として発行する(ステップ211)。プロセッサ20−1は、キャッシュ内に格納し、データを更新する(ステップ212)。バスインタフェースアダプタ10の履歴テーブル制御部15は、リクエスト監視部16からの指示により、履歴テーブルにおけるプロセッサ20−1のキャッシュステートをDEに変更するとともに(ステップ213)、履歴テーブルにおけるプロセッサ20−2〜20−nのキャッシュステートをIVに変更する(ステップ214)。
履歴テーブル制御部15が履歴テーブルを参照しそのリードモディファイライトリクエストのキャッシュラインの物理アドレスを検索した結果(ステップ202)、図8に示すように、該当する物理アドレスが存在し、キャッシュステータスがDEの場合、プロセッサ20内のキャッシュに最新のデータが存在することを示し(ステップ215)、リクエスト監視部16は、プロセッサバスインタフェース制御部11及びプロセッサバス22−2〜22−nを介し、プロセッサ20−2〜20−nに対して、リード付きスヌープリクエストを発行する(ステップ216)。
続いて、キャッシュラインのキャッシュステータスがDEであるキャッシュを保有するプロセッサ20−mがライトバックのリクエストを発行した場合(ステップ217)、プロセッサバスインタフェース制御部11がそのライトバックリクエストを受信し(ステップ218)、このライトバックリクエストがリクエスト監視部16を介してシステムメモリ制御部13へ送られ、システムメモリ制御部13が、ライトバックリクエストに付いているキャッシュブロックに格納されているデータによりシステムメモリ40のデータを更新し(ステップ219)、リクエスト監視部16が、プロセッサバスインタフェース制御部11及びプロセッサバス22−1を介して、プロセッサ20−1に対して、そのデータをリードモディファイライトリクエストのレスポンス(データレスポンス)として発行する(ステップ220)。プロセッサ20−1は、キャッシュ内に格納し、データを更新する(ステップ221)。バスインタフェースアダプタ10の履歴テーブル制御部15は、リクエスト監視部16からの指示により、履歴テーブルにおけるプロセッサ20−1のキャッシュステートをDEに変更するとともに(ステップ222)、履歴テーブルにおけるプロセッサ20−2〜20−nのキャッシュステートをIVに変更する(ステップ223)。
(c)プロセッサが、インバリデートリクエストを発行した場合
図9に示すように、プロセッサ20−1が、プロセッサバス22−1を介して、インバリデートリクエストを発行し(ステップ300)、バスインタフェースアダプタ100のプロセッサバスインタフェース制御部11がそのインバリデートリクエストを受信すると(ステップ301)、このインバリデートリクエストがプロセッサバスインタフェース制御部11からリクエスト監視部16を介して履歴テーブル制御部15へ送られる。この履歴テーブル制御部15が、履歴テーブルを参照し、このインバリデートリクエストのキャッシュラインの物理アドレスを検索する(ステップ302)。
検索の結果、該当する物理アドレスが存在しない、あるいは該当する物理アドレスが存在するが、キャッシュステータスがIVの場合、つまり、履歴テーブルに有効なものが登録されていない場合(ステップ303)、リクエスト監視部16は、プロセッサバスインタフェース制御部11及びプロセッサバス22−1を介し、プロセッサ20−1に対して、そのインバリデートリクエストの完了を発行する(ステップ304)。プロセッサ20−1は、キャッシュラインのデータを更新する(ステップ305)。バスインタフェースアダプタ10の履歴テーブル制御部15は、リクエスト監視部16からの指示により、履歴テーブルにおけるプロセッサ20−1のキャッシュステートをDEに変更する(ステップ306)。
履歴テーブル制御部15が履歴テーブルを参照しそのインバリデートリクエストのキャッシュラインの物理アドレスを検索した結果(ステップ302)、図10に示すように、該当する物理アドレスが存在し、キャッシュステータスがSH(CEあるいはDEはありえないキャッシュステータス)の場合、プロセッサ20内のキャッシュに有効なデータが存在することを示し(ステップ307)、リクエスト監視部16は、プロセッサバスインタフェース制御部11及びプロセッサバス22−1を介し、プロセッサ20−1に対して、インバリデートリクエストの完了を発行する(ステップ308)。プロセッサ20−1は、キャッシュラインのデータを更新する(ステップ309)。バスインタフェースアダプタ10の履歴テーブル制御部15は、リクエスト監視部16からの指示により、履歴テーブルにおけるプロセッサ20−1のキャッシュステートをDEに変更するとともに(ステップ310)、履歴テーブルにおけるプロセッサ20−2〜20−nのキャッシュステートをIVに変更する(ステップ311)。
(d)IO装置が、DMAリードリクエストを発行した場合
図11に示すように、IO装置30が、IOバス31を介して、DMAリードリクエストを発行し(ステップ400)、バスインタフェースアダプタ100のIOバスインタフェース制御部12がそのDMAリードリクエストを受信すると(ステップ401)、このDMAリードリクエストがIOバスインタフェース制御部12からリクエスト監視部16を介して履歴テーブル制御部15へ送られる。この履歴テーブル制御部15が、履歴テーブルを参照し、このDMAリードリクエストのキャッシュラインの物理アドレスを検索する(ステップ402)。
検索の結果、該当する物理アドレスが存在しない、あるいは該当する物理アドレスが存在するが、キャッシュステータスがIVの場合、つまり、履歴テーブルに有効なものが登録されていない場合、システムメモリ40に格納されているデータが最新のデータであることを示し(ステップ403)、システムメモリ制御部13がシステムメモリ40からデータを獲得し(ステップ404)、リクエスト監視部16は、IOバスインタフェース制御部12及びIOバス31を介し、IO装置30に対して、そのデータをリードリクエストのレスポンス(データレスポンス)として発行する(ステップ405)。
履歴テーブル制御部15が履歴テーブルを参照しそのDMAリードリクエストのキャッシュラインの物理アドレスを検索した結果(ステップ402)、図12に示すように、該当する物理アドレスが存在し、キャッシュステータスがSHあるいはCEの場合、システムメモリに格納されているデータが最新のデータであることを示し(ステップ406)、システムメモリ制御部13がシステムメモリ40からデータを獲得し(ステップ407)、リクエスト監視部16は、プロセッサバスインタフェース制御部11及びプロセッサバス22を介し、プロセッサ20に対して、その獲得されたデータをリードリクエストのレスポンス(データレスポンス)として発行する(ステップ408)。また、履歴テーブル制御部15は、リクエスト監視部16からの指示により、履歴テーブルにおけるプロセッサ20のキャッシュステートをSHに変更する(ステップ409)。
履歴テーブル制御部15が履歴テーブルを参照しそのDMAリードリクエストのキャッシュラインの物理アドレスを検索した結果(ステップ402)、図13に示すように、該当する物理アドレスが存在し、キャッシュステータスがDEの場合、プロセッサ20内のキャッシュに最新のデータが存在することを示し(ステップ410)、リクエスト監視部16は、プロセッサバスインタフェース制御部11及びプロセッサバス22を介し、プロセッサ20に対して、リード付きスヌープリクエストを発行する(ステップ411)。
続いて、キャッシュラインのキャッシュステータスがDEであるキャッシュを保有するプロセッサ20がライトバックのリクエストを発行し(ステップ412)、プロセッサバスインタフェース制御部11がそのライトバックリクエストを受信し(ステップ413)、このライトバックリクエストがリクエスト監視部16を介してシステムメモリ制御部13へ送られ、システムメモリ制御部13が、ライトバックリクエストに付いているキャッシュブロックに格納されているデータによりシステムメモリ40のデータを更新し(ステップ414)、リクエスト監視部16が、IOバスインタフェース制御部12及びIOバス31を介し、IO装置30に対して、そのデータをリードリクエストのレスポンス(データレスポンス)として発行する(ステップ415)。また、履歴テーブル制御部15は、リクエスト監視部16からの指示により、履歴テーブルにおけるプロセッサ20のキャッシュステートをSHに変更する(ステップ416)。
(e)IO装置が、DMAライトリクエストを発行した場合
図14に示すように、IO装置30が、IOバス31を介して、DMAライトリクエストを発行し(ステップ500)、バスインタフェースアダプタ100のIOバスインタフェース制御部12がそのDMAライトリクエストを受信すると(ステップ501)、このDMAライトリクエストがIOバスインタフェース制御部12からリクエスト監視部16を介して履歴テーブル制御部15へ送られる。この履歴テーブル制御部15が、履歴テーブルを参照し、このインバリデートリクエストのキャッシュラインの物理アドレスを検索する(ステップ502)。
検索の結果、該当する物理アドレスが存在しない、あるいは該当する物理アドレスが存在するが、キャッシュステータスがIVの場合、つまり、履歴テーブルに有効なものが登録されていない場合(ステップ503)、リクエスト監視部16は、プロセッサバスインタフェース制御部11及びプロセッサバス22を介し、プロセッサ20に対して、そのインバリデートリクエストの完了を発行する(ステップ504)。
履歴テーブル制御部15が履歴テーブルを参照しそのインバリデートリクエストのキャッシュラインの物理アドレスを検索した結果(ステップ502)、図15に示すように、該当する物理アドレスが存在し、キャッシュステータスがSH,CEあるいはDEのいずれかの場合、プロセッサ20内のキャッシュに有効なデータが存在することを示し(ステップ505)、リクエスト監視部16は、プロセッサバスインタフェース制御部11及びプロセッサバス22を介し、プロセッサ20に対して、インバリデートリクエストを発行する(ステップ506)。
続いて、キャッシュラインのキャッシュステータスがDEであるキャッシュを保有するプロセッサ20がライトバックのリクエストを発行し(ステップ507)、プロセッサバスインタフェース制御部11がそのライトバックリクエストを受信し(ステップ508)、このライトバックリクエストがリクエスト監視部16を介してシステムメモリ制御部13へ送られ、システムメモリ制御部13が、ライトバックリクエストに付いているキャッシュブロックに格納されているデータによりシステムメモリ40のデータを更新し(ステップ509)、DMAライトリクエストのライトデータをマージする。また、履歴テーブル制御部15は、リクエスト監視部16からの指示により、履歴テーブルにおけるプロセッサ20のキャッシュステートをIVに変更する(ステップ510)。
[情報処理装置]
パーソナルコンピュータ、PDA(Personal Digital Assistant)、携帯電話機に代表される情報処理装置には、内部にマザーボードと、拡張ボードとしてのPCI(Peripheral Component Interconnect(ペリフェラル コンポネント インタコネクト))ボード(PCIカード)を配置したものがある。
PCIとは、情報処理装置内部においてパーツとパーツを結ぶデータ伝送路であるバスの規格をいう。
PCIボードには、バスインタフェースアダプタ、システムメモリ、プロセッサ、IO装置などで構成されるデータ転送システムが形成されている。このデータ転送システムは、前述した本実施形態のデータ転送システムにより構成することができる。これにより、データ転送の高速化を実現したPCIボードを実現でき、情報処理装置全体としてもデータ処理の高速化を図ることができる。
なお、PCIボードを備えた情報処理装置については、例えば、特開2004−272646号公報「PCIボード及び情報処理装置」に開示されている。
以上説明したように、本実施形態のバスインタフェースアダプタ、データ転送方法、データ転送システム及び情報処理装置によれば、プロセッサへの不要なスヌープ時間を削減できるため、プロセッサ内部のスヌープ処理を削減できる。そして、スヌープ処理が完了されるまでの遅延時間が削減されることから、データ転送の高速化を図ることができる。
以上、本発明のバスインタフェースアダプタ、データ転送方法、データ転送システム及び情報処理装置の好ましい実施形態について説明したが、本発明に係るバスインタフェースアダプタ、データ転送方法、データ転送システム及び情報処理装置は上述した実施形態にのみ限定されるものではなく、本発明の範囲で種々の変更実施が可能であることは言うまでもない。
例えば、上述した実施形態では、システムメモリを一つのみ備えた構成としたが、一つのみに限るものではなく複数備えることもできる。
本発明は、データ転送を制御するバスインタフェースアダプタに関する発明であるため、バスインタフェースアダプタを搭載した装置や機器に利用可能である。
本発明の実施形態のデータ転送システムの構成を示すブロック図である。 履歴テーブルの構成を示す図表である。 プロセッサからリードリクエストが発行された場合であって、そのリードリクエストのキャッシュラインの物理アドレスが存在しないとき、または、その物理アドレスが存在するもののキャッシュステータスがインバリデート(IV)であるときのデータ転送システムの動作を示す動作手順図である。 プロセッサからリードリクエストが発行された場合であって、そのリードリクエストのキャッシュラインの物理アドレスが存在し、キャッシュステータスがシェアード(SH)又はクリーンイクスクルーシブ(CE)であるときのデータ転送システムの動作を示す動作手順図である。 プロセッサからリードリクエストが発行された場合であって、そのリードリクエストのキャッシュラインの物理アドレスが存在し、キャッシュステータスがダーティーイクスクルーシブ(DE)であるときのデータ転送システムの動作を示す動作手順図である。 プロセッサからリードモディファイライトリクエストが発行された場合であって、そのリードモディファイライトリクエストのキャッシュラインの物理アドレスが存在しないとき、または、その物理アドレスが存在するもののキャッシュステータスがIVであるときのデータ転送システムの動作を示す動作手順図である。 プロセッサからリードモディファイライトリクエストが発行された場合であって、そのリードモディファイライトリクエストのキャッシュラインの物理アドレスが存在し、キャッシュステータスがSH又はCEであるときのデータ転送システムの動作を示す動作手順図である。 プロセッサからリードモディファイライトリクエストが発行された場合であって、そのリードモディファイライトリクエストのキャッシュラインの物理アドレスが存在し、キャッシュステータスがDEであるときのデータ転送システムの動作を示す動作手順図である。 プロセッサからインバリデートリクエストが発行された場合であって、そのインバリデートリクエストのキャッシュラインの物理アドレスが存在しないとき、または、その物理アドレスが存在するもののキャッシュステータスがIVであるときのデータ転送システムの動作を示す動作手順図である。 プロセッサからインバリデートリクエストが発行された場合であって、そのインバリデートリクエストのキャッシュラインの物理アドレスが存在し、キャッシュステータスがSHであるときのデータ転送システムの動作を示す動作手順図である。 IO装置からDMAリードリクエストが発行された場合であって、そのDMAリードリクエストのキャッシュラインの物理アドレスが存在しないとき、または、その物理アドレスが存在するもののキャッシュステータスがIVであるときのデータ転送システムの動作を示す動作手順図である。 IO装置からDMAリードリクエストが発行された場合であって、そのDMAリードリクエストのキャッシュラインの物理アドレスが存在し、キャッシュステータスがSH又はCEであるときのデータ転送システムの動作を示す動作手順図である。 IO装置からDMAリードリクエストが発行された場合であって、そのDMAリードリクエストのキャッシュラインの物理アドレスが存在し、キャッシュステータスがDEであるときのデータ転送システムの動作を示す動作手順図である。 IO装置からDMAライトドリクエストが発行された場合であって、そのDMAライトリクエストのキャッシュラインの物理アドレスが存在しないとき、または、その物理アドレスが存在するもののキャッシュステータスがIVであるときのデータ転送システムの動作を示す動作手順図である。 IO装置からDMAライトドリクエストが発行された場合であって、そのDMAライトリクエストのキャッシュラインの物理アドレスが存在し、キャッシュステータスがSH、CE、DEのいずれかであるときのデータ転送システムの動作を示す動作手順図である。 従来のデータ転送システムの構成を示すブロック図である。 プロセッサに有効なキャッシュラインが存在するときの従来のデータ転送システムの動作を示す動作手順図である。 プロセッサからリードリクエストが発行された場合であって、他のプロセッサに有効なキャッシュラインが存在しないときの従来のデータ転送システムの動作を示す動作手順図である。 プロセッサからリードリクエストが発行された場合であって、他のプロセッサに有効なキャッシュラインが存在し、そのプロセッサのキャッシュステータスがSE又はCEであるときの従来のデータ転送システムの動作を示す動作手順図である。 プロセッサからリードリクエストが発行された場合であって、他のプロセッサに有効なキャッシュラインが存在し、そのプロセッサのキャッシュステータスがDEであるときの従来のデータ転送システムの動作を示す動作手順図である。 プロセッサからリードモディファイライトリクエストが発行された場合であって、他のプロセッサに有効なキャッシュラインが存在しないときの従来のデータ転送システムの動作を示す動作手順図である。 プロセッサからリードモディファイライトリクエストが発行された場合であって、他のプロセッサに有効なキャッシュラインが存在し、そのプロセッサのキャッシュステータスがSE又はCEであるときの従来のデータ転送システムの動作を示す動作手順図である。 プロセッサからリードモディファイライトリクエストが発行された場合であって、他のプロセッサに有効なキャッシュラインが存在し、そのプロセッサのキャッシュステータスがDEであるときの従来のデータ転送システムの動作を示す動作手順図である。 プロセッサからインバリデートリクエストが発行された場合であって、他のプロセッサに有効なキャッシュラインが存在しないときの従来のデータ転送システムの動作を示す動作手順図である。 プロセッサからインバリデートリクエストが発行された場合であって、他のプロセッサに有効なキャッシュラインが存在し、そのプロセッサのキャッシュステータスがSHであるときの従来のデータ転送システムの動作を示す動作手順図である。 プロセッサからインバリデートリクエストが発行された場合であって、他のプロセッサに有効なキャッシュラインが存在し、そのプロセッサのキャッシュステータスがCE又はDEであるときの従来のデータ転送システムの動作を示す動作手順図である。 IO装置からDMAリードリクエストが発行された場合であって、プロセッサに有効なキャッシュラインが存在しないときの従来のデータ転送システムの動作を示す動作手順図である。 IO装置からDMAリードリクエストが発行された場合であって、プロセッサに有効なキャッシュラインが存在し、キャッシュステータスがSH又はCEであるときの従来のデータ転送システムの動作を示す動作手順図である。 IO装置からDMAリードリクエストが発行された場合であって、プロセッサに有効なキャッシュラインが存在し、キャッシュステータスがDEであるときの従来のデータ転送システムの動作を示す動作手順図である。 IO装置からDMAライトリクエストが発行された場合であって、プロセッサに有効なキャッシュラインが存在しないときの従来のデータ転送システムの動作を示す動作手順図である。 IO装置からDMAライトリクエストが発行された場合であって、プロセッサに有効なキャッシュラインが存在し、キャッシュステータスがSH又はCEであるときの従来のデータ転送システムの動作を示す動作手順図である。 IO装置からDMAライトリクエストが発行された場合であって、プロセッサに有効なキャッシュラインが存在し、キャッシュステータスがDEであるときの従来のデータ転送システムの動作を示す動作手順図である。
符号の説明
10 バスインタフェースアダプタ
11 プロセッサバスインタフェース制御部
12 IOバスインタフェース制御部
13 システムメモリ制御部
14 履歴テーブル記憶部
15 履歴テーブル制御部
16 リクエスト監視部
20 プロセッサ
21 キャッシュ
22 プロセッサバス
30 IO装置
31 IOバス
40 システムメモリ
A データ転送システム

Claims (17)

  1. プロセッサからのリクエストを受信するとともに、プロセッサへレスポンスを送るプロセッサバスインタフェース制御部と、システムメモリからデータをリードするとともに、システムメモリにデータをライトするシステムメモリ制御部とを有したバスインタフェースアダプタであって、
    二以上の前記プロセッサのキャッシュラインの物理アドレス及びキャッシュステータスを有する履歴テーブルを記憶する履歴テーブル記憶部と、
    前記履歴テーブルを参照する履歴テーブル制御部と、
    前記プロセッサバスインタフェース制御部で受信された前記リクエストの内容及び前記履歴テーブル制御部での参照の結果にもとづき、前記リクエストを発行したプロセッサとシステムメモリとの間でデータの転送を行なうリクエスト監視部と、
    IO装置からのリクエストを受信するとともに、IO装置へレスポンスを送るIO装置バスインタフェース制御部とを備え、
    前記リクエスト監視部は、前記IO装置バスインタフェース制御部で受信された前記リクエストの内容及び前記履歴テーブル制御部での参照の結果にもとづき、前記リクエストを発行したIO装置とプロセッサとの間又は前記リクエストを発行したIO装置とシステムメモリとの間でデータの転送を行ない、
    前記キャッシュステータスには、インバリデート、シェアード、クリーンイクスクルーシブ、ダーティーイクスクルーシブがあり、
    前記インバリデートは、キャッシュラインが有効な情報を持たないことを示し、
    前記シェアードは、一のプロセッサのキャッシュラインは有効な情報を持ち、他のプロセッサのキャッシュにも存在し、キャッシュラインの内容はシステムメモリと同じであり、キャッシュラインのオーナーではないことを示し、
    前記クリーンイクスクルーシブは、キャッシュラインは有効な情報を持ち、キャッシュラインの内容はシステムメモリと同じであり、プロセッサはオーナーではないことを示し、
    前記ダーティーイクスクルーシブは、一のプロセッサのキャッシュラインは有効な情報を持ち、他のプロセッサのキャッシュには存在せず、キャッシュラインの内容はシステムメモリと異なり、プロセッサはオーナーであることを示す
    ことを特徴とするバスインタフェースアダプタ。
  2. 前記リクエストが、前記二以上のプロセッサのうちの一のプロセッサで発行されたリードリクエストであり、
    前記参照の結果、前記履歴テーブルに前記リードリクエストのキャッシュラインの物理アドレスが存在しないとき、又は、前記履歴テーブルに前記リードリクエストのキャッシュラインの物理アドレスが存在するとともに前記キャッシュステータスがインバリデートであるとき、
    前記リクエスト監視部は、前記システムメモリのデータが最新であることを示して、前記システムメモリからデータを獲得し、このデータを前記リードリクエストへのレスポンスとして前記リードリクエストを発行したプロセッサに対し発行する
    ことを特徴とする請求項1記載のバスインタフェースアダプタ。
  3. 前記リクエストが、前記二以上のプロセッサのうちの一のプロセッサで発行されたリードリクエストであり、
    前記参照の結果、前記履歴テーブルに前記リードリクエストのキャッシュラインの物理アドレスが存在するとともに、前記キャッシュステータスがシェアード又はクリーンイクスクルーシブのいずれかであるとき、
    前記リクエスト監視部は、前記システムメモリのデータが最新であることを示して、前記システムメモリからデータを獲得し、このデータを前記リードリクエストへのレスポンスとして前記リードリクエストを発行したプロセッサに対し発行する
    ことを特徴とする請求項1又は2記載のバスインタフェースアダプタ。
  4. 前記リクエストが、前記二以上のプロセッサのうちの一のプロセッサで発行されたリードリクエストであり、
    前記参照の結果、前記履歴テーブルに前記リードリクエストのキャッシュラインの物理アドレスが存在しており、前記キャッシュステータスがダーティーイクスクルーシブであるとき、
    前記リクエスト監視部は、前記二以上のプロセッサ内のキャッシュに最新のデータが存在することを示して、前記他のプロセッサに対してリード付きスヌープリクエストを発行し、前記他のプロセッサからライトバックリクエストが送られてくると、このライトバックリクエストに付されたデータを前記リードリクエストへのレスポンスとして前記リードリクエストを発行したプロセッサに対し発行する
    ことを特徴とする請求項1〜3のいずれかに記載のバスインタフェースアダプタ。
  5. 前記リクエストが、前記二以上のプロセッサのうちの一のプロセッサで発行されたリードモディファイライトリクエストであり、
    前記参照の結果、前記履歴テーブルに前記リードモディファイライトリクエストのキャッシュラインの物理アドレスが存在していないとき、又は、当該物理アドレスが存在しており前記キャッシュステータスがインバリデートであるとき、
    前記リクエスト監視部は、前記システムメモリのデータが最新であることを示して、前記システムメモリからデータを獲得し、このデータを前記リードモディファイライトリクエストへのレスポンスとして前記リードモディファイライトリクエストを発行したプロセッサに対し発行する
    ことを特徴とする請求項1記載のバスインタフェースアダプタ。
  6. 前記リクエストが、前記二以上のプロセッサのうちの一のプロセッサで発行されたリードモディファイライトリクエストであり、
    前記参照の結果、前記履歴テーブルに前記リードモディファイライトリクエストのキャッシュラインの物理アドレスが存在しており、前記キャッシュステータスがシェアード又はクリーンイクスクルーシブであるとき、
    前記リクエスト監視部は、前記二以上のプロセッサ内のキャッシュに最新のデータが存在することを示して、前記他のプロセッサに対してリード付きスヌープリクエストを発行するとともに、前記システムメモリのデータが最新であることを示して、前記システムメモリからデータを獲得し、このデータを前記リードモディファイライトリクエストへのレスポンスとして前記リードモディファイライトリクエストを発行したプロセッサに対し発行する
    ことを特徴とする請求項1又は5記載のバスインタフェースアダプタ。
  7. 前記リクエストが、前記二以上のプロセッサのうちの一のプロセッサで発行されたリードモディファイライトリクエストであり、
    前記参照の結果、前記履歴テーブルに前記リードモディファイライトリクエストのキャッシュラインの物理アドレスが存在しており、前記キャッシュステータスがダーティーイクスクルーシブであるとき、
    前記リクエスト監視部は、前記二以上のプロセッサ内のキャッシュに最新のデータが存在することを示して、前記他のプロセッサに対してリード付きスヌープリクエストを発行し、前記他のプロセッサからライトバックリクエストが送られてくると、このライトバックリクエストに付されたデータを前記リードモディファイライトリクエストへのレスポンスとして前記リードモディファイライトリクエストを発行したプロセッサに対し発行する
    ことを特徴とする請求項1、5、6のいずれかに記載のバスインタフェースアダプタ。
  8. 前記リクエストが、前記二以上のプロセッサのうちの一のプロセッサで発行されたインバリデートリクエストであり、
    前記参照の結果、前記履歴テーブルに前記インバリデートリクエストのキャッシュラインの物理アドレスが存在しないとき、又は、前記履歴テーブルに前記インバリデートリクエストのキャッシュラインの物理アドレスが存在しており前記キャッシュステータスがインバリデートであるとき、
    前記リクエスト監視部は、前記インバリデートリクエストを発行したプロセッサに対して、インバリデートリクエストの完了を発行する
    ことを特徴とする請求項1記載のバスインタフェースアダプタ。
  9. 前記リクエストが、前記二以上のプロセッサのうちの一のプロセッサで発行されたインバリデートリクエストであり、
    前記参照の結果、前記履歴テーブルに前記インバリデートリクエストのキャッシュラインの物理アドレスが存在しており、前記キャッシュステータスがシェアードであるとき、
    前記リクエスト監視部は、前記インバリデートリクエストを発行したプロセッサに対して、インバリデートリクエストの完了を発行する
    ことを特徴とする請求項1又は8記載のバスインタフェースアダプタ。
  10. 前記リクエストが、IO装置で発行されたDMAリードリクエストであり、
    前記参照の結果、前記履歴テーブルに前記DMAリードリクエストのキャッシュラインの物理アドレスが存在しないとき、又は、当該物理アドレスが存在しており前記キャッシュステータスがインバリデートであるとき、
    前記リクエスト監視部は、前記システムメモリのデータが最新であることを示して、前記システムメモリからデータを獲得し、このデータを前記DMAリードリクエストへのレスポンスとして前記IO装置に対し発行する
    ことを特徴とする請求項1記載のバスインタフェースアダプタ。
  11. 前記リクエストが、IO装置で発行されたDMAリードリクエストであり、
    前記参照の結果、前記履歴テーブルに前記DMAリードリクエストのキャッシュラインの物理アドレスが存在しており、前記キャッシュステータスが、シェアード又はクリーンイクスクルーシブのいずれかであるとき、
    前記リクエスト監視部は、前記システムメモリのデータが最新であることを示して、前記システムメモリからデータを獲得し、このデータを前記DMAリードリクエストへのレスポンスとして前記IO装置に対し発行する
    ことを特徴とする請求項1又は10記載のバスインタフェースアダプタ。
  12. 前記リクエストが、IO装置で発行されたDMAリードリクエストであり、
    前記参照の結果、前記履歴テーブルに前記DMAリードリクエストのキャッシュラインの物理アドレスが存在しており、前記キャッシュステータスがダーティーイクスクルーシブであるとき、
    前記リクエスト監視部は、前記二以上のプロセッサ内のキャッシュに最新のデータが存在することを示して、前記二以上のプロセッサに対しリード付きスヌープリクエストを発行し、キャッシュラインのキャッシュステータスがダーティーイクスクルーシブであるキャッシュを保有するプロセッサからライトバックリクエストが送られてくると、このライトバックリクエストに付されたデータを前記DMAリードリクエストへのレスポンスとして前記IO装置に対し発行する
    ことを特徴とする請求項1、10、11のいずれかに記載のバスインタフェースアダプタ。
  13. 前記リクエストが、IO装置で発行されたDMAライトリクエストであり、
    前記参照の結果、前記履歴テーブルに前記DMAライトリクエストのキャッシュラインの物理アドレスが存在しないとき、
    前記リクエスト監視部は、前記二以上のプロセッサに対して、インバリデートリクエストの完了を発行する
    ことを特徴とする請求項1記載のバスインタフェースアダプタ。
  14. 前記リクエストが、IO装置で発行されたDMAライトリクエストであり、
    前記参照の結果、前記履歴テーブルに前記インバリデートリクエストのキャッシュラインの物理アドレスが存在しており、前記キャッシュステータスが、シェアード、クリーンイクスクルーシブ又はダーティーイクスクルーシブのいずれかであるとき、
    前記リクエスト監視部は、前記二以上のプロセッサ内のキャッシュに最新のデータが存在することを示して、前記二以上のプロセッサに対しインバリデートリクエストを発行し、キャッシュラインのキャッシュステータスがダーティーイクスクルーシブであるキャッシュを保有するプロセッサからライトバックリクエストが送られてくると、このライトバックリクエストに付されたデータを前記DMAライトリクエストへのレスポンスとして前記IO装置に対し発行する
    ことを特徴とする請求項1又は13記載のバスインタフェースアダプタ。
  15. バスインタフェースアダプタのプロセッサバスインタフェース制御部がプロセッサからのリクエストを受信する処理を有したデータ転送方法であって、
    前記リクエストが受信されると、前記バスインタフェースアダプタの履歴テーブル制御部が、二以上の前記プロセッサに関する物理アドレス及びキャッシュステータスを有する履歴テーブルを参照し、
    前記バスインタフェースアダプタのリクエスト監視部が、前記履歴テーブルの参照結果にもとづき、前記プロセッサとシステムメモリとの間でデータの転送を行ない、
    前記バスインタフェースアダプタのIO装置バスインタフェース制御部が、IO装置からのリクエストを受信すると、
    前記リクエスト監視部が、前記IO装置バスインタフェース制御部で受信された前記リクエストの内容及び前記履歴テーブル制御部での参照の結果にもとづき、前記リクエストを発行したIO装置とプロセッサとの間又は前記リクエストを発行したIO装置とシステムメモリとの間でデータの転送を行ない、
    前記キャッシュステータスには、インバリデート、シェアード、クリーンイクスクルーシブ、ダーティーイクスクルーシブがあり、
    前記インバリデートは、キャッシュラインが有効な情報を持たないことを示し、
    前記シェアードは、一のプロセッサのキャッシュラインは有効な情報を持ち、他のプロセッサのキャッシュにも存在し、キャッシュラインの内容はシステムメモリと同じであり、キャッシュラインのオーナーではないことを示し、
    前記クリーンイクスクルーシブは、キャッシュラインは有効な情報を持ち、キャッシュラインの内容はシステムメモリと同じであり、プロセッサはオーナーではないことを示し、
    前記ダーティーイクスクルーシブは、一のプロセッサのキャッシュラインは有効な情報を持ち、他のプロセッサのキャッシュには存在せず、キャッシュラインの内容はシステムメモリと異なり、プロセッサはオーナーであることを示す
    ことを特徴とするデータ転送方法。
  16. キャッシュメモリを有する二以上のプロセッサと、プロセッサバスを介して前記プロセッサに接続されたバスインタフェースアダプタと、このバスインタフェースアダプタに接続されたシステムメモリとを備えたデータ転送システムであって、
    前記バスインタフェースアダプタが、前記請求項1〜請求項14のいずれかに記載のバスインタフェースアダプタからなる
    ことを特徴とするデータ転送システム。
  17. 基板上にデータ転送システムが形成されたペリフェラルコンポネントインタコネクトボードを備えた情報処理装置であって、
    前記データ転送システムが、前記請求項16に記載のデータ転送システムを有した
    ことを特徴とする情報処理装置。
JP2007038431A 2007-02-19 2007-02-19 バスインタフェースアダプタ、データ転送方法、データ転送システム及び情報処理装置 Expired - Fee Related JP4851958B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007038431A JP4851958B2 (ja) 2007-02-19 2007-02-19 バスインタフェースアダプタ、データ転送方法、データ転送システム及び情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007038431A JP4851958B2 (ja) 2007-02-19 2007-02-19 バスインタフェースアダプタ、データ転送方法、データ転送システム及び情報処理装置

Publications (2)

Publication Number Publication Date
JP2008204101A JP2008204101A (ja) 2008-09-04
JP4851958B2 true JP4851958B2 (ja) 2012-01-11

Family

ID=39781558

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007038431A Expired - Fee Related JP4851958B2 (ja) 2007-02-19 2007-02-19 バスインタフェースアダプタ、データ転送方法、データ転送システム及び情報処理装置

Country Status (1)

Country Link
JP (1) JP4851958B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5568939B2 (ja) * 2009-10-08 2014-08-13 富士通株式会社 演算処理装置及び制御方法
JP6115455B2 (ja) 2013-11-29 2017-04-19 富士通株式会社 並列計算機システム、並列計算機システムの制御方法、情報処理装置、演算処理装置および通信制御装置
US10642737B2 (en) * 2018-02-23 2020-05-05 Microsoft Technology Licensing, Llc Logging cache influxes by request to a higher-level cache

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0816475A (ja) * 1994-06-30 1996-01-19 Toshiba Corp マルチプロセッサシステム
JPH08185359A (ja) * 1994-10-31 1996-07-16 Toshiba Corp メモリサブシステム
JP3067976B2 (ja) * 1995-07-05 2000-07-24 日本電気株式会社 マルチレベルバス結合型マルチプロセッサシステム
KR100515059B1 (ko) * 2003-07-22 2005-09-14 삼성전자주식회사 멀티프로세서 시스템 및 멀티프로세서 시스템의 캐쉬일관성 유지 방법

Also Published As

Publication number Publication date
JP2008204101A (ja) 2008-09-04

Similar Documents

Publication Publication Date Title
US7581068B2 (en) Exclusive ownership snoop filter
US7996625B2 (en) Method and apparatus for reducing memory latency in a cache coherent multi-node architecture
US7120755B2 (en) Transfer of cache lines on-chip between processing cores in a multi-core system
US7305523B2 (en) Cache memory direct intervention
US7529866B2 (en) Retry mechanism in cache coherent communication among agents
EP1311956B1 (en) Method and apparatus for pipelining ordered input/output transactions in a cache coherent, multi-processor system
US20080195820A1 (en) Prefetch miss indicator for cache coherence directory misses on external caches
US7536514B2 (en) Early return indication for read exclusive requests in shared memory architecture
JP2982868B2 (ja) メモリ待ち時間を短縮する方法およびコンピュータ・システム
US20070083715A1 (en) Early return indication for return data prior to receiving all responses in shared memory architecture
JPH10333985A (ja) データ供給方法及びコンピュータ・システム
JPH10289155A (ja) Smpバスの共用状態でのキャッシュ・ラインの共用介入方法及びシステム
JPH10289154A (ja) Smpバスの排他状態でのキャッシュ・ラインの共用を行う方法及び装置
EP1624377B1 (en) Adapted MSI protocol used for snoop caches and speculative memory reads
EP1638003A2 (en) Apparatus and method for retrieving data from a data storage system
US5713004A (en) Cache control for use in a multiprocessor to prevent data from ping-ponging between caches
US7779210B2 (en) Avoiding snoop response dependency
JPH11328026A (ja) ホバ―リング(h)及びリ―セント(r)状態を有するキャッシュ・コヒ―レンシ・プロトコル
WO2010038301A1 (ja) メモリアクセス方法及び情報処理装置
US20040068616A1 (en) System and method enabling efficient cache line reuse in a computer system
JP4851958B2 (ja) バスインタフェースアダプタ、データ転送方法、データ転送システム及び情報処理装置
US5978886A (en) Method and apparatus for duplicating tag systems to maintain addresses of CPU data stored in write buffers external to a cache
EP0976047B1 (en) Read operations in multiprocessor computer system
JPH11272558A (ja) Hr状態を含むキャッシュ・コヒ―レンシ・プロトコル
JP3732397B2 (ja) キャッシュシステム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110209

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110215

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110418

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

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

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

Year of fee payment: 3

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