WO2020121416A1 - プロセッサ及びパイプライン処理方法 - Google Patents

プロセッサ及びパイプライン処理方法 Download PDF

Info

Publication number
WO2020121416A1
WO2020121416A1 PCT/JP2018/045538 JP2018045538W WO2020121416A1 WO 2020121416 A1 WO2020121416 A1 WO 2020121416A1 JP 2018045538 W JP2018045538 W JP 2018045538W WO 2020121416 A1 WO2020121416 A1 WO 2020121416A1
Authority
WO
WIPO (PCT)
Prior art keywords
instruction
wait
thread
processing
unit
Prior art date
Application number
PCT/JP2018/045538
Other languages
English (en)
French (fr)
Inventor
和大 美馬
仁美 宍戸
Original Assignee
サンケン電気株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by サンケン電気株式会社 filed Critical サンケン電気株式会社
Priority to CN201880099939.4A priority Critical patent/CN113168328B/zh
Priority to JP2020558846A priority patent/JP7298624B2/ja
Priority to PCT/JP2018/045538 priority patent/WO2020121416A1/ja
Publication of WO2020121416A1 publication Critical patent/WO2020121416A1/ja
Priority to US17/344,070 priority patent/US11586444B2/en

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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • 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/46Multiprogramming arrangements
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Definitions

  • the present invention relates to a processor that executes pipeline processing and also executes a wait instruction, and a pipeline processing method.
  • pipeline processing is performed to improve the processing speed.
  • the pipeline process is a process of fetching an instruction, decoding the instruction and executing an operation.
  • the fetch of the instruction A is finished and the decoding is started, the fetch of the instruction B is simultaneously started.
  • the plurality of instructions are stored in an instruction memory configured separately from the processor and are associated with arbitrary addresses.
  • pipeline processing In pipeline processing, the order and operations of subsequent instructions may change depending on the results of executed instructions. At this time, it is necessary to clean up the instructions being processed in the pipeline. This is called pipeline flush.
  • pipeline flush One example of this is when processing a wait (wait) instruction.
  • the pipeline When the wait instruction is executed in the pipeline, the pipeline temporarily stops the operation processing, flushes the pipeline, and waits. That is, the instruction following the wait instruction is not executed until the wait state is released from the outside. Then, when returning (starting) from the wait state, the next instruction is redone from the first “instruction fetch”.
  • FE is a fetch
  • DE is a decode
  • EX is an operation execution
  • WB1 and WB2 are data writing to the register.
  • the fetch of the instruction C1 is finished and the decoding is started, the fetch of the wait instruction WAIT is simultaneously started.
  • the instruction C3 is simultaneously pipeline flushed. Then, the wait is released and the instruction C3 is refetched.
  • a processor that executes the conventional wait instruction described in Patent Document 1 is known.
  • This processor is provided with a wait instruction, and when the wait instruction is executed, it shifts to a wait state state in which processing in the processor is stopped, and when it receives a wait state leave request signal, it leaves the wait state state and the program counter Continue from the instruction pointed to by.
  • An object of the present invention is to provide a processor and a pipeline processing method capable of suppressing the occurrence of time loss and improving the processing speed.
  • a processor is a processor which processes a plurality of threads, executes a pipeline instruction processing including a wait instruction and executing an instruction corresponding to the thread number of the thread, and obtains an execution right.
  • a pipeline processing unit including a fetch unit that fetches the instruction of the thread, a decode unit that decodes the instruction fetched by the fetch unit, and an operation execution unit that executes the instruction decoded by the decode unit; At the time of executing the wait instruction of the thread that has obtained the execution right, an instruction holding unit that holds information on instruction fetch of a processing instruction to be processed next to the wait instruction, and a thread to be executed based on the wait instruction are selected, An execution thread selection unit that executes from decoding of the processing instruction based on the instruction fetch information of the processing instruction held in the instruction holding unit when the wait state from the execution of the wait instruction is released. ..
  • the pipeline processing method of the present invention is a pipeline processing method for processing a plurality of threads, executing a command including a wait command corresponding to the thread number of the thread, and processing in parallel. Fetching the instruction of the obtained thread, decoding the fetched instruction, performing pipeline processing to execute the decoded instruction, and executing the wait instruction of the thread that has obtained the execution right, An instruction holding step of holding the instruction fetch information of the processing instruction to be processed next to the wait instruction in the instruction holding unit, selecting a thread to be executed based on the wait instruction, and checking the wait state from the execution of the wait instruction. And an execution thread selecting step of executing from decoding of the processing instruction based on the information of the instruction fetch of the processing instruction held in the instruction holding unit when it is released.
  • the instruction holding unit holds the instruction fetch information of the processing instruction to be processed next to the wait instruction when the wait instruction of the thread having the execution right is executed.
  • a thread to be executed is selected on the basis of, and when the wait state from the time of execution of the wait instruction is released, the processing instruction is decoded and executed based on the instruction fetch information of the processing instruction held in the instruction holding unit. Therefore, it is possible to suppress the occurrence of time loss and improve the processing speed.
  • FIG. 1 is a diagram showing pipeline processing of a processor when executing a wait instruction according to the present invention.
  • FIG. 2 is a pipeline configuration diagram in the processor according to the first embodiment of the present invention.
  • FIG. 3 is a diagram showing a multi-thread pipeline process of a conventional processor.
  • FIG. 4 is a diagram illustrating a multi-thread pipeline process of the processor according to the first embodiment.
  • FIG. 5 is a pipeline configuration diagram in the processor according to the second embodiment of the present invention.
  • FIG. 6 is a pipeline configuration diagram in the processor according to the third embodiment of the present invention.
  • FIG. 7 is a diagram showing information in a cache line in the processor according to the third embodiment of the present invention.
  • FIG. 8 is a diagram showing pipeline processing of a processor when executing a conventional wait instruction.
  • Pipeline processing processes multiple instructions in parallel.
  • a multi-thread that processes instructions belonging to a plurality of threads will be described, but the present invention can be applied to a thread other than the Malta thread.
  • the instruction C3 next to the wait instruction WAIT is pipeline-flushed and re-fetched when releasing the wait.
  • the instruction C3 is not pipeline-flushed, and the instruction fetch information of the instruction C3 next to the wait instruction WAIT is held at the time of execution EX of the wait instruction WAIT.
  • FIG. 2 is a pipeline configuration diagram in the processor according to the first embodiment of the present invention.
  • the processor according to the first embodiment is a processor that processes a plurality of threads and executes a pipeline process that executes a command including a wait command and corresponding to the thread number of the thread to process in parallel.
  • the pipeline process includes an instruction fetch (F) 1, a decode (D) 2, an operation execution (E) 3, and a result storage (W) 4.
  • F instruction fetch
  • D decode
  • E operation execution
  • W result storage
  • the instruction fetch (F) 1 corresponds to the fetch unit of the present invention, and has a thread (TH) 11, a program counter (PC) 12, an instruction memory 13, and a register 15.
  • the register 15 is provided with a plurality of instruction buffers 14-0 and 14-1 indicated by codes TH0 and TH1.
  • the plurality of instruction buffers 14-0 and 14-1 are provided in the same number corresponding to the plurality of threads TH0 and TH1.
  • the decode (D) 2 corresponds to the decode unit of the present invention, and includes a selector 20, an instruction decoder 21, and a wait control unit 22.
  • the calculation execution (E) 3 corresponds to a calculation execution unit of the present invention, and includes a register reading unit 31, a data reading unit 32, and a calculation control unit 33.
  • the multiple threads TH0 to TH1 are associated with the addresses of multiple instructions. Although the number of threads is two in the first embodiment, three or more threads may be provided.
  • the thread (TH) 11 is the thread number of the fetched instruction.
  • the PC 12 is an address on the instruction memory 13 in which the instruction currently being processed is stored.
  • the instruction memory 13 stores a series of a plurality of instructions belonging to each thread (for example, TH1) corresponding to the address of the PC 12.
  • the plurality of instruction buffers 14-0 to 14-1 correspond to the instruction holding unit of the present invention, are provided in the same number as the number of the plurality of threads TH0 to TH1, and when executing the way instruction of the thread having the execution right, Information on the instruction fetch of the processing instruction to be processed after the wait instruction is held.
  • the selector 20 selects the instruction buffer 14-0 or the instruction buffer 14-1 corresponding to the thread selected by the execution thread selection unit 5.
  • the instruction decoder 21 decodes the instruction stored in the instruction buffer selected by the selector 20, and outputs the decoding result to the wait controller 22.
  • the wait control unit 22 outputs a wait instruction to the thread corresponding to the wait instruction.
  • the thread that inputs the wait instruction outputs the wait instruction to the execution thread selection unit 5.
  • the execution thread selection unit 5 selects a thread to be executed based on the wait instruction, and the processing instruction to be processed next to the wait instruction for the instruction buffer 14-0 or the instruction buffer 14-1 corresponding to the selected thread.
  • the instruction fetch information of is retained.
  • the thread when a cancel event for canceling the wait state is input to the thread, the thread outputs a cancel instruction for canceling the wait state to the execution thread selection unit 5.
  • the execution thread selection unit 5 controls the selector 20 to read the instruction fetch information from the instruction buffer 14-0 or the instruction buffer 14-1 corresponding to the selected thread and output the instruction fetch information to the instruction decoder 21.
  • the instruction decoder 21 executes the decoding of the processing instruction based on the information of the instruction fetch from the instruction buffer 14-0 or the instruction buffer 14-1.
  • the register reading unit 31 reads the data of the TH(11) thread number register stored in the register 15 and outputs it to the register writing unit 41.
  • the data reading unit 32 reads the data of the instruction decoded by the instruction decoder 21 and outputs it to the register writing unit 41 and the operation control unit 33.
  • the arithmetic control unit 33 executes the instruction read and decoded by the data reading unit 32, and outputs the execution result to the register writing unit 41.
  • the adding unit 25 changes the value of the program counter PC12 stored in the register 15 and outputs the change result to the PC12.
  • the result storage (W) 4 has a register writing unit 41 that writes data in a register.
  • FIG. 2 shows the flow from the wait instruction WAIT of the thread being fetched to the return from the wait state.
  • FIG. 4 shows an example in which the wait instruction WAIT of the thread TH1 is fetched.
  • the wait instruction WAIT of the thread TH1 will be described, but the case of the wait instruction WAIT of the thread TH2 is the same as the case of the wait instruction WAIT of the thread TH1.
  • the instruction buffers 14-0 and 14-1 store the code of the instruction fetched from the instruction memory 13.
  • the execution thread selection unit 5 determines the thread TH1 to execute the instruction and outputs the execution instruction to the thread 11 and the selector 20. Accordingly, the instruction buffer 14-1 of the instruction buffers 14-0 and 14-1 is selected by the selector 20, and the instruction code is sent from the instruction buffer 14-1 to the instruction decoder 21.
  • the wait controller 22 sends a wait instruction to the thread TH1.
  • the thread TH1 enters the wait state.
  • the execution thread selection unit 5 selects the thread TH1 based on the wait instruction, and causes the instruction buffer 14-1 corresponding to the thread TH1 to hold the instruction fetch information of the instruction C2 next to the wait instruction WAIT of the thread TH1.
  • the instruction fetch information of the instruction C2 is held even in the wait state.
  • the thread TH1 outputs an execution request to the execution thread selection unit 5.
  • the execution thread selection unit 5 outputs the execution instruction of the instruction C2 of the thread TH1 to the “instruction decode” stage.
  • the instruction C2 next to the wait instruction WAIT is discarded (indicated by X), and when the wait state is released, the processing is executed again from the instruction fetch of the instruction C2. For this reason, there is a time loss of starting over from the fetch again, and the processing speed becomes slow.
  • FIG. 5 is a pipeline configuration diagram in the processor according to the second embodiment of the present invention.
  • the processor of the second embodiment is characterized in that the two instruction buffers 14-0 and 14-1 are provided in a number smaller than the number of the threads TH0 to THN (N ⁇ 3). Further, the instruction fetch 1 is provided with a selector 16.
  • the plurality of threads TH0 to THN have a high priority in the order of thread TH0>thread TH1>>...>thread THN. Allocate instruction buffers only for threads with a high priority. In the second embodiment, the instruction buffers 14-0 and 14-1 are provided only in the threads TH0 and TH1.
  • the selector 16 selects the instruction buffer 14-0 when the thread is the thread TH0, and holds the instruction fetch information of the instruction from the instruction memory 13 in the instruction buffer 14-0.
  • the selector 16 selects the instruction buffer 14-1 and holds the instruction fetch information of the instruction from the instruction memory 13 in the instruction buffer 14-1.
  • the instruction fetch information of the instruction is read from the instruction buffer 14-0, and when the wait of the thread TH1 is released, the instruction fetch information of the instruction is read from the instruction buffer 14-1.
  • the processing of the instruction can be restarted from the “instruction decoding” stage by the decoder 21.
  • the instruction buffers 14-0 and 14-1 are provided in a number smaller than the number of the threads TH0 to THN, so that the increase in hardware can be suppressed.
  • the processor and the pipeline processing method according to the second embodiment also have the same effects as the processor and the pipeline processing method according to the first embodiment.
  • FIG. 6 is a pipeline configuration diagram in the processor according to the third embodiment of the present invention.
  • the processor according to the third embodiment is characterized in that the instruction buffer has a cache structure.
  • the cache structure is equivalent to the second embodiment. Since the present invention only needs to store the fetched instruction next to the wait instruction, the present invention does not need to adopt the set associative method in which a plurality of cache lines are associated.
  • the processor according to the third embodiment includes a storage destination selection circuit 16, a cache (cache memory) 17, an instruction buffer 18, selectors 20a and 20b, and a hit determination unit 23.
  • the cache 17 is composed of a plurality of cache lines 17-1 to 17-n provided side by side, and stores only the instruction fetch information of the instruction next to the wait instruction. Only the instruction fetch information of the instruction next to the wait instruction needs to be stored in the cache lines 17-1 to 17-n, and it is not necessary to store the past instruction in the cache lines 17-1 to 17-n. Therefore, it is sufficient that the number of cache entries is less than or equal to the number of threads.
  • the cache lines 17-1 to 17-n have V, tag, data information (in some cases, information indicating the cached order).
  • V (Valid) indicates whether the instruction is valid or invalid.
  • the tag is information used for data search (selection) when reading data.
  • the thread number corresponding to the stored instruction is written in the tag.
  • the instruction is the fetched instruction following the wait instruction.
  • the storage destination selection circuit 16a corresponds to the selection circuit of the present invention, determines whether to store the fetched instruction in the cache 17, and also determines in which cache line the instruction is stored.
  • the storage destination selection circuit 16a uses the plurality of cache lines 17-1 to 17-1 to 16 based on the valid V when the instruction decoded by the instruction decoder 21 is a wait instruction and the fetched instruction and the decoded instruction are in the same thread.
  • a cache line is selected from 17-n, and the fetched instruction is written in the selected cache line.
  • the cache 17 takes information or a structure that can determine the oldest instruction. By configuring the cache 17 to have a FIFO (First In First Out) structure, the oldest instruction is at the head of the FIFO, so it is easy to determine the oldest instruction.
  • FIFO First In First Out
  • the fetched instruction is stored in the normal instruction buffer 18. This is to avoid polluting the cache 17 with the instruction following the wait instruction.
  • the hit determination unit 23 corresponds to the determination unit of the present invention, and when receiving the execution instruction generated by the wait release from the execution thread selection unit 5b, the wait release is performed based on the valid V and the tag of the cache lines 17-1 to 17-n. Select the next instruction to be decoded.
  • the hit determination unit 23 determines that the instruction fetched from the cache line is valid.
  • a selection signal for reading is output to the selector 20a (first selector).
  • the selector 20a reads the instruction fetched from the cache line according to the selection signal.
  • the hit determination unit 23 also outputs a hit signal to the selector 20b, which indicates that the cache 17 has an instruction to be released from wait.
  • the selector 20b selects the cache 17 based on the hit signal, that is, when the cache 17 is hit, it outputs the instruction from the cache lines 17-1 to 17-n of the cache 17 to the instruction decoder 21.
  • the selector 20b selects the instruction buffer 18. In this case, the instruction from the instruction memory 13 is fetched again, the fetched instruction is stored in the instruction buffer 18, and then the instruction is output to the instruction decoder 21.
  • the processor and the pipeline processing method of the third embodiment As described above, according to the processor and the pipeline processing method of the third embodiment, the same effect as that of the processor and the pipeline processing method of the second embodiment can be obtained. Since the cache 17 is used, the flexibility is higher than that in the second embodiment.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本発明は、複数のスレッドを処理し、ウェイト命令を含み前記スレッドのスレッド番号に対応した命令を実行して並行に処理するパイプライン処理を行うプロセッサである。パイプライン処理部1~4は、実行権を得た前記スレッドの前記命令をフェッチするフェッチ部と前記フェッチ部でフェッチされた命令をデコードするデコード部と前記デコード部でデコードされた命令を実行する演算実行部とを備える。命令保持部14-0,14-1は、前記実行権を得た前記スレッドの前記ウェイト命令の実行時に、前記ウェイト命令の次に処理する処理命令の命令フェッチの情報を保持する。実行スレッド選択部5は、ウェイト指示に基づき実行すべきスレッドを選択し、前記ウェイト命令の実行時からのウェイト状態が解除された時に、前記命令保持部に保持された前記処理命令の前記命令フェッチの情報に基づき前記処理命令のデコードから実行する。

Description

プロセッサ及びパイプライン処理方法
 本発明は、パイプライン処理するとともに、ウェイト命令を実行するプロセッサ及びパイプライン処理方法に関する。
 プロセッサでは、処理速度を向上するためにパイプライン処理が行われている。パイプライン処理は、命令をフェッチし、命令をデコードして演算を実行する処理であり、命令Aのフェッチが終わってデコードを開始すると、同時に命令Bのフェッチを開始する処理である。
 即ち、パイプライン処理においては、複数の命令を並行して処理することが行われている。複数の命令は、プロセッサとは別に構成される命令メモリに格納され、任意のアドレスと結び付けられる。
 パイプライン処理では、実行された命令の結果によっては、その後の命令順や操作が変わることがある。このとき、パイプライン内で処理されている命令を一掃する作業が必要である。これをパイプラインフラッシュと呼ぶ。この例の一つがウェイト(待機)命令を処理する場合である。
 パイプラインでウェイト命令を実行すると、パイプラインは演算の処理を一旦、停止し、パイプラインフラッシュして、待機する。即ち、ウェイト命令の次の命令は、ウェイト状態が外部から解除されるまで実行しない。そして、ウェイト状態から復帰(起動)する時に、次の命令を最初の「命令フェッチ」からやり直す。
 次に、図8を参照しながら、従来のウェイト命令実行時のプロセッサのパイプライン処理を説明する。図8において、FEは、フェッチであり、DEはデコードであり、EXは、演算実行であり、WB1,WB2は、データのレジスタへの書き込みである。
 例えば、命令C1のフェッチが終わってデコードを開始すると、同時にウェイト命令WAITのフェッチを開始する。次に、ウェイト命令WAITのデコードを開始すると、同時に命令C3をパイプラインフラッシュする。そして、ウェイトを解除して、命令C3を再フェッチしている。
 また、特許文献1に記載された従来のウェイト命令を実行するプロセッサが知られている。このプロセッサは、ウェイト命令を備え、ウェイト命令を実行すると、プロセッサ内の処理を停止させる状態であるウェイトステート状態に移行し、ウェイトステート離脱要求信号を受信すると、ウェイトステート状態から離脱し、プログラムカウンタが指し示す命令から引き続き実行する。
特開2008-299740号公報
 しかしながら、図8に示すパイプライン処理では、ウェイト命令を実行すると、演算の処理を停止して待機し、ウェイト状態から復帰時に、次の命令を命令フェッチからやり直していた。このため、タイムロスが生じ、処理速度が遅くなる。
 本発明の課題は、タイムロスが生じることを抑制し、処理速度を向上させることができるプロセッサ及びパイプライン処理方法を提供することにある。
 本発明に係るプロセッサは、複数のスレッドを処理し、ウェイト命令を含み前記スレッドのスレッド番号に対応した命令を実行して並行に処理するパイプライン処理を行うプロセッサであって、実行権を得た前記スレッドの前記命令をフェッチするフェッチ部と前記フェッチ部でフェッチされた命令をデコードするデコード部と前記デコード部でデコードされた命令を実行する演算実行部とを備えたパイプライン処理部と、前記実行権を得た前記スレッドの前記ウェイト命令の実行時に、前記ウェイト命令の次に処理する処理命令の命令フェッチの情報を保持する命令保持部と、ウェイト指示に基づき実行すべきスレッドを選択し、前記ウェイト命令の実行時からのウェイト状態が解除された時に、前記命令保持部に保持された前記処理命令の前記命令フェッチの情報に基づき前記処理命令のデコードから実行する実行スレッド選択部とを備える。
 また、本発明のパイプライン処理方法は、複数のスレッドを処理し、ウェイト命令を含み前記スレッドのスレッド番号に対応した命令を実行して並行に処理するパイプライン処理方法であって、実行権を得た前記スレッドの前記命令をフェッチし、フェッチされた命令をデコードし、デコードされた命令を実行するパイプライン処理を行うステップと、前記実行権を得た前記スレッドの前記ウェイト命令の実行時に、前記ウェイト命令の次に処理する処理命令の命令フェッチの情報を命令保持部に保持する命令保持ステップと、ウェイト指示に基づき実行すべきスレッドを選択し、前記ウェイト命令の実行時からのウェイト状態が解除された時に、前記命令保持部に保持された前記処理命令の前記命令フェッチの情報に基づき前記処理命令のデコードから実行する実行スレッド選択ステップとを備える。
 本発明によれば、命令保持部は、実行権を得たスレッドのウェイト命令の実行時に、ウェイト命令の次に処理する処理命令の命令フェッチの情報を保持し、実行スレッド選択部は、ウェイト指示に基づき実行すべきスレッドを選択し、ウェイト命令の実行時からのウェイト状態が解除された時に、命令保持部に保持された処理命令の命令フェッチの情報に基づき処理命令のデコードから実行する。従って、タイムロスが生じることを抑制し、処理速度を向上させることができる。
図1は、本発明のウェイト命令実行時のプロセッサのパイプライン処理を示す図である。 図2は、本発明の実施例1に係るプロセッサ内のパイプライン構成図である。 図3は、従来のプロセッサのマルチスレッドのパイプライン処理を示す図である。 図4は、実施例1に係るプロセッサのマルチスレッドのパイプライン処理を示す図である。 図5は、本発明の実施例2に係るプロセッサ内のパイプライン構成図である。 図6は、本発明の実施例3に係るプロセッサ内のパイプライン構成図である。 図7は、本発明の実施例3に係るプロセッサ内のキャッシュライン内の情報を示す図である。 図8は、従来のウェイト命令実行時のプロセッサのパイプライン処理を示す図である。
 以下、本発明の実施の形態のプロセッサ及びパイプライン処理方法について、図面を参照しながら詳細に説明する。
 パイプライン処理は、複数の命令を並行して処理する。以下の実施例では、複数のスレッドに属する命令を処理するマルチスレッドについて説明するが、本発明は、マルタスレッド以外にも適用可能である。
 (本発明の概要)
 まず、図1に示す本発明のウェイト命令実行時のプロセッサのパイプライン処理を用いて、本発明の概要を説明する。なお、従来の図8に示すパイプライン処理と本発明の図1に示すパイプライン処理とを対比させて説明する。
 従来の図8に示すパイプライン処理では、ウェイト命令WAITの次の命令C3をパイプラインフラッシュし、ウェイト解除時には再フェッチを行っていた。
 これに対して、本発明は、図1に示すように、命令C3をパイプラインフラッシュせず、ウェイト命令WAITの実行EX時に、ウェイト命令WAITの次の命令C3の命令フェッチの情報を保持する。
 そして、ウェイト命令WAITの実行EX時からのウェイト状態が解除された時に、保持された命令C3の命令フェッチの情報に基づき命令C3のデコードから処理を実行する。
 従って、タイムロスが生じることを抑制し、処理速度を向上させることができる。また、ウェイト状態からの起動を早くすることができる。
 (実施例1)
 次に、本発明のプロセッサ及びパイプライン処理方法の実施例について説明する。図2は、本発明の実施例1に係るプロセッサ内のパイプライン構成図である。実施例1に係るプロセッサは、複数のスレッドを処理し、ウェイト命令を含み前記スレッドのスレッド番号に対応した命令を実行して並行に処理するパイプライン処理を行うプロセッサである。パイプライン処理は、命令フェッチ(F)1、デコード(D)2、演算実行(E)3、結果格納(W)4からなる。例えば、命令Aのフェッチが終わってデコードを開始すると、同時に命令Bのフェッチを開始する処理である。
 命令フェッチ(F)1は、本発明のフェッチ部に相当し、スレッド(TH)11、プログラムカウンタ(PC)12、命令メモリ13、レジスタ15を有する。レジスタ15には、コードTH0,TH1で示される複数の命令バッファ14-0,14-1が設けられる。複数の命令バッファ14-0,14-1は、複数のスレッドTH0,TH1と対応して同数個設けられている。
 デコード(D)2は、本発明のデコード部に相当し、セレクタ20、命令デコーダ21、ウェイト制御部22を備える。演算実行(E)3は、本発明の演算実行部に相当し、レジスタ読み出し部31、データ読み出し部32、演算制御部33を備える。
 複数のスレッドTH0~TH1は、複数の命令のアドレスと結び付けられている。なお、実施例1では、スレッドを2個としたが、スレッドは、3個以上設けても良い。
 命令フェッチ(F)1において、スレッド(TH)11は、フェッチされた命令のスレッド番号である。PC12は、現在処理中の命令が格納されている命令メモリ13上のアドレスである。命令メモリ13は、PC12のアドレスに対応して各スレッド(例えば、TH1)に属する一連の複数の命令を格納する。
 複数の命令バッファ14-0~14-1は、本発明の命令保持部に対応し、複数のスレッドTH0~TH1の個数と同数設けられ、実行権を得たスレッドのウェイ命令を実行する時に、ウェイト命令の次に処理する処理命令の命令フェッチの情報を保持する。
 セレクタ20は、実行スレッド選択部5で選択されたスレッドに対応する命令バッファ14-0又は命令バッファ14-1を選択する。
 命令デコーダ21は、セレクタ20によって選択された命令バッファに格納された命令をデコードして、デコード結果をウェイト制御部22に出力する。ウェイト制御部22は、命令デコーダ21からのデコード結果がウェイト命令である場合に、ウェイト命令に対応するスレッドに対してウェイト指示を出力する。
 ウェイト指示を入力したスレッドは、実行スレッド選択部5に対してウェイト指示を出力する。実行スレッド選択部5は、ウェイト指示に基づき実行すべきスレッドを選択し、選択されたスレッドに対応する命令バッファ14-0又は命令バッファ14-1に対して、ウェイト命令の次に処理する処理命令の命令フェッチの情報を保持させる。
 また、スレッドに対してウェイト状態を解除する解除イベントが入力されたとき、スレッドは、実行スレッド選択部5に対してウェイト状態を解除するための解除指示を出力する。
 実行スレッド選択部5は、セレクタ20を制御することにより、選択されたスレッドに対応する命令バッファ14-0又は命令バッファ14-1から命令フェッチ情報を読み出して、命令フェッチ情報を命令デコーダ21に出力させる。
 命令デコーダ21は、命令バッファ14-0又は命令バッファ14-1からの命令フェッチの情報に基づき処理命令のデコードから実行する。
 レジスタ読み出し部31は、レジスタ15に格納されたTH(11)スレッド番号のレジスタのデータを読み出してレジスタ書き込み部41に出力する。データ読み出し部32は、命令デコーダ21でデコードされた命令のデータを読み出してレジスタ書き込み部41と演算制御部33に出力する。演算制御部33は、データ読み出し部32で読み出され且つデコードされた命令を実行し、実行結果をレジスタ書き込み部41に出力する。
 加算部25は、レジスタ15に格納されたプログラムカウンタPC12の値を変更して、変更結果をPC12に出力する。結果格納(W)4は、データをレジスタに書き込むレジスタ書き込み部41を有する。
 次に、このように構成された実施例1のプロセッサ及びパイプライン処理方法の動作を、図2及び図4を参照しながら詳細に説明する。図2では、スレッドのウェイト命令WAITがフェッチされてから、ウェイト状態から復帰するまでの流れを示している。図4では、スレッドTH1のウェイト命令WAITがフェッチされる例を示している。ここでは、スレッドTH1のウェイト命令WAITについて説明するが、スレッドTH2のウェイト命令WAITの場合もスレッドTH1のウェイト命令WAITの場合と同じある。
 まず、命令バッファ14-0,14-1には、命令メモリ13からフェッチされた命令のコードが格納される。実行スレッド選択部5は、命令を実行すべきスレッドTH1を決定して、実行指示をスレッド11とセレクタ20とに出力する。これに従って、命令バッファ14-0,14-1の内の命令バッファ14-1がセレクタ20により選択されて、命令バッファ14-1から命令デコーダ21に命令コードが送られる。
 命令デコーダ21により命令がウェイト命令WAITであると判定されると、ウェイト制御部22からスレッドTH1にウェイト指示が送られる。スレッドTH1は、ウェイト状態になる。実行スレッド選択部5は、ウェイト指示に基づきスレッドTH1を選択し、スレッドTH1に対応する命令バッファ14-1に、スレッドTH1のウェイト命令WAITの次の命令C2の命令フェッチ情報を保持させる。ウェイト状態でも、命令C2の命令フェッチ情報は保持される。
 次に、ウェイト解除のための外部信号がスレッドTH1に届くと、スレッドTH1は、実行要求を実行スレッド選択部5に出力する。実行スレッド選択部5は、スレッドTH1の命令C2の実行指示を「命令デコード」ステージに出力する。
 この実行指示によって、ウェイトが解除されたスレッドTH1の命令バッファ14-1に保持された命令C2の命令フェッチ情報が読み出されて、セレクタ20を介して命令デコーダ21に命令C2の命令フェッチ情報が送られる。これにより、命令デコーダ21による「命令デコード」ステージから命令C2の処理を再開することができる。
 従って、再フェッチは不要となる。これにより、命令をパイプラインフラッシュしてしまい、もう一度フェッチからやり直すというタイムロスをなくすことができる。このため、タイムロスの発生を抑制し、処理速度を向上させることができる。また、ウェイト状態からの起動を早くすることができる。
 次に、図3を参照しながら、従来のマルチスレッドのパイプライン処理を説明する。ウェイト命令WAITの次の命令C2は、捨てられ(×で示した。)、ウェイト状態が解除された時には、再び、命令C2の命令フェッチから処理を実行している。このため、もう一度フェッチからやり直すというタイムロスが発生し、処理速度が遅くなる。
 (実施例2)
 図5は、本発明の実施例2に係るプロセッサ内のパイプライン構成図である。実施例2のプロセッサにおいて、2つの命令バッファ14-0,14-1が、複数のスレッドTH0~THN(N≧3)の個数よりも少ない個数設けられることを特徴とする。また、命令フェッチ1にセレクタ16を設けている。
 複数のスレッドTH0~THNは、スレッドTH0>スレッドTH1>・・・>スレッドTHNの順で優先順位が高い。優先順位が高いスレッドにのみ命令バッファを割り当てる。実施例2では、スレッドTH0,TH1のみに命令バッファ14-0,14-1が設けられている。
 セレクタ16は、スレッドがスレッドTH0である場合には、命令バッファ14-0を選択し、命令メモリ13からの命令の命令フェッチ情報を命令バッファ14-0に保持する。セレクタ16は、スレッドがスレッドTH1である場合には、命令バッファ14-1を選択し、命令メモリ13からの命令の命令フェッチ情報を命令バッファ14-1に保持する。
 次に、スレッドTH0のウェイトを解除する時には、命令バッファ14-0から命令の命令フェッチ情報を読み出し、スレッドTH1のウェイトを解除する時には、命令バッファ14-1から命令の命令フェッチ情報を読み出し、命令デコーダ21による「命令デコード」ステージから命令の処理を再開することができる。
 これに対して、スレッドTH0,TH1以外のスレッドTH2~THNのウェイトを解除する時には、再度、命令フェッチを行う。
 このように命令バッファ14-0,14-1が、複数のスレッドTH0~THNの個数よりも少ない個数設けられるので、ハードウェア増加を抑制することができる。また、実施例2のプロセッサ及びパイプライン処理方法においても、実施例1のプロセッサ及びパイプライン処理方法と同様な効果が得られる。
 (実施例3)
 図6は、本発明の実施例3に係るプロセッサ内のパイプライン構成図である。実施例3に係るプロセッサは、命令バッファをキャッシュ構造で形成したことを特徴とする。キャッシュ構造は、ダイレクトマップ構造の場合には、前記実施例2相当である。本発明は、ウェイト命令の次のフェッチされた命令のみを格納するだけでよいので、本発明は、複数のキャッシュラインを対応させたセットアソシアティブ方式を採る必要はない。
 全部のキャッシュラインにタグの内容とアクセスするアドレスとが一致しているかどうかを検査する検査回路を設け、検査回路で並列に検査するフルアソシアティブ方式を採用する場合が本発明に適している。
 実施例3に係るプロセッサは、格納先選択回路16、キャッシュ(キャッシュメモリ)17、命令バッファ18、セレクタ20a,20b、ヒット判定部23を備える。
 キャッシュ17は、併設された複数のキャッシュライン17-1~17-nから構成されており、ウェイト命令の次の命令の命令フェッチ情報のみを格納する。ウェイト命令の次の命令の命令フェッチ情報のみをキャッシュライン17-1~17-nに格納すればよく、過去の命令をキャッシュライン17-1~17-nに格納しておく必要がない。このため、キャッシュエントリ数は、スレッド数以下であれば十分である。
 キャッシュライン17-1~17-nは、図7に示すように、V、タグ、データの情報、(場合によってはキャッシュされた順番を示す情報)を有する。V(Valid、バリッド)は、命令が有効か無効かを示す。Vは、格納先選択回路16により選択され、命令がキャッシュライン17-1~17-nに書き込まれたときに有効(V=1)となる。Vは、ウェイト命令からの解除により、本エントリから命令が読み出されたときに無効(V=0)となる。タグは、データ読み出し時のデータ検索(選択)に使用される情報である。ここでは、格納される命令に対応するスレッド番号がタグに書き込まれる。命令は、ウェイト命令の次のフェッチされた命令である。
 格納先選択回路16aは、本発明の選択回路に相当し、フェッチした命令をキャッシュ17へ格納するかどうかを判定し、また、どのキャッシュラインへ命令を格納するかを判定する。格納先選択回路16aは、命令デコーダ21でデコードされた命令がウェイト命令で且つフェッチされる命令とデコードされる命令が同一スレッドにある場合で且つバリッドVに基づき、複数のキャッシュライン17-1~17-nの中からキャッシュラインを選択し、選択されたキャッシュラインにフェッチされた命令を書き込む。
 キャッシュライン17-1~17-nの中に、V=0のキャッシュラインがある場合には、当該キャッシュラインにフェッチされた命令を書き込み、V=0のキャッシュラインがない場合には、最も古い命令を追い出して追い出したキャッシュラインにフェッチされた命令を書き込む。キャッシュ17は、最も古い命令を判定できる情報又は構造を採る。キャッシュ17をFIFO(First In First Out)構造にすることにより、最も古い命令は、FIFOの先頭であることから、最も古い命令の判定は、容易である。
 デコードされた命令がウェイト命令でない場合には、フェッチされた命令は通常の命令バッファ18に格納される。これは、ウェイト命令の次の命令によってキャッシュ17を汚染することを避けるためである。
 ヒット判定部23は、本発明の判定部に相当し、実行スレッド選択部5bからウェイト解除によって発生する実行指示を受け取ると、キャッシュライン17-1~17-nのバリッドV及びタグに基づきウェイト解除直後のデコードすべき命令を選択する。 
 ヒット判定部23は、キャッシュライン17-1~17-nの命令が有効(V=1)で、且つタグとウェイト解除すべきスレッドが一致する場合には、当該キャッシュラインからフェッチされた命令を読み出すための選択信号をセレクタ20a(第1セレクタ)に出力する。セレクタ20aは、選択信号に従って、当該キャッシュラインからフェッチされた命令を読み出す。
 また、ヒット判定部23は、同時にキャッシュ17に、ウェイト解除すべき命令が存在することを示すためのヒット信号をセレクタ20bに出力する。セレクタ20bは、ヒット信号に基づきキャッシュ17を選択する、即ち、キャッシュ17にヒットすれば、キャッシュ17のキャッシュライン17-1~17-nからの命令を命令デコーダ21に出力する。
 一方、ヒット信号がヒット判定部23からセレクタ20bに送られない場合、即ち、キャッシュメモリ17にヒットしない場合には、セレクタ20bは、命令バッファ18を選択する。この場合には、再度、命令メモリ13からの命令をフェッチし、命令バッファ18にフェッチした命令を格納し、その後、命令デコーダ21に当該命令を出力する。
 このように実施例3のプロセッサ及びパイプライン処理方法によれば、実施例2のプロセッサ及びパイプライン処理方法と同様な効果が得られる。また、キャッシュ17にしたので、実施例2のときよりもフレキシビリティが高くなる。
1 命令フェッチ(F)
2 デコード(D)
3 演算実行(E)
4 結果格納(W)
5,5a,5b 実行スレッド選択部
11 スレッド(TH)
12 プログラムカウンタ(PC)
13 命令メモリ
14-0,14-1 命令バッファ
15 レジスタ
16 セレクタ
16a 格納先選択回路
17 キャッシュメモリ
17-1~17-n キャッシュライン
18 命令バッファ
20,20a,20b セレクタ
21 命令デコーダ
22 ウェイト制御部
23 ヒット判定部
25 加算部
31レジスタ読み出し部
32 データ読み出し部
33 演算制御部
41 レジスタ書き込み部
TH0~THN スレッド
C1~C3 命令

Claims (10)

  1.  複数のスレッドを処理し、ウェイト命令を含み前記スレッドのスレッド番号に対応した命令を実行して並行に処理するパイプライン処理を行うプロセッサであって、
     実行権を得た前記スレッドの前記命令をフェッチするフェッチ部と前記フェッチ部でフェッチされた命令をデコードするデコード部と前記デコード部でデコードされた命令を実行する演算実行部とを備えたパイプライン処理部と、
     前記実行権を得た前記スレッドの前記ウェイト命令の実行時に、前記ウェイト命令の次に処理する処理命令の命令フェッチの情報を保持する命令保持部と、
     ウェイト指示に基づき実行すべきスレッドを選択し、前記ウェイト命令の実行時からのウェイト状態が解除された時に、前記命令保持部に保持された前記処理命令の前記命令フェッチの情報に基づき前記処理命令のデコードから実行する実行スレッド選択部と、
    を備えるプロセッサ。
  2.  前記命令保持部は、前記複数のスレッドの個数と同数設けられる請求項1記載のプロセッサ。
  3.  前記デコード部でデコードされた結果が前記ウェイト命令である場合に、前記ウェイト命令に対応するスレッドに対して前記ウェイト指示を出力するウェイト制御部を備え、
     前記実行スレッド選択部は、前記ウェイト制御部からの前記ウェイト指示に基づき実行すべきスレッドを選択し、選択された前記スレッドに対応する前記命令保持部に前記処理命令の前記命令フェッチの情報を保持させ、選択された前記スレッドに対して前記ウェイト状態を解除する指示が入力されたとき、選択された前記スレッドに対応する前記命令保持部に保持された前記処理命令の前記命令フェッチの情報に基づき前記処理命令のデコードから実行する請求項2記載のプロセッサ。
  4.  前記命令保持部は、前記複数のスレッドの個数よりも少ない個数設けられ、前記複数のスレッドの内の優先順位が高い前記スレッドにのみ前記命令保持部を割り当てる請求項1記載のプロセッサ。
  5.  前記命令保持部は、前記処理命令が有効か無効かを示すバリッドと前記処理命令に対応するスレッド番号を示すタグとフェッチされた前記処理命令との情報を格納する複数のキャッシュラインを有するキャッシュからなり、
     前記デコード部でデコードされた命令が前記ウェイト命令で且つフェッチされた前記処理命令とデコードされた前記処理命令とが同一のスレッドにある場合で且つ前記バリッドに基づき前記複数のキャッシュラインのいずれかのキャッシュラインを選択し、選択されたキャッシュラインに前記フェッチされた前記処理命令を書き込む選択回路と、
     前記実行スレッド選択部からウェイト解除すべきスレッドの実行指示を受けると、前記タグと前記ウェイト解除すべきスレッドとが一致する場合で且つ前記バリッドに基づき前記選択されたキャッシュラインから前記フェッチされた前記処理命令を読み出して前記デコード部に出力する判定部と、
    を備える請求項1記載のプロセッサ。
  6.  複数のスレッドを処理し、ウェイト命令を含み前記スレッドのスレッド番号に対応した命令を実行して並行に処理するパイプライン処理方法であって、
     実行権を得た前記スレッドの前記命令をフェッチし、フェッチされた命令をデコードし、デコードされた命令を実行するパイプライン処理を行うステップと、
     前記実行権を得た前記スレッドの前記ウェイト命令の実行時に、前記ウェイト命令の次に処理する処理命令の命令フェッチの情報を命令保持部に保持する命令保持ステップと、
     ウェイト指示に基づき実行すべきスレッドを選択し、前記ウェイト命令の実行時からのウェイト状態が解除された時に、前記命令保持部に保持された前記処理命令の前記命令フェッチの情報に基づき前記処理命令のデコードから実行する実行スレッド選択ステップと、
    を備えるパイプライン処理方法。
  7.  前記命令保持部は、前記複数のスレッドの個数と同数設けられる請求項6記載のパイプライン処理方法。
  8.  前記デコードされた結果が前記ウェイト命令である場合に、前記ウェイト命令に対応するスレッドに対して前記ウェイト指示を出力するウェイト制御ステップを備え、
     前記実行スレッド選択ステップは、前記ウェイト指示に基づきスレッドを選択し、選択された前記スレッドに対応する前記命令保持部に前記処理命令の前記命令フェッチの情報を保持させ、選択された前記スレッドに対して前記ウェイト状態を解除する指示が入力されたとき、選択された前記スレッドに対応する前記命令保持部に保持された前記処理命令の前記命令フェッチの情報に基づき前記処理命令のデコードから実行する請求項7記載のパイプライン処理方法。
  9.  前記命令保持部は、前記複数のスレッドの個数よりも少ない個数設けられ、前記複数のスレッドの内の優先順位が高い前記スレッドにのみ前記命令保持部を割り当てる請求項6記載のパイプライン処理方法。
  10.  前記命令保持部は、前記処理命令が有効か無効かを示すバリッドと前記処理命令に対応するスレッド番号を示すタグとフェッチされた前記処理命令との情報を格納する複数のキャッシュラインを有するキャッシュからなり、
     前記デコードされた命令が前記ウェイト命令で且つフェッチされた前記処理命令とデコードされた前記処理命令とが同一のスレッドにある場合で且つ前記バリッドに基づき前記複数のキャッシュラインのいずれかのキャッシュラインを選択し、選択されたキャッシュラインに前記フェッチされた前記処理命令を書き込む選択ステップと、
     前記実行スレッド選択ステップからウェイト解除すべきスレッドの実行指示を受けると、前記タグと前記ウェイト解除すべきスレッドとが一致する場合で且つ前記バリッドに基づき前記選択されたキャッシュラインから前記フェッチされた前記処理命令を読み出して前記デコード部に出力する判定ステップと、
    を備える請求項6記載のパイプライン処理方法。
PCT/JP2018/045538 2018-12-11 2018-12-11 プロセッサ及びパイプライン処理方法 WO2020121416A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201880099939.4A CN113168328B (zh) 2018-12-11 2018-12-11 处理器和管线处理方法
JP2020558846A JP7298624B2 (ja) 2018-12-11 2018-12-11 プロセッサ及びパイプライン処理方法
PCT/JP2018/045538 WO2020121416A1 (ja) 2018-12-11 2018-12-11 プロセッサ及びパイプライン処理方法
US17/344,070 US11586444B2 (en) 2018-12-11 2021-06-10 Processor and pipeline processing method for processing multiple threads including wait instruction processing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2018/045538 WO2020121416A1 (ja) 2018-12-11 2018-12-11 プロセッサ及びパイプライン処理方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US17/344,070 Continuation US11586444B2 (en) 2018-12-11 2021-06-10 Processor and pipeline processing method for processing multiple threads including wait instruction processing

Publications (1)

Publication Number Publication Date
WO2020121416A1 true WO2020121416A1 (ja) 2020-06-18

Family

ID=71077172

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2018/045538 WO2020121416A1 (ja) 2018-12-11 2018-12-11 プロセッサ及びパイプライン処理方法

Country Status (4)

Country Link
US (1) US11586444B2 (ja)
JP (1) JP7298624B2 (ja)
CN (1) CN113168328B (ja)
WO (1) WO2020121416A1 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0855033A (ja) * 1994-08-16 1996-02-27 Nec Corp 情報処理装置
JPH10124316A (ja) * 1996-08-27 1998-05-15 Matsushita Electric Ind Co Ltd 複数の命令流を独立に処理し、命令流単位に処理性能を柔軟に制御するマルチスレッドプロセッサ
JPH10283203A (ja) * 1997-03-28 1998-10-23 Internatl Business Mach Corp <Ibm> マルチスレッド・プロセッサにおけるスレッド切換え待ち時間を減少させる方法および装置
JPH11249907A (ja) * 1998-02-27 1999-09-17 Nec Kyushu Ltd マイクロコンピュータ
JP2010086131A (ja) * 2008-09-30 2010-04-15 Nec Electronics Corp マルチスレッドプロセッサ及びその割り込み処理方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1291765B1 (en) * 1996-08-27 2009-12-30 Panasonic Corporation Multithreaded processor for processing multiple instruction streams independently of each other by flexibly controlling throughput in each instruction stream
US6493741B1 (en) * 1999-10-01 2002-12-10 Compaq Information Technologies Group, L.P. Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit
US8041754B1 (en) * 2000-01-22 2011-10-18 Intel Corporation Establishing thread priority in a processor or the like
US7853777B2 (en) * 2005-02-04 2010-12-14 Mips Technologies, Inc. Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions
JP2008299740A (ja) 2007-06-01 2008-12-11 Seiko Epson Corp 非同期マイクロプロセッサ、電子情報装置
CN101847127B (zh) * 2010-06-18 2012-01-25 福建星网锐捷网络有限公司 一种内存管理方法及装置
US8719507B2 (en) * 2012-01-04 2014-05-06 International Business Machines Corporation Near neighbor data cache sharing
US9778949B2 (en) * 2014-05-05 2017-10-03 Google Inc. Thread waiting in a multithreaded processor architecture
JP6384380B2 (ja) * 2015-03-27 2018-09-05 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US11360773B2 (en) * 2020-06-22 2022-06-14 Microsoft Technology Licensing, Llc Reusing fetched, flushed instructions after an instruction pipeline flush in response to a hazard in a processor to reduce instruction re-fetching

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0855033A (ja) * 1994-08-16 1996-02-27 Nec Corp 情報処理装置
JPH10124316A (ja) * 1996-08-27 1998-05-15 Matsushita Electric Ind Co Ltd 複数の命令流を独立に処理し、命令流単位に処理性能を柔軟に制御するマルチスレッドプロセッサ
JPH10283203A (ja) * 1997-03-28 1998-10-23 Internatl Business Mach Corp <Ibm> マルチスレッド・プロセッサにおけるスレッド切換え待ち時間を減少させる方法および装置
JPH11249907A (ja) * 1998-02-27 1999-09-17 Nec Kyushu Ltd マイクロコンピュータ
JP2010086131A (ja) * 2008-09-30 2010-04-15 Nec Electronics Corp マルチスレッドプロセッサ及びその割り込み処理方法

Also Published As

Publication number Publication date
JPWO2020121416A1 (ja) 2021-10-28
JP7298624B2 (ja) 2023-06-27
CN113168328B (zh) 2024-01-26
US20210294609A1 (en) 2021-09-23
US11586444B2 (en) 2023-02-21
CN113168328A (zh) 2021-07-23

Similar Documents

Publication Publication Date Title
JP6011194B2 (ja) 演算処理装置及び演算処理装置の制御方法
US9529595B2 (en) Branch processing method and system
US9361110B2 (en) Cache-based pipline control method and system with non-prediction branch processing using a track table containing program information from both paths of a branch instruction
US20050198480A1 (en) Apparatus and method of controlling instruction fetch
US7836253B2 (en) Cache memory having pipeline structure and method for controlling the same
US20040098540A1 (en) Cache system and cache memory control device controlling cache memory having two access modes
US11099849B2 (en) Method for reducing fetch cycles for return-type instructions
US20140325188A1 (en) Simultaneous finish of stores and dependent loads
CN112384894A (zh) 存储偶然的分支预测以减少错误预测恢复的时延
US20100106910A1 (en) Cache memory and method of controlling the same
JP3683248B2 (ja) 情報処理装置及び情報処理方法
WO2020121416A1 (ja) プロセッサ及びパイプライン処理方法
US10853081B2 (en) Processor and pipelining method
JP4621292B2 (ja) キャッシュ制御装置およびキャッシュ制御方法
JP5902208B2 (ja) データ処理装置
JP2008071061A (ja) 情報処理装置
JP6384380B2 (ja) 演算処理装置及び演算処理装置の制御方法
US8433855B2 (en) Serializing translation lookaside buffer access around address translation parameter modification
JP6016689B2 (ja) 半導体装置
WO2012132214A1 (ja) プロセッサ及びその命令処理方法
JP4111645B2 (ja) キャッシュミスした後のメモリバスアクセス制御方式
JP2000181711A (ja) 命令フェッチのキャンセル方式
JPH0760387B2 (ja) 情報処理装置
JPH01263830A (ja) 情報処理装置
WO2008038373A1 (fr) Processeur pour augmenter la vitesse de prédiction de branchement

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 18942775

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2020558846

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 18942775

Country of ref document: EP

Kind code of ref document: A1