KR20220065817A - 하이브리드 dimm의 전송 파이프라인에서의 데이터 의존도 관리 - Google Patents

하이브리드 dimm의 전송 파이프라인에서의 데이터 의존도 관리 Download PDF

Info

Publication number
KR20220065817A
KR20220065817A KR1020227012706A KR20227012706A KR20220065817A KR 20220065817 A KR20220065817 A KR 20220065817A KR 1020227012706 A KR1020227012706 A KR 1020227012706A KR 20227012706 A KR20227012706 A KR 20227012706A KR 20220065817 A KR20220065817 A KR 20220065817A
Authority
KR
South Korea
Prior art keywords
data
memory
sector
access operation
memory component
Prior art date
Application number
KR1020227012706A
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 KR20220065817A publication Critical patent/KR20220065817A/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/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C14/00Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
    • G11C14/0009Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a DRAM cell
    • G11C14/0018Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a DRAM cell whereby the nonvolatile element is an EEPROM element, e.g. a floating gate or metal-nitride-oxide-silicon [MNOS] transistor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C14/00Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
    • G11C14/0009Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a DRAM cell
    • G11C14/0045Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a DRAM cell and the nonvolatile element is a resistive RAM element, i.e. programmable resistors, e.g. formed of phase change or chalcogenide material
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • 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/283Plural cache memories
    • 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/604Details relating to cache allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

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)
  • Microelectronics & Electronic Packaging (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

제1 메모리 컴포넌트, 제1 메모리 구성요소보다 낮은 액세스 레이턴시를 갖고 제1 메모리 컴포넌트를 위한 캐시의 역할을 하는 제2 메모리 컴포넌트, 및 제1 및 제2 메모리 컴포넌트들에 동작 가능하게 결합된 처리 장치를 포함하는 시스템 및 방법이 개시된다. 처리 장치는 데이터 액세스 동작을 수신하는 단계, 및 데이터 구조가 데이터 액세스 동작의 물리적 어드레스와 연관된 데이터의 미해결 데이터 전송의 표시를 포함한다고 결정하는 것에 응답하여, 물리적 어드레스와 관련된 데이터를 제1 메모리 컴포넌트로부터 제2 메모리 컴포넌트로 복사하는 동작이 실행되도록 스케줄링되는지 여부를 결정하는 단계를 포함하는 동작들을 수행할 수 있다. 처리 장치는 데이터를 복사하는 동작이 실행될 때까지 데이터 액세스 동작의 실행의 스케줄링을 지연시키기로 결정하는 단계를 포함하는 동작들을 더 수행할 수 있다.

Description

하이브리드 DIMM의 전송 파이프라인에서의 데이터 의존도 관리
본 개시의 실시예들은 일반적으로 메모리 서브 시스템에 관한 것으로, 보다 구체적으로는, 하이브리드 듀얼 인-라인 메모리 모듈의 전송 파이프라인에서의 데이터 의존도를 관리하는 것에 관한 것이다.
메모리 서브 시스템은 데이터를 저장하는 하나 이상의 메모리 장치들을 포함할 수 있다. 메모리 장치들은 예를 들어, 비발성 메모리 장치들 및 휘발성 메모리 장치들일 수 있다. 일반적으로, 호스트 시스템은 메모리 서브 시스템을 사용하여 메모리 장치들에 데이터를 저장하고 메모리 장치들로부터 데이터를 검색할 수 있다.
본 개시는 이하의 상세한 설명 및 본 개시의 다양한 실시예들의 첨부 도면들로부터 보다 완전하게 이해될 것이다.
도 1은 본 개시의 일부 실시예들에 따른 메모리 서브 시스템을 포함하는 예시적인 컴퓨팅 시스템을 예시한다.
도 2는 본 개시의 일부 실시예들에 따른, 전송 파이프라인에서의 데이터 의존도를 관리하기 위한 예시적인 방법의 흐름도이다.
도 3은 본 개시의 일부 실시예들에 따른, 전송 파이프라인에서의 데이터 의존도를 관리하기 위한 또 다른 예시적인 방법의 흐름도이다.
도 4는 본 개시의 일부 실시예들에 따른, 섹터 축출 전송(sector evict transfer)에 관한 동작들을 수행하기 위한 예시적인 방법의 흐름도이다.
도 5는 본 개시의 구현들이 동작할 수 있는 예시적인 컴퓨터 시스템의 블록도이다.
본 개시의 양태들은 하이브리드 듀얼 인-라인 메모리 모듈(DIMM)의 전송 파이프라인에서의 데이터 의존도를 관리하는 것에 관한 것이다. 메모리 서브 시스템은 저장 장치, 메모리 모듈 또는 저장 장치와 메모리 모듈의 하이브리드일 수 있다. 저장 장치들과 메모리 모듈들의 예들은 도 1과 함께 하기에 설명된다. 일반적으로, 호스트 시스템은 데이터를 저장하는 메모리 장치들과 같은, 하나 이상의 메모리 컴포넌트들을 포함하는 메모리 서브 시스템을 이용할 수 있다. 호스트 시스템은 메모리 서브 시스템에 저장될 데이터를 제공할 수 있으며 검색될 데이터를 메모리 서브 시스템에 요청할 수 있다.
메모리 서브시스템은 비휘발성 및 휘발성 메모리 장치들 둘 다를 포함할 수 있다. 비휘발성 메모리 장치들의 한 예는 네거티브-앤드(NAND) 메모리 장치이다. 다른 예는 비휘발성 메모리 셀들의 크로스 포인트 어레이인, 3차원 크로스 포인트("3D 크로스 포인트") 메모리 장치이다. 비휘발성 메모리 장치들의 다른 예들은 도 1과 함께 하기에 설명된다. 비휘발성 메모리 장치는 하나 이상의 다이들의 패키지이다. 패키지들 내의 다이들은 메모리 서브 시스템 컨트롤러와 통신하기 위해 하나 이상의 채널들에 할당될 수 있다. 각 다이는 메모리 셀("셀") 세트를 포함할 수 있다. 셀은 정보를 저장하는 전기 회로이다. 셀 유형에 따라, 셀은 1비트 이상의 이진 정보를 저장할 수 있으며, 저장되는 비트 수와 관련된 다양한 논리 상태들을 갖는다. 논리 상태들은 "0" 및 "1"과 같은 이진 값들 또는 이러한 값들의 조합들로 나타낼 수 있다. 비휘발성 메모리 장치들은 비휘발성 메모리 셀들의 크로스 포인트 어레이이고, 스택 가능한 크로스 그리드 데이터 액세스 어레이(stackable cross-gridded data access array)와 함께, 벌크 저항의 변화에 기초하여 비트 저장을 수행할 수 있는 3차원 크로스 포인트("3D 크로스 포인트") 메모리 장치들을 포함할 수 있다. 추가로, 많은 플래시 기반 메모리들과 달리, 크로스포인트 비휘발성 메모리는 라이트 인 플레이스(write in-place) 동작을 수행할 수 있으며, 여기서 비휘발성 메모리 셀은 비휘발성 메모리 셀이 미리 소거되지 않고 프로그래밍될 수 있다. 이러한 비휘발성 메모리 장치들은 관리 유닛들(MU들)을 형성하기 위해 다이들과 채널들에 걸쳐 페이지들을 그룹화할 수 있다.
메모리 서브시스템은 단일 DIMM 패키지에서 제1 유형의 메모리 장치(예를 들어, 3D 크로스 포인트 매체) 및 제2 유형의 메모리 장치(예를 들어, 동적 랜덤 액세스 메모리(DRAM))을 포함하는 하이브리드 DIMM일 수 있다. 제1 유형의 메모리 장치(예를 들어, 제1 메모리 유형)는 큰 저장 용량을 갖지만 높은 액세스 레이턴시를 가질 수 있는 반면, 제2 유형의 메모리 장치(예를 들어, 제2 메모리 유형)는 더 적은 양의 휘발성 메모리를 갖지만 더 낮은 액세스 레이턴시를 가질 수 있다. 캐시 매니저는 제1 유형의 메모리 장치와 제2 유형의 메모리 장치 간에 데이터의 검색, 저장 및 전달을 관리할 수 있다. 제1 유형의 메모리 장치(예를 들어, 3D 크로스 포인트)와 제2 유형의 메모리 장치(예를 들어, DRAM) 간의 데이터 전송은 호스트 시스템으로부터의 데이터 액세스 명령(예를 들어, 판독 액세스 명령 및 기입 액세스 명령)을 처리하는 캐시 매니저의 처리 속도에 비해 처리하는 데 더 많은 시간이 필요하다.
캐시 매니저는 제2 유형의 메모리가 제1 메모리 유형에 대한 캐시 역할을 하도록 한다. 따라서, 제1 메모리 유형의 높은 레이턴시는 캐시 히트율이 높은 경우 제2 메모리 유형의 낮은 레이턴시로 마스킹될 수 있다. 예를 들어, DRAM 메모리 장치 또는 기타 휘발성 메모리는 3D 크로스 포인트 메모리 장치용 캐시 메모리, 또는 저장 클래스 메모리(SCM)와 같은 기타 비휘발성 메모리 장치로 사용될 수 있다. 호스트 시스템은 하이브리드 DIMM을 활용하여 3D 크로스 포인트 메모리에서 데이터를 검색하고 저장할 수 있다. 하이브리드 DIMM은 버스 인터페이스(예를 들어, DIMM 커넥터)를 통해 호스트 시스템과 결합될 수 있다. DIMM 커넥터는 하이브리드 DIMM과 호스트 시스템 간의 동기식 또는 비동기식 인터페이스일 수 있다. 호스트 시스템이 판독 액세스 명령과 같은 데이터 액세스 명령을 제공하면, 해당 데이터는 3D 크로스 포인트 메모리로부터 또는 3D 크로스 포인트 메모리용 캐시 메모리인 하이브리드 DIMM의 다른 메모리 장치로부터 호스트 시스템으로 반환될 수 있다.
DRAM은 또한 캐시 매니저에 비해 레이턴시가 길 수 있다. 예를 들어, 캐시 조회는 데이터가 한 장치에서 다른 장치로 이동되어야 하는 방법을 결정하기 위해 몇 사이클(예를 들어, 4 사이클)가 걸릴 수 있다. 다수의 데이터 전송이 데이터 파이프라인으로 구현되면, 처리량이 훨씬 더 높을 수 있다(예를 들어, 컴포넌트의 처리량에 의해 제한되지 않은 경우, 모든 클록 사이클). 따라서, 데이터 전송(예를 들어, 판독 동작, 기입 동작, 삭제 동작 등과 같은 데이터 액세스 동작)이 수행되는 시간 동안, 수십 개의 조회 결과를 사용할 수 있으므로 더 많은 데이터 전송이 수행되어야 한다.
기존의 메모리 시스템들에서, 모든 데이터 전송은 데이터 의존도와 관련된 문제를 방지하기 위해 캐시 조회 결과(예를 들어, 선입, 선출, 이하 "FIFO")에 의해 결정된 순서대로 정렬(예를 들어, 큐잉)될 수 있다. 데이터 의존도는 데이터 전송 또는 데이터 액세스 요청이 선행 데이터 전송 또는 데이터 액세스 요청에 의해 동작되는 데이터를 참조하는 상황이다. 예를 들어, 캐시 매니저는 물리적 어드레스에 대한 기입 액세스 명령을 수신한 후, 동일한 물리적 어드레스에 대한 판독 액세스 명령을 수신할 수 있다. 판독 액세스 명령이 기입 액세스 명령 전에 수행되는 경우, 기입 액세스 명령이 아직 처리되지 않았기 때문에, 판독 액세스 명령은 잘못된 데이터를 판독할 것이다. 그러나, 데이터 전송을 순서대로 정렬하는 것은 바람직하지 않을 수 있는데, 이는 모든 데이터 전송에 데이터 의존도가 있는 것은 아니며 대부분의 데이터 전송이 비순차적으로 발행되고 완료될 수 있기 때문이다. 비순차적으로 데이터 액세스 명령들을 완료하면 판독 및 기입 동작들 사이를 자주 전환하고, 상기 블록 또는 다이에 대한 미해결 데이터 액세스 명령들이 아직 큐잉 중인 경우 다른 블록 또는 다이로 전환하여 발생하는 레이턴시를 줄일 수 있다.
본 개시의 양태들은 데이터 의존도를 관리하기 위한 방식 세트를 구현함으로써 상기 및 다른 결점들을 다룬다. 일부 실시예들에서, 하이브리드 DIMM의 DRAM은 최근에 액세스된 데이터 및/또는 비휘발성 메모리로부터 많이 액세스된 데이터를 저장하는 데이터 캐시로 구성될 수 있으므로, 이러한 데이터는 호스트 시스템에 의해 빠르게 액세스될 수 있다. 일 실시예에서, DRAM 데이터 캐시는 상이한 데이터 크기들로 관리되는 2개의 상이한 데이터 캐시들로 분할될 수 있다. 파티션들 중 하나는 더 큰 입도(더 큰 크기)를 사용하는 페이지 캐시를 포함할 수 있고, 두 번째 파티션은 더 작은 입도(더 작은 크기)를 사용하는 섹터 캐시를 포함할 수 있다. 페이지 캐시는 더 큰 데이터 크기를 사용하기 때문에, 더 적은 메타데이터가 데이터(예를 들어, 전체 페이지에 대해 단일의 유효한 비트만 사용)를 관리하는 데 사용된다. 섹터 캐시의 데이터 크기가 작을수록 더 많은 양의 메타데이터(예를 들어, 태그와 함께 더 많은 유효 비트 및 더티 비트)를 사용하지만, 호스트 액세스 데이터가 더 세분화하여 추적될 수 있도록 함으로써 DRAM 데이터 캐시의 전체 캐시 히트율이 증가된다. 히트율은 비휘발성 메모리에서만 사용할 수 있는 데이터와 관련된 요청과 달리, DRAM 데이터 캐시에서 찾을 수 있는 데이터와 관련된 메모리 액세스 요청들의 일부 또는 퍼센티지를 나타낼 수 있다. DRAM 데이터 캐시의 히트율을 높이면 DRAM 메모리 컴포넌트만 있는 DIMM에 필적하는 성능을 제공할 수 있지만, DIMM에 비휘발성 메모리의 존재는 추가로 더 큰 용량의 메모리, 저렴한 비용 및 영구 메모리 지원을 제공할 수 있다.
예시적인 예에서, 하이브리드 DIMM에 코히어런트 메모리를 제공하기 위해, 메모리 액세스 동작들 및 하나의 메모리 컴포넌트로부터 서로 의존하는 다른 컴포넌트로의 전송은 하이브리드 DIMM의 캐시 컨트롤러에 의해 관리될 수 있다. 특히, 긴 레이턴시 전송은 의존도 체인들을 유발할 수 있으므로, 의존하는 동작(예를 들어, 전송) 후에 종속 동작들이 추적 및 실행될 수 있다. 이러한 데이터 의존도를 관리하고 향상된 DIMM 성능도 제공하기 위해 방식 세트가 사용될 수 있다.. 내용 주소화 메모리(content-addressable memory; CAM) 데이터 구조 세트는 크로스 포인트 어레이 메모리와 DRAM 간의 모든 미해결 데이터 전송을 추적하는 데 사용될 수 있다. CAM 세트는 적어도 섹터 CAM 및 페이지 CAM을 포함할 수 있다. 섹터 전송(즉, DRAM의 섹터 캐시와 크로스 포인트 어레이 메모리 사이의 전송)을 실행하기 전에, 컨트롤러는 페이지 CAM과 섹터 CAM에서 조회를 수행하여 임의의 미해결 전송이 동일한 물리적 호스트 어드레스에서 수행되어야 하는지 여부를 결정할 수 있다. 히트가 있는 경우, 동일한 물리적 어드레스에서 미해결 전송이 완료될 때까지 전송이 시작되지 않을 것이다. 동일한 물리적 어드레스 간의 미해결 전송에 대한 히트가 없는 경우, 다른 전송에 따라 달라지지 않기 때문에 전송을 즉시 수행될 수 있다.
본 개시의 이점들은, 이에 제한되는 것은 아니나, 하이브리드 DIMM을 활용하고 있는 호스트 시스템의 개선된 성능을 포함한다. 예를 들어, 제1 메모리 컴포넌트와 제2 메모리 컴포넌트 사이의 캐싱 동작들은 하이브리드 DIMM 내부에 있을 수 있다. 따라서, 데이터가 DRAM 데이터 캐시에 저장될 크로스 포인트 어레이 메모리 컴포넌트로부터 전송될 때, 데이터 전송은 기입 동작들 및 판독 동작들을 송수신할 때 호스트 시스템에 의해 또한 사용되는 외부 버스 또는 인터페이스를 활용하지 않을 것이다. 또한, 본 개시는 하이브리드 DIMM의 메모리 컴포넌트들 사이의 긴 레이턴시 데이터 전송에도 불구하고 하이브리드 DIMM에서 코히어런트 메모리를 제공할 수 있다.
도 1은 본 개시의 일부 실시예들에 따른 메모리 서브 시스템(110)을 포함하는 예시적인 컴퓨팅 시스템(100)을 예시한다. 메모리 서브 시스템(110)은 하나 이상의 휘발성 메모리 장치들(예를 들어, 메모리 장치(140)), 하나 이상의 비휘발성 메모리 장치들(예를 들어, 메모리 장치(130)) 또는 이들의 조합과 같은 매체를 포함할 수 있다.
메모리 서브 시스템(110)은 저장 장치, 메모리 모듈 또는 저장 장치와 메모리 모듈의 하이브리드일 수 있다. 저장 장치의 예들은 솔리드 스테이트 드라이브(SSD), 플래시 드라이브, 범용 직렬 버스(USB) 플래시 드라이브, 임베디드 멀티미디어 컨트롤러(eMMC) 드라이브, 범용 플래시 메모리(UFS) 드라이브, 보안 디지털(SD) 카드 및 하드 디스크 드라이브(HDD)를 포함한다. 메모리 모듈들의 예들은 듀얼 인-라인 메모리 모듈(DIMM), 스몰 아웃라인 DIMM(SO-DIMM) 및 다양한 유형의 비휘발성 듀얼 인-라인 메모리 모듈들(NVDIMM들)을 포함한다.
컴퓨팅 시스템(100)은 데스크탑 컴퓨터, 랩탑 컴퓨터, 네트워크 서버, 모바일 장치, 차량(예를 들어, 비행기, 드론, 기차, 자동차 또는 기타 운송), 사물 인터넷 (IoT) 지원 장치, 임베디드 컴퓨터(예를 들어, 차량, 산업 장비 또는 네트워크로 연결된 상업용 장치에 포함된 컴퓨터)와 같은 컴퓨팅 장치, 또는 메모리와 처리 장치를 포함하는 이러한 컴퓨팅 장치일 수 있다.
컴퓨팅 시스템(100)은 하나 이상의 메모리 서브 시스템(110)에 결합되는 호스트 시스템(120)을 포함할 수 있다. 일부 실시예들에서, 호스트 시스템(120)은 다른 유형의 메모리 서브 시스템(110)에 결합된다. 도 1은 한 메모리 서브 시스템(110)에 결합된 호스트 시스템(120)의 일 예를 예시한다. 본원에 사용된 바와 같이, "~에 결합된(coupled to)" 또는 "~와 결합된(coupled with)"은 일반적으로 전기적, 광학적, 자기적 등과 같은 연결들을 포함하여 유선이든 또는 무선이든, 간접 통신 연결 또는 (예를 들어, 중간 컴포넌트들이 없는) 직접 통신 연결일 수 있는, 컴포넌트들 사이의 연결을 지칭한다.
호스트 시스템(120)은 프로세서 칩셋 및 프로세서 칩셋에 의해 실행되는 소프트웨어 스택을 포함할 수 있다. 프로세서 칩셋은 하나 이상의 코어들, 하나 이상의 캐시들, 메모리 컨트롤러(예를 들어, NVDIMM 컨트롤러) 및 스토리지 프로토콜 컨트롤러(예를 들어, PCIe 컨트롤러, SATA 컨트롤러)를 포함할 수 있다. 호스트 시스템(120)은 메모리 서브 시스템(110)을 사용하여, 예를 들어 메모리 서브 시스템(110)에 데이터를 기입하고 메모리 서브 시스템(110)으로부터 데이터를 판독한다.
호스트 시스템(120)은 물리적 호스트 인터페이스를 통해 메모리 서브 시스템(110)에 결합될 수 있다. 물리적 호스트 인터페이스의 예들은, 이에 제한되는 것은 아니나, 직렬 고급 기술 결합(SATA) 인터페이스, 주변 컴포넌트 상호 연결 익스프레스(PCIe) 인터페이스, 범용 직렬 버스(USB) 인터페이스, 광섬유 채널, 직렬 결합 SCSI(SAS), 이중 데이터 레이트(DDR) 메모리 버스, 스몰 컴퓨터 시스템 인터페이스(SCSI), 듀얼 인라인 메모리 모듈(DIMM) 인터페이스(예를 들어, 이중 데이터 레이트(DDR)를 지원하는 DIMM 소켓 인터페이스) 등을 포함한다. 물리적 호스트 인터페이스는 호스트 시스템(120)과 메모리 서브 시스템(110) 사이에서 데이터를 전송하는 데 사용될 수 있다. 호스트 시스템(120)은 메모리 서브 시스템(110)이 물리적 호스트 인터페이스(예를 들어, PCIe 버스)에 의해 호스트 시스템(120)과 결합되는 경우 NVM 익스프레스(NVMe) 인터페이스를 추가로 이용하여 컴포넌트들(예를 들어, 메모리 장치들(130))에 액세스할 수 있다. 물리적 호스트 인터페이스는 메모리 서브 시스템(110)과 호스트 시스템(120) 사이에서 제어, 어드레스, 데이터 및 기타 신호들을 전달하기 위한 인터페이스를 제공할 수 있다. 도 1은 일 예로서 메모리 서브 시스템(110)을 예시한다. 일반적으로, 호스트 시스템(120)은 동일한 통신 연결, 다수의 개별 통신 연결들 및/또는 통신 연결들의 조합을 통해 다수의 메모리 서브 시스템들에 액세스할 수 있다.
메모리 장치들(130, 140)은 상이한 유형의 비휘발성 메모리 장치들 및/또는 휘발성 메모리 장치들의 임의의 조합을 포함할 수 있다. 휘발성 메모리 장치들(예를 들어, 메모리 장치(140))은, 이에 제한되는 것은 아니나, 동적 랜덤 액세스 메모리(DRAM) 및 동기식 동적 랜덤 액세스 메모리(SDRAM)와 같은 랜덤 액세스 메모리(RAM)일 수 있다.
비휘발성 메모리 장치들(예를 들어, 메모리 장치(130))의 일부 예들은 네거티브-앤드(NAND)형 플래시 메모리 및 비휘발성 메모리 셀들의 크로스포인트 어레이인 3차원 크로스포인트("3D 크로스포인트")와 같은 라이트 인 플레이스(write-in-place) 메모리 장치를 포함한다. 비휘발성 메모리의 크로스포인트 어레이는 적층 가능한 크로스 그리드 데이터 액세스 어레이와 함께 벌크 저항의 변화에 기초하여 비트 저장을 수행할 수 있다. 추가로, 많은 플래시 기반 메모리들과 달리, 크로스포인트 비휘발성 메모리는 라이트 인 플레이스(write in-place) 동작을 수행할 수 있으며, 여기서 비휘발성 메모리 셀은 비휘발성 메모리 셀이 미리 소거되지 않고 프로그래밍될 수 있다. NAND형 플래시 메모리는 예를 들어 2차원 NAND(2D NAND) 및 3차원 NAND(3D NAND)를 포함한다.
메모리 장치들(130) 각각은 하나 이상의 메모리 셀 어레이들을 포함할 수 있다. 한 유형의 메모리 셀, 예를 들어 단일 레벨 셀들(SLC)은 셀 당 1 비트를 저장할 수 있다. 다중 레벨 셀들(MLC들), 트리플 레벨 셀들(TLC들), 쿼드 레벨 셀들(QLC들) 및 펜타 레벨 셀들(PLC들)과 같은 다른 유형의 메모리 셀들은 셀 당 다수의 비트들을 저장할 수 있다. 일부 실시예들에서, 메모리 장치들(130) 각각은 SLC들, MLC들, TLC들, QLC들, PLC들 또는 이들의 임의의 조합과 같은 하나 이상의 메모리 셀 어레이들을 포함할 수 있다. 일부 실시예들에서, 특정 메모리 장치는 메모리 셀들의 SLC 부분 및 MLC, TLC, QLC 부분 또는 PLC 부분을 포함할 수 있다. 메모리 장치들(130)의 메모리 셀들은 데이터를 저장하는데 사용되는 메모리 장치의 논리 단위를 지칭할 수 있는 메모리 페이지들로서 그룹화될 수 있다. 일부 유형의 메모리(예를 들어, NAND)에서, 페이지들이 블록들을 형성하도록 그룹화될 수 있다.
비휘발성 메모리 셀들의 3D 크로스포인트 어레이 및 NAND형 플래시 메모리(예를 들어, 2D NAND, 3D NAND)와 같은 비휘발성 메모리 컴포넌트들이 설명되어 있지만, 메모리 장치(130)는 예컨대 읽기 전용 메모리(ROM), 상 변화 메모리(PCM), 자체 선택 메모리, 기타 칼코게나이드 기반 메모리들, 강유전성 트랜지스터 랜덤 액세스 메모리(FeTRAM), 강유전성 랜덤 액세스 메모리(FeRAM), 마그네토 랜덤 액세스 메모리(MRAM), 스핀 전송 토크(STT)-MRAM, 전도성 브리징 RAM(CBRAM), 저항성 랜덤 액세스 메모리(RRAM), 산화물 기반 RRAM(OxRAM), 네거티브-오어(NOR) 플래시 메모리 및 전기적으로 소거 가능한 프로그래밍 가능 읽기 전용 메모리(EEPROM)와 같은, 임의의 다른 유형의 비휘발성 메모리에 기반할 수 있다.
메모리 서브 시스템 컨트롤러(115)(또는 간단히 컨트롤러(115))는 메모리 장치(130)와 통신하여 메모리 장치(130)에서 데이터 판독, 데이터 기입 또는 데이터 소거와 같은 동작들 및 다른 이러한 동작들을 수행할 수 있다. 메모리 서브 시스템 컨트롤러(115)는 하나 이상의 집적 회로들 및/또는 개별 컴포넌트들, 버퍼 메모리 또는 이들의 조합과 같은 하드웨어를 포함할 수 있다. 하드웨어는 본원에 설명된 동작들을 수행하기 위한 전용(즉, 하드 코딩된) 로직을 가진 디지털 회로부를 포함할 수 있다. 메모리 서브 시스템 컨트롤러(115)는, 마이크로컨트롤러, 특수 목적 논리 회로부(예를 들어, 필드 프로그램 가능 게이트 어레이(FPGA), 애플리케이션별 집적 회로(ASIC) 등), 또는 기타 적절한 프로세서일 수 있다.
메모리 서브 시스템 컨트롤러(115)는 로컬 메모리(119)에 저장된 명령어들을 실행하도록 구성된 하나 이상의 프로세서들(예를 들어, 프로세서(117))를 포함하는 처리 장치일 수 있다. 예시된 예에서, 메모리 서브 시스템 컨트롤러(115)의 로컬 메모리(119)는 메모리 서브 시스템(110)과 호스트 시스템(120) 간의 통신들을 처리하는 것을 포함하여, 메모리 서브 시스템(110)의 동작을 제어하는 다양한 프로세스들, 동작들, 로직 흐름들 및 루틴들을 수행하기 위한 명령어들을 저장하도록 구성된 임베디드 메모리를 포함한다.
예시된 예에서, 메모리 서브 시스템 컨트롤러(115)의 로컬 메모리(119)는 메모리 서브 시스템(110)과 호스트 시스템(120) 간의 통신들을 처리하는 것을 포함하여, 메모리 서브 시스템(110)의 동작을 제어하는 다양한 프로세스들, 동작들, 로직 흐름들 및 루틴들을 수행하기 위한 명령어들을 저장하도록 구성된 임베디드 메모리를 포함한다.
일부 실시예들에서, 로컬 메모리(119)는 메모리 포인터, 페치 데이터(fetched data) 등을 저장하는 메모리 레지스터들을 포함할 수 있다. 로컬 메모리(119)는 또한 마이크로-코드를 저장하기 위한 읽기 전용 메모리(ROM)를 포함할 수 있다. 도 1의 예시적인 메모리 서브 시스템(110)은 메모리 서브 시스템 컨트롤러(115)를 포함하는 것으로 예시되어 있지만, 본 개시의 다른 실시예에서, 메모리 서브 시스템(110)은 메모리 서브 시스템 컨트롤러(115)를 포함하지 않을 수 있으며, 대신 (예를 들어, 외부 호스트에 의해 또는 메모리 서브 시스템으로부터 분리된 프로세서나 컨트롤러에 의해 제공된) 외부 제어에 의존할 수 있다.
일반적으로, 메모리 서브 시스템 컨트롤러(115)는 호스트 시스템(120)으로부터 명령들 또는 동작들을 수신할 수 있으며, 메모리 장치들(130)에 대한 원하는 액세스를 달성하기 위해 명령들 또는 동작들을 명령어들 또는 적절한 명령들로 변환할 수 있다. 메모리 서브 시스템 컨트롤러(115)는 예컨대 웨어 레벨링(wear leveling) 동작들, 가비지 수집 동작들, 에러 검출 및 에러 정정 코드(ECC) 동작들, 암호화 동작들, 캐싱 동작들 및 메모리 장치들(130)과 연관되는 논리 어드레스(예를 들어, 논리 블록 어드레스(LBA), 명칭 공간)과 물리 어드레스(예를 들어, 물리 블록 어드레스) 사이의 어드레스 변환들과 같은 기타 동작들을 담당할 수 있다. 메모리 서브 시스템 컨트롤러(115)는 물리적 호스트 인터페이스를 통해 호스트 시스템(120)과 통신하기 위한 호스트 인터페이스 회로부를 더 포함할 수 있다. 호스트 인터페이스 회로부는 메모리 장치들(130)과 연관된 응답들을 호스트 시스템(120)에 대한 정보로 변환할 뿐만 아니라, 호스트 시스템으로부터 수신된 명령들을 메모리 장치들(130)에 액세스하기 위한 명령 명령어들로 변환할 수 있다.
메모리 서브 시스템(110)은 또한 예시되지 않은 추가 회로부 또는 컴포넌트들을 포함할 수 있다. 일부 실시예들에서, 메모리 서브 시스템(110)은 캐시나 버퍼(예를 들어, DRAM) 및 메모리 서브 시스템 컨트롤러(115)로부터 어드레스를 수신하고 메모리 장치들(130)에 액세스하기 위한 어드레스를 디코딩할 수 있는 어드레스 회로부(예를 들어, 행 디코더 또는 열 디코더)를 포함할 수 있다.
일부 실시예들에서, 메모리 장치들(130)은 메모리 장치들(130)의 하나 이상의 메모리 셀들에 대한 동작들을 실행하기 위해 메모리 서브 시스템 컨트롤러(115)와 함께 동작하는 로컬 매체 컨트롤러들(135)을 포함한다. 외부 컨트롤러(예를 들어, 메모리 서브 시스템 컨트롤러(115))는 메모리 장치(130)를 외부적으로 관리(예를 들어, 메모리 장치(130)에 대한 매체 관리 동작들을 수행)할 수 있다. 일부 실시예들에서, 메모리 서브 시스템(110)은 다이 상의 제어 로직(예를 들어, 로컬 컨트롤러(132))을 갖는 원시 메모리 장치(130) 및 동일한 메모리 장치 패키지 내의 매체 관리를 위한 컨트롤러(예를 들어, 메모리 서브 시스템 컨트롤러(115))를 포함하는 관리형 메모리 장치이다. 관리형 메모리 장치의 일 예로는 관리형 NAND(MNAND) 장치가 있다.
일 실시예에서, 메모리 서브 시스템(110)은 메모리 장치(130) 및 메모리 장치(140)의 데이터를 추적하고 관리하는데 사용될 수 있는 캐시 매니저(113)를 포함한다. 일부 실시예들에서, 메모리 서브 시스템 컨트롤러(115)는 캐시 매니저(113)의 적어도 일부를 포함한다. 일부 실시예들에서, 캐시 매니저(113)는 호스트 시스템(120), 애플리케이션, 또는 운영 체제의 일부이다. 다른 실시예들에서, 로컬 매체 컨트롤러(135)는 캐시 매니저(113)의 적어도 일부를 포함하고 본원에 설명된 기능을 수행하도록 구성된다. 캐시 매니저(113)는 동기식 인터페이스를 통해 메모리 장치들(130 및 140)와 직접 통신할 수 있다. 또한, 메모리 장치(130)와 메모리 장치(140) 사이의 데이터 전송은 호스트 시스템(120)에 액세스하지 않고도 메모리 서브 시스템(110) 내에서 수행될 수 있다.
메모리 장치(140)는 메모리 장치(130)로부터의 데이터를 저장하는 데이터 캐시를 포함할 수 있어 데이터에 대한 추후 요청들이 더 빨리 제공될 수 있다. 캐시 라인은 캐시 저장 장치의 기본 단위이며 여러 바이트 및/또는 단위의 데이터를 포함할 수 있다. 작은 캐시 라인 크기는 더 높은 히트율을 갖지만 큰 캐시 크기 라인보다 더 많은 태그 메모리가 필요하다. 태그는 매핑된 메모리의 다른 영역들을 구별하는 데 사용될 수 있는 데이터 그룹의 고유 식별자이다.
일부 실시예들에서, 메모리 서브 시스템(110)에 의해 저장되는 모든 데이터는 메모리 장치(130)에 저장될 수 있다. 메모리 장치(130)에 저장된 특정 데이터는 또한 메모리 장치(140)의 데이터 캐시에 저장될 수 있다. 예를 들어, 호스트 시스템(120)에 의해 더 자주, 또는 더 최근에 액세스되는 것으로 결정된 데이터는 보다 빠른 호스트 액세스를 위해 데이터 캐시에 저장될 수 있다. 호스트 시스템(120)이 데이터 캐시에 저장된 데이터에 대한 판독 요청(즉, 캐시 히트)을 제공할 때, 데이터는 메모리 장치(130)로부터 검색되는 것과 대조적으로 데이터 캐시로부터 검색될 수 있다. 데이터 캐시에서 데이터를 검색하는 대역폭 또는 성능은 메모리 장치(130)에서 데이터를 검색하는 대역폭 또는 성능보다 빠를 수 있다.
메모리 장치(140)의 데이터 캐시는 분할될 수 있고 작은 캐시 라인들(이하 "섹터(들)")을 저장하기 위한 섹터 캐시(142) 및 큰 캐시 라인들(이하 "페이지(들)")을 저장하기 위한 페이지 캐시(144)를 포함할 수 있다. 섹터 캐시(142)와 페이지 캐시(144)는 서로 다른 데이터 크기들로 관리될 수 있다. 섹터 캐시(142)는 더 작은 입도(더 작은 크기)를 활용할 수 있고 페이지 캐시(144)는 더 큰 입도(더 큰 크기)를 활용할 수 있다. 일 예에서, 페이지는 크기가 2킬로바이트일 수 있고, 섹터는 크기가 64바이트일 수 있다. 페이지는 하나 이상의 섹터들을 포함할 수 있다. 페이지 캐시(144)는 더 큰 데이터 크기를 활용하는 데이터(예를 들어, 전체 페이지에 대해 단일의 유효한 비트만)를 관리하기 위해 더 적은 메타데이터를 필요로 할 수 있다. 섹터 캐시(142)의 더 작은 데이터 크기는 더 많은 양의 메타데이터(예를 들어, 더 많은 수의 유효 비트 및/또는 더티 비트, 태그 등)를 필요로 할 수 있다. 페이지 캐시(144)의 페이지들은 하나 이상의 세트들로 구성될 수 있다. 일 예에서, 페이지 세트는 24개의 페이지들을 포함한다. 마찬가지로, 섹터 캐시(142)의 섹터들은 하나 이상의 세트들로 구성될 수 있다. 일 예에서, 섹터 세트는 16개의 섹터들을 포함한다.
메모리 장치(130)는 섹터 캐시와 유사한 작은 입도로 데이터를 저장하고 관리할 수 있다. 예를 들어, 데이터는 섹터 캐시(142)에 하나 이상의 섹터들을 포함할 수 있는 데이터 페이로드 크기로 메모리 장치(130)에 저장될 수 있다. 따라서 데이터는 데이터 페이로드 크기(예를 들어, 한 번에 하나 이상의 섹터들)로 메모리 장치(130)와 섹터 캐시(142) 사이에서 전송될 수 있다.
캐시 매니저(113)는 메모리 장치(130)와 메모리 장치(140) 간의 모든 미해결 데이터 전송을 추적하는 내용 주소화 메모리(CAM) 데이터 구조 세트를 관리할 수 있다. 캐시 매니저(113)는 CAM(152) 및 페이지 CAM(154)을 포함할 수 있다. 캐시 매니저(113)는 섹터 CAM(152) 및 페이지 CAM(154)을 사용하여 모든 미해결 데이터 전송(예를 들어, 판독 명령들, 기입 명령들, 추가 전송 등)을 추적할 수 있다. 예를 들어, 캐시 매니저(113)가 데이터 전송을 수행하기 전에, 캐시 매니저(113)는 섹터 CAM(152)을 조회하여 동일한 물리적 어드레스 간에 임의의 미해결 데이터 전송이 있는지를 확인할 수 있다. 조회가 히트를 생성하는 경우, 캐시 매니저(113)는 히트 데이터 전송이 완료될 때까지 데이터 전송을 실행하지 않는다. 조회가 미스인 경우, 캐시 매니저(113)는 데이터 전송을 실행할 수 있다.
각 데이터 전송은 식별자와 연관될 수 있다. 예를 들어, 각 호스트 판독 명령은 연관된 판독 식별자(RID)를 포함할 수 있고, 각 호스트 기입 명령은 연관된 기입 식별자(WID)를 포함할 수 있으며, 캐시(예를 들어, 섹터 캐시(142), 페이지 캐시(144) 등)를 유지하는 데 필요한 각 추가 전송은 전송 식별자(XID)를 가질 수 있다. 캐시 매니저(113)는 데이터 의존도에 대해 추적되는 전송 유형 세트를 포함할 수 있다. 전송 유형의 예들은 판독 버퍼 전송(메모리 장치(140)에서 판독 버퍼로), 기입 버퍼 전송(기입 버퍼에서 메모리 장치(140)로), 페이지 축출 전송(메모리 장치(140)에서 메모리 장치(130) 페이지로), 섹터 축출 전송(메모리 장치(140)에서 메모리 장치(140) 섹터로), 페이지 채우기 전송(메모리 장치(130)에서 메모리 장치(140)로) 및 판독 미스 전송(메모리 장치(130)에서 메모리 장치(140) 및 판독 버퍼로)을 포함할 수 있다. 페이지 축출 전송을 제외하고, 나열된 전송 유형들 각각은 섹터 전송이며, 섹터 전송은 섹터 CAM(152)에 의해 추적될 수 있다. 페이지 전송인 페이지 축출 전송은 페이지 CAM(154)에 의해 추적될 수 있다. 전송의 시작 시, RID, WID 또는 XID로 표시된 어드레스들은 전송이 완료될 때까지 해당 CAM(예를 들어, 섹터 CAM(152) 및/또는 페이지 CAM(154))에 저장될 수 있다. 따라서, 임의의 미해결 전송은 그 관련 ID를 통해 CAM에 포함된다. 또한, 페이지의 하나 이상의 섹터가 한 번에 섹터 CAM(152)에 포함되는 경우(즉, 미해결), 페이지는 페이지 CAM(154)에도 추가될 수 있다.
새로운 전송이 시작될 때, 캐시 매니저(113)는 섹터 CAM(152) 및 페이지 CAM(154) 모두를 검색하여 동일한 섹터 어드레스 또는 페이지 어드레스에 대응하는 전송이 섹터 CAM(152) 또는 페이지 CAM(154)에 이미 존재하는지 여부를 결정할 수 있다. 새로운 전송이 섹터 전송이고 섹터 CAM(152)에 히트가 있는 경우, 새로운 전송은 이전 전송이 완료된 후에 실행될 섹터 CAM(152)에 배치될 수 있다. 이러한 방식으로, 다수의 섹터 전송이 섹터 CAM(152)에서 함께 연결되어 순서대로 실행될 수 있다. 페이지 CAM(154)에 히트가 있는 경우, 섹터의 새로운 전송은 섹터 CAM(152)에 배치되지만 이전 페이지 전송이 완료된 후에만 실행된다. 마찬가지로, 섹터 세트의 페이지 어드레스가 페이지 CAM(154)에 포함되는 경우, 새로운 전송은 섹터 세트의 전송이 완료될 때까지 대기할 수 있다.
섹터 CAM(152)은 지원되는 미해결 데이터 전송의 최대 수에 따라 달라질 수 있는 유한한 크기를 가질 수 있다. 예로서, 섹터 CAM(152)에 의해 지원되는 판독 액세스 명령의 최대 수는 256일 수 있고, 섹터 CAM(152)에 의해 지원되는 기입 액세스 명령의 최대 수는 64일 수 있다. 모든 전송이 판독 또는 기입 액세스 명령들에 직접 연결될 수 있는 경우, 미해결 전송의 최대 수는 더 높을 수 있다(예를 들어, 320). 그러나, 임의 개수의 판독 액세스 명령들 및 기입 액세스 명령들이 섹터 CAM(152)에 의해 지원될 수 있다. 일부 데이터 전송은 별도로 식별될 수 있으며 섹터 캐시(142)에서 페이지 캐시(144)로 데이터를 이동하고 여러 더티 섹터들(예를 들어, 섹터(들))을 섹터 그룹의 다수의 더티 섹터들(예를 들어, 더티 비트를 갖는 섹터(들))로 축출하기 때문에 판독 액세스 명령 또는 기입 액세스 명령에 직접 연결되지 않을 수 있다. 더티 비트는 섹터가 비휘발성 메모리(예를 들어, 메모리 장치(130))와 일치하지 않는 데이터를 가지고 있는지 여부를 표시하는 데 사용될 수 있다. 추가 데이터 전송의 경우, 다른 데이터 전송 ID(XID) 세트가 사용될 수 있다. 일 예에서, 192개의 XID들이 사용될 수 있다. 따라서, 상기 예를 사용하여, 추가 데이터 전송 ID 세트는 총 데이터 전송 ID 수를 512개가 될 수 있다. 따라서, 섹터 CAM(152)의 깊이는 512일 수 있다.
미완성 섹터 전송을 추적하기 위해, 캐시 매니저(113)는 섹터 CAM(152)을 사용하여 미해결 섹터 전송의 어드레스를 기록할 수 있다. 섹터 전송이 발행될 때, 캐시 매니저(113)는 조회된 섹터 CAM(152)을 수행할 수 있다. 섹터 CAM(152) 조회가 미스인 것에 응답하여, 발행된 섹터 전송의 섹터 어드레스는 섹터 전송의 ID(예를 들어, RID, WID, 및 XID)에 의해 인덱싱된 위치에서 섹터 CAM(152)에 기록될 수 있다. 섹터 CAM(152) 조회가 히트인 것에 응답하여, 발행된 섹터 전송의 섹터 어드레스는 섹터 전송의 ID에 의해 인덱싱된 위치의 섹터 CAM(152)에 기록될 수 있고 히트 엔트리는 무효화될 수 있다. 섹터 전송이 완료되면, 캐시 매니저(113)는 해당 엔트리를 무효화함으로써 섹터 CAM(152)으로부터 섹터 전송을 제거할 수 있다. 섹터 CAM(152)은 모든 섹터 전송에 대해 두 번(예를 들어, 조회를 위해 한 번, 기입을 위해 한 번) 사용될 수 있다. 유효한 비트가 섹터 CAM 엔트리의 일부인 경우 각 섹터 전송도 무효화될 수 있다. 유효한 비트는 섹터가 유효한지 여부(예를 들어, 섹터와 관련된 캐시 라인이 전송을 위해 할당되었는지(유효하지 않은지) 또는 전송을 수신했는지(유효한지) 여부)를 나타내는 데 사용할 수 있다. 섹터 CAM(152)은 외부 유효 비트들을 활용할 수 있고, 캐시 매니저(113)는 섹터 CAM 조회 및 기입과 병렬로 섹터 CAM 무효화를 수행할 수 있다. 일부 구현들에서, 섹터 CAM(152) 조회 성능을 개선하기 위해, 둘 이상의 섹터 CAM들이 사용될 수 있다. 예를 들어, 제1 섹터 CAM은 짝수 섹터 어드레스들을 갖는 섹터 전송에 사용될 수 있고, 제2 섹터 CAM은 홀수 섹터 어드레스들을 갖는 섹터 전송에 사용될 수 있다.
섹터 전송에 추가하여, 캐시 매니저(113)는 페이지를 메모리 장치(140)(예를 들어, DRAM)로부터 메모리 장치(130)(예를 들어, 저장 메모리)로 이동시키기 위해 페이지 전송을 실행할 수 있다. 미완성 페이지 전송을 추적하기 위해, 캐시 매니저(113)는 페이지 CAM(154)을 사용하여 미해결 페이지 전송의 어드레스를 기록할 수 있다.
데이터 액세스 명령을 수신한 캐시 매니저(113)에 응답하여, 캐시 매니저(113)는 섹터 캐시(142) 및/또는 페이지 캐시(144)에서 캐시 조회를 수행할 수 있다. 캐시 조회 결과 히트(예를 들어, 캐시 조회 히트)가 발생한 경우, 데이터 액세스 명령이 판독 액세스 명령인지 기입 액세스 명령인지에 따라 두 가지 유형의 전송이 있을 수 있다. 판독 액세스 명령의 경우, 캐시 매니저(113)는 데이터가 메모리 장치(140) 캐시(예를 들어, 섹터 캐시(142), 페이지 캐시(144) 등)에서 판독 버퍼로 이동되는 판독 버퍼 전송을 수행하며, 이 판독 버퍼는 그런 다음 호스트 시스템(120)에 의해 판독될 수 있다. 기입 액세스 명령의 경우, 캐시 매니저(113)는 기입 버퍼 전송을 수행하며, 호스트 시스템(120)에 의해 기입 데이터로 데이터가 이미 기입된 기입 버퍼로부터 메모리 장치(140) 캐시(예를 들어, 섹터 캐시(142) 또는 페이지 캐시(144))로 이동된다.
캐시 매니저(113)는 휴리스틱스 알고리즘을 사용하여 섹터 그룹이 페이지 캐시(144)로 이동되어야 한다고 결정할 수 있다. 이러한 경우에, "페이지 채우기(page fill)"로 정의되는 추가 전송이 발생할 수 있다. 페이지 채우기를 위해, 캐시 매니저(113)는 섹터 행 및/또는 페이지 행 관계에 기초하여 페이지를 선택할 수 있다. 그런 다음, 캐시 매니저(113)는 선택된 페이지를 축출할 수 있다. 원래 섹터 그룹의 미싱 섹터들은 새로 형성된 페이지를 채우기 위해 메모리 장치(130)로부터 판독된다. 그런 다음, 캐시 매니저(113)는 추가 전송을 수행할 수 있다. 일 예에서, 캐시 매니저(113)는 페이지 축출 전송 또는 플러시 전송을 수행할 수 있으며, 여기서 페이지 캐시 라인이 더티인 경우(예를 들어, 더티 비트를 가지는 경우) 전체 페이지 캐시 라인이 메모리 장치(130)로 이동될 수 있다. 다른 예에서, 캐시 매니저(113)는 페이지 채우기 전송을 수행할 수 있으며, 여기서 미싱 섹터들은 메모리 장치(130)로부터 페이지 캐시 라인으로 판독된다.
캐시 조회 미스가 있을 때, 캐시 매니저(113)는 인입되는 데이터 액세스 명령에 대한 섹터 기반 캐시 라인을 축출할 수 있다. 일 예에서, 축출은 LRU 데이터를 기반으로 할 수 있다. LRU 데이터는 섹터 캐시 라인이 호스트 시스템(120)에 의해 가장 최근에 액세스되었는지 여부를 나타내는 데 사용될 수 있는 LRU 값을 포함할 수 있다. 예를 들어, 섹터가 액세스될 때, 해당 섹터에 대한 LRU 값은 미리 결정된 값(예를 들어, 24)으로 설정될 수 있다. 섹터 캐시(142)의 다른 모든 섹터에 대한 LRU 값들은 일정 양만큼(예를 들어, 1만큼) 감소될 수 있다. 축출된 섹터 캐시 라인의 모든 더티 섹터들은 축출 모드가 섹터 기반인 경우 메모리 장치(130)로, 또는 축출 모드가 페이지 기반인 경우 페이지 캐시(144)로 이동될 수 있다. 페이지 축출 모드는 축출된 섹터들을 위한 공간을 만들기 위해 축출할 페이지 캐시 라인을 선택하고 축출된 섹터 그룹에서 현재 미싱된 섹터들을 메모리 장치(130)로부터 판독하는 것을 포함한다. 섹터 캐시(142)로부터 페이지 캐시(144)로 데이터를 이동하는 것은 새로운 섹터의 물리적 어드레스를 축출된 섹터의 물리적 어드레스와 교환함으로써 수행될 수 있으므로, 실제 데이터 전송이 발생하지 않는다.
섹터 축출 모드는 다음 데이터 전송; 섹터 축출 전송, 기입 버퍼 전송 및 판독 미스 전송을 포함할 수 있다. 섹터 축출 전송의 경우, 캐시 매니저(113)는 더티 섹터들을 메모리 장치(130)로 이동할 수 있다. 기입 버퍼 전송의 경우(기입 미스에 응답하여), 동일한 섹터의 축출 전송이 완료될 때까지 데이터 전송이 시작되지 않는다. 판독 미스 전송의 경우, 미스된 섹터는 메모리 장치(130)로부터 판독되어 메모리 장치(140)로 및 판독 버퍼로 전송된다. 이 데이터 전송은 동일한 섹터의 축출 전송이 완료될 때까지 시작되지 않는다. 페이지 축출 모드는 다음 전송; 페이지 채우기 전송, 페이지 축출 전송 또는 플러시 전송, 기입 버퍼 전송 및 판독 미스 전송을 포함할 수 있다. 기입 버퍼 전송 및 판독 미스 전송의 경우, 페이지 축출 전송이 완료될 때까지 데이터 전송이 시작되지 않는다.
캐시 매니저(113)는 데이터 의존도를 관리하고 고성능을 생성하기 위해 일련의 방식들을 사용할 수 있다. 데이터 의존도는 판독/기입 전송 의존도, 섹터 축출 전송 의존도, 페이지 축출 전송 의존도 및 페이지 채우기 전송 의존도를 포함할 수 있다.
판독 및 기입 전송 의존도 동안, 미해결 기입 전송 명령에 의해 기입되고 있는 섹터로부터 데이터를 판독하기 위해 판독 전송이 발생할 수 있다. 이는 판독 전송에 대한 섹터 CAM 조회 히트로 표시될 수 있다. 기입 전송과 판독 전송은 서로 다른 데이터 경로들로 갈 수 있으며, 그 결과 판독 전송 전에 기입 전송이 발생하더라도, 판독 전송 후에 기입 전송이 완료된다. 캐시 매니저(113)는 판독 전송을 섹터 CAM 조회 히트 ID에 의해 인덱싱된 위치에서 섹터 블록 전송 데이터 구조에 배치함으로써 미해결 기입 전송이 완료될 때까지 판독 전송을 유지할 수 있다. 캐시 매니저(113)는 미해결 판독 전송에 의해 판독되고 있는 섹터로의 기입 전송을 위해 동일하거나 유사한 메커니즘을 사용할 수 있다.
섹터 전송이 완료되면, 해당 섹터 블록 전송 엔트리는 섹터 블록 전송 데이터 구조에서 확인될 수 있다. 섹터 블록 전송 데이터 구조에 저장된 ID가 현재 전송과 동일한 ID가 아닌 경우, 캐시 매니저(113)는 저장된 전송을 차단 해제할 수 있다. 섹터 블록 전송에 유효한 전송이 있는 경우, 플래그로 표시될 수 있으며, 이는 다른 전송이 차단 해제되어야 하는지 여부를 보기 위해 확인될 수 있다.
섹터 축출 전송 의존도와 관련하여, 섹터 그룹은 동일한 페이지에 속하고 섹터 기반 태그 메모리에서 동일한 태그를 공유하는 32개의 섹터들로 구성될 수 있다. 캐시 매니저(113)가 섹터를 축출할 때, 태그가 교체될 수 있기 때문에 캐시 매니저(113)는 전체 섹터 그룹을 축출할 수 있다. 캐시 매니저(113)는 모든 더티 섹터들을 메모리 장치(130)로 보낼 수 있고, 각 섹터는 별개의 및 개별 섹터 축출 전송으로서 이동될 수 있다. 섹터 그룹이 축출되기 전에, 적어도 하나의 섹터가 더티가 되도록 하는 기입 전송이 적어도 한 번 있을 수 있다. 다수의 기입 액세스들이 완료되지 않은 상태에서 섹터 그룹 축출 요청이 발생하면, 캐시 매니저(113)에 의해 실행되지 않고 보류될 수 있으며, 이는 또한 모든 개별 섹터 축출 전송이 보류될 수 있음을 의미한다. 다수의 섹터 축출 전송을 보류하기 위해, 페이지 블록 전송 데이터 구조가 사용될 수 있다.
일부 실시예들에서, 다수의 미해결 섹터 전송이 동일한 페이지 어드레스를 공유한다. 캐시 매니저(113)는 다수의 미해결 섹터 전송을 나타내기 위해 페이지 CAM(154)에 페이지를 생성할 수 있다. 페이지는 가상 페이지 또는 "Vpage"(이는 실제 페이지 전송을 나타내지 않음)라고 부를 수 있다. 캐시 매니저(113)는 섹터 카운트 데이터 구조를 사용하여 Vpage에 의해 표현되는 미해결 섹터 전송의 총 수를 추적할 수 있다. Vpage의 제1 섹터 전송이 발행되면, 페이지 CAM 조회가 미스될 수 있으므로, 섹터 전송의 페이지 어드레스는 섹터의 전송 ID로 인덱싱된 위치에서 페이지 CAM(154)에 기입될 수 있으며, 동일한 ID로 인덱싱된 섹터 카운트는 1로 초기화될 수 있다. Vpage의 제2 섹터 전송이 발행되면, 페이지 CAM 조회가 히트가 될 수 있으며, 히트 ID로 인덱싱된 섹터 카운트는 1씩 증가될 수 있다. Vpage에 속한 미해결 섹터 전송이 완료되면, 해당 섹터 카운트가 감소될 수 있다. 캐시 매니저(113)는 각 섹터 전송이 Vpage 데이터 구조에 자신의 Vpage를 기록할 수 있기 때문에 감소될 섹터 카운트를 알 수 있다. Vpage와 함께 섹터 카운트는 다수의 섹터 전송이 모두 완료되기 전에 관련 페이지가 축출되지 않도록 다수의 섹터 전송을 보호할 수 있다.
제1 섹터 축출 전송이 발행될 때, 캐시 매니저(113)는 페이지 CAM(154) 조회를 수행할 수 있다. 페이지 CAM(154) 조회가 미스인 경우, 캐시 매니저(113)는 Vpage를 생성하고 섹터 축출 전송의 총 수를 포함하도록 섹터 카운트를 초기화할 수 있다. 일 예에서, 섹터 축출 전송은 제1 섹터 축출 전송 ID를 그 Vpage ID로 사용할 수 있다. 후속 섹터 축출 전송은 Vpage 조회를 수행할 필요가 없다. 조회가 히트인 경우, 캐시 매니저(113)는 조회가 미스일 때 수행되는 단계와 유사한 단계들을 수행할 수 있으며, 히트 Vpage의 추가는 캐시 매니저(113)에 의해 무효화되고 모든 섹터 축출 전송이 차단될 수 있다. 캐시 매니저(113)는 히트 ID에 의해 인덱싱된 위치에서 페이지 차단된 다음 전송 데이터 구조에 제1 섹터 축출 전송 ID를 배치함으로써 차단을 수행할 수 있다. 캐시 매니저(113)는 또한 새로 생성된 Vpage에 의해 인덱싱된 위치에서 다른 데이터 구조(예를 들어, 페이지 차단된 목록 테일 데이터 구조)에 제1 섹터 축출 전송 ID를 배치할 수 있다. 제2 섹터 축출 전송의 경우, 캐시 매니저(113)는 제1 섹터 축출 전송 ID를 Vpage ID로 사용할 수 있고, 또한 페이지 차단 목록 테일 데이터 구조를 사용하여 자체 전송 ID를 넣을 페이지 차단 목록의 위치를 찾아, 제1 섹터 축출 전송과 연결 목록을 형성할 수 있다. 페이지 차단 목록 테일은 또한 제2 섹터 축출 전송 ID로 업데이트될 수 있다. 캐시 매니저(113)는 모든 섹터 축출 전송이 연결 목록을 형성하고 일단 제1 섹터 축출 전송이 차단 해제되면 하나씩 차단 해제될 수 있도록 제2 전송과 같은 후속 섹터 축출 전송을 처리할 수 있으며, 이는 그 차단 Vpage의 섹터 카운트가 0으로 다운 카운트될 때 발생할 수 있다.
캐시 매니저(113)는 섹터 그룹이 축출되고 다른 비축출 섹터 전송이 동일한 섹터 그룹에 도달할 때 모든 섹터 축출 전송이 완료될 때까지 비축출 섹터 전송을 차단할 수 있다. 캐시 매니저(113)는 새로은 Vpage를 생성하고, 히트 엔트리를 무효화하고, 히트 ID에 의해 인덱싱된 위치에서 페이지 차단된 다음 전송 데이터 구조에 인입되는 전송 ID를 배치할 수 있다. 캐시 매니저(113)는 Vpage가 축출을 나타내고 있음을 나타내기 위해 Vpage와 연관된 Vpage 플러시 플래그를 설정할 수 있다. 새로운 Vpage가 생성되면, 제2 비축출 섹터 어드레스는 여전히 차단될 수 있으며 제1 비축출 섹터 전송과 동일한 섹터에 히팅하지 않는 한 제1 비축출 섹터 전송이 플러시 Vpage에 히팅(즉, Vpage 플러시 = 1)하는 차단된 연결 목록을 형성할 수 있다. 이를 수행하기 위해, 새로 생성된 Vpage는 데이터 구조(예를 들어, 페이지 플래그에 의해 차단된 데이터 구조)를 사용하여 차단되는 것으로 나타낼 수 있다. 제2 비축출 섹터가 섹터 CAM 조회(즉, 히트)에 의해 결정된 제1 비축출 섹터 전송에 히트하면, 제2 비축출 섹터는 히트 ID로 인덱싱된 위치에서 섹터 차단된 다음 전송 데이터 구조에 배치될 수 있다. 제2 비축출 섹터의 섹터 CAM 조회가 히트이지만 히트 전송의 Vpage가 제1 비축출 섹터 전송의 ID가 아닌 경우, 제2 비축출 섹터는 히트 ID로 인덱싱된 위치에서 섹터 차단된 다음 전송 데이터 구조에 넣는 것이 아니라 여전히 차단될 수 있다.
페이지 축출 전송과 관련하여, 페이지 축출 전송을 위한 페이지 축출 어드레스를 찾기 위해, 캐시 매니저(113)는 제1 조회의 섹터 캐시 조회에 의해 찾은 섹터 축출 어드레스를 기반으로 수행될 수 있는 제2 페이지 CAM 조회를 수행할 수 있다. 제2 페이지 CAM 조회는 페이지 CAM이 동시에 조회될 수 있는 두 섹션들로 분할되는 경우 피할 수 있다. 축출된 섹터 그룹의 무효 섹터들은 축출된 페이지가 저장 메모리(예를 들어, 메모리 장치(130))에 기입될 때 동시에 저장 메모리로부터 채워질 수 있다. 이들은 독립적이지만 페이지 CAM 조회 미스에 대한 인입되는 섹터 전송은 페이지 축출 전송 또는 플러시 전송에 따라 달라질 수 있다.
캐시 매니저(113)는 페이지 CAM 조회로 플러시 전송을 개시할 수 있다. 조회가 히트인 경운, 캐시 매니저(113)는 페이지 축출 전송 ID로 인덱싱된 위치에서 페이지 CAM(154)에 엔트리를 삽입할 수 있고, 히트 엔트리는 무효화될 수 있다. 페이지 축출 전송 ID는 또한 히트 엔트리로 인덱싱된 위치에서 페이지 차단된 다음 전송 데이터 구조에 넣을 수 있다. 페이지 축출 전송으로 인덱싱된 섹터 카운트는 1로 설정될 수 있다. 해당 Vpage 플러시는 또한 삽입된 엔트리가 페이지 축출을 위한 엔트리임을 나타내도록 설정되어 이 엔트리에 히팅하는 모든 전송이 차단될 수 있다. 조회가 미스인 경우, 무효화할 히트 엔트리가 없을 수 있다는 점을 제외하고는 조회가 미스인 경우와 동작이 같을 수 있다. 플러시 전송을 위한 페이지 CAM(113)의 엔트리는 가상 페이지가 아닌 실제 페이지 전송을 나타낼 수 있다. 플러시를 위해 페이지에 히팅하는 제1 섹터 전송은 해당 섹터 CAM 조회가 미스인 경우 페이지 차단된 다음 전송 데이터 구조에 넣을 수 있다. 전송은 또한 히트 ID로 인덱싱된 위치에서 페이지 차단된 목록 테일 데이터 구조에 놓일 수 있으므로 해당 섹터 CAM 조회가 미스인 경우 플러시 페이지에 히팅하는 제2 섹터 전송이 함께 링크될 수 있다. 히트 ID로 인덱싱된 섹터 카운트도 증가될 수 있다. 해당 섹터 CAM 조회가 히트인 경우, 인입되는 전송 ID를 히트 전송으로 인덱싱된 위치에서 섹터 차단된 다음 전송 데이터 구조에 넣음으로써 인입되는 전송이 히트 전송에 링크될 수 있다.
페이지 채우기 의존도 전송과 관련하여, 캐시 매니저(113)는 약간의 차이가 있는 페이지 축출과 같은 페이지 채우기를 처리할 수 있다. 일 예에서, 페이지 축출은 캐시 조회 미스에 의해 트리거되는 반면 페이지 채우기는 캐시 조회 히트에 의해 트리거될 수 있다. 다른 예에서, 페이지 채우기는 다른 페이지 캐시 조회를 수행하는 대신 섹터 기반 태그의 최하위 비트와 함께 섹터 행을 사용하여 페이지를 선택할 수 있다(LRU(최근에 사용됨)는 여전히 확인될 수 있음). 또 다른 예에서, 페이지 축출 전송 전에 섹터 전송이 이루어질 수 있다. 또 다른 예에서, 다수의 페이지 채우기 전송 중 첫 번째만 페이지 CAM 조회를 수행하고 섹터 카운트는 총 전송 수로 업데이트될 수 있다. 후속 섹터 전송에는 섹터 축출 전송과 같은 페이지 CAM 조회가 필요하지 않다. 페이지 CAM 조회가 미스인 경우, 캐시 매니저(113)는 Vpage를 생성할 수 있다. 페이지 CAM 조회가 플러시 Vpage에 히트하면, Vpage도 생성될 수 있지만 플러시 Vpage에 의해 차단될 수 있다. 페이지 CAM 조회가 비-플러시 Vpage에 히트하면, Vpage가 생성되지 않지만 히트 Vpage가 차단되었는지 여부와 섹터 CAM 조회 히트가 있는지 여부에 따라 관련 섹터 전송이 이루어지거나, 연결되거나, 차단될 수 있다. 삭제(clean) 동작은 섹터 축출 및 페이지 축출 전송과 유사할 수 있다.
캐시 매니저(113)로부터의 호스트 명령에 대해, 섹터 CAM(152)은 제1 사이클에서 조회되고, 제2 사이클에서 기입되고, 제4 사이클에서 무효화(히트 엔트리)될 수 있다. CAM 유효 비트는 CAM 자체의 외부에 있을 수 있으므로, 섹터 CAM(152)은 모든 호스트 명령에 대해 두 번 사용될 수 있다. 섹터 CAM 조회의 피크 레이트는 2 클록 사이클일 수 있으므로, 호스트 명령들도 2 클록 사이클마다 수락될 수 있다. 페이지 채우기 및 섹터 축출 동작들은 매 사이클마다 명령들을 발행할 수 있지만, 명령들은 짝수 및 홀수 섹터 어드레스들 모두에 대해 수행될 수 있다. 제2 명령이 도착했을 때, 제1 명령이 섹터 CAM 업데이트로 이미 완료되었을 수 있지만, 히트 엔트리가 아직 무효화되지 않았기 때문에 섹터 CAM 파이프라인에는 여전히 파이프라인 위험이 있을 수 있다.
캐시 매니저(113)로부터의 호스트 명령에 대해, 페이지 CAM(154)은 제1 사이클에서 조회될 수 있고, 제4 사이클에서 기입 및 무효화(필요한 경우 히트 엔트리)될 수 있다. 제3 사이클에서 제1 명령과 동일한 페이지 어드레스를 가진 제2 명령이 도착하면, 페이지 CAM(154)은 제1 명령에 의해 아직 기입되거나 업데이트되지 않았으므로, 잠재적으로 오래된 CAM 콘텐트를 볼 수 있으므로 조회가 사용되지 않아야 한다.
일 실시예에서, 캐시 매니저(113)는 파이프라인 피드포워드 메커니즘을 사용할 수 있다. 일 예에서, 제1 명령은 제4 사이클에서 페이지 CAM(154)을 업데이트할지 여부에 대한 조회 결과를 얻을 수 있다. 취할 조치는 제4 사이클에서도 발생할 수 있다. 제2 명령은 제1 명령의 조회 결과를 사용할 수 있으며 제1 명령 다음에 오는 명령임을 알고 올바른 조치를 취할 수 있다. 제1 명령과 동일한 페이지 어드레스를 갖지만 제2 명령과 다른 어드레스를 갖는 후속 명령들은 명령들이 도착할 때 페이지 CAM 콘텐트가 이미 업데이트되었기 때문에 피드포워드가 필요하지 않을 수 있다. 그러나, 제3 명령이 제2 명령과 동일한 어드레스를 가지고 있는 경우, 피드포워드가 여전희 필요할 수 있다. 피드포워드가 필요한 시기를 검출하기 위해, 제1 명령의 어드레스는 제2 명령과 비교하기 위해 2 클록 사이클만큼 지연될 수 있다. 일치하는 경우, 피드포워드가 사용될 수 있다.
일부 실시예들에서, 메모리 장치들(130, 140)은 다수의 섹터들(예를 들어, 160바이트 CW 내의 2개의 섹터들)로 구성된 에러 정정 코드(ECC) 보호 코드워드(CW)로서 구성될 수 있다. 다수의 코드워드들(예를 들어, 페이지의 CW들)는 복수 배열 독립 디스크(redundant array of independent disks; RAID) 방식으로 패리티에 의해 보호될 수 있다. 섹터를 기입하기 위해, 섹터의 해당 코드 워드 및 패리티는 컨트롤러(115)에 의해 판독될 수 있다. 컨트롤러(115)는 오래된 섹터들을 추출하기 위해 오래된 CW들을 디코딩할 수 있다. 새로운 섹터와 다른 오래된 섹터(덮어쓰지 않을 섹터)는 새 CW로 인코딩될 수 있으며, 오래된 CW 및 오래된 패리티와 함께 새 패리티를 생성하는 데 사용될 수 있다. CW의 두 섹터들 둘 모두를 기입하기 위해, 컨트롤러(115)에 의해 수행되는 동작은 단일 섹터를 기입하는 것과 유사할 수 있다. 이는 오래된 CW가 판독되어 새로운 패리티를 생성할 수 있고, 오래된 섹터들은 추출될 필요가 없기 때문이다. 따라서 패리티는 각 섹터 기입에 대해 하나씩 여러 번이 아닌 한 번만 판독 및 기입될 필요가 있기 때문에 동일한 페이지에 대한 모든 기입들을 함께 그룹화하는 것이 유리할 수 있다. 저장 메모리에 기입하는 것과 관련된 두 가지 유형의 전송(섹터 축출 전송 및 페이지 축출 전송)이 있을 수 있으며, 둘 다 동일한 페이지에 속하는 섹터들을 기입하는 것을 포함한다. 컨트롤러(115)는 두 축출 전송의 개별 섹터들이 동일한 페이지에 속하므로 통합될 수 있음을 통지받을 수 있다. 일 예에서, 신호는 섹터 기입 전송이 동일한 페이지에 속하는 마지막 섹터 기입이고 마지막 섹터 이전의 모든 섹터들에 대한 실제 저장 메모리 기입을 트리거 해야 함을 나타내는 데 사용될 수 있다. 기입 병합은 컨트롤러(115)가 이전에 수신된 섹터 기입들의 실제 기입들에 대해 작업하는 동안 마지막 섹터까지 계류중인 섹터 기입들을 수락하기에 충분한 버퍼링을 가질 때 성능을 더 향상시킬 수 있다.
도 2는 본 개시의 일부 실시예들에 따른, 전송 파이프라인에서의 데이터 의존도를 관리하는 예시적인 방법(200)의 흐름도이다. 방법(200)은 하드웨어(예를 들어, 처리 장치, 회로부, 전용 로직, 프로그램 가능 로직, 마이크로코드, 장치의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 처리 장치에서 실행되거나 수행된 명령어들) 또는 이들의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다. 일부 실시예들에서, 방법(200)은 도 1의 캐시 매니저(113)에 의해 수행된다. 특정 시퀀스 또는 순서로 도시되어 있지만, 달리 명시되지 않는 한, 프로세스들의 순서는 수정될 수 있다. 따라서, 예시된 실시예들은 예시로서만 이해되어야 하며, 예시된 프로세스들은 다른 순서로 수행될 수 있으며, 일부 프로세스들은 병렬로 수행될 수 있다. 추가로, 하나 이상의 프로세스들은 다양한 실시예들에서 생략될 수 있다. 따라서, 모든 프로세스들이 모든 실시예에서 필요한 것은 아니다. 다른 프로세스 흐름들이 가능하다.
동작(210)에서, 처리 로직은 호스트 시스템(120)으로부터 데이터 액세스 동작을 수신한다. 예를 들어, 메모리 서브 시스템 컨트롤러(115)는 데이터 액세스 동작을 수신할 수 있다. 메모리 서브 시스템 컨트롤러(115)는 제1 메모리 장치 및 제2 메모리 장치에 동작 가능하게 결합될 수 있다. 제1 메모리 장치는 메모리 장치(130)(예를 들어, 크로스 포인트 어레이)일 수 있고 제2 메모리 장치는 메모리 장치(140)(예를 들어, DRAM)일 수 있다. 제2 메모리 장치는 제1 메모리 컴포넌트보다 낮은 액세스 레이턴시를 가질 수 있고, 제1 메모리 장치에 대한 캐시 역할을 할 수 있다. 일 예에서, 제2 메모리 장치는 제1 캐시 컴포넌트 및 제2 캐시 컴포넌트를 포함할 수 있다. 제1 캐시 컴포넌트(예를 들어, 페이지 캐시(144))는 제2 캐시 컴포넌트(예를 들어, 섹터 캐시(142))보다 더 큰 입도를 활용할 수 있다. 데이터 액세스 동작은 판독 동작 또는 기입 동작일 수 있다.
동작(220)에서, 처리 로직은 임의의 미해결 데이터 전송이 데이터 액세스 동작에 대응하는 제2 메모리 컴포넌트에 존재하는지 여부를 결정한다. 예를 들어, 처리 로직은 제1 캐시 컴포넌트 및/또는 제2 캐시 컴포넌트가 데이터 액세스 동작의 어드레스와 연관된 임의의 미완성 또는 계류중인 전송을 포함하는지 여부를 결정할 수 있다. 미해결 데이터 전송 및 그들의 관련 물리적 어드레스들은 섹터 CAM(152), 페이지 CAM(154), 또는 이들의 조합 중 적어도 하나에 저장될 수 있다.
데이터 액세스 동작(예를 들어, 캐시 미스)의 어드레스와 연관된 미해결 데이터 전송이 없다는 결정에 응답하여, 동작(230)에서, 처리 로직은 데이터 액세스 동작을 실행할 수 있다. 데이터 액세스 동작(예를 들어, 캐시 히트)의 어드레스와 관련된 미해결 데이터 전송이 있다는 결정에 응답하여, 동작(240)에서, 처리 로직은 미해결 데이터 전송이 실행되고 있는지 또는 제1 메모리 컴포넌트로부터 제2 메모리 컴포넌트로 실행되도록 스케줄링되는지 결정한다.
동작(250)에서, 처리 로직은 미해결 데이터 전송이 실행되고 있을 때 캐시 히트에 대응하는 데이터 액세스 동작의 실행 스케줄링을 지연시키기로 결정한다. 일 예에서, 처리 로직은 CAM(예를 들어, 섹터 CAM(152), 페이지 CAM(154)) 조회 히트 ID로 인덱싱된 위치에서 섹터 블록 전송 데이터 구조에 데이터 전송을 배치함으로써 미해결 데이터 전송이 완료될 때까지 데이터 액세스 동작을 지연시킬 수 있다. 섹터 전송이 완료되면, 해당 섹터 블록 전송 엔트리는 섹터 블록 전송 데이터 구조에서 확인될 수 있다. 섹터 블록 전송 데이터 구조에 저장된 ID가 현재 전송과 동일한 ID가 아닌 경우, 캐시 매니저(113)는 저장된 전송을 차단 해제할 수 있다. 섹터 블록 전송에 유효한 전송이 있는 경우, 플래그로 표시될 수 있으며, 이는 다른 전송이 차단 해제되어야 하는지 여부를 보기 위해 확인될 수 있다.
동작(260)에서, 미해결 데이터 전송의 실행에 응답하여, 처리 로직은 데이터 액세스 동작의 실행을 스케줄링할 수 있다. 일부 실시예들에서, 제1 메모리 컴포넌트로부터 제2 메모리 컴포넌트로 데이터를 복사하는 동작이 실행되기 전에, 처리 로직은 제2 메모리 장치로부터 제1 입도를 갖는 오래된 세그먼트를 축출할 수 있다. 일 예에서, 축출은 LRU 데이터를 기반으로 할 수 있다.
도 3은 본 개시의 일부 실시예들에 따른, 전송 파이프라인에서의 데이터 의존도를 관리하는 예시적인 방법(300)의 흐름도이다. 방법(300)은 하드웨어(예를 들어, 처리 장치, 회로부, 전용 로직, 프로그램 가능 로직, 마이크로코드, 장치의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 처리 장치에서 실행되거나 수행된 명령어들) 또는 이들의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다. 일부 실시예들에서, 방법(300)은 도 1의 캐시 매니저(113)에 의해 수행된다. 특정 시퀀스 또는 순서로 도시되어 있지만, 달리 명시되지 않는 한, 프로세스들의 순서는 수정될 수 있다. 따라서, 예시된 실시예들은 예들로서만 이해되어야 하며, 예시된 프로세스들은 다른 순서로 수행될 수 있으며, 일부 프로세스들은 병렬로 수행될 수 있다. 추가로, 하나 이상의 프로세스들은 다양한 실시예들에서 생략될 수 있다. 따라서, 모든 프로세스들이 모든 실시예에서 필요한 것은 아니다. 다른 프로세스 흐름들이 가능하다.
동작(310)에서, 처리 로직은 메모리 장치(130)에서 호스트 데이터 세트를 유지한다. 동작(320)에서, 처리 로직은 메모리 장치(140)에서 호스트 데이터의 서브셋을 유지한다. 메모리 장치(140)는 메모리 장치(130)보다 낮은 액세스 레이턴시를 가질 수 있고, 메모리 장치(130)에 대한 캐시로 사용될 수 있다. 메모리 장치(140)는 호스트 데이터의 서브셋의 제1 세그먼트들에 대한 메타데이터를 유지할 수 있고, 제1 세그먼트들은 제1 크기를 갖는다. 일 예에서, 제1 세그먼트들은 섹터들을 포함한다.
동작(330)에서, 처리 로직은 데이터 동작을 수신한다. 데이터 동작은 판독 액세스 동작 또는 기입 액세스 동작일 수 있다. 동작(340)에서, 처리 로직은 데이터 구조가 데이터 액세스 동작의 물리적 어드레스와 연관된 미해결 데이터 전송의 표시를 포함한다고 결정한다. 일 예에서, 데이터 구조는 섹터 CAM(152), 페이지 CAM(154), 또는 이들의 조합 중 적어도 하나일 수 있다. 일 예에서, 처리 로직은 데이터 동작에 의해 액세스되는 물리적 어드레스가 미해결 데이터 전송을 갖는지를 결정하기 위해 섹터 CAM(152) 또는 페이지 CAM(154) 중 적어도 하나의 조회를 수행할 수 있다. 예를 들어, 데이터 구조는, 각각이 미해결 데이터 전송에 대응되고, 각각이 관련 물리적 어드레스를 갖는, 다수의 엔트리들을 가질 수 있다. 일 실시예에서, 캐시 매니저(113)는 데이터 동작의 물리적 어드레스를 데이터 구조의 각 엔트리와 연관된 물리적 어드레스와 비교할 수 있다. 캐시 매니저(113)는 데이터 동작의 물리적 어드레스가 데이터 구조의 엔트리들 중 적어도 하나와 연관된 물리적 어드레스와 일치할 때 데이터 동작의 물리적 어드레스가 미해결 데이터 전송을 갖는다고 결정할 수 있다.
동작(350)에서, 물리적 어드레스와 연관된 적어도 하나의 제1 세그먼트를 제1 메모리 컴포넌트로부터 제2 메모리 컴포넌트로 복사하는 동작이 실행되도록 스케줄링된다고 결정하는 것에 응답하여, 처리 로직은 적어도 하나의 제1 세그먼트를 복사하는 동작이 실행될 때까지 데이터 액세스 동작의 실행의 스케줄링을 지연시킬 수 있다. 일 예에서, 처리 로직은 CAM(예를 들어, 섹터 CAM(152), 페이지 CAM(154)) 조회 히트 ID로 인덱싱된 위치에서 섹터 블록 전송 데이터 구조에 데이터 전송을 배치함으로써 미해결 데이터 전송이 완료될 때까지 데이터 액세스 동작을 지연시킬 수 있다. 섹터 전송이 완료되면, 해당 섹터 블록 전송 엔트리는 섹터 블록 전송 데이터 구조에서 확인될 수 있다. 섹터 블록 전송 데이터 구조에 저장된 ID가 현재 전송과 동일한 ID가 아닌 경우, 캐시 매니저(113)는 저장된 전송을 차단 해제할 수 있다. 섹터 블록 전송에 유효한 전송이 있는 경우, 플래그로 표시될 수 있으며, 이는 다른 전송이 차단 해제되어야 하는지 여부를 보기 위해 확인될 수 있다.
동작(360)에서, 미해결 데이터 전송의 실행에 응답하여, 처리 로직은 데이터 액세스 동작의 실행을 스케줄링할 수 있다. 일부 실시예들에서, 제1 메모리 컴포넌트로부터 제2 메모리 컴포넌트로 데이터를 복사하는 동작이 실행되기 전에, 처리 로직은 제2 메모리 장치로부터 제1 입도를 갖는 오래된 세그먼트를 축출할 수 있다. 일 예에서, 축출은 LRU 데이터를 기반으로 할 수 있다.
도 4는 본 개시의 일부 실시예들에 따른, 섹터 축출 전송에 관한 동작들을 수행하는 예시적인 방법(400)의 흐름도이다. 방법(400)은 하드웨어(예를 들어, 처리 장치, 회로부, 전용 로직, 프로그램 가능 로직, 마이크로코드, 장치의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 처리 장치에서 실행되거나 수행된 명령어들) 또는 이들의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다. 일부 실시예들에서, 방법(400)은 도 1의 캐시 매니저(113)에 의해 수행된다. 특정 시퀀스 또는 순서로 도시되어 있지만, 달리 명시되지 않는 한, 프로세스들의 순서는 수정될 수 있다. 따라서, 예시된 실시예들은 예들로서만 이해되어야 하며, 예시된 프로세스들은 다른 순서로 수행될 수 있으며, 일부 프로세스들은 병렬로 수행될 수 있다. 추가로, 하나 이상의 프로세스들은 다양한 실시예들에서 생략될 수 있다. 따라서, 모든 프로세스들이 모든 실시예에서 필요한 것은 아니다. 다른 프로세스 흐름들이 가능하다.
동작(410)에서, 처리 로직은 섹터와 연관된 섹터 축출 전송을 발행할 수 있다. 동작(420)에서, 처리 로직은 페이지 CAM(154)에서 섹터에 대한 조회를 수행할 수 있다. 페이지 CAM(154) 조회 미스에 응답하여, 처리 로직은, 동작(430)에서, Vpage를 생성하고 섹터 축출 전송의 총 수를 결정하기 위해 섹터 카운트를 초기화할 수 있다. Vpage는 다수의 미해결 섹터 전송을 나타낼 수 있으며, 섹터 카운트 데이터 구조를 사용하여 Vpage에 의해 표현되는 미해결 섹터 전송의 총 수를 추적할 수 있다. 일 예에서, 섹터 축출 전송은 제1 섹터 축출 전송 ID를 그 Vpage ID로 사용할 수 있다.
페이지 CAM(154) 조회 히트에 응답하여, 처리 로직은, 동작(440)에서, 히트 Vpage를 무효화하고, 모든 섹터 축출 전송을 차단하고, 새로운 Vpage를 생성하고, 섹터 축출 전송의 총 수를 결정하기 위해 섹터 카운트를 초기화할 수 있다. 일 예에서, 처리 로직은 히트 ID로 인덱싱된 위치에서 페이지 차단된 다음 전송 데이터 구조에, 및 새로운 Vpage로 인덱싱된 위치에서 다른 데이터 구조(예를 들어, 페이지 차단된 목록 테일 데이터 구조)에 제1 섹터 축출 전송 ID를 배치할 수 있다. 제2 섹터 축출 전송의 경우, 처리 로직은 제1 섹터 축출 전송 ID를 Vpage ID로 사용할 수 있고, 또한 페이지 차단 목록 테일 데이터 구조를 사용하여 자체 전송 ID를 넣을 페이지 차단 목록의 위치를 찾아, 제1 섹터 축출 전송과 연결 목록을 형성할 수 있다. 페이지 차단된 목록 테일은 또한 제2 섹터 축출 전송 ID로 업데이트될 수 있다. 처리 로직은 모든 섹터 축출 전송이 연결 목록을 형성하고 일단 제1 섹터 축출 전송이 차단 해제되면 하나씩 차단 해제될 수 있도록 제2 전송과 같은 후속 섹터 축출 전송을 처리할 수 있으며, 이는 그 차단 Vpage의 섹터 카운트가 0으로 다운 카운트될 때 발생할 수 있다.
도 5는 기계가 본원에 논의된 방법론들 중 임의의 하나 이상을 수행하게 하는 명령어 세트가 실행될 수 있는 컴퓨터 시스템(500)의 예시적인 기계를 예시한다. 일부 실시예들에서, 컴퓨터 시스템(500)은 메모리 서브 시스템(예를 들어, 도 1의 메모리 서브 시스템(110))을 포함하거나 이를 활용하는 호스트 시스템(예를 들어, 도 1의 호스트 시스템(120))에 대응할 수 있거나, 컨트롤러의 동작들을 수행하는 데(예를 들어, 운영 체제를 실행하여 도 1의 캐시 매니저(113)에 대응되는 동작들을 수행하는 데) 사용될 수 있다. 대안적인 실시예들에서, 기계는 LAN, 인트라넷, 엑스트라넷 및/또는 인터넷의 다른 기계들에 연결(예를 들어, 네트워킹)될 수 있다. 기계는 클라이언트-서버 네트워크 환경에서 서버 또는 클라이언트 기계의 용량으로, 피어 투 피어(또는 분배) 네트워크 환경에서의 피어 기계로, 또는 클라우드 컴퓨팅 인프라스트럭처 또는 환경에서의 서버 또는 클라이언트 기계로 동작할 수 있다.
기계는 개인용 컴퓨터(PC), 태블릿 PC, 셋톱박스(STB), 개인용 디지털 보조 장치(PDA), 셀룰러 텔레폰, 웹 기기, 서버, 네트워크 라우터, 스위치 또는 브릿지, 또는 해당 기계에 의해 수행될 조치들을 명시하는 명령어 세트(순차적 또는 다른 방식)을 실행할 수 있는 임의의 기계일 수 있다. 또한, 단일 기계가 예시되어 있지만, "기계"라는 용어는 또한 본원에서 논의된 방법론들 중 임의의 하나 이상을 수행하기 위해 명령어 세트(또는 복수 세트)를 개별적으로 또는 공통으로 실행하는 임의의 기계 컬렉션을 포함하는 것으로 간주해야 한다.
예시적인 컴퓨터 시스템(500)은 버스(530)를 통해 서로 통신하는, 처리 장치(502), 메인 메모리(504)(예를 들어, 읽기 전용 메모리(ROM), 플래시 메모리, 동기식 DRAM(SDRAM) 또는 램버스 DRAM(RDRAM)과 같은 동적 랜덤 액세스 메모리(DRAM) 등), 정적 메모리(506)(예를 들어, 플래시 메모리, 정적 랜덤 액세스 메모리(SRAM) 등) 및 데이터 저장 시스템(518)을 포함한다. 처리 장치(502)는 마이크로프로세서, 중앙 처리 장치 등과 같은 하나 이상의 범용 처리 장치들을 나타낸다. 보다 구체적으로, 처리 장치는 CISC(complex instruction set computing) 마이크로프로세서, RISC(reduced instruction set computing) 마이크로프로세서, VLIW(very long instruction word) 마이크로프로세서, 또는 명령어 세트들을 구현하는 프로세서, 또는 명령어 세트들의 조합을 구현하는 프로세서들일 수 있다. 처리 장치(502)는 또한 주문형 반도체(ASIC), 필드 프로그램 가능 게이트 어레이(FPGA), 디지털 신호 프로세서(DSP), 네트워크 프로세서 등과 같은 하나 이상의 특수 목적 처리 장치들일 수 있다. 처리 장치(502)는 본원에 논의된 동작들 및 단계들을 수행하기 위한 명령어들(526)을 실행하도록 구성된다. 컴퓨터 시스템(500)은 네트워크(520)를 통해 통신하기 위한 네트워크 인터페이스 장치(508)를 더 포함할 수 있다.
데이터 저장 시스템(518)는 본원에 설명된 방법들 또는 기능들 중 임의의 하나 이상을 구현하는 하나 이상의 명령어 세트(526) 또는 소프트웨어가 저장되는 기계 판독 가능 저장 매체(524)(컴퓨터 판독 가능 매체로 알려짐)를 포함할 수 있다. 명령어들(526)은 또한 기계 판독 가능 저장 매체를 구성하는 컴퓨터 시스템(500), 메인 메모리(504) 및 처리 장치(502)에 의한 실행 동안 메인 메모리(504) 내에 및/또는 처리 장치(502) 내에 완전히 또는 적어도 부분적으로 상주할 수 있다. 기계 판독 가능 저장 매체(524), 데이터 저장 시스템(518) 및/또는 메인 메모리(504)는 도 1의 메모리 서브 시스템(110)에 대응될 수 있다.
일 실시예에서, 명령어들(526)은 도 1의 캐시 매니저(113)에 대응하는 기능을 구현하기 위한 명령어들을 포함한다. 기계 판독 가능 저장 매체(524)가 예시적인 실시예에서 단일 매체인 것으로 도시되어 있지만, "기계 판독 가능 저장 매체"라는 용어는 하나 이상의 명령어 세트들을 저장하는 단일 매체 또는 다중 매체를 포함하는 것으로 간주되어야 한다. "기계 판독 가능 저장 매체"라는 용어는 또한 기계에 의해 실행되는 명령어 세트를 저장 또는 인코딩할 수 있고 기계가 본 개시의 방법들 중 임의의 하나 이상을 수행하게 하는 임의의 매체를 포함하는 것으로 간주되어야 한다. 따라서 "기계 판독 가능 저장 매체"라는 용어는, 이에 제한되는 것은 아니나, 솔리드 스테이트 메모리, 광학 매체 및 자기 매체를 포함하는 것으로 간주되어야 한다.
전술한 상세한 설명의 일부 부분들은 컴퓨터 메모리 내의 데이터 비트들에 대한 연산의 알고리즘 및 상징적 표현들과 관련하여 제시되었다. 이러한 알고리즘적 설명들 및 표현들은 데이터 처리 분야의 당업자가 그들 작업의 실체를 다른 당업자에게 가장 효과적으로 전달하기 위해 사용되는 방식들이다. 여기서, 알고리즘은 일반적으로 원하는 결과를 도출하는 자기 모순 없는(self-consistent) 동작 시퀀스인 것으로 생각된다. 동작들은 이러한 물리적 수량의 물리적 조작을 필요로 한다. 일반적으로, 반드시 그런 것은 아니지만, 이러한 양은 저장되고, 결합되고, 비교되고 아니면 조작될 수 있는 전기 또는 자기 신호들의 형태를 취한다. 이러한 신호들을 비트, 값, 요소, 심볼, 문자, 용어, 숫자 등으로 지칭하는 것이, 주로 일반적인 사용의 이유로, 때때로 편리한 것으로 입증되었다.
그러나, 이러한 및 유사한 용어들 모두는 적절한 물리적 양과 관련이 있으며 이러한 양에 적용되는 편리한 라벨들일 뿐이라는 점을 명심해야 한다. 본 개시는 컴퓨터 시스템의 레지스터들과 메모리들 내에서 물리적(전자적) 양으로 표현되는 데이터를 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 이러한 정보 저장 시스템들 내의 물리적 양으로 표현되는 다른 데이터로 조작하고 변환하는 컴퓨터 시스템 또는 이와 유사한 전자 컴퓨팅 장치의 동작 및 프로세스들을 인용할 수 있다.
본 개시는 또한 본원에서 동작들을 수행하기 위한 장치에 관한 것이다. 이 장치는 의도된 목적들을 위해 특별히 구성될 수 있거나, 이는 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성된 범용 컴퓨터를 포함할 수 있다. 이러한 컴퓨터 프로그램은, 이에 제한되는 것은 아니나, 플로피 디스크, 광 디스크, CD-ROM, 및 자기-광학 디스크, 읽기 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), EPROM, EEPROM, 자기 또는 광학 카드, 또는 각각 컴퓨터 시스템 버스에 연결된 전자 명령어들을 저장하기에 적합한 임의의 유형의 매체를 포함하는 임의 유형의 디스크와 같은 컴퓨터 판독 가능 저장 매체에 저장될 수 있다.
본원에 제시된 알고리즘들 및 디스플레이들은 본질적으로 임의의 특정 컴퓨터 또는 다른 장치와 관련되지 않는다. 다양한 범용 시스템들은 본원의 교시에 따른 프로그램들과 함께 사용될 수 있거나, 방법을 수행하기 위해 다 특화된 장치를 구성하는 것이 편리하다는 것을 입증할 수 있다. 다양한 이들 시스템들의 구조는 아래의 설명에서 제시되는 것으로 나타날 것이다. 또한, 본 개시는 임의의 특정 프로그래밍 언어를 참조하여 설명되지 않는다. 다양한 프로그래밍 언어들이 본원에 기술된 바와 같이 본 개시의 교시를 구현하는 데 사용될 수 있음이 이해될 것이다.
본 개시는 본 개시에 따른 프로세스를 수행하기 위해 컴퓨터 시스템(또는 다른 전자 장치)를 프로그래밍하는 데 사용될 수는, 명령어들을 저장한 기계 판독 가능 매체를 포함할 수 있는 컴퓨터 프로그램 제품 또는 소프트웨어로서 제공될 수 있다. 기계 판독 가능 매체는 기계(예를 들어, 컴퓨터)에 의해 판독 가능한 형태로 정보를 저장하기 위한 임의의 메커니즘을 포함한다. 예를 들어, 기계 판독 가능(예: 컴퓨터 판독 가능) 매체는 읽기 전용 메모리("ROM"), 랜덤 액세스 메모리("RAM"), 자기 디스크 저장 매체, 광 저장 매체, 플래시 메모리 장치들 등과 같은 기계(예: 컴퓨터) 판독 가능 저장 매체를 포함한다.
전술한 명세서에서, 본 개시의 실시예들은 그 특정 예시적인 실시예들을 참조하여 설명되었다. 다음의 청구 범위에 명시된 본 개시의 실시예들의 넓은 사상 및 범위를 벗어나지 않고 다양한 변형들이 이루어질 수 있음이 명백할 것이다. 따라서, 명세서 및 도면들은 제한적인 의미보다는 예시적인 의미로 간주되어야 한다.

Claims (20)

  1. 시스템에 있어서,
    제1 메모리 장치;
    상기 제1 메모리 장치에 결합된 제2 메모리 장치로서, 상기 제2 메모리 장치는 상기 제1 메모리 장치보다 낮은 액세스 레이턴시를 가지며 상기 제1 메모리 장치를 위한 캐시인, 상기 제2 메모리 장치; 및
    상기 제1 및 제2 메모리 컴포넌트들에 동작 가능하게 결합된 처리 장치로서,
    데이터 액세스 동작을 수신하는 단계;
    데이터 구조가 상기 데이터 액세스 동작의 물리적 어드레스와 연관된 데이터의 미해결 데이터 전송의 표시를 포함한다고 결정하는 것에 응답하여, 상기 제1 메모리 컴포넌트로부터 상기 제2 메모리 컴포넌트로 상기 물리적 어드레스와 연관된 상기 데이터를 복사하는 동작이 실행되도록 스케줄링되는지 여부를 결정하는 단계; 및
    상기 제1 메모리 컴포넌트로부터 상기 제2 메모리 컴포넌트로 상기 물리적 어드레스와 연관된 상기 데이터를 복사하는 동작이 실행되도록 스케줄링된다고 결정하는 것에 응답하여, 상기 제1 메모리 컴포넌트로부터 상기 제2 메모리 컴포넌트로 상기 데이터를 복사하는 상기 동작이 실행될 때까지 상기 데이터 액세스 동작의 실행의 스케줄링을 지연시키도록 결정하는 단계를 포함하는 동작들을 수행하도록 하는, 상기 처리 장치를 포함하는, 시스템.
  2. 제1항에 있어서,
    상기 데이터 액세스 동작은 판독 액세스 동작 또는 기입 액세스 동작 중 적어도 하나를 포함하고;
    상기 제1 메모리 컴포넌트는 크로스 포인트 어레이 메모리 컴포넌트이고;
    상기 데이터 구조는 내용 주소화 메모리(CAM)를 포함하는, 시스템.
  3. 제1항에 있어서, 상기 처리 장치는,
    상기 데이터 구조가 상기 데이터 액세스 동작의 물리적 어드레스와 연관된 데이터의 미해결 데이터 전송의 표시를 포함하지 않는다고 결정하는 것에 응답하여, 상기 데이터 액세스 동작의 실행을 스케줄링하는 단계를 포함하는 동작들을 더 수행하도록 하는, 시스템.
  4. 제1항에 있어서, 상기 데이터 액세스 동작의 상기 실행의 상기 스케줄링을 지연시키는 단계는 전송 데이터 구조에 상기 데이터 액세스 동작의 표시를 저장하는 단계를 포함하는, 시스템.
  5. 제4항에 있어서, 상기 처리 장치는,
    상기 제1 메모리 컴포넌트로부터 상기 제2 메모리 컴포넌트로 상기 데이터를 복사하는 상기 동작의 실행에 응답하여, 해당 엔트리를 무효화함으로써 상기 데이터 구조로부터 상기 미해결 데이터 전송의 상기 표시를 제거하는 단계;
    상기 전송 데이터 구조로부터 상기 데이터 액세스 동작을 검색하는 단계; 및
    상기 데이터 액세스 동작의 실행을 스케줄링하는 단계를 포함하는 동작들을 더 수행하도록 하는, 시스템.
  6. 제1항에 있어서, 상기 제2 메모리 장치는 제1 입도로 데이터의 세그먼트들을 저장하고 제2 입도로 데이터의 세그먼트들을 저장하도록 하고, 상기 제2 입도는 상기 제1 입도보다 큰, 시스템.
  7. 제6항에 있어서, 상기 처리 장치는,
    상기 제1 메모리 컴포넌트로부터 상기 제2 메모리 컴포넌트로 데이터를 복사하는 상기 동작이 실행되기 전에 상기 제2 메모리 장치로부터 제1 입도를 갖는 오래된 세그먼트를 축출하는 단계를 포함하는 동작들을 더 수행하도록 하는, 시스템.
  8. 방법에 있어서,
    메모리 서브 시스템의 제1 메모리 장치에서 호스트 데이터 세트를 유지하는 단계;
    상기 메모리 서브 시스템의 제2 메모리 장치에서 호스트 데이터 서브셋을 유지하는 단계로서, 상기 제2 메모리 장치는 상기 제1 메모리 장치보다 낮은 액세스 레이턴시를 가지며, 상기 제1 메모리 장치를 위한 캐시로서 사용되며, 상기 제2 메모리 장치는 상기 호스트 데이터 서브셋의 제1 세그먼트들에 대한 메타데이터를 유지하고, 상기 제1 세그먼트들은 제1 크기를 갖는, 상기 유지하는 단계;
    데이터 액세스 동작을 수신하는 단계;
    데이터 구조는 상기 데이터 액세스 동작의 물리적 어드레스와 연관된 데이터의 미해결 데이터 전송의 표시를 포함한다고 결정하는 단계; 및
    상기 제1 메모리 컴포넌트로부터 상기 제2 메모리 컴포넌트로 상기 물리적 어드레스와 연관된 적어도 하나의 제1 세그먼트에서 복사하는 동작이 실행되도록 스케줄링된다고 결정하는 것에 응답하여, 상기 적어도 하나의 제1 세그먼트를 복사하는 상기 동작이 실행될 때까지 상기 데이터 액세스 동작의 실행의 스케줄링을 지연시키는 단계를 포함하는, 방법.
  9. 제8항에 있어서,
    상기 데이터 액세스 동작은 판독 액세스 동작 또는 기입 액세스 동작 중 적어도 하나를 포함하고;
    상기 제1 메모리 컴포넌트는 크로스 포인트 어레이 메모리 컴포넌트이고;
    상기 데이터 구조는 내용 주소화 메모리(CAM)를 포함하는, 방법.
  10. 제8항에 있어서,
    상기 데이터 구조가 상기 데이터 액세스 동작의 물리적 어드레스와 연관된 데이터의 미해결 데이터 전송의 표시를 포함하지 않는다고 결정하는 것에 응답하여, 상기 데이터 액세스 동작의 실행을 스케줄링하는 단계를 더 포함하는, 방법.
  11. 제8항에 있어서, 상기 데이터 액세스 동작의 상기 실행의 상기 스케줄링을 지연시키는 단계는 전송 데이터 구조에 상기 데이터 액세스 동작의 표시를 저장하는 단계를 포함하는, 방법.
  12. 제11항에 있어서,
    상기 제1 메모리 컴포넌트로부터 상기 제2 메모리 컴포넌트로 상기 물리적 어드레스와 연관된 적어도 하나의 제1 세그먼트를 복사하는 상기 동작의 실행에 응답하여, 해당 엔트리를 무효화함으로써 상기 데이터 구조로부터 상기 미해결 데이터 전송의 상기 표시를 제거하는 단계;
    상기 전송 데이터 구조로부터 상기 데이터 액세스 동작을 검색하는 단계; 및
    상기 데이터 액세스 동작의 실행을 스케줄링하는 단계를 더 포함하는, 방법.
  13. 제8항에 있어서, 상기 제2 메모리 장치는 제1 입도로 데이터의 세그먼트들을 저장하고 제2 입도로 데이터의 세그먼트들을 저장하도록 하고, 상기 제2 입도는 상기 제1 입도보다 크며, 상기 제1 메모리 컴포넌트로부터 상기 제2 메모리 컴포넌트로 상기 적어도 하나의 제1 세그먼트를 복사하는 상기 동작이 실행되기 전에 상기 제2 메모리 장치로부터 제1 입도를 갖는 오래된 세그먼트를 축출하는 단계를 더 포함하는, 방법.
  14. 비일시적 컴퓨터 판독 가능 저장 매체로서, 제1 메모리 컴포넌트 및 제2 메모리 컴포넌트에 동작 가능하게 결합된 처리 장치에 의해 실행 시,
    데이터 액세스 동작을 수신하는 단계;
    데이터 구조가 상기 데이터 액세스 동작의 물리적 어드레스와 연관된 데이터의 미해결 데이터 전송의 표시를 포함한다고 결정하는 것에 응답하여, 상기 제1 메모리 컴포넌트로부터 상기 제2 메모리 컴포넌트로 상기 물리적 어드레스와 연관된 상기 데이터를 복사하는 동작이 실행되도록 스케줄링되는지 여부를 결정하는 단계; 및
    상기 제1 메모리 컴포넌트로부터 상기 제2 메모리 컴포넌트로 상기 물리적 어드레스와 연관된 상기 데이터를 복사하는 동작이 실행되도록 스케줄링된다고 결정하는 것에 응답하여, 상기 제1 메모리 컴포넌트로부터 상기 제2 메모리 컴포넌트로 상기 데이터를 복사하는 상기 동작이 실행될 때까지 상기 데이터 액세스 동작의 실행의 스케줄링을 지연시키도록 결정하는 단계를 포함하는 동작들을 수행하도록 하는, 명령어들을 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  15. 제14항에 있어서,
    상기 데이터 액세스 동작은 판독 액세스 동작 또는 기입 액세스 동작 중 적어도 하나를 포함하고;
    상기 제1 메모리 컴포넌트는 크로스 포인트 어레이 메모리 컴포넌트이고;
    상기 데이터 구조는 내용 주소화 메모리(CAM)를 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  16. 제14항에 있어서, 상기 처리 장치는,
    상기 데이터 구조가 상기 데이터 액세스 동작의 물리적 어드레스와 연관된 데이터의 미해결 데이터 전송의 표시를 포함하지 않는다고 결정하는 것에 응답하여, 상기 데이터 액세스 동작의 실행을 스케줄링하는 단계를 포함하는 동작들을 더 수행하도록 하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  17. 제14항에 있어서, 상기 데이터 액세스 동작의 상기 실행의 상기 스케줄링을 지연시키는 단계는 전송 데이터 구조에 상기 데이터 액세스 동작의 표시를 저장하는 단계를 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  18. 제17항에 있어서, 상기 처리 장치는,
    상기 제1 메모리 컴포넌트로부터 상기 제2 메모리 컴포넌트로 상기 데이터를 복사하는 상기 동작의 실행에 응답하여, 해당 엔트리를 무효화함으로써 상기 데이터 구조로부터 상기 미해결 데이터 전송의 상기 표시를 제거하는 단계;
    상기 전송 데이터 구조로부터 상기 데이터 액세스 동작을 검색하는 단계; 및
    상기 데이터 액세스 동작의 실행을 스케줄링하는 단계를 포함하는 동작들을 더 수행하도록 하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  19. 제14항에 있어서, 상기 제2 메모리 장치는 제1 입도로 데이터의 세그먼트들을 저장하고 제2 입도로 데이터의 세그먼트들을 저장하도록 하고, 상기 제2 입도는 상기 제1 입도보다 큰, 비일시적 컴퓨터 판독 가능 저장 매체.
  20. 제19항에 있어서, 상기 처리 장치는,
    상기 제1 메모리 컴포넌트로부터 상기 제2 메모리 컴포넌트로 데이터를 복사하는 상기 동작이 실행되기 전에 상기 제2 메모리 장치로부터 제1 입도를 갖는 오래된 세그먼트를 축출하는 단계를 포함하는 동작들을 더 수행하도록 하는, 비일시적 컴퓨터 판독 가능 저장 매체.
KR1020227012706A 2019-09-20 2020-09-18 하이브리드 dimm의 전송 파이프라인에서의 데이터 의존도 관리 KR20220065817A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962903202P 2019-09-20 2019-09-20
US62/903,202 2019-09-20
US17/003,336 2020-08-26
US17/003,336 US11494306B2 (en) 2019-09-20 2020-08-26 Managing data dependencies in a transfer pipeline of a hybrid dimm
PCT/US2020/051391 WO2021055675A1 (en) 2019-09-20 2020-09-18 Managing data dependencies in a transfer pipeline of a hybrid dimm

Publications (1)

Publication Number Publication Date
KR20220065817A true KR20220065817A (ko) 2022-05-20

Family

ID=74880103

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227012706A KR20220065817A (ko) 2019-09-20 2020-09-18 하이브리드 dimm의 전송 파이프라인에서의 데이터 의존도 관리

Country Status (5)

Country Link
US (1) US11494306B2 (ko)
KR (1) KR20220065817A (ko)
CN (1) CN114586018A (ko)
DE (1) DE112020004407T5 (ko)
WO (1) WO2021055675A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022143243A (ja) * 2021-03-17 2022-10-03 キオクシア株式会社 メモリシステムおよびその制御方法
CN117389913A (zh) * 2022-07-05 2024-01-12 迈络思科技有限公司 使用组分区的缓存管理

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6470445B1 (en) 1999-09-07 2002-10-22 Hewlett-Packard Company Preventing write-after-write data hazards by canceling earlier write when no intervening instruction uses value to be written by the earlier write
US7228402B2 (en) 2002-01-02 2007-06-05 Intel Corporation Predicate register file write by an instruction with a pending instruction having data dependency
US6925526B2 (en) 2002-10-31 2005-08-02 International Business Machines Corporation Method and apparatus for servicing mixed block size data access operations in a disk drive data storage device
US7117309B2 (en) 2003-04-14 2006-10-03 Hewlett-Packard Development Company, L.P. Method of detecting sequential workloads to increase host read throughput
US20060026371A1 (en) 2004-07-30 2006-02-02 Chrysos George Z Method and apparatus for implementing memory order models with order vectors
JP4819369B2 (ja) 2005-02-15 2011-11-24 株式会社日立製作所 ストレージシステム
US7467280B2 (en) 2006-07-05 2008-12-16 International Business Machines Corporation Method for reconfiguring cache memory based on at least analysis of heat generated during runtime, at least by associating an access bit with a cache line and associating a granularity bit with a cache line in level-2 cache
US7596643B2 (en) 2007-02-07 2009-09-29 Siliconsystems, Inc. Storage subsystem with configurable buffer
US8161240B2 (en) 2007-10-10 2012-04-17 Apple Inc. Cache management
US8473684B2 (en) * 2009-12-22 2013-06-25 International Business Machines Corporation Delayed replacement of cache entries
JP5296041B2 (ja) 2010-12-15 2013-09-25 株式会社東芝 メモリシステムおよびメモリシステムの制御方法
US9122401B2 (en) 2012-08-23 2015-09-01 Apple Inc. Efficient enforcement of command execution order in solid state drives
US9201796B2 (en) 2012-09-27 2015-12-01 Apple Inc. System cache with speculative read engine
US9292294B2 (en) 2012-09-27 2016-03-22 Intel Corporation Detection of memory address aliasing and violations of data dependency relationships
US20140089600A1 (en) * 2012-09-27 2014-03-27 Apple Inc. System cache with data pending state
TWI470431B (zh) 2013-06-14 2015-01-21 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
US20150081981A1 (en) 2013-09-19 2015-03-19 Netapp, Inc. Generating predictive cache statistics for various cache sizes
US9292444B2 (en) 2013-09-26 2016-03-22 International Business Machines Corporation Multi-granular cache management in multi-processor computing environments
US9594644B2 (en) 2014-09-19 2017-03-14 Sybase, Inc. Converting a serial transaction schedule to a parallel transaction schedule
US10048883B2 (en) 2014-09-29 2018-08-14 Dell Products, Lp Integrated page-sharing cache storing a single copy of data where the data is stored in two volumes and propagating changes to the data in the cache back to the two volumes via volume identifiers
US9442663B2 (en) * 2014-11-19 2016-09-13 Sandisk Technologies Llc Independent set/reset programming scheme
US9529718B2 (en) 2014-12-12 2016-12-27 Advanced Micro Devices, Inc. Batching modified blocks to the same dram page
WO2017052595A1 (en) 2015-09-25 2017-03-30 Hewlett Packard Enterprise Development Lp Variable cache for non-volatile memory
US10623514B2 (en) * 2015-10-13 2020-04-14 Home Box Office, Inc. Resource response expansion
US10019174B2 (en) 2015-10-27 2018-07-10 Sandisk Technologies Llc Read operation delay
US20170371660A1 (en) 2016-06-23 2017-12-28 Microsoft Technology Licensing, Llc Load-store queue for multiple processor cores
US10452598B2 (en) 2016-10-18 2019-10-22 Micron Technology, Inc. Apparatuses and methods for an operating system cache in a solid state device
KR20180044635A (ko) 2016-10-24 2018-05-03 삼성전자주식회사 저장 시스템 및 그것의 동작 방법
GB2563582B (en) 2017-06-16 2020-01-01 Imagination Tech Ltd Methods and systems for inter-pipeline data hazard avoidance
US10481913B2 (en) 2017-08-16 2019-11-19 Mediatek Singapore Pte. Ltd. Token-based data dependency protection for memory access
US10725783B2 (en) 2018-11-02 2020-07-28 International Business Machines Corporation Splitting load hit store table for out-of-order processor
US10990534B2 (en) 2019-01-31 2021-04-27 Intel Corporation Device, system and method to facilitate disaster recovery for a multi-processor platform

Also Published As

Publication number Publication date
CN114586018A (zh) 2022-06-03
US20210089449A1 (en) 2021-03-25
US11494306B2 (en) 2022-11-08
DE112020004407T5 (de) 2022-06-02
WO2021055675A1 (en) 2021-03-25

Similar Documents

Publication Publication Date Title
US11119940B2 (en) Sequential-write-based partitions in a logical-to-physical table cache
WO2020176795A1 (en) Use of outstanding command queues for separate read-only cache and write-read cache in a memory sub-system
US11630778B2 (en) Efficient processing of commands in a memory sub-system
US11914520B2 (en) Separate read-only cache and write-read cache in a memory sub-system
US12007917B2 (en) Priority scheduling in queues to access cache data in a memory sub-system
US11741013B2 (en) Prefetch buffer of memory sub-system
US11494306B2 (en) Managing data dependencies in a transfer pipeline of a hybrid dimm
US11561902B2 (en) Cache operations in a hybrid dual in-line memory module
CN113934666B (zh) 数据接口桥的预取
US11397683B2 (en) Low latency cache for non-volatile memory in a hybrid DIMM
US11698756B2 (en) Cache-based memory read commands
US11531622B2 (en) Managing data dependencies for out of order processing in a hybrid DIMM