(57)【特許請求の範囲】
【請求項１】
インストラクションメモリのインストラクションをリングメモリに一旦記憶させ、このリングメモリからのインストラクションを実行するインストラクション実行装置において、
前記インストラクションメモリにアドレスを与えると共に、前記リングメモリに一旦記憶させるインストラクションにより、飛び先のインストラクションを検出し、インストラクションメモリの飛び先アドレスを保持し、飛び元のインストラクションを検出し、飛び先アドレスをインストラクションメモリに与えるアドレスコントローラと、
前記リングメモリからインストラクションを連続して読み出し、インストラクションを実行するインストラクション処理部と
を設けたことを特徴とするインストラクション実行装置。
【請求項２】
インストラクション処理部は、
リングメモリのインストラクションを読み出し、インストラクションを実行してアドレスを発生するアドレス発生部と、
リングメモリから読み出されるインストラクションを入力し、飛び先のインストラクションを検出し、前記アドレス発生部が発生するアドレスを保持し、飛び元のインストラクションを検出し、アドレス発生部に保持したアドレスを出力させるジャンプ処理部と
を有することを特徴とする請求項１記載のインストラクション実行装置。
【請求項３】
アドレスコントローラは、リングメモリの容量を越えるインストラクションのジャンプを検出し、インストラクション処理部は、リングメモリの容量を越えないインストラクションのジャンプのとき、リングメモリからインストラクションをジャンプして読み出し、インストラクションを実行することを特徴とする請求項１または２記載のインストラクション実行装置。
【請求項４】
インストラクションメモリのインストラクションをリングメモリに一旦記憶させ、このリングメモリからのインストラクションを実行するインストラクション実行方法において、
前記インストラクションメモリにアドレスを与えると共に、前記リングメモリに一旦記憶させるインストラクションにより、飛び先のインストラクションを検出し、インストラクションメモリの飛び先アドレスを保持し、飛び元のインストラクションを検出し、飛び先アドレスをインストラクションメモリに与え、
前記リングメモリからインストラクションを連続して読み出し、インストラクションを実行することを特徴とするインストラクション実行方法。
【請求項５】
リングメモリの容量を越えるインストラクションのジャンプを検出し、
リングメモリの容量を越えないインストラクションのジャンプのとき、リングメモリからインストラクションをジャンプして読み出し、インストラクションを実行することを特徴とする請求項４記載のインストラクション実行方法。
【請求項６】
インストラクションによりアドレスを発生することを特徴とする請求項４または５記載のインストラクション実行方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、例えば、パターンアドレスを発生するインストラクション実行装置及びインストラクション実行方法に関し、リングメモリの容量を越えるループ動作ができるインストラクション実行装置及びインストラクション実行方法に関するものである。
【０００２】
【従来の技術】
ＩＣテスタは、被試験対象に試験パターンを与え、被試験対象の出力と期待値パターンとを比較し、良否の判定を行っている。そして、試験パターンと期待値パターンとは、パターンメモリに格納され、このパターンメモリにパターンアドレスをアドレス発生装置（インストラクション実行装置）により与えている。このようなアドレス発生装置を図８に示し説明する。
【０００３】
図８において、インストラクションメモリ１はＤＲＡＭ（ダイナミック・ランダム・アクセス・メモリ）で、インストラクションを記憶する。ＤＲＡＭコントローラ２は、インストラクションメモリ１にアドレスを与える。リングメモリ３はＳＲＡＭ（スタティック・ランダム・アクセス・メモリ）で、インストラクションメモリ１からのインストラクションを入力し記憶する。また、リングメモリ３は、同期式デュアルポートメモリである。
【０００４】
リングメモリ書込部４は、ＤＲＡＭコントローラ２を制御すると共に、リングメモリ３にライトイネーブル、ライトアドレスを出力する。また、リングメモリ書込部４は、リングメモリライトコントローラ４０、加算器４１、マルチプレクサ４２、レジスタ４３からなる。
【０００５】
リングメモリライトコントローラ４０は、ＤＲＡＭコントローラ２を制御すると共に、リングメモリ３にライトイネーブルを出力し、選択信号を出力する。加算器４１は、リングメモリ３のライトアドレスに１を加算する。マルチプレクサ４２は、加算器４１の出力とリングメモリ３のライトアドレスと入力し、リングメモリコントローラ４０の選択信号により選択を行う。レジスタ４３は、マルチプレクサ４３の出力を保持し、リングメモリ３のライトアドレスを出力する。
【０００６】
アドレス発生部５は、リングメモリ３からのインストラクションに基づいて、リングメモリ３のリードアドレスを与え、リングメモリ３のボトムアドレスを出力し、パターンアドレスを発生する。また、アドレス発生部５は、インストラクション実行部５０、加算器５１，５２、マルチプレクサ５３〜５５、レジスタ５６〜５８、減算器５９からなる。
【０００７】
インストラクション実行部５０は、リングメモリ３のインストラクションを入力し解釈を行い、３つの選択信号、ジャンプデータ、ジャンプアドレスを出力する。加算器５１は、パターンアドレスに１を加算する。マルチプレクサ５３は、加算器５１の出力、パターンアドレス、インストラクション実行部５０からのジャンプアドレスを入力し、インストラクション実行部５０の選択信号により選択を行う。レジスタ５６は、マルチプレクサ５３の出力を保持し、パターンアドレスを出力する。
【０００８】
加算器５２は、レジスタ５７の出力に１を加算する。減算器５９は、レジスタ５７の出力からインストラクション実行部５０のジャンプデータを減算する。マルチプレクサ５４は、加算器５２の出力、減算器５９の出力、レジスタ５７の出力を入力し、インストラクション実行部５０の選択信号により選択を行い、リングメモリ３のリードアドレスを出力する。レジスタ５７は、マルチプレクサ５４の出力を保持する。
【０００９】
マルチプレクサ５５は、加算器５２の出力とボトムアドレスとを入力し、インストラクション実行部５０の選択信号により選択を行う。レジスタ５８は、マルチプレクサ５５の出力を保持し、ボトムアドレスを出力する。
【００１０】
比較部６は、リングメモリ３のライトアドレスとアドレス発生部５のボトムアドレスとを入力し、ボトムアドレスから所定数を減算し、ライトアドレスとを比較し、リングメモリ書込部４の書き込みを制限する。所定数は、リングメモリ３のライトアドレスとリードアドレスとを一定以上近づかないように設定される。比較部６は、減算器６０、コンパレータ６１からなる。減算部６０は、レジスタ５８のボトムアドレスから所定数を減算する。コンパレータ６１は、リングメモリ３のライトアドレスと減算器６０の出力とを比較し、比較結果を、リングメモリライトコントローラ４０に入力し、書き込み動作を制限させる。
【００１１】
ここで、インストラクションメモリ１、ＤＲＡＭコントローラ２、リングメモリ３のライト側、リングメモリ書込部４はクロックで同期され、リングメモリ３のリード側、アドレス発生部５はレートで同期される。レートとは、ＩＣテスタの動作周期を示す信号で、クロックより周波数が低い。
【００１２】
このような装置の動作を以下に説明する。図９は図８に示す装置の動作を説明する図である。ここで、リングメモリ３はイメージで示し、アドレスは２ｎ−１（ｎ：自然数）の次を０として動作し、反時計方向にアドレスは増加する。そして、ＷＰ（ライトポイント）は現在のライト位置で、レジスタ４３で示される。ＲＰ（リードポイント）は現在のリード位置で、レジスタ５７で示される。ＢＰ（ボトムポイント）は現在のリード終了位置で、レジスタ５８で示される。
【００１３】
クロック動作で、リングメモリライトコントローラ４０は、リングメモリ３にライトイネーブルを与え、ＤＲＡＭコントローラ２の制御を行う。これにより、ＤＲＡＭコントローラ２がインストラクションメモリ１にアドレスを与え、インストラクションメモリ１がインストラクションを出力する。このインストラクションを、リングメモリ３はレジスタ４３のライトアドレスに記憶する。
【００１４】
そして、リングメモリライトコントローラ４０は、通常、マルチプレクサ４２に加算器４１を選択させる。これにより、レジスタ４３は、前回の保持したライトアドレスに１を増加したアドレスを保持して、リングメモリ３に与える。
【００１５】
レート動作で、マルチプレクサ５４はリードアドレスをリングメモリ３に与え、リングメモリ３はインストラクションを出力する。このインストラクションをインストラクション実行部５０は入力し解釈して、マルチプレクサ５３を選択する。これにより、レジスタ５６は、前回の保持したパターンアドレス、または、前回の保持したパターンアドレスに１を増加したパターンアドレスを保持して出力する。
【００１６】
また、インストラクション実行部５０は、通常、マルチプレクサ５４，５５に加算器５２を選択させる。これにより、レジスタ５７は、前回の保持したリードアドレスに１を増加したアドレスを保持する。レジスタ５８は、レジスタ５７と同一のアドレスを保持する。
【００１７】
そして、減算器６０は、レジスタ５８が保持するボトムアドレスから所定数を減算する。コンパレータ６１が、レジスタ４３のライトアドレスと減算器６０の出力とを比較し、減算器６０の出力より大きくなれば、リングメモリ４０に対して通知を行う。この通知により、リングメモリライトコントローラ４０は、ライトイネーブルの出力を止めて、マルチプレクサ４２にレジスタ４３の出力を選択させ、ＤＲＡＭコントローラ２に対して動作を中止させる。
【００１８】
アドレス発生部５の動作が進み、リードアドレスが進み、比較部６がリードアドレスとライトアドレスの差が所定数以上あれば、リングメモリ書込部４への通知を解除する。これにより、リングメモリ書込部４（リングメモリライトコントローラ４０）はライトイネーブルをリングメモリ３に出力すると共に、マルチプレクサ４２に加算器４１の出力を選択させ、ＤＲＡＭコントローラ２に動作を開始させる。
【００１９】
以上のような動作により、図９（ａ）の状態、つまり、ボトムポインタとリードポインタが同じ動作を行い、リードポインタとボトムポインタが所定数の間隔で、リングメモリ３にインストラクションがインストラクションメモリ１から書き込まれる。
【００２０】
そして、リングメモリ３からのインストラクションがジャンプの場合、インストラクション実行部５０は、ジャンプデータを減算器５９に出力し、マルチプレクサ５４に減算器５９を選択させ、マルチプレクサ５５にレジスタ５８の出力を選択させる。この結果、レジスタ５７は、前回のアドレスからジャンプデータを減算したアドレスを保持する。レジスタ５８は、前回のアドレスを保持したままとなる。つまり、図９（ｂ）に示す状態となる。また、インストラクション実行部５０は、ジャンプアドレスをマルチプレクサ５３に出力し、マルチプレクサ５３にジャンプアドレスを選択させる。このマルチプレクサ５３の出力をレジスタ５６が入力し、パターンアドレスとして出力する。
【００２１】
アドレス発生部５は、リードアドレス、つまり、ジャンプしたアドレスで、リングメモリ３からインストラクションを読み込む。このとき、通常、ライトポイントとリードポイントが所定の差になっているので、リングメモリ書込部４は、上述のように、インストラクションメモリ１のインストラクションをリングメモリ３に書き込ませないように動作する。
【００２２】
そして、インストラクション実行部５０は、リングメモリ３からのインストラクションにより、マルチプレクサ５３，５４にそれぞれ加算器５１，５２を選択させる。これにより、レジスタ５７は、前回のリードアドレスに１を増加したアドレスを出力する。つまり、図９（ｃ）の状態になる。
【００２３】
アドレス発生部５がリードアドレスを進め、ボトムポイントと一緒になり、再び、インストラクションがジャンプの場合、図９（ｂ）の状態に戻り、ジャンプでない場合、図９（ａ）の状態に戻る。図９（ａ）の状態に戻ると、インストラクション実行部５０はマルチプレクサ５５に加算器５２を選択させる。
【００２４】
以上のような動作を繰り返し、インストラクションメモリ１のインストラクションを実行して、パターンアドレスを出力している。
【００２５】
【発明が解決しようとする課題】
インストラクションメモリ１は、安価な大容量のＤＲＡＭで構成されているため、リフレッシュ、ローアドレス切り替え等の発生で常に一定周期でデータの読み出しを行うことができない。そこで、インストラクションを、高価な小容量のリングメモリ３に一旦格納してから実行を行っている。
【００２６】
しかし、リングメモリ３の容量内でしかループ動作を行うことができない。そのため、インストラクションを注意して作成しなければならない。また、インストラクションの自由度が低下してしまうという問題点があった。
【００２７】
そこで本発明の目的は、リングメモリの容量を越えるループ動作ができるインストラクション実行装置及びインストラクション実行方法を実現することにある。
【００２８】
【課題を解決するための手段】
請求項１記載の本発明は、
インストラクションメモリのインストラクションをリングメモリに一旦記憶させ、このリングメモリからのインストラクションを実行するインストラクション実行装置において、
前記インストラクションメモリにアドレスを与えると共に、前記リングメモリに一旦記憶させるインストラクションにより、飛び先のインストラクションを検出し、インストラクションメモリの飛び先アドレスを保持し、飛び元のインストラクションを検出し、飛び先アドレスをインストラクションメモリに与えるアドレスコントローラと、
前記リングメモリからインストラクションを連続して読み出し、インストラクションを実行するインストラクション処理部と
を設けたことを特徴とするものである。
【００２９】
請求項２記載の本発明は、請求項１記載の本発明において、
インストラクション処理部は、
リングメモリのインストラクションを読み出し、インストラクションを実行してアドレスを発生するアドレス発生部と、
リングメモリから読み出されるインストラクションを入力し、飛び先のインストラクションを検出し、前記アドレス発生部が発生するアドレスを保持し、飛び元のインストラクションを検出し、アドレス発生部に保持したアドレスを出力させるジャンプ処理部と
を有することを特徴とするものである。
【００３０】
請求項３記載の本発明は、請求項１または２記載の本発明において、
アドレスコントローラは、リングメモリの容量を越えるインストラクションのジャンプを検出し、インストラクション処理部は、リングメモリの容量を越えないインストラクションのジャンプのとき、リングメモリからインストラクションをジャンプして読み出し、インストラクションを実行することを特徴とするものである。
【００３１】
請求項４記載の本発明は、
インストラクションメモリのインストラクションをリングメモリに一旦記憶させ、このリングメモリからのインストラクションを実行するインストラクション実行方法において、
前記インストラクションメモリにアドレスを与えると共に、前記リングメモリに一旦記憶させるインストラクションにより、飛び先のインストラクションを検出し、インストラクションメモリの飛び先アドレスを保持し、飛び元のインストラクションを検出し、飛び先アドレスをインストラクションメモリに与え、
前記リングメモリからインストラクションを連続して読み出し、インストラクションを実行することを特徴とするものである。
【００３２】
請求項５記載の本発明は、請求項４記載の本発明において、
リングメモリの容量を越えるインストラクションのジャンプを検出し、
リングメモリの容量を越えないインストラクションのジャンプのとき、リングメモリからインストラクションをジャンプして読み出し、インストラクションを実行することを特徴とするものである。
【００３３】
請求項６記載の本発明は、請求項４または５記載の本発明において、
インストラクションによりアドレスを発生することを特徴とするものである。
【００３８】
【発明の実施の形態】
以下図面を用いて本発明の実施の形態を説明する。図１は本発明の一実施例を示した構成図である。ここで、図８と同一のものは同一符号を付し説明を省略する。
【００３９】
図１において、インストラクションメモリ１１は、インストラクションメモリ１の代わりに設けられ、図２（ａ）に示すように、ＪＵＭＰビット、ＭＡＲＫビットが付加されたインストラクションを記憶する。ＪＵＭＰビットは、ロングジャンプ元のインストラクションであることを示すビットで、ＭＡＲＫビットは、ロングジャンプ先のインストラクションであることを示すビットである。ここで、ロングジャンプとは、リングメモリ３の容量を越えるジャンプを意味する。
【００４０】
アドレスコントローラ７は、ＤＲＡＭコントローラ２の代わりに設けられ、インストラクションメモリ１１にアドレスを与える。また、アドレスコントローラ７は、ＤＲＡＭコントローラ７１、第１のジャンプ処理部７２からなる。
【００４１】
ＤＲＡＭコントローラ７１は、リングメモリライトコントローラ４０により制御され、インストラクションメモリ１１にアドレスを与える。ジャンプ処理部７２は、リングメモリ３に一旦記憶させるインストラクションにより、飛び先のインストラクションを検出し、インストラクションメモリ１の飛び先アドレスを保持すると共に、飛び元のインストラクションを検出し、飛び先アドレスを、ＤＲＡＭコントローラ７１を介して、インストラクションメモリ１１に与える。また、ジャンプ処理部７２は、アドレス保持回路７２１、検出回路７２２からなる。
【００４２】
アドレス保持回路７２１は、図２（ｂ）に示すように、有効ビットと共に、ＤＲＡＭコントローラ７１のアドレスを保持する。検出回路７２２は、インストラクションメモリ１１が出力するインストラクション、アドレス保持回路７２１のアドレスに基づいて、ＤＲＡＭコントローラ７１を制御し、アドレス保持回路７２１のアドレスを出力させる。
【００４３】
第２のジャンプ処理部８は、リングメモリ３からのインストラクションにより、飛び先のインストラクションを検出し、インストラクションが実行された実行データ（パターンアドレス）を保持すると共に、飛び元のインストラクションを検出し、実行データを与える。第２のジャンプ処理部８は、アドレス保持回路８１、検出回路８２からなる。
【００４４】
インストラクション実行部５０１は、インストラクション実行部５０の代わりに設けられ、リングメモリ３のインストラクションを入力し解釈を行い、３つの選択信号とジャンプデータを出力する。マルチプレクサ５３１は、マルチプレクサ５３の代わりに設けられ、加算器５１の出力、パターンアドレス、アドレス保持回路８１のパターンアドレスを入力し、インストラクション実行部５０１の選択信号により選択を行う。ここで、アドレス発生部５、ジャンプ処理部８は、インストラクション処理部を構成する。
【００４５】
このような装置の動作を以下で説明する。図３は図１に示す装置の動作を説明する図である。（ａ）はインストラクションメモリ１１に記憶するインストラクション、（ｂ）はリングメモリ３に記憶するインストラクションを示す。また、”Ｍａｒｋ”はＭＡＲＫビット、”ＪＵＭＰ”はＪＵＭＰビット、”Ａ，Ｂ”はラベルを示し、各インストラクションは以下のような意味をなす。
【００４６】
ＮＯＰ：ノーオペレーション
ＳＴＩ１：図示しないＩＤＸ１レジスタにオペランドを設定する命令（ここでは”１”を設定）
ＳＴＩ２：図示しないＩＤＸ２レジスタにオペランドを設定する命令（ここでは”１”を設定）
ＪＮＩ１：「ＩＤＸ１レジスタ値」回だけオペランドに指定された飛び先アドレスとの間をループする命令
ＪＮＩ２：「ＩＤＸ２レジスタ値」回だけオペランドに指定された飛び先アドレスとの間をループする命令
【００４７】
リングメモリ３の領域を越えるジャンプ以外の動作は図８に示す装置と同じ動作で、ジャンプ処理部７２，８は何も行わないので説明を省略する。まず始めに、リングメモリ３への書込み動作について説明する。
【００４８】
インストラクションメモリ１１の出力がインストラクションａ１となり、検出回路７２２がＭＡＲＫビットを検出する。そして、検出回路７２２は、最初に出会ったインストラクション（ジャンプで飛んできたのではない）なので、アドレス保持回路７２１に指示する。アドレス保持回路７２１は、ＤＲＡＭコントローラ７１が出力するアドレスを、セットした有効ビットと共に保持する。ここで、最初に出会ったインストラクションかどうかは、例えば、ラベル”Ａ”を検出回路７２２が保持して同じラベルかどうかで判断を行う。
【００４９】
同様に、インストラクションメモリ１１の出力がインストラクションａ２となり、検出回路７２２がＭＡＲＫビットを検出する。そして、検出回路７２２は、最初に出会ったインストラクションなので、アドレス保持回路７２１に指示する。アドレス保持回路７２１は、ＤＲＡＭコントローラ７１が出力するアドレスを、セットした有効ビットと共に保持する。
【００５０】
そして、インストラクションメモリ１１の出力がインストラクションａ３となり、検出回路７２２がＪＵＭＰビットを検出する。検出回路７２２は、保持回路７２１のアドレスに有効ビットが設定されているかどうか判断する。有効ビットが設定されているので、検出回路７２２は、ＤＲＡＭコントローラ７１に保持回路７２１のアドレスをロードさせる。そして、ＤＲＡＭコントローラ７１は、保持回路７２１からのアドレスから再び順次アドレスをインストラクションメモリ１１に与える。
【００５１】
このとき、リングメモリ書込部４の動作は図８に示す装置と同一なので、説明を省略する。この結果、図３（ｂ）に示すようにリングメモリ３に書き込まれる。
【００５２】
次に、リングメモリ３からの読み出し動作について説明する。リングメモリ３の出力がインストラクションｂ１となり、検出回路８２がＭＡＲＫビットを検出する。そして、検出回路８２は、最初に出会ったインストラクションなので、アドレス保持回路８１に指示する。アドレス保持回路８１は、レジスタ５６が出力するパターンアドレスを、セットした有効ビットと共に保持する。アドレス発生部５は、図８に示す装置と同様なので説明を省略する。
【００５３】
同様に、リングメモリ３の出力がインストラクションｂ２となり、最初に出会ったインストラクションなので、検出回路８２、アドレス保持回路８１は上記と同じ動作を行う。
【００５４】
そして、リングメモリ３の出力がインストラクションｂ３となり、検出回路８２がＪＵＭＰビットを検出する。検出回路８２は、アドレス保持回路８１のアドレスに有効ビットが設定されているかどうか判断する。有効ビットが設定されているので、検出回路８２は、インストラクション実行部５０１、アドレス保持回路８１に通知すると共に、ＩＤＸ１レジスタの値が”１”で、最後のジャンプなのでアドレス保持回路８１のアドレスの有効ビットをリセットする。アドレス保持回路８１は、保持しているパターンアドレスを出力する。
【００５５】
インストラクション実行部５０１は、アドレス保持回路８１が出力するパターンアドレスに、マルチプレクサ５３１を選択させる。また、インストラクション５０１は、ジャンプデータを出力せずに、マルチプレクサ５４を加算器５２の出力に選択させ、リードアドレスを次に進ませる。つまり、リングメモリ３のアドレスはジャンプさせずに継続させる。
【００５６】
次に、リングメモリ３の出力がインストラクションｂ４となり、検出回路８２がＭＡＲＫビットを検出する。そして、検出回路８２は、最初に出会ったインストラクションではないので、何も行わない。アドレス発生部５は、図８に示す装置と同様なので説明を省略する。
【００５７】
インストラクションｂ５となり、検出回路８２がＪＵＭＰビットを検出する。検出回路８２は、アドレス保持回路８１のアドレスに有効ビットが設定されているかどうか判断する。有効ビットがリセット状態なので、検出回路８２は何も行わない。アドレス発生部５は図８に示す装置の動作と同様の動作を行う。
【００５８】
そして、リングメモリ３の出力がインストラクションｂ６となり、検出回路８２がＪＵＭＰビットを検出する。検出回路８２は、アドレス保持回路８１のアドレスに有効ビットが設定されているかどうか判断する。有効ビットが設定されているので、検出回路８２は、インストラクション実行部５０１、アドレス保持回路８１に通知すると共に、ＩＤＸ１レジスタの値が”１”で、最後のジャンプなので、アドレス保持回路８１のアドレスの有効ビットをリセットする。アドレス保持回路８１は、保持しているパターンアドレスを出力する。
【００５９】
インストラクション実行部５０１は、アドレス保持回路８１が出力するパターンアドレスに、マルチプレクサ５３１を選択させる。また、インストラクション５０１は、ジャンプデータを出力せずに、マルチプレクサ５４を加算器５２の出力に選択させ、リードアドレスを次に進ませる。つまり、リングメモリ３のアドレスはジャンプさせずに継続させる。
【００６０】
このように、ジャンプ処理部７がロングジャンプを検出して、リングメモリ３に飛び先以降のインストラクションをリングメモリ３に連続して書き込むので、リングメモリ３の領域を越えるロングジャンプができる。
【００６１】
次に、第２の実施例を図４に示し説明する。ここで、図８と同一のものは同一符号を付し説明を省略する。
【００６２】
図４において、リングメモリ３１，３２はＳＲＡＭで、リングメモリ３の代わりに設けられ、インストラクションメモリ１からのインストラクションを入力し記憶する。マルチプレクサ３３は選択部で、リングメモリ３１，３２のインストラクションを選択し、アドレス発生部５に出力する。
【００６３】
デコーダ４４は、リングメモリ書込部４に新たに設けられ、インストラクションメモリ１からのインストラクションを入力し、解釈を行う。リングメモリライトコントローラ４５は、リングメモリライトコントローラ４０の代わりに設けられ、デコーダ４４の出力、比較部６の出力、制御信号を入力し、ＤＲＡＭコントローラ２を制御すると共に、リングメモリ３１，３２にライトイネーブルを出力し、選択信号を出力し、ライトアドレスの調整を行う。
【００６４】
レジスタ４６は、リングメモリ書込部４に新たに設けられ、リングメモリライトコントローラ４５の調整により、レジスタ４３のライトアドレスを保持し、ライトアドレスの変更が行われる。マルチプレクサ４７は、マルチプレクサ４３の代わりに設けられ、加算器４１の出力、レジスタ４３，４６の出力を入力し、リングメモリライトコントローラ４５の選択信号により選択し、レジスタ４３に出力する。ここで、ＤＲＡＭコントローラ２、リングメモリ書込部４はアドレスコントローラを構成する。
【００６５】
インストラクション実行部５０２は、インストラクション実行部５０の代わりに設けられ、マルチプレクサ３３に選択信号、リングメモリライトコントローラ４５に制御信号を与えると共に、マルチプレクサ３３からインストラクションを入力し解釈を行い、３つの選択信号、ジャンプデータ、ジャンプアドレスを出力する。ここで、アドレス発生部５はインストラクション処理部を構成する。
【００６６】
このような装置の動作を以下に説明する。図５〜７は図４に示す装置の動作を説明する図である。図６は分岐成立の場合の動作を示し、図７は分岐不成立の場合の動作を示す。ここで、図９と同様にリングメモリ３１，３２をイメージで示している。なお、細部動作は、図８に示す装置と同様なので随時省略する。
【００６７】
図５（ａ）のとき、クロック動作で、リングメモリライトコントローラ４５は、リングメモリ３１，３２にライトイネーブルを与え、ＤＲＡＭコントローラ２の制御を行う。これにより、ＤＲＡＭコントローラ２がインストラクションメモリ１にアドレスを与え、インストラクションメモリ１がインストラクションを出力する。このインストラクションを、リングメモリ３１，３２はレジスタ４３のライトアドレスに記憶する。そして、デコーダ４４は、インストラクションメモリ１からのインストラクションを解釈して、リングメモリライトコントローラ４５に渡す。リングメモリライトコントローラ４５は、分岐（ジャンプ、条件分岐等）でないとき、リングメモリ３がリングメモリ３１，３２に代わっただけで、リングメモリライトコントローラ４０と同様の動作を行う。
【００６８】
そして、分岐（ジャンプ、条件分岐等）のとき、リングメモリライトコントローラ４５は、図５（ｃ）に示すように、リングメモリ３２に対するライトイネーブルを止めて、レジスタ４６にライトアドレスを保持させる。このとき、リングメモリ３１側は、図５（ｂ）に示すように、継続して所定数ライトアドレスを進めて、図５（ｄ）に示すように、リングメモリライトコントローラ４５は、リングメモリ３に対するライトイネーブルを止めて、書き込みを止める。
【００６９】
次に、リングメモリライトコントローラ４５は、ＤＲＡＭコントローラ２に飛び先アドレスの指示を与え、ＤＲＡＭコントローラ２は、飛び先アドレスから順次アドレスを出力する。そして、リングメモリライトコントローラ４５は、リングメモリ３２にライトイネーブルを出力する。同時に、リングメモリライトコントローラ４５は、マルチプレクサ４７にレジスタ４６のライトアドレスを出力させてから、マルチプレクサ４７を再び加算器４１を選択させる。この結果、図５（ｅ）に示すように、飛び先アドレスのインストラクションがリングメモリ３２に書き込まれる。
【００７０】
レート動作で、インストラクション実行部５０２は、マルチプレクサ３３にリングメモリ３１を選択させ、インストラクションを実行する。ここで、リングメモリ３１を選択させたが、インストラクションは同一のなので、リングメモリ３２でもよい。インストラクションが、分岐（ジャンプ等）でジャンプする場合、インストラクション実行部５０２は、マルチプレクサ３３にリングメモリ３２を選択させ、リングメモリライトコントローラ４５に分岐成立を通知し、リードアドレスを継続して出力させる。
【００７１】
これにより、リングメモリライトコントローラ４５は、リングメモリ３１にもライトイネーブルを出力する。この結果、図６（ａ）に示すように、リングメモリ３１はリングメモリ３２と同一のライトアドレスで書き込み動作が再開される。このとき、リングメモリ３２は、図６（ｂ）に示すように、書き込み動作が継続される。
【００７２】
インストラクションが、分岐しない場合、インストラクション実行部５０２は、マルチプレクサ３３にリングメモリ３１を選択させ、リングメモリライトコントローラ４５に分岐不成立を通知し、リードアドレスを継続して出力させる。
【００７３】
これにより、リングメモリライトコントローラ４５は、レジスタ４６の値を読み込み、所定数分足して、レジスタ４６に入力し、マルチプレクサ４７にレジスタ４６を選択させ、リングメモリ３１にもライトイネーブルを出力する。この結果、図７（ａ）に示すように、リングメモリ３１は、停止位置から書込み動作が再開され、図７（ｂ）に示すように、リングメモリ３２は、リングメモリ３１と同一のライトアドレスで書き込み動作が再開される。
【００７４】
このように、リングメモリ３１に飛ばないときのインストラクションを書き込み、リングメモリ３２に飛び先のインストラクションを書き込み、マルチプレクサ３３で選択して、アドレス発生部５が実行するので、事前に分岐が成立するか不成立かがわからなくても、リングメモリの容量を越えるジャンプを行うことができる。
【００７５】
なお、実施例としてアドレスを発生するアドレス発生装置を示したが、各種アプリケーションのインストラクションを実行するインストラクション実行装置でもよい。
【００７６】
【発明の効果】
請求項１〜３によれば、アドレスコントローラがジャンプを検出して、リングメモリに飛び先以降のインストラクションをリングメモリに連続して書き込むので、リングメモリの領域を越えるジャンプができる。
【００７７】
請求項４〜６によれば、ジャンプを検出して、リングメモリに飛び先以降のインストラクションをリングメモリに連続して書き込むので、リングメモリの領域を越えるジャンプができる。
【図面の簡単な説明】
【図１】本発明の一実施例を示した構成図である。
【図２】図１に示す装置のデータ構造を示す図である。
【図３】図１に示す装置の動作を説明する図である。
【図４】本発明の第２の実施例を示した構成図である。
【図５】図４に示す装置の動作を説明する図である。
【図６】図４に示す装置の動作を説明する図である。
【図７】図４に示す装置の動作を説明する図である。
【図８】従来のアドレス発生装置の構成を示した図である。
【図９】図８に示す装置の動作を説明する図である。
【符号の説明】
１  インストラクションメモリ
２  ＤＲＡＭコントローラ
３，３１，３２  リングメモリ
４  リングメモリ書込部
５  アドレス発生部
６  比較部
７  アドレスコントローラ
８  第２のジャンプ処理部
３３  マルチプレクサ
【図１】
0003625060.tif 000002
【図２】
0003625060.tif 000003
【図３】
0003625060.tif 000004
【図４】
0003625060.tif 000005
【図５】
0003625060.tif 000006
【図６】
0003625060.tif 000007
【図７】
0003625060.tif 000008
【図８】
0003625060.tif 000009
【図９】
0003625060.tif 000010