KR100578436B1 - 내용 인식 프리페처의 후보 가상 주소 식별 방법 및 장치 - Google Patents

내용 인식 프리페처의 후보 가상 주소 식별 방법 및 장치 Download PDF

Info

Publication number
KR100578436B1
KR100578436B1 KR1020047008329A KR20047008329A KR100578436B1 KR 100578436 B1 KR100578436 B1 KR 100578436B1 KR 1020047008329 A KR1020047008329 A KR 1020047008329A KR 20047008329 A KR20047008329 A KR 20047008329A KR 100578436 B1 KR100578436 B1 KR 100578436B1
Authority
KR
South Korea
Prior art keywords
bits
address
size word
address size
cache line
Prior art date
Application number
KR1020047008329A
Other languages
English (en)
Other versions
KR20050058258A (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 KR20050058258A publication Critical patent/KR20050058258A/ko
Application granted granted Critical
Publication of KR100578436B1 publication Critical patent/KR100578436B1/ko

Links

Images

Classifications

    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/0215Addressing or allocation; Relocation with look ahead addressing means
    • 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
    • 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

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

캐시 라인 내의 가상 주소를 식별하는 방법 및 장치가 제공된다. 후보 가상 주소를 데이타 값 및 랜덤 비트 패턴과 구별하기 위해, 캐시 라인 내의 주소 크기 워드의 상위 비트가 캐시 라인의 유효 주소의 상위 비트와 비교된다. 주소 크기 워드의 상위 비트가 상기 유효 주소의 상위 비트와 일치하면, 주소 크기 워드는 후보 가상 주소로서 식별된다.
캐시 라인, 가상 주소, 후보 가상 주소, 데이타 값, 랜덤 비트 패턴

Description

내용 인식 프리페처의 후보 가상 주소 식별 방법 및 장치{METHOD AND APPARATUS FOR IDENTIFYING CANDIDATE VIRTUAL ADDRESSES IN A CONTENT-AWARE PREFETCHER}
관련 출원
이 출원은 이 출원과 동시에 출원되고 발명의 명칭이 "내용 인식 프리페칭 방법 및 장치(METHOD AND APPARATUS FOR CONTENT-AWARE PREFETCHING)"인 미국 특허 출원 제 XX/XXX,XXX 호와 관련된다.
발명 분야
본 발명은 일반적으로 프로세서에 관한 것으로, 특히 내용 인식 프리페칭 방법 및 장치에 관한 것이다.
발명 배경
종래의 프로세서는 일반적으로 프로세서가 연결되는 메인 메모리보다 훨씬 빠른 속도로 동작한다. 보통 동적 랜덤 액세스 메모리(DRAM)를 구비하는 메인 메모리의 고유 대기 시간(inherent latency)을 극복하기 위하여, 메모리 계층 구조(memory hierarchy)가 이용된다. 메모리 계층 구조는 하나 이상의 캐시 레벨을 포함하며, 각 캐시는 프로세서에 의해 최근에 액세스되거나 액세스될 것으로 기대되는 데이타를 유지하도록 구성된 비교적 빠른 메모리 장치 또는 회로를 구비한다. 캐시의 목적은 메인 메모리를 액세스하는 프로세스가 프로세서의 속도 또는 프로세서가 캐시를 액세스할 수 있는 속도에 비해 매우 느리므로, 프로세서가 필요로 하는 대부분의 데이타를 프로세서가 그 메인 메모리를 액세스하지 않고 쉽게 이용 가능하도록 보장하는 것이다.
일반적으로, 메모리 계층 구조는 다중 캐시 레벨을 구비하며, 각 레벨은 다음의 하위 레벨보다 빠르며, 프로세서에 가장 가까운 레벨이 가장 빠른 속도 및 성능을 보인다. 캐시는 프로세서 자체에 위치될 수 있다. 즉, "온 칩(on-chip)" 캐시일 수 있다. 또는, 캐시는 외부 메모리 장치를 구비할 수 있다. 즉, "오프 칩(off-chip)" 캐시일 수 있다. 예컨대, 프로세서는 종종 "L1" 캐시라고도 하는 하이 레벨 온칩 캐시를 포함할 수 있고, 여기서 프로세서는 종종 "L2" 캐시라고도 하는 하위 레벨 오프 칩 캐시와 연결된다. 대안으로서, 프로세서는 온칩 L1 캐시 뿐만 아니라 온칩 L2 캐시를 포함할 수 있다. 물론, 메모리 계층 구조는 어떤 적절한 수의 캐시를 포함할 수 있으며, 캐시의 각각은 온칩 또는 오프 칩으로 위치된다.
위에서 언급된 바와 같이, 각 캐시 레벨은 프로세서에 의해 최근에 액세스된 데이타를 유지할 수 있으며, 이와 같이 최근에 액세스된 데이타는 시간 및 공간적 집약성(locality)의 원리로 인해 가까운 장래에 다시 프로세서가 필요로 할 가능성이 높다. 그러나, 시스템 성능은 프로세서의 요구를 예상함으로써 더욱 개선될 수 있다. 즉, 메모리 대기시간이 감소될 수 있다. 가까운 미래에 프로세서가 필요로 하는 데이타가 어느 정도 정확하게 예측될 수 있다면, 이 데이타는 미리 페치될 수 있다. 즉 프리페치(prefetch)됨으로써 데이타가 캐싱되어 프로세서에 의해 쉽게 이용될 수 있다. 일반적으로, 프로세서의 요구를 예상하기 위하여 일부 타입의 알고리즘이 이용되며, 어떤 프리페칭 기법의 가치는 그 요구가 정확하게 예측될 수 있는 정도에 따라 좌우된다.
한가지 종래 타입의 프리페처(prefetcher)가 흔히 "스트라이드(stride)" 프리페처로 알려져 있다. 스트라이드 프리페처는 요청된 주소가 규칙적인 패턴을 보이는지를 판단하기 위해 프로세서에 의해 요청된 데이타의 주소, 즉 "디맨드 로드(demand load)"를 검사함으로써 프로세서의 요구를 예상한다. 프로세서(또는 프로세서 상에서 실행되는 애플리케이션)가 주소에서 주소로 일정한 오프셋, 즉 일정한 스트라이드를 이용하여 메모리를 통해 진행하면, 스트라이드 프리페처는 이 일정한 스트라이드를 인식하고 이 인식 가능 패턴에 따라 데이타의 프리페치를 시도한다. 그러나, 스트라이드 프리페처는 중요한 단점을 보인다. 스트라이드 프리페처는 일련의 디맨드 로드의 주소 패턴이 불규칙적일 때, 즉 일정한 스트라이드가 없을 때(예컨대 동적 메모리 할당 중에 일어날 수 있음) 잘 기능하지 않는다.
다른 데이타 프리페칭 방법은 가상-물리 주소 변환용 캐시(cache for virtual-to-physical address translations)인 변환 룩-어사이드 버퍼(translation look-aside buffer; TLB)를 이용한다. 이 방법에 따르면, 디맨드 로드와 연관된 "채움 내용(fill contents)", 즉 요청된 데이타를 검사하고, 주소 크기 데이타 값이 TLB에 포함된 주소와 일치하면, 데이타 값은 "포인터 로드", 즉 요청된 데이타가 메모리 위치를 가리키는 주소인 디맨드 로드와 대응할 가능성이 높으며, 따라서 후보 주소로 간주된다. 그러면, 후보 주소에 대한 프리페치 요청이 발생될 수 있다. 요청된 데이타의 주소와는 대조적으로 요청된 데이타의 내용이 검사되고 있기 때문에, 이 방법은 내용 기반(content-based), 즉 내용 인식(content-aware) 프리페칭이라고 할 수 있다. TLB를 참조하는(또는, 보다 일반적으로, 임의의 외부 소스 또는 주소 인덱스를 참조하는) 이와 같은 내용 인식 프리페칭 기법은 중요한 제한을 갖는다. 가능성있는 주소는 TLB에 캐시되는 주소에 한정될 수 있고 이 제약은 프리페치 기회의 수를 크게 감소시킨다. 또한, 이 내용 인식 프리페칭 기법은 TLB에 많은 액세스를 요구하며, 따라서, 내용 프리페처 오버헤드(overhead)를 처리하기 위해 부가적인 포트들이 TLB에 추가되어야 한다.
도면의 간단한 설명
도 1은 내용 프리페처를 갖는 프로세서를 포함하는 시스템의 일실시예의 개략도.
도 2는 가상 주소 예측기를 갖는 내용 프리페처의 일실시예를 포함하는 프로세서의 일실시예의 개략도.
도 3은 내용 인식 프리페칭 방법의 일실시예를 나타낸 플로우챠트.
도 4는 내용 인식 프리페칭 방법의 다른 실시예를 나타낸 플로우챠트.
도 5는 내용 인식 프리페칭 방법의 다른 실시예를 나타낸 플로우챠트.
도 6은 후보 가상 주소 식별 방법의 일실시예를 나타낸 흐름도.
도 7 내지 도 9는 도 6에 도시된 방법을 각각 더 나타낸 개략도.
도 10은 캐시 라인 내의 주소 크기 워드를 캐시 라인의 유효 주소와 비교하는 프로세스의 일실시예를 나타낸 개략도.
도 11은 후보 가상 주소 식별 방법의 다른 실시예를 나타낸 플로우챠트.
도 12는 캐시 라인 내의 주소 크기 워드를 그 유효 주소와 비교하는 프로세스의 다른 실시예를 나타낸 개략도.
도 13은 후보 가상 주소 식별 방법의 다른 실시예를 나타낸 플로우챠트.
발명의 상세한 설명
도 1을 참조하면, 시스템(100)은 프로세서(200)가 연결된 버스(110)를 포함한다. 프로세서(200)는 임의의 적절한 처리 장치 또는 회로를 구비할 수 있다. 일실시예에서는, 후술되는 바와 같이, 프로세서(200)가 온 칩 캐시(on-chip cache)만을 포함한다. 그러나, 대안적인 실시예에서, 프로세서(200)는 프로세서(200)와 연결되는, 단독으로 또는 온칩 캐시와 결합하여 제공될 수 있는, 오프 칩 캐시(170)를 포함할 수 있다.
메인 메모리(120)는 버스(110)와 연결되고, 메인 메모리(120)는 예컨대 동적 랜덤 액세스 메모리(DRAM)를 구비한다. 메인 메모리(120)는 애플리케이션을 실행하면서 프로세서(200)에 의해 사용될 데이타 및/또는 명령을 포함할 수 있다. 판독 전용 메모리(ROM; 130)가 또한 버스(110)와 연결될 수 있다. ROM(130)은 프로세서(200) 상에서 실행되는 명령을 저장할 수 있다. 또한, 하드 디스크 드라이브 또는 다른 적절한 비휘발성 메모리와 같은 데이타 기억 장치(140)가 버스(110)와 연결될 수 있다.
시스템(100)은 또한 버스(110)와 연결되는 하나 이상의 출력 장치(150)를 포함할 수 있다. 공통 출력 장치(150)는 비디오 모니터, 프린터, 및 오디오 출력 장 치(예컨대, 사운드 카드 및/또는 스피커)를 포함한다. 시스템(100)은 또한 버스(110)와 접속되는 하나 이상의 입력 장치(160)를 포함할 수 있다. 일반적인 입력 장치는 키보드, 마우스와 같은 포인팅(pointing) 장치 뿐만 아니라 스캐너 및 다른 데이타 입력 장치를 포함한다. 시스템(100)은 도 1에 예시된 것들 이외에 간단히 하기 위해 생략된 다른 구성 요소를 포함할 수 있으며, 이 다른 구성 요소는 소거 가능 기억 매체(예컨대, 플로피 디스크 드라이브, CD-ROM 드라이브), 네트워크 인터페이스, 프로세서와 연결된 칩 셋 뿐만 아니라 부가적인 신호 라인 및 버스를 포함한다.
이제 도 2를 참조하면, 프로세서(200)는 CPU(central processing unit) 코어(210)를 포함한다. CPU 코어(210)에는 제 1 레벨 온칩 캐시, 즉 "L1 캐시"(220)가 연결된다. 제 2 레벨 온칩 캐시, 즉 "L2 캐시"(230)가 또한 프로세서(200)에 설치된다. 여기서 "L2 중재자"(240)라고도 하는 중재자(arbiter)가 L1 및 L2 캐시(220, 230) 각각과 연결된다. 여기서 "버스 중재자"(250)라고도 하는 다른 중재자가 L2 캐시와 연결된다. 버스 중재자(250)는 또한 버스 인터페이스 유닛(260)과 연결된다. 버스 인터페이스 유닛(260)은 프로세서(200)를 버스(110)와 연결하여 프로세서(200)와 메인 메모리(120)간의 통신을 가능하게 한다. L1 및 L2 캐시(220, 230)는 각각 임의의 적절한 타입의 메모리 또는 회로를 구비할 수 있다.
L1 캐시(220) 및 L2 캐시(230)는 메인 메모리(120)와 함께 CPU 코어(210)용의 메모리 계층 구조(memory hierarchy)를 제공한다. 일반적으로, L1 캐시(220)는 CPU 코어(210)에 대해 가장 높은 상대 속도를 보이는 반면에, 메인 메모리(120)는 가장 낮은 상대 속도를 보인다. L2 캐시(230)는 메인 메모리(120)보다 훨씬 빠르게 동작하나, L1 캐시(220)보다는 느릴 수 있다. 데이타 기억 장치(140)(도 1 참조)는 또한 메모리 계층 구조의 일부로 생각될 수 있으며, 데이타 기억 장치(140)는 계층 구조 내에서 가장 느린 요소이다. L1 및 L2 캐시(220, 230)의 각각은 CPU 코어(210)에 의해 최근에 액세스되거나 액세스될 것으로 예상되는 데이타 및/또는 명령을 저장한다.
동작 중에, CPU 코어(210)가 데이타를 요청하면, 즉 "디맨드 로드(demand load)" 또는 "디맨드 요청(demand request)"이면, L1 캐시(220)를 액세스하여 이 캐시가 요청된 데이타를 포함하고 있는지를 결정하고, 요청된 데이타를 포함하고 있으면 데이타를 CPU 코어(210)에 제공한다. L1 캐시(220)가 요청된 데이타를 포함하고 있지 않으면, 즉 "캐시 미스(cache miss)"이면, 디맨드 요청을 L2 중재자(240)에 전달한다. 다음에, L2 중재자(240)는 디맨드 요청을 L2 캐시(230)에 제공하고, L2 캐시(230)를 액세스하여 이 캐시가 요청된 데이타를 포함하고 있는지를 결정한다. L2 캐시(230)가 요청된 데이타를 포함하고 있으면, 요청된 데이타, 즉 "채움 내용"을 L1 캐시(220) 및 CPU 코어(210)에 전송한다. 디맨드 로드가 L2 캐시(230)에 의해 충족되지 않으면, 그 로드를 버스 중재자(250)에 전달한다. 버스 중재자(250)는 디맨드 요청을 칩에서 떨어진 메인 메모리(120)에 전송하게 된다. 메인 메모리(120)가 요청된 데이타를 가지고 있으면, 채움 내용을 메모리 계층 구조를 올라가 CPU 코어(210)에 전달한다. 메인 메모리(120)가 디맨드 요청을 충족시킬 수 없으면, 데이타 기억 장치(140)를 액세스할 수 있다. L2 및 버 스 중재자(240, 250)의 각각은 버퍼 메모리를 포함하고, L2 및 버스 중재자(240, 250)는 다수의 로드가 진행 중이면 디맨드 요청을 버퍼링할 수 있다. 메모리 요청 중재 중에, L2 및 버스 중재자(240, 250)는 또한 후술되는 바와 같이 프리페치 요청을 버퍼링할 수 있다.
CPU 코어(210)에서 실행되는 프로세스는 가상 주소 공간을 액세스할 수 있다. 일반적으로, 이와 같은 가상 주소 공간은 메모리 관리 유닛, 즉 MMU(도면에 도시되지 않음)에 의해 유지된다. 가상으로 주소 지정된 데이타를 액세스하기 위해서는, 가상 주소(또는 주소들)를 물리 주소, 즉 메인 메모리(120) 내의 실제 위치에 매핑시켜야 한다. 따라서, 데이타가 메모리 계층 구조를 가로지를 때, 데이타는 가상-물리 주소 변환을 거칠 수 있음에 주의한다. 예컨대, L1 캐시(220)는 가상으로 인덱스될 수 있고 L2 캐시(230)는 물리적으로 인덱스될 수 있으며, 따라서, L1 캐시(220)에서 캐시 미스가 있으면, L2 캐시(230)를 액세스하기 전에 가상-물리 주소 변환이 요구된다.
위에서 제시된 바와 같이, 시스템 성능은 CPU 코어(210)의 요구를 예상하고 CPU 코어(210)가 즉시 요청할 것 같은 임의의 데이타를 프리페칭함으로써 개선될 수 있다. 프로세서(200)는 L2 중재자(240) 및 L2 캐시(230)와 연결되는 스트라이드 프리페처(270)를 포함할 수 있다. 스트라이드 프리페처(270)는 L2 미스 트래픽, 즉 L2 캐시(230)에서 미스된 디맨드 로드 뿐만 아니라 L1 미스 트래픽, 즉 L1 캐시(220)에서 미스된 디맨드 로드를 모니터링하고 요청된 주소에서 일정한 스트라이드의 검출을 시도한다. 일정한 스트라이드가 검출되면, 프리페치(PF) 요청 이 상기 검출된 스트라이드에 기초하여 L2 중재자(240)에 제공된다. 그러나, 위에서 시사된 바와 같이, 스트라이드 프리페처(270)는 연속적인 디맨드 요청의 주소 패턴이 불규칙적이고 또한 일정한 스트라이드가 존재하지 않으면(예컨대, 동적 메모리 할당 중에 일어날 수 있음) 제대로 기능하지 않는다.
프로세서(200)는 또한 새로운 내용 프리페처(290)를 포함한다. 내용 프리페처(290)는 L2 캐시(230)와 연결되고 L2 캐시(230)로 향하는 모든 채움 내용의 카피를 수신하며, 채움 내용은 하나 이상의 캐시 라인을 포함한다. 그러나, 보다 일반적으로, 내용 프리페처(290)는 프로세서의 메모리 계층 구조 내의 어떤 레벨과도 연결될 수 있고 그 레벨로 향하는 모든 채움 내용의 카피를 수신한다. 또한, 프로세서(200)의 내용 프리페처(290)가 온칩 L2 캐시(230)와 연결되지만, 내용 프리페처(290)는 도 1에 예시된 오프 칩 캐시(170)와 같은 오프 칩 캐시에 연결될 수 있음을 이해해야 한다. 내용 프리페처(290)는 또한 L2 중재자(240)와 연결된다.
내용 프리페처(290)는 가상 주소 예측기(295)를 포함한다. 이전에 설명된 바와 같이, 내용 프리페처(290)는 L2 캐시(230)에 수신되는 각 캐시 라인의 카피를 수신한다. 가상 주소 예측기(295)는 캐시 라인을 검사하고, 임의의 외부 주소 소스, 즉 잠재적인 주소의 범위, 따라서 잠재적인 프리페치 기회를 불필요하게 억제할 수 있는 TLB를 참조하지 않고 캐시 라인에 포함된 다른 데이타 값 및 랜덤 비트 패턴과 후보 가상 주소를 구별한다. 가상 주소 예측기(295)는 외부 주소 참조를 액세스하지 않고 캐시 라인 내에 포함된 데이타에 기초하여 캐시 라인 내의 후보 가상 주소를 식별할 수 있는 임의의 적절한 회로 및/또는 명령을 구비한다.
내용 프리페처(290) 및 가상 주소 예측기(295)의 동작은 도 3에 도시된 내용 인식 프리페칭 방법(300)을 참조하여 보다 잘 이해될 수 있다. 도 3의 참조 번호 310을 참조하면, 채움 내용이 L2 캐시(230)에 수신된다. 채움 내용의 카피가 320으로 표기된 바와 같이 내용 프리페처(290)에 제공된다. 채움 내용은 캐시 라인을 포함한다(또는, 대안으로서, 채움 내용은 2 개 이상의 캐시 라인을 포함함). 참조 번호 330으로 도시된 바와 같이, 후보 가상 주소를 위해 캐시 라인이 스캔된다. 후보 가상 주소가 가상 주소 예측기(295)에 의해 식별되면(참조 번호 340 참조), 참조 번호 350로 예시된 바와 같이 내용 프리페처(290)는 식별된 후보 가상 주소에 대응하는 프리페치 요청을 발생한다. 다음에, 내용 프리페처(290)는 후술되는 바와 같이 프리페치 요청을 메모리 요청 중재에 기초하여 프리페치 요청을 메인 메모리(120)에 버퍼링 및/또는 발생할 수 있는 L2 중재자(240)에 제공한다(참조 번호 360 참조).
위에서 설명된 프로세스는 전체 캐시 라인이 스캔될 때까지 계속된다. 전체 캐시 라인이 스캔되었고(참조 번호 370 참조) 캐시 라인 내에 포함된 모든 후보 가상 주소가 식별되었을 때, 380으로 도시된 바와 같이 캐시 라인의 스캔이 완료된다. 보다 상세하게 후술되는 바와 같이, 전체 캐시 라인 또는 그 일부는 병렬로 스캔될 수 있다.
위에서 설명된 바와 같이, L2 캐시(230)로 향하는 모든 채움 내용의 카피가 내용 프리페처(290)에 제공된다. 따라서, L2 캐시(230)에서 캐시 미스된, 즉 보다 일반적으로, 내용 프리페처(290)가 연결된 캐시의 레벨에서 캐시 미스된, CPU 코어(210)에 의해 발생된 각 디맨드 요청의 경우에, 내용 프리페처(290)는 요청된 데이타의 카피를 수신하게 된다. 메모리 계층 구조 내의 캐시의 어떤 레벨에서 미스된 디맨드 요청과 연관된 채움 내용은 "디맨드 참조 스트림(demand reference stream)"이라고 할 수 있다. 그러나, L2 중재자(240)(또는 버스 중재자(250))에 의해 발생된 프리페치 요청의 결과(즉, "프리페치 참조 스트림")로서 다른 채움 내용이 L2 캐시(230)로 향하게 되고, 프리페치 참조 스트림과 연관된 채움 내용의 카피가 또한 내용 프리페처(290)에 제공된다. 따라서, 프리페치 참조 스트림과 연관된 그 채움 내용 뿐만 아니라 디맨드 참조 스트림과 연관된 채움 내용을 검사함으로써, 내용 프리페처(290)는 순환 구성 요소(recurrence component)를 포함하고, 이전 프리페치 요청에 기초하여 프리페치 요청을 제공할 수 있다. 이와 같은 순환 구성 요소는 내용 프리페처(290)가 "링크된 데이타 구조"(즉, 각 요소가 데이타 구조 내의 다음 요소에 대한 포인터를 포함하는 데이타 구조)와 같은 데이타 구조 내의 순환 경로를 추종할 수 있게 한다. 이전 프리페치 요청에 기초하여 내용 프리페처(290)에 의해 제공되는 프리페치 요청은 "연쇄적인(chained)" 프리페치 요청이라고 할 수 있다.
L2 중재자(240)가 내용 프리페처(290)로부터 프리페치 요청, 즉 가상 주소 예측기(295)에 의해 식별된 후보 가상 주소에 대응하는 프리페치 요청을 수신할 때, L2 중재자(240)는 그 프리페치 요청을 버퍼링하고 그 발생을 지연시킬 수 있다. L2 중재자에서의 프리페치 요청의 버퍼링(뿐만 아니라, 일부 예에서, 디맨드 요청)은 버스(110)의 좁은 대역폭 및 메인 메모리(120)의 느린 액세스 속도로 인해 필요할 수 있다(일부 예에서는, 꼭 필요하다). 따라서, 버스 중재자(250) 뿐만 아니라 L2 중재자(240)는 다수의 디맨드 요청 뿐만 아니라 그 버퍼에 포함된 다수의 프리페치 요청 중에서 어느 요청이 먼저 발생되어야 하는지를 결정하기 위해 우선 순위 부여 기법을 구현할 수 있다. 메모리 요청에 우선 순위를 부여하고 각각의 요청의 우선 순위에 따라 디맨드 또는 프리페치 요청을 발생하는 이 프로세스는 메모리 요청 중재라고도 할 수 있다.
디맨드 요청이 CPU 코어(210)가 현재 필요로 하는 데이타에 대응하므로, 디맨드 요청은 일반적으로 가장 높은 우선 순위를 부여받아야 한다. 프리페치 요청은 일반적으로 디맨드 요청보다 낮은 우선 순위를 부여받으나, 순환 연쇄적인 프리페치 요청들 중 모든 프리페치 요청이 CPU 코어(210)가 즉시 필요로 하는 데이타를 나타낼 것 같지는 않으며(즉, 프리페치 요청들은 보다 불확실함), 그러므로, 상이한 우선 순위를 할당받아야 한다. 연쇄적인 프리페치를 제공하는 순환구성 요소를 내용 프리페처(290)가 제공한다함은(연쇄적인 프리페치중 제 1 프리페치는 디맨드 요청에 연관된 채움 내용에 기초하고, 연쇄적인 프리페치중 이어지는 각각의 프리페치 요청은 이전 프리페치에 의한 채움 내용에 기초함), "요청 깊이(request depth)"의 개념에 이르게 한다. 디맨드 요청이 예컨대 0의 요청 깊이를 할당받으면, 그 디맨드 요청에 연관된 채움 내용에 의한 프리페치 요청은 1의 요청 깊이를 할당받고, 이어지는 각각의 연쇄적인 프리페치는 그 연쇄적인 프리페치 요청이 기초로 하는 프리페치 요청보다 1 많은 요청 깊이를 할당받는다.
위에서 설명된 요청 깊이는 프리페치 요청에서 신뢰도의 척도를 제공하며, 프리페치 요청의 우선 순위를 결정하기 위한 메모리 요청 중재 중에 버스 중재자(250) 뿐만 아니라 L2 중재자(240)에 의해 이용될 수 있다. 가장 낮은 요청 깊이를 갖는 메모리 요청이 가장 높은 우선 순위를 할당받을 수 있고 L2 중재자(240)(또는 버스 중재자(250))에 의해 먼저 발생될 수 있다. 디맨드 요청은 예컨대 0의 요청 깊이를 갖고 가장 높은 우선 순위를 할당받는다. 디맨드 로드와 연관된 채움 내용에 의한 프리페치 요청이 다음으로 가장 높은 우선 순위를 할당받는다. 연쇄적인 프리페치 요청이 그 요청 깊이에 상응하는 우선 순위를 할당받으며, 할당된 우선 순위는 요청 깊이에 반비례한다. 따라서, 보다 높은 요청 깊이를 보이는 연쇄적인 프리페치 요청은 보다 불확실하므로 낮은 우선 순위를 할당받는다. 미리 정해진 임계치, 즉 프리페치 요청의 신뢰도가 낮은 임계치보다 큰 요청 깊이를 갖는 연쇄적인 프리페치 요청이 묵살되고(squashed) 프리페치 요청은 중재자에 의해 발생되지 않는다. 동일 우선 순위(즉, 동일 요청 깊이)의 프리페치 요청이 L2 중재자(240)(또는 버스 중재자(250)에 의해 선착순 처리 방식으로 발생되도록 스케줄링된다.
내용 인식 프리페칭 및 각 프리페치 요청의 우선 순위 결정 방법(400)이 도 4에 예시되어 있다. 도 4에 도시된 방법(400)은 도 3의 방법(300)과 동일한 많은 요소들을 포함하며, 동일한 요소들은 도 4에서 동일 참조 번호를 가짐에 주의해야 한다.
도 4의 참조 번호 310을 참조하면, 채움 내용이 L2 캐시(230)에 수신되고 채움 내용의 카피가 내용 프리페처(290)에 제공된다(참조 번호 320 참조). 채움 내 용은 하나의 캐시 라인을 포함한다(또는, 대안으로서, 채움 내용은 2 개 이상의 캐시 라인을 포함함). 다음에 후보 가상 주소를 위해 330으로 표기된 바와 같이 캐시 라인이 스캔된다. 후보 가상 주소가 가상 주소 예측기(295)에 의해 식별되면(참조 번호 340 참조), 내용 프리페처(290)는 350으로 도시된 바와 같이 그 주소에 대한 프리페치 요청을 발생한다.
이제 도 4의 참조 번호 410을 참조하면, 내용 프리페처(290)는 위에서 설명된 바와 같이 프리페치 요청의 요청 깊이를 결정한다. 요청 깊이가 미리 정해진 임계치보다 크면(참조 번호 420 참조), 440으로 표기된 바와 같이 프리페치 요청이 묵살된다. 요청 깊이가 미리 결정된 임계치를 초과하지 않으면, 우선 순위가 프리페치에 할당되며(참조 번호 430 참조), 여기서 우선 순위는 이전에 설명된 바와 같이 요청 깊이에 기초한다.
일단 우선 순위가 프리페치 요청에 할당되면, 내용 프리페처(290)는 360으로 도시된 바와 같이 프리페치 요청을 L2 중재자(240)에 제공한다. L2 중재자(240)는 버퍼에 유지된 각 프리페치 요청의 우선 순위에 기초하여 메모리 요청을 중재하는 동안에 버퍼 메모리에 프리페치 요청을 인큐(enqueue)한다. 다시, 디맨드 요청은 가장 높은 우선 순위를 가지고 있어 L2 중재자(240)(및 버스 중재자(250)에 의해 먼저 발생된다. 디맨드 요청보다 낮은 우선 순위를 갖는 프리페치 요청은 각각의 우선 순위에 따라 L2 중재자(240)(또는 버스 중재자(250))에 의해 발생된다. 다시, 프리페치 요청의 우선 순위는 그 프리페치 요청의 요청 깊이에 기초한다. 이 프로세스는 전체 캐시 라인이 스캔될 때까지 계속되며, 전체 캐시 라인이 스캔되었 고(참조 번호 370 참조) 캐시 라인에 포함된 모든 후보 가상 주소가 식별되었을 때, 380으로 도시된 바와 같이 캐시 라인의 스캔이 완료된다.
내용 인식 프리페칭 방법(500)의 다른 실시예가 도 5에 예시되어 있다. 도 5에 도시된 방법(500)은 도 3의 방법(300)과 동일한 많은 요소들을 포함하며, 동일한 요소들은 도 5에서 동일한 참조 번호를 가짐에 주의해야 한다. 또한, 내용 인식 프리페칭 방법(500)은 도 3에 예시된 방법(300)과 유사하고, 이전에 설명된 이 요소들의 상세한 설명은 반복하지 않는다.
참조 번호 510을 참조하면, 후보 가상 주소가 식별되었으면(참조 번호 340 참조), 일치하는 메모리 요청이 현재 작동 중(in-flight)인지를 알아보기 위해, 즉 후보 가상 주소에 대응하는 메모리 요청이 이미 발생되었는지를 알아보기 위해, L2와 버스 중재자(240, 250)가 폴링된다. 일치하는 메모리 요청이 작동중이면, 참조 번호 530으로 도시된 바와 같이 프리페치 요청이 묵살된다. 프리페치 요청이 작동 중인 메모리 요청으로 인해 묵살되는 경우에는, 캐시 라인의 스캔이 계속된다(참조 번호 330 및 370 참조).
프리페치 요청은 이전에 설명된 바와 같이 메모리 요청 중재 동안에 L2 중재자(240)(또는 버스 중재자(250)의 메모리 버퍼에 인큐된다. 일부 예에서, L2 중재자의 버퍼는 가득 찰 수 있다. 버퍼 공간이 L2 중재자(240) 내에서 이용 가능하지 않으면(참조 번호 520 참조), 참조 번호 530으로 나타낸 바와 같이 프리페치 요청이 묵살된다. 프리페치 요청이 이용 가능한 버퍼 공간의 부족으로 인해 묵살되는 경우에, 메모리 공간이 다시 L2 중재자의 버퍼 내에서 이용 가능하게 됨에 따라 캐 시 라인의 스캔은 계속될 수 있다(참조 번호 330 및 370 참조).
위에서 설명된 바와 같이, 내용 프리페처(290)의 가상 주소 예측기(295)는 프리페치 기회의 범위를 제한할 수 있는 TLB와 같은 외부 주소 소스를 참조하지 않고 캐시 라인내에 포함된 데이타 값 및 랜덤 비트 패턴과 후보 가상 주소를 구별한다. 이제, 가상 주소 예측기(295)에 의해 구현될 수 있는 후보 가상 주소 식별 방법에 대해 공개한다. 후보 가상 주소 식별 방법은 가상-물리 주소 변환이 메모리 계층 구조 내에서 일어났을 수도 있지만 CPU 코어(210)로 향하는 채움 내용에 포함된 유력한 주소가 가상 주소 공간 내에 존재하기 때문에, 물리 주소와 대조적인 가상 주소를 찾음에 주의해야 한다.
후보 가상 주소 식별 방법은 포인터 로드, 즉 요청된 데이타가 메모리 위치를 가리키는 주소인 디맨드 로드가 메모리로부터 로드되면, 포인터 로드의 주소가 장래의 디맨드 요청의 유효 주소일 가능성이 높다는 전제를 기초로 한다. 이 전제의 핵심은 데이타 구조의 기본 주소가 포인터 로드를 통해 제공되며 이 기본 주소를 공유하는 그 구조 내의 임의의 데이타 값이 동일 데이타 구조의 다른 멤버에대한 포인터로서 해석될 수 있다는 개념이다. 모든 디맨드 요청이 포인터 로드를 잠재적으로 포함한다고 가정하면, 이 기본 주소를 공유하는 디맨드 요청에 응답하여 반환되는 캐시 라인내에 포함된 임의의 주소 크기 워드가 후보 가상 주소로 간주된다. 주소 크기 워드의 다수의 상위 비트가 캐시 라인의 유효 주소의 동일한 개수의 상위 비트와 일치하면, 이들 일치하는 상위 비트는, 주소 크기 워드 및 캐시 라인의 유효 주소가 동일한 기본 주소로부터 계산되었고 그러므로 주소 크기 워드는 장래의 디맨드 로드의 유효 주소에 대응할 것 같다는 것을 암시한다.
후보 가상 주소 식별 방법(600)의 일실시예가 도 6에 예시되어 있다. 참조 번호 610을 참조하면, 가상 주소 예측기(295)가 캐시 라인을 수신한다. 캐시 라인은 내용 프리페처(290)에 수신된 채움 내용에 포함되며(도 3의 아이템 310 및 320 참조), 내용 프리페처(290)에 수신된 채움 내용은 위에서 언급한 바와 같이 L2 캐시(230)로 향하는 채움 내용의 카피를 포함한다. 다음에, 참조 번호 620으로 표기한 바와 같이 캐시 라인의 유효 주소가 검색된다. 캐시 라인이 스캔되고(도 3의 참조 번호 330 참조), 참조 번호 630으로 예시된 바와 같이 주소 크기 워드가 캐시 라인으로부터 판독된다(또는 그렇지 않으면 액세스된다). 일반적인 프로세서의 경우에 주소 크기 워드가 32 비트, 즉 4 바이트에 대응하나, 주소 크기 워드는 임의의 적절한 길이를 가질 수 있다.
캐시 라인으로부터 주소 크기 워드(또는 워드들)를 판독하는 프로세스가 또한 도 7 내지 9에 예시되어 있다. 도 7을 참조하면, 예시적인 캐시 라인(700)은 64 바이트(705)를 구비한다. 그러나, 캐시 라인는 임의의 적절한 길이(예컨대, 128 바이트)를 가질 수 있음을 이해해야 한다. 제 1 주소 크기 워드(710)(즉, 제 1의 4 바이트)가 캐시 라인으로부터 판독될 수 있다. 제 2 주소 크기 워드(720)가 캐시 라인으로부터 판독될 수 있으며, 여기서 제 2 주소 크기 워드(720)의 시작은 제 1 주소 크기 워드(710)의 시작으로부터 1 바이트의 오프셋(708)만큼 분리된다. 유사하게, 제 3 주소 크기 워드(730)가 캐시 라인으로부터 판독될 수 있고, 제 3 주소 크기 워드(730) 및 제 2 주소 크기 워드(720)는 1 바이트의 오프셋만큼 분리 된다. 최종 주소 크기 워드(790)가 캐시 라인으로부터 판독될 때까지 다른 주소 크기 워드들이 유사한 방식으로 캐시 라인으로 판독될 수 있다.
도 8에 예시된 캐시 라인 스캐닝 프로세스는 도 7에 예시된 프로세스와 유사하나, 오프셋이 증가되었고 캐시 라인으로부터 판독되는 주소 크기 워드의 수는 감소되었다. 캐시 라인(800)은 예컨대, 64 바이트(805)를 포함한다. 주소 크기 워드(810, 820, 830, ... 890)가 캐시 라인(800)으로부터 판독되고, 각각의 주소 크기 워드의 시작이 이전 주소 크기 워드로부터 2 바이트의 오프셋(808)에 의해 분리되어 있다. 따라서, 캐시 라인 스캔의 세분성(granularity)은 오프셋(808, 708)을 변화시킴으로써 변동될 수 있고, 이에 의해 검사되게 되는 주소 크기 워드의 수가 변동되게 된다. 또한, 위에서 암시된 바와 같이, 캐시 라인(800)(또는 700)은 병렬로 스캔될 수 있으며, 여기서 전체 캐시 라인이 한번에 스캔된다. 그러나, 캐시 라인으로부터 판독될 수 있는 데이타의 양이 예컨대 버스 폭에 의해 제한될 때, 캐시 라인은 부분적으로 스캔될 수 있고, 각 부분은 병렬로 스캔됨에 주의해야 한다.
도 9를 참조하면, 캐시 라인(900))이 64 바이트(905)를 구비한다. 제 1 주소 크기 워드(910)가 캐시 라인(900)으로부터 판독되고, 이 제 1 주소 크기 워드는 캐시 라인(900)의 제 1의 4 바이트를 포함한다. 제 2 주소 크기 워드(920)가 캐시 라인으로부터 판독되고, 여기서 이 제 2 주소 크기 워드(920)의 시작은 제 1 주소 크기 워드(910)의 끝에 대응한다. 다른 방식으로 설명하면, 제 1 및 제 2 주소 크기 워드(910, 920)는 캐시 라인(900)으로부터 판독될 각각의 주소 크기 워드의 길이인 4 바이트의 오프셋에 의해 분리된다. 캐시 라인(900)으로부터 판독되는 제 3 주소 크기 워드(930)도 유사하게 이전 주소 크기 워드로부터 4 바이트만큼 오프셋된다.
데이타 구조의 각각의 요소가 워드 경계에서 시작하여 판독되는 메모리에 저장된 데이타 구조는 "메모리 정렬형(memory aligned)" 또는 J-바이트 정렬형이라고 말한다. 예컨대, 도 9에 예시된 캐시 라인(900)은 "4-바이트 정렬형"인 반면에, 도 8의 캐시 라인(800)은 2-바이트 정렬형이다. 후술되는 바와 같이, 이와 같은 메모리 정렬형 데이타는 가상 주소 예측기(795)가 동작 중에 유리하게 이용할 수 있는 일정한 특성을 보인다.
도 6을 다시 참조하면, 일단 주소 크기 워드가 캐시 라인으로부터 판독되면, 640으로 표기된 바와 같이 주소 크기 워드의 상위 비트의 일정 수가 캐시 라인의 유효 주소의 상위 비트의 동일 수와 비교된다. 구체적으로, 주소 크기 워드의 N 개의 상위 비트가 캐시 라인의 유효 주소의 상위 N 비트와 비교된다. 이 프로세스는 도 10을 참조하여 보다 양호하게 예시되어 있다. 캐시 라인의 유효 주소(1010)의 상위 N 비트는 캐시 라인 내에 포함된 주소 크기 워드(1020)의 상위 N 비트에 대해 비교된다. 유효 주소(1010) 및 주소 크기 워드(1020)의 각각의 상위 N 비트는 각각 비교 비트(1030)라고도 할 수 있다. 상위 N 비트, 즉 비교 비트(1030)는 임의의 적절한 수의 비트를 포함할 수 있다. 일예로, 32 비트 주소 크기 워드의 경우, N 비교 비트는 8 비트 내지 12 비트를 포함할 수 있다.
비트 패턴은 포인터 로드, 데이타 값, 또는 간단히 랜덤 비트로 해석될 수 있다. 주소 크기 워드의 상위 N 비트가 캐시 라인의 유효 주소의 상위 N 비트와 일치하면 이는 주소 크기 워드 및 캐시 라인의 유효 주소가 동일 기본 주소로부터 계산되었음을 암시하여 주소 크기 워드는 데이타 구조의 멤버에 대한 포인터인 것으로 간주된다. 주소 크기 워드의 상위 N 비트가 캐시 라인의 유효 주소의 상위 N 비트와 일치하면(참조 번호 650 참조), 660으로 도시된 바와 같이 주소 크기 워드는 후보 가상 주소인 것으로 식별되고, 내용 프리페처(290)는 식별된 후보 주소에 대한 프리페치 요청을 제공할 수 있다(도 3 내지 도 5 참조). 상위 N 비트들이 일치하지 않으면, 참조 번호 670로 예시한 바와 같이 주소 크기 워드는 폐기된다. 위에서 설명된 프로세스(참조 번호 630, 640, 650, 660, 670 참조)는 캐시 라인 스캔 중에 캐시 라인으로부터 판독된 각 주소 크기 워드에 적용된다.
후보 가상 주소 식별 방법의 다른 실시예가 도 11에 예시되어 있다. 이전에 설명된 바와 같이, 캐시 라인은 메모리 정렬형일 수 있다. 예컨대, 데이타 구조는 2-바이트 정렬형, 4-바이트 정렬형, 8-바이트 정렬형, 16-바이트 정렬형, 또는 보다 일반적으로, J-바이트 정렬형일 수 있다. 캐시 라인의 데이타가 J-바이트 정렬형이면, 어떤 후보 가상 주소의 일정 수의 최하위 비트(도 10의 참조 번호 1090 참조)는 0이 되게 된다. 일예로, 2 바이트 정렬형 데이타의 경우 최하위 비트는 0이 되게 되고, 4 바이트 정렬형 데이타의 경우 2 개의 최하위 비트가 0이 되게 되며, 8 바이트 정렬 데이타의 경우 3 개의 최하위 비트가 0이 되게 되고, 16 바이트 정렬 데이타의 경우 4개의 최하위 비트가 0이 되게 된다. 보다 일반적으로, J 바이트 정렬형 데이타의 경우 K개의 최하위 비트 제로가 0이 되게 된다. 가상 주소 예측기(295)는 후보 가상 주소를 실격(disqualify)시키기 위하여 메모리 정렬형 데 이타라는 가정을 이용할 수 있다. 메모리 정렬을 가정하면, 주소 크기 워드의 K개의 최하위 비트 중 어느 비트가 0이 아니면, 주소 크기 워드는 후보 가상 주소의 자격을 잃을 수 있다. 도 6에 도시된 방법(600)과 실질적으로 유사한 방법(1100)을 예시한 도 11(모든 동일 요소는 동일 참조 번호를 가짐)을 참조하면, 캐시 라인으로부터 판독된 주소 크기 워드의 K개의 최하위 비트 중 어느 비트가 0이 아니면(참조 번호 1110 참조), 670으로 도시된 바와 같이 주소 크기 워드는 폐기된다.
위에서 설명한 후보 가상 주소 식별 방법(600)(뿐만 아니라 방법(1100))은 일반적으로 캐시 라인의 유효 주소의 상위 비트에 포함된 임의의 비트 패턴에 대해 기능하는데, 상위 N 비트가 모두 0인 경우 및 상위 N 비트가 모두 1인 경우(두 경우 모두, 음수는 잠재적으로 후보 가상 주소로 잘못 식별될 수 있음)라는 2 가지 경우만 예외이다. 그러나, 유효 주소의 비교 비트가 모두 0 또는 1일 때 예측을 하지 않는 대신에, 후보 가상 주소를 데이타 값 또는 랜덤 비트 패턴과 식별하기 위해 비교하는데 부가적인 필터 비트가 사용될 수 있다. 도 12을 참조하면, 캐시 라인의 유효 주소(1210)의 비교 비트(1230)는 모두 1이거나 0이다. 캐시 라인의 주소 크기 워드(1220)의 상위 N 비트가 유효 주소의 상위 N 비트(모두 1이거나 0임)와 일치하면, 주소 크기 워드의 부가적인 필터 비트(1240)를 검사한다. 필터 비트(1240)는 상위 N 비트 또는 비교 비트(1230)의 뒤에 있는 다음 M 비트를 구비한다. 비교 비트(1230)가 모두 0이고 0이 아닌 비트가 주소 크기 워드의 필터 비트 범위에서 발견되거나, 또는 비교 비트(1230)가 모두 1이고 1이 아닌 비트가 주소 크기 워드의 필터 비트 범위 내에서 발견되면, 주소 크기 워드는 후보 가상 주 소인 것으로 간주된다.
필터 비트를 이용한 후보 가상 주소 식별 방법(1300)이 도 13에 예시되어 있다. 이 방법(1300)은 도 6에 관하여 도시 및 설명된 후보 가상 주소 식별 방법(600)과 유사하고, 동일 요소는 동일한 참조 번호를 갖는다. 참조 번호 610으로 도시된 바와 같이, 가상 주소 예측기(295)는 캐시 라인을 수신한다. 또한, 캐시 라인은 내용 프리페처(290)에 수신된 채움 내용의 카피에 포함된다. 다음에, 참조 번호 620으로 도시된 바와 같이, 캐시 라인의 유효 주소가 검색된다. 참조 번호 630으로 표기된 바와 같이, 캐시 라인이 스캔되고 주소 크기 워드가 캐시 라인으로부터 판독된다(또는, 그렇지 않으면 액세스된다). 다음에, 참조 번호 640을 참조하면, 주소 크기 워드의 상위 N 비트가 유효 주소의 상위 N 비트와 비교된다.
주소 크기 워드 및 캐시 라인의 유효 주소의 비교 비트가 일치하고(참조 번호 650 참조), 유효 주소의 상위 N 비트가 모두 0이면(참조 번호 1310 참조), 상기 주소 크기 워드의 다음 M개의 필터 비트가 검사된다. 참조 번호 1320을 참조하면, 주소 크기 워드의 다음 M개의 필터 비트 중 어떤 하나라도 0이 아닌 비트이면, 주소 크기 워드는 후보 가상 주소이다(참조 번호 660 참조). 0이 아닌 비트가 필터 비트 범위 내에서 발견되지 않으면, 670으로 도시된 바와 같이 주소 크기 워드는 폐기된다. 유사하게, 주소 크기 워드와 유효 주소의 비교 비트가 일치하고(참조 번호 650 참조) 유효 주소의 상위 N 비트가 모두 1이면(참조 번호 1330 참조), 주소 크기 워드의 다음 M개의 필터 비트가 검사된다. 참조 번호 1340으로 예시된 바와 같이, 주소 크기 워드의 다음 M개의 필터 비트 중 어느 하나가 1이 아닌 비트이 면, 주소 크기 워드는 후보 가상 주소이다(참조 번호 660 참조). 1이 아닌 비트가 필터 비트 범위내에서 발견되지 않으면, 670으로 표기된 바와 같이 주소 크기 워드는 폐기된다.
필터 비트 범위는 임의의 적절한 수의 비트를 구비할 수 있다. 일예로, 32 비트 주소 크기 워드의 경우에, 1 비트와 4 비트 사이의 필터 비트 범위가 적절하다고 생각된다. 필터 비트를 이용하지 않으면, 캐시 라인의 유효 주소의 비교 비트가 모두 0 또는 1일 때 가상 주소가 예측되지 않는 반면에, 필터 비트의 수를 증가시키면 잠재적인 후보 가상 주소에 대한 요건들이 완화된다.
당해 기술 분야의 숙련자들은 여기서 설명된 가상 주소 예측기(295)를 갖는 내용 프리페처(290) 뿐만 아니라 후보 가상 주소 식별 방법(600, 1100, 1300)의 실시예의 이점을 이해할 수 있다. 가상 주소 예측기는 외부 소스 또는 주소 인덱스, 예컨대, TLB에 의지하지 않고 캐시로부터 수신된 채움 내용의 카피 내의 후보 가상 주소를 식별하며, 따라서 잠재적인 프리페치의 범위는 불필요하게 제한되지 않는다. 가상 주소 예측기는 순환구성 요소(recursive component)를 제공하여 연쇄적인 프리페치를 얻을 수 있으며, 우선 순위가 그 프리페치의 요청 깊이에 기초하여 프리페치에 할당될 수 있다. 후보 가상 주소 식별 방법은 캐시 라인으로부터 판독된 주소 크기 워드의 상위 N 비트를 캐시 라인의 유효 주소의 상위 N 비트와 비교함으로써 후보 가상 주소를 데이타 값 및 랜덤 비트 패턴과 구별한다. 비교 비트들이 일치하면, 주소 크기 워드는 후보 가상 주소로 식별되고 프리페치 요청은 그 주소에 대해 인큐될 수 있으며, 그렇지 않다면, 주소 크기 워드는 폐기된다. 다른 실시예에서, 캐시 라인의 유효 주소의 상위 N 비트가 모두 1 또는 0인 경우에 주소 크기 워드 내의 필터 비트 범위를 검사하여, 채움 내용이 다수의 음수를 포함할 때 일어날 수 있는 불량 예측을 최소화한다. 또한, 후보 가상 주소 식별 방법은 메모리 정렬형 데이타를 이용하여 가상 주소에 대응하지 않을 것 같은 주소 크기 워드를 쉽게 제거할 수 있다.
상기한 상세한 설명 및 첨부 도면은 예시에 불과하며 한정하는 것이 아니다. 상기한 상세한 설명 및 첨부 도면은 주로 본 발명의 명확하고 포괄적인 이해를 위해 제공되었고 불필요한 제한은 없음을 이해해야 한다. 여기서 설명된 실시예들의 수많은 부가, 삭제, 및 수정 뿐만 아니라 대안적인 장치들이 본 발명의 사상 및 첨부된 청구의 범위로부터 이탈하지 않고 당해 기술 분야에서 숙련된 자에 의해 발명될 수도 있다.

Claims (36)

  1. 캐시 라인(cache line)으로부터 유효 주소(effective address)를 검색하는 단계;
    상기 캐시 라인으로부터 주소 크기 워드(address-sized word)를 판독하는 단계;
    상기 주소 크기 워드의 상위 N 비트를 상기 캐시 라인의 상기 유효 주소의 상위 N 비트와 비교하는 단계; 및
    상기 주소 크기 워드의 상기 상위 N 비트가 상기 유효 주소의 상기 상위 N 비트와 일치하면, 상기 주소 크기 워드를 후보 가상 주소(candidate virtual address)로 식별하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 비교 단계 이후에, 상기 주소 크기 워드의 상기 상위 N 비트가 상기 유효 주소의 상기 상위 N 비트와 일치하지 않으면, 상기 주소 크기 워드를 폐기하는 단계를 더 포함하는 방법.
  3. 제1항에 있어서, 상기 상위 N 비트는 8 내지 12 비트를 포함하는 방법.
  4. 제1항에 있어서, 상기 캐시 라인은 메모리 정렬형(memory aligned)이고, 상 기 방법은 상기 주소 크기 워드의 K개의 최하위 비트(K least significant bits) 중 어느 비트라도 0이 아니면 상기 주소 크기 워드를 폐기하는 단계를 더 포함하는 방법.
  5. 제4항에 있어서, 상기 캐시 라인은 2-바이트 정렬형, 4-바이트 정렬형, 8-바이트 정렬형, 및 16-바이트 정렬형 중 하나인 방법.
  6. 제4항에 있어서, 상기 K개의 최하위 비트는 1 내지 4 비트를 포함하는 방법.
  7. 제1항에 있어서,
    상기 비교 단계 이후에, 상기 유효 주소의 상기 상위 N 비트의 각각이 0 비트이면 상기 주소 크기 워드의 M 개의 필터 비트를 검사하는 단계; 및
    상기 M 개의 필터 비트 중 하나가 0이 아닌 비트이면, 상기 주소 크기 워드를 후보 가상 주소로 식별하는 단계
    를 더 포함하는 방법.
  8. 제7항에 있어서, 상기 검사 단계 이후에, 상기 M 개의 필터 비트의 각각이 0 비트이면 상기 주소 크기 워드를 폐기하는 단계를 더 포함하는 방법.
  9. 제7항에 있어서, 상기 M 개의 필터 비트는 1 내지 4 비트를 포함하는 방법.
  10. 제1항에 있어서,
    상기 비교 단계 이후에, 상기 유효 주소의 상기 상위 N 비트의 각각이 1 비트이면 상기 주소 크기 워드의 M 개의 필터 비트를 검사하는 단계; 및
    상기 M 개의 필터 비트 중 하나가 1이 아닌 비트이면, 상기 주소 크기 워드를 후보 가상 주소로 식별하는 단계
    를 더 포함하는 방법.
  11. 제10항에 있어서, 상기 검사 단계 이후에, 상기 M 개의 필터 비트의 각각이 1 비트이면 상기 주소 크기 워드를 폐기하는 단계를 더 포함하는 방법.
  12. 제10항에 있어서, 상기 M 개의 필터 비트는 1 내지 4 비트를 포함하는 방법.
  13. 캐시 라인을 포함하는 채움 내용(fill content)을 수신하기 위한 캐시 메모리; 및
    상기 캐시 메모리와 연결된 내용 프리페처(content prefetcher)를 포함하며,
    상기 내용 프리페처는,
    상기 캐시 라인의 카피를 수신하고,
    상기 캐시 라인으로부터 유효 주소를 검색하고,
    상기 캐시 라인으로부터 주소 크기 워드를 판독하고,
    상기 주소 크기 워드의 상위 N 비트를 상기 캐시 라인의 상기 유효 주소의 상위 N 비트와 비교하고,
    상기 주소 크기 워드의 상기 상위 N 비트가 상기 유효 주소의 상기 상위 N 비트와 일치하면, 상기 주소 크기 워드를 후보 가상 주소로 식별하는 장치.
  14. 제13항에 있어서, 상기 내용 프리페처는 상기 주소 크기 워드의 상기 상위 N 비트가 상기 유효 주소의 상기 상위 N 비트와 일치하지 않으면 상기 주소 크기 워드를 폐기하는 장치.
  15. 제13항에 있어서, 상기 상위 N 비트는 8 내지 12 비트를 포함하는 장치.
  16. 제13항에 있어서, 상기 캐시 라인은 메모리 정렬형이고, 상기 내용 프리페처는 상기 주소 크기 워드의 K개의 최하위 비트 중 어느 비트라도 0이 아니면 상기 주소 크기 워드를 폐기하는 장치.
  17. 제16항에 있어서, 상기 캐시 라인은 2-바이트 정렬형, 4-바이트 정렬형, 8-바이트 정렬형, 및 16-바이트 정렬형 중 하나인 장치.
  18. 제16항에 있어서, 상기 K개의 최하위 비트는 1 내지 4 비트를 포함하는 장치.
  19. 제13항에 있어서, 상기 내용 프리페처는,
    상기 유효 주소의 상기 상위 N 비트의 각각이 0 비트이면 상기 주소 크기 워드의 M 개의 필터 비트를 검사하고,
    상기 M 개의 필터 비트 중 하나가 0이 아닌 비트이면, 상기 주소 크기 워드를 후보 가상 주소로 식별하는 장치.
  20. 제19항에 있어서, 상기 내용 프리페처는 상기 M 개의 필터 비트의 각각이 0 비트이면 상기 주소 크기 워드를 폐기하는 장치.
  21. 제19항에 있어서, 상기 M 개의 필터 비트는 1 내지 4 비트를 포함하는 장치.
  22. 제13항에 있어서, 상기 내용 프리페처는,
    상기 유효 주소의 상기 상위 N 비트의 각각이 1 비트이면 상기 주소 크기 워드의 M 개의 필터 비트를 검사하고,
    상기 M 개의 필터 비트 중 하나가 1이 아닌 비트이면, 상기 주소 크기 워드를 후보 가상 주소로 식별하는 장치.
  23. 제22항에 있어서, 상기 내용 프리페처는 상기 M 개의 필터 비트의 각각이 1 비트이면 상기 주소 크기 워드를 폐기하는 장치.
  24. 제22항에 있어서, 상기 M 개의 필터 비트는 1 내지 4 비트를 포함하는 장치.
  25. 컴퓨터에 의해 액세스될 때, 상기 컴퓨터가
    캐시 라인으로부터 유효 주소를 검색하고,
    상기 캐시 라인으로부터 주소 크기 워드를 판독하고,
    상기 주소 크기 워드의 상위 N 비트를 상기 캐시 라인의 상기 유효 주소의 상위 N 비트와 비교하고,
    상기 주소 크기 워드의 상기 상위 N 비트가 상기 유효 주소의 상기 상위 N 비트와 일치하면, 상기 주소 크기 워드를 후보 가상 주소로 식별하게 하는
    내용을 제공하는 컴퓨터 판독가능 기록 매체.
  26. 제25항에 있어서, 상기 내용은 액세스될 때, 추가로 상기 컴퓨터가, 상기 주소 크기 워드의 상기 상위 N 비트가 상기 유효 주소의 상기 상위 N 비트와 일치하지 않으면 상기 주소 크기 워드를 폐기하게 하는 컴퓨터 판독가능 기록 매체.
  27. 제25항에 있어서, 상기 상위 N 비트는 8 내지 12 비트를 포함하는 컴퓨터 판독가능 기록 매체.
  28. 제25항에 있어서, 상기 캐시 라인은 메모리 정렬형이고, 상기 내용은 액세스될 때, 추가로 상기 컴퓨터가, 상기 주소 크기 워드의 K개의 최하위 비트 중 어느 비트라도 0이 아니면 상기 주소 크기 워드를 폐기하게 하는 컴퓨터 판독가능 기록 매체.
  29. 제28항에 있어서, 상기 캐시 라인은 2-바이트 정렬형, 4-바이트 정렬형, 8-바이트 정렬형, 및 16-바이트 정렬형 중 하나인 컴퓨터 판독가능 기록 매체.
  30. 제28항에 있어서, 상기 K개의 최하위 비트는 1 내지 4 비트를 포함하는 컴퓨터 판독가능 기록 매체.
  31. 제25항에 있어서, 상기 내용은 액세스될 때, 추가로 상기 컴퓨터가
    상기 유효 주소의 상기 상위 N 비트의 각각이 0 비트이면 상기 주소 크기 워드의 M 개의 필터 비트를 검사하고,
    상기 M 개의 필터 비트 중 하나가 0이 아닌 비트이면, 상기 주소 크기 워드를 후보 가상 주소로 식별하게 하는 컴퓨터 판독가능 기록 매체.
  32. 제31항에 있어서, 상기 내용은 액세스될 때, 추가로 상기 컴퓨터가, 상기 M 개의 필터 비트의 각각이 0 비트이면 상기 주소 크기 워드를 폐기하게 하는 컴퓨터 판독가능 기록 매체.
  33. 제31항에 있어서, 상기 M 개의 필터 비트는 1 내지 4 비트를 포함하는 컴퓨터 판독가능 기록 매체.
  34. 제25항에 있어서, 상기 내용은 액세스될 때, 추가로 상기 컴퓨터가
    상기 유효 주소의 상기 상위 N 비트의 각각이 1 비트이면 상기 주소 크기 워드의 M 개의 필터 비트를 검사하고,
    상기 M 개의 필터 비트 중 하나가 1이 아닌 비트이면, 상기 주소 크기 워드를 후보 가상 주소로 식별하게 하는 컴퓨터 판독가능 기록 매체.
  35. 제34항에 있어서, 상기 내용은 액세스될 때, 추가로 상기 컴퓨터가, 상기 M 개의 필터 비트의 각각이 1 비트이면 상기 주소 크기 워드를 폐기하게 하는 컴퓨터 판독가능 기록 매체.
  36. 제34항에 있어서, 상기 M 개의 필터 비트는 1 내지 4 비트를 포함하는 컴퓨터 판독가능 기록 매체.
KR1020047008329A 2001-11-30 2002-12-02 내용 인식 프리페처의 후보 가상 주소 식별 방법 및 장치 KR100578436B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/000,549 US6675280B2 (en) 2001-11-30 2001-11-30 Method and apparatus for identifying candidate virtual addresses in a content-aware prefetcher
US10/000,549 2001-11-30

Publications (2)

Publication Number Publication Date
KR20050058258A KR20050058258A (ko) 2005-06-16
KR100578436B1 true KR100578436B1 (ko) 2006-05-11

Family

ID=21691989

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047008329A KR100578436B1 (ko) 2001-11-30 2002-12-02 내용 인식 프리페처의 후보 가상 주소 식별 방법 및 장치

Country Status (7)

Country Link
US (1) US6675280B2 (ko)
EP (1) EP1451693A2 (ko)
KR (1) KR100578436B1 (ko)
CN (1) CN1324479C (ko)
AU (1) AU2002346639A1 (ko)
TW (1) TWI285330B (ko)
WO (1) WO2003048942A2 (ko)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4116413B2 (ja) * 2002-12-11 2008-07-09 株式会社日立製作所 プリフェッチアプライアンスサーバ
US7143273B2 (en) * 2003-03-31 2006-11-28 Intel Corporation Method and apparatus for dynamic branch prediction utilizing multiple stew algorithms for indexing a global history
US7284014B2 (en) 2003-04-07 2007-10-16 Hitachi, Ltd. Pre-fetch computer system
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
US7296129B2 (en) 2004-07-30 2007-11-13 International Business Machines Corporation System, method and storage medium for providing a serialized memory interface with a bus repeater
US7308571B2 (en) * 2004-10-06 2007-12-11 Intel Corporation Overriding processor configuration settings
US7441060B2 (en) * 2004-10-29 2008-10-21 International Business Machines Corporation System, method and storage medium for providing a service interface to a memory system
US7512762B2 (en) * 2004-10-29 2009-03-31 International Business Machines Corporation System, method and storage medium for a memory subsystem with positional read data latency
US7299313B2 (en) 2004-10-29 2007-11-20 International Business Machines Corporation System, method and storage medium for a memory subsystem command interface
US7356737B2 (en) * 2004-10-29 2008-04-08 International Business Machines Corporation System, method and storage medium for testing a memory module
US7305574B2 (en) * 2004-10-29 2007-12-04 International Business Machines Corporation System, method and storage medium for bus calibration in a memory subsystem
US7395476B2 (en) * 2004-10-29 2008-07-01 International Business Machines Corporation System, method and storage medium for providing a high speed test interface to a memory subsystem
US7331010B2 (en) 2004-10-29 2008-02-12 International Business Machines Corporation System, method and storage medium for providing fault detection and correction in a memory subsystem
US7277988B2 (en) * 2004-10-29 2007-10-02 International Business Machines Corporation System, method and storage medium for providing data caching and data compression in a memory subsystem
US20060095620A1 (en) * 2004-10-29 2006-05-04 International Business Machines Corporation System, method and storage medium for merging bus data in a memory subsystem
US20060106988A1 (en) * 2004-11-16 2006-05-18 Charbel Khawand Method and system for exchanging data
US7478259B2 (en) * 2005-10-31 2009-01-13 International Business Machines Corporation System, method and storage medium for deriving clocks in a memory system
US7685392B2 (en) * 2005-11-28 2010-03-23 International Business Machines Corporation Providing indeterminate read data latency in a memory system
US7636813B2 (en) * 2006-05-22 2009-12-22 International Business Machines Corporation Systems and methods for providing remote pre-fetch buffers
US7640386B2 (en) * 2006-05-24 2009-12-29 International Business Machines Corporation Systems and methods for providing memory modules with multiple hub devices
US7584336B2 (en) * 2006-06-08 2009-09-01 International Business Machines Corporation Systems and methods for providing data modification operations in memory subsystems
US7669086B2 (en) * 2006-08-02 2010-02-23 International Business Machines Corporation Systems and methods for providing collision detection in a memory system
US7870459B2 (en) 2006-10-23 2011-01-11 International Business Machines Corporation High density high reliability memory module with power gating and a fault tolerant address and command bus
US7721140B2 (en) 2007-01-02 2010-05-18 International Business Machines Corporation Systems and methods for improving serviceability of a memory system
US7606988B2 (en) * 2007-01-29 2009-10-20 International Business Machines Corporation Systems and methods for providing a dynamic memory bank page policy
US7937530B2 (en) 2007-06-28 2011-05-03 International Business Machines Corporation Method and apparatus for accessing a cache with an effective address
KR101471114B1 (ko) * 2008-03-06 2014-12-10 삼성전자주식회사 프로세서 및 컴퓨팅 시스템
US8006082B2 (en) * 2008-09-29 2011-08-23 Intel Corporation Dynamically reconfiguring platform settings
US9110595B2 (en) 2012-02-28 2015-08-18 AVG Netherlands B.V. Systems and methods for enhancing performance of software applications
US9032159B2 (en) * 2012-06-27 2015-05-12 Via Technologies, Inc. Data prefetcher with complex stride predictor
US9529724B2 (en) 2012-07-06 2016-12-27 Seagate Technology Llc Layered architecture for hybrid controller
US9477591B2 (en) 2012-07-06 2016-10-25 Seagate Technology Llc Memory access requests in hybrid memory system
US9104578B2 (en) 2012-07-06 2015-08-11 Seagate Technology Llc Defining address ranges used to cache speculative read data
US9390020B2 (en) 2012-07-06 2016-07-12 Seagate Technology Llc Hybrid memory with associative cache
US9594685B2 (en) 2012-07-06 2017-03-14 Seagate Technology Llc Criteria for selection of data for a secondary cache
US9772948B2 (en) * 2012-07-06 2017-09-26 Seagate Technology Llc Determining a criterion for movement of data from a primary cache to a secondary cache
EP2885713A4 (en) 2012-08-18 2016-03-23 Qualcomm Technologies Inc TRANSLATION LOOK ASIDE BUFFER STORE WITH ADVANCE
CN103942156B (zh) * 2013-01-18 2018-01-16 华为技术有限公司 存储器输出页面零数据的方法及存储器
US9417880B2 (en) 2013-03-15 2016-08-16 Intel Corporation Instruction for performing an overload check
US9785564B2 (en) 2013-08-20 2017-10-10 Seagate Technology Llc Hybrid memory with associative cache
US9507719B2 (en) 2013-08-20 2016-11-29 Seagate Technology Llc Garbage collection in hybrid memory system
US9367247B2 (en) 2013-08-20 2016-06-14 Seagate Technology Llc Memory access requests in hybrid memory system
US9594687B2 (en) * 2015-04-14 2017-03-14 Google Inc. Virtualization-aware prefetching
US11263138B2 (en) * 2018-10-31 2022-03-01 Arm Limited Correlated addresses and prefetching
US11182161B2 (en) 2020-04-15 2021-11-23 International Business Machines Corporation Fractional or partial line usage prediction in a processor
CN112416436B (zh) * 2020-12-02 2023-05-09 海光信息技术股份有限公司 信息处理方法、信息处理装置和电子设备
CN112631956B (zh) * 2020-12-24 2023-01-20 海光信息技术股份有限公司 数据处理方法及装置、电子设备及存储介质
FR3120717B1 (fr) * 2021-03-09 2023-02-10 Commissariat Energie Atomique Procédé d'exécution d'un code binaire d'un programme d'ordinateur par un microprocesseur

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4980823A (en) 1987-06-22 1990-12-25 International Business Machines Corporation Sequential prefetching with deconfirmation
US5317718A (en) 1990-03-27 1994-05-31 Digital Equipment Corporation Data processing system and method with prefetch buffers
US5778423A (en) 1990-06-29 1998-07-07 Digital Equipment Corporation Prefetch instruction for improving performance in reduced instruction set processor
US5357618A (en) 1991-04-15 1994-10-18 International Business Machines Corporation Cache prefetch and bypass using stride registers
US5423014A (en) * 1991-10-29 1995-06-06 Intel Corporation Instruction fetch unit with early instruction fetch mechanism
US5500948A (en) * 1991-10-29 1996-03-19 Intel Corporation Translating instruction pointer virtual addresses to physical addresses for accessing an instruction cache
US5666505A (en) 1994-03-11 1997-09-09 Advanced Micro Devices, Inc. Heuristic prefetch mechanism and method for computer system
US6012135A (en) * 1994-12-01 2000-01-04 Cray Research, Inc. Computer having multiple address ports, each having logical address translation with base and limit memory management
US5764946A (en) 1995-04-12 1998-06-09 Advanced Micro Devices Superscalar microprocessor employing a way prediction unit to predict the way of an instruction fetch address and to concurrently provide a branch prediction address corresponding to the fetch address
US5694568A (en) 1995-07-27 1997-12-02 Board Of Trustees Of The University Of Illinois Prefetch system applicable to complex memory access schemes
US5758119A (en) 1995-08-23 1998-05-26 International Business Machines Corp. System and method for indicating that a processor has prefetched data into a primary cache and not into a secondary cache
US5740399A (en) 1995-08-23 1998-04-14 International Business Machines Corporation Modified L1/L2 cache inclusion for aggressive prefetch
US5664147A (en) 1995-08-24 1997-09-02 International Business Machines Corp. System and method that progressively prefetches additional lines to a distributed stream buffer as the sequentiality of the memory accessing is demonstrated
JP3717212B2 (ja) 1995-10-27 2005-11-16 株式会社日立製作所 情報処理装置及び情報処理ユニット
US6085291A (en) 1995-11-06 2000-07-04 International Business Machines Corporation System and method for selectively controlling fetching and prefetching of data to a processor
US5701448A (en) * 1995-12-15 1997-12-23 Cyrix Corporation Detecting segment limit violations for branch target when the branch unit does not supply the linear address
US5765214A (en) 1996-04-22 1998-06-09 Cypress Semiconductor Corporation Memory access method and apparatus and multi-plane memory device with prefetch
US5752037A (en) 1996-04-26 1998-05-12 Hewlett-Packard Company Method of prefetching data for references with multiple stride directions
US6092186A (en) 1996-05-07 2000-07-18 Lucent Technologies Inc. Apparatus and method for aborting un-needed instruction fetches in a digital microprocessor device
US5778435A (en) * 1996-05-30 1998-07-07 Lucent Technologies, Inc. History-based prefetch cache including a time queue
US5724422A (en) 1996-08-05 1998-03-03 Industrial Technology Research Institute Encrypting and decrypting instruction boundaries of instructions in a superscalar data processing system
US6119221A (en) 1996-11-01 2000-09-12 Matsushita Electric Industrial Co., Ltd. Instruction prefetching apparatus and instruction prefetching method for processing in a processor
KR100204024B1 (ko) 1996-11-06 1999-06-15 김영환 페이지 경계에 걸리는 분할 라인을 한 사이클에 억세스할 수 있는 컴퓨팅 시스템
US6055622A (en) 1997-02-03 2000-04-25 Intel Corporation Global stride prefetching apparatus and method for a high-performance processor
TW357318B (en) * 1997-03-18 1999-05-01 Ind Tech Res Inst Branching forecast and reading device for unspecified command length extra-purity pipeline processor
US6098154A (en) 1997-06-25 2000-08-01 Sun Microsystems, Inc. Apparatus and method for generating a stride used to derive a prefetch address
US6138212A (en) 1997-06-25 2000-10-24 Sun Microsystems, Inc. Apparatus and method for generating a stride used to derive a prefetch address
US6076151A (en) 1997-10-10 2000-06-13 Advanced Micro Devices, Inc. Dynamic memory allocation suitable for stride-based prefetching
US6161166A (en) * 1997-11-10 2000-12-12 International Business Machines Corporation Instruction cache for multithreaded processor
US6079005A (en) 1997-11-20 2000-06-20 Advanced Micro Devices, Inc. Microprocessor including virtual address branch prediction and current page register to provide page portion of virtual and physical fetch address
US6247107B1 (en) 1998-04-06 2001-06-12 Advanced Micro Devices, Inc. Chipset configured to perform data-directed prefetching
US6212603B1 (en) 1998-04-09 2001-04-03 Institute For The Development Of Emerging Architectures, L.L.C. Processor with apparatus for tracking prefetch and demand fetch instructions serviced by cache memory
US6081479A (en) 1999-06-15 2000-06-27 Infineon Technologies North America Corp. Hierarchical prefetch for semiconductor memories
GB2348024B (en) 1999-03-16 2003-06-25 Ibm Cache memory systems
US6275918B1 (en) 1999-03-16 2001-08-14 International Business Machines Corporation Obtaining load target operand pre-fetch address from history table information upon incremented number of access indicator threshold
EP1150213B1 (en) 2000-04-28 2012-01-25 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Data processing system and method

Also Published As

Publication number Publication date
US20030105938A1 (en) 2003-06-05
KR20050058258A (ko) 2005-06-16
TWI285330B (en) 2007-08-11
US6675280B2 (en) 2004-01-06
CN1636194A (zh) 2005-07-06
TW200302981A (en) 2003-08-16
AU2002346639A1 (en) 2003-06-17
EP1451693A2 (en) 2004-09-01
WO2003048942A3 (en) 2003-11-13
WO2003048942A2 (en) 2003-06-12
AU2002346639A8 (en) 2003-06-17
CN1324479C (zh) 2007-07-04

Similar Documents

Publication Publication Date Title
KR100578436B1 (ko) 내용 인식 프리페처의 후보 가상 주소 식별 방법 및 장치
US11789872B2 (en) Slot/sub-slot prefetch architecture for multiple memory requestors
US7260704B2 (en) Method and apparatus for reinforcing a prefetch chain
US6954840B2 (en) Method and apparatus for content-aware prefetching
US5958040A (en) Adaptive stream buffers
US7093077B2 (en) Method and apparatus for next-line prefetching from a predicted memory address
CN106537362B (zh) 数据处理装置和在数据处理装置中处理地址转换的方法
US8176255B2 (en) Allocating space in dedicated cache ways
US9037810B2 (en) Pre-fetching of data packets
US11409663B2 (en) Methods and systems for optimized translation of a virtual address having multiple virtual address portions using multiple translation lookaside buffer (TLB) arrays for variable page sizes
US10007614B2 (en) Method and apparatus for determining metric for selective caching
US6782453B2 (en) Storing data in memory
CN112416817B (zh) 预取方法、信息处理装置、设备以及存储介质
CN108132893A (zh) 一种支持流水的常量Cache
CN108874691B (zh) 数据预取方法和内存控制器
US8656106B2 (en) Managing unforced injections of cache lines into a cache utilizing predetermined address ranges
KR20190087500A (ko) 메모리 어드레스 변환
WO2019177867A1 (en) Data structure with rotating bloom filters
US11494300B2 (en) Page table walker with page table entry (PTE) physical address prediction
US11709782B2 (en) Memory address translation
CN116069719A (zh) 处理器、内存控制器、片上系统芯片和数据预取方法
EP4038508A1 (en) Entities, system and methods performed therein for handling memory operations of an application in a computer environment

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

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee