KR20100005686A - 쓰레드 스케줄링 장치 및 시스템 - Google Patents

쓰레드 스케줄링 장치 및 시스템 Download PDF

Info

Publication number
KR20100005686A
KR20100005686A KR1020090061430A KR20090061430A KR20100005686A KR 20100005686 A KR20100005686 A KR 20100005686A KR 1020090061430 A KR1020090061430 A KR 1020090061430A KR 20090061430 A KR20090061430 A KR 20090061430A KR 20100005686 A KR20100005686 A KR 20100005686A
Authority
KR
South Korea
Prior art keywords
thread
instruction
instructions
selection logic
processing
Prior art date
Application number
KR1020090061430A
Other languages
English (en)
Inventor
에드 그로초우스키
에릭 스프랭글
크리쉬나 가나파시
청 챈
제이 로울러
더그 카민
톰 포시스
마이클 아브라쉬
Original Assignee
인텔 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코포레이션 filed Critical 인텔 코포레이션
Publication of KR20100005686A publication Critical patent/KR20100005686A/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
    • 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions

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)

Abstract

프로세서 내에서 실행을 위해 다수의 쓰레드를 스케줄링하는 기술이 개시된다. 보다 구체적으로, 일 실시예는 프로세싱 리소스의 다양한 상태를 기초로 하여 프로세서 내에서 쓰레드 스위치 동작을 지연하거나 방지하는 인스트럭션 또는 다양한 조건을 사용하는 기술에 관한 것이다.

Description

쓰레드 스케줄링 장치 및 시스템{TECHNIQUE FOR SCHEDULING THREADS}
본 발명의 실시예는 전반적으로 정보 프로세싱 분야에 관한 것이다. 보다 구체적으로, 본 발명의 실시예는 프로세서 내에서 다수의 인스트럭션 쓰레드를 스케줄링하는 기술과 관련된다.
마이크로프로세서에서의 다중 쓰레딩은 애플리케이션이나 운영체제의 관점에서 볼 때 동시인 것처럼 보이는 방법으로 또는 동시적으로 인스트럭션의 다중 시퀀스를 수행하는 기술을 포함한다. 쓰레딩 아키텍처에서의 차이점은 쓰레드가 스케줄링되는 방법이라든지 프로세싱 리소스가 개별 쓰레드에 할당되는 방법을 포함할 수 있다. 예를 들어, 몇 가지 종래 기술의 쓰레딩 아키텍처는, 단지, 프로세싱 리소스를 상이한 쓰레드에 할당하기 전에 특정한 시간량 동안 프로세싱 리소스를 쓰레드에 할당한다. 예를 들어, 몇 가지 종래 기술의 아키텍처는 소정 시간량 동안 쓰레드의 실행을 "정지"시키는 인스트럭션을 구현할 수 있으며, 그 시간량은 그 인스트럭션이 사용될 때마다 변경되는 것이 아니라 고정적일 수 있다.
쓰레딩의 즉시적 프로세싱 요구나 쓰레드에 의해 사용되는 프로세싱 리소스 의 상태를 전혀 고려하지 않고 프로세싱 리소스를 고정된 시간량 동안 쓰레드에 할당하면, 몇 가지 중요한 동작 또는 다른 합리적인 동작이 완료되기 전에 쓰레드가 스위칭되는 결과를 야기할 수 있다. 더욱이, 프로세싱 상태나 쓰레드의 요구(thread need)와는 상관없이 쓰레드를 스위칭하게 되면, 프로세서 성능을 열화시킬 수 있다.
약간의 시간량을 기초로 하여 쓰레드를 스위칭하는 것 이외에도, 몇 가지 종래 기술의 쓰레딩 아키텍처는 쓰레드의 요구 또는 기본적인 프로세싱 리소스의 상태와 상관없이 특정 이벤트 또는 이벤트들의 세트 상의 쓰레드를 스위칭한다. 유사하게, 이러한 쓰레딩 아키텍처는 최적 이하(sub-optimal)의 횟수 또는 빈도로 쓰레드를 스위칭하여, 성능이 나빠지거나 전력 소모의 증가를 야기할 수 있다.
본 발명의 실시예는 컴퓨터 시스템 및 정보 프로세싱에 관한 것이다. 보다 구체적으로, 본 발명의 실시예는 상이한 쓰레드를 지연시키거나 또는 적어도 부분적으로 프로세싱 리소스의 다양한 상태 조건을 기초로 하여 프로세싱 리소스로의 액세스를 갖지 못하게 하는 기술과 관련된다. 일 실시예에서는, 예를 들어, 인스트럭션, 서브인스트럭션(예를 들어, "uop") 또는 제어 신호(이하, 일반적으로는 "인스트럭션"이라고 지칭됨)가 실행되어, 데이터가 로딩되거나 다수의 클록 사이클이 경과되는 등의 조건이 충족될 때까지 쓰레드 스케줄링 로직이 하나의 쓰레드로 부터 다른 쓰레드로 수행되는 스위칭을 지연시키게 할 수 있다. 다른 실시예에서는, 후속 인스트럭션이 의존하거나 다르게 사용할 수 있는 프리페치(prefetch) 데이터가 반송될 때까지 쓰레드 스케줄러가 쓰레드 내 후속 인스트럭션 실행을 스케줄링하지 않게 하는 인스트럭션이 실행될 수 있다. 또한, 일 실시예에서는, 상기 인스트럭션들이 쓰레드를 처리하는 프로세싱 리소스의 플러시(예를 들어, 프로세싱 "파이프라인")를 포함하는 것이 아니라, 프로세싱 리소스가 상태 정보를 보유하여 다양한 조건이 충족된 후에는 지연 또는 중지된 쓰레드가 실행을 재개할 수 있게 한다.
본 발명의 실시예는 광범위한 각종 조건에 따라 쓰레드가 지연되거나 또는 스위칭되거나 또는 플러시될 것을 제어하게 함으로써 종래 기술에서의 쓰레드 스케줄링 기술보다 더욱 지능적인 쓰레드 스위칭을 가능하게 한다. 본 발명의 실시예는, 다수의 가변 조건에 따라 쓰레드가 임의의 특정 시간에 프로세싱 조건을 기초로 하여 스케줄링될 것인지 아니면 스위칭될 것인지를 판정하게 함으로써, 오로지 프로세싱 관점에서 합리적인 경우에만 쓰레드를 스위칭하고 그에 따라 관련된 상태 저장/복구 오버헤드를 발생시키므로 보다 낮은 시스템 전력 소모와 함께 프로세싱 성능을 개선할 수 있다. 고정되어 있거나 엄격한 기준 또는 타이밍 세트를 기초로 하여 쓰레드를 스위칭하는 종래 기술의 쓰레드 스케줄링 기술과는 달리, 본 발명의 실시예는 소정 시간에서의 시스템 및 프로세싱 리소스 파라미터 및 조건을 고려하는 다양한 변경가능 알고리즘에 따라 변화하는 시스템 및 프로세싱 조건에 의해 쓰레드 스위칭이 발생하게 한다.
몇몇 실시예에서, 본 명세서에서 설명된 쓰레드 스케줄링 기술은, 적어도 부분적으로, 쓰레드가 실행될 프로세싱 리소스 내의 다양한 마이크로-아키텍처 조건을 기초로 하여, 예를 들어, 오정렬된 데이터 피연산자의 프로세싱 동안, 로킹된 또는 원자적 연산(atomic operation)을 처리하는 동안, 다중 연산 또는 복합 연산(로드 -> ALU 연산, 로드 -> ALU -> 저장 연산 등)을 요구하는 인스트럭션을 처리하는 동안, 또는 소정의 프리픽스(prefixes), 피연산자 크기, 어드레스 크기, 록(locks), 반복 연산 또는 세그먼트 오버라이드 연산을 포함하는 인스트럭션을 디코딩하는 동안에 쓰레드 스위칭을 방지하거나 지연시킨다. 실시예는 또한 다른 마이크로-아키텍처 조건의 결과에 따라서도 마찬가지로 쓰레드 스위칭을 지연시키거나 방지할 수 있다. 몇몇 실시예에서는, 하나 이상의 조건이 쓰레드 스케줄러로 하여금 쓰레드의 프로세싱 상태, 쓰레드의 실행 단 등에 따라 특정 쓰레드를 프로세서로부터 선택적으로 플러시하게 하거나 플러시하지 않게 할 수 있다.
도 1은 적어도 하나의 실시예가 구현될 수 있는 로직을 예시한다. 도 1은 캐시 또는 다른 메모리(도시되지 않음)로부터 페치된 인스트럭션을 각각의 쓰레드에 대응하는 버퍼 위치에 저장시키는 프리페치 버퍼 뱅크(101)를 포함한다. 일 실시예에서, 스케줄링 로직(100)은 4개 쓰레드의 스케줄링을 지원하며, 프리페치 버퍼 뱅크는 쓰레드 당 적어도 하나의 버퍼 입력을 포함하여, 각각의 쓰레드에 대한 페치된 인스트럭션을 저장하게 한다. 다른 실시예에서, 프리페치 버퍼 뱅크는 다수의 버퍼 입력을 포함하여, 각각의 쓰레드에 대한 다수의 인스트럭션을 저장하게 한다. 각각의 쓰레드에 대한 페치된 인스트럭션은 쓰레드 선정 로직(thread picker logic)(110)으로부터의 선택 라인을 기초로 하여 접속부 T1, T2, T3 및 T4를 따라 선택된 쓰레드에 대응하는 인스트럭션 중 하나를 선택할 수 있는 멀티플렉서(먹스(mux))(105)에 전달될 수 있다. 쓰레드 선정 로직은 디코더(120)에 의해 제공되는 페치된 인스트럭션의 디코딩된 표시나 표현 및/또는 쓰레드 차단 표시자(115)를 기초로 하여 어떤 쓰레드를 선택할 것인지 또한 그에 따라 쓰레드의 어떤 인스트럭션을 실행할 것인지를 판정할 수 있다.
일 실시예에서, 디코더는 인스트럭션이 디코딩되고, 상이한 쓰레드로부터의 새로운 인스트럭션이 선택될 수 있을 때를 쓰레드 선정 로직에 표시한다. 일 실시예에서, 쓰레드 차단 신호가 인가되고 디코더가 쓰레드 선정 로직에게 선택된 현재 인스트럭션이 디코딩되었음을 표시한다면, 쓰레드 선정 로직은 상이한 쓰레드로부터의 인스트럭션을 선택할 수 있다. 일 실시예에서, 쓰레드 선정 로직은 쓰레드로부터 인스트럭션을 "라운드-로빈(round-robin)" 방식으로 선택하여, 쓰레드가 명확한 순서(예를 들어, T1, T2, T3, T4)로 선택되게 한다. 일 실시예에서, 쓰레드-피커 로직은 알고리즘에 따라 쓰레드를 선택하여, 선택된 쓰레드의 순서가 다른 조건을 기초로 하여 변경되게 할 수 있다.
일 실시예에서, 쓰레드 선정 로직은 쓰레드 내의 인스트럭션이 디코드 로직에 의해 디코딩되고 실행 로직(도시되지 않음)에 의해 수행되게 하는 먹스에 신호를 인가하여 특정 쓰레드에 대한 인스트럭션을 선택한다. 쓰레드 선정 로직은, 순차적 또는 "라운드-로빈" 선택 알고리즘과 같은 정적 알고리즘을 포함하는, 특정 쓰레드로부터 어떤 인스트럭션을 선택할 것인지에 대한 각종 선택 알고리즘을 구현 할 수 있다. 그러나, 일 실시예에서, 쓰레드 선정 로직은 쓰레드 차단 신호를 수신하여, 쓰레드가 차단/지연 등이 되어야 하는지 아니면 처리되어야 하는지를 표시한다. 일 실시예에서, 쓰레드 차단 신호는 다음에 어떤 쓰레드를 고를 것인지를 선택하기 위해 쓰레드 선정 로직에 의해 구현될 수 있는 알고리즘이 무엇이든지 오버라이드될 수 있다. 예를 들어, 일 실시예에서, 쓰레드 차단 신호의 인가는 순차 또는 "라운드-로빈" 순서에서 다음 쓰레드가 선택되지 못하게 한다.
일 실시예에서, 쓰레드 차단 신호는 지연 인스트럭션 또는 "vprefetch.misshint" 인스트럭션의 실행을 포함하는 다양한 이유로 인가될 수 있다. 예를 들어, vprefetch.misshint 인스트럭션 또는 유사한 인스트럭션의 수신, 디코딩 또는 프로세싱에 응답하여, 쓰레드 차단 신호가 쓰레드 차단 제어 로직(도시되지 않음)에 의해 인가되어, vprefetch.misshint 인스트럭션에 의해 요청된 데이터가 메모리 계층으로부터 페치될 때까지 쓰레드 선정 로직이 쓰레드를 선택하지 못하게 할 수 있다. 일단 데이터가 페치되면, 쓰레드 차단 신호는 인가해제되어, 페치 데이터를 대기하라는 인스트럭션을 갖는 쓰레드가 선택 및 디코딩되게 할 수 있다.
vprefetch.misshint 인스트럭션 또는 유사한 인스트럭션은, 일 실시예에서, 데이터를 (예를 들어, 메모리 또는 레벨-2 캐시로부터 레벨-1 캐시로) 페치한 인스트럭션이 그것을 사용하는 인스트럭션(예를 들어, "로드" 인스트럭션)으로부터 떨어진 소정의 "거리"(프로그램 인스트럭션의 수)일 때의 상황에서 소프트웨어 개발자에게 도움이 될 수 있다. 이들 경우에, 소비자 인스트럭션(페치된 데이터를 사 용하는 인스트럭션)이 충족될 때까지 데이터를 활용하는 쓰레드가 다른 쓰레드로의 프로세싱 리소스를 약화시키지 않을 것이기 때문에, 다른 쓰레드는 데이터가 페치되고 사용될 수 있을 때까지 하드웨어를 활용하지 못하게 될 수 있다. 일 실시예에서, vprefetch.misshint는 소비자 인스트럭션을 포함하는 쓰레드가 "스킵"되거나 스케줄링되지 않게 하고 다른 쓰레드가 스케줄링되거나 수행되게 함으로써 소비 인스트럭션으로 하여금 다른 쓰레드가 하드웨어 리소스를 사용하지 못하게 하는 것을 방지하게 한다. 이러한 방법으로, 쓰레드는 페치된 데이터를 기다리면서 프로세싱 리소스로의 액세스를 방지하도록 허용되지 않는다.
일 실시예에서, 지연 인스트럭션은 쓰레드 차단 신호가 선택가능 시간량 동안 인가되게 할 수 있는 프로세싱 로직(아래에서 설명됨)에 의해 실행될 수 있다. 예를 들어, 일 실시예에서, 지연 인스트럭션은 프로세싱 로직에게 쓰레드가 지연되어야 하는 클록의 수를 표시하는 필드를 포함한다. 고정된 시간량 동안 쓰레드를 멈추게 하는 종래 기술의 인스트럭션과는 달리, 가능하다면 프로세싱 파이프라인 깊이를 기초로 하여, 지연 인스트럭션은 쓰레드에 대응하는 상태를 프로세싱 리소스로부터 플러시하지 않으면서 가변 시간량 동안 쓰레드를 지연시킬 수 있다. 한 때 (예를 들어, 클록 카운터를 통해 추적된) 규정된 시간량 동안이라면, 쓰레드 차단 신호는 인가해제되어, 쓰레드 선정 로직이 쓰레드 선정 로직에서 구현되는 알고리즘(예를 들어, 라운드-로빈)에 따른 다음 쓰레드를 선택할 수 있게 할 수 있다.
일 실시예에서, 쓰레드 차단 신호는 필요한 프리페치 데이터가 메모리 계층으로부터 수신될 때까지 쓰레드가 지연되게 하는 프로세싱 로직(아래에 설명됨)에 의해 "vprefetch.misshint" 인스트럭션의 성능에 대한 응답으로 인가될 수 있다. 또한, 일 실시예에서, vprefetch.misshint 인스트럭션은 쓰레드에 대응하는 상태 정보의 프로세싱 리소스를 플러시하지 않은 채 쓰레드의 성능을 스톨링하거나 지연시킬 수 있다. 그러나, 다른 실시예에서, vprefetch.misshint 인스트럭션은 프리페치 데이터를 검색하는 데 시간이 너무 오래 걸려서 다른 쓰레드의 수행이 과도하게 지연되게 한다면, 프로세서 상태가 플러시되게 할 수 있다. 일 실시예에서, 타이머는 vprefetch.misshint 인스트럭션에 대한 응답으로 쓰레드가 지연되는 시간으로부터의 사이클의 수를 사이클의 임계치로 카운트하는 데 사용될 수 있다. 일단 사이클의 임계치가 충족되면, 프로세서 로직은 지연된 쓰레드 및 인가된 쓰레드 해제 신호에 대응하는 상태로 플러시되어 상이한 쓰레드가 수행되게 할 수 있다.
다른 실시예에서, 쓰레드 차단 신호는 위에서 설명된 마이크로-아키텍처 이벤트를 포함하는 다양한 마이크로-아키텍처 이벤트 또는 프로세싱 로직 내의 상태에 대한 응답과 같은 다른 이유로 인가될 수 있다. 일 실시예에서, 쓰레드 선정 로직은 슬립 벡터 내에 포함된 신호나 데이터 또는 그 밖의 유사한 제어 구조에 대한 응답으로 쓰레드를 선택할 수 있다. 예를 들어, 일 실시예에서, 슬립 벡터는 데이터 변환 색인 버퍼(data translation lookaside buffer: DTLB) 실패, 레벨-1(L1) 캐시 판독 실패, L1 RFO(read-for-ownership) 실패, 필 버퍼 풀 상태(fill buffer full condition), 필 버퍼 세트 어드레스 매칭 상태(fill buffer set address match condition), 캐시불능 기록, 캐시불능 기록 버퍼 풀 상태, 지연 인스트럭션-인플라이트(delay instruction in-flight) 상태, 인스트럭션 프리페치 버 퍼 엠프티 상태, 및 vprefetch.misshint 인스트럭션 수행 상태와 같은 프로세싱 조건을 표시하는 비트를 저장할 수 있다. 슬립 버퍼 입력의 일 실시예가 아래의 표에 예시된다.
Figure 112009041195902-PAT00001
다른 실시예에서, 위에 표시된 슬립 벡터 입력은 상이할 수 있다. 또한, 다소의 슬립 벡터 입력은 몇몇 실시예에서 슬립 벡터에 포함될 수 있다. 일 실시예에서, 슬립 벡터는 지연 또는 vprefetch.misshint 인스트럭션의 성능 표시를 포함할 수 있으며, 슬립 벡터는 쓰레드 차단 신호가 쓰레드 선정 로직에 인가되게 하는 로직에 의해 판독될 수 있다. 마찬가지로, 슬립 벡터는 또한 쓰레드 선정 로직으로의 쓰레드 차단 신호를 언제 인가해제(deassert)할 것인지를 표시할 수 있다. 일 실시예에서, 슬립 벡터에 표시된 조건은 이미 언급된 것들과 같이 다른 마이크로-아키텍처 이벤트를 포함하지 않을 수 있다. 일 실시예에서는, 이전에 언급된 것들과 같은 마이크로-아키텍처 이벤트가 슬립 벡터에 표시된 것들 이외에도 쓰레드 차단 신호의 인가에 영향을 미칠 수 있다. 몇몇 실시예에서는, 슬립 벡터의 내측과 외측 모두에 표시된 수많은 이벤트가 쓰레드 차단 신호의 인가에 영향을 미칠 수 있다.
도 2는 본 발명의 적어도 하나의 실시예가 사용될 수 있는 그래픽 연산을 수행할 수 있는 프로세서를 예시한다. 특히, 도 1은 일반적인 CPU 애플리케이션, 쓰루풋 애플리케이션(예를 들어, 3D 그래픽 애플리케이션) 또는 전통적인 CPU와 쓰루풋 애플리케이션의 조합에 사용될 수 있는 프로세서를 예시한다. 프로세서(200)는 링 상호접속부(230)를 따라 구성되는 다수의 프로세싱 코어(200-1 내지 200-N), 전용 쓰루풋 애플리케이션 하드웨어(210)(예를 들어, 그래픽 텍스처 샘플링 하드웨어), 메모리 인터페이스 로직(220)을 포함한다. 몇몇 실시예에서, 프로세서(200)는 각각의 코어(200-1 내지 200-N) 내의 캐시(201-1 내지 201-N)로부터 정보를 포함하는 하나 이상의 최종 레벨 캐시(235)를 포함할 수 있다. 일 실시예에서, 하나 이상의 프로세싱 코어(200-1 내지 200-N)는 SIMD 연산을 수행할 수 있다.
일 실시예에서, 도 1에 예시된 로직은 도 2의 각 프로세싱 코어에 포함될 수 있다. 일 실시예에서, 도 2의 각 코어는 본 명세서에 설명된 실시예에 따른 다수의 쓰레드를 처리할 수 있다. 다른 실시예에서는, 도 2의 모든 코어가 아니라 하나의 코어 또는 몇 개의 코어만이 본 명세서에 설명된 실시예에 따른 쓰레드를 처리한다.
도 3은 본 발명의 일 실시예가 사용될 수 있는 공용 버스 컴퓨터 시스템을 예시한다. 마이크로프로세서(301-315)는 하나 이상의 CPU(323, 327, 333, 337, 343, 347, 353, 357), 그래픽 디바이스(307, 317, 327, 337), 메모리 제어기(325, 335, 345, 355), I/O 제어부와 같은 다양한 기능 유닛 또는 PCI 또는 PCI 제어 기(320, 330, 340, 350)와 같은 다른 기능 유닛을 포함할 수 있다. 도 3의 시스템은 또한 마이크로프로세서를 주변 제어 디바이스(360)에 인터페이스시키는 I/O 제어기(365)를 포함한다.
일 실시예에서, 시스템은 본 명세서에 설명된 실시예에 따른 선택적 쓰레드 스위칭 및 스케줄링을 가능하게 하는 로직(319)을 포함한다. 예를 들어, 로직은 도 1에 예시되고 논의된 로직을 포함할 수 있다.
몇 가지 실시예에서, 도 3의 예시된 구성요소 중 일부 또는 모두는 마이크로프로세서에 포함될 수 있고, 또한 직접 메모리 인터페이스(DMI), PCI 고속 그래픽(PEG) 상호접속부 등과 같은 다른 상호접속부를 포함할 수도 있다. 구성과 관계없이, 본 발명의 실시예는 도 3의 시스템의 임의의 부분에 포함되거나 그와 관련될 수 있다. 도 3의 시스템은 또한 DRAM, HDD 또는 다양한 저장 디바이스 또는 기술을 포함하는 네트워크 인터페이스를 통해 컴퓨터 시스템으로부터 멀리 떨어져 있는 메모리 소스와 같은 다양한 메모리 구조를 포함할 수 있는 메인 메모리(도시되지 않음)를 포함할 수 있다. 도 3의 시스템 내의 캐시 메모리는 프로세서의 로컬 버스와 같이, 프로세서 내에 위치할 수도 있고 또는 프로세서에 근접하게 위치할 수도 있다.
또한, 캐시 메모리는 6-트랜지스터(6T) 셀 또는 대략적으로 동일하거나 보다 빠른 액세스 속도의 다른 메모리 셀과 같은 비교적 고속인 메모리 셀을 포함할 수 있다.
도 3에 예시된 공용 버스 컴퓨터 시스템 이외에도, P2P(point-to-point) 상 호접속 시스템 및 링 상호접속 시스템을 포함하는 다른 시스템 구성이 본 발명의 다양한 실시예와 관련하여 사용될 수 있다. 도 4의 P2P 시스템은, 예를 들어, 여러 개의 프로세서를 포함할 수 있으되, 이 중 단 2개의 프로세서(470, 480)만이 실례로서 도시된다. 프로세서(470, 480)는 각각 메모리(42, 44)와 접속되는 로컬 메모리 제어기 허브(MCH)(472, 482)를 포함할 수 있다. 프로세서(470, 480)는 PtP 인터페이스 회로(478, 488)를 사용하여 포인트-투-포인트(PtP) 인터페이스(450)를 통해 데이터를 교환할 수 있다. 프로세서(470, 480)는 각각 포인트 투 포인트 인터페이스 회로(476, 494, 486, 498)를 사용하여 개별적인 PtP 인터페이스(452, 454)를 통해 칩셋(490)과 데이터를 교환할 수 있다. 칩셋(490)은 또한 고성능 그래픽 인터페이스(439)를 통해 고성능 그래픽 회로(438)와 데이터를 교환할 수 있다. 본 발명의 실시예는 꽤 많은 프로세싱 코어를 갖는 임의의 프로세서 또는 도 4의 각 PtP 버스 에이전트 내에 위치할 수 있다.
일 실시예에서, 도 4는 도 1에 예시된 로직을 참조하여 논의된 것을 비롯하여 본 명세서에 논의된 실시예에 따른 다수의 쓰레드를 선택적으로 스케줄링하고 스위칭하는 로직(419)을 포함한다.
도 5는 본 발명의 적어도 하나의 실시예와 관련하여 사용될 수 있는 동작의 흐름도를 예시한다. 동작 501에서, 제 1 쓰레드에 대응하는 제 1 인스트럭션이 실행을 위해 페치, 디코딩 및 스케줄링된다. 동작 505에서, 쓰레드 차단 신호가 인가되지 않는다면, 동작 510에서 다른 쓰레드로부터의 인스트럭션이 실행을 위해 선택된다. 동작 505에서 쓰레드 차단 신호가 인가된다면, 동작 515에서 일단 쓰레드 차단 신호가 인가되는 하는 이벤트가 완료되고, 동작 520에서 쓰레드 신호가 인가해제되며, 동작 510에서 다른 쓰레드로부터의 인스트럭션이 실행을 위해 선택된다.
일 실시예에서, 본 명세서에 설명된 vprefetch.misshint 인스트럭션, 지연 인스트럭션 또는 다른 마이크로 아키텍처 이벤트를 포함하는 많은 이벤트가 쓰레드 차단 신호의 인가를 야기한다. 또한, 실행을 위해 선택된 최종 인스트럭션이 디코딩되었는지 아니면 스케줄링되었는지 아니면 수행되었는지의 여부와 같이, 상이한 쓰레드로부터 새로운 인스트럭션을 언제 선택할지의 여부에 대한 결정은 쓰레드 차단 신호의 인가 및 다른 인자 및 알고리즘에 의존할 수 있다. 일 실시예에서, 쓰레드는 순차 또는 "라운드-로빈" 순서로 선택된다. 다른 실시예에서, 쓰레드는 정적 또는 동적으로 결정된 기준, 알고리즘 또는 조건에 따라 선택될 수 있다.
적어도 하나의 실시예의 하나 이상의 양상은 머신에 의해 판독될 때 머신이 본 명세서에 설명된 기술을 수행하는 로직을 제조하게 하는 프로세서 내에서 다양한 로직을 표현하는 머신 판독가능 매체에 저장된 대표 데이터에 의해 구현될 수 있다. "IP 코어"라고 알려진 이러한 대표는 유형의 머신 판독가능 매체("테이프")에 저장될 수 있고, 다양한 고객 또는 제조 설비에 공급되어 실제로 로직 또는 프로세서를 제작하는 제조 머신 내에 로딩될 수 있다.
따라서, 마이크로-아키텍처 메모리 영역 액세스를 지시하는 방법 및 장치가 설명되었다. 상기 설명은 예시적이되 제한적이 아닌 것으로 의도된 것이라는 것이 이해될 것이다. 많은 다른 실시예는 당업자가 위 설명을 읽고 이해하게 되면 자명할 것이다. 따라서, 본 발명의 범주는 첨부한 특허청구범위가 자격을 부여받는 등 가물의 전체 범위와 함께 그러한 특허청구범위를 참조하여 판정되어야 한다.
본 발명의 실시예는 실례로서 예시된 것으로서, 제한사항으로서 예시된 것이 아니며, 첨부한 도면에서 동일한 참조 번호는 유사한 구성요소를 지칭한다.
도 1은 적어도 하나의 발명이 구현될 수 있는 로직을 예시한 도면,
도 2는 본 발명의 적어도 하나의 실시예가 사용될 수 있는 프로세서를 예시한 도면,
도 3은 본 발명의 적어도 하나의 실시예가 사용될 수 있는 공용 버스 컴퓨터 시스템의 블록도,
도 4는 본 발명의 적어도 하나의 실시예가 사용될 수 있는 포인트-투-포인트 상호접속 컴퓨터 시스템을 예시한 블록도,
도 5는 일 실시예에서 사용될 수 있는 동작을 예시한 흐름도이다.

Claims (15)

  1. vprefetch.misshint 인스트럭션 및 쓰레드 지연 인스트럭션으로 구성되는 인스트럭션 세트로부터 선택되는 제 2 인스트럭션이 수행되었는지의 여부에 적어도 부분적으로 기초하여, 다수의 쓰레드 중 하나에 대응하는 제 1 인스트럭션을 선택하는 쓰레드 선택 로직을 포함하는
    장치.
  2. 제 1 항에 있어서,
    상기 제 2 인스트럭션은 쓰레드 차단 신호가 인가되어 상기 쓰레드 선택 로직이 상기 제 1 인스트럭션을 선택하지 못하게 하는
    장치.
  3. 제 1 항에 있어서,
    상기 쓰레드 선택 로직은, 적어도 부분적으로, 오정렬된 데이터 피연산자의 프로세싱과, 로킹된 또는 원자적 연산과, 다중 연산 또는 복합 연산을 요구하는 프로세싱 인스트럭션과, 마이크로 코드 연산의 시퀀스를 사용하는 프로세싱 인스트럭션과, 소정의 프리픽스, 피연산자 크기, 어드레스 크기, 록(locks), 반복 연산 또 는 세그먼트 오버라이드 연산을 포함하는 디코딩 인스트럭션으로 구성되는 다수의 마이크로-아키텍처 조건 중 하나를 기초로 하여 상기 제 1 인스트럭션을 선택하는
    장치.
  4. 제 1 항에 있어서,
    상기 vprefetch.misshint 인스트럭션 및 상기 쓰레드 지연 인스트럭션의 표시는 슬립 벡터에 저장되는
    장치.
  5. 제 4 항에 있어서,
    상기 슬립 벡터(sleep vector)는 다수의 마이크로 아키텍처 조건의 다수의 표시자를 포함하는
    장치.
  6. 제 1 항에 있어서,
    상기 쓰레드 선택 로직은 순차 순서에 따라 상이한 쓰레드로부터 인스트럭션을 선택하는
    장치.
  7. 제 1 항에 있어서,
    상기 쓰레드 선택 로직은 동적 선택 알고리즘에 따라 상이한 쓰레드로부터 인스트럭션을 선택하는
    장치.
  8. 제 1 항에 있어서,
    상기 쓰레드 선택 로직은 시간 다중화된 알고리즘에 따라 상이한 쓰레드로부터 인스트럭션을 선택하는
    장치.
  9. vprefetch.misshint 인스트럭션 및 쓰레드 지연 인스트럭션으로 구성된 인스트럭션의 세트를 포함하는 메모리와,
    상기 인스트럭션의 세트를 페치 및 수행하는 프로세서를 포함하는
    시스템.
  10. 제 9 항에 있어서,
    상기 프로세서는, 상기 vprefetch.misshint 인스트럭션 또는 쓰레드 지연 인스트럭션이 수행되었는지의 여부에 적어도 부분적으로 기초하여 다수의 쓰레드 중 하나에 대응하는 다수의 인스트럭션 중 하나를 선택하는 쓰레드 선택 로직을 포함하는
    시스템.
  11. 제 10 항에 있어서,
    상기 인스트럭션의 세트는 쓰레드 차단 신호가 인가되게 하는
    시스템.
  12. 제 11 항에 있어서,
    상기 쓰레드 선택 로직은, 적어도 부분적으로, 오정렬된 데이터 피연산자의 프로세싱과, 로킹된 또는 원자적 연산과, 다중 연산 또는 복합 연산을 요구하는 프로세싱 인스트럭션과, 마이크로 코드 연산의 시퀀스를 사용하는 프로세싱 인스트럭션과, 소정의 프리픽스, 피연산자 크기, 어드레스 크기, 록, 반복 연산 또는 세그먼트 오버라이드 연산을 포함하는 디코딩 인스트럭션으로 구성되는 다수의 마이크 로-아키텍처 조건 중 하나를 기초로 하여 상기 제 1 인스트럭션을 선택하는
    시스템.
  13. 제 12 항에 있어서,
    상기 vprefetch.misshint 인스트럭션 및 상기 쓰레드 지연 인스트럭션의 표시는 슬립 벡터에 저장되는
    시스템.
  14. 제 13 항에 있어서,
    상기 쓰레드 선택 로직은 순차 순서에 따라 상이한 쓰레드로부터 인스트럭션을 선택하는
    시스템.
  15. 제 14 항에 있어서,
    상기 쓰레드 선택 로직은 동적 선택 알고리즘에 따라 상이한 쓰레드로부터 인스트럭션을 선택하는
    시스템.
KR1020090061430A 2008-07-07 2009-07-07 쓰레드 스케줄링 장치 및 시스템 KR20100005686A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US21755708A 2008-07-07 2008-07-07
US12/217,557 2008-07-07

Publications (1)

Publication Number Publication Date
KR20100005686A true KR20100005686A (ko) 2010-01-15

Family

ID=41427490

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090061430A KR20100005686A (ko) 2008-07-07 2009-07-07 쓰레드 스케줄링 장치 및 시스템

Country Status (4)

Country Link
JP (1) JP2010061642A (ko)
KR (1) KR20100005686A (ko)
DE (1) DE102009032071A1 (ko)
RU (1) RU2009125999A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101420592B1 (ko) * 2012-12-21 2014-07-17 전남대학교산학협력단 컴퓨터 시스템
US9223615B2 (en) 2011-10-12 2015-12-29 Samsung Electronics Co., Ltd. Apparatus and method for thread progress tracking
CN111258653A (zh) * 2018-11-30 2020-06-09 上海寒武纪信息科技有限公司 原子访存方法、存储介质、计算机设备、装置和系统

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012144149A1 (ja) * 2011-04-19 2012-10-26 パナソニック株式会社 マルチスレッドプロセッサ、マルチプロセッサシステム、実行装置、プロセッサボード

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9223615B2 (en) 2011-10-12 2015-12-29 Samsung Electronics Co., Ltd. Apparatus and method for thread progress tracking
KR101420592B1 (ko) * 2012-12-21 2014-07-17 전남대학교산학협력단 컴퓨터 시스템
CN111258653A (zh) * 2018-11-30 2020-06-09 上海寒武纪信息科技有限公司 原子访存方法、存储介质、计算机设备、装置和系统

Also Published As

Publication number Publication date
JP2010061642A (ja) 2010-03-18
RU2009125999A (ru) 2011-01-20
DE102009032071A1 (de) 2010-01-21

Similar Documents

Publication Publication Date Title
US7853777B2 (en) Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions
KR101100470B1 (ko) 멀티쓰레드 프로세서에서의 자동 저전력 모드 호출을 위한장치 및 방법
US7752627B2 (en) Leaky-bucket thread scheduler in a multithreading microprocessor
US7657891B2 (en) Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency
US10761846B2 (en) Method for managing software threads dependent on condition variables
US7664936B2 (en) Prioritizing thread selection partly based on stall likelihood providing status information of instruction operand register usage at pipeline stages
JP4642305B2 (ja) マルチスレッド・プロセッサ内の複数のスレッドに入り、出る方法と装置
US9286075B2 (en) Optimal deallocation of instructions from a unified pick queue
US9058180B2 (en) Unified high-frequency out-of-order pick queue with support for triggering early issue of speculative instructions
US7613904B2 (en) Interfacing external thread prioritizing policy enforcing logic with customer modifiable register to processor internal scheduler
US8230177B2 (en) Store prefetching via store queue lookahead
US9436464B2 (en) Instruction-issuance controlling device and instruction-issuance controlling method
US20060236135A1 (en) Apparatus and method for software specified power management performance using low power virtual threads
KR100745904B1 (ko) 동시적 멀티스레드 프로세서에서 파이프라인 길이를변경하기 위한 방법 및 회로
WO2008136974A1 (en) Universal branch identifier for invalidation of speculative instructions
KR20100111700A (ko) 로킹된 오퍼레이션을 수행하기 위한 방법 및 시스템
US10732976B2 (en) Integrated circuit processor and method of operating the integrated circuit processor in different modes of differing thread counts
KR20100005686A (ko) 쓰레드 스케줄링 장치 및 시스템
US10740102B2 (en) Hardware mechanism to mitigate stalling of a processor core
CN101944046A (zh) 用于调度线程的技术
US11169812B2 (en) Throttling while managing upstream resources
CN112416244A (zh) 用于操作发出队列的装置和方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application