トップ :: G 物理学 :: G06 計算;計数




【発明の名称】 アドレス生成回路
【発明者】 【氏名】中川 智水

【要約】 【課題】モジュロアドレッシングを用いたアドレス生成回路において、アドレス指定の柔軟性を向上させ、適切なアドレス生成を行わせる。

【解決手段】モジュロアドレッシングによりサーキュラバッファを用いてディスプレースメント修飾間接アドレス生成を実行するものにおいて、ディスプレースメントの値displacementとレジスタの値regの和をサーキュラバッファの先頭アドレスMOD_Sおよび最終アドレスMOD_Eと比較することによってモジュロアドレッシングを行う。
【特許請求の範囲】
【請求項1】 モジュロアドレッシングによりサーキュラバッファを用いてディスプレースメント修飾間接アドレス生成を実行するものにおいて、ディスプレースメントの値とレジスタの値の和をサーキュラバッファの先頭アドレスおよび最終アドレスと比較することによってモジュロアドレッシングを行うことを特徴とするアドレス生成回路。
【請求項2】 ディスプレースメントの値とレジスタの値を加算するための第1の加算器と、前記第1の加算器の出力とサーキュラバッファの先頭アドレスを比較する第1の比較器と、前記第1の加算器の出力とサーキュラバッファの最終アドレスを比較する第2の比較器と、前記第1の比較器の出力と制御部からの制御信号の論理積を出力する第1のANDゲートと、前記第2の比較器の出力と制御部からの制御信号の論理積を出力する第2のANDゲートと、サーキュラバッファサイズより1を引いたものに対して各ビットの0と1とを反転させるNOTゲートと、前記第1のANDゲートの出力とサーキュラバッファサイズより1を引いた値の各ビットそれぞれとの論理積をとって出力する第3のANDゲートと、前記第2のANDゲートの出力と前記NOTゲートの出力の各ビットそれぞれとの論理積をとって出力する第4のANDゲートと、前記第3のANDゲートの出力の各ビットと前記第4のANDゲートの出力の各ビットそれぞれの論理和を出力するORゲートと、前記第1のANDゲートの出力をキャリーイン入力として受け前記ORゲートの出力と前記第1の加算器の出力を加算するための第2の加算器を備え、前記第2の加算器は、前記第1のANDゲートからの入力キャリーインが0のとき、前記ORゲートの出力と前記第1の加算器の出力を加算した値を出力し、前記第1のANDゲートからの入力キャリーインが1のとき、前記ORゲートの出力と前記第1の加算器の出力と1を加算した値を出力して、アドレス生成を行うことを特徴とする請求項1に記載のアドレス生成回路。
【請求項3】 モジュロアドレッシングにより生成されたアドレスが、サーキュラバッファ内のアドレスであるかどうかを判定する判定手段を設けたことを特徴とする請求項1または請求項2に記載のアドレス生成回路。
【請求項4】 前記判定手段を、生成されたアドレスとサーキュラバッファの先頭アドレスを比較する第3の比較器と、生成されたアドレスとサーキュラバッファの最終アドレスを比較する第4の比較器と、前記第3および第4の比較器における出力の論理和を出力するORゲートとにより構成したことを特徴とする請求項3に記載のアドレス生成回路。
【発明の詳細な説明】【0001】
【発明の属する技術分野】この発明は、モジュロアドレッシングによりアドレスを生成するデータ処理装置のアドレス生成回路に関するものである。
【0002】
【従来の技術】マイクロプロセッサやDSP(デジタルシグナルプロセッサ)でのアドレス指定手法にはいくつかの種類があるが、あるレジスタの値とある定数(ディスプレースメント)とを足し合わせた値をアドレスとする手法を、ディスプレースメント修飾間接アドレス指定という。ここで、モジュロアドレッシングとは、指定した範囲でアドレスが循環するようにアドレッシングを行うことを特徴とするものである。
【0003】従来、ディスプレースメント修飾間接アドレス指定においてモジュロアドレッシングを行うとき、レジスタの値がサーキュラバッファ内部を指し、そこからの変位をディスプレースメントで表すことを前提に設計されていた。
【0004】プログラムによってはディスプレースメントをサーキュラバッファ内のあるラベル(固定のアドレス)とし、レジスタの値で変位を表すように記述することも考えられるが、従来の設計ではその記述でのモジュロアドレッシングには対応していなかった。たとえば、2つのFIRフィルタの音声データバッファをサーキュラバッファで構成する場合、独立したサーキュラバッファとすることもできるが、この2つのフィルタバッファへのアクセス頻度が同じである場合には、この2つのバッファを連結した1個のサーキュラバッファで実現することができる。
【0005】一般にアクセス頻度が同じで、バッファポインタの更新の変位が同じである場合、1個のサーキュラバッファにまとめることができる。これによって、サーキュラバッファの開始アドレスと終了アドレスを変更する処理の頻度が下げられる。このとき、それぞれのバッファの初期状態での先頭アドレスをディスプレースメントし、レジスタの値で変位を表すこととするようなアドレスの指定手法が考えられる。ここで、モジュロアドレッシングが可能であると、その変位を表すレジスタの値はまとめられたそれぞれのバッファで等しくなって、バッファごとにレジスタの値を保持する必要がなくなり、また、そのレジスタの値の更新も一度で行える。
【0006】モジュロアドレッシングを用いたアドレス生成回路に関する先行技術としては、特開平7−168753号公報があるが、この先行技術では、偏位値(ディスプレースメント)の正負によってアドレスと比較する値を、サーキュラバッファの小さい方の端の値か大きい方の端の値か選択するものである。
【0007】
【発明が解決しようとする課題】この発明は、このような従来の技術を改良し、モジュロアドレッシングを用いたアドレス生成回路において、アドレス指定の柔軟性を向上させ、適切なアドレッシングを行わせようとするものである。
【0008】
【課題を解決するための手段】第1の発明に係るアドレス生成回路では、モジュロアドレッシングによりサーキュラバッファを用いてディスプレースメント修飾間接アドレス生成を実行するものにおいて、ディスプレースメントの値とレジスタの値の和をサーキュラバッファの先頭アドレスおよび最終アドレスと比較することによってモジュロアドレッシングを行うものである。
【0009】第2の発明に係るアドレス生成回路では、ディスプレースメントの値とレジスタの値を加算するための第1の加算器と、前記第1の加算器の出力とサーキュラバッファの先頭アドレスを比較する第1の比較器と、前記第1の加算器の出力とサーキュラバッファの最終アドレスを比較する第2の比較器と、前記第1の比較器の出力と制御部からの制御信号の論理積を出力する第1のANDゲートと、前記第2の比較器の出力と制御部からの制御信号の論理積を出力する第2のANDゲートと、サーキュラバッファサイズより1を引いたものに対して各ビットの0と1とを反転させるNOTゲートと、前記第1のANDゲートの出力とサーキュラバッファサイズより1を引いた値の各ビットそれぞれとの論理積をとって出力する第3のANDゲートと、前記第2のANDゲートの出力と前記NOTゲートの出力の各ビットそれぞれとの論理積をとって出力する第4のANDゲートと、前記第3のANDゲートの出力の各ビットと前記第4のANDゲートの出力の各ビットそれぞれの論理和を出力するORゲートと、前記第1のANDゲートの出力をキャリーイン入力として受け前記ORゲートの出力と前記第1の加算器の出力を加算するための第2の加算器を備え、前記第2の加算器は、前記第1のANDゲートからの入力キャリーインが0のとき、前記ORゲートの出力と前記第1の加算器の出力を加算した値を出力し、前記第1のANDゲートからの入力キャリーインが1のとき、前記ORゲートの出力と前記第1の加算器の出力と1を加算した値を出力して、アドレス生成を行うものである。
【0010】第3の発明に係るアドレス生成回路では、モジュロアドレッシングにより生成されたアドレスが、サーキュラバッファ内のアドレスであるかどうかを判定する判定手段を設けたものである。
【0011】第4の発明に係るアドレス生成回路では、前記判定手段を、生成されたアドレスとサーキュラバッファの先頭アドレスを比較する第3の比較器と、生成されたアドレスとサーキュラバッファの最終アドレスを比較する第4の比較器と、前記第3および第4の比較器における出力の論理和を出力するORゲートとにより構成したものである。
【0012】
【発明の実施の形態】実施の形態1.この発明による実施の形態1を、図1ないし図3について説明する。図1は、実施の形態1における構成を示すブロック図である。図2は、実施の形態1においてサーキュラバッファの先頭アドレスと最終アドレスをその大きさに従って並べ替える回路を示したブロック図である。図3は、実施の形態1においてサーキュラバッファの先頭アドレスと最終アドレスからサーキュラバッファのサイズより1小さな値を求める回路を示したブロック図である。
【0013】図1において、5はディスプレースメントの値displacementとレジスタの値regを加算するための加算器である。この加算器5は入力IN1の値と入力IN2の値を加算した値を出力OUTから出力する。6は加算器5の出力とサーキュラバッファの先頭アドレスMOD_Sを比較する比較器である。7は加算器5の出力とサーキュラバッファの最終アドレスMOD_Eを比較する比較器である。これらの比較器は入力IN1とIN2についてIN1の方が小さければ出力OUTから1を出力し、そうでない場合は0を出力する。
【0014】8は比較器6の出力とプロセッサの制御部からの制御信号controlの論理積を出力するANDゲート、9は比較器7の出力と制御部からの制御信号controlの論理積を出力するANDゲートである。10はサーキュラバッファサイズSIZEから1を引いたものに対して各ビットの0と1を反転させるNOTゲートである。11はANDゲート8の出力とSIZE−1の値の各ビットそれぞれとの論理積をとって出力するANDゲートである。12はANDゲート9の出力とNOTゲート10の出力の各ビットそれぞれとの論理積をとって出力するANDゲートである。13はANDゲート11の出力の各ビットとANDゲート12の出力の各ビットそれぞれの論理和を出力するORゲートである。
【0015】14はORゲート13の出力と加算器5の出力を加算するための加算器である。この加算器は入力Carry_inの値が0のとき、入力IN1の値と入力IN2の値を加算した値を出力OUTから出力する。また入力Carry_inの値が1のとき、入力IN1の値と入力IN2の値と1を加算した値を出力OUTから出力する。
【0016】制御部からの信号controlは、モジュロアドレッシングを行うときには1、そうでない場合は0となるものである。この制御信号は、この間接アドレスを生成させる命令コードのデコード時に生成されてもよいし、別の命令コードであらかじめ生成されていてもよい。
【0017】ここで、サーキュラバッファの先頭アドレスは最終アドレスよりも小さいものとする。サーキュラバッファの先頭アドレスを最終アドレスよりも大きく指定することが許されている場合は、図2に示すような構成の回路によって先頭アドレスが最終アドレスよりも小さくなるようにすることができる。
【0018】図2において、1は指定された先頭アドレスMOD_S0と指定された最終アドレスMOD_E0を比較する比較器である。この比較器1は、入力IN1とIN2についてIN1の方が小さければ出力OUTから1を出力し、そうでない場合は0を出力する。2,3は比較器1の出力によってMOD_S0とMOD_E0のいずれかを出力するマルチプレクサである。このマルチプレクサ2,3は、入力controlの値が1のとき、入力IN1の値を出力OUTに出力する。入力controlの値が0のとき、入力IN2の値を出力OUTに出力する。
【0019】また、サーキュラバッファサイズより1小さい値は、あらかじめ与えられてもよいし、図3に示すような構成の回路によって生成されてもよい。図3において、4はMOD_Eの値からMOD_Sの値を引く減算器である。この減算器4は、入力IN1の値から入力IN2の値を減算した値を出力OUTから出力する。
【0020】図1に示す構成図における動作は、以下の通りである。制御信号controlが0である場合、または、MOD_S≦displacement+reg≦MOD_Eである場合には、ANDゲート8,9の出力が0となり、加算器14の入力Carry_inとIN1が0となるので、最終出力としての生成されたアドレスnew_addressは、displacement+regの値となる。
【0021】また、制御信号controlが1で、かつ、displacement+reg<MOD_Sである場合には、加算器14の入力Carry_inが1、IN1がSIZE−1となるので、最終出力new_address=displacement+reg+SIZEとなる。
【0022】また、制御信号controlが1で、かつ、displacement+reg>MOD_Eである場合には、加算器14の入力Carry_inが0、IN1が−SIZEとなるので、最終出力new_address=displacement+reg−SIZEとなる。ここで、比較器6,7の出力は同時に1とはなり得ない。従って、controlが1であるときにモジュロアドレッシングの動作を行うことができる。
【0023】先に述べた従来の技術において先行技術として説明した特開平7−168753号公報のものは、前述のように、偏位値(ディスプレースメント)の正負によってアドレス比較する値を、サーキュラバッファの小さい方の端か大きい方の端か選択している。この発明では、常にサーキュラバッファの先頭アドレスおよび最終アドレスの両方の値と比較して、サーキュラバッファ内のアドレスであるかどうかを調べている。これにより、この発明によれば、アドレス指定の柔軟性が向上し、より適切なアドレス生成を行うことができる。この発明のものと、前述した先行技術ものとは、明確に相違するものである。例えば、0X0000〜0XFFFFのアドレス空間で、0X0100〜0X01FFがサーキュラバッファである場合(サーキュラバッファサイズ:0X100)、ディスプレースメントの値displacement=0X0120,レジスタの値reg=0XFFC0とすると、この発明によれば、displacement+reg=0X(1)00E0となり、モジュロアドレッシングにより0X01E0が生成される。これに対し、前述した先行技術ものでは、displacementは正なので、0X00E0と0X01FFとの比較が行われ、0X01E0は生成されない。
【0024】この発明による実施の形態1によれば、モジュロアドレッシングによりサーキュラバッファを用いてディスプレースメント修飾間接アドレス生成を実行するものにおいて、ディスプレースメントの値displacementとレジスタの値regの和をサーキュラバッファの先頭アドレスMOD_Sおよび最終アドレスMOD_Eと比較することによってモジュロアドレッシングを行うものであって、ディスプレースメントの値displacementとレジスタの値regを加算するための第1の加算器5と、前記第1の加算器5の出力とサーキュラバッファの先頭アドレスMOD_Sを比較する第1の比較器6と、前記第1の加算器5の出力とサーキュラバッファの最終アドレスMOD_Eを比較する第2の比較器7と、前記第1の比較器6の出力と制御部からの制御信号controlの論理積を出力する第1のANDゲート8と、前記第2の比較器7の出力と制御部からの制御信号controlの論理積を出力する第2のANDゲート9と、サーキュラバッファサイズより1を引いたものに対して各ビットの0と1とを反転させるNOTゲート10と、前記第1のANDゲート8の出力とサーキュラバッファサイズより1を引いた値の各ビットそれぞれとの論理積をとって出力する第3のANDゲート11と、前記第2のANDゲート9の出力と前記NOTゲート11の出力の各ビットそれぞれとの論理積をとって出力する第4のANDゲート12と、前記第3のANDゲートの出力の各ビット11と前記第4のANDゲート12の出力の各ビットそれぞれの論理和を出力するORゲート13と、前記第1のANDゲート8からの入力をキャリーインとして受け前記ORゲート13の出力と前記第1の加算器5の出力を加算するための第2の加算器14を備え、前記第2の加算器14は、前記第1のANDゲート8からの入力キャリーインが0のとき、前記ORゲート13の出力と前記第1の加算器5の出力を加算した値を出力し、前記第1のANDゲート8からの入力キャリーインが1のとき、前記ORゲート13の出力と前記第1の加算器5の出力と1を加算した値new_addressを出力して、アドレス生成を行うようにしたので、モジュロアドレッシングを用いたアドレス生成回路において、アドレス指定の柔軟性を向上させ、適切なアドレス生成を行わせことができる。
【0025】実施の形態2.この発明による実施の形態2を、図4について説明する。図4は、実施の形態2におけるアドレスnew_addressの値がサーキュラバッファのアドレスとなっているかどうかを調べるための回路構成を示すブロック図である。
【0026】図1の構成において、ディスプレースメントの値displacementあるいはレジスタの値regが正しくセットされない場合、controlが1であっても、生成されたnew_addressがMOD_SとMOD_Eの間とならない場合がある。
【0027】図4は生成されたアドレスnew_addressの値がサーキュラバッファのアドレスとなっているかどうかを調べる回路の一実施形態である。図4において、15はnew_addressとサーキュラバッファの先頭アドレスMOD_Sを比較する比較器である。16はnew_addressとサーキュラバッファの最終アドレスMOD_Eを比較する比較器である。これらの比較器は入力IN1とIN2についてIN1の方が小さければ出力OUTから1を出力し、そうでない場合は0を出力する。17は比較器15および16の出力の論理和を出力するORゲートである。
【0028】この構成によれば、new_address<MOD_Sあるいはnew_address>MOD_Eとなった場合には最終出力errorが1となりアドレスの異常を検知することができる。この最終出力errorは制御部からの制御信号controlとの論理積をとって出力されてもよい。
【0029】この発明による実施の形態2によれば、モジュロアドレッシングにより生成されたアドレスが、サーキュラバッファ内のアドレスであるかどうかを判定する判定手段を設け、前記判定手段を、生成されたアドレスとサーキュラバッファの先頭アドレスを比較する第3の比較器15と、生成されたアドレスとサーキュラバッファの最終アドレスを比較する第4の比較器16と、前記第3および第4の比較器15,16における出力の論理和を出力するORゲート17とにより構成したので、モジュロアドレッシングを用いたアドレス生成回路において、アドレス指定の柔軟性を向上させ、適切なアドレス生成を行わせることができるとともに、アドレスの異常を簡潔な構成で的確に防止できる効果がある。
【0030】
【発明の効果】第1の発明によれば、モジュロアドレッシングによりサーキュラバッファを用いてディスプレースメント修飾間接アドレス生成を実行するものにおいて、ディスプレースメントの値とレジスタの値の和をサーキュラバッファの先頭アドレスおよび最終アドレスと比較することによってモジュロアドレッシングを行うようにしたので、モジュロアドレッシングを用いたアドレス生成回路において、アドレス指定の柔軟性を向上させ、適切なアドレス生成を行わせることができる。
【0031】第2の発明によれば、ディスプレースメントの値とレジスタの値を加算するための第1の加算器と、前記第1の加算器の出力とサーキュラバッファの先頭アドレスを比較する第1の比較器と、前記第1の加算器の出力とサーキュラバッファの最終アドレスを比較する第2の比較器と、前記第1の比較器の出力と制御部からの制御信号の論理積を出力する第1のANDゲートと、前記第2の比較器の出力と制御部からの制御信号の論理積を出力する第2のANDゲートと、サーキュラバッファサイズより1を引いたものに対して各ビットの0と1とを反転させるNOTゲートと、前記第1のANDゲートの出力とサーキュラバッファサイズより1を引いた値の各ビットそれぞれとの論理積をとって出力する第3のANDゲートと、前記第2のANDゲートの出力と前記NOTゲートの出力の各ビットそれぞれとの論理積をとって出力する第4のANDゲートと、前記第3のANDゲートの出力の各ビットと前記第4のANDゲートの出力の各ビットそれぞれの論理和を出力するORゲートと、前記第1のANDゲートの出力をキャリーイン入力として受け前記ORゲートの出力と前記第1の加算器の出力を加算するための第2の加算器を備え、前記第2の加算器は、前記第1のANDゲートからの入力キャリーインが0のとき、前記ORゲートの出力と前記第1の加算器の出力を加算した値を出力し、前記第1のANDゲートからの入力キャリーインが1のとき、前記ORゲートの出力と前記第1の加算器の出力と1を加算した値を出力して、アドレス生成を行うようにしたので、モジュロアドレッシングを用いたアドレス生成回路において、アドレス指定の柔軟性を向上させ、適切なアドレス生成を行わせることができる。
【0032】第3の発明によれば、モジュロアドレッシングにより生成されたアドレスが、サーキュラバッファ内のアドレスであるかどうかを判定する判定手段を設けたので、モジュロアドレッシングを用いたアドレス生成回路において、アドレス指定の柔軟性を向上させ、適切なアドレス生成を行わせることができるとともに、アドレスの異常を的確に防止できる効果がある。
【0033】第4の発明によれば、前記判定手段を、生成されたアドレスとサーキュラバッファの先頭アドレスを比較する第3の比較器と、生成されたアドレスとサーキュラバッファの最終アドレスを比較する第4の比較器と、前記第3および第4の比較器における出力の論理和を出力するORゲートとにより構成したので、モジュロアドレッシングを用いたアドレス生成回路において、アドレス指定の柔軟性を向上させ、適切なアドレス生成を行わせることができるとともに、アドレスの異常を簡潔な構成で的確に防止できる効果がある。
【出願人】 【識別番号】000006013
【氏名又は名称】三菱電機株式会社
【出願日】 平成12年6月23日(2000.6.23)
【代理人】 【識別番号】100088199
【弁理士】
【氏名又は名称】竹中 岑生
【公開番号】 特開2002−7114(P2002−7114A)
【公開日】 平成14年1月11日(2002.1.11)
【出願番号】 特願2000−188607(P2000−188607)