JP5611756B2 - Program flow control - Google Patents
Program flow control Download PDFInfo
- Publication number
- JP5611756B2 JP5611756B2 JP2010233680A JP2010233680A JP5611756B2 JP 5611756 B2 JP5611756 B2 JP 5611756B2 JP 2010233680 A JP2010233680 A JP 2010233680A JP 2010233680 A JP2010233680 A JP 2010233680A JP 5611756 B2 JP5611756 B2 JP 5611756B2
- Authority
- JP
- Japan
- Prior art keywords
- flow control
- program instruction
- program
- target
- instruction sequence
- 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.)
- Active
Links
- 230000004044 response Effects 0.000 claims description 21
- 239000003550 marker Substances 0.000 claims description 12
- 238000000034 method Methods 0.000 claims description 11
- 230000004913 activation Effects 0.000 claims 1
- 230000006870 function Effects 0.000 description 47
- 230000006399 behavior Effects 0.000 description 14
- 230000007246 mechanism Effects 0.000 description 13
- 230000001960 triggered effect Effects 0.000 description 8
- 230000009471 action Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 2
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
Description
本発明は、データ処理システムの分野に関する。より詳細には、本発明は、データ処理システム内のプログラム・フローの制御に関する。 The present invention relates to the field of data processing systems. More particularly, the present invention relates to control of program flow within a data processing system.
プログラム命令によって指定されるデータ処理動作を行うように処理回路を制御することができる1つ又は複数の制御信号を生成するために、プログラム命令に応答する命令デコーダ回路を有する、データ処理システムを提供することが公知である。プログラムを系統立てるのに便利な方法は、それらを、必要に応じて呼ぶことができるルーチン又は機能に分割することである。例として、データ値を設定したときのフーリエ変換の計算のような機能を果たすために、コードが書き込まれコンパイルされてもよい。この機能は、プログラム・フロー内の多数の異なるポイントから呼ばれてもよい。プログラム命令を実行するための1つよりも多いハードウェア・セットを含むシステムにおいて、1つのハードウェア・セットが1つの命令セットを実行し、その一方で、別のハードウェア・セットが別の命令セットを実行することも可能である。この環境内で、1つのハードウェア・セットは、別のハードウェア・セットによって実行されるフーリエ変換のような機能を呼び出すことができる。こうした環境内で、特定の機能を実行するための特殊化されたハードウェアを形成することが可能である。 A data processing system is provided having an instruction decoder circuit responsive to a program instruction to generate one or more control signals that can control the processing circuit to perform a data processing operation specified by the program instruction. It is known to do. A convenient way to organize programs is to divide them into routines or functions that can be called as needed. As an example, code may be written and compiled to perform functions such as computing the Fourier transform when setting data values. This function may be called from a number of different points in the program flow. In a system that includes more than one hardware set for executing program instructions, one hardware set executes one instruction set, while another hardware set is another instruction set. It is also possible to execute a set. Within this environment, one hardware set can invoke functions such as Fourier transforms performed by another hardware set. Within such an environment, specialized hardware can be formed to perform specific functions.
特定の機能を実行するための特殊用途ハードウェアの例は、データ・エンジンである。データ・エンジンは、例えば、メディア処理のような計算が集中するタスクを実行するために提供される場合がある。データ・エンジンは、典型的に、データ・エンジンと関連付けられたタスクを効率的に実行するように設計された特殊用途ハードウェアを含む。こうしたデータ・エンジンは、データ・エンジンによって実行されるべきタスクをスケジュールする汎用プロセッサと組み合わせて動作することができる。幾つかの場合において、データ・エンジンは、データ・エンジン上で実行されるスケジューリング・プログラムを用いて、データ・エンジンによる実行についてのそれ独自のタスクを自身でスケジュールすることが可能である。 An example of special purpose hardware for performing a specific function is a data engine. A data engine may be provided to perform computationally intensive tasks such as media processing, for example. A data engine typically includes special purpose hardware designed to efficiently perform the tasks associated with the data engine. Such a data engine can operate in combination with a general purpose processor that schedules tasks to be performed by the data engine. In some cases, the data engine can itself schedule its own tasks for execution by the data engine using a scheduling program that runs on the data engine.
特定の機能を実行するためのプログラムの開発及びテストには、高い費用と時間がかかる。プログラムは、少量のメモリ・ストレージを要求するものであることが望ましい。 Developing and testing programs to perform specific functions is expensive and time consuming. Desirably, the program requires a small amount of memory storage.
1つの態様から見ると、本発明は、
プログラム命令に応答して1つ又は複数の制御信号を生成する命令デコーダ回路と、
前記1つ又は複数の制御信号に応答して前記プログラム命令によって指定されたデータ処理動作を実行する処理回路と、
プログラム可能なフロー制御値を格納するように構成されたフロー制御レジスタと、
を備え、
前記命令デコーダ回路が、実行されている現在のプログラム命令列の終わりを表すマーカ命令に応答して、前記フロー制御レジスタから前記プログラム可能なフロー制御値を読み出し、前記プログラム可能なフロー制御値に従って前記1つ又は複数の制御信号を生成して、前記現在のプログラム命令列の完了後に、
(i)対象プログラム命令から始まる対象プログラム命令列を処理すること、
(ii)新しい処理タスクが開始されるのを待つアイドル状態に入ること、
のうちの1つをトリガする、データを処理する装置を提供する。
Viewed from one aspect, the present invention provides:
An instruction decoder circuit for generating one or more control signals in response to a program instruction;
A processing circuit that performs a data processing operation specified by the program instructions in response to the one or more control signals;
A flow control register configured to store programmable flow control values; and
With
The instruction decoder circuit reads the programmable flow control value from the flow control register in response to a marker instruction indicating the end of the current program instruction sequence being executed, and according to the programmable flow control value Generating one or more control signals after completion of the current program instruction sequence;
(I) processing a target program instruction sequence starting from a target program instruction;
(Ii) entering an idle state waiting for a new processing task to be started;
An apparatus for processing data that triggers one of the above is provided.
本技術は、実行されている現在のプログラム命令列が、どのようにしてそれが呼び出されたかに応じて現在のプログラム命令列の実行の完了時に適切な異なる挙動を有する、異なる機構を介して呼び出されてもよいことを識別する。どのようにしてそれが呼び出されたかに応じて現在のプログラム命令列の異なるバージョンを提供する代わりに、本技術は、フロー制御レジスタ内に格納されたプログラム・フロー制御値を用いて、現在のプログラム命令列が実行を完了したときにどんな挙動が起こるべきかを判定する。したがって、現在のプログラム命令列は、異なる形態に修正され又は提供される必要はなく、それにもかかわらず、完了時に異なる挙動のトリガをサポートすることができる。より具体的には、完了時にサポートすることが望ましい異なる挙動は、対象プログラム命令から始まる対象プログラム命令列の処理をトリガすること、又は、アイドル状態に入ること、例えば新しい処理タスクが開始されるのを待つことである。これらの挙動は、現在のプログラム命令列が、現在のプログラム命令列を実行するのと同じ機構上で実行される対象スケジューリング・プログラムから呼び出されるシステムをサポートするとともに、現在のプログラム命令列が、現在のプログラム命令列を実行するのとは別の機構から呼び出され、現在のプログラム命令列が完了したときにアイドル状態に入るようにされる機構もサポートする。 The technique is called through different mechanisms, with the current program instruction sequence being executed having different behavior appropriate at the completion of execution of the current program instruction sequence depending on how it was invoked. Identify what may be done. Instead of providing different versions of the current program instruction sequence depending on how it was invoked, the technique uses the program flow control value stored in the flow control register to Determine what behavior should occur when an instruction sequence completes execution. Thus, current program instruction sequences need not be modified or provided in different forms, and nevertheless can support different behavioral triggers upon completion. More specifically, the different behaviors that it is desirable to support on completion are to trigger processing of a target program instruction sequence starting from the target program instruction, or to enter an idle state, for example, a new processing task is started. To wait. These behaviors support a system in which the current program instruction sequence is called from a target scheduling program that runs on the same mechanism that executes the current program instruction sequence, and the current program instruction sequence is It also supports a mechanism that is called from a mechanism other than executing the program instruction sequence of the current program instruction sequence and enters an idle state when the current program instruction sequence is completed.
プログラム可能なフロー制御値の幾つかの値について実行される対象プログラム命令は、固定位置(例えばハードウェア組み込みベクトル)に固定された対象プログラム命令であってもよい。しかしながら、プログラム可能なフロー制御値がプログラム命令のメモリ・アドレスを指定するときに、より大きい融通性が達成される。したがって、対象プログラム命令は、プログラム可能なフロー制御値に設定された値に応じて変化することができる。 The target program instruction executed for some values of the programmable flow control value may be a target program instruction fixed at a fixed location (eg, a hardware embedded vector). However, greater flexibility is achieved when the programmable flow control value specifies the memory address of the program instruction. Thus, the target program instruction can change according to the value set for the programmable flow control value.
プログラム可能なフロー制御値は、プログラム可能なフロー制御値が対象プログラム命令のメモリ・アドレスを指定する対象アドレス・フィールドを含むかどうか、或いは代替的に、現在のプログラム命令列の実行が完了したときにアイドル状態に入るべきであることを指定する値を格納している、ジャンプ有効化フィールドを含んでもよい。ジャンプ有効化ビットであってもよい、このジャンプ有効化フィールドは、現在のプログラム命令列の完了時に代替的挙動間を切り換えるように働く。 A programmable flow control value is whether the programmable flow control value includes a target address field that specifies the memory address of the target program instruction, or alternatively, when execution of the current program instruction sequence is complete May include a jump enable field that stores a value specifying that an idle state should be entered. This jump enable field, which may be a jump enable bit, serves to switch between alternative behaviors upon completion of the current program instruction sequence.
命令デコーダがそれに応答して代替的なルーチン終了時の挙動をトリガするマーカ命令は、現在のプログラム命令列の最後のプログラム命令を識別するプログラム終了命令とすることができる。このプログラム終了命令は、シーケンス内の最後の命令であってもよく、又は、現在のプログラム命令列の最後の命令の前に所定の数の命令が配置されてもよい。後者の挙動は、現在のプログラム命令列がパイプライン化された実行機構上で実行されるときに有用であり、対象プログラム命令列への分岐が要求される場合に、これが現在のプログラム命令列の最後の命令より十分前の時間において、対象プログラム命令がフェッチされて後続の実行が開始されることを識別でき得ることを保証することによって、パイプラインの効果的な使用を促進させる。 The marker instruction that the instruction decoder responds to trigger alternative routine end behavior may be a program end instruction that identifies the last program instruction of the current program instruction sequence. This program end instruction may be the last instruction in the sequence, or a predetermined number of instructions may be placed before the last instruction in the current program instruction sequence. The latter behavior is useful when the current program instruction sequence is executed on a pipelined execution mechanism, and this is used when a branch to the target program instruction sequence is requested. Facilitates effective use of the pipeline by ensuring that it can be identified that the subject program instruction is fetched and subsequent execution begins at a time well before the last instruction.
その実行が1つの挙動においてトリガされてもよい対象プログラム命令列は、種々の異なる形態をとることができる。例として、多くの機能を、次の機能の開始をトリガするように働く1つの機能の終わりと結びつけることが可能である。代替的機構では、対象プログラム命令列は、タスク・スケジューリングを制御するための対象スケジューリング・プログラムであり、現在のプログラム命令列を実行するのと同じ機構によって実行される、すなわち、この機構は、対象スケジューリング・プログラムを使用して、それ独自のタスクをスケジュールする。 The target program instruction sequence whose execution may be triggered in one behavior can take a variety of different forms. As an example, many functions can be associated with the end of one function that serves to trigger the start of the next function. In an alternative mechanism, the target program instruction sequence is a target scheduling program for controlling task scheduling and is executed by the same mechanism that executes the current program instruction sequence, ie, the mechanism is Use a scheduling program to schedule your own tasks.
上記の技術を使用する装置は、様々な異なる形態を有してもよく、様々な異なる多重処理環境に適用可能である。しかしながら、この技術が良く適している1つの環境は、装置がデータ・エンジン及び命令デコーダ回路に結合されたホスト・プロセッサを備えるとき、処理回路及びフロー制御レジスタがデータ・エンジンの一部である。 Devices that use the techniques described above may have a variety of different forms and are applicable to a variety of different multiprocessing environments. However, one environment in which this technique is well suited is when the device comprises a host processor coupled to the data engine and instruction decoder circuit, the processing circuitry and flow control registers are part of the data engine.
この環境内で、対象スケジューリング・プログラムは、データ・エンジンによって実行されてもよく、現在のプログラム命令列は、ホスト・プロセッサ又は対象スケジューリング・プログラムのいずれかによって呼び出されてもよい。フロー制御レジスタを用いて現在のプログラム命令列の完了時の挙動を制御することにより、どのようにしてそれが呼び出されるか、及び、現在のプログラム命令列の完了時にそれがどれだけ適切に挙動するかとは無関係に、同じ現在のプログラム命令列が用いられることが可能となる。 Within this environment, the subject scheduling program may be executed by the data engine and the current program instruction sequence may be invoked by either the host processor or the subject scheduling program. By controlling the completion behavior of the current program instruction sequence using the flow control register, how it is invoked and how well it behaves upon completion of the current program instruction sequence Regardless, the same current program instruction sequence can be used.
ホスト・プロセッサはまた、データ・エンジンによる実行についての現在のプログラム命令列を呼び出すために、ホスト・スケジューリング・プログラムを使用してもよい。 The host processor may also use a host scheduling program to invoke the current program instruction sequence for execution by the data engine.
幾つかの実施形態において、対象スケジューリング・プログラムが現在のプログラム命令列を呼び出すときに、現在のプログラム命令列の完了後に対象スケジューリング・プログラムの実行に戻ることをトリガされ、スケジューリング後のプログラムが現在のプログラム命令列を呼び出すときに、現在のプログラム命令列の完了後にデータ・エンジンがアイドル状態に入ることをトリガされるように、フロー制御値がプログラムされてもよい。 In some embodiments, when the target scheduling program calls the current program instruction sequence, it is triggered to return to execution of the target scheduling program after completion of the current program instruction sequence, and the scheduled program becomes current When calling a program instruction sequence, the flow control value may be programmed to trigger the data engine to enter an idle state after completion of the current program instruction sequence.
プログラム可能なフロー制御値は、データ・エンジン内でデコードされ実行されるロード・プログラム命令に応答してロードされてもよい。 Programmable flow control values may be loaded in response to load program instructions that are decoded and executed within the data engine.
ロード・プログラム命令は、ジャンプ有効化フィールドが、プログラム可能なフロー制御値が現在のプログラム命令列の完了時の実行についてトリガされるべき対象プログラム命令のメモリ・アドレスを指定する対象アドレス・フィールドを含むことを指定する値にされる1つの形態、ならびに、ジャンプ有効化フィールドが、現在のプログラム命令列の実行が完了したときに前述の挙動又は強制的にアイドル状態に入ることのいずれかを与える値に設定される第2の形態を有することができる。第1の形態は必ずしも存在する必要はない。 Load program instructions include a target address field in which the jump enable field specifies the memory address of the target program instruction that the programmable flow control value should be triggered for execution upon completion of the current program instruction sequence. One form that is set to a value that specifies that the jump enable field gives either the above behavior or forcibly entering the idle state when execution of the current program instruction sequence is complete The second configuration can be set as follows. The first form is not necessarily present.
別の態様から見ると、本発明は、プログラム命令に応答して1つ又は複数の制御信号を生成する命令デコーダ手段回路と、
前記1つ又は複数の制御信号に応答して前記プログラム命令によって指定されたデータ処理動作を実行する処理手段と、
プログラム可能なフロー制御値を格納するフロー制御レジスタ手段と、
を備え、
前記命令デコーダ手段が、実行されている現在のプログラム命令列の終わりを表すマーカ命令に応答して、前記フロー制御レジスタ手段から前記プログラム可能なフロー制御値を読み出し、前記プログラム可能なフロー制御値に従って前記1つ又は複数の制御信号を生成して、前記現在のプログラム命令列の完了後に、
(i)対象プログラム命令から始まる対象プログラム命令列を処理すること、
(ii)新しい処理タスクが開始されるのを待つアイドル状態に入ること、
のうちの1つをトリガする、データを処理する装置を提供する。
Viewed from another aspect, the present invention comprises an instruction decoder means circuit for generating one or more control signals in response to a program instruction;
Processing means for performing data processing operations specified by the program instructions in response to the one or more control signals;
Flow control register means for storing programmable flow control values;
With
In response to a marker instruction indicating the end of the current program instruction sequence being executed, the instruction decoder means reads the programmable flow control value from the flow control register means and according to the programmable flow control value Generating the one or more control signals and after completion of the current program instruction sequence;
(I) processing a target program instruction sequence starting from a target program instruction;
(Ii) entering an idle state waiting for a new processing task to be started;
An apparatus for processing data that triggers one of the above is provided.
さらなる態様から見ると、本発明は、プログラム命令に応答して、1つ又は複数の制御信号を生成するステップと、
前記1つ又は複数の制御信号に応答して、前記プログラム命令によって指定されるデータ処理動作を実行するステップと、
プログラム可能なフロー制御値を格納するステップと、
を含むデータを処理する方法であって、
実行されている現在のプログラム命令列の終わりを表すマーカ命令に応答して、前記プログラム可能なフロー制御値を読み出し、前記プログラム可能なフロー制御値に従って前記1つ又は複数の制御信号を生成して、前記現在のプログラム命令列の完了後に、
(i)対象プログラム命令から始まる対象プログラム命令列を処理すること、
(ii)新しい処理タスクが開始されるのを待つアイドル状態に入ること、
のうちの1つをトリガする、方法を提供する。
Viewed from a further aspect, the present invention generates a control signal or signals in response to a program instruction;
Performing a data processing operation specified by the program instructions in response to the one or more control signals;
Storing a programmable flow control value;
A method for processing data including:
In response to a marker instruction representing the end of the current program instruction sequence being executed, the programmable flow control value is read and the one or more control signals are generated according to the programmable flow control value; , After completion of the current program instruction sequence,
(I) processing a target program instruction sequence starting from a target program instruction;
(Ii) entering an idle state waiting for a new processing task to be started;
A method for triggering one of the two is provided.
本発明の上記の及び他の目的、特徴及び利点は、添付の図面と組み合わせて読まれるべき例示的な実施形態の以下の詳細な説明から明らかとなるであろう。 The above and other objects, features and advantages of the present invention will become apparent from the following detailed description of exemplary embodiments to be read in conjunction with the accompanying drawings.
図1は、システム・バス8を介して接続されたホスト・プロセッサ4及びデータ・エンジン6を含むシステム・オン・チップ集積回路2を概略的に示す。ホスト・プロセッサ4は、プロセッサ・コア10、ホスト・メモリ12及びシステム・インターフェース14を含む。データ・エンジン6は、命令デコーダ18及び処理回路20を含んでいる処理コア16を含む。命令密結合メモリ22は、処理回路20を制御する制御信号24を生成するために命令デコーダ18によってデコードするためのプログラム命令列を格納する。データ密結合メモリ26は、命令デコーダ18によってデコードされるときの命令密結合メモリ22からのプログラム命令の制御の下で処理回路20によって取り扱われる、入力及び出力データ値を格納する。システム・インターフェース28が、データ・エンジン6をシステム・バス8に結合する。直接メモリ・アクセス・ユニット30は、ホスト・プロセッサ4が、アービタ32及び34を介して、命令密結合メモリ22及びデータ密結合メモリ26からデータ値を読み出し、かつここにデータ値を書き込むことを可能にする。
FIG. 1 schematically shows a system-on-chip
動作中に、ホスト・プロセッサ4は、典型的に、ホスト・メモリ12内に格納されたプログラム命令によって指示されるように、制御及び他のハイレベルな処理機能を実行する。ホスト・メモリ12内に格納されたプログラム命令は、データ・エンジン6上の処理動作を呼び出すように働くホスト・スケジューリング・プログラムを含むことができる。データ・エンジン6は、典型的に、メディア処理、圧縮、暗号解読等のような、より低いレベルの計算集約型の処理動作を行う。
During operation, the
データ・エンジン6上での実行のために呼び出された機能(現在のプログラム命令列)の通常動作は、この現在のプログラム命令列が、その終わりにプログラム終了(EOP)命令(マーカ命令)に直面するまで実行され、データ・エンジン6はそれらの上で次のタスクが呼び出されるのを待つアイドル状態に入ることである。データ・エンジン6は、命令密結合メモリ22内に格納される対象スケジューリング・プログラムの形態のそれ独自のスケジューリング機構を含むことも可能である。この対象スケジューリング・プログラムは、データ・エンジン6上で実行されるべき機能を呼び出して、データ・エンジンが「自己スケジュール化」することを可能にする。データ・エンジン6自身によって実行される、対象スケジューリング・プログラムによってデータ・エンジン6上で呼び出された機能の実行の終了時に、プログラム・フローは、ホスト・プロセッサ4から呼び出された機能についての場合と同様にデータ・エンジン6がアイドル状態に入るのではなく、対象スケジューリング・プログラム又は少なくとも別のプログラム(例えば結びつけられた機能)に戻ることができる。
The normal operation of the function called for execution on the data engine 6 (current program instruction sequence) is that this current program instruction sequence faces an end of program (EOP) instruction (marker instruction) at the end. The
呼び出された機能を実行する現在のプログラム命令列は、ホスト・プロセッサ4から呼び出された機能とデータ・エンジン6から呼び出された機能との両方について共有されるライブラリからとられる共通のプログラミング命令列であってもよい。これは、ホスト・プロセッサ4とデータ・エンジン6のどちらがそれらの実行を呼び出しているかに従って、用いられるべき現在のプログラム命令列(ライブラリ機能)の別個の形態を提供する必要性をなくすためである。これは、コーディングの労力とプログラム・ストレージ・リソースを節約する。それにもかかわらず、呼び出された機能の完了時に異なるアクションがトリガされる必要がある。この異なる挙動は、データ・エンジン6内のフロー制御レジスタ36を用いて制御される。
The current program instruction sequence for executing the called function is a common programming instruction sequence taken from a library shared for both the function called from the
フロー制御レジスタ36は、実行されている現在のプログラム命令列内のプログラム終了命令(マーカ命令)に直面するときに、命令デコーダ18によって読み出されるプログラム可能なフロー制御値を格納する。プログラム可能なフロー制御値は、現在のプログラム命令列が実行を完了するときにどのタイプの挙動がトリガされるべきかを指定する。トリガされる1つのタイプの挙動は、実行が完了するときにデータ・エンジン6をアイドル状態(低電力状態)におくことである。プログラム可能なフロー制御値の異なる値は、現在のプログラム命令列の実行の完了時に、プログラム可能なフロー制御値内の対象アドレスによって指定される対象プログラム命令へのジャンプをトリガするように働く。この対象アドレス及び対象プログラム命令は、データ・エンジン6が「自己スケジューリング」するときに、データ・エンジン6の対象スケジューリング・プログラム内にあってもよい。したがって、現在のプログラム命令列の完了時に、制御は対象スケジューリング・プログラムに戻される。プログラム可能なプログラム制御値は、現在のプログラム命令列と結びつけられた別の機能へのジャンプに対応するアドレスを格納することも可能である。
The flow control register 36 stores a programmable flow control value that is read by the
図2は、データ・エンジン6内のプログラム・フロー制御機構38を概略的に示す。プログラム・カウンタ・レジスタ40が、命令密結合メモリ22内にメモリ・アドレスを格納し、そこから、命令デコーダ18によってデコードされるべき次の命令がフェッチされる。命令デコーダ18は、デコードされたプログラム命令からのプログラム・フローを制御するための制御信号(1つ又は複数の制御信号)24を生成する。並列処理要素(例えば、ALU、AGU等)におけるデコーダによって生成された他の制御信号は、処理回路20を制御して、デコードされたプログラム命令に対応するデータ処理動作を実行させるように働く。処理動作は、データ・エンジン6に必須の処理の性質に応じて、ロード、格納、シフト等のような単純なもの、又は、乗算、積和演算、フィルタ演算等のようなより複雑な動作であってもよい。
FIG. 2 schematically illustrates a program
制御フロー状態マシン42によって、プログラム・カウンタ・レジスタ40に、プログラム・カウンタ値がロードされる。制御フロー状態マシン42は、プログラム・カウンタ・レジスタ40に、様々な異なるソースからとられたプログラム・カウンタ値をロードすることができる。現在のプログラム命令列が順次に実行されているときに、フィードバック・パス44及び制御フロー状態マシン42内の増分回路が、プログラム・カウンタ値を着実に増分し、実行されている現在のプログラム命令列のステップを進めるように働く。現在のプログラム命令列内の制御フロー命令が命令デコーダ18によってデコードされるときに(例えば分岐命令)、これらの制御フロー命令の対象アドレスが、制御フロー命令パス46を介して制御フロー状態マシン42に供給され、プログラム・カウンタ・レジスタ40にロードされて、実行ポイントにおけるジャンプを実行するようにされる。
The control
フロー制御レジスタ36はまた、制御フロー状態マシン42への入力を提供する。フロー制御レジスタ36は、ジャンプ有効化フラグ48と次のタスク・アドレス50とから形成されたプログラム可能なフロー制御値を格納する。これは、現在のプログラム命令列内でプログラム終了(EOP)命令に直面するときに、制御フロー命令パス46上の信号によって制御フロー状態マシン42に送られてもよい。プログラムの終了命令は、フロー制御レジスタ36からプログラム可能なフロー制御値を読み出すように制御フロー状態マシン42を制御する。ジャンプ有効化ビット48が設定されない場合、制御フロー状態マシン42は、現在のプログラム命令列(例えば、プログラム終了命令のデコーディング後の所定の一定数の処理サイクル)の完了時に、データ・エンジン6がアイドル状態に入るようにトリガする。この挙動は、ホスト・プロセッサ4が現在のプログラム命令列の実行を呼び出したときの要件に対応する。
The flow control register 36 also provides an input to the control
ジャンプ有効化フラグ48が設定される場合、プログラム終了命令に直面すると、制御フロー状態マシン42は、次のタスク・アドレス50(命令密結合メモリ22内の対象プログラム命令のメモリ・アドレス)を読み出し、(パイプラインの深さに匹敵する遅延を伴って)プログラム・カウンタ・レジスタ40にロードされるべき対象プログラム命令のメモリ・アドレスをトリガし、それにより、現在のプログラム命令列の完了時に、対象プログラム命令がフェッチされ実行される。
If the jump enable
この例において、ジャンプ有効化フラグ48はシングル・ビットである。より一般的には、ジャンプ有効化フラグは、1又は複数のビットを含むことができるジャンプ有効化フィールドであると考えられてもよい。
In this example, the jump enable
2つの異なる形態を有することができるロード命令によって、フロー制御レジスタ36に、プログラム可能なフロー制御値48、50がロードされる。第1の形態のincr_Idsetにおいて、ジャンプ・フラグ48が強制的に設定値(「1」)にされ、対象プログラム命令のメモリがプログラム可能なフロー制御値36の次のタスク・アドレス50部分にロードされる。第2形態のロード命令incr_Idは、ジャンプ有効化フラグが強制的に設定値にされず、その代わりに設定値又は非設定値のいずれかとして指定されてもよいこと以外は、同様の方法で作用する。ロード命令に応答してフロー制御レジスタ36にロードされる、これらのプログラム可能なフロー制御値は、マルチプレクサ52及びロード命令を実行するデータ・エンジン6内からの内部データ・パス54を介して、フロー制御レジスタ36に供給される。ホスト・プロセッサ4によって処理が呼び出されるときに、フロー制御レジスタ36内のプログラム可能なフロー制御値は、マルチプレクサ52及び、ホスト・プロセッサ44によって設定されるプログラム可能なフロー制御値がデータ・エンジン6のフロー制御機構38にロードされる、外部タスク・アドレス・パス56を介して、ロードされてもよい。
A load instruction that can have two different forms loads the flow control register 36 with programmable flow control values 48, 50. In the incr_Idset of the first form, the
図3は、フロー制御レジスタ36を概略的に示す。フロー制御レジスタ36は、次のタスク・アドレス50とジャンプ有効化フラグ48を格納する。第1の形態のロード命令incr_Idsetは、次のタスク・アドレス・フィールド50に対象アドレスをロードし、ジャンプ有効化フラグ48を強制的に値「1」にして、現在のプログラム命令列の完了時にデータ・エンジン6内のプログラム・フローを強制的にジャンプさせる。第2形態のロード命令incr_Idはまた、対象アドレスを次のタスク・アドレス・フィールド50にロードするが、この場合、設定値又は非設定値のいずれか一方がジャンプ有効化フラグ48にロードされることを可能にする。
FIG. 3 schematically shows the
図4は、ホスト・メモリ12内に格納されたプログラムと、命令密結合メモリ22を概略的に示す。ホスト・メモリ12は、データ・エンジン6上での呼び出し機能のアクションとは関係のないデータ処理動作を実行するためのホスト汎用プログラム58を格納することができる。ホスト・メモリ12はまた、データ・エンジン6による実行のための機能をスケジュールするように働くホスト・スケジューリング・プログラム60を格納する。
FIG. 4 schematically shows a program stored in the
データ・エンジン6による実行のためにスケジュール化される機能は、命令密結合メモリ22内に格納されるプログラム命令列62、64に対応する。これらのプログラム命令列62、64の各々は、それらが実行されているときに及びそれらの完了の前に、上記に述べたように現在のプログラム命令列に対応する。命令密結合メモリ22は、典型的に、機能ライブラリの形態の多くのこれらの機能を格納することになり、その各々は、データ・エンジン6が所望の機能に対応する処理動作を実行するのを制御するためのプログラム命令列に対応する。同じく命令密結合メモリ22内に格納されるのは、データ・エンジン6によって実行されるプログラム命令列がデータ・エンジン6自身によって呼び出されるときに、「自己スケジューリング」のためにデータ・エンジン6によって用いられてもよい対象スケジューリング・プログラム66である。
The functions scheduled for execution by the
図4の左側には、実行を呼び出しているホスト・プロセッサ4によってホスト・スケジューリング・プログラム60が実行されるときの、それぞれのプログラム命令列62、64の呼び出しが示されている。このようにして呼び出されたプログラム命令列が完了するときに、ポイント「DEアイドル」にリンクする線によって図示されるように、データ命令はアイドル状態におかれる。データ・エンジン6によって実行される対象スケジューリング・プログラム66はまた、それが開始されるときに、ホスト・スケジューリング・プログラム60から呼び出される。その後、対象スケジューリング・プログラム66は、対象スケジューリング・プログラム66自身が完了するまで、「自己スケジューリング」ベースで、データ・エンジン6による実行のためのプログラム命令列62、64をスケジュールするように働く。
The left side of FIG. 4 shows the calling of the respective
呼び出されたプログラム命令列62、64は、組み込み関数(intrinsic)のライブラリ内に提供された組み込み関数の形態であってもよい。こうした組み込み関数は、典型的に、所望の組み込み関数へのポインタ、例えばcall[intrinsic0_pointer]、であるオペランドを有するコール命令を用いて呼び出される。
The called
図示された、命令密結合メモリ22の右側には、データ・エンジン6上で実行される対象スケジューリング・プログラムによる異なるプログラム命令列62、64の呼び出しを示す線が示されている。各々のこれらのプログラム命令列62、64が完了するときに、対象スケジューリング・プログラム66にプログラム実行ポイントの復帰が行われて、そのスケジューリング動作を続けることができるようにされる。
On the right side of the illustrated instruction tightly coupled
図5は、実行される現在のプログラム命令列62を概略的に示す。この現在のプログラム命令列は、データ・エンジン6によって順に実行される命令I0、I1等を含む。より詳細には、命令デコーダ18が、これらの命令I0、I1等をデコードし、1つ又は複数の対応する制御信号24を生成し、制御信号24が、処理回路20を制御して指定された処理動作を実行する。現在のプログラム命令列62内の最後の命令からの所定の数の命令には、プログラム終了命令EOPの形態のマーカ命令が配置されている。このプログラム終了命令は、次の3つのプログラム命令In+2、In+3、及びIn+4が実行された後で、データ・エンジン6が、例えば2つのタイプのさらなるアクションのうちの1つをトリガすることができることを示す。第1のタイプのアクションは、対象スケジューリング・プログラム66を実行するために、したがってデータ・エンジン6内で続いている実行により分岐することである。フロー制御レジスタ36から読み出されるプログラム可能なフロー制御値は、対象スケジューリング・プログラム66内にジャンプするべき対象プログラム命令のアドレスを指定する。トリガすることができる第2の一連のアクションは、データ・エンジンがアイドル状態に入ることである。このアイドル状態に入ることは、プログラム可能なフロー制御値内のジャンプ有効化ビット48が設定されないときに起こる。
FIG. 5 schematically shows the current
図6は、ホスト・プロセッサ4による、データ・エンジン6上で実行されるべき機能の呼び出しを示す。ホスト・プロセッサ4は、ホスト・スケジューリング・プログラム60を実行する。このホスト・スケジューリング・プログラム60は、データ・エンジン機能を呼び出し、データ・エンジン6による処理を開始する。この処理の呼び出しは、マルチプレクサ52及び図2に示された外部タスク・アドレス・パスを介して次のタスク・アドレス値をフロー制御レジスタ36にロードすることによって達成することができる。したがって、データ・エンジン6は、呼び出されるべき現在のプログラム命令列の開始アドレスを渡す。要求されるデータ・エンジン6上での処理を呼び出すと、ホスト・プロセッサ4は、さらにホスト処理を続け、呼び出されたデータ・エンジン6によるタスクの完了に応答するような方法で動作するように制御され(又はプログラムされ)てもよいし、されなくてもよい。
FIG. 6 shows a function call to be executed on the
図6のデータ・エンジン側では、データ・エンジン6は、ホスト・プロセッサ4によって呼び出された機能が開始されるまではアイドルである。データ・エンジン6は、次いで、呼び出された機能を実行する。呼び出された機能に対応する現在のプログラム命令列の終わりに向けて、プログラム終了命令に直面し、プログラム終了命令が実行される。プログラム終了命令の実行の結果として、フロー制御レジスタ36内に格納されたプログラム可能なフロー制御値内にジャンプ有効化ビット48が設定されるかどうかの検出がなされる。データ・エンジン6によって実行されている機能はホスト・プロセッサ4によって呼び出されたので、データ・エンジン6は機能の実行の完了後にそのアイドル状態に入り、ジャンプ有効化ビット48は設定されないと予想される。したがって、ジャンプ有効化ビットが試みられ検出された後で、これは設定されないと判定され、データ・エンジン6はアイドル状態に入る。
On the data engine side of FIG. 6, the
図7は、データ・エンジン6自身によって実行される対象スケジューリング・プログラム66による、プログラム命令列62、64の実行のスケジューリングを概略的に示す流れ図である。ステップ68において、対象スケジューリング・プログラム66の実行が開始される。対象スケジューリング・プログラム66の実行は、それ自体が、図4に示されたようにホスト・スケジューリング・プログラム60によって呼び出されてもよい。
FIG. 7 is a flowchart schematically showing the scheduling of the execution of the
ステップ70において、対象スケジューリング・プログラム66は、呼び出されるデータ・エンジン機能が存在するまで待つ。データ・エンジン機能が呼び出される準備ができたときに、ステップ72は、該当するデータ・エンジン機能(現在のプログラム命令列)の実行を開始する。このデータ・エンジン機能の終わりに向けて、ステップ74でプログラム終了命令が実行される。ステップ76において、プログラム終了命令の実行が、フロー制御レジスタ36からのプログラム可能なフロー制御値の読み出しをトリガする。ステップ78は、ジャンプ有効化ビット48が設定されているかどうかを判定する。ジャンプ有効化ビットが設定されていない場合、ステップ80は、データ・エンジンをアイドル状態に切り換える。対象スケジューラ68は、「0」に設定されるジャンプ有効化ビット48の値を有するフロー制御値36へのロードを実行して、次のプログラム命令列62、64の完了時にデータ・エンジン6がアイドル状態に入るようにすることができる。しかしながら、対象スケジューリング・プログラム66が現在のプログラム命令列66、64の完了後にアクティブであり続けて、制御を復帰する場合、ジャンプ有効化ビットが設定され、ステップ78における判定の後で処理がステップ82に進み、そこで、次のタスク・アドレス・フィールド58内の指定された対象アドレスへのジャンプが実行される。図示された例において、このジャンプは、対象スケジューリング・プログラム66及びステップ70に戻り、そこで、対象スケジューリング・プログラム66は次にデータ・エンジン機能が呼び出されるのを待つ。機能を互いに結びつけ、ステップ82において実行されるジャンプを別の機能の開始にジャンプさせることも可能である。
In step 70, the
本発明の例示的な実施形態が、添付の図面を参照しながら本明細書において詳細に説明されたが、本発明はこれらの厳密な実施形態に限定されず、当業者であれば、付属の請求項によって定められる本発明の範囲及び思想から逸脱することなく、そこに種々の変更及び修正を加えることができることを理解されたい。 While exemplary embodiments of the present invention have been described in detail herein with reference to the accompanying drawings, the present invention is not limited to these exact embodiments and those skilled in the art will It should be understood that various changes and modifications can be made thereto without departing from the scope and spirit of the invention as defined by the claims.
2 システム・オン・チップ集積回路
4 ホスト・プロセッサ
6 データ・エンジン
8 システム・バス
10 プロセッサ・コア
12 ホスト・メモリ
14 システム・インターフェース
16 処理コア
18 命令デコーダ
20 処理回路
22 命令密結合メモリ
24 制御信号
26 データ密結合メモリ
28 システム・インターフェース
30 直接メモリ・アクセス・ユニット
32、34 アービタ
36 フロー制御レジスタ
38 プログラム・フロー制御機構
40 プログラム・カウンタ・レジスタ
42 制御フロー状態マシン
44 フィードバック・パス
46 制御フロー命令パス
48 ジャンプ有効化フラグ
50 次のタスク・アドレス
52 マルチプレクサ
54 内部データ・パス
56 外部タスク・アドレス・パス
58 ホスト汎用プログラム
60 ホスト・スケジューリング・プログラム
62、64 プログラム命令列
66 対象スケジューリング・プログラム
2 System-on-chip
Claims (14)
プログラム命令に応答して1つ又は複数の制御信号を生成する命令デコーダ回路と、
前記1つ又は複数の制御信号に応答して前記プログラム命令によって指定されたデータ処理動作を実行する処理回路と、
プログラム可能なフロー制御値を格納するように構成されたフロー制御レジスタと、
を備え、
前記プログラム可能なフロー制御値がジャンプ有効化フィールドを含み、
前記命令デコーダ回路が、実行されている現在のプログラム命令列の終わりを表すマーカ命令に応答して、前記フロー制御レジスタから前記プログラム可能なフロー制御値を読み出し、前記ジャンプ有効化フィールドに格納された値に従って前記1つ又は複数の制御信号を生成して、前記現在のプログラム命令列の完了後に、
(i)ターゲットプログラム命令から始まるターゲットプログラム命令列を処理すること、
(ii)新しい処理タスクが開始されるのを待つアイドル状態に入ること、
のうちの1つをトリガする、装置。 A device for processing data,
An instruction decoder circuit for generating one or more control signals in response to a program instruction;
A processing circuit that performs a data processing operation specified by the program instructions in response to the one or more control signals;
A flow control register configured to store programmable flow control values; and
With
The programmable flow control value includes a jump enable field;
In response to a marker instruction indicating the end of the current program instruction sequence being executed, the instruction decoder circuit reads the programmable flow control value from the flow control register and stored in the jump enable field. Generating the one or more control signals according to values, and after completion of the current program instruction sequence,
(I) to process the target program instruction sequence starting from the target program instruction,
(Ii) entering an idle state waiting for a new processing task to be started;
A device that triggers one of
(ii)前記ホスト・スケジューリング・プログラムを実行する前記ホスト・プロセッサが前記現在のプログラム命令列を呼び出すときに、前記プログラム可能なフロー制御値が、前記現在のプログラム命令列の完了後に前記データ・エンジンが前記アイドル状態に入ることをトリガする値にプログラムされる、
請求項9に記載の装置。 (I) when the data engine executing the target scheduling program calls the current program instruction sequence, the programmable flow control value is set to the target scheduling program after completion of the current program instruction sequence; Programmed to a value that triggers a return to execution of
(Ii) when the host processor executing the host scheduling program calls the current program instruction sequence, the programmable flow control value is stored in the data engine after completion of the current program instruction sequence. Programmed to a value that triggers entry into the idle state,
The apparatus according to claim 9.
(i)前記ジャンプ有効化フィールドが、前記現在のプログラム命令列の完了後に前記ターゲットプログラム命令から始まるターゲットプログラム命令列の処理をトリガする前記1つ又は複数の制御信号を前記命令デコーダ回路が生成することを指定する値にされ、前記プログラム可能なフロー制御値に含まれるターゲットアドレス・フィールドが前記ターゲットプログラム命令のメモリ・アドレスを指定する値にされる、第1形態の前記ロード・プログラム命令と、
(ii)前記ジャンプ有効化フィールドが、前記現在のプログラム命令列の完了後に前記ターゲットプログラム命令から始まるターゲットプログラム命令列の処理をトリガする前記1つ又は複数の制御信号を前記命令デコーダ回路が生成することを指定する値にされ、前記プログラム可能なフロー制御値に含まれるターゲットアドレス・フィールドが前記ターゲットプログラム命令のメモリ・アドレスを指定する値にされる、又は、前記ジャンプ有効化フィールドが、前記現在のプログラム命令列の実行が完了したときに前記アイドル状態に入ることを指定する値にされる、第2形態の前記ロード・プログラム命令と、
に応答する、請求項11に記載の装置。 The instruction decoder circuit comprises:
(I) The instruction decoder circuit generates the one or more control signals, wherein the jump enable field triggers processing of a target program instruction sequence starting from the target program instruction after completion of the current program instruction sequence. is a value that specifies that the target address field included in the programmable flow control value is a value that specifies the memory address of the target program instructions, said load program instructions of the first embodiment ,
(Ii) The instruction decoder circuit generates the one or more control signals whose trigger enable field triggers processing of a target program instruction sequence starting from the target program instruction after completion of the current program instruction sequence. is a value that specifies that the target address field included in the programmable flow control value is a value that specifies the memory address of the target program instructions, or, the jump activation field, the is a value that specifies that enters the idle state when the execution of the current program instruction sequence is completed Ru, and the load program instructions of the second embodiment,
The apparatus of claim 11 , which is responsive to:
プログラム命令に応答して1つ又は複数の制御信号を生成する命令デコーダ手段と、
前記1つ又は複数の制御信号に応答して前記プログラム命令によって指定されたデータ処理動作を実行する処理手段と、
プログラム可能なフロー制御値を格納するフロー制御レジスタ手段と、
を備え、
前記プログラム可能なフロー制御値がジャンプ有効化フィールドを含み、
前記命令デコーダ手段が、実行されている現在のプログラム命令列の終わりを表すマーカ命令に応答して、前記フロー制御レジスタ手段から前記プログラム可能なフロー制御値を読み出し、前記ジャンプ有効化フィールドに格納された値に従って前記1つ又は複数の制御信号を生成して、前記現在のプログラム命令列の完了後に、
(i)ターゲットプログラム命令から始まるターゲットプログラム命令列を処理すること、
(ii)新しい処理タスクが開始されるのを待つアイドル状態に入ること、
のうちの1つをトリガする、装置。 A device for processing data,
An instruction decoder means to generate one or more control signals in response to program instructions,
Processing means for performing data processing operations specified by the program instructions in response to the one or more control signals;
Flow control register means for storing programmable flow control values;
With
The programmable flow control value includes a jump enable field;
The instruction decoder means reads the programmable flow control value from the flow control register means in response to a marker instruction representing the end of the current program instruction sequence being executed and is stored in the jump enable field. Generating the one or more control signals according to the values, and after completing the current program instruction sequence,
(I) to process the target program instruction sequence starting from the target program instruction,
(Ii) entering an idle state waiting for a new processing task to be started;
A device that triggers one of
前記1つ又は複数の制御信号に応答して、前記プログラム命令によって指定されるデータ処理動作を実行するステップと、
プログラム可能なフロー制御値を格納するステップと、
を含むデータを処理する方法であって、
前記プログラム可能なフロー制御値がジャンプ有効化フィールドを含み、
実行されている現在のプログラム命令列の終わりを表すマーカ命令に応答して、前記プログラム可能なフロー制御値を読み出し、前記ジャンプ有効化フィールドに格納された値に従って前記1つ又は複数の制御信号を生成して、前記現在のプログラム命令列の完了後に、
(i)ターゲットプログラム命令から始まるターゲットプログラム命令列を処理すること、
(ii)新しい処理タスクが開始されるのを待つアイドル状態に入ること、
のうちの1つをトリガする、方法。 Generating one or more control signals in response to the program instructions;
Performing a data processing operation specified by the program instructions in response to the one or more control signals;
Storing a programmable flow control value;
A method for processing data including:
The programmable flow control value includes a jump enable field;
In response to a marker instruction representing the end of the current program instruction sequence being executed, the programmable flow control value is read and the one or more control signals are set according to the value stored in the jump enable field. And after completion of the current program instruction sequence,
(I) to process the target program instruction sequence starting from the target program instruction,
(Ii) entering an idle state waiting for a new processing task to be started;
Triggering one of the methods.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0918297.3 | 2009-10-19 | ||
GB0918297.3A GB2474521B (en) | 2009-10-19 | 2009-10-19 | Program flow control |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011086298A JP2011086298A (en) | 2011-04-28 |
JP5611756B2 true JP5611756B2 (en) | 2014-10-22 |
Family
ID=41462573
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010233680A Active JP5611756B2 (en) | 2009-10-19 | 2010-10-18 | Program flow control |
Country Status (4)
Country | Link |
---|---|
US (1) | US8589664B2 (en) |
JP (1) | JP5611756B2 (en) |
CN (1) | CN102063286B (en) |
GB (1) | GB2474521B (en) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102012010102A1 (en) * | 2012-05-22 | 2013-11-28 | Infineon Technologies Ag | Method and device for data processing |
WO2014023322A1 (en) | 2012-08-06 | 2014-02-13 | Lemoptix Sa | A projection device and a method of manufacturing a projection device |
US9880842B2 (en) * | 2013-03-15 | 2018-01-30 | Intel Corporation | Using control flow data structures to direct and track instruction execution |
US9928076B2 (en) * | 2014-09-26 | 2018-03-27 | Intel Corporation | Method and apparatus for unstructured control flow for SIMD execution engine |
US9766892B2 (en) * | 2014-12-23 | 2017-09-19 | Intel Corporation | Method and apparatus for efficient execution of nested branches on a graphics processor unit |
RU2634172C1 (en) * | 2016-06-02 | 2017-10-24 | Акционерное общество "Лаборатория Касперского" | Method of communication transmission between address spaces |
GB2551548B (en) * | 2016-06-22 | 2019-05-08 | Advanced Risc Mach Ltd | Register restoring branch instruction |
GB2564144B (en) * | 2017-07-05 | 2020-01-08 | Advanced Risc Mach Ltd | Context data management |
US10599441B2 (en) * | 2017-09-04 | 2020-03-24 | Mellanox Technologies, Ltd. | Code sequencer that, in response to a primary processing unit encountering a trigger instruction, receives a thread identifier, executes predefined instruction sequences, and offloads computations to at least one accelerator |
GB2573119A (en) * | 2018-04-24 | 2019-10-30 | Advanced Risc Mach Ltd | Maintaining state of speculation |
CN109086183B (en) * | 2018-07-12 | 2022-08-16 | 武汉斗鱼网络科技有限公司 | Application program monitoring method and device, electronic equipment and storage medium |
CN110780922B (en) * | 2019-10-22 | 2022-06-17 | 珠海格力电器股份有限公司 | Instruction generation method and device, electronic equipment and storage medium |
US20230305962A1 (en) * | 2022-03-25 | 2023-09-28 | Nokia Solutions And Networks Oy | Processor micro-operations cache architecture |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0473714A1 (en) * | 1989-05-26 | 1992-03-11 | Massachusetts Institute Of Technology | Parallel multithreaded data processing system |
EP0403229A1 (en) * | 1989-06-13 | 1990-12-19 | Digital Equipment Corporation | Method and apparatus for scheduling tasks in repeated iterations in a digital data processing system having multiple processors |
JPH043226A (en) * | 1990-04-20 | 1992-01-08 | Fuji Electric Co Ltd | Arithmetic processor |
EP0475282B1 (en) * | 1990-09-14 | 1998-12-16 | Hitachi, Ltd. | Synchronous method and apparatus for processors |
JPH04310140A (en) * | 1991-04-09 | 1992-11-02 | Nissan Motor Co Ltd | Computer system |
US5710913A (en) * | 1995-12-29 | 1998-01-20 | Atmel Corporation | Method and apparatus for executing nested loops in a digital signal processor |
US6055579A (en) * | 1997-11-17 | 2000-04-25 | Silicon Graphics, Inc. | Distributed control and synchronization of multiple data processors using flexible command queues |
JP2001147821A (en) * | 1999-09-10 | 2001-05-29 | Toshiba Corp | Processor |
JP2001195253A (en) * | 2000-01-12 | 2001-07-19 | Denso Corp | Microcomputer and recording medium |
US7861071B2 (en) * | 2001-06-11 | 2010-12-28 | Broadcom Corporation | Conditional branch instruction capable of testing a plurality of indicators in a predicate register |
US7594089B2 (en) * | 2003-08-28 | 2009-09-22 | Mips Technologies, Inc. | Smart memory based synchronization controller for a multi-threaded multiprocessor SoC |
CN1842770A (en) * | 2003-08-28 | 2006-10-04 | 美普思科技有限公司 | Integrated mechanism for suspension and deallocation of computational threads of execution in a processor |
JP4740851B2 (en) * | 2003-08-28 | 2011-08-03 | ミップス テクノロジーズ インコーポレイテッド | Mechanism for dynamic configuration of virtual processor resources |
FR2867872A1 (en) * | 2004-03-18 | 2005-09-23 | St Microelectronics Sa | DEVICE AND METHOD FOR MANAGING A WAITING STATUS OF A MICROPROCESSOR |
US7743376B2 (en) * | 2004-09-13 | 2010-06-22 | Broadcom Corporation | Method and apparatus for managing tasks in a multiprocessor system |
JP4967555B2 (en) * | 2006-09-13 | 2012-07-04 | 富士通株式会社 | Multiprocessor system |
US7788511B2 (en) * | 2007-08-16 | 2010-08-31 | Texas Instruments Incorporated | Method for measuring utilization of a power managed CPU |
-
2009
- 2009-10-19 GB GB0918297.3A patent/GB2474521B/en active Active
-
2010
- 2010-09-07 US US12/923,155 patent/US8589664B2/en active Active
- 2010-10-18 JP JP2010233680A patent/JP5611756B2/en active Active
- 2010-10-19 CN CN201010528139.5A patent/CN102063286B/en active Active
Also Published As
Publication number | Publication date |
---|---|
GB0918297D0 (en) | 2009-12-02 |
CN102063286B (en) | 2015-09-16 |
CN102063286A (en) | 2011-05-18 |
GB2474521A (en) | 2011-04-20 |
GB2474521B (en) | 2014-10-15 |
JP2011086298A (en) | 2011-04-28 |
US8589664B2 (en) | 2013-11-19 |
US20110093683A1 (en) | 2011-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5611756B2 (en) | Program flow control | |
KR101249693B1 (en) | Selecting subroutine return mechanisms | |
JP2004516549A (en) | Single step processing | |
JPH04275628A (en) | Arithmetic processor | |
JP2010503070A (en) | Dependent instruction thread scheduling | |
KR100983135B1 (en) | Processor and method of grouping and executing dependent instructions in a packet | |
US7761744B2 (en) | Debugging method | |
JP4202244B2 (en) | VLIW DSP and method of operating the same | |
US20030120882A1 (en) | Apparatus and method for exiting from a software pipeline loop procedure in a digital signal processor | |
JPH11272474A (en) | Plural execution devices which can interrupt during processing of operation using allocation of plural registers | |
US8108840B2 (en) | Method for enhancing debugger performance of hardware assisted breakpoints | |
JPH01310441A (en) | Data processor | |
JP2004529405A (en) | Superscalar processor implementing content addressable memory for determining dependencies | |
US20030120900A1 (en) | Apparatus and method for a software pipeline loop procedure in a digital signal processor | |
US20030154469A1 (en) | Apparatus and method for improved execution of a software pipeline loop procedure in a digital signal processor | |
US20140013312A1 (en) | Source level debugging apparatus and method for a reconfigurable processor | |
JP2013161484A (en) | Reconfigurable computing apparatus, first memory controller and second memory controller therefor, and method of processing trace data for debugging therefor | |
KR20150040663A (en) | Method and Apparatus for instruction scheduling using software pipelining | |
KR102379886B1 (en) | Vector instruction processing | |
US20150363227A1 (en) | Data processing unit and method for operating a data processing unit | |
US6874080B2 (en) | Context processing by substantially simultaneously selecting address and instruction of different contexts | |
JP7378254B2 (en) | multiprocessor device | |
CN109213575B (en) | Method for running program by single processor | |
US20030182511A1 (en) | Apparatus and method for resolving an instruction conflict in a software pipeline nested loop procedure in a digital signal processor | |
JP4151497B2 (en) | Pipeline processing equipment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20121029 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140117 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140203 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20140501 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20140508 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20140603 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20140606 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20140703 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20140708 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140724 |
|
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: 20140804 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140903 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5611756 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
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 |