KR20150082457A - 버퍼 충만도에 기초한 캐시에 대한 프리페치 - Google Patents

버퍼 충만도에 기초한 캐시에 대한 프리페치 Download PDF

Info

Publication number
KR20150082457A
KR20150082457A KR1020157014676A KR20157014676A KR20150082457A KR 20150082457 A KR20150082457 A KR 20150082457A KR 1020157014676 A KR1020157014676 A KR 1020157014676A KR 20157014676 A KR20157014676 A KR 20157014676A KR 20150082457 A KR20150082457 A KR 20150082457A
Authority
KR
South Korea
Prior art keywords
cache
slots
request
prefetch
requests
Prior art date
Application number
KR1020157014676A
Other languages
English (en)
Other versions
KR101973731B1 (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 KR20150082457A publication Critical patent/KR20150082457A/ko
Application granted granted Critical
Publication of KR101973731B1 publication Critical patent/KR101973731B1/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
    • 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

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

프로세서(102)는 미스 어드레스 버퍼(MAB)(130)의 충만도에 기초하여 혹은 프리페치 요청의 신뢰도 레벨에 기초하여 메모리 계층에서 프리페치 요청을 이들의 표적이 된 캐시(104)에서 또 다른 캐시(105)에 전달한다. 메모리 계층에서 각 캐시에는 MAB에 다수의 슬롯들이 할당된다. 캐시에의 프리페치 요청이 수신되었을 때(404), 캐시에 할당된 슬롯의 충만도가 임계 초과인 것으로 결정한 것에 응답하여, 프로세서는 프리페치 요청을 메모리 계층(410)에서의 다음 하위 레벨 캐시에 전달한다. 이에 응답하여, 액세스 요청에 의해 표적이 된 데이터는 메모리 계층에서의 다음 하위 레벨 캐시에 프리페치되고, 따라서 캐시에 후속 제공을 위해 사용할 수 있게 된다. 또한, 프로세서는 프리페치 요청의 신뢰도 레벨에 기초하여 프리페치 요청을 하위 레벨 캐시에 전달할 수 있다.

Description

버퍼 충만도에 기초한 캐시에 대한 프리페치{PREFETCHING TO A CACHE BASED ON BUFFER FULLNESS}
본 발명은 일반적으로 프로세서에 관한 것으로, 특히 프로세서에서의 프리페치에 관한 것이다.
프로세서 아키텍처들은 전형적으로 메모리 계층의 최저 레벨에 외부 메모리 및 메모리 계층의 각각의 상위 레벨에 캐시를 가진, 메모리 계층을 채용한다. 프로세서 아키텍처들은 메모리 계층에서의 최상위 레벨 캐시로부터 데이터(명령들 또는 오퍼랜드 데이터(operand data))를 요청하는 프로세서 코어를 더 채용한다. 액세스 요청에 응답하는 정보가 메모리 계층 내 특정한 캐시에 저장되지 않는다는 결정에 응답하여, 캐시는 계층에서의 다음 하위 레벨에 캐시로부터 정보에 대한 액세스 요청을 발행할 것이다. 일부 프로세서 아키텍처들은 논-블록킹(non-blocking) 캐시들을 채용하는데, 이에 의해 캐시들은 메모리 계층에서의 하위 레벨에 대한 펜딩(pending) 액세스 요청들의 이행을 기다리는 동안, 액세스 요청들을 서비스할 수 있다. 이러한 아키텍처들은 각각의 펜딩 액세스 요청에 대한 어드레스 및 이외 다른 정보를 저장하기 위해 미스 어드레스 버퍼(MAB; miss address buffer)를 사용할 수 있다. 캐시에 할당되는 슬롯들의 수가 캐시에 대한 최대 허용가능한 수의 펜딩 액세스 요청들을 다루도록, 메모리 계층에서의 각각의 캐시에는 MAB의 슬롯들이 할당된다.
액세스 요청들은 적어도 두 유형들로서, 프로세서에 의해 소용될 것으로 알려진 명령들 또는 데이터에 대한 프로세서 코어로부터의 요청을 나타내는, 요구 요청들, 및 나중에 실행될 것으로 예측되는 명령 또는 데이터 참조들에 응답할 것으로 예상되는 명령들 또는 데이터를 추측하여 요청하는 프리페치 요청들이 있을 수 있다. 요구 요청들에는 전형적으로 MAB에서의 저장 위치들의 확보를 위한 더 큰 우선순위가 주어진다. 이러한 우선순위 결정은 MAB에서 가용한 저장 위치들의 부재에 기인하여 프리페치에 부정적으로 영향을 미치고, 그렇게 함으로써 프로세서 효율을 감소시킬 수 있다.
본 발명은 첨부 도면들을 참조함으로써 더 양호하게 이해될 수 있고 이의 수많은 특징들 및 이점들이 당업자들에게 명백해질 수 있다.
도 1은 일부 실시예들에 따른 전자장치의 블록도이다.
도 2는 일부 실시예들에 따라 도 1의 전자장치의 프로세서에서 사용되는 프리페치 요청 정보의 블록도이다.
도 3은 일부 실시예들에 따라 도 1의 프로세서의 메모리 계층에서 프리페치 요청의 전달을 도시하는 타임라인이다.
도 4는 일부 실시예들에 따라 MAB의 충만도에 기초하여 도 1의 프로세서의 메모리 계층에서 프리페치 요청을 전달하는 방법의 흐름도이다.
도 5는 일부 실시예들에 따라 프리페치 신뢰도 레벨에 기초하여 도 1의 프로세서의 메모리 계층에서 프리페치 요청을 전달하는 방법의 흐름도이다.
도 6은 일부 실시예들에 따라, 프로세서의 구성요소의 적어도 일부를 구현하는 집적회로 장치를 설계 및 제작하기 위한 방법을 예시하는 흐름도이다.
상이한 도면들에서 동일 참조부호들의 사용은 유사하거나 동일한 항목들을 나타낸다.
도 1 내지 도 6은 미스 어드레스 버퍼(MAB)의 충만도에 기초하여 혹은 프리페치 요청들의 신뢰도 레벨들에 기초하여 프리페치 요청들을 이들의 표적이 된 캐시에서 메모리 계층에서의 또 다른 캐시로 전달함으로써 처리 효율을 개선하기 위한 기술들을 예시한 것이다. 프로세서는 각각의 슬롯이 메모리 계층에서의 캐시에 대한 펜딩 액세스 요청과 관련된 정보를 MAB에 저장할 수 있도록 MAB를 유지한다. 메모리 계층에서의 각각의 캐시에는 MAB에서의 한 세트의 슬롯들이 할당된다. 캐시에 대한 프리페치 요청이 수신되었을 때 캐시에 할당되는 한 세트의 슬롯들의 충만도가 임계보다 크다는 결정에 응답하여, 프로세서는 프리페치 요청을 메모리 계층에서의 다음 하위 레벨 캐시에 전달한다. 이에 응답하여, 액세스 요청에 의해 표적이 되는 데이터는 메모리 계층에서의 하위 레벨 캐시로 프리페치되고, 따라서 후속 요구 요청의 경우 캐시에 제공하기 위해 가용하다. 또한, 프로세서는 프리페치 요청의 신뢰도 레벨에 기초하여 프리페치 요청을 하위 레벨 캐시들에 전달할 수 있다. 이것은 낮은 신뢰도 레벨과 연관된 프리페치 요청들이 더 높은 신뢰도를 가지는 요구 요청들 또는 프리페치 요청들을 위해 사용하게 될, MAB에 있는 상위 레벨 캐시의 슬롯들을 소비하지 않음을 보증한다.
도 1은 일부 실시예들에 따른 프로세서(102) 및 메모리(150)를 가지는 전자장치(100)를 예시한다. 전자장치(100)는 개인용 컴퓨터, 서버, 셀 전화와 같은 휴대 전자장치, 자동차 장치, 게임 콘솔 등을 포함하여, 프로세서를 채용하는 임의의 장치일 수 있다. 프로세서(102)는 일반적으로, 컴퓨터 프로그램들로서 배열되고 메모리(150)에 저장된 명령들의 세트들을 실행하도록 구성된다. 명령들의 세트들은 컴퓨터 프로그램들과 연관된 작업들을 실행하기 위해 프로세서(102)를 조작한다.
프로세서(102)는 명령들의 세트들을 실행하는 프로세서 코어(110)를 포함한다. 일부 실시예들에서, 프로세서 코어(110)는 복수의 스테이지들을 갖는 명령 파이프라인을 구현하며, 이에 의해 각 스테이지는 명령의 실행의 부분으로서 특정한 동작들을 수행한다. 예를 들면, 명령 파이프라인은 프로그램 순서로 다음 명령을 페치하는 페치 스테이지, 페치된 명령들을 마이크로-동작들의 세트들로 디코딩하는 디코딩 스테이지, 실행을 위해 마이크로-동작들을 디스패치(dispatch)하기 위한 디스패치 스테이지, 디스패치된 마이크로-동작들을 실행하기 위한 복수의 실행 유닛을 갖는 실행 스테이지, 및 명령들의 철수를 관리하기 위한 철수 스테이지를 포함할 수 있다.
프로세서(102)는 또한 한 세트의 N 캐시들을 포함하며, 여기서 N은 정수이다. 예시된 예에서, N 캐시들은 캐시(104), 캐시(105), 및 제N 캐시(106)까지의 추가의 캐시들을 포함한다. 논의 목적들을 위해, 캐시들(104-106)이 명령들의 실행 동안 프로세서(102)에 의해 조작되는 데이터를 저장하는 것으로 가정한다. 또한, 프로세서(102)는 프로세서 코어(110)에 의해 실행될 명령들을 저장하는 계층으로 배열된 또 다른 한 세트의 캐시들을 포함할 수 있다. 일부 실시예들에서 캐시들(104-106) 중 하나 이상은 명령들 및 데이터 양자를 저장할 수 있다. 도 1에 관하여 설명되는 기술들이 캐시들(104-106)이 데이터를 저장한다는 가정 하에 설명될지라도, 기술들은 명령들을 저장하는 캐시들에도 적용된다는 것이 인식될 것이다.
캐시(104-106) 및 메모리(150)는 함께 전자장치(100)를 위한 메모리 계층(145)을 형성한다. 메모리(150)는 메모리 계층(145)의 최저 레벨에 위치되고, 캐시(104-106)는 각각 메모리 계층(145)의 상이한 대응하는 레벨에 위치된다. 이에 따라 도 1의 예시된 예에서, 캐시(104)는 계층의 최상위 레벨에 위치되고, 따라서 L1("레벨 1") 캐시(104)라 지칭한다. 캐시(105)는 메모리 계층(145)에서의 다음 상위 레벨에 위치되고, L2("레벨 2") 캐시(105)라 지칭한다. 프로세서(102)의 다른 캐시들은 메모리 계층(145)의 다른 레벨들에 위치되며, 캐시(106)는 제N 레벨에 있고 LN 캐시(106)라 지칭한다. 일부 실시예들에서, 메모리 계층(145)의 연속적으로 더 높은 각각의 레벨은 연속적으로 더 작다(데이터를 저장할 더 작은 용량을 갖는다). 이에 따라, 예를 들면, L1 캐시(104) 용량은 L2 캐시(105)의 용량보다 작다. 그러나, 이하 더 기술되는 바와 같이, 프로세서(102)는 전형적으로, L1 캐시(104)를 통해 메모리 계층(145)으로부터 데이터를 저장 및 인출하고 메모리 계층(145)의 다른 레벨들로부터 데이터를 직접 저장 또는 인출하지 않는다. 따라서, 메모리 계층(145)의 하위 레벨들에 위치되는 데이터는 데이터가 L1 캐시(104)에 도달할 때까지 메모리 계층(145)의 각 레벨을 횡단하게 함으로써 프로세서(102)에 제공된다. 데이터가 메모리 계층(145)에서 횡단하는 각각의 레벨은 프로세서(102)로부터 액세스 요청에 응답함에 있어 추가의 레이턴시(latency)를 유발한다. 따라서, 프로세서(102)에 의해 요청되는 데이터가 위치되는 메모리 계층(145)의 레벨이 더 높을수록, 데이터에 대한 처리 효율은 더 높아진다(그리고 프로세서(102)가 데이터를 수신하는 레이턴시는 더 작아지게 된다).
캐시들(104-106) 각각은 제어기 및 저장 어레이를 포함한다. 캐시들(104-106) 각각에 대한 저장 어레이는 데이터를 저장하도록 구성된, 비트셀들(bitcells)과 같은, 한 세트의 저장 요소들이다. 캐시들(104-106) 각각에 대한 제어기는 그 대응하는 저장 어레이에 데이터의 저장 및 인출을 관리하도록 구성된다. 예시된 예에서, L1 캐시(104)는 제어기(115) 및 저장 어레이(116)를 포함하고, L2 캐시(105)는 제어기(125) 및 저장 어레이(126)를 포함하고, LN 캐시(106)는 제어기(135) 및 저장 어레이(136)를 포함한다.
프로세서 코어(110)는 특정 명령들에 응답하여 메모리 액세스 요청을 발생시키기 위해 로드/저장 유닛(111)을 포함한다. 예시를 위해서, 일부 실시예들에서 로드/저장 유닛(111)은 프로세서 코어(110)의 명령 파이프라인의 실행 스테이지에 위치된다. 명령 파이프라인의 디코딩 스테이지는 메모리 계층(145)으로부터 데이터를 인출하거나(로드 동작들) 메모리 계층(145)에 데이터를 저장하기 위한 동작을 발생하기 위해(저장 동작들) 특정 명령들을 디코딩한다. 로드 및 저장 동작들을 일괄하여 본원에서는 메모리 액세스 요청들이라 칭한다. 각각의 메모리 액세스 요청은 메모리 액세스 요청에 의해 액세스되는 데이터의 위치를 확인하는 메모리 어드레스를 포함한다.
메모리 액세스 요청에 응답하여, 로드/저장 유닛(111)은 본원에서 요구 요청이라 칭하는, 메모리 계층(145)에 대한 요청을 발생시킨다. 요구 요청은 L1 캐시(104)에 제공된다. 제어기(115)는 요구 요청에 대한 메모리 어드레스를 분석하고 저장 어레이(116)가 메모리 어드레스와 연관된 데이터를 저장하고 있는지를 결정한다. 만일 그렇다면, 제어기(115)는 요구 요청이 로드 동작을 위한 것이라면 메모리 어드레스와 연관된 데이터를 로드/저장 유닛(111)에 제공함으로써, 혹은 요구 요청이 저장 동작이라면 메모리 어드레스에 대응하는 위치에 새로운 데이터를 저장함으로써, 요구 요청을 이행한다. 저장 어레이(116)가 메모리 어드레스와 연관된 데이터를 저장하지 않는 것으로 제어기(115)가 결정하면, 그것은 캐시 미스(cache miss)를 나타내며 요구 요청을 L2 캐시(105)에 제공한다.
요구 요청에 응답하여, 제어기(125)는 요구 요청에 대한 메모리 어드레스를 분석하고 저장 어레이(126)가 메모리 어드레스와 연관된 데이터를 저장하고 있는지를 결정한다. 만일 그렇다면, 제어기(125)는 저장 어레이(116)에 저장을 위해 데이터를 L1 캐시(104)에 제공한다. 이어 제어기(115)는 저장 어레이(116)에 저장된 데이터를 사용하여 요구 요청을 이행한다. 저장 어레이(126)가 메모리 어드레스와 연관된 데이터를 저장하고 있지 않은 것으로 제어기(125)가 결정하면, 그것은 캐시 미스를 나타내며 요구 요청을 메모리 계층(145)의 다음 하위 레벨에서의 캐시에 제공한다. 메모리 계층(145)의 다른 레벨들에서의 제어기들은 그것들의 대응하는 저장 어레이가 메모리 어드레스와 연관된 데이터를 저장하고 있는지를 결정하기 위해 제어기(125)와 유사한 동작들을 수행한다. 만일 그렇다면, 그것들은 데이터를 계층에서 다음 상위 레벨에서의 캐시에 제공하고, 이어 이를 데이터가 저장 어레이(116)에 저장을 위해 제어기(115)에 제공될 때까지 다음 상위 레벨 캐시에 제공하는 등등을 행한다. 캐시가 메모리 어드레스와 연관된 데이터를 저장하고 있지 않다면 그것은 캐시 미스를 나타내고 요구 요청을 다음 상위 레벨에서의 캐시에 제공한다. 이에 따라 요구 요청은 데이터가 캐시에 위치된 것으로 결정될 때까지 혹은 LN 캐시(106)에 도달할 때까지 메모리 계층(145)을 횡단한다. 저장 어레이(136)가 메모리 어드레스와 연관된 데이터를 저장하고 있지 않은 것으로 제어기(135)가 결정하면, 그것은 메모리 어드레스를 메모리(150)에 제공한다. 이에 응답하여, 메모리(150)는 메모리 계층(145) 위로 L1 캐시(104)까지 횡단을 위해 제어기(135)에 데이터를 제공한다.
일부 실시예들에서, 캐시들(104-106) 각각은 요구 요청에 응답하여 캐시로부터 제공되는 데이터를 다음 상위 레벨에 저장한다. 하위 레벨 캐시들은 일반적으로 상위 레벨 캐시들보다 더 큰 용량(예를 들면 더 많은 저장 셀)을 가지며 따라서 더 많은 데이터를 저장할 수 있다. 일부 실시예들에서, 캐시들(104-106)의 제어기들은 상이한 정책들을 구현할 수 있고, 이에 의해 캐시는 데이터를 그것의 저장 어레이에 저장함이 없이 데이터를 다음 상위 레벨에 제공할 수 있다. 예를 들면, 각 요구 요청은 우선순위 레벨과 같은 요구 요청의 유형을 나타내는 필드를 포함할 수 있고, 캐시들(104-106)의 제어기들은 요구 요청의 우선순위 레벨에 기초하여, 요구 요청에 응답하여 저장 어레이들 중 어느 저장 어레이가 데이터를 저장할 것인지를 결정할 수 있다.
프로세서 코어(110)는 로드/저장 유닛(111)에 의해 발행된 요구 요청들을 분석하고 분석에 기초하여 데이터에 대한 프리페치 요청을 발행하는 프리페처(prefetcher)(112)를 포함한다. 프리페치 요청은 요구 요청과 유사하지만, 그러나 나중에 프로세서 코어(110)에서 실행되는 명령들에 의해 요청될 것으로 예상되는 데이터에 기초하여 추측적 동작으로서 발생된다. 본원에 더 기술되는 바와 같이, 프리페치 요청은 프리페치 요청에 의해 표적이 된 데이터가 메모리 계층(145) 위로 이동되게 한다. 따라서, 데이터가 예상된 바와 같이 요청된다면, 데이터는 계층에서 프로세서 코어(110)에 더 가까워지고, 그렇게 함으로써 액세스 레이턴시를 감소시킨다.
프리페치 요청들은 L1 캐시(104)에 제공되고 요구 요청들과 유사한 방식으로 메모리 계층(145)에 의해 이행될 수 있다. 예시를 위해서, 각각의 프리페치 요청은 프리페치 요청에 의해 표적이 된 데이터의 메모리 위치를 나타내는 메모리 어드레스를 포함한다. 프리페치 요청은 요구 요청들과 유사한 방식으로 메모리 계층(145)을 횡단할 수 있고, 이에 의해 프리페치 요청에 의해 표적이 된 데이터는 L1 캐시(104)에 저장될 때까지 계층 위로 전달된다. 이하 더 기술되는 바와 같이, 일부 프리페치 요청들에 대해, 프리페치 요청에 의해 표적이 된 데이터는 줄곧 L1 캐시까지 전달되는 것이 아니라, L2 캐시(105)와 같은, 메모리 계층(145)의 하위 레벨에 까지만 전달된다. 이것은 본원에 더 기술되는 바와 같이, 캐시 자원들이 부족할 때 프로세서(102)가 요구 요청들의 이행을 더 효율적으로 관리할 수 있게 한다.
요구 요청 또는 프리페치 요청은 캐시가 계층에서의 다음 하위 레벨 캐시로부터 요구 요청 또는 프리페치 요청에 대한 응답을 기다리고 있다면 이 캐시에 관하여 "펜딩"이라 칭한다. 이에 따라, 예를 들면, L1 캐시(104)가 요구 요청에 응답하여 데이터를 제공하기 위해 L2 캐시(105)를 기다리고 있다면, 요구 요청은 L1 캐시에서 펜딩이라 칭한다. 요구 요청에 응답하는 데이터가 메모리 계층(145)에서 어디에 위치되어 있는지에 따라 한 주어진 요구 요청 또는 프리페치 요청들이 하나보다 많은 캐시들(104-106)에 펜딩하고 있을 수 있음이 인식될 것이다. 캐시들(104-106)은 캐시에 펜딩하는 요구 요청들 또는 프리페치 요청들이 있어도, 캐시들(104-106) 각각이 다른 요구 요청들 또는 프리페치 요청들에 응답하는 것을 포함하여, 다른 동작들을 수행할 수 있다는 점에서 논-블록킹 캐시들로서 구성된다.
캐시들(104-106)의 논-블록킹 속성을 구현하기 위해, 프로세서(102)는 미스된 어드레스 버퍼(MAB)(130)를 포함한다. MAB(130)는 슬롯(165)과 같은 복수의 슬롯들을 포함하고, 이에 의해 각각의 슬롯은 캐시들(104-106) 중 하나에서 펜딩하는 대응하는 요구 요청 또는 프리페치 요청을 나타내는 정보를 저장할 수 있다. 프로세서(102)는 캐시가 그것의 할당된 슬롯들 중 하나에 펜딩 요구 요청 또는 펜딩 프리페치 요청에 대한 정보만을 저장할 수 있도록, MAB(130)에서의 대응하는 세트의 슬롯들을 캐시들(104-106) 각각에 할당한다. 도 1의 예시된 예에서, 각각의 슬롯은 그것이 할당되는 대응하는 캐시로 표기되었다.
예시를 위해서, 메모리 계층(145)의 캐시에서 캐시 미스를 결정하는 것에 응답하여, 캐시의 제어기는 그것의 할당된 세트에서 캐시 미스를 야기하였던 요구 요청 또는 프리페치 요청에 대한 정보를 저장할 임의의 가용한 슬롯들을 찾는다. 그것이 캐시에서 펜딩하고 있는 또 다른 요구 요청 또는 프리페치 요청에 대한 정보를 저장하고 있지 않다면 슬롯은 가용한 것으로 결정된다. 캐시 제어기는 캐시 미스를 야기하였던 요구 요청에 대한 정보를 가용한 슬롯에 저장한다. MAB(130)에 서의 캐시에 할당되는 마지막 가용한 슬롯이 일단 요구 요청 또는 프리페치 요청에 대한 정보로 채워졌다면, 캐시는 메모리 계층(145)의 다음 상위 레벨에서의 캐시에, 추가의 요구 요청들 또는 프리페치 요청들을 수용할 수 없음을 표시한다. 캐시에 제공되고 있는 펜딩 요구 또는 프리페치 요청에 응답하는 데이터에 응답하여, 캐시의 제어기는 MAB(130)에서의 대응하는 슬롯을 가용하게 하고, 추가의 요구 요청들 또는 프리페치 요청들을 수용할 수 있음을 메모리 계층(145)의 다음 상위 레벨에 표시한다.
일부 경우들에 있어, MAB(130)에서의 캐시의 할당된 슬롯들을 너무 많은 수의 펜딩 프리페치 요청들에 의해 사용될 수 있게 하는 것은 프로세서 코어(110)에서의 처리 효율을 감소시킬 수 있다. 예를 들면, 일부 경우들에서 요구 요청들의 이행에 프리페치 요청의 이행보다 캐시들(104-106)에서의 더 높은 우선순위가 주어진다면 처리 효율이 향상된다. 따라서, 캐시들(104-106)은 슬롯이 펜딩 요구 요청에 대한 정보를 저장하기 위해 가용해질 가능성을 증가시키기 위해 MAB(130)를 관리할 수 있다. 예를 들면, 일부 실시예들에서 L1 캐시(104)에 대한 제어기(115)는 캐시(104)에 할당된 MAB(130)에서 가용한 슬롯들의 충만도를 모니터한다. 슬롯들의 충만도가 임계값 미만이라면, 제어기(115)는 L1 캐시(104)에 수신되는 프리페치 요청들이 L2 캐시(105)에 전달되게 하는 정책을 구현한다. 프리페치 요청을 전달하는 것에 응답하여, 제어기(115)는 프리페치 요청을 나타내는 정보를 MAB(130)에서의 그것의 할당된 슬롯들 중 하나에 저장하지 않는다. 그렇게 함으로써, 수신된 요구 요청들에 대해 더 많은 수의 가용한 슬롯들이 확보되어 처리 효율을 향상시킨다.
본원에서 사용되는 바와 같이, 버퍼에 한 세트의 슬롯들의 충만도는 세트에 저장된 요구 요청들의 수, 혹은 세트에 저장된 프리페치 요청들의 수, 혹은 이들의 조합을 확인 또는 아니면 나타내는 임의의 파라미터를 참조한다. 한 세트의 슬롯들의 충만도는 다수의 방법들로 결정될 수 있다. 예를 들면, 충만도는 한 세트의 슬롯들의 가용한 슬롯들의 수를 세트 내 총 슬롯들의 수에서 감함으로써 결정될 수 있다. 일부 실시예들에서 충만도는 프리페치 요청들을 나타내는 정보를 저장하는 세트의 슬롯들의 수와 같거나 이에 기초한다. 일부 실시예들에서 충만도는 요구 요청들을 나타내는 정보를 저장하는 세트의 슬롯들의 수와 프리페치 요청들을 나타내는 정보를 저장하는 세트의 슬롯들의 수 간의 차이와 같거나 이에 기초한다. 일부 실시예들에서 충만도는 요구 요청 정보를 저장하는 슬롯의 대 프리페치 요청 정보를 저장하는 슬롯들의 비와 같거나 이에 기초한다.
전달된 프리페치 요청을 수신하는 것에 응답하여, L2 캐시(105)는 비-전달된 프리페치 요청과 유사하게 전달된 프리페치 요청을 처리하는데, 그러나 전달된 프리페치 요청에 응답하는 데이터를 L1 캐시(104)에 제공하지 않는다. 예시를 위해서, 전달된 프리페치 요청을 수신하는 것에 응답하여, L2 캐시(105)는 저장 어레이(126)가 프리페치 요청의 메모리 어드레스와 연관된 데이터를 저장하고 있는지를 결정한다. 만일 그렇다면, 그것은 데이터를 L1 캐시(104)에는 제공하지만, 그것을 저장 어레이(126)에 유지한다. 저장 어레이(126)가 프리페치 요청 메모리 어드레스와 연관된 데이터를 저장하고 있지 않다면, 제어기(125)는 프리페치 요청을 나타내는 정보를 MAB(130)에 저장한다. 또한, 제어기(125)는 프리페치 요청을 계층에서 다음 하위 레벨에서의 캐시에 제공한다. 이에 응답하여, L2 캐시(105)는 종국에 메모리 계층(145)에서의 하위 레벨로부터 프리페치 요청 메모리 어드레스와 연관된 데이터를 수신한다. 제어기(125)는 수신된 데이터를 저장 어레이(126)에 저장하지만, 그것을 L1 캐시(104)에 제공하지 않는다. 이에 따라, 프리페치 요청에 의해 표적이 된 데이터는 메모리 계층(145)에서 프로세서 코어(110)에 더 가깝게 이동되고, 그렇게 함으로써 데이터가 나중에 요구 요청의 주체라면 레이턴시를 감소시킨다. 그러나, 프리페치 데이터는 줄곧 L1 캐시(104)에 제공되지 않아, 요구 요청들의 이행을 위해 L1 캐시(104)에 더 많은 여지를 제공한다.
일부 실시예들에서, 프리페치 요청은 MAB(130)에서의 가용한 슬롯들의 임계보다 큰 레벨을 갖는 캐시에 도달할 때까지 메모리 계층(145) 아래로 계속하여 전달될 수 있다. 예를 들면, L2 캐시(105)가 전달된 프리페치 요청을 수신한다면, 제어기(125)는 MAB(130)에서의 가용한 슬롯들의 임계 레벨보다 더 큰 레벨을 갖는지를 결정할 수 있다. 그렇지 않다면, 그것은 프리페치 요청을 L3 캐시에 전달할 수 있다. 메모리 계층(145)에서의 상이한 캐시들은 가용한 슬롯들의 상이한 임계 수들에 기초하여 프리페치 요청들을 전달할 수 있다.
일부 실시예들에서, 캐시(104-106)는 프리페치 요청들의 신뢰도 레벨에 기초하여 프리페치 요청들을 전달할 수 있다. 특히, 각각의 프리페치 요청은 프리페치 요청에 의해 표적이 된 데이터가 임계 시간량 내에 프로세서 코어(110)에 의해 요청되어질 예측된 가능성을 나타내는 신뢰도 값을 가질 수 있다. 프리페치 요청에 대한 신뢰도 레벨이 임계 미만인 것에 응답하여, 캐시는 프리페치 요청을 메모리 계층(145)에서의 다음 하위 레벨 캐시에 전달할 수 있다. 이것은 덜 요청되어질 것으로 예측되는 프리페치된 데이터가 메모리 계층(145)의 상위 레벨들에서의 공간을 소비하지 않음을 보증한다. 일부 실시예들에서, 캐시들(104-106)은 프리페치 요청들의 신뢰도 레벨 및 MAB(130)에서의 캐시들의 대응하는 슬롯들의 충만도의 조합에 기초하여 프리페치 요청들을 전달할 수 있다. 예를 들면, 캐시(104)는 MAB(130)에서의 그것의 슬롯들이 50% 보다 많이 차고 프리페치 요청의 신뢰도 레벨이 40% 미만인 것에 응답하여 프리페치 요청들을 전달할 수 있고, MAB가 35% 보다 많이 차고 프리페치 요청의 신뢰도 레벨이 60% 미만인 것에 응답하여 프리페치 요청을 전달할 수 있다.
도 2는 일부 실시예들에 따라 프리페치 요청을 나타내는 프리페치 정보(200)의 블록도이다. 프리페치 정보(200)는 다음 레벨 프리페치(NLP; next level prefetch) 필드(202), 신뢰도 필드(204), 및 어드레스 필드(206)를 포함한다. 어드레스 필드(206)는 프리페치 정보(200)에 의해 나타내어지는 프리페치 요청에 의해 표적이 된 데이터의 메모리 어드레스를 표시한다. NLP 필드(202)는 프리페치 요청이 메모리 계층(145)(도 1)에서의 다른 캐시에 전달될 것인지 여부를 표시한다. NLP 필드는 프리페치 요청이 전달되어졌는지를 결정하고 이에 따라 프리페치 요청에 응답하는 데이터를 메모리 계층(145)에서의 다음 상위 레벨 캐시에 전달할지 여부를 결정하기 위해 캐시 제어기들에 의해 사용된다. 예시를 위해서, 프리페치 요청을 수신하는 것에 응답하여, L2 캐시(105)(도 1)의 제어기(125)는 프리페치 요청의 NLP 필드(202)가 프리페치 요청이 전달되어졌음을 나타내는지를 결정한다. 그렇지 않다면, L2 캐시(105)는 프리페치 요청(저장 어레이(126)로부터 인출되었는지 아니면 메모리 계층(145)에서 또 다른 캐시로부터 수신되었는지 여부)에 응답하는 데이터를 L1 캐시(104)에 제공한다. NLP 필드(202)가 프리페치 요청이 전달된 프리페치 요청임을 나타낸다면, L2 캐시(105)는 프리페치 요청에 응답하는 데이터를 저장 어레이(126)에 저장하지만, 프리페치 요청에 응답하는 데이터를 L1 캐시(104)에 제공하지 않는다. 프리페치 요청의 NLP 필드(202)는 요청이 L1 캐시(104)에 할당된 슬롯들이 임계 충만도를 초과한다는 결정에 응답하여 제어기(115)에 의한 전달임을 나타내기 위해 설정된다.
프리페치 정보(200)의 신뢰도 필드(204)는 연관된 프리페치 요청의 신뢰도 레벨을 표시한다. 신뢰도 필드(204)의 값은 프리페처가 프리페치 요청을 발행할 때 프리페처(112)에 의해 설정된다. 프리페처(112)는 로드/저장 유닛(111)에 의해 발행되는 요구 액세스들의 패턴에 기초하여 신뢰도 필드(204)의 값을 설정한다. 예시를 위해, 일부 실시예들에서 프리페처(112)는 특정한 패턴에 대한 신뢰도 레벨을 처음으로 그 패턴을 검출한 것에 응답하여 초기값으로 설정한다. 프리페처(122)는 다시 패턴을 검출할 때마다 신뢰도 레벨을 최대값까지 증가시키며, 패턴의 부분을 검출하지만 패턴의 모두가 뒤따르는 것은 아님을 검출할 때마다 신뢰도 레벨을 감소시킨다. 예를 들면, 프리페처(122)는 메모리 어드레스 A에서의 데이터에 대한 요구 요청("요구 요청 A"라 함)이 메모리 어드레스 B에서의 데이터에 대한 요구 요청("요구 요청 B"라 함)에 의해 밀접하게 이어진 것을 검출할 수 있다. 이에 응답하여, 프리페처(122)는 액세스 패턴(패턴 A-B라 함)에 대한 신뢰도 레벨을 001의 초기값으로 설정한다. 패턴 A-B의 또 다른 인스턴스를 검출하는 것에 응답하여, 프리페처(122)는 신뢰도 레벨을 010까지 증가시킨다. 프리페처(122)는 패턴 A-B의 추가 인스턴스들을 검출하는 것에 응답하여 신뢰도 레벨을 계속하여 증가시킨다. 그러나, 요구 요청 A를 검출하고 요구 요청 A가 이에 요구 요청 B에 의해 밀접하게 뒤따르지 않음을 검출하는 것에 응답하여, 프리페처(122)는 신뢰도 레벨을 감소시킨다.
액세스 패턴에 대한 신뢰도 레벨이 임계를 초과하는 것에 응답하여, 프리페처(112)는 패턴에서 다음 요구 요청에 의해 표적이 된 데이터에 대한 프리페치 요청을 발행한다. 이에 따라, 상기 예에서, 일단 패턴 A-B에 대한 신뢰도 레벨이 임계 레벨을 초과하면, 프리페처(122)는 요구 요청 A의 인스턴스를 검출하는 것에 응답하여 메모리 어드레스 B에 데이터에 대한 프리페치 요청을 발행한다. 프리페치 요청에 대해서, 프리페처(122)는 신뢰도 필드(204)를 액세스 패턴와 연관된 현재의 신뢰도 레벨로 설정한다. 이에 따라, 패턴 A-B에 대한 신뢰도 레벨이 011이라면, 프리페처는 신뢰도 필드(204)를 값 011로 설정할 것이다.
메모리 계층(145)의 제어기는 프리페치 요청을 전달할지를 결정하기 위해 신뢰도 필드(204)의 값을 사용할 수 있다. 예시를 위해, L1 캐시(104)에서의 제어기(115)는 011 미만의 신뢰도 값과 연관된 임의의 프리페치 요청이 L2 캐시(105)에 전달되게 하는 정책을 구현할 수 있다. 따라서, 011 미만의 값을 가진 신뢰도 필드(204)를 갖는 프리페치 요청을 수신한 것에 응답하여, 제어기(115)는 프리페치 요청이 전달됨을 나타내기 위해 프리페치 정보(200)의 NLP 필드(202)를 설정하고 프리페치 요청을 L2 캐시(105)에서의 제어기(125)에 제공한다.
도 3은 일부 실시예들에 따라 도 1의 프로세서(102)의 메모리 계층(145)에 프리페치 요청들의 전달을 예시하는 타임라인(300)이다. 타임라인(300)은 한 세트의 이벤트들, 및 MAB(130)에서의 L1 캐시(104)에 할당되는 한 세트(315)의 슬롯들의 결과적인 내용들을 예시한다. 도 1의 예의 목적들을 위해, L1 캐시(104)의 제어기(115)는 세트(315)의 가용 슬롯들의 수가 2 미만이라면 프리페치 요청이 L2 캐시(105)에 전달되게 하는 정책을 구현하는 것으로 가정한다.
시간(301)에서 제어기(115)는 "요구1"이라 표시된 요구 요청을 로드/저장 유닛(111)으로부터 수신한다. 이에 응답하여, 제어기(115)는 캐시 미스를 검출하고 따라서 요구1을 나타내는 정보를 MAB(130)에서의 한 세트(315)의 슬롯들에 저장한다. 시간(302)에서 제어기(115)는 "프리페치1" 이라 표시된 프리페치 요청을 프리페처(112)로부터 수신하고 프리페치 1이 캐시 미스를 초래한 것으로 결정한다. 캐시 미스에 응답하여 제어기(115)는 세트(315)의 슬롯들의 수가 2와 같음을 결정하고 따라서 프리페치 1을 나타내는 정보를 세트(315)에 저장한다.
시간(303)에서 제어기(115)는 "프리페치2"라 표시된 프리페치 요청을 프리페처(112)로부터 수신하고 프리페치 2가 캐시 미스를 초래함을 결정한다. 캐시 미스에 응답하여 제어기(115)는 세트(315)의 슬롯들의 수가 2 미만인 것으로 결정한다. 따라서, 제어기(115)는 전달된 요청을 나타내기 위해 프리페치 2에 대한 NLP 필드(도 2)를 설정함으로써 프리페치 2를 전달하고 프리페치 2를 L2 캐시(105)에 제공한다. 시간(304)에서 제어기(115)는 "요구2"라 표시된 요구 요청을 로드/저장 유닛(111)으로부터 수신한다. 이에 응답하여, 제어기(115)는 캐시 미스를 검출하고 요구2를 나타내는 정보를 슬롯들의 세트(315)에 저장한다. 이에 따라, 프리페치 2가 전달되지 않았더라면, 세트(315)의 마지막 슬롯은 프리페치 2에 의해 채워졌을 것이고, 그렇게 함으로써 로드/저장 유닛(111)이 강제로 요구2를 스톨(stall)하게 하거나 프리페치 요청들 프리페치1 또는 프리페치2 중 어느 하나를 상쇄하게 한다. 따라서, 프리페치2를 전달함으로써, 공간이 요구2에 대해 세트(315)에서 가용하여, 스톨을 방지하고, 프리페치2에 응답하는 데이터는 메모리 계층에서 프로세서(102)에 더 가깝게 이동된다.
시간(305)에서 제어기(115)는 요구1 및 프리페치1이 이들 요청들에 의해 표적이 된 데이터가 저장 어레이(116)에 저장된 점에서 이행되어진 것으로 결정한다. 이에 응답하여, 제어기(115)는 요구1 및 프리페치1로부터 정보를 슬롯들의 세트(315)로부터 제거하여, 이들의 두 슬롯들이 후속 요구 또는 프리페치 요청들에 가용하게 한다. 시간(306)에서 제어기(115)는 "프리페치3"이라 표시된 프리페치 요청을 프리페처(112)로부터 수신하고 프리페치 3이 캐시 미스를 초래하는 것으로 결정한다. 캐시 미스에 응답하여 제어기(115)는 세트(315)의 슬롯들의 수가 2이고, 따라서 프리페치3을 나타내는 정보를 저장하기 위한 세트(315)에서 가용한 공간이 존재하는 것으로 결정한다. 그러나, 제어기(115)는 프리페치 3에 대한 신뢰도 레벨이 임계값 미만인 것으로 결정한다. 따라서, 제어기(115)는 전달된 요청을 나타내기 위해 프리페치 3에 대한 NLP 필드를 설정함으로써 프리페치 3을 전달하고 프리페치2를 L2 캐시(105)에 제공한다. 이에 따라 제어기(115)는 세트(315)에서 가용한 슬롯을 소비하지 않으며, 프리페치 요청은 낮은 신뢰도 값을 가진다. 따라서, 슬롯은 처리 효율을 더 양호하게 향상시킬 것으로 예측되는 후속 요구 요청들 또는 프리페치 요청들에 대해 가용하다.
도 4는 일부 실시예들에 따라 MAB의 충만도에 기초하여 메모리 계층에 프리페치 요청을 전달하는 방법(400)의 흐름도이다. 용이한 논의를 위해서, 방법(400)은 도 1의 전자장치(100)에서의 예시적 구현에 관하여 설명된다. 블록(402)에서 L1 캐시(104)에서의 제어기(115)는 프리페치 요청을 수신한다. 블록(404)에서 제어기(115)는 L1 캐시(104)에 할당되는 MAB(130)에서의 슬롯들의 충만도가 L1 캐시(104)에 대한 임계를 초과하는지를 결정한다. 그렇지 않다면, 방법 흐름은 블록(406)으로 진행하고 제어기(115)는 프리페치 요청을 나타내는 정보를 MAB(130)에서의 가용한 슬롯에 저장한다.
블록(404)으로 돌아가서, L1 캐시(104)에 할당되는 MAB(130)에서의 슬롯들의 충만도가 L1 캐시(104)에 대한 임계를 초과하는 것으로 제어기(115)가 결정한다면, 방법 흐름은 블록(408)으로 진행하고, 여기서 제어기(115)는 그것이 메모리 계층(145)에서의 최저 캐시인지를 결정한다. 만일 그렇다면, 방법 흐름은 블록(412)으로 이동하고 제어기는 프리페치 요청이 이행될 수 없음을 프리페처(122)에 표시한다. 블록(408)으로 돌아가서, 캐시 N에 도달되지 않았다면, 방법 흐름은 블록(410)으로 진행하고 제어기(115)는 프리페치 요청을 메모리 계층(145)에서의 다음 하위 레벨 캐시-이 경우, L2 캐시(105)-에 전달한다. 방법 흐름은 블록(404)으로 돌아가고, 메모리 계층에서의 다음 하위 레벨 캐시는 MAB(130)에서의 그 할당된 슬롯들의 충만도가 대응하는 임계를 초과하는지를 결정한다.
따라서, 방법(400) 하에서, 프리페치 요청은 MAB(130)에서의 그 할당된 슬롯들의 충만도가 대응하는 임계를 초과하지 않는 캐시에 도달할 때까지, 혹은 방법(400)이 프리페치 요청이 블록(412)에서 이행될 수 없음을 표시할 때까지 하위 레벨 캐시에 계속하여 전달된다. 프리페치 요청이 MAB(130)에서의 그 할당된 슬롯들의 충만도가 대응하는 임계를 초과하지 않는 캐시에 도달하면, 방법(400)의 흐름은 블록(406)에 도달할 것이고 프리페치 요청을 나타내는 정보는 캐시에 할당되는 MAB(130)의 슬롯에 저장된다. 또한, 캐시의 제어기는 프리페치 요청에 의해 표적이 된 데이터가 그것의 대응하는 저장 어레이에 저장되나, 메모리 계층(145)에서의 다음 상위 레벨 캐시에 제공되지 않음을 보증한다.
도 5는 일부 실시예들에 따라 프리페치 신뢰도 레벨에 기초하여 도 1의 프로세서의 메모리 계층에 프리페치 요청을 전달하는 방법(500)의 흐름도이다. 용이한 논의를 위해서, 방법(500)은 도 1의 전자장치(100)에서의 예시적 구현에 관하여 기술된다. 블록(502)에서 L1 캐시(104)에서의 제어기(115)는 프리페치 요청을 수신한다. 블록(504)에서 제어기(115)는 프리페치 요청의 신뢰도 레벨이 L1 캐시(104)에 대한 임계 미만인지를 결정한다. 그렇지 않다면, 방법 흐름은 블록(506)으로 진행하고 제어기(115)는 MAB(130)에서의 가용한 슬롯에 프리페치 요청을 나타내는 정보를 저장한다.
블록(504)으로 돌아가서, 프리페치 요청의 신뢰도 레벨이 L1 캐시(104)에 대한 임계보다 더 높은 것으로 제어기(115)가 결정하면, 방법 흐름은 블록(508)으로 진행하고, 여기서 제어기(115)는 그것이 메모리 계층(145)에서의 최저 캐시인지를 결정한다. 만일 그렇다면, 방법 흐름은 블록(512)으로 이동하고 제어기는 프리페치 요청이 이행될 수 없음을 프리페처(122)에 표시한다. 블록(508)으로 돌아가서, 캐시 N에 도달되지 않았다면, 방법 흐름은 블록(510)으로 진행하고 제어기(115)는 프리페치 요청을 메모리 계층(145)에서의 다음 하위 레벨 캐시-이 경우, L2 캐시(105)-에 전달한다. 방법 흐름은 블록(504)으로 돌아가고, 메모리 계층에서의 다음 하위 레벨 캐시는 프리페치 요청의 신뢰도 레벨이 대응하는 임계 미만인지를 결정한다.
따라서, 방법(500) 하에서, 프리페치 요청은 프리페치 요청의 신뢰도 레벨이 대응하는 임계를 초과하는 캐시에 도달할 때까지, 또는 방법(500)이 프리페치 요청이 블록(512)에서 이행될 수 없음을 표시할 때까지 하위 레벨 캐시에 계속하여 전달된다. 프리페치 요청이 신뢰도 레벨이 대응하는 임계를 초과하지 않는 캐시에 도달한다면, 방법(500)의 흐름은 블록(506)에 도달할 것이며 프리페치 요청을 나타내는 정보는 캐시에 할당되는 MAB(130)의 슬롯에 저장된다. 또한, 캐시의 제어기는 프리페치 요청에 의해 표적이 된 데이터가 그것의 대응하는 저장 어레이에 저장되나, 메모리 계층(145)에서의 다음 상위 레벨 캐시에 제공되지 않음을 보증한다. 도 4 및 도 5에 예시된 방법들은 일부 프리페치 요청들이 MAB(130)에서의 캐시의 할당된 슬롯들의 충만도에 기초하여 전달되고 다른 것들은 이들의 프리페치 신뢰도 레벨에 기초하여 전달되도록, 조합될 수 있음이 인식될 것이다.
일부 실시예들에서, 상기 설명된 기능의 적어도 일부는 컴퓨터 판독가능 매체에 실체적으로 저장된 하나 이상의 소프트웨어 프로그램들을 실행하는 하나 이상의 프로세서들에 의해 구현될 수 있고, 이에 의해 하나 이상의 소프트웨어 프로그램들은 실행될 때 상기 설명된 처리 시스템의 하나 이상의 기능을 수행하기 위해 하나 이상의 프로세서들을 조작하는 명령들을 포함한다. 또한, 일부 실시예들에서, 상기 설명된 직렬 데이터 인터페이스들은 하나 이상의 집적회로(IC) 장치들(집적회로 칩들이라고도 함)로 구현된다. 전자 설계 자동화(EDA; electronic design automation) 및 컴퓨터 이용 설계(CAD; computer aided design) 소프트웨어 툴들은 이들 IC 장치들의 설계 및 제작에서 사용될 수 있다. 이들 설계 툴들은 전형적으로 하나 이상의 소프트웨어 프로그램들로서 표현된다. 하나 이상의 소프트웨어 프로그램들은 회로를 제작하기 위해 제조 시스템을 설계 또는 개조하기 위해 프로세스의 적어도 일부를 수행하기 위해 하나 이상의 IC 장치들의 회로를 표현하는 코드에 동작하도록 컴퓨터 시스템을 조작하기 위한, 컴퓨터 시스템에 의해 실행될 수 있는 될 수 있는 코드를 포함한다. 이 코드는 명령, 데이터, 또는 명령들 및 데이터의 조합을 포함할 수 있다. 설계 툴 또는 제작 툴을 나타내는 소프트웨어 명령들은 전형적으로 계산 시스템이 액세스할 수 있는 컴퓨터 판독가능 저장 매체에 저장된다. 마찬가지로, IC 장치의 설계 또는 제작의 하나 이상의 국면들을 나타내는 코드는 동일 컴퓨터 판독가능 저장 매체 또는 상이한 컴퓨터 판독가능 저장 매체에 저장되거나 이로부터 액세스될 수 있다.
컴퓨터 판독가능 저장 매체는 명령들 및/또는 데이터를 컴퓨터 시스템에 제공하기 위한 사용 동안 컴퓨터 시스템에 의해 액세스될 수 있는, 임의의 저장 매체, 또는 저장 매체의 조합을 포함할 수 있다. 이러한 저장 매체는 광학 매체(예를 들면, 콤팩트 디스크(CD), 디지털 다기능 디스크(DVD), 또는 블루-레이 디스크), 자기 매체(예를 들면, 플로피 디스크, 자기 테이프, 또는 자기 하드 드라이브), 휘발성 메모리(예를 들면, 랜덤 액세스 메모리(RAM) 또는 캐시), 비-휘발성 메모리(예를 들면, 판독-전용 메모리(ROM) 또는 플래시 메모리), 또는 마이크로전기화학 시스템(MEMS)-기반 저장 매체를 포함할 수 있으나, 그러나 이들로 제한되지 않는다. 컴퓨터 판독가능 저장 매체는 계산 시스템(예를 들면, 시스템 RAM 또는 ROM)에 내장되거나, 계산 시스템(예를 들면, 자기 하드 드라이브)에 고정적으로 부착되거나, 계산 시스템(예를 들면, 광학 디스크 또는 유니버설 직렬 버스(USB)-기반 플래시 메모리)에 착탈가능하게 부착되거나, 유선 또는 무선 네트워크(예를 들면, 네트워크 액세스가능 저장장치(NAS; network accessible storage))를 통해 컴퓨터 시스템에 결합될 수 있다.
도 6은 일부 실시예들에 따라 하나 이상의 측면을 구현하는 IC 장치의 설계 및 제작을 위한 예시적 방법(600)을 예시하는 흐름도이다. 위에 언급된 바와 같이, 다음 프로세스들 각각을 위해 발생되는 코드는 대응하는 설계 툴 또는 제작 툴에 의한 액세스 및 사용을 위한 컴퓨터 판독가능 저장 매체에 저장되거나 그외 구현된다.
블록(602)에서 IC 장치를 위한 기능 명세가 발생된다. 기능 명세(마이크로 아키텍처 명세(MAS; micro architecture specification)이라고도 함)는 C, C++, 시스템C, 시뮤링크(Simulink), 또는 MATLAB을 포함하여, 다양한 프로그래밍 언어들 또는 모델링 언어들 중 임의의 언어에 의해 표현될 수 있다.
블록(604)에서, 기능 명세는 IC 장치의 하드웨어를 나타내는 하드웨어 설명 코드를 발생하기 위해 사용된다. 일부 실시예들에서, 하드웨어 설명 코드는 IC 장치의 회로들의 공식 설명 및 설계를 위한 다양한 컴퓨터 언어들, 명세 언어들, 또는 모델링 언어들 중 임의의 언어를 포함하는, 적어도 하나의 하드웨어 설명 언어(HDL; Hardware Description Language)를 사용하여 표현된다. 발생된 HDL 코드는 전형적으로, IC 장치의 회로들의 동작, 회로들의 설계 및 구성, 및 시뮬레이션을 통해 IC 장치의 올바른 동작을 검증하는 테스트들을 나타낸다. HDL의 예들은 아날로그 HDL(AHDL), 베릴로그(Verilog) HDL, 시스템 베릴로그 HDL, 및 VHDL을 포함한다. 합성된 디지털 회로들을 구현하는 IC 장치들에 대해서, 하드웨어 디스크립터 코드는 동기 디지털 회로들의 동작들을 나타내는 개요를 제공하기 위해 레지스터 전달 레벨(RTL; register transfer level) 코드를 포함할 수 있다. 다른 유형들의 회로에 대해서, 하드웨어 디스크립터 코드는 회로의 동작을 나타내는 개요를 제공하기 위한 행동-레벨 코드를 포함할 수 있다. 하드웨어 설명 코드에 의해 표현되는 HDL 모델은 전형적으로, 설계 검증을 통과하기 위한 하나 이상의 시뮬레이션 및 디버깅 라운드들의 대상이 된다.
하드웨어 설명 코드에 의해 표현되는 설계를 검증한 후에, 블록(606)에서 합성 툴은 IC 장치의 회로의 초기 물리 구현을 표현 또는 정의하는 코드를 발생하기 위한 하드웨어 설명 코드를 합성하기 위해 사용된다. 일부 실시예들에서, 합성 툴은 회로 장치 인스턴스들 간에 회로 장치 인스턴스들(예를 들면, 게이트들, 트랜지스터들, 저항기들, 커패시터들, 인덕터들, 다이오드들 등) 및 네트들(nets), 또는 연결들을 포함하는 하나 이상의 네트리스트들을 발생한다. 대안적으로, 네트리스트 전부 또는 일부는 합성 툴의 사용 없이 수동으로 발생될 수 있다. 하드웨어 설명 코드와 같이, 네트리스트들은 최종 세트의 하나 이상의 네트리스트들이 발생되기 전에 하나 이상의 테스트 또는 검증 프로세스들의 대상이 될 수 있다.
대안적으로, 도식적인 편집 툴은 IC 장치의 회로의 도식을 드래프트하기 위해 사용될 수 있고, 이어 도식적인 캡처 툴은 결과적인 회로도를 캡처하기 위해서, 그리고 회로도의 구성요소들 및 연결성을 나타내는 하나 이상의 네트리스트들(컴퓨터 판독가능 매체 상에 저장된)을 발생하기 위해 사용될 수 있다. 캡처된 회로도는 이어 테스트 및 검증을 위한 시뮬레이션의 하나 이상의 라운드들의 대상이 될 수 있다.
블록(608)에서, 하나 이상의 EDA 툴들은 IC 장치의 회로의 물리적 레이아웃을 나타내는 코드를 발생하기 위해 블록(906)에서 생성되는 네트리스트를 사용한다. 이 프로세스는 예를 들면, IC 장치의 회로의 각 요소의 위치를 결정하거나 고정시키기 위해 네트리스트들을 사용하는 배치 툴을 포함할 수 있다. 또한, 라우팅 툴은 네트리스트(들)에 따라 회로 요소들을 연결하기 위해 필요한 와이어들을 추가하거나 라우팅하기 위해 배치 프로세스 상에 구축한다. 결과적인 코드는 IC 장치의 3차원 모델을 나타낸다. 코드는 예를 들면, 그래픽 데이터베이스 시스템 II(GDSII) 포맷과 같은 데이터베이스 파일 포맷으로 나타내어질 수 있다. 이 포맷의 데이터는 전형적으로, 계층 형태로 회로 레이아웃에 관한 기하학적 형상들, 텍스트 라벨들, 및 그외 다른 정보를 나타낸다.
블록(610)에서, 물리적 레이아웃 코드(예를 들면, GDSII 코드)는 제조 설비에 제공되고, 이것은 IC 장치를 제작하기 위한 제조 설비(예를 들면, 마스크 작업들을 통해)의 제작 툴을 구성 또는 그외 개조하기 위해 물리적 레이아웃 코드를 사용한다. 즉, 물리적 레이아웃 코드는 하나 이상의 컴퓨터 시스템에 프로그램될 수 있고, 이어 이것은 제조 설비의 툴들의 동작 또는 본원에서 수행되는 제조 동작들을 전체적으로 혹은 부분적으로 제어할 수 있다.
일부 실시예들에서, 상기 설명된 기술들의 어떤 측면들은 소프트웨어를 실행하는 처리 시스템의 하나 이상의 프로세서들에 의해 구현될 수 있다. 소프트웨어는 하나 이상의 프로세서들에 의해 실행될 때 상기 설명된 기술들의 하나 이상의 측면들을 수행하기 위해 하나 이상의 프로세서들을 조작하는 하나 이상의 세트의 실행될 수 있는 명령들을 포함한다. 소프트웨어는 처리 시스템에 액세스할 수 있는 컴퓨터 판독가능 저장 매체 상에 저장되거나 그외 실체적으로 구현되며, 대응하는 측면들을 수행하기 위한 명령들의 실행 동안 이용되는 명령들 및 어떤 데이터를 포함할 수 있다.
본원에 개시되는 바와 같이, 일부 실시예들에서 방법은 제1 캐시에서 캐시 미스들을 나타내는 어드레스들을 버퍼에서의 제1 세트의 슬롯들에 저장하는 단계; 및 제1 세트의 슬롯들의 충만도가 제1 임계를 초과한다는 결정에 응답하여, 제1 캐시에 표적이 된 제1 프리페치 요청을 제2 캐시에 전달하는 단계를 포함한다. 일부 구현들에서, 제1 세트의 슬롯들의 충만도를 결정하는 단계는, 펜딩 메모리 액세스 요청들과 연관된 어드레스들을 저장하는 제1 세트의 슬롯들에서의 슬롯들의 수를 결정하는 단계를 포함한다. 일부 구현들에서, 제1 세트의 슬롯들의 충만도를 결정하는 단계는 프리페치 요청들을 저장하는 제1 세트의 슬롯들의 슬롯들의 수를 결정하는 단계를 포함한다. 일부 구현들에서, 제1 세트의 슬롯들의 충만도를 결정하는 단계는 프리페치 요청들을 저장하는 제1 세트의 슬롯들의 슬롯들의 수 대 요구 요청들을 저장하는 제1 세트의 슬롯들의 슬롯들의 수의 비를 결정하는 단계를 포함한다. 일부 구현들에서, 방법은 제2 캐시에서의 캐시 미스들에 응답하여 제2 세트의 슬롯들에서의 어드레스들을 버퍼에 저장하는 단계를 포함한다. 일부 구현들에서, 제1 프리페치 요청을 제2 캐시에 전달하는 단계는 제1 프리페치 요청과 연관된 어드레스를 제2 세트의 슬롯들에 저장하는 단계를 포함한다. 일부 구현들에서, 방법은 제2 세트의 슬롯들의 충만도가 제2 임계를 초과한다는 결정에 응답하여, 제1 프리페치 요청을 제3 캐시에 전달하는 단계를 포함한다. 일부 구현들에서, 제1 임계는 제2 임계와는 상이하다. 일부 구현들에서, 방법은 제1 캐시에 표적이 된 제2 프리페치 요청과 연관된 신뢰도 레벨이 제2 임계 미만이라는 결정에 응답하여, 제1 캐시로부터 제2 프리페치 요청을 제2 캐시에 전달하는 단계를 포함한다.
일부 실시예들에서, 방법은 제1 캐시에 표적이 된 제1 프리페치 요청과 연관된 제1 신뢰도 레벨이 제1 임계 미만이라는 결정에 응답하여, 제1 캐시로부터 제1 프리페치 요청을 제2 캐시에 전달하는 단계를 포함한다. 일부 구현들에서, 방법은 제1 신뢰도 레벨이 제2 임계 미만이라는 결정에 응답하여, 제2 캐시로부터 제1 프리페치 요청을 제3 캐시에 전달하는 단계를 포함한다. 일부 구현들에서, 제1 프리페치 요청을 제2 캐시에 전달하는 단계는 제1 캐시에서의 캐시 미스들에 응답하여 그리고 제2 캐시에서의 캐시 미스들에 응답하여 어드레스들을 저장하는 버퍼의 제1 세트의 슬롯들에 제1 프리페치 요청을 저장하는 단계를 포함하고, 제1 세트의 슬롯들은 제2 캐시에 할당된다. 일부 구현들에서, 방법은 버퍼의 제2 세트의 슬롯들의 가용한 슬롯들의 수가 제2 임계 미만이라는 결정에 응답하여 제1 캐시에 표적이 된 제2 프리페치 요청을 제2 캐시에 전달하는 단계를 포함한다.
일부 실시예들에서, 프로세서는 액세스 요청들을 발행하는 프로세서 코어; 제1 캐시; 제2 캐시; 제1 캐시에의 캐시 미스들에 기초하여 제1 캐시에 할당되는 제1 세트의 슬롯들에 어드레스들을 저장하기 위한 버퍼로서, 상기 캐시 미스들은 액세스 요청으로부터 비롯되는, 버퍼; 제1 캐시에 프리페치 요청들을 발행하는 프리페처; 및 버퍼에서의 제1 세트의 슬롯들의 충만도가 제1 임계를 초과한다는 결정에 응답하여 제1 캐시로부터 제1 프리페치 요청을 제2 캐시에 전달하는 제어기를 포함한다. 일부 구현들에서, 제어기는 제1 세트의 슬롯들의 가용 불가한 슬롯들의 수를 결정함으로써 제1 세트의 슬롯들의 충만도를 결정한다. 일부 구현들에서, 제어기는 프리페치 요청들을 저장하는 제1 세트의 슬롯들의 슬롯들의 수를 결정함으로써 제1 세트의 슬롯들의 충만도를 결정한다. 일부 구현들에서, 제어기는 프리페치 요청들을 저장하는 제1 세트의 슬롯들의 슬롯들의 수 대 요구 요청들을 저장하는 제1 세트의 슬롯들의 슬롯들의 수의 비를 결정함으로써 제1 세트의 슬롯들의 충만도를 결정한다. 일부 구현들에서, 버퍼는 제2 캐시에서의 캐시 미스들을 결정한 것에 응답하여 제2 세트의 슬롯들에 어드레스들을 저장한다. 일부 구현들에서, 제어기는 제1 프리페치 요청을 제2 세트의 슬롯들에 저장함으로써 제1 프리페치 요청을 제2 캐시에 전달하는 것이다. 일부 구현들에서, 프로세서는 제3 캐시를 포함하고; 제어기는 제2 세트의 슬롯들의 충만도가 제2 임계를 초과한다는 결정에 응답하여 제1 프리페치 요청을 제3 캐시에 전달하는 것이다. 일부 구현들에서, 제1 임계는 제2 임계와는 상이하다. 일부 구현들에서, 프리페처는 제2 프리페치 요청에 대한 신뢰도 레벨을 결정하며; 제어기는 신뢰도 레벨이 제2 임계 미만인 것으로 결정한 것에 응답하여 제1 캐시로부터 제2 프리페치 요청을 제2 캐시에 전달한다.
일부 실시예들에서, 컴퓨터 판독가능 매체는, 액세스 요청들을 발행하는 프로세서 코어; 제1 캐시; 제2 캐시; 액세스 요청들에 응답하여, 제1 캐시에 대한 캐시 미스들에 기초하여 제1 캐시에 할당된 제1 세트의 슬롯들에 어드레스들을 저장하기 위한 버퍼; 제1 캐시에 대한 프리페치 요청들을 발행하는 프리페처; 및 버퍼에서의 제1 세트의 슬롯들의 충만도가 제1 임계 초과인 것으로 결정한 것에 응답하여 제1 캐시로부터 제1 프리페치 요청을 제2 캐시에 전달하는 제어기를 포함하는 프로세서의 적어도 부분을 제작하기 위한 프로세스의 일부를을 수행하도록 적어도 하나의 컴퓨터 시스템을 개조하는 코드를 저장한다. 일부 구현들에서, 프리페처는 제2 프리페치 요청에 대한 신뢰도 레벨을 결정하며; 제어기는 신뢰도 레벨이 제2 임계 미만인 것으로 결정한 것에 응답하여 제1 캐시로부터 제2 프리페치 요청을 제2 캐시에 전달한다. 일부 구현들에서, 제어기는 프리페치 요청들을 저장하는 제1 세트의 슬롯들의 슬롯들의 수 대 요구 요청들을 저장하는 제1 세트의 슬롯들의 슬롯들의 수의 비를 결정함으로써 제1 세트의 슬롯들의 충만도를 결정한다.
일반적인 설명에서 상기 설명된 동작들 또는 요소들 모두가 요구되는 것은 아니며, 특정 동작 또는 장치의 일부는 요구되지 않을 수도 있고, 하나 이상의 추가의 동작들이 수행되거나, 설명된 것들에 더하여 요소들이 포함될 수 있음에 유의한다. 또한, 동작들이 열거되는 순서는 반드시 이들이 수행되는 순서인 것은 아니다.
또한, 개념들은 특정 실시예들을 참조하여 설명되었다. 그러나, 당업자는 이하 청구항들에 제시된 본 발명의 범위 내에서 다양한 수정들 및 변경들이 행해질 수 있음을 인식한다. 따라서, 명세서 및 도면들은 제약의 의미가 아니라 예시로 간주되어야 하고, 모든 이러한 수정들은 본 발명의 범위 내에 포함되도록 의도된다.
이익들, 다른 이점들, 및 문제들에 대한 해결책들은 특정 실시예들에 관하여 위에서 설명되었다. 그러나, 이익들, 다른 이점들, 문제들에 대한 해결책들, 및 임의의 이익, 잇점, 또는 해결책이 일어나게 하거나 더 확연해지게 하는 임의의 특징(들)은 임의의 혹은 모든 청구항들의 결정적인, 요구되는, 또는 필수적인 특징으로서 해석되지 않아야 한다.

Claims (15)

  1. 제1 캐시(204)에서의 캐시 미스들(cache misses)을 나타내는 어드레스들을 버퍼(165)에서의 제1 세트의 슬롯들에 저장하는 단계; 및
    상기 제1 세트의 슬롯들의 충만도가 제1 임계를 초과한다는 결정에 응답하여(404), 상기 제1 캐시에 표적이 되는 제1 프리페치 요청을 제2 캐시(105)에 전달하는 단계(410)를 포함하는, 방법.
  2. 청구항 1에 있어서,
    상기 제1 세트의 슬롯들의 상기 충만도를 결정하는 단계는, 펜딩(pending) 메모리 액세스 요청들에 연관된 어드레스들을 저장하는 상기 제1 세트의 슬롯들에서의 슬롯들의 수를 결정하는 것을 포함하는, 방법.
  3. 청구항 1에 있어서,
    상기 제1 세트의 슬롯들의 상기 충만도를 결정하는 단계는 프리페치 요청들을 저장하는 상기 제1 세트의 슬롯들의 슬롯들의 수를 결정하는 것을 포함하는, 방법.
  4. 청구항 1에 있어서,
    상기 제1 세트의 슬롯들의 상기 충만도를 결정하는 단계는 프리페치 요청들을 저장하는 상기 제1 세트의 슬롯들의 슬롯들의 수 대 요구 요청들을 저장하는 상기 제1 세트의 슬롯들의 슬롯들의 수의 비를 결정하는 것을 포함하는, 방법.
  5. 청구항 1에 있어서,
    상기 제2 캐시에서의 캐시 미스들에 응답하여 제2 세트의 슬롯들에서의 어드레스들을 상기 버퍼에 저장하는 단계를 더 포함하는, 방법.
  6. 청구항 5에 있어서,
    상기 제1 프리페치 요청을 상기 제2 캐시에 전달하는 단계는 상기 제1 프리페치 요청에 연관된 어드레스를 상기 제2 세트의 슬롯들에 저장하는 단계를 포함하는, 방법.
  7. 청구항 5에 있어서,
    상기 제2 세트의 슬롯들의 충만도가 제2 임계를 초과한다는 결정에 응답하여, 상기 제1 프리페치 요청을 제3 캐시(106)에 전달하는 단계를 더 포함하는, 방법.
  8. 청구항 7에 있어서,
    상기 제1 임계는 상기 제2 임계와는 상이한, 방법.
  9. 청구항 1에 있어서,
    상기 제1 캐시에 표적이 되는 제2 프리페치 요청에 연관된 신뢰도 레벨이 제2 임계 미만이라는 결정에 응답하여(504), 상기 제1 캐시로부터 상기 제2 프리페치 요청을 상기 제2 캐시에 전달하는 단계(510)를 더 포함하는, 방법.
  10. 액세스 요청들을 발행하는 프로세서 코어(110);
    제1 캐시(104);
    제2 캐시(105);
    상기 제1 캐시에 대한 캐시 미스들에 기초하여 상기 제1 캐시에 할당되는 제1 세트의 슬롯들에 어드레스들을 저장하기 위한 버퍼(130)로서, 상기 캐시 미스들은 액세스 요청들로부터 비롯되는, 상기 버퍼;
    상기 제1 캐시에 대한 프리페치 요청들을 발행하는 프리페처(112); 및
    상기 버퍼에 상기 제1 세트의 슬롯들의 충만도가 제1 임계 초과라는 결정에 응답하여(410) 상기 제1 캐시로부터 제1 프리페치 요청을 상기 제2 캐시에 전달하는 제어기(115)를 포함하는, 프로세서.
  11. 청구항 10에 있어서,
    상기 제어기는 상기 제1 세트의 슬롯들의 가용 불가한 슬롯들의 수를 결정함으로써 상기 제1 세트의 슬롯들의 상기 충만도를 결정하는, 프로세서.
  12. 청구항 10에 있어서,
    상기 제어기는 프리페치 요청들을 저장하는 상기 제1 세트의 슬롯들의 슬롯들의 수를 결정함으로써 상기 제1 세트의 슬롯들의 상기 충만도를 결정하는, 프로세서.
  13. 청구항 10에 있어서,
    상기 제어기는 프리페치 요청들을 저장하는 상기 제1 세트의 슬롯들의 슬롯들의 수 대 요구 요청들을 저장하는 상기 제1 세트의 슬롯들의 슬롯들의 수의 비를 결정함으로써 상기 제1 세트의 슬롯들의 상기 충만도를 결정하는, 프로세서.
  14. 청구항 10에 있어서,
    상기 버퍼는 상기 제2 캐시에서의 캐시 미스들을 결정한 것에 응답하여 제2 세트의 슬롯들에 어드레스들을 저장하는 것인, 프로세서.
  15. 청구항 14에 있어서,
    상기 제어기는 상기 제1 프리페치 요청을 상기 제2 세트의 슬롯들에 저장함으로써 상기 제1 프리페치 요청을 상기 제2 캐시에 전달하는 것인, 프로세서.
KR1020157014676A 2012-11-06 2013-11-05 버퍼 충만도에 기초한 캐시에 대한 프리페치 KR101973731B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/669,502 2012-11-06
US13/669,502 US8909866B2 (en) 2012-11-06 2012-11-06 Prefetching to a cache based on buffer fullness
PCT/US2013/068433 WO2014074489A1 (en) 2012-11-06 2013-11-05 Prefetching to a cache based on buffer fullness

Publications (2)

Publication Number Publication Date
KR20150082457A true KR20150082457A (ko) 2015-07-15
KR101973731B1 KR101973731B1 (ko) 2019-04-29

Family

ID=49627073

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157014676A KR101973731B1 (ko) 2012-11-06 2013-11-05 버퍼 충만도에 기초한 캐시에 대한 프리페치

Country Status (7)

Country Link
US (1) US8909866B2 (ko)
EP (1) EP2917840B1 (ko)
JP (1) JP6105742B2 (ko)
KR (1) KR101973731B1 (ko)
CN (1) CN104769560B (ko)
IN (1) IN2015DN03878A (ko)
WO (1) WO2014074489A1 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9749414B2 (en) * 2013-08-29 2017-08-29 International Business Machines Corporation Storing low retention priority data in a dispersed storage network
US9811467B2 (en) * 2014-02-03 2017-11-07 Cavium, Inc. Method and an apparatus for pre-fetching and processing work for procesor cores in a network processor
US9959506B1 (en) * 2014-06-17 2018-05-01 Amazon Technologies, Inc. Predictive content retrieval using device movements
US9558127B2 (en) * 2014-09-09 2017-01-31 Intel Corporation Instruction and logic for a cache prefetcher and dataless fill buffer
US9934149B2 (en) 2016-03-31 2018-04-03 Qualcomm Incorporated Prefetch mechanism for servicing demand miss
US10509732B2 (en) * 2016-04-27 2019-12-17 Advanced Micro Devices, Inc. Selecting cache aging policy for prefetches based on cache test regions
US10073785B2 (en) * 2016-06-13 2018-09-11 Advanced Micro Devices, Inc. Up/down prefetcher
US10353819B2 (en) * 2016-06-24 2019-07-16 Qualcomm Incorporated Next line prefetchers employing initial high prefetch prediction confidence states for throttling next line prefetches in a processor-based system
CN106487711B (zh) * 2016-10-13 2020-02-21 福建星海通信科技有限公司 一种缓存动态分配的方法以及系统
CN108446240A (zh) * 2016-12-12 2018-08-24 中国航空工业集团公司西安航空计算技术研究所 基于缓存单元id的存储管理电路
US10776043B2 (en) * 2018-08-31 2020-09-15 Arm Limited Storage circuitry request tracking
WO2020102998A1 (zh) * 2018-11-20 2020-05-28 华为技术有限公司 一种删除内存中索引项的方法、装置
WO2021066687A1 (en) * 2019-10-02 2021-04-08 Telefonaktiebolaget Lm Ericsson (Publ) Entities, system and methods performed therein for handling memory operations of an application in a computer environment
US20210182214A1 (en) * 2019-12-17 2021-06-17 Advanced Micro Devices, Inc. Prefetch level demotion
JP2022107377A (ja) * 2021-01-08 2022-07-21 富士通株式会社 情報処理装置、コンパイル方法、及びコンパイルプログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060224860A1 (en) * 2005-04-01 2006-10-05 Stmicroelectronics, Inc. Apparatus and method for supporting execution of prefetch threads
US20090037663A1 (en) * 2006-02-28 2009-02-05 Fujitsu Limited Processor equipped with a pre-fetch function and pre-fetch control method
US20100306477A1 (en) * 2009-05-28 2010-12-02 Luttrell Mark A Store prefetching via store queue lookahead

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6065110A (en) * 1998-02-09 2000-05-16 International Business Machines Corporation Method and apparatus for loading an instruction buffer of a processor capable of out-of-order instruction issue
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
US6029294A (en) * 1998-07-23 2000-02-29 Saringer Research Inc. Mechanism for generating wave motion
JP3512678B2 (ja) * 1999-05-27 2004-03-31 富士通株式会社 キャッシュメモリ制御装置および計算機システム
US6571318B1 (en) 2001-03-02 2003-05-27 Advanced Micro Devices, Inc. Stride based prefetcher with confidence counter and dynamic prefetch-ahead mechanism
US20040103251A1 (en) * 2002-11-26 2004-05-27 Mitchell Alsup Microprocessor including a first level cache and a second level cache having different cache line sizes
US20060143401A1 (en) * 2004-12-27 2006-06-29 Jacob Doweck Method and apparatus for prefetching based on cache fill buffer hits
US7908236B2 (en) * 2006-07-20 2011-03-15 International Business Machines Corporation Using multiple data structures to manage data in cache
US7484042B2 (en) * 2006-08-18 2009-01-27 International Business Machines Corporation Data processing system and method for predictively selecting a scope of a prefetch operation
JP5444889B2 (ja) * 2009-06-30 2014-03-19 富士通株式会社 演算処理装置および演算処理装置の制御方法
CN101634970B (zh) * 2009-08-26 2011-09-07 成都市华为赛门铁克科技有限公司 预取长度调整方法、装置和存储系统
US8856451B2 (en) 2010-08-26 2014-10-07 Advanced Micro Devices, Inc. Method and apparatus for adapting aggressiveness of a pre-fetcher
US8880847B2 (en) * 2010-09-28 2014-11-04 Texas Instruments Incorporated Multistream prefetch buffer

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060224860A1 (en) * 2005-04-01 2006-10-05 Stmicroelectronics, Inc. Apparatus and method for supporting execution of prefetch threads
US20090037663A1 (en) * 2006-02-28 2009-02-05 Fujitsu Limited Processor equipped with a pre-fetch function and pre-fetch control method
US20100306477A1 (en) * 2009-05-28 2010-12-02 Luttrell Mark A Store prefetching via store queue lookahead

Also Published As

Publication number Publication date
EP2917840A1 (en) 2015-09-16
JP6105742B2 (ja) 2017-03-29
EP2917840B1 (en) 2018-12-26
US8909866B2 (en) 2014-12-09
IN2015DN03878A (ko) 2015-10-02
CN104769560A (zh) 2015-07-08
US20140129772A1 (en) 2014-05-08
KR101973731B1 (ko) 2019-04-29
CN104769560B (zh) 2017-04-12
WO2014074489A1 (en) 2014-05-15
JP2016509272A (ja) 2016-03-24

Similar Documents

Publication Publication Date Title
KR101973731B1 (ko) 버퍼 충만도에 기초한 캐시에 대한 프리페치
US9223705B2 (en) Cache access arbitration for prefetch requests
US10671535B2 (en) Stride prefetching across memory pages
US20140108740A1 (en) Prefetch throttling
US9606806B2 (en) Dependence-based replay suppression
US9483273B2 (en) Dependent instruction suppression in a load-operation instruction
US8583894B2 (en) Hybrid prefetch method and apparatus
CN103823722B (zh) 基于请求类型的选择性后置数据错误检测
US9304919B2 (en) Detecting multiple stride sequences for prefetching
US9256544B2 (en) Way preparation for accessing a cache
US20150363116A1 (en) Memory controller power management based on latency
US9697146B2 (en) Resource management for northbridge using tokens
US9367310B2 (en) Stack access tracking using dedicated table
US9292292B2 (en) Stack access tracking
US20240126457A1 (en) Dynamic Allocation of Cache Memory as RAM
CN104460938B (zh) 利用存储器高速缓存在系统范围内节省电力的方法和系统
US20140115257A1 (en) Prefetching using branch information from an instruction cache
US20160378667A1 (en) Independent between-module prefetching for processor memory modules
US20160117247A1 (en) Coherency probe response accumulation
US20140164708A1 (en) Spill data management
US11704245B2 (en) Dynamic allocation of cache memory as RAM
US9529720B2 (en) Variable distance bypass between tag array and data array pipelines in a cache
WO2023033955A1 (en) Dynamic allocation of cache memory as ram

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant