KR20230011212A - 활용 인식 메모리 할당을 위한 시스템, 방법 및 장치 - Google Patents

활용 인식 메모리 할당을 위한 시스템, 방법 및 장치 Download PDF

Info

Publication number
KR20230011212A
KR20230011212A KR1020220030954A KR20220030954A KR20230011212A KR 20230011212 A KR20230011212 A KR 20230011212A KR 1020220030954 A KR1020220030954 A KR 1020220030954A KR 20220030954 A KR20220030954 A KR 20220030954A KR 20230011212 A KR20230011212 A KR 20230011212A
Authority
KR
South Korea
Prior art keywords
channel
memory
pages
utilization
page
Prior art date
Application number
KR1020220030954A
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 KR20230011212A publication Critical patent/KR20230011212A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • 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
    • 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/503Resource availability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor

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)
  • Software Systems (AREA)
  • Memory System (AREA)
  • Storage Device Security (AREA)

Abstract

활용 인식 메모리 할당을 위한 시스템, 방법 및 장치가 개시된다. 본 개시의 기술적 사상에 따른 방법은, 프로세스로부터, 제1 채널 활용을 갖는 제1 채널 및 제2 채널 활용을 갖는 제2 채널을 포함하는 메모리 시스템에 대한 메모리 할당 요청을 수신하는 단계, 상기 제1 채널 활용 및 상기 제2 채널 활용을 기초로, 제1 채널을 선택하는 단계, 및 상기 프로세스에, 제1 채널로부터 메모리의 페이지를 할당하는 단계를 포함한다.

Description

활용 인식 메모리 할당을 위한 시스템, 방법 및 장치{SYSTEM, METHOD, AND DEVICE FOR UTILIZATION AWARE MEMORY ALLOCATION}
본 개시의 기술적 사상은 전자 장치에 관한 것이며, 더욱 상세하게는, 활용 인식 메모리 할당을 위한 시스템들, 방법들 및 장치들에 관한 것이다.
메모리 할당 방식(scheme)은, 프로세스로부터의 할당 요청에 응답하여, 장치 부착 메모리의 하나 이상의 페이지들을 프로그램, 애플리케이션, 서비스 등과 같은 프로세스에 할당할 수 있다. 메모리 할당 방식은, 프로세스로부터의 할당 요청에 응답하여, 장치 부착 메모리의 하나 이상의 페이지들을 프로그램, 애플리케이션, 서비스 등과 같은 프로세스에 할당할 수 있다. 메모리 할당 방식은 할당 요청에서 요청된 메모리의 양에 기초하여 특정된 디바이스로부터 메모리의 하나 이상의 페이지들을 선택할 수 있다.
상기 기재한 사항은 본 개시의 배경의 이해를 돕기 위한 것이지, 종래 기술을 구성하지 않는 정보를 포함할 수 있다.
본 개시의 기술적 사상은, 장치의 메모리 성능을 개선하기 위하여 활용 인식 메모리 할당하는 시스템들, 방법들 및 장치들을 제공한다.
본 개시의 기술적 사상에 따른 메모리 할당을 위한 방법은, 프로세스로부터, 제1 채널 활용을 갖는 제1 채널 및 제2 채널 활용을 갖는 제2 채널을 포함하는 메모리 시스템에 대한 메모리 할당 요청을 수신하는 단계, 상기 제1 채널 이용 및 상기 제2 채널 활용에 기초하여, 상기 제1 채널을 선택하는 단계, 및 상기 프로세스에, 상기 제1 채널로부터 메모리의 페이지를 할당하는 단계를 포함한다.
또한, 본 개시의 기술적 사상에 따른 시스템은, 디바이스 인터페이스, 제1 채널 활용(utilization)을 갖는 제1 채널, 및 제2 채널 활용을 갖는 제2 채널을 포함하는 저장 디바이스; 상기 디바이스 인터페이스와 통신하는 호스트 인터페이스를 포함하는 호스트; 프로세스로부터 메모리 할당 요청을 수신하도록 구성된 메모리 할당기; 및 상기 메모리 할당 요청에 기초하여, 상기 제1 채널 활용 및 상기 제2 채널 활용에 기반한 상기 제1 채널을 선택하고, 상기 제1 채널의 메모리 페이지를 상기 프로세스에 할당하는 채널 선택 로직을 포함한다.
또한, 본 개시의 기술적 사상에 따른 장치는, 프로세스로부터, 메모리 할당 요청을 수신하도록 구성된 메모리 할당기를 포함할 수 있고, 메모리 할당기는 제1 메모리 채널의 제1 채널 활용 및 제2 메모리 채널의 제2 채널 활용에 기초하여, 제1 메모리 채널을 선택하고, 제1 메모리 채널로부터 메모리의 하나 이상의 페이지들을 프로세스에 할당하도록 구성된 채널 선택 로직을 포함한다.
본 개시의 기술적 사상에 의하면, 장치의 메모리 성능을 개선시키는 효과가 있다.
도면들은 반드시 스케일로 그려질 필요는 없으며 유사한 구조들 또는 기능들의 엘리먼트들은 일반적으로 도면들 전체에 걸쳐 예시적인 목적들을 위해 유사한 참조 번호들 또는 그 부분들로 표현될 수 있다. 도면들은 본 명세서에 기술된 다양한 실시예들의 설명을 용이하게 하도록 의도된다. 도면들은 본 명세서에 개시된 교시들의 모든 양태를 설명하지 않으며, 청구항들의 범위를 제한하지 않는다. 도면들이 모호하게 되는 것을 방지하기 위해, 모든 컴포넌트들, 접속들 등이 도시될 수 있고, 모든 컴포넌트들이 참조 번호들을 가질 수 없다. 그러나, 컴포넌트 구성의 패턴은 도면으로부터 용이하게 명백할 수 있다. 첨부 도면들은 본 명세서의 예시적인 실시예들을 예시하며, 설명과 함께, 본 개시의 원리들을 설명하는 역할을 한다.
도 1은 본 개시의 예시적인 실시예들에 따른 메모리 할당 방식의 일 실시예를 도시한다.
도 2a는 본 개시의 예시적인 실시예들에 따른 메모리 할당 방식 인식 활용의 일 실시예를 도시한다.
도 2b는 본 개시의 예시적인 실시예들에 따른 메모리 할당기를 갖는 메모리 할당 방식 인식 활용의 일 실시예를 도시한다.
도 3은 본 개시의 예시적인 실시예들에 따른 메모리 할당 방식 인식 활용의 예시적인 실시예를 예시한다.
도 4a는 본 개시의 예시적인 실시예들에 따른 완전히 인터리빙된 페이지 프레임 넘버링 방식(scheme)의 예시적인 실시예를 도시한다.
도 4b는 본 개시의 예시적인 실시예들에 따라 동일한 채널에 속하는 다수의 연속적인 페이지들을 갖는 페이지 프레임 넘버링 방식의 예시적인 실시예를 도시한다.
도 4c는 본 개시의 예시적인 실시예들에 따른 비-인터리빙된 맵핑을 갖는 페이지 프레임 넘버링 방식의 예시적인 실시예를 도시한다.
도 5는 본 개시의 예시적인 실시예들에 따른 저장 장치 아키텍처의 예시적인 실시예를 도시한다.
도 6은 본 개시의 예시적인 실시예들에 따른 밸런스드 랜덤 채널 선택 방법의 예시적인 실시예를 도시한다.
도 7은 본 개시의 예시적인 실시예들에 따른 밸런싱된 랜덤 채널 선택 정책을 구현하기 위한 방법의 예시적인 실시예를 도시한다.
도 8은 본 개시의 예시적인 실시예들에 따른 LUCFS(Least Used Channel First Service) 채널 선택 방법의 예시적인 실시예를 예시한다.
도 9는 본 개시의 예시적인 실시예들에 따른, LUCFS 채널 선택 정책을 구현하기 위한 방법의 예시적인 실시예를 도시한다.
도 10a는 본 개시의 예시적인 실시예들에 따라 동일한 채널에 속하는 다수의 연속적인 페이지들을 갖는 페이지 프레임 넘버링 방식의 예시적인 실시예를 도시한다.
도 10b는 본 개시의 예시적인 실시예들에 따른 페이지 할당 동작 이후에 도 10a에 도시된 페이지 프레임 넘버링 스킴의 예시적인 실시예를 도시한다.
도 11은 본 개시의 예시적인 실시예들에 따른 버디 메모리 할당 방식의 예시적인 실시예를 도시한다.
도 12는 본 개시의 예시적인 실시예들에 따른 메모리 할당 방식 인식 활용의 예시적인 실시예를 도시한다.
도 13a는 본 개시의 예시적인 실시예들에 따른 어드레스 인터리빙 방식의 일 실시예를 도시한다.
도 13b는 본 개시의 예시적인 실시예들에 따른 어드레스 인터리빙 방식의 다른 실시예를 도시한다.
도 14a는 본 개시의 예시적인 실시예들에 따른 디바이스 인터리빙을 갖는 어드레싱 방식의 실시예를 도시한다.
도 14b는 본 개시의 예시적인 실시예들에 따른 디바이스 인터리빙 및 채널 인터리빙을 갖는 어드레싱 방식의 실시예를 도시한다.
도 15는 본 개시의 예시적인 실시예들에 따른 메모리 할당 방식 인식 활용을 구현하는데 사용될 수 있는 호스트 장치의 예시적인 실시예를 도시한다.
도 16은 본 개시의 예시적인 실시예들에 따른 가비지 컬렉션 동작을 위한 페이지 재배치 스킴을 구현하는데 사용될 수 있는 저장 장치의 예시적인 실시예를 도시한다.
도 17은 본 개시의 예시적인 실시예들에 따른 메모리 시스템 동작에서 페이지 관리를 위한 방법의 일 실시예를 도시한다.
이하, 첨부한 도면을 참조하여 본 개시의 실시예에 대해 상세히 설명한다.
일부 메모리 시스템들에서, 메모리 페이지들은 하나 이상의 저장 장치들 내의 메모리 채널들 사이의 페이지들의 불균일한 분포를 초래할 수 있는 방식으로 할당될 수 있다. 페이지들의 불균일한 분포는, 예를 들어, 테일 레이턴시(tail latency)를 증가시키고, 대역폭 이용을 감소시키고, 채널 병렬성 등을 감소시킴으로써 성능을 저하시킬 수 있다.
본 개시 내용의 예시적인 실시예들에 따른 메모리 할당 방식에서, 할당된 메모리 페이지들은 메모리 채널들에 걸쳐 비교적 균일하게 분포될 수 있다. 메모리 페이지들은, 예를 들어, 더 낮은 이용을 가질 수 있는 채널들의 페이지들을 할당함으로써 분배될 수 있다. 구현 세부사항들에 따라, 이것은 예를 들어 대역폭 이용 및/또는 채널 병렬성을 증가시킴으로써 시스템 성능을 향상시킬 수 있는 방식으로 메모리 페이지들에 대한 입력 및/또는 출력 (i/o) 트래픽을 분배할 수 있다. 또한, 구현 세부사항들에 따라, 활용에 기초하여 메모리 채널들에 걸친 i/o 트래픽을 분산하는 것은, 예를 들어, 메모리 채널들에 걸친 워크로드들을 밸런싱함으로써 테일 레이턴시를 완화시킬 수 있다.
일부 실시예들에서, 호스트는 하나 이상의 디바이스들에서 채널들을 통해 메모리 페이지들을 분배할 수 있는 이용 인식 할당 방식을 구현하도록 구성된 메모리 할당기를 포함할 수 있다. 각각의 디바이스는 하나 이상의 미디어 코어(예를 들어, 플래시 코어)를 가질 수 있고, 각각의 미디어 코어는 하나 이상의 메모리 채널을 가질 수 있다.
일부 실시예들에서, 메모리 할당기는 디바이스 선택 로직, 채널 선택 로직, 및/또는 페이지 할당 로직을 포함할 수 있다. 메모리 할당 요청에 응답하여, 디바이스 선택 로직은 각각의 디바이스의 상대적 활용에 기초하여 다수의 디바이스들 중 하나를 선택할 수 있다. 디바이스 선택 로직이 할당 요청을 위한 디바이스를 선택한 후에, 채널 선택 로직은 각각의 채널의 상대적 이용에 기초하여 디바이스 내의 채널을 선택할 수 있다. 디바이스 내의 채널들이 다수의 미디어 코어들과 연관될 수 있기 때문에, 채널을 선택하는 것은 또한 미디어 코어를 선택하는 것을 수반할 수도 있다. 채널 선택 로직이 메모리 할당 요청을 위한 채널을 선택한 후에, 페이지 할당 로직은 예를 들어 요청 (예를 들어, 요청된 메모리 페이지들의 수) 에 기초하여 채널 내의 하나 이상의 페이지들을 할당할 수 있다.
본 개시의 예시적인 실시예들에 따른 채널 할당 방식은 채널들의 상대적 이용들에 기초하여 채널들을 통해 메모리 할당들을 분배하기 위한 임의의 적절한 정책을 구현할 수도 있다. 예를 들어, 균형잡힌 랜덤 정책은 더 많은 프리 페이지들(또는 빈 페이지들)을 갖는 채널들을 선호할 수 있는 방식으로 채널들을 통해 할당 할당들에 난수를 사용할 수 있다. 다른 예로서, LUCFS 정책은 가장 높은 수의 프리 페이지들을 갖는 채널에서 메모리 페이지들을 할당할 수 있다.
일부 실시예들에서, 하나 이상의 디바이스들은 메모리 코히어런트 인터커넥트를 통해 하나 이상의 호스트들에 인터페이싱될 수 있다. 하나 이상의 디바이스들은, 예를 들어, 장치 부착 메모리(device attached memory) 로서 구성될 수 있다.
본 명세서에 개시된 원리들은 독립적으로 유용하고 개별적으로 구현될 수 있으며, 모든 실시예는 모든 원리를 이용할 수 없다. 그러나, 원리들은 또한 다양한 조합들로 구현될 수 있으며, 이들 중 일부는 상승적인 방식으로 개별 원리들의 이점들을 증폭할 수 있다.
도 1은 본 개시의 예시적인 실시예들에 따른 메모리 할당 방식의 일 실시예를 도시한다. 도 1 에 도시된 시스템은 호스트(102) 및 하나 이상의 저장 장치들(104_1, ??, 104_n)을 포함할 수 있다. 저장 장치들(104_1, …, 104_n) 각각은 호스트 코어(106) 및 하나 이상의 미디어 코어들(108_0, 108_1, ??, 108_n)을 포함할 수 있다. 호스트 코어(106)는, 예를 들어 후술하는 바와 같이 메모리 코히어런트 인터커넥트 및/또는 프로토콜을 통해 호스트(102)와 통신할 수 있다.
각각의 미디어 코어들(108_0, 108_1, ??, 108_n)은 하나 이상의 메모리 채널들에 대한 액세스를 제어할 수 있으며, 이들 각각은 예를 들어 블록들 내에 배열된 메모리의 페이지들을 포함할 수 있다. 각각의 미디어 코어들(108_0, 108_1, ??, 108_n)과 연관된 메모리 채널들은 Ch1, Ch2, 내지 Chn으로 도면에 표시될 수 있다.
도 1 에 도시된 저장 장치들(104_1, ??, 104_n), 미디어 코어들(108_0, 108_1, ??, 108_n), 및 메모리 채널들(예를 들어, Ch1, Ch2, 내지 Chn)뿐만 아니라, 본 명세서에 개시된 임의의 다른 저장 장치들, 미디어 코어들, 및/또는 메모리 채널들(예를 들어, Ch1, Ch2, 내지 Chn)은 임의의 메모리 저장 매체로 구현될 수 있다. 예를 들어, 일부 실시예들에서, 저장 장치들(104_1, ??, 104_n)은 솔리드 스테이트 드라이브들(SSDs; Solid State Drives)로서 구현될 수 있고, 미디어 코어들(108_0, 108_1, ??, 108_n)은 플래시 코어들로서 구현될 수 있고, 메모리 채널들(예를 들어, Ch1, Ch2, 내지 Chn)은 플래시 메모리(예를 들어, not-and(nand)플래시 메모리)로 구현될 수 있다. 그러나, 본 개시의 원리들은 임의의 다른 유형의 고체 상태 매체, 자기 매체, 광학 매체 등을 포함하는 임의의 유형의 저장 매체를 사용하여 임의의 유형의 저장 장치로 구현될 수 있다. 예를 들어, 일부 실시예들에서, 저장 장치는, 크로스-그리디드(cross-gridded) 비휘발성 메모리, 벌크 저항 변화 (bulk resistance change), 상 변화 메모리(PCM; Phase Change Memory) 등과 같은 영구 메모리, 또는 이들의 임의의 조합에 기초하여 SSD로서 구현될 수 있다.
저장 장치들(104_1, …, 104_n)의 저장 매체들(예를 들어, 플래시 메모리)의 일부 또는 전부는 (예를 들어, 가상 어드레싱 방식을 사용하여) 호스트(102)에 액세스 가능한 장치 부착 메모리(112)로서 구성될 수 있다. 장치 부착 메모리(112)는 저장 장치들(104_1, …, 104_n)에 대응하는 영역들(114)을 포함할 수 있다. 호스트(102)는, 일부 실시예들에서, CXL(Compute Express Link)과 같은 메모리 시맨틱 및/또는 메모리 코히어런트 인터커넥트 및/또는 CXL.mem과 같은 메모리 코히어런트 프로토콜을 사용하여 구현될 수 있는 인터커넥트(113)를 통해 저장 장치들(104_1, …, 104_n)에 액세스할 수 있다. 그러나, 실시예들은 또한 캐시 코히어런트 및/또는 메모리 의미 인터페이스들 및/또는 Gen-Z, CAPI(Coherent Accelerator Processor Interface), CCIX(Cache Coherent Interconnect for Accelerators) 등을 포함하는 임의의 다른 인터페이스들 및/또는 프로토콜들로 구현될 수 있다.
호스트(102)는 프로그램, 애플리케이션, 서비스, 커널 등과 같은 프로세스로부터 메모리 할당 요청(118)을 수신할 수 있는 메모리 할당기(116)를 포함할 수 있다. 메모리 할당 요청(118)은 요청된 페이지들의 수를 지정할 수 있다. 요청된 페이지들의 수는 버디 메모리 할당 방식에 대한 요청(레벨이라고도 함)에 대응할 수 있다. 일부 실시예들에서, 메모리 할당 요청(118)은 또한 메모리를 할당할 저장 장치들(104_1, ??, 104_n)(예를 들어, 노드(node), 구역(zone) 등)을 특정할 수 있다. 일부 실시예들에서, 메모리 할당 요청(118)은 예를 들어, 각각의 디바이스의 상대 부하들에 기초하여 디바이스를 선택하기 위해 메모리 할당기(116)에 의존할 수 있다.
일부 실시예들에서, 메모리 할당기(116)는 저장 장치들(104_1, ??, 104_n)이(예를 들어, 메모리 할당기(116)에 의해 또는 메모리 할당 요청(118)을 발행한 프로세스에 의해) 선택된 후에, 하나 이상의 메모리 페이지들(120)이 요청된 페이지들의 수(예를 들어, 요청의 레벨 또는 순서)에 기초하여 선택된 저장 장치(104)로부터 할당될 수 있지만, 하나 이상의 메모리 채널들 중 어느 것이 메모리로부터 할당되는 것을 인식하지 않고, 하나 이상의 메모리 페이지들(120)이 선택된 저장 장치(104)로부터 할당될 수 있다.
일부 실시예들에서, 메모리 할당기(116)는 메모리 할당 요청(118)(예를 들어, 미디어 코어들(108_0, 108_1, ??, 108_n)이 정적으로 맵핑될 수 있음)에 대한 메모리 페이지들(120)을 할당할 미디어 코어들(108_0, 108_1, ??, 108_n) 중 하나를 선택할 수 있지만, 선택된 미디어 코어와 연관된 하나 이상의 메모리 채널들 중 어느 메모리 페이지들(120)이 할당되는지에 대한 인식은 없다. 예를 들어, 선택된 미디어 코어는 논리 블록 어드레스를 물리적 블록 어드레스 (LBA-TO-PBA 또는 LBA2PBA) 맵핑 스킴에 사용하여 하나 이상의 할당된 메모리 페이지들(120)을 자신의 메모리 채널들(예를 들어, Ch1, Ch2, ..., Chn) 중 하나 이상에 동적으로 맵핑할 수 있다. 저장 장치(104)가 플래시 코어들로 플래시 기반 SSD로서 구현된다면, LBA-TO-PBA 맵핑 방식은, 예를 들어, 하나 이상의 플래시 코어들 내의 플래시 변환 계층(FTL)에 의해 구현될 수 있다.
따라서, 호스트(102)는 하나 이상의 메모리 페이지들(120)이 할당된 하나 이상의 메모리 채널을 알지 못할 수 있다. 더욱이, 메모리 페이지들(120)은 도 1에 도시된 바와 같이 할당된 페이지의 불균일한 분포를 초래할 수 있는 방식으로 할당될 수 있다. 할당된 페이지 및/또는 블록은 음영(shading)으로 표시되며, 그 예는 122로 표시된다. 할당되지 않은 페이지 및 /또는 블록은 음영 없이 표시되며, 그 예는 124로 표시된다.
도 1의 제n 저장 장치(SD n)를 참조하면, 메모리 채널들(예를 들어, Ch1, Ch2, 내지 Chn)은 할당된 메모리 채널의 백분율을 나타내는 음영 부분을 갖는 막대 그래프로 도시된다. 각 미디어 코어의 결과적인 전체 메모리 할당은 백분율로 제공된다.
일부 실시예에서, 그리고 구현 세부사항에 따라, 도 1의 제1 저장 장치(SD 1) 및 제n 저장 장치(SD n)에 도시된 바와 같은 페이지 및/또는 블록의 불균일한 분포는, 예를 들어, 대역폭 활용 및/또는 채널 병렬성을 감소시킴으로써 시스템의 전체 성능을 저하시킬 수 있다. 예를 들어, 제1 저장 장치(SD 1)의 미디어 코어(0)을 예로 들면, 제2 메모리 채널(Ch2)은 제1 메모리 채널(Ch1)보다 훨씬 더 많은 할당 페이지를 가질 수 있다. 따라서, 제1 프로세스가 제1 메모리 채널(Ch1) 내의 페이지들 중 하나를 액세스(예: 읽기/쓰기)하려고 시도하는 경우, 제2 프로세스가 이미 제2 메모리 채널(Ch2) 내의 다른 페이지를 액세스(예: 읽기 및/또는 쓰기)하고 있을 가능성이 상대적으로 높을 수 있다. 따라서 제1 프로세스는 제1 프로세스가 그것의 액세스를 진행할 수 있기 전에 제2 프로세스에 의한 액세스가 완료될 때까지 기다릴 수 있다. 또한 제2 메모리 채널(Ch2)이 더 집중적으로 사용될 수 있기 때문에 제2 메모리 채널(Ch2)은 제1 메모리 채널(Ch1)보다 더 빨리 및/또는 더 자주 가비지 컬렉션에 들어갈 수 있다. 이는 제1 프로세스에 대한 테일 레이턴시(tail latency)를 초래할 수 있고 대역폭 이용 및/또는 채널 병렬성을 감소시킬 수 있다.
일부 실시예에서, 저장 장치들(104_1, …, 104_n) 내에서 다수의 미디어 코어들(108_0, 108_1, ??, 108_n)의 정적 맵핑을 구현하기 위해, 메모리 할당기(116)는 하나 이상의 비트들이 미디어 코어들(108_0, 108_1, ??, 108_n)을 지정할 수 있는 주소를 저장 장치들(104_1, …, 104_n)에 제공할 수 있다. 4개의 미디어 코어들(108_0, 108_1, ??, 108_n)을 갖는 저장 장치들(104_1, …, 104_n)에서, 어드레스의 2비트는 미디어 코어를 결정할 수 있다. 이러한 실시예에서, 메모리 할당기는 메모리 채널에 대한 임의의 어드레스 비트를 제공하지 않을 수 있는데, 그 이유는 선택된 미디어 코어가 하나 이상의 LBA 대 PBA 맵핑 방식을 사용하여 하나 이상의 할당된 메모리 페이지들(120)을 하나 이상의 메모리 채널(예를 들어, Ch1, Ch2, ??, Chn)에 동적으로 맵핑할 수 있기 때문이다.
도 2a는 본 개시의 예시적인 실시예들에 따른 메모리 할당 방식 인식 활용의 일 실시예를 도시한다. 도 2a에 도시된 실시예에서, 하나 이상의 저장 장치들(204_1, ??, 204_n)은 장치 부착 메모리(212)의 하나 이상의 대응하는 영역들(214_1, ??, 214_n)로서 구성될 수 있다(예를 들어, 맵핑될 수 있다.). 저장 장치들(204_1, ??, 204_n) 각각은 하나 이상의 메모리 채널들(도 2a에서 메모리 채널들은 Ch1, Ch2, ??, Chn으로 표시됨)을 가질 수 있는 하나 이상의 미디어 코어들(208_0, 208_1, ??, 208_n)(도 2a에서 미디어 코어들은 Media Core 0, Media Core 1, ??, Media Core n으로 표시됨)을 포함할 수 있다.
메모리 할당 요청들(218)은, 예를 들어, 하나 이상의 저장 장치들(204_1, …, 204_n), 하나 이상의 미디어 코어들(208_0, 208_1, ??, 208_n), 및/또는 하나 이상의 메모리 채널들(예를 들어, Ch1, Ch2, ..., Chn)에 걸쳐 메모리 할당들을 확산(예를 들어, 균등하게 배포)할 수 있는 방식으로 서비스도리 수 있다. 일부 실시예들에서, 메모리 할당 요청들(218)은, 예를 들어, 하나 이상의 호스트들에 위치될 수 있는 장치 선택 로직, 채널 선택 로직, 및/또는 페이지 할당 로직에 의해 서비스될 수 있다.
일부 실시예들에서, 저장 장치들(204_1, ??, 204_n), 하나 이상의 미디어 코어들(208_0, 208_1, ??, 208_n), 및/또는 하나 이상의 메모리 채널들(예를 들어, Ch1, Ch2, ..., Chn)에 걸쳐 메모리 할당들을 확산시키는 것은, 미디어 코어 트래픽(226) 및/또는 채널 트래픽(228)에 의해 도시된 바와 같이 할당된 페이지들에 대한 보다 균일하게 분포된 트래픽(예를 들어, 판독 및/또는 기록 동작들)을 초래할 수 있다. 상세한 구현 방법에 따라, 이는 테일 레이턴시를 감소시키고 및/또는 대역폭 이용 및/또는 채널 병렬성을 증가시킬 수 있다.
도 2b는 본 개시의 예시적인 실시예들에 따른 메모리 할당기를 갖는 메모리 할당 방식 인식 활용의 일 실시예를 도시한다. 도 2b 에 도시된 시스템은 호스트 (202), 시스템 메모리(205), 및 하나 이상의 저장 장치들(204_1, ??, 204_n)을 포함할 수 있고, 하나 이상의 저장 장치들(204_1, ??, 204_n)은 장치 부착 메모리(212)의 하나 이상의 대응하는 영역들(214_0, 214_1, ??, 214_n)로서 구성될 수 있다(예를 들어, 맵핑될 수 있다.). 시스템 메모리(205)(예를 들어, DRAM으로 구현되는 호스트 메모리)와 장치 부착 메모리(212)는 물리적 메모리 맵(215)에 배열될 수 있다. 일부 실시예에서, 장치 부착 메모리(212)의 영역들(214_0, 214_1, ??, 214_n)은 물리적 메모리 맵(215)의 논리적으로 연속적인 메모리 영역들에 배치될 수 있다.
호스트(202)는 일부 또는 모든 물리적 메모리 맵(215)을 관리할 수 있는 메모리 할당기(216)를 포함할 수 있다. 메모리 할당기(216)는 프로그램들, 어플리케이션들, 서비스들, 커널들(kernels) 등과 같은 하나 이상의 프로세스들(203)으로부터 메모리 할당 요청들(218)을 수신할 수 있다. 그리고, 메모리 할당기(216)는 메모리(220)의 하나 이상의 페이지들을 할당함으로써 요청들(218)을 보낸 프로세스들에 요청들(218)을 서비스할 수 있다. 메모리 할당기(216)는 장치 선택 로직(230), 채널 선택 로직(209), 및/또는 페이지 할당 로직(211)을 포함할 수 있다. 장치 선택 로직(230), 채널 선택 로직(209), 및/또는 페이지 할당 로직(211)은 해당 저장 장치들(204_1, ??, 204_n) 내의 메모리 할당들 및/또는 해당 저장 장치들(204_1, ??, 204_n)의 하나 이상의 메모리 채널들을 을 분산(예를 들어, 균등하게 분배)킬 수 있다.
일부 실시예들에서, 메모리 할당 요청(218)에 응답하여, 장치 선택 로직 (230)은 각 저장 장치의 상대적 활용을 기초로 요청된 메모리(220)를 할당할 저장 장치들(204_1, ??, 204_n) 중 하나를 선택할 수 있다. 예를 들어, 장치 선택 로직 (230)은 저장 장치들(204_1, ??, 204_n) 각각의 상대적인 퍼센트 활용에 기초하여 저장 장치들(204_1, ??, 204_n) 중 하나를 선택할 수 있다(예를 들어, 요청된 메모리는 가장 낮은 퍼센트 활용을 갖는 저장 장치로부터 할당될 수 있다.).
장치 선택 로직(230)이 저장 장치들(204_1, ??, 204_n) 중 어느 하나를 선택하면, 채널 선택 로직(209)은 선택된 저장 장치(204_1, ??, 204_n) 내의 하나 이상의 메모리 채널들을 선택하여 요청된 메모리(220)를 할당할 수 있다. 예를 들어, 채널 선택 로직(209)은 균형 랜덤 정책, 가장 적게 사용된 채널 정책 등을 기초로 메모리 채널을 선택할 수 있다.
채널 선택 로직(209)이 선택된 저장 장치 내 하나 이상의 메모리 채널을 선택하면, 페이지 할당 로직(211)은 하나 이상의 선택된 메모리 채널로부터 요청된 메모리(220)의 하나 이상의 페이지를 할당할 수 있다. 예를 들어, 페이지 할당 로직(211)은 n 개의 연속적인 메모리 페이지들을 탐색하고 할당할 수 있으며, 여기서 n은 요청된 페이지들의 수(예를 들어, 요청의 레벨 또는 순서)이지만, 채널 선택 로직(209)에 의해 선택된 하나 이상의 메모리 채널들에서만 탐색할 수 있다.
도 3은 본 개시의 예시적인 실시예들에 따른 메모리 할당 방식 인식 활용의 예시적인 실시예를 예시한다. 도 3에 도시된 시스템은 호스트(302) 및 하나 이상의 저장 장치들(304_1, ??, 304_n)를 포함할 수 있다. 호스트(302)는 메모리 할당기(316)를 포함할 수 있다. 메모리 할당기(316)는 프로그램, 애플리케이션, 서비스, 커널 등과 같은 프로세스로부터 메모리 할당 요청(318)을 수신할 수 있다. 그리고, 메모리 할당기(316)는 메모리(220)의 하나 이상의 페이지들을 할당함으로써 요청들(218)을 보낸 프로세스들에 요청들(218)을 서비스할 수 있다.
저장 장치들(304_1, …, 304_n)의 저장 일부 또는 모든 저장 미디어는 호스트(302)가 액세스할 수 있는 장치 부착 메모리(312)로서 구성될 수 있다(예를 들어, 가상 주소 지정 체계 사용). 장치 부착 메모리(312)는 저장 장치들(304_1, …, 304_n) 각각에 대응되는 영역들(314)를 포함할 수 있다. 일부 실시예에서, 장치 부착 메모리(312)는 시스템 메모리(305)(예를 들어, 호스트 메모리)를 포함할 수 있는 물리 메모리 맵(315)에 배열될 수 있다.
호스트(302)는 인터커넥트(313)를 통해 저장 장치들(304_1, ??, 304_n)에 액세스할 수 있다. 이는, 일부 실시예에서, CXL(Compute Express Link)와 같은 메모리 시멘틱(semantic) 및/또는 메모리 코히어런트(coherent) 인터커넥트로 구현될 수 있으며, 및/또는 CXL.mem과 같은 메모리 코히어런트 프로토콜을 이용하여 구현될 수 있다.
하나 이상의 저장 장치들(304_1, ??, 304_n)은 호스트 코어(306)와 하나 이상의 미디어 코어들(308_1, …, 308_n)을 포함할 수 있다. 미디어 코어들(308_1, ??, 308_n) 각각은 하나 이상의 메모리 채널들(예를 들어, Ch1, Ch2, ..., Chn)에 대한 액세스를 제어할 수 있으며, 하나 이상의 메모리 채널들(예를 들어, Ch1, Ch2, ..., Chn)은 예를 들어 블록들 내에 배열된 메모리의 페이지들을 포함할 수 있다. 이 실시예에서, 미디어 코어들(308_1, ??, 308_n)은 도 3에서 Media Core 0, Media Core 1, ??, Media Core n로 지시될 수 있다. 메모리 채널들(예를 들어, Ch1, Ch2, ..., Chn)은 도 3에서 Ch1, Ch2, ??, Chn으로 지시될 수 있다. 일부 실시예에서, 미디어 코어들(308_1, ??, 308_n)은 플래시 코어들로 구현될 수 있고, 메모리 채널들(예를 들어, Ch1, Ch2, ..., Chn)은 플래시 메모리로 구현될 수 있다. 그러나, 임의의 저장 미디어의 다른 타입들 및/또는 미디어 코어들이 사용될 수도 있다.
메모리 할당기(316)는, 할당된 메모리 페이지들(320)을 메모리 채널들(예를 들어, Ch1, Ch2, ..., Chn)을 가로질러 확산(예를 들어, 균등하게 분배)할 수 있는 방식으로, 할당된 메모리 페이지들(320)을 하나 이상의 저장 장치들(304_1, ??, 304_n), 미디어 코어들(308_1, ??, 308_n), 및/또는 메모리 채널들(예를 들어, Ch1, Ch2, ..., Chn)에 분배할 수 있는 장치 선택 로직(330), 채널 선택 로직(309), 및/또는 페이지 할당 로직(311)을 포함할 수 있다.
일부 실시예들에서, 메모리 할당 요청(318)에 응답하여, 장치 선택 로직(330)은 각각의 저장 장치들(304_1, ??, 304_n)의 상대적 이용(예를 들어, 할당된 메모리)에 기초하여 다수의 저장 장치들(304_1, ??, 304_n) 중 하나를 선택할 수 있다. 일부 실시예들에서, 메모리 할당 요청(318)을 발행한 프로세스는 저장 장치들(304_1, ??, 304_n)을 선택할 수 있다.
따라서, 일부 실시예들에서, 선택된 미디어 코어 및/또는 선택된 메모리 채널이 채널 선택 로직(309)에 의해 결정될 수 있기 때문에, 미디어 코어들(308_1, ??, 308_n) 및 메모리 채널들(예를 들어, Ch1, Ch2, ..., Chn) 모두는 도 3에 도시된 바와 같이 정적으로 맵핑될 수 있다.
예를 들어, 하나 이상의 저장 장치들(304_1, ??, 304_n)이 16 기가바이트(Gigabyte)의 용량을 갖는 실시예에서, 호스트 메모리(305)는 0 내지 1 기가바이트의 어드레스 범위를 차지(또는 점유)할 수 있다. SD 1과 연관된 영역(314)은 1 내지 17 기가바이트의 어드레스 범위를 점유할 수 있고, SD 2와 연관된 영역(314)은 17 내지 33 기가바이트의 어드레스 범위를 점유할 수 있다. 그러나, 일부 다른 실시예들에서, 어드레스는 저장 장치들(304_1, ??, 304_n)을 특정하기 위한 하나 이상의 비트들을 포함할 수 있다.
채널 선택 로직(309)이 선택된 저장 장치 내의 하나 이상의 메모리 채널들을 선택하면, 페이지 할당 로직(311)은 하나 이상의 선택된 메모리 채널들로부터 하나 이상의 메모리 페이지들(320)을 할당할 수 있다. 예를 들어, 페이지 할당 로직(311)은 n 개의 연속된 메모리 페이지들을 검색 및 할당할 수 있다. 여기서, n은 요청된 페이지 수(예를 들어, 요청의 레벨이나 순서)이지만, 채널 선택 로직(309)에 의해 선택된 하나 이상의 메모리 채널에서만 가능하다.
일부 실시예들에서, 하나 이상의 미디어 코어들(308_1, ??, 308_n)은 하나 이상의 메모리 채널들(예를 들어, Ch1, Ch2, ..., Chn) 내에서 동적을 할당된 맵 페이지들에 LBA-to-PBA 맵핑(Logical Block Address to Physical Block Address mapping) 방식(scheme)을 구현할 수 있는 맵핑 로직(317)을 포함할 수 있다.
할당된 메모리 페이지들(320)을 저장 장치들(304_1, ??, 304_n), 미디어 코어들(308_1, ??, 308_n), 및/또는 메모리 채널들(예를 들어, Ch1, Ch2, ..., Chn)에 걸쳐 확신시킴으로써, 도 3에 도시된 실시예는, 할당된 메모리 페이지의 보다 균일한 분포를 제공할 수 있다. 할당된 페이지들 및/또는 블록들은 음영 처리로 표시되며(예를 들어, 322), 비할당된 페이지들 및/또는 블록들은 음영 처리 없이 표시된다(예를 들어, 324). 할당된 메모리의 더 고른 분포는 도 3에 도시된 SD n과 관련하여 분명할 수 있다. 여기서, 메모리 채널들(예를 들어, Ch1, Ch2, ..., Chn)은 할당된 채널 메모리의 백분율을 나타내는 음영 부분을 막대 그래프로 표현된다. 각 미디어 코어의 전체 메모리 할당 결과는 백분율로 제공된다.
구체적인 구현 방법에 따라, 할당된 메모리 페이지들의 상대적으로 균일한 분포는 메모리 입력 및/또는 출력 동작들(I/Os)의 더 균일한 분포를 제공할 수 있고, 이는 차례로 테일 레이턴시를 감소시키고, 대역폭 이용을 증가시키고, 및/또는 채널 병렬성을 증가시킬 수 있다.
설명을 위해, 도 3은 메모리 채널들(예를 들어, Ch1, Ch2, ..., Chn) 각각 내에서 할당된 페이지들 및/또는 블록들의 논리적 뷰(view)를 제공할 수 있다. 그래서, 할당된 페이지들 및/또는 블록들은 인접한 위치에서 설명될 수 있다. 그러나, 메모리 채널들(예를 들어, Ch1, Ch2, ..., Chn) 각각 내에서 LBA-to-PBA 맵핑 시스템에 기반하여 메모리 채널들(예를 들어, Ch1, Ch2, ..., Chn) 내의 할당된 페이지들 및/ 블록들은 메모리 채널들(예를 들어, Ch1, Ch2, ..., Chn)에 걸쳐 균형을 유지하면서 어떤 방식으로든 메모리 채널 전체에 배포될 수 있다.
설명을 위해, 장치 선택 로직(330), 채널 선택 로직(309), 및/또는 페이지 할당 로직(311)은 호스트(302)에 위치할 수 있다. 그러나, 다른 실시예에서, 일부 또는 전부 로직은 다른 곳에 위치할 수도 있다.
도 4a는 본 개시의 예시적인 실시예들에 따른 완전히 인터리빙된 페이지 프레임 넘버링 방식(scheme)의 예시적인 실시예를 도시한다. 도 4a에 도시된 PFN(Page Frame Number)에서 64비트 주소(429)는 4비트 채널 식별자 부분(436)을 포함할 수 있다. 4비트 채널 식별자 부분(436)은 채널 ID, CH ID, Ch ID로 지칭될 수 있다.
4비트 채널 식별자 부분(436)은 두 코어 식별자 비트들(438)을 포함할 수 있다. 코어 식별자 비트들(438)은 코어 ID 비트들, Mcore ID 비트들(미디어 코어의 경우), Fcore ID 비트들(플래시 코어의 경우)로 지칭될 수 있다. 두 코어 식별자 비트들(438)은 페이지가 맵핑된 구체적인 미디어 코어들(408_0, 408_1)을 확인할 수 있다.
또한 4비트 채널 식별자 부분(436)은 두 채널 식별자 비트들(440)을 포함할 수 있다. 채널 식별자 비트들(440)은 채널 ID 비트들, Ch ID 비트들, 또는 CH ID 비트들로 지칭될 수 있다. 채널 식별자 비트들(440)은 페이지가 맵핑된 구체적인 채널을 확인할 수 있다.
4비트 채널 식별자 부분(436)은, 도 4a에 도시된 바와 같은 PFN 배열을 갖는 미디어 코어(408_0, 408_1) 및 채널(410)에 의해 완전히 인터리빙된 메모리 패밍을 구현하기 위해, PFN의 4개의 최하위 비트에 위치할 수 있다.
도 4b는 본 개시의 예시적인 실시예들에 따라 동일한 메모리 채널에 속하는 다수의 연속적인 페이지들을 갖는 페이지 프레임 넘버링 방식의 예시적인 실시예를 도시한다. 도 4b에 도시된 실시예는 도 4a에 도시된 것과 유사할 수 있다. 그러나, 도 4b에 도시된 실시예는 메모리의 2개의 연속 페이지가 미디어 코어(408_0, 408_1) 및 메모리 채널(410)에 의해 도시된 것처럼 동일한 메모리 채널에 속할 수 있는 메모리 맵핑을 구현하기 위해 PFN의 비트 1 내지 비트 4까지 정렬된 채널 ID(442)를 가질 수 있다. 2개의 코어 식별자 비트들(444)은 PFN의 비트 3 및 비트 4와 정렬될 수 있고, 2개의 채널 식별자 비트들(446)은 PFN의 비트 1 및 비트 2와 정렬될 수 있다. 따라서, 인접 페이지는 채널 인터리빙(channel interleaving)으로 인해 서로 다른 메모리 채널에 속할 수 있다.
도 4c는 본 개시의 예시적인 실시예들에 따른 비-인터리빙된 맵핑을 갖는 페이지 프레임 넘버링 방식의 예시적인 실시예를 도시한다. 도 4c에 도시된 실시예는 도 4a 및 도 4b에 도시된 것과 유사할 수 있다. 그러나, 도 4c에 도시된 실시예는 비-인터리빙된 맵핑을 구현하기 위해 PFN(429)의 서로 다른 영역들로 분리된 코어 식별자 비트들(450) 및 채널 식별자 비트들(452)을 갖는 채널 ID(448)를 가질 수 있다.
도 4a, 도 4b, 및/또는 도 4c에 도시된 실시예들은, 예를 들어, 본 명세서에 개시된 활용 인식 메모리 할당 방식들의 실시예들 중 임의의 실시예들에서 메모리 채널 및/또는 메모리 채널 내의 메모리의 페이지의 동적 맵핑 및/또는 메모리 채널 및/또는 미디어 코어에 대한 메모리의 페이지의 정적 매핑을 구현하는데 사용될 수 있다. 도 4a, 도 4b, 및/또는 도 4c에 도시된 실시예들은, 특정 비트 위치들에서 특정 수의 코어 식별자 비트들, 채널 식별자 비트들, 및/또는 이와 유사한 비트 위치, 특정 비트 위치, 어떤 유형의 메모리 맵핑을 구현하는데 사용될 수 있다.
도 5는 본 개시의 예시적인 실시예들에 따른 저장 디바이스 아키텍처의 예시적인 실시예를 도시한다. 도 5에 도시된 실시예는 본 명세서의 개시된 활용 인식 메모리 할당 방식들 중 임의의 것을 구현하는데 사용될 수 있다. 예를 들어, 도 2에 도시된 저장 장치들(204_1, ??, 204_n) 및/또는 도 3에 도시된 저장 장치들(304_1, ??, 304_n) 중 임의의 것을 구현하는데 사용될 수 있다.
도 5를 참조하면, 저장 장치(504)는 호스트 코어(506) 및 하나 이상의 미디어 코어들(508_0, 508_1, 508_2, 508_3)을 포함할 수 있다. 미디어 코어들(508_0, 508_1, 508_2, 508_3) 중 하나 이상은 하나 이상의 메모리 채널들(예를 들어, Ch0, Ch1, ??, Ch15)에 대한 액세스를 제어할 수 있다.
호스트 코어(506)은 호스트와 통신할 수 있다. 예를 들어,
호스트 코어(506)는, CXL 과 같은 메모리 코히어런트 인터커넥트 등 임의의 타입의 인터커넥트를 통해 및/또는 CXL.MEM과 같은 코히어런트 프로토콜 등 임의의 타입의 프로토콜을 이용하여, 호스트와 통신할 수 있다.
하나 이상의 미디어 코어들(508_0, 508_1, 508_2, 508_3)은 할당된 메모리 페이지의 LBA를 메모리채널들(예를 들어, Ch0, Ch1, ??, Ch15) 내의 PBA로 동적으로 맵핑할 수 있는 LBA-to-PBA 맵핑 로직(517)을 포함할 수 있다.
일부 실시예들에서, 미디어 코어들(508_0, 508_1, 508_2, 508_3) 및/또는 메모리 채널들(예를 들어, Ch0, Ch1, ??, Ch15)은, 예를 들어, 도 5에 도시된 바와 같이 정적으로 맵핑될수 있다. 이는 호스트에 위치된 채널 선택 로직이 선택된 미디어 코어 및/또는 선택된 메모리 채널에 대한 하나 이상의 비트들을 포함할 수 있는 하나 이상의 할당된 메모리 페이지들에 대한 어드레스를 저장 장치(504)에 제공할 수 있기 때문이다. 도 5에 도시된 실시예에서, 저장 장치(504)는 4개의 미디어 코어들(508_0, 508_1, 508_2, 508_3)을 포함할 수 있다. 각 미디어 코어는 4개의 메모리 채널들(예를 들어, Ch0, Ch1, ??, Ch15)을 가질 수 있다. 그래서, 메모리 할당기에 의해 제공된 어드레스는 선택된 메모리 채널을 특정하기 위한 4개의 비트들을 포함할 수 있다. 즉, 메모리 할당기에 의해 제공된 어드레스는 미디어 코어를 특정하기 위한 2개의 비트들과 메모리 채널을 특정하기 위한 2개의 비트들을 포함할 수 있다.
일부 실시예에서, 미디어 코어는 플래시 코어로 구현될 수 있고, 메모리 채널들(예를 들어, Ch0, Ch1, ??, Ch15)은 플래시 메모리로 구현될 수 있다. 그러나, 임의의 타입의 저장 미디어 및/또는 미디어 코어들이 사용될 수 있다. 설명을 위해, 저장 장치(504)는 4개의 미디어 코어들로 구현되고, 각 미디어 코어는 4개의 메모리 채널들을 갖는 것으로 한다. 그러나, 임의의 개수의 미디어 코어들(508_0, 508_1, 508_2, 508_3) 및/또는 메모리 채널들(예를 들어, Ch0, Ch1, ??, Ch15)이 사용될 수 있다.
도 6은 본 개시의 예시적인 실시예들에 따른 밸런스드 랜덤 채널 선택 방법의 예시적인 실시예를 도시한다. 도 6에 도시된 실시예는, 예를 들어, 본 명세서의 개시된 임의의 채널 선택 로직을 구현하는데 사용될 수 있다. 도 6에 도시된 실시예에서, 4개의 메모리 채널들(Channel 0, Channel 1, Channel 2, and Channel 3)이 있을 수 있으나, 이에 한정되는 것은 아니다. 방법의 초기 단계에서, 메모리 채널들(Channel 0, Channel 1, Channel 2, and Channel 3)은 각각 1000개, 3000개, 1500개, 및 500개의 프리 페이지를 가질 수 있다. 그래서, 전체 6000개의 프리 페이지가 있을 수 있다. 메모리의 페이지를 할당할 메모리 채널을 선택하기 위해, 방법은 난수(random number)를 생성(예를 들어, 난수는 0에서 전체 페이지의 수까지 해당됨)하고, 난수와 전체 프리 페이지들 간의 나머지 연산을 수행함으로써 티켓(654)를 생성할 수 있다. 이러한 예에서, 티켓 = 난수 % 6000일 수 있다. 여기서, "%"는 나머지 연산(또는 modulo)을 의미할 수 있다. 티켓은 균형 랜덤 정책을 이용하여 메모리 페이지를 할당하기 위한 화살표(655)에 의해 나타낸 메모리 채널을 선택하는데 이용될 수 있다(여기서, 선택된 메모리 채널은 타겟 채널로 지칭될 수 있다.).
도 7은 본 개시의 예시적인 실시예들에 따른 밸런싱된 랜덤 채널 선택 정책을 구현하기 위한 방법의 예시적인 실시예를 도시한다. 도 7에 도시된 실시예는, 예를 들어, 본 명세서에 개시된 임의의 채널 선택 로직을 구현하기 위해 사용될 수 있다.
방법은 동작 702에서 시작할 수 있다. 동작 704에서, 티켓(Ticket)의 값은 모든 메모리 채널에 걸쳐 프리 페이지의 전체 숫자에 대한 난수 모듈로를 계산함으로써 초기화될 수 있다. 동작 706에서, 채널 식별자(ID)는 0으로 초기화될 수 있다. 동작 708에서, 방법은 상기 티켓의 값을 메모리 채널 0(Channel 0) 내의 프리 페이지들의 수와 비교할 수 있다((Page_count[ID] where ID=0). 만약, 티켓의 값이 메모리 채널 0(Channel 0) 내의 프리 페이지들의 수보다 크면, 메모리 채널 0(Channel 0) 내의 프리 페이지들의 수는 티켓의 값으로부터 감산되는 동작 710이 진행될 수 있다. 동작 712에서, 동작 712에서, 방법은 다음 채널로 이동하기 위해 채널 식별자(ID)를 증가시킬 수 있다. 동작은, 티켓의 값이 채널 식별자(ID)에 의해 식별되는 바와 같이 현재 메모리 채널 내의 프리 페이지들의 수보다 작거나 같을 때까지, 동작 708, 동작 710, 및 동작 712가 반복된다. 동작 708에서, 티켓의 값이 현재 메모리 채널에서 프리 페이지들의 수보다 작거나 같으면, 현재 채널 식별자(ID)에 의해 표시된 메모리 채널 내의 프리 페이지들의 수가 1만큼 감소될 수 있는 동작 714가 진행될 수 있다. 그 후, 방법은 채널 식별자(ID) 를 메모리 채널의 다음 페이지를 할당하는 메모리 채널로서 리턴함으로써 동작 716에서 종료할 수 있다.
도 7 에 도시된 방법은 하나 이상의 메모리 페이지를 할당하기 위해 메모리채널이 선택될 때마다 반복될 수 있다.
도 8은 본 개시의 예시적인 실시예들에 따른 LUCFS(Least Used Channel First Service) 채널 선택 방법의 예시적인 실시예를 예시한다. 임의의 채널 선택 로직을 구현하기 위해, 도 8에 도시된 LUCFS(Least Used Channel First Service) 정책이 사용될 수 있다. 도 8에 도시된 실시예에서, 4개의 메모리 채널들(Channel 0, Channel 1, Channel 2, and Channel 3)이 있을 수 있으나, 이에 한정되는 것은 아니다. 방법의 초기 단계에서, 메모리 채널들(Channel 0, Channel 1, Channel 2, and Channel 3)은 각각 1000개, 3000개, 1500개, 및 500개의 프리 페이지를 가질 수 있다. 그래서, 전체 6000개의 프리 페이지가 있을 수 있다. 도 8에 도시된 방법은 가장 적게 사용된 채널을 선택할 수 있다. 예를 들어, 그 채널은 LUCFS 정책을 이용한 화살표(657)에 의해 나타낸 프리 페이지들의 가장 높은 개수를 포함할 수 있다.
도 9는 본 개시의 예시적인 실시예들에 따른, LUCFS 채널 선택 정책을 구현하기 위한 방법의 예시적인 실시예를 도시한다. 도 9에 도시된 실시예는 임의의 채널 선택 로직을 구현하는데 이용될 수 있다.
방법은 동작 902에서 시작한다. 동작 904에서, 방법은 변수들(Most_count, ID, and Temp_ID)을 0으로 초기화한다. 동작 906에서, 방법은 변수(Temp_ID)를 채널의 전체 개수를 나타내는 채널 카운트(Channel_count)와 비교한다. 변수(Temp_ID)가 채널 카운트(Channel_count)보다 작으면, 변수(Most_count)를 채널 식별자(ID)에 의해 지시된 채널 내의 프리 페이지들의 개수를 나타내는 페이지 카운트(Page_count[ID])와 비교하는 동작 908이 진행된다. 만약 변수(Most_count)가 페이지 카운트(Page_count[ID])보다 작으면, 변수(Most_count)를 현재 채널 내의 프리 페이지들의 개수로 세팅하는 동작 910이 진행된다. 동작 912에서, 식별자(ID)의 값은 변수(Temp_ID)로 세팅된다. 동작 914이 진행된다.
그러나, 만약, 동작 908에서 변수(Temp_ID)가 페이지 카운트(Page_count[ID])보다 크거나 같으면, 동작 914이 진행된다.
동작 914에서, 변수(Temp_ID)의 값은 1만큼 증가된다. 그리고 동작 906이 진행된다. 동작 906에서, 변수(Temp_ID)가 채널 카운트(Channel_count)보다 크거나 같을 때까지, 동작 908, 동작 914, 동작 910, 및 동작 912가 반복된다.
현재 채널 식별자(id)에 의해 지시된 채널 내의 프리 페이지들의 개수를 1만큼 감소시키는 동작 916이 진행된다. 그런 다음 채널 식별자(id)를 다음 페모리 페이지를 할당할 채널로 반환하여 동작 918이 종료된다.
도 9에 도시된 방법은 채널을 선택하여 하나 이상의 메모리를 할당할 때마다 반복할 수 있다.
도 10a는 본 개시의 예시적인 실시예들에 따라 동일한 채널에 속하는 다수의 연속적인 페이지들을 갖는 페이지 프레임 넘버링 방식의 예시적인 실시예를 도시한다. 도 10a에 도시된 실시예는, 예를 들어, 연속된 두 페이지가 동일한 채널에 속하는 도 4b와 관련하여 위에서 설명한 스킴을 사용하여 구현될 수 있다. 도 10a에 도시된 실시예는, 도 11 및 도 12에 도시된 메모리 할당 스킴들을 구현하는데 이용될 수 있다.
도 10a을 참조하면, 대응하는 PFN에 도시된 바와 같이, 연속적인 메모리의 처음 32 페이지는 2^0 개의 연속 페이지, 2^1 개의 연속 페이지, 2^2 개의 연속 페이지, 2^3 개의 연속 페이지, 및 2^4 개의 연속 페이지를 갖는 버디 그룹(buddy group)에 배열될 수 있다. 할당된 페이지들(예를 들어, PFN 4, PFN 10)은 음영으로 표시된다. 도 10a에 도시된 실시예에서, 전체 15개의 메모리 채널들이 있다(Ch ID 0 내지 Ch ID15로 표시됨). 그리고 2개의 연속 페이지들이 각 메모리 채널에 속한다. 그래서, 메모리의 처음 32 페이지들(PFN 0 내지 PFN 15)는, 16개의 메모리 채널에 쌍으로 맵핑된다. 이러한 패턴은 16개의 메모리 채널들에 쌍으로 맵핑되는 다음 32페이지들(PFN 32 내지 PFN 63)에 대해 계속된다.
도 11은 본 개시의 예시적인 실시예들에 따른 버디 메모리 할당 방식의 예시적인 실시예를 도시한다. 도 11에 도시된 실시예는, 도 1에 도시된 실시예를 이용하여 구현될 수 있다. 도 11에 도시된 실시예에 있어서, 전체 16개의 메모리 채널들이 있고, 비할당된 페이지들(예를 들어, 비할당된 페이지들은 도 10a에 도시됨)이 프리 페이지들의 그룹 계층 구조로 정렬될 수 있다. 여기서, 계층의 각 순서(수준)은 연속적인 프리 페이지 수에 대응된다. 그래서, 각각의 프리 페이지 5 및 프리 페이지 11은 순서 2^0에 놓일 수 있다(2^0 = 1 연속적인 프리 페이지(consecutive free page)). 페이지 그룹들 6 내지 7 및 8 내지 9는 순서 2^1에 놓일 수 있다(2^1 = 2 연속적인 프리 페이지). 페이지 그룹들 0 내지 3 및 12 내지 15는 순서 2^2에 놓일 수 있다(2^2 = 4 연속적인 프리 페이지). 페이지 그룹들 16 내지 31은 순서 2^4에 놓일 수 있다(2^4 = 16 연속적인 프리 페이지).
동작 1102에서, 도 11에 도시된 스킴은 프로세스로부터 단일 페이지에 대한 메모리 할당 요청을 수신할 수 있다(프로세스는 콜러(Caller)로 지칭될 수 있다.). 메모리 할당 요청은 구체적인 저장 장치를 특정할 수 있다(예를 들어, 구체적인 존 및/또는 구체적인 노드). 동작 1104에서, 스킴은 요청(예를 들어, 요청된 페이지들의 수)에 기초하여 메모리 할당 함수(alloc_pages(order))를 호출(invoke)할 수 있다. 동작 1104에서, 스킴은 메모리 할당 요청에 대한 서비스를 수행하기 위해 특정 페이지를 선택할 수 있다. 도 11에 도시된 스킴이 버디 메모리 할당 스킴(buddy memory allocation scheme)을 구현할 수 있기 때문에, 페이지들이 속할 수 있는 채널에 관계 없이 계층 구조의 가장 낮은 순서부터 요청된 페이지들의 수를 할당하는 것이 시도될 수 있다. 그래서, 동작 1104에서 수신된 요청은 단일 페이지를 위한 것이므로, 도 11에 도시된 스킴은 순서(또는 레벨) 2^0으로부터 페이지 5를 선택할 수 있다. 그러나, 메모리의 단일 페이지에 대한 후속 메모리 할당 요청에 응답하여, 도 11에 도시된 스킴은 페이지 5와 동일한 메모리 채널에 위치한 페이지 11을 선택할 수 있다. 따라서, 도 11에 도시된 스킴은 메모리 채널 간에 할당된 메모리 페이지의 불균일한 분포를 초래할 수 있다.
도 12는 본 개시의 예시적인 실시예들에 따른 메모리 할당 방식 인식 활용의 예시적인 실시예를 도시한다. 도 12에 도시된 실시예는, 예를 들어, 도 2a, 도 2b, 도 3, 도 5, 도 6, 도 7, 도 8 및/또는 도 9에 도시된 임의의 실시예를 이용하여 구현될 수 있다.
도 12에 도시된 실시예에서, 비할당된 페이지들(예를 들어, 비할당된 페이지는 도 10에 도시됨)은 페이지들이 위치한 채널을 기초로 리스트에 배열될 수 있다. 리스트는, 차례로, 각 리스트 내의 연속적이 프리 페이지들의 수에 기초하여 계층 구조 내에 배열될 수 있다. 따라서, 순서(레벨) 2^0에서 16개의 리스트가 존재하고, 순서 2^1에서 16개의 리스트가 존재하고, 순서 2^2에서 8개의 리스트가 존재하고, 순서 2^3에서 4개의 리스트가 존재하고, 순서 2^4에서 2개의 리스트가 존재하고, 순서 2^5에서 1개의 리스트가 존재한다. 채널 번호의 오른쪽에 있는 박스(box)의 개수는 해당 채널에 대응되는 프리 페이지들을 나타내며, 해당 채널은 목록이 위치한 순서에 따라 여러 개의 연속된 프리 페이지가 있는 그룹으로 정렬된다.
순서 2^0 및 순서 2^1은 동일한 리스트의 개수를 가질 수 있다. 이는, 동적 맵핑 스킴에서, 두 페이지들은 각 연속적인 채널에 속하기 때문이다. 따라서, 요청된 페이지의 PFN(1229)에 대한 채널 ID(1244)는 PFN의 비트 1 내지 비트 4와 함께 정렬될 수 있다.
동작 1202에서, 스킴은 장치 메모리의 하나 이상의 페이지들 할당 요청(1218)을 수신할 수 있다. 그리고, 스킴은 멀티플 저장 장치들의 상대적인 활용에 기초하여 요청된 메모리를 할당하기 위한 저장 장치를 선택할 수 있다. 동작 1202가, 아래의 임의의 장치 선택 로직(예를 들면 도 2에 도시된 장치 선택 로직(230) 및/또는 도 3에 도시된 장치 선택 로직(3230))에 의해 수행될 수 있다. 장치 선택 로직은 채널들(Ch 0 내지 Ch 15)이 위치한 저장 장치를 선택한 것으로 가정할 수 있다.
동작 1204에서, 스킴은 요청 순서에 기초하여 메모리 할당 기능(alloc_pages(order))을 호출할 수 있다.
동작 1206에서, 스킴은 메모리 할당 요청에 대한 서비스를 수행하기 위해 선택된 저장 장치 내의 특정 채널을 선택하기 위한 채널 선택 로직을 호출할 수 있다. 동작 1206이, 임의의 채널 선택 로직(예를 들면, 도 2에 도시된 채널 선택 로직(209) 및/또는 도 3에 도시된 채널 선택 로직(309))이 수행될 수 있다. 설명을 위하여, 이 실시예에서 요청은 메모리의 단일 페이지에 대한 것일 수 있다. 그리고, 채널 선택 동작에 의해 선택된 채널은 "Ch ID(11)"인 것으로 가정한다.
할당할 메모리의 페이지를 선택하기 위해, 페이지 할당 로직은 순서 2^0에서 시작하고, 채널(11) 안의 프리 메모리(또는 빈 메모리)의 페이지에 대한 순서 2^0에서의 리스트를 체크할 수 있다. 일부 실시예들에서, 예를 들면, 페이지 할당 로직은, 로직을 채널에 대응하는 리스트에 직접적으로 가져가기 위해, 채널 ID를 리스트의 테이블 또는 리스트의 리스트에 대한 인덱스로 사용할 수 있다. 프리 페이지가 순서 2^0에서의 채널 11에서 발견되지 못한 경우, 페이지 할당 로직은 채널 11에서의 프리 메모리의 페이지를 찾기 위해 순서 2^1(레벨 1)으로 진행할 수 있다. 순서 2^1에서 채널 11에 대하여 프리 페이지가 발견되지 않았으므로, 페이지 할당 로직은, 채널 11에서 프리 페이지를 찾을 때까지 또는 가장 높은 순서(예를 들면, 순서 2^5 또는 레벨 5)가 될 때까지, 계층 위로 계속해서 진행할 수 있으며, 이 경우, 페이지 할당 로직은 실패 지시자(failure indication)를 반환할 수 있다.
채널 ID를 프리 메모리 페이지에 대한 리스트를 체크하기 위한 인덱스로 사용함으로써, 인덱스는 1비트를 오른쪽으로 이동하여 각 순서에 맞게 조정될 수 있다. 그래서, 순서 2^2에서 체크하기 위해, "채널 ID(11)"1비트 만큼 오른쪽으로 이동될 수 있다. 왜냐하면 "채널 ID(5)"는 채널 11 내의 프리 페이지에 대한 리스트를 체크하기 위해 사용될 정확한 인덱스가 되기 때문이다. 그래서 "채널 ID(5)"는, 순서 2^3 및 순서 2^4 각각에서의 리스트를 체크하기 위해, "채널 ID(2)"으로 오른쪽 이동된 다음"채널 ID(1)"으로 오른쪽 이동될 수 있다. 순서 2^5에서, 체크할 리스트가 오직 하나일 수 있다. 따라서, 인덱스가 필요하지 않을 수 있다. 맵핑 스킴이 각 채널에 속한 두 연속적인 페이지들을 맵핑하므로, 순서 2^4와 순서 2^1 사이에 이동이 필요하지 않다.
이러한 예시에서, 페이지 할당 로직은 순서 2^4에서의 채널 11 내에 16개의 연속된 프리 페이지들(PFN 15 내지 PFN 31)에 위치할 수 있다. 페이지 할당 로직은 채널 11 내에 연관된 프리 페이지들 중 하나를 선택할 수 있다. 그리고 페이지 할당 로직은 할당된 페이지를 요청 프로세스에 반환할 수 있다. 페이지 할당 로직은, 도 10b에 도시된 할당된 선택된 페이지의 상태를 반영하기 위해, 도 10a에 도시된 PFN 맵핑을 업데이트할 수 있다.
따라서, 도 11에 도시된 실싱예에서 PFN(5)를 선택하는 대신, 도 12에 도시된 실시예는 페이지들(PFN 16 내지 PFN 31) 중 하나를 선택할 수 있다. 구체적인구현 방식에 따라, 도 11에 도시된 실시예에 비하여 페이지 분배가 더 고르게 이루어질 수 있으며, 이는 계층 하단에서 단일 페이지를 계속 할당하여 해당 페이지가 위할 수 있는 채널에서 페이지 배분이 클러스터링되도록 한다.
다른 예를 들어, 만약 동작 1206에서 채널 선택 로직이 메모리의 단일 페이지를 할당하기 위해 채널 0(Ch ID(0))을 선택한 경우, 페이지 할당 로직은 순서 2^0(레벨 0)에서 프리 페이지를 검색하는 것을 시작할 수 있다. 왜냐하면 순서 2^0에서 채널 0에대한 리스트 내에서 프리 페이지가 없기 때문에, 페이지 할당 로직은, 채널 0 내에서 프리 메모리의 페이지를 찾기 위해 순서 2^1(레벨 1)를 진행할 수 있다. 레벨 0과 레벨 1 사이에는 이동이 수행되지 않는다. 순서 2^1에서 채널 0에 대한 프리 페이지가 발견되지 않았으므로, 페이지 할당 로직은 순서 2^2(레벨 2)를 계속할 수 있다. 0을 인덱스로 이동시키면, 단순히 0이라는 결과가 된다. 순서 2^2에서, 페이지 할당 로직은 채널 0에 대한 리스트 내에서 페이지 0 및 1를 찾을 수 있다. 따라서, 페이지 할당 로직은 페이지 0 또는 페이지 1 중 어느 하나를 할당할 수 있다. 그 다음, 할당된 선택된 페이지의 상태를 반영하기 위해 도 10에 도시된 PFN 맵핑을 업데이트할 수 있다(채널 0 및 채널 1(Ch0~Ch1)에 대한 리스트 내의 PFN 2 및 PFN 3이 채널 1에 할당된다.).
도 12에 도시된 페이지 할당 동작들은, 예를 들어 임의의 페이지 할당 로직(예를 들면, 도 2에 도시된 페이지 할당 로직(211) 및/또는 도 3에 도시된 페이지 할당 로직(311))에 의해 구현될 수 있다.
도 13a는 본 개시의 예시적인 실시예들에 따른 어드레스 인터리빙 방식의 일 실시예를 도시한다. 도 13에 도시된 실시예는 물리적 메모리 맵 내에서 4-비트 메모리 주소들(1304)에 대한 데이터(1302)를 나타낸다. 4-비트 어드레스의 2개의 LSB(Least Significant Bit)들은, 모듈의 어드레스를 제공할 수 있다. 4-비트 어드레스의 2개의 MSB(Most Significant Bits)들은 모듈 내에서의 로우(Row) 어드레스를 제공할 수 있다. 예를 들면, 4-비트 어드레스 0001에서(이는 데이터 "20"을 포함한다.), 2개의 LSB들 "01"은 모듈 01을 가리키고, 2개의 MSB들 "00"은 모듈 01의 로우 00을 가리킬 수 있다.
도 13b는 본 개시의 예시적인 실시예들에 따른 어드레스 인터리빙 방식의 다른 실시예를 도시한다. 도 13b에 도시된 실시예는 4-비트 메모리 어드레스들(1304)에서 동일한 데이터(1302)를 나타낸다. 그러나, 도 13b에 도시된 실시예에서, 4-비트 어드레스의 2개의 내부 비트들(예를 들어, 제2 및 제3 비트들)은 모듈의 어드레스를 제공하고, 4-비트 어드레스의 2개의 외부 비트들(예를 들어 제1 및 제4 비트들)은 모듈 내의 로우의 어드레스를 제공할 수 있다. 예를 들면, 4-비트 어드레스 0001(이는 데이터 "20"을 포함한다.)에서, 2개의 내부 비트들 00은 모듈 00을 가리키고, 2개의 외부 비트들 01은 모듈 00의 로우 01을 가리킨다.
도 13a 및 도 13b에 도시된 인터리빙 스킴들의 실시예들은, 예를 들어, 본 개시의 예시적인 실시예들에 따른 메모리 시스템에서 인터리빙을 구현하기 위해 사용될 수 있다. 예를 들면, 메모리 시스템의 일부 실시예들에서, 모듈에 대한 어드레스 비트들은 장치(예를 들어, 장치 비트들)를 위해 사용될 수 있다. 그리고, 모듈 내에서 로우에 대한 어드레스 비트들은 장치(예를 들어, 채널 비트들) 내의 채널을 위해 사용될 수 있다.
도 14a는 본 개시의 예시적인 실시예들에 따른 디바이스 인터리빙을 갖는 어드레싱 방식의 실시예를 도시한다. 도 14a에 도시된 실시예는 호스트(1402), 시스템 메모리(1405), 및 하나 이상의 저장 장치들(1404_0, 1404_1, ??, 1404_n)을 포함할 수 있다. 하나 이상의 저장 장치들(1404_0, 1404_1, ??, 1404_n)는 시스템 메모리(1405)(예를 들어, DRAM으로 구현될 수 있는 호스트 메모리)를 포함하는 물리적 메모리 맵(1415) 내의 장치 부착 메모리(1412)로 맵핑될 수 있다.
도 14a에 도시된 바와 같이 장치 인터리빙이 인에이블되면, 물리적 메모리맵(1415)의 연속된 페이지들은, 저장 장치들(1404_0, 1404_1, ??, 1404_n)에 속한다(물리적 메모리맵(1415)에서 SD 0, ??, SD n을 가리키는 페이지들은 각각 저장 장치들(SD 0, ??, SD n)에 속한다). 이는 개별 저장 장치들(204_1, ??, 204_n)이 물리적 메모리 맵(215) 내의 장치 부착 메모리(212)의 개별 영역들(214_1, ??, 214_n)에 맵핑될 수 있는 도 2b에 도시된 실시예와 대조적일 수 있다.
도 14A에 도시된 스킴은, 예를 들어, 도 2b 및 도 3에 도시된 것들과 같은 본 명세서에 개시된 장치 선택 로직을 갖는 임의의 메모리 할당기와 함께 사용될 수 있다.
도 14b는 본 개시의 예시적인 실시예들에 따른 디바이스 인터리빙 및 채널 인터리빙을 갖는 어드레싱 방식의 실시예를 도시한다. 도 14b에 도시된 실시예는 호스트(1402), 시스템 메모리(1405), 및 하나 이상의 저장 장치들(1404_0, 1404_1, ??, 1404_n)을 포함할 수 있다. 하나 이상의 저장 장치들(1404_0, 1404_1, ??, 1404_n)은 시스템 메모리(1405)(예를 들어, DRAM으로 구현될 수 있는 호스트 메모리)를 포함하는 물리적 메모리 맵(1415) 내의 장치 부착 메모리(1412)로 맵핑될 수 있다.
도 14A에 도시된 디바이스 인터리빙처럼, 도 14b에 도시된 스킴은 물리적 메모리 맵(1415)의 연속된 페이지들이 서로 다른 저장 장치들(1404_0, 1404_1, ??, 1404_n)에 속하는 디바이스 인터리빙을 포함할 수 있다. 그러나, 도 14b에 도시된 스킴은 또한 각 저장 장치 내의 채널들이 도 14b에 도시된 연속적인 채널 어드레스들에 리맵핑되는 채널 인터리빙을 포함할 수 있다. 이러한 실시예에서, 장치 선택 로직은 필요하지 않을 수 있다. 대신에, 채널 선택 로직은 저장 장치들(1404_0, 1404_1, ??, 1404_n) 중 일부 또는 전부에 걸쳐 임의의 채널들을 선택할 수 있다.
도 14b에 도시된 스킴은, 예를 들어 도 2b 및 도 3에 도시된 것들과 같은 본 명세서에 개시된 채널 선택 로직을 갖는 임의의 메모리 할당기와 함께 사용될 수 있다.
일부 실시예들에서, 본 개시의 예시적인 실시예들에 따른 메모리 시스템 내의 하나 이상의 저장 장치들은, 도 4a 내지 도 4c, 도 13a 내지 도 13b 및/또는 도 14a 내지 도 14b에 도시된 하나 이상의 어드레스 인터리빙 스킴들을 실행할 수 있다. 어드레스 인터리빙 스킴은, 예를 들어 저장 장치 및/또는 BIOS(Basic Input/Output System)에 의해 결정될 수 있다. 일부 실시예들에서, 저장 장치는 호스트로 사용할 수 있는 하나 이상의 어드레스 인터리빙 스킴들을 보고할 수 있다. 호스트(예를 들어, 호스트는 장치 선택 로직, 채널 선택 로직, 및/또는 페이지 할당 로직을 포함할 수 있다.) 내의 메모리 할당기는 저장 장치에 의해 사용되는 하나 이상의 어드레스 인터리빙 스팀들로 본 명세서에 개시된 활용 인식 메모리 할당 방식들 중 임의의 것을 조정할 수 있다. 구체적인 구현 방식에 따라, 이는 메모리 할당기가 보다 효율적으로 활용 인식 메모리 할당 방식을 관리하게 할 수 있다.
도 15는 본 개시의 예시적인 실시예들에 따른 메모리 할당 방식 인식 활용을 구현하는데 사용될 수 있는 호스트 장치의 예시적인 실시예를 도시한다. 도 15에 도시된 호스트 장치(1500)는 메모리 제어기(1504), 시스템 메모리(1506), 장치 선택 로직(1508), 가상 메모리 로직(1510), 메모리 할당기(1512), 및/또는 인터커넥트 인터페이스(1514)를 포함할 수 있는 프로세서(1502)를 포함할 수 있다. 이는 예를 들어, CXL을 이용하여 구현될 수 있다. 도 15에 예시된 컴포넌트들 중 임의의 것 또는 모두는 하나 이상의 시스템 버스들(1516)을 통해 통신할 수 있다. 일부 실시예들에서, 도 15에 도시된 호스트 장치(1500)는 활용에 기초하여 디바이스 및/또는 채널 선택 베이스를 포함하는 본 명세서에 개시된 임의의 호스트 기능을 구현하는데 사용될 수 있다. 일부 실시예들에서, 도 15에 도시된 컴포넌트들 중 하나 이상은 다른 컴포넌트들을 사용하여 구현될 수 있다. 예를 들어, 일부 실시예들에서, 장치 선택 로직(1508), 가상 메모리 로직(1510), 및/또는 메모리 할당기(1512) 중 하나 이상은, 예를 들어, 시스템 메모리(1506) 또는 다른 메모리에 저장된 명령들을 실행하는 프로세서(1502)에 의해 구현될 수 있다.
도 16은 본 개시의 예시적인 실시예들에 따른 가비지 컬렉션 동작을 위한 페이지 재배치 스킴을 구현하는데 사용될 수 있는 저장 디바이스의 예시적인 실시예를 도시한다. 저장 장치(1600)는 장치 제어기(1602), 미디어 변환 계층(1604), 저장 미디어(1606), 및 인터커넥트 인터페이스(1608)를 포함할 수 있다. 도 16 에 예시된 컴포넌트들은 하나 이상의 디바이스 버스(1610)를 통해 통신할 수 있다. 일부 실시예들에서, 저장 미디어(1606)의 일부 또는 전부를 위해 플래시 메모리를 사용할 수 있는 일부 실시예들에서, 미디어 변환 계층(1604)은 부분적으로 또는 전체적으로 플래시 변환 계층(FTL)으로 구현될 수 있다. 일부 실시예들에서, 도 16에 도시된 저장 장치(1600)는 본원에 개시된 활용 인식 메모리 할당에 관련된 임의의 디바이스-측 기능성을 구현하는데 사용될 수 있다. 예를 들어, 장치 제어기(1602) 및/또는 미디어 변환 계층(1604)은 코어 선택 로직, 채널 선택 로직, 페이지 할당 로직, 및/또는 이와 유사한 것의 일부 또는 전부를 구현하는데 사용될 수 있다.
본 명세서에 기능적으로 기재된 것들은 호스트 기능, 장치 기능, 및/또는 도 1 내지 도 17에 대응되는 기술을 포함한다. 예를 들면, 장치 선택 로직, 채널 선택 로직, 페이지 할당 로직 등은 하드웨어, 소프트웨어, 또는 임의의 조합 로직으로 구현될 수 있다. 임의의 조합 로직은, 컴비네이셔널 로직, 시퀀셜 로직, 하나 이상의 타이머들, 카운터들, 레지스터들, 상태 머신들, DRAM 및/또는 SRAM(static random access memory)과 같은 휘발성 메모리들, 비휘발성 메모리 및/또는 어떠한 조합들, CPLDs(Complex Programmable Logic Devices), FPGAs(Field Programmable Gate Arrays), ASICs(Application Specific Integrated Circuits), CPUs(Central Processing Units), x86 processors와 같은 CISC(Complex Instruction Set Computer) 프로세서, 및/또는 ARM 프로세서와 같은 RISC(Reduced Instruction Set Computer) 프로세서, GPUs(Graphics Processing Units), NPUs(Neural Processing Units), 임의의 타입의 메모리에 저장된 명령들을 실행할 수 있는 것 등을 포함할 수 있다. 일부 실시예들에서, 하나 이상의 구성들은 SoC(System-on-Chip)로 구현될 수 있다.
여기서 개시된 임의의 저장 장치들은, SATA(Serial ATA), SCSI(Small Computer System Interface), SAS(Serial Attached SCSI), U.2 등과 같은 임의의 커넥터 구성을 이용하여, 3.5 인치, 2.5 인치, 1.8 인치, m.2, EDSFF(Enterprise and Data Center SSD Form Factor), NF1 등과 같은 임의의 폼 펙터로 구현될 수 있다.
여기서 개시된 임의의 저장 장치들은, 서버 섀시, 서버 랙, 테이터룸, 데이터센터, 에지 데이터센터, 모바일 에지 데이터센터, 및/또는 이들의 임의의 조합들과 함께 전체적으로 또는 부분적으로 구현될 수 있다.
여기서 개시된 임의의 저장 장치들은, PCIe(Peripheral Component Interconnect Express), NVMe(Nonvolatile Memory Express), NVMe-Of(NVMe-over-fabric), 이더넷, TCP/IP(Transmission Control Protocol/Internet Protocol), RDMA(Remote Direct Memory Access), ROCE(RDMA over Converged Ethernet), FibreChannel, InfiniBand, SATA, SCSI, SAS, iWARP, 이들의 조합을 포함하는 임의의 인터페이스들 및/또는 프로토콜을 통해 통신할 수 있다.
도 17은 본 개시의 예시적인 실시예들에 따른 메모리 시스템 동작에서 페이지 관리를 위한 방법의 일 실시예를 도시한다. 방법은 동작 1702에서 시작할 수 있다. 동작 1704에서, 방법은, 프로세스로부터, 제1 채널 활용을 갖는 제1 채널 및 제2 채널 활용을 갖는 제2 채널을 구성하는 메모리 시스템에 대한 메모리 할당 요청을 수신할 수 있다. 일부 실시예에서, 제1 및 제2 채널들은, 예를 들어 저장 장치 안에서 구현될 수 있다. 동작 1706에서, 방법은, 제1 채널 활용 및 제2 채널 활용을 기초로, 제1 채널을 선택할 수 있다. 일부 실시예들에서, 제1 채널은 균형 랜덤 정책, LUCFS 정책 등을 기초로 선택될 수 있다. 동작 1708에서, 방법은 제1 채널로부터 메모리의 페이지 페이지를 프로세스에 할당한다. 일부 실시예에서, 할당된 페이지는 제1 채널에서 동적으로 맵핑될 수 있다.
도 17에 도시된 실시예는, 아래에서 기술된 모든 다른 실시예들 뿐만 아니라, 예시적인 동작들 및/또는 구성들이다. 일부 실시예들에서, 일부 동작들 및/또는 구성들은 생략될 수 있고, 다른 동작들 및/또는 구성들이 포함될 수도 있다. 게다가, 일부 실시예들에서, 동작들 및/또는 구성들의 시간적 및/또는 공간적 순서는 변경될 수 있다. 비록 일부 구성들 및/또는 동작들이, 일부 실시예들에서, 개별 구성들로서 도시될 수 있으나, 개별적으로 도시된 일부 구성들 및/또는 동작들이 단일 구성들 및/또는 동작들로 통합될 수 있다. 단일 구성들 및/또는 동작들로 나타낸 일부 구성들 및/또는 동작들은 멀티플 구성들 및/ 동작들로 구현될 수도 있다.
상기 개시된 일부 실시예들은, 다양한 구현 세부 사항들의 맥락에서 기술되어 있지만, 본 개시의 원리들은 이들 또는 임의의 다른 특정 사부 사항들에 제한되지 않는다. 예를 들어, 일부 기능성은 특정 컴포넌트들에 의해 구현되는 것으로 설명되어 있지만, 다른 실시예들에서, 기능성은 상이한 위치들 및 다양한 사용자 인터페이스들을 갖는 상이한 시스템들 및 컴포넌트들 사이에 분배될 수 있다. 특정 실시예들은, 특정 프로세스들, 동작들 등을 갖는 것으로 설명되어 있지만, 이들 용어들은 또한 특정 프로세스, 동작 등이 다수의 프로세스들, 동작들 등에 의해 구현될 수 있거나, 다수의 프로세스들, 동작들 등이 단일 프로세스, 단계 등에 통합될 수 있거나 컴포넌트 또는 엘리먼트에 대한 참조가 컴포넌트 또는 엘리먼트의 일부만을 지칭할 수도 있는 실시예들을 포함한다. 예를 들어, 블록에 대한 참조는전체 블록 또는 하나 이상의 서브 블록들을 지칭할 수도 있다. 본 개시와 청구범위에서 "제1" 및 "제2"과 같은 용어들의 사용은 그 용어들이 수정할 것들을 구별하는 목적을 위해서만 있을 수 있고, 문맥과는 달리 명백하지 않는 한 임의의 공간적 또는 시간적 순서를 나타내지 않을 수도 있다. 일부 실시예들에서, 사물에 대한 참조는 사물의 적어도 일부를 지칭할 수도 있다. 예를 들어, "~에 기초하여"는 "적어도 부분적으로"등으로 지칭될 수 있다. 제1 엘리먼트에 대한 참조는 제2 엘리먼트의 존재를 암시하지 않는다. 아래에서 기술된 원칙들은 독립적인 유용성을 가지고, 개별적으로 구현될 수 있으며, 모든 실시예는 모든 원리를 이용하지 않는다. 그러나, 원리들은 다양한 조합으로 구체화될 수 있으며, 그 중 일부는 개별 원칙의 장점을 시너지 방식으로 증폭시킬 수 있다.
상기 설명된 다양한 세부 사항들 및 실시예들은 본 개시에 따른 추가적인 실시예들을 생성하기 위해 결합될 수 있다. 본 개시의 원리들은 본 개시의 개념으로부터 벗어나지 않고 배열 및 상세히 수정될 수 있기 때문에, 그러한 변경들 및 수정들은 다음의 청구범위 내에 속하는 것으로 간주된다.

Claims (20)

  1. 메모리를 할당하는 방법에 있어서,
    프로세스로부터, 제1 채널 활용(first channel utilization)을 갖는 제1 채널 및 제2 채널 활용(second channel utilization)을 갖는 제2 채널을 포함하는 메모리 시스템에 대한 메모리 할당 요청을 수신하는 단계;
    상기 제1 채널 활용 및 상기 제2 채널 활용을 기초로, 제1 채널을 선택하는 단계; 및
    상기 프로세스에, 제1 채널로부터 메모리의 페이지를 할당하는 단계를 포함하는, 방법.
  2. 제1 항에 있어서,
    상기 선택하는 단계는,
    균형 랜덤 정책을 기초로 상기 제1 채널을 선택하는 것을 특징으로 하는, 방법.
  3. 제1 항에 있어서,
    상기 선택하는 단계는,
    난수 및 프리 페이지들의 개수를 기초로 티겟을 생성하는 단계;
    상기 티겟을 상기 제1 채널의 프리 페이지들의 개수와 비교하는 단계; 및
    비교한 결과를 기초로 상기 제1 채널을 선택하는 단계를 포함하는 것을 특징으로 하는, 방법.
  4. 제1 항에 있어서,
    상기 선택하는 단계는,
    LUCFS(Least Used Channel First Service) 정책을 기초로 상기 제1 채널을 선택하는 것을 특징으로 하는, 방법.
  5. 제1 항에 있어서,
    상기 선택하는 단계는,
    상기 제1 채널의 프리 페이지들의 제1 개수와 제2 채널의 프리 페이지들의 제2 개수를 비교하는 단계; 및
    비교한 결과를 기초로 상기 제1 채널을 선택하는 단계를 포함하는 것을 특징으로 하는, 방법.
  6. 제1 항에 있어서,
    상기 제1 채널로부터 상기 메모리의 페이지에 대한 페이지 프레임 넘버(page frame number)는 채널 식별자부를 포함하는 것을 특징으로 하는, 방법.
  7. 제1 항에 있어서,
    상기 메모리 할당 요청은, 요청된 순서를 포함하고,
    상기 할당하는 단계는, 페이지들의 하나 이상의 리스트들의 제1 그룹을 체크하는 단계를 포함하고,
    상기 제1 그룹의 상기 페이지들의 하나 이상의 리스트들은 제1 순서에 기초하고 채널에 의해 배열되는 것을 특징으로 하는, 방법.
  8. 제7 항에 있어서,
    상기 제1 그룹의 상기 페이지들의 하나 이상의 리스트들의 상기 제1 채널에 대응하는 제1 리스트는, 요청된 순서의 페이지에 대한 엔트리를 포함하고,
    상기 할당하는 단계는, 상기 제1 그룹의 상기 페이지들의 하나 이상의 리스트들의 상기 제1 리스트로부터 상기 요청된 순서의 페이지를 상기 프로세스에 할당하는 단계를 더 포함하는 것을 특징으로 하는, 방법.
  9. 제7 항에 있어서,
    상기 할당하는 단계는, 페이지들의 하나 이상의 리스트들의 제2 그룹을 체크하는 단계를 더 포함하고,
    상기 제2 그룹의 상기 페이지들의 하나 이상의 리스트들은, 제2 순서에 기초하고 채널에 의해 배열되는 것을 특징으로 하는, 방법.
  10. 제9 항에 있어서,
    상기 제2 그룹의 상기 페이지들의 하나 이상의 리스트들의 상기 제1 채널에 대응하는 제1 리스트는, 요청된 순서의 페이지에 대한 엔트리를 포함하고,
    상기 할당하는 단계는, 상기 제2 그룹의 상기 페이지들의 하나 이상의 리스트들의 상기 제1 리스트로부터 상기 요청된 순서의 페이지를 상기 프로세스에 할당하는 단계를 더 포함하는 것을 특징으로 하는, 방법.
  11. 제1 항에 있어서,
    상기 메모리 시스템은, 제1 미디어 코어 및 제2 미디어 코어를 더 포함하고,
    상기 제1 채널은, 상기 제1 미디어 코어에 연관되고,
    상기 제2 채널은, 상기 제2 미디어 코어에 연관되는 것을 특징으로 하는, 방법.
  12. 제1 항에 있어서,
    상기 메모리 시스템은, 제1 장치 활용(first device utilization)을 갖는 제1 장치 및 제2 장치 활용(second device utilization)을 갖는 제2 장치를 더 포함하고,
    상기 제1 채널 및 상기 제2 채널은, 상기 제1 장치에 연관되고,
    상기 방법은,
    상기 제1 장치 활용 및 상기 제2 장치 활용을 기초로, 상기 메모리 할당 요청에 대하여 제1 장치를 선택하는 단계를 더 포함하는 것을 특징으로 하는, 방법.
  13. 시스템에 있어서,
    디바이스 인터페이스, 제1 채널 활용을 갖는 제1 채널, 및 제2 채널 활용을 갖는 제2 채널을 포함하는 저장 장치; 및
    호스트 인터페이스, 프로세스로부터 메모리 할당 요청을 수신하도록 구성된 메모리 할당기를 포함하는 호스트; 및
    상기 메모리 할당 요청에 응답하여 상기 제1 채널 활용 및 상기 제2 채널활용을 기초로 제1 채널을 선택하도록 구성되고, 상기 프로세스에 상기 제1 채널의 메모리의 페이지를 할당하도록 구성된, 채널 선택 로직을 포함하는, 시스템.
  14. 제13 항에 있어서,
    상기 저장 장치는, 제1 장치 활용을 갖는 제1 저장 장치이고,
    상기 시스템은, 제2 장치 활용을 갖는 제2 저장 장치를 더 포함하고,
    상기 메모리 할당기는, 상기 제1 장치 활용 및 상기 제2 장치 활용을 기초로, 상기 메모리 할당 요청에 대하여 상기 제1 장치를 선택하도록 구성된 장치 선택 로직을 포함하는 것을 특징으로 하는, 시스템.
  15. 제13 항에 있어서,
    상기 장치 인터페이스는, 메모리 코히어런트 인터페이스(memory coherent interface)를 포함하고,
    상기 호스트 인터페이스는, 메모리 코히어런트 인터페이스를 포함하는 것을 특징으로 하는, 시스템.
  16. 제15 항에 있어서,
    상기 메모리의 페이지는 장치 부착 메모리로 구성되는 것을 특징으로 하는, 시스템.
  17. 제13 항에 있어서,
    상기 저장 장치는 제1 미디어 코어 및 제2 미디어 코어를 포함하고,
    상기 제1 채널은, 상기 제1 미디어 코어에 연관되고,
    상기 제2 채널은, 상기 제2 미디어 코어에 연관되는 것을 특징으로 하는, 시스템.
  18. 장치에 있어서,
    프로세스로부터, 메모리 할당 요청을 수신하도록 구성된 메모리 할당기를 포함하고,
    상기 메모리 할당기는,
    제1 메모리 채널의 제1 채널 활용 및 제2 메모리 채널의 제2 채널 활용을 기초로 상기 제1 메모리 채널을 선택하도록 구성되고, 상기 제1 메모리 채널로부터 메모리의 하나 이상의 페이지들을 상기 프로세스에 할당하도록 구성된, 채널 선택 로직을 포함하는 것을 특징으로 하는, 장치.
  19. 제18 항에 있어서,
    상기 제1 메모리 채널은, 제1 장치 활용을 갖는 제1 장치와 연관되고,
    상기 제2 메모리 채널은, 제2 장치 활용을 갖는 제2 장치와 연관되고,
    상기 메모리 할당기는,
    상기 제1 장치 활용 및 상기 제2 장치 활용을 기초로, 상기 메모리 할당 요청에 대하여 상기 제1 장치를 선택하도록 구성된 장치 선택 로직을 더 포함하는 것을 특징으로 하는, 장치.
  20. 제18 항에 있어서,
    상기 메모리 할당기는, 상기 메모리 할당 요청의 순서를 기초로 상기 제1 메모리 채널로부터 상기 메모리의 하나 이상의 페이지들을 할당하도록 구성된 페이지 할당 로직을 더 포함하는 것을 특징으로 하는, 장치.
KR1020220030954A 2021-07-13 2022-03-11 활용 인식 메모리 할당을 위한 시스템, 방법 및 장치 KR20230011212A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202163221468P 2021-07-13 2021-07-13
US63/221,468 2021-07-13
US17/507,775 2021-10-21
US17/507,775 US12008248B2 (en) 2021-07-13 2021-10-21 Systems, methods, and devices for utilization aware memory allocation

Publications (1)

Publication Number Publication Date
KR20230011212A true KR20230011212A (ko) 2023-01-20

Family

ID=81595630

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220030954A KR20230011212A (ko) 2021-07-13 2022-03-11 활용 인식 메모리 할당을 위한 시스템, 방법 및 장치

Country Status (5)

Country Link
US (1) US12008248B2 (ko)
EP (1) EP4120087B1 (ko)
KR (1) KR20230011212A (ko)
CN (1) CN115617501A (ko)
TW (1) TW202303400A (ko)

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8843691B2 (en) 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
WO2013088474A2 (en) * 2011-12-14 2013-06-20 Hitachi, Ltd. Storage subsystem and method for recovering data in storage subsystem
TWI520152B (zh) 2013-03-01 2016-02-01 慧榮科技股份有限公司 資料儲存裝置與快閃記憶體控制方法
US9779021B2 (en) 2014-12-19 2017-10-03 International Business Machines Corporation Non-volatile memory controller cache architecture with support for separation of data streams
US20170108911A1 (en) 2015-10-16 2017-04-20 Qualcomm Incorporated System and method for page-by-page memory channel interleaving
CN108628753B (zh) 2017-03-24 2021-02-23 华为技术有限公司 内存空间管理方法和装置
KR102691776B1 (ko) * 2019-10-01 2024-08-06 에스케이하이닉스 주식회사 메모리 시스템에서 멀티 스트림 동작을 제공하는 방법 및 장치
US11163453B2 (en) * 2019-11-01 2021-11-02 Samsung Electronics Co., Ltd. Memory device, memory system including memory device and vehicle-based system including memory system
US11789878B2 (en) 2019-12-19 2023-10-17 Intel Corporation Adaptive fabric allocation for local and remote emerging memories based prediction schemes
CN111176883B (zh) 2019-12-24 2022-05-20 中山大学 基于纠删码的闪存固态盘数据主动重构方法及读取方法

Also Published As

Publication number Publication date
EP4120087B1 (en) 2023-08-30
EP4120087A1 (en) 2023-01-18
CN115617501A (zh) 2023-01-17
TW202303400A (zh) 2023-01-16
US20230017019A1 (en) 2023-01-19
US12008248B2 (en) 2024-06-11

Similar Documents

Publication Publication Date Title
TWI674502B (zh) 記憶體系統及控制方法
JP6496626B2 (ja) 異種統合メモリ部及びその拡張統合メモリスペース管理方法
JP7159069B2 (ja) メモリシステムおよび制御方法
CN109144887B (zh) 存储器系统及控制非易失性存储器的控制方法
US8769190B1 (en) System and method for reducing contentions in solid-state memory access
JP2020046963A (ja) メモリシステムおよび制御方法
US10255191B2 (en) Logical memory address regions
CN114402282B (zh) 存取存储的元数据以识别存储数据的存储器装置
JP2019057155A (ja) メモリシステムおよび制御方法
KR20220041937A (ko) 메모리 유형에 대한 페이지 테이블 후크
JP2019057151A (ja) メモリシステムおよび制御方法
KR20220049026A (ko) 메모리 네임스페이스에 대한 데이터 바인딩을 위한 메모리 시스템
JP2020123038A (ja) メモリシステムおよび制御方法
JP7381678B2 (ja) メモリシステム
KR101823983B1 (ko) 메모리 디바이스들 및 방법들
US9740604B2 (en) Method for allocating storage space using buddy allocator
JP2021033845A (ja) メモリシステムおよび制御方法
JP2019212103A (ja) メモリシステム
CN113918087A (zh) 存储装置以及用于管理存储装置中的命名空间的方法
WO2018235149A1 (ja) ストレージ装置及び記憶領域管理方法
US12008248B2 (en) Systems, methods, and devices for utilization aware memory allocation
JP7167295B2 (ja) メモリシステムおよび制御方法
JP7204020B2 (ja) 制御方法
US12111756B2 (en) Systems, methods, and apparatus for wear-level aware memory allocation
JP7490714B2 (ja) メモリシステムおよび制御方法