KR102288876B1 - 처리용 독립적 및 종속적 동작 스케줄링 - Google Patents

처리용 독립적 및 종속적 동작 스케줄링 Download PDF

Info

Publication number
KR102288876B1
KR102288876B1 KR1020197004040A KR20197004040A KR102288876B1 KR 102288876 B1 KR102288876 B1 KR 102288876B1 KR 1020197004040 A KR1020197004040 A KR 1020197004040A KR 20197004040 A KR20197004040 A KR 20197004040A KR 102288876 B1 KR102288876 B1 KR 102288876B1
Authority
KR
South Korea
Prior art keywords
action
execution
scheduler
scheduling
response
Prior art date
Application number
KR1020197004040A
Other languages
English (en)
Other versions
KR20190020344A (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 KR20190020344A publication Critical patent/KR20190020344A/ko
Application granted granted Critical
Publication of KR102288876B1 publication Critical patent/KR102288876B1/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
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • 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/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
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

프로세서(100)는 예를 들어, 실행 유닛(110)의 세트 또는 프로세서의 캐시에서 동작의 실행을 스케줄링하기 위한 동작 스케줄러(105)를 포함한다. 동작 스케줄러는 동작들의 세트를 추적 어레이(120)에 주기적으로 추가하고, 추적 세트 내 일 동작이 실행 완료되지 않은 다른 동작에 종속됨을 식별함에 응답하여, 상기 일 동작이 실행 스케줄링으로부터 차단될 때를 또한 식별한다. 프로세서는 추적 어레이 내 동작이 실행 차단될 때마다 조정되는, 그리고, 추적 어레이 내 동작이 실행될 때마다 재설정되는, 카운터(130)를 더 포함한다. 카운터의 값이 임계치(135)를 넘을 때, 동작 스케줄러는 실행 스케줄링을 위해 나머지 추적 동작들을 우선순위화한다.

Description

처리용 독립적 및 종속적 동작 스케줄링
본 발명은 처리용 독립적 및 종속적 동작 스케줄링에 관한 것이다.
처리(processing) 효율을 향상시키기 위해, 프로세서는 프로세서에서 실행되는 명령어의 프로그램 순서로부터 벗어난 방식으로 동작을 스케줄링할 수 있다. 예를 들어, 프로세서는 프로세서의 실행 단위에서 비순차적으로 작업을 편성할 수 있으며, 프로세서 캐시에서 비순차적으로 메모리 액세스 작업을 편성할 수 있다. 비순차적으로 작업을 예약하면 상대적으로 느린 작업이 실행 준비된 다른 작업의 실행을 지연시키는 것을 방지하여 처리 효율성을 향상시킬 수 있다. 그러나 하나의 연산이 다른 연산의 결과를 입력 값으로 사용하는 경우와 같이 특정 연산이 다른 연산에 종속될 때 비순차 실행이 오류를 유발할 수 있다. 이러한 오류를 방지하기 위해 프로세서는 스케줄러를 사용하여 실행 작업을 예약할 수 있다. 스케줄러는 조작 간의 종속성을 식별하고, 상위 조작 이전에 종속 조작이 실행 편성되지 않게 한다. 그러나, 종래의 스케줄러는 종종 종속 동작이 상대적으로 오랜 시간 동안 스케줄러에서 보류 상태로 유지되도록 하여 처리 효율을 감소시킨다.
본 개시물은 첨부 도면을 참조하여 당업자에게 보다 잘 이해될 수 있고, 그 많은 특징 및 이점이 명백해질 수 있다. 상이한 도면에서 동일한 참조 부호를 사용하는 것은 유사하거나 동일한 항목을 나타낸다.
도 1은 계류중인 동작을 추적하고 일부 실시예에 따라 계류중인 동작이 임계 횟수만큼 실행으로부터 차단되었을 때 추적된 동작의 스케줄링을 우선순위화하는 처리 시스템의 블록도이다.
도 2는 일부 실시예에 따라 차단된 동작의 임계 수를 초과하기 전과 후의 동작을 스케줄링하는 도 1의 처리 시스템의 일 예의 블록도이다.
도 3은 일부 실시예에 따라 임계 회수의 차단 동작들이 실행됨을 식별하는 도 1의 처리 시스템의 추적 어레이 및 카운터의 일 예의 블록도이다.
도 4는 일부 실시예에 따라 계류중인 동작이 임계 횟수만큼 실행으로부터 차단되었을 때 계류중인 동작의 스케줄링을 우선순위화하는 실행 동작을 스케줄링하는 방법을 나타내는 흐름도이다.
도 1 내지 도 4는 프로세서에서 계류중인 동작을 추적하고, 추적된 동작이 임계 횟수만큼 실행으로부터 차단되었을 때 실행을 위해 추적된 동작의 스케줄링을 우선순위화하는 기술을 도시한다. 프로세서는, 예를 들어, 실행 유닛들의 세트 또는 프로세서의 캐시에서 동작들의 실행을 스케줄링하기 위한 동작 스케줄러를 포함한다. 동작 스케줄러는 주기적으로 동작 세트들을 추적 어레이(tracking array)에 추가하고, 예를 들어 일 동작이 실행 완료되지 않은 다른 동작에 의존함을 식별함에 응답하여, 추적된 세트의 동작이 실행 스케줄링으로부터 차단될 때를 또한 식별한다. 프로세서는, 추적 어레이에서의 동작이 실행으로부터 차단될 때마다 조정되고 추적 어레이에서의 동작이 실행될 때마다 재설정되는, 카운터를 더 포함한다. 카운터 값이 임계 값을 초과하면 동작 스케줄러는, 가령, 추적 어레이에 없는 계류중인 작업이 실행 예약되지 않도록 하여, 실행 예약을 위한 나머지 추적 작업의 우선순위를 지정한다. 따라서 동작 스케줄러는 종속 작업이 무기한 실행에서 차단되지 않도록함으로써 처리 효율성을 촉진한다.
도 1은, 일부 실시예에 따라 스케줄링된 동작들을 추적하고 현재 계류중인 스케줄링된 동작들이 실행으로부터 차단된 횟수가 임계 값을 초과할 때 새로운 동작의 스케줄링을 일시적으로 중단하는, 처리 시스템(100)을 도시한다. 처리 시스템(100)은 일반적으로 전자 장치를 대신하여 작업을 수행하기 위해 컴퓨터 프로그램의 형태로 조직화된 일련의 동작을 실행하도록 구성된다. 따라서, 처리 시스템(100)은 데스크탑 또는 랩톱 컴퓨터, 서버, 스마트 폰, 태블릿, 게임 콘솔 등과 같은 다양한 전자 장치 중 임의의 것에 사용될 수 있다.
명령들의 실행을 용이하게 하기 위해, 처리 시스템(100)은 동작 스케줄러(105), 스케줄링된 동작 추적 어레이(120), 임계 값(135)을 갖는 카운터(130), 및 하나 이상의 실행 유닛(110)을 포함한다. 처리 시스템(100)은 하나 이상의 메모리 캐시 및 메인 메모리(도시되지 않음)를 더 포함할 수 있고, 각각은 일반적으로 데이터를 저장하도록 구성된 메모리 장치이고, 따라서 RAM(random access memory) 메모리 모듈, 비 휘발성 메모리 장치(예를 들어, 플래시 메모리) 등을 포함할 수 있다.
동작 스케줄러(105)는 명령어 파이프라인의 로드/스토어 유닛(load/store unt)으로부터 또는 명령어 파이프라인의 디스패치 스테이지(도시되지 않음)으로부터 일련의 프로그램 동작(102)들을 수신하도록 구성 및 연결된 디지털 및/또는 아날로그 회로를 포함하는 예컨대 메모리 제어기, I/O 제어기 등과 같은 모듈이다. 일부 실시예에서, 동작은 정수 유닛, 부동 소수점 유닛 등과 같은 실행 유닛의 세트에서 실행되도록 구성된 프로그램 연산이다. 다른 실시예에서, 동작은 프로세서의 캐시(도시되지 않음)에서 실행되도록 구성된 로드 동작 및 스토어 동작과 같은 메모리 액세스 동작이다.
일련의 프로그램 동작들(102) 내의 동작들 각각은 일련의 프로그램 동작들(102) 내의 다른 동작들과 독립적일 수 있고, 또는, 일련의 프로그램 동작들(102) 내의 하나 이상의 다른 동작들에 종속적일 수 있다. 독립적 동작은, 임의의 다른 계류중인 동작의 실행 완료를 기다리지 않고 하나 이상의 실행 유닛(110)에 의해 적절히 실행될 수 있는(즉, 예상된 결과를 얻을 수 있도록 실행될 수 있는) 동작이다. 대조적으로, 종속적 동작은 하나 이상의 다른 계류 동작들이 실행을 완료할 때까지 실행 유닛들(110)에서 적절하게 실행될 수 없는 동작이다. 종속적 동작의 예는 로드 동작의 결과를 입력 중 하나로 갖는 가산 연산이다. 가산 연산은 로드 연산이 완료될 때까지 제대로 수행될 수 없으므로 가산 연산은 가산 연산에 종속된다.
동작 스케줄러(105)는 일반적으로 수신된 동작들(102)을 저장하고 실행 유닛들(110)에 제공하기 위해 저장된 동작들을 선택하여, 실행을 위해 선택된 동작을 스케줄링하도록 구성된다. 일부 실시예에서, 동작 스케줄러(105)는 각각의 수신된 동작에 초기 에이지 값을 할당하고, 실행을 위해 스케줄링된 다른 동작에 응답하여 각 동작에 대한 에이지 값을 증가시킨다. 동작 스케줄러(105)는 가령, 가장 높은 또는 가장 오래된 에이지 값을 갖는 동작을 선택함으로써, 저장된 동작의 에이지 값에 기초하여 스케줄링될 다음 동작을 선택한다.
일부 실시예에서, 에이지 값을 기초로 동작을 선택한 후에, 동작 스케줄러(105)는 선택된 동작이 다른 동작에 의존 하는지를 식별한다. 이 종속성 검사는 가령, 종속성 동작이 상위 동작에 대한 포인터를 포함함으로써, 그리고 동작 스케줄러(105)가 종속성 동작이 이미 실행된 동작을 가리키는지 여부를 식별하기 위해 최근 실행된 동작들의 리스트를 리뷰함으로써, 다양한 종속성 체크 기술 중 임의의 기술에 따라 수행될 수 있다. 선택된 연산이(다른 연산에 의존하지 않기 때문에 또는 이전에 의존한 모든 연산이 실행을 완료했기 때문에) 독립 연산인지를 식별하는 것에 응답하여, 동작 스케줄러(105)는 실행 유닛(110)에 동작을 제공함으로써 실행 동작을 스케줄링한다. 선택된 동작이 종속적 동작임을 식별함에 응답하여, 동작 스케줄러(105)는 실행 유닛(110)에 선택된 동작을 제공하지 않고 대신에 다른 동작을 선택한다. 동작을 종속적 동작으로 식별함에 응답하여 선택된 동작의 제공을 막는 것은 동작의 차단으로 여기서 호칭된다. 일부 실시예에서, 동작 차단에 응답하여, 동작 스케줄러(105)는 그 에이지 값을 보다 낮은 값으로 재설정하여, 차단된 동작이 다시 즉시 실행 선택되지 않음을 보장할 수 있다.
수신된 동작들의 몇몇 패턴들에 대해, 동작 선택 방식은 의존적인 동작들이 반복적으로 차단되도록 하고, 따라서 상대적으로 긴 시간 동안 동작 스케줄러(105)에서 계류 됨으로써 전체 처리 효율을 감소시킨다. 이러한 수신된 동작 패턴을 처리하기 위해, 처리 시스템(100)은 임계치(135)를 갖는 카운터(130)와 함께 동작하는, 스케줄링된 동작 추적 어레이(120)를 포함하여, 종속성에 의해 차단된 계류중 동작들의 수가 임계치(135)를 넘을 때까지 독립적 및 종속적 동작들 모두를 비순차적 방식으로 스케줄링할 수 있다. 스케줄링된 동작 추적 어레이(120)는 계류중인 동작을 추적하도록 구성된 어레이 또는 벡터이다. 동작 스케줄러(105)는 일반적으로 동작들에 대응하는 데이터를 추적 어레이(120)에 추가함으로써, 또는 추가되고 있는 동작들(예를 들어, 태그들)에 대응하는 표시자들(가령, 태그)을 추가함으로써, 추적 어레이(120)에 동작(가령, 동작(107))을 추가하도록 구성된다. 다른 실시예에서, 동작 스케줄러(105)는 주기적으로, 또는, 지정된 조건 세트에 응답하여, 추적 어레이(120)에 모든 계류중인 동작을 추가한다. 다른 실시예에서, 동작 스케줄러(105)는 임계 회수의 동작에 도달할 때까지 추적 어레이(120)에 각각의 수신된 동작을 추가한다. 일부 실시예에서, 동작 스케줄러(105)는 실행 유닛(110)에서 실행을 위해 스케줄링되도록 계류중인 동작들의 서브 세트(즉, 전부가 아님)만을 저장한다.
카운터(130)는 일반적으로 조정 가능한 값을 저장하도록 구성된다. 재설정 신호에 의해 지시된 재설정 이벤트에 응답하여, 카운터(130)는 저장된 값을 재설정 값(가령, 0)으로 조정하고, 추적 어레이(120)의 동작들 중 임의의 동작이 동작 스케줄러(105)에 의해 실행 차단될 때마다 저장된 값을 조정한다(가령, 증분). 즉, 동작이 실행 차단될 때마다, 차단되는 동작이 처음으로 차단된 것인지 또는 앞서 차단되었는지 여부에 관계없이, 카운터(130)는 증분된다. 따라서, 예를 들어, 스케줄링된 동작 추적 어레이(120)가 네 개의 스케줄링된 동작으로 채워지고, 그 중 제 1 동작은한 번 차단되고, 그 중 두 번째 동작은 두 번 차단되고, 세 번째 동작은 결코 차단되지 않은 동작이며, 네 번째 동작은 그 중 하나가 차단된 경우, 카운터가 4회 증분될 것이다. 일부 실시예에서, 스케줄링된 동작 추적 어레이(120)의 동작이 동작 스케줄러(105)에 의해 스케줄링될 때, 추적 어레이(120)는 스케줄링된 동작 추적 어레이(120)로부터 스케줄링된 동작을 제거하고, 카운터(130)는 초기 값으로 재설정된다. 다른 실시예에서, 추적된 동작이 스케줄링될 때 카운터(130)를 완전히 재설정하는 것이 아니라, 카운터(130)는 그 저장된 값을 재설정 값을 향해 그리고 임계 값으로부터 멀어지도록 조정한다(예를 들어, 저장된 값을 감소 시킴).
임계 값(135)은 추적 어레이(120)에 의해 추적된 동작이 동작 스케줄러(105)에 의해 우선순위가 결정되기 전에 차단되도록 허용된 횟수의 제한을 저장하는 프로그램가능한 레지스터이다. 설명을 위해, 카운터(130)의 값(105)이 임계치(135)를 넘음에 응답하여, 동작 스케줄러(105)는 실행 유닛(110)에서의 스케줄링을 위해 추적 어레이(120)에 저장된 동작의 우선순위를 결정한다. 일부 실시예들에서, 동작 스케줄러(105)는, 추적 어레이(120)에서 저장된 동작들 중 적어도 하나가 실행 유닛(110)에서 스케줄링될 때까지, 스케줄링된 동작 추적 어레이(120)에서 저장되지 않은 동작들의 스케줄링을 우선순위화한다. 따라서, 처리 시스템(100)은 반복적으로 차단된 동작들의 실행을 우선순위화하여 처리 효율을 향상시키는 것을 보장한다.
도 2는 일부 실시예에 따라 차단된 동작들의 임계 수치를 넘기 전과 후에 동작들을 스케줄링하는 도 1의 처리 시스템의 일례를 도시한다. 도시되는 예에서, 시간 T1에서, 스케줄링된 동작 추적 어레이(120)는 동작들(212, 214 및 216)을 포함한다. 카운터(130)는 3의 값을 가지며, 임계 값(135)은 3으로 설정된다. 또한, 시간 T1에서, 동작 스케줄러(105)는 동작의 수신과 같은 지정된 조건에 응답하여, 임계 동작 수치가 동작 스케줄러(105)에서 수신됨에 응답하여, 등등에 따라 추적 어레이(120)에 동작(218)을 추가한다.
시간 T2에서, 동작(212)은 동작 스케줄러(105)에 의해 선택되고, 독립적 동작으로 결정된다. 이에 응답하여, 동작 스케줄러(105)는 실행 유닛(110)에 동작을 제공함으로써 실행 동작(212)을 스케줄링한다. 추가적으로, 동작 스케줄러(105)는 동작(212) 제거를 추적 어레이(120)에 제어 신호하고, 카운터 값을 0의 초기 값으로 재설정하도록 카운터(130)에 제어 신호를 보낸다. 따라서, 도 2의 예에서, 추적된 동작은 임계 회수만큼 차단되지 않고, 따라서, 동작 스케줄러(105)에 의한 스케줄링을 위해 우선순위화 되지 않는다.
도 3은 일부 실시예에 따라 차단된 동작들의 임계 수를 넘음을 식별하는 도 1의 처리 시스템의 추적 어레이 및 카운터의 예를 도시한다. 도시되는 예에서, 시간 T1에서, 스케줄링된 동작 추적 어레이(120)는 4 개의 스케줄링된 동작, 즉 시각 T1에서 실행이 0 회 차단된 스케줄링된 동작(312); 시간 T1에서 실행이 2 회 차단된 스케줄링된 동작(314); 시간 T1에서 실행이 1회 차단된 스케줄링된 동작(316); 및 시간 T1에서 실행이 0회 차단된 스케줄링된 동작(318)을 포함한다. 카운터(130)는 3의 값을 저장하는데, 이는 스케줄링된 동작 추적 어레이(120) 내의 각각의 스케줄링된 동작이 시간 T1에서 차단된 횟수의 합계를 반영한다. 시간 T1에서, 카운터(130)의 값은 3으로 설정된 임계치(135)를 초과하지 않는다. 따라서, 동작 스케줄러(미도시)는 시간 T1에서 추적된 동작(추적 어레이(120)에 저장된 동작)을 우선순위화하지 않는다.
나중에 T2에서, 스케줄링된 동작 추적 어레이(120)는 4 개의 스케줄링된 동작, 즉 시간 T2에서 실행으로부터 0 회 차단된 동작(312); 시간 T2에서 실행으로부터 2 번 차단된 동작(314); 시간(T2)에서 실행이 1 회 차단된 동작(316); 및 시간 T2에서 실행으로부터 1회 차단된 스케줄링된 동작(318)을 포함한다. 카운터(130)는 값 4를 가지며, 스케줄링된 동작 추적 어레이(120)에서의 각 스케줄링된 동작이 시간 T2에서 차단된 횟수의 합계를 반영한다. 시간 T2에서, 카운터(130)의 값은 3으로 설정된 임계값(335)을 넘지 않는다. 따라서,동작 스케줄러(105)(미도시)는 실행 유닛(110)에서의 스케줄링을 위해 추적 어레이(120)에 저장된 동작의 우선순위를 결정한다. 일부 실시예에서, 동작 스케줄러(105)는 추적되지 않은 동작들(추적 어레이(120)에 저장되지 않은 동작들)보다 더 높은 에이지 값들을 동작들에게 할당함으로써, 그리고, 실행 유닛(110)에서 실행을 위해 추적된 동작들의 모두가 스케줄링될 때까지 추적 동작들에 대해 보다 높은 에이지 값을 유지함으로써, 추적된 동작들의 우선순위를 매긴다. 일부 실시예에서, 카운터(130)는 임계 값에서 포화(saturate)하는 포화 카운터(saturating counter)이다. 그러한 실시예에서, 카운터(130)의 값이 임계 값(335)과 같을 때, 동작 스케줄러(105)(도시되지 않음)는 실행 유닛(110)에서 스케줄링하기 위해 추적 어레이(120)에 저장된 동작을 우선순위화한다.
도 4는 일부 실시예에 따라 계류중인 동작이 임계 횟수만큼 실행으로부터 차단되었을 때 계류중인 동작의 스케줄링을 우선순위화하는 실행 동작 스케줄링 방법(400)의 흐름도이다. 박스(402)에서, 동작 스케줄러(105)는 추적 어레이(120)에서 동작 세트를 저장한다. 블록(404)에서, 동작 스케줄러(105)는 잠재적 스케줄링을 위해 계류 동작을 선택한다. 블록(406)에서, 동작 스케줄러(105)는 선택된 동작이 추적 어레이(120)에 저장되어 있는지 여부를 식별한다. 그렇지 않다면, 방법 흐름은 블록(408)으로 이동하고 동작 스케줄러(105)는 동작을 정상적으로 스케줄링할지 여부를 결정한다. 특히, 동작 스케줄러(105)는 선택된 동작이 다른 동작에 의존 하는지를 결정하고, 만약 그렇다면, 선택된 동작을 차단한다. 선택된 동작이 다른 동작에 의존하지 않고 블록(420)에서 카운터 임계 값을 넘지 않으면(아래에서 설명됨), 동작 스케줄러(105)는 실행 유닛(110)에서 실행을 위한 동작을 스케줄링한다. 블록 420에서 카운터 임계 값이 초과된 경우 아래에 설명 된대로 선택한 동작이 스케줄링되지 않는다.
블록(406)으로 돌아가서, 선택된 동작이 추적 어레이(120)에 저장되면, 방법 흐름은 블록(410)으로 진행하고, 동작 스케줄러(105)는 선택된 동작이 다른 동작에 의존하는지 여부를 결정한다. 그렇지 않다면, 방법 흐름은 블록(412)으로 진행하고, 동작 스케줄러(105)는 실행을 위해 선택된 동작을 실행 유닛(110)에 제공함으로써 실행을 위해 선택된 동작을 스케줄링한다. 방법은 블록(414)으로 이동하고 동작 스케줄러(105)는 추적 어레이(120)로부터 선택된 동작을 제거하고 블록(416)에서 카운터를 초기 값으로 재설정한다. 그 다음, 방법은 블록(404)으로 복귀하여 다른 동작이 선택된다.
블록(410)으로 돌아가서, 선택된 동작이 다른 동작에 종속적이면, 동작 스케줄러(105)는 동작을 차단한다. 이에 응답하여, 방법 흐름은 블록(418)으로 진행되고, 동작 스케줄러(105)는 카운터(130)를 증분시킨다. 블록(420)에서, 동작 스케줄러(105)는 카운터 값이 임계값(135)을 초과하는지 여부를 결정한다. 그렇지 않으면, 방법 흐름은 블록(404)으로 되돌아 가서 다른 동작이 선택된다. 블록(420)에서 동작 스케줄러(105)가 카운터 값이 임계 값(135)을 초과한다고 결정하면, 방법 흐름은 블록(422)으로 이동하고, 동작 스케줄러는 추적 어레이(120)에 저장된 동작들 중 적어도 하나가 스케줄링될 때까지 추적 어레이(120)에 저장되지 않은 동작이 스케줄링되지 못하게 한다.
일부 실시예들에서, 전술한 기술들의 특정 양상들은 소프트웨어를 실행하는 처리 시스템의 하나 이상의 프로세서들에 의해 구현될 수 있다. 소프트웨어는 비 일시적인 컴퓨터 판독 가능 저장 매체 상에 저장되거나 그렇지 않으면 명백히 구현된 하나 이상의 세트의 실행 가능 명령을 포함한다. 소프트웨어는 하나 이상의 프로세서에 의해 실행될 때, 전술한 기술의 하나 이상의 양태를 수행하도록 하나 이상의 프로세서를 조작하는 명령어 및 특정 데이터를 포함한다. 비 일시적 컴퓨터 판독 가능 저장 매체는 예를 들어 자기 또는 광학 디스크 저장 장치, 플래시 메모리와 같은 고체 상태 저장 장치, 캐시, RAM(random access memory) 또는 다른 비 휘발성 메모리 장치 또는 장치들, 등을 포함할 수 있다. 일시적이지 않은 컴퓨터 판독 가능 저장 매체에 저장된 실행 가능 명령어는 소스 코드, 어셈블리어 코드, 객체 코드, 또는 하나 이상의 프로세서에 의해 해석되거나 달리 실행 가능한 다른 명령어 포맷일 수 있다.
컴퓨터 판독 가능 저장 매체는 명령 및/또는 데이터를 컴퓨터 시스템에 제공하기 위해 사용 중에 컴퓨터 시스템에 의해 액세스 가능한 임의의 저장 매체 또는 저장 매체의 조합을 포함할 수 있다. 이러한 저장 매체는 광학 매체(가령, CD(Compact Disc), DVD(Digital Versatile Disc), 블루 레이 디스크), 자기 매체(가령, 플로피 디스크, 자기 테이프 또는 자기 하드 드라이브), 휘발성 메모리(가령, RAM(random access memory) 또는 캐시), 비휘발성 메모리(가령, ROM(read-only memory) 또는 플래시 메모리) 또는 마이크로일렉트로미케니컬 시스템(MEMS) 기반 저장 매체를 포함할 수 있지만 이에 제한되지 않는다. 컴퓨터 판독 가능 저장 매체는 컴퓨팅 시스템(예를 들어, 시스템 RAM 또는 ROM)에 내장되거나, 컴퓨팅 시스템에 고정적으로 부착되거나(예를 들어, 자기 하드 드라이브), 컴퓨팅 시스템에 탈착가능하게 부착되거나(예를 들어, 광학 디스크 또는 범용 직렬 버스(USB) 기반 플래시 메모리) 또는 유선 또는 무선 네트워크(가령, 네트워크 액세스 가능 스토리지(NAS))를 통해 컴퓨터 시스템에 연결될 수 있다.
일반 설명에서 위에 설명된 모든 활동이나 요소가 필요하지 않으며, 특정 활동이나 장치의 일부가 필요하지 않을 수 있으며, 기술된 사항에 추가하여 하나 이상의 활동이 수행되거나 요소가 포함될 수 있다. 또한, 활동이 나열되는 순서가 반드시 수행되는 순서와 같은 것이 아니다. 또한, 개념은 특정 실시예를 참조하여 설명되었다. 그러나, 당업자는 이하의 청구 범위에 설명된 바와 같이 본 개시의 범위를 벗어나지 않으면 서 다양한 수정 및 변경이 이루어질 수 있음을 이해할 것이다. 따라서, 명세서 및 도면은 제한적인 의미라기보다는 예시적인 것으로 간주되어야하며, 이러한 모든 수정은 본 발명의 범위 내에 포함되는 것으로 의도된다.
장점들, 다른 장점들, 및 문제들에 대한 해결책이 특정 실시예들과 관련하여 상술되었다. 그러나 이점, 이점, 문제에 대한 해결책 및 이점, 장점 또는 해결책을 발생 시키거나 더 발음하게 만들 수 있는 모든 기능(들)은 어떤 또는 중요한 요소의 중요하고 필수적이며 필수적인 요소로 해석되어서는 안됩니다. 모든 주장. 또한, 개시된 특정 주제는 본원의 교시의 이점을 갖는 당업자에게 명백한 상이하지만 동등한 방식으로 변형 및 실시될 수 있으므로, 단지 예시 적이다. 아래의 청구 범위에 기재된 것 이외에, 도시된 구조 또는 디자인의 세부 사항에 제한이 없다. 따라서, 위에서 개시된 특정 실시예는 변경되거나 수정될 수 있으며 모든 그러한 변형은 개시된 주제의 범위 내에서 고려되는 것이 명백하다. 따라서, 여기에서 추구하는 보호는 아래 청구범위에 제시되는 바에 따른다.

Claims (17)

  1. 처리용 독립적 및 종속적 동작 스케줄링 방법으로서,
    프로세서에서의 실행 스케줄링을 위한 제 1 동작이 수신됨에 응답하여, 동작 스케줄러에 의해, 상기 프로세서의 추적 어레이에 상기 제 1 동작을 추가하고 그리고 상기 제 1 동작에 제 1 에이지 값을 할당하는 단계와,
    상기 추적 어레이로부터 제 2 동작을 스케줄링하는 것에 응답하여 상기 제 1 에이지 값을, 상기 동작 스케줄러에 의해 조정하는 단계와,
    상기 제 1 에이지 값에 기초하여 실행을 위한 상기 제 1 동작을, 상기 동작 스케줄러에 의해 선택하는 단계와,
    실행을 위해 상기 제 1 동작을 선택한 후, 상기 제 1 동작이 제 3 동작에 종속됨을 식별하는 것에 응답하여 상기 제 1 동작이 실행 유닛에 발행되는 것을, 상기 동작 스케줄러에 의해 차단하는 단계와,
    상기 제 1 동작을 차단하는 것에 응답하여, 상기 동작 스케줄러에 의해, 상기 제 1 에이지 값을 초기 값으로 재설정하고 상기 제 1 동작을 상기 추적 어레이에서 유지하는 단계와,
    상기 제 1 동작이 상기 추적 어레이에 저장되는 동안 상기 제 1 동작이 실행 스케줄링되지 않도록 차단함에 응답하여 제 1 조정만큼 카운터의 값을, 카운터에 의해 조정하는 단계와, 그리고
    상기 카운터의 값이 임계치를 넘음에 응답하여, 추적 어레이에 저장되지 않은 실행 동작의 스케줄링을, 상기 동작 스케줄러에 의해 억제하는 단계를 포함하는,
    처리용 독립적 및 종속적 동작 스케줄링 방법.
  2. 제 1 항에 있어서,
    상기 제 1 동작이 상기 추적 어레이에 저장되는 동안 상기 제 1 동작이 실행 스케줄링됨에 응답하여 카운터를, 상기 동작 스케줄러에 의해 재설정하는 단계를 더 포함하는,
    처리용 독립적 및 종속적 동작 스케줄링 방법.
  3. 제 1 항에 있어서,
    상기 추적 어레이에 저장된 동작이 실행 스케줄링됨에 응답하여 상기 카운터의 값이 제 2 조정만큼 조정되는,
    처리용 독립적 및 종속적 동작 스케줄링 방법.
  4. 제 1 항에 있어서,
    상기 제 1 동작은 상기 프로세서의 실행 유닛에서의 실행 스케줄링을 대기하는 동작인,
    처리용 독립적 및 종속적 동작 스케줄링 방법.
  5. 제 1 항에 있어서,
    상기 제 1 동작은 상기 프로세서의 캐시에서의 실행 스케줄링을 대기하는 메모리 액세스 요청인,
    처리용 독립적 및 종속적 동작 스케줄링 방법.
  6. 제 1 항에 있어서,
    상기 추가하는 단계는, 상기 프로세서에서 실행 스케줄링 준비된 복수의 동작들을 상기 추적 어레이에 추가하는 단계를 포함하고, 상기 복수의 동작들은 상기 제 1 동작을 포함하는,
    처리용 독립적 및 종속적 동작 스케줄링 방법.
  7. 처리용 독립적 및 종속적 동작 스케줄링 방법으로서,
    추적 어레이에 프로세서에서의 실행 스케줄링을 위해 준비된 복수의 동작을, 상기 동작 스케줄러에 의해 추가하는 단계와,
    상기 프로세서에서의 실행을 위해 상기 복수의 동작들 중 제 2 동작을 스케줄링하는 것에 응답하여 상기 복수의 동작들 중 제 1 동작과 연관된 제 1 에이지 값을, 상기 동작 스케줄러에 의해 조정하는 단계와,
    상기 제 1 에이지 값에 기초하여 실행을 위한 상기 제 1 동작을, 상기 동작 스케줄러에 의해 선택하는 단계와,
    실행을 위해 상기 제 1 동작을 선택한 후, 상기 제 1 동작이 제 3 동작에 종속됨을 식별하는 것에 응답하여 상기 제 1 동작이 실행되는 것을, 상기 동작 스케줄러에 의해 차단하는 단계와,
    상기 제 1 동작을 차단하는 것에 응답하여, 상기 동작 스케줄러에 의해, 상기 제 1 에이지 값을 초기 값으로 재설정하고 상기 제 1 동작을 상기 추적 어레이에서 유지하는 단계와,
    상기 제 1 동작이 상기 추적 어레이에 저장되는 동안 상기 복수의 동작들 중 상기 제 1 동작이 실행 스케줄링되지 않도록 차단함에 응답하여, 상기 동작 스케줄러에 의해 카운터를 조정하는 단계와, 그리고
    상기 카운터가 임계치를 초과함에 응답하여, 상기 프로세서에서의 실행을 위해 상기 추적 어레이에 저장된 동작들을, 상기 동작 스케줄러에 의해 우선순위화하는 단계를 포함하는,
    처리용 독립적 및 종속적 동작 스케줄링 방법.
  8. 제 7 항에 있어서,
    상기 제 1 동작이 상기 프로세서에서 실행 스케줄링되는 것에 응답하여 상기 추적 어레이로부터 상기 제 1 동작을, 상기 동작 스케줄러에 의해 제거하는 단계를 더 포함하는,
    처리용 독립적 및 종속적 동작 스케줄링 방법.
  9. 제 8 항에 있어서,
    상기 제 1 동작이 상기 프로세서에서 실행 스케줄링되는 것에 응답하여, 상기 동작 스케줄러에 의해 카운터를 재설정하는 단계를 더 포함하는,
    처리용 독립적 및 종속적 동작 스케줄링 방법.
  10. 제 8 항에 있어서,
    상기 우선순위화하는 단계는, 스케줄링 준비가 되었고 상기 추적 어레이에 저장되지 않은 동작들이 실행 스케줄링되는 것을 억제하는 단계를 포함하는,
    처리용 독립적 및 종속적 동작 스케줄링 방법.
  11. 제 8 항에 있어서,
    상기 제 2 동작은 상기 추적 어레이에 저장되는,
    처리용 독립적 및 종속적 동작 스케줄링 방법.
  12. 프로세서로서,
    상기 프로세서에서 실행을 위한 동작들을 스케줄링하도록 구성된 동작 스케줄러와,
    상기 동작 스케줄러에서 동작들의 세트를 저장하도록 구성된 추적 어레이와,
    상기 추적 어레이에 저장된 제 1 동작이 상기 동작 스케줄러에서 실행 스케줄링되지 않도록 차단됨에 응답하여 제 1 조정만큼 값을 조정하도록 구성된 카운터를 포함하되,
    상기 동작 스케줄러는,
    실행을 위해 상기 추적 어레이에 저장된 제 2 동작을 스케줄링하는 것에 응답하여 상기 제 1 동작과 연관된 제 1 에이지 값을 조정하고,
    상기 제 1 에이지 값에 기초하여 실행을 위한 상기 제 1 동작을 선택하고,
    실행을 위해 상기 제 1 동작을 선택한 후, 상기 제 1 동작이 제 3 동작에 종속됨을 식별하는 것에 응답하여 상기 제 1 동작이 실행되는 것을 차단하고,
    상기 제 1 동작을 차단하는 것에 응답하여, 상기 제 1 에이지 값을 초기 값으로 재설정하고 상기 제 1 동작을 상기 추적 어레이에서 유지하고, 그리고
    상기 카운터가 임계치를 초과함에 응답하여, 실행을 위해 상기 추적 어레이에 저장된 동작들을 우선순위화하도록 구성되는,
    프로세서.
  13. 제 12 항에 있어서,
    상기 카운터는, 상기 제 1 동작이 상기 추적 어레이에 저장되어 있는 동안 상기 제 1 동작이 실행 스케줄링됨에 응답하여 상기 값을 재설정하도록 구성되는,
    프로세서.
  14. 제 12 항에 있어서,
    상기 카운터는 상기 추적 어레이에 저장된 동작이 실행 스케줄링됨에 응답하여 제 2 조정만큼 상기 카운터의 값을 조정하도록 구성되는,
    프로세서.
  15. 제 12 항에 있어서,
    상기 제 1 동작은 상기 프로세서의 실행 유닛에서의 실행을 위한 스케줄링을 대기하는 동작인,
    프로세서.
  16. 제 12 항에 있어서,
    상기 제 1 동작은 상기 프로세서의 캐시에서의 실행을 위한 스케줄링을 대기하는 메모리 액세스 요청인,
    프로세서.
  17. 제 12 항에 있어서,
    상기 동작들의 세트는 상기 동작 스케줄러에서의 스케줄링을 위해 동시에 준비된 동작들의 세트를 포함하는,
    프로세서.
KR1020197004040A 2016-07-19 2017-07-17 처리용 독립적 및 종속적 동작 스케줄링 KR102288876B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/213,981 US10339063B2 (en) 2016-07-19 2016-07-19 Scheduling independent and dependent operations for processing
US15/213,981 2016-07-19
PCT/US2017/042333 WO2018017457A1 (en) 2016-07-19 2017-07-17 Scheduling independent and dependent operations for processing

Publications (2)

Publication Number Publication Date
KR20190020344A KR20190020344A (ko) 2019-02-28
KR102288876B1 true KR102288876B1 (ko) 2021-08-11

Family

ID=60988520

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197004040A KR102288876B1 (ko) 2016-07-19 2017-07-17 처리용 독립적 및 종속적 동작 스케줄링

Country Status (6)

Country Link
US (1) US10339063B2 (ko)
EP (1) EP3488339B1 (ko)
JP (1) JP6826186B2 (ko)
KR (1) KR102288876B1 (ko)
CN (1) CN109564511B (ko)
WO (1) WO2018017457A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200046480A (ko) * 2018-10-24 2020-05-07 삼성전자주식회사 멀티 sim 장치 및 이의 동작 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080168260A1 (en) 2007-01-08 2008-07-10 Victor Zyuban Symbolic Execution of Instructions on In-Order Processors
US20150154050A1 (en) 2012-06-05 2015-06-04 International Business Machines Corporation Dependency management in task scheduling
US20150286261A1 (en) 2014-04-04 2015-10-08 International Business Machines Corporation Delaying execution in a processor to increase power savings
US20160077870A1 (en) 2014-09-16 2016-03-17 Freescale Semiconductor, Inc. Starvation control in a data processing system

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE68924977T2 (de) * 1989-05-17 1996-06-13 Philips Electronics Nv Steuermodul für eine Arbeitsstation.
JPH05210515A (ja) * 1992-01-30 1993-08-20 Koufu Nippon Denki Kk 命令の割込み優先処理装置
US5751983A (en) * 1995-10-03 1998-05-12 Abramson; Jeffrey M. Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations
US6950927B1 (en) 2001-04-13 2005-09-27 The United States Of America As Represented By The Secretary Of The Navy System and method for instruction-level parallelism in a programmable multiple network processor environment
US6820151B2 (en) * 2001-10-15 2004-11-16 Advanced Micro Devices, Inc. Starvation avoidance mechanism for an I/O node of a computer system
US20040158694A1 (en) * 2003-02-10 2004-08-12 Tomazin Thomas J. Method and apparatus for hazard detection and management in a pipelined digital processor
US7574439B2 (en) 2004-05-20 2009-08-11 International Business Machines Corporation Managing a nested request
US7660952B2 (en) * 2007-03-01 2010-02-09 International Business Machines Corporation Data bus bandwidth scheduling in an FBDIMM memory system operating in variable latency mode
US7987332B2 (en) * 2007-03-21 2011-07-26 Sandisk Technologies Inc. Methods for storing memory operations in a queue
US20080235480A1 (en) * 2007-03-21 2008-09-25 Shai Traister Systems for storing memory operations in a queue
US8781110B2 (en) * 2007-06-30 2014-07-15 Intel Corporation Unified system architecture for elliptic-curve cryptography
US8972995B2 (en) * 2010-08-06 2015-03-03 Sonics, Inc. Apparatus and methods to concurrently perform per-thread as well as per-tag memory access scheduling within a thread and across two or more threads
US9104500B1 (en) 2011-09-29 2015-08-11 Emc Corporation Lock-free job scheduler for multi-processor systems
JP5845877B2 (ja) * 2011-12-20 2016-01-20 富士通株式会社 情報処理装置、データ制御方法およびデータ制御プログラム
US9563425B2 (en) * 2012-11-28 2017-02-07 Intel Corporation Instruction and logic to provide pushing buffer copy and store functionality
US9286119B2 (en) 2013-02-13 2016-03-15 Nvidia Corporation System, method, and computer program product for management of dependency between tasks
US20140258697A1 (en) * 2013-03-07 2014-09-11 Mips Technologies, Inc. Apparatus and Method for Transitive Instruction Scheduling
JP6451308B2 (ja) * 2014-12-24 2019-01-16 富士通株式会社 ストレージ装置およびストレージ装置制御プログラム
JP6451307B2 (ja) * 2014-12-24 2019-01-16 富士通株式会社 ストレージ装置およびストレージ装置制御プログラム
US9747659B2 (en) * 2015-06-07 2017-08-29 Apple Inc. Starvation free scheduling of prioritized workloads on the GPU
US20170083343A1 (en) * 2015-09-19 2017-03-23 Microsoft Technology Licensing, Llc Out of order commit
US10534724B2 (en) * 2015-12-24 2020-01-14 Intel Corporation Instructions and logic to suspend/resume migration of enclaves in a secure enclave page cache

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080168260A1 (en) 2007-01-08 2008-07-10 Victor Zyuban Symbolic Execution of Instructions on In-Order Processors
US20150154050A1 (en) 2012-06-05 2015-06-04 International Business Machines Corporation Dependency management in task scheduling
US20150286261A1 (en) 2014-04-04 2015-10-08 International Business Machines Corporation Delaying execution in a processor to increase power savings
US20160077870A1 (en) 2014-09-16 2016-03-17 Freescale Semiconductor, Inc. Starvation control in a data processing system

Also Published As

Publication number Publication date
EP3488339B1 (en) 2022-04-20
US10339063B2 (en) 2019-07-02
KR20190020344A (ko) 2019-02-28
US20180024934A1 (en) 2018-01-25
JP6826186B2 (ja) 2021-02-03
EP3488339A1 (en) 2019-05-29
EP3488339A4 (en) 2020-08-12
JP2019521451A (ja) 2019-07-25
CN109564511B (zh) 2020-06-26
CN109564511A (zh) 2019-04-02
WO2018017457A1 (en) 2018-01-25

Similar Documents

Publication Publication Date Title
US10248463B2 (en) Apparatus and method for managing a plurality of threads in an operating system
US9396353B2 (en) Data allocation among devices with different data rates
JP2011192281A (ja) 仮想マシンモニター及び仮想マシンモニターのスケジューリング方法
US9817696B2 (en) Low latency scheduling on simultaneous multi-threading cores
US20150220367A1 (en) Removal of idle time in virtual machine operation
CN105446795A (zh) 虚拟机操作中的并行化
CN110609807A (zh) 用于删除快照数据的方法、设备和计算机可读存储介质
US9128754B2 (en) Resource starvation management in a computer system
KR102288876B1 (ko) 처리용 독립적 및 종속적 동작 스케줄링
KR102205899B1 (ko) 메모리의 뱅크 충돌을 방지하기 위한 방법 및 장치
CN113032119A (zh) 一种任务调度方法、装置、存储介质及电子设备
US11481250B2 (en) Cooperative workgroup scheduling and context prefetching based on predicted modification of signal values
US9058207B2 (en) Simulation apparatus, method, and computer-readable recording medium
JP6156379B2 (ja) スケジューリング装置、及び、スケジューリング方法
US20200301608A1 (en) Controller event queues
JP2019160155A (ja) 情報処理装置、情報処理方法、及びプログラム
KR102407781B1 (ko) 플립 큐 관리에 기초한 그래픽스 컨텍스트 스케줄링
KR101907007B1 (ko) 프로세스의 우선순위를 이용한 페이지 처리 방법 및 페이지 처리 장치
CN103714511A (zh) 一种基于gpu的分支处理方法及装置
CN109284223B (zh) 可配置的调试方法和系统
US11294710B2 (en) Thread switch for accesses to slow memory
JP2009015569A (ja) デバイスへのアクセス制御方法および処理装置
US20120221731A1 (en) Computing device and method for scheduling service applications

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant