JP2004501470A - スキームレジスタを用いたメモリアドレスの生成 - Google Patents
スキームレジスタを用いたメモリアドレスの生成 Download PDFInfo
- Publication number
- JP2004501470A JP2004501470A JP2002504586A JP2002504586A JP2004501470A JP 2004501470 A JP2004501470 A JP 2004501470A JP 2002504586 A JP2002504586 A JP 2002504586A JP 2002504586 A JP2002504586 A JP 2002504586A JP 2004501470 A JP2004501470 A JP 2004501470A
- Authority
- JP
- Japan
- Prior art keywords
- register
- address
- scheme
- registers
- memory
- 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.)
- Withdrawn
Links
- 230000015654 memory Effects 0.000 title claims abstract description 116
- 238000000034 method Methods 0.000 claims abstract description 24
- 238000012937 correction Methods 0.000 claims abstract description 22
- 230000009977 dual effect Effects 0.000 claims description 11
- 230000004044 response Effects 0.000 claims description 7
- 238000012545 processing Methods 0.000 abstract description 13
- 230000006870 function Effects 0.000 description 10
- 238000013461 design Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000002596 correlated effect Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 239000000872 buffer Substances 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000003252 repetitive effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
Abstract
本発明による回路配列および方法は、スキームレジスタ(50)を用いて、複数の間接アドレスレジスタ(44)の中から、格納されているメモリアドレスをそれから取り出すべき一つを選択する。命令内に、その命令の処理の際に用いるべきアドレスが格納されている特定の間接アドレスレジスタ(44)の位置を格納する代わりに、命令は、スキームレジスタ(50)の位置を識別し、これを介して、格納されているアドレスを取り出すためにアクセスすべき複数の利用可能な間接アドレスレジスタ(44)の内の一つを識別するする。スキームレジスタ(50)は、例えば、デジタル信号処理アプリケーションにおいて、DSP命令内に複数の独立なアドレスを効率的に符号化するために用いられる。スキームレジスタ(50)内には、一つの実施例においては、間接アドレスレジスタ(44)を識別する情報以外の追加の情報は格納されないが、ただし、追加の情報、例えば、事後修正および/あるいはアクセスタイプ情報を格納し、異なる独立に生成されるアドレスに対して独立な事後修正およびアクセスのタイプを指定することもできる。
Description
【0001】
発明の分野
本発明は一般的には電子回路装置およびこれを組み込む集積回路、より詳細には、メモリスペースにアクセスする際のアドレスを生成するために用いるアドレス生成論理に関する。
【0002】
発明の背景
半導体製造技術の進歩とともに、集積回路の設計者は、単一の集積回路デバイスあるいはチップ内にますます多くの機能を集積化することが可能となっている。このため、かつては回路ボードあるいはモジュール上で互いに電気的に結合された複数の集積回路を必要とした電子設計も、今では単一の集積回路内に集積化できるようになっており、性能は向上し、コストは削減する結果となっている。
【0003】
離散回路から集積回路へと移行した一つの機能にデジタル信号処理がある。これは、概略的には、デジタル的に表現された信号への数学的演算の適用ということができる。デジタル信号処理は、多くのアプリケーション、例えば、オーディオおよび/あるいはビデオ信号に対するフィルタの実現、無線あるいは他のセルラ網内の通信信号からの情報の復号、その他において利用されている。
【0004】
半導体製造技術は、常に進歩しており、今日では、デジタル信号処理を遂行する論理回路は、専用のDSPアルゴリズムを実現する、ここではDSPプログラムと呼ばれるソフトウエアプログラムを実行する専用のデジタル信号プロセッサによって遂行されるようになっている。さらに、これらデジタル信号プロセッサは、追加の論理回路とともに、集積回路あるいはチップ内に埋め込まれ、さらなる性能の改善およびコストの削減が図られている。
【0005】
多くのデジタル信号処理タスクは、多量のデジタルデータに関して、反復的な、ただし、比較的単純な数学的演算を迅速に遂行することを要求されるという特徴を持つ。例えば、乗算累積(Multiply−Accumulate、MAC)演算は、2つのオペランド(operands)の乗算と、この結果の、ランしているアキュムレータ(running accumulator)への加算を遂行し、しばしば、単一のクロックサイクルにて遂行されるべきハードウエア論理として実現される。さらに、複数のMACユニッ トが、ある任意の与えられたクロックサイクルにおいて複数のMAC演算を遂行できるように設けられることもある。ただし、幾つかの複雑なフィルタリング動作においては、ある一つの時点においてたった一つの出力値を計算するために、数百あるいは数千のMAC動作を遂行することを要求されることもある。
【0006】
多くのDSP動作は反復的な性格を持つため、あるデジタル信号プロセッサによって、メモリから入力データを取り出す、並びに処理の後に、出力データをメモリ内に書き戻すことができる速度(しばしばメモリ帯域幅と呼ばれる)は、DSPシステムの全体としての性能に非常に大きな影響を与える。
【0007】
メモリ帯域幅を増加するための一つのやり方においては、複数の通信路あるいはバスが、デジタル信号プロセッサと異なるタイプのデータをやりとりするために用いられる。一例として、幾つかの従来のDSP設計においては、DSPプログラムデータと信号データは、別個のメモリスペースに分離され、DSPプログラム命令 と信号データを格納するために、別々にアクセス可能なプログラムメモリとデータメモリが用いられる。さらに、デジタル信号データは、任意の時点において与えられたメモリとの間で複数のデータポイントをやりとりできるように、複数のメモリスペース(しばしば「Y」および「Y」メモリスペースと呼ばれる)内に分割して格納される。さらに、ある与えられたメモリ内で複数のアクセス動作を並列に行なえるように、メモリへの複数のポートあるいはアクセス路が設けられる。
【0008】
一例として、幾つかの従来のDSP設計においては、ジュアルMACユニットが組み込まれ、このため、最大の効率を維持するためには、ある一つのデータメモリスペースへの(「X」と「Y」メモリスペースの各々に2つの)4つの経路が要求される。このため、サイクル毎に4つのメモリ位置にアクセスするため、各アクセスサイクルにおいて、4つのアドレスを生成し、メモリに出力することが必要となる。
【0009】
4つのアドレスを生成することは、通常は、回路の観点からは大きな問題とはならないが、ただし、あるプロセッサ命令、例えば、DSP命令内に4つのアドレスを符号化には、かなり大きな問題が伴う。DSP命令は、多くのプロセッサ命令と同様に、典型的には、命令のタイプ、およびしばしばその命令によって使用されるべきアドレシングモードを指定するオプコードフィールド(opcode field)、並びに、処理されるべきデータあるいはそれらデータが格納されている場所を指定する一つあるいは複数のオペランドフィールド(operand fields)を含む。DSP命令を符号化するために要求されるビット数は、ある命令セット内に利用できる命令の数、これら命令を処理するために要求される相互接続、論理ユニットおよびレジスタの(ビット)幅、およびプログラムメモリスペースのサイズに影響を持つために、任意の与えられたDSP命令内のアドレスを符号化するために要求されるビット数を最小化することが強く要請される。
【0010】
デュアルMACユニットを組み込む多くの従来のDSP設計においては、例えば、32−ビット命令が用いられ、デュアルMAC動作に対しては、MAC命令の14ビットがオプコードに割り当てられ(各MACユニットに対して7ビット)、全部で18ビット(各MACユニットに対する9ビット)が、4つのオペランドの位置と、結果を格納する場所を指定するために残される。
【0011】
典型的には、アドレスを符号化するために要求されるビット数を最小化するためには、間接アドレシング(indirect addressing)という形式が用いられるが、この形式においては、バンク(一群の)別個の間接アドレスレジスタ内に、所望のオペランドのアドレスがプレロードされ、MAC命令は、このバンク(一群)の中から、そこから所望のアドレスがロードされるべき一つあるいは複数の間接アドレスレジスタの位置を指定する。さらに、しばしば、アドレスの事後修正(address post−modification)をサポートすることも要求されるが、このアドレス事後修正においては、間接アドレスレジスタ内に格納されているアドレスが、それらアドレスがレジスタから出力された後に、自動的に修正される(例えば、一定の値だけ増分あるいは減分される)。
【0012】
間接アドレシングの使用にもかかわらず、一部には事後修正などの強化機能(enhancements)をサポートする必要性のために、ある与えられたDSP命令内に4つの独立なアドレスを符号化することはしばしば不可能となる。このため、しばしば、アドレスコーレレーション(address correlation)として知られる技法が用いられるが、この技法においては、たった2つのアドレスのみが独立に符号化および生成され、残りの2つのアドレスは、符号化されたアドレスを修正することで(例えば、符号化されたアドレスに一定のオフセットを加えることで)生成される。
【0013】
一例として、上述の従来のDSP設計の一つにおいては、以下のようなシンタックスを持つ間接アドレスMAC命令が使用される:
MAC(ri)+postmod,(rj)+postmod,am||MAC(ri〜),(rj〜),an
ここで、(ri)および(rj)は選択された間接アドレスレジスタriおよびrjを介して間接アドレシングを指定し、postmodは各格納されているアドレスに適用する事後修正を指定し、amおよびanは結果を加えるアキュムレータを指定し、(ri〜)およびと(rj〜)はコーレレーテッドアドレス(correlated addresses)を指定する。
【0014】
上述のMAC命令は、以下のテーブルIに示すように32−ビット命令として符号化される:
【表1】
【0015】
他のタイプの命令の場合も、ある与えられたサイクルにおいて4つのアドレスを生成するために、上述の技法を用いることもできる。ただし、このような技法の使用には幾つかの短所がある。
【0016】
第一に、コーレレーテッドアドレシング(correlated addressing)技法では、コーレレーテッドアドレス(correlated addresses)を介してアドレスされるデータが、符号化されたアドレスを介してアドレスされるデータから適当なオフセットだけ離れて配置されることを確保するためにデータを注意深く編成する必要があり、このため、データメモリスペース内のデータ編成が著しく制限される。さらに、しばしば、非効率なデータ転送のために失われるプロセッササイクルの数を最小化するために、プログラムコードの手動による最適化(hand optimization)が必要となる。
【0017】
第二に、上述の技法は、典型的には、独立なおよびコーレレーテッドアドレスからの全読出し、あるいはこれへの全書込みのみをサポートし、典型的には、標準でない組合せ、例えば、3個の読出しと1個の書込み、3個の書込みと1個の読出し等はサポートされない。このため、このような組合せが必要な場合、典型的には、複数の命令を用いて、これら組合せを、並列でなく、直列に処理することが必要となる。追加の命令が必要となるために、処理が遅くなることに加えて、しばしば、貴重なメモリ帯域幅が十分に活用されず、プロセッサのスループットが、本来の最大動作効率以下に低減される結果となる。
【0018】
従って、当分野においては、複数のメモリアドレスを生成およびこれにアクセスするためにあるプロセッサ命令内に要求されるビットの数を最小化するための方法に対する大きな必要性が引き続いて存在する。
【0019】
発明の要約
本発明は、従来の技術と関連するこれらおよびその他の問題を解決するために、格納されているメモリアドレスをそこから取り出すべき一つを複数の間接アドレスレジスタの中から選択するために「スキーム(scheme registers)」を利用する回路装置(circuit arrangement)および方法を開示する。この方法においては、命令内に、その命令の処理の際に使用されるべきアドレスがその内部に格納されている特定の間接アドレスレジスタの位置を識別する代わりに、命令は、スキームレジスタの位置を指定し、これによって、複数の利用可能な間接アドレスレジスタの内のどれが、格納されているアドレスを取り出すためにアクセスされるべきかを指定する。スキームレジスタによって提供される第二のレベルの間接性のために大きな柔軟性が得られ、ある命令内の最小のビット数にて複数の独立なアドレスを生成することが可能となる。
【0020】
本発明はデジタル信号処理アプリケーションに制限されるものではないが、本発明は、例えば、デジタル信号アプリケーションにおいて、ある与えられたDSP命令内に、複数の独立なアドレスを効率的に符号化する能力を提供する。一例として、デュアルMACアプリケーションに対しては、4つの独立なアドレスが生成されるが、これら4つのアドレスは別個の間接アドレスレジスタ内に格納され、これら4つの異なる間接アドレスレジスタが4つの異なるスキームレジスタ内の識別され、これら4つのスキームレジスタを識別することで、これら4つの独立なアドレスが取り出せるようにされる。
【0021】
加えて、本発明のある実施例によるスキームレジスタは、アドレスを生成(格納)するために用いられる間接アドレスレジスタの位置あるいは識別の他はなにも格納しないが、幾つかの実施例においては、機能を強化し、プロセッサ命令の効率をさらに高めるために、スキームレジスタ内に追加の情報が格納される。例えば、一つの実施例においては、スキームレジスタ内に事後修正情報を格納することで、独立に生成された各アドレスに関して独立な事後修正動作を遂行できるようにされる。さらに、もう一つの実施例においては、スキームレジスタ内に、例えば、ある動作が書込み動作であるか読込み動作であるかを指定するアクセスタイプ情報を格納することで、個々の独立に生成されたアドレスとの関連で別個のタイプのアクセスを遂行できるようにされる。
【0022】
こうして、本発明の一態様においては、各々がアドレスポインタを格納するように構成された複数の間接アドレスレジスタ、およびこれら複数の間接アドレスレジスタからある一つの選択された間接アドレスレジスタを選択する間接アドレスレジスタセレクタを格納するように構成された複数のスキームレジスタを備える回路装置が提供される。この回路装置はさらに、これら複数のスキームレジスタからある一つの選択されたスキームレジスタを選択する命令に応答してメモリアドレスを生成し、これを選択されたスキームレジスタ内に格納されている間接アドレスレジスタセレクタによって選択された、選択された間接アドレスレジスタ内に格納されているアドレスポインタからメモリにアクセスする際に用いるように構成されたアドレス生成論理を備える。
【0023】
本発明のもう一態様によると、メモリにアクセスするための方法が提供される。この方法は、命令を受信し、これを用いて複数のスキームレジスタからある一つの選択されたスキームレジスタを選択するステップ、選択されたスキームレジスタにアクセスすることで間接アドレスレジスタセレクタを得、これを用いて複数の間接アドレスレジスタからある一つの選択された間接アドレスレジスタを選択するステップ、選択された間接アドレスレジスタにアクセスすることでこの中に格納されているアドレスポインタを得るステップ、およびこのアドレスポインタを用いてメモリにアクセスするステップを含む。
【0024】
本発明を特徴付けるこれらおよびその他の長所および特徴が、この明細書に添付され、この明細書の部分を構成するクレーム内に述べられる。ただし、本発明、および本発明を用いて達成される長所および目的のより一層の理解するためには、以下では、本発明の様々な実施例を、図面を参照しながら説明する。
【0025】
発明の実施の形態
ここで説明される実施例は、プロセッサ命令を用いて複数の独立なアドレスを生成するために要求されるビット数を最小にするために、スキームレジスタを利用する。本発明によるスキームレジスタは、一つあるいは複数のアドレスを生成する際にアドレス生成器によって使用されるアドレシング「スキーム(scheme)」あるいは規則を格納するために利用される。スキームレジスタ内には、典型的には、セレクタが含まれ、これセレクタによって、複数の利用可能な間接レジスタの内の、そこからアドレス(これは、その後、このアドレスにてメモリにアクセスする前に修正されることも、されないこともある)を生成する際に用いる間接アドレスポイントが取り出されるべき一つの間接アドレスレジスタを識別する。加えて、スキームレジスタは、オプションとして、アドレシングスキームに関する追加の情報を含めることもできる。これには、例えば、(例えば、ステップ情報あるいはステップ情報がその中に格納されるステップレジスタを識別する、および/あるいはモジュロ情報あるいはその中にモジュロ情報が格納されるモジュロレジスタを識別する)事後修正情報、および/あるいは(例えば、読出し、書込み、その他可能な他のアクセスタイプを識別する)アクセスタイプ情報が含まれる。スキームレジスタ内には、本発明から逸脱することなく、アドレシングスキームと関連する他の情報を格納することもできる。
【0026】
以下の説明は、DSP環境内で並列メモリアクセスを遂行するために用いるための複数の独立なアドレスを生成する目的で、命令内に複数のアドレスを符号化する、本発明の一つの特定のアプリケーションに焦点が置かれる。より詳細には、以下の説明は、DSPプロセッサ内のXおよびYデータメモリへの4つの並列アクセスを遂行する際に用いるための4つの独立なアドレスの生成に焦点が置かれる。ただし、本発明は、この特定のアプリケーションに制限されるものではなく、DSP環境と非DSP環境の両方を含む、他の環境(例えば、古典的なマイクロプロセシング環境)においては、ここに説明の本発明によるユニークなアドレシングスキームを利用できるものである。
【0027】
図面の説明に戻り、類似の符号はこれら複数の図に渡って類似のパーツを示す。図1は本発明による回路装置10を示す。説明の実施例においては、回路装置10は単一の集積回路デバイスあるいはチップ上に実装されるが、ただし、別のやり方として、回路装置10内の様々な要素は、複数の別個のチップ上に実装することもできる。回路装置10は、デジタル信号プロセッサ(DSP)12を備え、これは、データバスインタフェース16を介してデータメモリ14とインタフェースする。データメモリ14は、図1に示すように、一つあるいは複数のデータスペース、例えば、XおよびYデータスペース18、20に分割され、後により明らかとなるように、各データスペース18、20は、2つの別個のメモリ路あるいはポートを持ち、これによって、各データスペース内の2つのメモリ位置(典型的には、Xデータスペースに対するX1およびX2として示される位置およびYデータスペースに対するY1およびY2として示される位置)に並列にアクセスできるようにされる。
【0028】
DSP12は、追加のメモリデバイスへのインタフェースも備える。プログラムコードは、例えば、インタフェース24を通じてDSP12に結合されたプログラムメモリ22に格納される。DSP12への外部からの接続性はインタフェース28を介してDSP12にインタフェースされた外部デバイスインタフェース26によって提供される。外部デバイスインタフェースは、一つあるいは複数の外部デバイス30へのインタフェースを提供する。外部デバイスは同一の集積回路上に配置することも、この回路の外側に配置し、この間を電気的に結ぶこともできる。このやり方にてアクセスされるタイプの外部デバイスの例としては、DSP周波数より低い周波数にて動作するアナログ/デジタルあるいはデジタル/アナログ変換器、デバグポート、チップの初期化段階において読み書きされるチップ構成レジスタ、ホストコンピュータへの(シリアルあるいはパラレル)通信ポート、あるいは高い周波数を必要としない任意の他のハードウエア資源が含まれる。
【0029】
各インタフェース16、24および28は、典型的には、各々のバスに結合するための終端ポイント、並びに適当なバスとの必要なインタフェースを実現するための適当なバッファおよび制御論理を含む。
【0030】
回路装置10は、単に、本発明によるスキームレジスタを利用するための多くの可能な環境の一つに過ぎず、従って、本発明はここで説明される特定の環境に制限されるものではないことに注意する。単に一例として、本発明は、不揮発性および揮発性ソリッドステートメモリデバイスにて実現されるメモリ、大容量記憶デバイスにて実現されるメモリ、回路装置10と同一の集積回路デバイス上に組み込まれたメモリあるいは外部メモリを含む、実質的にあらゆるタイプのメモリにアクセスするために用いる、メモリアドレスの生成に用いることができる。さらに、複数のメモリアドレスは、同一のメモリスペースあるいは分割内で用いるために生成することも、あるいは、異なるメモリスペースあるいは分割内で用いるために生成することもできる。さらに、メモリは任意の数の物理デバイスから形成することも、あるいは、マルチレベルメモリ階層に構成された複数のメモリレベルの任意に組合せから形成することもできる。当業者においては、この開示から、本発明との関連で用いるのに適するメモリアクセスの他の形態も明らかになるものと思われる。
【0031】
さらに、回路装置10は、典型的には、一つあるいは複数の集積回路デバイスあるいはチップ上に実装され、これら集積回路デバイスは、典型的には、一つあるいは複数のコンピュータデータファイルを用いて設計および製造されることに注意する。これらコンピュータデータファイルは、様々なレベルの詳細さにて、これらデバイス上の回路装置の機能および/あるいはレイアウトを定義し、ここではハードウエア定義プログラム(hardware definition programs)と呼ばれる。これらプログラムは、典型的には、設計ツールを用いて生成され、その後、シミュレーションのために、および/あるいは製造の際に、半導体ウェーハに塗布される回路装置を定義するレイアウトマスクを生成するために用いられる。これらプログラムは、典型的には、VHDL、Verilog、EDIFなどのハードウエア定義言語(HDL)を用いて所定のフォーマットにて供給される。こうして、本発明は、ここでは、完全に機能する集積回路デバイスとして実現された回路装置、およびこのようなデバイスを利用するデータ処理システムの文脈で説明されるが、当業者においては理解できるように、本発明による回路装置は、プログラム製品(program products)として様々な形態にて配布することもでき、本発明は、この配布を実際に遂行するために具体的にどのようなタイプの信号搬送媒体(signal bearing media)が用いられるかに関係なく、同様に、これらプログラム製品にも適用するものである。信号搬送媒体の例には、これに限定されるものではないが、記憶可能なタイプの媒体(recordable type media)、例えば、揮発性および不揮発性メモリデバイス、フロッピーディスク、ハードディスクドライブ、CD−ROM、DVD(その他)、および伝送タイプの媒体(transmission type media)、例えば、デジタルおよびアナログ通信リンクが含まれる。
【0032】
図2は、回路装置10内でのアドレス生成に関与する主要なコンポーネントをより詳細に示す。より具体的には、図示するように、DSP12は、プログラムメ モリ22から命令を受け取るように構成された命令デコーダ34を備える制御ユニット32を含む。デコーダ34は、デコードされた命令に基づいて、デュアルMultiply−Accumulate(MAC)ユニット38を含む計算ユニットとレジスタの複合体36を操作するための制御信号を生成する。これら計算ユニットおよびレジスタは、複数のメモリバスX1、X2、Y1およびY2を通じて、X、Yメモリスペース18、20に結合される。これら各メモリバスのデータ線は、ブロック36とX、Yメモリスペース18、20の各々との間で、典型的には双方向線を用いて結合されるが、、代替として対の単方向線を用いることもできる。各メモリバスに対するアドレス線はアドレス生成ユニット40によって駆動されるが、これは制御ユニット32の制御下に置かれる。4つの独立なアドレスを生成できるようにするために、アドレス生成ユニット40内には、複数のデータアドレス生成器(DAG)42が設けられる。命令デコーダ34からの適当な制御信号に応答して、一つあるいは複数のDAG42が、X1、X2、Y1および/あるいはY2メモリバス上にアドレスを出力するように制御される。
【0033】
アドレス生成ユニット40は、典型的には、本発明によるスキームレジスタを利用する間接アドレシングモード(indirect addressing mode)の形態も含む複数のアドレシングモードをサポートする。加えて、アドレス生成ユニット40は、典型的には、複数の追加の従来のアドレシングモード、例えば、直接アドレシング、(スキームレジスタは用いない)間接アドレシング、即座アドレシング等もサポートする。さらに、アドレス生成ユニット40は、典型的には、事後修正(post−modification)、ビット反転(bit reverse)およびモジュロ機能(modulus functions)などの機能を含む、上述のアドレシングモードに対する追加の強化機能(enhancements)もサポートするように構成される。さらに、アドレス生成ユニット40は、例えば、指標付アドレシングモード(indexed addressing mode)、スタックアドレシングモード(stack addressing mode)などを含む、他のアドレス生成機能もサポートする。ただし、これら従来のアドレシングモードおよび強化機能をサポートする目的でのアドレス生成ユニット(並びにアドレスの生成と関連する他の論理回路、例えば、命令デコーダ)の構成は、当分野において周知であるために、回路装置10内へのこのような従来のアドレシングモードおよび強化機能の実装に関する詳細はここでは割愛する。一例として、このようなアドレシングモードおよび機能は、DSPアーキテクチャ、例えば、DSP Group,Inc.から市販されるPalmDSPcoreアーキテクチャにて実装されるが、この使用および構成については当分野において周知である。
【0034】
図3は、DSP12によってサポートされる様々なアドレシングモードを実現するために、アドレス生成ユニット40内に実装される主要なレジスタを示す。より具体的には、各DAG42は、セットの間接アドレスレジスタ44、セットのステップレジスタ46、セットのモジュロレジスタ48およびセットのスキームレジスタ50を備える。加えて、アドレス生成ユニット40内には、ミニ/マックスレジスタ(MIXP)レジスタ52も設けられ、DSPによって実行される新たな最小あるいは最大命令のアドレスを示すために用いられる。ミニ/マックスレジスタ52の使用および構成は、当分野において周知であり、ユニット40内へのこのような機能の実装についてはここでは詳細には説明しない。
【0035】
説明の実施例においては、各DAG42は、それぞれ、4つの間接アドレスレジスタ44(R0..3)、ステップレジスタ46(S0..3)、モジュロレジスタ48(M0..3)およびスキームレジスタ50(SR0..3)を含み、こうして、これらタイプの全部で16個のレジスタが設けられる。各DAG42は、バスのアドレス線上に、適当なアドレス、並びに、READあるいはWRITE信号(例えば、X1メモリバスに対するRX1およびWX1)も出力するように構成される。
【0036】
さらに、説明の実施例においては、各レジスタは、命令デコーダから一連の制御信号54を通じて個別にアクセスすることができる。全部で65個のレジスタを持つ場合は、アドレス生成ユニット内の各レジスタに個別にアドレスするためには、全部で7ビットが必要となる。従って、命令デコーダとアドレス生成ユニットの間のインタフェースを提供するためには、アドレス生成ユニットに、65の利用可能なレジスタの一つを選択するために、7−ビット幅のREGISTER NUMBER信号が提供される。あるレジスタの内容の読出しあるいはあるレジスタへの新たな内容の書込みは、READおよびWRITE信号によって制御され、読出しアクセスに応答してのレジスタの内容はOUTPUTバスを通じて供給され、書込みアクセスの際のレジスタへの新たなデータはINPUTバスを通じて供給される。さらに、アドレス生成ユニット40は、様々な制御信号を同期するため、および命令デコーダがアドレス生成ユニット40を制御できるようにするための、CLOCK信号を受信するように構成される。
【0037】
各レジスタ44、46、48および50は、任意のビット数の異なる幅を持つことができる。典型的には、各間接アドレスレジスタ44は、メモリスペースのサイズに等しい幅を持つ。一例として、説明の実施例は、64KBのメモリスペースを用い(XとYメモリスペースの各々に32KBが割り当てられ、各メモリスペース内に設けられる2つの独立なバンクにてメモリスペース当たり2つの同時アクセスがサポートされる)、このため、各間接アドレスレジスタ44は、典型的には、16−ビット幅を持つ。
【0038】
各モジュロレジスタ48は、典型的には、モジュロアドレスとバッファサイズをここに格納することができるように、メモリスペースのサイズの2倍に等しい幅を持つ。例えば、64Kのメモリスペースの場合は、各ステップレジスタ46とスキームレジスタ50も16−ビット幅を持つが、ただし、多くの場合、16−ビットの情報は必要とされず、このため、これら各レジスタは集積回路デバイス上のこの回路装置によって占められるスペースを節約するためにこれより小さなビット幅とされる。
【0039】
レジスタ44〜50の任意の一つを初期化するためには、典型的には、あるレジスタは、REGISTER NUMBER制御線上でその一意なレジスタ番号を主張する(有効にする、assertする)ことで、その一意なレジスタ番号を介して選択される。選択されたレジスタ内に書込まれるデータは、INPUT線上に主張される。次に、WRITE信号が主張された(有効にされた)時点で、主張されたデータが次のクロックサイクルにおいて選択されたレジスタ内に書込まれる。レジスタの内容の読出しは、OUTPUT線とREAD信号を、REGISTER NUMBER線との関連で用いる相補的動作を介して遂行される。
【0040】
図4はDAG42の一つの一例としての実装をより詳細に示す。図示するように、図4のDAG42は、命令デコーダから出力される命令信号(INST)と制御信号(CTRL)に応答する。これも図示されるように、DAG42はアドレス出力(ADDR)を出力する。ここで特に詳しく説明される追加の間接アドレシングモードとは特に関係のない追加の制御信号は簡潔さのために省かれている。
【0041】
間接アドレスレジスタ44は、間接アドレスポインタを格納するが、デコーダ62を介して制御されるマルチプレクサ60に結合される。ステップレジスタ46も同様に、デコーダ66を介して制御されるマルチプレクサ64に結合される。こうして、選択された間接アドレスポインタの出力は、マルチプレクサ60によって、デコーダ62から加えられる制御信号に基づいて供給され、こうして、出力アドレスADDRが生成される。事後修正(post−modification)の目的で、出力アドレスは、加算器(summer)68にも供給される。加算器68は、ステップレジスタ46の一つの中に格納されていおり、マルチプレクサ64とデコーダ66を介して選択されたオフセットも受け取る。各ステップレジスタは、例えば、(事後修正なしを表す)NULL値、正のオフセットあるいは負のオフセットを含む。加算器68の出力は、出力アドレスと選択されたステップレジスタの内容の合計から成り、(現在の命令に対してこのモードが選択されている場合は)、オプションとしてのモジュロ計算(modulus calculation)を遂行するために、モジュロレジスタ論理(modulus register logic)70にパスされる。各モジュロレジスタ48は、モジュロレジスタ論理70内に実装され、この論理は、アドレスが所定の最大アドレスを超えたときアドレスを「ロールオーバ(roll over)」するために用いられる。
【0042】
当分野において周知のモジュロアドレシング(modulus addressing)は、通常は、メモリスペース内に巡回バッファを実現する。説明の実施例に対しては、周知の任意のモジュロアルゴリズム(modulus algorithms)を用いることができる。例えば、モジュロレジスタ内に、開始アドレスと、実現されるべき巡回バッファのサイズを表す長さの両方を格納することが必要となることがある。この場合、モジュロレジスタ論理は、加算器68の内容を、開始アドレスと長さの合計と比較する。加算器68の出力が、この合計より小さなときは、この出力はモジュロレジスタ論理70から変更なしにパスされる。そうでない場合は、選択されたモジュロレジスタ内に指定される開始アドレスが、モジュロレジスタ論理70の結果として出力される。代替として他のモジュロアドレシング方式を用いることも、別のやり方としてモジュロアドレシングは省くこともできる。さらに、様々な異なるモジュロアルゴリズムをアドレス発生ユニット内に実現することもできるが、これらは当業者においては周知であり、このためここではこれ以上の説明は割愛する。
【0043】
モジュロレジスタ論理70の出力は間接アドレスレジスタ44に戻され、こうして、出力アドレスに対して加えられた修正が現在選択されている間接アドレスレジスタ内に保存され、格納されているアドレスポインタが事後修正される。
【0044】
上述のように、各DAG42によって、2つの異なる間接アドレシングモードがサポートされる。第一の間接アドレシングモードは、スキームレジスタは用いず、命令内に符号化されている情報を用いて、間接アドレスレジスタと、オプションとして、ステップレジスタが選択される。第二のアドレシングモードにおいては、スキームレジスタ50を用いて、各間接アドレスレジスタが選択され、選択された間接アドレスレジスタの内容に基づいてステップレジスタが選択される。この2つのモードのどちらを用いるかは、対のセレクタ72、74を介して制御され、これらは、デコーダ62と66を介して、間接アドレスレジスタとステップレジスタの選択を制御する。
【0045】
セレクタ72は、入力として命令デコーダからのINST信号を受信するとともに、マルチプレクサ76からデコーダ78の制御下で追加の入力を受信する。マルチプレクサ76は、スキームレジスタ50の内容を受信し、これらレジスタの一つの内容をセレクタ72に出力するように構成される。
【0046】
どちらの間接アドレスモードが用いられるか(これは現在の命令内に符号化されている)によって、CTRL信号が選択的に有効(assert)あるいは無効(deassert)にされ、これに基づいてセレクタ72が制御され、セレクタ72はこれに基づいて、命令デコーダからのINST信号内に供給される命令復号情報か、スキームレジスタの出力のいずれかを間接アドレスレジスタの一つを選択するための制御信号として選択し、この制御信号に基づいて選択された間接アドレスレジスタが、DAGに対する出力アドレスを生成するために用いられる。このCTRL信号は、さらに、セレクタ74を制御するためにも用いられる。セレクタ74は、これに基づいて、第一の間接アドレシングモードにおいて命令内に生成され、INST信号にて供給されるステップレジスタ選択情報か、スキームレジスタ内に格納されているステップレジスタ選択情報のいずれかをデコーダ66に出力し、デコーダ66は、この情報に基づいて適当なステップレジスタを選択する。
【0047】
こうして、選択された間接アドレシングモードに依存して、選択されたスキームレジスタの内容か命令の内容のいずれかを用いて、間接アドレスレジスタとステップレジスタの各々が選択され、これらが、出力アドレスを生成するため、および出力アドレスを事後修正するために用いられる。
【0048】
図5は、例えば、図4のデータアドレス生成器(DAG)42内のセットのスキームレジスタからの一つのスキームレジスタ50に対する一例としてのフォーマットを示す。説明の実施例においては、スキームレジスタ50は、5ビットという少ないビットを用いて実現されるか、あるいは追加のビットも用意されるが、ただし使用しない場合は無効(null)にセットされる。2ビットは、一つの間接アドレスレジスタ(ri)を利用可能な4つの中から選択し、追加の2ビットは、4つのステップレジスタ(si)の一つを選択する。第五のビットは、アクセスタイプ、ここでは、READあるいはWRITE動作を選択するために用いられる。第二の間接アドレシングモードにおいては、アクセスタイプビットの内容が、READあるいはWRITE信号のいずれかを選択的に適当なアドレスバス上に駆動(供給)するために用いられる。
【0049】
本発明から逸脱することなく、各スキームレジスタ内に様々な代替フォーマットを用いることもできる。例えば、ある与えられたタイプに対して異なる数のレジスタが利用できる場合は、これらレジスタの任意の一つを選択するために、異なる数のビットを割り当てることもできる(例えば、8個の間接アドレスレジスタの中から1つを選択するために3ビットを用いることもできる)。さらに、ステップレジスタ選択フィールドは用いないことも、別個のステップレジスタを識別する代わりに、ステップ情報をスキームレジスタ内に直接格納することもできる。さらに、追加のアクセスタイプ情報を、例えば、異なる優先のアクセス等を選択するために格納することもでき、この場合は、アクセスタイプフィールドは追加のビットを含む。他の実施例として、アクセスタイプフィールドは用いないこともできる。別の実施例として、追加の情報、例えば、ビット反転情報、モジュロ情報(例えば、モジュロレジスタセレクタ、あるいはモジュロアドレスおよび/あるいはサイズ情報)等も各スキームレジスタ内に格納することもできる。
【0050】
図1〜5に示す構成とすることで、間接アドレシングスキームは極めて効率的かつコンパクトとなり、命令内の最小のビットにて、4つの独立なアドレスを生成することが可能となる。一例として、図6はデュアルMAC命令を実現するのに適する一例としての命令シンタックス82を示す。4つの独立なアドレスの生成を必要とする他の命令も、類似のフォーマットを用いることができる。
【0051】
図6に示すように、4つのスキームレジスタの選択は8ビットのみで指定され、各メモリバスに対する2ビットにて各バスに対して割り当てられる4つの利用可能なスキームレジスタの中から1つが選択される。加えて、追加の2ビットにて、それぞれ、結果アキュムレータが指定される。これからわかるように、デュアルMACに対するオペランドあるいは類似の命令は12ビットのみで指定され、32−ビット命令内の20個のフルビットがオプコードおよび他の必要な情報に対して残される。
【0052】
当業者においては理解できるように、様々な代替の命令フォーマットを用いることも可能であり、従って、本発明はここに説明される特定のフォーマットに制限されるものではない。
【0053】
DSPアルゴリズムの第二のアドレシングモードを利用するためには、典型的には、DSPプログラムを用いて、所望の機能を実現するために必要とされる適当な間接アドレスレジスタ、ステップレジスタ、およびスキームレジスタを初期化することが必要となる。この初期化は、図3との関連で上で説明したインタフェースを用いて遂行される。次に、スキームレジスタの間接アドレシングモードを用いてメモリアクセスを遂行することが必要とされる場合は、各メモリバスに対してスキームレジスタを選択を指定する命令が供給される。
【0054】
スキームレジスタをここに説明のやり方にて用いることの一つの重要な長所は、信号処理の最も顕著な特性の一つである規則性(regularity)から得られる。より具体的には、メモリのデータの順序(data ordering)は、典型的には常に同一であり、多くの場合、このアドレシングモードにおいて要求される4つのアドレスは、性能要件が最大で、任意の損失サイクルが重大な影響を及ぼすループ(loop)にて必要とされる。さらに、信号処理ループ(signal processing loop)においては、プロセッサは、典型的には、規則的なアドレス規則(regular addressing law)にてデータ配列にアクセスする。スキームレジスタを用いた場合は、この規則をループの開始においてスキームレジスタ内にプログラムすることができ、このため、ループの実行の際は、各命令内にアクセスタイプおよび/あるいは事後修正情報などの情報を供給するためのプログラムコードは必要とされない。こうして、命令内にアクセスタイプおよび/あるいは事後修正情報などを供給する必要がなくなるため、命令をよりコンパクトにすること、並びにシステム資源の最大化が可能となる。
【0055】
図7は、上述のスキームレジスタの間接アドレシングモードを利用する一例としてのメモリアクセスをより詳細に示す。「MAC SR3,SR2,A1||MAC SR2,SR1,A3」なるフォーマットを持つ一例としての命令90が示される。この命令の二進表現は、各MAC命令に対するオプコード、並びに(各MACに対して全部で4個のアキュムレータがサポートされると想定したとき)結果を受け取るためのA1およびA3アキュムレータの選択、第一のMAC命令に対するSR3およびSR2スキームレジスタの選択、および第二の動作に対するSR2およびSR1スキームレジスタの選択を含む。図7は、より具体的には、X1メモリバスに対するアドレスの生成を示し、この命令90内には、スキームレジスタSR3が指定されている。説明の目的に対しては、スキームレジスタSR3は、この中に「READ」アクセスタイプを格納しており、ステップレジスタS1と、間接アドレスレジスタR2が選択されており、ステップレジスタS1内には、+3なるステップ値が格納されており、間接アドレスレジスタR2内には、16進アドレス「95A0」を指すポインタが格納されているものと想定される。このため、命令90に応答して、バスX1に対するアドレスの生成は、最初に、スキームレジスタSR3を選択することから開始され、この結果として間接アドレスレジスタR2が選択され、さらにこの結果として、間接アドレスレジスタR2の内容、つまり、アドレス「95A0」が、出力アドレス92として出力される。加えて、事後修正を遂行するために、この出力アドレスが、加算器68内でステップレジスタS1内に格納されているオフセットと加算され、結果として「95A3」なる事後修正されたアドレス94が得られる。この事後修正されたアドレスが次に間接アドレスレジスタR2に格納される。こうして、スキームレジスタSR3を指定する次のアクセスにおいては、この出力アドレスが間接アドレスレジスタR2の新たな内容となる。
【0056】
ここに説明の実施例は従来の設計と比較して幾つかの長所を持つ。上述のように、これらスキームレジスタを用いることで、命令内の最少のビットにて、複数の独立なアドレスを並列に生成することが可能となる。加えて、コンパクトな命令にて独立なアドレスを生成する能力の増加のために、コーレレーテッドアドレス(correlated addresses)の生成と関連する制約を回避することができる。加えて、多くのケースにおいて、従来の設計と比較してアドレスの復号を著しく簡素化することができる。さらに、スキームレジスタを実現するために要求される追加の論理およびこのための制御論理はDSP回路装置のサイズに対して僅かである。
【0057】
さらに、各スキームレジスタ内に別個のステップ情報を供給できる能力のために、生成されたアドレスに対して独立な事後修正動作を遂行することが可能となり、このためメモリ編成面での追加の柔軟性が得られる。さらに、各スキームレジスタ内に別個のアクセス情報を供給できる能力のために、アクセスタイプの任意の組合せ、例えば、4 reads/0 writes、3 reads/1 writes、2 reads/2 writes等をサポートすることが可能となり、このためメモリ帯域幅を最大化が可能となる。
【0058】
本発明の精神および範囲から逸脱することなく、説明の実施例に対して様々な修正を施すことが可能である。例えば、様々な設計において、任意の数の同時アドレス生成器、並びに、任意の数のスキームレジスタ、間接アドレスレジスタ、ステップレジスタおよび/あるいはモジュロレジスタをサポートすることができる。さらに、追加の機能、例えば、同一のメモリアドレスへの同時書込みを禁止する書込衝突論理(write conflict logic)をサポートすることもできる。
【0059】
当業者においては他の修正も明らかであり、従って、本発明の範囲はクレームによってのみ定義されるものである。
【図面の簡単な説明】
【図1】
本発明によるデジタル信号プロセッサ(DSP)回路装置のブロック図である。
【図2】
図1のDSP回路装置内でアドレス生成のために用いられる主要コンポーネントのブロック図である。
【図3】
図2のDSP回路装置内のレジスタおよびこれらレジスタを初期化するために利用される制御入力のブロック図である。
【図4】
図3のアドレス生成ユニット内のデータアドレス生成器の一つのブロック図である。
【図5】
図4のデータアドレス生成器内のスキームレジスタの一例としての構成を示す図である。
【図6】
図1のDSP回路装置内で用いるための一例としてのDSP命令のフォーマットを示す図である。
【図7】
図1のDSP回路装置によって遂行される一例としての間接メモリアクセスを示す図である。
【符号の説明】
10 回路構成
12 デジタル信号プロセッサ(DSP)
14 データメモリ
16 データバスインタフェース
18 Xデータスペース18
20 Yデータスペース20
22 プログラムメモリ
24 インタフェース
26 外部デバイスインタフェース
28 インタフェース
30 外部デバイス
32 制御ユニット
34 命令デコーダ
36 計算ユニット/レジスタ
38 デュアルMultiply−Accumulate(MAC)ユニット
40 アドレス生成ユニット
42 データアドレス生成器(DAG)
44 間接アドレスレジスタ
46 ステップレジスタ
48 モジュロレジスタ
50 スキームレジスタ
52 ミニ/マックスレジスタ(MIXP)レジスタ
54 制御信号
60 マルチプレクサ
62 デコーダ
64 マルチプレクサ
66 デコーダ
68 加算器
70 モジュロレジスタ論理
72 セレクタ
74 セレクタ
82 命令シンタックス
90 命令
発明の分野
本発明は一般的には電子回路装置およびこれを組み込む集積回路、より詳細には、メモリスペースにアクセスする際のアドレスを生成するために用いるアドレス生成論理に関する。
【0002】
発明の背景
半導体製造技術の進歩とともに、集積回路の設計者は、単一の集積回路デバイスあるいはチップ内にますます多くの機能を集積化することが可能となっている。このため、かつては回路ボードあるいはモジュール上で互いに電気的に結合された複数の集積回路を必要とした電子設計も、今では単一の集積回路内に集積化できるようになっており、性能は向上し、コストは削減する結果となっている。
【0003】
離散回路から集積回路へと移行した一つの機能にデジタル信号処理がある。これは、概略的には、デジタル的に表現された信号への数学的演算の適用ということができる。デジタル信号処理は、多くのアプリケーション、例えば、オーディオおよび/あるいはビデオ信号に対するフィルタの実現、無線あるいは他のセルラ網内の通信信号からの情報の復号、その他において利用されている。
【0004】
半導体製造技術は、常に進歩しており、今日では、デジタル信号処理を遂行する論理回路は、専用のDSPアルゴリズムを実現する、ここではDSPプログラムと呼ばれるソフトウエアプログラムを実行する専用のデジタル信号プロセッサによって遂行されるようになっている。さらに、これらデジタル信号プロセッサは、追加の論理回路とともに、集積回路あるいはチップ内に埋め込まれ、さらなる性能の改善およびコストの削減が図られている。
【0005】
多くのデジタル信号処理タスクは、多量のデジタルデータに関して、反復的な、ただし、比較的単純な数学的演算を迅速に遂行することを要求されるという特徴を持つ。例えば、乗算累積(Multiply−Accumulate、MAC)演算は、2つのオペランド(operands)の乗算と、この結果の、ランしているアキュムレータ(running accumulator)への加算を遂行し、しばしば、単一のクロックサイクルにて遂行されるべきハードウエア論理として実現される。さらに、複数のMACユニッ トが、ある任意の与えられたクロックサイクルにおいて複数のMAC演算を遂行できるように設けられることもある。ただし、幾つかの複雑なフィルタリング動作においては、ある一つの時点においてたった一つの出力値を計算するために、数百あるいは数千のMAC動作を遂行することを要求されることもある。
【0006】
多くのDSP動作は反復的な性格を持つため、あるデジタル信号プロセッサによって、メモリから入力データを取り出す、並びに処理の後に、出力データをメモリ内に書き戻すことができる速度(しばしばメモリ帯域幅と呼ばれる)は、DSPシステムの全体としての性能に非常に大きな影響を与える。
【0007】
メモリ帯域幅を増加するための一つのやり方においては、複数の通信路あるいはバスが、デジタル信号プロセッサと異なるタイプのデータをやりとりするために用いられる。一例として、幾つかの従来のDSP設計においては、DSPプログラムデータと信号データは、別個のメモリスペースに分離され、DSPプログラム命令 と信号データを格納するために、別々にアクセス可能なプログラムメモリとデータメモリが用いられる。さらに、デジタル信号データは、任意の時点において与えられたメモリとの間で複数のデータポイントをやりとりできるように、複数のメモリスペース(しばしば「Y」および「Y」メモリスペースと呼ばれる)内に分割して格納される。さらに、ある与えられたメモリ内で複数のアクセス動作を並列に行なえるように、メモリへの複数のポートあるいはアクセス路が設けられる。
【0008】
一例として、幾つかの従来のDSP設計においては、ジュアルMACユニットが組み込まれ、このため、最大の効率を維持するためには、ある一つのデータメモリスペースへの(「X」と「Y」メモリスペースの各々に2つの)4つの経路が要求される。このため、サイクル毎に4つのメモリ位置にアクセスするため、各アクセスサイクルにおいて、4つのアドレスを生成し、メモリに出力することが必要となる。
【0009】
4つのアドレスを生成することは、通常は、回路の観点からは大きな問題とはならないが、ただし、あるプロセッサ命令、例えば、DSP命令内に4つのアドレスを符号化には、かなり大きな問題が伴う。DSP命令は、多くのプロセッサ命令と同様に、典型的には、命令のタイプ、およびしばしばその命令によって使用されるべきアドレシングモードを指定するオプコードフィールド(opcode field)、並びに、処理されるべきデータあるいはそれらデータが格納されている場所を指定する一つあるいは複数のオペランドフィールド(operand fields)を含む。DSP命令を符号化するために要求されるビット数は、ある命令セット内に利用できる命令の数、これら命令を処理するために要求される相互接続、論理ユニットおよびレジスタの(ビット)幅、およびプログラムメモリスペースのサイズに影響を持つために、任意の与えられたDSP命令内のアドレスを符号化するために要求されるビット数を最小化することが強く要請される。
【0010】
デュアルMACユニットを組み込む多くの従来のDSP設計においては、例えば、32−ビット命令が用いられ、デュアルMAC動作に対しては、MAC命令の14ビットがオプコードに割り当てられ(各MACユニットに対して7ビット)、全部で18ビット(各MACユニットに対する9ビット)が、4つのオペランドの位置と、結果を格納する場所を指定するために残される。
【0011】
典型的には、アドレスを符号化するために要求されるビット数を最小化するためには、間接アドレシング(indirect addressing)という形式が用いられるが、この形式においては、バンク(一群の)別個の間接アドレスレジスタ内に、所望のオペランドのアドレスがプレロードされ、MAC命令は、このバンク(一群)の中から、そこから所望のアドレスがロードされるべき一つあるいは複数の間接アドレスレジスタの位置を指定する。さらに、しばしば、アドレスの事後修正(address post−modification)をサポートすることも要求されるが、このアドレス事後修正においては、間接アドレスレジスタ内に格納されているアドレスが、それらアドレスがレジスタから出力された後に、自動的に修正される(例えば、一定の値だけ増分あるいは減分される)。
【0012】
間接アドレシングの使用にもかかわらず、一部には事後修正などの強化機能(enhancements)をサポートする必要性のために、ある与えられたDSP命令内に4つの独立なアドレスを符号化することはしばしば不可能となる。このため、しばしば、アドレスコーレレーション(address correlation)として知られる技法が用いられるが、この技法においては、たった2つのアドレスのみが独立に符号化および生成され、残りの2つのアドレスは、符号化されたアドレスを修正することで(例えば、符号化されたアドレスに一定のオフセットを加えることで)生成される。
【0013】
一例として、上述の従来のDSP設計の一つにおいては、以下のようなシンタックスを持つ間接アドレスMAC命令が使用される:
MAC(ri)+postmod,(rj)+postmod,am||MAC(ri〜),(rj〜),an
ここで、(ri)および(rj)は選択された間接アドレスレジスタriおよびrjを介して間接アドレシングを指定し、postmodは各格納されているアドレスに適用する事後修正を指定し、amおよびanは結果を加えるアキュムレータを指定し、(ri〜)およびと(rj〜)はコーレレーテッドアドレス(correlated addresses)を指定する。
【0014】
上述のMAC命令は、以下のテーブルIに示すように32−ビット命令として符号化される:
【表1】
【0015】
他のタイプの命令の場合も、ある与えられたサイクルにおいて4つのアドレスを生成するために、上述の技法を用いることもできる。ただし、このような技法の使用には幾つかの短所がある。
【0016】
第一に、コーレレーテッドアドレシング(correlated addressing)技法では、コーレレーテッドアドレス(correlated addresses)を介してアドレスされるデータが、符号化されたアドレスを介してアドレスされるデータから適当なオフセットだけ離れて配置されることを確保するためにデータを注意深く編成する必要があり、このため、データメモリスペース内のデータ編成が著しく制限される。さらに、しばしば、非効率なデータ転送のために失われるプロセッササイクルの数を最小化するために、プログラムコードの手動による最適化(hand optimization)が必要となる。
【0017】
第二に、上述の技法は、典型的には、独立なおよびコーレレーテッドアドレスからの全読出し、あるいはこれへの全書込みのみをサポートし、典型的には、標準でない組合せ、例えば、3個の読出しと1個の書込み、3個の書込みと1個の読出し等はサポートされない。このため、このような組合せが必要な場合、典型的には、複数の命令を用いて、これら組合せを、並列でなく、直列に処理することが必要となる。追加の命令が必要となるために、処理が遅くなることに加えて、しばしば、貴重なメモリ帯域幅が十分に活用されず、プロセッサのスループットが、本来の最大動作効率以下に低減される結果となる。
【0018】
従って、当分野においては、複数のメモリアドレスを生成およびこれにアクセスするためにあるプロセッサ命令内に要求されるビットの数を最小化するための方法に対する大きな必要性が引き続いて存在する。
【0019】
発明の要約
本発明は、従来の技術と関連するこれらおよびその他の問題を解決するために、格納されているメモリアドレスをそこから取り出すべき一つを複数の間接アドレスレジスタの中から選択するために「スキーム(scheme registers)」を利用する回路装置(circuit arrangement)および方法を開示する。この方法においては、命令内に、その命令の処理の際に使用されるべきアドレスがその内部に格納されている特定の間接アドレスレジスタの位置を識別する代わりに、命令は、スキームレジスタの位置を指定し、これによって、複数の利用可能な間接アドレスレジスタの内のどれが、格納されているアドレスを取り出すためにアクセスされるべきかを指定する。スキームレジスタによって提供される第二のレベルの間接性のために大きな柔軟性が得られ、ある命令内の最小のビット数にて複数の独立なアドレスを生成することが可能となる。
【0020】
本発明はデジタル信号処理アプリケーションに制限されるものではないが、本発明は、例えば、デジタル信号アプリケーションにおいて、ある与えられたDSP命令内に、複数の独立なアドレスを効率的に符号化する能力を提供する。一例として、デュアルMACアプリケーションに対しては、4つの独立なアドレスが生成されるが、これら4つのアドレスは別個の間接アドレスレジスタ内に格納され、これら4つの異なる間接アドレスレジスタが4つの異なるスキームレジスタ内の識別され、これら4つのスキームレジスタを識別することで、これら4つの独立なアドレスが取り出せるようにされる。
【0021】
加えて、本発明のある実施例によるスキームレジスタは、アドレスを生成(格納)するために用いられる間接アドレスレジスタの位置あるいは識別の他はなにも格納しないが、幾つかの実施例においては、機能を強化し、プロセッサ命令の効率をさらに高めるために、スキームレジスタ内に追加の情報が格納される。例えば、一つの実施例においては、スキームレジスタ内に事後修正情報を格納することで、独立に生成された各アドレスに関して独立な事後修正動作を遂行できるようにされる。さらに、もう一つの実施例においては、スキームレジスタ内に、例えば、ある動作が書込み動作であるか読込み動作であるかを指定するアクセスタイプ情報を格納することで、個々の独立に生成されたアドレスとの関連で別個のタイプのアクセスを遂行できるようにされる。
【0022】
こうして、本発明の一態様においては、各々がアドレスポインタを格納するように構成された複数の間接アドレスレジスタ、およびこれら複数の間接アドレスレジスタからある一つの選択された間接アドレスレジスタを選択する間接アドレスレジスタセレクタを格納するように構成された複数のスキームレジスタを備える回路装置が提供される。この回路装置はさらに、これら複数のスキームレジスタからある一つの選択されたスキームレジスタを選択する命令に応答してメモリアドレスを生成し、これを選択されたスキームレジスタ内に格納されている間接アドレスレジスタセレクタによって選択された、選択された間接アドレスレジスタ内に格納されているアドレスポインタからメモリにアクセスする際に用いるように構成されたアドレス生成論理を備える。
【0023】
本発明のもう一態様によると、メモリにアクセスするための方法が提供される。この方法は、命令を受信し、これを用いて複数のスキームレジスタからある一つの選択されたスキームレジスタを選択するステップ、選択されたスキームレジスタにアクセスすることで間接アドレスレジスタセレクタを得、これを用いて複数の間接アドレスレジスタからある一つの選択された間接アドレスレジスタを選択するステップ、選択された間接アドレスレジスタにアクセスすることでこの中に格納されているアドレスポインタを得るステップ、およびこのアドレスポインタを用いてメモリにアクセスするステップを含む。
【0024】
本発明を特徴付けるこれらおよびその他の長所および特徴が、この明細書に添付され、この明細書の部分を構成するクレーム内に述べられる。ただし、本発明、および本発明を用いて達成される長所および目的のより一層の理解するためには、以下では、本発明の様々な実施例を、図面を参照しながら説明する。
【0025】
発明の実施の形態
ここで説明される実施例は、プロセッサ命令を用いて複数の独立なアドレスを生成するために要求されるビット数を最小にするために、スキームレジスタを利用する。本発明によるスキームレジスタは、一つあるいは複数のアドレスを生成する際にアドレス生成器によって使用されるアドレシング「スキーム(scheme)」あるいは規則を格納するために利用される。スキームレジスタ内には、典型的には、セレクタが含まれ、これセレクタによって、複数の利用可能な間接レジスタの内の、そこからアドレス(これは、その後、このアドレスにてメモリにアクセスする前に修正されることも、されないこともある)を生成する際に用いる間接アドレスポイントが取り出されるべき一つの間接アドレスレジスタを識別する。加えて、スキームレジスタは、オプションとして、アドレシングスキームに関する追加の情報を含めることもできる。これには、例えば、(例えば、ステップ情報あるいはステップ情報がその中に格納されるステップレジスタを識別する、および/あるいはモジュロ情報あるいはその中にモジュロ情報が格納されるモジュロレジスタを識別する)事後修正情報、および/あるいは(例えば、読出し、書込み、その他可能な他のアクセスタイプを識別する)アクセスタイプ情報が含まれる。スキームレジスタ内には、本発明から逸脱することなく、アドレシングスキームと関連する他の情報を格納することもできる。
【0026】
以下の説明は、DSP環境内で並列メモリアクセスを遂行するために用いるための複数の独立なアドレスを生成する目的で、命令内に複数のアドレスを符号化する、本発明の一つの特定のアプリケーションに焦点が置かれる。より詳細には、以下の説明は、DSPプロセッサ内のXおよびYデータメモリへの4つの並列アクセスを遂行する際に用いるための4つの独立なアドレスの生成に焦点が置かれる。ただし、本発明は、この特定のアプリケーションに制限されるものではなく、DSP環境と非DSP環境の両方を含む、他の環境(例えば、古典的なマイクロプロセシング環境)においては、ここに説明の本発明によるユニークなアドレシングスキームを利用できるものである。
【0027】
図面の説明に戻り、類似の符号はこれら複数の図に渡って類似のパーツを示す。図1は本発明による回路装置10を示す。説明の実施例においては、回路装置10は単一の集積回路デバイスあるいはチップ上に実装されるが、ただし、別のやり方として、回路装置10内の様々な要素は、複数の別個のチップ上に実装することもできる。回路装置10は、デジタル信号プロセッサ(DSP)12を備え、これは、データバスインタフェース16を介してデータメモリ14とインタフェースする。データメモリ14は、図1に示すように、一つあるいは複数のデータスペース、例えば、XおよびYデータスペース18、20に分割され、後により明らかとなるように、各データスペース18、20は、2つの別個のメモリ路あるいはポートを持ち、これによって、各データスペース内の2つのメモリ位置(典型的には、Xデータスペースに対するX1およびX2として示される位置およびYデータスペースに対するY1およびY2として示される位置)に並列にアクセスできるようにされる。
【0028】
DSP12は、追加のメモリデバイスへのインタフェースも備える。プログラムコードは、例えば、インタフェース24を通じてDSP12に結合されたプログラムメモリ22に格納される。DSP12への外部からの接続性はインタフェース28を介してDSP12にインタフェースされた外部デバイスインタフェース26によって提供される。外部デバイスインタフェースは、一つあるいは複数の外部デバイス30へのインタフェースを提供する。外部デバイスは同一の集積回路上に配置することも、この回路の外側に配置し、この間を電気的に結ぶこともできる。このやり方にてアクセスされるタイプの外部デバイスの例としては、DSP周波数より低い周波数にて動作するアナログ/デジタルあるいはデジタル/アナログ変換器、デバグポート、チップの初期化段階において読み書きされるチップ構成レジスタ、ホストコンピュータへの(シリアルあるいはパラレル)通信ポート、あるいは高い周波数を必要としない任意の他のハードウエア資源が含まれる。
【0029】
各インタフェース16、24および28は、典型的には、各々のバスに結合するための終端ポイント、並びに適当なバスとの必要なインタフェースを実現するための適当なバッファおよび制御論理を含む。
【0030】
回路装置10は、単に、本発明によるスキームレジスタを利用するための多くの可能な環境の一つに過ぎず、従って、本発明はここで説明される特定の環境に制限されるものではないことに注意する。単に一例として、本発明は、不揮発性および揮発性ソリッドステートメモリデバイスにて実現されるメモリ、大容量記憶デバイスにて実現されるメモリ、回路装置10と同一の集積回路デバイス上に組み込まれたメモリあるいは外部メモリを含む、実質的にあらゆるタイプのメモリにアクセスするために用いる、メモリアドレスの生成に用いることができる。さらに、複数のメモリアドレスは、同一のメモリスペースあるいは分割内で用いるために生成することも、あるいは、異なるメモリスペースあるいは分割内で用いるために生成することもできる。さらに、メモリは任意の数の物理デバイスから形成することも、あるいは、マルチレベルメモリ階層に構成された複数のメモリレベルの任意に組合せから形成することもできる。当業者においては、この開示から、本発明との関連で用いるのに適するメモリアクセスの他の形態も明らかになるものと思われる。
【0031】
さらに、回路装置10は、典型的には、一つあるいは複数の集積回路デバイスあるいはチップ上に実装され、これら集積回路デバイスは、典型的には、一つあるいは複数のコンピュータデータファイルを用いて設計および製造されることに注意する。これらコンピュータデータファイルは、様々なレベルの詳細さにて、これらデバイス上の回路装置の機能および/あるいはレイアウトを定義し、ここではハードウエア定義プログラム(hardware definition programs)と呼ばれる。これらプログラムは、典型的には、設計ツールを用いて生成され、その後、シミュレーションのために、および/あるいは製造の際に、半導体ウェーハに塗布される回路装置を定義するレイアウトマスクを生成するために用いられる。これらプログラムは、典型的には、VHDL、Verilog、EDIFなどのハードウエア定義言語(HDL)を用いて所定のフォーマットにて供給される。こうして、本発明は、ここでは、完全に機能する集積回路デバイスとして実現された回路装置、およびこのようなデバイスを利用するデータ処理システムの文脈で説明されるが、当業者においては理解できるように、本発明による回路装置は、プログラム製品(program products)として様々な形態にて配布することもでき、本発明は、この配布を実際に遂行するために具体的にどのようなタイプの信号搬送媒体(signal bearing media)が用いられるかに関係なく、同様に、これらプログラム製品にも適用するものである。信号搬送媒体の例には、これに限定されるものではないが、記憶可能なタイプの媒体(recordable type media)、例えば、揮発性および不揮発性メモリデバイス、フロッピーディスク、ハードディスクドライブ、CD−ROM、DVD(その他)、および伝送タイプの媒体(transmission type media)、例えば、デジタルおよびアナログ通信リンクが含まれる。
【0032】
図2は、回路装置10内でのアドレス生成に関与する主要なコンポーネントをより詳細に示す。より具体的には、図示するように、DSP12は、プログラムメ モリ22から命令を受け取るように構成された命令デコーダ34を備える制御ユニット32を含む。デコーダ34は、デコードされた命令に基づいて、デュアルMultiply−Accumulate(MAC)ユニット38を含む計算ユニットとレジスタの複合体36を操作するための制御信号を生成する。これら計算ユニットおよびレジスタは、複数のメモリバスX1、X2、Y1およびY2を通じて、X、Yメモリスペース18、20に結合される。これら各メモリバスのデータ線は、ブロック36とX、Yメモリスペース18、20の各々との間で、典型的には双方向線を用いて結合されるが、、代替として対の単方向線を用いることもできる。各メモリバスに対するアドレス線はアドレス生成ユニット40によって駆動されるが、これは制御ユニット32の制御下に置かれる。4つの独立なアドレスを生成できるようにするために、アドレス生成ユニット40内には、複数のデータアドレス生成器(DAG)42が設けられる。命令デコーダ34からの適当な制御信号に応答して、一つあるいは複数のDAG42が、X1、X2、Y1および/あるいはY2メモリバス上にアドレスを出力するように制御される。
【0033】
アドレス生成ユニット40は、典型的には、本発明によるスキームレジスタを利用する間接アドレシングモード(indirect addressing mode)の形態も含む複数のアドレシングモードをサポートする。加えて、アドレス生成ユニット40は、典型的には、複数の追加の従来のアドレシングモード、例えば、直接アドレシング、(スキームレジスタは用いない)間接アドレシング、即座アドレシング等もサポートする。さらに、アドレス生成ユニット40は、典型的には、事後修正(post−modification)、ビット反転(bit reverse)およびモジュロ機能(modulus functions)などの機能を含む、上述のアドレシングモードに対する追加の強化機能(enhancements)もサポートするように構成される。さらに、アドレス生成ユニット40は、例えば、指標付アドレシングモード(indexed addressing mode)、スタックアドレシングモード(stack addressing mode)などを含む、他のアドレス生成機能もサポートする。ただし、これら従来のアドレシングモードおよび強化機能をサポートする目的でのアドレス生成ユニット(並びにアドレスの生成と関連する他の論理回路、例えば、命令デコーダ)の構成は、当分野において周知であるために、回路装置10内へのこのような従来のアドレシングモードおよび強化機能の実装に関する詳細はここでは割愛する。一例として、このようなアドレシングモードおよび機能は、DSPアーキテクチャ、例えば、DSP Group,Inc.から市販されるPalmDSPcoreアーキテクチャにて実装されるが、この使用および構成については当分野において周知である。
【0034】
図3は、DSP12によってサポートされる様々なアドレシングモードを実現するために、アドレス生成ユニット40内に実装される主要なレジスタを示す。より具体的には、各DAG42は、セットの間接アドレスレジスタ44、セットのステップレジスタ46、セットのモジュロレジスタ48およびセットのスキームレジスタ50を備える。加えて、アドレス生成ユニット40内には、ミニ/マックスレジスタ(MIXP)レジスタ52も設けられ、DSPによって実行される新たな最小あるいは最大命令のアドレスを示すために用いられる。ミニ/マックスレジスタ52の使用および構成は、当分野において周知であり、ユニット40内へのこのような機能の実装についてはここでは詳細には説明しない。
【0035】
説明の実施例においては、各DAG42は、それぞれ、4つの間接アドレスレジスタ44(R0..3)、ステップレジスタ46(S0..3)、モジュロレジスタ48(M0..3)およびスキームレジスタ50(SR0..3)を含み、こうして、これらタイプの全部で16個のレジスタが設けられる。各DAG42は、バスのアドレス線上に、適当なアドレス、並びに、READあるいはWRITE信号(例えば、X1メモリバスに対するRX1およびWX1)も出力するように構成される。
【0036】
さらに、説明の実施例においては、各レジスタは、命令デコーダから一連の制御信号54を通じて個別にアクセスすることができる。全部で65個のレジスタを持つ場合は、アドレス生成ユニット内の各レジスタに個別にアドレスするためには、全部で7ビットが必要となる。従って、命令デコーダとアドレス生成ユニットの間のインタフェースを提供するためには、アドレス生成ユニットに、65の利用可能なレジスタの一つを選択するために、7−ビット幅のREGISTER NUMBER信号が提供される。あるレジスタの内容の読出しあるいはあるレジスタへの新たな内容の書込みは、READおよびWRITE信号によって制御され、読出しアクセスに応答してのレジスタの内容はOUTPUTバスを通じて供給され、書込みアクセスの際のレジスタへの新たなデータはINPUTバスを通じて供給される。さらに、アドレス生成ユニット40は、様々な制御信号を同期するため、および命令デコーダがアドレス生成ユニット40を制御できるようにするための、CLOCK信号を受信するように構成される。
【0037】
各レジスタ44、46、48および50は、任意のビット数の異なる幅を持つことができる。典型的には、各間接アドレスレジスタ44は、メモリスペースのサイズに等しい幅を持つ。一例として、説明の実施例は、64KBのメモリスペースを用い(XとYメモリスペースの各々に32KBが割り当てられ、各メモリスペース内に設けられる2つの独立なバンクにてメモリスペース当たり2つの同時アクセスがサポートされる)、このため、各間接アドレスレジスタ44は、典型的には、16−ビット幅を持つ。
【0038】
各モジュロレジスタ48は、典型的には、モジュロアドレスとバッファサイズをここに格納することができるように、メモリスペースのサイズの2倍に等しい幅を持つ。例えば、64Kのメモリスペースの場合は、各ステップレジスタ46とスキームレジスタ50も16−ビット幅を持つが、ただし、多くの場合、16−ビットの情報は必要とされず、このため、これら各レジスタは集積回路デバイス上のこの回路装置によって占められるスペースを節約するためにこれより小さなビット幅とされる。
【0039】
レジスタ44〜50の任意の一つを初期化するためには、典型的には、あるレジスタは、REGISTER NUMBER制御線上でその一意なレジスタ番号を主張する(有効にする、assertする)ことで、その一意なレジスタ番号を介して選択される。選択されたレジスタ内に書込まれるデータは、INPUT線上に主張される。次に、WRITE信号が主張された(有効にされた)時点で、主張されたデータが次のクロックサイクルにおいて選択されたレジスタ内に書込まれる。レジスタの内容の読出しは、OUTPUT線とREAD信号を、REGISTER NUMBER線との関連で用いる相補的動作を介して遂行される。
【0040】
図4はDAG42の一つの一例としての実装をより詳細に示す。図示するように、図4のDAG42は、命令デコーダから出力される命令信号(INST)と制御信号(CTRL)に応答する。これも図示されるように、DAG42はアドレス出力(ADDR)を出力する。ここで特に詳しく説明される追加の間接アドレシングモードとは特に関係のない追加の制御信号は簡潔さのために省かれている。
【0041】
間接アドレスレジスタ44は、間接アドレスポインタを格納するが、デコーダ62を介して制御されるマルチプレクサ60に結合される。ステップレジスタ46も同様に、デコーダ66を介して制御されるマルチプレクサ64に結合される。こうして、選択された間接アドレスポインタの出力は、マルチプレクサ60によって、デコーダ62から加えられる制御信号に基づいて供給され、こうして、出力アドレスADDRが生成される。事後修正(post−modification)の目的で、出力アドレスは、加算器(summer)68にも供給される。加算器68は、ステップレジスタ46の一つの中に格納されていおり、マルチプレクサ64とデコーダ66を介して選択されたオフセットも受け取る。各ステップレジスタは、例えば、(事後修正なしを表す)NULL値、正のオフセットあるいは負のオフセットを含む。加算器68の出力は、出力アドレスと選択されたステップレジスタの内容の合計から成り、(現在の命令に対してこのモードが選択されている場合は)、オプションとしてのモジュロ計算(modulus calculation)を遂行するために、モジュロレジスタ論理(modulus register logic)70にパスされる。各モジュロレジスタ48は、モジュロレジスタ論理70内に実装され、この論理は、アドレスが所定の最大アドレスを超えたときアドレスを「ロールオーバ(roll over)」するために用いられる。
【0042】
当分野において周知のモジュロアドレシング(modulus addressing)は、通常は、メモリスペース内に巡回バッファを実現する。説明の実施例に対しては、周知の任意のモジュロアルゴリズム(modulus algorithms)を用いることができる。例えば、モジュロレジスタ内に、開始アドレスと、実現されるべき巡回バッファのサイズを表す長さの両方を格納することが必要となることがある。この場合、モジュロレジスタ論理は、加算器68の内容を、開始アドレスと長さの合計と比較する。加算器68の出力が、この合計より小さなときは、この出力はモジュロレジスタ論理70から変更なしにパスされる。そうでない場合は、選択されたモジュロレジスタ内に指定される開始アドレスが、モジュロレジスタ論理70の結果として出力される。代替として他のモジュロアドレシング方式を用いることも、別のやり方としてモジュロアドレシングは省くこともできる。さらに、様々な異なるモジュロアルゴリズムをアドレス発生ユニット内に実現することもできるが、これらは当業者においては周知であり、このためここではこれ以上の説明は割愛する。
【0043】
モジュロレジスタ論理70の出力は間接アドレスレジスタ44に戻され、こうして、出力アドレスに対して加えられた修正が現在選択されている間接アドレスレジスタ内に保存され、格納されているアドレスポインタが事後修正される。
【0044】
上述のように、各DAG42によって、2つの異なる間接アドレシングモードがサポートされる。第一の間接アドレシングモードは、スキームレジスタは用いず、命令内に符号化されている情報を用いて、間接アドレスレジスタと、オプションとして、ステップレジスタが選択される。第二のアドレシングモードにおいては、スキームレジスタ50を用いて、各間接アドレスレジスタが選択され、選択された間接アドレスレジスタの内容に基づいてステップレジスタが選択される。この2つのモードのどちらを用いるかは、対のセレクタ72、74を介して制御され、これらは、デコーダ62と66を介して、間接アドレスレジスタとステップレジスタの選択を制御する。
【0045】
セレクタ72は、入力として命令デコーダからのINST信号を受信するとともに、マルチプレクサ76からデコーダ78の制御下で追加の入力を受信する。マルチプレクサ76は、スキームレジスタ50の内容を受信し、これらレジスタの一つの内容をセレクタ72に出力するように構成される。
【0046】
どちらの間接アドレスモードが用いられるか(これは現在の命令内に符号化されている)によって、CTRL信号が選択的に有効(assert)あるいは無効(deassert)にされ、これに基づいてセレクタ72が制御され、セレクタ72はこれに基づいて、命令デコーダからのINST信号内に供給される命令復号情報か、スキームレジスタの出力のいずれかを間接アドレスレジスタの一つを選択するための制御信号として選択し、この制御信号に基づいて選択された間接アドレスレジスタが、DAGに対する出力アドレスを生成するために用いられる。このCTRL信号は、さらに、セレクタ74を制御するためにも用いられる。セレクタ74は、これに基づいて、第一の間接アドレシングモードにおいて命令内に生成され、INST信号にて供給されるステップレジスタ選択情報か、スキームレジスタ内に格納されているステップレジスタ選択情報のいずれかをデコーダ66に出力し、デコーダ66は、この情報に基づいて適当なステップレジスタを選択する。
【0047】
こうして、選択された間接アドレシングモードに依存して、選択されたスキームレジスタの内容か命令の内容のいずれかを用いて、間接アドレスレジスタとステップレジスタの各々が選択され、これらが、出力アドレスを生成するため、および出力アドレスを事後修正するために用いられる。
【0048】
図5は、例えば、図4のデータアドレス生成器(DAG)42内のセットのスキームレジスタからの一つのスキームレジスタ50に対する一例としてのフォーマットを示す。説明の実施例においては、スキームレジスタ50は、5ビットという少ないビットを用いて実現されるか、あるいは追加のビットも用意されるが、ただし使用しない場合は無効(null)にセットされる。2ビットは、一つの間接アドレスレジスタ(ri)を利用可能な4つの中から選択し、追加の2ビットは、4つのステップレジスタ(si)の一つを選択する。第五のビットは、アクセスタイプ、ここでは、READあるいはWRITE動作を選択するために用いられる。第二の間接アドレシングモードにおいては、アクセスタイプビットの内容が、READあるいはWRITE信号のいずれかを選択的に適当なアドレスバス上に駆動(供給)するために用いられる。
【0049】
本発明から逸脱することなく、各スキームレジスタ内に様々な代替フォーマットを用いることもできる。例えば、ある与えられたタイプに対して異なる数のレジスタが利用できる場合は、これらレジスタの任意の一つを選択するために、異なる数のビットを割り当てることもできる(例えば、8個の間接アドレスレジスタの中から1つを選択するために3ビットを用いることもできる)。さらに、ステップレジスタ選択フィールドは用いないことも、別個のステップレジスタを識別する代わりに、ステップ情報をスキームレジスタ内に直接格納することもできる。さらに、追加のアクセスタイプ情報を、例えば、異なる優先のアクセス等を選択するために格納することもでき、この場合は、アクセスタイプフィールドは追加のビットを含む。他の実施例として、アクセスタイプフィールドは用いないこともできる。別の実施例として、追加の情報、例えば、ビット反転情報、モジュロ情報(例えば、モジュロレジスタセレクタ、あるいはモジュロアドレスおよび/あるいはサイズ情報)等も各スキームレジスタ内に格納することもできる。
【0050】
図1〜5に示す構成とすることで、間接アドレシングスキームは極めて効率的かつコンパクトとなり、命令内の最小のビットにて、4つの独立なアドレスを生成することが可能となる。一例として、図6はデュアルMAC命令を実現するのに適する一例としての命令シンタックス82を示す。4つの独立なアドレスの生成を必要とする他の命令も、類似のフォーマットを用いることができる。
【0051】
図6に示すように、4つのスキームレジスタの選択は8ビットのみで指定され、各メモリバスに対する2ビットにて各バスに対して割り当てられる4つの利用可能なスキームレジスタの中から1つが選択される。加えて、追加の2ビットにて、それぞれ、結果アキュムレータが指定される。これからわかるように、デュアルMACに対するオペランドあるいは類似の命令は12ビットのみで指定され、32−ビット命令内の20個のフルビットがオプコードおよび他の必要な情報に対して残される。
【0052】
当業者においては理解できるように、様々な代替の命令フォーマットを用いることも可能であり、従って、本発明はここに説明される特定のフォーマットに制限されるものではない。
【0053】
DSPアルゴリズムの第二のアドレシングモードを利用するためには、典型的には、DSPプログラムを用いて、所望の機能を実現するために必要とされる適当な間接アドレスレジスタ、ステップレジスタ、およびスキームレジスタを初期化することが必要となる。この初期化は、図3との関連で上で説明したインタフェースを用いて遂行される。次に、スキームレジスタの間接アドレシングモードを用いてメモリアクセスを遂行することが必要とされる場合は、各メモリバスに対してスキームレジスタを選択を指定する命令が供給される。
【0054】
スキームレジスタをここに説明のやり方にて用いることの一つの重要な長所は、信号処理の最も顕著な特性の一つである規則性(regularity)から得られる。より具体的には、メモリのデータの順序(data ordering)は、典型的には常に同一であり、多くの場合、このアドレシングモードにおいて要求される4つのアドレスは、性能要件が最大で、任意の損失サイクルが重大な影響を及ぼすループ(loop)にて必要とされる。さらに、信号処理ループ(signal processing loop)においては、プロセッサは、典型的には、規則的なアドレス規則(regular addressing law)にてデータ配列にアクセスする。スキームレジスタを用いた場合は、この規則をループの開始においてスキームレジスタ内にプログラムすることができ、このため、ループの実行の際は、各命令内にアクセスタイプおよび/あるいは事後修正情報などの情報を供給するためのプログラムコードは必要とされない。こうして、命令内にアクセスタイプおよび/あるいは事後修正情報などを供給する必要がなくなるため、命令をよりコンパクトにすること、並びにシステム資源の最大化が可能となる。
【0055】
図7は、上述のスキームレジスタの間接アドレシングモードを利用する一例としてのメモリアクセスをより詳細に示す。「MAC SR3,SR2,A1||MAC SR2,SR1,A3」なるフォーマットを持つ一例としての命令90が示される。この命令の二進表現は、各MAC命令に対するオプコード、並びに(各MACに対して全部で4個のアキュムレータがサポートされると想定したとき)結果を受け取るためのA1およびA3アキュムレータの選択、第一のMAC命令に対するSR3およびSR2スキームレジスタの選択、および第二の動作に対するSR2およびSR1スキームレジスタの選択を含む。図7は、より具体的には、X1メモリバスに対するアドレスの生成を示し、この命令90内には、スキームレジスタSR3が指定されている。説明の目的に対しては、スキームレジスタSR3は、この中に「READ」アクセスタイプを格納しており、ステップレジスタS1と、間接アドレスレジスタR2が選択されており、ステップレジスタS1内には、+3なるステップ値が格納されており、間接アドレスレジスタR2内には、16進アドレス「95A0」を指すポインタが格納されているものと想定される。このため、命令90に応答して、バスX1に対するアドレスの生成は、最初に、スキームレジスタSR3を選択することから開始され、この結果として間接アドレスレジスタR2が選択され、さらにこの結果として、間接アドレスレジスタR2の内容、つまり、アドレス「95A0」が、出力アドレス92として出力される。加えて、事後修正を遂行するために、この出力アドレスが、加算器68内でステップレジスタS1内に格納されているオフセットと加算され、結果として「95A3」なる事後修正されたアドレス94が得られる。この事後修正されたアドレスが次に間接アドレスレジスタR2に格納される。こうして、スキームレジスタSR3を指定する次のアクセスにおいては、この出力アドレスが間接アドレスレジスタR2の新たな内容となる。
【0056】
ここに説明の実施例は従来の設計と比較して幾つかの長所を持つ。上述のように、これらスキームレジスタを用いることで、命令内の最少のビットにて、複数の独立なアドレスを並列に生成することが可能となる。加えて、コンパクトな命令にて独立なアドレスを生成する能力の増加のために、コーレレーテッドアドレス(correlated addresses)の生成と関連する制約を回避することができる。加えて、多くのケースにおいて、従来の設計と比較してアドレスの復号を著しく簡素化することができる。さらに、スキームレジスタを実現するために要求される追加の論理およびこのための制御論理はDSP回路装置のサイズに対して僅かである。
【0057】
さらに、各スキームレジスタ内に別個のステップ情報を供給できる能力のために、生成されたアドレスに対して独立な事後修正動作を遂行することが可能となり、このためメモリ編成面での追加の柔軟性が得られる。さらに、各スキームレジスタ内に別個のアクセス情報を供給できる能力のために、アクセスタイプの任意の組合せ、例えば、4 reads/0 writes、3 reads/1 writes、2 reads/2 writes等をサポートすることが可能となり、このためメモリ帯域幅を最大化が可能となる。
【0058】
本発明の精神および範囲から逸脱することなく、説明の実施例に対して様々な修正を施すことが可能である。例えば、様々な設計において、任意の数の同時アドレス生成器、並びに、任意の数のスキームレジスタ、間接アドレスレジスタ、ステップレジスタおよび/あるいはモジュロレジスタをサポートすることができる。さらに、追加の機能、例えば、同一のメモリアドレスへの同時書込みを禁止する書込衝突論理(write conflict logic)をサポートすることもできる。
【0059】
当業者においては他の修正も明らかであり、従って、本発明の範囲はクレームによってのみ定義されるものである。
【図面の簡単な説明】
【図1】
本発明によるデジタル信号プロセッサ(DSP)回路装置のブロック図である。
【図2】
図1のDSP回路装置内でアドレス生成のために用いられる主要コンポーネントのブロック図である。
【図3】
図2のDSP回路装置内のレジスタおよびこれらレジスタを初期化するために利用される制御入力のブロック図である。
【図4】
図3のアドレス生成ユニット内のデータアドレス生成器の一つのブロック図である。
【図5】
図4のデータアドレス生成器内のスキームレジスタの一例としての構成を示す図である。
【図6】
図1のDSP回路装置内で用いるための一例としてのDSP命令のフォーマットを示す図である。
【図7】
図1のDSP回路装置によって遂行される一例としての間接メモリアクセスを示す図である。
【符号の説明】
10 回路構成
12 デジタル信号プロセッサ(DSP)
14 データメモリ
16 データバスインタフェース
18 Xデータスペース18
20 Yデータスペース20
22 プログラムメモリ
24 インタフェース
26 外部デバイスインタフェース
28 インタフェース
30 外部デバイス
32 制御ユニット
34 命令デコーダ
36 計算ユニット/レジスタ
38 デュアルMultiply−Accumulate(MAC)ユニット
40 アドレス生成ユニット
42 データアドレス生成器(DAG)
44 間接アドレスレジスタ
46 ステップレジスタ
48 モジュロレジスタ
50 スキームレジスタ
52 ミニ/マックスレジスタ(MIXP)レジスタ
54 制御信号
60 マルチプレクサ
62 デコーダ
64 マルチプレクサ
66 デコーダ
68 加算器
70 モジュロレジスタ論理
72 セレクタ
74 セレクタ
82 命令シンタックス
90 命令
Claims (20)
- (a)各々がアドレスポインタを格納するように構成された複数の間接アドレスレジスタと、
(b)各々が前記複数の間接アドレスレジスタから一つの選択された間接アドレスレジスタを選択する間接アドレスレジスタセレクタを格納するように構成された複数のスキームレジスタと、
(c)前記複数のスキームレジスタからある一つの選択されたスキームレジスタを選択する命令に応答してメモリアドレスを生成し、このメモリアドレスを、選択されたスキームレジスタ内に格納されている間接アドレスレジスタセレクタによって選択された、選択された間接アドレスレジスタ内に格納されているアドレスポインタからメモリにアクセスする際に用いるように構成されたアドレス生成論理と、
を備えたことを特徴とする回路装置。 - 各スキームレジスタがさらに事後修正情報を格納するように構成され、前記アドレス生成論理がさらに前記選択された間接アドレスレジスタ内に格納されているアドレスポインタを前記選択されたスキームレジスタ内に格納されている事後修正情報を用いて修正するように構成されたことを特徴とする請求項1記載の回路装置。
- さらに、各々が事後修正情報を格納する複数のステップレジスタを備え、各スキームレジスタが前記複数のステップレジスタから一つの選択されたステップレジスタを選択するステップレジスタセレクタを格納するように構成され、前記アドレス生成論理が前記選択された間接アドレスレジスタ内に格納されているアドレスポインタを、前記選択されたスキームレジスタからの前記ステップレジスタセレクタによって選択された、選択されたステップレジスタ内に格納されている事後修正情報を用いて、修正するように構成されたことを特徴とする請求項2記載の回路装置。
- 各スキームレジスタがさらにアクセスタイプ情報を格納するように構成され、前記アドレス生成論理がさらに、前記生成されたメモリアドレスを、前記選択されたスキームレジスタ内のアクセスタイプ情報によって指定されるタイプのメモリアクセスを遂行する際に用いるように構成されることを特徴とする請求項1記載の回路装置。
- 前記選択されたスキームレジスタ内の前記アクセスタイプ情報が、読出しアクセスタイプと書込みアクセスタイプを含む複数のアクセスタイプの一つを選択することを特徴とする請求項4記載の回路装置。
- さらに:
(a)各々がメモリへのアドレスポインタを格納するように構成された第二の複数の間接アドレスレジスタと、
(b)各々が前記第二の複数の間接アドレスレジスタからある一つの選択された間接アドレスレジスタを選択する間接アドレスレジスタセレクタを格納するように構成された第二の複数のスキームレジスタとを備え、
前記命令がさらに前記第二の複数のスキームレジスタからある一つの選択された第二のスキームレジスタを選択し、前記アドレス生成論理がさらに、前記命令に応答して、第二のメモリアドレスを生成し、これを前記第二の選択されたスキームレジスタ内に格納されている間接アドレスレジスタセレクタによって前記第二の複数の間接アドレスレジスタから選択された、選択された間接アドレスレジスタ内に格納されている第二のアドレスポインタからメモリにアクセスする際に用いるするように構成されることを特徴とする請求項1記載の回路装置。 - さらに乗算累積(MAC)ユニットを備え、前記命令がMAC命令から成ることを特徴とする請求項6記載の回路装置。
- さらに:
(a)第二のMACユニットと、
(b)各々が前記メモリへのアドレスポインタを格納するように構成された第三および第四の複数の間接アドレスレジスタと、
(c)各々が前記第三の複数の間接アドレスレジスタからある一つの選択されたアドレスレジスタを選択する間接アドレスレジスタセレクタを格納するように構成された第三の複数のスキームレジスタと、
(d)各々が前記第四の複数の間接アドレスレジスタからある一つの選択された間接アドレスレジスタを選択する間接アドレスレジスタセレクタを格納するように構成された第四の複数のスキームレジスタとを備え、
前記命令が加えて第三と第四の選択されたスキームレジスタを選択するジュアルMAC命令から成り、前記アドレス生成論理がさらに、前記命令に応答して、前記第三と第四の選択されたスキームレジスタを用いて第三と第四のメモリアドレスを生成するように構成されることを特徴とする請求項7記載の回路装置。 - 請求項1記載の回路装置を含むことを特徴とする集積回路デバイス。
- 請求項1の回路装置を定義するハードウエア定義プログラム、およびこのプログラムを運ぶ信号搬送媒体から成るプログラム製品。
- メモリにアクセスする方法であって、この方法が:
(a)命令を受信し、複数のスキームレジスタからある一つの選択されたスキームレジスタを選択するステップと、
(b)前記選択されたスキームレジスタにアクセスすることで、間接アドレスレジスタセレクタを得、これを用いて複数の間接アドレスレジスタからある一つの選択された間接アドレスレジスタを選択するステップと、
(c)前記選択された間接アドレスレジスタにアクセスすることで、この中に格納されているアドレスポインタを得るステップと、
(d)前記アドレスポインタを用いてメモリにアクセスするステップと、
を含むことを特徴とする方法。 - 各スキームレジスタがさらに事後修正情報を格納するように構成され、この方法がさらに、前記選択された間接アドレスレジスタ内に格納されているアドレスポインタを、前記選択されたスキームレジスタ内に格納されている事後修正情報を用いて修正するステップを含むことを特徴とする請求項11記載の方法。
- 前記選択されたスキームレジスタ内の前記事後修正情報が、各々が事後修正情報を格納する複数のステップレジスタからある一つの選択されたステップレジスタを選択するステップレジスタセレクタを含み、前記アドレスポインタを修正するステップが、前記選択されたステップレジスタにアクセスするステップを含むことを特徴とする請求項12記載の方法。
- 各スキームレジスタがさらにアクセスタイプ情報を格納するように構成され、前記メモリにアクセスするステップにおいて、前記選択されたスキームレジスタ内のアクセスタイプ情報によって指定されるタイプのメモリアクセスが遂行されることを特徴とする請求項11記載の方法。
- 前記選択されたスキームレジスタ内の前記アクセスタイプ情報が、読出しアクセスタイプと書込みアクセスタイプを含む複数のアクセスタイプの一つを選択することを特徴とする請求項14記載の方法。
- 前記命令がさらに第二の複数のスキームレジスタからある一つの第二の選択されたスキームレジスタを選択し、この方法がさらに:
(a)前記選択されたアクセススキームレジスタにアクセスすることで、間接アドレスレジスタセレクタを得、これを用いて第二の複数の間接アドレスレジスタからある一つの第二の選択された間接アドレスレジスタを選択するステップと、
(b)前記第二の選択された間接アドレスレジスタにアクセスすることで、この中に格納されている第二のアドレスポインタを得るステップと、
(c)前記第二のアドレスポインタを用いて前記メモリにアクセスするステップと、
を含むことを特徴とする請求項11記載の方法。 - 前記命令が乗算累積(MAC)命令から成ることを特徴とする請求項16記載の方法。
- 前記命令が2つのMAC動作を同時に遂行するように構成されたジュアルMAC命令から成り、このジュアルMAC命令がさらに、それぞれ、第三および第四の複数のスキームレジスタから、第三と第四の選択されたスキームレジスタを選択し、この方法がさらに:
(a)前記第三の選択されたスキームレジスタにアクセスすることで間接アドレスレジスタセレクタを得、これを用いて第三の複数の間接アドレスレジスタからある一つの第三の選択された間接アドレスレジスタを選択するステップと、
(b)前記第四の選択されたスキームレジスタにアクセスすることで間接アドレスレジスタセレクタを得、これを用いて第四の複数の間接アドレスレジスタからある一つの第四の選択された間接アドレスレジスタを選択するステップと、
(c)前記第三の選択された間接アドレスレジスタにアクセスすることで、その中に格納されている第三のアドレスポインタを得るステップと、
(d)前記第四の選択された間接アドレスレジスタにアクセスすることで、その中に格納されている第四のアドレスポインタを得るステップと、
(e)前記第三のアドレスポインタを用いて前記メモリにアクセスするステップと、
(f)前記第四のアドレスポインタを用いて前記メモリにアクセスするステップと、
を含むことを特徴とする請求項17記載の方法。 - 回路装置であって、この回路装置が:
(a)XおよびYなるメモリスペースを含むデータメモリと、
(b)各々が前記Xメモリスペース内のメモリアドレスへのアドレスポインタを格納するように構成された第一の複数の間接アドレスレジスタと、
(c)各々が前記Yメモリスペース内のメモリアドレスへのアドレスポインタを格納するように構成された第二の複数の間接アドレスレジスタと、
(d)各々が前記第一の複数の間接アドレスレジスタからある一つの第一の選択された間接アドレスレジスタを選択する間接アドレスレジスタセレクタを格納するように構成された第一の複数のスキームレジスタと、
(e)各々が前記第二の複数の間接アドレスレジスタからある一つの第二の選択された間接アドレスレジスタを選択する間接アドレスレジスタセレクタを格納するように構成された第二の複数のスキームレジスタと、
(f)前記XおよびYメモリスペースに結合された乗算累積(MAC)ユニットと、
(g)前記MACユニットに結合され、前記第一の複数のスキームレジスタからある一つの第一の選択されたスキームレジスタを選択し、前記第二の複数のスキームレジスタからある一つの第二の選択されたスキームレジスタを選択する乗算累積(MAC)命令を受信するように構成された命令デコーダと、
(h)前記命令デコーダに結合され、それぞれ、前記XおよびYメモリスペースにアクセスするために用いる第一および第二のメモリアドレスを生成するように構成されたアドレス生成ユニットと、
を備え、このアドレス生成ユニットが、第一の選択されたスキームレジスタ内に格納されている間接アドレスレジスタセレクタによって選択された、選択された第一の間接アドレスレジスタ内に格納されているアドレスポインタから前記第一のメモリアドレスを生成するように構成され、さらに、このアドレス生成ユニットが、第二の選択されたスキームレジスタ内に格納されている間接アドレスレジスタセレクタによって選択された、選択された第二の間接アドレスレジスタ内に格納されているアドレスポインタから前記第二のメモリアドレスを生成するように構成されることを特徴とする回路装置。 - さらに:
(a)各々が前記Xメモリスペース内のメモリアドレスへのアドレスポインタを格納するように構成された第三の複数の間接アドレスレジスタと、
(b)各々が前記Yメモリスペース内のメモリアドレスへのアドレスポインタを格納するように構成された第四の複数の間接アドレスレジスタと、
(c)各々が前記第三の複数の間接アドレスレジスタからある一つの第三の選択された間接アドレスレジスタを選択する間接アドレスレジスタセレクタを格納するように構成された第三の複数のスキームレジスタと、
(d)各々が前記第四の複数の間接アドレスレジスタからある一つの第四の選択された間接アドレスレジスタを選択する間接アドレスレジスタセレクタを格納するように構成された第四の複数のスキームレジスタと、
(e)前記XおよびYメモリスペースに結合された第二の乗算累積(MAC)ユニットと、
を備え、
前記命令デコーダが前記第二のMACユニットに結合され、前記MAC命令がさらに前記第三の複数のスキームレジスタからある一つの第三の選択されたスキームレジスタを選択し、前記第四の複数のスキームレジスタからある一つの第四の選択されたスキームレジスタを選択し、前記アドレス生成ユニットがさらに、それぞれXおよびYメモリスペースにアクセスするために用いる第三および第四のメモリアドレスを生成するように構成され、前記アドレス生成ユニットがさらに、前記第三の選択されたスキームレジスタ内に格納されている間接アドレスレジスタセレクタによって選択された、第三の選択された間接アドレスレジスタ内に格納されているアドレスポインタから前記第三のメモリアドレスを生成するように構成され、前記アドレス生成ユニットがさらに、前記第四の選択されたスキームレジスタ内に格納されている間接アドレスレジスタセレクタによって選択された、前記第四の選択された間接アドレスレジスタ内に格納されているアドレスポインタから前記第四のメモリアドレスを生成するように構成されることを特徴とする請求項19記載の回路装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/596,321 US6463518B1 (en) | 2000-06-19 | 2000-06-19 | Generation of memory addresses for accessing a memory utilizing scheme registers |
PCT/US2001/009298 WO2001098893A1 (en) | 2000-06-19 | 2001-03-22 | Generation of memory addresses utilizing scheme registers |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004501470A true JP2004501470A (ja) | 2004-01-15 |
Family
ID=24386859
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002504586A Withdrawn JP2004501470A (ja) | 2000-06-19 | 2001-03-22 | スキームレジスタを用いたメモリアドレスの生成 |
Country Status (4)
Country | Link |
---|---|
US (2) | US6463518B1 (ja) |
EP (1) | EP1297416A1 (ja) |
JP (1) | JP2004501470A (ja) |
WO (1) | WO2001098893A1 (ja) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6463518B1 (en) * | 2000-06-19 | 2002-10-08 | Philips Electronics No. America Corp. | Generation of memory addresses for accessing a memory utilizing scheme registers |
JP2002215606A (ja) * | 2001-01-24 | 2002-08-02 | Mitsubishi Electric Corp | データ処理装置 |
EP1369774A1 (fr) * | 2002-06-06 | 2003-12-10 | CSEM Centre Suisse d'Electronique et de Microtechnique SA Recherche et Développement | Dispositif d'élaboration d'adresses pour un processeur de signaux numériques |
US8561107B1 (en) * | 2002-07-10 | 2013-10-15 | At&T Intellectual Property Ii, L.P. | Method and apparatus for selecting customized multimedia content for a user in pervasive computing environments |
US8656004B1 (en) | 2002-07-10 | 2014-02-18 | At&T Intellectual Property Ii, L.P. | Method and apparatus for delivering selected multimedia content to a user in pervasive computing environments |
CN1672128A (zh) * | 2002-07-26 | 2005-09-21 | 皇家飞利浦电子股份有限公司 | 用于并行访问多个矢量元素的方法和设备 |
US7003653B2 (en) * | 2002-10-21 | 2006-02-21 | Sun Microsystems, Inc. | Method for rapid interpretation of results returned by a parallel compare instruction |
US7293155B2 (en) | 2003-05-30 | 2007-11-06 | Intel Corporation | Management of access to data from memory |
GB2411976B (en) * | 2003-12-09 | 2006-07-19 | Advanced Risc Mach Ltd | A data processing apparatus and method for moving data between registers and memory |
US8051272B2 (en) * | 2006-05-15 | 2011-11-01 | Samsung Electronics Co., Ltd. | Method and system for generating addresses for a processor |
US8161264B2 (en) * | 2008-02-01 | 2012-04-17 | International Business Machines Corporation | Techniques for data prefetching using indirect addressing with offset |
US8209488B2 (en) * | 2008-02-01 | 2012-06-26 | International Business Machines Corporation | Techniques for prediction-based indirect data prefetching |
CN103699360B (zh) * | 2012-09-27 | 2016-09-21 | 北京中科晶上科技有限公司 | 一种向量处理器及其进行向量数据存取、交互的方法 |
US10180829B2 (en) * | 2015-12-15 | 2019-01-15 | Nxp Usa, Inc. | System and method for modulo addressing vectorization with invariant code motion |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4935867A (en) | 1986-03-04 | 1990-06-19 | Advanced Micro Devices, Inc. | Signal processor memory management unit with indirect addressing using selectable offsets and modulo values for indexed address calculations |
CA2045798A1 (en) | 1990-06-29 | 1991-12-30 | Rebecca L. Stamm | Conversion of internal processor register commands to i/o space addresses |
US5357618A (en) | 1991-04-15 | 1994-10-18 | International Business Machines Corporation | Cache prefetch and bypass using stride registers |
JPH0728786A (ja) * | 1993-07-15 | 1995-01-31 | Hitachi Ltd | ベクトルプロセッサ |
JP3449566B2 (ja) | 1994-01-28 | 2003-09-22 | 株式会社リコー | アドレス発生装置 |
US5890222A (en) * | 1995-01-04 | 1999-03-30 | International Business Machines Corporation | Method and system for addressing registers in a data processing unit in an indirect addressing mode |
US5860155A (en) * | 1995-11-16 | 1999-01-12 | Utek Semiconductor Corporation | Instruction decoding mechanism for reducing execution time by earlier detection and replacement of indirect addresses with direct addresses |
US6463518B1 (en) * | 2000-06-19 | 2002-10-08 | Philips Electronics No. America Corp. | Generation of memory addresses for accessing a memory utilizing scheme registers |
-
2000
- 2000-06-19 US US09/596,321 patent/US6463518B1/en not_active Expired - Lifetime
-
2001
- 2001-03-22 JP JP2002504586A patent/JP2004501470A/ja not_active Withdrawn
- 2001-03-22 WO PCT/US2001/009298 patent/WO2001098893A1/en active Application Filing
- 2001-03-22 EP EP01922592A patent/EP1297416A1/en not_active Withdrawn
-
2003
- 2003-07-10 US US10/522,085 patent/US20060155953A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US6463518B1 (en) | 2002-10-08 |
US20060155953A1 (en) | 2006-07-13 |
EP1297416A1 (en) | 2003-04-02 |
WO2001098893A1 (en) | 2001-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6510510B1 (en) | Digital signal processor having distributed register file | |
JP3559046B2 (ja) | データ処理マネージメントシステム | |
US6061779A (en) | Digital signal processor having data alignment buffer for performing unaligned data accesses | |
US5890195A (en) | Dram with integral sram comprising a plurality of sets of address latches each associated with one of a plurality of sram | |
JP3532932B2 (ja) | 時間重複メモリ・アクセスを有するランダムにアクセス可能なメモリ | |
USRE40883E1 (en) | Methods and apparatus for dynamic instruction controlled reconfigurable register file with extended precision | |
JP3615948B2 (ja) | メモリシステムおよびメモリシステムにアクセスするための方法 | |
US9342478B2 (en) | Processor with reconfigurable architecture including a token network simulating processing of processing elements | |
JP2004501470A (ja) | スキームレジスタを用いたメモリアドレスの生成 | |
US6209078B1 (en) | Accelerated multimedia processor | |
JP2005527035A (ja) | 幅の広いメモリへのアクセス | |
US6606684B1 (en) | Multi-tiered memory bank having different data buffer sizes with a programmable bank select | |
CN114388012A (zh) | 用于执行存储器内处理的存储器装置 | |
CA2324219A1 (en) | A digital signal processor reducing access contention | |
US8127110B2 (en) | Method, system, and medium for providing interprocessor data communication | |
US11861369B2 (en) | Processing-in-memory (PIM) device | |
JPH06274528A (ja) | ベクトル演算処理装置 | |
JPH10161868A (ja) | マクロ命令機能を有する同期式半導体メモリ装置とマクロ命令の格納及び実行方法 | |
US7657711B2 (en) | Dynamic memory bandwidth allocation | |
US20200293452A1 (en) | Memory device and method including circular instruction memory queue | |
US7284113B2 (en) | Synchronous periodical orthogonal data converter | |
JP4164371B2 (ja) | データ処理装置、データ処理方法、プログラム及び記憶媒体 | |
JP2003316571A (ja) | 並列プロセッサ | |
CN112486904A (zh) | 可重构处理单元阵列的寄存器堆设计方法及装置 | |
US6901490B2 (en) | Read/modify/write registers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080321 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20080626 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20090916 |