KR20130081213A - 컴퓨터 시스템들의 미세한 단위의 성능 자원 관리 - Google Patents

컴퓨터 시스템들의 미세한 단위의 성능 자원 관리 Download PDF

Info

Publication number
KR20130081213A
KR20130081213A KR1020127027941A KR20127027941A KR20130081213A KR 20130081213 A KR20130081213 A KR 20130081213A KR 1020127027941 A KR1020127027941 A KR 1020127027941A KR 20127027941 A KR20127027941 A KR 20127027941A KR 20130081213 A KR20130081213 A KR 20130081213A
Authority
KR
South Korea
Prior art keywords
task
rate
processor
clock
performance
Prior art date
Application number
KR1020127027941A
Other languages
English (en)
Inventor
개리 알렌 깁슨
밸러리 포페스쿠
Original Assignee
버추얼메트릭스, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 버추얼메트릭스, 인크. filed Critical 버추얼메트릭스, 인크.
Publication of KR20130081213A publication Critical patent/KR20130081213A/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/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3228Monitoring task completion, e.g. by use of idle timers, stop commands or wait commands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • 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]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • 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]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/507Low-level
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Power Sources (AREA)
  • Hardware Redundancy (AREA)

Abstract

프로세서 시스템에 의한 복수의 태스크의 실행이 모니터링된다. 이 모니터링에 기초하여, 성능 자원들(performance resources)의 조정을 요구하는 태스크들이, 각각의 태스크에 대한 진행 오류 또는 진행 제한 오류 중 적어도 하나를 산출함으로써 식별된다. 그 후에, 각각의 식별된 태스크에 할당된 프로세서 시스템의 성능 자원들이 조정된다. 이러한 조정은, 태스크를 실행하는 프로세서 시스템에서 적어도 하나의 프로세서의 클록 레이트를 조정하는 것, 태스크에 의해 이용될 캐시 및/또는 버퍼의 양을 조정하는 것, 및/또는 태스크에 의해 이용될 입/출력(I/O) 대역폭의 양을 조정하는 것을 포함할 수 있다. 관련된 시스템, 장치, 방법 및 물품(articles) 또한 설명된다.

Description

컴퓨터 시스템들의 미세한 단위의 성능 자원 관리{FINE GRAIN PERFORMANCE RESOURCE MANAGEMENT OF COMPUTER SYSTEMS}
본 출원은, 2010년 3월 26일자로 출원되고 발명의 명칭이 "컴퓨터 시스템들의 미세한 단위의 성능 자원 관리를 위한 방법 및 장치(METHOD AND APPARATUS FOR FINE GRAIN PERFORMANCE RESOURCE MANAGEMENT OF COMPUTER SYSTEMS)"인 미국 가출원 일련 번호 61/341,170 및 2010년 3월 26일자로 출원되고 발명의 명칭이 "프로세서 캐시 메모리 점유의 제어를 위한 방법 및 장치(METHOD AND APPARATUS FOR THE CONTROL OF PROCESSOR CACHE MEMORY OCCUPANCY)"인 미국 가출원 일련 번호 61/341,069를, 35 U.S.C.§119 하에, 우선권으로 주장하고, 그 개시 내용은 여기에 참조로 포함된다.
여기에 기술된 주제는 프로세서 시스템에서 실행하는 태스크들에 의해 이용된 성능 자원들(performance resources)의 관리를 위한 시스템들, 방법들, 및 아티클들(articles)에 관한 것이다.
컴퓨팅 시스템은 물리적 자원들(프로세서들, 메모리, 주변기기들, 버스들 등)뿐만 아니라 프로세서 사이클들, 클록 속도, 메모리, I/O 대역폭 및 메인/캐시 메모리 공간과 같은 성능 자원들로 이루어 진다. 전통적인 접근법들에서, 성능 자원들은 일반적으로 비효율적 관리되거나 전혀 관리되지 않았다. 그 결과, 프로세서들은 폭넓게 사용되지 않고, 너무 많은 에너지를 소비하며, 그들의 성능 잠재력의 일부를 잃게 된다.
많은 컴퓨터 시스템들은 시스템 및/또는 프로세서 클록 주파수(들)를 동적으로 제어할 수 있다. 클록 주파수를 낮추면, 클록 주파수가 낮추어질 때 프로세서 공급 전압이 낮아지는 것을 허용하는 반도체 스케일링 효과(semiconductor scaling effects)로 인해 전력 소비를 동적으로 낮출 수 있다. 따라서, 클록 주파수를 줄일 수 있으면, 컴퓨터 시스템이 필요에 따라 수행하도록 제공되어, 감소된 에너지 소비, 열 발생 등으로 이어질 수 있다. 마찬가지로, 많은 프로세서 뿐만 아니라, 연관된 인터페이스들 및/또는 주변기기들은, 그들이 그들의 활성 상태(들)에 비해 매우 작은 양의 에너지를 소비할 수 있는 유휴 또는 절전 상태(idle or sleep states)에 신속히 들어가고 나갈 수 있다. 클록 주파수를 낮추는 것과 마찬가지로, 하나 이상의 프로세서 및/또는 컴퓨터 시스템의 일부 또는 전부를 절전 상태에 배치하는 것은, 컴퓨터 시스템이 필요에 따라 수행하도록 제공되어 전체 에너지 소비를 줄이는데 사용될 수 있다.
실제로, 종래의 전력 관리 접근법들은, 하나 이상의 프로세서가 유휴 상태이거나 더 낮은 클록 속도에서 실행될 수 있어 에너지를 절약할 수 있는, 유휴 시간들 또는 느린 시스템 응답을 갖는 "사용 모드들(use modes)"을 검출한다. "사용 모드들"에 기초한 전력 관리는 항상 모든 에너지 절감 기회를 효율적으로 이용하기 위해 종종 너무 미세하지 않은 단위(too coarse of a granularity)를 갖는다.
프로세서 시스템에 의한 복수의 태스크의 실행이 모니터링된다. 이 모니터링에 기초하여, 각각의 태스크에 대한 진행 오류(progress error) 및/또는 하나 이상의 진행 제한 오류(one or more progress limit errors)를 산출함으로써 추가적인 성능 자원들을 요구하는 태스크들이 식별된다. 이후, 각각의 식별된 태스크에 할당된 프로세서 시스템의 성능 자원들이 조정된다. 이러한 조정은: 태스크를 실행하는 프로세서 시스템에서 적어도 하나의 프로세서의 클록 레이트를 조정하는 것, 태스크에 의해 이용될 캐시 및/또는 버퍼들의 양을 조정하는 것, 및/또는 태스크에 의해 이용될 입/출력(I/O) 대역폭의 양을 조정하는 것을 포함할 수 있다.
각각의 태스크는: 단일 태스크, 태스크들의 그룹, 스레드(thread)), 스레드들의 그룹, 단일 상태 머신, 상태 머신들의 그룹, 단일 가상 머신, 가상 머신들의 그룹, 및 그들의 임의의 조합을 포함하는 그룹으로부터 선택될 수 있다. 프로세서는: 단일 프로세서, 멀티-프로세서, 멀티-스레딩(예컨대, 동시의 또는 의사-동시의(pseudo-simultaneous) 멀티-스레딩 등)을 지원하는 프로세서 시스템, 및/또는 멀티-코어 프로세서를 포함할 수 있다.
실행 중인(executing)/실행될(to be executed) 태스크들과 연관되는 모니터링된 성능 메트릭들은 변경될 수 있다. 예를 들어, 데이터 이동(data transference)은 초기에 모니터링될 수 있고, 나중에 프로세서 사이클들이 모니터링될 수 있다.
진행 오류 레이트(progress error rate)는 태스크에 의해 완료된(completed) 작업(work)과 태스크에 의해 완료될(to be completed) 작업 사이의 차이와 동일할 수 있다. 대안적으로, 진행 오류 레이트는 완료된 작업에 대한 작업 완료 레이트와 태스크에 대해 예상된 작업 레이트 사이의 차이와 동일하다. 각각의 태스크는 연관된 실행 우선순위(execution priority) 및 실행 기한(execution deadline)을 가질 수 있다(그리고 이러한 우선순위 및/또는 기한은 스케줄러에 의해 지정될 수 있고, 및/또는 그것은 레이트 적응 펑션(rate adaption function)의 일부 또는 레이트 적응 펑션에 대한 파라미터로서 도출/사용될 수 있다). 이러한 경우에, 프로세서 시스템의 성능 자원들은, 각각의 식별된 태스크가, 그것의 대응하는 실행 기한 이전에 그것의 대응하는 실행 우선순위에 따라 완료되는 것을 가능하게 하도록 조정될 수 있다.
성능 자원들은 태스크 단위로(on task-by-task basis) 조정될 수 있다. 각각의 태스크는 태스크에 대한 실행 우선순위 및 실행 기한을 설정하는데 사용되는 연관된 성능 프로파일을 가질 수 있다. 연관된 성능 프로파일은 적어도 하나의 성능 파라미터를 지정할 수 있다. 성능 파라미터는, 예를 들어, 태스크에 의해 이용될 버퍼들의 초기의 최대 및/또는 최소량을 지정하는 캐시 점유 할당(cache occupancy quota)일 수 있고, 캐시 점유 할당은 태스크의 실행 동안 동적으로 조정될 수 있다. 캐시 점유 할당은: 진행 오류, 태스크에 대한 캐시 미스 레이트(cache miss rate), 캐시 히트 레이트(cache hit rate) 또는 성능을 나타내는 또 다른 메트릭들 중 적어도 하나에 기초하여 동적으로 조정될 수 있다.
성능 파라미터는 태스크의 실행을 위한 초기의 대역폭 요구조건들(initial bandwidth requirements)을 지정할 수 있고, 이러한 대역폭 요구조건들은 태스크의 실행 동안 동적으로 조정될 수 있다.
각각의 태스크에 의해 요구되는 프로세서 클록 요구 레이트(processor clock demand rate)가 결정될 수 있다. 이러한 결정들에 기초하여, 모든 태스크에 대해 결정된 프로세서 클록 요구 레이트에 기초하여 총 클록 요구 레이트(aggregate clock demand rate)가 산출될 수 있다. 이에 응답하여, 프로세서 시스템 클록 레이트는 총 클록 요구 레이트를 수용하도록 조정될 수 있다. 어떤 경우에는, 프로세서 시스템 클록 레이트는 총 클록 요구 레이트 플러스(plus) 오버헤드 요구 레이트(overhead demand rate)로 조정될 수 있다. 프로세서 클록 요구 레이트는, 시간 간격으로 분할된 태스크의 완료를 위해 예상된 실행 시간과, 현재의 프로세서 시스템 클록 레이트의 곱(product)으로서 산출될 수 있다. 각각의 태스크에 대한 프로세서 클록 요구 레이트는 태스크의 성능에 영향을 미치는 오류들에 기초하여 업데이트될 수 있고, 그 결과, 총 클록 요구 레이트는 각각의 태스크에 대해 업데이트된 프로세서 클록 요구 레이트에 기초하여 업데이트될 수 있다. 각각의 태스크에 대한 프로세서 클록 요구 레이트 또는 총 클록 요구 레이트의 업데이트는 신속한 레이트 변경들을 약화(dampen) 또는 강화(enhance)하기 위해 적어도 하나의 적응 펑션을 사용할 수 있다. 각각의 태스크에 대한 프로세서 클록 레이트는, 스케줄러 또는 태스크가 레디 투 런(ready-to-run)일 때를 결정하는 다른 시스템 컴포넌트(이를테면, 태스크가 차단될 때 I/O 요청을 완료하는 I/O 서브시스템)에 의해 결정되는 것과 같이 태스크가 레디 투 런일 때, 총 클록 요구 레이트에 추가될 수 있다. 총 클록 요구 레이트는, 프로세서 시스템 클록 레이트가 총 클록 요구 레이트보다 더 높도록, 그리고 다른 때에는, 프로세서 시스템 클록 레이트가 총 클록 요구 레이트보다 더 낮도록, 일정 시간(a period of time)에 걸쳐 산출될 수 있다.
프로세서 시스템은 적어도 두 개의 프로세서를 포함할 수 있고, 총 클록 요구 레이트는 적어도 두 개의 프로세서 각각에 대해 결정될 수 있고 대응하는 프로세서를 사용하여 실행하는 태스크들에 대한 프로세서 요구 레이트에 기초하는 것일 수 있다. 이러한 배열에서, 적어도 두 개의 프로세서 각각에 대한 클록 레이트는 별도로(separately) 및 그에 따라(accordingly) 조정될 수 있다.
각각의 태스크에는 물리적 메모리가 할당된다. 적어도 하나의 태스크는 물리적 메모리의 적어도 일부에 매핑되는 적어도 하나의 가상 메모리 공간을 이용할 수 있다.
또 다른 측면에서, 태스크들 각각에 대해 적어도 하나의 모니터링된 값을 결정하기 위해, 프로세서 시스템에 의한 복수의 태스크의 실행이 모니터링된다. 적어도 하나의 모니터링된 값은 프로세서 시스템에 의해 대응하는 태스크의 성능에 영향을 미치는 적어도 하나의 팩터의 특징이 된다. 각각의 태스크는 적어도 하나의 성능 파라미터를 지정하는 연관된 태스크 성능 프로파일을 갖는다. 각각의 태스크에 대해, 대응하는 모니터링된 값은 연관된 태스크 성능 프로파일에 지정된 대응하는 적어도 하나의 성능 파라미터와 비교된다. 이 비교에 기초하여, 비교에 기초한 태스크들 각각에 대해, 태스크의 실행을 위해 이용된 성능 자원들이 조정되어야 하는지 또는 태스크의 실행을 위해 이용된 성능 자원들이 유지되어야 하는지가 결정된다. 그 후에, 성능 자원들은, 태스크에 할당된 성능 자원들이 조정되어야 한다고 결정된 태스크들 각각에 대해 프로세서 클록 레이트는 수정하고, 태스크에 할당된 성능 자원들이 유지되어야 한다고 결정된 태스크들 각각에 대해 성능 자원들은 유지함으로써 조정될 수 있다.
모니터링된 값은 태스크에 의해 완료된 작업의 양의 특징이 될 수 있다. 태스크에 의해 완료된 작업의 양은: 태스크를 실행할 때 전송되는 데이터의 양, 태스크를 실행할 때 완료된 프로세서 명령어들의 수, 프로세서 사이클들, 실행 시간 등 중 적어도 하나로부터 도출될 수 있다.
일부 변형들에서, 현재의 프로그램 상태는 각각의 태스크에 대해 결정되고, 연관된 태스크 성능 프로파일은 상이한 성능 파라미터들을 갖는 두 개 이상의 프로그램 상태를 지정한다. 이러한 배치에서, 모니터링된 값은 현재의 프로그램 상태에 대한 성능 파라미터와 비교될 수 있다(그리고 모니터링되는 것이 변경될 수 있다(예컨대, 명령어 데이터 이동(transfererence) 등)).
실행중인 태스크의 적어도 하나의 성능 프로파일은, 대응하는 성능 파라미터가 변경되도록 수정될 수 있다. 그 결과, 모니터링된 값은 변경된 성능 파라미터와 비교될 수 있다.
각각의 태스크에 의해 요구되는 프로세서 클록 요구 레이트가 결정될 수 있다. 그 후에, 총 클록 요구 레이트는 모든 태스크에 대해 결정된 프로세서 클록 요구 레이트에 기초하여 산출될 수 있다. 그 결과, 프로세서 시스템 클록 레이트는 총계 클록 요구 레이트를 수용하도록 조정될 수 있다. 특정한 태스크에 의해 요구되는 프로세서 클록 요구 레이트는, 예상되거나 완료된 작업 레이트와 적어도 하나의 진행 제한 레이트(예컨대, 진행 제한 오류 등) 사이의 차이에 기초하여 동적으로 조정될 수 있다. 각각의 태스크에 의해 요구되는 프로세서 클록 요구 레이트는 대응하는 태스크의 완료 예상 시간에 기초하는 것일 수 있다.
프로세서 시스템 클록 레이트는 태스크들의 완료 예상 시간에 영향을 미치지 않는 수준으로 선택적으로 감소될 수 있다. 프로세서 시스템 클록 레이트는, 총 클록 요구가 0보다 더 큰 그러한 시간까지 절전 또는 유휴 상태 중 어느 하나로 설정될 수 있다. 일정 시간 동안 평균 프로세서 시스템 클록 레이트가 총 클록 요구 레이트의 위에 있는 일정 시간 동안, 프로세서 시스템 클록 레이트는 총 클록 요구 레이트의 위 아래로(above and below) 심하게 변동될 수 있다.
성능 프로파일은, 태스크가 이용할 수 있는 버퍼의 수를 제한하는 점유 할당(occupancy quota)을 지정할 수 있다. 점유 할당은, 예상되고 완료된 작업 레이트와 하나 이상의 진행 제한 레이트(예컨대, 진행 제한 오류 등) 사이의 차이에 기초하여 동적으로 조정될 수 있다. 단일 소스 또는 다수의 소스로부터의 다른 성능 메트릭들이 점유 할당을 조정하는데 사용될 수 있다.
프로세서 시스템의 입/출력 서브시스템에 의한 대역폭의 이용은, 각각의 태스크의 성능 요구조건들이 충족되도록 선택적으로 제어될 수 있다. 이용된 대역폭의 양은 예상되고 완료된 작업 레이트와 하나 이상의 진행 제한 레이트(예컨대, 진행 오류 등) 사이의 차이에 기초하여 동적으로 조정될 수 있다. 단일 소스 또는 다수의 소스로부터의 다른 성능 메트릭들(예컨대, 진행 제한 오류 등)은 점유 할당을 조정하는데 사용될 수 있다.
또 다른 측면에서, 시스템은 적어도 하나의 프로세서, 복수의 버퍼, 스케줄러 모듈, 미터링 모듈(metering module), 적응형 클록 관리자 모듈(adaptive clock manager module), 캐시 점유 관리자 모듈, 및 입/출력 대역폭 관리자 모듈을 포함한다. 스케줄러 모듈은 적어도 하나의 프로세서에 의해 실행될 복수의 태스크를 스케줄링한다(그리고, 일부 구현들에서, 각각의 태스크는 연관된 실행 우선순위 및/또는 실행 기한을 갖는다). 미터링 모듈은 복수의 태스크의 실행을 모니터링하고, 추가적인 처리 자원들을 요구하는 태스크들을 식별할 수 있다. 적응형 클록 관리자 모듈은 태스크를 실행할 때 적어도 하나의 프로세서의 클록 레이트를 선택적으로 조정할 수 있다. 캐시 점유 관리자 모듈은 태스크에 의해 이용될 버퍼들의 최대량을 선택적으로 조정할 수 있다. 입/출력 대역폭 관리자 모듈은 태스크에 의해 이용될 입/출력(I/O) 대역폭의 최대량을 선택적으로 조정할 수 있다.
제조의 아티클들은, 또한, 컴퓨터에 의해 실행될 때 컴퓨터가 여기의 동작들을 수행하게 하는, 컴퓨터 판독가능 매체에 영구적으로 저장된 컴퓨터 실행가능 명령어들을 포함하는 것으로 기술된다. 비슷하게, 컴퓨터 시스템은, 또한, 프로세서 및 프로세서에 연결된 메모리를 포함할 수 있는 것으로 기술된다. 메모리는, 프로세서가 여기에 기술된 동작들 중 하나 이상을 수행하게 하는 하나 이상의 프로그램을 일시적으로 또는 영구적으로 저장할 수 있다.
여기에 기술된 주제는 많은 장점들을 제공한다. 예를 들어, 성능 보증들/목표들(performance guarantees/targets)을 제공하는 그러한 방식으로 (성능 요구조건들에 기초하여) 캐시/버퍼 사용 및 I/O 대역폭을 최적화함으로써, 최소의 자원들을 사용함과 동시에, 컴퓨터 시스템이 더 큰 용량을 갖는 것을 허용할 수 있다(각각의 컴포넌트에 대해 요구되는 자원들이 최소화되기 때문에). 또한, 현 주제는 컴퓨터 시스템이 더 적은/더 작은 물리적 컴퓨터 자원들을 요구하는 것을 허용하여, 비용을 낮추고 및/또는 물리적 사이즈를 줄일 수 있다. 게다가, 더 적은 전력 소모 자원들이 필요로 되기 때문에, 전체 전력 소비가 감소될 수 있다. 게다가, 이러한 총 클록 레이트들, 진행 오류 및 진행 제한 오류와 같은 멀티-프로세서 정보는 태스크들을 스케줄링하기 위해 해당 프로세서의 스케줄러에게 통지하는데 사용될 수 있다.
여기에 기술된 주제의 하나 이상 변형의 세부사항들은 첨부 도면 및 아래의 기술에 명시되어 있다. 여기에 기술된 주제의 다른 특징들 및 장점들은 기술과 도면들로부터, 그리고 청구항들로부터 명백해 질 것이다.
도 1은 성능 자원 관리를 위한 컴퓨터 시스템의 블록도이고;
도 2는 미터링 모듈의 블록도이고;
도 3은 성능 자원 관리자 모듈의 블록도이고;
도 4는 캘린더 큐(calendar queue)를 도시하는 도면이고;
도 5는 프로세서 시스템 성능 자원 관리를 위한 기술을 도시하는 프로세스 순서도이다.
여러 도면들에서 비슷한 참조 번호들은 비슷한 요소들을 나타낸다.
도 1은 프로세서 시스템(10), 관리 모듈(106), I/O(입/출력) 서브시스템(108) 및 시스템 메모리(150)를 포함하는 컴퓨터 시스템의 단순화된 블록도이다. 프로세서 시스템과 컴퓨터 시스템의 일반적으로 알려진 요소들(elements) 중 일부는 현 주제의 이해를 돕기 위해 도면에 도시되지 않는다. 프로세서 시스템(10)은 중앙 처리 장치, 프로세서, 마이크로프로세서, 프로세서 코어 등 중 하나 이상을 포함할 수 있다. 예를 들어, 프로세서 시스템(10)은 복수의 프로세서 및/또는 멀티-코어 프로세서를 포함할 수 있다. 도 1에 도시된 프로세서 시스템의 기능적 요소들은 하드웨어로 또는 하드웨어와 소프트웨어(또는 펌웨어)의 조합으로 구현될 수 있다.
프로세서 시스템(10)은 명령어 캐시(104), 명령어 인출/분기 유닛(instruction fetch/branch unit; 115), 명령어 디코드 모듈(125), 실행 유닛(135), 로드/저장 유닛(140), 데이터 캐시(145) 프로세서 시스템의 클록 속도(들)를 제어하기 위한 클록 모듈(180), 프로세서 시스템의 유휴 또는 절전 상태를 제어하기 위한 유휴 상태 모듈(184), DMA(Direct Memory Access) 모듈(186), 성능 관리 시스템(105) 및 스케줄러 모듈(130)을 포함할 수 있다. 성능 관리 시스템(105)은 미터링 모듈(metering module; 110) 및 성능 자원 관리 모듈(performance resource management module; 120)을 포함할 수 있다. 하나의 구현에서, 태스크에 대한 태스크 성능 프로파일을 저장하는, 태스크 컨텍스트 메모리는 시스템 메모리(150)에 통합될 수 있다. 다른 구현들에서, 태스크 컨텍스트 메모리는 시스템 메모리(150)에 독립적일 수 있다.
이 문서 전체에 걸쳐, 태스크는 프로세서 시스템(10)에 의해 실행될 명령어들의 세트로서 지칭될 수 있다. 태스크라는 용어가 때로는 단독으로 언급되지만, 태스크라는 용어는 태스크들의 그룹(달리 명시되지 않는 한)을 포함하는 것으로 해석될 수 있다. 태스크는 또한, 하나 이상의 프로세서 시스템(10)(예컨대, 마이크로프로세서들) 내에서 또는 하나 이상의 프로세서에서의 가상 실행 환경들과 같은 가상 머신 내에서 실행하는, 실행 중인 컴퓨터 프로그램들의 인스턴스들과 같은 프로세스들, 자원들을 가깝게 공유하고(closely sharing) 동시에(simultaneously) 또는 의사-동시에(pseudo-simultaneously) 실행하는 컴퓨터 프로그램의 하나 이상의 인스턴스들과 같은 실행의 스레드들 등을 포함할 수 있다. 가상 머신(virtual machine; VM)은 실제 머신과 같이 프로그램들을 실행하는 머신(컴퓨터)의 소프트웨어 구현이다. 일부 구현들에서, 태스크들은 이미지 프로세서, 암호화 프로세서 등과 같은 상태 머신들일 수 있다.
관리 모듈(106)은 처리 모듈(예를 들어, 시스템 메모리(150)에 상주하는 프로그램)에 연결된 컴퓨터 시스템의 일부일 수 있다. 관리 모듈(106)은, 시스템 메모리(150)로부터 또는 하드 디스크 드라이브, 비-휘발성 메모리 등과 같은 저장 디바이스들로부터 이전에 만든 성능 프로파일들을 작성 및/또는 검색할 수 있고, 태스크 성능 파라미터들을 지정하는 태스크 성능 프로파일들을 태스크들에 직접적으로 또는 그들의 태스크 컨텍스트(특정한 태스크를 관리하는데 필요한 정보를 포함하는 데이터 집합)를 통해 할당할 수 있다. 일부 구현들에서, 관리 모듈(106)은 태스크 성능 프로파일들(예컨대, 정책들/규칙들(policies/rules) 등의 집합을 통해)을 결정/제어함으로써 자원들의 할당을 제어할 수 있다.
I/O 서브시스템 모듈(108)은 처리 모듈(예를 들어, 시스템 메모리(150)에 상주하는 프로그램)에 연결된 컴퓨터 시스템의 일부일 수 있다. I/O 서브시스템 모듈(108)은, 처리 모듈과, 외부 세계(아마도 인간), 저장 디바이스들, 또는 또 다른 처리 시스템 사이의 통신을 위한 수단들을 제어 및/또는 인에이블 및/또는 제공할 수 있다. 입력들은 시스템에 의해 수신된 신호들 또는 데이터이고, 출력은 그로부터 전송된 신호들 또는 데이터이다. 저장은 추후 검색(later retrieval)을 위해 정보를 저장하는데 사용될 수 있고; 저장 디바이스들의 예로는 하드 디스크 드라이브 및 비-휘발성 반도체 메모리가 포함된다. 모뎀들 및 네트워크 카드들과 같은 컴퓨터 시스템들 사이의 통신을 위한 디바이스들은 일반적으로 입력 및 출력 모두의 역할을 한다.
프로세서 시스템(10)의 성능 관리 시스템(105)은 개별 태스크들로의 프로세서 성능 자원들의 할당을 제어할 수 있고 프로세서 시스템용이다. 일부 구현들에서, 성능 관리 시스템(105)은 상태 머신에서 실행하는 개별 태스크들로의 상태 머신 성능 자원들의 할당을 제어할 수 있다. 또 다른 구현들에서, 관리 모듈(106)은 태스크 성능 프로파일들을 (예컨대, 정책들/규칙들 등의 집합을 통해) 결정/제어함으로써 자원들의 할당을 제어할 수 있다. 예를 들어, 모든 태스크들로의 성능 자원들의 할당을 제어함으로써, 각각의 태스크에는 처리량(throughput) 및 응답 시간 보장(response time guarantees)이 제공될 수 있다. 또한, 모든 태스크들로의 최소 성능 자원들의 할당에 의해, 프로세서 시스템(10) 및/또는 프로세서 시스템(10)을 통합하는 컴퓨팅 시스템(I/O 서브시스템 모듈(108) 및 시스템 메모리(150) 등을 포함함) 성능 자원들의 프로세서 자원들의 최소량이 사용된다. 하나의 예에서, 성능 자원들의 최소화는 에너지 소비를 낮춰 효율을 높이고, 더 적은/더 작은 물리적 컴퓨터 자원들을 필요로 하므로, 결과적으로 비용을 낮춘다. 또 다른 예에서, 각각의 태스크에 할당된 성능 자원들의 최소화는 프로세서 시스템(10)이 더 큰 용량을 갖는 것을 가능하게 할 수 있어, 시스템에서 더 많은 태스크가 실행하는 것을 가능하게 하는 한편, 더 많은 수의 태스크에게 처리량 및 응답 시간 보장을 비슷하게 제공한다.
태스크들에게는 태스크 성능 파라미터들을 지정하는 성능 프로파일들이 할당될 수 있다. 태스크 성능 파라미터들의 예로는, 이 문서에서 다른 곳에 설명된 바와 같이, 완료될 작업(work to be completed)(We), 시간 간격(Ti), 완료될 최대 작업(Wm), 캐시 점유 및 I/O(입/출력) 대역폭 요구조건들이 포함된다. 시간 간격은, 태스크가 시간(Ti) 내에 작업(We)을 완료할 것으로 예상되는 기한(deadline)을 나타낼 수 있다. 완료될 작업은, 그것이 실행을 위해 스케줄링될 때, 태스크에 의해 수행될 것으로 예상된 작업을 결정할 수 있다. 완료될 최대 작업은, 예를 들어, 예상된 작업의 완료가 연기되는 경우에, 태스크가 축적할 수 있는 최대 작업을 지정할 수 있다. 기한(예상된 작업을 완료하기 위해 태스크에 대해 허용된 최대 시간)처럼 태스크가 실행되어야만 할 때에 영향을 미치기 위해 시간 간격을 사용하는 것과 같이, 스케줄링 결정들에 영향을 미치기 위해 스케줄링 모듈(130)에 의해 시간 간격뿐만 아니라, 다른 성능 파라미터들 또한 사용될 수 있다. 작업 레이트(Wr)는 관계식 Wr = We/Ti를 통해 표현될 수 있다. 하나의 구현에서, 이러한 파라미터들은 태스크 상태에 따라 동적으로 변경될 수 있으므로, 성능 프로파일 파라미터들은 파라미터들의 집합들이고, 여기서 각각의 집합은 하나 이상의 프로그램 상태들과 연관될 수 있고 태스크의 실행 동안 동적으로 변경될 수 있다. 스케줄러 모듈(뿐만 아니라 현 주제와 관련하여 사용될 수 있는 관련된 측면들)의 하나의 예는 미국 특허 출원 공개 2009/0055829 A1에 기술되고, 그 전체 내용은 여기에 참조로 포함된다.
성능 프로파일들은 개별 태스크에 대한 성능 프로파일과 유사한 태스크들의 그룹에 할당될 수 있다. 하나의 구현에서, 그룹의 멤버들이 공통 성능 프로파일을 공유하는 태스크들 및 성능 자원 파라미터들은 그 공통 프로파일로부터 도출될 수 있다.
일부 변형들에서, 성능 파라미터들의 하위 집합(subset)은 그룹 성능 프로파일의 일부일 수 있는 한편 다른 것들은 개별 태스크 성능 프로파일의 일부이다. 예를 들면, 태스크 프로파일은 예상 작업 파라미터들을 포함할 수 있는 한편 태스크는 I/O 대역폭 및 캐시 점유 성능 파라미터들을 공유하는 그룹의 멤버이다. 다수 그룹이 존재할 수 있는데, 태스크들은 공통 및 별도의 성능 프로파일 파라미터들 양측을 지정하는 하나 이상의 그룹의 멤버들이고, 성능 자원 관리자에 의해 이용된 파라미터들은 다양한 성능 프로파일들로부터 (정책들/규칙들의 집합을 통해) 도출된다.
작업은 데이터 이동, 완료된 프로세서 명령어들, 프로세서 시스템(10) 혹은 이미지 프로세서들, 암호화 프로세서들 등과 같은 상태 머신에 의해 수행된 작업의 측정의 다른 의미있는 유닛들의 측정일 수 있다. 이러한 작업이 미세한 단위(fine granularity)로 측정될 수 있으면, 성능 자원들은 비슷하게 미세한 단위로 관리될 수 있다.
프로세서 시스템(10)은 시스템 메모리(150)에 저장된 명령어들을 실행할 수 있는데, 명령어들의 대부분은 시스템 메모리(150)에 저장된 데이터에서 동작한다. 명령어들은 이 문서 전체에 걸쳐 명령어들의 집합 또는 프로그램 명령어들로 지칭될 수 있다. 시스템 메모리(150)는 컴퓨터 시스템에 물리적으로 배포될 수 있다. 명령어 캐시(104)는 시스템 메모리(150)로부터의 명령어들을 일시적으로 저장할 수 있다. 명령어 캐시(104)는 시스템 메모리(150)와 프로세서 시스템(10) 사이에서 버퍼 메모리의 역할을 할 수 있다. 명령어들이 실행될 때, 그들은 일반적으로 시스템 메모리(150)로부터 검색되고 명령어 캐시(104)로 복사된다. 동일한 명령어 또는 명령어들의 그룹이 프로그램 명령어들의 집합에 자주 사용되는 경우, 시스템 메모리 액세스들이 제거되므로, 명령어 캐시(104) 내의 이러한 명령어들의 저장은 처리량에 있어서의 증가를 산출할 수 있다.
인출/분기 유닛(fetch/branch unit)(115)은 명령어 캐시(104)에 연결될 수 있고, 명령어 캐시(104) 내에 저장하기 위해 시스템 메모리(150)로부터 명령어들을 검색하도록 구성될 수 있다. 명령어 디코드 모듈(125)은 검색된 명령어들을 해석 및 구현할 수 있다. 하나의 구현에서, 디코드 모듈(125)은, 프로세서 시스템(10)의 다른 부분들에 대해 의미(significance)를 갖는 부분들로 명령어들을 브레이크다운할 수 있다. 실행 유닛(135)은, 명령어들에 의해 요구되는 액션들을 수행하기 위해, 디코딩된 정보를, 제어 신호들의 순서에 따라, 예를 들어, 프로세서 시스템(10)의 관련 있는 기능 유닛들로 패스할 수 있다. 실행 유닛은 레지스터 파일들 및 ALU(Arithmetic Logic Unit)을 포함할 수 있다. 명령어들에 의해 요구되는 액션들은 레지스터들로부터 값들을 판독하는 것, 그들을 모두 더하기 위해 그 값들을 ALU(도시되지 않음)로 패스하는 것, 및 그 결과를 레지스터에 기록하는 것을 포함할 수 있다. 실행 유닛(135)은 데이터 캐시(145)로의 액세스를 수행하도록 구성되는 로드/저장 유닛(140)을 포함할 수 있다. 다른 구현들에서, 로드/저장 유닛(140)은 실행 유닛(135)에 독립적일 수 있다. 데이터 캐시(145)는 고속 저장 디바이스, 예를 들어, 시스템 메모리(150)로부터 최근에 액세스된 데이터 아이템들을 포함하는, 예를 들어, 랜덤-액세스 메모리일 수 있다. 하나의 구현에서, 데이터 캐시(145)는 명령어 캐시(104)에 독립적으로 액세스될 수 있다.
도 2는 미터링 모듈(110)의 블록도이다. 설명을 목적으로, 도 2는 도 1을 참조하여 논의될 것이다. 미터링 모듈(110)는 현재 실행중인 태스크(들)에 의해 수행된 작업 또는 완료된 작업의 양을 측정할 수 있다. 하나의 구현에서, 미터링 모듈(110)은 태스크에 대해 완료된 작업의 양에 관련된 모니터링된 값을 결정하기 위해 태스크의 실행을 모니터링할 수 있다. 완료된 작업의 양에 관련된 모니터링된 값은 완료된 작업의 실제 량, 카운터 값(counter value) 또는 완료된 작업의 양에 비례하거나 그에 관련된 것일 수 있다.
일반적으로, 미터링 모듈(110)의 하나의 구현은 완료된 작업 모듈(work completed module; 210)(Wc), 완료될 작업 모듈(work to be completed module; 220)(We), 비교기 모듈(230), 및 가산기 모듈(240)을 포함할 수 있다. 완료된 작업 모듈(210)은 완료된 작업 카운터일 수 있고, 완료될 작업 모듈(220)은 또한 완료될 작업 카운터일 수 있다. 완료될 작업 카운터는 시간의 경과를 설명하기 위해 작업 레이트에 기초하여 업데이트될 수 있다. 완료될 작업은, 예를 들어, 성능 자원 관리자에게 태스크 선택을 통지하는 스케줄러 모듈(130)에 의해 프로세서 시스템에서 실행하기 위한 태스크가 선택될 때, 성능 자원 관리자에 의해 산출될 수 있다.
미터링 모듈(110)은 프로세서 시스템(10)에서 현재 실행중인 태스크에 의해 완료된 작업을 측정 및 모니터링할 수 있다. 하나 이상의 태스크는 프로세서 시스템(10)(예컨대, 동시 또는 의사-동시 멀티-스레딩, 멀티 프로세서 등을 채용하는 프로세서(들))에서 구현될 수 있다. 하나의 구현에서, 도 1에서 화살표(170)로 도시된 바와 같이, 완료된 작업의 모니터링된 값 또는 완료된 작업의 양에 관한 정보는 완료된 명령어들의 양에 의해 측정될 수 있고, 명령어 인출/분기 유닛(115)로부터 획득될 수 있다. 도 1에서 화살표(165)에 의해 도시된 바와 같이, 모니터링된 값은 또한 메모리 동작들을 통해 전송된 데이터의 양에 의해 측정될 수 있고, 로드/저장 유닛(140)으로부터 획득될 수 있다. 미터링 모듈(110)은, 메모리 동작들(대역폭)을 모니터링하는데 사용될 때, 단지 어떤 주소(이를테면, 비디오 프레임 버퍼)로/로부터의 메모리 동작들을 설명하도록 구성될 수 있다. 이 구성은, 태스크 단위로(on task-by-task basis)(태스크 컨텍스트 또는 태스크 성능 프로파일의 구성 정보 부분에 따라) 달라질 수 있다. 일부 구현들에서, 컴퓨터 시스템 구현의 특정 상세들에 의존하는 명령어 완료 및 메모리 동작들을 위한 별도의 미터링 모듈(110)이 존재할 수 있다. 이러한 미터링 모듈들은 단일 미터링 모듈(110)과 비슷할 것이다. 일부 처리 모듈들(10)이 동시에 다수의 태스크들(스레드들)을 처리하면, 완료된 명령어들 정보는 스레드가 어떤 명령어들을 완료했는지와 같은 정보를 포함할 수 있다(일반적으로 스레드 또는 프로세스 또는 태스크 식별자(들)로 정보를 태그함으로써). 메모리 동작들 정보는, 이러한 동작들을 정확한 태스크에 연관시키기 위해 미터링 모듈(110)을 위해 적절히 이러한 스레드 식별자를 비슷하게 포함할 수 있다. 중앙 처리 유닛, 프로세서, 마이크로프로세서, 프로세서 코어 등 중 하나 이상을 포함하는 처리 모듈들(10)은 각각의 그러한 프로세서에 대해 복수의 미터링 모듈(110)을 포함할 수 있다.
수행된 작업 또는 완료된 작업(Wc)에 관련된 모니터링된 값은, 메모리로의 액세스들, 완료된 명령어들, 및/또는 현재 실행중인 태스크(들)에 의한 작업의 의미있는 측정치들인 다른 측정가능한 양들을 카운트함으로써 측정될 수 있다. 모니터링된 값, 예를 들어, 액세스의 크기를 포함할 수 있는, 메모리로의 액세스들의 수는 가산기 모듈(240)에서 수신될 수 있는데, 여기서 그들은 더해지고(summed) 완료된 작업 모듈(210)에게 제공된다. 모니터링된 값은 또한, 도 1에서 화살표(165)에 의해 도시된 바와 같이, 로드/저장 유닛(140)으로부터 획득될 수 있는 메모리 동작들에 의해 측정될 수 있다. 완료될 작업 모듈(220)은 완료될 작업의 양에 관련된 파라미터 값(We)을 수신할 수 있다. 완료될 작업의 양 및/또는 작업 레이트에 관련된 파라미터 값은 태스크의 태스크 성능 프로파일에 저장되어 있는 미리 결정된 값일 수 있다. 완료될 작업 파라미터 값은 완료될 작업의 실제량, 카운터 값, 또는 완료될 작업의 양에 비례하거나 그와 관련되는 것일 수 있다. 파라미터 값은 상수 파라미터(constant parameter)일 수도 있고, 또는, 예를 들어, 작업 레이트와 시간의 경과를 곱함으로써 태스크가 실행되기를 대기하는 시간을 설명하기 위해 산출될 수 있는 작업 신용도(work credit)를 포함하도록 작업 레이트로부터 산출될 수 있다. 작업 신용도는 또한 태스크가 실행중인 동안에도 작업 레이트에서 시간의 경과에 따라 수행될 작업이 증가하도록 지속적으로 또는 정기적으로 산출될 수 있다. 수행될 작업의 산출은 최대 작업 파라미터보다 더 크지 않도록 제한될 수 있다. 하나의 구현에서, 파라미터 값들은 컴퓨터 시스템에 태스크를 매핑하는 프로세스 동안 관리 모듈(106)에 의해 미리 결정될 수 있다.
완료된 작업은 비교기 모듈(230)에 의해 완료될 작업과 비교될 수 있다. 이러한 비교의 결과, 진행 오류는 완료된 작업과 완료될 작업 사이의 차이 및/또는 비교에 있어서 시간을 포함함으로써 작업 완료 레이트와 완료될 작업 레이트(예상된 작업 레이트) 사이의 차이를 나타내는 값일 수 있다. 하나의 구현은, 예상된 실행시간(runtime) 내에, 완료될 것으로 예상된 작업을 달성하는 태스크에 기초하여 진행 오류를 산출할 수 있다. 예를 들어, 오류는 관계식: 진행 오류 = (qt/Qi)*We-Wc에 의해 산출될 수 있는데; 여기서, qt는 태스크가 실행을 시작한 이후에 경과된 시간이고, Qi는 완료될 작업을 완료하기 위한 예상된 시간이며; 이들은 프로세서 및/또는 컴퓨터 시스템 상태, 이를테면, 프로세서 시스템 클록 주파수에 의존적일 수 있다. 부정적인 진행 오류는, 상기 관계식의 예에 있어서, 경과된 시간(qt)에서 작업 완료가 예상된 작업보다 더 많다는 것을 나타낼 수 있다. 진행 오류는, 이 문서에서 다른 곳에 설명된 바와 같이, 태스크들로의 성능 관련 자원들의 할당을 할당 또는 조정하는데 사용될 수 있다.
미터 모듈들의 하나 이상의 인스턴스들은, 미터 모듈이 측정할 수 있는 양들(quantities); 메모리 액세스들 또는 캐시 미스 발생들(cache miss occurrences)(즉, 버퍼에서 데이터의 한 피스(a piece of data)를 판독 또는 기록하려는 시도들을 실패하면, 결과적으로 주 메모리 액세스 등을 초래함)에 의해, 예를 들면, 이러한 양들을 측정(metering)하고 그들을 미리 산출된 파라미터들과 비교하는 것에 의해, 태스크의 진행이 (직접적으로 또는 간접적으로) 제한되는지를 여부를 결정하는데 사용될 수 있다. 하나의 구현에서, 진행 제한 측정은, Wc 모듈(210)에서 누적된 측정 양(accumulated metered quantity)과 비교될 값을 미터 모듈 인스턴스인 We 모듈(220)에 제공함으로써 달성될 수 있다. 모듈(220)에 제공된 값은 진행 제한 파라미터로 간주될 수 있다. 비교기 펑션은 그 다음, 시간에 대한 비교를 포함하는, 두 개의 값을 비교하여, 진행이 측정된 양에 의해 제한, 예를 들어, 어떤 캐시 미스 레이트 또는 메모리 액세스 레이트에 의해 제한되는지 여부를 결정할 수 있다. 결과는 진행 오류로서 표현될 수 있다(이 결과는 완료된 작업을 완료될 작업과 비교하는 것으로부터 발생하는 주요 진행 오류와는 다르다는 것에 유의한다). 진행 제한 오류 값들은, 이 문서에서 다른 곳에 설명된 바와 같이, 태스크들로의 성능 관련 자원들의 할당을 할당 또는 조정하는데 사용될 수 있다. 진행 제한 파라미터들은 태스크의 성능 프로파일의 일부일 수 있다.
태스크가 프로세서 시스템에서 실행 중이었던 이전 및 현재 시간들로부터의, 진행 오류 및 진행 제한 오류 값들의 이력은, 이 문서에서 다른 곳에 상세히 설명된 바와 같이, 태스크들로의 성능 관련 자원들의 할당을 할당 또는 조정하는데 사용될 수 있다. 이 값들은, 예를 들어, 누적된 진행 및 진행 제한 오류 값들로서 또는 일련의 현재 및 과거 값들(태스크의 성능 프로파일의 일부일 수 있는)로서 표현될 수 있다.
적응형 클록 관리자 모듈(320)은, 클록 제어 모듈(180)을 통해, 프로세서 시스템(10)의 요구되는 클록 속도를 결정 및 클록 레이트를 설정함으로써, 프로세서 시스템의 클록 속도(들)를 관리할 수 있다. 프로세서 시스템의 클록 속도(들)는 컴퓨터 시스템에서 태스크들의 총 클록 요구 레이트(aggregate clock demand rate)를 산출함으로써 결정될 수 있다. 고려되는 모든 태스크들의 누적된 요구 레이트(cumulated demand rate)를 나타내는, 총 클록 요구 레이트(Ard)는 SUMi = Tasks{Trd[i]} + Ro와 동일할 수 있고, 여기서, Trd[i]는 태스크 i에 대한 태스크 요구 레이트이고, Ro는 개별 태스크의 요구 레이트들에서 설명되지 않는 프로세서/시스템의 오버헤드 요구 레이트이다. 태스크 요구 레이트는, 시간 간격 또는 기한(Ti) 내에, 그의 예상된 작업(We)을 완료하기 위한 태스크(i)에 대한 클록 레이트 요구를 나타낼 수 있다. 하나의 구현에서, 총 요구 레이트는 레디 투 런 태스크들(ready-to-run tasks)로부터의 요구 레이트들을 포함할 수 있는 한편, 다른 구현들에서, 요구 레이트는 레디 투 런이 아닌 태스크들로부터의 추정된 요구 레이트들을 포함할 수 있어, 이러한 태스크들이 레디 투 런일 때를 산출 및/또는 추측할 수 있다.
오버헤드 요구 레이트는 상수 파라미터일 수 있고, 또는 시스템 상태에 의존할 수 있어, 오버헤드 요구 레이트에 대한 하나 이상의 값들이 시스템 상태에 의존하여 선택된다. 일부 구현들에 대해, 오버헤드 요구 레이트는 태스크 요구 레이트에 포함될 수 있다(그 다음, 태스크 대신 프로세서 시스템 오버헤드 활동(activity)을 포함할 수 있다). 하나의 구현에서, 오버헤드 요구 레이트는 컴퓨터 시스템에 태스크를 매핑하는 프로세스 동안 관리 모듈(106)에 의해 미리 결정될 수 있다.
태스크(i)가 실행중인 동안 프로세서 시스템의 클록 주파수 F가 일정한 경우에, 태스크 요구 레이트는 주파수와 예상된 실행 시간의 곱을 시간 간격으로 나눔으로써; Trd[i] = (F*Qi)/Ti로 산출될 수 있는데, 여기서, F는 태스크들의 예상된 실행 시간(Qi) 동안 실제 클록 레이트이고, Ti는 시간 간격 또는 기한이다. 예상된 실행 시간은 예상된 작업을 완료하기 위해 태스크에 대해 예상된 시간이고, 태스크의 성능 프로파일의 일부일 수 있다. 일반적으로, 예상된 실행 시간은 (프로세서 시스템에서 실행 중인) 태스크의 이전 실행들로부터 도출될 수 있고, 완료될 태스크의 예상된 작업에 대한 누적 시간의 측정일 수 있다. 추가로, 예상된 실행 시간은 일반적으로 프로세서 시스템 주파수에 의존적이다. 태스크의 요구 레이트는 그의 시간 간격 또는 기한(Ti) 이내에 그의 예상된 작업을 완료하기 위한 태스크에 대한 최소 클록 레이트일 수 있다. 프로세서 시스템의 주파수가 태스크들의 실행 동안 변경되는(예를 들면, 총 클록 요구 레이트가 변경되므로) 또 다른 구현에서, 태스크 요구 레이트는 SUMj = FrequencyChanges{(F[j]*Qi[j])/Ti}로서 산출될 수 있고, 여기서, 예상된 실행 시간은 세그먼트들로, 즉, 각각의 주파수(변경) 서브-간격에 대해 하나씩 분할된다. 태스크 요구 레이트는 태스크의 성능 프로파일의 일부일 수 있다.
하나의 구현에서, 클록 관리자 모듈(320)은 총 요구 레이트(Ard)에 관련된 클록 주파수에서 프로세서 실행을 요청할 수 있어, 이 문서에서 다른 곳에서 기술하는 어떤 의존성들에 따라 Ard의 값이 변경될 때 이러한 요청들을 만든다. 실제 시스템은 단지 별개의(discrete) 프로세서 및 시스템 클록 주파수들의 집합을 지원할 수 있고, 이러한 경우에, 시스템은, 프로세서 시스템 주파수가 총 요구 레이트 위에 있거나 그와 동일하도록, 지원된 주파수로 설정된다. 일부 프로세서 시스템들에서, 클록 스위칭 시간을 설명하기 위해 요청된 클록 레이트가 조정될 수 있는 경우에, 클록 주파수를 변경하기 위해 다수의 클록 사이클들이 필요로 될 수 있다.
각각의 태스크의 실행 동안, 진행 오류 및/또는 진행 제한 오류들이 모니터링될 수 있고, 태스크 요구 레이트는 이러한 값들 중 하나 이상에 기초하여, 예를 들어, 주기적인 간격으로 업데이트된다. 하나의 구현에서, 업데이트된 태스크 요구 레이트는 결과적으로, 이 문서의 다른 곳에서 기술된 바와 같이, 프로세서 시스템의 클록을 변경시킬 수 있는 새로운 총 요구 레이트를 야기한다. 진행 오류 및 진행 제한 오류들은, 직접적으로 또는 적응형 클록 관리자 모듈(320)에 의해 구현된 하나 이상의 레이트 적응 펑션들을 통해, 요구 레이트를 조정하는데 사용될 수 있다. 예를 들어, 하나의 레이트 적응 펑션은, 오류가 어떤 제한들보다 더 큰 경우에 태스크 요구 레이트를 조정할 수 있는 반면, 또 다른 적응 펑션은 오류가 어떤 시간 기간보다 더 오래 지속되어야 요구 레이트를 변경할 수 있다. 레이트 적응 펑션(들)은 태스크에 있어서의 신속한 변경들 및/또는 총 요구 레이트들을 약화시키는데 사용될 수 있는데 이는 특정한 프로세서 시스템들에서 바람직하지 않을 수 있고 및/또는 어떤 태스크들로부터 발생하는 것이며, 시스템에 의존적 및/또는 태스크에 의존적일 수 있다. 레이트 적응 펑션들은 태스크의 성능 프로파일의 일부일 수 있다.
적응형 클록 관리자 모듈(320)은 그들의 예상된 시간에 그들의 예상된 작업을 충족하는 태스크들을 설명하기 위해 개별 태스크 요구 레이트들을 조정함으로써 총 요구 레이트를 조정할 수 있다. 또 다른 변형에서, 프로세서 클록 주파수는, 진행 오류 및 진행 제한 오류 값들로부터 발생하는 양측 조정들과는 별개로 개별 태스크 요구 레이트들을 조정하면서, 총 요구 레이트에 대해 조정될 수 있다. 따라서, 프로세서 클록 주파수, 총 요구 레이트, 및 개별 태스크 요구 레이트들은, 고려되는 모든 태스크들의 완료된 것으로 예상된 작업 내지 그들의 완료될 작업의 총 합을 폐루프 형태에 매치하도록 조정될 수 있다.
요구 레이트 조정들은, 오버헤드 요구 레이트가 개별 태스크들 요구 레이트들에 포함되는 것을 허용할 수 있고 따라서 선택적 파라미터(optional parameter)일 수 있다.
최소 및 최대 임계값 파라미터들은 태스크 요구 레이트와 연관될 수 있다. 이러한 최소 및 최대 임계값 파라미터들은 진행 오류 및 진행 제한 오류와 관련이 있을 수 있고, 최소 및/또는 최대 태스크 요구 레이트를 제한하는데 사용될 수 있다. 또 다른 구현에서, 임계값들은, 태스크의 실행 동안 선택된 최소 및 최대 프로세서 클록 주파수를 제한할 수 있다. 최소 및 최대 임계값 파라미터들은 태스크의 성능 프로파일의 일부일 수 있다.
적응형 클록 관리자 모듈(320)은, 프로세서 클록 주파수를 더 높게 조정하는 것이 작업 완료된 레이트를 증가시키지 않을 때를 검출할 수 있고, 요청된 클록 레이트는, 완료된 작업의 레이트를 불리하게(adversely) 감소시키지 않더라도 아래로 조정될 수 있다. 이러한 조건은, 예를 들어, 프로세서 주파수가 변경되는 경우에 진행 오류에 있어서, 변화, 또는 그것의 결여를 관찰함으로써, 검출될 수 있다. 클록 관리자 모듈(320)은, 클록 주파수를 더 높게 증가시키는 것이 작업 완료된 레이트를 증가시키지 않도록, 태스크의 상태가 변경될 때 요청된 클록 레이트를 더 높게 조정할 수 있다. 이러한 검출은, 진행 오류가 어떤 임계값 기준을 충족하도록 프로세서 클록 주파수를 설정함으로써 달성될 수 있고, 오류가 어떤 임계값 아래로 떨어질 때, 진행 오류에 있어서의 감소에 의해 더 큰 진행이 나타나는 경우, 클록 주파수는 더 높게 조정될 수 있다. 진행 오류 및/또는 진행 제한 오류를 포함할 수 있는 어떤 속도 적응 펑션(들)은, 프로세서 클록 주파수를 계산하는데 사용될 수 있다. 이러한 레이트 적응 펑션들은 시스템 및/또는 태스크에 의존적일 수 있고, 태스크 성능 프로파일의 일부일 수 있다.
태스크 요구 레이트, 레이트 적응 파라미터들, 진행 제한 파라미터들 및/또는 임계값들 등은 태스크 상태에 따라 동적으로 변경될 수 있으므로, 성능 프로파일 파라미터들은 파라미터들의 집합들이며, 여기서 각각의 집합은 하나 이상의 프로그램 상태들과 연관될 수 있고, 관리 모듈(106)에 의해 태스크의 실행 동안 동적으로 변경될 수 있다. 추가로 또는 대안적으로, 이러한 태스크 요구 레이트, 레이트 적응 파라미터들, 진행 제한 파라미터들 및/또는 임계값들 등은 (관리 모듈(106) 보다는 오히려) 태스크에 의해 직접 조정될 수 있다.
태스크의 요구 레이트는, 태스크가 (예컨대, 스케줄링 또는 I/O 동작들에서 차단해제되는 것과 같은 다른 이벤트들 등에 기초하여) 스케줄러 모듈(130)에 의해 또는 I/O 서브시스템과 같은 다른 서브시스템들에 의해 결정될 수 있는 레디 투 런이 될 때, 총 요구 레이트에 추가될 수 있다. 이 요구 레이트는 초기에 태스크 성능 프로파일에 의해 지정 또는 그로부터 산출될 수 있고, 예를 들어, 시간이 지남에 따른 태스크의 작업 완료 진행에 기초하여 업데이트될 수 있고, 진행 오류의 펑션과 같은 레이트 적응 펑션을 통해 업데이트될 수 있다. 성능 프로파일은 하나 이상의 태스크 상태에 의존적인 성능 파라미터들을 포함할 수 있다. 이러한 경우에, 이러한 파라미터들이 태스크 상태 또는 시스템 상태 변경으로 인해 변경될 때 태스크 요구 레이트가 업데이트될 수 있고, 태스크가 (성능 프로파일 파라미터들의 산출에 진행 오류 및/또는 진행 제한 오류를 사용하여) 레이트 오류 적응을 통해 프로세서 시스템에서 실행 중인 동안 더 업데이트될 수 있다.
(예컨대, 스케줄링 또는 I/O 동작들에서 차단되는 것과 같은 다른 이벤트들 등에 기초하여) 태스크가 실행가능하지 않게(non-runnable) 되는 경우에, 총 요구 레이트는 개별 태스크 요구 레이트들로부터 재산출될 수 있다. 각각의 개별 태스크 요구 레이트를 산출하는 것에 비해 오버헤드 요구조건들을 줄일 수 있는 또 다른 구현에서, 새로운 총 요구 레이트는, 시간 간격의 끝(end) 또는 현재 실행(예상된 작업이 완료된 때) 중 더 늦은 때에 태스크의 누적 요구 레이트를 빼고, 미래의 특정 시간에 어떤 정보를 제시하는 캘린더 큐(calendar queue)와 같은 시간-기반 큐잉 시스템(time-based queuing system)에 누적 요구 레이트를 배치시킴으로써 산출될 수 있다. 이 구현은, 태스크 레이트가 처음 추가되는 시간부터, 그의 시간 간격의 끝 또는 그의 실행 완료 중 더 늦은 때까지, 총 요구 레이트 내에 태스크의 요구 레이트를 보유한다(reserve).
적응형 클록 관리자 모듈(320)은 캘린더 큐, 예를 들어, 캘린더 큐 엔트리(Calendar Queue Entry) 1을 사용할 수 있다(다른 캘린더 큐 기술들이 사용될 수 있다). 적응형 클록 관리자 모듈(320)은, 태스크의 누적 클록 요구 레이트를, 미래에 위치 Ti-Rt(시간 간격으로부터 현재 실시간(Rt)까지의 차이) 유닛들(예를 들어 캘린더 큐 엔트리 N-1 하의 태스크들)에 삽입할 수 있다. 캘린더 큐는 유한 사이즈이므로, 인덱스는 MAX(Ti-Rt, MAX_CALENDAR_SIZE-1)로서 산출될 수 있고, 여기서, MAX_CALENDAR_SIZE(N)은 캘린더 큐의 불연속 시간 엔트리들(discrete time entries)의 수이다. 현재 실시간(Rt)이 비어있지 않은 캘린더 위치로 진전할 때, 클록 관리자 모듈(320)은 총 요구 레이트로부터 Ti=Rt에 대한 해당 위치에서 각각의 태스크의 누적된 클록 요구 레이트를 뺄 수 있다. 이는 도 4에 도시된 캘린더 큐 엔트리 0에서 Ti=Rt일 때 발생한다. 인덱스는 현재 시간 또는 실시간으로부터 미래에 시간 관련 값을 나타낼 수 있다. Ti>Rt인 태스크는 어떤 임계값 내에 있는 캘린더 큐로 재삽입될 수 있다. 임계값 및 캘린더의 크기는 시스템 설계, 실시간 클록의 정밀도, 및 원하는 시간 단위에 의존할 수 있다. 캘린더 큐는, 실시간이 진전하는 경우에, 이전의 현재 시간 엔트리는 캘린더 큐에서 최종 엔트리가 되는 것과 같은 원형 큐(circular queue)일 수 있다. 도 4의 예(400)에서, 실시간이 엔트리 1로 진전할 때, 엔트리 0은 가장 오래된 큐 엔트리가 된다. 인덱스는 캘린더가 원형 큐에 있다는 사실을 고려할 수 있다. 실시간이 진전함에 따라 현재 시간 인덱스는 0에서 N-1로 진전할 수 있다. 따라서, 포인트 N-1에서, 현재 시간 인덱스는 0으로 랩백(wrap back)한다.
적응형 클록 관리자 모듈(320)은 추가로 프로세서 시스템의 유휴 상태로의 진입 및 그로부터 재개하는 것을 관리할 수 있다. 총 클록 요구가 0이면, 클록 관리자 모듈(320)은, 총 클록 레이트가 0인 시간/0보다 더 크게 될 시간까지 프로세서 시스템을 유휴 상태로 배치할 수 있다. 일부 프로세서 시스템들에서, 다수의 클록사이클들은 유휴 상태로 진입 및 그로부터 재개하는 것이 필요로 될 수 있고, 이러한 경우에, 활성 상태의 재개시 요청된 클록 레이트는 물론 유휴 상태로 진입 및 그로부터 재개하는 시간은 유휴 진입 및 재개 시간(뿐만 아니라 클록 스위칭 시간)을 설명하기 위해 조정될 수 있다.
클록 관리자 모듈(320)은 또한, 총 요구 레이트의 위에 있거나 그와 동일한 주파수를 요청하고, 평균 주파수(유휴 시간이 0의 주파수를 갖는 것으로 간주)가 총 요구 레이트와 동일하거나 그보다 더 크도록 프로세서 시스템을 유휴 상태에 배치함으로써, 시간 기간이 지남에 따른, 어떤 총 요구 레이트들을 달성할 수 있다. 프로세서 시스템(10)이 더 높은 주파수에서 실행하는 더 높은 에너지 효율을 갖는 구현들에서, 그 다음에, 어떤 총 요구 레이트들을 만족하기 위해 유휴 상태에 배치된다. 일부 구현들에서, 요청된 레이트는, 처리 시스템을 유휴 상태에 바이어스 배치하기 위해 산출된 총 요구 레이트보다 더 높게 되도록 적응될 수 있다.
주파수 및 유휴 상태 선택이 그로부터 실시되는 파라미터들은, 컴퓨터 시스템에 태스크(들)를 매핑하는 프로세스 동안 관리 모듈(106)에 의해 프로세서 시스템을 특징짓는 것으로부터 도출될 수 있다.
적응형 클록 관리 모듈은, 프로세서 시스템을 유휴 상태에 놓이게 하기 위해 유휴 상태 모듈(184)에 신호를 공급(signaling)함으로써 프로세서 시스템이 유휴 상태에 진입하도록 요청할 수 있다. I/O 디바이스 또는 타이머 등으로부터의 간섭(interrupt)과 같은 이벤트가 발생할 때, 유휴 상태에서 나갈 수 있다.
멀티프로세서 시스템들에서, 총 요구 레이트는 각각의 프로세서에 대해 개별적으로, 또는 모든 프로세서 혹은 프로세서들의 하위 집합 혹은 이들의 조합에 대해 집합적으로 산출될 수 있다. 일부 태스크들은 어떤 프로세서들에 할당될 수 있는 한편, 다른 것들은 프로세서들 중 임의의 것 또는 그들의 어떤 집합에서 자유롭게 실행할 수 있다. 총 요구 레이트는, 특정한 프로세서에 태스크를 실행하는 것이 바람직한 친화성 속성(affinity property)을 포함하는 어떤 프로세서에서 실행해야 하는 각각의 태스크의 제약들(restrictions) 및 자유들(freedoms)을 관찰하는 모든 프로세서들에 대해 산출될 수 있다.
멀티프로세서 시스템의 하나의 구현에서, 각각의 프로세서 클록 레이트 및 유휴 상태는 개별적으로 제어될 수 있다. 이러한 경우에, 클록 관리자 모듈(320)은 최소 에너지를 달성하기 위해 하나 이상의 프로세서를 유휴 상태에 두는 동안 클록 레이트들의 조합을 선택할 수 있다. 클록 레이트들이 개별적으로 조정될 수 없는; 그러나 유휴 상태들이 존재할 수 있는 경우에, 최소 에너지 소비를 달성하기 위해 하나 이상의 프로세서를 유휴 상태에 두는 동안 단일 클록 레이트가 선택될 수 있다. 멀티프로세서 시스템의 또 다른 구현에서, 클록 레이트는, 프로세서들 모두 또는 프로세서들의 복수의 하위 집합에 대한 총 요구 레이트가 프로세서들 사이에서 분할되어, 어떤 원하는 목표들, 이를테면, 처리량을 최대화하는 것 또는 태스크들의 태스크 완료 시간들을 개별적으로 최소화하는 것 또는 복수의 태스크에 의해 수행된 병렬 산출들을 달성하도록, 선택될 수 있다. (어느 프로세서에 어느 태스크(들)가 실행하는지에 대한 결정에서) 스케줄러 모듈(130)과의 상호작용은 원하는 목표들을 달성하기 위해 필수적일 수 있다.
클록 모듈(180) 및 유휴 상태 모듈(184)은, 도면에는 도시되지 않았지만, 다른 컴퓨터 시스템 컴포넌트들과 상호작용할 수 있다. 이러한 상호작용들은 하나 이상의 프로세서의 클록 속도(들) 또는 유휴 상태(들)의 변경을 가능하게 하는데 필수적일 수 있다. 예를 들어, 프로세서 주파수의 변경은 버스들, 주변기기들의 클록 속도, 시스템 메모리(150)의 클록 속도 등의 변경을 필요로 할 수 있다. 마찬가지로, 프로세서를 유휴 상태에 또는 그로부터의 재개에 배치하기 위해, 어떤 버스들, 주변기기들, 시스템 메모리(150) 등은, 그러한 상태에 진입(이를테면, I/O 디바이스의 개입 중단(quiescing) 및 그의 버퍼들을 시스템 메모리에 기록)하거나 활성 상태가 재개(이를테면, 시작(commence) 동작(들)로 I/O 디바이스를 개시)되기 전에 준비를 필요로 할 수 있다.
캐시 점유 관리 모듈(340)은 버퍼 또는 캐시 점유 할당(buffer or cache occupancy quotas)의 사용을 관리할 수 있다. 이러한 점유 할당은 태스크가 이용할 수 있는(또는 해야하는) 버퍼의 수에 대한 수적 제한들(numerical limits)일 수 있다. 점유 할당(Oq) 및 현재 점유(Oc)는 태스크의 성능 프로파일에 추가로 저장될 수 있다. 캐시 점유는, 예를 들어, 캐시 교체 알고리즘(cache replacement algorithm)을 사용하여 선택적으로 할당될 수 있는데, 이는 미국 특허 출원 일련 번호 61,341,069를 우선권으로 주장하며, 2011년 3월 25일자로 출원되고 발명의 명칭이 "프로세서 캐시 메모리 점유의 제어(Control of Processor Cache Memory Occupancy)"인 동시 계속 출원 미국 특허 출원 일련 번호 13/072,529에 기술되어 있고, 상기 두 개의 출원들의 내용은 여기에 참조로 포함된다.
이러한 경우에 점유는, 태스크에 의해 이용되는 버퍼의 실제 수의 지표로서 특징이 될 수 있다. 버퍼는 데이터를 일시적으로 보유하기 위해 사용된 메모리 또는 메모리의 영역(이를테면 입/출력 버퍼 캐시)인 한편, 하나의 장소에서 다른 장소로 이동되거나 더 빠른 액세스를 허용한다(이를테면, 프로세서 명령어/데이터 캐시). 버퍼들(또는 캐시 블록들/라인들)이 태스크에 할당되면, 점유 카운터(Oc)는 증가될 수 있고, 버퍼가 태스크에 할당 해제되면, 점유 카운터는 감소될 수 있다. 점유 할당이 점유 카운터보다 클 때마다(Oc> Oq), 태스크는 그것의 점유 할당을 초과한다. 점유 할당을 초과하는 것은, 태스크의 버퍼가 우선적으로 교체되게 할 수 있거나(캐시 블록/라인 교체), 엔티티가 그의 할당을 준수할 때까지(Oc=<Oq) 새로운 버퍼들의 할당을 방지하도록 할 수 있다. 점유 할당이 다수의 할당 파라미터를 포함할 수 있어, 점유를 이러한 추가 할당과 비교하기 위해 더 높은 또는 더 낮은 우선 순위가 주어진다.
태스크의 점유 할당은 그것의 성능 프로파일의 일부일 수 있다. 이 성능 프로파일 파라미터는 정적으로 설정될 수 있고, 프로그램의 상태에 의존적일 수 있고, 또는 캐시 점유 관리자에 의해 동적으로 산출될 수 있다. 동적 점유 할당은, 태스크의 성능, 예를 들어, 그것의 기한을 맞추는지에 기초하여, 그의 실행 동안 캐시 미스 정보(cache miss information)에 기초하여, 또는 이 문서의 다른 곳에 기술된 바와 같이, 진행 오류 및/또는 진행 제한 오류들을 사용하여 완료된 작업과 비교하여 예상된 작업의 관점에서 실행으로부터의 피드백에 기초하여 조정될 수 있다.
캐시 점유 관리자는 점유 할당을 조정할 수 있다. 이러한 조정들은, 예를 들어, 시스템-수준에 따라 구성된 제한들과 태스크의 성능 프로파일에 포함된 제한들의 조합일 수 있는, 미리 정의된/구성된 제한들에 기초한 것일 수 있다. 하나의 구현에서, 점유 할당은 태스크의 예상된 작업 레이트와 완료된 작업 레이트 사이의 차이에 기초하여, 예를 들면 진행 오류, 또는 캐시 미스 레이트, 또는 이 둘의 조합을 사용하여 조정될 수 있다. 이러한 변형에서, 태스크가 그의 예상된 작업 레이트 아래일 때 또는 캐시 미스 레이트가 어떤 임계값 위일 때 점유 할당이 증가될 수 있도록; 반대로, 태스크가 그의 예상된 작업을 초과할 때 또는 캐시 미스 레이트가 어떤 임계값 아래일 때 점유 할당이 감소될 수 있도록, 점유 할당의 산출이 실시될 수 있다. 이러한 산출은 또한, 예를 들어, 진행이 점유 이외의 또 다른 팩터에 의해 제한되고 있다고 검출한 것을 고려하여 진행 제한 오류 값들을 취할 수 있다.
캐시 점유 관리 모듈은, 그들이 점유 할당 제어 메커니즘을 갖는 경우 명령어 캐시(104) 및/또는 데이터 캐시(145)에, 또는 시스템 메모리(150)에 저장된 프로그램과 같이 프로세싱 시스템이나 컴퓨터 시스템의 일부이거나 그에 연결될 수 있는 다른 버퍼/캐싱 컴포넌트들에 할당을 설정함으로써 점유 할당을 제어할 수 있다. 캐시 점유 파라미터들은 태스크(또는 태스크들의 그룹)와 관련된 것일 수 있으므로, 시스템은 태스크에 또는 태스크를 위해서 점유 할당을 할당하고; 아마도, 캐시 점유 관리 모듈 및 각각의 I/O 서브시스템 양측에 의해 이용되는 경우에 태스크를 계속해서 파악(keeping track of)할 것이다. 할당 제어 메커니즘들은 하드웨어 또는 소프트웨어(펌웨어) 또는 양측의 조합으로 구현될 수 있다.
캐시 점유는, 물리적 주소 공간(들)과는 별개일 수 있는 가상 메모리 주소 공간(들)을 태스크들이 사용하는 것을 허용하는 메모리 관리 기술들로서, 가상 메모리를 물리적 메모리에 매핑하는 것을 포함할 수 있다. 물리적 메모리는 사실상, 복수의 태스크가 물리적 메모리를 공유하는 것을 허용하는 캐시의 역할을 하고, 가상 메모리 공간(들)의 전체 크기는 물리적 메모리의 크기 보다 더 클 수도 있고, 또는 하나 이상의 태스크에 할당된 물리적 메모리보다 더 클 수도 있으므로, 물리적 메모리 및/또는 그의 일부는 "캐시"의 역할을 한다. 태스크의 물리적 메모리 점유는, 이 문서의 다른 곳에서 기술되는 바와 같이, 관리될 수 있다. 관리 모듈은 106과 같이 별도의 모듈일 수 있고, 또는 하나 이상의 운영 체제, 가상 머신 모니터 등의 필수 부분일 수 있다.
다수의 캐시 및/또는 버퍼 서브시스템이 존재할 수 있으므로, 태스크의 성능 프로파일에서 사용되고 거기에 저장된 여러 점유 할당 파라미터들이 존재할 수 있다. 이러한 캐시들 및 버퍼들은 하드웨어 또는 소프트웨어(펌웨어) 또는 양측의 조합으로 구현될 수 있다.
태스크의 점유 할당(들)은, 완료된 작업 레이트가 폐루프 형태로 완료된 것으로 예상된 작업 레이트에 매치되도록 수정될 수 있어, 예상된 작업 레이트들이 충족되거나 초과될 때, 점유는 예상된 작업 레이트들을 충족하기 위해 증가 및/또는 감소될 수 있다.
점유 할당(들)의 수정은, 태스크일 수 있고 태스크 상태에 의존적인 것일 수 있는, 레이트 적응 펑션들을 사용할 수 있다.
점유 할당에 대한 작업 우선순위화(prioritization)는, 어떤 더 높은 우선순위의 태스크들이 더 낮은 우선순위의 태스크들을 희생하여(at the expense of) 그들의 예상된 작업을 충족하는 것을 보장하기 위해 사용될 수 있다. 일부 구현들에서, 관리 모듈(106)은, 최대 및 최소 점유 할당 및/또는 점유 할당에 허용된 최대 및 최소 변경들 등을 (예컨대, 정책들/규칙들의 집합을 통해) 결정/제어함으로써 점유 할당들(occupancy quotas)의 전체 할당(overall allocation)을 제어할 수 있다.
I/O 대역폭 관리 모듈(360)은 컴퓨터 시스템의 입력 출력 서브시스템(들)의 대역폭의 이용(이는 단위 시간 당 데이터 이동의 측정이다)을 관리할 수 있다. 태스크들에 의해, 또는 예를 들어 태스크의 I/O 요청(들) 대신 운영 체제에 의해 수행된 I/O 동작들은, I/O 동작들의 태스크들 성능 요구조건들이 충족되는 것을 보장하기 위해, I/O 대역폭 관리자에 의해 성능 자원으로서 관리될 수 있다.
태스크의 I/O 대역폭은 그것의 성능 프로파일의 일부일 수 있다. 이러한 성능은 (예를 들어, 프로그램 상태에 기초하여) 정적으로 설정될 수 있고, 또는 I/O 대역폭 관리자에 의한 것과 같이 동적으로 산출될 수 있다. 동적 I/O 대역폭 값들은, 태스크의 성능, 예를 들어, 그것의 산출된 기한을 충족하는 것, 또는 예상된 작업 레이트 대 완료된 작업 레이트의 관점에서 실행으로부터의 피드백에 기초하여 조정될 수 있다.
I/O 대역폭 관리자는, 시스템-수준에 따라 구성된 제한들과 태스크의 성능 프로파일에 포함된 제한들의 조합일 수 있는 어떤 구성된 제한들 내에서, I/O 대역폭 파라미터들을 조정할 수 있다. I/O 대역폭은, 진행 오류 및/또는 진행 제한 오류 값들, 또는 예상된 I/O 레이트, 또는 이들의 조합을 사용하여 수정될 수 있다. I/O 대역폭 레이트의 산출은, I/O 대역폭이 진행 및/또는 진행 제한 오류 값들 및 임계값에 의존하여 증가 또는 감소될 수 있도록, 실시될 수 있다. 일반적으로, 이러한 값들 및 임계값들은, 불필요하게 I/O 대역폭을 사용하지 않고, 완료된 태스크 작업 레이트를 완료될 작업에 레이트에 매칭하도록 결정될 수 있다. 태스크의 작업은 I/O 대역폭 레이트일 수 있고, 이러한 경우에, 태스크 주요 작업은 어떤 레이트에서 I/O 데이터의 이동이다. 완료된 작업 레이트가 폐쇄 루프 형태로 완료될 작업 레이트에 매치되도록, 태스크의 I/O 대역폭들이 조정될 수 있음에 따라; I/O 대역폭들은, 진행 및 진행 제한 오류들을 고려하여, 예상된 작업 레이트들을 충족하도록 증가될 수 있고 및/또는 예상된 작업 레이트들이 초과되는 중일 때는 감소될 수 있다.
시스템 성능 보장을 제공하기 위한 이러한 방식에서, I/O 자원들은, I/O 대역폭 할당들을 통해 할당될 수 있고, I/O 대역폭 관리자를 통해 관리될 수 있다. 이러한 보장들은, (정책들/규칙들의 집합에 의존하여) 전체 I/O 대역폭이 다 할당되지 않거나 어떤 태스크들이 다른 것들을 희생하여 그들의 I/O 대역폭을 수신하는 것일 수 있다.
I/O 대역폭 관리 모듈은, 존재하는 이러한 대역폭 제어 메커니즘들을 위한 I/O 서브시스템 모듈(108)에, 또는 시스템 메모리(150)에 저장된 프로그램과 같이, 처리 시스템 또는 컴퓨터 시스템의 일부 또는 거기에 연결될 수 있는 다른 I/O 컴포넌트들에, 대역폭 파라미터들을 설정함으로써 I/O 대역폭을 제어할 수 있다. I/O 대역폭 파라미터들은, 시스템이 태스크에 또는 태스크를 위해서 대역폭을 할당하도록, 태스크(또는 태스크들의 그룹)와 관련될 수 있다. 일부 변형들에서, I/O 대역폭 관리 모듈과 각각의 I/O 서브시스템들이 데이터 이동을 특정 태스크의 결과로 볼 수 있도록, I/O 동작들과 연관시키기 위해 태스크 ID를 계속해서 파악하는 것을 포함한다. I/O 대역폭 제어 메커니즘들은 하드웨어 또는 소프트웨어(펌웨어) 또는 양측의 조합으로 구현될 수 있다.
일부 구현들에서는, DMA 컨트롤러들이 사용될 수 있다. 직접 메모리 액세스는, 컴퓨터 내에 있는 어떤 하드웨어 서브시스템들이 중앙 처리 장치에 독립적으로 판독 및/또는 기록하기 위해 시스템 메모리에 액세스하는 것을 허용하는, 현대적인 컴퓨터들 및 마이크로프로세서들의 특징이다. 많은 하드웨어 시스템들은 디스크 드라이브 컨트롤러들, 그래픽 카드들, 네트워크 카드들, 사운드 카드들 및 그래픽 처리 장치(GPU들)를 포함하는 DMA를 사용한다. DMA는 또한 멀티-코어 프로세서들에서, 특히 멀티프로세서 시스템-온-칩들에서 인트라-칩 데이터 전송을 위해 사용될 수 있으며, 여기서, 그의 처리 요소는 로컬 메모리(종종 스크래치패드 메모리(scratchpad memory)로 불림)를 갖추고 있고, DMA는 로컬 메모리와 메인 메모리 사이에서 데이터를 전송하기 위해 사용될 수 있다.
I/O 대역폭 관리자는, 대역폭 성형(bandwidth shaping)을 통해, I/O 동작들에 대역폭 제어 메커니즘을 제공하는 메커니즘들을 통해 I/O 대역폭을 제어할 수 있다. 대역폭 성형은, 전송을 위한 신용도를 축적하기에 충분한 시간이 흐를 때까지(여기서, 신용도는, 대역폭을 대표하는, 어떤 레이트에서 시간이 지남에 따라 축적되는 데이터의 측정임), 어떤 데이터 전송 요청들을 지연함으로써 달성될 수 있다. I/O 동작 또는 DMA를 포함하는 데이터 이동의 대역폭 관리 동작들은 하드웨어로 또는 소프트웨어(또는 펌웨어)에 의해 구현될 수 있다.
다수의 I/O 서브시스템, 또는 서브시스템들의 인스턴스들, 디바이스들 및 인터페이스들이 존재할 수 있고 따라서 태스크의 성능 프로파일에 사용 및 저장된 다수의 I/O 대역폭 파라미터들이 존재할 수 있다. 이러한 I/O 서브시스템들은 하드웨어 또는 소프트웨어(펌웨어) 또는 양측의 조합으로 구현될 수 있다.
I/O 대역폭에 대한 태스크 우선순위화는, 더 낮은 우선순위의 태스크들을 희생하여, 어떤 더 높은 우선순위의 태스크들이 그들의 예상된 작업을 충족하는 것을 보장하기 위해 사용될 수 있다. 또 다른 구현에서, I/O 대역폭 관리 시스템은, 진행 오류 및 진행 제한 오류를 고려하여, 그들의 완료된 작업을 그들의 완료될 작업에 매칭하는 태스크들에 기초하여 I/O 동작 우선순위화를 요청할 수 있다. 이는, 예를 들어, 관심있는 모든 태스크들에 대한 진행 및 진행 제한 오류들을 고려할 수 있으므로, 어떤 진행 제한 오류 값들 내에서 더 큰 진행 오류를 갖는 태스크들은 진행 제한 오류 값들 내에서 더 작은 진행 오류를 갖는 태스크들에 비해 우선순위가 부여된다.
진행 오류 및 진행 제한 오류들은, 직접적으로 또는 I/O 대역폭 관리자에 의해 구현된 하나 이상의 레이트 적응 펑션들을 통해, 태스크의 I/O 대역폭 파라미터들을 조정하는데 사용될 수 있다. 예를 들어, 하나의 레이트 적응 펑션은, 오류가 어떤 한계들보다 더 큰 경우에만 I/O 대역폭을 조정하기 위한 것일 수 있는 한편, 또 다른 적응 펑션은 어떤 시간 시간보다 더 길게 오류가 지속되어야만 요구 레이트를 변경할 수 있다. 레이트 적응 펑션(들)은 시스템에 의존적 및/또는 태스크에 의존적일 수 있다. 레이트 적응 펑션들은 태스크의 성능 프로파일의 일부일 수 있다.
I/O 대역폭에 대한 태스크 우선순위화는, 더 낮은 우선순위의 태스크들을 희생하여, 어떤 더 높은 우선순위의 태스크들이 그들의 예상된 작업을 충족하는 것을 보장하기 위해 사용될 수 있다. 일부 구현들에서, 관리 모듈(106)은, (예컨대, 정책들/규칙들의 집합을 통해) 최대 및 최소 I/O 대역폭 및/또는 대역폭 파라미터들을 결정/제어함으로써 I/O 대역폭의 전체적인 할당을 제어할 수 있다.
스케줄러 모듈(130)은, 태스크 우선순위를 포함하는 태스크 파라미터들에 기초하여 태스크들의 리스트로부터 실행될 다음 태스크(들)를 선택할 수 있다. 스케줄러 모듈(130)은 더 높은 우선순위의 태스크가 프로세서 시스템(10)에 준비되어 있다는 것을 나타낼 수 있다. 프로세서 시스템(10)(또는 프로세서 시스템(10) 상의 소프트웨어)은 현재 실행중인 태스크를 우선적으로(preemptively) 전환하여 더 높은 우선순위의 태스크를 실행하도록 결정할 수 있다. 프로세서 시스템 내의 소프트웨어 또는 스케줄러 모듈(130)은 더 높은 우선순위의 태스크가 실행을 위해 선택될 것임을 나타낼 수 있어, 아마도 현재 실행중인 태스크를 교체할 것이다. 이러한 경우에, 프로세서 시스템(10)에서 현재 실행 중인(currently running) 또는 실행된(executed) 태스크는 또한 성능 자원 관리자(120)에 표시될 수 있다. 이것이 일어날 때, 현재 실행중인 태스크를 위해 사용된 미터링 모듈(들)(110)의 상태는 태스크의 컨텍스트에 저장될 수 있고 미터링 모듈은 성능 자원 관리자에 의해 새롭게 선택된 태스크를 모니터링하도록 지시된다(모듈들(210, 220) 및 미터링 모듈 내에 있는 비교기 펑션(들)을 업데이트함으로써). 성능 자원 관리자에서 추가적인 상태는 이러한 태스크 전환(switching)의 결과와 비슷하게 수정될 수 있다. 멀티-프로세서 시스템에서, 스케줄링은 프로세서별 프로세서단위로(on a processor-by-processor basis) 할당될 수 있으므로, 특정한 프로세서에서 태스크가 그 태스크의 진행 오류들 및/또는 진행 제한 오류들에 의해 영향을 받을 수 있다. 이것은 또한 멀티-스레드 시스템들에 대해 스레드별 스레드단위로(on a thread-by-thread basis) 수행될 수 있다.
도 5는 방법 500을 도시하는 프로세스 순서도로서, 510에서 프로세서 시스템에 의한 복수의 태스크의 실행이 모니터링된다. 모니터링에 기초하여, 520에서, 성능 자원의 조정을 요구하는 태스크들은 각각의 태스크에 대한 진행 오류 및 진행 제한 오류 중 적어도 하나를 산출함으로써 식별된다. 후속하여, 530에서, 각각의 식별된 태스크에 할당된 프로세서 시스템의 성능 자원이 조정된다. 조정은, 예를 들어: 태스크를 실행하는 프로세서 시스템에서 적어도 하나의 프로세서의 클록 레이트를 조정하는 것, 태스크에 의해 이용될 캐시 및/또는 버퍼의 양을 조정하는 것, 및 태스크에 의해 이용될 입/출력(I/O) 대역폭의 양을 조정하는 것 중 하나 이상을 포함할 수 있다.
여기에 기술된 주제의 다양한 구현들은, 디지털 전자 회로, 집적 회로, 특별히 설계된 ASIC들(application specific integrated circuits), 컴퓨터 하드웨어, 펌웨어, 소프트웨어 및/또는 그들의 조합으로 실현될 수 있다. 이러한 다양한 구현들은, 저장 시스템, 적어도 하나의 입력 디바이스, 및 적어도 하나의 출력 디바이스로부터 데이터 및 명령어들을 수신하고, 그들로 데이터 및 명령어들을 전송하기 위해 연결된, 특수 또는 일반 목적일 수 있는, 적어도 하나의 프로그램가능 프로세서를 포함하는 프로그램가능 시스템에서 실행가능 및/또는 해석가능한 하나 이상의 컴퓨터 프로그램들에서의 구현을 포함할 수 있다.
이러한 컴퓨터 프로그램들은(또한 프로그램들, 소프트웨어, 소프트웨어 애플리케이션들 또는 코드로 알려진), 프로그램가능 프로세서를 위한 머신 명령어들을 포함하고, 높은 수준의 절차 및/또는 객체-지향 프로그래밍 언어, 및/또는 어셈블리/머신 언어로 구현될 수 있다. 여기에 사용된 바와 같은, "머신-판독가능 매체(machine-readable medium)"라는 용어는, 머신-판독가능 신호로서 머신 명령어들을 수신하는 머신-판독가능 매체를 포함하는, 프로그램가능 프로세서에 머신 명령어들 및/또는 데이터를 제공하는데 사용된, 임의의 컴퓨터 프로그램 제품, 장치들 및/또는 디바이스(예컨대, 자기 디스크들, 광학 디스크들, 메모리, 프로그램가능 로직 디바이스들(Programmable Logic Devices; PLDs))를 지칭한다. "머신-판독가능 신호(machine-readable signal)"라는 용어는 프로그램가능 프로세서에 머신 명령어들 및/또는 데이터를 제공하는데 사용된 임의의 신호를 지칭한다.
어느 정도의 변형들이 위에서 상세히 설명되었지만, 다른 수정들이 가능하다. 예를 들어, 첨부 도면에 도시되고 여기에 기술된 논리 순서는, 바람직한 결과들을 달성하기 위해, 도시된 특정한 순서 또는 순차적인 순서를 필요로 하지 않는다. 다른 구현들은 다음의 청구항들의 범위 내에 있을 수 있다.

Claims (37)

  1. 프로세서 시스템에 의한 복수의 태스크(task)의 실행을 모니터링하는 단계;
    상기 모니터링에 기초하여, 각각의 태스크에 대한 진행 오류(progress error) 및 진행 제한 오류(progress limit error) 중 적어도 하나를 산출함으로써 성능 자원들(performance resources)의 조정을 요구하는 태스크들을 식별하는 단계; 및
    각각의 식별된 태스크에 할당된 상기 프로세서 시스템의 성능 자원들을 조정하는 단계
    를 포함하고,
    상기 성능 자원들을 조정하는 단계는,
    상기 태스크를 실행하는 상기 프로세서 시스템에서 적어도 하나의 프로세서의 클록 레이트를 조정하는 단계;
    상기 태스크에 의해 이용될 캐시 및/또는 버퍼들의 양을 조정하는 단계; 또는
    상기 태스크에 의해 이용될 입/출력(I/O) 대역폭의 양을 조정하는 단계
    중 하나 이상을 포함하는 방법.
  2. 제1항에 있어서, 상기 진행 오류는 상기 태스크에 의해 완료된 작업(work completed)과 상기 태스크에 의해 완료될 작업(work to be completed) 사이의 차이와 동일한 방법.
  3. 제1항 또는 제2항에 있어서, 상기 진행 제한 오류는 완료된 작업에 대한 작업 완료 레이트(work completion rate)와 상기 태스크의 나머지에 대한 예상된 작업 레이트 사이의 차이와 동일한 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서, 각각의 태스크는, 단일 태스크, 태스크들의 그룹, 스레드, 스레드들의 그룹, 단일 상태 머신, 상태 머신들의 그룹, 단일 가상 머신, 및 가상 머신들의 그룹을 포함하는 그룹으로부터 선택되는 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 프로세서는, 단일 프로세서, 멀티-프로세서, 동시의 멀티-스레딩을 지원하는 프로세서 시스템, 및 멀티-코어 프로세서를 포함하는 그룹으로부터 선택된 시스템을 포함하는 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서, 각각의 태스크는 연관된 실행 우선순위(execution priority) 및 실행 기한(execution deadline)을 갖고, 상기 프로세서 시스템의 상기 성능 자원들은, 각각의 식별된 태스크가, 그의 대응하는 실행 기한까지 그의 대응하는 실행 우선순위에 따라 완료되는 것을 가능하게 하도록 조정되는 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서, 상기 성능 자원들은 태스크 단위로(on task-by-task basis)로 조정되는 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서, 각각의 태스크는, 상기 태스크에 대한 상기 실행 우선순위 및 상기 실행 기한을 설정하기 위해, 스케줄러 모듈에 의해, 사용되는 연관된 성능 프로파일을 갖는 방법.
  9. 제8항에 있어서, 상기 연관된 성능 프로파일은 적어도 하나의 성능 파라미터를 지정하는 방법.
  10. 제9항에 있어서, 상기 성능 파라미터는, 상기 태스크에 의해 이용될 버퍼들의 초기의 최대 및/또는 최소량을 지정하는 캐시 점유 할당(cache occupancy quota)이고, 상기 캐시 점유 할당은 상기 태스크의 실행 동안 동적으로 조정되는 방법.
  11. 제10항에 있어서, 상기 캐시 점유 할당은 상기 태스크에 대한 진행 오류에 기초하여 동적으로 조정되는 방법.
  12. 제10항 또는 제11항에 있어서, 상기 성능 파라미터는 상기 태스크의 상기 실행을 위한 초기의 대역폭 요구조건들(initial bandwidth requirements)을 지정하고, 상기 대역폭 요구조건들은 상기 태스크의 실행 동안 동적으로 조정되는 방법.
  13. 제1항 내지 제12항 중 어느 한 항에 있어서,
    각각의 태스크에 의해 요구되는 프로세서 클록 요구 레이트(processor clock demand rate)를 결정하는 단계; 및
    모든 태스크들에 대한 결정된 프로세서 클록 요구 레이트에 기초하여 총 클록 요구 레이트(aggregate clock demand rate)를 산출하는 단계
    를 더 포함하고,
    프로세서 시스템 클록 레이트는 상기 총 클록 요구 레이트를 수용하도록 조정되는 방법.
  14. 제13항에 있어서, 상기 프로세서 시스템 클록 레이트는 상기 총 클록 요구 레이트 플러스(plus) 오버헤드 요구 레이트(overhead demand rate)로 조정되는 방법.
  15. 제13항 또는 제14항에 있어서, 프로세서 클록 요구 레이트를 결정하는 단계는, 시간 간격(a time interval) 이내로 분할된 상기 태스크의 완료를 위해 예상된 실행 시간과, 현재의 프로세서 시스템 클록 레이트의 곱(product)인 방법.
  16. 제13항 내지 제15항 중 어느 한 항에 있어서, 각각의 태스크에 대한 상기 프로세서 클록 요구 레이트는 상기 태스크의 성능에 영향을 미치는 진행 오류들에 기초하여 업데이트되고, 상기 총 클록 요구 레이트는 각각의 태스크에 대한 업데이트된 프로세서 클록 요구 레이트에 기초하여 업데이트되는 방법.
  17. 제16항에 있어서, 각각의 태스크에 대한 상기 프로세서 클록 요구 레이트 또는 상기 총 클록 요구 레이트의 상기 업데이트는 신속한 레이트 변경들을 약화(dampen) 또는 강화(enhance)하기 위해 적어도 하나의 적응 펑션(adaptation function)을 사용하는 방법.
  18. 제13항 내지 제17항 중 어느 한 항에 있어서, 상기 태스크가 레디 투 런(ready-to-run)일 때, 각각의 태스크에 대한 프로세서 클록 레이트가 상기 총 클록 요구 레이트에 추가되는 방법.
  19. 제13항 내지 제18항 중 어느 한 항에 있어서, 상기 총 클록 요구 레이트는, 때로는, 상기 프로세서 시스템 클록 레이트가 상기 총 클록 요구 레이트보다 더 높도록, 그리고 다른 때에는, 상기 프로세서 시스템 클록 레이트가 상기 총 클록 요구 레이트보다 더 낮도록, 시간 기간(a period of time)에 걸쳐 산출되는 방법.
  20. 제13항 내지 제19항 중 어느 한 항에 있어서, 상기 프로세서 시스템은 적어도 두 개의 프로세서를 포함하며, 상기 총 클록 요구 레이트는, 상기 적어도 두 개의 프로세서 각각에 대해 결정되고, 대응하는 프로세서를 사용하여 실행하는 태스크들에 대한 상기 프로세서의 요구 레이트에 기초한 것이며, 상기 적어도 두 개의 프로세서 각각에 대한 클록 레이트는 별도로(separately) 및 그에 따라(accordingly) 조정되는 방법.
  21. 제1항 내지 제20항 중 어느 한 항에 있어서, 각각의 태스크는 물리적 메모리에 할당되며, 상기 방법은, 적어도 하나의 태스크가 적어도 하나의 가상 메모리 주소 공간을 이용하는 것을 가능하게 하는 단계를 더 포함하고, 상기 적어도 하나의 가상 메모리 주소 공간은 상기 물리적 메모리의 적어도 일부에 매핑되는 방법.
  22. 프로세서 시스템에 의한 복수의 태스크의 실행을 모니터링하여, 상기 태스크들 각각에 대해 적어도 하나의 모니터링된 값을 결정하는 단계 - 상기 적어도 하나의 모니터링된 값은, 상기 프로세서 시스템에 의해 대응하는 태스크의 성능에 영향을 미치는 적어도 하나의 팩터를 특징짓고, 각각의 태스크는 적어도 하나의 성능 파라미터를 지정하는 연관된 태스크 성능 프로파일을 가짐 - ;
    상기 태스크들 각각에 대해, 대응하는 모니터링된 값을, 상기 연관된 태스크 성능 프로파일에 지정된 대응하는 적어도 하나의 성능 파라미터와 비교하는 단계;
    상기 비교에 기초하여 상기 태스크들 각각에 대해, 상기 태스크의 실행을 위해 이용된 성능 자원들이 조정되어야 할지 또는 상기 태스크의 실행을 위해 이용된 성능 자원들이 유지되어야 할지를 결정하는 단계; 및
    태스크에 할당된 성능 자원들이 조정되어야 하는 것으로 결정된 상기 태스크들 각각에 대해 프로세서 클록 레이트를 수정하고, 태스크에 할당된 성능 자원들이 유지되어야 하는 것으로 결정된 상기 태스크들 각각에 대해 성능 자원들을 유지함으로써, 성능 자원들을 조정하는 단계
    를 포함하는 방법.
  23. 제22항에 있어서, 상기 모니터링된 값은 상기 태스크에 의해 완료된 작업의 양을 특징짓는 방법.
  24. 제23항에 있어서, 상기 태스크에 의해 완료된 작업의 양은, 상기 태스크를 실행할 때 전달된 데이터의 양, 상기 태스크를 실행할 때 완료된 프로세서 명령어들의 수, 프로세서 사이클들, 및 실행 시간 중 적어도 하나로부터 도출되는 방법.
  25. 제22항 내지 제24항 중 어느 한 항에 있어서,
    각각의 태스크에 대해, 상기 태스크에 대한 현재의 프로그램 상태를 결정하는 단계
    를 더 포함하고,
    상기 연관된 태스크 성능 프로파일은 상이한 성능 파라미터들을 갖는 두 개 이상의 프로그램 상태를 지정하고, 상기 모니터링된 값은 상기 현재의 프로그램 상태에 대한 상기 성능 파라미터와 비교되는 방법.
  26. 제22항 내지 제25항 중 어느 한 항에 있어서,
    대응하는 성능 파라미터가 변경되도록, 실행중인 태스크의 적어도 하나의 성능 프로파일을 수정하는 단계
    를 더 포함하고,
    상기 모니터링된 값은 상기 변경된 성능 파라미터와 비교되는 방법.
  27. 제22항 내지 제26항 중 어느 한 항에 있어서,
    각각의 태스크에 의해 요구되는 프로세서 클록 요구 레이트를 결정하는 단계;
    모든 태스크들에 대해 결정된 프로세서 클록 요구 레이트에 기초하여 총 클록 요구 레이트를 산출하는 단계; 및
    상기 총 클록 요구 레이트를 수용하도록 프로세서 시스템 클록을 조정하는 단계
    를 더 포함하는 방법.
  28. 제27항에 있어서,
    예상 및 완료된 작업 레이트(expected and completed work rate)와 적어도 하나의 진행 제한 레이트(at least one progress limiting rate) 사이의 차이에 기초하여 특정한 태스크에 의해 요구되는 프로세서 클록 요구 레이트를 동적으로 조정하는 단계
    를 더 포함하는 방법.
  29. 제28항에 있어서, 각각의 태스크에 의해 요구되는 상기 프로세서 클록 요구 레이트는 대응하는 태스크의 예상된 완료 시간에 기초한 것인 방법.
  30. 제29항에 있어서,
    상기 태스크들의 예상된 완료 시간에 영향을 미치지 않는 수준으로 프로세서 시스템 클록 레이트를 감소시키는 단계
    를 더 포함하는 방법.
  31. 제28항 내지 제30항 중 어느 한 항에 있어서,
    총 클록 요구가 0보다 더 큰 시간까지 절전 또는 유휴 상태(sleep or idle state) 중 어느 하나로 프로세서 시스템 클록 레이트를 감소시키는 단계
    를 더 포함하는 방법.
  32. 제28항 내지 제31항 중 어느 한 항에 있어서, 시간 기간 동안의 평균 프로세서 시스템 클록 레이트가 상기 총 클록 요구 레이트의 위에 있거나 그와 동일하다면, 상기 프로세서 시스템 클록 레이트는 그 시간 기간 동안 상기 총 클록 요구 레이트의 위 아래로 변동하는 방법.
  33. 제22항 내지 제32항 중 어느 한 항에 있어서, 상기 성능 프로파일은, 태스크가 이용할 수 있는 캐시 및/또는 버퍼들의 양에 영향을 미치는 점유 할당(occupancy quota)을 지정하는 방법.
  34. 제33항에 있어서, 상기 점유 할당은 예상 또는 완료된 작업 레이트와 적어도 하나의 진행 제한 레이트 사이의 차이에 기초하여 동적으로 조정되는 방법.
  35. 제22항 내지 제34항 중 어느 한 항에 있어서, 상기 프로세서 시스템의 입/출력 서브시스템에 의한 대역폭의 이용은, 각각의 태스크의 성능 요구조건들이 충족되도록 제어되는 방법.
  36. 제35항에 있어서, 이용된 대역폭의 양은 예상된 및 완료된 작업 레이트와 적어도 하나의 진행 제한 레이트 사이의 차이에 기초하여 동적으로 조정되는 방법.
  37. 프로세서 시스템으로서,
    적어도 하나의 프로세서;
    복수의 버퍼;
    상기 적어도 하나의 프로세서에 의해 실행될 복수의 태스크를 스케줄링하는 스케줄러 모듈;
    상기 복수의 태스크의 실행을 모니터링하고, 추가의 처리 자원들을 요구하는 태스크들을 식별하는 미터링 모듈(metering module);
    태스크를 실행할 때, 상기 적어도 하나의 프로세서의 클록 레이트를 선택적으로 조정하는 적응형 클록 관리자 모듈(adaptive clock manager module);
    태스크에 의해 이용될 캐시 및/또는 버퍼들의 최대량을 선택적으로 조정하는 캐시 점유 관리자 모듈; 및
    태스크에 의해 이용될 입/출력(I/O) 대역폭의 최대량을 선택적으로 조정하는 입/출력 대역폭 관리자 모듈
    을 포함하는 프로세서 시스템.
KR1020127027941A 2010-03-26 2011-03-25 컴퓨터 시스템들의 미세한 단위의 성능 자원 관리 KR20130081213A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US34117010P 2010-03-26 2010-03-26
US34106910P 2010-03-26 2010-03-26
US61/341,170 2010-03-26
US61/341,069 2010-03-26
PCT/US2011/030096 WO2011120019A2 (en) 2010-03-26 2011-03-25 Fine grain performance resource management of computer systems

Publications (1)

Publication Number Publication Date
KR20130081213A true KR20130081213A (ko) 2013-07-16

Family

ID=44673905

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127027941A KR20130081213A (ko) 2010-03-26 2011-03-25 컴퓨터 시스템들의 미세한 단위의 성능 자원 관리

Country Status (5)

Country Link
EP (1) EP2553573A4 (ko)
JP (1) JP2013527516A (ko)
KR (1) KR20130081213A (ko)
CN (1) CN102906696A (ko)
WO (1) WO2011120019A2 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150097981A (ko) * 2014-02-19 2015-08-27 한국과학기술원 가상화 시스템에서 메모리 조정방법
KR20180018302A (ko) * 2016-08-11 2018-02-21 삼성전자주식회사 데이터 프로세싱 엔진 및 그것의 리소스 관리 방법
KR101958112B1 (ko) * 2017-09-29 2019-07-04 건국대학교 산학협력단 태스크 스케줄링 장치 및 태스크 스케줄링 방법
WO2023153752A1 (ko) * 2022-02-08 2023-08-17 삼성전자 주식회사 태스크에 메모리 자원을 할당하는 전자 장치 및 전자 장치의 동작 방법

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013177310A2 (en) 2012-05-22 2013-11-28 Xockets IP, LLC Offloading of computation for rack level servers and corresponding methods and systems
US20140165196A1 (en) 2012-05-22 2014-06-12 Xockets IP, LLC Efficient packet handling, redirection, and inspection using offload processors
US8830716B2 (en) * 2012-09-29 2014-09-09 Intel Corporation Intelligent far memory bandwith scaling
JP6042170B2 (ja) * 2012-10-19 2016-12-14 ルネサスエレクトロニクス株式会社 キャッシュ制御装置及びキャッシュ制御方法
US9348638B2 (en) 2013-01-17 2016-05-24 Xockets, Inc. Offload processor modules for connection to system memory, and corresponding methods and systems
US9378161B1 (en) 2013-01-17 2016-06-28 Xockets, Inc. Full bandwidth packet handling with server systems including offload processors
US10353765B2 (en) * 2013-03-08 2019-07-16 Insyde Software Corp. Method and device to perform event thresholding in a firmware environment utilizing a scalable sliding time-window
WO2015145598A1 (ja) * 2014-03-26 2015-10-01 株式会社 日立製作所 並列演算処理システムのデータ配分装置、データ配分方法、及びデータ配分プログラム
CN103929769B (zh) * 2014-05-04 2017-02-15 中国科学院微电子研究所 一种应用于无线通信系统仿真的调度方法及系统
CN105357097A (zh) * 2014-08-19 2016-02-24 中兴通讯股份有限公司 虚拟网络的调节方法及系统
EP3230874B1 (en) * 2014-12-14 2021-04-28 VIA Alliance Semiconductor Co., Ltd. Fully associative cache memory budgeted by memory access type
US10157081B2 (en) * 2015-11-13 2018-12-18 Telefonaktiebolaget Lm Ericsson (Publ) Trainer of many core systems for adaptive resource control
CN107291370B (zh) * 2016-03-30 2021-06-04 杭州海康威视数字技术股份有限公司 一种云存储系统调度方法和装置
CN106126336B (zh) 2016-06-17 2019-06-04 上海兆芯集成电路有限公司 处理器以及调度方法
CN107547270A (zh) * 2017-08-14 2018-01-05 天脉聚源(北京)科技有限公司 一种智能分配任务分片的方法及装置
CN107463357B (zh) * 2017-08-22 2024-03-12 中车青岛四方车辆研究所有限公司 任务调度系统、调度方法、制动仿真系统及仿真方法
CN108897619B (zh) * 2018-06-27 2020-05-05 国家超级计算天津中心 一种用于超级计算机的多层级资源柔性配置方法
CN110852965A (zh) * 2019-10-31 2020-02-28 湖北大学 一种基于生成对抗网络的视频光照增强方法及系统
CN112965885B (zh) * 2019-12-12 2024-03-01 中科寒武纪科技股份有限公司 访存带宽的检测方法、装置、计算机设备及可读存储介质
CN110874272A (zh) * 2020-01-16 2020-03-10 北京懿医云科技有限公司 资源配置方法及装置、计算机可读存储介质、电子设备
JP2023505617A (ja) * 2020-02-28 2023-02-09 スリーエム イノベイティブ プロパティズ カンパニー 高度モデル予測制御のための深層因果学習
US11714549B2 (en) 2020-02-28 2023-08-01 3M Innovative Properties Company Deep causal learning for data storage and processing power management
CN111506402B (zh) * 2020-03-31 2023-06-27 上海氪信信息技术有限公司 面向机器学习建模的计算机任务调度方法、装置、设备及介质
CN114724233B (zh) * 2020-12-21 2024-06-25 青岛海尔多媒体有限公司 用于终端设备姿势控制的方法及装置、终端设备
CN112559440B (zh) * 2020-12-30 2022-11-25 海光信息技术股份有限公司 多小芯片系统中实现串行业务性能优化的方法及装置
US11543877B2 (en) 2021-03-31 2023-01-03 Advanced Micro Devices, Inc. Low power state selection based on idle duration history
CN112925633A (zh) * 2021-05-12 2021-06-08 浙江华创视讯科技有限公司 嵌入式的任务调度方法、装置、电子设备及存储介质
CN113589916A (zh) * 2021-07-29 2021-11-02 维沃移动通信有限公司 内存的控制方法和装置
CN117348715A (zh) * 2022-06-28 2024-01-05 华为技术有限公司 节能管理方法、装置、计算设备及计算机可读存储介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7228546B1 (en) * 2000-01-28 2007-06-05 Hewlett-Packard Development Company, L.P. Dynamic management of computer workloads through service level optimization
US6845456B1 (en) * 2001-05-01 2005-01-18 Advanced Micro Devices, Inc. CPU utilization measurement techniques for use in power management
US7539994B2 (en) * 2003-01-03 2009-05-26 Intel Corporation Dynamic performance and resource management in a processing system
US7770034B2 (en) * 2003-12-16 2010-08-03 Intel Corporation Performance monitoring based dynamic voltage and frequency scaling
US20050198636A1 (en) * 2004-02-26 2005-09-08 International Business Machines Corporation Dynamic optimization of batch processing
US7281145B2 (en) * 2004-06-24 2007-10-09 International Business Machiness Corporation Method for managing resources in a CPU by allocating a specified percentage of CPU resources to high priority applications
JP4117889B2 (ja) * 2004-11-08 2008-07-16 インターナショナル・ビジネス・マシーンズ・コーポレーション ウェブアプリケーションを実行するための通信を制御するコンピュータおよびその方法
US7721127B2 (en) * 2006-03-28 2010-05-18 Mips Technologies, Inc. Multithreaded dynamic voltage-frequency scaling microprocessor
WO2007141849A1 (ja) * 2006-06-07 2007-12-13 Hitachi, Ltd. 半導体集積回路
JP2008282150A (ja) * 2007-05-09 2008-11-20 Matsushita Electric Ind Co Ltd 信号処理装置及び信号処理システム
WO2009029549A2 (en) * 2007-08-24 2009-03-05 Virtualmetrix, Inc. Method and apparatus for fine grain performance management of computer systems
JP5040773B2 (ja) * 2008-03-31 2012-10-03 富士通株式会社 メモリバッファ割当装置およびプログラム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150097981A (ko) * 2014-02-19 2015-08-27 한국과학기술원 가상화 시스템에서 메모리 조정방법
KR20180018302A (ko) * 2016-08-11 2018-02-21 삼성전자주식회사 데이터 프로세싱 엔진 및 그것의 리소스 관리 방법
KR101958112B1 (ko) * 2017-09-29 2019-07-04 건국대학교 산학협력단 태스크 스케줄링 장치 및 태스크 스케줄링 방법
WO2023153752A1 (ko) * 2022-02-08 2023-08-17 삼성전자 주식회사 태스크에 메모리 자원을 할당하는 전자 장치 및 전자 장치의 동작 방법

Also Published As

Publication number Publication date
JP2013527516A (ja) 2013-06-27
CN102906696A (zh) 2013-01-30
EP2553573A4 (en) 2014-02-19
EP2553573A2 (en) 2013-02-06
WO2011120019A2 (en) 2011-09-29
WO2011120019A3 (en) 2012-01-26

Similar Documents

Publication Publication Date Title
US8782653B2 (en) Fine grain performance resource management of computer systems
KR20130081213A (ko) 컴퓨터 시스템들의 미세한 단위의 성능 자원 관리
US8302098B2 (en) Hardware utilization-aware thread management in multithreaded computer systems
US8397236B2 (en) Credit based performance managment of computer systems
US7958316B2 (en) Dynamic adjustment of prefetch stream priority
US8219993B2 (en) Frequency scaling of processing unit based on aggregate thread CPI metric
Yun et al. Memory bandwidth management for efficient performance isolation in multi-core platforms
US8959372B2 (en) Dynamic performance control of processing nodes
Yun et al. Memguard: Memory bandwidth reservation system for efficient performance isolation in multi-core platforms
Lee et al. Prefetch-aware DRAM controllers
US8205206B2 (en) Data processing apparatus and method for managing multiple program threads executed by processing circuitry
US8069444B2 (en) Method and apparatus for achieving fair cache sharing on multi-threaded chip multiprocessors
US9396024B2 (en) Online computation of cache occupancy and performance
US8522245B2 (en) Thread criticality predictor
US9342122B2 (en) Distributing power to heterogeneous compute elements of a processor
Lee et al. Prefetch-aware memory controllers
Wang et al. Oaws: Memory occlusion aware warp scheduling
Feliu et al. Symbiotic job scheduling on the IBM POWER8
Chakraborty et al. Prepare: P owe r-Awar e A p proximate Re a l-time Task Scheduling for Ene r gy-Adaptiv e QoS Maximization
Reineke et al. Selfish-LRU: Preemption-aware caching for predictability and performance
US20240004725A1 (en) Adaptive power throttling system
Michaud Replacement policies for shared caches on symmetric multicores: a programmer-centric point of view
Chandrashekar Reduction of cache related preemption delay using DVS in real time systems
Yun Operating system level resource management for real-time systems
Kern Optimizing cache performance and predictability

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination