(57)【特許請求の範囲】
【請求項１】
演算対象のデータを格納し、１サイクルの前半と後半にそれぞれ偶数アドレスと奇数アドレスの２つのアドレス分に相当するデータを連続して出力する第１及び第２のメモリを備え、前記第１のメモリは巡回アドレスにより読み出されるデータ処理装置において、
前記第１のメモリおよび前記第２のメモリから出力されたデータを演算する演算器と、
前記第１のメモリあるいは前記第２のメモリのいずれかの出力が前記演算器に入力するタイミングを遅延させる遅延手段と、
前記第１のメモリおよび前記第２のメモリの出力を前記遅延手段を介して前記演算器に入力するか前記遅延手段を介さずに前記演算器に入力するかを選択する選択手段と、
前記第１のメモリのアドレスポインタとして機能する第１のアドレス保持手段と、
前記第２のメモリのアドレスポインタとして機能する第２のアドレス保持手段とを備え、
前記選択手段は、３つの動作モードのいずれかに従って動作し、
第１のモードでは、前記第１のメモリの出力および前記第２のメモリの出力の両方を前記遅延手段を介さずに前記演算器に入力し、
第２のモードでは、前記第１のメモリの出力を前記遅延手段を介さずに、前記第２のメモリの出力を前記遅延手段を介して前記演算器に入力し、
第３のモードでは、前記第１のメモリの出力を前記遅延手段を介して、前記第２のメモリの出力を前記遅延手段を介さずに前記演算器に入力し、
前記巡回アドレスが最終番地から先頭番地へと巡回する際、
前記巡回アドレスの最終アドレスが奇数アドレスの時は、いずれの動作モードであっても動作モードを変換せず、
前記巡回アドレスの最終アドレスが偶数アドレスでありかつ動作モードが前記第２モードの時は前記第１モードに、動作モードが前記第３モードの時は前記第１モードに、動作モードが前記第１モードの時は前記第２モードに変換することを特徴とするデータ処理装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、マイクロコンピュータ（マイコン）やデジタルシグナルプロセッサ（ＤＳＰ）で用いられるデータ処理装置に関するものである。
【０００２】
【従来の技術】
データ処理装置において処理の高速化を図る場合、メモリからのデータ読み出しの速度がボトルネックになる場合がしばしばある。データ読み出しの高速化を図るための一手段を「倍速読み出し」と称して、以下に説明する。倍速読み出しは、メモリからデータを読み出す場合に、偶数アドレスと奇数アドレスの２つのアドレス分に対応するデータを１マシンサイクルで一度に読み出す方法である。
【０００３】
この倍速読み出しを利用した従来のデータ処理装置について図面を参照しながら説明する。
【０００４】
図７は従来のデータ処理装置のデータ処理部の構成を示す。同図において、１０１および１０２はいずれもメモリであり演算対象となるもとのデータを格納している。１０３〜１０５はマルチプレクサであり、データがメモリ１０１から演算器へ入力するまでの経路や、メモリ１０２から演算器へ入力するまでの経路を選択する選択手段として機能する。１０６〜１０８はラッチ回路であり、メモリ１０１やメモリ１０２が出力したデータを一時的に保持する。なお、これら３つのラッチ回路がデータを保持する時間は等しく、マシンサイクル（基本サイクル）の１／２サイクル分の時間に設定されている。１０９は演算器であり、ラッチ回路１０７とラッチ回路１０８から同時に出力された２つのデータを演算してその演算結果を出力する。
【０００５】
メモリ１０１とメモリ１０２から出力されるデータは、アドレスポインタ（図示せず）によるアドレス更新によって順次新しいデータとなり、このデータが読み出される。特に倍速読み出しの場合、アドレスポインタは「１」ずつアドレスを更新するのではなく、例えば２ｍ番地、２ｍ＋２番地、２ｍ＋４番地・・・のように偶数アドレスだけを使用して順次更新していくか、あるいは、２ｍ＋１番地、２ｍ＋３番地、２ｍ＋５番地・・・のように奇数アドレスだけを使用して順次更新していく。このようにアドレスポインタがメモリに対して１つのアドレス（例えば偶数アドレス）を指定すると、その偶数アドレスと次の奇数アドレスの２つのアドレスに対応するデータがセットになって読み出される。例えば、２ｍ番地のアドレス指定に対して、２ｍ番地と２ｍ＋１番地に対応するデータが順にメモリから読み出され、２ｍ＋２番地のアドレス指定に対して、２ｍ＋２番地と２ｍ＋３番地に対応するデータがメモリから読み出される。また、奇数番地でアドレス指定した場合には、その奇数アドレスと前の偶数アドレスに対応する２つのデータを出力する。例えば、２ｍ＋１番地のアドレス指定に対して、２ｍ番地と２ｍ＋１番地に対応するデータが順にメモリから読み出される。このように、倍速読み出しを用いれば１回のアドレス指定に対して、２つのデータを読み出すことができるので、データ処理速度が２倍になる。
【０００６】
このように倍速読み出しを用いれば、データ処理速度が２倍になるという効果があるが、正しい演算を順次実行するためには演算器１０９へのデータ入力のタイミングを調整する必要がある。すなわち、２つのデータを演算する場合、これら２つのデータを演算器１０９に同じタイミングで入力しなければならないが、倍速読み出しでは、１回のアドレス指定で１つのメモリから２つのデータが読み出されるため、どちらのデータを演算対象とするかによって、タイミング制御が異なってくる。このタイミング制御のために、マルチプレクサ１０３〜１０５と、ラッチ回路１０６〜１０８を設けている。
【０００７】
タイミング制御を行うデータ処理装置の動作を図８〜図１０を用いて説明する。図８および図９はメモリからのデータ出力のタイミングや演算器への入力タイミングを示すタイミング図である。なお、以降の説明では、１つのマシンサイクルの中で偶数番地が先で奇数番地が後になってデータ処理される場合を例に説明する。
【０００８】
図８は、２つのメモリから出力されたデータに対して、演算器１０９への入力タイミングをずらせることなくデータ処理する場合のタイミング図である。メモリ１０１とメモリ１０２のそれぞれに格納された偶数番地のデータは、同時に出力されて、そのまま同じタイミングで演算器１０９に入力され演算される。また、次のタイミングでメモリ１０１とメモリ１０２のそれぞれに格納された奇数番地のデータについても互いに同じタイミングで演算器１０９に入力され演算される。また、このデータ処理においては、メモリ１０１の２ｍ番地から連続して２ｍ＋５番地まで、メモリ１０２の２ｎ番地から２ｎ＋５番地までのデータを使用して演算を行う場合を示す。なお、ｍ、ｎは整数である。
【０００９】
まず、このデータ処理の開始時には図７のデータ処理装置に対して図示しない制御手段によって次のような制御が行われる。すなわち、マルチプレクサ１０４はメモリ１０１の出力を選択し、マルチプレクサ１０５はメモリ１０２の出力を選択する。なお、このときはマルチプレクサ１０３はどのような制御状態になっていてもよい（関係ない）。
【００１０】
このような制御状態のもとでデータ読み出しが行われる。メモリ１０１のアドレスポインタ（図示せず）が１つの偶数アドレス（偶数番地）２ｍを指定すると、メモリ１０１からマシンサイクル（基本サイクル）の前半で偶数番地２ｍのデータが読み出され、後半で奇数番地２ｍ＋１のデータが読み出される。マルチプレクサ１０４はメモリ１０１の出力を選択しているので、ラッチ回路１０７にこれらのデータが順次取り込まれ出力される。一方、メモリ１０２のアドレスポインタが１つの偶数番地２ｎを指定すると、メモリ１０２からはマシンサイクルの前半で偶数番地２ｎのデータが読み出され、後半で奇数番地２ｎ＋１のデータが読み出される。マルチプレクサ１０５ではメモリ１０２の出力が選択され、ラッチ回路１０８にデータが取り込まれ出力される。このように、メモリ１０１からの出力とメモリ１０２からの出力は、どちらも１つのラッチ回路を介して、演算器１０９に入力するので、演算器１０９へは同じタイミングで入力する。以後、同様に２ｍ＋２番地のデータと２ｎ＋２番地のデータ、２ｍ＋３番地のデータと２ｎ＋３番地のデータ、２ｍ＋４番地のデータと２ｎ＋４番地のデータ、そして２ｍ＋５番地のデータと２ｎ＋５番地のデータが演算器１０９に入力して演算される。このように偶数番地同士のデータや奇数番地同士のデータを互いに演算する場合には、メモリ１０１のデータをラッチ回路１０７に入力し、メモリ１０２のデータをラッチ回路１０８に入力すれば、これらのデータを同じタイミングで演算器１０９に入力して演算することができる。
【００１１】
次に、図９は、偶数番地のデータと奇数番地のデータの演算を実行する場合の動作を示す。ここでは、最初の読み出しで、メモリ１０１から偶数番地のデータを読み出し、メモリ１０２から奇数番地のデータを読み出す場合を例に説明する。データ処理の開始時には、メモリ１０１とメモリ１０２に対するアドレスポインタ（図示せず）がそれぞれ偶数番地と奇数番地を示している。これらのアドレスポインタの値に基づき図７のデータ処理装置に対して図示しない制御手段によって次のような制御が行われる。マルチプレクサ１０３はメモリ１０１の出力を選択し、マルチプレクサ１０４はラッチ回路１０６の出力を選択する。またマルチプレクサ１０５はメモリ１０２の出力を選択する。これによりメモリ１０１から出力されたデータはラッチ回路１０６とラッチ回路１０７を通って演算器１０９へ入力し、メモリ１０２から出力されたデータはラッチ回路１０８を通って演算器１０９へ入力する。すなわち、メモリ１０１の出力データはメモリ１０２からの出力データに比べて、ラッチ回路を１つ多く通るので、演算器１０９への入力タイミングが遅くなる。この遅れ時間はマシンサイクルの１／２サイクルとなる。
【００１２】
このような制御状態のもとでデータ読み出しが行われると、メモリ１０１とメモリ１０２からはそれぞれ最初に２ｍ番地のデータと２ｎ番地のデータが同じタイミングで読み出されるが、メモリ１０１からの出力データはマルチプレクサ１０３と１０４の選択により、ラッチ回路１０６とラッチ回路１０７を介してから演算器１０９に入力する。また、メモリ１０２からの出力はマルチプレクサ１０５の選択により、ラッチ回路１０８を介して演算器１０９へ入力する。この結果、メモリ１０１の出力はメモリ１０２の出力よりも１／２サイクルだけ遅れて演算器１０９へ入力する。従って、図９に示すようにマシンサイクルの１サイクル目の前半ではメモリ１０２の最初の出力である２ｎ番地のデータは、同じタイミングで演算器１０９に入力する演算対象のデータがないことになるので演算されない。次にマシンサイクルの１サイクル目の後半では、メモリ１０１の出力である２ｍ番地のデータと、メモリ１０２の出力である２ｎ＋１番地のデータのそれぞれがラッチ回路１０７とラッチ回路１０８から同じタイミングで演算器１０９に入力する。同様にして、順次、２ｍ＋１番地のデータと２ｎ＋２番地のデータ、２ｍ＋２番地のデータと２ｎ＋３番地のデータ、２ｍ＋３番地のデータと２ｎ＋４番地のデータ、２ｍ＋４番地のデータと２ｎ＋５番地のデータ、そして２ｍ＋５番地のデータと２ｎ＋６番地のデータが演算器１０９で演算される。このように、偶数番地のデータと奇数番地のデータを演算する場合には、２系統のデータのタイミングをずらせることで演算を行う。
【００１３】
なお、図９では、メモリ１０１の出力データを１／２サイクル遅らせる例を示したが、これとは逆にメモリ１０２の出力を１／２サイクル遅らせる動作については、対称的な動作になるだけであるので説明を省略する。
【００１４】
【発明が解決しようとする課題】
上記の従来の構成では、偶数番地のデータと奇数番地のデータを演算する場合でも、データ処理の開始前にマルチプレクサの制御状態を変えることにより、適切な演算を行うことができた。しかし、データ処理の開始前でなく、データ処理の最中に演算器へのデータ入力タイミングを変える必要が生じた場合には、従来の構成では対応できない。すなわち、従来ではデータ処理の開始時にマルチプレクサの制御状態を決定すれば、以降は同じ制御状態でデータ処理を行うことしかできなかった。しかし、例えば、アドレスポインタの示すアドレスが一定領域を巡回する、巡回アドレッシングを用いる場合は領域の範囲によっては２巡目以降でデータのタイミングが揃わなくなり、データ処理の途中でタイミングを変えなければ演算ができなくなるという問題がある。
【００１５】
その例を図１０を用いて説明する。図１０はメモリ１０１のアドレスポインタに通常のアドレスを使用し、メモリ１０２のアドレスポインタに巡回アドレスを使用した場合の動作タイミングを示す。なお、メモリ１０１は２ｍ番地から２ｍ＋５番地までのデータを使用し、メモリ１０２は２ｎ番地から２ｎ＋４番地の間でアドレスが巡回し、データは２ｎ番地から２巡目の２ｎ番地までを使用する。演算のスタート時は、メモリ１０１のアドレスポインタは２ｍ番地を示し、メモリ１０２のアドレスポインタは２ｎ番地を示している。そして、これらのアドレスポインタは順次２ｍ＋２と２ｎ＋２、２ｍ＋４と２ｎ＋４を示していく。演算開始時のマルチプレクサの制御状態は、図８で示した動作のときと同じである。すなわち、データ処理の開始時には図７のデータ処理装置に対して図示しない制御手段によって、マルチプレクサ１０４はメモリ１０１の出力を選択し、マルチプレクサ１０５はメモリ１０２の出力を選択する。また、マルチプレクサ１０３はどのような制御になっていてもよい。
【００１６】
このような制御状態でメモリからのデータ読み出しを開始すると、図１０に示すようにマシンサイクルの３サイクル目前半まで（２ｍ番地〜２ｍ＋４番地、２ｎ番地〜２ｎ＋４番地まで）のデータは図８の動作と同様のタイミングで演算される。しかし、次に２ｍ＋５番地と２巡目の２ｎ番地の間で演算を行わなければならないが、メモリの倍速読み出しの制限により、アドレスポインタが２ｎ＋４番地を示すと、データとしては２ｎ＋４番地のデータと２ｎ＋５番地のデータがセットで出力される。すなわち２ｎ＋４番地のデータを出力するサイクルの後半では必ず２ｎ＋５番地のデータが出力される。このために、２ｍ＋５番地と２ｎ＋５番地のデータが同じタイミングで演算器１０９に入力されてしまい、所望の演算（２ｍ＋５番地と２ｎ番地のデータの演算）を行えない。すなわち、倍速読み出しを使用すると、偶数番地のデータと奇数番地のデータとが必ずセットで読み出されるので、偶数番地だけを読み出して終わることができない。このため、上記のような場合には、巡回アドレスの２巡目以降で演算器へのデータ入力タイミングがずれるので、誤った演算を行うことになる。
【００１７】
本発明は上記の課題を解決するもので、倍速読み出しと巡回アドレッシングを共に用いても演算を正確に行うことのできるデータ処理装置を提供する。
【００１８】
請求項１記載のデータ処理装置は、演算対象のデータを格納し、１サイクルの前半と後半にそれぞれ偶数アドレスと奇数アドレスの２つのアドレス分に相当するデータを連続して出力する第１及び第２のメモリを備え、前記第１のメモリは巡回アドレスにより読み出されるデータ処理装置において、前記第１のメモリおよび前記第２のメモリから出力されたデータを演算する演算器と、前記第１のメモリあるいは前記第２のメモリのいずれかの出力が前記演算器に入力するタイミングを遅延させる遅延手段と、前記第１のメモリおよび前記第２のメモリの出力を前記遅延手段を介して前記演算器に入力するか前記遅延手段を介さずに前記演算器に入力するかを選択する選択手段と、前記第１のメモリのアドレスポインタとして機能する第１のアドレス保持手段と、前記第２のメモリのアドレスポインタとして機能する第２のアドレス保持手段とを備え、前記選択手段は、３つの動作モードのいずれかに従って動作し、第１のモードでは、前記第１のメモリの出力および前記第２のメモリの出力の両方を前記遅延手段を介さずに前記演算器に入力し、第２のモードでは、前記第１のメモリの出力を前記遅延手段を介さずに、前記第２のメモリの出力を前記遅延手段を介して前記演算器に入力し、第３のモードでは、前記第１のメモリの出力を前記遅延手段を介して、前記第２のメモリの出力を前記遅延手段を介さずに前記演算器に入力し、前記巡回アドレスが最終番地から先頭番地へと巡回する際、前記巡回アドレスの最終アドレスが奇数アドレスの時は、いずれの動作モードであっても動作モードを変換せず、前記巡回アドレスの最終アドレスが偶数アドレスでありかつ動作モードが前記第２モードの時は前記第１モードに、動作モードが前記第３モードの時は前記第１モードに、動作モードが前記第１モードの時は前記第２モードに変換することを特徴とするものである。
【００２１】
【作用】
以上の構成によれば、データ処理装置は、メモリからデータを読み出し始めるときに演算器へのデータ入力タイミングを選択するだけでなく、巡回アドレスの最終番地のデータをメモリから読み出した後にも、演算器へのデータ入力タイミングを選択することができる。従って、倍速読み出しのデータ処理装置において、巡回アドレスを利用することが可能になる。
【００２２】
【実施例】
本発明の実施例における倍速読み出しを利用したデータ処理装置について図面を参照しながら説明する。
【００２３】
図１は本実施例のデータ処理装置の構成を示す。同図において、１はデータ処理部であり、このデータ処理部１は図７に示した従来のものと同じ構成であり、メモリ２、メモリ３、マルチプレクサ４〜６、ラッチ回路７〜９および演算器１０から構成されている。マルチプレクサ４はメモリ２とメモリ３の出力のいずれかを選択する選択手段として機能しており、このマルチプレクサ４の出力データはラッチ回路７に入力して保持される。また、メモリ２の出力とラッチ回路７の出力はマルチプレクサ５に入力し、いずれかの出力が選択されてラッチ回路８に入力され保持される。また、メモリ３の出力とラッチ回路７の出力はマルチプレクサ６に入力し、いずれかの出力が選択されてラッチ回路９に入力され保持される。ラッチ回路８の出力データとラッチ回路９の出力データは同期して演算器１０に入力し、２つのデータが演算されて、出力される。また、演算器１０は、加減算器、論理演算器、乗算器等の演算器である。なお、演算器１０の出力先となるレジスタについては、図１では省略している。
【００２４】
１１は中央演算処理装置（ＣＰＵ）等に代表される制御手段であり、また、１２および１３は、それぞれメモリ２とメモリ３のアドレスポインタとして機能するアドレス保持用のレジスタである。また、１４は、レジスタ１３に巡回レジスタを保持させた場合に、巡回レジスタの先頭アドレスを保持するレジスタであり、１５は巡回レジスタの最終アドレスを保持するレジスタである。また、１６は、レジスタ１３に保持したアドレス値とレジスタ１５に保持したアドレス値を比較し、一致した場合には一致信号を制御手段１１と加算器１７に出力する比較器である。なお、この比較器１６は、レジスタ１３のアドレス値とレジスタ１５のアドレス値を比較するときに、それぞれのアドレス値（２進数）の最下位ビットを除いて比較する。すなわち同じサイクル内の偶数番地と奇数番地を区別せずに比較する。従って、レジスタ１３のアドレス値が「２」ずつインクリメントされて常に偶数番地のみを示していて、一方、レジスタ１５に保持された最終番地が奇数であっても同じマシンサイクル内で読み出される番地であれば一致信号が出力される。１７および１８は加算器であり、レジスタ１３やレジスタ１２に保持しているアドレス値をマシンサイクルの１サイクルごとにインクリメントして再びレジスタ１３に入力する。すなわち、これらの加算器１７、１８がアドレスポインタの値を順次更新していく。なお、加算器１７は比較器１６から一致信号を受けたときには、レジスタ１３の値をインクリメントせずにレジスタ１４に保持されている巡回アドレスの先頭番地の値をレジスタ１３に入力する。これにより、巡回アドレッシングが可能になる。
【００２５】
また、レジスタ１２、レジスタ１３およびレジスタ１５が保持するアドレス値は信号ｓ１２、ｓ１３およびｓ１５として制御手段１１にも入力している。なお、これらのアドレス値が２進数の形で保持されている場合には、最下位ビットの情報だけを制御手段１１に入力してもよい。すなわち、制御手段１１にはこれらのアドレス値が偶数であるか奇数であるかを判別するために入力している。また、比較器１６から出力される一致信号ｓ１６も制御手段１１に入力している。制御手段１１はこの一致信号ｓ１６を受けると、レジスタ１５からの信号ｓ１５に基づいて巡回アドレスの最終番地が偶数であるか奇数であるかを判定し、この判定結果に応じて制御信号ｃ、ｄ、ｅを出力してデータ処理部１のマルチプレクサ４、５、６を制御する。
【００２６】
本実施例では、以上の構成のデータ処理装置を用いて、マルチプレクサ４、５および６の制御状態を変えることにより、少なくとも３種類の動作モードを可能にする。その３種類の動作モードを図２に示す。
【００２７】
図２において、モード１はメモリ２の出力とメモリ３の出力のタイミングを遅らせずに、どちらも同じタイミングで演算器１０に入力するモードである。すなわち、図１のマルチプレクサ５はメモリ２の出力を選択し、マルチプレクサ６はメモリ３の出力を選択する。
【００２８】
また、モード２はメモリ２の出力をメモリ３の出力よりもマシンサイクルで１／２サイクル遅らせて処理する場合である。すなわち、モード２では図１のマルチプレクサ４はメモリ２の出力を選択し、マルチプレクサ５はラッチ回路７の出力を選択する。またマルチプレクサ６はメモリ３の出力を選択する。
【００２９】
さらに、モード３はメモリ３の出力をメモリ２の出力よりもマシンサイクルで１／２サイクル遅らせて処理する場合である。すなわち、モード３では図１のマルチプレクサ４はメモリ３の出力を選択し、マルチプレクサ６はラッチ回路７の出力を選択する。またマルチプレクサ５はメモリ２の出力を選択する。
【００３０】
なお、図２に示すコードは、本実施例において各モードを特定するために付与したコードであり、２進数で表示している。モード１は「００１」、モード２は「０１０」、モード３は「１００」としている。
【００３１】
次に図１における制御手段１１の具体的な回路例を説明する。図３および図４は制御手段１１内部の具体的回路と、図１に示したデータ処理装置の一部を示す。図１と同じ構成要素や同じ信号には同じ符号を付けている。図３および図４に示す回路は、従来ではデータ処理の開始時にしかできなかったモード選択を、データ処理の途中でもモード切り換え可能にしたものであり、アドレス値やモードの状態に応じて、適切なモードを選択するように回路が構成されている。
【００３２】
以下に、図３および図４の回路構成により得られるモードと、そのときのアドレス値や各信号値等との関係を示す。なお、以下の説明で用いるスタートパルスとは、データ処理開始時にだけ制御手段１１内に論理値「１」を入力するパルスである。
【００３３】
・モード１を選択する条件（(1)〜(5)のいずれか１つの条件を満たせばよい）
（１）レジスタ１２およびレジスタ１３の値が偶数（すなわちレジスタ１２と１３の出力信号ｓ１２とｓ１３がともに「０」）でかつスタートパルスを受けたとき
（２）モード２の状態で比較器１６の一致信号ｓ１６が「１」（一致している）であり、かつ巡回アドレスの最終番地が偶数（すなわちレジスタ１５の出力信号ｓ１５が「０」）のとき
（３）モード３の状態で比較器１６の一致信号ｓ１６が「１」であり、かつ巡回アドレスの最終番地が偶数のとき
（４）モード１の状態で比較器１６の一致信号ｓ１６が「１」であり、かつ巡回アドレスの最終番地が奇数（すなわちレジスタ１５の出力信号ｓ１５が「１」）のとき
（５）モード１の状態で比較器１６の一致信号ｓ１６が「０」（一致していない）の状態のとき
・モード２を選択する条件（(1)〜(4)のいずれか１つの条件を満たせばよい）
（１）レジスタ１２の値が偶数でレジスタ１３の値が奇数でかつスタートパルスを受けたとき
（２）モード１の状態で比較器１６の一致信号ｓ１６が「１」であり、かつ巡回アドレスの最終番地が偶数のとき
（３）モード２の状態で比較器１６の一致信号ｓ１６が「１」であり、かつ巡回アドレスの最終番地が奇数のとき
（４）モード２の状態で比較器１６の一致信号ｓ１６が「０」のとき
・モード３を選択する条件（(1)〜(3)のいずれか１つの条件を満たせばよい）
（１）レジスタ１２の値が奇数でレジスタ１３の値が偶数でかつスタートパルスを受けたとき
（２）モード３の状態で比較器１６の一致信号ｓ１６が「１」であり、かつ巡回アドレスの最終番地が奇数のとき
（３）モード３の状態で比較器１６の一致信号ｓ１６が「０」のとき
以上の選択条件に基づいてモード１〜モード３への切り換えを行うが、具体的には図３および図４に示した回路で実現することができる。
【００３４】
まず図３は、上記のモード切り換え条件に従って構成された論理回路を示している。同図において、２０（２０ａ、２０ｂ、２０ｃ）は現在のモードを２進数のコードで保持したレジスタであり、２０ａ、２０ｂ、２０ｃにそれぞれ１ビットずつ合計３ビットの情報を保持する。このコードは、図２に示したものと同じで、モード１は（２０ａ、２０ｂ、２０ｃ）＝「００１」、モード２は「０１０」、モード３は「１００」のコードで表される。これらのレジスタ値は図４に示す論理回路を経て図１に示した信号ｃ、ｄ、ｅとしてデータ処理部１へ入力され、データ処理部１内のマルチプレクサ４〜６の制御に用いられる。また、レジスタ２０自身の値変更（モード切り換え）のデータとしても使用され、アンド回路Ｍ１、Ｍ２、Ｍ３に入力している。モード１すなわちコード「００１」のときにはアンド回路Ｍ１が「１」を出力する。また、モード２すなわちコード「０１０」のときにはアンド回路Ｍ２が「１」を出力する。また、モード３すなわちコード「１００」のときにはアンド回路Ｍ３が「１」を出力する。
【００３５】
レジスタ２０ａ〜２０ｃのそれぞれに入力する信号は、スタートパルス、レジスタ１２の最下位ビット出力ｓ１２、レジスタ１３の最下位ビット出力ｓ１３、レジスタ１５の最下位ビット出力ｓ１５、比較器１６の一致信号ｓ１６と、アンド回路Ｍ１、Ｍ２、Ｍ３の出力の論理的組合せであり、上記のモード選択条件を満たすように信号が形成される。
【００３６】
すなわち、モード１を選択する条件が満たされるとオア回路２８の出力のみが「１」となり、またモード２を選択する条件が満たされるとオア回路２４の出力のみが「１」となり、さらにモード３を選択する条件が満たされるとオア回路２１の出力のみが「１」となる。
【００３７】
例えばモード２の状態で比較器１６が一致信号ｓ１６を出力し、かつ巡回アドレスの最終番地が偶数（すなわちｓ１５が「０」）のときには、モード２であるからアンド回路Ｍ２が「１」を出力し、ｓ１５が「０」でかつｓ１６が「１」を出力するので、アンド回路３５が「１」を出力する。従って、アンド回路３１が「１」を出力することになり、オア回路２８を介してレジスタ２０ｃに「１」が入力されて保持される。また、その他のレジスタ２０ａ、２０ｂは「０」になっている。これにより、レジスタ２０が保持するコードは「００１」となり、モード２からモード１へ切り換えられたことになる。
【００３８】
その他のモード切り換えについても、図３に示した回路によれば上記の条件通りに切り換えを行うことができる。
【００３９】
図４は、データ処理部１内のマルチプレクサをモードに応じて制御するための具体的な回路構成を示す。同図では、簡単のためデータ処理部１の一部分のみを示す。同図に示すように、マルチプレクサ４は制御信号ｃが「１」のとき図中左側（メモリ２側）を選択し、制御信号ｃが「０」のとき図中右側（メモリ３側）を選択する。また、マルチプレクサ５は制御信号ｄが「０」のとき図中左側（メモリ２側）を選択し、制御信号ｄが「１」のとき図中右側（ラッチ回路７側）を選択する。さらにマルチプレクサ６は制御信号ｅが「１」のとき図中左側（ラッチ回路７側）を選択し、制御信号ｅが「０」のとき図中右側（メモリ３側）を選択する。
【００４０】
また、３６はレジスタ２０の値が「０１０」（すなわちモード２）のときに「１」を出力するアンド回路であり、３７はレジスタ２０の値が「１００」（すなわちモード３）のときに「１」を出力するアンド回路である。
【００４１】
以上の構成の回路について、その動作を説明すると、モード１のときはレジスタ２０の値は「００１」であり、アンド回路３６および３７の出力値はどちらも「０」であるので、制御信号ｃ、ｄ、ｅがすべて「０」になっている。このため、マルチプレクサ５は図中左側（すなわちメモリ２側）を選択し、マルチプレクサ６は図中右側（すなわちメモリ３側）を選択する。この制御により、モード１ではメモリ２とメモリ３の出力データが互いに遅れることなく演算器に入力する。
【００４２】
また、モード２のときはレジスタ２０の値は「０１０」であり、アンド回路３６の出力値は「１」、３７の出力値は「０」であるので、制御信号ｃ、ｄは「１」で、ｅが「０」になっている。このため、マルチプレクサ４は図中左側（すなわちメモリ２側）を選択し、マルチプレクサ５は図中右側（すなわちラッチ回路７側）を選択し、マルチプレクサ６は図中右側（すなわちメモリ３側）を選択する。これによりモード２では、メモリ２のデータが１／２サイクル遅れて演算器に入力する。
【００４３】
また、モード３のときはレジスタ２０の値は「１００」であり、アンド回路３６の出力値は「０」、３７の出力値は「１」であるので、制御信号ｃ、ｄは「０」で、ｅが「１」になっている。このため、マルチプレクサ４は図中右側（すなわちメモリ３側）を選択し、マルチプレクサ５は図中左側（すなわちメモリ２側）を選択し、マルチプレクサ６は図中左側（すなわちラッチ回路７側）を選択する。これによりモード３では、メモリ３のデータが１／２サイクル遅れて演算器に入力する。
【００４４】
以上のようにして、モード切り換えに応じてマルチプレクサの制御が可能となり、演算器１０へのデータ入力タイミングを変えることができる。
【００４５】
次に、以上のデータ処理装置において、メモリ３に巡回アドレスを使用し、メモリ２に通常のアドレスを使用して、各データを読み出して演算を行う場合の動作を説明する。
【００４６】
図５は、メモリ２に通常のアドレッシングを使用し、メモリ３に巡回アドレッシングを使用した場合の出力データのタイミング図である。メモリ２は２ｍ番地から２ｍ＋１１番地までのデータを使用し、メモリ３は２ｎ番地から２ｎ＋４番地の間でアドレスが巡回し、データは２ｎ番地から３巡目の２ｎ＋１番地までを使用する。
【００４７】
まず、データ処理の開始時には、図１のレジスタ１３に巡回アドレスの先頭番地２ｎが保持され、レジスタ１５に巡回アドレスの最終番地２ｎ＋４が保持される。また、アドレスポインタとして機能するレジスタ１２に２ｍ番地、レジスタ１３に２ｎ番地が保持される。レジスタ１２と１３に保持されたアドレス値の最下位ビットは信号ｓ１２およびｓ１３として制御手段１１に入力する。これらの信号に基づいて制御手段１１はマルチプレクサ４、５、６を制御する。ここでは、２つのレジスタ１２および１３に保持されたアドレスはどちらも偶数であり、またデータ処理開始時を示すスタートパルスが出力されるので、制御手段１１は図２のモード１を選ぶ。すなわち、メモリ２の２ｍ番地のデータはマルチプレクサ５に選択されて、ラッチ回路８を介して演算器１０に入力し、メモリ３の２ｎ番地のデータはマルチプレクサ６に選択されて、ラッチ回路９を介して演算器１０に入力し、２つのデータが演算される。同様に、マシンサイクル（基本サイクル）の３サイクル目の前半までは、図５に示すように２ｍ＋１番地と２ｎ＋１番地、２ｍ＋２番地と２ｎ＋２番地、２ｍ＋３番地と２ｎ＋３番地、２ｍ＋４番地と２ｎ＋４番地のデータが演算器１０に入力して演算される。
【００４８】
また、マシンサイクルの３サイクル目の前半には、メモリ３から２ｎ＋４番地のデータが出力するが、この２ｎ＋４番地は巡回アドレスの最終アドレスであるので、レジスタ１３の値とレジスタ１５の値が一致し、比較器１６が一致信号ｓ１６を出力する。この一致信号ｓ１６は制御手段１１と加算器１７に入力する。制御手段１１は比較器１６から一致信号ｓ１６を受けると、レジスタ１５のアドレス値が偶数か奇数かを判定する。この実施例では、レジスタ１５のアドレス値（すなわち、巡回アドレスの最終番地２ｎ＋４）は偶数である。モード１の状態で、一致信号ｓ１６が「１」になり、かつレジスタ１５のアドレス値が偶数の場合、図３におけるアンド回路Ｍ１が「１」を出力し、またアンド回路３５が「１」を出力する。これによりアンド回路２６を介してオア回路２４が「１」を出力するので、レジスタ２０の値は「０１０」となる。このコードはモード２を意味するので、制御手段１１は動作モードをモード１からモード２に切り換えたことになる。また、図４において、制御手段１１は制御信号ｃによりマルチプレクサ４がメモリ２の出力を選択するように制御し、また、制御信号ｄによりマルチプレクサ５がラッチ回路７の出力を選択するように制御し、また、制御信号ｅによりマルチプレクサ６がメモリ３の出力を選択するように制御する。これによりメモリ２のデータを１／２サイクルだけ遅延させるモード２の制御状態が実現できる。
【００４９】
なお、上記のモード選択の条件でも示したように、もし、巡回アドレスの最終アドレスが奇数であれば、モードの切り換えは行わない。１サイクル内で偶数番地、奇数番地の順で読み出される倍速読み出しの場合には、最終番地が奇数であれば、次に余分なデータが読み出されることがないので、スムーズに巡回して次の先頭番地を読み出すことができるからである。このため１／２サイクルだけ遅延させる必要もないので、モードを切り換えることもない。
【００５０】
しかし、この実施例とは異なるが、１サイクル内で奇数番地、偶数番地の順で読み出すような場合には、巡回アドレスの最終アドレスが奇数の時にモードを切り換えて、最終アドレスが偶数の時にモードを切り換えないような制御を行う。
【００５１】
動作の続きを説明すると、比較器１６は加算器１７にも一致信号を出力しているので、加算器１７は一致信号を受けると、レジスタ１３のアドレス値のインクリメントを止めて、レジスタ１４に保持しているアドレス値（すなわち、巡回アドレスの先頭番地２ｎ）をレジスタ１３に入力する。これにより、レジスタ１３のアドレス値は最終番地から先頭番地へと巡回することができる。
【００５２】
図３におけるマシンサイクルの３サイクル目の後半になると、上記のように動作モードがモード２に切り換わっているので、メモリ２の出力は１／２サイクルだけ遅れて演算器１０に入力する。すなわち、メモリ３の２ｎ＋５番地のデータは、マシンサイクルの３サイクル目の後半に演算器１０に入力するが、メモリ２の２ｍ＋５番地のデータは１／２サイクル遅れて４サイクル目の前半に演算器１０に入力する。このため、メモリ２の２ｍ＋５番地のデータはメモリ３の２ｎ番地のデータに同期して演算器１０に入力するので、メモリ２の２ｍ＋５番地のデータとメモリ３の２ｎ番地のデータとの演算が可能となる。なお、マシンサイクルの３サイクル目の後半では、メモリ２の２ｍ＋５番地のデータだけが演算器１０に入力しており、データが揃わないので１／２サイクルの期間だけ演算を停止することになる。
【００５３】
同様に、マシンサイクルの６サイクルの前半までは、順に２ｍ＋６番地と２ｎ＋１番地、２ｍ＋７番地と２ｎ＋２番地、２ｍ＋８番地と２ｎ＋３番地、２ｍ＋９番地と２ｎ＋４番地のデータが同期して演算器１０に入力され、演算される。
【００５４】
６サイクル目の前半では、再び巡回アドレスの最終番地になり、しかも偶数番地である。このときには、モード２からモード１に切り換えると共に６サイクル目から７サイクル目でのメモリ２のアドレスポインタ更新を停止し、これにより演算を１／２サイクル停止する。そして７サイクル目の先頭は２ｍ＋１０番地と２ｎ番地のデータで演算を行う。７サイクル目以降はモード１の状態であり、各マルチプレクサの選択はスタート時と同様であるので、このようにして以降の演算を継続することができる。
【００５５】
図６は、図５の６サイクル目から７サイクル目に移るときにメモリ２のアドレスポインタ更新を停止するための具体的な回路構成を示す。同図において、図１と同じ構成要素には同じ符号を付けている。１８はメモリ２のアドレスポインタをインクリメントして更新する加算器であり、この加算器１８に信号ａを入力してインクリメント動作を一時的に停止することによりアドレスポインタ更新の停止を実行する。１５は巡回アドレスの最終番地の最下位ビットの値を保持し、この値を信号ｓ１５として出力するレジスタ、１６はレジスタ１３の巡回アドレスが最終番地になったときに一致信号ｓ１６を出力する比較器、２０（２０ａ、２０ｂ、２０ｃ）は現在のモード状態を図２に示したコードで保持しているレジスタである。例えば、モード２の場合には、図２に示すようにコードは「０１０」であるので、レジスタ２０ａに「０」、レジスタ２０ｂに「１」、レジスタ２０ｃに「０」がそれぞれ保持される。３９は、レジスタ２０ａ〜２０ｃの値を入力とするアンド回路であり、２０ａの反転値、２０ｂの値、２０ｃの反転値を入力としている。３８は、アンド回路３９の出力値と、比較器１６の一致信号ｓ１６と、レジスタ１５の出力信号ｓ１５の反転値を入力とするアンド回路である。
【００５６】
以上のような構成の回路のうち、レジスタ２０とアンド回路３８および３９については、図１における制御手段１１の中に設けられている。以下、この回路の動作を説明する。図５における６サイクル目の前半では、モード２の状態であるので、レジスタ２０ａ、２０ｂ、２０ｃの中に順に「０１０」が保持されている。従って、アンド回路３９は論理値「１」を出力する。また、この６サイクル目の前半では、アドレスポインタは巡回アドレスの最終番地２ｎ＋４を示しているので、比較器１６は一致信号ｓ１６を論理値「１」として出力する。さらにレジスタ１５に保持されている最終番地２ｎ＋４は偶数であるので最下位ビットは必ず「０」であり、信号ｓ１５は「０」となる。このため、アンド回路３８は論理値「１」の信号を信号ａとして加算器１８に入力する。信号ａが論理値「１」になっている期間では加算器１８はインクリメント動作を停止する。次のサイクル（７サイクル目）になるとき、加算器１８は動作を停止しているので図１におけるレジスタ１２はアドレスポインタを更新しない。一方、図１のレジスタ１３のアドレス値は加算器１７によって更新される。レジスタ１３のアドレスが更新すると、巡回アドレスの先頭番地２ｎになるので比較器１６は一致信号の出力を停止し、ｓ１６は「０」になる。このため、アンド回路３８の出力信号ａは論理値「０」を出力するので、加算器１８の動作停止が解除され、次のサイクルから再びインクリメント動作を開始する。このように、モード２の状態でアドレスポインタが巡回アドレスの偶数の最終番地を示すと、次のアドレスポインタ更新を１サイクルだけ停止することができる。これにより、図５に示すように７サイクル目の前半で２ｍ＋１０番地と２ｎ番地のデータを演算することができ、それ以降も正常な演算を行うことができる。
【００５７】
【発明の効果】
以上のように、本発明によれば倍速読み出しのデータ処理装置に対して巡回アドレスを用いた場合でも、演算対象のデータが遅れて演算器に入力することがなく、常に正確な演算を行うことができるので、データ処理を効率よく実行することができる。
【図面の簡単な説明】
【図１】本発明の実施例におけるデータ処理装置の構成図
【図２】同実施例における各モードの説明図
【図３】同実施例におけるモード切り換え回路の構成図
【図４】同実施例におけるマルチプレクサ制御回路の構成図
【図５】同実施例におけるデータ処理装置の動作タイミング図
【図６】同実施例におけるアドレスポインタ更新の停止回路の構成図
【図７】従来のデータ処理装置の構成図
【図８】従来のデータ処理装置の動作タイミング図
【図９】従来のデータ処理装置の動作タイミング図
【図１０】従来のデータ処理装置の動作タイミング図
【符号の説明】
１  データ処理部
２、３  メモリ
４〜６  マルチプレクサ
７〜９  ラッチ回路
１０  演算器
１１  制御手段
１２〜１５  レジスタ
１６  比較器
１７、１８  加算器
２０  レジスタ
２１、２４、２８、３３  オア回路
２２、２３、２５〜２７、２９〜３２、３４、３５  アンド回路
Ｍ１、Ｍ２、Ｍ３  アンド回路
３６、３７  アンド回路
３８、３９  アンド回路
１０１、１０２  メモリ
１０３〜１０５  マルチプレクサ
１０６〜１０８  ラッチ回路
１０９  演算器
【図１】
0003541498.tif 000002
【図２】
0003541498.tif 000003
【図３】
0003541498.tif 000004
【図４】
0003541498.tif 000005
【図５】
0003541498.tif 000006
【図６】
0003541498.tif 000007
【図７】
0003541498.tif 000008
【図８】
0003541498.tif 000009
【図９】
0003541498.tif 000010
【図１０】
0003541498.tif 000011