JP5611756B2 - Program flow control - Google Patents

Program flow control Download PDF

Info

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
Application number
JP2010233680A
Other languages
Japanese (ja)
Other versions
JP2011086298A (en
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 JP2011086298A publication Critical patent/JP2011086298A/en
Application granted granted Critical
Publication of JP5611756B2 publication Critical patent/JP5611756B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing 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.

ホスト・プロセッサ及びデータ・エンジンを含むシステム・オン・チップ集積回路を概略的に示す図である。FIG. 1 schematically illustrates a system on chip integrated circuit including a host processor and a data engine. 図1のデータ・エンジン内で用いられるプログラム・フロー制御機構を概略的に示す図である。FIG. 2 schematically illustrates a program flow control mechanism used in the data engine of FIG. プログラム可能なフロー制御値を格納するフロー制御レジスタを概略的に示す図である。FIG. 3 schematically illustrates a flow control register that stores programmable flow control values. それぞれプログラム命令を格納するホスト・プロセッサ・メモリ及びデータ・エンジン・メモリを概略的に示す図である。FIG. 2 schematically illustrates a host processor memory and a data engine memory that store program instructions, respectively. データ・エンジンによって実行され、プログラム終了命令の形態のマーカ命令を含む、現在のプログラム命令列を概略的に示す図である。FIG. 2 schematically shows a current program instruction sequence executed by a data engine and including a marker instruction in the form of an end program instruction. ホスト・プロセッサがデータ・エンジンにおける機能の実行を呼び出すときの動作フローを概略的に示す図である。FIG. 5 is a diagram schematically illustrating an operation flow when a host processor calls execution of a function in a data engine. データ・エンジン上で実行される対象スケジューラによる機能スケジューリングを概略的に示す流れ図である。Fig. 4 is a flow diagram schematically illustrating functional scheduling by a target scheduler executed on a data engine.

図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 integrated circuit 2 including a host processor 4 and a data engine 6 connected via a system bus 8. The host processor 4 includes a processor core 10, a host memory 12 and a system interface 14. The data engine 6 includes a processing core 16 that includes an instruction decoder 18 and a processing circuit 20. The instruction tightly coupled memory 22 stores a program instruction sequence to be decoded by the instruction decoder 18 to generate a control signal 24 for controlling the processing circuit 20. Data tightly coupled memory 26 stores input and output data values that are handled by processing circuit 20 under the control of program instructions from instruction tightly coupled memory 22 when decoded by instruction decoder 18. A system interface 28 couples the data engine 6 to the system bus 8. Direct memory access unit 30 allows host processor 4 to read and write data values from instruction tightly coupled memory 22 and data tightly coupled memory 26 via arbiters 32 and 34. To.

動作中に、ホスト・プロセッサ4は、典型的に、ホスト・メモリ12内に格納されたプログラム命令によって指示されるように、制御及び他のハイレベルな処理機能を実行する。ホスト・メモリ12内に格納されたプログラム命令は、データ・エンジン6上の処理動作を呼び出すように働くホスト・スケジューリング・プログラムを含むことができる。データ・エンジン6は、典型的に、メディア処理、圧縮、暗号解読等のような、より低いレベルの計算集約型の処理動作を行う。   During operation, the host processor 4 typically performs control and other high level processing functions as directed by program instructions stored in the host memory 12. Program instructions stored in host memory 12 may include a host scheduling program that serves to invoke processing operations on data engine 6. The data engine 6 typically performs lower level computationally intensive processing operations such as media processing, compression, decryption, and the like.

データ・エンジン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 data engine 6 is idle until it waits for the next task to be called. The data engine 6 may also include its own scheduling mechanism in the form of a subject scheduling program stored in the instruction tightly coupled memory 22. This subject scheduling program calls functions to be executed on the data engine 6 to allow the data engine to be “self-scheduled”. At the end of execution of the function called on the data engine 6 by the target scheduling program executed by the data engine 6 itself, the program flow is the same as for the function called from the host processor 4. Instead of the data engine 6 going into an idle state, it is possible to return to the target scheduling program or at least another program (eg associated function).

呼び出された機能を実行する現在のプログラム命令列は、ホスト・プロセッサ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 host processor 4 and the function called from the data engine 6. There may be. This is to eliminate the need to provide a separate form of the current program instruction sequence (library function) to be used, depending on whether the host processor 4 or the data engine 6 is calling their execution. This saves coding effort and program storage resources. Nevertheless, different actions need to be triggered upon completion of the called function. This different behavior is controlled using a flow control register 36 in the data engine 6.

フロー制御レジスタ36は、実行されている現在のプログラム命令列内のプログラム終了命令(マーカ命令)に直面するときに、命令デコーダ18によって読み出されるプログラム可能なフロー制御値を格納する。プログラム可能なフロー制御値は、現在のプログラム命令列が実行を完了するときにどのタイプの挙動がトリガされるべきかを指定する。トリガされる1つのタイプの挙動は、実行が完了するときにデータ・エンジン6をアイドル状態(低電力状態)におくことである。プログラム可能なフロー制御値の異なる値は、現在のプログラム命令列の実行の完了時に、プログラム可能なフロー制御値内の対象アドレスによって指定される対象プログラム命令へのジャンプをトリガするように働く。この対象アドレス及び対象プログラム命令は、データ・エンジン6が「自己スケジューリング」するときに、データ・エンジン6の対象スケジューリング・プログラム内にあってもよい。したがって、現在のプログラム命令列の完了時に、制御は対象スケジューリング・プログラムに戻される。プログラム可能なプログラム制御値は、現在のプログラム命令列と結びつけられた別の機能へのジャンプに対応するアドレスを格納することも可能である。   The flow control register 36 stores a programmable flow control value that is read by the instruction decoder 18 when it encounters a program end instruction (marker instruction) in the current program instruction sequence being executed. Programmable flow control values specify what type of behavior should be triggered when the current program instruction sequence completes execution. One type of behavior that is triggered is to place the data engine 6 in an idle state (low power state) when execution is complete. Different values of the programmable flow control value serve to trigger a jump to the target program instruction specified by the target address in the programmable flow control value upon completion of execution of the current program instruction sequence. This target address and target program instruction may be in the target scheduling program of the data engine 6 when the data engine 6 “self-schedules”. Thus, upon completion of the current program instruction sequence, control is returned to the target scheduling program. The programmable program control value can also store an address corresponding to a jump to another function associated with the current program instruction sequence.

図2は、データ・エンジン6内のプログラム・フロー制御機構38を概略的に示す。プログラム・カウンタ・レジスタ40が、命令密結合メモリ22内にメモリ・アドレスを格納し、そこから、命令デコーダ18によってデコードされるべき次の命令がフェッチされる。命令デコーダ18は、デコードされたプログラム命令からのプログラム・フローを制御するための制御信号(1つ又は複数の制御信号)24を生成する。並列処理要素(例えば、ALU、AGU等)におけるデコーダによって生成された他の制御信号は、処理回路20を制御して、デコードされたプログラム命令に対応するデータ処理動作を実行させるように働く。処理動作は、データ・エンジン6に必須の処理の性質に応じて、ロード、格納、シフト等のような単純なもの、又は、乗算、積和演算、フィルタ演算等のようなより複雑な動作であってもよい。   FIG. 2 schematically illustrates a program flow control mechanism 38 within the data engine 6. Program counter register 40 stores the memory address in instruction tightly coupled memory 22 from which the next instruction to be decoded by instruction decoder 18 is fetched. The instruction decoder 18 generates control signals (one or more control signals) 24 for controlling the program flow from the decoded program instructions. Other control signals generated by the decoder in the parallel processing element (eg, ALU, AGU, etc.) serve to control the processing circuit 20 to perform data processing operations corresponding to the decoded program instructions. Processing operations can be simple, such as loading, storing, shifting, etc., or more complex operations such as multiplication, product-sum operations, filter operations, etc., depending on the nature of processing essential to the data engine 6. There may be.

制御フロー状態マシン42によって、プログラム・カウンタ・レジスタ40に、プログラム・カウンタ値がロードされる。制御フロー状態マシン42は、プログラム・カウンタ・レジスタ40に、様々な異なるソースからとられたプログラム・カウンタ値をロードすることができる。現在のプログラム命令列が順次に実行されているときに、フィードバック・パス44及び制御フロー状態マシン42内の増分回路が、プログラム・カウンタ値を着実に増分し、実行されている現在のプログラム命令列のステップを進めるように働く。現在のプログラム命令列内の制御フロー命令が命令デコーダ18によってデコードされるときに(例えば分岐命令)、これらの制御フロー命令の対象アドレスが、制御フロー命令パス46を介して制御フロー状態マシン42に供給され、プログラム・カウンタ・レジスタ40にロードされて、実行ポイントにおけるジャンプを実行するようにされる。   The control flow state machine 42 loads the program counter value into the program counter register 40. Control flow state machine 42 can load program counter register 40 with program counter values taken from a variety of different sources. As the current program instruction sequence is executed sequentially, the increment circuit in the feedback path 44 and control flow state machine 42 steadily increments the program counter value to execute the current program instruction sequence being executed. Work to advance the steps. When control flow instructions in the current program instruction sequence are decoded by instruction decoder 18 (eg, branch instructions), the target addresses of these control flow instructions are passed to control flow state machine 42 via control flow instruction path 46. Supplied and loaded into the program counter register 40 to perform a jump at the execution point.

フロー制御レジスタ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 flow state machine 42. The flow control register 36 stores a programmable flow control value formed from the jump enable flag 48 and the next task address 50. This may be sent to the control flow state machine 42 by a signal on the control flow instruction path 46 when it encounters an end of program (EOP) instruction in the current program instruction sequence. The program termination instruction controls the control flow state machine 42 to read a programmable flow control value from the flow control register 36. If the jump enable bit 48 is not set, the control flow state machine 42 indicates that the data engine 6 will be Trigger to enter idle state. This behavior corresponds to the requirement when the host processor 4 calls execution of the current program instruction sequence.

ジャンプ有効化フラグ48が設定される場合、プログラム終了命令に直面すると、制御フロー状態マシン42は、次のタスク・アドレス50(命令密結合メモリ22内の対象プログラム命令のメモリ・アドレス)を読み出し、(パイプラインの深さに匹敵する遅延を伴って)プログラム・カウンタ・レジスタ40にロードされるべき対象プログラム命令のメモリ・アドレスをトリガし、それにより、現在のプログラム命令列の完了時に、対象プログラム命令がフェッチされ実行される。   If the jump enable flag 48 is set, upon encountering a program end instruction, the control flow state machine 42 reads the next task address 50 (the memory address of the target program instruction in the instruction tightly coupled memory 22), Trigger the memory address of the target program instruction to be loaded into the program counter register 40 (with a delay comparable to the depth of the pipeline), so that upon completion of the current program instruction sequence, the target program Instructions are fetched and executed.

この例において、ジャンプ有効化フラグ48はシングル・ビットである。より一般的には、ジャンプ有効化フラグは、1又は複数のビットを含むことができるジャンプ有効化フィールドであると考えられてもよい。   In this example, the jump enable flag 48 is a single bit. More generally, a jump enable flag may be considered a jump enable field that may include one or more bits.

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 jump flag 48 is forcibly set to a set value (“1”), and the memory of the target program instruction is loaded into the task address 50 portion next to the programmable flow control value 36. The The load instruction incr_Id of the second form operates in a similar manner except that the jump enable flag is not forcibly set to a set value and may be specified as either a set value or a non-set value instead. To do. These programmable flow control values loaded into the flow control register 36 in response to the load instruction are flowed through the multiplexer 52 and the internal data path 54 from within the data engine 6 executing the load instruction. It is supplied to the control register 36. When processing is invoked by the host processor 4, the programmable flow control value in the flow control register 36 is the programmable flow control value set by the multiplexer 52 and the host processor 44 of the data engine 6. It may be loaded via an external task address path 56 that is loaded into the flow control mechanism 38.

図3は、フロー制御レジスタ36を概略的に示す。フロー制御レジスタ36は、次のタスク・アドレス50とジャンプ有効化フラグ48を格納する。第1の形態のロード命令incr_Idsetは、次のタスク・アドレス・フィールド50に対象アドレスをロードし、ジャンプ有効化フラグ48を強制的に値「1」にして、現在のプログラム命令列の完了時にデータ・エンジン6内のプログラム・フローを強制的にジャンプさせる。第2形態のロード命令incr_Idはまた、対象アドレスを次のタスク・アドレス・フィールド50にロードするが、この場合、設定値又は非設定値のいずれか一方がジャンプ有効化フラグ48にロードされることを可能にする。   FIG. 3 schematically shows the flow control register 36. The flow control register 36 stores a next task address 50 and a jump enable flag 48. The load instruction incr_Idset of the first form loads the target address into the next task address field 50, forcibly sets the jump enable flag 48 to the value “1”, and sets the data when the current program instruction sequence is completed. -The program flow in the engine 6 is forcibly jumped. The load instruction incr_Id of the second form also loads the target address into the next task address field 50. In this case, either the set value or the non-set value is loaded into the jump enable flag 48. Enable.

図4は、ホスト・メモリ12内に格納されたプログラムと、命令密結合メモリ22を概略的に示す。ホスト・メモリ12は、データ・エンジン6上での呼び出し機能のアクションとは関係のないデータ処理動作を実行するためのホスト汎用プログラム58を格納することができる。ホスト・メモリ12はまた、データ・エンジン6による実行のための機能をスケジュールするように働くホスト・スケジューリング・プログラム60を格納する。   FIG. 4 schematically shows a program stored in the host memory 12 and an instruction tightly coupled memory 22. The host memory 12 can store a host generic program 58 for performing data processing operations that are unrelated to the call function actions on the data engine 6. The host memory 12 also stores a host scheduling program 60 that serves to schedule functions for execution by the data engine 6.

データ・エンジン6による実行のためにスケジュール化される機能は、命令密結合メモリ22内に格納されるプログラム命令列62、64に対応する。これらのプログラム命令列62、64の各々は、それらが実行されているときに及びそれらの完了の前に、上記に述べたように現在のプログラム命令列に対応する。命令密結合メモリ22は、典型的に、機能ライブラリの形態の多くのこれらの機能を格納することになり、その各々は、データ・エンジン6が所望の機能に対応する処理動作を実行するのを制御するためのプログラム命令列に対応する。同じく命令密結合メモリ22内に格納されるのは、データ・エンジン6によって実行されるプログラム命令列がデータ・エンジン6自身によって呼び出されるときに、「自己スケジューリング」のためにデータ・エンジン6によって用いられてもよい対象スケジューリング・プログラム66である。   The functions scheduled for execution by the data engine 6 correspond to program instruction sequences 62, 64 stored in the instruction tightly coupled memory 22. Each of these program instruction sequences 62, 64 corresponds to the current program instruction sequence as described above when they are being executed and prior to their completion. The instruction tightly coupled memory 22 will typically store many of these functions in the form of a function library, each of which allows the data engine 6 to perform processing operations corresponding to the desired function. Corresponds to a program instruction sequence for control. Also stored in the instruction tightly coupled memory 22 is used by the data engine 6 for "self-scheduling" when a program instruction sequence executed by the data engine 6 is called by the data engine 6 itself. A target scheduling program 66 that may be provided.

図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 program instruction sequences 62 and 64 when the host scheduling program 60 is executed by the host processor 4 that is calling execution. When the sequence of program instructions called in this way is complete, the data instructions are placed in an idle state, as illustrated by the line linking to the point “DE idle”. The subject scheduling program 66 executed by the data engine 6 is also called from the host scheduling program 60 when it is started. Thereafter, the subject scheduling program 66 serves to schedule program instruction sequences 62, 64 for execution by the data engine 6 on a "self-scheduling" basis until the subject scheduling program 66 itself completes.

呼び出されたプログラム命令列62、64は、組み込み関数(intrinsic)のライブラリ内に提供された組み込み関数の形態であってもよい。こうした組み込み関数は、典型的に、所望の組み込み関数へのポインタ、例えばcall[intrinsic0_pointer]、であるオペランドを有するコール命令を用いて呼び出される。   The called program instruction sequence 62, 64 may be in the form of a built-in function provided in a library of built-in functions. Such built-in functions are typically called using a call instruction with an operand that is a pointer to the desired built-in function, eg, call [intrinsic0_pointer].

図示された、命令密結合メモリ22の右側には、データ・エンジン6上で実行される対象スケジューリング・プログラムによる異なるプログラム命令列62、64の呼び出しを示す線が示されている。各々のこれらのプログラム命令列62、64が完了するときに、対象スケジューリング・プログラム66にプログラム実行ポイントの復帰が行われて、そのスケジューリング動作を続けることができるようにされる。   On the right side of the illustrated instruction tightly coupled memory 22, there are shown lines indicating the calling of different program instruction sequences 62, 64 by the target scheduling program running on the data engine 6. When each of these program instruction sequences 62, 64 is complete, the target scheduling program 66 is returned to the program execution point so that its scheduling operation can continue.

図5は、実行される現在のプログラム命令列62を概略的に示す。この現在のプログラム命令列は、データ・エンジン6によって順に実行される命令I0、I1等を含む。より詳細には、命令デコーダ18が、これらの命令I0、I1等をデコードし、1つ又は複数の対応する制御信号24を生成し、制御信号24が、処理回路20を制御して指定された処理動作を実行する。現在のプログラム命令列62内の最後の命令からの所定の数の命令には、プログラム終了命令EOPの形態のマーカ命令が配置されている。このプログラム終了命令は、次の3つのプログラム命令I+2、I+3、及びI+4が実行された後で、データ・エンジン6が、例えば2つのタイプのさらなるアクションのうちの1つをトリガすることができることを示す。第1のタイプのアクションは、対象スケジューリング・プログラム66を実行するために、したがってデータ・エンジン6内で続いている実行により分岐することである。フロー制御レジスタ36から読み出されるプログラム可能なフロー制御値は、対象スケジューリング・プログラム66内にジャンプするべき対象プログラム命令のアドレスを指定する。トリガすることができる第2の一連のアクションは、データ・エンジンがアイドル状態に入ることである。このアイドル状態に入ることは、プログラム可能なフロー制御値内のジャンプ有効化ビット48が設定されないときに起こる。 FIG. 5 schematically shows the current program instruction sequence 62 to be executed. This current program instruction sequence includes instructions I 0, I 1, etc. executed in sequence by the data engine 6. More specifically, the instruction decoder 18 decodes these instructions I0, I1, etc. and generates one or more corresponding control signals 24, which are designated by controlling the processing circuit 20. Perform processing operations. A marker instruction in the form of a program end instruction EOP is arranged in a predetermined number of instructions from the last instruction in the current program instruction sequence 62. This program termination instruction causes the data engine 6 to perform one of two types of further actions, for example, after the next three program instructions I n +2, I n +3, and I n +4 are executed. Indicates that it can be triggered. The first type of action is to branch for execution of the subject scheduling program 66 and thus subsequent execution within the data engine 6. The programmable flow control value read from the flow control register 36 specifies the address of the target program instruction to jump into the target scheduling program 66. A second series of actions that can be triggered is for the data engine to enter an idle state. This idle state occurs when the jump enable bit 48 in the programmable flow control value is not set.

図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 data engine 6 by the host processor 4. The host processor 4 executes a host scheduling program 60. The host scheduling program 60 calls a data engine function and starts processing by the data engine 6. This invocation can be accomplished by loading the next task address value into the flow control register 36 via the multiplexer 52 and the external task address path shown in FIG. Therefore, the data engine 6 passes the start address of the current program instruction sequence to be called. Upon invoking the requested processing on the data engine 6, the host processor 4 continues to perform further host processing and controls to operate in a manner that responds to task completion by the invoked data engine 6. (Or programmed) or not.

図6のデータ・エンジン側では、データ・エンジン6は、ホスト・プロセッサ4によって呼び出された機能が開始されるまではアイドルである。データ・エンジン6は、次いで、呼び出された機能を実行する。呼び出された機能に対応する現在のプログラム命令列の終わりに向けて、プログラム終了命令に直面し、プログラム終了命令が実行される。プログラム終了命令の実行の結果として、フロー制御レジスタ36内に格納されたプログラム可能なフロー制御値内にジャンプ有効化ビット48が設定されるかどうかの検出がなされる。データ・エンジン6によって実行されている機能はホスト・プロセッサ4によって呼び出されたので、データ・エンジン6は機能の実行の完了後にそのアイドル状態に入り、ジャンプ有効化ビット48は設定されないと予想される。したがって、ジャンプ有効化ビットが試みられ検出された後で、これは設定されないと判定され、データ・エンジン6はアイドル状態に入る。   On the data engine side of FIG. 6, the data engine 6 is idle until the function called by the host processor 4 is started. The data engine 6 then executes the called function. Toward the end of the current program instruction sequence corresponding to the called function, the program end instruction is encountered and the program end instruction is executed. As a result of the execution of the program end instruction, it is detected whether the jump enable bit 48 is set in the programmable flow control value stored in the flow control register 36. Since the function being executed by the data engine 6 has been invoked by the host processor 4, the data engine 6 is expected to enter its idle state after the execution of the function is completed and the jump enable bit 48 is not set. . Thus, after the jump enable bit is attempted and detected, it is determined that it is not set and the data engine 6 enters an idle state.

図7は、データ・エンジン6自身によって実行される対象スケジューリング・プログラム66による、プログラム命令列62、64の実行のスケジューリングを概略的に示す流れ図である。ステップ68において、対象スケジューリング・プログラム66の実行が開始される。対象スケジューリング・プログラム66の実行は、それ自体が、図4に示されたようにホスト・スケジューリング・プログラム60によって呼び出されてもよい。   FIG. 7 is a flowchart schematically showing the scheduling of the execution of the program instruction sequences 62 and 64 by the target scheduling program 66 executed by the data engine 6 itself. In step 68, execution of the target scheduling program 66 is started. The execution of the subject scheduling program 66 may itself be invoked by the host scheduling program 60 as shown in FIG.

ステップ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 subject scheduling program 66 waits until there is a data engine function to be called. When the data engine function is ready to be called, step 72 begins execution of the appropriate data engine function (current program instruction sequence). To the end of this data engine function, a program termination instruction is executed at step 74. In step 76, execution of the program end instruction triggers the reading of the programmable flow control value from the flow control register 36. Step 78 determines whether the jump enable bit 48 is set. If the jump enable bit is not set, step 80 switches the data engine to an idle state. The target scheduler 68 performs a load into the flow control value 36 having the value of the jump enable bit 48 set to “0”, and the data engine 6 is idle upon completion of the next program instruction sequence 62, 64. You can enter the state. However, if the target scheduling program 66 remains active after completion of the current program instruction sequence 66, 64 and returns control, the jump enable bit is set and processing after the determination in step 78 is step 82. , Where a jump to the specified target address in the next task address field 58 is performed. In the illustrated example, this jump returns to the subject scheduling program 66 and step 70 where the subject scheduling program 66 waits for the next data engine function to be invoked. It is also possible to link the functions together so that the jump performed in step 82 jumps to the start of another function.

本発明の例示的な実施形態が、添付の図面を参照しながら本明細書において詳細に説明されたが、本発明はこれらの厳密な実施形態に限定されず、当業者であれば、付属の請求項によって定められる本発明の範囲及び思想から逸脱することなく、そこに種々の変更及び修正を加えることができることを理解されたい。   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 integrated circuit 4 Host processor 6 Data engine 8 System bus 10 Processor core 12 Host memory 14 System interface 16 Processing core 18 Instruction decoder 20 Processing circuit 22 Instruction tightly coupled memory 24 Control signal 26 Data tightly coupled memory 28 System interface 30 Direct memory access unit 32, 34 Arbiter 36 Flow control register 38 Program flow control mechanism 40 Program counter register 42 Control flow state machine 44 Feedback path 46 Control flow instruction path 48 Jump enable flag 50 Next task address 52 Multiplexer 54 Internal data path 56 External task address path 58 Host general-purpose program 6 Host-scheduling program 62, 64 program instruction sequence 66 target scheduling program

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
前記プログラム可能なフロー制御値が、前記ターゲットプログラム命令のメモリ・アドレスを指定する、請求項1に記載の装置。 The apparatus of claim 1, wherein the programmable flow control value specifies a memory address of the target program instruction. 記プログラム可能なフロー制御値が、前記ターゲットプログラム命令のメモリ・アドレスを指定するターゲットアドレス・フィールドを含む、請求項1に記載の装置。 Before SL programmable flow control value, the target program instruction target address field including specifying the memory address of the apparatus of claim 1. 前記ジャンプ有効化フィールドがジャンプ有効化ビットである、請求項に記載の装置。 The apparatus of claim 1 , wherein the jump enable field is a jump enable bit. 前記マーカ命令が、前記現在のプログラム命令列の最後のプログラム命令を識別するプログラム終了命令である、請求項1に記載の装置。   The apparatus of claim 1, wherein the marker instruction is a program end instruction that identifies the last program instruction of the current program instruction sequence. 前記ターゲットプログラム命令列が、タスク・スケジューリングを制御するためのターゲットスケジューリング・プログラムである、請求項1に記載の装置。 The apparatus of claim 1, wherein the target program instruction sequence is a target scheduling program for controlling task scheduling. 前記装置が、データ・エンジン及び前記命令デコーダ回路に結合されたホスト・プロセッサを備え、前記処理回路及び前記フロー制御レジスタが前記データ・エンジンの一部である、請求項1に記載の装置。   The apparatus of claim 1, wherein the apparatus comprises a host processor coupled to a data engine and the instruction decoder circuit, wherein the processing circuit and the flow control register are part of the data engine. 前記ターゲットプログラム命令列が、タスク・スケジューリングを制御するためのターゲットスケジューリング・プログラムであり、前記ターゲットスケジューリング・プログラムが前記データ・エンジンによって実行され、前記現在のプログラム命令列が前記ホスト・プロセッサ及び前記ターゲットスケジューリング・プログラムのうちの1つによって実行のために呼び出される、請求項に記載の装置。 The target program instruction sequence is a target scheduling program for controlling task scheduling, the target scheduling program is executed by the data engine, and the current program instruction sequence is the host processor and the target. The apparatus of claim 7 , wherein the apparatus is invoked for execution by one of the scheduling programs. 前記ホスト・プロセッサが、前記ホスト・プロセッサによって実行されるホスト・スケジューリング・プログラムを用いて前記現在のプログラム命令列を呼び出す、請求項8に記載の装置。   9. The apparatus of claim 8, wherein the host processor invokes the current program instruction sequence using a host scheduling program executed by the host processor. (i)前記ターゲットスケジューリング・プログラムを実行する前記データ・エンジンが前記現在のプログラム命令列を呼び出すときに、前記プログラム可能なフロー制御値が、前記現在のプログラム命令列の完了後に前記ターゲットスケジューリング・プログラムの実行に戻ることをトリガする値にプログラムされ、
(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.
前記プログラム可能なフロー制御値が、前記命令デコーダ回路によって前記データ・エンジンでデコードされたロード・プログラム命令に応答して、前記フロー制御レジスタに格納される、請求項7に記載の装置。   8. The apparatus of claim 7, wherein the programmable flow control value is stored in the flow control register in response to a load program instruction decoded by the data engine by the instruction decoder circuit. 前記命令デコーダ回路が、
(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つ又は複数の制御信号に応答して、前記プログラム命令によって指定されるデータ処理動作を実行するステップと、
プログラム可能なフロー制御値を格納するステップと、
を含むデータを処理する方法であって、
前記プログラム可能なフロー制御値がジャンプ有効化フィールドを含み、
実行されている現在のプログラム命令列の終わりを表すマーカ命令に応答して、前記プログラム可能なフロー制御値を読み出し、前記ジャンプ有効化フィールドに格納された値に従って前記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.
JP2010233680A 2009-10-19 2010-10-18 Program flow control Active JP5611756B2 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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