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 PDFInfo
- 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
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
[0016]
For example, the
[0017]
For example, the instruction “ldx1, ar2, m2” is interpreted by the decoder of the
[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
[0019]
FIG. 2 (b) illustrates the implicit upper address boundary approach of the present invention.
[0020]
FIG. 2C shows an
[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
[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]
[0025]
[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.
[0028]
During hardware execution, state 1 (I + M <0) where M is negative is indicated by the lack of carry-out generated from I +
[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
[0030]
When the sign bit of M is 1, the output of the inverter 205 is supplied to the
[0031]
When the sign bit of M is 0, the output of the
[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
[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.
[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]
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,
[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
[0040]
When the sign bit of M is 1, the output of the
[0041]
When the sign bit of M is 0, the carry-out to the
[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
4). Programmable control signal from
The output is:
1. Next target address 414. This is used as the
[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.
[0044]
If the
[0045]
If the
[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 (
[0047]
If M is a positive number, signal 515 is selected by
[0048]
If M is a negative number, signal 517 is selected by
[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 .
前記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.
前記入力が、前記A、MおよびLを格納するレジスタを含むことを特徴とする装置。The apparatus of claim 1.
The apparatus wherein the input includes a register storing the A, M and L.
前記入力が、前記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.
前記選択論理が、
前記制御信号が前記第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.
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) |
-
2002
- 2002-01-28 JP JP2002019152A patent/JP4142299B2/en not_active Expired - Fee Related
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 | |
JPH05210579A (en) | Memory-interleave device and method | |
US5983333A (en) | High speed module address generator | |
EP0530682A1 (en) | Method and means for addressing a very large memory | |
US20020194452A1 (en) | Modulo addressing based on absolute offset | |
EP0555382B1 (en) | Address generator for circular buffer | |
KR20030055467A (en) | A method for memory allocation using multi-level partition | |
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 | |
KR19990037571A (en) | A data pointer for outputting an indirect addressing mode address in a single period and a method of providing 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 |
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 |