(57)【要約】【課題】  命令格納メモリの容量消費を抑え、処理時間の短い転送を実現すると共に、演算処理を行ったデータを転送することができるブロック転送命令実行装置を提供する。【解決手段】  命令ゲート回路１０と、カウンタ９と、ソースアドレス加算器６と、デスティネーションアドレス加算器７と、ブロック転送命令実行中は前記命令ゲート回路１０にゲーティング指令を出力し、カウンタ９が０になるまで、１個ずつデータ転送の実行を演算器５に指令し、１個のデータ転送を行うごとにカウンタ９の値を−１すると共に次のデータを指示できる値の加算指令をソースアドレス加算器６およびデスティネーションアドレス加算器７に出力するブロック転送制御回路８を備える。【選択図】図１
2008310719.tif 000002
【特許請求の範囲】
【請求項１】
実行する命令を保持し、該命令を逐次出力する命令格納メモリと、
前記命令を入力し、該命令の内容を示す演算コードと実行元を示すソースアドレスと実行先を示すデスティネーションアドレスを生成する制御回路と、
入力されるソースデータを加工しデスティネーションデータとして出力する演算器と、
前記ソースアドレスに対応したデータをソースデータとして出力すると共に、前記演算器から出力されたデスティネーションデータを前記デスティネーションアドレスに書込む演算レジスタとを有するブロック転送命令実行装置において、
ゲーティング指令により次の命令が前記制御回路に入力されることを防ぐ命令ゲート回路と、
指定された回数をカウントするカウンタと、
加算指令により前記ソースアドレスに数値を加算するソースアドレス加算器と、
加算指令により前記デスティネーションアドレスに数値を加算するデスティネーションアドレス加算器と、
前記演算コードがブロック転送命令であるとき、ブロック転送命令実行中は前記命令ゲート回路に前記ゲーティング指令を出力し、前記演算コード内の転送回数を前記カウンタにセットし、該カウンタが０になるまで、１個ずつデータ転送の実行を前記演算器に指令し、１個のデータ転送を実行するごとに前記カウンタの値を−１すると共に、次のデータを指示できる値の加算指令を前記ソースアドレス加算器および前記デスティネーションアドレス加算器に出力するブロック転送制御回路を備えることを特徴とするブロック転送命令実行装置。
【請求項２】
前記演算器は、前記演算コードに転送時演算が指定されているときは、転送するデータに指定された演算を加えることを特徴とする請求項１記載のブロック転送命令実行装置。
【請求項３】
前記デスティネーションアドレス加算器からの出力によりデータの書込み先のアドレスが選択される第１外部レジスタを更に備え、
前記デスティネーションデータの書込みを、前記デスティネーションアドレスの値により、前記演算レジスタに行うか、前記第１外部レジスタに行うかを選択することを特徴とする請求項１記載のブロック転送命令実行装置。
【請求項４】
前記ソースアドレス加算器からの出力により読込み先のアドレスが選択される第２外部レジスタと、
セレクタを更に備え、
前記演算器に入力されるソースデータを、前記セレクタに入力される前記ソースアドレスの値により、前記演算レジスタからの出力を使用するか、前記第２外部レジスタからの出力を使用するかを選択することを特徴とする請求項１記載のブロック転送命令実行装置。
【請求項５】
実行する命令を保持し、該命令を逐次出力する命令格納メモリと、
前記命令を入力し、該命令の内容を示す演算コードと実行元を示すソースアドレスと実行先を示すデスティネーションアドレスを生成する制御回路と、
入力されるソースデータを加工しデスティネーションデータとして出力する演算器と、
前記ソースアドレスに対応したデータをソースデータとして出力すると共に、前記演算器から出力されたデスティネーションデータを前記デスティネーションアドレスに書込む演算レジスタとを有するブロック転送命令実行装置のブロック転送方法において、
ブロック転送命令実行中は次の命令が前記制御回路に入力されることを防ぎ、
前記演算コード内の転送回数だけ１個ずつデータ転送を実行し、
１個のデータ転送を実行するごとに前記ソースアドレスおよびデスティネーションアドレスに次のデータを指示できる値を加算することを特徴とするブロック転送命令実行装置のブロック転送方法。
【請求項６】
前記演算器は、前記演算コードに転送時演算が指定されているときは、転送するデータに指定された演算を加えることを特徴とする請求項５記載のブロック転送命令実行装置のブロック転送方法。
【請求項７】
前記ブロック転送命令実行装置に前記デスティネーションアドレス加算器からの出力によりデータの書込み先のアドレスが選択される第１外部レジスタを更に備え、
前記デスティネーションデータの書込みを、前記デスティネーションアドレスの値により、前記演算レジスタに行うか、前記第１外部レジスタに行うかを選択することを特徴とする請求項５記載のブロック転送命令実行装置のブロック転送方法。
【請求項８】
前記ソースアドレス加算器からの出力により読込み先のアドレスが選択される第２外部レジスタと、
セレクタを更に備え、
前記演算器に入力されるソースデータを、前記セレクタに入力される前記ソースアドレスの値により、前記演算レジスタからの出力を使用するか、前記第２外部レジスタからの出力を使用するかを選択することを特徴とする請求項４記載のブロック転送命令実行装置のブロック転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、まとまったデータをソースアドレスで示される領域からデスティネーションアドレスで示される領域に転送するブロック転送命令実行装置およびブロック転送方法に関する。  
【背景技術】
【０００２】
従来のブロック転送命令実行装置は、単一の転送命令を繰り返し実行することでブロック転送を実現しているものがある（例えば、非特許文献１参照）。
また、ブロック転送専用のハードウエアを持ち、ブロック転送を実行しているものもある（例えば、特許文献１参照）。
最初に単一の転送命令を繰り返し実行する場合を説明する。
図５は従来の命令実行装置の構成を示すブロック図である。図５において、５１は命令実行装置である。５２は命令格納メモリであり、実行する命令を保持し、実行命令を逐次出力する。５３は制御回路であり、実行命令の内容によって演算命令の内容を示す演算コード、命令の実行元（転送命令では転送元）のアドレスを示すソースアドレス、実行先（転送命令では転送先）のアドレスを示すデスティネーションアドレスを生成する。５５は演算器であり、演算コードに従って、入力されるソースデータの値を加工し、デスティネーションデータとして出力する。５４は演算レジスタであり、ソースアドレスに対応したデータをソースデータとして出力する。また、演算器５５から出力されたデスティネーションデータをデスティネーションアドレスに書込む。従来の命令実行装置５１でまとめて複数のデータ転送、すなわちブロック転送を行う際は、単一の転送命令を所望の回数繰り返すことで実現する。この場合、単一の転送命令の代わりに、演算を用いることで転送元の値に何らかの加工を加えて転送先に格納することができる。
次にブロック転送専用のハードウエアを持つ場合を説明する。
図６は従来のブロック転送装置の構成を示すブロック図である。図６において、６１はブロック転送装置である。６２はＲＡＭであり、６６データアドレスバスを介してデータの書込みおよび読出しを行う。６３はＣＰＵであり、演算の実行を行う。６４はＲＯＭであり演算内容の保持や固定データの保持を行う。ＲＯＭ６４からＲＡＭ６２への単一のデータ転送や、ＲＡＭ６２内でのあるアドレスから別のアドレスへの単一のデータ転送は、ＣＰＵ６３の命令として実行される。一方、複数のデータ転送をＣＰＵの動作に頼らずに短時間で行うには、、専用のハードウエアであるデータ転送装置６５がデータアドレスバス６６を制御し、例えばＲＯＭ６４からＲＡＭ６２へ複数のデータを転送する。
このように、従来のブロック転送命令実行装置は、単一の転送命令を繰り返すか、ＣＰＵを介さずに専用のデータ転送装置を使用して複数データの転送を行う。
【非特許文献１】ヘネシー＆パターソン著「コンピュータ・アーキテクチャ」日経ＢＰ社、１９９２年１２月２５日、ｐ．１９２、図５.１
【特許文献１】特開２００２−２４１５８号公報（第７頁、図４）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
従来のブロック転送命令実行装置では、単一の転送命令を複数回行うことでブロック転送を実現する場合は、転送回数分の命令を命令格納メモリに格納するか、転送回数のカウントの命令と転送回数に達したことを判断する命令の追加等が必要なため、命令格納メモリの容量を使ってしまうという問題があった。また、転送回数のカウントの命令実行時間と転送回数に達したことを判断する命令の実行時間および繰り返しのためのジャンプ命令が必要なため、転送の実行時間も長くなってしまうという問題があった。
一方、ブロック転送専用のハードウエアを持つ場合はデータバスを経由するだけとなるので、転送だけであれば問題無いものの、ソースデータに対して演算を行った結果を転送することは出来ないという問題があった。
本発明はこのような問題点に鑑みてなされたものであり、命令格納メモリの容量消費を抑え、処理時間の短い転送を実現すると共に、演算処理を行ったデータを転送することができるブロック転送命令実行装置を提供することを目的とする。
【課題を解決するための手段】
【０００４】
上記問題を解決するため、本発明は、次のように構成したのである。
請求項１に記載の発明は、実行する命令を保持し、該命令を逐次出力する命令格納メモリと、前記命令を入力し、該命令の内容を示す演算コードと実行元を示すソースアドレスと実行先を示すデスティネーションアドレスを生成する制御回路と、入力されるソースデータを加工しデスティネーションデータとして出力する演算器と、前記ソースアドレスに対応したデータをソースデータとして出力すると共に、前記演算器から出力されたデスティネーションデータを前記デスティネーションアドレスに書込む演算レジスタとを有するブロック転送命令実行装置において、ゲーティング指令により次の命令が前記制御回路に入力されることを防ぐ命令ゲート回路と、指定された回数をカウントするカウンタと、加算指令により前記ソースアドレスに数値を加算するソースアドレス加算器と、加算指令により前記デスティネーションアドレスに数値を加算するデスティネーションアドレス加算器と、前記演算コードがブロック転送命令であるとき、ブロック転送命令実行中は前記命令ゲート回路に前記ゲーティング指令を出力し、前記演算コード内の転送回数を前記カウンタにセットし、該カウンタが０になるまで、１個ずつデータ転送の実行を前記演算器に指令し、１個のデータ転送を実行するごとに前記カウンタの値を−１すると共に、次のデータを指示できる値の加算指令を前記ソースアドレス加算器および前記デスティネーションアドレス加算器に出力するブロック転送制御回路を備えることを特徴とするものである。
また、請求項２に記載の発明は、請求項１に記載のブロック転送命令実行装置において、前記演算器は、前記演算コードに転送時演算が指定されているときは、転送するデータに指定された演算を加えることを特徴とするものである。
また、請求項３に記載の発明は、請求項１に記載のブロック転送命令実行装置において、  前記デスティネーションアドレス加算器からの出力によりデータの書込み先のアドレスが選択される第１外部レジスタを更に備え、前記デスティネーションデータの書込みを、前記デスティネーションアドレスの値により、前記演算レジスタに行うか、前記第１外部レジスタに行うかを選択することを特徴とするものである。
また、請求項４に記載の発明は、請求項１に記載のブロック転送命令実行装置において、前記ソースアドレス加算器からの出力により読込み先のアドレスが選択される第２外部レジスタと、セレクタを更に備え、前記演算器に入力されるソースデータを、前記セレクタに入力される前記ソースアドレスの値により、前記演算レジスタからの出力を使用するか、前記第２外部レジスタからの出力を使用するかを選択することを特徴とするものである。
また、請求項５に記載の発明は、実行する命令を保持し、該命令を逐次出力する命令格納メモリと、前記命令を入力し、該命令の内容を示す演算コードと実行元を示すソースアドレスと実行先を示すデスティネーションアドレスを生成する制御回路と、入力されるソースデータを加工しデスティネーションデータとして出力する演算器と、前記ソースアドレスに対応したデータをソースデータとして出力すると共に、前記演算器から出力されたデスティネーションデータを前記デスティネーションアドレスに書込む演算レジスタとを有するブロック転送命令実行装置のブロック転送方法において、ブロック転送命令実行中は次の命令が前記制御回路に入力されることを防ぎ、前記演算コード内の転送回数だけ１個ずつデータ転送を実行し、１個のデータ転送を実行するごとに前記ソースアドレスおよびデスティネーションアドレスに次のデータを指示できる値を加算することを特徴とするものである。
また、請求項６に記載の発明は、請求項５に記載のブロック転送命令実行装置のブロック転送方法において、前記演算器は、前記演算コードに転送時演算が指定されているときは、転送するデータに指定された演算を加えることを特徴とするものである。
また、請求項７に記載の発明は、請求項５に記載のブロック転送命令実行装置のブロック転送方法において、前記ブロック転送命令実行装置に前記デスティネーションアドレス加算器からの出力によりデータの書込み先のアドレスが選択される第１外部レジスタを更に備え、前記デスティネーションデータの書込みを、前記デスティネーションアドレスの値により、前記演算レジスタに行うか、前記第１外部レジスタに行うかを選択することを特徴とするものである。
また、請求項８に記載の発明は、請求項５に記載のブロック転送命令実行装置のブロック転送方法において、前記ソースアドレス加算器からの出力により読込み先のアドレスが選択される第２外部レジスタと、セレクタを更に備え、前記演算器に入力されるソースデータを、前記セレクタに入力される前記ソースアドレスの値により、前記演算レジスタからの出力を使用するか、前記第２外部レジスタからの出力を使用するかを選択することを特徴とするものである。
【発明の効果】
【０００５】
請求項１、５に記載の発明によると、ブロック転送命令実行中は次の命令が制御回路に入力されることを防ぎ、演算コード内の転送回数だけ１個ずつデータ転送を実行し、１個のデータ転送を行うごとにソースアドレスおよびデスティネーションアドレスに次のデータを指示できる値を加算するので、単一の命令でブロック転送を行うことができ、命令格納メモリの容量消費を抑えることができる。また、転送回数の判断を命令で行うことや転送の繰り返しの為のジャンプ命令の実行を行う必要が無いので、短い時間でブロック転送を行うことができる。
また、請求項２、６に記載の発明によると、演算器は、演算コードに転送時演算が指定されているときは、転送するデータに指定された演算を加えるので、ブロック転送実行時に転送データに対する演算を実行することができる。
また、請求項３、４、７、８に記載の発明によると、デスティネーションデータの書込みを演算レジスタに行うか、第１外部レジスタに行うかを選択でき、また、演算器に入力されるソースデータを演算レジスタからの出力を使用するか第２外部レジスタからの出力を使用するかを選択できるので、ブロック転送命令実行装置からの外部信号の出力やブロック転送命令実行装置への外部信号の取り込みをブロック転送命令で直接取り扱うことができる。
【発明を実施するための最良の形態】
【０００６】
以下、本発明の実施の形態について図を参照して説明する。
【実施例１】
【０００７】
図１は、本発明のブロック転送命令実行装置の構成を示すブロック図である。図１において、１はブロック転送命令実行装置、２は命令格納メモリ、３は制御回路、４は演算レジスタ、５は演算器、６はソースアドレス加算器、７はデスティネーションアドレス加算器、８はブロック転送制御回路、９はカウンタ、１０は命令ゲート回路となっている。
命令格納メモリ２から読み出された命令は命令ゲート回路１０を通過して、命令ワードとして制御回路３に入力される。命令ゲート回路１０はブロック転送命令の実行中にブロック転送命令の次の命令が制御回路３に入力されることを防ぐと共に、ブロック転送命令が終了したときに、次の命令以降を継続して実行できるようにする。制御回路３は、命令ワードの内容を解釈して、命令の実行元のアドレスを示すソースアドレス、実行先のアドレスを示すデスティネーションアドレス、演算命令の内容を示す演算コードを出力する。
図２にブロック転送命令のフォーマット例を示す。ブロック転送フォーマットには、演算コードとして、ブロック転送命令コードと、転送時演算と、転送回数があり、また、ソースアドレスと、デスティネーションアドレスが含まれている。これらの情報は制御回路３で解釈され、ブロック転送を行う際の情報として使用される。ここで、転送時演算とは、転送時に加算や減算などの演算を行うことを示す。
【０００８】
図１の説明に戻ると、ソースアドレスは転送命令では転送元のアドレスであり、ソースアドレス加算器６を経由して演算レジスタ４に出力される。ブロック転送命令では、ソースアドレス加算器６は、ブロック転送制御回路８からの加算指令を受けて、ソースアドレスに加算指令を加算したアドレス値を演算レジスタ４に出力する。ブロック転送以外の命令では加算指令が出ないため、ソースアドレスの値がそのまま演算レジスタ４へ出力される。デスティネーションアドレスは転送命令では転送先のアドレスであり、デスティネーションアドレス加算器７を経由して演算レジスタ４に出力され、ソースアドレスが演算レジスタ４に出力されるまでの処理と同様に、加算指令があれば、デスティネーションアドレス加算器７が、デスティネーションアドレスに加算指令を加算した値を演算レジスタ４へ出力する。なお、ここで加算する数値はソースアドレス、デスティネーションアドレスが次のデータを指示できるような値となる。例えば、バイト単位の転送では“１”、ワード単位の転送では“２”というような値となる。
演算レジスタ４はソースアドレス加算器６からのアドレス入力に対応したデータをソースデータとして出力する。データ転送は、制御回路３から出力される演算コードにブロック転送命令コードが含まれていることを起点として転送動作を開始し、ブロック転送命令コードが出力され続けている間、データ転送を継続する。このとき、演算器５は、演算コードに含まれる転送時演算で指定された演算をソースデータに対して実行し、デスティネーションデータとして出力する。転送時演算が何もしない演算（ノーオペレーション）の場合は、ソースデータとデスティネーションデータは等しい値になる。演算レジスタ４は、デスティネーションデータをデスティネーションアドレス加算器７から出力されたアドレスに書込む。
ブロック転送制御回路８では、演算コードがブロック転送命令コードを含んでいた場合、演算コード内の転送回数の値をカウンタ９にセットし、命令ゲート回路１０に対して次の命令の読出しを抑える命令ゲート指令を出し、ブロック転送を開始する。ブロック転送制御回路８は1回の転送が行われるたびにカウンタ９にマイナスカウント指定を出す。また、ブロック転送制御回路８はカウンタ９の現在値が０になると転送終了と判断し、命令ゲート回路１０に対する命令ゲート指令を解除する。
本発明が従来技術と異なる部分は、命令ゲート回路１０とブロック転送制御回路８とカウンタ９とソースアドレス加算器６とデスティネーションアドレス加算器７を備えて、演算器５を経由した転送を行う部分である。
【０００９】
次に、ブロック転送命令実行時の処理手順を説明する。
図３はブロック転送命令実行時の処理手順を示すフローチャートである。ブロック転送命令の実行を開始すると、まず、ステップＳ１で、カウンタにブロック転送命令の転送回数の値をセットする。次にステップＳ２で、命令ゲート回路２で、転送終了まで以降の命令読出しを止めるように命令ゲーティングを開始する。続いてステップＳ３で、ブロック転送制御回路８は演算器５に対し演算実行指令を出力することにより、ソースアドレスのデータをデスティネーションアドレスに対して１個のデータ転送を実行する。このとき、ブロック転送命令の演算コードに転送時演算が指定されていれば、演算器にて指定された演算を実行した結果を転送先に送る。続いて、ステップＳ４で、カウンタ９の値を１減算する。ステップＳ５で、減算後のカウンタ値が０であるかどうかをチェックし、０であれば指定の転送回数の転送を実行し終わったとして、ステップＳ７に進み、命令ゲート回路１０での命令読出し停止の命令ゲーティングを解除し、次の命令実行に移行する。ステップＳ５で、減算後のカウンタ値９が０以外であれば、まだ指定の転送回数の転送を終えていないので、ステップＳ６に進み、加算指令を出力し、ソースアドレス、デスティネーションアドレスを１加算し、ステップＳ３の転送の実行からの動作を繰り返す。
【実施例２】
【００１０】
次に第２の実施例として、演算レジスタに代えて外部レジスタを使用する場合を説明する。
図４は本発明の第２実施例のブロック転送命令実行装置の構成を示すブロック図である。図４において、４１は第１外部レジスタ、４２は第２外部レジスタ、４３はセレクタである。実施例１で示した動作と共通の動作に関しては説明を省略する。
第１外部レジスタ４１は出力専用レジスタの例であり、書込まれたデスティネーションデータをデスティネーションアドレスに対応した外部出力信号として、ブロック転送命令実行装置の外部に出力する。第２外部レジスタ４２は入力専用レジスタの例であり、ブロック転送命令実行装置の外部から入力される外部入力信号を、ソースアドレスに対応してセレクタ４３に対して出力する。
ソースデータとしては、演算レジスタ４からのデータのほかに、第２外部レジスタ４２からのデータをセレクタ４３で切り替えて使用できる。またデスティネーションデータの書込み先も演算レジスタ４の代わりに第１外部レジスタ４１を指定することができる。演算レジスタ４と第1外部レジスタ４１ならびに第２外部レジスタ４２の区別の方法は、例えばアドレスマップで別の領域として定義して使用する。ソースデータはセレクタ４３に入力されるソースアドレスの値によって演算レジスタ４の出力データか第２外部レジスタ４２の出力データかを選択される。デスティネーションデータはデスティネーションアドレスの値によって演算レジスタ４への書込みか第１外部レジスタへの書込みかを区別して、定義された領域に一致する場合のみ書込みが行われる。
第1外部レジスタ４１や第２外部レジスタ４２を用いることで、ブロック転送命令実行装置からの外部信号の出力やブロック転送命令実行装置への外部信号の取り込みをブロック転送命令で直接取り扱うことができるという効果がある。
このように、命令ゲート回路とブロック転送制御回路とカウンタとソースアドレス加算器とデスティネーションアドレス加算器を備えて、演算器を経由したブロック転送を行う構成をしているので、命令格納メモリの容量消費を抑えて高速に転送を行い、転送時のデータに演算を行うことができるのである。
【図面の簡単な説明】
【００１１】
【図１】本発明のブロック転送命令実行装置の構成を示すブロック図
【図２】ブロック転送命令のフォーマット例
【図３】ブロック転送命令実行時の処理手順を示す
【図４】本発明の第２実施例のブロック転送命令実行装置の構成を示すブロック図
【図５】従来の命令実行装置の構成を示すブロック図
【図６】従来のブロック転送装置の構成を示すブロック図
【符号の説明】
【００１２】
１  ブロック転送命令実行装置
２、５２  命令格納メモリ
３、５３  制御回路
４、５４  演算レジスタ
５、５５  演算器
６  ソースアドレス加算器
７  デスティネーションアドレス加算器
８  ブロック転送制御回路
９  カウンタ
１０  命令ゲート回路
４１  第１外部レジスタ
４２  第２外部レジスタ
４３  セレクタ
５１  命令実行装置
６１  ブロック転送装置
６２  ＲＡＭ
６３  ＣＰＵ
６４  ＲＯＭ
６５  データ転送装置
【図１】
2008310719.tif 000003
【図２】
2008310719.tif 000004
【図３】
2008310719.tif 000005
【図４】
2008310719.tif 000006
【図５】
2008310719.tif 000007
【図６】
2008310719.tif 000008