JP2002503370A - コプロセッサ・データ・アクセス制御 - Google Patents

コプロセッサ・データ・アクセス制御

Info

Publication number
JP2002503370A
JP2002503370A JP50180699A JP50180699A JP2002503370A JP 2002503370 A JP2002503370 A JP 2002503370A JP 50180699 A JP50180699 A JP 50180699A JP 50180699 A JP50180699 A JP 50180699A JP 2002503370 A JP2002503370 A JP 2002503370A
Authority
JP
Japan
Prior art keywords
coprocessor
register
instruction
data
bit
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.)
Granted
Application number
JP50180699A
Other languages
English (en)
Other versions
JP3681407B2 (ja
Inventor
ヨーク、リチャード
シール、デビッド、ジェームズ
シムズ、ドミニク
Original Assignee
エイアールエム リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by エイアールエム リミテッド filed Critical エイアールエム リミテッド
Publication of JP2002503370A publication Critical patent/JP2002503370A/ja
Application granted granted Critical
Publication of JP3681407B2 publication Critical patent/JP3681407B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • G06F9/3552Indexed addressing using wraparound, e.g. modulo or circular addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

(57)【要約】 中央処理装置コア(2)と、メモリ(8)と、コプロセッサ(4)を備えたデジタル信号処理システムが、コプロセッサ・メモリアクセス命令(例えば、LDC,STC)を使用して動作する。これらのコプロセッサ・メモリアクセス命令内のアドレシングモード情報(P,U,W,Offset)は、中央処理装置コア(2)によって使用されるアドレシングモードを制御するだけではなく、コプロセッサ(4)が、何個のデータワードが転送されるのかを決めるのにも使用され、コプロセッサ(4)は、適当な瞬間に転送を終了することができる。転送されるワードの個数を事前に知っておくことは、同期DRAMと一緒に使用されるバスシステムにおいても有利である。命令内のオフセットフィールドは、特定の命令が実行されるときに、中央処理装置コア(2)によって提供される値に対する変更を指定するのに使用され、また、転送されるワード数を指定するのにも使用することができる。このような装置は、デジタル信号処理動作のような規則的なデータアレイを介する動作にうまく適合する。オフセットフィールドが使用されない場合、転送されるワード数はデフォールトの1になる。

Description

【発明の詳細な説明】 コプロセッサ・データ・アクセス制御 本発明は、データ処理システムの分野に関する。特に、中央処理装置、メモリ 、コプロセッサを備えたデータ処理システムに関するもので、中央処理装置とコ プロセッサにより一緒に実行される命令の制御下で、データワードがメモリとコ プロセッサの間でやりとりされるシステムに関する。 中央処理装置、メモリ、コプロセッサ、例えば英国ケンブリッジのアドヴァン スト(Advanced)RISCマシン株式会社によって製造されたARMマ イクロプロセッサを備えたコプロセッサを備えた演算システムは公知である。そ のような公知のシステムにおいて、中央処理装置は、(例えば、コプロセッサに ロードする、あるいは記憶する)コプロセッサのメモリアクセス命令を実行する 。これらの命令は、メモリへの供給のための適切なアドレスデータを生成し、コ プロセッサがメモリと直接的にデータワード(データ転送の単位)を交換できる ようにコプロセッサを準備させる。中央処理装置により開始アドレス情報がメモ リに提供されると、中央処理装置を介したり、中央処理装置に記憶される、コプ ロセッサへ直接的にデータワードが渡されれば、最も効率が良い。コプロセッサ へのそのような直接的転送を行えれば、コプロセッサがデータ転送の終了を制御 することによって、中央処理装置を変更する必要なしに、異なったワード数を持 つ異なったコプロセッサを中央処理装置に付属させることができる。データ転送 の終了を制御するためには、中央処理装置上で実行される命令に応答して、コプ ロセッサは、何個のデータワードが転送されるべきかを決定しなければならない 。 1つの可能性として、各命令が中央処理装置上で単一のワードだけの転送を行 うということができる。ただし、これはデータメモリバンド幅の使用においても 、また、コード側や命令メモリバンド幅においても非常に能率が悪いので、バー ストモード転送が所望される。即ち、開始アドレスがメモリに提供され、メモリ が隣接する一連のメモリ位置からデータワードを返すのが好ましい。バーストモ ード転送の場合、効率は良くなるが、困難も生じる。即ち、何個のデータワード が 転送されるのかをコプロセッサが決定することによって、コプロセッサが転送を 終了するのに必要な制御を行えるようにしなければならない。 (例えば、ARM浮動小数点アクセラレータユニットにおけるように)、中央 処理装置上で実行する命令内にビットフィールドを割り当てることが公知であり 、そこでは、ビットフィールド命令がコプロセッサに渡され、転送されるべきデ ータワードの個数をコプロセッサに指定する。しかしながら中央処理装置上で実 行される命令内で使えるビットスペースには限界があり、もし、命令内のビット がコプロセッサへのデータワードの個数を渡すことに専念すると、命令内の他の フィールド用に使えるビットスペースを制限することになる。それは例えば、命 令実行に続く中央処理装置内のアドレスポインタの変更のような、データ転送に 関する他のパラメータを指定するのに使用されるかもしれない。 本発明の一面は、データ処理用装置であって、 コプロセッサメモリアクセス命令を含むデータ処理動作を行う中央処理装置命 令を実行する中央処理装置と、 この中央処理装置に結合され、データワードを保持するメモリと、 中央処理装置とメモリに結合されたコプロセッサであって、このコプロセッサ により処理されるべきメモリ内のデータワードの指定が、中央処理装置により実 行されるコプロセッサメモリアクセス命令の制御下で、複数のアドレシングモー ドの1つを使用して行われることを特徴とするコプロセッサと を備え、 少なくとも1つのコプロセッサメモリアクセス命令が、前記複数のアドレシン グモードのどれが中央処理装置によって使用されるかを制御するアドレシングモ ード情報を含み、コプロセッサは、前記アドレシングモード情報の少なくとも一 部を使用して、前記少なくとも1つのコプロセッサメモリアクセス命令に応答し てメモリとコプロセッサの間で何個のデータワードが転送させるべきかを制御す る。 本発明は、中央処理装置が複数のアドレシングモードのどれを使用するかを制 御するのに使用する(レジスタ番号や即値定数を含むことのある)ビットフィー ルドは、コプロセッサに、転送されるべきデータワードの個数を指定するのにも 使用される(命令内の他のフィールドあるいは制御レジスタに書き込まれた値の ような他の因子と結合されている可能性がある)ことがある。例えば、これまで にわかっているところ、多くの場合、中央処理装置が、転送及び/又はアドレス ポインタへの変更に使用されアドレスを制御するのに使用するビットフィールド 情報は、コプロセッサに転送されるデータワードの個数と関係づけられるので、 このビットフィールドは、コプロセッサによっても中央処理装置によっても読む ことができる。コプロセッサメモリアクセス命令内で同じビットフィールドを重 複して使用することにより、このようなコプロセッサメモリアクセス命令内のビ ットスペースを他の目的に開放することになる。更に、現在わかっているところ では、大多数の場合、転送されるべきデータワードは、少数のカテゴリに分類さ れるので、コプロセッサに転送されるべき個数のデータワード用に専用ビットフ ィールドを提供するフルフレキシビリティは、本発明を使用することによって得 られるコード密度と性能の改善に負ける。 中央処理装置は、いくつかの異なる方法でアドレシングを制御できるのに対し て、本発明の好ましい実施の形態においては、前記少なくとも1つのコプロセッ サメモリアクセス命令は、アドレス値を保持する中央処理装置内のレジスタを参 照し、前記アドレスモード情報は、オフセットフィールドを備え、アクセスされ るべきメモリ内の開始アドレスの決定は、前記少なくとも1つのコプロセッサメ モリアクセス命令の実行により、前記アドレス値と前記オフセット値の少なくと も1つから行われる。 中央処理装置のレジスタ内に保持されるアドレスポインタのそのような使用は 、多大なフレキシビリティを提供し、命令内のオフセットと結合されて、アプリ ケーションのコーディングを簡単にする。 コプロセッサとデータアレイを介して動作することが所望される場合、本発明 の好ましい実施の形態では、前記アドレス値に行われた変更が、最終アドレス値 を生成し、それを前記レジスタへ記憶しなおすことができるようにする。 前記オフセットフィールドの少なくとも一部が前記コプロセッサに使用されて 、データワードが何個、前記メモリと前記コプロセッサの間で転送されるかを制 御できることは、非常に便利であることがわかった。 このような装置は、メモリ内に保持されているデータ上にデータ処理操作をす るためにコプロセッサが使用される実際の状況のかなりの部分の要求を満たすこ とができる。 また、アドレシングモード情報が1つ以上のフラグを備え、前記複数のアドレ シングモードのうちのどれが使用されるか、また、何個のデータワードが前記メ モリと前記コプロセッサの間で転送されるかを決定するのに前記オフセットフィ ールドが使用されるか否かを制御できることは有利である。 アドレシングモード情報内の他のフラグビットに依存してオフセットフィール ドを選択的に使用することによって、転送されるデータワードの個数をコプロセ ッサが制御できる方法のオプションの数を増加させ、それにより、コプロセッサ メモリアクセス命令内のビット空間を余分に必要とすることなしに、実際の状況 の、より高い部分の要求に合わせることができる。 高い割合の所望のタイプの動作を成就するには、好ましい実施の形態は、次の ようなものでなければならない。即ち、前記コプロセッサが、前記オフセットを 使用せずに、前記メモリと前記コプロセッサの間で転送されたデータワードの個 数を決定する場合、メモリとコプロセッサの間では、固定数のワードが転送され る。 コプロセッサを制御するコプロセッサメモリアクセス命令モードの相補セット は、次のようなものである。即ち、前記レジスタがアドレスRnを記憶し、デー タワードがWLバイトの長さで、前記オフセット値がMであり、前記1つ以上の フラグが、3つ以上の値ビットを備え、それらが、前記少なくとも1つのコプロ セッサアクセス命令を選択し、以下の1つに従って操作する。 コプロセッサメモリアクセス命令は、以下のようなフラグを備えると有利であ る。 (i)前記開始アドレス値が、元々前記レジスタに記憶されていたアドレス値で あるか、前記オフセットフィールドによって指定される変更されたアドレス値で あるかを指定するフラブビットP、 (ii)前記変更が、前記レジスタに元々記憶されていた値からオフセットフィ ールドによって指定される値を加算したものか減算したものであるかを指定する フラグビットU、 (iii)前記アドレスレジスタ内の前記最終値が、前記レジスタに記憶されな おすべきか否かを指定するフラグビットW。 このようなフラグセットを使用してコプロセッサは、高速で簡単な動作制御を 行うことのできる構成となる。即ち、P EOR Uを求めることによって、1 個又はM個のデータワードが転送されるべきかを決定することができる。 更に、ベースレジスタがΛRMプログラムカウンタレジスタ(PC又はR15 )であれば、転送されるワード数1を生成することができる。この場合、単一ワ ード転送を決定するロジックが、P EOR(U又は(ベースレジスタがPC) )に変更される。 前述のコプロセッサと、中央処理装置及びメモリとの相互作用を制御する特性 は多数の異なるフィールドに使用できる(例えば、浮動小数点コプロセッサ)場 合、データアクセスは、次のように、比較的規則的である。即ち、前記中央処理 装置と前記コプロセッサがデジタル信号処理を行い、前記メモリと前記コプロセ ッサの間で転送されるデータワードが、前記メモリに記憶された係数値のアレイ 内からの係数値を備える。 本発明を他の面から見ると、本発明は以下のステップを備えるデータ処理方法 を提供する。即ち、 中央処理装置により、コプロセッサメモリアクセス命令を含む中央処理装置命 令を実行してデータ処理操作を行うステップと、 前記中央処理装置に結合されたメモリにおいてデータワードを保持するステッ プと、 前記中央処理装置に結合されたコプロセッサにより処理される前記メモリ内の データワードをアドレスするステップであって、前記メモリは、前記中央処理装 置により実行されるコプロセッサメモリアクセス命令の制御下で、複数のアドレ シングモードの1つを使用するステップと を備え、 前記コプロセッサメモリアクセス命令の少なくとも1つは、前記複数のアドレ シングモードのどれを中央処理装置が使用して前記メモリをアクセスするかを制 御するアドレシングモード情報を含み、前記コプロセッサは、前記少なくとも1 つのコプロセッサメモリアクセス命令に応答して、前記アドレシングモード情報 の少なくとも一部を使用して何個のデータワードが前記メモリと前記コプロセッ サの間で転送されるかを制御する方法である。 本発明の実施の形態について、以下に添付図面を参照しながら、例を示す。 図1は、デジタル信号処理装置のハイレベルの構成を示し、 図2は、コプロセッサの入力バッファとレジスタ構成を示し、 図3は、コプロセッサ内のデータパス(datapath)を示し、 図4は、レジスタからハイ又はローのビットを読むためのマルチプレクシング 回路を示し、 図5は、好ましい実施の形態におけるコプロセッサにより使用されるレジスタ ・リマッピング・ロジックを示すブロック図であり、 図6は、図5に示されたレジスタ・リマッピング・ロジックを更に詳しく示し 、 図7は、ブロック・フィルタ・アルゴリズムを示す表であり、 図8は、中央処理装置と、メモリと、コプロセッサアクセスメモリ命令を実行 するためのコプロセッサとを備えたシステムを模式的に示し、 図9は、図8のシステムの動作に対応するフロー・ダイアグラムである。 以下の説明において、セクション1では、中央処理装置と、メモリと、高速デ ジタル信号処理能力を持つコプロセッサとを備えたシステムについて説明する。 セクション2は、セクション1のシステムの変形について述べるもので、そこで は、コプロセッサメモリアクセス命令が、転送されるデータワードの個数のコプ ロセッサによる制御をより簡単にすべく変更されている。 セクション1 以下に説明するシステムは、デジタル信号処理(DSP)に関する。DSPは 、いろいろな形態を取ることができるが、典型的には、大量のデータの高速(実 時間)処理を必要とする処理である。このデータは、典型的には、アナログの物 理的信号である。DSPの好例として、デジタル移動電話に使用されるものがあ る。そこでは、無線信号が送受信され、アナログ音声信号から、及びアナログ音 声信号へのデコーディング及びエンコーディング(典型的には、畳み込み(convo lution)、変換、相関の操作を使用)が必要となる。また、他の例として、ディ スクヘッドからの信号が処理されてヘッド・トラッキング制御が行われるディス ク・ドライバ・コントローラが挙げられる。 上記のような文脈において、マイクロプロセッサ・コア(ここでは、英国、ケ ンブリッジのアドヴァンスト・RISC・マシン・リミテッドにより設計された マイクロプロセッサの範囲からのARMコア)上でのデジタル信号処理システム の説明をする。マイクロプロセッサとコプロセッサ・アーキテクチャとの間のイ ンターフェースは、それ自体が、DSP機能を提供すべく具体的構成を持つ。以 下の説明において、マイクロプロセッサ・コアはARM、コプロセッサはピッコ ロ(Piccolo)とする。ARMとピッコロは、典型的には、他の構成要素(たとえ ば、チップ上のDRAM、ROM,D/Aコンバータ、A/Dコンバータ)をA SICの部分として含む単一の集積回路として製造される。 ピッコロは、ARMのコプロセッサであるから、ARM命令の集合の一部を実 行する。ARMコプロセッサ命令により、(Load Coprocessor,LDC and Sto re Coprocessor,STC命令を使用して)ARMがピッコロとメモリーの間でデ ータをやり取りさせ、また、(move to coprocessor,MCR,及び、move from coprocessor,MCR命令を使用して)ARMがARMレジスタをピッコロとや り取りすることができる。ある見方をすれば、ARMとピッコロの相互作用は、 ARMGAピッコロのデータに対して強力なアドレス生成器として作用し、ピッ コロの方は、大量のデータを実時間で扱う必要のあるDSP操作を自由に行うこ とによって、対応の実時間結果を生み出すことである。 図1は、ARM2がピッコロ4に制御信号を発行して、データワードをピッコ ロ4に対して送信させ、またデータワードをピッコロ4から転送させる様子を示 す。命令キャッシュ6は、ピッコロ4にとって必要なピッコロプログラム命令ワ ードを記憶する。単一のDRAMメモリ8は、ARM2とピッコロ4の両方にと って必要なすべてのデータ及び命令ワードを記憶する。ARM2は、メモリ8へ のアドレッシング(addressing)及びすべてのデータ転送の制御に責任がある。 単一のメモリ8、及び1セットのデータバスとアドレスバスから成る構成は、複 数のメモリと高い帯域幅のバスを必要とする典型的DSPアプローチに比較して 、構成が簡単であり、費用も易い。 ピッコロは、命令キャッシュ6からの第2の命令ストリーム(デジタル信号処 理プログラム命令ワード)を実行し、これにより、ピッコロのデータパスが制御 される。これらの命令は、デジタル信号処理方式操作、例えば、Multiply−Accu mulate(乗算−累算)、及び制御フロー命令、例えば、ゼロ・オーバーヘッド・ ループ命令を含む。これらの命令は、ピッコロのレジスタ10(図2を参照)に 保持されているデータを操作する。このデータは、前もって、ARM2によって メモリ8から転送されたものである。複数の命令が命令キャッシュ6からストリ ームとして出され、命令キャッシュ6が、データバスを、完全な支配下に置く。 小型ピッコロ命令キャッシュ6は、1行当たり16ワードの4行で、直接 マップされたキャッシュ(64個の命令)となる。導入の方法によっては、命令 キャッシュをもっと大きくしてもよい。 このように、2つのタスクが独立的に走る。ARMがデータをロードして、ピ ッコロがそれを処理する。これにより、16ビット・データ上で単一サイクル・ データ処理が維持される。ピッコロの持つデータ入力メカニズム(図2に示され る)により、ARMは、シーケンシャル・データを先に取り込み、そのデータが ピッコロに必要になるより先にロードする。ピッコロは、ロードされたデータに どのような順序でもアクセスすることができ、古いデータが最後に使用されると 、自動的にそのレジスタを再び満たす(すべての命令はソースオペランド1つに つき、ソースレジスタを再充填すべきであることを示す1ビットを持つ)。この 入力メカニズムは、リオーダ(reorder)バッファと呼ばれ、入力バッファ12を 備える。ピッコロにロードされる(以下に示すLDCまたはMCRを介して)す べての値には、その値の目的地がどのレジスタであるかを示すタグRnが付いて いる。タグRnは、入力バッファ内のデータワードの側に記憶される。あるレジ スタがレジスタ選択回路14を介してアクセスされ、命令がデータレジスタの再 充填を指定すると、そのレジスタは、信号Eによって「空き」の印がつく。する と、レジスタは、自動的に、再充填制御回路16によって、その入力バッファ1 2内でそのレジスタに向けられた最も早くロードされた最古の値を充填される。 リオーダ・バッファは8つのタグ付き値を保持する。入力バッファ12の形式は 、FIFOと似ているが、キーの中央からデータワードを抽出することができ、 その後で、遅くに記憶されたワードが渡され、その空き場所を埋める。従って、 入力から最も遠いデータワードが最古であり、入力バッファ12が正しいタグR nを持つ2つのデータワードを保持する時は、その最古のデータワードを使用し て、どちらのデータワードでレジスタを再充填すべきかを決定することができる 。 ピッコロは、図3に示されたように、データを出力バッファ18(FIFO) に記憶させて出力する。データはFIFOにシーケンシャルに書き込まれ、AR Mによって同じ順序でメモリ8に読み出される。出力バッファ18は、8つの3 2ビットの値を保持する。 ピッコロは、コプロセッサ・インターフェース(図1のCP制御信号)を介し てARMと接続する。ARMコプロセッサ命令の実行に際して、ピッコロは、そ れを実行するか、あるいは、ピッコロがその命令を実行できるようになるまでA RMを待たせるか、あるいは命令実行を拒否することができる。最後の場合、A RMは、未定義命令例外とする。 ピッコロが実行する最も普通のコプロセッサ命令はLDCとSTCであり、こ れらは、それぞれデータワードをデータバスを介してメモリ8へ、及びメモリ8 からロードし(LDC)、記憶させ(STC)、ARMがすべてのアドレスを生 成する。リオーダ・バッファにデータをロードし、出力バッファ18からのデー タを記憶するのもこれらの命令である。ピッコロは、入力リオーダ・バッファに データをロードするのに充分な場所がなければARMをLDCのままにし、また 出力バッファに記憶すべき充分なデータがなければARMをSTCのままにする 。ピッコロは、また、ARM/コプロセッサ・レジスタ転送を行って、ARMが ピッコロの特定の(special)レジスタにアクセスできるようにする。 ピッコロは、それ自身の命令はメモリから取り込み、図3に示されたピッコロ のデータパスを制御し、リオーダ・バッファからレジスタへ、またレジスタから 出力バッファ18へデータを転送する。これらの命令を行うピッコロの演算ユニ ットは、乗算/加算回路20を有し、これが乗算、加算、減算、乗算・累算、論 理操作、シフト、及び回転を行う。また、データパスには累算/退出(decumula te)回路22と、縮尺(scale)/飽和(saturate)回路24とが備わっている。 ピッコロ命令は、最初にメモリから命令キャッシュ6にロードされ、そこへピ ッコロがアクセスし、主記憶にアクセスバックする必要がない。 メモリがアボート(abort)した場合、ピッコロはそれを修復することができな い。従って、ピッコロを仮想メモリシステムで使用する場合、すべてのピッコロ のデータは、ピッコロのタスクの始めから終わりまで、物理的メモリになければ ならない。このことは、ピッコロのタスクの実時間性、例えば実時間DSPを考 えれば、大した問題ではない。メモリ・アボートが起きると、ピッコロは停止し て状態レジスタS2にフラグをセットする。 図3は、ピッコロの全体のデータパス機能を示す。レジスタ・バンク10は、 3つの読み出しポートと2つの書き込みポートを使用する。1つの書き込みポー ト(Lポート)は、リオーダ・レジスタからレジスタを再充填するのに使用され る。出力バッファ18は、ALU結果バス26から直接的に更新され、出力バッ ファ18からの出力は、ARMプログラム制御の支配下にある。ARMコプロセ ッサ・インターフェースは、LDC(Load coprocessor)命令をリオーダ・バッ ファに行い、出力バッファ18からSTC(Store Coprocessor)命令を行い、ま た、レジスタバンク10上にMCRとMRC(Move ARM register to/from CP register)を行う。 残りのレジスタ・ポートは、ALUに使用される。読み出しポート(A及びB )は、入力を乗算/加算回路20に駆動し、C読み出しポートは、累算(accumu late)/退出(decumulate)回路22入力の駆動に使用される。残りの書き込み ポートWは、結果をレジスタバンク10に戻すのに使用される。 乗算器20は、符号付き又は符号無し16x16の乗算を行い、必要により4 8ビット累算を伴うこともできる。スケーラー(scaler)ユニット24は、0か ら31までの即値算術又は論理シフト右を提供することができ、その後、必要に より飽和を行うことができる。シフタ(shifter)及び論理ユニット20は、各周 期でシフト又は論理操作を行うことができる。 ピッコロは、D0−D15又はA0−A3,X0−X3,Y0−Y3,Z0− Z3という名のついた16個の汎用レジスタを持つ。最初の4つのレジスタ(A 0−A3)は、累算用で、48ビットの幅があり、余分な16ビットが、多数の 連続的計算の間にオーバーフローが生じないためのガードを提供する。残りのレ ジスタは32ビットの幅である。 ピッコロのレジスタは各々2つの独立した16ビットの値を含むものとして扱 うことができる。ビット0からビット15までが下半分、ビット16からビット 31までが上半分を含む。命令は、ソースオペランドとして各レジスタのどちら かの半分の16ビットを指定することができ、あるいは、全体の32ビットレジ スタを指定することもできる。 また、ピッコロは、飽和演算に対する備えもある。乗算、加算、減算命令の変 量は、結果が目的レジスタのサイズより大きい場合、飽和結果を提供する。目的 レジスタが48ビットのアキュムレータであれば、値は32ビットで飽和される (つまり、48ビットの値を飽和させる方法はない)。48ビットのレジスタに はオーバーフローの検出がない。これは手頃な制限である。というのは、オーバ ーフローを起こすには、少なくとも65536乗算累算命令が必要であるから。 各ピッコロのレジスタは、「空き」(Eフラグ、図2参照)であるか、1つの 値を含む(レジスタの半分だけが空きになることはない)。初期状態では、すべ てのレジスタが空きの印がついている。各周期で、ピッコロは再充填制御回路1 6によって、空きレジスタの1つを、入力リオーダ・バッファからの値で埋める 。あるいは、レジスタにALUからの値が書き込まれている場合は、「空き」で はない。もし、レジスタにALUからの書き込みがあり、これと同時に、リオー ダ・バッファからのレジスタに入れられる値が控えている場合は、結果は未定義 である。空きレジスタに読み出しが行われれば、ピッコロの実行ユニットはとま ってしまう。 入力リオーダ・バッファ(ROB)は、コプロセッサ・インターフェースとピ ッコロのレジスタ・バンクとの間にある。データがROBにロードされる時は、 ARMコプロセッサが転送する。ROBは、多数の32ビットの値を含み、それ ぞれ値の目的地となるピッコロ・レジスタを示すタグを持っている。タグは、ま た、そのデータが32ビットレジスタの全体に転送されるのか、あるいは32ビ ット中の下の16ビットだけに転送されるべきかも示す。データがレジスタ全体 に転送される場合は、そのエントリーの下の16ビットは目的レジスタの下半分 に転送され、上の16ビットはレジスタの上半分に転送される(目的レジスタが 48ビット・アキュムレータの場合は、符号が拡張される)。データの目的地が レジスタの下半分だけ(いわゆるハーフ・レジスタ)の場合、下の16ビットが 先に転送される。 レジスタのタグは常に物理的目的レジスタを示し、レジスタのリマッピングが 行われることはない(レジスタのリマッピングについては、以下を参照)。 各周期で、ピッコロは、次のように、データ・エントリをROBからレジスタ ・バンクへ転送しようとする。 − ROBの各エントリが検査され、タグが空きレジスタと比較され、エントリ の一部又は全部からレジスタへ転送が可能かどうかが決定される。 − 転送可能なエントリの集合から、最古のエントリが選択され、そのデータが レジスタバンクへ転送される。 − このeントリのタグが更新されてエントリを空きにする。エントリの一部だ けが転送された場合は、転送された部分だけが空きの印になる。 例えば、目的レジスタが完全に空きであり、選択されたROBエントリが含む データが1つの全体レジスタ用であれば、32ビット全体が転送され、そのエン トリは空きの印になる。目的レジスタの下半分が空きであり、ROBの含むデー タがレジスタの下半分用であれば、ROBエントリの下の16ビットが目的レジ スタの下半分へ転送され、ROBの下半分が空きの印になる。 どのエントリでも、上の16ビットと下の16ビットは、それぞれ独立に転送 することができる。レジスタバンクに転送できるデータを含むエントリが皆無の 場合、その周期では、転送は行われない。下の表は、目的ROBエントリと目的 レジスタ状態のあらゆる可能な組み合わせを示す。 以上をまとめると、1つのレジスタの2つの半分は、互いに独立に、ROBか ら充填することができる。ROB内のデータは、レジスタ全体用に印が付けられ るか、あるいはレジスタの下半分用の2つの16ビットの値としての印が付く。 データをROBにロードするにはARMコプロセッサ命令が使用される。RO Bにおいてデータが印を付けられる方法は、転送に使用されたARMコプロセッ サ命令がどれであったかによる。ROBにデータを充填するのに使用できるAR M命令には以下のものがある。 LDP{<cond>}<16/32> <dest>,[Rn]{!},#<size> LDP{<cond>}<16/32>W <dest>,<wrap>,[Rn]{!},#<size> LDP{<cond>}16U <bank>,[Rn]{!} MPR{<cond>} <dest>,Rn MRP{<cond>} <dest>,Rn ROBの構成には、以下のARM命令が提供される。 LDPA<bank list> 最初の3つは、LDC命令としてアセンブルされ、MPRとMRPは、MCR 命令として、LDPAはCDP命令としてアセンブルされる。 上記<dest>は、ピッコロのレジスタ(A0−Z3)を示し、RnはARMレ ジスタを示し、<size>は4の乗数(ゼロを除く)となる定数としてのバイト数 であり、<wrap>は、定数(1、2、4、8)を示す。{}によって囲まれた領 域は、オプションである。転送がリオーダ・バッファへ当てはまるようにするた めに、<size>は最大で32である。多くの場合、<size>は、この制限より小 さくしてデッドロックを避ける。<16/32>領域は、ロードされるデータが 16ビット・データとして扱われ、endianess特定動作(以下を参照)を行うべ きか、あるいは32ビットデータであるかを示す。 注1:以下の説明において、LDPまたはLDPWに言及する場合、これらの 命令の16ビット用変種と32ビット用変種の両方を含むものとする。 注2:1つのワード(word)は、メモリからの32ビットの固まりであり、そ れは、16ビットのデータ項目2つから成るか、あるいは32ビットのデータ項 目1つからなる。 LDP命令は、多数のデータ項目をフル・レジスタ用として転送する。この命 令は、メモリ内のアドレスRnから<size>/4ワードをロードし、それらをR OBに挿入する。転送することのできるワード数は以下のように制限される。 − <size>の量は、4の非ゼロ倍数でなければならず、 − <size>は、特定の導入についてROBのサイズ以下でなければならない( 第1版では8ワード、その後の版では、それ以下にならない保証があること)。 転送される最初のデータ項目は目的地が<dest>のタグを付け、第2のデータ 項目は、<dest>+1というようになる(Z3からA0まではラッピング(wrap ping))。もし“!”が指定された場合は、その後、レジスタRnが<size>に よって1つずつ増加される。 LDP16の変種が使用された場合は、エンダイアン(endian)特定動作が2 つの16ビットのハーフワードに行われて、それらがメモリシステムから戻され る時には32ビットデータ項目とする。より詳しくは、以下のBig Endian及びLi ttle Endianサポートを参照せよ。 LDPW命令は、多数のデータ項目をレジスタのセットに転送する。最初に転 送されるデータ項目には<dest>のタグが付き、次は<dest>+1のタグが付き 、以下同様。<wrap>転送が起きると、次に転送される項目は、<dest>用とな り、以下同様。<wrap>の量は、ハーフワードの量で指定される。 LDPWには、次の制限がある。 − <size>の量は、4の非ゼロ倍でなければならず、 − <size>は、特定の導入についてROBのサイズ以下でなければならず(第 1版では8ワード、その後の版では、それ以下にならない保証がある)、 − <dest>は、{A0,X0,Y0,Z0}のいずれか1つでよく、 − <wrap>は、LDP32Wについては{2,4,8}のいずれかの個数のハ ーフワードであり、LDP16Wについては{1,2,4,8}のいずれかの個 数のハーフワードであり、 − <size>の量は、2*<wrap>より大きくなければならない。さもないと、 ラッピングは起きず、代わりにLDP命令が使用される。 たとえば、次の命令 LDP32W X0,2,〔R0〕!,#8 は、2つのワードをROBにロードし、その目的地をフル・レジスタX0とする 。R0は、8増加する。次の命令 LDP32w X0,4,〔R0〕,#16 は、4つのワードをROBにロードし、それらの目的地をX0,X1,X0,X 1(この順序で)とする。R0は影響されない。 LSP16Wに対しては、<wrap>は、1、2、4、又は8として指定できる 。 lのラップが指定されると、すべのデータのタグの目的地が、目的レジスタの下 半分<dest>.l.となる。これは、ハーフ・レジスタの場合である。 例えば、次の命令 LDP16W X0,1,〔R0〕!,#8 は、2つのワードをROBにロードし、それらを16ビットデータとして目的地 をX0.lとする。R0は8増加される。次の命令 LDP16W X0,4,〔R0〕,#16 は、LDP32Wの例と同様に挙動するが、ただし、エンダイアン特定動作は、 メモリから戻されるデータ上に行われる。 LDP命令のすべての使用されないエンコーディングは、将来の拡張用に取っ ておくことができる。 LDP16U命令は、非ワード揃え(non-word aligned)16ビットデータの 効率良い転送をサポートする。LDP16UサポートはレジスタD4−D15( X,Y,Zバンク)になされる。LDP16Uサポートは、レジスタ32ビット ワードのデータ1つ(2つの16ビットデータ項目を含む)をメモリからピッコ ロへ転送することになる。ピッコロは、このデータの下の16ビットを捨て、上 の16ビットを保持レジスタに記憶する。X,Y,Zバンク用の保持レジスタが ある。バンクの保持レジスタが通報されると(primed)と、データの目的地がそ のバンク内のレジスタであれば、LDP{w}命令の挙動が変化する。ROBに ロードされたデータは、LDP命令によって転送されつつあるデータの下の16 ビットと保持レジスタとの連結によって形成される。転送されつつある上の16 ビットは、保持レジスタに入れられる。 holding_register<-data.h このモードの動作は、LDPA命令によって打ち切られるまで続く。保持レジ スタは、目的レジスタのタグもサイズも記録しない。これらの性質は、次のdata .1.の値を提供する命令から得られる。 メモリシステムから戻されたデータには、常にエンダイアン特定挙動が起きる 可能性がある。LDP16Uと同等の非16ビットはない。というのは、32ビ ットデータ項目はすべてメモリにおいてワード揃えされるからである。 LDPA命令は、LDP16U命令によって開始された操作の非整列(unalign ed)モードを取り止めるのに使用される。非整列モードは、バンクX,Y,Z上 で独立に切ることができる。例えば、次の命令 LDPA {X,Y} は、バンクX,Y上で非整列モードを打ち切る。これらのバンクの保持レジスタ 内のデータは、捨てられる。 非整列モードにないバンク上でLDPAを実行することは可能であり、そのバ ンクは整列モードのままである。 MPR命令は、ARMレジスタRnの内容をROBに入れ、ピッコロレジスタ <dest>に向けられる。目的レジスタ<dest>は、A0−Z3の範囲のフルレジ スタならどれでもよい。例えば、次の命令 MPR X0,R3 は、R3の内容をROBに移し、そのデータをフルレジスタX0用とする。 データがARMからピッコロに転送される時にエンダイアネス(endianess)特 定挙動が生じることがない。というのは、ARMは、内部的に、あまりエンダイ アンではないからである。 MPRW命令は、ARMレジスタRnの内容をROBに入れ、それを、16ビ ットピッコロレジスタ<dest>.l.向けの2つの16ビットデータ項目とする 。<dest>についての制限は、LDPW命令の場合と同じである(つまり、Z0 ,X0,Y0,Z0)。例えば、次の命令 MPRW X0,R3 は、R3の内容をROBに移し、X0.l.向けの2つの16ビット量のデータ とする。尚、lでラップするLDP16Wの場合、32ビットレジスタの下半分 だけが目的地となり得る。 MPRについては、データに対してエンダイアネス特定操作は何も行われない 。 LDPは、次のようにエンコードされる。 ここで、PICCOLO1は、ピッコロの最初のコプロセッサの番号(現在8) である。NビットがLDP32(1)とLDP16(0)との間の選択を行う。 LDPWは、次のようにエンコードされる。 ここで、DESTは、目的レジスタA0,X0,Y0,Z0に対する0−3であ り、WRAPは、1、2、4、8の値のラップに対して0−3である。PICC OLO2は、ピッコロの第2のコプロセッサ番号(現在9)である。Nビットが 、LDP32(1)とLDP16(0)との間の選択を行う。 LDP16Uは、次のようにエンコードされる。 ここで、DESTは、目的バンクX,Y,Zに対する1−3である。 LDPAは、次のようにエンコードされる。 ここで、BANK〔3:0〕は、バンクごとの非整列モードを打ち切るのに使用 される。BANK〔1〕がセットされると、バンクX上の非整列モードが打ち切 られる。BANK〔2〕及びBANK〔3〕がセットされれば、それぞれバンク Y,Z上の非整列モードが打ち切られる。尚、これはCDP操作である。 MPRは、次のようにエンコードされる。 MPRWは、次のようにエンコードされる。 ここで、DESTは、目的レジスタX0,Y0,Z0に対する1−3である。 出力FIFOは、32ビットの値を8つまで保持することができる。これらは 、次の(ARM)オペコード(opcodes)の1つを使用して、ピッコロから転送さ れる。 STP{<cond>}<16/32> [Rn]{!},#<size> MRP Rn 最初のは、<size>/4ワードを出力FIFOから、ARMレジスタRnによ って与えられるアドレスへ退避する。“!”があれば、Rnを指示する。デッド ロックを避けるために、<size>は、出力FIFOのサイズ(この導入例では8 エントリ)以下でなければならない。STP16の変種が使用された場合は、メ モリシステムから戻されるデータにエンダイアン特定挙動が生じる可能性がある 。 MRP命令は、出力FIFOから1つのワードを除去し、それをARMレジス タRnに入れる。MRPと同様に、このデータには、エンダイアン特定操作が適 用されることはない。 STP用のARMエンコーディングは以下の通り。 ここで、Nは、STP32(1)とSTP16(0)との間の選択を行う。P, U,Wビットの定義については、ARMデータシートを参照せよ。 MRP用のARMエンコーディングは以下の通り。 ピッコロ命令セットは、内部的にはエンダイアン操作がほとんどないと仮定し ている。例えば、32ビットレジスタに、複数の16ビット・ハーフとしてアク セスする場合、下半分がビット15から0を占めるとする。ピッコロは、大きな エンダイアン・メモリ又は周辺機器(peripherals)のあるシステムで動作するこ とになるので、16ビットでパックされたデータを正しくロードできるようにし なければならない。 ピッコロ(つまり、DSPが採用されたコプロセッサ)は、ARM(例えば、 英国、ケンブリッジのアドヴァンストRISCマシンズ・リミテッドによって製 造されたARM7マイクロプロセッサ)のように、プログラマがプログラム可能 周辺機器で制御できるであろう‘BIGEND’構成ピンを持っている。ピッコ ロは、このピンを使用して入力リオーダ・バッファ及び出力FIFOを構成する 。 ARMがパック16ビットデータをリオーダ(reorder)・バッファにロードす る時は、そのことを、LDP命令の16ビット形式を使用して示さなければなら ない。この情報は‘BIGEND’構成入力の状態と組み合わされて、データを 保持ラッチへ入れ且っリオーダ・バッファを適当な順序にする。特にbig endian モードの時は、保持レジスタはロードされたワードの下16ビットを記憶し、次 のロードの上16ビットと対(ペア)にされる。保持レジスタの内容は、常に、 リオーダ・バッファへ転送されたワードの下16ビットで終わる。 出力FIFOは、パックされた16ビット又は32ビットデータを含むことが できる。プログラマは、STP命令の正確な形式を使用して、16ビットデータ がデータバスの正しい半分に提供されていることをピッコロが確認できるように しなければならない。big endianとして構成されている場合、STPの16ビッ ト形式が使用されると、上16ビットハーフ及び下16ビットハーフが交換され る。 ピッコロは、ARMからしかアクセスできないプライベート・レジスタを4tu 持っている。これらは、S0−S2と呼ばれる。これらにアクセスできるのは、 MRC命令とMCR命令だけである。オペコードは以下の通り。 MPSR Sn,Rm MRPS Rm,Sn これらのオペコードは、ARMレジスタRmとプライベート・レジスタSnと の間で32ビット値を転送する。それらは、ARMにおいて、コプロセッサ・レ ジスタ転送としてエンコードされる。 ここで、Lは、MPSRなら0、MRPSなら1である。 レジスタS0は、ピッコロの一意なID及び改定コードを含む。 〔3:0〕ビットは、プロセッサの改定番号を含む。 〔15:4〕ビットは、2進符号化された10進フォーマットの3桁部分の番 号(ピッコロなら、0x500)を含む。 〔23:16〕ビットは、アーキテクチャ版数を含む。0x00=第1版 〔31:24〕ビットは、導入者の商標のASCIIコードを含む。0x41 =A=ARM Ltd. レジスタS1は、ピッコロの状態レジスタである。 一次状件コードフラグ(N,Z,C,V) 二次状件コードフラグ(SN,SZ,SC,SV) Eビット:ピッコロは、ARMによってディスエーブルされ、中止した。 Uビット:ピッコロは、UNDEFINED(未定義)命令に出会って、中止 した。 Bビット:ピッコロは、BREAKPOINT(区切点)に出会って、中止し た。 Hビット:ピッコロは、HALT(中止)命令に出会って、中止した。 Aビット:ピッコロは、メモリ・アボート(ロード、ストア、又はピッコロ命 令)によって、中止した。 Dビット:ピッコロは、デッドロック条件を検出し、中止した(以下を参照) 。 レジスタS2はピッコロプログラム・カウンタである。 プログラム・カウンタに書き込みすると、ピッコロはそのアドレスで(中止状 態であれば中止状態のまま)プログラムの実行を始める。プログラム・カウンタ はリセットされた時、未定義である。というのは、プログラム・カウンタへの書 き込みによっって、ピッコロは常にスタートされるからである。 実行中、ピッコロは命令の実行及びコプロセッサ・インターフェースの状態を 次のようにモニタする。 − ピッコロは、レジスタ再充填されるのを、あるいは出力FIFOが使えるエ ントリを持つのを、待つ態勢に入った。 − ROB内のスペースが不十分であるか、出力FIFO内の事項(items)が不 十分であるかの理由で、コプロセッサ・インターフェースがビジー待ち状態(bus y−waiting)にある。 これらの両方の条件が検出されると、ピッコロは、その状態レジスタにDビッ トをセットし、中止し、ARMコプロセッサの命令を拒絶し、ARMは未定義命 令トラップにはまる。 このデッドロック状態の検出により、少なくともプログラマにこのような条件 が生じたことを知らせ、また失敗の正確な点(位置)を知らせることができるシ ステムが構成される。プログラマは、ARMとピッコロのプログラム・カウンタ とレジスタを読めばよい。尚、強調しておくが、デッドロックが生じるのは、間 違ったプログラムあるいはピッコロの状態を変造するシステム部分がある場合だ けである。デッドロックは、データが少なすぎることや「オーバーロード」によ って生じることはない。 ARMからピッコロを制御するのに使用できるいくつかの操作があり、それら はCDP命令によって提供される。これらのCDP命令は、ARMが優先状態に ある時に受け付けられる。そうでないと、ピッコロはCDP命令を拒絶し、AR Mは未定義命令トラップにはまる。以下の操作が使用可能である。 − Reset(リセット) − Enter State Access Mode(状態アクセスモードに入る) − Enable(イネーブル) − Disable(ディスエーブル) ピッコロは、PRESET命令によってソフトウェア内でプリセットされる。 PRESET ;Clear Piccolo's state (ピッコロの状態をクリアする) この命令は、次のようにエンコードされる。 この命令が実行されると、次のことが生じる。 − すべてのレジスタが空き(再充填の態勢)の印になる。 − 入力ROBがクリアされる。 − 出力FIFOがクリアされる。 − ループ・カウンタがリセットされる。 − ピッコロは中止状態に入る(そしてS2のHビットがセットされる)。 PRESET命令の実行には、いくつかのサイクル(この実施の形態では、2 から3)が必要である。実行されている間に、以下のピッコロ上で実行されるべ きARMコプロセッサ命令がビジー待ちになる。 状態アクセスモードにおいて、ピッコロの状態は、STC及びLDC命令(以 下のARMからのピッコロ状態アクセスについての説明を参照)を使って退避さ れ復元される。状態アクセスモードに入るには、PSTATE命令がまず実行さ れなければならない。 PSTATE; Enter State Access Mode (状態アクセスモードに入る) この命令は次のようにエンコードされる。 実行されると、PSTATE命令は、 − ピッコロを中止し(すでに中止されているのでなければ)、Eビットをピッ コロの状態レジスタにセットする。 − ピッコロを状態アクセスモードに構成する。 PSTATE命令の実行が終わるまでにはいくつかのサイクルがある。という のは、ピッコロの命令パイプラインは中止する前に汲み出されなければならない からである。実行中、ピッコロ上で実行される次のARMコプロセッサ命令がビ ジー待ちになる。 PENABLE及びPDISABLE命令は、高速コンテキスト切替えに使用 される。ピッコロがディスエーブルされると、専用レジスタ0と1だけが(ID レシスタ、状態レジスタ)アクセス可能となり、それも優先モードからだけであ る。これ以外の状態へアクセスすると、またユーザモードからアクセスすると、 ARM未定義命令例外が生じる。ピッコロをディスエーブルすると、実行が中止 される。ピッコロは、実行を中止すると、状態レジスタにEビットをセットして 応答する。 ピッコロをイネーブルするには、PENABLE命令を実行する。 PENABLE; Enable Piccolo この命令は次のようにエンコードされる。 ピッコロをディスエーブルするには、PDISABLE命令を実行する。 PDISABLE; Disable Piccolo この命令は次のようにエンコードされる。 この命令が実行されると、次のことが生じる。 − ピッコロの命令パイプラインが空になる(drain)。 − ピッコロは中止して、状態レジスタにHビットをセットする。 − このセクションは、ピッコロのデータパスを制御するピッコロ命令セット( 集合)に言及する。各命令は32ビットの長さである。これらの命令は、ピッコ ロ命令キャッシュから読み出される。 命令セットのデコードは、非常に直線的である。最初6ビット(26から31 )が主要オペコードを与え、22から25までが、いくつかの特定の命令のため のマイナーなオペコードを提供する。灰色の影となっているコードは、現在未使 用のものであり、拡張用として使える(それらは現時点で指示された値を含ん でいなければならない)。 11の主要命令クラスがある。これは、いくつかのサブクラスのデコードを簡 単にするため、命令にファイルされた主要オペコードに完全に対応するものでは ない。 上の表にある命令には、以下の名前がついている。 Standard Data Operation (標準データ操作) Logical Operation (論理操作) Conditional Add/Subtract (条件付加算/減算) Undefined (未定義) Shifts (シフト) Select (選択) Undefined (未定義) Parallel Select (並列選択) Multiply Accumulate (乗算累算) Undefined (未定義) Multiply Double (乗算ダブル) Undefined (未定義) Move Signed Immediate (符号付即値移動) Undefined (未定義) Repeat (反覆) Repeat (反覆) Register List Operation (レジスタ・シフト操作) Branch (ブランチ) Renaming Parameter Move (リネーム・パラメータ移動) Halt/Break (中止/中断) 命令の各クラスのフォーマットは、次のセクションに詳しく述べてある。ソー ス及び目的オペランド領域は、ほとんどの命令において共通であり、レジスタ・ リマッピングと同様、別のセクションに述べてある。 ほとんどの命令は2つのソースオペランドSource1,Source2を必要とする。 Source1(SRC1)オペランドは、次の7ビット・フォーマットを持つ。 この領域の要素は、次の意味を持つ。 − Size−読み出すオペランドのサイズを示す(1=32ビット、0=16ビッ ト)。 − Refill−レジスタが読み出された後、空きの印になり、ROBから再充填で きることを示す。 − Register Number−32ビット、16ビットレジスタのどっちのレジスタを 読み出すべきべきかエンコードする。 − Hi/Lo−16ビット読み出しに対して、32ビットレジスタのどちらの 半分を読み出すべきかを示す。32ビットオペランドに対してセットされた場合 は、レジスタの2つの16ビット半分が入れ換えられなければならないことを示 す。 レジスタのサイズは、レジスタ番号に接尾辞を付けることによってアセンブラ によって特定される。下位16ビットなら、.l、上位16ビットなら、.h, 32ビットの上下の16ビットを入れ換えるなら、.x。 一般のソース2(SCR2)は、次の3つの12ビット・フォーマットの1つ を持つ。 図4は、選択されたレジスタの適切な半分をピッコロのデータパスにスイッチ するためのHi/Loビット及びSizeビットに応答するマルチプレクサ構成を示 す。Sizeビットが16ビットであれば、符号拡張回路がデータパスの高次ビット に適切な0または1を入れる。 最初のエンコーディングは、ソースをレジスタとして指定し、その領域は、S CR1指定子(specifier)と同じエンコーディングを持つ。SCALE領域は 、ALUの結果に適用されるべきスケールを指定する。 8ビット即値(immediate)は、回転(rotate)エンコーディングによって、3 2ビット即値を生成し、それが、8ビット値及び2ビット回転(rotate)によっ て表現される。次の表は、8ビット値XYから生成される即値を示す。 6ビット即値エンコーディングにより、6ビット符号無し即値(範囲0から6 3)を、ALUの出力に提供されるスケールと共に使用することができる。 一般のソース2エンコーディングは、ほとんどの命令変種に共通である。この 規則には例外が少しあり、それがソース2エンコーディングの限定されたサブセ ットをサポートするか、あるいは、それを少し変形させる。 − Select Instructions.(選択命令) − Shift Instructions.(シフト命令) − Parallel Operations.(並列操作) − Mu1tiply Accumulate Instructions.(乗算累算命令) − Multiply Double Instructions.(乗算ダブル命令) 選択命令は、レジスタ又は16ビット符号無し即値であるオペランドをサポー トするだけである。スケールは無効である。それは、これらのビットは命令の条 件領域によって使用されるからである。 シフト命令は、16ビットレジスタ又は5ビット符号無し即値である1から3 1のオペランドをサポートするだけである。結果のスケールは無効である。 並列操作の場合、レジスタがオペランドのソースとして指定されていれば、3 2ビット読み出しが行われなければならない。即値エンコーディングは、並列操 作については、少し違った意味を持つ。これにより、即値は、32ビットオペラ ンドの16ビット半分の両方に複製できる。並列操作には少し制限のある範囲の スケールが使用できる。 6ビット即値が使用された場合、常に、32ビット量の半分の両方に複製され る。8ビット即値が使用された場合は、それが複製されるのは、それが32ビッ ト量の上半分に回転されるべきであると回転(rotate)が示している時だけであ る。 並列選択操作にはスケールは無効である。スケール領域は、これらの命令では 、 0にセットされる。 乗算累算命令では、8ビット回転即値を指定することはできない。領域のビッ ト10は、どのアキュミュレータを使用すべきかを指定する部分となる。ソース 2は、16ビットオペランドとして意味される。 乗算ダブル命令は、定数を使用することができない。16ビットレジスタだけ が指定できる。この領域のビット10は、どのアキュミュレータを使用すべきか を指定する部分となる。 命令のうちいくつかは、常に32ビット操作(例えば、ADDADD)を含み 、その場合、サイズ・ビットは、1にセットされ、Hi/Loビットは、場合に よっては32ビットオペランドの2つの16ビット半分を交換するのに使用する ことができる。また、いくつかの命令は、常に16ビット操作(例えば、MUL )を含み、サイズビットは0に設定されなければならない。Hi/Loビットは 、レジスタのどちらの半分が使用されるかを選択する(見えないサイズビットは 明らかなものと仮定する)。乗算・累算命令は、ソース・アキュミュレータと目 的レジスタを独立に指定することができる。これらの命令においては、Sizeビッ トは、ソースアキュミュレータを指定するのに使用され、サイズビットは、命令 タイプによって0と暗示される。 16ビット値が(A又はBバスを介して)使用される場合、それは、自動的に 32ビット量に符号拡張される。48ビットレジスタが(A又はBバスを介して )読みだされる場合、下の32ビットだけがバスに現れる。それは、どの場合で も、ソース1、ソース2は、32ビット値に変換されるからである。バスCを使 用する累算命令だけがアキュミュレータレジスタの48ビット全部にアクセスす ることができる。 再充填ビットがセットされていれば、レジスタは使用後、空きの印になり、普 通の再充填メカニズムによってROBから再充填される(ROBについてのセク ションを参照)。ピッコロは、再充填が行われる以前にソースオペランドとして レジスタが再び使用されないかぎり、止まらない。再充填されたデータが有効に なる前のサイクルの最小数(最善の場合で、データはROBの先頭で待っている )は、1か2である。従つて、再充填されたデータは、再充填要求の次の命令に は使わない方が良い。もし、次の2つの命令上でオペランドの使用を避けること ができるのであれば、その方が良い。というのは、これにより、より深いパイプ ライン導入上での性能損失を防ぐことになるから。 再充填ビットは、レジスタ番号に接尾辞“^”を付けることによってアセンブ ラで指定される。空きの印のついたレジスタのセクションは、レジスタのオペラ ンドに依存する。各レジスタの2つの半分は、独立に、再充填の印をつけること もできる(例えば、X0.l^は、X0の下半分だけを再充填することになり、 X0^は、X0全体を再充填することになる)。48ビットレジスタの上「半分 」(ビット47:16)が再充填されると、16ビットのデータがビット31: 16に書き込まれ、ビット47まで符号拡張される。 同じレジスタを2回再充填しようと(例えば、ADD X1,X0^,X0^ )しても、再充填は1度しか行われない。アセンブラは、ADD X1,X0, X0^という文法しか許可すべきではない。 レジスタ読み出しが、レジスタの再充填以前に試みられると、ピッコロは、レ ジスタが再充填されるまでまち状態で止まる。レジスタが再充填の印になると、 レジスタは再充填の値が読まれる以前に更新され、その結果、UNPREDIC ATBLE(予想不可)となる(例えば、ADD X0,X0^,X1は予想不 可。なぜなら、X0については再充填の印であるから、X0と X1の合計で埋めることになる)。 4ビットスケール領域は14のスケールタイプをエンコードする。 − ASR #0,1,2,3,4,6,8,10 − ASR #12から16 − LSL #1 並列Max/Min命令は、スケールを提供しないので、ソース2の6ビット 定数変種は使用されない(アセンブラにより0にセットされる)。 REPEAT命令内で、レジスタのリマッピングがサポートされ、REPEA Tが、ループを解かないままレジスタの移動「窓」にアクセスすることができる 。これについて、以下、詳しく説明する。 目的オペランドは、次の7ビットフォーマットを持つ。 この基本エンコーディングには10の変種がある。 レジスタ番号(Dx)は16のレジスタのどれがアドレスされているかを示す 。Hi/LoビットとSizeビットは、一緒になって、各32ビットレジスタへ1 6ビットレジスタのペアとしてアドレスする。Sizeビットは、どのようにしたら 適切なフラグが、命令タイプに定義されているように、セットされるかを定義す るもので、結果がレジスタバンク及び/又は出力FIFOに書き込まれるか否か には関係しない。これにより、比較及び同様の命令の構成ができる。命令の累算 クラスのある加算は、結果をレジスタに書き戻さなければならない。 どの場合でも、レジスタへの書き戻し又は出力FIFOへの挿入以前の操作の 結果は、48ビット量である。2つの場合がある。 書き込みが16ビットならば、48ビット量は、下の16ビット〔15:0〕 を選択することによって、16ビットに減る。命令が飽和すれば、値は、−2^ 15から2^15−1の範囲に飽和される。次に16ビット値が指示されたレジ スタに書き戻され、また、書き込みFIFOビットがセットされれば、出力FI FOに書き戻される。出力FIFOに書き込まれた場合、それは、次の16ビッ ト値が書き込まれるまで保持される。次の16ビットが書き込まれると、それら の値はペアとなって、単一32ビット値として出力FIFOに入れられる。 32ビットの書き込みならば、48ビットは、下の32ビット〔31:0〕を 選んで32ビット量に減る。 32ビット書き込みでも、48ビット書き込みでも、命令が飽和すれば、48 ビット値は−2^31−1から2^31の範囲の32ビット値に変換される。飽 和すると、 − アキュミュレーへの書き戻しが行われると、48ビット全部が書き込まれる 。 − 32ビットレジスタへの書き戻しが行われると、ビット〔31:0〕が書き 込まれる。 − 出力FIFOへの書き戻しが行われるた場合も、やはりビット〔31:0〕 が書き込まれる。 目的サイズは、レジスタ番号の後の.lまたは.hによって、アセンブラ内で 指定される。レジスタへの書き戻しが全く行われない場合は、レジスタ番号は意 味がなくなるので、目的レジスタを省略して、レジスタへの書き込み無しとする か、あるいは、^を使って、出力FIFOだけへの書き込みを指示する。例えば 、SUB,X0,Y0は、CMP X0,Y0と等価であり、ADD^,X0, Y0は、X0+Y0の値を出力FIFOに入れる。 出力FIFOに値を入れる空きがない場合は、ピッコロは、空きができるまで 待機する。 16ビット値、例えば、ADD X0.h^,X1,X2が書き出されると、 その値は、第2の16ビット値が書かれるまでラッチされる。次にこれら2っの 値は結合されて、32ビット数として出力FIFOに入れられる。最初に書き込 まれる16ビット値は、常に32ビットワードの下半分に現れる。出力FIFO に入れられたデータは、16又は32ビットデータとしての印がつき、endianes sをbig endianシステム上で訂正することができる。 32ビット値が2つの16ビット書き込みの間に書き込まれると、その動作は 未定義になる。 REPEAT命令内で、レジスタ・リマッッピングがサポートされ、REPE ATは、ループを解く(unroll)ことなしにレジスタの移動「窓」にアクセスす ることができる。以下、これについて詳しく説明する。 本発明の好ましい実施の形態において、REPEAT命令は、レジスタ・オペ ランドがループ内で特定される方法を変更するメカニズムを提供する。このメカ ニズムの下で、アクセスするレジスタは命令内のレジスタ・オペランドとレジス タバンクのオフセットの機能によって決定される。オフセットは、プログラム可 能な方法で変更でき、各命令ループの最後で変更されるのが好ましい。このメカ ニズムは、X,Y,Zバンク内にあるレジスタ上で独立に動作することができる 。好ましい実施の形態では、この機能はΛバンク内のレジスタには使用できない 。 論理レジスタ、物理レジスタという概念を使用することができる。命令オペラ ンドは論理レジスタを参照し、これらは、特定のピッコロレジスタ10を同定す る物理レジスタ・レファレンスにマップされる。すべての操作は、再充填も含み 、物理レジスタ上で動作する。レジスタ・リマッピングが生じるのは、ピッコロ 命令ストリームサイドだけであり、ピッコロにロードされるデータは常に物理レ ジスタを目的とし、リマッピングは行われない。 リマッピングのメカニズムについて、以下、図5を参照して説明する。図5は 、ピッコロ・コプロセッサ4の多数の内部構成要素を示すブロック図である。メ モリからARMコア2によって検索されるデータ項目は、リオーダ・バッファ1 2に入れられ、ピッコロレジスタ10は、先に図2を参照した方法で、リオーダ ・バッファ12から再充填される。キャッシュ6に記憶されているピッコロの命 令は、ピッコロ4内の命令デコーダ50に渡されることによって、ピコロ・プロ セッサ・コア54に渡される前にデコードされる。ピッコロ・プロセッサ・コア 54は、先に図3を参照して述べた乗算器/加算器回路20と、累算/退出回路 22と、スケール/飽和(saturate)回路24とを備える。 命令デコーダ50がREPEAT命令によって同定された命令ループの一部を 構成する命令を扱っていて、且つ、そのREPEAT命令が多数のレジスタのリ マッピングを行うことが必要であると指示した場合は、レジスタ・リマッピング 論理52が使用されて、必要なリマッピングが行われる。レジスタ・リマッピン グ論理52は、命令デコーダ50の一部であると考えて良い。ただし、当業者に は明らかなように、レジスタ・リマッピング論理52は、命令デコーダ50に対 して全く別のものとして提供されてもかまわない。 典型的な命令は、その命令にとって必要なデータ項目を含むレジスタを同定す る1つまたは2つ以上のオペランドを備える。例えば、典型的な命令は、2つの ソースオペランドと1つの目的ペランドを含むことができ、その命令が必要とす るデータ項目を含む2つのレジスタと、その命令の結果を入れるべきレジスタを 同定する。レジスタ・リマッピング論理52は、命令デコーダ50から命令のオ ペランドを受け取るが、それらは論理レジスタ・レファレンスを同定する。論理 レジスタ・レファレンスに基づき、レジスタ・リマッピング論理は、物理レジス タのリマッピングをすべきかどうかを決定し、必要なら、物理レジスタ・レファ レンスにリマッピングを適用する。また、リマッピングを適用すべきではないと 決定された場合は、論理レジスタ・レファレンスが物理レジスタ・レファレンス として提供される。リマッピングを行う好ましい方法については、後で、詳しく 説明する。 レジスタ・リマッピング論理からの各出力物理レジスタ・レファレンスは、ピ ッコロ・プロセッサ・コア54に渡されることによって、プロセッサ・コアが、 物理レジスタ・レファレンスによって同定される特定のレジスタ10内のデータ 項目に命令を適用できるようにする。 好ましい実施の形態によるリマッピングのメカニズムによれば、レジスタの各 バンクは、2つのセクション、つまりその中でレジスタがリマップされるセクシ ョンと、レジスタがリマッピング無しで元のレジスタ・レファレンスを保持する セクションとの2つのセクションに割ることができる。好ましい実施の形態にお いて、リマップされたセクションは、リマップされているレジスタ・バンクの下 から開始される。 このリマッピングのメカニズムは多数のパラメータを使用し、これらのパラメ ータについては、図6を参照しながら、詳細に説明する。図6は、様々なパラメ ータがレジスタ・リマッピング論理52によっていかに使用されるかを示すブロ ック図である。尚、これらのパラメータは、リマップされているバンク内の点、 例えば、バンクの下からの相対的値を与えられている。 レジスタ・リマッピング論理52は、2つの主要論理ブロック、つまりRemap (リマップ)ブロック56とBase Update(ベース更新)ブロック58とからな ると考えることができる。レジスタ・リマッピング論理52は、論理レジスタ・ レファレンスに加えられるべきオフセット値を提供するベース・ポインタを使用 する。このベース・ポインタの値は、ベース更新ブロック58によってリマップ ・ブロックに提供される。 BASESTART信号を使用して、ベースポインタの初期値を定義すること ができる。例えば、典型的には、ゼロであるが、他の値を指定することもできる 。このBASESTART信号は、ベース更新ブロック58内のマルチプレクサ 60に渡される。命令ループの最初の繰り返しで、BASESTART信号は、 マルチプレクサ60によって、記憶エレメント66に渡され、ループのその後の 繰り返しでは、次のベース・ポインタ値がマルチプレクサ60によって記憶エレ メント66に渡される。 記憶エレメント66の出力は、現在のベース・ポインタ値としてリマップ論理 56に渡され、またベース更新論理58内の加算器62の入力の1つにも渡され る。加算器62は、ベース・インクリメント値を提供するBASEINC信号を 受け取る。加算器62は、記憶エレメント66によって供給される現在のベース ・ポインタ値を、BASEINC値分だけインクリメントし、結果をモジュロ回 路64へ渡すようになっている。 また、モジュロ回路は、BASEWRAP値を受け取り、この値を加算器62 からの出力ベース・ポインタ信号と比較する。インクリメントされたベース・ポ インタ値がBASEWRAP値以上であれば、その新しいベース・ポインタがラ ップラウンドされて、新しいオフセット値となる。モジュロ回路64の出力は、 記憶エレメント66に記憶されるべき次のベース・ポインタ値となる。この出力 はマルチプレクサ60に提供され、そこから、記憶エレメント66に提供される 。 しかしながら、この次のベース・ポインタ値は、REPEAT命令を管理する ループ・ハードウェアからBASEUPDATE信号を記憶エレメント66が受 け取らないうちは、記憶エレメント66に記憶できない。BASEUPDATE 信号は、ループ・ハードウェアによって周期的に生成され、例えば、命令ループ が反復されるごとに、生成される。BASEUPDATE信号を記憶エレメント 66が受け取ると、記憶エレメントは、以前のベース・ポインタ値にマルチプレ クサ60から提供される次のベース・ポインタ値を上書きする。このように、リ マップ論理58に供給されるベース・ポインタ値は、新しいベース・ポインタ値 に変わる。 レジスタバンクのリマップされたセクション内でアクセスされるべき物理レジ スタは、命令のオペランド内に含まれる論理レジスタ・レファレンスに、ベース 更新論理58によって提供されるベース・ポインタ値を加えることによって決定 される。この加算を行うのは加算器68であり、その出力は、モジュロ回路70 に渡される。好ましい実施の形態において、モジュロ回路70は、レジスタ・ラ ップ値を受け取り、加算器68からの出力信号(論理レジスタ・レファレンスと ベース・ポインタ値の和)がレジスタ・ラップ値を越えると、その結果へ、リマ ップされた領域の下でラップ(wrap)が行われる。モジュロ回路70の出力は、 マルチプレクサ72に提供される。 REGCOUNT値がリマップ・ブロック56内の論理74に提供され、リマ ップされるべきバンク内のレジスタの個数を同定する。論理74は、このREG COUNT値を論理レジスタ・レファレンスと比較し、比較の結果により、制御 信号をマリチプレクサ72に渡す。マルチプレクサ72は、その2つの入力で、 論理レジスタ・レファレンスとモジュロ回路70からの出力(リマップされたレ ジスタ・レファレンス)を受け取る。本発明の好ましい実施の形態において、論 理レジスタ・レファレンスがREGCOUNT値より小さければ、論理74は、 マルチプレクサ72にリマップされたレジスタ・レファレンスを物理レジスタ・ レファレンスとして出力させる。ただし、もし、論理レジスタ・レファレンスが REGCOUNT値以上であれば、論理74は、マルチプレクサ72に論理レジ スタ・レファレンスを直接、物理レジスタ・レファレンスとして出力させる。 先に述べたように、好ましい実施の形態において、リマッピング・メカニズム を引き起こすのはREPEAT命令である。後で、より詳しく述べるように、R EPEAT命令は、ハードウェアで4つのゼロサイクルループを提供する。これ らのハードウェア・ループは、図5に命令デコーダ50の部分として図示されて いる。命令デコーダ50がキャッシュ6から命令を要求する度に、キャッシュは その命令を命令デコーダに戻し、それにより、命令デコーダは、戻された命令が REPEAT命令であるかどうか判断する。もしそれであれば、ハードウェア・ ループの1つが、そのREPEAT命令を扱うように構成される。 各繰り返し命令は、ループ内の命令の数と、ループを繰り返す回数(定数また はピッコロ・レジスタから読み出される)を指定する。2つのオペコードREP EATとNEXTがハードウェアループの定義用に提供され、NEXTオペコー ドは単に区切りとして使用されるだけで、命令としてアセンブルはされない。R EPEATがループの頭に行き、NEXTがループの最後を区切ることによって 、アセンブラはループ・本体内の命令の数を数えることができる。好ましい実施 の形態において、REPEAT命令は、レジスタ・リマッピング論理52が使用 すべきREGCOUNT,BASEINC,BASEWRAP,REGWRAP パラメータのようなリマッピング・パラメータを含むことができる。 レジスタ・リマッピング論理によって使用されるリマッピング・パラメータを 記憶する多数のレジスタを提供することができる。これらのレジスタ内で、前も って定義されたリマッピング・パラメータの多数のセット(集合)を提供するこ とができる一方、いくつかのレジスタはユーザ定義リマッピング・パラメータを 記憶するために残される。REPEAT命令と共に指定されたリマッピング・パ ラメータが、前もって定義されたリマッピング・パラメータの1つと等しい場合 、適当なREPEATエンコーディングが使用され、これにより、マルチプレク サ等が適当なリマッピング・パラメータをレジスタから直接にレジスタ・リマッ ピング論理へ提供する。一方、リマッピング・パラメータが前もって定義された リマッピング・パラメータのどれとも等しくない場合は、アセンブラがRemappin g Parameter Move(RMOV)命令を生成する。これにより、ユーザ定義レジス タ・リマッピング・パラメータの構成が可能となり、RMOV命令の後にREP EAT命令が続く。好ましくは、ユーザ定義リマッピング・パラメータは、RM OV命令によって、そのようなユーザ定義リマッピング・パラメータを記憶すべ く残されていたレジスタに入れられ、マルチプレクサは、それらのレジスタの内 容をレジスタ・リマッピング論理に渡すようプログラムされる。 好ましい実施の形態において、REGCOUNT,BASEIN,BASE WRAP,REGWRAPパラメータは、以下のチャートに示された値の1つを 取る。 図6に戻り、リマップ・ブロック56によって様々なパラメータが使用される 例を次に示す(この例では、論理及び物理レジスタ値は、特定バンクに対する相 対値である。) if(Logical Register(論理レジスタ)<REGCOUNT) Physical Register(物理レジスタ)=(Logical Register(論理レジスタ)+Ba se(ベース))MOD REGCOUNT else Physical Register(物理レジスタ)=Logical Register(論理レジスタ) end if ループの最後で、ループの次の繰り返しが始まる前に、次のベース・ポインタ 更新がベース更新論理58によって行われる。 Base=(Base+BASEINC)MOD BASEWRAP リマッピング・ループの最後でレジスタ・リマッピングが打ち切られ、すべて のレジスタは物理レジスタとしてアクセスされる。好ましい実施の形態において 、 1つのリマッピングREPEATだけがどの時点においてもアクティブである。 ループは、ネストされたままであるが、ある特定の時点で1つだけがリマッピン グ変数を更新してよい。ただし、所望するなら、リマッピング繰り返しはネスト できるようにする。 本発明の好ましい実施の形態に基づくリマッピング・メカニズムを使用した結 果としてのコード密度に関して達成される効果を示すために、以下、典型的なブ ロック・フィルタ・アルゴリズムについて説明する。まず、ブロック・フィルタ ・アルゴリズムの原則について、図7を参照しながら説明する。図7に示されて いるように、アキュミュレータ・レジスタA0は、多数の乗算操作の結果を累算 するように備えられている。この乗算操作というのは、係数c0とデータ項目d 0との乗算、係数c1とデータ項目d1との乗算、係数c2とデータ項目d2と の乗算などである。レジスタA1は、乗算操作の同様のセットの結果を累算して いくが、今度は、係数がずれて、c0とd1、c1とd2、c2とd3と組み合 わせの乗算になる。同様に、レジスタA2は、係数値を更にずらして、c0とd 2、c1とd3、c2とd4といった組み合わせの乗算の結果を累算する。この シフト、乗算、累算のプロセスが、繰り返され、その結果がレジスタA3に入れ られる。 本発明の好ましい実施の形態に基づくレジスタ・リマッピングを使用しないと 、ブロック・フィルタ命令を実行するには、次のような命令ループが必要となる 。 この例において、データ値はレジスタのXバンクに入れられ、係数値はレジス タのYバンクに入れられる。第1ステップとして、4つのアキュミュレータ・レ ジスタA0,A1,A2,A3はゼロにセットされる。アキュミュレータ・レジ スタがリセットされると、命令ループが開始され、このループはREPEAT命 令及びNEXT命令によって区切られる。Z1の値は、この命令ループが繰り返 される回数を示し、また後で述べる理由により、この回数は、実際には、係数の 個数(c0,c1,c2など)を4で割った数に等しい。 命令ループには16の乗算累算命令(MULA:multiply accumulate instru ctions)があり、1回目の繰り返しが終わると、その結果、レジスタA0,A1 ,A2,A3は、REPEAT命令と第1のMULA命令との間で上のコードで 示される計算の結果を含む。乗算累算操作がどのように動作するかを示すために 、最初の4つのMULA命令を考えることにする。最初の命令によって、Xバン ク・レジスタ・ゼロの最初のすなわち下の16ビット内のデータ値と、Yバンク ・レジスタ・ゼロ内の下の16ビットとが掛け合わされ、その結果がレジスタA 0に加えられる。これと同時に、Xバンク・レジスタ・ゼロの下の16ビットが 再充填の印になり、レジスタのこの部分に新しいデータ値が再充填できることを 示す。このように印がつき、図7から明らかなように、データ項目d0が係数c 0で乗算されると(これは最初のMULAによって表される)、d0は、ブロッ ク・フィルタ命令の残り部分では不要になり、新しいデータ値で置き換えられる 。 次に、第2のMULAによって、Xバンク・レジスタ・ゼロの第2のすなわち 上の16ビットと、Yバンク・レジスタ・ゼロの下の16ビットとが掛け合わさ れ(これは、図7における,d1 x c0を表す)。同様に、第3、第4のM ULA命令が、d2 x c0,及びd3 x c0の乗算を行う。図7から明 らかなように、これらの4つの計算が行われると、係数C0は不要となり、レジ スタY0.lは、再充填の印がつき、他の係数(c4)で上書きできるようにな る。 次の4つのMULA命令は、それぞれ、d1xc1,d2xc1,d3xc1 ,d4xc1の計算を表す。d1xc1の計算が終了すると、d1は不要になる ので、レジスタX0.hは再充填ビットの印がつく。同様に、4つの計算すべて が終了すると、係数c1は不要になるので、レジスタY0.hは再充填用の印が つ く。同様に、次の4つのMULA命令は、d2xc2,d3xc2,d4xc2 ,d5xc2の計算に対応し、最後の4つの計算は、d3xc3,d4xc3, d5xc3,d6xc3の計算に対応する。 上記の実施の形態において、リジスタはリマップできず、各乗算操作は、オペ ランドで指定される特定レジスタによって明示的に再生されなければならない。 16のMULA命令の実行が終了すると、係数c4からc7及びデータ項目d4 からd10まで、命令ループを繰り返すことができる。また、ループは、繰り返 し1回につき4つの係数値で操作するので、係数値の個数は、4の倍数でなけれ ばならず、Z1=係数/4個の計算が行われる。 本発明の好ましい実施の形態におけるリマッピング・メカニズムを使用するこ とによって、命令ループは飛躍的に減らすことができ、4つの乗算累算命令を含 むだけになる。さもなければ16の乗算累算命令が必要になる。このリマッピン グ・メカニズムを使用すると、コードは以下のように書くことができる。 先に述べたのと同様に、第1のステップで、4つのアキュミュレータ・レジス タA0−A3をゼロにセットする。次に、REPEATオペコードとNEXTオ ペコードによって区切られる命令ループに入る。REPEAT命令は、以下のよ うに多数のパラメータを持つ。 X++: レジスタのXバンクに、BASEINCが‘1’であることを示す 。 n4: REGCOUNTが‘4’であり、従って、最初の4つのXバンクレ ジスタX0.lからX1.hがリマップされることを示す。 w4: レジスタのXバンクに、BASEWRAPが‘4’であることを示す 。 Y++: レジスタのYバンクに、BASEINCが‘1’であることを示す 。 n4: REGCOUNTが‘4’であり、従って、最初の4つのYバンクレ ジスタY0.lからY1.hがリマップされることを示す。 w4: レジスタのYバンクに、BASEWRAPが‘4’であることを示す 。 r4: レジスタのYバンクに、REGWRAPが‘4’であることを示す。 尚、Z1の値は、先行技術の例では、係数の個数/4に等しくなるが、ここで は、係数の個数と等しくなる。 命令ループの最初の繰り返しで、ベースポインタの値はゼロであり、リマッピ ングはない。ただし、次にループが実行される時は、XバンクもYバンクもベー ス・ポインタの値は‘1’であるから、オペランドは次のようにマップされる。 X0.lはX0.hになる X0.hはX1.lになる X1.lはX1.hになる X1.hはX0.lになる(BASEWRAPが‘4’だから) Y0.lはY0.hになる Y0.hはY1.lになる Y1.lはY1.hになる Y1.hはY0.1になる(BASEWRAPが‘4’だから) 従って、2回目の繰り返しでは、本発明のリマッピングを含まない先に述べた 例における第5から第8番目のMULA命令によって示される計算を、4つのM ULA命令が実際に行うことがわかる。同様に、3回目、4回目のループの繰り 返しでは、先行技術コードの第9から第12番目、そして第13から第16番目 のMULA命令によって実行された計算が行われる。 従って、上記コードは、先行技術のコードと全く同様のブロック・フィルタ・ アルゴリズムを行うわけだが、ループ本体内のコード密度を4倍に改善している 。つまり、先行技術では16の命令が必要であったのに比較して、4つの命令で すむ。 本発明の好ましい実施の形態に基づくレジスタ・リマッピング技術を使用する ことによって、以下のような利点が得られる。 1.コード密度を改善する。 2.場合によっては、レジスタを空きとして印をしてからピッコロのリオーダ ・バッファによって再充填されるまでのレイテンシー(latency)を隠すこともで きる。これは増えるコードサイズを捨ててアンローリングループによって実現さ れる。 3.アクセスされるべきレジスタの数を変化させることができる。ループ繰り 返し実行数を変化させることによって、アクセスされるレジスタの数を変化させ ることができる。 4.アルゴリズム開発を簡単にすることができる。適当なアルゴリズムについ て、プログラマはアルゴリズムのn番目の段に対する1つのコードを生成して、 レジスタ・リマッピングを使用して、その公式をデータのスライディング・セッ トに適用することができる。 上記レジスタ・リマッピング・メカニズムは、本発明の範囲から離れることな く、ある程度の変形が可能であることが明らかになるであろう。例えば、レジス タ10のバンクは、プログラマによって命令オペランドに指定される以上の物理 レジスタを提供することができる。これらの余分のレジスタは直接的にはアクセ スできないが、レジスタ・リマッピング・メカニズムでは、これらのレジスタを 使用することができる。例えば、先に出した例を考えてみよう。レジスタのXバ ンクに、プログラマの使える32ビットレジスタが4つあり、従って8つの16 ビットレジスタが論理レジスタ・レファレンスによって指定するこができる。レ ジスタのXバンクが、実際には、例えば6つの32ビットレジスタから成る場合 、プログラマにとって直接アクセスできない16ビットレジスタが余分に4つあ ることになる。しかしながら、これらの4つのレジスタは、リマッピング・メカ ニズムによって使用可能となり、データ項目の記憶のための付加的レジスタを提 供する。 以下のアセンブラ・シンタクス(文法)を使用することができる。 >>は、論理右シフト、又は、シフト・オペランドが負であれば、左シフトを 意味する(下の<1scale>を参照)。 −>>は、算術右シフト、又は、シフト・オペランドが負であれば、左シフト を意味する(下の<scale>を参照)。 RORは、右回転を意味する。 SAT(a)は、aの飽和値を意味する(目的レジスタのサイズによって、1 6ビット又は32ビットで飽和する)。特に、16ビットで飽和するために、+ 0x7fffより大きいどんな値も+0x7fffで置き換えられ、−0x80 00より小さいどんな値も−0x8000で置き換えられる。32ビット飽和は 、同様に、極限値+0x7fffffffと−0x80000000がある。目 的レジスタが48ビットである場合も、飽和は32ビットで行われる。 ソース・オペランド1は、次のフォーマットの1つを取ることができる。 用される。別の言い方をするなら、ソース・スペシファイアの7ビットはすべて 有効であり、レジスタは32ビット値として(希望すれば、交換される)、また は符号拡張した16ビット値として読まれる。アキュミュレータに取っては、下 の32ビットだけが読まれる。“^”は、レジスタ再充填を指定する。 16ビット値だけが読まれる。 2ビット値だけが読まれ、上半分及び下半分は希望すれば交換できる。 ソース・オペランド2は、次のフォーマットの1つを取ることができる。 <src2>は、3つのオプションの短縮形として使用される。 プラス最終結果のスケール(<scale>)。 − オプションでシフトされた8ビット定数(<immed_8>)、ただし、 最終結果のスケールはない。 − 6ビット定数(<immed_6>)、プラス、最終結果のスケール(<sca le>)。 <src2_maxmin>は、<src2>と同じであるが、ただし、スケールは許可さ れない。 <src2_shift>シフト命令は、<src2>の限定的サブセットを提供する詳 細は上記を参照。 <src2_par> <src2_shift>用である。 第3のオペランドを指定する命令に対して: いずれかを示す短縮形。48ビットすべてが読まれる。再充填は指定されない。 目的レジスタは次のフォーマットを持つ: “.”の拡張はない。 レジスタ全部が書かれる(アキュミュレータの場合は、48ビット)。レジス タへの書き戻しが必要ない場合は、使用されるレジスタは重要でない。アセンブ ラが、目的レジスタの省略をサポートし、書き戻しの必要がないこと、又は“. l”つまり、書き戻しは必要ないが結果が16ビット量であるかのようにフ ラグをセットすべきであることを示す。^は、値が出力FIFOに書き込まれる ことを示す。 <scale> これは、代数スケールの数を表す。14のスケールが使用できる 。 ASR #0,1,2,3,4,6,8,10 ASR #12から16 LSL #1 <immed_8> これは、符号無し8ビット即値を表す。これは、0、8、1 6、又は24シフトで左回転された1バイトから成る。従って、0xYZ000 000,0x00YZ0000、0x0000YZ00、0x000000YZ の値が、任意のYZに対してエンコードできる。回転は、2ビット量としてエン コードされる。 <imm_6> これは、符号無し6ビット即値を表す。 <PARAMS> これは、レジスタ・リマッピングを指定し、次のフォーマ ットを持つ: <BANK><BASIC>n<RENUMBER>w<BAS EWRAP> <cond>という表現は、以下の条件コードの任意の1つの短縮形である。尚、 エンコーディングは、ARMと少し異なる。それは、符号無しLS及びHIコー ドは、より役立つ符号付きオーヴァーフロー/アンダーフローのテストで置き換 えられているからである。Vフラグ及びNフラグは、ピッコロ上で、ARMとは 違う方法でセットされるので、条件テストからフラグ・チェックへの翻訳も、A RMとは異なる。 ピッコロが扱うのは符号付き量であるから、符号無しLS及びHI条件は、落 とされ、オーバーフローの方向を記述するVPとVNで置き換えられている。A LUの結果は48ビット幅であるから、MIとLTが、同様にPLとGEが同じ 機能を行う。 すべての操作は、特に注意書のない限り、符号付きである。 第1条件コード及び第2条件コードは、それぞれ、次のものから成る。 N 負 Z ゼロ C キャリー/符号無しオーバーフロー V 符号付きオーバーフロー 算術命令は、並列命令と「フル幅」命令の2つに分けることができる。「フル 幅」命令というのは、一次フラグをセットするだけであるのに対して、並列オペ レータは、結果の上16ビット半分と下16ビット半分とに基づき、一次フラグ と2次フラグをセットする。 N,Z,Vフラグは、スケールを適用した後に、目的に書き込まれる前に、A LUの結果に基づいて計算される。ASRは常に、結果を記憶するのに必要なビ ット数を減らすが、ASLだと、それを増やす。これを避けるために、ピッコロ は、ASLスケールが適用された場合、48ビットの結果を削って、ゼロ検出及 びオーバーフローが行われるビット数を制限する。 Nフラグの計算は、符号付き算術計算が行われると推定して、行われる。それ は、オーバーフローが起きた場合、結果の最上位ビットはCフラグかNフラグで あり、それは、入力オペランドが符号付きか符号無しかによるからである。 Vフラグは、選択された目的に結果を書き込んだ結果、精度の損失があるか否 かを示す。書き戻しが選択されなかった場合も、「サイズ」は含まれており、オ ーバーフロー・フラグは正しくセットされる。オーバーフローが起きるのは、次 の場合である。 − 結果が、−2^15から2^15−1の範囲にないのに16ビットレジス タに書き込んだ場合。 − 結果が、−2^31から2^31−1の範囲にないのに32ビットレジス タに書き込んだ場合。 並列加算/減算命令は、結果の上半分及び下半分に独立にN,Z,Vフラグを セットする。 アキュミュレータに書き込みを行うと、32ビットレジスタに書き込まれたか のように、Vフラグがセットされる。 飽和絶対命令(SABS)も、入力オペランドの絶対値が指定された目的に合 わないと、オーバーフロー・フラグをセットする。 キャリー・フラグは、加算と減算命令によりセットされ、MAX/MIN,S ABS、CLB命令によって「バイナリー」フラグとして使用される。乗算操作 を含む他のすべての命令は、(単数または複数の)キャリー・フラグを保存する 。 加算と減算操作については、キャリーは、ビット31又はビット15又は目的 が32ビット幅であるか16ビット幅であるかの、結果によって生成される。 標準的算術命令は、フラグのセット方法によって、多くのタイプに分類するこ とができる。 加算命令、減算命令の場合、Nビットがセットされると、すべてのフラグが保 存される。Nビットがセットされないと、フラグは、次のように更新される。 Zがセットされるのは、フル48ビット結果が0だった場合。 Nがセットされるのは、フル48ビット結果にビット47のセットがあった 場合(負だった場合)。 Vがセットされるのは: 目的レジスタが16ビットであり、符号付き結果が16ビットレジスタに 合わない(−2^15<=x<2^15の範囲にない)場合 目的レジスタが32/40ビットレジスタであり、符号付き結果が32ビ ットに合わない場合 <dest>が32又は40ビットレジスタである場合でCフラグがセットされ るのは、<scr1>と<scr2>を合計してビット31からキャリーがある時、又 は、<scr1>から<scr2>を減算してビット31から借り(borrow)が生じな い時(ARM上と同じキャリー)。<dest>が16ビットレジスタである場合で Cフラグがセットされるのは、合計のビット15からキャリーがある時。 2次フラグ(SZ,SN,SV,SC)は保存される。 48ビットレジスタから乗算又は累算を行う命令の場合。 Zがセットされるのは、フル48ビット結果が0だった場合。 Nがセットされるのは、フル48ビット結果にビット47のセットがあった 場合(負だった場合)。 Vがセットされるのは:(1)目的レジスタが16ビットであり、符号付き 結果が16ビットレジスタに合わない(−2^15<=x<2^15の範囲にな い)場合、(2)目的レジスタが32/48ビットレジスタであり、符号付き結 果が32ビットに合わない場合 Cは保存される。 2次フラグ(SZ,SN,SV,SC)は保存される。 論理操作、並列加算及び減算、max及びmin、シフトなどを含むその他の命令は 、以下のようにカバーされる。 加算命令、減算命令は、2つのレジスタを加算又は減算し、結果をスケールし て、レジスタに戻して記憶させる。オペランドは、符号付き値として扱われる。 不飽和変種に対するフラグ更新は、オプショナルであり、Nを命令の最後に付け 足すことによって抑制することもできる。 OPCは、命令のタイプを指定する。 ニューモニックス: アセンブラは以下のオペコードをサポートする CMPは、レジスタ書き込みディスエーブル(disabled)のフラグをセットす る減算であり、CMNは、レジスタ書き込みディスエーブルのフラグをセットす る加算である。 フラグ: これについては、上記の通り。 含める理由 ADCは、shift/MAX/MIN操作に続いてレジスタの下にキャリーを挿 入するのに使える。また、32/32割算を行うのにも使用される。さらに、拡 張精密加算を提供する。Nビットを加算することによって、フラグを細かく制御 することができ、特にキャリーを制御できる。これにより、1ビットにつき2サ イクルで、32/32ビット割算ができる。 飽和加算及び減算が、G.729などに必要である。 カウンタのインクリメント/ディクリメント。RSBは計算シフト(x=32 −xが普通の操作)に使える。飽和RSBは、飽和否定(G.729で使用され る)に必要である。 加算/減算累算命令は、累算及びスケーリング/飽和を伴う加算及び減算を行 う。乗算累算命令と違って、アキュミュレータ番号は、目的レジスタと独立に指 定することはできない。目的レジスタの下2ビットは、累算に使う48ビットア キュミュレータの番号、accを与える。従って、ADDA X0,X1,X2, A0及びADDA A3,X1,X2,A3は有効であるが、ADDA X1, X1,X2,A0は無効である。このクラスの命令では、結果はレジスタに書き 戻されなければならず、目的領域の書き戻し無しエンコーディングは許可されな い。 OPCは、命令のタイプを指定する。以下において、accは(DEST〔1: 0〕)である。Saビットは、飽和を示す。 動作(OPC): ニューモニック: コマンドの前のSは飽和を示す。 フラグ: 上記を参照 含める理由 ADDA(加算累算)命令は、1サイクルにつき、整数アレーの2ワードとア キュミュレータ(例えば、それらの平均を見つけるのに)の和を取るのに使える 。SUBA(減算累算)命令は、差の和を計算するのに(例えば相関のために) 使え、2つの別個の値を減算して、その差を第3のレジスタに加える。 <acc>とは異なる<dest>を使用することによって、丸め(rounding)をと もなう加算をすることもできる。例えば、X0=(X1+X2+16384)> >15は、16384をA0に保持しながら1サイクルで行うことができる。丸 め付定数加算は、ADDA X0,X1,#16384,A0で行うことができ る。 ビットの正確な導入には: sum of((a_i*b_i)>>k)(一般的にはTrueSpeechで使用される) 標準ピッコロ・コードは以下のようになる: MUL t1, a_0,b_0,ASR#k ADD ans,ans,t1 MUL t2,a_1,b_1,ASR#k ADD ans,ans,t2 このコードには2つの問題がある。1つは長すぎること、もう1つは、加算が 48ビット精密加算ではなくガードビットが使用できないこと。これに対処する には、ADDAを使うことである。 MUL t1,a_0,b_0,ASR#k MUL t2,a_1,b_1,ASR#k ΛDDA ans,t1,t2,ans これにより、25%のスピードアップが得られる、48ビット精度が保持される 。 並列命令における加算/減算は、32ビットレジスタに対(ペア)で保持され る2つの符号付き16ビット量で行われる。一次条件コードフラグは、最上位1 6ビットの結果からセットされ、二次フラグは、下位半分から更新される。これ らの命令のソースとして指定できるのは32ビットレジスタだけであるが、値は 、ハーフワード交換できる。各レジスタの個々の半分は、符号付き値として扱わ れる。計算及びスケーリングは、精度損失無しで行われる。従って、ADDAD D X0,X1,X2,ASR#1は、X0の上半分及び下半分における正しい 平均を生成する。各命令にはオプションナル飽和が提供され、それには、Saビ ットをセットする。 OPCが操作を定義する。 動作(OPC): Saビットがセットされている場合、各和/差分は独立に飽和する。 ニューモニック: コマンドの前のSは飽和を示す。 アセンブラは以下のものもサポートする 書き戻しなしの標準命令によって生成される。 フラグ Cがセットされるのは、2つの上の16ビット半分を加算する時に、ビット1 5のキャリーがある場合。 Zがセットされるのは、上の16ビット半分の和が0である場合。 Nがセットされるのは、上の16ビット半分の和が負である場合。 Vがセットされるのは、上の16ビット半分の符号付き17ビット和が16ビ ットに当てはまらない(ポスト・スケール)場合。 SZ,SN,SV,SCが、同様に、下の16ビット半分に対してセットされ る。 含める理由 並列加算及び減算命令は、単一32ビットレジスタに保持される複素数を操作 するのに使用でき、FFTカーネルで使用される。また、16ビットデータのベ クトルの単純な加算/減算にも使え、1サイクルで2つの要素を処理することが できる。 ブランチ(条件付き)命令は、制御フローにおける条件付き変更を行うことを 可能とする。ピッコロは、取られたブランチを実行するのに3サイクル使う。 動作 一次フラグに基づき<cond>が保持されれば、オフセットによるブランチ。 オフセットは、符号付き16ビット番号のワードである。この時、オフセット の範囲は、−32768から+32767ワードに制限される。 アドレス計算は次のようにされる。 目的アドレス=ブランチ命令アドレス+4+オフセット ニューモニック: B<cond><destination_labe1> フラグ: 影響されない 含める理由: 殆どのルーチンで非常に役立つ。 条件付き加算又は減算命令は、条件付きでsrc2をsrc1へ加算または減算する 。 OPCが命令のタイプを指定する。 動作(OPC):ニューモニック: フラグ: 上記参照 含める理由 条件付き加算または減算命令により、効率のよい除算コードを構成することが できる。 例1: X0にある32ビット符号無し値を、X1にある16ビット符号無し 値で割る(X0<(X1<<16)且つX1.h=0と仮定する)。 ループの最後で、X0.lは除算の商を保持する。余りは、キャリーの値に従 って、X0.hから復元される。 例2: XOにある32ビット正の値を、X1にある32ビット正の値で割り 、早く終了する。 最後に、X2が商を保持し、余りは、X0から復元される。 カウント・リーディング・ビット命令により、データが正規化される。 動作 destは、src1にある値が左にシフトされるべき場所数にセットされて、ビッ ト31がビット30と異なるようにする。これは0−30の範囲の値であるが、 例外として、src1が−1又は0の場合は、31が戻される。 ニューモニック CLB <dest>,<src1> フラグ Zがセットされるのは、結果が0の時。 Nはクリアされる。 Cがセットされるのは、src1が−1又は0の時。 Vは未使用。 含む理由: 正規化に必要なステップ ピッコロの実行を止めるには、Halt及びBreakpoint命令がある。 OPCは命令のタイプを指定する。 動作(OPC) 0 ピッコロの実行が止められ、Haltビットがピッコロ状態レジスタにセット される。 1 ピッコロの実行が止められ、Breakビットがピッコロ状態レジスタにセッ トされ、ARMが中断され、ブレークポイントに到達したことを知らせる。 ニューモニック 0 HALT 1 BREAK フラグ 影響されない。 論理演算命令は、32又は16ビットレジスタ上で論理演算を行う。オペラン ドは、符号無し値として扱われる。 OPCは、実行すべき論理操作をエンコードする。 動作(OPC):ニューモニック: アセンブラが以下のオペコードをサポートする TSTは、レジスタ書き込みがディスエーブルされたANDである。TEQは レジスタ書き込みがディスエーブルされたEORである。 フラグ Zがセットされるのは、結果が全て0の時。 N,C,Vは保存される。 SZ,SN,SC,SVは保存される。 含む理由: スピーチ圧縮アルゴリズムは、情報をエンコードするために、パックされたビ ット領域を使用する。ビットマスク命令は、これらの領域の抽出/パック化を助 ける。 Max及びMin操作命令は、最大及び最小操作を実行する。 OPCは命令のタイプを指定する。 動作(OPC): ニューモニック: フラグ Zがセットされるのは、結果が0の時。 Nがセットされるのは、結果が負の時。 C Maxでは、src2>=src1(dest=src1の場合)の時にセットされる。Mi nでは、src2>=src1(dest=src2の場合)の時にセットされる。 V保存される 含む理由: 信号の強さを見るために、多数のアルゴリズムがサンプルをスキャンして、サ ンプルの絶対値の最大/最小を決める。これに、MAX,MIN操作が使用でき る。信号の最初の最大値か最後の最大値のどちらを見つけたいかによって、オペ ランドsrc1及びsrc2は、交換することができる。 MAX X0,X0,#0は、X0を正の数に変換し下をクリップする。 MIN X0,X0,#255は、X0の上をクリップする。これは、グラフ ィック処理に役立つ。 並列命令におけるMAX,MIN操作は、並列16ビットデータ上で最大値 、最小値操作を行う。 OPCは、命令のタイプを指定する。 動作(OPC):ニューモニック: フラグ Zがセットされるのは、結果の上16ビットがゼロの場合。 Nがセットされるのは、結果の上16ビットが負の場合。 C Max: src2.h>=scrc1.h(dest=src1の場合)の時にセットさ れる。 Min: src2.h>=scrc1.h(dest=src2の場合)の時にセットさ れる。 V保存される SZ,SN,SC,SVは、同様に、下16ビット半分用にセットされる。 含む理由: 32ビットMax,Minについて。 Move Long Immeidate Operation命令により、レジスタは、どの符号付き16 ビットの符号拡張値をセットされることができる。これらの命令のうち2つは、 32ビットレジスタに任意の値にセットすることができる(連続する高位半分と 低位半分にアクセスすることによって)。レジスタ間の移動については、選択操 作を参照。 MOV<dest>,#<imm_16> アセンブラは、MOV命令を使用して非インターロックNOP操作を提供する ことができる。つまり、NOPは、MOV,#0と等価である。 フラグ フラグは影響されない。 含む理由: レジスタ/カウンタをイニシアライズする。 乗算累算操作命令は、符号付き乗算を行い、累算または退出(deaccumulation) 、スケーリング及び飽和を伴う。 OPC領域は命令のタイプを特定する。 動作(OPC): 各場合、Saビットがセットされていれば、結果は目的に書き込まれる前に飽和 される。 ニューモニック: コマンドの手前のSは飽和を示す。 フラグ: 上記を参照。 含む理由: 1サイクル保持されたMULAがFIRコードに必要である。MULSは、F FTバタフライで使用される。また、MULAは、丸め(rounding)付き乗算に 役立つ。例えば、A0=(X0*X1+16384)>>15は、16384を 別のアキュミュレータ(例えばA1)に保持することによって、1つのサイクル で行うことができる。FFTカーネルには異なった<dest>及び<acc>が必要 である。 Multiply Double Operation命令は、符号付き乗算を行い、結果をダブルにし てから累算又は退出、スケーリング、飽和を行う。 OPCは命令のタイプを指定する。 動作(OPC) ニューモニック: フラグ: 上記参照 含む理由: MLD命令は、G.729など、分数(fractional)算術を使用するアルゴリ ズムにとって必要である。殆どのDSPは、累算又は書き戻しの前に乗数の出力 において1ビット左にシフトさせることのできる分数モードを提供する。これを 特定命令としてサポートすることにより、プログラマにはより大きなフレキシビ リティーが与えられる。Gシリーズの基本操作のいくつかと同等の名前を以下に 示す。 L_msu=>SMLDS L_mac=>SMLDA これらは、1ビット左シフトする時に乗数の飽和を利用する。一連の分数の乗 算・累算が必要な場合、精度のロスなしに、MULAを使うことができ、その和 は、33.14フォーマットで保持される。必要なら、左シフト及び飽和を最後 に利用して、1.15フォーマットに変換することができる。 乗算演算命令は、符号付き乗算、及びオプショナルなスケーリング/飽和を行 う。ソース・レジスタ(16ビットのみ)は、符号付き数として扱われる。 OPCは命令のタイプを指定する。 動作(OPC): ニューモニック: フラグ 上記を参照。 含む理由。 符号付き且つ飽和乗算は、多くの処理で必要となる。 Register List操作は、複数のレジスタのセット(集合)に操作を行う時に使 用される。Empty and Zero命令は、ルーチンを始める前に、あるいはルーチンと ルーチンとの間で、レジスタの選択をリセットするのに使用する。Output命令を 使って、レジスタのリストの内容を出力FIFOに記憶することができる。 OPCは命令のタイプを指定する。 動作(OPC): ニューモニック:フラグ 影響されない 例 EMPTY {A0,A1,X0−X3} ZERO {Y0−Y3} OUTPUT {X0−Y1}^ また、アセンブラはシンタクス(文法)をサポートする。 OUTPUT Rn その場合、MOV^,Rn命令を使ってレジスタを1つ出力することになる。 EMPTY命令は、空であるすべてのレジスタが有効データを含む(すなわち 、空きでない)まで、止まっている。 リマッピングREPEATループ内では、レジスタ・リスト操作は使用される べきでない。 OUTPUT命令が出力用に指定することができるレジスタは8つまでである 。 含む理由: 1つのルーチンが終了した後、次のルーチンは、ARMからデータを受け取れ るようすべてのレジスタが空きであることを期待する。これを逐行するために、 EMPTY命令が必要となる。FIRそのたのフィルタを実行する前に、すべて のアキュミュレータ及び部分的結果がゼロにされなければならない。これには、 ZERO命令が助けとなる。これらの命令は、一連の単一レジスタ移動を置き換 えることによってコード密度を改善するよう設計されている。OUTPUT命令 は、一連のMOV^,Rn命令を置き換えることによってコード密度を改善する べく含まれる。 リマッピング・パラメータ・移動命令RMOVが提供されるので、ユーザ定義 のレジスタ・リマッピング・パラメータの構成を取ることができる。 命令エンコーディングは以下の通り。 各PARAMS領域は次のエントリから成る: これらのエントリの意味を以下に示す。 ニューモニック: RMOV<PARAMS>,[<PARAMS>] <PARAMS>領域は次のフォーマットを取る。 <PARAMS>::=<BANK><BASEINC>n<RENUMBER>w<BASEWRAP> RMOV命令の使用がリマッピングのアクティブ中だと、その挙動は、UNP REDICATABLE(予想不可)である。 フラグ 影響されない。 Repeat命令は、4つのゼロ・サイクル・ループをハードウェアで提供する。R EPEAT命令は、新しいハードウェア・ループを定義する。ピッコロは、最初 のREPEAT命令にハードウェア・ループ0を使用し、最初のrepeat命令に埋 め込まれた(nested)REPEAT命令にハードウェア・ループ1を使用し、以 下同様である。REPEAT命令は、どのループが使用されているかを指定する 必要はない。REPEAT命令は厳密に埋め込まれなければならない。深さ4を 越える埋め込みを試みると、挙動は、予想不可となる。 各REPEAT命令は、(REPEAT命令の直後の)ループ内の命令の数を 指定し、そのループを何回巡るかの回数(定数またはピッコロレジスタから読み 込まれる)を指定する。 ループ内の命令の数が小さい(1又は2)場合、ピッコロはそのループをセッ トアップするために余分のサイクルを使っても良い。 ループ・カウントがレジスタ指定であれば、32ビットアクセスという意味に なる(S1=1)が、下の16ビットだけが意味を持ち、その数は符号無しであ るとされる。ループ・カウントがゼロの場合、ループの動作は未定義である。ル ープ・カウントのコピーが取られ、レジスタはループに影響せずに直接再利用( 又は、再充填さえ)できる。 REPEAT命令は、ループ内でレジスタ・オペランドが指定される方法を変 えるメカニズムを提供する。詳細は上記の通り。 ループ数がレジスタ指定されたREPEATのエンコーディング:固定されたループ数のREPEATのエンコーディング: RFIELDオペランドは、ループ内でどの16リマッピングパラメータ構成 を使用すべきかを指定する。 アセンブラは、ハードウェア・ループを定義するためにREPEATとNEX Tという2つのオペコードを提供する。REPEATはループの始めに行き、N EXTはループの最後を区切ることによって、アセンブラはループ本体内にある 命令の数を数えることができる。REPEATにとって必要なことは、ループの 数を定数あるいはレジスタとして指定すればよいだけである。例えば: これは、2つのMULA命令をX0回実行する。また、 は、10回乗算累算を行う。 アセンブラは、次のシンタクス(文法)をサポートする。 REPEAT #iterations[,<PARAMS>] REPEATのために使用するリマッビング・パラメータを指定する。必要な リマッピング・パラメータが前もって定義されたパラメータのセットの1つと等 しい場合は、適当なREPEATエンコーディングが使用される。そうでなけれ ば、アセンブラはRMOVを生成してREPEAT命令に続くユーザ定義パラメ ータをロードする。RMOV命令及びリマッピング・パラメータ・フォーマット の詳細については前記を参照。 ループの繰り返し(iteration)の回数が0であれば、REPEATの動作はU NPREDICATABLE(予想不可)である。 命令数領域が0にセットされると、REPEATの動作は、予想不可である。 ループに1つの命令しかなく、その命令がブランチであれば、予想不可能の挙 動をする。 REPEATループの範囲からそのループの外へのブランチは、予想不可であ る。 飽和絶対命令は、ソース1の飽和絶対値(saturated absolute)を計算する。動作: dest=SAT((src1>=0)?src1:-src 1).値は常に飽和する。特に 、0x80000000の絶対値は0x7fffffffであり、0x8000 0000ではない。 ニューモニック: SABS<dest>,<src1> フラグ Zがセットされるのは、結果が0の時。 Nは保存される。 Cがセットされるのは、scr<0(dest=_scr1の場合)。 Vがセットされるのは、飽和が生じた時。 含む理由: 多くのDSPアプリケーションで役立つ。 選択(select)操作(条件付き移動)は、条件付きでソース1またはソース2 を目的レジスタに移動させる。選択は、常に、移動と等価である。並列加算/減 算の後で使用するための並列操作もある。 尚、両方のソースオペランドは、導入理由のための命令によっても読み出すこ とができるので、一方が空きであれば、そのオペランドが絶対的に必要であるか どうかに関係なく、命令は止まる。 OPCは、命令のタイプを指定する。 動作(OPC):ニューモニック: レジスタが再充填の印になつていると、それは、無条件で再充填される。また 、アセンブラ、次のニューモニックも提供する。 MOV<cond>A,Bは、SEL<cond>A,B,Aと等価である。SELF TとSELFFは、SELTF,SELTTを使用して、src1とsrc2を交換す ることによって得ることができる。 フラグ すべてのフラグは、一連の選択が行われるよう保存される。 含む理由: 簡単な決定をブランチに頼ることないインラインにするために使用される。最 大要素のためにサンプル又はベクトルをスキャンする時に、そしてビタビ(Viter bi)アルゴリズムによって使用される。 シフト操作命令は、指定量の左右の論理シフト、右算術シフト、回転(rotate) を提供する。シフト量は、レジスタの内容の下8ビットから取られた−128か ら+127の間の符号付き整数、又は、+1から+31の範囲内の即値である。 負の量のシフトは、ABS(シフト量)分反対方向にシフトさせる。 入力オペランドは、32ビットに符号拡張され、結果の32ビット出力は、書 き戻し前に48ビットに符号拡張され、48ビットレジスタへの書き込みが感度 よく機能する。 OPCは、命令のタイプを指定する。 動作(OPC): ニューモニック:フラグ Zがセットされるのは、結果が0の時。 Nがセットされるのは、結果が負の時。 Vは保存される。 Cは、最後にシフトされて出た(ARM上として)ビット値にセットされる。 レジスタ指定されたシフトの挙動は以下の通り。 −32によるLSLの結果は0で、src1のビット0にCがセットされる。 −32を越えるものでのLSLは、結果が0で、Cは0にセットされる。 −32によるLSRの結果は0で、src1のビット31にCがセットされる。 −32を越えるものでのLSRは、結果が0で、Cは0にセットされる。 −32以上でのASRの結果は充填され、Cはsrc1のビット31に等しい。 −32でのRORの結果はsrc1に等しく、Cがsrc1のビット31にセットされ る。 −32を越えるnによるRORは、n−32によるRORと同じ結果とキャリー アウト(carry out)になるので、量が1から32の範囲内になるまで、繰り返し 32をnから引く。上記参照。 含む理由: 2のべき乗による乗算/除算。ビット及び領域抽出。シリアル・レジスタ。 未定義の命令が、上記命令セットリストで挙げてある。それらの実行により、 ピッコロは、実行を停止し、状態レジスタにUビットをセットし、それ自身をデ ィスエーブルする(制御レジスタ内のEビットがクリアされたかのように)。こ れにより、命令が将来拡張された場合も、それがトラップされて、オプショナル に、既存の手段上でエミュレートされることが可能である。 ARMからピッコロ状態へのアクセスは以下の通り。状態アクセス・モードを 使用して、ピッコロの状態を観察/変更する。このメカニズムが提供されるのは 次の2つの理由からである。 −文脈(Context)切替え −デバッグ ピッコロは、PSTATE命令を行うことで、状態アクセスモードになる。こ のモードでは、ピッコロの状態を退避して、一連のSTC及びLDC命令で復元 される。状態アクセスモードに入ると、ピッコロ・コプロセッサID PICC OLO1の使用が変更されて、ピッコロの状態にアクセスできるようになる。ピ ッコロの状態には7つのバンクがある。特定バンク内のすべてのデータは、単一 のLDC又はSTCでロードし記憶することができる。 バンク0:プライベート・レジスタ − ピッコロIDレジスタ(Read Only)の値を含む1つの32ビットワード − 制御レジスタの状態を含む1つの32ビットワード − 状態レジスタの状態を含む1つの32ビットワード − プログラム・カウンタの状態を含む1つの32ビットワード バンク1:汎用レジスタ(GPR) − 汎用レジスタの状態を含む16個の32ビットワード バンク2:アキュミュレータ − アキュミュレータ・レジスタの上の32ビットを含む4つの32ビットワー ド(注:GPR状態の複製が復元に必要だということは、さもないとレジスタバ ンク上で別の書き込みイネーブルを意味する)。 バンク3:レジスタ/ピッコロROB/出力FIFO状態 − どのレジスタが再充填用の印(各32ビットレジスタにつき2ビット)にな っているかを示す32ビットワードが1つ。 − ROBタグ(ビット7から0に記憶されている7ビット項目8つ)の状態を 含む32ビットワード8つ。 − 連合していない(unaligned)ROBラッチ(ビット17から0)の状態を含 む32ビットワード3つ。 − 出力シフトレジスタ内のどのスロットが有効データを含むかを示す32ビッ トワードが1つ(ビット4は空きを示し、ビット3から0は、使用中のエントリ の数をエンコードする)。 − ラッチ(ビット17から0)を保持する出力FIFOの状態を含む32ビッ トワード1つ。 バンク4:ROB入力データ − 32ビットデータ値が8つ。 バンク5:出力FIFOデータ − 32ビットデータ値が8つ。 バンク6:ループハードウェア − ループ開始アドレスを含む32ビットワード4つ。 − ループ最終アドレスを含む32ビットワード4つ。 − ループ回数(ビット15から0)を含む32ビットワード4つ。 − ユーザ定義リマッピング・パラメータその他のリマッピング状態を含む32 ビットワードが1つ。 LDC命令は、ピッコロが状態アクセスモードにある時にピッコロの状態をロ ードするのに使う。BANK領域はロードされるバンクを特定する。 次の一連の動作により、ピッコロのすべての状態がレジスタR0内のアドレス からロードされる。 LDP B0,[R0],#16!;プライベート・レジスタ LDP B1,[R0],#64!;汎用レジスタをロードする。 LDP B2,[R0],#16!;アキュミュレータをロードする。 LDP B3,[R0],#56!;レジスタ/ROB/FIFO状態をロー ドする。 LDP B4,[R0],#32!;ROBデータをロードする。 LDP B5,[R0],#32!;出力FIFOをロードする。 LDP B6,[R0],#52!;ループハードウェアをロードする。 STC命令は、ピッコロが状態アクセスモードにある時にピッコロの状態を記 憶させるのに使う。BANK領域はどのバンクが記憶されるかを特定する。 次の一連の動作により、ピッコロのすべての状態がレジスタR0内のアドレス から記憶される。 STP B0,[R0],#16!;プライベートレジスタを退避する。 STP B1,[R0],#64!;汎用レジスタを退避する。 STP B2,[R0],#16!;アキュミュレータを退避する。 STP B3,[R0],#56!;レジスタ/ROB/FIFO状態を退避 する。 STP B4,[R0],#32!;ROBデータを退避する。 STP B5,[R0],#32!;出力FIFOを退避する。 STP B6,[R0],#52!;ループハードウェアを退避する。 デバッグ・モード − ピッコロは、ARMによってサポートされているもの と同じデバッグ・メカニズム、すなわち、DemonとAngelを介したソフトウェア、 及び埋め込まれたICEを備えたハードエウェア、に応答しなければならない。 ピッコロのシステムをデバッグするためのいくつかのメカニズムがある。 −ARM命令ブレークボイント −データ・ブレークポイント(ウオッチポイント) −ピッコロ命令ブレークポイント −ピッコロ・ソフトウェア・ブレークポイント ARM命令ブレークポイント及びデータ・ブレークポイントは、ARM埋め込 みICEモジュールによって扱われる。ピッコロ命令ブレークポイントは、ピッ コロ埋め込みICEモジュールによって扱われる。ピッコロ・ソフトウェア・ブ レークポイントは、ピッコロ・コアによって扱われる。ハードウェア・ブレーク ポイント・システムは、ARMとピッコロの両方がブレークポイントされるよう に構成される。 ソフトウェア・ブレークポイントを扱うのは、ピッコロ命令(Halt又はBreak )で、ピッコロに実行を止めさせ、デバッグ・モードに入れ(状態レジスタのB ビットがセットされる)、自身をディスエーブルする(ピッコロがPDISAB LE命令によってディスエーブルされたようになる)。プログラム・カウンタは 有効のままで、ブレークポイントのアドレスが回復できる。ピッコロは、それ以 上、命令を実行しなくなる。 Single stepping Piccoloは、ピッコロ命令ストリーム上に次々にブレークボ イントをセットすることによって行われる。 ソフトウェア・デバッグ − ピッコロによって提供される基本的機能は、状 態アクセスモードにある時、コプロセッサ命令を介して、すべての状態をメモリ ーにロード及び退避させる能力である。これにより、デバッガーは、すべての状 態をメモリーに退避させ、それを読み出し,及び/又は更新し、それをピッコロ に復元することができる。ピッコロの記憶状態メカニズムは、非破壊的であり、 つまり、ピッコロの状態を記憶する動作は、ピッコロの内部状態を駄目にするこ とはない。つまり、ピッコロは、その状態をダンプした後、それを復元すること なしに、再開できる。 ピッコロ・キャッシュの状態を見つけるメカニズムを決定しなければならない 。 ハードウェア・デバッグ − ハードウェア・デバッグは、ピッコロのコプロ セッサ・インターフェース上のスキャン・チェインによって行うことができる。 ピッコロは状態アクセスモードになり、スキャン・チェインを介して、その状態 を調査/変更してもらう。 ピッコロの状態レジスタは、ブレークポイント付き命令を実行したことを示す 単一ビットを含む。ブレークポイント付き命令が実行されると、ピッコロは、状 態レジスタにBビットをセットし、実行を中止する。ピッコロに質問をするには 、デバッガーは、ピッコロをイネーブルし、次のアクセスが起きる前に、制御レ ジスタに書き込むことによって、状態アクセスモードにしなければならない。 図4は、Hi/LoビットとSizeビットに応答して、選択されたレジスタの適 当な半分をピッコロ・データパスに切り換えるマルチプレクサ構成を示す。Size ビットが16ビットなら、符号拡張回路が必要に応じてデータパスの高次ビット に0か1を入れる。 セクション2 図8は、図1のシステムを変更し発展させたものを示す。中央処理装置(以下 、CPUとする)コア2は、命令デコーダ80と、命令パイプライン82と、レ ジスタバンク84と、メモリコントローラ86とを備える。作動中、CPU命令 は、メモリコントローラ86によってメモリ8から引き出され、命令パイプライ ン8 2に供給される。命令は、命令パイプラインに沿って、命令デコーダ80に隣接 する段に到達する。この段において、命令を実行するためのデコーディングは完 結する。命令デコーダ80は、命令内のビットフィールドに応答し、CPUコア 2の他の部分を構成し駆動する制御信号を提供する論理回路を使用して、所望の データ処理動作を行う。実際には、CPUコア2は、多数の機能ブロック、例え ば、演算ユニット、マルチプライア、キャッシュ、メモリ管理ユニットを備える 。 本例では、コプロセッサメモリアクセス命令が命令デコーダ80によってデコ ードされる時、メモリ8内のメモリ位置を指すアドレスポインタとなるアドレス 値を保持するレジスタバンク84内のレジスタが指定される。このアドレス値は 、アドレスバスに出されメモリ8に到達し、メモリコントローラを介して、バー ストモード転送を開始する。転送されるデータは、CPUコア2よりも、むしろ コプロセッサ4に向けられる。従って、メモリ8に対して適切なアドレスを生成 する以外は、CPUコア2は、メモリ8とコプロセッサ4との間のデータバス上 にあるデータワードに応答しない。命令デコーダ80も、コプロセッサ制御信号 (CP Control)を生成し、それらはコプロセッサ4に渡される。これ らのコプロセッサ制御信号は、コプロセッサに対して、コプロセッサメモリアク セス命令が実行中であることを示し、従って、コプロセッサ4は、データをデー タバスに出すか、データバスからデータを読み取るか、適切な動作を行わなけれ ばならない。コプロセッサ4に渡されるコプロセッサ制御信号は、実行中のコプ ロセッサメモリアクセス命令内のアドレシングモード情報の少なくとも一部を含 む。より詳しくは、少なくとも、Pフラグ、Uフラグ、及びオフセット値Mがコ プロセッサ4に渡される。 コプロセッサ4は、排他的論理和(EOR)演算をこれらのビットに行うこと によって、PフラグとUフラグをデコードする。この排他的論理和演算の結果に よって、コプロセッサは、現在のバーストで転送されるべきデータワードの個数 が、レジスタ88に記憶されていて渡されるオフセット値Mによって指定される か、1つのデータワードというデフォルト値にすべきかを決定する。コプロセッ サ転送コントローラ90は、レジスタ88の出力と排他的論理和演算の結果に応 答して、データバス上で受け取られたデータワードの個数を数え、指定された数 が受け取られ、バースト終了信号が出ると、それは、メモリ8とCPUコア2に 返されて、実行中のコプロセッサメモリアクセス命令によって開始された転送を 終了する。コプロセッサ4によって、データバスから受け取られたデータワード は、どれも、リオーダ(reorder)バッファ12にロードされてから、コ プロセッサコア92によって処理される。あるいは、コプロセッサ4は、バース トの長さを直接メモリ8へ提供することもできる(これは、例えば、同期DRA Mのような型に有効である)。 図9は、上述のコプロセッサメモリアクセス命令の動作を模式的に示すもので ある。 動作は、ステップ94で開始され、ステップ96に移り、そこでCPUがコプ ロセッサメモリアクセス命令に埋め込まれたアドレシングモード情報を読み取り 、一方、コプロセッサは、この同じアドレシングモード情報の少なくとも一部を 読み取り、そこから、転送されるデータワードの個数を決定する。 ステップ98で、CPUは、メモリ8に提供されるアクセス開始アドレスを生 成する。ステップ100で、メモリ8とコプロセッサ4との間で直接的に、デー タワードが転送される。データワードが1つ転送されるごとに、ステップ102 において、コプロセッサメモリアクセス命令により指定された個数のデータワー ドがすべて転送されたかどうかを、コプロセッサ4が決定する。 転送が完了しないうちは、CPUコア2の動作が継続し、ステップ104にお けるアドレスに必要な更新を行い、ステップ100に戻る。 転送が完了すると、システムはステップ106に進み、そこで、コプロセッサ は、転送を終了するために、バースト完了信号を出して、それがメモリ8とCP Uコア2の両方に渡される。ステップ108において、CPUコア2は、コプロ セッサメモリアクセス命令によって指定されたように、アドレスポインタを更新 する(これは、プロセスの他の点において行ってもよい)。このプロセスは、ス テップ110で終了する。 性能を改善するために、転送は、並行的に行ってもよい。例えば、コプロセッ サがCPUに対して、第1のワードの転送が開始する前でも、第2のデータワー ドが転送されるべきであるかどうかを指示することもできる。 以下に、本発明の実施の形態により動作する様々のコプロセッサメモリアクセ ス命令について詳細に述べる。転送されるデータワードの個数を制御するという 視点から見ると、これらの命令の全体的な動作は、PフラグとUフラグに従って 、次のアドレス転送モードのどれかになる。 この他に、ベースレジスタがARMプログラムカウンタレジスタ(PC又はR 15)である場合の転送されるワードの個数がある。この場合、P EOR(U 又は(ベースレジスタがPCである))への単一ワード転送を決定するロジック を変更することになる。 メモリからリオーダバッファへのローディング フォーマットの要約 リオーダバッファにメモリからのデータを入れるのに2つの主要なフォーマッ トがある。 −LDP −LPM どちらの命令のフォーマットも、ARM LDC命令としてエンコードされる 。LDP命令クラスは、常に、1つの32ビットのデータワードをメモリから転 送 する。LPM命令クラスは、複数のワードを転送するのに使用することができる 。命令ビットパタンのレベルでは、LDPとLPMは、使用されるアドレシング モードビットによって区別され、アセンブラーの文法は、LDPとLPMに対し て異なったニューモニックを使用し、1つのワードか2つ以上のワードの転送か にっいてのコードを書く又は読む人に気付かせる。この2つの命令に対して、以 下のフォーマットが使用できる。 ここにおいて、 {} は、オプションフィールドを示す。 cond は、ARM命令条件コードフィールドである。 32|16 は、ロードされているデータが16ビットデータとして扱われエ ンディアネス(endianess)用アクションを取る(STP16及びST P32を参照)べきか、あるいは32ビットデータとして扱われるべきかを示す 。 dest は、ピッコロ目的レジスタ(A0乃至Z3)を指定する。 addressは、以下のいずれかである。 〔Rn〕 〔Rn,#+ve_offset〕{!} 〔Rn〕#+ve_offset Rn は、有効なARMレジスタ番号を求める表現である。 ! は、計算されたアドレスがベースレジスタに書き戻す必要がある ことを示す。 #+ve_offset は、+<8−bit−offset>*4として表す ことのできるオフセットを求める表現である。このオフセットは、ベースレジス タに加算されロードアドレスを形成する。即ち、アドレスが前もってインデクス をつけられる。 #−ve_offset は、−<8_bit_offset>*4として表す ことのできるオフセットを求める表現である。このロードアドレスは、ベースレ ジスタRnの値であり、オフセット分がRnから減算され、結果がRnに書き戻 される。 bank は、3つの非蓄積型ピッコロバンク(X|Y|Z)の1つを指定 する。 A|D は、プレインクリメント(上り)、又は、ポストデクリメント( 下り)アドレシングモードを指定する。 <Rlist>は、ピッコロレジスタ番号の上りリストであり、例えば、{X0 ,X1}というように、{}に挟まれている。ピッコロの第1版では、最大8つ のレジスタを指定することができる。このリストは、レジスタバンクのトップで 巡回しても良い。例えば、{Y2,Y3,A0,A1}は、有効なレジスタリス トである。 bank0.1 は、4個の16ビットレジスタ(A0.1|X0.1|Y0. 1|Z0.1)の1つを指定する。 wordcount は、選択された領域のレジスタ上でラッピング(wrap ping)ロードするのに使用され、転送されるデータ項目の総数を指定する。 ピッコロの第1版では、1つのLPM命令で最大8つまでのデータ項目を転送す ることができる。 <list>フォーマットが使用される場合、<list>によって指定され るレジスタのリストは、(A0,X0,Y0,Z0)のいずれかで始めなければ ならず、レジスタリストは、1個、2個、又は4個のレジスタを指定することが できる。即ち、レジスタのXバンクに対して、 {X0} {X0,X1} {X0,X1,X2,X3} だけが、有効な<Rlist>組み合わせである。<wordcount>は、 (Rlist)の長さより大きくなければならない。このLPM命令のフォーマ ットは、<wordcount>データ項目全部を転送する。その際、 <Rlist>内の各レジスタに対して、リストの最後に来たら、 <Rlist>の開始へ巡回するようにデータにタグをつける。 <bank0.1>フォーマットが使用される場合は、ピッコロの第1版では 、<wordcount>は、(1−8)の範囲が可能である。このLPM命令 のフォーマットは、2*<wordcount>16ビットのデータ項目をロー ドし、その際、すべてのデータに、レジスタ<bank0.1>用タグをつける 。 例 LDPNE32 A1,〔R0〕:Zフラグ=0であれば、A1にmem(R0 )をロードする。データを32ビットとして扱う。 LDP16 X0,〔R0,#16〕!:X0にmem(R0+16(バイト) )をロードし、R0+16をR0に書き戻す。データをパックト(packed )16ビットとして扱う。 LDP32 Y2,〔R0〕,#−4:Y2にmem(R0)をロードし、R0 に(R0−#4)を書き戻す。 LDP16U X,〔R0,#4〕:Xバンクの非配列ラッチにmem(R0+ #4(バイト))を入れる。 LPMEQA32 R0!,{X2,X3,Y0,Y1}:Zフラグ=1であれ ば、4ワードを上り順で、メモリ〔R0〕からロードする。その際、レジスタX 2,X3,Y0,Y1用にタグをつける。R0に書き戻す。 LPMA16 R1!,{X0,X1},#8:パックト16ビットデータ8ワ ードを、上り順で〔R1〕のメモリからロードする。その際、レジスタX0,X 1,X0,X1,X0,X1,X0,X1用にタグをつける。 命令エンコーディング LDP命令 LDP命令は、1つの32ビットワードをメモリから転送する。これらの命令 のいくつかは、書き戻しを行うが、アセンブラの文法に従って、「!」の印がつ いていない。なぜなら、ポスト・インデクシングは常に書き戻しを含むからであ る。2つの変形がある。 LDP{cond}〔32|16〕 dest,〔Rn〕,#−ve_ offset LDP{cond}〔32|16〕 dest,〔Rn,#−ve_offs et〕{!} アドレシングモードは、P,U,Wビットによって決まる。これらは、それぞ れ命令内のビット24、23、21にある。 P=0,U=0,W=1という組み合わせは、次の形式の命令をエンコードす るのに使用される。 LDP{cond}〔32|16〕 dest,〔Rn〕,#−ve_of fset アドレス〔Rn〕からは、ワードが1つだけ転送される。転送が行われた後、 ベースレジスタは、8_bit_offset*4だけデクリメントされる。N ビットは、LDP32(1)またはLDP16(0)を指定する。<8_bit _offset>は、mod(#−ve_offset)/4をエンコードする 。この命令は、データ構造を介して逆戻りして1つの特定のワードを出現毎に抽 出するのに役立つ。同様の所望の機能は、他の命令とも合わせられる。 P=1,U=1の組み合わせは、次の形式の命令をエンコードするのに使用さ れる。 LDP{cond}〔32|16〕 dest,〔Rn,#−ve_offs et〕{!} アドレス〔Rn#−ve_offset〕からはワードが1つだけ転送される 。Wビットがセットされると、ベースレジスタは、8_bit_offset* 4だけインクリメントされる。即ち、オプションの「!」により書き戻しが指定 されている形式である。W=0の場合は、書き戻しは行われず、「!」もない。 N ビットは、LDP32(1)又はLDP16(0)を指定する。<8_bit_ offset>は、#+ve_offset/4をエンコードする。Pic_1 (及び,後で述べるPic_2)は、コプロセッサがピッコロ・コプロセッサで あることを示す、識別番号である。ピッコロは、関連命令に従って使用される2 つの識別番号を持っている。 LDP16U LDP16U命令は、3つの非配列保持ラッチの1つを用意するのに使用され る。それは、次の変形を持つ。 LDP{cond}U16 bank,〔Rn〕,#−ve_offset LDP{cond}U16 bank,〔Rn,#+ve_offset〕{! } アドレシングモードはP及びUビットにより決まる。 P=0,U=0,W=1という組み合わせは、次の形式の命令をエンコードす るのに使用される。 LDP{cond}U16 dest,〔Rn〕,#−ve_offset アドレス〔Rn〕から転送されるワードは1つだけである。この転送の後、ベ ースレジスタは、#−ve_offsetにより変更される。 <bnk>は、非配列モードにするバンクを指定し、バンクX,Y,Zに対して 、 1、2、3の値を取ることができる。 P=1、U=1の組み合わせは、次の形式の命令をエンコードするのに使用さ れる。 LDP{Cond}U16 dest,〔Rn,#−ve_offset〕{! } アドレス〔Rn+#+ve_offset〕から転送されるワードは1つだけ である。Wビットがセットされると、ベースレジスタは、#+ve_offse tにより変更される。W=0なら、書き戻しはない。 <bnk>は、非配列モードにするバンクを指定し、バンクX,Y,Zに対して 、1、2、3の値を取ることができる。 LPM命令 LPM命令は、メモリから2つ以上のワードを転送し、次の変形がある。 LPMA形に対してはP=0.U=1であり、命令は、次のようにエンコードさ れる。 ここにおいて、 Nビットは、LPMA32(1)又はLPMA16(0)を指定する。 Wビットは、W=1なら、ベースレジスタへのbasereg=offset* 4の書き戻しを指定する。 <basereg>は、<Rlist>内の第1ピッコロレジスタを指定する 。 <8_bit_offset>は、転送されるべきレジスタの個数を指定する 。LPMD形に対してはP=1.U=0であり、命令は、次のようにエンコード される。 LPMA形に対してはP=0、U=1であり、命令(この場合も、以下において も、pic−2,bnk wrpフォーマットを使用する)は、次のようにエン コードされる。 ここにおいて、 Nビットは、LPMD32(1)又はLPMD16(0)を指定する。 Wビットは、W=1なら、ベースレジスタへのbasereg+offset* 4の書き戻しを指定する。 <bnk>は、<Rlist>内の第1レジスタを指定し、それがバンクのベ ースでなければならない(即ち、A0,X0,Y0,又はZ0)。それは、バン クA−Zを指示する値0−3を取ることができる。 <wrp>は、ラッビング(wrapping)点を指定し、ラップ値として 1−3の値を取ることができ、それぞれ、2個、4個、8個の16ビットレジス タを表す。 <8_bit_offset>は、転送すべきデータの個数を指定する。それ は、<wordcount>/4の値を取る。 LPMD形に対してはP=1、U=0であり、命令は、次のようにエンコードさ れる。 LPMA形に対してはP=0、U=1であり、命令は、次のようにエンコードさ れる。 ここにおいて、 Wビットは、ベースレジスタ(1)書き戻しを指定する。 <bnk>は、転送先のピッコロバンクを指定し、A,X,Y,又はZを表す 値0−3を取ることができる。 <8_bit_offset>は、転送すべきデータ項目の個数を指定する。 それは、<wordcount>/4の値を取る。 LPMD形に対してはP=0、U=1であり、命令は、次のようにエンコード される。ARMレジスタからのデータのリオーダバッファへのローディング フォーマットの要約 ARMレジスタからピッコロ・リオーダバッファへデータワードを転送するた めのMPR命令フォーマットがある。MPR命令には、以下のフォーマットが使 用できる。 MPR{cond} dest,Rn MPR{cond}W dest,Rn ここで、 {} は、オプションフィールドを示す。 cond は、ARM命令条件コードフィールドである。 dest は、ピッコロ目的レジスタ(A0−Z3)を指定する。 Rn は、有効なARMレジスタ番号を求める表現である。 W は、ARMレジスタから転送されるデータが、2個の16ビット値と して扱われ、ピッコロレジスタdest0.1用のタグをつけなければならない ことを示す。 命令コーディング MPR命令は、ARM MCR命令としてエンコードされる。出力FIFOからメモリへのデータ記憶 フォーマットの要約 出力FIFOからメモリへのデータ記憶には、2つの主要命令がある。 −STP −SPM どちらの命令も、ARM STC命令としてエンコードされる。STP命令ク ラスは、常に、1つの32ビットのデータワードを出力FIFOからメモリへ記 憶する。STM命令クラスは、2つ以上のワードを記憶するのに使用される。こ れら2つの命令には、次のフォーマットが使える。 STP{cond}〔32|16〕 address STM{cond}〔A|D〕〔32|16〕Rn{!}, #<wordcount> ここで、 {} は、オプションフィールドを示す。 cond は、ARM命令条件コードフィールドである。 32|16は、記憶されるデータが16ビットデータとして扱われ、(前述され た)エンディアネス用動作が行われるべきか、32ビットデータとして扱われる べきかを示す。 address は、次のいずれかになる。 〔Rn〕 〔Rn,#+ve_offset〕{!} 〔Rn〕,#+ve_offset Rn は、有効なARMレジスタ番号を求める表現である。 ! は、計算されたアドレスがベースレジスタに書き戻されなければなら ないことを示す。 #+ve_offset は、+<8_bit_offset>*4として表す ことのできるオフセットを求める表現である。このオフセットは、ベースレジス タに加算されて、記憶アドレスを形成する。 #−ve_offset は、−<8_bit_offset>*4として表す ことのできるオフセットを求める表現である。このオフセットは、ベースレジス タに減算されて、ポストストアアドレスを形成する。 A|D は、プレインクリメント(上り)又はポストデクリメント(下り)ア ドレシングモードを示す。 wordcount は、転送されるデータの総数項目を示す。ピッコロの第1 版では、1つのSPM命令で、最大8個のデータ項目を転送できる。 命令エンコーディング STP命令 STP命令は、1個の32ビットワードをメモリに転送する。2つの変形があ る。 STP{cond}〔32|16〕 dest,〔Rn〕,#−ve_offs et STP{cond}〔32|16〕 dest,〔Rn,#+ve_offse t〕{!} アドレシングモードは、P、Uビットにより決まる。 STP{cond}〔32|16〕 〔Rn〕,#−ve_offset(P= 0|U=0|W=1) P=0,U=0,W=1の組み合わせは、次の形式の命令をエンコードするの に使用される。 STP{cond}〔32|16〕 〔Rn〕,#−ve_offset アドレス〔Rn〕に転送されるワードは、1個だけである。転送が行われた後 、ベースレジスタは、8_bit_offset*4だけデクリメントされる。 Nビットは、STP32(1)又はSTP16(0)を指定する。W=0のエン コーディングは許可されない。<8_bit_offset>は、mod(#− ve_offset)/4をエンコードする。 P=1,U=1の組み合わせは、次の形式の命令をエンコードするのに使用さ れる。 STP{cond}〔32|16〕dest,〔Rn,#+ve_ offset〕{!} アドレス〔Rn,#+ve_offset〕に転送されるワードは1つだけで ある。Wビットがセットされると、ベースレジスタは、8_bit_offse t*4だけインクリメントされる。Nビットは、STP(1)又はSTP16( 0)を指定する。<8_bit_offset>は、#+ve_offset/ 4をエンコードする。SPM命令 SPM命令は、メモリから2つ以上のワードを転送する。次の変形がある。 SPMAに対しては、P=0,U=1であり、命令は次のようにエンコードされ る。 ここで、 Nビットは、SPMA32(1)又はSPMA16(0)を指定する。 Wビットは、ベースレジスタ(1)への書き戻しを指定する。 <8_bit_offset>は、転送すべきデータ項目の数を指定する。 LPMDに対しては、P=1.U=0であり、命令は、次のようにエンコード される。 ここで、 Nビットは、SPMD32(1)又はSPMD16(0)を指定する。 出力FIFOからARMへのデータ転送 フォーマットの要約 MPR命令フォーマットは、出力FIFOからARMレジスタへデータワード を転送するためにある。MPR命令には、次のフォーマットがある。 MPR{cond}Rn ここで、 {} は、オプションフィールドを指示する。 cond は、ARM命令条件コードフィールドである。 Rn は、有効なARMレジスタ番号を求める表現である。 命令エンコーディング MRP命令は、ARM MRC命令としてエンコードされる。 予備オプション 全体的なレベルとして、P=0,U=0,W=0は、以上の形式では許可され ない。将来必要になった時の予備である。
【手続補正書】特許法第184条の8第1項 【提出日】平成11年4月21日(1999.4.21) 【補正内容】 (例えば、ARM浮動小数点アクセラレータユニットにおけるように)、中央 処理装置上で実行する命令内にビットフィールドを割り当てることが公知であり 、そこでは、ビットフィールドがコプロセッサに渡され、転送されるべきデータ ワードの個数をコプロセッサに指定する。しかしながら中央処理装置上で実行さ れる命令内で使えるビットスペースには限界があり、もし、命令内のビットがコ プロセッサへのデータワードの個数を渡すことに専念すると、命令内の他のフィ ールド用に使えるビットスペースを制限することになる。それは例えば、命令実 行に続く中央処理装置内のアドレスポインタの変更のような、データ転送に関す る他パラメータを指定するのに使用されるかもしれない。 S B ファーバー(Furber)著「VLSI RISC アーキテクチ ャ及び構築(VLSI RISC Architecture and Org anization)」1989、マルセル.デッカー(Marcel Dek ker)株式会社、ニューヨーク XP002061358201970、ペー ジ261−265は、中央処理装置により使用されるアドレシングモードを制御 するビットと、転送されるデータワードの個数を制御するためにコプロセッサに より使用される別のビットとを備えたコプロセッサ命令を開示している。 欧州公開特許出願EP−A−0,703,529は、あるオペコードによって 、オフセットフィールドの一部が、使用されるオフセットよりむしろ転送される ワード数を制御するメモリアクセス命令を備えたマイクロプロセッサを開示して いる。 本発明の一面は、データ処理用装置であって、 コプロセッサメモリアクセス命令を含むデータ処理動作を行う中央処理装置命 令を実行する中央処理装置と、 この中央処理装置に結合され、データワードを保持するメモリと、 中央処理装置とメモリに結合されたコプロセッサであって、このコプロセッサ により処理されるべきメモリ内のデータワードの指定が、中央処理装置により実 行されるコプロセッサメモリアクセス命令の制御下で、複数のアドレシングモー ドの1つを使用して行われることを特徴とするコプロセッサと を備え、 少なくとも1つのコプロセッサメモリアクセス命令が、前記複数のアドレシン グモードのどれが中央処理装置によって使用されるかを制御するアドレシングモ ード情報を含み、 コプロセッサは、前記アドレシングモード情報の少なくとも一部を使用して、 前記少なくとも1つのコプロセッサメモリアクセス命令に応答してメモリとコプ ロセッサの間で何個のデータワードが転送させるべきかを制御することを特徴と する。 本発明は、中央処理装置が複数のアドレシングモードのどれを使用するかを制 御するのに使用する(レジスタ番号や即値定数を含むことのある)ビットフィー ルドは、コプロセッサに、転送されるべきデータワードの個数を指定するのにも 使用される(命令内の他のフィールドあるいは制御レジスタに書き込まれた値の ような他の因子と結合されている可能性がある)ことがある。例えば、これまで にわかっているところ、多くの場合、中央処理装置が、転送及び/又はアドレス ポインタへの変更に使用されアドレスを制御するのに使用するビットフィールド 情報は、コプロセッサに転送されるデータワードの個数と関係づけられるので、 このビットフィールドは、コプロセッサによっても中央処理装置によっても読む ことができる。コプロセッサメモリアクセス命令内で同じビットフィールドを重 複して使用することにより、このようなコプロセッサメモリアクセス命令内のビ ットスペースを他の目的に開放することになる。更に、現在わかっているところ では、大多数の場合、転送されるべきデータワードは、少数のカテゴリに分類さ れるので、コプロセッサに転送されるべき個数のデータワード用に専用ビットフ ィールドを提供するフルフレキシビリティは、本発明を使用することによって得 られるコード密度と性能の改善に負ける。 中央処理装置は、いくつかの異なる方法でアドレシングを制御できるのに対し て、本発明の好ましい実施の形態においては、前記少なくとも1つのコプロセッ サメモリアクセス命令は、アドレス値を保持する中央処理装置内のレジスタを参 照し、前記アドレスモード情報は、オフセットフィールドを備え、アクセスされ るべきメモリ内の開始アドレスの決定は、前記少なくとも1つのコプロセッサメ モリアクセス命令の実行により、前記アドレス値と前記オフセット値の少なくと も1つから行われる。 中央処理装置のレジスタ内に保持されるアドレスポインタのそのような使用は 、多大なフレキシビリティを提供し、命令内のオフセットと結合されて、アプリ ケーションのコーディングを簡単にする。 コプロセッサとデータアレイを介して動作することが所望される場合、本発明 の好ましい実施の形態では、前記アドレス値に行われた変更が、最終アドレス値 を生成し、それを前記レジスタへ記憶しなおすことができるようにする。 前記オフセットフィールドの少なくとも一部が前記コプロセッサに使用されて 、データワードが何個、前記メモリと前記コプロセッサの間で転送されるかを制 御できることは、非常に便利であることがわかった。 このような装置は、メモリ内に保持されているデータ上にデータ処理操作をす るためにコプロセッサが使用される実際の状況のかなりの部分の要求を満たすこ とができる。 また、アドレシングモード情報が1つ以上のフラグを備え、前記複数のアドレ シングモードのうちのどれが使用されるか、また、何個のデータワードが前記メ モリと前記コプロセッサの間で転送されるかを決定するのに前記オフセットフィ ールドが使用されるか否かを制御できることは有利である。 アドレシングモード情報内の他のフラグビットに依存してオフセットフィール ドを選択的に使用することによって、転送されるデータワードの個数をコプロセ ッサが制御できる方法のオプションの数を増加させ、それにより、コプロセッサ メモリアクセス命令内のビット空間を余分に必要とすることなしに、実際の状況 の、より高い部分の要求に合わせることができる。 高い割合の所望のタイプの動作を成就するには、好ましい実施の形態は、次の ようなものでなければならない。即ち、前記コプロセッサが、前記オフセットを 使用せずに、前記メモリと前記コプロセッサの間で転送されたデータワードの個 数を決定する場合、メモリとコプロセッサの間では、固定数のワードが転送され る。 コプロセッサを制御するコプロセッサメモリアクセス命令モードの相補セット は、次のようなものである。即ち、前記レジスタがアドレスRnを記憶し、デー タワードがWLバイトの長さで、前記オフセット値がMであり、前記1つ以上の フラグが、3つ以上の値ビットを備え、それらが、前記少なくとも1つのコプロ セッサアクセス命令を選択し、以下の1つに従って操作する。 コプロセッサメモリアクセス命令は、以下のようなフラグを備えると有利であ る。 (i)前記開始アドレス値が、元々前記レジスタに記憶されていたアドレス値で あるか、前記オフセットフィールドによって指定される変更されたアドレス値で あるかを指定するフラブビットP、 (ii)前記変更が、前記レジスタに元々記憶されていた値からオフセットフィ ールドによって指定される値を加算したものか減算したものであるかを指定する フラグビットU、 (iii)前記アドレスレジスタ内の前記最終値が、前記レジスタに記憶されな おすべきか否かを指定するフラグビットW。 このようなフラグセットを使用して、コプロセッサは、高速で簡単な動作制御 を行うことのできる構成となる。即ち、P EOR Uを求めることによって、 1個又はM個のデータワードが転送されるべきかを決定することができる。 更に、ベースレジスタがARMプログラムカウンタレジスタ(PC又はR1 5)であれば、転送されるワード数1を生成することができる。この場合、単一 ワード転送を決定するロジックが、P EOR(U又は(ベースレジスタがPC ))に変更される。 前述のコプロセッサと、中央処理装置及びメモリとの相互作用を制御する特性 は多数の異なるフィールドに使用できる(例えば、浮動小数点コプロセッサ)場 合、データアクセスは、次のように、比較的規則的である。即ち、前記中央処理 装置と前記コプロセッサがデジタル信号処理を行い、前記メモリと前記コプロセ ッサの間で転送されるデータワードが、前記メモリに記憶された係数値のアレイ 内からの係数値を備える実施の形態に本発明は特に適している。 本発明を他の面から見ると、本発明は以下のステップを備えるデータ処理方法 を提供する。即ち、 中央処理装置により、コプロセッサメモリアクセス命令を含む中央処理装置命 令を実行してデータ処理操作を行うステップと、 前記中央処理装置に結合されたメモリにおいてデータワードを保持するステッ プと、 前記中央処理装置に結合されたコプロセッサにより処理される前記メモリ内の データワードをアドレスするステップであって、前記メモリは、前記中央処理装 置により実行されるコプロセッサメモリアクセス命令の制御下で、複数のアドレ シングモードの1つを使用するステップと を備え、 前記コプロセッサメモリアクセス命令の少なくとも1つは、前記複数のアドレ シングモードのどれを中央処理装置が使用して前記メモリをアクセスするかを制 御するアドレシングモード情報を含み、 前記コプロセッサは、前記少なくとも1つのコプロセッサメモリアクセス命令 に応答して、前記アドレシングモード情報の少なくとも一部を使用して何個のデ ータワードが前記メモリと前記コプロセッサの間で転送されるかを制御すること を特徴とする方法である。 本発明の実施の形態について、以下に添付図面を参照しながら、例を示す。 図1は、デジタル信号処理装置のハイレベルの構成を示し、 図2は、コプロセッサの入力バッファとレジスタ構成を示し、 図3は、コプロセッサ内のデータパス(datapath)を示し、 図4は、レジスタからハイ又はローのビットを読むためのマルチプレクシング 回路を示し、 図5は、好ましい実施の形態におけるコプロセッサにより使用されるレジスタ ・リマッピング・ロジックを示すブロック図であり、 図6は、図5に示されたレジスタ・リマッピング・ロジックを更に詳しく示し 、 図7は、ブロック・フィルタ・アルゴリズムを示す表であり、 図8は、中央処理装置と、メモリと、コプロセッサアクセスメモリ命令を実行 するためのコプロセッサとを備えたシステムを模式的に示し、 図9は、図8のシステムの動作に対応するフロー・ダイアグラムである。 以下の説明において、セクション1では、中央処理装置と、メモリと、高速デ ジタル信号処理能力を持つコプロセッサとを備えたシステムについて説明する。 セクション2は、セクション1のシステムの変形について述べるもので、そこで は、コプロセッサメモリアクセス命令が、転送されるデータワードの個数のコプ ロセッサによる制御をより簡単にすべく変更されている。 請求の範囲 1. データ処理装置であって、 コプロセッサ・メモリアクセス命令を含む中央処理装置命令を実行してデータ 処理動作を行う中央処理装置(2)と、 前記中央処理装置に結合され、データワードを保持するメモリ(8)と、 前記中央処理装置と前記メモリに結合されたコプロセッサ(4)であって、コ プロセッサにより処理されるメモリ内のデータワードをアドレスするのに、前記 中央処理装置により実行される前記コプロセッサ・メモリアクセス命令の制御下 で、複数のアドレシングモードの1つを使用することを特徴とするコプロセッサ (4)と を備えるデータ処理装置であって、 少なくとも1つのコプロセッサ・メモリアクセス命令が、前記中央処理装置が 前記メモリをアクセスするのに複数のアドレシングモードのどれを使用するかを 制御するアドレシングモード情報(P,U,W,M)を含み、 前記コプロセッサは、前記アドレシングモード情報の少なくとも一部(P,U ,M)を使用して、前記少なくとも1つのコプロセッサ・メモリアクセス命令に 応答して、メモリとコプロセッサとの間で転送されるデータワードが何個である かを制御することを特徴とするデータ処理装置。 2. 請求項1に記載の装置であって、前記少なくとも1つのコプロセッサ・メ モリアクセス命令が、アドレス値を持つ前記中央処理装置内のレジスタを参照し 、前記アドレスモード情報がオフセットフィールド(M)を含み、そこでは、ア クセスされるべき前記メモリ内の開始アドレスが、前記少なくとも1つのコプロ セッサ・メモリアクセス命令の実行に際して、前記アドレス値と前記オフセット 値の少なくとも1つから決まることを特徴とする装置。 3. 請求項2に記載の装置であって、前記アドレス値への前記変更が、最終ア ドレス値を生成し、それが前記レジスタに書き戻されることを特徴とする装置。 4. 請求項2と3のいずれかに記載の装置であって、前記オフセットフィール ド(M)の少なくとも一部が、前記コプロセッサにより使用されて、前記メモリ と前記コプロセッサとの間で転送されるデータの個数を制御することを特徴とす る装置。 5. 請求項4に記載の装置であって、前記アドレシングモード情報が1つ又は 2つ以上のフラグ(P,U)を持ち、それが、前記複数のアドレシングモードの どれが使用されているかを制御し、且つ、前記メモリと前記コプロセッサの間で 何個のデータワードが転送されるかを決める際に、前記オフセットフィールドが 前記コプロセッサによって使用されるべきかどうかを制御することを特徴とする 装置。 6. 請求項5に記載の装置であって、前記メモリと前記コプロセッサの間で何 個のデータワードが転送されるかを決める際に、前記オフセットフィールドが前 記コプロセッサによって使用されない場合、固定数のデータワードが前記メモリ と前記コプロセッサとの間で転送されることを特徴とする装置。 9. 請求項8に記載の装置であって、前記コプロセッサがP EOR Uを求 めて、データワードを1個又はM個転送すべきかを決定することを特徴とする装 置。 10.請求項8に記載の装置であって、前記レジスタが前記中央処理装置のプロ グラムカウンタレジスタPCであり、前記コプロセッサが、転送されるデータワ ードが1個かM個かを決めるために、P EOR(UOR(レジスタはPC)) を求めることを特徴とする装置。 11.以上の請求項のいずれかに記載の装置であって、前記中央処理装置及び前 記コプロセッサが、デジタル信号処理を行い、前記メモリと前記コプロセッサと の間で転送されるデータワードが、前記メモリに記憶された係数値のアレイ内か らの係数値を備えることを特徴とする装置。 12.請求項6及び請求項7乃至11のいずれかに記載の装置であって、前記固 定数のデータワードが単一のデータワードを含む事を特徴とする装置。 13.データ処理方法であって、 中央処理装置によりコプロセッサ・メモリアクセス命令を含む中央処理装置命 令を実行してデータ処理動作を行うステップと、 データワードを、前記中央処理装置に結合されたメモリで保持するステップと 、 前記中央処理装置と前記メモリに結合されたコプロセッサによって、前記中央 処理装置により実行される前記コプロセッサ・メモリアクセス命令の制御下で、 複数のアドレシングモードの1つを使用することによって、処理されるメモリ内 のデータワードをアドレスするステップと を備えるデータ処理方法であって、 少なくとも1つのコプロセッサ・メモリアクセス命令が、前記中央処理装置が 前記メモリをアクセスするのに複数のアドレシングモードのどれを使用するかを 制御するアドレシングモード情報を含み、 前記コプロセッサは、前記アドレシングモード情報の少なくとも一部を使用し て、前記少なくとも1つのコプロセッサ・メモリアクセス命令に応答して、メモ リとコプロセッサとの間で転送されるデータワードが何個であるかを制御するこ とを特徴とするデータ処理方法。
───────────────────────────────────────────────────── 【要約の続き】 合、転送されるワード数はデフォールトの1になる。

Claims (1)

  1. 【特許請求の範囲】 1. データ処理装置であって、 コプロセッサ・メモリアクセス命令を含む中央処理装置命令を実行してデータ 処理動作を行う中央処理装置と、 前記中央処理装置に結合され、データワードを保持するメモリと、 前記中央処理装置と前記メモリに結合されたコプロセッサであって、コプロセ ッサにより処理されるメモリ内のデータワードをアドレスするのに、前記中央処 理装置により実行される前記コプロセッサ・メモリアクセス命令の制御下で、複 数のアドレシングモードの1つを使用することを特徴とするコプロセッサと を備えるデータ処理装置であって、 少なくとも1つのコプロセッサ・メモリアクセス命令が、前記中央処理装置が 前記メモリをアクセスするのに複数のアドレシングモードのどれを使用するかを 制御するアドレシングモード情報を含み、前記コプロセッサは、前記アドレシン グモード情報の少なくとも一部を使用して、前記少なくとも1つのコプロセッサ ・メモリアクセス命令に応答して、メモリとコプロセッサとの間で転送されるデ ータワードが何個であるかを制御する データ処理装置。 2. 請求項1に記載の装置であって、前記少なくとも1つのコプロセッサ・メ モリアクセス命令が、アドレス値を持つ前記中央処理装置内のレジスタを参照し 、前記アドレスモード情報がオフセットフィールドを含み、そこでは、アクセス されるべき前記メモリ内の開始アドレスが、前記少なくとも1つのコプロセッサ ・メモリアクセス命令の実行に際して、前記アドレス値と前記オフセット値の少 なくとも1つから決まることを特徴とする装置。 3. 請求項2に記載の装置であって、前記アドレス値への前記変更が、最終ア ドレス値を生成し、それが前記レジスタに書き戻されることを特徴とする装置。 4. 請求項2と3のいずれかに記載の装置であって、前記オフセットフィール ドの少なくとも一部が、前記コプロセッサにより使用されて、前記メモリと前記 コプロセッサとの間で転送されるデータの個数を制御することを特徴とする装置 。 5. 請求項4に記載の装置であって、前記アドレシングモード情報が1つ又は 2つ以上のフラグを持ち、それが、前記複数のアドレシングモードのどれが使用 されているかを制御し、且つ、前記メモリと前記コプロセッサの間で何個のデー タワードが転送されるかを決める際に、前記オフセットフィールドが前記コプロ セッサによって使用されるべきかどうかを制御することを特徴とする装置。 6. 請求項5に記載の装置であって、前記メモリと前記コプロセッサの間で何 個のデータワードが転送されるかを決める際に、前記オフセットフィールドが前 記コプロセッサによって使用されない場合、固定数のデータワードが前記メモリ と前記コプロセッサとの間で転送されることを特徴とする装置。 7. 請求項5に記載の装置であって、前記レジスタがアドレス値Rnを記憶し 、データワードの長さがWLバイトであり、前記オフセット値がMであり、前記 1つ又は2つ以上のフラグが、3つ以上の値ビットを備え、それらが、前記少な くとも1つのコプロセッサ・メモリアクセス命令を選択し、以下の1つに従って 動作することを特徴とする装置。 8. 請求項7に記載の装置であって、前記フラグが、 (i)前記アドレス値が元々前記レジスタに記憶されていたものであるか、前記 オフセットフィールドによって変更されたアドレス値であるかを指定するフラグ ビットPと、 (ii)前記変更が、元々レジスタに記憶されていた値から、前記オフセットフ ィールドで指定された値の加算又は減算のどちらであるかを指定するフラグビッ トUと、 (iii)前記アドレスレジスタ内の前記最終値が、前記レジスタに書き戻され るべきかどうかを指定するフラグビットWと を備えていることを特徴とする装置。 9. 請求項8に記載の装置であって、前記コプロセッサがP EOR Uを求 めて、データワードを1個又はM個転送すべきかを決定することを特徴とする装 置。 10.請求項8に記載の装置であって、前記レジスタが前記中央処理装置のプロ グラムカウンタレジスタPCであり、前記コプロセッサが、転送されるデータワ ードが1個かM個かを決めるために、P EOR(UOR(レジスタはPC)) を求めることを特徴とする装置。 11.以上の請求項のいずれかに記載の装置であって、前記中央処理装置及び前 記コプロセッサが、デジタル信号処理を行い、前記メモリと前記コプロセッサと の間で転送されるデータワードが、前記メモリに記憶された係数値のアレイ内か らの係数値を備えることを特徴とする装置。 12.請求項6及び請求項7乃至11のいずれかに記載の装置であって、前記固 定数のデータワードが単一のデータワードを含む事を特徴とする装置。 13.データ処理方法であって、 中央処理装置によりコプロセッサ・メモリアクセス命令を含む中央処理装置命 令を実行してデータ処理動作を行うステップと、 データワードを、前記中央処理装置に結合されたメモリで保持するステップと 、前記中央処理装置と前記メモリに結合されたコプロセッサによって、前記中央 処理装置により実行される前記コプロセッサ・メモリアクセス命令の制御下で、 複数のアドレシングモードの1つを使用することによって、処理されるメモリ内 のデータワードをアドレスするステップと を備えるデータ処理方法であって、 少なくとも1つのコプロセッサ・メモリアクセス命令が、前記中央処理装置が 前記メモリをアクセスするのに複数のアドレシングモードのどれを使用するかを 制御するアドレシングモード情報を含み、前記コプロセッサは、前記アドレシン グモード情報の少なくとも一部を使用して、前記少なくとも1つのコプロセッサ ・メモリアクセス命令に応答して、メモリとコプロセッサとの間で転送されるデ ータワードが何個であるかを制御する データ処理方法。
JP50180699A 1997-06-10 1998-01-12 コプロセッサ・データ・アクセス制御 Expired - Fee Related JP3681407B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB9712041A GB2326253A (en) 1997-06-10 1997-06-10 Coprocessor data access control
GB9712041.4 1997-06-10
PCT/GB1998/000083 WO1998057256A1 (en) 1997-06-10 1998-01-12 Coprocessor data access control

Publications (2)

Publication Number Publication Date
JP2002503370A true JP2002503370A (ja) 2002-01-29
JP3681407B2 JP3681407B2 (ja) 2005-08-10

Family

ID=10813904

Family Applications (1)

Application Number Title Priority Date Filing Date
JP50180699A Expired - Fee Related JP3681407B2 (ja) 1997-06-10 1998-01-12 コプロセッサ・データ・アクセス制御

Country Status (12)

Country Link
US (1) US6002881A (ja)
EP (1) EP1010065B1 (ja)
JP (1) JP3681407B2 (ja)
KR (1) KR100505799B1 (ja)
CN (1) CN1103961C (ja)
DE (1) DE69801673T2 (ja)
GB (1) GB2326253A (ja)
IL (1) IL132681A (ja)
MY (1) MY116707A (ja)
RU (1) RU2195696C2 (ja)
TW (1) TW341689B (ja)
WO (1) WO1998057256A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7788472B2 (en) 2003-06-13 2010-08-31 Arm Limited Instruction encoding within a data processing apparatus having multiple instruction sets
JP2011096254A (ja) * 2009-10-30 2011-05-12 Arm Ltd 乗累算演算を実行するための装置および方法
JP2011197774A (ja) * 2010-03-17 2011-10-06 Renesas Electronics Corp プロセッサシステム
US9405549B2 (en) 2011-03-04 2016-08-02 Nec Corporation Deadlock avoidance method and deadlock avoidance mechanism

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6505290B1 (en) 1997-09-05 2003-01-07 Motorola, Inc. Method and apparatus for interfacing a processor to a coprocessor
US6041404A (en) * 1998-03-31 2000-03-21 Intel Corporation Dual function system and method for shuffling packed data elements
US6504495B1 (en) * 1999-02-17 2003-01-07 Arm Limited Clipping data values in a data processing system
KR100308618B1 (ko) * 1999-02-27 2001-09-26 윤종용 단일 칩 상의 마이크로프로세서-코프로세서 시스템을 구비한 파이프라인 데이터 처리 시스템 및 호스트 마이크로프로세서와 코프로세서 사이의 인터페이스 방법
US6446221B1 (en) * 1999-05-19 2002-09-03 Arm Limited Debug mechanism for data processing systems
JP4425377B2 (ja) * 1999-07-29 2010-03-03 株式会社ターボデータラボラトリー データ処理装置、および、データ処理方法
EP1236092A4 (en) * 1999-09-01 2006-07-26 Intel Corp BRANCH COMMAND FOR A PROCESSOR
WO2001016702A1 (en) 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
WO2001016697A2 (en) * 1999-09-01 2001-03-08 Intel Corporation Local register instruction for micro engine used in multithreadedparallel processor architecture
US6588008B1 (en) * 2000-04-11 2003-07-01 International Business Machines Corporation Assembler tool for processor-coprocessor computer systems
KR100356013B1 (ko) * 2000-08-10 2002-10-12 한국전자통신연구원 암호처리를 위한 범용 프로세서와 암호처리 코프로세서의접속장치
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US20020053017A1 (en) * 2000-09-01 2002-05-02 Adiletta Matthew J. Register instructions for a multithreaded processor
TW495714B (en) * 2000-12-05 2002-07-21 Faraday Tech Corp Device and method for data access control and applied instruction format thereof
GB2372848B (en) 2001-02-20 2004-10-27 Advanced Risc Mach Ltd Data processing using a coprocessor
US6633856B2 (en) * 2001-06-15 2003-10-14 Flarion Technologies, Inc. Methods and apparatus for decoding LDPC codes
US7673223B2 (en) * 2001-06-15 2010-03-02 Qualcomm Incorporated Node processors for use in parity check decoders
US6938196B2 (en) * 2001-06-15 2005-08-30 Flarion Technologies, Inc. Node processors for use in parity check decoders
US6848074B2 (en) 2001-06-21 2005-01-25 Arc International Method and apparatus for implementing a single cycle operation in a data processing system
US6961888B2 (en) * 2002-08-20 2005-11-01 Flarion Technologies, Inc. Methods and apparatus for encoding LDPC codes
US6957375B2 (en) * 2003-02-26 2005-10-18 Flarion Technologies, Inc. Method and apparatus for performing low-density parity-check (LDPC) code operations using a multi-level permutation
US20070234178A1 (en) * 2003-02-26 2007-10-04 Qualcomm Incorporated Soft information scaling for interactive decoding
US7231577B2 (en) * 2003-02-26 2007-06-12 Qualcomm Incorporated Soft information scaling for iterative decoding
US7430652B2 (en) * 2003-03-28 2008-09-30 Tarari, Inc. Devices for performing multiple independent hardware acceleration operations and methods for performing same
US7434145B2 (en) * 2003-04-02 2008-10-07 Qualcomm Incorporated Extracting soft information in a block-coherent communication system
US7231557B2 (en) * 2003-04-02 2007-06-12 Qualcomm Incorporated Methods and apparatus for interleaving in a block-coherent communication system
US8196000B2 (en) * 2003-04-02 2012-06-05 Qualcomm Incorporated Methods and apparatus for interleaving in a block-coherent communication system
US7237181B2 (en) * 2003-12-22 2007-06-26 Qualcomm Incorporated Methods and apparatus for reducing error floors in message passing decoders
CN100407690C (zh) * 2004-01-09 2008-07-30 华为技术有限公司 一种cpu与协处理单元通信的方法及系统
CN100405758C (zh) * 2004-01-20 2008-07-23 海信集团有限公司 可重构密码协处理器的移位模块
US7304996B1 (en) * 2004-03-30 2007-12-04 Extreme Networks, Inc. System and method for assembling a data packet
US7822032B1 (en) * 2004-03-30 2010-10-26 Extreme Networks, Inc. Data structures for supporting packet data modification operations
US7353364B1 (en) * 2004-06-30 2008-04-01 Sun Microsystems, Inc. Apparatus and method for sharing a functional unit execution resource among a plurality of functional units
US7167971B2 (en) * 2004-06-30 2007-01-23 International Business Machines Corporation System and method for adaptive run-time reconfiguration for a reconfigurable instruction set co-processor architecture
US7346832B2 (en) * 2004-07-21 2008-03-18 Qualcomm Incorporated LDPC encoding methods and apparatus
US7395490B2 (en) 2004-07-21 2008-07-01 Qualcomm Incorporated LDPC decoding methods and apparatus
US7127659B2 (en) 2004-08-02 2006-10-24 Qualcomm Incorporated Memory efficient LDPC decoding methods and apparatus
US7689640B2 (en) * 2005-06-06 2010-03-30 Atmel Corporation Method and apparatus for formatting numbers in microprocessors
US7490223B2 (en) * 2005-10-31 2009-02-10 Sun Microsystems, Inc. Dynamic resource allocation among master processors that require service from a coprocessor
US7555514B2 (en) * 2006-02-13 2009-06-30 Atmel Corportation Packed add-subtract operation in a microprocessor
US7496893B2 (en) * 2006-06-15 2009-02-24 International Business Machines Corporation Method for no-demand composition and teardown of service infrastructure
US7925862B2 (en) * 2006-06-27 2011-04-12 Freescale Semiconductor, Inc. Coprocessor forwarding load and store instructions with displacement to main processor for cache coherent execution when program counter value falls within predetermined ranges
US7805590B2 (en) * 2006-06-27 2010-09-28 Freescale Semiconductor, Inc. Coprocessor receiving target address to process a function and to send data transfer instructions to main processor for execution to preserve cache coherence
US9020146B1 (en) * 2007-09-18 2015-04-28 Rockwell Collins, Inc. Algorithm agile programmable cryptographic processor
US8078836B2 (en) 2007-12-30 2011-12-13 Intel Corporation Vector shuffle instructions operating on multiple lanes each having a plurality of data elements using a common set of per-lane control bits
US8667254B1 (en) * 2008-05-15 2014-03-04 Xilinx, Inc. Method and apparatus for processing data in an embedded system
US8139583B1 (en) 2008-09-30 2012-03-20 Extreme Networks, Inc. Command selection in a packet forwarding device
CN101777037B (zh) * 2010-02-03 2013-05-08 中兴通讯股份有限公司 一种查找引擎实时系统内数据传输的方法和系统
US9304774B2 (en) * 2011-02-04 2016-04-05 Qualcomm Incorporated Processor with a coprocessor having early access to not-yet issued instructions
US8605732B2 (en) 2011-02-15 2013-12-10 Extreme Networks, Inc. Method of providing virtual router functionality
CN104053657B (zh) * 2012-01-20 2017-04-26 可奥熙搜路司有限公司 硫代环氧基系光学材料的制造方法及其聚合性合成物
US9280344B2 (en) * 2012-09-27 2016-03-08 Texas Instruments Incorporated Repeated execution of instruction with field indicating trigger event, additional instruction, or trigger signal destination
US9069900B2 (en) * 2013-03-28 2015-06-30 Intel Mobile Communications GmbH Method for determining whether a machine code instruction of a machine code program is executed in the machine code program
CN105242909B (zh) * 2015-11-24 2017-08-11 无锡江南计算技术研究所 一种基于多版本代码生成的众核循环分块方法
KR102420897B1 (ko) * 2016-03-17 2022-07-18 에스케이하이닉스 주식회사 메모리 모듈, 이를 포함하는 메모리 시스템 및 그의 동작 방법
US10204044B2 (en) * 2016-05-18 2019-02-12 Sap Se Memory management process using data sheet
CN108268281B (zh) * 2017-01-04 2021-12-07 中科创达软件股份有限公司 处理器协同方法及电路
US11334355B2 (en) * 2017-05-04 2022-05-17 Futurewei Technologies, Inc. Main processor prefetching operands for coprocessor operations
GB2570729B (en) 2018-02-06 2022-04-06 Xmos Ltd Processing system
KR20190118020A (ko) * 2018-04-09 2019-10-17 에스케이하이닉스 주식회사 반도체 장치
US11138009B2 (en) * 2018-08-10 2021-10-05 Nvidia Corporation Robust, efficient multiprocessor-coprocessor interface

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5193159A (en) * 1986-09-24 1993-03-09 Hitachi, Ltd. Microprocessor system
US4943915A (en) * 1987-09-29 1990-07-24 Digital Equipment Corporation Apparatus and method for synchronization of a coprocessor unit in a pipelined central processing unit
JPH0748179B2 (ja) * 1988-10-12 1995-05-24 日本電気株式会社 データ処理装置
EP0442041A3 (en) * 1990-01-18 1991-09-04 National Semiconductor Corporation Integrated digital signal processor/general purpose cpu with shared internal memory
JP2682469B2 (ja) * 1994-09-20 1997-11-26 日本電気株式会社 命令コード符号化方式

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7788472B2 (en) 2003-06-13 2010-08-31 Arm Limited Instruction encoding within a data processing apparatus having multiple instruction sets
JP2011096254A (ja) * 2009-10-30 2011-05-12 Arm Ltd 乗累算演算を実行するための装置および方法
JP2011197774A (ja) * 2010-03-17 2011-10-06 Renesas Electronics Corp プロセッサシステム
US9405549B2 (en) 2011-03-04 2016-08-02 Nec Corporation Deadlock avoidance method and deadlock avoidance mechanism

Also Published As

Publication number Publication date
JP3681407B2 (ja) 2005-08-10
DE69801673T2 (de) 2002-08-29
CN1260054A (zh) 2000-07-12
DE69801673D1 (de) 2001-10-18
IL132681A (en) 2003-07-31
MY116707A (en) 2004-03-31
TW341689B (en) 1998-10-01
KR20010013147A (ko) 2001-02-26
KR100505799B1 (ko) 2005-08-04
EP1010065B1 (en) 2001-09-12
GB2326253A (en) 1998-12-16
IL132681A0 (en) 2001-03-19
WO1998057256A1 (en) 1998-12-17
GB9712041D0 (en) 1997-08-06
RU2195696C2 (ru) 2002-12-27
US6002881A (en) 1999-12-14
EP1010065A1 (en) 2000-06-21
CN1103961C (zh) 2003-03-26

Similar Documents

Publication Publication Date Title
JP3756195B2 (ja) デジタル信号処理集積回路アーキテクチャ
JP2002503370A (ja) コプロセッサ・データ・アクセス制御
US5881257A (en) Data processing system register control
US5784602A (en) Method and apparatus for digital signal processing for integrated circuit architecture
US5881263A (en) Non-instruction base register addressing in a data processing apparatus
US5969975A (en) Data processing apparatus registers
US5881259A (en) Input operand size and hi/low word selection control in data processing systems
WO1998012626A1 (en) Data processing condition code flags
JP3645573B2 (ja) データ処理装置におけるレジスタ・アドレッシング
JP3662259B2 (ja) データ処理条件コード・フラグ
JP3645574B2 (ja) データ処理システムにおける入力オペランド制御
JP2001504956A (ja) データ処理システム・レジスタ制御
JP2001501329A (ja) データ処理装置レジスタ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040414

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20050510

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050518

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20090527

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100527

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110527

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees