JP4142299B2 - Address generator for annular address buffer and integrated circuit having the same - Google Patents

Address generator for annular address buffer and integrated circuit having the same Download PDF

Info

Publication number
JP4142299B2
JP4142299B2 JP2002019152A JP2002019152A JP4142299B2 JP 4142299 B2 JP4142299 B2 JP 4142299B2 JP 2002019152 A JP2002019152 A JP 2002019152A JP 2002019152 A JP2002019152 A JP 2002019152A JP 4142299 B2 JP4142299 B2 JP 4142299B2
Authority
JP
Japan
Prior art keywords
address
adder
carry
control signal
output
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2002019152A
Other languages
Japanese (ja)
Other versions
JP2003223357A (en
Inventor
宏 基 鄒
Original Assignee
旺宏電子股▲ふん▼有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 旺宏電子股▲ふん▼有限公司 filed Critical 旺宏電子股▲ふん▼有限公司
Priority to JP2002019152A priority Critical patent/JP4142299B2/en
Publication of JP2003223357A publication Critical patent/JP2003223357A/en
Application granted granted Critical
Publication of JP4142299B2 publication Critical patent/JP4142299B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
本発明は、メモリアドレッシングに係り、特に、デジタル信号プロセッサなどのデジタル・システムで使用される円環状バッファのアドレッシングに関する。
【0002】
【従来の技術】
モジュロアドレッシングとも呼ばれるサーキュラアドレッシングは、デジタル信号処理および他のデータ処理アプリケーションでよく使用される。サーキュラアドレッシングが適用される円環状バッファにおいては、そのバッファに1つのアドレス範囲が割当てられる。円環状バッファのアドレスを生成する際に、オフセット値が現在アドレスを増分し、次のアドレスを生成する。現在アドレスとオフセット値の合計が割当てられたアドレス範囲外のアドレスを示す場合には、次のアドレスは円環状バッファの反対の境界にラップアラウンドする。
【0003】
従来技術では、円環状バッファのアドレスを生成する種々の提案がなされている。サーキュラアドレッシングを実行する通常の方法では、割当てられたアドレス範囲の上限および下限境界を設定する2つの明示パラメータを規定する。この方法では、ユーザは利用可能なメモリの無制限の位置にバッファを規定できる柔軟性を有する。しかし、この方法だと、境界を記憶するレジスタや、次のアドレスを計算する比較的複雑な論理が必要になる。アドレス生成は特定の設計のクリティカルパスにあるので、必要とされるパラメータの数を減らし、論理を単純化することが望ましい。
【0004】
円環状バッファのアドレス生成に関する別の提案がレスゲン(Roesgen)による発明の米国特許第4,800,524号に記載されている。レスゲン特許の提案においては、バッファは、単一のバッファ長パラメータおよび円環状バッファの現在アドレスによって規定される。円環状バッファの下限境界は、現在アドレスの低位のNビットをゼロに置換えることによって、現在アドレスおよびバッファから暗示される。ここで、Nは、バッファ長を2進法で表した時に先頭の(1番左)1があるビット位置である。円環状バッファの上限境界は、暗示下限境界プラスバッファ長として規定される。この方法は、上限および下限境界を設定する明示パラメータを必要とする方法より簡単に実行できる。しかし、利用可能な境界の組に制限があるため、メモリ使用状況が効率的でない。
【0005】
サーキュラアドレス生成に関する別の提案が、従来技術として、レーン(Lane)による発明の米国特許第4,202,035号、テーバー(Taber)による発明の米国特許第4,809,156号、キャザーウッド(Catherwood)らによる発明の米国特許第5,249,148号、およびシュリダール(Shridhar)らによる米国特許第5,381,360号に記載されている。
【0006】
【発明が解決しようとする課題】
サーキュラアドレッシングに頼るデジタル信号処理アプリケーションが複雑化するにつれて、柔軟性を改善し、上記アプリケーション用のアドレス生成器のコストを削減する必要性が増大してきている。
【0007】
【課題を解決するための手段】
本発明によれば、メモリに円環状アドレスバッファのアドレスを生成する装置が提供され、この装置においては、円環状バッファの上限境界が現在アドレスから暗示される。この提案を、単独で、そして暗示下限境界に頼る円環状バッファとの併用で適用すれば、メモリ使用状況、および集積回路や処理システムの円環状バッファ設計における柔軟性が改善できる。
【0008】
本発明によるアドレス生成器の1つの実施形態は、現在アドレスA、アドレスオフセットM、バッファ長L、および制御信号を受信する入力と、メモリ内の場所を示す第1のメモリアドレスおよび第2のメモリアドレスを、A、M、およびLに応じて計算するように構成された論理とを含む。第1および第2のメモリアドレスの1つが、制御信号に応じて提供される。前記第1のメモリアドレスが、アドレス境界Xを有し、Xから(X+L)までのアドレスを含む第1の円環状バッファの前記現在アドレスAと前記アドレスオフセットMの和と一致し、前記第2のメモリアドレスが、アドレス境界Yを有し、Yから(Y―L)までのアドレスを含む第2の円環状バッファの前記現在アドレスAと前記アドレスオフセットMの和と一致する。
【0009】
バッファ長Lは、2進数で表した時にビット位置Nに先頭の1を有する値である。暗示下限アドレス境界Xが前記現在アドレスAの低位のNビットを0で置換することによって計算される。暗示上限アドレス境界Yが前記現在アドレスAの低位のNビットを1で置換することによって計算される。
各種の実施形態において、前記入力はA、MおよびLを格納するレジスタを含む。制御信号も1つのレジスタに格納できるし、オフセット値Mなどの他のパラメータの1つと共有されるレジスタ内に格納することもできる。
【0010】
1つの実施形態では、アドレス生成器が使用する論理は、キャリーアウト信号によって和A+Mに等しい第1の出力を生成する第1の加算器と、前記Mの符号が正数である時に第1のラップアドレス和(A+M)−(L+1)に等しいか、または前記Mの符号が負数である時に第2のラップアドレス和(A+M)+(L+1)に等しい第2の出力を、キャリーアウト信号によって生成する第2の加算器とを含む。選択論理は、前記第1および第2の加算器からの前記キャリーアウト信号に応じて前記第1の出力または前記第2の出力を選択する。1つの好適な実施形態では、前記第1および第2の加算器は、暗示下限アドレス境界を有する円環状バッファと、暗示上限アドレス境界を有する円環状バッファとに使用される共有論理である。
【0011】
さらに別の実施形態では、Lがビット位置Nに先頭の1を有し、暗示下限アドレス境界Xが前記現在アドレスAの低位のNビットを0で置換することによって計算され、暗示上限アドレス境界Yが前記現在アドレスAの低位のNビットを1で置換することによって計算される。第1および第2の加算器は複数のビット位置に対してキャリーアウト信号を生成し、セレクタはLに反応して、この論理において使用される加算器にN番目のビット位置からのキャリーアウト信号を提供する。したがって、この実施形態では、選択論理は前記第1および第2の加算器のN番目のビット位置からの前記キャリーアウト信号に応じて、前記第1の出力または前記第2の出力を選択するように動作可能である。
【0012】
暗示下限アドレス境界および暗示上限アドレス境界の両方が使用される実施形態では、選択論理が、
前記制御信号が前記第1のメモリアドレスに対して設定され、前記アドレスオフセットが正数であり、前記第1の加算器からの前記キャリーアウトも前記第2の加算器からの前記キャリーアウトも1でない場合、または、
前記制御信号が前記第1のメモリアドレスに対して設定され、前記アドレスオフセットが負数であり、前記第1の加算器からの前記キャリーアウトが1である場合、または、
前記制御信号が前記第2のメモリアドレスに対して設定され、前記アドレスオフセットが正数であり、前記第1の加算器からの前記キャリーアウトが0である場合、または、
前記制御信号が前記第2のメモリアドレスに対して設定され、前記アドレスオフセットが負数であり、前記第1の加算器および前記第2の加算器の両方からの前記キャリーアウトが1である場合に、
前記第1の加算器の出力を選択し、
前記制御信号が前記第1のメモリアドレスに対して設定され、前記アドレスオフセットが正数であり、前記第1の加算器または前記第2の加算器の少なくとも1つからの前記キャリーアウトが1である場合、または、
前記制御信号が前記第1のメモリアドレスに対して設定され、前記アドレスオフセットが負数であり、前記第1の加算器からの前記キャリーアウトが0である場合、または、
前記制御信号が前記第2のメモリアドレスに対して設定され、前記アドレスオフセットが正数であり、前記第1の加算器からの前記キャリーアウトが1である場合、または、
前記制御信号が前記第2のメモリアドレスに対して設定され、前記アドレスオフセットが負数であり、前記第1の加算器または前記第2の加算器の少なくとも1つからの前記キャリーアウトが0である場合に、
前記第2の加算器の出力を選択するように構成される。
【0013】
暗示上限アドレス境界だけが使用される実施形態では、選択論理は、
前記アドレスオフセットが正数であり、前記第1の加算器からの前記キャリーアウトが0である場合、または、
前記アドレスオフセットが負数であり、前記第1の加算器および前記第2の加算器の両方からの前記キャリーアウトが1である場合に、前記第1の加算器の出力を選択し、
前記アドレスオフセットが正数であり、前記第1の加算器からの前記キャリーアウトが1である場合、または、
前記アドレスオフセットが負数であり、前記第1の加算器または前記第2の加算器の少なくとも1つからの前記キャリーアウトが0である場合に、前記第2の加算器の出力を選択するよう構成される。
【0014】
本発明は、プロセッサコアと、現在アドレスA、オフセット値Mおよびバッファ長Lを格納するレジスタファイルと、メモリと、前記メモリのアドレス生成器とを含む集積回路によっても具現化される。本発明による実施形態では、上述のように、アドレス生成器は、暗示上限アドレス境界だけを使用するか、または暗示上限アドレス境界と暗示下限アドレス境界との組合せを使用するように構成される。
本発明の別の態様および利点については、図を参照して以下で説明する。
【0015】
【発明の実施の形態】
図1から6について、本発明の実施形態を詳細に説明する。
図1は、本発明のアドレス生成器を備えた集積回路プロセッサの簡略図である。集積回路装置10は、プログラムメモリ11、データメモリ14、およびプロセッサコア12を含み、プロセッサコア12は、データメモリアドレスのための円環状アドレス生成器15、円環状バッファプログラムレジスタを含むレジスタファイル13、および、命令解読器、ALUなど他の論理素子を含む。本発明による円環状アドレス生成器15は、(L+1)の長さを有し、暗示上限境界あるいは結合暗示上下限境界に準拠可能な選択可能境界ベースを有する、データメモリ14のバッファを管理する。
【0016】
例えば、プロセッサ12はプログラムメモリ11からの命令を実行する。命令には直接アドレス命令および間接アドレス命令が含まれる。間接アドレス命令はレジスタファイル13の円環状バッファプログラムレジスタに依存する。1つの実施形態には、4組の円環状バッファプログラムレジスタがあり、それぞれが、現在アドレスAを格納する第1のレジスタ、オフセット値Mを格納する第2のレジスタ、およびバッファ長の値Lを格納する第3のレジスタを含む。上限および下限アドレス境界の両方をサポートするこの実施形態では、各アクセスにおいて、上限アドレス境界バッファと下限アドレス境界バッファのどちらが使用されているかを示す上限/下限制御信号が提供される。上限/下限制御信号を、サーキュラアドレッシングを使用する命令の一部として、または、オフセット値Mがレジスタの低次ビットのみを使用する値に限定される時には、オフセット値Mを格納するレジスタの高ビットとして独立に提供しても良い。
【0017】
例えば、命令“ldx1,ar2,m2”はプロセッサコア12の解読器に解釈され、レジスタファイルのレジスタx1にメモリデータがロードされる。このメモリデータは、1組の円環状バッファプログラムレジスタの現在アドレスAを格納しているレジスタar2が指定するアドレスから、この円環状バッファプログラムレジスタのレジスタm2に格納されているオフセット値Mに増分されて取出される。この円環状バッファプログラムレジスタのバッファ長の値Lを格納するレジスタl2は、プロセッサ12により事前に構成されるか、別の方法で構成される。1つの実施形態で、16ビットアドレスのバッファ長の値Lを16進法のffffに設定した場合には、対応する組の円環状バッファプログラムレジスタのレジスタを指定する間接アドレス命令に応じて、リニアアドレッシングが使用される。
【0018】
図2(a)から(c)は、それぞれ、暗示下限アドレス境界、暗示上限アドレス境界、および結合上下限アドレス境界を使用するサーキュラアドレッシングの実施形態を示す。図2(a)は従来技術による暗示下限アドレス境界アプローチであり、円環状バッファ1および2を備える。この例では、円環状バッファ1は長さL+1=10を有し、そのアロケーションは0a00(16進法)から0a09(16進法)である。円環状バッファ2の長さL+1を、ユーザが6にしたいと仮定しよう。0a0a(16進法)および0a0f(16進法)間のアドレスセットの長さは6に等しいが、このアドレスセットを円環状バッファ2に使用することはできない。なぜなら、このアドレスセットは、下限3が0である暗示下限境界を有するに違いないからである。したがって円環状バッファ2は0a10(16進法)および0a15(16進法)間に配置され、0a0a(16進法)および0a0f(16進法)間に未使用領域を残してしまう。
【0019】
図2(b)は、本発明の暗示上限アドレス境界アプローチを示す。円環状バッファ1および2が示れている。この場合には、上限アドレス境界が暗示される。したがって、円環状バッファ1は、長さL+1=10を有し、そのアロケーションは0a06(16進法)から0a0f(16進法)である。この例では、ユーザは長さL+1=6を有する円環状バッファ2を定義する。最もコンパクトで、バッファ1に最も近いアロケーションは、バッファ2を暗示上限境界ベースによって0a17(16進法)および0a12(16進法)間に配置する。これでも、まだ、バッファ1および2間に未使用領域が残ってしまう。
【0020】
図2(c)には、暗示下限アドレス境界を有する円環状バッファ1、および暗示上限アドレス境界を有する円環状バッファ2が示され、両者間に未使用領域のない構成である。この例では、円環状バッファ1は長さL+1=10を有する。0a00(16進法)および0a09(16進法)間の現在アドレスAに対して、円環状アドレス生成器は0a00(16進法)から0a09(16進法)の範囲内に次のアドレスを生成する。この例では、長さL+1=6の円環状バッファ2は暗示上限アドレス境界0a0f(16進法)を有する。この円環状バッファ2へのアクセスには0a0f(16進法)および0a0a(16進法)間の現在アドレスが使用され、円環状アドレス生成器は0a0f(16進法)および0a0a(16進法)の範囲内に次のアドレスを生成する。図からわかるように、これら2つの円環状バッファは、両者間に未使用領域が存在しないように構成できる。
【0021】
暗示下限境界を有するバッファおよび暗示上限アドレス境界を有するバッファのアドレス生成論理を、図3および4を参照して以下で説明する。
暗示下限境界を有するバッファを選択する場合、この暗示下限境界は現在アドレスAの低位のNビットに0を挿入することによって決定される。ここで、値Nは、バッファ長パラメータLの先頭の“1”があるビット位置である。この値Nは、式2^(N−1)<=L<2^Nによって表すこともできる。この方法に従えば、下限境界は2^Nの任意のマルチプルに設定できる。このバッファの下限境界は、左のAの高位のW−Nビットに右の低位のNビットに0を連結することによって指定される。ここで、Wはメモリに使用されるアドレスビットの数である。下限境界が決定されると、長さL+1のバッファの下限境界にLを加えることによって決定される。つまり、上限境界は左のAの高位のW−Nビットに右のLの低位のNビットを連結して指定される。
【0022】
例えば:W=16で、Lが0000 0000 0010 1011(2進数で16ビット)、このバッファに対する現在アドレスAが0011 1001 0101 1110であるケースを考える。Lの先頭の1がビット位置6にあるので、N=6である。暗示下限境界は0011 1001 0100 0000であり、暗示上限境界は0011 1001 0110 1011である。
【0023】
説明の簡略化のため、A、上限境界および下限境界から高位のW−Nビットを除外し、Aの低位のNビットを表すのにIを、下限境界を表すのに0を、そして上限境界を表すのにLを使用する。Mは、現在アドレスIと次の目的のアドレスとの間のオフセットである。Mは符号の付いた数であり、正数または負数である。
Mが正数の場合、円環状アドレス生成器が使用する論理に関して、次の3つの状態が考えられる。(1)I+M>=2^Nの場合、(2)I+M>=L+1の場合、および(3)I+M<L+1の場合である。
【0024】
Mが正数で、I+M>=2^Nである状態1の場合。絶対アドレス(I+M)が上限境界Lを上回る。次のアドレスを円環状バッファの低位領域にラップさせる必要がある。次の目的のアドレスIは、絶対アドレス(I+M)からバッファ長(L+1)を差し引くことにより計算できる。その式はI+M−(L+1)であり、2の補体系ではI+M+(L\)に変換される。
【0025】
Mが正数で、I+M>=L+1である状態2の場合。絶対アドレス(I+M)は、再び上限境界Lを上回る。次のアドレスをバッファの低位領域にラップさせる必要がある。次の目的のアドレスIは、絶対アドレスからバッファ長を差し引くことにより計算できる。その式は状態(1)の場合と同様、I+M−(L+1)であり、2の補体系ではI+M+(L\)となる。
【0026】
Mが正数で、I+M<L+1である状態3の場合。絶対アドレスI+Mが上限境界Lを上回らない。したがって、次の目的のアドレスIはI+Mに等しい。
ハードウェア実行の際、状態1(I+M>=2^N)はI+Mから生成されるキャリーアウトによって示され、状態2(I+M>=L+1)はI+M+(L\)から生成されるキャリーアウトによって示される。状態3はI+Mから生成されるキャリーアウトがない場合に示される。
【0027】
Mが負数の場合、円環状アドレス生成器が使用する論理に関して、次の2つの状態が考えられる。(1)I+M<0の場合、および(2)I+M>=0の場合である。
Mが負数で、I+M<0である状態1の場合。絶対アドレス(I+M)は円環状バッファの下限境界0を下回る負数である。次のアドレスを円環状バッファの高位領域にラップさせる必要がある。次の目的のアドレスIは、絶対アドレス(I+M)にバッファ長L+1を加えることにより計算できる。その式はI+M+L+1である。
【0028】
Mが負数で、I+M>=0である状態2の場合。絶対アドレス(I+M)は下限境界0を上回る。したがって、目的のアドレスIはI+Mに等しくなる。
ハードウェア実行の際、Mが負数の状態1(I+M<0)はI+Mから生成されるキャリーアウトがないことにより示される。Mが負数の状態2(I+M>=0)はI+Mから生成されるキャリーアウトによって示される。
【0029】
したがって、暗示下限アドレス境界円環状バッファのハードウェア実行は、図3に示すように論理的に実行される。図3の論理は、第1の加算器201および第2の加算器202を含む。第1の加算器201への入力には、値IおよびMがある。この中で絶対アドレスと呼ばれる第1の加算器201の出力が、ライン207に供給され、I+Mに等しい。加算器201からのキャリーアウト信号がライン206に供給される。第2の加算器202への入力には、排他的NORゲート203の出力および第1の加算器201からライン207への出力がある。排他的NORゲート203への入力には、長さの値LおよびアドレスオフセットMの符号ビットがある。第2の加算器202は、Mの符号ビットをキャリーインとしてライン211から受信する。この中でラップアドレスと呼ばれる第2の加算器202の出力は、ライン209に供給される。マルチプレクサ213は、入力として、ライン207から絶対アドレスを、ライン209からラップアドレスを受信し、次の目的のアドレスをライン210へ供給する。計算された絶対アドレスおよびラップアドレスのどちらが出力として供給されるかを示す制御信号が、ライン212からマルチプレクサ213に供給される。ライン212の信号は、マルチプレクサ214の出力から供給され、このマルチプレクサ214は、ライン211からのMの符号ビットに応じて動作し、Mの符号ビットが1(Mが負数)である場合と、Mの符号ビットが0(Mが正数)である場合とに対して論理を選択する。
【0030】
Mの符号ビットが1である場合には、インバータ205の出力が制御信号としてライン212に供給される。インバータ205の入力は、第1の加算器201からライン206へのキャリーアウト信号である。したがって、Mの符号ビットが1の場合、第1の加算器201のキャリーアウトが0ならばラップアドレスが選択され、第1の加算器201のキャリーアウトが1ならば絶対アドレスが選択される。
【0031】
Mの符号ビットが0である場合には、ORゲート204の出力が制御信号としてライン212に供給される。ORゲート204の入力は、第2の加算器202からライン208へのキャリーアウト信号と、第1の加算器201からライン206へのキャリーアウト信号とを含む。したがって、Mの符号ビットが0の場合、ライン206および208のキャリーアウト信号の少なくとも1つが1ならばラップアドレスが選択される。Mの符号ビットが0の場合、ライン206および208のキャリーアウト信号の両方が0ならば絶対アドレスが選択される。
【0032】
暗示上限境界を有するバッファが選択される場合には、暗示上限境界は、現在アドレスAの低位のNビットに1を連結することによって決定される。ここで、Nは長さパラメータLの先頭の“1”があるビット位置である。Nは式2^(N−1)<=L<2^Nによっても決定できる。つまり、上限境界は2^Nの任意のマルチプルに設定できる。Wビットを含むこのバッファのアドレスAは、このバッファの上限および下限境界を位置決めするのに使用できる。このバッファの上限境界は、左のAの高位のW−Nビットに右の低位のNビットに1を連結することによって指定される。上限境界が決定されると、下限境界はその上限境界からLを差し引くことによって決定される。したがって、下限境界は左のAの高位のW−Nビットに右の(L\)の低位のNビットを連結して指定される。ここで、L\はLの1の補数である。
【0033】
例えば:W=16で、Lが0000 0000 0010 1011(2進数で16ビット)、このバッファに対する現在アドレスAが0011 1001 0101 1110であるケースを考える。この場合N=6であり、暗示上限境界は0011 1001 0111 1111であり、暗示下限境界は00111001 0101 0100である。
【0034】
前述のように説明の簡略化のため、A、上限境界および下限境界から高位のW−Nビットを除外し、Aの低位のNビットを表すのにIを、上限境界を表すのにFを、そして下限境界を表すのに(L\)を使用する。Mは、現在アドレスIと次の目的のアドレスとの間のオフセットである。Mは符号の付いた数であり、正数または負数である。
【0035】
Mが正数の場合、円環状アドレス生成器が使用する論理に関して、次の2つの状態が考えられる。(1)I+M>=F+1の場合、および(2)I+M<F+1の場合である。
Mが正数で、I+M>=F+1ある状態1の場合。絶対アドレス(I+M)が上限境界(F、すべて1)を上回る。次のアドレスをバッファの低位領域にラップさせる必要がある。目的の(ラップ)アドレスIは、絶対アドレスからバッファ長を差し引くことにより計算できる。その式はI+M−(L+1)であり、2の補体系ではI+M+(L\)に等しい。
Mが正数で、I+M<F+1である状態2の場合。絶対アドレス(I+M)は、上限境界Fを上回らない。したがって、目的のアドレスIはI+Mに等しい。
【0036】
ハードウェア実行の際、状態1(I+M>=F+1)はI+Mから生成されるキャリーアウトによって示され、状態2(I+M>=L+1)はI+Mから生成されるキャリーアウトがないことによって示される。
Mが負数の場合、円環状アドレス生成器が使用する論理に関して、次の3つの状態が考えられる。(1)I+M<0の場合、(2)I+M<(L\)0の場合、および(3)I+M>=(L\)の場合である。
【0037】
Mが負数で、I+M<0である状態1の場合。絶対アドレス(I+M)は負数であり、円環状バッファの下限境界(L\)を下回る。したがって、次の目的のアドレスをバッファの高位領域にラップさせる必要がある。次の目的の(ラップ)アドレスIは、絶対アドレスにバッファ長を加えることにより計算できる。その式はI+M+L+1である。
Mが負数で、I+M<(L\)である状態2の場合。絶対アドレスは再び円環状バッファの下限境界(L\)を下回る。したがって、次の目的の(ラップ)アドレスIはI+M+L+1になる。
Mが負数で、I+M>=(L\)である状態3の場合。絶対アドレス(I+M)が下限境界(L\)を下回らない。したがって、目的のアドレスIはI+Mに等しい。
【0038】
ハードウェア実行については、Mが負数である状態1(I+M<0)はI+Mから生成されるキャリーアウトが無いことによって示すことができ、Mが負数である状態2(I+M<(L\))はI+M+L+1から生成されるキャリーアウトが無いことによって示すことができる。
【0039】
したがって、暗示上限アドレス境界円環状バッファのハードウェア実行は、図4に示すように論理的に実行される。図4の論理は、第1の加算器301および第2の加算器302を含む。第1の加算器301への入力には、値IおよびMがある。この中で絶対アドレスと呼ばれる第1の加算器301の出力が、ライン307に供給され、I+Mに等しい。加算器301からのキャリーアウト信号がライン306に供給される。第2の加算器302への入力には、排他的NORゲート303の出力および第1の加算器301からライン307への出力がある。排他的NORゲート303への入力には、長さの値LおよびアドレスオフセットMの符号ビットがある。第2の加算器302は、Mの符号ビットをキャリーインとしてライン311から受信する。この中でラップアドレスと呼ばれる第2の加算器302の出力は、ライン309に供給される。マルチプレクサ313は、入力として、ライン307から絶対アドレスを、ライン309からラップアドレスを受信し、次の目的のアドレスをライン310へ供給する。計算された絶対アドレスおよびラップアドレスのどちらが出力として供給されるかを示す制御信号が、ライン312からマルチプレクサ313に供給される。ライン312の信号は、マルチプレクサ314の出力から供給され、このマルチプレクサ314は、ライン311からのMの符号ビットに応じて動作し、Mの符号ビットが1(Mが負数)である場合と、Mの符号ビットが0(Mが正数)である場合とに対して論理を選択する。
【0040】
Mの符号ビットが1である場合には、NANDゲート305の出力が制御信号としてライン312に供給される。NANDゲート305の入力は、第1の加算器301からライン306へのキャリーアウト信号と、第2の加算器302からライン308へのキャリーアウト信号とを含む。したがって、Mの符号ビットが1の場合、第1の加算器301および第2の加算器302の少なくとも1つのキャリーアウト信号が0ならばラップアドレスが選択され、第1の加算器301および第2の加算器302のキャリーアウト信号の両方が1ならば絶対アドレスが選択される。
【0041】
Mの符号ビットが0である場合には、第1の加算器301のライン306へのキャリーアウトが制御信号としてライン312に供給される。したがって、Mの符号ビットが0の場合、ライン306のキャリーアウト信号が1ならばラップアドレスが選択される。Mの符号ビットが0の場合、ライン306のキャリーアウト信号が0ならば絶対アドレスが選択される。
【0042】
図5は、2つの加算器401、402が下限境界スキームおよび上限境界スキームによって共有された、考えられる1つの実施形態のブロック図である。この装置には、4つの入力と1つの出力とがある。
入力は:
1.バッファ長L409、これはプログラム値である(実際のバッファ長はL+1である)。
2.現在アクセスアドレスA407、円環状バッファの境界はAおよびLにおいて暗示的である。
3.現在アドレス407および目的のアドレス414の間のオフセットM408。Mは符号付きの値である。Mの絶対値はLより大きくない。
4.ライン431からのプログラム可能制御信号。これは、暗示下限境界または暗示上限境界に基づいたバッファを使用すべきか否かを選択するために使用される。
出力は:
1.次の目的のアドレス414。これは、次のアドレス生成のために現在アドレス407として使用される。
【0043】
加算器401は、A407とM408との加算を実行し、その和412―絶対アドレスを生成し、各ビット荷重からキャリーアウト419を生成する。XNOR403は、M408の符号ビット410が0に等しい場合に、L409の逆を取るために使用される。M408の符号ビット410が1に等しい場合には、XNOR403の出力411がL409に等しくなる。加算器402は、絶対アドレス412、XNOR403の出力411、および最下位のビットにおいてM408の符号ビット410に等しいキャリーインの加算を実行し、その和413−ラップアドレスと、各ビット荷重からキャリーアウト420とを生成する。目的のアドレス414は、制御信号418を使用してマルチプレクサ404によって絶対アドレス412またはラップアドレス413から選択される。プライオリティセレクタ421は、L409の先頭の“1”を検出することによって加算器401のキャリーアウト419からN番目のビットのキャリーアウトを出力415として選択する。プライオリティセレクタ422は、L409に応じてよって加算器402のキャリーアウト420からN番目のビットのキャリーアウトを出力416として選択する。ワイヤ431は、マルチプレクサ423の2つの入力の1つを選択するのに使用され、ワイヤ431が0に等しい場合には、制御信号418はワイヤ425から受信したものとなる。これは、このバッファが下限境界基準として定義されていることも意味する。また、ワイヤ424が選択されたなら、そのバッファは上限境界に基づいている。
【0044】
ワイヤ431が0の場合には、このバッファは下限境界に基づいている。Mが正数であれば、ワイヤ428が、マルチプレクサ426、ワイヤ425、およびマルチプレクサ423によって制御信号418として選択される。加算器401が生成し、プライオリティセレクタ421を通過したキャリーアウト415、または、加算器402が生成し、プライオリティセレクタ422を通過したキャリーアウト416の少なくとも1つが設定されれば、加算器402の和413(ラップアドレス)がマルチプレクサ404によって目的のアドレス414として選択される。OR機能がORゲート430によって実行される。ワイヤ428はORゲート430の出力であり、マルチプレクサ426の入力でもある。Mが負数であれば、ワイヤ427が、マルチプレクサ426、ワイヤ425、およびマルチプレクサ423によって制御信号418として選択される。加算器401が生成し、プライオリティセレクタ421を通過したキャリーアウト415がクリアである場合には、加算器402の和413(ラップアドレス)が目的のアドレス414として選択される。インバータ429は、ワイヤ415のクリア状態を認識するのに使用され、ワイヤ427はインバータ429の出力である。
【0045】
ワイヤ431が1に設定された場合には、このバッファは上限境界基準である。Mが正数であれば、ワイヤ415が、マルチプレクサ406、ワイヤ424、およびマルチプレクサ423によって制御信号418として選択される。加算器401が生成し、プライオリティセレクタ421を通過したキャリーアウト415が設定される場合には、加算器402の和413(ラップアドレス)が、マルチプレクサ404によって次の目的のアドレス414として選択され、そうでない場合には、加算器401が生成した絶対アドレスが選択される。Mが負数であれば、ワイヤ417が、マルチプレクサ406、ワイヤ424、およびマルチプレクサ423によって制御信号418として選択される。加算器401が生成し、プライオリティセレクタ421を通過したキャリーアウト415、または、加算器402が生成し、プライオリティセレクタ422を通過したキャリーアウト416の少なくとも1つが除去されれば、加算器402の和413(ラップアドレス)がマルチプレクサ404によって次の目的のアドレス414として選択され、そうでない場合には、絶対アドレスが選択される。OR機能がNANDゲート405によって実行される。ワイヤ417はNANDゲート405の出力であり、マルチプレクサ406の入力である。
【0046】
本発明のある実施形態では、図6に示すように、暗示上限境界スキームが単独で使用される。
図6では、加算器501は、A507+M508を実行し、絶対アドレス512を生成する。M508が正数である(Mの符号ビット510が0に等しい)場合には、XNORゲート503は、L509の逆を取る。M508が負数である(Mの符号ビット510が1に等しい)場合には、XNOR503の出力511はL509に等しい。加算器502は、絶対アドレス512、XNOR503の出力511、および最下位のビットにおいてMの符号ビット510に等しいキャリーインの加算を実行する。加算器502の出力513はラップアドレスであり、絶対アドレスがバッファの境界を上回る場合に選択される。目的の出力514は、制御信号518を使用してマルチプレクサ504によって絶対アドレス512またはラップアドレス513から選択される。
【0047】
Mが正数である場合には、信号515がマルチプレクサ506によって制御信号518として選択される。プライオリティセレクタ521は、L509の先頭の“1”を検出することによって加算器501のキャリーアウト519からN番目のビットのキャリーアウトを出力515として選択する。プライオリティセレクタ521の出力515は、加算器501のN番目のビットのキャリーアウト状態を表す。加算器501からのN番目のキャリーアウトにおける“1”は、絶対アドレス(A+M)がバッファの上限境界を上回り、ラップアドレス513が出力514として選択されることを意味する。それ以外には絶対アドレス512が出力514として選択される。
【0048】
Mが負数である場合には、信号517がマルチプレクサ506によって制御信号518として選択される。この場合には、515、516という2つのN番目のビットのキャリーアウト信号が使用される。ライン515および516はNANDゲート505へ供給され、このNANDゲート505は出力として信号517を供給する。信号515の“0”という値は、A+Mが生成したキャリーアウトは無いことを示し、これは絶対アドレス512が負値であり、バッファの下限境界を下回ることを意味する。したがって、ラップアドレス513が次の目的のアドレス出力514と見なされる。プライオリティセレクタ522は、L509の先頭の“1”を検出することによって加算器502のキャリーアウト520からN番目のビットのキャリーアウトを出力516として選択する。信号516の“0”という値は、A+M<(L\)を意味する加算器502が生成したキャリーアウトは無いことを示し、絶対アドレスはバッファの下限境界を下回る。この場合には、ラップアドレス513が次の目的のアドレス出力514として選択される。2つのラップ状態が一致しない場合には、絶対アドレス512が次の目的のアドレス出力514として選択される。
【0049】
要約すると、線形メモリ空間において円環状バッファにアクセスするためのアドレスを生成するアドレス生成器が提供される。このバッファは、プログラムされた長さ(L+1)を有し、バッファベースが暗示下限境界または暗示上限境界で定義されている。円環状バッファを定義するのに暗示下限境界が使用される場合には、下限境界は低位のNビットがすべて0のアドレスとなる。ここでNは、Lの先頭の1があるビット位置である。円環状バッファを定義するのに暗示上限境界が使用される場合には、上限境界は低位のNビットがすべて1のアドレスとなる。絶対アドレスは現在アドレスAにオフセットMを加えることによって計算される。ここでMは符号の付いた数であり、Mの絶対値はLより小さい。絶対アドレスがバッファの境界を上回る場合には、バッファ長(L+1)を加えたり差し引いたりすることによって境界の別のサイドにラップする。このように、次の目的のアドレスがバッファ内に常に存在する。このようなアドレス生成器は、デジタル信号処理アプリケーションだけでなく、データ処理の他のアプリケーションにも使用される。
【0050】
本発明を好適な実施形態および例を参照して以上で詳細に開示してきたが、これらの例は制約的な意味ではなく例証的な意味で示したものであることを理解されたい。本発明の精神および特許請求の範囲内にある変更や組合せが、容易に当業者の頭に浮かぶであろうことが予期される。
【図面の簡単な説明】
【図1】本発明の上下限円環状アドレス生成器を備えた集積回路プロセッサの簡略ブロック図である。
【図2】(a)は従来技術による暗示下限アドレス境界円環状バッファのアドレス範囲を示し、(b)は本発明の実施形態である暗示上限アドレス境界円環状バッファのアドレス範囲を示し、(c)は本発明の実施形態である結合上下限アドレス境界のアドレス範囲を示す。
【図3】従来技術の暗示下限アドレス境界サーキュラアドレッシングによるアドレス計算の簡略論理図である。
【図4】本発明の実施形態である暗示上限アドレス境界サーキュラアドレッシングによるアドレス計算の簡略論理図である。
【図5】本発明の実施形態である結合暗示上下限アドレス境界サーキュラアドレッシングによるアドレス計算の論理図である。
【図6】本発明の実施形態である暗示上限アドレス境界サーキュラアドレッシングによるアドレス計算の論理図であり、位置Nにおけるキャリーアウトを選択するプライオリティセレクタブロックが示されている。
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to memory addressing, and more particularly to addressing circular buffers used in digital systems such as digital signal processors.
[0002]
[Prior art]
Circular addressing, also called modulo addressing, is often used in digital signal processing and other data processing applications. In an annular buffer to which circular addressing is applied, one address range is assigned to the buffer. In generating the circular buffer address, the offset value increments the current address and generates the next address. If the sum of the current address and the offset value indicates an address outside the allocated address range, the next address wraps around to the opposite boundary of the circular buffer.
[0003]
In the prior art, various proposals have been made for generating an address of an annular buffer. The usual way of performing circular addressing is to define two explicit parameters that set the upper and lower bounds of the assigned address range. In this way, the user has the flexibility to define the buffer at unlimited locations in the available memory. However, this method requires a register for storing the boundary and a relatively complicated logic for calculating the next address. Since address generation is in the critical path of a particular design, it is desirable to reduce the number of required parameters and simplify the logic.
[0004]
Another proposal for circular buffer address generation is described in US Pat. No. 4,800,524 of the invention by Roesgen. In the Resgen patent proposal, the buffer is defined by a single buffer length parameter and the current address of the circular buffer. The lower bound of the circular buffer is implied from the current address and buffer by replacing the low order N bits of the current address with zeros. Here, N is a bit position with a leading (leftmost) 1 when the buffer length is expressed in binary. The upper bound of the circular buffer is defined as the implied lower bound plus the buffer length. This method is easier to implement than methods that require explicit parameters to set the upper and lower bounds. However, memory usage is not efficient due to the limited set of available boundaries.
[0005]
Other proposals for generating circular addresses include, as prior art, US Pat. No. 4,202,035 of the invention by Lane, US Pat. No. 4,809,156 of the invention by Taber, US Pat. No. 5,249,148 of the invention by Catherwood et al. And US Pat. No. 5,381,360 by Shridhar et al.
[0006]
[Problems to be solved by the invention]
As digital signal processing applications that rely on circular addressing become more complex, there is an increasing need to improve flexibility and reduce the cost of address generators for such applications.
[0007]
[Means for Solving the Problems]
In accordance with the present invention, an apparatus is provided for generating an address of a circular address buffer in memory, wherein the upper boundary of the circular buffer is implied from the current address. Applying this proposal alone and in combination with a circular buffer that relies on an implicit lower bound can improve the memory usage and flexibility in the circular buffer design of an integrated circuit or processing system.
[0008]
One embodiment of an address generator according to the present invention includes a first memory address and a second memory that indicate a current address A, an address offset M, a buffer length L, and a control signal, and a location in the memory. And logic configured to calculate addresses in response to A, M, and L. One of the first and second memory addresses is provided in response to the control signal. The first memory address has an address boundary X and coincides with a sum of the current address A and the address offset M of a first circular buffer including addresses from X to (X + L), and the second Of the second circular buffer having an address boundary Y and including addresses from Y to (YL) coincides with the sum of the current address A and the address offset M.
[0009]
The buffer length L is a value having a leading 1 at the bit position N when expressed in binary. An implied lower address boundary X is calculated by replacing the lower N bits of the current address A with 0. An implied upper address boundary Y is calculated by replacing the lower N bits of the current address A with 1.
In various embodiments, the input includes registers that store A, M, and L. The control signal can also be stored in one register or in a register shared with one of the other parameters such as the offset value M.
[0010]
In one embodiment, the logic used by the address generator includes a first adder that produces a first output equal to the sum A + M by a carry-out signal, and a first adder when the sign of M is a positive number. A carry-out signal generates a second output equal to a wrap address sum (A + M)-(L + 1) or equal to a second wrap address sum (A + M) + (L + 1) when the sign of M is negative. And a second adder. The selection logic selects the first output or the second output according to the carry-out signal from the first and second adders. In one preferred embodiment, the first and second adders are shared logic used for an annular buffer having an implicit lower bound address boundary and an annular buffer having an implicit upper bound address boundary.
[0011]
In yet another embodiment, L has a leading 1 in bit position N, and an implicit lower bound address boundary X is calculated by replacing the lower N bits of the current address A with 0, and an implicit upper bound address boundary Y Is calculated by replacing the low order N bits of the current address A with 1. The first and second adders generate carry-out signals for a plurality of bit positions, and the selector is responsive to L to cause the adder used in this logic to carry-out signals from the Nth bit position. I will provide a. Therefore, in this embodiment, the selection logic selects the first output or the second output in response to the carry-out signal from the Nth bit position of the first and second adders. It is possible to operate.
[0012]
In embodiments where both the implied lower address boundary and the implied upper address boundary are used, the selection logic is
The control signal is set for the first memory address, the address offset is a positive number, and the carry-out from the first adder and the carry-out from the second adder are 1 If not, or
When the control signal is set for the first memory address, the address offset is negative, and the carry out from the first adder is 1, or
If the control signal is set for the second memory address, the address offset is a positive number, and the carry out from the first adder is zero, or
When the control signal is set for the second memory address, the address offset is negative, and the carry out from both the first adder and the second adder is 1. ,
Selecting the output of the first adder;
The control signal is set for the first memory address, the address offset is a positive number, and the carry out from at least one of the first adder or the second adder is 1. If there is, or
When the control signal is set for the first memory address, the address offset is negative, and the carry out from the first adder is zero, or
When the control signal is set for the second memory address, the address offset is a positive number, and the carry out from the first adder is 1, or
The control signal is set for the second memory address, the address offset is negative, and the carry out from at least one of the first adder or the second adder is zero. In case,
It is configured to select the output of the second adder.
[0013]
In embodiments where only the implied upper address boundary is used, the selection logic is
If the address offset is a positive number and the carry out from the first adder is zero, or
If the address offset is negative and the carry out from both the first adder and the second adder is 1, select the output of the first adder;
The address offset is a positive number and the carry-out from the first adder is 1, or
The output of the second adder is selected when the address offset is a negative number and the carry out from at least one of the first adder or the second adder is zero. Is done.
[0014]
The present invention is also embodied by an integrated circuit including a processor core, a register file that stores a current address A, an offset value M, and a buffer length L, a memory, and an address generator of the memory. In embodiments according to the present invention, as described above, the address generator is configured to use only the implied upper address boundary or a combination of the implied upper address boundary and the implied lower address boundary.
Other aspects and advantages of the invention are described below with reference to the figures.
[0015]
DETAILED DESCRIPTION OF THE INVENTION
The embodiment of the present invention will be described in detail with reference to FIGS.
FIG. 1 is a simplified diagram of an integrated circuit processor with an address generator of the present invention. The integrated circuit device 10 includes a program memory 11, a data memory 14, and a processor core 12. The processor core 12 includes an annular address generator 15 for data memory addresses, a register file 13 including an annular buffer program register, And other logic elements such as an instruction decoder and ALU. The toroidal address generator 15 according to the present invention manages a buffer in the data memory 14 that has a length of (L + 1) and has a selectable boundary base that can conform to an implied upper boundary or a combined implicit upper and lower boundary.
[0016]
For example, the processor 12 executes an instruction from the program memory 11. Instructions include direct address instructions and indirect address instructions. The indirect address instruction depends on the circular buffer program register of the register file 13. In one embodiment, there are four sets of circular buffer program registers, each having a first register for storing the current address A, a second register for storing the offset value M, and a buffer length value L. A third register to store is included. In this embodiment that supports both upper and lower address boundaries, an upper / lower control signal is provided that indicates whether an upper or lower address boundary buffer is being used for each access. The high / low limit control signal as part of an instruction that uses circular addressing, or when the offset value M is limited to a value that uses only the low order bits of the register, the high bit of the register that stores the offset value M May be provided independently.
[0017]
For example, the instruction “ldx1, ar2, m2” is interpreted by the decoder of the processor core 12 and the memory data is loaded into the register x1 of the register file. This memory data is incremented from the address specified by the register ar2 storing the current address A of the set of circular buffer program registers to the offset value M stored in the register m2 of the circular buffer program register. Is taken out. The register l2 for storing the buffer length value L of the circular buffer program register is configured in advance by the processor 12 or configured in another manner. In one embodiment, when the buffer length value L of a 16-bit address is set to hexadecimal ffff, the linear length is set according to an indirect address instruction that specifies a register of a corresponding set of circular buffer program registers. Addressing is used.
[0018]
FIGS. 2 (a) to 2 (c) illustrate circular addressing embodiments using implicit lower and upper address boundaries, and combined upper and lower address boundaries, respectively. FIG. 2A shows an implicit lower limit address boundary approach according to the prior art, which includes circular buffers 1 and 2. In this example, the circular buffer 1 has a length L + 1 = 10, and its allocation is from 0a00 (hexadecimal) to 0a09 (hexadecimal). Suppose the user wants the length L + 1 of the circular buffer 2 to be 6. The length of the address set between 0a0a (hexadecimal) and 0a0f (hexadecimal) is equal to 6, but this address set cannot be used for the circular buffer 2. This is because this address set must have an implied lower bound whose lower bound 3 is zero. Therefore, the circular buffer 2 is arranged between 0a10 (hexadecimal) and 0a15 (hexadecimal), and an unused area is left between 0a0a (hexadecimal) and 0a0f (hexadecimal).
[0019]
FIG. 2 (b) illustrates the implicit upper address boundary approach of the present invention. Annular buffers 1 and 2 are shown. In this case, the upper limit address boundary is implied. Therefore, the circular buffer 1 has a length L + 1 = 10, and its allocation is from 0a06 (hexadecimal) to 0a0f (hexadecimal). In this example, the user defines a circular buffer 2 having a length L + 1 = 6. The most compact and closest allocation to buffer 1 places buffer 2 between 0a17 (hexadecimal) and 0a12 (hexadecimal) with an implicit upper bound base. Even in this case, an unused area remains between the buffers 1 and 2.
[0020]
FIG. 2C shows an annular buffer 1 having an implicit lower limit address boundary and an annular buffer 2 having an implicit upper limit address boundary, and there is no unused area between them. In this example, the circular buffer 1 has a length L + 1 = 10. For the current address A between 0a00 (hexadecimal) and 0a09 (hexadecimal), the toric address generator generates the next address in the range 0a00 (hexadecimal) to 0a09 (hexadecimal) To do. In this example, the circular buffer 2 of length L + 1 = 6 has an implicit upper limit address boundary 0a0f (hexadecimal). The current address between 0a0f (hexadecimal) and 0a0a (hexadecimal) is used to access the circular buffer 2, and the circular address generators use 0a0f (hexadecimal) and 0a0a (hexadecimal). The next address is generated within the range. As can be seen, these two circular buffers can be configured such that there is no unused area between them.
[0021]
The address generation logic for a buffer with an implicit lower bound and an implicit upper bound is described below with reference to FIGS.
When selecting a buffer with an implied lower boundary, this implied lower boundary is determined by inserting 0s into the low order N bits of the current address A. Here, the value N is a bit position where the leading “1” of the buffer length parameter L is present. This value N can also be expressed by the equation 2 ^ (N-1) <= L <2 ^ N. According to this method, the lower limit boundary can be set to an arbitrary multiple of 2 ^ N. The lower boundary of this buffer is specified by concatenating the left A high W-N bits to the right low N bits 0. Here, W is the number of address bits used in the memory. Once the lower bound is determined, it is determined by adding L to the lower bound of the length L + 1 buffer. That is, the upper boundary is designated by concatenating the left A high W-N bits to the right L low N bits.
[0022]
For example: Consider a case where W = 16, L is 0000 0000 0010 1011 (16 bits in binary), and the current address A for this buffer is 0011 1001 0101 1110. Since the leading 1 of L is at bit position 6, N = 6. The implied lower bound is 0011 1001 0100 0000 and the implied upper bound is 0011 1001 0110 1011.
[0023]
For simplicity of explanation, A, the upper and lower bounds are excluded from the higher W-N bits, I is represented to represent the lower N bits of A, 0 is represented to represent the lower bound, and the upper bound. L is used to represent M is the offset between the current address I and the next target address. M is a signed number and is a positive or negative number.
When M is a positive number, the following three states are considered regarding the logic used by the toric address generator. (1) I + M> = 2 ^ N, (2) I + M> = L + 1, and (3) I + M <L + 1.
[0024]
Case 1 where M is a positive number and I + M> = 2 ^ N. The absolute address (I + M) exceeds the upper limit boundary L. It is necessary to wrap the next address in the lower area of the circular buffer. The next target address I can be calculated by subtracting the buffer length (L + 1) from the absolute address (I + M). The equation is I + M- (L + 1), which is converted to I + M + (L \) in the two's complement system.
[0025]
Case 2 where M is a positive number and I + M> = L + 1. The absolute address (I + M) again exceeds the upper limit boundary L. The next address needs to be wrapped in the lower area of the buffer. The next target address I can be calculated by subtracting the buffer length from the absolute address. The equation is I + M− (L + 1) as in the case of the state (1), and I + M + (L \) in the two's complement system.
[0026]
In state 3 where M is a positive number and I + M <L + 1. The absolute address I + M does not exceed the upper limit boundary L. Therefore, the next target address I is equal to I + M.
In hardware implementation, state 1 (I + M> = 2 ^ N) is indicated by a carry-out generated from I + M, and state 2 (I + M> = L + 1) is indicated by a carry-out generated from I + M + (L \). It is. State 3 is indicated when there is no carry-out generated from I + M.
[0027]
When M is a negative number, the following two states can be considered regarding the logic used by the toric address generator. (1) I + M <0, and (2) I + M> = 0.
Case 1 where M is a negative number and I + M <0. The absolute address (I + M) is a negative number below the lower boundary 0 of the circular buffer. It is necessary to wrap the next address in the high-order area of the circular buffer. The next target address I can be calculated by adding the buffer length L + 1 to the absolute address (I + M). The formula is I + M + L + 1.
[0028]
Case 2 where M is a negative number and I + M> = 0. The absolute address (I + M) exceeds the lower boundary 0. Accordingly, the target address I is equal to I + M.
During hardware execution, state 1 (I + M <0) where M is negative is indicated by the lack of carry-out generated from I + M. State 2 where M is negative (I + M> = 0) is indicated by a carry-out generated from I + M.
[0029]
Therefore, hardware implementation of the implicit lower limit address boundary circular buffer is logically performed as shown in FIG. The logic of FIG. 3 includes a first adder 201 and a second adder 202. The inputs to the first adder 201 have values I and M. Among them, the output of the first adder 201 called absolute address is supplied to the line 207 and is equal to I + M. A carry-out signal from the adder 201 is supplied to the line 206. The inputs to the second adder 202 include the output of the exclusive NOR gate 203 and the output from the first adder 201 to the line 207. At the input to exclusive NOR gate 203 is a sign bit of length value L and address offset M. The second adder 202 receives M code bits from the line 211 as a carry-in. Among these, the output of the second adder 202 called a wrap address is supplied to the line 209. Multiplexer 213 receives as input the absolute address from line 207 and the wrap address from line 209 and supplies the next target address to line 210. A control signal is provided from line 212 to multiplexer 213 indicating whether the calculated absolute address or wrap address is provided as an output. The signal on line 212 is supplied from the output of multiplexer 214, which operates in response to the M sign bit from line 211, where M sign bit is 1 (M is a negative number) and M The logic is selected for the case where the sign bit is 0 (M is a positive number).
[0030]
When the sign bit of M is 1, the output of the inverter 205 is supplied to the line 212 as a control signal. The input of the inverter 205 is a carry-out signal from the first adder 201 to the line 206. Therefore, when the sign bit of M is 1, if the carry-out of the first adder 201 is 0, the wrap address is selected, and if the carry-out of the first adder 201 is 1, the absolute address is selected.
[0031]
When the sign bit of M is 0, the output of the OR gate 204 is supplied to the line 212 as a control signal. The input of OR gate 204 includes a carry out signal from second adder 202 to line 208 and a carry out signal from first adder 201 to line 206. Thus, if the sign bit of M is 0, the wrap address is selected if at least one of the carry out signals on lines 206 and 208 is 1. If the sign bit of M is 0, an absolute address is selected if both carry-out signals on lines 206 and 208 are 0.
[0032]
If a buffer with an implied upper boundary is selected, the implied upper boundary is determined by concatenating 1 to the lower N bits of the current address A. Here, N is a bit position having a leading “1” of the length parameter L. N can also be determined by the equation 2 ^ (N-1) <= L <2 ^ N. That is, the upper limit boundary can be set to an arbitrary multiple of 2 ^ N. The address A of this buffer containing the W bits can be used to locate the upper and lower boundaries of this buffer. The upper bound of this buffer is specified by concatenating 1 to the left A high W-N bits and the right low N bits. Once the upper boundary is determined, the lower boundary is determined by subtracting L from the upper boundary. Therefore, the lower boundary is specified by concatenating the left A high W-N bits to the right (L \) low N bits. Here, L \ is the one's complement of L.
[0033]
For example: Consider a case where W = 16, L is 0000 0000 0010 1011 (16 bits in binary), and the current address A for this buffer is 0011 1001 0101 1110. In this case, N = 6, the implied upper limit boundary is 0011 1001 0111 1111 and the implied lower limit boundary is 00111001 0101 0100.
[0034]
For simplicity of explanation as described above, A, the upper W-N bits are excluded from the upper boundary and the lower boundary, I is represented to represent the lower N bits of A, and F is represented to represent the upper boundary. , And use (L \) to represent the lower bound. M is the offset between the current address I and the next target address. M is a signed number and is a positive or negative number.
[0035]
When M is a positive number, the following two states can be considered regarding the logic used by the toric address generator. (1) I + M> = F + 1 and (2) I + M <F + 1.
Case 1 where M is a positive number and I + M> = F + 1. The absolute address (I + M) exceeds the upper boundary (F, all 1s). The next address needs to be wrapped in the lower area of the buffer. The target (wrap) address I can be calculated by subtracting the buffer length from the absolute address. The equation is I + M- (L + 1), which is equal to I + M + (L \) in the two's complement system.
Case 2 where M is a positive number and I + M <F + 1. The absolute address (I + M) does not exceed the upper limit boundary F. Thus, the target address I is equal to I + M.
[0036]
In hardware implementation, state 1 (I + M> = F + 1) is indicated by a carryout generated from I + M, and state 2 (I + M> = L + 1) is indicated by no carryout generated from I + M.
When M is a negative number, the following three states are considered regarding the logic used by the toric address generator. (1) I + M <0, (2) I + M <(L \) 0, and (3) I + M> = (L \).
[0037]
Case 1 where M is a negative number and I + M <0. The absolute address (I + M) is negative and falls below the lower bound (L \) of the circular buffer. Therefore, it is necessary to wrap the next target address in the high-order area of the buffer. The next target (wrap) address I can be calculated by adding the buffer length to the absolute address. The formula is I + M + L + 1.
Case 2 where M is a negative number and I + M <(L \). The absolute address is again below the lower bound (L \) of the circular buffer. Therefore, the next target (wrap) address I is I + M + L + 1.
In state 3 where M is a negative number and I + M> = (L \). The absolute address (I + M) does not fall below the lower boundary (L \). Thus, the target address I is equal to I + M.
[0038]
For hardware implementation, state 1 where M is negative (I + M <0) can be indicated by no carry-out generated from I + M, state 2 where M is negative (I + M <(L \)) Can be indicated by the lack of carry-out generated from I + M + L + 1.
[0039]
Therefore, hardware implementation of the implicit upper limit address boundary circular buffer is logically performed as shown in FIG. The logic of FIG. 4 includes a first adder 301 and a second adder 302. The inputs to the first adder 301 have values I and M. Among them, the output of the first adder 301 called absolute address is supplied to the line 307 and is equal to I + M. A carry-out signal from the adder 301 is supplied to the line 306. The inputs to the second adder 302 include the output of the exclusive NOR gate 303 and the output from the first adder 301 to line 307. At the input to exclusive NOR gate 303 is a sign bit of length value L and address offset M. The second adder 302 receives M code bits as carry-in from the line 311. Among these, the output of the second adder 302 called a wrap address is supplied to the line 309. Multiplexer 313 receives as input the absolute address from line 307 and the wrap address from line 309 and provides the next target address to line 310. A control signal is provided from line 312 to multiplexer 313 indicating whether the calculated absolute address or wrap address is provided as an output. The signal on line 312 is supplied from the output of multiplexer 314, which operates in response to the M sign bit from line 311, where M sign bit is 1 (M is a negative number) and M The logic is selected for the case where the sign bit is 0 (M is a positive number).
[0040]
When the sign bit of M is 1, the output of the NAND gate 305 is supplied to the line 312 as a control signal. The input of NAND gate 305 includes a carry-out signal from first adder 301 to line 306 and a carry-out signal from second adder 302 to line 308. Therefore, when the sign bit of M is 1, the wrap address is selected if at least one carry-out signal of the first adder 301 and the second adder 302 is 0, and the first adder 301 and the second adder 301 If both of the carry-out signals of the adder 302 are 1, the absolute address is selected.
[0041]
When the sign bit of M is 0, the carry-out to the line 306 of the first adder 301 is supplied to the line 312 as a control signal. Therefore, if the sign bit of M is 0, the wrap address is selected if the carry-out signal on line 306 is 1. If the sign bit of M is 0, the absolute address is selected if the carry-out signal on line 306 is 0.
[0042]
FIG. 5 is a block diagram of one possible embodiment in which two adders 401, 402 are shared by a lower boundary scheme and an upper boundary scheme. This device has four inputs and one output.
Input is:
1. Buffer length L409, which is a program value (actual buffer length is L + 1).
2. Current access address A407, circular buffer boundaries are implicit in A and L.
3. An offset M408 between the current address 407 and the target address 414. M is a signed value. The absolute value of M is not greater than L.
4). Programmable control signal from line 431. This is used to select whether to use a buffer based on the implied lower bound or implied upper bound.
The output is:
1. Next target address 414. This is used as the current address 407 for the next address generation.
[0043]
The adder 401 performs addition of A407 and M408, generates a sum 412-absolute address, and generates a carry-out 419 from each bit weight. XNOR 403 is used to take the inverse of L409 when the sign bit 410 of M408 is equal to zero. When the sign bit 410 of M408 is equal to 1, the output 411 of XNOR403 is equal to L409. The adder 402 performs a carry-in addition equal to the absolute address 412, the output 411 of the XNOR 403, and the sign bit 410 of M408 at the least significant bit, and the carry-out 420 from the sum 413-wrap address and each bit weight. And generate The destination address 414 is selected from the absolute address 412 or the wrap address 413 by the multiplexer 404 using the control signal 418. The priority selector 421 selects the carry-out of the Nth bit from the carry-out 419 of the adder 401 as the output 415 by detecting the leading “1” of L409. The priority selector 422 selects the carry-out of the Nth bit as the output 416 from the carry-out 420 of the adder 402 according to L409. Wire 431 is used to select one of the two inputs of multiplexer 423, and if wire 431 is equal to 0, control signal 418 is that received from wire 425. This also means that this buffer is defined as a lower boundary criterion. Also, if wire 424 is selected, the buffer is based on the upper bound.
[0044]
If the wire 431 is 0, this buffer is based on the lower bound. If M is a positive number, wire 428 is selected as control signal 418 by multiplexer 426, wire 425, and multiplexer 423. If at least one of the carry-out 415 generated by the adder 401 and passed through the priority selector 421 or the carry-out 416 generated by the adder 402 and passed through the priority selector 422 is set, the sum 413 of the adder 402 is set. (Wrap address) is selected as the target address 414 by the multiplexer 404. The OR function is performed by OR gate 430. Wire 428 is the output of OR gate 430 and is also the input of multiplexer 426. If M is a negative number, wire 427 is selected as control signal 418 by multiplexer 426, wire 425, and multiplexer 423. When the carry-out 415 generated by the adder 401 and passed through the priority selector 421 is clear, the sum 413 (wrap address) of the adder 402 is selected as the target address 414. Inverter 429 is used to recognize the clear state of wire 415, and wire 427 is the output of inverter 429.
[0045]
If the wire 431 is set to 1, this buffer is the upper boundary criterion. If M is a positive number, wire 415 is selected as control signal 418 by multiplexer 406, wire 424, and multiplexer 423. When the carry-out 415 generated by the adder 401 and passed through the priority selector 421 is set, the sum 413 (wrap address) of the adder 402 is selected as the next target address 414 by the multiplexer 404, and so on. If not, the absolute address generated by the adder 401 is selected. If M is a negative number, wire 417 is selected as control signal 418 by multiplexer 406, wire 424, and multiplexer 423. If at least one of the carry-out 415 generated by the adder 401 and passed through the priority selector 421 or the carry-out 416 generated by the adder 402 and passed through the priority selector 422 is removed, the sum 413 of the adder 402 is obtained. (Wrap address) is selected by multiplexer 404 as the next target address 414, otherwise an absolute address is selected. The OR function is performed by NAND gate 405. Wire 417 is the output of NAND gate 405 and the input of multiplexer 406.
[0046]
In some embodiments of the present invention, an implicit upper boundary scheme is used alone, as shown in FIG.
In FIG. 6, the adder 501 executes A507 + M508 and generates an absolute address 512. If M508 is a positive number (M sign bit 510 equals 0), XNOR gate 503 takes the opposite of L509. If M508 is negative (the sign bit 510 of M is equal to 1), the output 511 of XNOR 503 is equal to L509. Adder 502 performs a carry-in addition equal to M sign bit 510 at the absolute address 512, the output 511 of XNOR 503, and the least significant bit. The output 513 of the adder 502 is a wrap address and is selected when the absolute address exceeds the buffer boundary. The target output 514 is selected from the absolute address 512 or the wrap address 513 by the multiplexer 504 using the control signal 518.
[0047]
If M is a positive number, signal 515 is selected by multiplexer 506 as control signal 518. The priority selector 521 selects the carry-out of the Nth bit from the carry-out 519 of the adder 501 as the output 515 by detecting “1” at the head of L509. The output 515 of the priority selector 521 represents the carry-out state of the Nth bit of the adder 501. “1” in the Nth carry-out from the adder 501 means that the absolute address (A + M) exceeds the upper limit boundary of the buffer, and the wrap address 513 is selected as the output 514. Otherwise, absolute address 512 is selected as output 514.
[0048]
If M is a negative number, signal 517 is selected by multiplexer 506 as control signal 518. In this case, carry-out signals of two Nth bits of 515 and 516 are used. Lines 515 and 516 are provided to NAND gate 505, which provides signal 517 as an output. A value of “0” in signal 515 indicates that there is no carry-out generated by A + M, which means that absolute address 512 is negative and falls below the lower boundary of the buffer. Therefore, the wrap address 513 is regarded as the next target address output 514. The priority selector 522 selects the carry-out of the Nth bit from the carry-out 520 of the adder 502 as the output 516 by detecting “1” at the head of L509. A value of “0” in signal 516 indicates that there is no carry-out generated by adder 502 which means A + M <(L \), and the absolute address is below the lower boundary of the buffer. In this case, the wrap address 513 is selected as the next target address output 514. If the two wrap states do not match, the absolute address 512 is selected as the next target address output 514.
[0049]
In summary, an address generator is provided that generates addresses for accessing circular buffers in a linear memory space. This buffer has a programmed length (L + 1) and the buffer base is defined with an implied lower bound or an implied upper bound. If an implicit lower boundary is used to define the circular buffer, the lower boundary is an address where all the low order N bits are all zeros. Here, N is a bit position having a leading 1 of L. If an implicit upper boundary is used to define the circular buffer, the lower boundary is an address where all the lower N bits are one. The absolute address is calculated by adding an offset M to the current address A. Here, M is a signed number, and the absolute value of M is smaller than L. If the absolute address exceeds the buffer boundary, it wraps to another side of the boundary by adding or subtracting the buffer length (L + 1). Thus, the next target address is always present in the buffer. Such address generators are used not only in digital signal processing applications, but also in other data processing applications.
[0050]
Although the present invention has been disclosed in detail above with reference to preferred embodiments and examples, it is to be understood that these examples are presented in an illustrative rather than restrictive sense. It is anticipated that changes and combinations within the spirit of the invention and the scope of the claims will readily occur to those skilled in the art.
[Brief description of the drawings]
FIG. 1 is a simplified block diagram of an integrated circuit processor with upper and lower circular address generators of the present invention.
2A shows an address range of an implicit lower limit address boundary circular buffer according to the prior art, FIG. 2B shows an address range of an implicit upper limit address boundary circular buffer according to an embodiment of the present invention, and FIG. ) Shows the address range of the upper and lower bound address boundary that is the embodiment of the present invention.
FIG. 3 is a simplified logic diagram of address calculation with prior art implicit lower bound address boundary circular addressing.
FIG. 4 is a simplified logic diagram of address calculation by implicit upper limit address boundary circular addressing according to an embodiment of the present invention.
FIG. 5 is a logical diagram of address calculation by combined implicit upper and lower limit address boundary circular addressing according to an embodiment of the present invention.
FIG. 6 is a logical diagram of address calculation by implicit upper limit address boundary circular addressing according to an embodiment of the present invention, and shows a priority selector block for selecting carry-out at position N.

Claims (12)

メモリの円環状アドレスバッファのアドレスを生成する装置であって、
現在アドレスA、アドレスオフセットM、バッファ長の値Lおよび制御信号を受信する入力と、
前記A,M,Lおよび前記制御信号に応じて、前記メモリの位置に対するメモリアドレスを計算するように構成された論理とを含み、
前記制御信号は、暗示下限アドレス境界Xを有し、Xから(X+L)までのアドレスを含む第1の円環状バッファ、又は暗示上限アドレス境界Yを有し、Yから(Y−L)までのアドレスを含む第2の円環状バッファを選択し、
前記制御信号が前記第1の円環状バッファを選択したときには前記メモリアドレスは前記第1の円環状バッファ内で、前記現在アドレスAと前記アドレスオフセットMとの和に対応し、
前記制御信号が前記第2の円環状バッファを選択したときには、前記メモリアドレスは前記第2の円環状バッファ内で、前記現在アドレスAと前記アドレスオフセットMとの和に対応し、
前記論理が、
和A+Mに等しい第1の出力をキャリーアウト信号を供なって生成する第1の加算器と、
前記Mの符号が正数である時に第1のラップアドレス和(A+M)−(L+1)に等しいか、または前記Mの符号が負数である時に第2のラップアドレス和(A+M)+(L+1)に等しい第2の出力を、キャリーアウト信号を供なって生成する第2の加算器と、
前記第1および第2の加算器からの前記キャリーアウト信号に応じて前記第1の出力または前記第2の出力を選択する選択論理とを含むことを特徴とする装置。
An apparatus for generating an address of a memory circular address buffer,
An input for receiving a current address A, an address offset M, a buffer length value L and a control signal;
Logic configured to calculate a memory address for the location of the memory in response to the A, M, L and the control signal;
The control signal has an implicit lower limit address boundary X and a first circular buffer containing addresses from X to (X + L), or an implicit upper limit address boundary Y, from Y to (Y−L). Select the second circular buffer containing the address,
When the control signal selects the first circular buffer, the memory address corresponds to the sum of the current address A and the address offset M in the first circular buffer;
When the control signal selects the second circular buffer, the memory address corresponds to the sum of the current address A and the address offset M in the second circular buffer ;
The logic is
A first adder that produces a first output equal to the sum A + M with a carry-out signal;
Equal to the first wrap address sum (A + M) − (L + 1) when the sign of M is a positive number, or the second wrap address sum (A + M) + (L + 1) when the sign of M is a negative number A second adder that produces a second output equal to the output of the carry-out signal;
And a selection logic for selecting the first output or the second output in response to the carry-out signals from the first and second adders .
請求項1に記載の装置において、
前記Lは、2進数で表した時にビット位置Nに先頭の1を有する値であり、前記暗示下限アドレス境界Xが前記現在アドレスAの低位のNビットを0で置換することによって計算され、前記暗示上限アドレス境界Yが前記現在アドレスAの低位のNビットを1で置換することによって計算されることを特徴とする装置。
The apparatus of claim 1.
The L is a value having a leading 1 in a bit position N when expressed in binary, and the implicit lower limit address boundary X is calculated by replacing the lower N bits of the current address A with 0, An apparatus in which an implicit upper limit address boundary Y is calculated by replacing the low order N bits of the current address A with one.
請求項1に記載の装置において、
前記入力が、前記A、MおよびLを格納するレジスタを含むことを特徴とする装置。
The apparatus of claim 1.
The apparatus wherein the input includes a register storing the A, M and L.
請求項1に記載の装置において、
前記入力が、前記A、M、Lおよび前記制御信号を格納するレジスタ含むことを特徴とする装置。
The apparatus of claim 1.
The apparatus wherein the input includes a register storing the A, M, L and the control signal.
請求項に記載の装置において、
前記第1の加算器は、
前記ビット位置Nに、第1の出力をキャリーアウト信号を供なって、
前記第2の加算器は、
第2の出力を、前記ビット位置Nに、キャリーアウト信号を供なって、
前記選択論理は、
前記第1および第2の加算器からの前記キャリーアウト信号を含む前記制御信号に応じて、前記第1の出力または前記第2の出力を選択することを特徴とする装置。
The apparatus of claim 2 .
The first adder is
Wherein the bit position N, and a first output is provided a carry-out signal,
The second adder is
Providing a second output to the bit position N with a carry-out signal ;
The selection logic is
In response to the control signal including the carry-out signal from said first and second adders, the first output or device comprising a benzalkonium select the second output.
請求項に記載の装置において、
前記選択論理が、
前記制御信号が前記第1のメモリアドレスに対して設定され、前記アドレスオフセットが正数であり、前記第1の加算器からの前記キャリーアウト信号も前記第2の加算器からの前記キャリーアウト信号も1でない場合、または、
前記制御信号が前記第1のメモリアドレスに対して設定され、前記アドレスオフセットが負数であり、前記第1の加算器からの前記キャリーアウト信号が1である場合、または、
前記制御信号が前記第2のメモリアドレスに対して設定され、前記アドレスオフセットが正数であり、前記第1の加算器からの前記キャリーアウト信号が0である場合、または、
前記制御信号が前記第2のメモリアドレスに対して設定され、前記アドレスオフセットが負数であり、前記第1の加算器および前記第2の加算器の両方からの前記キャリーアウト信号が1である場合に、
前記第1の加算器の出力を選択し、
前記制御信号が前記第1のメモリアドレスに対して設定され、前記アドレスオフセットが正数であり、前記第1の加算器または前記第2の加算器の少なくとも1つからの前記キャリーアウト信号が1である場合、または、
前記制御信号が前記第1のメモリアドレスに対して設定され、前記アドレスオフセットが負数であり、前記第1の加算器からの前記キャリーアウト信号が0である場合、または、
前記制御信号が前記第2のメモリアドレスに対して設定され、前記アドレスオフセットが正数であり、前記第1の加算器からの前記キャリーアウト信号が1である場合、または、
前記制御信号が前記第2のメモリアドレスに対して設定され、前記アドレスオフセットが負数であり、前記第1の加算器または前記第2の加算器の少なくとも1つからの前記キャリーアウト信号が0である場合に、
前記第2の加算器の出力を選択するように構成されることを特徴とする装置。
The apparatus of claim 5 .
The selection logic is
The control signal is set for the first memory address, the address offset is a positive number, and the carry-out signal from the first adder is also the carry-out signal from the second adder. Is not 1, or
When the control signal is set for the first memory address, the address offset is negative, and the carry-out signal from the first adder is 1, or
When the control signal is set for the second memory address, the address offset is a positive number, and the carry-out signal from the first adder is zero, or
When the control signal is set for the second memory address, the address offset is negative, and the carry-out signal from both the first adder and the second adder is 1. In addition,
Selecting the output of the first adder;
The control signal is set for the first memory address, the address offset is a positive number, and the carry-out signal from at least one of the first adder or the second adder is 1 Or
When the control signal is set for the first memory address, the address offset is negative, and the carry-out signal from the first adder is zero, or
When the control signal is set for the second memory address, the address offset is a positive number, and the carry-out signal from the first adder is 1, or
The control signal is set for the second memory address, the address offset is negative, and the carry-out signal from at least one of the first adder or the second adder is zero. If there is
An apparatus configured to select an output of the second adder.
集積回路であって、
プロセッサと、
現在アドレスA、アドレスオフセットM、バッファ長の値Lを格納する、前記プロセッサに結合されたレジスタと、
加算器と、
メモリと、
前記プロセッサに結合され、暗示下限アドレス境界Xを有し、Xから(X+L)までのアドレスを含む前記メモリの第1の円環状バッファ、又は暗示上限アドレス境界Yを有し、Yから(Y−L)までのアドレスを含む前記メモリの第2の円環状バッファに対するアドレスを生成するアドレス生成器とを含み、
前記アドレス生成器は、
前記A,MおよびLに応じて、および、前記第1の円環状バッファ又は前記第2の円環状バッファのいずれか一方を選択する制御信号に応じて、前記メモリの位置に対するメモリアドレスを計算し、
前記制御信号が前記第1の円環状バッファを選択したときには、前記メモリアドレスは前記第1の円環状バッファ内で前記現在アドレスAと前記アドレスオフセットMとの和に対応し、
前記制御信号が前記第2の円環状バッファを選択したときには、前記メモリアドレスは前第2の円環状バッファ内で前記現在アドレスAと前記アドレスオフセットMとの和に対応し、
前記アドレス生成器が、
和A+Mに等しい第1の出力をキャリーアウト信号を供なって生成する第1の加算器と、
前記Mの符号が正数である時に第1のラップアドレス和(A+M)−(L+1)に等しいか、または前記Mの符号が負数である時に第2のラップアドレス和(A+M)+(L+1)に等しい第2の出力を、キャリーアウト信号を供なって生成する第2の加算器と、
前記第1および第2の加算器からの前記キャリーアウト信号に応じて前記第1の出力または前記第2の出力を選択する選択論理とを含むことを特徴とする集積回路。
An integrated circuit,
A processor;
A register coupled to the processor for storing a current address A, an address offset M, and a buffer length value L;
An adder;
Memory,
A first circular buffer of the memory coupled to the processor and having an implicit lower address boundary X and containing addresses from X to (X + L), or having an implicit upper address boundary Y, from Y to (Y− An address generator for generating an address for a second circular buffer of the memory containing addresses up to L);
The address generator
According to the A, M and L, and in response to a control signal for selecting either the first circular buffer or the second circular buffer, a memory address for the memory location is calculated. ,
When the control signal selects the first circular buffer, the memory address corresponds to the sum of the current address A and the address offset M in the first circular buffer;
When the control signal selects the second circular buffer, the memory address corresponds to the sum of the current address A and the address offset M in the previous second circular buffer ;
The address generator
A first adder that produces a first output equal to the sum A + M with a carry-out signal;
Equal to the first wrap address sum (A + M) − (L + 1) when the sign of M is a positive number, or the second wrap address sum (A + M) + (L + 1) when the sign of M is a negative number A second adder that produces a second output equal to the output of the carry-out signal;
An integrated circuit comprising: selection logic for selecting the first output or the second output in response to the carry-out signals from the first and second adders ;
請求項に記載の集積回路において、
前記Lは、2進数で表した時にビット位置Nに先頭の1を有する値であり、前記暗示下限アドレス境界Xが前記現在アドレスAの低位のNビットを0で置換することによって計算され、前記暗示上限アドレス境界Yが前記現在アドレスAの低位のNビットを1で置換することによって計算されることを特徴とする集積回路。
The integrated circuit of claim 7 , wherein
The L is a value having a leading 1 in a bit position N when expressed in binary, and the implicit lower limit address boundary X is calculated by replacing the lower N bits of the current address A with 0, An integrated circuit, wherein an implied upper address boundary Y is calculated by replacing the low order N bits of the current address A with 1.
請求項に記載の集積回路において、
前記プロセッサが、デコーダを含み、命令に応じて、前記レジスタに前記値A、MおよびLを格納することを特徴とする集積回路。
The integrated circuit of claim 7 , wherein
An integrated circuit, wherein the processor includes a decoder, and stores the values A, M, and L in the register according to an instruction.
請求項に記載の集積回路において、
前記値Mおよび前記制御信号が前記レジスタの単一のレジスタに格納されることを特徴とする集積回路。
The integrated circuit of claim 7 , wherein
An integrated circuit, wherein the value M and the control signal are stored in a single register of the register.
請求項に記載の集積回路において、
前記第1の加算器は、
前記ビット位置Nにおいて、第1の出力をキャリーアウト信号を供なって、
前記第2の加算器は、
第2の出力を、前記ビット位置Nにおいて、キャリーアウト信号を供なって、
前記選択論理は、
前記第1および第2の加算器からの前記キャリーアウト信号を含む前記制御信号に応じて、前記第1の出力または前記第2の出力を選択することを特徴とする集積回路。
The integrated circuit of claim 8 , wherein
The first adder is
In the bit position N , the first output is provided with a carry-out signal ,
The second adder is
A second output is provided at the bit position N with a carry-out signal ,
The selection logic is
In response to said first and said control signal including the carry-out signal from the second adder, the first output or the integrated circuit, wherein the benzalkonium select the second output.
請求項11に記載の集積回路において、
前記選択論理が、
前記制御信号が前記第1のメモリアドレスに対して設定され、前記アドレスオフセットが正数であり、前記第1の加算器からの前記キャリーアウト信号も前記第2の加算器からの前記キャリーアウトも1でない場合、または、
前記制御信号が前記第1のメモリアドレスに対して設定され、前記アドレスオフセットが負数であり、前記第1の加算器からの前記キャリーアウト信号が1である場合、または、
前記制御信号が前記第2のメモリアドレスに対して設定され、前記アドレスオフセットが正数であり、前記第1の加算器からの前記キャリーアウト信号が0である場合、または、
前記制御信号が前記第2のメモリアドレスに対して設定され、前記アドレスオフセットが負数であり、前記第1の加算器および前記第2の加算器の両方からの前記キャリーアウト信号が1である場合に、
前記第1の加算器の出力を選択し、
前記制御信号が前記第1のメモリアドレスに対して設定され、前記アドレスオフセットが正数であり、前記第1の加算器または前記第2の加算器の少なくとも1つからの前記キャリーアウト信号が1である場合、または、
前記制御信号が前記第1のメモリアドレスに対して設定され、前記アドレスオフセットが負数であり、前記第1の加算器からの前記キャリーアウト信号が0である場合、または、
前記制御信号が前記第2のメモリアドレスに対して設定され、前記アドレスオフセットが正数であり、前記第1の加算器からの前記キャリーアウト信号が1である場合、または、
前記制御信号が前記第2のメモリアドレスに対して設定され、前記アドレスオフセットが負数であり、前記第1の加算器または前記第2の加算器の少なくとも1つからの前記キャリーアウト信号が0である場合に、
前記第2の加算器の出力を選択するように構成されることを特徴とする集積回路。
The integrated circuit of claim 11 , wherein
The selection logic is
The control signal is set for the first memory address, the address offset is a positive number, neither the carry-out signal from the first adder nor the carry-out from the second adder. If not 1, or
When the control signal is set for the first memory address, the address offset is negative, and the carry-out signal from the first adder is 1, or
When the control signal is set for the second memory address, the address offset is a positive number, and the carry-out signal from the first adder is zero, or
When the control signal is set for the second memory address, the address offset is negative, and the carry-out signal from both the first adder and the second adder is 1. In addition,
Selecting the output of the first adder;
The control signal is set for the first memory address, the address offset is a positive number, and the carry-out signal from at least one of the first adder or the second adder is 1 Or
When the control signal is set for the first memory address, the address offset is negative, and the carry-out signal from the first adder is zero, or
When the control signal is set for the second memory address, the address offset is a positive number, and the carry-out signal from the first adder is 1, or
The control signal is set for the second memory address, the address offset is negative, and the carry-out signal from at least one of the first adder or the second adder is zero. If there is
An integrated circuit configured to select an output of the second adder.
JP2002019152A 2002-01-28 2002-01-28 Address generator for annular address buffer and integrated circuit having the same Expired - Fee Related JP4142299B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002019152A JP4142299B2 (en) 2002-01-28 2002-01-28 Address generator for annular address buffer and integrated circuit having the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002019152A JP4142299B2 (en) 2002-01-28 2002-01-28 Address generator for annular address buffer and integrated circuit having the same

Publications (2)

Publication Number Publication Date
JP2003223357A JP2003223357A (en) 2003-08-08
JP4142299B2 true JP4142299B2 (en) 2008-09-03

Family

ID=27743153

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002019152A Expired - Fee Related JP4142299B2 (en) 2002-01-28 2002-01-28 Address generator for annular address buffer and integrated circuit having the same

Country Status (1)

Country Link
JP (1) JP4142299B2 (en)

Also Published As

Publication number Publication date
JP2003223357A (en) 2003-08-08

Similar Documents

Publication Publication Date Title
US5623621A (en) Apparatus for generating target addresses within a circular buffer including a register for storing position and size of the circular buffer
US6381668B1 (en) Address mapping for system memory
JP3599352B2 (en) Flexible N-way memory interleave scheme
US5381360A (en) Modulo arithmetic addressing circuit
KR920010914B1 (en) Integrated processor for the processing of word-wise receivable data
US6397318B1 (en) Address generator for a circular buffer
US5249148A (en) Method and apparatus for performing restricted modulo arithmetic
US5991868A (en) Apparatus and method for processing data with a plurality of flag groups
US6049858A (en) Modulo address generator with precomputed comparison and correction terms
US6141713A (en) Bus arbitrator with a hierarchical control structure
US6560691B2 (en) Modulus address generator and method for determining a modulus address
US6785798B2 (en) Method and system for circular addressing with efficient memory usage
US6604169B2 (en) Modulo addressing based on absolute offset
US5983333A (en) High speed module address generator
EP0530682A1 (en) Method and means for addressing a very large memory
EP0555382B1 (en) Address generator for circular buffer
KR20030055467A (en) A method for memory allocation using multi-level partition
US6047364A (en) True modulo addressing generator
US5918253A (en) Memory address generator
CA1115425A (en) Data processor with address extension
JP4142299B2 (en) Address generator for annular address buffer and integrated circuit having the same
US20020032845A1 (en) Array indexing with sequential address genarator for a multi-dimensional array having fixed address indices
US6895488B2 (en) DSP memory bank rotation
JP2018097719A (en) Data processing apparatus and access control method
US20050033939A1 (en) Address generation

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20041008

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041026

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050125

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20050412

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050811

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20051024

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20060127

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080509

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080612

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110620

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4142299

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110620

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120620

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130620

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees