KR101361928B1 - 스레드 이송 시의 캐시 프리필링 - Google Patents

스레드 이송 시의 캐시 프리필링 Download PDF

Info

Publication number
KR101361928B1
KR101361928B1 KR1020127001243A KR20127001243A KR101361928B1 KR 101361928 B1 KR101361928 B1 KR 101361928B1 KR 1020127001243 A KR1020127001243 A KR 1020127001243A KR 20127001243 A KR20127001243 A KR 20127001243A KR 101361928 B1 KR101361928 B1 KR 101361928B1
Authority
KR
South Korea
Prior art keywords
thread
cache
processor core
core
data
Prior art date
Application number
KR1020127001243A
Other languages
English (en)
Other versions
KR20120024974A (ko
Inventor
앤드류 울프
토마스 엠 콘트
Original Assignee
엠파이어 테크놀로지 디벨롭먼트 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 filed Critical 엠파이어 테크놀로지 디벨롭먼트 엘엘씨
Publication of KR20120024974A publication Critical patent/KR20120024974A/ko
Application granted granted Critical
Publication of KR101361928B1 publication Critical patent/KR101361928B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration

Abstract

제 1 코어로부터 제 2 코어로의 스레드 이송 전에 제 2 코어와 관련된 캐시를 프리필링하기 위한 기법들이 일반적으로 개시된다. 본 개시물은, 일부 컴퓨터 시스템들이 복수의 프로세서 코어들을 포함할 수도 있다는 것, 및 일부 코어들이 다른 코어들과는 상이한 하드웨어 능력들을 갖고 있어서 스레드들을 적절한 코어들로 할당하도록 할 수도 있고, 스레드/코어 매핑이 이용될 수도 있고, 일부 경우들에 있어서 스레드가 하나의 코어로부터 다른 코어로 재할당될 수도 있다는 것을 고려한다. 스레드가 제 1 코어로부터 제 2 코어로 이송될 수도 있다는 확률적 예상에서, 제 2 코어와 관련된 캐시가 프리필링될 수도 있다 (예컨대, 스레드가 제 2 코어 상에서 리스케줄링되기 전에 일부 데이터로 필링되게 될 수도 있다). 이러한 캐시는, 예를 들어 제 2 코어 및/또는 관련 버퍼 캐시에 대한 로컬 캐시일 수도 있다.

Description

스레드 이송 시의 캐시 프리필링{CACHE PREFILL ON THREAD MIGRATION}
본 출원은 "CACHE PREFILL ON THREAD MIGRATION" 라는 명칭으로 2009 년 9 월 11 일에 출원된 미국 특허 출원 제 12/557,864 호에 대한 우선권을 주장하며, 그 개시 내용 전체가 여기에 참조로서 인용된다.
본 출원은, 공동 계류 중인 건들로서, Wolfe 등에 의해 2009 년 4 월 21 일에 "THREAD MAPPING IN MULTI-CORE PROCESSORS" 라는 명칭으로 출원된 미국 특허 출원 제 12/427,602 호, Wolfe 등에 의해 2009 년 9 월 11 일에 "THREAD SHIFT: ALLOCATING THREADS TO CORES" 라는 명칭으로 출원된 미국 특허 출원 제 12/557,971 호 및/또는 Wolfe 등에 의해 2009 년 9 월 11 일에 "MAPPING OF COMPUTER THREADS ONTO HETEROGENEOUS RESOURCES" 라는 명칭으로 출원된 미국 특허 출원 제 12/557,985 호와 관련될 수도 있으며, 이들 문헌의 개시 내용들은 여기에서 참조로서 통합된다.
본 개시물은 일반적으로 멀티-코어 컴퓨터 시스템들에 관한 것으로, 특히 코어들 사이의 스레드 이송을 예상하여 데이터를 전달하는 것에 관한 것이다.
본 개시물은 일반적으로 멀티-코어 컴퓨터 프로세싱에 관한 것이다. 특히, 본 개시물은 멀티-코어 컴퓨터 시스템들의 프로세서 코어들 사이에서 스레드들을 이송하는 것에 관한 것이다.
본 개시물의 제 1 양태는 일반적으로 제 1 프로세서 코어로부터 제 2 프로세서 코어로 스레드를 이송하는 방법들을 설명한다. 이러한 방법들은 스레드가 제 1 프로세서 코어 (제 1 캐시와 관련됨) 로부터 제 2 프로세서 코어 (버퍼 및/또는 제 2 캐시와 관련됨) 로 이송될 것을 예상하는 단계를 포함할 수도 있다. 이러한 방법들은 또한 제 1 캐시로부터 버퍼 및/또는 제 2 캐시로 스레드와 관련된 데이터를 전달하는 단계, 및 스레드와 관련된 데이터를 전달한 후에 제 1 프로세서 코어로부터 제 2 프로세서 코어로 스레드를 이송하는 단계를 포함할 수도 있다.
제 1 양태의 일부 예들에서, 방법들은 스레드가 이송될 것을 예상하는 단계 이전에 제 1 프로세서 코어 상에서 스레드를 적어도 부분적으로 실행하는 단계를 포함할 수도 있다. 일부 예들은 또한 스레드를 이송한 후에 제 2 프로세서 코어 상에서 그 스레드를 적어도 부분적으로 실행하는 단계를 포함할 수도 있다.
제 1 양태의 일부 예들에서, 데이터는 스레드와 관련된 캐시 미스, 캐시 히트 및/또는 캐시 라인 축출 (cache line eviction) 을 포함할 수도 있다.
일부 예들에서, 제 2 프로세서 코어는 제 2 캐시와 관련될 수도 있다. 이러한 예들에서, 데이터를 전달하는 단계는 제 1 캐시로부터 제 2 캐시로 데이터를 전달하는 단계를 포함할 수도 있다. 제 1 양태의 일부 예들에서, 제 2 캐시는 스레드와 관련된 기존 데이터를 포함할 수도 있다. 이러한 예들에서, 데이터를 전달하는 단계는 스레드와 관련된 새로운 데이터를 전달하는 단계를 포함할 수도 있다.
제 1 양태의 일부 예들에서, 제 2 프로세서 코어는 버퍼와 관련될 수도 있다. 이러한 예에서, 데이터를 전달하는 단계는 제 1 캐시로부터 버퍼로 데이터를 전달하는 단계를 포함할 수도 있다.
일부 예들에서, 스레드가 제 2 프로세서 코어로 이송될 것을 예상하는 단계는, 적어도, 스레드가 제 2 프로세서 코어로 이송될 임계 확률이 존재하는 것으로 판정하는 단계를 포함할 수도 있다. 일부 예들에서, 스레드가 제 2 프로세서 코어로 이송될 것을 예상하는 단계는 제 2 프로세서 코어의 하드웨어 능력들에 적어도 부분적으로 기초할 수도 있다.
본 개시물의 제 2 양태는 일반적으로 머신 판독가능 명령들이 저장된 저장 매체와 같은 물품들을 설명한다. 프로세싱 유닛(들) 에 의해 실행될 때, 머신 판독가능 명령들은 컴퓨팅 플랫폼을 인에이블링시켜, 스레드가 제 1 프로세서 코어로부터 제 2 프로세서 코어로 리스케줄링될 것을 예측하게 할 수도 있고, 제 2 코어와 관련된 메모리에 스레드와 관련된 데이터를 저장하게 할 수도 있고, 스레드와 관련된 데이터가 제 2 코어와 관련된 메모리에 저장된 후, 제 1 코어로부터 제 2 코어로 스레드를 리스케줄링하게 할 수도 있다.
일부 예들에서, 스레드와 관련된 데이터는 스레드와 관련된 새로운 데이터일 수도 있고, 메모리는 스레드와 관련된 기존 데이터를 포함할 수도 있다. 일부 예들은 컴퓨팅 플랫폼을 인에이블링시켜, 스레드가 리스케줄링될 확률에 적어도 부분적으로 기초하여 스레드가 리스케줄링될 것을 예측하게 할 수도 있다.
제 2 양태의 일부 예들에서, 제 1 프로세서 코어와 관련된 하드웨어 능력들은 제 2 프로세서 코어와 관련된 하드웨어 능력들과는 상이할 수도 있다. 이러한 예들에서, 명령들은 컴퓨팅 플랫폼을 인에이블링시켜, 제 1 프로세서 코어와 관련된 하드웨어 능력들, 제 2 프로세서 코어와 관련된 하드웨어 능력들, 및 스레드와 관련된 하나 이상의 실행 특성(들)에 적어도 부분적으로 기초하여 스레드가 리스케줄링될 것을 예측하게 할 수도 있다.
제 2 양태의 일부 예들에서, 메모리는 캐시 및/또는 버퍼를 포함할 수도 있다. 제 2 양태의 일부 예들에서, 명령들은 컴퓨팅 플랫폼을 인에이블링시켜, 제 2 코어와 관련된 메모리에서의 스레드와 관련된 실질적으로 모든 데이터의 저장에 후속하여 제 1 코어로부터 제 2 코어로 스레드를 리스케줄링하게 할 수도 있다.
본 개시물의 제 3 양태는 일반적으로 캐시를 프리필링하는 방법들을 설명한다. 이러한 예들은 스레드가 이송될 프로세서 코어들을 식별하는 단계, 스레드가 이송될 프로세서 코어들과 관련된 캐시 및/또는 버퍼로 스레드와 관련된 데이터를 전달하는 단계, 및 스레드가 이송될 프로세서 코어들로 스레드를 이송하는 단계를 포함할 수도 있다.
제 3 양태의 일부 예들에서, 데이터를 전달하는 단계는 스레드를 이송하기 전에 실질적으로 완료될 수도 있다. 일부 예들에서, 스레드가 이송될 수도 있는 프로세서 코어를 식별하는 단계는 프로세서 코어(들)와 관련된 성능 카운터를 사용하여 수집된 정보에 적어도 부분적으로 기초할 수도 있다. 일부 예들에서, 성능 카운터를 사용하여 수집된 정보는 프로세서 코어들 상에서 동작하는 개별 스레드들과 관련된 라인 축출들의 수를 포함할 수도 있다.
제 3 양태의 일부 예들에서, 스레드가 이송될 수도 있는 프로세서 코어를 식별하는 단계는 스레드와 관련된 실시간 컴퓨팅 정보에 적어도 부분적으로 기초할 수도 있다. 그러한 예들에서, 스레드가 타깃 데드라인에 늦어지고 있다는 것을 실시간 컴퓨팅 정보가 나타내면, 스레드는 더 빠른 프로세서 코어로 이송될 수도 있다. 일부 예들에서, 스레드와 관련된 데이터를 전달하는 단계는 현재 프로세서 코어와 관련된 제 1 캐시로부터 스레드가 이송될 수도 있는 프로세서 코어와 관련된 제 2 캐시로 데이터를 전달하는 단계를 포함할 수도 있다.
본 개시물의 제 4 양태는 일반적으로 멀티-코어 시스템들을 설명한다. 이러한 멀티-코어 시스템들은 제 1 프로세서 코어, 제 1 프로세서 코어와 관련된 제 1 캐시, 제 2 프로세서 코어, 및 제 2 프로세서 코어와 관련된 제 2 캐시 및/또는 버퍼를 포함할 수도 있다. 멀티-코어 시스템은, 제 1 캐시로부터 제 2 캐시 및/또는 버퍼로 데이터를 전달하도록, 또한 후속하여 제 1 프로세서 코어로부터 제 2 프로세서 코어로 스레드를 이송하도록 구성될 수도 있으며, 스레드는 데이터와 관련된다.
일부 예들에서, 멀티-코어 프로세서가 이종 하드웨어를 포함하도록, 제 1 프로세서 코어는 제 1 능력을 가질 수도 있고 제 2 프로세서 코어는 제 1 능력과는 상이한 제 2 능력을 가질 수도 있다. 일부 예들에서, 제 1 능력 및 제 2 능력 각각은 그래픽 리소스, 수학적 계산 리소스, 명령 세트, 엑셀러레이터, SSE, 캐시 사이즈 및/또는 브랜치 예측기에 대응한다. 일부 예들에서, 데이터는 스레드와 관련된 캐시 미스, 캐시 히트, 및/또는 캐시 라인 축출을 포함할 수도 있다.
전술한 개요는 단지 예시일 뿐이며, 어떤 방식으로든 제한하는 것으로 의도되지 않는다. 전술한 예시적인 양태들, 실시형태들, 및 특징들 외에도, 추가의 양태들, 실시형태들, 및 특징들은 도면 및 다음의 상세한 설명을 참조하면 명백해질 것이다.
본 발명의 전술한 특징들 및 그 밖의 특징들은 첨부한 도면과 결부시킨 다음의 설명 및 첨부한 특허청구범위로부터 보다 충분히 명백해질 것이다. 이러한 도면들은 단지 본 발명에 따른 여러 실시형태들만을 도시한 것이고, 그에 따라 그것의 범주를 제한하는 것으로 간주되어서는 안 된다는 것을 이해하면, 본 개시물은 첨부한 도면들의 이용을 통해 추가적인 특수성 및 세부사항과 함께 설명될 것이다.
도 1 은 예시적인 멀티-코어 시스템을 도시한 블록도이다;
도 2 는 성능 카운터를 포함하는 예시적인 멀티-코어 시스템을 도시한 블록도이다;
도 3 은 제 1 프로세서 코어로부터 제 2 프로세서 코어로 스레드를 이송하기 위한 예시적인 방법을 설명하는 흐름도이다;
도 4 는 머신-판독가능 명령들을 포함하는 저장 매체를 포함하는 예시적인 물품을 도시한 개략도이다;
도 5 는 캐시를 프리필링하기 위한 예시적인 방법을 도시한 흐름도이다; 및
도 6 은 캐시 프리필링 구현들을 위해 배열될 수도 있는 예시적인 컴퓨팅 디바이스를 도시한 블록도이다;
모든 도면은 본 개시물의 적어도 일부의 실시형태들에 따라 구성된다.
다음의 상세한 설명에서는, 본 명세서의 일부분을 형성하는 첨부 도면이 참조된다. 도면에서, 유사한 부호들은, 문맥상 다른 것을 지시하는 것이 아니라면, 통상적으로 유사한 콤포넌트들을 식별한다. 상세한 설명, 도면 및 특허청구범위에서 설명되는 예시적인 실시형태들은 제한하는 것으로 되지 않는다. 다른 실시형태들이 이용될 수도 있고, 본 명세서에서 제시되는 주제의 사상 또는 범주로부터 벗어나지 않고 다른 변경들이 이루어질 수도 있다. 본 발명의 양태들은, 본 명세서에서 일반적으로 설명되고 도면에 도시된 바와 같이, 매우 다양한 여러 가지 구성들로 배열, 치환, 조합 및 설계될 수도 있으며, 그들 모두는 명백하게 고려되고 본 개시물의 일부분을 이룬다는 것이 용이하게 이해될 것이다.
본 개시물은, 그 중에서도, 일반적으로 멀티-코어 컴퓨터들에 관련되고, 특히 코어들 사이의 스레드 이송을 예상하여 데이터를 전달하는 것에 관련된 방법들, 시스템들, 디바이스들, 및/또는 장치에 대해 묘화한다.
본 개시물은 일부 컴퓨터 시스템들이 복수의 프로세서 코어들을 포함할 수도 있다는 것을 고려한다. 이종 하드웨어를 갖는 멀티-코어 시스템에서, 일부 코어들은 다른 코어들에 대해 이용될 수 없는 특정 하드웨어 능력들을 가질 수도 있다. 예시적인 코어는 캐시와 관련될 수도 있으며, 이러한 캐시는 빈번하게 액세스된 데이터가 신속한 액세스를 위해 저장될 수도 있는 일시적인 저장 영역을 포함할 수도 있다. 이러한 캐시는, 예를 들어 로컬 캐시 및/또는 관련 버퍼 캐시일 수도 있다. 일부 예시적인 컴퓨터 시스템들에서, 적어도 하나의 스레드 (명령들의 시퀀스일 수도 있으며, 다른 스레드들과 병렬로 실행할 수도 있음) 는 적절한 코어에 할당될 수도 있다. 스레드/코어 맵핑은 스레드들을 적절한 코어들과 연관시키는 데 이용될 수도 있다. 일부 예시적인 컴퓨터 시스템들에서, 스레드는 스레드의 실행이 완료되기 전에 하나의 코어로부터 다른 코어로 재할당될 수도 있다.
본 개시물은, 스레드가 제 1 코어로부터 제 2 코어로 리스케줄링될 때, 제 2 코어와 관련된 캐시가 프리필링 (pre-fill) 될 수도 있음을 설명한다. 다시 말해, 제 2 코어와 관련된 캐시는, 스레드가 제 2 코어 상에서 리스케줄링되기 전에 스레드-관련 데이터로 적어도 부분적으로 필링될 수도 있다.
도 1 은 본 발명의 적어도 일부의 실시형태들에 따라 배열된 예시적인 멀티-코어 시스템 (100) 을 도시한 블록도이다. 예시적인 멀티-코어 시스템 (100) 은 복수의 프로세서 코어들 (101, 102, 103, 및/또는 104) 을 포함할 수도 있다. 개별적인 코어들 (101, 102, 103, 및/또는 104) 은 하나 이상의 캐시들 (111, 112, 113, 및/또는 114) 및/또는 버퍼들 (128) 과 관련될 수도 있다. 예시적인 실시형태에서, 멀티-코어 시스템 (100) 은 제각각 상이한 능력들을 갖는 하나 이상의 코어들 (101, 102, 103, 및/또는 104) 을 포함할 수도 있다. 다시 말해, 멀티-코어 시스템 (100) 은 이종 하드웨어를 포함할 수도 있다. 예를 들어, 코어들 (101, 102) 은 강화된 그래픽 리소스들 (enhanced graphics resources) 을 포함할 수도 있고, 및/또는 코어들 (103, 104) 은 강화된 수학적 계산 리소스들 (enhanced mathematical computational resources) 을 포함할 수도 있다.
예시적인 실시형태에서, 강화된 그래픽 능력들로부터 초기에 이득을 얻을 수도 있는 스레드 (120) 는 초기에 코어 (101) 상에서 실행될 수도 있다. 스레드 (120) 가 강화된 수학적 계산 능력들로부터 이득을 얻을 수도 있다는 기대에 적어도 부분적으로 기초하여, 스레드 (120) 에 관한 데이터 (122) 가 캐시 (114) 내로 프리필링될 수도 있고, 스레드 (120) 는 그것의 실행을 완료하도록 코어 (104) 로 리스케줄링될 수도 있다. 유사하게, 강화된 수학적 계산 능력들로부터 초기에 이득을 얻을 수도 있는 스레드 (124) 는 코어 (103) 상에서 처음 실행될 수도 있다. 스레드 (124) 가 강화된 그래픽 능력들로부터 이득을 얻을 수도 있다는 기대에 적어도 부분적으로 기초하여, 스레드 (124) 에 관한 데이터 (126) 가 버퍼 (128) 내로 프리필링될 수도 있고, 스레드 (124) 는 코어 (102) 로 리스케줄링될 수도 있다. 이 예시적인 실시형태에서, 데이터 (122, 126) 중 하나 이상은, 스레드들 (120, 124) 을 코어들 (104, 102) 로 각각 리스케줄링하기 전에, 캐시 (114) 및/또는 버퍼 (128) 내에 각각 필링될 수도 있다.
일부 예시적인 실시형태들에서, 코어들은 상이한 명령 세트들; 상이한 엑셀러레이터들 (예컨대, DSP들 (디지털 신호 프로세서들)) 및/또는 상이한 SSE들 (스트리밍 SIMD (single instruction, multiple data) 연장부들); (L1 및 L2 캐시들과 같은) 더 크고 및/또는 더 작은 캐시들; 상이한 브랜치 예측기들 (프로그램의 명령 흐름에서 조건부 브랜치가 취해지기 쉬운지 아닌지의 여부를 판정하는 프로세서의 부분들); 기타 등등을 포함할 수도 있다. 코어들 사이의 이러한 차이들 및/또는 다른 차이들에 적어도 부분적으로 기초하여, 상이한 코어들은 특정 태스크들에 대하여 상이한 능력들을 제공할 수도 있다.
일부 예시적인 실시형태들에서, 예를 들어, 일부 스레드들은 하나 이상의 실행 특성들과 관련될 수도 있는데, 이들은 하나 이상의 성능 카운터들에 의해 수집된 정보에 표현될 수도 있고 및/또는 그러한 정보에 기초할 수도 있다. 일부 예시적인 실시형태들에서, 스레드 매핑은 실행 특성들 중 하나 이상의 특성들에 적어도 부분적으로 기초할 수도 있다.
일부 예시적인 실시형태들에서, 스레드들은 코어들의 하드웨어 능력들에 적어도 부분적으로 기초하여 개별적인 코어들에 매핑될 수도 있다. 예를 들어, 큰 L1 캐시 (메모리) 수요와 관련된 스레드는 대형 L1 캐시 하드웨어를 포함하는 코어에 매핑될 수도 있다. 유사하게, 큰 SSE (명령 세트) 수요와 관련된 스레드는 네이티브 (native) SSE 하드웨어 구현을 포함하는 코어에 매핑될 수도 있다. 이러한 예시들은 비제한적이며, 스레드들이 임의의 하드웨어 특성, 명령 세트, 및/또는 코어 및/또는 스레드의 다른 특성에 적어도 부분적으로 기초하여 매핑될 수도 있다는 것이 이해될 것이다.
일부 예시적인 실시형태들에서, 스레드 실행 특성들은 스레드에서 구동하는 프로그램의 페이즈 (phase) 에 기초하여 시간에 따라 변할 수도 있다. 예를 들어, 스레드는 원래 큰 L1 캐시 수요를 가질 수도 있지만, 향후, 최소 L1 캐시 수요를 가질 수도 있다. 스레드는 그것의 실행 동안 상이한 시간들에서 상이한 코어들에 매핑될 수도 있으며, 이는 개선된 성능을 가져올 수도 있다. 예를 들어, 스레드는, L1 수요가 높을 때에는 비교적 큰 L1 캐시를 포함하는 코어에 매핑될 수도 있고, L1 수요가 더 낮을 때에는 더 작은 L1 캐시를 갖는 코어에 매핑될 수도 있다.
일부 예시적인 실시형태들에서, 스레드를 상이한 코어로 이송할 것인지의 여부 및 그러한 이송을 언제 수행할 것인지를 결정하는 것은 그 스레드의 사전 실행과 관련된 데이터를 포함할 수도 있는 실행 프로파일의 적어도 일부분을 실행하는 것을 포함할 수도 있다. 일부 예시적인 실시형태들에서, 실행 프로파일은, 미국 특허 출원 공개 공보 제 2007/0050605 호에 개시된 바와 같은 프리즈-드라이드 고스트 페이지 실행 프로파일 (freeze-dried ghost page execution profile) 생성 방법을 이용하여 생성될 수도 있는데, 이 문헌은 여기에 참조로서 통합된다. 이 방법은 섀도우 프로세서, 또는 일부 실시형태들에서는 섀도우 코어를 사용하여, 스레드의 적어도 일부분의 실행을 미리 시뮬레이션하고 이 실행과 관련된 성능 통계치 및 측정치를 생성할 수도 있다.
일부 예시적인 실시형태들에서, 운영 시스템 내의 스레드 스케줄러는 스레드 이송에 대한 확률을 확립할 수도 있다. 예를 들어 스케줄러는 펜딩 스레드 큐를 조사하여, 얼마나 많은 스레드들이 스케줄링될 것을 대기하고 있고 그러한 스레드들 중 얼마나 많은 스레드들이 코어 2 상에서 스케줄링될 것을 선호할 것인지를 판정하도록 할 수도 있다. 스케줄러는 또한 완료하는 데에 코어 1 상에서 실행되고 있는 현재 스레드 (스레드 A) 중 현재 부분이 얼마나 오랫동안 필요할 것인지를 추정할 수도 있다. 이후, 추정은, 스레드 A 가 리스케줄링을 요구하기 전에, 대기 중인 스레드들 중 하나가 코어 2 상에서 스케줄링될 가능성을 판정하도록 수행될 수도 있다. 이 확률이 미리 결정된 임계치를 초과하는 경우, 스레드 A 에 관련된 데이터가 코어 2 캐시로 이송될 수도 있다.
일부 예시적인 실시형태들에서, 프로세서들 및/또는 캐시들은 프로그램이 실행될 때의 정보를 수집하도록 적응될 수도 있다. 예를 들어, 이러한 정보는 그 프로그램이 어떤 캐시 라인들을 포함하는지를 참조할 수도 있다. 일부 예시적인 실시형태들에서, 캐시 사용에 관한 데이터는 (남은 스레드 프로세스의 라인들의 수를 카운트함으로써) 어떤 스레드들이 교체되어야 하는지를 판정하도록 평가될 수도 있다. 예시적인 실시형태에서, 성능 카운터는 실행 중인 스레드들의 라인 축출들 (line evictions) 을 추적하도록 구성될 수도 있고, 및/또는 더 높은 우선순위의 태스크를 시작하도록 하기 위해 그 정보를 이용하여 플러시될 수도 있는 태스크들을 결정할 수도 있다. 성능 카운터는 또한 태스크가 시작된 이래로 라인 축출들을 추적하도록 구성될 수도 있다. 성능 카운터 데이터는 전술한 리스케줄링 확률들의 추정치들에 포함될 수도 있다.
도 2 는, 본 개시물의 적어도 일부 실시형태들에 따라 배열된, 성능 카운터 (218) 를 포함하는 예시적인 멀티-코어 시스템 (200) 을 도시한 블록도이다. 코어들 (202, 204 및/또는 206) (캐시들 (212, 214, 및/또는 216) 과 관련될 수도 있음) 은 성능 카운터 (218) 에 동작 가능하게 커플링될 수도 있다. 성능 카운터 (218) 는, 예를 들어 컴퓨터 시스템 내의 하드웨어 관련 활동들에 대한 카운트들을 저장하도록 구성될 수도 있다. (예를 들어, 코어 (202) 로부터 코어 (204) 로의) 스레드 (220) 이송은 성능 카운터 (218) 에 의해 수집된 데이터를 이용하여 적어도 부분적으로 결정될 수도 있다. 일부 예시적인 실시형태들에서, 데이터 (222) 는 스레드 (220) 의 이송 이전에 캐시 (212) 로부터 캐시 (214) 내로 프리필링될 수도 있다.
일부 예시적인 실시형태들은 특정 태스크에 대한 캐시 풋프린트의 사이즈를 고려할 수도 있다. 일부 예시적인 실시형태들에서, 블룸 필터들 (Bloom filters) 은 스레드에 대한 캐시 풋프린트가 얼마나 큰 지에 대한 특성을 기술하는 데 사용될 수도 있다. 예시적인 블룸 필터는 엘리먼트가 세트의 멤버인지를 테스트하는 데 이용될 수도 있는 공간 효율적 확률 데이터 구조물일 수도 있다. 일부 예시적인 블룸 필터들을 사용하는 경우, 가긍정적 판단 (false positives) 이 가능하지만, 가부정적 판단 (false negatives) 은 가능하지 않다. 일부 예시적인 블룸 필터들에서, 엘리먼트들은 세트에 추가될 수도 있지만, (카운팅 필터로 어드레싱될 수도 있다고 하더라도) 제거되지 못할 수도 있다. 일부 예시적인 블룸 필터들에서, 더 많은 엘리먼트들이 세트에 추가될수록, 가긍정적 판단의 확률은 더 커진다. 비어 있는 블룸 필터는 모두가 0 으로 설정된 m 비트들의 비트 어레이일 수도 있다. 또한, k 개의 상이한 해시 함수들이 정의될 수도 있는데, 이들 각각은 균일한 랜덤 분포를 갖는 m 개의 어레이 위치들 중 하나에 일부 세트 엘리먼트를 맵핑시키거나 해시 (hash) 시킬 수도 있다. 엘리먼트를 추가하기 위해, 그 엘리먼트는 k 개의 해시 함수들 각각으로 제공되어 k 개의 어레이 위치들을 얻게 할 수도 있다. 이러한 위치들에서의 비트들은 1 로 설정될 수도 있다. 엘리먼트에 질의하기 위해 (예컨대, 그것이 세트 내에 있는지의 여부를 테스트하기 위해), 그 엘리먼트는 k 개의 해시 함수들 각각으로 제공되어 k 개의 어레이 위치들을 얻게 할 수도 있다. 일부 예시적인 블룸 필터들에서, 이러한 위치들 중 임의의 위치에서의 비트가 0 인 경우, 그 엘리먼트는 세트 내에 있지 않은데; 그 엘리먼트가 세트 내에 있었다면, k 개의 어레이 위치들에 있는 모든 비트들은 그것이 삽입되었을 때 1 로 설정되었었을 것이다. 일부 예시적인 블룸 필터들에서, k 개의 어레이 위치들에 있는 모든 비트들이 1 이면 어느 쪽이든 엘리먼트는 세트 내에 있고, 또는 다른 엘리먼트들의 삽입 동안에는 비트들이 1 로 설정되었다.
일부 예시적인 실시형태들에서, 블룸 필터는 캐시의 어떤 부분들이 현재 스레드에 의해 사용되고 있는지를 추정하는 데 사용될 수도 있다. 예를 들어, 필터는 초기에 스레드가 코어 상에서 스케줄링될 때 비어 있을 수도 있다. 캐시 라인이 스레드에 의해 이용될 때마다, 그것은 필터 세트에 추가될 수도 있다. 질의들의 시퀀스는 캐시 데이터 이송의 비용을 평가하기 위해 스레드 풋프린트를 추정하는 데 이용될 수도 있다. 일부 예시적인 실시형태들에서는, 필터에서의 "1" 비트들의 수의 간단한 모집단 (population) 카운트가 스레드의 캐시 풋프린트를 추정하는 데 이용될 수도 있다. 일부 예시적인 실시형태들에서는, 카운팅 블룸 필터들이 이용될 수도 있다. 카운팅 블룸 필터에서, 각각의 필터 엘리먼트는, 캐시 라인이 스레드에 의해 사용될 때에는 증가할 수도 있고 캐시 라인이 무효화될 때에는 감소할 수도 있는 카운터일 수도 있다.
일부 예시적인 실시형태들에서, 스레드들과 관련된 데이터는 스레드가 언제 다른 코어로 이송되어야 하는지 및/또는 스레드가 어떤 코어로 이송되어야 하는지를 판정하도록 평가될 수도 있다. 예를 들어, 시스템은 스레드와 관련되는 실시간 컴퓨팅 (RCT) 데이터를 이용하여, 그 스레드가 타깃 데드라인에 늦어지고 있는지의 여부를 판정할 수도 있다. 예를 들어, 스레드가 타깃 데드라인에 늦어지고 있다면, 그 스레드는 더 빠른 코어 (예컨대, 더 높은 클록 속도에서 동작하는 코어) 로 이송될 수도 있다.
일부 예시적인 실시형태들에서, 스레드 이송에 대한 캐시 데이터는 프리페치 (pre-fetch) 될 수도 있다. 프리페치는 본 분야에서 공지된 바와 같은 하드웨어 프리페처 (prefetcher) 에 의해 수행될 수도 있다. 이러한 프리페처 하나는 미국 특허 제 7,318,125 호에 개시되어 있으며, 이 문헌은 여기에 참조로서 통합된다. 즉, 시스템이 스레드를 새로운 코어로 이송할 준비를 하고 있는 경우, 현재 코어로부터의 레퍼런스들이 이송을 준비할 새로운 코어로 전송될 수도 있다. 따라서, 새로운 코어는 이송을 준비하여 "워밍업"될 수도 있다. 일부 실시형태들에서, 이송될 스레드에 관한 실질적으로 모든 데이터는 새로운 코어에 의해 프리페치될 수도 있다. 일부 다른 예시적인 실시형태들에서, 이송될 스레드에 관한 데이터의 일부분은 새로운 코어에 의해 프리페치될 수도 있다. 예를 들어, 캐시 미스들, 히트들, 및/또는 라인 축출들이 프리페치될 수도 있다. 일부 예시적인 실시형태들에서는, 예를 들어, 새로운 코어에서 데이터를 캐싱하는 것 (및 그에 의해 궁극적으로 요구되지 않을 수도 있는 데이터로 새로운 코어를 필링하는 것) 이 아니라, 사이드/스트림 버퍼에 데이터가 프리페치될 수도 있다.
여기에서 사용되는 바와 같이, "캐시 히트"는 캐싱된 데이터 및 대응하는 데이터를 참조하고자 하는 성공적인 시도를 지칭할 수도 있다. 여기에서 사용되는 바와 같이, "캐시 미스"는 캐시에서 발견되지 않은 데이터 및 대응하는 데이터를 참조하고자 하는 시도를 지칭할 수도 있다. 여기에서 사용되는 바와 같이, "라인 축출"은, 캐시에 상이한 데이터에 대한 공간을 만드는 것과 같이, 캐시로부터 캐싱된 라인을 제거하는 것을 지칭할 수도 있다. 라인 축출은 또한 라이트-백 (write-back) 동작을 포함할 수도 있어, 그에 의해, 캐시로부터 제거되기 전에 캐시에서의 변형된 데이터가 메인 메모리 또는 상위 캐시 레벨에 기록되게 할 수도 있다.
스레드 이송은, 예를 들어 시간에 따른 스레드 실행 특성들의 변화, 성능 카운터와 관련된 데이터, 및/또는 스레드들과 관련된 데이터 (예컨대, RTC 컴퓨팅 데이터) 에 적어도 부분적으로 기초하여 기대 및/또는 예상될 수도 있다.
도 3 은, 본 개시물의 적어도 일부 실시형태들에 따라 배열된, 제 1 프로세서 코어로부터 제 2 프로세서 코어로 스레드를 이송하기 위한 예시적인 방법 (300) 을 도시한 흐름도이다. 예시적인 방법들 (300) 은 프로세싱 동작들 (302, 304, 306, 308, 및/또는 310) 중 하나 이상을 포함할 수도 있다.
프로세싱은 동작 (304) 에서 시작할 수도 있는데, 이는 스레드가 제 1 캐시와 관련된 제 1 프로세서 코어로부터 제 2 프로세서 코어로 이송될 것을 예상하는 단계를 포함할 수도 있으며, 여기서 제 2 프로세서 코어는 버퍼 및/또는 제 2 캐시 중 하나 이상의 것과 관련된다. 동작 (304) 은 동작 (306) 에 선행될 수도 있으며, 동작 (306) 은 스레드와 관련된 데이터를 제 1 캐시로부터 버퍼 및/또는 제 2 캐시 중 하나 이상의 것으로 전달하는 단계를 포함할 수도 있다. 동작 (306) 은 동작 (308) 에 선행될 수도 있으며, 동작 (308) 은 제 1 프로세서 코어로부터 제 2 프로세서 코어로 스레드를 이송하는 단계를 포함할 수도 있다.
일부 예시적인 방법들은 동작 (304) 이전에 동작 (302) 을 포함할 수도 있다. 동작 (302) 은 제 1 프로세서 코어 상에서 스레드를 적어도 부분적으로 실행하는 단계를 포함할 수도 있다. 일부 예시적인 방법들은 동작 (308) 후에 동작 (310) 을 포함할 수도 있다. 동작 (310) 은 제 2 프로세서 코어 상에서 스레드를 적어도 부분적으로 실행하는 단계를 포함할 수도 있다.
도 4 는, 본 개시물의 적어도 일부 실시형태들에 따라 배열된, 머신 판독가능 명령들을 포함하는 저장 매체 (400) 를 포함하는 예시적인 물품을 도시한 개략도이다. 하나 이상의 프로세싱 유닛들에 의해 실행될 때, 머신 판독가능 명령들은 컴퓨팅 플랫폼을 동작가능하게 인에이블링시켜, 스레드가 제 1 프로세서 코어로부터 제 2 프로세서 코어로 리스케줄링될 것을 예측하게 할 수도 있고 (동작 402); 스레드와 관련된 데이터를 제 2 코어와 관련된 메모리에 저장하게 할 수도 있고 (동작 404); 및 제 1 코어로부터 제 2 코어로 스레드를 리스케줄링하게 할 수도 있다 (동작 406).
도 5 는, 본 개시물의 적어도 일부 실시형태들에 따라, 캐시를 프리필링하기 위한 예시적인 방법 (500) 을 도시한 흐름도이다. 예시적인 방법들 (500) 은 프로세싱 동작들 (502, 504, 및/또는 506) 중 하나 이상을 포함할 수도 있다.
방법 (500) 에 대한 프로세싱은 동작 (502) 에서 시작할 수도 있는데, 이는 스레드가 이송될 수도 있는 하나 이상의 프로세서 코어들을 식별하는 단계를 포함할 수도 있다. 동작 (502) 은 동작 (504) 에 선행될 수도 있으며, 동작 (504) 은 스레드와 관련된 데이터를 스레드가 이송될 수도 있는 프로세서 코어와 관련된 캐시 및/또는 버퍼 중 하나 이상의 것으로 전달하는 단계를 포함할 수도 있다. 동작 (504) 은 동작 (506) 에 선행될 수도 있으며, 동작 (506) 은 스레드를 그 스레드가 이송될 수도 있는 프로세서 코어로 이송하는 단계를 포함할 수도 있다.
도 6 은, 본 개시물의 적어도 일부 실시형태들에 따라, 캐시 프리필링을 위해 배열된 예시적인 컴퓨팅 디바이스 (900) 를 도시한 블록도이다. 매우 기본적인 구성 (901) 에서, 컴퓨팅 디바이스 (900) 는 일반적으로 하나 이상의 프로세서들 (910) 및 시스템 메모리 (920) 를 포함할 수도 있다. 메모리 버스 (930) 는 프로세서 (910) 와 시스템 메모리 (920) 사이에서 통신하는 데 사용될 수 있다.
바람직한 구성에 따르면, 프로세서 (910) 는 마이크로프로세서 (μP), 마이크로제어기 (μC), 디지털 신호 프로세서 (DSP), 또는 이들의 임의의 조합을 포함하지만 이들로 제한되지 않는 임의의 타입의 것일 수 있다. 프로세서 (910) 는 레벨 1 캐시 (911) 및 레벨 2 캐시 (912) 와 같은 하나 이상의 캐싱 레벨들, 프로세서 코어 (913), 및 레지스터들 (914) 을 포함할 수 있다. 프로세서 코어 (913) 는 산술 논리 유닛 (ALU), 부동소수점 처리 유닛 (FPU), 디지털 신호 프로세싱 코어 (DSP 코어), 또는 이들의 임의의 조합을 포함할 수 있다. 메모리 제어기 (915) 는 또한 프로세서 (910) 와 함께 사용될 수 있으며, 또는 일부 구현들에서, 메모리 제어기 (915) 는 프로세서 (910) 의 내부 부품일 수 있다.
바람직한 구성에 따르면, 시스템 메모리 (920) 는 휘발성 메모리 (예컨대, RAM), 비휘발성 메모리 (예컨대, ROM, 플래시 메모리 등) 또는 이들의 임의의 조합을 포함하지만 이들로 제한되지 않는 임의의 타입의 것일 수 있다. 시스템 메모리 (920) 는 일반적으로 운영 시스템 (921), 하나 이상의 애플리케이션들 (922), 및 프로그램 데이터 (924) 를 포함한다. 애플리케이션 (922) 은 리스케줄링을 예상하고 캐시를 프리필링하도록 배열될 수도 있는 캐시 프리필링 알고리즘 (923) 을 포함할 수도 있다. 프로그램 데이터 (924) 는, 하기에 더 설명되는 바와 같이, 캐시를 프리필링하는 데 유용할 수도 있는 캐시 프리필링 데이터 (925) 를 포함할 수도 있다. 일부 실시형태들에서, 애플리케이션 (922) 은, 여기에서 설명되는 기법들에 따라 캐시가 프리필링될 수 있도록, 운영 시스템 (921) 상에서 프로그램 데이터 (924) 로 동작하도록 배열될 수 있다. 이와 같이 설명된 기본 구성은 도 6 에서 파선 (901) 내의 콤포넌트들로 도시된다.
컴퓨팅 디바이스 (900) 는 추가적인 특징들 또는 기능성, 및 기본 구성 (901) 과 임의의 요구되는 디바이스들 및 인터페이스들 사이에서의 통신들을 용이하게 하는 추가 인터페이스들을 가질 수 있다. 예를 들어, 버스/인터페이스 제어기 (940) 는 저장부 인터페이스 버스 (941) 를 통해 기본 구성 (901) 과 하나 이상의 데이터 저장 디바이스들 (950) 사이의 통신을 용이하게 하는 데 사용될 수 있다. 데이터 저장 디바이스들 (950) 은 탈착가능 저장 디바이스들 (951), 탈착불능 저장 디바이스들 (952), 또는 이들의 조합일 수 있다. 탈착가능 저장부 및 탈착불능 저장 디바이스들의 예들은, 몇 가지만 예를 들면, 플렉시블 디스크 드라이브들 및 하드디스크 드라이브들 (HDD) 과 같은 자기적 디스크 디바이스들, 콤팩트디스크 (CD) 드라이브들 또는 디지털 다용도 디스크 (DVD) 드라이브들과 같은 광학적 디스크 드라이브들, 솔리드 스테이트 드라이브들 (SSD) 및 테이프 드라이브들을 포함한다. 예시적인 컴퓨터 저장 매체는 컴퓨터 판독가능 명령들, 데이터 구조들, 프로그램 모듈들, 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성의 탈착가능 및 탈착불능 매체를 포함할 수 있다.
시스템 메모리 (920), 탈착가능 저장부 (951) 및 탈착불능 저장부 (952) 는 컴퓨터 저장 매체의 모든 예들이다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, 디지털 다용도 디스크들 (DVD) 또는 다른 광학적 저장부, 자기 카세트들, 자기 테이프, 자기 디스크 저장부 또는 다른 자기 저장 디바이스들, 또는 요망되는 정보를 저장하는 데 사용될 수 있고 컴퓨팅 디바이스 (900) 에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만 이들로 제한되지 않는다. 임의의 이러한 컴퓨터 저장 매체는 디바이스 (900) 의 일부분일 수 있다.
컴퓨팅 디바이스 (900) 는 또한 버스/인터페이스 제어기 (940) 를 통한 다양한 인터페이스 디바이스들 (예컨대, 출력 인터페이스들, 주변장치 인터페이스들, 및 통신 인터페이스들) 로부터 기본 구성 (901) 으로의 통신을 용이하게 하기 위한 인터페이스 버스 (942) 를 포함할 수 있다. 예시적인 출력 디바이스들 (960) 은 그래픽 프로세싱 유닛 (961) 및 오디오 프로세싱 유닛 (962) 을 포함하는데, 이들은 하나 이상의 A/V 포트들 (963) 을 통해 디스플레이 또는 스피커들과 같은 다양한 외부 디바이스들과 통신하도록 구성될 수 있다. 예시적인 주변장치 인터페이스들 (970) 은 직렬 인터페이스 제어기 (971) 또는 병렬 인터페이스 제어기 (972) 를 포함하는데, 이들은 하나 이상의 I/O 포트들 (973) 을 통해 입력 디바이스들 (예컨대, 키보드, 마우스, 펜, 음성 입력 디바이스, 터치 입력 디바이스 등) 또는 다른 주변장치 디바이스들 (예컨대, 프린터, 스캐너 등) 과 같은 외부 디바이스들과 통신하도록 구성될 수 있다. 예시적인 통신 디바이스 (980) 는 네트워크 제어기 (981) 를 포함하는데, 이는 하나 이상의 통신 포트들 (982) 을 통한 네트워크 통신에 의해 하나 이상의 다른 컴퓨팅 디바이스들 (990) 과의 통신을 용이하게 하도록 배열될 수 있다. 통신 접속은 통신 매체의 일례이다. 통신 매체는 일반적으로 컴퓨터 판독가능 명령들, 데이터 구조들, 프로그램 모듈들, 또는 반송파나 다른 수송 메커니즘과 같은 변조된 데이터 신호에서의 다른 데이터에 의해 구현될 수도 있으며, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호" 는 신호에서의 정보를 인코딩하도록 하는 방식으로 설정되거나 변경된 특성들 중 하나 이상의 특성을 갖는 신호일 수 있다. 제한사항이 아니라 예시로서, 통신 매체는 유선 네트워크 또는 직접적 유선 접속 (direct-wired connection) 과 같은 유선 매체, 및 어쿠스틱, 무선 주파수 (RF), 적외선 (IR) 및 다른 무선 매체와 같은 무선 매체를 포함할 수 있다. 여기에서 사용되는 바와 같은 컴퓨터 판독가능 매체라는 용어는 저장 매체 및 통신 매체 양쪽 모두를 포함할 수 있다.
컴퓨팅 디바이스 (900) 는 셀폰, 개인휴대정보단말기 (PDA), 개인 미디어 플레이어 디바이스, 무선 웹-관람 디바이스, 개인 헤드셋 디바이스, 애플리케이션 특정 디바이스, 또는 상기 기능들 중 임의의 것을 포함하는 하이브리드 디바이스와 같은 소형 폼팩터 (small-form factor) 휴대용 (또는 이동식) 전자 디바이스의 일부분으로서 구현될 수 있다. 컴퓨팅 디바이스 (900) 는 또한 랩톱 컴퓨터 및 비랩톱 컴퓨터 구성들 양쪽 모두를 포함하는 개인용 컴퓨터로서 구현될 수 있다.
여기에 설명된 주제는 때때로 상이한 다른 콤포넌트들 내에 포함되거나 그들과 접속되는 상이한 콤포넌트들을 예시한다. 이러한 도시된 아키텍처들은 단지 예시들에 불과하며, 사실상, 동일한 기능을 달성하는 많은 다른 아키텍처들이 구현될 수도 있다는 것이 이해될 것이다. 개념적인 관점에서, 동일한 기능을 달성하도록 하는 콤포넌트들의 임의의 배열물은 요망되는 기능이 달성되도록 효율적으로 "관련" 된다. 따라서, 여기에서 특정 기능을 달성하도록 조합되는 임의의 2 개의 콤포넌트들은, 아키텍처들 또는 중간 콤포넌트들과는 무관하게, 요망되는 기능이 달성되도록 서로 "관련"되는 것으로 보일 수도 있다. 마찬가지로, 그와 같이 관련되는 임의의 2 개의 콤포넌트들은 요망되는 기능을 달성하도록 서로에게 "동작가능하게 접속된" 또는 "동작가능하게 커플링된" 것으로 보일 수도 있으며, 그와 같이 관련될 수 있는 임의의 2 개의 콤포넌트들은 또한 요망되는 기능을 달성하도록 서로에게 "동작가능하게 커플링 가능한" 것으로 보일 수도 있다. 동작가능하게 커플링 가능한 것의 특정 예시들은, 물리적으로 정합가능한 및/또는 물리적으로 상호 작용하는 콤포넌트들 및/또는 무선으로 상호 작용가능한 및/또는 무선으로 상호 작용하는 콤포넌트들 및/또는 논리적으로 상호 작용하는 및/또는 논리적으로 상호 작용가능한 콤포넌트들을 포함하지만 이들로 제한되지는 않는다.
본 명세서에서의 실질적으로 임의의 복수 용어 및/또는 단수 용어의 사용에 대해서, 당업자는 문맥 및/또는 명세서에 적당하도록 복수로부터 단수로 및/또는 단수에서 복수로 해석할 수도 있다. 다양한 단수/복수의 치환들은 간결성을 위해 여기에서 명백히 설명될 수도 있다.
일반적으로, 본 명세서에서 그리고 특히 첨부된 청구항 (예를 들어, 첨부된 청구항의 본문) 에서 사용되는 용어는 일반적으로 "개방적인" 용어들 (예를 들어, "포함하는" 이라는 용어는 "포함하지만 한정되지 않는" 으로 해석되어야 하고, "갖는" 이라는 용어는 "적어도 갖는" 으로 해석되어야 하고, "포함한다" 라는 용어는 "포함하지만 한정되지 않는다" 로 해석되어야 한다) 로서 의도된다는 것이 당업자에 의해 이해될 것이다. 또한, 도입된 청구항 기재의 특정한 수가 의도되는 경우, 이러한 의도는 청구항에 명시적으로 기재될 것이며, 이러한 기재의 부재 시에 그러한 의도가 없다는 것이 당업자에 의해 이해될 것이다. 예를 들어, 이해를 돕기 위하여, 다음의 첨부된 청구항은 청구항 기재를 도입하기 위한 "적어도 하나" 및 "하나 이상" 의 서두 어구의 사용을 포함할 수도 있다. 그러나, 이러한 어구의 사용은, 동일 청구항이 서두 어구 "하나 이상" 또는 "적어도 하나" 및 "a" 또는 "an" 과 같은 부정관사 (예를 들어, "a" 및/또는 "an" 은 "적어도 하나" 또는 "하나 이상" 을 의미하도록 해석되어야 한다) 를 포함할 때에도, 부정관사 "a" 또는 "an" 에 의한 청구항 기재의 도입이 이렇게 도입된 청구항 기재를 포함하는 임의의 특정 청구항을 하나의 이러한 기재만을 포함하는 실시형태들로 한정한다는 것을 내포하는 것으로 해석되어서는 안 되며, 청구항 기재를 도입하는 데 사용되는 정관사의 사용에 대해서도 동일하게 유효하다. 또한, 도입되는 청구항 기재의 구체적 수가 명시적으로 기재되는 경우에도, 당업자는 이러한 기재가 적어도 기재된 수 (예를 들어, 다른 수식어 없이, "2 개의 기재" 에 대한 그대로의 기재는, 적어도 2 개의 기재들 또는 2 개 이상의 기재들을 의미한다) 를 의미하는 것으로 해석되어야 한다는 것을 인식할 것이다. 또한, "A, B 및 C 중 적어도 하나 등" 과 유사한 관례가 사용되는 경우에서, 일반적으로 이러한 구성은 당업자가 그 관례를 이해할 것이라는 의미로 의도된다 (예를 들어, "A, B 및 C 중 적어도 하나를 갖는 시스템" 은 A 만을, B 만을, C 만을, A 및 B 를 함께, A 및 C 를 함께, B 및 C 를 함께, 및/또는 A, B 및 C 를 함께 등을 갖는 시스템을 포함하지만 이에 한정되지 않을 것이다). "A, B 또는 C 중 적어도 하나 등" 과 유사한 관례가 사용되는 경우에서, 일반적으로 이러한 구성은 당업자가 그 관례를 이해할 것이라는 의미로 의도된다 (예를 들어, "A, B 또는 C" 중 적어도 하나를 갖는 시스템" 은 A 만을, B 만을, C 만을, A 및 B 를 함께, A 및 C 를 함께, B 및 C 를 함께, 및/또는 A, B 및 C 를 함께 등을 갖는 시스템을 포함하지만 이에 한정되지 않을 것이다). 또한, 상세한 설명, 청구범위 또는 도면에서, 2 개 이상의 택일적 용어를 나타내는 실질적으로 임의의 이접 단어 및/또는 어구가 용어들 중 하나, 용어들 중 어느 한쪽 또는 양 용어 모두를 포함할 가능성들을 예상하도록 이해되어야 한다는 것이 당업자에 의해 이해될 것이다. 예를 들어, 어구 "A 또는 B" 는 "A" 또는 "B" 또는 "A 및 B" 의 가능성을 포함하도록 이해될 것이다.
다양한 양태들 및 실시형태들이 여기에 개시되었지만, 다른 양태들 및 실시형태들은 당업자에게 자명할 것이다. 여기에 개시된 다양한 양태들 및 실시형태들은 예증의 목적을 위한 것이고, 제한하는 것으로 의도되지 않으며, 진실한 범주 및 사상은 다음의 특허청구범위에 의해 나타내어진다.

Claims (26)

  1. 제 1 프로세서 코어로부터 제 2 프로세서 코어로 스레드를 이송하는 방법으로서,
    제 1 캐시와 관련된 제 1 프로세서 코어로부터 제 2 프로세서 코어로 스레드가 이송될 것을 예상하는 단계로서, 상기 제 2 프로세서 코어는 버퍼 및/또는 제 2 캐시 중 하나 이상과 관련되고, 상기 제 1 프로세서 코어는 상기 제 2 캐시와 관련이 없고, 상기 제 2 프로세서 코어는 상기 제 1 캐시와 관련이 없는, 상기 스레드가 이송될 것을 예상하는 단계;
    상기 제 1 캐시로부터 상기 버퍼 및/또는 상기 제 2 캐시 중 하나 이상으로 상기 스레드와 관련된 데이터의 적어도 일부를 전달하는 단계; 및
    상기 스레드와 관련된 데이터의 적어도 일부를 전달한 후, 상기 제 1 프로세서 코어로부터 상기 제 2 프로세서 코어로 상기 스레드를 이송하는 단계를 포함하고,
    상기 버퍼 및/또는 상기 제 2 캐시 중 상기 하나 이상은 상기 제 1 프로세서 코어로부터 상기 제 2 프로세서 코어로 상기 스레드를 이송하기 전에 상기 스레드와 관련된 데이터의 적어도 일부로 적어도 부분적으로 채워지는, 스레드를 이송하는 방법.
  2. 제 1 항에 있어서,
    상기 스레드가 이송될 것을 예상하는 단계 이전에, 상기 제 1 프로세서 코어 상에서 상기 스레드를 적어도 부분적으로 실행하는 단계를 더 포함하는, 스레드를 이송하는 방법.
  3. 제 1 항에 있어서,
    상기 스레드를 이송하는 단계 이후에, 상기 제 2 프로세서 코어 상에서 상기 스레드를 적어도 부분적으로 실행하는 단계를 더 포함하는, 스레드를 이송하는 방법.
  4. 제 1 항에 있어서,
    상기 데이터는 상기 스레드와 관련된 캐시 미스, 캐시 히트, 및/또는 캐시 라인 축출 (cache line eviction) 중 하나 이상을 포함하는, 스레드를 이송하는 방법.
  5. 제 1 항에 있어서,
    상기 제 2 프로세서 코어는 상기 제 2 캐시와 관련되고; 및
    상기 데이터를 전달하는 단계는 상기 제 1 캐시로부터 상기 제 2 캐시로 상기 데이터를 전달하는 단계를 포함하는, 스레드를 이송하는 방법.
  6. 제 5 항에 있어서,
    상기 제 2 캐시는 상기 스레드와 관련된 기존 데이터를 포함하고; 및
    상기 데이터를 전달하는 단계는 상기 스레드와 관련된 새로운 데이터를 전달하는 단계를 포함하는, 스레드를 이송하는 방법.
  7. 제 6 항에 있어서,
    상기 새로운 데이터는 상기 스레드와 관련된 캐시 미스, 캐시 히트, 및/또는 캐시 라인 축출 중 하나 이상을 포함하는, 스레드를 이송하는 방법.
  8. 제 1 항에 있어서,
    상기 제 2 프로세서 코어는 상기 버퍼와 관련되고; 및
    상기 데이터를 전달하는 단계는 상기 제 1 캐시로부터 상기 버퍼로 상기 데이터를 전달하는 단계를 포함하는, 스레드를 이송하는 방법.
  9. 제 1 항에 있어서,
    상기 제 2 프로세서 코어로 스레드가 이송될 것을 예상하는 단계는, 적어도, 상기 스레드가 상기 제 2 프로세서 코어로 이송될 임계 확률이 존재하는 것으로 판정하는 단계를 포함하는, 스레드를 이송하는 방법.
  10. 제 1 항에 있어서,
    상기 스레드가 제 2 프로세서 코어로 이송될 것을 예상하는 단계는, 상기 제 2 프로세서 코어의 하드웨어 능력들 중 하나 이상의 능력들에 적어도 부분적으로 기초하는, 스레드를 이송하는 방법.
  11. 머신 판독가능 명령들이 저장된 머신 판독가능 저장 매체로서,
    상기 머신 판독가능 명령들은, 하나 이상의 프로세싱 유닛들에 의해 실행될 경우, 컴퓨팅 플랫폼으로 하여금, 동작가능하게,
    제 1 프로세서 코어로부터 제 2 프로세서 코어로 스레드가 리스케줄링될 것을 예측할 수 있게 하되, 상기 제 1 프로세서 코어는 제 1 캐시와 관련되고, 상기 제 2 프로세서 코어는 버퍼 및/또는 제 2 캐시 중 하나 이상과 관련되고, 상기 제 1 프로세서 코어는 상기 제 2 캐시와 관련이 없고, 상기 제 2 프로세서 코어는 상기 제 1 캐시와 관련이 없으며;
    상기 제 1 프로세서 코어로부터 상기 제 2 프로세서 코어로 상기 스레드가 리스케줄링될 것이라는 예측에 응답하여, 상기 제 1 캐시로부터 상기 버퍼 및/또는 상기 제 2 캐시 중 하나 이상으로 상기 스레드와 관련된 데이터를 전달할 수 있게 하고; 그리고
    상기 스레드와 관련된 데이터가 상기 버퍼 및/또는 상기 제 2 캐시에 저장된 후에, 상기 제 1 프로세서 코어로부터 상기 제 2 프로세서 코어로 상기 스레드를 리스케줄링할 수 있게 하는, 머신 판독가능 저장 매체.
  12. 제 11 항에 있어서,
    상기 스레드와 관련된 상기 데이터는 상기 스레드와 관련된 새로운 데이터이고; 및
    상기 버퍼 및/또는 상기 제 2 캐시는 상기 스레드와 관련된 기존 데이터를 포함하는, 머신 판독가능 저장 매체.
  13. 제 11 항에 있어서,
    상기 머신 판독가능 명령들은 상기 컴퓨팅 플랫폼으로 하여금, 상기 스레드가 리스케줄링될 확률에 적어도 부분적으로 기초하여 상기 스레드가 리스케줄링될 것을 예측할 수 있게 하는, 머신 판독가능 저장 매체.
  14. 제 11 항에 있어서,
    상기 제 1 프로세서 코어와 관련된 하나 이상의 하드웨어 능력들은 상기 제 2 프로세서 코어와 관련된 하나 이상의 하드웨어 능력들과는 상이하고; 및
    상기 머신 판독가능 명령들은 상기 컴퓨팅 플랫폼으로 하여금, 상기 제 1 프로세서 코어와 관련된 상기 하나 이상의 하드웨어 능력들, 상기 제 2 프로세서 코어와 관련된 상기 하나 이상의 하드웨어 능력들, 및 상기 스레드와 관련된 하나 이상의 실행 특성들에 적어도 부분적으로 기초하여 상기 스레드가 리스케줄링될 것을 예측할 수 있게 하는, 머신 판독가능 저장 매체.
  15. 삭제
  16. 제 11 항에 있어서,
    상기 머신 판독가능 명령들은 상기 컴퓨팅 플랫폼으로 하여금, 상기 제 2 프로세서 코어와 관련된 상기 버퍼 및/또는 상기 제 2 캐시에서의 상기 스레드와 관련된 실질적으로 모든 데이터의 저장에 후속하여 상기 제 1 프로세서 코어로부터 상기 제 2 프로세서 코어로 상기 스레드를 리스케줄링할 수 있게 하는, 머신 판독가능 저장 매체.
  17. 캐시를 프리필링하는 방법으로서,
    스레드를 프로세싱하는 제 1 프로세서 코어를 식별하는 단계로서, 상기 제 1 프로세서 코어는 제 1 캐시와 관련되고, 제 2 캐시와는 관련이 없는, 상기 제 1 프로세서 코어를 식별하는 단계;
    스레드가 이송될 제 2 프로세서 코어를 식별하는 단계로서, 상기 제 2 프로세서 코어는 상기 제 2 캐시와 관련되고, 상기 제 1 캐시와는 관련이 없는, 상기 제 2 프로세서 코어를 식별하는 단계;
    상기 제 1 캐시로부터 상기 제 2 캐시로 상기 스레드와 관련된 데이터를 전달하는 단계; 및
    상기 제 2 캐시로 상기 데이터의 적어도 일부를 전달한 후에, 상기 제 2 프로세서 코어로 상기 스레드를 이송하는 단계를 포함하는, 캐시를 프리필링하는 방법.
  18. 제 17 항에 있어서,
    상기 데이터를 전달하는 단계는 상기 스레드를 이송하는 단계 이전에 실질적으로 완료되는, 캐시를 프리필링하는 방법.
  19. 제 17 항에 있어서,
    상기 스레드가 이송될 수도 있는 프로세서 코어를 식별하는 단계는 상기 프로세서 코어들 중 적어도 하나의 프로세서 코어와 관련된 성능 카운터를 사용하여 수집된 정보에 적어도 부분적으로 기초하는, 캐시를 프리필링하는 방법.
  20. 제 19 항에 있어서,
    상기 성능 카운터를 사용하여 수집된 상기 정보는 상기 프로세서 코어들 상에서 동작하는 개별적인 스레드들과 관련된 라인 축출들의 수를 포함하는, 캐시를 프리필링하는 방법.
  21. 제 17 항에 있어서,
    상기 스레드가 이송될 수도 있는 프로세서 코어를 식별하는 단계는 상기 스레드와 관련된 실시간 컴퓨팅 정보에 적어도 부분적으로 기초하고; 및
    상기 스레드가 타깃 데드라인에 늦어지고 있다는 것을 상기 실시간 컴퓨팅 정보가 나타내는 경우, 상기 스레드는 상기 프로세서 코어들 중 더 빠른 프로세서 코어로 이송되는, 캐시를 프리필링하는 방법.
  22. 삭제
  23. 멀티-코어 시스템으로서,
    제 1 프로세서 코어;
    상기 제 1 프로세서 코어와 관련된 제 1 캐시;
    제 2 프로세서 코어로서, 상기 제 2 프로세서 코어는 상기 제 1 캐시와 관련이 없는, 상기 제 2 프로세서 코어; 및
    상기 제 2 프로세서 코어와 관련되고 상기 제 1 프로세서 코어와는 관련이 없는, 제 2 캐시 및/또는 버퍼 중 하나 이상을 포함하고,
    상기 멀티-코어 시스템은, 상기 제 1 프로세서 코어로부터 상기 제 2 프로세서 코어로 스레드의 이송 전에 상기 제 1 캐시로부터 상기 제 2 캐시 및/또는 상기 버퍼 중 하나 이상으로 데이터를 전달하고, 후속하여, 상기 제 1 프로세서 코어로부터 상기 제 2 프로세서 코어로 상기 데이터와 관련된 스레드의 이송을 야기하도록 구성되는, 멀티-코어 시스템.
  24. 제 23 항에 있어서,
    상기 멀티-코어 시스템이 이종 하드웨어를 포함하도록, 상기 제 1 프로세서 코어는 제 1 능력을 갖고, 상기 제 2 프로세서 코어는 상기 제 1 능력과는 상이한 제 2 능력을 갖는, 멀티-코어 시스템.
  25. 제 24 항에 있어서,
    상기 제 1 능력 및 상기 제 2 능력 각각은, 그래픽 리소스, 수학적 계산 리소스, 명령 세트, 액셀러레이터, SSE, 캐시 사이즈 및/또는 브랜치 예측기 중 적어도 하나에 대응하는, 멀티-코어 시스템.
  26. 제 23 항에 있어서,
    상기 데이터는 상기 스레드와 관련된 캐시 미스, 캐시 히트, 및/또는 캐시 라인 축출 (cache line eviction) 중 하나 이상을 포함하는, 멀티-코어 시스템.
KR1020127001243A 2009-09-11 2010-06-04 스레드 이송 시의 캐시 프리필링 KR101361928B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/557,864 2009-09-11
US12/557,864 US20110066830A1 (en) 2009-09-11 2009-09-11 Cache prefill on thread migration
PCT/US2010/037489 WO2011031355A1 (en) 2009-09-11 2010-06-04 Cache prefill on thread migration

Publications (2)

Publication Number Publication Date
KR20120024974A KR20120024974A (ko) 2012-03-14
KR101361928B1 true KR101361928B1 (ko) 2014-02-12

Family

ID=43731610

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127001243A KR101361928B1 (ko) 2009-09-11 2010-06-04 스레드 이송 시의 캐시 프리필링

Country Status (6)

Country Link
US (1) US20110066830A1 (ko)
JP (1) JP5487306B2 (ko)
KR (1) KR101361928B1 (ko)
CN (1) CN102473112B (ko)
DE (1) DE112010003610T5 (ko)
WO (1) WO2011031355A1 (ko)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8949569B2 (en) * 2008-04-30 2015-02-03 International Business Machines Corporation Enhanced direct memory access
US9727388B2 (en) 2011-12-29 2017-08-08 Intel Corporation Migrating threads between asymmetric cores in a multiple core processor
US9390554B2 (en) * 2011-12-29 2016-07-12 Advanced Micro Devices, Inc. Off chip memory for distributed tessellation
US9804896B2 (en) * 2012-07-31 2017-10-31 Empire Technology Development Llc Thread migration across cores of a multi-core processor
US9135172B2 (en) 2012-08-02 2015-09-15 Qualcomm Incorporated Cache data migration in a multicore processing system
JP6218833B2 (ja) * 2012-08-20 2017-10-25 キャメロン,ドナルド,ケヴィン 処理リソース割り当て
GB2502857B (en) * 2013-03-05 2015-01-21 Imagination Tech Ltd Migration of data to register file cache
US8671232B1 (en) * 2013-03-07 2014-03-11 Freescale Semiconductor, Inc. System and method for dynamically migrating stash transactions
US10409730B2 (en) 2013-03-15 2019-09-10 Nvidia Corporation Microcontroller for memory management unit
US20150095614A1 (en) * 2013-09-27 2015-04-02 Bret L. Toll Apparatus and method for efficient migration of architectural state between processor cores
US9632958B2 (en) 2014-07-06 2017-04-25 Freescale Semiconductor, Inc. System for migrating stash transactions
US9652390B2 (en) * 2014-08-05 2017-05-16 Advanced Micro Devices, Inc. Moving data between caches in a heterogeneous processor system
US20160093102A1 (en) * 2014-09-25 2016-03-31 Peter L. Doyle Efficient tessellation cache
CN105528330B (zh) * 2014-09-30 2019-05-28 杭州华为数字技术有限公司 负载均衡的方法、装置、丛集和众核处理器
US9697124B2 (en) * 2015-01-13 2017-07-04 Qualcomm Incorporated Systems and methods for providing dynamic cache extension in a multi-cluster heterogeneous processor architecture
KR102352756B1 (ko) 2015-04-29 2022-01-17 삼성전자주식회사 애플리케이션 프로세서, 시스템 온 칩, 및 이를 포함하는 컴퓨팅 장치
USD791323S1 (en) 2015-09-08 2017-07-04 Samsung Electronics Co., Ltd. X-ray apparatus
USD786439S1 (en) 2015-09-08 2017-05-09 Samsung Electronics Co., Ltd. X-ray apparatus
US10140052B2 (en) 2015-11-05 2018-11-27 International Business Machines Corporation Memory access in a data processing system utilizing copy and paste instructions
US10241945B2 (en) 2015-11-05 2019-03-26 International Business Machines Corporation Memory move supporting speculative acquisition of source and destination data granules including copy-type and paste-type instructions
US10331373B2 (en) 2015-11-05 2019-06-25 International Business Machines Corporation Migration of memory move instruction sequences between hardware threads
US10152322B2 (en) 2015-11-05 2018-12-11 International Business Machines Corporation Memory move instruction sequence including a stream of copy-type and paste-type instructions
US10067713B2 (en) 2015-11-05 2018-09-04 International Business Machines Corporation Efficient enforcement of barriers with respect to memory move sequences
US10126952B2 (en) 2015-11-05 2018-11-13 International Business Machines Corporation Memory move instruction sequence targeting a memory-mapped device
US9996298B2 (en) 2015-11-05 2018-06-12 International Business Machines Corporation Memory move instruction sequence enabling software control
US10346164B2 (en) 2015-11-05 2019-07-09 International Business Machines Corporation Memory move instruction sequence targeting an accelerator switchboard
US10042580B2 (en) 2015-11-05 2018-08-07 International Business Machines Corporation Speculatively performing memory move requests with respect to a barrier
CN108885776B (zh) 2016-03-24 2022-09-27 富士胶片株式会社 图像处理装置、图像处理方法及存储介质
CN107015865B (zh) * 2017-03-17 2019-12-17 华中科技大学 一种基于时间局部性的dram缓存管理方法及系统
CN109947569B (zh) * 2019-03-15 2021-04-06 Oppo广东移动通信有限公司 绑定核心的方法、装置、终端及存储介质
CN111966398A (zh) * 2019-05-20 2020-11-20 上海寒武纪信息科技有限公司 指令处理方法、装置及相关产品
US11803391B2 (en) 2020-10-20 2023-10-31 Micron Technology, Inc. Self-scheduling threads in a programmable atomic unit
US20220129327A1 (en) * 2020-10-27 2022-04-28 Red Hat, Inc. Latency sensitive workload balancing

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060037017A1 (en) * 2004-08-12 2006-02-16 International Business Machines Corporation System, apparatus and method of reducing adverse performance impact due to migration of processes from one CPU to another

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0628323A (ja) * 1992-07-06 1994-02-04 Nippon Telegr & Teleph Corp <Ntt> プロセス実行制御方法
JPH0721045A (ja) * 1993-06-15 1995-01-24 Sony Corp 情報処理システム
US5644742A (en) * 1995-02-14 1997-07-01 Hal Computer Systems, Inc. Processor structure and method for a time-out checkpoint
JP3266029B2 (ja) * 1997-01-23 2002-03-18 日本電気株式会社 マルチプロセッサシステムにおけるディスパッチング方式、ディスパッチング方法およびディスパッチングプログラムを記録した記録媒体
US5968115A (en) * 1997-02-03 1999-10-19 Complementary Systems, Inc. Complementary concurrent cooperative multi-processing multi-tasking processing system (C3M2)
US6243788B1 (en) * 1998-06-17 2001-06-05 International Business Machines Corporation Cache architecture to enable accurate cache sensitivity
GB0015276D0 (en) * 2000-06-23 2000-08-16 Smith Neale B Coherence free cache
GB2372847B (en) * 2001-02-19 2004-12-29 Imagination Tech Ltd Control of priority and instruction rates on a multithreaded processor
US7233998B2 (en) * 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
JP3964821B2 (ja) * 2003-04-21 2007-08-22 株式会社東芝 プロセッサ、キャッシュシステム及びキャッシュメモリ
US7093147B2 (en) * 2003-04-25 2006-08-15 Hewlett-Packard Development Company, L.P. Dynamically selecting processor cores for overall power efficiency
US7353516B2 (en) * 2003-08-14 2008-04-01 Nvidia Corporation Data flow control for adaptive integrated circuitry
US7360218B2 (en) * 2003-09-25 2008-04-15 International Business Machines Corporation System and method for scheduling compatible threads in a simultaneous multi-threading processor using cycle per instruction value occurred during identified time interval
US7318125B2 (en) * 2004-05-20 2008-01-08 International Business Machines Corporation Runtime selective control of hardware prefetch mechanism
US7437581B2 (en) * 2004-09-28 2008-10-14 Intel Corporation Method and apparatus for varying energy per instruction according to the amount of available parallelism
US20060168571A1 (en) * 2005-01-27 2006-07-27 International Business Machines Corporation System and method for optimized task scheduling in a heterogeneous data processing system
US20070033592A1 (en) * 2005-08-04 2007-02-08 International Business Machines Corporation Method, apparatus, and computer program product for adaptive process dispatch in a computer system having a plurality of processors
US20070050605A1 (en) * 2005-08-29 2007-03-01 Bran Ferren Freeze-dried ghost pages
US7412353B2 (en) * 2005-09-28 2008-08-12 Intel Corporation Reliable computing with a many-core processor
US7434002B1 (en) * 2006-04-24 2008-10-07 Vmware, Inc. Utilizing cache information to manage memory access and cache utilization
JP4936517B2 (ja) * 2006-06-06 2012-05-23 学校法人早稲田大学 ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
JP2008090546A (ja) * 2006-09-29 2008-04-17 Toshiba Corp マルチプロセッサシステム
US8006077B2 (en) * 2007-03-29 2011-08-23 Intel Corporation Thread migration control based on prediction of migration overhead
US8230425B2 (en) * 2007-07-30 2012-07-24 International Business Machines Corporation Assigning tasks to processors in heterogeneous multiprocessors
US20090089792A1 (en) * 2007-09-27 2009-04-02 Sun Microsystems, Inc. Method and system for managing thermal asymmetries in a multi-core processor
US8219993B2 (en) * 2008-02-27 2012-07-10 Oracle America, Inc. Frequency scaling of processing unit based on aggregate thread CPI metric
US8615647B2 (en) * 2008-02-29 2013-12-24 Intel Corporation Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state
US7890298B2 (en) * 2008-06-12 2011-02-15 Oracle America, Inc. Managing the performance of a computer system
US8683476B2 (en) * 2009-06-30 2014-03-25 Oracle America, Inc. Method and system for event-based management of hardware resources using a power state of the hardware resources

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060037017A1 (en) * 2004-08-12 2006-02-16 International Business Machines Corporation System, apparatus and method of reducing adverse performance impact due to migration of processes from one CPU to another

Also Published As

Publication number Publication date
CN102473112B (zh) 2016-08-24
US20110066830A1 (en) 2011-03-17
DE112010003610T5 (de) 2012-08-23
JP5487306B2 (ja) 2014-05-07
KR20120024974A (ko) 2012-03-14
WO2011031355A1 (en) 2011-03-17
CN102473112A (zh) 2012-05-23
JP2013501296A (ja) 2013-01-10

Similar Documents

Publication Publication Date Title
KR101361928B1 (ko) 스레드 이송 시의 캐시 프리필링
US9569270B2 (en) Mapping thread phases onto heterogeneous cores based on execution characteristics and cache line eviction counts
KR101362017B1 (ko) 스레드 시프트 : 스레드들의 코어들로의 할당
TWI564719B (zh) 具有多個資料預取器的處理器、所述處理器的操作方法及所述處理器操作的電腦程式產品
US8683136B2 (en) Apparatus and method for improving data prefetching efficiency using history based prefetching
Ferdman et al. Temporal instruction fetch streaming
US20110066811A1 (en) Store aware prefetching for a datastream
US9864709B2 (en) Data transfer in a multi-core processor
US10108548B2 (en) Processors and methods for cache sparing stores
TW201631478A (zh) 根據記憶體存取類型的效益並配合積極層級的預取
US9880849B2 (en) Allocation of load instruction(s) to a queue buffer in a processor system based on prediction of an instruction pipeline hazard
US11249762B2 (en) Apparatus and method for handling incorrect branch direction predictions
TWI469044B (zh) 於指令存取前藉由運行標籤查找之隱藏指令快取未命中潛時的技術
US10877886B2 (en) Storing cache lines in dedicated cache of an idle core
US20030182539A1 (en) Storing execution results of mispredicted paths in a superscalar computer processor
US8484423B2 (en) Method and apparatus for controlling cache using transaction flags
US20070239939A1 (en) Apparatus for Performing Stream Prefetch within a Multiprocessor System
CN117632263A (zh) 指令处理方法、处理器核、处理器、计算设备及存储介质

Legal Events

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

Payment date: 20161229

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171228

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee