JP4631948B2 - 情報処理装置及び順序保証方式 - Google Patents

情報処理装置及び順序保証方式 Download PDF

Info

Publication number
JP4631948B2
JP4631948B2 JP2008208322A JP2008208322A JP4631948B2 JP 4631948 B2 JP4631948 B2 JP 4631948B2 JP 2008208322 A JP2008208322 A JP 2008208322A JP 2008208322 A JP2008208322 A JP 2008208322A JP 4631948 B2 JP4631948 B2 JP 4631948B2
Authority
JP
Japan
Prior art keywords
processor
cache
bank
instruction
identifier
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.)
Active
Application number
JP2008208322A
Other languages
English (en)
Other versions
JP2010044599A (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 Corp
Original Assignee
NEC Corp
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 Corp filed Critical NEC Corp
Priority to JP2008208322A priority Critical patent/JP4631948B2/ja
Priority to US12/536,081 priority patent/US8468307B2/en
Publication of JP2010044599A publication Critical patent/JP2010044599A/ja
Application granted granted Critical
Publication of JP4631948B2 publication Critical patent/JP4631948B2/ja
Active 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/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating 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
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions

Landscapes

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

Description

本発明は、共有メモリと、キャッシュを有する複数のプロセッサを備え、ディレクトリ方式でコヒーレンス制御を行う情報処理装置において、共有メモリとキャッシュとが保持するデータの一貫性を保証する情報処理装置及び順序保証方法に関し、特に、共有メモリが複数のバンクから構成され、リリースコンシステンシモデル(Release Consistency Model)を採用する情報処理装置及び順序保証方法に関する。
キャッシュを有する複数のプロセッサがメモリ(共有メモリ)を共有するシステムにおいて、共有メモリに書き込みが行われた場合、各プロセッサが有するキャッシュが保持するデータを無効化させ、共有メモリとキャッシュとが保持するデータの一貫性を保証するコヒーレンス制御が必要となる。コヒーレンス制御を実現するため、プロセッサが発行するストア命令に伴って、キャッシュが保持するデータを無効化(クリア)する無効化要求が発行される。また、無効化要求の処理完了を保証するため、例えば、Release命令とFence命令とを用いる。
具体的には、共有メモリにデータを書き込むRelease側プロセッサと、キャッシュのデータを無効化することが要求されるAcquire側プロセッサとを想定した場合、次のような制御が必要となる。Release側プロセッサは、Acquire側プロセッサと同期をとるために、Release命令を発行する。Acquire側プロセッサは、Release命令を検出することによって、Release側プロセッサとの同期を確立する。ここで、Release側プロセッサとAcquire側プロセッサとが同期をとるとは、Release命令発行前に、Release側プロセッサが共有メモリへアクセスした結果が共有メモリに反映された状態であり、かつ、この共有メモリへの書き込み(ストア命令)にともなって、Acquire側プロセッサが有するキャッシュの無効化要求が発行された状態である。ただし、この段階において、発行された無効化要求の処理の完了は保証されていない。
例えば、特許文献1に複数のプロセッサと複数の主記憶をスイッチ型主記憶制御装置で接続したマルチプロセッサ方式の情報処理装置で、コヒーレンス制御を実現する技術が開示されている。
また、リリースコンシステンシモデルにおいて、通常の処理、すなわち、共有メモリとキャッシュとが保持するデータの一貫性を保証するタイミングが指定されるまでの期間では、キャッシュの無効化処理の順序は問われない。複数のバンクから構成される共有メモリにおいて、各バンクから無効化要求が発行されるタイミングは異なるため、各プロセッサにおいて無効化要求の処理完了を保証することは困難であった。また、特許文献1には、この技術について言及されていなかった。
特開2002−7371号公報
しかしながら、複数のバンクから構成されるメモリを、複数のプロセッサ間で共有し、ディレクトリ方式でコヒーレンス制御を行う情報処理装置(コンピュータシステム)において、共有メモリとキャッシュとが保持するデータの一貫性が保証されるタイミングの検出が必要であった。特に、情報処理装置がリリースコンシステンシモデルに準拠するためには、共有メモリとキャッシュとが保持するデータの一貫性を実現する無効化要求の処理完了を保証するタイミングが指定された場合、各プロセッサが有するキャッシュの無効化要求の完了を保証する機構が必要であった。
本発明は、このような事情に鑑みてなされたものであり、複数のバンクから構成される共有メモリのコヒーレンス制御にディレクトリ方式を採用する情報処理装置において、キャッシュの無効化処理の完了を保証する仕組みを提供することを目的とする。
本発明に係る情報処理装置の一態様は、複数のバンクから構成される共有メモリ、複数のプロセッサ、及び、前記複数のプロセッサと前記共有メモリとを接続するネットワークを有する情報処理装置であって、各プロセッサは、前記共有メモリが保持するデータの一部の写しを保持するキャッシュと、前記共有メモリ及び前記キャッシュが保持するデータの一貫性の処理完了保証を要求されたタイミングで、発行元に返信される識別子を、前記ネットワークを介して前記各バンクへ送信し、前記識別子が前記各バンクから返信されることを確認するフェンス制御手段と、を備え、各バンクは、メモリ本体と、前記キャッシュが保持するデータのメモリ本体の領域情報を保持し、前記メモリ本体にデータが書き込まれた領域に応じて、前記キャッシュが保持するデータを無効化する無効化要求を発行するディレクトリ手段と、前記無効化要求と前記識別子とをキューイングし、キューイングされた順番に、前記無効化要求と識別子とのいずれかを前記ネットワークを介して送信するキューイング手段と、を備える。
また、本発明に係る順序保証方法の一態様は、複数のバンクから構成される共有メモリ、キャッシュを有する複数のプロセッサ、及び、前記複数のプロセッサと前記共有メモリとを接続するネットワークから構成される情報処理装置が、前記共有メモリと前記キャッシュとのコヒーレンス制御をディレクト方式により実現する順序保証方法であって、各プロセッサは、前記共有メモリ及び前記キャッシュの一貫性の処理完了保証を要求されたタイミングで、発行元に返信される識別子を各バンクへ送信し、各バンクは、前記キャッシュの無効化を要求する無効化要求と前記識別子とを、受け付けた順番にキューイングし、キューイングした順番に、前記無効化要求と識別子とを前記複数のプロセッサの少なくとも一つに送信し、前記各プロセッサは、前記識別子が返信されることを確認する。
本発明によれば、複数のバンクから構成される共有メモリのコヒーレンス制御にディレクトリ方式を採用する情報処理装置において、キャッシュの無効化処理の完了を保証する仕組みを提供することが可能となる。
以下、本発明の実施形態について、図面を参照しながら説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。各図面において同一の構成または機能を有する構成要素および相当部分には、同一の符号を付し、その説明は省略する。また、本明細書では、同じ構成要素が複数存在し、それぞれを区別する場合に、符号に"−n"(n≧0の整数)付加して、複数の構成要素それぞれを区別するものとする。例えば、図1では、複数のプロセッサ1−0、1−1・・・1−j(図1では、j=3)を示している。図1を用いて説明する場合、プロセッサ1は、複数のプロセッサ1−1〜1−jのいずれか一つまたは複数を示すものとし、プロセッサ1−1(あるいは、プロセッサ1−2など)は、複数のプロセッサのそれぞれを区別して示すものとする。
まず、前提となるリリースコンシステンシモデルについて説明する。図1には、リリースコンシステンシモデルのメモリ順序保証を示している。メモリ順序保証とは、データの大域可視性(Global Visibility)を保証することである。すなわち、共有メモリとキャッシュとが保持するデータの一貫性を実現するために必要な処理の完了を保証することである。具体的には、共有メモリとキャッシュとが保持するデータの一貫性を実現するため、共有メモリへデータを書き込むストア命令に伴って、キャッシュのデータの無効化を要求する無効化要求が発行される。発行された無効化要求の処理完了のタイミングを検出することによって、大域可視性を保証する。。リリースコンテンシモデルでは、キャッシュの無効化要求の処理順序は問われない。このため、所定のタイミングまでに発行された無効化要求について、処理が完了している状態を「メモリ順序保証」、あるいは、「データ順序性の保証」という場合がある。図1では、Release命令(リリース命令)とFence命令(フェンス命令)とによって、メモリ順序保証を実現している。Fence命令は、Acquire命令(アクワイヤ命令)ということもある。
図1では、共有メモリと、共有メモリが記憶するデータの一部の写しを保持するキャッシュを有する複数のプロセッサ情報処理装置を前提としている。また、複数のプロセッサの一つをRelease側プロセッサ(リリース側プロセッサ)、他の一つをAcquire側プロセッサ(アクワイヤ側プロセッサ)とし、Release側プロセッサがRelease命令を発行することによって、Acquire側プロセッサとの同期をとる手順を説明している。Release命令は、Release側プロセッサとAcquire側プロセッサとが同期をとるタイミングを指示する命令である。言い換えれば、共有メモリが保持するデータと、プロセッサが備えるキャッシュが保持するデータとの一貫性の無効化処理完了を保証することを要求する命令である。従って、Acquire側プロセッサにとって、Release命令を検出したタイミングは、データの一貫性の処理完了保証を要求されたタイミングであるといえる。
リリースコンシステンシモデルではRelease命令が発行される前のメモリアクセス命令の可視化順序は保証されない。すなわち、メモリアクセス命令、例えば、ストア命令(書き込み命令)に伴って発行される無効化要求が処理されるタイミングはバンク毎に独立して処理されるため、不確定である。従って、他のプロセッサからメモリアクセス命令を実行した結果が参照できるタイミングは保証されていないといえる。
しかし、同期化を行うRelease命令の発行をきっかけにRelease命令以前の共有メモリへのアクセスの完了を保証する処理を開始する。具体的には、Release側プロセッサは、共有メモリへのアクセス命令(特に、Store命令)が完了したタイミングで、Release命令を発行する。Acquire側プロセッサは、Release命令を検出した後、Fence命令を発行することによって、無効化要求の処理完了を保証する手続きを実行する。
図1に示すように、Release命令が発行される段階では、Release側プロセッサが発行する共有メモリへのアクセス命令の完了が保証される。すなわち、Release側プロセッサは、Release命令発行前に実行されるべきStore命令を発行した後、Release命令を発行する。また、Acquire側プロセッサは、Release命令を検出した後、Fence命令を発行し、共有メモリのデータの順序性を保証する処理を実施する。
Release側プロセッサは、例えば、Release命令として共有メモリの所定の領域に所定のストアデータを書き込むストア命令を発行する。Acquire側プロセッサは、Release命令によるストアデータをLoad命令と分岐命令とを実行することによって待ち合わせをし(待ち状態)、待ち合わせが完了すると次の処理に進むシーケンスになっている。ストアデータについては、予め、Release側プロセッサとAcquire側プロセッサとの間で取り決めてあることを前提とする。
分岐命令でストアデータの書き込みが検出されると、Acquire側プロセッサは、Fence命令(Acquire命令)を発行する。このFence命令が発行された以降では、共有メモリのデータの順序性を保証しなければならない。すなわち、共有メモリとキャッシュメモリとの一貫性が保証される必要がある。従って、Fence命令が発行された後の期間(厳密には、Fence命令の処理完了後の期間)は、Release命令が発行される前に要求された無効化要求の処理が完了し、共有メモリのデータ順序性が保証される必要がある。
共有メモリのデータの順序性を保証するために、Fence命令は次の2つを実現しなければならない。
(1)Fence命令より後続のLoad命令が投機的に実行されないこと。
すなわち、待ち合わせが完了する前の共有メモリへのアクセスを抑止しなければならない。
通常、(1)の機能はプロセッサ内で、Load命令がFence命令を追い越すことを不許可にすることで実現する。
(2)Release命令以前のStore命令によるAcquire側プロセッサに対する無効化要求の完了の保証すること。この(2)を実現する必要がある。しかしながら、複数バンクから構成されるメモリを複数のプロセッサで共有し、かつ、プロセッサの持つキャッシュ間でのコヒーレンス制御をするアーキテクチャを前提とした場合、バンク構成の共有メモリから発行されるキャッシュへの無効化要求の完了順序は保証されない。具体的には、キャッシュの無効化要求の処理の順番は不確定であり、無効化要求の処理の完了を把握する仕組みは、図1には表わされていない。
しかしながら、前述のようにリリースコンシステンシモデルでは、同期化処理であるFence命令完了時には、無効化要求の完了順序は保証されていなければならない。すなわち、Release命令が発行される前に要求されたキャッシュの無効化要求の処理がすべて完了している必要がある。
従って、Release命令以前のストア命令による無効化要求がFence命令の終了時には、完了していることを保証する何らかの機構が必要である。以下の実施形態では、キャッシュの無効化要求の完了を保証する仕組みについて説明する。
(実施形態1)
実施形態1では、Fence命令発行に無効化要求の処理完了を把握できる仕組みを追加する。具体的には次のような処理を実施する。まず、Fence命令発行時に、当該命令の識別子(Fence命令ID)を共有メモリの全バンクにブロードキャストする。識別子は、発行元に返信させる命令である。これにより、ブロードキャストされたすべての識別子が、各バンクが持つ無効化要求キューにキューイングされる。その後、識別子が発行元プロセッサに戻ることによって、Fence命令発行以前の無効化要求の完了を保証する。以下、図面を用いて詳細に説明する。
図2は、本発明の実施形態1に係る情報処理装置の構成例を示すブロック図である。情報処理装置は、プロセッサ1、プロセッサ・メモリ間ネットワーク(ネットワーク)2、及び、共有メモリ4を備える。共有メモリ4は、複数のバンク3から構成されている。図1では、4つのプロセッサ1−0〜1−3、N+1個(N≧0)のバンク3−0〜3−Nを示しているが、これらの数は一例であり、これらの数に限られるわけではない。
プロセッサ1は、プロセッサ・メモリ間ネットワーク2を介して共有メモリ4へアクセスする。プロセッサ1の内部構成例を、図3に示す。プロセッサ1は、命令制御部(命令制御手段)11、L1キャッシュ(キャッシュ)12、FENCE制御部(フェンス制御手段)13、無効化要求制御部14、及び、ストア制御部15を備える。
命令制御部11は、命令の制御を行う。例えば、ストア命令、ロード命令など共有メモリ4をアクセスする命令、並びに他の命令の実行を制御する。
L1キャッシュ12は、一般的にプロセッサ、もしくは、プロセッサコアごとに設けられる一次キャッシュである。L1キャッシュ12は、バンク3が保持するデータのコピーを一時的に保持する。本明細書では、データのコピーを保持する単位(領域)をキャッシュラインとして説明する。また、L1キャッシュ12は、他プロセッサから要求される無効化要求によって、該当するキャッシュラインが無効化(データを保持していない状態にクリア)される。
FENCE制御部13は、Fence命令の制御を行う。具体的には、Release側プロセッサとの同期化の際に、Fence命令ID(識別子)を共有メモリの全バンクにブロードキャストする機能、ブロードキャストした全Fence命令IDがリプライされたことを確認する機能、及び、その確認を元に、後続命令の実施を許可する信号を命令制御部11に通知する機能を有する。
無効化要求制御部14は、無効化要求を受け、L1キャッシュを無効化する機能を有している。無効化要求は、他プロセッサからストア命令が発行された際、自プロセッサで同一キャッシュラインを保持している場合、共有メモリ4内のバンク3から、当該キャッシュラインの無効化要求が発行される。
ストア制御部15は、ストア系命令(ストア命令または共有メモリのデータを書き換える命令)を制御する。ストア制御部15は、Release命令発行時に、Release命令以前の命令が、発行済みであることを保証する機能も有する。
プロセッサ・メモリ間ネットワーク2は、プロセッサ1と共有メモリ4とを接続する機構である。本実施形態では、接続形態は問わない。
共有メモリ4は、複数のプロセッサ1が使用する記憶領域である。ここでは、バンク構成をとる共有メモリを示している。図2では、共有メモリを示したが、共有キャッシュでも構わない。共有メモリ4は、近年のマルチコア構成のプロセッサ間で、共有されるオンチップのキャッシュも含まれる。複数のバンク3は、共有メモリ4を構成するバンク型メモリである。図2のバンク3−0に内部構成例を示している。なお、他のバンク3も同様の構成を有するが記載を省略している。バンク3は、無効化要求キュー(キューイング手段)31、ディレクトリ(ディレクトリ手段)32、メモリ本体33を備える。
ディレクトリ32は、L1キャッシュ12−共有メモリ4間の一貫性を一元管理する機能を持つ。また、ディレクトリ32は、各プロセッサ1がL1キャッシュ12に保持するキャッシュラインの情報(領域情報)を保持する。ディレクトリ32は、保持するキャッシュラインの情報に基づいて、L1キャッシュ12の無効化が必要と判断した場合、無効化が必要とされたプロセッサ1に向けた無効化要求を発行するように無効化要求キュー31に対して、指示する機能も有する。無効化要求は、無効化対象のプロセッサ1の情報を含む。
無効化要求キュー31は、ディレクトリ32から発行される無効化要求を、無効化対象のプロセッサに対して発行する機能を有する。図4に、無効化要求キュー31の構成例を示す。無効化要求キュー31は、First−In−First−Outのキュー構造をとる。図4では、下から(末尾から)無効化要求などがエントリされ、上に行くほど古いエントリとなっている例を示している。エントリの先頭(一番古くエントリされたもの)になったものからプロセッサ1に対して無効化要求を発行する。また、無効化要求キュー31は、エントリの入り口として、ディレクトリ32からエントリされる無効化要求の入り口の他に、Fence命令IDを受ける入り口を有する。Fence命令IDは、プロセッサ1のFENCE制御部13からブロードキャストされた識別子であり、Fence命令IDも無効化要求と同じようにキューイングされ、キューの先頭に来たときに発行元であるプロセッサ1に対して発行される。
メモリ本体33は、コンピュータシステムにおける一般的なメモリである。
次に、無効化要求が無効化要求キュー31に格納され処理されるまでの動作の概要を時系列に説明する。図5では、次の事項を前提とする。プロセッサ1−0がRelease側プロセッサであり、プロセッサ1−3がAcquire側プロセッサとする。共有メモリ4を構成する複数のバンク3のうち、バンク3−0とバンク3−Nを示して説明する。また、Release側プロセッサがストア命令を発行するとバンク3のディレクトリ32は、無効化処理の必要性を判断する。具体的には、Acquire側プロセッサが共有しているキャッシュラインと、ストア命令で書き込むキャッシュラインとが一致する場合、ディレクトリ32は、Acquire側プロセッサが有するL1キャッシュ12のうち、対応するキャッシュラインを無効化する無効化要求を発行する。符号AからHは、処理(命令)の流れを示すラインである。以下、具体的に説明する。
まず、Release側プロセッサは、Acquire側プロセッサが共有しているキャッシュラインに対してストア命令を発行する(ラインA)。ストア命令は、ディレクトリ32に入力されるとともに、メモリ本体33へデータの書き込みを実施する。ストア命令が共有メモリへの書き込みを行う際、ディレクトリ32は、保持するキャッシュラインの情報を調べ、無効化が必要なプロセッサを検出する。ここでは、Acquire側プロセッサ(プロセッサ1−3)のL1キャッシュ12が該当すると仮定する。ディレクトリ32は、自己のバンク3が持つ無効化要求キュー31にAcquire側プロセッサに対する無効化要求(例えば、無効化要求#2)をキューイングする(ラインB)。
キューイングされた無効化要求はキューの先頭になると無効化要求によって指定されたプロセッサ1に対して発行される(ラインC)。各バンク3の無効化要求キュー31から発行された無効化要求の完了順序は保証されていない。すなわち、各バンクが独立して無効化要求を発行すること、各バンク3の無効化要求キュー31の混み具合が異なること、あるいは、バンク3からAcquire側プロセッサまでの経路の混み具合が異なること等よって、無効化要求が実行される順番に入れ替わりが発生し得る。具体的には、例えば図5において、バンク3−0へのStore命令に伴って無効化要求#2がキューイングされ、続いて、バンク3−NへのStore命令に伴って無効化要求#10がキューイングされる。しかしながら、無効化要求#2及び無効化要求#10の処理が完了する順序は不明である。
Release側プロセッサは、Release命令を発行することによって、Acquire側プロセッサと同期をとる(ラインD)。言い換えれば、Release側プロセッサは、Acquire側プロセッサと同期をとる場合に、Release命令を発行する。
一方、Acquire側プロセッサは、Release命令を受けることによって、Fence命令を発行する(ラインE)。ここでは、プロセッサ1−2がFence命令を発行する。Fence命令の実行が開始されると、全バンク3に対して、当該命令の識別子がブロードキャストされる。ブロードキャストされた識別子は、先の無効化要求で使用した無効化要求キュー31にキューイングされる(ラインF−0〜F−N)。図5では、バンク3−0とバンク3−Nの二つを示しているが、他のバンクでも同様にFence命令IDがキューイングされる。
全バンク3上の各無効化要求キュー31から、無効化要求が順次発行されると、いずれ、該識別子の発行順序となる。発行対象になった当該識別子(Fence命令ID)は発行元プロセッサに戻される(ラインG−0〜G−N)。Acquire側プロセッサが、ブロードキャストした全識別子を受理すれば、同期化以前のすべての無効化要求が完了したことが保証される(ラインH)。すなわち、全識別子受理が完了した時点で、Acquire側プロセッサは後続の処理に進むことが可能になる。
続いて、図6、7のフローチャートを用いて、Release側プロセッサが共有メモリ4へ共有データを書き込む処理(プロセッサ側の共有データ書き込み処理)、及びAcquire側プロセッサがRelease命令の受信に伴って実行する同期化処理(Acquire側同期化処理)を具体的に説明する。
図6は、Release側プロセッサが共有メモリにデータを書き込む処理の動作例を示すフローチャートである。図7は、Acquire側プロセッサの同期化処理の動作例を示すフローチャートである。図6に示すRelease側の共有データ書き込み処理は、Release側プロセッサの動作に起因するものである。また、図7に示すAcquire側同期化処理は、Acquire側プロセッサの動作に起因するものである。
まず、Release側の共有データ書き込み処理について図2、3、及び6を参照して説明する。はじめに、Release側プロセッサは、Acquire側プロセッサと共有しているメモリ空間に対してストア命令を発行したと仮定する(S11)。このストア命令は、プロセッサ1内のストア制御部15を介してプロセッサ・メモリ間ネットワーク2を通り、共有メモリ4を構成するいずれかのバンク3−0、3−1・・・3−Nに送られる。
バンク3内のディレクトリ32は、受信したストア命令のコヒーレンシを調べ(S12)、メモリの一貫性を保持するために、無効化が必要か否かを判断する(S13)。ディレクトリ32は、無効化要求が必要なければ、処理を終了し(S13でN)、無効化要求が必要な場合(S13でY)、無効化要求キュー31へ、無効化要求をキューインする(S14)。キュー構造である無効化要求キュー31の先頭に当該無効化要求が到達すると対象プロセッサに対して、無効化要求を発行する(S15)。無効化要求を受理したプロセッサ1の無効化要求制御部14は、要求に応じてL1キャッシュ12を無効化する。
ただし、この無効化要求は、いつ終了するかは、この状態では保証されていない。すなわち、無効化要求が無効化要求キュー31から発行されるタイミングは保証されていない。無効化要求の完了の保証は、後述のAcquire側プロセッサで実現する。ここまでが、Release側プロセッサのストア命令による無効化動作の流れである。
次に、Acquire側同期化処理の動作を図2、3、及び7を参照して説明する。ここでは、Acquire側プロセッサは、Release命令をLoad命令、および、分岐命令にて、待ち合わせし、同期化を行う場合を説明する(S21、S22)。すなわち、Release命令による書き込みをポーリングする形式となる。しかしながら、この手順に限らず、他の手順を用いて、Release命令を待つ状態を構成することも可能である。
ここでは、Acquire側プロセッサは、Release側プロセッサが発行するRelease命令によって共有メモリ4の任意のバンク3の所定領域に、任意の値が書き込まれることを検出する。より具体的には、Acquire側プロセッサの命令制御部11は、ロード命令を実行して、当該所定領域を読み出し(S21)、読み出した値が任意の値を検出するまで、ロード命令を繰り返す(S22でN)。任意の値を検出した場合Release命令待ち合わせ完了とする(S22でY)。
Acquire側プロセッサは、Release命令による書き込みを確認すると(S22でY)、FENCE制御部13は、Fence命令を発行する。このFence命令により、先に説明した(1)Fence命令より後続のLoad命令が投機的に実行されないこと、(2)Release命令以前のStore命令によるAcquire側プロセッサに対する無効化要求の完了すること、を保証する。ただし、(1)は、一般的に知られた常套手段があることから、以降では本発明の主眼である(2)「無効化要求の完了の保証」について言及する。
Fence命令が発行されると、FENCE制御部13は、当該Fence命令の識別子であるFence命令IDを共有メモリの全バンク3に対して発行する(S24)。このとき、FENCE制御部13は、命令制御部11に後続する命令の実行を停止させる制御(後続命令の実行停止)を行う。Fence命令IDを受理した共有メモリ4の各バンク3は、Fence命令IDを無効化要求キュー31にキューイングする(S25)。各バンク3は、Fence命令IDが無効化要求キュー31の先頭に来ると発行元のプロセッサ1にFence命令IDをリプライする(S26)。FENCE制御部13は、ブロードキャストした全Fence命令IDがリプライされるのを確認する(S27)。すなわち、ブロードキャストしたFence命令IDがすべてリプライされたことを確認することによってFence命令発行以前に発生している無効化要求はすべて完了していること保証できることになる。
全リプライを確認したFENCE制御部13は、命令制御部11に、後続命令の実行許可を通知する。その結果、通常の後続命令が無効化要求も含めたメモリの順序保証がなされた状態で実行される(S28)。
以上説明したように、本実施形態によれば、バンク構成で無効化要求の順序保証がなされない共有メモリアーキテクチャにおいて、Acquire側プロセッサに対する無効化要求の大域可視性を保証することができる。
本発明は、例えば、複数のプロセッサで共有されるメモリ(もしくは、共有キャッシュ)を有し、その共有メモリが複数のバンクから構成され、コヒーレンス制御にディレクトリ方式を採用するコンピュータアーキテクチャに適用することができる。これにより、プロセッサが有するキャッシュの無効化処理の完了を保証することが可能となる。特に、このアーキテクチャに本発明を適用することにより、リリースコンシステンシモデルに基づくメモリの順序保証を実行するAcquire側プロセッサに対する無効化要求の大域可視性を保証する方式を実現することができる。
また、本発明は、複数のプロセッサから構成される共有メモリ型のコンピュータシステムにおいて、各プロセッサが保持するキャッシュ間でのコヒーレンス制御を行い、かつ、そのメモリ順序保証方式にリリースコンシステンシモデルを採用するすべてのコンピュータシステムでの利用が考えられる。
なお、本発明は上記に示す実施形態に限定されるものではない。本発明の範囲において、上記実施形態の各要素を、当業者であれば容易に考えうる内容に変更、追加、変換することが可能である。
リリースコンテンシモデルで動機をとる手順を説明する図である。 本発明の実施形態1に係る情報処理装置の構成例を示すブロック図である。 プロセッサの構成例を示すブロック図である。 無効化要求キューの構成例を示す図である。 無効化要求の処理の概要を示す図である。 Release側プロセッサが共有メモリにデータを書き込む処理の動作例を示すフローチャートである。 Acquire側プロセッサの同期化処理の動作例を示すフローチャートである。
符号の説明
1 プロセッサ
2 プロセッサ・メモリ間ネットワーク
3 バンク
4 共有メモリ
11 命令制御部
12 L1キャッシュ
13 FENCE制御部
14 無効化要求制御部
15 ストア制御部
31 無効化要求キュー
32 ディレクトリ
33 メモリ本体

Claims (6)

  1. 第1のバンクを含む複数のバンクから構成される共有メモリ、第1のプロセッサ及び第2のプロセッサを含む複数のプロセッサ、及び、前記複数のプロセッサと前記共有メモリとを接続するネットワークを有する情報処理装置であって、
    各プロセッサは、
    前記共有メモリが保持するデータの一部の写しを保持するキャッシュと、
    他のプロセッサから前記共有メモリ及び前記キャッシュが保持するデータの一貫性の処理完了保証を要求されたタイミングで、発行元に返信される識別子を、前記ネットワークを介して前記各バンクへ送信し、前記識別子が前記各バンクから返信されることを確認するフェンス制御手段と、を備え、
    各バンクは、
    メモリ本体と、
    前記キャッシュが保持するデータのメモリ本体の領域情報を保持し、前記メモリ本体にデータが書き込まれた領域に応じて、当該書き込まれたデータを保持しているキャッシュを備えるプロセッサに対して、前記キャッシュが保持するデータを無効化する無効化要求を発行するディレクトリ手段と、
    前記無効化要求と前記識別子とをキューイングし、キューイングされた順番に、前記無効化要求と識別子とのいずれかを前記ネットワークを介して該当するプロセッサへ送信するキューイング手段と、を備え
    前記第1のプロセッサは、前記第1のバンクのメモリ本体へデータを書き込むための書き込み命令を発行し、
    前記第1のバンクのディレクトリ手段は、前記書き込み命令の対象のデータが前記第2のプロセッサのキャッシュが保持するデータと共有されていると判定した場合に、前記第2のプロセッサへの無効化要求を発行し、
    前記第1のバンクのキューイング手段は、前記第2のプロセッサへの無効化要求をキューイングし、
    前記第1のプロセッサは、前記第2のプロセッサへ前記データの一貫性の処理完了保証を要求し、
    前記第2のプロセッサの前記フェンス制御手段は、前記第1のプロセッサからの前記データの一貫性の処理完了保証の要求に応じて、前記各バンクのキューイング手段へ前記識別子を送信し、
    前記各バンクのキューイング手段は、前記第2のプロセッサから送信された前記識別子をキューイングし、
    前記第1のバンクのキューイング手段は、前記第2のプロセッサへの無効化要求の送信後に前記識別子を前記第2のプロセッサへ送信し、
    前記第2のプロセッサの前記フェンス制御手段は、前記複数のバンク全てから前記識別子が返信されることを確認する
    ことを特徴とする情報処理装置。
  2. 前記フェンス制御手段は、前記タイミングを、他のプロセッサが発行したリリース命令によって検出し、前記リリース命令を検出した後、前記識別子を前記複数のバンクすべてへブロードキャストすることを特徴とする請求項1記載の情報処理装置。
  3. 前記各プロセッサは、さらに、命令の実行を制御する命令制御手段を備え、
    前記フェンス制御手段は、前記識別子を前記複数のバンクへ送信した後、すべてのバンクから前記識別子が返信されたことを確認するまで、前記後続する命令の実行を停止することを特徴とする請求項2記載の情報処理装置。
  4. 前記情報処理装置は、リリースコンシステンシモデルに基づいて、前記データの一貫性の処理完了を保証することを特徴とする請求項1乃至3のいずれか一項に記載の情報処理装置。
  5. 第1のバンクを含む複数のバンクから構成される共有メモリ、キャッシュを有する第1のプロセッサ及び第2のプロセッサを含む複数のプロセッサ、及び、前記複数のプロセッサと前記共有メモリとを接続するネットワークから構成される情報処理装置が、前記共有メモリと前記キャッシュとのコヒーレンス制御をディレクト方式により実現する順序保証方法であって、
    前記第1のプロセッサは、前記第1のバンクのメモリ本体へデータを書き込むための書き込み命令を発行し、
    前記第1のバンクは、前記書き込み命令の対象のデータが前記第2のプロセッサのキャッシュが保持するデータと共有されていると判定した場合に、前記第2のプロセッサのキャッシュが保持するデータを無効化する無効化要求をキューイングし、
    前記第1のプロセッサは、前記第2のプロセッサへ前記共有メモリ及び前記第2のプロセッサの前記キャッシュが保持するデータの一貫性の処理完了保証を要求し、
    前記第2のプロセッサは、前記第1のプロセッサからの前記データの一貫性の処理完了保証の要求に応じて、前記各バンクへ発行元に返信される識別子を送信し、
    前記各バンクは、前記第2のプロセッサから送信された前記識別子をキューイングし、
    前記第1のバンクは、前記第2のプロセッサへの無効化要求の送信後に前記識別子を前記第2のプロセッサへ送信し、
    前記第2のプロセッサは、前記複数のバンク全てから前記識別子が返信されることを確認する順序保証方法。
  6. 前記各プロセッサは、前記識別子がすべてのバンクから返信されたタイミングで、後続の命令を実行することを特徴とする請求項5記載の順序保証方法。
JP2008208322A 2008-08-13 2008-08-13 情報処理装置及び順序保証方式 Active JP4631948B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008208322A JP4631948B2 (ja) 2008-08-13 2008-08-13 情報処理装置及び順序保証方式
US12/536,081 US8468307B2 (en) 2008-08-13 2009-08-05 Information processing apparatus and order guarantee method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008208322A JP4631948B2 (ja) 2008-08-13 2008-08-13 情報処理装置及び順序保証方式

Publications (2)

Publication Number Publication Date
JP2010044599A JP2010044599A (ja) 2010-02-25
JP4631948B2 true JP4631948B2 (ja) 2011-02-16

Family

ID=41682061

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008208322A Active JP4631948B2 (ja) 2008-08-13 2008-08-13 情報処理装置及び順序保証方式

Country Status (2)

Country Link
US (1) US8468307B2 (ja)
JP (1) JP4631948B2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8352687B2 (en) * 2010-06-23 2013-01-08 International Business Machines Corporation Performance optimization and dynamic resource reservation for guaranteed coherency updates in a multi-level cache hierarchy
CN104321750B (zh) * 2012-04-25 2019-03-08 英特尔公司 在共享存储器编程中保持释放一致性的方法和系统
US9218289B2 (en) * 2012-08-06 2015-12-22 Qualcomm Incorporated Multi-core compute cache coherency with a release consistency memory ordering model
JP5811245B1 (ja) * 2014-07-24 2015-11-11 日本電気株式会社 情報処理装置、メモリ順序保障方法、及び、プログラム
US10534540B2 (en) * 2016-06-06 2020-01-14 Micron Technology, Inc. Memory protocol
US10474461B2 (en) * 2016-09-22 2019-11-12 Qualcomm Incorporated Instruction-based synchronization of operations including at least one SIMD scatter operation
JP6319473B1 (ja) * 2017-02-07 2018-05-09 日本電気株式会社 情報処理装置
JP6249117B1 (ja) * 2017-02-27 2017-12-20 日本電気株式会社 情報処理装置
JP6984148B2 (ja) * 2017-03-22 2021-12-17 日本電気株式会社 計算機システム及びキャッシュ・コヒーレンス方法
US10395623B2 (en) * 2017-04-01 2019-08-27 Intel Corporation Handling surface level coherency without reliance on fencing
US10120732B1 (en) * 2017-04-27 2018-11-06 Friday Harbor Llc Exclusion monitors
US10133512B1 (en) * 2017-04-27 2018-11-20 Friday Harbor Llc Inclusion monitors

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62288949A (ja) * 1986-06-09 1987-12-15 Fujitsu Ltd シリアライズ命令制御装置
JPH10198644A (ja) * 1997-01-13 1998-07-31 Hitachi Ltd 同期制御方法およびマルチプロセッサシステム
JPH1196124A (ja) * 1997-09-16 1999-04-09 Hitachi Ltd 並列プロセッサシステム
JP2000194680A (ja) * 1998-12-28 2000-07-14 Hitachi Ltd マルチプロセッサシステム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6745298B2 (en) * 1999-06-16 2004-06-01 Intel Corporation Internal processor buffering for implicit writebacks
JP2002007371A (ja) 2000-06-23 2002-01-11 Hitachi Ltd L1キャッシュフォールスシェア緩和制御方式
US7366847B2 (en) * 2006-02-06 2008-04-29 Azul Systems, Inc. Distributed cache coherence at scalable requestor filter pipes that accumulate invalidation acknowledgements from other requestor filter pipes using ordering messages from central snoop tag

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62288949A (ja) * 1986-06-09 1987-12-15 Fujitsu Ltd シリアライズ命令制御装置
JPH10198644A (ja) * 1997-01-13 1998-07-31 Hitachi Ltd 同期制御方法およびマルチプロセッサシステム
JPH1196124A (ja) * 1997-09-16 1999-04-09 Hitachi Ltd 並列プロセッサシステム
JP2000194680A (ja) * 1998-12-28 2000-07-14 Hitachi Ltd マルチプロセッサシステム

Also Published As

Publication number Publication date
JP2010044599A (ja) 2010-02-25
US8468307B2 (en) 2013-06-18
US20100042771A1 (en) 2010-02-18

Similar Documents

Publication Publication Date Title
JP4631948B2 (ja) 情報処理装置及び順序保証方式
TWI250411B (en) Method, apparatus and system for memory access
KR100567099B1 (ko) L2 디렉토리를 이용한 멀티프로세서 시스템의 가-저장촉진 방법 및 장치
KR100641988B1 (ko) 비대칭형 단일 칩 이종 멀티프로세서 컴퓨터 시스템, 공유 메모리의 직접 메모리 액세스를 아토믹 업데이트하는 방법, 및 아토믹 업데이트 장치
US6801986B2 (en) Livelock prevention by delaying surrender of ownership upon intervening ownership request during load locked / store conditional atomic memory operation
JP2020009492A5 (ja)
EP3441886A1 (en) Method and processor for processing data
CN102541465B (zh) 利用回写排序的连贯性控制电路及设备
US6871267B2 (en) Method for increasing efficiency in a multi-processor system and multi-processor system with increased efficiency
US7533223B1 (en) System and method for handling memory requests in a multiprocessor shared memory system
KR20200095496A (ko) 기록 연산의 처리 장치 및 방법
JP5811245B1 (ja) 情報処理装置、メモリ順序保障方法、及び、プログラム
US7912998B2 (en) DMA access systems and methods
JP5213485B2 (ja) マルチプロセッサシステムにおけるデータ同期方法及びマルチプロセッサシステム
JP3550092B2 (ja) キャッシュ装置及び制御方法
JP2011008674A (ja) 二重化情報処理システム及び同期化方法
EP1662401A2 (en) Memory control device and memory control method
US10775870B2 (en) System and method for maintaining cache coherency
JP6319473B1 (ja) 情報処理装置
JP5168800B2 (ja) マルチプロセッサシステム
US8108618B2 (en) Method and apparatus for maintaining memory data integrity in an information handling system using cache coherency protocols
US9009412B2 (en) Information processing apparatus and control method of information processing apparatus
JPH10198644A (ja) 同期制御方法およびマルチプロセッサシステム
JP5630825B2 (ja) マルチプロセッサシステム、リクエスト処理方法、及びノード
KR20160086746A (ko) 인터커넥트 및 인터커넥트의 작동방법

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100816

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100831

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100924

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4631948

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20131126

Year of fee payment: 3