KR102424121B1 - 프리-페치 유닛, 그것을 포함하는 장치 및 그것의 동작 방법 - Google Patents

프리-페치 유닛, 그것을 포함하는 장치 및 그것의 동작 방법 Download PDF

Info

Publication number
KR102424121B1
KR102424121B1 KR1020150100416A KR20150100416A KR102424121B1 KR 102424121 B1 KR102424121 B1 KR 102424121B1 KR 1020150100416 A KR1020150100416 A KR 1020150100416A KR 20150100416 A KR20150100416 A KR 20150100416A KR 102424121 B1 KR102424121 B1 KR 102424121B1
Authority
KR
South Korea
Prior art keywords
fetch
data
requests
data stream
accuracy
Prior art date
Application number
KR1020150100416A
Other languages
English (en)
Other versions
KR20160010341A (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 KR20160010341A publication Critical patent/KR20160010341A/ko
Application granted granted Critical
Publication of KR102424121B1 publication Critical patent/KR102424121B1/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
    • 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
    • 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/6022Using a prefetch buffer or dedicated prefetch cache
    • 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/6024History based prefetching

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Apparatus For Radiation Diagnosis (AREA)
  • External Artificial Organs (AREA)
  • Supplying Of Containers To The Packaging Station (AREA)

Abstract

장치의 동작 방법은 데이터 스트림(data stream)과 관련된 복수의 프리-페치 캐시(pre-fetch cache) 요청들을 모니터링(monitoring)하는 단계, 상기 프리-페치 캐시 요청들의 정확도를 평가하는 단계 및 상기 프리-페치 캐시 요청들의 상기 정확도의 적어도 일부분을 기반으로, 데이터에 대한 상기 데이터 스트림의 현재 실제 요구를 초과하여 프리-페치 허용되는 데이터의 최대량을 조절하는 단계를 포함한다.

Description

프리-페치 유닛, 그것을 포함하는 장치 및 그것의 동작 방법{PRE-FETCH UNIT, APPARATUS HAVING THE SAME AND OPERATING METHOD THEREOF}
본 발명은 프리-페치 유닛, 프리-페치 유닛을 포함하는 장치 및 장치의 동작 방법에 관한 것이다.
일반적으로 복수의 컴퓨터들 및 컴퓨터들에 의해 실행되는 프로그램들은 무한대의 고속 메모리를 제공하기 위해 버레이셔스 에피타이트(voracious appetite)를 포함한다. 불행히도, 메모리(특히, 고속 메모리)는 가격 및 다이(die) 영역 측면에서 일반적으로 고가이다. 무한한 메모리를 제공하기 위한 종래의 방법으로, 고속 메모리는 기억 장치 계층이거나, 계층들 또는 단계들 형식의 메모리들이다. 일반적으로, 줄로 배열된 메모리 시스템은 복수의 단계 메모리들을 포함하고, 복수의 단계 메모리들 각각의 레벨은 이전 단계의 메모리보다 조금씩 커진다.
일반적인 컴퓨터 메모리 계급은 세 가지 레벨들을 포함할 수 있다. 가장 빠르고 작은 메모리(종종 제1 레벨(L1) 캐시라 부른다.)는 프로세서와 가장 가깝고, SRAM(Static Random Access Memory)를 포함한다. 다음 계층 또는 레벨은 제2 레벨(L2) 캐시라고 한다. 그리고, 제2 레벨(L2) 캐시는 제1 레벨(L1) 캐시보다 느리다. 하지만, 제2 레벨(L2) 캐시는 제1 레벨(L1) 캐시보다 크다. 제3 레벨은 메인 메모리이고, 일반적으로 DRAM(Dynamic RAM)을 포함하고, 종종 메모리 모듈들 내부에 삽입된다. 그러나, 다른 시스템들은 더 많은 혹은, 더 적은 메모리 계층들을 포함할 수 있다. 또한, 몇몇 시스템들, 프로세서 레지스터들, 및 영구적 또는 반 영구적 저장 장치들은 메모리 시스템의 일부분으로 간주될 수 있다.
메모리 시스템은 일반적으로 이용 가능한 데이터를 모두 포함하는 느리지만 큰 계층(예를 들어, 메인 메모리, 등)을 이용한다. 제2 계층(예를 들어, L2 캐시 등)은 그 데이터의 서브-세트(sub-set)를 포함하고, 그것으로부터의 다음 계층(예를 들어, L1 캐시 등)은 데이터의 제2 계층 부분 집합의 제2 서브-세트를 포함한다. 빠른 계층에 포함된 모든 데이터는 느린 계층에 포함된다.
일반적으로, 캐시들은 지역성 원리(예를 들어, 잠정 구역성, 공간 구역성 등)를 기반으로 하여 포함하는 데이터의 서브-세트를 결정한다. 프로그램은 가장 최근에 접근했거나 가장 최근에 접근한 데이터의 다음 데이터에 접근하기를 바라는 것으로 가정된다. 예를 들어, 영상 재생 프로그램이 데이터에 접근한다면, 영상 재생기는 영화의 다음 몇 초 후의 영상에 접근하고자 할 것이다.
그러나 때때로, 프로그램은 가장 빠른 캐시(예를 들어, L1 캐시, 등)에 이용 가능하지 않은 데이터 조각을 요청할 수 있다. 이는 일반적으로 "캐시 미스"라고 알려져 있고, 다음 메모리 계층(예를 들어, L2 캐시)으로부터 데이터를 요청하기 위한 가장 빠른 캐시를 발생한다. 지연은, 캐시 미스가 발생했다고 판정하는 캐시 데이터를 검색하고, 상기 프로세서에 제공하여 발생되는 바와 같이 이는 프로세서 성능에 비용이 많이 든다. 때때로, 메모리의 다음 계층(예를 들어, L2 캐시, 등)으로부터 요청한 데이터를 포함하지 않을 수 있고, 다음 계층(예를 들어, 메인 메모리, 등)으로부터 그것을 요청해야만 한다. 이것은 더 많은 지연을 발생시킨다.
본 발명의 목적은 캐시 미스를 감소시키기 위한 프리-페치 유닛 및 그것의 동작 방법을 제공하는 데에 있다.
본 발명의 실시 예에 따른 장치의 동작 방법은 데이터 스트림(data stream)과 관련된 복수의 프리-페치 캐시(pre-fetch cache) 요청들을 모니터링(monitoring)하는 단계, 상기 프리-페치 캐시 요청들의 정확도를 평가하는 단계 및 상기 프리-페치 캐시 요청들의 상기 정확도의 적어도 일부분을 기반으로, 데이터에 대한 상기 데이터 스트림의 현재 실제 요구를 초과하여 프리-페치 허용되는 데이터의 최대량을 조절하는 단계를 포함한다.
본 발명의 실시 예에 따른 장치는 데이터 스트림(data stream)과 관련된 복수의 프리-페치 캐시(pre-fatch cache) 요청들을 모니터링(monitor)하고, 상기 복수의 프리 페치 캐시 요청들의 정확도를 평가하고, 그리고 상기 복수의 프리-페치 요청들의 상기 정확도의 적어도 일부분을 기반으로, 데이터에 대한 상기 데이터 스트림의 현재 실제 요구를 초과하여 프리-페치 허용되는 상기 데이터의 상기 최대량을 조절하는 프리-페치 확인자 그리고 상기 복수의 프리-페치 캐시 요청들의 상기 정확도를 나타내는 제1 데이터 구조를 저장하고, 상기 데이터에 대한 상기 데이터 스트림의 현재 실제 요구를 초과하는 프리-페치 허용되는 상기 데이터의 상기 최대량을 나타내는 제2 데이터 구조를 저장하는 메모리를 포함한다.
본 발명의 실시 예에 따른 프리-페치 유닛(pre-fetch unit)은, 데이터 스트림(data stream)과 관련된 패턴 데이터(pattern data) 구조로 구성된 패턴 테이블(pattern table), 상기 데이터 스트림과 관련된 어댑티브 프리-페치 데이터(adaptive pre-fetch data)로 구성되고, 데이터에 대한 상기 데이터 스트림의 현재 실제 요구를 초과하여 프리-페치 허용되는 상기 데이터의 최대량을 나타내는 어댑티브 프리-페치 테이블(adaptive pre-fetch table) 그리고 상기 데이터 스트림에 대한 프리-페치 데이터에 대한 복수의 프리-페치 캐시(pre-fetch cache) 요청들로 구성된 런치 큐(launch queue)를 포함하되, 상기 프리-페치 유닛은 상기 프리-페치 캐시 요청들의 정확도를 평가하고, 그리고 상기 프리-페치 캐시 요청들의 상기 정확도의 적어도 일부분을 기반으로, 상기 데이터에 대한 상기 데이터 스트림의 현재 실제 요구를 초과하여 프리-페치 허용되는 상기 데이터의 상기 최대량을 조절한다.
본 발명은 캐시 미스를 감소시킴으로써 향상된 성능을 갖는 장치를 제공한다.
도 1은 본 발명의 제1 실시 예에 따른 시스템을 보여주기 위한 블록도이다.
도 2는 본 발명의 실시 예에 따른 데이터 구조들을 보여주는 블록도이다.
도 3은 본 발명의 실시 예에 따른 상태 기계를 보여주기 위한 블록도이다.
도 4는 본 발명의 제2 실시 예에 따른 시스템을 보여주기 위한 블록도이다.
도 5는 본 발명의 실시 예에 따른 기술을 보여주기 위한 순서도이다
도 6은 본 발명의 실시 예에 따른 정보 처리 시스템을 보여주기 위한 블록도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
아래에서, 장치 및 그것의 동작 방법이 본 발명의 특징 및 기능을 설명하기 위한 한 예로서 사용된다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 본 발명은 다른 실시 예들을 통해 또한, 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 용도에 따라 수정되거나 변경될 수 있다.
비록 "제 1", "제 2" 등의 용어가 여기서 다양한 요소를 설명하기 위해 사용될 수 있다 하더라도, 이들 요소는 이 용어들에 의해 한정되지 않는다. 이 용어들은 단지 다른 것들로부터 하나의 구성요소를 구별하기 위해 사용될 수 있다. 본 발명의 상세한 설명에서 사용되는 "포함하는" 또는 "구성되는"과 같은 용어는 설명된 특징, 단계, 동작, 성분, 및/또는 구성요소의 존재를 명시하나, 추가적인 하나 이상의 특징, 단계, 동작, 성분, 구성요소 및/또는 그들의 그룹의 존재를 가능하게 한다. 실시 예의 설명에 있어서, 각 층의 "위(상)/아래(하)(on/under)"에 형성되는 것으로 기재되는 경우에 있어, 위(상)/아래(하)는 직접적으로(directly) 또는 다른 층을 개재하여(indirectly) 형성되는 것을 모두 포함한다. 한 요소 또는 층이 다른 요소 또는 층에 "연결되는", "결합하는", 또는 "인접하는" 것으로 언급되는 때에는, 다른 요소 또는 층에 직접적으로 연결되거나, 결합 되거나, 또는 인접하는 것일 수 있고, 혹은 그 사이에 끼워지는 요소 또는 층이 존재할 수 있음이 잘 이해될 것이다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 본 발명의 실시 예를 첨부된 도면을 참조하여 설명할 것이다.
실시 예들은 이상적인 실시 예들의 도시적인 예시들인 단면도들로 나타내어진다. 제조 기술 및/또는 허용 오차와 같은 결과로써 예시들의 형태의 변형들이 예상된다. 실시 예들은 본 원에 예시된 영역들의 특정 형태로 한정되어 해석되지 않고, 제조에서 발생하는 형태들의 편차들을 포함한다.
다양한 실시 예들로서, 시스템(프로세서, 시스템-온-칩(system-on-chip)은 하나 이상의 명령들을 처리 또는 실행하기 위한 실행 유닛을 포함할 수 있다. 일 실시 예로서, 이러한 명령들은 프로그램을 발생시킨다. 다양한 실시 예들로서, 실행 유닛은 프로세서 또는 컴퓨터 구성요소들에 의해 포함될 수 있다. 다양한 실시 예들로서, 이러한 명령들은 이따금 메모리 시스템(L1 캐시, L2 캐시 및 메인 메모리)에 저장된 데이터에 접근(읽기 또는 쓰기)할 수 있다.
이러한 일 실시 예로서, 명령들이 데이터에 접근할 때, 명령들은 메모리 시스템의 가장 빠른 또는 제1 티어(tier)인 L1 캐시로부터 데이터를 제1 요청할 수 있다. 요청된 데이터가 캐시(캐시 히트)에 포함되면, L1 캐기는 데이터를 공급할 수 있고(또는 저장된 데이터를 쓰기 명령에 관하여 업데이트), 그리고 실행 유닛은 무사히 처리할 수 있다.
그러나, 다양한 실시 예들로서, 요청된 데이터가 캐시에 포함되지 않으면(캐시 미스), L1 캐시는 L2 캐시(메모리 시스템의 다음 레벨)로부터 데이터를 차례대로 요청할 수 있다. 이는 진행 유닛의 처리를 위한 능력에 바람직하지 않은 영향을 미칠 수 있고, 명령들의 처리의 지연을 발생시킬 수 있다.
일반적으로, L1 캐시는 L2 캐시로부터 한 번에 하나의 데이터를 요청할 수 있다. 그러나, 몇몇 실시 예들로서, 시스템은 L1 캐시로부터 만들어진 L2에 대한 큐(queue) 데이터 요청들로 구성된 L1 필 버퍼(fill buffer)를 포함할 수 있다. 이러한 실시 예로서, L1 캐시는 캐시 미스를 발생시키는 데이터의 이행을 기다리는 동안, 실행 유닛으로부터 데이터에 대한 추가적인 요청들을 수용할 수 있다.
이와 같이, L2 캐시는 데이터의 서브-세트를 저장할 수 있다. 캐시-미스 데이터가 캐시에 포함되면, 데이터는 L1 캐시로 제공될 수 있다. 캐시 미스가 발생되면, L2 캐시 레벨이다. L2 캐시는 메인 메모리(또는 메인 메모리 시스템의 다음 티어)로부터 미싱(missing) 데이터를 요청할 수 있고, 메인 메모리는 메인 메모리 내에 저장된 데이터를 포함할 것으로 예상된다. 다양한 실시 예들로서, 메인 메모리는 데이터의 서브-세트를 저장할 수 있고, 가능한 데이터의 전체는 스토리지 매체 또는 다른 반영구적 또는 영구적 메모리 장치(하드 드라이브(hard drive), 솔리드 스테이트 장치(solid state device), 광디스크)에 저장될 수 있다. 이는 본 발명을 설명하기 위한 예시일 뿐, 본 발명을 한정하지 않는다.
캐시 미스들은 일반적으로 달갑지 않은 것이다. 시스템은 명령들로부터 요청된 데이터에 대한 예측을 할 수 있고 메모리 시스템의 이용 가능한 미리 예측된 데이터를 발생시킬 수 있다. 몇몇 실시 예들로서, 프리-페치 유닛은 명령들로부터 직접적으로 발생된 복수의 캐시 미스들을 감소시킬 수 있다. 이러한 실시 예로서, 실행되는 데이터의 필요성에 대한 명령이 발생하기 전에 데이터를 요청함으로써, 캐시 미스는 명령이 데이터를 필요로 할 때까지 데이터 요청에 의한 캐시 미스가 해결될 수 있다. 일 실시 예로서, 실행 유닛은 캐시 미스가 발생했음을 인식하지 못할 수 있고, 부정적인 영향이 미친 명령들의 실행을 가질 수 있다. 이는 본 발명을 설명하기 위한 예시일 뿐, 본 발명을 한정하지 않는다.
도 1은 본 발명의 제1 실시 예에 따른 시스템 또는 프리-페치 유닛(pre-fetch unit) 또는 엔진(100)을 보여주기 위한 블록도이다. 실시 예로서, 가능한 프리-페치 유닛 또는 프리-페쳐(pre-fetcher)는 피상적인 개요로 도시된다. 프리-페쳐(100)는 프리-페치 필터(filter)(102), 리오더 큐(re-order queue)(104), 패턴 식별자 또는 트레이닝 테이블(training table)(106), 패턴 테이블(pattern table)(108), 런치 큐(lqunch queue)(110) 및 프리-페치 확인자 또는 확인 테이블(112)을 포함할 수 있다. 이는 본 발명을 제한하지 않는 실시 예로서 이해할 수 있다.
실시 예로서, 데이터 캐시(cache) 요청들 또는 요구들은 프리-페치 필터(102)에 입력될 수 있다. 다양한 실시 예들로서, 프리-페치 필터(102)는 동일한 또는 사전 발생된 캐시라인(cacheline) 또는 메모리 어드레스와 관련된 데이터 캐시 요청들을 트랙(track)할 수 있다. 이러한 일 실시 예로서, 프리-페쳐(100)의 나머지는 캐시라인들의 경험뿐만 아니라 동일 캐시라인의 서브-포션들(sub-portions)또는 마디들을 처리할 수 있다. 이는 본 발명을 제한하지 않는 실시 예로서 이해할 수 있다.
실시 예로서, 주어진 캐시라인의 요청은 리오더 큐(104)로 전송된다. 다양한 실시 예들로서, 리오더 큐(104)는 프로그램 오더에 데이터 캐시 요청들을 리오더하거나 오더 요청들은 프로그램 또는 명령들의 스트림(stream)에 의해 자연스럽게 발행될 수 있다. 다양한 실시 예들로서, 전체 컴퓨팅 시스템 또는 로드-스토어 유닛(load-store unit)은 고장 중(다양한 이유들에 의해) 데이터 캐시 요청들을 발행할 수 있고, 리오더 큐(104)는 요청들의 순서로 교대로 반전하도록 구성될 수 있다.
일 실시 예로서, 캐시 프리-페쳐(100)는 명령들의 결과로써 발생된 메모리 액세스들(memory accesses)의 패턴을 감지하기 위한 패턴 식별자 또는 트레이닝 테이블(106)을 포함할 수 있다. 예를 들어, 명령들의 스트림 또는 시리즈들은 3 킬로바이트(kilobytes, KB), 다음 4KB, 다음4KB(3+4+4)의 패턴의 메모리 어드레스들로 액세스할 수 있다. 이는 본 발명을 제한하지 않는 실시 예로서 이해할 수 있다.
다양한 실시 예들로서, 명령들은 명령들의 스트림들의 수를 포함할 수 있다. 이러한 맥락에서, 명령들의 스트림 또는 명령 스트림은 일반적인 프로그램, 기능, 서브루틴(subroutine), 및 작업을 수행하기 위한 시퀀스(sequence)의 실행과 관련된 명령들의 시리즈들(series)일 수 있다. 현대 컴퓨터들, 실행 유닛은 멀티-테스킹(multi-tasking), 멀티-쓰레딩(multi-threading), 타임 슬라이싱(time slicing)등과 같은, 하지만 이에 한정되지 않는, 기술들을 통해 동시에 명령들의 하나 이상의 스트림들을 실행할 수 있다. 이와 같이, 프리-페치 유닛(100)은 다양한 스트림들에 대한 프리-페치 데이터로 구성될 수 있다. 본 발명을 설명하기 위해 단일 스트림이 개시되어있지만, 이는 복수의 스트림들에 의해 유지, 창조 및 채용될 수 있는 데이터 구조들 동일한 프로세스를 이해하기 위한 예시이다.
이러한 실시 예로서, 패턴 식별자(106)는 명령들의 다양한 스트림들의 메모리 액세스 패턴들을 감지할 수 있다. 이러한 일 실시 예로, 명령들의 제1 스트림은 메모리 액세스들의 제1 세트(3+4+4, 1+8+8)와 관련되고, 명령들의 제2 스트림은 메모리 액세스들의 제2 세트(3+5+4, 4+8+8, 3+4+4)와 관련된다. 다양한 실시 예들로서, 두 개 이상의 명령들의 스트림들은 유사한 패턴들과 관련될 수 있다. 이는 본 발명을 제한하지 않는 실시 예로서 이해할 수 있다.
다양한 실시 예들로서, 프리-페치 유닛(100)은 메모리 감지되는 또는 예측되는 액세스 패턴들을 저장하도록 구성된 패턴 테이블(108)을 포함하거나 유지할 수 있다. 다양한 실시 예들로서, 패턴 테이블(108)은 프리-페치 유닛(100)으로부터 포함되는 메모리 내에 저장된 데이터 구조를 포함할 수 있다. 몇몇 실시 예들로서, 패턴 테이블 구조(108)은 테이블은 포함하지 않고 다른 형태의 데이터 구조(연결 리스트, 어레이(array))를 포함할 수 있다. 이는 본 발명을 제한하지 않는 실시 예로서 이해할 수 있다.
다양한 실시 예들로서, 캐시 프리-페쳐(100)는 적어도 부분적으로, 패턴 테이블(108)에 저장된 패턴들) 예를 들어, 3+4+4 패턴이 식별되고, 3KB 바운더리(boundary)로 시작하는 메모리 어드레스가 감지되면, 캐시 프리-페쳐(100)는 다음 두 개의 4KB 바운더리들로 데이터를 프리-페치할 수 있다. 이는 본 발명을 제한하지 않는 실시 예로서 이해할 수 있다.
도시된 실시 예에 따른 패턴 테이블(108)은 감지된 패턴의 명령 스트림과 관련된 패턴 엔트리들(pattern entries)(134)을 포함할 수 있다. 도 2 및 도 3을 통해서, 본 발명이 실시 예에 따른 패턴 테이블(108)은 다양한 식별 패턴들을 포함하는 프리-페쳐(100)의 신뢰 수준을 나타내거나 모니터링 하는 어댑티브 프리-페치 엔트리들(adaptive pre-fetch entries)(136)를 더 포함할 수 있다. 실시 예로서, 패턴테이블(108)은 다양한 식별 패턴들을 갖는 프리-페쳐(100)의 신뢰 수준을 동적으로 판단하기 위한 어댑티브(adaptive) 상태 기계(138)를 포함할 수 있다. 이는 본 발명을 제한하지 않는 실시 예로서 이해할 수 있다.
식별된 패턴들에 응답하여 발생된 프리-페치 데이터 요청들은 런치 큐(110)에 저장될 수 있다. 다양한 실시 예들로서, 런치 큐(110)는 필 버퍼(fill buffer)(L2 필 버퍼) 또는 캐시(L2 캐시)로 직접 프리-페치 데이터 요청들을 디스페치(dispatch)할 수 있다.
이러한 실시 예로서, 프리-페치들에 의해 요청된 프리-페치 데이터는 캐시들(L1 캐시, L2 캐시)에 저장될 수 있다. 이윽고, 명령 또는 프로그램은 실제로 데이터를 요청할 수 있다(명시적으로 프리-페칭하는 것과 대조적으로). 프리-페쳐(100)가 데이터에 대한 실제 요구를 정확하게 예측하면, 실제 데이터 요청 또는 요구는 캐시 히트(hit)를 발생시킨다. 대조적으로, 프리-페쳐(100)가 데이터에 대한 실제 요구를 부정확하게 예측하면 실제 데이터 요청 또는 요구는 캐시 미스(miss)를 발생시킨다(실제 요청된 데이터는 이전에 프리-페치되지 않았고, 캐시 내에 위치한다).
캐시 프리-페쳐(100)에 의해 만들어진 예측들이 유용한 것을 확인할 수 있다. 다양한 실시 예들로서, 피드백 메커니즘(feedback mechanism)은 프리-페치 유닛(100)으로부터 만들어진 예측들을 개선하기 위해 이용될 수 있다.
다양한 실시 예들로서, 프리-페치 유닛(100)은 프리-페치 확인자 및/또는 확인 테이블(112)을 포함할 수 있다. 실시 예로서, 프리-페치 확인자(112)는 명령들(또는 실행 유닛)에 의해 만들어진 데이터 액세스들을 모니터링할 수 있고, 캐시 프리-페쳐(100)다 명령들이 프리-페치된 데이터에 액세스하는 것을 올바르게 예측하는지 여부에 대해 판단할 수 있다. 다양한 실시 예들로서, 이러한 피드백(긍정적 및/또는 부정적)을 기반으로, 패턴 테이블(108)은 예측 기술(도 2 및 도 3에 상세하게 언급된다)을 판단할 수 있다. 이는 본 발명을 제한하지 않는 실시 예로서 이해할 수 있다.
실시 예로서, 프리-페치 확인자(112)는 실행 유닛으로부터 데이터 액세스 요청(로드, 저장, 독출, 쓰기)을 수신할 수 있다. 다양한 실시 예들로서, 데이터 액세스 요청은 액세스된 데이터와 관련되고 액세스된 데이터가 저장되는 특정 메모리 어드레스를 포함할 수 있다. 다양한 실시 예들로서, 데이터 액세스 요청은 메모리 시스템으로부터 수신되고, 상술된 기본적인 캐시 계층 서술에 따라 처리될 수 있다. 몇몇 실시 예들로서, 프리-페치 확인자(112)는 모든 데이터 액세스 요청 대신 메모리 시스템으로부터 캐시 히트 및/또는 미스를 수신할 수 있다.
다양한 실시 예들로서, 프리-페치 확인자 또는 확인 테이블(112)은 액세스 데이터(또는 액세스 데이터와 관련된 메모리 어드레스의 일부분)가 프리-페치 유닛(100)으로부터 프리-페치 또는 예측되었는지에 대해 판단할 수 있다. 일 실시 예로서, 프리-페치 확인자(112)는 실제 메모리 액세스(액세스가 캐시 히트 및/또는 미스의 결과인지, 액세스된 데이터가 이전에 프리-페치 되었는지, 메모리 어드레스)의 패턴 식별자(106) 및/또는 패턴 테이블(108)을 알릴 수 있다.
도 1에 도시된 실시 예는 본 발명을 설명하기 위한 예시일 뿐 본 발명을 한정하지 않는다. 프리-페쳐(100)는 복수의 구조들 또는 실시 예들을 통해 구현된다. 더 나아가, 다른 예시들 또는 실시 예들은 개시된 본 발명에 의해 도시된 어댑티브 상태 기계(138) 및/또는 적합한 프리-페치 엔트리들(136)을 포함할 수 있다.
도 2는 본 발명의 실시 예에 따른 데이터 구조들(200)을 보여주는 블록도이다. 구체적으로, 이러한 데이터 구조들(202, 224)은 패턴 테이블(도 1에 도시) 또는 하나 이상의 다른 구조들에 떨어져서 존재할 수 있다. 일 실시 예로서, 각각의 명령 스트림은 유사한 데이터 구조들(200)과 관련될 수 있고, 이러한 데이터 구조들(200)은 명령 스트림에 의해 어떤 데이터가 요구되는지 예측하기 위해 채택될 수 있다.
상술한 바와 같이, 프리-페치 유닛 또는 엔진의 주요 목적은 메모리 계층의 여러 부분들에 의해 발생하는 효과적인 레이턴시(latency)를 감소시키기 위함이다. 프리-페치 엔진은 적절한 캐시들 내로 프리-로드(pre-loaded) 또는 프리-페치된 명령 스트림에 의해 데이터가 실제로 요청될 때, 명시적으로 데이터를 요청하고, 명백한 레이턴시(명령 스트림의 관점으로부터)는 감소할 수 있다(캐시 미스와 비교하여).
프리-페치 유닛은 데이터에 대한 명령 스트림의 현재 실제 요구에 훨씬 앞서 남아있기 위해 충분한 데이터 또는 캐시라인들을 프리-페치하는 것을 원한다. 캐시라인들의 레벨에서, 프리-페치 유닛은 프리-페치 스트림의 “정도”로써 불린다. 이는 오프셋(offset) 또는 프리-페치 엔진에서 패턴의 일부분으로써 사용되는 어드레스 패턴과 혼동하면 안 된다. “정도”는 프리-페치된 데이터의 얼마나 많은 조각들이 동시에 검색 또는 저장가능 여부와 관련 있다.
그러나, 프리-페치 유닛은 원치 않는 것으로 판명된 거짓된 프리-페치들을 방지하기를 원한다(명령 스트림에 의해 실제로 액세스 되지 않은 추측 프리-페치). 다양한 실시 예들로서, 예를 들어, 실제 요구 스트림들의 길이가 매우 짧거나, 잠재적으로, 프리-페치 유닛에 의한 부정확한 감지/예측 때문에 이는 발생할 수 있다. 이는 본 발명을 설명하기 위한 예시일 뿐, 본 발명을 한정하지 않는다. 거짓된 또는 부정확한 프리-페치들은, 필 버퍼(fill buffer) 공간, 소비 대역폭, 및 소비 전력과 같은 리소스들(resources)을 낭비할 수 있다. 이는 본 발명을 설명하기 위한 예시일 뿐, 본 발명을 한정하지 않는다.
다양한 실시 예들로서, 프리-페치 유닛은 이전에 프리-페치된 데이터의 정확도를 동적으로 평가하고, 데이터에 대한 각각의 데이터 스트림의 현재 실제 요구를 초과한 허용범위 내에서 프리-페치된 데이터의 최대치가 증가 또는 감소한다. 일 실시 예로서, 데이터 구조들(200)은 프리-페치들의 정확도를 동적으로 모니터링 하는 것을 돕고, 프리-페치들의 정확도를 평가하고, 허용범위 내에서 프리-페치된 데이터의 양 또는 정도를 판단하기 위해 채택될 수 있다. 이는 본 발명을 설명하기 위한 예시일 뿐, 본 발명을 한정하지 않는다.
실시 예로서, 패턴의 엔트리(202)는 존재한다. 다양한 실시 예들로서, 엔트리는 실별자 패턴(3+3+4 패턴) 및 관련 명령 스트림을 포함하는 일반적인 패턴 데이터(210)를 포함할 수 있다. 이는 본 발명을 설명하기 위한 예시일 뿐, 본 발명을 한정하지 않는다. 패턴 데이터(210)의 세부 사항들은 개시된 발명의 초점이 아닌, 특정 명령 스트림의 각각에 대해, 패턴 테이블의 엔트리 또는 다른 데이터 또는 신뢰 데이터(290)와 관련된 세트인 일반적인 패턴 데이터(210)의 세트에 대해 명확하게 하기 위해 도시된다.
다양한 실시 예들로서, 각각의 패턴 테이블 엔트리는 주어진 신뢰 레벨(level) 또는 상태(212)에 할당될 수 있다. 신뢰 상태(212)는 얼마나 많은 프리-페치의 신뢰가 패턴 엔트리에 가지고 있는지 또는 패턴 엔트리에 대한 프리-페치들이 얼마나 정확한지를 나타낸다. 패턴 엔트리에 대한 프리-페치들이 더 정확하다면, 신뢰 상태는 더 높을 것이다. 반대로, 패턴 엔트리에 대한 프리-페치들이 덜 정확하면, 신뢰 상태는 더 낮을 것이다.
실시 예로서, 신뢰 상태는 주어진 패턴 엔트리에 대해 발생한 프리-페치들의 정도 또는 수를 좌우할 수 있다. 신뢰 상태가 낮으면, 허용 가능한 프리-페치들의 수도 작을 것이다. 신뢰 상태가 높으면 허용 가능한 프리 페치들의 수도 클 것이다.
실시 예로서, 신뢰 상태(212)는 패턴 엔트리(202) 내에 포함되는 복수의 파라미터들(parameters) 또는 설정 값들(292)을 포함할 수 있다. 다른 실시 예로서, 파라미터들은 신뢰 상태(212)의 모든 사례들과 동일할 수 있다(신뢰의 낮은 레벨과 관련된 모든 패턴 엔트리들은 5의 값의 P를 가질 수 있다). 이러한 실시 예로서, 구체적인 파라미터 값들(292)은 다른 곳(공통 설정 테이블, 확인 상태 정의 어레이)에 저장될 수 있고, 각각의 패턴 엔트리(202)와 함께 저장되지 않는다. 그러나, 도 2의 실시 예는 개시된 본 발명을 보다 충분하게 설명할 수 있다. 이는 본 발명을 설명하기 위한 예시일 뿐, 본 발명을 한정하지 않는다.
개시된 발명에 의해 추적된 다른 값을 설명하면, 신뢰 상태와 관련된 파라미터들(292)은 더 잘 이해될 것이다. 상술한 바와 같이, 프리-페치 유닛은 프리-페칭 예측들을 모니터링 및 평가하고, 주어진 패턴 엔트리에 대해 발생할 수 있는 프리-페치들의 수를 동적으로 판단한다. 실시 예로서, 프리-페치 유닛은 처리되지 않은(아직 실제 데이터 요구들 또는 요청들과 일치되지 않은), 그리고 클로즈(close)되고 있는(실제 데이터 요구들 또는 요청들과 일치하는) 추측 프리 페치들의 수를 측정 또는 카운트(count)할 수 있다.
이러한 실시 예로서, 패턴 엔트리(202)는 실제 데이터 요구들 또는 요청들과 일치하지 않지만, 발생한 허용 가능한 프리-페치들의 카운트(P(217))를 포함하는 제1 필드(field) 또는 값을 포함할 수 있다. 패턴 엔트리(202)는 실제 데이터 요구들 또는 요청들과 일치하고, 발생한 프리-페치들의 카운트(C(218))를 포함하는 제2 필드 또는 값을 포함할 수 있다. 이러한 실시 예로서, 추측 프리-페치들이 실제 데이터 요청들과 일치하면 P(217) 값은 감소하고, C(215) 값은 증가한다. 이와 같이, 새로운 추측 프리-페치들은 만들어 지지만, 실제 데이터 요청들과 일치하지 않으면, P(217) 값은 증가하고, C(218) 값은 동일하게 남아있는다.
다양한 실시 예들로서, P(217) 및 C(218) 값들은 프리-페치 유닛으로부터 만들어진 예측들이 얼마나 정확한지 판단하기 위해 주기적으로 평가 또는 검사된다. 일 실시 예로서, 주기는 미리 정해진 시간의 양을 기반으로 할 수 있다. 다른 실시 예로서, 주기는 하나 이상의 이벤트들(events)을 기반으로 할 수 있다. 이러한 일 실시 예로서, 데이터 구조(224)와 관련하여 상세하게 설명된 바와 같이, 윈도잉 메커니즘(windowing mechanism)이 사용될 수 있다. 그러나 더 간단한 시간 기반 메커니즘이 설명될 것이다.
이러한 일 실시 예로서, 모든 미리 정해진 세컨즈(seconds), 밀리세컨즈(milliseconds), 또는 클럭 사이클(clock cycles) 마다 프리-페치 엔진은 P(217) 및 C(218)를 비교함으로써 그것의 예측들의 정확도를 평가 또는 검사한다. 평가를 기반으로, 프리-페치 엔진은 패턴 엔트리(202)에 할당된 신뢰 상태(212)를 변화시킬 수 있다(또는 변화시킬 수 없다.).
상술한 바와 같이, 각 신뢰 상태(212)는 하나 이상의 파라미터들(292)과 관련될 수 있다. 다양한 실시 DP들로서, 제1 파라미터는 신뢰 상태(212)가 저하되거나, 감소하거나, 낮아지기 전에 허용된 정확한 프리-페치들(Cmin(213))의 최소 개수를 포함할 수 있다. 유사한 실시 에로서, 제2 파라미터는 신뢰 상태(212)가 향상되거나, 높아지거나 증가하기 전에 허용된 정확한 프리-페치들(Cmax(214))의 최대 개수를 포함할 수 있다. 이러한 일 실시 예로서, 평가 단계 동안에(타이머(timer), 또는 윈도우와 관련된 상태와 같은 이벤트의 만료가 발생), 확인된 정확한 또는 더 이상 추측하지 않는 프리-페치들(C(218))의 개수는 Cmin(213) 및 Cmax(214)와 비교되거나 판단된다. 이러한 임계치들과 비교를 기반으로, 신뢰 상태(212)는 낮아지거나 높아지거나 그래도 있을 수 있다. 도 3과 관련하여 아래에 설명된 바와 같이, 신뢰 상태(212)는 조절되거나 변화되고, 파라미터들(292)은 변화될 수 있다.
다양한 실시 예들로서, 각각의 신뢰 상태(212)는 실제 데이터 요구들 또는 요청들과 일치하지 않지만 발생된 허용 가능한 프리-페치들의 최대 개수 또는 정도(Pmax(215))를 나타내는 파라미터와 관련될 수 있다. 상술한 바와 같이, 신뢰 상태(212)가 높아지거나 또는 낮아짐으로써, Pmax(215) 값은 높아지거나 낮아질 수 있다. 이러한 실시 예로서, Pmax(215) 값은 특정 패턴 엔트리(202)에 대해 수행되는 프리-페칭 양을 제한할 수 있다. 프리-페쳐가 패턴 엔트리(202)의 신뢰를 얻으면, 중요도가 높은 프리-페치들은 허용될 수 있다. 반대로, 프리-페쳐가 신뢰를 잃으면, 패턴 엔트리(202)는 중요도가 낮은 프리-페치들이 혀용될 수 있다. 이러한 일 실시 예로서, Pmax(215)는 발생할 수 있는(P(217)에 의해 측정됨으로써) 중요한 프리-페칭의 양을 제한하는 임계 값으로써 기능할 수 있다. 데이터 구조(224)와 관련하여 설명된 바와 같이, Pmax(215)에 대한 값은 주기적인 정확도 평가의 타이밍 또는 발생에 영향을 미칠 수 있다. 이는 본 발명을 설명하기 위한 예시일 뿐, 본 발명을 한정하지 않는다.
다양한 실시 예들로서, 각각의 평가 단계 후, P(217) 및 C(218) 값들은 제로(zero)가 되거나, 어떠한 값으로 리셋(reset)된다. 실시 예들로서, 패턴 엔트리(202)는 패턴 엔트리(202)의 오류들의 누계(AI(222))의 레벨을 측정한 값 또는 필드를 포함할 수 있다. 이러한 일 실시 예로서, P(217) 및 C(218)의 값들은 리셋되고(다음 모니터링 주기를 위한 준비), P(217) 및 C(218) 사이의 차이는 모니터링 기간 동안 발생된 프리-페치 오류들의 개수로 간주될 수 있다. 주어진 모니터링 기간 동안 발생된 오류들의 개수는 패턴 엔트리(202)의 수명 동안 발생하는 모든 오류들의 누계(AI(222))에 추가될 수 있다. 몇몇 실시 예들로서, AI(222)는 패턴 엔트리(202)의 전체 수명 동안은 제외하고, 제2 기간 동안(C(218)을 측정하기 위해 사용되는 것과 다른 기간)의 오류들의 개수, 또는 슬라이딩 타임 윈도우(sliding time window) 동안의 오류들의 개수를 카운트할 수 있다. 이는 본 발명을 설명하기 위한 예시일 뿐, 본 발명을 한정하지 않는다.
실시 예로서, 각각의 신뢰 상태(212)는 패턴 엔트리(202)의 수명 동안(또는 실시 예의 제2 모니터링 기간) 최대로 허용된 누적 오류들의 개수를 나타내는 파라미터(AImax(216))와 관련될 수 있다. 더욱 바람직한 실시 예로서, AImax(216)의 값은 글로벌(global)일 수 있고, 모든 신뢰 상태들(212)과 동일할 수 있다.
다양한 실시 예들로, AI(222)가 AImax(216)의 임계치에 도달하거나 초과하면, 프리-페치 유닛은 시정 조치를 취한다. 일 실시 예로서, 시정 조치는 패턴 엔트리(202)의 킬링(killing) 또는 무효화를 포함할 수 있고, 더 이상 실행되지 않는 프리-페치들은 이를 기반으로 한다. 이러한 일 실시 예로서, 프리-페치 유닛은 새로운 패턴을 기반으로 리-트레인(re-train)할 수 있다. 이러한 일 실시 예로서, 새로운 패턴 엔트리(202)는 새롭게 식별되고 새롭게 트레인(train)된 패턴을 이용할 수 있다.
다른 실시 예로서, 시정 조치는 신뢰 상태의 변화(낮은 신뢰 상태로, 또는 디폴트(default) 신뢰 상태로)를 포함할 수 있다. 이는 본 발명을 설명하기 위한 예시일 뿐, 본 발명을 한정하지 않는다.
다양한 실시 예들로서, 패턴 엔트리(202)는 평가 단계 또는 P(217) 및 C(218)의 평가가 발생될 때 영향을 주는 메커니즘 또는 필드(224)를 포함할 수 있다. 이러한 필드(224)는 상술한 바와 같은 타이머, 또는 카운터를 포함할 수 있다. 필드(224)는 하나 이상의 모니터링 윈도우와 같은 더 복잡한 데이터 구조를 포함할 수 있다. 실시 예로서, 데이터 구조(224)는 두 개의 모니터링 윈도우들(231, 232)를 포함할 수 있다. 이는 본 발명을 설명하기 위한 예시일 뿐, 본 발명을 한정하지 않는다.
다양한 실시 예들로서, 필드(224)는 패턴 엔트리(202) 내에 포함되지 않고, 패턴 엔트리(202)와 거의 관련이 없다. 예를 들어, 일 실시 예로서, 데이터 구조(224)는 충분히 복잡할 수 있고, 이는 프리-페치 유닛의 다른 요소에 개별적으로 저장하기 위해 유리할 수 있다.
일 실시 예로서, 데이터 구조(224)는 두 개의 모니터링 윈도우들(231, 232)를 포함할 수 있다. 다양한 실시 예들로서, 정도 또는 Pmax(215) 수는 프리-페치들의 개수를 제한하기 위해 그리고 평가 단계(P(217) 및 C(218)의 측정)가 발생할 때 판단하기 위해서 이용될 수 있다.
일 실시 예로서, 제1 윈도우(231)는 정의될 수 있다. 제1 윈도우(231)는 허용된 아웃스탠딩(불일치 또는 여전히 추측하는) 프리 페치들(Pmax(215) 또는 신뢰 상태(212)의 정도)의 최대 개수를 저장할 만큼 충분히 크다. 프리-페치 요청들은 만들어 지거나 완성되고, 프리-페치 요청들은(또는 메모리 어드레스들 또는 메모리 어드레스들의 대표) 제1 윈도우(231) 내에 저장된다. 프리-페치들은 제1 윈도우(231) 내에 순차적으로 저장된다.
실시 예로서, 제1 윈도우(231)는 프리-페치 정보를 저장하기 위해 10 슬롯들(slots) 또는 공간들을 갖는다(이 예시에서 Pmax(215)는 10과 동일하다). 프리-페치들이 만들어지면, 프리-페치들은 다양한 슬롯들(P01, P02, P03, P04, P05, P06, P07, P08, P09, P10)에 저장될 수 있다.
실제 데이터 요청들 요구들이 만들어지면, 확인 유닛은 프리-페치된 데이터에 대한 실제 데이터 요구들을 매치(match)한다. 이러한 일 실시 예로서, 추측 또는 예측된 프리-페치들은 확인된 프리-페치들 또는 데이터로 변화될 수 있다.
예를 들어, 실행 유닛으로부터의 실제 데이터 요구는 슬롯(242) 또는 P02와 관련하여 예측된 또는 추측된 데이터를 위해 만들어지고, 슬롯(242)의 값은 P02 값에서 C02 값으로 변할 수 있다. 이러한 일 실시 예로서, 이것은 아홉 개의 아웃스탠딩 프리-페치들만이 있음을 나타낸다(그리고 P(217)는 10에서 9고 변화된다). 다양한 실시 예들로서, 더 많은 실제 데이터 요구들이 더 많은 예측 또는 추측 슬롯 값들은 Ps(예측된)에서 Cs(확인된)으로 변화할 수 있다. 다양한 실시 예들로서, 이는 플래그 비트(flag bit)의 사용을 포함한다. 이는 본 발명을 설명하기 위한 예시일 뿐, 본 발명을 한정하지 않는다.
다양한 실시 예들로서, 모니터링의 이러한 형태는 특정 스트림으로부터의 확인들(또는 실제 데이터 요구들)이 프로그램 오더(order)로 도착한다고 가정할 수 있다. 다양한 실시 예들로서, 로드-저장 유닛이 적합한 방식으로 동작하면, 이는 문제가 되지 않을 수 있다. 그러나, 아웃-오브-오더 로드-스토어 유닛을 포함하는 실시 예들에서, 로드들 및 스토어들의 요구를 리-오더링(re-ordering)하는 메커니즘은 요구될 수 있다. 도 1에서, 메커니즘은 리-오더 큐일 수 있다. 이는 본 발명을 설명하기 위한 예시일 뿐, 본 발명을 한정하지 않는다.
실시 예로서, 슬롯(242)의 값이 P02(예측된)에서 C02(확인된)로 바뀌자마자, 아웃스탠딩 프리-페치들의 개수는 최대로 허용된 값(Pmax(215))보다 아래로 떨어지고, 더 많은 프리-페치들이 만들어질 수 있다. 하지만, 제1 윈도우(231)가 10 슬롯들을 가지고 있고, 10 슬롯들이 꽉 찼음을 알 수 있다. 일 실시 예로서, 더블-버퍼링(double-buffering) 또는 복수의 윈도잉 스킴(scheme)은 이용될 수 있다.
실시 예로서, 제2 윈도우(232)는 발생될 수 있다. 다시, 제2 윈도우(232)는 Pmax(215)와 동일한 개수의 슬롯들을 포함할 수 있다. 제1 윈도우(231)가 꽉 차면, 새로운 프리-페치들(Pmax 캡(cap) 또는 임계치 이래로 허여된다면) 제2 윈도우(232)(P11) 내에 저장될 수 있다. 다양한 실시 예들로서, 제2 윈도우(232)는 아직 채워지지 않은 복수의 빈 슬롯들(234)을 포함할 수 있다(Pmax 한계가 도달되면, 프리-페치들은 확인이 발생할 때까지 발생하지 않는다).
상술한 바와 같이 데이터 구조(224)는 평가 또는 측정 스킴(타이머 또는 스킴 기반의 타임과 대조적으로)을 기반으로 하는 이벤트를 이용할 수 있다. 이러한 일 실시 예로서, 평가 단계는 하나 이상의 미리 예측된 이벤트들이 발생할 때 발생할 수 있다.
일 실시 예로서, 제1 이벤트는 제1 윈도우(231)에서 확인된 엔트리들로 변하는 모든 예측 엔트리들(P01, P02~P10에서 C01, C02~C10으로 변화)을 포함할 수 있다. 일 실시 예로서, 프리-페쳐는 모니터링 기간 동안 100% 정확도를 갖는 것으로 간주될 수 있다.
다른 실시 예로서, 제2 이벤트는 제2 윈도우에서 확인 엔트리로 변하는 예측 엔트리(P12는 C12로 변화)를 포함할 수 있다. 확인이 프로그램 순서에서 발생하는 실시 예들로서, 프리-페치의 무시는 생략된 프리-페치들이 확인되지 않음을 의미할 수 있다. 실시 예로서, C02로 확정된 P02의 팩트(fact)는 엔트리 P01이 확인되지 않음을 의미하고, 프로그램이 없고 예측된 데이터를 요청하지 않음을 의미한다. P10, P13은 확인될 수 있지만, 엔트리(P01)을 확인할 기회는 지나간다. 이와 같이, 엔트리 C09의 확인은 엔트리들(P03, P04, P05, P06, P07, 및 P08)이 더 이상 확인되지 않음을 의미한다. 이러한 일 실시 예로서, 제2 윈도우(232)의 엔트리가 확인되면(P12가 C12로 변화), 이는 제1 윈도우(231)에서 확인되지 않은 엔트리들이 없음을 의미하고, 제1 윈도우(231)의 값들은 최종적이다. 이러한 일 실시 예로서, 제2 윈도우(232)의 사용은 부정확한 프리-페치들(예를 들어, P01)의 거짓에 관대한 프리-페쳐에 대해 허용할 수 있다.
다양한 실시 예들로서, 다른 트리거 이벤트들(triggering events)은 발생하거나 평가 단계를 트리거하기 위해 이용될 수 있다. 이는 본 발명을 설명하기 위한 예시일 뿐, 본 발명을 한정하지 않는다.
상술한 바와 같이 평가 단계가 발생할 때, C(218)의 평가는 계산될 수 있다. 몇몇 실시 예들로서, C(218)의 값은 다양한 확인들이 발생됨으로써 실시간으로 업데이트 될 수 있다. 다른 실시 에로서, C(218) 값은 평가 단계 동안 업데이트될 수 있다. 다양한 실시 예들로서, 제1 윈도우(231)로부터의 값들은 C(218)의 계산에 포함될 수 있다.
예를 들어, 실시 예로서, C12의 확인은 평가 단계를 트리거할 수 있다. 일 실시 예로서, 제1 윈도우(231) 내의 확인들이 C02 및 C09 이면, C(218)의 값은 2가 된다(C12가 카운트되지 않았기 때문에 3이 아니다).
이와 같이, 모니터링 기간 또는 윈도우에 대한 복수의 부정확도들은 제1 윈도우(231)의 복수의 아웃스탠딩 또는 확인되지 않은 예측된 엔트리들(P01, P02, P03, P04, P05, P06, P07, P08 및 P10)일 것이다. (이는 부정확도들의 간단한 설명과 다르고,) 복수의 부정확도들은 복수의 부정확도 및 AI(222)의 합계에 추가될 것이다.
더 나아가, 이벤트 기반 스킴의 값(P(217))은 모든 윈도우들(231, 232)의 아웃스탠딩의 총 개수를 포함할 수 있다. 상술한 바와 같이, 간단한 타이머 또는 시한 스킴의 설명의 일부분으로써, P(217) 및 C(218)는 어느 정도 보완되어 설명되었다. P(217) 및 C(218) 값이 다른 윈도우들을 통해 측정될 때(P(217) 값은 모든 윈도우들을 거치고, C(218) 값은 제1 윈도우(231)를 거칠 때), 이벤트 기반의 스킴의 케이스(case)가 아닐 수 있다. 이는 본 발명을 설명하기 위한 예시일 뿐, 본 발명을 한정하지 않는다.
상술한 바와 같이, 평가 단계 동안, C(218) 값은 파라미터들 Cmin(213) 및 Cmax(214)와 비교될 수 있고, 신뢰 상태(212)는 판단될 수 있다. 신뢰 상태(2120의 변화는 파라미터 Pmax(215)의 변화의 결과일 수 있다. 실시 예로서, 윈도우들(231, 232)의 사이즈는 Pmax(215)를 기반으로 하고, 이는 윈도우들(231, 232)의 크기의 변화의 결과일 수 있다.
평가 단계의 마지막에서, 제1 윈도우(231)는 삭제될 수 있고, 제1 윈도우(231)로부터의 모든 정보는 얻어질 수 있다. 제2 윈도우(232)는 제1 윈도우(231)로 간주될 수 있고, 새로운 제2 윈도우(232)는 필요로 할 때 만들어질 수 있다. 몇몇 실시 예들로서, 그것은 제1 윈도우(231)의 콘텐츠(contents)를 삭제하고, 제2 윈도우(232)의 콘텐츠를 제1 윈도우(231)로 옮김으로써 실행된다. 다른 실시 예로서, 포인터(pointer) 또는 토글 플래그(toggle flag)는 두 개의 윈도우들(231, 232)이 각각 제1 윈도우 및 제2 윈도우로 고려되었는지 확인하기 위해 이용될 수 있고, 포인터 또는 토글 플래그는 각각의 모니터링 기간을 교환할 수 있다. 이는 본 발명을 설명하기 위한 예시일 뿐, 본 발명을 한정하지 않는다.
더 나아가, 윈도우들(231, 232)의 사이즈는, 윈도우들(231, 232)의 이동 동안, 파라미터 Pmax(215)에 의존하고, 윈도우들(231, 232)의 크기는 조정될 수 있다. 예를 들어, Pmax(215)가 10에서 5로 저하되는 경우, 제1 윈도우(231)는 다섯 개의 슬롯들만 포함하도록, 재조정된다(새로운 제2 윈도우(232)와 같이 다섯 개의 슬롯들 중 세 개는 P11, C12 및 P13으로 채워진다.). 몇몇 실시 예들로서, 복수의 아웃스탠딩 또는 확인된 프리-페치들이 제1 윈도우(231)의 새로운 사이즈를 초과하면, 초과된 아웃스탠딩 또는 프리 페치들은 새로운 제2 윈도우(232)에 배치된다. 예를 들어, 엔트리들 P11, C12, P13, P14, P15 및 P16은 이미 존재하고, 새로운 Pmax(215)가 5이면 P11, C12, P13, P14, 및 P15는 제1 윈도우(231) 내에 배치되고, P16은 제2 윈도우(232) 내에 배치될 수 있다. 이는 본 발명을 설명하기 위한 예시일 뿐, 본 발명을 한정하지 않는다. 이와 같이, Pmax(215)가 증가하면, 윈도우들(231, 232)의 사이즈도 증가한다.
평가 단계의 마지막에서, P(217)의 값은 원래의 제1 윈도우(231)가 삭제되었으므로, 아웃스탠딩 프리-페치들을 반영하여 업데이트된다. 예를 들어, 실시 예로서, 기존의 평가 단계는, P(217)의 값이 10일 수 있다(P01, P03, P04, P05, P06, P07, P08, P10, P11 및 P13 때문에). 하지만, 제1 윈도우(231)이 삭제된 후, 제2 윈도우(232)의 콘텐츠들은 새로운 제1 윈도우(231)로 옮겨지고, P(217)의 값은 2가 될 수 있다(P11 및 P13 때문에). 이는 본 발명을 설명하기 위한 예시일 뿐, 본 발명을 한정하지 않는다. 이와 같이, C(218)의 값은 바뀔 수 있다.
도 3은 본 발명의 실시 예에 따른 상태 기계(300)를 보여주기 위한 블록도이다. 상태 기계(300)는 본 발명을 설명하기 위한 예시일 뿐, 본 발명을 한정하지 않는다. 다양할 실시 예들로서, 복수의 상태들의 상태 기계가 존재할 수 있다. 더 나아가, 몇몇 실시 예들로서, 기술(그래프(graph))은 종래의 상태 기계의 사용 없이, 상태들 및 파라미터들을 계산하기 위해 이용될 수 있다. 이는 본 발명을 설명하기 위한 예시일 뿐, 본 발명을 한정하지 않는다. 이와 같이, C(218)의 값은 바뀔 수 있다.
실시 예로서, 상태 기계(300)는 네 개의 신뢰 상태들 또는 레벨들(로우(low)(302), 미듐(medium)(304), 하이(high)(306) 및 킬(kill)(308))을 포함할 수 있다. 상술한 바와 같이, 상태들 각각은 자신들 각각의 파라미터들(Pmax, Cmax, Cmin)을 포함할 수 있다.
예를 들어, 실시 예로서, 로우 신뢰 상태(302)는 10의 값의 Pmax, 5의 값의 Cmax, 및 2의 값의 Cmin을 포함하거나 10의 값의 Pmax, 5의 값의 Cmax, 및 2의 값의 Cmin과 관련될 수 있다. 미듐 신뢰 상태(304)는 20의 값의 Pmax, 10의 값의 Cmax 및 5의 값의 Cmin을 포함하거나 20의 값의 Pmax, 10의 값의 Cmax 및 5의 값의 Cmin과 관련될 수 있다. 하이 신뢰 상태(306)는 40의 값의 Pmax, 41의 값의 Cmax, 10의 값의 Cmin을 포함하거나 40의 값의 Pmax, 41의 값의 Cmax, 10의 값의 Cmin과 관련될 수 있다, 킬 또는 비활성화 상태(308)는 0의 값의 Pmax, 2의 값의 Cmax, 0의 값의 Cmin을 포함하거나, 0의 값의 Pmax, 2의 값의 Cmax, 0의 값의 Cmin과 관련될 수 있다. 이는 본 발명을 설명하기 위한 예시일 뿐, 본 발명을 한정하지 않는다.
실시 예로서, 스트림 또는 패턴 엔트리가 비활성화이면, 스트림 또는 패턴 엔트리는 비활성화 상태(308)로 디폴트될 수 있다. 비활성화 상태(308)에 대한 Pmax가 0이면, 프리-페치들은 발생하지 않는다. 다양한 실시 예들로서, 새로운 스트림이 발생하거나, 새로운 패턴 엔트리가 발생하면, 새로운 엔트리는 로우 신뢰 상태에 할당되고, 프리-페치들은 상술한 바와 같이 발생할 수 있다.
실시 예로서, C의 값은 Cmax 또는 Cmin 각각의 값들보다 크거나 작을 수 있고, 패턴 엔트리의 상태는 증가하거나 감소할 수 있다. 신뢰가 향상되면, 신뢰 상태는 로우 상태(302)에서 미듐 상태(304), 그리고 궁극적으로 하이 상태(306)로 변화할 수 있다. 실시 예로서, 하이 상태(306)의 Cmax는 초과되지 않을 만큼 충분히 높게 설정될 수 있다(Pmax가 41일 때 Cmax는 41일 수 있다). 반대로, 신뢰가 감소하면, 신뢰 상태는 하이 상태(306)에서 미듐 상태(304), 로우 상태(302), 및 킬 또는 비활성화 상태(308)로 변화할 수 있다. 다양한 실시 예들로서, 패턴 엔트리(08)가 킬 상태(308)로 진입하면, 패턴 엔트리는 패턴 테이블로부터 제거되고, 프리-페치 엔진은 새로운 패턴을 기반으로 리-트레인될 수 있다. 이는 본 발명을 설명하기 위한 예시일 뿐, 본 발명을 한정하지 않는다.
실시 예로서, 합계 오류들(AI)이 임계값(AImax)을 초과하지 않는다면, 패턴 엔트리는 킬 또는 비활성화 상태(킬 상태(308)를 통해서)로 될 수 있다. 실시 예로서, 이는 다른 상태들로부터 바로 발생할 수 있고, 신뢰의 순차적인 상승 또는 저하는 확인된 프리-페치 비교(C와 Cmax/Cmin의 비교)를 통해 발생할 수 있다.
AImax 값은 글로벌 카운트 값과 대조적인 각각의 신뢰 상태를 기반으로 할 수 있다. 일 실시 예로서, 도시된 실시 예와 달리, AI는 신뢰 상태의 저하의 결과일 수 있다. 이는 본 발명을 설명하기 위한 예시일 뿐, 본 발명을 한정하지 않는다.
다양한 실시 예들로서, 본 발명은 프리-페치 스트림들의 높은 정확도 때문에 프리-페치 엔진의 성능을 향상시킬 수 있다. 본 발명은 프리-페치들 증가의 정확도에 대한 신뢰로써 발생하는 프리-페치들에 대해서 허용할 수 있다. 이와 같이, 신뢰가 감소하면, 더 적은 프리-페치들이 프리-페치들의 부정확도의 의미로써 발생한다. 이러한 일 실시 예로서, 부정확한 프리 페치들의 감소는 전력 소비의 감소를 의미할 수 있다.
더 나아가, 본 발명은 프리-페치 정확도의 더 정확한 평가를 위해 감안될 수 있다. 상술한 바와 같이, 프리-페치들의 정확도를 측정하기 위한 윈도우 또는 이벤트 기반의 접근은 단순한 시간-기준보다 프리-페치의 정확도의 더 정확한 평가를 이끌어낼 수 있다. 더 나아가, 실시 예로서, 이벤트 기반의 접근은 가짜의 프리-페치들에 더 관대하다. 반대로, 많은 부정확한 프리-페치들의 누계를 발생시키는 킬 스트림 또는 삭제 패턴 엔트리들의 능력은 전반적인 시스템 성능을 향상시킬 수 있다.
상술한 바와 같이, 본 발명은 프리-페치 엔진 또는 유닛의 성능을 향상시키기 위해 발생하는 프리-페칭의 정도를 동적으로 조절할 수 있다. 더 나아가, 다양한 실시 예들로서, 정도의 속도는 신뢰 상태들과 관련된 복수의 파라미터들(Cmax, Cmin)을 통해 조절될 수 있다. 이는 본 발명을 설명하기 위한 예시일 뿐, 본 발명을 한정하지 않는다.
도 4는 본 발명의 제2 실시 예에 따른 시스템(400)을 보여주기 위한 블록도이다. 도 1의 시스템(100)과 같이, 프리-페쳐(400)는 본 발명을 설명하기 위한 하나의 실시 예일 뿐 본 발명을 한정하지 않는 것으로 이해된다. 하지만, 프리-페쳐(400)는 도 1에 표시되지 않은 본 발명의 두 변형들을 보여주기 위해 사용된다.
상술한 바와 같이, 프리-페쳐(400)는 프리-페치 필터(102), 트레이닝 테이블 또는 패턴 식별자(106), 패턴 엔트리들(434)과 함께 패턴 테이블(408), 조정 프리-페치 테이블(409) 런치 큐(110) 및 확인 테이블 또는 프리-페치 확인자(412)를 포함할 수 있다. 이러한 구성 요소들은 도 1을 통해 설명된 것들과 유사할 수 있다.
실시 예로서, 모니터링 스킴은 실제 데이터 요구들의 순서대로의 트래킹에 의존하지 않을 수 있고, 리-오더 큐(104)는 제거되거나 포함되지 않을 수 있다. 이는 본 발명을 설명하기 위한 예시일 뿐, 본 발명을 한정하지 않는다.
제2 차이점은 조정 프리-페치 테이블(409)이 패턴 테이블(408)로부터 분리된 것이다. 실시 예로서, 조정 프리-페치 테이블(409)은 조정 프리-페치 엔트리들(436)을 포함할 수 있다. 이러한 엔트리들은 도 2의 필드들 또는 값들(290)을 포함할 수 있다. 패턴 엔트리들(434)(도 2의 패턴 데이터(210)로 도시)은 패턴 테이블(434)에 포함될 수 있다. 이러한 실시 예로서, 조정 프리-페치 엔트리들(436)은 각각의 패턴 엔트리들(434)과 관련될 수 있다. 이는 본 발명을 설명하기 위한 예시일 뿐, 본 발명을 한정하지 않는다.
더 나아가, 실시 예로서, 상태 기계(438)는 프리-페쳐 확인기(412) 또는 유사하게 분리된 데이터 구조에 포함될 수 있다. 이러한 실시 예로서, 프리-페치들의 정확도를 평가 및/또는 모니터링하기 위한 회로 또는 로직은 프리-페쳐 확인기(412)에 포함될 수 있고, 데이터 구조들(436)은 테이블(409)에 포함될 수 있다.
다양한 실시 예들로서, 상술한 바와 같이, 상태 기계(438)는 각 상태(Pmax, Cmax, Cmin)에 대한 글로벌 파라미터들을 포함할 수 있고, 이러한 값들은 조정 프리-페치 엔트리들(436) 내에 저장될 수 있고, 상태 기계(438)로부터 참조될 수 있다.
도 5는 본 발명의 실시 예에 따른 기술을 보여주기 위한 순서도이다. 다양한 실시 예들로서, 기술(500)은 도 1, 4 또는 6과 같은 시스템들로부터 활용될 수 있다. 더 나아가, 기술(500)의 포션들은 도 2 및/또는 도 3과 같은 데이터 구조들을 활용할 수 있다.
502 블록에서, 일 실시 예로서, 상술한 바와 같이, 데이터 스트림과 관련된 복수의 프리-페치 캐시 요청들은 모니터링 된다. 상술한 바와 같이, 다양한 실시 예들로서, 모니터링은 프리-페치 요청들의 적어도 두 개의 윈도우들을 통해 프리-페치 캐시 요청들의 트래킹을 포함한다. 이러한 일 실시 예로서, 상술한 바와 같이, 각각의 윈도우는 데이터에 대한 데이터 스트림의 현재 실제 요구를 초과하여 프리-페치 허용되는 데이터의 최대량과 관련된 정도와 같은 윈도우 사이즈로 구성될 수 있다. 일 실시 예로서, 데이터에 대한 실제 요구와 프리-페치 요청들의 적어도 두 개의 윈도우들의 하나 내의 프리-페치 캐시 요청과 일치하는 것으로 판단되면, 데이터 스트림은 데이터에 대한 실제 요구를 발생하는 바와 같이 모니터링은 포함할 수 있다. 이는 본 발명을 설명하기 위한 예시일 뿐, 본 발명을 한정하지 않는다.
504 블록에서, 일 실시 예로서, 상술한 바와 같이 프리-페치 캐시 요청들은 평가될 수 있다. 일 실시 예로서, 평가는, 데이터에 대한 실제 요구가 프리-페치 요청들의 적어도 두 개의 윈도우들 중 제2 윈도우 내의 프리-페치 캐시 요청과 매치하거나, 제1 윈도우 내의 모든 프리-페치 캐시 요청이 데이터에 대한 실제 요구들과 일치하면, 프리-페치 요청들의 적어도 두 개의 윈도우들의 제1 윈도우와 관련된 프리-페치 캐시 요청들의 정확도를 평가할 수 있다. 몇몇 실시 예들로서, 평가는 프리-페치 캐시 요청들의 정확도의 평가에 접근하기 위한 이벤트-기반 접근을 포함할 수 있다. 이는 본 발명을 설명하기 위한 예시일 뿐, 본 발명을 한정하지 않는다.
506 블록에서, 일 실시 예로서, 프리-페치 캐시 요청들의 정확도의 적어도 일부분을 기반으로, 데이터에 대한 데이터 스트림의 현재 실제 요구를 초과하여 프리-페치 허용되는 데이터의 최대량은 조절될 수 있다. 일 실시 예로서, 제2 윈도우가 더 이상 프리-페치 캐시 요청들과 관련되지 않으면, 조절은 제2 윈도우의 콘텐트를 제1 윈도우로 이동시킬 수 있다. 더 나아가, 조절은 데이터에 대한 데이터 스트림의 현재 실제 요구를 초과하여 프리-페치 허용되는 데이터의 새로운 최대 량을 판단할 수 있다. 또한, 일 실시 예로서, 조절은 데이터에 대한 데이터 스트림의 현재 실제 요구를 초과하여 프리-페치 허용되는 데이터의 새로운 최대량에 대한 프리-페치 요청들의 적어도 두 개의 윈도우들의 윈도우 사이즈들을 재조정할 수 있다.
다른 실시 예로서, 프리-페치 캐시 요청들의 정확도가 미리 정의된 임계 값 이하이면, 조절은 데이터에 대한 데이터 스트림의 현재 실제 요구를 초과하여 프리-페치 허용되는 데이터의 최대량을 감소시킬 수 있다. 대조적으로, 프리-페치 캐시 요청들의 정확도가 미리 정의된 임계 값을 초과하면, 조절은 데이터에 대한 데이터 스트림의 현재 실제 요구를 초과하여 프리-페치 허용되는 데이터의 최대량을 증가시킬 수 있다. 반면에, 조절은 데이터에 대한 데이터 스트림의 현재 실제 요구를 초과하여 프리-페치 허용되는 데이터의 최대량을 조절하지 않을 수 있다.
다른 실시 예로서, 데이터 스트림과 관련된 프리-페치 캐시 요청들의 부정확도의 누계가 미리 정의된 임계 값을 초과한다면, 조절은 데이터 스트림에 대한 프리-페칭 데이터를 중단시킬 수 있다.
일 실시 예로서, 조절은 데이터 스트림과 관련된 신뢰 상태를 동적으로 조절할 수 있다. 일 실시 예로서, 신뢰 상태의 조절은 복수의 미리 정의된 신뢰 상태들 중 하나와 데이터 스트림을 연관시킬 수 있다. 일 실시 예로서, 신뢰 상태 각각은 프리-페치 캐시 요청들의 정확도의 최소 레벨, 프리-페치 캐시 요청들의 정확도의 최대 레벨, 및 데이터에 대한 데이터 스트림의 현재 실제 요구를 초과하여 프리-페치 허용되는 데이터의 최대량과 관련될 수 있다. 이는 본 발명을 설명하기 위한 예시일 뿐, 본 발명을 한정하지 않는다.
도 6은 본 발명의 실시 예에 따른 정보 처리 시스템을 보여주기 위한 블록도이다. 도 6을 참조하면, 정보 처리 시스템(600)은 본 발명에 개시된 원리들을 따르는 적어도 하나 이상의 장치들을 포함할 수 있다. 다른 실시 예로서, 정보 처리 시스템(500)은 본 발명에 개시된 원리들을 따르는 적어도 하나 이상의 기술들을 사용하거나 실행할 수 있다.
다양한 실시 예들로서, 정보 처리 시스템(600)은 휴대용 컴퓨터, 사무용 컴퓨터, 워크스테이션(workstation), 서버(server), 블레이드 서버(blade server), 개인 휴대 정보 단말기, 스마트폰(smart phone), 테블릿(tablet), 및 다른 적합한 컴퓨터들 또는 가상 기계 또는 가상 컴퓨팅(computing) 장치와 같은 컴퓨팅 장치를 포함할 수 있다. 다양한 실시 예들로서, 정보 처리 시스템(600)은 사용자(user, 미 도시)로부터 사용될 수 있다.
개시된 주제와 관련된 정보 처리 시스템(600)은 더 나아가 중앙 처리 유닛(CPU), 로직(logic), 또는 프로세서(610)를 포함할 수 있다. 몇몇 예시들로서, 프로세서(610)는 하나 이상의 기능 단위 블록들(FUBs) 또는 조합 로직 블록들(CLBs)(615)를 포함할 수 있다. 이러한 일 실시 예로서, 조합 로직 블록은 다양한 불 논리 동작들(Boolean logic operations)(예를 들어, NAND, NOR, NOT, XOR, 등) 안정 로직 장치들(예를 들어, 플립-플롭들(flip-flops), 래치들(latches) 등), 다른 로직 장치들 또는 이들을 결합한 장치들을 포함할 수 있다. 이러한 조합 논리 동작들은 바라던 결과를 성취하기 위한 입력 신호들을 처리하는 단순하거나 복잡한 방식을 포함할 수 있다.
동기 조합 논리 연산의 몇몇 예시들은 예시적인 실시 예를 설명하면서, 개시된 요지는 이에 한정되지 않고, 비 동기 동작 또는 이들을 혼합한 것을 포함할 수 있다고 이해된다. 일 실시 예로서, 조합 논리 동작은 복수의 상보형 금속 산화 반도체(CMOS) 트랜지스터들로 구성될 수 있다. 다양한 실시 예들로서, 이러한 CMOS 트랜지스터들은 논리 동작을 수행하기 위한 게이트들로 구성될 수 있다. 다른 기술들은 사용될 수 있고, 개시된 요지의 스코프(scope) 내에 있다고 이해된다.
개시된 요지에 따른 정보 처리 시스템(600)은 휘발성 메모리(620)(예를 들어, 랜덤 액세스 메모리(Random Access Memory, RAM) 등)를 더 포함할 수 있다. 개시된 요지에 따른 정보 처리 시스템(600)은 비 휘발성 메모리(630)(예를 들어, 하드 드라이브(hard drive), 광 메모리, NAND 또는 플래시 메모리(Flash memory), 등)를 더 포함할 수 있다. 몇몇 실시 예들로서, 휘발성 메모리(620), 비 휘발성 메모리(630), 또는 그것의 부분들 또는 결합은 "저장 매체"라고 할 수 있다. 다양한 실시 예들로서, 휘발성 메모리(620) 및/또는 비 휘발성 메모리(630)는 반 영구적이거나 영구적인 형태로 데이터를 저장할 수 있다.
다양한 실시 예들로서, 정보 처리 시스템(600)은 정보 처리 시스템(600)의 일부 및 통신 네트워크를 통해 통신할 수 있도록 구성된 하나 이상의 네트워크 인터페이스들(network interfaces)(640)을 포함할 수 있다. (와이-파이(Wi-Fi) 프로토콜은 전자 전기 기술자 협회(IEEE)802.11g, IEEE 802.11n 등을 포함할 수 있지만 이에 한정되지 않는다. 무선 프로토콜은 IEEE 802.16m, GSM에 대한 향상된 데이터 레이트(Global System for Mobile Communication) 에볼루션(Evolution)(EDGE), 이볼브드(Evolved) 고속 패킷 접속(HSPA+)등을 포함할 수 있다. 유선 프로토콜은 IEEE 802.3, 파이버 채널(Fibre Channel), 전력선 통신망(홈 플러그(Home Plug), IEEE1901)등을 포함할 수 있다.
개시된 요지에 따른 정보 처리 시스템(600)은 사용자 인터페이스부(650)(예를 들어, 디스플레이 어댑터(display adapter, 햅틱 인터페이스(haptic interface), 인간 인터페이스 장치, 등)를 더 포함할 수 있다. 다양한 실시 예들로서, 사용자 인터페이스부(650)는 사용자로부터 입력을 받고/거나 사용자에게 출력을 공급할 수 있다. 다른 종류의 장치들은 사용자와의 상호 작용을 제공하기 위해 사용될 수 있다. 예를 들어, 사용자에게 공급되는 피드백(feedback)은 시각 피드백, 청각 피드백, 또는 촉각 피드백 및 사용자가 청각, 말, 또는 촉각과 같은 임의의 형태를 수신함으로써 감각적 피드백의 임의의 형태일 수 있다.
다양한 실시 예들로서, 정보 처리 시스템(600)은 하나 이상의 다른 장치들 또는 하드웨어 요소들(660)(예를 들어, 디스플레이 또는 모니터, 키보드, 마우스, 카메라, 지문 인식기, 비디오 장치, 등)을 포함할 수 있다. 상술된 내용은 본 발명을 설명하기 위한 예시이다. 따라서, 본 발명은 이에 한정되지 않는다.
개시된 요지와 관련된 정보 처리 시스템(600)은 하나 이상의 시스템 버스들(system buses)(605)을 더 포함할 수 있다. 이러한 일 실시 예로서, 시스템 버스(605)는 프로세서(610), 휘발성 메모리(620), 비 휘발성 메모리(630), 네트워크 인터페이스(640), 사용자 인터페이스부(650) 및 하나 이상의 하드웨어 요소들(660)을 통신할 수 있게 연결할 수 있다. 프로세서(610)로부터 진행되는 데이터, 또는 비 휘발성 메모리(630)의 외부로부터 입력되는 데이터는 비 휘발성 메모리 장치(630) 또는 휘발성 메모리 장치(620)에 저장될 수 있다.
다양한 실시 예들로서, 정보 처리 시스템(600)은 하나 이상의 소프트웨어(software) 요소들(670)을 실행 또는 포함할 수 있다. 몇몇 실시 예들로서, 소프트웨어 요소들(670)은 운영 체제(OS) 및/또는 어플리케이션(application)을 포함할 수 있다. 몇몇 실시 예들로서, OS는 어플리케이션을 위한 하나 이상의 서비스들 및 어플리케이션과 정보 처리 시스템(600)의 다양한 하드웨어 요소들(예를 들어, 프로세서(610), 네트워크 인터페이스(640), 등) 사이의 중개자로서 동작 또는 운영하도록 구성될 수 있다.
이러한 일 실시 예로서, 정보 처리 시스템(600)은 국부적으로 설치될 수 있고(예를 들어, 비 휘발성 메모리(630) 내에), 프로세서(610)로부터 바로 실행되고, OS와 바로 상호작용하는 하나 이상의 네이티브 어플리케이션들(native applications)을 포함할 수 있다. 이러한 일 실시 예로서, 네이티브 어플리케이션들은 프로세서(610)에 의해 실행되는 코드 내에 오브젝트 코드(object code) 또는 변환 소스로 구성된 스크립트(script) 해석기(예를 들어, C셀(csh), 애플스크립트(AppleScript), 오토 핫키(Auto Hotkey), 등) 또는 가상 실행 기기(VM)(예를 들어, 자바 가상 머신(Java Virtual Machine), 마이크로소프트 공용 언어 런타임(Microsoft Common Language Runtime), 등)을 포함할 수 있다.
상술된 반도체 장치들은 다양한 패키징(packaging) 기술들을 사용하여 캡슐화될 수 있다. 예를 들어, 개시된 요지의 이론들을 따라 구성된 반도체 장치들은 패키지 온 패키지(package on package)(POP) 기술, 볼 그리드 어레이들(ball grid arrays)(BGAs) 기술, 칩 스케일 패키지들(chip scale packages)(CSPs) 기술, 플라스틱 리디드 칩 케리어(plastic leaded chip carrier)(PLCC) 기술, 플라스틱 듀얼 인-라인 패키지(plastic dual in-line package)(PDIP) 기술, 다이 인 와플 팩(die in waffle pack) 기술, 다이 인 와퍼 폼(die in wafer form) 기술, 칩 온 보드(chip on board)(COB) 기술, 세라믹 듀얼 인-라인 패키지(ceramic dual in-line package)(CERDIP) 기술, 플라스틱 메트릭 쿼드 플랫 패키지(plastic metric quad flat package)(PMQFP) 기술, 플라스틱 쿼드 플랫 패키지(plastic quad flat package)(PQFP) 기술, 스몰 아웃라인 패키지(small outline package)(SOIC) 기술, 슈링크 스몰 아웃라인 패키지(shrink small outline package)(SSOP) 기술, 씬 스몰 아웃라인 패키지(thin small outline package) (TSOP) 기술, 씬 쿼드 플랫 패키지(thin quad flat package) (TQFP) 기술, 시스템 인 패키지(system in package) (SIP) 기술, 멀티칩 패키지(multichip package)(MCP) 기술, 와퍼-레벨 페브리케이트 패키지(wafer-level fabricated package)(WFP) 기술, 와퍼-레벨 프로세스 스텍 패키지(wafer-level processed stack package)(WSP) 기술 또는 당업자에게 공지되어있을 것 같은 다른 방법 중 어느 하나를 사용하여 캡슐화될 수 있다.
방법 단계들은 입력 데이터 상에서 동작하고 출력을 생성함으로써 기능들을 수행하는 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래밍 가능한 프로세스들로부터 수행될 수 있다. 예를 들어, FPGA(필드 프로그래머블 게이트 어레이(field programmable gate array)) 또는 ASIC(어플리케이션-스페시픽 인터게이트 서킷(application-specific intergated circuit))와 같은 특수 목적 논리 회로로부터 방법 단계들은 수행될 수 있고, 장치는 구현될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100: 프리-페치 유닛
102: 프리-페치 필터
104: 리오더 큐
106: 트레이닝 테이블
108: 패턴 테이블
110: 런치 큐
112: 프리-페치 확인자
134: 패턴 엔트리
136: 어댑티브 프리-페치 엔트리
138: 어댑티브 상태 기계

Claims (20)

  1. 프리-페치 유닛(pre-fetch unit)을 포함하는 장치의 동작 방법에 있어서,
    데이터 스트림(data stream)과 관련된 복수의 프리-페치 캐시(pre-fetch cache) 요청들을 모니터링(monitoring)하는 단계;
    상기 프리-페치 캐시 요청들의 정확도를 평가하는 단계; 및
    상기 프리-페치 캐시 요청들의 상기 정확도 및 미리 정의된 임계 값의 비교를 기반으로, 데이터에 대한 상기 데이터 스트림의 현재 실제 요구를 초과하여 프리-페치 허용되는 데이터의 최대량을 조절하는 단계를 포함하되,
    상기 모니터링하는 단계는
    프리-페치 요청들의 적어도 두 개의 윈도우들(windows)을 통해 상기 프리-페치 캐시 요청들을 트래킹하는 단계를 포함하고,
    상기 적어도 두 개의 윈도우들 각각은 상기 데이터에 대한 상기 데이터 스트림의 현재 실제 요구를 초과하여 프리-페치 허용되는 상기 데이터의 상기 최대량과 관련된 정도와 동일한 사이즈의 윈도우로 구성된 동작 방법.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 모니터링하는 단계는
    상기 데이터 스트림이 상기 데이터에 대한 실제 요구를 만듦에 따라, 상기 프리-페치 요청들의 상기 적어도 두 개의 윈도우들 중 하나 내에 상기 프리-페치 캐시 요청들과 상기 데이터에 대한 상기 실제 요구가 일치하는지 판별하는 단계를 포함하고;
    상기 평가하는 단계는,
    제1 윈도우 내의 상기 프리-페치 캐시 요청들의 전부가 상기 데이터에 대한 상기 실제 요구와 일치하거나, 또는 상기 프리-페치 요청들의 상기 적어도 두 개의 윈도우들 중 제2 윈도우 내의 프리-페치 캐시 요청들과 상기 데이터에 대한 상기 실제 요구가 일치할 때, 상기 프리-페치 요청들의 상기 적어도 두 개의 윈도우들의 상기 제1 윈도우와 관련된 상기 프리-페치 캐시 요청들의 상기 정확도를 평가하는 동작 방법.
  4. 제 3 항에 있어서,
    상기 조절하는 단계는
    상기 제2 윈도우는 상기 프리-페치 캐시 요청들과 더 이상 연관되지 않도록 상기 제2 윈도우의 컨텐츠(content)를 상기 제1 윈도우로 옮기고,
    상기 데이터에 대한 상기 데이터 스트림의 현재 실제 요구를 초과하여 프리-페치 허용되는 상기 데이터의 새로운 최대량을 판단하고,
    상기 데이터에 대한 상기 데이터 스트림의 현재 실제 요구를 초과하여 프리-페치 허용되는 상기 데이터의 상기 새로운 최대량에 대한 상기 프리-페치 요청들의 상기 적어도 두 개의 윈도우들의 윈도우 사이즈들을 재조정하는 동작 방법.
  5. 제 1 항에 있어서,
    상기 조절하는 단계는
    상기 프리-페치 캐시 요청들의 상기 정확도가 상기 미리 정의된 임계 값 이하이면, 상기 데이터에 대한 상기 데이터 스트림의 현재 실제 요구를 초과하여 허용 가능하게 상기 프리-페치된 데이터의 상기 최대량을 감소시키고,
    상기 프리-페치 캐시 요청들의 정확도가 상기 미리 정의된 임계 값을 초과하면, 상기 데이터에 대한 상기 데이터 스트림의 현재 실제 요구를 초과하여 프리-페치 허용되는 상기 데이터의 상기 최대량을 증가시키고,
    그렇기 않으면, 상기 데이터에 대한 상기 데이터 스트림의 현재 실제 요구를 초과하여 프리-페치 허용되는 상기 데이터의 상기 최대량을 조절하지 않는 동작 방법.
  6. 제 1 항에 있어서,
    상기 조절하는 단계는,
    상기 데이터 스트림과 관련된 상기 프리-페치 캐시 요청들의 부정확도가 상기 미리 정의된 임계 값을 초과하면, 상기 데이터 스트림에 대한 데이터의 프리-페치를 중지하는 동작 방법.
  7. 제 1 항에 있어서,
    상기 조절하는 단계는
    상기 데이터 스트림과 관련된 신뢰 상태를 동적으로 조절하는 동작 방법.
  8. 제 7 항에 있어서,
    상기 신뢰 상태의 조절은
    복수의 미리 정의된 신뢰 상태들 중 하나를 상기 데이터 스트림과 관련 짓고,
    상기 복수의 신뢰 상태들 각각은 상기 프리-페치 캐시 요청들, 상기 프리-페치 캐시 요청들의 상기 정확도의 최소 레벨 및 상기 데이터에 대한 상기 데이터 스트림의 실제 요구를 초과하여 프리-페치 허용되는 상기 데이터의 상기 최대량의 정확도의 최소 레벨과 관련된 동작 방법.
  9. 제 1 항에 있어서,
    상기 프리-페치 캐시 요청들의 상기 정확도를 평가하는 단계는
    상기 프리-페치 캐시 요청들의 상기 정확도를 평가하기 위해 이벤트-기반의 접근을 포함하는 동작 방법.
  10. 프리-페치 유닛(pre-fetch unit)을 포함하는 장치에 있어서,
    데이터 스트림(data stream)과 관련된 복수의 프리-페치 캐시(pre-fatch cache) 요청들을 모니터링(monitor)하고, 상기 복수의 프리 페치 캐시 요청들의 정확도를 평가하고, 그리고 상기 복수의 프리-페치 요청들의 상기 정확도 및 미리 정의된 임계 값의 비교를 기반으로, 데이터에 대한 상기 데이터 스트림의 현재 실제 요구를 초과하여 프리-페치 허용되는 상기 데이터의 최대량을 조절하는 프리-페치 확인자; 그리고
    상기 복수의 프리-페치 캐시 요청들의 상기 정확도를 나타내는 제1 데이터 구조를 저장하고, 상기 데이터에 대한 상기 데이터 스트림의 현재 실제 요구를 초과하는 프리-페치 허용되는 상기 데이터의 상기 최대량을 나타내는 제2 데이터 구조를 저장하는 메모리를 포함하되,
    상기 제1 데이터 구조는
    프리-페치 요청들의 적어도 두 개의 윈도우들을 포함하고,
    상기 적어도 두 개의 윈도우들 각각은 상기 데이터에 대한 상기 데이터 스트림의 현재 실제 요구를 초과하여 프리-페치 허용되는 상기 데이터의 상기 최대량과 관련된 정도와 동일한 윈도우 사이즈를 갖는 데이터 구조로 구성된 장치.
  11. 삭제
  12. 제 10 항에 있어서,
    상기 데이터 스트림은 상기 데이터에 대한 실제 요구를 만듦에 따라, 상기 데이터에 대한 상기 실제 요구가 상기 프리-페치 캐시 요청들의 상기 적어도 두 개의 윈도우들 내에 나타나는 상기 프리-페치 캐시 요청과 일치하는지 판단하고,
    상기 데이터에 대한 실제 요구들 각각이 제1 윈도우 내의 상기 복수의 프리-페치 캐시 요청들 전부와 일치하거나, 상기 데이터에 대한 상기 실제 요구들이 상기 복수의 프리-페치 요청들의 제2 윈도우 내의 프리-페치 캐시 요청과 일치하면, 상기 프리-페치 요청들의 상기 적어도 두 개의 윈도우들의 상기 제1 윈도우와 관련된 상기 복수의 프리-페치 캐시 요청들의 상기 정확도를 평가하는 장치.
  13. 제 12 항에 있어서,
    상기 메모리는
    상기 제2 윈도우의 컨텐츠를 상기 제1 윈도우로 옮기고, 상기 프리-페치 요청들과 더 이상 관련이 없고,
    상기 데이터에 대한 상기 데이터 스트림의 현재 실제 요구를 초과하여 프리-페치 허용되는 상기 데이터의 새로운 최대량을 판단하고, 그리고
    상기 데이터에 대한 상기 데이터 스트림의 현재 실제 요구를 초과하여 프리-페치 허용되는 상기 데이터의 상기 새로운 최대량에 대한 상기 복수의 프리-페치 요청들의 상기 적어도 두 개의 윈도우들의 상기 윈도우 사이즈들을 조절하는 장치.
  14. 제 10 항에 있어서,
    상기 프리-페치 확인자는
    상기 복수의 프리-페치 캐시 요청들의 상기 정확도가 상기 미리 정의된 임계 값 이하이면, 상기 데이터에 대한 상기 데이터 스트림의 현재 실제 요구를 초과하여 프리-페치 허용되는 상기 데이터의 상기 최대량을 감소시키고,
    상기 복수의 프리-페치 캐시 요청들의 상기 정확도가 상기 미리 정의된 임계 값을 초과하면, 상기 데이터에 대한 상기 데이터 스트림의 현재 실제 요구를 초과하여 프리-페치 허용되는 상기 데이터의 상기 최대량을 증가시키고, 그리고,
    그렇지 않으면, 상기 데이터에 대한 상기 데이터 스트림의 현재 실제 요구를 초과하여 프리-페치 허용되는 상기 데이터의 상기 최대량을 조절하지 않는 장치.
  15. 제 10 항에 있어서,
    상기 프리-페치 확인자는
    상기 복수의 프리-페치 캐시 요청들의 부정확도의 합계가 상기 미리 정의된 임계 값을 초과하는 상기 데이터 스트림과 관련되면, 상기 데이터 스트림에 대한 프리-페칭 데이터를 중단시키기 위해 상기 프리-페치 유닛을 지시하는 장치.
  16. 제 10 항에 있어서,
    상기 데이터에 대한 상기 데이터 스트림의 현재 실제 요구를 초과하여 상기 프리-페치 허용되는 데이터의 상기 최대량은 신뢰 상태로서 나타내어지고,
    상기 프리-페치 확인자는,
    상기 데이터 스트림과 관련된 상기 신뢰 상태를 조절하는 장치.
  17. 제 16 항에 있어서,
    상기 프리-페치 확인자는,
    복수의 미리 정의된 신뢰 상태들의 하나와 관련된 상기 데이터 스트림으로 구성되고,
    상기 복수의 미리 정의된 신뢰 상태들 각각은 상기 프리-페치 캐시 요청들의 정확도의 최소 레벨, 상기 프리-페치 캐시 요청들의 정확도의 최대 레벨, 및 상기 데이터에 대한 상기 데이터 스트림의 현재 실제 요구를 초과하여 프리-페치 허용되는 데이터의 상기 최대량과 관련된 장치.
  18. 프리-페치 유닛(pre-fetch unit)에 있어서,
    데이터 스트림(data stream)과 관련된 패턴 데이터(pattern data) 구조로 구성된 패턴 테이블(pattern table);
    상기 데이터 스트림과 관련된 어댑티브 프리-페치 데이터(adaptive pre-fetch data)로 구성되고, 데이터에 대한 상기 데이터 스트림의 현재 실제 요구를 초과하여 프리-페치 허용되는 상기 데이터의 최대량을 나타내는 어댑티브 프리-페치 테이블(adaptive pre-fetch table); 그리고
    상기 데이터 스트림에 대한 프리-페치 데이터에 대한 복수의 프리-페치 캐시(pre-fetch cache) 요청들로 구성된 런치 큐(launch queue)를 포함하되,
    상기 프리-페치 유닛은
    상기 프리-페치 캐시 요청들의 정확도를 평가하고, 그리고
    상기 프리-페치 캐시 요청들의 상기 정확도 및 미리 정의된 임계 값의 비교를 기반으로, 상기 데이터에 대한 상기 데이터 스트림의 현재 실제 요구를 초과하여 프리-페치 허용되는 상기 데이터의 상기 최대량을 조절하고,
    상기 어댑티브 프리-페치 테이블은 프리-페치 요청들의 적어도 두 개의 윈도우들로 구성되고,
    상기 적어도 두 개의 윈도우들 각각은 상기 데이터에 대한 상기 데이터 스트림의 현재 실제 요구를 초과하여 프리-페치 허용되는 상기 데이터의 상기 최대량과 관련된 정도(degree)와 동일한 크기의 윈도우를 갖는 데이터 구조로 구성되고,
    상기 프리-페치 유닛은
    상기 데이터 스트림이 상기 데이터에 대한 실제 요구를 발생시키면, 상기 프리-페치 요청들의 상기 적어도 두 개의 윈도우들 내에 나타나는 상기 프리-페치 캐시 요청들과 상기 데이터의 상기 실제 요구가 일치하는지 판단하고, 그리고
    미리 정의된 이벤트에 의해 트리거될(triggered) 때, 상기 프리-페치 요청들의 상기 적어도 두 개의 윈도우들의 제1 윈도우와 관련된 상기 프리-페치 캐시 요청들의 상기 정확도를 평가하는 프리-페치 유닛.
  19. 삭제
  20. 제 18 항에 있어서,
    상기 프리-페치 유닛은
    상기 데이터 스트림과 복수의 미리 정의된 신뢰 상태들의 하나를 연관 짓고, 그리고
    트리거 이벤트에 응답하여, 상기 데이터 스트림과 상기 복수의 미리 정의된 신뢰 상태들의 다른 하나를 연관 짓되,
    상기 복수의 미리 정의된 신뢰 상태들 각각은
    상기 프리-페치 캐시 요청들의 정확도의 최소 레벨,
    상기 프리-페치 캐시 요청들의 정확도의 최대 레벨, 그리고
    상기 데이터에 대한 상기 데이터 스트림의 현재 실제 요구를 초과하여 프리-페치 허용되는 상기 데이터의 상기 최대량과 관련된 프리-페치 유닛.
KR1020150100416A 2014-07-17 2015-07-15 프리-페치 유닛, 그것을 포함하는 장치 및 그것의 동작 방법 KR102424121B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201462026004P 2014-07-17 2014-07-17
US62/026,004 2014-07-17
US14/730,217 US9665491B2 (en) 2014-07-17 2015-06-03 Adaptive mechanism to tune the degree of pre-fetches streams
US14/730,217 2015-06-03

Publications (2)

Publication Number Publication Date
KR20160010341A KR20160010341A (ko) 2016-01-27
KR102424121B1 true KR102424121B1 (ko) 2022-07-22

Family

ID=55074691

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150100416A KR102424121B1 (ko) 2014-07-17 2015-07-15 프리-페치 유닛, 그것을 포함하는 장치 및 그것의 동작 방법

Country Status (3)

Country Link
US (1) US9665491B2 (ko)
KR (1) KR102424121B1 (ko)
CN (1) CN105279105B (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9465744B2 (en) * 2014-07-29 2016-10-11 International Business Machines Corporation Data prefetch ramp implemenation based on memory utilization
US11169925B2 (en) * 2015-08-25 2021-11-09 Samsung Electronics Co., Ltd. Capturing temporal store streams into CPU caches by dynamically varying store streaming thresholds
EP3230919B1 (en) * 2016-02-11 2023-04-12 Morphisec Information Security 2014 Ltd Automated classification of exploits based on runtime environmental features
CN107783911B (zh) * 2016-08-31 2021-06-08 华为技术有限公司 一种数据过滤方法及终端设备
US9946654B2 (en) * 2016-09-09 2018-04-17 Cray Inc. High-bandwidth prefetcher for high-bandwidth memory
US10417235B2 (en) 2017-02-03 2019-09-17 International Business Machines Corporation Window management in a stream computing environment
US10540287B2 (en) 2017-05-12 2020-01-21 Samsung Electronics Co., Ltd Spatial memory streaming confidence mechanism
US10387320B2 (en) * 2017-05-12 2019-08-20 Samsung Electronics Co., Ltd. Integrated confirmation queues
US10303379B2 (en) * 2017-09-25 2019-05-28 International Business Machines Corporation Efficient adaptive read-ahead in log structured storage
US10621099B2 (en) * 2018-06-29 2020-04-14 Intel Corporation Apparatus, method, and system for enhanced data prefetching based on non-uniform memory access (NUMA) characteristics
GB2575292B (en) * 2018-07-04 2020-07-08 Graphcore Ltd Code Compilation for Scaling Accelerators
US11294595B2 (en) 2018-12-18 2022-04-05 Western Digital Technologies, Inc. Adaptive-feedback-based read-look-ahead management system and method
US11630670B2 (en) 2021-07-21 2023-04-18 Apple Inc. Multi-table signature prefetch
WO2023129316A1 (en) * 2021-12-31 2023-07-06 SiFive, Inc. Prefetcher with out-of-order filtered prefetcher training queue
CN115883910A (zh) * 2022-12-27 2023-03-31 天翼云科技有限公司 一种用于分片视频加速的渐进式弹性缓存方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060248280A1 (en) * 2005-05-02 2006-11-02 Al-Sukhni Hassan F Prefetch address generation implementing multiple confidence levels

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI258078B (en) * 2003-10-07 2006-07-11 Via Tech Inc Pre-fetch controller and method thereof
US7836259B1 (en) * 2004-04-02 2010-11-16 Advanced Micro Devices, Inc. Prefetch unit for use with a cache memory subsystem of a cache memory hierarchy
US8285941B2 (en) * 2008-02-25 2012-10-09 International Business Machines Corporation Enhancing timeliness of cache prefetching
US8677049B2 (en) * 2009-04-13 2014-03-18 Advanced Micro Devices, Inc. Region prefetcher and methods thereof
US8166251B2 (en) * 2009-04-20 2012-04-24 Oracle America, Inc. Data prefetcher that adjusts prefetch stream length based on confidence
US8473688B2 (en) * 2010-03-26 2013-06-25 Microsoft Corporation Anticipatory response pre-caching
CN102508638B (zh) * 2011-09-27 2014-09-17 华为技术有限公司 用于非一致性内存访问的数据预取方法和装置
US9304927B2 (en) * 2012-08-27 2016-04-05 Oracle International Corporation Adaptive stride prefetcher
CN103235764B (zh) * 2013-04-11 2016-01-20 浙江大学 线程感知多核数据预取自调方法
US9304919B2 (en) * 2013-05-31 2016-04-05 Advanced Micro Devices, Inc. Detecting multiple stride sequences for prefetching
US10671535B2 (en) * 2013-07-17 2020-06-02 Advanced Micro Devices, Inc. Stride prefetching across memory pages

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060248280A1 (en) * 2005-05-02 2006-11-02 Al-Sukhni Hassan F Prefetch address generation implementing multiple confidence levels

Also Published As

Publication number Publication date
KR20160010341A (ko) 2016-01-27
CN105279105A (zh) 2016-01-27
US9665491B2 (en) 2017-05-30
CN105279105B (zh) 2020-05-15
US20160019155A1 (en) 2016-01-21

Similar Documents

Publication Publication Date Title
KR102424121B1 (ko) 프리-페치 유닛, 그것을 포함하는 장치 및 그것의 동작 방법
US9280474B2 (en) Adaptive data prefetching
US8683129B2 (en) Using speculative cache requests to reduce cache miss delays
KR101629879B1 (ko) 캐시 사용 기반 어댑티브 스케줄링을 가지는 멀티코어 컴퓨터 시스템
KR102393151B1 (ko) 데이터의 액세스를 예측하는 장치, 그것의 동작 방법 및 그것을 포함하는 시스템
US9483406B2 (en) Communicating prefetchers that throttle one another
Laga et al. Lynx: A learning linux prefetching mechanism for ssd performance model
KR102513446B1 (ko) 집적된 컨펌 대기열 회로를 포함하는 장치 및 그것의 동작 방법
TWI774703B (zh) 偵測與處理儲存串流的系統與方法
US9367466B2 (en) Conditional prefetching
US9582422B2 (en) Hardware prefetcher for indirect access patterns
US20190065375A1 (en) Intelligent data prefetching using address delta prediction
KR20150110337A (ko) 미스 후 미스의 검색을 가속화하기 위해 레벨2 캐시에서 레벨2 분기 목적지 버퍼를 분리하는 장치 및 그 방법
KR102398604B1 (ko) 연쇄 프리 패칭을 위한 장치 및 그것의 동작 방법
WO2018028629A1 (en) Pattern based preload engine
KR20170131366A (ko) 공유 리소스 액세스 제어 방법 및 장치
US9384131B2 (en) Systems and methods for accessing cache memory
CN106649143B (zh) 一种访问缓存的方法、装置及电子设备
US10719441B1 (en) Using predictions of outcomes of cache memory access requests for controlling whether a request generator sends memory access requests to a memory in parallel with cache memory access requests
US20180121209A1 (en) Adaptive mechanisms to improve boot performance
KR102676704B1 (ko) 메모리 시스템에 데이터 스트림을 쓰기 위한 방법, 장치 및 시스템 온 칩

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