KR20100016347A - 멀티스레드 프로세서를 위한 스레드 디엠퍼시스 명령 - Google Patents

멀티스레드 프로세서를 위한 스레드 디엠퍼시스 명령 Download PDF

Info

Publication number
KR20100016347A
KR20100016347A KR1020097023333A KR20097023333A KR20100016347A KR 20100016347 A KR20100016347 A KR 20100016347A KR 1020097023333 A KR1020097023333 A KR 1020097023333A KR 20097023333 A KR20097023333 A KR 20097023333A KR 20100016347 A KR20100016347 A KR 20100016347A
Authority
KR
South Korea
Prior art keywords
thread
instruction
priority
threads
processor
Prior art date
Application number
KR1020097023333A
Other languages
English (en)
Other versions
KR101519891B1 (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 KR20100016347A publication Critical patent/KR20100016347A/ko
Application granted granted Critical
Publication of KR101519891B1 publication Critical patent/KR101519891B1/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
    • 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
    • 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/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
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/3824Operand accessing
    • 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/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]

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

프로세서(102)에서 스레드들(221, 222)의 실행을 스케줄링하기 위한 기법이 개시된다. 상기 기법은 스레드와 연관된 캐시 미스들(cache misses)과 같은 다수의 계류중인 메모리 트랜잭션들(330)이 임계치(320) 또는 임계치 미만일 때까지 상기 스레드를 디엠퍼시스(de-emphasis)하는 스레드(221)의 스레드 디엠퍼시스 명령(220)을 실행하는 단계를 포함한다. 스레드가 디엠퍼시스되는 동안, 보다 높은 우선순위를 갖는 프로세서에서 다른 스레드들은 실행되거나 또는 시스템 자원들을 할당할 수 있다. 따라서, 프로세서에서 스톨(stall)의 확률이 감소된다.
Figure P1020097023333
멀티스레드 프로세서, 스레드 디엠퍼시스 명령, 메모리 트랜잭션, 스레드 우선순위, 캐시 미스, 스톨

Description

멀티스레드 프로세서를 위한 스레드 디엠퍼시스 명령{THREAD DE-EMPHASIS INSTRUCTION FOR MULTITHREADED PROCESSOR}
본 발명의 개시는 멀티스레드 프로세서들(multithreaded processors)에 관한 것으로, 특히 멀티스레드 프로세서들을 위한 스레드 관리에 관한 것이다.
캐시 미스(cache miss) 또는 다른 메모리 트랜잭션(memory transaction)으로 인한 명령 파이프라인(instruction pipeline) 내의 스톨(stall)은 프로세서의 효율을 저하시킬 수 있다. 이러한 문제는 하나의 스레드로 인해 명령 파이프라인 내의 스톨이 다른 스레드들의 실행을 지연시킬 수 있기 때문에 멀티스레드 프로세서에서 더욱 악화된다. 몇몇 프로세서들은 프로그램 흐름에 관계없이 스톨들에 대해 명령 파이프라인을 모니터하며, 스톨에 응답하여 파이프라인에서 실행될 우선순위를 스톨을 야기하는 스레드와 다른 스레드들에 부여한다. 그러나, 명령 파이프라인에서 스톨을 위한 모니터링은 전형적으로 어려우며 프로세서에서 추가적인 오버헤드(overhead)를 요구한다. 따라서, 멀티스레드 프로세서에서 스레드들에 프로세서 자원들을 할당하기 위한 개선된 기법의 필요성이 존재한다.
도 1은 데이터 프로세싱 디바이스의 한 특정 실시예의 블록도;
도 2는 도 1의 프로세서의 특정 실시예의 블록도;
도 3은 도 2의 스레드 우선순위 모듈의 한 특정 실시예의 블록도;
도 4는 스레드들의 스케줄링의 방법의 한 특정 특정 실시예를 예시하는 도면;
도 5는 스레드들의 스케줄링의 방법의 또 다른 특정 실시예를 예시하는 도면;
도 6은 스레드들의 스케줄링의 예시적인 방법들의 한 특정 실시예를 예시하는 도면.
프로세서에서 스레드들의 실행을 스케줄링하기 위한 기법이 개시된다. 상기 기법은 스레드와 연관된 캐시 미스들과 같은 다수의 계류중인 메모리 트랜잭션들이 임계치 또는 임계치 미만일 때까지 스레드를 디엠퍼시스(de-emphasis)하는 스레드의 스레드 디엠퍼시스 명령을 실행하는 단계를 포함한다. 스레드가 디엠퍼시스되는 동안, 보다 높은 우선순위를 갖는 프로세서에서 다른 스레드들은 시스템 자원들을 실행하거나 할당할 수 있다. 따라서, 프로세서에서 스톨의 확률이 감소된다.
한 실시예에서, 스레드 디엠퍼시스 명령은 제 1 스레드와 연관된 다수의 계류중인 메모리 트랜잭션들이 임계치를 초과하는 경우 제 1 스레드의 우선순위 상태를 변경함으로써 제 1 스레드를 디엠퍼시스하는 프로그램 흐름 내의 명령이다. 일단 다수의 계류중인 메모리 트랜잭션들이 임계치 또는 임계치 미만이면, 제 1 스레드의 우선순위 상태가 회복될 수 있다. 임계치는 스레드 디엠퍼시스 명령의 피연산 자(operand)에 기초할 수 있거나, 사전정의된 값일 수 있다. 한 특정 실시예에서, 임계치는 0이고, 따라서 스레드 디엠퍼시스 명령은 스레드와 연관된 모든 계류중인 메모리 트랜잭션이 해결될 때까지 스레드를 디엠퍼시스한다.
예를 들어, 스레드는 한 특정 메모리 트랜잭션 유형을 위해 디엠퍼시스될 수 있다. 스레드 디엠퍼시스 명령은 그러한 스레드와 연관된 다수의 캐시 미스들에 기초하여 스레드를 디엠퍼시스할 수 있다. 또 다른 스레드 디엠퍼시스 명령은 스레드와 연관된 다수의 캐시가능하지 않은 메모리 액세스들에 기초한 스레드를 디엠퍼시스할 수 있다(즉, 캐시가능하지 않은 것으로 식별된 어드레스들로의 다수의 메모리 액세스들). 대안적인 실시예들은 다수의 메모리 트랜잭션들과 다른 특성에 기초하여 스레드를 디엠퍼시스할 수 있다. 또한, 대안적인 실시예들은 스레드와 연관된 "실행 준비됨(ready to run)" 비트를 변경하는 것과 같이 자신의 우선순위 상태 이외의 스레드의 특성을 변경함으로써 스레드를 디엠퍼시스할 수 있다.
디엠퍼시스된 스레드는 다른 스레드들보다 낮은 프로세서 자원들에 대한 우선순위가 주어진다. 예를 들어, 프로세서가 조악한-정밀도 멀티스레드(coarse-grain multithreading)를 활용하여, 한 번에 하나의 스레드만이 명령 파이프라인에 할당되도록 한다면, 디엠퍼시스된 스레드는 다른 스레드들과 관련하여 더 이상 디엠퍼시스되지 않을 때까지 명령 파이프라인에서 실행되지 않을 것이다. 프로세서가 정교한-정밀도 멀티스레딩(fine-grain multithreading)을 활용하여, 다른 스레드들과 연관된 명령들이 한 번에 명령 파이프라인의 다른 단계들에서 실행되도록 한다면, 디엠퍼시스 프로그램과 연관된 명령들은 그러한 단계에서 계류중인 보다 높은 우선순위 스레드들과 연관된 명령들이 실행될 때까지 명령 파이프라인의 특별한 단계에서 실행되지 않는다. 추가적으로, 디엠퍼시스된 스레드는 명령 파이프라인의 몇몇 단계들을 위한 다른 스레드들보다 낮은 우선순위를 가질 수 있지만, 다른 단계들을 위해 자신의 우선순위를 유지한다.
디엠퍼시스 스레드는 또한 다른 프로세서 자원들의 할당을 위해 보다 낮은 우선순위가 주어질 수 있다. 예를 들어, 디엠퍼시스 스레드는 캐시 액세스, 저장 큐(queue) 액세스, 완료 버퍼 엔트리(completion buffer entries), 명령 페치(fetch) 등을 위해 보다 낮은 우선순위가 주어질 수 있다. 게다가, 스레드는 몇몇 스레드들과 관련하여 디엠퍼시스될 수 있지만 다른 스레드들과 관련하여 우선순위를 유지할 수 있다.
도 1을 참조하면, 데이터 프로세싱 디바이스(100)의 한 특정 실시예의 블록도가 예시된다. 데이터 프로세싱 디바이스(100)는 프로세서(102), 메모리 제어기(104), 그리고 메모리(106)를 포함한다. 프로세서(102)와 메모리 제어기는 각각 버스(bus:105)에 연결된다. 메모리(106)는 메모리 제어기(104)에 양방향 연결을 포함할 수 있다.
메모리 제어기(104)는 버스(105)를 통해 메모리 액세스 정보를 수신하고, 그러한 정보에 기초하여 메모리(106)를 액세스한다. 메모리(106)는 프로세서(102)에서 실행을 위해 명령들을 포함하는 소프트웨어 프로그램들과 루틴들을 저장할 수 있다. 메모리(106)는 RAM 메모리와 같은 휘발성 메모리이거나, 또는 플래시 메모리 또는 하드 디스크 드라이브와 같은 비휘발성 메모리일 수 있다. 한 특정 실시예에 서, 메모리(106)와 메모리 제어기(104)는 프로세서(102)와 동일한 반도체 기판 상에 집적된다. 다른 특정 실시예에서, 메모리(106)는 프로세서(102)와 메모리 제어기(104)와 다른 개별적인 반도체 기판 상에 존재한다.
프로세서(102)는 마이크로프로세서, 마이크로제어기, ASIC 등일 수 있다. 프로세서(102)는 복수 스레드들을 실행하도록 구성되는 멀티스레드 프로세서이다. 스레드들은 상이한 소프트웨어 프로그램 또는 루틴과 연관되거나, 또는 단일 소프트웨어 프로그램 또는 루틴 또는 이들의 조합의 상이한 작업들과 연관될 수 있다.
도 1의 예시된 실시예에서, 프로세서(102)는 명령 캐시(110), 스레드 제어 모듈(112), 명령 파이프라인(114), 그리고 데이터 캐시(116)를 포함한다. 명령 캐시(110)는 명령 파이프라인(114)과 스레드 제어 모듈(112)에 액세스할 수 있다. 명령 파이프라인(114)은 스레드 제어 모듈(112)에 액세스할 수 있다. 또한, 데이터 캐시(116)는 명령 파이프라인(114)에 액세스할 수 있다.
명령 캐시(110)는 프로세서(102)에서 실행을 위한 명령들을 나타내는 명령 데이터를 저장한다. 개시된 명령 데이터는 메모리(106)에서 저장된 소프트웨어 프로그램 데이터의 복사본일 수 있다.
명령 파이프라인(114)은 메모리 액세스, 산술 연산 등과 같은 작업을 수행하기 위한 명령들을 실행한다. 예를 들어, 한 특정 명령에 응답하여, 명령 파이프라인(114)은 데이터를 검색하여 수취하기 위해 데이터 캐시(116)에 액세스할 수 있다. 또 다른 명령에 응답하여, 명령 파이프라인(114)은 메모리 제어기(104)를 통해 메모리(106)로부터 데이터를 요구할 수 있으며, 데이터 캐시(116)에서 요구된 데이 터를 저장한다.
스레드 제어 모듈(112)은 각각의 스레드를 위한 우선순위 상태를 포함하는 각각의 스레드를 위한 상태를 표시하기 위해 상태 정보를 저장한다. 각각의 스레드를 위한 우선순위 상태 및 다른 속성들에 기초하여, 스레드 제어 모듈(112)은 명령 파이프라인(114)에서 스레드들의 실행의 순서를 스케줄링하는 것과 같은 프로세서(102)의 자원들을 할당한다. 스레드 제어 모듈(112)은 또한 각각의 스레드와 연관된 다수의 계류중인 메모리 트랜잭션들을 추적한다.
명령 캐시(110)는 명백한 스레드 디엠퍼시스 명령(120)을 포함한다. 스레드 디엠퍼시스 명령(120)의 실행 동안, 명령 파이프라인(114)은 제 1 스레드와 연관된 다수의 계류중인 메모리 트랜잭션들이 임계치이거나 임계치 미만일 때까지 제 1 스레드의 우선순위가 디엠퍼시스되어야 한다고 스레드 제어 모듈(112)에 통지한다. 한 특정 실시예에서, 스레드 디엠퍼시스 명령(120)은 스레드와 연관된 메모리 트랜잭션이 계류중이지 않을 때까지 스레드가 디엠퍼시스될 것이라는 것을 나타내는 비동작 명령(no-op instruction)의 특별한 형태이다.
명령 파이프라인(114)에서 스레드 디엠퍼시스 명령(120)의 실행에 응답하여, 스레드 제어 모듈(112)은 다른 스레드들과 관련한 스레드를 디엠퍼시스하기 위해 제 1 스레드의 우선순위 상태를 조절한다. 한 특정 실시예에서, 이것은 스레드와 연관된 "실행 준비됨" 비트를 제거함으로써 이루어진다. 이 비트가 제거되는 한, 스레드는 실행을 위해 낮은 우선순위가 주어질 것이다. 비트가 제거될 때 조차 스레드 제어 모듈은 스레드의 다른 우선순위 정보를 지속해서 추적할 수 있어, "실행 준비됨" 비트가 설정될 때, 스레드에 적절한 우선순위가 주어진다. 또한, 스레드 제어 모듈(112)은 명령 파이프라인(114)을 모니터하고 제 1 스레드와 연관된 다수의 계류중인 메모리 트랜잭션들을 계속해서 추적한다. 일단 스레드 디엠퍼시스 명령(120)에 의해 표시된 다수의 계류중인 메모리 트랜잭션들이 해결되면, 스레드 제어 모듈(112)은 우선순위 상태를 설정하여 제 1 스레드가 더 이상 디엠퍼시스되지 않도록 한다.
따라서, 스레드 디엠퍼시스 명령(120)은 그러한 스레드와 연관된 다수의 메모리 트랜잭션들이 임계치 또는 임계치 미만일 때까지 한 특정 스레드를 디엠퍼시스하기 위해 사용될 수 있다. 이것은 프로그래머 또는 컴파일러로 하여금 명령 파이프라인(114)의 자원들을 효율적으로 할당하도록 한다. 예를 들어, 스레드 디엠퍼시스 명령(120)은 다수의 캐시 미스들을 가져올 수 있는 일련의 로드 명령들(load instructions)에 뒤이은 것과 같은 사용자가 명령 파이프라인(114)에서 스톨을 야기할 것으로 믿는 명령들에 뒤이은 또는 선행한 스레드의 프로그램 흐름에서 구현될 수 있다. 스레드는 로드 명령들과 연관된 메모리 트랜잭션들이 해결될 때까지 디엠퍼시스되고, 명령 파이프라인(114)이 메모리 트랜잭션들이 해결되는 동안 다른 스레드들과 연관된 명령들을 실행하도록 한다.
도 2를 참조하면, 도 1의 프로세서(102)와 같은 프로세서에 대응하는 프로세서(202)의 블록도가 예시된다. 프로세서(202)는 명령 캐시(210), 스레드 제어 모듈(212), 명령 파이프라인(214), 그리고 데이터 캐시(216)를 포함한다. 명령 캐시(210)는 버스(296)를 통해 스레드 제어 모듈(212) 및 명령 파이프라인(214)에 의 해 액세스 가능하다. 데이터 캐시(216)는 명령 파이프라인(214)에 의해 액세스가능하다.
명령 캐시(210)는 스레드 A 명령들(221) 및 스레드 B 명령들(222)을 포함한 스레드들과 연관된 명령들의 세트들을 포함한다. 스레드 A 명령들(221)은 스레드 디엠퍼시스 명령(220)을 포함하여 스레드 A와 연관된 계류중인 메모리 트랜잭션들이 해결될 때까지 스레드 B와 관련한 스레드 A를 디엠퍼시스한다.
스레드 제어 모듈(212)은 스레드 우선순위 모듈(235)과 연결된 스레드 스케줄러 모듈(230)을 포함한다. 스레드 우선순위 모듈(235)은 버스(290)에 연결된 입력단(input)을 포함하여 스레드들을 위한 메모리 트랜잭션들이 완료되었다는 표시를 수신한다. 스레드 스케줄러 모듈(230)은 버스(291), 버스(292), 버스(293), 버스(294), 버스(295), 그리고 버스(296)에 연결된 출력단들을 포함한다. 스레드 스케줄러 모듈(230)은 버스들 각각(291 내지 296)에 대한 제어 정보를 제공하여 명령 파이프라인(214)의 단계에서 명령들의 실행을 스케줄한다.
스레드 우선순위 모듈(235)은 스레드 A 및 스레드 B를 포함하는 프로세서(202)에서 각각의 스레드에 대한 우선순위 상태 정보를 저장하며, 우선순위 상태 정보에 기초하여 스레드 스케줄러 모듈(230)로 우선순위 상태 정보를 제공한다. 우선순위 상태 정보에 기초하여, 스레드 스케줄러 모듈(230)은 버스들(291 내지 296) 상에 제어 정보를 제공하여 명령 파이프라인(214)의 단계들에서 명령즐의 실행을 스케줄한다.
명령 파이프라인(214)은 명령 페치 단계(instruction fetch stage:240), 디 코드 단계(decode stage:242), 디스패치 단계(dispatch stage:244), 그리고 로드/저장 유닛(load/store unit:246), 실행 유닛(execution unit:248), 그리고 실행 유닛(249)을 포함한다. 실행 유닛(248 및 249)은 로드/저장 유닛, 소숫점 산술 유닛, 정수 산술 유닛 등일 수 있다. 명령 파이프라인(214)은 또한 버퍼들(250 내지 254)을 포함한다.
명령 페치 단계(240)는 명령 캐시(210) 및 출력단에 연결된 입력단을 포함한다. 버퍼(250)는 명령 페치 단계(240)의 출력단에 연결된 입력단, 버스(295)에 연결된 입력단, 그리고 출력단을 포함한다. 디코드 단계(242)는 버퍼(250)의 출력단과 연결된 입력단 및 출력단을 포함한다. 버퍼(251)는 디코드 단계(242)의 출력단에 연결된 입력단, 버스(294)에 연결된 입력단, 그리고 출력단을 포함한다. 디스패치 단계(244)는 버퍼(251)의 출력단에 연결된 입력단과 3개의 출력단들을 포함한다.
버퍼(252)는 디스패치 단계(244)의 제 1 출력단에 연결된 입력단, 버스(292)에 연결된 입력단, 그리고 출력단을 포함한다. 로드/저장 유닛(246)은 버퍼(251)의 출력단에 연결된 입력단, 버스(290)로의 연결단, 그리고 데이터 캐시(216)로의 연결단을 포함한다.
버퍼(253)는 디스패치 단계(244)의 제 2 출력단에 연결된 입력단, 버스(293)에 연결된 입력단, 그리고 출력단을 포함한다. 실행 유닛(248)은 버퍼(253)의 출력단에 연결된 입력단을 포함한다. 버퍼(254)는 디스패치 단계(244)의 제 3 출력단에 연결된 입력단, 버스(291)에 연결된 입력단, 그리고 출력단을 포함한다. 실행 유 닛(249)은 버퍼(254)의 출력단에 연결된 입력단을 포함한다.
명령 페치 단계(240)는 명령 캐시(210)로부터 명령 데이터를 불러오고 불러온 명령 데이터를 버퍼(250)에 제공한다. 버스(293)를 통해 수신된 제어 정보에 기초하여, 디코드 부분(242)은 버퍼(250)로부터 명령들을 액세스한다.
디코드 스페이지(242)는 버퍼(250)에서 액세스된 명령들을 디코드하고 디코드된 명령들을 버퍼(251)에 제공한다. 버스(292)를 통해 수신된 제어 정보에 기초하여, 디스패치 단계는 버퍼(251)에서 디코드된 명령들을 액세스한다. 디스패치 단계(244)는 로드/저장 유닛(246), 실행 유닛(248), 그리고 실행 유닛(249)중 어느 실행 유닛을 결정하며, 그 결정에 기초하여 버퍼들(252 내지 254) 중 하나로 디코드된 명령을 보낸다.
버퍼(252)는 디스패치 단계(244)에 의해 제공된 디코드된 명령들을 저장한다. 버스(292)를 통해 제공된 제어 정보에 기초하여, 로드/저장 유닛(246)은 디코드된 명령들을 액세스한다. 버퍼(252)로부터 수신된 명령들에 기초하여, 로드/저장 유닛(246)은 데이터 캐시(216)에서 로드 및 저장 동작들을 실행한다. 또한, 로드/저장 유닛은 프로세서(202) 외부 메모리에서 로드 및 저장 동작들을 실행할 수 있다. 예를 들어, 데이터 캐시(216)에서 캐시 미스의 발생시, 로드/저장 유닛은 외부 메모리로부터 데이터 캐시(216)로 캐시 미스와 연관된 데이터를 로딩함으로써 캐시 미스를 해결한다. 게다가, 로드/저장은 버스(290)를 통해 각각의 스레드를 위한 계류중인 메모리 트랜잭션들에 관한 정보를 제공한다. 예를 들어, 스레드와 연관된 캐시 미스가 해결된 후, 로드/저장 유닛(246)은 버스(290)를 통해 스레드와 연관된 다수의 계류중인 캐시 미스들이 일만큼 감소된 것을 나타내는 정보를 제공한다.
버퍼(253)는 디스패치 단계(244)에 의해 제공된 디코드된 명령을 저장한다. 버스(293)를 통해 제공된 제어 정보에 기초하여, 실행 유닛(248)은 디코드된 명령을 액세스한다. 실행 유닛(248)은 버퍼(253)에 의해 제공되는 명령들을 실행한다. 버퍼(254)는 디스패치 단계(244)에 의해 제공된 디코딩된 명령들을 저장한다. 버스(291)를 통해 제공된 제어 정보에 기초하여, 실행 유닛(249)은 디코딩된 명령들을 액세스한다. 실행 유닛(249)은 버퍼(254)에서 액세스된 명령들을 실행한다.
동작 동안, 스레드 스케줄러 모듈(230)은 스레드 우선순위 모듈(235)로부터 우선순위 정보를 수신한다. 우선순위 정보에 기초하여, 스레드 스케줄러 모듈(230)은 명령 캐시(210)와 마찬가지로 버퍼(250 내지 254)에 제어 정보를 제공하여 명령 파이프라인(214)의 각각의 단계에서 스레드 명령들을 위한 실행의 순서를 포함하는 프로세서 자원의 할당을 제어한다. 예를 들어, 수신된 우선순위 정보에 기초하여 스레드 스케줄러 모듈(230)은 디코드 단계(242)에서 스레드 B 명령들(222)에 걸쳐서 주어진 우선순위일 수 있는지를 스레드 A 명령들(221)이 결정할 수 있다. 따라서, 스레드 스케줄러 모듈(230)은 버스(295)를 통해 제어 정보를 버퍼(250)에 제공하여 버퍼(250)에 저장된 스레드 A 명령들이 버퍼(250)에 저장된 스레드(B) 명령들이 제공되기 전에 디코드 단계(242)에 제공된다. 따라서, 명령 캐시(210)와 버퍼들(250 내지 254)에 적절한 제어 정보를 제공함으로써, 스레드 스케줄러 모듈(230)은 명령 파이프라인(214)의 각각의 단계에서 스레드 명령들의 실행의 순서를 제어한다.
스레드 스케줄러 모듈(230)은 스레드 우선순위 모듈(235)에서 저장된 우선순위 정보에 기초하여 스레드 명령의 실행의 순서를 결정한다. 스레드 우선순위 정보는 로드/저장 유닛(246)에서 스레드 디엠퍼시스 명령(220)의 실행에 의해 변경될 수 있다. 스레드 디엠퍼시스 명령(220)의 실행에 응답하여, 로드/저장 유닛(246)은 스레드와 연관된 다수의 계류중인 메모리 트랜잭션들이 임계치 미만일 때까지 스레드 A가 디엠퍼시스될 것이라는 것을 나타내는 정보를 스레드 우선순위 모듈(235)에 제공한다. 로드/저장 유닛(246)은 또한 스레드 디엠퍼시스 명령(220)의 피연산자에 기초하여 임계치를 설정하기 위해 정보를 제공할 수 있다.
응답하여, 스레드 우선순위 모듈(235)은 스레드 A와 연관된 다수의 계류중인 메모리 트랜잭션들을 결정하며, 수가 임계치를 초과하면, 스레드 A와 연관된 우선순위 상태를 변경하여 스레드 B와 관련하여 디엠퍼시스되도록 한다.
로드/저장 유닛(246)이 스레드 A와 연관된 계류중인 메모리 트랜잭션을 해결함에 따라서, 로드/저장 유닛(246)은 버스(290)를 통해서 스레드 우선순위 모듈(235)을 통지한다. 응답하여, 스레드 우선순위 모듈(235)은 스레드 A와 연관된 다수의 계류중인 메모리 트랜잭션들을 조절하며 다수의 메모리 트랜잭션들이 임계치 미만일 때, 스레드 A를 위한 우선순위 상태를 조절하여 스레드 우선순위 모듈(235)이 스레드 B에 대해 더 이상 디엠퍼시스되지 않는다. 따라서, 스레드 A의 우선순위 상태는 다수의 계류중인 메모리 트랜잭션들이 임계치 미만으로 이동할 때 자신의 이전 상태로 자동적으로 회복된다.
도 3을 참조하면, 도 2의 스레드 우선순위 모듈(235)에 대응하는 스레드 우 선순위 모듈(335)의 특정 실시예의 블록도가 예시된다. 스레드 우선순위 모듈(335)은 메모리 트랜잭션 제어 모듈(302), 메모리 트랜잭션 레지스터들의 세트(304), 메모리 트랜잭션 카운터들의 세트(306), 우선순위 상태 레지스터들의 세트(308), 그리고 우선순위 결정 모듈(310)을 포함한다. 메모리 트랜잭션 제어 모듈(302)은 메모리 트랜잭션 레지스터들의 세트(304)와 메모리 트랜잭션 카운터들의 세트(306)로의 양방향 연결을 포함한다. 메모리 트랜잭션 제어 모듈은 또한 로드/저장 유닛(246)(도 2)로부터의 입력단과 출력단을 또한 포함한다. 우선순위 상태 레지스터들의 세트(308)는 메모리 트랜잭션 제어 모듈(302)의 출력단에 연결된 입력단과 출력단을 포함한다. 우선순위 결정 모듈(310)은 우선순위 상태 레지스터들의 세트(308)의 출력단에 연결된 입력단과 스레드 스케줄러 모듈(230)(도 2)에 연결된 출력단을 포함한다.
메모리 트랜잭션 제어 모듈(302)은 로드/저장 유닛(246)으로부터 제어 정보를 수신하도록 구성되며 그러한 정보에 기초하여 메모리 트랜잭션 레지스터들의 세트(304), 메모리 트랜잭션 카운터들의 세트(306), 그리고 타당하게 우선순위 상태 레지스터들의 세트(308)에 저장된 값을 조절한다.
메모리 트랜잭션 레지스터들의 세트(304)는 스레드 A와 연관된 메모리 트랜잭션 임계값을 저장하기 위해 레지스터(320)와 스레드 B와 연관된 메모리 트랜잭션 임계값을 저장하기 위해 레지스터(321)를 포함한다. 레지스터(320 및 321) 내에 저장된 메모리 트랜잭션 임계값들은 스레드 디엠퍼시스 명령의 피연산자에 기초한 정보와 같이 로드/저장 유닛(246)에 의해 제공된 정보에 기초하여 메모리 트랜잭션 제어 모듈(302)에 의해 설정될 수 있다. 한 대안적인 실시예에서, 메모리 트랜잭션 임계값들은 ROM 메모리, 운영 시스템 등에 의해 고정된 값들이다.
메모리 트랜잭션 카운터들의 세트(306)는 스레드 A와 연관된 다수의 계류중인 메모리 트랜잭션들을 저장하는 카운터(330)와 스레드 B와 연관된 다수의 계류중인 메모리 트랜잭션들을 저장하는 카운터(331)를 포함한다. 메모리 트랜잭션 제어 모듈(302)은 카운터(330 및 331) 내에 저장된 값을 개별적으로 조절할 수 있다.
우선순위 상태 레지스터들의 세트(308)는 스레드 A와 연관된 우선순위 상태 정보를 저장하는 레지스터(340)와 스레드 B와 연관된 우선순위 상태 정보를 저장하는 레지스터(341)를 포함한다. 메모리 트랜잭션 제어 모듈(302)은 레지스터(340 및 341)내에 저장된 상태 정보를 개별적으로 조절할 수 있다.
우선순위 결정 모듈은 레지스터(340 및 341)에 저장된 우선순위 상태 정보에 기초하여 스레드 A와 스레드 B를 위한 우선순위 상태를 결정한다. 각각의 스레드를 위한 우선순위 상태에 기초하여, 우선순위 결정 모듈은 스레드 스케줄러 모듈(230)에 제어 정보를 제공하여 각각의 스레드와 연관된 명령이 명령 파이프라인(214)(도 2)의 각각의 단계에서 적절한 순서로 실행되도록 한다.
동작 동안, 메모리 트랜잭션 제어 모듈(302)은 스레드와 연관된 메모리 트랜잭션이 계류중임을 나타내거나, 또는 스레드와 연관된 메모리 트랜잭션이 해결되었다는 것을 나타내는 로드/저장 유닛(246)으로부터 정보를 수신한다. 응답하여, 메모리 트랜잭션 제어 모듈(302)은 메모리 트랜잭션 카운터들의 세트(306) 내에 저장된 값들을 조절한다.
예를 들어, 로드/저장 유닛(246)은 캐시 미스가 스레드 A와 연관된 명령으로 인해 발생하였다는 것을 메모리 트랜잭션 제어 모듈(302)에 표시할 수 있다. 응답하여, 메모리 트랜잭션 제어 모듈(302)은 캐시 미스가 계류중이라는 것을 반영하기 위해 카운터(330)내에 저장된 값을 조절한다. 캐시 미스가 해결된 후(즉, 외부 메모리로부터 데이터를 검색하고 데이터 캐시(216)(도 2)를 로딩함으로써), 로드/저장 유닛(246)은 메모리 트랜잭션 제어 모듈(302)에 캐시 미스의 해결을 나타낸다. 응답하여, 메모리 트랜잭션 제어 모듈(302)은 카운터(330) 내에 저장된 값을 조정하여 메모리 트랜잭션이 해결되었다는 것을 반영하도록 한다. 따라서, 카운터들(330 및 331) 내에 저장된 값들은 스레드 A와 스레드 B와 각각 연관된 다수의 계류중인 메모리 트랜잭션들을 반영한다.
또한, 로드/저장 유닛(246)은 스레드와 연관된 스레드 디엠퍼시스 명령이 수신되었다는 것을 나타내는 정보를 메모리 트랜잭션 제어 모듈(302)에 제공할 수 있다. 응답하여, 메모리 트랜잭션 제어 모듈(302)은 메모리 트랜잭션 카운터들의 세트(306)에 반영된 바와 같이 스레드와 연관된 다수의 계류중인 메모리 트랜잭션들을 메모리 트랜잭션 레지스터들의 세트(304)에 반영된 바와 같이 스레드와 연관된 메모리 트랜잭션 임계치를 비교한다. 비교에 기초하여, 메모리 트랜잭션 제어 모듈(302)은 우선순위 상태 레지스터들의 세트(308)에서 스레드를 위한 상태를 조절함으로써 스레드를 위한 우선순위 상태를 조절한다.
예를 들어, 스레드 디엠퍼시스 명령이 스레드 B와 연관되면, 메모리 트랜잭션 제어 모듈(302)은 카운터(331)에 저장된 값과 레지스터(321)에 저장된 임계값을 비교한다. 비교가 스레드 B와 연관된 다수의 계류중인 메모리 트랜잭션들이 임계치를 초과하는 것을 나타내면, 메모리 트랜잭션 제어 모듈(302)은 레지스터(321)에 저장된 값을 조절하여 스레드 B가 디엠퍼시스되도록 한다.
도 4를 참조하면, 스레드들의 스케줄링 실행의 방법의 특정 실시예의 도면이 예시된다. 블록(402)에서, 스레드는 시간 t0에서 각각의 스레드를 위한 우선순위 상태에 기초하여 실행된다. 예시된 예에서, 스레드 A는 스레드 B에 걸쳐서 우선순위를 가지어, 스레드 A 명령들이 스레드 B 명령들에 앞서 실행된다.
블록(404)에서, 스레드 A 내의 스레드 디엠퍼시스 명령이 시간 t1에서 처리된다. 스레드 디엠퍼시스 명령의 실행은 스레드 A의 디엠퍼시스를 야기하여, 스레드 B에 최상의 우선순위를 제공한다. 따라서, 블록(406)에서, 스레드 A의 실행은 스레드 A와 연관된 계류중인 메모리 트랜잭션이 해결될 때까지 중단된다. 따라서, 예시된 실시예에서, 스레드 B 명령들만이 스레드 A를 위한 계류중인 메모리 트랜잭션들이 해결될 때까지 시간 t2에서 실행된다.
블록(408)으로 가서, 스레드 A를 위한 계류중인 메모리 트랜잭션이 해결된 후, 스레드 A를 위한 우선순위 상태가 시간 t3에서 회복된다. 따라서, 예시된 바와 같이 스레드 A는 스레드 B에 걸쳐 실행의 우선순위를 다시 되찾는다.
도 5를 참조하면, 스레드들의 실행을 스케줄링하는 방법의 다른 특정 실시예의 도면이 예시된다. 블록(502)에서, 스레드들은 시간 t0에서 각각의 스레드를 위한 우선순위 상태에 기초하여 실행된다. 예시된 예에서, 스레드 A는 스레드 B 및 스레드 C에 걸쳐 우선순위를 갖는 반면에, 스레드 B는 또한 스레드 C에 걸쳐 우선순위를 갖는다.
블록(504)에서, 스레드 A를 위한 스레드 디엠퍼시스 명령이 시간 t1에서 수신되어, 스레드 A의 디엠퍼시스의 결과를 가져온다. 따라서, 블록(506)에서, 스레드 A는 스레드 A와 연관된 계류중인 메모리 트랜잭션들이 해결될 때까지 디엠퍼시스된다. 따라서, 예시된 실시예에서, 블록(506)에서 스레드 B는 시간 t2에서 스레드 A에 걸쳐서 실행의 우선순위를 갖는다. 그러나, 스레드 A는 스레드 C에 걸쳐서 우선순위를 유지한다. 따라서, 예시된 예에서, 스레드들은 다른 스레드들에 대해 개별적으로 디엠퍼시스될 수 있다.
블록(508)으로 가서, 스레드 A를 위한 계류중인 메모리 트랜잭션들이 해결된 후, 스레드 A를 위한 우선순위 상태가 시간 t3에서 회복된다. 따라서, 예시된 바와 같이, 스레드 A는 스레드 B보다 높은 실행의 우선순위를 되찾는다.
도 6을 참조하면, 명령 파이프라인에서 스레드의 실행을 스케줄링하는 예시적인 방법들(602 및 604)을 예시하는 블록도가 예시된다. 방법(602)은 스레드 디엠퍼시스 명령의 부재시 명령 파이프라인에서 스레드의 스케줄링을 예시한다. 대조적으로, 방법(604)은 스레드 디엠퍼시스 명령이 스레드 A로부터 실행될 때 명령 파이프라인에서 스레드의 스케줄링을 예시한다. 예시된 바와 같이, 방법들(602 및 604) 모두에 대해, 명백한 디엠퍼시스 부재시, 스레드 A는 정상적으로 스레드 B보다 높 은 실행의 우선순위를 갖는다.
방법(602)을 참조하면, 블록(610)에서 2개의 명령들은 명령 캐시에서 저장되며, 스레드 A와 연관되어 첫 번째, 스레드 B와 연관되어 두 번째로 저장된다. 블록(612)에서, 명령 파이프라인의 페치 단계는 각각의 명령을 위한 현재의 우선순위 상태에 따라서 명령들을 검색하여, 스레드 A 명령이 스레드 B 명령 전에 검색된다.
블록(614)에서, 2개의 명령들이 명령 파이프라인의 디코드 단계를 위한 버퍼 내에 저장된다. 블록(616)에서, 명령들은 각각의 명령을 위해 현재의 우선순위 상태에 기초하여 디코딩되어, 스레드 A 명령이 스레드 B 명령 전에 디코딩된다. 따라서, 스레드 A 명령이 스톨(stall)을 초래하면, 스레드 B 명령은 스톨이 해결될 때까지 디코딩되지 않는다.
방법(604)을 참조하면, 블록(620)에서 2개의 명령들이 명령 캐시에서 저장되며, 스레드 A와 연관되어 첫 번째, 스레드 B와 연관되어 두 번째로 저장된다. 블록(622)에서, 명령 파이프라인의 페치 단계는 각각의 명령을 위한 현재의 우선순위 상태에 따라서 명령들을 검색하여, 스레드 A 명령이 스레드 B 명령 전에 검색된다.
블록(624)에서, 2개의 명령들이 명령 파이프라인의 디코드 단계를 위한 버퍼 내에 저장된다. 예시된 바와 같이, 블록(624)에서, 버퍼는 스레드 A와 연관된 스레드 디엠퍼시스 명령이 명령 파이프라인의 다른 단계에서 실행되었다는 것을 나타내는 제어 정보를 수신한다. 스레드 디엠퍼시스 명령에 응답하여 스레드 A를 위한 우선순위 상태는 스레드 B에 대해 디엠퍼시스된다. 따라서, 블록(626)에서, 명령들은 각각의 명령을 위해 현재의 우선순위 상태에 기초하여 디코딩되어, 스레드 B 명령 이 스레드 A 명령 이전에 디코딩된다. 따라서, 스레드 A 명령이 스톨을 초래하면, 스레드 B 명령은 스톨이 해결되는 동안 디코딩되며, 방법(602)과 관련하여 명령 파이프라인의 보다 효율적인 동작을 초래한다.
본 명세서에서, "첫 번째(first)" 및 "두 번째(second)" 등과 같은 관계 용어는 하나의 엔터티 또는 액션과 이러한 엔터티 또는 액션간의 어떠한 실제적인 이러한 관계 또는 순서를 필수적으로 또는 암시함이 없이 다른 엔터티들 또는 액션들을 구별하기 위해서만 사용될 수 있다. 용어들 "포함한다(comprise)", "포함하는(comprising)", 또는 이들의 임의 다른 변화형들은 비배타적(non-exclusive) 포함을 의도하기 위함이며, 소자들의 목록을 포함하는 프로세스, 방법, 물품(article), 또는 장치가 이들 소자들을 포함할 뿐만 아니라 명백히 목록에 표시되지 않거나 또는 이러한 프로세스, 방법, 품목, 또는 장치에 고유하지 않은 다른 소자들을 포함할 수 있다. "comprise...a"에 앞서는 소자는 보다 많은 제약없이 소자를 포함하는 프로세스, 방법, 품목, 또는 장치 내의 추가적인 동일한 소자들의 존재를 배제하지 않는다. 용어 "또는(or)"는 포괄적인 "or"를 커버하기 위함이어서, "or" 조건 명제의 모든 조건들이 충족되면, 조건 명제가 충족된다. 용어 "범위(range)"는 오직 단일 값만을 포함하는 범위를 포함할 수 있다.
본 명세서에 사용된 바와 같이, 용어 "또 다른(another)"은 둘 또는 그 이상을서 정의된다. 본 명세서에 사용된 바와 같이, 용어 "포함하는(including)", "갖는(having)", 또는 이들의 임의 변화형을 포함하는 것으로서 정의된다. 전자-광학 기술을 참조하여 본 명세서에 사용된 바와 같이, 용어 "결합된(coupled)"은 비록 반드시 직접적일 필요는 없고, 반드시 기계적일 필요는 없지만, 연결된 것으로서 정의된다.
본 명세서에 사용된 바와 같이, 용어 "버스(bus)"는 데이터, 어드레스, 제어, 또는 상태와 같은 하나 이상의 다양한 유형의 정보를 전달하기 위해 사용될 수 있는 복수의 신호들 또는 컨덕터들을 언급하기 위해 사용된다. 본 명세서에 논의된 바와 같이 컨덕터들이 예시될 수 있거나 단일 컨덕터, 복수의 컨덕터들, 일방향 컨덕터, 또는 양방향 컨덕터들인 것으로서 참조적으로 기술된다. 그러나, 상이한 실시예들이 컨덕터들의 구현을 변화시킬 수 있다. 예를 들어, 개별적인 일방향 컨덕터들이 양방향 컨덕터들 대신에 사용될 수 있으며 그 반대일 수 있다. 또한, 복수의 컨덕터들이 복수 신호들을 직렬로 또는 시간 멀티플렉싱된 방식으로 전송하는 단일 컨덕터로 대체될 수 있다. 마찬가지로, 복수 신호들을 운반하는 단일 컨덕터들은 이들 신호들의 서브셋들을 운반하는 다양한 다른 컨덕터들로 분리될 수 있다. 따라서, 많은 옵션들이 신호 전송을 위해 존재한다.
본 발명의 개시의 다른 실시예들, 사용들, 그리고 장점들이 명세서의 고려 및 본 명세서의 개시의 실시로부터 당업자들에게 분명할 것이다. 예를 들어, 본 명세서에 개시된 성능 이벤트 모니터링 기법들이 단일 프로세서와 관련하여 논의되었다고 하더라도, 유사한 기법들이 복수 프로세서 코어들을 갖는 디바이스들을 위해 활용될 수 있다. 각각의 프로세서 코어는 상이한 성능 이벤트 모니터와 연관될 수 있거나 또는 디바이스의 각각의 성능 이벤트 모니터가 복수 프로세서 코어들과 연관될 수 있다. 명세서 및 도면들은 단지 예시적인 것으로 고려될 수 있으며, 따라 서, 개시의 범주는 이어지는 청구항들 및 이들의 등가물들에 의해서만 제한되고자 의도된다.

Claims (20)

  1. 프로세서(a processor)에서 제 1 스레드(a first thread)의 제 1 스레드 디엠퍼시스 명령(a first thread de-emphasis instruction)을 실행하는 단계; 및
    상기 제 1 스레드 디엠퍼시스 명령 실행에 응답하여, 상기 제 1 스레드와 연관된 다수의 계류중인 메모리 트랜잭션들과 제 1 임계치(a first threshold) 간의 제 1 관계에 기초하여 상기 제 1 스레드의 우선순위 상태를 디엠퍼시스하는 단계를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 제 1 상태로 설정되는 상기 제 1 스레드의 상기 우선순위 상태를 디엠퍼시스하는 단계에 응답하여 상기 제 1 스레드의 실행을 중단하는 단계를 추가로 포함하는, 방법.
  3. 제 1 항에 있어서,
    상기 제 1 스레드의 상기 우선순위 상태가 디엠퍼시스되는 동안 상기 프로세서에서 제 2 스레드를 실행하는 단계를 추가로 포함하는, 방법.
  4. 제 1 항에 있어서,
    상기 제 1 스레드의 상기 우선순위 상태에 기초하여 상기 프로세서에서 프로 세서 자원들을 할당하는 단계를 추가로 포함하는, 방법.
  5. 제 1 항에 있어서,
    상기 제 1 스레드의 상기 우선순위 상태가 디엠퍼시스되는 동안, 상기 제 1 스레드와 연관된 상기 다수의 계류중인 메모리 트랜잭션들에서 변화의 표시를 수신하는 단계; 및
    상기 표시에 응답하여 제 2 상태로 상기 제 1 스레드의 상기 우선순위 상태를 회복하는 단계를 추가로 포함하는, 방법.
  6. 제 5 항에 있어서,
    상기 제 1 스레드의 상기 우선순위 상태를 디엠퍼시스하는 단계에 응답하여 상기 제 1 스레드의 실행을 중단하는 단계; 및
    상기 제 1 스레드의 상기 우선순위 상태를 회복하는 단계에 응답하여 상기 제 1 스레드의 실행을 재개하는 단계를 추가로 포함하는, 방법.
  7. 제 1 항에 있어서,
    상기 제 1 스레드와 연관된 상기 다수의 계류중인 메모리 트랜잭션들이 상기 제 1 스레드와 연관된 다수의 캐시 미스들(cache misses)에 기초하는, 방법.
  8. 제 1 항에 있어서,
    상기 제 1 스레드와 연관된 상기 다수의 계류중인 메모리 트랜잭션들이 상기 제 1 스레드와 연관된 다수의 캐시가능하지 않은 메모리 트랜잭션들에 기초하는, 방법.
  9. 제 1 항에 있어서,
    상기 제 1 스레드와 연관된 상기 다수의 계류중인 메모리 트랜잭션들이 제 1 메모리 트랜잭션 유형과 연관되고, 상기 제 1 메모리 트랜잭션 유형은 상기 제 1 스레드 디엠퍼시스 명령에 기초하는, 방법.
  10. 제 1 항에 있어서,
    상기 제 1 임계치는 상기 제 1 스레드 디엠퍼시스 명령의 피연산자에 기초하는, 방법.
  11. 제 1 항에 있어서,
    상기 제 1 스레드 디엠퍼시스 명령은 비동작 명령(no-op instruction)인, 방법.
  12. 제 1 항에 있어서,
    상기 프로세서에서 제 2 스레드의 제 2 스레드 디엠퍼시스 명령을 수신하는 단계; 및
    상기 제 2 스레드 디엠퍼시스 명령 수신에 응답하여, 상기 제 2 스레드와 연관된 다수의 계류중인 메모리 트랜잭션들과 제 2 임계치(a second threshold) 간의 제 1 관계에 기초하여 상기 제 2 스레드의 우선순위 상태를 디엠퍼시스하는 단계를 추가로 포함하는, 방법.
  13. 복수의 스레드들의 명령들을 실행하도록 구성된 명령 파이프라인; 및
    스레드 제어 모듈을 포함하고, 상기 스레드 제어 모듈은,
    상기 복수의 스레드들의 각각의 우선순위 레벨에 기초하여 상기 명령 파이프라인에서 상기 복수의 스레드들의 명령들의 실행을 스케줄하도록 구성된 스레드 스케줄러 모듈; 및
    상기 제 1 스레드와 연관된 다수의 계류중인 메모리 트랜잭션들과 제 1 임계치 간의 제 1 관계에 기초하여 상기 명령 파이프라인에서 제 1 스레드 디엠퍼시스 명령의 실행에 응답하여, 상기 복수의 스레드들 중의 제 1 스레드의 상기 우선순위 상태를 디엠퍼시스하도록 구성된 우선순위 제어 모듈(a priority control module)을 포함하는, 디바이스.
  14. 제 13 항에 있어서,
    상기 스레드 스케줄러 모듈은 상기 제 1 스레드의 상기 우선순위 상태를 디엠퍼시스하는 단계에 응답하여 상기 제 1 스레드의 실행을 중단하도록 구성되는, 디바이스.
  15. 제 13 항에 있어서,
    상기 스레드 스케줄러 모듈은 상기 복수의 스레드들의 각각의 우선순위 상태에 기초하여 상기 명령 파이프라인의 자원들을 할당하도록 구성되는, 디바이스.
  16. 제 13 항에 있어서,
    우선순위 제어 모듈은 상기 명령 파이프라인에서 제 2 명령의 실행에 응답하여 상기 제 1 상태로 상기 복수의 스레드들의 제 2 스레드의 상기 우선순위 레벨을 설정하도록 구성되고, 상기 제 1 상태로 설정된 상기 제 2 스레드의 상기 우선순위 레벨은 상기 제 2 스레드와 연관된 다수의 계류중인 메모리 트랜잭션들과 제 2 임계치 간의 제 1 관계에 기초하는, 디바이스.
  17. 제 13 항에 있어서,
    상기 제 1 임계치는 상기 제 1 스레드 디엠퍼시스 명령의 피연산자에 기초하는, 디바이스.
  18. 제 13 항에 있어서,
    상기 제 1 스레드와 연관된 상기 다수의 계류중인 메모리 트랜잭션들은 상기 제 1 스레드와 연관된 다수의 캐시 미스들에 기초하는, 디바이스.
  19. 제 13 항에 있어서,
    상기 제 1 스레드와 연관된 상기 다수의 계류중인 메모리 트랜잭션들이 상기 제 1 스레드와 연관된 다수의 캐시가능하지 않은 메모리 트랜잭션들에 기초하는, 디바이스.
  20. 프로세서를 조작하기 위해 복수의 명령들을 포함하는 컴퓨터 판독가능 매체에 있어서, 상기 복수의 명령들은,
    프로세서에서 복수의 스레드들 중의 제 1 스레드의 제 1 스레드 디엠퍼시스 명령을 실행하기 위한 명령들; 및
    상기 제 1 스레드와 연관된 다수의 계류중인 메모리 트랜잭션들과 제 1 임계치 간의 제 1 관계에 기초하여 상기 제 1 스레드의 우선순위 상태를 디엠퍼시스하기 위한 명령들을 포함하는, 컴퓨터 판독가능 매체.
KR1020097023333A 2007-05-10 2008-04-28 멀티스레드 프로세서를 위한 스레드 디엠퍼시스 명령 KR101519891B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/746,998 2007-05-10
US11/746,998 US8832702B2 (en) 2007-05-10 2007-05-10 Thread de-emphasis instruction for multithreaded processor
PCT/US2008/061713 WO2008140921A1 (en) 2007-05-10 2008-04-28 Thread de-emphasis instruction for multithreaded processor

Publications (2)

Publication Number Publication Date
KR20100016347A true KR20100016347A (ko) 2010-02-12
KR101519891B1 KR101519891B1 (ko) 2015-05-13

Family

ID=39970715

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097023333A KR101519891B1 (ko) 2007-05-10 2008-04-28 멀티스레드 프로세서를 위한 스레드 디엠퍼시스 명령

Country Status (6)

Country Link
US (1) US8832702B2 (ko)
EP (1) EP2147373B1 (ko)
JP (1) JP5413853B2 (ko)
KR (1) KR101519891B1 (ko)
CN (1) CN101689124A (ko)
WO (1) WO2008140921A1 (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 전남대학교산학협력단 컴퓨터 시스템
US9274845B2 (en) 2013-05-13 2016-03-01 Samsung Electronics Co., Ltd. Job scheduling apparatus and job scheduling method thereof to assign jobs to a core
KR102639415B1 (ko) * 2023-07-18 2024-02-23 메티스엑스 주식회사 프로세서에서 단일 트랜잭션으로부터 변환된 복수의 트랜잭션들을 처리하는 방법 및 이를 수행하기 위한 프로세서

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090138683A1 (en) * 2007-11-28 2009-05-28 Capps Jr Louis B Dynamic instruction execution using distributed transaction priority registers
US8886918B2 (en) * 2007-11-28 2014-11-11 International Business Machines Corporation Dynamic instruction execution based on transaction priority tagging
US8453146B2 (en) * 2009-12-23 2013-05-28 Intel Corporation Apportioning a counted value to a task executed on a multi-core processor
US8589934B2 (en) * 2011-04-01 2013-11-19 Arm Limited Controlling priority levels of pending threads awaiting processing
CN104011703B (zh) * 2011-12-22 2017-04-12 英特尔公司 用于指定应用线程性能状态的指令的指令处理装置及相关方法
JP6183049B2 (ja) * 2013-08-15 2017-08-23 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US9928068B2 (en) * 2015-12-07 2018-03-27 International Business Machines Corporation Hardware managed dynamic thread fetch rate control
US10572307B2 (en) * 2017-07-26 2020-02-25 Bank Of America Corportion System and method of training machine learning algorithm to satisfactorily allocate resources for task execution

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07110773A (ja) 1993-10-12 1995-04-25 Canon Inc タスクの切替え装置
US5724565A (en) 1995-02-03 1998-03-03 International Business Machines Corporation Method and system for processing first and second sets of instructions by first and second types of processing systems
US5887166A (en) 1996-12-16 1999-03-23 International Business Machines Corporation Method and system for constructing a program including a navigation instruction
US6658447B2 (en) 1997-07-08 2003-12-02 Intel Corporation Priority based simultaneous multi-threading
US6105051A (en) 1997-10-23 2000-08-15 International Business Machines Corporation Apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor
US6212544B1 (en) 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6567839B1 (en) 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US6477562B2 (en) 1998-12-16 2002-11-05 Clearwater Networks, Inc. Prioritized instruction scheduling for multi-streaming processors
GB2372847B (en) 2001-02-19 2004-12-29 Imagination Tech Ltd Control of priority and instruction rates on a multithreaded processor
US6918116B2 (en) 2001-05-15 2005-07-12 Hewlett-Packard Development Company, L.P. Method and apparatus for reconfiguring thread scheduling using a thread scheduler function unit
NZ534314A (en) * 2002-01-30 2005-04-29 Real Entpr Solutions Dev B Method of setting priority levels in a multiprogramming computer system with priority scheduling, multiprogramming computer system and program therefor
JP2004234123A (ja) 2003-01-28 2004-08-19 Fujitsu Ltd マルチスレッドコンピュータ
US7469407B2 (en) 2003-04-24 2008-12-23 International Business Machines Corporation Method for resource balancing using dispatch flush in a simultaneous multithread processor
US7401207B2 (en) 2003-04-25 2008-07-15 International Business Machines Corporation Apparatus and method for adjusting instruction thread priority in a multi-thread processor
US7380247B2 (en) 2003-07-24 2008-05-27 International Business Machines Corporation System for delaying priority boost in a priority offset amount only after detecting of preemption event during access to critical section
JP2006099569A (ja) 2004-09-30 2006-04-13 Kyocera Mita Corp メモリインタフェース回路及びクロック制御方法
US7584344B2 (en) 2006-05-02 2009-09-01 Freescale Semiconductor, Inc. Instruction for conditionally yielding to a ready thread based on priority criteria

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101420592B1 (ko) * 2012-12-21 2014-07-17 전남대학교산학협력단 컴퓨터 시스템
US9274845B2 (en) 2013-05-13 2016-03-01 Samsung Electronics Co., Ltd. Job scheduling apparatus and job scheduling method thereof to assign jobs to a core
US9645855B2 (en) 2013-05-13 2017-05-09 Samsung Electronics Co., Ltd. Job scheduling optimization based on ratio of stall to active cycles
US10585709B2 (en) 2013-05-13 2020-03-10 Samsung Electronics Co., Ltd. Job scheduling optimization based on ratio of stall to active cycles
KR102639415B1 (ko) * 2023-07-18 2024-02-23 메티스엑스 주식회사 프로세서에서 단일 트랜잭션으로부터 변환된 복수의 트랜잭션들을 처리하는 방법 및 이를 수행하기 위한 프로세서

Also Published As

Publication number Publication date
CN101689124A (zh) 2010-03-31
EP2147373B1 (en) 2018-11-21
JP5413853B2 (ja) 2014-02-12
WO2008140921A1 (en) 2008-11-20
EP2147373A1 (en) 2010-01-27
JP2010527071A (ja) 2010-08-05
EP2147373A4 (en) 2011-11-23
KR101519891B1 (ko) 2015-05-13
US20080282251A1 (en) 2008-11-13
US8832702B2 (en) 2014-09-09

Similar Documents

Publication Publication Date Title
KR101519891B1 (ko) 멀티스레드 프로세서를 위한 스레드 디엠퍼시스 명령
US8898435B2 (en) Optimizing system throughput by automatically altering thread co-execution based on operating system directives
US8695002B2 (en) Multi-threaded processors and multi-processor systems comprising shared resources
US8397236B2 (en) Credit based performance managment of computer systems
US7475399B2 (en) Method and data processing system optimizing performance through reporting of thread-level hardware resource utilization
US7448037B2 (en) Method and data processing system having dynamic profile-directed feedback at runtime
US10761846B2 (en) Method for managing software threads dependent on condition variables
US6857060B2 (en) System, apparatus and method for prioritizing instructions and eliminating useless instructions
US9436464B2 (en) Instruction-issuance controlling device and instruction-issuance controlling method
US10831537B2 (en) Dynamic update of the number of architected registers assigned to software threads using spill counts
US20150277925A1 (en) Data processing apparatus and method for executing a stream of instructions out of order with respect to original program order
JP2014002735A (ja) ゼロサイクルロード
US9817696B2 (en) Low latency scheduling on simultaneous multi-threading cores
US10649780B2 (en) Data processing apparatus and method for executing a stream of instructions out of order with respect to original program order
US9229716B2 (en) Time-based task priority boost management using boost register values
EP4217855A1 (en) Processor with multiple fetch and decode pipelines
US10114669B2 (en) Dynamic SMT
US11907126B2 (en) Processor with multiple op cache pipelines

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: 20190430

Year of fee payment: 5