(57)【特許請求の範囲】
【請求項１】
複数のレジスタを含むレジスタファイルと、命令語の処理をその処理結果を前記レジスタファイル中のいずれかのレジスタに格納する書き込みステージを含む複数のステージに分解して実行するパイプライン処理機能とを備え、外部アクセスにより外部からデータを読み込んで前記書き込みステージにおいて前記レジスタファイル中のいずれかのレジスタに格納する外部アクセスタイプの命令語を含む複数のタイプの命令語を前記パイプライン処理機能により処理するパイプライン処理機能を有するデータ処理装置において、
前記外部アクセスタイプの命令語の処理により外部から読み込まれたデータを記憶するデータ記憶手段と、
前記外部アクセスタイプの命令語の処理結果のデータが格納されるべきレジスタを指定するレジスタ情報を記憶するレジスタ情報記憶手段と、
前記外部アクセスタイプの命令語の処理により外部から読み込まれたデータを前記データ記憶手段に一旦記憶させ、
次に前記外部アクセスタイプの命令語が処理される際の前記書き込みステージにおいて、前記レジスタ情報記憶手段が記憶しているレジスタ情報により指定されるレジスタに前記データ記憶手段が記憶しているデータを格納させる制御手段と
を備えたことを特徴とするパイプライン処理機能を有するデータ処理装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は命令語の処理を複数のステージに分解して実行するパイプライン処理機能を有するデータ処理装置に関する。
【０００２】
【従来の技術】
近年のデータ処理装置では、データ処理速度を向上させるために、所謂パイプライン処理機能を備えている場合が多い。図８はそのような従来のパイプライン処理機能を有するデータ処理装置のデータパスの構成例を示すブロック図、図９及び図１０は命令語の処理を５段（ステージ）のパイプラインで実行する場合のパイプラインの構成及び各ステージによる処理の流れを示す模式図である。なお、図９及び図１０においては、上下方向にパイプラインの各ステージが示されており、左右方向に参照符号Ｔ０，  Ｔ１，  Ｔ２，  Ｔ３，  Ｔ４でサイクルが示されている。
【０００３】
図９及び図１０に示されているパイプラインの各ステージの構成は以下の如くである。第１ステージはフェッチステージであり、命令語が命令語キャッシュからフェッチされる。第２ステージはデコードステージであり、フェッチされた命令語がデコードされる。第３ステージは実行ステージであり、命令語で指定された演算が演算論理回路によって実行される。第４ステージはメモリ参照ステージであり、前ステージである実行ステージでの演算結果として得られたアドレスに従ってメモリ参照、即ち外部メモリに対するアクセスが行なわれる。第５ステージは書き込みステージであり、実行ステージで得られた演算結果、あるいはメモリ参照ステージでの外部メモリのアクセスにより読み出されたデータがレジスタに書き込まれる。
【０００４】
図８において、参照符号１はデータパス中の第１のデータバスを示しており、以下Ｘバスという。参照符号２はデータパス中の第２のデータバスを示しており、以下Ｙバスという。参照符号３はデータパス中の第３のデータバスを示しており、以下Ｚバスという。
【０００５】
参照符号４はレジスタファイルを示しており、複数のレジスタにて構成されている。このレジスタファイル４はＸバス１及びＹバス２への出力経路と、Ｚバス３からの入力経路とを有する。なお、デコードステージでは命令語中のソースレジスタを指定するフィールドの値に対応するレジスタの内容がレジスタファイル４から読み出されてＸバス１，  Ｙバス２の双方または一方へ出力される。また、デコードステージでは、デスティネーションレジスタを指定するフィールドの値に対応するレジスタに対してＺバス３からデータが書き込みステージで書き込まれる。
【０００６】
参照符号５はオフセットレジスタを示しており、Ｙバス２への出力経路を有する。デコードステージで命令語のオフセットデータを指定するフィールドｏｆｆ  が有効であった場合は、オフセットレジスタ５の内容がＹバス２へ実行ステージで出力される。
【０００７】
参照符号６は論理演算回路（ＡＬＵ）  を示しており、Ｘバス１及びＹバス２からの入力経路を有する。論理演算回路６は実行ステージで、Ｘバス１のデータとＹバス２のデータとを入力し、命令語で指定された算術演算または論理演算を両データに対して実行する。
【０００８】
参照符号７はテンポラリレジスタを、参照符号８はアドレスレジスタをそれぞれ示しており、いずれも論理演算回路６の出力と接続されている。実行ステージで論理演算回路６により得られた結果が演算結果である場合はテンポラリレジスタ７がその演算結果を一時的に保持し、それを書き込みステージでＺバス３へ出力する。テンポラリレジスタ７はファーストインファーストアウト（ＦＩＦＯ）型の２段のレジスタであり、実行ステージで得られた演算結果を次の書き込みステージでＺバス３へ出力することが出来る。実行ステージで論理演算回路６により得られた結果が外部メモリ９に対するアドレスである場合はアドレスレジスタ８がそれを保持する。
【０００９】
参照符号10はバスインタフェイス回路を示しており、アドレスレジスタ８からの入力経路と、Ｚバス３への出力経路とを有する。また、バスインタフェイス回路10は外部メモリ９とはアドレスバス11, データバス12及び図示されていない制御信号線で接続されている。従って、バスインタフェイス回路10はアドレスレジスタ８からアドレスが与えられると、それをアドレスバス11を介して外部メモリ９に与えることにより、外部メモリ９をアクセスしてアドレスに対応するデータをデータバス12を介して読み出す。
【００１０】
以下、図９に示されているタイミングチャートを参照して、従来のデータ処理装置においてパイプラインにより命令が処理される手順を具体的に説明する。ここでは、命令語の一例としてたとえば（ＡＤＤ  Ｒｘ，  Ｒｙ，  Ｒｚ）がパイプラインで処理される手順について説明する。なお、この命令語（ＡＤＤ  Ｒｘ，  Ｒｙ，  Ｒｚ）は、Ｒｘで指定されるソースレジスタの内容とＲｙで指定されるソースレジスタの内容とを加算（ＡＤＤ）  してＲｚで指定されるデスティネーションレジスタに書き込む命令語であり、メモリ参照、即ち外部メモリに対するアクセスは行なわない。
【００１１】
サイクルＴ０においてはフェッチステージで、命令語（ＡＤＤ  Ｒｘ，  Ｒｙ，  Ｒｚ）が命令語キャッシュからフェッチされる。サイクルＴ１においてはデコードステージで、命令語（ＡＤＤ  Ｒｘ，  Ｒｙ，  Ｒｚ）が図示しないデコーダによりデコードされる。この際、命令語のＲｘ，  Ｒｙでそれぞれ指定されるソースレジスタの内容も同時にレジスタファイル４から読み出される（Ｒｘリード，  Ｒｙリード）。
【００１２】
サイクルＴ２においては実行ステージで、サイクルＴ１においてレジスタファイル４から読み出されたソースレジスタの内容がＸバス１，Ｙバス２へそれぞれ出力される（Ｒｘ→Ｘバス，  Ｒｙ→Ｙバス）  。両者は論理演算回路６により加算（ＡＤＤ）  され、加算結果はテンポラリレジスタ７に保持される（Ｘバス＋Ｙバス→Ｔ）。サイクルＴ３においては、この命令語がメモリ参照ステージでメモリ参照を行なわないため何らの処理も行なわれず、サイクルＴ２での加算結果がそのままテンポラリレジスタ７に保持される（Ｔ→Ｔ’）。
【００１３】
サイクルＴ４においては書き込みステージで、サイクルＴ３においてテンポラリレジスタ７に保持されていた加算結果がＺバス３経由でレジスタファイル４中のＲｚで指定されるデスティネーションレジスタに書き込まれる（Ｔ’→Ｚバス→Ｒｚ）。以上により、命令語（ＡＤＤ  Ｒｘ，  Ｒｙ，  Ｒｚ）の処理が終了する。
【００１４】
上述の命令語（ＡＤＤ  Ｒｘ，  Ｒｙ，  Ｒｚ）はメモリ参照を行なわないタイプであるが、メモリ参照が行なわれるタイプの例として命令語（ＲＤ  Ｒｘ，  ｏｆｆ，  Ｒｚ）のパイプラインによる処理手順を図１０の模式図を参照して説明する。
【００１５】
なお、この命令語（ＲＤ  Ｒｘ，  ｏｆｆ，  Ｒｚ）は、Ｒｘで指定されるソースレジスタの内容とｏｆｆ  で指定されるオフセットデータとを加算し、その結果をアドレスとしてメモリからデータを読み出すメモリ参照、即ち外部メモリに対するアクセスを行い、そのデータをＲｚで指定されるデスティネーションレジスタに書き込む命令語である。
【００１６】
サイクルＴ０においてはフェッチステージで、命令語（ＲＤ  Ｒｘ，  ｏｆｆ，  Ｒｚ）が命令語キャッシュからフェッチされる。サイクルＴ１においてはデコードステージで、命令語（ＲＤ  Ｒｘ，  ｏｆｆ，  Ｒｚ）が図示されていないデコーダによりデコードされる。この際、命令語のＲｘで指定されるソースレジスタの内容もレジスタファイル４から読み出される  （Ｒｘリード）  。
【００１７】
サイクルＴ２においては実行ステージで、サイクルＴ１において読み出されたソースレジスタの内容がＸバス１へ出力され  （Ｒｘ→Ｘバス）  、  ｏｆｆで指定されるオフセットデータがオフセットレジスタ５からＹバス２へ出力される（ｏｆｆ→Ｙバス）  。両者は論理演算回路６により加算され、加算結果はアドレスレジスタ８に保持される  （Ｘバス＋Ｙバス→ＡＤ）  。
【００１８】
サイクルＴ３においてはメモリ参照ステージで、サイクルＴ２において得られた加算結果をアドレスとして、バスインタフェイス回路１０が外部メモリ９からデータを読み出す（Ｍ［ＡＤ］→ＢＩＵ）。サイクルＴ４においては書き込みステージで、サイクルＴ３において外部メモリ９から読み出されたデータがＺバス３を経由してレジスタファイル４中のＲｚで指定されるレジスタに書き込まれる（ＢＩＵ→Ｚバス→Ｒｚ）  。以上により、命令語（ＲＤ  Ｒｘ，  ｏｆｆ，  Ｒｚ）の処理が終了する。
【００１９】
従って、メモリ参照（外部アクセス）を行なわないタイプの命令語、たとえば前述の命令語（ＡＤＤ  Ｒｘ，  Ｒｙ，  Ｒｚ）と、メモリ参照（外部アクセス）を行なうタイプの命令語、たとえば前述の命令語（ＲＤ  Ｒｘ，  ｏｆｆ，  Ｒｚ）とのいずれのタイプの命令語でもパイプライン処理は基本的には同様の手順で実行される。
【００２０】
【発明が解決しようとする課題】
上述のような従来の技術によるパイプライン処理機能を有するデータ処理装置では、メモリ参照を行なわないタイプの命令語の処理と外部アクセスによりメモリからデータを読み出す  （メモリ参照を行なう）  タイプの命令語の処理とは基本的にはいずれも同様の手順でパイプライン処理される。従って、双方のタイプの命令語が混在する場合には、メモリからデータを読み出す、あるいは書き込むためのメモリ参照ステージでの処理が１サイクルで完了する必要がある。しかし、一般的に外部メモリは動作速度がデータ処理装置本体に比して低速であるため、そのような要求を満たすために通常はデータキャッシュが使用される。しかし、データキャッシュは比較的コストが高いため、たとえばデータ処理装置が所謂組み込み用途、即ち種々の家電製品等のコントローラとして使用されるような場合にはコスト面の制約から採用され難いのが実情である。このため、従来はパイプライン処理を行なわないか、あるいはメモリ参照ステージでの処理が１サイクルで完了するようにデータ処理速度を低くする手法、換言すれば１サイクルの時間を長くするというような手法が採用されていた。
【００２１】
本発明はこのような事情に鑑みてなされたものであり、メモリアクセス、即ちメモリからデータを読み出す処理が２サイクル以上にわたった場合においても、パイプライン処理が滞ることのないパイプライン処理機能を有するデータ処理装置の提供を目的とする。
【００２３】
【課題を解決するための手段】
本発明に係るパイプライン処理機能を有するデータ処理装置は、複数のレジスタを含むレジスタファイルと、命令語の処理をその処理結果をレジスタファイル中のいずれかのレジスタに格納する書き込みステージを含む複数のステージに分解して実行するパイプライン処理機能とを備え、外部アクセスにより外部からデータを読み込んで書き込みステージにおいてレジスタファイル中のいずれかのレジスタに格納する外部アクセスタイプの命令語を含む複数のタイプの命令語をパイプライン処理機能により処理するデータ処理装置であって、前記外部アクセスタイプの命令語の処理により外部から読み込まれたデータを記憶するデータ記憶手段と、外部アクセスタイプの命令語の処理結果のデータが格納されるべきレジスタを指定するレジスタ情報を記憶するレジスタ情報記憶手段と、外部アクセスタイプの命令語の処理により外部から読み込まれたデータをデータ記憶手段に一旦記憶させ、次に外部アクセスタイプの命令語が処理される際の書き込みステージにおいて、レジスタ情報記憶手段が記憶しているレジスタ情報により指定されるレジスタにデータ記憶手段が記憶しているデータを格納させる制御手段とを備えたことを特徴とする。
【００２５】
【作用】
本発明に係るパイプライン処理機能を有するデータ処理装置では、外部アクセスタイプの命令語の処理により外部から読み込まれたデータがデータ記憶手段に一旦記憶され、次に外部アクセスタイプの命令語が処理される際の書き込みステージにおいて、レジスタ情報記憶手段が記憶しているレジスタ情報により指定されるレジスタにデータ記憶手段が記憶しているデータが格納される。これにより、外部アクセスタイプの命令語による外部アクセスに要する時間には拘わらずパイプライン処理が滞ることなく実行される。
【００２７】
【実施例】
以下、本発明をその実施例を示す図面に基づいて詳述する。なお、最初に本発明のパイプライン処理機能を有するデータ処理装置により処理される命令語について説明し、その後に本発明のパイプライン処理機能を有するデータ処理装置の構成について説明する。
【００２８】
本発明のパイプライン処理機能を有するデータ処理装置により処理される命令語は３２ビット長であり、実行すべき演算の種類またはメモリの読み出し等の動作を指定するためのフィールド，  レジスタを指定するためのフィールド，  またはオフセットデータを指定するためのフィールド等で構成されている。フォーマットとしては数種類があり、個々の命令語に応じていずれのフォーマットが使用されるかは固定されている。また、ある種類のフォーマットには特定のフィールド、たとえばレジスタＲｙを指定するフィールドが存在しない場合もある。以下に本発明のデータ処理装置により処理される命令語の一例を、図３の模式図に命令語のフォーマットの一例を示す。
【００２９】
命令語（ＡＤＤ  Ｒｘ，  Ｒｙ，  Ｒｚ）
命令語（ＲＤ  Ｒｘ，  ｏｆｆ，  Ｒｚ）
命令語（ＯＲ  Ｒｘ，  Ｒｙ，  Ｒｚ）
命令語（ＳＵＢ  Ｒｘ，  Ｒｙ，  Ｒｚ）
命令語（ＡＮＤ  Ｒｘ，  Ｒｙ，  Ｒｚ）
【００３０】
命令語（ＡＤＤ  Ｒｘ，  Ｒｙ，  Ｒｚ）は算術加算のための命令語であり、Ｒｘで指定されるソースレジスタの内容とＲｙで指定されるソースレジスタの内容とを加算し、その加算結果をＲｚで指定されるデスティネーションレジスタに書き込む処理を指定する。命令語（ＲＤ  Ｒｘ  ｏｆｆ  Ｒｚ）はデータ転送のための命令語であり、Ｒｘで指定されるソースレジスタの内容にｏｆｆ  を値とするオフセットデータを加算した結果をアドレスとして外部メモリからデータを読み出し、そのデータをＲｚで指定されるデスティネーションレジスタに書き込む処理を指定する。命令語（ＯＲ  Ｒｘ，  Ｒｙ，  Ｒｚ）  は論理和演算のための命令語であり、Ｒｘで指定されるソースレジスタの内容とＲｙで指定されるソースレジスタの内容とを論理和演算し、その結果をＲｚで指定されるデスティネーションレジスタに書き込む処理を指定する。命令語（ＳＵＢ  Ｒｘ，  Ｒｙ，  Ｒｚ）は算術減算のための命令語であり、Ｒｘで指定されるソースレジスタの内容からＲｙで指定されるソースレジスタの内容を減算し、その結果をＲｚで指定されるデスティネーションレジスタに書き込む処理を指定する。命令語（ＡＮＤ  Ｒｘ，  Ｒｙ，  Ｒｚ）は論理積演算のための命令語であり、Ｒｘで指定されるソースレジスタの内容とＲｙで指定されるソースレジスタの内容とを論理積演算し、その結果をＲｚで指定されるデスティネーションレジスタに書き込む処理を指定する。
【００３１】
また、各命令語は本発明のデータ処理装置によるデコードを容易にするため、指定する対象が同一であるフィールドは異なるフォーマットであっても同一のビット位置に位置するように定められている。たとえば、図３に参照符号１００  にて示されている命令語のフォーマットはビット０乃至４がＲｚのフィールド，  ビット５乃至９がＲｘのフィールド，  ビット１０乃至１４がＲｙのフィールド，  ビット１５乃至３１が演算（ＡＤＤ）  を指定するフィールドになっている。
【００３２】
また、図３に参照符号１０１  にて示されている命令語のフォーマットはビット０乃至４がＲｚのフィールド，  ビット５乃至９がＲｘのフィールド，  ビット１０乃至２５がｏｆｆ  のフィールド，  ビット２６乃至３１が演算（ＲＤ）を指定するフィールドになっている。
【００３３】
なお、フォーマット１００  のビット１５乃至３１のフィールドにより演算ＯＲ，  ＳＵＢ，  ＡＮＤを指定することも可能である。従って、上述の命令語を例にすると、各命令語のＲｚのフィールドはいずれのフォーマットにおいても同一のビット位置、ビット０乃至４にあり、同様に各命令語のＲｘのフィールドもビット５乃至９にある。また、命令語（ＡＤＤ  Ｒｘ，  Ｒｙ，  Ｒｚ），  命令語（ＯＲ  Ｒｘ，  Ｒｙ，  Ｒｚ），命令語（ＳＵＢ  Ｒｘ，  Ｒｙ，  Ｒｚ）及び命令語（ＡＮＤ  Ｒｘ，  Ｒｙ，  Ｒｚ）のＲｙのフィールドもビット１０乃至１４にある。
【００３４】
次に、本発明のデータ処理装置の構成について説明する。
本発明のデータ処理装置では基本的には命令語の処理を４段（ステージ）のパイプラインで行なう。パイプラインの各ステージの構成は以下の如くである。第１ステージはフェッチステージであり、命令語が命令語キャッシュからフェッチされる。第２ステージはデコードステージであり、フェッチされた命令語がデコードされる。第３ステージは実行ステージであり、命令語で指定された演算が演算論理回路によって実行される。第４ステージは書き込みステージであり、実行ステージで得られた演算結果がレジスタに書き込まれる。
【００３５】
図２は本発明のデータ処理装置の制御回路の要部の構成例を示すブロック図である。図２において、”○”にて示されている部分はそれぞれに接続されている破線にて示されている信号線から与えられる信号が論理”１”である場合に信号を伝達するゲートを示している。信号φは本発明のデータ処理装置の同期クロック信号を示しており、信号＃φはその反転信号である。信号φ・＃ＲＤは、メモリからデータを読み出す命令語以外の命令語の実行ステージでの処理の前半において論理”１”になる制御信号を示しており、命令語がデコードされた時点で信号φ・＃ＲＤが出力されるべきであるか否かが判明する。信号φ・ＲＤは実行ステージにおいてメモリからデータを読み出す命令語が処理される際に、サイクルの前半で論理”１”になる制御信号を示しており、命令語がデコードされた時点で信号φ・ＲＤが出力されるべきであるか否かが判明する。
【００３６】
参照符号１４は命令語レジスタを示しており、図示されていない命令キャッシュと接続されており、パイプラインのデコードステージに対応して命令語の各ビットを保持する。
【００３７】
参照符号１５は第１のラッチを示しており、ゲート１５０  を介して命令語レジスタ１４のビット０乃至４が格納される部分、具体的には各命令語のＲｚのフィールドが格納される部分と接続されている。なお、ゲート１５０  は信号＃φにより制御される。具体的には、ゲート１５０  は、命令語レジスタ１４のビット０乃至４の信号を信号＃φが論理”１”である場合に第１のラッチ１５へ伝達する。
【００３８】
参照符号１６は第２のラッチを示しており、ゲート１６０  を介して第１のラッチ１５の出力と接続されている。なお、ゲート１６０  は信号φ・ＲＤにより制御される。具体的には、ゲート１６０  は、第１のラッチ１５が出力している信号を信号φ・ＲＤが論理”１”である場合に第２のラッチ１６へ伝達する。
【００３９】
参照符号１７は第３のラッチを示しており、ゲート１７０  を介して第２のラッチ１６の出力と接続されている。なお、ゲート１７０  は信号＃φにより制御される。具体的には、ゲート１７０  は、第２のラッチ１６が出力している信号ＲＢを信号＃φが論理”１”である場合に第３のラッチ１７へ伝達する。
【００４０】
参照符号１８は第４のラッチを示しており、ゲート１８０  を介して第１のラッチ１５の出力と、ゲート１８１  を介して第３のラッチ１７の出力とそれぞれ接続されている。なお、ゲート１８０  は信号φ・＃ＲＤにより、ゲート１８１  は信号φ・ＲＤによりそれぞれ制御される。具体的には、ゲート１８０  は、第１のラッチ１５が出力している信号を信号φ・＃ＲＤが論理”１”である場合に第４のラッチ１８へ伝達する。また、ゲート１８１  は、第３のラッチ１７が出力している信号を信号φ・ＲＤが論理”１”である場合に第４のラッチ１８へ伝達する。
【００４１】
以下の説明では、命令語レジスタ１４のビット５乃至９に対応する部分、即ち各命令語のＲｘのフィールドが格納される部分の出力を信号ＲＸとし、同じくビット１０乃至１４に対応する部分、即ち命令語（ＲＤ  Ｒｘ  ｏｆｆ  Ｒｚ）以外の各命令語のＲｙのフィールドが格納される部分の出力を信号ＲＹとし、同じくビット０乃至４に対応する部分、即ち各命令語のＲｚのフィールドが格納される部分の出力を信号ＲＺとする。更に、第４のラッチ１８の出力を信号ＲＺ’  とし、第２のラッチ１６の出力を信号ＲＢとする。
【００４２】
参照符号２０は制御手段としても比較手段としても機能する比較回路を示しており、信号ＲＸ，  信号ＲＹ，  信号ＲＺ，  信号ＲＺ’  の各信号を信号ＲＢと比較し、比較結果を表す信号ＲＢｔｏＸ，  ＲＢｔｏＹ，  ＺｔｏＲＢ，  ＲＺｅｑＲＢ  をそれぞれ出力する。なお、信号ＲＢｔｏＸ  は信号ＲＸと信号ＲＢとが一致した場合に論理”１”になり、信号ＲＢｔｏＹ  は信号ＲＹと信号ＲＢとが一致した場合に論理”１”になり、信号ＺｔｏＲＢ  は信号ＲＺ’  と信号ＲＢとが一致した場合に論理”１”になる。また、信号ＲＺｅｑＲＢは信号ＲＺと信号ＲＢとが一致した場合に論理”１”になる。
【００４３】
図１は本発明のデータ処理装置のデータパスの構成例を示すブロック図である。参照符号１はデータパス中の第１のデータバスを示しており、以下Ｘバスという。参照符号２はデータパス中の第２のデータバスを示しており、以下Ｙバスという。参照符号３はデータパス中の第３のデータバスを示しており、以下Ｚバスという。
【００４４】
参照符号４はレジスタファイルを示しており、複数のレジスタにて構成されている。このレジスタファイル４はＸバス１及びＹバス２への出力経路と、Ｚバス３からの入力経路とを有する。なお、デコードステージでは、信号ＲＸで指定されるレジスタの内容と信号ＲＹで指定されるレジスタの内容とがレジスタファイル４から読み出される。そして、デコードステージで命令語のＲｘのフィールドが有効であり且つ信号ＲＢｔｏＸ  が論理”０”であった場合は、信号ＲＸで指定されるレジスタの内容がＸバス１へ実行ステージで出力される。また、デコードステージで命令語のＲｙのフィールドが有効であり且つ信号ＲＢｔｏＹ  が論理”０”であった場合は、信号ＲＹで指定されるレジスタの内容がＹバス２へ実行ステージで出力される。更に、デコードステージで命令語のＲＺのフィールドが有効であり且つ実行ステージで信号ＺｔｏＲＢ  が論理”０”であった場合は、信号ＲＺ’  で指定されるレジスタに対してＺバス３からデータが書き込みステージで書き込まれる。
【００４５】
参照符号５はオフセットレジスタを示しており、Ｙバス２への出力経路を有する。デコードステージで命令語のオフセットデータを指定するフィールドｏｆｆ  が有効であった場合は、オフセットレジスタ５の内容がＹバス２へ実行ステージで出力される。
【００４６】
参照符号６は論理演算回路（ＡＬＵ）  を示しており、Ｘバス１及びＹバス２からの入力経路を有する。論理演算回路６は実行ステージで、Ｘバス１のデータとＹバス２のデータとを入力し、命令語で指定された算術演算または論理演算を両データに対して実行する。
【００４７】
参照符号７はテンポラリレジスタを、参照符号８はアドレスレジスタをそれぞれ示しており、いずれも論理演算回路６の出力と接続されている。実行ステージで論理演算回路６により得られた結果が演算結果である場合はテンポラリレジスタ７がその演算結果を一時的に保持し、それを書き込みステージでＺバス３へ出力する。実行ステージで論理演算回路６により得られた結果が外部メモリ９に対するアドレスである場合はアドレスレジスタ８がそれを保持する。
【００４８】
参照符号１０はバスインタフェイス回路を示しており、アドレスレジスタ８からの入力経路と、後述するリードバッファレジスタ１３への出力経路とを有する。また、バスインタフェイス回路１０は外部メモリ９とはアドレスバス１１，  データバス１２及び図示されていない制御信号線で接続されている。従って、バスインタフェイス回路１０はアドレスレジスタ８からアドレスが与えられると、それをアドレスバス１１を介して外部メモリ９に与えることにより、外部メモリ９をアクセスしてアドレスに対応するデータをデータバス１２を介して読み出す。
【００４９】
参照符号１３は上述したリードバッファレジスタであり、バスインタフェイス回路１０及びＺバス３からの入力経路と、Ｘバス１，  Ｙバス２及びＺバス３への出力経路とを有する。リードバッファレジスタ１３は、デコードステージで命令語のＲｘのフィールドが有効であり且つ信号ＲＢｔｏＸ  が論理”１”であった場合は、自身の内容をＸバス１へ実行ステージで出力する。また、リードバッファレジスタ１３は、デコードステージで命令語のＲｙのフィールドが有効であり且つ信号ＲＢｔｏＹ  が論理”１”であった場合は、実行ステージで自身の内容をＹバス２へ出力する。更に、デコードステージで命令語のＲｚのフィールドが有効であり且つ実行ステージで信号ＺｔｏＲＢ  が論理”１”であった場合は、書き込みステージでＺバス３のデータがリードバッファレジスタ１３に書き込まれる。また更に、デコードステージで命令語のＲｚのフィールドが有効であり且つ実行ステージで処理された命令語が外部メモリ９からデータを読み出す命令であった場合は、書き込みステージでＺバス３へリードバッファレジスタ１３の内容が出力される。
【００５０】
次に、本発明のパイプライン処理機能を有するデータ処理装置の動作について、まず基本的な処理手順を示すために一つの命令語を処理する場合について、次にメモリからデータが読み出される際の処理手順を示すために、データの外部メモリ９からの読み出しを行なう命令語を含む複数の命令語の連続的な処理についてそれぞれ説明する。
【００５１】
図４は一つの命令語を処理する場合についてそのパイプライン処理の流れを示すタイミングチャートである。ここでは、命令語の一例としてたとえば前述の算術加算の命令語（ＡＤＤ  Ｒｘ，  Ｒｙ，  Ｒｚ）がパイプラインで処理される手順について説明する。なお、この命令語（ＡＤＤ  Ｒｘ，  Ｒｙ，  Ｒｚ）は、Ｒｘで指定されるソースレジスタの内容とＲｙで指定されるソースレジスタの内容とを加算（ＡＤＤ）  してＲｚで指定されるデスティネーションレジスタに書き込む命令語であり、メモリ参照は行なわない。
【００５２】
なお、この図４に示されている命令語（ＡＤＤ  Ｒｘ，  Ｒｙ，  Ｒｚ）の処理手順においては、信号ＲＸ，  ＲＹ，  ＲＺ，  ＲＺ’  はいずれも信号ＲＢとは一致しない。また、図４において、Ｔ０，  Ｔ１，  Ｔ２，  Ｔ３は同期クロックの各サイクルを示している。また、「フェッチ」，  「デコード」，  「実行」，  「書き込み」の各欄はそれぞれフェッチステージ，  デコードステージ，  実行ステージ，  書き込みステージでの処理内容を示し、信号の欄のφ，  φ・＃ＲＤ，  ＲＸ，  ＲＹ，  ＲＺ，  ＲＺ’，  ＲＢ  はそれぞれ、本発明のデータ処理装置の同期クロック信号，  信号φ・＃ＲＤ，  信号ＲＸ，  信号ＲＹ，  信号ＲＺ，  信号ＲＺ’，信号ＲＢの内容を示す。
【００５３】
サイクルＴ０においては、命令語に対するフェッチステージでの処理が行なわれる。具体的には、命令語（ＡＤＤ  Ｒｘ，  Ｒｙ，  Ｒｚ）が命令語キャッシュからフェッチされる。
【００５４】
サイクルT1においては、命令語に対するデコードステージでの処理が行なわれる。具体的には、命令語(ADD Rx, Ry, Rz)が命令語レジスタ14へ送られて保持され、図示されていないデコーダによりデコードされる。これにより、命令語(ADD Rx, Ry, Rz)を実行するために必要な制御信号を実行ステージで出力する用意が行なわれる。この際、命令語レジスタ14のRxのフィールドにはRx0 が、RyのフィールドにはRy0 が、RzのフィールドにはRz0 がそれぞれ保持されているとすると、信号RX, 信号RY, 信号RZとしてそれぞれRx0, Ry0, Rz0 が出力される。従って、サイクルT1中に、命令語レジスタ14中のRx0 で指定されるレジスタの内容とRy0 で指定されるレジスタの内容とがレジスタファイル４からそれぞれ読み出される(Rx0リード,  Ry0リード) 。
【００５５】
なお、信号ＲＺとして出力されたＲｚ０  は、このサイクルＴ１の後半の開始時に信号＃φが論理”１”に立ち上がるので、ゲート１５０  から出力されて第１のラッチ１５に保持される。
【００５６】
サイクルＴ２においては、命令語に対する実行ステージでの処理が行なわれる。具体的には、命令語（ＡＤＤ  Ｒｘ，  Ｒｙ，  Ｒｚ）を実行するための制御信号が図１に示されているデータパスの各部分へ出力される。これにより、レジスタファイル４からＸバス１へはＲｘ０  で指定されるレジスタの内容が、Ｙバス２へはＲｙ０  で指定されるレジスタの内容がそれぞれ出力される（Ｒｘ０→Ｘバス，    Ｒｙ０→Ｙバス）  。そして、Ｘバス１へ出力されているデータとＹバス２へ出力されているデータとが論理演算回路６により加算され、その結果はテンポラリレジスタ７に保持される  （Ｘバス＋Ｙバス→Ｔ）  。
【００５７】
なお、サイクルＴ１において第１のラッチ１５に保持されたＲｚ０  は、このサイクルＴ２の開始時に信号φ・＃ＲＤが論理”１”に立ち上がるので、ゲート１８０  から出力されて第４のラッチ１８にラッチされる。従って、このサイクルＴ２においては、第４のラッチ１８から信号ＲＺ’  としてＲｚ０  が出力される。
【００５８】
サイクルT3においては、命令語に対する書き込みステージでの処理が行なわれる。具体的には、テンポラリレジスタ７の内容がＺバス３へ出力され、このデータが、信号RZ' としてはRz0 が出力されているので、Rz0 で指定されるレジスタファイル４中のレジスタに書き込まれる (Ｔ→Ｚバス→Rz0)。
【００５９】
本発明のパイプライン処理機能を有するデータ処理装置では、一つの命令語の処理は以上のような手順で行なわれる。
【００６０】
図５はメモリからデータを読み出す、即ちメモリ参照を行なう命令語を含む複数の命令語を連続的に処理する場合のパイプライン処理の流れを示すタイミングチャートである。ここでは、連続的に処理される複数の命令語の一例としてたとえば前述の命令語(RD Rx, off, Rz)を第１の命令語とし、メモリ参照を行なわない命令語(ADD Rx, Ry, Rz)と同タイプ、即ちRx, Ry, Rzの各フィールドを有し、論理積演算(ADD) を行なう命令語(AND Rx, Ry, Rz)を第２の命令語とし、両者がパイプラインで処理される手順について説明する。更に、第２の命令語(AND Rx, Ry, Rz)に引き続いていずれもメモリ参照を行なわない第３の命令語(OR Rx, Ry, Rz) 及び第４の命令語(SUB Rx, Ry, Rz)が処理されるのもとする。
【００６１】
なお、第１の命令語(RD Rx, off, Rz)では、Rxを指定するフィールドの内容としてRx0 が、Rzを指定するフィールドの内容としてRz0 がそれぞれ保持されているとし、以降は第１の命令語(RD Rx0, off, Rz0)と記す。第２の命令語(AND Rx, Ry, Rz)では、Rxを指定するフィールドの内容としてRx1 が、Ryを指定するフィールドの内容としてRy1 が、Rzを指定するフィールドの内容としてRz1 がそれぞれ保持されているものとし、以降は第２の命令語(AND Rx1, Ry1, Rz1) と記す。
【００６２】
更に、第３の命令語（ＯＲ  Ｒｘ，  Ｒｙ，  Ｒｚ）  では、Ｒｘを指定するフィールドの内容としてＲｘ２  が、Ｒｙを指定するフィールドの内容としてＲｙ２  が、Ｒｚを指定するフィールドの内容としてＲｚ２  がそれぞれ保持されているとし、以降は第３の命令語（ＯＲ  Ｒｘ２，  Ｒｙ２，  Ｒｚ２）と記す。第４の命令語（ＳＵＢ  Ｒｘ，  Ｒｙ，  Ｒｚ）では、Ｒｘを指定するフィールドの内容としてＲｘ３  が、Ｒｙを指定するフィールドの内容としてＲｙ３  が、Ｒｚを指定するフィールドの内容としてＲｚ３  がそれぞれ保持されているとし、第４の命令語（ＳＵＢ  Ｒｘ３，  Ｒｙ３，  Ｒｚ３）  と記す。
【００６３】
なお、第１の命令語（ＲＤ  Ｒｘ０，  ｏｆｆ，  Ｒｚ０）は、Ｒｘ０  で指定されるソースレジスタの内容とｏｆｆ  で指定されるオフセットデータとを加算し、その結果をアドレスとしてメモリから読み出したデータをＲｚ０  で指定されるデスティネーションレジスタに書き込む命令語である。また、第２の命令語（ＡＮＤ  Ｒｘ１，  Ｒｙ１，  Ｒｚ１）  は、Ｒｘ１  で指定されるソースレジスタの内容とＲｙ１  で指定されるソースレジスタの内容とを論理積演算し、その結果をＲｚ１  で指定されるデスティネーションレジスタに書き込む命令語である。
【００６４】
更に、第３の命令語（ＯＲ  Ｒｘ２，  Ｒｙ２，  Ｒｚ２）は、Ｒｘ２  で指定されるソースレジスタの内容とＲｙ２  で指定されるソースレジスタの内容とを論理和演算し、その結果をＲｚ２  で指定されるデスティネーションレジスタに書き込む命令語である。また、第４の命令語（ＳＵＢ  Ｒｘ３，  Ｒｙ３，  Ｒｚ３）  は、Ｒｘ３  で指定されるソースレジスタの内容からＲｙ３  で指定されるソースレジスタの内容を算術減算し、その結果をＲｚ３  で指定されるデスティネーションレジスタに書き込む命令語である。
【００６５】
更に、図５において、Ｔ０乃至Ｔ５は同期クロックの各サイクルを示している。また、「フェッチ」，  「デコード」，  「実行」，  「書き込み」の各欄はそれぞれフェッチステージ，  デコードステージ，  実行ステージ，  書き込みステージでの処理内容を示し、「メモリ参照」はパイプライン処理と並列に動作するバスインタフェイス回路１０により実行されるメモリアクセスを示す。また、信号の欄のφ，  φ・ＲＤ，  φ・＃ＲＤ，  ＢＳＹ，  ＲＸ，  ＲＹ，  ＲＺ，  ＲＺ’，  ＲＢはそれぞれ、本発明のデータ処理装置の同期クロック信号，  信号φ・ＲＤ，  信号ＢＳＹ，信号φ・＃ＲＤ，  信号ＲＸ，  信号ＲＹ，  信号ＲＺ，  信号ＲＺ’，信号ＲＢの内容を示す。
【００６６】
なお信号ＢＳＹ  は、実行ステージにおいて外部メモリ９からデータを読み出す命令語が処理される際に、サイクルの後半で論理”１”になり、メモリ参照の最後のサイクルの後半で論理”０”に戻る信号である。
【００６７】
サイクルＴ０においては、第１の命令語（ＲＤ  Ｒｘ０，  ｏｆｆ，  Ｒｚ０）に対するフェッチステージでの処理が行なわれる。具体的には、第１の命令語（ＲＤ  Ｒｘ０，  ｏｆｆ，  Ｒｚ０）が命令語キャッシュからフェッチされる。なお、第１の命令語（ＲＤ  Ｒｘ０，  ｏｆｆ，  Ｒｚ０）の処理に先立ってメモリからデータを読み出す命令語（ＲＤ  Ｒｘ’，  ｏｆｆ’，  Ｒｚ’）  が処理されたものとする。従って、この時点での信号ＲＢは前回処理されたメモリからデータを読み出す命令語（ＲＤ  Ｒｘ’，  ｏｆｆ’，  Ｒｚ’）  のＲｚ’  である。
【００６８】
サイクルＴ１においては、第１の命令語（ＲＤ  Ｒｘ０，  ｏｆｆ，  Ｒｚ０）に対するデコードステージでの処理が行なわれる。具体的には、サイクルＴ０においてフェッチされた第１の命令語（ＲＤ  Ｒｘ０，  ｏｆｆ，  Ｒｚ０）が命令語レジスタ１４に送られて保持され、図示されていないデコーダによりデコードされる。これにより、第１の命令語（ＲＤ  Ｒｘ０，  ｏｆｆ，  Ｒｚ０）を実行するために必要な制御信号を実行ステージで出力する用意が行なわれる。この際、命令語レジスタ１４のＲｘのフィールドにはＲｘ０  が、ＲｚのフィールドにはＲｚ０  がそれぞれ保持されるので、信号ＲＸとしてＲｘ０  が、信号ＲＺとしてＲｚ０  がそれぞれ出力される。従って、このサイクル中に、命令語レジスタ１４中のＲｘ０  で指定されるレジスタの内容がレジスタファイル４から読み出される  （Ｒｘ０  リード）  。
【００６９】
なお、この第１の命令語（ＲＤ  Ｒｘ０，  ｏｆｆ，  Ｒｚ０）ではＲｙのフィールドが無効であるため信号ＲＹも不定（？）  となり、Ｒｘ０  で指定されるレジスタと同時に読み出される他方のレジスタは不定になる。しかし、これは使用されないため、問題にはならない。また、比較回路２０は信号ＲＸと信号ＲＢとを比較しており、両者が一致した場合には信号ＲＢｔｏＸ  が論理”１”になる。しかし、この場合は信号ＲＢはクロックＴ０から引き続いて、前回処理された命令語（ＲＤ  Ｒｘ’，  ｏｆｆ’，  Ｒｚ’）  のＲｚ’  であるため一致しない。従って、信号ＲＢｔｏＸ  は論理”０”になる。
【００７０】
なお、信号ＲＺとして出力されたＲｚ０  は、このサイクルＴ１の後半の開始時に信号＃φが論理”１”に立ち上がるので、ゲート１５０  から出力されて第１のラッチ１５に保持される。
【００７１】
またこの第１の命令語（ＲＤ  Ｒｘ０，  ｏｆｆ，  Ｒｚ０）のデコードステージでの処理と同時に、サイクルＴ１においてはフェッチステージで次の第２の命令語（ＡＮＤ  Ｒｘ１，  Ｒｙ１，  Ｒｚ１）  が命令語キャッシュメモリからフェッチされる。
【００７２】
サイクルＴ２においては、第１の命令語（ＲＤ  Ｒｘ０，  ｏｆｆ，  Ｒｚ０）に対する実行ステージでの処理が行なわれる。具体的には、第１の命令語（ＲＤ  Ｒｘ０，  ｏｆｆ，  Ｒｚ０）を実行するための制御信号が図１に示されているデータパスの各部分へ出力される。これにより、Ｘバス１へは信号ＲＢｔｏＸ  の値（”１”または”０”）に応じてリードバッファレジスタ１３の値またはレジスタファイル４中のＲｘ０  で指定されるレジスタの内容のいずれかが出力され、Ｙバス２へはオフセットレジスタ５の内容が出力される。但し、この場合は信号ＲＢｔｏＸ  は論理”０”であるため、Ｘバス１へはレジスタファイル４中のＲｘ０  で指定されるレジスタの内容が出力され、Ｙバス２へはオフセットレジスタ５の内容が出力される  （Ｒｘ０  →Ｘバス，ｏｆｆ→Ｙバス）  。そして、論理演算回路６はＸバス１へ出力されているデータとＹバス２へ出力されているデータとの加算を行い、その結果はアドレスレジスタ８に保持される  （Ｘバス＋Ｙバス→ＡＤ）  。
【００７３】
ところで、サイクルＴ２においては第１の命令語（ＲＤ  Ｒｘ０，  ｏｆｆ，  Ｒｚ０）がメモリ参照を行なう命令語であるため、その前半では信号φ・ＲＤが論理”１”になる。このため、第２のラッチ１６には第１のラッチ１５に保持されていたＲｚ０  がゲート１６０  から書き込まれ、第４のラッチ１８には第３のラッチ１７に保持されていたＲｚ’  がゲート１８１  から書き込まれる。従って、信号ＲＢとしてＲｚ０  が、信号ＲＺ’  としてＲｚ’  がそれぞれ出力される。
【００７４】
また、サイクルT2においては、第２の命令語(AND Rx1, Ry1, Rz1) に対するデコードステージでの処理も行なわれる。具体的には、サイクルT1でフェッチされた第２の命令語(AND Rx1, Ry1, Rz1) がサイクルT2で命令語レジスタ14に送られて保持され、図示されていないデコーダによりデコードされる。これにより、第２の命令語(AND Rx1, Ry1, Rz1) を実行するために必要な制御信号を実行ステージで出力する用意が行なわれる。この際、命令語レジスタ14のRxのフィールドにはRx1 が、RyのフィールドにはRy1 が、RzのフィールドにはRz1 がそれぞれ保持されるので、信号RX, 信号RY, 信号RZとしてそれぞれRx1, Ry1, Rz1 が出力される。従って、このサイクル中に、命令語レジスタ14中のRx1 で指定されるレジスタの内容とRy1 で指定されるレジスタの内容とがレジスタファイル４からそれぞれ読み出される(Rx1リード, Ry1 リード) 。
【００７５】
またこの際、比較回路２０は信号ＲＸ，  信号ＲＹ及び信号ＲＺの各信号と信号ＲＢとをそれぞれ比較しており、信号ＲＸと信号ＲＢとが一致した場合には信号ＲＢｔｏＸ  が論理”１”になり、信号ＲＹと信号ＲＢとが一致した場合には信号ＲＢｔｏＹ  が論理”１”になり、信号ＲＺと信号ＲＢとが一致した場合には信号ＲＺｅｑＲＢが論理”１”になる。但し、この場合には信号ＲＢはＲｚ０  であるので、いずれも論理”１”になることはない。
【００７６】
サイクルＴ３においては、第１の命令語（ＲＤ  Ｒｘ０，  ｏｆｆ，  Ｒｚ０）に対する書き込みステージでの処理が行なわれる。ここで、サイクルＴ２において実行ステージで処理された命令語がメモリからデータを読み出す第１の命令語（ＲＤ  Ｒｘ０，  ｏｆｆ，  Ｒｚ０）であるため、第１の命令語（ＲＤ  Ｒｘ０，  ｏｆｆ，  Ｒｚ０）に先立って処理された命令語（ＲＤ  Ｒｘ’，  ｏｆｆ’，  Ｒｚ’）  により外部メモリ９から読み出されてリードバッファレジスタ１３に格納されているデータがＺバス３へ出力され、且つサイクルＴ２において信号ＲＺ’  としてＲｚ’  が出力されたのでＺバス３へ出力されたリードバッファレジスタ１３の内容がレジスタファイル４中のＲｚ’  で指定されるレジスタに書き込まれる  （ＲＢ→Ｚバス→Ｒｚ’）。
【００７７】
同時に、バスインタフェイス回路１０はアドレスレジスタ８に保持されているアドレスでメモリ参照を開始する。具体的には、サイクルＴ２において第１の命令語（ＲＤ  Ｒｘ０，  ｏｆｆ，  Ｒｚ０）のＲｘ０  とｏｆｆ  とから求められたアドレスでバスインタフェイス回路１０が外部メモリ９をアクセスし、対応するデータをリードバッファレジスタ１３に保持させる（ＢＩＵ→ＲＢ）  。
【００７８】
またサイクルＴ３においては、第２の命令語（ＡＮＤ  Ｒｘ１，  Ｒｙ１，  Ｒｚ１）  に対する実行ステージでの処理も行なわれる。具体的には、第２の命令語（ＡＮＤ  Ｒｘ１，  Ｒｙ１，  Ｒｚ１）  を実行するための制御信号が図１に示されているデータパスの各部分へ出力される。これにより、レジスタファイル４からＸバス１へはＲｘ１  で指定されるレジスタの内容が、Ｙバス２へはＲｙ１  で指定されるレジスタの内容がそれぞれ出力される（Ｒｘ１→Ｘバス，    Ｒｙ１→Ｙバス）  。そして、Ｘバス１へ出力されているデータとＹバス２へ出力されているデータとの論理積演算（ＡＮＤ）  が論理演算回路６により行なわれ、その結果はテンポラリレジスタ７に保持される  （Ｘバス∧Ｙバス→Ｔ）  。この際、第２の命令語（ＡＮＤ  Ｒｘ１，  Ｒｙ１，  Ｒｚ１）  のＲｚのフィールドの内容Ｒｚ１  が第１のラッチ１５を介して第４のラッチ１８に送られており、第４のラッチ１８から信号ＲＺ’  としてＲｚ１  が出力される。
【００７９】
サイクルT4においては、第２の命令語(AND Rx1, Ry1, Rz1) に対する書き込みステージでの処理が行なわれる。具体的には、テンポラリレジスタ７の内容がＺバス３へ出力され、信号RZ' がRz1 であるため、実行ステージにおいてＺバス３へ出力されているデータがレジスタファイル４中のRz1 で指定されるレジスタに書き込まれる (Ｔ→Ｚバス→Rz1)。
【００８０】
また同時にこのサイクルＴ４においては、第１の命令語（ＲＤ  Ｒｘ０，  ｏｆｆ，  Ｒｚ０）のバスインタフェイス回路１０による外部メモリ９に対するメモリ参照（ＢＩＵ→ＲＢ）  も継続されているが、サイクルＴ４において完了する。なお、この第１の命令語（ＲＤ  Ｒｘ０，  ｏｆｆ，  Ｒｚ０）のメモリ参照により外部メモリ９から読み出されたデータはリードバッファレジスタ１３に格納される。
【００８１】
この後、更にたとえば第３の命令語(OR Rx2, Ry2, Rz2)  あるいは更に第４の命令語(SUB Rx3, Ry3, Rz3) が引き続いて処理される場合にも、第２の命令語(AND Rx1, Ry1, Rz1) と同様の手順で各ステージにより順次処理される。そしてたとえば、上述の第１の命令語(RD Rx0, off, Rz0)により外部メモリ９から読み出されてリードバッファレジスタ13に格納されているデータは、図５において第１の命令語(RD Rx0, off, Rz0)をそれに先立って処理された命令語(RD Rx', off', Rz') と見做せばこの命令語のRz' はRz0 に置き換えられるので、次にメモリ参照を行なう、即ちメモリからデータを読出す命令語が処理された場合にその第４サイクル(T3)においてRz0 で指定されるレジスタファイル４中のレジスタに格納される (RB→Ｚバス→Rz' がRB→Ｚバス→Rz0 となる）。
【００８２】
ところで、上述の図５に示されている例では、第１の命令語（ＲＤ  Ｒｘ，  ｏｆｆ，  Ｒｚ）はメモリ参照を行なう命令語であるため、サイクルＴ２の後半からサイクルＴ３を経てサイクルＴ４の前半までにおいては、信号ＢＳＹ  は論理”１”になる。このため、サイクルＴ２の後半及びサイクルＴ３の期間において信号ＲＢｔｏＸ  が論理”１”になった場合、または信号ＲＢｔｏＹ  が論理”１”になった場合には、第１の命令語（ＲＤ  Ｒｘ，  ｏｆｆ，  Ｒｚ）による外部メモリ９からデータを読み出すためのアクセスが完了する以前に、そのデータがが書き込まれるレジスタ  （Ｒｚで指定されるレジスタ）  の内容を第２の命令語（ＡＮＤ  Ｒｘ，  Ｒｙ，  Ｒｚ）が読み出そうとしていることを意味し、所謂レジスタコンフリクトが発生する。また、信号ＲＺｅｑＲＢが論理”１”になった場合には、外部メモリ９からのデータが書き込まれるレジスタに他の演算結果を書き込もうとすることになり、この場合にもレジスタコンフリクトが発生する。しかしこのような状態は第２の命令語の処理をデコードステージで中断することにより阻止される。
【００８３】
たとえば図６のタイミングチャートに示されているように、第１の命令語（ＲＤ  Ｒｘ，  ｏｆｆ，  Ｒｚ）として（ＲＤ  Ｒｘ０，  ｏｆｆ，  Ｒｉ）  が、第２の命令語（ＡＮＤ  Ｒｘ，  Ｒｙ，  Ｒｚ）    として（ＡＮＤ  Ｒｉ，  Ｒｙ１，  Ｒｚ１）が連続して処理される場合について考える。なお、第２の命令語（ＡＮＤ  Ｒｉ，  Ｒｙ１，  Ｒｚ１）は第１の命令語（ＲＤ  Ｒｘ０，  ｏｆｆ，  Ｒｉ）  により外部メモリ９から読み出されたデータがＲｉで指定されるレジスタに格納された後に、そのＲｉで指定されるレジスタの内容を読み出して使用する命令語である。
【００８４】
この場合、第２の命令語（ＡＮＤ  Ｒｉ，  Ｒｙ１，  Ｒｚ１）のデコード結果に従って、サイクルＴ２において信号ＲＸがＲｉになるため、信号ＲＢｔｏＸ  が論理”１”になる。このため、第２の命令語（ＡＮＤ  Ｒｉ，  Ｒｙ１，  Ｒｚ１）のデコードステージでの処理はサイクルＴ４まで遅延され、実行ステージでの処理はサイクルＴ５で行なわれる。また、サイクルＴ４以降はレジスタファイル４のＲｉで指定されるレジスタの代わりにリードバッファレジスタ１３が使用される。
【００８５】
具体的には以下のようになる。サイクルＴ４においては第１の命令語（ＲＤ  Ｒｘ０，  ｏｆｆ，  Ｒｉ）  により外部メモリ９から読み出されたデータはリードバッファレジスタ１３に格納されている（ＢＩＵ→ＲＢ）  。第２の命令語（ＡＮＤ  Ｒｉ，  Ｒｙ１，  Ｒｚ１）の処理は以下のようになる。サイクルＴ４においてリードバッファレジスタ１３の内容とレジスタファイル４中のＲｙ１  で指定されるレジスタの内容とが読み出される  （ＲＢリード，Ｒｙ１リード）  。サイクルＴ５において両者はそれぞれＸバス１及びＹバス２へ読み出され（ＲＢ  →Ｘバス，Ｒｙ１→Ｙバス）  、論理積演算されてテンポラリレジスタ７に格納される  （Ｘバス∧Ｙバス→Ｔ）  。その結果はサイクルＴ６においてレジスタファイル４中のＲｚ１  で指定されるレジスタに格納される  （Ｔ→Ｚバス→Ｒｚ１）。
【００８６】
また、たとえば図７のタイミングチャートに示されているように、第１の命令語（ＲＤ  Ｒｘ，  ｏｆｆ，  Ｒｚ）として（ＲＤ  Ｒｘ０，  ｏｆｆ，  Ｒｉ）  が、第２の命令語（ＡＮＤ  Ｒｘ，  Ｒｙ，  Ｒｚ）として（ＡＮＤ  Ｒｘ１，  Ｒｙ１，  Ｒｉ）が連続して処理される場合について考える。なお、第２の命令語（ＡＮＤ  Ｒｘ１  Ｒｙ１，  Ｒｉ）  は第１の命令語（ＲＤ  Ｒｘ０，  ｏｆｆ，  Ｒｉ）  により外部メモリ９から読み出されたデータが格納されるレジスタ、即ちＲｉで指定されるレジスタに、自身の演算結果を格納する命令語である。
【００８７】
この場合、第２の命令語（ＡＮＤ  Ｒｘ１，  Ｒｙ１，  Ｒｉ）のデコード結果に従って、サイクルＴ２において信号ＲＺがＲｉになるため、信号ＲＺｅｑＲＢが論理”１”になる。このため、第２の命令語（ＡＮＤ  Ｒｘ１，  Ｒｙ１，  Ｒｉ）のデコードステージでの処理はサイクルＴ４まで遅延され、実行ステージでの処理はサイクルＴ５で行なわれる。また、サイクルＴ４以降はレジスタファイル４のＲｉで指定されるレジスタの代わりにリードバッファレジスタ１３が使用される。
【００８８】
具体的には以下のようになる。サイクルＴ４においては第１の命令語（ＲＤ  Ｒｘ０，  ｏｆｆ，  Ｒｉ）  により外部メモリ９から読み出されたデータはリードバッファレジスタ１３に格納されている（ＢＩＵ→ＲＢ）  。第２の命令語（ＡＮＤ  Ｒｘ１，  Ｒｙ１，  Ｒｉ）の処理は以下のようになる。サイクルＴ４においてレジスタファイル４中のＲｘ１，  Ｒｙ１でそれぞれ指定されるレジスタの内容が共に読み出される（Ｒｘ１リード，Ｒｙ１リード）  。サイクルＴ５において両者はそれぞれＸバス１及びＹバス２へ読み出され（Ｒｘ１→Ｘバス，Ｒｙ１→Ｙバス）  、論理積演算されてテンポラリレジスタ７に格納される  （Ｘバス∧Ｙバス→Ｔ）  。その結果はサイクルＴ６においてリードバッファレジスタ１３に格納される  （Ｔ→Ｚバス→ＲＢ）  。
【００８９】
以上のように、本発明のパイプライン処理機能を有するデータ処理装置では、メモリへのアクセスが２サイクルにわたる場合にも、メモリのデータを読み出す命令語によるレジスタファイルへのデータの書き込みが、次のメモリのデータを読み出す命令語の処理に際して他の命令語がレジスタファイルにデータを書き込むタイミングと同様のタイミングで実行されるので、パイプライン処理の流れを乱す虞がなくなる。
【００９０】
なお、上記実施例ではメモリへのアクセスが２サイクルに渡る場合について説明したが、メモリへのアクセスが３サイクルあるいはそれ以上にわたる場合にも本発明を適用することが可能であることは言うまでもない。
【００９１】
また、上記実施例ではリードバッファレジスタを一つ備えた構成について説明したが、二個あるいはそれ以上備えた構成にも本発明を適用することが可能であることは言うまでもない。
なお、上記実施例では、先行する命令語のメモリアクセスにより読み出したデータで書き換えられるレジスタを後続する命令語の処理に際して参照する可能性がある場合には、先行する命令によるメモリアクセスが終了するまで後続の命令語による処理が停止されるので、そのような場合の所謂レジスタコンフリクトが回避される。
【００９２】
【発明の効果】
以上に詳述した如く、本発明のパイプライン処理機能を有するデータ処理装置によれば、メモリへのアクセスが２サイクルにわたる場合にも、パイプライン処理が滞ることが無くなるので、データキャッシュ等のような比較的高価なハードウェアを使用する必要なしに、即ち比較的低コストで高速動作可能なデータ処理装置の提供が可能になる。
【図面の簡単な説明】
【図１】本発明のデータ処理装置のデータパスの構成例を示すブロック図である。
【図２】本発明のデータ処理装置の制御回路の要部の構成例を示すブロック図である。
【図３】本発明のデータ処理装置により処理される命令語のフォーマットの一例を示す模式図である。
【図４】本発明のデータ処理装置により一つの命令語を処理する場合についてそのパイプライン処理の流れを示すタイミングチャートである。
【図５】本発明のデータ処理装置によりメモリからデータを読み出す、即ちメモリ参照を行なう命令語を含む複数の命令語を連続的に処理する場合のパイプライン処理の流れを示すタイミングチャートである。
【図６】従来ではレジスタコンフリクトが発生する場合の処理を本発明のデータ処理装置により処理する場合のパイプライン処理の流れを示すタイミングチャートである。
【図７】従来ではレジスタコンフリクトが発生する場合の処理を本発明のデータ処理装置により処理する場合のパイプライン処理の流れを示すタイミングチャートである。
【図８】従来のパイプライン処理機能を有するデータ処理装置のデータパスの構成例を示すブロック図である。
【図９】命令語の処理を５段（ステージ）のパイプラインで実行する場合の従来のデータ処理装置のパイプラインの構成及び各ステージによる処理の流れを示す模式図である。
【図１０】命令語の処理を５段（ステージ）のパイプラインで実行する場合の従来のデータ処理装置のパイプラインの構成及び各ステージによる処理の流れを示す模式図である。
【符号の説明】
４  レジスタファイル、９  外部メモリ、１３  リードバッファレジスタ、１５，  １６，  １７，  １８    レジスタ、２０    比較回路。
【図１】
0003569811.tif 000002
【図２】
0003569811.tif 000003
【図３】
0003569811.tif 000004
【図４】
0003569811.tif 000005
【図５】
0003569811.tif 000006
【図６】
0003569811.tif 000007
【図７】
0003569811.tif 000008
【図８】
0003569811.tif 000009
【図９】
0003569811.tif 000010
【図１０】
0003569811.tif 000011