KR102591051B1 - 스케줄러 큐 할당 버스트 모드 - Google Patents

스케줄러 큐 할당 버스트 모드 Download PDF

Info

Publication number
KR102591051B1
KR102591051B1 KR1020227020409A KR20227020409A KR102591051B1 KR 102591051 B1 KR102591051 B1 KR 102591051B1 KR 1020227020409 A KR1020227020409 A KR 1020227020409A KR 20227020409 A KR20227020409 A KR 20227020409A KR 102591051 B1 KR102591051 B1 KR 102591051B1
Authority
KR
South Korea
Prior art keywords
burst mode
operations
single class
threshold
class
Prior art date
Application number
KR1020227020409A
Other languages
English (en)
Other versions
KR20220108082A (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 KR20220108082A publication Critical patent/KR20220108082A/ko
Application granted granted Critical
Publication of KR102591051B1 publication Critical patent/KR102591051B1/ko

Links

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
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction 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/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/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

스케줄러 큐 할당 버스트 모드를 구현하기 위한 시스템, 장치 및 방법이 개시된다. 스케줄러 큐 할당 유닛은 각각의 클록 사이클에서 디코드 유닛으로부터 복수의 동작을 갖는 디스패치 패킷을 수신한다. 스케줄러 큐 할당 유닛은, 임의의 동작 클래스에 대한 디스패치 패킷 내의 동작 수가 단일 사이클에서 스케줄러 큐로 디스패치하기 위한 대응하는 임계치보다 큰지 여부를 결정한다. 주어진 클래스에 대한 동작 수가 대응하는 임계치보다 크고, 버스트 모드 카운터가 버스트 모드 윈도우 임계치보다 작은 경우, 스케줄러 큐 할당 유닛은 주어진 클래스에 대한 추가 수(extra number)의 동작을 단일 사이클로 디스패치한다. 적은 수의 사이클 동안 주어진 동작 클래스에 대해 버스트 모드로 동작함으로써, 프로세서 처리량은 다른 동작 클래스의 프로세서를 고갈시키지 않고 증가될 수 있다.

Description

스케줄러 큐 할당 버스트 모드
프로세서 파이프라인은 실행되는 명령어에 대해 동작하는 많은 다른 유닛을 포함한다. 이들 유닛은 디코드 유닛(decode unit), 스케줄러, 스케줄러 큐(scheduler queues), 피커(pickers), 및 실행 유닛을 포함한다. 디코드 유닛은 페치된 명령어(fetched instructions)를 명령어 동작으로 디코딩한다. 명령어 동작들은 또한 본 명세서에서 "ops"로 지칭된다. 일반적으로 op는 실행 유닛들에 포함된 하드웨어가 실행할 수 있는 동작이다. 다양한 구현예들에서, 각각의 명령어는, 실행될 때, 명령어 세트 아키텍처에 따라 그 명령어에 대해 정의된 동작들의 성능을 초래하는 하나 이상의 ops로 변환된다. 스케줄러가 디코딩된 ops를 스케줄러 큐들에 디스패치한 후, 피커들은 실행 유닛들에 의해 실행될 스케줄러 큐들 중에서 ops를 선택한다.
전형적인 스케줄러는 전체 성능 이득을 위해 각각 ops 클래스에 이용할 수 있는 디스패치 대역폭의 양을 프로비저닝한다. 비전형적인 스케줄러의 경우, 각각 ops 클래스에 할당된 디스패치 대역폭은 해당 ops 클래스에 대한 실행 단위의 수와 일치한다. 이 접근법은 프로그램이 매 사이클에서 안정적이고 정확한 ops의 혼합을 관찰할 때 잘 작동한다. 그러나, 하나의 ops 클래스가 짧은 버스트에서 나타날 때, 이것은 전형적인 스케줄러에 대한 프로세서의 성능을 방해할 수 있다.
본 명세서에 설명된 방법들 및 메커니즘들의 장점들은 첨부된 도면들과 함께 다음 설명을 참조함으로써 더 잘 이해될 수 있다:
도 1은 컴퓨팅 시스템의 일 구현예의 블록도이다
도 2는 프로세서 파이프라인의 일 구현예의 블록도이다.
도 3은 프로세서 파이프라인의 일부의 일 구현예의 블록도이다.
도 4는 스케줄러 큐 할당 버스트 모드에 들어갈 때를 결정하기 위한 방법의 일 구현예를 예시하는 일반화된 흐름도이다.
도 5는 스케줄러 큐 할당 유닛이 버스트 모드로 들어가기 위한 방법의 일 구현예를 예시하는 일반화된 흐름도이다.
도 6는 스케줄러 큐 할당 버스트 모드에 들어갈지 여부를 결정하기 위한 방법의 일 구현예를 예시하는 일반화된 흐름도이다.
도 7은 버스트 모드 윈도우를 트래킹하기 위한 방법의 일 구현예를 예시하는 일반화된 흐름도이다.
다음의 설명에서, 많은 특정 세부사항들이 본 명세서에 제시된 방법들 및 메커니즘들의 철저한 이해를 제공하기 위해 제시된다. 그러나, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 이러한 특정 세부사항 없이 다양한 구현예들이 실시될 수 있음을 인식해야 한다. 일부 경우들에서, 잘 알려진 구조들, 컴포넌트들, 신호들, 컴퓨터 프로그램 명령어들 및 기술들은 본 명세서에 설명된 접근법들을 모호하게 하는 것을 피하기 위해 상세히 도시되지 않았다. 예시의 단순성과 명료성을 위해, 도면에 도시된 엘리먼트가 반드시 축척대로 그려지지는 않았다는 것이 이해될 것이다. 예를 들어, 일부 엘리먼트의 치수는 다른 엘리먼트에 비해 과장될 수 있다.
스케줄러 큐 할당 버스트 모드를 구현하기 위한 다양한 시스템, 장치 및 방법이 본 명세서에 개시된다. 시스템은 하나 이상의 메모리에 결합된 하나 이상의 프로세서를 포함한다. 각각의 프로세서는 명령어들을 페치, 프로세싱 및 실행하기 위한 복수의 파이프라인 스테이지들을 갖는 프로세서 파이프라인을 포함한다. 일 구현예에서, 프로세서는 명령어들의 비순차적 실행을 이용한다. 명령어들은 페치되고 그런 다음 디코드 유닛에 의해 명령어 동작들(또는 "ops")로 디코딩된다. 디코드 유닛은 디코딩된 ops의 디스패치 패킷을 각각의 클록 사이클에서 스케줄러 큐 할당 유닛으로 전달한다.
일 구현예에서, 스케줄러 큐 할당 유닛이 디스패치 패킷을 수신할 때, 스케줄러 큐 할당 유닛은 임의의 ops 클래스에 대한 디스패치 패킷 내의 ops의 수가 단일 사이클에서 특정 클래스에 대한 스케줄러 큐에 발행하기 위한 최대 허용 가능한 ops의 수보다 큰지를 결정한다. 일 실시예에서, 동작들의 각각의 클래스는 다른 유형의 실행 유닛에 의해 실행 가능한 다른 유형의 ops를 지칭한다. 예를 들어, 다른 유형들의 ops는 산술 로직 유닛 (ALU) ops, 어드레스 생성 유닛 (AGU) ops, 부동 소수점 ops, 정수 ops, 로드/저장 ops 등 중 하나 이상을 포함한다. 주어진 클래스에 대한 ops의 수가 허용 가능한 수보다 크고, 버스트 모드 카운터가 임계치보다 작으면, 스케쥴러 큐 할당 유닛은 주어진 클래스에 대한 여분의 ops의 수를 단일 사이클로 디스패치하고, 또한 버스트 모드 카운터를 증가시킨다. 적은 수의 사이클 동안 주어진 op 클래스에 대해 버스트 모드로 동작함으로써, 프로세서 처리량은 다른 유형의 op 클래스의 프로세서를 고갈시키지 않고 증가될 수 있다.
이제 도 1을 참조하면, 컴퓨팅 시스템(100)의 일 구현예의 블록도가 도시된다. 일 구현예에서, 컴퓨팅 시스템(100)은 적어도 프로세서들(105A-N), 입력/출력(I/O) 인터페이스들(120), 버스(125), 메모리 제어기(들)(130), 네트워크 인터페이스(135), 및 메모리 디바이스(들)(140)를 포함한다. 다른 구현예들에서, 컴퓨팅 시스템(100)은 다른 컴포넌트들을 포함하고 및/또는 컴퓨팅 시스템(100)은 상이하게 배열된다. 프로세서들(105A-N)은 시스템(100)에 포함되는 임의의 수의 프로세서들을 나타낸다.
일 구현예에서, 프로세서(105A)는 중앙 프로세싱 유닛(CPU)과 같은 범용 프로세서이다. 일 구현예에서, 프로세서(105N)는 고도로 병렬 아키텍처를 갖는 데이터 병렬 프로세서이다. 데이터 병렬 프로세서는 그래픽 프로세싱 유닛(GPU), 디지털 신호 프로세서(DSP), 필드 프로그램 가능 게이트 어레이(FPGA), 주문형 집적 회로(ASIC) 등을 포함한다. 일부 구현예들에서, 프로세서들(105 A-N)은 다수의 데이터 병렬 프로세서들을 포함한다.
메모리 제어기(들)(130)는 I/O 인터페이스들(120)에 결합된 I/O 디바이스들(도시되지 않음) 및 프로세서들(105 A-N )에 의해 액세스가능한 임의의 수 및 유형의 메모리 제어기들을 나타낸다. 메모리 제어기(들)(130)는 임의의 수 및 유형의 메모리 디바이스(들)(140)에 결합된다. 메모리 디바이스(들)(140)는 임의의 수 및 유형의 메모리 디바이스들을 나타낸다. 예를 들어, 메모리 디바이스(들)(140) 내의 메모리의 유형은 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM), NAND 플래시 메모리, NOR 플래시 메모리, 강유전체 랜덤 액세스 메모리(FeRAM), 또는 다른 것들을 포함한다.
I/O 인터페이스들(120)은 임의의 수 및 유형의 I/O 인터페이스들(예를 들어, 주변 컴포넌트 상호접속(PCI) 버스, PCI-확장(PCI-X), PCIE((PCI Express) 버스, 기가비트 이더넷(GBE) 버스, 범용 직렬 버스(USB))을 나타낸다. 다양한 유형의 주변 디바이스들(도시되지 않음)이 I/O 인터페이스(120)에 결합된다. 이러한 주변 디바이스들은 디스플레이, 키보드, 마우스, 프린터, 스캐너, 조이스틱 또는 다른 유형의 게임 제어기, 미디어 기록 디바이스, 외부 저장 디바이스들, 네트워크 인터페이스 카드 등을 포함한다(그러나 이에 제한되지 않음). 네트워크 인터페이스(135)는 네트워크를 통해 네트워크 메시지들을 수신하고 발송하기 위해 사용된다.
다양한 구현예들에서, 컴퓨팅 시스템(100)은 컴퓨터, 랩탑, 모바일 디바이스, 게임 콘솔, 서버, 스트리밍 디바이스, 웨어러블 디바이스, 또는 다양한 다른 유형들의 컴퓨팅 시스템들 또는 디바이스들 중 임의의 것이다. 컴퓨팅 시스템(100)의 컴포넌트들의 수는 구현예마다 달라짐에 유의한다. 예를 들어, 다른 구현예들에서, 도 1에 도시된 수보다 더 많거나 더 적은 각 컴포넌트가 있다. 또한, 다른 구현예들에서, 컴퓨팅 시스템(100)은 도 1에 도시되지 않은 다른 컴포넌트들을 포함한다는 것에 유의한다. 추가적으로, 다른 구현예들에서, 컴퓨팅 시스템(100)은 도 1에 도시된 것 이외의 다른 방식들로 구성된다.
이제 도 2를 참조하면, 프로세서 파이프라인(200)의 일 구현예의 블록도가 도시된다. 다양한 구현예들에서, 프로세서들(105A-N)(도 1의)은 프로세서 파이프라인(200)의 하나 이상의 인스턴스화들을(instantiations) 포함한다. 일 구현예에서, 프로세서 파이프라인(200)은 적어도 페치 유닛(210), 디코드 유닛(215), 스케줄러 큐 할당 유닛(220), 큐들(235A-N), 및 실행 유닛들(240A-N)을 포함한다. 큐들(235A-N)은 본 명세서에서 스케줄러 큐들로서 또한 지칭된다는 것에 유의한다. 프로세서 파이프라인(200)은 또한 도면을 모호하게 하는 것을 회피하기 위해 도시되지 않은 다른 컴포넌트들(예를 들어, 브랜치 예측 유닛, 명령어 캐시)을 포함한다는 것이 이해되어야 한다. 다른 구현예들에서, 프로세서 파이프라인(200)은 다른 적합한 방식들로 구성된다.
일 구현예에서, 페치 유닛(210)은 메모리 및/또는 명령어 캐시로부터 프로그램 스트림의 명령어들을 페치하고, 페치 유닛(210)은 페치된 명령어들을 디코드 유닛(215)으로 전달한다. 디코드 유닛(215)은 페치된 명령어들을 명령어 동작들(또는 짧은 시간 동안 ops)로 디코딩한다. ops는 또한 동작들, 마이크로-ops, 또는 uops로 지칭될 수 있다는 것에 유의한다. 일반적으로 명령어 동작은 실행 유닛들(240 A-N)에 포함된 하드웨어가 실행할 수 있는 동작이다. 다양한 구현예들에서, 각각의 명령어는, 실행될 때, 명령어 세트 아키텍처에 따라 그 명령어에 대해 정의된 동작들의 성능을 초래하는 하나 이상의 ops로 변환된다. 임의의 유형의 명령어 세트 아키텍처(ISA)가 프로세서 파이프라인(200)에 의해 이용되며, ISA의 유형은 구현예마다 다르다.
디코드 유닛(215)은 명령어들, 소스 피연산자 등의 유형을 식별하고, 각각의 디코딩된 op는 디코드 정보의 일부와 함께 명령어를 포함한다. 각각의 명령어가 단일 op로 변환되는 구현예들에서, 각각의 op는 대응하는 명령어 또는 그 부분(예를 들어, 명령어의 opcode 필드 또는 필드들)이다. 일부 구현예들에서, 디코드 유닛(215)은 명령어들에 대한 ops를 생성하기 위한 회로부 및/또는 마이크로코드의 임의의 조합을 포함한다. 예를 들어, 일 구현예에서, 비교적 간단한 op 생성(예를 들어, 명령어당 하나 또는 두 개의 ops)는 하드웨어에서 핸들링되는 반면, 보다 광범위한 op 생성(예를 들어, 명령어용 3개 이상의 ops)는 마이크로코드에서 핸들링된다.
디코드 유닛(215)으로부터의 ops는 스케줄러 큐 할당 유닛(220)에 디스패치 패킷으로 제공된다. 스케줄러 큐 할당 유닛(220)은 스케줄러 큐(235A-N)에 ops를 할당하는 방법을 결정한다. 본 명세서에서 사용된 바와 같이, "디스패치 패킷"은 디코드 유닛(215)에 의해 단일 클록 사이클에서 디코딩되는 OPS의 그룹으로서 정의된다. OPS가 스케줄러 큐 할당 유닛(220)으로부터 스케줄러 큐들(235A-N)로 포워딩될 때, OPS은 파이프라인(200)의 순차(in-order) 부분으로부터 파이프라인(200)의 비순차(out-of-order) 부분으로 전환(transitioned)되었다. ops의 안정적 스트림을 파이프라인(200)의 비순차 부분에 제공하는 것은 프로세서에 의해 허용가능한 성능 레벨이 유지되는 것을 보장하는 것을 돕는다.
정상 비-버스트 모드(non-burst mode)에서, 스케줄러 큐 할당 유닛(220)은 단일 클록 사이클에서 스케줄러 큐들(235A-N)에 디스패치될 수 있는 클래스당 ops의 수에 대한 제한을 강제한다. 그러나, 특정 조건들이 충족되는 경우, 스케줄러 큐 할당 유닛(220)은 주어진 ops 클래스에 대한 허용 가능한 수보다 많은 것이 수신되는 경우, 사이클들의 작은 윈도우에 대해 이러한 제한이 초과되도록 허용한다. 이는 실행 유닛들(240A-N)이 백그라운드에서 버스트에 대해 여전히 작업중인 동안 파이프라인(200)의 순차 부분이 다른 ops 클래스로 신속하게 이동하도록 함으로써 프로세서 성능을 향상시키는 것을 도울 수 있다.
일 구현예에서, 스케줄러 큐 할당 유닛(220)은 카운터들(230-232)에 결합된 제어 로직(225)을 포함한다. 클래스별 카운터들(230)은 디코드 유닛(215)으로부터 스케줄러 큐 할당 유닛(220)으로 포워딩된 디스패치 패킷들에 포함된 ops의 다른 수들을 카운팅하기 위한 임의의 수의 카운터들을 나타낸다. 버스트 모드 카운터(232)는 스케줄러 큐 할당 유닛(220)이 버스트 모드에 있었던 사이클들의 수를 트래킹한다. 일 구현예에서, 각각의 다른 ops 클래스에 대한 별도 버스트 모드 카운터가 있다. 일 구현예에서, ops의 오직 하나의 클래스만이 임의의 주어진 사이클 동안 버스트 모드에 있도록 허용된다. 대안적으로, 또 다른 구현예에서, 2개의 별도 ops 클래스는 단일 사이클에서 버스트 모드에 있도록 허용된다. 버스트 모드 카운터(232)가 임계치에 도달할 때, 스케줄러 큐 할당 유닛(220)은 버스트 동안 스케줄러 큐들에 균등하게 OPS를 분배하는 것의 어려움으로 인해 버스트 모드로 들어가는 것이 방지된다. 이렇게 하면 스케줄러 큐의 상대적 점유율이 단일 ops 클래스에 대해 적절하게 균형을 유지하도록 한다.
일 구현예에서, 스케줄러 큐 할당 유닛(220)은 실행 처리량이 프로세서 파이프라인(200)에 대해 최대화되도록 디스패치 패킷의 ops에 대한 할당 순열을 선택하려고 시도한다. 스케줄러 큐 할당 유닛(220)은 또한 ops가 특정 유형의 op를 실제로 실행할 수 있는 실행 유닛(240A-N)에 결합된 큐(235A-N)에 할당되도록 할당 순열을 선택한다. 프로세서 파이프라인(200)에 도시된 바와 같이, 각각의 큐(235A-N)는 대응하는 실행 유닛(240A-N)에 결합된다. 그러나, 다른 구현예들에서, 하나 이상의 큐들(235A-N)은 다수의 실행 유닛들(240A-N)에 결합된다.
디스패치 패킷을 수신한 후, 스케줄러 큐 할당 유닛(220)은 주어진 클록 사이클에서 큐(235A-N)에 할당할 ops를 선택한다. 종속성들이 해결되고 ops가 실행할 준비가 되면, 피커들(도시되지 않음)은 실행 유닛들(240A-N) 상에서 실행할 큐들(235A-N)로부터 ops를 선택할 것이다. 일 구현예에서, 개별 실행 유닛들(240A-N)은 전형적인 프로그램 시퀀스에서 접한(encountered) 다른 유형의 ops의 총 수의 서브세트만을 실행할 수 있다. 따라서, 스케줄러 큐 할당 유닛(220)은 적절한 큐들(235A-N)에 ops를 할당하여, 이들 ops가 이들 특정 유형들의 ops을 실행할 수 있는 실행 유닛(240A-N)에 의해 실행될 것이다.
이제 도 3을 참조하면, 프로세서 파이프라인(300)의 일부의 일 구현예의 블록도가 도시된다. 일 구현예에서, 프로세서 파이프라인(300)의 일부는 (도 1의) 프로세서들(105A-N) 중 하나 이상 내에 포함된다. 스케줄러 큐 할당 유닛(302)은 디코드 유닛(도시되지 않음)으로부터 디스패치 패킷들을 수신하고, 스케줄러 큐 할당 유닛(302)은 디스패치 패킷들로부터 큐들(305 A-N 및 310A-N)로 ops를 디스패치하는 방법을 결정한다. 큐(305 A-N 및 310A-N)는 임의의 수의 다른 세트의 스케줄 큐를 나타낸다. 구현예에 따라, 프로세서는 임의의 수의 다른 op 유형들 (예를 들어, ALU ops, 어드레스 생성 ops, 부동 소수점 ops, 고정 소수점 ops, 브랜치 ops, 곱하기 ops, 나누기 ops)을 프로세싱한다. 스케줄러 큐들(305 A-N 및 310A-N)의 각각의 세트는 이들이 실행을 위한 ops를 공급하는 실행 유닛들(335A-N, 340A-N, 345A-N, 및 350A-N)의 능력들에 기초하여 이들 다른 op 유형들의 일부 서브세트를 핸들링한다.
일 구현예에서, 각각의 큐(305 A-N)는 제1 유형의 ops를 저장하는 반면, 각각의 큐(310A-N)는 제2 유형의 ops를 저장한다. 예를 들어, 일 구현예에서, 스케줄러 큐 할당 유닛(302)은 ALU ops를 큐들(305A-N)에 할당하고, 스케줄러 큐 할당 유닛(302)은 어드레스 생성 ops를 큐들(310A-N)에 할당하는 등등이다. 다른 구현예들에서, 스케줄러 큐 할당 유닛(302)은 다른 유형들의 ops를 대응하는 큐들에 할당한다. 각각의 큐(305 A-N)는 대응하는 실행 유닛(335A-N 또는 340A-N) 상에서 실행될 ops를 선택하는 임의의 수의 피커(315A-N 및 320A-N)를 갖는다. 유사하게, 각각의 큐(310A-N)는 대응하는 실행 유닛(345A-N 또는 350A-N) 상에서 실행될 ops를 선택하는 임의의 수의 피커(325A-N 및 330A-N)를 갖는다. 일 구현예에서, 큐(305A)에 저장될 수 있는 각각의 다른 유형의 op에 대한 큐(305A)에 대한 별도 피커(315A-N)가 있다. 각각의 다른 유형의 op는 다른 유형의 실행 유닛 상에서 실행될 것이고, 실행 유닛(335A-N)은 다른 유형의 ops를 실행하는 임의의 수의 다른 실행 유닛을 나타낸다. 일 구현예에서, 일부 실행 유닛들은 하나 초과의 유형의 op를 실행할 수 있다는 점에 유의한다.
다른 큐의 경우, 각각의 피커는 피커에 결합된 실행 유닛에서 실행될 ops를 큐로부터 선택한다. 예를 들어, 피커(320A-N)는 실행 유닛(340A-N) 상에서 실행될 큐(305N)로부터의 ops를 각각 선택하고, 피커(325 A-N)는 각각 실행 유닛(345A-N) 상에서 실행될 큐(310A)로부터의 ops를 각각 선택하고, 피커(330A-N)는 실행 유닛(350A-N) 상에서 실행될 큐(310N)로부터의 ops를 각각 선택한다. 일 구현예에서, 프로세서 파이프라인에 의해 지원되는 각각의 다른 유형의 op에 대해 (피커를 통해) 각각의 큐에 결합된 다른 실행 유닛이 있다. 그러나, 일부 구현예들에서, 큐들 중 일부는 프로세서 파이프라인에 의해 실행되고 있는 모든 다른 유형들의 ops의 서브세트만을 저장한다. 예를 들어, 프로세서가 2가지 유형의 ops(ALU 및 어드레스 생성 ops)을 실행하는 구현예에서, 일부 큐는 ALU ops만을 저장하고 다른 큐는 어드레스 생성 ops만을 저장한다
다른 op 유형들에 대한 스케줄러 큐들 및 실행 유닛들의 수는 구현예마다 다르다는 것을 이해해야 한다. 본 개시 전반에 걸쳐 설명된 예들은 구현예들의 비제한적인 예들을 예시하기 위한 것이다. 다른 구현예들에서, 다른 수의 스케줄러 큐들, 실행 유닛들, 및 다른 관련 구조들을 이용하는 프로세서들이 가능하고 고려된다.
이제 도 4를 참조하면, 스케줄러 큐 할당 버스트 모드에 들어갈 때를 결정하기 위한 방법(400)의 일 구현예가 도시된다. 논의를 위해, 이 구현예에서의 단계들 및 도 5-7의 단계들이 순차적인 순서로 도시된다. 그러나, 설명된 방법들의 다양한 구현예들에서, 설명된 엘리먼트들 중 하나 이상은 도시된 것과 다른 순서로 동시에 수행되거나, 또는 완전히 생략된다는 것에 유의한다. 다른 추가적인 엘리먼트들이 또한 원하는 대로 수행된다. 본 명세서에 설명된 다양한 시스템들 또는 장치들 중 임의의 것은 방법(400)을 구현하도록 구성된다.
스케줄러 큐 할당 유닛(예를 들어, 도 2의 스케줄러 큐 할당 유닛(220))은 디코드 유닛에 의해 생성된 각각의 디스패치 패킷 내의 클래스당 ops의 수를 트래킹한다(블록 405). 일 구현예에서, 스케줄러 큐 할당 유닛은 각각의 디스패치 패킷 내의 클래스당 ops의 수를 트래킹하기 위해 클래스당 카운터를 사용한다. 다음으로, 스케줄러 큐 할당 유닛은 디스패치 패킷 내의 임의의 클래스의 ops의 수가 특정 클래스에 대한 최대 허용 수보다 큰지를 결정한다(조건부 블록(410)). 일 구현예에서, 특정 클래스에 대한 최대 허용 수는 ops의 특정 클래스를 실행할 수 있는 실행 유닛들의 수와 동일하다. ops의 다른 클래스는 다른 최대 허용 수를 가질 수 있다는 것에 유의한다. 예를 들어, 하나의 시나리오에서, ALU ops는 디스패치 패킷당 4개의 ops의 최대 허용 수를 갖고, AGU ops는 디스패치 패킷당 3개의 ops의 최대 허용 수를 갖고, 부동 소수점 ops는 디스패치 패킷당 2개의 ops의 최대 허용 수를 갖는, 등등이다.
디스패치 패킷 내의 각 클래스의 ops의 수가 특정 클래스에 대한 최대 허용 수보다 작거나 같으면(조건부 블록(410), "예" 레그), 스케줄러 큐 할당 유닛은 일반적인 방식으로 디스패치 패킷 내의 ops를 프로세싱하고 버스트 모드 카운터(예를 들어, 도 2의 버스트 모드 카운터(232))를 감소시킨다(블록(415)). 버스트 모드 카운터가 0과 동일하면, 버스트 모드 카운터는 블록(415)에서 0으로 유지된다. 블록(415) 후에, 방법(400)은 다음 디스패치 패킷에 대해 블록(405)으로 돌아간다.
디스패치 패킷 내의 임의의 클래스의 ops의 수가 특정 클래스에 대한 최대 허용 수보다 크면(조건부 블록(410), "아니오" 레그), 스케줄러 큐 할당 유닛은 버스트 모드에 들어가기 위한 하나 이상의 조건이 충족되는지 여부를 결정한다(조건부 블록(420)). 일 구현예에서, 버스트 모드에 들어가기 위한 제1 조건은, 점유 임계치와 작거나 동일한 대응하는 스케줄러 큐들의 현재 점유량이다. 일 구현예에서, 스케줄러 큐 할당 유닛은 현재 디스패치 패킷 내의 최대 허용 가능한 ops 수보다 큰 클래스의 ops를 저장하는 스케줄러 큐의 점유를 체크한다. 다른 구현예에서, 스케줄러 큐 할당 유닛은 프로세서 파이프라인 내의 모든 스케줄러 큐의 점유를 체크한다. 일 구현예에서, 버스트 모드에 들어가기 위한 제 2 조건은 다양한 스케줄러 큐 및 피커 제약들에 기초하여 특정 클래스에 대한 최대 허용 수 ops보다 큰 디스패칭을 위해 유효한 할당 순열이 있는지를 체크하는 것이다. 다른 구현예들에서, 버스트 모드에 들어갈지 여부를 결정하기 위해 다른 조건들이 체크될 수 있다.
버스트 모드로 들어가기 위한 하나 이상의 조건이 충족되지 않으면(조건부 블록(420), "아니오" 레그), 스케줄러 큐 할당 유닛은 일반적인 방식으로 디스패치 패킷 내의 ops를 프로세싱하고 버스트 모드 카운터를 감소시킨다(블록(415)). 그렇지 않고, 버스트 모드에 들어가기 위한 하나 이상의 조건이 충족되면(조건부 블록(420), "예" 레그), 스케줄러 큐 할당 유닛은 버스트 모드 윈도우가 대응하는 ops 클래스에 대해 초과되었는지 여부를 결정한다(조건부 블록(425)). 일 구현예에서, 스케줄러 큐 할당 유닛은 버스트 모드 카운터를 체크하고 버스트 모드 카운터를 버스트 모드 윈도우 임계치와 비교함으로써 버스트 모드 윈도우가 초과되었는지 여부를 결정한다.
버스트 모드 윈도우가 ops의 대응하는 클래스에 대해 초과되었다면(조건부 블록(425), "예" 레그), 스케줄러 큐 할당 유닛은 일반적인 방식으로 디스패치 패킷에서 ops를 프로세싱하고 버스트 모드 카운터를 감소시킨다(블록(415)). 그렇지 않고, 버스트 모드 윈도우가 주어진 ops의 클래스에 대해 초과되지 않았다면(조건부 블록(425), "아니오" 레그), 스케줄러 큐 할당 유닛은 대응하는 ops의 클래스에 대한 ops의 임계 수 보다 많은 것을 스케줄러 큐들에 디스패치한다(블록(430)). 또한, 스케줄러 큐 할당 유닛은 버스트 모드 카운터를 증가시킨다(블록 435). 블록(435) 후에, 방법(400)은 블록(405)으로 돌아간다.
이제 도 5를 참조하면, 버스트 모드로 들어가는 스케줄러 큐 할당 유닛에 대한 방법(500)의 일 구현예가 도시된다. 스케줄러 큐 할당 유닛(예를 들어, 도 2의 스케줄러 큐 할당 유닛(220))은 디스패치 패킷을 수신하고, 디스패치 패킷 내의 주어진 ops 클래스의 ops의 임계 수보다 많은 것을 검출한다(블록 505). 다음으로, 스케줄러 큐 할당 유닛은 버스트 모드로 들어가기 위한 조건들이 충족되는지를 판단한다(조건 블록(510)). 일 구현예에서, 버스트 모드에 들어가기 위한 조건들은 제1 임계치 미만인 스케줄러 큐 점유 및 제2 임계치 미만인 버스트 모드 카운터를 포함한다. 다른 구현예들에서, 버스트 모드에 들어가기 위한 다른 조건들이 채용될 수 있다.
버스트 모드에 들어가기 위한 조건들이 충족되면(조건부 블록(510), "예" 레그), 주어진 클래스의 ops의 임계 수보다 많은 것이 단일 사이클에서 스케줄러 큐들로 디스패치된다(블록(515)). 그렇지 않고, 버스트 모드에 들어가기 위한 조건들이 충족되지 않으면(조건부 블록(510), "아니오" 레그), 주어진 클래스의 ops 임계 수의 것만이 제1 사이클에서 스케줄러 큐들로 디스패치된다(블록(520)). 일부 경우들에서, 스케줄러 큐 할당 유닛은 제1 사이클에서 스케줄러 큐들에 주어진 클래스의 ops의 임계 수보다 적은 것을 디스패치하도록 결정할 수 있다. 다음으로, 주어진 클래스의 나머지 ops는 제2 사이클에서 스케줄러 큐들로 디스패치된다(블록 525). 후속하는 디스패치 패킷으로부터 주어진 ops 클래스에 대한 하나 이상의 ops가 제 2 사이클에서 이전의 디스패치 패킷으로부터의 나머지 ops와 함께 디스패치될 수 있다는 것에 유의한다. 블록들(515 및 525) 후에, 방법(500)은 종료된다.
이제 도 6을 참조하면, 스케줄러 큐 할당 버스트 모드로 들어갈지 여부를 결정하기 위한 방법(600)의 일 구현예가 도시된다. 제어 로직은 주어진 ops 클래스에 대한 스케줄러 큐 할당 버스트 모드로 들어가기 위한 요청을 검출한다(블록 605). 요청을 검출하는 것에 응답하여, 제어 로직은 주어진 ops 클래스에 대한 버스트 모드 카운터를 체크한다(블록 610). 버스트 모드 카운터가 임계치(조건부 블록(615), "아니오" 레그) 보다 작거나 동일하면, 제어 로직은 스케줄러 큐 할당 유닛(예를 들어, 도 2의 스케줄러 큐 할당 유닛(220))이 버스트 모드로 들어가도록 허용한다(블록(620)). 그렇지 않고, 버스트 모드 카운터가 임계치보다 크면(조건부 블록(615), "예" 레그), 제어 로직은 스케줄러 큐 할당 유닛이 버스트 모드에 들어가는 것을 방지한다(블록(625)). 블록들(620 및 625) 후에, 방법(600)은 종료된다. 방법(600)은 또한 스케줄러 큐 할당 버스트 모드에 들어가기 위해 다른 조건들(예를 들어, 스케줄러 큐 점유)이 만족되는지 여부를 체크하는 다른 방법들과 병렬로 수행될 수 있음을 유의한다.
이제 도 7을 참조하면, 버스트 모드 윈도우를 트래킹하기 위한 방법(700)의 일 구현예가 도시된다. 스케줄러 큐 할당 유닛(예를 들어, 도 2의 스케줄러 큐 할당 유닛(220))은 디스패치 패킷을 수신한다(블록 705). 스케줄러 큐 할당 유닛이 디스패치 패킷 내의 임의의 주어진 ops의 클래스의 ops의 임계 수 보다 많은 것을 검출하면(조건부 블록(710), "예" 레그), 스케줄러 큐 할당 유닛은 입력 비트를 버스트 모드 시프트 카운터에서 "1"로 설정하고 카운터의 비트를 한 비트만큼 전방으로 시프트한다(블록(715)). 스케줄러 큐 할당 유닛이 디스패치 패킷 내의 임의의 주어진 ops의 클래스의 ops의 임계 수 보다 많은 것을 검출하지 않으면(조건부 블록(710), "아니오" 레그), 스케줄러 큐 할당 유닛은 입력 비트를 버스트 모드 시프트 카운터에서 "0"으로 설정하고 카운터의 비트를 한 비트만큼 전방으로 시프트한다(블록(720)). 또한, 스케줄러 큐 할당 유닛은 디스패치 패킷의 ops를 디스패치하기 위해 정상 모드를 사용한다(블록 725). 블록(725) 후에, 방법(700)은 종료된다.
블록(715) 후에, 버스트 모드 시프트 카운터 내의 1의 수가 버스트 모드 윈도우 임계치(조건부 블록(730), "아니오" 레그) 보다 작거나 동일하면, 스케줄러 큐 할당 유닛은 버스트 모드에 들어가기 위한 하나 이상의 다른 조건들을 체크한다(조건부 블록(735)). 그렇지 않고, 버스트 모드 시프트 카운터 내의 1의 수가 버스트 모드 윈도우 임계치보다 크면(조건부 블록(730), "예" 레그), 스케줄러 큐 할당 유닛은 디스패치 패킷의 ops를 디스패치하기 위해 정상 모드를 사용한다(블록(725)). 버스트 모드로 들어가기 위한 하나 이상의 조건이 충족되면(조건부 블록(735), "예" 레그), 스케줄러 큐 할당 유닛은 디스패치 패킷의 ops를 디스패치하기 위해 버스트 모드를 사용한다(블록(740)). 그렇지 않고, 버스트 모드로 들어가기 위한 하나 이상의 조건이 충족되지 않으면(조건부 블록(735), "아니오" 레그), 스케줄러 큐 할당 유닛은 디스패치 패킷의 ops를 디스패치하기 위해 정상 모드를 사용한다(블록(725)). 블록(740) 후에, 방법(700)은 종료된다.
일 구현예에서, 버스트 모드는 마지막 "N" 사이클의 이동 윈도우에서 트래킹되고, 여기서 N은 양의 정수이다. 이 구현예에서, 버스트 모드 시프트 카운터는 "N" 비트 시프트 카운터이다. 일 구현예에서, 카운터는 매 사이클마다 비트만큼 왼쪽으로 시프트하고, 가장 오른쪽의 새로운 비트는 블록(715)에서 "1"로 설정된다. 다른 구현예예에서, 카운터는 매 사이클마다 비트만큼 오른쪽으로 시프트하고, 가장 왼쪽의 새로운 비트는 블록(715)에서 "1"로 설정된다. 다른 구현예에서, 새로운 비트는 블록(715)에서 "1"이 아닌 "0"으로 설정될 수 있고, 새로운 비트는 블록(720)에서 "0"이 아닌 "1"로 설정될 수 있다는 것을 이해해야 한다. 이 구현예에서, 스케줄러 큐 할당 유닛은 카운터 내의 0의 수를 카운팅하여 버스트 모드 윈도우 임계치가 초과되었는지 여부를 결정한다. 일반적으로, 스케줄러 큐 할당 유닛은 카운터 내의 유효 비트의 수를 카운팅하여 버스트 모드 윈도우 임계치가 초과되었는지 여부를 결정한다. 버스트 모드 시프트 카운터를 구현하기 위한 다른 기술들이 가능하고 고려된다.
다양한 구현예에서, 소프트웨어 애플리케이션의 프로그램 명령어는 본 명세서에 설명된 방법 및/또는 메커니즘을 구현하기 위해 사용된다. 예를 들어, 범용 또는 특수 목적 프로세서에 의해 실행가능한 프로그램 명령어들이 고려된다. 다양한 구현예들에서, 이러한 프로그램 명령어들은 다른 구현예들에서 하이 레벨 프로그래밍 언어로 표현되고, 프로그램 명령어들은 하이 레벨 프로그래밍 언어로부터 이진, 중간, 또는 다른 형태로 컴파일된다. 대안적으로, 하드웨어의 동작 또는 설계를 설명하는 프로그램 명령어들이 기록된다. 이러한 프로그램 명령어는 C와 같은 하이-레벨 프로그래밍 언어로 표현된다. 대안적으로, Verilog와 같은 하드웨어 설계 언어(HDL)가 사용된다. 다양한 구현예들에서, 프로그램 명령어들은 다양한 비-일시적 컴퓨터 판독가능 저장 매체 중 임의의 매체 상에 저장된다. 저장 매체는 프로그램 실행을 위해 컴퓨팅 시스템에 프로그램 명령어들을 제공하기 위해 사용하는 동안 컴퓨팅 시스템에 의해 액세스가능하다. 일반적으로 말하면, 이러한 컴퓨팅 시스템은 적어도 하나 이상의 메모리 및 프로그램 명령어를 실행하도록 구성된 하나 이상의 프로세서를 포함한다.
위에서 설명된 구현예들은 구현예들의 비제한적인 예일 뿐이라는 것이 강조되어야 한다. 상기 개시 내용이 충분히 이해되면 수많은 변형 및 수정들이 당업자에게 명백해질 것이다. 다음 청구범위는 그러한 모든 변형 및 수정을 포함하는 것으로 해석되어야 한다.

Claims (20)

  1. 시스템으로서,
    회로를 포함하는 제어 로직을 포함하고, 상기 제어 로직은,
    디코드 유닛으로부터 복수의 동작을 포함하는 디스패치 패킷을 수신하고;
    버스트 모드가 표시되는지 여부를 결정하고, 상기 버스트 모드에서, 상기 디스패치 패킷은 대응하는 임계치를 초과하는 단일 클래스의 제1 수의 동작을 포함하며; 및
    상기 대응하는 임계치보다 큰 상기 단일 클래스의 제2 수의 동작을 복수의 스케줄러 큐에 디스패치하도록 구성되되,
    상기 단일 클래스의 제2 수의 동작을 복수의 스케줄러 큐에 디스패치하는 것은,
    상기 제1 수의 동작이 상기 대응하는 임계치를 초과하고; 및
    상기 단일 클래스의 동작에 대해 버스트 모드 윈도우가 초과되지 않았다는 결정에 응답하여 수행되며,
    상기 버스트 모드 윈도우는 버스트 모드가 허용되는 시간 기간을 나타내는 것인, 시스템.
  2. 제1항에 있어서,
    상기 대응하는 임계치는 상기 단일 클래스의 동작을 실행할 수 있는 실행 유닛들의 수와 동일한, 시스템.
  3. 제1항에 있어서,
    상기 회로는, 상기 대응하는 임계치를 초과하는 상기 단일 클래스의 상기 제 1 수의 동작을 검출하는 것에 응답하여 유효 비트를 버스트 모드 시프트 카운터로 시프트하도록 구성되는, 시스템.
  4. 제3항에 있어서,
    상기 버스트 모드 윈도우가 상기 단일 클래스의 동작에 대해 초과되지 않았다고 결정하는 것은 상기 버스트 모드 시프트 카운터 내의 유효 비트들의 수가 버스트 모드 윈도우 임계치보다 작다고 결정하는 것을 포함하는, 시스템.
  5. 제3항에 있어서,
    상기 회로는, 상기 디스패치 패킷이 임의의 단일 클래스의 동작에 대하여 상기 대응하는 임계치 수의 동작보다 많은 것을 포함하지 않는다고 결정하는 것에 응답하여 상기 버스트 모드 시프트 카운터로 비유효 비트를 시프트하도록 구성되는, 시스템.
  6. 제1항에 있어서,
    상기 회로는, 스케줄러 큐 점유가 점유 임계치보다 작다고 결정하는 것에 응답하여 그리고 상기 버스트 모드 윈도우가 상기 단일 클래스의 동작에 대해 초과되지 않았다고 결정하는 것에 응답하여, 상기 단일 클래스의 동작에 대한 상기 대응하는 임계치보다 큰 상기 제2 수의 동작을 상기 복수의 스케줄러 큐들에 디스패치하도록 구성되는, 시스템.
  7. 제1항에 있어서,
    제1 동작 클래스는 제1 임계치를 갖고;
    제2 동작 클래스는 제2 임계치를 갖고; 및
    상기 제2 임계치는 상기 제1 임계치와 다른, 시스템.
  8. 방법에 있어서,
    스케줄러 큐 할당 유닛에 의해, 주어진 사이클에서 디코드 유닛으로부터 복수의 동작을 포함하는 디스패치 패킷을 수신하는 단계;
    버스트 모드가 표시되는지 여부를 결정하는 단계, 상기 버스트 모드에서, 상기 디스패치 패킷은 대응하는 임계치를 초과하는 단일 클래스의 제1 수의 동작을 포함하며; 및
    상기 대응하는 임계치보다 큰 상기 단일 클래스의 제2 수의 동작을 복수의 스케줄러 큐에 디스패치하는 단계를 포함하고,
    상기 단일 클래스의 제2 수의 동작을 복수의 스케줄러 큐에 디스패치하는 단계는,
    상기 제1 수의 동작이 상기 대응하는 임계치를 초과하고; 및
    상기 단일 클래스의 동작에 대해 버스트 모드 윈도우가 초과되지 않았다는 결정에 응답하여 수행되며,
    상기 버스트 모드 윈도우는 버스트 모드가 허용되는 시간 기간을 나타내는 것인, 방법.
  9. 제8항에 있어서,
    상기 대응하는 임계치는 상기 단일 클래스의 동작을 실행할 수 있는 실행 유닛들의 수와 동일한, 방법.
  10. 제8항에 있어서,
    상기 대응하는 임계치를 초과하는 상기 단일 클래스의 상기 제 1 수의 동작을 검출하는 것에 응답하여 유효 비트를 버스트 모드 시프트 카운터로 시프트하는 단계를 더 포함하는, 방법.
  11. 제10항에 있어서,
    버스트 모드 윈도우가 상기 단일 클래스의 동작에 대해 초과되지 않았다고 결정하는 것은 상기 버스트 모드 시프트 카운터 내의 유효 비트들의 수가 버스트 모드 윈도우 임계치보다 작다고 결정하는 것을 포함하는, 방법.
  12. 제10항에 있어서,
    상기 디스패치 패킷이 임의의 단일 클래스의 동작에 대한 상기 대응하는 임계치 수의 동작 보다 많은 것을 포함하지 않는다고 결정하는 것에 응답하여 상기 버스트 모드 시프트 카운터로 비유효 비트를 시프트시키는 단계를 더 포함하는, 방법.
  13. 제8항에 있어서,
    스케줄러 큐 점유가 점유 임계치보다 작다고 결정하는 것에 응답하여 그리고 상기 버스트 모드 윈도우가 상기 단일 클래스의 동작에 대해 초과되지 않았다고 결정하는 것에 응답하여, 상기 단일 클래스의 동작에 대한 상기 대응하는 임계치보다 큰 상기 제 2 수의 동작을 디스패치하는 단계를 더 포함하는, 방법.
  14. 제8항에 있어서,
    제1 동작 클래스는 제1 임계치를 갖고;
    제2 동작 클래스는 제2 임계치를 갖고; 및
    상기 제2 임계치는 상기 제1 임계치와 다른, 방법.
  15. 장치로서,
    메모리; 및
    상기 메모리에 결합된 프로세서를 포함하고;
    상기 프로세서는,
    디코드 유닛에 의해, 주어진 사이클에서 복수의 동작을 포함하는 디스패치 패킷을 생성하고;
    버스트 모드가 표시되는지 여부를 결정하고, 상기 버스트 모드에서, 상기 디스패치 패킷은 대응하는 임계치를 초과하는 단일 클래스의 제1 수의 동작을 포함하며; 및
    상기 대응하는 임계치보다 큰 상기 단일 클래스의 제2 수의 동작을 복수의 스케줄러 큐에 디스패치하도록 구성되되,
    상기 단일 클래스의 제2 수의 동작을 복수의 스케줄러 큐에 디스패치하는 것은,
    상기 제1 수의 동작이 상기 대응하는 임계치를 초과하고; 및
    상기 단일 클래스의 동작에 대해 버스트 모드 윈도우가 초과되지 않았다는 결정에 응답하여 수행되며,
    상기 버스트 모드 윈도우는 버스트 모드가 허용되는 시간 기간을 나타내는 것인, 장치.
  16. 제15항에 있어서,
    상기 대응하는 임계치는 상기 단일 클래스의 동작을 실행할 수 있는 실행 유닛들의 수와 동일한, 장치.
  17. 제15항에 있어서,
    상기 프로세서는, 상기 대응하는 임계치를 초과하는 상기 단일 클래스의 상기 제 1 수의 동작을 검출하는 것에 응답하여 유효 비트를 버스트 모드 시프트 카운터로 시프트하도록 더 구성되는, 장치.
  18. 제17항에 있어서,
    버스트 모드 윈도우가 상기 단일 클래스의 동작에 대해 초과되지 않았다고 결정하는 것은 상기 버스트 모드 시프트 카운터 내의 유효 비트들의 수가 버스트 모드 윈도우 임계치보다 작다고 결정하는 것을 포함하는, 장치.
  19. 제17항에 있어서,
    상기 프로세서는, 상기 디스패치 패킷이 임의의 단일 클래스의 동작에 대해 상기 대응하는 임계치 수의 동작 보다 많은 것을 포함하지 않는다고 결정하는 것에 응답하여 상기 버스트 모드 시프트 카운터로 비유효 비트를 시프트하도록 더 구성되는, 장치.
  20. 제15항에 있어서,
    상기 프로세서는, 스케줄러 큐 점유가 점유 임계치보다 작다고 결정하는 것에 응답하여 그리고 상기 버스트 모드 윈도우가 상기 단일 클래스의 동작에 대해 초과되지 않았다고 결정하는 것에 응답하여, 상기 단일 클래스의 동작에 대한 상기 대응하는 임계치보다 큰 상기 제2 수의 동작을 상기 복수의 스케줄러 큐들에 디스패치하도록 더 구성되는, 장치.
KR1020227020409A 2019-12-10 2020-12-08 스케줄러 큐 할당 버스트 모드 KR102591051B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/709,527 US11334384B2 (en) 2019-12-10 2019-12-10 Scheduler queue assignment burst mode
US16/709,527 2019-12-10
PCT/US2020/063765 WO2021118989A1 (en) 2019-12-10 2020-12-08 Scheduler queue assignment burst mode

Publications (2)

Publication Number Publication Date
KR20220108082A KR20220108082A (ko) 2022-08-02
KR102591051B1 true KR102591051B1 (ko) 2023-10-19

Family

ID=74003946

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227020409A KR102591051B1 (ko) 2019-12-10 2020-12-08 스케줄러 큐 할당 버스트 모드

Country Status (6)

Country Link
US (1) US11334384B2 (ko)
EP (1) EP4073638A1 (ko)
JP (1) JP7292515B2 (ko)
KR (1) KR102591051B1 (ko)
CN (1) CN114830083B (ko)
WO (1) WO2021118989A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11948000B2 (en) 2020-10-27 2024-04-02 Advanced Micro Devices, Inc. Gang scheduling for low-latency task synchronization
JP2023013799A (ja) * 2021-07-16 2023-01-26 富士通株式会社 演算処理装置及び演算処理方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019231904A1 (en) 2018-05-29 2019-12-05 Advanced Micro Devices, Inc. Scheduler queue assignment

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6246680B1 (en) 1997-06-30 2001-06-12 Sun Microsystems, Inc. Highly integrated multi-layer switch element architecture
EP1061439A1 (en) * 1999-06-15 2000-12-20 Hewlett-Packard Company Memory and instructions in computer architecture containing processor and coprocessor
US7406554B1 (en) * 2000-07-20 2008-07-29 Silicon Graphics, Inc. Queue circuit and method for memory arbitration employing same
JP4025493B2 (ja) * 2000-08-08 2007-12-19 富士通株式会社 適切な発行先に命令を発行する命令発行装置
US6519683B2 (en) * 2000-12-29 2003-02-11 Intel Corporation System and method for instruction cache re-ordering
GB2372847B (en) * 2001-02-19 2004-12-29 Imagination Tech Ltd Control of priority and instruction rates on a multithreaded processor
US6782461B2 (en) * 2002-02-25 2004-08-24 Intel Corporation Dynamically adjustable load-sharing circular queues
US20040151197A1 (en) * 2002-10-21 2004-08-05 Hui Ronald Chi-Chun Priority queue architecture for supporting per flow queuing and multiple ports
US7689793B1 (en) * 2003-05-05 2010-03-30 Marvell Israel (M.I.S.L.) Ltd. Buffer management architecture
US7047322B1 (en) * 2003-09-30 2006-05-16 Unisys Corporation System and method for performing conflict resolution and flow control in a multiprocessor system
US20050283772A1 (en) * 2004-06-22 2005-12-22 Kalyan Muthukumar Determination of loop unrolling factor for software loops
DE602004012563T2 (de) * 2004-10-11 2009-05-07 Texas Instruments Inc., Dallas Mehrfädiges DMA
US7770173B2 (en) * 2005-02-03 2010-08-03 International Business Machines Corporation System for dynamic processor enablement
US7768910B2 (en) * 2005-02-04 2010-08-03 Neidhardt Arnold L Calculations for admission control
US7483327B2 (en) * 2006-03-02 2009-01-27 Freescale Semiconductor, Inc. Apparatus and method for adjusting an operating parameter of an integrated circuit
US7539133B2 (en) * 2006-03-23 2009-05-26 Alcatel-Lucent Usa Inc. Method and apparatus for preventing congestion in load-balancing networks
US20080320274A1 (en) * 2007-06-19 2008-12-25 Raza Microelectronics, Inc. Age matrix for queue dispatch order
US7937568B2 (en) * 2007-07-11 2011-05-03 International Business Machines Corporation Adaptive execution cycle control method for enhanced instruction throughput
US7779237B2 (en) * 2007-07-11 2010-08-17 International Business Machines Corporation Adaptive execution frequency control method for enhanced instruction throughput
CN101572833B (zh) * 2008-04-28 2010-11-10 华为技术有限公司 无源光网络系统中发送上行突发数据的方法、装置及系统
US20100241760A1 (en) * 2009-03-18 2010-09-23 Microsoft Corporation Web Front-End Throttling
US8090892B2 (en) * 2009-06-12 2012-01-03 Freescale Semiconductor, Inc. Ordered queue and methods therefor
US9122487B2 (en) * 2009-06-23 2015-09-01 Oracle America, Inc. System and method for balancing instruction loads between multiple execution units using assignment history
US9286075B2 (en) * 2009-09-30 2016-03-15 Oracle America, Inc. Optimal deallocation of instructions from a unified pick queue
US8650426B2 (en) * 2009-12-16 2014-02-11 Qualcomm Incorporated System and method for controlling central processing unit power in a virtualized system
US8468318B2 (en) * 2010-09-15 2013-06-18 Pure Storage Inc. Scheduling of I/O writes in a storage environment
US20120144175A1 (en) * 2010-12-02 2012-06-07 Advanced Micro Devices, Inc. Method and apparatus for an enhanced speed unified scheduler utilizing optypes for compact logic
US9008113B2 (en) 2010-12-20 2015-04-14 Solarflare Communications, Inc. Mapped FIFO buffering
US9606800B1 (en) 2012-03-15 2017-03-28 Marvell International Ltd. Method and apparatus for sharing instruction scheduling resources among a plurality of execution threads in a multi-threaded processor architecture
US9397961B1 (en) * 2012-09-21 2016-07-19 Microsemi Storage Solutions (U.S.), Inc. Method for remapping of allocated memory in queue based switching elements
US9424045B2 (en) 2013-01-29 2016-08-23 Arm Limited Data processing apparatus and method for controlling use of an issue queue to represent an instruction suitable for execution by a wide operand execution unit
US9632825B2 (en) * 2013-03-15 2017-04-25 Intel Corporation Method and apparatus for efficient scheduling for asymmetrical execution units
US9471393B2 (en) * 2013-06-25 2016-10-18 Amazon Technologies, Inc. Burst-mode admission control using token buckets
US10764185B2 (en) * 2013-06-25 2020-09-01 Amazon Technologies, Inc. Token-based policies burst-mode operations
GB2510655B (en) * 2013-07-31 2015-02-25 Imagination Tech Ltd Prioritizing instructions based on type
US9378168B2 (en) * 2013-09-18 2016-06-28 International Business Machines Corporation Shared receive queue allocation for network on a chip communication
US9405345B2 (en) * 2013-09-27 2016-08-02 Intel Corporation Constraining processor operation based on power envelope information
US20160337257A1 (en) * 2015-05-15 2016-11-17 Qualcomm Incorporated Head-of-line blocking (holb) mitigation in communication devices
GB2540405B (en) * 2015-07-16 2018-04-11 Advanced Risc Mach Ltd Execution of micro-operations
US9927997B2 (en) * 2015-12-21 2018-03-27 Sandisk Technologies Llc Methods, systems, and computer readable media for automatically and selectively enabling burst mode operation in a storage device
US10178011B2 (en) * 2016-02-10 2019-01-08 Hewlett Packard Enterprise Development Lp Network traffic management via network switch QoS parameters analysis
US11563695B2 (en) * 2016-08-29 2023-01-24 Cisco Technology, Inc. Queue protection using a shared global memory reserve
PL3563235T3 (pl) * 2016-12-31 2023-03-13 Intel Corporation Systemy, sposoby i aparaty do obliczania heterogenicznego
US10884753B2 (en) * 2017-11-30 2021-01-05 International Business Machines Corporation Issue queue with dynamic shifting between ports
US10607623B2 (en) * 2018-01-12 2020-03-31 Ribbon Communications Operating Company, Inc. Methods and apparatus for supporting communication of content streams using efficient memory organization
US10601723B2 (en) * 2018-04-12 2020-03-24 Advanced Micro Devices, Inc. Bandwidth matched scheduler
CN110147293A (zh) * 2019-05-20 2019-08-20 江南大学 一种降低微处理器软错误易感性的方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019231904A1 (en) 2018-05-29 2019-12-05 Advanced Micro Devices, Inc. Scheduler queue assignment

Also Published As

Publication number Publication date
JP7292515B2 (ja) 2023-06-16
KR20220108082A (ko) 2022-08-02
EP4073638A1 (en) 2022-10-19
US20210173702A1 (en) 2021-06-10
WO2021118989A1 (en) 2021-06-17
CN114830083A (zh) 2022-07-29
US11334384B2 (en) 2022-05-17
CN114830083B (zh) 2024-09-10
JP2022554029A (ja) 2022-12-27

Similar Documents

Publication Publication Date Title
US11294678B2 (en) Scheduler queue assignment
US10620994B2 (en) Continuation analysis tasks for GPU task scheduling
US11635961B2 (en) Processor for avoiding reduced performance using instruction metadata to determine not to maintain a mapping of a logical register to a physical register in a first level register file
EP3371704A1 (en) Backward compatibility testing of software in a mode that disrupts timing
KR102591051B1 (ko) 스케줄러 큐 할당 버스트 모드
US20140122842A1 (en) Efficient usage of a register file mapper mapping structure
US10908987B1 (en) Handling memory errors in computing systems
US11467838B2 (en) Fastpath microcode sequencer
US10579428B2 (en) Data token management in distributed arbitration systems
KR20210013212A (ko) 다중-커널 웨이브프론트 스케줄러
US10162640B2 (en) Instruction for performing an overload check
US11403107B2 (en) Protection against timing-based security attacks by randomly adjusting reorder buffer capacity
US10007522B2 (en) System and method for selectively allocating entries at a branch target buffer
US12099867B2 (en) Multi-kernel wavefront scheduler
US10877552B1 (en) Dynamic power reduction through data transfer request limiting
US11507522B2 (en) Memory request priority assignment techniques for parallel processors
US20160020897A1 (en) Using thresholds to gate timing packet generation in a tracing system

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right