KR20180130536A - 캐시 테스트 영역을 기반으로 하는 프리페치를 위한 캐시 에이징 정책 선택 - Google Patents

캐시 테스트 영역을 기반으로 하는 프리페치를 위한 캐시 에이징 정책 선택 Download PDF

Info

Publication number
KR20180130536A
KR20180130536A KR1020187030919A KR20187030919A KR20180130536A KR 20180130536 A KR20180130536 A KR 20180130536A KR 1020187030919 A KR1020187030919 A KR 1020187030919A KR 20187030919 A KR20187030919 A KR 20187030919A KR 20180130536 A KR20180130536 A KR 20180130536A
Authority
KR
South Korea
Prior art keywords
cache
region
request
response
entry
Prior art date
Application number
KR1020187030919A
Other languages
English (en)
Other versions
KR102470184B1 (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 KR20180130536A publication Critical patent/KR20180130536A/ko
Application granted granted Critical
Publication of KR102470184B1 publication Critical patent/KR102470184B1/ko

Links

Images

Classifications

    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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/0893Caches characterised by their organisation or structure
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • 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/602Details relating to cache prefetching

Landscapes

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

Abstract

캐시 컨트롤러[105]는 캐시들의 상이한 테스트 영역들[115, 116]에 대한 액세스 메트릭스를 기반으로 캐시[110]의 일부에 에이징 정책[111, 112]을 적용하며, 이에 의해 각각의 테스트 영역이 상이한 에이징 정책을 구현한다. 각 영역에 대한 에이징 정책은 캐시의 각 엔트리에 대한 초기 에이지 값을 설정하고, 특정 에이징 정책은 엔트리가 프로세서 코어로부터의 요구 요청에 대한 응답으로 캐시에 위치하게 되었는지 또는 프리페치 요청에 대한 응답으로 캐시에 위치하게 되었는지를 기반으로 주어진 엔트리의 에이지를 설정할 수 있다. 캐시 컨트롤러는 그것의 캐시 교체 정책의 기준으로 각 엔트리의 에이지 값을 사용할 수 있다.

Description

캐시 테스트 영역을 기반으로 하는 프리페치를 위한 캐시 에이징 정책 선택
본 발명은 일반적으로 프로세서들 더 상세하게는 프로세서 캐시들에 관한 것이다.
메모리 액세스 효율을 향상시키기 위해, 많은 프로세서는 프로세서가 주 메모리에 저장된 데이터의 서브 세트를 저장하기 위한 하나 이상의 캐시를 포함하는 메모리 계층 구조를 채택한다. 주 메모리의 데이터 서브 세트가 캐시에 저장되는 기준은 프로세서 설계에 따라 다를 수 있지만, 통상적으로는 최근에 액세스되었던 데이터의 캐싱을 우선시한다. 또한, 일부 프로세서는 가까운 장래에 프로세서 코어가 액세스할 가능성이 있는 데이터를 예측하는 하나 이상의 프리페처를 채택하고, 해당 데이터를 주 메모리로부터 하나 이상의 캐시로 복사한다. 새로운 데이터를 하나 이상의 캐시로 이동시키기 위해, 프로세서는 통상적으로 특정 교체 기법에 기초하여 제거할 이전에 저장된 데이터를 선택해야 한다. 예를 들어, 일부 프로세서는 최저 사용 빈도(LRU, least-recently-used) 교체 기법을 채택하며, 이에 의해 프로세서 코어가 가장 오랜 시간 액세스하지 않았던 데이터를 저장하는 캐시 엔트리를 제거한다. 그러나, 많은 상황에서 LRU 교체 기법은 프로세서 코어에서 실행되는 명령들의 메모리 액세스 패턴들과 일치하지 않아, 바람직하지 않은 낮은 메모리 액세스 효율을 초래한다.
본 발명은 첨부 도면들을 참조하여 더 양호하게 이해될 수 있고, 이의 많은 특징 및 이점이 해당 기술분야에서의 통상의 기술자들에게 분명해질 수 있다. 상이한 도면들에서의 동일한 참조 부호들의 사용은 유사하거나 동일한 항목들을 나타낸다.
도 1은 일부 실시 예에 따라 캐시의 상이한 테스트 영역들에 대한 액세스 메트릭스를 기반으로 캐시의 일부에 에이징 정책을 적용하는 프로세싱 시스템의 블록도이다.
도 2는 일부 실시 예에 따라 캐시의 상이한 테스트 영역들에 상이한 에이징 정책들을 채용하는 도 1의 프로세싱 시스템의 일례이다.
도 3은 일부 실시 예에 따라 캐시의 테스트 영역들에 대한 액세스 메트릭스를 기반으로 캐시의 비 테스트 영역에서 에이징 정책을 변경하는 도 1의 프로세싱 시스템의 일례를 도시하는 도면이다.
도 4는 일부 실시 예에 따라 캐시의 상이한 테스트 영역들에 대한 액세스 메트릭스를 기반으로 캐시의 일부에 에이징 정책을 적용하는 방법의 흐름도이다.
도 1 내지 도 4는 캐시의 상이한 테스트 영역들에 대한 액세스 메트릭스를 기반으로 캐시의 일부에 에이징 정책을 적용하며, 이에 의해 각각의 테스트 영역이 상이한 에이징 정책을 구현하는 기술들을 도시한다. 각 영역에 대한 에이징 정책은 캐시의 각 엔트리에 대한 초기 에이지 값을 설정하고, 특정 에이징 정책은 엔트리가 프로세서 코어로부터의 요구 요청에 대한 응답으로 캐시에 위치하게 되었는지 또는 프리페치 요청에 대한 응답으로 캐시에 위치하게 되었는지를 기반으로 주어진 엔트리의 에이지를 설정할 수 있다. 캐시는 캐시 교체 정책의 기준으로 각 엔트리의 에이지 값을 사용할 수 있다. 상이한 테스트 영역들에 대한 액세스 메트릭스를 기반으로 캐시의 비 테스트 부분에 대한 캐시 에이징 정책을 선택하면, 캐시는 에이징 정책을 프로세서 코어에서 현재 실행중인 명령들에 대해 보다 효율적인 정책으로 동적으로 변경할 수 있다.
예를 통해 설명하기 위해, 캐시에 영역들 모두가 캐시에 의해 채택되어 프로세서 코어로부터의 요구 요청들 및 프리페처로부터의 프리페치 요청들에 대한 응답으로 데이터를 저장하는 두 개의 테스트 영역 및 비 테스트 영역이 있다고 가정하자. 캐시는 상이한 테스트 영역들에 대해 상이한 에이징 정책들을 채택하며, 그에 따라 테스트 영역들 중 하나에서 캐시는 요구 요청들과 관련된 엔트리들에 대한 특정 초기 에이지 및 프리페치 요청들과 관련된 엔트리들에 대한 상이한 특정 초기 에이지를 저장하게 된다. 다른 테스트 영역의 경우, 캐시는 요구 요청들과 관련된 엔트리들에 대해 그리고 프리페치 요청들과 관련된 엔트리들에 대해 동일한 특정 초기 에이지를 저장한다. 두 에이징 정책 모두에서, 캐시는 엔트리가 프로세서 코어에 의해 액세스되는지 여부를 기반으로 각 엔트리의 에이지를 변경한다. 또한, 각 테스트 영역에 대해 캐시는 적어도 부분적으로 각 엔트리의 에이지를 기반으로 엔트리들을 제거한다. 프로세서는 캐시 적중률, 캐시 실패율 또는 이들의 조합과 같은, 각각의 테스트 영역들에 대한 액세스 메트릭스를 모니터링한다. 메트릭스를 기반으로, 프로세서는 테스트 영역들 중 하나에 대한 에이징 정책을 선택하고 이를 캐시의 비 테스트 영역에 적용한다. 예를 들어, 테스트 영역들 중 하나에서 캐시 적중률이 더 높으면, 프로세서는 해당 테스트 영역에 대한 에이징 정책을 캐시의 비 테스트 영역에 적용함으로써, 캐시 전반에 대한 적중률을 향상시킬 수 있다. 또한, 상이한 테스트 영역들의 변화에 대한 상대적인 캐시 적중률들의 변화에 대한 응답으로, 프로세서는 비 테스트 영역에 적용된 에이징 정책을 변경하여 비 테스트 영역에 상이한 에이징 정책들을 적용함으로써, 캐시 전반에 대한 캐시 적중률을 향상시킬 수 있다.
본원에서 사용될 때, 용어 "에이징 정책(aging policy)"은 캐시의 엔트리들에 에이지 값들이 적용되는지, 뿐만 아니라 일단 적용될 때 그러한 에이지 값들이 어떻게 변경될 수 있는지를 나타낸다. 에이징 정책은 엔트리가 캐시에 위치하게 될 때 엔트리에 적용되는 초기 에이지를 통제하며, 에이지의 변경은 엔트리가 액세스되는 것 또는 다른 엔트리들이 액세스되는 것, 또는 이들의 조합에 대한 응답으로 이루어진다. 새로운 데이터가 캐시에 저장될 때 제거할 엔트리들을 선택하기 위한 캐시 교체 정책의 일부로 그것은 에이지 값들을 채택할 수 있다.
도 1은 일부 실시 예에 따라 캐시의 상이한 테스트 영역들에 대한 액세스 메트릭스를 기반으로 캐시의 일부에 캐시 에이징 정책을 적용하는 프로세싱 시스템(100)을 도시한다. 프로세싱 시스템(100)은 일반적으로 전자 장치를 대신하여 작업들을 수행하기 위해 컴퓨터 프로그램들의 형태로 조직화된 명령들의 세트들을 실행하도록 구성된다. 따라서, 프로세싱 시스템(100)은 데스크탑 또는 랩탑 컴퓨터, 서버, 스마트 폰, 태블릿, 게임 콘솔 등과 같은 임의의 다양한 전자 장치에 사용될 수 있다.
명령들의 실행을 용이하게 하기 위해, 프로세싱 시스템(100)은 프로세서 코어(102), 캐시 컨트롤러(105), 캐시(110) 및 메모리(120)를 포함한다. 일부 실시 예에서, 프로세서 코어(102), 캐시 컨트롤러(105) 및 캐시(110)는 동일한 반도체 다이 상에 형성되어 프로세서 코어(102)의 적어도 일부를 형성하고, 메모리(120)는 상이한 반도체 다이 상에 형성되고 하나 이상의 버스 또는 신호 라인을 통해 프로세서(101)에 연결된다. 일부 실시 예에서, 메모리(120)의 적어도 일부는 프로세서(101)의 모듈들과 동일한 반도체 다이 상에 형성된다.
캐시(110) 및 메모리(120)는 일반적으로 데이터를 저장하도록 구성된 각각의 메모리 장치이고, 그에 따라 랜덤 액세스 메모리(RAM) 메모리 모듈들, 비 휘발성 메모리 장치들(예를 들어, 플래시 메모리) 등일 수 있다. 본원에 더 설명될 바와 같이, 캐시(110) 및 메모리(120)는 프로세싱 시스템(100)에 대한 메모리 계층 구조를 형성한다. 또한, 프로세싱 시스템(100)의 메모리 계층은 도 1에 도시되지 않은 추가 캐시들과 같은 다른 메모리 모듈들을 포함할 수도 있다.
프로세서 코어(102)는 예를 들어, 명령들을 페치하는 페치 스테이지, 각 페치된 명령을 하나 이상의 동작으로 디코드하는 디코드 스테이지, 동작들을 실행하는 실행 스테이지들, 및 그 동작들의 실행이 완료된 명령들을 폐기하는 폐기 스테이지를 갖는 명령 파이프라인을 포함한다. 명령을 기반으로 생성된 한 세트의 동작은 본원에서 메모리 액세스 명령들로 지칭되고, 프로세싱 시스템(100)의 메모리 계층 구조로부터 데이터를 로드하기 위한 요청들(로드 동작들) 및 프로세싱 시스템(100)의 메모리 계층 구조에 데이터를 저장하기 위한 요청들이다. 프로세서 코어(102)에 의해 생성된 메모리 액세스 요청들은 사용 중인 또는 실행 프로그램에 의해 필요하다고 알려진 데이터를 로드 또는 저장하기 위한 요청들을 나타내고, 본원에서 요구 요청들(demand requests)로 지칭된다.
캐시 컨트롤러(105)는 일반적으로 캐시(110)와 메모리(120) 사이에서 데이터를 이동시킴으로써 프로세싱 시스템(100)의 메모리 계층 구조를 관리하도록 구성된 모듈이다. 특히, 캐시(110)는 각 엔트리가 메모리(120)의 하나 이상의 어드레스와 연관될 수 있는, 복수의 엔트리를 포함하는 메모리 장치이다. 메모리 액세스 요청에 대한 응답으로, 캐시 컨트롤러(105)는 캐시(110)의 하나 이상의 엔트리에 저장된 데이터를 검토하여 메모리 액세스 요청에 의해 타켓이 된 메모리 어드레스와 관련된 데이터를 저장하는 엔트리들이 있는지를 결정한다. 만약 그렇다면, 캐시 컨트롤러(105)는 식별된 엔트리에 데이터를 저장함으로써(저장 동작의 경우) 또는 식별된 엔트리의 데이터를 프로세서 코어(102)에 제공함으로써(로드 동작의 경우), 캐시 적중을 표시하고 그 엔트리에의 메모리 액세스 요청을 충족시킨다. 메모리 어드레스와 관련된 데이터가 캐시(110)의 엔트리에 저장되지 않았으면, 캐시 컨트롤러(105)는 캐시 실패를 표시하고 메모리 어드레스의 데이터에 대한 요청을 메모리(120)에 보낸다. 캐시 컨트롤러(105)는 캐시(110)의 엔트리에 데이터를 저장하고, 엔트리에의 메모리 액세스 요청을 충족시킨다.
향상된 메모리 액세스 효율을 지원하기 위해, 프로세서(101)는 캐시 컨트롤러(105)에 보내지는 요구 요청들을 모니터링하여 패턴들을 식별하고 식별된 패턴들을 기반으로 프로세서 코어(102)에 의한 요구 요청들의 타겟이 될 메모리 어드레스들을 예측하는 프리페처(106)를 포함한다. 프리페처(106)는 식별된 메모리 어드레스들을 타겟으로 하는, 본원에서 프리페치 요청들로 지칭되는 메모리 액세스 요청들을 캐시 컨트롤러에 보낼 수 있다. 캐시 컨트롤러(105)는 먼저 프리페치 요청에 의해 타켓이 된 메모리 어드레스와 관련된 데이터가 캐시(110)의 엔트리에 이미 저장되어 있는지를 식별하고, 아직 저장되어 있지 않다면, 메모리(120)로부터 데이터를 요청하고 데이터를 캐시(110)의 엔트리에 저장함으로써 요구 요청과 유사하게 프리페치 요청을 처리한다.
일부 실시 예에서, 캐시(110)의 각 엔트리는 메모리 어드레스의 서브 세트와 관련되고 해당 서브 세트와 관련된 데이터만이 엔트리에 저장될 수 있다. 예를 들어, 일부 실시 예에서 캐시는 M개의 세트를 갖고 각각의 M개의 세트들이 N개의 엔트리를 포함하는 N-구역 세트 연관 캐시(N-way set associative cache)이다. 각각의 M개의 세트들에는 메모리 어드레스들의 상이한 서브 세트가 할당되며, 그에 따라 데이터가 엔트리의 할당된 서브 세트에서의 메모리 어드레스와 관련되는 경우 캐시 컨트롤러(105)는 그 엔트리에만 데이터를 저장하게 된다. 세트의 모든 엔트리가 메모리 액세스의 타겟이 될 수 있는 데이터(본원에서 "유효 데이터(valid data)"로 지칭)를 저장할 때, 그 세트는 본원에서 완전(full)으로 지칭된다. 또한, 캐시 컨트롤러(105)가 완전 세트로 저장될 데이터를 수신할 때, 그것은 제거할(즉, 세트에서 제거할) 세트의 엔트리들 중 하나를 선택하고 수신된 데이터로 교체한다. 캐시 컨트롤러(105)가 제거할 엔트리를 선택하기 위해 사용하는 기법은 캐시(110)에 대한 교체 정책으로 지칭된다.
캐시(110)에 대한 교체 정책은 적어도 부분적으로 세트에서의 각 엔트리와 연관된 에이지 값들을 기반으로 할 수 있다. 예시를 위해, 캐시(110)의 엔트리에 데이터를 저장하는 것에 대한 응답으로, 캐시 컨트롤러(105)는 엔트리에 대한 초기 에이지 값을 저장한다. 특정 기준에 대한 응답으로 캐시 컨트롤러(105)는 엔트리에 대한 에이지 값을 조정할 수 있다. 예를 들어, 캐시 컨트롤러(105)는 엔트리가 프로세서 코어(102)로부터의 요구 요청의 타겟이되는 것에 대한 응답으로 엔트리에 대한 에이지 값을 감소시킬 수 있고, 그 세트에서의 또는 다른 세트에서의 다른 엔트리가 요구 요청의 타겟이 되는 것에 대한 응답으로 엔트리에 대한 에이지 값을 증가시킬 수 있다. 그에 따라 에이지 값은 엔트리가 세트의 또는 캐시(110)의 다른 엔트리들에 비해 얼마나 최근에 액세스되었는지에 대한 표시를 반영한다. 제거할 완전 세트의 엔트리를 선택할 때, 캐시 컨트롤러(105)는 적어도 부분적으로 세트에서의 각 엔트리의 에이지 값을 기반으로 결정을 내릴 수 있다. 예를 들어, 캐시 컨트롤러(105)는 제거할 가장 높은 에이지 값을 갖는 엔트리를 선택할 수 있다. 일부 실시 예에서, 캐시 컨트롤러(105)는 데이터 우선 순위 정보, 데이터 타입 정보(예를 들어, 엔트리가 명령 데이터를 저장하는지 또는 연산수 데이터를 저장하는지), 또는 제거할 엔트리를 선택하기 위한 다른 정보와 같은, 다른 기준과의 가중 합의 일부로서 에이지 값을 사용할 수 있다.
상술한 바와 같이, 캐시 컨트롤러(105)에 의해 엔트리에 할당된 초기 에이지 값, 에이지 값을 조정하기 위한 기준, 및 캐시 컨트롤러(105)가 각각의 기준에 대한 응답으로 에이지 값을 조정하는 양이 엔트리에 대한 에이징 정책으로 지칭된다. 일부 실시 예에서, 캐시 컨트롤러(105)는 각 영역이 복수의 엔트리를 포함하는 캐시(110)의 상이한 영역들에 상이한 에이징 정책들을 적용할 수 있다. 적어도 일 실시 예에서, 각각의 영역은 단지 그것의 에이징 정책에 따라 변한다. 그에 따라, 영역의 엔트리들은 임의의 세트에 대해 사용될 수 있고, 상이한 영역들은 동일한 세트의 상이한 엔트리들을 포함할 수 있다.
도 1의 도시된 예에서, 캐시(110)는 3개의 영역: 즉 테스트 영역들(115 및 116) 및 비 테스트 영역(118)을 포함한다. 또한, 캐시 컨트롤러(105)는 엔트리에 할당된 초기 에이지 값, 특정 기준에 대한 응답으로 에이지 값이 조정되는 양 등과 같은, 적어도 하나의 양태에서 상이한 에이징 정책들(111 및 112)을 저장한다. 일부 실시 예에서, 에이징 정책(111)은 프리페치 요청에 응답하여 데이터를 저장하는 엔트리들에 대한 특정 초기 에이지 및 비 프리 패치 요청들에 응답하여 데이터를 저장하는 엔트리에 대해 상이한 특정 초기 에이지를 요구한다. 본원에서 사용될 때, 비 프리페치 요청(non-prefetch request)은 에이징 정책이 적용되는 캐시 레벨을 타겟으로 하는 프리페치 요청이 아닌 메모리 액세스를 지칭한다. 비 프리페치 요청들의 예들은 요구 요청들, 명령 캐시 실패에 대한 응답으로 생성되는 메모리 액세스 요청들, 하드웨어 페이지 테이블 워크 요청들(hardware page table walk requests), 프로세서 코어(102)에 의해 생성된 추측 메모리 액세스 요청들(예를 들어, 분기 명령 이후 명령들의 추측 실행 중에 생성된 메모리 액세스 요청들), 및 다른 캐시 레벨들에서 생성된 프리페치 요청들을 포함한다.
그에 반해, 에이징 정책(112)은 프리페치 요청에 응답하여 데이터를 저장하는 엔트리들 및 비 프리 패치 요청에 응답하여 데이터를 저장하는 엔트리들에 대해 동일한 초기 에이지를 요구한다. 그에 따라 에이징 정책(111)은 프리페치된 데이터에 더 자주 액세스하는 메모리 액세스 패턴들에 대해 더 효율적일 수 있고, 에이징 정책(112)은 프리페치된 데이터 및 비 프리페치된 데이터를 거의 동일한 빈도로 액세스하는 메모리 액세스 패턴들에 대해 더 효율적일 수 있다. 그러나, 프로세서 코어(102)에 대한 메모리 액세스 패턴은 캐시(110)가 상이한 시간들에 상이한 에이징 정책들에 따라 더 효율적으로 동작할 수 있도록 시간에 따라 변할 수 있다. 따라서, 비 테스트 영역(118)에 대해, 캐시 컨트롤러(105)는 테스트 영역들(115 및 116)의 성능 특성들에 따라 에이징 정책들(111 및 112) 간에 선택할 수 있다.
예시를 위해, 프로세서(101)는 테스트 영역들(115 및 116)의 각각에 대한, 캐시 적중률, 캐시 실패율 등과 같은 성능 특성들을 모니터링하고 기록할 수 있는 성능 모니터(104)를 포함한다. 테스트 영역들(115 및 116)의 하나 이상의 성능 특성들 또는 이들의 조합에 기초하여, 캐시 컨트롤러는 에이징 정책들(111 및 112) 중 하나를 선택하고 그것을 비 테스트 영역(118)에 적용한다. 예를 들어, 테스트 영역(115)에 대한 캐시 적중률이 테스트 영역(116)에 대한 캐시 적중률보다 더 높으면, 캐시 컨트롤러(105)는 테스트 영역(115)에 대한 에이징 정책(예를 들어, 에이징 정책(111))을 선택하고 그것을 비 테스트 영역(118)에 적용할 수 있다. 일부 실시 예에서, 비 테스트 영역(118)은 캐시(110)의 엔트리들의 대부분을 포함한다. 그에 따라, 캐시 컨트롤러(105)는 테스트 영역들(115 및 116)의 성능에 의해 표시되는 바에 따라, 더 효율적인 에이징 정책으로 비 테스트 영역(118)에 대한 에이징 정책을 선택함으로써, 캐시(110)의 전반적인 효율을 향상시킨다. 또한, 테스트 영역들(115 및 116)의 성능 특성들이 시간에 따라 변함에 따라, 캐시 컨트롤러는 에이징 정책을 주어진 성능 특성들의 세트에 대해 더 효율적인 정책으로 변경할 수 있다.
도 2는 일부 실시 예에 따라 도 1의 테스트 영역들(115 및 116)에 상이한 에이징 정책들을 적용하는 캐시 컨트롤러(105)의 일례를 도시한다. 도시된 예에서, 각각의 테스트 영역들(115 및 116)은 테스트 영역(115)의 엔트리들(240 및 241) 및 테스트 영역(116)의 엔트리들(242 및 243)과 같은 복수의 엔트리를 포함한다. 각각의 엔트리들은 메모리(120)로부터 검색된 데이터―즉 엔트리에의 메모리 액세스 요청들을 충족시키는데 사용되는 데이터를 저장하기 위한 데이터 부분(예를 들어, 엔트리(240)의 데이터 부분(245))을 포함한다. 각 엔트리는 또한 엔트리에 대한 에이지 값을 저장하기위한 에이지 필드(예를 들어, 엔트리(240)의 에이지 필드(246))를 포함한다.
도 2에 도시된 바와 같이, 캐시 컨트롤러(105)는 엔트리에 대한 에이지 필드에 저장된 초기 에이지 값이 엔트리에 대한 데이터가 요구 요청에 대한 응답으로 메모리(120)로부터 검색되었는지 또는 프리페치 요청에 대한 응답으로 메모리(120)로부터 검색되었는지에 따르는 에이징 정책을 테스트 영역(115)에 적용한다고 가정된다. 특히, 데이터를 프리페치 요청(예를 들어, 프리페치 요청(231))에 대한 응답으로 메모리(120)로부터 검색하는 것에 응답하여, 캐시 컨트롤러(105)는 그 데이터를 저장하는 엔트리의 에이지 필드에 초기 에이지 값 "00"을 저장한다. 그에 반해, 데이터를 요구 요청(예를 들어, 요구 요청(230))에 대한 응답으로 메모리(120)로부터 검색하는 것에 응답하여, 캐시 컨트롤러(105)는 그 엔트리의 에이지 필드에 초기 에이지 값 "01"을 저장한다. 그에 따라, 테스트 영역(115)에 적용되는 에이징 정책에 대해, 캐시 컨트롤러는 프리페치된 데이터를 저장하는 엔드리들에 "더 적은" 초기 에이지를 적용하고 요구 데이터를 저장하는 엔트리에 "더 많은" 초기 에이지를 적용한다. 이러한 에이징 정책은 프로세서 코어(102)가 프리페치된 데이터에 대한 요구 요청들을 보내지 않는 메모리 액세스 패턴들에 대해 효율적일 수 있다.
테스트 영역(116)에 대해, 캐시 컨트롤러(105)는 엔트리가 프리페치 요청과 관련되는지 또는 요구 요청과 관련되는지에 상관없이, 각 엔트리의 에이지 필드에 동일한 초기 에이지를 저장하는 에이징 정책을 적용한다. 그에 따라, 데이터를 프리페치 요청(예를 들어, 프리페치 요청(233))에 대한 응답으로 메모리(120)로부터 검색하는 것에 응답하여, 캐시 컨트롤러(105)는 그 데이터를 저장하는 엔트리의 에이지 필드에 초기 에이지 값 "01"을 저장한다. 유사하게, 데이터를 요구 요청(예를 들어, 요구 요청(232))에 대한 응답으로 메모리(120)로부터 검색하는 것에 응답하여, 캐시 컨트롤러(105)는 그 엔트리의 에이지 필드에 초기 에이지 값 "01"을 저장한다. 그에 따라, 테스트 영역(116)에 적용되는 에이징 정책에 대해, 캐시 컨트롤러는 모든 엔트리에 동일한 초기 에이지를 적용한다. 이러한 에이징 정책은 프로세서 코어(102)가 실질적으로 동일한 빈도로 프리페치된 데이터 및 요구 데이터에 액세스하는 메모리 액세스 패턴들에 대해 효율적일 수 있다. 다른 실시 예들에서, 캐시 컨트롤러(105)는 요구 요청들에 대해 더 낮은 초기 에이지를 그리고 프리페치 요청에 대해 더 높은 초기 에이지를 저장하는 에이징 정책을 적용할 수 있다.
상술한 바와 같이, 캐시 컨트롤러(105)는 상이한 테스트 영역들(115 및 116)에 상이한 에이징 정책들을 적용한다. 캐시 컨트롤러(105)는 각 테스트 영역에 대한 성능 특성들을 측정함으로써, 프로세서 코어(102)의 최근 메모리 액세스 패턴에 대해 더 효율적인 에이징 정책을 식별할 수 있고, 비 테스트 영역(118)에 더 효율적인 에이징 정책을 적용할 수 있으며, 그렇게 함으로써 전반적인 캐시 효율을 향상시킨다.
일부 실시 예에서, 상이한 에이징 정책들은 상술한 바와 같이 상이한 초기 에이지 값들을 적용하는 것에 더하여 또는 그 대신에, 에이지 값들에 대한 상이한 조정을 요구할 수 있다. 예를 들어, 테스트 영역(115)에 대해, 캐시 컨트롤러(105)는 요구 요청과 관련된 엔트리에 대한 메모리 액세스에 응답하여, 프리페치 데이터를 저장하는 모든 엔트리에 대한 에이지 값을 최대 에이지 값 "11"로 조정하도록 에이징 정책을 적용할 수 있다. 그에 따라, 캐시 컨트롤러(105)는 엔트리(240)에 대한 메모리 액세스에 응답하여, 엔트리(240)에 대한 에이지 값을 "00"으로 그리고 엔트리(241)(프리페치 요청(231)과 관련된)에 대한 에이지 값을 "11"로 조정할 수 있다. 그에 반해, 메모리 액세스에 응답하여 캐시 컨트롤러(105)는 에이지 값을 1씩 증가시킴으로써 요구 데이터와 관련된 엔트리들에 대한 에이지 값들을 조정한다. 그에 따라, 캐시 컨트롤러(105)는 엔트리(241)에 대한 메모리 액세스에 응답하여, 엔트리(240)(요구 요청(230)과 관련된)에 대한 에이지 값을 1씩, 값 "10"으로 증가시킨다. 테스트 영역(115)에 적용된 에이징 정책은 프리페치 데이터가 프리페치 후에 비교적 빠르게 액세스되거나 전혀 액세스되지 않는 메모리 액세스 패턴들에 대해 더 효율적일 수 있다.
테스트 영역(115)에 적용된 에이징 정책과 대조적으로, 테스트 영역(116)에 적용되는 에이징 정책은 엔트리가 요구 요청과 관련되는지 또는 프리페치 요청과 관련되는지에 상관없이, 각 엔트리에 대한 에이지 값들의 동일한 조정을 요구할 수 있다. 예를 들어, 캐시 컨트롤러(105)는 테스트 영역(116)의 엔트리에 대한 메모리 액세스에 응답하여, 테스트 영역(116)에서의 모든 다른 엔트리에 대한 에이지 값들을 최대값까지, 1씩 증가시킬 수 있다. 그에 따라, 상이한 테스트 영역들(115 및 116)에 적용되는 상이한 에이징 정책들은 엔트리에 적용되는 초기 에이지 값, 엔트리의 에이지 값을 조정하기 위한 기준, 에이지 값이 각 기준에 대한 응답으로 조정되는 양 등을 포함하여, 몇몇 양상 중 하나 이상의 양상에서 달라질 수 있다. 또한, 일부 실시 예에서 캐시(110)는 각각의 테스트 영역에 상이한 에이징 정책들이 적용되는 두 개보다 많은 테스트 영역을 포함할 수 있으며, 그에 의해 캐시 컨트롤러에 비 테스트 영역(118)에 적용할 수 있는 다양한 에이징 정책을 제공한다.
도 3은 일부 실시 예에 따라 시간에 따라 변화하는 상이한 테스트 영역들(115 및 116)의 상대적인 성능의 일례를 도시하는 도해(300)를 도시한다. 도해(300)는 시간을 나타내는 X 축(350) 및 캐시 적중률을 나타내는 Y 축(351)을 포함한다. 도해(300)는 시간에 따른 테스트 영역(116)에 대한 캐시 적중률을 나타내는 곡선(352) 및 테스트 영역(115)에 대한 캐시 적중률을 나타내는 곡선(353)을 도시한다.
도해(300)에 의해 예시된 예에서, 시간(355) 이전에 테스트 영역(115)에 대한 캐시 적중률이 테스트 영역(116)에 대한 캐시 적중률보다 더 크다. 따라서, 시간(355) 이전에 캐시 컨트롤러(105)는 테스트 영역(115)에 대한 에이징 정책을 비 테스트 영역(118)에 적용한다. 시간(355)에서, 테스트 영역들(115 및 116)에 대한 캐시 적중률들 간 관계는 테스트 영역(116)에 대한 캐시 적중률이 테스트 영역(115)에 대한 캐시 적중률보다 더 크도록 변한다. 이에 응답하여, 캐시 컨트롤러(105)는 비 테스트 영역(118)에 대한 에이징 정책을 테스트 영역(116)에 대한 에이징 정책과 매치하도록 변경한다. 이후 시간(356)에서, 테스트 영역들(115 및 116)에 대한 캐시 적중률들 간 관계는 테스트 영역(115)에 대한 캐시 적중률이 다시 테스트 영역(116)에 대한 캐시 적중률보다 더 크도록 변한다. 이에 응답하여, 캐시 컨트롤러(105)는 비 테스트 영역(118)에 대한 에이징 정책을 테스트 영역(115)에 대한 에이징 정책과 매치하도록 변경한다. 그에 따라, 캐시 컨트롤러(105)는 비 테스트 영역(118)에 적용되는 에이징 정책을 테스트 영역들(115 및 116)의 상대 성능의 변화를 기반으로 변경한다.
도 4는 일부 실시 예에 따라 캐시의 상이한 테스트 영역들의 성능 특성들을 기반으로 캐시의 비 테스트 영역에 대한 에이징 정책을 선택하는 방법(400)의 흐름도이다. 설명의 목적으로, 방법(400)은 도 1의 프로세싱 시스템(100)에서의 예시적인 구현 예에 대하여 설명된다. 블록(402)에서, 캐시 컨트롤러(105)는 캐시(110)의 상이한 테스트 영역들(115 및 116)에 상이한 에이징 정책들(111 및 112)을 적용한다. 그에 따라, 예를 들어, 캐시 컨트롤러(105)는 테스트 영역(115)에 에이징 정책(111)을 그리고 테스트 영역(116)에 에이징 정책(112)을 적용할 수 있다. 블록(404)에서, 성능 모니터(104)는 캐시 적중률, 캐시 실패율, 캐시 적중률 및 캐시 실패율의 가중 합 등과 같은, 상이한 테스트 영역들(115 및 116)에 대한 성능 특성들을 모니터링하고 기록한다.
블록(406)에서, 캐시 컨트롤러(105)는 각각의 테스트 영역들(115 및 116)에 대한 성능 특성들을 비교하고 그 비교를 기반으로 에이징 정책들(111 및 112) 중 하나를 선택한다. 예를 들어, 캐시 컨트롤러(105)는 성능 특성들에 의해 표시된 바에 따라 더 높은 성능을 갖는 테스트 영역에 적용되는 에이징 정책을 선택한다. 블록(408)에서, 캐시 컨트롤러(105)는 선택된 에이징 정책을 캐시(110)의 비 테스트 영역(118)에 적용한다. 즉, 캐시 컨트롤러는 초기 에이지 값을 저장하고 선택된 에이징 정책의 요건에 맞춰 비 테스트 영역(118)에 저장된 에이지 값들을 조정한다. 블록(410)에서, 캐시 컨트롤러(105)는 비 테스트 영역(118)에 저장된 에이지 값들을 사용하여 캐시(110)에 대한 교체 정책에 따라 제거할 캐시 라인들을 식별한다. 방법 흐름은 캐시 컨트롤러(105)가 테스트 영역들(115 및 116)의 성능을 계속 모니터링하고 성능을 기반으로 비 테스트 영역(118)에 적용되는 에이징 정책을 조정하는 것을 반영하여, 블록(404)으로 되돌아간다.
일부 실시 예에서, 상술한 기술들의 특정 측면들은 소프트웨어를 실행하는 프로세싱 시스템의 하나 이상의 프로세서에 의해 구현될 수 있다. 소프트웨어는 비 일시적 컴퓨터 판독 가능한 저장 매체 상에 저장된 또는 그 외 다르게 유형으로 구현된 실행가능한 명령들의 하나 이상의 세트를 포함한다.  소프트웨어는 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서를 상술한 기술들의 하나 이상의 측면을 수행하도록 조종하는 명령들 및 특정 데이터를 포함할 수 있다. 비 일시적 컴퓨터 판독 가능한 저장 매체는 예를 들어, 자기 또는 광 디스크 저장 장치, 플래시 메모리와 같은 고체 상태 저장 장치들, 캐시, 랜덤 액세스 메모리(RAM) 또는 다른 비 휘발성 메모리 장치 또는 장치들 등을 포함할 수 있다. 비 일시적 컴퓨터 판독 가능한 저장 매체 상에 저장되 실행 가능한 명령들은 소스 코드, 어셈블리 언어 코드, 객체 코드 또는 하나 이상의 프로세서에 의해 해석되는 또는 그 외 실행 가능한 다른 명령 포맷일 수 있다.
일반적인 설명으로 상술된 모든 활동 또는 요소가 필수적인 것은 아니라는 것, 특정 활동 또는 장치의 일부가 요구되지 않을 수 있다는 것, 그리고 설명된 것들에 더하여, 하나 이상의 추가 활동이 수행되거나 요소들이 포함될 수 있다는 것에 주의하자. 더 나아가, 활동들이 나열된 순서는 반드시 그것들이 수행되는 순서는 아니다. 또한, 개념들은 특정 실시 예들을 참조하여 설명되었다. 그러나, 해당 기술분야에서의 통상의 기술자는 아래 청구범위에 제시된 바에 따라 본 발명의 범위에서 벗어나지 않고 다양한 변형 및 변경이 가해질 수 있다는 것을 이해한다. 따라서, 명세서 및 도면들은 제한적인 의미가 아니라 예시적인 의미로 해석되어야 하고, 모든 그러한 변형이 본 발명의 범위 내에 포함되는 것으로 의도된다.
혜택들, 다른 이점들, 및 문제들에 대한 솔루션들이 특정 실시 예들에 대하여 상술되었다. 그러나, 혜택들, 이점들, 문제들에 대한 솔루션들, 및 임의의 혜택, 이점, 또는 솔루션이 발생하거나 보다 현저해지게 할 수 있는 임의의 특징(들)이 임의의 또는 모든 청구항의 임계적, 필수적 또는 본질적 특징인 것으로 간주되지 않아야 한다. 또한, 위에서 개시된 특정 실시 예들은 개시된 주제가 본원에서의 교시 내용의 혜택을 받는 해당 기술분야에서의 통상의 기술자들에게 분명한 상이하나 균등한 방식들로 변형 및 실시될 수 있음에 따라 단지 예시적인 것이다. 아래 청구범위에서 설명되는 것 이외에, 제시된 본원에서의 구성 또는 설계의 세부 사항에 어떠한 제한도 의도되지 않는다. 따라서 위에서 개시된 특정 실시 예들이 대체 또는 변형될 수 있고 모든 그러한 변형예가 개시된 주제의 범위 내로 고려된다는 것이 명백하다. 따라서, 본원에서 추구되는 보호는 아래 청구범위에 제시된 바에 따른다.

Claims (22)

  1. 방법으로서,
    캐시[110]의 제1 영역[115]에서, 데이터[245]가 제1 캐시 엔트리[240]에 프리페치 요청[231]에 대한 응답으로 저장되었는지 또는 요구 요청[230]에 대한 응답으로 저장되었는지를 기반으로 상기 제1 캐시 엔트리에 대한 에이지[246]를 선택하는 단계;
    상기 캐시의 제2 영역[116]에서, 데이터가 상기 제2 영역의 캐시 엔트리들[242, 243]에 프리페치 요청에 대한 응답으로 저장되었는지 또는 요구 요청에 대한 응답으로 저장되었는지와 무관하게 상기 캐시 엔트리들에 대해 동일한 에이지를 저장하는 단계; 및
    상기 제1 영역 및 상기 제2 영역의 캐시 엔트리들의 에이지들을 기반으로 상기 캐시의 상기 제1 영역 및 상기 캐시의 상기 제2 영역의 데이터를 교체하는 단계를 포함하는, 방법.
  2. 청구항 1에 있어서,
    상기 캐시의 상기 제1 영역에 대한 제1 성능 특성 및 상기 캐시의 상기 제2 영역에 대한 제2 성능 특성을 측정하는 단계[404];
    상기 제1 성능 특성 및 상기 제2 성능 특성을 기반으로 상기 캐시의 제3 영역[118]에 대해 제1 에이징 정책[111]을 선택하는 단계; 및
    상기 제3 영역의 상기 캐시 엔트리들과 관련된 에이지들을 기반으로 상기 캐시의 상기 제3 영역의 캐시 엔트리들의 데이터를 교체하는 단계를 더 포함하는, 방법.
  3. 청구항 2에 있어서, 상기 제1 에이징 정책을 선택하는 단계는:
    데이터가 상기 제1 캐시 엔트리에 프리페치 요청에 대한 응답으로 저장되었는지 또는 요구 요청에 대한 응답으로 저장되었는지를 기반으로 상기 제3 영역의 제2 캐시 엔트리에 대한 에이지를 선택하는 단계를 포함하는, 방법.
  4. 청구항 2에 있어서, 상기 제1 에이징 정책을 선택하는 단계는:
    상기 요구 요청들과 관련된 상기 제3 영역의 캐시 엔트리들 및 상기 프리페치 요청들과 관련된 상기 제3 영역의 캐시 엔트리들에 대해 동일한 에이지를 저장하는 단계를 포함하는, 방법.
  5. 청구항 2에 있어서, 상기 제1 에이징 정책을 선택하는 단계는 제1 시간에 상기 제1 에이징 정책을 선택하는 단계를 포함하고, 상기 방법은:
    제2 시간에 상기 제1 성능 특성과 상기 제2 성능 특성 간 관계의 변화에 대한 응답으로 상기 캐시의 상기 제3 영역에 대해 제2 에이징 정책[112]을 선택하는 단계를 더 포함하며, 상기 제2 에이징 정책은 상기 제1 에이징 정책과 상이한 것인, 방법.
  6. 청구항 2에 있어서,
    상기 제1 성능 특성은 상기 캐시의 상기 제1 영역에서의 캐시 적중률[353]을 포함하며; 그리고
    상기 제2 성능 특성은 상기 캐시의 제2 영역에서의 캐시 적중률[352]을 포함하는, 방법.
  7. 청구항 2에 있어서,
    상기 제1 성능 특성은 상기 캐시의 상기 제1 영역에서의 캐시 실패율을 포함하며; 그리고
    상기 제2 성능 특성은 상기 캐시의 제2 영역에서의 캐시 실패율을 포함하는, 방법.
  8. 청구항 2에 있어서,
    상기 제1 성능 특성은 상기 캐시의 상기 제1 영역에서의 캐시 적중률 및 상기 캐시의 상기 제1 영역에서의 캐시 실패율의 제1 가중 합을 포함하며; 그리고
    상기 제2 성능 특성은 상기 캐시의 제2 영역에서의 캐시 적중률 및 상기 캐시의 상기 제2 영역에서의 캐시 실패율의 제2 가중 합을 포함하는, 방법.
  9. 청구항 1에 있어서, 상기 제1 캐시 엔트리에 대한 에이지를 선택하는 단계는:
    상기 데이터가 상기 제1 캐시 엔트리에 프리페치 요청에 대한 응답으로 저장되었음을 확인하는 것에 응답하여 상기 제1 캐시 엔트리에 대해 더 적은 에이지를 선택하는 단계; 및
    상기 데이터가 상기 제1 캐시 엔트리에 요구 요청에 대한 응답으로 저장되었음을 확인하는 것에 응답하여 상기 제1 캐시 엔트리에 대해 더 많은 에이지를 선택하는 단계를 포함하는, 방법.
  10. 방법으로서,
    캐시[110]의 제1 영역[115]에, 제1 에이징 정책[111]을 적용하여 캐시 엔트리가 요구 요청에 대한 응답으로 저장되었는지 또는 프리페치 요청에 대한 응답으로 저장되었는지를 기반으로 한 에이지들로 상기 제1 영역의 상기 캐시 엔트리를 저장하는 단계;
    상기 캐시의 제2 영역[116]에, 제2 에이징 정책[112]을 적용하여 캐시 엔트리가 요구 요청에 대한 응답으로 저장되었는지 또는 프리페치 요청에 대한 응답으로 저장되었는지와 무관하게, 동일한 에이지로 상기 캐시 엔트리를 저장하는 단계;
    상기 제1 영역 및 상기 제2 영역에 대한 성능 특성들을 기반으로 상기 제1 에이징 정책과 상기 제2 에이징 정책 간에 선택하여 제3 에이징 정책을 결정하는 단계; 및
    선택된 상기 에이징 정책을 기반으로 상기 캐시의 제3 영역[118]의 데이터를 교체하는 단계를 포함하는, 방법.
  11. 청구항 10에 있어서, 상기 제1 에이징 정책 및 상기 제2 에이징 정책 간에 선택하는 단계는:
    제1 시간[355]에 상기 제3 영역에 대해 상기 제1 에이징 정책을 선택하는 단계; 및
    제2 시간[356]에 상기 제3 영역에 대해 상기 제2 에이징 정책을 선택하는 단계를 포함하는, 방법.
  12. 청구항 11에 있어서, 상기 제2 시간은 상기 제1 시간 이후인, 방법.
  13. 청구항 11에 있어서, 상기 제3 영역에 대해 상기 제2 에이징 정책은 상기 제1 영역 및 상기 제2 영역에 대한 상기 성능 특성들 간 관계의 변화에 대한 응답으로 상기 제2 시간에 선택되는, 방법.
  14. 프로세서[100]로서,
    제1 영역[115] 및 제2 영역[116]을 포함하는 캐시[110]; 및
    캐시 컨트롤러[105]를 포함하며, 상기 캐시 컨트롤러는:
    상기 제1 영역에서, 데이터가 제1 캐시 엔트리[240]에 프리페치 요청[231]에 대한 응답으로 저장되었는지 또는 요구 요청[230]에 대한 응답으로 저장되었는지를 기반으로 상기 제1 캐시 엔트리에 대한 에이지[246]를 선택하도록;
    상기 제2 영역에서, 데이터가 상기 제2 영역의 캐시 엔트리들에 프리페치 요청에 대한 응답으로 저장되었는지 또는 요구 요청에 대한 응답으로 저장되었는지와 무관하게 상기 캐시 엔트리들에 대해 동일한 에이지를 저장하도록; 그리고
    상기 제1 영역 및 상기 제2 영역에서 캐시 엔트리들의 에이지들을 기반으로 상기 캐시의 상기 제1 영역 및 상기 캐시의 상기 제2 영역의 데이터를 교체하도록 구성되는, 프로세서.
  15. 청구항 14에 있어서,
    상기 캐시의 상기 제1 영역에 대한 제1 성능 특성 및 상기 캐시의 상기 제2 영역에 대한 제2 성능 특성을 측정하는 성능 모니터[104]를 더 포함하되;
    상기 캐시 컨트롤러는:
    상기 제1 성능 특성 및 상기 제2 성능 특성을 기반으로 상기 캐시의 제3 영역[118]에 대해 제1 에이징 정책을 선택하며; 그리고
    선택된 상기 제1 에이징 정책을 기반으로 상기 캐시의 상기 제3 영역의 캐시 라인들의 데이터를 교체하는, 프로세서.
  16. 청구항 15에 있어서, 상기 캐시 컨트롤러는:
    데이터가 상기 제1 캐시 엔트리에 프리페치 요청에 대한 응답으로 저장되었는지 또는 요구 요청에 대한 응답으로 저장되었는지를 기반으로 상기 제3 영역의 제2 캐시 엔트리에 대한 에이지를 선택하는, 프로세서.
  17. 청구항 15에 있어서, 상기 캐시 컨트롤러는:
    요구 요청들과 관련된 상기 제3 영역의 캐시 라인들 및 프리페치 요청들과 관련된 상기 제3 영역의 캐시 라인들에 대해 동일한 에이지를 저장하는 것에 의해 상기 제1 에이징 정책을 선택하는, 프로세서.
  18. 청구항 15에 있어서, 상기 캐시 컨트롤러는:
    제1 시간[355]에 상기 제1 에이징 정책을 선택하며; 그리고
    제2 시간[356]에 상기 제1 성능 특성과 상기 제2 성능 특성 간 관계의 변화에 대한 응답으로 상기 캐시의 상기 제3 영역에 대해 제2 에이징 정책을 선택하며, 상기 제2 에이징 정책은 상기 제1 에이징 정책과 상이한 것인, 프로세서.
  19. 청구항 15에 있어서,
    상기 제1 성능 특성은 상기 캐시의 상기 제1 영역에서의 캐시 적중률[352]을 포함하며; 그리고
    상기 제2 성능 특성은 상기 캐시의 제2 영역에서의 캐시 적중률[353]을 포함하는, 프로세서.
  20. 청구항 15에 있어서,
    상기 제1 성능 특성은 상기 캐시의 상기 제1 영역에서의 캐시 실패율을 포함하며; 그리고
    상기 제2 성능 특성은 상기 캐시의 제2 영역에서의 캐시 실패율을 포함하는, 방법.
  21. 청구항 15에 있어서,
    상기 제1 성능 특성은 상기 캐시의 상기 제1 영역에서의 캐시 적중수 및 상기 캐시의 상기 제1 영역에서의 캐시 실패수의 제1 가중 합을 포함하며; 그리고
    상기 제2 성능 특성은 상기 캐시의 제2 영역에서의 캐시 적중수 및 상기 캐시의 상기 제2 영역에서의 캐시 실패수의 제2 가중 합을 포함하는, 프로세서.
  22. 청구항 14에 있어서, 상기 캐시 컨트롤러는:
    상기 데이터가 상기 제1 캐시 엔트리에 프리페치 요청에 대한 응답으로 저장되었음을 확인하는 것에 대한 응답으로 상기 제1 캐시 엔트리에 대해 더 적은 에이지를 선택하며; 그리고
    상기 데이터가 상기 제1 캐시 엔트리에 요구 요청에 대한 응답으로 저장되었음을 확인하는 것에 대한 응답으로 상기 제1 캐시 엔트리에 대해 더 많은 에이지를 선택하는 것에 의해 상기 제1 캐시 엔트리에 대한 에이지를 선택하는, 프로세서.
KR1020187030919A 2016-04-27 2016-09-15 캐시 테스트 영역을 기반으로 하는 프리페치를 위한 캐시 에이징 정책 선택 KR102470184B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/139,923 US10509732B2 (en) 2016-04-27 2016-04-27 Selecting cache aging policy for prefetches based on cache test regions
US15/139,923 2016-04-27
PCT/US2016/051811 WO2017189033A1 (en) 2016-04-27 2016-09-15 Selecting cache aging policy for prefetches based on cache test regions

Publications (2)

Publication Number Publication Date
KR20180130536A true KR20180130536A (ko) 2018-12-07
KR102470184B1 KR102470184B1 (ko) 2022-11-23

Family

ID=60158351

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187030919A KR102470184B1 (ko) 2016-04-27 2016-09-15 캐시 테스트 영역을 기반으로 하는 프리페치를 위한 캐시 에이징 정책 선택

Country Status (5)

Country Link
US (2) US10509732B2 (ko)
JP (1) JP6840169B2 (ko)
KR (1) KR102470184B1 (ko)
CN (1) CN109074312B (ko)
WO (1) WO2017189033A1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10509732B2 (en) * 2016-04-27 2019-12-17 Advanced Micro Devices, Inc. Selecting cache aging policy for prefetches based on cache test regions
US10078514B2 (en) * 2016-05-11 2018-09-18 International Business Machines Corporation Techniques for dynamic sequential instruction prefetching
US10474458B2 (en) 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
US11281587B2 (en) * 2018-01-02 2022-03-22 Infinidat Ltd. Self-tuning cache
US10545874B2 (en) * 2018-02-20 2020-01-28 Sap Se Reclamation of cache resources
WO2020190796A1 (en) * 2019-03-15 2020-09-24 Intel Corporation Systems and methods for cache optimization
US20220121421A1 (en) 2019-03-15 2022-04-21 Intel Corporation Multi-tile memory management
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
DE112020001249T5 (de) 2019-03-15 2021-12-23 Intel Corporation Dünnbesetzt-Optimierungen für eine Matrixbeschleunigerarchitektur
CN110399316B (zh) * 2019-06-28 2021-10-01 苏州浪潮智能科技有限公司 一种用于业务系统性能优化的方法和装置
US11561895B2 (en) * 2019-09-05 2023-01-24 Advanced Micro Devices, Inc. Oldest operation wait time indication input into set-dueling
US11210234B2 (en) 2019-10-31 2021-12-28 Advanced Micro Devices, Inc. Cache access measurement deskew
US11861761B2 (en) 2019-11-15 2024-01-02 Intel Corporation Graphics processing unit processing and caching improvements
US11868221B2 (en) * 2021-09-30 2024-01-09 Advanced Micro Devices, Inc. Multi-adaptive cache replacement policy

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120254550A1 (en) * 2011-04-01 2012-10-04 Jayesh Gaur Bypass and insertion algorithms for exclusive last-level caches

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5293609A (en) 1991-04-19 1994-03-08 International Business Machines Corporation Hit-density-based replacement for data cache with prefetching
US6728839B1 (en) 1998-10-28 2004-04-27 Cisco Technology, Inc. Attribute based memory pre-fetching technique
US6532520B1 (en) 1999-09-10 2003-03-11 International Business Machines Corporation Method and apparatus for allocating data and instructions within a shared cache
JP2002163150A (ja) 2000-11-28 2002-06-07 Toshiba Corp プロセッサ
US6996678B1 (en) * 2002-07-31 2006-02-07 Cisco Technology, Inc. Method and apparatus for randomized cache entry replacement
US7337278B2 (en) 2004-04-15 2008-02-26 International Business Machines Corporation System, method and storage medium for prefetching via memory block tags
US7370152B2 (en) 2004-06-29 2008-05-06 Rambus Inc. Memory controller with prefetching capability
US7484042B2 (en) * 2006-08-18 2009-01-27 International Business Machines Corporation Data processing system and method for predictively selecting a scope of a prefetch operation
US8209291B1 (en) 2008-09-16 2012-06-26 Juniper Networks, Inc. Optimized prefetching for wide area networks
US20110072218A1 (en) 2009-09-24 2011-03-24 Srilatha Manne Prefetch promotion mechanism to reduce cache pollution
US8990506B2 (en) * 2009-12-16 2015-03-24 Intel Corporation Replacing cache lines in a cache memory based at least in part on cache coherency state information
US8914581B2 (en) * 2010-05-20 2014-12-16 Telefonaktiebolaget L M Ericsson (Publ) Method and apparatus for accessing cache memory
CN101866318B (zh) * 2010-06-13 2012-02-22 北京北大众志微系统科技有限责任公司 一种高速缓存替换策略的管理系统及方法
US8583874B2 (en) 2010-12-14 2013-11-12 Lsi Corporation Method and apparatus for caching prefetched data
US8909866B2 (en) * 2012-11-06 2014-12-09 Advanced Micro Devices, Inc. Prefetching to a cache based on buffer fullness
US20150286571A1 (en) 2014-04-04 2015-10-08 Qualcomm Incorporated Adaptive cache prefetching based on competing dedicated prefetch policies in dedicated cache sets to reduce cache pollution
US10509732B2 (en) * 2016-04-27 2019-12-17 Advanced Micro Devices, Inc. Selecting cache aging policy for prefetches based on cache test regions

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120254550A1 (en) * 2011-04-01 2012-10-04 Jayesh Gaur Bypass and insertion algorithms for exclusive last-level caches

Also Published As

Publication number Publication date
US20170315932A1 (en) 2017-11-02
JP6840169B2 (ja) 2021-03-10
US10509732B2 (en) 2019-12-17
WO2017189033A1 (en) 2017-11-02
US11321245B2 (en) 2022-05-03
JP2019516188A (ja) 2019-06-13
KR102470184B1 (ko) 2022-11-23
US20200081849A1 (en) 2020-03-12
CN109074312B (zh) 2024-02-02
CN109074312A (zh) 2018-12-21

Similar Documents

Publication Publication Date Title
US11321245B2 (en) Selecting cache aging policy for prefetches based on cache test regions
CN109478165B (zh) 一种基于缓存测试区针对预取数据选择缓存转移策略的方法和一种处理器
US11803484B2 (en) Dynamic application of software data caching hints based on cache test regions
CN104636270B (zh) 数据处理装置和数据处理方法
CN113407119B (zh) 数据预取方法、数据预取装置、处理器
US11880310B2 (en) Cache access measurement deskew
US10810126B2 (en) Cache storage techniques
US11461101B2 (en) Circuitry and method for selectively controlling prefetching of program instructions
EP3239848A1 (en) Selecting cache aging policy for prefetches based on cache test regions
US20170357585A1 (en) Setting cache entry age based on hints from another cache level
US20190121747A1 (en) Cache replacement policy based on non-cache buffers

Legal Events

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