[go: up one dir, main page]

KR20050084232A - 데이터 프리패치 방법, 프리패치 시스템 및 프로세싱시스템 - Google Patents

데이터 프리패치 방법, 프리패치 시스템 및 프로세싱시스템 Download PDF

Info

Publication number
KR20050084232A
KR20050084232A KR1020057010495A KR20057010495A KR20050084232A KR 20050084232 A KR20050084232 A KR 20050084232A KR 1020057010495 A KR1020057010495 A KR 1020057010495A KR 20057010495 A KR20057010495 A KR 20057010495A KR 20050084232 A KR20050084232 A KR 20050084232A
Authority
KR
South Korea
Prior art keywords
stride
data
prefetch
count
memory
Prior art date
Application number
KR1020057010495A
Other languages
English (en)
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 KR20050084232A publication Critical patent/KR20050084232A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers

Landscapes

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

Abstract

프리패치 시스템(400)은 연속적인 프로세스에서 데이터(130)를 프리패치하는데 이용된 스트라이드 값(412)을 결정하고 정정하는데 있어서 히스테리시스를 포함한다. 일단 스트라이드값이 결정되면, 단속적인 스트라이드 비 일관성이 무시되고(322,330), 스트라이드값은 그의 이전값을 유지하게 된다. 스트라이드 비 일관성이 빈번하게 되면(322,330), 스트라이드값은 정정된다(230). 정정된 스트라이드값이 반복되면, 그 시스템은 이값을 스트라이드로서 채택하고, 후속적인 스트라이드 비 일관성이 다시 무시되며, 이후에 유지하는 스트라이드값은 비 일관성이 빈번해질 때 까지 현재값으로 된다.

Description

데이터 프리패치 방법, 프리패치 시스템 및 프로세싱 시스템{COUNTER BASED STRIDE PREDICTION FOR DATA PREFETCH}
본 발명은 전자 분야에 관한 것으로, 특히, 소정 프로세스에서 다음 데이터의 위치를 예측하여 그 위치로 부터 데이터를 용이하게 프리패치(prefetch)하는 방법 및 시스템에 관한 것이다.
프리패치는 연속적인 프로세스에서의 지연(latency)을 최소화하는 통상적인 기술이다. 장래에 그 프로세스에 필요할 것으로 기대되는 데이터는, 장래의 후속적인 억세스를 위해, 메모리로 부터 검색되고 캐쉬(cache)에 저장된다. 그 캐쉬는 그 메모리보다 많이 빠른 억세스 시간을 제공하도록 고안된다. 따라서, 그 프로세스가 데이터를 필요로 하고, 그 데이터가 캐쉬내에 있으면, 그 데이트는 보다 높은 캐쉬 억세스 속도로 그 프로세스에 제공된다. 반대로, 데이터가 캐쉬내에 있지 않으면, 그 데이터는 상당히 느린 메모리 억세스 시간이 지난 후에야 비로소 그 프로세스에 제공되며, 그에 따라 그 프로세스에 메모리 억세스 지연을 도입한다.
장래에 필요할 것으로 예상되는 데이터를 용이하게 예측하는데 공통적으로 이용할 수 있는 여러 기술이 있다. 그러한 기술은 "스트라이드 예측(stride prediction)"으로서, 그 기술에서는 필요한 다음 데이터 아이템의 위치가, 이전에 억세스된 데이터 아이템의 위치 시퀀스에 기반한다. 예를 들어, 데이터는 피고용인의 이름, 주소, 사회 보장 번호등의 레코드와 같은 데이터 레코드 어레이 또는 데이터 레코드 리스트로서 저장되는 경우가 있다. 전형적으로, 이들 레코드는 고정 길이 레코드이며, 그에 따라 각 레코드의 시작은 고정된 수의 메모리 위치만큼 그 메모리내의 인접 레코드로 부터 이격된다. 모든 피 고용인 이름의 프린트아웃(printout) 또는 디스플레이를 제공하는 어플리케이션은, 예를 들어, 이런 고정된 수만큼 이격된 메모리 위치를 연속적으로 억세스할 것이다. 어플리케이션이 그 메모리로부터 위치 L에 있는 제 1 피고용인 이름을 억세스하고 위치 L+S에 있는 제 2 피고용인 이름을 억세스한다고 하면, 그 어플리케이션은 메모리의 위치 L+S+S에 위치된 데이터를 억세스하여 다음 피고용인 이름을 획득할 수 있을 것이다. 이러한 억세스가 요청되기 전에, 위치 L+S+S에 있는 데이터가 메모리로 부터 검색되어 고속 캐쉬 메모리에 저장되면, 제 3 피고용인 이름은 제 1 및 제 2 피 고용인 이름보다 빠르게 그 어플리케이션에 제공될 수 있다.
도 1은 종래 기술의 스트라이드 예측 프리패치 프로세스의 예시적인 흐름도이다. 110에서, 프리패치 프로세스는, 어플리케이션이 새로운 데이터 아이템에 대한 억세스 요청을 발생함과 동시에 실행된다. 도시되지는 않았지만, 이러한 프리패치는 다수의 프리패치 알고리즘을 포함하는 전역적 스킴(global scheme)의 일부로서 지칭되기도 하며, 순차적인 데이터 억세스의 근접성등과 같은 요소에 의존하여 선택적으로 실행될 수 있다. 전형적으로, 프로세서는, 그 메모리에 대해 실행된 억세스와 관련된 순차적인 억세스들간의 간격(본 명세서에는 이를 억세스의 스트라이드라함)을 포함하는 정보를 기록하는 스트라이드 예측 테이블(Stride Prediction Table : SPT)을 유지한다. 이러한 스트라이드 예측 테이블은, 전형적으로, 다수의 잠재적인 스트라이드 트랙을 유지하기 위해 실행된 억세스와 관련된 다수의 정보 세트를 기록하도록 구성된다. 편의상 및 이해를 위해, 본 명세서에서는 관련 메모리 억세스들 사이의 단일 스트라이드의 트랙을 유지시키는데 이용되는 단일 정보 세트의 패러다임을 이용하는 발명이 안출된다. 당업자라면, 본 명세서에서 안출된 원리가 다수의 스트라이드에 관련된 다수의 정보 세트를 포함하는 스트라이드 예측 테이블의 통상적인 이용에 직접 적용될 수 있음을 알 수 있을 것이다.
110에서의 현재 스트라이드는, 120에서, 이전/과거(prior/old) 억세스의 어드레스와 새로 요청된 억세스의 어드레스간의 차이에 의해 결정된다. 다음 요청된 어드레스가 이전 억세스처럼 균등 이격될 것으로 가정하면, 130에서, 프리패치가 실행되어 현재/새로운(current/new) 어드레스로 부터 동일 간격에 있는 어드레스의 데이터를 인출한다. 140에서, 다음 데이터 억세스에 대비하여 이전 어드레스는 새로운 어드레스로 대체되며, 150에서 프리패치 루틴이 종료한다. 새로운 데이터에 대한 요청 억세스 시점에 다음 후보 데이터에 대한 프리패치를 개시함으로써, 어플리케이션이 이 데이터에 대한 억세스 요청을 시작하면, 프리패치된 데이터가 고속 캐쉬에 나타날 것이다. 다음 후보 데이터가 후속 요청된 데이터가 아니면, 그 캐쉬는 다음 요청된 데이터를 포함하지 않을 것이며, 메모리 억세스가 요청될 것이다.
그러나, 도 1의 프리패치 프로세스는, 다음 후보 요청 데이터가 이전 요청된 데이터로 부터 균등 이격될 것이라는 가정에 무관하게, 새로운 데이터에 대한 모든 억세스의 프리패치를 시작한다. 이것은 상당한 메모리 억세스 트래픽을 유발하여, 메모리 억세스의 효율을 크게 줄이는 작용을 할 수 있다. 도 2에는 두개의 연속적인 억세스가 동일 스트라이드를 나타내는 경우 또는 오로지 그 경우에만, 소정 프리패치가 시작되는 개선된 종래 기술의 스트라이드 예측 프리패치 프로세스에 대한 예시적인 흐름도가 도시된다. 이 실시예에 있어서, 220에서, 새로운 억세스 요청에 대해 결정된 스트라이드를 이전 결정된 스트라이드와 비교한다. 130에서, 새로운 스트라이드가 이전 스트라이드와 같다면, 다음 스트라이드가 이들 두 스트라이드와 동일할 우도(likelihood)가 충분히 높아서 프리패치가 보장된다. 새로운 스트라이드가 과거 스트라이드와 다르다면, 230에서, 다음 사이클을 대비하여, 과거 스트라이드가 새로운 스트라이드로 대체된다. 당업자라면, 이와 같이 프리패치를 시작하는 2열의 기준(two-in-a-row criteria)이 3열, 4열등으로 연장되어, 캐쉬내에 다음 요청 데이터를 가질 가능성과 초과하는 메모리 억세스 트래픽간에 균형을 유지시킬 수 있음을 알 수 있을 것이다.
도 1은 종래 기술의 스트라이드 예측 프리패치 프로세스의 예시적인 흐름도,
도 2는 대안적인 종래 기술의 스트라이드 예측 프리패치 프로세스의 예시적인 흐름도,
도 3은 본 발명에 따른 스트라이드 예측 프리패치 프로세스의 예시적인 흐름도,
도 4는 본 발명에 따른 스트라이드 예측 프리패치 시스템의 예시적인 블럭도.
전체 도면에서, 동일 참조 번호는 유사하거나 대응되는 특징 또는 기능을 나타낸다.
본 발명의 목적은 어플리케이션에 의해 후속적으로 억세스될 데이터를 프리패치할 우도를 개선하는데 있다. 본 발명의 다른 목적은 하드웨어 구현에 아주 적합한 효율적인 프리패치 기법을 제공하는데 있다.
본 발명의 상술한 목적 및 다른 목적은 연속적인 프로세스에서 데이터를 프리패치하는데 이용되는 스트라이드값을 결정 및 정정하는데 있어서 히스테리시스(hysteresis)를 포함하는 프리패치 시스템에 의해 성취된다. 일단 스트라이드값이 결정되면, 단속적인 스트라이드 비 일관성(inconsistency)이 무시되고, 스트라이드값은 그의 이전값을 유지한다. 스트라이드 비 일관성이 빈번해지면, 스트라이드값은 정정된다. 정정된 스트라이드값이 반복적이면, 그 시스템은 이 값을 스트라이드로 채택하고 후속하는 스트라이드 비 일관성은 다시 무시되며, 비 일관성이 빈번해질 때 까지는 이후에 유지한 스트라이드값이 현재값으로 된다.
메모리 억세스내의 규칙적인 스트라이드 패턴이 스트라이드 패턴을 따르지 않은 단속적인 데이터 억세스를 포함하는 경우도 있다는 것을 전제로 한다. 예를 들어, 네스트형 루프 구조(nested loop structure)는 데이터 리스트를 통해 싸이클을 형성하는 내부 루프와, 내부 루프의 각 싸이클에 이용되는 하나 이상의 변수를 프리셋하는 외부 루프를 포함한다. 데이터 리스트를 통해 싸이클을 형성하는 내부 루프는 고정 스트라이드를 나타낼 것이다. 그러나, 내부 루프의 각각의 재 시작시에는, 리스트의 시작부에서 메모리 억세스가 이루어지는 반면, 이전 억세스는 리스트의 종료부에서 이루어졌다. 그러나, 리스트의 종단부와 리스트의 시작부간의 스팬(span)은 내부 루프의 스트라이드에 대응하지 않을 것이다. 추가적으로, 그 루프의 시작부 또는 종단부에서의 외부 루프에 의한 데이터 억세스는, 억세스들간에, 내부 루프의 스트라이드에 대응하지 않은 스팬을 생성할 것이다. 다른 예시적인 스트라이드의 단속적 단절은 다차원 어레이로 구성되는 데이터의 프로세싱을 포함한다. 전형적으로, 데이터는 하나의 차원을 따르는 주어진 영역에 대해 처리되고, 다른 차원에 대한 인덱스는 증가되며, 첫번째 차원을 따르는 주어진 영역에 대해 그 다음에 인덱스된 다른 차원의 데이터가 처리된다. 첫번째 차원의 영역을 따르는 스트라이드는 일반적으로 고정적일 것이지만, 다음 차원에 대한 인덱스의 증가는 첫번째 차원을 따르는 스트라이드와 매칭되지 않은, 이전 억세스로 부터의 소정 스팬을 가진 억세스로 될 가능성이 있다.
통상적인 스트라이드 예측 프로세스에 있어서, 스트라이드가 "단절"되거나 인터럽트될 때마다, 스트라이드를 결정하는 프로세스가 반복되어, 새로운 스트라이드가 결정된다. 새로운 스트라이드가 결정되는 시간 동안, 프리패치는 발생되지 않으며, 내부 루프의 각각의 재 시작시의 메모리 억세스에 의해 또는 다차원 어레이의 처리동안의 상위 레벨 인덱스의 각각의 증가에 의해 어플리케이션은 지연된다.
본 발명에 따르면, 스트라이드의 단속적 단절 동안에는 스트라이드값이 유지된다. 현재 스트라이드의 데이터 프리패치를 수행하는 것은, 주어진 수의 메모리 억세스들 내에서 동일값을 가진 스트라이드들의 개수에 좌우되며, 프리패치 값을 조정하는 것은, 다수의 상이한 값을 가진 스트라이드의 발생에 좌우된다. 단순한 예시에 있어서, 데이터의 프리패치는 3 억세스들중 2 억세스가 연속적으로 동일한 값을 가질때마다 수행되며, 스트라이드값의 정정은 2 억세스가 연속적으로 상이한 스트라이드를 가질때마다 수행된다.
도 3에는 본 발명에 따른 스트라이드 예측 프리패치 프로세스의 예시적인 흐름도가 도시된다. 이 예시에 있어서, "카운트" 파라메타는 동일한 값을 가진 연속적인 스트라이드의 개수를 선택된 최대치까지 카운트하는데 이용된다. 본 발명의 바람직한 실시예에 있어서, 이 카운트 파라메타는 스트라이드에 있어서의 단속적인 단절과, 스트라이드의 실질적이면서 연속적인 변경을 구별하는데 이용된다. 본 명세서에 개시된 것을 고려한 당업자라면, 연속적인 불균등 스트라이드들의 개수를 카운트하는데 독자적인 파라메타가 채용될 수 있음을 알 수 있을 것이다.
220에서, 새로운 억세스 어드레스와 이전 억세스 어드레스 사이의 현재 스트라이드의 결정후, 본 발명의 프로세스는 현재 스트라이드와 이전 스트라이드를 비교한다. 현재 스트라이드가 이전 스트라이드와 동일하면, 326에서 카운트는 증가되며, 그렇지 않으면, 322에서 현재 카운트가 감소된다. 바람직한 실시예에 있어서, 그 카운트는 0에서 최대 카운트까지로 값이 제한된다. 블럭(324,328)은 블럭(322,326)으로 부터의 증가 또는 감소된 카운트가 이 제한값내에 있도록 클립(clip)한다.
330에서, 그 카운트는 상한 UL 및 하한 LL과 비교되며, 이때 바람직하기로는, 하한 LL은 상한보다 작다. 이 예시에 있어서, 상한 UL은 다음 스트라이드 예측된 억세스 위치로 부터 프리패치를 보장하는데 필요한 균등 스트라이드 발생 횟수에 대응한다. 카운트가 이러한 상한UL과 동일하거나 그를 초과하면, 130에서, 현재 어드레스와 현재 스트라이드를 가산한 것에 대응하는 어드레스로 부터 데이터 프리패치가 실행된다. 예를 들어, 상한 UL이 2의 값일 경우, 초기에, 2열의 동일 스트라이드값이 발생되지 않은 한, 프리패치는 실행되지 않는다. 상한이 3의 값이면, 3열의 동일 스트라이드값이 발생되지 않는한, 프리패치는 실행되지 않는다. 이후, 326,328을 통해 후속하는 동일값을 가진 스트라이드는 그 카운트를 최대까지 계속 증가시킨다. 바람직한 실시예에 있어서, 최대값은 현재 스트라이드값이 "신뢰성" 있다고 결론짓는데 필요한 연속적인 동일값을 가진 스트라이드의 개수로서 선택된다.
상이한 스트라이드가 발생되는 각 시점마다, 332에서 그 카운트는 감소된다. 따라서, 최대 카운트와 현재 카운트값의 차이는 현재 스트라이드값의 "비 신뢰성(unreliability)"의 척도(measure)에 대응한다. 230에서, 하한은 현재 스트라이드값에 대한 변경을 보장하기 위해 비 신뢰성의 충분한 척도를 구성하는 현재 카운트의 값으로서 선택된다. 일반적으로, 도 3에 도시된 바와 같이, 230에서, 현재 스트라이드값이 신뢰성이 없는 것으로 간주되면, 130에서 프리패치는 실행되지 않는다. 유사한 방식으로, 130에서, 현재 스트라이드값이 프리패치를 보장하기에 충분히 신뢰성이 있으면, 230에서 현재 스트라이드값의 정정은 실행되지 않는다. 따라서, 하한 LL은 상한보다 낮게, 일반적으로는 UL-1로 설정된다. 선택적으로, 테스트블럭들(330,140)간의 파선 접속에 의해 나타난 바와 같이, 하한 LL은, 상한 UL에 대해, 현재 스트라이드의 평가된 신뢰성이 130에서 프리패치를 보장하기에 충분하지 않으면서(카운트〈UL), 평가된 비 신뢰성이 230에서 현재 스트라이드의 정정을 보장하기에 충분하지 않도록(카운트〉LL) 선택된다.
도 4는 본 발명에 따른 스트라이드 예측 프리패치 시스템의 예시적인 블럭도이다. 패치 제어기(fetch controller)(430)는 제어 레지스터(410)의 컨텐츠와 프로세서(420)로 부터의 데이터 억세스 요청에 기초하여, 메모리(450)에서 캐쉬로 데이터를 프리패치시킨다. 요청된 데이터의 어드레스는, 상술한 바와 같이, 어플리케이션이 반복적인 방식으로 데이터를 요청하는지, 메모리 억세스들간에 일관된 스트라이드 또는 위치의 스팬을 나타내는지를 결정하는데 이용된다. 제어 레지스터(410)는 이전 데이터 억세스(416)의 어드레스, 이전 스트라이드(412) 및 카운터(414)를 포함한다. 상술한 바와 같이, 단일 카운터(414) 대신에 두개의 카운터가 이용되어, 동일 스트라이드 억세스 및 상이한 스트라이드 억세스의 독립적인 카운트를 유지할 수 있다. 프로세서(420)로 부터의 현재 요청된 데이터의 어드레스는 이전 어드레스(416)와 비교되어, 현재 스트라이드가 결정된다. 현재 스트라이드가 이전 스트라이드(412)에 대응하면, 카운터(414)는 증가되며, 그렇지 않은 경우에는, 감소된다. 카운터(414)의 증가 또는 감소된 값에 따라, 패치 제어기는 메모리(450)내의 다음 예정된 위치에서 캐쉬(460)로 데이터의 프리패치를 시작할지의 여부를 결정한다. 후속적인 데이터 요청이 캐쉬(460)내에 프리패치된 데이터에 대한 것이면, 캐쉬(460)는 프로세스에 직접 데이터를 제공하고, 그에 따라 메모리(450)로 부터 데이터를 검색함에 의해 발생되는 지연을 방지하게 된다.
카운터(414)의 증가 또는 감소된 값에 따라, 패치 제어기(430)는 상술한 바와 같이 스트라이드값(412)을 정정할지를 결정한다. 종래의 시스템에서 처럼 하나의 상이한 스트라이드의 발생에 기초하여 스트라이드값을 정정하는 것이 아니라, 상이한 스트라이드의 개수에 따른 카운트에 기초하여 스트라이드 값(412)을 정정할지를 결정함으로서, 스트라이드 예측 프리패치 시스템(400)은 스트라이드의 단속적인 단절에 둔감하게 된다.
상술한 것은 단지 본 발명의 원리를 설명한 것이다. 당업자라면, 비록 본 명에서에서 정확하게 설명하거나 도시하지는 않았지만, 이하의 청구범위의 사상 및 범주내에서 본 발명의 원리를 채용한 다양한 구조를 고안할 수 있음을 알 수 있을 것이다.

Claims (12)

  1. 메모리(450)에서 캐쉬(460)로 데이터를 프리패치하는 방법으로써:
    다수의 동일한 스트라이드 메모리 억세스와 이전 스트라이드값(412)에 기초하여 동일한 스트라이드 메모리 억세스의 제 1 척도를 결정하는 단계(326)와,
    다수의 상이한 스트라이드 메모리 억세스와 이전 스트라이드 값(412)에 기초하여 상이한 스트라이드 메모리 억세스의 제 2 척도를 결정하는 단계(322)와,
    제 1 척도에 기초하여 상기 메모리(450)로 부터 데이터를 프리패치하는 단계(130)와,
    제 2 척도에 기초하여 이전 스트라이드 값(412)을 정정하는 단계(230)를 포함하는,
    데이터 프리패치 방법.
  2. 제 1 항에 있어서,
    상기 제 1 척도 및 제 2 척도를 결정하는 단계는,
    각각의 동일 스트라이드 메모리 억세스에 대해 증가되고(326) 각각의 상이한 스트라이드 메모리 억세스에 대해 감소되는(322) 카운트를 유지하고, 상기 프리패치를 실행하고, 상기 카운트(414)에 기초하여 정정을 실행함에 의해,
    수행되는,
    데이터 프리패치 방법.
  3. 제 2 항에 있어서,
    상기 프리패치를 실행하는 단계(130)는, 상기 카운트(414)가 상한 이상일 경우(330)에 발생되고,
    상기 정정을 실행하는 단계(230)는, 상기 카운트(414)가 하한 이하일 경우(330)에 발생되는,
    데이터 프리패치 방법.
  4. 제 3 항에 있어서,
    상기 카운트(414)는 최대 3으로 제한되고, 상기 상한은 2 및 상기 하한은 1인,
    데이터 프리패치 방법.
  5. 프리패치 시스템(400)으로써,
    요청된 메모리 억세스들간의 스트라이드 값의 일관성에 대응하는 적어도 하나의 척도(414)를 포함하도록 구성된 제어 레지스터(410)와,
    상기 일관성의 척도에 기초하여 상기 메모리(450)에서 캐쉬(460)로 데이터를 프리패치하도록 구성된 프리패치 제어기(430)를 포함하고,
    상기 스트라이드값의 일관성은 현재 스트라이드와 이전 스트라이드값(412)의 비교에 좌우되고, 상기 프리패치 제어기(430)는 비 일관성 척도(a measure of inconsistency)에 기초하여 이전 스트라이드값(412)을 정정하도록 추가 구성되며, 상기 비 일관성 척도는 요청된 메모리 억세스들간의 다수의 상이한 스트라이드에 기초하는,
    프리패치 시스템(400).
  6. 제 5 항에 있어서,
    상기 일관성 척도 및 비 일관성 척도는, 각각의 동일한 스트라이드 요청된 메모리 억세스에 대해 최대 카운트까지 증가되고, 각각의 상이한 스트라이드 요청된 메모리 억세스에 대해 최소 카운트까지 감소되는 카운트(414)에 대응하는,
    프리패치 시스템(400).
  7. 제 6 항에 있어서,
    상기 프리패치 제어기(430)는, 상기 카운트(414)가 상한 임계 레벨 이상일 경우에 데이터를 프리패치하고, 상기 카운트(414)가 하한 임계 레벨 이하일 경우에 이전 스트라이드 값(412)을 정정하도록 구성된,
    프리패치 시스템(400).
  8. 제 7 항에 있어서,
    상기 최대 카운트는 3이고, 상기 상한 임계 레벨은 2이며, 상기 하한 임계 레벨은 1이고, 상기 최소 카운트는 0인,
    프리패치 시스템(400).
  9. 프로세싱 시스템으로써:
    억세스 어드레스에 기초하여 데이터에 억세스를 제공하도록 구성된 메모리(450)와,
    상기 메모리(450)에 동작 가능하게 결합되어, 상기 메모리(450)로 부터 억세스된 데이터를 저장하고, 그 데이터에 대해 신속히 억세스를 도모하도록 구성된 캐쉬(460)와,
    상기 메모리(450) 및 캐쉬(460)에 동작 가능하게 결합되어, 상기 억세스 어드레스를 제공하고, 상기 데이터가 캐쉬(460)내에 있다면 상기 데이터를 캐쉬(460)로 부터 수신하고 상기 데이터가 캐쉬(460)내에 없다면, 상기 데이터를 메모리(450)로 부터 수신하도록 구성된 프로세서(420)와,
    상기 프로세서(420)와, 상기 메모리(450)와, 상기 캐쉬(460)에 동작 가능하게 결합되고, 상기 억세스 어드레스 및 예측된 스트라이드값에 기초하여, 상기 메모리(450)로 부터 상기 캐쉬(460)로 데이터를 전송하도록 구성된 패치 제어기(430)를 포함하고,
    상기 패치 제어기(430)는 동일한 스트라이드 값의 반복적인 발생에 기초하여 스트라이드 일관성의 척도를 유지하고, 상이한 스트라이드값의 반복적인 발생에 기초하여 스트라이드 비 일관성의 척도를 유지하도록 구성되며,
    상기 패치 제어기(430)는 상기 스트라이드 일관성의 척도에 기초하여 데이터를 전송하고, 상기 스트라이드 비 일관성의 척도에 기초하여 예측된 스트라이드값을 정정하는,
    프로세싱 시스템.
  10. 제 9 항에 있어서,
    상기 스트라이드 일관성의 척도와 스트라이드 비 일관성의 척도는, 각각의 동일한 스트라이드 요청된 메모리 억세스에 대해 최대 카운트까지 증가되고, 각각의 상이한 스트라이드 요청된 메모리 억세스에 대해 최소 카운트까지 감소되는 카운트(414)에 기초하는,
    프로세싱 시스템.
  11. 제 10 항에 있어서,
    상기 패치 제어기(430)는,
    상기 카운트(414)가 상한 임계 레벨 이상일 경우에 데이터를 전송하고, 상기 카운트(414)가 하한 임계 레벨 이하일 경우에 예측된 스트라이드값을 정정하도록 구성된,
    프로세싱 시스템.
  12. 제 11 항에 있어서,
    상기 최대 카운트는 3이고, 상기 상한 임계 레벨은 2이고, 상기 하한 임계 레벨은 1이며, 상기 최소 카운트는 0인,
    프로세싱 시스템.
KR1020057010495A 2002-12-12 2003-12-09 데이터 프리패치 방법, 프리패치 시스템 및 프로세싱시스템 KR20050084232A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US43275502P 2002-12-12 2002-12-12
US60/432,755 2002-12-12

Publications (1)

Publication Number Publication Date
KR20050084232A true KR20050084232A (ko) 2005-08-26

Family

ID=32507990

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057010495A KR20050084232A (ko) 2002-12-12 2003-12-09 데이터 프리패치 방법, 프리패치 시스템 및 프로세싱시스템

Country Status (6)

Country Link
EP (1) EP1576465A1 (ko)
JP (1) JP2006510082A (ko)
KR (1) KR20050084232A (ko)
CN (1) CN1726459A (ko)
AU (1) AU2003285604A1 (ko)
WO (1) WO2004053686A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10091322B2 (en) 2011-10-18 2018-10-02 Qualcomm Incorporated Method and apparatus for improving a user experience or device performance using an enriched user profile

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4212521B2 (ja) * 2004-06-30 2009-01-21 株式会社東芝 先読み制御装置、プロセッサの一時記憶装置へデータの先読みを制御する先読み制御方法およびプログラム
JP2009230374A (ja) 2008-03-21 2009-10-08 Fujitsu Ltd 情報処理装置,プログラム,及び命令列生成方法
US9274965B2 (en) 2008-12-15 2016-03-01 International Business Machines Corporation Prefetching data
WO2011060570A1 (zh) * 2009-11-17 2011-05-26 华为技术有限公司 一种高速计数器处理方法及计数器
US8433852B2 (en) * 2010-08-30 2013-04-30 Intel Corporation Method and apparatus for fuzzy stride prefetch
CN102385622B (zh) * 2011-10-25 2013-03-13 曙光信息产业(北京)有限公司 一种文件系统stride访问模式的预读方法
US20140189249A1 (en) * 2012-12-28 2014-07-03 Futurewei Technologies, Inc. Software and Hardware Coordinated Prefetch
US10379864B2 (en) * 2016-12-26 2019-08-13 Intel Corporation Processor prefetch throttling based on short streams
US11194728B2 (en) * 2019-07-29 2021-12-07 Micron Technology, Inc. Memory-aware pre-fetching and cache bypassing systems and methods
US11327891B2 (en) * 2019-09-20 2022-05-10 Samsung Electronics Co., Ltd. Prefetching operations in storage devices

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU7666796A (en) * 1996-11-04 1998-05-29 Advanced Micro Devices Inc. A stride-based data address prediction structure
DE10121792C2 (de) * 2000-05-26 2003-09-25 Ibm Universelle Ladeadresse/Wertevorhersageschema

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10091322B2 (en) 2011-10-18 2018-10-02 Qualcomm Incorporated Method and apparatus for improving a user experience or device performance using an enriched user profile

Also Published As

Publication number Publication date
WO2004053686A1 (en) 2004-06-24
EP1576465A1 (en) 2005-09-21
CN1726459A (zh) 2006-01-25
JP2006510082A (ja) 2006-03-23
AU2003285604A1 (en) 2004-06-30

Similar Documents

Publication Publication Date Title
US10353819B2 (en) Next line prefetchers employing initial high prefetch prediction confidence states for throttling next line prefetches in a processor-based system
US6584549B2 (en) System and method for prefetching data into a cache based on miss distance
US7657726B2 (en) Context look ahead storage structures
KR102369500B1 (ko) 데이터 처리장치에서의 적응형 예비 인출
US8225070B2 (en) Information processing apparatus and cache memory control method
US6782454B1 (en) System and method for pre-fetching for pointer linked data structures
US20010013087A1 (en) Caching of objects in disk-based databases
US20030079089A1 (en) Programmable data prefetch pacing
CN113986774B (zh) 一种基于指令流和访存模式学习的缓存替换系统及方法
JPH11282631A (ja) 入出力制御装置および入出力制御方法
WO1999026142A1 (en) Cache memory operation
KR20050084232A (ko) 데이터 프리패치 방법, 프리패치 시스템 및 프로세싱시스템
JP2001188706A (ja) ディスク制御装置
US6687807B1 (en) Method for apparatus for prefetching linked data structures
JP2017072982A (ja) 情報処理装置、キャッシュ制御方法およびキャッシュ制御プログラム
US20090217004A1 (en) Cache with prefetch
US6553469B2 (en) Memory record update filtering
GB2299879A (en) Instruction/data prefetching using non-referenced prefetch cache
US20210365378A1 (en) Method of cache prefetching that increases the hit rate of a next faster cache
US11086781B2 (en) Methods and apparatus for monitoring prefetcher accuracy information using a prefetch flag independently accessible from prefetch tag information
US7437504B2 (en) Reading a storage medium
US5903915A (en) Cache detection using timing differences
US11461101B2 (en) Circuitry and method for selectively controlling prefetching of program instructions
CN112800288B (zh) 图流数据处理的方法
JP2003044357A (ja) キャッシュ先取り方式

Legal Events

Date Code Title Description
PA0105 International application

Patent event date: 20050610

Patent event code: PA01051R01D

Comment text: International Patent Application

PG1501 Laying open of application
PC1203 Withdrawal of no request for examination
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid