(57)【要約】【課題】動的なスレッドスケジューリング環境においてキャッシュメモリのデータの一貫性を効率良く維持する。【解決手段】タグ記憶部は、キャッシュメモリのキャッシュライン毎にそのキャッシュラインが有効であるか否かおよび共有記憶部に対して書戻しの指示がされているか否かを管理する。タグ制御部は、所定の指示がされた際に既に書戻しの指示がされているキャッシュラインについては無効化せず、書戻しの指示がされていないキャッシュラインについては無効化を行う。【選択図】図１
2014178804.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリのキャッシュライン毎にそのキャッシュラインが有効であるか否かおよび共有記憶部に対して書戻しの指示がされているか否かを管理するタグ記憶部と、
所定の指示がされた際に既に前記書戻しの指示がされているキャッシュラインについては無効化せず、前記書戻しの指示がされていないキャッシュラインについては無効化を行うタグ制御部と
を具備するキャッシュ制御装置。
【請求項２】
前記タグ制御部は、前記書戻しの指示がされた際にその旨を前記タグ記憶部に記憶させ、前記所定の指示がされた際に既に前記書戻しの指示がされているキャッシュラインについては前記書戻しの指示がされていない旨を前記タグ記憶部に記憶させる請求項１記載のキャッシュ制御装置。
【請求項３】
前記所定の指示は、前記書戻しの指示がされていないキャッシュラインを無効化する旨の指示である請求項１記載のキャッシュ制御装置。
【請求項４】
前記所定の指示は、新たにスレッドの処理が実行される前に指示される請求項１記載のキャッシュ制御装置。
【請求項５】
前記書戻しの指示は、スレッドの処理が実行された後に指示される請求項１記載のキャッシュ制御装置。
【請求項６】
前記タグ記憶部は、キャッシュライン毎に、
そのキャッシュラインが有効であるか無効であるかを示す有効性フラグと、
そのキャッシュラインに対応するデータを前記共有記憶部に書戻す旨の指示がされているか否かを示す書戻しフラグと
を記憶する
請求項１記載のキャッシュ制御装置。
【請求項７】
命令処理部と、
キャッシュメモリのキャッシュライン毎にそのキャッシュラインが有効であるか否かおよび共有記憶部に対して書戻しの指示がされているか否かを管理するタグ記憶部と、
前記命令処理部から所定の指示がされた際に既に前記書戻しの指示がされているキャッシュラインについては無効化せず、前記書戻しの指示がされていないキャッシュラインについては無効化を行うタグ制御部と
を具備するプロセッサ。
【請求項８】
共有記憶部と、
命令処理部と、
キャッシュメモリのキャッシュライン毎にそのキャッシュラインが有効であるか否かおよび前記共有記憶部に対して書戻しの指示がされているか否かを管理するタグ記憶部と、
前記命令処理部から所定の指示がされた際に既に前記書戻しの指示がされているキャッシュラインについては無効化せず、前記書戻しの指示がされていないキャッシュラインについては無効化を行うタグ制御部と
を具備する情報処理システム。
【請求項９】
キャッシュメモリから共有記憶部に対して書戻しの指示がされていないキャッシュラインを無効化する旨の無効化指示を受ける無効化受付手順と、
前記無効化指示を受けた際に既に前記書戻しの指示がされているキャッシュラインについては無効化せず、前記書戻しの指示がされていないキャッシュラインについては無効化を行う無効化手順と
を具備するキャッシュ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、キャッシュ制御装置に関する。詳しくは、共有記憶部のデータを保持するローカルキャッシュメモリのキャッシュ制御装置、それを含むプロセッサ、情報処理システム、および、これらにおける処理方法ならびに当該方法をコンピュータに実行させるプログラムに関する。
【背景技術】
【０００２】
それぞれがローカルキャッシュを備える複数のプロセッサが存在し、それらが共通の共有メモリにアクセスする構成のシステムでは、プロセッサ間でデータを共有しつつ、システム全体でデータの一貫性を保つ必要がある。そのため、各プロセッサが自身のローカルキャッシュ上のデータに対して適切に書戻し処理および無効化処理を行わなければならない。すなわち、共有データを更新するプロセッサは、その更新後の情報を共有メモリに書き戻す必要がある。一方、共有データを参照するプロセッサは、共有メモリ上に存在する更新後のデータを参照するために、自身のローカルキャッシュ上に残っている更新前のデータを無効化する必要がある。その際、全てのキャッシュラインを無効化して、処理終了後に全てのキャッシュラインを共有メモリに書き戻すことにすると、スレッド間でローカルキャッシュを有効に活用できず、また、不要なキャッシュラインを書き戻すという無駄な処理が生じてしまう。
【０００３】
これに対し、従来、ローカルキャッシュ中の各キャッシュラインに、共有データであるか否かを示すフラグを保持しておいて、そのフラグがセットされているラインのみ無効化するシステムが提案されている（例えば、特許文献１参照。）。また、無効化するアドレスの範囲をあらかじめ設定しておいて、その範囲に含まれるデータを保持するキャッシュラインのみを無効化するシステムが提案されている（例えば、特許文献２参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平２−１００７４１号公報
【特許文献２】特開２００９−２８２９２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述の従来技術では、無効化されるキャッシュラインが限定されるため、ローカルキャッシュの有効利用に資する可能性がある。しかしながら、共有データを示すフラグを利用した場合、マルチスレッドプログラミングにおいて動的にスレッドスケジューリングがなされた際、本来必要な共有データまで無効化してしまうおそれがある。また、無効化するアドレスの範囲を設定する場合、無効化しようとするアドレスが連続していなければならず、柔軟性に欠けるという問題がある。
【０００６】
本技術はこのような状況に鑑みて生み出されたものであり、動的なスレッドスケジューリング環境においてキャッシュメモリのデータの一貫性を効率良く維持することを目的とする。
【課題を解決するための手段】
【０００７】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、キャッシュメモリのキャッシュライン毎にそのキャッシュラインが有効であるか否かおよび共有記憶部に対して書戻しの指示がされているか否かを管理するタグ記憶部と、所定の指示がされた際に既に上記書戻しの指示がされているキャッシュラインについては無効化せず、上記書戻しの指示がされていないキャッシュラインについては無効化を行うタグ制御部とを具備するキャッシュ制御装置およびその制御方法である。これにより、本来必要な共有データまで無効化しないように制御するという作用をもたらす。
【０００８】
また、この第１の側面において、上記タグ制御部は、上記書戻しの指示がされた際にその旨を上記タグ記憶部に記憶させ、上記所定の指示がされた際に既に上記書戻しの指示がされているキャッシュラインについては上記書戻しの指示がされていない旨を上記タグ記憶部に記憶させるようにしてもよい。これにより、タグ記憶部において書戻しの指示の有無が管理される。
【０００９】
また、この第１の側面において、上記所定の指示は、上記書戻しの指示がされていないキャッシュラインを無効化する旨の指示を想定することができる。これにより、無効化の際に、本来必要な共有データまで無効化しないように制御する。
【００１０】
また、この第１の側面において、上記所定の指示は新たにスレッドの処理が実行される前に指示され、上記書戻しの指示はスレッドの処理が実行された後に指示されるようにすることができる。
【００１１】
また、この第１の側面において、上記タグ記憶部は、キャッシュライン毎に、そのキャッシュラインが有効であるか無効であるかを示す有効性フラグと、そのキャッシュラインに対応するデータを上記共有記憶部に書戻す旨の指示がされているか否かを示す書戻しフラグとを記憶するようにしてもよい。
【００１２】
また、本技術の第２の側面は、命令処理部と、キャッシュメモリのキャッシュライン毎にそのキャッシュラインが有効であるか否かおよび共有記憶部に対して書戻しの指示がされているか否かを管理するタグ記憶部と、上記命令処理部から所定の指示がされた際に既に上記書戻しの指示がされているキャッシュラインについては無効化せず、上記書戻しの指示がされていないキャッシュラインについては無効化を行うタグ制御部とを具備するプロセッサである。これにより、命令処理部から所定の指示がされた際に、本来必要な共有データまで無効化しないように制御するという作用をもたらす。
【００１３】
また、本技術の第３の側面は、共有記憶部と、命令処理部と、キャッシュメモリのキャッシュライン毎にそのキャッシュラインが有効であるか否かおよび上記共有記憶部に対して書戻しの指示がされているか否かを管理するタグ記憶部と、上記命令処理部から所定の指示がされた際に既に上記書戻しの指示がされているキャッシュラインについては無効化せず、上記書戻しの指示がされていないキャッシュラインについては無効化を行うタグ制御部とを具備する情報処理システムである。これにより、命令処理部から所定の指示がされた際に、共有記憶部に対して書戻しの指示がされた共有データまで無効化しないように制御するという作用をもたらす。
【発明の効果】
【００１４】
本技術によれば、動的なスレッドスケジューリング環境においてキャッシュメモリのデータの一貫性を効率良く維持することができるという優れた効果を奏し得る。
【図面の簡単な説明】
【００１５】
【図１】本技術の実施の形態における情報処理システムの全体構成例を示す図である。
【図２】本技術の実施の形態におけるローカルキャッシュ１２０の構成例を示す図である。
【図３】本技術の実施の形態におけるタグ記憶部１３０の構成例を示す図である。
【図４】本技術の実施の形態におけるタグ制御部１４０の機能構成例を示す図である。
【図５】本技術の実施の形態において命令処理部１１０から書戻しが指示された際のタグ記憶部１３０の遷移例を示す図である。
【図６】本技術の実施の形態において命令処理部１１０から条件付き無効化指示がされた際の処理手順例を示す流れ図である。
【図７】本技術の実施の形態において命令処理部１１０から条件付き無効化指示された際のタグ記憶部１３０の遷移例を示す図である。
【図８】本技術の実施の形態におけるスレッド処理の処理手順例を示す流れ図である。
【図９】マルチスレッドプログラミングにおけるスレッド間の関係例を示す図である。
【図１０】図９のマルチスレッドプログラミング例におけるキャッシュラインの遷移を示す図である。
【発明を実施するための形態】
【００１６】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．実施の形態（ローカルキャッシュメモリのタグ制御）
２．適用例（マルチスレッドプログラミングへの適用例）
【００１７】
＜１．実施の形態＞
［情報処理システムの構成］
図１は、本技術の実施の形態における情報処理システムの全体構成例を示す図である。この情報処理システムは、複数のプロセッサ１００が共有メモリ２００に接続された構成を有している。各々のプロセッサ１００は、命令処理部１１０に加えて、ローカルキャッシュ１２０を備えている。
【００１８】
命令処理部１１０は、プログラムに含まれる各種命令を実行するものである。命令実行に必要なデータは共有メモリ２００に記憶されており、命令処理部１１０はリード命令（ロード命令）によって共有メモリ２００からデータを読み出す。その際、対象となるデータを含むキャッシュラインがローカルキャッシュ１２０に保持されている場合には、ローカルキャッシュ１２０からそのデータを得ることにより読出し時間の短縮を図る。
【００１９】
ローカルキャッシュ１２０は、共有メモリ２００に記憶されるデータを保持するキャッシュメモリである。この実施の形態における情報処理システムでは、プロセッサ毎にローカルキャッシュ１２０を備えているため、相互に一貫性を維持しながら処理を進める必要がある。そのための制御の詳細については後述する。
【００２０】
共有メモリ２００は、複数のプロセッサ１００に共有されるメモリである。ここでは記憶階層として共有メモリとローカルキャッシュの２階層を想定して説明するが、さらに共有キャッシュを設けて、ローカルキャッシュを２次キャッシュとして扱うなどの種々の変形を施してもよい。なお、共有メモリ２００は、特許請求の範囲に記載の共有記憶部の一例である。
【００２１】
［ローカルキャッシュの構成］
図２は、本技術の実施の形態におけるローカルキャッシュ１２０の構成例を示す図である。ローカルキャッシュ１２０の各々は、タグ記憶部１３０と、タグ制御部１４０と、データ記憶部１５０と、データ制御部１６０とを備えている。命令処理部１１０は信号線１１８によってタグ制御部１４０と接続され、信号線１１９によってデータ制御部１６０と接続される。また、共有メモリ２００は信号線１２８によってタグ制御部１４０と接続され、信号線１２９によってデータ制御部１６０と接続される。
【００２２】
データ記憶部１５０は、共有メモリ２００の一部に対応するデータをキャッシュライン毎に記憶するメモリである。タグ記憶部１３０は、各キャッシュラインに対応するタグアドレスおよびキャッシュラインの管理に必要な管理情報を記憶するメモリである。以下ではダイレクトマッピング方式を想定して説明するが、セットアソシアティブ方式を採用しても構わない。
【００２３】
タグ制御部１４０は、命令処理部１１０からの指示に従って、タグ記憶部１３０に記憶されるタグアドレスおよび管理情報を参照および更新するものである。データ制御部１６０は、データ記憶部１５０に記憶されるキャッシュラインを管理するものである。
【００２４】
命令処理部１１０からリード命令が発行された場合、タグ制御部１４０はタグアドレスおよび管理情報から該当するデータがデータ記憶部１５０に保持されているか否かを判定する。データ記憶部１５０に保持されている場合には、キャッシュにヒットしたことをデータ制御部１６０に通知する。一方、データ記憶部１５０に保持されていない場合には、キャッシュにミスヒットしたことをデータ制御部１６０に通知する。
【００２５】
タグ制御部１４０からキャッシュヒットが通知された場合には、データ制御部１６０は、データ記憶部１５０から該当するキャッシュラインを読み出して命令処理部１１０に返送する。一方、タグ制御部１４０からキャッシュミスヒットが通知された場合には、データ制御部１６０は、該当するキャッシュラインを共有メモリ２００から読み出して命令処理部１１０に返送するとともに、新たなキャッシュラインとしてアロケートする。
【００２６】
命令処理部１１０からライト命令が発行された場合、タグ制御部１４０はタグアドレスおよび管理情報から該当するデータがデータ記憶部１５０に保持されているか否かを判定する。データ記憶部１５０に保持されている場合には、そのキャッシュラインを書き換えて、その旨を管理情報に記録する。この実施の形態では、書き換えが生じたキャッシュラインをすぐには共有メモリに書き戻さない方式（コピーバック方式）を想定して説明するが、速やかに書き戻す方式（ライトスルー方式）に適用することも可能である。なお、ライト命令が発行された際に該当するデータがデータ記憶部１５０に保持されていない場合には、データ記憶部１５０に新たにキャッシュラインを確保してライトデータを記憶させる。
【００２７】
命令処理部１１０は、ローカルキャッシュ１２０に対し、データのリードおよびライトの要求の他に、キャッシュの状態を変更させるための明示的なキャッシュ操作指示を発行する。この明示的なキャッシュ操作指示としては、キャッシュ上のデータをメモリに書戻し（ライトバック）を行わせる書戻し指示や、キャッシュ上のデータを無効化する無効化指示などが一般に知られている。この実施の形態では、この明示的なキャッシュ操作指示として、書戻しの指示がされていないキャッシュラインを無効化する条件付き無効化指示を新たに導入する。
【００２８】
図３は、本技術の実施の形態におけるタグ記憶部１３０の構成例を示す図である。このタグ記憶部１３０は、データ記憶部１５０の各キャッシュラインに対応するタグアドレスおよびキャッシュラインの管理に必要な管理情報を記憶する。具体的には、管理情報として、バリッドフラグ（Ｖ：Valid）１３１、ダーティフラグ（Ｄ：Dirty）１３２と、書戻しフラグ（ＷＢ：Write Back）１３３とを記憶する。また、タグアドレスをタグ１３４に記憶する。
【００２９】
バリッドフラグ１３１は、対応するキャッシュラインの有効性を示すフラグである。以下では一例として、有効な場合に「１」を、無効な場合に「０」を示すものとする。キャッシュラインを無効化する際には、このバリッドフラグ１３１が「０」にリセットされる。なお、バリッドフラグ１３１は、特許請求の範囲に記載の有効性フラグの一例である。
【００３０】
ダーティフラグ１３２は、対応するキャッシュラインが共有メモリ２００の内容と一致しているか否かを示すフラグである。以下では一例として、一致している場合に「０」、一致していない場合に「１」を示すものとする。ローカルキャッシュ１２０に保持されているデータを修正（更新）した場合には、共有メモリ２００に書戻すまではダーティフラグ１３２が「１」を示すことになる。
【００３１】
書戻しフラグ１３３は、対応するキャッシュラインについて共有メモリ２００への書戻しが指示されたか否かを示すフラグである。以下では一例として、指示されている場合に「１」、指示されていない場合に「０」を示すものとする。この場合、書戻しフラグ１３３は、命令処理部１１０から書戻しが指示されると「１」にアサートされ、その後、命令処理部１１０から条件付き無効化指示がされると「０」にリセットされる。また、キャッシュミスが発生した結果、新しくデータがキャッシュ上にアロケートされた場合は、該当するキャッシュラインの書戻しフラグ１３３はリセット状態となる。
【００３２】
タグ１３４は、対応するキャッシュラインの共有メモリ２００におけるアドレスの一部をタグアドレスとして記憶する。
【００３３】
［ローカルキャッシュの動作］
図４は、本技術の実施の形態におけるタグ制御部１４０の機能構成例を示す図である。ここでは、タグ制御部１４０の機能として、書戻し処理部１４１と、無効化処理部１４２とを備えている。
【００３４】
書戻し処理部１４１は、命令処理部１１０から書戻しが指示された際の処理を行うものである。共有メモリ２００に対するデータの書戻しはデータ制御部１６０を介して行われる。その際に、書戻し処理部１４１は書戻しフラグ１３３をアサートする。
【００３５】
無効化処理部１４２は、命令処理部１１０から条件付き無効化指示がされた際の処理を行うものである。無効化処理部１４２は、条件付き無効化指示がされた際、書戻しフラグ１３３が「１」を示す場合には無効化せず、書戻しフラグ１３３が「０」を示す場合にのみ無効化をする。これは、書戻しの指示があったからには、他のプロセッサへのデータの受け渡しの意図が推認されるため、それを利用して無効化を制御するものである。したがって、無効化処理部１４２は、書戻しフラグ１３３が「０」を示す場合にはバリッドフラグ１３１を「０」にリセットし、書戻しフラグ１３３が「１」を示す場合にはバリッドフラグ１３１を変更することなく書戻しフラグ１３３を「０」にリセットする。
【００３６】
図５は、本技術の実施の形態において命令処理部１１０から書戻しが指示された際のタグ記憶部１３０の遷移例を示す図である。この図において、「＊」は「０」または「１」の何れであっても構わないことを意味する。
【００３７】
バリッドフラグ１３１が「１」を示すキャッシュラインについて書戻しが行われると書戻しフラグ１３３が「１」にアサートされる。また、書戻しによって共有メモリ２００の内容と一致することになるため、ダーティフラグ１３２は「０」にリセットされる。
【００３８】
図６は、本技術の実施の形態において命令処理部１１０から条件付き無効化指示がされた際の処理手順例を示す流れ図である。
【００３９】
まず、命令処理部１１０からの条件付き無効化指示が受け付けられると（ステップＳＳ９１１：Ｙｅｓ）、バリッドフラグ１３１がチェックされる（ステップＳ９１２）。バリッドフラグ１３１が「０」を示す場合には（ステップＳＳ９１２：Ｙｅｓ）、何もせず処理を終了する（ステップＳ９１３）。このとき、バリッドフラグ１３１は「０」を示しており、書戻しフラグ１３３は「０」または「１」の何れかである。
【００４０】
バリッドフラグ１３１が「１」を示す場合には（ステップＳＳ９１２：Ｎｏ）、書戻しフラグ１３３がチェックされる（ステップＳ９１４）。書戻しフラグ１３３が「０」を示す場合には（ステップＳＳ９１４：Ｙｅｓ）、バリッドフラグ１３１が「０」にリセットされ、これによりそのキャッシュラインは無効化される（ステップＳ９１５）。書戻しフラグ１３３が「１」を示す場合には（ステップＳＳ９１４：Ｎｏ）、バリッドフラグ１３１はそのまま「１」を維持し、書戻しフラグ１３３が「０」にリセットされる（ステップＳ９１６）。
【００４１】
図７は、本技術の実施の形態において命令処理部１１０から条件付き無効化指示された際のタグ記憶部１３０の遷移例を示す図である。この図において、「＊」は「０」または「１」の何れであっても構わないことを意味する。
【００４２】
バリッドフラグ１３１が「１」を示すキャッシュラインについて条件付き無効化指示がされると、書戻しフラグ１３３が「０」を示す場合には無効化が行われるが、書戻しフラグ１３３が「１」を示す場合には無効化が行われない。また、無効化が行われない場合であっても、ダーティフラグ１３２には変化がない。
【００４３】
＜２．適用例＞
本技術の実施の形態をマルチスレッドプログラミングに適用した例について以下に説明する。
【００４４】
［スレッドにおける処理］
図８は、本技術の実施の形態におけるスレッド処理の処理手順例を示す流れ図である。スレッド処理の本体はデータの参照および更新であるが（ステップＳ９０２）、その前処理として、キャッシュラインを無効化する（ステップＳ９０１）。このときの無効化としては、上述の条件付き無効化指示による無効化処理が行われる。また、データの参照および更新が終了した後には、後処理としてキャッシュラインの書戻しを行う（ステップＳ９０３）。
【００４５】
スレッド処理の最後に書戻しが指示された場合には（ステップＳ９０３）、他の新たなスレッド処理のためにデータの受け渡しが必要であるという意図が推認されるため、その新たなスレッドにおいては、そのデータを積極的に利用する。そのため、書戻しフラグ１３３が「１」である場合には、そのキャッシュラインを無効化せずにそのまま利用する（ステップＳ９０１）。これにより、本来必要な共有データまで無効化しないように制御することができる。
【００４６】
［具体例］
図９は、マルチスレッドプログラミングにおけるスレッド間の関係例を示す図である。ここでは、４つのスレッドＡ、Ｂ、Ｃ、Ｄを想定している。スレッドＡではデータＸおよびＹが新たに定義される。スレッドＢではデータＸが参照され、データＸ'に更新される。スレッドＣではデータＹが参照され、データＹ'に更新される。また、スレッドＤでは
データＸ'およびＹ'が参照される。
【００４７】
スレッドとプロセッサの割当ては以下のとおりである。スレッドＡおよびＢはプロセッサ＃ｉまたは＃ｊの何れで実行されてもよい。スレッドＣはスレッドＢが実行されなかったプロセッサで実行される。スレッドＤは、スレッドＢおよびＣのうち実行完了が遅かった方のスレッドが実行されていたプロセッサで実行される。この例では、スレッドＡ、Ｂ、Ｄがプロセッサ＃ｉで実行され、スレッドＣがプロセッサ＃ｊで実行された場合を想定している。
【００４８】
スレッドＡにおける処理は以下の手順で実行される。
Ａ−１：全キャッシュエントリに対し、書戻しフラグ１３３を考慮したキャッシュラインの条件付き無効化を行う。ここでは、全てのキャッシュラインは無効化される。
Ａ−２：データＸおよびデータＹを定義、参照する。データＸおよびデータＹを含むキャッシュラインはダーティである可能性がある。
Ａ−３：データＸおよびデータＹを含むキャッシュラインを共有メモリ２００に書き戻す。データＸおよびデータＹを含むキャッシュラインがダーティである可能性はない。データＸおよびデータＹを含むキャッシュラインが有効だった場合は、書戻しフラグ１３３が「１」にアサートされる。
【００４９】
スレッドＢにおける処理は以下の手順で実行される。
Ｂ−１：全キャッシュエントリに対し、書戻しフラグ１３３を考慮したキャッシュラインの条件付き無効化を行う。データＸおよびデータＹを含むキャッシュラインが有効だった場合は、無効化されずに、書戻しフラグ１３３が「０」にリセットされる。一方、それ以外のキャッシュラインは書戻しフラグ１３３が「０」となっているため、無効化される。
Ｂ−２：スレッドＡで定義されたデータＸを参照し、その後、データＸ'に更新する。データＸ'を含むキャッシュラインはダーティである可能性がある。
Ｂ−３：データＸ'を含むキャッシュラインを共有メモリ２００に書き戻す。データＸ'を含むキャッシュラインはダーティである可能性がない。データＸ'を含むキャッシュラインが有効だった場合は、書戻しフラグ１３３が「１」にアサートされる。
【００５０】
スレッドＣにおける処理は以下の手順で実行される。
Ｃ−１：全キャッシュエントリに対し、書戻しフラグ１３３を考慮したキャッシュラインの条件付き無効化を行う。全てのキャッシュラインは無効化される。
Ｃ−２：スレッドＡで定義されたデータＹを参照し、その後、データＹ'に更新する。データＹ'を含むキャッシュラインはダーティである可能性がある。
Ｃ−３：データＹ'を含むキャッシュラインを共有メモリ２００に書き戻す。データＹ'を含むキャッシュラインはダーティである可能性がない。データＹ'を含むキャッシュラインが有効だった場合は、書戻しフラグ１３３が「１」にアサートされる。
【００５１】
スレッドＤにおける処理は以下の手順で実行される。
Ｄ−１：全キャッシュエントリに対し、書戻しフラグ１３３を考慮したキャッシュラインの条件付き無効化を行う。データＸ'を含むキャッシュラインが有効だった場合は、書戻しフラグ１３３が「０」にリセットされる。一方、それ以外のキャッシュラインは書戻しフラグ１３３が「０」となっているため、無効化される。
Ｄ−２：スレッドＢおよびスレッドＣで定義されたデータＸ'およびデータＹ'を参照する。データＸ'およびデータＹ'を含むキャッシュラインはダーティである可能性がない。
Ｄ−３：データＸ'およびデータＹ'を含むキャッシュラインを共有メモリに書き戻す。データＸ'およびデータＹ'を含むキャッシュラインはダーティである可能性がない。データＸ'およびデータＹ'を含むキャッシュラインが有効だった場合は、書戻しフラグ１３３が「１」にアサートされる。
【００５２】
ここで、Ｄ−２において、データＸ'はローカルキャッシュ１２０上に有効データが存在している可能性があるため、ローカルキャッシュ１２０上のデータを活用することによる、システムの処理性能向上が期待できる。また、データＹ'については、更新前のデータＹがキャッシュ上に存在しないことが保証できるため、確実に共有メモリ２００から読み出しを行うことで、正しいデータにアクセスすることができる。
【００５３】
このように、共有データでないデータについては、スレッドの各処理の先頭で無効化されるため、不必要な書戻しを抑制することができる。
【００５４】
図１０は、図９のマルチスレッドプログラミング例におけるキャッシュラインの遷移を示す図である。
【００５５】
図１０におけるａでは、スレッドＡの開始時点で、プロセッサ＃ｉのキャッシュラインは全て無効化された状態となっている。図１０におけるｂは、スレッドＡの処理において、データＸ、データＹおよびデータＺが定義された状態を示している。図１０におけるｃは、スレッドＡの終了時点で、データＸおよびデータＹについて書戻しが指示された状態を示している。
【００５６】
図１０におけるｄでは、スレッドＢの開始時点で、プロセッサ＃ｉのキャッシュラインのうち、データＺが無効化され、データＸおよびデータＹについては無効化されないことを示している。図１０におけるｅでは、スレッドＢの処理において、データＸがデータＸ'に更新された状態を示している。図１０におけるｆは、スレッドＢの終了時点で、データＸ'について書戻しが指示された状態を示している。
【００５７】
図１０におけるｇでは、スレッドＣの開始時点で、プロセッサ＃ｊのキャッシュラインは全て無効化された状態となっている。図１０におけるｈでは、スレッドＣの処理において、データＹが参照されていた状態を示している。図１０におけるｉでは、スレッドＣの処理において、データＹがデータＹ'に更新された状態を示している。図１０におけるｊは、スレッドＣの終了時点で、データＹ'について書戻しが指示された状態を示している。
【００５８】
図１０におけるｋでは、スレッドＤの開始時点で、プロセッサ＃ｉのキャッシュラインのうち、データＹが無効化され、データＸ'については無効化されないことを示している。図１０におけるｌでは、スレッドＤの処理において、データＹ'が参照された状態を示している。このデータＹ'は、プロセッサ＃ｊから共有メモリ２００に書き戻されたものをプロセッサ＃ｉにアロケートしたものである。図１０におけるｍは、スレッドＤの終了時点で、データＸ'およびデータＹ'について書戻しが指示された状態を示している。
【００５９】
このように、本技術の実施の形態によれば、動的なスレッドスケジューリング環境においてキャッシュメモリのデータの一貫性を維持する際、本来必要な共有データまで無効化しないように制御することができる。
【００６０】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【００６１】
なお、本技術は以下のような構成もとることができる。
（１）キャッシュメモリのキャッシュライン毎にそのキャッシュラインが有効であるか否かおよび共有記憶部に対して書戻しの指示がされているか否かを管理するタグ記憶部と、
所定の指示がされた際に既に前記書戻しの指示がされているキャッシュラインについては無効化せず、前記書戻しの指示がされていないキャッシュラインについては無効化を行うタグ制御部と
を具備するキャッシュ制御装置。
（２）前記タグ制御部は、前記書戻しの指示がされた際にその旨を前記タグ記憶部に記憶させ、前記所定の指示がされた際に既に前記書戻しの指示がされているキャッシュラインについては前記書戻しの指示がされていない旨を前記タグ記憶部に記憶させる前記（１）に記載のキャッシュ制御装置。
（３）前記所定の指示は、前記書戻しの指示がされていないキャッシュラインを無効化する旨の指示である前記（１）または（２）に記載のキャッシュ制御装置。
（４）前記所定の指示は、新たにスレッドの処理が実行される前に指示される前記（１）から（３）のいずれかに記載のキャッシュ制御装置。
（５）前記書戻しの指示は、スレッドの処理が実行された後に指示される前記（１）から（４）のいずれかに記載のキャッシュ制御装置。
（６）前記タグ記憶部は、キャッシュライン毎に、
そのキャッシュラインが有効であるか無効であるかを示す有効性フラグと、
そのキャッシュラインに対応するデータを前記共有記憶部に書戻す旨の指示がされているか否かを示す書戻しフラグと
を記憶する
前記（１）から（５）のいずれかに記載のキャッシュ制御装置。
（７）命令処理部と、
キャッシュメモリのキャッシュライン毎にそのキャッシュラインが有効であるか否かおよび共有記憶部に対して書戻しの指示がされているか否かを管理するタグ記憶部と、
前記命令処理部から所定の指示がされた際に既に前記書戻しの指示がされているキャッシュラインについては無効化せず、前記書戻しの指示がされていないキャッシュラインについては無効化を行うタグ制御部と
を具備するプロセッサ。
（８）共有記憶部と、
命令処理部と、
キャッシュメモリのキャッシュライン毎にそのキャッシュラインが有効であるか否かおよび前記共有記憶部に対して書戻しの指示がされているか否かを管理するタグ記憶部と、
前記命令処理部から所定の指示がされた際に既に前記書戻しの指示がされているキャッシュラインについては無効化せず、前記書戻しの指示がされていないキャッシュラインについては無効化を行うタグ制御部と
を具備する情報処理システム。
（９）キャッシュメモリから共有記憶部に対して書戻しの指示がされていないキャッシュラインを無効化する旨の無効化指示を受ける無効化受付手順と、
前記無効化指示を受けた際に既に前記書戻しの指示がされているキャッシュラインについては無効化せず、前記書戻しの指示がされていないキャッシュラインについては無効化を行う無効化手順と
を具備するキャッシュ制御方法。
【符号の説明】
【００６２】
１００  プロセッサ
１１０  命令処理部
１２０  ローカルキャッシュ
１３０  タグ記憶部
１３１  バリッドフラグ（Ｖ）
１３２  ダーティフラグ（Ｄ）
１３３  書戻しフラグ（ＷＢ）
１３４  タグ
１４０  タグ制御部
１４１  書戻し処理部
１４２  無効化処理部
１５０  データ記憶部
１６０  データ制御部
２００  共有メモリ
【図１】
2014178804.tif 000003
【図２】
2014178804.tif 000004
【図３】
2014178804.tif 000005
【図４】
2014178804.tif 000006
【図５】
2014178804.tif 000007
【図６】
2014178804.tif 000008
【図７】
2014178804.tif 000009
【図８】
2014178804.tif 000010
【図９】
2014178804.tif 000011
【図１０】
2014178804.tif 000012