KR20220065037A - 다중 스레드 마이크로프로세서의 공유 리소스 할당 - Google Patents
다중 스레드 마이크로프로세서의 공유 리소스 할당 Download PDFInfo
- Publication number
- KR20220065037A KR20220065037A KR1020227013301A KR20227013301A KR20220065037A KR 20220065037 A KR20220065037 A KR 20220065037A KR 1020227013301 A KR1020227013301 A KR 1020227013301A KR 20227013301 A KR20227013301 A KR 20227013301A KR 20220065037 A KR20220065037 A KR 20220065037A
- Authority
- KR
- South Korea
- Prior art keywords
- thread
- shared resource
- entries
- period
- during
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4887—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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
- G06F9/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Multi Processors (AREA)
Abstract
각각의 스레드에 대한 공유 리소스의 유용성에 기초하여 다중 스레드 마이크로프로세서의 스레드에 공유 리소스를 할당하기 위한 접근 방식이 제공된다. 스레드에 대한 공유 리소스의 유용성은 스레드에 할당된 공유 리소스의 엔트리 수와 스레드가 공유 리소스에 있는 활성 엔트리 수에 따라 결정된다. 공유 리소스에 많은 수의 엔트리들이 할당되고 공유 리소스에 적은 수의 활성 엔트리들이 있는 스레드는 낮은 수준의 병렬 처리를 나타내며, 공유 리소스의 더 적은 수의 엔트리로 효율적으로 작동할 수 있고 공유 리소스의 할당 제한을 줄일 수 있다.
Description
이 섹션에서 설명되는 접근 방식은 추구할 수 있는 접근 방식이지만 반드시 이전에 구상되거나 추구된 접근 방식은 아니다. 따라서 달리 표시되지 않는 한 이 섹션에 설명된 접근 방식 중 어느 것도 이 섹션에 포함된 것만으로도 선행 기술로 간주되어서는 안 된다. 또한 이 섹션에 설명된 접근 방식이 단지 이 섹션에 포함되었다는 사실만으로 잘 이해되고, 일상적이거나, 관습적이라고 가정되어서는 안 된다.
다중 스레드 마이크로프로세서는 다중 스레드(multiple thread)들에 의해 사용되는 로드 큐(load queue)들 및 예약 스테이션(reservation station)들과 같은 공유 리소스들을 갖는 경우가 많다. 공유 리소스들은 종종 선착순으로 스레드에 할당된다. 이러한 접근 방식의 한 가지 문제는 공유 리소스들을 사용하는 스레드들이 서로 다른 실행 특성을 갖는 경우, 한 스레드가 공유 리소스의 지나치게 많은 몫(share)을 획득하여 다른 스레드의 효율적인 실행을 방해할 수 있다는 것이다. 예를 들어, 스레드는 로드 큐의 대부분의 엔트리들을 획득할 수 있고, 로드 대기열에 더 많은 엔트리들이 있으면 도움이 될 때 해당 스레드에 사용할 수 있는 엔트리들이 너무 적은 경우 다른 스레드의 성능이 저하될 수 있다.
이 문제에 대한 한 가지 기술 솔루션은 스레드에 의한 공유 리소스 사용을 제한하는 것이다. 예를 들어, 스레드에 할당된 공유 리소스의 엔트리 수는 모든 스레드들에 대해 또는 개별 스레드 기준으로 제한될 수 있다. 그러나 특정 스레드에 미치는 영향을 알지 못한 채 스레드에 할당되는 엔트리 수를 제한하면 전체 성능이 저하될 수 있으며, 이는 스레드들의 실행 특성이 크게 다를 수 있고 일부 스레드는 공유 리소스의 제한된 수의 엔트리보다 많은 엔트리가 있으면 이점이 있을 수 있기 때문이다. 따라서, 다중 스레드 마이크로프로세서에서 공유 리소스의 사용을 관리하기 위한 더 나은 접근 방식이 필요하다.
실시예는 첨부 도면의 도면에서 제한이 아닌 예로서 도시되며, 도면에서 유사한 참조 번호는 유사한 요소를 나타낸다.
도 1은 다중 스레드 마이크로프로세서를 도시하는 블록도이다.
도 2는 공유 리소스에 대한 액세스를 관리하기 위해 공유 리소스 로직에 의해 사용되는 정보 테이블을 도시하는 블록도이다.
도 3은 공유 리소스 로직이 스레드들에 대한 공유 리소스 할당을 변경하도록 동작하는 타임라인을 도시하는 블록도이다.
도 4는 스레드들에 대한 공유 리소스의 유용성에 기초하여 다중 스레드 마이크로프로세서 상의 스레드들에 공유 리소스를 할당하는 것을 도시하는 흐름도이다.
도 5a는 제1 클록 사이클 윈도우에 걸쳐 스레드들에 대해 획득된 예시적인 사용 데이터를 도시한다.
도 5b는 제2 클록 사이클 윈도우에 걸쳐 스레드들에 대해 획득된 예시적인 사용 데이터를 도시한다.
도 5c는 제3 클록 사이클 윈도우에 걸쳐 스레드들에 대해 획득된 예시적인 사용 데이터를 도시한다.
도 5d는 제4 클록 사이클 윈도우에 걸쳐 스레드들에 대해 획득된 예시적인 사용 데이터를 도시한다.
도 1은 다중 스레드 마이크로프로세서를 도시하는 블록도이다.
도 2는 공유 리소스에 대한 액세스를 관리하기 위해 공유 리소스 로직에 의해 사용되는 정보 테이블을 도시하는 블록도이다.
도 3은 공유 리소스 로직이 스레드들에 대한 공유 리소스 할당을 변경하도록 동작하는 타임라인을 도시하는 블록도이다.
도 4는 스레드들에 대한 공유 리소스의 유용성에 기초하여 다중 스레드 마이크로프로세서 상의 스레드들에 공유 리소스를 할당하는 것을 도시하는 흐름도이다.
도 5a는 제1 클록 사이클 윈도우에 걸쳐 스레드들에 대해 획득된 예시적인 사용 데이터를 도시한다.
도 5b는 제2 클록 사이클 윈도우에 걸쳐 스레드들에 대해 획득된 예시적인 사용 데이터를 도시한다.
도 5c는 제3 클록 사이클 윈도우에 걸쳐 스레드들에 대해 획득된 예시적인 사용 데이터를 도시한다.
도 5d는 제4 클록 사이클 윈도우에 걸쳐 스레드들에 대해 획득된 예시적인 사용 데이터를 도시한다.
다음 설명에서, 설명의 목적을 위해, 실시예의 완전한 이해를 제공하기 위해 다수의 특정 세부사항이 제시된다. 그러나, 이러한 특정 세부사항 없이 실시예가 실시될 수 있다는 것이 당업자에게 명백할 것이다. 다른 경우에, 실시예를 불필요하게 모호하게 하는 것을 피하기 위해 잘 알려진 구조 및 디바이스가 블록도 형태로 도시된다.
I. 개요
II. 아키텍처
III. 유용성을 기반으로 공유 리소스에 대한 스레드 액세스 관리
A. 개요
B. 스레드들에 대한 공유 리소스 할당 제한 변경
C. 유용성 메트릭
D. 리소스 할당 오실레이션 어드레싱
I. 개요
각 스레드에 대한 공유 리소스의 유용성에 기초하여 다중 스레드 마이크로프로세서의 스레드들에 공유 리소스를 할당하기 위한 접근 방식이 제공된다. 스레드에 대한 공유 리소스의 유용성은 스레드에 할당된 공유 리소스의 엔트리 수와 스레드가 공유 리소스에 있는 활성 엔트리 수에 따라 결정된다. 모두 공유 리소스에 많은 수의 엔트리들이 할당되고 공유 리소스에 적은 수의 활성 엔트리들을 갖는 스레드들은 낮은 레벨의 병렬 처리(parallelism)를 나타내며, 공유 리소스의 더 적은 수의 엔트리로 효율적으로 작동할 수 있으며 공유 리소스의 할당을 줄일 수 있다. 본 명세서에서 사용되는 바와 같이, "활성 엔트리(active entry)"라는 용어는 예를 들어 명령어를 준비하거나 실행하기 위해 현재 사용되는 작업을 수행하는 공유 리소스의 엔트리를 의미한다. 다른 스레드는 동일한 공유 리소스에 대해 다른 레벨의 유용성을 가질 수 있으며 접근 방식은 스레드 및 공유 리소스의 수에 관계없이 적용될 수 있다. 이 접근 방식은 스레드가 공유 리소스에서 너무 많은 엔트리를 획득하여 공유 리소스를 사용하는 다른 스레드의 성능을 저하시킬 가능성을 줄인다.
II. 아키텍쳐
도 1은 제어 유닛(110), 산술 논리 유닛(ALU)(120), 스레드 레지스터들(130), 공유 리소스(140) 및 공유 리소스 로직(150)을 포함하는 다중 스레드 마이크로프로세서(100)를 도시하는 블록도이다. 스레드 레지스터들(130)은 특정 스레드들 전용 레지스터들이다. 마이크로프로세서는 임의의 수의 스레드들을 지원할 수 있으며 실시예는 임의의 특정 수의 스레드로 제한되지 않는다. 공유 리소스(140)는 다중 스레드 마이크로프로세서(100)에서 다중 스레드들에 의해 사용되는 임의의 유형의 리소스일 수 있다. 공유 리소스(140)의 예는 로드 큐, 레지스터 파일, 예약 스테이션 등을 포함하지만 이에 제한되지 않는다.
공유 리소스 로직(150)은, 하기에서 더 상세히 설명되는 바와 같이, 스레드들에 대한 공유 리소스(140)의 유용성에 기초하여 다중 스레드 마이크로프로세서(100) 상에서 실행되는 스레드들에 대한 공유 리소스(140)의 할당을 관리한다. 공유 리소스 로직(150)은 컴퓨터 하드웨어, 컴퓨터 소프트웨어, 또는 컴퓨터 하드웨어와 소프트웨어의 임의의 조합에 의해 구현될 수 있다. 공유 리소스 로직(150)은 도 1에서 오직 논의 목적으로 별도의 요소로 도시되어 있으며, 공유 리소스 로직(150)은 다중 스레드 마이크로프로세서(100) 내의 다른 요소들, 예를 들어 리소스 할당 로직, 스레드 스위칭 로직, 및 디스패치 제한 로직에 통합될 수 있다. 다중 스레드 마이크로프로세서(100)는 도 1에 도시되지 않은 추가 요소를 포함할 수 있고 특정 구현에 따라 변할 수 있다.
III. 유용성을 기반으로 공유 리소스에 대한 스레드 액세스 관리
A. 개요
공유 리소스 로직(150)은 스레드들에 대한 공유 리소스(140)의 유용성을 평가하고 유용성에 기초하여 공유 리소스(140)에 대한 스레드들에 할당된 할당 제한을 변경한다. 본 명세서에서 사용되는 바와 같이, "할당 제한(allocation limit)"이라는 용어는 스레드에 할당될 수 있는 공유 리소스(140)의 엔트리 수에 대한 제한이다. 도 2는 공유 리소스(140)에 대한 액세스를 관리하기 위해 공유 리소스 로직(150)에 의해 사용되는 정보의 테이블(200)을 도시하는 블록도이다. 테이블(200)의 각 로우(row)는 다중 스레드 마이크로프로세서(100)에서 실행되는 스레드에 대응한다. 각 스레드에 대한 데이터의 컬럼(column)들은 제1 컬럼에, 스레드를 식별하는 데이터; 제2 컬럼에, 스레드에 현재 할당된 공유 리소스(140)의 엔트리 수; 제3 컬럼에, 공유 리소스(140)의 스레드에 대한 활성 엔트리의 수; 및 제4 컬럼에, 유용성 메트릭을 포함한다. 유용성 메트릭은 현재 스레드에 할당된 엔트리 수에 대한 활성 엔트리 수의 비율이다. 테이블(200)의 정보는 다중 스레드 마이크로프로세서(100) 내부 또는 외부에서 유지될 수 있다. 각 스레드에 할당된 공유 리소스(140)의 엔트리 수 및 각 스레드에 대한 공유 리소스(140)의 활성 엔트리 수는 예를 들어 카운터 또는 다른 하드웨어 요소를 사용하여 추적될 수 있다.
도 3은 공유 리소스 로직(150)이 스레드들에 대한 공유 리소스(140)의 유용성에 기초하여 공유 리소스(140)에 대한 스레드들에 할당된 할당 제한들을 변경하는 타임라인(300)을 도시하는 블록도이다. 타임라인(300)은 클록 사이클 윈도우(CCW)들의 형태로 N개의 시간 기간들을 포함하며, 여기서 각각의 CCW는 클록 사이클들의 세트이다. 각 CCW의 클록 사이클들의 수는 성능 모델링(performance modeling)을 사용하여 결정될 수 있으며 특정 구현에 따라 달라질 수 있다. 성능 모델링은, 스레드들에 대해 이용 가능한 공유 리소스의 엔트리 수를 과도하게 제한하지 않으면서, 스레드가 공유 리소스의 너무 많은 엔트리를 소비하여 다른 스레드의 성능을 저하시키지 않도록 충분히 빠르게 반응하는 것과 같은 요인들의 밸런싱을 수행할 수 있다. 실시예에서, CCW들의 각각은 16개의 클록 사이클들을 포함한다. 클록 사이클들의 수는 공유 리소스 로직(150)에서 구성될 수 있고, 예를 들어, 운영 체제를 통해 선택될 수 있다. CCW들이 도 3에 연속적인 것으로 도시되어 있지만, CCW들은 연속적인 것으로 제한되지 않고 중간 클록 사이클을 가질 수 있다. 또한 CCW들 사이의 삽입 사이클 수는 CCW들에 따라 다를 수 있으며 시간이 지남에 따라 변경될 수도 있다. 실시예가 클록 사이클 윈도우의 형태로 기간의 콘텍스트에서 본 명세서에서 설명되지만, 실시예는 클록 사이클 윈도우 그 자체로 제한되지 않는다.
시간 T0에서 시작하여, 스레드들에 의한 공유 리소스(140)의 사용은 CCW 1 동안 그리고 CCW 1의 끝인 시간 T1에서 모니터링되고, 스레드들에 의한 공유 리소스(140) 사용이 평가되고 스레드들에 할당된 할당 제한이 다음 CCW 2에 대해 업데이트된다. CCW 2는 CCW 1 이후에 임의의 수의 클록 사이클이 발생할 수 있고 CCW 1과 CCW 2 사이의 삽입 클록 사이클의 수는 시간이 지남에 따라 변할 수 있다. 일 실시예에 따르면, 공유 리소스 로직(150)은 잠재적으로 다른 스레드의 성능을 저하시키는 공유 리소스의 충분히 많은 수의 엔트리가 할당된 스레드를 식별한다. 그 다음, 공유 리소스 로직(150)은 이들 스레드들 중 어느 것이 공유 리소스(150)의 적은 수의 활성 엔트리를 갖는지를 결정한다. 공유 리소스(140)의 많은 수의 엔트리들이 할당되고 공유 리소스(140)의 적은 수의 활성 엔트리들을 갖는 스레드들은 공유 리소스(150)의 더 적은 수의 엔트리들로 효율적으로 작동할 수 있으므로, 그들의 할당 제한이 줄어든다.
일 실시예에 따르면, 전술한 결정은 임계값, 예를 들어 할당 임계값 및 활성 엔트리 임계값을 사용하여 이루어진다. 특정 스레드의 경우, 현재 특정 스레드에 할당된 공유 리소스의 엔트리 수가 할당 임계값을 초과하고 특정 스레드에 대한 공유 리소스의 활성 엔트리 수가 활성 엔트리 임계값보다 작으면, 특정 스레드에 대한 할당 제한이 줄어든다.
할당 임계값은 성능 모델링을 사용하여 설계될 수 있으며 즉, 공유 리소스를 호깅(hogging)함으로써 공유 리소스에서 너무 많은 수의 엔트리들을 소비하고 잠재적으로 다른 스레드들의 성능을 저하시키는 스레드를 식별하도록 선택된다. 활성 엔트리 임계값은 병렬 처리 레벨이 낮아 공유 리소스의 엔트리 수가 적은 경우에도 여전히 효율적으로 작동할 가능성이 있는 스레드를 식별하기 위해 선택된다. 예를 들어 스레드가 일련의 추가 명령어를 실행할 때 낮은 레벨의 병렬 처리가 발생할 수 있으며, 여기서 각 명령어는 이전 명령어의 결과에 따라 다르다. 이 두 임계값들을 조합하여 사용하면 공유 리소스에 최소한 임계값 수의 엔트리가 있고 병렬 처리 수준이 낮은 스레드가 공유 리소스에서 너무 많은 엔트리를 소비하여 다른 스레드의 성능이 저하되는 것을 방지한다.
B. 스레드에 대한 공유 리소스 할당 제한 변경
도 4는 스레드에 대한 공유 리소스의 유용성에 기초하여 다중 스레드 마이크로프로세서 상의 스레드에 공유 리소스를 할당하는 것을 나타내는 흐름도(400)이다.
단계(402)에서, 다중 스레드 마이크로프로세서 상의 스레드들에 대한 공유 리소스에 대한 초기 할당 제한이 설정된다. 현재 예에서, 공유 리소스(140)에 대한 초기 할당 제한은 다중 스레드 마이크로프로세서(100)에서 실행되는 스레드 T0-T3에 대해 설정된다.
일 실시예에 따르면, 초기 할당 제한은 공유 리소스의 이용 가능한 총 엔트리 수이다. 예를 들어, 공유 리소스(140)가 50개의 엔트리를 갖는 로드 큐라고 가정하면, 초기 할당 제한은 스레드들 T0-T3 각각에 대해 50으로 설정된다. 잠재적으로 모든 스레드들에 대한 초기 할당 제한으로서 공유 리소스(140)의 이용 가능한 엔트리의 총 수를 할당하는 것은 임의의 스레드가 공유 리소스(140)의 많은 양의 엔트리들을 소비하도록 하고 다른 스레드의 성능을 저하시킨다는 것에 유의한다. 대안적으로, 초기 할당 제한이 공유 리소스의 이용 가능한 총 엔트리 수보다 적을 수 있다. 예를 들어, 50개의 엔트리들이 있는 로드 큐의 경우, 스레드들 T0-T3 각각에 대해 초기 할당 제한이 10으로 설정될 수 있다.
초기 할당 제한은 스레드에 따라 다를 수 있다. 예를 들어, 높은 우선 순위 스레드, 예를 들어 특별한 지정이 있는 스레드 또는 특정 서비스 품질(QOS) 요구 사항을 충족하는 데 관련된 스레드는 우선 순위가 낮은 다른 스레드보다 큰 초기 할당 제한이 할당될 수 있다. 앞의 예에서, 우선 순위가 높은 스레드에는 초기 할당 제한 50이 할당되고 다른 스레드에는 초기 할당 제한 30이 할당될 수 있다. 초기 할당 제한은 공유 리소스 로직(150)에 미리 구성되거나, 공유 리소스 로직(150)에 의해 사용되는 구성 데이터에 저장되거나, 운영 체제를 통해 구성될 수 있다. 또한, 공유 리소스 로직(150)은 예를 들어 전원이 켜질 때 또는 운영 체제 커맨드와 같은 커맨드를 수신하는 것에 응답하여 스레드 할당 제한을 초기 할당 제한으로 재설정할 수 있다.
단계(404)에서, 할당된 엔트리 수 및 각 스레드에 대한 활성 엔트리 수가 제1 클록 사이클 세트에 걸쳐 결정된다. 예를 들어, 공유 리소스 로직(150)은 CCW 1을 통해 스레드들 T0-T3에 대한 할당된 엔트리 수 및 활성 엔트리 수를 결정할 수 있다. 도 5a는 CCW 1을 통한 스레드들 T0-T3에 대한 예시적인 사용 데이터를 도시한다. 이 예에서 초기 할당 제한은 CCW 1을 통한 스레드들 T0-T3에 대해 50이다. 활성 엔트리 수는 현재 작업 중인 엔트리 수이며 CCW 1 동안 명령어가 처리됨에 따라 달라질 수 있다. 따라서, 일 실시예에 따르면, 활성 엔트리 수는 CCW 1 동안의 최소 활성 엔트리의 수이다. 도 5a에 도시된 예에서, 스레드 T1은 CCW 1 동안 가장 많은 수의 활성 엔트리들을 가졌으며 이는 다른 스레드에 비해 가장 높은 레벨의 병렬 처리를 나타내는 반면 스레드 T0은 CCW 1 동안 가장 적은 수의 활성 엔트리들을 가졌다. 이에 따라 스레드 T1은 스레드 T0보다 공유 리소스(140)의 더 많은 엔트리들을 갖는 것으로부터 더 많은 이점을 얻을 수 있다.
단계(406)에서, 제1/다음 스레드가 선택된다. 본 예에서는, 스레드 T0이 선택되지만 평가할 제1 스레드를 선택하는 데 임의의 접근 방식이 사용될 수 있다. 단계(408)에서, 선택된 스레드에 할당된 엔트리 수가 할당 임계값을 초과하는지 여부가 결정된다. 예를 들어, 공유 리소스 로직(150)은 스레드 T0에 할당된 공유 리소스(140)의 엔트리 수가 할당 임계값보다 큰지 여부를 결정한다. 할당 임계값이 10이라고 가정하면 스레드 T0에 할당된 12개의 엔트리들이 할당 임계값 10보다 크므로 할당 임계값이 충족되고 제어는 단계(410)으로 진행한다. 이것은 스레드 T0이 다른 스레드의 성능을 잠재적으로 저하시키기 위해 공유 리소스(140)에 충분히 많은 수의 엔트리들을 할당했음을 의미한다.
단계(410)에서, 스레드에 대한 활성 엔트리 수가 활성 엔트리 임계값보다 작은지 여부가 결정된다. 이전에 언급했듯이 활성 엔트리 임계값은 병렬 처리 수준이 낮기 때문에 공유 리소스를 더 적게 할당해도 여전히 효율적으로 작동할 가능성이 있는 스레드를 식별하는 데 사용된다. 본 예에서, 공유 리소스 로직(150)은 공유 리소스(140)의 스레드 T0에 대한 활성 엔트리 수가 활성 엔트리 임계값보다 작은지 여부를 결정한다. 활성 엔트리 임계값이 3이라고 가정하면, 스레드 T0에 대한 하나의 활성 엔트리가 활성 진입 임계값 3보다 작기 때문에 활성 엔트리 임계값이 충족되고 제어는 단계(412)로 진행한다. 단계들(408 및 410)에서 두 임계값들을 모두 충족한 스레드 T0은 다른 스레드의 성능을 잠재적으로 저하시키기에 공유 리소스(140)의 충분히 많은 수의 엔트리들을 갖고 또한 낮은 레벨의 병렬 처리를 갖는다. 따라서 스레드 T0은 공유 리소스(140)의 더 적은 수의 엔트리들로 효율적으로 작동할 수 있다.
단계(412)에서 스레드가 다른 스레드의 성능을 저하시키는 것을 방지하기 위해 공유 리소스에 대한 스레드의 할당 제한이 감소된다. 본 예에서, 공유 리소스(140)에 대한 스레드 T0의 할당 제한은 다음 기간, 즉, 다음 클록 사이클 윈도우 CCW 2 동안 감소된다. 할당 제한에 대한 감소량은 특정 구현에 따라 달라질 수 있으며, 실시예는 임의의 특정 감소 방법론으로 제한되지 않는다. 일 실시예에 따르면, 스레드의 할당 제한은 감소된 할당 제한으로 감소된다. 예를 들어, 공유 리소스(140)의 스레드 T0의 할당된 엔트리들은 50에서 10으로 줄어들 수 있다. 감소된 할당 제한은 공유 리소스 로직(150)에서 구성될 수 있고 및/또는 운영 체제를 통해 선택 가능할 수 있다. 감소된 할당 제한 값은 모델링을 통해 결정될 수 있으며 스레드가 다른 스레드의 성능을 저하시키지 않도록 충분히 낮은 값이다.
공유 리소스에 대한 스레드의 할당 제한을 감소된 할당 제한으로 줄이는 대안으로, 스레드의 할당 제한을 점진적으로 줄일 수 있다. 예를 들어, 쓰레드 T0에 할당된 엔트리 수는 50에서 49로 1개가, 50에서 40으로 10개기 줄어들 수 있다. 추가 계산 비용으로 더 복잡한 방법론이 구현될 수 있다. 예를 들어, 감소는 활성 엔트리 임계값에 대한 활성 엔트리 레벨에 기초할 수 있다. 이 예에서 활성 엔트리 임계값의 50%인 활성 엔트리 수는 스레드에 할당된 엔트리 수가 50% 감소한다. 일 실시예에 따르면, 스레드에 대한 유용성 메트릭에 기초하여 스레드의 할당 제한이 감소된다.
일 실시예에 따르면, 스레드의 할당 제한을 줄이는 것은 스레드가 엔트리를 즉시 포기하게 하지 않는다. 오히려, 스레드는 작업이 완료되면 정상적으로 엔트리를 포기하지만, 스레드의 현재 할당된 엔트리 수가 감소된 할당 제한 아래로 떨어질 때까지 스레드는 공유 리소스(140)의 추가 엔트리를 부여받지 않는다. 전 예에서, 스레드 T0이 공유 리소스(140)에서 10개 미만의 할당된 엔트리를 가질 때까지 공유 리소스(140)의 추가 엔트리는 스레드 T0에 부여되지 않는다.
단계(408)에서 스레드에 할당된 엔트리 수가 할당 임계값보다 작거나 같거나, 단계(410)에서 스레드에 대한 활성 엔트리 수가 활성 엔트리 임계값 이상인 경우, 그런 다음 제어는 단계(414)로 진행하고 스레드의 할당 제한이 재설정, 즉 증가된다. 달리 말하면, 공유 리소스(140)의 적은 수의 엔트리가 하나의 스레드에 할당된다면, 그 스레드는 다른 스레드의 성능을 저하시키는 위협이 되지 않는다. 대안적으로, 스레드가 높은 수준의 병렬 처리를 나타내는 많은 수의 활성 엔트리를 갖는 경우, 스레드는 공유 리소스(140)의 더 많은 엔트리를 갖는 것으로부터 이익을 얻을 수 있고 할당 제한은 감소되지 않는다. 일 실시예에 따르면, 스레드의 할당 제한이 재설정되면 스레드의 할당 제한이 초기 할당 제한으로 변경된다. 대안적으로 스레드의 할당 제한이 지정된 양만큼 증가할 수 있고, 이는 예를 들어, 1의 증분 또는 5 또는 10과 같은 더 큰 증분일 수 있다. 증분은 공유 리소스 로직(150)에서 구성될 수 있거나, 예를 들어 운영 체제를 통해 선택 가능할 수 있다. 스레드의 할당 제한은 스레드의 유용성 메트릭에 따라 증가할 수도 있다.
스레드의 할당 제한이 단계(412)에서 감소되거나 단계(414)에서 재설정(증가)된 후, 단계(416)에서 더 많은 스레드가 처리되어야 하는지 여부가 결정된다. 그렇다면, 제어는 단계(406)으로 돌아가고 다음 스레드가 선택되고 동일한 방식으로 처리된다. 모든 스레드가 처리되면, 프로세스는 단계(418)에서 완료된다. 프로세스는 임의의 수의 스레드에 대해 임의의 횟수로 반복될 수 있다.
일 실시예에 따르면, 위에서 설명된 테스트는 모든 클록 사이클 후에 수행되고 단계(414)에 도달하면 스레드의 할당 제한이 다음 CCW에 대한 초기 할당 제한으로 재설정된다. 또한 해당 스레드는 현재 CCW 동안 더 이상 테스트되지 않는다. 현재 CCW 동안 특정 스레드에 대해 단계(414)에 도달하지 않은 경우 해당 할당 제한은 현재 및 다음 CCW에 대해 감소된 상태로 유지된다. 다른 대안으로는 CCW를 통해 할당된 및 활성 엔트리의 평균 수를 사용하거나 CCW 끝에서 할당된 및 활성 엔트리 수를 사용하는 방법이 있다.
할당 제한을 줄여야 하는 스레드를 식별하기 위해 할당 임계값과 활성 엔트리 임계값 모두 사용하는 것은 다중 스레드 마이크로프로세서에서 병렬 처리 레벨이 낮은 스레드가 공유 리소스를 사용하는 다른 스레드의 성능을 저하시키는 것을 방지하는 방법에 대한 기술적인 문제를 해결한다. 기술 솔루션은 할당 임계값으로 지시되는 공유 리소스의 엔트리들의 임계값 이상으로 현재 할당된 스레드를 식별하여 스레드가 잠재적으로 공유 리소스를 "호깅"하고 다른 스레드에서 사용할 수 있는 공유 리소스의 엔트리를 제한한다. 그런 다음 활성 엔트리 임계값을 기반으로 식별된 스레드가 공유 리소스의 매우 적은 활성 엔트리, 즉 작업을 수행하는 엔트리가 있는지 여부가 결정된다. 적은 수의 활성 엔트리는 낮은 레벨의 병렬 처리를 나타내며 스레드는 공유 리소스의 적은 수의 엔트리로 계속 효율적으로 작동할 수 있으므로 스레드에 대한 할당 제한이 줄어든다. 반대로 할당된 엔트리 수가 적거나 활성 엔트리가 많은 스레드는 할당 제한이 줄어들지 않는다.
시간이 지남에 따라 스레드의 실행 특성은 다른 명령어로 인해 변경될 수 있다. 따라서 스레드에 할당된 공유 리소스의 엔트리 수와 해당 스레드의 활성 엔트리 수도 시간이 지남에 따라 변경될 수 있다. 따라서 초기에 할당 제한이 줄어들지 않은 스레드는 향후 CCW 이후에 할당 제한이 줄어들 수 있다.
이전 예를 계속하면 도 5b는 CCW 2를 통해 스레드들 T0-T3에 대해 획득된 사용 데이터의 예를 도시한다. 스레드 T0에 대한 할당 제한은 CCW 1 이후에 하향 조정된 후 10이다. 스레드들 T1-T3에 대한 할당 제한은 이러한 스레드에 대해 할당된 엔트리 수가 모두 할당 임계값보다 작았기 때문에 초기 할당 제한인 50으로 재설정되었다.
CCW 2 이후 시간 T2에서, 위에서 설명된 테스트를 다시 수행하고, 스레드 T0은 활성 엔트리 수가 1에서 2로 약간 증가한 반면 스레드 T0은 할당 임계값(할당된 엔트리 > 10)과 활성 엔트리 임계값(활성 엔트리 < 3)을 모두 계속 충족하므로 스레드 T0에 대한 할당 제한은 10으로 유지된다. 그러나 스레드 T2에 할당된 12개의 엔트리가 할당 임계값인 10보다 크고 두 개의 활성 엔트리들이 활성 엔트리 임계값인 3보다 작기 때문에 스레드 T2도 이제 두 임계값들을 모두 충족한다. 따라서 스레드 T2에 대한 할당 제한은 다음 클록 사이클 세트, 즉 CCW 3에 대해 10으로 감소한다. 스레드들 T1 및 T3에 대한 할당 제한들은 할당된 엔트리의 대응하는 수가 할당 임계값보다 작기 때문에 둘 모두 초기 할당 제한인 50으로 재설정된다.
도 5c는 시간 T3에서 CCW 3을 통해 스레드들 T0-T3에 대해 획득된 예시적인 사용 데이터를 도시한다. CCW 3 동안, 스레드들 T0 및 T2에 대한 할당 제한들은 스레드 T0에 대한 CCW 1 이후 및 스레드 T2에 대한 CCW 2 이후에 이루어진 하향 조정으로 인해 여전히 10이다. CCW 3에서 스레드 T0에 대해 할당된 엔트리 수는 할당 임계값 이상으로 유지되었지만 스레드 T0에 대한 활성 엔트리 수는 2개에서 5개로 증가했다. 따라서 스레드 T0의 할당 제한은 CCW 4에 대한 초기 할당 제한인 50으로 재설정(증가)된다. CCW 3 동안 스레드 T2의 12개의 할당된 엔트리들은 계속 할당 임계값을 초과했으며 스레드 T2에는 활성 엔트리 임계값인 3보다 작은 하나의 활성 엔트리가 있었다. 따라서 스레드 T2는 할당 제한이 10으로 감소하여 CCW 4에서 계속된다. 스레드 T1에 대한 할당 제한은 초기 할당 제한인 50으로 재설정되며, 그 이유는 스레드 T1에 대해 할당된 11개의 엔트리들이 할당 임계값인 10을 초과하는 반면 7개의 활성 엔트리들은 활성 엔트리 임계값인 3을 초과하기 때문이다. 6개의 할당된 엔트리들이 할당 임계값인 10보다 작기 때문에 스레드 T3에 대한 할당 제한은 초기 할당 제한인 50으로 재설정된다. 따라서, 스레드 T1이 공유 리소스(140)의 더 많은 수의 엔트리들을 사용하는 동안 스레드 T1은 활성 엔트리 임계값보다 큰 병렬 처리 레벨을 가지므로 할당 제한이 감소되지 않는다.
도 5d는 시간 T4에서 CCW 4를 통해 스레드들 T0-T3에 대해 획득된 예시적인 사용 데이터를 도시한다. 스레드 T0이 작업을 완료하고 공유 리소스(140)의 엔트리가 해제됨에 따라 스레드 T0에 할당된 엔트리 수가 CCW 4에서 11개에서 8개로 감소했다. CCW 4의 끝에서 스레드 T0에 대해 할당된 엔트리 수가 할당 임계값보다 작기 때문에 스레드 T0에 대한 할당 제한은 초기 할당 제한인 50으로 재설정된다. 스레드 T1에 할당된 엔트리 수는 CCW 4에 걸쳐 계속 증가했지만, 활성 엔트리 수가 활성 엔트리 임계값을 초과하므로 스레드 T1에 대한 할당 제한은 다시 초기 할당 제한으로 재설정된다. 스레드 T2가 작업을 완료하고 공유 리소스(140)의 엔트리가 해제됨에 따라 스레드 T2에 할당된 엔트리 수가 CCW 4에서 12개에서 10개로 감소했다. CCW 4의 끝에서 스레드 T2에 대한 할당된 엔트리의 수는 여전히 할당된 임계값 10보다 크고 활성 엔트리 수가 활성 엔트리 임계값보다 작기 때문에 스레드 T2에 대한 할당 제한은 10으로 감소된 상태로 유지된다. CCW 4를 통해 스레드 T3에 할당된 엔트리 수가 6개에서 10개로 증가했지만 활성 엔트리 수가 활성 엔트리 임계값을 초과하므로 스레드 T2에 대한 할당 제한은 초기 할당 제한인 50개로 재설정된다. 따라서 두 스레드들 T1 및 T3 모두 공유 리소스(140)를 호깅할 가능성이 있지만 둘 모두 높은 레벨의 병렬 처리를 나타내는 활성 엔트리 임계값을 초과하는 많은 활성 엔트리들을 가지고 있다. 따라서 할당 제한은 초기 할당 제한으로 재설정된다.
C. 유용성 메트릭
본 명세서에서 이전에 설명된 바와 같이, 유용성 메트릭은 스레드에 현재 할당된 엔트리 수에 대한 활성 엔트리 수의 스레드 특정 비율이다. 유용성 메트릭은 각 클록 사이클, N개의 클록 사이클마다 또는 사이클 주기에 걸쳐 계산될 수 있다. 예를 들어, 유용성 메트릭은 N개의 클록 사이클에 대한 평균 유용성 메트릭으로 계산될 수 있다.
유용성 메트릭은 스레드에 대한 할당 제한이 변경되어야 하는지 여부를 결정하기 위해 할당 임계값 및 활성 엔트리 임계값의 대안으로 사용될 수 있다. 예를 들어, 도 4의 단계들(408 및 410) 대신에, 선택된 스레드에 대해 유용성 메트릭이 계산되고 스레드에 대한 할당 제한이 변경되어야 하는지 여부를 결정하기 위해 유용성 임계값과 비교될 수 있다. 이 테스트는 모든 클럭 사이클, N개의 클럭 사이클마다 또는 사이클 기간 동안 수행될 수 있고 개별 유용성 메트릭 값이 테스트될 수 있거나 N개의 유용성 메트릭 값의 평균이 유용성 임계값에 대해 테스트될 수 있다. 일 실시예에 따르면, 스레드의 유용성 메트릭이 스레드의 할당 제한이 감소되기 전에 클록 주기 윈도우의 각 클록 주기에 걸쳐 유용성 임계값을 충족하지 못하는 등 좋지 않은 사용을 보여야 하는 경우 윈도우 방식이 사용될 수 있다. 대안적으로 클록 주기 윈도우에 대한 스레드의 평균 유용성 메트릭을 유용성 임계값과 비교할 수 있다.
유용성 메트릭은 스레드에 대한 새로운 할당 제한을 결정하는 데 사용될 수도 있다. 일 실시예에 따르면, 할당 및 활성 엔트리 임계값 또는 유용성 임계값을 사용하여, 스레드에 대한 할당이 변경되어야 한다고 결정되면, 해당 스레드에 대한 유용성 메트릭은 도 4의 단계(412)에서 이전에 논의된 바와 같이 감소된 할당 제한으로 할당을 줄이는 대신 스레드에 대한 새로운 할당 제한을 결정하는 데 사용된다. 유용성 메트릭은 공유 리소스 로직(150)에 의해 구현된 방정식에 대한 입력으로서 사용될 수 있으며, 여기서 방정식의 출력은 스레드에 대한 새로운 할당 제한이다. 사용된 특정 방정식에 따라, 이는 스레드에 대한 활성 엔트리 수가 증가함에 따라 스레드에 대한 할당 제한이 천천히 증가하도록 허용할 수 있으며, 이는 스레드가 활성 스레드의 활성 엔트리 임계값 수보다 적을 수 있지만 병렬 처리가 증가함을 나타낸다. 스레드에 대한 새로운 할당 제한을 계산하기 위해 유용성 메트릭을 사용하는 것은 앞에서 설명한 것처럼 감소된 할당 레벨을 사용하는 것보다 더 많은 유연성을 제공할 수 있지만 더 많은 계산 비용이 들고 잠재적으로 0으로 나누는 문제가 있다.
D. 리소스 할당 오실레이션 어드레싱
스레드의 병렬 처리 레벨은 스레드에 대한 명령어 유형이 변경됨에 따라 연속 CCW들에서 크게 변경될 수 있다. 본 명세서에 설명된 접근 방식을 사용하여, 이는 스레드에 할당된 공유 리소스(150)의 엔트리 수가 공유 리소스의 총 엔트리 수(예: 50)와 감소된 할당 레벨(예: 10) 사이에서 진동하게 할 수 있다.
스레드의 공유 리소스 할당이 증가하기 전에 스레드가 만족스러운 레벨의 유용성을 입증해야 하는 클록 사이클 수를 증가시켜 스레드에 대한 리소스 할당의 진동을 줄이는 기술이 제공된다. 일 실시예에 따르면, 스레드에 대한 리소스 할당을 감소시키기 위한 것보다 스레드에 대한 리소스 할당을 증가시키기 위해 더 큰 CCW가 사용된다. 예를 들어, 16개의 클록 사이클들의 CCW는 스레드에 대한 리소스 할당을 줄이는 데 사용될 수 있는 반면 32개 이상의 클록 사이클들의 CCW는 스레드에 대한 리소스 할당을 늘리는 데 사용된다. 따라서, 특정 스레드에 할당된 공유 리소스(150)의 엔트리 수는 16개 클록 사이클들의 세트 후에 감소될 수 있고, 그러나 특정 스레드는 공유 리소스의 엔트리 수가 증가하기 위해 더 긴 기간, 즉 32 클록 사이클들에 걸쳐 충분히 높은 레벨의 병렬 처리를 보여야 한다. 대안적으로, 공유 리소스 할당을 증가시키기 위해 클록 사이클의 더 큰 윈도우를 사용하는 대신에, 공유 리소스 할당을 증가시키기 위해 클록 사이클의 다중 윈도우가 사용될 수 있다. 예를 들어, 16개 클록 사이클들의 CCW는 스레드에 대한 리소스 할당을 줄이는 데 사용될 수 있는 반면, 16 클록 사이클들의 2개 이상의 CCW들은 스레드에 대한 리소스 할당을 늘리는 데 사용된다.
다른 실시예에 따르면, 리소스 할당을 증가시키기 위해 상이한 임계값이 사용된다. 예를 들어, 스레드에 할당된 공유 리소스(140)의 엔트리 수를 늘릴지 여부를 고려할 때 5의 할당 임계값 및 4의 활성 엔트리 임계값이 도 4의 단계들(408 및 410)에서 각각 사용될 수 있다. 이 예에서 스레드 할당이 현재 감소하지 않을 때 사용되는 할당 임계값 10과 비교하여 더 낮은 할당 임계값 5는 충족하기가 더 쉽다. 마찬가지로 스레드 할당이 현재 감소하지 않을 때 사용되는 활성 엔트리 임계값 3과 비교하여 더 높은 활성 진입 임계값 4는 충족하기가 더 어렵다. 따라서 더 낮은 할당 임계값과 더 높은 활성 엔트리 임계값의 조합은 공유 리소스 할당이 감소된 스레드가 계속해서 공유 리소스 할당을 줄일 가능성을 높다.
실시예가 단일 공유 리소스를 갖는 다중 스레드 마이크로프로세서의 콘텍스트에서 본 명세서에서 설명되지만, 실시예는 이 예에 제한되지 않고 임의의 수의 공유 리소스에 적용 가능하다. 본 명세서에는 여러 공유 리소스를 관리하는 공유 리소스 로직이 있는 다중 스레드 마이크로프로세서와 여러 공유 리소스를 관리하는 다중 공유 리소스 로직이 있는 다중 스레드 마이크로프로세서가 포함된다.
Claims (21)
- 다중 스레드 마이크로프로세서(multi-threaded microprocessor)에 있어서,
복수의 엔트리(entry)들을 갖는 공유 리소스(shared resource); 및
공유 리소스 로직으로서:
제1 기간 동안 복수의 스레드(thread)들로부터의 스레드에 할당된, 상기 공유 리소스의 상기 복수의 엔트리들로부터의, 엔트리 수를 결정하고, 및
상기 제1 기간 동안 상기 스레드에 대한 상기 공유 리소스의 활성 엔트리 수를 결정하고,
제2 기간 동안 상기 공유 리소스에 대해 상기 스레드에 할당된 할당 제한(allocation limit)을 변경하기 위해, 상기 제1 기간 동안 상기 스레드에 할당된 상기 엔트리 수와 상기 제1 기간 동안 상기 스레드에 대한 상기 공유 리소스의 활성 엔트리 수를 사용하도록 구성되는, 상기 공유 리소스 로직을 포함하는, 다중 스레드 마이크로프로세서. - 제1항에 있어서,
상기 제2 기간 동안 상기 공유 리소스에 대해 상기 스레드에 할당된 상기 할당 제한을 변경하는 것은, 상기 제2 기간 동안 상기 공유 리소스에 대해 상기 스레드에 할당된 상기 할당 제한을 감소시키는 것을 포함하는, 다중 스레드 마이크로프로세서. - 제2항에 있어서,
상기 제2 기간 동안 상기 공유 리소스에 대해 상기 스레드에 할당된 상기 할당 제한은,
증분량만큼, 또는
감소된 할당 제한까지 감소되는, 다중 스레드 마이크로프로세서. - 제1항에 있어서,
상기 공유 리소스 로직은 또한:
상기 제1 기간 동안 상기 스레드에 할당된 상기 엔트리 수가 제1 임계값을 만족한다고 결정하고 그리고 상기 제1 기간 동안 상기 스레드에 대한 상기 공유 리소스의 상기 활성 엔트리 수가 제2 임계값을 만족한다고 결정하는 것에 응답하여, 상기 제2 기간 동안 상기 스레드에 대한 상기 공유 리소스에 대해 상기 스레드에 할당된 상기 할당 제한을 감소시키도록 더 구성되는, 다중 스레드 마이크로프로세서. - 제1항에 있어서,
상기 공유 리소스 로직은 또한:
상기 스레드에 대한 유용성 메트릭(usefulness metric)을 결정하고, 상기 유용성 메트릭은 상기 스레드에 할당된 상기 엔트리 수에 대한 상기 스레드에 대한 상기 공유 리소스의 상기 활성 엔트리 수의 비율이며; 및
상기 스레드에 대한 상기 할당 제한을 변경할지 여부를 결정하기 위해 상기 스레드에 대한 상기 유용성 메트릭을 유용성 임계값과 비교하도록 구성되는, 다중 스레드 마이크로프로세서. - 제5항에 있어서,
상기 공유 리소스 로직은:
클록 사이클 윈도우(clock cycle window)의 각 클록 사이클에 대해, 상기 스레드에 대한 유용성 메트릭을 결정하고 상기 유용성 임계값과 비교하고, 및
상기 스레드에 대한 상기 유용성 메트릭이 상기 클록 사이클 윈도우의 각 클록 사이클에 대한 유용성 임계값을 만족하지 않는 것에 응답하여, 상기 스레드에 대한 할당 제한을 감소시키도록 더 구성되는, 다중 스레드 마이크로프로세서. - 제5항에 있어서,
상기 공유 리소스 로직은 상기 스레드에 대한 상기 유용성 메트릭에 기초하여 상기 스레드에 대한 상기 할당 제한을 변경하도록 더 구성되는, 다중 스레드 마이크로프로세서. - 제1항에 있어서,
상기 제2 기간 동안 상기 공유 리소스에 대해 상기 스레드에 할당된 할당 제한을 변경하는 것은, 상기 제2 기간 동안 상기 공유 리소스에 대해 상기 스레드에 할당된 할당 제한을 증가시키는 단계를 포함하는, 다중 스레드 마이크로프로세서. - 제1항에 있어서,
상기 제2 기간 동안 상기 공유 리소스에 대해 상기 스레드에 할당된 상기 할당 제한을 증가시키는 단계는, 상기 공유 리소스의 이용 가능한 총 엔트리 수로 상기 제2 기간 동안 상기 스레드에 대한 상기 공유 리소스에 대한 상기 스레드에 할당된 상기 할당 제한을 증가시키는 단계를 포함하는, 다중 스레드 마이크로프로세서. - 제1항에 있어서,
상기 공유 리소스 로직은 또한:
상기 제1 기간 동안 상기 스레드에 할당된 상기 엔트리 수가 제1 임계값을 만족하지 않거나 상기 제1 기간 동안 상기 스레드에 대한 상기 공유 리소스의 상기 활성 엔트리 수가 제2 임계값을 만족하지 않는다는 결정에 응답하여, 상기 제2 기간 동안 상기 공유 리소스에 대한 상기 스레드에 할당된 상기 할당 제한을 증가시키도록 구성되는, 다중 스레드 마이크로프로세서. - 제10항에 있어서,
상기 제1 임계값 및 상기 제2 임계값에 대한 값들은 상기 스레드 기간에 할당된 상기 공유 리소스의 상기 엔트리 수에 기초하여 선택되는, 다중 스레드 마이크로프로세서. - 제1항에 있어서,
상기 공유 리소스 로직은 또한:
복수의 기간 동안 상기 스레드에 할당된 상기 엔트리 수가 제1 임계값을 충족하지 않거나, 상기 복수의 기간 동안 상기 스레드에 대한 상기 공유 리소스의 상기 활성 엔트리 수가 제2 임계값을 충족하지 않는다는 결정에 응답하여, 상기 스레드에 대한 상기 공유 리소스에 대한 상기 스레드에 할당된 상기 할당 제한을 증가시키도록 구성되는, 다중 스레드 마이크로프로세서. - 제1항에 있어서,
상기 제1 기간 동안 상기 스레드에 대한 상기 공유 리소스의 상기 활성 엔트리 수는 상기 제1 기간 동안의 상기 스레드에 대한 상기 공유 리소스의 상기 활성 엔트리의 최소 개수인, 다중 스레드 마이크로프로세서. - 제1항에 있어서,
상기 제1 기간 이전에, 공유 리소스에서 이용가능한 공유 리소스 내의 총 엔트리 수인 할당 제한이 상기 스레드에 할당되는, 다중 스레드 마이크로프로세서. - 제1항에 있어서,
상기 공유 리소스는 로드 큐(load queue), 레지스터 파일(register file), 또는 예약 스테이션(reservation station) 중 하나 이상인, 다중 스레드 마이크로프로세서. - 제1항에 있어서,
상기 제1 기간은 제1 클록 사이클 윈도우이고, 상기 제2 기간은 제2 클록 사이클 윈도우인, 다중 스레드 마이크로프로세서. - 컴퓨터로 구현되는 방법으로서,
복수의 엔트리들을 구비한 공유 리소스를 갖는 다중 스레드 마이크로프로세서의 공유 리소스 로직에 의해서,
제1 기간 동안 복수의 스레드들로부터의 스레드에 할당된, 상기 공유 리소스의 상기 복수의 엔트리들로부터의, 엔트리 수; 및
상기 제1 기간 동안 상기 스레드에 대한 상기 공유 리소스의 활성 엔트리 수를 결정하는 단계,
상기 공유 리소스 로직에 의해서, 제2 기간 동안 상기 공유 리소스에 대해 상기 스레드에 할당된 할당 제한(allocation limit)을 변경하기 위해, 상기 제1 기간 동안 상기 스레드에 할당된 상기 엔트리 수와 상기 제1 기간 동안 상기 스레드에 대한 상기 공유 리소스의 활성 엔트리 수를 사용하는 단계
를 포함하는, 컴퓨터로 구현되는 방법. - 제17항에 있어서,
상기 제2 기간 동안 상기 공유 리소스에 대해 상기 스레드에 할당된 상기 할당 제한을 변경하는 것은, 상기 제2 기간 동안 상기 공유 리소스에 대해 상기 스레드에 할당된 상기 할당 제한을 감소시키는 것을 포함하는, 컴퓨터로 구현되는 방법. - 제18항에 있어서,
상기 공유 리소스 로직에 의해서, 상기 제1 기간 동안 상기 스레드에 할당된 상기 엔트리 수가 제1 임계값을 만족하고 그리고 상기 제1 기간 동안 상기 스레드에 대한 상기 공유 리소스의 상기 활성 엔트리 수가 제2 임계값을 만족한다고 결정함에 응답하여, 상기 제2 기간 동안 상기 스레드에 대한 상기 공유 리소스에 대해 상기 스레드에 할당된 상기 할당 제한을 감소시키는 단계를 더 포함하는, 컴퓨터로 구현되는 방법. - 제17항에 있어서,
상기 스레드에 대한 유용성 메트릭(usefulness metric)을 결정하는 단계, 상기 유용성 메트릭은 상기 스레드에 할당된 상기 엔트리 수에 대한 상기 스레드에 대한 상기 공유 리소스의 상기 활성 엔트리 수의 비율이며; 및
상기 스레드에 대한 상기 할당 제한을 변경할지 여부를 결정하기 위해 상기 스레드에 대한 상기 유용성 메트릭을 유용성 임계값과 비교하는 단계
를 더 포함하는, 컴퓨터로 구현되는 방법. - 다중-스레드 시스템으로서,
복수의 엔트리들을 갖는 공유 리소스; 및
공유 리소스 할당 로직을 포함하고,
상기 공유 리소스 할당 로직은, 상기 다중-스레드 시스템에서 실행되는 스레드에 할당 제한을 할당하도록 구성되며, 상기 할당 제한은 스레드에 할당된 이전(prior) 할당 제한 및 스레드에 대한 공유 리소스 내의 활성 엔트리들의 이전 개수(prior number)에 기초하여 결정되는, 다중-스레드 시스템.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/585,424 US11294724B2 (en) | 2019-09-27 | 2019-09-27 | Shared resource allocation in a multi-threaded microprocessor |
US16/585,424 | 2019-09-27 | ||
PCT/US2020/050388 WO2021061427A1 (en) | 2019-09-27 | 2020-09-11 | Shared resource allocation in a multi-threaded microprocessor |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220065037A true KR20220065037A (ko) | 2022-05-19 |
Family
ID=72659895
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227013301A KR20220065037A (ko) | 2019-09-27 | 2020-09-11 | 다중 스레드 마이크로프로세서의 공유 리소스 할당 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11294724B2 (ko) |
EP (1) | EP4035004A1 (ko) |
JP (1) | JP2022550064A (ko) |
KR (1) | KR20220065037A (ko) |
CN (1) | CN114651235A (ko) |
WO (1) | WO2021061427A1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11144353B2 (en) | 2019-09-27 | 2021-10-12 | Advanced Micro Devices, Inc. | Soft watermarking in thread shared resources implemented through thread mediation |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7360064B1 (en) | 2003-12-10 | 2008-04-15 | Cisco Technology, Inc. | Thread interleaving in a multithreaded embedded processor |
US7688746B2 (en) | 2003-12-29 | 2010-03-30 | Intel Corporation | Method and system for dynamic resource allocation |
US8087029B1 (en) | 2006-10-23 | 2011-12-27 | Nvidia Corporation | Thread-type-based load balancing in a multithreaded processor |
US8521993B2 (en) | 2007-04-09 | 2013-08-27 | Intel Corporation | Providing thread fairness by biasing selection away from a stalling thread using a stall-cycle counter in a hyper-threaded microprocessor |
US8335911B2 (en) | 2009-05-21 | 2012-12-18 | Oracle America, Inc. | Dynamic allocation of resources in a threaded, heterogeneous processor |
US8347309B2 (en) | 2009-07-29 | 2013-01-01 | Oracle America, Inc. | Dynamic mitigation of thread hogs on a threaded processor |
US9396030B2 (en) | 2013-03-13 | 2016-07-19 | Samsung Electronics Co., Ltd. | Quota-based adaptive resource balancing in a scalable heap allocator for multithreaded applications |
US11175960B2 (en) * | 2018-12-05 | 2021-11-16 | Electronics And Telecommunications Research Institute | Worker-scheduling method in cloud-computing system and apparatus for the same |
-
2019
- 2019-09-27 US US16/585,424 patent/US11294724B2/en active Active
-
2020
- 2020-09-11 EP EP20781165.4A patent/EP4035004A1/en active Pending
- 2020-09-11 WO PCT/US2020/050388 patent/WO2021061427A1/en active Application Filing
- 2020-09-11 CN CN202080077740.9A patent/CN114651235A/zh active Pending
- 2020-09-11 JP JP2022519140A patent/JP2022550064A/ja active Pending
- 2020-09-11 KR KR1020227013301A patent/KR20220065037A/ko active Search and Examination
Also Published As
Publication number | Publication date |
---|---|
EP4035004A1 (en) | 2022-08-03 |
US20210096920A1 (en) | 2021-04-01 |
JP2022550064A (ja) | 2022-11-30 |
WO2021061427A1 (en) | 2021-04-01 |
US11294724B2 (en) | 2022-04-05 |
CN114651235A (zh) | 2022-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9256471B2 (en) | Task scheduling method for priority-based real-time operating system in multicore environment | |
US6658447B2 (en) | Priority based simultaneous multi-threading | |
US8387052B2 (en) | Adaptive partitioning for operating system | |
US8397236B2 (en) | Credit based performance managment of computer systems | |
US8069444B2 (en) | Method and apparatus for achieving fair cache sharing on multi-threaded chip multiprocessors | |
US8875146B2 (en) | Systems and methods for bounding processing times on multiple processing units | |
US7984447B1 (en) | Method and apparatus for balancing project shares within job assignment and scheduling | |
US7844968B1 (en) | System for predicting earliest completion time and using static priority having initial priority and static urgency for job scheduling | |
US8356304B2 (en) | Method and system for job scheduling | |
US9465664B1 (en) | Systems and methods for allocation of environmentally regulated slack | |
US8640133B2 (en) | Equal duration and equal fetch operations sub-context switch interval based fetch operation scheduling utilizing fetch error rate based logic for switching between plurality of sorting algorithms | |
EP3543852B1 (en) | Systems and methods for variable rate limiting of shared resource access | |
JP2004532444A (ja) | マルチスレッドプロセッサ上の優先順位及び命令速度の制御 | |
JP2009528610A (ja) | タスクの実行フェーズに基づいてキャッシュパーティションを動的にリサイズする方法及び装置 | |
JP2005509976A (ja) | 予算剰余をタスクに割り当てるための方法及びシステム | |
US8214836B1 (en) | Method and apparatus for job assignment and scheduling using advance reservation, backfilling, and preemption | |
US20160179575A9 (en) | Adaptive partitioning for operating system | |
CN112925616A (zh) | 任务分配方法、装置、存储介质及电子设备 | |
KR20220065037A (ko) | 다중 스레드 마이크로프로세서의 공유 리소스 할당 | |
WO2006129767A1 (ja) | マルチスレッド中央演算装置および同時マルチスレッディング制御方法 | |
CN116244073A (zh) | 混合关键分区实时操作系统的资源感知型任务分配方法 | |
KR20130039479A (ko) | 스레드 프로그레스 트래킹 방법 및 장치 | |
US10180858B2 (en) | Parallel computing device, parallel computing system, and job control method | |
US11138043B2 (en) | System and methods for contingency budgeting for time-partitioned systems | |
US8527999B2 (en) | Method, computer program and device for supervising a scheduler for managing the sharing of processing time in a multi-task computer system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination |