JP2021005355A - Methods, devices, apparatus and storage media for processing loop instruction set - Google Patents

Methods, devices, apparatus and storage media for processing loop instruction set Download PDF

Info

Publication number
JP2021005355A
JP2021005355A JP2019235473A JP2019235473A JP2021005355A JP 2021005355 A JP2021005355 A JP 2021005355A JP 2019235473 A JP2019235473 A JP 2019235473A JP 2019235473 A JP2019235473 A JP 2019235473A JP 2021005355 A JP2021005355 A JP 2021005355A
Authority
JP
Japan
Prior art keywords
loop
instruction
instruction set
register
subloop
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.)
Pending
Application number
JP2019235473A
Other languages
Japanese (ja)
Inventor
カン アン,
Kang An
カン アン,
シューリャン デュ,
Xueliang Du
シューリャン デュ,
ジャン オウヤン,
Jian Ouyang
ジャン オウヤン,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
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 Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Publication of JP2021005355A publication Critical patent/JP2021005355A/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution

Landscapes

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

Abstract

To provide a method of eliminating the pipeline waiting caused by conditional judgment in a first entry into and a last exit from a loop, or the pipeline flushing caused by a failure of branch prediction.SOLUTION: A method includes: in response to obtaining a first start instruction of a loop instruction set, storing a first loop number, related to the loop instruction set, in a first register; storing a value of a first program counter, corresponding to a loop instruction following the first start instruction in the loop instruction set, in a second register; obtaining the loop instruction following the first start instruction in the loop instruction set for executing the loop instruction; in response to obtaining a first end instruction for indicating an end of the loop instruction set, determining loop execution of the loop instruction set based on the first loop number in the first register and the value of the program counter in the second register.SELECTED DRAWING: Figure 2

Description

本発明の実施例は、コンピュータ分野に関し、特に、ループ命令集合を処理するための方法、装置、機器及び記憶媒体に関する。 The embodiments of the present invention relate to the computer field, and particularly to methods, devices, devices and storage media for processing loop instruction sets.

コンピュータ技術の発展に伴い、ソフトウェアプログラム内のコードの数が急速に増加している。現在アプリケーション内の命令の数はすでに大量となっている。また、様々なアプリケーションの増加に伴い、様々な命令で形成されたアプリケーションは、サーバだけでなく、様々な携帯電子機器においても広く利用されている。 With the development of computer technology, the number of codes in software programs is increasing rapidly. Currently, the number of instructions in the application is already large. Further, with the increase of various applications, applications formed by various instructions are widely used not only in servers but also in various portable electronic devices.

各アプリケーションまたはサーバのプログラムコードを実行する時、一般的には命令の取得、デコード、実行、メモリのアクセス及びライトバック(write back)などの5段階のパイプライン処理を実行する。一般的には、上記の5段階のパイプライン処理を行うことで正確に命令を実行することができる。また、コマンドを実行する過程には、解決すべき問題がまだ多く存在している。 When executing the program code of each application or server, generally, a five-step pipeline process such as instruction acquisition, decoding, execution, memory access, and write back is executed. In general, the instruction can be executed accurately by performing the above-mentioned five-step pipeline processing. Also, there are still many problems to be solved in the process of executing commands.

本発明の実施例はループ命令集合を処理するための方案を提供している。 The embodiments of the present invention provide a plan for processing a loop instruction set.

本発明の第1態様において、ループ命令集合を処理するための方法を提供している。当該方法は、ループ命令集合の第1開始命令が取得されたことに応答して、ループ命令集合に関連する第1ループ回数を第1レジスタに記憶し、ループ命令集合内の第1開始命令の後の次のループ命令に対応する第1プログラムカウンター値を第2レジスタに記憶するステップと、ループ命令集合内の第1開始命令の後のループ命令を取得してループ命令を実行するステップと、ループ命令集合の終了を示す第1終了命令が取得されたことに応答して、第1レジスタ内の第1ループ回数と第2レジスタ内のプログラムカウンター値とに基づいてループ命令集合を循環的に実行することを決定するステップと、を備える。 In the first aspect of the present invention, a method for processing a loop instruction set is provided. In this method, in response to the acquisition of the first start instruction of the loop instruction set, the number of first loops related to the loop instruction set is stored in the first register, and the first start instruction in the loop instruction set is stored. A step of storing the first program counter value corresponding to the next next loop instruction in the second register, a step of acquiring the loop instruction after the first start instruction in the loop instruction set, and a step of executing the loop instruction. In response to the acquisition of the first end instruction indicating the end of the loop instruction set, the loop instruction set is cyclically cycled based on the number of first loops in the first register and the program counter value in the second register. It comprises a step to decide to perform.

本発明の第2態様において、ループ命令集合を処理するための装置を提供している。当該装置は、ループ命令集合の第1開始命令が取得されたことに応答して、ループ命令集合に関連する第1ループ回数を第1レジスタに記憶し、ループ命令集合内の第1開始命令の後の次のループ命令に対応する第1プログラムカウンター値を第2レジスタに記憶するように構成される第1記憶モジュールと、ループ命令集合内の第1開始命令の後のループ命令を取得してループ命令を実行するように構成されるループ命令取得モジュールと、ループ命令集合の終了を示す第1終了命令が取得されたことに応答して、第1レジスタ内の第1ループ回数と第2レジスタ内のプログラムカウンター値とに基づいてループ命令集合を循環的に実行することを決定するように構成される第1ループ決定モジュールと、を備える。 In the second aspect of the present invention, an apparatus for processing a loop instruction set is provided. In response to the acquisition of the first start instruction of the loop instruction set, the device stores the number of first loops related to the loop instruction set in the first register, and receives the first start instruction in the loop instruction set. Acquires the first storage module configured to store the first program counter value corresponding to the next next loop instruction in the second register and the loop instruction after the first start instruction in the loop instruction set. The number of first loops in the first register and the second register in response to the acquisition of the loop instruction acquisition module configured to execute the loop instruction and the first end instruction indicating the end of the loop instruction set. It comprises a first loop decision module configured to determine to execute the loop instruction set cyclically based on the program counter value in.

本発明の第3態様において、電子機器を提供し、当該電子機器は、少なくとも2つのレジスタを含む一つまたは複数のプロセッサと、一つまたは複数のプログラムを記憶する記憶装置と、を備える。一つまたは複数のプロセッサが一つまたは複数のプロセッサによって実行される場合に、一つまたは複数のプロセッサが本発明の第1態様の方法を実現する。 In a third aspect of the invention, the electronic device provides an electronic device comprising one or more processors including at least two registers and a storage device for storing one or more programs. When one or more processors are executed by one or more processors, one or more processors realize the method of the first aspect of the present invention.

本発明の第4態様において、コンピュータプログラムが記憶されているコンピュータ読み取り可能な記憶媒体を提供しており、当該プログラムがプロセッサによって実行される時に、本発明の第1態様の方法が実現される。 A fourth aspect of the present invention provides a computer-readable storage medium in which a computer program is stored, and the method of the first aspect of the present invention is realized when the program is executed by a processor.

なお、発明の概要に記載された内容は、本開示の実施例の肝心または重要な特徴を限定することを意図するものではなく、本開示の範囲を限定することを意図するものでもない。本開示の他の特徴は、以下の説明によって容易に理解されやすくなる。 It should be noted that the content described in the outline of the invention is not intended to limit the essential or important features of the examples of the present disclosure, nor is it intended to limit the scope of the present disclosure. Other features of the disclosure are facilitated by the following description.

図面を合わせながら以下の詳細な説明を参照することにより、本開示の各実施例の上記および他の特徴、利点および態様がより明らかになる。図面において同一または類似する符号は、常に同一または類似する構成要素を表す。ここで、
本発明の実施例によるループ命令集合を処理するための例示的環境100を示す概略図である。 本発明の実施例によるループ命令集合を処理するための方法200を示すフロチャートである。 本発明の実施例によるループ命令集合を処理するための方法300を示すフロチャートである。 本発明の実施例ループ命令集合を処理するための装置400を示す概略ブロック図である。 本発明の複数の実施例が実施可能なコンピュータ機器500を示すブロック図である。
By referring to the following detailed description with reference to the drawings, the above and other features, advantages and aspects of each embodiment of the present disclosure will become clearer. The same or similar reference numerals in the drawings always represent the same or similar components. here,
FIG. 5 is a schematic diagram showing an exemplary environment 100 for processing a loop instruction set according to an embodiment of the present invention. 6 is a flowchart showing a method 200 for processing a loop instruction set according to an embodiment of the present invention. 6 is a flowchart showing a method 300 for processing a loop instruction set according to an embodiment of the present invention. It is a schematic block diagram which shows the apparatus 400 for processing the Example loop instruction set of this invention. It is a block diagram which shows the computer equipment 500 which can carry out a plurality of examples of this invention.

本開示の実施例について、図面を参照して以下により詳細に説明する。本開示のいくつかの実施例が図面に示されているが、本開示が様々な形態で実現することができ、本明細書に記載の実施例に限定されると解釈されるべきではなく、逆に、これらの実施例を提供することで本開示がより明白且つ完全に理解されるためのものであると理解されるべきである。本開示の図面および実施例は、例示的なものにすぎず、本開示の保護範囲を限定するものではないと理解されるべきである。 Examples of the present disclosure will be described in more detail below with reference to the drawings. Although some embodiments of the present disclosure are shown in the drawings, the present disclosure can be realized in various forms and should not be construed as being limited to the embodiments described herein. Conversely, it should be understood that by providing these examples, the present disclosure is intended to be more obvious and fully understood. It should be understood that the drawings and examples of the present disclosure are exemplary only and do not limit the scope of protection of the present disclosure.

本開示の実施例の説明において、「含む」という用語および類似の用語は、開放的に含む、すなわち、「含むがこれに限定されない」と理解されるべきである。「に基づく」という用語は、「少なくとも部分的に基づく」ことを意味すると理解されるべきである。「一実施例」または「当該実施例」という用語は、「少なくとも一実施例」を意味すると理解されるべきである。「第1」、「第2」などの用語は、異なる対象または同一の対象を指すことができる。以下の説明は、他の明示的および暗示的な定義も含むことができる。 In the description of the embodiments of the present disclosure, the term "including" and similar terms should be understood to include openly, i.e., "include, but not limited to". The term "based on" should be understood to mean "at least partially based." The term "one embodiment" or "the embodiment" should be understood to mean "at least one embodiment". Terms such as "first" and "second" can refer to different or identical objects. The following description may also include other explicit and implied definitions.

ループプログラムはプログラムで比較的によく見られるものであって、ループプログラムの最後にループプログラムから脱退してもよいかどうかを判断するために、データ冒険(RAW)と制御冒険の問題に遭遇することがあり、プロセッサのパイプラインは中断され、条件判断が完了するまで待機しなければならず、大きな性能的な損失がもたらされる。人工知能(AI)プロセッサには大量の行列演算が存在するため、大量のループプログラムとマルチレベルのネスティングループプログラムが存在し、こういう状況でプロセッサがループプログラム及びネスディングループプログラムに対する処理効率を高めれば、プロセッサ全体の命令実行効率を向上させることができる。 Loop programs are relatively common in programs and encounter data adventure (RAW) and control adventure issues at the end of the loop program to determine if it is okay to leave the loop program. In some cases, the processor pipeline is interrupted and you have to wait for the condition to complete, resulting in significant performance loss. Since there are a large number of matrix operations in an artificial intelligence (AI) processor, there are a large number of loop programs and multi-level Nestin group programs, and in such a situation, if the processor improves the processing efficiency for the loop programs and Nesdin group programs. , The instruction execution efficiency of the entire processor can be improved.

ループプログラムの判断におけるデータ冒険と制御冒険によるパイプラインの待機問題を解決するため、従来の方案は普通以下のような方案である。方案1は、コンパイラによってジャンプ遅延スロット(Jump delay slot)にループボディの前または後の2つの命令(遅延スロットは2である)を挿入することである。方案2は、分岐予測によって、判定条件計算の完了を待つことなく、後続命令を事前に実行することができる。方案3は、ループ緩衝区によって、ハードウェアの自動学習によりジャンプし、後続命令(例えば、ARMx86)を自動的に記憶することであり、ジャンプが再度発生した時には、初期位置を再計算することなく、予め記憶された命令段に直接にジャンプすることができる。方案4は、複数のディジタル信号処理(DSP)プロセッサにループ緩衝区を合わせて、コンパイラを用いてループ回数とループの初期位置を予め記憶しておく方式である。この方法は、ループ回数およびループボディをコンパイラでループ緩衝区に予め書き込む方法である。方案5では、いくつかの設計では、コンパイラを用いてループ回数を予め記憶し、特殊命令を用いてループの開始と終了をマークしておくことであり、こうすると、再計算することなく、ループの終了時にループの開始に直接ジャンプすることができる。 In order to solve the problem of waiting for the pipeline due to data adventure and control adventure in the judgment of the loop program, the conventional measures are usually as follows. Plan 1 is to insert two instructions (delay slot is 2) before or after the loop body into the jump delay slot by the compiler. In plan 2, the branch prediction allows the subsequent instruction to be executed in advance without waiting for the completion of the determination condition calculation. Plan 3 is to jump by the automatic learning of the hardware by the loop buffer zone and automatically store the subsequent instruction (for example, ARMx86), and when the jump occurs again, the initial position is not recalculated. , It is possible to jump directly to the command stage stored in advance. Plan 4 is a method in which a loop buffer zone is matched with a plurality of digital signal processing (DSP) processors, and the number of loops and the initial position of the loop are stored in advance using a compiler. This method is a method in which the loop count and the loop body are pre-written in the loop buffer zone by the compiler. In Plan 5, some designs use a compiler to store the number of loops in advance and use special instructions to mark the start and end of the loop so that the loop does not need to be recalculated. You can jump directly to the beginning of the loop at the end of.

しかしながら、上述従来の方案には以下のような問題または欠点が存在する。方案1は、制限が大きく、コンパイラが適当な命令を見つけて填充することができるかどうかにに応じて決定されるもので、ループの境界でも特殊な処理を行うとともに、パイプラインの深さが深い場合には実現が困難となる。方案2の問題は、分岐予測が失敗した場合、全体のパイプラインをフラッシュ(flush)する必要があり、この代償は非常に高く、特にループの初期進入と最終脱退した時の予測失敗問題はさらに避けられないものである。方案3の設計は主に命令取得モジュールの圧力とエネルギー消費を下げるためであって、ジャンプにおける遅延スロットの待機問題を解決してはいなく、同時に、ループネスディングをサポートしないこと、ループ緩衝区の深度を超えたループをサポートしないこと、ループ内にさらにジャンプコマンド有することを支持サポートしないのような多くの制限がある。方案4の問題は、こういう実現にはまだたくさんの制限があり、例えば、(1)ループボディー中にジャンプまたはループが存在してはならないこと、(2)ループプログラムはループ緩衝区より大きくなってはならないこと、(3)ループの回数が定数であることである。方案5は方案4に基づいて最適化を行っているが、こういう方式はやはり通用レジスタに記憶されたループ回数と特殊な状態ビットに依存し、ジャンプ状態を満たすかどうかを判断するため、まだデータ冒険の問題が存在する。実行段階に達して状態ビットの更新が可能ないくつかのプロセッサにおいて、これらの案は、実装が可能かどうかに問題がある。 However, the above-mentioned conventional measures have the following problems or drawbacks. Plan 1 is highly restrictive and is determined according to whether the compiler can find and fill the appropriate instructions, performing special processing even at the boundaries of the loop and increasing the depth of the pipeline. If it is deep, it will be difficult to realize. The problem with Plan 2 is that if the branch prediction fails, the entire pipeline needs to be flushed, and the cost is very high, especially the prediction failure problem at the initial entry and final exit of the loop. It is inevitable. The design of Plan 3 is mainly to reduce the pressure and energy consumption of the instruction acquisition module, it does not solve the delay slot wait problem in the jump, and at the same time, it does not support loop nesting, the loop buffer zone. There are many restrictions, such as not supporting loops beyond depth and not supporting having more jump commands within the loop. The problem with Plan 4 is that there are still many limitations to this realization, for example: (1) there should be no jumps or loops in the loop body, (2) the loop program will be larger than the loop buffer zone. Must not be, (3) the number of loops is constant. Plan 5 is optimized based on Plan 4, but such a method still depends on the number of loops stored in the general register and the special state bit, and it is still data to judge whether to satisfy the jump state. There is an adventure problem. In some processors that can reach the execution stage and update the state bits, these proposals are questionable if they can be implemented.

本発明の実施例によると、ループ命令集合を処理するための改新された方案が提出された。当該方案では、取得モジュールに2つのレジスタを設けることによって、ループ命令集合の開始命令を取得した場合に、ループ命令集合に関連するループ回数を第1レジスタに記憶し、ループ命令集合内の開始命令の後の次のループ命令に対応するプログラムカウンター値を第2レジスタに記憶してから、ループ命令を実行する。ループ命令集合の終了を示す第1終了命令を取得した場合に、第1レジスタ内の第1ループ回数と第2レジスタ内のプログラムカウンター値とに基づいてループ命令集合を循環的に実行することを決定する。こういう方法で、ループに初めて進入したときと最後に脱退するときの条件判定によるパイプラインの待機、または分岐予測の失敗によるパイプラインフラッシュを除去し、命令実行の効率を向上させ、かつ任意の長さのループをサポートし、マルチレベルのループネスディングをサポートし、ループ命令処理の安全を確保する。 According to an embodiment of the present invention, a revised plan for processing a loop instruction set has been submitted. In this plan, by providing two registers in the acquisition module, when the start instruction of the loop instruction set is acquired, the number of loops related to the loop instruction set is stored in the first register, and the start instruction in the loop instruction set is stored. The program counter value corresponding to the next loop instruction after that is stored in the second register, and then the loop instruction is executed. When the first end instruction indicating the end of the loop instruction set is acquired, the loop instruction set is cyclically executed based on the number of first loops in the first register and the program counter value in the second register. decide. In this way, the pipeline wait due to the condition judgment when entering the loop for the first time and the last exit from the loop, or the pipeline flush due to the failure of branch prediction is eliminated, the efficiency of instruction execution is improved, and the length is arbitrary. Supports loops, supports multi-level loop nesting, and secures loop instruction processing.

図1は本発明の実施例によるループ命令集合を処理するための例示的環境100を示す概略図である。図1に示すように、例示的環境100は命令メモリ102と、取得モジュール104と、デコードモジュール106とを含む。 FIG. 1 is a schematic diagram showing an exemplary environment 100 for processing a loop instruction set according to an embodiment of the present invention. As shown in FIG. 1, the exemplary environment 100 includes an instruction memory 102, an acquisition module 104, and a decoding module 106.

命令メモリ102は実行される命令を記憶するために用いられる。命令メモリ102は2倍速の同期ダイナミックランダムアクセスメモリDDRと、ランダムアクセスメモリ(RAM)と、読み出し専用メモリ(ROM)と、消去可能なプログラム可能な読み取り専用メモリ(EEPROM)と、フラッシュメモリまたは他のメモリ技術、または必要な情報を記憶し、かつ取得モジュール104によってアクセス可能なあらゆる他の非伝送媒体とを含むがこれらに限定されない。 The instruction memory 102 is used to store an instruction to be executed. The instruction memory 102 is a double speed synchronous dynamic random access memory DDR, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EEPROM), and a flash memory or other. It includes, but is not limited to, memory technology, or any other non-transmission medium that stores the required information and is accessible by the acquisition module 104.

取得モジュール104は命令メモリ102内の命令の取得するために用いられ、例えば、取得モジュール104は命令を取得する命令取得モジュールである。取得モジュール104は取得の過程も制御し、かつ取得した命令をデコードモジュール106に送信してデコードを行う。取得モジュール104は1対のレジスタ対であるレジスタ108とレジスタ110とを含む。図1において、取得モジュール104がレジスタ108とレジスタ110を含むことは単に例であるだけで、本発明の具体的な限定ではなく、取得モジュール104は任意の数のレジスタを含んでもよい。 The acquisition module 104 is used to acquire an instruction in the instruction memory 102. For example, the acquisition module 104 is an instruction acquisition module for acquiring an instruction. The acquisition module 104 also controls the acquisition process, and transmits the acquired instruction to the decoding module 106 to perform decoding. The acquisition module 104 includes a pair of register pairs, register 108 and register 110. In FIG. 1, the acquisition module 104 includes the register 108 and the register 110, which is merely an example, and is not a specific limitation of the present invention. The acquisition module 104 may include an arbitrary number of registers.

いくつかの実施例において、取得モジュール104はレジスタ108とレジスタ110とを利用して一つのループ命令集合を制御する。当該ループ命令集合中にサブループ命令集合がネスディングされている場合に、もう1対のレジスタを設けることで当該サブループ命令集合の実行を実現することができる。 In some embodiments, the acquisition module 104 utilizes registers 108 and 110 to control a loop instruction set. When the subloop instruction set is nested in the loop instruction set, the execution of the subloop instruction set can be realized by providing another pair of registers.

取得モジュール104がループ命令集合を取得した場合に、実行しようとするループ命令集合のループ回数をレジスタ108に記憶し、ループ命令集合内の開始命令の後の実際にループする最初の命令のプログラムカウンター値をレジスタ110に記憶することができる。次に、ループ命令集合内のループ命令の実行を始める。ループ命令が終了するまで実行した場合に、例えば、ループ命令集合の終了を示す終了命令が取得された場合に、取得モジュールはレジスタ108内に記憶にされたループ回数が所定値であるか否かを決定する。一つの例において、当該所定値は0である。上述した例は、単に本開示を説明するためのもので、本開示の具体的な限定はなく、当業者であれば、必要に応じて、当該所定の値の大きさを設定することができる。 When the acquisition module 104 acquires a loop instruction set, the number of loops of the loop instruction set to be executed is stored in the register 108, and the program counter of the first instruction that actually loops after the start instruction in the loop instruction set. The value can be stored in the register 110. Next, the execution of the loop instruction in the loop instruction set is started. Whether or not the number of loops stored in the register 108 is a predetermined value when the loop instruction is executed until the end, for example, when the end instruction indicating the end of the loop instruction set is acquired. To determine. In one example, the predetermined value is 0. The above-mentioned example is merely for explaining the present disclosure, and there is no specific limitation on the present disclosure, and a person skilled in the art can set the magnitude of the predetermined value as necessary. ..

レジスタ108内の値が所定値であることを検測した場合に、ループ命令集合がループ完了したことを表示する。従って、当該ループ命令集合から脱退してから、取得モジュールはループ命令集合の次の命令を取得する。 When it is checked that the value in the register 108 is a predetermined value, it is displayed that the loop instruction set has completed the loop. Therefore, after leaving the loop instruction set, the acquisition module acquires the next instruction of the loop instruction set.

いくつかの実施例において、レジスタ108、レジスタ110、及び取得モジュール104内の部分的な機能は、ループ状態機を構成することができ、当該ループ状態機はループ命令集合の実行に用いられる。ループ命令集合の開始命令を取得した場合に、ループ回数をレジスタ108に記憶し、開始命令の後の命令のプログラムカウンター値をレジスタ110に記憶してから、取得モジュール104がループ状態機の中に入る。ループ命令集合の終了命令が検出され、レジスタ108内のループ回数が0となった場合のみ、ループ状態機から脱退し、そうでなければ、ループ状態機の中でループ命令を実行する。 In some embodiments, the partial functions within register 108, register 110, and acquisition module 104 can constitute a loop state machine, which is used to execute a loop instruction set. When the start instruction of the loop instruction set is acquired, the number of loops is stored in the register 108, the program counter value of the instruction after the start instruction is stored in the register 110, and then the acquisition module 104 is stored in the loop state machine. enter. Only when the end instruction of the loop instruction set is detected and the number of loops in the register 108 becomes 0, the loop instruction is withdrawn from the loop state machine, and if not, the loop instruction is executed in the loop state machine.

レジスタ108内の値が所定値ではないと検測された場合に、ループ命令集合がループ実行される必要があると表明する。従って、取得モジュール104は、レジスタ110内に記憶されたループ命令集合における実行しようとするループ命令の初期位置を読み出す。そして、ループ命令集合内のループ命令を再実行する。 Asserts that the loop instruction set needs to be looped if it is detected that the value in register 108 is not a predetermined value. Therefore, the acquisition module 104 reads out the initial position of the loop instruction to be executed in the loop instruction set stored in the register 110. Then, the loop instruction in the loop instruction set is re-executed.

デコードモジュール106は取得モジュール104から取得した命令(例えばループ命令)をデコードして実行する。 The decoding module 106 decodes and executes an instruction (for example, a loop instruction) acquired from the acquisition module 104.

図1は本発明の実施例によるループ命令集合を処理するための例示的環境100を示す概略図である。これから図2を組み合わせて本発明の実施例によるループ命令集合を処理するための方法200を示すフロチャートを説明する。 FIG. 1 is a schematic diagram showing an exemplary environment 100 for processing a loop instruction set according to an embodiment of the present invention. A flow chart showing a method 200 for processing a loop instruction set according to an embodiment of the present invention will be described below in combination with FIG.

図2に示すように、ステップ202で、取得モジュールはループ命令集合の開始命令を取得したか否かを決定する。説明の便宜のため、以下では当該開始命令を第1開始命令と呼ぶ。例えば、図1での取得モジュール104は命令メモリ102に記憶した命令を取得するために用いられる。取得モジュール104はループ命令集合内の第1開始命令が取得されたか否かを決定する。 As shown in FIG. 2, in step 202, the acquisition module determines whether or not the start instruction of the loop instruction set has been acquired. For convenience of explanation, the start command will be referred to as a first start command below. For example, the acquisition module 104 in FIG. 1 is used to acquire an instruction stored in the instruction memory 102. The acquisition module 104 determines whether or not the first start instruction in the loop instruction set has been acquired.

ループ命令集合の第1開始命令が取得された場合には、ステップ204で、取得モジュールはループ命令集合に関連するループ回数を第1レジスタに記憶する。説明の便宜のため、当該ループ回数は第1ループ回数とも呼ばれる。例えば、ループ命令集合内の第1開始命令が取得された場合に、取得モジュール104はループ命令集合内の第1ループ回数をレジスタ108に記憶する。レジスタ108内の第一ループ回数はループ命令集合がループ実行する回数を制御するために用いられ、かつ一回のループ命令集合が実行された後、その値は一つずつ減少される。 When the first start instruction of the loop instruction set is acquired, in step 204, the acquisition module stores the number of loops related to the loop instruction set in the first register. For convenience of explanation, the number of loops is also referred to as the number of first loops. For example, when the first start instruction in the loop instruction set is acquired, the acquisition module 104 stores the number of first loops in the loop instruction set in the register 108. The number of first loops in the register 108 is used to control the number of times the loop instruction set executes a loop, and the value is decremented one by one after one loop instruction set is executed.

ステップ206で、取得モジュールはループ命令集合内の第1開始命令の後の次のループ命令に対応する第1プログラムカウンター値を第2レジスタに記憶する。例えば、取得モジュール104がループ命令集合の開始命令を取得し、かつループ回数を記憶した場合に、ループ命令集合内の開始命令の後の次のループ命令に対応するプログラムカウンター値をレジスタ110に記憶する。レジスタ110に記憶されているプログラムカウンター値によって、ループ命令集合が実行するたびに、いずれもそのプログラムカウンター値に対応する位置からループ命令を実行するようになる。 At step 206, the acquisition module stores in the second register the first program counter value corresponding to the next loop instruction after the first start instruction in the loop instruction set. For example, when the acquisition module 104 acquires the start instruction of the loop instruction set and stores the number of loops, the program counter value corresponding to the next loop instruction after the start instruction in the loop instruction set is stored in the register 110. To do. According to the program counter value stored in the register 110, every time the loop instruction set is executed, the loop instruction is executed from the position corresponding to the program counter value.

ステップ208で、取得モジュールはループ命令集合内の第1開始命令の後のループ命令を取得してループ命令を実行する。例えば、図1の取得モジュール104はループ命令集合の開始命令の後のループ命令からループ命令の実行を開始する。 At step 208, the acquisition module acquires the loop instruction after the first start instruction in the loop instruction set and executes the loop instruction. For example, the acquisition module 104 in FIG. 1 starts executing the loop instruction from the loop instruction after the start instruction of the loop instruction set.

ステップ210で、取得モジュールはループ命令集合の終了を示す第1終了命令が取得されたか否かを決定する。例えば、図1で取得モジュール104は命令メモリ102から取得した命令がループ命令集合の終了を示すものか否かを決定する。 In step 210, the acquisition module determines whether or not the first end instruction indicating the end of the loop instruction set has been acquired. For example, in FIG. 1, the acquisition module 104 determines whether or not the instruction acquired from the instruction memory 102 indicates the end of the loop instruction set.

ループ命令集合の終了を示す第1終了命令が取得されなかった場合、ループ命令集合がまだ実行完了ではないことと表明し、ループ命令の実行を続ける。 If the first end instruction indicating the end of the loop instruction set is not acquired, it is declared that the execution of the loop instruction set has not been completed yet, and the execution of the loop instruction is continued.

ループ命令集合の終了を示す第1終了命令が取得された場合に、ステップ212で、取得モジュールは第1レジスタ内の第1ループ回数と第2レジスタ内のプログラムカウンター値とに基づいてループ命令集合を循環的に実行することを決定する。例えば、図1の取得モジュール104はループ命令集合の終了を示す終了命令が取得されたことを決定した場合に、レジスタ108とレジスタ110に記憶しておいたループ回数とプログラムカウンター値とに基づいてループ命令集合を循環的に実行するか否かを決定する。以下では図3に合わせてループ命令集合を循環的に実行する過程を決定することについて詳しい説明する。 When the first end instruction indicating the end of the loop instruction set is acquired, in step 212, the acquisition module sets the loop instruction set based on the number of first loops in the first register and the program counter value in the second register. Decide to run cyclically. For example, when the acquisition module 104 of FIG. 1 determines that an end instruction indicating the end of the loop instruction set has been acquired, it is based on the number of loops stored in the registers 108 and 110 and the program counter value. Determines whether to execute the loop instruction set cyclically. In the following, it will be described in detail to determine the process of executing the loop instruction set cyclically according to FIG.

取得モジュールに2つのレジスタを設けることによって、ループ命令集合の実行を制御し、ループ命令ボディーが初めて進入したときと最後に脱退するときの条件判定によるパイプラインの待機、または分岐予測の失敗によるパイプラインフラッシュを除去し、データ冒険の問題を制御し、かつ命令実行の効率を向上させる。 By providing two registers in the acquisition module, the execution of the loop instruction set is controlled, and the pipeline waits based on the condition judgment when the loop instruction body first enters and the last exits, or the pipe due to the failure of branch prediction. Eliminate line flashes, control data adventure issues, and improve instruction execution efficiency.

上述では図2に合わせ本発明の実施例によるループ命令集合を処理するための方法200を示すフロチャートを説明した。以下では図3に合わせて、図2の方法200のステップ212におけるループ命令集合を循環的に実行することを決定する過程を詳細に説明する。図3は本発明の実施例によるループ命令集合を処理するための方法300を示すフロチャートを説明した。 In the above description, a flowchart showing a method 200 for processing a loop instruction set according to an embodiment of the present invention has been described with reference to FIG. In the following, the process of determining to periodically execute the loop instruction set in step 212 of the method 200 of FIG. 2 will be described in detail with reference to FIG. FIG. 3 illustrates a flowchart showing method 300 for processing a loop instruction set according to an embodiment of the present invention.

図3に示すように、ステップ302で、取得モジュールはループ命令集合の終了を示す終了命令が取得されたか否かを決定し、説明の便利のため、当該終了命令は第1終了命令とも呼ばれる。例えば、図1において、取得モジュール104が命令メモリ102のループ命令を取得した場合に、ループ命令集合の終了命令が取得されたか否かを決定する。 As shown in FIG. 3, in step 302, the acquisition module determines whether or not an end instruction indicating the end of the loop instruction set has been acquired, and for convenience of explanation, the end instruction is also referred to as a first end instruction. For example, in FIG. 1, when the acquisition module 104 acquires the loop instruction of the instruction memory 102, it is determined whether or not the end instruction of the loop instruction set has been acquired.

ループ命令集合の終了命令が取得された場合に、ステップ304で、取得モジュールはループ回数が閾値より大きいか否かを決定する。例えば、図1において、取得モジュール104が命令メモリ102からループ命令集合の終了命令を取得した場合に、レジスタ108に記憶されたループ命令集合のループ回数が閾値より大きいか否かを決定し、例えば0である。上述した例は、単に本開示を説明するためのもので、本開示の具体的な限定ではない。 When the end instruction of the loop instruction set is acquired, in step 304, the acquisition module determines whether or not the number of loops is larger than the threshold value. For example, in FIG. 1, when the acquisition module 104 acquires the end instruction of the loop instruction set from the instruction memory 102, it is determined whether or not the number of loops of the loop instruction set stored in the register 108 is larger than the threshold value, for example. It is 0. The examples described above are merely for the purposes of explaining the present disclosure and are not specific limitations of the present disclosure.

ループ回数が閾値より大きい場合に、ステップ306を実行する。ステップ306で、取得モジュールは第1レジスタのループ回数を減少する。ループ回数が閾値より大きいと決定した場合に、ループ回数の値を調整する必要がある。例えば、ループ回数を一つずつ減少する。その後、減少されたループ回数で第1レジスタのループ回数を更新する。例えば、図1において、取得モジュール104はループ回数が閾値より大きいと決定した場合に、レジスタ108のループ回数を一つずつ減少する。 If the number of loops is greater than the threshold, step 306 is executed. At step 306, the acquisition module reduces the number of loops in the first register. If it is determined that the number of loops is greater than the threshold, the value of the number of loops needs to be adjusted. For example, reduce the number of loops by one. After that, the number of loops in the first register is updated with the reduced number of loops. For example, in FIG. 1, when the acquisition module 104 determines that the number of loops is larger than the threshold value, the acquisition module 104 reduces the number of loops of the register 108 by one.

ステップ308で、取得モジュールは第2レジスタのプログラムカウンター値に対応する次のループ命令を取得してループ命令集合を繰り返し実行する。ループ回数が閾値より大きいと決定した場合、ループ命令を繰り返し実行する必要があると表明する。この時、第2レジスタに記憶されたプログラムカウンター値によってループ処理の実行が必要なループ命令の初期位置を決定できる。例えば、図1において、取得モジュール104はループ命令集合内の開始命令の後の命令を取得するようにレジスタ110のプログラムカウンター値の読み取る。 In step 308, the acquisition module acquires the next loop instruction corresponding to the program counter value of the second register and repeatedly executes the loop instruction set. If it determines that the number of loops is greater than the threshold, it states that the loop instruction needs to be executed repeatedly. At this time, the initial position of the loop instruction in which the loop processing needs to be executed can be determined by the program counter value stored in the second register. For example, in FIG. 1, the acquisition module 104 reads the program counter value of register 110 so as to acquire the instruction after the start instruction in the loop instruction set.

ループ回数が閾値以下である場合、ステップ310が実行される。ステップ310で、取得モジュールはループ命令集合の後の命令を取得する。ループ回数が閾値に等しい場合に、例えば0である時に、ループ命令集合のループが実行完了であると表明する。取得モジュール104は続けて実行するようにループ命令集合の後の命令を取得する。 If the number of loops is less than or equal to the threshold value, step 310 is executed. At step 310, the acquisition module acquires the instructions after the loop instruction set. When the number of loops is equal to the threshold value, for example, 0, the loop of the loop instruction set is declared to be executed. The acquisition module 104 acquires an instruction after the loop instruction set so that it can be continuously executed.

第1レジスタ内のループ回数を決定することにより、ループ回数が所定値でない場合に第2レジスタによって再度実行の命令を取得して、レジスタでループを実現させるだけで、ループに初めて進入したときと最後に脱退するときの判定を行う必要がなく、それによるパイプラインの待機、またはパイプラインフラッシュの問題を減少し、命令の安全を保証しながら、かつ命令の実行効率を向上させる。 By determining the number of loops in the first register, if the number of loops is not a predetermined value, the instruction to execute again is acquired by the second register, and the loop is realized by the register, and the loop is entered for the first time. There is no need to make a final withdrawal decision, which reduces pipeline wait or pipeline flush problems, guarantees instruction safety, and improves instruction execution efficiency.

いくつかの実施例において、当該ループ命令集合にサブループ命令集合がさらに存在すれば、そのサブループ命令集合が取得された場合には、現在の命令集合の取得過程を停止し、当該サブループ命令集合の取得過程に進入する。取得モジュールが当該サブループ命令集合を実行する過程とループ命令集合を実行する過程と同じである。この時、取得モジュールにもう一対のレジスタを設ける必要がある。説明の便利のため、当該もう一対のレジスタは第3レジスタと第4レジスタと呼ばれる。 In some embodiments, if there are more subloop instruction sets in the loop instruction set, when the subloop instruction set is acquired, the acquisition process of the current instruction set is stopped and the acquisition of the subloop instruction set is stopped. Enter the process. The process in which the acquisition module executes the subloop instruction set is the same as the process in which the loop instruction set is executed. At this time, it is necessary to provide another pair of registers in the acquisition module. For convenience of explanation, the other pair of registers are referred to as a third register and a fourth register.

当該サブループ命令集合を実行する過程において、取得モジュールは、サブループ命令集合内の第2開始命令が取得されたことに応答して、サブループ命令集合に関連する第2ループ回数を第3レジスタに記憶し、サブループ命令集合内の第2開始命令の後の次のサブループ命令に対応する第2プログラムカウンター値を第4レジスタに記憶する。例えば、図1の取得モジュール104がサブループ命令集合内の第2開始命令を取得した場合に、サブループ命令集合に対応するループ回数と第2開始命令の後の次のサブループ命令のプログラムカウンター値を第3レジスタおよび第4レジスタに記憶する。 In the process of executing the subloop instruction set, the acquisition module stores the number of second loops related to the subloop instruction set in the third register in response to the acquisition of the second start instruction in the subloop instruction set. , The second program counter value corresponding to the next subloop instruction after the second start instruction in the subloop instruction set is stored in the fourth register. For example, when the acquisition module 104 in FIG. 1 acquires the second start instruction in the subloop instruction set, the number of loops corresponding to the subloop instruction set and the program counter value of the next subloop instruction after the second start instruction are set. Store in the 3rd register and the 4th register.

その後、取得モジュールは、サブループ命令集合内の第2開始命令の後のサブループ命令を取得してループ命令を実行する。サブループ命令集合の終了を示す第2終了命令が取得されたことに応答して、取得モジュールは第3レジスタ内の第2ループ回数と第4レジスタ内の第2プログラムカウンター値とに基づいてサブループ命令集合を循環的に実行することを決定する。 After that, the acquisition module acquires the subloop instruction after the second start instruction in the subloop instruction set and executes the loop instruction. In response to the acquisition of the second end instruction indicating the end of the subloop instruction set, the acquisition module takes the subloop instruction based on the number of second loops in the third register and the second program counter value in the fourth register. Decide to execute the set cyclically.

上述した例は、単に本開示を説明するためのものであり、本開示の具体的な限定ではない。マルチレベルのネスディングループが存在する場合に、複数のレジスタを設置してマルチレベルのループネスディングを実現することができる。 The above examples are merely for the purpose of explaining the present disclosure and are not specific limitations of the present disclosure. When a multi-level nesting group exists, multiple registers can be installed to realize multi-level loop nesting.

複数対のレジスタ対を設置して、任意の長さのループとマルチレベルのループネスディングをサポートし、マルチレベルのループネスディング処理を行う時に、迅速にマルチレベルのループを実行し、かつループ命令集合に進入したときと脱退する時の何回の条件判断によるパイプラインの待機または分岐予測の失敗を減少することができる。 It installs multiple pairs of register pairs to support loops of arbitrary length and multi-level loop nesting, and when performing multi-level loop nesting processing, it quickly executes multi-level loops and loops. It is possible to reduce the failure of the pipeline wait or branch prediction due to the number of conditional judgments when entering and leaving the instruction set.

図4は本発明の実施例ループ命令集合を処理するための装置400を示す概略ブロック図である。装置400は図1の取得モジュール104に含まれ、または取得モジュール104に実現されることができる。図4に示すように、装置400は、ループ命令集合の第1開始命令が取得されたことに応答して、ループ命令集合に関連する第1ループ回数を第1レジスタに記憶し、ループ命令集合内の第1開始命令の後の次のループ命令に対応する第1プログラムカウンター値を第2レジスタに記憶するように構成される第1記憶モジュール402と、ループ命令集合内の第1開始命令の後のループ命令を取得してループ命令を実行するように構成されるループ命令取得モジュール404と、ループ命令集合の終了を示す第1終了命令が取得されたことに応答して、第1レジスタ内の第1ループ回数と第2レジスタ内のプログラムカウンター値とに基づいてループ命令集合を循環的に実行することを決定するように構成される第1ループ決定モジュール406とを備える。 FIG. 4 is a schematic block diagram showing an apparatus 400 for processing an embodiment loop instruction set of the present invention. The device 400 is included in the acquisition module 104 of FIG. 1 or can be implemented in the acquisition module 104. As shown in FIG. 4, the apparatus 400 stores the number of first loops related to the loop instruction set in the first register in response to the acquisition of the first start instruction of the loop instruction set, and the loop instruction set. The first storage module 402 configured to store the first program counter value corresponding to the next loop instruction after the first start instruction in the second register, and the first start instruction in the loop instruction set. In response to the acquisition of the loop instruction acquisition module 404, which is configured to acquire the later loop instruction and execute the loop instruction, and the first end instruction indicating the end of the loop instruction set, in the first register. It includes a first loop determination module 406 configured to periodically execute a loop instruction set based on the number of first loops of the first loop and the program counter value in the second register.

いくつかの実施例において、第1ループ決定モジュール406は、ループ命令集合の終了を示す第1終了命令が取得されたことに応答して、第1ループ回数が閾値より大きいか否かを決定するように構成されるループ回数比較モジュールと、第1ループ回数が閾値より大きいことに応答して、第1レジスタ内の第1ループ回数を徐々に減少させ、ループ命令集合を再実行するよう第2レジスタ内のプログラムカウンター値に対応する次のループ命令を取得するように構成される回数減少・取得モジュールとを含む。 In some embodiments, the first loop determination module 406 determines whether the number of first loops is greater than the threshold in response to the acquisition of the first end instruction indicating the end of the loop instruction set. In response to the loop count comparison module configured as described above and the first loop count being greater than the threshold, the first loop count in the first register is gradually reduced and the loop instruction set is re-executed. Includes a count reduction / acquisition module configured to acquire the next loop instruction corresponding to the program counter value in the register.

いくつかの実施例において、第1ループ決定モジュール406は、第1ループ回数が閾値より大きくないことに応答して、ループ命令集合の後の命令を取得するように構成される命令取得モジュールをさらに含む。 In some embodiments, the first loop determination module 406 further provides an instruction acquisition module configured to acquire instructions after the loop instruction set in response that the number of first loops is not greater than the threshold. Including.

いくつかの実施例において、ループ命令取得モジュール404はサブループ命令集合が取得されたことに応答して、サブループ命令集合を実行するように構成されるサブループ命令集合実行モジュールをさらに含む。 In some embodiments, the loop instruction acquisition module 404 further includes a subloop instruction set execution module configured to execute the subloop instruction set in response to the acquisition of the subloop instruction set.

いくつかの実施例において、サブループ命令集合実行モジュールは、サブループ命令集合内の第2開始命令が取得されたことに応答して、サブループ命令集合に関連する第2ループ回数を第3レジスタに記憶し、サブループ命令集合内の第2開始命令の後の次のサブループ命令に対応する第2プログラムカウンター値を第4レジスタに記憶するように構成される第2記憶モジュールと、サブループ命令集合内の第2開始命令の後のサブループ命令を取得してループ命令を実行するように構成されるサブループ命令取得モジュールと、サブループ命令集合の終了を示す第2終了命令が取得されたことに応答して、第3レジスタ内の第2ループ回数と第4レジスタ内の第2プログラムカウンター値とに基づいてサブループ命令集合を循環的に実行することを決定するように構成される第2ループ決定モジュールとを備える。 In some embodiments, the subloop instruction set execution module stores in the third register the number of second loops associated with the subloop instruction set in response to the acquisition of the second start instruction in the subloop instruction set. , A second storage module configured to store the second program counter value corresponding to the next subloop instruction after the second start instruction in the subloop instruction set in the fourth register, and a second in the subloop instruction set. In response to the acquisition of the subloop instruction acquisition module configured to acquire the subloop instruction after the start instruction and execute the loop instruction, and the second end instruction indicating the end of the subloop instruction set, the third It includes a second loop decision module configured to periodically determine to execute the subloop instruction set based on the number of second loops in the register and the second program counter value in the fourth register.

図5は本発明の複数の実施例が実施可能なコンピュータ機器500を示すブロック図である。機器500は図1の取得モジュール104の実現に用いられる。図に示すように、機器500は読み出し専用メモリ(ROM)502に記憶されたコンピュータプログラム命令または記憶ユニット508からランダムアクセスメモリ(RAM)503にロードされたコンピュータプログラム命令に基づいて、それぞれの適当な動作と処理を実行する計算ユニット501を含む。RAM503では、機器500の操作に用いられる各プログラムとデータを記憶することができる。計算ユニット501、ROM502及びRAM503は総線504を介して接続している。入出力(I/O)インタフェース505も総線504に接続している。 FIG. 5 is a block diagram showing a computer device 500 in which a plurality of embodiments of the present invention can be implemented. The device 500 is used to realize the acquisition module 104 of FIG. As shown in the figure, the device 500 is suitable based on the computer program instructions stored in the read-only memory (ROM) 502 or the computer program instructions loaded from the storage unit 508 into the random access memory (RAM) 503. Includes a computing unit 501 that performs operations and processes. The RAM 503 can store each program and data used for operating the device 500. The calculation unit 501, ROM 502 and RAM 503 are connected via a total line 504. The input / output (I / O) interface 505 is also connected to the total line 504.

キーボード、マウスなどの入力ユニット506と、各種のディスプレイ、スピーカなどの出力ユニット507と、ディスク、CDなどの記憶ユニット508と、ネットワークカード、モデム、無線通信トランシーバなどの通信ユニット509とを含む、機器500における複数の構成要素は、I/Oインターフェース505に接続されている。通信ユニット509は、機器500がインターネットおよび/または様々な電気通信ネットワークなどを介して他の機器と情報/データを交換することを許容する。記憶ユニット A device including an input unit 506 such as a keyboard and a mouse, an output unit 507 such as various displays and speakers, a storage unit 508 such as a disk and a CD, and a communication unit 509 such as a network card, a modem, and a wireless communication transceiver. The plurality of components in 500 are connected to the I / O interface 505. The communication unit 509 allows the device 500 to exchange information / data with other devices via the Internet and / or various telecommunications networks and the like. Memory unit

計算ユニット501はそれぞれの処理と計算能力を有する汎用や/または専用処理成分でよい。計算ユニット501の一部の例は中央処理装置(CPU)、画像処理装置(GPU)、それぞれの専用の人工知能(AI)計算チップ、それぞれの機械学習モデルアルゴリズムを実行する計算ユニット、デジタルシグナルプロセッサ(DSP)、あらゆる適当なプロセッサ、コントローラ、マイクロコントローラーなどを含むが限られてはいない。計算ユニット501は上で説明した各方法と処理例えば方法200と300を実行する。例えば、いくつかの実施例で、方法200と300はコンピューターソフトウェアプログラムに実現されることができ、機械読み取り可能な記憶媒体例えば記憶ユニット508に有形的に含まれる。いくつかの実施例で、コンピュータプログラムの一部または全てがROM502や/または通信ユニット509を通して機器500にロードや/または装着できる。コンピュータプログラムがRAM503にロードして計算ユニット501で実行される場合に、上で説明した方法200と300の一つまたは複数のステップを実行することができる。また、他の実施形態では、計算ユニット501は、他の任意の適当な方法(例えば、ファームウェアによって)によって方法500を実行するように構成されてもいい。 The calculation unit 501 may be a general-purpose or / or dedicated processing component having each processing and computing power. Some examples of calculation unit 501 are central processing unit (CPU), image processing unit (GPU), dedicated artificial intelligence (AI) calculation chip, calculation unit that executes each machine learning model algorithm, and digital signal processor. (DSP), including, but not limited to, any suitable processor, controller, microcontroller, etc. The calculation unit 501 performs the methods and processes described above, eg, methods 200 and 300. For example, in some embodiments, methods 200 and 300 can be implemented in a computer software program and are tangibly included in a machine readable storage medium such as storage unit 508. In some embodiments, some or all of the computer program can be loaded and / or mounted on the device 500 through the ROM 502 and / or the communication unit 509. One or more steps of methods 200 and 300 described above can be performed when the computer program is loaded into RAM 503 and executed in compute unit 501. Also, in other embodiments, the compute unit 501 may be configured to perform method 500 by any other suitable method (eg, by firmware).

本発明は上で説明した機能は少なくとも部分的に一つまたは複数のハードウェアロジックコンポーネントで実行できる。例えば、非制限的に、使用できる示範類型のハードウェアロジックコンポーネントは、現場でプログラム可能なゲートアレイ(FPGA)と、特定用途向け集積回路(ASIC)、特定用途向け標準製品(ASSP)と、システムオンチップ(SOC)と、プログラムの書き換えが可能なロジックデバイス(CPLD)などを含む。 The present invention allows the functions described above to be performed by at least one or more hardware logic components. For example, non-limiting, exemplary hardware logic components are field programmable gate arrays (FPGAs), application-specific integrated circuits (ASICs), application-specific standard products (ASSPs), and systems. It includes an on-chip (SOC) and a logic device (CPLD) that can rewrite the program.

本開示の方法を実施するためのプログラムコードは、1つまたは複数のプログラミング言語の任意の組み合わせでプログラミングすることができる。これらのプログラムコードは、汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサまたはコントローラに提供されてもよく、その結果、プログラムコードがプロセッサまたはコントローラによって実行されると、フローチャートおよび/またはブロック図において特定される機能/操作が実行される。プログラムコードは、完全に機器で実行、部分的に機器で実行することができ、スタンドアロンソフトウェアパッケージとして部分的に機器で実行され、部分的にリモート機器で実行されまたは全てリモート機器またはサーバで実行され得る。 The program code for implementing the methods of the present disclosure can be programmed in any combination of one or more programming languages. These program codes may be provided to the processor or controller of a general purpose computer, dedicated computer, or other programmable data processor, and as a result, when the program code is executed by the processor or controller, the flow chart and / or block. The function / operation specified in the figure is performed. The program code can be run entirely on the device, partially on the device, partially on the device as a stand-alone software package, partially on the remote device, or entirely on the remote device or server. obtain.

本開示の明細書では、機器読み取り可能な媒体は、命令実行システム、装置、または機器によって使用されるまたは命令実行システム、装置、または機器と組み合わせて使用するためのプログラムを含むまたは記憶することができる有形の媒体とすることができる。機器読み取り可能な媒体は、機器読み取り可能な信号媒体または機器読み取り可能な記憶媒体とすることができる。機器読み取り可能な媒体は、電子、磁気、光学、電磁気、赤外線、または半導体システム、装置、または機器、あるいは上記の任意の適切な組み合わせを含むことができるが、それらに限定されない。機器読み取り可能な記憶媒体のより具体的な例は、1つまたは複数のラインに基づく電気接続、ポータブルコンピュータディスク、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンメモリ(ROM)、消去可能プログラマブルリードオンメモリ(EPROMまたはフラッシュメモリ)、光ファイバ、ポータブルコンパクトディスクリードオンリーメモリ(CD−ROM)、光記憶装置、磁気記憶装置、またはこれらの任意の適切な組み合わせを含むことができる。 As used herein, a device-readable medium may include or store a program used by, or in combination with, an instruction execution system, device, or device. It can be a tangible medium that can be used. The device-readable medium can be a device-readable signal medium or a device-readable storage medium. The device readable medium can include, but is not limited to, electronic, magnetic, optical, electromagnetic, infrared, or semiconductor systems, devices, or devices, or any suitable combination of the above. More specific examples of device readable storage media are electrical connections based on one or more lines, portable computer disks, hard disks, random access memory (RAM), read-on memory (ROM), erasable programmable read-on. It can include memory (EPROM or flash memory), optical fiber, portable compact disk read-only memory (CD-ROM), optical storage, magnetic storage, or any suitable combination thereof.

また、動作は、特定の順序で説明されたが、これは、そのような動作が示された特定の順序または順序の順番で実行されること、または所望の結果を達成するためにすべての示された動作が実行されることを必要とする。特定の状況では、マルチタスキングおよび並列処理は、有利な場合がある。同様に、いくつかの具体的な実現例の詳細が上記の説明に含まれているが、これらは本開示の範囲を限定するものとして解釈されるべきではない。別々の実施例で説明されているいくつかの特徴は、単一の実現において組み合わせて実現することもできる。逆に、単一の実施例に関して説明されている様々な特徴は、個別にまたは任意の適切なサブコンビネーションで複数の実施例で実施することができる。 Also, the actions have been described in a particular order, which indicates that such actions are performed in the particular order or order in which they were shown, or to achieve the desired result. It requires that the performed operation be performed. In certain situations, multitasking and parallelism can be advantageous. Similarly, details of some specific implementations are included in the above description, but these should not be construed as limiting the scope of this disclosure. Some features described in separate embodiments can also be realized in combination in a single realization. Conversely, the various features described for a single embodiment can be implemented in multiple embodiments individually or in any suitable subcombination.

本願は、構成的特徴および/または方法論理的動作に特有の言語で説明されているが、添付の特許請求の範囲で定義されるテーマは、説明された上記の特定の特徴または動作に限定されないことが理解されるべきである。逆に、上記の特定の特徴および動作は単に特許請求の範囲を実施する例示的な形態である。
Although the present application is described in a language specific to constructive features and / or method logical behaviors, the themes defined in the appended claims are not limited to the particular features or behaviors described above. Should be understood. Conversely, the particular features and behaviors described above are merely exemplary embodiments that implement the claims.

Claims (12)

ループ命令集合の第1開始命令が取得されたことに応答して、前記ループ命令集合に関連する第1ループ回数を第1レジスタに記憶し、前記ループ命令集合内の前記第1開始命令の後の次のループ命令に対応する第1プログラムカウンター値を第2レジスタに記憶するステップと、
前記ループ命令集合内の第1開始命令の後のループ命令を取得して前記ループ命令を実行するステップと、
前記ループ命令集合の終了を示す第1終了命令が取得されたことに応答して、前記第1レジスタ内の前記第1ループ回数と前記第2レジスタ内の前記プログラムカウンター値とに基づいて前記ループ命令集合を循環的に実行することを決定するステップと、
を備えるループ命令集合を処理するための方法。
In response to the acquisition of the first start instruction of the loop instruction set, the number of first loops related to the loop instruction set is stored in the first register, and after the first start instruction in the loop instruction set. The step of storing the first program counter value corresponding to the next loop instruction in the second register, and
A step of acquiring a loop instruction after the first start instruction in the loop instruction set and executing the loop instruction, and
In response to the acquisition of the first end instruction indicating the end of the loop instruction set, the loop is based on the number of times of the first loop in the first register and the program counter value in the second register. The steps that determine to execute the instruction set cyclically,
A method for processing a loop instruction set that comprises.
前記ループ命令集合を循環的に実行することを決定するステップが、
前記ループ命令集合の終了を示す前記第1終了命令が取得されたことに応答して、前記第1ループ回数が閾値より大きいか否かを決定するステップと、
前記第1ループ回数が前記閾値より大きいことに応答して、前記第1レジスタ内の前記第1ループ回数を徐々に減少させ、前記ループ命令集合を再実行するように、前記第2レジスタ内の前記プログラムカウンター値に対応する前記次のループ命令を取得するステップと、を含む請求項1に記載の方法。
The step that determines to execute the loop instruction set cyclically is
A step of determining whether or not the number of times of the first loop is larger than the threshold value in response to the acquisition of the first end instruction indicating the end of the loop instruction set.
In response to the number of first loops being greater than the threshold, the number of first loops in the first register is gradually reduced and the loop instruction set is re-executed in the second register. The method of claim 1, comprising the step of acquiring the next loop instruction corresponding to the program counter value.
前記ループ命令集合を循環的に実行することを決定するステップが、
前記第1ループ回数が前記閾値より大きくないことに応答して、前記ループ命令集合の後の命令を取得するステップをさらに含む請求項2に記載の方法。
The step that determines to execute the loop instruction set cyclically is
The method of claim 2, further comprising the step of acquiring an instruction after the loop instruction set in response to the first loop count not being greater than the threshold.
前記ループ命令集合内の第1開始命令の後のループ命令を取得するステップが、
サブループ命令集合が取得されたことに応答して、サブループ命令集合を実行するステップを含む請求項1に記載の方法。
The step of acquiring the loop instruction after the first start instruction in the loop instruction set is
The method of claim 1, comprising the step of executing the subloop instruction set in response to the acquisition of the subloop instruction set.
前記サブループ命令集合を実行するステップが、
前記サブループ命令集合内の第2開始命令が取得されたことに応答して、前記サブループ命令集合に関連する第2ループ回数を第3レジスタに記憶し、前記サブループ命令集合内の前記第2開始命令の後の次のサブループ命令に対応する第2プログラムカウンター値を第4レジスタに記憶するステップと、
前記サブループ命令集合内の前記第2開始命令の後のサブループ命令を取得してサブループ命令を実行するステップと、
前記サブループ命令集合の終了を示す第2終了命令が取得されたことに応答して、前記第3レジスタ内の前記第2ループ回数と前記第4レジスタ内の前記第2プログラムカウンター値とに基づいて前記サブループ命令集合を循環的に実行することを決定するステップと、を含む請求項4に記載の方法。
The step of executing the subloop instruction set is
In response to the acquisition of the second start instruction in the subloop instruction set, the number of second loops related to the subloop instruction set is stored in the third register, and the second start instruction in the subloop instruction set is stored. The step of storing the second program counter value corresponding to the next subloop instruction after the fourth register in the fourth register,
A step of acquiring a subloop instruction after the second start instruction in the subloop instruction set and executing the subloop instruction, and
In response to the acquisition of the second end instruction indicating the end of the subloop instruction set, based on the number of times of the second loop in the third register and the second program counter value in the fourth register. The method according to claim 4, comprising a step of determining to execute the subloop instruction set cyclically.
ループ命令集合の第1開始命令が取得されたことに応答して、前記ループ命令集合に関連する第1ループ回数を第1レジスタに記憶し、前記ループ命令集合内の前記第1開始命令の後の次のループ命令に対応する第1プログラムカウンター値を第2レジスタに記憶するように構成される第1記憶モジュールと、
前記ループ命令集合内の第1開始命令の後のループ命令を取得して前記ループ命令を実行するように構成されるループ命令取得モジュールと、
前記ループ命令集合の終了を示す第1終了命令が取得されたことに応答して、前記第1レジスタ内の前記第1ループ回数と前記第2レジスタ内の前記プログラムカウンター値とに基づいて前記ループ命令集合を循環的に実行することを決定するように構成される第1ループ決定モジュールと、
を備えるループ命令集合を処理するための装置。
In response to the acquisition of the first start instruction of the loop instruction set, the number of first loops related to the loop instruction set is stored in the first register, and after the first start instruction in the loop instruction set. A first storage module configured to store the first program counter value corresponding to the next loop instruction in the second register, and
A loop instruction acquisition module configured to acquire a loop instruction after the first start instruction in the loop instruction set and execute the loop instruction.
In response to the acquisition of the first end instruction indicating the end of the loop instruction set, the loop is based on the number of times of the first loop in the first register and the program counter value in the second register. A first loop decision module configured to determine to execute the instruction set cyclically,
A device for processing a set of loop instructions.
前記第1ループ決定モジュールが、
前記ループ命令集合の終了を示す前記第1終了命令が取得されたことに応答して、前記第1ループ回数が閾値より大きいか否かを決定するように構成されるループ回数比較モジュールと、
前記第1ループ回数が前記閾値より大きいことに応答して、前記第1レジスタ内の前記第1ループ回数を徐々に減少させ、前記ループ命令集合を再実行するよう前記第2レジスタ内の前記プログラムカウンター値に対応する前記次のループ命令を取得するように構成される回数減少・取得モジュールと、
を含む請求項6に記載の装置。
The first loop determination module
A loop count comparison module configured to determine whether or not the first loop count is greater than a threshold in response to the acquisition of the first end instruction indicating the end of the loop instruction set.
The program in the second register to gradually reduce the number of first loops in the first register and re-execute the loop instruction set in response to the first loop count being greater than the threshold. The number-of-times reduction / acquisition module configured to acquire the next loop instruction corresponding to the counter value,
The apparatus according to claim 6.
前記第1ループ決定モジュールが、
前記第1ループ回数が前記閾値より大きくないことに応答して、前記ループ命令集合の後の命令を取得するように構成される命令取得モジュールをさらに含む請求項7に記載の装置。
The first loop determination module
The apparatus according to claim 7, further comprising an instruction acquisition module configured to acquire an instruction after the loop instruction set in response to the first loop count not being greater than the threshold.
ループ命令取得モジュールが、
サブループ命令集合が取得されたことに応答して、サブループ命令集合を実行するように構成されるサブループ命令集合実行モジュールをさらに含む請求項6に記載の装置。
The loop instruction acquisition module
The apparatus according to claim 6, further comprising a subloop instruction set execution module configured to execute the subloop instruction set in response to the acquisition of the subloop instruction set.
サブループ命令集合実行モジュールが、
前記サブループ命令集合内の第2開始命令が取得されたことに応答して、前記サブループ命令集合に関連する第2ループ回数を第3レジスタに記憶し、前記サブループ命令集合内の前記第2開始命令の後の次のサブループ命令に対応する第2プログラムカウンター値を第4レジスタに記憶するように構成される第2記憶モジュールと、
前記サブループ命令集合内の前記第2開始命令の後のサブループ命令を取得して前記サブループ命令を実行するように構成されるサブループ命令取得モジュールと、
前記サブループ命令集合の終了を示す第2終了命令が取得されたことに応答して、前記第3レジスタ内の前記第2ループ回数と前記第4レジスタ内の前記第2プログラムカウンター値とに基づいて前記サブループ命令集合を循環的に実行することを決定するように構成される第2ループ決定モジュールと、
を備える請求項9に記載の装置。
The subloop instruction set execution module
In response to the acquisition of the second start instruction in the subloop instruction set, the number of second loops related to the subloop instruction set is stored in the third register, and the second start instruction in the subloop instruction set is stored. A second storage module configured to store the second program counter value corresponding to the next subloop instruction after the fourth register, and
A subloop instruction acquisition module configured to acquire a subloop instruction after the second start instruction in the subloop instruction set and execute the subloop instruction.
In response to the acquisition of the second end instruction indicating the end of the subloop instruction set, based on the number of times of the second loop in the third register and the second program counter value in the fourth register. A second loop decision module configured to determine to execute the subloop instruction set cyclically,
9. The apparatus according to claim 9.
電子機器であって、
少なくとも2つのレジスタを含む一つまたは複数のプロセッサと、
一つまたは複数のプログラムを記憶する記憶装置と、を備え、
前記一つまたは複数のプロセッサが前記一つまたは複数のプロセッサによって実行される場合に、前記一つまたは複数のプロセッサが請求項1から5のいずれか一項に記載のループ命令集合を処理するための方法を実現する電子機器。
It ’s an electronic device,
With one or more processors containing at least two registers,
Equipped with a storage device for storing one or more programs,
To process the loop instruction set according to any one of claims 1 to 5, when the one or more processors are executed by the one or more processors. Electronic equipment that realizes the method of.
コンピュータプログラムが記憶されているコンピュータ読み取り可能な記憶媒体であって、
前記プログラムがプロセッサによって実行される場合に、請求項1から5のいずれか一項に記載のループ命令集合を処理するための方法が実現されるコンピュータ読み取り可能な記憶媒体。
A computer-readable storage medium that stores computer programs
A computer-readable storage medium in which a method for processing the loop instruction set according to any one of claims 1 to 5 is realized when the program is executed by a processor.
JP2019235473A 2019-06-26 2019-12-26 Methods, devices, apparatus and storage media for processing loop instruction set Pending JP2021005355A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201910559268.1A CN112148367A (en) 2019-06-26 2019-06-26 Method, apparatus, device and medium for processing a set of loop instructions
CN201910559268.1 2019-06-26

Publications (1)

Publication Number Publication Date
JP2021005355A true JP2021005355A (en) 2021-01-14

Family

ID=69960322

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019235473A Pending JP2021005355A (en) 2019-06-26 2019-12-26 Methods, devices, apparatus and storage media for processing loop instruction set

Country Status (5)

Country Link
US (1) US20200409703A1 (en)
EP (1) EP3757771A1 (en)
JP (1) JP2021005355A (en)
KR (1) KR20210001883A (en)
CN (1) CN112148367A (en)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11132200B1 (en) * 2020-09-28 2021-09-28 Arm Limited Loop end prediction using loop counter updated by inflight loop end instructions
CN114443142A (en) * 2022-01-29 2022-05-06 上海阵量智能科技有限公司 Method, device, chip, electronic equipment and storage medium for processing loop instruction
CN115016845A (en) * 2022-05-31 2022-09-06 上海阵量智能科技有限公司 Instruction processing method and device, chip, board card, equipment and storage medium
CN115113934B (en) * 2022-08-31 2022-11-11 腾讯科技(深圳)有限公司 Instruction processing method, apparatus, program product, computer device and medium
CN115469931B (en) * 2022-11-02 2023-03-24 北京燧原智能科技有限公司 Instruction optimization method, device, system, equipment and medium of loop program
CN117850881B (en) * 2024-01-18 2024-06-18 上海芯联芯智能科技有限公司 Instruction execution method and device based on pipelining
CN118626323B (en) * 2024-08-14 2024-10-11 北京开源芯片研究院 Method, device, equipment and storage medium for testing processor

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02183332A (en) * 1989-01-10 1990-07-17 Fujitsu Ltd Programmed control system
JPH0353324A (en) * 1989-07-21 1991-03-07 Nec Corp Program loop control system
JPH03211656A (en) * 1989-11-17 1991-09-17 Texas Instr Inc <Ti> Multi-processor system using crossbar link of processor and memory and method of operating the same
JPH1173318A (en) * 1997-06-18 1999-03-16 Matsushita Electric Ind Co Ltd Microprocessor
US20190066255A1 (en) * 2017-08-29 2019-02-28 Hema Chand Nalluri Method and apparatus for efficient loop processing in a graphics hardware front end

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5710913A (en) * 1995-12-29 1998-01-20 Atmel Corporation Method and apparatus for executing nested loops in a digital signal processor
US6842895B2 (en) * 2000-12-21 2005-01-11 Freescale Semiconductor, Inc. Single instruction for multiple loops

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02183332A (en) * 1989-01-10 1990-07-17 Fujitsu Ltd Programmed control system
JPH0353324A (en) * 1989-07-21 1991-03-07 Nec Corp Program loop control system
JPH03211656A (en) * 1989-11-17 1991-09-17 Texas Instr Inc <Ti> Multi-processor system using crossbar link of processor and memory and method of operating the same
JPH1173318A (en) * 1997-06-18 1999-03-16 Matsushita Electric Ind Co Ltd Microprocessor
US20190066255A1 (en) * 2017-08-29 2019-02-28 Hema Chand Nalluri Method and apparatus for efficient loop processing in a graphics hardware front end

Also Published As

Publication number Publication date
KR20210001883A (en) 2021-01-06
CN112148367A (en) 2020-12-29
US20200409703A1 (en) 2020-12-31
EP3757771A1 (en) 2020-12-30

Similar Documents

Publication Publication Date Title
JP2021005355A (en) Methods, devices, apparatus and storage media for processing loop instruction set
KR101746018B1 (en) Method and apparatus for efficient scheduling for asymmetrical execution units
TWI590162B (en) Processor and method for early deep sleep state exit of a processing element
US9996325B2 (en) Dynamic reconfigurable compiler
US9720667B2 (en) Automatic loop vectorization using hardware transactional memory
JP5985766B2 (en) Reduce excessive compilation time
CN101807144B (en) Prospective multi-threaded parallel execution optimization method
CN103631655B (en) Task schedule in big core and small nut
US9760411B2 (en) Switching a locking mode of an object in a multi-thread program
US9977663B2 (en) Technologies for optimizing sparse matrix code with field-programmable gate arrays
WO2020198220A1 (en) Processor and interrupt controller
TWI732775B (en) Apparatus, method, computer software, storage medium, and virtual machine for data processing
JP7262520B2 (en) Methods, apparatus, apparatus and computer readable storage media for executing instructions
CN108021563B (en) Method and device for detecting data dependence between instructions
US20140331025A1 (en) Reconfigurable processor and operation method thereof
US8117425B2 (en) Multithread processor and method of synchronization operations among threads to be used in same
US9396044B2 (en) Memory efficient thread-level speculation
KR102210996B1 (en) Processor and method of controlling the same
KR20130040957A (en) Dynamic data synchronization in thread-level speculation
JP2005267024A (en) Parallel processor, parallel processing method, and program

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191226

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210512

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210706

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211005

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20211018

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20220301

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20220629

C22 Notice of designation (change) of administrative judge

Free format text: JAPANESE INTERMEDIATE CODE: C22

Effective date: 20220906

C22 Notice of designation (change) of administrative judge

Free format text: JAPANESE INTERMEDIATE CODE: C22

Effective date: 20221011

C22 Notice of designation (change) of administrative judge

Free format text: JAPANESE INTERMEDIATE CODE: C22

Effective date: 20221018

C13 Notice of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: C13

Effective date: 20221213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230310

C13 Notice of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: C13

Effective date: 20230328

C22 Notice of designation (change) of administrative judge

Free format text: JAPANESE INTERMEDIATE CODE: C22

Effective date: 20230404