KR101095217B1 - 데이터 선인출 조절 - Google Patents

데이터 선인출 조절 Download PDF

Info

Publication number
KR101095217B1
KR101095217B1 KR1020107000480A KR20107000480A KR101095217B1 KR 101095217 B1 KR101095217 B1 KR 101095217B1 KR 1020107000480 A KR1020107000480 A KR 1020107000480A KR 20107000480 A KR20107000480 A KR 20107000480A KR 101095217 B1 KR101095217 B1 KR 101095217B1
Authority
KR
South Korea
Prior art keywords
data
prefetch
cache
data cache
hits
Prior art date
Application number
KR1020107000480A
Other languages
English (en)
Other versions
KR20100022518A (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 KR20100022518A publication Critical patent/KR20100022518A/ko
Application granted granted Critical
Publication of KR101095217B1 publication Critical patent/KR101095217B1/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

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

데이터에 대한 선인출 히트(prefetch hit) 및 전체 히트(overall hit)를 추적함으로써 데이터 캐시에 대한 데이터 선인출을 제어하는 시스템 및 방법이 개시된다. 데이터 캐시에 대한 데이터 선인출은 선인출 히트를 추적하는 것에 기초하여 디스에이블(disable)되고, 전체 히트를 추적하는 것에 기초하여 이네이블(enable)된다. 예를 들어, 하나 이상의 실시예에서, 캐시 제어기는 선인출된 데이터 라인을 포함하는 데이터 캐시에 대한 히트의 퍼센트를 반영하는 선인출 히트 레이트를 추적하고, 선인출 히트 레이트가 정의 임계값 아래로 떨어지면 데이터 선인출을 디스에이블하도록 구성된다. 캐시 제어기는 또한 (데이터 캐시 미스에 대한) 데이터 캐시 히트의 전체 퍼센트를 반영하는 전체 히트 레이트를 추적하고, 전체 히트 레이트가 정의 임계값 아래로 떨어지면 데이터 선인출을 이네이블한다.

Description

데이터 선인출 조절{DATA PREFETCH THROTTLE}
본 발명은 일반적으로 프로세서 분야에 관한 것으로, 구체적으로는 프로세서에서 데이터 선인출(data prefetching)을 제어하기 위한 시스템 및 방법에 관한 것이다.
프로세서는 캐싱(caching)을 이용하여 메모리와 연관된 프로세싱 병목 현상(processing bottleneck)을 완화한다. 명령어 캐싱(instruction caching)은, 예컨대 고속 액세스 메모리를 이용하여, 메인 메모리 또는 고레벨의 캐시 메모리와 같은 저속 메모리에 저장된 대용량의 프로그램 명령어 세트 중 선택된 일부를 보유함으로써 동작한다.
따라서, 캐시에 위치하는 명령어는 저속 메모리로 액세스하는데 소요되는 것보다 적은 지연(delay)으로 액세스되며, 프로세서는 일반적으로 소정 형태의 하드웨어-기반 명령어 선인출을 이용하여 명령어 캐시가 저속 메모리로부터 필요한 명령어 라인으로 채워진 상태를 유지한다. 선인출은 명령어 라인 내의 명령어가 필요하기 전에 그 명령어 라인을 저속 메모리로부터 명령어 캐시로 위치시킨다.
하드웨어-기반 선인출은 또한 데이터에도 적용될 수 있다. 그러나 성공적으로 데이터를 선인출하는 것은 성공적으로 명령어를 선인출하는 것보다 더 어려울 수 있다. 예를 들어, 데이터 값은 프로그램 명령어보다 메모리에 더욱 산재 또는 분산되어 있을 수 있어 예측-기반 선인출을 보다 어렵게 만들 수 있다. 이와 같이, 데이터 선인출은 성능을 향상시키거나 향상시키지 못할 수도 있고, 데이터 선인출의 성능은 프로세서가 동작하는 동안 현저히 변화할 수 있다.
따라서, 예를 들어 선인출 동작을 "필터(filter)"하는 것이 알려져 있다. 선인출 필터링(prefetch filtering)은 "오염(pollution)" 회피 메커니즘을 의미하며, "오염(pollution)" 회피 메커니즘에서는, 데이터 캐시가 결코 사용되지 않는 선인출된 데이터 라인, 즉 선인출되지만 결국에는 액세스(히트)되기 전에 대체되는 데이터 라인을 포함할 때, 그 데이터 캐시는 오염된 것으로 간주한다. 이와 같이 선인출 필터링은, 계속적으로 데이터 선인출을 수행하지만, 필터링 부재시 수행될 수 있는 임의의 데이터 선인출을 선택적으로 건너뛴다는 것을 의미한다.
보다 구체적으로, 개별적인 데이터 선인출은 적용되는 필터링 기준에 따라 수행되거나 수행되지 않을 수 있다. 필터링 기준은, 예를 들어 소정 범위의 프로그램 실행 과정에서 나타난 선인출 성능 이력을 반영할 수 있다. 그러나 적절한 필터링을 판정하는 것은, 특히 필터링 없는 데이터 선인출에 비해 유의미한 성능 향상을 이끌어내기 위해 바람직하지 않은 하드웨어의 복잡성 또는 리소스의 소모가 필요할 수 있다.
하나 이상의 실시예에 따르면, 데이터 캐시에 대한 데이터 선인출을 제어하는 방법은, 데이터 캐시에 대한 선인출 히트를 추적하고, 선인출 히트를 추적한 것에 기초하여 데이터 캐시에 대한 데이터 선인출을 디스에이블(disable)하는 단계를 포함한다. 본 방법은 또한 데이터 캐시에 대한 전체 히트를 추적하고 전체 히트를 추적한 것에 기초하여 데이터 캐시에 대한 데이터 선인출을 이네이블(enable)하는 단계를 포함한다. 이러한 조건에서, 데이터 선인출을 디스에이블하는 단계는, 데이터 선인출이 이네이블되는지와 관계없이 필요에 따라 예컨대, 데이터 캐시 미스(miss)가 있는 경우, 데이터 라인이 여전히 데이터 캐시로 인출되더라도 데이터 캐시에 대한 모든 데이터 선인출을 디스에이블하는 단계를 포함한다.
본 명세서에서 교시된 적어도 하나의 실시예에서, 프로세서는 캐시 메모리와 캐시 제어기를 포함하는 데이터 캐시를 포함한다. 캐시 제어기는 데이터 캐시에 대한 선인출 히트를 추적한 것에 기초하여 데이터 캐시에 대한 데이터 선인출을 디스에이블하고, 데이터 캐시에 대한 전체 히트를 추적한 것에 기초하여 데이터 캐시에 대한 데이터 선인출을 이네이블한다. 적어도 하나의 실시예에서, 캐시 제어기는 선인출 히트 레이트를 추적함으로써 선인출 히트를 추적하고, 전체 히트 레이트(또는 동일하게 전체 미스 레이트)를 추적함으로써 전체 히트를 추적한다.
이상의 실시예들을 고려하면, 본 명세서에 교시된 데이터 선인출 제어는, 다른 장점도 있지만, 조건부 기준에 기초한 데이터 선인출의 성능 및 전력에서의 이점을 제공하고, 그와 동시에 단순하고도 효율적인 하드웨어의 구현할 수 있게 한다.
도 1은 프로세서의 일 실시예에 관한 기능 블록도.
도 2는 데이터 선인출 제어의 일 실시예에 관한 상태도.
도 3은 데이터 선인출을 제어하는데 유용한 카운팅 및 제어 회로의 일 실시예에 관한 기능 블록도.
도 4는 선인출된 데이터 라인을 표시하는 표시자(indicator)를 포함하는 데이터 캐시 메모리의 일 실시예에 관한 기능 블록도.
도 5는 데이터 캐시 내의 선인출된 데이터 라인을 표시하는 표시자의 또 다른 실시예에 관한 기능 블록도.
도 6 및 도 7은 데이터 선인출을 제어하기 위한 프로세싱 로직의 일 실시예에 관한 논리 흐름도.
비제한적인 예시로서, 도 1은 명령어 실행 파이프라인(instruction execution pipeline; 102), 상태/제어 레지스터(status/control register; 104) 및 데이터 캐시(data cache; 106)를 포함하는 프로세서(100)의 일 실시예를 도시하고, 데이터 캐시(106)는 캐시 제어기(108) 및 연관된 캐시 메모리(110)를 포함한다. 동작 중, 데이터 캐시(106)는 고-레벨 캐시(higher-level cache) 및/또는 메인 (시스템) 메모리를 포함할 수 있는 하나 이상의 고-레벨 메모리(higher-level memory; 112)로부터 데이터 라인을 캐싱한다. 적어도 일 실시예에서, 데이터 캐시(106)는 레벨-1("L1") 데이터 캐시를 포함한다.
바람직하게는, (데이터) 캐시 제어기(108)는 낮은 하드웨어 복잡도를 가지는 데이터 캐시(106)에서 구현되는 로직 제어 메커니즘(logical control mechanism)에 따라 데이터 캐시 선인출을 동적으로 이네이블(enable) 및 디스에이블(disable)하도록 구성된다. 도 2는 이러한 바람직한 선인출 제어의 일 실시예를 도시한 상태도이다.
도 2에 도시된 바와 같이, 상태(200)는 데이터 선인출이 이네이블된 데이터 캐시(106)의 동작 상태를 나타내고, 상태(202)는 선인출이 디스에이블된 데이터 캐시(106)의 동작 상태를 나타낸다. 바람직하게, 캐시 제어기(108)는, 개별 선인출을 스크리닝하거나 또는 필터링하기보다는, 상태(202)에서 동작 시 모든 선인출을 정지시킨다. 따라서, 도 2에 도시된 선인출 제어는 데이터 선인출을 위한 온/오프 스위치와 같이 동작한다.
하나 이상의 실시예에서, 캐시 제어기(108)는 "선인출 히트(prefetch hit)"추적 함수로 (선인출이 이네이블된) 상태(200)에서 (선인출 디스에이블된) 상태(202)로 이행한다. 또한, 캐시 제어기(108)는 "전체 히트(overall hit)" 추적 함수로 상태(202)에서 상태(200)로 재이행한다. 여기서, "선인출 히트"는 데이터 캐시(106)의 캐시 메모리(110)에 보유된 선인출된 데이터 라인에 대한 히트이고, "전체 히트"는 데이터 캐시(106)의 캐시 메모리(110)에 보유된 (선인출되거나 선인출되지 않은) 임의의 데이터 라인에 대한 히트이다. 이러한 의미에서, 선인출 히트는 선인출된 데이터 라인을 수반하는 데이터 캐시 히트의 퍼센트를 반영하고, 전체 히트는 캐시 히트의 전체 퍼센트를 반영한다. 동일하게, 캐시 제어기(108)는 캐시 미스(cache miss)를 추적한다. 예시로서, 데이터 캐시(106)에 대한 전체 히트 레이트(overall hit rate)가 90퍼센트일 경우, 전체 미스 레이트(overall miss rate)는 10퍼센트이다.
보다 구체적으로, 프로그램을 실행하는 동안 프로세서(100)는 우선 데이터 캐시(106)에 필요한 데이터를 검색한다. 데이터 캐시 히트(data cache hit)는 필요한 데이터가 데이터 캐시(106)에 위치하는 경우를 나타낸다. 반면, 데이터 캐시 미스(data cache miss)는 필요한 데이터가 데이터 캐시(106)에 위치하지 않는 경우를 나타낸다. 캐시 제어기(108)는 데이터 캐시 미스에 응답하여 데이터 인출(data fetch)을 수행하며, 이는 강제 인출(compulsory fetch)로도 지칭된다. 한편, 선인출이 이네이블된 것으로 가정하면, 캐시 제어기(108)는 하나 이상의 선인출 전략("정책(policy))에 따라 고-레벨 메모리(112)에서 데이터 캐시(106)의 캐시 메모리(110)로 데이터 라인을 선인출한다. 비제한적인 예시로서, 캐시 제어기(108)는 순차-기반(sequence-based) 및/또는 포인터-기반(pointer-based) 선인출 정책을 이용할 수 있다.
본 발명과 연관된 기술 분야의 당업자는, 임의의 경우, 데이터 캐시(106)가 선인출이 이네이블된 상태(상태(200))로 동작하는 것으로 가정하면, 캐시 메모리(110)에 포함된 데이터 라인이 선인출된 데이터 라인과 인출된(즉, 선인출되지 않은) 데이터 라인으로 혼합되어 있다는 것을 이해할 것이다. 따라서, 데이터 캐시(106)에 대한 개별 히트는 선인출된 데이터 라인 또는 선인출되지 않은 데이터 라인 중 하나를 포함하고, 선인출 히트를 추적함으로써 캐시 제어기(108)로 선인출 성능에 대한 정보(insight)가 제공된다. 간단히 말해, 선인출된 데이터 라인을 포함하는 데이터 캐시 히트의 수가 작다는 것은 데이터 선인출이 현재 프로그램 실행 조건에 도움이 되지 않는다는 것을 시사한다.
이러한 조건에서 선인출을 디스에이블하는 것은 선인출 오버헤드(메모리 버스 액세스 및 제어)를 제거하기 때문에 유리하다. 따라서 선인출의 종료(상태(200)에서 상태(202)로의 이행)는 프로세서 동작 전원 및 자원 로딩을 감소시킨다. 이 같은 조건을 위해 선인출을 턴오프(turn off)하는 것은, 데이터 캐시(106)가 사용되지 않을 데이터 라인으로 오염되는 것을 방지하는 또 다른 이점을 제공한다.
한편, 프로그램 실행 조건이 변화하여 선인출이 다시 필요하게 될 수 있다. 이를 위해, 캐시 제어기(108)는 상태(202)에서 동작하는 동안 데이터 캐시(106)에 대한 전체 히트를 추적하고, 예를 들어 데이터 캐시(106)에 대한 전체 히트가 너무 낮은 경우(동일하게는, 전체 미스가 너무 높을 경우) 선인출을 이네이블한다. 즉, 데이터 캐시(106)에 대한 전체 히트 레이트가 데이터 선인출이 턴오프되어 낮아지기 시작한 경우, 캐시 제어기(108)는 상태(200)로 재이행함으로써 선인출을 재개한다.
예시로서, 캐시 제어기(108)는 선인출 히트 레이트로서 선인출 히트를 추적하고, 전체 히트 레이트로서 전체 히트를 추적한다. 이러한 방식으로, 디스에이블 정의 임계값(defined disable threshold)이 선인출 디스에이블 판정을 위해 기본값(default) 또는 동적으로 계산된 값에서 설정될 수 있다. 유사하게, 이네이블 정의 임계값(defined enable threshold)이 선인출 이네이블 판정을 위해 기본값 또는 동적으로 계산된 값에서 설정될 수 있다. 비제한적인 예시로서, 캐시 제어기(108)는 선인출 히트 레이트가 2퍼센트 아래로 떨어질 경우 선인출을 턴오프(turn off)하도록 구성될 수 있고, 전체 히트 레이트가 99 퍼센트 아래로 떨어질 경우 선인출을 턴온(turn on)하도록 구성될 수 있다. 이러한 값은 당연히 예시적인 것이며, 임계값은 특정 프로세서의 특성 및 데이터 캐시의 크기에 따라, 그리고 선인출 오버헤드, 미스 페널티(miss penalty) 등과 같은 다른 고려 요소에 따라 조절되거나 또는 조정될 수 있다.
이용되는 특정 판정 임계값와는 관계없이, 도 3은 선인출 히트 및 전체 히트를 추적하기 위해 캐시 제어기(108)가 이용할 수 있는 추적 메커니즘(tracking mechanism)의 일 실시예를 도시한다. 보다 구체적으로, 도 3은 카운터 제어 회로(300), 제1 카운터(302), 및 제2 카운터(304)를 도시한다. 이들 회로들은 캐시 제어기(108)에 포함되거나 연관될 수 있다.
하나 이상의 실시예에서, 카운터 제어 회로(300)는 캐시 제어기(108)가 캐시 메모리(110) 내의 선인출된 데이터 라인에 대한 히트를 검출하는 것에 응답하여 제1 카운터(302)를 증가시키고, 캐시 제어기(108)가 캐시 메모리(110) 내의 선인출된 데이터 라인이 아닌 데이터 라인에 대한 히트를 검출하는 것에 응답하여 제1 카운터(302)를 감소시킨다. 이러한 방식으로, 제1 카운터(302)의 값은 데이터 캐시(106)의 선인출된 데이터 라인에 대한 히트 퍼센트를 반영한다. 이로써, 카운터 제어 회로(300) 또는 캐시 제어기(108) 내의 다른 회로 소자는 상태(202)로 이행할지를 판정하기 위한 기준으로서 제1 카운터(302)의 값을 디스에이블 정의 임계값과 비교할 수 있다.
또한, 카운터 제어 회로(300)는 데이터 캐시(106)에 대한 히트(모든 히트)에 대한 응답으로 제2 카운터(304)를 증가시키고, 데이터 캐시 미스에 대한 응답으로 제2 카운터(304)를 감소시킨다. 이러한 방식으로, 제2 카운터(304)의 값은 데이터 캐시에 대한 히트의 전체 퍼센트를 반영한다. 보다 구체적으로, 데이터 캐시 히트의 경우 카운트를 증가시키고, 데이터 캐시 미스의 경우 카운트를 감소시킴으로써, 제2 카운터(304)의 값은 데이터 캐시(106)에 대한 히트/미스 퍼센트를 반영한다. 이와 같이, 카운터 제어 회로(300) 또는 캐시 제어기(108) 내의 다른 회로 소자는 상태(200)로 이행할지를 판정하기 위한 기준으로서 제2 카운터(304)의 값을 이네이블 정의 임계값과 비교할 수 있다.
상술한 프로세싱은 개별 데이터 캐시 히트가 캐시 메모리(110) 내의 선인출된 데이터 라인에 대한 것인지를 검출하는 것을 포함한다. 도 4 및 도 5는 그러한 검출을 위해 제공되는 다른 실시예들을 도시한다. 양 도면에서, 캐시 제어기(108)가 캐시 메모리(110) 내의 어느 데이터 라인이 선인출되었는지를 표시하는 표시자를 저장하거나 또는 유지한다.
구체적으로, 도 4는 일 실시예를 도시하며, 여기서 캐시 메모리(110)는 캐시 메모리(110)에 보유된 각각의 데이터 라인에 대해, 메모리 주소 정보를 보유하기 위한 메모리 태그(400), 캐시된 데이터의 라인을 보유하기 위한 데이터 메모리(402) 및 데이터 라인의 상태를 선인출된 상태(예컨대, "1") 또는 선인출되지 않은 상태(예컨대, "0")로 표시하는 선인출 플래그(404)를 포함한다.
반면, 도 5는 대안적인 실시예를 도시하며, 여기서 저장된 (선인출) 표시자는 캐시 메모리(110) 내의 선인출된 데이터 라인 각각에 대한 라인 ID 항목(line identifier entry; 502)을 포함하는 레지스터 집합(register set; 500)으로서 구현된다. 예시로서, 항목이 캐시 메모리(110)로 선인출된 데이터 라인 각각에 대해 레지스터 집합(500)에 추가되어, 선인출된 데이터 라인만이 레지스터 집합(500)에 나타날 수 있다. 대안으로, 레지스터 집합(500)은 캐시 메모리(110) 내의 모든 데이터 라인에 대한 항목을 포함할 수 있고, 각각의 항목은 캐시 메모리(110)의 대응 데이터 라인이 선인출되는지를 표시할 수 있다.
도 6 및 도 7은 선인출 히트를 검출하기 위해 저장된 표시자(404 또는 502)를 활용하는 프로세싱 로직의 일 실시예를 도시한다. 비제한적인 예시로서, 도시된 프로세싱은 예컨대 상태 기계(state machine)에서, 디지털 프로세싱 로직을 통해 캐시 제어기(108)에 의해 실행될 수 있다. 또한, 하나 이상의 도시된 프로세싱 단계가 도시된 순서 이외의 방식으로 시행될 수 있거나, 다른 단계와 동시에 수행될 수 있다는 것 및/또는 다른 프로세싱 태스크의 일부로서 수행될 수 있다는 것에 주의하여야 한다.
도시된 프로세싱을 대략적으로 따르면, 캐시 제어기(108)는 제1 카운트(예컨대, 제1 카운터(302)의 값)를 이용하여 데이터 캐시(106)에 대한 선인출 히트를 추적하고, 제2 카운트(예컨대, 제2 카운터(304)의 값)를 이용하여 데이터 캐시(106)에 대한 전체 히트를 추적하다. 제1 및 제2 카운터들(302; 304)이 포화 카운터(saturating counter)를 포함하여, 대응하는 제1 및 제2 카운트 값이 각각의 최대값에서 포화될 수 있다. 세부사항과는 관계없이, 캐시 제어기(108)의 하나 이상의 실시예는 제1 및 제2 카운트 값의 함수로 데이터 캐시(106)를 선인출 이네이블 조건과 선인출 디스에이블 조건 간에 이행시킨다. 이들 카운트는 시작 동작의 일부로서 초기화될 수 있다.
보다 구체적으로, 도시된 프로세싱은 데이터 캐시(106)에 대한 데이터 선인출을 이네이블하는 것으로 시작한다(블록 600). 적어도 일 실시예에서, 캐시 제어기(108)는 데이터 선인출이 기본적으로 이네이블되는 것으로 동작을 시작하도록 구성되어, 프로세서(100)의 시작 또는 재시작이 데이터 선인출을 턴온시킨다.
선인출이 이네이블되면서, 데이터 캐시 제어기(108)는 필요에 따라 데이터 라인을 데이터 캐시(106)로 인출하고, 액티브 선인출 정책(active prefetching policy)에 따라 데이터 라인을 캐시로 선인출한다(블록 602). 캐시 제어기(108)는 데이터 캐시 히트가 발생하는지를 판정하고 프로세싱은 이에 기초하여 루핑(looping)을 계속하거나 진행한다(블록 604). 데이터 캐시 히트가 발생한 경우(블록 604에서 "예"인 경우), 캐시 제어기(108)는 히트가 선인출 히트였는지 검출하는데(블록 606), 예컨대 저장된 (선인출) 표시자(404 또는 502)를 이용하여 캐시 히트에 포함된 특정 데이터 라인이 선인출된 데이터 라인이었는지 여부를 판정한다.
히트가 선인출 히트였던 경우(블록 606에서 "예"인 경우), 데이터 캐시 제어기(108)는 제1 카운트를 증가시킨다(블록 608). 히트가 선인출 히트가 아니었던 경우(블록 606에서 "아니요"의 경우), 데이터 캐시 제어기(108)는 제1 카운트를 감소시킨다(블록 610). 제1 카운트는 카운터 제어 회로(300)를 통해 제1 카운터(302) 상에서 동작함으로써 이러한 방식으로 유지될 수 있다.
동작은 제1 카운트의 값이 선인출을 위한 디스에이블 정의 임계값보다 높은지를 판정하기 위해 제1 카운트를 구하는 것으로 계속된다(블록 612). 이러한 구성에서, 디스에이블 임계값은 선인출이 불필요한 것으로 간주되는 정도에 대응하는 퍼센트 값으로 설정될 수 있다. 임의의 경우에, 이진 카운트 값에 대해, 판정은 카운트 값을 바람직한 임계값에 대응하는 이진 패턴과 비교함으로써 이루어질 수 있다. 적어도 일 실시예에서, 제1 카운터(302)는 선인출 히트를 추적하기 위한 바람직한 카운트 해상도(resolution)에 따른 크기를 갖는다. 또한, 제1 카운트에 대한 평가는 각각의 캐시 히트에 대해 수행될 수 있거나, 다른 스케줄 또는 트리거링 조건(triggering condition)에 따라 수행될 수 있다는 것에도 유의해야 한다.
임의의 경우, 제1 카운트의 값이 선인출 히트 레이트가 너무 낮은 것으로 표시한 경우(블록 614에서 "예"인 경우), 캐시 제어기(108)는 선인출을 디스에이블한다(블록 616). 이로부터, 프로세싱은 선택적으로 제1 카운트를 리셋(reset)하는 것 및/또는 제2 카운트를 리셋하는 것으로 계속된다(블록 618). 즉, 하나 또는 둘 모두의 카운트는 선인출 이네이블 상태에서 선인출 디스에이블 상태로 이행하는 것과 관련해서 상태 변화를 보강하는 방식으로 설정될 수 있다.
적어도 이 같은 일 실시예에서, 제2 카운트는 선인출 디스에이블 상태로 변화하는 것의 일부로 최대값으로 리셋되고, 제1 카운트는 선인출 이네이블 상태로 변화하는 것의 일부로 최대값으로 리셋된다. 이렇게 함으로써, ("핑퐁(ping-ponging)"으로도 지칭되는) 급격한 상태 반전을 방지한다. 보다 구체적으로, 예시적인 카운터 리셋은 본 명세서에서 고려한 히스테리시스(hysteresis) 제어의 일 형태를 나타낸다. 이네이블/디스에이블 히스테리시스 제어를 구현하는 것은, 선인출 히트 및 전체 히트를 추적하는데 이용되는 추적 메커니즘(카운터 등)을 리셋하고, 제어 임계값을 조정하며, 상태 변화가 이루어진 후 상태 변화 프로세싱을 일시적으로 중지하는 것 등에 의해, 본 명세서의 하나 이상의 실시예에서 대략적으로 고려된다.
연결자 "B"를 따라 도 7의 도시된 프로세싱으로 돌아오면, 선인출이 턴오프된 채로 프로세싱이 계속되는 것을 볼 수 있다. 선인출이 디스에이블되어 있는 동안, 캐시 제어기(108)는 데이터 캐시 액세스에 대한 모니터링을 계속한다(블록 700). 데이터 캐시 액세스가 있는 경우(블록 700에서 "예"인 경우), 캐시 제어기(108)는 액세스가 캐시 히트를 유발했는지를 검출한다(블록 702). 액세스가 히트를 유발했던 경우(블록 702에서 "예"인 경우), 프로세싱은 캐시 제어기(108)가 제2 카운트를 증가시키는 것으로 계속된다(블록 704). 반면, 캐시 액세스가 캐시 미스를 유발했던 경우(블록 702에서 "아니요"인 경우), 프로세싱은 캐시 제어기(108)가 제2 카운트를 감소시키고(블록 706) 필요에 따라 데이터 라인을 캐시 메모리(110)로 인출하는 것으로 계속된다(블록 708).
다음으로, 프로세싱은 제2 카운트를 구하는 것으로 계속된다(블록 710). 캐시 액세스 및/또는 카운터 업데이트는 카운트를 구하기 위한 트리거(trigger)로서 이용될 수 있고, 다른 스케줄 또는 트리거가 이용될 수 있다. 임의의 경우, 카운트를 구하는 것은 제2 카운트의 값을 이네이블 정의 임계값과 비교하는 것을 포함할 수 있다. 적어도 이 같은 일 실시예에서, 이네이블 정의 임계값은 데이터 캐시 히트에 대한 낮은 퍼센트 값을 나타낸다. 이 같은 구성에서, 전체 히트 레이트는, 제2 카운트에 의해 추적된 캐시 히트의 퍼센트가 이러한 낮은 퍼센트 이하일 경우, 낮은 것으로 간주된다.
전체 히트 레이트가 낮지 않은 경우(블록 712에서 "아니요"인 경우), 프로세싱은 블록 700으로 되돌아온다. 반면, 전체 히트 레이트가 낮을 경우(블록 712에서 "예"인 경우), 프로세싱은 선인출 이네이블을 위해 연결자 "A"를 통해 도 6의 블록 600으로 계속된다(제1 및/또는 제2 카운트는 선인출 이네이블 조건으로 재이행하는 것의 일부로 리셋될 수 있다는 것에 유의한다(블록 714)).
대체 실시예에서, 캐시 제어기(108)는 (캐시 메모리(110) 내의 데이터 라인의 전체 수와 비교된) 캐시 메모리(110) 내의 선인출된 데이터 라인의 수를 카운팅 또는 판정한 것에 기초해 선인출 히트를 추적하도록 구성된다. 캐시 제어기(108)는 선인출된 데이터 라인을 카운팅하기 위해 제1 카운터(302)를 이용하거나, 그와 같은 정보를 추적하기 위한 레지스터 및/또는 다양한 카운터로 구성될 수 있다. 임의의 경우, 선인출 히트가 상대적으로 빈번하지 않으면 데이터 캐시 대체 정책 때문에 캐시 메모리(110) 내의 선인출된 데이터 라인의 수가 시간에 따라 감소한다는 점에서, 데이터 라인의 전체 카운트와 비교한 선인출된 데이터 라인의 카운트는 여전히 선인출 히트 레이트를 반영한다.
상술한 실시예 및 다양한 변형예를 고려하면, 본 명세서에서 교시한 데이터 캐시 선인출 제어는 넓은 범위에서 선인출 히트를 추적하는 것과 전체 히트를 추적하는 것을 포함하여, 선인출 이네이블 조건으로부터의 이행은 선인출 히트에 기초하고 선인출 디스에이블 조건으로부터의 이행은 전체 히트에 기초하게 된다. 적어도 일 실시예에서, 선인출은 선인출 히트 레이트가 디스에이블 정의 임계값 아래로 떨어질 경우 디스에이블되고, 전체 히트 레이트가 이네이블 정의 임계값 아래로 떨어질 경우 이네이블된다. 저장된 표시자가 어떤 데이터 라인이 선인출되는지를 표시하기 위해 이용될 수 있고, 다양한 카운터 또는 레지스터가 선인출 히트 및 전체 히트 추적을 위해 사용될 수 있다.
따라서, 본 명세서에서 본 발명은 그에 대한 특정 특징, 태양 및 실시예에 관해 설명되었지만, 다양한 변형, 수정 및 다양한 실시예가 본 발명의 대략적인 범위 내에서 가능할 수 있고, 따라서 모든 변형, 수정 및 실시예는 본 발명의 범위 내에 있는 것으로 간주되어야만 한다. 따라서 본 실시예는 모든 태양에서 제한적인 것이 아닌 예시적인 것으로 해석되어야 하며, 첨부된 특허청구범위의 의미 및 균등 범위 내에 속하는 모든 변경은 특허청구범위 범위 내에 속하는 것으로 의도되었다.
102: 명령어 실행 파이프라인
104: 상태 레지스터
108: 캐시 제어기
110: 캐시 메모리
112: 고-레벨 메모리

Claims (26)

  1. 데이터 캐시(data cache)에 대한 데이터 선인출(data prefetching)을 제어하는 방법으로서,
    데이터 선인출이 이네이블(enable)된 동안에 상기 데이터 캐시에 대한 선인출 히트(prefetch hit)를 추적(track)하고 상기 선인출 히트를 추적한 것에 기초하여 상기 데이터 캐시에 대한 데이터 선인출을 선택적으로 디스에이블(disable)하는 단계;
    데이터 선인출이 디스에이블된 동안에 상기 데이터 캐시에 대한 전체 히트(overall hit)를 추적하고 상기 전체 히트를 추적한 것에 기초하여 상기 데이터 캐시에 대한 데이터 선인출을 선택적으로 이네이블하는 단계; 및
    상기 데이터 캐시에 대한 데이터 선인출을 디스에이블하는 것과 관련하여 상기 데이터 캐시에 대한 상기 전체 히트를 추적하기 위해 이용되는 제1 추적 메커니즘을 리셋(reset)함으로써 제1 히스테리시스 제어(first control hysteresis)를 실행하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 데이터 캐시에 대한 데이터 선인출을 이네이블하는 것과 연관하여 상기 선인출 히트를 추적하기 위해 이용되는 제2 추적 메커니즘을 리셋함으로써 제2 히스테리시스 제어(second control hysteresis)를 실행하는 단계를 더 포함하는 방법.
  3. 제1항에 있어서,
    상기 데이터 선인출을 디스에이블하는 것에 응답하여 상기 데이터 캐시에 대한 전체 히트를 추적하고 상기 전체 히트를 추적하는 것에 기초하여 상기 데이터 캐시에 대한 데이터 선인출을 이네이블하는 단계를 더 포함하고, 상기 데이터 캐시에 대한 전체 히트를 추적하는 단계는 상기 데이터 캐시에 대한 전체 히트 레이트(overall hit rate)를 추적하는 단계를 포함하는 방법.
  4. 제3항에 있어서,
    상기 데이터 캐시 내의 어떤 데이터 라인이 선인출된 데이터 라인인지를 표시하는 표시자(indicator)를 저장하는 단계, 및 상기 선인출 히트 레이트를 추적하기 위해 상기 저장된 표시자를 이용하는 단계를 더 포함하는 방법.
  5. 제3항에 있어서,
    상기 전체 히트 레이트를 추적하는 단계는, 데이터 캐시 히트에 대한 응답으로 카운트를 증가시키고 데이터 캐시 미스(data cache misses)에 대한 응답으로 상기 카운트를 감소시키는 단계를 포함하는 방법.
  6. 제5항에 있어서,
    상기 전체 히트를 추적한 것에 기초하여 상기 데이터 캐시에 대한 데이터 선인출을 이네이블하는 단계는, 상기 전체 히트 레이트가, 상기 카운트에 의해 표시된 이네이블 정의 임계값(defined enable threshold)으로 떨어질 때 상기 데이터 캐시에 대한 데이터 선인출을 이네이블하는 단계를 포함하는 방법.
  7. 제5항에 있어서,
    데이터 캐시 선인출을 이네이블하는 것과 연관해서 상기 카운트를 리셋함으로써 데이터 캐시 선인출의 이네이블 히스테리시스를 실행하는 단계를 더 포함하는 방법.
  8. 제5항에 있어서,
    최대 카운트 값에서 포화하도록(saturate) 구성된 포화 카운터(saturating counter)에서 상기 카운트를 유지하는 단계를 더 포함하는 방법.
  9. 제3항에 있어서,
    상기 전체 히트 레이트는 데이터 캐시 미스에 대한 데이터 캐시 히트의 전체 퍼센트를 반영하는 방법.
  10. 제1항에 있어서,
    상기 선인출 히트를 추적한 것에 기초하여 상기 데이터 캐시에 대한 데이터 선인출을 디스에이블하는 단계는, 상기 선인출 히트 레이트가 디스에이블 정의 임계값(defined disable threshold)으로 떨어질 때 상기 데이터 캐시에 대한 데이터 선인출을 디스에이블하는 단계를 포함하는 방법.
  11. 제10항에 있어서,
    상기 디스에이블 정의 임계값은 동적으로 계산되는 값에 기초해서 설정되는 방법.
  12. 제10항에 있어서,
    상기 디스에이블 정의 임계값은 선인출 오버헤드(prefetching overhead) 및 미스 페널티(miss penalties) 중 적어도 하나에 기초해서 조절되는 방법.
  13. 제1항에 있어서,
    데이터 캐시 선인출이 이네이블되는 것으로 동작을 시작하도록 상기 데이터 캐시를 초기화하는 단계를 더 포함하는 방법.
  14. 제1항에 있어서,
    데이터 선인출이 이네이블된 때 하나 이상의 정의된 선인출 정책에 따라 상기 데이터 캐시로 데이터 라인을 선인출하는 단계, 및 데이터 선인출이 이네이블되는지와 관계없이 데이터 캐시 미스에 응답하여 상기 데이터 캐시로 데이터 라인을 인출하는 단계를 더 포함하는 방법.
  15. 명령어 실행 파이프라인(instruction execution pipeline); 및
    상기 명령어 실행 파이프라인과 동작이 연관되고 캐시 메모리와 캐시 제어기를 포함하는 데이터 캐시
    를 포함하고,
    상기 캐시 제어기는,
    데이터 선인출이 이네이블된 동안에 상기 데이터 캐시에 대한 선인출 히트를 추적하고 상기 선인출 히트를 추적한 것에 기초하여 상기 데이터 캐시에 대한 데이터 선인출을 선택적으로 디스에이블하고,
    데이터 선인출이 디스에이블된 동안에 상기 데이터 캐시에 대한 전체 히트를 추적하고 상기 전체 히트를 추적한 것에 기초하여 상기 데이터 캐시에 대한 데이터 선인출을 선택적으로 이네이블하고,
    상기 데이터 캐시에 대한 데이터 선인출을 디스에이블하는 것과 관련하여 상기 데이터 캐시에 대한 상기 전체 히트를 추적하기 위해 이용되는 제1 추적 메커니즘을 리셋하도록 구성된, 프로세서.
  16. 제15항에 있어서,
    상기 캐시 제어기는 상기 데이터 캐시에 대한 데이터 선인출과 연관하여 상기 선인출 히트를 추적하기 위해 이용되는 제2 추적 메커니즘을 리셋하도록 더 구성되는, 프로세서.
  17. 제15항에 있어서,
    상기 캐시 제어기는 상기 캐시 메모리 내의 어떤 데이터 라인이 선인출된 데이터 라인인지를 표시하는 표시자를 유지하고, 선인출 히트 레이트를 추적하기 위해 상기 표시자를 이용하는, 프로세서.
  18. 제15항에 있어서,
    상기 캐시 제어기는, 데이터 선인출을 디스에이블하는 것에 이어서, 상기 데이터 캐시에 대한 전체 히트를 추적하고 상기 전체 히트의 추적에 기초하여 상기 데이터 캐시에 대한 데이터 선인출을 이네이블하도록 더 구성되고, 상기 전체 히트를 추적하는 것은 상기 데이터 캐시에 대한 전체 히트 레이트를 추적하는 것을 포함하는, 프로세서.
  19. 제18항에 있어서,
    상기 캐시 제어기는 데이터 캐시 히트에 대한 응답으로 카운터를 증가시키고 데이터 캐시 미스에 대한 응답으로 상기 카운터를 감소시킴으로써 상기 전체 히트 레이트를 추적하는, 프로세서.
  20. 제19항에 있어서,
    상기 캐시 제어기는 상기 전체 히트 레이트가, 상기 카운터에 의해 표시된 이네이블 정의 임계값으로 떨어질 때 상기 데이터 캐시에 대한 데이터 선인출을 이네이블하는, 프로세서.
  21. 제19항에 있어서,
    상기 캐시 제어기는 데이터 캐시 선인출을 이네이블하는 것과 연관해서 상기 카운터를 리셋함으로써 데이터 캐시 선인출의 이네이블 히스테리시스 제어를 실행하는, 프로세서.
  22. 제19항에 있어서,
    상기 카운터는 최대 카운트 값에서 포화하는 포화 카운터를 포함하는, 프로세서.
  23. 제19항에 있어서,
    상기 카운터는 데이터 캐시 미스에 대한 데이터 캐시 히트의 전체 퍼센트를 반영하는, 프로세서.
  24. 제15항에 있어서,
    상기 캐시 제어기는 상기 선인출 히트 레이트가 디스에이블 정의 임계값으로 떨어질 때 상기 데이터 캐시에 대한 데이터 선인출을 디스에이블하는, 프로세서.
  25. 제15항에 있어서,
    상기 캐시 제어기는 데이터 캐시 선인출이 이네이블되는 것으로 동작을 시작하도록 상기 데이터 캐시를 초기화하는, 프로세서.
  26. 제15항에 있어서,
    상기 캐시 제어기는 데이터 선인출이 이네이블될 때 하나 이상의 정의된 선인출 정책에 따라 상기 데이터 캐시로 데이터 라인을 선인출하고, 데이터 선인출이 이네이블되는지와 관계없이 데이터 캐시 미스에 응답하여 상기 데이터 캐시로 데이터 라인을 인출하는, 프로세서.
KR1020107000480A 2007-07-10 2008-07-10 데이터 선인출 조절 KR101095217B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/775,320 US7917702B2 (en) 2007-07-10 2007-07-10 Data prefetch throttle
US11/775,320 2007-07-10
PCT/US2008/069710 WO2009009704A1 (en) 2007-07-10 2008-07-10 Data prefetch throttle

Publications (2)

Publication Number Publication Date
KR20100022518A KR20100022518A (ko) 2010-03-02
KR101095217B1 true KR101095217B1 (ko) 2011-12-20

Family

ID=39494443

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107000480A KR101095217B1 (ko) 2007-07-10 2008-07-10 데이터 선인출 조절

Country Status (6)

Country Link
US (1) US7917702B2 (ko)
EP (1) EP2015189B1 (ko)
JP (1) JP5095820B2 (ko)
KR (1) KR101095217B1 (ko)
CN (1) CN101689147B (ko)
WO (1) WO2009009704A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100421538B1 (ko) * 2001-01-29 2004-03-18 대한민국 생약재의 휘발성 추출물을 유효성분으로 하는 문화재 보존용 살생물제 조성물 및 그를 이용한 문화재 보존방법

Families Citing this family (87)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6307487B1 (en) 1998-09-23 2001-10-23 Digital Fountain, Inc. Information additive code generator and decoder for communication systems
US7068729B2 (en) 2001-12-21 2006-06-27 Digital Fountain, Inc. Multi-stage code generator and decoder for communication systems
US9240810B2 (en) 2002-06-11 2016-01-19 Digital Fountain, Inc. Systems and processes for decoding chain reaction codes through inactivation
JP4546246B2 (ja) 2002-10-05 2010-09-15 デジタル ファウンテン, インコーポレイテッド 連鎖的暗号化反応の系統的記号化および復号化
CN1954501B (zh) * 2003-10-06 2010-06-16 数字方敦股份有限公司 通过通信信道接收从源发射的数据的方法
CN103124182B (zh) 2004-05-07 2017-05-10 数字方敦股份有限公司 文件下载和流系统
US7721184B2 (en) * 2004-08-11 2010-05-18 Digital Fountain, Inc. Method and apparatus for fast encoding of data symbols according to half-weight codes
CN101686107B (zh) 2006-02-13 2014-08-13 数字方敦股份有限公司 使用可变fec开销和保护周期的流送和缓冲
US9270414B2 (en) 2006-02-21 2016-02-23 Digital Fountain, Inc. Multiple-field based code generator and decoder for communications systems
WO2007134196A2 (en) 2006-05-10 2007-11-22 Digital Fountain, Inc. Code generator and decoder using hybrid codes
US9419749B2 (en) 2009-08-19 2016-08-16 Qualcomm Incorporated Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes
US9386064B2 (en) * 2006-06-09 2016-07-05 Qualcomm Incorporated Enhanced block-request streaming using URL templates and construction rules
US20100211690A1 (en) * 2009-02-13 2010-08-19 Digital Fountain, Inc. Block partitioning for a data stream
US9178535B2 (en) 2006-06-09 2015-11-03 Digital Fountain, Inc. Dynamic stream interleaving and sub-stream based delivery
US9432433B2 (en) 2006-06-09 2016-08-30 Qualcomm Incorporated Enhanced block-request streaming system using signaling or block creation
US9380096B2 (en) 2006-06-09 2016-06-28 Qualcomm Incorporated Enhanced block-request streaming system for handling low-latency streaming
US9209934B2 (en) 2006-06-09 2015-12-08 Qualcomm Incorporated Enhanced block-request streaming using cooperative parallel HTTP and forward error correction
EP2203836A4 (en) 2007-09-12 2014-11-05 Digital Fountain Inc GENERATING AND COMMUNICATING SOURCE IDENTIFICATION INFORMATION TO ENABLE RELIABLE COMMUNICATIONS
JP5587884B2 (ja) 2008-08-06 2014-09-10 モービック・ネットワークス 無線アクセスネットワーク(ran)におけるコンテンツのキャッシング
CN102282550A (zh) * 2009-01-30 2011-12-14 莫维克网络公司 应用和使用以及无线链路感知传输网络调度程序
US8364901B2 (en) * 2009-02-13 2013-01-29 Micron Technology, Inc. Memory prefetch systems and methods
US9281847B2 (en) 2009-02-27 2016-03-08 Qualcomm Incorporated Mobile reception of digital video broadcasting—terrestrial services
US9288010B2 (en) 2009-08-19 2016-03-15 Qualcomm Incorporated Universal file delivery methods for providing unequal error protection and bundled file delivery services
US9917874B2 (en) * 2009-09-22 2018-03-13 Qualcomm Incorporated Enhanced block-request streaming using block partitioning or request controls for improved client-side handling
US8443151B2 (en) * 2009-11-09 2013-05-14 Intel Corporation Prefetch optimization in shared resource multi-core systems
US8291171B2 (en) 2009-11-30 2012-10-16 Hewlett-Packard Development Company, L.P. Altering prefetch depth based on ready data
CN102550006A (zh) * 2010-02-12 2012-07-04 莫维克网络公司 移动网络中的无线接入网络缓存
US8882378B2 (en) 2010-02-15 2014-11-11 Access Business Group International Llc Heating and dispenser system
CN102598628A (zh) * 2010-03-15 2012-07-18 莫维克网络公司 用于多媒体传送的自适应分块和内容感知同步设备及方法
US9485546B2 (en) 2010-06-29 2016-11-01 Qualcomm Incorporated Signaling video samples for trick mode video representations
US8918533B2 (en) 2010-07-13 2014-12-23 Qualcomm Incorporated Video switching for streaming video data
US9185439B2 (en) 2010-07-15 2015-11-10 Qualcomm Incorporated Signaling data for multiplexing video components
US8799480B2 (en) * 2010-07-19 2014-08-05 Movik Networks Content pre-fetching and CDN assist methods in a wireless mobile network
US9596447B2 (en) 2010-07-21 2017-03-14 Qualcomm Incorporated Providing frame packing type information for video coding
US8806050B2 (en) 2010-08-10 2014-08-12 Qualcomm Incorporated Manifest file updates for network streaming of coded multimedia data
US8565076B2 (en) 2010-09-24 2013-10-22 Movik Networks Destination learning and mobility detection in transit network device in LTE and UMTS radio access networks
US8683129B2 (en) * 2010-10-21 2014-03-25 Oracle International Corporation Using speculative cache requests to reduce cache miss delays
US8958375B2 (en) 2011-02-11 2015-02-17 Qualcomm Incorporated Framing for an improved radio link protocol including FEC
US9270299B2 (en) 2011-02-11 2016-02-23 Qualcomm Incorporated Encoding and decoding using elastic codes with flexible source block mapping
EP2691854A1 (en) * 2011-03-30 2014-02-05 Freescale Semiconductor, Inc. A method and apparatus for controlling fetch-ahead in a vles processor architecture
US20130013867A1 (en) * 2011-07-06 2013-01-10 Advanced Micro Devices, Inc. Data prefetcher mechanism with intelligent disabling and enabling of a prefetching function
US9253233B2 (en) 2011-08-31 2016-02-02 Qualcomm Incorporated Switch signaling methods providing improved switching between representations for adaptive HTTP streaming
US9843844B2 (en) 2011-10-05 2017-12-12 Qualcomm Incorporated Network streaming of media data
US20130262826A1 (en) * 2011-10-06 2013-10-03 Alexander Gendler Apparatus and method for dynamically managing memory access bandwidth in multi-core processor
CN102521158B (zh) * 2011-12-13 2014-09-24 北京北大众志微系统科技有限责任公司 一种实现数据预取的方法及装置
US9043579B2 (en) 2012-01-10 2015-05-26 International Business Machines Corporation Prefetch optimizer measuring execution time of instruction sequence cycling through each selectable hardware prefetch depth and cycling through disabling each software prefetch instruction of an instruction sequence of interest
US8635406B2 (en) * 2012-03-08 2014-01-21 Arm Limited Data processing apparatus and method for providing target address information for branch instructions
US9294226B2 (en) 2012-03-26 2016-03-22 Qualcomm Incorporated Universal object delivery and template-based file delivery
CN102662713B (zh) 2012-04-12 2014-04-16 腾讯科技(深圳)有限公司 提高应用程序运行速度的方法、装置及终端
US9390018B2 (en) 2012-08-17 2016-07-12 Advanced Micro Devices, Inc. Data cache prefetch hints
US9201796B2 (en) * 2012-09-27 2015-12-01 Apple Inc. System cache with speculative read engine
US9348753B2 (en) * 2012-10-10 2016-05-24 Advanced Micro Devices, Inc. Controlling prefetch aggressiveness based on thrash events
US20140108740A1 (en) * 2012-10-17 2014-04-17 Advanced Micro Devices, Inc. Prefetch throttling
US9367468B2 (en) 2013-01-15 2016-06-14 Qualcomm Incorporated Data cache way prediction
US9298634B2 (en) 2013-03-06 2016-03-29 Gregory RECUPERO Client spatial locality through the use of virtual request trackers
US9223710B2 (en) * 2013-03-16 2015-12-29 Intel Corporation Read-write partitioning of cache memory
JP6191240B2 (ja) * 2013-05-28 2017-09-06 富士通株式会社 変数更新装置、変数更新システム、変数更新方法、変数更新プログラム、変換プログラム、及びプログラム変更検証システム
US9471510B2 (en) * 2013-12-20 2016-10-18 Netapp, Inc. System and method for cache monitoring in storage systems
US9292447B2 (en) * 2014-02-20 2016-03-22 Freescale Semiconductor, Inc. Data cache prefetch controller
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
US9280476B2 (en) 2014-06-04 2016-03-08 Oracle International Corporation Hardware stream prefetcher with dynamically adjustable stride
US9256541B2 (en) * 2014-06-04 2016-02-09 Oracle International Corporation Dynamically adjusting the hardware stream prefetcher prefetch ahead distance
US20160011790A1 (en) * 2014-07-14 2016-01-14 Sandisk Technologies Inc. Systems and methods to enable access to a host memory associated with a unified memory architecture (uma)
US10824335B2 (en) 2014-07-14 2020-11-03 Western Digital Technologies, Inc. Device and method to store predicted data at a host memory
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
TWI512609B (zh) * 2014-09-05 2015-12-11 Silicon Motion Inc 讀取命令排程方法以及使用該方法的裝置
DE102015115582A1 (de) * 2014-10-22 2016-04-28 Imagination Technologies Limited Vorrichtung und Verfahren zum Drosseln des Hardwarevorauslesens
US9798900B2 (en) * 2015-03-26 2017-10-24 Intel Corporation Flexible counter system for memory protection
US9864661B2 (en) * 2016-02-12 2018-01-09 Hewlett Packard Enterprise Development Lp Cache-accelerated replication of snapshots between storage devices
JP6627629B2 (ja) * 2016-04-14 2020-01-08 富士通株式会社 演算処理装置、および演算処理装置の制御方法
WO2017196138A2 (en) 2016-05-12 2017-11-16 Lg Electronics Inc. System and method for early data pipeline lookup in large cache design
US10379862B2 (en) 2016-06-28 2019-08-13 International Business Machines Corporation Effectiveness and prioritization of prefeteches
US9928176B2 (en) * 2016-07-20 2018-03-27 Advanced Micro Devices, Inc. Selecting cache transfer policy for prefetched data based on cache test regions
CN107783911B (zh) * 2016-08-31 2021-06-08 华为技术有限公司 一种数据过滤方法及终端设备
US10474578B2 (en) * 2017-08-30 2019-11-12 Oracle International Corporation Utilization-based throttling of hardware prefetchers
US10303379B2 (en) 2017-09-25 2019-05-28 International Business Machines Corporation Efficient adaptive read-ahead in log structured storage
US11294810B2 (en) * 2017-12-12 2022-04-05 Advanced Micro Devices, Inc. Memory request throttling to constrain memory bandwidth utilization
US10613983B2 (en) * 2018-03-20 2020-04-07 Advanced Micro Devices, Inc. Prefetcher based speculative dynamic random-access memory read request technique
US11675591B2 (en) * 2018-10-31 2023-06-13 Advanced Micro Devices, Inc. Selectively enabled result lookaside buffer based on a hit rate
US11294595B2 (en) * 2018-12-18 2022-04-05 Western Digital Technologies, Inc. Adaptive-feedback-based read-look-ahead management system and method
US11327891B2 (en) * 2019-09-20 2022-05-10 Samsung Electronics Co., Ltd. Prefetching operations in storage devices
US11720364B2 (en) 2020-03-27 2023-08-08 Intel Corporation Methods and apparatus to dynamically enable and/or disable prefetchers
US11442864B2 (en) 2020-06-29 2022-09-13 Marvell Asia Pte, Ltd. Managing prefetch requests based on stream information for previously recognized streams
KR20220117747A (ko) 2021-02-17 2022-08-24 삼성전자주식회사 데이터 프리페치 제어 기능을 갖는 스토리지 컨트롤러, 스토리지 컨트롤러의 동작 방법, 및 스토리지 장치의 동작 방법
KR20220120016A (ko) * 2021-02-22 2022-08-30 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11853220B2 (en) * 2021-10-14 2023-12-26 Arm Limited Prefetcher training
JP2024014123A (ja) * 2022-07-21 2024-02-01 富士通株式会社 演算処理装置及び演算処理方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050076181A1 (en) * 2003-10-07 2005-04-07 Wenchi Hsu Pre-fetch controller and method thereof
WO2005076181A1 (en) 2004-02-05 2005-08-18 Dal-Hyun Cho Information buying and selling system

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5367656A (en) * 1992-03-13 1994-11-22 Bull Hn Information Systems Inc. Controlling cache predictive prefetching based on cache hit ratio trend
JPH07105092A (ja) * 1993-09-30 1995-04-21 Sharp Corp 記憶装置
US5983324A (en) * 1996-03-28 1999-11-09 Hitachi, Ltd. Data prefetch control method for main storage cache for protecting prefetched data from replacement before utilization thereof
US6247107B1 (en) * 1998-04-06 2001-06-12 Advanced Micro Devices, Inc. Chipset configured to perform data-directed prefetching
US20020073406A1 (en) * 2000-12-12 2002-06-13 Darryl Gove Using performance counter profiling to drive compiler optimization
US6983356B2 (en) * 2002-12-19 2006-01-03 Intel Corporation High performance memory device-state aware chipset prefetcher
US6978349B1 (en) * 2003-01-09 2005-12-20 Hewlett-Packard Development Company, L.P. Adaptive cache memory management
US7237068B2 (en) * 2003-01-28 2007-06-26 Sun Microsystems, Inc. Computer system employing bundled prefetching and null-data packet transmission
US7055016B2 (en) * 2003-04-30 2006-05-30 Sun Microsystems, Inc. Computer system including a memory controller configured to perform pre-fetch operations
US7162567B2 (en) * 2004-05-14 2007-01-09 Micron Technology, Inc. Memory hub and method for memory sequencing
US7313654B2 (en) * 2004-10-27 2007-12-25 Xiv Ltd Method for differential discarding of cached data in distributed storage systems
US20060174228A1 (en) * 2005-01-28 2006-08-03 Dell Products L.P. Adaptive pre-fetch policy
US20070239940A1 (en) * 2006-03-31 2007-10-11 Doshi Kshitij A Adaptive prefetching

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050076181A1 (en) * 2003-10-07 2005-04-07 Wenchi Hsu Pre-fetch controller and method thereof
WO2005076181A1 (en) 2004-02-05 2005-08-18 Dal-Hyun Cho Information buying and selling system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100421538B1 (ko) * 2001-01-29 2004-03-18 대한민국 생약재의 휘발성 추출물을 유효성분으로 하는 문화재 보존용 살생물제 조성물 및 그를 이용한 문화재 보존방법

Also Published As

Publication number Publication date
JP5095820B2 (ja) 2012-12-12
WO2009009704A1 (en) 2009-01-15
US20090019229A1 (en) 2009-01-15
EP2015189A1 (en) 2009-01-14
US7917702B2 (en) 2011-03-29
CN101689147A (zh) 2010-03-31
KR20100022518A (ko) 2010-03-02
EP2015189B1 (en) 2015-07-29
JP2010532904A (ja) 2010-10-14
CN101689147B (zh) 2013-05-15

Similar Documents

Publication Publication Date Title
KR101095217B1 (ko) 데이터 선인출 조절
EP3769226B1 (en) Prefetcher based speculative dynamic random-access memory read request technique
US10831494B2 (en) Event triggered programmable prefetcher
US10552160B2 (en) Handling stalling event for multiple thread pipeline, and triggering action based on information access delay
US8839429B2 (en) Methods, devices, and systems for detecting return-oriented programming exploits
US7707359B2 (en) Method and apparatus for selectively prefetching based on resource availability
US20180225121A1 (en) Selective poisoning of data during runahead
KR20210035311A (ko) 프로세서의 필터링된 분기 예측 구조
US8635406B2 (en) Data processing apparatus and method for providing target address information for branch instructions
US11249762B2 (en) Apparatus and method for handling incorrect branch direction predictions
US7571305B2 (en) Reusing a buffer memory as a microcache for program instructions of a detected program loop
US11204878B1 (en) Writebacks of prefetched data
US20090132766A1 (en) Systems and methods for lookahead instruction fetching for processors
KR20210065930A (ko) 데이터 처리 시스템에서 이벤트를 감시하는 장치 및 방법
US10901742B2 (en) Apparatus and method for making predictions for instruction flow changing instructions
OnurMutlu et al. DRAM-Aware Last-Level Cache Replacement
JPH0353357A (ja) キャッシュメモリ制御用集積回路
JP2004127031A (ja) メモリ切り替え回路

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: 20141128

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150930

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161125

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170929

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee