KR20060111626A - 프로세서 내에서의 다수의 동시 물리 스레드로부터의다수의 논리 스레드의 디커플링 - Google Patents

프로세서 내에서의 다수의 동시 물리 스레드로부터의다수의 논리 스레드의 디커플링 Download PDF

Info

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
Application number
KR1020067012966A
Other languages
English (en)
Other versions
KR100856144B1 (ko
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 KR20060111626A publication Critical patent/KR20060111626A/ko
Application granted granted Critical
Publication of KR100856144B1 publication Critical patent/KR100856144B1/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/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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction 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

프로세서 내에서의 다수의 동시 물리 스레드로부터의 다수의 논리 스레드의 디커플링{DECOUPLING THE NUMBER OF LOGICAL THREADS FROM THE NUMBER OF SIMULTANEOUS PHYSICAL THREADS IN A PROCESSOR}
본 발명의 실시예들은 일반적으로 컴퓨터에 관한 것이다. 더욱 구체적으로, 실시예들은 동시 실행 스레드를 갖는 컴퓨터 아키텍처의 향상에 관한 것이다.
최신 컴퓨터의 향상된 기능에 대한 요구가 계속 늘어남에 따라, 제조자뿐만 아니라 프로세서 설계자에게 여러 도전과제들이 주어진다. 예를 들어, 인터넷 및 멀티-미디어 애플리케이션의 지속적인 사용 증가는 프로세서 및 메모리 자원들로의 액세스를 동시에 요구하는 다수의 프로세스, 또는 실행 스레드를 초래했다. 하나의 프로세서가 동시에 다수의 스레드를 실행할 수 있게 하는 하이퍼-스레딩(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)

  1. 스레드(thread)들을 관리하는 방법으로서,
    다수의 동시 물리 스레드로 다수의 논리 스레드를 지원하는 단계를 포함하는 방법.
  2. 제1항에 있어서,
    상기 다수의 논리 스레드의 각각을 대기 상태, 활성(active) 상태, 드레인(drain) 상태 및 정지(stall) 상태 중 하나의 상태로 유지하는 단계를 더 포함하는 방법.
  3. 제2항에 있어서,
    제1 논리 스레드는 상기 활성 상태로 유지되고,
    상기 방법은,
    상기 제1 논리 스레드와 관련된 매크로-명령어들(macro-instructions)을 물리 스레드의 다음 명령어 지시자(pointer)에 매핑(mapping)하는 단계;
    트리거링 이벤트에 대해 프로세서를 모니터링하는 단계; 및
    상기 트리거링 이벤트가 나타날 때까지 상기 제1 논리 스레드를 상기 활성 상태로 유지하는 단계
    를 더 포함하는 방법.
  4. 제3항에 있어서,
    상기 트리거링 이벤트가 나타나면 상기 매핑을 정지하는 단계; 및
    상기 제1 논리 스레드를 상기 드레인 상태로 전환하는 단계
    를 더 포함하는 방법.
  5. 제3항에 있어서,
    상기 트리거링 이벤트는 메모리 대기시간(latency) 이벤트, 휴면(sleep) 요청 및 스레드 우선순위 이벤트 중 적어도 하나를 포함하는 방법.
  6. 제2항에 있어서,
    제1 논리 스레드는 상기 드레인 상태로 유지되고,
    인터럽트가능 시점(interruptible point)에 대해 상기 제1 논리 스레드를 모니터링하는 단계; 및
    상기 인터럽트가능 시점에 마주치게 될 때까지 상기 제1 논리 스레드를 상기 드레인 상태로 유지하는 단계
    를 포함하는 방법.
  7. 제6항에 있어서,
    상기 인터럽트가능 시점에 마주치게 되면 상기 제1 논리 스레드를 상기 정지 상태로 전환하는 단계를 더 포함하는 방법.
  8. 제6항에 있어서,
    상기 인터럽트가능 시점은 상기 제1 논리 스레드 내의 매크로-명령어의 말단, 또는 상기 제1 논리 스레드와 관련된 최종 마이크로-연산(micro-operation)의 폐기(retirement)에 대응하는 방법.
  9. 제2항에 있어서,
    제1 논리 스레드는 상기 정지 상태로 유지되고,
    상기 방법은,
    트리거링 이벤트에 대해 프로세서를 모니터링하는 단계; 및
    상기 트리거링 이벤트가 나타나지 않을 때까지 상기 제1 논리 스레드를 상기 정지 상태로 유지하는 단계
    를 더 포함하는 방법.
  10. 제9항에 있어서,
    상기 트리거링 이벤트가 나타나지 않으면 상기 제1 논리 스레드를 상기 대기 상태로 전환하는 단계를 더 포함하는 방법.
  11. 제9항에 있어서,
    상기 트리거링 이벤트보다 높은 우선순위를 갖는 다른 이벤트가 신호로 알려지면 상기 제1 논리 스레드를 상기 대기 상태로 전환하는 단계를 더 포함하는 방법.
  12. 제9항에 있어서,
    상기 트리거링 이벤트는 메모리 대기시간 이벤트, 휴면 요청 및 스레드 우선순위 이벤트 중 적어도 하나를 포함하는 방법.
  13. 제2항에 있어서,
    제1 논리 스레드는 상기 대기 상태로 유지되고,
    상기 방법은,
    이용가능한 물리 스레드에 대해 상기 다수의 동시 물리 스레드를 모니터링하는 단계; 및
    상기 이용가능한 물리 스레드에 마주치게 될 때까지 상기 제1 논리 스레드를 상기 대기 상태로 유지하는 단계
    를 더 포함하는 방법.
  14. 제13항에 있어서,
    상기 이용가능한 물리 스레드에 마주치게 되면 상기 제1 논리 스레드를 상기 활성 상태로 전환하는 단계를 더 포함하는 방법.
  15. 제1항에 있어서,
    스레드 관리 표에 스레드 정보를 저장하는 단계를 더 포함하며, 상기 스레드 정보는 상기 다수의 논리 스레드 각각에 대해 상태, 하나 이상의 트리거링 이벤트들 및 선형 명령어 지시자를 식별하는 방법.
  16. 제15항에 있어서,
    상기 스레드 정보는 상기 다수의 논리 스레드 각각에 대해 자원 요구사항 프로파일(resource requirement profile)을 더 포함하는 방법.
  17. 제1항에 있어서,
    상기 다수의 논리 스레드는 상기 다수의 동시 물리 스레드보다 수가 더 많은 방법.
  18. 제1항에 있어서,
    상기 다수의 논리 스레드는 상기 다수의 동시 물리 스레드보다 수가 더 적은 방법.
  19. 다수의 동시 물리 스레드로 다수의 논리 스레드를 지원하는 방법으로서,
    제1 논리 스레드와 관련된 매크로-명령어들을 동시 물리 스레드의 다음 명령 어 지시자에 매핑하는 단계;
    제1 시간에 트리거링 이벤트에 대해 프로세서를 모니터링하는 단계;
    상기 트리거링 이벤트가 나타날 때까지 상기 제1 논리 스레드를 활성 상태로 유지하는 단계;
    상기 트리거링 이벤트가 나타나면 상기 매핑을 정지하고, 상기 제1 논리 스레드를 드레인 상태로 전환하는 단계;
    인터럽트가능 시점에 대해 상기 제1 논리 스레드를 모니터링하는 단계;
    상기 인터럽트가능 시점에 마주치게 될 때까지 상기 제1 논리 스레드를 드레인 상태로 유지하는 단계;
    상기 인터럽트가능 시점에 마주치게 되면 상기 제1 논리 스레드를 정지 상태로 전환하는 단계;
    제2 시간에 상기 트리거링 이벤트에 대해 상기 프로세서를 모니터링하는 단계;
    상기 트리거링 이벤트가 나타나지 않을 때까지 상기 제1 논리 스레드를 상기 정지 상태로 유지하는 단계;
    상기 트리거링 이벤트가 나타나지 않으면 상기 제1 논리 스레드를 대기 상태로 전환하는 단계;
    이용가능한 물리 스레드에 대해 상기 다수의 동시 물리 스레드를 모니터링하는 단계;
    상기 이용가능한 물리 스레드에 마주치게 될 때까지 상기 제1 논리 스레드를 상기 대기 상태로 유지하는 단계; 및
    상기 이용가능한 물리 스레드에 마주치게 되면 상기 제1 논리 스레드를 상기 활성 상태로 전환하는 단계
    를 포함하는 방법.
  20. 제19항에 있어서,
    상기 트리거링 이벤트는 메모리 대기시간 이벤트, 휴면 요청 및 스레드 우선순위 이벤트 중 적어도 하나를 포함하는 방법.
  21. 제19항에 있어서,
    상기 인터럽트가능 시점은 상기 제1 논리 스레드 내의 매크로-명령어의 말단, 또는 상기 제1 논리 스레드와 관련된 최종 마이크로-연산의 폐기에 대응하는 방법.
  22. 제19항에 있어서,
    스레드 관리 표에 스레드 정보를 저장하는 단계를 더 포함하며, 상기 스레드 정보는 상기 다수의 논리 스레드 각각에 대해 상태, 하나 이상의 트리거링 이벤트들 및 선형 명령어 지시자를 식별하는 방법.
  23. 스레드 관리 아키텍처에 있어서,
    다수의 논리 스레드 각각을 대기 상태, 활성 상태, 드레인 상태 및 정지 상태 중 하나의 상태로 유지함으로써 상기 다수의 논리 스레드를 다수의 동시 물리 스레드로 지원하기 위한 상태 머신(state machine)을 포함하는 스레드 관리 아키텍처.
  24. 제23항에 있어서,
    상기 상태 머신은 제1 논리 스레드와 관련된 매크로-명령어들을 물리 스레드의 다음 명령어 지시자에 매핑하고, 트리거링 이벤트에 대해 프로세서를 모니터링하며, 상기 트리거링 이벤트가 나타날 때까지 상기 제1 논리 스레드를 상기 활성 상태로 유지하기 위한 것인 스레드 관리 아키텍처.
  25. 제23항에 있어서,
    상기 상태 머신은 인터럽트가능 시점에 대해 제1 논리 스레드를 모니터링하고, 상기 인터럽트가능 시점에 마주치게 될 때까지 상기 제1 논리 스레드를 상기 드레인 상태로 유지하기 위한 것인 스레드 관리 아키텍처.
  26. 제23항에 있어서,
    상기 상태 머신은 트리거링 이벤트에 대해 프로세서를 모니터링하고, 상기 트리거링 이벤트가 나타나지 않을 때까지 상기 제1 논리 스레드를 상기 정지 상태로 유지하기 위한 것인 스레드 관리 아키텍처.
  27. 제23항에 있어서,
    하드웨어 시퀀서를 더 포함하고, 상기 하드웨어 시퀀서는 이용가능한 물리 스레드에 대해 상기 다수의 동시 물리 스레드를 모니터링하기 위한 것이고, 상기 상태 머신은 상기 이용가능한 물리 스레드에 마주치게 될 때까지 상기 제1 논리 스레드를 상기 대기 상태로 유지하기 위한 것인 스레드 관리 아키텍처.
  28. 컴퓨터 시스템에 있어서,
    매크로-명령어들을 저장하기 위한 랜덤 액세스 메모리;
    상기 메모리에 연결된 시스템 버스; 및
    상기 시스템 버스에 연결되어 상기 매크로-명령어들을 검색하는 프로세서
    를 포함하며,
    상기 프로세서는 다수의 논리 스레드 각각을 대기 상태, 활성 상태, 드레인 상태 및 정지 상태 중 하나의 상태로 유지함으로써 상기 매크로-명령어들에 대응하는 다수의 논리 스레드를 다수의 동시 물리 스레드로 지원하기 위한 상태 머신을 갖는 스레드 관리 아키텍처를 포함하는 것인 컴퓨터 시스템.
  29. 제28항에 있어서,
    상기 상태 머신은 제1 논리 스레드와 관련된 매크로-명령어들을 물리 스레드의 다음 명령어 지시자에 매핑하고, 트리거링 이벤트에 대해 상기 프로세서를 모니 터링하며, 상기 트리거링 이벤트가 나타날 때까지 상기 제1 논리 스레드를 상기 활성 상태로 유지하기 위한 것인 컴퓨터 시스템.
  30. 제28항에 있어서,
    상기 상태 머신은 인터럽트가능 시점에 대해 제1 논리 스레드를 모니터링하고, 상기 인터럽트가능 시점에 마주치게 될 때까지 상기 제1 논리 스레드를 상기 드레인 상태로 유지하기 위한 것인 컴퓨터 시스템.
  31. 제28항에 있어서,
    상기 상태 머신은 트리거링 이벤트에 대해 상기 프로세서를 모니터링하고, 상기 트리거링 이벤트가 나타나지 않을 때까지 상기 제1 논리 스레드를 상기 정지 상태로 유지하기 위한 것인 컴퓨터 시스템.
  32. 제28항에 있어서,
    상기 스레드 관리 아키텍처는 하드웨어 시퀀서를 더 포함하고, 상기 하드웨어 시퀀서는 제1 논리 스레드에 대응하는 이용가능한 물리 스레드에 대해 상기 다수의 동시 물리 스레드를 모니터링하기 위한 것이고, 상기 상태 머신은 상기 이용가능한 물리 스레드에 마주치게 될 때까지 상기 제1 논리 스레드를 상기 대기 상태로 유지하기 위한 것인 컴퓨터 시스템.
  33. 제28항에 있어서,
    스레드 정보를 저장하기 위한 스레드 관리 표를 더 포함하며, 상기 스레드 정보는 상기 다수의 논리 스레드 각각에 대해 상태, 하나 이상의 트리거링 이벤트들 및 선형 명령어 지시자를 식별하기 위한 것인 컴퓨터 시스템.
  34. 제33항에 있어서,
    상기 스레드 정보는 상기 다수의 논리 스레드 각각에 대해 자원 요구사항 프로파일을 더 식별하기 위한 것인 컴퓨터 시스템.
  35. 제28항에 있어서,
    상기 다수의 논리 스레드는 상기 다수의 동시 물리 스레드보다 수가 더 많게 되는 것인 컴퓨터 시스템.
  36. 제28항에 있어서,
    상기 다수의 논리 스레드는 상기 다수의 동시 물리 스레드보다 수가 더 적게 되는 것인 컴퓨터 시스템.
KR1020067012966A 2003-12-29 2004-12-20 프로세서 내에서의 다수의 동시 물리 스레드로부터의다수의 논리 스레드의 디커플링 KR100856144B1 (ko)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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