KR101373925B1 - 프로세서 코어들에 대한 캐시 메모리 연관성의 할당 - Google Patents

프로세서 코어들에 대한 캐시 메모리 연관성의 할당 Download PDF

Info

Publication number
KR101373925B1
KR101373925B1 KR1020127004213A KR20127004213A KR101373925B1 KR 101373925 B1 KR101373925 B1 KR 101373925B1 KR 1020127004213 A KR1020127004213 A KR 1020127004213A KR 20127004213 A KR20127004213 A KR 20127004213A KR 101373925 B1 KR101373925 B1 KR 101373925B1
Authority
KR
South Korea
Prior art keywords
cache memory
processor cores
cache
association level
access
Prior art date
Application number
KR1020127004213A
Other languages
English (en)
Other versions
KR20120046258A (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 KR20120046258A publication Critical patent/KR20120046258A/ko
Application granted granted Critical
Publication of KR101373925B1 publication Critical patent/KR101373925B1/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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory

Abstract

복수의 프로세서 코어들 및 그 프로세서 코어들 중 적어도 일부에 의해 공유되는 캐시 메모리를 갖는 멀티 코어 프로세서에 관한 기법들이 일반적으로 기술된다. 멀티 코어 프로세서는 프로세싱 코어들의 각각에 각각의 캐시 메모리 연관성 레벨을 각기 할당하도록 구성될 수 있다.

Description

프로세서 코어들에 대한 캐시 메모리 연관성의 할당{ALLOCATING PROCESSOR CORES WITH CACHE MEMORY ASSOCIATIVITY}
멀티 코어 프로세서는 개인용 컴퓨터 (PC), 서버 및 임베디드 도메인 등 주요 시장 부문에서 주류 컴퓨팅 플랫폼으로 등장했다. 주어진 칩 상의 프로세서 코어들의 수가 증가함에 따라, 그 칩의 로컬 메모리에 대한 잠재 수요 역시 증가하고 있다. 프로세서가 명령을 실행할 때, 예를 들어, 프로세서는 다른 곳에서 (예를 들어, 오프칩 (off-chip) 또는 메인 메모리 칩 상에서) 데이터에 대해 더 많은 시간이 소요되는 검색을 수행하는 것을 피하기 위하여 먼저 그의 온칩 (on-chip) 캐시를 검사하여 해당 명령과 연관된 데이터를 찾는다. 다중 프로세서 코어들은 주 캐시 또는 L2 또는 L3 캐시 같은 캐시 계층 구조 내의 다른 곳의 캐시 중 어느 하나인, 단일 캐시를 공유할 수도 있다. 다중 코어들에 의해, 다중 인입 어플리케이션 스트림들은 공유 캐시 공간을 찾는 동안, 서로 간섭할 수 있으며, 결과적으로 공유 캐시, 그리고 따라서 프로세서가 비효율적으로 동작하는 원인이 될 수도 있다. 다중 코어들과 관련된 다른 요인들이 또한 효율을 감소시킬 수 있다.
하지만, 모든 어플리케이션들이 추가적인 캐시 리소스들의 가용성으로부터 실질적으로 혜택을 받는 것은 아니다. 한 예는 스트리밍 어플리케이션인데, 여기서 데이터는 캐시로 인출되고, 프로세싱되고, 그 다음 재사용될 개연성이 낮다. 따라서, 동일한 우선 순위로 캐시 공간을 공유하는 다른 타입들의 어플리케이션은 캐시 리소스들에 대한 최적 이하의 할당을 초래할 수 있다. 공유 캐시의 사용을 위한 프로세서 코어들 간의 충돌은 오프칩 메모리에 대한 추가적인 요청의 결과로 레이턴시 (latency) 및 전력 양쪽 모두의 측면에서 비용이 많이들 수도 있다.
일반적으로 복수의 프로세서 코어들과 그 프로세서 코어들 중 적어도 일부에 의해 공유된 캐시 메모리를 갖는 멀티 코어 프로세서와 관련된 기법들이 일반적으로 설명된다. 멀티 코어 프로세서는 각 프로세싱 코어들에 대하여 각각의 캐시 메모리 연관성 (cache memory associativity) 레벨을 각기 할당하도록 구성될 수 있다.
일 예에서, 컴퓨팅 시스템이 제공된다. 그 컴퓨팅 시스템은 멀티 코어 프로세서, 캐시 메모리, 및 멀티 코어 프로세서에 연결된 캐시 제어기를 포함할 수 있다. 멀티 코어 프로세서는 복수의 개별 프로세서 코어들을 포함할 수 있다. 캐시 메모리는 복수의 개별 프로세서 코어들 중 적어도 일부가 액세스 가능하도록 구성될 수 있다. 캐시 제어기는 캐시 메모리 내의 메모리 공간을 할당하도록 구성될 수 있다. 캐시 제어기는 또한 복수의 개별 프로세서 코어들 중 적어도 일부에 대해 상이한 각각의 연관성 레벨로 복수의 개별 프로세서 코어들 중 적어도 일부에 의한 캐시 메모리로의 액세스를 용이하게 하도록 구성될 수 있다.
또 다른 예에서, 복수의 프로세서 코어들이 캐시 메모리에 액세스하는 것을 허용하는 방법이 제공된다. 본 방법은 복수의 프로세서 코어들의 각각에 각각의 캐시 메모리 연관성 레벨을 지정하는 단계를 포함할 수 있다. 복수의 프로세서 코어들 중 적어도 하나에 지정된 캐시 메모리 연관성 레벨은 복수의 프로세서 코어들 중 적어도 다른 하나에 할당된 캐시 메모리 연관성 레벨과 상이할 수 있다. 본 방법은 복수의 프로세서 코어들의 각각이 각각의 할당된 연관성 레벨로 캐시 메모리에 액세스하는 것을 용이하게 하는 단계를 더 포함할 수 있다.
또 다른 예에서, 복수의 프로세서 코어들이 컴퓨팅 시스템에서 캐시 메모리에 액세스하도록 허용하는 프로시저 (procedure) 를 수행하기 위한 컴퓨터 실행 가능 명령들을 저장한 컴퓨터 액세스 가능 매체가 제공된다. 그 프로시저는 복수의 프로세서 코어들의 각각에 각각의 캐시 메모리 연관성 레벨을 지정하는 단계를 포함할 수 있다. 복수의 프로세서 코어들 중 적어도 하나에 지정된 캐시 메모리 연관성 레벨은 복수의 프로세서 코어들 중 적어도 다른 하나에 지정된 캐시 메모리 연관성 레벨과 다를 수 있다. 그 프로시저는 복수의 프로세서 코어들의 각각이 각각의 지정된 연관성 레벨로 캐시 메모리에 액세스하도록 허용하는 단계를 더 포함할 수 있다.
다수의 예들이 개시되어 있지만, 여전히 다른 예들이 다음의 상세한 설명으로부터 당업자에게 자명해질 것이다. 본원에 개시된 시스템들, 장치들 및 방법들은 본원 교시의 사상 및 범위로부터 이탈함이 없이 모두, 다양한 자명한 양태들에서 변경될 수도 있음이 명백해질 것이다. 따라서 상세한 설명은 성질상 예시적이고 비한정적인 것으로 간주 되어야 한다.
본 개시의 전술한 특징들 및 다른 특징들은 첨부 도면과 함께, 다음의 설명 및 첨부 청구항들로부터 더욱 완전히 명백해질 것이다. 이들 도면들은 본 개시에 따라 오직 몇 개의 예들만을 나타낼 뿐이고 따라서 그의 범위를 한정하는 것으로 고려되지 않는다는 이해하에, 본 개시는 첨부 도면들의 사용을 통해 추가로 특정적으로 그리고 상세히 설명될 것이다.
상기 도면들에서 :
도 1은 멀티 코어 프로세서를 예시하는 개략도이다;
도 2는 공유 캐시 메모리를 예시하는 개략도이다;
도 3은 프로세서 코어에 의해 개별적으로 할당된 연관성 레벨들을 갖는 캐시 메모리의 예를 예시하는 개략도이다;
도 4는 각각 어드레스를 출력할 수 있는 복수의 프로세서 코어들의 예를 예시하는 블록도이다;
도 5는 복수의 프로세서 코어들에 의해 출력된 어드레스의 구성 (composition) 의 예를 예시하는 개략도이다;
도 6은 프로세서 코어로부터의 어드레스의 일부와 캐시 메모리에 저장된 태그를 비교하도록 구성된 비교기의 블록도이다;
도 7은 프로세서 코어에 의해 개별적으로 할당된 연관성 레벨들을 갖는 캐시 메모리의 또 다른 예를 예시하는 개략도이다;
도 8은 캐시 할당을 위한 프로세스를 예시하는 블록도이다;
도 9는 캐시 할당을 위한 시스템과 프로세스를 예시하는 블록도이다; 그리고
도 10은 프로세싱 스레드를 캐시 가능 또는 캐시 불가능으로 마크하도록 멀티 코어 프로세서를 구성하기 위한 명령들을 저장하는 임의의 컴퓨터 판독 가능 매체의 예를 도시하고; 모두는 본 개시의 적어도 일부 예들에 따라 배열되어 있다.
다음의 상세한 설명에서, 그의 일부를 형성하는 첨부 도면들을 참조한다. 도면들에서, 문맥에서 달리 지시하지 않는 한, 유사한 부호들은 통상적으로 유사한 컴포넌트들을 식별한다. 상세한 설명, 도면 및 청구항에 기술된 예시적인 예들은 한정적인 것으로 의도되지 않았다. 본원에 제시된 요지의 사상 또는 범위로부터 이탈함이 없이, 다른 예들이 이용될 수도 있고 다른 변경들이 이루어질 수도 있다. 본원에 일반적으로 기술되고 도면들에 예시된 본 개시의 양태들은 배열, 치환, 결합, 분리, 및 폭넓게 다양한 배열 형태 (configuration) 들에서 설계될 수 있는데, 이들 모두는 본원에서 묵시적으로 고려되는 것으로 손쉽게 이해될 것이다.
본 개시는, 특히, 캐시에 액세스하는 개별 프로세서 코어들에 캐시 내의 메모리 공간을 각기 할당하는 것에 관련된 방법, 장치, 시스템 및 컴퓨터 프로그램 제품들에 관한 것이다. 멀티 코어 프로세서 시스템에서, 몇개의 어플리케이션들이 개별적인 프로세서 코어들 상에서 병렬적으로 실행될 수 있는데, 각 프로세서 코어는 그 자신의 메모리 요구사항들을 갖는다. 하지만, 메모리 공간은 한정되어 있다. 칩의 설계에 따라, 개별 프로세서 코어들은 하나 이상의 다른 프로세서 코어들과 로컬 메모리 공간을 공유해야 할 수도 있다. 이 로컬 메모리는, 예를 들어, 레벨 2 (L2) 또는 레벨 3 (L3) 캐시들을 포함할 수 있다.
멀티 코어 프로세서의 일부 코어들의 요구 사항들은 프로세서의 다른 코어들의 요구 사항들과 다를 수 있으며, 이러한 요구 사항들은 또한 시간이 지남에 따라 변화될 수 있다. 하나의 그러한 요구 사항은 적절한 프로세싱 성능을 달성하는데 필요한 캐시 메모리의 양 및/또는 특성일 수 있다. 예를 들면, 메인 메모리에서 한 어드레스에 저장된 데이터가 캐시 메모리에서의 단 하나의 로케이션 (location) 에 저장될 수 있도록 하나의 코어가 직접 맵핑된 캐시 메모리에 대한 액세스를 가질 때, 그 하나의 코어는 적절하게 동작할 수 있다. 더 낮은 캐시 히트 레이트를 대가로 한 그 특성이 코어의 최적 성능에 중요하지 않을 수 있는 경우에 이 유형의 캐시 메모리는 더 낮은 레이턴시를 제공할 수 있다. 한편, 예를 들면, 다른 코어는 높은 레이턴시로 잘 실행될 수 있지만, 상대적으로 높은 캐시 히트 레이트를 필요로 할 수 있다. 이러한 요구 사항을 갖는 코어는 직접 맵핑된 캐시 메모리에 의해 제공되는 것보다 더 높은 연관성 레벨로 더 효율적으로 동작할 수 있다. 예를 들면, 메인 메모리에서 어드레스에 저장된 데이터는 4개 로케이션들과 같은, 캐시 메모리에서의 몇개의 상이한 로케이션들 중 하나에 저장될 수 있다. 그러한 캐시 메모리들은 N-웨이 세트 연관형 (N-way set associative) 인 것으로 지칭되는데, 여기서 N은 데이터가 캐시 메모리에 저장될 수 있는 로케이션들의 수이다. 캐시 메모리의 연관성이 코어에 의해 할당될 수 있는 바처럼, 메인 메모리에 저장된 캐시 명령들 또는 데이터를 캐시 (cache) 할지에 대한 결정은 다양한 프로세싱 스레드들의 특성에 의해 달라질 수 있다. 예를 들어, 몇몇 스레드들은, 같은 명령들이 반복적으로 액세스될 것을 필요로 할 수 있는 다수의 명령 루프들을 포함할 수 있다. 이러한 스레드들은 캐시에 저장된 그들의 명령들을 가지는 것에 의해 크게 혜택을 받을 수 있다. 다른 스레드들은 주로 낮은 로컬리티 (locality) 를 갖는 명령들로 구성될 수 있고, 결과적으로 명령들을 캐시하는 것에 의해 크게 혜택을 받지는 않을 것이다. 매우 적은 분기 (branch) 들을 갖는 스레드와 같은, 다른 스레드들은 예측 가능한 방식으로 실행될 명령들로 구성될 수 있다. 그러한 스레드들에서 명령들을 캐시하는 것은 또한 제한된 혜택을 제공할 수 있는데 왜냐하면 이들 명령들의 실행의 예측가능성이 그들을 미리 인출하는 것을 쉽게 하여 그들은 프로세서에 의한 실행에 이용가능해질 것이기 때문이다.
본원에 기술된 바처럼, 멀티 코어 컴퓨팅 환경에서 공유 캐시 리소스들의 효율적인 이용을 위한 다양한 예들이 개시되어 있다. 상이한 특성을 갖는 캐시 메모리에 액세스하는 것으로부터 어느 프로세서 코어들이 혜택을 받을 수 있는지를 인식하는 것에 의해, 상이한 프로세서 코어들이 캐시 메모리에 액세스할 수 있는 방식은 멀티 코어 프로세서의 상이한 코어들에 대해 상이할 수 있다. 예를 들어, 캐시 메모리는 하나의 프로세서 코어에 대해 4-웨이 세트 연관형일 수 있고, 다른 프로세서 코어에 대해 2-웨이 세트 연관형일 수도 있고, 또 다른 프로세서 코어에 대해 직접 맵핑될 수 있다. 또한, 프로세서 코어의 어플레케이션 실행 특성 또는 다른 특성들이 시간의 경과에 의해 변화함에 따라, 캐시 연관성은 동적으로 변화할 수 있고, 따라서 전체 시스템 성능을 동적으로 최적화한다. 다른 예들에서, 스레드가 예측 가능한 방식에서 실행될 것으로 예상될 수 있는 명령들을 포함하거나 또는 스레드가 스트라이드형 레퍼런스 (strided reference) 들로 지칭되는 상당한 수의 비루프형 명령들을 포함하면 스레드는 캐시 불가능 (non-cacheable) 으로 플래깅 (flagging) 될 수 있다. 스트라이드형 레퍼런스들은 비루프형이기 때문에, 스트라이드형 레퍼런스들을 함유하는 스레드들은 캐시 메모리에 저장되는 것으로부터 혜택을 받지 않을 수도 있다. 다른 스레드들은 상대적으로 많은 수의 비스트라이드형 명령 (non-strided instruction) 들을 포함하고, 이러한 스레드들은 캐시 메모리에 저장될 수도 있다.
도 1은 본 개시의 적어도 몇몇 예들에 따른 멀티 코어 프로세서 (100) 를 예시하는 개략도이다. 멀티 코어 프로세서 (100) 는 프로세서 코어 어레이 (102) 를 갖는 단일 집적 회로를 포함할 수 있다. 프로세서 코어 어레이 (102) 는 어떤 수 (N) 의 프로세서 코어들 (104 (1)-104 (N)) 을 포함할 수 있다. 임의의 적당한 수의 프로세서 코어 (104) 들이 제공될 수 있다. 각 프로세서 코어 (104) 는 마이크로 프로세서 (μP), 마이크로 제어기 (μC), 디지털 신호 프로세서 (DSP), 또는 이들의 임의의 조합을 비한정적으로 포함하는 임의의 원하는 구성을 가질 수 있다. 따라서, 각각의 프로세서 코어 (104) 는, 산술 논리 장치 (ALU), 부동 소수점 장치 (FPU), 디지털 신호 처리 (DSP) 코어, 레지스터, 누산기 (accumulator) 등과 같은 다른 기능 블록뿐만 아니라 프로그램 명령들을 실행하기 위한 로직 (logic) 을 포함할 수 있다. 코어 (104) 들의 전부 또는 단지 일부는 캐시 메모리 (미도시) 를 포함할 수 있다.
멀티 코어 프로세서 (100) 는 코어 (104) 들 중 어느 것에 있는 어느 캐시 메모리 이외에 캐시 메모리 (106) 를 포함할 수 있다. 캐시 메모리 (106) 는 휘발성 또는 비휘발성 수 있는, 임의의 타입의 메모리 디바이스로 구현될 수 있다. 예를 들어, 캐시 메모리 (106) 는, 예를 몇 개만 들자면, 동적 랜덤 액세스 메모리 ("DRAM") 디바이스, 정적 랜덤 액세스 메모리 ("SRAM") 디바이스, 또는 플래시 메모리 디바이스로 구현될 수 있다. 캐시 메모리 (106) 는 레벨 1 캐시와 같은, 코어 (104) 들에 대하여 어느 레벨일 수 있고, 추가적인 레벨들이 몇몇 예들에 포함되거나 포함되지 않을 수 있다. 캐시 메모리 (106) 는 코어 (104) 들 중 일부 또는 전부에 의해 공유될 수 있다. 멀티 코어 프로세서 (100) 은 아래에 더 자세히 설명된 바처럼 코어 (104) 들이 캐시 메모리 (106) 에 액세스할 수 있는 방식을 제어하도록 적응될 수 있는 캐시 제어기 (118) 를 포함할 수 있다.
멀티 코어 프로세서 (100) 는 메모리 제어기 (122) 와 같은, 인터페이스 디바이스를 통해 또는 직접적으로, 메인 메모리 디바이스 (120) 에 연결될 수 있다. 메인 메모리 디바이스 (120) 는, DRAM 디바이스 또는 SRAM 디바이스와 같은 휘발성 메모리, 읽기 전용 메모리 (ROM) 디바이스 또는 플래시 메모리 디바이스와 같은 비휘발성 메모리, 데이터 저장 디바이스 이를테면 자기 디스크 저장 장치 (예 : 하드 디스크 드라이브 또는 HDD), 테이프 저장 장치, 광학 저장 장치 (예를 들면, 컴팩트 디스크 또는 CD, 디지털 다기능 디스크 또는 DVD) 또는 착탈식, 비착탈식, 휘발성 또는 비휘발성일 수 있는 다른 머신 판독가능 저장 매체들을 비한정적으로 포함하는 임의의 적합한 형태의 메모리일 수도 있다. 버스 (112) 는 또한 멀티 코어 프로세서 (100) 와, 입력-출력 (I/O) 디바이스 (114), 외부 센서 등의 다른 컴포넌트 사이의 인터페이스를 지원할 수도 있거나 또는 프로세서 코어들 (104) 중 어느 서브세트에 의해 공유되는 리소스일 수도 있다.
위에서 언급된 바처럼, 멀티 코어 프로세서 (100) 는 어느 적당한 수의 프로세서 코어 (104) 들을 가질 수 있다. 예를 들어, 멀티 코어 프로세서 (100) 는 2개의 (2) 코어들, 4개의 (4) 코어들, 수십 개의 코어들, 및 심지어 수백 개 이상의 프로세서 코어들을 가질 수 있다. 일부 멀티 코어 프로세서들은 동종 (homogenous) 이어서, 프로세서 코어들의 각각이 단일 코어 설계를 사용할 수 있다. 다른 멀티 코어 프로세서들은 이종 (heterogeneous) 이어서, 프로세서 코어들 중 하나 이상이 다른 프로세서 코어들 중 하나 이상과 상이할 수 있고, 각 코어 또는 코어들의 서브세트는 멀티 코어 프로세서 (100) 에서 상이한 역할을 위해 설계될 수 있다.
멀티 코어 프로세서 (100) 는 코어 제어기 (116) 를 포함할 수 있다. 코어 제어기 (116) 는, "스레드 (thread)" 들로서 알려진 어느 프로세싱 태스크들이 개별 프로세서 코어들 (104) 에 의해 프로세싱될지와 어느 스레드들이 캐시 메모리 (106) 에 저장되거나 저장되지 않을지를 결정하도록 구성될 수 있다. 프로세서 코어 (104) 들에 의해 실행되는 코드에 삽입된 플래그 (flag) 와 같은, 인덱스들에 기초하여 이러한 결정이 이루어질 수 있다. 인덱스들은 소스 코드로부터 컴파일 (compilation) 동안 실행 코드에 삽입될 수 있거나 또는 그것은 프로세서 코어들 (104) 상에서 실행되는 운영 시스템 또는 몇몇 다른 수단에 의해 삽입될 수 있다.
도 1은 멀티 코어 프로세서의 예시 도이고 거기에 예시된 컴포넌트들의 물리적인 로케이션을 예시하지는 않는다. 여기에 기술된 멀티-코어 프로세서 (100) 는 예시적이고 예들 및 변경들이 가능하다는 것이 인식된다. 설계 선택은 예를 들면, 하드웨어 크기 및 복잡성 대 성능, 열 에너지 및 방열, 프로세서 속도, 전체 스루풋 (overall throughput) 등의 고려에 의해 조종될 수 있다.
멀티 코어 프로세서 (100) 는 적합한 컴퓨팅 환경, 이를테면 개인용 컴퓨터 (PC) 에 제공될 수 있음을 당업자는 인식할 수 있다. 컴퓨팅 환경은 멀티 코어 프로세서 (100), 메인 메모리 (120), 하나 이상의 버스들, 및 하나 이상의 I/O 디바이스, 이를테면, 키보드, 마우스, 터치 스크린, 디스플레이 디바이스, 이를테면 CRT 또는 LCD 기반 모니터, 범용 직렬 버스 (USB) 또는 다른 포트 접속들, CD 드라이브들, DVD 드라이브들 등을 포함할 수 있다. 다양한 컴포넌트들을 중에서 버스 접속들은 버스 프로토콜들, 이를테면 PCI (Peripheral Component Interconnect), PCI 익스프레스 (PCI Express), AGP (Accelerated Graphics Port), 하이퍼트랜스포트 (HyperTransport), 또는 어느 다른 적합한 버스 프로토콜을 사용하여 구현될 수 있고, 상이한 디바이스들 간의 접속들은 상이한 프로토콜들을 사용할 수 있다. PC는 하나 이상의 원격 컴퓨터들에 대해 논리적 접속들을 사용하여 네트워크 환경에서 동작할 수 있다. 그러한 원격 컴퓨터들은, 예를 들어, 다른 PC들, 서버들, 라우터들, 네트워크 PC들, 피어 디바이스들, 또는 다른 공통 네트워크 노드들일 수 있고, 멀티 코어 프로세서 (100) 에 대해 위에서 기술된 엘리먼트들 중 다수 또는 전부를 포함할 수 있다. 논리적 접속들은, 예를 들어, 로컬 영역 네트워크 (LAN) 또는 와이드 영역 네트워크 (WAN), 인트라넷 및 인터넷을 포함할 수 있다.
도 2는 본 개시의 적어도 일부 예들에 따른 공유 캐시 메모리를 예시하는 개략도이다. 도 2는 멀티 코어 프로세서 시스템에서의 사용에 적합한 복수의 프로세서 코어들 (201-204) 을 예시한다. 각 프로세서 코어들 (201-204) 은 변화하는 크기들의 코어들 (201-204) 에 의해 나타낸 바처럼, 상이한 성능 특징들을 가질 수 있다. 예를 들면, 더 큰 코어들 (201 및 203) 은, 덜 복잡한 소프트웨어 어플리케이션들을 프로세싱하는데 적합할 수 있는, 더 작은 코어들 (202 및 204) 과 비교하여, 더 복잡한 소프트웨어 어플리케이션들에 적합한, 더 높은 성능을 가질 수 있다. 더 많은 수 또는 더 적은 수의 코어들이 제공될 수 있고, 그 코어들은 일정하거나 변화하는 크기들을 가질 수 있고, 여기에서 코어들의 특정 설명들은 한정적인 것으로 의도되지 않았음을 인식할 것이다.
도 3은 본 개시의 적어도 일부 예들에 따른 공유 캐시 메모리 (300) 를 예시하는 개략도이다. 도 3에 도시된 바처럼, 캐시 메모리 (300) 는 복수의 프로세서 코어들 (201-204) 들 중에 개별적으로 할당된 상이한 연관성 레벨들을 가질 수 있다. 각 코어들 (201-204) 은 데이터를 공유 캐시 메모리 (300) 로 전송하거나 공유 캐시 메모리 (300) 로부터 전송하도록 배열될 수 있다. 캐시 제어기 (118) (도 1) 은, 단독으로 또는 코어 제어기 (116) 와 결합하여, 각 코어들 (201-204) 이 캐시 메모리 (300) 에 액세스할 수 있는 방식을 제어하도록 적응될 수 있다. 캐시 메모리 (300) 는 "LRU" (least recently used) 치환 폴리시 (replacement policy) 와 같은, 새로운 엔트리로 캐시 엔트리들을 축출 (evict) 하기 위하여 임의의 적합한 치환 폴리시를 사용할 수 있다. 프로세서 코어들 (201-204) 은 명령 및 데이터를 캐시 메모리 (300) 에, 임의의 적합한 기입 폴리시를 사용하여, 이를테면 연속 기입 캐시 메모리 (write-through cache memory) 인 캐시 메모리 (300) 에 의해서, 기입하도록 구성될 수 있는데, 여기서 프로세서 코어들 (201-204) 은 그들이 캐시 메모리 (300) 에 기입할 때마다 메인 메모리 (120) 에 기입하거나, 또는 프로세서 코어들 (201-204) 이 명령들 또는 데이터를 캐시 메모리 (300) 에 기입할 때 메인 메모리 (120) 에 명령들 또는 데이터를 즉시 기입하지 않는, 후기입 캐시 메모리 (write-back cache memory) 에 기입한다. 다른 기입 폴리시들도 사용될 수 있다.
도 4는 본 개시의 적어도 일부 예들에 따라 각각 어드레스를 출력할 수 있는 복수의 프로세서 코어들 (201-204) 를 예시하는 블록도이다. 더 상세하게는, 도 4에 도시된 바처럼, 각 프로세서 코어 (201-204) 는, 메모리 제어기 (미도시) 를 통해 또는 직접적으로, 각각의 어드레스 (A1-4) 를 출력할 수 있다. 어드레스 A1-4는 메인 메모리 (120) (도 1) 및 가능하게는 캐시 메모리 (300) 에 저장된 데이터를 판독하기 위해 사용될 수 있다.
도 5는 본 개시의 적어도 일부 예들에 따라 배열된 복수의 프로세서 코어들 (201-204) 에 의해 출력되는 어드레스 (A1-4) 들의 구성을 예시하는 개략도이다. 도 5에 도시된 바처럼, 어드레스 (A1-4) 는 복수의 어드레스 비트들로 구성될 수 있는데, 이들은 하위 어드레스 비트 (low order address bit; AL) 들, 중위 어드레스 비트 (middle order address bit; AM) 들, 및 상위 어드레스 비트 (high order address bit; AH) 들로 분할될 수 있다. 각 그룹들에 어느 비트들을 배치할지에 대한 선택은 변화할 수 있고 설계 파라미터들의 수에 의존할 수 있다. 중위 어드레스 비트들 (AM) 은 캐시 메모리 (300) 에서 메모리 셀들의 각각의 로우 (row) 를 선택하기 위한 인덱스로서 사용될 수 있다. 따라서 상이한 인덱스들 또는 인덱스들의 범위는 캐시 메모리 (300) 에서 메모리 셀들의 상이한 로우들을 선택할 수 있다. 도 3에 도시된 바처럼, 캐시 메모리 (300) 는 개념적으로 3차원 어레이로 고려될 수 있는데, 여기서 메모리 셀들의 각 로우는 복수의 칼럼 (column) 들로 분할되고, 각 칼럼은 개별적으로 또는 그룹으로서 어드레스될 수 있는 메모리 로케이션들의 "깊이" (depth) 를 갖는다. 실제로, 도 3에 도시된 로우의 각 칼럼은 매 N번째 칼럼일 수 있고, N개의 개재 칼럼들은 도 3에 도시된 메모리 로케이션들의 "깊이"의 역할을 한다.
캐시 제어기 (118) 는, 단독으로 또는 코어 제어기 (116) 와 결합하여, C1-C4로 각각 표기되는 프로세서 코어들 (201-204) 중 특정한 하나에 의해 액세스될 캐시 메모리 (300) 의 각 로우에서 어떤 칼럼들을 표기하도록 적응될 수 있다. 예를 들어, 도 3에 도시된 첫번째 로우의 첫번째 4개의 칼럼들은 코어 (201) 에 의해서만 액세스될 수 있고, 첫번째 로우의 다음 2개의 칼럼들은 코어 (202) 에 의해서만 액세스될 수 있고, 다음 2개의 칼럼들의 각각은 코어 (203) 및 코어 (204) 에 의해서만 각각 액세스될 수 있다. 도 3에 또 도시된 바처럼, 각 칼럼들에서 첫번째 로케이션은 코어들 (201-204) 중 특정한 하나에 의한 사용을 위해 태그 (T1 -4) 를 저장한다. 태그 (T1 -4) 는 메모리 어드레스의 상위 비트들 (AH) 로 구성될 수 있다. 따라서, 예를 들어, 첫번째 로우의 첫번째 4개 칼럼들은 프로세서 코어 (201) 에 의해 액세스될 수 있는 데이터에 대응하는 4개의 태그들 (T1) 을 저장할 수 있다. 첫번째 로우의 다음 2개 칼럼들은 프로세서 코어 (202) 에 의해 액세스될 수 있는 데이터에 대응하는 2개의 태그들 (T2) 를 저장할 수 있다. 마지막으로, 첫번째 로우의 다음 2개의 칼럼들의 각각은, 단일 태그 (T3 및 T4) 를 각각 저장할 수 있는데, 이들은 프로세서 코어들 (203 및 204) 에 의해 액세스될 수 있는 데이터에 각각 대응한다. 태그 (T1 -4) 의 각각에 대응하는 데이터는 각 칼럼에서 메모리 로케이션들에 저장될 수 있고, 이 데이터는 하위 어드레스 비트 (AL) 에 의해 액세스될 수 있다.
도 6은 본 개시의 적어도 일부 예들에 따라, 프로세스 코어들 (201-204) 중 하나로부터의 어드레스의 일부와 캐시 메모리 (300) 에 저장된 태그를 비교하도록 구성된 비교기 (500) 의 블록도이다. 동작에서, 예를 들어, 프로세서 코어 (201) 는 메인 메모리 (120) 로부터 데이터를 판독하기 위해 어드레스 (A1) 을 이슈 (issue) 할 수 있다. 어드레스 (A1) 의 중위 비트들 (AM) 은 캐시 메모리 (300) 에서 메모리 셀들의 대응하는 로우에 저장된 태그들에 액세스하기 위한 인덱스로서 사용된다. 도 5에 도시된 바처럼, 로우의 첫번째 4개 칼럼들에서 태그 (T1) 들은 순차적으로 비교기 (500) 에 적용되는데, 이는 캐시 제어기 (118) (도 1) 의 부분, 어떤 다른 컴포넌트들의 부분 또는 자립형 디바이스일 수 있다. 그 다음 비교기 (500) 는 어드레스 (A1) 의 상위 어드레스 비트들 (AH) 과 태그 (T1) 들의 각각을 비교할 수 있다. 매치 (match) 할 경우에, 비교기 (500) 는 "히트" (hit) 표시를 출력하는데, 이는 어드레스 (A1) 에 대응하는 데이터가 캐시 메모리 (300) 와 메인 메모리 (120) 에 저장되어 있음을 나타낸다. 히트 표시는, 하위 어드레스 비트들 (AL) 을 사용하여 인덱스 (AM) 에 대응하는 로우 및 태그 (T) 가 저장된 칼럼에 저장된 데이터에 액세스하는 것에 의해 어드레스 (A1) 에 대응하는 데이터에 액세스하기 위해 캐시 제어기 (118) 에 의해 사용될 수 있다.
위에 설명되고 도 3에 도시된 바처럼, 프로세서 코어 (201) 에 의해 이슈된 메모리 어드레스 (A1) 에 대응하는 데이터가 어드레스 (A1) 의 중위 비트들 (AM) 에 의해 표기된 로우에서 4개의 칼럼들 중 어느 하나에 저장될 수 있다. 프로세서 코어 (201) 에 의해 판독되는 데이터가 (칼럼 (C1) 에 의해 표시되는 바처럼) 캐시 메모리 (300) 에서 4개의 칼럼들 중 어느 하나에 저장될 수 있는 한, 캐시 메모리 (300) 는 프로세서 코어 (201) 에 대해 4-웨이 세트 연관형인 것으로 고려된다. 하지만, 본 개시의 원리에 따르면, 캐시 메모리 (300) 는 다른 프로세서 코어들 (202-204) 에 대해 상이한 연관성 레벨을 가질 수 있다. 예를 들어, 프로세서 코어 (202) 에 의해 판독되는 데이터는 캐시 메모리 (300) 에서 (칼럼 (C2) 에 의해 표기되는) 2개 칼럼들 중 어느 하나에 저장되어, 캐시 메모리 (300) 는 프로세서 코어 (202) 에 대해 2-웨이 세트 연관형인 것으로 고려된다. 마지막으로, 각 프로세서 코어들 (203, 204) 에 의해 판독되는 데이터는 (C3 및 C4에 의해 표기되는) 하나의 칼럼에서만 저장될 수 있으므로, 캐시 메모리 (300) 는 프로세서 코어들 (203 및 204) 에 대해 직접 맵핑되는 것으로 고려된다. 각 프로세서 코어 (201-204) 의 연관성 레벨은, 예를 들어, 각 프로세서 코어들의 특성 또는 능력, 또는 각 프로세서 코어들에 의해 실행되는 소프트웨어의 성질에 기초할 수 있다.
비록 각 프로세서 코어 (201-204) 의 연관성 레벨은 고정될 수 있지만, 몇몇 예들에서 각 프로세서 코어 (201-204) 의 연관성 레벨은 프로세서 코어들에 의해 실행되는 소프트웨어의 성질과 같은 조건 변화에 따라 변화하도록 동적일 수 있다. 그러한 경우에, 캐시 제어기 (118) 는 프로세서 코어의 현재 연관성 레벨에 수적으로 대응하는 메인 메모리 (120) 에 각각 기입하는 것에 응답하여 캐시 메모리 (300) 에 태그들을 저장하도록 재프로그래밍이 가능할 수 있다. 예를 들어, 프로세서 코어 (202) 에 대한 캐시 메모리 (300) 의 연관성 레벨이 2-웨이 세트 연관형으로부터 3-웨이 세트 연관형으로 증가되면, 프로세서 코어 (201) 에 대한 캐시 메모리 (300) 의 연관성 레벨은 대응하여 4-웨이 세트 연관형으로부터 3-웨이 세트 연관형으로 감소할 수 있다. 그러한 경우에, 도 3에서 C1에 의해 표기된 네번째 칼럼은 프로세서 코어 (202) 에 의한 액세스에 이용가능할 것이고, 이제 C2에 의해 표기될 것이다.
각 프로세서 코어 (201-204) 에 대한 캐시 메모리 (300) 의 연관성 레벨은 메모리 셀들의 모든 로우들에 대해 같을 수 있지만, 몇몇 실시형태들에서는 캐시 제어기 (118) 는 로우 단위에 기초하여 프로세서 코어 (201-204) 에 따라 변화하는 캐시 메모리 (300) 에 대한 연관성 레벨을 설정할 수 있다. 예를 들면, 캐시 메모리 (300) 의 로우 N은 프로세서 코어 (201) 에 대해 4-웨이 세트 연관형일 수 있고 캐시 메모리 (300) 의 로우 N+M에서 프로세서 코어 (201) 에 대해 2-웨이 세트 연관형일 수 있다.
비록 도 3의 예에서 도시된 캐시 메모리 (300) 의 각 칼럼은 개별 프로세서 코어들 (201-204) 중 단일한 하나에 의해서만 액세스될 수 있지만, 다른 실시형태들에서, 캐시 메모리 (300) 의 각 칼럼은 하나 이상의 개별 프로세서 코어들 (201-204) 에 의해 액세스될 수 있다. 예를 들면, 도 7은 본 개시의 적어도 몇몇 다른 예들에 따른 공유 캐시 메모리 (300) 를 예시하는 개략도이다. 도 7에 도시된 바처럼, 캐시 메모리 (300) 에 대한 액세스는 단독 또는 코어 제어기 (116) 와의 결합하여, 캐시 제어기 (118) 에 의해 제어된다. 캐시 제어기 (118) 는 각 칼럼에서 첫번째 로케이션에 저장될 수 있는, 각각의 비트 벡터 (V) 의 값에 따라, 프로세서 코어들 (201 - 204) (C1 -4) 중 어느 하나 이상에 의해 액세스될 캐시 메모리 (300) 의 각 로우에서 각 칼럼들을 지정하도록 적응될 수 있다. 예를 들어, 비트 벡터 V는 4-비트 벡터일 수 있고 여기서 벡터의 각 비트는 프로세서 코어들 (201-204) 중 각각의 하나에 대응한다. 비트 벡터가 "1" 이면, 칼럼은 프로세서 코어들 (201-204) 중 대응하는 하나에 의해 액세스될 수 있다. 예를 들어, 칼럼에 대한 비트 벡터 (V) 가 "1010"이면, 그 칼럼은 프로세서 코어 (201) 또는 프로세서 코어 (203) 중 어느 하나에 의해 액세스될 수 있다. 칼럼이 "1111" 의 비트 벡터 (V) 를 갖는 경우에, 칼럼은 4개 프로세서 코어들 (201-204) 중 어느 하나에 의해 액세스될 수 있다.
각 칼럼들에 대한 비트 벡터 (V) 의 특정한 값에 상관없이, 각 칼럼들에서 첫번째 로케이션은 그 칼럼에 액세스할 수 있는 코어들 (201-204) 에 의한 사용을 위해 태그 (T) 를 저장한다. 태그 T들은 도 3의 캐시 메모리 (300) 에 저장된 태그 (T1 -4) 와 같은 구성을 가질 수 있고, 그들은 도 3의 캐시 메모리 (300) 에 저장된 (T1 -4) 와 같은 방식으로 사용될 수 있다. 구체적으로, 태그들 (T) 은 하위 어드레스 비트들 (AL)에 의해 액세스될 수 있고, 그 다음 비교기 (500) 는 어드레스 A1의 상위 어드레스 비트들 (AH) 과 각 태그들 (T) 을 비교할 수 있다. 매치하는 경우에, 비교기 (500) 는 "히트" 표시를 출력하는데, 이는 어드레스 (A1) 에 대응하는 데이터에 액세스하기 위해 캐시 제어기 (118) 에 의해 사용될 수 있다.
본 개시의 다른 양태에 따르면, 캐시 제어기 (118) 는 프로세서 코어 (201-204) 상에 실행되는 (이하에서 "스레드"로 지칭되는) 실행의 어플리케이션 스레드들에 적어도 부분적으로 기초하여 메인 메모리 (120) 에 저장된 데이터를 캐시할지를 결정하도록 구성될 수도 있다. 예를 들어, 하나의 어플리케이션은, 스레드에 있는 명령들 또는 스레드에 의해 사용되는 데이터가 캐시 메모리 (300) 에 저장될 때 더 효율적으로 동작할 수 있는 한편, 다른 어플리케이션의 효율은 캐시 메모리 (300) 에 저장되는 스레드에 의해 사용되는 데이터 또는 스레드에서의 명령들에 의해 현저히 혜택을 받지 않을 수도 있다. 예를 들어, 캐시 메모리 (300) 에 있는 저장된 명령 또는 데이터에 대한 판단은 스레드의 로칼리티를 참조하여 이루어질 수 있다. 예를 들어, 어플리케이션 프로그램 내에, 몇몇 명령들은 루프형 (looped) (한번 넘게 실행) 일 수 있는 한편, 다른 명령들은 비루프형 (non-looped) (오직 한번만 실행) 될 수 있다. 그러한 비루프형 명령들은 스트라이드형 레퍼런스로 지칭된다. 스트라이드형 러퍼런스들은 논루핑되기 때문에, 예를 들면 그들은 같은 명령들을 한번 넘게 반복하지 않기 때문에, 스트라이드형 레퍼런스들은 캐시 메모리 (300) 에 저장되는 것으로부터 혜택을 받지 않을 수 있다. 다른 명령들은 예측 가능한 방식으로 실행될 수 있는데, 그 경우에 명령들은 메인 메모리 (120) 로부터 미리 인출될 수 있고, 따라서 캐시 메모리에 명령을 저장할 필요성을 감소시킨다.
도 8은 본 개시의 적어도 일부 예들에 따른 캐시 할당을 위한 프로세스를 예시하는 블록도이다. 도 8에 도시된 바처럼, 복수의 실행의 스레드 (501-502) 를 포함할 수 있는, 컴퓨팅 환경 (500) 으로부터의 명령들은, 명령들이 루프형인지 (예를 들면, 분기 예측기 (branch predictor; 600) 가 이 명령을 한번 넘게 보았는지) 또는 비루프형인지에 대한 결정을 위해 분기 예측기 (600) 로 전송될 수 있다. 분기 예측기 (600) 가 명령이 비루프형, 따라서 스트라이드형 레퍼런스임을 결정하는 경우, 명령은 캐시 불가능 플래그로 마킹되어 그 명령은 공유 캐시 메모리 (300) 로 전송되지 않게 될 수 있다 [블록 601]. 다르게는, 분기 예측기 (600) 가 명령이 루프형이라고 결정하면 [블록 602], 그 명령은 캐시 메모리 (300) 로 전송될 수 있다. 따라서, 캐시 메모리 (300) 에 대한 액세스가 캐시 공간으로부터 더 큰 혜택을 가질 수도 있는 그러한 명령들로 한정될 수 있다.
소프트웨어 어플리케이션 실행 특성들이 동적으로 변화할 수 있음을 인식해야 한다. 따라서, 본원에 개시된 하나 이상의 예들에서, 명령을 캐시 불가능 플래그로 마킹 (블록 601) 할지에 대한 판단은 동적인 방식으로 시간 경과에 의해 변화하도록 구성될 수 있다.
도 9는 본 개시의 적어도 일부 예들에 따른 캐시 할당을 위한 시스템 및 프로세스를 예시하는 블록도이다. 도 9에 도시된 바처럼, 컴퓨터 시스템 (700) 은 공유 캐시를 분할하기 위한 프로세서의 예를 수행하도록 구성된 프로세서 (701) 를 포함할 수 있다. 다른 예들에서, 프로세스의 다양한 동작들 또는 다양한 동작들의 부분들이 프로세서 (701) 외부에서 수행될 수 있다. 동작 (702) 에서, 프로세스는 적어도 하나 (하나 이상) 의 프로세서 코어들 (201-204) 과 연관된 적어도 하나 (하나 이상) 의 실행의 스레드의 특성들을 결정하는 것을 포함할 수 있다. 동작 704에서, 프로세스는, 스레드의 특성에 적어도 부분적으로 기초하여, 멀티 코어 프로세서에 연결된 소프트웨어를 사용하여 개별 프로세서 코어들 (201-204) 에 캐시 메모리 (300) 내의 메모리 공간을 각기 할당하는 코어 제어기 (116) (도 1) 를 포함할 수 있다.
도 10은 본 개시의 적어도 일부 예들에 따라 프로세싱 스레드들을 캐시 가능 또는 캐시 불가능으로 마크할 수 있도록 멀티 코어 프로세서를 구성하기 위한 명령들을 저장하도록 배열된 임의의 컴퓨터 판독가능 매체 (802) 의 예를 도시한다. 컴퓨터 판독가능 매체 (802) 는 운영 시스템, 컴파일러 또는 어플리케이션과 같은 컴퓨터 프로그램 제품 (800) 의 부분일 수 있다. 컴퓨터 판독가능 매체 (802) 는 이전에 기술된 프로세스들 또는 방법들 중 하나 이상을 수행하도록 멀티 코어 프로세서들을 구성하도록 배열될 수 있는 명령들 (804) 을 저장하도록 적응될 수 있다. 이들 명령들 (804) 은, 예를 들어, 프로세싱 스레드가 스트라이드형 레퍼런스들을 포함하는 정도를 결정하기 위한 하나 이상의 실행 가능 명령들 (806) 을 포함할 수 있다. 컴퓨터 판독가능 매체에 저장된 실행 가능 명령들 (804) 은 또한, 프로세싱 스레드가 스트라이드형 레퍼런스들을 포함하는지의 결정에 기초하여 스레드를 캐시 가능 또는 캐시 불가능으로 마크하도록 멀티 코어 프로세서를 구성하기 위한 실행 가능 명령들 (808) 을 포함할 수 있다. 컴퓨터 판독가능 매체 (802) 에 저장된 다른 실행 가능 명령 (810) 은 캐시 메모리에 캐시 가능으로 마킹된 것 또는 캐시 불가능으로 마킹되지 않은 스레드에서의 명령들을 저장하도록 멀티 코어 프로세서를 구성하도록 배열될 수 있다.
상기 서술은 프로세서 코어 기반 캐시 할당의 다양한 예들을 기술한다. 다음은 프로세서 기반 캐시 할당의 방법 및 시스템들의 특정 예들이다. 이들은 예시만을 위한 것이고 한정적인 것으로 의도된 것이 아니다.
멀티 코어 프로세서, 프로세서 코어들 중 적어도 2개가 액세스 가능한 적어도 하나의 캐시 메모리, 및 캐시 메모리에 액세스하는 개별 프로세서 코어들에 캐시 메모리 연관성을 각기 할당하기 위해 멀티 코어 프로세서에 연결된 캐시 제어기를 포함하는 컴퓨팅 시스템이 첫번째 예에 개시된다. 몇몇 추가의 예들에서, 캐시 메모리 연관성은 프로세서 코어들의 하드웨어 특성에 적어도 부분적으로 기초하여 프로세서 코어들에 할당될 수 있다. 다른 예들에서, 캐시 메모리 연관성은 프로세서 코어들과 연관된 하나 이상의 실행의 스레드의 실행 특성에 적어도 부분적으로 기초하여 프로세서 코어들에 할당될 수 있다. 몇몇 추가의 예들에서, 캐시 메모리 연관성의 할당은 시간에 따라 변화할 수 있도록 동적으로 이루어질 수 있다. 이들 및 다른 예들에서, 캐시 메모리 연관성은 캐시 메모리의 상이한 로우들에 대해 각기 결정될 수 있다. 또 다른 예들에서, 시스템 또는 소프트웨어는 하나 이상의 컴포넌트들, 이를테면 프로세싱 스레드에서 스트라이드형 레퍼런스들을 식별하고 스레드를 캐시 불가능 플래그로 마킹하여 스레드의 명령들이 캐시 메모리 내에 저장되지 않도록 구성되는 분기 예측기를 포함한다.
본 개시는 본원에 기술된 특정 예들에 관하여 한정이 아니라, 다양한 양태들의 예시로서 의도되었다. 많은 변경들 및 예들이 그의 사상 및 범위로부터 이탈함이 없이 이루어질 수 있음은, 당업자에게 자명할 것이다. 본 개시의 범위 내에서의 기능적으로 등가인 방법 및 장치들은 본원에 열거된 것들 이외에, 이전의 설명들로부터 당업자에게 자명할 것이다. 그러한 변경들 및 예들은 첨부된 청구항들의 범위 내에 속하는 것으로 의도된다. 본 개시는 첨부된 청구항들과 그러한 청구항들에 부여된 등가물들의 전체 범위에 의해서만 한정될 것이다. 본 개시는 특정 방법, 시약, 화합물 조성 또는 생물학적 시스템에 한정되는 것이 아니며, 이는 물론 변화할 수 있다는 것이 이해될 것이다. 본원에 사용된 용어는 특정 예들의 설명을 위한 것일 뿐이고 한정적인 것으로 의도된 것이 아니라는 것이 또한 이해될 것이다.
본원에서 실질적으로 임의의 복수 용어 및/또는 단수 용어의 이용에 대해서, 당업자는 문맥 및/또는 어플리케이션에 적절한 바대로 복수에서 단수로 및/또는 단수에서 복수로 바꿀 수도 있다. 다양한 단수/복수의 순열 (permutation) 은 간결함을 위해 본원에 명백하게 제시될 수도 있다.
일반적으로, 본원에 그리고 특히 첨부된 청구항 (예를 들어, 첨부된 청구항들의 본문들) 에서 이용되는 용어는 일반적으로 "개방형" 용어들 (예를 들어, "포함하는" 이라는 용어는 "비한정적으로 포함하는" 으로 해석되어야 하고, "갖는" 이라는 용어는 "적어도 갖는" 으로 해석되어야 하고, "포함한다" 라는 용어는 "비한정적으로 포함한다" 로 해석되어야 한다는 것 등) 로서 의도된다는 것이 당업자에 의해 이해될 것이다.
또한, 도입된 청구항 기재의 특정한 수가 의도되는 경우, 이러한 의도는 청구항에 명시적으로 기재될 것이며, 이러한 기재의 부재 시에 그러한 의도가 없다는 것이 당업자에 의해 이해될 것이다. 예를 들어, 이해를 돕기 위하여, 다음의 첨부된 청구항은 청구항 기재를 도입하기 위한 "적어도 하나" 및 "하나 이상" 의 도입 어구의 이용을 포함할 수도 있다. 하지만, 이러한 어구들의 이용은, 같은 청구항이 도입 어구 "하나 이상" 또는 "적어도 하나" 및 단수형을 포함할 때에도, 단수형에 의한 청구항 기재의 도입이 그러한 도입된 청구항 기재를 포함하는 어느 구체적인 청구항을 오직 하나의 그러한 기재만을 포함하는 예들에 한정한다는 것을 시사하는 것으로 해석되어서는 안된다 (예를 들어, 단수형은 "적어도 하나" 또는 "하나 이상" 을 의미하도록 해석되어야 한다). 또한, 도입되는 청구항 기재의 특정한 수가 명시적으로 기재되는 경우에도, 당업자는 이러한 기재가 적어도 기재된 수를 의미하는 것으로 해석되어야 한다는 것을 인식할 것이다 (예를 들어, 다른 수식어 없는, "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" 의 가능성을 포함하도록 이해될 것이다.
또한, 본 개시의 특징들 또는 양태들이 마쿠시 그룹에 관하여 기술되는 경우, 당업자는 그러한 개시가 또한 그에 의해 마쿠시 그룹 중 임의의 개별 멤버 또는 멤버들의 서브그룹들에 관하여 기술된다는 것을 이해할 것이다.
기술된 설명을 제공하는 것에 관하여서와 같이, 어느 그리고 모든 목적을 위해, 본원에 개시된 모든 범위들은 또한 임의의 그리고 모든 가능한 하위범위들 및 그의 하위범위들의 조합을 포함한다는 것을 당업자는 이해할 것이다. 임의의 열거된 범위는 같은 범위가 적어도 동등한 절반들, 삼등분들, 네등분들, 다섯등분들, 열등분들 등으로 분해되는 것을 충분히 기술하고 가능하게 하는 것으로 용이하게 인식될 수 있다. 비한정적인 예로서, 여기에 논의된 각 범위는 하부 삼등분, 중간 삼등분 및 상부 삼등분 등으로 손쉽게 분할될 수 있다. "까지", "적어도", "초과", "미만" 등의 모든 문언들은 기재된 수를 포함하고 후속하여 위에서 논의된 하위범위들로 분할될 수 있는 범위들을 지칭함이 당업자에 의해 이해될 것이다. 마지막으로, 범위는 각각의 개별 멤버들을 포함한다는 것이 당업자에 의해 이해될 것이다. 따라서, 예를 들면, 1-3개 아이템들을 갖는 그룹은 1개, 2개, 또는 3개 아이템들을 갖는 그룹들을 지칭한다. 유사하게, 1-5개 아이템들을 갖는 그룹은 1개, 2개, 3개, 4개, 또는 5개 아이템들을 갖는 그룹들을 지칭하는 것 등등이다.
전술한 상세한 설명은 블록도, 흐름도, 및/또는 예들의 사용을 통해 디바이스들 및/또는 프로세스들의 다양한 예들을 제시하지만, 그러한 블록도, 흐름도 및/또는 예들은 하나 이상의 기능들 및/또는 동작들을 포함하고, 그러한 블록도, 흐름도, 또는 예들 내의 각 기능 및/또는 동작은 광범위한 하드웨어, 소프트웨어, 펌웨어, 또는 사실상 이들의 조합에 의해 개별적으로 및/또는 집합적으로 구현될 수 있는 것이 당업자에 의해 이해될 것이다. 일 예에서, 본원에 기술된 요지의 몇몇 부분들은 ASIC (Application Specific Integrated Circuit), FPGA (Field Programmable Gate Array), DSP (digital signal processor), 또는 다른 집적 포맷들을 통하여 구현될 수 있다. 하지만, 당업자는 여기에 개시된 예들의 일부 양태들은 전체적으로 또는 부분적으로, 동등하게 집적 회로에서, 하나 이상의 컴퓨터들 상에서 실행되는 하나 이상의 컴퓨터 프로그램들로서 (예를 들면, 하나 이상의 컴퓨터 시스템들 상에 실행되는 하나 이상의 프로그램들로서), 하나 이상의 프로세서들 상에서 실행되는 하나 이상의 프로그램들로서 (예를 들면, 하나 이상의 마이크로프로세서들 상에서 실행되는 하나 이상의 프로그램들로서), 펌웨어로서, 또는 사실상 이들의 조합으로서 구현될 수 있고, 회로 설계 및/또는 소프트웨어 및 또는 펌웨어를 위한 코드 작성은 본 개시에 비추어 당업자의 기능 범위 내에 충분히 속한다는 것을 인식할 것이다. 예를 들면, 사용자가 속도 및 정확도를 최고로 결정하는 경우, 사용자는 주로 하드웨어 및/또는 펌웨어 수단 (vehicle) 에 대해 선택할 수 있고; 유연성이 최고인 경우, 사용자는 주로 소프트웨어 구현을 선택할 수 있고; 또는 그렇지 않으면 또 다르게, 사용자는 하드웨어, 소프트웨어 및/또는 펌웨어의 어떤 조합을 선택할 수 있다.
또한, 당업자는 여기에 기술된 요지의 메카니즘이 다양한 형태의 프로그램 제품으로서 배포될 수 있고, 여기에 기술된 요지의 예시적인 예는 실제적으로 그 배포를 수행하기 위해 사용되는 특정 타입의 신호를 지닌 매체에 상관없이 적용됨을 인식할 것이다. 신호를 지닌 매체의 예들은 다음을 비한정적으로 포함한다: 기록가능한 타입의 매체 이를테면 플로피디스크, 하드 디스크 드라이브, CD (Compact Disc), DVD (Digital Video Disk), 디지털 테입, 컴퓨터 메모리 등; 및 송신 타입 매체, 이를테면 디지털 및/또는 아날로그 통신 매체 (예를 들면, 광섬유 케이블, 도파관, 유선 통신 링크, 무선 통신 링크 등).
당업자는 본원에 제시된 방식으로 디바이스들 및/또는 프로세스들을 기술하고 그 후, 그러한 기술된 디바이스들 및/또는 프로세스들을 데이터 프로세싱 시스템들에 통합하기 위하여 엔지니어링 업무 (engineering practice) 를 이용하는 것은 당해 기술 분야에서 일반적이라는 것을 인식할 것이다. 즉, 본원에 기술된 디바이스들 및/또는 프로세스들 중 적어도 일부가 합당한 양의 실험을 통해 데이터 프로세싱 시스템으로 통합될 수 있다. 당업자는, 통상적인 데이터 프로세싱 시스템은 일반적으로 시스템 유닛 하우징, 비디오 디스플레이 디바이스, 메모리 이를테면 휘발성 메모리와 비휘발성 메모리, 프로세서들 이를테면 마이크로프로세서들 및 디지털 신호 프로세서들, 컴퓨터를 이용한 엔티티 (entity) 이를테면 운영 시스템, 드라이버들, 그래픽 사용자 인터페이스, 및 어플리케이션 프로그램들, 하나 이상의 상호작용 디바이스들, 이를테면 터치패드 또는 터치스크린, 및/또는 피드백 루프 및 제어 모터들 (예를 들면, 포지션 및/또는 속도 센싱을 위한 피드백; 컴포넌트들 및/또는 양들을 이동 및/또는 조정하기 위한 제어 모터들) 을 포함하는 제어 시스템들 중 하나 이상을 포함할 수 있다는 것을 인식할 것이다. 통상적인 데이터 프로세싱 시스템은, 데이터 컴퓨팅/통신 및/또는 네트워크 컴퓨팅/통신 시스템들에서 통상적으로 발견되는 것들과 같은 임의의 적합한 상업적으로 이용가능한 컴포넌트들을 이용하여 구현될 수 있다.
본원에 기술된 요지는 때때로 상이한 다른 컴포넌트들 내에 포함되거나 또는 상이한 다른 컴포넌트들과 연결된 상이한 컴포넌트들을 예시한다. 그러한 설명된 아키텍처들은 단지 예들이고, 사실상, 같은 기능을 달성하는 많은 다른 아키텍처들이 구셩될 수 있음이 이해될 것이다. 개념적인 의미에서, 같은 기능을 달성하기 위한 컴포넌트들의 임의의 배열은 효과적으로 "연관(associated)" 되어 원하는 기능이 달성되도록 한다. 그러므로, 특정 기능을 달성하기 위하여 본원에서 결합된 임의의 2개의 컴포넌트들은 서로 "연관" 되어, 아키텍처 또는 개재하는 컴포넌트들에 상관없이 원하는 기능이 달성되도록 하는 것으로 보여질 수 있다. 마찬가지로, 그렇게 연관된 임의의 2개의 컴포넌트들은 또한 서로에 대해 "동작가능하게 접속" 또는 "동작가능하게 연결" 되어 원하는 기능을 달성하는 것으로 볼 수도 있고, 그렇게 연관될 수 있는 임의의 2개의 컴포넌트들은 서로에 대해 "동작가능하게 연결가능" 하여 원하는 기능을 달성하는 것으로 볼 수도 있다. 동작가능하게 연결가능한 특정 예들은 물리적으로 정합 가능 (mateable) 및/또는 물리적으로 상호작용하는 컴포넌트들 및/또는 무선 상호작용가능한 및/또는 무선으로 상호작용하는 컴포넌트들 및/또는 논리적으로 상호작용하는 및/또는 논리적으로 상호작용가능한 컴포넌트들을 비한정적으로 포함한다.
본원에 다양한 양태들 및 실시형태들이 개시되었으나, 당업자들에게는 다른 양태들 및 실시형태들이 명백할 것이다. 본 명세서에 개시된 다양한 양태들 및 실시형태들은 예시를 위한 것이고 한정적인 것으로 의도되지 않았으며, 진정한 범위 및 사상은 다음의 청구항들에 의해 표시된다.

Claims (20)

  1. 컴퓨팅 시스템으로서,
    복수의 개별 프로세서 코어들을 포함하는 멀티 코어 프로세서;
    상기 복수의 개별 프로세서 코어들 중 적어도 일부가 액세스 가능하도록 구성된 캐시 메모리; 및
    상기 멀티 코어 프로세서에 연결된 캐시 제어기로서, 상기 캐시 제어기는 상기 캐시 메모리 내에서 상기 복수의 개별 프로세서 코어들 중 적어도 일부에 대한 메모리 공간을 할당하도록 구성되고, 상기 캐시 제어기는 또한 각각의 캐시 메모리 연관성 레벨들로 상기 복수의 개별 프로세서 코어들 중 적어도 일부에 의한 상기 캐시 메모리에 대한 액세스를 가능하게 하도록 구성되며, 각각의 캐시 메모리 연관성 레벨들은 상기 복수의 개별 프로세서 코어들 중 적어도 일부에 대해 상이한, 상기 캐시 제어기를 포함하는, 컴퓨팅 시스템.
  2. 제 1 항에 있어서,
    상기 복수의 개별 프로세서 코어들에 연결된 코어 제어기를 더 포함하고,
    상기 코어 제어기는 상기 복수의 개별 프로세서 코어들의 각각에 의해 어느 프로세싱 태스크들이 프로세싱될지를 결정하도록 구성되는, 컴퓨팅 시스템.
  3. 제 1 항에 있어서,
    상기 복수의 개별 프로세서 코어들에 연결된 코어 제어기를 더 포함하고,
    상기 코어 제어기는 상기 캐시 메모리에 어느 스레드들이 저장될지를 결정하도록 구성되는, 컴퓨팅 시스템.
  4. 제 1 항에 있어서,
    상기 개별 프로세서 코어들 중 적어도 일부는 스트라이드형 레퍼런스들을 식별하도록 구성된 각각의 분기 예측기들을 포함하고,
    상기 컴퓨팅 시스템은 상기 캐시 메모리에 액세스하도록 구성된 상기 복수의 개별 프로세서 코어들 중 적어도 일부에 연결된 코어 제어기를 더 포함하고,
    상기 코어 제어기는 상기 스트라이드형 레퍼런스들의 식별에 적어도 부분적으로 기초하여 상기 캐시 메모리 내의 메모리 공간을 할당하도록 구성되는, 컴퓨팅 시스템.
  5. 제 1 항에 있어서,
    상기 복수의 개별 프로세서 코어들에 연결된 코어 제어기를 더 포함하고,
    상기 코어 제어기는 상기 개별 프로세서 코어들의 각각과 연관된 하드웨어 특성에 적어도 부분적으로 기초하여 상기 개별 프로세서 코어들에 상기 캐시 메모리 내의 메모리 공간을 할당하도록 구성되는, 컴퓨팅 시스템.
  6. 제 1 항에 있어서,
    상기 캐시 메모리는 로우 (row) 들을 포함하고,
    상기 캐시 제어기는, 상기 캐시 메모리의 상기 로우들의 각각에 대한 각각의 캐시 메모리 연관성 레벨을 상기 캐시 메모리에 액세스할 수 있는 상기 개별 프로세서 코어들의 각각에 지정하도록 구성되는, 컴퓨팅 시스템.
  7. 제 1 항에 있어서,
    상기 캐시 메모리에 액세스하도록 구성된 상기 개별 프로세서 코어들의 각각은 복수의 중위 (middle order) 어드레스 비트들을 포함하는 어드레스를 출력하도록 구성되고,
    상기 캐시 제어기는 상기 캐시 메모리에서의 메모리 셀들의 각각의 로우를 선택하기 위한 인덱스로서 상기 중위 어드레스 비트들을 사용하도록 구성되는, 컴퓨팅 시스템.
  8. 제 1 항에 있어서,
    상기 캐시 메모리에 액세스하도록 구성된 상기 개별 프로세서 코어들의 각각은 복수의 상위 어드레스 비트들을 포함하는 어드레스를 출력하도록 구성되고,
    상기 캐시 제어기는 상기 개별 프로세서 코어들 중 하나로부터의 어드레스의 상기 상위 어드레스 비트들을 상기 캐시 메모리에 저장된 각각의 태그들의 각각과 비교하는 것에 의해 상기 상위 어드레스 비트들을 상기 저장된 태그로서 사용하도록 구성되고, 상기 캐시 제어기는, 상기 저장된 태그들 중 하나와 어드레스의 상기 상위 어드레스 비트들 사이의 매치에 응답하여, 상기 개별 프로세서 코어들 중 하나로 하여금 상기 태그가 저장된 로케이션에 대응하는 상기 캐시 메모리에서의 로케이션에 저장된 데이터에 액세스하게 하도록 구성된, 컴퓨팅 시스템.
  9. 제 1 항에 있어서,
    상기 캐시 메모리에 액세스하도록 구성된 상기 개별 프로세서 코어들의 각각은 복수의 하위 어드레스 비트들을 포함하는 어드레스를 출력하도록 구성되고,
    상기 캐시 제어기는, 상기 캐시 메모리의 로우 (row) 에 저장된 복수의 데이터 비트들을 선택하기 위하여 상기 하위 어드레스 비트들을 사용하도록 구성되는, 컴퓨팅 시스템.
  10. 제 1 항에 있어서,
    상기 캐시 메모리의 각각의 칼럼 (column) 은 비트 벡터를 저장하도록 구성되고,
    상기 캐시 제어기는, 상기 개별 프로세서 코어들 중 어느 것이 상기 캐시 메모리의 각각의 칼럼에 액세스할 수도 있는지를 결정하기 위해 상기 비트 벡터를 이용하도록 구성되는, 컴퓨팅 시스템.
  11. 제 1 항에 있어서,
    상기 캐시 제어기는, 명령들 및 데이터로 하여금 후기입 캐시 기입 폴리시를 사용하여 상기 캐시 메모리에 기입되게 하도록 구성되는, 컴퓨팅 시스템.
  12. 제 1 항에 있어서,
    상기 캐시 제어기는, 상기 개별 프로세서 코어들의 각각과 연관된 하드웨어 특성에 적어도 부분적으로 기초하여 각각의 캐시 메모리 연관성 레벨로 상기 캐시 메모리에 액세스하도록 구성된 상기 개별 프로세서 코어들의 각각에 의해 상기 캐시 메모리가 액세스되는 것을 허용하도록 구성되는, 컴퓨팅 시스템.
  13. 제 1 항에 있어서,
    상기 캐시 제어기는, 상기 복수의 개별 프로세서 코어들 중 적어도 일부와 연관된 실행의 스레드들의 실행 특성에 적어도 부분적으로 기초하여 각각의 캐시 메모리 연관성 레벨로 상기 복수의 개별 프로세서 코어들 중 적어도 일부에 의해 상기 캐시 메모리가 액세스되는 것을 허용하도록 구성되는, 컴퓨팅 시스템.
  14. 복수의 프로세서 코어들이 캐시 메모리에 액세스하는 것을 허용하는 방법으로서,
    상기 복수의 프로세서 코어들의 각각에 각각의 캐시 메모리 연관성 레벨을 지정하는 단계로서, 상기 복수의 프로세서 코어들 중 적어도 하나에 지정된 캐시 메모리 연관성 레벨은 상기 복수의 프로세서 코어들 중 적어도 다른 하나에 지정된 캐시 메모리 연관성 레벨과 상이한, 상기 각각의 캐시 메모리 연관성 레벨을 지정하는 단계; 및
    상기 복수의 프로세서 코어들의 각각이 각각 지정된 캐시 메모리 연관성 레벨로 상기 캐시 메모리에 액세스하는 것을 가능하게 하는 단계를 포함하는, 복수의 프로세서 코어들이 캐시 메모리에 액세스하는 것을 허용하는 방법.
  15. 제 14 항에 있어서,
    적어도 최근에 사용된 치환 폴리시를 사용하여 상기 캐시 메모리에 저장된 데이터를 축출하는 단계를 더 포함하는, 복수의 프로세서 코어들이 캐시 메모리에 액세스하는 것을 허용하는 방법.
  16. 제 14 항에 있어서,
    상기 복수의 프로세서 코어들의 각각에 각각의 캐시 메모리 연관성 레벨을 지정하는 단계는, 상기 캐시 메모리의 로우들의 각각에 대한 각각의 캐시 메모리 연관성 레벨을 상기 캐시 메모리에 액세스할 수 있는 상기 복수의 프로세서 코어들의 각각에 지정하는 단계를 포함하고,
    상기 로우들 중 일부에 지정된 캐시 메모리 연관성 레벨은 상기 로우들 중 잔부에 지정된 캐시 메모리 연관성 레벨과는 상이한, 복수의 프로세서 코어들이 캐시 메모리에 액세스하는 것을 허용하는 방법.
  17. 제 14 항에 있어서,
    특정량보다 많은 비루프형 명령들을 포함하는 스레드들을 식별하는 단계;
    상기 식별된 스레드들을 캐시 불가능 플래그로 마킹하는 단계; 및
    상기 마킹된 스레드들이 상기 캐시 메모리에 저장되지 못하게 하는 단계를 더 포함하는, 복수의 프로세서 코어들이 캐시 메모리에 액세스하는 것을 허용하는 방법.
  18. 제 14 항에 있어서,
    상기 복수의 프로세서 코어들의 각각에 각각의 캐시 메모리 연관성 레벨을 지정하는 단계는, 지정된 캐시 메모리 연관성 레벨이 시간에 따라 변화하도록 상기 복수의 프로세서 코어들의 각각에 캐시 메모리 연관성 레벨을 동적으로 지정하는 단계를 포함하는, 복수의 프로세서 코어들이 캐시 메모리에 액세스하는 것을 허용하는 방법.
  19. 복수의 프로세서 코어들이 컴퓨팅 시스템에서 캐시 메모리에 액세스하는 것을 허용하기 위한 프로시저를 수행하기 위한 컴퓨터 실행 가능한 명령들이 저장된 컴퓨터 액세스 가능한 매체로서,
    상기 프로시저는,
    상기 복수의 프로세서 코어들의 각각에 각각의 캐시 메모리 연관성 레벨을 지정하는 단계로서, 상기 복수의 프로세서 코어들 중 적어도 하나에 지정된 캐시 메모리 연관성 레벨은 상기 복수의 프로세서 코어들 중 적어도 다른 하나에 지정된 캐시 메모리 연관성 레벨과 상이한, 상기 각각의 캐시 메모리 연관성 레벨을 지정하는 것; 및
    상기 복수의 프로세서 코어들의 각각이 각각 지정된 캐시 메모리 연관성 레벨로 상기 캐시 메모리에 액세스하는 것을 허용하는 것을 포함하는, 컴퓨터 액세스 가능한 매체.
  20. 제 19 항에 있어서,
    상기 복수의 프로세서 코어들의 각각에 각각의 캐시 메모리 연관성 레벨을 지정하는 단계는, 상기 캐시 메모리의 복수의 로우들의 각각에서 특정 칼럼들과 상기 복수의 프로세서 코어들의 각각을 연관시키는 단계를 포함하는, 컴퓨터 액세스 가능한 매체.
KR1020127004213A 2009-08-21 2010-06-11 프로세서 코어들에 대한 캐시 메모리 연관성의 할당 KR101373925B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/545,625 2009-08-21
US12/545,625 US8244982B2 (en) 2009-08-21 2009-08-21 Allocating processor cores with cache memory associativity
PCT/US2010/038403 WO2011022110A2 (en) 2009-08-21 2010-06-11 Allocating processor cores with cache memory associativity

Publications (2)

Publication Number Publication Date
KR20120046258A KR20120046258A (ko) 2012-05-09
KR101373925B1 true KR101373925B1 (ko) 2014-03-12

Family

ID=43606211

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127004213A KR101373925B1 (ko) 2009-08-21 2010-06-11 프로세서 코어들에 대한 캐시 메모리 연관성의 할당

Country Status (5)

Country Link
US (1) US8244982B2 (ko)
JP (1) JP2013502645A (ko)
KR (1) KR101373925B1 (ko)
CN (1) CN102483840B (ko)
WO (1) WO2011022110A2 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9208093B2 (en) * 2009-04-21 2015-12-08 Empire Technology Development Llc Allocation of memory space to individual processor cores
CN103139110B (zh) * 2011-11-30 2016-08-03 上海贝尔股份有限公司 一种用于基带处理的装置和方法
CN105264501B (zh) * 2013-06-19 2018-06-08 英派尔科技开发有限公司 定位多核处理器中的被高速缓存的数据的方法和装置
KR102117511B1 (ko) * 2013-07-30 2020-06-02 삼성전자주식회사 프로세서 및 메모리 제어 방법
KR102161689B1 (ko) * 2013-12-10 2020-10-05 삼성전자 주식회사 L2 캐시 특성을 조절할 수 있는 멀티-코어 cpu 시스템, 이의 동작 방법, 및 이를 포함하는 장치들
JP6281442B2 (ja) * 2014-08-14 2018-02-21 富士通株式会社 割り当て制御プログラム、割り当て制御方法及び割り当て制御装置
US9697126B2 (en) * 2014-11-25 2017-07-04 Qualcomm Incorporated Generating approximate usage measurements for shared cache memory systems
KR102354848B1 (ko) 2014-11-28 2022-01-21 삼성전자주식회사 캐시 메모리 장치 및 이를 포함하는 전자 시스템
US10664751B2 (en) 2016-12-01 2020-05-26 Via Alliance Semiconductor Co., Ltd. Processor with memory array operable as either cache memory or neural network unit memory
CN105677580B (zh) * 2015-12-30 2019-04-12 杭州华为数字技术有限公司 访问缓存的方法和装置
TWI571745B (zh) * 2016-01-26 2017-02-21 鴻海精密工業股份有限公司 緩存管理方法及使用該方法的電子裝置
FR3061327B1 (fr) * 2016-12-26 2019-05-31 Thales Procede de controle d'un processeur multi-coeurs et calculateur associe
US10789175B2 (en) * 2017-06-01 2020-09-29 Mellanox Technologies Ltd. Caching policy in a multicore system on a chip (SOC)
US10303603B2 (en) * 2017-06-13 2019-05-28 Microsoft Technology Licensing, Llc Low power multi-core coherency
CN112148665B (zh) * 2019-06-28 2024-01-09 深圳市中兴微电子技术有限公司 缓存的分配方法及装置
KR20210034372A (ko) * 2019-09-20 2021-03-30 주식회사 엘지화학 배터리 관리 장치 및 방법
CN111427837B (zh) * 2020-06-11 2020-11-13 杭州万高科技股份有限公司 一种总线设备连接调整的异构多核处理器

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040260883A1 (en) 2003-01-28 2004-12-23 Sun Microsystems, Inc. Computer system employing bundled prefetching
US20080040554A1 (en) 2006-08-14 2008-02-14 Li Zhao Providing quality of service (QoS) for cache architectures using priority information

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02181844A (ja) * 1989-01-06 1990-07-16 Matsushita Electric Ind Co Ltd キャッシュメモリ管理方法
US5357618A (en) * 1991-04-15 1994-10-18 International Business Machines Corporation Cache prefetch and bypass using stride registers
JPH07248967A (ja) * 1994-03-11 1995-09-26 Hitachi Ltd メモリ制御方式
US5689653A (en) * 1995-02-06 1997-11-18 Hewlett-Packard Company Vector memory operations
US5860151A (en) * 1995-12-07 1999-01-12 Wisconsin Alumni Research Foundation Data cache fast address calculation system and method
JP2001282617A (ja) * 2000-03-27 2001-10-12 Internatl Business Mach Corp <Ibm> 共有されたキャッシュを動的に区分するための方法及びシステム
JP2002342163A (ja) * 2001-05-15 2002-11-29 Fujitsu Ltd マルチスレッドプロセッサ用キャッシュ制御方式
US6754776B2 (en) * 2001-05-17 2004-06-22 Fujitsu Limited Method and system for logical partitioning of cache memory structures in a partitoned computer system
JP3620473B2 (ja) * 2001-06-14 2005-02-16 日本電気株式会社 共有キャッシュメモリのリプレイスメント制御方法及びその装置
JP2003030047A (ja) * 2001-07-16 2003-01-31 Fujitsu Ltd キャッシュ装置およびキャッシュ方法
JP3900025B2 (ja) * 2002-06-24 2007-04-04 日本電気株式会社 共有キャッシュメモリのヒット判定制御方法及び共有キャッシュメモリのヒット判定制御方式
JP4080527B2 (ja) * 2005-03-22 2008-04-23 松下電器産業株式会社 キャッシュメモリ制御方法およびキャッシュメモリ制御装置
US7647514B2 (en) * 2005-08-05 2010-01-12 Fujitsu Limited Reducing power consumption at a cache
JP2008097572A (ja) * 2006-09-11 2008-04-24 Matsushita Electric Ind Co Ltd 演算装置、コンピュータシステム、および携帯機器
US7937535B2 (en) * 2007-02-22 2011-05-03 Arm Limited Managing cache coherency in a data processing apparatus
JP4980751B2 (ja) * 2007-03-02 2012-07-18 富士通セミコンダクター株式会社 データ処理装置、およびメモリのリードアクティブ制御方法。
JP2009015509A (ja) * 2007-07-03 2009-01-22 Renesas Technology Corp キャッシュメモリ装置
US9047197B2 (en) * 2007-10-23 2015-06-02 Oracle America, Inc. Non-coherent store instruction for fast inter-strand data communication for processors with write-through L1 caches
US8589629B2 (en) * 2009-03-27 2013-11-19 Advanced Micro Devices, Inc. Method for way allocation and way locking in a cache
US9208093B2 (en) 2009-04-21 2015-12-08 Empire Technology Development Llc Allocation of memory space to individual processor cores

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040260883A1 (en) 2003-01-28 2004-12-23 Sun Microsystems, Inc. Computer system employing bundled prefetching
US20080040554A1 (en) 2006-08-14 2008-02-14 Li Zhao Providing quality of service (QoS) for cache architectures using priority information

Also Published As

Publication number Publication date
KR20120046258A (ko) 2012-05-09
CN102483840B (zh) 2016-01-20
WO2011022110A2 (en) 2011-02-24
US8244982B2 (en) 2012-08-14
WO2011022110A3 (en) 2011-05-26
JP2013502645A (ja) 2013-01-24
CN102483840A (zh) 2012-05-30
US20110047333A1 (en) 2011-02-24

Similar Documents

Publication Publication Date Title
KR101373925B1 (ko) 프로세서 코어들에 대한 캐시 메모리 연관성의 할당
US20210109659A1 (en) Use of outstanding command queues for separate read-only cache and write-read cache in a memory sub-system
US9424191B2 (en) Scalable coherence for multi-core processors
Seshadri et al. Gather-scatter DRAM: In-DRAM address translation to improve the spatial locality of non-unit strided accesses
Mutlu et al. Research problems and opportunities in memory systems
US20170109279A1 (en) Partitioning shared caches
CN108228094B (zh) 存储器侧高速缓存中通路的伺机增加
US20130086564A1 (en) Methods and systems for optimizing execution of a program in an environment having simultaneously parallel and serial processing capability
US9575806B2 (en) Monitoring accesses of a thread to multiple memory controllers and selecting a thread processor for the thread based on the monitoring
US20190370180A1 (en) System, Apparatus And Method For Selective Enabling Of Locality-Based Instruction Handling
JP2007293839A (ja) ロックされたキャッシュ内のセットの置換を管理するための方法、コンピュータ・プログラム、キャッシング・システムおよびプロセッサ
US20210357341A1 (en) Priority scheduling in queues to access cache data in a memory sub-system
US11914520B2 (en) Separate read-only cache and write-read cache in a memory sub-system
US10437732B2 (en) Multi-level cache with associativity collision compensation
US10482017B2 (en) Processor, method, and system for cache partitioning and control for accurate performance monitoring and optimization
JP2010097557A (ja) セットアソシアティブ方式のキャッシュ装置及びキャッシュ方法
US8490071B2 (en) Shared prefetching to reduce execution skew in multi-threaded systems
Zhang et al. Fuse: Fusing stt-mram into gpus to alleviate off-chip memory access overheads
EP3588312A1 (en) Apparatus, method, and system for enhanced data prefetching based on non-uniform memory access (numa) characteristics
US10013352B2 (en) Partner-aware virtual microsectoring for sectored cache architectures
US9792213B2 (en) Mitigating busy time in a high performance cache
JP2024511751A (ja) プロセッシングインメモリ同時処理システム及び方法
Li et al. A self-learning pattern adaptive prefetching method for big data applications
US20240111672A1 (en) Data co-location using address hashing for high-performance processing in memory
US11354127B2 (en) Method of managing multi-tier memory displacement using software controlled thresholds

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

FPAY Annual fee payment

Payment date: 20190328

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20200227

Year of fee payment: 7