(57)【要約】【課題】連続したデータを使用する命令を実行する際にメインメモリもしくはデータキャッシュに使用したいデータがない場合、使用したいデータを要求することによって生じる命令の処理速度の低下を防止する。【解決手段】連続した複数個のデータを使用する命令を実行するときに、使用する可能性のある連続するデータを１回のキャッシュフィルによって持ってこられる量単位に分割してキャッシュフィルすると共にキャッシュフィルの境界にあるデータに対応する命令（境界命令）をまず実行する。次いで、連続するデータに対応する命令（要素命令）を実行中に次の境界命令によってデータのキャッシュフィルを行う。【選択図】図３
2007249914.tif 000002
【特許請求の範囲】
【請求項１】
データ処理装置において１つの命令により連続した複数個のデータをメモリからロードするデータロード方法であって、
前記命令を、前記複数個のデータの各データを個々にロードする複数の要素命令に分解し、
所定数の前記要素命令をロード単位とし、２つ以上の前記ロード単位に対応する前記データを連続的にデータキャッシュに格納することを特徴とするデータロード方法。
【請求項２】
前記所定数は、一回のロードで格納可能なデータ量に基づいて設定されることを特徴とする請求項１に記載のデータロード方法。
【請求項３】
最後の前記ロード単位の次の前記要素命令から最後の前記要素命令までの数が前記所定数未満である場合、前記次の要素命令から前記最後の要素命令までを前記ロード単位とすることを特徴とする請求項１又は請求項２に記載のデータロード方法。
【請求項４】
前記命令を分解する際に、
前記最後の要素命令を生成すると共に、前記複数個のデータを前記所定数毎に分けた場合の前記ロード単位の最初の前記要素命令を生成することを特徴とする請求項３に記載のデータロード方法。
【請求項５】
前記複数個のデータを前記所定数毎に分けた場合の前記ロード単位内において、最初の前記要素命令以外の前記要素命令を実行する前に、前記最初の要素命令に基づいて、一回のロードで格納可能な前記データ量をデータキャッシュに格納することを特徴とする請求項１から請求項４のいずれか１項に記載のデータロード方法。
【請求項６】
前記複数個のデータを前記所定数毎に分けた場合の前記ロード単位内において、最初の前記要素命令以外の前記要素命令を実行する前に、前記最初の要素命令に基づいて、一回のロードで格納可能な前記データ量をデータキャッシュに格納すると共に最後の前記ロード単位の最後の前記要素命令に対応するデータをデータキャッシュに格納することを特徴とする請求項１から請求項４のいずれか１項に記載のデータロード方法。
【請求項７】
前記命令を、前記複数個のデータの各データを個々にロードする複数の要素命令に分解する分解ステップと、
前記分解ステップで生成された前記複数の要素命令のうち、所定数の前記要素命令をロード単位として各前記ロード単位の最初の前記要素命令に基づいて、各前記ロード単位に対応する前記データを連続的にデータキャッシュに格納する格納ステップとを備えることを特徴とする請求項１から請求項６のいずれか１項に記載のデータロード方法。
【請求項８】
前記分解ステップで生成された前記複数の要素命令のうち、各前記ロード単位の最初の前記要素命令に対応する各前記データを重複してロードしないことを特徴とする請求項７に記載のデータロード方法。
【請求項９】
前記分解ステップで生成された前記複数の要素命令のうち、最後の前記ロード単位の最後の前記要素命令に対応する各前記データを重複してロードしないことを特徴とする請求項７又は請求項８に記載のデータロード方法。
【請求項１０】
前記分解ステップで生成された前記複数の要素命令のうち、最初に実行する前記要素命令として、各前記ロード単位の最初の前記要素命令を選択する選択ステップを備えることを特徴とする請求項１から請求項９のいずれか１項に記載のデータロード方法。
【請求項１１】
前記分解ステップで生成された前記複数の要素命令のうち、最初に実行する前記要素命令として、最後の前記ロード単位の最後の前記要素命令及び各前記ロード単位の最初の前記要素命令を選択する選択ステップを備えることを特徴とする請求項１から請求項９のいずれか１項に記載のデータロード方法。
【請求項１２】
１つの命令により連続した複数個のデータをメモリからロードして実行するデータ処理装置であって、
前記命令を、前記複数個のデータの各データを個々にロードする複数の要素命令に分解する分解手段と、
所定数の前記要素命令をロード単位とし、２つ以上の前記ロード単位に対応する前記データを連続的にデータキャッシュに格納する格納手段を備えることを特徴とするデータ処理装置。
【請求項１３】
前記所定数は、一回のロードで前記データキャッシュに格納可能なデータ数に基づいて設定されることを特徴とする請求項１２に記載のデータ処理装置。
【請求項１４】
最後の前記ロード単位の次の前記要素命令から最後の前記要素命令までの数が前記所定数未満である場合、前記次の要素命令から前記最後の要素命令までを前記ロード単位とすることを特徴とする請求項１２又は請求項１３に記載のデータ処理装置。
【請求項１５】
前記分解手段が、
前記命令を分解する際に、
前記最後の要素命令を生成すると共に、前記複数のデータを前記所定数毎に分けた場合の前記ロード単位の最初の前記要素命令を生成することを特徴とする請求項１４に記載のデータ処理装置。
【請求項１６】
前記分解手段が、
前記命令を分解する際に、
前記複数のデータを前記所定数毎に分けた場合の前記ロード単位の最初の前記要素命令を生成することを特徴とする請求項１２から請求項１４のいずれか１項に記載のデータ処理装置。
【請求項１７】
前記格納手段が、
前記複数個のデータを前記所定数毎に分けた場合の前記ロード単位内において、最初の前記要素命令以外の前記要素命令を実行する前に、前記最初の要素命令に基づいて、一回のロードで格納可能な前記データ量をデータキャッシュに格納することを特徴とする請求項１２から請求項１６のいずれか１項に記載のデータ処理装置。
【請求項１８】
前記格納手段が、
前記複数のデータを前記所定数毎に分けた場合の前記ロード単位内において、最初の前記要素命令以外の前記要素命令を実行する前に、前記最初の要素命令に基づいて、一回のロードで格納可能な前記データ量をデータキャッシュに格納すると共に最後の前記ロード単位の最後の前記要素命令に対応するデータをデータキャッシュに格納することを特徴とする請求項１２から請求項１６のいずれか１項に記載のデータ処理装置。
【請求項１９】
前記格納手段が、
前記分解手段で生成された前記複数の要素命令のうち、各前記ロード単位の最初の前記要素命令に対応する各前記データを重複して格納しないことを特徴とする請求項１２から請求項１８のいずれか１項に記載のデータ処理装置。
【請求項２０】
前記格納手段が、
前記分解手段で生成された前記複数の要素命令のうち、最後の前記ロード単位の最後の前記要素命令に対応する各前記データを重複してロードしないことを特徴とする請求項１２から請求項１９のいずれか１項に記載のデータ処理装置。
【請求項２１】
前記分解手段で生成された前記複数の要素命令のうち、最初に実行する前記要素命令として、各前記ロード単位の最初の前記要素命令を選択する選択手段を備えることを特徴とする請求項１２から請求項２０のいずれか１項に記載のデータ処理装置。
【請求項２２】
前記分解ステップで生成された前記複数の要素命令のうち、最初に実行する前記要素命令として、最後の前記ロード単位の最後の前記要素命令及び各前記ロード単位の最初の前記要素命令を選択する選択手段を備えることを特徴とする請求項１２から請求項２０のいずれか１項に記載のデータ処理装置。
【請求項２３】
前記分解手段が、命令デコード部に備えられることを特徴とする請求項１２から請求項２２のいずれか１項に記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１つの命令により連続した複数個のデータをメモリからロードするデータロード方法及びデータ処理装置に関する。
【背景技術】
【０００２】
従来、ｍ個の連続したデータをメインメモリもしくはデータキャッシュからロードしてきて、スカラレジスタに保存する場合、ｍ個の連続したデータに対応するｍ個のロード命令（ロードシングル命令）を命令キャッシュに一度に登録すると、命令キャッシュを有効に活用出来なくなってしまうため、ｍ個の連続したデータをロードするための１種類のロード命令（ロードマルチ命令）を用意することによって命令キャッシュの有効活用を行っている。
【０００３】
そして、上記ｍ個の連続したデータをロードするために用意された１種類のロード命令（ロードマルチ命令）を実行する際に、この１種類のロードマルチ命令をｍ個のロードシングル命令に分解して実行し、1回目のロードシングル命令で一次キャッシュにフィル（格納）したデータを全てスカラレジスタに移動し終わってから、続きのロードシングル命令によってデータを再度メインメモリもしくはデータキャッシュから一次キャッシュにフィル（キャッシュフィル）する方法や、また、ロードするデータの総量はあらかじめ判っていることから、ロードシングル命令の実行前にプリフェッチ命令（プリロード命令）によってデータを一次キャッシュにフィルする方法が主流になっている。
【０００４】
図７は、従来のロードマルチ命令の分解イメージである。
【０００５】
従来の通常の分解においては、ロードマルチ命令５００が分解されると、スカラレジスタ格納エリア（Ｓｘ）のＳｘ＋Ｌの値（Ｌは０以上の整数）が小さい順にロードシングル命令が実行される。
【０００６】
また、従来のプリフェッチ付きの分解においては、ロードマルチ命令５００（後述）が分解されると、スカラレジスタ格納エリア（Ｓｘ）がＳｘ＋Ｎ×Ｂの値（Ｎは０以上の整数／Ｂは１回のロードシングル命令で持ってこれるデータ量）で示される境界点のプリフェッチ命令が最初に実行され、次いで、スカラレジスタ格納エリア（Ｓｘ）のＳｘ＋Ｋの値（Ｋは０以上の整数）が小さい順にロードシングル命令が実行される。
【０００７】
ここで、ＬＤＭはロードマルチ命令のオペコード、Ｓｙはロードシングル命令個数、Ｓｚはメモリ位置、Ｄ０〜Ｄ３はメモリ位置に対するディスプレースメント値、ＬＤＳはロードシングル命令のオペコード、ＰＲＦはプリフェッチ命令のオペコードである。
【０００８】
このような従来技術の１例が、特許文献１（特開平０４−２６０９３０号公報）に示されている。
【０００９】
ここで、従来技術である、データを一次キャッシュにフィル（キャッシュフィル）する方法における動作を、図１を用いて以下説明する。命令が命令キャッシュ 100でヒットした場合は、信号110によって命令デコード部101に対して当該命令の送出を行う。命令デコード部101は、各種命令のオペコードを見て当該命令のデコード情報を当該命令に付加して、信号111によってデータ確認部102に当該命令とデコード情報を送る。データ確認部102は、データキャッシュ103内のデータが必要である場合、信号112によってデータキャッシュ103にその旨通知する。データキャッシュ103は、信号112によって通知されたデータがヒットした場合、信号115によって当該データを一次キャッシュ有する演算器105に送る。また、データ確認部102は、スカラレジスタ104内のデータが必要である場合、信号114によってスカラレジスタ104にその旨通知する。スカラレジスタ104は、信号114によって要求されたデータを信号117によって演算器105に送る。演算器105は、データキャッシュ103とスカラレジスタ104のデータと、信号113によって通知されるデータ確認部102からの命令によって演算を実施する。演算器105の結果は、信号118によってスカラレジスタ104に格納される。
【００１０】
なお、上述の従来の方法における動作は、使用するデータが全てデータキャッシュ103内にあった場合の動作である。
【特許文献１】特開平０４−２６０９３０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかし、従来の技術、例えば、前述したデータを一次キャッシュにフィル（キャッシュフィル）する方法を一例とする技術は、一次キャッシュ内のデータがなくなると再度メインメモリもしくはデータキャッシュにアクセスして一次キャッシュ内にデータを持ってくることや、ロード命令の実行前にプリフェッチ命令を実行して一次キャッシュ内にデータを持ってくることのために、時間的損失が発生するという課題があった。
【００１２】
また、従来の技術は、図１を参照して説明すると、データ確認部102から信号112によって要求されたデータがデータキャッシュ103にない場合（ミスした場合）において、信号116及び命令とデータを識別するタグ管理部106を介して信号119によってメインメモリ107に使用したいデータを要求する。メインメモリ107内のデータは、信号120及びタグ管理106を介し信号121によってデータキャッシュ103に書き込まれ、さらに、信号115によって演算器105に通知され、演算器105によって演算が行われる。しかし、従来の技術は、演算器105によって演算を行う際に、データキャッシュ103内に使用したいデータがない場合、メインメモリ107へアクセスする必要があるが、メインメモリ107へアクセスする必要が何度も生じると、当該アクセスに要する時間において命令の実行が何度も停止するという課題があった。
【００１３】
また、従来の技術は、命令デコード部101で命令をデコードしてｍ個のデータを使用することが判明した際に、プリフェッチ命令を生成し、使用する可能性のあるデータをメインメモリ107からデータキャッシュ103にあらかじめ持ってきた後に継続して命令を処理する場合には、データキャッシュ103がヒットするので、前述の動作に比べ命令の実行が停止することはないという利点があるが、本従来の技術の動作は、通常は発行しなくてもよいプリフェッチ命令を発行して処理していることにより命令の処理速度が低下してしまうという課題があった。
【００１４】
図８は、データキャッシュ１０３でミスした場合の従来のロードマルチ命令の実行イメージである。
【００１５】
従来の通常の分解は、ロードマルチ命令を分解したときに、最初のロードシングル命令から順次実行してくので、データのキャッシュフィルの境界毎にデータキャッシュ１０３でミスが発生し、命令の処理速度が低下するという課題があった。
【００１６】
また、従来のプリフェッチ命令付きの分解は、ロードマルチ命令を分解したときに、境界点のプリフェッチ命令を最初に実行し、次いで、最初のロードシングル命令から順次実行してくので、データのキャッシュフィルの境界毎にデータキャッシュ１０３でミスが発生することはないが、プリフェッチ命令を発行して処理しているため、必要最小限の時間で命令を処理することができないという課題があった。
【００１７】
（目的）
本発明の目的は、連続したデータを使用する命令を実行する際にメインメモリもしくはデータキャッシュに使用したいデータがない場合、データを要求することによって生じる命令の処理速度の低下を防止することである。
【課題を解決するための手段】
【００１８】
本発明は、上記の目的を達成するために、データ処理装置において１つの命令により連続した複数個のデータをメモリからロードするデータロード方法であって、前記命令を、前記複数個のデータの各データを個々にロードする複数の要素命令に分解し、所定数の前記要素命令をロード単位とし、２つ以上の前記ロード単位に対応する前記データを連続的にデータキャッシュに格納することを特徴とする。
【００１９】
（作用）
２つ以上の前記ロード単位に対応する前記データを連続的にデータキャッシュに格納することによって、各前記要素命令に対応する各データが必ず存在することから、連続したロード命令を隙間なく実行できる。
【発明の効果】
【００２０】
本発明によれば、複数個の連続したデータを使用する命令に関して、データキャッシュにデータがなかった場合であっても、連続したロード命令を隙間なく実行でき、命令の処理速度の低下を防止することができる。
【００２１】
その理由は、データ処理装置において１つの命令により連続した複数個のデータをメモリからロードする当該命令を、複数個のデータの各データを個々にロードする複数の要素命令に分解し、所定数の要素命令をロード単位とし、２つ以上のロード単位に対応するデータを連続的にデータキャッシュに格納するため、２つ以上のロード単位に対応するデータを連続的にデータキャッシュに格納することによって、各要素命令に対応する各データが必ず存在することから、連続したロード命令を隙間なく実行できるからである。
【００２２】
また、プリフェッチ命令のような通常は発行しなくてもよい命令を追加することもないので、必要最小限の時間で命令を処理することができる。
【発明を実施するための最良の形態】
【００２３】
次に本発明の実施の形態について図面を参照して詳細に説明する。
【００２４】
（本実施の形態の構成）
図１は、従来及び本発明に適用される情報処理装置の構成の概略を示す図である。
【００２５】
図１を参照すると、発明に適用される情報処理装置は、命令キャッシュ100と、命令デコード部101と、データ確認部102と、データキャッシュ103と、スカラレジスタ104と、演算器105と、タグ管理部106と、メインメモリ107と、信号110〜信号121とを有する。
【００２６】
発明に適用される情報処理装置の動作の概略は、使用するデータが全てデータキャッシュ103内にあった場合、命令が命令キャッシュ 100でヒットした場合は、信号110によって命令デコード部101に対して当該命令の送出を行う。命令デコード部101は、各種命令のオペコードを見て当該命令のデコード情報を当該命令に付加して、信号111によってデータ確認部102に当該命令とデコード情報を送る。データ確認部102は、データキャッシュ103内のデータが必要である場合、信号112によってデータキャッシュ103にその旨通知する。データキャッシュ103は、信号112によって通知されたデータがヒットした場合、信号115によって当該データを一次キャッシュ有する演算器105に送る。また、データ確認部102は、スカラレジスタ104内のデータが必要である場合、信号114によってスカラレジスタ104にその旨通知する。スカラレジスタ104は、信号114によって要求されたデータを信号117によって演算器105に送る。演算器105は、データキャッシュ103とスカラレジスタ104のデータと、信号113によって通知されるデータ確認部102からの命令によって演算を実施する。演算器105の結果は、信号118によってスカラレジスタ104に格納される。
【００２７】
なお、本情報処理装置の上記各構成要素のうち命令デコード部101以外の構成要素については、周知であるため説明を省略する。
【００２８】
図２は、図１の命令デコード部101内の詳細な構成を示すブロック図である。
【００２９】
図２を参照すると、命令デコード部101は、デコード部400と、命令分解部401と、セレクト信号生成部402と、命令セレクト部403と、信号410〜信号415とを有する。
【００３０】
デコード部400は、図１の命令キャッシュ100から信号110によって入力された命令を命令種別毎にデコードする機能を有する。
【００３１】
また、デコード部400は、当該命令をデコードした結果、当該命令が分解する必要がある命令である場合は、この分解する必要がある命令を信号410によって、命令を分解する機能を有する命令分解部401に送出する（ロードマルチ命令の分解例については後述する。）と共に、当該命令を分解することを信号412によってセレクト信号生成部402に通知する機能を有する。
【００３２】
セレクト信号生成部402は、当該命令を分解することを信号412によって通知されると、当該命令が分解中であることを信号413によって命令セレクト部403に通知する機能を有する。
【００３３】
命令セレクト部403は、当該命令が分解中であることを信号413によって通知された場合は、命令分解部401から信号414によって送出される命令521を選択し、選択した命令を信号111によってデータ確認部102に送出する機能を有する。
【００３４】
また、命令セレクト部403は、当該命令の分解が終了したことを信号413によって通知された場合は、デコード部400から信号411によって送出される命令421を選択し、選択した命令を信号111によってデータ確認部102に送出する機能を有する。
【００３５】
図３は、図２の命令分解部401内の詳細な構成を示すブロック図である。
【００３６】
図３を参照すると、命令分解部401は、要素命令生成部501と、最終命令生成部502と、境界命令削除部503と、境界命令生成部504と、命令チェック部505と、命令セレクト部506と、信号510〜信号520とを有する。
【００３７】
要素命令生成部501は、信号510によって通知されたロードマルチ命令500のスカラレジスタ格納エリア（Ｓｘ）の値に基づいて、連続した番号のロード命令を生成する機能を有する。
【００３８】
ここで、本実施の形態によるロードマルチ命令500は、連続した複数個のデータをメインメモリもしくはデータキャッシュから１つの命令によりロードするロード命令であり、ロードマルチ命令オペコード（ＬＤＭ）、スカラレジスタ格納エリア（Ｓｘ）、ロード命令個数（Ｓｙ）、メモリ位置（Ｓｚ）、メモリ位置に対するディスプレースメント値（Ｄ0〜Ｄ3）を示す情報を格納し、デコード部400から信号410によって命令分解部401に送出されて、ロードシングル命令507に分解される。なお、ロードマルチ命令500が格納する上記各情報については、周知であるため説明を省略する。
【００３９】
なお、ロード命令の番号は、図５における（Ｓｘ＋α）の欄のαの値によって示される。
【００４０】
最終命令生成部502は、デコード部400から信号410によって命令分解部401に送出された分解する必要がある命令（ロードマルチ命令500）について、当該命令を構成するロード命令のうち、最終のロード命令（最終命令）を生成する機能を有する。
より詳細には、最終命令生成部502は、信号５１１によって通知されたＳｘ（スカラレジスタ格納エリア）の値と信号512によって通知されたＳｙ（ロード命令出力個数）の値に基づいて、ロードマルチ命令のうちＳｘ＋Ｓｙ−１の値で示される最終のロード命令を生成する機能を有する。
【００４１】
境界命令削除部503は、要素命令生成部501から信号515によって受け取ったロード命令のうち、境界命令生成部504で生成されたロード命令と同じ番号のロード命令を削除する機能を有する。同一の倍数番号のロード命令を何度も実行しないようにするためである。
【００４２】
境界命令生成部504は、信号513によって通知されるＳｙ（ロード命令出力個数）の値以下の境界点のロード命令（境界命令）を生成する機能を有する。
【００４３】
ここで、境界命令の命令番号は、本実施の形態による例では１回のキャッシュフィルで32個のデータを持ってこられることとするため、0と32の倍数とになる。
【００４４】
また、境界命令とは、ロード命令によってメインメモリ107からデータキャッシュ103に持ってくるデータの総容量を一次キャッシュに1回でフィルできる単位データ量に分割した場合に一次キャッシュに1回でフィルできる量の境界点（境界アドレス）のデータに対応するロード命令である。
【００４５】
なお、境界命令生成部504は、Ｓｙ（ロード命令出力個数）の値以上の命令番号を付されたロード命令を生成しない。すなわち、境界命令生成部504は、最終命令以降のロード命令を生成しないこととなる。Ｓｙ（ロード命令出力個数）の値以上のロード命令は不要な場合があり、不要なロード命令によって持ってきたデータが一次キャッシュ等に残り続ける場合があるからである。
【００４６】
命令チェック部505は、信号514によって通知されるＳｙ（ロード命令出力個数）の値と信号516によって通知される要素命令生成部501で生成されたロード命令の番号とをチェックし、Ｓｙ（ロード命令出力個数）の値と要素命令生成部501で生成されたロード命令の番号とが一致した場合は、信号520によって命令セレクト部506に前記一致したことを示す通知をする機能を有する。
【００４７】
命令セレクト部506は、受け取ったロード命令を選択して所定のロード命令のみを信号414によってデータ（ロードシングル命令）507（図２の命令521）として命令セレクト部403に出力する機能を有する。
【００４８】
データ（ロードシングル命令）507は、ロードシングル命令オペコード（ＬＤＳ）、スカラレジスタ格納エリア（Ｓｘ）、メモリ位置（Ｓｚ）、メモリ位置に対するディスプレースメント値（Ｄ0〜Ｄ3）を示す情報を格納する。なお、データ（ロードシングル命令）507が格納する上記各情報については、周知であるため説明を省略する。
【００４９】
（本実施の形態の動作）
【００５０】
図１〜図４を用いて、図１の本実施の形態による命令デコード部101内部で実施するロードマルチ命令の分解処理の１例を説明する。
【００５１】
図４は、本実施の形態による命令デコード部101内部で実施するロードマルチ命令の分解処理の１例を示すフローチャートである。
【００５２】
本発明の特徴は、最終のロード命令のキャッシュフィルを行っている間に倍数番号（本実施例の場合は、0と32の倍数とになる）のロード命令（境界点のロード命令）のキャッシュフィルを実行すると共に、まず最終のロード命令を実行し、次いで、倍数番号のロード命令を実行し、次いで、他の連続した番号のロード命令を実行する点にある。
【００５３】
（最終命令生成処理（ステップＳ701））
最終命令生成部502は、ロードマルチ命令500が命令デコード部101のデコード部400に入ってくると、信号511によって通知されたＳｘ（スカラレジスタ格納エリア）の値と信号512によって通知されたＳｙ（ロード命令出力個数）の値に基づいて、ロードマルチ命令のうちＳｘ＋Ｓｙ−１の値で示される最終のロード命令（最終命令）を生成し、生成した最終命令を信号517によって命令セレクト部506に送出する。
【００５４】
命令セレクト部506は、最終命令を受け取ると、受け取った最終命令を信号521によってデータ507として命令セレクト部403出力する。
【００５５】
（境界命令生成処理（ステップＳ702））
次いで、境界命令生成部504は、信号513によって通知されるＳｙ（ロード命令出力個数）の値以下の境界点（本実施の形態による例では、１回のキャッシュフィルで32個のデータを持ってこられることとするため、境界点は0と32の倍数とになる）のロード命令（境界命令）を生成し、生成した境界命令を信号519によって命令セレクト部506に送出する。
【００５６】
この場合、境界命令生成部504でＳｙ（ロード命令出力個数）の値以上のロード命令は生成しない。
【００５７】
命令セレクト部506は、受け取った境界命令を信号521によってデータ507として命令セレクト部403出力する。
【００５８】
（要素命令生成処理（ステップＳ703））
要素命令生成部501は、信号５１０によって通知されたロードマルチ命令500のＳｘ（スカラレジスタ格納エリア）の値に基づいて、連続した番号のロード命令（要素命令）を生成し、生成した要素命令を信号515によって境界命令削除部503に送出する。
【００５９】
境界命令削除部503は、要素命令生成部501から信号515によって受け取ったロード命令のうち、境界命令生成部504で生成されたロード命令と同じ命令番号のロード命令を削除し、削除されなかったロード命令を、信号518によって命令セレクト部506に送出する。
【００６０】
命令セレクト部506は、削除されなかったロード命令を受け取ると、受け取ったロード命令を信号521によってデータ507として命令セレクト部403に出力する。
【００６１】
（命令チェック処理（ステップＳ704））
命令チェック部505は、信号514によって通知されるＳｙ（ロード命令出力個数）の値と信号516によって通知される要素命令生成部501で生成されたロード命令の命令番号とをチェックし、Ｓｙ（ロード命令出力個数）の値と要素命令生成部501で生成されたロード命令の命令番号とが一致した場合は、信号520によって命令セレクト部506に前記一致したことを示す通知をすると共に、命令の分解が終了したことを信号415によってセレクト信号生成部402に通知する。
【００６２】
命令セレクト部506は、信号520によって前記一致したことを示す通知を受けたら、その一致した命令番号以降の命令番号を付されたロード命令を命令セレクト部403に送出しないようにする。
【００６３】
セレクト信号生成部402は、信号522によって命令の分解が終了したことの報告をうけると、信号413によって命令セレクト部403に命令の分解が終了したことを通知する。
【００６４】
命令セレクト部403は、セレクト信号生成部402から信号413によって命令の分解が終了したことを通知された場合は、デコード部400から信号411によって送出される命令421を選択し、選択した命令を信号111によってデータ確認部102に送出する。
【００６５】
上記のようにデータ確認部102に送出された各命令が演算器118に通知され、演算器118は、データ確認部102からの各命令によって演算を実施する。
【００６６】
すなわち、データ確認部102は、まず、ステップＳ701で生成された最終命令に基づいてデータキャッシュ１０３やスカラレジスタ１０４に連絡し、次いで、ステップＳ702で生成された境界命令に基づいてデータキャッシュ１０３やスカラレジスタ１０４に連絡し、最後に、ステップＳ703で生成された要素命令に基づいてデータキャッシュ１０３やスカラレジスタ１０４に連絡する。
【００６７】
その後、演算器118は、まず、ステップＳ701で生成された最終命令に基づいて演算を実施し、次いで、ステップＳ702で生成された境界命令に基づいて演算を実施し、最後に、ステップＳ703で生成された要素命令に基づいて演算を実施する。
【００６８】
（ロードマルチ命令の分解イメージ）
図５は、本発明のロードマルチ命令の分解イメージである。
【００６９】
図５を参照すると、本発明は、ロードマルチ命令５００を分解したときに、最終のデータに対応する最終のロードシングル命令（最終命令）及びキャッシュフィルの境界（本実施の形態による例では、１回のキャッシュフィルで32個のデータを持ってこられることとする）にあるデータに対応する境界点のロードシングル命令（境界命令）を最初に実行することで、他のロードシングル命令実行中のメモリアクセスや、プリフェッチ命令の追加発行や、不要なロードシングル命令のキャッシュフィルを行わないようにしている。
【００７０】
すなわち、本発明の分解によって、スカラレジスタ格納エリア（Ｓｘ）がＳｘ＋Ｓｙ−１の値で示される最終のロードシングル命令が最初に実行され、次いで、スカラレジスタ格納エリア（Ｓｘ）がＳｘ＋Ｎ×Ｂの値（Ｎは０以上の整数／Ｂは１回のロードシグナル命令で持ってこれるデータ量）で示される境界点のロードシングル命令が実行され、次いで、スカラレジスタ格納エリア（Ｓｘ）のＳｘ＋Ｍの値（Ｍは１以上の整数）が小さい順にロードシングル命令を重複することなく実行される。
【００７１】
ここで、ＬＤＭはロードマルチ命令のオペコード、Ｓｙはロードシングル命令個数、Ｓｚはメモリ位置、Ｄ０〜Ｄ３はメモリ位置に対するディスプレースメント値、ＬＤＳはロードシングル命令のオペコードである。
【００７２】
図６は、データキャッシュ１０３でミスした場合の本発明のロードマルチ命令の実行イメージである。
【００７３】
図６を参照すると、本発明による分解は、ロードマルチ命令を分解したときに、最終のロードシングル命令（最終命令）及びキャッシュフィルの境界（この例では、１回のキャッシュフィルで３２個のデータを持ってこられることとしている）にある境界点のロードシングル命令（境界命令）を最初に実行することによって、後続で使用するデータを最初にデータキャッシュ１０３に持ってくることができる。従って、本発明は、始めにデータキャッシュ１０３でミスしたロードシングル命令以外は連続して実行できるので、命令の処理速度の低下を防止し、必要最小限の時間で命令を処理することができる。
【００７４】
（本実施の形態の効果）
以上説明したように、本発明によれば、連続した複数個のデータを使用する命令に関して、データキャッシュ103に該当するデータがない場合であっても、プリフェッチ命令のような通常は発行しなくてもよい命令を追加せずに、メインメモリからあらかじめ該当するデータをデータキャッシュ103に持ってくることができるので、命令の処理速度の低下を防止し、必要最小限の時間で命令を処理することができる。
【００７５】
その理由は、データキャッシュ103に該当するデータがない場合、ロード命令によってメインメモリからデータキャッシュ103に持ってくるデータの総容量を一次キャッシュに1回でフィルできる単位量に分割し、一次キャッシュに1回でフィルできる量の境界点のデータに対応する境界点のロード命令を初めに実行することによって必要なキャッシュフィルを先行して実行するため、先頭のロード命令で一次キャッシュにフィルしてきたデータを演算器108で使用している最中に上記境界点以降のデータに対するロード命令を実行できることができるからである。
【００７６】
また、本発明によれば、先行して実行した境界点のロード命令を再度実行することを防止できる。
【００７７】
その理由は、境界命令削除部503が、要素命令生成部501から信号515によって受け取ったロード命令のうち、境界命令生成部504で生成されたロード命令と同じ番号のロード命令を削除するからである。
【００７８】
また、本発明によれば、一次キャッシュ内を汚すことがない。
【００７９】
その理由は、境界命令生成部504が、Ｓｙ（ロード命令出力個数）の値以上の倍数番号のロード命令を生成せず、また、命令チェック部505が、信号514によって通知されるＳｙ（ロード命令出力個数）の値と信号516によって通知される要素命令生成部501で生成されたロード命令の番号とをチェックし、Ｓｙ（ロード命令出力個数）の値と要素命令生成部501で生成されたロード命令の番号とが一致した場合は、信号520によって命令セレクト部506に前記一致したことを示す通知し、命令セレクト部506が、信号520によって前記一致したことを示す通知を受けたら、その通知以降に受け取ったロード命令を命令セレクト部403に送出しないからである
【図面の簡単な説明】
【００８０】
【図１】従来及び本発明に適用される情報処理装置の構成の概略を示す図である。
【図２】本実施の形態の命令デコード部101内の詳細な構成を示すブロック図である。
【図３】本実施の形態の命令分解部401内の詳細な構成を示すブロック図である。
【図４】本実施の形態による命令デコード部101内部で実施するロードマルチ命令の分解処理の１例を示すフローチャートである。
【図５】本実施の形態によるロードマルチ命令の分解イメージである。
【図６】本実施の形態によるデータキャッシュでミスした場合のロードマルチ命令の実行イメージである。
【図７】従来のロードマルチ命令の分解イメージである。
【図８】従来のデータキャッシュでミスした場合のロードマルチ命令の実行イメージである。
【符号の説明】
【００８１】
１００：命令キャッシュ
１０１：命令デコード
１０２：データ確認部
１０３：データキャッシュ
１０４：スカラレジスタ
１０５：演算器
１０６：タグ管理部
１０７：メインメモリ
１１０〜１２１：信号
４００：デコード部
４０１：命令分解部
４０２：セレクト信号生成部
４０３：命令セレクト部
４１０〜４１５：信号
５００：ロードマルチ命令
５０１：要素命令生成部
５０２：最終命令生成部
５０３：境界命令削除部
５０４：境界命令生成部
５０５：命令チェック部
５０６：命令セレクト部
５０７：データ（ロードシングル命令）
５１０〜５２２信号
６０１：ＣＰＵ
６０２：主記憶部
６０３：通信制御部
６０４：提示部
６０５：入力部
６０６：インタフェース部
６０７：補助記憶部
６０８：システムバス
【図１】
2007249914.tif 000003
【図２】
2007249914.tif 000004
【図３】
2007249914.tif 000005
【図４】
2007249914.tif 000006
【図５】
2007249914.tif 000007
【図６】
2007249914.tif 000008
【図７】
2007249914.tif 000009
【図８】
2007249914.tif 000010