(57)【要約】【課題】マルチコアプロセッサのローカルキャッシュのキャッシュヒット率を向上できる。【解決手段】制御部８は、プロセスで使用したデータを共用キャッシュメモリ７に格納する。制御部８は、共用キャッシュメモリ７のメモリ空間に対して共用キュー６を設け、共用キュー６を用いてＬＲＵ制御をおこなう。また、制御部８は、共用キャッシュメモリ７のメモリ空間に対してローカルキュー５を設ける。制御部８は、コア３がプロセスで使用したキャッシュページのＣＢＥ（管理情報）９をローカルキュー５にエンキューする。制御部８は、所定条件の成立時にローカルキュー５にある複数のＣＢＥ９をデキューして、共用キュー６にエンキューする。【選択図】図１
2015191604.tif 000002
【特許請求の範囲】
【請求項１】
ローカルキャッシュメモリを有するコアを２以上備えるプロセッサと、前記コアが共用する共用キャッシュメモリと、を備える制御装置であって、
前記コアで実行されたプロセスで使用して前記共用キャッシュメモリに格納される単位データの管理情報を前記コアに割り当てられたローカルキューにエンキューし、前記ローカルキューにある複数の前記管理情報をデキューして、前記２以上のコアで共用する共用キューにエンキューする制御部を備える制御装置。
【請求項２】
前記制御部は、前記ローカルキューにある前記管理情報が所定数に達した場合に、前記ローカルキューから複数の前記管理情報をデキューして、前記共用キューにエンキューする請求項１記載の制御装置。
【請求項３】
前記管理情報は、前記ローカルキューにある前後の管理情報との接続関係を示す情報を含む請求項１記載の制御装置。
【請求項４】
前記ローカルキュー、前記共用キュー、前記共用キャッシュメモリは、共通のメモリ上に設けられる請求項１記載の制御装置。
【請求項５】
前記共用キャッシュメモリへのアクセスを伴う処理を前記コアに分担させる請求項１記載の制御装置。
【請求項６】
ストレージ装置に対するＩ／Ｏ処理を受け付けて、前記Ｉ／Ｏ処理を前記コアに分担させる請求項５記載の制御装置。
【請求項７】
ローカルキャッシュメモリを有するコアを２以上備えるプロセッサと、前記コアが共用する共用キャッシュメモリと、を備える制御装置の制御プログラムであって、
前記制御装置に、
前記コアで実行されたプロセスで使用して前記共用キャッシュメモリに格納される単位データの管理情報を前記コアに割り当てられたローカルキューにエンキューし、前記ローカルキューにある複数の前記管理情報をデキューして、前記２以上のコアで共用する共用キューにエンキューする処理を実行させる制御プログラム。
【請求項８】
ローカルキャッシュメモリを有するコアを２以上備えるプロセッサと、前記コアが共用する共用キャッシュメモリと、を備える制御装置の制御方法であって、
前記制御装置が、
前記コアで実行されたプロセスで使用して前記共用キャッシュメモリに格納される単位データの管理情報を前記コアに割り当てられたローカルキューにエンキューし、前記ローカルキューにある複数の前記管理情報をデキューして、前記２以上のコアで共用する共用キューにエンキューする処理を実行する制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置、制御プログラム、および制御方法に関する。
【背景技術】
【０００２】
近年、処理の高速化のため、ＳＭＰ（Symmetric Multiprocessing=対称型マルチプロセッシング）方式が広く用いられている。ＳＭＰは、物理メモリを共用して管理し、たとえば、ＤＲＡＭ上にキャッシュを設け、ＬＲＵ（Least Recently Used）方式によるキャッシュ制御（ＬＲＵ制御）をおこなう。
【０００３】
ＬＲＵ制御においてＣＰＵ（Central Processing Unit）上の各コアでは、プロセス内で使用したキャッシュページの管理ブロックをＬＲＵリンクの最後尾に接続する。ＬＲＵリンクは、各管理ブロックが前後に接続する管理ブロックのＩＤを有してリンク関係を保持するキュー構造である。そのため、ＬＲＵリンクへの管理ブロックの接続は、ＭＲＵ（Most Recently Used）ポインタが指している管理ブロックを読み出して、前後に接続する管理ブロックのＩＤを更新することによっておこなわれる。
【０００４】
このとき、ＭＲＵポインタが指している管理ブロックがＣＰＵキャッシュ（ローカルキャッシュ）に保存されていれば、各コアは、ＭＲＵポインタが指している管理ブロックをＣＰＵキャッシュから読み出すことができる。これをＣＰＵキャッシュヒットといい、各コアは、管理ブロックのリンクの繋ぎ換えを高速に処理することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−９９８０２号公報
【特許文献２】特開２００７−３３４７５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
一方、ＭＲＵポインタが指している管理ブロックがＣＰＵキャッシュに保存されていなければ、各コアは、ＭＲＵポインタが指している管理ブロックをＤＲＡＭキャッシュから読み出すこととなり処理性能が低下する。
【０００７】
各コアが並行して処理を実行する場合、あるコアで実行されたプロセスで使用したキャッシュページの管理ブロックが連続してＬＲＵリンクに接続されるとは限らない。また、そのような管理ブロックが連続してＬＲＵリンクに接続される確率は、コア数の増加とともに低下する。近年のコア数増加の流れに照らすと、ＣＰＵキャッシュヒットをミスする問題は、より一層顕著になる傾向にある。
【０００８】
１つの側面では、本発明は、マルチコアプロセッサのローカルキャッシュのキャッシュヒット率を向上できる制御装置、制御プログラム、および制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、以下に示すような、制御装置が提供される。制御装置は、プロセッサと、共用キャッシュメモリを備える。プロセッサは、ローカルキャッシュメモリを有するコアを２以上備える。共用キャッシュメモリは、コアが共用する。制御装置は、制御部を備える。制御部は、コアで実行されたプロセスで使用して共用キャッシュメモリに格納される単位データの管理情報をコアに割り当てられたローカルキューにエンキューし、ローカルキューにある複数の管理情報をデキューして、２以上のコアで共用する共用キューにエンキューする。
【発明の効果】
【００１０】
１態様によれば、制御装置、制御プログラム、および制御方法において、マルチコアプロセッサのローカルキャッシュのキャッシュヒット率を向上できる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施形態の制御装置の構成の一例を示す図である。
【図２】第２の実施形態のストレージシステムの構成の一例を示す図である。
【図３】第２の実施形態のＲＡＩＤ装置のハードウェア構成の一例を示す図である。
【図４】第２の実施形態のプロセッサの構成の一例を示す図である。
【図５】第２の実施形態のＤＲＡＭのメモリ空間の構成の一例を示す図である。
【図６】第２の実施形態の管理ブロックデータ構造の一例を示す図である。
【図７】第２の実施形態のＣＢＥのリンクの一例を示す図である。
【図８】第２の実施形態のコアが占用するキャッシュメモリのキャッシュヒットの一例を示す図である。
【図９】コアごとに個別管理領域を設けていない場合の、コアが占用するキャッシュメモリのキャッシュミスの比較例を示す図である。
【図１０】第２の実施形態の個別管理領域から共通管理領域への管理ブロックの繋ぎ換えの一例を示す図である。
【図１１】第２の実施形態のホストＩ／Ｏ処理のフローチャートを示す図である。
【図１２】第２の実施形態のＬＲＵ繋ぎ換え処理のフローチャートを示す図である。
【発明を実施するための形態】
【００１２】
以下、実施の形態について、図面を参照しながら詳細に説明する。
［第１の実施形態］
まず、第１の実施形態の制御装置について図１を用いて説明する。図１は、第１の実施形態の制御装置の構成の一例を示す図である。
【００１３】
制御装置１は、プロセッサ２と、共用キャッシュメモリ７を備える。プロセッサ２は、複数のコア３を有するマルチコアプロセッサであり、コア３ａとコア３ｂを有する。コア３は、それぞれローカルキャッシュメモリ４を備える。コア３ａはローカルキャッシュメモリ４ａを備え、コア３ｂはローカルキャッシュメモリ４ｂを備える。ローカルキャッシュメモリ４は、コア３ごとに用意されるキャッシュメモリである。
【００１４】
共用キャッシュメモリ７は、複数のコア３が共用するキャッシュメモリである。共用キャッシュメモリ７は、たとえば、ＤＲＡＭ（Dynamic Random Access Memory）上に設けられる。
【００１５】
制御装置１は、制御部８を備える。制御部８は、プロセッサ２が所要の処理を実行することにより実現する。プロセッサ２は、コア３ごとにプロセスを実行する。制御部８は、プロセスで使用したデータをキャッシュページ（単位データ）として共用キャッシュメモリ７に格納する。このとき、制御部８は、共用キャッシュメモリ７に空き領域がなければ、すでに共用キャッシュメモリ７に格納されているキャッシュページの追い出しをおこなう。制御部８は、参照されていない時間が最も長いデータを置換対象とするＬＲＵ方式によるキャッシュページの追い出しをおこなう。
【００１６】
制御部８は、共用キャッシュメモリ７のメモリ空間に対して共用キュー６を設け、共用キュー６を用いてＬＲＵ制御をおこなう。また、制御部８は、共用キャッシュメモリ７のメモリ空間に対してローカルキュー５を設ける。なお、ローカルキュー５は、ローカルキャッシュメモリ４のメモリ空間に対して設けられるものであってもよい。
【００１７】
各コア３は、共用キュー６と、コア３に割り当てられているローカルキュー５にアクセス可能である。たとえば、コア３ａは、共用キュー６とローカルキュー５ａにアクセス可能であり、コア３ｂは、共用キュー６とローカルキュー５ｂにアクセス可能である。
【００１８】
制御部８は、コア３がプロセスで使用したキャッシュページの管理情報（以下、ＣＢＥ（Cache Bundle Element）９）をローカルキュー５にエンキュー（接続）する。ＣＢＥ９は、ローカルキュー５または共用キュー６における前後のＣＢＥ９との接続情報を含む。
【００１９】
制御部８は、接続対象のＣＢＥ９がすでにローカルキュー５に接続している場合は、接続対象のＣＢＥ９を一旦接続から外してローカルキュー５の最後尾に接続する。したがって、制御部８は、ローカルキュー５におけるＣＢＥ９の接続のために、接続対象のＣＢＥ９の前後のＣＢＥ９へのアクセスを要する。すなわち、制御部８は、接続対象のＣＢＥ９をローカルキュー５から外す際に、または接続する際に、前後のＣＢＥ９を参照して接続情報を更新する。なお、ローカルキュー５について説明したが、共用キュー６についても同様である。
【００２０】
コア３がプロセス内で使用したキャッシュページのＣＢＥ９をローカルキュー５に新たに接続する場合、ローカルキュー５に接続されている最後尾のＣＢＥ９もコア３がプロセス内で使用したキャッシュページのＣＢＥ９である。したがって、最後尾のＣＢＥ９は、ローカルキャッシュメモリ４にあることが期待できる。すなわち、コア３がプロセス内で使用したキャッシュページのＣＢＥ９をローカルキュー５に新たに接続する場合、ローカルキュー５に接続されている最後尾のＣＢＥ９をローカルキャッシュメモリ４から読み出すことができる。これは、コア３がローカルキャッシュにヒットした状態であり、コア３の処理性能向上に貢献する。
【００２１】
たとえば、コア３ａがプロセス内で使用したキャッシュページのＣＢＥ９０をローカルキュー５ａに接続する場合、ＣＢＥ９１は、ローカルキャッシュメモリ４ａにあることが期待できる。同様に、コア３ｂがプロセス内で使用したキャッシュページのＣＢＥ９３をローカルキュー５ｂに接続する場合、ＣＢＥ９４は、ローカルキャッシュメモリ４ｂにあることが期待できる。このようにして、ローカルキュー５ａは、複数のＣＢＥ９からなるＣＢＥ群９２を蓄積する。同様に、ローカルキュー５ｂは、複数のＣＢＥ９からなるＣＢＥ群９５を蓄積する。
【００２２】
また、制御部８は、所定条件の成立時にローカルキュー５にある複数のＣＢＥ９をデキューして、共用キュー６にエンキューする。たとえば、制御部８は、ローカルキュー５が所定数のＣＢＥ９を接続している場合に、これらをまとめて共用キュー６にエンキューする。これによれば、ローカルキュー５は、共用キュー６に対するコア３ごとのバッファとして機能する。
【００２３】
たとえば、ＣＢＥ群９２は、所定条件の成立を契機にローカルキュー５ａから共用キュー６に繋ぎ換えられる。これにより、共用キュー６は、ＣＢＥ群９６の後にＣＢＥ群９２を蓄積する。ＣＢＥ群９５は、所定条件の成立を待つまでの間、ローカルキュー５ｂにある。共用キュー６は、コア３ごとのＣＢＥ群を並べるようにしてＣＢＥを接続する。たとえば、共用キュー６は、ＣＢＥ群９６の後にＣＢＥ群９２を蓄積する。
【００２４】
これにより、制御装置１は、ローカルキャッシュメモリ４のキャッシュヒット率を向上できる。制御装置１は、ローカルキャッシュメモリ４のキャッシュヒット率の向上により、プロセッサの処理性能の向上を図ることができる。
【００２５】
［第２の実施形態］
次に、第２の実施形態のストレージシステムについて図２を用いて説明する。図２は、第２の実施形態のストレージシステムの構成の一例を示す図である。
【００２６】
ストレージシステム１０は、ホスト１１と、ネットワーク１２を介してホスト１１と接続するＲＡＩＤ（Redundant Arrays of Inexpensive Disks）装置１３を備える。ストレージシステム１０は、ホスト１１が要求するＩ／Ｏ（Input／Output）リクエストに応じて、ＲＡＩＤ装置１３にデータを書き込み、あるいはＲＡＩＤ装置１３からデータを読み出す。
【００２７】
次に、第２の実施形態のＲＡＩＤ装置１３のハードウェア構成について図３を用いて説明する。図３は、第２の実施形態のＲＡＩＤ装置のハードウェア構成の一例を示す図である。
【００２８】
ＲＡＩＤ装置１３は、プロセッサ１５によって装置全体が制御されている。プロセッサ１５には、バスを介してＤＲＡＭ１６と複数の周辺機器が接続されている。プロセッサ１５は、マルチコアプロセッサである。
【００２９】
プロセッサ１５は、たとえばＣＰＵ、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。
【００３０】
ＤＲＡＭ１６は、ＲＡＩＤ装置１３の主記憶装置として使用される。ＤＲＡＭ１６には、プロセッサ１５に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時格納される。また、ＤＲＡＭ１６には、プロセッサ１５による処理に必要な各種データが格納される。また、ＤＲＡＭ１６は、プロセッサ１５のキャッシュメモリとして機能する。
【００３１】
バスに接続されている周辺機器としては、ホストインタフェース１４、ＨＤＤ１７、機器接続インタフェース１８、およびディスクインタフェース１９がある。
ホストインタフェース１４は、ネットワーク１２を介してホスト１１との間でデータの送受信をおこなう。
【００３２】
ＨＤＤ１７は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しをおこなう。ＨＤＤ１７は、ＲＡＩＤ装置１３の補助記憶装置として使用される。ＨＤＤ１７には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
【００３３】
機器接続インタフェース１８は、ＲＡＩＤ装置１３に周辺機器を接続するための通信インタフェースである。たとえば機器接続インタフェース１８には、図示しないメモリ装置やメモリリーダライタを接続することができる。メモリ装置は、機器接続インタフェース１８との通信機能を搭載した記録媒体である。メモリリーダライタは、メモリカードへのデータの書き込み、またはメモリカードからのデータの読み出しをおこなう装置である。メモリカードは、たとえば、カード型の記録媒体である。
【００３４】
また、機器接続インタフェース１８には、図示しないモニタを接続してもよい。その場合、機器接続インタフェース１８は、プロセッサ１５からの命令にしたがって、画像をモニタの画面に表示させるグラフィック処理機能を有する。
【００３５】
また、機器接続インタフェース１８は、図示しないキーボードやマウスを接続してもよい。その場合、機器接続インタフェース１８は、キーボードやマウスから送られてくる信号をプロセッサ１５に送信する。なお、マウスは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００３６】
また、機器接続インタフェース１８は、図示しない光学ドライブ装置を接続してもよい。光学ドライブ装置は、レーザ光などを利用して、光ディスクに記録されたデータの読み取りをおこなう。光ディスクは、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００３７】
ディスクインタフェース１９は、１または２以上のディスク装置２０との間でデータの送受信をおこなう。ディスク装置２０は、たとえば、ＨＤＤやＳＳＤ（Solid State Drive）である。
【００３８】
以上のようなハードウェア構成によって、第２の実施形態のＲＡＩＤ装置１３の処理機能を実現することができる。なお、ホスト１１、および第１の実施形態に示した制御装置１も、図３に示したＲＡＩＤ装置１３と同様のハードウェアにより実現することができる。
【００３９】
ＲＡＩＤ装置１３は、たとえば、コンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施形態の処理機能を実現する。ＲＡＩＤ装置１３に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。たとえば、ＲＡＩＤ装置１３に実行させるプログラムをＨＤＤ１７に格納しておくことができる。プロセッサ１５は、ＨＤＤ１７内のプログラムの少なくとも一部をＤＲＡＭ１６にロードし、プログラムを実行する。また、ＲＡＩＤ装置１３に実行させるプログラムを、光ディスク、メモリ装置、メモリカードなどの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、たとえばプロセッサ１５からの制御により、ＨＤＤ１７にインストールされた後、実行可能となる。またプロセッサ１５が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００４０】
次に、第２の実施形態のプロセッサ１５の構成について図４を用いて説明する。図４は、第２の実施形態のプロセッサの構成の一例を示す図である。
プロセッサ１５は、マルチコアプロセッサであり、４つのプロセッサコア１５１，１５２，１５３，１５４を備えるクアッドコアプロセッサである。なお、プロセッサ１５がクアッドコアプロセッサである例を示すが、コアの数は２以上であれば４つに限らない。たとえば、プロセッサ１５は、コアが２つのデュアルコアや、コアが６つのヘキサコア、コアが８つのオクタコアなどであってもよい。
【００４１】
プロセッサコア１５１，１５２，１５３，１５４は、それぞれ、コア１５１１，１５２１，１５３１，１５４１と、キャッシュメモリ１５１２，１５２２，１５３２，１５４２を含む。キャッシュメモリ１５１２，１５２２，１５３２，１５４２は、１つのコアが占用するローカルキャッシュメモリである。
【００４２】
コア１５１１は、他のコア１５２１，１５３１，１５４１と共用しないキャッシュメモリ１５１２をＣＰＵキャッシュとして用いる。コア１５２１は、他のコア１５１１，１５３１，１５４１と共用しないキャッシュメモリ１５２２をＣＰＵキャッシュとして用いる。コア１５３１は、他のコア１５１１，１５２１，１５４１と共用しないキャッシュメモリ１５３２をＣＰＵキャッシュとして用いる。コア１５４１は、他のコア１５１１，１５２１，１５３１と共用しないキャッシュメモリ１５４２をＣＰＵキャッシュとして用いる。
【００４３】
なお、ＲＡＩＤ装置１３は、各プロセッサコア１５１，１５２，１５３，１５４にホストＩ／Ｏ処理を割り振る。各プロセッサコア１５１，１５２，１５３，１５４は、ホストＩ／Ｏ処理の実行により、プロセス内で使用したキャッシュページを管理する処理を伴う。したがって、各プロセッサコア１５１，１５２，１５３，１５４は、キャッシュページを管理する処理を伴う共用キャッシュメモリへのアクセスを伴うホストＩ／Ｏ処理を分担する。
【００４４】
次に、第２の実施形態のＤＲＡＭ１６のメモリ空間について図５を用いて説明する。図５は、第２の実施形態のＤＲＡＭのメモリ空間の構成の一例を示す図である。
ＤＲＡＭ１６は、そのメモリ空間に、キャッシュ領域１６１と、共通管理領域１６２と、個別管理領域１６３，１６４，１６５，１６６を含む。キャッシュ領域１６１は、コア１５１１，１５２１，１５３１，１５４１が共用する共用キャッシュメモリとして機能する記憶領域である。キャッシュ領域１６１は、複数のデータブロック１６１１に分割される。データブロック１６１１は、キャッシュページ（単位データ）に対応する。
【００４５】
共通管理領域１６２は、管理ブロック１６２１を管理する領域である。管理ブロック１６２１は、対応するデータブロック１６１１の管理情報である。共通管理領域１６２は、コア１５１１，１５２１，１５３１，１５４１がそれぞれアクセス可能である。共通管理領域１６２は、共用キャッシュメモリにおける共用キューとして機能する記憶領域である。
【００４６】
個別管理領域１６３は、管理ブロック１６３１を管理する領域である。管理ブロック１６３１は、対応するデータブロック１６１１の管理情報である。個別管理領域１６３は、コア１５１１がアクセス可能である。個別管理領域１６３は、共用キャッシュメモリにおけるローカルキューとして機能する記憶領域である。
【００４７】
個別管理領域１６４は、管理ブロック１６４１を管理する領域である。管理ブロック１６４１は、対応するデータブロック１６１１の管理情報である。個別管理領域１６４は、コア１５２１がアクセス可能である。個別管理領域１６４は、共用キャッシュメモリにおけるローカルキューとして機能する記憶領域である。
【００４８】
個別管理領域１６５は、管理ブロック１６５１を管理する領域である。管理ブロック１６５１は、対応するデータブロック１６１１の管理情報である。個別管理領域１６５は、コア１５３１がアクセス可能である。個別管理領域１６５は、共用キャッシュメモリにおけるローカルキューとして機能する記憶領域である。
【００４９】
個別管理領域１６６は、管理ブロック１６６１を管理する領域である。管理ブロック１６６１は、対応するデータブロック１６１１の管理情報である。個別管理領域１６６は、コア１５４１がアクセス可能である。個別管理領域１６６は、共用キャッシュメモリにおけるローカルキューとして機能する記憶領域である。
【００５０】
次に、第２の実施形態の管理ブロック１６２１，１６３１，１６４１，１６５１，１６６１のデータ構造について図６を用いて説明する。図６は、第２の実施形態の管理ブロックデータ構造の一例を示す図である。
【００５１】
管理ブロック１６２１，１６３１，１６４１，１６５１，１６６１は、それぞれＣＢＥに対応する。ＣＢＥは、ＣＢＥデータ構造２００に示すデータ構造を有する。ＣＢＥは、データブロック１６１１と１対１に対応する管理情報である。ＣＢＥデータ構造２００は、「ＣＢＥ ＩＤ（IDentification）」と、「Ｌｉｎｋ Ｔｙｐｅ」と、「Ｐｒｅｖ ＣＢＥ ＩＤ」と、「Ｎｅｘｔ ＣＢＥ ＩＤ」と、「Ｃａｃｈｅ Ｐａｇｅ Ａｄｄｒｅｓｓ」を含む。
【００５２】
「ＣＢＥ ＩＤ」は、ＣＢＥを一意に特定可能な識別情報である。「ＣＢＥ ＩＤ」は、たとえば、シーケンシャルな数値情報である。
「Ｌｉｎｋ Ｔｙｐｅ」は、ＣＢＥのリンクの種類を示す情報である。「Ｌｉｎｋ Ｔｙｐｅ」は、たとえば、「Ｆｒｅｅ Ｌｉｎｋ」、「ＬＲＵ Ｌｉｎｋ」、「ＬＴＳ（Link TimeShift） Ｂｕｆｆｅｒ」などがある。「Ｆｒｅｅ Ｌｉｎｋ」は、使用されていないＣＢＥが接続されているリンクであることを示す。「ＬＲＵ Ｌｉｎｋ」は、共用キューで使用されているＣＢＥがＬＲＵにしたがい接続されているリンクであることを示す。「ＬＴＳ Ｂｕｆｆｅｒ」は、ローカルキューで使用されているＣＢＥがＬＲＵにしたがい接続されているリンクであることを示す。
【００５３】
「Ｐｒｅｖ ＣＢＥ ＩＤ」は、そのＣＢＥの前に接続されているＣＢＥの「ＣＢＥ ＩＤ」を示す。「Ｎｅｘｔ ＣＢＥ ＩＤ」は、そのＣＢＥの後に接続されているＣＢＥの「ＣＢＥ ＩＤ」を示す。「Ｐｒｅｖ ＣＢＥ ＩＤ」と「Ｎｅｘｔ ＣＢＥ ＩＤ」は、ＣＢＥの接続関係を示す接続情報である。
【００５４】
「Ｃａｃｈｅ Ｐａｇｅ Ａｄｄｒｅｓｓ」は、対応するデータブロック１６１１のアドレスを示す。
次に、第２の実施形態のＣＢＥのリンクについて図７を用いて説明する。図７は、第２の実施形態のＣＢＥのリンクの一例を示す図である。
【００５５】
管理ブロック１６２１，１６３１，１６４１，１６５１，１６６１は、図７に示すＣＢＥのリンクと同様の構造を有する。ＣＢＥのリンクは、ＣＢＥ３０，３１，３２を含む。なお、ＣＢＥ３０，３１，３２は、説明を簡単にするために、「ＣＢＥ ＩＤ」と、「Ｐｒｅｖ ＣＢＥ ＩＤ」と、「Ｎｅｘｔ ＣＢＥ ＩＤ」を示し、その他の情報を省略する。
【００５６】
ＣＢＥ３０は、「ＣＢＥ ＩＤ」＝「１」、「Ｐｒｅｖ ＣＢＥ ＩＤ」＝「０ｘｆｆ」、「Ｎｅｘｔ ＣＢＥ ＩＤ」＝「２」である。ＣＢＥ３１は、「ＣＢＥ ＩＤ」＝「２」、「Ｐｒｅｖ ＣＢＥ ＩＤ」＝「１」、「Ｎｅｘｔ ＣＢＥ ＩＤ」＝「３」である。ＣＢＥ３２は、「ＣＢＥ ＩＤ」＝「３」、「Ｐｒｅｖ ＣＢＥ ＩＤ」＝「２」、「Ｎｅｘｔ ＣＢＥ ＩＤ」＝「０ｘｆｆ」である。なお、「Ｐｒｅｖ ＣＢＥ ＩＤ」＝「０ｘｆｆ」および「Ｎｅｘｔ ＣＢＥ ＩＤ」＝「０ｘｆｆ」は、接続先となるＣＢＥがないことを示す。
【００５７】
これによれば、ＣＢＥ３０は、ＣＢＥ３０の前に接続されているＣＢＥがなく、ＣＢＥ３０の後にＣＢＥ３１が接続されていることを示す。また、ＣＢＥ３１は、ＣＢＥ３１の前にＣＢＥ３０が接続され、ＣＢＥ３１の後にＣＢＥ３２が接続されていることを示す。また、ＣＢＥ３２は、ＣＢＥ３２の前にＣＢＥ３１が接続され、ＣＢＥ３２の後に接続されているＣＢＥがないことを示す。
【００５８】
ＣＢＥのリンクの最後尾であるＣＢＥ３０は、ＬＲＵポインタにより特定される。ＣＢＥのリンクの先頭であるＣＢＥ３２は、ＭＲＵポインタにより特定される。このようなＣＢＥ３０，３１，３２は、双方向リスト構造を有するキューである。
【００５９】
たとえば、新しいＣＢＥ（「ＣＢＥ ＩＤ」＝「４」）をリンクに接続する場合、ＭＲＵポインタは、ＣＢＥ３０から新たなＣＢＥに更新され、ＣＢＥ３０は、「Ｐｒｅｖ ＣＢＥ ＩＤ」が「０ｘｆｆ」から「４」に更新される。
【００６０】
また、ＣＢＥ３１を新たにリンクに接続する場合、リンク中のＣＢＥ３１は、削除される。つまり、ＣＢＥ３０は、「ＮｅｘｔＣＢＥ ＩＤ」が「２」から「３」に更新され、ＣＢＥ３２は、「Ｐｒｅｖ ＣＢＥ ＩＤ」が「２」から「１」に更新される。また、ＭＲＵポインタは、ＣＢＥ３０からＣＢＥ３１に更新され、ＣＢＥ３０は、「Ｐｒｅｖ ＣＢＥ ＩＤ」が「０ｘｆｆ」から「２」に更新される。
【００６１】
次に、第２の実施形態のコアが占用するキャッシュメモリのキャッシュヒットについて図８を用いて説明する。図８は、第２の実施形態のコアが占用するキャッシュメモリのキャッシュヒットの一例を示す図である。
【００６２】
キャッシュメモリ１５１２は、コア１５１１が占用する。コア１５１１は、プロセス内で使用したキャッシュページの管理ブロックであるＣＢＥａ４を個別管理領域１６３の管理ブロック１６３１に接続する。このとき、コア１５１１は、ＣＢＥａ４を管理ブロック１６３１に接続するために、ＭＲＵポインタが指すＣＢＥａ３を参照する。ＣＢＥａ３もコア１５１１がプロセス内で使用したキャッシュページの管理ブロックであることから、ＣＢＥａ３は、キャッシュメモリ１５１２にある。すなわち、コア１５１１は、キャッシュメモリ１５１２にキャッシュヒットする。このキャッシュヒットは、ＣＰＵキャッシュヒットであるので、コア１５１１は、プロセッサの処理性能の向上を図ることができる。
【００６３】
ここで、図９を用いて参考例との比較をおこなう。図９は、コアごとに個別管理領域を設けていない場合の、コアが占用するキャッシュメモリのキャッシュミスの比較例を示す図である。
【００６４】
比較例として、コア１５１１がプロセス内で使用したキャッシュページの管理ブロックであるＣＢＥａ２を、個別管理領域１６３を介さず共通管理領域１６２の管理ブロック１６２１に接続すると仮定して説明する。なお、共通管理領域１６２にあるＣＢＥａで始まる管理ブロックは、コア１５１１がプロセス内で使用したキャッシュページの管理ブロックであることを示す。また、ＣＢＥｂ，ＣＢＥｃ，ＣＢＥｄで始まる管理ブロックは、コア１５１１以外のコアが使用したキャッシュページの管理ブロックであることを示す。
【００６５】
コア１５１１は、ＣＢＥａ２を共通管理領域１６２の管理ブロック１６２１に接続する。このとき、コア１５１１は、ＣＢＥａ２を管理ブロック１６２１に接続するために、ＭＲＵポインタが指すＣＢＥｄ１を参照する。ＣＢＥｄ１は、コア１５１１が使用したキャッシュページの管理ブロックでないことから、ＣＢＥｄ１は、キャッシュメモリ１５１２にない。すなわち、コア１５１１は、キャッシュメモリ１５１２にキャッシュミスする。
【００６６】
これにより、コア１５１１は、ＤＲＡＭ１６へのアクセスを要する。このキャッシュミスは、ＣＰＵキャッシュミスであり、コア１５１１は、プロセッサの処理性能の向上を図ることができない。このようなＣＰＵキャッシュミスは、プロセッサのコア数が増大するほどに顕著になる。近年のコア数増加の流れは、ＣＰＵキャッシュミスによるプロセッサの処理性能低下に対する改善要請をより大きなものとしている。
【００６７】
一方、ＲＡＩＤ装置１３は、コア１５１１，１５２１，１５３１，１５４１ごとに個別管理領域１６３，１６４，１６５，１６６を設けたことで、ＣＰＵキャッシュヒットによるプロセッサの処理性能の向上を図ることができる。
【００６８】
次に、第２の実施形態の個別管理領域から共通管理領域への管理ブロックの繋ぎ換えについて図１０を用いて説明する。図１０は、第２の実施形態の個別管理領域から共通管理領域への管理ブロックの繋ぎ換えの一例を示す図である。
【００６９】
コア１５１１は、ＣＢＥａ１，ＣＢＥａ２，ＣＢＥａ３を個別管理領域１６３に蓄積する。コア１５１１は、ＣＢＥａ２，ＣＢＥａ３を個別管理領域１６３に蓄積する間、参照対象のＣＢＥａ１，ＣＢＥａ２がキャッシュメモリ１５１２にあるのでキャッシュヒットする。このように、ＲＡＩＤ装置１３は、個別管理領域１６３にＣＢＥａ１，ＣＢＥａ２，ＣＢＥａ３を蓄積することで、キャッシュヒット率を向上する。
【００７０】
コア１５１１は、個別管理領域１６３に蓄積したＣＢＥａ１，ＣＢＥａ２，ＣＢＥａ３を管理ブロック１６３１から共通管理領域１６２の管理ブロック１６２１に繋ぎ換える。このとき、コア１５１１は、ＣＢＥａ１，ＣＢＥａ２，ＣＢＥａ３を管理ブロック１６２１の最後尾に接続して、ＭＲＵポインタを更新する。
【００７１】
また、ホストＩ／Ｏ処理において使用可能なＣＢＥが存在しない場合、コア１５１１は、キャッシュページの追い出しを実行する。このとき、コア１５１１は、ＬＲＵポインタが指すＣＢＥを管理ブロック１６２１から追い出し、ＬＲＵポインタを更新する。
【００７２】
次に、第２の実施形態のホストＩ／Ｏ処理について図１１を用いて説明する。図１１は、第２の実施形態のホストＩ／Ｏ処理のフローチャートを示す図である。
ホストＩ／Ｏ処理は、ホスト１１から受け付けたＩ／Ｏリクエストに対応するＩ／Ｏ処理の実行と、Ｉ／Ｏ処理に伴うキャッシュページのＣＢＥをキューに接続する処理である。ホストＩ／Ｏ処理は、ホストＩ／Ｏ処理を割り振られたコアが実行する処理である。以下、コア１５１１がホストＩ／Ｏ処理を割り振られたものとして説明するが、コア１５２１，１５３１，１５４１についても同様である。
【００７３】
［ステップＳ１１］コア１５１１は、ホスト１１から受け付けたＩ／Ｏリクエストに対応するＩ／Ｏ処理を実行する。Ｉ／Ｏリクエストに対応するＩ／Ｏ処理は、たとえば、ディスク装置２０からのデータの読み出しや、ディスク装置２０へのデータの書き込みなどがある。
【００７４】
［ステップＳ１２］コア１５１１は、Ｉ／Ｏ処理に伴うキャッシュページのＣＢＥをローカルキューにエンキューする。すなわち、コア１５１１は、プロセス内で使用したキャッシュページの管理ブロックであるＣＢＥを個別管理領域１６３の管理ブロック１６３１に接続する。
【００７５】
［ステップＳ１３］コア１５１１は、キューカウンタをインクリメントする。キューカウンタは、個別管理領域１６３の管理ブロック１６３１に接続しているＣＢＥの数を示す。
【００７６】
［ステップＳ１４］コア１５１１は、キューカウンタの値が閾値以上であるか否かを判定する。コア１５１１は、キューカウンタの値が閾値以上である場合にステップＳ１５にすすみ、コア１５１１は、キューカウンタの値が閾値未満である場合にホストＩ／Ｏ処理を終了する。なお、閾値は、あらかじめ定める値であるが、プロセッサのコア数、プロセッサの使用率などの環境変数に応じて可変としてもよい。
【００７７】
［ステップＳ１５］コア１５１１は、ＬＲＵ繋ぎ換え処理を起動して、ホストＩ／Ｏ処理を終了する。コア１５１１は、スケジューラ経由でＬＲＵ制御関数をコールすることでＬＲＵ繋ぎ換え処理を起動することができる。
【００７８】
次に、第２の実施形態のＬＲＵ繋ぎ換え処理について図１２を用いて説明する。図１２は、第２の実施形態のＬＲＵ繋ぎ換え処理のフローチャートを示す図である。
ＬＲＵ繋ぎ換え処理は、ローカルキューにあるＣＢＥを共用キューに繋ぎ換える処理である。以下、コア１５１１がＬＲＵ制御関数をコールされたものとして説明するが、コア１５２１，１５３１，１５４１についても同様である。ＬＲＵ繋ぎ換え処理は、スケジューラ経由でＬＲＵ制御関数がコールされたことを契機にコア１５１１が実行する処理である。
【００７９】
［ステップＳ２１］コア１５１１は、共用キューの排他権を獲得する。すなわち、コア１５１１は、共通管理領域１６２の排他的なアクセス権を獲得する。
［ステップＳ２２］コア１５１１は、ローカルキューにあるＣＢＥを共用キューに繋ぎ換える。すなわち、個別管理領域１６３に蓄積したＣＢＥを管理ブロック１６３１から共通管理領域１６２の管理ブロック１６２１に繋ぎ換える。
【００８０】
［ステップＳ２３］コア１５１１は、キューカウンタをリセットする。すなわち、コア１５１１は、キューカウンタをゼロクリアする。
［ステップＳ２４］コア１５１１は、共用キューの排他権を解放する。すなわち、コア１５１１は、共通管理領域１６２の排他的なアクセス権を解放する。コア１５１１は、共用キューの排他権を解放した後、ＬＲＵ繋ぎ換え処理を終了する。
【００８１】
なお、第２の実施形態において個別管理領域１６３，１６４，１６５，１６６がローカルキューとして機能するとしたが、双方向リスト構造を有しないバッファとしてもよい。その場合、ＲＡＩＤ装置１３は、個別管理領域１６３に蓄積したＣＢＥを管理ブロック１６３１から共通管理領域１６２の管理ブロック１６２１に繋ぎ換える際に、ＣＢＥの配列を決定してもよい。
【００８２】
なお、ＲＡＩＤ装置１３は、各コアにホストＩ／Ｏ処理を割り振るとしたが、ホストＩ／Ｏ処理の割り振りが各コアに均等である場合に、一層のプロセッサの処理性能の向上を図ることができる。
【００８３】
なお、ＲＡＩＤ装置１３は、ローカルキューにあるＣＢＥの共用キューへの繋ぎ換えを、キューカウンタを設けて実行契機をコントロールしたが、これに限らず所定の条件にしたがい実行契機をコントロールしてもよい。たとえば、ＲＡＩＤ装置１３は、ローカルキューにあるＣＢＥの滞在時間や、ホストＩ／Ｏ処理の数などがあらかじめ設定する条件を成立させることにより実行契機をコントロールしてもよい。
【００８４】
なお、各コアは、ローカルキューを占用するとしたが、２以上のローカルキューを設けて少なくともいずれか一方のローカルキューについて２以上のコアがローカルキューを共用するようにしてもよい。たとえば、ＲＡＩＤ装置１３は、各コアにホストＩ／Ｏ処理を不均等に割り振る場合、割り振りの多いコアが１つのローカルキューを占用し、割り振りの少ないコアが１つのローカルキューを共用してもよい。
【００８５】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、制御装置１、ＲＡＩＤ装置１３が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【００８６】
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【００８７】
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
【００８８】
また、上記の処理機能の少なくとも一部を、ＤＳＰ、ＡＳＩＣ、ＰＬＤなどの電子回路で実現することもできる。
【符号の説明】
【００８９】
１  制御装置
２，１５  プロセッサ
３，３ａ，３ｂ，１５１１，１５２１，１５３１，１５４１  コア
４，４ａ，４ｂ  ローカルキャッシュメモリ
５，５ａ，５ｂ  ローカルキュー
６  共用キュー
７  共用キャッシュメモリ
８  制御部
１０  ストレージシステム
１１  ホスト
１２  ネットワーク
１３  ＲＡＩＤ装置
１４  ホストインタフェース
１６  ＤＲＡＭ
１７  ＨＤＤ
１８  機器接続インタフェース
１９  ディスクインタフェース
２０  ディスク装置
１５１，１５２，１５３，１５４  プロセッサコア
１６１  キャッシュ領域
１６２  共通管理領域
１６３，１６４，１６５，１６６  個別管理領域
１５１２，１５２２，１５３２，１５４２  キャッシュメモリ
【図１】
2015191604.tif 000003
【図２】
2015191604.tif 000004
【図３】
2015191604.tif 000005
【図４】
2015191604.tif 000006
【図５】
2015191604.tif 000007
【図６】
2015191604.tif 000008
【図７】
2015191604.tif 000009
【図８】
2015191604.tif 000010
【図９】
2015191604.tif 000011
【図１０】
2015191604.tif 000012
【図１１】
2015191604.tif 000013
【図１２】
2015191604.tif 000014