KR20220152132A - 코히어런트 메모리 시스템 - Google Patents

코히어런트 메모리 시스템 Download PDF

Info

Publication number
KR20220152132A
KR20220152132A KR1020220042144A KR20220042144A KR20220152132A KR 20220152132 A KR20220152132 A KR 20220152132A KR 1020220042144 A KR1020220042144 A KR 1020220042144A KR 20220042144 A KR20220042144 A KR 20220042144A KR 20220152132 A KR20220152132 A KR 20220152132A
Authority
KR
South Korea
Prior art keywords
memory
request
memory device
cache
volatile memory
Prior art date
Application number
KR1020220042144A
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 KR20220152132A publication Critical patent/KR20220152132A/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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
    • 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
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash 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/0815Cache consistency protocols
    • 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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0656Data buffering arrangements
    • 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/0658Controller construction arrangements
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
    • 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

Abstract

코히어런트 메모리 시스템이 제공된다. 일부 실시 예에서, 코히어런트 메모리 시스템은 제 1 메모리 장치를 포함한다. 제 1 메모리 장치는 캐시 코히어런트 컨트롤러, 휘발성 메모리 컨트롤러, 휘발성 메모리, 비휘발성 메모리 컨트롤러, 및 비휘발성 메모리를 포함한다. 제 1 메모리 장치는 서비스 품질 요구 사항을 수신하고, 서비스 품질 요구 사항에 응답하여 제 1 기능을 선택적으로 활성화하도록 구성된다.

Description

코히어런트 메모리 시스템{COHERENT MEMORY SYSTEM}
본 개시에 따른 실시 예의 하나 이상의 측면은 저장 시스템에 관한 것으로, 특히 캐시 코히어런트 인터페이스를 사용하는 메모리 시스템에 관한 것이다.
대규모 분산 메모리를 갖는 컴퓨팅 시스템은 컴퓨팅 리소스와 메모리 또는 스토리지 리소스 간의 연결에서 캐시 코히어런트 프로토콜의 사용으로부터 이점을 얻을 수 있다. 그러나 이러한 시스템은 예를 들어, 잠재적으로 긴 부팅 시간, 상대적으로 높은 변환 룩어사이드 버퍼(TLB) 실패율, 높은 신뢰성을 갖지 않고 순서를 보존하지 않을 수 있는 연결을 포함하여, 다양한 문제에 직면할 수 있다.
따라서, 대규모 분산 메모리 및 캐시 코히어런트 연결을 갖는 컴퓨팅 시스템에서 구성요소의 개선에 대한 필요성이 대두되고 있다. 현재 배경 기술 단락은 컨텍스트를 제공하기 위한 것이며 선행 기술에 대한 설명이 아니다.
본 발명이 해결하고자 하는 과제는 개선된 성능을 갖는 메모리 시스템 및 메모리 시스템의 구동 방법을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
일부 실시 예에서, 대규모 분산 메모리 시스템의 특정 문제는 (i) 호스트의 변환 룩어사이드 버퍼(TLB)의 성능을 보조하는, 메모리 관리 유닛(MMU) 캐시, (ii) 읽기 및 쓰기 작업의 순서를 처리하기 위한 기능 및 이들이 실행된 순서와 다른 순서로 메모리 장치에 도달할 수 있는 가능성, (iii) 서비스 품질(QoS) 요구 사항을 충족하기 위한 기능, (iv) 연속적인 가상 메모리 주소 세트의 다중 메모리 장치로부터 물리적 메모리 주소를 인터리빙하는 것을 포함하여 CXL과 같은 캐시 코히어런트 프로토콜을 사용한 인터리빙, (v) 오류 수정 코드(ECC)의 사용, (vi) 무결성 및 데이터 암호화(IDE)에 대한 지원, 및 (vii) 다중 논리 장치(MLD) 지원을 포함하여, 메모리 장치에서 특정 기능의 통합에 의해 해결되거나 완화될 수 있다.
본 개시의 일 실시 예에 따르면, 제 1 메모리 장치를 포함하는 시스템을 제공하고, 상기 제 1 메모리 장치는 캐시 코히어런트 컨트롤러; 휘발성 메모리 컨트롤러; 휘발성 메모리; 비휘발성 메모리 컨트롤러; 및 비휘발성 메모리를 포함하고, 상기 제 1 메모리 장치는 서비스 품질 요구 사항을 수신하고; 상기 서비스 품질 요구 사항에 응답하여 제 1 기능을 선택적으로 활성화하도록 구성된다.
일부 실시 예에서, 상기 제 1 기능은 메모리 관리 유닛 캐시의 제공을 포함하고; 상기 제 1 메모리 장치는 상기 휘발성 메모리의 일부를 상기 메모리 관리 단위 캐시로 할당하고, 상기 메모리 관리 유닛 캐시에서 가상 주소를 기반으로 물리적 주소의 물리적 주소 조회를 수행하도록 구성된다.
일부 실시 예에서, 상기 물리적 주소 조회를 수행하는 단계는: 상기 가상 주소의 제 1 부분에 기초하여 상기 메모리 관리 유닛 캐시의 제 1 페이지 테이블에서 기본 주소를 조회하는 단계; 상기 기본 주소에 기초하여 상기 메모리 관리 유닛 캐시의 제 2 페이지 테이블의 시작 주소를 결정하는 단계; 및 상기 가상 주소의 제 2 부분에 기초하여 상기 제 2 페이지 테이블에서 상기 물리적 주소를 조회하는 단계를 포함한다.
일부 실시 예에서, 상기 시스템은 호스트를 더 포함하고, 상기 호스트는 메모리 관리 유닛, 및 변환 룩어사이드 버퍼를 포함하고, 상기 호스트는 상기 제 1 메모리 장치로부터, 상기 물리적 주소 조회를 요청하도록 구성된다.
일부 실시 예에서, 상기 제 1 메모리 장치는: 제 1 IO 요청 - 상기 제 1 IO 요청은 상기 제 1 IO 요청의 발행 시간을 나타내는 제 1 시간 태그를 포함함 - 및 제 2 IO 요청 - 상기 제 2 IO 요청은 상기 제 2 IO 요청의 발행 시간을 나타내는 시간 태그를 포함함 - 을 수신하고; 상기 제 2 IO 요청, 및 상기 제 1 IO 요청을 수행하도록 더욱 구성되고, 상기 제 2 IO 요청의 상기 시간 태그는 상기 제 1 IO 요청의 상기 제 1 시간 태그보다 작다.
일부 실시 예에서, 상기 제 1 IO 요청은 스위치에 의한 상기 제 1 IO 요청의 처리 시간을 나타내는 제 2 시간 태그를 더 포함한다.
일부 실시 예에서, 상기 제 1 메모리는 제 1 미디어 유형을 포함하고; 상기 제 1 메모리 장치는 상기 캐시 코히어런트 컨트롤러를 통해 상기 휘발성 메모리에 대한 로드 값을 보고하도록 더욱 구성된다.
일부 실시 예에서, 상기 휘발성 메모리는 제 1 논리 장치에 매핑되고, 상기 비휘발성 메모리는 제 2 논리 장치에 매핑되고, 상기 제 1 메모리 장치는 상기 캐시 코히어런트 컨트롤러를 통해, 상기 비휘발성 메모리에 대한 로드 값을 보고하도록 더욱 구성된다.
일부 실시 예에서, 상기 시스템은 제 2 메모리 장치를 더 포함하고, 상기 제 1 메모리 장치는 제 1 물리적 주소를 갖는 데이터, 및 제 2 물리적 주소를 갖는 데이터를 저장하도로 구성되고, 상기 제 2 메모리 장치는 제 3 물리적 주소를 갖는 데이터를 저장하도록 구성되고, 상기 제3 물리적 주소는 상기 제 1 물리적 주소보다 크고 상기 제 2 물리적 주소보다 작다.
일부 실시 예에서, 상기 제 1 메모리 장치는 읽기 요청을 수신하고; 상기 제 1 메모리의 제 1 페이지에서 원시 데이터를 읽고; 오류 수정 코드로 상기 원시 데이터를 디코딩하고; 수정된 오류의 수가 임계값을 초과한다고 결정하고; 상기 캐시 코히어런트 컨트롤러를 통해, 상기 제 1 페이지의 폐기를 요청하는 보고를 보내도록 더욱 구성된다.
일부 실시 예에서, 상기 제 1 메모리 장치는 암호화되지 않은 데이터를 포함하는 쓰기 요청을 수신하고; 상기 암호화되지 않은 데이터를 암호화하여 암호화된 데이터를 형성하고; 상기 암호화된 데이터를 상기 비휘발성 메모리에 저장하도록 더욱 구성된다.
일부 실시 예에서, 상기 제 1 메모리 장치는 읽기 요청을 수신하고; 상기 비휘발성 메모리로부터 암호화된 데이터를 읽고; 상기 암호화된 데이터를 해독하여 암호화되지 않은 데이터를 형성하고; 상기 캐시 코히어런트 컨트롤러를 통해 상기 암호화되지 않은 데이터를 전송하도록 더욱 구성된다.
일부 실시 예에서, 상기 캐시 코히어런트 컨트롤러는 컴퓨트 익스프레스 링크(CXL) 컨트롤러이다.
일부 실시 예에서, 상기 제 1 메모리 장치는 유형 3 CXL 장치이다.
본 개시의 일 실시 예에 따르면, 제 1 메모리 장치에 의해, 서비스 품질 요구 사항을 수신하는 단계; 및 상기 서비스 품질 요구 사항에 응답하여 제 1 기능을 선택적으로 활성화하는 단계를 포함하는 방법을 제공하고, 상기 제 1 메모리 장치는 캐시 코히어런트 컨트롤러; 휘발성 메모리 컨트롤러; 휘발성 메모리; 비휘발성 메모리 컨트롤러; 및 비휘발성 메모리를 포함한다.
일부 실시 예에서, 상기 시스템은 상기 제1 메모리 장치에 의해, 상기 휘발성 메모리의 일부를 메모리 관리 유닛 캐시로 할당하는 단계; 및 상기 제 1 메모리 장치에 의해, 가상 주소에 기초하여 상기 메모리 관리 유닛 캐시에서 물리적 주소의 조회를 수행하는 단계를 더 포함한다.
일부 실시 예에서, 상기 조회를 수행하는 단계는 상기 가상 주소의 제 1 부분에 기초하여 상기 메모리 관리 유닛 캐시의 제 1 페이지 테이블에서 기본 주소를 조회하는 단계; 상기 기본 주소에 기초하여 상기 메모리 관리 유닛 캐시의 제 2 페이지 테이블의 시작 주소를 결정하는 단계; 및 상기 가상 주소의 제 2 부분에 기초하여 상기 제 2 페이지 테이블에서 상기 물리적 주소를 조회하는 단계를 포함한다.
일부 실시 예에서, 상기 시스템은 제 1 IO 요청 - 상기 제 1 IO 요청은 상기 제 1 IO 요청의 발행 시간을 나타내는 제 1 시간 태그를 포함함 - , 및 제 2 IO 요청 - 상기 제 2 IO 요청은 상기 제 2 IO 요청의 발행 시간을 나타내는 시간 태그를 포함함 - 을 수신하는 단계; 및 상기 제 2 IO 요청 및 상기 제 1 IO 요청을 수행하는 단계를 더 포함하고, 상기 제 2 IO 요청의 상기 시간 태그는 상기 제 1 IO 요청의 상기 제 1 시간 태그보다 작다.
일부 실시 예에서, 상기 제 1 IO 요청은 스위치에 의한 상기 제 1 IO 요청의 처리 시간을 나타내는 제 2 시간 태그를 더 포함한다.
본 개시의 일 실시 예에 따르면, 제1 메모리 장치를 포함하는 시스템을 제공하고, 상기 제 1 메모리 장치는: 데이터 저장을 위한 수단, 및 캐시 코히어런트 호스트 인터페이스를 포함하고, 상기 제 1 메모리 장치는: 상기 데이터 저장을 위한 수단의 일부를 메모리 관리 유닛 캐시로 할당하고; 상기 메모리 관리 유닛 캐시에서, 가상 주소를 기반으로 물리적 주소의 조회를 수행하도록 구성된다.
본 개시의 이들 및 기타 특징 및 이점은 명세서, 청구범위 및 첨부된 도면을 참조하여 이해될 것이다:
도 1a는 본 개시의 실시 예에 따른, 복수의 서버 및 복수의 메모리 장치를 갖는 컴퓨팅 시스템의 블록도이다;
도 1b는 본 개시의 일 실시 예에 따른 복수의 메모리 장치를 각각 포함하는 복수의 메모리 서버의 블록도이다;
도 2a는 본 개시의 일 실시 예에 따른, 외부 구성요소에 대한 연결을 보여주는 메모리 장치의 블록도이다;
도 2b는 본 개시의 일 실시 예에 따른 방법의 흐름도이다;
도 2c는 본 개시의 일 실시 예에 따른, 메모리 관리 유닛 캐시를 설정하기 위한 방법의 흐름도이다;
도 2d는 본 개시의 일 실시 예에 따른 조회를 수행하는 방법의 흐름도이다;
도 3a는 본 개시의 일 실시 예에 따른 읽기 동작을 위한 타이밍도이다;
도 3b는 본 개시의 일 실시 예에 따른 쓰기 동작을 위한 타이밍도이다;
도 4a는 본 개시의 일 실시 예에 따른 제 1 메모리 장치 마이크로아키텍처의 블록도이다;
도 4b는 본 개시의 일 실시 예에 따른 제 2 메모리 장치 마이크로아키텍처의 블록도이다;
도 4c는 본 개시의 일 실시 예에 따른 제3 메모리 장치 마이크로아키텍처의 블록도이다; 및
도 4d는 본 개시의 일 실시 예에 따른 제4 메모리 장치 마이크로아키텍처의 블록도이다.
도면은 비제한적인 예시일 뿐이며, 청구범위 및 본 발명의 범위는 도면에 도시된 특징을 넘어 확장된다.
첨부된 도면과 관련하여 이하 설명된 상세한 설명은 본 개시에 따라 제공되는 코히어런트 메모리 시스템의 예시적인 실시 예의 설명으로 의도되며 본 개시 내용이 구성되거나 활용될 수 있는 유일한 형태를 나타내는 것은 아니다. 설명은 예시된 실시 예와 관련하여 본 개시의 특징을 설명한다. 그러나, 동일하거나 동등한 기능 및 구조가 본 개시의 범위 내에 또한 포함되도록 의도되는 상이한 실시 예에 의해 달성될 수 있다는 것이 이해될 것이다. 본 명세서의 다른 곳에서 나타낸 바와 같이, 유사한 요소 번호는 유사한 요소 또는 특징을 나타내도록 의도된다.
하이퍼스케일 워크로드 요구사항이 있는 컴퓨팅 시스템에서, 워크로드는 메모리 및 IO 대기 시간 및 대역폭 조건이 다양할 수 있으며, 컴퓨팅 및 메모리 리소스가 제한될 수 있다. 컴퓨트 익스프레스 링크(CXL) 연결을 사용하는 시스템에서, CXL은 새로운 유형의 메모리 확장 및 코히어런트 가속기를 활성화할 수 있다. 그러나, 분산 및 대규모 CXL 메모리 시스템은, 예를 들어 잠재적으로 긴 부팅 시간, 상대적으로 높은 변환 룩어사이드 버퍼(TLB) 실패율, 높은 신뢰성을 갖지 않고 순서를 보존하지 않을 수 있는 연결을 포함하여, 특정 문제를 보일 수 있다.
일부 실시 예에서, 이러한 문제는 (i) 호스트의 변환 룩어사이드 버퍼(TLB) 의 성능을 보조하는, 메모리 관리 유닛(MMU) 캐시, (ii) 읽기 및 쓰기 작업의 순서를 처리하기 위한 기능 및 이들이 실행된 순서와 다른 순서로 메모리 장치에 도달할 수 있는 가능성, (iii) 서비스 품질(QoS) 요구 사항을 충족하기 위한 기능, (iv) 연속적인 가상 메모리 주소 세트의 다중 메모리 장치로부터 물리적 메모리 주소를 인터리빙하는 것을 포함하여 CXL과 같은 캐시 코히어런트 프로토콜을 사용한 인터리빙, (v) 오류 수정 코드(ECC)의 사용, (vi) 무결성 및 데이터 암호화(IDE)에 대한 지원, 및 (vii) 다중 논리 장치(MLD) 지원을 포함하여, 유형 3 메모리 장치에서 특정 기능의 통합에 의해 해결되거나 완화될 수 있다.
주변 구성요소 인터커넥트 익스프레스(PCIe)는 메모리 연결에 대한 유용성을 제한할 수 있는 상대적으로 높고 가변적인 대기 시간을 가질 수 있는 컴퓨터 인터페이스를 참조할 수 있다. CXL은 고정된 비교적 짧은 패킷 크기를 제공할 수 있는, PCIe 5.0을 통한 통신을 위한 개방형 산업 표준으로, 결과적으로 상대적으로 높은 대역폭과 상대적으로 낮은 고정 레이턴시를 제공할 수 있다. 이와 같이, CXL은 캐시 코히어런트을 지원할 수 있고 CXL은 메모리 연결에 적합할 수 있다. CXL을 더욱 이용하여 호스트와 가속기 간의 연결성, 메모리 장치 및 서버의 네트워크 인터페이스 회로(또는 "네트워크 인터페이스 컨트롤러" 또는 "네트워크 인터페이스 카드"(NIC))를 제공할 수 있다.
CXL과 같은 캐시 코히어런트 프로토콜은 또한 예를 들어, 스칼라, 벡터 및 버퍼링된 메모리 시스템에서, 이종 처리를 위해 사용될 수 있다. CXL은 시스템의 채널, 리타이머, PHY 계층, 인터페이스의 논리적 측면, PCIe 5.0의 프로토콜을 활용하여 캐시 코히어런트 인터페이스를 제공하는 데 사용할 수 있다. CXL 트랜잭션 계층은 단일 링크에서 동시에 실행되는 3개의 다중화된 하위 프로토콜을 포함할 수 있으며, CXL.io, CXL.cache 및 CXL.memory로 언급될 수 있다. CXL.io는 PCIe와 유사한 I/O 의미 체계를 포함할 수 있다. CXL.cache는 캐싱 의미 체계를 포함하고, CXL.memory는 메모리 의미 체계를 포함하고, 캐싱 의미 체계와 메모리 의미 체계는 모두 선택 사항일 수 있다. PCIe와 마찬가지로, CXL은 (i) 분할 가능한, x16, x8 및 x4의 기본 너비, (ii) 8GT/s 및 16GT/s, 128b/130b로 분해 가능한, 32GT/s의 데이터 속도, (iii) 300W(x16 커넥터의 경우 75W) 및 (iv) 플러그 앤 플레이를 지원할 수 있다. 플러그 앤 플레이를 지원하기 위해서, PCIe 또는 CXL 장치 링크는 Gen1의 PCIe에서 교육을 시작하고, CXL을 협상하고, Gen 1 - 5 교육을 완료한 다음에, CXL 트랜잭션을 시작할 수 있다.
일부 실시 예에서, 메모리의 집계 또는 "풀"에 대한 CXL 연결 사용 (예를 들어, 함께 연결된 복수의 메모리 셀을 포함하는 메모리의 양)은 아래에서 더 자세히 논의되는 바와 같이 네트워크에 의해 함께 연결된 복수의 서버를 포함하는 시스템에서 다양한 이점을 제공할 수 있다. 예를 들어, CXL 패킷에 대한 패킷 교환 기능을 제공하는 것 외에 추가 기능이 있는 CXL 스위치 (여기서 "향상된 기능 CXL 스위치"라고 함)는 메모리 집합을 하나 이상의 중앙 처리 장치(CPU) 및 (향상된 기능을 가질 수 있는) 하나 이상의 네트워크 인터페이스 회로에 연결하는 데 사용할 수 있다. 이러한 구성은 (i) 메모리의 집합이 서로 다른 특성을 가진 다양한 유형의 메모리를 포함하는 것을 가능하게 하고, (ii) 향상된 기능 CXL 스위치가 메모리 통합을 가상화하고 적절한 유형의 메모리에 다양한 특성(예: 액세스 빈도)의 데이터를 저장하는 것을 가능하게 하고, (iii) 서버의 처리 회로에서 거의 또는 전혀 관여하지 않고 RDMA가 수행될 수 있도록 향상된 기능 CXL 스위치가 원격 직접 메모리 액세스(RDMA)를 지원하는 것을 가능하게 할 수 있다. 본 명세서에 사용된 바와 같이, 메모리를 "가상화"한다는 것은 처리 회로와 메모리 사이에서 메모리 주소 변환을 수행하는 것을 의미한다.
CXL 스위치는 (i) 단일 레벨 스위칭을 통해 메모리 및 가속기 분해를 지원할 수 있으며, (ii) 리소스가 도메인 간에 오프라인 및 온라인으로 연결되도록 하여 수요에 따라 도메인 간에 시간 다중화를 가능하게 할 수 있으며, (iii) 다운스트림 포트의 가상화를 지원한다. CXL은 일대다 및 다대일 스위칭을 가능하게 할 수 있는 집계된 메모리를 구현하는 데 사용될 수 있으며 (예를 들어, (i) 여러 루트 포트를 하나의 끝점에 연결하거나, (ii) 하나의 루트 포트를 여러 끝점에 연결하거나, (iii) 여러 루트 포트를 여러 끝점에 연결할 수 있음), 일부 실시 예에서 통합된 장치는 각각의 LD-ID(논리적 장치 식별자)를 갖는 다수의 논리적 장치로 분할된다. 이러한 실시 예에서 물리적 장치는 각각의 개시자가 볼 수 있는 복수의 논리적 장치로 분할될 수 있다. 장치는 하나의 물리적 기능(PF)과 복수(예를 들어, 16개)의 분리된 논리 장치를 가질 수 있다. 일부 실시 예에서 논리 장치의 수(예를 들어, 파티션의 수)는 제한될 수 있으며(예를 들어, 16으로), 하나의 제어 파티션(장치를 제어하는 데 사용되는 물리적 기능일 수 있음)도 존재할 수 있다.
도 1a를 참조하면, 일부 실시 예에서, 서버 시스템은 복수의 서버(105)를 포함하고, 각각은 도시된 바와 같이 PCIe 기능을 갖는 PCIe 5.0 CXL 스위치일 수 있는 ToR 서버 연결 스위치(112)에 연결된다. 각각의 서버는 (i) 시스템 메모리(120)(예를 들어, 이중 데이터 레이트(버전 4)(DDR4) 메모리 또는 임의의 다른 적절한 메모리), (ii) 하나 이상의 네트워크 인터페이스 회로(125), 및 (iii) 하나 이상의 CXL 메모리 장치(135)에 각각 연결된, 하나 이상의 처리 회로(115)를 포함한다. 처리 회로(115) 각각은 저장된 프로그램 처리 회로, 예를 들어, 중앙 처리 장치(CPU)(예: x86 CPU), 그래픽 처리 장치(GPU) 또는 ARM 프로세서일 수 있다. 일부 실시 예에서, 네트워크 인터페이스 회로(125)는 (예를 들어, 동일한 반도체 칩 또는 동일한 모듈에서) 메모리 장치(135) 중 하나에 내장될 수 있거나, 네트워크 인터페이스 회로(125)는 메모리 장치(135)와 별도로 패키징될 수 있다. 일부 실시 예에서는 CXL 프로토콜(및 CXL 컨트롤러와 같은 해당 구성 요소)을 사용하는 것으로 본 명세서에서 설명되지만, 본 개시는 CXL에 제한되지 않고, 다른 실시 예에서 상이한 캐시 코히어런트 프로토콜, 및 이러한 프로토콜에 대한 캐시 코히어런트 컨트롤러와 같은 대응하는 구성요소가 사용된다.
본 명세서에 사용된 바와 같이, "메모리 장치"는 하나 이상의 메모리 다이를 포함하는 회로(예를 들어, 인쇄 회로 기판 및 이에 연결된 구성요소를 포함하는 회로, 또는 인쇄 회로 기판을 포함하는 인클로저)이고, 각각의 메모리 다이는 복수의 메모리 셀을 포함한다. 각 메모리 다이 또는 메모리 다이 그룹의 각각이 메모리 장치의 인쇄 회로 기판에 납땜된 (또는 커넥터를 통해 메모리 장치의 인쇄 회로 기판에 연결된) 패키지(예: 에폭시 몰드 화합물(EMC) 패키지)에 있을 수 있다. 메모리 장치(135) 각각은 CXL 인터페이스를 가질 수 있고 CXL 패킷과 메모리 다이의 메모리 인터페이스 사이에서 예를 들어, 메모리 장치(135)에서 메모리의 메모리 기술에 적합한 신호를 변환하기 위한 컨트롤러(137)(예를 들어, FPGA, ASIC, 프로세서 등)를 포함할 수 있다. 본 명세서에 사용된 바와 같이, 메모리 다이의 "메모리 인터페이스"는 메모리 다이의 기술에 고유한 인터페이스이며, 예를 들어, 예를 들어 DRAM의 경우 메모리 인터페이스는 워드 라인 및 비트 라인일 수 있다. 메모리 장치는 또한 아래에서 더 상세히 설명되는 바와 같이, 향상된 능력을 제공할 수 있는 컨트롤러(137)를 포함할 수 있다. 각각의 메모리 장치(135)의 컨트롤러(137)는 캐시 코히어런트 인터페이스를 통해, 예를 들어, CXL 인터페이스를 통해 프로세싱 회로(115)에 연결될 수 있다. 컨트롤러(137)는 상이한 서버(105) 사이의 데이터 전송(예를 들어, RDMA 요청)을 또한 용이하게 하여, 처리 회로(115)를 우회할 수 있다. ToR 이더넷 스위치(112) 및 네트워크 인터페이스 회로(125)는 서로 다른 서버 상의 CXL 메모리 장치 간의 RDMA 요청을 용이하게 하는 RDMA 인터페이스를 포함할 수 있다 (예를 들어, ToR 이더넷 스위치(112) 및 네트워크 인터페이스 회로(125)는 RoCE(RDMA over Converged Ethernet), Infiniband 및 iWARP 패킷의 하드웨어 오프로드 또는 하드웨어 가속을 제공할 수 있다).
서버 연결 스위치(112)는 FPGA 또는 ASIC을 포함할 수 있으며, (스루풋 및 레이턴시 면에서) 이더넷 스위치보다 우수한 성능을 제공할 수 있다. 각각의 서버(105)는 향상된 기능 CXL 스위치(130) 및 복수의 PCIe 커넥터를 통해 서버 연결 스위치(112)에 연결된 복수의 메모리 장치(135)를 포함할 수 있다. 각각의 서버(105)는 도시된 바와 같이, 하나 이상의 처리 회로(115) 및 시스템 메모리(120)를 또한 포함할 수 있다. 서버 연결 스위치(112)는 마스터로서 동작할 수 있고, 각각의 향상된 능력 CXL 스위치(130)는 슬레이브로 동작할 수 있으며, 이는 아래에서 더 상세히 논의된다.
도 1b는 도시된 바와 같이 PCIe 5.0 CXL 스위치일 수 있는 ToR 서버 연결 스위치(112)에 복수의 메모리 서버(150) 각각이 연결되는 실시 예를 도시한다.
도 1a에 도시된 바와 같이, 서버 연결 스위치(112)는 FPGA 또는 ASIC을 포함할 수 있고, (처리량 및 대기 시간 측면에서) 이더넷 스위치보다 우수한 성능을 제공할 수 있다. 도 1a의 실시 예에서와 같이, 메모리 서버(150)는 복수의 PCIe 커넥터를 통해 서버 연결 스위치(112)와 연결된 복수의 메모리 장치(135)를 포함할 수 있다. 도 1b의 실시 예에서와 같이, 처리 회로(115) 및 시스템 메모리(120)는 없을 수 있고, 메모리 서버(150)의 주요 목적은 컴퓨팅 리소스를 갖는 다른 서버(105)에 의한 사용을 위해 메모리를 제공하는 것일 수 있다.
도 2a는 일부 실시 예에서 CXL 메모리 장치(205)의 마이크로아키텍처(예를 들어, CXL 메모리 장치의 내부 아키텍처)를 도시한다.
메모리 장치(205)는 (i) 비휘발성 메모리(예: 솔리드 스테이트 드라이브(SSD))(210), (ii) 비휘발성 메모리(210)에 접속된 (및 이에 인터페이스하거나 제어하도록 구성된) 비휘발성 메모리 컨트롤러(215), (iii) 휘발성 메모리(예를 들어, 이중 데이터 레이트 4(DDR4) 메모리)(220), (iv) 휘발성 메모리(220)에 연결되고(및 이에 인터페이스하고 제어하도록 구성된) 휘발성 메모리 컨트롤러(225), 및 (v) CXL 컨트롤러(230)를 포함한다.
위에서 언급한 바와 같이, 일부 실시 예에서 CXL과 다른 캐시 코히어런트 프로토콜이 사용되고 CXL 컨트롤러(230) 대신에 적절한 캐시 코히어런트 컨트롤러가 사용된다. 도 2A에 도시된 바와 같이, 메모리 장치(205)는 CXL 인터페이스를 통해 (예를 들어, CXL 컨트롤러(230)를 통해) 외부 루트 컴플렉스(235)에 연결될 수 있고, 다음에 이것은 DRAM 메모리 컨트롤러(240) 및 휘발성 메모리(예: DDR4 메모리)(245)에 연결될 수 있다.
도 2b에 도시된 바와 같이, 동작시, 메모리 장치(205)는 260에서, 예를 들어, 호스트로부터 서비스 품질 요구사항을 수신할 수 있고, 265에서, 서비스 품질 요구사항에 응답하여 제 1 기능을 선택적으로 인에이블할 수 있다. 활성화되는 기능은 아래에 식별된 기능 중 하나일 수 있다.
호스트가 사용할 수 있는 메모리 양이 증가함에 따라, 메모리 관리 문제와 같은 특정 문제가 발생할 수 있다. 예를 들어, 일부 중앙 처리 장치(CPU) 플랫폼에는 1과 10 테라바이트(TB) 간의 주 메모리가 있을 수 있다 (예: 스토리지 클래스 메모리(SCM), CXL 메모리 또는 저지연 NAND 메모리). 이러한 시스템에서 운영 체제(OS)의 부팅 시간은 부분적으로 호스트 CPU가 부팅 중에 메모리 페이지를 확인하고 초기화할 수 있기 때문에 증가할 수 있다. 커널 메타데이터는 많은 기가바이트(GB)를 차지할 수 있으며 더 작은 고속 메모리를 방해할 수 있으며, 메모리 환원 및 조각 모음은 상당한 오버헤드를 유발할 수 있다.
일부 실시 예에서, 이러한 문제를 해결하기 위해서, 메모리 장치는 MMU 캐시를 포함할 수 있다. 관련 기술 시스템에서, MMU 액세스 수를 줄이기 위해 CPU 내부에 변환 룩어사이드 버퍼(TLB)를 제공할 수 있다. TLB 손실로 인해 MMU는 호스트 DRAM에 저장될 수 있는 페이지 테이블에 액세스하여 가상 주소를 기반으로 물리적 주소 조회를 수행할 수 있다. 일부 실시 예에서, 메모리 장치는 페이지 테이블의 다중 레벨을 캐시하기 위한 하드웨어(H/W) 구조를 포함할 수 있는 MMU 캐시(위에서 언급된 바와 같음)를 포함한다. MMU 캐시는 페이지 테이블 계층의 상위 레벨에서 최근 페이지 테이블 항목(PTE)을 유지할 수 있다. 이러한 항목은 액세스 지역에 따라 MMU에 저장될 수 있다(예를 들어, 접근된 물리적 메모리 주소의 시공간 접근 패턴). 이러한 시스템에서 MMU 캐시 적중은 액세스 수를 5개 미만으로 줄일 수 있다.
도 2c에 도시된 바와 같이, 메모리 장치는, 270에서, 휘발성 메모리의 일부를 메모리 관리 유닛 캐시로 할당하고, 275에서, 메모리 관리 유닛 캐시에서 가상 주소에 기초하여 물리적 주소의 조회를 수행한다. MMU 캐시는 다른 세분성(예를 들어, 4 킬로바이트(KB) 페이지 또는 큰 페이지)에서 페이지를 관리하고 임의 액세스를 줄이기 위해 하드웨어 지원 번역 계층을 포함할 수 있다. 일부 실시 예에서, MMU 캐시는 (CXL) 메모리 장치의 맥락에서 비균일 메모리 액세스(NUMA) 인식 스케줄링 정책을 재사용한다.
메모리 장치에 연결되거나 이를 포함하는 호스트는 메모리 장치가 MMU 캐시에서 물리적 주소 조회를 수행하도록 요청할 수 있다. 메모리 장치에 의해 MMU 캐시에서 조회를 수행하는 단계는 도 2d에 도시된 바와 같이, (i) 280에서, 가상 주소의 제 1 부분에 기초하여 메모리 관리 유닛 캐시의 제 1 페이지 테이블에서 기본 주소를 조회하는 단계, (ii) 285에서, 기본 주소에 기초하여 메모리 관리 유닛 캐시의 제 2 페이지 테이블의 시작 주소를 결정하는 단계, 및 (iii) 290에서, 가상 주소의 제 2 부분에 기초하여 제 2 페이지 테이블의 물리적 주소를 조회하는 단계를 포함한다.
위에서 언급한 바와 같이, 일부 실시 예에서, 메모리 장치는 읽기 및 쓰기 동작의 순서를 처리하기 위한 특징을 포함한다. 이러한 메모리 장치는 신뢰할 수 없는 미디어를 통해 통신하는 원격의 세분화된 유형 3 시스템이(CXL 유형 3 시스템은 예를 들어 CXL.io 및 CXL.mem이 있는 호스트 메모리용 메모리 확장기임) 예측할 수 없는 방식으로 쓰기를 전달하거나 손실할 수 있는 문제를 해결할 수 있다.
예를 들어, CXL 트랜잭션은 순서가 잘못되어(OOO) 도착할 수 있으며 수신된 트랜잭션에는 재시도된 트랜잭션이 포함될 수 있다. 일부 실시측면에서, 메모리 장치는 (i) 시간 태그가 있는 큰 (시간) 창을 유지하고, (ii) 들어오는 요청을 예약하고 점수판을 작성하고, 이들 각각은 요청이 네트워크를 통해 전송되기 때문에, 네트워크의 다양한 지점에서 (예를 들어, 읽기 또는 쓰기 요청을 발행하는 호스트 및 이러한 요청을 전달하는 스위치에서) 적용된 시간 태그로 태그 지정될 수 있다. 메모리 장치는 모든 미해결 트랜잭션 및 해당 호스트 상태에 대한 스코어보드를 유지할 수 있다. 이 목적으로 사용되는 스코어보드에는 예를 들어 각 작업에 대해, 타임스탬프, 주소 및 모든 종속성이 포함될 수 있다. 메모리 장치는 이러한 시간 태그를 사용하여 장치 측에서 순서를 결정하고 해결할 수 있다. 메모리 장치는 메모리 장치에 쓰기를 실행하기 전에 CXL에 쓰기에 대한 조기 완료를 보낼 수 있다. 이 동작은 메모리 장치의 인지된 대기 시간을 줄일 수 있다. 조기 완료를 보낸 후, 장치는 후속 읽기 및 쓰기를 담당할 수 있고; 장치는 후속 읽기 작업 및 쓰기 작업에 대한 내부 순서를 관리하고 위험을 관리할 수 있다. 스코어보드는 이 기능을 제공하는 데 필요한 상태를 추적하는 데 사용할 수 있다(예를 들어, 스코어 보드의 추가 필드는 작업이 메모리 장치에 실행되었는지 여부를 나타낼 수 있다). 메모리 장치는 후속 읽기 및 쓰기에 대한 내부 순서를 관리하고 위험을 관리할 수 있다.
위험 처리를 수행하기 위해, 메모리 장치는 계류 중인 쓰기 동작과 관련되지 않은 읽기 동작이 진행되도록 할 수 있다. RAW(Read-After-Write) 작업의 경우, 메모리 장치는 스코어보드 버퍼에서 요청된 데이터를 제공할 수 있다. WAR(write-after-read) 작업의 경우, 메모리 장치는 모든 늦은 쓰기 작업이 이전 읽기 작업을 우회할 수 있도록 보장할 수 있다. WAW(write-after-write) 작업의 경우, 메모리 장치는 시간 제한이 만료될 때까지 이전 쓰기가 버퍼에 유지되도록 할 수 있다. 메모리 장치가 유형 2 CXL 장치인 경우, 라인을 순서가 맞지 않게 커밋하기 전에 장치 대 호스트(D2H) 채널의 동일한 캐시라인에 대한 종속성을 해결할 수 있다.
도 3a 및 도 3b는 각각 리드 동작 및 라이트 동작에 대한 타이밍도이다.
도 3a에서, 판독 요청은 호스트(305)로부터 메모리 장치(205)의 메모리 컨트롤러(310)로 (예를 들어, CXL 컨트롤러를 통해) 전송된다. 그 다음, 장치 메모리(315)에서 판독 동작이 수행되고, 데이터는 호스트(305)로 리턴된다.
도 3b를 참조하면, 호스트(305)로부터 메모리 컨트롤러(310)로 쓰기 요청이 전송된다. 그 후, 장치 메모리(315)에 대한 쓰기 동작이 수행되고, 호스트(305)에 커맨드 완료가 리턴된다.
위에서 언급한 바와 같이, 일부 실시 예에서, 메모리 장치는 서비스 품질(QoS) 지원을 위한 특징을 포함한다. 메모리 장치는 CXL QoS 원격 측정 기능을 사용하여 중간 대기 시간을 추적 및 보고하고 여러 미디어 유형을 활용하여 메모리 장치 내에서 말단 대기 시간을 관리할 수 있다. 메모리 장치는 메모리 사용 추적을 지원할 수 있고, 로드 값은 비동기 가상 와이어로서 최대 2개의 메모리 유형에 대해 호스트에 전달될 수 있으며, 이는 Type0 메모리 또는 Type1 메모리로 지칭될 수 있다. 유형의 매핑은 기본 마이크로아키텍처 구성과 일치할 수 있다. 예를 들어 Type0 메모리는 메모리 클래스(예: DRAM과 같은 휘발성 메모리)일 수 있으며 Type1 메모리는 스토리지 클래스(예: 비휘발성 메모리 또는 영구 메모리)일 수 있다. 일부 실시 예에서, 메모리 장치는 각 파티션에 대해 별도의 인코딩으로 MLD 메모리 장치를 지원한다.
일부 실시 예에서, 이종 유형 3 메모리 장치가 시스템에 존재할 수 있다. CXL은 여러 QoS 클래스를 허용할 수 있다. 현재 CXL 사양은 장치 QoS 클래스 간의 대역폭 관리를 제공하기 위한 제어를 제공하지 않으며; 이와 같이 별도의 QoS 대기열을 사용하여 DRAM과 저 대기 시간 SSD 간의 "워크 스틸링(work-stealing)" 방법이 구현될 수 있다. 예를 들어 다수의 대기열을 갖는 시스템에서 워크 스틸링은 (예: 다른 데이터 처리 개체의 대기열에서 한 데이터 처리 개체에 의한) 기회주의적 작업 수행일 수 있다. 데이터 처리 엔티티는 예를 들어 처리 회로, 또는 소프트웨어 프로세스, 작업 또는 스레드일 수 있다. 두 가지 미디어 유형이 호스트에 노출될 수 있으며 호스트는 두 미디어 중 하나에 트랜잭션을 제출할 수 있다. 저지연 SSD에 대한 요청이 지속적일 것으로 예상되는 경우, 이 기능의 가용성은 제한될 수 있다.
위에서 언급한 바와 같이, 일부 실시 예에서, 메모리 장치는 MLD 지원을 위한 특징을 포함한다. MLD는 장치를 여러 블록으로 분할하는 기능일 수 있으며 각 블록은 서로 다른 기능을 제공한다(예: 보안, ECC, QoS, 관리 용이성 또는 가용성). 이러한 메모리 장치는 종속 대 마스터(S2M) 채널에서 인텔리전스를 사용하여 심각한 스로틀링에서 중요한 트랜잭션의 우선 순위를 확인하고, CXL MLD 장치에 대해 별도의 대기열을 유지하고, 이 때 각 레지스터는 하나의 장치에 대한 사용률을 추적하고, 한 장치에 대한 부하가 고르지 않을 때 요청을 섞고 마이그레이션한다. 일부 실시 예에서, 레지스터는 구성 가능한 시간 입도에서 활용도를 추적하는 데 사용된다. 메모리 장치는 CXL QoS 애플리케이션 프로그래밍 인터페이스(API)를 사용하여 호스트에 메시지를 보낼 수 있으며, 메시지는 예를 들어 "가벼움", "심각한 부하" 또는 "보통"을 포함한다. 메모리 장치의 로직은 호스트가 조절되었는지 여부를 확인할 수 있으며; 그렇지 않으면 읽기 작업의 우선 순위를 지정하는 동안 준비 영역에 대한 요청을 버퍼링할 수 있다. 메모리 장치의 업스트림 연결이 CXL 스위치를 포함하는 시스템에서, 메모리 장치는 LD-ID를 지원하고 장치를 파티션으로 분리하는 로직을 포함할 수 있다.
위에서 언급한 바와 같이, 일부 실시 예에서, 메모리 장치는 CXL 인터리빙을 위한 특징을 포함한다. CXL 인터리브 사양은 각각 방식, 세분성 및 크기를 포함하는 인터리브 세트를 식별한다. CXL 인터리브 사양은 또한 다중 레벨 인터리빙을 허용한다. 기술별 인터리빙(예를 들어, DRAM의 뱅크/랭크 레벨 인터리빙, SSD의 다이, 블록 또는 평면에 기반한 인터리빙)이 메모리 장치에 의해 채택될 수 있으며, 동일한 모듈에 다른 미디어 유형이 있다. 칩 크기, 채널 수 및 메모리 컨트롤러 주소 매핑의 함수로서 인터리빙을 활용하기 위해 메모리 장치에 의해 알고리즘이 사용될 수 있다.
일부 실시 예에서, 메모리 장치는 프로그램 가능한 인터리빙을 구현한다. 호스트 프로그램 가능 인터리빙 능력은 CXL 메모리 장치 디코더에서 구현될 수 있다. 여러 방법이 구현될 수 있고, 호스트는 적절한 레지스터, 예를 들어 CXL.io 레지스터를 사용하여 메모리 장치를 프로그래밍할 수 있다. 일부 실시 예에서, 메모리 장치 프로그래밍은 또한 런타임에서 업데이트될 수 있으며, 장치는 처리되지 않은 트랜잭션을 관리할 책임이 있다. 메모리 범위에 걸쳐 서로 다른 유형의 인터리빙을 사용할 수 있다; 그러한 실시 예에서, 메모리 장치는 메모리 범위를 조회할 수 있고, 호스트 관리된 장치 메모리(HDM) 디코더는 그에 따라 라우팅할 수 있다.
일부 실시 예에서, 메모리 장치는 CXL 핫 애드 기능 및 서프라이즈 제거 기능을 관리할 수 있다. 각 메모리 장치의 핑 블록(ping block)은 의사 파일 시스템(예: Linux sysfs) 및 CXL 장치 드라이버의 힌트를 사용하여 전체 시스템 구성을 인식할 수 있다. 휘발성 미디어의 경우, 메모리 장치는 새로운 토폴로지를 인식하여 호스트 지원 없이 (다중 레벨 인터리빙하는) 메모리 장치 하에서 (논리적) 장치의 인터리브 입도를 조정할 수 있다. 메모리 장치는 이러한 변경 사항을 추적하고 이전 미디어에 대한 요청을 무시할 수 있다.
위에서 언급한 바와 같이, 일부 실시 예에서, 메모리 장치는 오류 정정 코드(ECC)를 위한 특징을 포함한다. 그러한 실시 예에서, (예를 들어, 정정 가능한 오류의 수가 임계값을 초과할 때) 장치는 정정 가능한 오류의 광범위한 로깅을 수행하고 운영 체제와 협력하여 페이지를 폐기할 수 있다. 마스터 모듈은 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM), 컴퓨팅(예: 메모리 장치에 존재할 수 있는 모든 컴퓨팅 기능) 및 저 대기 시간 SSD 전반에 걸쳐 ECC를 제어할 수 있다. CXL 스택의 경우, 메모리 장치는 예를 들어 링크 계층, 체크섬, CXL 플릿 레벨 단일 오류 수정 및 이중 오류 감지(SECDED) 및 4 KB 페이지 레벨 Bose-Chaudhuri-Hocquenghem(BCH) 코드, 또는 기타 적절한 오류 수정 코드를 구현할 수 있다. 메모리 장치 로직은 이러한 기능의 조합을 사용하여 오류를 수정할 수 있다. 본 명세서에 사용된 바와 같이, "플릿"은 링크 레벨 흐름 제어 장치 또는 디지트를 나타낼 수 있다.
메모리 장치는 CXL.cache 또는 mem 응답의 CXL 메타필드를 사용하여 신호를 보낼 수 있으며; 이벤트 레코드는 PCIe 기능 레벨별로 생성 및 관리될 수 있다. 수정 가능한 모든 오류에 대해, 장치는 주변 구성요소 인터커넥트(PCI)의 물리적 인터럽트 라인을 에뮬레이트하기 위해서 주변 구성요소 인터커넥트 익스프레스(PCIe) 및 CXL에 지정된 메시지 시그널드 인터럽트-X(MSI-X) 프로토콜과 같은 적절한 프로토콜을 통해 호스트에 신호를 보낸다. 수정할 수 없는 오류를 보고하기 위해서, 메모리 장치는 CXL 바이러스 및 포이즌 인터페이스를 사용할 수 있다. 장치는 수정할 수 없는 오류가 많은 경우 바이러스 모드에 들어가, 호스트가 모든 데이터를 의심스러운 것으로 처리하는 것을 가능하게 한다. 또는 포이즌 비트는 호스트가 특정 메모리 응답에서 수정할 수 없는 오류를 식별하는 데 도움이 된다.
상술된 바와 같이, 일부 실시 예에서, 메모리 장치는 무결성 및 데이터 암호화(IDE)에 대한 지원을 포함한다. 비휘발성 메모리는 메인 메모리 영역에서 지원되기 때문에 메모리 장치는 강력한 암호화 알고리즘을 사용할 수 있다. 일부 실시 예에서, 메모리 장치는 보안을 위해 메모리 장치 내부에 시큐어 하쉬 알고리즘(SHA: Secure Hash Algorithms) 암호 또는 어드밴스드 암호화 표준(AES: Advanced Encryption Standard) 암호를 구현한다. 예를 들어, 메모리 장치는 (i) 암호화되지 않은 데이터를 수신하고, 이를 암호화하고, 암호화된 데이터를 비휘발성 메모리에 저장할 수 있거나, (ii) 비휘발성 메모리에서 암호화된 데이터를 읽고, 이를 해독한 후, CXL 컨트롤러를 통해 해독된 데이터를 전송할 수 있다. 호스트는 알고리즘을 선택하거나 CXL.io 명령 레지스터를 사용하여 런타임에 장치를 구성할 수 있다. 개인 키는 CXL 끝점 열거 동안 부팅 시 CXL.io를 사용하여 교환될 수 있다. 메모리 장치는 여러 신뢰 영역을 생성할 수 있다. 이러한 다중 신뢰 영역은 신뢰와 성능 간에 다양한 균형을 제공할 수 있다. 신뢰 영역은 특정 유형의 암호화가 사용되는 메모리 영역일 수 있으며 승인된 특정 호스트 또는 발신자에게만 액세스 권한이 부여된다. 메모리 장치는 또한 트러스트 영역별 상이한 모드의 내부 스크램블링 및 주소 스위즐링을 제어할 수 있다.
일부 실시 예에서, 도 4a 내지 도 4d의 일부 예에 대해 예시된 바와 같이, 단일 CXL 장치에 상이한 메모리 또는 저장 기술을 배치하기 위한 다양한 접근법이 설명된다. 도 4a 내지 4d는 여러 메모리 장치 마이크로아키텍처를 보여준다. 도 4a는 더블 데이터 레이트 5(DDR5) 또는 더블 데이터 레이트 4 DDR4 메모리(도 4a), 또는 저전력 더블 데이터 레이트 5(LPDDR5) DRAM 메모리(도 4b)만을 포함하는 마이크로아키텍처를 도시한다. 이러한 메모리 장치는 DRAM 메모리 및 메모리 컨트롤러(MC)를 포함한다. 이러한 실시 예는 디코딩 및 인터리빙에 초점을 맞출 수 있다.
도 4c 및 4d는 DDR 메모리 및 저 대기 시간 NAND 메모리를 포함하는 마이크로아키텍처를 보여준다. 이러한 실시 예는 두 개의 미디어에 대한 분할 인터페이스 (도 4d에서 도시한 바와 같이, DDR 메모리에 대한 8 래인 CXL 인터페이스와 저지연 NAND 메모리에 대한 8 래인 PCIe 인터페이스) 또는 두 매체에 대한 전용 인터페이스(도 4c)를 가질 수 있다.
본 명세서에서 사용되는, 무언가의 "일부"는 사물의 "적어도 일부"를 의미하고, 따라서 사물의 전부 보다 적음을 의미할 수 있다. 이와 같이, 사물의 "일부"는 전체 사물을 특별한 경우로 포함하는데, 즉, 사물 전체는 사물의 일부의 일 예가 된다. 본 명세서서 사용되는 바와 같이, 제 2 수치가 제 1 수치의 "Y % 이내"인 경우, 이 제 2 수치는 제 1 수치의 최소 (1-Y/100) 배이고 제 2 수치는 제 1 수치의 최대 (1+Y/100) 배이다. 본 명세서에서 사용되는 바와 같이, 용어 "또는"은 "및/또는"으로 해석되어야 하므로, 예를 들어 "A 또는 B"는 "A" 또는 "B" 또는 "A 및 B"중 어느 하나를 의미한다.
본 개시의 배경 기술 섹션에서 제공되는 배경은 컨텍스트를 설정하기 위해서만 포함되며, 이 섹션의 내용은 선행 기술로 인정되지 않는다. 설명된 구성 요소 또는 구성 요소의 조합(예: 여기에 포함된 시스템 다이어그램)은 본 명세서에서 포함된 임의의 흐름도의 동작 중 하나 이상을 수행하는 데 사용될 수 있다. 또한, (i) 작업은 예시적인 작업이며, 명시적으로 다루지 않은 다양한 추가 단계를 포함할 수 있으며, (ii) 작업의 시간적 순서는 변경될 수 있다.
본 명세서 사용되는 바와 같이 용어 "처리 회로"는 데이터 또는 디지털 신호를 처리하는 데 사용되는 하드웨어, 펌웨어 및 소프트웨어의 임의의 조합을 의미하는 것으로 사용된다. 처리 회로 하드웨어에는 예를 들어 주문형 집적 회로(ASIC), 범용 또는 특수 목적 중앙 처리 장치(CPU), 디지털 신호 프로세서(DSP), 그래픽 처리 장치(GPU) 및 필드 프로그래머블 게이트 어레이(FPGA)와 같은 프로그래밍 가능 논리 장치가 포함될 수 있다. 본 명세서에 사용된 처리 회로에서 각 기능은 해당 기능을 수행하도록 구성된, 즉 하드와이어된 하드웨어, 또는 비일시적 저장 매체에 저장된 명령을 실행하도록 구성된 CPU와 같은 보다 범용적인 하드웨어에 의해 실행된다. 처리 회로는 단일 인쇄 회로 기판(PCB)에 제작되거나 여러 개의 상호 연결된 PCB에 분산될 수 있다. 처리 회로는 다른 처리 회로를 포함할 수 있는데, 예를 들어, 처리 회로는 PCB상에서 상호 연결된 두 개의 처리 회로, 즉 FPGA 및 CPU를 포함할 수 있다.
본 명세서에서 사용된 바와 같이, 방법 (예를 들어, 조정) 또는 제 1 수치 (예를 들어, 제 1 변수)가 제 2 수치 (예를 들어, 제 2 변수)에 "기반"하는 것으로 언급될 때, 이는 제 2 수치가 방법에 대한 입력이거나 제 1 수치에 영향을 미친다는 것을 의미하는데, 예를 들어, 제 2 수치는 제 1 수치를 계산하는 함수에 대한 입력 (예를 들어, 유일한 입력 또는 여러 입력 중 하나)일 수 있거나, 제 1 수치는 제 2 수치와 같을 수 있거나, 제 1 수치는 제 2 수치와 동일할 수 있다 (예를 들어, 메모리의 동일한 위치 또는 위치에 저장될 수 있다).
비록 용어 "제 1", "제 2", "제3" 등이 본 명세서에서 다양한 요소를 설명하기 위해 사용될 수 있지만, 구성 요소, 영역, 층 및/또는 섹션, 이러한 요소, 구성 요소, 영역, 층 및/또는 섹션은 이러한 용어에 의해 제한되어서는 안된다는 것이 이해될 것이다. 이러한 용어는 한 요소, 구성 요소, 영역, 층 또는 섹션을 다른 요소, 구성 요소, 영역, 층 또는 섹션과 구별하는 데만 사용된다. 따라서, 본 명세서에서 논의된 제 1 요소, 구성 요소, 영역, 층 또는 섹션은 본 발명의 개념의 사상 및 범위를 벗어나지 않고 제 2 요소, 구성 요소, 영역, 층 또는 섹션으로 지칭될 수 있다.
"아래", "밑에", "하부", "위에", "상부" 등과 같은 공간적으로 상대적인 용어는 도면에 예시된 바와 같이 다른 요소(들) 또는 특징(들)에 대한 하나의 요소 또는 특징의 관계를 설명하기 위해서 설명을 용이하게 하기 위해 본 명세서에서 사용될 수 있다. 이러한 공간적으로 상대적인 용어는 도면에 도시된 방향에 추가하여 사용 중 또는 작동 중인 장치의 다른 방향을 포함하도록 의도된다는 것이 이해될 것이다. 예를 들어, 도면의 장치가 뒤집힌 경우, 다른 요소 또는 특징 "아래" 또는 "밑에" 또는 "하부"로 설명된 요소는 다른 요소 또는 특징의 "위"를 향하게 된다. 따라서, 예시의 용어 "아래" 및 "밑에"는 위와 아래의 방향을 모두 포함할 수 있다. 장치는 다른 방향(예를 들어, 90도 회전 또는 다른 방향)으로 지정될 수 있으며 본 명세서에서 사용된 공간적으로 상대적인 설명자는 그에 따라 해석되어야 하다.
본 명세서에서 사용된 용어는 특정 실시 예를 설명하기 위한 것이며 본 발명의 개념을 제한하려는 것은 아니다. 본 명세서에서 사용되는 바와 강티, 용어 "실질적으로", "약" 및 유사한 용어는 정도의 용어가 아니라 근사값의 용어로 사용되며, 당업자들에 의해 인식되는 측정 또는 계산된 값의 고유한 편차를 설명하기 위한 것이다.
본 명세서에서 사용된 바와 같이, 단수 형태는 문맥 상 명백하게 달리 나타내지 않는 한 복수 형태도 포함하는 것이다. 용어 "포함하다" 및/또는 "포함하는"은 본 명세서에서 사용될 때, 언급된 특징, 정수, 단계, 연산, 요소 및/또는 구성 요소의 존재를 지정하지만, 하나 이상의 다른 특징, 정수, 단계, 연산, 요소, 구성 요소 및/또는 그 그룹의 존재 또는 추가를 배제하지 않는다. 본 명세서에서 사용되는 바와 같이, 용어 "및/또는"은 하나 이상의 연관된 열거 항목의 임의의 및 모든 조합을 포함한다. "적어도 하나 이상"과 같은 표현이 요소의 목록 앞에 올 때, 전체 요소의 목록을 수정하고 목록의 개별 요소를 수정하지는 않는다. 또한, 본 발명의 실시 예를 설명할 때 "할 수 있다"라는 용어는 "본 발명의 하나 이상의 실시 예"를 의미한다. 또한, "예시적인"이라는 용어는 예 또는 예시를 나타내는 것으로 의도된다. 본 명세서에서 사용되는 바와 같이, 용어 "사용하다", "사용하는" 및 "사용할"는 각각 "활용하다", "활용하는" 및 "활용할"라는 용어와 동의어로 간주될 수 있다.
요소 또는 계층이 다른 요소 또는 계층에 대해 "위에 놓이거나", "연결되거나", "결합되거나", "인접한다고" 언급될 때, 이것은 다른 요소 또는 계층에 바로 위에 놓이거나 연결되거나, 결합되거나, 인접할 수 있거나, 하나 이상의 중간 요소 또는 계층이 존재할 수 있다. 대조적으로, 요소 또는 계층이 다른 요소 또는 계층에 "바로 위에 놓이거나", "직접 연결되거나", "직접 결합되거나" 또는 "바로 인접하는" 것으로 언급되는 경우, 중간 요소나 계층이 존재하지 않는다.
본 명세서에 인용된 임의의 수치 범위는 인용된 범위 내에 포함된 동일한 수치 정밀도의 모든 하위 범위를 포함하도록 의도된다. 예를 들어, "1.0 내지 10.0" 또는 "1.0과 10.0 사이"의 범위는 언급된 최소값 1.0과 언급된 최대 값 10.0 사이, 즉 1.0과 같거나 큰 최소값과 10.0보다 작거나 같은 최대 값 사이의 모든 하위 범위, 예를 들어, 2.4 내지 7.6 사이를 포함하는 것이다. 본 명세서에 언급된 임의의 최대 수치 제한은 그 안에 포함된 모든 더 낮은 수치 제한을 포함하도록 의도되고, 본 명세서에 언급된 임의의 최소 수치 제한은 거기에 포함된 모든 더 높은 수치 제한을 포함하도록 의도된다. 본 명세서에 사용된 바와 같이, "데이터 저장을 위한 수단"은 휘발성 메모리 또는 비휘발성 메모리, 또는 이들의 조합을 의미한다.
코히어런트 메모리 시스템의 예시의 실시 예들이 본 명세서에서 구체적으로 설명되고 예시되었지만, 많은 수정 및 변형이 당업자에게 명백할 것이다. 따라서, 본 개시의 원리에 따라 구성된 코히어런트 메모리 시스템이 본 명세서에서 구체적으로 설명된 것과 다르게 구현될 수 있음을 이해해야 한다. 본 발명은 또한 다음의 청구 범위 및 그 등가물에서 정의된다.

Claims (20)

  1. 제 1 메모리 장치를 포함하고,
    상기 제 1 메모리 장치는,
    캐시 코히어런트 컨트롤러;
    휘발성 메모리 컨트롤러;
    휘발성 메모리;
    비휘발성 메모리 컨트롤러; 및
    비휘발성 메모리를 포함하고,
    상기 제 1 메모리 장치는,
    서비스 품질 요구 사항을 수신하고,
    상기 서비스 품질 요구 사항에 응답하여 제 1 기능을 선택적으로 활성화하도록 구성되는, 시스템.
  2. 제 1 항에 있어서,
    상기 제 1 기능은 메모리 관리 유닛 캐시의 제공을 포함하고,
    상기 제 1 메모리 장치는,
    상기 휘발성 메모리의 일부를 상기 메모리 관리 유닛 캐시로 할당하고,
    상기 메모리 관리 유닛 캐시에서 가상 주소를 기반으로 물리적 주소의 물리적 주소 조회를 수행하도록 구성되는, 시스템.
  3. 제 2 항에 있어서,
    상기 물리적 주소 조회를 수행하는 단계는,
    상기 가상 주소의 제 1 부분에 기초하여 상기 메모리 관리 유닛 캐시의 제 1 페이지 테이블에서 기본 주소를 조회하는 단계;
    상기 기본 주소에 기초하여 상기 메모리 관리 유닛 캐시의 제 2 페이지 테이블의 시작 주소를 결정하는 단계; 및
    상기 가상 주소의 제 2 부분에 기초하여 상기 제 2 페이지 테이블에서 상기 물리적 주소를 조회하는 단계를 포함하는, 시스템.
  4. 제 2 항에 있어서,
    호스트를 더 포함하고,
    상기 호스트는,
    메모리 관리 유닛; 및
    변환 룩어사이드 버퍼를 포함하고,
    상기 호스트는 상기 제 1 메모리 장치로부터, 상기 물리적 주소 조회를 요청하도록 구성되는, 시스템.
  5. 제 1 항에 있어서,
    상기 제 1 메모리 장치는,
    제 1 IO 요청과 제 2 IO 요청을 수신하되, 상기 제 1 IO 요청은 상기 제 1 IO 요청의 발행 시간을 나타내는 제 1 시간 태그를 포함하고, 상기 제 2 IO 요청은 상기 제 2 IO 요청의 발행 시간을 나타내는 시간 태그를 포함하고,
    상기 제 2 IO 요청과 상기 제 1 IO 요청을 수행하도록 더욱 구성되고,
    상기 제 2 IO 요청의 상기 시간 태그는 상기 제 1 IO 요청의 상기 제 1 시간 태그보다 작은, 시스템.
  6. 제 5 항에 있어서,
    상기 제 1 IO 요청은 스위치에 의한 상기 제 1 IO 요청의 처리 시간을 나타내는 제 2 시간 태그를 더 포함하는, 시스템.
  7. 제 1 항에 있어서,
    상기 제 1 메모리 장치는 제 1 미디어 유형을 포함하고,
    상기 제 1 메모리 장치는 상기 캐시 코히어런트 컨트롤러를 통해 상기 휘발성 메모리에 대한 로드 값을 보고하도록 더욱 구성되는, 시스템.
  8. 제 7 항에 있어서,
    상기 휘발성 메모리는 제 1 논리 장치에 매핑되고,
    상기 비휘발성 메모리는 제 2 논리 장치에 매핑되고,
    상기 제 1 메모리 장치는 상기 캐시 코히어런트 컨트롤러를 통해, 상기 비휘발성 메모리에 대한 로드 값을 보고하도록 더욱 구성되는, 시스템.
  9. 제 1 항에 있어서,
    제 2 메모리 장치를 더 포함하고,
    상기 제 1 메모리 장치는,
    제 1 물리적 주소를 갖는 데이터, 및
    제 2 물리적 주소를 갖는 데이터를 저장하도로 구성되고,
    상기 제 2 메모리 장치는,
    제 3 물리적 주소를 갖는 데이터를 저장하도록 구성되고,
    상기 제3 물리적 주소는 상기 제 1 물리적 주소보다 크고 상기 제 2 물리적 주소보다 작은, 시스템.
  10. 제 1 항에 있어서,
    상기 제 1 메모리 장치는,
    읽기 요청을 수신하고,
    상기 제 1 메모리의 제 1 페이지에서 원시 데이터를 읽고,
    오류 수정 코드로 상기 원시 데이터를 디코딩하고,
    수정된 오류의 수가 임계값을 초과한다고 결정하고,
    상기 캐시 코히어런트 컨트롤러를 통해, 상기 제 1 페이지의 폐기를 요청하는 보고를 보내도록 더욱 구성되는, 시스템.
  11. 제 1 항에 있어서,
    상기 제 1 메모리 장치는,
    암호화되지 않은 데이터를 포함하는 쓰기 요청을 수신하고,
    상기 암호화되지 않은 데이터를 암호화하여 암호화된 데이터를 형성하고,
    상기 암호화된 데이터를 상기 비휘발성 메모리에 저장하도록 더욱 구성되는, 시스템.
  12. 제 1 항에 있어서,
    상기 제 1 메모리 장치는,
    읽기 요청을 수신하고,
    상기 비휘발성 메모리로부터 암호화된 데이터를 읽고,
    상기 암호화된 데이터를 해독하여 암호화되지 않은 데이터를 형성하고,
    상기 캐시 코히어런트 컨트롤러를 통해 상기 암호화되지 않은 데이터를 전송하도록 더욱 구성되는, 시스템.
  13. 제 1 항에 있어서,
    상기 캐시 코히어런트 컨트롤러는 컴퓨트 익스프레스 링크(CXL) 컨트롤러인, 시스템.
  14. 제 13 항에 있어서,
    상기 제 1 메모리 장치는 유형 3 CXL 장치인, 시스템.
  15. 제1 메모리 장치에 의해, 서비스 품질 요구 사항을 수신하는 단계; 및
    상기 제1 메모리 장치에 의해, 상기 서비스 품질 요구 사항에 응답하여 제 1 기능을 선택적으로 활성화하는 단계를 포함하고,
    상기 제 1 메모리 장치는,
    캐시 코히어런트 컨트롤러;
    휘발성 메모리 컨트롤러;
    휘발성 메모리;
    비휘발성 메모리 컨트롤러; 및
    비휘발성 메모리를 포함하는, 메모리 시스템의 구동 방법.
  16. 제 15 항에 있어서, 상기 제1 메모리 장치에 의해, 상기 휘발성 메모리의 일부를 메모리 관리 유닛 캐시로 할당하는 단계; 및
    상기 제 1 메모리 장치에 의해, 가상 주소에 기초하여 상기 메모리 관리 유닛 캐시에서 물리적 주소의 조회를 수행하는 단계
    를 더 포함하는, 메모리 시스템의 구동 방법.
  17. 제 16 항에 있어서, 상기 조회를 수행하는 단계는:
    상기 가상 주소의 제 1 부분에 기초하여 상기 메모리 관리 유닛 캐시의 제 1 페이지 테이블에서 기본 주소를 조회하는 단계;
    상기 기본 주소에 기초하여 상기 메모리 관리 유닛 캐시의 제 2 페이지 테이블의 시작 주소를 결정하는 단계; 및
    상기 가상 주소의 제 2 부분에 기초하여 상기 제 2 페이지 테이블에서 상기 물리적 주소를 조회하는 단계
    를 포함하는, 메모리 시스템의 구동 방법.
  18. 제 15 항에 있어서,
    제 1 IO 요청과 제2 IO 요청을 수신하는 단계로, 상기 제 1 IO 요청은 상기 제 1 IO 요청의 발행 시간을 나타내는 제 1 시간 태그를 포함하고, 상기 제 2 IO 요청은 상기 제 2 IO 요청의 발행 시간을 나타내는 시간 태그를 포함하는 단계; 및
    상기 제 2 IO 요청 및 상기 제 1 IO 요청을 수행하는 단계를 더 포함하고,
    상기 제 2 IO 요청의 상기 시간 태그는 상기 제 1 IO 요청의 상기 제 1 시간 태그보다 작은, 메모리 시스템의 구동 방법.
  19. 제 18 항에 있어서,
    상기 제 1 IO 요청은 스위치에 의한 상기 제 1 IO 요청의 처리 시간을 나타내는 제 2 시간 태그를 더 포함하는, 메모리 시스템의 구동 방법.
  20. 제 1 메모리 장치를 포함하고,
    상기 제 1 메모리 장치는,
    데이터 저장을 위한 수단; 및
    캐시 코히어런트 호스트 인터페이스를 포함하고,
    상기 제 1 메모리 장치는,
    상기 데이터 저장을 위한 수단의 일부를 메모리 관리 유닛 캐시로 할당하고,
    상기 메모리 관리 유닛 캐시에서, 가상 주소를 기반으로 물리적 주소의 조회를 수행하도록 구성되는, 시스템.
KR1020220042144A 2021-05-07 2022-04-05 코히어런트 메모리 시스템 KR20220152132A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202163185842P 2021-05-07 2021-05-07
US63/185,842 2021-05-07
US17/372,309 US20220358042A1 (en) 2021-05-07 2021-07-09 Coherent memory system
US17/372,309 2021-07-09

Publications (1)

Publication Number Publication Date
KR20220152132A true KR20220152132A (ko) 2022-11-15

Family

ID=81580017

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220042144A KR20220152132A (ko) 2021-05-07 2022-04-05 코히어런트 메모리 시스템

Country Status (5)

Country Link
US (1) US20220358042A1 (ko)
EP (1) EP4086774A1 (ko)
KR (1) KR20220152132A (ko)
CN (1) CN115309672A (ko)
TW (1) TW202244736A (ko)

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES2186531B1 (es) * 2001-04-19 2005-03-16 Diseño De Sistemas En Silicio, S.A. Procedimiento de acceso multiple y multiple transmision de datos para un sistema multiusuario de transmision digital de datos punto a multipunto sobre red electrica.
US20130262736A1 (en) * 2012-03-30 2013-10-03 Ati Technologies Ulc Memory types for caching policies
US10191691B2 (en) * 2015-04-28 2019-01-29 Liqid Inc. Front-end quality of service differentiation in storage system operations
US9892794B2 (en) * 2016-01-04 2018-02-13 Ip Gem Group, Llc Method and apparatus with program suspend using test mode
US11706064B2 (en) * 2018-05-31 2023-07-18 Indian Institute Of Technology Hyderabad Method of receiving signal stream and a receiver
US11703933B2 (en) * 2019-01-24 2023-07-18 Intel Corporation Remote register updates
US10929310B2 (en) * 2019-03-01 2021-02-23 Cisco Technology, Inc. Adaptive address translation caches
US11789878B2 (en) * 2019-12-19 2023-10-17 Intel Corporation Adaptive fabric allocation for local and remote emerging memories based prediction schemes
US20210278998A1 (en) * 2020-03-09 2021-09-09 Alibaba Group Holding Limited Architecture and design of a storage device controller for hyperscale infrastructure
US20210311871A1 (en) * 2020-04-06 2021-10-07 Samsung Electronics Co., Ltd. System and method for aggregating server memory
US20210374056A1 (en) * 2020-05-28 2021-12-02 Samsung Electronics Co., Ltd. Systems and methods for scalable and coherent memory devices
US11422944B2 (en) * 2020-08-10 2022-08-23 Intel Corporation Address translation technologies
US20210311643A1 (en) * 2020-08-24 2021-10-07 Intel Corporation Memory encryption engine interface in compute express link (cxl) attached memory controllers
US20210014324A1 (en) * 2020-09-24 2021-01-14 Intel Corporation Cache and memory content management
US20210011864A1 (en) * 2020-09-25 2021-01-14 Francesc Guim Bernat System, apparatus and methods for dynamically providing coherent memory domains
US20210117249A1 (en) * 2020-10-03 2021-04-22 Intel Corporation Infrastructure processing unit
US20210117334A1 (en) * 2020-12-23 2021-04-22 Intel Corporation Memory controller to manage quality of service enforcement and migration between local and pooled memory
US11755500B2 (en) * 2020-12-26 2023-09-12 Intel Corporation Cryptographic computing with disaggregated memory

Also Published As

Publication number Publication date
US20220358042A1 (en) 2022-11-10
EP4086774A1 (en) 2022-11-09
CN115309672A (zh) 2022-11-08
TW202244736A (zh) 2022-11-16

Similar Documents

Publication Publication Date Title
US11604746B2 (en) Presentation of direct accessed storage under a logical drive model
US9672143B2 (en) Remote memory ring buffers in a cluster of data processing nodes
US10593380B1 (en) Performance monitoring for storage-class memory
US20150254003A1 (en) Rdma-ssd dual-port unified memory and network controller
US11151063B2 (en) Host system directly connected to internal switching fabric of storage system
US10698613B1 (en) Host processing of I/O operations
US10698844B1 (en) Intelligent external storage system interface
US11741034B2 (en) Memory device including direct memory access engine, system including the memory device, and method of operating the memory device
US11288196B2 (en) Efficient data read operation
US11636223B2 (en) Data encryption for directly connected host
US20200333964A1 (en) Secure host access to storage system resources
US11392306B2 (en) Using storage system memory as host memory
US20220100412A1 (en) Dynamic use of non-volatile ram as memory and storage on a storage system
US11544205B2 (en) Peer storage devices sharing host control data
US20220137864A1 (en) Memory expander, host device using memory expander, and operation method of sever system including memory expander
US20220300448A1 (en) Peripheral component interconnect express device and method of operating the same
TWI797022B (zh) 儲存控制器、計算儲存裝置以及計算儲存裝置的操作方法
KR20220152132A (ko) 코히어런트 메모리 시스템
US10970219B2 (en) Host cache coherency when modifying data
CN114546902A (zh) 基于多协议访问存储器的系统、设备和方法
US11442860B2 (en) Host cache coherency when reading data
US20210149821A1 (en) Address translation technologies
KR20230152394A (ko) PCIe 장치 및 이의 동작 방법
WO2019119514A1 (zh) 一种基于多个微处理器架构的存储控制装置
CN117331859A (zh) 用于存储器控制器架构的系统、设备及方法