KR20200035311A - 캐시 라인 데이터 - Google Patents
캐시 라인 데이터 Download PDFInfo
- Publication number
- KR20200035311A KR20200035311A KR1020207007517A KR20207007517A KR20200035311A KR 20200035311 A KR20200035311 A KR 20200035311A KR 1020207007517 A KR1020207007517 A KR 1020207007517A KR 20207007517 A KR20207007517 A KR 20207007517A KR 20200035311 A KR20200035311 A KR 20200035311A
- Authority
- KR
- South Korea
- Prior art keywords
- cache
- data
- request
- chunks
- controller
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0879—Burst mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/312—In storage controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/313—In storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/604—Details relating to cache allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency 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)
- Human Computer Interaction (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)를 포함할 수 있다.
메모리 시스템은, 시스템의 다른 메모리(예를 들어, 메인 메모리로서 지칭될 수 있는, DRAM, NAND, 디스크 저장부, 고체 상태 드라이브(solid state drive; SSD)들, 등)보다 더 작거나 및/또는 더 빠를 수 있는 캐시 메모리를 포함할 수 있다. 일 예로서, 캐시 메모리는 DRAM 메모리를 포함할 수 있다. 메모리 시스템은 메모리 시스템의 성능을 개선하기 위하여 데이터를 캐시할 수 있다. 따라서, 메모리 시스템에 대하여 개선된 성능을 공급하는 캐시 메모리를 제공하는 것이 바람직하다. 캐시 메모리의 레이턴시(latency) 및 히트 레이트(hit rate)를 개선하는 것은, 메모리 시스템의 개선된 성능을 제공할 수 있는 성능 특성들이다.
도 1은 본 개시의 하나 이상의 실시예들에 따른 호스트의 형태의 장치 및 메모리 시스템의 형태의 장치를 포함하는 컴퓨팅 시스템의 블록도이다.
도 2는 본 개시의 복수의 실시예들에 따른 메모리 디바이스의 형태의 장치의 블록도이다.
도 3은 본 개시의 복수의 실시예들에 따른 복수의 캐시 라인들을 포함하는 캐시의 형태의 장치의 블록도이다.
도 4는 본 개시의 복수의 실시예들에 따른 캐시 라인의 도면이다.
도 2는 본 개시의 복수의 실시예들에 따른 메모리 디바이스의 형태의 장치의 블록도이다.
도 3은 본 개시의 복수의 실시예들에 따른 복수의 캐시 라인들을 포함하는 캐시의 형태의 장치의 블록도이다.
도 4는 본 개시의 복수의 실시예들에 따른 캐시 라인의 도면이다.
본 개시는 캐시 라인 데이터를 갖는 메모리 시스템과 관련된 장치들 및 방법들을 포함한다. 예시적인 장치는 캐시 내의 복수의 캐시 라인들 내에 데이터를 저장할 수 있으며, 여기에서 복수의 라인들의 각각은 개별적으로 액세스될 수 있는 데이터의 복수의 청크(chunk)들을 포함한다.
복수의 실시예들에 있어서, 캐시 라인(예를 들어, 캐시 엔트리)은 메타데이터, 청크 메타데이터, 태그 정보, 및 데이터의 복수의 청크들을 포함할 수 있다. 캐시는 캐시 라인 레벨로 관리될 수 있다. 예를 들어, 데이터 전송 액션 결정들은 캐시 라인 및/또는 청크 레벨로 이루어진다. 캐시 제어기 상의 버퍼는 캐시 내의 데이터와 연관된 어드레스 데이터 및/또는 메타데이터를 포함할 수 있다. 캐시 제어기는 캐시를 관리하기 위하여 버퍼 내의 어드레스 데이터 및/또는 메타데이터를 사용할 수 있다. 캐시 라인 내의 데이터는 청크 레벨로 관리될 수 있다. 예를 들어, 캐시 라인 내의 데이터의 청크들은 요청을 서비스하기 위하여 캐시에 기입되거나 및/또는 판독될 수 있다. 캐시 라인들은 청크 메타데이터 및 데이터의 청크들을 포함할 수 있으며, 캐시 제어기는 청크 레벨로 캐시 라인들을 관리할 수 있다. 예를 들어, 캐시 제어기는, 다른 동작들 중에서도 특히, 캐시 라인 상의 데이터의 총 양보다 더 작은 데이터의 복수의 청크들을 포함하는 캐시 라인의 일 부분을 판독하거나, 기입하거나, 다시-기입(write-back)하거나, 및/또는 페치(fetch)할 수 있다. 또한, 캐시 라인은, 일단 캐시 라인 상의 데이터의 더티(dirty) 청크들의 각각이 하나 이상의 동작들에서 보조 기억장치에 다시 기입되면, 퇴거(evict)된 것으로서 간주될 수 있다.
복수의 실시예들에 있어서, 캐시 라인은, 예를 들어, 32개의 128B 청크들로 4KB의 데이터를 저장하도록 구성될 수 있다. 실시예들은 특정 캐시 라인 및/또는 청크 크기들에 제한되지 않으며, 임의의 크기의 캐시 라인들 및 임의의 크기의 청크들을 포함할 수 있다. 캐시 제어기는, 메모리 디바이스(예를 들어, 보조 기억장치) 내의 특정 위치에서의 4KB의 데이터에 대응하는 캐시 라인 내의 4KB의 데이터를 관리할 수 있다. 4KB 캐시 라인 내의 데이터의 32개의 128B 청크들은, 각각의 청크가 요청들을 서비스할 때 판독되거나 및/또는 기입될 수 있도록 개별적인 청크 레벨로 액세스될 수 있다.
캐시 제어기는 데이터에 대한 요청(예를 들어 캐시에 데이터를 기입하거나 및/또는 이로부터 판독하기 위한 요청)을 수신하는 것에 응답하여 캐시의 캐시 라인 내의 데이터의 복수의 청크들을 액세스할 수 있다. 캐시 제어기는 캐시 제어기 상의 버퍼를 사용하여 요청을 관리할 수 있으며, 캐시 제어기는 요청에 대응하는 캐시 내의 데이터의 복수의 청크들 중 일 부분을 반환함으로써 요청을 서비스할 수 있다. 캐시 제어기는, 캐시 제어기가 요청이 히트(hit)라고 결정하는 것에 응답하여, 캐시로 하여금 요청이 수신되었을 때 캐시 라인 내에 존재했던 요청에 대응하는 데이터의 복수의 청크들의 부분을 반환하게끔 하기 위한 명령들을 발행하도록 구성될 수 있다. 캐시 제어기는, 캐시 제어기 상의 버퍼(예를 들어, 다른 유형의 메모리 중에서도 특히, SRAM) 내에 저장된 캐시에 대한 메타데이터를 사용하여 요청에 대응하는 데이터가 히트인지 또는 미스(miss)인지 여부를 결정할 수 있다.
복수의 실시예들에 있어서, 캐시 제어기는, 캐시 제어기가 요청이 미스라고 결정하는 것에 응답하여, 캐시로 하여금 메모리 디바이스로부터 요청에 대응하는 데이터의 복수의 청크들의 일 부분을 검색하게끔 하기 위한 명령들을 발행한다. 캐시 제어기는, 요청이 미스라고 결정하는 것에 응답하여, 캐시로 하여금 요청이 수신되었을 때 캐시 라인 내에 존재했던 캐시 라인 내의 데이터의 더티 청크들을 메모리 디바이스에 기입하게끔 하기 위한 명령들을 발행하도록 구성될 수 있다. 캐시 제어기는, 요청이 미스라고 결정하는 것에 응답하여, 캐시로 하여금 캐시 내의 다른 캐시 라인들보다 더 적은 더티 청크들을 갖는 캐시 라인에 기초하여 캐시 라인을 선택하게끔 하기 위한 명령들을 발행하도록 구성된다.
캐시 제어기는, 요청이 히트라고 결정하는 것에 응답하여, 캐시로 하여금 캐시 내의 데이터의 더티 청크들을 메모리 디바이스로 기입하게끔 하기 위한 명령들을 발행하도록 구성될 수 있다. 캐시 제어기는, 요청이 히트라고 결정하는 것에 응답하여, 캐시로 하여금 요청이 수신되었을 때 무효였으며 요청과 연관되지 않은 캐시 라인 내의 데이터의 청크들을 교체하게끔 하기 위한 명령들을 발행하도록 구성될 수 있다.
캐시 제어기는, 캐시 라인들로부터 퇴거되지 않을 데이터의 특정 청크들을 우선순위화(prioritize)할 수 있다. 데이터의 청크들은 데이터가 얼마나 자주 액세스될지 및/또는 데이터의 유형에 기초하여 우선순위화될 수 있다. 캐시 제어기는, 데이터의 청크들에 대한 요청을 수신하기 이전에 메모리 디바이스로부터의 데이터의 청크들을 캐시에 기입할 수 있다(예를 들어, 프리-페치(pre-fetch)). 메모리 디바이스의 일 부분으로부터의 데이터의 청크들은 메모리의 그 부분에 대응하는 캐시 라인을 적어도 부분적으로 채우기 위하여 프리-페치되어 캐시 내에 저장될 수 있다.
복수의 실시예들에 있어서, 캐시 제어기는, 명령들을 서비스하지 않을 때 데이터의 더티 청크들을 메모리 디바이스에 기입할 수 있다. 또한, 캐시 제어기는 호스트로부터의 명령에 기초하여 캐시 내에 남아 있을 데이터의 청크들을 선택할 수 있다. 호스트는 캐시 내에 갖기를 희망하는 데이터의 부분들을 식별할 수 있으며, 캐시 제어기는, 이들이 결코 캐시로부터 퇴거되지 않도록 캐시 내의 데이터의 이러한 부분들을 고정할 수 있다.
본 개시의 다음의 상세한 설명에서, 본 개시의 일부분을 형성하며 본 개시의 하나 이상의 실시예들 실시될 수 있는 방법이 예시로서 도시된 첨부된 도면들에 대한 참조가 이루어진다. 이들 실시예가 해당 분야의 통상의 기술자가 본 발명의 실시예를 실시할 수 있도록 충분히 상세히 기재되고, 그 밖의 다른 실시예가 사용될 수 있고, 프로세스, 전기적 및/또는 구조적 변화가 본 발명의 범위 내에서 이뤄질 수 있음이 자명하다. 본원에서 사용되는 바와 같이, 특히 도면의 참조번호와 관련하여, 지시어 "M", "N", 및 "X"는 이렇게 지정된 복수의 특정 특징부가 포함될 수 있음을 나타낸다. 본원에서 사용되는 바와 같이, "복수의" 특정한 것은 이러한 것들 중 하나 이상을 지칭할 수 있다(예를 들어, 복수의 메모리 디바이스들은 하나 이상의 메모리 디바이스들을 지칭할 수 있다).
본 명세서의 도면은 첫 번째 숫자 또는 숫자들이 도면 번호에 대응하고 나머지 숫자들이 도면 내의 요소 또는 구성요소를 식별하는 넘버링 규칙을 따른다. 서로 다른 도면 간의 유사한 엘리먼트들 또는 컴포넌트들은 유사한 숫자들의 사용에 의해 식별될 수 있다. 예를 들어, 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)은 휘발성 메모리 및/또는 비-휘발성 메모리를 포함할 수 있다.
도 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)를 포함할 수 있다. 버퍼(122)는 휘발성 메모리(예를 들어, SRAM)의 복수의 어레이들을 포함할 수 있다. 버퍼(122)는 신호들, 어드레스 신호들(예를 들어, 판독 및/또는 기입 명령들), 및/또는 데이터(예를 들어, 메타데이터 및/또는 기입 데이터)를 저장하도록 구성될 수 있다. 버퍼(122)는 명령들이 실행되는 동안 신호들 및/또는 데이터를 일시적으로 저장할 수 있다. 캐시(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)를 갖는 캐시 제어기(220)를 포함할 수 있다. 버퍼(222)는, 예를 들어, SRAM 메모리를 포함할 수 있다. 버퍼(222)는, 캐시 내의 데이터에 대한 메타데이터 및/또는 어드레스 정보를 포함하는, 캐시(210) 내의 데이터에 대한 정보를 포함할 수 있다. 메모리 시스템은 캐시 제어기(220)에 결합된 메모리 디바이스(211)를 포함할 수 있다. 메모리 디바이스(211)는 비-휘발성 메모리 어레이들 및/또는 휘발성 메모리 어레이들을 포함할 수 있으며, 메모리 시스템에 대한 보조 기억장치(backing store)로서 역할 할 수 있다.
캐시 제어기(220), 캐시(210), 및/또는 메모리 디바이스(211)는 각기, 캐시 제어기(220), 캐시(210), 및/또는 메모리 디바이스(211)에 대한 명령들을 실행하기 위해 사용될 수 있는 제어기 및/또는 제어 회로부(예를 들어, 하드웨어, 펌웨어, 및/또는 소프트웨어)를 포함할 수 있다. 제어 회로부는 호스트 제어기, 메모리 시스템 제어기 및/또는 캐시 제어기(220)로부터 명령들을 수신할 수 있다. 제어 회로부는 메모리 디바이스(211) 내의 데이터를 판독하거나 및/또는 기입하기 위한 명령들을 실행하도록 구성될 수 있다.
도 3은 본 개시의 복수의 실시예들에 따른 복수의 캐시 라인들을 포함하는 캐시의 형태의 장치의 블록도이다. 도 3에서, 캐시(310)는 복수의 캐시 엔트리들, 예컨대 캐시 라인들(330-1, ..., 330-N)을 포함할 수 있다. 캐시 라인들(330-1, ..., 330-N)은 메타데이터(332-1, ...332-N), 청크 메타데이터(332-1, ...332-N), 태그 데이터(336-1, ..., 336-N), 및 데이터의 복수의 청크들(338-1-1, ..., 338-M-N)을 포함할 수 있다. 각각의 캐시 라인(330-1, ..., 330-N)은 대응하는 캐시 라인에 대한 메타데이터(332-1, ...332-N)를 포함할 수 있다. 메타데이터(332-1, ...332-N)는 또한 버퍼(예를 들어, 도 1의 버퍼(122)) 내에 저장되고, 캐시를 관리하기 위하여 캐시 제어기에 의해 사용될 수 있다. 예를 들어, 메타데이터(332-1, ...332-N)는 호스트로부터의 요청들에 대한 히트/미스 결정들을 수행하기 위하여 캐시에 의해 사용되고 업데이트될 수 있다.
각각의 캐시 라인은 대응하는 캐시 라인에 대한 청크 메타데이터(332-1, ...332-N)를 포함할 수 있다. 청크 메타데이터(332-1, ...332-N)는 명령들을 실행하기 위하여 사용될 수 있다. 예를 들어, 캐시 라인 상의 데이터의 일 부분에 대한 요청은, 요청 내의 데이터의 그 부분이 유효한지 및/또는 더티인지 여부를 결정하기 위하여, 캐시 라인 내의 데이터의 그 부분의 위치를 결정하기 위하여, 및/또는 캐시 라인으로부터 데이터의 그 부분을 검색하기 위하여 청크 메타데이터(332-1, ...332-N)를 사용함으로써 서비스될 수 있다. 캐시 제어기는 캐시에 데이터를 기입하거나 및/또는 이로부터 판독하기 위한 요청을 서비스하기 위해 청크 메타데이터(332-1, ...332-N)를 액세스할 수 있다.
각각의 캐시 라인은 대응하는 캐시 라인에 대한 데이터의 청크들(338-1-1, ..., 338-M-N)을 포함할 수 있다. 데이터의 청크들 데이터의 청크들(338-1-1, ..., 338-M-N)은, 요청을 서비스할 때, 캐시에 의해 청크 단위로 액세스될 수 있다. 데이터의 각각의 청크(338-1-1, ..., 338-M-N)는 128B의 데이터를 포함할 수 있으며, 캐시 라인은, 예를 들어, 4KB의 데이터를 저장하기 위하여 128개의 청크들을 포함할 수 있다.
도 4는 본 개시의 다수의 실시예들에 따른 캐시 라인의 도면이다. 캐시 라인(430)은 메타데이터(432), 청크 메타데이터(434), 태그 데이터(436), 및 데이터의 복수의 청크들(438-1 ..., 438-N)을 포함할 수 있다.
캐시 제어기는 데이터에 대한 요청(예를 들어 캐시에 데이터를 기입하거나 및/또는 이로부터 판독하기 위한 요청)을 수신하는 것에 응답하여 캐시 라인(430) 내의 데이터의 청크들(438-1 ..., 438-N)을 액세스할 수 있다. 요청이 수신되었을 때 캐시 라인 내에 존재했던 요청에 대응하는 데이터의 복수의 청크들(438-1 ..., 438-N)의 일 부분이 판독되고 캐시 제어기 및/또는 호스트로 반환될 수 있다. 예를 들어, 데이터에 대한 요청은, 데이터의 청크들(438-2, 438-3, 438-4, 및 438-5)을 반환함으로써 서비스될 수 있다. 캐시 제어기는, 캐시 제어기 상의 버퍼 내에 저장된 캐시에 대한 메타데이터를 사용함으로써 데이터의 청크들(438-1 ..., 438-N)이 요청에 대응하는지 여부를 결정할 수 있다.
복수의 실시예들에 있어서, 캐시는 더티인 데이터의 청크들(438-1 ..., 438-N)의 일 부분을 기입할 수 있다. 또한, 캐시로부터 퇴거될 캐시 라인을 선택할 때, 캐시로부터 캐시 라인을 퇴거시킬 때 메모리 디바이스에 데이터의 더 적은 청크들이 기입되도록 가장 적은 더티 청크들을 갖는 캐시 라인이 선택될 수 있다.
캐시 제어기는, 요청이 히트라고 결정하는 것에 응답하여, 캐시로 하여금 캐시 내의 데이터의 더티 청크들을 메모리 디바이스로 기입하게끔 하기 위한 명령들을 발행한다. 캐시 제어기는, 요청이 히트라고 결정하는 것에 응답하여, 캐시로 하여금 요청이 수신되었을 때 무효였으며 요청과 연관되지 않은 캐시 라인 내의 데이터의 청크들을 교체하게끔 하기 위한 명령들을 발행한다.
캐시 제어기는, 캐시 라인들로부터 퇴거되지 않을 데이터의 특정 청크들을 우선순위화할 수 있다. 데이터의 청크들은 데이터가 얼마나 자주 액세스될지 및/또는 데이터의 유형에 기초하여 우선순위화될 수 있다. 캐시 제어기는, 데이터의 청크들에 대한 요청을 수신하기 이전에 메모리 디바이스로부터의 데이터의 청크들을 캐시에 기입할 수 있다(예를 들어, 프리-페치). 메모리 디바이스의 일 부분으로부터의 데이터의 청크들은 메모리의 그 부분에 대응하는 캐시 라인을 적어도 부분적으로 채우기 위하여 프리-페치되어 캐시 내에 저장될 수 있다.
복수의 실시예들에 있어서, 캐시 제어기는, 명령들을 서비스하지 않을 때 데이터의 더티 청크들을 메모리 디바이스에 기입할 수 있다. 또한, 캐시 제어기는 호스트로부터의 명령에 기초하여 캐시 내에 남아 있을 데이터의 청크들을 선택할 수 있다. 호스트는 캐시 내에 갖기를 희망하는 데이터의 부분들을 식별할 수 있으며, 캐시 제어기는, 이들이 결코 캐시로부터 퇴거되지 않도록 캐시 내의 데이터의 이러한 부분들을 고정할 수 있다.
특정 실시예들이 본 명세서에 예시되고 기재되었지만, 동일한 결과들을 달성하도록 계산된 배치가 도시된 특정 실시예들로 치환될 수 있다는 것을 당업자는 인식할 것이다. 본 개시는 본 개시의 다양한 실시예들의 적응들 또는 변형들 커버하도록 의도된다. 이상의 설명이 제한적인 방식이 아니라 예시적인 방식으로 이루어졌다는 것이 이해될 것이다. 이상의 실시예들의 조합, 및 본 명세서에 특별히 기재되지 않은 다른 실시예들은 이상의 설명을 검토할 때 당업자에게 명백해질 것이다. 본 개시의 다양한 실시예들의 범위는, 이상의 구조들 및 방법들이 사용되는 다른 애플리케이션들을 포함한다. 따라서, 본 개시의 다양한 실시예들의 범위는, 이러한 청구항들이 지칭하는 등가물들의 전체 범위와 함께 첨부된 청구항들을 참조하여 결정되어야 한다.
이상의 상세한 설명에서, 다양한 특징들은 본 개시를 간소화하기 위해 단일 실시예에서 함께 그룹화된다. 본 개시의 이러한 방법은, 본 개시의 개시된 실시예들이 각 청구항에 특별히 언급된 것보다 더 많은 특징들을 이용해야 한다는 의도를 반영하는 것으로 해석되지 않는다. 오히려, 다음의 청구항들을 반영할 때, 본 발명의 주제는 단일의 개시된 실시예의 모든 특징들보다 더 적다. 따라서, 다음의 청구항들은 이를 통해 상세한 설명에 병합되며, 각 청구항은 개별적인 실시예로서 스스로에 의존한다.
Claims (23)
- 장치로서,
캐시 제어기; 및
상기 캐시 제어기에 결합된 캐시 및 메모리 디바이스를 포함하며, 상기 캐시 제어기는 상기 캐시로 하여금:
상기 캐시 내의 복수의 캐시 라인들 내에 데이터를 저장하게끔 하기 위한 명령들을 발행하도록 구성되며, 상기 복수의 캐시 라인들의 각각은 개별적으로 액세스될 수 있는 데이터의 복수의 청크(chunk)들을 포함하는, 장치.
- 청구항 1에 있어서, 상기 복수의 캐시 라인들의 각각은 메타데이터, 청크 메타데이터, 태그 정보, 및 상기 데이터의 복수의 청크들을 포함하는, 장치.
- 청구항 1 내지 청구항 2 중 어느 한 항에 있어서, 상기 캐시 제어기는 명령을 실행하는 동안 상기 캐시로 하여금 특정 캐시 엔트리 내의 상기 데이터의 복수의 청크들의 일 부분을 액세스하게끔 하도록 구성되는, 장치.
- 청구항 1에 있어서, 상기 복수의 캐시 라인들의 각각은 상기 캐시 제어기 상의 버퍼를 사용하여 관리되는 메타데이터를 포함하는, 장치.
- 청구항 1, 청구항 2, 및 청구항 4 중 어느 한 항에 있어서, 상기 복수의 캐시 라인들의 각각은, 명령들이 실행됨에 따라 상기 캐시 제어기에 의해 관리되고 업데이트되는 청크 메타데이터를 포함하는, 장치.
- 장치로서,
캐시 제어기; 및
상기 캐시 제어기에 결합된 캐시 및 메모리 디바이스를 포함하며, 상기 캐시 제어기는 상기 캐시로 하여금:
요청을 수신하는 것에 응답하여 상기 캐시의 캐시 라인 내의 데이터의 복수의 청크들을 액세스하게끔 하기 위한 명령들을 발행하도록 구성되고, 상기 캐시 제어기는 상기 캐시 제어기 상의 버퍼를 사용하여 상기 요청을 관리하며, 상기 캐시 제어기는 상기 요청에 대응하는 상기 캐시 내의 상기 데이터의 복수의 청크들 중 일 부분을 반환함으로써 상기 요청을 서비스하는, 장치.
- 청구항 6에 있어서, 상기 캐시 제어기는, 캐시 제어기가 상기 요청이 히트라고 결정하는 것에 응답하여, 상기 캐시로 하여금 상기 요청이 수신되었을 때 상기 캐시 라인 내에 존재했던 상기 요청에 대응하는 상기 데이터의 복수의 청크들의 상기 부분을 반환하게끔 하기 위한 명령들을 발행하도록 구성되는, 장치.
- 청구항 6 내지 청구항 7 중 어느 한 항에 있어서, 상기 캐시 제어기는, 상기 캐시 제어기가 상기 요청이 미스라고 결정하는 것에 응답하여, 상기 캐시로 하여금 상기 메모리 디바이스로부터 상기 요청에 대응하는 상기 데이터의 복수의 청크들의 상기 부분을 검색하게끔 하기 위한 명령들을 발행하도록 구성되는, 장치.
- 장치로서,
캐시 제어기; 및
상기 캐시 제어기에 결합된 캐시 및 메모리 디바이스를 포함하며, 상기 캐시 제어기는:
호스트로부터 요청들을 수신하고;
상기 캐시 제어기 상의 버퍼를 사용하여 상기 요청들을 관리하며; 및
상기 캐시의 캐시 라인들로부터 데이터의 청크들을 상기 호스트로 반환함으로써 명령들을 서비스하도록 구성되고, 상기 데이터의 청크들은 상기 캐시 라인들로부터의 상기 데이터의 일 부분인, 장치.
- 청구항 10에 있어서, 상기 캐시 제어기는, 상기 캐시 라인들로부터 퇴거되지 않을 데이터의 특정 청크들을 우선순위화하도록 구성되는, 장치.
- 청구항 9 내지 청구항 10 중 어는 한 항에 있어서, 상기 캐시 제어기는, 상기 데이터의 청크들에 대한 요청을 수신하기 이전에 상기 메모리 디바이스로부터의 상기 데이터의 청크들을 상기 캐시에 기입하도록 구성되는, 장치.
- 청구항 9에 있어서, 상기 캐시 제어기는, 명령들을 서비스하지 않을 때 데이터의 더티(dirty) 청크들을 상기 메모리 디바이스에 기입하도록 구성되는, 장치.
- 청구항 9, 청구항 10, 및 청구항 12 중 어느 한 항에 있어서, 상기 캐시 제어기는 상기 호스트로부터의 명령에 기초하여 상기 캐시 내에 남아 있을 데이터의 청크들을 선택하도록 구성되는, 장치.
- 방법으로서,
캐시 제어기에서 데이터에 대한 요청을 수신하는 단계;
상기 캐시 제어기 상의 버퍼를 사용하여 상기 요청과 연관된 데이터가 캐시 내에 존재하는지 여부를 결정하는 단계; 및
상기 요청이 히트라고 결정하는 것에 응답하여, 상기 버퍼에 의해 표시되는 캐시 라인으로부터 데이터의 복수의 청크들을 반환함으로써 상기 요청을 서비스하는 단계로서, 상기 데이터의 복수의 청크들은 상기 캐시 라인 상의 상기 데이터의 일 부분인, 단계를 포함하는, 방법.
- 청구항 14에 있어서, 상기 요청이 미스라고 결정하는 것에 응답하여, 메모리 디바이스로부터 상기 요청과 연관된 데이터의 복수의 청크들을 상기 버퍼에 의해 표시되는 캐시 라인에 기입함으로써 상기 요청을 서비스하는 단계를 더 포함하는, 방법.
- 청구항 15에 있어서, 상기 요청이 미스라고 결정하는 것에 응답하여, 상기 버퍼에 의해 표시되는 캐시 라인으로부터 데이터의 복수의 청크들을 반환함으로써 상기 요청을 서비스하는 단계를 더 포함하는, 방법.
- 청구항 14 내지 청구항 16 중 어느 한 항에 있어서, 상기 요청이 미스라고 결정하는 것에 응답하여, 상기 요청이 수신되었을 때 상기 캐시 라인 내에 존재했던 상기 캐시 라인 내의 데이터의 복수의 더티 청크들을 상기 캐시 제어기 및 상기 캐시에 결합된 메모리 디바이스에 기입함으로써 상기 요청을 서비스하는 단계를 더 포함하는, 방법.
- 청구항 14 내지 청구항 16 중 어느 한 항에 있어서, 상기 요청이 미스라고 결정하는 것에 응답하여, 상기 캐시 내의 다른 캐시 라인들보다 더 적은 더티 청크들을 갖는 캐시 라인에 기초하여 상기 캐시 라인을 선택함으로써 상기 요청을 서비스하는 단계를 더 포함하는, 방법.
- 청구항 14 내지 청구항 16 중 어느 한 항에 있어서, 상기 요청이 히트라고 결정하는 것에 응답하여, 상기 요청이 수신되었을 때 무효였으며 상기 요청과 연관되지 않은 상기 캐시 라인 내의 데이터의 복수의 청크들을 교체함으로써 상기 요청을 서비스하는 단계를 더 포함하는, 방법.
- 청구항 14에 있어서, 상기 요청을 서비스하는 단계는 상기 데이터의 복수의 청크들과 연관된 청크 메타데이터를 업데이트하는 단계를 포함하는, 방법.
- 청구항 14 내지 청구항 16 및 청구항 20 중 어느 한 항에 있어서, 명령을 실행하는 동안 특정 캐시 엔트리 내의 상기 데이터의 복수의 청크들의 일 부분을 액세스하는 단계를 더 포함하는, 방법.
- 청구항 14 내지 청구항 16 및 청구항 20 중 어느 한 항에 있어서, 상기 캐시 제어기 상의 상기 버퍼를 사용하여 상기 캐시 내의 상기 데이터를 관리하는 단계를 더 포함하는, 방법.
- 청구항 14 내지 청구항 16 및 청구항 20 중 어느 한 항에 있어서, 명령들이 실행됨에 따라 상기 캐시 제어기에 의해 청크 메타데이터를 관리하는 단계를 더 포함하는, 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/690,503 | 2017-08-30 | ||
US15/690,503 US11188234B2 (en) | 2017-08-30 | 2017-08-30 | Cache line data |
PCT/US2018/048296 WO2019046268A1 (en) | 2017-08-30 | 2018-08-28 | CACHE LINE DATA |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20200035311A true KR20200035311A (ko) | 2020-04-02 |
Family
ID=65437624
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207007517A KR20200035311A (ko) | 2017-08-30 | 2018-08-28 | 캐시 라인 데이터 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11188234B2 (ko) |
EP (1) | EP3676716A4 (ko) |
KR (1) | KR20200035311A (ko) |
CN (1) | CN111052096A (ko) |
WO (1) | WO2019046268A1 (ko) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210126984A (ko) * | 2020-04-13 | 2021-10-21 | 에스케이하이닉스 주식회사 | 스토리지 장치 및 그 동작 방법 |
US11436148B2 (en) | 2020-06-30 | 2022-09-06 | SK Hynix Inc. | Memory controller and method of operating the same |
US11449235B2 (en) | 2020-06-25 | 2022-09-20 | SK Hynix Inc. | Storage device for processing merged transactions and method of operating the same |
WO2023121933A1 (en) * | 2021-12-21 | 2023-06-29 | Advanced Micro Devices, Inc. | Cache associativity allocation |
US11755476B2 (en) | 2020-04-13 | 2023-09-12 | SK Hynix Inc. | Memory controller, storage device including the memory controller, and method of operating the memory controller and the storage device |
US11829190B2 (en) | 2021-12-21 | 2023-11-28 | Advanced Micro Devices, Inc. | Data routing for efficient decompression of compressed data stored in a cache |
US11836088B2 (en) | 2021-12-21 | 2023-12-05 | Advanced Micro Devices, Inc. | Guided cache replacement |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200104601A (ko) | 2019-02-27 | 2020-09-04 | 에스케이하이닉스 주식회사 | 컨트롤러, 메모리 시스템 및 그것의 동작 방법 |
KR102456173B1 (ko) * | 2017-10-27 | 2022-10-18 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
US12118241B2 (en) | 2017-10-27 | 2024-10-15 | SK Hynix Inc. | Memory controller, memory system, and operating method thereof |
CN111538677B (zh) * | 2020-04-26 | 2023-09-05 | 西安万像电子科技有限公司 | 数据处理方法及装置 |
WO2022161619A1 (en) * | 2021-01-29 | 2022-08-04 | Huawei Technologies Co., Ltd. | A controller, a computing arrangement, and a method for increasing readhits in a multi-queue cache |
US20240103762A1 (en) * | 2022-09-23 | 2024-03-28 | Western Digital Technologies, Inc. | Automated Fast Path Processing |
US20240134801A1 (en) * | 2022-10-19 | 2024-04-25 | Samsung Electronics Co., Ltd. | Methods and system for efficient access to solid state drive |
CN117609314A (zh) * | 2024-01-22 | 2024-02-27 | 北京象帝先计算技术有限公司 | 一种缓存数据处理方法、缓存控制器、芯片及电子设备 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5542066A (en) | 1993-12-23 | 1996-07-30 | International Business Machines Corporation | Destaging modified data blocks from cache memory |
US6463506B1 (en) * | 2000-04-29 | 2002-10-08 | Hewlett-Packard Company | Arrangement of data within cache lines so that tags are first data received |
WO2003067799A2 (en) * | 2002-02-04 | 2003-08-14 | Intel Corporation | System and method for packet storage and retrieval |
US20030212865A1 (en) * | 2002-05-08 | 2003-11-13 | Hicken Michael S. | Method and apparatus for flushing write cache data |
US20070079070A1 (en) | 2005-09-30 | 2007-04-05 | Arm Limited | Cache controller |
US8200917B2 (en) | 2007-09-26 | 2012-06-12 | Qualcomm Incorporated | Multi-media processor cache with cache line locking and unlocking |
US8606996B2 (en) | 2008-03-31 | 2013-12-10 | Amazon Technologies, Inc. | Cache optimization |
US20110238925A1 (en) | 2008-10-02 | 2011-09-29 | Dan Robinson | Cache controller and method of operation |
US8352646B2 (en) | 2010-12-16 | 2013-01-08 | International Business Machines Corporation | Direct access to cache memory |
US9003104B2 (en) * | 2011-02-15 | 2015-04-07 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a file-level cache |
US9330007B2 (en) * | 2012-11-30 | 2016-05-03 | Dell Products, Lp | Systems and methods for dynamic optimization of flash cache in storage devices |
US9448941B1 (en) | 2012-12-31 | 2016-09-20 | Emc Corporation | System and method for cache management |
US9430386B2 (en) * | 2013-03-15 | 2016-08-30 | Bitmicro Networks, Inc. | Multi-leveled cache management in a hybrid storage system |
CN105190569A (zh) | 2013-06-25 | 2015-12-23 | 惠普发展公司,有限责任合伙企业 | 从缓存存储器清除脏数据 |
US9864698B2 (en) | 2013-11-04 | 2018-01-09 | International Business Machines Corporation | Resolving cache lookup of large pages with variable granularity |
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 |
US9418013B2 (en) | 2014-06-30 | 2016-08-16 | Intel Corporation | Selective prefetching for a sectored cache |
WO2016097812A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Cache memory budgeted by chunks based on memory access type |
US9971686B2 (en) * | 2015-02-23 | 2018-05-15 | Intel Corporation | Vector cache line write back processors, methods, systems, and instructions |
JP2017010396A (ja) | 2015-06-24 | 2017-01-12 | 富士通株式会社 | ストレージ装置、キャッシュ書込制御方法及びキャッシュ書込制御プログラム |
CN105446777B (zh) * | 2015-11-18 | 2019-06-04 | 上海兆芯集成电路有限公司 | 高速缓存行的非对齐加载指令的推测并行执行方法 |
-
2017
- 2017-08-30 US US15/690,503 patent/US11188234B2/en active Active
-
2018
- 2018-08-28 CN CN201880055361.2A patent/CN111052096A/zh not_active Withdrawn
- 2018-08-28 EP EP18850993.9A patent/EP3676716A4/en not_active Withdrawn
- 2018-08-28 KR KR1020207007517A patent/KR20200035311A/ko not_active IP Right Cessation
- 2018-08-28 WO PCT/US2018/048296 patent/WO2019046268A1/en unknown
-
2021
- 2021-11-29 US US17/537,227 patent/US11822790B2/en active Active
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210126984A (ko) * | 2020-04-13 | 2021-10-21 | 에스케이하이닉스 주식회사 | 스토리지 장치 및 그 동작 방법 |
US11494313B2 (en) | 2020-04-13 | 2022-11-08 | SK Hynix Inc. | Cache memory including dedicated areas, storage device and method for storing data in the dedicated areas of the cache memory |
US11755476B2 (en) | 2020-04-13 | 2023-09-12 | SK Hynix Inc. | Memory controller, storage device including the memory controller, and method of operating the memory controller and the storage device |
US11934309B2 (en) | 2020-04-13 | 2024-03-19 | SK Hynix Inc. | Memory controller, storage device including the memory controller, and method of operating the memory controller and the storage device |
US11449235B2 (en) | 2020-06-25 | 2022-09-20 | SK Hynix Inc. | Storage device for processing merged transactions and method of operating the same |
US11436148B2 (en) | 2020-06-30 | 2022-09-06 | SK Hynix Inc. | Memory controller and method of operating the same |
WO2023121933A1 (en) * | 2021-12-21 | 2023-06-29 | Advanced Micro Devices, Inc. | Cache associativity allocation |
US11829190B2 (en) | 2021-12-21 | 2023-11-28 | Advanced Micro Devices, Inc. | Data routing for efficient decompression of compressed data stored in a cache |
US11836088B2 (en) | 2021-12-21 | 2023-12-05 | Advanced Micro Devices, Inc. | Guided cache replacement |
Also Published As
Publication number | Publication date |
---|---|
US20220083236A1 (en) | 2022-03-17 |
US11822790B2 (en) | 2023-11-21 |
US20190065072A1 (en) | 2019-02-28 |
WO2019046268A1 (en) | 2019-03-07 |
US11188234B2 (en) | 2021-11-30 |
EP3676716A1 (en) | 2020-07-08 |
EP3676716A4 (en) | 2021-06-02 |
CN111052096A (zh) | 2020-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11822790B2 (en) | Cache line data | |
US11055230B2 (en) | Logical to physical mapping | |
US10725835B2 (en) | System and method for speculative execution of commands using a controller memory buffer | |
CN110083545B (zh) | 数据存储装置及其操作方法 | |
US10824568B2 (en) | Speculative pre-fetching of flash translation layer tables for use with solid state systems | |
US20090235014A1 (en) | Storage device and computing system | |
US9195579B2 (en) | Page replacement method and memory system using the same | |
US10691347B2 (en) | Extended line width memory-side cache systems and methods | |
KR20170087043A (ko) | 저속 메모리를 이용하여 페이지 리맵핑 방식으로 바이트 어드레스 지정 능력 및 근-dram 성능을 달성하는 메커니즘 | |
CN114175001B (zh) | 存储器感知预取和高速缓存旁路系统和方法 | |
EP3926451B1 (en) | Communication of data relocation information by storage device to host to improve system performance | |
KR20190128743A (ko) | 프로그래밍 가능한 버퍼 및 캐시 크기의 메모리 프로토콜 | |
CN115809018A (zh) | 改善系统的读取性能的设备和方法 | |
US11175859B1 (en) | Managing memory commands in a memory subsystem by adjusting a maximum number of low priority commands in a DRAM controller | |
US11704236B2 (en) | Method and storage system with a layered caching policy | |
US10402337B2 (en) | Cache filter | |
US20140281157A1 (en) | Memory system, memory controller and method | |
EP3676715B1 (en) | Cache buffer | |
EP4202693A1 (en) | Cache evictions management in a two level memory controller mode | |
KR20240050567A (ko) | 메모리 시스템 및 호스트 장치 | |
WO2017091197A1 (en) | Cache manager-controlled memory array |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
AMND | Amendment | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
AMND | Amendment | ||
X601 | Decision of rejection after re-examination |