KR102465851B1 - 캐시 엔트리에서 메모리 액세스 요청의 펜던시를 식별하기 위한 시스템 및 방법 - Google Patents

캐시 엔트리에서 메모리 액세스 요청의 펜던시를 식별하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR102465851B1
KR102465851B1 KR1020197001278A KR20197001278A KR102465851B1 KR 102465851 B1 KR102465851 B1 KR 102465851B1 KR 1020197001278 A KR1020197001278 A KR 1020197001278A KR 20197001278 A KR20197001278 A KR 20197001278A KR 102465851 B1 KR102465851 B1 KR 102465851B1
Authority
KR
South Korea
Prior art keywords
cache
data
memory
entry
pending
Prior art date
Application number
KR1020197001278A
Other languages
English (en)
Other versions
KR20190019157A (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 KR20190019157A publication Critical patent/KR20190019157A/ko
Application granted granted Critical
Publication of KR102465851B1 publication Critical patent/KR102465851B1/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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • 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
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host 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/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching 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
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/281Single cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device
    • 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/608Details relating to cache mapping
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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

프로세싱 시스템[100]은, 메모리 액세스 요청에 응답하여 데이터를 저장하기 위해 할당되는 캐시 엔트리에서, 데이터에 대한 메모리 액세스 요청[102]의 펜던시를 표시한다. 명령어를 실행하면서, 프로세서는 프로세서에 가장 근접한 캐시[140]로 데이터에 대한 요청을 발행한다. 캐시 미스에 응답하여, 캐시 컨트롤러는 메모리 요청에 응답하여 데이터를 저장하기 위해, 캐시의 엔트리[245]를 식별하고, 메모리 액세스 요청이 식별된 캐시 엔트리에서 펜딩 중이라는 표시[147]를 저장한다. 메모리 액세스 요청이 더 높은 레벨의 메모리 계층에서 펜딩 중인 동안, 캐시 컨트롤러는 데이터에 대한 이후의 메모리 액세스 요청을 수신한다면, 캐시 컨트롤러는, 엔트리에 저장된 표시자에 기초하여, 메모리 액세스 요청이 펜딩 중이라고 식별한다.

Description

캐시 엔트리에서 메모리 액세스 요청의 펜던시를 식별하기 위한 시스템 및 방법
관련 분야의 설명
프로세서에서 명령어의 실행을 지원하기 위해, 프로세싱 시스템은, 실행 명령어에 의해 액세스될 데이터를 저장하기 위한 메모리 모듈로 구성된 메모리 서브시스템을 전형적으로 포함한다. 프로세싱 효율성을 촉진시키기 위해, 메모리 서브시스템은 메모리 계층 내로 조직화될 수 있는데, 이러한 메모리 계층은, 계층의 탑에, 실행 명령어에 의해 액세스될 수 있는 모든 데이터를 저장하기 위한 주 메모리 및 더 낮은 레벨에, 주 메모리에 저장된 데이터의 서브세트를 저장하기 위한 메모리 계층의 하나 이상의 캐시를 가진다. 프로세싱 효율성을 더욱 향상시키기 위해, 프로세싱 시스템은, 하나 이상의 캐시 컨트롤러를 통해, 주 메모리에서 하나 이상의 더 낮은 레벨의 메모리로 데이터의 페칭을 지배하는 메모리 관리 프로토콜을 실행할 수 있다. 예를 들어, 프로세서에 의해 요구되는 데이터가 메모리 계층의 캐시에서 발견되지 않는다면("캐시 미스"라고 함), 캐시 컨트롤러는 상이한 캐시로부터, 또는 주 메모리로부터와 같이, 메모리 계층의 상이한 레벨로부터 데이터를 불러오기 위해, 메모리 액세스 요청을 발행한다.
프로세서 자원을 낭비할 수 있는, 메모리 계층의 주어진 레벨로부터 동일한 데이터에 대해 복수의 메모리 액세스 요청의 발행을 방지하기 위해, 캐시 컨트롤러는 버퍼 내에 펜딩 메모리 액세스 요청의 주제인 데이터의 각각의 유닛에 대응되는 메모리 어드레스를 저장한다. 동일한 데이터에 대한 이후의 요청이 캐시 컨트롤러로 제시될 때, 데이터가 메모리 계층의 대응 레벨에 존재하지 않는다고 결정하면, 캐시 컨트롤러는 전형적으로 버퍼를 쿼리하여, 요청되는 데이터의 메모리 어드레스가 거기에 저장되는지를 결정한다. 요청된 데이터에 대한 주 메모리 어드레스가 메모리 버퍼 내에 존재하면, 데이터에 대한 요청이 이미 펜딩 중인 것을 나타내고, 캐시 컨트롤러는 데이터에 대한 추가적인 요청을 발행하지 않을 것이다. 그러나, 메모리 버퍼는 비교적 많은 양의 공간을 요하고, 비교적 많은 양의 전력을 소비할 수 있다.
본 개시물은, 첨부 도면을 참조함에 의해, 기술 분야의 통상의 기술자에게 명백한 여러 특징과 이점이 더 잘 이해될 것이다. 상이한 도면 내의 동일한 참조 부호의 사용은 유사하거나 동일한 아이템을 표시한다.
도 1은 일부 실시예에 따른, 메모리 액세스 요청에 응답하여, 데이터를 저장하기 위한 캐시 엔트리에서 메모리 액세스 요청의 펜던시의 표시를 기록하는 프로세싱 시스템의 블록도이다.
도 2는 일부 실시예에 따른, 캐시 엔트리에 미스 태그를 저장하고, 메모리 액세스 요청의 펜던시를 표시하기 위해, 펜딩 미스 버퍼 내의 캐시 엔트리 태그를 저장하는 도 1의 프로세싱 시스템의 예시의 블록도이다.
도 3은 일부 실시예에 따른, 캐시 엔트리에서 미스 태그를 식별함에 기초하여, 데이터에 대한 메모리 액세스 요청의 펜던시를 식별하고 수신하는 도 1의 프로세싱 시스템의 예시의 블록도이다.
도 4는 일부 실시예에 따른, 주 메모리로부터 데이터를 페치(fetching)하고, 펜딩 미스 버퍼로부터의 캐시 엔트리 태그에 의해 표시된 캐시 엔트리에서 데이터를 저장하는 도 1의 프로세싱 시스템의 예시의 블록도이다.
도 5는 일부 실시예에 따른, 도 1의 펜딩 미스 버퍼에 저장된 캐시 엔트리 태그의 예시의 블록도이다.
도 6은 일부 실시예에 따른, 도 1의 프로세서에 의해 사용되는 미스 태그의 예시의 블록도이다.
도 7은 일부 실시예에 따른, 캐시 엔트리에서 메모리 액세스 요청의 펜던시를 표시하는 방법의 순서도이다.
도 1-7은 메모리 액세스 요청에 응답하여, 데이터를 저장하기 위해 할당되는 캐시 엔트리에서, 데이터에 대한 메모리 액세스 요청의 펜던시를 표시함에 의해, 메모리 관리 효율성을 개선하기 위한 테크닉을 나타낸다. 프로세싱 시스템은 프로세서와 메모리 계층을 포함하는데, 이는 계층의 탑에 주 메모리 및 주 메모리에 저장된 데이터의 서브세트를 저장하기 위해, 메모리 계층의 더 낮은 레벨에 하나 이상의 메모리의 캐시를 포함한다. 명령어를 실행하면서, 프로세서는 프로세스에 가장 근접한 캐시로 데이터에 대한 요청을 발행한다. 캐시 미스에 응답하여, 캐시 컨트롤러는 데이터에 대한 메모리 액세스 요청을 메모리 계층의 더 높은 레벨로 발행한다. 또한, 캐시 컨트롤러는 메모리 액세스 요청에 응답하여 데이터를 저장하기 위해, 캐시의 엔트리를 식별하고, 메모리 액세스 요청이 식별된 캐시 엔트리에서 펜딩 중이라는 표시를 저장한다. 메모리 액세스 요청이 메모리 계층의 더 높은 레벨에서 펜딩 중인 동안, 캐시 컨트롤러가 데이터에 대한 이후의 메모리 액세스 요청을 수신한다면, 캐시 컨트롤러는 엔트리에 저장된 표시자에 기초하여, 메모리 액세스 요청이 펜딩 중 이라고 식별한다. 메모리 액세스 요청의 펜던시의 표시자를 저장하기 위해, 별도의 미스 어드레스 버퍼보다는, 데이터를 저장하기 위한 캐시 엔트리를 사용함에 의해, 프로세서는 회로 면적과 전력 모두를 아낄 수 있다.
예시를 통해 설명하기 위해, 프로세서의 캐시 중 하나(가령, 레벨 3(L3) 캐시)가 프로세싱 시스템의 주 메모리 바로 아래의 메모리 계층에 위치된다. L3 캐시에서 캐시 미스의 주제인 데이터가 주 메모리로부터 페치되는 시간 동안, 동일한 데이터에 대한 이후의 요청은 L3 캐시로 제시될 수 있다. 데이터에 대한 메모리 액세스 요청이 펜딩 중인 동안, 프로세서 성능을 개선하지 않으면서 시스템 자원을 소모할 수 있는, 동일한 데이터에 대한 추가적인 메모리 액세스 요청을 생성하는 것을 피하기 위해, L3 캐시의 캐시 컨트롤러는, 데이터가 주 메모리로부터 페치되는 동안, 데이터를 저장하기 위한 캐시 엔트리를 즉시 할당하고, 또한, 데이터에 대한 메모리 액세스 요청이 주 메모리에 펜딩 중이라는 표시자를 캐시 엔트리에 저장한다. 일부 실시예에서, 표시자는, 페치(fetch)될 데이터의 주 메모리 어드레스를 포함하는 미스 태그는 물론 데이터가 펜딩 메모리 액세스 요청의 주제라는 것을 나타내는 상태 정보이다. 또한, 캐시 컨트롤러는, 데이터 식별자 및 할당된 캐시 엔트리에 대한 위치 정보를 포함하는 캐시 엔트리 태그를, 버퍼와 같은 사이드 구조물 내에 저장한다.
데이터가 주 메모리로부터 페치되는 프로세스에 여전히 있는 동안, 동일한 데이터에 대한 이후의 요청이 L3 캐시에서 수신된다면, 캐시 컨트롤러는 캐시 메모리를 확인하여 데이터가 캐시 메모리에 이미 저장되는지를 결정하고, 요청된 데이터가 이미 메모리 액세스 요청의 주제인 것을 나타내는, 캐시 엔트리가 미스 태그를 저장하는지를 식별한다. 이에 응답하여, 캐시 컨트롤러는 메모리 액세스 요청을 펜딩 상태에 두어서, 캐시 엔트리에서의 데이터의 저장을 기다린다.
요청된 데이터가 주 메모리로부터 불러오면, 캐시 컨트롤러는, 데이터 식별자에 대응되는 캐시 엔트리 태그가 존재하는지를 결정하기 위해, 불러온 데이터를 위한 데이터 식별자에 대해 사이드 구조물에 쿼리한다. 데이터에 대응되는 캐시 엔트리 태그를 판독하면, 프로세싱 시스템은 캐시 엔트리 태그에 의해 표시된 캐시 엔트리에 불러온 데이터를 저장하고, 데이터가 개시 내에 이제 존재하는지를 표시하기 위한 유효 상태로 상태 정보를 업데이트한다. 또한, 캐시 컨트롤러는 데이터를 타겟팅하는 임의의 펜딩 메모리 액세스 요청을 만족한다. 그러므로, L3 캐시는 캐시 엔트리 자체를 사용하여, 별도의 버퍼보다는 메모리 액세스 요청의 펜던시의 표시자를 저장하여서, 전력과 회로 면적 모두를 아낀다.
도 1은 일부 실시예에 다른, 메모리 액세스 요청에 응답하여, 데이터를 저장하기 위한 캐시 엔트리에서 메모리 액세스 요청의 펜던시의 표시를 저장하도록 구성된 프로세싱 시스템(100)의 예시를 나타낸다. 따라서, 프로세싱 시스템(100)은 개인용 컴퓨터, 워크스테이션, 스마트폰과 같은 모바일 디바이스, 비디오 게임 콘솔, 스마트 TV 등과 같은 임의의 많은 수의 디바이스에서 사용될 수 있다. 본원에서 더욱 기술되는 바와 같이, 프로세싱 시스템(100)은 프로세서 코어(110), 하나 이상의 레벨의 캐시 메모리(가령, 캐시 메모리(140)), 캐스 컨트롤러(120), 펜딩 미스 버퍼(130) 및 주 메모리(150)를 포함한다.
프로세서 코어(110)는 컴퓨터 프로그램의 형태로 조직화된, 명령어를 실행하기 위한 하나 이상의 명령어 파이프라인을 포함하여서, 전자 디바이스를 대표하여 임무를 수행한다. 프로세서 코어(110)가, 가령 레지스터의 형태인 어떤 양의 인테그럴 메모리를 가질 수 있는데, 이러한 메모리는 전형적으로 저장 능력에서 제한된다. 따라서, 명령어를 실행하기 위해, 프로세서 코어(110)는, 하나 이상의 레벨의 캐시 메모리(본원에서는 단일 레벨의 캐시 메모리(140)로 표현됨) 및 주 메모리(150)를 포함하는, 프로세싱 시스템(100)의 메모리 계층으로부터의 데이터를 저장하고 불러온다. 특히, 명령어를 실행하는 동안에, 프로세서 코어(110)는 메모리 계층으로부터 데이터를 저장(저장 동작) 또는 로드(판독 동작)를 하기 위해, 메모리 액세스 요청(102)이라고 하는, 동작을 생성한다. 하나 이상의 레벨의 캐시 메모리(140)와 주 메모리(150)는 함께 작업하여, 본원에서 추가로 기술되는 바와 같이, 메모리 액세스 요청(102)을 만족시킨다.
캐시 메모리(140)는 프로세서 코어(110)에 의한 액세스를 위한 데이터를 저장하는 메모리 모듈이다. 적어도 하나의 실시예에서, 캐시 메모리(140)는 한 세트의 엔트리를 포함하는데, 이들 각각은 캐시 라인이라고 하는, 데이터의 관련 유닛을 저장한다. 일부 실시예에서, 하나 이상의 레벨의 캐시 메모리(140)의 각각은 세트 연상 캐시이고, 각각의 캐시는 복수의 세트로 분할된다. 각각의 세트는 복수의 데이터 위치 또는 웨이를 포함하는데, 각각의 웨이는 캐시 라인을 저장하는 캐시 엔트리에 대응된다. 각각의 세트는 메모리 어드레스의 서브세트와 관련된 캐시 라인만 저장하는데, 세트와 관련된 서브세트는 인덱스라고 하는 메모리 어드레스의 일부에 기초하여, 대응되는 캐시 컨트롤러레 의해 식별된다. 세트 관련성을 사용함에 의해, 하나 이상의 레벨의 캐시 메모리(140)는 캐시 미스와 캐시 히트의 비교적 빠른 식별이 가능하도록 한다.
캐시 컨트롤러(120)는 프로세서 코어(110)로부터 데이터에 대한 메모리 액세스 요청(102)을 수신하고, 캐시 엔트리 중 하나가 메모리 액세스 요청(102)에 의해 타겟팅된 메모리 어드레스와 관련된 캐시 라인을 저장하는지를 결정하기 위해, 캐시 메모리(140)를 검색하도록 구성된 모듈이다. 요청된 캐시 라인이 캐시 메모리(140)에서 발견되면, 캐시 히트가 발생한다. 캐시 히트의 이벤트에서, 캐시 컨트롤러(120)는, 판독 동작의 경우, 요청된 캐시 라인을 캐시 메모리(140)에서 프로세서 코어(110)로 제공하고, 라이트 동작의 경우, 라이트 데이터를 캐시 엔트리로 저장함에 의해, 메모리 액세스 요청(102)을 만족시킨다.
요청된 캐시 라인이 캐시 메모리(140)에서 발견되지 않으면, 캐시 미스가 발생한다. 캐시 메모리(140)에서 캐시 미스의 이벤트에서, 캐시 컨트롤러(120)는 메모리 액세스 요청(102)을 주 메모리(150)로 제공한다. 메모리 액세스 요청(102)에 응답하여, 주 메모리(150)는 요청(102)에 의해 타겟팅된 주 메모리 어드레스에서 캐시 라인을 불러오고, 메모리 액세스 요청(102)이 만족되는 캐시 메모리(140)로 캐시 라인을 제공한다.
일부 실시예에서, 캐시 메모리(140)는 주어진 시점에서 프로세서 코어(110)에 의해 요청되는 모든 데이터를 저장할 수 없는 크기이므로, 데이터가 상기 기술된 메모리 계층을 통해 전송되도록 한다. 캐시 미스가 발생할 때마다, 요청된 캐시 라인은 주 메모리(150)로부터 페치되어야 하고, 주 메모리에서 캐시 라인의 불러오기는 시간이 소요되며, 이 기간 동안 프로세서 코어(110)는 동일한 캐시 라인에 대해 하나 이상의 추가적인 요청을 불러올 수 있다. 캐시 라인에 대한 미해결 액세스 요청이 펜딩 중인 동안, 동일한 캐시에 대해 복수의 메모리 액세스 요청을 생성하는 것으로부터 기인할 수 있는 비효율성을 줄이기 위해, 프로세싱 시스템(100)은 캐시 메모리(140)에서 미해결 액세스 요청을 추적한다.
설명하기 위해, 동작 중에, 프로세서 코어(110)는 메모리 액세스 요청(102)을 캐시 컨트롤러(120)로 전송하고, 이는 요청된 캐시 라인에 대핸 캐시 메모리(140)를 검색한다. 요청된 캐시 라인이 캐시 메모리(140) 내에서 발견되면, 그것은 프로세서 코어(110)로 제공된다. 요청된 캐시 라인이 캐시 메모리(140) 내에서 발견되지 않으면, 캐시 컨트롤러(120)는 메모리 액세스 요청(102)을 주 메모리(150)로 제공한다.
요청된 캐시 라인이 프로세서 코어(110)에 의해 주 메모리(150)로부터 불러오는(페치) 프로세스에 있는 동안, 캐시 컨트롤러(120)는 캐시 엔트리를 페치되는 캐시 라인에 할당한다. 일부 실시예에서, 주 메모리(150)로부터 캐시 라인이 불러오기되면, 캐시 컨트롤러(120)는 캐시 라인이 저장될 캐시 세트와 웨이에 대응되는 캐시 엔트리를 할당한다. 캐시 컨트롤러(120)는, 페치되는 캐시 라인의 주 메모리 어드레스를 포함하는 미스 태그(147) 및 캐시 라인이 펜딩 캐시 미스의 주제라는 것을 나타내는 상태 비트를 캐시 엔트리에 저장한다. 또한, 캐시 컨트롤러(120)는 데이터 인덱스 및 페치되는 캐시 라인에 할당되었던 캐시 엔트리에 관한 위치 정보를 포함하는 캐시 엔트리(CE) 태그(165)를 펜딩 미스 버퍼(130) 내에 저장한다. 예를 들어, 일부 실시예에서, 캐시 컨트롤러(120)는, 데이터 인덱스 및 페치되는 캐시 라인에 캐시 메모리(140)에서 할당되었던 캐시 웨이를 포함하는 캐시 엔트리 태그(165)를 펜딩 미스 버퍼(130)에 저장한다.
펜딩 미스 버퍼(130)는 데이터 인덱스 및 미해결 액세스 요청의 주제인 캐시 라인을 저장하기 위해 캐시 컨트롤러(120)에 의해 할당되었던 캐시 엔트리에 대한 캐시 엔트리 위치 정보를 포함하는 캐시 엔트리 태그(165)를 저장하는 메모리 모듈이다. 일부 실시예에서, 펜딩 미스 버퍼(130)는, 데이터 인덱스 및 주 메모리(150)로부터 페치되는 프로세스에 있는 각각의 캐시 라인에 대해 할당되었던 캐시 웨이를 포함하는 캐시 엔트리 태그를 저장하도록 구성된다. 일부 실시예에서, 데이터 인덱스 및 할당된 캐시 웨이를 포함하는 펜딩 미스 버퍼(130) 내의 각각의 캐시 엔트리 태그는, 주 메모리(150)로부터 페치되는 프로세스에 있는 캐시 라인의 전체 주 메모리 어드레스보다 더 작다(즉, 더 적은 비트를 요함).
캐시 라인에 대한 제1 메모리 액세스 요청(102)이 여전히 주 메모리(150)로부터 수행되는 프로세스에 있는 이벤트에서, 캐시 라인에 대한 이후의 메모리 액세스 요청(104)은 프로세서 코어(110)로부터 캐시 컨트롤러(120)에 의해 수신되고, 캐시 컨트롤러(120)는, 캐시 엔트리 중 하나가 이후의 메모리 액세스 요청(104)에 의해 타겟팅된 메모리 어드레스와 관련된 캐시 라인을 포함하는지를 결정하기 위해, 캐시 메모리(140)를 검색한다. 이러한 이벤트에서, 캐시 컨트롤러(120)는 페치되는 캐시 라인의 주 메모리 어드레스 및 캐시 라인이 펜딩 캐시 미스의 주제라는 것을 나타내는 상태 비트를 캐시 엔트리에서 식별한다. 상태 비트의 그것의 판독에 기초하여, 캐시 컨트롤러는 요청된 캐시 라인에 대한 이후의 메모리 액세스 요청(104)을 주 메모리(150)로 포워딩하지 않을 것이고, 대신에, 다른 임무를 재개할 것이다.
주 메모리(150)가 요청에 의해 타겟팅된 주 메모리 어드레스에서 캐시 라인을 불러오고, 캐시 라인을 캐시 메모리(140)로 제공할 때, 캐시 컨트롤러(120)는 펜딩 미스 버퍼(130) 내에 저장된 캐시 엔트리 태그(165)에 대해, 캐시 라인의 데이터 인덱스를 비교한다. 캐시 컨트롤러는 캐시 라인의 데이터 인덱스를 저장된 캐시 엔트리 태그에 매칭하고, 캐시 엔트리 태그(165)로부터 캐시 라인을 저장하기 위해 할당되었던 캐시 메모리(140) 내의 캐시 엔트리를 판독한다. 캐시 컨트롤러(120)는 캐시 엔트리의 이전에 할당되었던 세트와 웨이에 캐시 라인을 저장하고, 상태 비트를 캐시 라인이 캐시 메모리(140) 내에 존재한다는 것을 나타내는 유효 상태로 업데이트한다.
도 2는 캐시 미스에 응답하여, 캐시 메모리(240) 내의 캐시 엔트리(245)에 미스 태그(247)를 저장하고, 캐시 엔트리 태그(265)를 생성하고, 펜딩 미스 버퍼(230) 내에 저장하는 캐시 컨트롤러(220)의 예시를 나타낸다. 캐시 컨트롤러(220)는 프로세서(미도시)로부터 캐시 라인에 대한 요청을 수신하고, 캐시 엔트리들 중 하나가 메모리 액세스 요청에 의해 타겟팅된 메모리 어드레스와 관련된 캐시 라인을 저장하는지 결정하기 위해, 캐시 메모리(240)를 검색한다. 본 예시에서, 요청된 캐시 라인은 캐시 메모리(240) 내에 존재하지 않아서, 캐시 컨트롤러(220)는 메모리 액세스 요청을 주 메모리(미도시)로 제공한다. 주 메모리로의 메모리 액세스 요청이 펜딩 중인 동안, 캐시 컨트롤러(220)는 캐시 엔트리(245)를 펜딩 메모리 액세스 요청의 주제인 캐시 라인에 할당하고, 캐시 라인의 주 메모리 어드레스를 포함하는 미스 태그(247) 및 캐시 라인이 펜딩 메모리 액세스 요청의 주제라는 것을 나타내는 상태 비트를 생성한다. 캐시 컨트롤러(220)는 캐시 메모리(240) 내의 할당된 캐시 엔트리(245)에 미스 태그(247)를 저장한다.
또한, 캐시 컨트롤러(220)는 펜딩 메모리 액세스 요청의 주제인 캐시 라인에 대한 데이터 인덱스 및 캐시 라인에 할당되었던 캐시 엔트리(245)를 포함하는 캐시 엔트리 태그(265)를 생성한다. 캐시 컨트롤러(220)는 펜딩 미스 버퍼(230) 내에 캐시 엔트리 태그(265)를 저장한다. 전형적으로, 캐시 엔트리는, 캐시 엔트리가 유효 캐시 라인으로 채워지는지 나타내는 상태 비트를 가진다. 이러한 예시에서, 캐시 엔트리(245)에 저장된 미스 태그(247)는, 미스 태그(247) 내에 저장된 주 메모리 어드레스와 관련된 데이터가 펜딩 메모리 액세스 요청의 주제인지("미스 펜딩")를 나타내는 상태 비트를 포함한다.
도 3은 일부 실시예에 따른, 펜딩 메모리 액세스 요청의 주제인 캐시 라인에 대한 캐시 컨트롤러(320)로 이후의 요청(304)을 발행하는 프로세서(310)의 예시를 나타낸다. 캐시 컨트롤러(320)는 이후의 요청(304)을 수신하고, 요청된 캐시 라인에 대한 캐시 메모리(340)를 검색한다. 캐시 컨트롤러(320)는 요청된 캐시 라인의 주 메모리 어드레스를 캐시 엔트리(345)에 j장된 미스 태그(347)에 매칭한다. 캐시 컨트롤러(320)는 미스 태그(347)의 상태 비트(미도시)를 판독하고, 요청된 캐시 라인이 이미 펜딩 메모리 액세스 요청의 주제인 요청된 캐시 라인인지를 결정한다.
요청된 캐시 라인이 이미 주 메모리(미도시)로부터 불러오기의 프로세스에 있다고 결정되면, 캐시 컨트롤러(320)는 캐시 메모리(340)의 검색 결과를, 이미 프로세서(미도시)로 복사되었던 캐시 히트로 여기고, 요청된 캐시 라인에 대한 주 메모리로 추가적인 요청을 생성하지 않으면서 다른 임무를 재개한다. 캐시 컨트롤러(320)가, 요청된 캐시 라인이 펜딩 미스의 주제인 캐시 메모리(340)의 그것의 검색으로부터 결정할 수 있기 때문에, 캐시 컨트롤러(320)는, 요청된 캐시 라인이 펜딩 미스의 주제인지를 결정하기 위해 펜딩 미스 버퍼(미도시)를 확인할 필요가 없어서, 전력을 보존한다.
도 4는, 캐시 컨트롤러(420)가 메모리 액세스 요청(402)을 주 메모리(450)로 발행하고, 데이터(460)가 주 메모리(450) 내에 저장된 주 메모리 어드레스로부터 요청된 데이터(460)를 복사하고, 및 펜딩 미스 버퍼(430) 내에 저장된 캐시 엔트리 태그(465)에 의해 표시된 캐시 메모리(440) 내의 캐시 엔트리(미도시)에 데이터(460)를 저장하는 것의 예시를 나타낸다. 메모리 액세스 요청(402)에 응답하여, 주 메모리(450)는 요청(402)에 의해 타겟팅된 주 메모리 어드레스에서 캐시 라인을 불러오고, 데이터(460)를 캐시 컨트롤러(420)로 제공한다. 캐시 컨트롤러(420)는 데이터(460)의 데이터 인덱스를 펜딩 미스 버퍼(430) 내에 저장된 캐시 엔트리 태그와 비교한다. 캐시 컨트롤러(420)가 데이터(460)의 데이터 인덱스를 캐시 엔트리 태그(465)의 인덱스에 매칭할 때, 캐시 컨트롤러(420)는 캐시 엔트리 태그(465)로부터 캐시 엔트리를 판독한다. 캐시 컨트롤러(420)는 캐시 엔트리 태그(465)에 의해 표시되었던 캐시 메모리(440) 내의 위치에 데이터(460)를 저장한다. 캐시 컨트롤러(420)는 캐시 엔트리에 엔트리의 상태 비트를, 데이터(460)가 캐시 메모리(440) 내에 존재한다는 것을 나타내는 유효 상태로 업데이트한다.
도 5는 캐시 엔트리 태그(565)의 예시를 나타낸다. 캐시 엔트리 태그(565)는 메모리 액세스 요청의 주제인 캐시 라인에 대한 데이터 인덱스(512) 및 캐시 라인에 할당된 캐시 엔트리(미도시)의 캐시 웨이(514)를 포함한다. 데이터 인덱스(512)는 캐시 라인의 주 메모리 어드레스의 서브세트를 포함하고, 전체 주 메모리 어드레스보다 짧다. 캐시 웨이(514)는 메모리 액세스 요청의 주제인 캐시 라인에 할당되어던 캐시 메모리(미도시) 내의 웨이를 포함하는데, 이는 미스 태그(미도시)에 의해 일시적으로 차지된다. 캐시 엔트리 태그(565)는 메모리 액세스 요청의 주제인 캐시 라인의 전체 주 메모리 어드레스보다 더 작다(더 적은 저장 능력을 요함).
도 6은 미스 태그(647)의 예시를 나타낸다. 전체적으로-관련된 캐시에 대해, 미스 태그(647)는 메모리 액세스 요청의 주제인 캐시 라인의 전체 주 메모리 어드레스(616) 및 상태 비트(618)를 포함하는데, 이는 주 메모리 어드레스(616)와 관련된 캐시 라인이 펜딩 미스의 주제라는 것을 나타낸다. 세트-관련된 캐시에 대해, 미스 태그(647)는 메모리 액세스 요청의 주제인 캐시 라인의 전체 주 메모리 어드레스(616)의 일부 및 상태 비트(618)를 포함하는데, 이는 주 메모리 어드레스(616)와 관련된 캐시 라인이 펜딩 미스의 주제라는 것을 나타낸다.
도 7은 이미 펜딩 메모리 액세스 요청의 주제인 데이터에 대한 이후의 메모리 액세스 요청을 다루는 방법(700)을 나타낸다. 블록(702)에서, 캐시 컨트롤러는 데이터에 대한 요청을 수신한다. 블록(704)에서, 캐시 컨트롤러는 요청된 데이터에 대한 캐시 메모리를 검색하고, 데이터가 캐시 메모리 내에 존재하는지 또는 요청된 데이터에 대한 미스 태그가 캐시 메모리 내에 존재하는지를 결정한다.
요청된 데이터와 요청된 데이터에 대한 미스 태그가 캐시 메모리 내에 존재하지 않으면, 블록(706)에서, 캐시 컨트롤러는 주 메모리로부터 요청된 데이터를 페치하기 위해, 메모리 액세스 요청을 주 메모리로 전송한다. 블록(708)에서, 캐시 컨트롤러는 캐시 엔트리를 요청된 데이터에 할당한다. 블록(710), 캐시 컨트롤러는 요청된 데이터의 주 메모리 어드레스를 포함하는 미스 태그 및 데이터가 캐시 미스의 주제라는 것을 나타내는 상태 비트를 생성하고, 캐시 엔트리에 미스 태그를 저장한다. 블록(712)에서, 캐시 컨트롤러는 요청된 데이터에 대한 인덱스를 포함하는 캐시 엔트리 태그 및 할당된 캐시 엔트리를 포함하는 캐시 엔트리 태그를 생성하고, 미스 펜딩 버퍼에 캐시 엔트리 태그를 저장한다. 블록(714)에서, 캐시 컨트롤러는 주 메모리로부터 요청된 데이터를 수신한다. 블록(716)에서, 캐시 컨트롤러는, 요청된 데이터의 데이터 인덱스를 매칭하는 캐시 엔트리 태그에 대해 미스 펜딩 버퍼를 쿼리하고, 캐시 엔트리 태그로부터 캐시 엔트리 정보를 판독한다. 블록(718)에서, 캐시 컨트롤러는 요청된 데이터를 캐시 엔트리 태그 내에서 구체화된 캐시 엔트리에 복사하고, 캐시 엔트리에 대한 상태 비트를 유효 상태로 업데이트한다.
블록(704)로 되돌아 오면, 캐시 컨트롤러가 요청된 데이터에 대한 캐시 메모리를 검색하고, 캐시 메모리가 요청된 데이터에 대응되는 미스 태그를 포함하거나 요청된 데이터를 포함한다고 결정하면, 블록(720)에서, 캐시 컨트롤러는 요청된 데이터에 대한 캐시 엔트리가 미스 태그인지 요청된 데이터인지 결정한다. 캐시 엔트리는 요청된 데이터에 대한 미스 태그를 포함한다면, 블록(722)에서, 캐시 컨트롤러는 미스 태그를 이미 프로세서에 복사되었던 캐시 히트라고 여기고, 요청된 데이터에 대한 메모리 액세스 요청에 펜딩 중인 다른 명령어를 계속 실행한다. 블록(720)에서, 요청된 데이터에 대한 캐시 엔트리가 요청된 데이터를 포함한다고 캐시 컨트롤러가 결정하면, 블록(724)에서, 캐시 컨트롤러는 요청된 데이터를 프로세서에 복사한다.
일부 실시예에서, 상기 기술된 테크닉의 어떤 양태는 소프트웨어를 실행하는 프로세싱 시스템의 하나 이상의 프로세서에 의해 실행될 수 있다. 소프트웨어는, 비일시적 컴퓨터 판독가능한 저장 매체에 저장되거나 아니면 유형적으로 구현되는, 하나 이상의 세트의 실행가능한 명령어를 포함한다. 소프트웨어는, 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서를 조작하여, 상기 기술된 테크닉의 하나 이상의 양태를 수행하는, 명령어 및 어떤 데이터를 포함한다. 가령, 비일시적 컴퓨터 판독가능한 저장 매체는 자기 또는 광학 디스크 저장 디바이스, 플래시 메모리와 같은 고체 상태 저장 디바이스, 캐시, 랜덤 액세스 메모리(RAM) 또는 다른 비휘발성 메모리 디바이스 또는 디바이스들 등을 포함한다. 비일시적 컴퓨터 판독가능한 저장 매체 상에 저장된 실행가능한 명령어는 소스 코드, 어셈블리 언어 코드, 오브젝트 코드 또는 하나 이상의 프로세서에 의해 해석되거나, 아니면 실행가능한 다른 명령어 포맷일 수 있다.
컴퓨터 판독가능한 저장 매체는 임의의 젖아 매체 또는 저장 매체의 조합물을 포함할 수 있고, 사용하는 동안 명령어 및/또는 데이터를 컴퓨터 시스템에 제공하기 위해 컴퓨터 시스템에 의해 액세스가능하다. 이러한 저장 매체는, 광학 매체(가령, 콤팩트 디스크(CD), 디지털 다기능 디스크(DVD), 블루-레이 디스크), 자기 매체(가령, 플로피 디스크, 자기 테이프 또는 자기 하드 드라이브), 휘발성 메모리(가령, 랜덤 액세스 메모리(RAM) 또는 캐시), 비휘발성 메모리(가령, 리드-온리 메모리(ROM) 또는 플래시 메모리) 또는 마이크로전자기계 시스템(MEMS)-기반 저장 매체를 포함할 수 있으나, 이에 제한되지 않는다. 컴퓨터 판독가능한 저장 매체는 컴퓨팅 시스템에 내장(가령, 시스템 RAM 또는 ROM)되거나, 컴퓨팅 시스템에 고정적으로 부착(가령, 자기 하드 드라이브)되거나, 컴퓨팅 시스템에 제거가능하게 부착(가령, 광학 디스크 또는 범용 직렬 버스(USB)-기반 플래시 메모리)되거나, 유선 또는 무선 네트워크를 통해 컴퓨터 시스템에 연결(가령, 네트워크 액세스가능한 저장소(NAS))될 수 있다.
일반적인 설명에서 상기 기술된 모든 활동이나 요소가 요구되는 것은 아니라는 점, 구체적인 활동이나 디바이스의 일부가 요구되지 않을 수 있다는 점, 및 이들 기술된 것에 추가하여, 하나 이상의 추가적인 활동이 수행되거나 요소가 포함될 수 있다는 점을 주목해야 한다. 여전히 추가적으로, 활동이 나열된 순서가 반드시 이들이 수행되는 순서는 아니다. 또한, 개념은 특정 실시예를 참조하여 기술되었다. 그러나, 기술 분야에서 당업자 중 일인은, 다양한 수정예와 변경예가 이하의 청구항에서 제시된 바와 같은 본 개시물의 범위에서 벗어나지 않으면서 이루어질 수 있다는 것을 인식한다. 이에 따라, 명세서와 도면은 제한적인 의미보다는 설명적으로 여겨져야 하고, 이러한 모든 수정예는 본 개시물의 범위 내에 포함되도록 의도된다.
이점, 그 밖의 장점 및 문제에 대한 해결책은 구체적인 실시예에 대하여 상기에 기술되었다. 그러나, 이점, 장점, 문제에 대한 해결책 및 어떠한 이점, 장점 또는 해결책이 발생하거나 좀 더 두드러지게 할 수 있는 어떠한 특징(들)은, 어떠한 또는 모든 청구항의 중요하고, 요구되거나 필수적인 특징으로 해석되지 않는다. 게다가, 본원에서 기술된 특정 실시예는, 개시된 주제가 상이하지만, 본원에서 가르치는 이점을 가진 기술 분야의 당업자에게 명백한 등가적인 방식으로 수정되고 실시될 수 있기 때문에, 오직 설명적이다. 이하의 청구항에서 기술된 것 이외에, 본원에서 도시된 구성이나 설계의 세부사항에 대한 제한이 의도되지 않는다. 그러므로, 상기에서 기술된 특정한 실시예는 바뀌거나 수정될 수 있고, 이러한 모든 변형예는 개시된 주제의 범위 내에서 고려된다는 것이 명백하다. 이에 따라, 본원에서 추구된 보호범위는 이하의 청구항에서 제시된 바와 같다.

Claims (15)

  1. 메모리 관리를 위해 프로세싱 시스템에 의해 수행되는 방법으로서, 상기 방법은,
    캐시(cache)[140]에서 데이터에 대한 제1 요청[102]에 대한 캐시 미스(cache miss)에 응답하여, 상기 데이터를 저장하기 위해 상기 캐시의 캐시 엔트리(cache entry)[245]를 할당하는 단계와;
    상기 데이터가 상이한 레벨의 메모리[150]로부터 상기 캐시로 불러오는 동안,
    상기 제1 요청이 상기 캐시에서 펜딩(pending) 중이라는 표시자(indicator)[147]를 상기 캐시 엔트리에 저장하는 단계와, 여기서 상기 표시자는, 상기 데이터의 주 메모리 어드레스(main memory address)와, 그리고 상기 데이터가 펜딩 캐시 미스(pending cache miss)의 주제(subject)라는 것을 나타내는 상태 비트(status bit)를 포함하고; 그리고
    데이터 인덱스(data index)와, 그리고 상기 캐시 엔트리의 캐시 엔트리 위치 정보(cache entry location information)를 포함하는 식별자(identifier)[165]를 버퍼(buffer)[130]에 저장하는 단계를
    포함하는 것을 특징으로 하는 메모리 관리를 위해 프로세싱 시스템에 의해 수행되는 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 방법은 또한,
    상기 데이터가 상기 캐시로 불러오는 동안, 상기 캐시에서 상기 데이터에 대한 제2 요청[104]을 수신하는 것에 응답하여, 상기 캐시 엔트리에서 상기 표시자를 판독하는 단계와; 그리고
    상기 표시자에 기초하여, 상기 제1 요청이 상기 캐시에서 펜딩 중이라는 것을 식별하는 것에 응답하여, 상기 데이터가 상기 캐시로 불러올 때까지, 상기 데이터에 대한 상기 제2 요청을 펜딩 상태에 두는 단계[722]를
    포함하는 것을 특징으로 하는 메모리 관리를 위해 프로세싱 시스템에 의해 수행되는 방법.
  4. 제1항에 있어서,
    상기 방법은 또한,
    상기 캐시에서 상기 데이터를 수신하는 것에 응답하여, 상기 캐시 내의 상기 캐시 엔트리에 상기 데이터를 저장하는 단계를
    포함하는 것을 특징으로 하는 메모리 관리를 위해 프로세싱 시스템에 의해 수행되는 방법.
  5. 제4항에 있어서,
    상기 방법은 또한,
    상기 캐시에서 상기 데이터를 수신하는 것에 응답하여, 상기 데이터를 저장하는 상기 캐시 내의 상기 캐시 엔트리를 결정하기 위해 상기 버퍼에 액세스하는 단계를
    포함하는 것을 특징으로 하는 메모리 관리를 위해 프로세싱 시스템에 의해 수행되는 방법.
  6. 제4항에 있어서,
    상기 방법은 또한,
    상기 캐시 엔트리가 유효 데이터를 저장한다는 것을 표시하기 위해, 상기 캐시 엔트리에서의 상기 표시자를 업데이트하는 단계를
    포함하는 것을 특징으로 하는 메모리 관리를 위해 프로세싱 시스템에 의해 수행되는 방법.
  7. 제1항에 있어서,
    상기 식별자는 상기 캐시 엔트리의 세트[512] 및 웨이[514]의 표시자를 포함하는 것을 특징으로 하는 메모리 관리를 위해 프로세싱 시스템에 의해 수행되는 방법.
  8. 제1항에 있어서,
    상기 식별자는 상기 데이터에 대응되는 메모리 어드레스에 기초하는 태그 값(tag value)을 포함하는 것을 특징으로 하는 메모리 관리를 위해 프로세싱 시스템에 의해 수행되는 방법.
  9. 프로세서[100]로서, 상기 프로세서는,
    캐시[140]와; 그리고
    캐시 컨트롤러(cache controller)[120]를 포함하고,
    상기 캐시 컨트롤러는,
    상기 캐시에서 데이터에 대한 제1 요청[102]에 응답하는 캐시 미스에 응답하여, 상기 데이터를 저장하기 위해 상기 캐시의 캐시 엔트리[245]를 할당하고, 그리고
    상기 데이터가 상이한 레벨의 메모리[150]로부터 상기 캐시로 불러오는 동안,
    상기 제1 요청이 상기 캐시에서 펜딩 중이라는 표시자[147]를 상기 캐시 엔트리에 저장하고, 여기서 상기 표시자는, 상기 데이터의 주 메모리 어드레스와, 그리고 상기 데이터가 펜딩 캐시 미스의 주제라는 것을 나타내는 상태 비트를 포함하고, 그리고
    데이터 인덱스와, 그리고 상기 캐시 엔트리의 캐시 엔트리 위치 정보를 포함하는 식별자[165]를 버퍼[130]에 저장하는 것을 특징으로 하는 프로세서.
  10. 삭제
  11. 제9항에 있어서,
    상기 캐시 컨트롤러는,
    상기 데이터가 상기 캐시로 불러오는 동안, 상기 캐시에서 상기 데이터에 대한 제2 요청[104]을 수신하는 것에 응답하여, 상기 캐시 엔트리에서 상기 표시자를 판독하고, 그리고
    상기 표시자에 기초하여, 상기 제1 요청이 상기 캐시에서 펜딩 중이라는 것을 식별하는 것에 응답하여, 상기 데이터가 상기 캐시로 불러올 때까지, 상기 데이터에 대한 상기 제2 요청을 펜딩 상태에 두는 것[722]을 특징으로 하는 프로세서.
  12. 제9항에 있어서,
    상기 캐시 컨트롤러는,
    상기 데이터를 수신하는 것에 응답하여, 상기 캐시 내의 상기 캐시 엔트리에 상기 데이터를 저장하는 것을 특징으로 하는 프로세서.
  13. 제12항에 있어서,
    상기 캐시 컨트롤러는,
    상기 데이터를 수신하는 것에 응답하여, 상기 데이터를 저장하는 상기 캐시 내의 상기 캐시 엔트리를 결정하기 위해 상기 버퍼에 액세스하는 것을 특징으로 하는 프로세서.
  14. 제12항에 있어서,
    상기 캐시 컨트롤러는,
    상기 캐시 엔트리가 유효 데이터를 저장한다는 것을 표시하기 위해, 상기 표시자를 업데이트하는 것을 특징으로 하는 프로세서.
  15. 제9항에 있어서,
    상기 식별자는 상기 캐시 엔트리의 세트 및 웨이의 표시자를 포함하는 것을 특징으로 하는 프로세서.
KR1020197001278A 2016-07-15 2017-07-13 캐시 엔트리에서 메모리 액세스 요청의 펜던시를 식별하기 위한 시스템 및 방법 KR102465851B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/211,547 US10922230B2 (en) 2016-07-15 2016-07-15 System and method for identifying pendency of a memory access request at a cache entry
US15/211,547 2016-07-15
PCT/US2017/041935 WO2018013813A1 (en) 2016-07-15 2017-07-13 System and method for identifying pendency of a memory access request at a cache entry

Publications (2)

Publication Number Publication Date
KR20190019157A KR20190019157A (ko) 2019-02-26
KR102465851B1 true KR102465851B1 (ko) 2022-11-11

Family

ID=60941112

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197001278A KR102465851B1 (ko) 2016-07-15 2017-07-13 캐시 엔트리에서 메모리 액세스 요청의 펜던시를 식별하기 위한 시스템 및 방법

Country Status (6)

Country Link
US (1) US10922230B2 (ko)
EP (1) EP3485381A4 (ko)
JP (1) JP7264806B2 (ko)
KR (1) KR102465851B1 (ko)
CN (1) CN109478163B (ko)
WO (1) WO2018013813A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11403035B2 (en) * 2018-12-19 2022-08-02 Micron Technology, Inc. Memory module including a controller and interfaces for communicating with a host and another memory module
US11568932B2 (en) * 2021-02-22 2023-01-31 Micron Technology, Inc. Read cache for reset read disturb mitigation

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140089600A1 (en) * 2012-09-27 2014-03-27 Apple Inc. System cache with data pending state

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6430654B1 (en) 1998-01-21 2002-08-06 Sun Microsystems, Inc. Apparatus and method for distributed non-blocking multi-level cache
US6754775B2 (en) * 2001-06-06 2004-06-22 Sun Microsystems, Inc. Method and apparatus for facilitating flow control during accesses to cache memory
KR100617663B1 (ko) * 2001-09-14 2006-08-28 썬 마이크로시스템즈, 인코포레이티드 캐시 메모리 내 태그 액세스 및 데이터 액세스의 분리방법 및 장치
US6912623B2 (en) * 2002-06-04 2005-06-28 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy
US20060015689A1 (en) 2004-07-15 2006-01-19 International Business Machines Corporation Implementation and management of moveable buffers in cache system
US20070067572A1 (en) 2005-09-19 2007-03-22 Via Technologies, Inc. Buffering missed requests in processor caches
JP4867451B2 (ja) * 2006-04-19 2012-02-01 日本電気株式会社 キャッシュメモリ装置及びそれに用いるキャッシュメモリ制御方法並びにそのプログラム
US8285926B2 (en) * 2010-05-03 2012-10-09 Oracle America, Inc. Cache access filtering for processors without secondary miss detection
JP2014186579A (ja) * 2013-03-25 2014-10-02 Sony Corp キャッシュメモリ、キャッシュメモリ制御装置、および、そのキャッシュメモリ制御方法
US9304929B2 (en) 2013-10-24 2016-04-05 Mediatek Singapore Pte. Ltd. Storage system having tag storage device with multiple tag entries associated with same data storage line for data recycling and related tag storage device
GB2537357A (en) * 2015-04-09 2016-10-19 Imagination Tech Ltd Cache operation in a multi-threaded processor
GB2538055B (en) * 2015-04-28 2017-04-19 Advanced Risc Mach Ltd Data processing apparatus having a cache
US10331561B1 (en) * 2016-06-29 2019-06-25 Emc Corporation Systems and methods for rebuilding a cache index

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140089600A1 (en) * 2012-09-27 2014-03-27 Apple Inc. System cache with data pending state

Also Published As

Publication number Publication date
JP2019525327A (ja) 2019-09-05
EP3485381A4 (en) 2020-03-25
WO2018013813A1 (en) 2018-01-18
CN109478163B (zh) 2024-03-26
KR20190019157A (ko) 2019-02-26
US20180018264A1 (en) 2018-01-18
CN109478163A (zh) 2019-03-15
JP7264806B2 (ja) 2023-04-25
US10922230B2 (en) 2021-02-16
EP3485381A1 (en) 2019-05-22

Similar Documents

Publication Publication Date Title
US10599578B2 (en) Dynamic cache bypassing
JP6630449B2 (ja) 他のキャッシュでのエントリの可用性に基づくキャッシュエントリの置換
CN111344684A (zh) 多层缓存安置机制
US20110320720A1 (en) Cache Line Replacement In A Symmetric Multiprocessing Computer
EP3485382B1 (en) System and method for storing cache location information for cache entry transfer
KR102590180B1 (ko) 자격 메타데이터를 관리하는 장치 및 방법
TW201528136A (zh) 準確預測記憶體存取之以區域爲基礎的技術
US20180113815A1 (en) Cache entry replacement based on penalty of memory access
CN108228088B (zh) 用于管理存储系统的方法和设备
KR102465851B1 (ko) 캐시 엔트리에서 메모리 액세스 요청의 펜던시를 식별하기 위한 시스템 및 방법
US8656106B2 (en) Managing unforced injections of cache lines into a cache utilizing predetermined address ranges
KR20120098068A (ko) 플래시 메모리 배드 블록 관리 장치 및 방법
US11029892B2 (en) Memory control apparatus and memory control method for swapping data based on data characteristics
US8356141B2 (en) Identifying replacement memory pages from three page record lists
US9454488B2 (en) Systems and methods to manage cache data storage
US12026099B2 (en) System and method for storing cache location information for cache entry transfer
KR102680596B1 (ko) 캐시 엔트리 전송을 위한 캐시 위치 정보를 저장하기 위한 시스템 및 방법
US20170357585A1 (en) Setting cache entry age based on hints from another cache level
CN115668153A (zh) 闪存控制方法和装置

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