(57)【要約】 【課題】演算資源の利用効率を向上させるとともに、命令の処理に要する時間が増大することを防止可能な処理装置を提供する。【解決手段】本実施形態の演算装置１００は、プログラムメモリ２１と、命令フェッチ部２２と、デコード部２４とを備える。プログラムメモリ２１は、データメモリ４０から所定のデータを読み出すメモリアクセス処理を、パイプライン処理の相互に異なるステージで実行する命令Ａおよび命令Ｂを記憶する。命令フェッチ部２２は、命令Ａおよび命令Ｂを同時にフェッチする。デコード部２４は、フェッチされた命令Ａおよび命令Ｂを同時にデコードする。【選択図】図２
2012150589.tif 000002
【特許請求の範囲】
【請求項１】
演算資源を用いた演算処理を、パイプライン処理の相互に異なるステージで実行する第１命令および第２命令を記憶する命令記憶部と、
前記第１命令および前記第２命令を同時にフェッチするフェッチ部と、
フェッチされた前記第１命令および前記第２命令を同時にデコードするデコード部と、
を備えることを特徴とする演算装置。
【請求項２】
デコードされた前記第１命令に従って前記演算処理を実行し、当該デコードされた前記第１命令に従った前記演算処理の後、デコードされた前記第２命令に従って前記演算処理を実行する演算処理部をさらに備える、
ことを特徴とする請求項１に記載の演算装置。
【請求項３】
前記第１命令は、パイプライン処理の第Ｎ段目のステージで前記演算処理を実行する一方、前記第２命令は、パイプライン処理の第Ｎ＋１段目のステージで前記演算処理を実行する、
ことを特徴とする請求項１または請求項２に記載の演算装置。
【請求項４】
前記演算資源は、データを格納するデータメモリである、
ことを特徴とする請求項１から請求項３の何れか１つに記載の演算装置。
【請求項５】
前記第１命令には、前記データメモリのうち、読み出すべき前記データが格納された領域を示すアドレス情報が記述される一方、前記第２命令には、前記アドレス情報を算出するための算出情報が記述され、
前記デコード部によって前記第１命令および前記第２命令がデコードされてから、前記第２命令に従った前記演算処理が開始されるまでの間に、前記算出情報を用いて前記アドレス情報を算出するアドレス情報算出部をさらに備え、
前記演算処理部が実行する演算処理は、前記データメモリのうち、前記アドレス情報が示す領域に格納された前記データを読み出す処理である、
ことを特徴とする請求項４に記載の演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、演算装置に関する。
【背景技術】
【０００２】
従来、１つの命令の処理を複数の処理単位に分割し、各処理を別々のハードウェア回路で実行するパイプライン方式を採用した演算装置（例えばマイクロプロセッサ）が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−９９２４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
パイプライン方式を採用した演算装置においては、例えばメモリなどの演算資源を効率的に利用することが求められている。本発明が解決しようとする課題は、演算資源の利用効率を向上させることが可能な演算装置を提供することである。
【課題を解決するための手段】
【０００５】
実施形態の演算装置は、命令記憶部と、フェッチ部と、デコード部とを備える。命令記憶部は、演算資源を用いた演算処理を、パイプライン処理の相互に異なるステージで実行する第１命令および第２命令を記憶する。フェッチ部は、第１命令および第２命令を同時にフェッチする。デコード部は、フェッチされた第１命令および第２命令を同時にデコードする。
【図面の簡単な説明】
【０００６】
【図１】本実施形態に係る演算装置のブロック図。
【図２】実施形態に係るロードストアユニットのブロック図。
【図３】命令Ａおよび命令Ｂのそれぞれの処理を説明するための図。
【図４】実施形態の演算装置の動作を示すタイミングチャート。
【図５−１】対比例の演算装置の動作を示すタイミングチャート。
【図５−２】対比例の演算装置の動作を示すタイミングチャート。
【図６】変形例の演算装置のブロック図。
【図７】命令Ｃの処理を説明するための図。
【図８】変形例の演算装置の動作を示すタイミングチャート。
【発明を実施するための形態】
【０００７】
図１は、本実施形態の演算装置１００の概略構成の一例を示すブロック図である。図１に示すように、演算装置１００は、制御ユニット１０と、ロードストアユニット２０と、データレジスタ３０と、データメモリ４０とを備える。演算資源の一例であるデータメモリ４０には各種のデータが格納される。
【０００８】
制御ユニット１０は、演算装置１００全体を制御する。ロードストアユニット２０は、制御ユニット１０からの指示を受けて、命令のフェッチと、フェッチした命令のデコードとを実行する。そして、ロードストアユニット２０は、デコードした命令に従って、データメモリ４０からのデータを読み出す処理（「メモリアクセス処理」と呼ぶ）を実行する。メモリアクセス処理の詳細な内容は後述する。また、データレジスタ３０は、メモリアクセス処理により読み出されたデータや後述のアドレス情報の算出に用いられる補正値（オフセット）を記憶する。
【０００９】
図２は、ロードストアユニット２０の詳細な構成の一例を示すブロック図である。図２に示すように、ロードストアユニット２０は、プログラムメモリ２１と、命令フェッチ部２２と、レジスタ２３ａ〜２３ｆと、デコード部２４と、アドレス情報算出部２５と、選択部２６と、読み出し部２７と、書き込み部２８とを備える。
【００１０】
プログラムメモリ２１は、所定のプログラムコードで記述された２種類の命令（命令Ａ、命令Ｂ）を記憶する。本実施形態では、命令Ａおよび命令Ｂのそれぞれは、データメモリ４０からのデータの読み出しをロードストアユニット２０に行わせるための命令である。そして、命令Ａおよび命令Ｂのそれぞれの処理は、複数のステージ（工程）に分割され、相互に異なるステージで上述のメモリアクセス処理が行われる。さらに詳述すれば、図３に示すように、命令Ａの処理は、ステージＴ１とステージＴ２とステージＴ３とステージＴ４とに分割される。そして、ステージＴ１でフェッチ処理ＩＦが行われ、ステージＴ１の直後のステージＴ２でデコード処理ＩＤが行われ、ステージＴ２の直後のステージＴ３でメモリアクセス処理ＭＥＭが行われ、ステージＴ３の直後のステージＴ４でライトバック処理ＷＢが行われる。つまり、命令Ａの処理においては、第３段目のステージでメモリアクセス処理ＭＥＭが行われる。
【００１１】
また、図３に示すように、命令Ｂの処理は、ステージＴ１とステージＴ２とステージＴ３とステージＴ４とステージＴ５とに分割される。そして、ステージＴ１でフェッチ処理ＩＦが行われ、ステージＴ２でデコード処理ＩＤが行われ、ステージＴ３でアドレス算出処理ＥＸが行われ、ステージＴ４でメモリアクセス処理ＭＥＭが行われ、ステージＴ５でライトバック処理ＷＢが行われる。つまり、命令Ｂの処理においては、第４段目のステージでメモリアクセス処理ＭＥＭが行われるので、命令Ａの処理に比べて、メモリアクセス処理ＭＥＭが行われるまでのステージ数が１だけ多い。各処理の詳細な内容については後述する。なお、本実施形態では、各ステージ（Ｔ１〜Ｔ５）の時間長は同じである。つまり、各ステージの処理に必要なクロックサイクル数は同じである。
【００１２】
再び図２に戻って説明を続ける。命令フェッチ部２２は、プログラムメモリ２１から、２つの命令を同時にフェッチできるように構成される。例えば命令フェッチ部２２は、２つのフェッチ回路から構成されてもよいし、ＶＬＩＷ（Very Long Instruction Word）方式が採用された構成であってもよい。命令フェッチ部２２は、制御ユニット１０からの指示に従って、プログラムメモリ２１に格納された命令Ａと命令Ｂを同時にフェッチする。より具体的には以下のとおりである。制御ユニット１０は、命令フェッチ部２２に対して、プログラムメモリ２１のうち、読み出すべき命令Ａおよび命令Ｂのそれぞれが格納された領域を示す命令アドレス情報を供給する。そして、命令フェッチ部２２は、制御ユニット１０からの命令アドレス情報を参照して、命令Ａおよび命令Ｂのそれぞれをプログラムメモリ２１から読み出し、読み出した命令Ａをレジスタ２３ａに書き込み、読み出した命令Ｂをレジスタ２３ｂに書き込む。
【００１３】
デコード部２４は、２つの命令を同時にデコードできるように構成されている。例えばデコード部２４は、２つのデコード回路から構成されてもよいし、ＶＬＩＷ方式が採用された構成であってもよい。デコード部２４は、レジスタ２３ａに書き込まれた命令Ａおよびレジスタ２３ｂに書き込まれた命令Ｂのそれぞれを同時にデコードする。本実施形態では、命令Ａを構成するプログラムコード内には、データメモリ４０のうち、読み出すべきデータが格納された領域を示すアドレス情報が記述されているので、デコード部２４は、デコードした命令Ａから、直ちにアドレス情報を特定することができる。そして、デコード部２４は、デコードした命令Ａから特定したアドレス情報をレジスタ２３ｃに書き込み、レジスタ２３ｃに書き込まれたアドレス情報は、後段の選択部２６へ供給される。
【００１４】
一方、命令Ｂを構成するプログラムコード内には、上述のアドレス情報は記述されておらず、アドレス情報を算出するための算出情報が記述されている。本実施形態では、算出情報は、アドレス情報の算出の際の基準値Ｉを示す基準情報と、データレジスタ３０のうち、基準値Ｉに加算すべき補正値Ｒが格納された領域を示すレジスタ情報とからなる。デコード部２４は、デコードした命令Ｂから特定した基準値Ｉをレジスタ２３ｄへ書き込み、レジスタ２３ｄに書き込まれた基準値Ｉは後段のアドレス情報算出部２５へ供給される。また、デコード部２４は、デコードした命令Ｂから特定したレジスタ情報をデータレジスタ３０へ供給する。データレジスタ３０は、デコード部２４からのレジスタ情報を受け付け、その受け付けたレジスタ情報が示す領域に格納された補正値Ｒを読み出す。そして、データレジスタ３０は、その読み出した補正値Ｒをレジスタ２３ｆへ供給する。
【００１５】
アドレス情報算出部２５は、レジスタ２３ｄから供給される基準値Ｉと、レジスタ２３ｆから供給される補正値Ｒとからアドレス情報を算出する。アドレス情報算出部２５は例えば加算器で構成され、レジスタ２３ｄから供給される基準値Ｉと、レジスタ２３ｆから供給される補正値Ｒとの加算結果を示す値がアドレス情報となる。アドレス情報算出部２５で算出されたアドレス情報はレジスタ２３ｅに書き込まれる。レジスタ２３ｅに書き込まれたアドレス情報は後段の選択部２６へ供給される。
【００１６】
選択部２６は、レジスタ２３ｃに書き込まれたアドレス情報（つまりは、命令Ａによって指定されたアドレス情報）、および、レジスタ２３ｅに書き込まれたアドレス情報（つまりは、命令Ｂによって指定されたアドレス情報）のうちの何れか一方を選択して後段の読み出し部２７へ供給する。選択部２６は、例えばマルチプレクサなどの選択回路で構成され、一方の入力端には、レジスタ２３ｃに書き込まれたアドレス情報（命令Ａによって指定されたアドレス情報）が供給され、他方の入力端には、レジスタ２３ｅに書き込まれたアドレス情報（命令Ｂによって指定されたアドレス情報）が供給される。また、選択部２６には、デコード部２４からの選択制御信号（不図示）が供給される。選択部２６は、デコード部２４からの選択制御信号に応じて、一方の入力端および他方の入力端のうちの何れかに供給されるデータ（アドレス情報）を、後段の読み出し部２７へ供給する。
【００１７】
読み出し部２７は、データメモリ４０のうち、選択部２６から供給されたアドレス情報が示す領域に格納されたデータを読み出す。読み出し部２７は、読み出したデータを書き込み部２８へ供給する。書き込み部２８は、読み出し部２７から供給されたデータをデータレジスタ３０の所定の領域に書き込む。
【００１８】
図４は、演算装置１００の動作を説明するためのタイミングチャートである。以下、図４を参照しながら、演算装置１００の具体的な動作を説明する。本実施形態では、演算装置１００は、命令Ａと命令Ｂとをパイプライン方式で同時に実行する。以下、詳細な内容について説明する。ここでは、図４の各期間（Ｔ１１〜Ｔ５５）の時間長は、上述の各ステージ（Ｔ１〜Ｔ５）の時間長と同じである。
【００１９】
図４に示すように、最初の期間Ｔ１１は、命令Ａおよび命令Ｂのそれぞれの処理におけるステージＴ１（図３参照）となり、命令Ａのフェッチ処理ＩＦと命令Ｂのフェッチ処理ＩＦとが実行される。より具体的には、命令フェッチ部２２は、プログラムメモリ２１のうち、制御ユニット１０から供給された命令アドレス情報が示すそれぞれの領域から、命令Ａと命令Ｂを同時に読み出し、読み出した命令Ａをレジスタ２３ａに書き込み、読み出した命令Ｂをレジスタ２３ｂに書き込む。
【００２０】
図４に示すように、期間Ｔ１１の直後の期間Ｔ２２は、命令Ａおよび命令Ｂのそれぞれの処理におけるステージＴ２（図３参照）となり、命令Ａのデコード処理ＩＤと命令Ｂのデコード処理ＩＤとが実行される。より具体的には、デコード部２４は、レジスタ２３ａに書き込まれた命令Ａとレジスタ２３ｂに書き込まれた命令Ｂとを同時にデコードする。そして、デコード部２４は、デコードした命令Ａから特定したアドレス情報をレジスタ２３ｃに書き込む。また、デコード部２４は、デコードした命令Ｂから特定した基準値Ｉをレジスタ２３ｄへ書き込むとともに、デコードした命令Ｂの内容から特定したレジスタ情報をデータレジスタ３０へ供給する。
【００２１】
図４に示すように、期間Ｔ２２の直後の期間Ｔ３３は、命令Ａおよび命令Ｂのそれぞれの処理におけるステージＴ３（図３参照）となり、命令Ａのメモリアクセス処理ＭＥＭが実行される一方、命令Ｂのアドレス算出処理ＥＸが実行される。より具体的には以下のとおりである。期間Ｔ３３では、図２の選択部２６には、一方の入力端に供給されるデータ（つまり、レジスタ２３ｃに書き込まれた、命令Ａによって指定されたアドレス情報）の選択を指示する選択制御信号がデコード部２４から供給される。これにより、読み出し部２７には、命令Ａによって指定されたアドレス情報が供給される。そして、読み出し部２７は、データメモリ４０のうち、選択部２６から供給されたアドレス情報が示す領域に格納されたデータを読み出す。以上が命令Ａのメモリアクセス処理ＭＥＭの内容である。
【００２２】
また、期間Ｔ３３では、データレジスタ３０は、デコード部２４からのレジスタ情報が示す領域に格納された補正値Ｒを読み出し、その読み出した補正値Ｒをレジスタ２３ｆへ供給する。そして、アドレス情報算出部２５は、レジスタ２３ｄに書き込まれた基準値Ｉと、レジスタ２３ｆから供給された補正値Ｒとを加算して、命令Ｂによって指定されたアドレス情報を算出し、その算出したアドレス情報をレジスタ２３ｅに書き込む。以上が命令Ｂのアドレス算出処理ＥＸの内容である。
【００２３】
図４に示すように、期間Ｔ３３の直後の期間Ｔ４４は、命令Ａおよび命令Ｂのそれぞれの処理におけるステージＴ４（図３参照）となり、命令Ａのライトバック処理ＷＢが実行される一方、命令Ｂのメモリアクセス処理ＭＥＭが実行される。より具体的には以下のとおりである。期間Ｔ４４では、書き込み部２８は、ステージＴ３で読み出し部２７によって読み出されたデータ（命令Ａによって読み出しが指示されたデータ）を読み出し部２７から受け取り、その受け取ったデータをデータレジスタ３０の所定の領域に書き込む。以上が命令Ａのライトバック処理ＷＢの内容であり、期間Ｔ４４の終了とともに、命令Ａの処理は終了する。
【００２４】
また、期間Ｔ４４では、図２の選択部２６には、他方の入力端子に供給されるデータ（つまり、レジスタ２３ｅに書き込まれた、命令Ｂによって指定されたアドレス情報）の選択を指示する選択制御信号がデコード部２４から供給される。これにより、読み出し部２７には、命令Ｂによって指定されたアドレス情報が供給される。そして、読み出し部２７は、データメモリ４０のうち、選択部２６から供給されたアドレス情報が示す領域に格納されたデータを読み出す。以上が命令Ｂのメモリアクセス処理ＭＥＭの内容である。
【００２５】
図４に示すように、期間Ｔ４４の直後の期間Ｔ５５は、命令Ｂの処理におけるステージＴ５（図３参照）となり、命令Ｂのライトバック処理ＷＢのみが実行される。より具体的には、期間Ｔ５５では、書き込み部２８は、期間Ｔ４４で読み出し部２７によって読み出されたデータ（命令Ｂによって読み出しが指示されたデータ）を読み出し部２７から受け取り、その受け取ったデータをデータレジスタ３０の所定の領域に書き込む。以上が命令Ｂのライトバック処理ＷＢの内容であり、期間Ｔ５５の終了とともに、命令Ｂの処理は終了する。
【００２６】
以上に説明したように、本実施形態によれば、メモリアクセス処理ＭＥＭが行われるステージが相互に異なる命令Ａおよび命令Ｂが同時に実行されるので、データメモリ４０の利用効率を向上させることができる。より具体的には、図４に示すように、本実施形態では、メモリアクセス処理ＭＥＭが行われるステージが「１」だけ相互に異なる命令Ａおよび命令Ｂが同時に実行されるので、データメモリ４０を、期間Ｔ３３および期間Ｔ４４にわたって連続して動作させることができる。これにより、データメモリ４０の利用効率を向上させることができる。また、本実施形態によれば、命令Ａのメモリアクセス処理ＭＥＭと命令Ｂのメモリアクセス処理ＭＥＭとが同じタイミングで行われることを防止できるので、命令の処理に要する時間が増大することを防止することもできる。
【００２７】
ここで、パイプライン処理の相互に異なるステージでメモリアクセス処理ＭＥＭが行われる２つの命令を順番に実行する場合を想定する。２つの命令のうち、メモリアクセス処理ＭＥＭが行われるまでのステージ数が少ない方の命令を第１命令、メモリアクセス処理が行われるまでのステージ数が多い方の命令を第２命令として、第１命令→第２命令の順番でそれぞれの命令を実行する場合は、第１命令のメモリアクセス処理が行われてから、第２命令のメモリアクセス処理が行われるまでの期間が長くなるので、メモリが動作せずに待機状態となる期間も長くなる。これにより、メモリの利用効率が低くなるという問題が起こる。
【００２８】
例えば図５−１に示すように、命令Ａ→命令Ｂの順番で実行する場合は、期間Ｔ３３において命令Ａのメモリアクセス処理ＭＥＭが行われ、期間Ｔ５５において命令Ｂのメモリアクセス処理ＭＥＭが行われる。すなわち、期間Ｔ４４においてデータメモリ４０は動作せずに待機状態となるので、データメモリ４０の利用効率が低くなる。
【００２９】
一方、第２命令→第１命令の順番でそれぞれの命令を実行する場合は、第１命令のメモリアクセス処理ＭＥＭと、第２命令のメモリアクセス処理ＭＥＭとが同じタイミングで行われるおそれがある。この場合、第２命令のメモリアクセス処理ＭＥＭが終了するまで、第１命令のメモリアクセス処理ＭＥＭを実行できないので、結果として、命令の処理に要する時間が増大するという問題が起こる。
【００３０】
例えば図５−２に示すように、命令Ｂ→命令Ａの順番で実行する場合は、命令Ｂのメモリアクセス処理ＭＥＭが行われる期間と、命令Ａのメモリアクセス処理ＭＥＭが行われる期間とが共に期間Ｔ４４となってしまうので、命令Ｂのメモリアクセス処理ＭＥＭが終了するまで他の命令Ａのメモリアクセス処理ＭＥＭを行うことができず、結果として、命令の処理に要する時間が増大してしまう。
【００３１】
以上より、パイプライン処理の相互に異なるステージでメモリアクセス処理ＭＥＭが行われる２つの命令を順番に実行する場合は、データメモリ４０の利用効率が低くなる、または、命令の処理に要する時間が増大するといった問題が起こる。
【００３２】
これに対して、本実施形態によれば、データメモリ４０を、期間Ｔ３３および期間Ｔ４４にわたって連続して動作させることができるので、図５−１の場合に比べて、データメモリの利用効率を向上させることが可能になる。また、本実施形態によれば、命令Ａのメモリアクセス処理ＭＥＭが行われる期間と命令Ｂのメモリアクセス処理ＭＥＭが行われる期間とが同じ期間になることを防止できるので、図５−２の場合とは異なり、命令の処理に要する時間が増大することを防止できる。すなわち、本実施形態によれば、データメモリ４０の利用効率を向上させるとともに命令の処理に要する時間が増大することを防止できる。
【００３３】
（変形例）
以上、本発明の実施形態を説明したが、この実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【００３４】
例えば、上述の実施形態では、メモリアクセス処理が行われるステージが「１」だけ相互に異なる２つの命令（命令Ａ、命令Ｂ）が同時に実行されているが、これに限らず、例えばメモリアクセス処理が行われるステージが「２」だけ相互に異なる２つの命令が同時に実行されてもよい。要するに、メモリアクセス処理が行われるステージが相互に異なる２つの命令が同時に実行されるものであればよい。
【００３５】
上述の実施形態では、データレジスタ３０には、補正値Ｒと、メモリアクセス処理によって読み出されたデータとが格納されているが、例えば補正値Ｒが格納されるレジスタと、メモリアクセス処理によって読み出されたデータとが別々のレジスタに格納される構成であってもよい。
【００３６】
上述の実施形態では、多重化して設けることができない演算資源の一例としてデータメモリを挙げ、その演算資源を用いた演算処理の一例としてメモリアクセス処理を挙げて説明したが、これに限らず、上述の演算資源や演算資源を用いた演算処理の内容は任意である。
【００３７】
上述の実施形態では、基準値Iと補正値Ｒとが加算されることでアドレス情報が算出されているが、これに限らず、アドレス情報の算出方法は任意である。例えばデータレジスタ３０には、アドレス情報の算出に用いられる各種のパラメータ値が記憶され、命令Ｂによって指定された複数（例えば２つ）のパラメータ値に基づいてアドレス情報が算出される構成であってもよい。
【００３８】
上述の実施形態では、同時にフェッチ、デコードする命令は２つであるが、これに限らず、例えば、メモリアクセス処理ＭＥＭが行われるステージが相互に異なる３つ以上の命令を同時にフェッチ、デコードすることも可能である。以下、一例を挙げて説明する。図６は、メモリアクセス処理ＭＥＭが行われるステージが「１」だけ相互に異なる命令Ａ、命令Ｂおよび命令Ｃを同時に実行する演算装置２００の構成の一例を示すブロック図である。図６に示すように、ロードストアユニット２０は、上述の実施形態で説明した内容に加えて、レジスタ２３ｇ、２３ｈ、２３ｉ、２３ｊおよび２３ｋと、アドレス情報算出部５０と、アドレス情報算出部５１とをさらに備える。また、命令フェッチ部２２は、プログラムメモリ２１から、３つの命令を同時にフェッチできるように構成される。さらに、デコード部２４は、３つの命令を同時にデコードできるように構成されている。
【００３９】
図６の構成例では、プログラムメモリ２１は、所定のプログラムコードで記述された３種類の命令（命令Ａ、命令Ｂ、命令Ｃ）を記憶する。図７に示すように、命令Ｃの処理は、ステージＴ１とステージＴ２とステージＴ３とステージＴ４とステージＴ５とステージＴ６とに分割される。
【００４０】
図７に示すように、ステージＴ１では、フェッチ処理ＩＦが行われる。より具体的には、命令フェッチ部２２は、プログラムメモリ２１のうち、制御ユニット１０から供給された命令アドレス情報を参照して命令Ｃを読み出す。命令フェッチ部２２は、読み出した命令Ｃを図６に示すレジスタ２３ｇに書き込む。
【００４１】
図７に示すように、ステージＴ２では、デコード処理ＩＤが行われる。より具体的には以下のとおりである。デコード部２４は、レジスタ２３ｇに書き込まれた命令Ｃをデコードする。ここでは、命令Ｃを構成するプログラムコード内には、上述のアドレス情報は直接記述されておらず、アドレス情報を算出するための算出情報が記述されている。当該算出情報は、アドレス情報の算出の際の基準値Ｉを示す基準情報と、データレジスタ３０のうち読み出すべき補正値Ｒ２が格納された領域を示すレジスタ情報とからなる。そして、デコード部２４は、デコードした命令Ｃから特定した基準値Ｉを図６に示すレジスタ２３ｈへ書き込むとともに、デコードした命令Ｃの内容から特定したレジスタ情報をデータレジスタ３０へ供給する。
【００４２】
図７に示すように、ステージＴ３では、アドレス算出処理ＥＸ１が行われる。より具体的には以下のとおりである。図６に示すデータレジスタ３０は、デコード部２４からのレジスタ情報が示す領域に格納された補正値Ｒ２を読み出し、その読み出した補正値Ｒ２を図６に示すレジスタ２３ｉへ供給する。そして、図６に示すアドレス情報算出部５０は、自身が有する固有値Ｍと、レジスタ２３ｉに書き込まれた補正値Ｒ２とを乗算してオフセット値Ｘを算出する。アドレス情報算出部５０は、算出したオフセット値Ｘと、レジスタ２３ｈから供給された基準値Ｉとを図６に示すレジスタ２３ｊに書き込む。以上が命令Ｃのアドレス算出処理ＥＸ１の内容である。
【００４３】
図７に示すように、ステージＴ４では、アドレス算出処理ＥＸ２が行われる。より具体的には、図６に示すアドレス情報算出部５１は、レジスタ２３ｊから供給されたオフセット値Ｘと基準値Ｉとを加算して、命令Ｃによって指定されたアドレス情報を算出する。アドレス情報算出部５１は、その算出したアドレス情報をレジスタ２３ｋに書き込む。以上が命令Ｃのアドレス算出処理ＥＸ２の内容である。
【００４４】
図７に示すように、ステージＴ５では、メモリアクセス処理ＭＥＭが行われる。より具体的には以下のとおりである。ここで、図６に示す選択部２６は、レジスタ２３ｃに書き込まれたアドレス情報（命令Ａによって指定されたアドレス情報）が供給される第１入力端子と、レジスタ２３ｅに書き込まれたアドレス情報（命令Ｂによって指定されたアドレス情報）が供給される第２入力端子と、レジスタ２３ｋに書き込まれたアドレス情報（命令Ｃによって指定されたアドレス情報）が供給される第３入力端子とを有する。選択部２６は、デコード部２４から供給される選択制御信号（不図示）に応じて、何れかの入力端子に供給されるアドレス情報を後段の読み出し部２７へ供給する。上記ステージＴ５では、選択部２６には、命令Ｃによって指定されたアドレス情報の選択を指示する選択制御信号がデコード部２４から供給される。これにより、読み出し部２７には、命令Ｃによって指定されたアドレス情報が供給される。そして、読み出し部２７は、データメモリ４０のうち、選択部２６から供給されたアドレス情報が示す領域に格納されたデータを読み出す。以上が命令Ｃのメモリアクセス処理ＭＥＭの内容である。
【００４５】
図７に示すように、ステージＴ６では、ライトバック処理ＷＢが行われる。より具体的には、書き込み部２８は、読み出し部２７によって読み出されたデータ（命令Ｃによって読み出しが指示されたデータ）を読み出し部２７から受け取り、その受け取ったデータをデータレジスタ３０の所定の領域に書き込む。以上が命令Ｃのライトバック処理ＷＢの内容である。
【００４６】
以上に説明したように、命令Ｃの処理においては、第５段目のステージＴ５でメモリアクセス処理ＭＥＭが行われるので、命令Ａの処理に比べて、メモリアクセス処理ＭＥＭが行われるまでのステージ数が２だけ多く、命令Ｂの処理に比べて、メモリアクセス処理ＭＥＭが行われるまでのステージ数が１だけ多い。そして、命令Ａと命令Ｂと命令Ｃとが同時に実行されることにより、データメモリ４０を連続して動作させることができるとともに、命令Ａ、命令Ｂおよび命令Ｃのそれぞれのメモリアクセス処理ＭＥＭが同じタイミングで行われることを防止できる。要するに、第Ｎ段目のステージでメモリアクセス処理ＭＥＭが行われる命令と、第Ｎ＋１段目のステージでメモリアクセス処理ＭＥＭが行われる命令と、第Ｎ＋２段目のステージでメモリアクセス処理ＭＥＭが行われる命令とが同時に実行されることにより、データメモリ４０を連続して動作させることができるとともに、各命令のメモリアクセス処理ＭＥＭが同じタイミングで行われることを防止できる。
【００４７】
また、上述の実施形態の変形例として、演算装置１００は、メモリアクセス処理によって読み出されたデータを用いて所定の演算を実行する実行ユニットをさらに備えることもできる。また、図８に示すように、演算装置１００は、命令Ａおよび命令Ｂの処理を同時に開始してから、２ステージ分だけ待機した後に、別の命令Ａおよび命令Ｂの処理を同時に開始することもできる。さらに、各ステージ（Ｔ１〜Ｔ５）の時間長は任意である。例えばアドレス算出処理が行われるステージの時間長が、フェッチ処理やデコード処理が行われるステージの時間長より長くなり、より多くのクロックサイクル数が必要となってもよい。
【符号の説明】
【００４８】
１０  制御ユニット
２０  ロードストアユニット
２１  プログラムメモリ
２２  命令フェッチ部
２４  デコード部
２７  読み出し部
４０  データメモリ
１００  演算装置 
【図１】
2012150589.tif 000003
【図２】
2012150589.tif 000004
【図３】
2012150589.tif 000005
【図４】
2012150589.tif 000006
【図５−１】
2012150589.tif 000007
【図５−２】
2012150589.tif 000008
【図６】
2012150589.tif 000009
【図７】
2012150589.tif 000010
【図８】
2012150589.tif 000011