JP4078243B2 - 繰返しブロック命令を入れ子ループに沿ってゼロ・サイクル・オーバヘッドで実行する方法及び装置 - Google Patents

繰返しブロック命令を入れ子ループに沿ってゼロ・サイクル・オーバヘッドで実行する方法及び装置 Download PDF

Info

Publication number
JP4078243B2
JP4078243B2 JP2003115827A JP2003115827A JP4078243B2 JP 4078243 B2 JP4078243 B2 JP 4078243B2 JP 2003115827 A JP2003115827 A JP 2003115827A JP 2003115827 A JP2003115827 A JP 2003115827A JP 4078243 B2 JP4078243 B2 JP 4078243B2
Authority
JP
Japan
Prior art keywords
instruction
executing
block
register
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2003115827A
Other languages
English (en)
Other versions
JP2004005603A (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 JP2004005603A publication Critical patent/JP2004005603A/ja
Application granted granted Critical
Publication of JP4078243B2 publication Critical patent/JP4078243B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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/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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • 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/30116Shadow registers, e.g. coupled registers, not forming part of the register space
    • 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
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

Landscapes

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

Description

【0001】
【発明の属する技術分野】
本発明は、一般にマイクロプロセッサ、特に命令ループの実行、回路、システム、及びその実行する方法を改善することに関する。
【0002】
マイクロプロセッサは、汎用プロセッサであって、そこでソフトウェアを実行するために高い命令スループットを備え、かつ係わる特定ソフトウェア応用に依存して広範囲の処理要件を持つことができる。多くの様々な型式のプロセッサが知られており、ここでのマイクロプロセッサは1例に過ぎない。例えば、ディジタル信号プロセッサ(Digital Signal Processor:DPS)は、移動体処理応用のような特定応用に特に広く使用される。DPSは、典型的に、関連した応用の性能を最適化するように構成され、かつこれを達成するためにDPSはいっそう専門化した実行ユニット及びいっそう専門化した命令集合を採用する。特に、移動体電気通信のような応用では、これに限らず、ますます高まるDSP性能を用意する一方、電力消費を可能な限り低く維持することが望まれる。
【0003】
時間限界的高計算タスクをプログラムするとき、同じ動作を多数回繰り返すことがしばしば必要である。例えば、米国特許第4,713,749号に説明されたDSPでは、繰り返し(repeat; RPT)命令は、分岐オーバヘッドをコンパクト化しかつ減少するコードにする。その繰り返し特徴は、単一命令をN+1回まで遂行することを許す。この実施の形態では、Nは、8ビット繰返しカウンタ(repeat counter: RPTC)によって定められ、このカウンタはRPT命令又はRPTK命令によってデータ・バスを経由してデータ・メモリ値(RPT命令によって)又は即値(RPTK命令によって)のどちかをロードされる。このオペランドの値は、次の命令を実行する回数よりも1つ少ない。次いで、直ぐ次に続く命令が実行され、かつRPTCレジスタは、それがゼロに達するまで、減分される。この繰返し特徴を使用するとき、繰り返される命令は1回だけ取り出される。結果として、多くのマルチサイクル命令は、それらが繰り返されるとき、1又は2サイクルになる。繰返し特徴は、乗算/累算(MACD)、ブロック移動、I/O転送、及びテーブル読出し/書込みのような命令と共に使用することができる。正規にはマルチサイクルであるそれらの命令は、繰返し特徴を使用するときパイプライン化され、かつ実効的に単一サイクル命令になる。フィルタ実行のようなプログラムは、可能な限り少量の時間内に制御することができるループを必要とする。例えば、50タップ・トランスバーサル・フィルタ・コードは、2つの命令、すなわち、RPTK49とMACDによって定めることができる。
【0004】
【発明が解決しようとする課題】
或る種のDSPでは、コードのブロックを特定回数繰り返すと共に、コードのブロックを通しての最初の反復の後、ゼロ・サイクル・オーバヘッドである、ハードウェアを具備する。現在までのあらゆる場合に、このハードウェアは一度に1ブロックについて働くことができるに過ぎず、かつ入れ子はレジスタを手動で保存する場合に限り維持され、これは複数サイクルを通して非効率である。
【0005】
【課題を解決するための手段】
本発明の特定態様及び好適態様は、付随する特許請求の範囲の独立項及び従属項に記載されている。一般に、かつ本発明の形では、ディジタル・システムは命令型式を実行する手段と方法を具備し、そこではその型式の命令に関係する文脈情報がその型式の命令の実行の間中に自動的に保存されかつ復元される。
【0006】
本発明に従う特定実施の形態を、例としてのみ、かつ添付図面を参照して説明する。これらの図面では同じ参照符号が同じ部品を表示するのに使用され、かつこれらの図は、別にことわりがなければ、図1のディジタル・システムに関する。異なった図中及び表中の異なった数字及び符号は、別に表示がなければ、相当する部品を指す。
【0007】
【発明の実施の形態】
本発明はディジタル信号プロセッサ(DSP)に特に応用され、例えば、特定応用向け集積回路(Application Specific Integrated Circuit: ASIC)内に実施されるが、本発明はまた他の形のプロセッサにもまた応用される。ASICは1つ以上のメガセルを含むことがあり、メガセルの各々は特注設計機能回路を設計ライブラリによって支給された設計前(pre−designed)機能回路と組み合わせて含む。
【0008】
図1はメガセル100内に本発明の実施の形態を含むディジタル・システムのブロック図であり、メガセルはプロセッサ・コア110といくつかの周辺装置を有する。図1は、本発明の実施例の理解に関係しているメガセル100の部分を示すに過ぎない。DSPについての全体構造の詳細は、周知であり、かつ何処かで容易に見付けることができる。例えば、繰返し命令を用いるマイクロプロセッサ(Microprocessor with Repeat Insruction)と題するメーガー・シュレンダー(Magar Surender)他が発行した米国特許第4,713,749号は、DSPを詳細に説明する。ゲーリー・スウォボダ(Gary Swoboda)他が発行した米国特許第5,329,471号は、いかにDSPを試験しかつエミュレートするか詳細に説明する。本発明の実施例に関係するメガセル100の部分の詳細は、マイクロプロセッサ技術の当業者が本発明を実施しかつ使用することを可能にするように、本明細書で下に充分詳細に説明される。
【0009】
図1を引き続き参照すると、プロセッサ・コア110は、DSPであり、かつ後に更に詳細に説明する。メモリのいくつかのブロックは、プロセッサ・コア110に接続され、次を含む。すなわち、埋込みフラッシュ・メモリ(FLASH)の128K×16及び1回プログラム可能メモリ(one time programmable memory: OPT)の2K×16、各々が寸法1K×16の単一アクセス・メモリの2ブロック(M0,M1 SARAM)、及び3ブロックL0、L1、H0に分割された単一アクセスRAMの追加16K×16(4K+4K+8K)。プロセッサ・コア110に接続されたメモリ・ブロックは、プログラム及びデータ・スぺースの両方にマップされる。それゆえ、ユーザは、メモリ・ブロックのコードを実行するために又はデータ変数に使用すことができる。区分けがプログラム・リンカ(program linker)内で遂行される。プロセッサ・コア110は、プログラマに統一メモリ・マップを提示する。これは、高レベル言語でプログラムすることをいっそう容易にする。ブート(Boot)ROMは、ブート・ローディグ・ソフトウェアを用いて工場プログラムされる。
【0010】
周辺割込み拡張(peripheral interrupt expansion: PIE)ブロックは、多数の割込み源を割込み入力のかなり小さい1つの集合に多重化するようにサービスする。PIEブロックは、96までの周辺割込みをサポートすることができる。96の割込みの各々は、ユーザが重ね書きすることができる専用RAMブロックに記憶されたそれ自体のベクトルによってサポートされる。ベクトルは、割込みをサービスする際プロセッサ・コア、すなわち、CPU11によって自動的に取り出される。この実施例では、ベクトルを取り出すのに9のCPUクロック・サイクルを要し、限界CPU110レジスタを保存する。それゆえ、CPUは、割込み事象に敏速に応答することができる。割込みの優先順位付けは、ハードウェア及びソフトウェアで制御される。各個々の割込みは、PIEブロック内で動作可能/動作禁止することができる。
【0011】
外部インタフェース(external interface: XINTF)は、プログラム可能待機状態、チップ選択、及びプログラム可能ストローブ・タイミングと共に、外部メモリ及び周辺装置へのグルーレス(glue−less)インタフェースを可能にする。周辺信号のほとんどは、汎用I/O(general purpose I/O: GPIO)信号と多重化される。これは、周辺信号又は周辺機能が使用されないならば、ユーザにGPIOとして1つのピンを使用することを可能にする。
【0012】
図2は、図1のシステム内のプロセッサ・コア110のブロック図である。プロセッサ・コア110は、低コスト32ビット固定小数点ディジタル信号プロセッサ(DSP)である。プロセッサ・コア110は、単一サイクル命令実行、レジスタ・対・レジスタ(regiser−to−register)動作、及び修正ハーバード(modified Havard)アーキテクチャ(フォン・ノイマン(Von Neumann)モードで使用可能)を行う。他の特徴は、循環アドレス能力、バイト・パッキングとアンパッキング命令、及びビット操作命令を含む。CPUの修正ハーバード・アーキテクチャは、命令取出しとデータ取出しを並列に遂行することを可能にする。CPUは、パイプラインを横断して単一サイクル命令動作をサポートするために、命令とデータを読み出す一方、同時にデータを書き込むことができる。CPUは、これを個別の6つの個別アドレス/データ・バス200、202、204を通じて行う。オペランド・バスは、乗算器、シフタ、ALUの動作用値を供給し、及びレジスタ・バス206はそれらの結果をレジスタ及びメモリへ運ぶ。プログラム及びデータ制御論理は、プログラム・メモリから取り出された命令の待ち行列を記憶する。実時間エミュレーション及び可視性回路ブロック210は、プログラム開発ツール用制御及びインタフェースを用意する。アドレス・レジスタ算術ユニット(addressregister arithmetric unit: ARAU)220は、データ・メモリから取り出さなければならない値に対するアドレスを発生する。データ読出しに対しては、ARAU220は、そのアドレスをデータ読出しアドレス・バス202上に置き、データ書込みに対しては、ARAU202はデータ書込みアドレス・バス204をロードする。ARAU220はまた、スタック・ポインタ(stack pointer: SP)及び補助レジスタ(auxiliary register: XAR0,XAR1,XAR2,XAR3,XAR4,XAR5,XAR6,XAR7)を増分又は減分する。データ・ページ・ポインタ(data page pointer: DP)レジスタは、データ・アドレスにいっそう高位のアドレス・ビットを付けることによって拡張アドレスへの到達をもたらす。
【0013】
アトミック読出し−修正−書込み算術論理ユニット(atomic read−modify−write logic unit: ALU)230は32ビットALUであって、2s補数算術(2s−complement arthmetric)動作とブール(Boolean)論理動作を遂行する。その計算を行う前に、ALUは、レジスタから、またデータ・メモリから、又はプログラム制御論理からデータを受け取る。ALUは、結果をレジスタに又はデータ・メモリに保存する。固定小数点乗算器/ALU(multiplier/ALU:MPY/ALU)240は、32ビット×32ビットからなる2s補数乗算を遂行して64ビットの結果を生じる。この乗算器は、32ビット被定数レジスタ(XT)、32ビット積レジスタ(P)、及び32ビット累算器(accumulator: ACC)に接続される。XTレジスタは、乗算される値の1つを供給する。乗算の結果は、Pレジスタ又はACCに送ることができる。
【0014】
スタック・ポインタ(SP)は、データ・メモリ内のソフトウェア・スタックの使用を可能にする。SPは、16ビットだけを有しかつデータ空間の低位64Kをアドレス指定だけできる。SPが使用されるとき、32ビット・アドレスの高位6ビット・アドレスは強制的に0にされる。動作の間中、スタックは低メモから高メモリへと成長する。SPは、スタック内の次の空き位置を常に指摘する。リセットで、SPは初期化され、それであるからSPはアドレス0000 040016を指摘する。32ビット値がスタックへ保存されるとき、最下位16ビットがまず保存され、かつ最上位16ビットが次に高位アドレスへ保存される(ほとんどエンディアン(endian)でないフォーマット)。32ビット動作が32ビット値を読み出す又は書き込むとき、CPUは、メモリ・ラッパ又は周辺−インタフェース論理がその読出し又は書込みを偶数アドレスに整列させることを期待する。例えば、SPが奇数アドレス0000 008316を含むならば、32ビット読出し動作は、アドレス0000 008216と0000 008316から読み出す。
【0015】
SPの値がFFFF16を超えて増大する又は000016の下へ減少するならば、SPはあふれる。SPがFFFFを過ぎるとき、SPは0000から順方向へカウントする。例えば、SP=FFFFかつ命令が3をSPに加算するならば、結果は0001である。SPが0000を過ぎて減少するとき、SPはFFFFから逆方向にカウントする。例えば、SP=0002かつ命令が4をSPから減算するならば、結果はFFFFである。値がスタックへ保存中であるならば、SPは、偶数アドレス又は奇数アドレスとの整列を強制されない。整列は、メモリ・ラッパ又は周辺−インタフェース論理によって強制される。
【0016】
図3は、図2のプロセッサ・コア内の命令パイプラインの動作を例示するタイミング線図である。各命令は、命令パイプライン化を形成する8つの独立の段階を通過する。メモリからの読出しは2段階でパイプライン化されるように設計されており、これらの階段は各メモリ読出し動作に対してCPUによって使用される2つのパイプライン段階に対応する。どの所与の時刻にも、各々が異なった完了の段階にある8つまでの命令が活性であり得る。必ずしも全ての読出し及び書込みが同じ段階で起こるのではなく、パイプライン保護機構は同じ場所への読出し及び書込みがこれらがプログラムされる順序で起こることを保証するために必要に応じて命令を機能停止させる。表1は、この実施例の命令パイプライン段階に関して情報を更に提供する。いうまでもなく、種々の段階の数と動作は、本発明の他の実施例では異なることがある。
【0017】
【表1】
Figure 0004078243
【0018】
パイプライン効率を最大限にするために、命令取出し機構は、パイプラインを満杯に維持するように企図する。その役割は命令取出し待ち行列を満たすことであって、この待ち行列はデコーディングと実行に命令を用意して保持する。命令取出し機構はプログラム・メモリから一度に32ビットを取り出すが、それは1つの32ビット命令を又は2つの16ビット命令を取り出す。命令取出し機構は、3つのプログラム・アドレス・カウンタ、すなわち、プログラム・カウンタ(program counter: PC)、命令カウンタ(instruction counter: IC)、及び取出しカウンタ(fetch counter: FC)を使用する。パイプラインが満たされているとき、PCはそのデコード2パイプライン段階にある命令を常に指摘する。ICは処理される次の命令を指摘する。
【0019】
どの命令も8段階を通過するが、どの段階も所与の命令に対して活性であるとは限らない。或るいくつかの命令はデコード2段階でそれらの動作を完了し、他のいくつかの命令は実行段階にあり、かつ更に他のいくつかは書込み段階にある。例えば、メモリから読み出さない命令は読出し段階で動作を遂行せず、またメモリに書き込まない命令は書込み段階で動作を遂行しない。
【0020】
異なった命令がそれらの完了の異なった段階の間中にメモリ及びレジスタに修正を遂行するという理由で、無保護パイプラインは同じ位置で読出しと書込みをするに至ることもあり、意図した順序から逸脱する。CPUは、これらの読出し及び書込みが意図したように起こることを保証をするために不活性サイクルを自動的に追加する。
【0021】
図3をなおも参照すると、この型式の線図は、特定パイプライン事象にではなくむしろ各命令の経路に焦点を当てるために有効である。サイクル8で、パイプラインは満杯である。すなわち、どのパイプライン段階にも命令がある。また、これらの命令の各々に対する有効実行時間は、1サイクルである。或るいくつかの命令はD2段階でそれらの活動を成し遂げ、或る命令はE段階にあり、また或るものはW段階にある。
【0022】
図4は、本発明の特徴に従ってブロック繰返し命令を遂行する回路ブロックを例示するアドレス・ユニット220の部分のブロック図である。規定されたメモリ領域に記憶されたプログラムを規定された回数だけ繰り返し実行することが必要である場合がある。規定されたメモリ領域にアクセス(ブロック繰返しアクセス)を行うとき、いわゆるブロック繰返しアドレス指定方法がアドレス指定に適合している。アドレス発生回路220のこの部分は、プログラム・カウンタ(PC)400、比較器402と416、エンド・レジスタ404、セレクタ406、スタート・レジスタ408、アップ・カウンタ410、ダウン・カウンタ412、及び繰返しブロック・カウンタ・レジスタ414を含む。
【0023】
まず初めに、ブロック繰返し動作の実行の前に、ブロック繰返し(blockrepeat: RPTB)命令を取り出しかつデコードするとき、繰り返される実行に対するプログラム・ブロックのボトム・アドレス(エンド・アドレス)がレジスタ404内にセットされ、プログラムのトップ・アドレス(フロント・アドレス)がレジスタ408内にセットされ、及びサイクル繰り返し番号がレジスタ414内にセットされる。
【0024】
ブロック繰返し動作の開始の後、アドレスが繰返しブロック内の各命令に対して順番にプログラム・カウンタ400から発生される。このアドレスはプログラム・メモリ(図示してない)及びアップ・カウンタ410へ送られ、かつそのアドレスはまた比較器402へ出力される。アップ・カウンタ410内で1が入力されたアドレスに加算(増分され)、かつその結果がセレクタ406へ出力される。
【0025】
比較器402では、プログラム・カウンタ400から出力されたアドレスとレジスタ404に記憶されたボトム・アドレスとの間の比較が行われて、それらが互いに等しいかどうか判定する。比較器402がプログラム・カウンタ400からのアドレスとボトム・アドレスとが互いに同等でないことを判定する間、PC=END信号は不活性状態に維持されかつセレクタ406は入力0側を選択し、かつ出力がプログラム・カウンタ400へ与えられる。すなわち、動作のその期間中のアドレスがボトム・アドレスと等しくないとき、プログラム・カウンタ400は増分されかつ結果がブロック動作の次の順番の命令のアドレスとしてプログラム・カウンタ400から出力される。
【0026】
プログラム・カウンタ400からのアドレス出力がボトム・アドレスと等しいと比較器402が判定すると、PC=END信号が表明され、セレクタ406は入力1側を選択し、かつプログラム・カウンタ400へ与えられた出力がスタート・レジスタ408から選択される。すなわち、そのアドレスがボトム・アドレスに達すると、トップ・アドレスがブロック動作の次の命令のアドレスとしてプロラム・カウンタ400から再び出力されてRPTB命令のオペランドによって指定された命令のブロックの次の反復を開始させる。
【0027】
更に、PC=END信号が活性状態に入ると、ブロック・カウンタ・レジスタ414内のサイクル繰返し数がダウン・カウンタ412によって1だけ減算(減分)され、減分値がブロック・カウンタ・レジスタ414に記憶され、かつそれが比較器416へ出力される。すなわち、トップ・アドレスからボトム・アドレスへの方向にブロック繰返しプログラムの全領域を実行することによってブロック・アドレスの1反復が完了する都度、レジスタ414に記憶されたサイクル繰返し数が減分される。
【0028】
前述の動作が規定されたサイクル数を繰り返された後、レジスタ414の値はゼロになる。比較器416は、レジスタ414に記憶されたサイクル繰返し数をゼロと比較する。それらが互いに等しいならば、完了信号RPT_DONEが表明される。完了信号が活性になるに連れて、アドレス発生回路220は、ブロック繰返しアクセス動作を完了する。
【0029】
RPTB命令の動作は、制御回路ブロック420によって管理される。繰返しブロック機構が活性であるか否かを表示するために、更に、プロセッサ状態レジスタ又は個別専用レジスタ内の繰返しブロック状況フラグ422が必要とされる。命令デコーディング回路ブロック(図示してない)からのデコード信号RPTBに応答して、繰返しブロック・ハードウェアが、上に論じたように、繰返しブロック命令の実行によって呼び出される。本発明の1特徴は、次のようである。すなわち、RPTBN命令が実行を開始すると、繰返しブロック・ハードウェアの現在状態がメモリ430に置かれたスタック432へ保存され、このスタックは図1でプロセッサ・コア110に接続されたメモリ・ブロックの1つを表す。先に論じたように、スタック・ポインタ440は、このスタックを維持する。本発明の更に特徴は、すなわち、RPTB命令の完了の際、保存していた状態を完了信号RPT_DONEに応答してスタックから復元することである。自動的に保存されかつ復元される状態は、ブロック・スタート・アドレス408、ブロック・エンド・アドレス404、現在繰返しカウンタ414、及び他のブロック繰返し命令が入れ子に(nested)されているかどうか表示する状況情報422を含む。
【0030】
図5は、入れ子(nested)ブロック繰返し命令の実行を例示する流れ図である。ここに表したコードの断片では、繰返しブロック命令500が「outerLoopEnd」とラベルした命令506を通して命令の順番全体を含む命令の外側ブロックを開始する。命令500は、命令506のアドレスを表すオペランド#OuterLoopEndと外側ループを横断するべき回数を定める第2オペランド#OuterLoopCountを含む。これら2つのオペランドは、即値データとして、繰返しブロック命令の第1形式に含まれる。もう1つの形式では、繰返しブロック命令が2つのソースオペランド・レジスタを指定し、これらのレジスタは関連エンド・アドレスとループ・カウント・データを含むことになる。他の実施例は、プロセッサの動作と一貫する種々の仕方でオペランドを提供することがある。上に説明したように、命令500がデコードされるとき、ブロック繰返し状態情報がスタック432上へ自動的にプッシュされ、それで、状況ビット422がセットされてブロック繰返し命令500が活性であることを表示する。直ぐ続く命令InstrO1のアドレスが次いでスタート・レジスタ408内へロードされ、オペランド#OuterLoopEndがエンド・レジスタ404内へロードされ、かつ第2オペランド#OuterLoopCountがカウント・レシス414内へロードされる。
【0031】
内側ループは繰返しブロック命令502によって開始され、かつ命令504を通る命令の列を含む。命令502は命令504のアドレスを表すオペランド#InnerLoopEnd及び内側ループを横断するべき回数を定める第2オペランド#InnerLoopCountを含む。命令502がデコードされると、外側ループを定めるブロック繰返し状態情報がスタック432上へ自動的にプッシュされ、次いで、状況ビット422がセットされてブロック繰返し命令502が活性であることを表示する。直ぐ続く命令InstrI1が次いでスタート・レジスタ408内へロードされ、オペランド#InnerLoopEndがエンド・レジスタ404内へロードされ、及び第2オペランド#InnerLoopCountがカウント・レジスタ414内へロードされる。
【0032】
この断片では、外側ループは、内側ループが502で開始されるまで、順番に実行される。次いで、内側ループ繰返しが充分に遂行され、かつ次いで実行が命令506まで順番に続く。外側ループ・カウントが尽きないならば、外側ループが命令InstrO1で開始して繰り返される。内側ループ繰返しが再び充分に遂行されかつ次いで実行が、外側ループ・カウントの尽きるまで、前のように命令506まで順番に続く。このようにして、内側ループは外側ループ内に入れ子されて、外側ループの各反復の間中充分に遂行される。
【0033】
内側ループ繰返しの各完了の際、ブロック・カウント・レジスタ408のカウント値はゼロになりかつ信号RPT_DONEが表明される。ブロック繰返し命令502の実行は、保留ブロック繰返し命令500の保存した状態をスタック432から自動的にポップさせかつこの情報をスタート・レジスタ408、エンド・レジスタ404、ループ・カウント・レジスタ414、及び状況ビット422に復元することによって、完了する。復元した状況ビット422は、それによって表明されて、繰返しブロック命令500が保留中であったこと、かついまは活性であることを表示し、外側ループは正しく処理される。それゆえ、繰返しブロック命令500と関連した外側ループは、繰返しブロック命令502と関連した入れ子内側ループから擾乱されることなく遂行される。
【0034】
都合の良いことに、繰返しブロック命令についての状態情報は各繰返しブロック命令の実行の部分として自動的に保存されかつ復元されるから、入れ子ループの正しい動作を許すためにこの状態情報を保存しかつ復元するために命令オーバヘッドを要することはない。
【0035】
このようにして、スタック寸法の程度まで、どんな数の繰返しブロック・ループも入れ子にすることができる。入れ子が行われている最中でない場合は、復元した状況は状況ビットを表明解除することになりかつ非入れ子繰返し命令の完了の後に更に繰返し処理が遂行されないことになる。繰返しブロック・レジスタの先行値及び状況フラグをスタック上に保存しかつ復元する手順は、多数の繰返しブロックの入れ子を可能にする手順である。
【0036】
コードの繰返しブロックの寸法がレジスタの内容をスタックへ保存するか又はこれから復元に要するサイクル数以上ならば、レジスタの内容の保存及び復元をゼロ・サイクルで行うことができる。この条件を満たすために必要とされる命令の数は、プロセッサ・パイプラインに依存する。例えば、この実施例では、3つの状態レジスタ404、408、416の各々の内容は、それらが読出しバス202を経由してロードされている最中と同じサイクルで書込みバス204を経由してスタックに書き込むことができる。この実施例では、状況ビット422は、状態を3サイクルで保存することができるというように、ブロック・カウントに対して記憶された値の最上位ビットとして含まれる。したがって、繰り返したループ内に少なくとも3つの命令がある限り、ブロック繰返し状態情報を保存しかつ復元するオーバヘッドはゼロである。先に論じたように、命令パイプラインは、より短いループに適合するように機能停止することになる。
【0037】
他の実施例では、状態を自動的に保存しかつ復元するために、他の手段が設けられる。例えば、レジスタ404、408、414の内容及び状況ビット422またはそのいずれかを一時的に保持する一方、状態を保存するためにシャドウ・レジスタが設けられ、そうであるからオペランドを相当する活性レジスタ内へロードすることができる。
【0038】
図6は、本発明の特徴に従う自動文脈記憶(automatic context storage)を用いる命令の実行を例示する流れ図である。ステップ600で、図3を参照して説明したように、命令は、命令パイプライン内で取り出されかつデコードされる。
【0039】
ステップ602〜610は命令の実行段階を表すが、しかし1対1対応においてではない。すなわち、これらのステップの全ては、命令の型式に依存して1サイクルに又は数サイクルに遂行されることがある。ステップ602の間中、状態を保存するべきかどうか判定する検査が行われる。この検査は、例えば、命令の型式、又は割込みサービス・ルーチンが遂行中であるどうかのような、種々のファクタに基づいて調整される。
【0040】
この命令を実行するに先立ち、状態を保存するべきであるならば、ステップ604の間中それを保存する。保存する正確な状態は、命令の型式に依存して変動することがある。例えば、先に説明したブロック繰返し命令については、保存する状態は、スタート・アドレス、エンド・アドレス、反復カウント、及び保留RPTB命令を表示する状況ビットを含む。他の実施例では、繰返し単一(RPT)命令のような命令の他の型式は、繰返しカウント値、及び、例えばRPT命令が保留中であることを表示するRPT保留状況ビットだけを保存する。
【0041】
RPT命令は単一命令を(N+1)回実行することを許し、ここにNはRPT命令のオペランドとして指定される。続く命令は、1回遂行され、次いでN回繰り返えされる。RPTが実行されるとき、繰返しカウンタ(RPTC)はNをロードされる。次いで、RPTCは、それが0に等しくなるまで、繰返し命令が実行される都度減分される。これは、ブロック繰返しカウンタと同じ又は異なるカウンタであってよい。
【0042】
状態606の間中命令が実行される。繰返しブロック命令に対しては、このステップは、指定されたループ内の命令の全ての後続反復実行を含む。RPT命令に対しては、このステップは、単一命令の反復実行を含む。状態を保存する命令型式に対しては、このステップは、この型式の命令が活性であることを表示するように状況ビットをセットすることを含む。
【0043】
ステップ608で、この命令型式が状態を復元するべきかどうかを判定する検査が行われる。ステップ602の場合のように、この検査は、例えば、命令の型式、又は割込みサービス・ルーチンが遂行中であるかどうかのような、種々のファクタに基づいて調整される。例えば、RPT命令は入れ子されないので、RPT命令のこの例が割込みサービス・ルーチン内で実行中でないならば、状態を保存しかつ復元する必要はない。実行中であるならば、他のRPT命令が割り込まれた可能性があり、したがってRPT状態をRPT命令のこの例によって保存しかつ復元しなければならない。更に、RPT命令が実際に割り込まれたときに限り保存ステップ及び復元ステップが遂行されるように、保存及び復元をRPT保留状況ビットによっていっそう修飾することができる。
【0044】
ステップ610の間中、必要ならば、状態を復元する。
【0045】
図7は、本発明の特徴に従う自動文脈記憶を用いる命令の入れ子実行を例示する流れ図である。この図で、ステップ700〜710は、図6の相当するステップ600〜610と同じである。
【0046】
先に述べたように、RPTB命令の実行は、その命令のオペランドによって指定されたループ内の全命令のその後に続く反復実行を含む。ステップ712は、反復ループ内の各命令が実行されるに連れてそのループが図4に示したRPT_DONE信号を試験することによって完了されるかどうか判定する。
【0047】
図5に例示したように、第2RPTB命令502は、入れ子内側ループを形成するために外側ループ内に含むことができる。この場合、ステップ702は、内側ループRPTB命令502をデコードした後、外側ループRPTB命令の文脈を保存する。次いで、ステップ712が命令504の実行の後、内側ループが完了していることを判定するとき、外側ループが適正反復実行を復元するように、ステップ708は外側ループRPTB命令500の状態を復元する。
【0048】
類似の仕方で、RPT命令がRPTB命令と同じ繰返しカウンタを使用する実施例は、1つ以上のRPT命令をRPTBループ内に入れ子することができ、かつRPT命令がRPTBループ内で実行される都度RPTB文脈を自動的に保存しかつ復元することになる。
【0049】
説明した状態保存機構では、先に論じたように、レジスタの保存と復元は、自動的にかつ一般にゼロ・サイクル・オーバヘッドで遂行することができる。先行方式におけるように手動でレジスタを保存させかつ復元することは、余剰コードと余剰サイクルを取り入れ、それゆえ、低効率である。繰返しブロック命令を呼出すとレジスタを自動的に保存することは、プログラマが繰返しブロック命令を使用する割込みサービス・ルーチンの初めと終に繰返しブロック・レジスタを保存することと状況フラグとを必要としないことを意味する。これは、さらなる性能の向上となる。
【0050】
図8は、移動パーソナル・ディジタル・アシスタント(PDA)10のような、移動通信装置であるディジタル・システムの模範的実施を例示する。PDAは、ディスプレイ14及びこれの周辺に置かれた集積入力センサ12a、12bを備える。図8に示したように、PDA10は、図1に従うメガセル100を含み、このメガセルはアダプタ(図示してない)を経由して入力センサ12a、12bに接続される。情報を入力センサ12a、12bを経由してPDAに入力させるために筆又は手指を使用することができる。ディスプレイ14は、ローカル・フレーム・バッファを経由してメガセル100に接続される。ディスプレイ14は、例えば、MPEGビデオ・ウィンドウ14a、共用テキスト・ドキュメント・ウィンドウ14b、及び三次元ゲーム・ウィンドウ14cのような、重なり合うウィンドウ内にグラヒック出力及びビデオ出力を与える。
【0051】
無線周波数(RF)回路ブロック(図示してない)は、アンテナ18に接続されかつDSP周辺装置としてのメガセル100によって駆動され、かつ無線ネットワーク・リンクを提供する。接続器20は、ケーブル・アダプタ−モデム(図示してない)に接続され、それからDSP周辺装置としてのメガセル100に接続されて、例えば、オフィス環境内固定用途にある間中使用される配線ネットワークを与える。距離無線リンク23は、受話具口22にまた「接続」されかつDSP周辺装置としてのメガセル100に接続された低電力送信機(図示してない)によって駆動される。マイクロホン24は、両方向オーディオ情報をマイクロホン24と無線受話口22を使用して無線ネットワーク又は有線ネットワークを通じて他のユーザと交換することができるというように、メガセル100に同様に接続される。
【0052】
メガセル100は、無線ネットワーク・リンク及び有線ネットワーク・リンクまたはそのいずれかを経由して送信及び受信されるオーディオ情報及びビデオ/グラフィク情報に対する全てのエンコーディングとデコーディングを行う。
【0053】
通信システム、制御システム、及びコンピュータ・システムの多くの他の型式のもの、特に電池式のものが本発明から便益を受けることも、もとより、想定している。このような他のコンピュータ・システムの例には、ポータブル・コンピュータ、スマート・ホーン、ウェブ・ホーン、ゲーム、玩具等がある。低電力消費処理性能もまたデスクトップ・コンピュータ・システム応用及び線路電源式(line powered)コンピュータ・システム応用において、特に、信頼性の見地からまた関心事であるので、本発明がこのような線路電源式システムに便益を与えることも想定している。
【0054】
メガセル100の製作は、トランジスタ装置を形成するために、種々の量の不純物を半導体基板内へ打ち込みかつそれらの不純物を基板内の選択された深さに拡散させる多数のステップを含む。不純物の場所を制御するためにマスクが形成される。導体材料と絶縁材料の多数の層が堆積され、かつ種々の装置を相互接続するようにエッチングされる。これらのステップは、クリーン・ルーム環境内で遂行される。
【0055】
データ処理装置の製造のコストのかなりの部分は、試験に係わる。ウェーハ形状である間に、個々の装置は、動作状態にバイアスされかつ基本的動作機能性をプローブ試験される。次いで、ウェーハは個々のチップに分離され、それらのチップは裸のチップ又は実装されて販売されることがある。実装の後、仕上がり部品は、動作状態にバイアスされかつ動作機能性を試験される。
【0056】
メガセル100は、高度デバッギング特徴用ハードウェア増設を含む。これらのハードウェア増設は、アプリケーション・システムの開発を援助する。これらの能力はCPU110自体のコアの部分であるから、それらの能力は拡張動作モード増設とのJTAGインタフェースのみを利用して有効である。それらは、在来のエミュレータ・システムによって要求された高価なケーブル布設及びプロセッサ・ピンへのアクセスを必要とすることなく又はシステム資源へ侵入することなく、複雑なデバッギングのためにコアへの簡単、安価かつ速度に無関係のアクセスを与えかつ経済的なシステム開発をもたらす。
【0057】
それゆえ、ディジタル・システムは命令型式を実行する手段と方法を具備し、そこではその型式の命令に関係する文脈情報がその命令型式の実行の間中に自動的に保存されかつ復元される。
【0058】
本明細書に使用されたように、用語「応用された(applied)」、「接続された(connected)」及び「接続(connection)」は、電気接続されたことを意味し、追加素子が電気接続経路にあるかもしれない所を含む。「関連した(associated)」は、関連したポートによって制御されるメモリ資源のような、制御関係を意味する。用語、表明する(assert)、表明(assertion)、表明解除する(de−asert)、表明解除(de−assertion)、否定する(negate)、及び否定(negation)は、活性高信号と活性低信号の混合を扱うとき混乱を回避するために使用される。表明すると表明は、信号が活性にされているか又は論理的に真であることを表示するために使用される。表明解除する、表明解除、及び否定は、信号が不活性にされている又は論理的に偽であることを表示する。
【0059】
本発明を例証実施例を参照して説明したが、この説明を限定的意味に解釈されることを意図していない。本発明の種々の他の実施例は、この説明を参照するならば当業者に明白である。例えば、繰返しループ命令アドレスを計算する他の手段を実施することができ、そこでは、「パイプライン化プロセッサ用ブロック繰返しアドレス指定のためのアドレス発生回路(Address Generation Circuit For Block Repeat Addressing For A Pipelined Processor)」と題する米国特許第6,038,649号に説明されたもののような、アドレス計算手段の状態を保存することによって入れ子動作が行われる。この米国特許は、ここに引用することによってその内容が本明細書に組み入れられている。
【0060】
他の実施例では、命令パイプラインは、8より多い又は少ない段階を有することがある。パイプライン段階は、本明細書に説明したのと異なった仕方で構成されかつ動作することがある。他の実施例は、多数の相互接続実行ユニットを有することがある。
【0061】
他の実施例では、状態をスタック内以外の何処かに記憶することができる。例えば、単一状態保存が行われることがあるか、又は限られた数の状態が限られた記憶領域に保存されることがある。スタック動作については、個別スタック及び関連スタック・ポインタが他のプロセッサ機能に使用された主スタックから与えられることがある。個々のスタック又は個々の記憶領域が状態保存動作/状態復元動作を遂行する命令の各型式に対して与えられることがある。例えば、32ビット組織のような、16ビット以外の他のメモリ構成が用意される。
【0062】
RPTB又はRPT以外の他の実施例、命令が状態を保存しかつ復元することがある。例えば、性能及び応答上の理由から、多数実行サイクルを必要とする命令のどの型式も割り込みできることが有利である。それゆえ、明示状態保存が割込みルーチンの間中に遂行される必要がないように、割込み可能命令は自動状態保存動作から便益を受ける。このような命令は、浮動小数点計算、フィルタ動作、データ転送動作等のようなタスクを遂行するためのものであり得よう。
【0063】
したがって、添付の特許請求の範囲は、本発明の真の範囲と精神に属するような実施の形態のいかなるこのような修正にも及ぶと考えられる。
【0064】
以上の説明に関して更に以下の項を開示する。
【0065】
(1) プロセッサを有するディジタル・システム内で命令を実行する方法であって、
第1型式の第1命令を取り出しかつデコードするステップであって、第1型式の第1命令はプロセッサの少なくとも第1レジスタの使用を必要とするようになっている第1命令を取り出しかつデコードするステップと、
第1命令を取り出しかつデコードするステップに応答して第1レジスタに記憶された第1データを自動的に保存するステップと、
第1レジスタを使用するという仕方で第1命令を実行するステップと、
実行するステップの後に保存した第1データで以て第1レジスタを自動的に復元するステップと
を含む方法。
【0066】
(2) 第1項記載の方法であって、
第1命令を実行するステップの間中に第1型式の第2命令をデコードするステップと、
第2命令を前記デコードするステップに応答して第1レジスタに記憶された第2データを自動的に保存するステップと、
第1命令を実行するステップを中断するステップと、
第1レジスタを使用するという仕方で第2命令を実行するステップと、
第2命令を実行するステップの後に保存した第2データで以て第1レジスタを自動的に復元するステップと、
第1命令を実行するステップを再開するステップと
を更に含む方法。
【0067】
(3) 第2項記載の方法において、第1型式の命令はブロック繰返し命令であり、第1命令を前記実行するステップは第1命令によって指定された命令のブロックを実行することを含み、及び第2命令を実行するステップは第2命令によって指定された命令のブロックを実行することを含む方法。
【0068】
(4) 第3項記載の方法において、第1データを保存するステップと第2データを保存するステップとはブロック・スタート・アドレスと、ブロック・エンド・アドレスと、繰返しカウントとを保存することと、他のブロック繰返し命令が保留中であるかどうか表示する状況情報を保存することとを含む方法。
【0069】
(5) 第1項記載の方法において、保存するステップは第1データをスタック上へプッシュし及び復元するステップは第1データをスタックからポップする方法。
【0070】
(6) 第1項記載の方法において、保存するステップは第1型式の命令が保留中であるかどうか表示する状況情報を保存することを含む方法。
【0071】
(7) 第1項記載の方法であって、
いつプロセッサが割込みサービス・ルーチンを遂行中であるか表示するモード・ビットをセットするステップと、
割込みサービス・ルーチンを遂行中であることをモード・ビットが表示するときに限り保存するステップと復元するステップとが遂行されるというように保存するステップと復元するステップとを調整するステップとを更に含む方法。
【0072】
(8) プロセッサを有するディジタル・システム内で命令を実行する方法であって、
第1型式の第1命令を取り出しかつデコードするステップと、
第1命令をデコードするステップに応答して第1状態データを自動的に保存するステップと、
第1状態データを変化させるという仕方で第1命令を実行するステップと、
第1命令を実行するステップの後に保存した第1状態データを自動的に復元するステップと
を含む方法。
【0073】
(9) 第8項記載の方法であって、
第1命令を実行するステップの間中に第1型式の第2命令をデコードするステップと、
第2命令をデコードするステップに応答して第2状態データを自動的に保存するステップと、
第1命令を実行するステップを中断するステップと、
第2状態データを変化させるという仕方で第2命令を実行するステップと、
第2命令を実行するステップの後に保存した第2状態データを自動的に復元するステップと、
第1命令を実行するステップを再開するステップと
を更に含む方法。
【0074】
(10) 命令メモリから取り出された命令を実行するプロセッサと、
各命令をデコードする手段と、
各命令を実行する手段と、
命令の第1型式に関係する状態データを保持する少なくとも第1レジスタと、
第1型式の命令をデコードすることに応答して状態データを自動的に保存する手段と、
第1型式の命令の実行の後に状態データを復元する手段と
を含むディジタル・システム。
【0075】
(11) 第10項記載のディジタル・システムであって、いつプロセッサが第1型式の命令をデコードしたか表示する状況ビットを更に含み、
状況ビット内のデータは自動的に保存した状態データと共に含まれるディジタル・システム。
【0076】
(12) 第11項記載のディジタル・システムはパーソナル・ディジタル・アシスタント「(R)」であって、
ディスプレイ・アダプタを経由してプロセッサに接続されたディスプレイと、
プロセッサに接続された無線周波数(RF)回路ブロックと、
無線周波数回路ブロックに接続されたアンテナと
を含むディジタル・システム。
【0077】
(13) ディジタル・システムは命令型式を実行する(600)手段と方法を具備し、手段と方法では型式の命令に関係する文脈情報が命令型式の実行の間中に自動的に保存され(602,603)かつ復元される(608,610)。
【図面の簡単な説明】
【図1】本発明の実施例を含むディジタル・システムのブロック図である。
【図2】図1のシステム内のプロセッサ・コアのブロック図である。
【図3】図2のプロセッサ・コア内の命令パイプラインの動作を例示するタイミング線図である。
【図4】本発明の特徴に従うブロック繰返し命令を遂行する回路ブロックを例示する図2のプロセッサ・コアのアドレス・ユニットの部分のブロック図である。
【図5】図2のプロセッサ・コア内の入れ子ブロック繰返し命令の実行を例示する流れ図である。
【図6】図2のプロセッサ・コア内の自動文脈記憶を用いる命令の実行を例示する流れ図である。
【図7】図2のプロセッサ・コア内の自動文脈記憶を用いる命令の入れ子実行を例示するより詳細な流れ図である。
【図8】移動電話のような、移動通信装置内のディジタル・システムの模範的実施を例示する斜視図である。
【符号の説明】
10 移動パーソナル・ディジタル・アシスタント(PDA)
12a,12b 入力センサ
14 ディスプレイ
18 アンテナ
100 メガセル
110 プロセッサ・コア、CPU
200 アドレス/データ・バス
202 アドレス/データ・バス
204 アドレス/データ・バス
204 レジスタ・バス
210 実時間エミュレーション及び可視性回路ブロック
220 アドレス・レジスタ算術ユニット(ARAU)
230 アトミック読出し−修正−書込み算術論理ユニット
240 固定小数点乗算器/ALU
400 プログラム・カウンタ(PC)
402 比較器
404 エンド・レジスタ
406 セレクタ
408 スタート・レジスタ
410 アップ・カウンタ
412 ダウン・カウンタ
414 ブロック・カウンタ・レジスタ
416 比較器
420 制御回路ブロック
422 ブロック状況フラグ、状況ビット、状況情報
430 メモリ
432 スタック
440 スタック・ポインタ
500 繰返しブロック(RPTB)命令
502 繰返しブロック(RPTB)命令

Claims (6)

  1. プロセッサを有するディジタル・システム内で命令を実行する方法であって
    第1型式の第1命令を取り出しかつデコードするステップであって、第1型式の第1命令は前記プロセッサの少なくとも第1レジスタの使用を必要とする、前記第1命令を取り出しかつデコードするステップと、
    前記第1命令を取り出しかつデコードするステップに応答して第1レジスタに記憶された第1データを自動的に保存するステップと、
    前記第1レジスタを使用することにより前記第1命令を実行するステップと、
    前記実行するステップの後に前記保存した第1データ前記第1レジスタを自動的に復元するステップと、
    前記プロセッサが割り込みサービス・ルーチンを実行しているときを示すためにモード・ビットを設定するステップと、
    前記モード・ビットが割り込みサービス・ルーチンが実行されていることを示す場合のみ、前記保存するステップおよび前記復元するステップが実行されるよう調整するステップと、
    含む、前記方法。
  2. 請求項1記載の方法であって、
    前記第1命令を実行するステップの間中に前記第1型式の第2命令をデコードするステップと、
    前記第2命令をデコードするステップに応答して前記第1レジスタに記憶された第2データを自動的に保存するステップと、
    前記第1命令を実行するステップを中断するステップと、
    前記第1レジスタを使用することにより前記第2命令を実行するステップと、
    前記第2命令を実行するステップの後に保存した前記第2データで前記第1レジスタを自動的に復元するステップと、
    前記第1命令を実行するステップを再開するステップと
    を更に含む、前記方法。
  3. 請求項2記載の方法であって、
    前記第1型式の命令はブロック繰返し命令であり、前記第1命令を前記実行するステップは前記第1命令によって指定された命令のブロックを実行することを含み、及び前記第2命令を実行するステップは前記第2命令によって指定された命令のブロックを実行することを含む、前記方法。
  4. 請求項3記載の方法であって、
    前記第1データを保存するステップと前記第2データを保存するステップとはブロック・スタート・アドレスと、ブロック・エンド・アドレスと、繰返しカウントとを保存することと、他のブロック繰返し命令が保留中であるか否かを指示する状況情報を保存することとを含む、前記方法。
  5. 請求項1記載の方法であって、
    前記保存するステップは前記第1データをスタック上へプッシュし及び前記復元するステップは前記第1データを前記スタックからポップする、前記方法。
  6. 請求項1記載の方法であって、
    前記保存するステップは、前記第1型式の命令が保留中であるか否かを示す状況情報を保存することを含む、前記方法。
JP2003115827A 2002-04-22 2003-04-21 繰返しブロック命令を入れ子ループに沿ってゼロ・サイクル・オーバヘッドで実行する方法及び装置 Expired - Fee Related JP4078243B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US37441902P 2002-04-22 2002-04-22
US10/196,915 US6986028B2 (en) 2002-04-22 2002-07-17 Repeat block with zero cycle overhead nesting

Publications (2)

Publication Number Publication Date
JP2004005603A JP2004005603A (ja) 2004-01-08
JP4078243B2 true JP4078243B2 (ja) 2008-04-23

Family

ID=29218386

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003115827A Expired - Fee Related JP4078243B2 (ja) 2002-04-22 2003-04-21 繰返しブロック命令を入れ子ループに沿ってゼロ・サイクル・オーバヘッドで実行する方法及び装置

Country Status (2)

Country Link
US (1) US6986028B2 (ja)
JP (1) JP4078243B2 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1567933A2 (en) * 2002-11-28 2005-08-31 Koninklijke Philips Electronics N.V. A loop control circuit for a data processor
US7493478B2 (en) * 2002-12-05 2009-02-17 International Business Machines Corporation Enhanced processor virtualization mechanism via saving and restoring soft processor/system states
US8156343B2 (en) 2003-11-26 2012-04-10 Intel Corporation Accessing private data about the state of a data processing machine from storage that is publicly accessible
US7558948B2 (en) * 2004-09-20 2009-07-07 International Business Machines Corporation Method for providing zero overhead looping using carry chain masking
US20060101256A1 (en) * 2004-10-20 2006-05-11 Dwyer Michael K Looping instructions for a single instruction, multiple data execution engine
JP5003070B2 (ja) * 2006-09-09 2012-08-15 ヤマハ株式会社 デジタル信号処理装置
US7987347B2 (en) * 2006-12-22 2011-07-26 Broadcom Corporation System and method for implementing a zero overhead loop
US7991985B2 (en) * 2006-12-22 2011-08-02 Broadcom Corporation System and method for implementing and utilizing a zero overhead loop
EP2009544B1 (en) * 2007-06-26 2010-04-07 Telefonaktiebolaget LM Ericsson (publ) Data-processing unit for nested-loop instructions
US9519617B2 (en) * 2011-07-14 2016-12-13 Texas Instruments Incorporated Processor with instruction variable data distribution
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
US11249724B1 (en) * 2018-09-26 2022-02-15 Habana Labs Ltd. Processing-memory architectures performing atomic read-modify-write operations in deep learning systems
US11042468B2 (en) 2018-11-06 2021-06-22 Texas Instruments Incorporated Tracking debug events from an autonomous module through a data pipeline

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BE626951A (ja) * 1962-01-22
EP0153764B1 (en) * 1984-03-02 1993-11-03 Nec Corporation Information processor having an interruption operating function
US4713749A (en) 1985-02-12 1987-12-15 Texas Instruments Incorporated Microprocessor with repeat instruction
JPH06180653A (ja) * 1992-10-02 1994-06-28 Hudson Soft Co Ltd 割り込み処理方法および装置
JPH07160585A (ja) * 1993-12-13 1995-06-23 Hitachi Ltd 低電力データ処理装置
JPH07253922A (ja) 1994-03-14 1995-10-03 Texas Instr Japan Ltd アドレス生成回路
US6243804B1 (en) * 1998-07-22 2001-06-05 Scenix Semiconductor, Inc. Single cycle transition pipeline processing using shadow registers
JP3842474B2 (ja) * 1999-02-02 2006-11-08 株式会社ルネサステクノロジ データ処理装置
EP1182570A3 (en) * 2000-08-21 2004-08-04 Texas Instruments Incorporated TLB with resource ID field

Also Published As

Publication number Publication date
US20030200423A1 (en) 2003-10-23
JP2004005603A (ja) 2004-01-08
US6986028B2 (en) 2006-01-10

Similar Documents

Publication Publication Date Title
US6671797B1 (en) Microprocessor with expand instruction for forming a mask from one bit
US6539467B1 (en) Microprocessor with non-aligned memory access
US6745319B1 (en) Microprocessor with instructions for shuffling and dealing data
US7062526B1 (en) Microprocessor with rounding multiply instructions
US6507921B1 (en) Trace fifo management
EP1102163A2 (en) Microprocessor with improved instruction set architecture
US6748521B1 (en) Microprocessor with instruction for saturating and packing data
EP1012735B1 (en) Eight-bit microcontroller having a risc architecture
US20050188182A1 (en) Microprocessor having a set of byte intermingling instructions
US6574724B1 (en) Microprocessor with non-aligned scaled and unscaled addressing
JP4078243B2 (ja) 繰返しブロック命令を入れ子ループに沿ってゼロ・サイクル・オーバヘッドで実行する方法及び装置
US6990570B2 (en) Processor with a computer repeat instruction
US6453405B1 (en) Microprocessor with non-aligned circular addressing
US20080201564A1 (en) Data processor
CN108319559B (zh) 用于控制矢量内存存取的数据处理装置及方法
US6502152B1 (en) Dual interrupt vector mapping
US6757819B1 (en) Microprocessor with instructions for shifting data responsive to a signed count value
US6889320B1 (en) Microprocessor with an instruction immediately next to a branch instruction for adding a constant to a program counter
US6766440B1 (en) Microprocessor with conditional cross path stall to minimize CPU cycle time length
EP1102165A1 (en) Microprocessor with execution packet spanning two or more fetch packets
US6834338B1 (en) Microprocessor with branch-decrement instruction that provides a target and conditionally modifies a test register if the register meets a condition
JP5862397B2 (ja) 演算処理装置
US7039790B1 (en) Very long instruction word microprocessor with execution packet spanning two or more fetch packets with pre-dispatch instruction selection from two latches according to instruction bit
EP0992897B1 (en) Stack pointer management
KR19980018071A (ko) 멀티미디어 신호 프로세서의 단일 명령 다중 데이터 처리

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060419

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20061130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061208

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20070308

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20070313

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070521

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: 20080129

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080204

R150 Certificate of patent or registration of utility model

Ref document number: 4078243

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20110208

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110208

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120208

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20130208

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20130208

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20140208

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees