(57)【要約】【課題】記憶装置への書き込みデータに係るブロックサイズが異なるアクセスが存在する場合でも、ストアマージ処理を簡易なハードウェアにより実現することを可能とする。【解決手段】ストアマージ処理装置４０は、記憶装置に対して発行された、アクセスアドレスが所定の領域内にあり、かつ、ブロックサイズが等しい複数の書き込み命令に関して、ブロックサイズを識別する識別情報と、複数のブロックデータと、所定の領域の場所を示すアドレス情報と、個々のブロックデータについて格納していることを示す格納情報とを関連付けて記憶するエントリを複数備えた記憶手段と、書き込み命令について、識別情報が一致し、かつ、アドレス情報から特定される所定の領域がアクセスアドレスを包含するエントリが存在する場合、当該書き込み命令に包含されるブロックデータを当該エントリに格納して、当該ブロックデータに関する格納情報を更新する更新手段とを備える。【選択図】      図８
2015049844.tif 000002
【特許請求の範囲】
【請求項１】
ブロックサイズが異なる書き込み命令を発行可能な外部装置から発行された複数の書き込み命令であって、アクセスアドレスが所定の領域内にあり、かつ、記憶装置に対してデータを書き込む際のブロックサイズが等しい複数の前記書き込み命令に関して、前記ブロックサイズを識別する識別情報と、複数のブロックデータと、前記所定の領域の場所を示すアドレス情報と、個々の前記ブロックデータについて格納していることを示す格納情報と、を関連付けた状態で記憶するエントリを複数備えた記憶手段と、
前記書き込み命令について、前記識別情報が一致し、かつ、前記アドレス情報から特定される前記所定の領域が前記アクセスアドレスを包含する前記エントリが存在する場合、当該書き込み命令に包含される前記ブロックデータを、当該エントリにおける、前記アクセスアドレスにより特定される場所に格納すると共に、当該ブロックデータに関する前記格納情報を更新する更新手段と、
を備えるストアマージ処理装置。
【請求項２】
前記エントリに格納された格納情報が、アクセスアドレスが連続する複数の前記ブロックデータが当該エントリに格納されていることを示している場合、当該エントリに格納された前記識別情報、前記アドレス情報、及び、前記格納情報を基に、複数の前記ブロックデータをまとめて前記記憶装置に書き込む書き込み命令を生成する生成手段
をさらに備える請求項１に記載のストアマージ処理装置。
【請求項３】
前記更新手段は、前記書き込み命令について、前記識別情報が一致し、かつ、前記アドレス情報から特定される前記所定の領域が前記アクセスアドレスを包含する前記エントリが存在せず、かつ、未使用の前記エントリが存在しない場合、所定の基準に従い前記エントリのいずれかを選択し、選択された前記エントリに格納された前記識別情報、前記ブロックデータ、前記アドレス情報、及び、前記格納情報を前記生成手段へ入力し、
前記生成手段は、前記更新手段から入力された、前記識別情報、前記ブロックデータ、前記アドレス情報、及び、前記格納情報を基に、前記記憶装置に書き込む書き込み命令を生成する、
請求項２に記載のストアマージ処理装置。
【請求項４】
請求項１乃至３の何れかに記載のストアマージ処理装置と、前記記憶装置と、を含むストアマージ処理システム。
【請求項５】
情報処理装置によって、
ブロックサイズが異なる書き込み命令を発行可能な外部装置から発行された複数の書き込み命令であって、アクセスアドレスが所定の領域内にあり、かつ、記憶装置に対してデータを書き込む際のブロックサイズが等しい複数の前記書き込み命令に関して、前記ブロックサイズを識別する識別情報と、複数のブロックデータと、前記所定の領域の場所を示すアドレス情報と、個々の前記ブロックデータについて格納していることを示す格納情報と、を関連付けた状態で複数のエントリのいずれかに記憶し、
前記書き込み命令について、前記識別情報が一致し、かつ、前記アドレス情報から特定される前記所定の領域が前記アクセスアドレスを包含する前記エントリが存在する場合、当該書き込み命令に包含される前記ブロックデータを、当該エントリにおける、前記アクセスアドレスにより特定される場所に格納すると共に、当該ブロックデータに関する前記格納情報を更新する、
ストアマージ処理方法。
【請求項６】
情報処理装置によって、
前記エントリに格納された格納情報が、アクセスアドレスが連続する複数の前記ブロックデータが当該エントリに格納されていることを示している場合、当該エントリに格納された前記識別情報、前記アドレス情報、及び、前記格納情報を基に、複数の前記ブロックデータをまとめて前記記憶装置に書き込む書き込み命令を生成する
請求項５に記載のストアマージ処理方法。
【請求項７】
情報処理装置によって、
前記書き込み命令について、前記識別情報が一致し、かつ、前記アドレス情報から特定される前記所定の領域が前記アクセスアドレスを包含する前記エントリが存在せず、かつ、未使用の前記エントリが存在しない場合、所定の基準に従い前記エントリのいずれかを選択し、
選択された前記エントリに格納された、前記識別情報、前記ブロックデータ、前記アドレス情報、及び、前記格納情報を基に、前記記憶装置に書き込む書き込み命令を生成する、
請求項６に記載のストアマージ処理方法。
【請求項８】
ブロックサイズが異なる書き込み命令を発行可能な外部装置から発行された複数の書き込み命令であって、アクセスアドレスが所定の領域内にあり、かつ、記憶装置に対してデータを書き込む際のブロックサイズが等しい複数の前記書き込み命令に関して、前記ブロックサイズを識別する識別情報と、複数のブロックデータと、前記所定の領域の場所を示すアドレス情報と、個々の前記ブロックデータについて格納していることを示す格納情報と、を関連付けた状態で複数のエントリのいずれかに記憶する記憶処理と、
前記書き込み命令について、前記識別情報が一致し、かつ、前記アドレス情報から特定される前記所定の領域が前記アクセスアドレスを包含する前記エントリが存在する場合、当該書き込み命令に包含される前記ブロックデータを、当該エントリにおける、前記アクセスアドレスにより特定される場所に格納すると共に、当該ブロックデータに関する前記格納情報を更新する更新処理と、
をコンピュータに実行させるストアマージプログラム。
【請求項９】
前記エントリに格納された格納情報が、アクセスアドレスが連続する複数の前記ブロックデータが当該エントリに格納されていることを示している場合、当該エントリに格納された前記識別情報、前記アドレス情報、及び、前記格納情報を基に、複数の前記ブロックデータをまとめて前記記憶装置に書き込む書き込み命令を生成する生成処理
をコンピュータに実行させる請求項８のストアマージプログラム。
【請求項１０】
前記書き込み命令について、前記識別情報が一致し、かつ、前記アドレス情報から特定される前記所定の領域が前記アクセスアドレスを包含する前記エントリが存在せず、かつ、未使用の前記エントリが存在しない場合、所定の基準に従い前記エントリのいずれかを選択し、選択された前記エントリに格納された前記識別情報、前記ブロックデータ、前記アドレス情報、及び、前記格納情報を前記生成処理へ入力し、
前記更新処理から入力された、前記識別情報、前記ブロックデータ、前記アドレス情報、及び、前記格納情報を基に、前記記憶装置に書き込む書き込み命令を生成する前記生成処理と、
をコンピュータに実行させる請求項９のストアマージプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明は、アクセスアドレスが所定の領域内にある複数の書き込み命令をまとめた後に、その書き込み命令を、書き込み対象の記憶装置に発行するストアマージ処理装置等に関する。
【背景技術】
【０００２】
主記憶装置あるいはキャッシュ等の記憶装置に対して書き込みを行う際に、複数の書き込み命令に係るアクセスアドレスが例えば同一のライン内である場合、個々の命令ごとに記憶装置に書き込み命令を送信せずに、それらの命令を一つの書き込み命令にまとめた後に、記憶装置に命令を送信するストアマージ処理が知られている。ストアマージ処理は、記憶装置に対する書き込みアクセスの回数を削減することにより、記憶装置へのアクセス性能を向上させることができる。
【０００３】
このようなストアマージ処理に関連する技術として、特許文献１には、複数の書き込み命令に係るデータを記憶するストアバッファを備え、記憶装置上の異なるアドレスに対する書き込み命令が発行された場合でも、記憶装置へのアクセスを抑えるようにした装置が開示されている。
【０００４】
また、特許文献２には、主記憶装置への部分書き込み処理に係るアドレス及びデータを格納するアドレスバッファ及びデータバッファを複数個並列に具備することにより、主記憶装置への部分書き込みアクセス回数を軽減した装置が開示されている。
【０００５】
また、特許文献３には、バイトマークと同様に、書き込みデータを一時的に格納するデータキューを使用して書き込みデータをマージすることにより、先行フルライトアクセスと後続パーシャルライトアクセスの組み合わせのケースを除いて、ストアマージ処理を行うようにした方式が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開2012-043202号公報
【特許文献２】特開平09-282221号公報
【特許文献３】特開平05-181742号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
主記憶装置あるいはキャッシュ等の記憶装置に対する書き込みアクセスには、フルライトアクセス及びパーシャルライトアクセスのように、書き込みデータを構成するブロックデータのサイズが異なるアクセスが存在する場合がある。このような場合が存在するシステムにおいてストアマージ処理を行う場合、書き込みデータをまとめる単位を揃えることなどを考慮する必要があり、ストアマージ処理を簡易なハードウェア構成で実現することは難しいという課題がある。
【０００８】
上述した特許文献１乃至２は、書き込みデータに係るブロックサイズが異なるアクセスが存在する場合におけるストアマージ処理を行う技術については特に言及していない。
【０００９】
また、特許文献３は、書き込みデータに係るブロックサイズが異なるアクセスが存在する場合におけるストアマージ処理について言及しているものの、ストアマージ処理を行うケースに関する制限が大きく、上述の課題を解決するためには不十分である。
【００１０】
本願発明の主たる目的は、この課題を解決した、ストアマージ処理装置、ストアマージ処理システム、ストアマージ処理方法、及び、ストアマージ処理プログラムを提供することである。
【課題を解決するための手段】
【００１１】
本願発明に係るストアマージ処理装置は、記憶装置に対してデータを書き込む際のブロックサイズが異なる複数の書き込み命令を発行する中央処理装置から発行された、アクセスアドレスが所定の領域内にあり、かつ、前記ブロックサイズが等しい複数の前記書き込み命令に関して、前記ブロックサイズを識別する識別情報と、複数のブロックデータと、前記所定の領域の場所を示すアドレス情報と、個々の前記ブロックデータについて格納していることを示す格納情報と、を関連付けて記憶するエントリを複数備えた記憶手段と、前記中央処理装置から発行された前記書き込み命令について、前記識別情報が一致し、かつ、前記アドレス情報から特定される前記所定の領域が前記アクセスアドレスを包含する前記エントリが存在する場合、当該書き込み命令に包含される前記ブロックデータを、当該エントリにおける、前記アクセスアドレスにより特定される場所に格納して、当該ブロックデータに関する前記格納情報を更新する更新手段と、を備えることを特徴とする。
【００１２】
上記目的を達成する他の見地において、本願発明のストアマージ処理方法は、情報処理装置によって、記憶装置に対してデータを書き込む際のブロックサイズが異なる複数の書き込み命令を発行する中央処理装置から発行された、アクセスアドレスが所定の領域内にあり、かつ、前記ブロックサイズが等しい複数の前記書き込み命令に関して、前記ブロックサイズを識別する識別情報と、複数のブロックデータと、前記所定の領域の場所を示すアドレス情報と、個々の前記ブロックデータについて格納していることを示す格納情報と、を関連付けて複数のエントリのいずれかに記憶し、前記中央処理装置から発行された前記書き込み命令について、前記識別情報が一致し、かつ、前記アドレス情報から特定される前記所定の領域が前記アクセスアドレスを包含する前記エントリが存在する場合、当該書き込み命令に包含される前記ブロックデータを、当該エントリにおける、前記アクセスアドレスにより特定される場所に格納して、当該ブロックデータに関する前記格納情報を更新することを特徴とする。
【００１３】
また、上記目的を達成する更なる見地において、本願発明に係るストアマージ処理プログラムは、記憶装置に対してデータを書き込む際のブロックサイズが異なる複数の書き込み命令を発行する中央処理装置から発行された、アクセスアドレスが所定の領域内にあり、かつ、前記ブロックサイズが等しい複数の前記書き込み命令に関して、前記ブロックサイズを識別する識別情報と、複数のブロックデータと、前記所定の領域の場所を示すアドレス情報と、個々の前記ブロックデータについて格納していることを示す格納情報と、を関連付けて複数のエントリのいずれかに記憶する記憶処理と、前記中央処理装置から発行された前記書き込み命令について、前記識別情報が一致し、かつ、前記アドレス情報から特定される前記所定の領域が前記アクセスアドレスを包含する前記エントリが存在する場合、当該書き込み命令に包含される前記ブロックデータを、当該エントリにおける、前記アクセスアドレスにより特定される場所に格納して、当該ブロックデータに関する前記格納情報を更新する更新処理と、をコンピュータに実行させることを特徴とする。
【００１４】
更に、本発明は、係る情報読取プログラム（コンピュータプログラム）が格納された、コンピュータ読み取り可能な、不揮発性の記憶媒体によっても実現可能である。
【発明の効果】
【００１５】
本願発明は、記憶装置への書き込みデータに係るブロックサイズが異なるアクセスが存在する場合においても、ストアマージ処理を簡易なハードウェアにより実現することを可能とする。
【図面の簡単な説明】
【００１６】
【図１】本願発明の第１の実施形態に係るストアマージ処理システムの構成を示すブロック図である。
【図２Ａ】本願発明の第１の実施形態におけるストアマージ処理システムの動作を示すフローチャート（１／３）である。
【図２Ｂ】本願発明の第１の実施形態におけるストアマージ処理システムの動作を示すフローチャート（２／３）である。
【図２Ｃ】本願発明の第１の実施形態におけるストアマージ処理システムの動作を示すフローチャート（３／３）である。
【図３】本願発明の第１の実施形態における中央処理装置から発行される主記憶装置への書き込み命令の構成例を示す図である。
【図４】本願発明の第１の実施形態におけるストアバッファアドレスアレイの各エントリが格納する情報の構成例を示す図である。
【図５】本願発明の第１の実施形態における更新部の詳細構成を示すブロック図である。
【図６】本願発明の第１の実施形態における生成部が生成する主記憶装置への書き込み命令の一覧を示す図である。
【図７】本願発明の第１の実施形態における生成部が生成する主記憶装置への書き込み命令に係る具体例を示す図である。
【図８】本願発明の第２の実施形態に係るストアマージ処理装置の構成を示すブロック図である。
【図９】本願発明の各実施形態のストアマージ処理装置を実行可能な情報処理装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１７】
以下、本願発明の実施の形態について図面を参照して詳細に説明する。
【００１８】
＜第１の実施形態＞
図１は第１の実施形態のストアマージ処理システム１の構成を概念的に示すブロック図である。本実施形態のストアマージ処理システム１は、ストアマージ処理装置１０、中央処理装置２０、及び、主記憶装置３０を有している。
【００１９】
中央処理装置２０は、主記憶装置２０に対する書き込み命令２００を発行して、書き込みデータ２１０とともに、ストアマージ処理装置１０へ送信する。中央処理装置２０に係る入出力インタフェースのバス幅は８バイト（以降本願ではバイトをＢと記述する）であり、書き込みデータ２１０は８Ｂデータとする。
【００２０】
書き込み命令２００の構成例を図３に示す。書き込み命令２００は、図３（ａ）に示す通り、ブロックサイズ識別情報２０１、アドレス（上位）２０２、アドレス（中位）２０３、アドレス（下位）２０４、及び、ブロック別イネーブル情報２０５を包含している。
【００２１】
ブロックサイズ識別情報２０１は、書き込み命令２００に係る書き込みデータ２１０のブロックサイズを識別する情報であり、４Ｂブロックサイズであるフルライト命令の場合は「１」、１Ｂブロックサイズであるパーシャルライト命令の場合は「０」が中央処理装置２０により設定されている。アドレス（上位）２０２、アドレス（中位）２０３、アドレス（下位）２０４は、書き込み命令２００に係る主記憶装置３０におけるアクセスアドレスであり、それぞれ、アクセスアドレスの上位ビット、中位ビット、下位ビットである。
【００２２】
ブロック別イネーブル情報２０５は、書き込みデータ２１０における各ブロックデータが有効か否かを示す８ビット情報である。図３（ｂ−１）に示す通り、書き込み命令２００がフルライト命令である場合、ブロック別イネーブル情報２０５は、書き込みデータ２１０に包含される２個の４Ｂデータがそれぞれ有効か否かを示している。この場合、ブロック別イネーブル情報における残りの６ビットは未使用である。図３（ｂ−２）に示す通り、書き込み命令２００がパーシャルライト命令である場合、ブロック別イネーブル情報２０５は、書き込みデータ２１０に包含される８個の１Ｂデータがそれぞれ有効か否かを示している。
【００２３】
ストアマージ処理装置１０は、受信した複数の書き込み命令２００及び書き込みデータ２１０に関して、ストアマージ処理を行うことが可能な場合は、ストアマージ処理を行った後、複数の書き込み命令を１つにまとめた書き込み命令を、主記憶装置３０へ送信する。
【００２４】
主記憶装置３０は、ストアマージ処理装置１０から受信した書き込み命令に従い、指定されたアドレスにデータを書き込む。尚、主記憶装置３０へアクセスする際のラインサイズは１２８Ｂとする。
【００２５】
ストアマージ処理装置１０は、記憶部１１、更新部１２、及び、生成部１３を備えている。記憶部１１は、電子回路、あるいは、コンピュータプログラムとそのコンピュータプログラムに従って動作するプロセッサによりアクセス制御される、電子メモリ等の記憶デバイスである。更新部１２及び生成部１３は、電子回路の場合もあれば、コンピュータプログラムとそのコンピュータプログラムに従って動作するプロセッサによって実現される場合もある。
【００２６】
記憶部１１は、ストアバッファアドレスアレイ１１０と、ストアバッファデータアレイ１１１と、を備えている。ストアバッファアドレスアレイ１１０は、主記憶装置３０における特定のアドレスへの書き込みについて、ストアマージ処理が可能か否かを更新部１２が判定するための材料となる情報を格納するエントリを複数備えている。ストアバッファデータアレイ１１１は、ストアバッファアドレスアレイ１１０における各エントリに関連付けられた、主記憶装置３０への書き込みデータを格納している。ストアバッファデータアレイ１１１における各エントリは、主記憶装置３０に対する１ライン分の書き込みデータとして、フルライト命令に関しては１２８Ｂ、パーシャルライト命令に関しては３２Ｂのデータを格納している。ストアバッファアドレスアレイ１１０、及び、ストアバッファデータアレイ１１１における１つのエントリは、１つの特定のアドレスに関する情報を格納し、更新部１２により登録及び更新される。
【００２７】
ストアバッファアドレスアレイ１１０における各エントリが格納する情報の構成例を図４に示す。各エントリは、Ｖａｌｉｄ情報１１０１、ブロックサイズ識別情報１１０２、アドレス情報１１０３、及び、ブロックデータ格納情報１１０４を関連付けて格納している。Ｖａｌｉｄ情報１１０１は、当該エントリが有効であるか否かを示す情報であり、当該エントリが有効である場合は「１」、当該エントリが有効でない、すなわち未使用である場合は「０」に設定されている。ブロックサイズ識別情報１１０２は、当該エントリがフルライト命令のアクセスデータに係るエントリであるか、あるいは、パーシャルライト命令のアクセスデータに係るエントリであるのかを示す情報であり、前者の場合は「０」、後者の場合は「１」に設定されている。
【００２８】
アドレス情報１１０３は、主記憶装置３０に対するアクセスアドレスに係る情報である。ブロックデータ格納情報１１０４は、当該エントリに関連する、主記憶装置３０への書き込みデータとしてストアマージ処理が行われたどうかを、書き込みデータにおけるブロックデータごとに示す３２ビット情報である。ブロックデータ格納情報１１０４は、３２個のフラグを包含する。ブロックデータ格納情報１１０４における各フラグは、フルライト命令に関しては、４Ｂブロックごとの情報を示し、パーシャルライト命令に関しては、１Ｂブロックごとの情報を示している。
【００２９】
更新部１２の詳細構成を図５に示す。図５はまた、更新部１２がストアバッファアドレスアレイ１１０及びストアバッファデータアレイ１１１におけるエントリを更新する際に、書き込み命令２００に包含される情報をどのように使用するのかについて示している。
【００３０】
図５に示す通り、ストアバッファアドレスアレイ１１０及びストアバッファデータアレイ１１１は、主記憶装置３０におけるアドレス（中位）２０３が等しいアドレスごとにｍ個（ｍは１以上の整数）のエントリを備えた、ｍウェイのセットアソシアティブ方式により情報を格納する。ストアバッファアドレスアレイ１１０における各エントリは、アドレス情報１１０３として、アドレス（上位）２０２が示す値を格納している。
【００３１】
更新部１２は、中央処理装置２０から発行された、主記憶装置３０への書き込み命令２００、及び、書き込みデータ２０１を受信する。更新部１２におけるサーチ回路１２０は、ストアバッファアドレスアレイ１１０における、アドレス（中位）２０３により指定されるｍ個のエントリの中から、アドレス情報１１０３がアドレス（上位）２０３と等しく、かつ、Ｖａｌｉｄ情報１１０１が「１」であるエントリをサーチする。サーチ回路１２０は、サーチ結果を、更新部１２における選択回路１２１へ入力する。
【００３２】
更新部１２は、サーチ回路１２０がサーチして特定したエントリにおけるブロックサイズ識別情報１１０２と、書き込み命令２００におけるブロックサイズ識別情報２０１が等しい場合、ブロックデータに関するブロック別イネーブル情報２０５が「１」に設定されたブロックデータに関して、ブロックサイズ識別情報２０１及びアドレス（下位）２０４が示す値からブロックデータの位置を特定する。更新部１２は、ブロックデータ格納情報１１０４における、当該ブロックデータに関するフラグを「１」にセットする。選択回路１２１は、サーチ回路１２０から入力されたサーチ結果を基に、ストアバッファデータアレイ１１１における、上述したエントリに関連付けられたエントリを選択する。更新部１２は、選択回路１２１が選択したエントリに、ブロックサイズ識別情報２０１、アドレス（下位）２０４、及び、ブロック別イネーブル情報２０５が示す値から特定されるブロックデータをストアバッファデータ１１１０として格納する。
【００３３】
サーチ回路１２０は、アドレス情報１１０３がアドレス（上位）２０３と等しく、かつ、Ｖａｌｉｄ情報１１０１が「１」であるエントリが、上述したｍ個のエントリの中に１つも存在しない場合、そのｍ個のエントリの中から、Ｖａｌｉｄ情報１１０１が「０」である未使用エントリが存在するかどうかを確認する。サーチ回路１２０は、未使用エントリが少なくとも１つ以上存在する場合、未使用エントリの何れかを選択し、選択結果を選択回路１２１へ入力する。更新部１２は、当該エントリにおけるＶａｌｉｄ情報１１０１を「１」に設定し、ブロックサイズ識別情報１１０２をブロックサイズ識別情報２０１が示す値に設定し、アドレス情報１１０３をアドレス（上位）２０２が示す値に設定する。選択回路１２１は、サーチ回路１２０から入力された選択結果を基に、ストアバッファデータアレイ１１１における、上述したエントリに関連付けられたエントリを選択する。更新部１２は、選択回路１２１が選択したエントリに、ブロックサイズ識別情報２０１、アドレス（下位）２０４、及び、ブロック別イネーブル情報２０５が示す値から特定されるブロックデータをストアバッファデータ１１１０として格納する。
【００３４】
サーチ回路１２０は、上述した未使用エントリが存在するかどうかの確認結果において、未使用エントリがｍ個のエントリの中に１つも存在しない場合、そのｍ個のエントリの中から何れかのエントリを所定の基準に従って選択する。所定の基準としては、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）等のアルゴリズムがある。サーチ回路１２０は、選択結果を選択回路１２１へ入力する。選択回路１２１は、サーチ回路１２０から入力された選択結果を基に、ストアバッファデータアレイ１１１における、上述したエントリに関連付けられたエントリを選択する。更新部１２は、サーチ回路１２０が選択したストアバッファアドレスアレイ１１０におけるエントリ、及び、選択回路１２１が選択したストアバッファデータアレイ１１１におけるエントリに格納されていた情報を、生成部１３へ入力する。更新部１２は、上述と同様に、サーチ回路１２０が選択したエントリに、ブロックサイズ識別情報１１０２、アドレス情報１１０３、及び、ブロックデータ格納情報１１０４に係る値を設定し、選択回路１２１が選択したエントリに、ブロックデータをストアバッファデータ１１１０として格納する。
【００３５】
更新部１２は、サーチ回路１２０がサーチして特定した、アドレス情報１１０３がアドレス（上位）２０３と等しく、かつ、Ｖａｌｉｄ情報１１０１が「１」であるエントリにおいて、ブロックサイズ識別情報１１０２が示す値と、書き込み命令２００におけるブロックサイズ識別情報２０１が示す値が異なる場合、上述と同様に、サーチ回路１２０及び選択回路１２１が選択したエントリに格納されていた情報を、生成部１３へ入力する。更新部１２は、サーチ回路１２０及び選択回路１２１が選択したエントリに、上述と同様に値を入力する。
【００３６】
生成部１３は、更新部１２から入力された情報を基に、主記憶装置３０への書き込み命令を生成し、生成した書き込み命令を、書き込みデータとともに、主記憶装置３０へ送信する。
【００３７】
生成部１３が生成する主記憶装置３０への書き込み命令の例を図６乃至７に示す。生成部１３は、ブロックサイズ識別情報１１０２及びブロックデータ格納情報１１０４が示す値に基づき、生成部１３が生成する主記憶装置３０への書き込み命令一覧１３０に示す通り、書き込み命令を生成する。
【００３８】
例えば、ブロックサイズ識別情報１１０２がフルライトを示し、ブロックデータ格納情報１１０４に係る３２ビットが全て「１」であるケース１の場合、生成部１３は１２８Ｂ書き込み命令を１回生成する。ブロックサイズ識別情報１１０２がパーシャルライトを示し、ブロックデータ格納情報１１０４に係る３２ビットが全て「１」であるケース５の場合、生成部１３は３２Ｂ書き込み命令を１回生成する。ケース１及びケース５は、図７（ａ）に示す通りである。
【００３９】
ブロックサイズ識別情報１１０２がフルライトを示し、ブロックデータ格納情報１１０４に係る上半分あるいは下半分の１６ビットが全て「１」であるケース２の場合（ケース１に該当する場合を除く）、生成部１３は６４Ｂ書き込み命令を１回生成する。ブロックサイズ識別情報１１０２がパーシャルライトを示し、ブロックデータ格納情報１１０４に係る上半分あるいは下半分の１６ビットが全て「１」であるケース６の場合（ケース５に該当する場合を除く）、生成部１３は１６Ｂ書き込み命令を１回生成する。ケース２及びケース６は、図７（ｂ）に示す通りである。
【００４０】
ブロックデータ格納情報１１０４が、図７（ｃ）に示す値である場合、ブロックサイズ識別情報１１０２がフルライトを示しているときは、生成部１３は、４Ｂ書き込み命令を７回、及び、３２Ｂ書き込み命令を１回生成する。ブロックサイズ識別情報１１０２がパーシャルライトを示しているときは、生成部１３は、１Ｂ書き込み命令を７回、及び、３２Ｂ書き込み命令を１回生成する。
【００４１】
次に図２Ａ乃至２Ｃのフローチャートを参照して、本実施形態におけるストアマージ処理システム１の動作（処理）について詳細に説明する。
【００４２】
更新部１２は、中央処理装置２０から発行された、主記憶装置３０への書き込み命令２００、及び、書き込みデータ２１０を受信する（ステップＳ１０１）。更新部１２は、ストアバッファアドレスアレイ１１０における、アドレス（中位）２０３により指定されるｍ個のエントリの中から、アドレス情報１１０３がアドレス(上位）２０２と等しく、かつ、Ｖａｌｉｄ情報１１０１が「１」であるエントリをサーチする（ステップＳ１０２）。
【００４３】
何れかのエントリがヒットした場合（ステップＳ１０３でＹｅｓ）、更新部１２は、ヒットしたエントリにおけるブロックサイズ識別情報１１０２と、ブロックサイズ識別情報２０１とを比較する（ステップＳ１０４）。値が等しい場合（ステップＳ１０５でＹｅｓ）、更新部１２は、当該エントリのブロックデータ格納情報１１０４における、ブロックサイズ識別情報２０１とアドレス（下位）２０４とブロック別イネーブル情報２０５とから特定されるフラグを「１」にセットする（ステップＳ１０６）。更新部１２は、ストアバッファデータアレイ１１１における、当該エントリに関連するエントリに、ブロックサイズ識別情報２０１とアドレス（下位）２０４とブロック別イネーブル情報２０５とから特定されるブロックデータを格納し（ステップＳ１０７）、全体の処理は終了する。
【００４４】
ステップＳ１０３において、ヒットしたエントリが無い場合（ステップＳ１０３でＮｏ）、更新部１２は、ストアバッファアドレスアレイ１１０における、アドレス（中位）２０３により指定されるｍ個のエントリの中から、Ｖａｌｉｄ情報１１０１が「０」である未使用エントリが存在するかどうか確認する（ステップＳ２０１）。未使用エントリが存在する場合（ステップＳ２０２でＹｅｓ）、更新部１２は、未使用エントリの何れかを選択して、当該エントリにおけるＶａｌｉｄ情報１１０１を「１」に、ブロックサイズ識別情報１１０２をブロックサイズ識別情報２０１が示す値に、アドレス情報１１０３をアドレス（上位）２０２が示す値にセットし（Ｓ２０３）、処理はステップＳ１０６へ進む。
【００４５】
ステップＳ２０２において、未使用エントリが存在しない場合（ステップＳ２０２でＮｏ）、更新部１２は、ストアバッファアドレスアレイ１１０における、アドレス（中位）２０３により指定されるｍ個のエントリの中から、何れかのエントリを所定の基準により選択する（ステップＳ３０１）。更新部１２は、選択したエントリ、及び、当該エントリに関連付けられた、ストアバッファデータアレイ１１１におけるエントリに格納されていた情報を、生成部１３へ入力する（ステップＳ３０２）。
【００４６】
生成部１３は、入力された情報を基に、主記憶装置３０への書き込み命令を生成し、生成した書き込み命令を、書き込みデータとともに、主記憶装置３０へ送信する（ステップＳ３０３）。更新部１２は、当該エントリにおけるブロックサイズ識別情報１１０２をブロックサイズ識別情報２０１が示す値に、アドレス情報１１０３をアドレス（上位）２０２が示す値にセットし（ステップＳ３０４）、処理はステップＳ１０６へ進む。
【００４７】
ステップＳ１０５において、値が異なる場合（ステップＳ１０５でＮｏ）、更新部１２は、ヒットしたエントリ、及び、当該エントリに関連付けられた、ストアバッファデータアレイ１１１におけるエントリに格納されていた情報を、生成部１３へ入力し（ステップＳ３０５）、処理はステップＳ３０３へ進む。
【００４８】
本実施形態に係るストアマージ装置１０は、記憶装置への書き込みデータに係るブロックサイズが異なるアクセスが存在する場合においても、ストアマージ処理を簡易なハードウェアにより実現することができる。その理由は、記憶部１１における各エントリが、ブロックサイズ識別情報１１０２を記憶し、更新部１２が、受信した書き込み命令２００とブロックサイズ及びアクセスアドレスが等しい書き込み命令に関するエントリが記憶した情報を基に、書き込み命令２００に係るストアマージ処理を行うからである。
【００４９】
記憶装置への書き込みデータに係るブロックサイズが異なるアクセスが存在するシステムにおいて、同じアドレス領域に対して、異なるブロックサイズのデータを書き込む場合がある。このような場合であってもストアマージ処理を行う場合、異なるブロックサイズのデータをマージすることになるため、ストアマージ処理を行うハードウェアのサイズが大きくなる問題がある。
【００５０】
本実施形態におけるストアマージ処理装置１０は、記憶部１１における各エントリが、ブロックサイズ識別情報１１０２を記憶し、更新部１２が、受信した書き込み命令２００とブロックサイズ及びアクセスアドレスが等しい書き込み命令に関するエントリが存在する場合に、ストアマージ処理を実行する。すなわち、ストアマージ処理装置１０は、同じアドレス領域に対して、ブロックサイズが等しいデータを書き込む場合であることを確認してからストアマージ処理を行うため、異なるブロックサイズのデータをマージする機能を有する必要はない。したがって、ストアマージ処理装置１０は、記憶装置への書き込みデータに係るブロックサイズが異なるアクセスが存在するシステムにおいても、ストアマージ処理を簡易なハードウェアにより実現することができる。
【００５１】
また、本実施形態における生成部１３は、更新部１２から入力されたブロックデータ格納情報１１０４が、アクセスアドレスが連続する複数のブロックデータがストアマージ処理された状態であることを示している場合、複数のブロックデータをまとめて主記憶装置３０に書き込む書き込み命令を生成する。したがって、ストアマージ処理装置１０は、主記憶装置３０への書き込みアクセス回数を削減することにより、主記憶装置３０へのアクセス性能を向上することができる。
【００５２】
尚、ストアマージ処理装置１０がデータを書き込む対象は、主記憶装置に限定されるわけではなく、例えばキャッシュ等の記憶装置の場合もある。
【００５３】
また、本実施形態では、中央処理装置３０は、フルライトアクセスとパーシャルライトアクセスの２種類のブロックサイズの書き込み命令を発行するが、中央処理装置３０が、３種類以上のブロックサイズの書き込み命令を発行してもよい。その場合、各エントリにおけるブロックサイズ識別情報１１０２は、３種類以上のブロックサイズを識別する値を示し、ストアマージ処理装置１０は、同じアドレス領域に対して、等しいブロックサイズのデータを書き込む場合にストアマージ処理を実行する。
【００５４】
＜第２の実施形態＞
図８は第２の実施形態のストアマージ処理装置４０の構成を概念的に示すブロック図である。
【００５５】
本実施形態のストアマージ処理装置４０は、記憶部４１、及び、更新部４２を備えている。
【００５６】
記憶部４１は、ブロックサイズが異なる書き込み命令を発行可能な外部装置５０から発行された複数の書き込み命令を受信する。記憶部４１は、ｎ個（ｎは２以上の整数）のエントリ４１０−１乃至ｎを備えている。個々のエントリ４１０−１乃至ｎは、アクセスアドレスが所定の領域内にあり、かつ、記憶装置６０に対してデータを書き込む際のブロックサイズが等しい複数の書き込み命令に関して、ブロックサイズを識別する識別情報と、複数のブロックデータと、所定の領域の場所を示すアドレス情報と、個々のブロックデータについて格納していることを示す格納情報と、を関連付けた状態で記憶する。
【００５７】
更新部４２は、書き込み命令について、ブロックサイズを識別する識別情報が一致し、かつ、アドレス情報から特定される所定の領域がアクセスアドレスを包含するエントリが存在する場合、当該書き込み命令に包含されるブロックデータを、当該エントリにおける、アクセスアドレスにより特定される場所に格納する。更新部４２は、それとともに、当該ブロックデータに関する格納情報を更新する。
【００５８】
本実施形態は、記憶装置への書き込みデータに係るブロックサイズが異なるアクセスが存在する場合においても、ストアマージ処理を簡易なハードウェアにより実現することができる。その理由は、記憶部４１における各エントリが、ブロックサイズを識別する識別情報を記憶し、更新部４２が、受信した書き込み命令とブロックサイズ及びアクセスアドレスが等しい書き込み命令に関するエントリが記憶した情報を基に、受信した書き込み命令に係るストアマージ処理を行うからである。
【００５９】
＜ハードウェア構成例＞
上述した各実施形態において図１、及び、図８に示した各部は、ソフトウェアプログラムの機能（処理）単位（ソフトウェアモジュール）と捉えることができる。但し、これらの図面に示した各部の区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。この場合のハードウェア環境の一例を、図９を参照して説明する。
【００６０】
図９は、本発明の模範的な実施形態に係るストアマージ処理装置を実行可能な情報処理装置９００（コンピュータ）の構成を例示的に説明する図である。即ち、図９は、図１、及び、図８に示したストアマージ処理装置を実現可能なコンピュータ（情報処理装置）の構成であって、上述した実施形態における各機能を実現可能なハードウェア環境を表す。
【００６１】
図９に示した情報処理装置９００は、ＣＰＵ９０１（Ｃｅｎｔｒａｌ＿Ｐｒｏｃｅｓｓｉｎｇ＿Ｕｎｉｔ）、ＲＯＭ９０２（Ｒｅａｄ＿Ｏｎｌｙ＿Ｍｅｍｏｒｙ）、ＲＡＭ９０３（Ｒａｎｄｏｍ＿Ａｃｃｅｓｓ＿Ｍｅｍｏｒｙ）を備え、これらの構成がバス９０６（通信線）を介して接続された一般的なコンピュータである。
【００６２】
そして、上述した実施形態を例に説明した本発明は、図９に示した情報処理装置９００に対して、その実施形態の説明において参照したブロック構成図（図１、及び、図８）或いはフローチャート（図２Ａ乃至２Ｃ）の機能を実現可能なコンピュータプログラムを供給した後、そのコンピュータプログラムを、当該ハードウェアのＣＰＵ９０１に読み出して解釈し実行することによって達成される。また、当該装置内に供給されたコンピュータプログラムは、読み書き可能な揮発性の記憶メモリ（ＲＡＭ９０３）等の不揮発性の記憶デバイスに格納すれば良い。
【００６３】
以上、上述した実施形態を模範的な例として本発明を説明した。しかしながら、本発明は、上述した実施形態には限定されない。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
【符号の説明】
【００６４】
１    ストアマージ処理システム
１０    ストアマージ処理装置
１１    記憶部
１１０    ストアバッファアドレスアレイ
１１１    ストアバッファデータアレイ
１１０１    Ｖａｌｉｄ情報
１１０２    ブロックサイズ識別情報
１１０３    アドレス情報
１１０４    ブロックデータ格納情報
１１１０    ストアバッファデータ
１２    更新部
１２０    サーチ回路
１２１    選択回路
１３    生成部
１３０    生成部１３が生成する主記憶装置３０への書き込み命令一覧
２０    中央処理装置
２００    書き込み命令
２０１    ブロックサイズ識別情報
２０２    アドレス（上位）
２０３    アドレス（中位）
２０４    アドレス（下位）
２０５    ブロック別イネーブル情報
３０    主記憶装置
４０    ストアマージ処理装置
４１    記憶部
４１０−１乃至ｎ    エントリ
４２    更新部
５０    外部装置
６０    記憶装置
９００    情報処理装置
９０１    ＣＰＵ
９０２    ＲＯＭ
９０３    ＲＡＭ
９０６    バス
【図１】
2015049844.tif 000003
【図２Ａ】
2015049844.tif 000004
【図２Ｂ】
2015049844.tif 000005
【図２Ｃ】
2015049844.tif 000006
【図３】
2015049844.tif 000007
【図４】
2015049844.tif 000008
【図５】
2015049844.tif 000009
【図６】
2015049844.tif 000010
【図７】
2015049844.tif 000011
【図８】
2015049844.tif 000012
【図９】
2015049844.tif 000013
【手続補正書】
【提出日】平成26年8月1日(2014.8.1)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ブロックサイズが異なる書き込み命令を発行可能な外部装置から発行された複数の書き込み命令であって、上位アドレス及び下位アドレスを包含するアクセスアドレスの前記上位アドレスが等しく、かつ、記憶装置に対してデータを書き込む際のブロックサイズが等しい複数の第一の前記書き込み命令に関して、前記ブロックサイズを識別する識別情報と、複数のブロックデータと、前記上位アドレスを示すアドレス情報と、個々の前記ブロックデータについて格納していることを示す格納情報と、を関連付けた状態で記憶するエントリを複数備えた記憶手段と、
前記外部装置から新たに発行された第二の前記書き込み命令と、前記識別情報、及び、前記アドレス情報が一致する前記エントリが存在する場合、前記第二の書き込み命令に包含される前記ブロックデータを、当該エントリにおける、前記アクセスアドレスにより特定される場所に格納すると共に、当該ブロックデータに関する前記格納情報を更新する更新手段と、
を備えるストアマージ処理装置。
【請求項２】
前記エントリに格納された格納情報が、アクセスアドレスが連続する複数の前記ブロックデータが当該エントリに格納されていることを示している場合、当該エントリに格納された前記識別情報、前記アドレス情報、及び、前記格納情報を基に、複数の前記ブロックデータをまとめて前記記憶装置に書き込む書き込み命令を生成する生成手段
をさらに備える請求項１に記載のストアマージ処理装置。
【請求項３】
前記更新手段は、前記第二の書き込み命令について、前記識別情報、及び、前記アドレス情報が一致する前記エントリが存在せず、かつ、未使用の前記エントリが存在しない場合、所定の基準に従い前記エントリのいずれかを選択し、選択された前記エントリに格納された前記識別情報、前記ブロックデータ、前記アドレス情報、及び、前記格納情報を前記生成手段へ入力し、
前記生成手段は、前記更新手段から入力された、前記識別情報、前記ブロックデータ、前記アドレス情報、及び、前記格納情報を基に、前記記憶装置に書き込む書き込み命令を生成する、
請求項２に記載のストアマージ処理装置。
【請求項４】
請求項１乃至３の何れかに記載のストアマージ処理装置と、前記記憶装置と、を含むストアマージ処理システム。
【請求項５】
情報処理装置によって、
ブロックサイズが異なる書き込み命令を発行可能な外部装置から発行された複数の書き込み命令であって、上位アドレス及び下位アドレスを包含するアクセスアドレスの前記上位アドレスが等しく、かつ、記憶装置に対してデータを書き込む際のブロックサイズが等しい複数の第一の前記書き込み命令に関して、前記ブロックサイズを識別する識別情報と、複数のブロックデータと、前記上位アドレスを示すアドレス情報と、個々の前記ブロックデータについて格納していることを示す格納情報と、を関連付けた状態で複数のエントリのいずれかに記憶し、
前記外部装置から新たに発行された第二の前記書き込み命令と、前記識別情報、及び、前記アドレス情報が一致する前記エントリが存在する場合、前記第二の書き込み命令に包含される前記ブロックデータを、当該エントリにおける、前記アクセスアドレスにより特定される場所に格納すると共に、当該ブロックデータに関する前記格納情報を更新する、
ストアマージ処理方法。
【請求項６】
情報処理装置によって、
前記エントリに格納された格納情報が、アクセスアドレスが連続する複数の前記ブロックデータが当該エントリに格納されていることを示している場合、当該エントリに格納された前記識別情報、前記アドレス情報、及び、前記格納情報を基に、複数の前記ブロックデータをまとめて前記記憶装置に書き込む書き込み命令を生成する
請求項５に記載のストアマージ処理方法。
【請求項７】
情報処理装置によって、
前記第二の書き込み命令について、前記識別情報、及び、前記アドレス情報が一致する前記エントリが存在せず、かつ、未使用の前記エントリが存在しない場合、所定の基準に従い前記エントリのいずれかを選択し、
選択された前記エントリに格納された、前記識別情報、前記ブロックデータ、前記アドレス情報、及び、前記格納情報を基に、前記記憶装置に書き込む書き込み命令を生成する、
請求項６に記載のストアマージ処理方法。
【請求項８】
ブロックサイズが異なる書き込み命令を発行可能な外部装置から発行された複数の書き込み命令であって、上位アドレス及び下位アドレスを包含するアクセスアドレスの前記上位アドレスが等しく、かつ、記憶装置に対してデータを書き込む際のブロックサイズが等しい複数の第一の前記書き込み命令に関して、前記ブロックサイズを識別する識別情報と、複数のブロックデータと、前記上位アドレスを示すアドレス情報と、個々の前記ブロックデータについて格納していることを示す格納情報と、を関連付けた状態で複数のエントリのいずれかに記憶する記憶処理と、
前記外部装置から新たに発行された第二の前記書き込み命令と、前記識別情報、及び、前記アドレス情報が一致する前記エントリが存在する場合、前記第二の書き込み命令に包含される前記ブロックデータを、当該エントリにおける、前記アクセスアドレスにより特定される場所に格納すると共に、当該ブロックデータに関する前記格納情報を更新する更新処理と、
をコンピュータに実行させるストアマージプログラム。
【請求項９】
前記エントリに格納された格納情報が、アクセスアドレスが連続する複数の前記ブロックデータが当該エントリに格納されていることを示している場合、当該エントリに格納された前記識別情報、前記アドレス情報、及び、前記格納情報を基に、複数の前記ブロックデータをまとめて前記記憶装置に書き込む書き込み命令を生成する生成処理
をコンピュータに実行させる請求項８のストアマージプログラム。
【請求項１０】
前記第二の書き込み命令について、前記識別情報、及び、前記アドレス情報が一致する前記エントリが存在せず、かつ、未使用の前記エントリが存在しない場合、所定の基準に従い前記エントリのいずれかを選択し、選択された前記エントリに格納された前記識別情報、前記ブロックデータ、前記アドレス情報、及び、前記格納情報を前記生成処理へ入力し、
前記更新処理から入力された、前記識別情報、前記ブロックデータ、前記アドレス情報、及び、前記格納情報を基に、前記記憶装置に書き込む書き込み命令を生成する前記生成処理と、
をコンピュータに実行させる請求項９のストアマージプログラム。