KR102231190B1 - 프리페처 기반 추론적 동적 랜덤 액세스 메모리 판독 요청 기술 - Google Patents

프리페처 기반 추론적 동적 랜덤 액세스 메모리 판독 요청 기술 Download PDF

Info

Publication number
KR102231190B1
KR102231190B1 KR1020207029359A KR20207029359A KR102231190B1 KR 102231190 B1 KR102231190 B1 KR 102231190B1 KR 1020207029359 A KR1020207029359 A KR 1020207029359A KR 20207029359 A KR20207029359 A KR 20207029359A KR 102231190 B1 KR102231190 B1 KR 102231190B1
Authority
KR
South Korea
Prior art keywords
request
read requests
memory read
speculative memory
speculative
Prior art date
Application number
KR1020207029359A
Other languages
English (en)
Other versions
KR20200123844A (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 KR20200123844A publication Critical patent/KR20200123844A/ko
Application granted granted Critical
Publication of KR102231190B1 publication Critical patent/KR102231190B1/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/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, 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
    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main memory
    • 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
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • 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/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

방법은 마지막에서 두 번재 레벨 캐시로부터 메인 메모리로의 추론적 메모리 판독 요청들의 요청률을 모니터링하는 단계를 포함한다. 상기 추론적 메모리 판독 요청들은 상기 마지막에서 두 번재 레벨 캐시에서 적중 실패한 데이터 판독 요청들에 대응한다. 상기 데이터 판독 요청들에 의해 요청된 데이터에 대한 마지막 레벨 캐시의 탐색들의 적중률이 모니터링된다. 상기 메인 메모리로의 코어 요구 추론적 메모리 판독 요청들은 상기 요청률 및 상기 적중률에 기초하여 대응하는 코어 요구 데이터 판독 요청의 데이터에 대한 상기 마지막 레벨 캐시의 탐색과 병렬로 인에이블된다. 상기 메인 메모리로의 프리페치 추론적 메모리 판독 요청들은 상기 요청률 및 상기 적중률에 기초하여 대응하는 프리페치 데이터 판독 요청의 데이터에 대한 상기 마지막 레벨 캐시의 탐색과 병렬로 선택적으로 인에이블된다.

Description

프리페처 기반 추론적 동적 랜덤 액세스 메모리 판독 요청 기술
일반적으로, 프로세서 코어 속도와 메인 메모리 속도 간 격차를 해소하기 위해, 프로세서 시스템은 각 캐시가 그것의 이전 것보다 크고 그것의 이후 것보다 빠른 다중 레벨 캐시 계층을 사용한다. 도 1은 세 개의 캐시 레벨 및 메인 메모리를 갖는 다중 레벨 캐시 계층을 포함하는 대표적인 처리 시스템을 도시한다. 처리 시스템(100)은 레벨 2 캐시(110)에 결합되는 분할 레벨 1 캐시(예를 들어, 명령 캐시(106) 및 데이터 캐시(108))를 갖는 프로세서(102)를 포함한다. 레벨 3 캐시(112)는 프로세서(102) 외부에 있고 메인 메모리(114)와 통신하며, 이는 기존의 오프-칩 동적 랜덤 액세스 메모리(DRAM), 보다 빠른 온-칩 DRAM 및/또는 DRAM, 정적 랜덤 액세스 메모리(SRAM), 상 변화 메모리, 멤리스터 또는 다른 메모리 유형)와 같은 메모리 기술들의 혼합을 포함할 수 있다. 메인 메모리(114)에 액세스함으로써 마지막 레벨 캐시(예를 들어, 레벨 3 캐시(112))로부터의 서비스 적중 실패는 시스템 성능에 실질적으로 영향을 미칠 수 있는 높은 메모리 액세스 레이턴시(예를 들어, 적어도 200 클록 사이클의 메모리 액세스 레이턴시)를 갖는다. 따라서, 메모리 액세스를 위한 개선된 기술들이 요구된다.
적어도 일 실시예에서, 메모리 시스템의 메모리 액세스 레이턴시를 감소사키기 위한 방법은 마지막에서 두 번재 레벨 캐시로부터 메인 메모리로의 추론적 메모리 판독 요청들의 요청률을 모니터링하는 단계를 포함한다. 상기 추론적 메모리 판독 요청들은 상기 마지막에서 두 번재 레벨 캐시에서 적중 실패한 데이터 판독 요청들에 대응한다. 상기 추론적 메모리 판독 요청들 각각은 코어 요구 추론적 메모리 판독 요청 또는 프리페치 추론적 메모리 판독 요청이다. 상기 데이터 판독 요청들 각각은 코더 요구 데이터 판독 요청 또는 프리페치 데이터 판독 요청이다. 상기 방법은 상기 데이터 판독 요청들에 의해 요청된 데이터에 대한 마지막 레벨 캐시의 탐색들의 적중률을 모니터링하는 단계를 포함한다. 상기 추론적 메모리 판독 요청들 각각은 대응하는 데이터에 대한 상기 마지막 레벨 캐시의 탐색과 병렬로 발행된다. 상기 방법은 상기 요청률 및 상기 적중률에 기초하여 대응하는 코어 요구 데이터 판독 요청의 데이터에 대한 상기 마지막 레벨 캐시의 탐색과 병렬로 상기 메인 메모리로의 코어 요구 추론적 메모리 판독 요청들을 선택적으로 인에이블하는 단계를 포함한다. 상기 방법은 상기 요청률 및 상기 적중률에 기초하여 대응하는 프리페치 데이터 판독 요청의 데이터에 대한 상기 마지막 레벨 캐시의 탐색과 병렬로 상기 메인 메모리로의 프리페치 추론적 메모리 판독 요청들을 선택적으로 인에이블하는 단계를 포함한다. 상기 추론적 메모리 판독 요청들 각각은 상기 탐색 또는 미실현의 추론적 메모리 판독 요청과 병렬로 발행되는 실제 추론적 메모리 판독 요청일 수 있다.
적어도 일 실시예에서, 메모리 시스템은 마지막에서 두 번재 레벨 캐시, 마지막 레벨 캐시, 메인 메모리, 제1 카운터, 제2 카운터 및 상기 마지막에서 두 번재 레벨 캐시와 연관된 제어기를 포함한다. 상기 제1 카운터는 상기 마지막에서 두 번재 레벨 캐시로부터 상기 메인 메모리로의 추론적 메모리 판독 요청들의 요청률을 저장하도록 구성된다. 상기 추론적 메모리 판독 요청들 각각은 대응하는 데이터 판독 요청의 상기 마지막에서 두 번재 레벨 캐시에서의 적중 실패에 응답한다. 상기 제2 카운터는 상기 마지막에서 두 번재 레벨 캐시에서 적중 실패한 데이터 판독 요청들의 데이터에 대한 상기 마지막 레벨 캐시의 탐색들의 적중률의 표시자를 저장하도록 구성된다. 상기 제어기는 상기 요청률, 상기 적중률, 미리 결정된 요청률 임계값 및 미리 결정된 적중률 임계값에 기초하여 상기 탐색들과 병렬로 상기 메인 메모리로의 코어 요구 추론적 메모리 판독 요청들을 선택적으로 인에이블하도록 구성된다. 상기 제어기는 상기 요청률, 상기 적중률, 상기 미리 결정된 요청률 임계값 및 상기 미리 결정된 적중률 임계값에 기초하여 상기 탐색들과 병렬로 상기 메인 메모리로의 프리페치 추론적 메모리 판독 요청들을 선택적으로 인에이블하도록 구성된다. 상기 추론적 메모리 판독 요청들 각각은 코어 요구 추론적 메모리 판독 요청 또는 프리페치 추론적 메모리 판독 요청이다. 상기 추론적 메모리 판독 요청 제어기는 상기 마지막에서 두 번재 레벨 캐시에서의 각 적중 실패에 응답하여 상기 제1 카운터를 증분시키고, 상기 마지막 레벨 캐시에서의 각 적중에 응답하여 상기 제2 카운터를 증분시키며, 상기 제1 카운터 및 상기 제2 카운터를 주기적으로 리셋시키도록 구성된다.
적어도 일 실시예에서, 메모리 시스템을 작동하기 위한 방법은 마지막에서 두 번재 레벨 캐시에서 적중 실패한 코어 요구 메모리 판독 요청들에 의해 요청된 데이터에 대한 마지막 레벨 캐시의 탐색과 병렬로 메인 메모리로의 코어 요구 추론적 메모리 판독 요청들을 인에이블하는 단계를 포함한다. 상기 방법은 상기 마지막에서 두 번재 레벨 캐시에서 적중 실패한 프리페치 데이터 판독 요청들에 의해 요청된 데이터에 대한 상기 메인 메모리로의 프리페치 추론적 메모리 판독 요청들을 디스에이블하는 단계를 포함한다. 상기 방법은 상기 마지막에서 두 번재 레벨 캐시로부터 상기 메인 메모리로 발행된 추론적 메모리 판독 요청들의 요청률을 모니터링하는 단계를 포함한다. 상기 요청률은 코어 요구 추론적 메모리 판독 요청들 및 상기 마지막에서 두 번재 레벨 캐시에서 적중 실패한 프리페치 데이터 판독 요청들에 대한 미실현의 프리페치 추론적 메모리 판독 요청들에 기초한다. 상기 방법은 상기 마지막 레벨 캐시의 상기 탐색의 적중률을 모니터링하는 단계를 포함한다. 상기 방법은 상기 요청률이 미리 결정된 요청률 임계값보다 작은 것 그리고 상기 적중률이 미리 결정된 적중률 임계값보다 작은 것에 응답하여: 상기 코어 요구 추론적 메모리 판독 요청들을 인에이블하는 단계 및 상기 프리페치 추론적 메모리 판독 요청들을 디스에이블하는 단계를 포함한다. 적어도 일 실시예에서, 상기 요청률이 상기 미리 결정된 요청률 임계값보다 크거나 상기 적중률이 상기 미리 결정된 적중률 임계값보다 큰 것에 응답하여, 상기 방법은 상기 코어 요구 추론적 메모리 판독 요청들을 디스에이블하는 단계 및 상기 프리페치 추론적 메모리 판독 요청들을 디스에이블하는 단계를 포함한다. 적어도 일 실시예에서, 상기 요청률이 제2 미리 결정된 요청률 임계값보다 작은 것 그리고 상기 적중률이 제2 미리 결정된 적중률 임계값보다 작은 것에 응답하여, 상기 방법은 상기 코어 요구 추론적 메모리 판독 요청들을 인에이블하는 단계 및 상기 프리페치 추론적 메모리 판독 요청들을 인에이블하는 단계를 더 포함한다. 상기 제2 미리 결정된 요청률 임계값은 상기 미리 결정된 요청률 임계값보다 작고 상기 제2 미리 결정된 적중률 임계값은 상기 미리 결정된 적중률 임계값보다 작다.
본 발명은 첨부 도면들을 참조하여 더 양호하게 이해될 수 있고, 그것의 많은 목적, 특징, 및 이점이 해당 기술분야에서의 통상의 기술자들에게 분명해질 수 있다.
도 1은 하나의 처리 코어 및 다중 레벨 메모리 시스템을 포함하는 처리 시스템의 기능 블록도를 도시한다.
도 2는 다중 레벨 메모리 시스템을 포함하는 다중 코어 처리 시스템의 기능 블록도를 도시한다.
도 3은 요청 및 데이터 흐름을 도시하는 도 2의 다중 코어 처리 시스템의 다른 기능 블록도를 도시한다.
도 4는 도 1 또는 도 2의 처리 코어에 의해 발생한 메모리 요청에 대한 메모리 시스템 이벤트들 및 관련 레이턴시들의 시퀀스를 도시한다.
도 5는 도 2의 다중 코어 처리 시스템에 의한 추론적 DRAM 판독 요청의 발행에 대한 대표적인 정보 및 제어 흐름을 도시한다.
도 6은 도 2의 다중 코어 처리 시스템의 추론적 DRAM 판독 트래픽을 모니터링하기 위한 대표적인 정보 및 제어 흐름 및 추론적 DRAM 판독의 정확도를 도시한다.
도 7은 도 2의 다중 코어 처리 시스템에 포함된 추론적 DRAM 판독 활동 제어기에 대한 상태 기계도를 도시한다.
도 8은 도 2의 처리 코어들의 클러스터의 추론적 DRAM 판독 트래픽을 모니터링하기 위한 대표적인 정보 및 제어 흐름 및 추론적 DRAM 판독의 정확도를 도시한다.
도 9는 본 발명의 적어도 일 실시예와 일관된 도 2의 다중 코어 처리 시스템에서의 프리페처 기반 추론적 DRAM 판독 제어를 위한 대한 상태도를 도시한다.
상이한 도면들에서의 동일한 참조 부호들의 사용은 유사하거나 동일한 항목들을 나타낸다.
마지막 레벨 캐시(예를 들어, 레벨 3 캐시)의 적중 실패 레이턴시를 감소시키기 위한 기술은 추론적 DRAM 판독 요청들(즉, 추론적 메모리 판독 요청들)을 발행하는 것을 포함한다. 이 기술은 평균 마지막 레벨 캐시 적중 실패 레이턴시를 감소시키기 위해 실제 요구 판독 요청들에 앞서 메인 메모리에 추론적으로 DRAM 판독 요청들을 발행한다. 추론적 DRAM 판독 요청들은 시스템에 대한 사이클당 명령을 증가시키지만, 실행시, 기존의 추론적 DRAM 판독 요청들은 메인 메모리에 대한 인터페이스에서 혼잡을 증가시킴으로써 시스템 성능에 악영향을 미칠 수 있다. 따라서, 기존의 추론적 DRAM 판독 요청들은 메모리 시스템 레이턴시를 감소시키는 것이 아니라 그것을 증가시킬 수 있다. 시스템에서 실행되는 스레드 수가 증가함에 따라, 경합 증가로 인해 공유 마지막 레벨 캐시 적중 실패가 증가하여, 메모리 시스템 액세스 레이턴시가 증가한다.
도 2 및 도 3은 프로세서들: 프로세서(102), 프로세서(104), 프로세서(106) 및 프로세서(108)(이들은 각각, 처리 코어(202), 처리 코어(204), 처리 코어(206) 및 처리 코어(208)를 포함한다)의 클러스터를 포함하는 다중 코어 처리 시스템(200)을 도시한다. 각 처리 코어는 적어도 두 개의 스레드를 동시에 실행할 수 있으며, 비공개 분할 레벨 1 캐시(즉, 명령 캐시 및 데이터 캐시로 분할되는 레벨 1 캐시) 및 대응하는 비공개 통합 레벨 2 캐시를 포함한다. 프로세서들의 클러스터의 프로세서(102), 프로세서(104), 프로세서(106) 및 프로세서(108)는 캐시 슬라이스(218), 캐시 슬라이스(220), 캐시 슬라이스(224) 및 캐시 슬라이스(226)(예를 들어, 2MB 슬라이스)로 분할되는 레벨 3 캐시(예를 들어, 8MB)를 공유한다. 레벨 2 캐시(210), 레벨 2 캐시(212), 레벨 2 캐시(214) 및 레벨 2 캐시(216)에는 대응하는 레벨 1 캐시가 완전히 포함된다, 즉, 대응하는 레벨 1 캐시에 있는 모든 라인이 레벨 2 캐시에도 있다. 그러나, 레벨 2 캐시에는 레벨 3 캐시가 대부분 제외된다, 즉, 레벨 2 캐시 라인의 대부분이 레벨 3 캐시에 없다. 레벨 3 캐시는 또한 특정 라인들이 다중 코어 처리 시스템(200)에서의 프로세서들의 클러스터의 임의의 다른 레벨 2 캐시에 있는지 여부를 결정하는데 사용되는 섀도우 태그 구조들의 레벨 2 태그들을 유지한다.
캐시 인터커넥트(230)는 레벨 2 캐시들과 레벨 3 캐시 간 통신을 제공한다. 클러스터 인터커넥트(240)는 레벨 3 캐시 및 메인 메모리(114)의 캐시 슬라이스(218), 캐시 슬라이스(220), 캐시 슬라이스(224)와 캐시 슬라이스(226) 간 통신을 제공한다. 메모리 요청들 및 관련 데이터는 클러스터 인터커넥트(240)를 통해 메인 메모리(114)로 흐르고 응답들은 다시 클러스터 인터커넥트(240)를 통해 레벨 3 캐시로 흐른다. 예를 들어, 메모리 요청이 레벨 2 캐시에서 적중 실패할 때, 레벨 2 캐시 제어기는 특정 주소 비트들에 기초하여 레벨 3 캐시의 특정 슬라이스로 메모리 요청을 전송한다. 레벨 3 캐시의 슬라이스가 해당 데이터 라인을 저장하여 레벨 3 캐시에서 적중하면, 레벨 3 캐시는 데이터를 요청 레벨 2 캐시로 전송한다. 데이터 라인이 레벨 3 캐시에 없다면(즉, 라인이 레벨 3 캐시 적중 실패한다면), 레벨 3 캐시는 예를 들어, 레벨 3 캐시의 섀도우 태그 구조들에 저장된 레벨 2 태그들을 검사함으로써 먼저 해당 라인이 프로세서들의 클러스터의 임의의 다른 레벨 2 캐시들에 있는지 여부를 결정한다. 해당 데이터 라인이 임의의 다른 코어의 레벨 2 캐시에 있다면, 레벨 3 캐시는 레벨 2 캐시로부터 다른 레벨 2 캐시로 캐시 간 전달을 개시하고 해당 요청을 메인 메모리(114)로 전송하지 않는다. 그러나, 데이터 라인이 프로세서들의 클러스터의 어떠한 레벨 2 캐시에도 있지 않다면, 레벨 3 캐시 제어기는 해당 메모리 요청을 메인 메모리(114)로 전송한다. 일반적으로, 캐시 간 전달은 드물지만 상이한 처리 코어들 상에서 실행되는 두 개 이상의 스레드가 데이터 또는 명령들을 공유할 때 발생할 수 있다.
도 4를 참조하면, 타임 라인은 처리 코어에 의해 발행된 메모리 요청에 대한 이벤트들의 시퀀스를 나타낸다. 오른쪽을 가리키는 화살표들은 요청 코어로부터 메모리 시스템으로의 요청 경로를 나타내고 왼쪽을 가리키는 화살표들은 메모리 시스템으로부터 요청 코어로의 응답 경로를 나타낸다. 각 화살표는 연관된 클록 사이클들의 양을 나타내는 연관된 가중치를 갖는다. 적중 실패에 응답하여, 대응하는 제어기는 요청을 다음 캐시 또는 메모리 구성요소로 전달한다. 메모리 요청을 서비스하는데 필요한 총 시간은 요청 코어에 대응하는 노드 1과 요청된 데이터를 포함하는 메모리 시스템의 첫 번째 레벨에 대응하는 노드 사이 폐쇄 루프의 모든 에지, 즉, 요청 코어로부터 요청된 데이터 라인을 저장하는 메모리의 레벨까지의 총 레이턴시, 및 메모리의 해당 레벨로부터 다시 요청 코어로의 응답의 합이다. 레이턴시들은 메모리 제어기들 또는 인터커넥트 네트워크들에서 다른 충돌 또는 혼잡이 없을 때 최소 레이턴시들이다. 예를 들어, 노드 3으로부터 노드 5까지의 레이턴시는 최소 a3 + a4 클록 사이클들이며, 이는 레벨 2 캐시에서 적중 실패 검출과 프로세서들의 클러스터의 레벨 3 캐시와 다른 레벨 2 캐시들에서 적중 실패를 예상하고 메모리 요청이 메인 메모리로 전송 될 때까지의 레이턴시이다.
시스템 분석(예를 들어, SPECint 벤치 마크 제품군 사용)은 평균적으로 레벨 2 캐시 적중 실패한 메모리 요청들의 대부분(예를 들어, 54%)이 또한 단일 스레드가 전체 레벨 3 캐시를 사용하여 처리 코어들의 클러스터 상에서 실행될 때 레벨 3 캐시 적중 실패함을 나타낸다. 레벨 3 캐시를 공유하는 다수의 스레드가 동시에 실행될 때, 해당 적중 실패율은 증가한다. 예를 들어, 여덟 개의 스레드가 SPECint 벤치마크 제품군을 실행할 때, 레벨 2 캐시 적중 실패의 70%도 레벨 3 캐시 적중 실패하고 프로세서들의 클러스터의 다른 레벨 2 캐시 적중 실패한다. 메인 메모리(114)는 그러한 모든 메모리 요청을 서비스해야 하고 레벨 3 캐시에서 추가 레이턴시를 발생시킬 것이다. 그러한 패널티는 레벨 3 캐시 제어기에서 혼잡량이 증가함에 따라 증가한다.
따라서, 레벨 2 캐시 메모리 제어기는 메모리 레이턴시를 감소시키기 위해 추론적 DRAM 판독 요청들을 구현한다. 도 2, 도 3 및 도 5를 참조하면, 마지막에서 두 번재 레벨(예를 들어, 레벨 2) 캐시 제어기는 이전 레벨(예를 들어, 레벨 1) 캐시 제어기로부터 메모리 요청들을 수신한다. 그러한 수신된 메모리 요청들은 대응하는 처리 코어에서 프리페치 로직에 의해 생성된 프리페치 요청들일 수 있거나 대응하는 처리 코어로부터의 코어 요구 요청들일 수 있다.
타겟 데이터 라인이 레벨 2 캐시에 존재한다면(즉, 레벨 2 캐시 적중), 레벨 2 캐시는 메모리 요청 응답을 제공한다. 요청된 데이터 라인이 레벨 2 캐시에 존재하지 않는다면(즉, 레벨 2 캐시 적중 실패)(402), 레벨 2 캐시 제어기는 메모리 요청을 마지막 레벨 캐시(예를 들어, 레벨 3 캐시의 대응하는 슬라이스)로 포워딩하는 것과 병렬로 추론적 DRAM 판독 요청을 메인 메모리(114)에 발행한다(408). 메모리 요청이 레벨 3 캐시의 대응하는 슬라이스 적중 실패한다면(404), 레벨 3 캐시 제어기는 메모리 요청을 클러스터 인터커넥트(240)로 포워딩하여 요청된 데이터 라인이 처리 코어들의 클러스터의 다른 코어와 연관된 레벨 2 캐시에 존재하는지 결정한다. 수신된 메모리 요청이 처리 코어들의 클러스터에서 적중 실패되면(406), 레벨 3 캐시 제어기는 요구 메모리 요청을 메인 메모리(114)로 포워딩한다(410). 레벨 2 캐시로부터 직접 메인 메모리(114)로 전송된(즉, 레벨 3 캐시 및 클러스터 인터커넥트(240)를 우회) 메모리 요청들은 레벨 3 캐시적중하는 추론적 DRAM 판독 요청들과 병렬로 전송된 임의의 기존의 메모리 요청들이 메인 메모리(114)에 의해 서비스될 필요가 없어, 추론적 DRAM 판독 요청이 불필요한 것으로 만들어지기 때문에 추론적인(speculative) 것으로 고려된다. 그러나, 추론적 DRAM 판독 요청들은 도 4에 대하여 상술된 바와 같이, 레벨 3 캐시에서 적중 실패하는 메모리 요청들의 레이턴시를 감소시킨다.
도 2 및 도 3을 참조하면, 메인 메모리(114)는 레벨 3 캐시로부터 포워딩된 메모리 요청들과 유사하게 추론적 DRAM 판독 요청들을 핸들링하고 메인 메모리(114)로부터 대응하는 데이터를 판독한다. 그러나, 추론적 DRAM 요청 데이터를 다시 레벨 3 캐시로 전송하는 대신, 추론적 DRAM 판독 요청 데이터는 메인 메모리(114) 내부의 로컬 버퍼에 저장된다. 코어 요구 요청이 메인 메모리(114)에 도달할 때, 그것이 동일한 메모리 주소를 가진 추론적 DRAM 요청을 적중하면, 메모리 제어기는 버퍼로부터 응답 데이터를 전송한다. 그에 따라, 요구 요청은 전체 메모리 판독 레이턴시 감소로 인해 추론적 DRAM 판독 요청들로부터 이점을 얻는다. 요구 요청들에 대응하는 추론적 DRAM 판독 요청들은 시스템 성능을 향상시키는 유익한 추론적 DRAM 판독 요청들인 것으로 고려된다. 그러나, 레벨 2 캐시에서 적중 실패한 메모리 요청이 레벨 3 캐시 또는 처리 코어들의 클러스터에서 적중한다면, 어떠한 요구 요청도 메모리로 전송되지 않는다. 그러한 메모리 요청들에 대해 생성된 추론적 DRAM 판독 요청들은 유용하지 않고 유해한 추론적 DRAM 판독 요청들인 것으로 고려된다. 유해한 추론적 DRAM 판독 요청들에 의해 판독되는 데이터는 로컬 버퍼에 존재하고 결국 다른 추론적 DRAM 판독 요청들로부터의 데이터가 그러한 데이터를 겹쳐 쓴다.
추론적 DRAM 요청 정책은 레벨 2 캐시에서 적중 실패한 모든 메모리 요청에 대해 추론적 DRAM 판독 요청들을 메인 메모리(114)로 전송한다. 유익한 추론적 DRAM 판독 요청들은 성능을 향상시키지만, 유해한 추론적 DRAM 판독 요청들은 불필요하게 로컬 버퍼를 데이터로 채운다. 추론적 DRAM 요청이 유해한 추론적 DRAM 판독 요청에 의해 지연된 후 발행되는 코어 요구 요청은 시스템 속도를 저하시킨다. 단일 스레드가 처리 코어들의 클러스터에서 실행될 때, 유해한 추론적 DRAM 판독 요청들은 시스템 성능을 크게 저하시키지 않는다. 그러나, 처리 코어들의 클러스터 상에서 실행되는 스레드 수가 증가함에 따라, 네트워크 및 메모리 시스템들은 병목 현상이 발생되고, 유해한 추론적 DRAM 판독 요청들은 시스템 성능을 크게 저하시킨다. 그에 따라, 유해한 추론적 DRAM 판독 요청들은 다른 메모리 요청들을 방해하고 대역폭을 낭비하고 전체 시스템 성능을 저하시키며 전력 소비를 증가시킨다. 그에 따라, 유해한 추론적 DRAM 판독 요청들이 감소하면 추론적 DRAM 요청 정확도, 전체 시스템 성능이 향상되고 전력 소비가 감소할 것이다.
적어도 일 실시 예에서, 마지막에서 두 번째 레벨 캐시 제어기는 시스템 성능을 개선하기 위해 추론적 DRAM 판독 요청 트래픽 및 정확도를 제어하는 추론적 DRAM 요청 정책을 구현한다. 이 정책은 레벨 2 캐시 제어기에 의해 발행되는 추론적 DRAM 판독 요청 수를 지능적으로 조정한다. 이 정책은 추론적 DRAM 판독 요청들의 품질을 개선하고 마지막 레벨 캐시에서의 대응하는 적중 수로 추론적 DRAM 판독 요청들의 정확도(즉, 품질 또는 효율성)을 측정한다. 주기적으로, 마지막에서 두 번재 레벨 캐시 제어기는 요청률 카운터와 적중률 카운터를 대응하는 미리 결정된 임계값들과 비교한다. 미리 결정된 임계값들은 BIOS 또는 다른 시스템 초기화 시퀀스 동안 구성될 수 있다. 카운터들 중 어느 하나가 그것의 대응하는 미리 결정된 임계치를 초과하면, 마지막에서 두 번재 레벨 캐시 제어기는 추론적 DRAM 판독 요청들이 메모리 경합에 추가하거나 낮은 정확도를 갖기에 비효율적이라고 결정한다. 마지막에서 두 번재 레벨 캐시 제어기는 각 카운터가 대응하는 미리 결정된 임계값 아래로 떨어질 때까지 추론적 DRAM 판독 요청들의 문제를 억제한다. 마지막에서 두 번째 레벨 캐시 제어기는 메모리 경합 및/또는 정확도 문제들이 해결되었는지 여부를 결정하기 위해 요구 요청에 대해 추론적 DRAM 판독 요청 트래픽 및 미실현의 추론적 DRAM 판독 요청들(즉, 추론적 DRAM 판독 요청들이 인에이블된다면 마지막에서 두 번재 레벨 캐시 제어기가 발행했을 추론적 DRAM 판독 요청들)에 대한 정확도를 추적한다. 두 문제가 모두 해결되었으면, 마지막에서 두 번째 레벨 캐시 제어기는 추론적 DRAM 판독 요청들을 발행하는 것을 재개한다. 이 기술은 제어되지 않는 추론적 DRAM 판독 요청들에 의한 시스템 성능 저하를 감소시키는데 효율적이다. 그러나, 일부 적용 예에서는, 체계가 추론적 DRAM 판독 요청들을 완전히 활용하지 않는다.
각 레벨 2 캐시 제어기는 레벨 2 캐시 적중 실패 및 레벨 3 캐시 적중 실패에 대한 카운터들을 유지한다. 그러한 카운터들은 레벨 2 캐시 또는 캐시 인터커넥트(230)에 포함될 수 있다. 레벨 2 캐시 제어기는 그러한 카운터들을 각각, 추론적 DRAM 요청률 및 추론적 DRAM 요청률 정확도를 추정하는데 사용한다. 레벨 2 캐시 제어기는 레벨 3 캐시로부터의 응답으로 수신된 레벨 3 캐시 제어기로부터의 피드백을 사용하여 레벨 3 캐시 적중 실패 카운터를 업데이트한다. 레벨 2 캐시 제어기는 부정확한 추론적 DRAM 판독 요청들로 인한 간섭을 평가하고 그에 따라 추론적 DRAM 판독 요청률을 조정함으로써, 추론적 DRAM 판독 요청들의 정확도를 개선한다.
처리 코어들의 클러스터와 메인 메모리(114) 사이의 마지막 레벨 캐시 제어기(또는 클러스터 인터커넥트 네트워크(240))는 경합을 측정하기 위해 그것을 통해 전달되는 추론적 DRAM 판독 요청들 및 요구 요청들을 카운트한다. 도 6을 참조하면, 수신된 메모리 요청이 레벨 2 캐시에서 적중 실패하면(502), 클러스터 인터커넥트 네트워크(240)는 대응하는 추론적 DRAM 판독 요청 트래픽 카운터를 증분시킨다(504). 표본 기간이 종료되면(506), 마지막에서 두 번재 레벨 캐시 제어기는 추론적 DRAM 판독 요청 트래픽 카운터의 내용을 대응하는 미리 결정된 임계값과 비교하고 비교 결과들을 사용하며(508) 카운터를 리셋한다(510). 한편, 마지막에서 두 번재 레벨 캐시 제어기가 마지막 레벨 캐시(예를 들어, 레벨 3 캐시의 슬라이스)로부터 적중 응답을 수신하면, 마지막에서 두 번재 레벨 캐시 제어기는 마지막 레벨 캐시 적중 카운터를 증분시킨다(512). 표본 기간이 종료되면(506), 마지막에서 두 번재 레벨 캐시 제어기는 마지막 레벨 캐시 적중률 카운터를 대응하는 미리 결정된 임계값과 비교하고 비교 결과들을 사용하며(508) 마지막 레벨 캐시 적중률 카운터를 리셋한다(510).
도 7을 참조하면, 마지막에서 두 번째 레벨 캐시 제어기가 비교 정보를 사용한다. 미리 결정된 임계치들은 추론적 DRAM 판독 요청률 및 마지막 레벨 캐시 적중률에 대해 허용되는 값들을 나타낸다. 처리 시스템이 추론적 DRAM 판독 요청들이 인에이블된 상태에 있고(602) 두 카운터가 대응하는 미리 결정된 임계값들 미만이면(606), 캐시 제어기는 추론적 DRAM 판독 요청들을 계속해서 발행한다. 카운터들 중 어느 하나가 대응하는 미리 결정된 임계값을 초과하면(614), 캐시 제어기는 추론적 DRAM 판독 요청들을 디스에이블한다(604). 캐시 제어기는 추론적 DRAM 판독 요청들이 디스에이블되는 동안 트래픽과 정확도를 계속해서 모니터링한다. 카운터들 중 어느 하나가 대응하는 미리 결정된 임계값을 초과하면, 추론적 DRAM 판독 요청들은 디스에이블된 상태로 유지된다(610). 그러나, 카운터들 각각이 대응하는 제2 미리 결정된 임계값 미만의 값(예를 들어, 대응하는 미리 결정된 임계값의 절반 미만의 값)을 가질 때(612), 마지막에서 두 번째 레벨 캐시 제어기는 추론적 DRAM 판독 요청들을 인에이블한다(602).
도 2 및 도 3을 참조하면, 적어도 일 실시 예에서, 클러스터 인터커넥트(240)는 처리 코어들의 클러스터에서의 임의의 처리 코어로부터 메인 메모리(114)로 전송된 추론적 DRAM 판독 요청들의 총 수를 모니터링한다. 그러한 정보는 대응하는 마지막에서 두 번재 레벨 캐시로 피드백될 수 있으며, 이는 미리 결정된 임계 레벨들을 조정하는데 그러한 정보를 사용할 수 있다. 예를 들어,도 8을 참조하면, 클러스터 인터커넥트(240)는 클러스터의 모든 처리 코어로부터 추론적 DRAM 판독 요청들을 수신하고 각각의 수신된 추론적 DRAM 판독 요청에 대한 클러스터 레벨 추론적 DRAM 판독 요청 속도 카운터를 증분시킨다(702). 표본 기간이 종료되면(704), 클러스터 인터커넥트(240)는 클러스터 레벨 추론적 DRAM 판독 요청률 카운터 값을 미리 결정된 클러스터 레벨 요청률 임계값과 비교한다(706). 클러스터 레벨 추론적 DRAM 판독 요청률 카운터 값이 미리 결정된 클러스터 레벨 요청률 임계값을 초과하면, 클러스터 인터커넥트(240)는 요청률 임계값을 감소시키기 위한 신호를 하나 이상의 코어 캐시 제어기로 전송한다. 클러스터 레벨 요청률 카운트 값이 미리 결정된 임계값(또는 미리 결정된 임계값에 기초하여 별도로 저장되거나 생성될 수 있는 제2 미리 결정된 클러스터 레벨 요청률 임계값) 미만이면, 클러스터 인터커넥트(240)는 대응하는 추론적 DRAM 판독 요청률 임계값을 완화하기 위한 신호를 레벨 3 캐시의 대응하는 슬라이스의 캐시 제어기로 전송한다. 적절한 신호를 전송한 후, 클러스터 인터커넥트(240)는 클러스터 레벨 추론적 DRAM 판독 요청률 카운터를 리셋한다(708). 상술된 정책은 코어들의 클러스터 상에서 하나의 스레드를 실행하는데 적합하지만, 코어들의 클러스터 상에서 실행되는 다수의 스레드에 대해 생성되는 추가 트래픽은 시스템 성능을 저하시키고 사이클당 명령의 상당한 손실을 초래한다. 처리 코어들의 클러스터의 추론적 DRAM 판독 요청 트래픽이 증가함에 따라, 임계 레벨들이 더 엄격해질 수 있으며, 이에 따라 추론적 DRAM 판독 요청 주입률이 더 낮은 레벨들로 감소한다. 처리 코어들의 클러스터의 추론적 DRAM 판독 요청 트래픽이 감소함에 따라, 캐시 제어기는 임계값 레벨들을 완화할 수 있다.
추론적 DRAM 판독 요청들의 흐름을 제어하기 위한 지능형 정책은 추론적 DRAM 판독 요청들의 성능을 개선할 수 있다. 마지막 레벨 캐시에서 적중 실패될 추론적 DRAM 판독 요청들을 단지 발행하는 추론적 DRAM 요청 정책은 추론적 DRAM 판독 요청들에 대해 100% 정확도를 유지하고 메인 메모리(114)에서 낭비되는 어떠한 트래픽도 생성하지 않는다. 그러나, 마지막에서 두 번째 레벨 캐시 제어기는 어느 메모리 요청이 마지막 레벨 캐시에서 적중할지 100% 정확하게 예측할 수 없다. 추론적 DRAM 판독 요청들에 대한 요구 메모리 요청들의 우선순위는 유익한 추론적 DRAM 판독 요청들을 지연시키고 그 효과를 감소시킬 수 있다. 유익한 추론적 DRAM 판독 요청들 조차도 상황에 따라 해로울 수 있다. 예를 들어, 메모리 집약적 스레드가 계산 집약적 스레드와 동시에 실행되는 경우, 메모리 집약적 스레드로부터의 유익한 추론적 DRAM 판독 요청은 계산 집약적 스레드로부터의 요구 메모리 요청들을 지연시킬 수 있다. 추론적 DRAM 판독 요청들은 메모리 집약적 스레드에 약간의 개선을 제공할 수 있지만 계산 집약적 스레드에 대해 상당한 성능 저하를 유발할 수도 있다.
처리 코어(202), 처리 코어(204), 처리 코어(206) 및 처리 코어(208)는 캐시 적중 실패 수를 감소시키기 위해 미리 메인 메모리(114)로부터 캐시들로 데이터를 로딩하기 위한 상당한 양의 프리페치 요청을 생성한다. 처리 코어들의 프리페처들은 일시적으로 근접한 애플리케이션에 의해 요구될 캐시 라인들을 예측하고 그러한 예측에 기초하여 프리페치 데이터 판독 요청들을 생성한다. 프리페치 데이터 판독 요청들 중 일부만 유용한 데이터를 캐시들에 로딩한다. 프리페치 데이터 판독 요청들이 실제 코어 요구 요청들에 앞서기 때문에, 추론적 DRAM 판독 요청들로 레벨 2 프리페치 응답들의 속도를 높여도 레이턴시가 감소되지 않을 수 있다. 그에 따라, 추론적 DRAM 판독 요청들을 발행하기 위한 코어 요구 요청들에 우선순위를 부여하면 추론적 DRAM 판독 요청들로 인한 메모리 시스템에서의 추가 트래픽을 제한할 수 있다. 각 레벨 2 캐시 제어기는 실행 전반에 걸쳐 추론적 DRAM 판독 요청들의 흐름을 조절하고 추론적 DRAM 판독 요청들의 정확도를 개선함에 따라, 전체 시스템 성능을 향상시킨다. 그러나, 오랜 기간 동안 추론적 DRAM 판독 요청들을 디스에이블함으로써, 시스템은 그러한 기간 동안 임의의 성능 이익을 얻을 수 없다. 또한, 추론적 DRAM 판독 요청들의 성능은 미리 결정된 임계치들의 선택에 따르며, 이는 추론적 DRAM 판독 요청들의 속도를 적절하게 제어하기 위해 상당한 양의 애플리케이션별 조정을 필요로 한다. 전체 추론적 DRAM 판독 요청 트래픽을 모니터링함으로써, 이 체계는 유익한 추론적 DRAM 판독 요청들을 유해한 추론적 DRAM 판독 요청들과 분리하는 기능이 부족하다.
프리페처 기반 추론적 DRAM 판독 요청 기술은 상술된 추론적 DRAM 판독 트래픽 및 정확도를 모니터링하기 위해 카운터 기반 메커니즘을 사용하여 추론적 DRAM 판독 요청들을 메모리 시스템으로 주입하는 것을 지능적으로 제어한다. 그러나, 프리페처 기반 추론적 DRAM 판독 요청 기술은 추론적 DRAM 판독 요청들을 시스템으로 주입하는 선택적 접근법을 구현한다. 프리페처 기반 추론적 DRAM 판독 요청 기술의 적어도 일 실시 예에서, 마지막에서 두 번째 레벨 캐시 제어기가 추론적 DRAM 판독 요청들의 마지막 레벨 캐시에서의 요청률 또는 적중률 중 적어도 하나가 대응하는 미리 결정된 임계값을 초과한다고 결정하는 경우, 마지막에서 두 번째 레벨 캐시 제어기는 먼저 프리페치들에 대한 추론적 DRAM 판독 요청들을 억제한다. 일반적으로, 프리페치들은 그것들의 요구 사항에 앞서 발행되고 추론적 DRAM 판독 요청들을 사용하여 그것들의 레이턴시를 감소시키는 것이 어떠한 추가적인 이점도 제공하지 못할 수 있다. 또한, 상술된 바와 같이, 모든 프리페치가 유용한 것은 아니며 추론적 DRAM 판독 요청들을 발행하는 것은 메모리 경합을 증가시킨다. 그에 따라, 프리페처 기반 추론적 DRAM 판독 요청 기술은 먼저 불필요한 트래픽을 필터링함으로써, 추론적 DRAM 판독 요청 정확도를 개선한다. 상술된 카운터 기반 메커니즘들은 추론적 DRAM 판독 요청률 및 마지막 레벨 캐시 적중률을 모니터링한다. 마지막에서 두 번째 레벨 캐시 제어기가 추론적 DRAM 판독 요청률 또는 마지막 레벨 캐시 적중률이 대응하는 미리 결정된 임계값을 초과하는 것을 검출할 때, 마지막에서 두 번째 레벨 캐시 제어기는 프리페치 추론적 DRAM 판독 요청들을 발행하는 것을 디스에이블하며, 이는 추론적 DRAM 판독 트래픽을 상당히 감소시킨다. 또한, 프리페치들이 마지막 레벨 캐시에서 적중하는 경우, 프리페치 추론적 DRAM 판독 요청들의 필터링은 또한 추론적 DRAM 판독 요청들의 정확도도 개선한다. 그에 따라, 선택적 기술을 사용하면 시스템이 중요한 코어 요구 요청들에 대한 추론적 DRAM 판독 요청들의 성능 이익을 얻을 수 있고 메모리 시스템에 과도한 추론적 DRAM 판독 요청들이 가득차지 않는다.
프리페치 추론적 DRAM 판독 요청들을 디스에이블한 후, 선택적 기술은 추가 임계 위반 발생에 응답하여 나머지 인에이블된 추론적 DRAM 판독 요청들(즉, 코어 요구 추론적 DRAM 판독 요청들)을 디스에이블한다. 마지막에서 두 번째 레벨 캐시 제어기가 추론적 DRAM 판독 요청들을 발행하는 것을 재개할 때, 그것은 먼저 코어 요구 요청들에 대한 추론적 DRAM 판독 요청들을 인에이블한다. 마지막에서 두 번째 레벨 캐시 제어기가 시스템이 완전한 추론적 DRAM 판독 트래픽을 핸들링할 수 있다고 결정하는 경우, 마지막에서 두 번째 레벨 캐시 제어기는 프리페치 요청들에 대한 추론적 DRAM 판독 요청들도 인에이블한다.
적어도 일 실시 예에서, 프리페처 기반 추론적 DRAM 판독 요청 기술은 트래픽(예를 들어, 요청률) 및 정확도(예를 들어, 마지막 레벨 캐시 적중률)에 대한 미리 결정된 임계치들의 위반에 응답하여 다음 시퀀스로 추론적 DRAM 판독 요청들을 선택적으로 인에이블한다:
1. 추론적 DRAM 판독 요청 정확도 또는 추론적 DRAM 판독 요청률이 대응하는 미리 결정된 임계치를 위반하면, 캐시 제어기는 먼저 프리페치들에 대한 추론적 DRAM 판독 요청들을 디스에이블한다; 그리고
2. 추론적 DRAM 판독 요청들이 프리페치들에 대해서만 디스에이블되고, 추론적 DRAM 판독 요청 정확도 또는 추론적 DRAM 판독 요청률이 대응하는 미리 결정된 임계치를 위반하면, 캐시 제어기는 모든 추론적 DRAM 판독 요청을 디스에이블한다.
선택적 기술은 다음과 같은 단계들로 추론적 DRAM 판독 요청들을 재개한다:
1. 모든 추론적 DRAM 판독 요청이 디스에이블되고 추론적 DRAM 판독 요청 정확도가 두 번째 타겟 범위 내에 있다면, 캐시 제어기는 코어 요구 요청들에 대해서만 추론적 DRAM 판독 요청들을 인에이블한다. 프리페치들에 대한 추론적 DRAM 판독 요청들은 디스에이블된 상태로 유지된다.
2. 코어 요구 추론적 DRAM 판독 요청들만 인에이블되고 추론적 DRAM 판독 트래픽 및 추론적 DRAM 판독 요청 정확도가 두 번째 타겟 범위 내에 있다면, 제어기는 마지막에서 두 번째 레벨 캐시에서의 모든 적중 실패에 대해 추론적 DRAM 판독 요청을 인에이블한다.
도 9를 참조하면, 프리페처 기반 추론적 DRAM 판독 요청 기술의 일 실시 예에서, 마지막에서 두 번째 레벨 캐시 제어기(예를 들어, 레벨 2 캐시 제어기)는 추론적 DRAM 판독 요청들을 모니터링하고 요청률 카운터 및 마지막 레벨 캐시 적중률 카운터에 의해 수집된 정보를 BIOS 또는 다른 시스템 초기화 시퀀스 동안 구성될 수 있는 대응하는 미리 결정된 임계값들과 주기적으로 비교한다. 미리 결정된 임계치들은 추론적 DRAM 판독 요청률(예를 들어, 마지막에서 두 번째 레벨 캐시의 적중 실패율) 및 정확도(예를 들어, 마지막 레벨 캐시에서의 적중률)에 대해 허용되는 값들을 나타낸다. 시스템이 두 가지 유형 모두의 추론적 DRAM 판독 요청이 인에이블된 상태에 있고(902) 트래픽 및 정확도 카운터 값들이 대응하는 미리 결정된 임계값들 미만이면(908), 캐시 제어기는 프리페치들 및 코어 요구 요청들 둘 모두에 대해 추론적 DRAM 판독 요청들을 계속해서 발행한다. 카운터들 중 어느 하나가 대응하는 미리 결정된 임계값을 초과하면(910), 캐시 제어기는 프리페치 추론적 DRAM 판독 요청들을 디스에이블한다(904). 캐시 제어기는 프리페치 추론적 DRAM 판독 요청들이 디스에이블되고 요구 추론적 DRAM 판독 요청들이 인에이블되는 동안 트래픽 및 정확도를 계속해서 모니터링한다. 카운터들 중 어느 하나가 대응하는 미리 결정된 임계값을 초과하면(9112, 추론적 DRAM 판독 요청들은 디스에이블된 상태로 유지되고 캐시 제어기는 또한 코어 요구 추론적 DRAM 판독 요청들을 디스에이블한다(906). 그러나, 카운터들 각각이 대응하는 제2 미리 결정된 임계값 미만의 값을 가질 때(916), 캐시 제어기는 코어 요구 추론적 DRAM 판독 요청들을 다시 인에이블한다(904). 제2 미리 결정된 임계값들은 제1 미리 결정된 임계값들에 기초하여 별개로 저장되거나 생성될 수 있다. 제2 미리 결정된 임계값들은 제1 미리 결정된 임계값들보다 더 엄격 할 수 있다(예를 들어, 대응하는 미리 결정된 임계값의 절반). 카운터 값들 각각이 적어도 한 기간 동안 대응하는 미리 결정된 임계값 아래로 유지되는 경우(918), 프리페치 추론적 DRAM 판독 요청들은 디스에이블된 상태로 유지되는 한편 코어 추론적 DRAM 판독 요청들은 인에이블된 상태로 유지된다(904). 그러나, 두 카운터 값 모두가 대응하는 제2 미리 결정된 임계값(예를 들어, 대응하는 미리 결정된 임계값의 ½) 밑으로 떨어지면(920), 마지막에서 두 번째 레벨 캐시 제어기는 프리페치 추론적 DRAM 판독 요청들을 다시 인에이블한다(902). 이 기술이 상태 902에서 처리 시스템을 시작하는 것으로 설명되었지만, 다른 실시 예들은 코어 요구 추론적 DRAM 판독 요청들이 인에이블되고 프리페치 추론적 DRAM 판독 요청들이 디스에이블된 상태 904에서, 또는 코어 요구 추론적 DRAM 판독 요청들이 디스에이블되고 프리페치 추론적 DRAM 판독 요청들이 디스에이블된 상태 906에서 처리 시스템 동작을 시작한다.
프리페처 기반 추론적 DRAM 판독 요청 기술의 적어도 일 실시 예에서, 마지막에서 두 번째 레벨 캐시 제어기는 조건들 912가 참인 경우, 프리페치들에 대한 추론적 DRAM 판독 요청들을 디스에이블한 후, 그러나 상태 906으로 전환되기 전, 상태 904에서 트래픽 임계치 및 정확도 임계치를 강화한다. 반대로, 마지막에서 두 번째 레벨 캐시 제어기는 조건들 920이 충족되지만, 프리페치들에 대한 추론적 DRAM 판독 요청들을 인에이블하기 전 상태 904에서 트래픽 임계치 및 정확도 임계치를 완화한다. 프리페처 기반 추론적 DRAM 판독 요청 기술의 적어도 일 실시 예에서, 클러스터 인터커넥트(240)로부터의 클러스터 레벨 피드백은 마지막에서 두 번째 레벨 캐시 제어기가 임계치들을 더 엄격하게 조정하게 하고 개별 코어들은 임계치들을 더 빨리 위반할 수 있어, 클러스터의 처리 코어들의 마지막에서 두 번재 레벨 캐시 제어기가 필요에 따라, 코어당 프리페치 추론적 DRAM 판독 요청들을 억제하게 한다. 프리페처 기반 추론적 DRAM 판독 요청 기술의 다른 실시 예들에서, 클러스터 레벨 피드백은 클러스터의 모든 처리 코어가 프리페치 추론적 레벨 DRAM 판독 요청들 및/또는 코어 요구 추론적 레벨 DRAM 판독 요청들을 동시에 디스에이블하게 한다.
프리페처 기반 추론적 DRAM 판독 요청 기술의 적어도 일 실시 예에서, 추론적 DRAM 판독 요청 트래픽은 마지막에서 두 번째 레벨 캐시에서의 적중 실패에 기초하여 정량화되며, 이는 실제 및 미실현의 추론적 DRAM 판독 요청들의 수를 포함하고 추론적 DRAM 판독 요청 임계값과 비교된다. 미실현의 추론적 DRAM 판독 요청들은 추론적 DRAM 판독 요청들이 마지막에서 두 번째 레벨 캐시 제어기에 의해 인에이블된다면 메모리 시스템에 발행되었을 추론적 DRAM 판독 요청들이다. 적어도 일 실시 예에서, 정확도는 레벨 3 캐시(즉, 마지막 레벨 캐시)에서의 적중 카운트에 기초하여 정량화되고 그 카운트는 레벨 3 캐시 적중 미리 결정된 임계값과 비교된다.
선택적 기술은 메모리 경합을 감소시키고 중요한 코어 요구 판독 요청들의 속도를 높임으로써 성능을 상당히 개선시킬 수 있다. 선택적 기술은 상술된 정책들과 비교하여 시스템이 임의의 추론적 DRAM 판독 요청들을 발행하지 않는 기간을 감소시킨다. 프리페치 추론적 DRAM 판독 요청들을 먼저 억제함으로써, 그것들이 해당 데이터의 코어 요구에 앞서 이미 발행되고 있기 때문에, 잠재적으로 유해한 추론적 DRAM 판독 요청들에서 유용한 추론적 DRAM 판독 요청들을 필터링한다. 결과적으로, 마지막에서 두 번째 레벨 캐시는 코어 요구 추론적 DRAM 판독 요청들만 발행함에 따라, 불필요한 메모리 경합을 감소시켜 사이클당 명령들을 개선한다.
상술된 프리페처 기반 추론적 DRAM 판독 요청 기술의 실시 예들에서, 추론적 DRAM 판독 요청 트래픽은 추론적 DRAM 판독 요청들의 카운트로 표시되고 추론적 DRAM 판독 요청 임계값과 비교되며 추론적 DRAM 판독 요청 정확도는 레벨 3 캐시(즉, 마지막 레벨 캐시)에서의 적중 카운트를 사용하여 정량화되고 그 카운트는 레벨 3 캐시 적중 미리 결정된 임계값과 비교된다. 그러나, 추론적 DRAM 판독 요청 트래픽 및 추론적 DRAM 판독 요청 정확도의 다른 지표들이 사용될 수도 있다. 예를 들어, 다른 실시 예들은 버퍼에서 추론적 요청들을 추적하고 정확도에 마지막 레벨 캐시에서의 대응하는 적중률을 사용한다.
여기에 제시된 본 발명에 대한 설명은 예시적인 것이고 본 발명의 범위를 다음 청구범위에 제시된 것으로 제한하도록 의도되지 않는다. 예를 들어, 본 발명은 메모리 시스템이 3 레벨의 캐시 및 메인 메모리를 포함하는 일 실시예에서 설명되었지만, 해당 기술분야에서의 통상의 기술자는 여기서의 교시 내용이 다른 계층들을 갖는 메모리 시스템들로 이용될 수 있다는 것을 이해할 것이다. 또한, 본 발명이 메인 메모리(114)가 DRAM인 일 실시 예에서 설명되었지만, 해당 기술분야에서의 통상의 기술자는 여기서의 교시 내용이 다른 메모리 유형들(예를 들어, SRAM, 상 변화 메모리, 멤리스터 또는 다른 메모리 유형)을 포함하는 메인 메모리로 이용될 수 있다는 것을 이해할 것이다. 이하의 청구범위에 제시된 바와 같은 본 발명의 범위에서 벗어나지 않고, 여기에 개시된 설명에 기초하여 여기에 개시된 실시예들의 변경들 및 변형들이 이루어질 수 있다.

Claims (17)

  1. 메모리 시스템의 메모리 액세스 레이턴시를 감소시키기 위한 방법으로서,
    마지막에서 두 번째 레벨 캐시로부터 메인 메모리로의 추론적 메모리 판독 요청들의 요청률을 모니터링하는 단계로서, 상기 추론적 메모리 판독 요청들은 상기 마지막에서 두 번째 레벨 캐시에서 적중 실패한 데이터 판독 요청들에 대응하며, 상기 추론적 메모리 판독 요청들 각각은 코어 요구 추론적 메모리 판독 요청 또는 프리페치 추론적 메모리 판독 요청이고, 상기 데이터 판독 요청들 각각은 코어 요구 데이터 판독 요청 또는 프리페치 데이터 판독 요청인, 추론적 메모리 판독 요청들의 요청률을 모니터링하는 단계;
    상기 데이터 판독 요청들에 의해 요청되는 데이터에 대한 마지막 레벨 캐시의 탐색들의 적중률을 모니터링하는 단계로서, 상기 추론적 메모리 판독 요청들 각각은 대응하는 데이터에 대한 상기 마지막 레벨 캐시의 탐색과 병렬로 발행되는, 상기 적중률을 모니터링하는 단계;
    상기 요청률 및 상기 적중률에 기초하여 대응하는 코어 요구 데이터 판독 요청의 데이터에 대한 상기 마지막 레벨 캐시의 탐색과 병렬로 상기 메인 메모리로의 코어 요구 추론적 메모리 판독 요청들을 선택적으로 인에이블하는 단계; 및
    상기 요청률 및 상기 적중률에 기초하여 대응하는 프리페치 데이터 판독 요청의 데이터에 대한 상기 마지막 레벨 캐시의 탐색과 병렬로 상기 메인 메모리로의 프리페치 추론적 메모리 판독 요청들을 선택적으로 인에이블하는 단계를 포함하는, 방법.
  2. 청구항 1에 있어서,
    상기 코어 요구 추론적 메모리 판독 요청들이 인에이블되고 그리고 상기 프리페치 추론적 메모리 판독 요청들이 인에이블되며,
    상기 요청률이 미리 결정된 요청률 임계값보다 크거나 상기 적중률이 미리 결정된 적중률 임계값보다 큰 것에 응답하여, 상기 코어 요구 추론적 메모리 판독 요청들을 선택적으로 인에이블하는 단계는 상기 코어 요구 추론적 메모리 판독 요청들을 인에이블하는 단계를 포함하며, 상기 프리페치 추론적 메모리 판독 요청들을 선택적으로 인에이블하는 단계는 상기 프리페치 추론적 메모리 판독 요청들을 디스에이블하는 단계를 포함하는, 방법.
  3. 청구항 2에 있어서,
    상기 코어 요구 추론적 메모리 판독 요청들이 인에이블되고 그리고 상기 프리페치 추론적 메모리 판독 요청들이 디스에이블되며,
    상기 요청률이 제2 미리 결정된 요청률 임계값보다 작은 것, 그리고 상기 적중률이 제2 미리 결정된 적중률 임계값보다 작은 것에 응답하여, 상기 코어 요구 추론적 메모리 판독 요청들을 선택적으로 인에이블하는 단계는 상기 코어 요구 추론적 메모리 판독 요청들을 인에이블하는 단계를 포함하며, 상기 프리페치 추론적 메모리 판독 요청들을 선택적으로 인에이블하는 단계는 상기 프리페치 추론적 메모리 판독 요청들을 인에에이블하는 단계를 포함하고,
    상기 제2 미리 결정된 요청률 임계값은 상기 미리 결정된 요청률 임계값보다 작고 상기 제2 미리 결정된 적중률 임계값은 상기 미리 결정된 적중률 임계값보다 작은, 방법.
  4. 청구항 1에 있어서,
    상기 코어 요구 추론적 메모리 판독 요청들이 인에이블되고 그리고 상기 프리페치 추론적 메모리 판독 요청들이 디스에이블되며,
    상기 요청률이 미리 결정된 요청률 임계값보다 크거나 상기 적중률이 미리 결정된 적중률 임계값보다 큰 것에 응답하여, 상기 코어 요구 추론적 메모리 판독 요청들을 선택적으로 인에이블하는 단계는 상기 코어 요구 추론적 메모리 판독 요청들을 디스에이블하는 단계를 포함하고 상기 프리페치 추론적 메모리 판독 요청들을 선택적으로 인에이블하는 단계는 상기 프리페치 추론적 메모리 판독 요청들을 디스에이블하는 단계를 포함하는, 방법.
  5. 청구항 4에 있어서,
    상기 코어 요구 추론적 메모리 판독 요청들이 디스에이블되고 그리고 상기 프리페치 추론적 메모리 판독 요청들이 디스에이블되며,
    상기 요청률이 제2 미리 결정된 요청률 임계값보다 작은 것, 그리고 상기 적중률이 제2 미리 결정된 적중률 임계값보다 작은 것에 응답하여, 상기 코어 요구 추론적 메모리 판독 요청들을 선택적으로 인에이블하는 단계는 상기 코어 요구 추론적 메모리 판독 요청들을 인에이블하는 단계를 포함하며, 상기 프리페치 추론적 메모리 판독 요청들을 선택적으로 인에이블하는 단계는 상기 프리페치 추론적 메모리 판독 요청들을 디스에이블하는 단계를 포함하고,
    상기 제2 미리 결정된 요청률 임계값은 상기 미리 결정된 요청률 임계값보다 작고 상기 제2 미리 결정된 적중률 임계값은 상기 미리 결정된 적중률 임계값보다 작은, 방법.
  6. 청구항 1에 있어서,
    상기 코어 요구 추론적 메모리 판독 요청들이 인에이블되고 그리고 상기 프리페치 추론적 메모리 판독 요청들이 인에이블되며,
    상기 요청률이 미리 결정된 요청률 임계값보다 작은 것 그리고 상기 적중률이 미리 결정된 적중률 임계값보다 작은 것에 응답하여, 상기 코어 요구 추론적 메모리 판독 요청들을 선택적으로 인에이블하는 단계는 상기 코어 요구 추론적 메모리 판독 요청들을 인에이블하는 단계를 포함하며, 상기 프리페치 추론적 메모리 판독 요청들을 선택적으로 인에이블하는 단계는 상기 프리페치 추론적 메모리 판독 요청들을 인에에이블하는 단계를 포함하는, 방법.
  7. 청구항 1에 있어서,
    상기 코어 요구 추론적 메모리 판독 요청들이 인에이블되고 그리고 상기 프리페치 추론적 메모리 판독 요청들이 디스에이블되며,
    상기 요청률이 미리 결정된 요청률 임계값보다 작은 것 그리고 상기 적중률이 미리 결정된 적중률 임계값보다 작은 것에 응답하여, 상기 코어 요구 추론적 메모리 판독 요청들을 선택적으로 인에이블하는 단계는 상기 코어 요구 추론적 메모리 판독 요청들을 인에이블하는 단계를 포함하며, 상기 프리페치 추론적 메모리 판독 요청들을 선택적으로 인에이블하는 단계는 상기 프리페치 추론적 메모리 판독 요청들을 디스에이블하는 단계를 포함하는, 방법.
  8. 청구항 1에 있어서,
    상기 코어 요구 추론적 메모리 판독 요청들이 디스에이블되고 그리고 상기 프리페치 추론적 메모리 판독 요청들이 디스에이블되며,
    상기 요청률이 미리 결정된 요청률 임계값보다 작은 것 그리고 상기 적중률이 미리 결정된 적중률 임계값보다 작은 것에 응답하여, 상기 코어 요구 추론적 메모리 판독 요청들을 선택적으로 인에이블하는 단계는 상기 코어 요구 추론적 메모리 판독 요청들을 디스에이블하는 단계를 포함하고 상기 프리페치 추론적 메모리 판독 요청들을 선택적으로 인에이블하는 단계는 상기 프리페치 추론적 메모리 판독 요청들을 디스에이블하는 단계를 포함하는, 방법.
  9. 청구항 1에 있어서,
    상기 메인 메모리에 결합되는 복수의 마지막에서 두 번째 레벨 캐시에 대한 클러스터 레벨 요청률을 모니터링하는 단계; 및
    상기 복수의 마지막에서 두 번째 레벨 캐시에서 적중 실패한 데이터 판독 요청들에 의해 요청된 데이터에 대한 공유 마지막 레벨 캐시의 탐색의 클러스터 레벨 적중률을 모니터링하는 단계를 더 포함하며,
    상기 코어 요구 추론적 메모리 판독 요청들을 선택적으로 인에이블하는 단계는 또한 상기 클러스터 레벨 요청률 및 상기 클러스터 레벨 적중률에 기초하고,
    상기 프리페치 추론적 메모리 판독 요청들을 선택적으로 인에이블하는 단계는 또한 상기 클러스터 레벨 요청률 및 상기 클러스터 레벨 적중률에 기초하는, 방법.
  10. 청구항 9에 있어서,
    각각, 상기 클러스터 레벨 요청률 또는 상기 클러스터 레벨 적중률에 기초하여 미리 결정된 요청률 임계값 또는 미리 결정된 적중률 임계값을 조정하는 단계를 더 포함하며,
    상기 코어 요구 추론적 메모리 판독 요청들을 선택적으로 인에이블하는 단계는 또한 상기 미리 결정된 요청률 임계값 및 상기 미리 결정된 적중률 임계값에 기초하고,
    상기 프리페치 추론적 메모리 판독 요청들을 선택적으로 인에이블하는 단계는 또한 상기 미리 결정된 요청률 임계값 및 상기 미리 결정된 적중률 임계값에 기초하는, 방법.
  11. 청구항 1에 있어서, 상기 추론적 메모리 판독 요청들 각각은 상기 탐색과 병렬로 발행되는 실제 추론적 메모리 판독 요청 또는 미실현의 추론적 메모리 판독 요청인, 방법.
  12. 메모리 시스템으로서,
    마지막에서 두 번째 레벨 캐시;
    마지막 레벨 캐시;
    메인 메모리;
    상기 마지막에서 두 번째 레벨 캐시로부터 상기 메인 메모리로의 추론적 메모리 판독 요청들의 요청률을 저장하도록 구성된 제1 카운터로서, 상기 추론적 메모리 판독 요청들 각각은 대응하는 데이터 판독 요청의 상기 마지막에서 두 번째 레벨 캐시에서의 적중 실패에 응답하는, 상기 제1 카운터;
    상기 마지막에서 두 번째 레벨 캐시에서 적중 실패한 데이터 판독 요청들의 데이터에 대한 상기 마지막 레벨 캐시의 탐색들의 적중률의 표시자를 저장하도록 구성된 제2 카운터, 및
    상기 마지막에서 두 번째 레벨 캐시와 연관된 제어기로서:
    상기 요청률, 상기 적중률, 미리 결정된 요청률 임계값 및 미리 결정된 적중률 임계값에 기초하여 상기 탐색들과 병렬로 상기 메인 메모리로의 코어 요구 추론적 메모리 판독 요청들을 선택적으로 인에이블하도록; 그리고
    상기 요청률, 상기 적중률, 상기 미리 결정된 요청률 임계값 및 상기 미리 결정된 적중률 임계값에 기초하여 상기 탐색들과 병렬로 상기 메인 메모리로의 프리페치 추론적 메모리 판독 요청들을 선택적으로 인에이블하도록 구성된, 상기 제어기를 포함하며,
    상기 추론적 메모리 판독 요청들 각각은 코어 요구 추론적 메모리 판독 요청 또는 프리페치 추론적 메모리 판독 요청인, 메모리 시스템.
  13. 청구항 12에 있어서, 상기 제어기는 상기 마지막에서 두 번째 레벨 캐시에서의 각 적중 실패에 응답하여 상기 제1 카운터를 증분시키고, 상기 마지막 레벨 캐시에서의 각 적중에 응답하여 상기 제2 카운터를 증분시키며, 상기 제1 카운터 및 상기 제2 카운터를 주기적으로 리셋시키도록 구성된, 메모리 시스템.
  14. 청구항 12에 있어서,
    코어 요구 데이터 판독 요청들에 대한 상기 코어 요구 추론적 메모리 판독 요청들을 선택적으로 인에이블하는 것은 또한 제2 미리 결정된 요청률 임계값 및 제2 미리 결정된 적중률 임계값에 기초하고,
    프리페치 추론적 메모리 판독 요청들을 선택적으로 인에이블하는 것은 또한 상기 제2 미리 결정된 요청률 임계값 및 상기 제2 미리 결정된 적중률 임계값에 기초하는, 메모리 시스템.
  15. 청구항 12에 있어서,
    상기 마지막 레벨 캐시와 상기 메인 메모리 사이에 결합되는 클러스터 인터커넥트 구조를 더 포함하며, 상기 클러스터 인터커넥트 구조는:
    대응하는 마지막에서 두 번째 레벨 캐시에서 적중 실패한 데이터 판독 요청의 요청된 데이터에 대한 상기 마지막 레벨 캐시의 탐색과 병렬로 코어들의 클러스터에서의 임의의 마지막에서 두 번째 레벨 캐시로부터 상기 메인 메모리로의 추론적 메모리 판독 요청들의 클러스터 레벨 요청률을 저장하도록 구성된 제3 카운터로서, 상기 마지막 레벨 캐시는 상기 코어들의 클러스터에서의 상기 코어들에 의해 공유되는, 상기 제3 카운터; 그리고
    대응하는 마지막에서 두 번째 레벨 캐시에서 적중 실패한 데이터 판독 요청들에 대한 상기 마지막 레벨 캐시에 추론적 메모리 판독 요청들의 클러스터 레벨 적중률의 표시자를 저장하도록 구성된 제4 카운터를 포함하는, 메모리 시스템.
  16. 청구항 12에 있어서,
    상기 제1 카운터 및 상기 제2 카운터는 코어들의 클러스터의 코어 상에서 실행되는 제1 스레드와 연관되고,
    상기 메모리 시스템은:
    상기 코어 상에서 실행되는 제2 스레드와 연관되고 상기 마지막에서 두 번째 레벨 캐시로부터 상기 메인 메모리로의 상기 제2 스레드에 대한 추론적 메모리 판독 요청들의 요청률을 저장하도록 구성된 제3 카운터로서, 상기 제2 스레드에 대한 상기 추론적 메모리 판독 요청들 각각은 상기 제2 스레드의 대응하는 데이터 판독 요청의 상기 마지막에서 두 번째 레벨 캐시에서의 적중 실패에 응답하는, 상기 제3 카운터; 및
    상기 코어 상에서 실행되는 제2 스레드와 연관되고 상기 마지막에서 두 번째 레벨 캐시에서 적중 실패한 상기 제2 스레드의 데이터 판독 요청들에 대한 상기 마지막 레벨 캐시의 탐색들의 적중률의 표시자를 저장하도록 구성된 제4 카운터를 더 포함하는, 메모리 시스템.
  17. 청구항 12에 있어서,
    상기 추론적 메모리 판독 요청들은 상기 마지막 레벨 캐시의 상기 탐색들과 병렬로 발행된 실제 추론적 메모리 판독 요청들 및 미실현의 추론적 메모리 판독 요청들을 포함하고,
    상기 적중률은 상기 탐색들의 상기 마지막 레벨 캐시에서의 적중들에 기초하는, 메모리 시스템.
KR1020207029359A 2018-03-20 2019-02-27 프리페처 기반 추론적 동적 랜덤 액세스 메모리 판독 요청 기술 KR102231190B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/925,859 US10613983B2 (en) 2018-03-20 2018-03-20 Prefetcher based speculative dynamic random-access memory read request technique
US15/925,859 2018-03-20
PCT/US2019/019766 WO2019182733A1 (en) 2018-03-20 2019-02-27 Prefetcher based speculative dynamic random-access memory read request technique

Publications (2)

Publication Number Publication Date
KR20200123844A KR20200123844A (ko) 2020-10-30
KR102231190B1 true KR102231190B1 (ko) 2021-03-23

Family

ID=67985065

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207029359A KR102231190B1 (ko) 2018-03-20 2019-02-27 프리페처 기반 추론적 동적 랜덤 액세스 메모리 판독 요청 기술

Country Status (6)

Country Link
US (1) US10613983B2 (ko)
EP (1) EP3769226B1 (ko)
JP (1) JP6855642B1 (ko)
KR (1) KR102231190B1 (ko)
CN (1) CN111837110B (ko)
WO (1) WO2019182733A1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10534540B2 (en) * 2016-06-06 2020-01-14 Micron Technology, Inc. Memory protocol
US10657057B2 (en) * 2018-04-04 2020-05-19 Nxp B.V. Secure speculative instruction execution in a data processing system
CN110830535B (zh) * 2018-08-10 2021-03-02 网宿科技股份有限公司 一种超热文件的处理方法、负载均衡设备及下载服务器
US10909039B2 (en) * 2019-03-15 2021-02-02 Intel Corporation Data prefetching for graphics data processing
KR20200119059A (ko) 2019-04-09 2020-10-19 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
KR20210011216A (ko) 2019-07-22 2021-02-01 에스케이하이닉스 주식회사 메모리 시스템의 메타 데이터 관리 방법 및 장치
KR20210011201A (ko) 2019-07-22 2021-02-01 에스케이하이닉스 주식회사 메모리 시스템 및 그의 온도 조절 방법
KR20200132047A (ko) * 2019-05-15 2020-11-25 에스케이하이닉스 주식회사 메모리 시스템에서 맵 데이터를 전송하는 방법 및 장치
US11237973B2 (en) 2019-04-09 2022-02-01 SK Hynix Inc. Memory system for utilizing a memory included in an external device
KR20210011176A (ko) 2019-07-22 2021-02-01 에스케이하이닉스 주식회사 메모리 시스템의 액세스 동작 방법 및 장치
KR20210014338A (ko) 2019-07-30 2021-02-09 에스케이하이닉스 주식회사 데이터 저장 장치, 데이터 처리 시스템 및 데이터 저장 장치의 동작 방법
US11409643B2 (en) 2019-11-06 2022-08-09 Honeywell International Inc Systems and methods for simulating worst-case contention to determine worst-case execution time of applications executed on a processor
CN112231243B (zh) * 2020-10-29 2023-04-07 海光信息技术股份有限公司 一种数据处理方法、处理器及电子设备
CN112540933A (zh) * 2020-11-26 2021-03-23 华云数据控股集团有限公司 缓存读写方法、装置及电子设备
KR20220117747A (ko) * 2021-02-17 2022-08-24 삼성전자주식회사 데이터 프리페치 제어 기능을 갖는 스토리지 컨트롤러, 스토리지 컨트롤러의 동작 방법, 및 스토리지 장치의 동작 방법
US20240111420A1 (en) * 2022-09-29 2024-04-04 Advanced Micro Devices, Inc. Speculative dram request enabling and disabling

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090024835A1 (en) 2007-07-19 2009-01-22 Fertig Michael K Speculative memory prefetch
US20090106498A1 (en) 2007-10-23 2009-04-23 Kevin Michael Lepak Coherent dram prefetcher
US20090150622A1 (en) 2007-12-10 2009-06-11 International Business Machines Corporation System and method for handling data requests
US20110078380A1 (en) 2009-09-29 2011-03-31 Alexander Gendler Multi-level cache prefetch
US20140089592A1 (en) 2012-09-27 2014-03-27 Apple Inc. System cache with speculative read engine
US20150089157A1 (en) 2007-09-28 2015-03-26 Arm Finance Overseas Limited Speculative read in a cache coherent microprocessor
US20180004670A1 (en) 2016-06-29 2018-01-04 Oracle International Corporation Prefetch bandwidth throttling by dynamically adjusting miss buffer prefetch-dropping thresholds
US9886385B1 (en) 2016-08-25 2018-02-06 Apple Inc. Content-directed prefetch circuit with quality filtering
US20190079871A1 (en) 2017-09-12 2019-03-14 International Business Machines Corporation Controlling a rate of prefetching based on bus bandwidth
US20190138449A1 (en) 2017-11-06 2019-05-09 Samsung Electronics Co., Ltd. Coordinated cache management policy for an exclusive cache hierarchy

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6622222B2 (en) 2001-04-26 2003-09-16 International Business Machines Corporation Sequencing data on a shared data bus via a memory buffer to prevent data overlap during multiple memory read operations
US7051195B2 (en) 2001-10-26 2006-05-23 Hewlett-Packard Development Company, L.P. Method of optimization of CPU and chipset performance by support of optional reads by CPU and chipset
US7890738B2 (en) 2005-01-20 2011-02-15 International Business Machines Corporation Method and logical apparatus for managing processing system resource use for speculative execution
US20080147977A1 (en) 2006-07-28 2008-06-19 International Business Machines Corporation Design structure for autonomic mode switching for l2 cache speculative accesses based on l1 cache hit rate
US20080028150A1 (en) 2006-07-28 2008-01-31 Farnaz Toussi Autonomic Mode Switching for L2 Cache Speculative Accesses Based on L1 Cache Hit Rate
US7917702B2 (en) * 2007-07-10 2011-03-29 Qualcomm Incorporated Data prefetch throttle
US9053031B2 (en) 2007-12-10 2015-06-09 International Business Machines Corporation System and method for handling data access
US8032713B2 (en) 2007-12-10 2011-10-04 International Business Machines Corporation Structure for handling data access
US7937533B2 (en) 2007-12-10 2011-05-03 International Business Machines Corporation Structure for handling data requests
US8443151B2 (en) * 2009-11-09 2013-05-14 Intel Corporation Prefetch optimization in shared resource multi-core systems
US8838906B2 (en) 2010-01-08 2014-09-16 International Business Machines Corporation Evict on write, a management strategy for a prefetch unit and/or first level cache in a multiprocessor system with speculative execution
US9009414B2 (en) 2010-09-21 2015-04-14 Texas Instruments Incorporated Prefetch address hit prediction to reduce memory access latency
US9836304B2 (en) 2010-11-15 2017-12-05 Advanced Micro Devices, Inc. Cumulative confidence fetch throttling
WO2013119195A1 (en) * 2012-02-06 2013-08-15 Empire Technology Development Llc Multicore computer system with cache use based adaptive scheduling
US9098418B2 (en) * 2012-03-20 2015-08-04 Apple Inc. Coordinated prefetching based on training in hierarchically cached processors
US9507596B2 (en) 2014-08-28 2016-11-29 Intel Corporation Instruction and logic for prefetcher throttling based on counts of memory accesses to data sources
US10496410B2 (en) 2014-12-23 2019-12-03 Intel Corporation Instruction and logic for suppression of hardware prefetchers
US10180905B1 (en) * 2016-04-07 2019-01-15 Apple Inc. Unified prefetch circuit for multi-level caches
US10430349B2 (en) * 2016-06-13 2019-10-01 Advanced Micro Devices, Inc. Scaled set dueling for cache replacement policies

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090024835A1 (en) 2007-07-19 2009-01-22 Fertig Michael K Speculative memory prefetch
US20150089157A1 (en) 2007-09-28 2015-03-26 Arm Finance Overseas Limited Speculative read in a cache coherent microprocessor
US20090106498A1 (en) 2007-10-23 2009-04-23 Kevin Michael Lepak Coherent dram prefetcher
US20090150622A1 (en) 2007-12-10 2009-06-11 International Business Machines Corporation System and method for handling data requests
US20110078380A1 (en) 2009-09-29 2011-03-31 Alexander Gendler Multi-level cache prefetch
US20140089592A1 (en) 2012-09-27 2014-03-27 Apple Inc. System cache with speculative read engine
US20180004670A1 (en) 2016-06-29 2018-01-04 Oracle International Corporation Prefetch bandwidth throttling by dynamically adjusting miss buffer prefetch-dropping thresholds
US9886385B1 (en) 2016-08-25 2018-02-06 Apple Inc. Content-directed prefetch circuit with quality filtering
US20190079871A1 (en) 2017-09-12 2019-03-14 International Business Machines Corporation Controlling a rate of prefetching based on bus bandwidth
US20190138449A1 (en) 2017-11-06 2019-05-09 Samsung Electronics Co., Ltd. Coordinated cache management policy for an exclusive cache hierarchy

Also Published As

Publication number Publication date
EP3769226A4 (en) 2021-12-22
US20190294546A1 (en) 2019-09-26
JP6855642B1 (ja) 2021-04-07
US10613983B2 (en) 2020-04-07
EP3769226A1 (en) 2021-01-27
JP2021510886A (ja) 2021-04-30
WO2019182733A1 (en) 2019-09-26
CN111837110B (zh) 2022-04-05
KR20200123844A (ko) 2020-10-30
EP3769226B1 (en) 2023-01-11
CN111837110A (zh) 2020-10-27

Similar Documents

Publication Publication Date Title
KR102231190B1 (ko) 프리페처 기반 추론적 동적 랜덤 액세스 메모리 판독 요청 기술
US11675703B2 (en) Memory request throttling to constrain memory bandwidth utilization
US10013326B2 (en) Propagating a prefetching profile bit from a prefetch queue to a data cache to indicate that a line was prefetched in response to an instruction within a code region
US9836407B2 (en) Method for using service level objectives to dynamically allocate cache resources among competing workloads
US7246205B2 (en) Software controlled dynamic push cache
US9772958B2 (en) Methods and apparatus to control generation of memory access requests
US9390010B2 (en) Cache management
US9658959B2 (en) Cache resource manager
US20070239940A1 (en) Adaptive prefetching
CN103235764B (zh) 线程感知多核数据预取自调方法
CN106372007B (zh) 缓存使用率估计
GB2513043A (en) Improved control of pre-fetch traffic
US8769201B2 (en) Technique for controlling computing resources
US20210124615A1 (en) Thread scheduling based on performance metric information
Xiang et al. A model for application slowdown estimation in on-chip networks and its use for improving system fairness and performance
US10841394B2 (en) Server for caching session information set and method of controlling cache of session information set
CN115203076B (zh) 数据结构优化的专用存储器缓存
US10754773B2 (en) Selection of variable memory-access size
CN115715390A (zh) 用于自适应混合硬件预取的系统和方法
WO2023125248A1 (zh) 内存带宽的控制方法、装置、电子设备和存储介质
US11886881B2 (en) Decoupled access-execute processing and prefetching control
US20240095168A1 (en) Dynamic Cache Resource Allocation for Quality of Service and System Power Reduction
CN116662219A (zh) 从存储装置中动态预取数据

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant