KR20200035169A - 캐시 버퍼 - Google Patents

캐시 버퍼 Download PDF

Info

Publication number
KR20200035169A
KR20200035169A KR1020207008245A KR20207008245A KR20200035169A KR 20200035169 A KR20200035169 A KR 20200035169A KR 1020207008245 A KR1020207008245 A KR 1020207008245A KR 20207008245 A KR20207008245 A KR 20207008245A KR 20200035169 A KR20200035169 A KR 20200035169A
Authority
KR
South Korea
Prior art keywords
request
data
cache
cache controller
buffers
Prior art date
Application number
KR1020207008245A
Other languages
English (en)
Inventor
디릭 캐그다스
로버트 엠. 워커
Original Assignee
마이크론 테크놀로지, 인크
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크론 테크놀로지, 인크 filed Critical 마이크론 테크놀로지, 인크
Publication of KR20200035169A publication Critical patent/KR20200035169A/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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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
    • 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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

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

캐시 버퍼
본 개시는 전반적으로 메모리 디바이스들에 관한 것으로서, 더 구체적으로는, 캐시 버퍼에 대한 장치들 및 방법들에 관한 것이다.
메모리 디바이스들은 일반적으로 컴퓨터들 또는 다른 전자 디바이스들에서 내부 반도체의 집적 회로들로서 제공된다. 휘발성 및 비 휘발성 메모리를 포함하는 다수의 상이한 유형들의 메모리가 존재한다. 휘발성 메모리는 데이터를 유지하기 위해 전력을 요구할 수 있고, 특히 랜덤 액세스 메모리(random-access memory; RAM), 동적 랜덤 액세스 메모리(dynamic random access memory; DRAM), 및 동기 동적 랜덤 액세스 메모리(synchronous dynamic random access memory; SDRAM)를 포함한다. 비-휘발성 메모리는 전력이 공급되지 않을 때 저장된 데이터를 유지함으로써 지속적인 데이터를 제공할 수 있으며, 그 중에서도 특히 NAND 플래시 메모리, NOR 플래시 메모리, 판독 전용 메모리(read only memory; ROM), 전기 소거가능 프로그램가능 ROM(Electrically Erasable Programmable ROM; EEPROM), 소거가능 프로그램가능 ROM(Erasable Programmable ROM; EPROM), 저항 가변 메모리, 예컨대 상 변화 랜덤 액세스 메모리(phase change random access memory; PCRAM), 저항성 랜덤 액세스 메모리(resistive random access memory; RRAM), 및 자기저항성 랜덤 액세스 메모리(magnetoresistive random access memory; MRAM)를 포함할 수 있다.
메모리는 또한 광범위한 전자 애플리케이션들에 대한 휘발성 및 비-휘발성 데이터 저장부로서 사용된다. 비-휘발성 메모리는, 예를 들어, 개인용 컴퓨터들, 휴대용 메모리 스틱들, 디지털 카메라들, 셀룰러 전화기들, 휴대용 음악 플레이어들 예컨대 MP3 플레이어들, 영화 플레이어들, 및 다른 전자 디바이스들에서 사용될 수 있다. 메모리 셀들은 어레이들로 배열될 수 있으며, 여기에서 어레이들은 메모리 디바이스들에서 사용된다.
메모리는 컴퓨팅 디바이스들에서 사용되는 메모리 모듈(예를 들어, 듀얼 인-라인 메모리 모듈(dual in-line memory module; DIMM))의 부분일 수 있다. 메모리 모듈은, 예를 들어, DRAM과 같은 휘발성, 및/또는, 예를 들어, 플래시 메모리 또는 RRAM과 같은 비-휘발성 메모리를 포함할 수 있다. DIMM들은 컴퓨팅 시스템들에서 메인 메모리를 사용하고 있을 수 있다.
도 1은 본 개시의 하나 이상의 실시예들에 따른 호스트의 형태의 장치 및 메모리 시스템의 형태의 장치를 포함하는 컴퓨팅 시스템의 블록도이다.
도 2는 본 개시의 복수의 실시예들에 따른 메모리 디바이스의 형태의 장치의 블록도이다.
도 3은 본 개시의 복수의 실시예들에 따른 캐시로부터 데이터를 수신하는 버퍼에 의해 서비스되는 요청의 흐름도이다.
도 4는 본 개시의 복수의 실시예들에 따른 복수의 버퍼들에 의해 서비스되는 복수의 요청들의 흐름도이다.
도 5는 본 개시의 복수의 실시예들에 따른 메모리 디바이스로부터 데이터를 수신하는 버퍼에 의해 서비스되는 요청의 흐름도이다.
본 개시는 캐시 버퍼와 관련된 장치들 및 방법들을 포함한다. 예시적인 장치는 복수의 버퍼들 중 특정 버퍼에 제 1 요청과 연관된 데이터를 저장하고, 복수의 버퍼들 중 특정 버퍼를 사용하여 요청과 연관된 데이터에 대한 후속 제 2 요청을 서비스할 수 있다.
복수의 실시예들에 있어서, 복수의 버퍼들은, 특정 버퍼에 할당된 데이터와 연관된 요청들 및/또는 후속 요청들을 서비스하도록 할당될 수 있다. 복수의 버퍼들은, 후속 요청과 연관된 데이터가 버퍼 내에 위치될 수 있고 후속 요청이 버퍼를 사용하여 서비스될 수 있도록 캐시 제어기에 의해 탐색가능할 수 있다. 탐색가능 버퍼들을 사용하여 요청을 서비스하는 것은, 캐시 라인으로부터 버퍼로 데이터를 이동시키는 요청을 서비스하는 동안, 버퍼 내의 데이터가 위치되었던 캐시 라인이 잠기지 않게 하는 것을 가능하게 한다.
또한, 요청을 서비스하도록 할당된 버퍼들은 마스킹(mask)될 수 있으며, 그에 따라 마스킹된 버퍼들은 후속 요청들을 서비스할 때 액세스가 불가능하다. 버퍼들은, 이로부터 데이터가 퇴거(evict)되어 마스킹된 버퍼들 내에 저장되었던 캐시 라인으로 기입될 데이터와 연관된 요청들을 수신하는 것에 응답하여 마스킹될 수 있다.
복수의 실시예들에 있어서, 탐색가능 버퍼들을 사용하는 것은 캐시의 크기와 함께 요청들을 서비스할 버퍼들의 수가 스케일링(scale)되는 것을 가능하게 할 수 있다. 따라서, 탐색가능 버퍼를 사용하는 캐시의 성능은 캐시의 크기에 독립적이다.
복수의 실시예들에 있어서, 캐시 제어기는 복수의 버퍼들 중 특정 버퍼에 제 1 요청과 연관된 데이터를 저장하고, 복수의 버퍼들 중 특정 버퍼를 사용하여 제 1 요청과 연관된 데이터에 대한 후속(예를 들어, 제 2) 요청을 서비스할 수 있다. 후속 요청은, 제 1 요청이 서비스되고 있는 동안 서비스된다. 요청들 및/또는 후속 요청은 캐시로부터 데이터를 퇴거시키거나, 버퍼 및/또는 캐시로부터 데이터를 판독하거나, 및/또는 데이터를 버퍼 및/또는 캐시에 기입할 수 있다. 버퍼들은, 버퍼 내에 저장된 데이터와 연관된 번호의 블록을 식별하기 위하여, 소프트웨어, 펌웨어, 및/또는 하드웨어를 가지고 수행되는 탐색 알고리즘을 통해 탐색가능할 수 있다.
복수의 실시예들에 있어서, 캐시 제어기는 초기 요청과 연관된 데이터를 제 1 버퍼 내에 저장하고, 다른(예를 들어, 제 2) 버퍼를 사용하여 데이터에 대한 제 1 후속 요청을 서비스하며, 제 2 버퍼를 사용하여 제 2 후속 요청을 서비스할 수 있다. 초기 버퍼와 연관된 데이터를 갖는 제 1 버퍼는, 제 1 후속 요청 및 제 2 후속 요청을 서비스하는 동안 마스킹될 수 있다. 제 1 후속 요청은 데이터를, 초기 요청과 연관된 데이터가 퇴거된 캐시에 기입할 수 있다. 제 2 후속 요청은, 초기 요청 및 제 1 후속 요청이 서비스되고 있는 동안 서비스될 수 있다. 제 2 후속 요청과 연관된 데이터는 다른(예를 들어, 제 2) 버퍼 내에 위치될 수 있으며, 이는 또한, 링크 리스트 구조체(linked list structure)를 사용하여, 제 1 후속 요청과 연관된 데이터를 포함한다.
본 개시의 다음의 상세한 설명에서, 본 개시의 일부분을 형성하며 본 개시의 하나 이상의 실시예들 실시될 수 있는 방법이 예시로서 도시된 첨부된 도면들에 대한 참조가 이루어진다. 이들 실시예가 해당 분야의 통상의 기술자가 본 발명의 실시예를 실시할 수 있도록 충분히 상세히 기재되고, 그 밖의 다른 실시예가 사용될 수 있고, 프로세스, 전기적 및/또는 구조적 변화가 본 발명의 범위 내에서 이뤄질 수 있음이 자명하다. 본원에서 사용되는 바와 같이, 특히 도면의 참조번호와 관련하여, 지시어 "X" 및 "Y"는 이렇게 지정된 복수의 특정 특징부가 포함될 수 있음을 나타낸다. 본원에서 사용되는 바와 같이, "복수의" 특정한 것은 이러한 것들 중 하나 이상을 지칭할 수 있다(예를 들어, 복수의 메모리 디바이스들은 하나 이상의 메모리 디바이스들을 지칭할 수 있다).
본 명세서의 도면은 첫 번째 숫자 또는 숫자들이 도면 번호에 대응하고 나머지 숫자들이 도면 내의 요소 또는 구성요소를 식별하는 넘버링 규칙을 따른다. 서로 다른 도면 간의 유사한 엘리먼트들 또는 컴포넌트들은 유사한 숫자들의 사용에 의해 식별될 수 있다. 예를 들어, 120은 도 1에서 엘리먼트 "20"을 참조할 수 있으며, 유사한 엘리먼트는 도 2에서 220으로 참조될 수 있다. 이해될 바와 같이, 본 명세서에서 다양한 실시예들에 도시된 엘리먼트들은 본 개시의 다수의 추가 실시예들을 제공하도록 추가되거나, 교환되거나, 및/또는 제거될 수 있다.
도 1은 본 개시의 하나 이상의 실시예들에 따른 호스트(102)의 형태의 장치 및 메모리 시스템(104)의 형태의 장치를 포함하는 컴퓨팅 시스템(100)의 기능 블록도이다. 본원에서 사용되는 바와 같이, "장치"는, 비제한적으로, 예를 들어, 회로 또는 회로부(circuitry), 다이(die) 또는 다이들, 모듈 또는 모듈들, 디바이스 또는 디바이스들, 또는 시스템 또는 시스템들과 같은 다양한 구조체들 또는 구조체들의 조합들 중 임의의 것을 지칭할 수 있다. 도 1a에 예시된 실시예에 있어서, 메모리 시스템(104)은 제어기(108), 캐시 제어기(120), 캐시(110), 및 복수의 메모리 디바이스들(111-1, . . ., 111-X)을 포함할 수 있다. 캐시(120) 및/또는 메모리 디바이스들(111-1, . . ., 111-X)은 휘발성 메모리 및/또는 비-휘발성 메모리를 포함할 수 있다. 캐시(110) 및/또는 캐시 제어기(120)는, 다른 위치들 중에서도 특히, 호스트 상에, 제어기 상에, 및/또는 메모리 디바이스 상에 위치될 수 있다.
도 1에 예시된 바와 같이, 호스트(102)는 메모리 시스템(104)에 결합될 수 있다. 복수의 실시예들에 있어서, 메모리 시스템(104)은 채널을 통해 호스트(102)에 결합될 수 있다. 호스트(102)는, 다른 호스트 시스템들 중에서도 특히, 랩탑 컴퓨터, 개인용 컴퓨터들, 디지털 카메라, 디지털 레코딩 및 재생 디바이스, 모바일 전화기, PDA, 메모리 카드 리더, 인터페이스 허브일 수 있으며, 메모리 액세스 디바이스, 예를 들어, 프로세서를 포함할 수 있다. 당업자는, "프로세서"가 병렬 프로세싱 시스템, 복수의 코프로세서들 등과 같은 하나 이상의 프로세서들을 의도할 수 있음을 이해할 것이다.
호스트(102)는 메모리 시스템(104)과 통신하기 위한 호스트 제어기를 포함할 수 있다. 호스트(102)는 채널을 통해 메모리 시스템(104)으로 요청들을 전송할 수 있다. 호스트(102)는, 다른 동작들 중에서도 특히, 데이터를 판독하고, 기입하며, 소거하기 위해 메모리 시스템(104) 상의 제어기(108) 및/또는 메모리 시스템(104)과 통신할 수 있다. 물리적 호스트 인터페이스는, 물리적 호스트 인터페이스에 대한 호환성 리셉터(receptor)들을 갖는 호스트(102)와 메모리 시스템(104) 사이에서 제어, 어드레스, 데이터, 및 다른 신호들을 전달하기 위한 인터페이스를 제공할 수 있다. 신호들은, 예를 들어, 채널들을 통해, 데이터 버스 및/또는 어드레스 버스와 같은 복수의 버스들 상에서 호스트(102)와 메모리 시스템(104) 사이에서 통신될 수 있다.
제어기(108), 호스트 제어기, 캐시(110) 상의 제어기, 및/또는 메모리 디바이스 상의 제어기는 제어 회로부, 예를 들어, 하드웨어, 펌웨어, 및/또는 소프트웨어를 포함할 수 있다. 하나 이상의 실시예들에 있어서, 제어기(108), 호스트 제어기, 캐시(110) 상의 제어기, 및/또는 메모리 디바이스 상의 제어기는 물리적 인터페이스를 포함하는 인쇄 회로 보드에 결합된 애플리케이션 특정 집적 회로(application specific integrated circuit; ASIC)일 수 있다. 메모리 시스템은 캐시 제어기(120) 및 캐시(110)를 포함할 수 있다. 캐시 제어기(120) 및 캐시(110)는 명령들의 판독 및/또는 명령들의 기입 동안 사용되는 데이터를 버퍼링하거나 및/또는 캐시하기 위해 사용될 수 있다.
캐시 제어기(120)는 복수의 버퍼들(122-1, . . ., 122-Y)을 포함할 수 있다. 버퍼들(122-1, . . ., 122-Y)은 휘발성 메모리(예를 들어, SRAM)의 복수의 어레이들을 포함할 수 있다. 버퍼들(122-1, . . ., 122-Y)은 신호들, 어드레스 신호들(예를 들어, 판독 및/또는 기입 명령들), 및/또는 데이터(예를 들어, 메타데이터 및/또는 기입 데이터)를 저장하도록 구성될 수 있다. 버퍼들(122-1, . . ., 122-Y)은 명령들이 실행되는 동안 신호들 및/또는 데이터를 일시적으로 저장할 수 있다. 캐시(110)는, 캐시로서 사용되는 메모리 셀들(예를 들어, DRAM 메모리 셀들)의 어레이들을 포함할 수 있으며, 또한 메모리 디바이스 내에 저장되는 데이터를 저장하도록 구성될 수 있다. 캐시 내에 그리고 메모리 디바이스 내에 저장된 데이터는 제어기에 의해 어드레싱되며, 명령의 실행 동안 캐시 내에 및/또는 메모리 디바이스 내에 위치될 수 있다.
메모리 디바이스들(111-1, . . ., 111-X)은 메모리 시스템에 대한 메인 메모리를 제공할 수 있거나 또는 메모리 시스템(104) 전체에 걸쳐 추가 메모리 또는 저장부로서 사용될 수 있다. 각각의 메모리 디바이스(111-1, . . ., 111-X)는 메모리 셀들, 예를 들어, 비-휘발성 및/또는 휘발성 메모리 셀들의 하나 이상의 어레이들을 포함할 수 있다. 어레이들은, 예를 들어, NAND 아키텍처를 갖는 플래시 어레이들일 수 있다. 실시예들이 특정 유형의 메모리 디바이스로 한정되지 않는다. 예를 들어, 메모리 디바이스는, 다른 것들 중에서도 특히, RAM, ROM, DRAM, SDRAM, PCRAM, RRAM, 및 플래시 메모리를 포함할 수 있다.
도 1의 실시예는 본 개시의 실시예들을 모호하게 하지 않기 위해 예시되지 않은 추가적인 회로부를 포함할 수 있다. 예를 들어, 메모리 시스템(104)은 I/O 회로부를 통해 I/O 연결들에 걸쳐 제공되는 어드레스 신호들을 래치(latch)하기 위한 어드레스 회로부를 포함할 수 있다. 어드레스 신호들은 메모리 디바이스들(111-1, . . ., 111-X)을 액세스하기 위해 로우(row) 디코더 및 컬럼(column) 디코더에 의해 수신되고 디코딩될 수 있다. 당업자들은, 어드레스 입력 연결들의 수가 메모리 디바이스들(111-1, . . ., 111-X)의 밀도 및 아키텍처에 의존할 수 있음을 이해할 것이다.
도 2는 본 개시의 복수의 실시예들에 따른 메모리 디바이스의 형태의 장치의 블록도이다. 도 2에서, 메모리 시스템은 호스트 및/또는 메모리 시스템 제어기로부터의 서비스 요청들 및 데이터를 캐시하도록 구성될 수 있다. 메모리 시스템은 복수의 버퍼들(222-1, . . ., 222-Y)을 갖는 캐시 제어기(220)를 포함할 수 있다. 버퍼들(222-1, . . ., 222-Y)은, 예를 들어, SRAM 메모리를 포함할 수 있다. 버퍼들(222-1, . . ., 222-Y)은, 캐시 내의 데이터에 대한 메타데이터 및/또는 어드레스 정보를 포함하는, 캐시(210) 내의 데이터에 대한 정보를 포함할 수 있다. 메모리 시스템은 캐시 제어기(220)에 결합된 메모리 디바이스(211)를 포함할 수 있다. 메모리 디바이스(211)는 비-휘발성 메모리 어레이들 및/또는 휘발성 메모리 어레이들을 포함할 수 있으며, 메모리 시스템에 대한 보조 기억장치(backing store)로서 역할 할 수 있다.
메모리 디바이스(211)는, 메모리 디바이스(211)에 대한 명령들을 실행하기 위해 사용될 수 있는 제어기 및/또는 제어 회로부(예를 들어, 하드웨어, 펌웨어, 및/또는 소프트웨어)를 포함할 수 있다. 제어 회로부는 메모리 시스템 제어기 및/또는 캐시 제어기(220)로부터 명령들을 수신할 수 있다. 제어 회로부는 메모리 디바이스(211) 내의 데이터를 판독하거나 및/또는 기입하기 위한 명령들을 실행하도록 구성될 수 있다.
도 3은 본 개시의 복수의 실시예들에 따른 캐시로부터 데이터를 수신하는 버퍼에 의해 서비스되는 요청의 흐름도이다. 도 3에서, 도 1의 캐시 제어기(120)와 같은 캐시 제어기가 요청(340-1)을 수신할 수 있다. 요청(340-1)은 데이터(330)가 캐시(310) 내의 캐시 라인으로부터 퇴거되게끔 할 수 있다. 캐시(310) 내의 캐시 라인으로부터 메모리 디바이스로 데이터(330)를 퇴거시키는 동안, 버퍼(322)가 데이터(330)를 저장하도록 할당될 수 있다. 버퍼(322)가 데이터(330)를 저장할 수 있으며, 이는 후속 요청들을 수행할 때 캐시에 의해 탐색가능할 수 있다. 또한, 데이터(330)를 저장했던 캐시(310) 내의 캐시 라인은, 데이터(330)가 캐시(310)로부터 퇴거되는 동안 잠기지 않는다.
캐시 제어기는, 요청(340-1)이 서비스되고 있는 동안 요청(340-1)에 후속하는 요청(340-2)을 수신할 수 있다. 요청(340-2)은, 캐시 제어기에 의해 탐색가능한 버퍼(322)의 사용을 통해 요청(340-1)이 서비스되고 있는 동안 서비스될 수 있다. 예를 들어, 캐시(310)로부터 퇴거되고 있는 데이터(330)에 대한 요청들은, 요청(340-1)을 서비스하는 동안 버퍼(322)를 통해 서비스될 수 있다.
복수의 실시예들에 있어서, 요청(340-2)은 데이터(330)를 요청하는 판독 명령일 수 있다. 요청(340-2)은, 요청(340-1)이 서비스되고 데이터(330)가 캐시(310)로부터 퇴거되는 동안, 캐시 제어기에 의해 수신될 수 있다. 요청(340-1)을 서비스하는 동안, 버퍼(322)가 데이터(330)에 할당될 수 있으며, 버퍼(322)는 캐시 제어기에 의해 탐색가능할 수 있고, 데이터(330)가 버퍼(322)로 이동될 수 있다. 요청(340-2)은, 데이터(330)를 갖는 버퍼가 존재하는지 여부를 결정(350)하기 위하여 버퍼들을 탐색하는 캐시 제어기에 의해 서비스될 수 있다. 요청(340-2)과 연관된 데이터(330)가 버퍼(322) 내에 존재한다고 결정하는 것에 응답하여, 요청(340-2)은 버퍼(322)로부터 데이터(330)를 반환함으로써 서비스될 수 있다.
도 4는 본 개시의 복수의 실시예들에 따른 복수의 버퍼들에 의해 서비스되는 복수의 요청들의 흐름도이다. 도 4에서, 도 1의 캐시 제어기(120)와 같은 캐시 제어기가 요청(440-1)을 수신할 수 있다. 요청(440-1)은 데이터(430)가 캐시(410) 내의 캐시 라인으로부터 퇴거되게끔 할 수 있다. 캐시(410) 내의 캐시 라인으로부터 메모리 디바이스로 데이터(430)를 퇴거시키는 동안, 버퍼(422-1)가 데이터(430)를 저장하도록 할당될 수 있다. 버퍼(422-1)가 데이터(430)를 저장할 수 있으며, 이는 후속 요청들을 수행할 때 캐시에 의해 탐색가능할 수 있다. 또한, 데이터(430)를 저장했던 캐시(410) 내의 캐시 라인은, 데이터(430)가 캐시(410)로부터 퇴거되는 동안 잠기지 않는다.
캐시 제어기는, 요청(440-1)이 서비스되고 있는 동안 요청(440-1)에 후속하는 요청(440-2)을 수신할 수 있다. 요청(440-2)은, 캐시 제어기에 의해 탐색가능한 버퍼(422-1)의 사용을 통해 요청(440-1)이 서비스되고 있는 동안 서비스될 수 있다. 예를 들어, 요청(440-2)은, 데이터(430)가 퇴거되고 있는 캐시(410) 내의 캐시 라인에 데이터를 기입하기 위한 기입 명령일 수 있다. 캐시 제어기는, 버퍼(422-1)가, 요청(440-2)과 연관된 데이터가 기입될(450-1) 캐시(410) 내의 캐시 라인으로부터 퇴거되고 있는 데이터(430)를 포함한다는 것을 결정할 수 있다. 요청(440-2)과 연관된 데이터가 기입될 캐시(410) 내의 캐시 라인으로부터 퇴거되고 있는 데이터(430)를 버퍼(422-1)가 포함하고 있다고 결정하는 것에 응답하여, 버퍼(422-1)는, 버퍼(422-1) 내의 데이터(430)가 후속 요청들에 의해 사용될 수 없도록 마스킹될 수 있다.
요청(440-2)과 연관된 데이터가 기입될(450-1) 캐시(410) 내의 캐시 라인으로부터 퇴거되고 있는 데이터(430)를 버퍼(422-1)가 포함하고 있다고 결정하는 것에 응답하여, 요청(440-2)과 연관된 데이터에 대하여 버퍼(422-2)를 할당함으로써 요청(440-2)이 계속해서 서비스될 수 있다. 요청(440-2)과 연관된 데이터는 요청이 서비스되고 있는 동안 버퍼(422-2)에 기입될 수 있으며, 여기에서 요청(440-2)은 데이터를 캐시(410) 내의 캐시 라인에 기입한다.
캐시 제어기는, 요청(440-2) 및/또는 요청(440-1)이 서비스되고 있는 동안, 요청(440-2) 및 요청(440-1)에 후속하여 요청(440-3)을 수신할 수 있다. 요청(440-3)은, 캐시 제어기에 의해 탐색가능한 버퍼(422-2)의 사용을 통해 요청(440-2) 및/또는 요청(440-1)이 서비스되고 있는 동안 서비스될 수 있다. 복수의 실시예들에 있어서, 요청(440-3)은 요청(440-2)과 연관된 데이터를 요청하는 판독 명령일 수 있다. 요청(440-3)은, 요청(440-2)이 서비스되고 있는 동안, 데이터를 캐시(410)에 기입함으로써 캐시 제어기에 의해 수신될 수 있다. 요청(440-2)을 서비스하는 동안, 버퍼(422-2)는 요청(440-2)과 연관된 데이터에 할당될 수 있다. 요청(440-2)을 서비스하는 동안, 버퍼(422-2)는 캐시 제어기에 의해 탐색가능할 수 있으며, 요청(440-2)과 연관된 데이터가 버퍼(422-2)에 기입될 수 있다. 요청(440-3)은, 요청(440-3)과 연관된 데이터를 갖는 버퍼가 존재하는지 여부를 결정(450-2)하기 위하여 버퍼들을 탐색하는 캐시 제어기에 의해 서비스될 수 있다. 요청(440-3)과 연관된 데이터가 버퍼(422-2) 내에 존재한다고 결정하는 것에 응답하여, 요청(440-3)은 버퍼(422-2)로부터 데이터를 반환함으로써 서비스될 수 있다.
도 5는 본 개시의 복수의 실시예들에 따른 메모리 디바이스로부터 데이터를 수신하는 버퍼에 의해 서비스되는 요청의 흐름도이다. 도 5에서, 도 1의 캐시 제어기(120)와 같은 캐시 제어기가 요청(540-1)을 수신할 수 있다. 요청(540-1)은 요청(540-1)이 캐시 미스(cache miss)인 판독 명령일 수 있으며, 그 결과 요청(540-1)과 연관된 데이터는 캐시(510) 내에 위치되지 않는다. 요청(540-1)은, 버퍼(522)를 요청(540-1)과 연관된 데이터에 할당하고 요청(540-1)과 연관된 데이터 데이터를 메모리 디바이스(511) 내에 위치시킴으로써 서비스될 수 있다. 버퍼(522)는 후속 요청들을 수행할 때 캐시에 의해 탐색가능할 수 있다. 요청(540-1)과 연관된 데이터가 메모리 디바이스(511)로부터 검색되고 있는 동안, 링크 리스트 구조체(560)는, 엔트리(562-1)와 같은 복수의 엔트리들을 포함하는 종속 리스트를 포함할 수 있다. 링크 리스트 구조체(560) 내의 엔트리(562-1)는, 버퍼(522) 내의 데이터가 요청(540-1)과 연관된다는 것을 나타낼 수 있다. 따라서, 일단 데이터가 메모리 디바이스(511)로부터 검색되어 버퍼(522) 내에 저장되면, 링크 리스트 구조체(560) 내의 엔트리(562-1)는 버퍼(522)로부터 데이터를 반환함으로써 요청(540-1)이 서비스되게끔 할 수 있다.
캐시 제어기는, 요청(540-1)이 서비스되고 있는 동안 요청(540-1)에 후속하는 요청(540-2)을 수신할 수 있다. 요청(540-2)은, 캐시 제어기에 의해 탐색가능한 버퍼(522) 및 링크 리스트 구조체(560)의 사용을 통해 요청(540-1)이 서비스되고 있는 동안 서비스될 수 있다. 요청(540-2)은, 요청(540-2)과 연관된 데이터에 할당된 버퍼가 존재한다고 결정(550)함으로써 서비스될 수 있다. 버퍼(522)가 요청(540-2)과 연관된 데이터에 할당된다는 것을 결정하는 것에 응답하여, 링크 리스트 구조체(560) 내의 엔트리(562-2)는, 버퍼(522) 내의 데이터가 요청(540-2)과 연관된다는 것을 나타낼 수 있다. 따라서, 일단 데이터가 메모리 디바이스(511)로부터 검색되고 버퍼(522) 내에 저장되면, 링크 리스트 구조체(560) 내의 엔트리(562-2)는 버퍼(522)로부터 데이터를 반환함으로써 요청(540-2)이 서비스되게끔 할 수 있다.
특정 실시예들이 본 명세서에 예시되고 기재되었지만, 동일한 결과들을 달성하도록 계산된 배치가 도시된 특정 실시예들로 치환될 수 있다는 것을 당업자는 인식할 것이다. 본 개시는 본 개시의 다양한 실시예들의 적응들 또는 변형들 커버하도록 의도된다. 이상의 설명이 제한적인 방식이 아니라 예시적인 방식으로 이루어졌다는 것이 이해될 것이다. 이상의 실시예들의 조합, 및 본 명세서에 특별히 기재되지 않은 다른 실시예들은 이상의 설명을 검토할 때 당업자에게 명백해질 것이다. 본 개시의 다양한 실시예들의 범위는, 이상의 구조들 및 방법들이 사용되는 다른 애플리케이션들을 포함한다. 따라서, 본 개시의 다양한 실시예들의 범위는, 이러한 청구항들이 지칭하는 등가물들의 전체 범위와 함께 첨부된 청구항들을 참조하여 결정되어야 한다.
이상의 상세한 설명에서, 다양한 특징들은 본 개시를 간소화하기 위해 단일 실시예에서 함께 그룹화된다. 본 개시의 이러한 방법은, 본 개시의 개시된 실시예들이 각 청구항에 특별히 언급된 것보다 더 많은 특징들을 이용해야 한다는 의도를 반영하는 것으로 해석되지 않는다. 오히려, 다음의 청구항들을 반영할 때, 본 발명의 주제는 단일의 개시된 실시예의 모든 특징들보다 더 적다. 따라서, 다음의 청구항들은 이를 통해 상세한 설명에 병합되며, 각 청구항은 개별적인 실시예로서 스스로에 의존한다.

Claims (20)

  1. 장치로서,
    캐시 제어기; 및
    상기 캐시 제어기에 결합된 캐시 및 메모리 디바이스를 포함하며, 상기 캐시 제어기는 복수의 버퍼들을 포함하고, 상기 캐시 제어기는,
    상기 복수의 버퍼들 중 하나의 버퍼에 요청과 연관된 데이터를 저장하고, 상기 복수의 버퍼들 중 상기 하나의 버퍼를 사용하여 상기 요청과 연관된 데이터에 대한 후속 요청을 서비스하도록 구성되는, 장치.
  2. 청구항 1에 있어서, 상기 캐시 제어기는, 상기 요청이 서비스되고 있는 동안 상기 후속 요청을 서비스하도록 구성되는, 장치.
  3. 청구항 1에 있어서, 상기 캐시 제어기는 상기 요청을 서비스하는 것에 응답하여 상기 캐시로부터 데이터를 퇴거(evict)시키도록 구성되는, 장치.
  4. 청구항 3에 있어서, 상기 캐시 제어기는, 상기 요청과 연관된 상기 데이터가 퇴거된 상기 캐시에 데이터를 기입하도록 구성되는, 장치.
  5. 청구항 1에 있어서, 상기 제어기는 상기 후속 요청에 응답하여 상기 버퍼로부터 데이터를 판독하도록 구성되는, 장치.
  6. 청구항 1 내지 청구항 5에 있어서, 상기 캐시 제어기는, 상기 요청이 서비스될 때까지 상기 버퍼 내에 데이터를 유지하도록 구성되는, 장치.
  7. 청구항 6에 있어서, 상기 캐시 제어기는 상기 버퍼를 탐색함으로써 데이터의 위치를 찾도록(locate) 구성되는, 장치.
  8. 청구항 1에 있어서, 캐시 라인은 잠기지 않으며, 상기 캐시 제어기는 상기 후속 요청을 서비스하기 이전에 잠금 해제(lock release)를 기다리지 않도록 구성되는, 장치.
  9. 청구항 1 내지 청구항 5 및 청구항 8 중 어느 한 항에 있어서, 상기 캐시는, 상기 후속 요청을 서비스하는 동안 상기 복수의 버퍼들 중 상기 하나의 버퍼를 마스킹(mask)하도록 구성되는, 장치.
  10. 장치로서,
    캐시 제어기; 및
    상기 캐시 제어기에 결합된 캐시 및 메모리 디바이스를 포함하며, 상기 캐시 제어기는 복수의 버퍼들을 포함하고, 상기 캐시 제어기는,
    상기 복수의 버퍼들 중 하나의 버퍼에 상기 메모리 디바이스로부터의 데이터를 저장함으로써 요청을 서비스하고, 상기 복수의 버퍼들 중 상기 하나의 버퍼를 사용하여 상기 요청과 연관된 데이터에 대한 제 1 후속 요청을 서비스하도록 구성되는, 장치.
  11. 청구항 10에 있어서, 상기 캐시 제어기는, 상기 메모리 디바이스로부터 상기 복수의 버퍼들 중 상기 하나의 버퍼로 데이터가 저장되는 것에 응답하여 상기 요청 및 제 1 후속 요청을 서비스하도록 구성되는, 장치.
  12. 청구항 10에 있어서, 상기 캐시 제어기는, 상기 복수의 버퍼들 중 상기 하나의 버퍼 내에 데이터가 저장되기 이전에 상기 제 1 후속 요청을 수신하도록 구성되는, 장치.
  13. 청구항 10에 있어서, 상기 캐시 제어기는 상기 제 1 후속 요청을 링크 리스트 구조체(linked list structure) 내의 버퍼의 번호 중 하나에 대한 종속 리스트에 추가하도록 구성되는, 장치.
  14. 청구항 10 내지 청구항 13에 있어서, 상기 캐시 제어기는 상기 요청의 서비스를 완료하기 위하여 상기 복수의 버퍼들로부터의 데이터를 상기 캐시 내에 저장하도록 구성되는, 장치.
  15. 청구항 10에 있어서, 상기 캐시 제어기는, 상기 제 1 후속 요청이 서비스되고 있는 동안 상기 복수의 버퍼들 중 상기 하나의 버퍼를 사용하여 제 2 후속 요청을 서비스하도록 구성되는, 장치.
  16. 청구항 15에 있어서, 상기 캐시 제어기는, 상기 제 2 후속 요청을 서비스하는 것에 응답하여 링크 리스트 구조체를 사용하여 상기 복수의 버퍼들 중 다른 버퍼 내에 데이터를 위치시키도록 구성되는, 장치.
  17. 방법으로서,
    캐시 제어기에서 데이터에 대한 요청을 수신하는 단계; 및
    상기 캐시 제어기 상의 버퍼 내에 저장된 데이터를 호스트로 전송함으로써 상기 요청을 서비스하는 단계로서, 상기 버퍼 내에 저장된 상기 데이터는 이전에 수신된 요청과 연관되는, 단계를 포함하는, 방법.
  18. 청구항 17에 있어서, 상기 요청을 서비스하는 동안 상기 이전에 수신된 요청을 서비스하는 단계를 더 포함하는, 방법.
  19. 청구항 17에 있어서, 상기 버퍼 내의 캐시로부터의 데이터를 저장하고 상기 버퍼 내의 상기 데이터를 보조 기억장치에 저장함으로써 상기 이전에 수신된 요청을 서비스하는 단계를 더 포함하는, 방법.
  20. 청구항 17 내지 청구항 19에 있어서, 상기 요청을 서비스하는 단계는 상기 요청에 대응하는 어드레스를 가지고 데이터에 대한 판독 요청을 실행하는 단계를 포함하는, 방법.
KR1020207008245A 2017-08-30 2018-08-28 캐시 버퍼 KR20200035169A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/690,442 US20190065373A1 (en) 2017-08-30 2017-08-30 Cache buffer
US15/690,442 2017-08-30
PCT/US2018/048277 WO2019046255A1 (en) 2017-08-30 2018-08-28 CACHE MEMORY BUFFER

Publications (1)

Publication Number Publication Date
KR20200035169A true KR20200035169A (ko) 2020-04-01

Family

ID=65437346

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207008245A KR20200035169A (ko) 2017-08-30 2018-08-28 캐시 버퍼

Country Status (5)

Country Link
US (1) US20190065373A1 (ko)
EP (1) EP3676715B1 (ko)
KR (1) KR20200035169A (ko)
CN (1) CN111033482A (ko)
WO (1) WO2019046255A1 (ko)

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6697918B2 (en) * 2001-07-18 2004-02-24 Broadcom Corporation Cache configured to read evicted cache block responsive to transmitting block's address on interface
US20080005504A1 (en) * 2006-06-30 2008-01-03 Jesse Barnes Global overflow method for virtualized transactional memory
US7568072B2 (en) * 2006-08-31 2009-07-28 Arm Limited Cache eviction
US8200917B2 (en) * 2007-09-26 2012-06-12 Qualcomm Incorporated Multi-media processor cache with cache line locking and unlocking
US9043555B1 (en) * 2009-02-25 2015-05-26 Netapp, Inc. Single instance buffer cache method and system
US8631225B2 (en) * 2010-06-25 2014-01-14 International Business Machines Corporation Dynamically rewriting branch instructions to directly target an instruction cache location
US8352646B2 (en) * 2010-12-16 2013-01-08 International Business Machines Corporation Direct access to cache memory
US10031850B2 (en) * 2011-06-07 2018-07-24 Sandisk Technologies Llc System and method to buffer data
EP3058457A4 (en) 2013-10-15 2017-07-12 Mill Computing, Inc. Computer processor with deferred operations
US9779025B2 (en) * 2014-06-02 2017-10-03 Micron Technology, Inc. Cache architecture for comparing data
GB2526849B (en) * 2014-06-05 2021-04-14 Advanced Risc Mach Ltd Dynamic cache allocation policy adaptation in a data processing apparatus

Also Published As

Publication number Publication date
EP3676715A4 (en) 2021-06-16
EP3676715B1 (en) 2024-03-27
WO2019046255A1 (en) 2019-03-07
EP3676715A1 (en) 2020-07-08
CN111033482A (zh) 2020-04-17
US20190065373A1 (en) 2019-02-28

Similar Documents

Publication Publication Date Title
US11822790B2 (en) Cache line data
US11886710B2 (en) Memory operations on data
US20220398200A1 (en) Memory protocol with programmable buffer and cache size
KR20190090635A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR102240261B1 (ko) 메모리 관리
US20160283157A1 (en) Memory device
US11853224B2 (en) Cache filter
US10466938B2 (en) Non-volatile memory system using a plurality of mapping units and operating method thereof
US20210200465A1 (en) Direct data transfer in memory and between devices of a memory module
US12014082B2 (en) Addressing in memory with a read identification (RID) number
EP3676715B1 (en) Cache buffer
US11403035B2 (en) Memory module including a controller and interfaces for communicating with a host and another memory module
US11687283B2 (en) Memory module interfaces
US11531490B2 (en) Data transfer in port switch memory

Legal Events

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