(57)【特許請求の範囲】
【請求項１】
記憶領域がアドレスによって定められるメモリと、
前記メモリの特定アドレスに対するパーシャルストア命令を受けて、そのパーシャルストア命令によって指定された内容を保存するよう制御するストアマージ制御回路と、
前記パーシャルストア命令を受けた後に、前記特定アドレスに対するロード命令を受けた場合に、前記ストアマージ制御回路の制御によって保存されている前記パーシャルストア命令によって指定された内容と、前記ロード命令の内容とを基に、ストアロード命令を生成するストアロード命令生成回路とを備える
ことを特徴とする命令処理装置。
【請求項２】
前記ストアマージ制御回路は、
前記パーシャルストア命令を受けた後であって前記ロード命令を受ける前に、前記アドレスに対する第二のパーシャルストア命令を受けた場合に、その第二のパーシャルストア命令によって指定された内容を、保存済みの前記パーシャルストア命令によって指定された内容にマージしてから保存するよう制御する
ことを特徴とする請求項１記載の命令処理装置。
【請求項３】
前記ストアマージ制御回路は、
前記パーシャルストア命令の処理対象である前記メモリのアドレスと、
前記パーシャルストア命令によって更新すべき内容を含む前記メモリに１回でアクセス可能な長さを有するデータと、
前記データのうち、前記パーシャルストア命令により更新すべき位置を示す情報とを、
前記パーシャルストア命令によって指定された内容を基に保存する
ことを特徴とする請求項１または２記載の命令処理装置。
【請求項４】
前記メモリを対象として、前記ストアロード命令を実行する命令実行制御回路をさらに備える
ことを特徴とする請求項１乃至３の何れかに記載の命令処理装置。
【請求項５】
前記命令実行制御回路は、
前記メモリのビジー状態を管理し、前記ストアロード命令の処理対象である前記メモリがビジー状態の場合には、そのビジー状態が解消されるまで待機した後に、前記ストアロード命令を実行する
ことを特徴とする請求項４記載の命令処理装置。
【請求項６】
記憶領域がアドレスによって定められるメモリの特定アドレスに対するパーシャルストア命令を受けて、そのパーシャルストア命令によって指定された内容を記憶デバイスに保存し、
前記パーシャルストア命令を受けた後に、前記特定アドレスに対するロード命令を受けた場合に、前記記憶デバイスに保存されている前記パーシャルストア命令によって指定された内容と、前記ロード命令の内容とを基に、ストアロード命令を生成する
ことを特徴とする命令処理方法。
【請求項７】
前記パーシャルストア命令を受けた後であって前記ロード命令を受ける前に、前記アドレスに対する第二のパーシャルストア命令を受けた場合に、その第二のパーシャルストア命令によって指定された内容を、前記記憶デバイスに保存されている前記パーシャルストア命令によって指定された内容にマージしてから保存する
ことを特徴とする請求項６記載の命令処理方法。
【請求項８】
前記パーシャルストア命令の処理対象である前記メモリのアドレスと、
前記パーシャルストア命令によって更新すべき内容を含む前記メモリに１回でアクセス可能な長さを有するデータと、
前記データのうち、前記パーシャルストア命令により更新すべき位置を示す情報とを、
前記パーシャルストア命令によって指定された内容を基に保存する
ことを特徴とする請求項６または７記載の命令処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、命令処理装置およびその命令処理方法に関する。
【背景技術】
【０００２】
記憶装置（メモリ）に対する書き込み命令には、記憶装置と他の装置との接続を可能なデータ幅（例えば、８バイト）の全幅のデータを書き込む全書き込み（フルストア）命令と、データの一部（例えば８バイトの中の３バイト）を書き換える部分書き込み命令があり、一般的には、部分書き込み命令の比率が多い。以下、本願では、係る部分書き込み命令を「パーシャルストア命令」と称する。このパーシャルストア命令を実行するためには、一旦、その命令によって指定するアドレスのデータを記憶装置から読み出し、部分書き込みする一部データとマージを行って、再び元の記憶装置に書き込む。
【０００３】
近年、コンピュータに接続されるメモリが増大したため、メモリコントローラは、コンピュータに内蔵されたメモリを、メモリバンク（単にバンクともいう）と呼ばれる単位で管理している。メモリバンクは、メモリをある程度の容量ごとに区分けしたものである。メモリに対するアクセス要求が発生すると、メモリコントローラは、対象となるメモリバンクを選択し、選択したメモリバンクに対してだけアクセスすることで処理の効率を上げている。
【０００４】
このような複数のメモリバンク構成を持つコンピュータにおいて、同一アドレスに対するパーシャルストア命令が頻発して発行された場合に、同一メモリバンクに対するビジー時間の増大によりメモリスループット性能が低下してしまう。これを改善する方法として、特許文献１および特許文献２は、同一アドレスに対する複数のパーシャルストア命令によって指定されたストアデータをマージすることにより、メモリアクセス回数を低減させて、メモリスループット性能の向上を図る技術を開示する。
【０００５】
しかし、パーシャルストア命令の後続に同一アドレスに対するロード命令を受け付けた場合、同一バンクに対するアクセスになるため、同一バンクにおいてビジー状態が発生する。その結果、メモリを効率良く使えず、メモリスループット性能を低下させてしまう。
【０００６】
ここで、本願出願に先だって存在する関連技術としては、例えば以下の特許文献がある。
【０００７】
特許文献３および特許文献４は、ストア命令に、同一アドレスに対するロード命令が続く場合に、ストア命令の実行を待たずにロードデータを生成する技術を開示する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開昭６３−０９１７５６号公報
【特許文献２】特開昭６３−１０３３４２号公報
【特許文献３】特開平０５−０４０６２９号公報
【特許文献４】特表２００９−５４０４１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献３及び４に提案されている技術は、ストア命令に関するものであり、パーシャルストア命令の後に同一アドレスに対するロード命令を受け付けた場合については考慮されていない。
【００１０】
そこで、本発明は、パーシャルストア命令の後に同一アドレスに対するロード命令を受け付けた場合のメモリスループット性能を向上することが可能な命令処理装置等の提供を主たる目的とする。
【課題を解決するための手段】
【００１１】
上記の目的を達成すべく、本発明に係る命令処理装置は、以下の構成を備えることを特徴とする。
【００１２】
即ち、本説明に係る命令処理装置は、
記憶領域がアドレスによって定められるメモリと、
前記メモリの特定アドレスに対するパーシャルストア命令を受けて、そのパーシャルストア命令によって指定された内容を保存するよう制御するストアマージ制御回路と、
前記パーシャルストア命令を受けた後に、前記特定アドレスに対するロード命令を受けた場合に、前記ストアマージ制御回路の制御によって保存されている前記パーシャルストア命令によって指定された内容と、前記ロード命令の内容とを基に、ストアロード命令を生成するストアロード命令生成回路とを備える
ことを特徴とする。
【００１３】
同目的を達成する本発明に係る命令処理方法は、
記憶領域がアドレスによって定められるメモリの特定アドレスに対するパーシャルストア命令を受けて、そのパーシャルストア命令によって指定された内容を記憶デバイスに保存し、
前記パーシャルストア命令を受けた後に、前記特定アドレスに対するロード命令を受けた場合に、前記記憶デバイスに保存されている前記パーシャルストア命令によって指定された内容と、前記ロード命令の内容とを基に、ストアロード命令を生成する
ことを特徴とする。
【発明の効果】
【００１４】
上記の本発明によれば、パーシャルストア命令の後に同一アドレスに対するロード命令を受け付けた場合のメモリスループット性能を向上できるという効果がある。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１の実施形態に係る命令処理装置の構成を示すブロック図である。
【図２】本発明の第１の実施形態に係る情報テーブルを説明する図である。
【図３】本発明の第１の実施形態に係る効果を説明するタイムチャートである。
【発明を実施するための形態】
【００１６】
次に、本発明を実施する形態について図面を参照して詳細に説明する。
【００１７】
＜第１の実施形態＞
図１は、本発明の第１の実施形態に係る命令処理装置１０の構成を示すブロック図である。
【００１８】
本実施形態に係る命令処理装置１０は、ストアマージ制御回路１１と、ストアロード命令生成回路１２と、命令実行制御回路１３と、アドレスパイプ１４と、データパイプ１５と、ＥＣＧ１６と、メモリ１７と、ＥＣＣ１８と、セレクタ１９とを有する。図１に複数示されるフリップフロップは、入力された情報を記憶する記憶部である。図１に複数示されるセレクタは、入力された複数の情報のうち、所定の条件を満たす情報を選択する回路である。
【００１９】
メモリ１７は、記憶領域がアドレスによって定められる半導体記憶素子（例えば、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））である。
【００２０】
ストアマージ制御回路１１は、上位装置（外部装置）から命令処理装置１０が受け付けたパーシャルストア命令によって指定された内容を、連続した８バイトまでマージすることが可能な回路である。本実施形態では、８バイトまでマージすることを可能とするが、これに限定されない。上位装置は、例えば、演算装置である。
【００２１】
ストアマージ制御回路１１は、パーシャルストア命令によって指定された内容、または、それをマージした後の内容を表す情報を格納する情報テーブル１１０（図１には不図示。以下に示す図２を参照。）を備える。但し、情報テーブル１１０は、ストアマージ制御回路１１による参照および更新が可能であれば、ストアマージ制御回路１１内に設けられていなくてもよい。
【００２２】
図２は、本発明の第１の実施形態に係る情報テーブル１１０を説明する図である。
【００２３】
情報テーブル１１０は、アドレス１１１と、ストアデータ１１２と、バイトイネーブル情報１１３とを含む。すなわち、アドレス１１１と、ストアデータ１１２と、バイトイネーブル情報１１３とは、情報テーブル１１０において、図２に概念的に示すテーブルの如く関連付けされていることとする。
【００２４】
アドレス１１１は、８バイトアドレス境界のアドレス（すなわち、アドレスの末尾３ビットが０００のアドレス）である。そして、このアドレスによって示される領域から連続した８バイト分の領域に、パーシャルストア命令によって指定されたアドレスが示す領域は、含まれる。
【００２５】
ストアデータ１１２は、アドレス１１１によって示される領域から連続した８バイト分の領域について、パーシャルストア命令によって指定された更新後のデータの内容である。
【００２６】
バイトイネーブル情報１１３は、ストアデータ１１２の有効または無効（すなわち、更新するまたは更新しない）をバイト毎に表す情報である。バイトイネーブル情報１１３は、ストアデータ１１２の１バイトの有効または無効を１ビットで表すので、本実施形態では、８ビットである。
【００２７】
命令処理装置１０がパーシャルストア命令を受け付けた場合に、ストアマージ制御回路１１は、情報テーブル１１０のアドレス１１１を参照することにより、指定されたアドレスが示す領域を含む８バイトアドレス境界のアドレスが存在するかを検索する。
【００２８】
指定されたアドレスが存在した場合に、情報テーブル１１０の当該アドレス１１１を含むエントリに対して、ストアマージ制御回路１１は、当該ストアデータ１１２に、パーシャルストア命令によって指定された更新後のデータの内容をマージ（更新）し、マージした内容にあわせて、バイトイネーブル情報１１３を更新する。
【００２９】
指定されたアドレスが存在しない場合に、ストアマージ制御回路１１は、情報テーブル１１０の未使用エントリに、パーシャルストア命令によって指定された内容を基に、アドレス１１１と、ストアデータ１１２と、バイトイネーブル情報１１３とを関連付けて登録する。情報テーブル１１０のすべてのエントリにすでに登録済みの場合に、ストアマージ制御回路１１は、エントリを一つ選択し、そのエントリの内容を命令実行制御回路１３へ渡し、当該エントリの内容を削除する。エントリを選択する方法は、特に限定しないが、例えば、ストアデータ１１２をなす８バイト分のデータすべてに対して、更新するべき値を設定済みのエントリを選択するという方法がある。ストアマージ制御回路１１は、内容を削除したそのエントリに、パーシャルストア命令によって指定された内容を基に、アドレス１１１と、ストアデータ１１２と、バイトイネーブル情報１１３とを関連付けて登録する。
【００３０】
また、命令処理装置１０がロード命令を受け付けた場合に、ストアマージ制御回路１１は、アドレス１１１が示す領域から８バイト分の領域の中に、ロード命令によって指定されたアドレスが示す領域が含まれるかを検索する。
【００３１】
指定されたアドレスが存在した場合に、ストアマージ制御回路１１は、ストアロード命令生成回路１２に、検索により見つかったエントリの内容を渡し、当該エントリの内容を削除する。
【００３２】
指定されたアドレスが存在しない場合に、ストアマージ制御回路１１は、ロード命令に含まれる内容をそのまま命令実行制御回路１３へ渡す。
【００３３】
ストアロード命令生成回路１２は、ストアマージ制御回路１１から受け取ったロード命令を表す情報と、情報テーブル１１０（図２）に登録されていたパーシャルストア命令の内容とを基に、一つのストアロード命令を生成する回路である。
【００３４】
ストアロード命令は、リードモディファイライト動作を行う命令である。
【００３５】
すなわち、ストアロード命令は、初めに、誤り訂正符号（ＥＣＣ：Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）を生成するために、該当するアドレスのデータを読み出して、その読み出したデータに書き込むべきデータをマージ（更新）する。それから、ストアロード命令は、マージしたデータに、誤り訂正符号を付加して、メモリ１７に書き込むことにより、ストアロード命令の実行を完了する。誤り訂正符号を用いた誤り訂正の方法は、公知の技術を使用すればよい。
【００３６】
命令実行制御回路１３は、メモリ１７を対象として、ストアロード命令を実行するよう制御する回路である。
【００３７】
また、命令実行制御回路１３は、メモリ１７のビジー状態を管理する回路である。命令実行制御回路１３は、バンク単位に発行しているリクエストにかかる時間を保持している。命令実行制御回路１３は、その保持している時間を参照することにより、アクセス対象のメモリバンクにおいてビジー状態であるか否かを判断する。判断した結果がビジー状態でなければ、命令実行制御回路１３は、メモリ１７にアクセスする。ビジー状態の場合は、命令実行制御回路１３は、この回路内において、ビジー状態が解消されるまで待機する。
【００３８】
ＥＣＧ（誤り訂正符号生成回路）１６は、メモリ１７にデータを書き込む際、ストアデータ（即ち、メモリ１７に書き込むべきデータ）に付加する誤り訂正符号を生成する回路である。ＥＣＣ１８は、メモリ１７からデータを読み出した際、データ訂正可能な場合は訂正、訂正不可の場合はエラーを検出する回路である。ＥＣＣ１８は、データ訂正の際のＥＣＣ単位（データ訂正単位）を、パーシャルストア命令によって指定された内容をマージしたバイト数にあわせればよい。本実施形態では、パーシャルストア命令によって指定された内容を、連続した８バイトまでマージするとしたため、ＥＣＣ単位（データ訂正単位）は、８バイトである。
【００３９】
アドレスパイプ１４は、パーシャルストア命令およびストアロード命令の場合に、メモリ１７からデータを読み出したアドレスを、そのアドレスにデータを書き戻すタイミングまで保存するための回路である。
【００４０】
データパイプ１５は、ストアデータを保存する回路と、ロードデータ（メモリ１７から読み出したデータ）をストアデータにモディファイする回路（以下、モディファイ回路という）を含む。モディファイ回路は、バイトイネーブル情報１１３を基に、ロードデータに対してモディファイすることにより、ストアデータを作成する。
【００４１】
セレクタ１９は、ストアロード命令を実行した場合に使用する回路である。セレクタ１９は、データパイプ１５にてモディファイしたデータを選択し、ロードデータとして上位装置へ返却する。
【００４２】
次に、本実施形態の動作について、アドレスＡ番地から８バイト分の領域のうち、先頭から３バイトに、”ＸＸＸ”なるデータをパーシャルストアする命令を例に説明する。ストアマージ制御回路１１は、このパーシャル命令の内容を、図２に示す情報テーブル１１０において１つめのエントリに示すように、アドレス１１１に”Ａ”、ストアデータ１１２に”ＸＸＸ−−−−−”、バイトイネーブル情報１１３に０ｘＥ０を関連付けて登録する。なお、”−”の部分は、参照しないため、どのような値でもよい。また、”０ｘ”は、後ろに続く英数字が１６進数で表記されていることを示す。
【００４３】
この後、命令処理装置１０がＡ番地に対するロード命令を受け付けると、情報テーブル１１０のアドレス１１１を参照して、アドレス１１１が”Ａ”であるエントリを検索する。検索した結果、１つめのエントリに登録されたパーシャルストア命令のアドレス１１１が”Ａ”であるため、１つめのエントリの内容を、ストアロード命令生成回路１２に渡し、当該エントリの内容を削除する。
【００４４】
ストアロード命令生成回路１２は、渡されたパーシャルストア命令の内容と、そのパーシャルストア命令の内容が渡される起因となったロード命令とを基に、一つのストアロード命令を生成する。
【００４５】
命令実行制御回路１３は、そのストアロード命令について、アドレスを表す情報をアドレスパイプ１４に、ストアデータとイネーブル情報とをデータパイプ１５に保存する。
【００４６】
次に、命令実行制御回路１３は、メモリ１７がビジー状態でないことを確認して、そのストアロード命令の実行のために、まず、メモリＡ番地から、データを読み出す。
【００４７】
ＥＣＣ１８は、読み出したデータに対して、ＥＣＣチェックを行い、誤りを訂正する。その訂正後のデータに対して、モディファイ回路は、データパイプ１５に保存してあったストアデータ（”ＸＸＸ−−−−−”）とバイトイネーブル情報（０ｘＥ０）とを基に、モディファイする。すなわち、先頭から３バイト分のデータをストアデータの先頭から３バイト分の内容（”ＸＸＸ”）で書き換える。
【００４８】
ＥＣＧ１６は、その書き換え後のデータに誤り訂正符号を付加する。
【００４９】
その誤り訂正符号付加後のデータを、命令実行制御回路１３は、アドレスパイプ１４に保存していたアドレスであるＡ番地に対して書き込む。
【００５０】
また、セレクタ１９は、モディファイ後のデータを、ロードデータとして、上位装置へ返却する。
【００５１】
以上、説明したように、第１の実施形態には、パーシャルストア命令の後に同一アドレスに対するロード命令を受け付けた場合のメモリスループット性能を向上できるという効果がある。
【００５２】
その理由は、メモリ１７の同一アドレスに対するパーシャルストア命令とロード命令の実行が必要な場合に、本実施形態に係る命令処理装置１０は、それらの命令を基に一つのストアロード命令を生成し、生成したストアロード命令を実行するからである。すなわち、本実施形態に係る命令処理装置１０によれば、図３のタイムチャートに示すように、パーシャルストア命令とロード命令とを個々にメモリ１７に対し動作していた場合の時間よりも、パーシャルストア命令とロード命令とを基に生成したストアロード命令によれば、背景技術と比較して命令実行に要する時間を短縮できる。
【符号の説明】
【００５３】
１０    命令処理装置
１１    ストアマージ制御回路
１２    ストアロード命令生成回路
１３    命令実行制御回路
１４    アドレスパイプ
１５    データパイプ
１６    ＥＣＧ
１７    メモリ
１８    ＥＣＣ
１９    セレクタ
１１０    情報テーブル
１１１    アドレス
１１２    ストアデータ
１１３    バイトイネーブル情報
【図１】
0005852090.tif 000002
【図２】
0005852090.tif 000003
【図３】
0005852090.tif 000004