KR100274268B1 - 멀티스레드 프로세서에서 스레드 스위치 대기 시간을 감소시키기 위한 방법 및 장치 - Google Patents

멀티스레드 프로세서에서 스레드 스위치 대기 시간을 감소시키기 위한 방법 및 장치 Download PDF

Info

Publication number
KR100274268B1
KR100274268B1 KR1019970065342A KR19970065342A KR100274268B1 KR 100274268 B1 KR100274268 B1 KR 100274268B1 KR 1019970065342 A KR1019970065342 A KR 1019970065342A KR 19970065342 A KR19970065342 A KR 19970065342A KR 100274268 B1 KR100274268 B1 KR 100274268B1
Authority
KR
South Korea
Prior art keywords
instructions
thread
instruction
instruction queue
thread switch
Prior art date
Application number
KR1019970065342A
Other languages
English (en)
Other versions
KR19980079506A (ko
Inventor
윌리엄 토마스 플린
3세 필립 로저스 힐리어
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 KR19980079506A publication Critical patent/KR19980079506A/ko
Application granted granted Critical
Publication of KR100274268B1 publication Critical patent/KR100274268B1/ko

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/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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
    • 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/3802Instruction prefetching
    • 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
    • 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
    • G06F9/461Saving or restoring of program or task context

Landscapes

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

Abstract

멀티스레드 프로세서 내에서 스레드 스위치 대기 시간(thread switch latency)을 감소시키기 위한 본 발명의 방법 및 장치는 활성 스레드(active thread)에 대한 인스트럭션들을 주 인스트럭션 대기열(primary instruction queue) 내에 저장하고, 비활성(非活性) 스레드(dormant thread)에 대한 스레드 스위치 인스트럭션들(thread switch instructions)을 스레드 스위치 인스트럭션 대기열 내에 저장한다. 활성 스레드는 멀티스레드 프로세서에 의해 현재 처리 중인 스레드이고, 비활성 스레드는 멀티스레드 프로세서에 의해 현재 실행되고 있지 않은 스레드이다. 활성 스레드가 실행 중인 동안, 주 인스트럭션 대기열로부터 인스트럭션들이 실행을 위해 디스패치된다. 스레드 스위치가 발생하면, 스레드 스위치 인스트럭션 대기열로부터 인스트럭션들이 실행을 위해 디스패치되고, 그와 동시에 스레드 스위치 인스트럭션 대기열 내에 저장된 인스트럭션들은 주 인스트럭션 대기열로 이송된다. 이러한 방법으로, 주 인스트럭션 대기열을 비활성 스레드의 인스트럭션들로 리필(refill)시키는데 필요한 시간으로 인해 발생하는 스레드 스위치 대기 시간이 제거된다.

Description

멀티스레드 프로세서에서 스레드 스위치 대기 시간을 감소시키기 위한 방법 및 장치
본 발명은 멀티스레드 프로세서에서 스레드 스위치 대기 시간을 감소시키기 위한 방법 및 장치에 관한 것이다.
고성능 단일칩 멀티프로세서에 관해 현재 가장 흔한 구조(architecture)는 축소 명령어 세트 컴퓨터(RISC)의 구조이다. 반도체 기술이 진보됨에 따라, RISC 구조의 목표는 머신의 거의 매 클록 사이클마다 하나의 인스트럭션의 실행을 개시할 수 있는 프로세서 구조를 개발하는 것이었다. 인스트럭션 당 클록 사이클의 수(clock cycles per instruction: CPI)로 표현되는 상기 수치는 통상 고성능 프로세서용 구조의 특징을 규정(characterize)하는데 사용된다. 인스트럭션의 파이프라인화(instruction pipelining) 및 캐쉬 메모리의 구조적 특징들로 인해 CPI의 개선이 가능하게 되었다. 파이프라인 인스트럭션 실행은 이전에 발행된 인스트럭션들이 실행 종료되기 전에 후속 인스트럭션들의 실행을 시작하도록 해준다. 캐쉬 메모리는 대부분의 경우 메인 메모리의 전체 액세스 시간을 기다리지 않고 인스트럭션 실행이 계속 이루어지도록 해준다.
비록 메인 메모리용으로 사용되는 메모리 디바이스들의 속도가 더 빨라지고 있지만, 이러한 메모리 칩들과 고성능 프로세서 간의 속도차는 점차로 더 벌어지고 있다. 따라서, 현재의 고성능 프로세서에 있어서 대부분의 실행 시간이 캐쉬의 미스(misses)를 대기하는데 소비되고 있으므로, 메모리 대기 시간 허용 한계 테크닉(memory latency tolerance techniques)이 사용되지 않는 한 메모리 액세스 지연이 프로세서 실행 시간의 비율을 증가시킬 것으로 예측된다.
메모리 대기 시간의 허용 한계를 이용하는 공지의 테크닉 중의 하나로 멀티스레딩(multithreading)이 있으며, 이러한 멀티스레딩의 종류로는 하드웨어 멀티스레딩과 소프트웨어 멀티스레딩의 2가지가 있다. 일반적으로, 하드웨어 멀티스레딩은 온-칩에서 몇 개의 타스크 또는 스레드(threads)의 상태를 유지하는 프로세서를 사용한다. 이것은 일반적으로 각 스레드에 대해 프로세서의 레지스터들을 중복시키는 것을 포함한다.
하드웨어 멀티스레딩에는 2가지 기본 형태가 있다. 통상적인 형태는 프로세서 내에서 N개의 스레드 또는 상태를 유지하여 사이클 단위(cycle-by-cycle basis)로 스레드를 인터리브(interleave)한다. 이러한 방법에서는 단일 스레드 내의 인스트럭션들이 분리되기 때문에 모든 파이프라인 종속성이 제거된다. 또 다른 형태의 하드웨어 멀티스레딩은 소정의 긴 대기 시간을 갖는 이벤트(event) 상의 스레드를 스위치시키는 방법이다. 본 발명의 바람직한 실시예는 하드웨어 멀티스레딩을 사용하여 소정의 긴 대기 시간을 갖는 이벤트 상의 스레드들 사이에서 스위치가 일어난다.
그러나, 스레드 스위칭 자체는 다수의 클록 사이클을 필요로 한다. 스레드 스위치로 인한 대기 시간은 대부분 새로운 스레드의 실행을 시작하는데 필요한 인스트럭션 펫치(instruction fetch)에 기인한다. 도 1은 멀티스레드 프로세서의 복수의 파이프라인에 의해 처리되는 인스트럭션들을 디스패치하기 위한 종래 기술의 구조를 예시하고 있다. 도 1에 도시되어 있는 바와 같이, 인스트럭션 전달 멀티플렉서(instruction pass multiplexer) (8)은 제 1 및 제 2 입력을 갖는다. 제 1 입력은 복수의 인스트럭션들을 저장하는 인스트럭션 캐쉬 (4)에 접속된다. 인스트럭션 캐쉬 (4)에 의해 저장되는 인스트럭션들은 현재 실행 중인 스레드인 활성 스레드(active thread) 및 현재 실행되고 있지 않은 하나 이상의 비활성 스레드(dormant thread) 양자에 모두 속해 있다. 인스트럭션 전달 멀티플렉서 (8)의 제 2 입력은 메인 메모리 및/또는 메모리 서브시스템 (2)에 접속된다. 메인 메모리는 각 스레드에 대한 모든 인스트럭션들을 저장하는 반면, 레벨 2 캐쉬와 같은 메모리 서브시스템은 여러 가지 스레드들에 대한 모든 인스트럭션보다는 작지만 인스트럭션 캐쉬 (4)보다는 더 많은 인스트럭션을 저장한다. 도 1에 도시된 바와 같이, 인스트럭션 캐쉬 (4)는 또한 메인 메모리 및/또는 메모리 서브시스템 (2)에 접속된다.
제어 로직(control logic) (6)으로부터 수신된 라인필 바이패스 신호(line fill bypass signal)에 따라, 인스트럭션 전달 멀티플렉서 (8)은 제어 로직 (6)에 의해 인스트럭션 캐쉬 (4) 또는 메인 메모리 및/또는 메모리 서브시스템 (2) 중 어느 하나로부터 주소가 지정된 인스트럭션들을 출력한다. 인스트럭션 전달 멀티플렉서 (8)은 인스트럭션들을 주 인스트럭션 대기열(primary instruction queue) (10)으로 출력한다. 주 인스트럭션 대기열 (10)은 복수의 인스트럭션들을 저장하는데, 주 인스트럭션 대기열 (10)은 멀티스레드 프로세서에 의해 구현되는 복수의 처리 파이프라인에 디스패치하기 위해 상기 복수의 인스트럭션들을 출력한다.
스레드 스위치가 발생하면, 주 인스트럭션 대기열 (10) 내의 인스트럭션들은 무효화되고, 제 1 클록 사이클 동안 활성 스레드로 되는 비활성 스레드의 인스트럭션들에 대한 주소들이 제어 로직 (6)에 의해 발생된다. 제 2 클록 사이클 동안 인스트럭션들은 새로 발생된 인스트럭션 주소들에 기초하여 주소가 지정되고, 제어 로직 (6)이 라인필 바이패스 신호를 출력함으로써 인스트럭션 전달 멀티플렉서 (8)은 인스트럭션 캐쉬 (4)에 접속되는 입력을 선택한다. 만일 주소가 지정된 인스트럭션들이 인스트럭션 캐쉬 (4)에 위치하는 경우, 제 3 클록 사이클 동안 인스트럭션 전달 멀티플렉서 (8)은 이들 인스트럭션들을 주 인스트럭션 대기열 (10)으로 출력하고, 주 인스트럭션 대기열 (10)은 프로세싱 파이프라인들로 디스패치하기 위해 인스트럭션들을 출력한다. 따라서, 활성 스레드로 되는 비활성 스레드의 인스트럭션들이 인스트럭션 캐쉬 (4)에 위치하는 경우, 스레드 스위치가 완료되기 위해서는 3개의 클록 사이클에 해당하는 시간이 걸린다.
물론, 인스트럭션 캐쉬 (4)가 제어 로직 (6)에 의해 주소가 지정되는 활성 스레드로 되는 비활성 스레드의 인스트럭션들을 포함하지 않는 경우, 스레드 스위치를 완료하는데 드는 시간은 인스트럭션 캐쉬의 미스(miss)를 해결하는데 필요한 시간의 양만큼 증가될 것이다.
본 발명의 목적은 멀티스레드 프로세서(multithread processor)에서 스레드 스위치 대기 시간(thread switch latency)을 감소시키기 위한 방법 및 장치를 제공하는 것이다.
본 발명의 다른 목적은 주 인스트럭션 대기열을 리필(refill)하기 위해 스레드 스위치를 수행하는데 필요한 시간을 제거하여 멀티스레드 프로세서에서 스레드 스위치 대기 시간을 감소시키기 위한 방법 및 장치를 제공하는 것이다.
본 발명의 상기 목적 및 기타 다른 목적들은 활성 스레드의 인스트럭션들을 저장하는 주 인스트럭션 대기열 이외에도 비활성 스레드의 인스트럭션들을 저장하는 스레드 스위치 인스트럭션 대기열을 제공함으로써 달성된다. 스레드 스위치가 발생할 때, 스레드 스위치 인스트럭션 대기열 내에 저장된 인스트럭션들이 실행을 위해 출력됨으로써, 주 인스트럭션 대기열이 리필되기를 기다려야 하기 때문에 발생되는 스레드 스위치 인스트럭션 대기 시간이 제거된다.
또한, 활성 스레드로 되는 비활성 스레드의 인스트럭션들이 스레드 스위치 인스트럭션 대기열로부터 출력되는 동안, 스레드 스위치 인스트럭션 대기열에 저장된 인스트럭션들 중 일부가 주 인스트럭션 대기열로 이송된다. 스레드 스위치 인스트럭션 대기열로부터 인스트럭션의 최초 출력이 있은 후에, 인스트럭션들이 실행을 위해 주 인스트럭션 대기열로부터 다시 얻어진다. 주 인스트럭션 대기열은 스레드 스위치 인스트럭션 대기열 내에 원래 저장되었던 인스트럭션들로 프리필(prefill)되어 있기 때문에, 주 인스트럭션 대기열을 필(fill)시키는데 필요한 추가의 지연 발생도 일어나지 않는다.
본 발명의 기타 다른 목적, 특성 및 특징들; 해당 구조의 관련 요소들의 방법, 동작 및 기능; 및 제조면에서도 경제적이라는 점이 본 명세서의 일부를 이루는 후술하는 바람직한 실시예에 대한 상세한 설명 및 첨부 도면들을 참조함으로써 명확해질 것이다. 각 도면에서 유사한 참조 번호는 대응되는 구성요소를 나타낸다.
본 발명은 단지 예시 목적으로 주어진 것으로, 본 발명을 제한하기 위한 것이 아닌 이하에서 기술되는 상세한 설명 및 첨부 도면으로부터 충분히 이해될 것이다.
도 1은 인스트럭션들을 디스패치하기 위한 종래 기술의 구조를 예시한 도면.
도 2는 본 발명에 따라 인스트럭션들을 디스패치하기 위한 구조를 예시한 도면.
* 도면의 주요부분에 대한 부호의 설명
2 : 메인 메모리 및/또는 메모리 서브시스템
4 : 인스트럭션 캐쉬
6 : 제어 로직
8 : 인스트럭션 전달 멀티플렉서
10 : 주 인스트럭션 대기열(primary instruction queue)
12 : 인스트럭션 필 멀티플렉서(instruction fill multiplexer)
14 : 스레드 스위치 인스트럭션 대기열(thread switch instruction queue)
16 : 출력 멀티플렉서
본 발명에 따라 인스트럭션들을 디스패치하기 위한 구조는 인스트럭션 전달 멀티플렉서와 출력 멀티플렉서에 주 인스트럭션 대기열과 함께 병렬로 접속되는 스레드 스위치 인스트럭션 대기열을 포함한다. 스레드 스위치 인스트럭션 대기열은 비활성 스레드의 인스트럭션들을 저장하고, 주 인스트럭션 대기열은 활성 스레드의 인스트럭션들을 저장한다. 스레드 스위치가 발생할 때, 스레드 스위치 인스트럭션 대기열에 저장된 인스트럭션들이 실행을 위해 출력됨으로써, 주 인스트럭션 대기열이 리필되기를 기다려야 하기 때문에 발생되는 스레드 스위치 인스트럭션 대기 시간이 제거된다.
또한, 활성 스레드로 되는 비활성 스레드의 인스트럭션들이 출력 멀티플렉서에 의해 출력되는 동안, 이들 인스트럭션들 중의 일부는 주 인스트럭션 대기열로 이송된다. 스레드 스위치 인스트럭션 대기열로부터 얻어진 인스트럭션들의 최초 출력이 있은 후에, 출력 멀티플렉서는 주 인스트럭션 대기열로부터 얻어진 인스트럭션들을 실행하기 위해 다시 출력한다. 주 인스트럭션 대기열은 스레드 스위치 인스트럭션 대기열에 원래 저장되었던 인스트럭션들로 프리필(prefill)되어 있기 때문에, 주 인스트럭션 대기열을 필(fill)시키는데 필요한 추가의 지연 발생도 일어나지 않는다.
이하에서는, 본 발명에 따라 인스트럭션들을 디스패치하기 위한 구조가 도 2를 참조하여 상세히 설명될 것이다. 도 2에 도시된 바와 같이, 인스트럭션 전달 멀티플렉서 (8), 제어 로직 (6), 인스트럭션 캐쉬 (4), 및 메인 메모리 및/또는 메모리 서브시스템 (2)는 도 1에 도시된 종래 기술의 인스트럭션 디스패치 구조에 대한 상기 설명과 동일한 방법으로 접속되어 있다. 도 1과 마찬가지로, 제어 로직 (6)은 인스트럭션 전달 멀티플렉서 (8)이 인스트럭션 캐쉬 (4) 또는 메인 메모리 및/또는 메모리 서브시스템 (2)로부터 수신한 인스트럭션들을 출력해야만 하는지의 여부를 나타내는 라인필 바이패스 신호를 인스트럭션 전달 멀티플렉서 (8)로 출력한다.
그러나, 본 발명에 따라 인스트럭션들을 디스패치하기 위한 구조는 또한 인스트럭션 필 멀티플렉서(instruction fill multiplexer) (12), 스레드 스위치 인스트럭션 대기열 (14), 및 출력 멀티플렉서 (16)을 포함한다. 인스트럭션 필 멀티플렉서 (12)는 제 1 및 제 2 입력을 갖는다. 제 1 입력은 인스트럭션 전달 멀티플렉서 (8)의 출력에 접속된다. 인스트럭션 필 멀티플렉서 (12)의 제 2 입력은 출력 멀티플렉서 (16)의 출력에 접속된다. 인스트럭션 필 멀티플렉서 (12)는 제어 로직 (6)으로부터 수신된 스레드 스위치 신호에 따라 인스트럭션 전달 멀티플렉서 (8) 또는 출력 멀티플렉서 (16) 중 어느 하나로부터 수신된 인스트럭션들을 주 인스트럭션 대기열 (10)으로 출력한다.
스레드 스위치 인스트럭션 대기열 (14)도 또한 인스트럭션 전달 멀티플렉서 (8)의 출력을 수신하며, 스레드 스위치 인스트럭션 대기열 (14) 및 주 인스트럭션 대기열 (10) 양자는 자신들의 출력을 출력 멀티플렉서 (16)으로 출력한다. 출력 멀티플렉서 (16)은 제어 로직 (6)에 의해 발생된 스레드 스위치 신호에 따라 주 인스트럭션 대기열 (10) 또는 스레드 스위치 인스트럭션 대기열 (14) 중 어느 하나로부터 수신된 인스트럭션들을 선택적으로 출력한다. 출력 멀티플렉서 (16)에 의해 출력된 인스트럭션들은 멀티스레드 프로세서의 복수의 처리 파이프라인들로 디스패치된다.
활성 스레드가 실행되는 동안, 스레드 스위치 신호를 로우(low) 상태로 유지함으로써 인스트럭션 필 멀티플렉서 (12)는 주 인스트럭션 대기열 (10)을 필(fill)시키기 위해 인스트럭션 전달 멀티플렉서 (8)로부터 수신되는 인스트럭션들을 출력하고, 출력 멀티플렉서 (16)은 주 인스트럭션 대기열 (10)으로부터 수신되는 인스트럭션들을 출력한다.
또한, 활성 스레드가 실행되는 동안, 비활성 스레드의 인스트럭션들은 프리펫치(prefetch)되어, 스레드 스위치 인스트럭션 대기열 (14) 내에 저장된다. 스레드 스위치 인스트럭션 대기열 (14) 내에 저장하기 위한 비활성 스레드의 인스트럭션들을 프리펫치하기 위해, 제어 로직 (6)은 주 인스트럭션 대기열 (10) 내에 저장하기 위한 활성 스레드의 인스트럭션들을 프리펫치하도록 정해진 클록 사이클들을 사용한다. 제어 로직 (6)은 1) 스레드 스위치 인스트럭션 대기열 (14)가 아직 비활성 스레드의 인스트럭션들로 로드(load)되어 있지 않은 경우; 2) 비활성 스레드에 대한 인스트럭션들의 프리펫치 결과로 인한 인스트럭션 캐쉬의 미스(miss)가 처리되고 있지 않은 경우; 및 3) 주 인스트럭션 대기열 (10) 내의 모든 브랜치 인스트럭션들 및 복수의 파이프라인에 의해 처리 중인 모든 인스트럭션들 중 어느 것도 인스트럭션 캐쉬 (4)에 액세스할 필요가 없는 경우, 상기 클록 사이클들을 스틸(steal)하게 된다. 만일 상기 조건들이 성립되면, 제어 로직 (6)은 비활성 스레드의 인스트럭션들에 대한 주소를 발생하고, 인스트럭션 캐쉬 (4), 및 메인 메모리 및/또는 메모리 서브시스템 (2) 중 적어도 하나로부터 수신된 인스트럭션들에 액세스하며, 라인필 바이패스 신호를 출력함으로써, 인스트럭션 전달 멀티플렉서 (8)은 비활성 스레드의 프리펫치된 인스트럭션들을 출력한다. 제어 로직 (6)은 또한 스레드 스위치 인스트럭션 대기열 (14)가 상기 프리펫치된 인스트럭션들을 저장하도록 인에이블시키며, 또한 주 인스트럭션 대기열 (10)이 상기 프리펫치된 인스트럭션들을 저장하지 못하도록 디스에이블시킨다. 설명의 편의를 위해, 제어 로직 (6)으로부터 주 인스트럭션 대기열 (10) 및 스레드 스위치 인스트럭션 대기열 (14)로의 인에이블/디스에이블 제어선들은 도시하지 않았다.
주 인스트럭션 대기열 (10)의 크기 및 스레드 스위치 인스트럭션 대기열 (14)의 크기는 원하는 동작 특성에 따라 정해질 수 있다. 그러나, 바람직한 실시예에 있어서, 스레드 스위치 인스트럭션 대기열 (14)의 크기는 스레드 스위치 인스트럭션 대기열 (14)가 복수의 파이프라인에 의해 단일 클록 사이클 내에 수신될 수 있는 인스트럭션들보다 더 많은 양의 인스트럭션들을 저장하도록 정해질 수 있다.
스레드 스위치가 발생하면, 제어 로직 (6)은 스레드 스위치 신호의 상태를 한 클록 사이클 동안 로우(low)에서 하이(high)로 변화시킨다. 그 결과, 출력 멀티플렉서 (16)은 스레드 스위치 인스트럭션 대기열 (14)에 의해 저장된 인스트럭션들을 출력한다. 스레드 스위치 인스트럭션 대기열 (14)는 복수의 파이프라인에 의해 수신될 수 있는 인스트럭션들보다 더 많은 양의 인스트럭션들을 저장하므로, 복수의 파이프라인으로 디스패치되지 않은 인스트럭션들은 인스트럭션 필 멀티플렉서 (12)에 의해 수신된다. 인스트럭션 필 멀티플렉서 (12)는 스레드 스위치 신호의 상태 변화에 따라, 출력 멀티플렉서 (16)에 의해 출력된 인스트럭션들을 주 인스트럭션 대기열 (10)으로 출력한다. 이러한 방법으로, 단일 클록 사이클에서 활성 스레드로 되는 비활성 스레드로부터의 인스트럭션들은 처리 파이프라인으로 디스패치되고, 주 인스트럭션 대기열 (10)으로 이송된다.
상기 클록 사이클이 완료된 후, 스레드 스위치 신호는 로우 상태를 회복(resume)하고, 인스트럭션들은 주 인스트럭션 대기열 (10)으로부터 처리 파이프라인으로 또 다시 디스패치된다. 또한, 제어 로직 (6)은 주 인스트럭션 대기열 (10) 및 스레드 스위치 인스트럭션 대기열 (14)를 필(fill)시키기 위해 인스트럭션들의 프리펫치를 개시한다.
종래 기술의 구조와는 달리, 본 발명에 따른 인스트럭션 디스패치 구조는 인스트럭션 대기열로부터 인스트럭션들을 필(fill)시키고 인스트럭션들의 디스패칭을 개시하는데 필요한 시간에 해당하는 스레드 스위치 대기 시간을 제거한다. 결과적으로, 본 발명은 종래 기술에 비해 스레드 스위치 대기 시간에 있어서 2 사이클에 해당하는 시간의 감소를 달성한다.
본 발명이 도 2에 예시된 실시예에만 제한되지 않는다는 점을 이해하여야 한다. 예를 들어, 본 발명은 상기에서 단지 2개의 스레드를 사용하는 멀티스레드 프로세서에 대해서 기술하였다. 그러나, 상기 멀티스레드 프로세서는 복수의 스레드를 사용할 수 있는데, 이러한 멀티스레드 프로세서에서는 스레드 스위치가 일어날 경우 제어 로직 (6)이 대부분 활성 스레드로 되는 비활성 스레드의 인스트럭션들을 스레드 스위치 인스트럭션 대기열 (14) 내에 저장되도록 해준다. 또 다른 대안으로, 각각이 비활성 스레드에 대응하는 복수의 스레드 스위치 인스트럭션 대기열이 제공될 수 있으며, 인스트럭션 필 멀티플렉서 (12) 및 출력 멀티플렉서 (16)은 상기 추가적인 스레드 스위치 인스트럭션 대기열에 적합하도록 그 크기가 확장될 수 있다.
본 발명의 방법 및 장치에서는 멀티스레드 프로세서에서의 스레드 스위치 대기 시간이 감소되어 주 인스트럭션 대기열을 리필(refill)하기 위해 스레드 스위치를 수행하는데 필요한 시간이 제거된다.
본 발명은 현재까지 고려된 가장 실용적이고 바람직한 실시예와 관련하여 설명되었지만 이러한 개시된 실시예에 제한되는 것은 아니며, 첨부된 특허청구범위의 정신 및 범위 내에 속하는 여러 가지 변형 및 균등한 장치들을 포함하도록 의도하고 있다는 점을 이해하여야 한다.

Claims (15)

  1. 멀티스레드 프로세서(multithread processor)에서의 스레드 스위치 대기 시간(thread switch latency)을 감소시키기 위한 방법에 있어서,
    a) 상기 멀티스레드 프로세서에 의해 현재 실행 중인 활성 스레드(active thread)에 대한 인스트럭션들을 주 인스트럭션 대기열(primary instruction queue) 내에 저장하는 단계,
    b) 상기 멀티스레드 프로세서에 의해 현재 실행되고 있지 않은 비활성(非活 性) 스레드(dormant thread)에 대한 인스트럭션들을 스레드 스위치 인스 트럭션 대기열(thread switch instruction queue) 내에 저장하는 단계,
    c) 상기 활성 스레드가 실행되는 동안 상기 주 인스트럭션 대기열로부터 인 스트럭션들을 실행하기 위해 디스패치(dispatch)하는 단계 및
    d) 스레드 스위치가 발생하는 경우 상기 스레드 스위치 인스트럭션 대기열로 부터 인스트럭션들을 실행하기 위해 디스패치(dispatch)하는 단계를 포함하는 스레드 스위치 대기 시간 감소 방법.
  2. 제 1항에 있어서,
    e) 스레드 스위치가 발생할 경우 상기 디스패치하는 단계 d)에서 디스패치되 지 않은 상기 스레드 스위치 인스트럭션 대기열 내의 인스트럭션들을 상 기 주 인스트럭션 대기열로 이송(transfer)하는 단계를 추가로 포함하며, 상기 디스패치하는 단계 d)는 상기 스레드 스위치 인스트럭션 대기열 내에 저장된 인스트럭션들의 일부를 디스패치하는 스레드 스위치 대기 시간 감소 방법.
  3. 제 1항에 있어서, 상기 방법이
    f) 상기 스레드 스위치 인스트럭션 대기열 내에 저장하기 위해 상기 비활성 스레드의 인스트럭션들을 인스트럭션 캐쉬 또는 메인 메모리 중 적어도 하나로부터 프리펫치(prefetch)하는 단계를 추가로 포함하는 스레드 스위치 대기 시간 감소 방법.
  4. 제 3항에 있어서, 상기 프리펫치하는 단계 f)가
    i) 상기 주 인스트럭션 대기열 내의 임의의 브랜치 인스트럭션들 또는 실행 을 위해 디스패치된 임의의 인스트럭션들이 상기 인스트럭션 캐쉬에 액 세스할 필요가 있는지의 여부를 결정하는 단계,
    ii) 비활성 스레드 인스트럭션 프리펫치의 결과 인스트럭션 캐쉬의 미스 (miss)가 처리되고 있는지의 여부를 결정하는 단계 및
    iii) 상기 결정하는 단계 i)이 상기 주 인스트럭션 대기열 내의 브랜치 인스트 럭션들 또는 실행을 위해 디스패치된 인스트럭션들 중 어느 것도 상기 인스트럭션 캐쉬에 액세스할 필요가 없다고 결정하고 또한 상기 결정하 는 단계 ii)가 비활성 스레드 인스트럭션 프리펫치의 결과로 인해 인스트 럭션 캐쉬의 미스(miss)가 처리되고 있지 않다고 결정하는 경우, 상기 활성 스레드에 대한 인스트럭션들 대신에 상기 비활성 스레드에 대한 인스트럭션들을 프리펫치하는 단계를 포함하는 스레드 스위치 대기 시간 감소 방법.
  5. 제 1항에 있어서, 상기 스레드 스위치 인스트럭션 대기열이 단일 처리 사이클(single processing cycle) 내에 실행하기 위해 디스패치될 수 있는 인스트럭션들보다 더 많은 인스트럭션들을 저장하는 스레드 스위치 대기 시간 감소 방법.
  6. 제 1항에 있어서, 상기 저장하는 단계 b)가 복수의 비활성 스레드 중의 하나에 대한 인스트럭션들을 저장하는 스레드 스위치 대기 시간 감소 방법.
  7. 제 1항에 있어서, 상기 저장하는 단계 b)는 복수의 비활성 스레드에 대한 인스트럭션들을 복수의 스레드 스위치 인스트럭션 대기열―여기서 복수의 스레드 스위치 인스트럭션 대기열 각각은 상기 복수의 비활성 스레드 중의 어느 하나와 연관됨―내에 저장하고, 상기 디스패치하는 단계 d)는 스레드 스위치의 결과 활성 상태로 되는 상기 비활성 스레드에 대응하는 상기 스레드 스위치 인스트럭션 대기열로부터 인스트럭션들을 디스패치하는 스위치 대기 시간 감소 방법.
  8. 스레드 스위치 대기 시간(thread switch latency)을 감소시키며, 멀티스레드 프로세서(multithread processor)에 의해 실행되는 인스트럭션들을 디스패치하는 장치에 있어서,
    a) 상기 멀티스레드 프로세서에 의해 현재 실행 중인 활성 스레드(active thread)에 대한 인스트럭션들을 저장하는 주 인스트럭션 대기열(primary instruction queue),
    b) 상기 멀티스레드 프로세서에 의해 현재 실행되고 있지 않은 비활성 스레 드(dormant thread)에 대한 인스트럭션들을 저장하는 적어도 하나의 스레 드 스위치 인스트럭션 대기열(thread switch instruction queue) 및
    c) 상기 활성 스레드가 실행되는 동안 상기 주 인스트럭션 대기열로부터 인 스트럭션들을 실행하기 위해 디스패치(dispatch)하고, 또한 스레드 스위치 가 발생하는 경우 상기 스레드 스위치 인스트럭션 대기열로부터 인스트 럭션들을 실행하기 위해 디스패치하는 디스패치 수단(dispatching means)을 포함하는 인스트럭션 디스패치 장치.
  9. 제 8항에 있어서, 상기 디스패치 수단이 상기 스레드 스위치 인스트럭션 대기열 내에 저장된 상기 인스트럭션들 중의 일부를 실행하기 위해 디스패치하고, 스레드 스위치가 발생할 경우 디스패치되지 않은 상기 스레드 스위치 인스트럭션 대기열 내의 인스트럭션들을 실행하기 위해 상기 주 인스트럭션 대기열로 이송(transfer)하는 인스트럭션 디스패치 장치.
  10. 제 9항에 있어서, 상기 디스패치 수단이 상기 주 인스트럭션 대기열의 출력과 상기 스레드 스위치 인스트럭션 대기열의 출력을 수신하고, 스레드 스위치를 표시하는 스레드 스위치 신호에 따라 상기 주 인스트럭션 대기열의 출력과 상기 스레드 스위치 인스트럭션 대기열의 출력 중 어느 하나를 출력하는 제 1 멀티플렉서 및 상기 제 1 멀티플렉서의 출력과 상기 주 인스트럭션 대기열 내에 저장하기 위한 인스트럭션들을 수신하고, 상기 스레드 스위치 신호에 따라 상기 주 인스트럭션 대기열 내에 저장하기 위한 인스트럭션들과 상기 제 1 멀티플렉서의 출력 중 어느 하나를 출력하는 제 2 멀티플렉서
    를 포함하는 인스트럭션 디스패치 장치.
  11. 제 8항에 있어서, 상기 스레드 스위치 인스트럭션 대기열이 인스트럭션 캐쉬 또는 메인 메모리 중 적어도 하나로부터 프리펫치(prefetch)되는 상기 비활성 스레드의 인스트럭션들을 저장하는 인스트럭션 디스패치 장치.
  12. 제 8항에 있어서, 상기 스레드 스위치 인스트럭션 대기열이 단일 처리 사이클(single processing cycle) 내에 실행하기 위해 디스패치될 수 있는 인스트럭션들보다 더 많은 인스트럭션들을 저장하는 인스트럭션 디스패치 장치.
  13. 제 8항에 있어서, 상기 스레드 스위치 인스트럭션 대기열이 복수의 비활성 스레드 중의 하나에 대한 인스트럭션들을 저장하는 인스트럭션 디스패치 장치.
  14. 제 8항에 있어서, 상기 인스트럭션 디스패치 장치는 복수의 비활성 스레드를 저장하는 복수의 스레드 스위치 인스트럭션 대기열―여기서 복수의 스레드 스위치 인스트럭션 대기열 각각은 상기 복수의 비활성 스레드 중의 어느 하나와 연관됨―을 추가로 포함하고, 상기 디스패치 수단은 스레드 스위치의 결과 활성 상태로 되는 상기 비활성 스레드에 대응하는 상기 복수의 스레드 스위치 인스트럭션 대기열 중 하나로부터 인스트럭션들을 디스패치하는 인스트럭션 디스패치 장치.
  15. 제 8항에 있어서, 상기 디스패치 수단이 상기 주 인스트럭션 대기열에 접속되는 하나의 입력과 상기 스레드 스위치 인스트럭션 대기열에 접속되는 또 다른 입력을 갖는 멀티플렉서를 포함하는 인스트럭션 디스패치 장치.
KR1019970065342A 1997-03-28 1997-12-02 멀티스레드 프로세서에서 스레드 스위치 대기 시간을 감소시키기 위한 방법 및 장치 KR100274268B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US8/829,518 1997-03-28
US08/829,518 US5907702A (en) 1997-03-28 1997-03-28 Method and apparatus for decreasing thread switch latency in a multithread processor

Publications (2)

Publication Number Publication Date
KR19980079506A KR19980079506A (ko) 1998-11-25
KR100274268B1 true KR100274268B1 (ko) 2000-12-15

Family

ID=25254763

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970065342A KR100274268B1 (ko) 1997-03-28 1997-12-02 멀티스레드 프로세서에서 스레드 스위치 대기 시간을 감소시키기 위한 방법 및 장치

Country Status (8)

Country Link
US (1) US5907702A (ko)
JP (1) JP3573943B2 (ko)
KR (1) KR100274268B1 (ko)
CN (1) CN1092360C (ko)
GB (1) GB2324392B (ko)
HK (1) HK1011567A1 (ko)
SG (1) SG63818A1 (ko)
TW (1) TW362194B (ko)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5835705A (en) * 1997-03-11 1998-11-10 International Business Machines Corporation Method and system for performance per-thread monitoring in a multithreaded processor
US6018759A (en) * 1997-12-22 2000-01-25 International Business Machines Corporation Thread switch tuning tool for optimal performance in a computer processor
US6044447A (en) * 1998-01-30 2000-03-28 International Business Machines Corporation Method and apparatus for communicating translation command information in a multithreaded environment
US6457064B1 (en) * 1998-04-27 2002-09-24 Sun Microsystems, Inc. Method and apparatus for detecting input directed to a thread in a multi-threaded process
US20010032307A1 (en) * 1998-12-30 2001-10-18 Joseph Rohlman Micro-instruction queue for a microprocessor instruction pipeline
AU7098600A (en) * 1999-09-01 2001-03-26 Intel Corporation Instruction for multithreaded parallel processor
KR100678930B1 (ko) * 1999-10-11 2007-02-07 삼성전자주식회사 디지털 시그널 프로세서를 위한 실시간 제어 시스템
US6629236B1 (en) 1999-11-12 2003-09-30 International Business Machines Corporation Master-slave latch circuit for multithreaded processing
US6931641B1 (en) 2000-04-04 2005-08-16 International Business Machines Corporation Controller for multiple instruction thread processors
US7093109B1 (en) 2000-04-04 2006-08-15 International Business Machines Corporation Network processor which makes thread execution control decisions based on latency event lengths
US20030188141A1 (en) * 2002-03-29 2003-10-02 Shailender Chaudhry Time-multiplexed speculative multi-threading to support single-threaded applications
US7139898B1 (en) * 2000-11-03 2006-11-21 Mips Technologies, Inc. Fetch and dispatch disassociation apparatus for multistreaming processors
US7234139B1 (en) * 2000-11-24 2007-06-19 Catharon Productions, Inc. Computer multi-tasking via virtual threading using an interpreter
US8762581B2 (en) * 2000-12-22 2014-06-24 Avaya Inc. Multi-thread packet processor
US7149880B2 (en) * 2000-12-29 2006-12-12 Intel Corporation Method and apparatus for instruction pointer storage element configuration in a simultaneous multithreaded processor
US7320065B2 (en) 2001-04-26 2008-01-15 Eleven Engineering Incorporated Multithread embedded processor with input/output capability
US6965982B2 (en) * 2001-06-29 2005-11-15 International Business Machines Corporation Multithreaded processor efficiency by pre-fetching instructions for a scheduled thread
WO2003102758A1 (en) * 2002-05-31 2003-12-11 University Of Delaware Method and apparatus for real-time multithreading
US7275247B2 (en) * 2002-09-19 2007-09-25 International Business Machines Corporation Method and apparatus for handling threads in a data processing system
US7062606B2 (en) * 2002-11-01 2006-06-13 Infineon Technologies Ag Multi-threaded embedded processor using deterministic instruction memory to guarantee execution of pre-selected threads during blocking events
US7076616B2 (en) * 2003-03-24 2006-07-11 Sony Corporation Application pre-launch to reduce user interface latency
US7496915B2 (en) * 2003-04-24 2009-02-24 International Business Machines Corporation Dynamic switching of multithreaded processor between single threaded and simultaneous multithreaded modes
US20040226011A1 (en) * 2003-05-08 2004-11-11 International Business Machines Corporation Multi-threaded microprocessor with queue flushing
US7653904B2 (en) * 2003-09-26 2010-01-26 Intel Corporation System for forming a critical update loop to continuously reload active thread state from a register storing thread state until another active thread is detected
US8140829B2 (en) * 2003-11-20 2012-03-20 International Business Machines Corporation Multithreaded processor and method for switching threads by swapping instructions between buffers while pausing execution
US7430737B2 (en) * 2003-12-04 2008-09-30 Sun Microsystems, Inc. Processor and method for supporting compiler directed multithreading management
US7441101B1 (en) * 2003-12-10 2008-10-21 Cisco Technology, Inc. Thread-aware instruction fetching in a multithreaded embedded processor
US7360064B1 (en) 2003-12-10 2008-04-15 Cisco Technology, Inc. Thread interleaving in a multithreaded embedded processor
US7617499B2 (en) * 2003-12-18 2009-11-10 International Business Machines Corporation Context switch instruction prefetching in multithreaded computer
US7493621B2 (en) * 2003-12-18 2009-02-17 International Business Machines Corporation Context switch data prefetching in multithreaded computer
US7206922B1 (en) 2003-12-30 2007-04-17 Cisco Systems, Inc. Instruction memory hierarchy for an embedded processor
US8074051B2 (en) * 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
US20050246461A1 (en) * 2004-04-29 2005-11-03 International Business Machines Corporation Scheduling threads in a multi-processor computer
US20050270297A1 (en) * 2004-06-08 2005-12-08 Sony Corporation And Sony Electronics Inc. Time sliced architecture for graphics display system
US8099533B2 (en) * 2004-08-03 2012-01-17 Nxp B.V. Controller and a method for controlling the communication between a processor and external peripheral device
US7487503B2 (en) 2004-08-12 2009-02-03 International Business Machines Corporation Scheduling threads in a multiprocessor computer
US20060112208A1 (en) * 2004-11-22 2006-05-25 International Business Machines Corporation Interrupt thresholding for SMT and multi processor systems
GB0516474D0 (en) * 2005-08-10 2005-09-14 Symbian Software Ltd Pre-emptible context switching in a computing device
US7913255B2 (en) * 2005-10-20 2011-03-22 Qualcomm Incorporated Background thread processing in a multithread digital signal processor
US7873816B2 (en) * 2008-11-20 2011-01-18 International Business Machines Corporation Pre-loading context states by inactive hardware thread in advance of context switch
CN102426553B (zh) * 2011-11-11 2014-05-28 中国科学技术大学 基于双缓存预读的向用户传输数据的方法和装置
WO2013113595A1 (en) * 2012-01-31 2013-08-08 International Business Machines Corporation Major branch instructions with transactional memory
US9170968B2 (en) * 2012-09-27 2015-10-27 Intel Corporation Device, system and method of multi-channel processing
JP2015106167A (ja) * 2013-11-28 2015-06-08 ソニー株式会社 情報処理装置、情報処理方法および記憶媒体
US20160283233A1 (en) * 2015-03-24 2016-09-29 Freescale Semiconductor, Inc. Computer systems and methods for context switching
WO2020121416A1 (ja) * 2018-12-11 2020-06-18 サンケン電気株式会社 プロセッサ及びパイプライン処理方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4901230A (en) * 1983-04-25 1990-02-13 Cray Research, Inc. Computer vector multiprocessing control with multiple access memory and priority conflict resolution method
US4926323A (en) * 1988-03-03 1990-05-15 Advanced Micro Devices, Inc. Streamlined instruction processor
EP0381655A3 (en) * 1989-01-31 1992-12-02 International Business Machines Corporation Method for synchronizing the dispatching of tasks among multitasking operating systems
US5113515A (en) * 1989-02-03 1992-05-12 Digital Equipment Corporation Virtual instruction cache system using length responsive decoded instruction shifting and merging with prefetch buffer outputs to fill instruction buffer
US5179702A (en) * 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
US5226130A (en) * 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US5109512A (en) * 1990-05-31 1992-04-28 International Business Machines Corporation Process for dispatching tasks among multiple information processors
US5452452A (en) * 1990-06-11 1995-09-19 Cray Research, Inc. System having integrated dispatcher for self scheduling processors to execute multiple types of processes
EP0463965B1 (en) * 1990-06-29 1998-09-09 Digital Equipment Corporation Branch prediction unit for high-performance processor
US5357617A (en) * 1991-11-22 1994-10-18 International Business Machines Corporation Method and apparatus for substantially concurrent multiple instruction thread processing by a single pipeline processor
US5515538A (en) * 1992-05-29 1996-05-07 Sun Microsystems, Inc. Apparatus and method for interrupt handling in a multi-threaded operating system kernel
US5442756A (en) * 1992-07-31 1995-08-15 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor
US5490272A (en) * 1994-01-28 1996-02-06 International Business Machines Corporation Method and apparatus for creating multithreaded time slices in a multitasking operating system

Also Published As

Publication number Publication date
SG63818A1 (en) 1999-03-30
GB2324392A (en) 1998-10-21
JPH10283203A (ja) 1998-10-23
JP3573943B2 (ja) 2004-10-06
CN1195135A (zh) 1998-10-07
HK1011567A1 (en) 1999-07-16
TW362194B (en) 1999-06-21
KR19980079506A (ko) 1998-11-25
GB2324392B (en) 2001-09-05
CN1092360C (zh) 2002-10-09
US5907702A (en) 1999-05-25
GB9803618D0 (en) 1998-04-15

Similar Documents

Publication Publication Date Title
KR100274268B1 (ko) 멀티스레드 프로세서에서 스레드 스위치 대기 시간을 감소시키기 위한 방법 및 장치
EP0933698B1 (en) Probing computer memory latency
US6061710A (en) Multithreaded processor incorporating a thread latch register for interrupt service new pending threads
US6295600B1 (en) Thread switch on blocked load or store using instruction thread field
US6205543B1 (en) Efficient handling of a large register file for context switching
US7065632B1 (en) Method and apparatus for speculatively forwarding storehit data in a hierarchical manner
US8156287B2 (en) Adaptive data prefetch
US6549985B1 (en) Method and apparatus for resolving additional load misses and page table walks under orthogonal stalls in a single pipeline processor
US6981133B1 (en) Zero overhead computer interrupts with task switching
US5297281A (en) Multiple sequence processor system
KR100745904B1 (ko) 동시적 멀티스레드 프로세서에서 파이프라인 길이를변경하기 위한 방법 및 회로
US20070143581A1 (en) Superscalar data processing apparatus and method
JPH02224025A (ja) コンピューターシステム
JPH10275100A (ja) マルチスレッド・プロセッサ内でパフォーマンスを監視する方法およびシステム
KR20180090284A (ko) 이벤트 기동된 프로그래머블 프리페처
WO1987004543A1 (en) Instruction memory system
JPH06332697A (ja) データ処理システム
US6470444B1 (en) Method and apparatus for dividing a store operation into pre-fetch and store micro-operations
US7725659B2 (en) Alignment of cache fetch return data relative to a thread
US5878252A (en) Microprocessor configured to generate help instructions for performing data cache fills
KR100252569B1 (ko) 비순차적액세스에대해저유효대기시간을가진파이프라인방식캐시시스템
US6983359B2 (en) Processor and method for pre-fetching out-of-order instructions
US5897654A (en) Method and system for efficiently fetching from cache during a cache fill operation
US6016532A (en) Method for handling data cache misses using help instructions
US6675287B1 (en) Method and apparatus for store forwarding using a response buffer data path in a write-allocate-configurable microprocessor

Legal Events

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

Payment date: 20100824

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee