(57)【要約】【課題】  メモリのサーキュラーアクセスをベクトル命令として実現可能とすること。【解決手段】  演算処理装置１は、ロード命令およびストア命令の命令コード中、アドレス指定フィールドの上位側において、メモリアクセスモードを指定可能である。したがって、ベクトル命令として入力されたロード命令あるいはストア命令の実行中に、メモリ９０の行方向の境界を越えてアクセスが行われる場合であっても、条件判定をすることなく、プログラマの意図したメモリアクセスを行うことが可能となる。即ち、演算処理装置１において、他のベクトル命令と並列に、メモリ境界を越えるロード命令およびストア命令をベクトル命令として処理することが可能となる。【選択図】  図４
2005227848.tif 000002
【特許請求の範囲】
【請求項１】
マトリクス状に記憶領域が配列されたメモリに対するロード命令あるいはストア命令を実行可能なベクトルプロセッサであって、
前記メモリに対してサーキュラーアクセスを行う指示を含む前記ロード命令あるいはストア命令が入力されると、前記メモリにおける同一行の記憶領域において循環的に該ロード命令あるいはストア命令の参照アドレスを算出するアドレス算出手段を含むことを特徴とするベクトルプロセッサ。
【請求項２】
前記アドレス算出手段は、前記ロード命令あるいはストア命令においてメモリアドレスを指定するフィールドデータのうち、前記メモリの行方向のアドレスを表現可能な最小限の下位ビット内において参照アドレスの更新を行うことを特徴とする請求項１記載のベクトルプロセッサ。
【請求項３】
前記ロード命令あるいはストア命令においてメモリアドレスを指定するフィールドデータには、前記サーキュラーアクセスを行うか否かを指定可能なアクセスモードフィールドが含まれ、
前記アドレス算出手段は、該アクセスモードフィールドにおける指定に基づいて、前記ロード命令あるいはストア命令の参照アドレスを算出することを特徴とする請求項１または２記載のベクトルプロセッサ。
【請求項４】
マトリクス状に記憶領域が配列されたメモリに対するロード命令あるいはストア命令をベクトルプロセッサによって実行するためのメモリアクセス方法であって、
前記メモリに対してサーキュラーアクセスを行う指示を含む前記ロード命令あるいはストア命令をベクトルプロセッサに入力すると、該ベクトルプロセッサが、前記メモリにおける同一行の記憶領域において循環的に該ロード命令あるいはストア命令の参照アドレスを算出することを特徴とするメモリアクセス方法。
【請求項５】
前記ロード命令あるいはストア命令の参照アドレスを算出する際に、前記ベクトルプロセッサが、前記ロード命令あるいはストア命令においてメモリアドレスを指定するフィールドデータのうち、前記メモリの行方向のアドレスを表現可能な最小限の下位ビット内において参照アドレスの更新を行うことを特徴とする請求項４記載のメモリアクセス方法。
【請求項６】
前記ロード命令あるいはストア命令においてメモリアドレスを指定するフィールドデータに、前記サーキュラーアクセスを行うか否かを指定可能なアクセスモードフィールドを含めておき、
前記ベクトルプロセッサが、該アクセスモードフィールドにおける指定に基づいて、前記ロード命令あるいはストア命令の参照アドレスを算出することを特徴とする請求項４または５記載のメモリアクセス方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ベクトル命令を実行可能なベクトルプロセッサおよびベクトルプロセッサにおけるメモリアクセス方法に関する。
【背景技術】
【０００２】
従来、例えば、画像処理において、メモリに記憶されたフレームからブロックを読み込む場合等、メモリに対するサーキュラーアクセスを行う場合がある。
通常のメモリアクセスにおいては、メモリの行方向にメモリ境界を越えたアクセスが行われた場合、次行の先頭に参照アドレスが移行するところ、サーキュラーアクセスの場合には、メモリ境界から同一行の先頭に参照アドレスが戻ることとなる。
【０００３】
例えば、特開２００３−２９７８８号公報には、ＤＳＰ（Digital Signal Processor）によってメモリのサーキュラーアクセスを実現する技術が開示されている。
ところで、画像処理等を行うプロセッサは、ベクトル命令を実行可能なベクトルプロセッサとして構成されることが多い。
ベクトルプロセッサでは、ストアあるいはロード等の種々の演算をベクトル命令として実行することにより、処理の高速化を可能としている。
【特許文献１】特開２００３−２９７８８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、メモリのサーキュラーアクセスを行うためには、参照アドレスがメモリ境界を越えた場合に、参照アドレスの算出処理を特別に変更する必要があり、単純なベクトル命令として実現することができなかった。そのため、メモリのサーキュラーアクセスを行う場合、スカラ命令によって実現するしかなく、処理効率が低下する事態が生じていた。なお、上述の公報に記載された技術も一般的なＤＳＰによってメモリのサーキュラーアクセスを実現するものであり、ベクトルプロセッサで実現するものではなかった。
【０００５】
また、メモリのサーキュラーアクセスを行うために、参照されているアドレスがメモリ境界であるか否かをプログラムによって判定する場合があり、この場合には処理効率がさらに低下することとなっていた。
このように、ベクトルプロセッサにおいて、メモリのサーキュラーアクセスを実現することは困難であった。
【０００６】
本発明の課題は、メモリのサーキュラーアクセスをベクトル命令として実現可能とすることである。
【課題を解決するための手段】
【０００７】
以上の課題を解決するため、本発明は、
マトリクス状に記憶領域が配列されたメモリ（例えば、図１のメモリ９０）に対するロード命令あるいはストア命令を実行可能なベクトルプロセッサであって、前記メモリに対してサーキュラーアクセスを行う指示を含む前記ロード命令あるいはストア命令が入力されると、前記メモリにおける同一行の記憶領域（例えば、図４においてアクセス対象となっている行）において循環的に該ロード命令あるいはストア命令の参照アドレスを算出するアドレス算出手段（例えば、図１のデコード部２０あるいはロード部４０、ストア部５０）を含むことを特徴としている。
【０００８】
また、本発明は、
マトリクス状に記憶領域が配列されたメモリに対するロード命令あるいはストア命令をベクトルプロセッサによって実行するためのメモリアクセス方法であって、前記メモリに対してサーキュラーアクセスを行う指示を含む前記ロード命令あるいはストア命令をベクトルプロセッサに入力すると、該ベクトルプロセッサが、前記メモリにおける同一行の記憶領域において循環的に該ロード命令あるいはストア命令の参照アドレスを算出することを特徴としている。
【０００９】
これにより、ロード命令あるいはストア命令の実行中に、メモリの境界を越えてアクセスが行われる場合であっても、条件判断等、特別な処理を行う必要がなくなる。
したがって、メモリに対するロード命令あるいはストア命令をベクトル命令として処理できることとなり、処理の高速化および処理効率の向上を図ることができる。
また、前記アドレス算出手段は、前記ロード命令あるいはストア命令においてメモリアドレスを指定するフィールドデータのうち、前記メモリの行方向のアドレスを表現可能な最小限の下位ビット内（例えば、メモリの横幅が６４バイトの場合、アドレス指定フィールドの下位６ビット内）において参照アドレスの更新を行うことを特徴としている。
【００１０】
また、前記ロード命令あるいはストア命令の参照アドレスを算出する際に、前記ベクトルプロセッサが、前記ロード命令あるいはストア命令においてメモリアドレスを指定するフィールドデータのうち、前記メモリの行方向のアドレスを表現可能な最小限の下位ビット内において参照アドレスの更新を行うことを特徴としている。
これにより、メモリ境界を越えてアドレスが参照された場合にも、アドレス指定フィールドの上位ビットは変化することなく下位ビットが“０”にリセットされ、同一行の先頭に参照アドレスが戻ることとなる。
【００１１】
そのため、従来のベクトルプロセッサから大幅に構成を異ならせることなく、容易にメモリのサーキュラーアクセスを実現することができる。
また、前記ロード命令あるいはストア命令においてメモリアドレスを指定するフィールドデータには、前記サーキュラーアクセスを行うか否かを指定可能なアクセスモードフィールドが含まれ、前記アドレス算出手段は、該アクセスモードフィールドにおける指定に基づいて、前記ロード命令あるいはストア命令の参照アドレスを算出することを特徴としている。
【００１２】
また、前記ロード命令あるいはストア命令においてメモリアドレスを指定するフィールドデータに、前記サーキュラーアクセスを行うか否かを指定可能なアクセスモードフィールドを含めておき、前記ベクトルプロセッサが、該アクセスモードフィールドにおける指定に基づいて、前記ロード命令あるいはストア命令の参照アドレスを算出することを特徴としている。
【００１３】
これにより、指定アドレスを異ならせることで、メモリを異なるメモリアクセスモードで使用できるため、メモリの有効活用ができると共に、容易にかつ簡単な構成でメモリアクセスモードの切り換えを行うことが可能となる。
このように、本発明によれば、メモリのサーキュラーアクセスをベクトル命令として実現することが可能となる。
【発明を実施するための最良の形態】
【００１４】
以下、図を参照して本発明に係るベクトルプロセッサの実施の形態を説明する。
本発明に係るベクトルプロセッサにおいては、メモリ境界を超えて、ロードあるいはストア等のメモリアクセスが行われた場合に、メモリ上の同一行の先頭に参照アドレスが戻るモード（サーキュラーアクセスモード）が用意されている。したがって、メモリ境界を越えてアクセスが行われる場合にも、条件判断を行う必要がないため、ベクトル命令としてメモリアクセスを行うことが可能である。
【００１５】
図１は、本発明に係る演算処理装置１の機能構成を示すブロック図である。
図１において、演算処理装置１は、フェッチ部１０と、デコード部２０と、プログラム制御部３０と、ロード部４０と、ストア部５０と、演算部６０と、レジスタファイル部７０と、メモリ制御部８０と、メモリ９０とを含んで構成される。なお、図１において、フェッチ部１０と、デコード部２０と、プログラム制御部３０と、ロード部４０と、ストア部５０と、演算部６０と、レジスタファイル部７０とからなる部分は、ベクトルプロセッサ２を構成している。
【００１６】
フェッチ部１０は、メモリ９０から命令コードをフェッチする。そして、フェッチ部１０は、フェッチした命令コードを一時的に記憶した後、デコード部２０に出力する。
デコード部２０は、フェッチ部１０から入力された命令コードをデコードし、デコード結果を、ロード部４０、ストア部５０および演算部６０に出力する。また、デコード部２０は、同様に、デコード結果をプログラム制御部３０に出力する。
【００１７】
ここで、本発明に係る演算処理装置１において、ベクトル命令であるストア命令およびロード命令（例えば、要素数８のロード命令である“ＬＷ［８］”等）を示す命令コードは、指定するアドレス空間によって、メモリアクセスのモードを切り換えることを可能としている。具体的には、命令コード中のアドレス指定フィールドにおいて、上位側の部分がメモリアクセスのモード、即ち、サーキュラーアクセスを行うモード（サーキュラーアクセスモード）あるいはサーキュラーアクセスを行わないモード（ノーマルモード）のいずれかを示し、下位側の部分が、メモリ９０における実アドレスを示すものとされている。
【００１８】
したがって、デコード部２０にロード命令あるいはストア命令の命令コードが入力されると、デコード部２０は、命令コードの上位側の部分に基づいてメモリアクセスモードを判定し、命令コードの下位側の部分に基づいてメモリアドレスを算出する。そして、メモリ９０の行方向の境界を超えてメモリアクセスが行われると、デコード部２０は、サーキュラーモードの場合には、メモリ９０上の先頭アドレスに参照アドレスを戻し、ノーマルモードの場合には、次行の先頭アドレスに参照アドレスを移行させるようにアドレスをデコードする。
【００１９】
なお、上述したメモリアクセスモードの判定およびそれに応じた参照アドレスの算出処理は、デコード部２０において行う場合の他、ロード部４０およびストア部５０において行うことも可能である。その場合、デコード部２０は、従来と同様のデコード処理を行えば良いこととなる。
プログラム制御部３０は、演算処理装置１全体を制御するものであり、例えば、実行する命令の管理や、割り込み発生時におけるステータスの変更等、演算処理装置１における動作状態の管理等を行う。
【００２０】
また、プログラム制御部３０は、デコード部２０から入力されるデコード結果に基づいて、レジスタファイル部７０におけるデータの読み出しあるいは書き込みを制御したり、次に実行する命令が記憶されたアドレスをメモリ９０に出力したりする。
ロード部４０は、デコード部２０から入力されたデコード結果がロード命令である場合に、デコード結果に基づいて、ロード命令の対象となるアドレスをメモリ９０に出力する。そして、ロード部２０は、そのアドレスのデータがメモリ９０から入力されると、入力されたデータをレジスタファイル部７０に出力する。
【００２１】
ストア部５０は、デコード部２０から入力されたデコード結果がストア命令である場合に、デコード結果に基づいて、ストア命令の対象となるデータをレジスタファイル部２０から読み出す。そして、ストア部５０は、ストア命令の対象となるアドレスおよびレジスタファイル部７０から読み出したデータをメモリ９０に出力する。
演算部６０は、デコード部から入力されたデコード結果が加減算、乗算、除算あるいは論理演算等の演算命令である場合に、デコード結果に基づいて、演算命令の対象となるデータをレジスタファイル部７０から読み出す。そして、演算部６０は、読み出したデータの演算を実行し、演算結果をレジスタファイル部７０に出力する。
【００２２】
レジスタファイル部７０は、所定数のスカラレジスタおよびベクトルレジスタを備え、ロード部４０、ストア部５０および演算部６０の処理対象となるデータを記憶する。また、レジスタファイル部７０には、プログラム制御部３０から、データの読み出しあるいは書き込みを行うための制御信号が入力される。
メモリ制御部８０は、メモリ９０に対するアクセス、即ち、データの読み出しや書き込みを制御する。例えば、メモリ制御部８０は、ロード部４０あるいはストア部５０によって指定されたメモリ９０のアドレスからデータを読み出したり、メモリ９０から読み出されたデータをレジスタファイル部７０に出力したりする。
【００２３】
メモリ９０は、２次元的に配列された記憶領域を有するメモリであり、これらの記憶領域にはラスタ順に１次元アドレスが付与されている。また、メモリ９０は、命令コードあるいは演算対象となるデータを記憶しており、メモリ制御部８０を介して、フェッチ部１０、ロード部４０、ストア部５０、演算部６０あるいはレジスタファイル部７０とデータを入出力することが可能である。
【００２４】
なお、ここでは、メモリ９０の横幅（行方向のバイト長）が６４バイトであるものとして説明する。
次に、動作を説明する。
上述のように、演算処理装置１においては、ロード命令およびストア命令の命令コードによって、サーキュラーモードあるいはノーマルモードのいずれかを切り換えることが可能である。
【００２５】
以下、ロード命令が入力された場合を例に挙げて、演算処理装置１の動作を具体的に説明する。
演算処理装置１に入力されるロード命令は、例えば、
ＬＷ［８］  ％ｄｓｔ，［％ｂａｓｅ］，＃４
なる形式のものである。なお、この命令において、“％ｄｓｔ”は読み出したデータを格納するレジスタ（デスティネーションレジスタ）を示し、“％ｂａｓｅ”は読み出し対象となるデータのアドレスが記憶されたレジスタ（ベースレジスタ）を示している。また、“＃４”は、１要素（１ワード）を読み出す毎に、参照アドレスの値に“４”（４バイト＝１ワード分）加算することを意味している。
【００２６】
このような命令が入力されると、ベースレジスタの値％ｂａｓｅがレジスタファイル部７０から読み出される。
％ｂａｓｅの値は、１６進数表示で８桁の数値（例えば、“０ｘ１８００００００”等）として表され、この％ｂａｓｅの値において、上位４桁はメモリアクセスモードを示している。具体的には、％ｂａｓｅにおける上位４桁が“１８００”であるときにはノーマルモードを意味し、上位４桁が“１８０４”であるときにはサーキュラーモードを意味している。
【００２７】
上述のロード命令において、％ｂａｓｅ＝０ｘ１８００００００（１６進数表示で１８００００００）であったとすると、８要素分のデータを読み出す毎に、メモリ９０の参照アドレスは、
％ｂａｓｅ＝０ｘ１８００００００，０ｘ１８０００００４，０ｘ１８０００００８
，０ｘ１８０００００Ｃ，０ｘ１８００００１０，０ｘ１８００００１４
，０ｘ１８００００１８，０ｘ１８００００１Ｃ
の順に変化することとなる。
【００２８】
この場合、図２に示すように、メモリ９０の横幅が６４バイトであることから、読み出される８要素のデータ全ては、メモリ９０の同一行上に記憶されているデータとなる。
ここで、上述のロード命令において、％ｂａｓｅ＝０ｘ１８００００００＋０ｘ３０＝０ｘ１８００００３０であったとする。
このとき、８要素分のデータを読み出す毎に、メモリ９０の参照アドレスは、
％ｂａｓｅ＝０ｘ１８００００３０，０ｘ１８００００３４，０ｘ１８００００３８
，０ｘ１８００００３Ｃ，０ｘ１８００００３０，０ｘ１８００００４４
，０ｘ１８００００４８，０ｘ１８００００４Ｃ
の順に変化することとなる。
【００２９】
この場合、図３に示すように、第４要素から第５要素に読み出し対象が移行する際に、メモリ９０の右側の境界を越えてアクセスが行われることとなる。そして、％ｂａｓｅの上位４桁が“０ｘ１８００”、即ち、ノーマルモードでのアクセスが指定されていることから、第５要素の参照アドレスは、次行の先頭アドレスへと移行する。
一方、上述のロード命令において、％ｂａｓｅ＝０ｘ１８０４００００＋０ｘ３０＝０ｘ１８０４００３０であったとする。
【００３０】
このとき、サーキュラーモードでのアクセスが指定されていることから、８要素分のデータを読み出す毎に、メモリ９０の参照アドレスは、
％ｂａｓｅ＝０ｘ１８０４００３０，０ｘ１８０４００３４，０ｘ１８０４００３８
，０ｘ１８０４００３Ｃ，０ｘ１８０４００００，０ｘ１８０４０００４
，０ｘ１８０４０００８，０ｘ１８０４０００Ｃ
の順に変化し、下位２桁は“０ｘ３Ｆ”で飽和させ、以後は“０ｘ００”に戻るようにアドレスが算出される。
【００３１】
つまり、メモリ９０における行方向のアドレスは６４バイト分で飽和させ、桁の繰り上げを行わないように、％ｂａｓｅにおける下位６ビットのみを用いてアドレスが算出される。
この結果、図４に示すように、第４要素から第５要素に読み出し対象が移行する際に、メモリ９０の右側の境界を越えてアクセスが行われることとなるが、第５要素の参照アドレスは、同一行の先頭アドレスへと移行する。
【００３２】
このように、サーキュラーモードあるいはノーマルモードを指定したロード命令が入力可能であることにより、ベクトル命令として入力されたロード命令の実行中に、メモリ９０の行方向の境界を越えてアクセスが行われる場合であっても、条件判定をすることなく、プログラマの意図したメモリアクセスを行うことが可能となる。
なお、本実施の形態においては、サーキュラーモードを指定するために、０ｘ４００００を命令コード中のメモリアドレスに加算するものである。そのため、メモリアクセスモードの判定後は、アドレス制御における混乱を避けるため、０ｘ４００００をメモリアドレスから減算して以後の処理を行うものとする。
【００３３】
また、ここではロード命令を例に挙げて説明したが、ストア命令の場合も同様の方法によって、メモリアクセスモードを指定することが可能である。
以上のように、本実施の形態に係る演算処理装置１は、ロード命令およびストア命令の命令コード中、アドレス指定フィールドの上位側において、メモリアクセスモードを指定可能である。
【００３４】
したがって、ベクトル命令として入力されたロード命令あるいはストア命令の実行中に、メモリ９０の行方向の境界を越えてアクセスが行われる場合であっても、条件判定をすることなく、プログラマの意図したメモリアクセスを行うことが可能となる。即ち、演算処理装置１において、他のベクトル命令と並列に、メモリ境界を越えるロード命令およびストア命令を処理することが可能となる。
【００３５】
また、命令コード中のアドレスを指定することで、メモリ９０に対するメモリアクセスモードを切り換えることができるため、単一のメモリ９０を用途によって使い分けることが可能となる。そのため、メモリ資源を有効に活用することができる。
なお、メモリの構造上、同一行に対して重複してアクセスすることが困難であることから、一般に、メモリの横幅（行方向のサイズ）を小さくし、行数を多くすることで、同一の記憶容量でも有効にメモリを使用できる構成が望まれる。
【００３６】
この場合、データのロードあるいはストア時に、メモリ境界を越えてアクセスされる機会がさらに増加することから、本発明の効果がより顕著なものとなる。
【図面の簡単な説明】
【００３７】
【図１】本発明に係る演算処理装置１の機能構成を示すブロック図である。
【図２】ロード命令の参照アドレスが同一行内となる場合の概念を示す図である。
【図３】ノーマルモードにおいて、ロード命令の参照アドレスがメモリ境界を越える場合の概念を示す図である。
【図４】サーキュラーモードにおいて、ロード命令の参照アドレスがメモリ境界を越える場合の概念を示す図である。
【符号の説明】
【００３８】
１  演算処理装置、１０  フェッチ部、２０  デコード部、３０  プログラム制御部、４０  ロード部、５０  ストア部、６０  演算部、７０  レジスタファイル部、８０  メモリ制御部、９０  メモリ
【図１】
2005227848.tif 000003
【図２】
2005227848.tif 000004
【図３】
2005227848.tif 000005
【図４】
2005227848.tif 000006