KR20170100488A - 영구 메모리 할당 및 구성 - Google Patents

영구 메모리 할당 및 구성 Download PDF

Info

Publication number
KR20170100488A
KR20170100488A KR1020177013596A KR20177013596A KR20170100488A KR 20170100488 A KR20170100488 A KR 20170100488A KR 1020177013596 A KR1020177013596 A KR 1020177013596A KR 20177013596 A KR20177013596 A KR 20177013596A KR 20170100488 A KR20170100488 A KR 20170100488A
Authority
KR
South Korea
Prior art keywords
memory
nvm
processor
partitions
management
Prior art date
Application number
KR1020177013596A
Other languages
English (en)
Other versions
KR102519904B1 (ko
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 KR20170100488A publication Critical patent/KR20170100488A/ko
Application granted granted Critical
Publication of KR102519904B1 publication Critical patent/KR102519904B1/ko

Links

Images

Classifications

    • 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
    • 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
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • G06F2212/2542Non-uniform memory access [NUMA] architecture
    • 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/7204Capacity control, e.g. partitioning, end-of-life degradation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/04Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Microelectronics & Electronic Packaging (AREA)

Abstract

영구 메모리를 할당 및/또는 구성하는 방법 및 장치가 설명된다. 실시예에서, 메모리 제어기 로직은 하나 이상의 속성에 적어도 부분적으로 기초하여 비휘발성 메모리를 복수의 파티션으로 구성한다. (애플리케이션 또는 운영 체제에 가시적인) 하나 이상의 볼륨은 복수의 파티션 중 하나 이상으로부터 형성된다. 하나 이상의 볼륨 각각은 하나 이상의 속성에서 적어도 하나의 유사한 속성을 갖는 복수의 파티션 중 하나 이상을 포함한다. 다른 실시예에서, 메모리 제어기 로직은 비휘발성 메모리(NVM) 듀얼 인라인 메모리 모듈(DIMM)을 영구 영역 및 휘발성 영역으로 구성한다. 다른 실시예들이 또한 개시되고 청구된다.

Description

영구 메모리 할당 및 구성{ALLOCATING AND CONFIGURING PERSISTENT MEMORY}
본 개시 내용은 일반적으로 전자 공학 분야에 관한 것이다. 특히, 일부 실시예는 일반적으로 영구(persistent) 메모리를 할당 및/또는 구성하는 것에 관한 것이다.
일반적으로, 컴퓨팅 시스템에서 데이터를 저장하는 데 이용되는 메모리는 (휘발성 정보를 저장하는) 휘발성 또는 (영구 정보를 저장하는) 비휘발성일 수 있다. 일반적으로, 휘발성 메모리에 저장된 휘발성 데이터 구조는 프로그램의 런타임 동안 프로그램의 기능성을 지원하도록 요구되는 일시 또는 중간 정보를 위해 이용된다. 한편, 비휘발성(또는 영구 메모리)에 저장된 영구 데이터 구조는 프로그램의 실행 시간을 초과하여 이용 가능하고 재이용될 수 있다. 또한, 새로운 데이터는, 사용자 또는 프로그래머가 이 데이터를 영구적인 것으로 하는 것을 결정하기 이전에, 먼저 휘발성 데이터로서 통상적으로 생성된다. 예를 들어, 프로그래머 또는 사용자가 프로세서에 의해 직접 액세스할 수 있는 휘발성 메인 메모리의 휘발성 구조의 매핑(즉, 인스턴스화)을 야기할 수 있다. 한편, 영구 데이터 구조는, 플래시 메모리와 같은 비휘발성 메모리 기반 디바이스 또는 입력/출력(I/O 또는 IO) 버스에 연결된 회전 디스크와 같은 비휘발성 스토리지 디바이스 상에서 인스턴스화된다.
프로세서에서 컴퓨팅 능력이 향상됨에 따라, 한가지 관심사항은 프로세서에 의해 메모리가 액세스될 수 있는 속도이다. 예를 들어, 데이터를 처리하기 위해, 프로세서는 먼저 메모리로부터 데이터를 인출할 필요가 있을 수 있다. 데이터 처리의 완료 이후에, 결과들은 메모리에 저장될 필요가 있을 수 있다. 따라서, 메모리 액세스 속도는 전체 시스템 성능에 대해 직접적으로 영향을 미칠 수 있다.
다른 중요한 고려 사항은 전력 소비이다. 예를 들어, 배터리 전력에 의존하는 모바일 컴퓨팅 장치에서, 디바이스가 이동하는 동안 동작하는 것을 허용하기 위해 전력 소비를 감소시키는 것은 매우 중요하다. 전력 소모는 또한 비이동(non-mobile) 컴퓨팅 디바이스에 대해서도 중요한데, 그 이유는 과도한 전력 소모가 (예를 들어, 부가적인 전력 이용, 증가되는 냉각 요건 등으로 인해) 비용을 증가시키고, 컴포넌트 수명을 단축시키고, 디바이스가 이용될 수 있는 위치를 제한하는 것 등을 할 수 있기 때문이다.
하드 디스크 드라이브는 상대적으로 저비용 스토리지 해결책을 제공하며, 비휘발성 스토리지를 제공하기 위해 많은 컴퓨팅 디바이스에서 사용된다. 그러나, 디스크 드라이브가 상대적으로 빠른 속도로 그 디스크를 회전시키고 디스크 헤드를 회전 디스크에 이동시켜 데이터를 판독/기입할 필요가 있기 때문에, 디스크 드라이브는 플래시 메모리 또는 고체 상태 드라이브와 같은 비휘발성 메모리와 비교할 때 많은 전력을 사용한다. 이러한 물리적 이동은 열을 발생시키며, 전력 소모를 증가시킨다. 또한 플래시 기반 드라이브는 하드 드라이브와 비교할 때 판독 및 기입 동작을 수행하는 것에서 더 빠르다. 이 때문에, 다수의 컴퓨팅 세그먼트는 비휘발성인 플래시 메모리 디바이스 쪽으로 넘어가고 있다.
상세한 설명은 첨부된 도면들을 참조하여 제공된다. 도면에서, 참조 번호 최좌측의 숫자(들)는 그러한 참조 번호가 처음으로 나오는 도면을 식별한다. 상이한 도면들에서 동일한 참조 번호를 사용하여 유사하거나 동일한 아이템들을 나타낸다.
도 1, 2, 5, 6 및 7은 본 명세서에서 논의되는 다양한 실시예들을 구현하는 데 이용될 수 있는 컴퓨팅 시스템의 실시예의 블록도를 도시한다.
도 3a는 실시예에 따라, 구성된 메모리 시스템의 블록도를 도시한다.
도 3b는 실시예에 따라 메모리를 구성하는 방법의 흐름도를 도시한다.
도 4a는 실시예에 따른 NVM 관리 아키텍처의 데이터센터 레벨 뷰를 도시한다.
도 4b는 실시예에 따른 2개의 관리 파티션의 블록도를 도시한다.
도 4c는 실시예에 따라 메모리를 구성하는 방법의 흐름도를 도시한다.
이하의 설명에서, 다양한 실시예들의 완전한 이해를 제공하기 위해 다수의 특정한 세부사항이 제시된다. 그러나, 다양한 실시예들은 특정한 세부사항들 없이 실시될 수 있다. 다른 경우들에서, 널리 공지된 방법들, 절차들, 컴포넌트들, 및 회로들은 특정한 실시예들을 모호하게 하지 않도록 상세히 설명되지 않는다. 또한, 실시예들의 다양한 양태들은 다양한 수단, 예컨대 집적 반도체 회로("하드웨어"), 하나 이상의 프로그램으로 체계화된 컴퓨터 판독 가능 명령어("소프트웨어"), 또는 하드웨어와 소프트웨어의 일부 조합을 이용하여 수행될 수 있다. 본 개시내용의 목적을 위해 "로직"에 대한 언급은 하드웨어, 소프트웨어, 또는 이들의 일부 조합을 의미한다.
상기에 나타낸 바와 같이, 오늘날 컴퓨터 시스템에서 사용되고 있는 휘발성 메모리는 대부분 소프트웨어 프로세스에 일시적으로 할당되는 동종의 리소스이다. 실시예는 장기간으로 저장되는 데이터의 성능 및 신뢰성 요구에 가장 적합한 고유한 특성으로 구성된 영구 메모리와 관련된다. 본 명세서에서 논의된 바와 같이, 영구 메모리는 통상의 동적 랜덤 액세스 메모리 또는 DRAM(때때로 메인 메모리로도 지칭됨)과 같이 바이트 어드레싱 가능한 메모리인 것으로 간주되지만, 이는 시스템 리셋 또는 전력 손실 전반에 걸쳐 그 콘텐츠를 유지한다. 그러한 영구 메모리의 예들은 바이트 어드레싱 가능한 3차원 크로스 포인트 메모리(예컨대, PCM(Phase Change Memory), 저항성 랜덤 액세스 메모리, 자기저항성 RAM, 스핀 전달 토크 RAM(STTRAM))를 포함한다. 일부 실시예는 고유한 성능 및/또는 신뢰성 특성을 갖는 영구 메모리 영역의 발견; 이들 영역을 QoS(Quality of Service) 풀들로의 조직; 및/또는 이들 QoS 풀들로부터의 영구 메모리의 애플리케이션 가시적인 볼륨들의 할당과 관련된다.
또한, 프로세서(본 명세서에서 상호교환가능하게 "CPU" 또는 중앙 처리 유닛(Central Processing Unit)으로도 지칭됨) 내에서 도입될 때, 비휘발성 메모리(본 명세서에서 상호교환적으로 "영구 메모리"로도 지칭됨)는 중요한 구성 유연성을 제공한다. 또한, NVM(비휘발성 메모리) DIMM(Dual Inline Memory Module: 듀얼 인라인 메모리 모듈)은 휘발성 영역과 영구 영역으로 파티셔닝될 수 있다. 이러한 영역들은 작업부하 거동 및 유저 요건에 맞도록 다양한 인터리브 또는 RAS(신뢰성, 이용 가능성 및 서비스 가능성) 모드들로 동작될 수 있다. 예를 들어, RAS는 데이터 내구성을 증가시키기 위해 사용자 데이터의 2개의 복사본을 유지하는 미러링(mirroring)과 같이 데이터의 내구성에 영향을 미치는 구성들에 적용될 수 있다. 초기 NVM 구성은 CPU 어드레스 맵에 대해 함의들을 갖기 때문에 시스템 BIOS(Basic Input/Output System)에 의해 수행될 수 있다. 그러나, BIOS는 사용자 요구들을 이해하거나 작업부하 거동을 특성화할 수 있는 위치에 있지 않다. 이를 위해, 일부 실시예는: (a) 사용자가 파티셔닝된 NVM DIMM에 의해 제공되는 유연성을 충분히 이용할 수 있게 한다; (b) BIOS 구성 오류로 인한 사용자 데이터 손실의 변화를 최소화한다; 및/또는 (c) 마더보드 고장의 경우에도 사용자가 DIMM에 저장된 영구 데이터를 검색할 수 있게 한다.
또한, 본 명세서에서 논의된 기술들은 도 1 내지 도 7을 참조하여 논의된 것들을 포함하여 다양한 컴퓨팅 시스템들(예를 들어, 데스크톱, 워크 스테이션, 서버, 랙 시스템 등과 같은 비이동 컴퓨팅 디바이스 및 스마트폰, 태블릿, UMPC(Ultra-Mobile Personal Computer), 랩톱 컴퓨터, Ultrabook™ 컴퓨팅 디바이스, 스마트 시계, 스마트 안경, 스마트 팔찌 등과 같은 이동 컴퓨팅 디바이스를 포함함)에 제공될 수 있다. 보다 특별히, 도 1은 실시예에 따른 컴퓨팅 시스템(100)의 블록도를 도시한다. 시스템(100)은 하나 이상의 프로세서(102-1 내지 102-N)(일반적으로 "프로세서들(102)" 또는 "프로세서(102)"로서 지칭됨)를 포함한다. 프로세서들(102)은 상호접속 또는 버스(104)를 통해 통신할 수 있다. 각각의 프로세서는 다양한 컴포넌트들을 포함할 수 있고, 이 컴포넌트들 중 일부만이 명확화를 위해 프로세서(102-1)를 참조하여 논의된다. 그에 따라, 나머지 프로세서들(102-2 내지 102-N) 각각은 프로세서(102-1)를 참조하여 논의되는 동일하거나 유사한 컴포넌트들을 포함할 수 있다.
실시예에서, 프로세서(102-1)는 하나 이상의 프로세서 코어(106-1 내지 106-M)(본 명세서에서 "코어들(106)", 또는 더 일반적으로 "코어(106)"로 지칭됨), 캐시(108)(다양한 실시예들에서 공유 캐시 또는 사유 캐시일 수 있음), 및/또는 라우터(110)를 포함할 수 있다. 프로세서 코어들(106)은 단일의 집적 회로(IC) 칩 상에 구현될 수 있다. 또한, 칩은 하나 이상의 공유 및/또는 사유 캐시(예컨대, 캐시(108)), 버스 또는 상호접속(예컨대, 버스 또는 상호접속(112)), 로직(120), 로직(150), 메모리 제어기(예컨대, 도 5 내지 도 7을 참조하여 논의된 것), NVM(비휘발성 메모리)(152)(예를 들어, 플래시 메모리, 고체 상태 드라이브(SSD)), 등 또는 다른 컴포넌트들을 포함할 수 있다.
일 실시예에서, 라우터(110)는 프로세서(102-1) 및/또는 시스템(100)의 다양한 컴포넌트들 사이에서 통신하는 데 사용될 수 있다. 더욱이, 프로세서(102-1)는 하나 초과의 라우터(110)를 포함할 수 있다. 또한, 다수의 라우터들(110)이 프로세서(102-1)의 내부 또는 외부의 다양한 컴포넌트들 사이의 데이터 라우팅을 가능하게 하기 위해 통신할 수 있다.
캐시(108)는 코어들(106)과 같은 프로세서(102-1)의 하나 이상의 컴포넌트에 의해 이용되는 데이터(예를 들어, 명령어들을 포함함)를 저장할 수 있다. 예를 들어, 캐시(108)는 프로세서(102)의 컴포넌트들에 의한 더 빠른 액세스를 위해 휘발성 메모리(114)에 저장된 데이터를 로컬 캐싱(locally cache)할 수 있다. 도 1에 도시된 바와 같이, 메모리(114)는 상호접속(104)을 통해 프로세서들(102)과 통신할 수 있다. 실시예에서, 캐시(108)(공유될 수 있음)는 다양한 레벨들을 가질 수 있으며, 예를 들어 캐시(108)는 중간 레벨 캐시 및/또는 마지막 레벨 캐시(last-level cache; LLC)일 수 있다. 또한, 코어들(106) 각각은 레벨 1(L1) 캐시(116-1)(일반적으로 본 명세서에서 "L1 캐시(116)"로 지칭됨)를 포함할 수 있다. 프로세서(102-1)의 여러 컴포넌트들은 버스(예를 들어, 버스(112)), 및/또는 메모리 제어기 또는 허브를 통해 직접 캐시(108)와 통신할 수 있다.
도 1에 도시된 바와 같이, 메모리(114)는 휘발성 메모리 제어기(120)를 통해 시스템(100)의 다른 컴포넌트들에 연결될 수 있다. 시스템(100)은 NVM 메모리(152)를 시스템(100)의 다양한 컴포넌트들에 연결하기 위해 NVM 메모리 제어기 로직(150)을 또한 포함한다. 일부 실시예들에서 NVM 메모리(영구 메모리)(152)는 나노와이어 메모리, FeTRAM(Ferro-electric transistor random access memory), MRAM(magnetoresistive random access memory), 플래시 메모리, STTRAM(Spin Torque Transfer Random Access Memory), 저항성 랜덤 액세스 메모리, PCM(Phase Change Memory)과 같은 바이트 어드레싱 가능 3차원 크로스 포인트 메모리 등과 같은 비휘발성 메모리를 포함한다. 메모리 제어기(150)가 상호접속(104)과 메모리(152) 사이에 연결되는 것으로 도시되어 있어도, 로직(150)은 시스템(100)의 다른 곳에 위치될 수 있다. 예를 들어, 로직(150)(또는 그 일부)은 다양한 실시예들에서 프로세서들(102) 중 하나, 제어기(120) 등 내에서 제공될 수 있다. 실시예에서, 로직(150) 및 NVM(152)은 SSD에 포함된다. 또한, 로직(150)은 다양한 실시예들과 관련하여 본 명세서에서 논의된 바와 같이 하나 이상의 NVM 디바이스(152)(예를 들어, 하나 이상의 NVM 디바이스는 일부 실시예들에서 동일한 집적 회로 다이 상에 제공됨)에 대한 액세스를 제어한다. 또한, 메모리 제어기(120) 및 NVM 제어기(150)는 실시예에서 단일 제어기로 결합될 수 있다.
도 2는 실시예에 따른 2 레벨 시스템 메인 메모리의 블록도를 도시한다. 일부 실시예는 (예를 들어, 런타임 데이터에 추가하여) 시스템 디스크 레벨 스토리지의 캐싱된 서브세트들을 포함하는 메모리의 2 레벨(대안적으로 본 명세서에서 "2LM"으로서 지칭됨)을 포함하는 시스템 메인 메모리(200)에 관한 것이다. 이 메인 메모리는 예를 들어, 휘발성 메모리(114)(예를 들어, DRAM(동적 랜덤 액세스 메모리)을 포함함), NVM(152) 등으로 이루어진 더 작고 더 빠른 메모리를 포함하는 제1 레벨 메모리(210)(대안적으로, 본 명세서에서 "니어(near) 메모리"로도 지칭됨); 및 (니어 메모리에 대해) 더 크고 더 느린 휘발성 메모리(예를 들어, 메모리(114)) 또는 비휘발성 메모리 스토리지(예를 들어, NVM(152))를 포함하는 제2 레벨 메모리(208)(대안적으로 "파(far) 메모리")를 포함한다.
실시예에서, 파 메모리는 호스트 운영 체제(OS)에 대해 "메인 메모리"로서 제공되는 반면, 니어 메모리는 OS에 대해 투명한 파 메모리를 위한 캐시이고, 따라서 후술한 실시예들이 일반적인 메인 메모리 해결책들과 동일하게 나타나도록 한다. 2 레벨 메모리의 관리는 호스트 중앙 처리 유닛(CPU)(102)(본 명세서에서는 상호교환가능하게 "프로세서"로서 지칭됨)을 통해 실행되는 로직 및 모듈의 조합에 의해 수행될 수 있다. 니어 메모리는 효율적인 처리를 위해 하나 이상의 고 대역폭, 저 지연 시간 링크, 버스 또는 인터커넥트를 통해 호스트 시스템 CPU에 연결될 수 있다. 파 메모리는 (니어 메모리의 것과 비교하여) 하나 이상의 저 대역폭, 높은 지연 시간 링크, 버스 또는 인터커넥트를 통해 CPU에 연결될 수 있다.
도 2를 참조하면, 메인 메모리(200)는 런타임 데이터 스토리지 및 CPU(102)로의 시스템 디스크 스토리지 메모리(예컨대, 도 5의 디스크 드라이브(528) 또는 도 6의 데이터 스토리지(648))의 콘텐츠에 대한 액세스를 제공한다. CPU는 메인 메모리(200)의 콘텐츠의 서브세트를 저장하는 캐시 메모리를 포함할 수 있다. 파 메모리는 본 명세서에서 논의된 바와 같이 휘발성 또는 비휘발성 메모리를 포함할 수 있다. 이러한 실시예에서, 니어 메모리(210)는 (즉, CPU(102) 액세스에 대한) 상당히 더 낮은 대역폭 및 더 높은 지연 시간을 가질 수 있는 파 메모리(208)의 (즉, CPU 102 액세스에 대한) 낮은 지연 시간 및 높은 대역폭 캐시를 제공한다.
실시예에서, 니어 메모리(210)는 니어 메모리 제어기(NMC)(204)에 의해 관리되는 반면, 파 메모리(208)는 파 메모리 제어기(FMC)(206)에 의해 관리된다. FMC(206)는 메인 메모리로서 파 메모리(208)를 시스템 OS에 보고한다(즉, 시스템 OS는 시스템 메인 메모리(200)의 크기로서 파 메모리(208)의 크기를 인식한다). 시스템 OS 및 시스템 애플리케이션들은 니어 메모리(210)가 파 메모리(208)의 "투명한" 캐시이기 때문에 니어 메모리(210)의 존재를 "인식하지 못한다".
CPU(102)는 2LM 엔진 모듈/로직(202)을 추가로 포함한다. "2LM 엔진"은 2 레벨 메인 메모리(200)를 지원하기 위해 하드웨어 및/또는 마이크로 코드 확장을 포함할 수 있는 논리적 구조체이다. 예를 들어, 2LM 엔진(202)은 파 메모리(208)의 모든 아키텍처 가시 요소들(architecturally visible elements)의 상태를 추적하는 전체 태그 테이블을 유지할 수 있다. 예를 들어, CPU(102)가 메인 메모리(200) 내의 특정 데이터 세그먼트에 액세스하려고 시도하는 경우, 2LM 엔진(202)은 데이터 세그먼트가 니어 메모리(210)에 포함되는지를 결정하고; 만약 그렇지 않다면, 2LM 엔진(202)은 파 메모리(208)에서 데이터 세그먼트를 인출하고 후속하여 데이터 세그먼트를 니어 메모리(210)에 기입한다(캐시 미스와 유사). 니어 메모리(210)가 파 메모리(208)의 "캐시"로서 작용하기 때문에, 2LM 엔진(202)이 데이터 완성(perfecting) 또는 유사한 캐시 효율 프로세스를 추가로 실행할 수 있다는 점을 이해해야 한다.
또한, 2LM 엔진(202)은 파 메모리(208)의 다른 양태들을 관리할 수 있다. 예를 들어, 파 메모리(208)가 비휘발성 메모리(예컨대, NVM(152))를 포함하는 실시예에서, 플래시와 같은 비휘발성 메모리는 상당한 판독/기입으로 인한 메모리 세그먼트의 열화를 겪는 것으로 이해된다. 따라서, 2LM 엔진(202)은 시스템 소프트웨어에 투명한 방식으로 웨어 레벨링(wear-leveling), 불량 블록 방지(bad-block avoidance) 등을 포함하는 기능들을 실행할 수 있다. 예를 들어, 웨어 레벨링 로직을 실행하는 것은 상대적으로 낮은 소거 사이클 카운트를 갖는 파 메모리(208) 내의 깨끗한 매핑되지 않은 세그먼트의 자유 풀로부터 세그먼트를 선택하는 것을 포함할 수 있다.
일부 실시예에서, 정확한 비율은, 예를 들어 의도된 시스템 사용에 기초하여 변할 수 있지만, 니어 메모리(210)는 파 메모리(208)보다 크기가 더 작을 수 있다. 그러한 실시예에서, 파 메모리(208)는 보다 고밀도의 및/또는 보다 저렴한 비휘발성 메모리를 포함할 수 있기 때문에, 메인 메모리(200)의 크기는 저렴하고 효율적으로 증가될 수 있고 시스템에서의 DRAM(즉, 니어 메모리(210))의 양과 독립적일 수 있다는 점을 이해해야 한다.
일 실시예에서, 파 메모리(208)는 압축된 형태로 데이터를 저장하고, 니어 메모리(210)는 대응하는 비압축 버전을 포함한다. 따라서, 니어 메모리(210)가 파 메모리(208)의 콘텐츠를 요청할 때, FMC(206)는 콘텐츠를 검색하고 사용되고 있는 압축 알고리즘(예를 들어, 256B 전송)과 매칭하도록 맞춤화된 고정 페이로드 크기들로 콘텐츠를 반환한다.
실시예에서, 고유한 성능 및/또는 신뢰성 특성들을 갖는 영구 메모리 영역을 관리하기 위한 메커니즘이 제공된다. 특성들은 실시예에서의 RAID(Redundant Array of Independent Disks)(6)와 유사하다. 영구 메모리의 영역들은 풀들로 구성되며, 풀들은 일부 실시예에서 볼륨들을 위한 용량의 소스로서 기능한다. 이 시스템의 장점들은: (a) 영구 메모리 영역들이 가치 있고 고유한 특성들을 가질 수 있다; (b) 영역들이 유사한 특성들을 갖는 풀들로 그룹화되어 시스템을 구성하는 것의 복잡성을 감소시킨다; 및/또는 (c) 특정 특성을 갖는 볼륨이 풀들로부터 생성될 수 있고 이러한 특성들로부터 이익을 얻는 애플리케이션들로 할당될 수 있다는 것이다.
따라서, 일부 실시예는: (1) 각각 고유하고 가치 있는 특성들을 갖는 다수의 영구 메모리 영역을 허용한다; (2) 풀들 및 볼륨들의 개념들을 도입하는 것에 의해 영구 메모리의 구성을 요약하고 단순화한다; (3) 볼륨들이 생성된 풀들의 고유하고 가치 있는 특성들을 유지하는 애플리케이션 가시(application visible) 영구 메모리 볼륨들을 제공한다; 및/또는 (4) 애플리케이션들이 특성들을 매칭시킨 볼륨들을 사용할 수 있다는 것으로부터 이익을 얻게 할 수 있다.
도 3a는 실시예에 따라, 구성된 메모리 시스템의 블록도를 도시한다. 샘플 NUMA(Non-Uniform Memory Access) 블록들은 Px(또는 파티션 x) 레이블들로 표시된 것으로서, 도 3a에 도시된다. 도 3a는 (다수의 파티션들을 갖는 열로서 각각 도시된) 다양한 DIMM들을 도시한다. 각각의 DIMM은 (도 1 내지 도 2 및 도 5 내지 도 7을 참조하여 본 명세서에서 논의된 메모리 제어기와 같은) 각자의 메모리 제어기에 연결된다. 실시예에서, 인터리빙 및/또는 미러링 동작들은 메모리 제어기(들)에서 수행된다.
도 3a에서, P1 내지 P10은 영구 메모리의 상이한 풀들과 연관될 수 있는 이하의 샘플 특성들을 나타낸다. P1 내지 P10은 상이한 특성들을 갖는 상이한 풀들을 나타낸다.
P1: UMA, 256B 채널/4K iMC(integrated Memory Controller) 인터리브, 소켓 장애 도메인(Socket Fault Domain)
P2: NUMA, 인터리브 없음, DIMM 장애 도메인
P3: NUMA, 인터리브 없음, DIMM 장애 도메인
P4: NUMA, 인터리브 없음, DIMM 장애 도메인
P5: NUMA, 인터리브 없음, DIMM 장애 도메인
P6: UMA, 4K 채널/1MB iMC 인터리브 시스템 장애 도메인
P7: UMA, 블록 어드레싱 가능, 시스템 장애 도메인
P8: NUMA, 미러링됨, DIMM 장애 도메인
P9: NUMA, 1MB 채널/1MB iMC 인터리브, 소켓 장애 도메인
P10: NUMA, 미러링됨, DIMM, 장애 도메인
도 3b는 실시예에 따라 메모리를 구성하기 위한 방법(350)의 흐름도를 도시한다. 일 실시예에서, 도 1 내지 도 3a 및 도 5 내지 도 7을 참조하여 논의된 다양한 컴포넌트들은 도 3b를 참조하여 논의된 하나 이상의 동작을 수행하는 데 이용될 수 있다. 실시예에서, 방법(350)의 하나 이상의 동작은 도 1의 로직(150) 및/또는 제어기(120)와 같은 로직(예를 들어, 펌웨어) 및/또는 다른 도면들을 참조하여 논의된 다른 메모리 제어기들로 구현될 수 있다.
도 1 내지 도 3b를 참조하면, 동작 352에서, 영구 메모리의 영역들의 속성들이 검출되거나 발견된다(이들은 도면에서 Px 라벨링된 블록들로 도시됨). 일부 실시예에서, 고려되는 속성들은 UMA, NUMA, 인터리브 유형, 통신 채널 폭/속도, 장애 도메인의 유형(예를 들어, 시스템, DIMM, 소켓 등), 미러링 상태(즉, 미러링되거나 미러링되지 않음) 등 중 하나 이상을 포함한다. 동작 354에서, 유사한 특성들/속성들을 갖는 영역들은 QoS(Quality of Service) 풀들로 조직화된다. 주어진 풀에 용량을 제공하는 영역들은 도면에서 Px로 라벨링되고, 여기서 x는 풀 번호이다.
동작 356에서, QoS 풀들은 예를 들어, 풀 이름, 풀에서의 영구 메모리의 성능 및/또는 신뢰도 특성들, 및/또는 풀 내의 이용 가능한 용량 중 하나 이상의 형태로 시스템 관리자에게 이용 가능하게 된다.
동작 358에서, 관리자는 풀 용량으로부터 하나 이상의 볼륨을 생성한다. 이들은 도면에서 실린더로서 도시된다. 도면의 볼륨 "v1"의 경우, 그것은 시스템 내의 모든 비휘발성 DIMM(NVDIMM)들의 영역들을 포함하는 인터리빙된 풀, UMA(Uniform Memory Access)인 풀 P6로부터의 범위들로 구성된다. 마찬가지로, 볼륨 "v2"는 풀 P2의 단일 범위를 사용하고 NUMA 성능 특성을 가지며 그 장애 도메인은 단일 NVDIMM이다. 데이터센터 환경에서 개별 노드로부터의 볼륨들이 특정 QoS 특성들을 갖는 단일 리소스로 결합되고 관리될 수 있다. 예를 들어, CSP(클라우드 서비스 공급자)는 매우 신뢰할 수 있는 영구 스토리지를 갖는 것 및 고성능 스토리지를 갖는 것인, 2개 유형의 가상 머신 인스턴스를 제공할 수 있다. 이들 인스턴스는 각각 풀 P10 및 P1로부터 형성될 수 있다. CSP는 각각의 QoS 풀에서 예상되는 양의 용량이 이용 가능할 수 있도록 노드들을 프로비저닝할 수 있다.
동작 360에서, 볼륨들은 영구 메모리 또는 블록 디바이스로서 운영 체제 및/또는 애플리케이션들에 노출된다. 동작 312에서, 볼륨들은 매칭 특성들을 갖는 애플리케이션들에 할당된다. 예를 들어, "v1"은 최적화된 NUMA가 아닌 작업부하에 할당된다.
일부 실시예에서, 소프트웨어 정의 데이터센터(Software Defined Datacenter)는 다음과 같이 증가하는 자동화 레벨들을 도입할 수 있다:
(1) 자동화 볼륨 생성(Automate Volume Creation): 작업부하 요구들에 응답하여 QoS 볼륨들이 동적으로 생성되고 파괴될 수 있다. 볼륨들이 영구적이기 때문에, 볼륨들을 소유한 애플리케이션이 영구적으로 리타이어링될 때 볼륨들이 단지 삭제될 수 있다.
(2) 자동화 풀들 생성(Automate Pools Creation): QoS 풀들은 작업부하 요구들에 응답하여 동적으로 확장 및/또는 축약될 수 있다.
(3) 새로운 유형의 작업부하가 발생할 때 새로운 QoS 풀 유형들이 도입될 수 있는 경우 가장 높은 레벨의 자동화가 도달될 수 있다. 예를 들어, 예측 가능한 스토리지 대역폭을 필요로 하는 애플리케이션에 대한 요구들은 전체 영구 DIMM에 걸치는 볼륨에 의해 충족될 수 있다. 해당 QoS 특성을 갖는 풀은 원래의 목록에 없지만(도 3a 참조), 본 명세서에서 논의된 기술들에 따라 정의될 수 있다.
또한, 영구 메모리는 업계에 의해 천천히 받아들여지고 있는 새로운 프로그래밍 패러다임이다. 본 명세서에 설명된 일부 실시예의 도움으로, 애플리케이션들은 영구 메모리를 최대한 이용할 수 있다. 또한, 이러한 실시예들은 SDS(Software Defined Storage) 기반 구조 또는 비전 내부에 영구 메모리 기술이 맞도록 보장하는 데 사용될 수 있어서, 보다 동적인 데이터센터로 이끌 수 있다.
상기에 논의된 바와 같이, 비휘발성 메모리는 CPU 메모리 계층 내에 도입될 때 상당한 구성 유연성을 제공한다. 또한, NVM DIMM은 휘발성 영역 및 영구 영역으로 파티셔닝될 수 있다. 이들 영역은 작업부하 거동 및 사용자 요건에 맞도록 다양한 인터리브 또는 RAS 모드들로 동작될 수 있다. 초기 NVM 구성은 CPU 어드레스 맵에 대해 함의들을 갖기 때문에 시스템 BIOS(Basic Input/Output System)에 의해 수행될 수 있다. 그러나, BIOS는 사용자 요구들을 이해하거나 작업부하 거동을 특성화할 수 있는 위치에 있지 않다. 이를 위해, 일부 실시예는: (a) 사용자가 파티셔닝된 NVM DIMM에 의해 제공되는 유연성을 충분히 이용할 수 있게 한다; (b) BIOS 구성 오류로 인한 사용자 데이터 손실의 변화를 최소화한다; 및/또는 (c) 마더보드 고장의 경우에도 사용자가 DIMM에 저장된 영구 데이터를 검색할 수 있게 한다.
그러나, 오늘날 시장에서 NVM DIMM들은 이러한 레벨의 유연성을 제공하지 않아서, 업계는 이 문제를 지금까지 직면하지 않고 있었다. 예를 들어, 유형 1 NVM DIMM들은 NV(비휘발성) 메모리에 의해 백업된 DRAM을 포함한다. DRAM은 CPU 어드레스 공간에 직접 매핑되지만, 이들 DIMM은 NV 스토리지로서 사용될 수 없다. 또한, 유형 3 NVM DIMM들은 블록 디바이스들처럼 나타나지만, 휘발성 모드에서는 사용될 수 없고 이들 DIMM의 NVM은 CPU 어드레스 공간에 직접 매핑될 수 없다. 따라서, 제조자들이 거대한 양의 유연성을 제공하는 차세대 NVM 기술들을 도입함에 따라 NVM DIMM들의 구성이 문제가 된다. 이를 위해, 일부 실시예는 이러한 다가올 NVM 기술들에 대해 유연성을 제공할 수 있다.
일부 현재 구현예들은 DIMM SPD(Serial Presence Detect) ROM(Readonly Memory), 디스크 파티션 데이터 및 RAID 메타 데이터를 포함한다. 이하의 3개의 표는 실시예들이 이들 각각과 어떻게 다른지를 설명한다:
Figure pct00001
Figure pct00002
Figure pct00003
도 4a는 실시예에 따른 NVM 관리 아키텍처의 데이터센터 레벨 뷰를 도시한다. 일부 컴포넌트는 이하에 설명된다. 맨 아래에 도시된 각각의 NVM DIMM은 휘발성 및 영구/비휘발성 영역들로 파티셔닝될 수 있다. 이들 2개 영역은 CPU 어드레스 공간에 매핑된다. 각각의 DIMM은 P1 및 P2인 2개의 관리 파티션을 또한 포함한다. P1 및 P2는 전용 관리(예를 들어, 메일 박스) 인터페이스를 통해 액세스 가능하다. 메일 박스 인터페이스는 NVM 제어기에서 구현된다. 관리 파티션들은 NVM DIMM이 달리 구성되지 않아도 액세스 가능하다 즉, 휘발성 및 영구 영역들이 CPU 어드레스 공간으로 매핑되지 않는다.
BIOS뿐만아니라 NMV 드라이버는 메일 박스 인터페이스를 이용하여 관리 파티션들에 액세스한다. NVM 드라이버는 ACPI(Advanced Configuration and Power Interface) 사양(예를 들어, 개정 5.0a, 2013년 11월 13일) 테이블들 및/또는
UEFI(Unified Extensible Firmware Interface) 사양(예를 들어, 2013년 7월에 공개된 버전 2.4)의 도움으로 NVM DIMM들을 열거한다. 예를 들어, 테이블들은 DIMM 파퓰레이션(population), 구성 옵션들/제한들 등을 지정한다.
로컬 관리 애플리케이션 컴포넌트는 IOCTL(입력/출력 제어) 메시지들을 NVM 드라이버로 송신하는 것에 의해 관리 파티션 2에 액세스한다. 다양한 유형들의 파일 시스템들이 NVM 드라이버의 상부에 계층화될 수 있다. NVM 드라이버와 파일 시스템들은 함께 레거시 애플리케이션들에 표준 블록 및 파일 시스템 API(Application Programming Interfaces)를 제공한다. 반면에 PM(또는 영구 메모리) 인식 애플리케이션들(메모리가 영구적일 수 있다는 것을 이해하도록 수정된 소프트웨어를 참조하고 그것은 이전에 영구 메모리에 저장된 콘텐츠를 찾고 재사용함)은 드라이버 계층을 바이패스하고 예를 들어 증가된 성능을 위해 로딩/저장 명령어들을 통해 NVM에 직접 액세스할 수 있다.
데이터센터 환경에서, 관리 소프트웨어 계층에서의 작업부하 스케줄러는 각각의 시스템에서 실행하고 있는 애플리케이션들을 인식하고 따라서 휘발성 및 지속성 영역들 등에 걸쳐 NVM DIMM들의 파티셔닝에 관한 권장 사항들을 작성할 수 있다.
도 4b는 실시예에 따른 2개의 관리 파티션의 블록도를 도시한다. 도 4b를 참조하여 2개의 관리 파티션만이 논의되어도, 더 많은 관리 파티션들이 다양한 실시예들에서 이용될 수 있다. 보다 특별히, 관리 파티션 2(P2)는 이하의 3개의 테이블들을 보유한다: (1) BIOS에 의해 저장된 NV DIMM 현재 구성; (2) 관리 애플리케이션에 의해 저장된 NV DIMM 구성 요청; 및 (3) BIOS에 의해 저장된 NV DIMM 구성 응답.
관리 파티션 1(P1)은 LKG(Last Known Good)로서 또한 작용하는 NV DIMM 현재 구성을 보유한다. BIOS는 P1를 판독/기입할 수 있지만 OS 드라이버/애플리케이션은 판독/기입할 수 없도록 NVM 제어기는 P1에 대한 액세스를 제한한다. 이는 버그가 있는/악성 OS 소프트웨어가 LKG를 직접 제거할 수 없다는 것을 보장한다.
도 4c는 실시예에 따라 메모리를 구성하는 방법의 흐름도를 도시한다. 일 실시예에서, 도 1 내지 도 4b 및 도 5 내지 도 7을 참조하여 논의된 다양한 컴포넌트들은 도 4c를 참조하여 논의된 하나 이상의 동작을 수행하는 데 이용될 수 있다. 실시예에서, 도 4c의 하나 이상의 동작은 도 1의 로직(150) 및/또는 제어기(120)와 같은 로직(예를 들어, 펌웨어) 및/또는 다른 도면들을 참조하여 논의된 다른 메모리 제어기들로 구현될 수 있다.
도 1 내지 도 4c를 참조하면, 첫째, NVM 구성/재구성은 이하를 포함한다: (a) NVM 관리 콘솔은 NVM 파퓰레이션 및 구성 옵션들에 관한 정보에 대해 각각의 시스템에 위치된 관리 애플리케이션에 질의한다; (b) 관리 애플리케이션은 ACPI 테이블들 및 P2의 테이블들에서 이 정보를 검색한다; (c) NVM 구성 정보, 사용자 입력, 작업부하 스케줄러로부터의 힌트(들) 및 기타 관리 컴포넌트에 따라, NVM 관리 콘솔은 각각의 시스템에 대한 다음의 NVM 구성을 계산하고 그것을 관리 애플리케이션에 전달할 수 있다. 둘째, 관리 애플리케이션은 도 4c에 도시된 바와 같이 NVM DIMM 관리 파티션 2에 새로운 구성을 저장한다. 셋째, 재부팅 시 BIOS는 NVM DIMM 관리 파티션 2로부터 새로운 구성 요청을 판독하고 그것을 처리한다. 새로운 요청이 없는 경우, BIOS는 관리 파티션 1로부터의 LKG 구성을 적용할 것이다. BIOS가 요청을 따를 수 있는 경우, BIOS는 DIMM들을 재구성하고 이 구성을 관리 파티션에 저장한다. BIOS가 요청을 따를 수 없는 경우, BIOS는 LKG 구성을 사용하여 부팅하기를 시도한다. LKG 구성이 (예를 들어, DIMM 고장으로 인해) 작동하지 않는 경우, BIOS는 NVM 디스에이블 모드로 부팅될 것이다. 모든 처리된 요청에 대해, BIOS는 응답을 관리 파티션에 저장한다. 넷째, 응답은 관리 애플리케이션 및 NVM 관리 콘솔에 의해 소비된다.
마더보드 고장인 경우, 사용자는 NVM DIMM들을 (예를 들어, 동일한) 대체 시스템으로 물리적으로 마이그레이션할 수 있다. 새로운 시스템에서의 BIOS는 LKG 구성을 적용하고 고장난 시스템과 매칭하도록 어드레스 맵을 재구성한다. 사용자가 DIMM들을 잘못된 순서로 설치하는 경우, BIOS가 NVM 디스에이블 모드로 부팅되고 사용자를 올바른 구성 쪽으로 안내할 수 있다.
일부 실시예의 이용은 엔드 사용자가 NV DIMM들에 의해 제공되는 유연성을 이용할 수 있다는 것을 보장한다. 이는 데이터센터뿐만 아니라 클라이언트 시장 양자 모두에서 중요할 수 있다. 데이터센터 환경에서, NVM DIMM들은 작업부하들, 엔드 사용자 SLA(Service Level Agreement) 또는 CSP TCO(Total Cost of Ownership)에 매칭하도록 구성/재구성될 수 있다. 미션 크리티컬(mission critical) 환경에서, 이러한 기술들은 핫 추가된(hot added) NVM DIMM을 구성하는 데 사용될 수 있다. 또한, NVDIMM 기술 및 보다 일반적으로 로컬 스토리지에 관한 주요 우려들 중 하나는 시스템 충돌의 경우 사용자 데이터의 손실의 가능성이다. 이를 해결하기 위해, 일부 실시예는 이러한 우려들을 완화시키는 방법을 제공한다.
예를 들어, 도 4a 내지 도 4c를 참조하여 논의된 바와 같이, 일부 실시예는 이하와 같이 동작한다:
1. BIOS는 다양한 NVM 구성 옵션들 및 제한들을 관리 소프트웨어 계층에 전달한다;
2. 관리 소프트웨어 계층은 BIOS에 의해 지정된 제약 조건들 하에서 최적의 NVM 구성을 결정한다. 관리 소프트웨어는 이러한 프로세스 동안 복잡한 알고리즘들과 사용자 입력을 활용할 수 있다;
3. 관리 소프트웨어는 각각의 NVM DIMM에 위치된 전용 파티션을 통해 원하는 구성을 BIOS에 전달한다;
4. BIOS는 관리 소프트웨어로부터의 요청을 처리한다;
a. 새로운 요청이 없는 경우, BIOS는 LKG(Last Known Good) 구성을 적용할 것이다. LKG 구성은 NVM DIMM의 다른 전용 파티션에 저장된다. LKG 파티션은 BIOS에 의해 단지 업데이트될 수 있다;
b. BIOS가 요청을 따를 수 있는 경우, DIMM들을 재구성하고 이 구성을 LKG(Last Known Good) 구성으로서 촉진한다.
c. BIOS가 요청을 따를 수 없는 경우, LKG 구성 또는 NVM 디스에이블 모드로 폴 백(fall back)한다.
d. 처리된 모든 요청에 대해 BIOS는 응답을 NVM DIMM에 저장한다. 응답은 관리 소프트웨어에 의해 소비되어야 한다; 및/또는
5. 마더보드가 고장난 경우, DIMM들은 유사한 마더보드로 이동될 수 있고, BIOS는 각각의 DIMM들의 LKG 파티션으로부터 LKG 구성을 판독하고 이전 시스템과 매칭하도록 NVM 어드레스 맵을 설정할 수 있다. 이제 DIMM들에 저장된 사용자 데이터는 표준 유틸리티를 사용하여 검색될 수 있다.
도 5는 본 발명의 실시예에 따른 컴퓨팅 시스템(500)의 블록도를 도시한다. 컴퓨팅 시스템(500)은 상호접속 네트워크(interconnection network)(또는 버스)(504)를 통해 통신하는 하나 이상의 중앙 처리 유닛(들)(CPU들)(502) 또는 프로세서들을 포함할 수 있다. 프로세서들(502)은 범용 프로세서, (컴퓨터 네트워크(503)를 통해 전달된 데이터를 처리하는) 네트워크 프로세서, (셀폰들, 스마트폰들 등에서 사용되는 것들과 같은) 애플리케이션 프로세서, 또는 다른 유형의 프로세서(RISC(reduced instruction set computer) 프로세서 또는 CISC(complex instruction set computer)를 포함함)를 포함할 수 있다. 유선(예를 들어, 이더넷, 기가비트, 파이버 등) 또는 무선 네트워크들(예컨대, 셀룰러, 3G(3세대 셀폰 기술 또는 3세대 무선 포맷(UWCC)), 5G, LPE(Low Power Embedded) 등)을 포함하는 다양한 유형의 컴퓨터 네트워크들(503)이 이용될 수 있다. 또한, 프로세서들(502)은 단일 또는 다중 코어 설계를 가질 수 있다. 다중 코어 설계를 갖는 프로세서들(502)은 동일한 집적 회로(IC) 다이 상에서 상이한 유형들의 프로세서 코어들을 집적할 수 있다. 또한, 다중 코어 설계를 갖는 프로세서들(502)은 대칭형 또는 비대칭형 마이크로프로세서들로서 구현될 수 있다.
실시예에서, 프로세서들(502) 중 하나 이상은 도 1의 프로세서들(102)과 동일하거나 유사할 수 있다. 예를 들어, 하나 이상의 프로세서(502)는 하나 이상의 코어(106) 및/또는 캐시(108)를 포함할 수 있다. 또한, 도 1 내지 도 4를 참조하여 논의된 동작들은 시스템(500)의 하나 이상의 컴포넌트에 의해 수행될 수 있다.
칩셋(506)은 또한 상호접속 네트워크(504)와 통신할 수 있다. 칩셋(506)은 그래픽 및 메모리 제어 허브(GMCH)(508)를 포함할 수 있다. GMCH(508)는 메모리(114)와 통신하는 메모리 제어기(510)(실시예에서 도 1의 메모리 제어기(120)와 동일하거나 유사할 수 있음)를 포함할 수 있다. 시스템(500)은 다양한 위치들(예컨대 도 5에 도시된 것들과 같지만, 시스템(500) 내의 다른 위치들(도시되지 않음)에 있을 수 있음)에서 (예를 들어, NVM(152)에 연결된) 로직(150)을 또한 포함할 수 있다. 메모리(114)는 CPU(502) 또는 컴퓨팅 시스템(500)에 포함된 임의의 다른 디바이스에 의해 실행되는 명령어들의 시퀀스들을 포함하여, 데이터를 저장할 수 있다. 본 발명의 일 실시예에서, 메모리(114)는 RAM(random access memory), DRAM(dynamic RAM), SDRAM(synchronous DRAM), SRAM(static RAM), 또는 다른 유형의 스토리지 디바이스들과 같은 하나 이상의 휘발성 스토리지(또는 메모리) 디바이스를 포함할 수 있다. 하드 디스크, 플래시, 바이트 어드레싱 가능한 3차원 크로스 포인트 메모리(예컨대, PCM), 저항성 랜덤 액세스 메모리, NAND 메모리, NOR 메모리 및 STTRAM과 같은 비휘발성 메모리가 또한 이용될 수 있다. 다수의 CPU 및/또는 다수의 시스템 메모리와 같은 추가적인 디바이스들이 상호접속 네트워크(504)를 통해 통신할 수 있다.
GMCH(508)는 또한 그래픽 가속기(516)와 통신하는 그래픽 인터페이스(514)를 포함할 수 있다. 본 발명의 일 실시예에서, 그래픽 인터페이스(514)는 가속화된 그래픽 포트(accelerated graphics port)(AGP) 또는 PCI(Peripheral Component Interconnect)(또는 PCI 익스프레스(PCIe) 인터페이스)를 통해 그래픽 가속기(516)와 통신할 수 있다. 본 발명의 일 실시예에서, 디스플레이(517)(예컨대, 평판 패널 디스플레이, 터치 스크린 등)는, 예를 들어 비디오 메모리 또는 시스템 메모리와 같은 스토리지 디바이스에 저장된 이미지의 디지털 표현을 디스플레이에 의해 해석되어 디스플레이되는 디스플레이 신호들로 변환하는 신호 변환기를 통해, 그래픽 인터페이스(514)와 통신할 수 있다. 디스플레이 디바이스에 의해 생성된 디스플레이 신호들은, 디스플레이(517)에 의해 해석되고 후속하여 디스플레이(517) 상에 디스플레이되기 이전에, 다양한 제어 디바이스들을 통과할 수 있다.
허브 인터페이스(518)는 GMCH(508)와 입력/출력 제어 허브(ICH)(520)가 통신하도록 할 수 있다. ICH(520)는 컴퓨팅 시스템(500)과 통신하는 I/O 디바이스들에 인터페이스를 제공할 수 있다. ICH(520)는 주변 장치 브리지(또는 제어기)(524), 예컨대 PCI(peripheral component interconnect) 브리지, USB(universal serial bus) 제어기, 또는 다른 유형의 주변 장치 브리지들 또는 제어기들을 통해 버스(522)와 통신할 수 있다. 브리지(524)는 CPU(502)와 주변 장치들 사이의 데이터 경로를 제공할 수 있다. 다른 유형의 토폴로지들(topologies)이 이용될 수 있다. 또한, 예를 들어, 다중 브리지들 또는 제어기들을 통해, 다중 버스가 ICH(520)와 통신할 수 있다. 또한, ICH(520)와 통신하는 다른 주변 장치들은, 다양한 실시예들에서, IDE(integrated drive electronics) 또는 SCSI(small computer system interface) 하드 드라이브(들), USB 포트(들), 키보드, 마우스, 병렬 포트(들), 직렬 포트(들), 플로피 디스크 드라이브(들), 디지털 출력 서포트(예를 들어, DVI(digital video interface)), 또는 다른 디바이스들을 포함할 수 있다.
버스(522)는 오디오 디바이스(526), 하나 이상의 디스크 드라이브(들)(528), 및 (예를 들어 유선 또는 무선 인터페이스를 통해 컴퓨터 네트워크(503)와 통신하는) 네트워크 인터페이스 디바이스(530)와 통신할 수 있다. 도시된 바와 같이, 네트워크 인터페이스 디바이스(530)는, (예를 들어, IEEE(Institute of Electrical and Electronics Engineers) 802.11 인터페이스(IEEE 802.11a/b/g/n 등을 포함함), 셀룰러 인터페이스, 3G, 5G, LPE 등을 통해) 무선으로 네트워크(503)와 통신하기 위해 안테나(531)에 연결될 수 있다. 다른 디바이스들은 버스(522)를 통해 통신할 수 있다. 또한, (네트워크 인터페이스 디바이스(530)와 같은) 다양한 컴포넌트들은 일부 실시예에서 GMCH(508)와 통신할 수 있다. 또한, 프로세서(502) 및 GMCH(508)는 단일 칩을 형성하기 위해 결합될 수 있다. 또한, 그래픽 가속기(516)는 다른 실시예들에서 GMCH(508) 내에 포함될 수 있다.
더욱이, 컴퓨팅 시스템(500)은 휘발성 및/또는 비휘발성 메모리(또는 스토리지)를 포함할 수 있다. 예를 들어, 비휘발성 메모리는 ROM(read-only memory), PROM(programmable ROM), EPROM(erasable PROM), EEPROM(electrically EPROM), 디스크 드라이브(예를 들어, 528), 플로피 디스크, CD-ROM(compact disk ROM), DVD(digital versatile disk), 플래시 메모리, 광자기 디스크, 또는 전자 데이터(예를 들어, 명령어를 포함함)를 저장할 수 있는 다른 유형의 비휘발성 머신 판독 가능 매체 중 하나 이상을 포함할 수 있다.
도 6은 일 실시예에 따라, 포인트-투-포인트(point-to-point, PtP) 구성으로 배열되는 컴퓨팅 시스템(600)을 도시한다. 특히, 도 6은 프로세서들, 메모리, 및 입력/출력 디바이스들이 다수의 포인트-투-포인트 인터페이스에 의해 상호접속되는 시스템을 도시한다. 도 1 내지 도 5를 참조하여 논의되는 동작들은 시스템(600)의 하나 이상의 컴포넌트들에 의해 수행될 수 있다.
도 6에 도시된 바와 같이, 시스템(600)은 몇몇 프로세서를 포함할 수 있는데, 명확성을 위해 그 중에서 2개의 프로세서(602 및 604)만이 도시된다. 프로세서들(602 및 604)은 메모리들(610 및 612)과의 통신을 인에이블하기 위해 로컬 메모리 제어기 허브(MCH)(606 및 608)를 각각 포함할 수 있다. 메모리들(610 및/또는 612)은 도 1 및/또는 도 5의 메모리(114) 또는 NVM(152)을 참조하여 논의된 것과 같이 다양한 데이터를 저장할 수 있다. 또한, MCH(606 및 608)는 일부 실시예에서 도 1의 메모리 제어기(120) 및/또는 로직(150)을 포함할 수 있다.
실시예에서, 프로세서들(602 및 604)은 도 5를 참조하여 논의된 프로세서들(502) 중 하나일 수 있다. 프로세서들(602 및 604)은 각각 PtP 인터페이스 회로들(616 및 618)을 사용하는 포인트-투-포인트(PtP) 인터페이스(614)를 통해 데이터를 교환할 수 있다. 또한, 프로세서들(602 및 604)은 포인트-투-포인트 인터페이스 회로들(626, 628, 630, 및 632)을 이용하는 개별 PtP 인터페이스들(622 및 624)을 통해 칩셋(620)과 데이터를 각각 교환할 수 있다. 또한, 칩셋(620)은 예를 들어, PtP 인터페이스 회로(637)를 사용하여, 고성능 그래픽 인터페이스(636)를 통해 고성능 그래픽 회로(634)와 데이터를 교환할 수 있다. 도 5를 참조하여 논의된 바와 같이, 그래픽 인터페이스(636)는 일부 실시예에서 디스플레이 디바이스(예를 들어, 디스플레이(517))에 연결될 수 있다.
도 6에 도시된 바와 같이, 도 1의 코어들(106) 및/또는 캐시(108) 중 하나 이상은 프로세서들(602 및 604) 내에 위치될 수 있다. 그러나, 다른 실시예들은 도 6의 시스템(600) 내의 다른 회로들, 로직 유닛들 또는 디바이스들에 존재할 수 있다. 또한, 다른 실시예들은 도 6에 도시된 몇몇 회로들, 로직 유닛들 또는 디바이스들 전체에 걸쳐 분산될 수 있다.
칩셋(620)은 PtP 인터페이스 회로(641)를 이용하여 버스(640)와 통신할 수 있다. 버스(640)는 버스와 통신하는 하나 이상의 디바이스, 예컨대 버스 브리지(642) 및 I/O 디바이스들(643)을 가질 수 있다. 버스(644)를 통해, 버스 브리지(642)는 다른 디바이스들, 예컨대 키보드/마우스(645), 통신 디바이스들(646)(예컨대, 모뎀들, 네트워크 인터페이스 디바이스들, 또는 예를 들어 안테나(531)를 통하는 것을 포함하여, 네트워크 인터페이스 디바이스(530)를 참조하여 논의된 바와 같이, 컴퓨터 네트워크(503)와 통신할 수 있는 다른 통신 디바이스들), 오디오 I/O 디바이스, 및/또는 데이터 스토리지 디바이스(648)와 통신할 수 있다. 데이터 스토리지 디바이스(648)는 프로세서들(602 및/또는 604)에 의해 실행될 수 있는 코드(649)를 저장할 수 있다.
일부 실시예에서, 본 명세서에서 논의된 컴포넌트들 중 하나 이상이 SOC(System On Chip) 디바이스 상에서 구현될 수 있다. 도 7은 실시예에 따른 SOC 패키지의 블록도를 도시한다. 도 7에 도시된 바와 같이, SOC(702)는 하나 이상의 중앙 처리 유닛(CPU) 코어(720), 하나 이상의 그래픽 프로세서 유닛(GPU) 코어(730), 입력/출력(I/O) 인터페이스(740) 및 (메모리 제어기(120) 및/또는 로직(150)과 유사하거나 동일할 수 있는) 메모리 제어기(742)를 포함한다. SOC 패키지(702)의 다양한 컴포넌트들은 다른 도면들을 참조하여 본 명세서에서 논의된 것과 같이 인터커넥트 또는 버스에 연결될 수 있다. 또한, SOC 패키지(702)는 다른 도면들을 참조하여 본 명세서에서 논의된 것들과 같은, 더 많거나 더 적은 컴포넌트들을 포함할 수 있다. 또한, SOC 패키지(720)의 각각의 컴포넌트는, 예를 들어 본 명세서에서 다른 도면들을 참조하여 논의된 바와 같이 하나 이상의 다른 컴포넌트를 포함할 수 있다. 일 실시예에서, SOC 패키지(702)(및 그것의 컴포넌트들)는, 예를 들어 단일의 반도체 디바이스 상에 패키징되는 하나 이상의 집적 회로(IC) 다이 상에 제공된다.
도 7에 도시된 바와 같이, SOC 패키지(702)는 메모리 제어기(742)를 통해 (다른 도면들을 참조하여 본 명세서에서 논의된 메모리와 유사하거나 동일한 것일 수 있는) 메모리(760)에 연결된다. 실시예에서, 메모리(760)(또는 그것의 일부)는 SOC 패키지(702) 상에 통합될 수 있다.
I/O 인터페이스(740)는, 예를 들어 다른 도면들을 참조하여 본 명세서에서 논의된 것과 같은 인터커넥트 및/또는 버스를 통해, 하나 이상의 I/O 디바이스(770)에 연결될 수 있다. I/O 디바이스(들)(770)는 키보드, 마우스, 터치패드, 디스플레이, 이미지/비디오 캡처 디바이스(예컨대, 카메라 또는 캠코더/비디오 레코더), 터치 스크린, 스피커 등 중의 하나 이상을 포함할 수 있다. 또한, SOC 패키지(702)는 실시예에서 로직(150) 및/또는 메모리 제어기(120)를 포함/통합할 수 있다. 대안적으로, 로직(150) 및/또는 메모리 제어기(120)는 SOC 패키지(702)의 외부에(즉, 이산 로직으로서) 제공될 수 있다.
이하의 예는 추가 실시예들과 관련된다. 예 1은 비휘발성 메모리에 연결되어 하나 이상의 속성에 적어도 부분적으로 기초하여 비휘발성 메모리를 복수의 파티션으로 구성하는 메모리 제어기 로직을 포함하고, 애플리케이션 또는 운영 체제에 대해 가시적인 하나 이상의 볼륨은 복수의 파티션 중 하나 이상으로부터 형성되는 것이고, 하나 이상의 볼륨 각각은 하나 이상의 속성으로부터의 적어도 하나의 유사한 속성을 갖는 복수의 파티션 중 하나 이상을 포함하는 것인, 장치를 포함한다. 예 2는 예 1의 장치를 포함하고, 비휘발성 메모리는 프로세서가 비휘발성 메모리를 직접 어드레싱할 수 있게 하기 위해 프로세서의 어드레스 공간으로 매핑되는 것이다. 예 3은 예 1의 장치를 포함하고, 하나 이상의 속성은 UMA(Uniform Memory Access), NUMA(Non-Uniform Memory Access), 인터리브 유형, 통신 채널 폭 또는 속도, 장애 도메인의 유형, 또는 미러링 상태 중 하나 이상을 포함하는 것이다. 예 4는 예 1의 장치를 포함하고, 하나 이상의 볼륨은 시스템 리셋 또는 전력 손실 전반에 걸쳐 그 콘텐츠를 유지하는 것이다. 예 5는 예 1의 장치를 포함하고, 비휘발성 메모리는 하나 이상의 비휘발성 DIMM(듀얼 인라인 메모리 모듈)을 포함하는 것이다. 예 6은 예 1의 장치를 포함하고, 비휘발성 메모리는 나노와이어 메모리, FeTRAM(Ferro-electric transistor random access memory), MRAM(magnetoresistive random access memory), 플래시 메모리, STTRAM(Spin Torque Transfer Random Access Memory), 저항성 랜덤 액세스 메모리, 바이트 어드레싱 가능 3차원 크로스 포인트 메모리 및 PCM(Phase Change Memory) 중 하나 이상을 포함하는 것이다. 예 7은 예 1의 장치를 포함하고, 하나 이상의 프로세서 코어는 메모리 제어기 로직에 연결되어 비휘발성 메모리에 저장되는 데이터에 액세스한다. 예 8은 예 1의 장치를 포함하고, 메모리 제어기 로직, 하나 이상의 프로세서 코어, 및 비휘발성 메모리 중 하나 이상은 동일한 집적 회로 다이 상에 있다.
예 9는 비휘발성 메모리(NVM) 듀얼 인라인 메모리 모듈(DIMM)에 연결되어 NVM DIMM을 영구 영역 및 휘발성 영역으로 구성하는 메모리 제어기 로직을 포함하고, NVM DIMM은 프로세서가 NVM DIMM을 직접 어드레싱할 수 있게 하기 위해 프로세서의 어드레스 공간으로 매핑되는 것이고, NVM DIMM은 적어도 2개의 관리 파티션을 이용하는 것이고, 관리 파티션은 심지어 NVM DIMM이 프로세서의 어드레스 공간으로 매핑되기 전에 액세스 가능한 것인, 장치를 포함한다. 예 10은 예 9의 장치를 포함하고, 관리 파티션은 관리 인터페이스를 통해 액세스 가능한 것이다. 예 11은 예 10의 장치를 포함하고, BIOS(Basic Input/Output System) 또는 NVM 드라이버 중 하나 이상은 관리 파티션에 액세스하기 위해 관리 인터페이스를 이용하는 것이다. 예 12는 예 11의 장치를 포함하고, NVM 드라이버는 ACPI(Advanced Configuration and Power Interface)로부터의 정보에 적어도 부분적으로 기초하여 관리 인터페이스를 이용하는 것이다. 예 13은 예 9의 장치를 포함하고, 적어도 2개의 관리 파티션 중 하나는 NVM DIMM의 마지막으로 알려진 양호한(last known good) 구성에 대응하는 정보를 저장하는 것이다. 예 14는 예13의 장치를 포함하고, 마지막으로 알려진 양호한 구성에 대응하는 데이터를 저장하는 파티션이 운영 체체로부터 보호되는 것이다. 예 15는 예 13의 장치를 포함하고, BIOS(Basic Input/Output System)가 마지막으로 알려진 양호한 구성에 대응하는 데이터를 저장하는 파티션에 저장된 데이터에 액세스하는 것이다. 예 16은 예 13의 장치를 포함하고, 관리 소프트웨어는 NVM 구성 데이터를 BIOS에 전달하기 위해 적어도 2개의 관리 파티션 중 하나를 이용하는 것이다. 예 17은 예 13의 장치를 포함하고, 마더보드가 고장난 경우, NVM DIMM은 마지막으로 알려진 양호한 구성 정보에 적어도 부분적으로 기초하여 대체 시스템으로 마이그레이션되는 것이다. 예 18은 예 9의 장치를 포함하고, NVM DIMM은 나노와이어 메모리, FeTRAM(Ferro-electric transistor random access memory), MRAM(magnetoresistive random access memory), 플래시 메모리, STTRAM(Spin Torque Transfer Random Access Memory), 저항성 랜덤 액세스 메모리, 바이트 어드레싱 가능 3차원 크로스 포인트 메모리 및 PCM(Phase Change Memory) 중 하나 이상을 포함하는 것이다. 예 19는 예 9의 장치를 포함하고, 하나 이상의 프로세서 코어가 메모리 제어기 로직에 연결되어 NVM DIMM에 저장된 데이터에 액세스한다.
예 20은 하나 이상의 속성에 적어도 부분적으로 기초하여 비휘발성 메모리를 복수의 파티션으로 구성하는 단계를 포함하고, 애플리케이션 또는 운영 체제에 가시적인 하나 이상의 볼륨은 하나 이상의 복수의 파티션으로부터 형성되고, 하나 이상의 볼륨 각각은 하나 이상의 속성으로부터의 적어도 하나의 유사한 속성을 갖는 복수의 파티션 중 하나 이상을 포함하는, 방법을 포함한다. 예 21은 예 20의 방법을 포함하고, 프로세서가 비휘발성 메모리를 직접 어드레싱할 수 있게 하기 위해 비휘발성 메모리를 프로세서의 어드레스 공간으로 매핑하는 단계를 추가로 포함한다. 예 22는 예 20의 방법을 포함하고, 하나 이상의 속성은 UMA(Uniform Memory Access), NUMA(Non-Uniform Memory Access), 인터리브 유형, 통신 채널 폭 또는 속도, 장애 도메인의 유형, 또는 미러링 상태 중 하나 이상을 포함하는 것이다.
예 23은 NVM DIMM을 영구 영역 및 휘발성 영역으로 구성하는 단계를 포함하고, NVM DIMM은 프로세서가 NVM DIMM을 직접 어드레싱할 수 있게 하기 위해 프로세서의 어드레스 공간으로 매핑되고, NVM DIMM은 적어도 2개의 관리 파티션을 이용하는 것이고, 관리 파티션은 심지어 NVM DIMM이 프로세서의 어드레스 공간으로 매핑되기 전에 액세스 가능한 것인, 방법을 포함한다. 예 24는 예 23의 방법을 포함하고, 관리 파티션은 관리 인터페이스를 통해 액세스 가능한 것이다. 예 25는 예 24의 장치를 포함하고, BIOS(Basic Input/Output System) 또는 NVM 드라이버 중 하나 이상은 관리 파티션에 액세스하기 위해 관리 인터페이스를 이용하는 것이다.
예 26은 하나 이상의 프로세서 코어를 갖는 프로세서; 및 비휘발성 메모리에 연결되어 하나 이상의 속성에 적어도 부분적으로 기초하여 비휘발성 메모리를 복수의 파티션으로 구성하는 메모리 제어기 로직을 포함하고, 애플리케이션 또는 운영 체제에 대해 가시적인 하나 이상의 볼륨은 복수의 파티션 중 하나 이상으로부터 형성되는 것이고, 하나 이상의 볼륨 각각은 하나 이상의 속성으로부터의 적어도 하나의 유사한 속성을 갖는 복수의 파티션 중 하나 이상을 포함하는 것인, 시스템을 포함한다. 예 27은 예 26의 시스템을 포함하고, 비휘발성 메모리는 프로세서가 비휘발성 메모리를 직접 어드레싱할 수 있게 하기 위해 프로세서의 어드레스 공간으로 매핑되는 것이다. 예 28은 예 26의 시스템을 포함하고, 하나 이상의 속성은 UMA(Uniform Memory Access), NUMA(Non-Uniform Memory Access), 인터리브 유형, 통신 채널 폭 또는 속도, 장애 도메인의 유형, 또는 미러링 상태 중 하나 이상을 포함하는 것이다.
예 29는 하나 이상의 프로세서 코어를 갖는 프로세서; 및 비휘발성 메모리(NVM) 듀얼 인라인 메모리 모듈(DIMM)에 연결되어 NVM DIMM을 영구 영역 및 휘발성 영역으로 구성하는 메모리 제어기 로직을 포함하고, NVM DIMM은 프로세서가 NVM DIMM을 직접 어드레싱할 수 있게 하기 위해 프로세서의 어드레스 공간으로 매핑되는 것이고, NVM DIMM은 적어도 2개의 관리 파티션을 이용하는 것이고, 관리 파티션은 심지어 NVM DIMM이 프로세서의 어드레스 공간으로 매핑되기 전에 액세스 가능한 것인, 시스템을 포함한다. 예 30은 예 29의 시스템을 포함하고, 관리 파티션은 관리 인터페이스를 통해 액세스 가능한 것이다. 예 31은 예 30의 시스템을 포함하고, BIOS(Basic Input/Output System) 또는 NVM 드라이버 중 하나 이상은 관리 파티션에 액세스하기 위해 관리 인터페이스를 이용하는 것이다.
예 32는 임의의 선행하는 예에서 기재된 방법을 수행하는 수단을 포함하는 장치를 포함한다.
예 33은 임의의 선행하는 예에서 기재된 방법을 구현하거나 장치를 실현하기 위한 머신 판독 가능한 명령어들을 포함하는 머신 판독 가능한 스토리지를 포함한다.
다양한 실시예들에서, 예를 들어 도 1 내지 도 7을 참조하여 본 명세서에서 논의된 동작들은, 예를 들어 본 명세서에서 논의된 프로세스를 수행하도록 컴퓨터를 프로그램하는 데 이용되는 명령어들(또는 소프트웨어 절차들)이 저장되어 있는 유형의(tangible)(예를 들어, 비일시적인) 머신 판독 가능 또는 컴퓨터 판독 가능 매체를 포함하는 컴퓨터 프로그램 제품으로서 제공될 수 있는 하드웨어(예를 들어, 회로), 소프트웨어, 펌웨어, 마이크로코드 또는 이들의 조합으로서 구현될 수 있다. 또한, "로직"이라는 용어는 예로서, 소프트웨어, 하드웨어, 또는 소프트웨어와 하드웨어의 조합들을 포함할 수 있다. 머신 판독 가능 매체는 도 1 내지 도 7에 대해 논의된 것과 같은 스토리지 디바이스를 포함할 수 있다.
추가로, 그러한 유형의 컴퓨터 판독 가능 매체는 컴퓨터 프로그램 제품으로서 다운로딩될 수 있고, 프로그램은 통신 링크(예를 들어, 버스, 모뎀, 또는 네트워크 접속)를 통한 (반송파 또는 다른 전파 매체와 같은) 데이터 신호들에 의해 원격 컴퓨터(예를 들어, 서버)로부터 요청 컴퓨터(예를 들어, 클라이언트)까지 전송될 수 있다.
명세서에서 "일 실시예" 또는 "실시예"에 대한 참조는 실시예와 관련되어 설명된 특정적인 특징, 구조, 또는 특성이 적어도 구현예에 포함될 수 있다는 것을 의미한다. 본 명세서의 여러 곳에서 "일 실시예에서"라는 구문이 등장하는 것은 모두 동일 실시예를 지칭할 수도 있고 그렇지 않을 수도 있다.
또한, 상세한 설명 및 청구항에서, "연결" 및 "접속"이라는 용어는, 그 파생어들과 함께 사용될 수 있다. 일부 실시예들에서, "접속된"은, 2개 이상의 요소들이 서로 직접 물리적으로 또는 전기적으로 접촉하는 것을 나타내는 데 이용될 수 있다. "연결"은 2개 이상의 요소가 직접 물리적 또는 전기적으로 접촉한다는 것을 의미할 수 있다. 그러나, "연결"은 또한 2개 이상의 요소들이 서로 직접적인 접촉을 이루지 않을 수 있지만 여전히 서로 협력하거나 상호작용할 수 있는 것을 의미할 수 있다.
따라서, 실시예들은 구조적 특징들 및/또는 방법론적 동작들에 대한 특정 언어로 설명되었지만, 청구 대상은 설명된 특정 특징들 또는 동작들에 제한되지는 않을 수 있다는 것을 이해해야 한다. 오히려, 특정 특징들 및 단계들은 청구 요지를 구현하는 샘플 형태들로서 개시된다.

Claims (25)

  1. 장치로서,
    비휘발성 메모리에 연결되어 하나 이상의 속성에 적어도 부분적으로 기초하여 상기 비휘발성 메모리를 복수의 파티션으로 구성하는 메모리 제어기 로직을 포함하고,
    애플리케이션 또는 운영 체제에 대해 가시적인 하나 이상의 볼륨은 상기 복수의 파티션 중 하나 이상으로부터 형성되는 것이고, 하나 이상의 볼륨 각각은 상기 하나 이상의 속성으로부터의 적어도 하나의 유사한 속성을 갖는 상기 복수의 파티션 중 하나 이상을 포함하는 것인, 장치.
  2. 제1항에 있어서,
    상기 비휘발성 메모리는 프로세서가 상기 비휘발성 메모리를 직접 어드레싱할 수 있게 하기 위해 상기 프로세서의 어드레스 공간으로 매핑되는 것인, 장치.
  3. 제1항에 있어서,
    상기 하나 이상의 속성은 UMA(Uniform Memory Access), NUMA(Non-Uniform Memory Access), 인터리브 유형, 통신 채널 폭 또는 속도, 장애 도메인의 유형, 또는 미러링(mirroring) 상태 중 하나 이상을 포함하는 것인, 장치.
  4. 제1항에 있어서,
    상기 하나 이상의 볼륨은 시스템 리셋들 또는 전력 손실 전반에 걸쳐 그 콘텐츠를 유지하는 것인, 장치.
  5. 제1항에 있어서,
    상기 비휘발성 메모리는 하나 이상의 비휘발성 DIMM(Dual Inline Memory Module: 듀얼 인라인 메모리 모듈)을 포함하는 것인, 장치.
  6. 제1항에 있어서,
    상기 비휘발성 메모리는 나노와이어 메모리, FeTRAM(Ferro-electric transistor random access memory), MRAM(magnetoresistive random access memory), 플래시 메모리, STTRAM(Spin Torque Transfer Random Access Memory), 저항성 랜덤 액세스 메모리, 바이트 어드레싱 가능 3차원 크로스 포인트 메모리 및 PCM(Phase Change Memory) 중 하나 이상을 포함하는 것인, 장치.
  7. 제1항에 있어서,
    상기 비휘발성 메모리에 저장된 데이터에 액세스하기 위해 하나 이상의 프로세서 코어가 상기 메모리 제어기 로직에 연결되는, 장치.
  8. 제1항에 있어서,
    상기 메모리 제어기 로직, 하나 이상의 프로세서 코어, 및 상기 비휘발성 메모리 중 하나 이상은 동일한 집적 회로 다이 상에 있는, 장치.
  9. 장치로서,
    비휘발성 메모리(NVM) 듀얼 인라인 메모리 모듈(DIMM)에 연결되어 상기 NVM DIMM을 영구 영역 및 휘발성 영역으로 구성하는 메모리 제어기 로직을 포함하고,
    상기 NVM DIMM은 프로세서가 상기 NVM DIMM을 직접 어드레싱할 수 있게 하기 위해 상기 프로세서의 어드레스 공간으로 매핑되는 것이고, 상기 NVM DIMM은 적어도 2개의 관리 파티션들을 이용하는 것이고, 상기 관리 파티션들은 심지어 상기 NVM DIMM이 상기 프로세서의 어드레스 공간으로 매핑되기 전에도 액세스 가능한 것인, 장치.
  10. 제9항에 있어서,
    상기 관리 파티션들은 관리 인터페이스를 통해 액세스 가능한 것인, 장치.
  11. 제10항에 있어서,
    BIOS(Basic Input/Output System) 또는 NVM 드라이버 중 하나 이상은 상기 관리 파티션들에 액세스하기 위해 상기 관리 인터페이스를 이용하는 것인, 장치.
  12. 제11항에 있어서,
    상기 NVM 드라이버는 ACPI(Advanced Configuration and Power Interface)로부터의 정보에 적어도 부분적으로 기초하여 상기 관리 인터페이스를 이용하는 것인, 장치.
  13. 제9항에 있어서,
    상기 적어도 2개의 관리 파티션들 중 하나는 상기 NVM DIMM의 마지막으로 알려진 양호한 구성(last known good configuration)에 대응하는 정보를 저장하는 것이거나, 상기 마지막으로 알려진 양호한 구성에 대응하는 데이터를 저장하는 파티션이 운영 체체로부터 보호되는 것이거나, BIOS(Basic Input/Output System)가 상기 마지막으로 알려진 양호한 구성에 대응하는 데이터를 저장하는 파티션에 저장된 데이터에 액세스하는 것인, 장치.
  14. 제13항에 있어서,
    관리 소프트웨어는 NVM 구성 데이터를 BIOS에 전달하기 위해 상기 적어도 2개의 관리 파티션들 중 하나를 이용하는 것인, 장치.
  15. 제13항에 있어서,
    마더보드가 고장난 경우, 상기 NVM DIMM은 상기 마지막으로 알려진 양호한 구성 정보에 적어도 부분적으로 기초하여 대체 시스템으로 마이그레이션되는 것인, 장치.
  16. 제9항에 있어서,
    상기 NVM DIMM은, 나노와이어 메모리, FeTRAM(Ferro-electric transistor random access memory), MRAM(magnetoresistive random access memory), 플래시 메모리, STTRAM(Spin Torque Transfer Random Access Memory), 저항성 랜덤 액세스 메모리, 바이트 어드레싱 가능 3차원 크로스 포인트 메모리 및 PCM(Phase Change Memory) 중 하나 이상을 포함하는 것인, 장치.
  17. 제9항에 있어서,
    상기 NVM DIMM에 저장된 데이터에 액세스하기 위해 하나 이상의 프로세서 코어가 상기 메모리 제어기 로직에 연결되는, 장치.
  18. 방법으로서,
    하나 이상의 속성에 적어도 부분적으로 기초하여 비휘발성 메모리를 복수의 파티션으로 구성하는 단계를 포함하고,
    애플리케이션 또는 운영 체제에 가시적인 하나 이상의 볼륨은 하나 이상의 상기 복수의 파티션으로부터 형성되고, 상기 하나 이상의 볼륨 각각은 상기 하나 이상의 속성으로부터의 적어도 하나의 유사한 속성을 갖는 상기 복수의 파티션 중 하나 이상을 포함하는, 방법.
  19. 제20항에 있어서,
    프로세서가 상기 비휘발성 메모리를 직접 어드레싱할 수 있게 하기 위해 상기 비휘발성 메모리를 상기 프로세서의 어드레스 공간으로 매핑하는 단계를 추가로 포함하는, 방법.
  20. 제20항에 있어서,
    상기 하나 이상의 속성은, UMA(Uniform Memory Access), NUMA(Non-Uniform Memory Access), 인터리브 유형, 통신 채널 폭 또는 속도, 장애(fault) 도메인의 유형 또는 미러링(mirroring) 상태 중 하나 이상을 포함하는 것인, 방법.
  21. 방법으로서,
    NVM DIMM을 영구 영역 및 휘발성 영역으로 구성하는 단계를 포함하고,
    상기 NVM DIMM은 프로세서가 상기 NVM DIMM을 직접 어드레싱할 수 있게 하기 위해 상기 프로세서의 어드레스 공간으로 매핑되고, 상기 NVM DIMM은 적어도 2개의 관리 파티션들을 이용하는 것이고, 상기 관리 파티션들은 상기 NVM DIMM이 상기 프로세서의 어드레스 공간으로 매핑되기 전이라도 액세스 가능한 것인, 방법.
  22. 제21항에 있어서,
    상기 관리 파티션들은 관리 인터페이스를 통해 액세스 가능한 것인, 방법.
  23. 제22항에 있어서,
    BIOS(Basic Input/Output System) 또는 NVM 드라이버 중 하나 이상은 상기 관리 파티션들에 액세스하기 위해 상기 관리 인터페이스를 이용하는 것인, 장치.
  24. 하나 이상의 명령어를 포함하는 컴퓨터 판독 가능 매체로서, 상기 명령어는 프로세서 상에서 실행될 때 제18항 내지 제23항 중 어느 한 항의 하나 이상의 동작을 수행하도록 상기 프로세서를 구성하는, 컴퓨터 판독 가능 매체.
  25. 제18항 내지 제23항 중 어느 한 항에 기재된 방법을 수행하기 위한 수단을 포함하는 장치.
KR1020177013596A 2014-12-22 2015-11-24 영구 메모리 할당 및 구성 KR102519904B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/580,125 US10126950B2 (en) 2014-12-22 2014-12-22 Allocating and configuring persistent memory
US14/580,125 2014-12-22
PCT/US2015/062277 WO2016105790A1 (en) 2014-12-22 2015-11-24 Allocating and configuring persistent memory

Publications (2)

Publication Number Publication Date
KR20170100488A true KR20170100488A (ko) 2017-09-04
KR102519904B1 KR102519904B1 (ko) 2023-04-10

Family

ID=56129384

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177013596A KR102519904B1 (ko) 2014-12-22 2015-11-24 영구 메모리 할당 및 구성

Country Status (5)

Country Link
US (3) US10126950B2 (ko)
KR (1) KR102519904B1 (ko)
CN (1) CN107077303B (ko)
TW (1) TWI567551B (ko)
WO (1) WO2016105790A1 (ko)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10126950B2 (en) 2014-12-22 2018-11-13 Intel Corporation Allocating and configuring persistent memory
US9740603B2 (en) * 2015-08-06 2017-08-22 International Business Machines Corporation Managing content in persistent memory modules when organization of the persistent memory modules changes
US20170083254A1 (en) * 2015-09-19 2017-03-23 Qualcomm Incorporated Secure transaction management techniques
US9942631B2 (en) 2015-09-25 2018-04-10 Intel Corporation Out-of-band platform tuning and configuration
US10191664B2 (en) * 2015-10-16 2019-01-29 SK Hynix Inc. Memory system
US10169242B2 (en) * 2015-10-16 2019-01-01 SK Hynix Inc. Heterogeneous package in DIMM
US11138120B2 (en) 2015-10-16 2021-10-05 SK Hynix Inc. Memory system
US20170109074A1 (en) * 2015-10-16 2017-04-20 SK Hynix Inc. Memory system
US10180796B2 (en) * 2015-10-16 2019-01-15 SK Hynix Inc. Memory system
US10810144B2 (en) 2016-06-08 2020-10-20 Samsung Electronics Co., Ltd. System and method for operating a DRR-compatible asynchronous memory module
US10210012B2 (en) * 2016-06-27 2019-02-19 Intel Corporation Techniques for persistent memory virtualization
US10390114B2 (en) 2016-07-22 2019-08-20 Intel Corporation Memory sharing for physical accelerator resources in a data center
US10515006B2 (en) 2016-07-29 2019-12-24 Samsung Electronics Co., Ltd. Pseudo main memory system
US10025714B2 (en) * 2016-09-30 2018-07-17 Super Micro Computer, Inc. Memory type range register with write-back cache strategy for NVDIMM memory locations
US9794366B1 (en) 2016-10-19 2017-10-17 Red Hat, Inc. Persistent-memory management
US11243782B2 (en) 2016-12-14 2022-02-08 Microsoft Technology Licensing, Llc Kernel soft reset using non-volatile RAM
US10180793B2 (en) 2017-01-31 2019-01-15 Hewlett Packard Enterprise Development Lp Performance attributes for memory
US10318175B2 (en) 2017-03-07 2019-06-11 Samsung Electronics Co., Ltd. SSD with heterogeneous NVM types
US10901894B2 (en) 2017-03-10 2021-01-26 Oracle International Corporation Allocating and accessing memory pages with near and far memory blocks from heterogeneous memories
US11343657B2 (en) * 2017-03-24 2022-05-24 Samsung Electronics Co., Ltd. System and method for client protocol selection for short data service
US11023164B2 (en) 2017-06-19 2021-06-01 Micron Technology, Inc. Managed NAND data tagging
TWI645295B (zh) * 2017-06-20 2018-12-21 慧榮科技股份有限公司 資料儲存裝置與資料儲存方法
TWI617917B (zh) * 2017-08-28 2018-03-11 慧榮科技股份有限公司 用以優化資料儲存裝置之資料儲存方法及其資料儲存裝置
US11341490B2 (en) * 2017-10-11 2022-05-24 International Business Machines Corporation Carbon footprint blockchain network
EP3673378A4 (en) * 2017-10-31 2021-04-07 Hewlett-Packard Development Company, L.P. CONFIGURATION OF MEMORY MODULES WITH DOUBLE ROW OF NON-VOLATILE CONNECTIONS
US10776267B2 (en) * 2017-12-11 2020-09-15 Red Hat, Inc. Mirrored byte addressable storage
US10579517B2 (en) * 2018-03-19 2020-03-03 Dell Products, Lp System and method for providing per channel frequency optimization in a double data rate memory system
US10635311B2 (en) * 2018-04-25 2020-04-28 Dell Products, L.P. Information handling system with reduced reset during dual in-line memory module goal reconfiguration
US11157319B2 (en) * 2018-06-06 2021-10-26 Western Digital Technologies, Inc. Processor with processor memory pairs for improved process switching and methods thereof
JP7071640B2 (ja) * 2018-09-20 2022-05-19 富士通株式会社 演算処理装置、情報処理装置及び演算処理装置の制御方法
TWI688859B (zh) * 2018-12-19 2020-03-21 財團法人工業技術研究院 記憶體控制器與記憶體頁面管理方法
US10896142B2 (en) * 2019-03-29 2021-01-19 Intel Corporation Non-volatile memory out-of-band management interface for all host processor power states
US10996893B2 (en) * 2019-06-10 2021-05-04 Microsoft Technology Licensing, Llc Non-volatile storage partition identifier
US11113188B2 (en) 2019-08-21 2021-09-07 Microsoft Technology Licensing, Llc Data preservation using memory aperture flush order
US20210389885A1 (en) * 2020-06-16 2021-12-16 Western Digital Technologies, Inc. Fast Recovery For Persistent Memory Region (PMR) of a Data Storage Device
US11544185B2 (en) 2020-07-16 2023-01-03 Silicon Motion, Inc. Method and apparatus for data reads in host performance acceleration mode
US11429545B2 (en) 2020-07-16 2022-08-30 Silicon Motion, Inc. Method and apparatus for data reads in host performance acceleration mode
CN113946279A (zh) * 2020-07-16 2022-01-18 慧荣科技股份有限公司 主机效能加速模式的数据读取方法及装置
US11544186B2 (en) 2020-07-16 2023-01-03 Silicon Motion, Inc. Method and apparatus for data reads in host performance acceleration mode
US20220114025A1 (en) * 2020-10-13 2022-04-14 Dell Products L.P. Dynamic memory allocation based on workload characterization and optimization
CN115220639A (zh) 2021-04-15 2022-10-21 伊姆西Ip控股有限责任公司 管理存储系统的方法、电子设备和计算机程序产品
US20240004562A1 (en) * 2022-06-30 2024-01-04 Advanced Micro Devices, Inc. Dynamic memory reconfiguration

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130275682A1 (en) * 2011-09-30 2013-10-17 Raj K. Ramanujan Apparatus and method for implementing a multi-level memory hierarchy over common memory channels
KR20140010794A (ko) * 2012-07-17 2014-01-27 주식회사 디에이아이오 하이브리드 스토리지 장치
US20140258701A1 (en) * 2011-11-22 2014-09-11 Mohan Kumar Computing platform performance management with ras services
US20140297929A1 (en) * 2010-09-28 2014-10-02 Fusion-Io, Inc. Non-volatile memory interface
US20140310451A1 (en) * 2013-04-12 2014-10-16 Microsoft Corporation Block storage using a hybrid memory device

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080320209A1 (en) 2000-01-06 2008-12-25 Super Talent Electronics, Inc. High Performance and Endurance Non-volatile Memory Based Storage Systems
US6601212B1 (en) 2000-03-29 2003-07-29 Hewlett-Packard Development Company, Lp. Method and apparatus for downloading firmware to a non-volatile memory
CN1383563A (zh) * 2000-06-09 2002-12-04 皇家菲利浦电子有限公司 用于对在存储介质上可用的存储空间进行隐分区的方法
US7069431B2 (en) * 2001-07-31 2006-06-27 Lenovo ( Singapore) Pte Ltd. Recovery of a BIOS image
US7370166B1 (en) * 2004-04-30 2008-05-06 Lexar Media, Inc. Secure portable storage device
ATE411669T1 (de) * 2004-07-27 2008-10-15 Telecom Italia Spa Übertragung von multimedia-inhalten zu mehreren mobilen benutzern
US20070132049A1 (en) * 2005-12-12 2007-06-14 Stipe Barry C Unipolar resistance random access memory (RRAM) device and vertically stacked architecture
US7620784B2 (en) * 2006-06-09 2009-11-17 Microsoft Corporation High speed nonvolatile memory device using parallel writing among a plurality of interfaces
US8074017B2 (en) * 2006-08-11 2011-12-06 Intel Corporation On-disk caching for raid systems
US7886190B2 (en) 2006-09-29 2011-02-08 Intel Corporation System and method for enabling seamless boot recovery
WO2008069058A1 (ja) * 2006-12-08 2008-06-12 Nec Corporation 無線ネットワーク性能監視方法、無線通信システム、装置及びそのプログラム
US8874831B2 (en) * 2007-06-01 2014-10-28 Netlist, Inc. Flash-DRAM hybrid memory module
EP2271987A4 (en) * 2008-05-01 2011-04-20 Hewlett Packard Development Co STORING CONTROL POINT DATA IN NON-VOLATILE MEMORY
WO2009153982A1 (ja) 2008-06-20 2009-12-23 パナソニック株式会社 複数区分型不揮発性記憶装置およびシステム
US20110035540A1 (en) * 2009-08-10 2011-02-10 Adtron, Inc. Flash blade system architecture and method
US8854861B2 (en) 2009-12-29 2014-10-07 Micron Technology, Inc. Mixed mode programming for phase change memory
US8954821B2 (en) 2009-12-29 2015-02-10 Microntechnology, Inc. Memory device having address and command selectable capabilities
US10360143B2 (en) * 2010-07-01 2019-07-23 Qualcomm Incorporated Parallel use of integrated non-volatile memory and main volatile memory within a mobile device
US20120036308A1 (en) * 2010-08-06 2012-02-09 Swanson Robert C Supporting a secure readable memory region for pre-boot and secure mode operations
US9575908B2 (en) * 2011-02-08 2017-02-21 Diablo Technologies Inc. System and method for unlocking additional functions of a module
US8874935B2 (en) * 2011-08-30 2014-10-28 Microsoft Corporation Sector map-based rapid data encryption policy compliance
WO2012119432A1 (zh) * 2011-08-31 2012-09-13 华为技术有限公司 提高计算机系统稳定性的方法及计算机系统
WO2013077867A1 (en) * 2011-11-22 2013-05-30 Intel Corporation Access control for non-volatile random access memory across platform agents
US20150248316A1 (en) * 2012-09-28 2015-09-03 Hewlett-Packard Development Company, L.P. System and method for dynamically selecting between memory error detection and error correction
US9009421B2 (en) * 2012-11-13 2015-04-14 International Business Machines Corporation Dynamically improving memory affinity of logical partitions
US9110795B2 (en) * 2012-12-10 2015-08-18 Qualcomm Incorporated System and method for dynamically allocating memory in a memory subsystem having asymmetric memory components
WO2014158167A1 (en) * 2013-03-28 2014-10-02 Hewlett-Packard Development Company, L.P. Split mode addressing of persistent memory
US9880754B2 (en) * 2014-07-09 2018-01-30 Dell Products, Lp System and method for enabling transportability of a non volatile dual inline memory module
US10126950B2 (en) 2014-12-22 2018-11-13 Intel Corporation Allocating and configuring persistent memory

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140297929A1 (en) * 2010-09-28 2014-10-02 Fusion-Io, Inc. Non-volatile memory interface
US20130275682A1 (en) * 2011-09-30 2013-10-17 Raj K. Ramanujan Apparatus and method for implementing a multi-level memory hierarchy over common memory channels
US20140258701A1 (en) * 2011-11-22 2014-09-11 Mohan Kumar Computing platform performance management with ras services
KR20140010794A (ko) * 2012-07-17 2014-01-27 주식회사 디에이아이오 하이브리드 스토리지 장치
US20140310451A1 (en) * 2013-04-12 2014-10-16 Microsoft Corporation Block storage using a hybrid memory device

Also Published As

Publication number Publication date
KR102519904B1 (ko) 2023-04-10
TWI567551B (zh) 2017-01-21
US10126950B2 (en) 2018-11-13
CN107077303A (zh) 2017-08-18
US20160179375A1 (en) 2016-06-23
CN107077303B (zh) 2022-11-15
US10339047B2 (en) 2019-07-02
TW201636847A (zh) 2016-10-16
US20190065364A1 (en) 2019-02-28
US20190303288A1 (en) 2019-10-03
WO2016105790A1 (en) 2016-06-30

Similar Documents

Publication Publication Date Title
US10339047B2 (en) Allocating and configuring persistent memory
US11966581B2 (en) Data management scheme in virtualized hyperscale environments
US10866797B2 (en) Data storage device and method for reducing firmware update time and data processing system including the device
US10564872B2 (en) System and method for dynamic allocation to a host of memory device controller memory resources
US11487675B1 (en) Collecting statistics for persistent memory
US9760497B2 (en) Hierarchy memory management
US11243886B2 (en) Hybrid memory module and system and method of operating the same
US8078862B2 (en) Method for assigning physical data address range in multiprocessor system
CN112673341A (zh) 具有可配置存储的NVMe直接虚拟化
CN113448504A (zh) 具有用于实现内部固态驱动器操作的外部软件执行的固态驱动器
CN110825320A (zh) 虚拟化固态存储介质的隔离区域
US20200348973A1 (en) Performance monitoring and resource management
US20220300165A1 (en) Cooperative Storage Architecture
US11422702B2 (en) Managing utilization of storage class memory (SCM) resources
US11023139B2 (en) System for speculative block IO aggregation to reduce uneven wearing of SCMs in virtualized compute node by offloading intensive block IOs
US20230147952A1 (en) Virtualized system and method of controlling access to nonvolatile memory device in virtualization environment
US11995327B2 (en) Data storage device and method for adaptive host memory buffer allocation based on virtual function prioritization
US20230139729A1 (en) Method and apparatus to dynamically share non-volatile cache in tiered storage
US10579392B2 (en) System and method for mapping physical memory with mixed storage class memories
US20240168666A1 (en) Storage system and method of controlling operation of the same
US20240028209A1 (en) Distributed region tracking for tiered memory systems
US20230004417A1 (en) Method and apparatus to select assignable device interfaces for virtual device composition
KR20230068260A (ko) 가상화 시스템 및 가상화 환경에서 비휘발성 메모리 장치에 대한 액세스 제어 방법 장치
TW202340931A (zh) 具有雜訊鄰居緩解及動態位址範圍分配的直接交換快取

Legal Events

Date Code Title Description
AMND Amendment
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant