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 PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 238000012545 processing Methods 0.000 title claims description 30
- 230000004044 response Effects 0.000 claims abstract description 32
- 230000008569 process Effects 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 6
- 230000009467 reduction Effects 0.000 claims description 2
- 238000011010 flushing procedure Methods 0.000 abstract 1
- 238000004364 calculation method Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 102000008730 Nestin Human genes 0.000 description 1
- 108010088225 Nestin Proteins 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 210000005055 nestin Anatomy 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30065—Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction 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
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.
図面を合わせながら以下の詳細な説明を参照することにより、本開示の各実施例の上記および他の特徴、利点および態様がより明らかになる。図面において同一または類似する符号は、常に同一または類似する構成要素を表す。ここで、
本開示の実施例について、図面を参照して以下により詳細に説明する。本開示のいくつかの実施例が図面に示されているが、本開示が様々な形態で実現することができ、本明細書に記載の実施例に限定されると解釈されるべきではなく、逆に、これらの実施例を提供することで本開示がより明白且つ完全に理解されるためのものであると理解されるべきである。本開示の図面および実施例は、例示的なものにすぎず、本開示の保護範囲を限定するものではないと理解されるべきである。 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.
しかしながら、上述従来の方案には以下のような問題または欠点が存在する。方案1は、制限が大きく、コンパイラが適当な命令を見つけて填充することができるかどうかにに応じて決定されるもので、ループの境界でも特殊な処理を行うとともに、パイプラインの深さが深い場合には実現が困難となる。方案2の問題は、分岐予測が失敗した場合、全体のパイプラインをフラッシュ(flush)する必要があり、この代償は非常に高く、特にループの初期進入と最終脱退した時の予測失敗問題はさらに避けられないものである。方案3の設計は主に命令取得モジュールの圧力とエネルギー消費を下げるためであって、ジャンプにおける遅延スロットの待機問題を解決してはいなく、同時に、ループネスディングをサポートしないこと、ループ緩衝区の深度を超えたループをサポートしないこと、ループ内にさらにジャンプコマンド有することを支持サポートしないのような多くの制限がある。方案4の問題は、こういう実現にはまだたくさんの制限があり、例えば、(1)ループボディー中にジャンプまたはループが存在してはならないこと、(2)ループプログラムはループ緩衝区より大きくなってはならないこと、(3)ループの回数が定数であることである。方案5は方案4に基づいて最適化を行っているが、こういう方式はやはり通用レジスタに記憶されたループ回数と特殊な状態ビットに依存し、ジャンプ状態を満たすかどうかを判断するため、まだデータ冒険の問題が存在する。実行段階に達して状態ビットの更新が可能ないくつかのプロセッサにおいて、これらの案は、実装が可能かどうかに問題がある。
However, the above-mentioned conventional measures have the following problems or drawbacks.
本発明の実施例によると、ループ命令集合を処理するための改新された方案が提出された。当該方案では、取得モジュールに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
命令メモリ102は実行される命令を記憶するために用いられる。命令メモリ102は2倍速の同期ダイナミックランダムアクセスメモリDDRと、ランダムアクセスメモリ(RAM)と、読み出し専用メモリ(ROM)と、消去可能なプログラム可能な読み取り専用メモリ(EEPROM)と、フラッシュメモリまたは他のメモリ技術、または必要な情報を記憶し、かつ取得モジュール104によってアクセス可能なあらゆる他の非伝送媒体とを含むがこれらに限定されない。
The
取得モジュール104は命令メモリ102内の命令の取得するために用いられ、例えば、取得モジュール104は命令を取得する命令取得モジュールである。取得モジュール104は取得の過程も制御し、かつ取得した命令をデコードモジュール106に送信してデコードを行う。取得モジュール104は1対のレジスタ対であるレジスタ108とレジスタ110とを含む。図1において、取得モジュール104がレジスタ108とレジスタ110を含むことは単に例であるだけで、本発明の具体的な限定ではなく、取得モジュール104は任意の数のレジスタを含んでもよい。
The
いくつかの実施例において、取得モジュール104はレジスタ108とレジスタ110とを利用して一つのループ命令集合を制御する。当該ループ命令集合中にサブループ命令集合がネスディングされている場合に、もう1対のレジスタを設けることで当該サブループ命令集合の実行を実現することができる。
In some embodiments, the
取得モジュール104がループ命令集合を取得した場合に、実行しようとするループ命令集合のループ回数をレジスタ108に記憶し、ループ命令集合内の開始命令の後の実際にループする最初の命令のプログラムカウンター値をレジスタ110に記憶することができる。次に、ループ命令集合内のループ命令の実行を始める。ループ命令が終了するまで実行した場合に、例えば、ループ命令集合の終了を示す終了命令が取得された場合に、取得モジュールはレジスタ108内に記憶にされたループ回数が所定値であるか否かを決定する。一つの例において、当該所定値は0である。上述した例は、単に本開示を説明するためのもので、本開示の具体的な限定はなく、当業者であれば、必要に応じて、当該所定の値の大きさを設定することができる。
When the
レジスタ108内の値が所定値であることを検測した場合に、ループ命令集合がループ完了したことを表示する。従って、当該ループ命令集合から脱退してから、取得モジュールはループ命令集合の次の命令を取得する。
When it is checked that the value in the
いくつかの実施例において、レジスタ108、レジスタ110、及び取得モジュール104内の部分的な機能は、ループ状態機を構成することができ、当該ループ状態機はループ命令集合の実行に用いられる。ループ命令集合の開始命令を取得した場合に、ループ回数をレジスタ108に記憶し、開始命令の後の命令のプログラムカウンター値をレジスタ110に記憶してから、取得モジュール104がループ状態機の中に入る。ループ命令集合の終了命令が検出され、レジスタ108内のループ回数が0となった場合のみ、ループ状態機から脱退し、そうでなければ、ループ状態機の中でループ命令を実行する。
In some embodiments, the partial functions within
レジスタ108内の値が所定値ではないと検測された場合に、ループ命令集合がループ実行される必要があると表明する。従って、取得モジュール104は、レジスタ110内に記憶されたループ命令集合における実行しようとするループ命令の初期位置を読み出す。そして、ループ命令集合内のループ命令を再実行する。
Asserts that the loop instruction set needs to be looped if it is detected that the value in
デコードモジュール106は取得モジュール104から取得した命令(例えばループ命令)をデコードして実行する。
The
図1は本発明の実施例によるループ命令集合を処理するための例示的環境100を示す概略図である。これから図2を組み合わせて本発明の実施例によるループ命令集合を処理するための方法200を示すフロチャートを説明する。
FIG. 1 is a schematic diagram showing an
図2に示すように、ステップ202で、取得モジュールはループ命令集合の開始命令を取得したか否かを決定する。説明の便宜のため、以下では当該開始命令を第1開始命令と呼ぶ。例えば、図1での取得モジュール104は命令メモリ102に記憶した命令を取得するために用いられる。取得モジュール104はループ命令集合内の第1開始命令が取得されたか否かを決定する。
As shown in FIG. 2, in
ループ命令集合の第1開始命令が取得された場合には、ステップ204で、取得モジュールはループ命令集合に関連するループ回数を第1レジスタに記憶する。説明の便宜のため、当該ループ回数は第1ループ回数とも呼ばれる。例えば、ループ命令集合内の第1開始命令が取得された場合に、取得モジュール104はループ命令集合内の第1ループ回数をレジスタ108に記憶する。レジスタ108内の第一ループ回数はループ命令集合がループ実行する回数を制御するために用いられ、かつ一回のループ命令集合が実行された後、その値は一つずつ減少される。
When the first start instruction of the loop instruction set is acquired, in
ステップ206で、取得モジュールはループ命令集合内の第1開始命令の後の次のループ命令に対応する第1プログラムカウンター値を第2レジスタに記憶する。例えば、取得モジュール104がループ命令集合の開始命令を取得し、かつループ回数を記憶した場合に、ループ命令集合内の開始命令の後の次のループ命令に対応するプログラムカウンター値をレジスタ110に記憶する。レジスタ110に記憶されているプログラムカウンター値によって、ループ命令集合が実行するたびに、いずれもそのプログラムカウンター値に対応する位置からループ命令を実行するようになる。
At
ステップ208で、取得モジュールはループ命令集合内の第1開始命令の後のループ命令を取得してループ命令を実行する。例えば、図1の取得モジュール104はループ命令集合の開始命令の後のループ命令からループ命令の実行を開始する。
At
ステップ210で、取得モジュールはループ命令集合の終了を示す第1終了命令が取得されたか否かを決定する。例えば、図1で取得モジュール104は命令メモリ102から取得した命令がループ命令集合の終了を示すものか否かを決定する。
In
ループ命令集合の終了を示す第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
取得モジュールに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
図3に示すように、ステップ302で、取得モジュールはループ命令集合の終了を示す終了命令が取得されたか否かを決定し、説明の便利のため、当該終了命令は第1終了命令とも呼ばれる。例えば、図1において、取得モジュール104が命令メモリ102のループ命令を取得した場合に、ループ命令集合の終了命令が取得されたか否かを決定する。
As shown in FIG. 3, in
ループ命令集合の終了命令が取得された場合に、ステップ304で、取得モジュールはループ回数が閾値より大きいか否かを決定する。例えば、図1において、取得モジュール104が命令メモリ102からループ命令集合の終了命令を取得した場合に、レジスタ108に記憶されたループ命令集合のループ回数が閾値より大きいか否かを決定し、例えば0である。上述した例は、単に本開示を説明するためのもので、本開示の具体的な限定ではない。
When the end instruction of the loop instruction set is acquired, in
ループ回数が閾値より大きい場合に、ステップ306を実行する。ステップ306で、取得モジュールは第1レジスタのループ回数を減少する。ループ回数が閾値より大きいと決定した場合に、ループ回数の値を調整する必要がある。例えば、ループ回数を一つずつ減少する。その後、減少されたループ回数で第1レジスタのループ回数を更新する。例えば、図1において、取得モジュール104はループ回数が閾値より大きいと決定した場合に、レジスタ108のループ回数を一つずつ減少する。
If the number of loops is greater than the threshold,
ステップ308で、取得モジュールは第2レジスタのプログラムカウンター値に対応する次のループ命令を取得してループ命令集合を繰り返し実行する。ループ回数が閾値より大きいと決定した場合、ループ命令を繰り返し実行する必要があると表明する。この時、第2レジスタに記憶されたプログラムカウンター値によってループ処理の実行が必要なループ命令の初期位置を決定できる。例えば、図1において、取得モジュール104はループ命令集合内の開始命令の後の命令を取得するようにレジスタ110のプログラムカウンター値の読み取る。
In
ループ回数が閾値以下である場合、ステップ310が実行される。ステップ310で、取得モジュールはループ命令集合の後の命令を取得する。ループ回数が閾値に等しい場合に、例えば0である時に、ループ命令集合のループが実行完了であると表明する。取得モジュール104は続けて実行するようにループ命令集合の後の命令を取得する。
If the number of loops is less than or equal to the threshold value,
第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
その後、取得モジュールは、サブループ命令集合内の第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
いくつかの実施例において、第1ループ決定モジュール406は、ループ命令集合の終了を示す第1終了命令が取得されたことに応答して、第1ループ回数が閾値より大きいか否かを決定するように構成されるループ回数比較モジュールと、第1ループ回数が閾値より大きいことに応答して、第1レジスタ内の第1ループ回数を徐々に減少させ、ループ命令集合を再実行するよう第2レジスタ内のプログラムカウンター値に対応する次のループ命令を取得するように構成される回数減少・取得モジュールとを含む。
In some embodiments, the first
いくつかの実施例において、第1ループ決定モジュール406は、第1ループ回数が閾値より大きくないことに応答して、ループ命令集合の後の命令を取得するように構成される命令取得モジュールをさらに含む。
In some embodiments, the first
いくつかの実施例において、ループ命令取得モジュール404はサブループ命令集合が取得されたことに応答して、サブループ命令集合を実行するように構成されるサブループ命令集合実行モジュールをさらに含む。
In some embodiments, the loop
いくつかの実施例において、サブループ命令集合実行モジュールは、サブループ命令集合内の第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
キーボード、マウスなどの入力ユニット506と、各種のディスプレイ、スピーカなどの出力ユニット507と、ディスク、CDなどの記憶ユニット508と、ネットワークカード、モデム、無線通信トランシーバなどの通信ユニット509とを含む、機器500における複数の構成要素は、I/Oインターフェース505に接続されている。通信ユニット509は、機器500がインターネットおよび/または様々な電気通信ネットワークなどを介して他の機器と情報/データを交換することを許容する。記憶ユニット
A device including an
計算ユニット501はそれぞれの処理と計算能力を有する汎用や/または専用処理成分でよい。計算ユニット501の一部の例は中央処理装置(CPU)、画像処理装置(GPU)、それぞれの専用の人工知能(AI)計算チップ、それぞれの機械学習モデルアルゴリズムを実行する計算ユニット、デジタルシグナルプロセッサ(DSP)、あらゆる適当なプロセッサ、コントローラ、マイクロコントローラーなどを含むが限られてはいない。計算ユニット501は上で説明した各方法と処理例えば方法200と300を実行する。例えば、いくつかの実施例で、方法200と300はコンピューターソフトウェアプログラムに実現されることができ、機械読み取り可能な記憶媒体例えば記憶ユニット508に有形的に含まれる。いくつかの実施例で、コンピュータプログラムの一部または全てがROM502や/または通信ユニット509を通して機器500にロードや/または装着できる。コンピュータプログラムがRAM503にロードして計算ユニット501で実行される場合に、上で説明した方法200と300の一つまたは複数のステップを実行することができる。また、他の実施形態では、計算ユニット501は、他の任意の適当な方法(例えば、ファームウェアによって)によって方法500を実行するように構成されてもいい。
The
本発明は上で説明した機能は少なくとも部分的に一つまたは複数のハードウェアロジックコンポーネントで実行できる。例えば、非制限的に、使用できる示範類型のハードウェアロジックコンポーネントは、現場でプログラム可能なゲートアレイ(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ループ回数と前記第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に記載の方法。 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ループ回数と前記第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ループ回数を徐々に減少させ、前記ループ命令集合を再実行するよう前記第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ループ回数が前記閾値より大きくないことに応答して、前記ループ命令集合の後の命令を取得するように構成される命令取得モジュールをさらに含む請求項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.
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)
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)
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)
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 |
-
2019
- 2019-06-26 CN CN201910559268.1A patent/CN112148367A/en active Pending
- 2019-12-26 JP JP2019235473A patent/JP2021005355A/en active Pending
-
2020
- 2020-02-12 KR KR1020200017025A patent/KR20210001883A/en not_active Application Discontinuation
- 2020-03-24 EP EP20165083.5A patent/EP3757771A1/en not_active Withdrawn
- 2020-05-13 US US15/931,486 patent/US20200409703A1/en not_active Abandoned
Patent Citations (5)
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 |