(57)【特許請求の範囲】
【請求項１】
１個の命令を複数の処理ステージに分割し、複数の命令の異なった処理ステージを同時の１クロックサイクルで処理するパイプライン処理方法おいて、
レジスタ又はメモリに対するデータ書き込み直前の第１のシフト・マスク処理と前記レジスタ又はメモリに対するデータ読み出し直後の第２のシフト・マスク処理を各々半クロックサイクル内で行ない、且つ前記第２のシフト・マスク処理の後に演算を１クロックサイクル行い、該演算の後に前記第１のシフト・マスク処理を行うことを特徴とするパイプライン処理方法。
【請求項２】
請求項１において、
前記レジスタ又はメモリに対するデータ読み出しを半クロックサイクルで行い、前記第１のシフト・マスク処理の後に前記レジスタ又はメモリに対するデータ書き込みを半クロックサイクルで行うことを特徴とするパイプライン処理方法。
【請求項３】
請求項１又は２において、
前記第１及び第２のシフト・マスク処理が共通のシフト・マスク回路により行われることを特徴とするパイプライン処理方法。
【請求項４】
レジスタ又はメモリと、該レジスタ又はメモリに対して第２のデータバスのデータをシフト・マスク処理して書き込み及び前記レジスタ又はメモリから読み出したデータをシフト・マスクして第１のデータバスに送るシフト・マスク回路と、前記第１のデータバスのデータについての演算を行い該演算結果を前記第２のデータバスに送る算術演算装置とを有し、パイプライン処理を行うプロセッサ装置において、
前記レジスタ又はメモリの出力データと前記シフト・マスク回路の出力データの一方を選択して前記第１のデータバスに送る第１のマルチプレクサと、前記第１のデータバスのデータを一時保持して前記算術演算装置に送る第１の一時レジスタと、前記算術演算装置の出力データと別のデータの一方を選択する第２のマルチプレクサと、該第２のマルチプレクサの出力データを一時保持して前記第２のデータバスに送る第２の一時レジスタとを具備することを特徴とするプロセッサ装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、少ないリソースで高速に動作するパイプライン処理方法及びその処理方法を実施するためのプロセッサ装置に関するものである。
【０００２】
【従来の技術】
図４に、従来のプロセッサ装置の動作例のタイミングチャートを示す。このプロセッサ装置はパイプライン処理を行っている。パイプライン処理とは、複数の命令をオーバーラップさせて同時実行する技術である。１個の命令の処理過程を複数の小さな処理単位に分割し、パイプラインの１ステップで、命令の１部分を担当し、実行する。この処理単位をパイプラインステージ（以下ステージ）と呼ぶ。
【０００３】
このプロセッサ装置では、１個の命令の処理は、６個のステージに分割される。すなわち、Program Fetch（プログラムフェッチ：以下ｐｆ）、Decode（解読、以下ｄｃ）、Address Calculating（アドレス演算：以下ａｃ）、Data Memory Read（データメモリ読み出し：以下ｄｒ）、Execute（実行：以下ｅｘｅ）、Data Memory Write（データメモリ書き込み：以下ｄｗ）である。
【０００４】
図４中、横方向はクロックサイクル（時間）で、縦方向には処理が行われる順に複数命令が並んでいる。始めのクロックサイクルで、ｎ番目の命令がｐｆステージでの処理を行わせる。次のクロックサイクルで、ｎ番目の命令がｄｃステージでの処理を、ｎ＋１番目の命令がｐｆステージでの処理を、それぞれ行わせる。同様に、クロックサイクルが進むにつれ、命令はステージ毎に処理を行われてゆく。実際は、１命令の処理には６クロックサイクルかかるが、１クロックサイクル毎に１つの命令の処理が終了するため、見かけ上は１クロックサイクルで１命令を処理していることになる。
【０００５】
以上の様なパイプライン処理を行うためには、各ステージの実行時間は均等でなければならない。よって、実行時間が最も長いステージに他のステージの長さを合わせる事になる。
【０００６】
図３は、上記プロセッサ装置のｅｘｅステージを実施する部分の構成を表している。ｅｘｅステージは、算術演算装置（ＡＬＵ）７、特定ビットのシフト処理及び／又はマスク処理を行うシフト・マスク回路３を具備しており、レジスタ１０又はメモリ１１から読み出したデータの一方をマルチプレクサ５で選択し、第１のデータバス１を経由してシフト・マスク回路３でシフトやマスク処理を施した後、算術演算装置７で演算を行い、その結果に対し、シフト・マスク回路１２でシフトやマスク処理を施し、マルチプレクサ８で選択して第２のデータバス２に送っている。
【０００７】
【発明が解決しようとする課題】
上記のように、従来のｅｘｅステージのアーキテクチャでは、マスクやシフト処理もこのｅｘｅステージで処理するので、他のステージの処理時間よりも長くなってしまうため、これ以上の高速化を図る事が出来なかった。また、演算処理及びシフト・マスク処理は、これ以上簡素化又は高速化するのが比較的難しい部分であり、この点もｅｘｅステージの処理時間の増大の一因となっていた。
【０００８】
本発明は、上記問題点に鑑みてなされたもので、その目的は、リソースの増加を招くことなく高速化を図ることができるようにしたパイプライン処理方法及びそれを実施するプロセッサ装置を提供することである。
【０００９】
【課題を解決するための手段】
請求項１にかかる発明は、１個の命令を複数の処理ステージに分割し、複数の命令の異なった処理ステージを同時の１クロックサイクルで処理するパイプライン処理方法おいて、レジスタ又はメモリに対するデータ書き込み直前の第１のシフト・マスク処理と前記レジスタ又はメモリに対するデータ読み出し直後の第２のシフト・マスク処理を各々半クロックサイクル内で行ない、且つ前記第２のシフト・マスク処理の後に演算を１クロックサイクル行い、該演算の後に前記第１のシフト・マスク処理を行うことを特徴とするパイプライン処理方法とした。
【００１０】
請求項２にかかる発明は、請求項１にかかる発明において、前記レジスタ又はメモリに対するデータ読み出しを半クロックサイクルで行い、前記第１のシフト・マスク処理の後に前記レジスタ又はメモリに対するデータ書き込みを半クロックサイクルで行うことを特徴とするパイプライン処理方法とした。
【００１１】
請求項３にかかる発明は、請求項１又は２にかかる発明において、前記第１及び第２のシフト・マスク処理が共通のシフト・マスク回路により行われることを特徴とするパイプライン処理方法とした。
【００１２】
請求項４にかかる発明は、レジスタ又はメモリと、該レジスタ又はメモリに対して第２のデータバスのデータをシフト・マスク処理して書き込み及び前記レジスタ又はメモリから読み出したデータをシフト・マスクして第１のデータバスに送るシフト・マスク回路と、前記第１のデータバスのデータについての演算を行い該演算結果を前記第２のデータバスに送る算術演算装置とを有し、パイプライン処理を行うプロセッサ装置において、前記レジスタ又はメモリの出力データと前記シフト・マスク回路の出力データの一方を選択して前記第１のデータバスに送る第１のマルチプレクサと、前記第１のデータバスのデータを一時保持して前記算術演算装置に送る第１の一時レジスタと、前記算術演算装置の出力データと別のデータの一方を選択する第２のマルチプレクサと、該第２のマルチプレクサの出力データを一時保持して前記第２のデータバスに送る第２の一時レジスタとを具備することを特徴とするプロセッサ装置とした。
【００１４】
【発明の実施の形態】
本実施形態では、シフト・マスク処理をｅｘｅステージの前後のステージで行えるように構成し、またクロックサイクルの半分以下のアクセス速度のレジスタ又はメモリを用意することで、１個のシフト・マスク回路により１クロックサイクル内に２度シフト・マスク処理を実施し、高速化を図る。
【００１５】
すなわち、シフト・マスク処理を、ｅｘｅステージから外し、その前段のｄｒステージ及びその後段に設けた新たなステージで行うように構成することにより、ｅｘｅステージでの処理時間を大幅に短縮する。これにより、１ステージあたりのクロックサイクルが大幅に短縮されることになり、全体の処理速度が向上する。
【００１６】
また、別々のステージでシフト・マスク処理を行う場合には、リソースの競合が起こるため、シフト・マスク回路をｄｒステージ用と新たに設けたステージ用に２つ用意するのが普通であるが、１つの回路を１クロックサイクルに２度使用できるように構成したことで、競合が起こらず、リソースの増加を防ぐことができる。以下に詳しく説明する。
【００１７】
図１は、本発明の１つの実施形態のｅｘｅステージとその前後のステージを実施する構成部分を示す図である。この図は、データの流れ、すなわち処理の手順並びにクロックサイクルの経過を表している。１は第１のデータバス、２は第２のデータバス、３は第２のデータバス２のデータの特定ビットのシフト処理やマスク処理を行うシフト・マスク回路、４はデータが格納されるレジスタ又はメモリ（アクセス時間は半クロックサイクル内）、５はシフト・マスク回路３からの出力データとレジスタ又はメモリ４からの出力データの一方を選択して第１のデータバス１に出力する第１のマルチプレクサ、６は第１のデータバス１から取り込んだデータを一時保持する第１の一時レジスタ、７は第１の一時レジスタ６の出力データと図示しない別の回路から入力するデータとの算術演算を行う算術演算装置、８は算術演算装置７の演算結果と図示しない別の回路から入力するデータの一方を選択して出力する第２のマルチプレクサ、９は第２のマルチプレクサ８の出力データを一時保持して第２のデータバス２に送り出す第２の一時レジスタである。
【００１８】
本実施形態では、まず、第２のデータバス２に流れるデータが、シフト・マスク回路３でシフトやマスク処理を受けてから、レジスタ又はメモリ４ヘと送られそこに書き込まれる。レジスタ又はメモリ４から読み出されたデータは、シフト・マスク回路３で再度シフトやマスク処理を受けてから、第１のマルチプレクサ５へと送られる。この第１のマルチプレクサ５には、レジスタ又はメモリ３から読み出されシフト・マスク回路３を経由しないデータも送られる。第１のマルチプレクサ５でどちらのデータを選択するかは、ケースによりその都度変わるものとする。第１のマルチプレクサ５で選択されたデータは、第１のデータバス１へと送られる。ここまでのレジスタ又はメモリ４からのデータ読み出しとシフト・マスク回路３でのシフト・マスク処理は、１クロックサイクルで行われる。
【００１９】
第１のデータバス１のデータは第１の一時レジスタ６に保存されてから算術演算装置７へと送られ、他方から送られた、その都度異なるデータと演算される。演算内容も、その都度異なる。演算結果は第２のマルチプレクサ８へと送られる。ここでは、その演算結果と先ほどとは異なる他方から送られたデータとのどちらかが選択され、第２の一時レジスタ９へと保存され、第２のデータバス２に送り出される事になる。ここまでの第１の一時レジスタ６での保持から第２の一時レジスタ９での保持までの処理は、やはり１クロックサイクルで行われる。
【００２０】
図２に、本実施形態の動作例のタイミングチャートを示す。基本的には従来のプロセッサ装置と同様の動作を行うが、レジスタ又はメモリ３にそのアクセス時間がクロックサイクルの半分以下の高速なものを使用する事で、ｄｒステージ及びｄｗステージは、クロックサイクルの半分以下の処理時間とすることができる。また、ｅｘｅステージとｄｗステージの間に、１クロックサイクル分だけもう一つ新たなステージを設けてある。同図中、※で記されたシフト・マスク処理は、ｄｒステージの後段の空いた部分、及び新たに設けたステージの前段部分に配置してある。つまり、ｅｘｅステージの前後に※ステージであるシフト・マスク処理が配置してある。
【００２１】
図１との対応では、レジスタ又はメモリ４からのデータの読み出しがｄｒステージで、シフト・マスク回路３でのシフトやマスク処理が※ステージで、第１のデータバス１のデータを算術演算装置７により演算して第２のデータバス２に送り出す処理がｅｘｅステージで、第２のデータバス２のデータをシフト・マスク回路３でシフトやマスクする処理が※ステージで、レジスタ又はメモリ４にデータを書き込む処理がｄｗステージで、各々行われる。このとき、ｅｘｅステージの前後の※ステージは１クロックサイクルの半分で処理されるので、各命令の処理において、その※ステージが重なることはない。
【００２２】
このように、全てのシフト・マスク処理は、図２に示すように、同時に実行される事が無いため、共通の唯一のシフト・マスク回路３によって、レジスタ又はメモリ４への書き込みデータのシフト・マスク処理、及びレジスタ又はメモリ４から読み出したデータのシフト・マスク処理を行う事ができ、リソースが増大することはない。
【００２３】
【発明の効果】
以上から本発明によれば、シフト・マスク処理をｅｘｅステージの前後に配置し、その処理をクロックサイクルの半分で行うことができるようにしたので、ｅｘｅステージの処理にかかる時間を大幅に削減させることができ、より高速なプロセッサ装置を開発する事が可能になる。また、シフト・マスク回路が一つで間に合う事から、チップ面積の削減によるコストの削減を図ることができる。
【図面の簡単な説明】
【図１】  本発明の実施形態のプロセッサ装置のｅｘｅステージを実施する構成部分を示すブロック図である。
【図２】  本発明の実施形態のプロセッサ装置の動作例を示すタイミングチャートである。
【図３】  従来のプロセッサ装置のｅｘｅステージを実施する構成部分を示すブロック図である。
【図４】  従来のプロセッサ装置の動作例を示すタイミングチャートである。
【符号の説明】
１：第１のデータバス、２：第２のデータバス、３：シフト・マスク回路、４：レジスタ又はメモリ、５：第１のマルチプレクサ、６：第１の一時レジスタ、７：算術演算装置、８：第２のマルチプレクサ、９：第２の一時レジスタ、１０：レジスタ、１１：メモリ。
【図１】
0003825709.tif 000002
【図２】
0003825709.tif 000003
【図３】
0003825709.tif 000004
【図４】
0003825709.tif 000005