KR20060111626A - 프로세서 내에서의 다수의 동시 물리 스레드로부터의다수의 논리 스레드의 디커플링 - Google Patents
프로세서 내에서의 다수의 동시 물리 스레드로부터의다수의 논리 스레드의 디커플링 Download PDFInfo
- Publication number
- KR20060111626A KR20060111626A KR1020067012966A KR20067012966A KR20060111626A KR 20060111626 A KR20060111626 A KR 20060111626A KR 1020067012966 A KR1020067012966 A KR 1020067012966A KR 20067012966 A KR20067012966 A KR 20067012966A KR 20060111626 A KR20060111626 A KR 20060111626A
- Authority
- KR
- South Korea
- Prior art keywords
- thread
- logical
- threads
- state
- triggering event
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 51
- 230000015654 memory Effects 0.000 claims description 20
- 238000013507 mapping Methods 0.000 claims description 5
- 238000012544 monitoring process Methods 0.000 claims 12
- 238000013459 approach Methods 0.000 abstract description 8
- 230000007704 transition Effects 0.000 abstract description 7
- 238000007726 management method Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000012360 testing method Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013468 resource allocation Methods 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/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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- 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
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Debugging And Monitoring (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
스레드를 관리하는 시스템 및 방법에서는 다수의 논리 스레드를 다수의 동시 물리 스레드로 지원하는데, 논리 스레드의 수는 물리 스레드의 수보다 더 많거나 더 적게 될 수 있다. 한 접근법에서, 다수의 논리 스레드의 각각은 대기 상태, 활성 상태, 드레인 상태 및 정지 상태 중의 한 상태로 유지된다. 상태 머신 및 하드웨어 시퀀서는 트리거링 이벤트 및 논리 스레드들 내에서 인터럽트가능 시점이 마주쳤는지 여부에 기초하여 논리 스레드들을 상태들 사이에서 천이시키는데 사용될 수 있다. 논리 스레드는, 예를 들어 우선순위, 성능 또는 공정성 목표에 부합하도록 물리 스레드에 맞춰 스케쥴링된다. 또한, 이들 및 다른 목표에 부응하기 위해 각각의 논리 스레드에 이용가능한 자원을 지정할 수 있다. 한 예에서, 하나의 논리 스레드는 어느 물리 스레드가 위임될 것인지 선택할 때까지, 2개 이상의 물리 스레드를 추론적으로 사용할 수 있다.
논리 스레드, 물리 스레드, 상태 머신, 트리거링 이벤트, 인터럽트가능 시점
Description
본 발명의 실시예들은 일반적으로 컴퓨터에 관한 것이다. 더욱 구체적으로, 실시예들은 동시 실행 스레드를 갖는 컴퓨터 아키텍처의 향상에 관한 것이다.
최신 컴퓨터의 향상된 기능에 대한 요구가 계속 늘어남에 따라, 제조자뿐만 아니라 프로세서 설계자에게 여러 도전과제들이 주어진다. 예를 들어, 인터넷 및 멀티-미디어 애플리케이션의 지속적인 사용 증가는 프로세서 및 메모리 자원들로의 액세스를 동시에 요구하는 다수의 프로세스, 또는 실행 스레드를 초래했다. 하나의 프로세서가 동시에 다수의 스레드를 실행할 수 있게 하는 하이퍼-스레딩(hyper-threading)과 같은 기술의 진보가 프로세서 처리량을 증가시켰지만, 상당한 개선의 여지가 남아있다. 특히, 종래의 접근법은 스레드의 논리 컴포넌트를 스레드의 물리 컴포넌트에 결합시키는 것이다. 불행히도, 스레드의 물리 컴포넌트로의 스레드의 논리 컴포넌트의 결합은 추론(speculation)뿐만 아니라 처리량에 관한 문제를 나타낼 수 있다. 예를 들어, 처리량을 증가시키는 한가지 접근법은 동시 스레드의 수를 증가시키는 것이었을 것이다. 그러나, 주어진 프로세서 내에서의 물리적 자 원은 제조뿐만 아니라 설계에 관련된 여러 비용 요인에 의해 제한된다. 결과적으로, 스레드 수를 증가시킴으로써 프로세서 처리량이 증가될 수 있는 한도는 실제 관련사항에 의해 제한된다. 그러므로, 실제 스레드 수의 증가를 요구하지 않으면서 유효한 동시 스레드의 수가 증가될 수 있게 하는 멀티-스레딩 방법이 필요하다.
더구나, 논리 컴포넌트가 2개 이상의 스레드 물리 컴포넌트 상에서 실행할 수 있게 하는 추론은 각 스레드의 논리 컴포넌트를 스레드의 물리 컴포넌트에 결합시키는 종래 기술 하에서는 달성될 수 없다. 결과적으로, 프로세서 성능이 개선될 수 있는 한도도 제한된다. 그러므로, 추론적 실행을 가능하게 하는 멀티-스레딩 방법이 필요하다.
본 발명의 실시예의 여러 장점들은 첨부 도면을 참조하여 다음의 상세한 설명 및 첨부된 청구범위를 읽어봄으로써 본 분야에 숙련된 기술자에게 명백해질 것이다.
도 1은 본 발명의 일 실시예에 따른 상태 머신의 예를 도시한 도면.
도 2는 본 발명의 일 실시예에 따라 논리 스레드를 활성 상태(active state)로 유지하는 프로세스의 예를 도시한 흐름도.
도 3은 본 발명의 일 실시예에 따라 논리 스레드를 드레인 상태(drain state)로 유지하는 프로세스의 예를 도시한 흐름도.
도 4는 본 발명의 일 실시예에 따라 논리 스레드를 정지 상태(stall state)로 유지하는 프로세스의 예를 도시한 흐름도.
도 5는 본 발명의 일 실시예에 따라 논리 스레드를 대기 상태(wait state)로 유지하는 프로세스의 예를 도시한 흐름도.
도 6은 본 발명의 일 실시예에 따른 스레드 관리 표를 도시한 도면.
도 7은 본 발명의 일 실시예에 따른 동작의 처리량 모드의 예를 도시한 도면.
도 8은 본 발명의 대안적인 실시예에 따른 동작의 추론 모드의 예를 도시한 도면.
도 9는 본 발명의 일 실시예에 따른 컴퓨터 시스템의 예를 도시한 도면.
스레드를 관리하는 시스템 및 방법은 종래의 접근법들과 관련된 제조 및 설계 단점없이 더 높은 효율을 달성하기 위해 다수의 동시 물리 스레드로 다수의 논리 스레드를 지원하는 것을 제공한다. 도 1은 다수의 논리 스레드의 각각을 대기 상태(12), 활성 상태(14), 드레인 상태(16) 및 정지 상태(18) 중의 한 상태로 유지하는 기술을 나타내는 다이어그램(10)을 도시한 것이다. 각각의 논리 스레드는 트리거링 이벤트가 대기시간(latency), 공정성, 우선순위 등과 같은 임의의 수의 관련사항에 관련될 수 있는 경우에, 하나 이상의 트리거링 이벤트가 나타날 때까지 활성 상태(14)로 남아있는다. 트리거링 이벤트가 나타날 때, 논리 스레드는 프로세서가 논리 스레드 내의 인터럽트가능 시점(interruptible point)을 찾는 드레인 상태(16)로 들어간다. 인터럽트가능 시점은 논리 스레드의 상태가 저장될 수 있는 시점으로 정의된다. 인터럽트가능 시점은 또한 마주친 트리거링 이벤트의 유형에 좌우된다. 일단 인터럽트가능 시점에 마주치게 되면, 논리 스레드는, 어떤 트리거링 이벤트도 나타나지 않을 때까지, 또는 오리지널 트리거링 이벤트보다 더 높은 우선순위를 갖는 다른 이벤트가 신호로 알려질 때까지 정지 상태(18)로 놓인다. 이러한 경우들 중의 어느 한 경우가 존재할 때, 논리 스레드는 대기 상태(12)로 전환된다. 예를 들어, 트리거링 이벤트가 캐시 미스(cache miss)일 때, 논리 스레드는 캐시 미스가 메모리로부터 서비스되었을 때까지 정지 상태(18)로 남아있는다. 논리 스레드는 이용가능한 물리 스레드에 마주치게 될 때까지 대기 상태로 남아 있고, 논리 스레드는 활성 상태(14)로 전환될 수 있다. 그러므로, 논리 스레드들이 활성 상태(14)로부터 "축출"되면, 다른 논리 스레드들이 끊임없이 활성 상태(14)로 전환될 수 있다. 결과적으로, 유일한 디커플링 효과는 논리 스레드들과 동시 물리 스레드들 사이에서 얻어진다.
이제 도 2를 참조하면, 논리 스레드를 활성 상태로 유지하는 한가지 방법이 더욱 상세하게 도시된다. 구체적으로, 프로세싱 블럭(20)에서는 논리 스레드와 관련된 매크로-명령어를 물리 스레드의 다음 명령어 지시자(next instruction pointer: NIP)에 매핑한다. 논리 스레드는 마이크로-연산(micro-operation)(또는 uop)들로 디코드될 수 있는 매크로 명령어들의 시퀀스로 간주될 수 있다. 예를 들어, "호(call)" 매크로-명령어는 "저장", "테스트" 및 "점프" uop들로 디코드될 수 있다. 각각의 동시 물리 스레드는 프로세스될 매크로-명령어의 주소를 효과적으로 나타내는 대응하는 NIP를 갖는다. 따라서, 주어진 논리 스레드의 매크로-명령어들이 NIP에 매핑될 때, 그 매크로-명령어들은 페치되고 uop들로 디코드되고, 나머지 프로세서 파이프라인으로 공급될 수 있다.
이들 기술은 RISC(reduced instruction set computer) 아키텍처 및 CISC(complex instruction set computer) 아키텍처에 동일하게 적용된다. 매크로-명령어의 마이크로-연산 시퀀스로의 변환은 반드시 요구되는 것은 아니다.
블럭(22)에서는 하나 이상의 트리거링 이벤트에 대해 프로세서를 모니터링한다. 트리거링 이벤트는 메모리 대기시간 이벤트, 휴면(sleep) 요청, 및 스레드 우선순위 이벤트를 포함할 수 있는데, 이것에 제한되지는 않는다. 예를 들어, 메모리 대기시간 이벤트는 비교적 긴 대기시간을 갖는 메모리로부터 데이터가 판독될 것을 필요로 하는 캐시 미스일 수 있다. 이 경우에, 트리거링 이벤트는 실행 파이프라인으로부터 스레드 관리 로직으로 전달된다. 다른 예로서, 메모리 대기지연 이벤트는 (더 긴 대기시간을 갖는) 메모리 계층을 더욱 떨어뜨리는 메모리들로부터 데이터 또는 명령어가 페치될 것을 필요로 하는 예측 캐시 미스일 수 있다. 캐시 미스의 예측은 임의의 이용가능한 기술로 행해질 수 있다. 예를 들어, 한가지 알고리즘은 디코드시에, 로드(load) 마이크로-연산이 미해결 분기(branch)보다 더 나중에 생긴 것일 때, 더 높은 확률의 로드 마이크로-연산의 캐시 미스를 할당할 수 있다. 특정 예측 기술은 본 설명의 중심이 아니고, 상기 예는 트리거링 이벤트를 생성하는 하나의 방식일 뿐이다. 트리거링 이벤트는 또한, 조건부 분기가 단지 약한 신뢰만으로 예측된다는 사실일 수 있고 - 대기 상태에서 이용가능한 논리 스레드가 있는 상황에서는, 현재의 논리 스레드를 추론적 모드로 실행하는 것보다 이들 논리 스레드를 실행하는 것이 더욱 효율적일 수 있다. 예측 신뢰의 강도는 또한 현재의 논리 스레드의 우선순위에 좌우될 수 있다.
다른 유형의 트리거링 이벤트는, 예를 들어 HALT 또는 MONITOR/MWAIT 명령어가 실행될 때, 특정 주소로의 저장에 마주치게 되거나 "소생(revive)" 신호가 수신될 때까지(예를 들어, 외부 인터럽트) 스레드 관리 아키텍처에게 논리 스레드의 프로세싱을 중단하라고 명령할 수 있는 휴면 요청이다. 트리거링 이벤트는 또한 활성 논리 스레드보다 더 높은 우선순위를 갖는 다른 논리 스레드로부터의 인터럽트 커맨드일 수 있다. 그러한 높은 우선순위 논리 스레드의 예는 물리 스레드로의 액세스가 얻어질 수 없는 경우에 바람직하지 않은 표시 "흔들림(flickering)"을 나타낼 수 있는 화면 갱신 스레드일 수 있다. 더구나, 스레드 우선순위 이벤트는 논리 스레드에 의한 동시 물리 스레드로의 대등한 또는 가중된 액세스를 허용하는 공정성 규칙에 따라 발생할 수 있다.
어떤 경우든, 블럭(24)에서, 하나 이상의 트리거링 이벤트가 나타났다고 판정되면, 블럭(26)에서 매핑이 정지될 수 있고, 블럭(28)에서 논리 스레드가 드레인 상태로 전환된다. 블럭(30)에서는 하나 이상의 트리거링 이벤트가 나타날 때까지 논리 스레드를 활성 상태로 유지한다.
도 3은 논리 스레드를 드레인 상태로 유지하는 한가지 접근법을 더욱 상세하게 도시한 것이다. 논리 스레드는 블럭(32)에서 인터럽트가능 시점에 대해 모니터링된다. 상술된 바와 같이, 논리 스레드가 프로세싱될 때, 매크로-명령어는 전형적으로 하나 이상의 uop로 디코드된다. uop는 매크로-명령어의 시작(BOM) 또는 매크로-명령어의 말단(EOM)으로 적절하게 표시될 수 있다. 그러한 경우에, 인터럽트 가능 시점은 EOM으로 표시된 uop에 대응할 수 있다. 그러한 접근은 상호-의존성(co-dependency)과 관련된 소정의 어려움을 없앨 수 있어서, 실제로 효율을 더욱 향상시킬 수 있다. 인터럽트가능 시점은 또한 단지, 문제의 논리 스레드로부터의 최종 uop의 폐기에 대응할 수 있을 뿐이다. 블럭(34)에서, 인터펍트 포인트에 마주치게 되었다고 판정되면, 블럭(36)에서는 논리 스레드를 정지 상태로 유지한다. 블럭(38)에서는 인터럽트가능 시점에 마주치게 될 때까지 논리 스레드를 드레인 상태로 유지한다.
이제 도 4를 참조하면, 논리 상태를 정지 상태로 유지하는 한가지 접근법이 더욱 상세하게 도시된다. 구체적으로, 블럭(40)에서는 하나 이상의 트리거링 이벤트에 대해 프로세서를 모니터링한다. 상술된 바와 같이, 트리거링 이벤트는 대기시간 이벤트, 휴면 요청, 스레드 우선순위 이벤트 등을 포함할 수 있는데, 이것에 제한되지는 않는다. 블럭(42)에서, 어떤 트리거링 이벤트도 나타나지 않는다고 판정되면, 블록(44)에서는 논리 스레드를 대기 상태로 전환한다. 블럭(46)에서는 어떤 트리거링 이벤트도 나타나지 않을 때까지 논리 스레드를 정지 상태로 유지한다. 예를 들어, 논리 스레드는 캐시 미스 트리거링 이벤트가 서비스되어 데이터가 나타날 때까지 정지 상태로 유지된다. 논리 스레드가 드레인 상태로 전환되게 하는 트리거링 이벤트는 논리 스레드를 정지 상태에서 벗어나게 하는 트리거링 이벤트와 동일하거나 다를 수 있다는 것을 알기 바란다.
논리 스레드가 드레인 상태로 전환되게 하는 트리거링 이벤트는 논리 스레드를 정지 상태에서 벗어나게 하는 트리거링 이벤트와 동일하거나 다를 수 있다는 것 을 알기 바란다. 예를 들어, 논리 스레드는 HALT 명령어를 실행함으로써 정지 상태로 될 수 있고, 외부 인터럽트가 수신될 때까지 정지 상태로 남아 있을 수 있다. 다른 예로서, 논리 스레드는 캐시 미스하는 로드 명령어를 실행함으로써 정지 상태로 될 수 있고, 추론적 캐시 미스가 완료하기를 기다리는 것보다 외부 인터럽트를 서비스하는 것이 흔히 더 중요하기 때문에 외부 인터럽트를 수신함으로써 정지 상태에서 벗어나게 될 수 있다.
도 5는 논리 스레드를 대기 상태로 유지하는 한가지 접근법을 더욱 상세하게 도시한 것이다. 구체적으로, 다수의 동시 물리 스레드는 블럭(48)에서, 이용가능한 물리 스레드에 대해 모니터링된다. 블럭(50)에서, 이용가능한 물리 스레드에 마주치게 되었다고 판정되었으면, 블럭(52)에서는 논리 스레드를 활성 상태로 전환한다. 블럭(54)에서는 이용가능한 물리 스레드에 마주치게 될 때까지 논리 스레드를 대기 상태로 유지한다. 이에 따라, 대기 상태에 있는 모든 논리 스레드는 물리 스레드 상에서 실행될 준비가 되어 있다. 물리 스레드가 이용가능하게 될 때, 논리 스레드는 선택되어 활성 상태로 이동된다. 물리 스레드는 상술된 예에 따라 이용가능하게 될 수 있다. 논리 스레드의 선택은 논리 스레드들 사이의 우선순위 및/또는 공정성 요구사항에 기초할 수 있으나, 이것에 제한되지는 않는다.
이제 도 6을 참조하면, 스레드 관리 표(56)가 도시된다. 스레드 관리 표(56)는 다수의 논리 스레드의 각각에 대해 상태 및 하나 이상의 트리거링 이벤트를 식별할 수 있는 논리 스레드 정보를 저장한다. 예를 들어, 도시된 T0은 활성 상 태에 있고, 주소 AF09를 모니터링하기 위해 특정 메모리 요청 또는 외부 저장에 관해 트리거할 수 있다. 한편, 스레드 T1은 정지 상태에 있고, 주소 AF09 및 "MWAIT" 커맨드를 모니터링하기 위해 외부 저장에 관해 트리거한다. 활성 상태로 되었을 때 사용될 IP와 같은 추가 정보, 및 논리 스레드를 지원하기 위해 필요한 하드웨어 자원 프로파일은 또한 스레드 관리 표(56) 내에 저장될 수 있다. 이와 관련하여, 자원은 모든 논리 스레드 전체에 고르게 할당될 필요가 없다는 것을 알기 바란다. 자원은, 전형적으로 더 많은 자원이 더 빠른 실행을 의미하는 고속 추론 실행을 지원하기 위해 프로세서 내에서 사용된 임시 레지스터를 포함하지만, 이것에 제한되지는 않는다. 실제로, 시스템 내의 임의의 플랫폼 자원은 하드웨어 자원 프로파일 내에 포함되어, 이러한 방식으로 제어될 수 있다. 예를 들어, 더 많은 요구를 하는 논리 스레드는 더 적게 요구하는 논리 스레드보다 많은 자원이 할당될 수 있다. 자원 할당은 또한 우선순위, 성능 피드백 또는 공정성 입력의 사용을 포함할 수 있는데, 이것에 제한되지는 않는다. 또한, 스레드 관리 표(56)의 컴포넌트는 실제 구현 사항에 의해 요구되는 대로, 프로세서의 상이한 부분들 전체에 걸쳐 분산될 수 있고, 중앙집중적으로 배치될 필요는 없다.
도 7은 다수의 논리 스레드(58)가 다수의 동시 물리 스레드(60)보다 수가 많은 예를 도시한 것이다. 그러한 경우에, 스레드 관리 아키텍처는 동시 물리 스레드(60)가 프로세스할 준비가 되어 있는 논리 스레드들을 연속적으로 실행시킴으로써 가능한한 사용중(busy)으로 유지될 수 있기 때문에 "처리량 모드"로 동작한다. 한편, 도 8에서, 다수의 논리 스레드(62)는 동작의 "추론 모드"를 얻기 위해 다수의 동시 물리 스레드(64)보다 수가 더 적다. 추론은 프로그램 호 또는 다른 간접 프로그램 구조에 마주치게 될 때 추가의 동시 물리 스레드를 동일한 논리 스레드에 할당함으로써 달성될 수 있다. 예를 들어, 프로그램 호의 경우에, 호 명령어를 갖는 적절하게 기입된 프로그램이 최후에는 호의 시점으로 복귀할 것이다는 것이 추론될 수 있다. 따라서, 추가의 동시 물리 스레드를 예측 복귀 시점에서 시작하고, 실제 복귀가 발생할 때 실제 복귀에 대해 추론된 복귀를 테스트하는 것이 바람직할 수 있다. 테스트가 성공적이면, 추가 동시 물리 스레드로부터 프로세스된 uop는 유효하다. 또한, 스레드 관리 아키텍처는 상술된 처리량 및 추론 모드가 동시에 동작하는 "하이브리드" 모드로 실행하도록 용이하게 구성될 수 있다는 것을 알기 바란다.
이제 도 9를 참조하면, 컴퓨터 시스템(66)이 도시된다. 컴퓨터 시스템(66)은 매크로-명령어를 저장하기 위한 시스템 메모리(68)를 갖는다. 시스템 메모리는 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 플래시 메모리 등을 포함할 수 있다. 시스템 버스(70)는 매크로-명령어를 검색하기 위해 시스템 메모리(68) 및 프로세서(72)에 연결된다. 프로세서(72)는 상태 머신(76) 및 하드웨어 시퀀서(78)를 갖는 스레드 관리 아키텍처(74)를 갖는다. 상태 머신(76)은 다이어그램(10)(도 1)에 도시된 상태 머신과 유사한 방식으로 동작할 수 있다. 상태 머신(76)은 다수의 논리 스레드의 각각을 대기 상태, 활성 상태, 드레인 상태 및 정지 상태 중의 한 상태로 유지함으로써 매크로-명령어에 대응하는 다수의 논리 스레드를 다수의 동시 물리 스레드로 지원한다. 하드웨어 시퀀서(78)는 논리 스레드에 대응하는 이용가능한 물리 스레드에 대해 다수의 동시 물리 스레드를 모니터링한다. 상태 머신(76)은 이용가능한 물리 스레드에 마주칠 때까지 논리 스레드를 대기 상태로 유지한다. 도시된 예에서, 다수의 논리 스레드에 대응하는 매크로-명령어가 시스템 메모리 내에 저장되지만, 명령어 및 그의 대응하는 uop들은 또한 추적 캐시, 명령어 캐시 등과 같은 "온-칩" 메모리로부터 검색될 수 있다는 것을 알기 바란다.
또한, 논리 스레드가 존재할 수 있는 정확한 상태의 수는 상황에 따라 다를 수 있다는 것을 알기 바란다. 예를 들어, 실제 구현을 용이하게 하기 위해, 드레인 상태는 각각의 서브-상태가 "드레인" 동작의 일부를 나타내는 여러 상태로 나누어질 수 있다.
본 기술분야에 숙련된 기술자들은 상기 설명으로부터 본 발명의 광범위한 교시가 여러가지 형태로 구현될 수 있다는 것을 알 수 있다. 그러므로, 본 발명은 그 특정 예와 관련하여 설명되었지만, 본 발명의 진정한 범위는 도면, 명세서 및 다음의 청구범위의 연구시에 숙련된 당업자에게 기타 변경이 명백해질 것이므로 그 특정 예로 제한되어서는 안된다.
Claims (36)
- 스레드(thread)들을 관리하는 방법으로서,다수의 동시 물리 스레드로 다수의 논리 스레드를 지원하는 단계를 포함하는 방법.
- 제1항에 있어서,상기 다수의 논리 스레드의 각각을 대기 상태, 활성(active) 상태, 드레인(drain) 상태 및 정지(stall) 상태 중 하나의 상태로 유지하는 단계를 더 포함하는 방법.
- 제2항에 있어서,제1 논리 스레드는 상기 활성 상태로 유지되고,상기 방법은,상기 제1 논리 스레드와 관련된 매크로-명령어들(macro-instructions)을 물리 스레드의 다음 명령어 지시자(pointer)에 매핑(mapping)하는 단계;트리거링 이벤트에 대해 프로세서를 모니터링하는 단계; 및상기 트리거링 이벤트가 나타날 때까지 상기 제1 논리 스레드를 상기 활성 상태로 유지하는 단계를 더 포함하는 방법.
- 제3항에 있어서,상기 트리거링 이벤트가 나타나면 상기 매핑을 정지하는 단계; 및상기 제1 논리 스레드를 상기 드레인 상태로 전환하는 단계를 더 포함하는 방법.
- 제3항에 있어서,상기 트리거링 이벤트는 메모리 대기시간(latency) 이벤트, 휴면(sleep) 요청 및 스레드 우선순위 이벤트 중 적어도 하나를 포함하는 방법.
- 제2항에 있어서,제1 논리 스레드는 상기 드레인 상태로 유지되고,인터럽트가능 시점(interruptible point)에 대해 상기 제1 논리 스레드를 모니터링하는 단계; 및상기 인터럽트가능 시점에 마주치게 될 때까지 상기 제1 논리 스레드를 상기 드레인 상태로 유지하는 단계를 포함하는 방법.
- 제6항에 있어서,상기 인터럽트가능 시점에 마주치게 되면 상기 제1 논리 스레드를 상기 정지 상태로 전환하는 단계를 더 포함하는 방법.
- 제6항에 있어서,상기 인터럽트가능 시점은 상기 제1 논리 스레드 내의 매크로-명령어의 말단, 또는 상기 제1 논리 스레드와 관련된 최종 마이크로-연산(micro-operation)의 폐기(retirement)에 대응하는 방법.
- 제2항에 있어서,제1 논리 스레드는 상기 정지 상태로 유지되고,상기 방법은,트리거링 이벤트에 대해 프로세서를 모니터링하는 단계; 및상기 트리거링 이벤트가 나타나지 않을 때까지 상기 제1 논리 스레드를 상기 정지 상태로 유지하는 단계를 더 포함하는 방법.
- 제9항에 있어서,상기 트리거링 이벤트가 나타나지 않으면 상기 제1 논리 스레드를 상기 대기 상태로 전환하는 단계를 더 포함하는 방법.
- 제9항에 있어서,상기 트리거링 이벤트보다 높은 우선순위를 갖는 다른 이벤트가 신호로 알려지면 상기 제1 논리 스레드를 상기 대기 상태로 전환하는 단계를 더 포함하는 방법.
- 제9항에 있어서,상기 트리거링 이벤트는 메모리 대기시간 이벤트, 휴면 요청 및 스레드 우선순위 이벤트 중 적어도 하나를 포함하는 방법.
- 제2항에 있어서,제1 논리 스레드는 상기 대기 상태로 유지되고,상기 방법은,이용가능한 물리 스레드에 대해 상기 다수의 동시 물리 스레드를 모니터링하는 단계; 및상기 이용가능한 물리 스레드에 마주치게 될 때까지 상기 제1 논리 스레드를 상기 대기 상태로 유지하는 단계를 더 포함하는 방법.
- 제13항에 있어서,상기 이용가능한 물리 스레드에 마주치게 되면 상기 제1 논리 스레드를 상기 활성 상태로 전환하는 단계를 더 포함하는 방법.
- 제1항에 있어서,스레드 관리 표에 스레드 정보를 저장하는 단계를 더 포함하며, 상기 스레드 정보는 상기 다수의 논리 스레드 각각에 대해 상태, 하나 이상의 트리거링 이벤트들 및 선형 명령어 지시자를 식별하는 방법.
- 제15항에 있어서,상기 스레드 정보는 상기 다수의 논리 스레드 각각에 대해 자원 요구사항 프로파일(resource requirement profile)을 더 포함하는 방법.
- 제1항에 있어서,상기 다수의 논리 스레드는 상기 다수의 동시 물리 스레드보다 수가 더 많은 방법.
- 제1항에 있어서,상기 다수의 논리 스레드는 상기 다수의 동시 물리 스레드보다 수가 더 적은 방법.
- 다수의 동시 물리 스레드로 다수의 논리 스레드를 지원하는 방법으로서,제1 논리 스레드와 관련된 매크로-명령어들을 동시 물리 스레드의 다음 명령 어 지시자에 매핑하는 단계;제1 시간에 트리거링 이벤트에 대해 프로세서를 모니터링하는 단계;상기 트리거링 이벤트가 나타날 때까지 상기 제1 논리 스레드를 활성 상태로 유지하는 단계;상기 트리거링 이벤트가 나타나면 상기 매핑을 정지하고, 상기 제1 논리 스레드를 드레인 상태로 전환하는 단계;인터럽트가능 시점에 대해 상기 제1 논리 스레드를 모니터링하는 단계;상기 인터럽트가능 시점에 마주치게 될 때까지 상기 제1 논리 스레드를 드레인 상태로 유지하는 단계;상기 인터럽트가능 시점에 마주치게 되면 상기 제1 논리 스레드를 정지 상태로 전환하는 단계;제2 시간에 상기 트리거링 이벤트에 대해 상기 프로세서를 모니터링하는 단계;상기 트리거링 이벤트가 나타나지 않을 때까지 상기 제1 논리 스레드를 상기 정지 상태로 유지하는 단계;상기 트리거링 이벤트가 나타나지 않으면 상기 제1 논리 스레드를 대기 상태로 전환하는 단계;이용가능한 물리 스레드에 대해 상기 다수의 동시 물리 스레드를 모니터링하는 단계;상기 이용가능한 물리 스레드에 마주치게 될 때까지 상기 제1 논리 스레드를 상기 대기 상태로 유지하는 단계; 및상기 이용가능한 물리 스레드에 마주치게 되면 상기 제1 논리 스레드를 상기 활성 상태로 전환하는 단계를 포함하는 방법.
- 제19항에 있어서,상기 트리거링 이벤트는 메모리 대기시간 이벤트, 휴면 요청 및 스레드 우선순위 이벤트 중 적어도 하나를 포함하는 방법.
- 제19항에 있어서,상기 인터럽트가능 시점은 상기 제1 논리 스레드 내의 매크로-명령어의 말단, 또는 상기 제1 논리 스레드와 관련된 최종 마이크로-연산의 폐기에 대응하는 방법.
- 제19항에 있어서,스레드 관리 표에 스레드 정보를 저장하는 단계를 더 포함하며, 상기 스레드 정보는 상기 다수의 논리 스레드 각각에 대해 상태, 하나 이상의 트리거링 이벤트들 및 선형 명령어 지시자를 식별하는 방법.
- 스레드 관리 아키텍처에 있어서,다수의 논리 스레드 각각을 대기 상태, 활성 상태, 드레인 상태 및 정지 상태 중 하나의 상태로 유지함으로써 상기 다수의 논리 스레드를 다수의 동시 물리 스레드로 지원하기 위한 상태 머신(state machine)을 포함하는 스레드 관리 아키텍처.
- 제23항에 있어서,상기 상태 머신은 제1 논리 스레드와 관련된 매크로-명령어들을 물리 스레드의 다음 명령어 지시자에 매핑하고, 트리거링 이벤트에 대해 프로세서를 모니터링하며, 상기 트리거링 이벤트가 나타날 때까지 상기 제1 논리 스레드를 상기 활성 상태로 유지하기 위한 것인 스레드 관리 아키텍처.
- 제23항에 있어서,상기 상태 머신은 인터럽트가능 시점에 대해 제1 논리 스레드를 모니터링하고, 상기 인터럽트가능 시점에 마주치게 될 때까지 상기 제1 논리 스레드를 상기 드레인 상태로 유지하기 위한 것인 스레드 관리 아키텍처.
- 제23항에 있어서,상기 상태 머신은 트리거링 이벤트에 대해 프로세서를 모니터링하고, 상기 트리거링 이벤트가 나타나지 않을 때까지 상기 제1 논리 스레드를 상기 정지 상태로 유지하기 위한 것인 스레드 관리 아키텍처.
- 제23항에 있어서,하드웨어 시퀀서를 더 포함하고, 상기 하드웨어 시퀀서는 이용가능한 물리 스레드에 대해 상기 다수의 동시 물리 스레드를 모니터링하기 위한 것이고, 상기 상태 머신은 상기 이용가능한 물리 스레드에 마주치게 될 때까지 상기 제1 논리 스레드를 상기 대기 상태로 유지하기 위한 것인 스레드 관리 아키텍처.
- 컴퓨터 시스템에 있어서,매크로-명령어들을 저장하기 위한 랜덤 액세스 메모리;상기 메모리에 연결된 시스템 버스; 및상기 시스템 버스에 연결되어 상기 매크로-명령어들을 검색하는 프로세서를 포함하며,상기 프로세서는 다수의 논리 스레드 각각을 대기 상태, 활성 상태, 드레인 상태 및 정지 상태 중 하나의 상태로 유지함으로써 상기 매크로-명령어들에 대응하는 다수의 논리 스레드를 다수의 동시 물리 스레드로 지원하기 위한 상태 머신을 갖는 스레드 관리 아키텍처를 포함하는 것인 컴퓨터 시스템.
- 제28항에 있어서,상기 상태 머신은 제1 논리 스레드와 관련된 매크로-명령어들을 물리 스레드의 다음 명령어 지시자에 매핑하고, 트리거링 이벤트에 대해 상기 프로세서를 모니 터링하며, 상기 트리거링 이벤트가 나타날 때까지 상기 제1 논리 스레드를 상기 활성 상태로 유지하기 위한 것인 컴퓨터 시스템.
- 제28항에 있어서,상기 상태 머신은 인터럽트가능 시점에 대해 제1 논리 스레드를 모니터링하고, 상기 인터럽트가능 시점에 마주치게 될 때까지 상기 제1 논리 스레드를 상기 드레인 상태로 유지하기 위한 것인 컴퓨터 시스템.
- 제28항에 있어서,상기 상태 머신은 트리거링 이벤트에 대해 상기 프로세서를 모니터링하고, 상기 트리거링 이벤트가 나타나지 않을 때까지 상기 제1 논리 스레드를 상기 정지 상태로 유지하기 위한 것인 컴퓨터 시스템.
- 제28항에 있어서,상기 스레드 관리 아키텍처는 하드웨어 시퀀서를 더 포함하고, 상기 하드웨어 시퀀서는 제1 논리 스레드에 대응하는 이용가능한 물리 스레드에 대해 상기 다수의 동시 물리 스레드를 모니터링하기 위한 것이고, 상기 상태 머신은 상기 이용가능한 물리 스레드에 마주치게 될 때까지 상기 제1 논리 스레드를 상기 대기 상태로 유지하기 위한 것인 컴퓨터 시스템.
- 제28항에 있어서,스레드 정보를 저장하기 위한 스레드 관리 표를 더 포함하며, 상기 스레드 정보는 상기 다수의 논리 스레드 각각에 대해 상태, 하나 이상의 트리거링 이벤트들 및 선형 명령어 지시자를 식별하기 위한 것인 컴퓨터 시스템.
- 제33항에 있어서,상기 스레드 정보는 상기 다수의 논리 스레드 각각에 대해 자원 요구사항 프로파일을 더 식별하기 위한 것인 컴퓨터 시스템.
- 제28항에 있어서,상기 다수의 논리 스레드는 상기 다수의 동시 물리 스레드보다 수가 더 많게 되는 것인 컴퓨터 시스템.
- 제28항에 있어서,상기 다수의 논리 스레드는 상기 다수의 동시 물리 스레드보다 수가 더 적게 되는 것인 컴퓨터 시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/745,527 | 2003-12-29 | ||
US10/745,527 US7797683B2 (en) | 2003-12-29 | 2003-12-29 | Decoupling the number of logical threads from the number of simultaneous physical threads in a processor |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20060111626A true KR20060111626A (ko) | 2006-10-27 |
KR100856144B1 KR100856144B1 (ko) | 2008-09-03 |
Family
ID=34886484
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020067012966A KR100856144B1 (ko) | 2003-12-29 | 2004-12-20 | 프로세서 내에서의 다수의 동시 물리 스레드로부터의다수의 논리 스레드의 디커플링 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7797683B2 (ko) |
JP (1) | JP4599365B2 (ko) |
KR (1) | KR100856144B1 (ko) |
CN (2) | CN102193828B (ko) |
DE (2) | DE112004002505T5 (ko) |
WO (1) | WO2006057647A2 (ko) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7765547B2 (en) * | 2004-11-24 | 2010-07-27 | Maxim Integrated Products, Inc. | Hardware multithreading systems with state registers having thread profiling data |
US7793291B2 (en) * | 2004-12-22 | 2010-09-07 | International Business Machines Corporation | Thermal management of a multi-processor computer system |
US7454596B2 (en) * | 2006-06-29 | 2008-11-18 | Intel Corporation | Method and apparatus for partitioned pipelined fetching of multiple execution threads |
US9146745B2 (en) * | 2006-06-29 | 2015-09-29 | Intel Corporation | Method and apparatus for partitioned pipelined execution of multiple execution threads |
US7698540B2 (en) * | 2006-10-31 | 2010-04-13 | Hewlett-Packard Development Company, L.P. | Dynamic hardware multithreading and partitioned hardware multithreading |
US8307246B2 (en) * | 2008-10-29 | 2012-11-06 | Aternity Information Systems Ltd. | Real time monitoring of computer for determining speed of various processes |
US9032254B2 (en) | 2008-10-29 | 2015-05-12 | Aternity Information Systems Ltd. | Real time monitoring of computer for determining speed and energy consumption of various processes |
US8487909B2 (en) * | 2011-07-27 | 2013-07-16 | Cypress Semiconductor Corporation | Method and apparatus for parallel scanning and data processing for touch sense arrays |
US9542236B2 (en) | 2011-12-29 | 2017-01-10 | Oracle International Corporation | Efficiency sequencer for multiple concurrently-executing threads of execution |
US9715411B2 (en) | 2014-02-05 | 2017-07-25 | International Business Machines Corporation | Techniques for mapping logical threads to physical threads in a simultaneous multithreading data processing system |
US9213569B2 (en) * | 2014-03-27 | 2015-12-15 | International Business Machines Corporation | Exiting multiple threads in a computer |
US9898351B2 (en) * | 2015-12-24 | 2018-02-20 | Intel Corporation | Method and apparatus for user-level thread synchronization with a monitor and MWAIT architecture |
CN106325512A (zh) * | 2016-08-24 | 2017-01-11 | 韩龙潇 | 一种使用状态下监测周围环境的终端 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2078315A1 (en) * | 1991-09-20 | 1993-03-21 | Christopher L. Reeve | Parallel processing apparatus and method for utilizing tiling |
US5442797A (en) * | 1991-12-04 | 1995-08-15 | Casavant; Thomas L. | Latency tolerant risc-based multiple processor with event driven locality managers resulting from variable tagging |
JPH05181670A (ja) * | 1992-01-06 | 1993-07-23 | Fujitsu Ltd | マイクロプログラム方式計算機 |
JP2991598B2 (ja) * | 1993-09-09 | 1999-12-20 | 富士通株式会社 | Lsi設計装置及びlsi設計方法 |
JP3231571B2 (ja) | 1994-12-20 | 2001-11-26 | 日本電気株式会社 | 順序付きマルチスレッド実行方法とその実行装置 |
US5913925A (en) * | 1996-12-16 | 1999-06-22 | International Business Machines Corporation | Method and system for constructing a program including out-of-order threads and processor and method for executing threads out-of-order |
US6192514B1 (en) * | 1997-02-19 | 2001-02-20 | Unisys Corporation | Multicomputer system |
US5999734A (en) * | 1997-10-21 | 1999-12-07 | Ftl Systems, Inc. | Compiler-oriented apparatus for parallel compilation, simulation and execution of computer programs and hardware models |
US7085670B2 (en) * | 1998-02-17 | 2006-08-01 | National Instruments Corporation | Reconfigurable measurement system utilizing a programmable hardware element and fixed hardware resources |
US6557064B1 (en) * | 1999-02-19 | 2003-04-29 | Hewlett-Packard Development Company | Set up time adjust |
US6496925B1 (en) * | 1999-12-09 | 2002-12-17 | Intel Corporation | Method and apparatus for processing an event occurrence within a multithreaded processor |
US6708269B1 (en) * | 1999-12-30 | 2004-03-16 | Intel Corporation | Method and apparatus for multi-mode fencing in a microprocessor system |
US7103586B2 (en) * | 2001-03-16 | 2006-09-05 | Gravic, Inc. | Collision avoidance in database replication systems |
US6964049B2 (en) * | 2001-07-18 | 2005-11-08 | Smartmatic Corporation | Smart internetworking operating system for low computational power microprocessors |
US7127561B2 (en) * | 2001-12-31 | 2006-10-24 | Intel Corporation | Coherency techniques for suspending execution of a thread until a specified memory access occurs |
US7487504B2 (en) * | 2002-02-06 | 2009-02-03 | International Business Machines Corporation | Thread dispatch for multiprocessor computer systems |
US7155708B2 (en) * | 2002-10-31 | 2006-12-26 | Src Computers, Inc. | Debugging and performance profiling using control-dataflow graph representations with reconfigurable hardware emulation |
-
2003
- 2003-12-29 US US10/745,527 patent/US7797683B2/en not_active Expired - Fee Related
-
2004
- 2004-12-20 JP JP2006547293A patent/JP4599365B2/ja not_active Expired - Fee Related
- 2004-12-20 CN CN2011101002621A patent/CN102193828B/zh not_active Expired - Fee Related
- 2004-12-20 WO PCT/US2004/043036 patent/WO2006057647A2/en active Application Filing
- 2004-12-20 CN CN2004800394192A patent/CN1926514B/zh not_active Expired - Fee Related
- 2004-12-20 DE DE112004002505T patent/DE112004002505T5/de not_active Withdrawn
- 2004-12-20 KR KR1020067012966A patent/KR100856144B1/ko not_active IP Right Cessation
- 2004-12-20 DE DE112004003142T patent/DE112004003142A5/de not_active Ceased
Also Published As
Publication number | Publication date |
---|---|
WO2006057647A3 (en) | 2006-07-20 |
WO2006057647A2 (en) | 2006-06-01 |
US7797683B2 (en) | 2010-09-14 |
US20050193278A1 (en) | 2005-09-01 |
JP4599365B2 (ja) | 2010-12-15 |
DE112004003142A5 (de) | 2013-03-21 |
CN1926514B (zh) | 2011-06-08 |
CN1926514A (zh) | 2007-03-07 |
JP2007517322A (ja) | 2007-06-28 |
CN102193828A (zh) | 2011-09-21 |
DE112004002505T5 (de) | 2006-11-23 |
CN102193828B (zh) | 2013-06-12 |
KR100856144B1 (ko) | 2008-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8756605B2 (en) | Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline | |
US20060136919A1 (en) | System and method for controlling thread suspension in a multithreaded processor | |
EP0747816B1 (en) | Method and system for high performance multithread operation in a data processing system | |
DE60029619T2 (de) | Verfahren, vorrichtung, medium und programm zur aufnahme und zum verlassen von mehreren fäden in einem vielfadenprozessor | |
US7290261B2 (en) | Method and logical apparatus for rename register reallocation in a simultaneous multi-threaded (SMT) processor | |
US7509484B1 (en) | Handling cache misses by selectively flushing the pipeline | |
US7155600B2 (en) | Method and logical apparatus for switching between single-threaded and multi-threaded execution states in a simultaneous multi-threaded (SMT) processor | |
US6542921B1 (en) | Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor | |
US10761846B2 (en) | Method for managing software threads dependent on condition variables | |
DE60032481T2 (de) | Verfahren und vorrichtung zur threadumschaltung in einem multithreadprozessor | |
US6687809B2 (en) | Maintaining processor ordering by checking load addresses of unretired load instructions against snooping store addresses | |
US20150324234A1 (en) | Task scheduling method and related non-transitory computer readable medium for dispatching task in multi-core processor system based at least partly on distribution of tasks sharing same data and/or accessing same memory address(es) | |
US20040216101A1 (en) | Method and logical apparatus for managing resource redistribution in a simultaneous multi-threaded (SMT) processor | |
KR100936601B1 (ko) | 멀티 프로세서 시스템 | |
KR100856144B1 (ko) | 프로세서 내에서의 다수의 동시 물리 스레드로부터의다수의 논리 스레드의 디커플링 | |
US9146745B2 (en) | Method and apparatus for partitioned pipelined execution of multiple execution threads | |
US8832702B2 (en) | Thread de-emphasis instruction for multithreaded processor | |
JP2007249960A (ja) | キャッシュライン・ポーリングを実行する方法、装置、プログラム及び情報処理システム | |
CN111052094B (zh) | 使用c状态和睿频加速提高用户空间的自旋锁效率 | |
US8869172B2 (en) | Method and system method and system for exception-less system calls for event driven programs | |
JP2010061642A (ja) | スレッドのスケジューリングテクニック | |
JP2002163121A (ja) | 仮想マルチスレッドプロセッサ及びスレッド実行方法 | |
US20210096914A1 (en) | Soft watermarking in thread shared resources implemented through thread mediation | |
US10275250B2 (en) | Defer buffer | |
Suijkerbuijk et al. | Performance Evaluation of Interleaved Multithreading in a VLIW Architecture |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
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: 20121102 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20130801 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20150730 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20160727 Year of fee payment: 9 |
|
FPAY | Annual fee payment |
Payment date: 20170804 Year of fee payment: 10 |
|
LAPS | Lapse due to unpaid annual fee |