KR100274268B1 - 멀티스레드 프로세서에서 스레드 스위치 대기 시간을 감소시키기 위한 방법 및 장치 - Google Patents
멀티스레드 프로세서에서 스레드 스위치 대기 시간을 감소시키기 위한 방법 및 장치 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 19
- 230000003247 decreasing effect Effects 0.000 title 1
- 230000004044 response Effects 0.000 claims 1
- 230000006870 function Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/461—Saving 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)
- 멀티스레드 프로세서(multithread processor)에서의 스레드 스위치 대기 시간(thread switch latency)을 감소시키기 위한 방법에 있어서,a) 상기 멀티스레드 프로세서에 의해 현재 실행 중인 활성 스레드(active thread)에 대한 인스트럭션들을 주 인스트럭션 대기열(primary instruction queue) 내에 저장하는 단계,b) 상기 멀티스레드 프로세서에 의해 현재 실행되고 있지 않은 비활성(非活 性) 스레드(dormant thread)에 대한 인스트럭션들을 스레드 스위치 인스 트럭션 대기열(thread switch instruction queue) 내에 저장하는 단계,c) 상기 활성 스레드가 실행되는 동안 상기 주 인스트럭션 대기열로부터 인 스트럭션들을 실행하기 위해 디스패치(dispatch)하는 단계 및d) 스레드 스위치가 발생하는 경우 상기 스레드 스위치 인스트럭션 대기열로 부터 인스트럭션들을 실행하기 위해 디스패치(dispatch)하는 단계를 포함하는 스레드 스위치 대기 시간 감소 방법.
- 제 1항에 있어서,e) 스레드 스위치가 발생할 경우 상기 디스패치하는 단계 d)에서 디스패치되 지 않은 상기 스레드 스위치 인스트럭션 대기열 내의 인스트럭션들을 상 기 주 인스트럭션 대기열로 이송(transfer)하는 단계를 추가로 포함하며, 상기 디스패치하는 단계 d)는 상기 스레드 스위치 인스트럭션 대기열 내에 저장된 인스트럭션들의 일부를 디스패치하는 스레드 스위치 대기 시간 감소 방법.
- 제 1항에 있어서, 상기 방법이f) 상기 스레드 스위치 인스트럭션 대기열 내에 저장하기 위해 상기 비활성 스레드의 인스트럭션들을 인스트럭션 캐쉬 또는 메인 메모리 중 적어도 하나로부터 프리펫치(prefetch)하는 단계를 추가로 포함하는 스레드 스위치 대기 시간 감소 방법.
- 제 3항에 있어서, 상기 프리펫치하는 단계 f)가i) 상기 주 인스트럭션 대기열 내의 임의의 브랜치 인스트럭션들 또는 실행 을 위해 디스패치된 임의의 인스트럭션들이 상기 인스트럭션 캐쉬에 액 세스할 필요가 있는지의 여부를 결정하는 단계,ii) 비활성 스레드 인스트럭션 프리펫치의 결과 인스트럭션 캐쉬의 미스 (miss)가 처리되고 있는지의 여부를 결정하는 단계 및iii) 상기 결정하는 단계 i)이 상기 주 인스트럭션 대기열 내의 브랜치 인스트 럭션들 또는 실행을 위해 디스패치된 인스트럭션들 중 어느 것도 상기 인스트럭션 캐쉬에 액세스할 필요가 없다고 결정하고 또한 상기 결정하 는 단계 ii)가 비활성 스레드 인스트럭션 프리펫치의 결과로 인해 인스트 럭션 캐쉬의 미스(miss)가 처리되고 있지 않다고 결정하는 경우, 상기 활성 스레드에 대한 인스트럭션들 대신에 상기 비활성 스레드에 대한 인스트럭션들을 프리펫치하는 단계를 포함하는 스레드 스위치 대기 시간 감소 방법.
- 제 1항에 있어서, 상기 스레드 스위치 인스트럭션 대기열이 단일 처리 사이클(single processing cycle) 내에 실행하기 위해 디스패치될 수 있는 인스트럭션들보다 더 많은 인스트럭션들을 저장하는 스레드 스위치 대기 시간 감소 방법.
- 제 1항에 있어서, 상기 저장하는 단계 b)가 복수의 비활성 스레드 중의 하나에 대한 인스트럭션들을 저장하는 스레드 스위치 대기 시간 감소 방법.
- 제 1항에 있어서, 상기 저장하는 단계 b)는 복수의 비활성 스레드에 대한 인스트럭션들을 복수의 스레드 스위치 인스트럭션 대기열―여기서 복수의 스레드 스위치 인스트럭션 대기열 각각은 상기 복수의 비활성 스레드 중의 어느 하나와 연관됨―내에 저장하고, 상기 디스패치하는 단계 d)는 스레드 스위치의 결과 활성 상태로 되는 상기 비활성 스레드에 대응하는 상기 스레드 스위치 인스트럭션 대기열로부터 인스트럭션들을 디스패치하는 스위치 대기 시간 감소 방법.
- 스레드 스위치 대기 시간(thread switch latency)을 감소시키며, 멀티스레드 프로세서(multithread processor)에 의해 실행되는 인스트럭션들을 디스패치하는 장치에 있어서,a) 상기 멀티스레드 프로세서에 의해 현재 실행 중인 활성 스레드(active thread)에 대한 인스트럭션들을 저장하는 주 인스트럭션 대기열(primary instruction queue),b) 상기 멀티스레드 프로세서에 의해 현재 실행되고 있지 않은 비활성 스레 드(dormant thread)에 대한 인스트럭션들을 저장하는 적어도 하나의 스레 드 스위치 인스트럭션 대기열(thread switch instruction queue) 및c) 상기 활성 스레드가 실행되는 동안 상기 주 인스트럭션 대기열로부터 인 스트럭션들을 실행하기 위해 디스패치(dispatch)하고, 또한 스레드 스위치 가 발생하는 경우 상기 스레드 스위치 인스트럭션 대기열로부터 인스트 럭션들을 실행하기 위해 디스패치하는 디스패치 수단(dispatching means)을 포함하는 인스트럭션 디스패치 장치.
- 제 8항에 있어서, 상기 디스패치 수단이 상기 스레드 스위치 인스트럭션 대기열 내에 저장된 상기 인스트럭션들 중의 일부를 실행하기 위해 디스패치하고, 스레드 스위치가 발생할 경우 디스패치되지 않은 상기 스레드 스위치 인스트럭션 대기열 내의 인스트럭션들을 실행하기 위해 상기 주 인스트럭션 대기열로 이송(transfer)하는 인스트럭션 디스패치 장치.
- 제 9항에 있어서, 상기 디스패치 수단이 상기 주 인스트럭션 대기열의 출력과 상기 스레드 스위치 인스트럭션 대기열의 출력을 수신하고, 스레드 스위치를 표시하는 스레드 스위치 신호에 따라 상기 주 인스트럭션 대기열의 출력과 상기 스레드 스위치 인스트럭션 대기열의 출력 중 어느 하나를 출력하는 제 1 멀티플렉서 및 상기 제 1 멀티플렉서의 출력과 상기 주 인스트럭션 대기열 내에 저장하기 위한 인스트럭션들을 수신하고, 상기 스레드 스위치 신호에 따라 상기 주 인스트럭션 대기열 내에 저장하기 위한 인스트럭션들과 상기 제 1 멀티플렉서의 출력 중 어느 하나를 출력하는 제 2 멀티플렉서를 포함하는 인스트럭션 디스패치 장치.
- 제 8항에 있어서, 상기 스레드 스위치 인스트럭션 대기열이 인스트럭션 캐쉬 또는 메인 메모리 중 적어도 하나로부터 프리펫치(prefetch)되는 상기 비활성 스레드의 인스트럭션들을 저장하는 인스트럭션 디스패치 장치.
- 제 8항에 있어서, 상기 스레드 스위치 인스트럭션 대기열이 단일 처리 사이클(single processing cycle) 내에 실행하기 위해 디스패치될 수 있는 인스트럭션들보다 더 많은 인스트럭션들을 저장하는 인스트럭션 디스패치 장치.
- 제 8항에 있어서, 상기 스레드 스위치 인스트럭션 대기열이 복수의 비활성 스레드 중의 하나에 대한 인스트럭션들을 저장하는 인스트럭션 디스패치 장치.
- 제 8항에 있어서, 상기 인스트럭션 디스패치 장치는 복수의 비활성 스레드를 저장하는 복수의 스레드 스위치 인스트럭션 대기열―여기서 복수의 스레드 스위치 인스트럭션 대기열 각각은 상기 복수의 비활성 스레드 중의 어느 하나와 연관됨―을 추가로 포함하고, 상기 디스패치 수단은 스레드 스위치의 결과 활성 상태로 되는 상기 비활성 스레드에 대응하는 상기 복수의 스레드 스위치 인스트럭션 대기열 중 하나로부터 인스트럭션들을 디스패치하는 인스트럭션 디스패치 장치.
- 제 8항에 있어서, 상기 디스패치 수단이 상기 주 인스트럭션 대기열에 접속되는 하나의 입력과 상기 스레드 스위치 인스트럭션 대기열에 접속되는 또 다른 입력을 갖는 멀티플렉서를 포함하는 인스트럭션 디스패치 장치.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/829,518 US5907702A (en) | 1997-03-28 | 1997-03-28 | Method and apparatus for decreasing thread switch latency in a multithread processor |
US8/829,518 | 1997-03-28 |
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)
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 |
EP1236088B9 (en) * | 1999-09-01 | 2008-10-08 | Intel Corporation | Register set used in multithreaded parallel processor architecture |
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 |
AU2003231945A1 (en) * | 2002-05-31 | 2003-12-19 | Guang R. Gao | 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 |
US7360064B1 (en) | 2003-12-10 | 2008-04-15 | Cisco Technology, Inc. | Thread interleaving in a multithreaded embedded processor |
US7441101B1 (en) * | 2003-12-10 | 2008-10-21 | Cisco Technology, Inc. | Thread-aware instruction fetching 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 |
CN113168328B (zh) | 2018-12-11 | 2024-01-26 | 三垦电气株式会社 | 处理器和管线处理方法 |
Family Cites Families (13)
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 |
DE69130138T2 (de) * | 1990-06-29 | 1999-05-06 | Digital Equipment Corp., Maynard, Mass. | Sprungvorhersageeinheit für hochleistungsfähigen Prozessor |
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 |
-
1997
- 1997-03-28 US US08/829,518 patent/US5907702A/en not_active Expired - Fee Related
- 1997-11-21 TW TW086117440A patent/TW362194B/zh not_active IP Right Cessation
- 1997-12-02 KR KR1019970065342A patent/KR100274268B1/ko not_active IP Right Cessation
-
1998
- 1998-02-23 GB GB9803618A patent/GB2324392B/en not_active Expired - Lifetime
- 1998-02-26 SG SG1998000434A patent/SG63818A1/en unknown
- 1998-03-05 JP JP05326798A patent/JP3573943B2/ja not_active Expired - Fee Related
- 1998-03-06 CN CN98106048A patent/CN1092360C/zh not_active Expired - Fee Related
- 1998-12-02 HK HK98112653A patent/HK1011567A1/xx not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
GB2324392A (en) | 1998-10-21 |
GB9803618D0 (en) | 1998-04-15 |
JPH10283203A (ja) | 1998-10-23 |
GB2324392B (en) | 2001-09-05 |
US5907702A (en) | 1999-05-25 |
CN1092360C (zh) | 2002-10-09 |
KR19980079506A (ko) | 1998-11-25 |
HK1011567A1 (en) | 1999-07-16 |
CN1195135A (zh) | 1998-10-07 |
SG63818A1 (en) | 1999-03-30 |
JP3573943B2 (ja) | 2004-10-06 |
TW362194B (en) | 1999-06-21 |
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 | |
US6981133B1 (en) | Zero overhead computer interrupts with task switching | |
US5297281A (en) | Multiple sequence processor system | |
KR100745904B1 (ko) | 동시적 멀티스레드 프로세서에서 파이프라인 길이를변경하기 위한 방법 및 회로 | |
KR20180090284A (ko) | 이벤트 기동된 프로그래머블 프리페처 | |
US20070143581A1 (en) | Superscalar data processing apparatus and method | |
JPH02224025A (ja) | コンピューターシステム | |
JPH10275100A (ja) | マルチスレッド・プロセッサ内でパフォーマンスを監視する方法およびシステム | |
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 | |
US5948093A (en) | Microprocessor including an interrupt polling unit configured to poll external devices for interrupts when said microprocessor is in a task switch state | |
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 |