KR20050084661A - In order multithreading recycle and dispatch mechanism - Google Patents

In order multithreading recycle and dispatch mechanism Download PDF

Info

Publication number
KR20050084661A
KR20050084661A KR1020057007909A KR20057007909A KR20050084661A KR 20050084661 A KR20050084661 A KR 20050084661A KR 1020057007909 A KR1020057007909 A KR 1020057007909A KR 20057007909 A KR20057007909 A KR 20057007909A KR 20050084661 A KR20050084661 A KR 20050084661A
Authority
KR
South Korea
Prior art keywords
instruction
dependency
thread
long delay
dispatch
Prior art date
Application number
KR1020057007909A
Other languages
Korean (ko)
Other versions
KR100819232B1 (en
Inventor
쿠르트 알란 페이스테
데이비드 쉬피
노르스트란드 쥬니어 알버트 제임스 반
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20050084661A publication Critical patent/KR20050084661A/en
Application granted granted Critical
Publication of KR100819232B1 publication Critical patent/KR100819232B1/en

Links

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, 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution

Abstract

A system and method is provided for improving throughput of an in-order multithreading processor. A dependent instruction is identified to follow at least one long latency instruction with register dependencies from a first thread. The dependent instruction is recycled by providing it to an earlier pipeline stage. The dependent instruction is delayed at dispatch. The completion of the long latency instruction is detected from the first thread. An alternate thread is allowed to issue one or more instructions while the long latency instruction is being executed.

Description

순차 멀티스레딩 프로세서, 순차 멀티스레딩 프로세서의 처리량 향상 방법 및 컴퓨터 프로그램 제품{IN ORDER MULTITHREADING RECYCLE AND DISPATCH MECHANISM}Sequential Multithreading Processor, How to Improve Throughput, and Computer Program Products for Sequential Multithreading Processors {IN ORDER MULTITHREADING RECYCLE AND DISPATCH MECHANISM}

본 발명은 순차 프로세서(in-order processor)의 처리량(throughput) 향상에 관한 것으로서, 보다 구체적으로는 순차 프로세서에서의 멀티스레딩 기법(multithreading techniques)에 관한 것이다.FIELD OF THE INVENTION The present invention relates to improving throughput of in-order processors, and more particularly to multithreading techniques in sequential processors.

"멀티스레딩"은 컴퓨터 시스템 내에서 사용되어 다수의 스레드(threads)가 공유 데이터 흐름(shared dataflow)을 계속 진행할 수 있게 하는 통상적인 기법이다. 단일 프로세서 시스템 내에서 사용된다면, 멀티스레딩은 단일 프로세서 시스템의 운영 시스템 소프트웨어에 다중 프로세서 시스템의 형상을 제공한다."Multithreading" is a common technique used within a computer system to allow multiple threads to continue a shared dataflow. When used within a uniprocessor system, multithreading provides the geometry of the multiprocessor system to the operating system software of the uniprocessor system.

종래 기술에서 사용되는 여러 멀티스레딩 기법이 존재한다. 예를 들면, 조대 단위 멀티스레딩(coarse-grain multithreading)은 한 시점에서 오로지 하나의 스레드만이 활성 상태가 되게 하고, 스레드 스왑(thread swap)이 존재하는 경우에 전체 파이프라인(pipeline)을 배출(flushes)한다. 이러한 기법에서, 단일 스레드는 캐시 실패(cache miss) 등과 같은 이벤트가 발생할 때까지 계속 진행하고, 그 후에 파이프라인이 고갈되면 교번 스레드(alternate thread)가 활성화된다(즉, 스왑-인(swapped in)된다).There are several multithreading techniques used in the prior art. For example, coarse-grain multithreading ensures that only one thread is active at a time, and exhausts the entire pipeline in the case of thread swapping. flushes). In this technique, a single thread continues until an event such as a cache miss occurs, after which an alternate thread is activated (ie, swapped in) when the pipeline is exhausted. do).

다른 예에서, 동시적 멀티스레딩(simultaneous multithreading)(SMT)은 다수의 스레드가 동시에 활성화되게 하고, 레지스터 리네이밍(register renaming) 등과 같은 비순차 설계(out-of-order design)의 리소스 및 완료 재순차 버퍼(completion reorder buffers)를 사용하여 다수의 활성 스레드를 추적한다. SMT는 하드웨어 구현에 있어서 상당히 값이 비쌀 수 있다.In another example, simultaneous multithreading (SMT) allows multiple threads to be active at the same time, and re-completes resources and out-of-order designs such as register renaming. Use multiple reorder buffers to track multiple active threads. SMT can be quite expensive in hardware implementation.

그러므로, 비순차 기법을 사용하지 않으면서 순차 멀티스레딩 프로세서의 처리량을 향상시키는 시스템 및 방법이 필요하다.Therefore, what is needed is a system and method for improving the throughput of a sequential multithreaded processor without using out of order techniques.

도 1은 프로세서 내에서 멀티스레딩 인스트럭션 흐름을 나타내는 블록도.1 is a block diagram illustrating a multithreaded instruction flow within a processor.

도 2는 정규 스레드 스위칭(normal thread switching)을 도시하는 타이밍도(timing diagram).2 is a timing diagram illustrating normal thread switching.

도 3은 의존성 인스트럭션이 스레드 내에서 로딩 실패(load miss)에 후속할 경우에 스레드 스위칭을 나타내는 타이밍도.FIG. 3 is a timing diagram illustrating thread switching when a dependency instruction follows a load miss in a thread. FIG.

본 발명은 순차 멀티스레딩 프로세서의 처리량을 향상시키는 시스템 및 방법을 제공한다. 의존성 인스트럭션(dependent instruction)은 제 1 스레드로부터의 레지스터 의존도를 가지고 적어도 하나의 장시간 지연 인스트럭션(long latency instruction)에 후속하는 것으로 식별된다. 의존성 인스트럭션은 이것을 이전의 파이프라인 스테이지(earlier popeline stage)에 제공함으로써 재사용된다. 의존성 인스트럭션은 디스패치(dispatch)에서 지연된다. 장시간 지연 인스트럭션의 완료는 제 1 스레드로부터 검출된다. 교번 스레드(alternate thread)는 장시간 지연 인스트럭션이 실행되는 동안에 하나 이상의 인스트럭션을 발행할 수 있다.The present invention provides a system and method for improving the throughput of a sequential multithreaded processor. The dependent instruction is identified as following the at least one long latency instruction with the register dependency from the first thread. Dependency instructions are reused by providing this to the earlier pipeline popeline stage. Dependency instructions are delayed in dispatch. Completion of the long delay instruction is detected from the first thread. Alternate threads may issue one or more instructions while a long delay instruction is executing.

본 발명 및 그 이점에 대한 보다 완벽한 이해를 위하여, 이하의 첨부된 도면과 함께 다음의 설명을 참조하였다.For a more complete understanding of the invention and its advantages, reference is made to the following description in conjunction with the accompanying drawings.

이하의 설명에서, 본 발명의 완전한 이해를 제공하기 위해서 여러 특정한 세부 사항을 제시하였다. 그러나, 당업자라면 본 발명이 이러한 특정한 세부 사항없이 실행될 수 있다는 것이 명확할 것이다. 다른 예로서, 불필요한 세부 사항에 의해 본 발명이 불명확하게 되지 않도록 잘 알려진 구성 요소에 대해서는 개략도 또는 블록도의 형태로 도시하였다.In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be apparent to one skilled in the art that the present invention may be practiced without these specific details. As another example, well-known components are shown in schematic or block diagram form in order to avoid obscuring the present invention from unnecessary details.

또한 다른 방식으로 표시되어 있지 않는 한, 본 명세서에 개시된 모든 기능은 하드웨어 또는 소프트웨어 또는 그의 소정 조합으로 수행될 수 있다는 것을 유의해야 한다. 그러나, 바람직한 실시예에서 이러한 기능은 다르게 표시되어 있지 않는 한, 컴퓨터 프로그램 코드, 소프트웨어 등과 같은 코드에 따르는 컴퓨터 또는 전자 데이터 프로세서 등의 프로세서 및/또는 이러한 기능을 수행하도록 코딩된 집적 회로에 의해 수행될 수 있다.It should also be noted that, unless otherwise indicated, all functions disclosed herein may be performed in hardware or software or any combination thereof. However, in the preferred embodiment these functions are to be performed by a processor, such as a computer or electronic data processor, according to code such as computer program code, software, etc. and / or integrated circuits coded to perform these functions, unless otherwise indicated. Can be.

도면 중에서 도 1을 참조하면, 참조 부호(100)는 일반적으로 블록도 내에서 멀티스레딩 인스트럭션 흐름을 갖는 프로세서(100)를 지칭한다. 프로세서(100)는 순차 멀티스레딩 프로세서인 것이 바람직하다. 프로세서(100)는 2개의 스레드(A 및 B)를 갖지만, 2개 이상의 스레드를 가질 수도 있다.Referring to FIG. 1 of the drawings, reference numeral 100 generally refers to processor 100 having a multithreaded instruction flow within a block diagram. Processor 100 is preferably a sequential multithreading processor. The processor 100 has two threads A and B, but may have two or more threads.

프로세서(100)는 각각 스레드(A, B)를 위한 인스트럭션 인출 어드레스 레지스터(instruction fetch address registers)(IFAR)(102, 104)를 포함한다. IFAR(102, 104)은 IC1, IC2 및 IC3을 갖는 인스트럭션 캐시(instruction cache)(ICACHE)(106)에 결합된다. 또한, 프로세서(100)는 각각 스레드(A, B)를 위한 인스트럭션 버퍼(instruction buffers)(IBUF)(108, 110)를 포함한다. 각각의 IBUF(108, 110)는 2개의 엔트리(entries)만큼의 깊이를 갖고 4개의 인스트럭션만큼의 폭을 갖는다. 구체적으로, IBUF(108)는 IBUF A(0) 및 IBUF A(1)를 포함한다. 이와 유사하게, IBUF(110)는 IBUF B(0) 및 IBUF B(1)를 포함한다. 프로세서(100)는 인스트럭션 디스패치 블록(instruction dispatch blocks)(ID1(112), ID2(114))을 더 포함한다. ID1(112)은 ICACHE(106) 및 IBUF(108, 110)에 결합된 멀티플렉서(116)를 포함한다. 멀티플렉서(116)는 스레드 디스패치 요청 신호(thread dispatch request signal)(118)를 제어 신호로서 수신하도록 구성되었다. ID1(112)은 또한 ID2(114)에 결합된다.The processor 100 includes instruction fetch address registers (IFARs) 102 and 104 for threads A and B, respectively. IFARs 102 and 104 are coupled to an instruction cache (ICACHE) 106 having IC1, IC2 and IC3. In addition, processor 100 includes instruction buffers (IBUFs) 108 and 110 for threads A and B, respectively. Each IBUF 108, 110 is as deep as two entries and as wide as four instructions. Specifically, IBUF 108 includes IBUF A (0) and IBUF A (1). Similarly, IBUF 110 includes IBUF B (0) and IBUF B (1). The processor 100 further includes instruction dispatch blocks ID1 112 and ID2 114. ID1 112 includes a multiplexer 116 coupled to ICACHE 106 and IBUFs 108 and 110. The multiplexer 116 is configured to receive a thread dispatch request signal 118 as a control signal. ID1 112 is also coupled to ID2 114.

프로세서(100)는 인스트럭션 발행 블록(instruction issue blocks)(IS1(120), IS2(122))을 더 포함한다. IS1(120)은 ID2(114)에 결합되어 인스트럭션을 수신한다. IS1(120)은 또한 IS2(122)에 결합되어 인스트럭션을 IS2(122)에 전달한다. 프로세서(100)는 인스트럭션을 처리하기 위해서 실행 장치(execution units)에 결합된 여러 레지스터 파일을 더 포함한다. 구체적으로, 프로세서(100)는 벡터/SIMD 멀티미디어 확장부(vector/SIMD multimedia extension)(VMX)(126)에 결합된 벡터 레지스터 파일(vector register file)(VRF)(124)을 포함한다. 프로세서(100)는 또한 부동 소수점 장치(floating-point unit)(FPU)(130)에 결합된 부동 소수점 레지스터 파일(floating-point register file)(FPR)(128)을 포함한다. 또한, 프로세서(100)는 고정 소수점 장치/로딩 저장 장치(fixed-point unit/load-store unit)(FXU/LSU)(134) 및 데이터 캐시(DCACHE)(136)에 결합된 범용 레지스터 파일(general-purpose register file)(GPR)(132)을 포함한다. 프로세서(100)는 또한 상태 레지스터 파일(condition register file)/링크 레지스터 파일(link register file)/카운트 레지스터 파일(count register file)(CR/LNK/CNT)(138) 및 브랜치(branch)(140)를 포함한다. IS2(122)는 VRF(124), FPR(128), GPR(132) 및 CR/LNK/CNT(138)에 결합된다. 프로세서(100)는 또한 의존도 검사 로직(dependency checking logic)(142)을 포함하는데, 이는 IS2(122)에 결합되는 것이 바람직하다.The processor 100 further includes instruction issue blocks IS1 120 and IS2 122. IS1 120 is coupled to ID2 114 to receive instructions. IS1 120 is also coupled to IS2 122 to convey instructions to IS2 122. Processor 100 further includes several register files coupled to execution units for processing instructions. Specifically, the processor 100 includes a vector register file (VRF) 124 coupled to a vector / SIMD multimedia extension (VMX) 126. The processor 100 also includes a floating-point register file (FPR) 128 coupled to a floating-point unit (FPU) 130. The processor 100 also includes a general register file coupled to a fixed-point unit / load-store unit (FXU / LSU) 134 and a data cache (DCACHE) 136. a purpose register file (GPR) 132. The processor 100 also includes a condition register file / link register file / count register file (CR / LNK / CNT) 138 and a branch 140. It includes. IS2 122 is coupled to VRF 124, FPR 128, GPR 132 and CR / LNK / CNT 138. Processor 100 also includes dependency checking logic 142, which is preferably coupled to IS2 122.

인스트럭션 인출은 스레드마다 별도의 IFAR(102, 104)를 유지할 것이다. 인출은 스레드들 사이의 각각의 모든 사이클마다 교번적으로 수행될 것이다. 인스트럭션 인출은 파이프라인형이고, 이러한 구현을 위해서 3개의 사이클을 필요로 한다. 이러한 3개의 사이클이 끝나면, 4개의 인스트럭션이 ICACHE(106)로부터 인출되고 ID1(112)로 전달된다. 4개의 인스트럭션은 디스패칭되거나 IBUF(108 및/또는 110)에 삽입된다.Instruction fetching will maintain separate IFARs 102 and 104 for each thread. The withdrawal will be performed alternately in every every cycle between the threads. Instruction fetching is pipelined and requires three cycles for this implementation. At the end of these three cycles, four instructions are withdrawn from ICACHE 106 and passed to ID1 112. Four instructions are dispatched or inserted into IBUF 108 and / or 110.

스레드 스위치의 선택은 ID1(112)에서 결정된다. 이러한 결정은 스레드 디스패치 요청 신호(118) 및 해당 스레드를 위해 이용가능한 인스트럭션에 기초한다. 바람직하게는, 스레드 디스패치 요청 신호(118)는 스레드마다 각각의 모든 사이클을 토글링(toggling)한다. 주어진 스레드에 대한 이용 가능 인스트럭션이 존재하고, 그것이 해당 스레드를 위한 활성 스레드이면, 인스트럭션은 해당 스레드에 대해 디스패칭될 것이다. 활성 스레드 사이클 동안에 스레드를 위한 이용 가능 인스트럭션이 존재하지 않으면, 교번 스레드가 이용 가능 인스트럭션을 갖는 경우에 이 교번 스레드가 이 디스패치 슬롯(dispatch slot)을 이용할 수 있다.The selection of the thread switch is determined at ID1 112. This determination is based on the thread dispatch request signal 118 and the instructions available for that thread. Preferably, the thread dispatch request signal 118 toggles each and every cycle per thread. If there is an instruction available for a given thread and it is an active thread for that thread, the instruction will be dispatched for that thread. If there are no instructions available for the thread during the active thread cycle, then this alternate slot can use this dispatch slot if the alternating thread has an instruction available.

종래 기술의 시스템에서, 장시간 지연 인스트럭션 이후에 제 1 스레드(예를 들면, 스레드 A) 내의 의존성 인스트럭션이 후속하면, 의존성 인스트럭션은 장시간 지연 인스트럭션이 처리되기 전까지는 실행될 수 없다. 그러므로, 의존성 인스트럭션은 장시간 지연 인스트럭션이 처리될 때까지 IS2(122) 내에 저장될 것이다. 그러나, 본 발명에서, 의존도 검사 로직(142)은 장시간 지연 인스트럭션 이후에 의존성 인스트럭션을 식별한다. 바람직하게는, 의존성 인스트럭션은 의존도 검사 로직이 자신을 식별할 수 있도록 표시된다. 의존성 인스트럭션은 이전의 파이프라인 스테이지(예를 들면, 인출 스테이지 등)에 해당 의존성 인스트럭션을 제공함으로써 재사용된다. 의존성 인스트럭션은 디스패치에서 지연된다. 교번 스레드는 장시간 지연 인스트럭션이 실행되는 동안에 하나 이상의 인스트럭션을 발행할 수 있다. 장시간 지연 인스트럭션이 완료되면, 제 1 스레드의 의존성 인스트럭션이 실행된다.In prior art systems, if a dependency instruction in a first thread (eg, thread A) is followed by a long delay instruction, the dependency instruction cannot be executed until the long delay instruction is processed. Therefore, dependency instructions will be stored in IS2 122 until a long delay instruction is processed. However, in the present invention, dependency checking logic 142 identifies the dependency instruction after a long delay instruction. Preferably, dependency instructions are marked so that dependency checking logic can identify them. Dependency instructions are reused by providing corresponding dependency instructions to previous pipeline stages (eg, fetch stages, etc.). Dependency instructions are delayed in dispatch. An alternating thread can issue one or more instructions while a long delay instruction is executing. When the long delay instruction is completed, the dependency instruction of the first thread is executed.

다음으로, 도 2를 참조하면, 정규 스레드 스위칭(normal thread switching)을 나타내는 타이밍도(200)가 도시되어 있다. 타이밍도(200)는 브랜치 리디렉트(branch redirects) 또는 파이프라인 고정(pipeline stalls)이 없는 정규 인출, 디스패치 및 발행 프로세스를 도시한다. 바람직하게는, 인출, 디스패치 및 발행 프로세스가 각 사이클마다의 스레드 사이에서 교번적으로 수행된다. 구체적으로, A(0:3)는 스레드 A를 위해 인출된 4개의 인스트럭션으로 이루어진 그룹이다. 이와 유사하게 B(0:3)는 스레드 B를 위해 인출된 4개의 인스트럭션으로 이루어진 그룹이다. 브랜치가 존재하지 않기 때문에 인출 및 디스패치가 모두 각 사이클마다 스레드를 토글링한다.Next, referring to FIG. 2, a timing diagram 200 illustrating normal thread switching is shown. Timing diagram 200 illustrates the normal fetch, dispatch, and issue process without branch redirects or pipeline stalls. Preferably, the fetch, dispatch, and issue processes are performed alternately between threads for each cycle. Specifically, A (0: 3) is a group of four instructions drawn for thread A. Similarly, B (0: 3) is a group of four instructions drawn for thread B. Since no branch exists, both fetch and dispatch toggle the thread on each cycle.

다음으로 도 3을 참조하면, 타이밍도(300)는 스레드 A에 대한 DCACHE 로딩 실패에 후속하는 스레드 A에 대한 의존성 인스트럭션을 도시한다. 사이클 1에서, 로딩(302)은 파이프라인 스테이지(EX2) 내에 있다. 사이클 1에서, 스레드 A 내의 의존성 인스트럭션(304)은 파이프라인 스테이지(IS2)에 있다. 사이클 4에서, DCACHE 실패 신호(306)가 활성화된다. 이는 스레드 A에 대한 되기록 인에이블 신호(writeback enable signal)(308)가 디스에이블(disabled)되게 한다. 사이클 7에서, 스레드 A 내의 의존성 인스트럭션(304)은 FLUSH (A) 신호(310)에 의해 배출된다. 다음에 의존성 인스트럭션(304)은 재사용될 것이고, DCACHE를 실패한 로딩으로부터 데이터가 되돌아올 때까지 디스패치에서 유지된다. 배출이 발생한 후에, 스레드 B는 사이클(21)에서 시작하는 모든 디스패치 슬롯을 제공받는다. 이는 DCACHE 로딩 데이터가 되돌아올 때까지 계속 진행된다.Referring next to FIG. 3, timing diagram 300 illustrates dependency instructions for thread A following a DCACHE loading failure for thread A. In cycle 1, loading 302 is in pipeline stage EX2. In cycle 1, the dependency instruction 304 in thread A is in pipeline stage IS2. In cycle 4, the DCACHE failure signal 306 is activated. This causes the writeback enable signal 308 for thread A to be disabled. In cycle 7, dependency instruction 304 in thread A is emitted by FLUSH (A) signal 310. The dependency instruction 304 will then be reused and kept in dispatch until data is returned from the failed loading of the DCACHE. After ejection has occurred, thread B is provided with all dispatch slots starting in cycle 21. This continues until the DCACHE loading data is returned.

로딩(302)이 완전히 실행된 이후에, 스레드 A는 실행을 위해 파이프라인을 통해 의존성 인스트럭션(304)을 전달한다는 것을 유의해야 한다.It should be noted that after the loading 302 is fully executed, thread A passes the dependency instruction 304 through the pipeline for execution.

장시간 지연 인스트럭션은 여러 다른 형태를 취할 수 있다. 도 3에 도시된 바와 같은 로딩 실패는 장시간 지연 인스트럭션의 일례이다. 추가하여, (1) 어드레스 변환 실패(address translation miss), (2) 고정 소수점 복소수 인스트럭션(fixed point complex instruction), (3) 부동 소수점 복소수 인스트럭션(floating point complex instruction) 및 (4) 부동 소수점 디놈 인스트럭션(floating point denorm instruction)을 포함하는 다른 타입의 장시간 지연 인스트럭션이 존재할 수 있는데, 이는 이것으로 한정되지는 않는다. 도 3은 로딩 실패의 경우를 도시하였으나, 당업자라면 본 발명이 다른 타입의 장시간 지연 인스트럭션에도 적용될 수 있다는 것을 일반적으로 이해할 것이다.Long delay instructions can take many different forms. The loading failure as shown in FIG. 3 is an example of a long delay instruction. In addition, (1) address translation misses, (2) fixed point complex instructions, (3) floating point complex instructions, and (4) floating point denome instructions There may be other types of long delay instructions, including, but not limited to, floating point denorm instructions. Although FIG. 3 illustrates the case of loading failure, those skilled in the art will generally appreciate that the present invention can be applied to other types of long time delay instructions.

상술된 설명으로부터, 본 발명의 진정한 정신으로부터 벗어나지 않으면서 본 발명의 바람직한 실시예에 대한 여러 수정 및 변형이 이뤄질 수 있다는 것을 이해할 것이다. 본 명세서는 오로지 예시를 목적으로 제시된 것이고, 제한적 의미로 해석되어서는 안 된다. 본 발명의 범주는 오로지 이하의 청구항의 문맥에 의해서만 제한되어야 할 것이다.From the foregoing description, it will be understood that various modifications and variations can be made to the preferred embodiments of the present invention without departing from the true spirit thereof. This specification is presented for purposes of illustration only and should not be construed in a limiting sense. The scope of the invention should only be limited by the context of the following claims.

Claims (23)

순차 멀티스레딩 프로세서(an in-order multithreading processor)의 처리량(throughput)을 향상시키는 방법으로서,As a method of improving the throughput of an in-order multithreading processor, 제 1 스레드(a first thread)로부터의 레지스터 의존성을 가지고 적어도 하나의 장시간 지연 인스트럭션(long latency instruction)에 후속하는 의존성 인스트럭션(a dependent instruction)을 식별하는 단계와,Identifying a dependent instruction following a at least one long latency instruction with a register dependency from a first thread; 상기 의존성 인스트럭션을 이전의 파이프라인 스테이지(an earlier pipeline stage)에 제공함으로써 상기 의존성 인스트럭션을 재사용(recycling)하는 단계와,Recycling the dependency instruction by providing the dependency instruction to an earlier pipeline stage, 디스패치(dispatch)에서 상기 의존성 인스트럭션을 지연시키는 단계와,Delaying the dependency instruction at dispatch; 상기 제 1 스레드에서 상기 적어도 하나의 장시간 지연 인스트럭션의 완료를 검출하는 단계와,Detecting completion of the at least one long delay instruction in the first thread; 상기 적어도 하나의 장시간 지연 인스트럭션이 실행되는 동안에 교번 스레드(an alternate thread)가 하나 이상의 인스트럭션을 발행하게 하는 단계Causing an alternate thread to issue one or more instructions while the at least one long delay instruction is executed. 를 포함하는 순차 멀티스레딩 프로세서의 처리량 향상 방법.Throughput improvement method of the sequential multithreading processor including. 제 1 항에 있어서,The method of claim 1, 디스패치에서 상기 의존성 인스트럭션을 지연시키는 상기 단계는 인스트럭션 버퍼(an instruction buffer) 내에 상기 의존성 인스트럭션을 유지하는 단계를 포함하는 순차 멀티스레딩 프로세서의 처리량 향상 방법.Delaying the dependency instruction at dispatch includes maintaining the dependency instruction in an instruction buffer. 제 2 항에 있어서,The method of claim 2, 디스패치 블록 마크(a dispatch block mark)는 상기 의존성 인스트럭션이 상기 인스트럭션 버퍼 내에 유지되는 것을 표시하는 순차 멀티스레딩 프로세서의 처리량 향상 방법.A dispatch block mark indicates that the dependency instruction is maintained in the instruction buffer. 제 3 항에 있어서,The method of claim 3, wherein 상기 디스패치 블록 마크는 상기 의존성 인스트럭션이 상기 인스트럭션 버퍼로부터 방출된 것을 나타내도록 리셋(reset)되는 순차 멀티스레딩 프로세서의 처리량 향상 방법.And said dispatch block mark is reset to indicate that said dependent instruction has been released from said instruction buffer. 제 1 항에 있어서,The method of claim 1, 상기 적어도 하나의 장시간 지연 인스트럭션은 로딩 실패(a load miss)인 순차 멀티스레딩 프로세서의 처리량 향상 방법.And wherein said at least one long delay instruction is a load miss. 제 5 항에 있어서,The method of claim 5, 로딩/저장 인스트럭션(a load/store instruction)을 발행하는 단계와,Issuing a load / store instruction; 상기 로딩/저장 인스트럭션의 목표 의존도(target dependency)를 추적하는 단계와,Tracking a target dependency of the load / store instruction; 상기 로딩/저장 인스트럭션을 실패 대기열(miss queue)에 저장하는 단계와,Storing the load / store instructions in a miss queue; 상기 로딩/저장 인스트럭션을 실행하는 단계와,Executing the loading / storing instruction; 로딩 실패를 시그널링(signalling)하는 단계와,Signaling a loading failure; 후속하는 의존성 인스트럭션을 배출(flushing)하는 단계와,Flushing subsequent dependency instructions, 다른 인스트럭션을 디스패칭(dispatching)하는 동안에 상기 교번 스레드가 디스패치에서 상기 의존성 인스트럭션을 유지하는 단계와,The alternating thread maintaining the dependency instruction in dispatch while dispatching another instruction, 상기 의존성 인스트럭션을 디스패칭하는 단계Dispatching the dependency instruction 를 더 포함하는 순차 멀티스레딩 프로세서의 처리량 향상 방법.How to improve the throughput of the sequential multithreading processor further comprising. 제 1 항에 있어서,The method of claim 1, 상기 적어도 하나의 장시간 지연 인스트럭션은 어드레스 변환 실패(a address translation miss)인 순차 멀티스레딩 프로세서의 처리량 향상 방법.And wherein said at least one long delay instruction is a address translation miss. 제 1 항에 있어서,The method of claim 1, 상기 적어도 하나의 장시간 지연 인스트럭션은 고정 소수점 복소수 인스트럭션(a fixed point complex instruction)인 순차 멀티스레딩 프로세서의 처리량 향상 방법.And wherein said at least one long delay instruction is a fixed point complex instruction. 제 1 항에 있어서,The method of claim 1, 상기 적어도 하나의 장시간 지연 인스트럭션은 부동 소수점 복소수 인스트럭션(a floating point complex instruction)인 순차 멀티스레딩 프로세서의 처리량 향상 방법.And wherein said at least one long delay instruction is a floating point complex instruction. 제 1 항에 있어서,The method of claim 1, 상기 적어도 하나의 장시간 지연 인스트럭션은 부동 소수점 디놈 인스트럭션(a floating point denorm instruction)인 순차 멀티스레딩 프로세서의 처리량 향상 방법.And wherein said at least one long delay instruction is a floating point denorm instruction. 2개 이상의 스레드를 갖는 순차 멀티스레딩 프로세서로서,Sequential multithreading processor with two or more threads, 복수의 인스트럭션 인출 어드레스 레지스터(a plurality of instruction fetch address registers)-적어도 하나의 상기 인스트럭션 인출 어드레스 레지스터는 상기 2개 이상의 스레드에 각각 할당됨-와,A plurality of instruction fetch address registers, at least one of the instruction fetch address registers each assigned to the two or more threads; 상기 복수의 인스트럭션 인출 어드레스 레지스터에 결합된 인스트럭션 캐시(an instruction cache)와,An instruction cache coupled to the plurality of instruction fetch address registers; 상기 인스트럭션 캐시에 결합되어 상기 인스트럭션 캐시로부터 하나 이상의 인스트럭션을 수신하는 복수의 인스트럭션 버퍼-적어도 하나의 상기 인스트럭션 버퍼는 각각의 스레드에 할당됨-A plurality of instruction buffers coupled to the instruction cache to receive one or more instructions from the instruction cache, wherein at least one instruction buffer is allocated to each thread 상기 인스트럭션 캐시 및 상기 복수의 인스트럭션 버퍼에 모두 결합된 인스트럭션 디스패치 스테이지(an instruction dispatch stage)와,An instruction dispatch stage coupled to both the instruction cache and the plurality of instruction buffers; 상기 인스트럭션 디스패치 스테이지에 결합된 인스트럭션 발행 스테이지(an instruction issue stage)와,An instruction issue stage coupled to the instruction dispatch stage, 상기 인스트럭션 발행 스테이지에 결합되어 상기 제 1 스레드로부터의 레지스터 의존성을 가지고 적어도 하나의 장시간 지연 인스트럭션에 후속하는 의존성 인스트럭션을 식별하는 의존도 검사 로직(a dependency checking logic)을 포함하고,A dependency checking logic coupled to the instruction issuing stage and identifying a dependency instruction subsequent to at least one long delay instruction with a register dependency from the first thread, 상기 의존도 검사 로직은 상기 의존성 인스트럭션을 이전의 파이프라인 스테이지에 제공함으로써 상기 의존성 인스트럭션을 재사용하며,The dependency checking logic reuses the dependency instruction by providing the dependency instruction to a previous pipeline stage, 상기 의존도 검사 로직은 디스패치에서 상기 의존성 인스트럭션을 지연시키고,The dependency checking logic delays the dependency instruction at dispatch, 상기 의존도 검사 로직은 상기 제 1 스레드로부터의 상기 적어도 하나의 장시간 지연 인스트럭션의 완료를 검출하며,The dependency checking logic detects the completion of the at least one long delay instruction from the first thread, 상기 의존도 검사 로직은 상기 적어도 하나의 장시간 지연 인스트럭션이 실행되는 동안에 교번 스레드가 상기 하나 이상의 인스트럭션을 발행하게 하는 The dependency checking logic causes an alternating thread to issue the one or more instructions while the at least one long delay instruction is executing. 순차 멀티스레딩 프로세서.Sequential multithreading processor. 제 11 항에 있어서,The method of claim 11, 상기 발행 스테이지는 적어도 하나의 레지스터 파일 및 상기 레지스터 파일에 결합된 적어도 하나의 실행 장치(execution unit)를 포함하는 순차 멀티스레딩 프로세서.The issue stage comprises at least one register file and at least one execution unit coupled to the register file. 제 12 항에 있어서,The method of claim 12, 상기 적어도 하나의 레지스터 파일은 벡터 레지스터 파일(vector register file)(VRF)을 포함하고, 상기 적어도 하나의 실행 장치는 벡터/SIMD 멀티미디어 확장부(vector/SIMD multimedia extension)(VMX)를 포함하는 순차 멀티스레딩 프로세서.The at least one register file comprises a vector register file (VRF) and the at least one execution device comprises a sequential multi comprising a vector / SIMD multimedia extension (VMX). Threading Processor. 제 12 항에 있어서,The method of claim 12, 상기 적어도 하나의 레지스터 파일은 부동 소수점 레지스터 파일(a floating-point register file)(VPR)을 포함하고, 상기 적어도 하나의 실행 장치는 부동 소수점 장치(a floating-point unit)(FPU)를 포함하는 순차 멀티스레딩 프로세서.The at least one register file comprises a floating-point register file (VPR) and the at least one execution unit comprises a floating-point unit (FPU). Multithreading Processor. 제 12 항에 있어서,The method of claim 12, 상기 적어도 하나의 레지스터 파일은 범용 레지스터 파일(a general-purpose register file)(GPR)을 포함하고, 상기 적어도 하나의 실행 장치는 고정 소수점 장치(a fixed-point unit)(FXU) 및 로딩/저장 장치(a load/store unit)(LSU)를 포함하는 순차 멀티스레딩 프로세서.The at least one register file comprises a general-purpose register file (GPR), wherein the at least one execution unit comprises a fixed-point unit (FXU) and a loading / storage unit. sequential multithreading processor including a load / store unit (LSU). 제 12 항에 있어서,The method of claim 12, 상기 적어도 하나의 레지스터 파일은 상태 레지스터 파일(a condition register file)(CR), 링크 레지스터 파일(a link register file)(LNK) 및 카운트 레지스터 파일(count register file)(CNT)을 포함하고, 상기 적어도 하나의 실행 장치는 브랜치(branch)를 포함하는 순차 멀티스레딩 프로세서.The at least one register file includes a condition register file (CR), a link register file (LNK) and a count register file (CNT), the at least One execution device is a sequential multithreading processor that includes a branch. 2개 이상의 스레드를 갖는 순차 멀티스레딩 프로세서로서,Sequential multithreading processor with two or more threads, 제 1 스레드로부터의 레지스터 의존성을 가지고 적어도 하나의 장시간 지연 인스트럭션에 후속하는 의존성 인스트럭션을 식별하는 수단과,Means for identifying a dependency instruction following a at least one long delay instruction with a register dependency from a first thread; 상기 의존성 인스트럭션을 이전의 파이프라인 스테이지에 제공함으로써 상기 의존성 인스트럭션을 재사용하는 수단과,Means for reusing the dependency instruction by providing the dependency instruction to a previous pipeline stage, 디스패치에서 상기 의존성 인스트럭션을 지연시키는 수단과,Means for delaying the dependency instruction at dispatch; 상기 제 1 스레드에서 상기 적어도 하나의 장시간 지연 인스트럭션의 완료를 검출하는 수단과,Means for detecting the completion of the at least one long delay instruction in the first thread; 상기 적어도 하나의 장시간 지연 인스트럭션이 실행되는 동안에 교번 스레드가 하나 이상의 인스트럭션을 발행하게 하는 수단Means for causing an alternating thread to issue one or more instructions while the at least one long delay instruction is executing. 을 포함하는 순차 멀티스레딩 프로세서.Sequential multithreading processor comprising a. 제 17 항에 있어서,The method of claim 17, 디스패치에서 상기 의존성 인스트럭션을 지연시키는 상기 수단은 인스트럭션 버퍼 내에 상기 의존성 인스트럭션을 유지하는 수단을 포함하는 순차 멀티스레딩 프로세서.And the means for delaying the dependency instruction in dispatch comprises means for maintaining the dependency instruction in an instruction buffer. 제 18 항에 있어서,The method of claim 18, 디스패치 블록 마크는 상기 의존성 인스트럭션이 상기 인스트럭션 버퍼 내에 유지되는 것을 표시하는 순차 멀티스레딩 프로세서.A dispatch block mark indicates that the dependency instruction is maintained in the instruction buffer. 제 19 항에 있어서,The method of claim 19, 상기 디스패치 블록 마크는 상기 의존성 인스트럭션이 상기 인스트럭션 버퍼로부터 방출된 것을 나타내도록 리셋되는 순차 멀티스레딩 프로세서.The dispatch block mark is reset to indicate that the dependency instruction has been released from the instruction buffer. 제 17 항에 있어서,The method of claim 17, 상기 적어도 하나의 장시간 지연 인스트럭션은 로딩 실패인 순차 멀티스레딩 프로세서.And the at least one long delay instruction is a loading failure. 제 21 항에 있어서,The method of claim 21, 로딩/저장 인스트럭션을 발행하는 수단과,Means for issuing load / store instructions; 상기 로딩/저장 인스트럭션의 목표 의존도를 추적하는 수단과,Means for tracking a target dependency of the load / store instruction; 상기 로딩/저장 인스트럭션을 실패 대기열에 저장하는 수단과,Means for storing the load / store instructions in a failure queue; 상기 로딩/저장 인스트럭션을 실행하는 수단과,Means for executing the load / store instruction; 로딩 실패를 시그널링하는 수단과,Means for signaling a loading failure; 후속하는 의존성 인스트럭션을 배출하는 수단과,Means for emitting subsequent dependency instructions, 다른 인스트럭션을 디스패칭하는 동안에 상기 교번 스레드가 디스패치에서 상기 의존성 인스트럭션을 유지하는 수단과,Means for the alternating thread to maintain the dependency instruction in dispatch while dispatching another instruction; 상기 의존성 인스트럭션을 디스패칭하는 수단Means for dispatching the dependency instruction 을 더 포함하는 순차 멀티스레딩 프로세서.Sequential multithreading processor further comprising. 순차 멀티스레딩 프로세서의 작업량을 향상시키는 컴퓨터 프로그램 제품으로서,A computer program product that improves the workload of sequential multithreading processors, 상기 컴퓨터 프로그램은 컴퓨터 프로그램을 내장하는 매체를 구비하고,The computer program includes a medium in which the computer program is embedded. 상기 컴퓨터 프로그램은,The computer program, 제 1 스레드로부터의 레지스터 의존성을 가지고 적어도 하나의 장시간 지연 인스트럭션에 후속하는 의존성 인스트럭션을 식별하는 컴퓨터 프로그램 코드와,Computer program code for identifying a dependency instruction following a at least one long delay instruction with a register dependency from a first thread; 상기 의존성 인스트럭션을 이전의 파이프라인 스테이지에 제공함으로써 상기 의존성 인스트럭션을 재사용하는 컴퓨터 프로그램 코드와,Computer program code for reusing the dependency instruction by providing the dependency instruction to a previous pipeline stage, 디스패치에서 상기 의존성 인스트럭션을 지연시키는 컴퓨터 프로그램 코드와,Computer program code for delaying the dependency instruction at dispatch, 상기 제 1 스레드에서 상기 적어도 하나의 장시간 지연 인스트럭션의 완료를 검출하는 컴퓨터 프로그램 코드와,Computer program code for detecting completion of the at least one long delay instruction in the first thread; 상기 적어도 하나의 장시간 지연 인스트럭션이 실행되는 동안에 교번 스레드가 하나 이상의 인스트럭션을 발행하게 하는 컴퓨터 프로그램 코드Computer program code causing an alternating thread to issue one or more instructions while the at least one long delay instruction is executed 를 포함하는 컴퓨터 프로그램 제품.Computer program product comprising a.
KR1020057007909A 2002-12-05 2003-10-22 In order multithreading recycle and dispatch mechanism KR100819232B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/313,705 US20040111594A1 (en) 2002-12-05 2002-12-05 Multithreading recycle and dispatch mechanism
US10/313,705 2002-12-05

Publications (2)

Publication Number Publication Date
KR20050084661A true KR20050084661A (en) 2005-08-26
KR100819232B1 KR100819232B1 (en) 2008-04-02

Family

ID=32468318

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057007909A KR100819232B1 (en) 2002-12-05 2003-10-22 In order multithreading recycle and dispatch mechanism

Country Status (8)

Country Link
US (1) US20040111594A1 (en)
EP (1) EP1576464A1 (en)
JP (1) JP2006509282A (en)
KR (1) KR100819232B1 (en)
CN (1) CN1271512C (en)
AU (1) AU2003278329A1 (en)
CA (1) CA2503079A1 (en)
WO (1) WO2004051464A1 (en)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7703076B1 (en) * 2003-07-30 2010-04-20 Lsi Corporation User interface software development tool and method for enhancing the sequencing of instructions within a superscalar microprocessor pipeline by displaying and manipulating instructions in the pipeline
US7284102B2 (en) * 2005-02-09 2007-10-16 International Business Machines Corporation System and method of re-ordering store operations within a processor
US7313673B2 (en) * 2005-06-16 2007-12-25 International Business Machines Corporation Fine grained multi-thread dispatch block mechanism
US8001540B2 (en) * 2006-08-08 2011-08-16 International Business Machines Corporation System, method and program product for control of sequencing of data processing by different programs
US7975272B2 (en) * 2006-12-30 2011-07-05 Intel Corporation Thread queuing method and apparatus
US7596668B2 (en) * 2007-02-20 2009-09-29 International Business Machines Corporation Method, system and program product for associating threads within non-related processes based on memory paging behaviors
GB2447907B (en) * 2007-03-26 2009-02-18 Imagination Tech Ltd Processing long-latency instructions in a pipelined processor
US20080263379A1 (en) * 2007-04-17 2008-10-23 Advanced Micro Devices, Inc. Watchdog timer device and methods thereof
US20090125706A1 (en) * 2007-11-08 2009-05-14 Hoover Russell D Software Pipelining on a Network on Chip
US8261025B2 (en) 2007-11-12 2012-09-04 International Business Machines Corporation Software pipelining on a network on chip
US8302098B2 (en) * 2007-12-06 2012-10-30 Oracle America, Inc. Hardware utilization-aware thread management in multithreaded computer systems
US20090260013A1 (en) * 2008-04-14 2009-10-15 International Business Machines Corporation Computer Processors With Plural, Pipelined Hardware Threads Of Execution
US8423715B2 (en) 2008-05-01 2013-04-16 International Business Machines Corporation Memory management among levels of cache in a memory hierarchy
US8521982B2 (en) * 2009-04-15 2013-08-27 International Business Machines Corporation Load request scheduling in a cache hierarchy
CN102473148A (en) * 2009-07-28 2012-05-23 拉姆伯斯公司 Method and system for synchronizing address and control signals in threaded memory modules
US9361116B2 (en) 2012-12-28 2016-06-07 Intel Corporation Apparatus and method for low-latency invocation of accelerators
US9417873B2 (en) 2012-12-28 2016-08-16 Intel Corporation Apparatus and method for a hybrid latency-throughput processor
US10140129B2 (en) 2012-12-28 2018-11-27 Intel Corporation Processing core having shared front end unit
US10346195B2 (en) 2012-12-29 2019-07-09 Intel Corporation Apparatus and method for invocation of a multi threaded accelerator
US9697005B2 (en) 2013-12-04 2017-07-04 Analog Devices, Inc. Thread offset counter
WO2015096031A1 (en) * 2013-12-24 2015-07-02 华为技术有限公司 Method and apparatus for allocating thread shared resource
US9665372B2 (en) 2014-05-12 2017-05-30 International Business Machines Corporation Parallel slice processor with dynamic instruction stream mapping
US9672043B2 (en) 2014-05-12 2017-06-06 International Business Machines Corporation Processing of multiple instruction streams in a parallel slice processor
US9760375B2 (en) 2014-09-09 2017-09-12 International Business Machines Corporation Register files for storing data operated on by instructions of multiple widths
US9720696B2 (en) 2014-09-30 2017-08-01 International Business Machines Corporation Independent mapping of threads
US9977678B2 (en) 2015-01-12 2018-05-22 International Business Machines Corporation Reconfigurable parallel execution and load-store slice processor
US10133576B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries
US10133581B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Linkable issue queue parallel execution slice for a processor
WO2016201699A1 (en) * 2015-06-19 2016-12-22 华为技术有限公司 Instruction processing method and device
US9983875B2 (en) 2016-03-04 2018-05-29 International Business Machines Corporation Operation of a multi-slice processor preventing early dependent instruction wakeup
US10037211B2 (en) 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US10761854B2 (en) 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US9934033B2 (en) 2016-06-13 2018-04-03 International Business Machines Corporation Operation of a multi-slice processor implementing simultaneous two-target loads and stores
US10042647B2 (en) 2016-06-27 2018-08-07 International Business Machines Corporation Managing a divided load reorder queue
US10318419B2 (en) 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
US10275250B2 (en) * 2017-03-06 2019-04-30 Arm Limited Defer buffer
US11443044B2 (en) 2019-09-23 2022-09-13 International Business Machines Corporation Targeted very long delay for increasing speculative execution progression
US11205005B2 (en) 2019-09-23 2021-12-21 International Business Machines Corporation Identifying microarchitectural security vulnerabilities using simulation comparison with modified secret data
JP7378262B2 (en) * 2019-10-11 2023-11-13 スリーエム イノベイティブ プロパティズ カンパニー Inkjet printing method and inkjet printing device

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4635194A (en) * 1983-05-02 1987-01-06 International Business Machines Corporation Instruction buffer bypass apparatus
US5604909A (en) * 1993-12-15 1997-02-18 Silicon Graphics Computer Systems, Inc. Apparatus for processing instructions in a computing system
US5737562A (en) * 1995-10-06 1998-04-07 Lsi Logic Corporation CPU pipeline having queuing stage to facilitate branch instructions
US5966544A (en) * 1996-11-13 1999-10-12 Intel Corporation Data speculatable processor having reply architecture
US6088788A (en) * 1996-12-27 2000-07-11 International Business Machines Corporation Background completion of instruction and associated fetch request in a multithread processor
US6079002A (en) * 1997-09-23 2000-06-20 International Business Machines Corporation Dynamic expansion of execution pipeline stages
US7401211B2 (en) * 2000-12-29 2008-07-15 Intel Corporation Method for converting pipeline stalls caused by instructions with long latency memory accesses to pipeline flushes in a multithreaded processor

Also Published As

Publication number Publication date
AU2003278329A1 (en) 2004-06-23
CN1271512C (en) 2006-08-23
CA2503079A1 (en) 2004-06-17
US20040111594A1 (en) 2004-06-10
JP2006509282A (en) 2006-03-16
KR100819232B1 (en) 2008-04-02
WO2004051464A1 (en) 2004-06-17
EP1576464A1 (en) 2005-09-21
CN1504873A (en) 2004-06-16

Similar Documents

Publication Publication Date Title
KR100819232B1 (en) In order multithreading recycle and dispatch mechanism
JP3580657B2 (en) Method and system for parallel multitasking
US5958041A (en) Latency prediction in a pipelined microarchitecture
US7809933B2 (en) System and method for optimizing branch logic for handling hard to predict indirect branches
EP3091433B1 (en) System and method to reduce load-store collision penalty in speculative out of order engine
EP0762270B1 (en) Microprocessor with load/store operation to/from multiple registers
US7603543B2 (en) Method, apparatus and program product for enhancing performance of an in-order processor with long stalls
US5931957A (en) Support for out-of-order execution of loads and stores in a processor
EP1886216B1 (en) Controlling out of order execution pipelines using skew parameters
KR100745904B1 (en) a method and circuit for modifying pipeline length in a simultaneous multithread processor
US20120089819A1 (en) Issuing instructions with unresolved data dependencies
US20060259741A1 (en) Controlling out of order execution pipelines issue tagging
JPH07152559A (en) Superscalar pipeline-type processor with reinforced pipe control and register conversion function
US7228403B2 (en) Method for handling 32 bit results for an out-of-order processor with a 64 bit architecture
US7194603B2 (en) SMT flush arbitration
US20040216104A1 (en) Atomic quad word storage in a simultaneous multithreaded system
US7571283B2 (en) Mechanism in a multi-threaded microprocessor to maintain best case demand instruction redispatch
US6708267B1 (en) System and method in a pipelined processor for generating a single cycle pipeline stall
US20020152259A1 (en) Pre-committing instruction sequences
US20090106538A1 (en) System and Method for Implementing a Hardware-Supported Thread Assist Under Load Lookahead Mechanism for a Microprocessor
US6473850B1 (en) System and method for handling instructions occurring after an ISYNC instruction
US7328327B2 (en) Technique for reducing traffic in an instruction fetch unit of a chip multiprocessor
US5850563A (en) Processor and method for out-of-order completion of floating-point operations during load/store multiple operations
US20230315446A1 (en) Arithmetic processing apparatus and method for arithmetic processing
KR20020096252A (en) Speculative execution following barrier instruction

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20110201

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee