KR20070086246A - 처리 시스템, 캐시 시스템 및 프리페치 데이터 전송 방법 - Google Patents

처리 시스템, 캐시 시스템 및 프리페치 데이터 전송 방법 Download PDF

Info

Publication number
KR20070086246A
KR20070086246A KR1020077013533A KR20077013533A KR20070086246A KR 20070086246 A KR20070086246 A KR 20070086246A KR 1020077013533 A KR1020077013533 A KR 1020077013533A KR 20077013533 A KR20077013533 A KR 20077013533A KR 20070086246 A KR20070086246 A KR 20070086246A
Authority
KR
South Korea
Prior art keywords
prefetch
cache
data
memory
block
Prior art date
Application number
KR1020077013533A
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 KR20070086246A publication Critical patent/KR20070086246A/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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/12Replacement control
    • 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/6028Prefetching based on hints or prefetch instructions

Abstract

프리페치 비트(126)는 캐시(120)의 각 블록(125)과 관련되며, 캐시-프리페치 동작의 관리(130)는 이러한 비트(126)의 상태에 의존한다. 각각의 응용이, 비디오 응용에서의 프레임 메모리와 같은, 규칙적으로 반복하는 메모리 액세스가 존재할 것 같은 메모리 영역(115)을 식별하도록 허용함으로써, 다른 효율성이 얻어진다. 이들 메모리 영역(115) 각각에 대해, 그러한 응용은, 프레임 메모리내의 데이터의 라인 길이와 같은, 가능한 스트라이드 값을 또한 식별한다. 프리페칭은 식별된 영역(115)으로 제한되며, 프리페치 비트(126)는 이들 영역으로부터 블록(125)을 식별하고, 반복된 캐시 히트/미스 결정을 제한하는데 이용된다.

Description

처리 시스템, 캐시 시스템 및 프리페치 데이터 전송 방법{CACHE WITH PREFETCH}
본 발명은 처리 시스템의 분야에 관한 것으로서, 특히 프리페치(prefetch) 능력을 갖는 캐시를 포함하는 프로세서에 관한 것이다.
프로세서와 외부 메모리 사이의 데이터 전송은 때때로 상당한 양의 시간을 소모하며, 이러한 데이터 전송의 영향을 감소시키기 위한 기법들이 개발되어 왔다. 두 가지의 그러한 기법은 캐시 메모리를 이용하는 것과 프리-페칭을 이용하는 것을 포함한다.
참조 및 이해의 용이성을 위해, 이하에서 캐시의 동작은 "판독" 액세스의 관점에서 정의되며, 여기서, 프로세서는 메모리 어드레스로부터 데이터를 요청한다. 당업자라면, 본 발명의 원리는 "기록" 액세스 동작에도 마찬가지로 적용가능함을 인식할 것이다.
캐시 메모리는 외부 메모리보다 프로세서에 더 근접하여 위치되며, 때로는 프로세서와 동일한 집적 회로내에 위치된다. 프로세서가 메모리 어드레스로부터 데이터 항목을 요청하는 경우, 캐시를 체크하여, 캐시가 메모리 어드레스에 대응하는 데이터를 포함하는지의 여부를 결정한다. 캐시 내용이 메모리 어드레스에 대응할 때, "캐시-히트(cache-hit)"가 발생되며, 그렇지 않은 경우, "캐시-미스(cache-miss)"가 발생된다.
캐시-히트가 발생된다면, 메모리와 프로세서 사이가 아닌, 캐시와 프로세서 사이에서 데이터 전송이 실행된다. 캐시는 프로세서에 더 근접하기 때문에, 캐시-프로세서 전송을 위해 요구되는 시간은, 메모리-프로세서 전송을 위해 요구되는 시간보다 실질적으로 짧다.
캐시-미스가 발생된다면, 메모리로부터 캐시로 데이터가 전송되며, 그 다음 프로세서로 전송된다. 데이터가 메모리로부터 전송될 때, 메모리로부터의 데이터에 대한 미래의 요청이 공간적 또는 시간적 위치를 나타낼 것이라는 가정하에, 데이터의 "블록" 또는 "라인"이 전송된다. 공간적 위치는 이전에 요청된 어드레스에 근접한 어드레스로부터의 데이터에 대한 요청에 대응한다. 시간적 위치는 데이터에 대한 이전의 요청의 짧은 시간내의 동일 데이터에 대한 요청에 대응한다. 공간적 또는 시간적 위치가 소정의 응용에서 널리 보급되어 있다면, 캐시를 통한 데이터 전송의 관리와 관련된 오버헤드는, 캐시의 동일 블록으로부터의 다중 캐시-프로세서 전송에 의해 달성된 절약(savings)에 의해 보상된다.
프리-페칭은 메모리로부터의 데이터에 대한 미래의 요청을 예측하고자 시도함으로써, 메모리-캐시 또는 메모리-프로세서 전송의 영향을 감소시키는데 이용된다. 예측된 메모리 액세스는, 프로세서가 예측된 요청을 실행할 때 이용가능한 예 측된 메모리 어드레스로부터의 데이터를 갖고자 하는 시도에서, 프로세서에서의 동작과 병렬로 실행된다. 전형적인 프리-페치 시스템에서, 메모리 액세스 경향을 결정하기 위해, 프로세서에서의 메모리 액세스 동작이 모니터링된다. 예를 들어, 프로그램내의 두-루프(do-loop)는 때때로, 일반적으로 데이터 액세스 "스트라이드(stride)"라고 지칭되는 규칙적인 패턴을 이용하여 데이터를 통해 진행된다. 루프를 통한 처음의 약간의 사이클 이후에, 프리페치 시스템은 스트라이드를 결정할 것이며, 후속하는 데이터 요청을 정확하게 예측한다. 전형적인 프리-페치 시스템에서, 결정된 스트라이드 값의 표가 유지되고, 반복하는 액세스가 발생되는 프로그램 어드레스에 의해 인덱싱된다. 프로그램 카운터가, 프로그램이 다시 이전의 반복하는 액세스의 어드레스에 있음을 나타낼 때마다, 어드레스에 대응하는 표로부터의 스트라이드 값은 메모리로부터 데이터를 프리-페치하는데 이용된다. 미래의 메모리 액세스를 예측하는 다른 수단은, 본 기술 분야에서 공통적인 것이다. 특정 실시예에 따라, 예측된 데이터는 메모리로부터보다 빠른, 프로세서로의 전송을 위해, 프리-페치 버퍼로 로딩되거나 또는 캐시내로 로딩된다. 데이터를 캐시내로 프리로딩함으로써, 예측이 정확한 경우, 캐시-미스의 가능성이 감소된다.
종래의 캐시-프리페치 조합은 상당한 오버헤드를 요구하고/하거나, 비효율성을 나타낸다. 캐시가 가득 찬 이후에, 캐시 블록이 캐시로 로딩될 때마다, 존재하는 캐시 블록은 중복기록되어야 한다. 중복기록되는 블록이 메모리를 위해 의도된 데이터를 기록하는데 이용된다면, 존재하는 블록은 새로운 블록이 이러한 데이터를 중복기록하기 전에 메모리로 복제되어야 한다. 따라서, 각각의 잘못된 예측은, 프 로세서에 의해 이용되지 않는 캐시로 데이터를 전송하기 위해 불필요한 버스 대역폭 및 전력을 소모할 뿐만 아니라, 캐시에 중복기록된 블록을 가짐으로써 실현될 수 있는 이득을 무효로 할 가능성을 갖는다.
일반적으로, 프리-페칭을 위한 예측의 정확성은, 예측가능한 메모리 액세스 패턴을 결정하는데 바쳐진 자원의 양과 관련된다. 따라서, 잘못된 예측에 의해 초래된 잠재적인 캐시-효율성 이득의 손실을 피하기 위해, 스트라이드 예측 값을 위한 메모리 뿐만 아니라, 많은 양의 예측 논리가 전형적으로 요구되어, 그에 대응하는 영향이, 회로 영역 및 전력 소모에 미치게 된다. 더욱이, 소프트웨어를 이용하여 프리-페치 프로세스의 일부 또는 전부를 실행한다면, 이러한 소프트웨어를 실행하기 위해, 추가적인 프로세서 사이클이 이용된다.
또한, 예측된 메모리 액세스가 결정될 때, 캐시를 체크하여, 예측된 메모리 어드레스가 캐시에 이미 로딩되었는지의 여부를 결정해야 한다. 따라서, 캐시에 대한 각각의 반복되는 예측된 액세스는 일반적으로, 캐시-히트 또는 캐시-미스가 발생되었는지에 관한 두 가지의 결정을 요구한다.
발명의 개요
본 발명의 목적은 효율적인 캐시-프리페치 조합을 제공하는 것이다. 본 발명의 다른 목적은 실질적인 양의 회로 또는 소프트웨어 프로그래밍을 요구하지 않는 캐시-프리페치 조합을 제공하는 것이다. 본 발명의 또다른 목적은 현존하는 캐시 또는 프리페치 아키텍쳐와 호환되는 캐시-프리페치 조합을 제공하는 것이다.
이들 및 다른 목적은 프리페치 비트를 각각의 캐시 블록과 관련시키고, 이러한 비트의 상태에 근거하여 캐시-프리페치 동작을 유지함으로써 달성된다. 각각의 응용이, 비디오 응용에서의 프레임 메모리와 같은, 그 내부에서 규칙적으로 반복되는 메모리 액세스가 발생될 것 같은 메모리 영역을 식별하도록 허용함으로써 다른 효율성이 얻어진다. 이들 메모리 영역 각각에 대해, 그러한 응용은, 프레임 메모리내의 데이터의 라인 길이와 같은, 가능한 스트라이드 값을 또한 식별한다. 프리페칭은 식별된 영역으로 제한되며, 프리페치 비트는 이들 영역으로부터 블록을 식별하고, 반복된 캐시 히트/미스 결정을 제한하는데 이용된다.
본 발명은 첨부된 도면을 참조하면서, 예를 통해, 더욱 상세히 설명된다.
도 1은 본 발명에 따른 처리 시스템의 예시적인 블록도를 도시한다.
도 2는 본 발명에 따른 프리페치 제어기의 예시적인 흐름도를 도시한다.
도면 전체를 통해, 동일한 참조 번호는 동일한 요소, 또는 실질적으로 동일한 기능을 수행하는 요소를 나타낸다. 도면은 예시를 위한 것이며, 본 발명의 영역을 제한하기 위한 것이 아니다.
도 1은 본 발명에 따른 처리 시스템의 예시적인 블록도를 도시한다. 처리 시스템은 프로세서(150)와, 프로세서(150)로부터의 메모리 액세스 요청에 응답하여, 외부 메모리(110)로/로부터 데이터를 송신 및 수신하고, 데이터의 적어도 일부를 프로세서(150)로 전송하는 캐시(120)를 포함한다.
도 1에 도시된 바와 같이, 프리페치 제어기(130)가 본 발명의 처리 시스템에 또한 포함되며, 캐시(120)내에 포함되거나, 또는 캐시(120)에 접속되는 분리된 모듈로서 내장된다.
본 발명의 하나의 양상에 따르면, 캐시 메모리(120)의 각 블록 또는 라인(125)은, 블록(125)에 대응하는 다른 데이터를 프리페치할지의 여부를 결정하기 위해 제어기(130)에 의해 이용되는 프리페치 파라미터(126)를 포함한다. 바람직한 실시예에서, 프리페치 파라미터(126)는 단일의 이진 수(비트)이지만, 다수 비트 파라미터를 또한 이용하여, 프리페치 옵션의 다양한 조합, 또는 상이한 프리페치 속성을 정의할 수 있다. 제어기(130)에 의한 파라미터(126)의 특정한 이용이 도 2의 흐름도에 제공되지만, 본 발명은 도 2에 도시된 방법에 한정되지 않는다.
본 발명은 액세스되는 데이터의 위치가, 메모리에 대한 규칙적으로 반복되는(즉, 예측가능한) 액세스가 발생될 것인지의 여부에 대한 표시로서 기능할 수 있다는 관찰을 전제로 한다. 일반적으로, 프리페치 파라미터(126)는 캐시(120)내의 블록(125)에 위치되는 데이터에 근거하여, 프로세서(150)가 프리페치된 데이터를 액세스할 것 같은지의 여부에 대한 표시를 제어기(130)에 제공하는데 이용된다. 파라미터(126)의 다수 비트 실시예에서, 파라미터의 값은 가능성의 정량적 평가에 대응할 수 있고, 단일 비트 실시예에서, 파라미터의 값은 단순한 가능성(likely)/불가능성(unlikely), 또는 가능성/미지의(unknown) 결정에 대응한다. 위에서 주지된 바와 같이, 종래의 스트라이드 예측 표와는 반대로, 메모리에 대한 규칙적으로 반복되는 액세스의 가능성은, 실행되는 프로그램 코드의 섹션보다는, 액세스되는 메모리의 블록에 근거한다.
또한, 파라미터(126)를 이용하여, 프리페치가 이미 수행되었던 블록을 식별함으로써, 각 블록내의 데이터 항목이 액세스됨에 따라, 다수의 캐시 히트/미스 결정을 수행할 필요성을 제거한다.
본 발명의 다른 양상에 따르면, 소정의 응용 프로그램은 본 명세서에서 참조로 인용되는, 2002년 5월 1일자로 출원된 Jan-Willem van de Waerdt의 미국 특허 출원 공개 US 2003/0208660, "MEMORY REGION BASED DATA PRE-FETCHING"에 개시된 원리에 근거하여, 예측가능 액세스가 발생될 것 같은 메모리(110)의 영역(115)을 식별함으로써, 캐시내의 데이터의 블록(125)이 다른 데이터의 프리페치를 보장할지의 여부에 대한 결정을 용이하게 할 수 있다. 예를 들어, 비디오 처리 응용에서, 응용 프로그램은 프레임 버퍼링을 위해 이용되는 메모리(110)의 영역을, 프리페칭을 위해 적합한 영역(115)으로서 식별할 수 있다. 종래의 기법을 이용함으로써, 응용 프로그램은 이들 프리페치 영역(115) 각각의 범위(bound)를 사전정의된 레지스터 또는 메모리 위치에 저장하고, 프리페치 제어기(130)는 요청된 메모리 어드레스를 이들 범위와 비교하여, 요청된 메모리 어드레스가 프리페칭 영역(115) 이내인지의 여부를 결정한다.
예시적인 실시예에서, 응용을 실행하는 프로세서(150)가 사전정의된 영역(115)내의 데이터를 처음에 액세스할 때, 프리페치가 실행된다. 영역(115)으로부터 캐시(120)로 차후에 전송되는 각 블록(125)은, 파라미터(126)를 이용하여, 프리페칭이 보장되는 블록으로서 식별된다. 각각의 식별된 블록(125)이 액세스됨에 따라, 그의 대응하는 프리페치 블록의 프리페치가 수행된다.
본 발명의 다른 양상에 따르면, 응용 프로그램은 프리페치 스트라이드 값의 결정을 또한 용이하게 한다. 전형적인 실시예에서, 응용 프로그램은 각각의 프리페칭 영역(115)과 관련된 스트라이드를 사전정의된 레지스터 또는 메모리 위치에 저장함으로써, 프리페치 스트라이드 값을 직접적으로 제공한다. 예를 들어, 인접한 수직 픽처 요소(화소)가 공통적으로 액세스되고, 메모리에서의 데이터가 화소의 인접하는 수평 라인으로서 저장되는 비디오 응용에서, 응용 프로그램은 수평 라인 길이를 프리페치 스트라이드 값으로서 저장할 수 있다. 메모리내의 데이터가 직사각형 타일로서 저장된다면, 응용 프로그램은 타일 크기를 프리페치 스트라이드 값으로서 저장할 수 있다.
대안적으로, 예측가능 메모리 액세스를 나타내는 메모리의 영역(115) 및/또는 각 영역(115)과 관련된 스트라이드 값은, 응용 프로그램이 실행됨에 따라, 본 기술 분야에 공통적이지만, 프로그램 코드 의존적이 아닌, 메모리 위치 의존적이도록 변형된 예측 기법을 이용하여, 발견적으로 결정될 수 있다.
도 2는 도 1의 프리페치 제어기(130)에 의해 이용될 수 있는, 본 발명에 따른 프리페치 제어기의 예시적인 흐름도를 도시한다. (210)에서, 어드레스 A에 위치된 데이터 항목에 대한 메모리 요청이 수신된다. (215)에서, 캐시 히트/미스 결정이 행해진다. 요청된 데이터 항목이 캐시에 위치됨을 나타내는 캐시-히트가 결정된다면, (220)에서, 대응하는 데이터 항목이 리턴되고, 그로 인해, 프리페치 제어기가 외부 메모리(110)로부터의 데이터를 프리페치할지의 여부를 결정하는 동안, 도 1의 프로세서(150)가 그의 동작을 계속하는 것이 허용된다.
본 발명의 양상들 중 하나에 따르면, (235)에서, 프리페치 제어기는 요청된 어드레스 A에 대한 액세스 이후에, 어드레스 A와 관련된 프리페치 메모리 위치에서의 데이터에 대한 요청이 뒤따를 것 같은지의 여부에 관한 결정을 위해 체크를 행한다. 위에서 주지된 바와 같이, 어드레스 A에 대응하는 블록(125)과 관련된 프리페치 파라미터(126)는 이러한 가능성의 표시를 제공한다. 바람직한 실시예에서, 프리페치 파라미터(126)는 이진 수이며, 여기서, "0"은 프리페치가 실행되지 않을 것 같음을 나타내고, "1"은 프리페치가 실행될 것 같음을 나타내거나, 또는 가능성이 알려지지 않음을 나타내며, 프리페치가 실행될 것 같지 않다고 결정하기 위한 증거가 수집될 때까지, 실행될 것 같은 것으로 가정되어야 한다.
(215)에서, 캐시-미스가 결정된다면, (225)에서, 어드레스 A에 대응하는 데이터의 블록이 외부 메모리로부터 검색되고, (230)에서, 이러한 캐시 블록에 대응하는 프리페치 파라미터가, 프리페칭이 이러한 블록에 대해 수행되어야 함을 나타내도록 설정된다. (220)에서, 어드레스 A에 대응하는 데이터 항목이 캐시 블록으로부터 추출되어, 프로세서로 리턴됨으로써, 프리페치 제어기가, (235)에서, 외부 메모리(110)로부터의 데이터를 프리페치할지의 여부를 결정하는 동안, 도 1의 프로세서(150)가 그의 동작을 계속하도록 허용된다.
당업자라면, 블록(230)을 예외로 한 블록(215-235)은 종래의 캐시 제어기의 동작에 대응하며, 본 명세서에서는 완전성을 위해 제공된 것임을 인식할 것이다. 종래의 캐시 제어기가 이용된다면, 프리페치 제어기(130)는 캐시(120)의 히트/미스 출력을 이용하여, 미스가 보고될 때에 블록(230)을 선택적으로 실행한 후, 블록(235)으로 계속 진행하도록 구성될 수 있다.
만약, (235)에서, 프리페치 파라미터가, 프리페치가 실행될 것 같음을 나타낸다면, 프리페치 제어 프로세스는 결정 블록(240)으로 분기하고, 그렇지 않고, 만약 프리페치 제어기가, 프리페치가 실행될 것 같지 않음을 나타낸다면, 제어기는 단지 리턴되어, (290)에서, 프로세서로부터의 다른 메모리 요청을 대기한다.
(240)에서, 제어기는 어드레스 A에 대응하는 프리페치 어드레스가 이용가능한지의 여부를 결정한다. 위에서 주지된 바와 같이, 본 발명의 바람직한 실시예에서, 응용 프로그램은, 프리페칭이 실행될 것 같은 외부 메모리의 영역을 식별하도록 구성된다. 대안적으로, 종래의 스트라이드 예측 분석과 유사한 기법을 이용하여, 그러한 영역을 식별/예측하도록, 이전의 메모리 액세스 활동이 평가된다. 어드레스 A가 관련된 프리페치 데이터를 갖지 않는 것으로 결정된다면, 프로세스는 이하에 기술되는 (280)에서 계속된다.
(240)에서, 어드레스 A가 관련 프리페치 데이터를 갖는 것으로 결정된다면, (245)에서, 프리페치 자원의 이용가능성이 체크된다. (245)에서, 프리페치가 이 때에 실행될 수 없다면, 프로세스는 단지 리턴되고, (290)에서, 다른 메모리 요청 및 상기 프로세스의 반복을 대기한다.
(245)에서, 프리페치 자원이 현재 이용가능하다면, 바람직하게, A가 위치되는 정의된 프리페칭 영역과 관련되는 스트라이드 값을 추가함으로써, (250)에서, 프리페치 데이터의 어드레스 A가 결정된다. 대안적으로, 전술한 스트라이드 예측 분석 기법은 스트라이드 값을 평가하는데 이용될 수 있다. 응용 프로그램이 스트라이드 값을 정의하도록 허용하는 바람직한 기법이 이용되지 않는 경우, 어드레스 A에 대응하는 프리페치 어드레스 P를 결정하기 위한 다른 종래의 기법이 또한 이용될 수 있다.
(255)에서, 캐시가 평가되어, 프리페치 어드레스 P가 캐시내에 이미 포함(캐시-히트)되는지의 여부가 결정된다. 프리페치 어드레스가 캐시내에 이미 존재한다면, 프리페치는 필요하지 않으며, 프로세스는 이하에 기술된 (280)에서 계속된다. 그렇지 않은 경우, (260)에서, 프리페치 어드레스 P에 대응하는 프리페치 데이터의 블록이 메모리로부터 검색되어, 캐시에 저장된다. (270)에서, 어드레스 P를 포함하는 캐시 블록과 관련된 프리페치 파라미터(도 1의 126)가, 어드레스 P가 프로세서로부터의 메모리 요청에 의해 액세스될 때, 프리페치가 실행될 것 같음을 나타내도록 설정된다.
(280)에서, 요청된 메모리 블록 A에 대응하는 캐시 블록과 관련된 프리페치 파라미터가 리세트되어, 메모리 어드레스 A, 또는 메모리 어드레스 A에 대응하는 캐시 블록내의 임의의 메모리 어드레스로부터의 데이터 항목이 프로세서에 의해 요청될 때, 프리페치가 실행될 것 같지 않음을 나타낸다. 프리페치가 실행될 것 같지 않은 이유는, ((240)을 통해) 어드레스 A가 프리페칭을 위한 관련 어드레스를 갖지 않는 것으로 결정되거나, 또는 ((255), 또는 (255-260)을 통해) A의 관련된 프리페치 어드레스 P가 캐시내로 이미 로딩되었기 때문임을 주지해야 한다. 따라서, 이들 결정들 중 어느 하나가 행해지면, 어드레스 A에 대응하는 캐시 블록내의 모든 어드레스에 대해 다른 프리페칭 오버헤드가 회피된다.
(290)에서, 프로세스는 리턴되어, 프로세서에 의한 메모리 액세스에 대한 다른 요청을 대기한다.
전술한 내용은 단지, 본 발명의 원리를 예시하는 것이다. 따라서, 당업자라면, 비록 본 명세서에서 명시적으로 기술되거나 도시되지 않았지만, 본 발명의 원리를 구현하며, 따라서 본 발명의 사상 및 영역내에 속하는 다양한 구성을 고안할 수 있을 것임을 이해할 것이다. 예를 들어, 도 1은 프리페치 파라미터(126)가 캐시(120)내에 저장되는 실시예를 도시한다. 당업자라면, 프리페치 제어기(130)는 이들 프리페치 파라미터를 포함하도록 구성될 수 있으며, 그로 인해, 종래의 캐시 구조를 재설계하지 않아도 된다. 유사한 방식에 있어서, 예측적 방식으로 액세스될 것 같은 메모리 영역을 식별하기 위한 영역(115)의 범위를 식별하는 것의 대안으로서, 비트들의 표를 이용하여, 예를 들면, 메모리 어드레스의 보다 높은 차수의 비트에 의해 인덱싱된 그러한 영역을 식별할 수 있다. 유사한 방식에 있어서, (때때로 메모리 어드레스의 보다 높은 차수의 비트인) 종래의 캐시-태그를 이용하여, 예측적 방식으로 액세스될 것 같은 영역을 식별하는 비트 및 프리페치가 해당 블록에 대해 실행될 것 같은지의 여부를 나타내는 프리페치 파라미터 비트 둘다를 포함하는 표를 인덱싱할 수 있다. 이들 및 다른 시스템 구성 및 최적화 특징은, 이러한 개시 내용의 관점에서 당업자에게 명백할 것이며, 이하의 특허 청구 범위의 영역내에 포함된다.
이들 특허 청구 범위를 해석시에 다음과 같은 것을 이해해야 한다. 즉, a) "포함하는" 이라는 용어는 주어진 청구항에 열거된 것들이 아닌 다른 요소 또는 작용의 존재를 배제하지 않고, b) 요소 앞의 하나의("a" 또는 "an") 라는 용어는 그러한 요소가 복수개 존재함을 배제하지 않으며, c) 특허 청구 범위에서의 임의의 참조 부호는 그들의 영역을 제한하지 않고, d) 수 개의 "수단"이 동일한 항목 또는 하드웨어 또는 소프트웨어 구현된 구조 혹은 기능에 의해 표현될 수 있으며, e) 개시된 요소들 각각은 하드웨어 부분(예를 들면, 개별적인 및 집적된 전자 회로를 포함함), 소프트웨어 부분(예를 들면, 컴퓨터 프로그래밍), 및 그들의 임의의 조합으로 이루어질 수 있고, f) 하드웨어 부분은 아날로그 및 디지털 부분 중 하나 또는 둘다로 이루어질 수 있으며, g) 구체적으로 다르게 언급되지 않는 한, 개시된 장치 또는 그것의 부분들 중 임의의 것이, 다른 부분으로 함께 조합되거나 또는 분리될 수 있고, h) 구체적으로 나타내지 않는 한, 작용들의 특정 시퀀스가 요구되지 않으며, i) "복수의" 라는 용어는 하나의 요소가 둘 이상의 청구된 요소를 포함하는 것이고, 요소들의 개수의 임의의 특정 범위를 의미하지 않는 것인데, 즉, 복수의 요소는 적게는 2개의 요소일 수 있다.

Claims (17)

  1. 처리 시스템에 있어서,
    메모리(110)로부터 데이터를 수신하도록 구성되는 프로세서(150)와,
    상기 프로세서(150)와 상기 메모리(110) 사이에 동작가능하게 접속되며, 상기 메모리(110)로부터 데이터를 수신하여, 상기 데이터를 상기 프로세서(150)로 전송하도록 구성되는 캐시(120)와,
    상기 캐시(120)에 동작가능하게 접속되며, 상기 메모리(110)로부터 수신된 상기 데이터와 관련된 프리페치 파라미터(126)의 상태에 근거하여, 상기 메모리(110)로부터 상기 캐시(120)로 전송될 프리페치 데이터를 식별하도록 구성되는 프리페치 제어기(130)를 포함하는
    처리 시스템.
  2. 제 1 항에 있어서,
    상기 메모리(110)를 더 포함하는 처리 시스템.
  3. 제 1 항에 있어서,
    상기 프리페치 파라미터(126)는 상기 프로세서(150)가 상기 프리페치 데이터 의 데이터 항목을 요청할 것 같은지의 여부를 식별하는 이진 수인 처리 시스템.
  4. 제 3 항에 있어서,
    상기 프리페치 파라미터(126)의 상태는, 상기 메모리(110)로부터의 상기 데이터가 상기 메모리(110)의 하나 이상의 정의된 프리페칭 영역(115)으로부터의 데이터인지의 여부에 근거하는 처리 시스템.
  5. 제 1 항에 있어서,
    상기 프리페치 데이터를 식별하는 것은, 상기 메모리(110)로부터 수신된 상기 데이터와 관련된 스트라이드 값(stride value)에 또한 근거하는 처리 시스템.
  6. 재 5 항에 있어서,
    상기 스트라이드 값은 상기 메모리(110)의 정의된 프리페칭 영역(115)과 관련되는 처리 시스템.
  7. 제 5 항에 있어서,
    상기 스트라이드 값은 상기 메모리(110)로부터 수신된 상기 데이터에 대한 이전의 액세스에 근거하여 결정되는 처리 시스템.
  8. 캐시 시스템(120)에 있어서,
    복수의 캐시 블록(125)을 포함하는 캐시 메모리와,
    상기 캐시 메모리에 동작가능하게 접속되며, 상기 복수의 캐시 블록(125)의 각 블록(125)과 관련된 프리페치 파라미터(126)에 근거하여, 프리페치 데이터를 외부 메모리(110)로부터 상기 캐시 메모리로 전송하도록 구성되는 프리페치 제어기(130)를 포함하는
    캐시 시스템.
  9. 제 8 항에 있어서,
    상기 프리페치 파라미터(126)는, 상기 캐시 시스템(120)에 동작가능하게 접속되는 프로세서(150)가 상기 프리페치 데이터에서의 데이터 항목을 요청할 것 같은지의 여부를 나타내는 이진 수인 캐시 시스템.
  10. 제 8 항에 있어서,
    상기 프리페치 파라미터(126)의 상태는, 상기 대응하는 블록(125)이 상기 외부 메모리(110)의 정의된 프리페칭 영역(115)으로부터 전송되는지의 여부에 근거하는 캐시 시스템.
  11. 제 10 항에 있어서,
    상기 캐시 시스템(120)은 상기 외부 메모리(110)의 상기 정의된 프리페칭 영역(115)과 관련된 스트라이드 값에 근거하여 상기 프리페치 데이터를 식별하는 캐시 시스템.
  12. 외부 메모리(110)로부터 캐시(120)로 프리페치 데이터를 전송하는 방법에 있어서,
    프로세서(150)로부터 데이터 항목에 대한 요청을 수신하는 단계(210)와,
    상기 데이터 항목을 포함하는 상기 캐시(120)의 캐시 블록(125)을 식별하는 단계(215)와,
    상기 캐시 블록(125)과 관련된 프리페치 파라미터(126)의 상태에 근거하여(235), 상기 프리페치 데이터를 상기 캐시(120)로 전송하는 단계(260)를 포함하는
    프리페치 데이터 전송 방법.
  13. 제 12 항에 있어서,
    상기 데이터 항목이 상기 캐시(120)내에 위치되지 않는 경우(215), 상기 외부 메모리(110)로부터 상기 캐시 블록(125)으로 데이터의 블록을 전송하는 단계(225)를 더 포함하는 프리페치 데이터 전송 방법.
  14. 제 12 항에 있어서,
    상기 프리페치 데이터를 상기 캐시(120)로 전송하는 단계(260)는, 데이터의 블록이 상기 외부 메모리(110)의 정의된 프리페칭 영역(115)과 관련되는지의 여부에 더 근거(240)하는 프리페치 데이터 전송 방법.
  15. 제 12 항에 있어서,
    상기 프리페치 파라미터(126)의 상태는, 데이터의 블록이 상기 외부 메모리(110)의 정의된 프리페칭 영역(115)과 관련되는지의 여부에 근거(240-280)하는 프리페치 데이터 전송 방법.
  16. 제 15 항에 있어서,
    상기 정의된 프리페칭 영역(115)과 관련된 스트라이드 값에 근거하여 상기 프리페치 데이터를 식별하는 단계(250)를 더 포함하는 프리페치 데이터 전송 방법.
  17. 제 12 항에 있어서,
    상기 외부 메모리(110)로부터의 데이터의 블록과 관련된 스트라이드 값을 결정하는 단계와,
    상기 스트라이드 값에 근거하여 상기 프리페치 데이터를 식별하는 단계(250)를 더 포함하는 프리페치 데이터 전송 방법.
KR1020077013533A 2004-11-15 2005-11-15 처리 시스템, 캐시 시스템 및 프리페치 데이터 전송 방법 KR20070086246A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US62787004P 2004-11-15 2004-11-15
US60/627,870 2004-11-15

Publications (1)

Publication Number Publication Date
KR20070086246A true KR20070086246A (ko) 2007-08-27

Family

ID=36336873

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077013533A KR20070086246A (ko) 2004-11-15 2005-11-15 처리 시스템, 캐시 시스템 및 프리페치 데이터 전송 방법

Country Status (6)

Country Link
US (1) US20090217004A1 (ko)
EP (1) EP1815343A2 (ko)
JP (1) JP2008521085A (ko)
KR (1) KR20070086246A (ko)
CN (1) CN101057224A (ko)
WO (1) WO2006051513A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200066236A (ko) * 2018-11-29 2020-06-09 베이징 호라이즌 로보틱스 테크놀로지 리서치 앤드 디벨롭먼트 컴퍼니 리미티드 메모리 액세스 제어를 위한 방법, 장치 및 전자 장치

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101458029B1 (ko) * 2007-08-16 2014-11-04 삼성전자 주식회사 프레임 캐싱 장치 및 방법
US8583894B2 (en) * 2010-09-09 2013-11-12 Advanced Micro Devices Hybrid prefetch method and apparatus
US8850123B2 (en) * 2010-10-19 2014-09-30 Avago Technologies General Ip (Singapore) Pte. Ltd. Cache prefetch learning
US9497466B2 (en) 2011-01-17 2016-11-15 Mediatek Inc. Buffering apparatus for buffering multi-partition video/image bitstream and related method thereof
US8990435B2 (en) 2011-01-17 2015-03-24 Mediatek Inc. Method and apparatus for accessing data of multi-tile encoded picture stored in buffering apparatus
CN103828370B (zh) 2011-10-31 2017-11-03 联发科技股份有限公司 缓冲装置、缓冲方法以及熵解码器
US9971694B1 (en) * 2015-06-24 2018-05-15 Apple Inc. Prefetch circuit for a processor with pointer optimization
US10108549B2 (en) * 2015-09-23 2018-10-23 Intel Corporation Method and apparatus for pre-fetching data in a system having a multi-level system memory
US10180905B1 (en) 2016-04-07 2019-01-15 Apple Inc. Unified prefetch circuit for multi-level caches
US9904624B1 (en) 2016-04-07 2018-02-27 Apple Inc. Prefetch throttling in a multi-core system
CN106021128B (zh) * 2016-05-31 2018-10-30 东南大学—无锡集成电路技术研究所 一种基于步幅和数据相关性的数据预取器及其预取方法
US10331567B1 (en) 2017-02-17 2019-06-25 Apple Inc. Prefetch circuit with global quality factor to reduce aggressiveness in low power modes

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US208660A (en) * 1878-10-01 Improvement in steam or air brakes
US6760818B2 (en) * 2002-05-01 2004-07-06 Koninklijke Philips Electronics N.V. Memory region based data pre-fetching
US7124262B2 (en) * 2002-11-20 2006-10-17 Intel Corporation Selectivity pipelining and prefetching memory data

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200066236A (ko) * 2018-11-29 2020-06-09 베이징 호라이즌 로보틱스 테크놀로지 리서치 앤드 디벨롭먼트 컴퍼니 리미티드 메모리 액세스 제어를 위한 방법, 장치 및 전자 장치
US11144215B2 (en) 2018-11-29 2021-10-12 Beijing Horizon Robotics Technology Research And Development Co., Ltd. Method, apparatus and electronic device for controlling memory access

Also Published As

Publication number Publication date
WO2006051513A3 (en) 2007-05-18
US20090217004A1 (en) 2009-08-27
CN101057224A (zh) 2007-10-17
EP1815343A2 (en) 2007-08-08
JP2008521085A (ja) 2008-06-19
WO2006051513A2 (en) 2006-05-18

Similar Documents

Publication Publication Date Title
KR20070086246A (ko) 처리 시스템, 캐시 시스템 및 프리페치 데이터 전송 방법
US6810466B2 (en) Microprocessor and method for performing selective prefetch based on bus activity level
TWI506434B (zh) 預取單元、資料預取方法、電腦程式產品以及微處理器
US6976147B1 (en) Stride-based prefetch mechanism using a prediction confidence value
US6578130B2 (en) Programmable data prefetch pacing
US5941981A (en) System for using a data history table to select among multiple data prefetch algorithms
US8635431B2 (en) Vector gather buffer for multiple address vector loads
US6584549B2 (en) System and method for prefetching data into a cache based on miss distance
US8122223B2 (en) Access speculation predictor with predictions based on memory region prior requestor tag information
EP3055775B1 (en) Cache replacement policy that considers memory access type
EP3066572B1 (en) Cache memory budgeted by chunks based on memory access type
US10884739B2 (en) Systems and methods for load canceling in a processor that is connected to an external interconnect fabric
EP3230874B1 (en) Fully associative cache memory budgeted by memory access type
CN108463808B (zh) 事件触发的可编程预取器
US8595443B2 (en) Varying a data prefetch size based upon data usage
US10514920B2 (en) Dynamically updating hardware prefetch trait to exclusive or shared at program detection
CN112100094B (zh) 用于基于预取指针的结构的系统和方法
US9367466B2 (en) Conditional prefetching
US20090177842A1 (en) Data processing system and method for prefetching data and/or instructions
US20180239706A1 (en) Prefetch tag for eviction promotion
JP3590427B2 (ja) 先行読出機能付命令キャッシュメモリ
US7555609B2 (en) Systems and method for improved data retrieval from memory on behalf of bus masters
US8266381B2 (en) Varying an amount of data retrieved from memory based upon an instruction hint
US20230315627A1 (en) Cache line compression prediction and adaptive compression
CN112416436B (zh) 信息处理方法、信息处理装置和电子设备

Legal Events

Date Code Title Description
N231 Notification of change of applicant
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid