KR101095217B1 - 데이터 선인출 조절 - Google Patents
데이터 선인출 조절 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing 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 prefetching)을 제어하기 위한 시스템 및 방법에 관한 것이다.
프로세서는 캐싱(caching)을 이용하여 메모리와 연관된 프로세싱 병목 현상(processing bottleneck)을 완화한다. 명령어 캐싱(instruction caching)은, 예컨대 고속 액세스 메모리를 이용하여, 메인 메모리 또는 고레벨의 캐시 메모리와 같은 저속 메모리에 저장된 대용량의 프로그램 명령어 세트 중 선택된 일부를 보유함으로써 동작한다.
따라서, 캐시에 위치하는 명령어는 저속 메모리로 액세스하는데 소요되는 것보다 적은 지연(delay)으로 액세스되며, 프로세서는 일반적으로 소정 형태의 하드웨어-기반 명령어 선인출을 이용하여 명령어 캐시가 저속 메모리로부터 필요한 명령어 라인으로 채워진 상태를 유지한다. 선인출은 명령어 라인 내의 명령어가 필요하기 전에 그 명령어 라인을 저속 메모리로부터 명령어 캐시로 위치시킨다.
하드웨어-기반 선인출은 또한 데이터에도 적용될 수 있다. 그러나 성공적으로 데이터를 선인출하는 것은 성공적으로 명령어를 선인출하는 것보다 더 어려울 수 있다. 예를 들어, 데이터 값은 프로그램 명령어보다 메모리에 더욱 산재 또는 분산되어 있을 수 있어 예측-기반 선인출을 보다 어렵게 만들 수 있다. 이와 같이, 데이터 선인출은 성능을 향상시키거나 향상시키지 못할 수도 있고, 데이터 선인출의 성능은 프로세서가 동작하는 동안 현저히 변화할 수 있다.
따라서, 예를 들어 선인출 동작을 "필터(filter)"하는 것이 알려져 있다. 선인출 필터링(prefetch filtering)은 "오염(pollution)" 회피 메커니즘을 의미하며, "오염(pollution)" 회피 메커니즘에서는, 데이터 캐시가 결코 사용되지 않는 선인출된 데이터 라인, 즉 선인출되지만 결국에는 액세스(히트)되기 전에 대체되는 데이터 라인을 포함할 때, 그 데이터 캐시는 오염된 것으로 간주한다. 이와 같이 선인출 필터링은, 계속적으로 데이터 선인출을 수행하지만, 필터링 부재시 수행될 수 있는 임의의 데이터 선인출을 선택적으로 건너뛴다는 것을 의미한다.
보다 구체적으로, 개별적인 데이터 선인출은 적용되는 필터링 기준에 따라 수행되거나 수행되지 않을 수 있다. 필터링 기준은, 예를 들어 소정 범위의 프로그램 실행 과정에서 나타난 선인출 성능 이력을 반영할 수 있다. 그러나 적절한 필터링을 판정하는 것은, 특히 필터링 없는 데이터 선인출에 비해 유의미한 성능 향상을 이끌어내기 위해 바람직하지 않은 하드웨어의 복잡성 또는 리소스의 소모가 필요할 수 있다.
하나 이상의 실시예에 따르면, 데이터 캐시에 대한 데이터 선인출을 제어하는 방법은, 데이터 캐시에 대한 선인출 히트를 추적하고, 선인출 히트를 추적한 것에 기초하여 데이터 캐시에 대한 데이터 선인출을 디스에이블(disable)하는 단계를 포함한다. 본 방법은 또한 데이터 캐시에 대한 전체 히트를 추적하고 전체 히트를 추적한 것에 기초하여 데이터 캐시에 대한 데이터 선인출을 이네이블(enable)하는 단계를 포함한다. 이러한 조건에서, 데이터 선인출을 디스에이블하는 단계는, 데이터 선인출이 이네이블되는지와 관계없이 필요에 따라 예컨대, 데이터 캐시 미스(miss)가 있는 경우, 데이터 라인이 여전히 데이터 캐시로 인출되더라도 데이터 캐시에 대한 모든 데이터 선인출을 디스에이블하는 단계를 포함한다.
본 명세서에서 교시된 적어도 하나의 실시예에서, 프로세서는 캐시 메모리와 캐시 제어기를 포함하는 데이터 캐시를 포함한다. 캐시 제어기는 데이터 캐시에 대한 선인출 히트를 추적한 것에 기초하여 데이터 캐시에 대한 데이터 선인출을 디스에이블하고, 데이터 캐시에 대한 전체 히트를 추적한 것에 기초하여 데이터 캐시에 대한 데이터 선인출을 이네이블한다. 적어도 하나의 실시예에서, 캐시 제어기는 선인출 히트 레이트를 추적함으로써 선인출 히트를 추적하고, 전체 히트 레이트(또는 동일하게 전체 미스 레이트)를 추적함으로써 전체 히트를 추적한다.
이상의 실시예들을 고려하면, 본 명세서에 교시된 데이터 선인출 제어는, 다른 장점도 있지만, 조건부 기준에 기초한 데이터 선인출의 성능 및 전력에서의 이점을 제공하고, 그와 동시에 단순하고도 효율적인 하드웨어의 구현할 수 있게 한다.
도 1은 프로세서의 일 실시예에 관한 기능 블록도.
도 2는 데이터 선인출 제어의 일 실시예에 관한 상태도.
도 3은 데이터 선인출을 제어하는데 유용한 카운팅 및 제어 회로의 일 실시예에 관한 기능 블록도.
도 4는 선인출된 데이터 라인을 표시하는 표시자(indicator)를 포함하는 데이터 캐시 메모리의 일 실시예에 관한 기능 블록도.
도 5는 데이터 캐시 내의 선인출된 데이터 라인을 표시하는 표시자의 또 다른 실시예에 관한 기능 블록도.
도 6 및 도 7은 데이터 선인출을 제어하기 위한 프로세싱 로직의 일 실시예에 관한 논리 흐름도.
도 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: 고-레벨 메모리
104: 상태 레지스터
108: 캐시 제어기
110: 캐시 메모리
112: 고-레벨 메모리
Claims (26)
- 데이터 캐시(data cache)에 대한 데이터 선인출(data prefetching)을 제어하는 방법으로서,
데이터 선인출이 이네이블(enable)된 동안에 상기 데이터 캐시에 대한 선인출 히트(prefetch hit)를 추적(track)하고 상기 선인출 히트를 추적한 것에 기초하여 상기 데이터 캐시에 대한 데이터 선인출을 선택적으로 디스에이블(disable)하는 단계;
데이터 선인출이 디스에이블된 동안에 상기 데이터 캐시에 대한 전체 히트(overall hit)를 추적하고 상기 전체 히트를 추적한 것에 기초하여 상기 데이터 캐시에 대한 데이터 선인출을 선택적으로 이네이블하는 단계; 및
상기 데이터 캐시에 대한 데이터 선인출을 디스에이블하는 것과 관련하여 상기 데이터 캐시에 대한 상기 전체 히트를 추적하기 위해 이용되는 제1 추적 메커니즘을 리셋(reset)함으로써 제1 히스테리시스 제어(first control hysteresis)를 실행하는 단계
를 포함하는 방법. - 제1항에 있어서,
상기 데이터 캐시에 대한 데이터 선인출을 이네이블하는 것과 연관하여 상기 선인출 히트를 추적하기 위해 이용되는 제2 추적 메커니즘을 리셋함으로써 제2 히스테리시스 제어(second control hysteresis)를 실행하는 단계를 더 포함하는 방법. - 제1항에 있어서,
상기 데이터 선인출을 디스에이블하는 것에 응답하여 상기 데이터 캐시에 대한 전체 히트를 추적하고 상기 전체 히트를 추적하는 것에 기초하여 상기 데이터 캐시에 대한 데이터 선인출을 이네이블하는 단계를 더 포함하고, 상기 데이터 캐시에 대한 전체 히트를 추적하는 단계는 상기 데이터 캐시에 대한 전체 히트 레이트(overall hit rate)를 추적하는 단계를 포함하는 방법. - 제3항에 있어서,
상기 데이터 캐시 내의 어떤 데이터 라인이 선인출된 데이터 라인인지를 표시하는 표시자(indicator)를 저장하는 단계, 및 상기 선인출 히트 레이트를 추적하기 위해 상기 저장된 표시자를 이용하는 단계를 더 포함하는 방법. - 제3항에 있어서,
상기 전체 히트 레이트를 추적하는 단계는, 데이터 캐시 히트에 대한 응답으로 카운트를 증가시키고 데이터 캐시 미스(data cache misses)에 대한 응답으로 상기 카운트를 감소시키는 단계를 포함하는 방법. - 제5항에 있어서,
상기 전체 히트를 추적한 것에 기초하여 상기 데이터 캐시에 대한 데이터 선인출을 이네이블하는 단계는, 상기 전체 히트 레이트가, 상기 카운트에 의해 표시된 이네이블 정의 임계값(defined enable threshold)으로 떨어질 때 상기 데이터 캐시에 대한 데이터 선인출을 이네이블하는 단계를 포함하는 방법. - 제5항에 있어서,
데이터 캐시 선인출을 이네이블하는 것과 연관해서 상기 카운트를 리셋함으로써 데이터 캐시 선인출의 이네이블 히스테리시스를 실행하는 단계를 더 포함하는 방법. - 제5항에 있어서,
최대 카운트 값에서 포화하도록(saturate) 구성된 포화 카운터(saturating counter)에서 상기 카운트를 유지하는 단계를 더 포함하는 방법. - 제3항에 있어서,
상기 전체 히트 레이트는 데이터 캐시 미스에 대한 데이터 캐시 히트의 전체 퍼센트를 반영하는 방법. - 제1항에 있어서,
상기 선인출 히트를 추적한 것에 기초하여 상기 데이터 캐시에 대한 데이터 선인출을 디스에이블하는 단계는, 상기 선인출 히트 레이트가 디스에이블 정의 임계값(defined disable threshold)으로 떨어질 때 상기 데이터 캐시에 대한 데이터 선인출을 디스에이블하는 단계를 포함하는 방법. - 제10항에 있어서,
상기 디스에이블 정의 임계값은 동적으로 계산되는 값에 기초해서 설정되는 방법. - 제10항에 있어서,
상기 디스에이블 정의 임계값은 선인출 오버헤드(prefetching overhead) 및 미스 페널티(miss penalties) 중 적어도 하나에 기초해서 조절되는 방법. - 제1항에 있어서,
데이터 캐시 선인출이 이네이블되는 것으로 동작을 시작하도록 상기 데이터 캐시를 초기화하는 단계를 더 포함하는 방법. - 제1항에 있어서,
데이터 선인출이 이네이블된 때 하나 이상의 정의된 선인출 정책에 따라 상기 데이터 캐시로 데이터 라인을 선인출하는 단계, 및 데이터 선인출이 이네이블되는지와 관계없이 데이터 캐시 미스에 응답하여 상기 데이터 캐시로 데이터 라인을 인출하는 단계를 더 포함하는 방법. - 명령어 실행 파이프라인(instruction execution pipeline); 및
상기 명령어 실행 파이프라인과 동작이 연관되고 캐시 메모리와 캐시 제어기를 포함하는 데이터 캐시
를 포함하고,
상기 캐시 제어기는,
데이터 선인출이 이네이블된 동안에 상기 데이터 캐시에 대한 선인출 히트를 추적하고 상기 선인출 히트를 추적한 것에 기초하여 상기 데이터 캐시에 대한 데이터 선인출을 선택적으로 디스에이블하고,
데이터 선인출이 디스에이블된 동안에 상기 데이터 캐시에 대한 전체 히트를 추적하고 상기 전체 히트를 추적한 것에 기초하여 상기 데이터 캐시에 대한 데이터 선인출을 선택적으로 이네이블하고,
상기 데이터 캐시에 대한 데이터 선인출을 디스에이블하는 것과 관련하여 상기 데이터 캐시에 대한 상기 전체 히트를 추적하기 위해 이용되는 제1 추적 메커니즘을 리셋하도록 구성된, 프로세서. - 제15항에 있어서,
상기 캐시 제어기는 상기 데이터 캐시에 대한 데이터 선인출과 연관하여 상기 선인출 히트를 추적하기 위해 이용되는 제2 추적 메커니즘을 리셋하도록 더 구성되는, 프로세서. - 제15항에 있어서,
상기 캐시 제어기는 상기 캐시 메모리 내의 어떤 데이터 라인이 선인출된 데이터 라인인지를 표시하는 표시자를 유지하고, 선인출 히트 레이트를 추적하기 위해 상기 표시자를 이용하는, 프로세서. - 제15항에 있어서,
상기 캐시 제어기는, 데이터 선인출을 디스에이블하는 것에 이어서, 상기 데이터 캐시에 대한 전체 히트를 추적하고 상기 전체 히트의 추적에 기초하여 상기 데이터 캐시에 대한 데이터 선인출을 이네이블하도록 더 구성되고, 상기 전체 히트를 추적하는 것은 상기 데이터 캐시에 대한 전체 히트 레이트를 추적하는 것을 포함하는, 프로세서. - 제18항에 있어서,
상기 캐시 제어기는 데이터 캐시 히트에 대한 응답으로 카운터를 증가시키고 데이터 캐시 미스에 대한 응답으로 상기 카운터를 감소시킴으로써 상기 전체 히트 레이트를 추적하는, 프로세서. - 제19항에 있어서,
상기 캐시 제어기는 상기 전체 히트 레이트가, 상기 카운터에 의해 표시된 이네이블 정의 임계값으로 떨어질 때 상기 데이터 캐시에 대한 데이터 선인출을 이네이블하는, 프로세서. - 제19항에 있어서,
상기 캐시 제어기는 데이터 캐시 선인출을 이네이블하는 것과 연관해서 상기 카운터를 리셋함으로써 데이터 캐시 선인출의 이네이블 히스테리시스 제어를 실행하는, 프로세서. - 제19항에 있어서,
상기 카운터는 최대 카운트 값에서 포화하는 포화 카운터를 포함하는, 프로세서. - 제19항에 있어서,
상기 카운터는 데이터 캐시 미스에 대한 데이터 캐시 히트의 전체 퍼센트를 반영하는, 프로세서. - 제15항에 있어서,
상기 캐시 제어기는 상기 선인출 히트 레이트가 디스에이블 정의 임계값으로 떨어질 때 상기 데이터 캐시에 대한 데이터 선인출을 디스에이블하는, 프로세서. - 제15항에 있어서,
상기 캐시 제어기는 데이터 캐시 선인출이 이네이블되는 것으로 동작을 시작하도록 상기 데이터 캐시를 초기화하는, 프로세서. - 제15항에 있어서,
상기 캐시 제어기는 데이터 선인출이 이네이블될 때 하나 이상의 정의된 선인출 정책에 따라 상기 데이터 캐시로 데이터 라인을 선인출하고, 데이터 선인출이 이네이블되는지와 관계없이 데이터 캐시 미스에 응답하여 상기 데이터 캐시로 데이터 라인을 인출하는, 프로세서.
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100421538B1 (ko) * | 2001-01-29 | 2004-03-18 | 대한민국 | 생약재의 휘발성 추출물을 유효성분으로 하는 문화재 보존용 살생물제 조성물 및 그를 이용한 문화재 보존방법 |
Families Citing this family (87)
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)
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)
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 |
-
2007
- 2007-07-10 US US11/775,320 patent/US7917702B2/en not_active Expired - Fee Related
-
2008
- 2008-03-25 EP EP08005493.5A patent/EP2015189B1/en not_active Not-in-force
- 2008-07-10 JP JP2010516253A patent/JP5095820B2/ja not_active Expired - Fee Related
- 2008-07-10 WO PCT/US2008/069710 patent/WO2009009704A1/en active Application Filing
- 2008-07-10 CN CN2008800240012A patent/CN101689147B/zh not_active Expired - Fee Related
- 2008-07-10 KR KR1020107000480A patent/KR101095217B1/ko not_active IP Right Cessation
Patent Citations (2)
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)
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 |