KR101767359B1 - 다이렉트 액세스를 갖는 다중-레벨 메모리 - Google Patents
다이렉트 액세스를 갖는 다중-레벨 메모리 Download PDFInfo
- Publication number
- KR101767359B1 KR101767359B1 KR1020167036731A KR20167036731A KR101767359B1 KR 101767359 B1 KR101767359 B1 KR 101767359B1 KR 1020167036731 A KR1020167036731 A KR 1020167036731A KR 20167036731 A KR20167036731 A KR 20167036731A KR 101767359 B1 KR101767359 B1 KR 101767359B1
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- volatile memory
- storage
- page
- amount
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2024—Rewritable memory not requiring erasing, e.g. resistive or ferroelectric RAM
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/205—Hybrid memory, e.g. using both volatile and non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7204—Capacity control, e.g. partitioning, end-of-life degradation
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
다이렉트 액세스를 갖는 다중-레벨 메모리를 구현하기 위한 방법, 디바이스 및 시스템의 실시예들이 개시된다. 일 실시예에서, 방법은 컴퓨터 시스템 내에서 동적 랜덤 액세스 메모리(DRAM)에 대한 메모리 대안(memory alternative)으로서 사용되도록 비-휘발성 랜덤 액세스 메모리(non-volatile random access memory: NVRAM)의 제1 양(amount)을 지정하는 단계를 포함한다. 이어서, 이 방법은 대용량 스토리지 디바이스(mass storage device)에 대한 스토리지 대안으로서 사용되도록 상기 NVRAM의 제2 양을 지정함으로써 진행한다. 이어서, 이 방법은 상기 컴퓨터 시스템의 동작 동안에, 상기 NVRAM의 제1 양의 적어도 제1 부분을 상기 메모리 대안 지정에서 상기 스토리지 대안 지정으로 재지정한다. 마지막으로, 이 방법은 상기 컴퓨터 시스템의 동작 동안에, 상기 NVRAM의 제2 양의 적어도 제1 부분을 상기 스토리지 대안 지정에서 상기 메모리 대안 지정으로 재지정한다.
Description
본 발명은 다이렉트 비-휘발성 액세스를 갖는 다중-레벨 메모리 서브시스템을 구현하는 것에 관한 것이다.
상변화 메모리 및 스위치(phase-change memory and switch:PCMS)는 오늘날의 고체 상태 스토리지 디바이스들에서 보편적인 NAND 비-휘발성 스토리지 기술에 대한 후속주자로서 개발되고 있는 비-휘발성 저장 기술이다. PCMS는 NAND 플래시보다 훨씬 고성능을 제공하며 실제로 현재 대부분의 클라이언트 컴퓨팅 디바이스들 내에서 주요 동적 스토리지로서 사용되고 있는 동적 랜덤 액세스 메모리(DRAM)의 성능치에 접근하기 시작했다. PCMS 스토리지는 초기에는 NAND 스토리지보다 비트당 가격이 더 비쌌지만, 이러한 관계는 시간이 지남에 따라서 변할 것으로 예측되며, 결국에는, PCMS가 NAND보다 더 저렴하게 될 것이다.
다음의 설명 및 첨부 도면들이 본 발명의 실시예들을 예시하는데 사용된다.
도 1은 대표적인 컴퓨터 시스템의 실시예를 도시한다.
도 2는 컴퓨터 시스템에서 간단한 2-레벨 메모리 구현의 실시예를 도시한다.
도 3은 비-휘발성 랜덤 액세스 메모리를 위한 캐시로서 사용되는 동적 랜덤 액세스 메모리를 갖는 다중-레벨 메모리 기반 시스템의 실시예를 도시한다.
도 4는 동적 랜덤 액세스 메모리 캐시의 일부의 특화된 사용을 설명하는 다중-레벨 메모리 기반 시스템의 실시예를 도시한다.
도 5는 프로세서를 위한 물리적 어드레스 가능한 메모리 스페이스의 하위 4GB를 도시한다.
도 6은 원격 메모리(far memory)를 위해 일 부분을 그리고 스토리지를 위해 다른 부분을 사용하는 이중-파티션된 비-휘발성 랜덤 액세스 메모리의 실시예를 도시한다.
도 7은 물리적 비-휘발성 랜덤 액세스 메모리 디바이스들에서 수시로-변하는(ever-changing) 페이지들로 페이지-단위(page-granular) 플랫폼 물리적 어드레스들 및 논리적 블록 어드레스들을 맵핑하는 기능을 제공하는 어드레스 리다이렉션 테이블들(address redirection tables)의 실시예를 도시한다.
도 8은 스토리지 사용 메모리 사용을 위한 비-휘발성 랜덤 액세스 메모리의 어떠한 사전지정된 물리적 선형 부분도 가지지 않는 비-휘발성 랜덤 액세스 메모리로 플랫폼 물리적 어드레스들 및 논리적 블록 어드레스들을 맵핑하는 어드레스 리다이렉션 테이블들의 실시예를 도시한다.
도 9는 특정 타입의 디바이스 내에 상주하는 비-휘발성 스토리지 페이지들이 소프트웨어 애플리케이션의 어드레스 스페이스로 직접 맵핑될 수 있게 하는 프로세스의 실시예의 흐름도이다.
도 10은 페이지 엠프티 기록 정책(page empty write policy)을 사용하는 PCMS 페이지 클리닝 프로세스(page cleaning process)의 실시예를 도시한다.
도 11은 팬텀 어드레스 스페이스(phantom address space)에서 사용가능한 PCMS 페이지들에 데이터를 기록하는 기록 메커니즘에 대한 프로세스 흐름의 실시예를 도시한다.
도 12는 PCMS 페이지들이 전력/성능 측면에서 효율적으로 기록될 수 있게 하는 메커니즘의 실시예를 도시한다.
도 13은 메모리 지정과 스토리지 지정 간에서 비-휘발성 랜덤 액세스 메모리 페이지들의 일관된 이동을 가능하게 하는 메커니즘의 실시예를 도시한다.
도 14는 불필요한 PCMS 평면 천이들(plane transitions)을 제거하는 프로세스를 지원하는 프로세스 및 이에 수반되는 메커니즘(즉, 하드웨어 로직)의 실시예를 도시한다.
도 15는 다이렉트 액세스-기반 메모리 서브시스템을 갖는 다중-레벨 메모리를 포함하는 컴퓨팅 디바이스의 실시예를 도시한다.
도 1은 대표적인 컴퓨터 시스템의 실시예를 도시한다.
도 2는 컴퓨터 시스템에서 간단한 2-레벨 메모리 구현의 실시예를 도시한다.
도 3은 비-휘발성 랜덤 액세스 메모리를 위한 캐시로서 사용되는 동적 랜덤 액세스 메모리를 갖는 다중-레벨 메모리 기반 시스템의 실시예를 도시한다.
도 4는 동적 랜덤 액세스 메모리 캐시의 일부의 특화된 사용을 설명하는 다중-레벨 메모리 기반 시스템의 실시예를 도시한다.
도 5는 프로세서를 위한 물리적 어드레스 가능한 메모리 스페이스의 하위 4GB를 도시한다.
도 6은 원격 메모리(far memory)를 위해 일 부분을 그리고 스토리지를 위해 다른 부분을 사용하는 이중-파티션된 비-휘발성 랜덤 액세스 메모리의 실시예를 도시한다.
도 7은 물리적 비-휘발성 랜덤 액세스 메모리 디바이스들에서 수시로-변하는(ever-changing) 페이지들로 페이지-단위(page-granular) 플랫폼 물리적 어드레스들 및 논리적 블록 어드레스들을 맵핑하는 기능을 제공하는 어드레스 리다이렉션 테이블들(address redirection tables)의 실시예를 도시한다.
도 8은 스토리지 사용 메모리 사용을 위한 비-휘발성 랜덤 액세스 메모리의 어떠한 사전지정된 물리적 선형 부분도 가지지 않는 비-휘발성 랜덤 액세스 메모리로 플랫폼 물리적 어드레스들 및 논리적 블록 어드레스들을 맵핑하는 어드레스 리다이렉션 테이블들의 실시예를 도시한다.
도 9는 특정 타입의 디바이스 내에 상주하는 비-휘발성 스토리지 페이지들이 소프트웨어 애플리케이션의 어드레스 스페이스로 직접 맵핑될 수 있게 하는 프로세스의 실시예의 흐름도이다.
도 10은 페이지 엠프티 기록 정책(page empty write policy)을 사용하는 PCMS 페이지 클리닝 프로세스(page cleaning process)의 실시예를 도시한다.
도 11은 팬텀 어드레스 스페이스(phantom address space)에서 사용가능한 PCMS 페이지들에 데이터를 기록하는 기록 메커니즘에 대한 프로세스 흐름의 실시예를 도시한다.
도 12는 PCMS 페이지들이 전력/성능 측면에서 효율적으로 기록될 수 있게 하는 메커니즘의 실시예를 도시한다.
도 13은 메모리 지정과 스토리지 지정 간에서 비-휘발성 랜덤 액세스 메모리 페이지들의 일관된 이동을 가능하게 하는 메커니즘의 실시예를 도시한다.
도 14는 불필요한 PCMS 평면 천이들(plane transitions)을 제거하는 프로세스를 지원하는 프로세스 및 이에 수반되는 메커니즘(즉, 하드웨어 로직)의 실시예를 도시한다.
도 15는 다이렉트 액세스-기반 메모리 서브시스템을 갖는 다중-레벨 메모리를 포함하는 컴퓨팅 디바이스의 실시예를 도시한다.
PCMS 비-휘발성 스토리지와 같은 기술들을 집적 회로들 내의 트랜지스터들의 크기를 줄이면서 성능을 증가키시는 것과 조합하면, SoC(System-on-a-Chip) 아키텍처들이 저 비용, 저 전력 및 고 성능의 솔루션들의 새로운 조합을 달성하면서 고무적인 새로운 시스템들을 생성할 기회를 이용할 수 있다. 이러한 진보는 저비용 스마트폰, 태블릿, 노트북 또는 다른 형태의 이동 컴퓨팅 디바이스에 배치되는 SRAM(static random access memory)의 양, DRAM(dynamic RAM)의 양, 및 비-휘발성 스토리지의 양 간의 상이한 밸런스를 확립하는 기존의 메모리 계층(memory hierarchy)에 대한 개정에 기초한다. 수많은 타입의 비-휘발성 스토리지가 존재하지만, 기술된 다수의 실시예에 따르면, NVRAM(non-volatile random access memory) 스토리지가 사용되며, 이하에서는 더 상세하게 기술된다.
1. 비-휘발성 랜덤 액세스 메모리(NVRAM) 개요
NVRAM를 위해서는 다수의 기술 선택이 가능하며, 이것은 PCM(phase change memory), PCMS(Phase Change Memory and Switch)(이는 PCM의 보다 구체적인 구현임), BPRAM(byte-addressable persistent memory), SCM(storage class memory), 범용 메모리(universal memory), Ge2Sb2Te5, PMC(programmable metallization cell), 저항성 메모리(RRAM), RESET(비정질) 셀, SET(결정질) 셀, PCME, 오브신스키 메모리(Ovshinsky memory), 강유전성 메모리(폴리머 메모리 및 폴리(N-비닐카르바졸)(poly(N-vinylcarbazole))로도 알려짐), 강자성 메모리(스핀트로닉스, SPRAM(spin-transfer torque RAM)로도 알려짐), STRAM(spin tunneling RAM), 자기저항성 메모리, 자기 메모리, MRAM(magnetic random access memory), 및 SONOS(Semiconductor-oxide-nitride-oxide-semiconductor)(유전체 메모리로도 알려짐)를 포함한다.
NVRAM은 다음과 같은 특성들을 갖는다:
● 그것은 SSD(solid state disk)에서 사용되는 플래시 메모리와 유사하지만 휘발성인 SRAM 및 DRAM과는 달리, 전력이 제거된 경우에도 그것의 내용을 유지한다;
● 그것은 SRAM 및 DRAM와 같은 휘발성 메모리보다는 낮은 전체 전력 소비량을 가질 수 있다;
● 그것은 SRAM 및 DRAM과 유사하게 랜덤 액세스를 가질 수 있다(랜덤 어드레스 가능한 것으로도 알려짐);
● 그것은 SSD에서 발견되는 플래시보다 보다 낮은 레벨의 단위(granularity)(예를 들어서, 바이트 레벨)로 재기록 및 소거가능하다(NOR 플래시의 경우에는 최소 64 킬로바이트 크기이고 NAND 플래시의 경우에는 최소 16 킬로바이트 크기인 "블록"마다 만으로 재기록 및 소거가능);
● 그것은 시스템 메모리로서 사용될 수 있고 또한 시스템 메모리 어드레스 스페이스의 전부 또는 일부에 할당될 수 있다;
● 그것은 트랜잭션 프로토콜(상이한 트랜잭션들이 비순차적으로(out-of-order) 완료될 수 있도록 그들 트랜잭션들을 구별하는 트랜잭션 식별자들(ID들)을 지원하는 프로토콜)을 사용하여 버스(인터커넥트 또는 링크로도 상호 교환가능하게 지칭됨)를 통해 CPU에 커플링될 수 있으며 또한 시스템 메모리로서 NVRAM의 동작을 지원하기에 충분한 작은 레벨의 단위(예를 들어, 64 바이트 또는 128 바이트와 같은 캐시 라인 크기)에서의 액세스를 가능하게 할 수 있다. 예를 들어, 버스/인터커넥트는 메모리 버스(예를 들어, DDR3, DDR4 등과 같은 DDR(double data rate) 버스) 일 수 있으며, 이 메모리 버스를 통해 정상적으로 사용되는 비-트랜잭션 프로토콜과는 상반되는 트랜잭션 프로토콜이 실행된다. 다른 예로서, 버스는 PCIE(PCI express) 버스, DMI(desktop management interface) 버스 또는 트랜잭션 프로토콜 및 충분하게 작은 트랜잭션 페이로드 크기(예를 들어, 64 바이트 또는 128 바이트와 같은 캐시 라인 크기)를 사용하는 임의의 다른 타입의 버스와 같은, 정상적으로 트랜잭션 프로토콜(고유(native) 트랜잭션 프로토콜)을 실행하는 버스를 통해서 실행될 수 있다.
● 그것은 또한 다음과 특성들 중의 하나 이상을 가질 수 있다:
ㅇ 플래시와 같은 비-휘발성 메모리/스토리지 기술들보다 고속 기록 속도;
ㅇ (플래시보다 빠르고 DRAM 판독 속도에 근사 또는 동등한) 매우 높은 판독 속도;
ㅇ (SSD에서 사용되는 플래시 메모리와 같이 데이터를 기록하기 이전에 소거(1들을 사용하여 오버라이팅(overwriting))를 필요로 하는 것이 아닌) 다이렉트로 기록 가능; 및/또는
ㅇ (SSD에서 사용되는 부트(boot) ROM 및 플래시보다) 고장 전에 더 많은 횟수의 기록을 수행.
전술한 바와 같이, 완전한 "블록"마다 재기록 및 소거되어야 하는 플래시 메모리와는 대조적으로, 임의의 주어진 구현에서 NVRAM이 액세스되는 단위의 레벨은 NVRAM이 커플링된 특정 메모리 제어기 및 특정 메모리 버스 또는 다른 타입의 버스에 의존할 수 있다. 예를 들어, NVRAM이 시스템 메모리로서 사용되는 몇몇 구현예들에서, 일 바이트의 단위로 액세스될 수 있는 고유 능력에도 불구하고, NVRAM은 캐시 라인 단위(granularity of a cache line)(예를 들어, 64 바이트 또는 128 바이트 캐시 라인)로 액세스될 수 있으며, 그 이유는 캐시 라인이 메모리 서브시스템이 메모리에 액세스하는 레벨이기 때문이다. 따라서, 몇몇 실시예들에서, NVRAM이 메모리 서브시스템 내에 배치될 경우, 그것은 동일한 메모리 서브시스템에서 사용되는 DRAM와 동일한 레벨의 단위로 액세스될 수 있다. 그렇더라도, 몇몇 실시예들에서는, 메모리 제어기 및 메모리 버스 또는 다른 타입의 버스가 NVRAM에 액세스하는 단위의 레벨은 입출력 서브시스템의 제어기 및 버스의 액세스 크기 및 플래시에 의해서 사용되는 블록 크기의 레벨보다 작다.
또한, NVRAM은 특히 상당한 횟수의 기록들이 시스템 메모리 구현에서와 같이 일어날 수 있는 경우에, 다수의 기록 액세스들 후에 스토리지 셀들이 마모되기 시작한다는 사실을 설명하는 마모 레벨링 알고리즘(wear leveling algorithm)을 포함할 수 있다. 고 사이클 횟수 블록들(high cycle count blocks)은 이러한 방식으로 마모될 가능성이 크기 때문에, 마모 레벨링은 고 사이클 횟수 블록들의 어드레스들을 저 사이클 횟수 블록들과 스와핑(swapping)함으로써 원격 메모리 셀들에 걸쳐서 기록 동작들을 분산시킬 수 있다. 어드레스 스와핑은 하드웨어, 하위 레벨 소프트웨어(예를 들어, 하위 레벨 드라이버 또는 운영 체제) 또는 이 둘의 조합에 의해서 처리되기 때문에, 대부분의 어드레스 스와핑은 통상적으로 애플리케이션 프로그램들에게 투명하다는 것을 유의한다.
NVRAM은 메모리/스토리지 계층에서 그 응용 및/또는 그 특성의 관점에서 다른 인스트럭션 및 데이터 메모리/스토리지 기술들과 구별될 수 있다. 예를 들어, NVRAM은 다음과는 상이하다:
● 프로세서 내의 각 코어에 전용인 레벨 0 및 레벨 1 내부 프로세서 캐시들 및 프로세서 내의 코어들에 의해서 공유되는 하위 레벨 캐시(LLC)용으로 사용될 수 있는 SRAM(static random access memory );
● (예를 들어, 프로세서와 동일한 다이 상에서) 프로세서 다이의 내부에 있는 캐시로서 구성되거나, (예를 들어, 프로세서 다이와 상이한 또는 동일한 패키지 내에서) 프로세서 다이의 외부에 있는 하나 이상의 캐시들로서 구성되거나, 또는 프로세서 패키지의 외부에 있는 일반적인 시스템 메모리로서 구성되는 DRAM(dynamic random access memory);
● 대용량 스토리지로서 적용되는 플래시 메모리/자기 디스크/광학 디스크; 및
● (부트 ROM, BIOS(basic input/output system) 플래시, 및/또는 TPM(trusted platform module) 플래시를 나타낼 수 있는) 펌웨어 메모리로서 적용되는 플래시 메모리 또는 다른 ROM와 같은 메모리.
NVRAM은 대용량 스토리지로서 적용되는 플래시/자기 디스크/광학 디스크와 대조적으로, 프로세서에 의해서 다이렉트로 어드레스 가능하며, 프로세서와 충분하게 보조를 유지할 수 있는 인스트럭션 및 데이터 스토리지로서 사용될 수 있다. 이러한 다이렉트 어드레스 능력은 CPU 또는 GPU와 같은 프로세서가 그것이 표준 DRAM인 것처럼 (예를 들어, 표준 메모리 저장 명령 및 로딩 명령을 통해) NVRAM에게 메모리 요청들을 전송할 수 있음을 나타낸다. 또한, 전술 및 이하에서 보다 상세하게 기술되는 바와 같이, NVRAM은 메모리 버스 상에 배치될 수 있고, 메모리 제어기와 다이렉트로 통신할 수 있으며, 메모리 제어기는 이어서 프로세서와 다이렉트로 통신할 수 있다.
NVRAM은 다른 인스트럭션 및 데이터 스토리지 기술들(예를 들어, DRAM)과 조합되어 혼성 메모리(코-로케이팅(Co-locating) PCM 및 DRAM; 제1 레벨 메모리 및 제2 레벨 메모리; FLAM(FLASH 및 DRAM)으로도 알려짐)를 형성한다. PCM/PCMS을 포함하는 상기한 기술들 중 적어도 몇몇은 시스템 메모리 대신에 또는 시스템 메모리와 더불어서 대용량 스토리지에 사용될 수 있으며, 이러한 방식으로 적용될 경우, 프로세서에 의해서 랜덤 액세스 가능하거나, 바이트 어드레스 가능하거나 또는 다이렉트 액세스 가능할 필요가 없음에 유의한다.
설명의 편의를 위해, 본원의 나머지 부분의 대부분은 비-휘발성 메모리에 대한 기술 선택으로서 "NVRAM", 보다 구체적으로는 "PCM," 또는 "PCMS" 을 참조할 것이다. 즉, 용어들 NVRAM, PCM, 및 PCMS은 다음의 설명에서 상호 교환가능하게 사용될 수 있다. 그러나, 전술한 바와 같이, 상이한 기술들도 역시 사용될 수도 있음을 인식해야 한다.
2. 다중-레벨 메모리 개요
다중-레벨 메모리(Multi-Level Memory: MLM)는 PC 플랫폼 토폴러지에 대한 혁명적인 변화이다. 도 1은 다음을 포함하는 대표적인 컴퓨터 시스템의 실시예를 도시한다:
● 하나 이상의 중앙/범용 프로세서들(CPU들)(100).
● 하나 이상의 그래픽 프로세서들(102).
● 하나 이상의 입출력 제어기들(104) 및 디스크 또는 고체 상태 드라이브(SSD)(106)와 다른 입출력 디바이스(108)와 같은 그것들과 관련된 입출력 디바이스들.
● 중앙 프로세서와 선택적 그래픽 프로세서들을 상대적으로 저속인 DRAM 메모리로부터 분리시키도록 의도된 온-다이 캐시(on-die caches)(110).
● 당시의 시스템 요구 사항들에 따라, 대역폭 및/또는 레이턴시에 대한 DRAM 명령들을 최적으로 스케줄링하도록 설계된 메모리 제어기(112).
● 통상적으로 64 비트 채널들로 구성되는, 하나 이상의 DRAM 스토리지 그룹들(114). 로우-엔드 컴퓨팅 디바이스(low-end computing device)들은 단일 채널을 가질 수 있으며, 하이-엔드 컴퓨팅 디바이스들은 2 개 또는 3 개의 DRAM 채널들을 가질 수 있음.
대표적인 컴퓨팅 디바이스가 DDR3(double data rate 3) 구성 요소들을 사용하여 구현된 경우, 온-다이 캐시들을 미스한(missing), 프로세서에 의해서 개시되는 메모리 판독 트랜잭션의 레이턴시는, 이 트랜잭션이 메모리 제어기로 전달된 시간으로부터 그 데이터가 온-다이 캐시 블록으로 복귀한 시간까지인 30 나노초(ns) 정도일 수 있다(예를 들어, DRAM 페이지 히트(hit)에 있어서는 15 ns, DRAM 페이지 엠프티(empty)에 있어서는 30 ns, DRAM 페이지 미스(miss)에 있어서는 45 ns). 이러한 레이턴시는 종종 프로세서 애플리케이션 성능의 중요한 구동 인자이다.
DDR3-1600 메모리의 단일 채널 상의 피크 대역폭은 초당 12.8 기가바이트(GB)이다. 이러한 채널의 유효 대역폭은 통상적으로 이 숫자의 약 70 퍼센트일 것이다. 이러한 유효 메모리 대역폭은 범용 프로세서들 및 그래픽 프로세서들의 성능에서 기본적인 역할을 할 수 있다.
간단한 형태에서, 2-레벨 메모리는 시스템의 벌크 DDR DRAM 스토리지를 도 2(즉, NVRAM 디바이스들(200))에서 도시된 NVRAM 스토리지(예를 들어서, PCMS 스토리지를 가짐)로 대체하는 메커니즘으로서 고려될 수 있다.
도 2에 도시된 솔루션은 저비용으로 구현될 수 있다. 그러나, 이러한 시스템의 성능, 전력 소비량, 및 신뢰성 속성들은 이상적이지 않을 것이며 잠재적으로 소정 응용들에 대해 중대한 문제들을 가질 수 있으며, 이 문제들은 본질적으로 부정적인 전력 상태, 성능 상태, 또는 디바이스 마모 상태를 유발하게 된다. 예를 들어, PCMS를 사용하는 도 2와 같은 구성의 레이턴시(~50 ns) 및 대역폭(판독의 경우에 ~ 6.4GB/초)은 각기 PCMS 디바이스들이 대체하는 DRAM(도 1)의 레이턴시 및 대역폭보다 레이턴시는 매우 높으며 대역폭은 매우 낮다.
특히 DRAM를 대체할 때에 주의를 요하는 PCMS이 갖는 다른 문제점은 PCMS의 판독 대역폭 능력과 기록 대역폭 능력 간의 큰 차다. DRAM의 경우에, 모든 메모리 디바이스는 동일한 레이트로 데이터를 판독 및 기록할 수 있다. 그러나, PCMS 코어들은 그들의 물리적 성질에 의해서 데이터 부분을 판독하는 것보다 데이터 부분을 기록하는데 더 많은 시간을 필요로 한다. PCMS에 대한 판독/기록 대역폭 비는 4:1이다. 달리 말하면, 데이터가 PCMS 디바이스에 기록될 수 있는 속도보다 데이터가 PCMS 디바이스로부터 4 배 더 신속하게 판독될 수 있다.
전체적으로, 컴퓨팅 디바이스는 다음의 같은 3 가지 이유들 중 하나 때문에 휘발성 메모리(통상적인 DRAM)에 데이터를 기록한다:
● 애플리케이션 또는 시스템 서비스를 실행하는 과정에서 사용되는 임시적 스페이스(temporay space). 통상적으로 2 개 타입의 임시적 스페이스가 존재하며, 즉 애플리케이션의 수명 동안 지속되는 히프 스페이스(heap space) 및 매우 짧은 기간에 나타났다가 사라지는 하나 이상의 스택 스페이스들(stack spaces)이 존재한다.
● 시스템 상에서의 애플리케이션 또는 운영 체제 실행 기간 동안 지속되는 장기 스토리지 스페이스.
● 데이터가 입출력 서브시스템과 범용 프로세서 또는 그래픽 프로세서 간에서 임의의 방식으로 교환되기 이전에 데이터를 저장하는데 사용되는 DMA 버퍼. 통상적으로, 이것은 정보-처리 디바이스(CPU 또는 GPU)와 그래픽 데이터의 경우에는 엔드-유저 또는 HTML 브라우징 데이터의 경우에는 네트워크와 같은 외부 엔티티 간의 통신을 위해 사용된다.
적어도 히프 스페이스, 스택 스페이스 및 DMA 버퍼는 정의상 임시적이다. 이들과 같은 임시적 저장 사용은 통상적인 대체 알고리즘들을 구현하고 PCMS로의 그리고 그로부터의 대부분의 트래픽을 제거하는 효율적인 캐싱(caching)을 사용하여서 소형의 DRAM 풋프린트에서 유지될 수 있다. MLM 기반 메모리 시스템의 코어에는 대형 재기록(write-back) DRAM이 있으며, 이는 최근 사용된 데이터를 보유하고 기록 트랜잭션들을 흡수하며, 실질적인 RAW(read-around-write) 시스템 능력을 가능하게 한다. DRAM은 본질적으로 PCMS용 캐시로서 사용된다.
도 3은 NVRAM 메모리용 캐시로서 사용되는 DRAM을 갖는 MLM 기반 시스템을 도시한다. 본 예에서, DRAM은 "근접 메모리"(300)로 지칭되며, NVRAM(예를 들어, PCMS)는 "원격 메모리"(302)로 지칭된다. 이러한 명명은 메모리의 상대적 성능에 기초한다(근접 메모리는 일반적으로 원격 메모리보다 보다 낮은 레이턴시 및 보다 높은 대역폭을 가짐). 또한, DRAM 및 NVRAM를 어태치(attach)하는데 사용될 수 있는 많은 가능한 링크들(즉, 버스들, 상호접속부들)이 존재하지만, 도 3에 도시된 실시예에서는, 원격 메모리 NVRAM은 주어진 양의 NVRAM(예를 들어서, 64GB)을 위한 단일 메모리 채널을 포함하는 32 비트 폭 링크을 통해서 어태치되며, 근접 메모리 DRAM은 DRAM 칩과 SoC 간의 TSV(through-silicon via) 어태치(attachment)를 포함하는 512 비트 폭 링크(잠재적으로 데이터 폭의 캐시 라인(cache line of data wide))를 통해서 어태치된다. 따라서, 상이한 실시예들에서, 컴퓨팅 디바이스와 연관된 비용, 성능 및 전력 고려사항들에 따라서, DRAM은 64 MB에서 512 MB 또는 그 이상 까지의 어디에도 있을 수 있다. MLM의 유효성은 원격 메모리 트랜잭션에서 발생하는 페널티(penalty) 및 근접 메모리 히트(hit)의 성능 특성의 관점에서, 주어진 작업로드(workload) 또는 작업로드 세트가 근접 메모리 캐시를 "히트"하는 시간량에 의해서 결정된다.
그것이 포함하는 데이터 특성에 불필요하게 블라인드(blind)인 캐시는, 종종 구현하기가 가장 간단하지만 준최적(sub-optimal)일 수 있다. 이러한 이유로, MLM 아키텍처는 특정 사용을 위해 근접 메모리의 전용 영역들을 할당하는 것이 바람직할 수 있다. 도 4는 DRAM 캐시의 일부의 특화된 사용을 설명하는 MLM 기반 시스템을 도시한다. 도 4에서, 512 MB DRAM 스페이스는, 8 개의 64 MB 웨이들(ways)을 갖는 8 웨이 캐시로서 관리되는 대신에, 448 MB 7 웨이 캐시(400)로서 사용되고 64 MB가 그래픽 하드웨어 및 드라이버들(402)에 의해서 직접 사용되는데 전용이 되는 방식으로 분할된다.
도 5는 NVRAM의 하위 4GB가 범용 프로세서 또는 그래픽 프로세서에 의해서 다이렉트로 액세스 가능한 원격 메모리로서 맵핑된 경우를 도시한다. 도 4에서, 프라이빗(private) GFX 메모리 구역(402)은 잠재적으로 상위(high) DRAM 스페이스(500)와 하위(low) DRAM 스페이스(502) 사이에서, 프로세서의 물리적 어드레스 스페이스로 다이렉트로 맵핑될 것이다. 다수의 실시예들에서, 레지스터 또는 BIOS 기반 메커니즘은 부트 시에 상기 로케이션(location)을 그래픽 드라이버에 전송하는데 사용될 수 있다. 그 후에, 휘발성 및 시간-민감성 표면들(time-sensitive surfaces)(예를 들어, 프레임 버퍼)이 프라이빗 메모리 내에 포함되도록 하는 방식으로 드로잉 표면들(drawing surfaces)을 정상적인 물리적 어드레스 스페이스 또는 프라이빗 GFX 메모리 구역(402) 내로 할당하는 것은, 그래픽 드라이버 및 제어기에 달려 있게 된다. 정적 텍스처들(static textures) 및 다른 디스플레이 가능하지 않는(non-displayable) 그래픽 표면들과 같은 다른 비-휘발성 시간-비-민감성 표면들은 드라이버에 의해서 추론될 수 있는 성능 및 전력 암시사항들(implications)에 따라, 어느 한쪽 스페이스 내에 배치될 수 있다.
3. 다이렉트 액세스를 갖는 다중-레벨 메모리(MLMD)
MLMD는 임베디드 SRAM 디바이스 또는 DRAM 디바이스와 결합되는 새로운 형태의 비-휘발성 스토리지를 선호하여 오프-더-쉘프(off-the-shelf) Microsoft® Windows® 운영 체제 및 Linux 운영 체제로부터 외부형 DRAM을 제거하는 동시에 이러한 운영 체제 하에서 프로덕티비티 애플리케이션(productivity application), 엔터테인먼트 애플리케이션 및 게임 애플리케이션을 실행하는 능력을 보유하는 솔루션이다.
핸드헬드(handheld) 디바이스 또는 태블릿에서, 비-휘발성 스토리지는 NAND와 같은 고체 상태 디바이스 또는 PCMS와 같은 NVRAM을 사용하여 거의 언제나 구현될 수 있다. 디바이스가 NVRAM 디바이스들을 사용하여 MLM을 구현할 경우, NVRAM을 사용하여 전체 스토리지 시스템을 구현하는 것이 자연스러우며, 또한 원격 메모리와 스토리지 시스템이 NVRAM 디바이스들을 공유하는 것도 물론 바람직하다. 도 6은 원격 메모리(far memory)(600)를 위해 일 부분을, 그리고 스토리지(602)을 위해 다른 부분을 사용하는 이중-파티션된 NVRAM을 도시한다. 메모리 부분은 "플랫폼-물리적 어드레스(PPA)"를 사용하여서 인덱싱되며 스토리지는 "논리적 블록 어드레스(LBA)"를 사용하여서 인덱싱된다. 도 6에 도시된 바와 같이, 메모리 제어부(제어기)/로직(112)은 PPA 스페이스 페이지 어드레스를 NVRAM(600)의 메모리 부분으로 맵핑하며 스토리지 제어부(제어기)/로직(604)은 LBA 스페이스 블록 어드레스를 NVRAM(602)의 스토리지 부분으로 맵핑한다. 이러한 간단한 맵핑에 있어서, 몇몇 문제점들이 있다. PCMS와 같은 NVRAM 디바이스들 중 몇몇 타입은 PPA/LBA 어브스트랙션들(abstractions)과 물리적 디바이스들 간의 연속적 어드레스의 직접적 맵핑을 좌절시키는 소정의 디펙트(defect) 및 마모 특성을 갖는다.
특히 PCMS의 경우에, 가장 가시적인 문제점들은 다음을 포함한다:
● 디펙트 관리 - PCMS 구성 요소들은 알려진 디펙트들을 가지면서 공장으로부터 배송되고 그들의 동작 수명에 걸쳐서 디펙트들이 성장하게 된다.
● 기록 마모 관리 - PCMS 구현은 임의의 주어진 셀에 기록될 수 있는 횟수에 한계가 있다.
● 판독 방해 - PCMS 구현은 임의의 주어진 셀이 이 셀에 대한 각 기록들 간에 판독될 수 있는 횟수에 한계가 있다.
도 7은 물리적 NVRAM 디바이스들에서 수시로-변하는(ever-changing) 페이지들로 페이지-단위(page-granular) PPA들 및 LBA들을 맵핑하기 위한 기능을 제공하는 어드레스 리다이렉션 테이블들(address direction tables)을 도시한다. 도 7에서, 0GB 내지 4GB-1 간의 다이렉트 어드레스 스페이스(DSPACE) 어드레스(NVRAM의 특정 물리적 페이지를 참조하는 어드레스)로 주어진 PPA 페이지 어드레스를 재맵핑(remap)하는 "팬텀(phantom)" 메모리 재맵핑 테이블(700)이 존재한다. 이 메모리 재맵핑 테이블(700)은 다수의 실시예들에서 메모리 제어부(도 6에서 112) 내에 통합된 SRAM 또는 근접 메모리(DRAM) 내에 메모리의 단일 블록으로서 저장된다. 도시된 바와 같이, 각 엔트리가 PPA 어드레스 스페이스의 고유 4KB 페이지를 참조하므로 메모리 재맵핑 테이블(700) 내에는 일 백만개의 메모리 DSPACE 엔트리들이 존재한다. 메모리 재맵핑 테이블(700)은 재맵핑 디스크립터(descriptor) 그룹으로부터 구축된다(예를 들어서, 메모리 DSPACE 1는 메모리 재맵핑 테이블(700) 내의 저장된 디스크립터를 나타낸다). 다수의 실시예들에서, PPA 스페이스의 각 캐시라인(예를 들어서, 4K 캐시라인)에 대해서 하나의 디스크립터가 존재한다. 디스크립터의 컨텐츠들은 추적될 필요가 있는 정보의 상이한 부분들에 기초하여서 가변될 수 있다. 적어도 NVRAM 디바이스 어드레스는 각 디스크립터 실시예에 대해서 공통적이며, 각 디스크립터 실시예는 PPA 메모리 엔트리에 대응하는 NVRAM 디바이스 스페이스 내에 소정의 어드레스 비트 세트를 포함한다. 이 어드레스는 실제 재맵핑 절차가 발생할 수 있도록 각 디스크립터 내에 있을 필요가 있다.
메모리 디스크립터들과 마찬가지로, 또한 스토리지 재맵핑 테이블에도 스토리지 디스크립터들이 존재한다. 도 7에 도시된 실시예에서, 각 엔트리가 LBA 어드레스 스페이스의 고유 4KB 페이지를 참조하므로 스토리지 재맵핑 테이블(702) 내에는 천오백만개의 스토리지 DSPACE 엔트리들이 존재한다. 몇몇 실시예들에 따라서, 재맵핑 테이블들(700 및 702)은 하드웨어 제어 로직(704) 내에 통합된 SRAM 또는 다른 고속 메모리 저장 구조부 내에 위치한다. 도 7은 주어진 크기를 가지며 주어진 방식으로 조직된 스토리지 재맵핑 테이블 및 메모리 재맵핑 테이블의 특정 구현예를 도시하고 있지만, 다수의 다른 구현예들에서, 스토리지 재맵핑 테이블 및 메모리 재맵핑 테이블은 상이한 크기들, 상이한 단위 레벨들, 및/또는 상이한 방식으로 구현될 수 있다(예를 들어서, 스토리지 디스크립터들은 보다 조악한 방식으로(in coarser manner) NVRAM를 액세스할 수 있으며, 이 경우에 일 디스크립터는 다른 대안적인 예들 중에서도 4KB 페이지 단위 대신에 32 KB 블록을 참조한다). 하드웨어 제어 로직(704)은 도 6에 도시된 메모리 제어부(112) 또는 스토리지 제어부(604)를 나타낼 수 있거나, 또는 재맵핑 테이블들(700 및 702)을 이용하도록 또한 설계된 새로운 상이한 형태의 제어 로직을 포함할 수 있다. 몇몇 실시예들에서, 스토리지 제어부 및 메모리 제어부는 프로세서 내에 통합되거나 프로세서와는 개별적인 상이한 제어 로직 블록들로서 나타내어진다. 다른 실시예들에서, 이러한 상이한 형태들의 제어 로직들은 NVRAM 디바이스(들)을 관리하는데 필요한 모든 하드웨어 제어 로직을 포함하는 단일 제어 로직 블록 내에 통합된다.
재맵핑 테이블들(700 및 702)로 돌아가면, 다른 실시예들에서, 이러한 테이블들은 MLMD 및 다른 제어 데이터 구조들을 저장하는 DRAM의 예비된 부분 내에 저장된다.
본질적으로, 도 7은 다음과 같은 구성 요소들로 구성되는 가상 메모리 시스템을 도시한다:
● 작은 양의 DRAM과 NVRAM 스페이스의 물리적 메모리 부분(600)으로의 포인터들의 어레이의 조합을 통해서 통상적인 DRAM을 에뮬레이트(emulate)하는 가상 또는 "팬텀" 스페이스를 생성하는 메모리 재맵핑 테이블(700).
● LBA 어드레스 스페이스에서 NVRAM 스페이스의 물리적 스토리지 부부분(602)으로의 변환을 제공하는 스토리지 재맵핑 테이블(702).
● 소프웨어 드라이버 로직(706)이 메모리 재맵핑 테이블(700) 내의 포인터들 및 스토리지 재맵핑 테이블 내의 포인터들을 조작하게 하는 하드웨어 제어 로직(704).
● 인터럽트 요청들 및 DMA 전이들을 통해서 데이터의 하드웨어-구동된 카피들을 스케줄링하는 대신에 NVRAM의 스토리지 부분과 메모리 부분 간에 포인터들을 맵핑하도록 상기 하드웨어 제어 로직(704)을 사용하는 소프트웨어 드라이버.
몇몇 실시예들에서는, 재맵핑 시스템의 메모리 부분 및 스토리지 부분을 조작하기 위해서 사용되는 별도의 소프트웨어 드라이버들이 존재한다. 다른 실시예들에서는, 재맵핑 테이블들 둘 다를 다루는 소프트웨어 드라이버 로직(706)과 같은 로직을 포함하는 일 소프트웨어 드라이버가 존재한다. 몇몇 실시예들에 따르면, 메모리 디스크립터들은 하드웨어로 처리되며 스토리지 디스크립터들은 소프트웨어 드라이버에 의해서 처리된다.
도 7은 메모리 부분(600) 및 스토리지 부분(602)으로 NVRAM을 분할한 NVRAM 메모리/스토리지 시스템의 실시예를 도시하였지만, 스토리지 영역 및 메모리 영역을 혼합하는 것의 복잡성이 간단하게 관리될 수만 있다면 NVRAM 디바이스들을 이러한 영역들로 분할할 특별한 이유가 없다.
스토리지 및 메모리가 동일한 물리적 디바이스 및 상호혼합된(intermingled) 그들의 어드레스들 내에 위치하였으면, 디스크-관련된 DMA 동작들을 통상적인 방식으로 수행할 필요가 없어진다(구체적으로, NVRAM의 일 부분에서 다른 부분으로 데이터가 카피되어야 하는 것이 명확하지 않게 된다). 대신에, 데이터는 재맵핑 테이블들(700 및 702) 내의 포인터들을 수정함으로써 그 자리에서 간단하게 참조될 수 있다. 이로써, 애플리케이션들은 데이터가 먼저 어드레스 스페이스들에서 카피되지 않고서 이 스페이스들에서 나타나는 것을 볼 수 있다. 이러한 재맵핑 능력은 "다이렉트 어드레스"로 지칭되며 MLMD 시스템에서 "D"를 설명한다.
도 8은 스토리지 사용을 위한 NVRAM의 사전지정된 물리적으로 선형인 부분 및 메모리 사용을 위한 다른 부분을 갖는 대신에, NVRAM로 PPA들 및 LBA들을 맵핑하는 도 7과 동일한 어드레스 리다이렉션 테이블들을 도시하며, 도 8에서의 NVRAM 내의 각 물리적 로케이션은 스토리지 사용 또는 메모리 사용을 위해서 지정될 수 있다. 따라서, 도 8에서, 전체 물리적 NVRAM 스페이스(800) 내의 각 로케이션은 메모리 또는 스토리지들에 대해서 사용될 수 있다.
도 9는 특정 타입의 디바이스(예를 들어서, PCMS 메모리) 내에 상주하는 비-휘발성 스토리지 페이지들이 소프트웨어 애플리케이션의 어드레스 스페이스 내로 다이렉트로 맵핑되게 하는 프로세스의 흐름도이다. 이러한 프로세스는 데이터를 스토리지 매체(데이터가 장기간 저장되는 장소)에서 데이터가 실행 소프트웨어 애플리케이션에 의해서 사용되는 곳인 메모리로 카피하지 않고서 완료될 수 있다. 표준 구현에서는 이와 달리 적어도 CPU 인터럽트 및 DMA(다이렉트 메모리 액세스) 전달을 수반하는 이러한 카피를 제거함으로써, 소프트웨어 애플리케이션이 데이터를 요청한 시점에서 소프트웨어 애플리케이션이 그의 어드레스 스페이스 내의 데이터에 액세스한 시점까지의 상당한 시간이 절감되며 전력 소비량이 줄어든다. 이 프로세스는 소프트웨어, 하드웨어 또는 펌웨어 로직으로 구성되거나 다수의 타입들의 로직의 조합일 수 있는 프로세싱 로직에 의해서 수행된다. 또한, 도 9에서 그리고 이하에서 기술되는 프로세스가 메모리의 3-페이지 할당을 사용하는 것은 단지 예시적인 실례일 뿐이다. 다른 실시예들에서, 더 많은 페이지들 또는 더 적은 페이지들이 할당될 수 있으며 관련된 단계들은 이 프로세스를 완료하기 위해서 하나 이상의 상이한 방식들로 변경될 수 있다.
이 프로세스는 사용자 프로세스(예를 들어서, OS 상에서 실행되는 소프트웨어 애플리케이션) 내의 프로세싱 로직이 비-휘발성 스토리지(예를 들어서, PCMS)로부터 판독된 3-블록에 대해 OS로부터 3-페이지 버퍼를 할당함으로써 시작한다(프로세싱 블록 900). 다른 실시예들에서, 이것은 페이지 버퍼 내의 보다 적은 개수의 페이지들 또는 보다 많은 개수의 페이지들일 수 있으며 판독에 대해서는 보다 적은 개수의 블록 또는 보다 많은 개수의 블록일 수도 있다. 다음으로, OS 내의 프로세싱 로직이 물리적 DRAM 내의 3 개의 페이지들을 프리 상태로 하고 포인터들을 OS 내의 사용자 스페이스로부터 물리적 메모리 페이지들 A, B 및 C로 맵핑한다(프로세싱 블록 902). 페이지들 A, B 및 C는 실제 DRAM 디바이스 물리적 어드레스 페이지들이다. 블록(902)에서의 프로세싱 로직이 OS 내에 있는 존재하는 것으로 기술되었지만, 다른 실시예들에서는, 이 프로세싱 로직은 보다 고속 할당을 위해서 하드웨어로 구현될 수 있다. 또한, 사용자 버퍼가 DRAM 내에 존재하는 것으로 기술되었지만, 다른 실시예들에서, 사용자 버퍼는 간단히 DRAM 내에 존재하는 것과는 달리 특화된 SRAM 내에 또는 프로세서의 캐시의 전용 부분 내에 존재할 수도 있다.
이어서, 사용자 프로세스 내의 프로세싱 로직이 데이터를 비-휘발성 스토리지 어드레스들 X, Y 및 Z(비-휘발성 스토리지 내의 3 개의 블록들을 나타냄)으로부터 사용자 버퍼로 이동하도록 OS에게 요청한다. 또한, 이 시점에서, 사용자 프로세스는 OS에 의해서 유휴 상태(idel state)로 설정된다(프로세싱 블록 904). 이어서, OS 내의 프로세싱 로직은 물리적 메모리 페이지 어드레스들에 이르기 위한 모든 메모리 변환(translation)을 검토하고(walk through) OS 상에서 실행되는 스토리지 드라이버에게 데이터를 스토리지 어드레스들 X, Y 및 Z에서 물리적 메모리 페이지들 A,B 및 C로 이동시키도록 요청한다(프로세싱 블록 906). 다시 한번, 다른 실시예에서, 블록(904) 및 블록(906)에서의 프로세싱 로직은 OS가 아니라 하드웨어로 구현될 수 있다. 또한, 다른 실시예들에서, 하드웨어 로직이 스토리지 어드레스로부터 물리적 메모리 페이지들로 데이터를 이동시키는데 있어서 스토리지 드라이버 대신에 사용될 수 있다.
이어서, 스토리지 드라이버 내의 프로세싱 로직이 LBA 스토리지 어드레스들 X, Y 및 Z에 대한 스토리지/디바이스 맵핑을 요청하고 메모리 페이지들 A, B 및 C로의 포인터들을 X, Y 및 Z에 대한 것들로 변화시킨다(프로세싱 블록 908). 이어서, 스토리지 드라이버는 전이가 완료되었음을 OS에게 알리고(프로세싱 블록 910), OS는 사용자 프로세스를 다시 액티브 상태로서 마크하고(프로세싱 블록 912), 사용자 프로세스는 이어서 데이터를 수신한다(프로세싱 블록 914). 도시되지 않은 다른 실시예에서, 단일 테이블 내의 각 페이지에 대한 엔트리가 이 페이지가 스토리지에 대해 사용되고 있는지 아니면 메모리에 대해 사용되고 있는지를 표시하는 비트 필드를 갖는 물리적 NVRAM 페이지들로의 단일 테이블 맵핑 메모리 및 스토리지가 존재한다. 이 실시예에서, 스토리지에서 메모리로의 재맵핑 또는 메모리에서 스토리지로의 재맵핑은 간단하게 페이지를 다른 포맷으로 지정하는 비트를 플립핑(flipping)하는 것과 관련된다.
스토리지 스페이스로의 액세스들은 다음과 같은 방식으로 메모리 스페이스로 다이렉트로 맵핑된다:
● 모든 액세스들이 메모리 재맵핑 테이블(도 8에서 700)를 통해서 처리된다. 예를 들어, 애플리케이션이 어드레스 1MB로의 판독 액세스를 생성할 때마다, 재맵핑 메커니즘은 (4KB 페이지들을 가정하는) 그의 테이블 내의 256번째 엔트리를 액세스하고 테이블의 256 번째 엔트리에서 유지된 어드레스에 따라서 PCMS 스페이스 내의 메모리-소유된 페이지로 판독을 리다이렉트한다.
● 운영 체제가 SATA 또는 다른 디바이스 드라이버가 예를 들어 "디스크" 상의 100 GB 구역으로부터 페이지를 팬텀 메모리 내의 1 MB 구역으로 카피하도록 요청하면, 디바이스 드라이버는 이 정보를 포인터들을 재맵핑하는 하드웨어 인터페이스 메커니즘으로 전송할 것이다.
● 이러한 특정 경우에, 하드웨어 메커니즘은 스토리지 내의 100GB의 페이지를 1GB의 팬텀 DRAM 페이지로 카피하라는 메시지를 수신할 것이다. 데이터를 물리적으로 이동하는 대신에, 팬텀 재맵핑 테이블 내의 256번째 포인터는 100GB/4KB에 의해서 오버라이트(overwrite)될 것이며, 이로써 팬텀 1MB로의 모든 후속 판독 액세스들이 스토리지로서 이전에 맵핑된 100GB 로케이션으로부터 제공될 수 있게 한다.
본질적으로, 물리적 NVRAM 스페이스(도 8에서 800)에서의 이전에 지정된 스토리지 로케이션이었던 것은 메모리 로케이션으로 변경되거나 이와 반대로도 될 수 있다. 이렇게 하기 위한 프로세스는 간단하게 메모리 재맵핑 테이블 및 스토리지 재맵핑 테이블(도 8에서 각기 700 및 702) 내의 포인터들을 스위칭하는 것과 관련된다.
다수의 형태의 NVRAM이 이러한 구현예들에서 사용될 수 있지만, PCMS가 낮은 판독 레이턴시 때문에 좋은 후보일 수 있다. PCMS는 그의 판독 레이턴시와 기록 레이턴시 간의 실질적 비대칭을 갖는다. 따라서, PCMS를 다룸에 있어서, PCMS 기록 동작들의 단점들을 최소화하기 위해서 사용될 수 있는 특정 프로세스들이 존재할 것이다. 매우 저속의 기록 시간들로 인하여, 진행중인 기록이 PCMS 메모리 시스템을 점유하고 있을 때에 판독 레이턴시에 부가되는 상당한 지연이 있을 수 있다.
몇몇 실시예들에 따르면, 기록들은 사전-클리닝된(pre-cleaned)(실제로 사전 설정된) 페이지들에 대해서만 수행되는데, 그 이유는 사전-클리닝된 페이지로의 데이터 기록은 준비되지 않은 페이지로의 기록보다 실질적으로 신속하기 때문이다. 공교롭게도, 사전-클리닝된 페이지로만 기록하는 정책은 갖는 것은 에너지 측면에서 효율적이지 않으며, 그 이유는 이것이 각 비트를 기록하기 위해서 사용되는 에너지를 대략 2배로 하기 때문이다.
다수의 실시예들에서, PCMS 메모리 시스템이 상대적으로 분주(busy)할 때에는 사전-클리닝된 페이지들로 기록하고 PCMS 메모리 시스템이 상대적으로 조용(quiet)할 때에는 사전-클리닝되지 않은 페이지들로 기록하는 메커니즘이 사용된다. 순수 효과는 시스템이 약하게 로딩된 때에는 최소 전력 소비를 제공하며 시스템이 분주하게 될 때에 개선된 성능을 위해서 고 전력을 제공하는 것이다.
도 10은 페이지 엠프티 기록 정책(page empty write policy)을 사용하는 PCMS 페이지 클리닝 프로세스(page cleaning process)의 실시예를 도시한다. 전술한 바와 같이, PCMS 스토리지의 특성으로 인하여, 데이터를 PCMS로부터 판독하는데 걸리는 시간보다 PCMS로 데이터를 기록하는데 걸리는 시간이 소정 시간 더 길 수 있다. 이러한 비대칭성은 메모리 및/또는 스토리지 제어기를 설계하는 프로세스를 복잡하게 하는데 그 이유는 기록 동작들이 상당한 기간 동안에 PCMS 구역으로의 액세스를 차단하며 성능-민감 판독(performance-sensitive read)이 제공되는 것을 방지할 수 있기 때문이다.
또한, 상대적으로 긴 시간을 차지하는, PCMS 저장 엘리먼트(비트)를 "1"로 설정하는 것과 대략 엘리먼트를 판독하는데 걸리는 시간과 동일한 시간량을 차지하는, 동일한 엘리먼트를 "0"으로 설정하는 것 간의 상당한 기록 시판 편차가 존재한다. 따라서, PCMS 메모리의 프리(free) 페이지들을 모두 1로 사전설정하고 이어서 이 정보를 이 페이지에 기록하는 동안에 0으로 설정될 필요가 있는 비트들만이 변경되게 되면 매우 유리하다.
따라서, 다수의 실시예들에서, 사전설정 페이지 풀(pool)(모든 비트가 1로 설정된 페이지들의 풀)이 기록 동작을 위해서 사용된다. PCMS 스토리지/메모리 제어기는 움직이는 데이터(data in motion)를 PCMS 디바이스들로/로부터 저장/판독하는데 사용되는 임의의 제어기 캐시들 또는 기록 버퍼들 간의 판독 및 기록 데이터의 전달들을 스케줄링할 수 있다. 최적으로는, 다른 데이터를 위하여 제어기 캐시 및 기록 버퍼에 여유를 두기 위해, 잠시 동안 액세스 되지 않는 모든 데이터는 PCMS 내로 이동될 것이다. 또한, 곧 사용될 데이터를 제어기 캐시로 이동시키는 것은 시스템 성능을 증가시킬 것이다.
다수의 실시예들에 따르면, 도 10에 도시된 프로세스는 제어기의 캐시들 및 기록 버퍼들이 데이터가 PCMS 디바이스로 리타이어되는 것(retired)(즉, 기록되는 것)을 대기하기 때문에 유용한 작업을 위해서 이들이 가용되지 않도록 PCMS 스토리지/제어기가 시간을 줄이는 것을 지원할 수 있다. 도 10으로 돌아가면, 다수의 실시예들에서, 기록 버퍼/캐시 관리 로직(1000)은 제어기(미도시) 내에 상주한다. 이 제어기는 메모리 제어기, 스토리지 제어기, 결합된 메모리/스토리지 제어기, 또는 상이한 실시예들에서는 모두가 다른 제어기일 수 있다. 기록 버퍼/캐시 관리 로직(1000)은 반드시 PCMS 동작들을 위한 제어기의 자원들인 하나 이상의 기록 버퍼들 및/또는 하나 이상의 캐시들을 관리하는 관리 로직이다. 예를 들어, 이러한 맥락에서 기록 버퍼는 하나 이상의 PCMS 디바이스들로의 계류중인 기록들이 리타이어되는 것(완료되는 것)을 기다리면서 큐잉되는 스토리지 로케이션일 수 있다. 기록 버퍼 내의 계류중인 기록들은 PCMS 메모리의 프리 페이지가 사용가능하게 되는 것을 대기하고 이어서 관리 로직이 버퍼에서 프리 페이지로의 기록을 코디네이션한다.
보다 구체적으로, 프리 PCMS 메모리 페이지들의 프리 페이지 풀(1002)이 기록 버퍼/캐시 관리 로직(1000)에 대해 액세스가능하다. 관리 로직이 진행하여 기록 요청을 리타이어 하기로 결정하면, 프리 페이지 풀(1002)로부터의 페이지가 팬텀 어드레스 스페이스(1004)로 맵핑된다(단계 1: 도 10에서 원 내의 1로 표시됨). 이어서, 기록 버퍼/캐시 관리 로직(1000)이 데이터를 맵핑된 페이지에서의 팬텀 어드레스 스페이스(1004)에 기록함으로써 기록 버퍼(1006)로부터의 기록 요청을 실행한다(단계 2). 기록 버퍼 엔트리는 이어서 사용가능한 것으로 마크되고 더 이상 필요하지 않은 페이지는 더티 페이지 풀(dirty page pool)(1008)로 전송된다(단계 3). 더티 페이지 풀은 간단하게 더 이상 필요하지 않은 데이터를 갖는 PCMS 페이지들의 더티 리스트(dirty list)일 수 있다. 다수의 실시예들에서, 더티 페이지 풀(1008)은 더티 페이지 풀 포인터에 의해 포인팅되는 페이지들의 리스트이다. 이 리스트로부터 취해진 각 페이지에 대해서, 이어서 포인터들이 이 리스트 상의 다음 페이지로 포인팅된다. 단계 3으로부터 더티 페이지 풀(1008)로 전송된 더티 페이지와 같은 각 새로운 더티 페이지는 이 리스트의 끝부분으로 첨부될 수 있다.
페이지 클리닝 로직(1010)이 이어서 더티 풀로부터의 페이지를 풀링(pulling)하여 이를 클리닝한다(단계 4). 다수의 실시예들에서, 클리닝 프로세스는 페이지 내의 모든 비트를 "1"로 설정하여서 신속한 기록을 위해서 이 페이지를 사전설정한다. 이어서, 페이지 스트림이 페이지 클리닝 로직(1010)에 의해서 프리 페이지 풀(1002)로 전송된다(단계 5). 더티 페이지 풀(1008)에서와 마찬가지로, 프리 페이지 풀(1002)은 프리 페이지 풀 포인터에 의해서 포인팅될 수 있다. 프리 페이지 풀 포인터는 PCMS 메모리의 프리 페이지들의 리스트 앞의 페이지로 포인팅한다. 페이지가 이 리스트로부터 취해져서 기록을 위해서 팬텀 어드레스 스페이스로 맵핑되면, 이어서 포인터는 이 리스트 내의 다음 페이지로 포인팅한다. 클린 페이지가 클린 페이지 스트림으로부터 도달하면, 이 페이지가 이 리스트의 끝부분에 첨부된다.
페이지 클리닝 로직(1010)은 일반적으로 기록 버퍼/캐시 관리 로직(1000)과는 독립적으로 동작한다. 페이지마다 페이지 클리닝 프로세스는 전력 및 성능 동작 포인트들과 같은 결정적인 시스템 고려사항들을 고려하는 레이트로 지배된다. 다수의 실시예들에서, 페이지 클리닝 로직(1010)은 더티 페이지 풀(1008)에 도달하는 매 페이지에 대해서는 카운터를 증분하고 클리닝되기 위해서 더티 페이지 풀(1008)로부터 빠져나가는 매 페이지에 대해서는 동일한 카운터를 감분함으로써 클리닝 필요가 있느 페이지들의 카운트를 유지한다. 이는 더티 페이지 풀(1008)을 포함하는 페이지들의 리스트의 전방으로의 포인터를 추적하는 것과는 별도이다. 다른 실시예들에서, 더티 페이지 풀(1008) 및 프리 페이지 풀(1002)은 리스트보다는 테이블에서 보관될 수 있다.
몇몇 실시예들에 따라서, 기록 버퍼/캐시 관리 로직(1000)은 부분적으로 캐싱된 페이지들(partially cached pages)의 갭들(gaps)을 채우는 로직을 포함할 수 있다. 예를 들어서, 기록 버퍼가 팬텀 어드레스 스페이스로 맵핑된 클린 페이지로 기록할 페이지로부터의 부분적 데이터를 갖는다면, 이 로직은 기록 데이터의 갭을 채우도록 이 페이지에 대해 남아있는 정보를 얻기 위해서 PCMS 디바이스로부터 판독을 수행할 수 있다.
또한, 기록 버퍼/캐시 관리 로직(1000)은 기록 버퍼(1006)에서 메모리의 물리적 PCMS 페이지로 데이터를 물리적으로 기록할 수 있는 메커니즘을 포함한다. 페이지 클리닝 로직(1010)이 동작 중일 때에, 기록들을 위해서 사용가능한 어느 정도 개수의 사전 설정된 페이지들은 언제나 존재할 수 있다. 도 11은 팬텀 어드레스 스페이스(phantom address space)에서 사용가능한 PCMS 페이지들에 데이터를 기록하는 기록 메커니즘에 대한 프로세스 흐름의 실시예를 도시한다. 이 프로세서는 하드웨어, 소프트웨어 또는 펌웨어 또는 이러한 열거된 형태의 프로세싱 로직들 중 2 개 이상의 조합을 포함할 수 있는 프로세싱 로직에 의해서 수행된다.
이 프로세스는 플러싱될(flushed) 필요가 있는 기록 버퍼 내의 데이터의 페이지에서 시작한다(프로세싱 블록 1100). 이 페이지는 PCMS 메모리 디바이스로 기록되기를 대기하며, 버퍼를 플러싱하는 프로세스가 이러한 기록을 완성한다. 이 프로세스는 계속되어서 프로세싱 로직이 데이터의 전체 페이지가 유효한지의 여부를 결정한다(프로세싱 블록 1102). 데이터의 전체 4K 페이지가 유효하지 않으면, 프로세싱 로직은 기록 버퍼 내로 간 데이터를 갖는 구(old) PCMS 페이지로부터 유효하지 않은 페이지의 부분들을 위한 데이터를 페치한다(프로세싱 블록 1104). 이어서, 프로세싱 블록(1104)이 수행되는지와 상관없이, 전체 로직 흐름 경로에 있어서 다음 단계는 프로세싱 로직이 프리 페이지 풀 내의 다음 PCMS 페이지를 찾는 것이다(프로세싱 블록 1106).
프리 페이지가 일단 발견되면, 몇몇 실시예들에서, 프로세싱 로직은 기록 버퍼로부터의 엔트리 또는 엔트리들을 프리 페이지 풀 내의 상기 발견된 프리 페이지에 기록한다(프로세싱 블록 1108). 몇몇 실시예들에서, 이어서, 프로세싱 로직은(도 7로부터의 메모리 재맵핑 테이블(700)로도 또한 지칭될 수 있는)팬텀 어드레스 테이블 내의 포인터를 이전에 기록된 페이지를 포인팅하도록 수정한다(프로세싱 블록 1110). 이어서, 다른 기록 요청이 기록 버퍼 내로 입력될 수 있도록 프로세싱 로직은 가용한 기록 버퍼 엔트리를 마크한다(프로세싱 블록 1112).
도 12는 PCMS 페이지들이 전력/성능 측면에서 효율적으로 기록되게 하는 메커니즘의 실시예를 도시한다. 다수의 실시예들에 따르면, PCMS 페이지 상태 테이블(1200)이 컴퓨터 시스템 내에 저장된다. PCMS 페이지 상태 테이블(1200)의 로케이션은 상이한 실시예들에서 다를 수 있다. 다수의 실시예들에 따르면, PCMS 페이지 상태 테이블(1200)은 이 테이블이 실질적으로 크기 때문에(예를 들어서, 4KB 페이지 단위의 1TB PCMS는 1TB/4KB = 2억 5천 6백만 개의 엔트리들임), PCMS 자체 내에 저장된다. 다른 실시예들에서, 이 테이블은 사용가능하기에 충분한 예비 스페이스가 존재하면 DRAM의 예비된 부분 내에 저장될 수 있다.
PCMS 페이지 상태 테이블(1200)은 다음과 같이 인코딩되는 페이지 엔트리당 2 비트를 포함한다:
● 00 - 페이지가 사용 중이지 않으며 클린 상태에 있음
● 00 - 페이지가 사용 중이지 않지만 클리닝을 필요로 함
● 10 - 페이지가 원격 메모리로서 사용 중에 있음
● 11 - 페이지가 스토리지에 할당되거나 불량 상태에 있음
TB의 PCMS에 대해 2억 5천 6백만 개의 엔트리들이 있어서 엔트리당 2 비트에서는, 이 테이블은 64 MB 스토리지를 요구할 것이다. 이 페이지 상태 테이블은 사전 클리닝된 페이지들(예를 들어서, 모든 비트들이 "1"를 갖는 페이지들)과 클리닝되지 않은 페이지들(예를 들어서, "더티" 페이지들로도 알려져 있으며 그들 내에 구 데이터(old data)를 갖는 페이지들)간의 구별을 가능하게 한다.
프리 페이지들로의 액세스를 위해서, 2 개의 포인터들이 제공된다. 제1 포인터(1202)는 클리닝된 프리 페이지(1204)의 리스트(즉, 풀)로 포인팅한다. 제2 포인터(1206)는 더티 프리 페이지들(dirty free pages)(1208)의 리스트/풀로 포인팅한다. 많은 실시예들에서, 이러한 풀들은 PCMS 물리적 어드레스 스페이스 내의 로케이션들로의 어드레스들의 리스트를 포함한다. 몇몇 실시예들에서, 이러한 2 개의 풀들은 PCMS 페이지 상태 테이블(1200)에 인접하는 로케이션들 내에서 유지될 수 있다. 다른 실시예들에서, 이러한 2 개의 풀들은 DRAM에서와 같이, 시템 내의 어느 위치에서 유지될 수 있다.
페이지 클리닝 로직(1010)(잠재적으로 도 7 및 도 8에서는 메모리/스토리지 제어부 내에 위치하지만 어디에서도 위치할 수 있음)은 PCMS 메모리의 페이지들을 클리닝하며 더티 프리 페이지들의 리스트(구 데이터는 이러한 페이지들 상에 위치하며, 이는 이러한 페이지들 상의 비트들 모두가 "1"로 설정되지는 않음을 의미함)를 찾거나 제공한다. PCMS 페이지 상태 테이블(1200)은 각 페이지의 상태를 유지하며 페이지 클리닝 로직(1010)은 각 페이지의 상태를 유지할 수 있다. 예를 들어서, 더티 프리 페이지가 더티 프리 페이지 풀(1208)로부터 풀링되고(pulled) 클리닝되면, 페이지 클리닝 로직(1010)은 이러한 특정 페이지에 대한 PCMS 페이지 상태 테이블(1200)을 01 "프리/낫클린" 에서 00 "프리/클린"으로 업데이트한다.
다른 실시예들에서, 페이지 클리닝 로직(1010)은 클리닝될 비었지만 클린 상태가 아닌 페이지들(01)을 찾기 위해서 PCMS 페이지 상태 테이블(1200)을 추가적으로 탐색할 수 있다. 클리닝되지 않은 이렇게 찾아진 페이지에 대해서, 페이지 클리닝 로직(1010)은 이 페이지를 더티 프리 페이지 풀(1208)에 부가한다.
어떠한 PCMS 트래픽도 존재하지 않거나 거의 존재하지 않는 시간들 동안에, 페이지 클리닝 로직(1010)은 더티 프리 페이지 풀(1208) 내에 위치한 하나 이상의 페이지들을 클리닝하는 것으로 결정한다. 이러한 것이 일 페이지에 대해서 발생하면, 페이지 클리닝 로직은 PCMS 페이지 상태 테이블(1200) 내에서 이 페이지에 대한 상태 비트를 00으로 조절하며, 00는 이 페이지가 비었으며 클린 상태에 있음을 나타낸다. 이어서, 페이지 클리닝 로직(1010)은 이 페이지를 더티 프리 페이지 풀(1208)로부터 클리닝된 프리 페이지 풀(1204)로 이동시킨다. 상당한 PCMS 트래픽이 존재하면, 페이지 클리닝 로직은 PCMS 메모리 성능에 악영향을 주지 않기 위해서 어떠한 페이지들이라도 클리닝하려고 하지 않는다.
PCMS 트래픽이 존재하는 시점을 결정하기 위해, 메모리 트래픽 모니터(1212)가 사용되어서 최근 소비된 PCMS 대역폭을 추적한다. 동작 동안에, 메모리 트래픽 모니터 로직은 1 마이크로초와 같은 소정의 시간 내에서 메모리 트랜잭션들의 수를 일정하게 카운트한다. 이러한 소정 시간 동안의 PCMS 트랜잭션들의 수가 프로그래밍된 값(이 프로그래밍된 값은 BIOS 또는 그 밖의 다른 로케이션을 통해서 프로그래밍될 수 있음)보다 크다면, 비트가 메모리 트래픽 모니터(1212) 내에 위치한 시프트 레지스터 내에 설정된다. 메모리 트래픽 모니터(1212) 내의 로직의 개별 부분이 과거 "n" 시간 기간들 동안에 시스템이 얼마나 많은 "분주한" 시간 시간들을 가졌는지를 이해하기 위해서 시프트 래지스터를 모니터링한다. 분주한 기간들의 수가 프로그래밍된 수보다 크면, 이 로직은 다음 프리 포인터(1214)가 클리닝된 프리 페이지 풀(1204)로부터 소싱되게(sourced) 할 것이다. 분주한 기간들의 수가 프로그래밍된 수보다 작거나 같으면, 다음 프리 포인터(1214)가 클리닝되지 않은 프리 페이지 풀(1208)로부터 소싱되게 된다.
전술한 바와 같이, 이 동일한 메모리 트래픽 모니터링 로직은 언제 페이지들을 클리닝할지를 결정하는데 있어서 페이지 클리닝 로직(1210)을 지원하는데 사용되며, 이로써 메모리 트래픽 모니터링 로직(1212)은 다수의 실시예들에서 페이지 클리닝 로직(1210)에 추가적으로 통신가능하게 연결된다.
다른 실시예들에서, 시스템은 디바이스가 교류 전류(AC) 전력에 접속된 모든 경우에서는 페이지들을 사전에 클리닝하기로 결정할 수 있는데 그 이유는 전력 소비량은 디바이스가 배터리 상에서 실행될 때에만 문제가 되기 때문이다.
도 7로 돌아가면, 일반적으로 표준 동작 동안에 "스토리지"보다 "메모리"가 더 빈번하게 판독 및 기록된다. 따라서, 메모리 스페이스로서 지정된 NVRAM(예컨대, PCMS)의 일부가 이러한 방식으로 유지되며 NVRAM의 나머지 부분이 스토리지 스페이스로서 지정되면, 많은 타입의 비-휘발성 메모리들의 경우에 일반적인 마모 특성으로 인해서, 메모리 스페이스 섹션 및 스토리지 스페이스 섹션은 시간에 지남에 따라서 서로 균일하지 않게 마모될 것이다.
따라서, 이러한 문제를 해결하기 위해서, 도 13은 메모리 지정과 스토리지 지정 간에서 NVRAM 페이지들의 일정한 이동을 가능하게 하는 메커니즘의 실시예를 도시한다.
도 13에서, 메모리 사용과 스토리지 사용 간에서 NVRAM 페이지들을 이동시키는 NVRAM 메모리/스토리지 스왑 하드웨어 로직(1300)이 존재한다. 메모리/스토리지 스왑 하드웨어 로직(1300)은 다음을 사용한다:
● NVRAM의 각 페이지의 상태(즉, 페이지가 스토리지로 할당되는지 아니면 메모리에 대해서 사용되는지의 상태)를 반영하는 비트-맵핑된 비-휘발성 테이블. 이 테이블은 일반적으로 NVRAM 자체 내에 저장될 것이다. 예를 들어, PCMS 기반 시스템의 경우에, 이 테이블은 NVRAM 페이지 상태 테이블(1302)(도 12의 PCMS 페이지 상태 테이블(1200)와 유사하거나 동일함)을 포함할 수 있다.
● 스토리지-스페이스 LBA 어드레스들을 NVRAM 디바이스 어드레스들로 맵핑하는 스토리지 재맵핑 테이블(702).
● NVRAM 스토리지 페이지들이 가용한 메모리-스페이스 페이지로 이동하게 하고 이전에 데이터를 포함한 스토리지-스페이스 페이지가 메모리 사용을 위해서 목적이 재지정되게 하는 하드웨어 메커니즘.
다수의 실시예들에서, 도 13에 예시된 로직이 동작하는 겨우, 다음의 속성들을 고려된다:
메모리 풀 기록 메커니즘은 언제나 데이터를 빈(empty) 메모리-할당된 페이지에 기록할 것이다.
스토리지 재맵핑 테이블(702)로 맵핑된 NVRAM 어드레스들에 의해서 표현된 스토리지 풀은 스토리지-할당된 페이지들로 기록하도록 메모리 기록 메커니즘과 상호 작용하여서, 기록이 완료되면 기록된 페이지를 스토리지 풀로 이동시킨다.
스토리지 풀은 페이지들이 더 이상이 필요 없음을 통지할 때에 더 이상 필요하지 않은 페이지들을 기록 풀로 푸싱한다(pushing). 몇몇 실시예들에서, 이 페이지들은 "클린" 풀일 수도 있고 그렇지 않을 수도 있는 프리 페이지 풀(1304)(즉, 도 12를 참조하여서 전술한 풀과 같은, 기록들을 위해서 사전 설정된 프리 페이지들의 풀) 내로 푸싱된다.
페이지가 스토리지로 기록되는 경우, 이 프로세스에 대한 이러한 속성들은 기록된 페이지가 메모리 풀에서 스토리지 풀로 이동하게 하며 스토리지 로케이션으로 이전에 할당된 페이지가 스토리지 풀에서 메모리 풀로 이동되게 한다.
도 13은, 예시된 실시예에서, 메모리/스토리지 스왑 하드웨어 로직(1300)으로서 도시된 하드웨어 메커니즘을 기술한다. 이 로직은 시스템 내의 메모리/스토리지 제어 로직 또는 그 밖의 로케이션 내에 위치할 수 있다. 예시적인 실례를 제공하기 위해서, 메모리/스토리지 스왑 하드웨어 로직(1300)은 메모리/스토리지 서브시스템(1306) 내의 세력권에 걸쳐서 위치한다. 세력권(1306)은 간단히 메모리/스토리지 스왑 하드웨어 로직(1300)이 이러한 스와핑들 중 하나를 수행하기 위해서 제어할 수 있는 하드웨어 및 소프트웨어 로직의 적어도 최소 양을 도시한다.
프로세스는 메모리/스토리지 스왑 하드웨어 로직(1300) 내에 존재할 수 있는 주기적 타이머 또는 기록 카운터(타이머/카운터:T/C(1308))를 통해서 개시된다. 소정의 시점에서, T/C(1308)가 개시되며(이는 발생하는 기록들의 특정 개수 또는 카운터에서는 경과한 특정 시간 양을 지칭함), 스토리지에 할당된 PCMS 디바이스 페이지(스토리지 재맵핑 테이블(702)로 맵핑된 현재 스토리지 페이지) 내의 데이터가 기록 버퍼(1006)로 카피되게 한다(단계 1). 기록 버퍼(1006)가 NVRAM 메모리 스페이스 내의 프리 페이지(메모리 재맵핑 테이블(700)로 할당된 페이지)에 기록될 데이터를 가지면, 프리 페이지 풀(1304)로부터의 프리 페이지가 메모리 재맵핑 테이블(700)로 할당 및 맵핑된다(단계 2A).
일단 페이지가 이 테이블 내에 할당되면, 기록 버퍼는 플러싱되며 현재 스토리지 페이지로부터 최초에 수신된 데이터가 메모리 재맵핑 테이블(700) 내의 새로운 맵핑된 프리 페이지로 기록된다(단계 2B). 이 시점에서, 스토리지 스페이스 내의 현재 스토리지 페이지 내에 저장된 데이터는 이제 메모리 스페이스 내의 새로운 맵핑된 프리 페이지 내에 위치한다. 이 후에, 또는 잠재적으로 단계 2A 및 단계 2B와 연관되어서, (이제 그 내에 구 데이터를 갖는) 현재 스토리지 페이지로의 NVRAM 어드레스가 새로운 이주된 메모리 페이지로서 메모리 스페이스 내로 재할당된다(단계 3). 이로써, 이 어드레스가 포인팅하는 물리적 NVRAM 페이지는 스토리지 재맵핑 테이블(702) 내의 스토리지 스페이스로서 할당되는 것으로부터 메모리 재맵핑 테이블(700) 내의 메모리 스페이스로서 할당되는 것으로 변경된다. 이러한 재할당과 동시에 또는 그 이후에, 이제 도 2B에서 기록 버퍼(1006)로부터 도달한 자신에게 기록된 스토리지 데이터를 갖는 새로운 맵핑된 프리 페이지는 새로운 이주된 스토리지 페이지로서 재할당된다(단계 4). 이로써, 이 어드레스가 포인팅하는 물리적 NVRAM 페이지는 메모리 재맵핑 테이블(700) 내의 메모리 스페이스로서 할당되는 것으로부터 스토리지 재맵핑 테이블(702) 내의 스토리지 스페이스로서 할당되는 것으로 변경된다.
이 시점에서 이러한 이동(migration)이 완료된다. 이 이동은 방법론적으로 물리적 NVRAM 메모리의 페이지 전후방으로 발생한다. T/C(1308)가 개시되면, 다른 메모리 할당된 페이지가 스토리지로 이동하고 대응하는 스토리지 할당된 페이지는 메모리로 이동한다. 이 프로세스가 시간에 걸쳐서 모든 NVRAM 물리적 페이지들을 걸쳐서 반복되면, 그 결과는 이 디바이스의 물리적 메모리 어드레스들의 하단에서 상단까지 NVRAM 디바이스 마모는 균일하게 된다.
추가적인 전력 및 성능 고려 사항들은 NVRAM 물리적 디바이스의 "평면" 구성에 따라서 효율 목적을 위해서 필요할 수도 있다. 예를 들어서, PCMS의 경우에, 수많은 경우들에서, 소정의 평면에서 연속적인 액세스들과 함께 동작할 때에 효율적인 메모리의 영역들을 지칭하는 다수의 "평면들"이 존재하지만, 이 디바이스는 상이한 물리적 메모리 로케이션들로의 연속하는 액세스들이 평면들을 교차하면 트랜재션 효율(전력 관점 및 성능 관점 모두에서)을 손실한다.
PCMS는 일반적으로 현 세대의 디바이스들에 대해서는 약 50 나노초의 대부분의 액세스들에 대한 매우 짧은 레이턴시들을 가지지만, 연속하는 액세스들이 메모리 디바이스 내의 2 개의 상이한 평면에 대한 것이며 일 평면이 이 디바이스 내의 전체 메모리 스페이스의 약 1/4을 나타낼 수 있으면 약 100 나노초의 보다 긴 레이턴시를 요구한다. 또한, 액세스들 간의 평면 교차에 대해서는 실질적 패널티/에너지 패널티(penalty)가 존재할 수 있다.
따라서, 가능한한 많은 불필요한 평면 천이들을 제거함으로써 이러한 패널티들을 완화시키는 메커니즘이 제안된다. 도 14는 불필요한 PCMS 평면 천이들(plane transitions)을 제거하는 프로세스를 지원하는 프로세스 및 이에 수반되는 메커니즘(즉, 하드웨어 로직)의 실시예를 예시한다.
다수의 실시예들에서, 뷰(1400)에서 실제 평면들 상에서 순서대로 도시된 PCMS 디바이스 액세스 세트(A1 내지 A5)가 존재한다. 액세스 1은 평면 1 내의 물리적 로케이션에 대한 것이며, 액세스 2은 평면 2 내의 물리적 로케이션에 대한 것이며, 액세스 3은 평면 3 내의 물리적 로케이션에 대한 것이며, 액세스 4은 평면 4 내의 물리적 로케이션에 대한 것이며, 액세스 5은 평면 1 내의 물리적 로케이션에 대한 것이다. 뷰(1402)에서, 평면들 간의 천이들(T1 내지 T4)는 액세스들이 순서대로 리타이어된 때에 도시된다. 구체적으로, 평면 천이 1은 액세스 1과 액세스 2 간에서 발생하며, 평면 천이 2은 액세스 2과 액세스 3 간에서 발생하며, 평면 천이 3은 액세스 3과 액세스 4 간에서 발생하며, 평면 천이 4은 액세스 4과 액세스 5 간에서 발생한다. 따라서, 수신된 순서로의 액세스들의 표준 액세스 순서 뷰(1404)에서는, 4 개의 평면 천이들이 존재한다.
(입력되는 판독 요청 및 기록 요청이 실행 이전에 큐잉되는) 큐잉되는 트랜잭션 버퍼들을 갖는 메모리 제어 로직을 사용하여, 로직이 액세스들의 물리적 로케이션들을 알고 있을 때에 트랜잭션 순서를 재순서화(re-ordering)하는 것이 가능하고 실제적으로 바람직하다. 이로써, PCMS 트랜잭션 재순서화 로직 유닛을 포함할 수 있는 메모리 제어 로직은 각 트랜잭션에 대한 물리적 PCMS 어드레스들을 획득하기 위해서 메모리/스토리지 재맵핑 로직(전술하였음)을 사용함으로써 큐잉된 PCMS 트랜잭션들로부터의 룩업을 수행할 수 있다. 트랜잭션 큐 내의 각 PCMS 트랜잭션의 물리적 로케이션에 대한 지식에 기초하여서, PCMS 트랜잭션 재순서화 로직 유닛은 트랜잭션들의 세트의 평면 천이 효율을 증가시키도록 트랜잭션들을 재순서화할 수 있다.
도 14의 경우에,(뷰(1400)에 도시된 순차적(in-order) 평면 액세스들로부터 수정된)비순차적(oue-of-order) 평면 액세스들의 합리적인 세트(1406)가 5 번째 액세스(A5)를 트랜잭션 큐 내의 5 번째 위치에서 두번째 위치로 이동시킬 것이다. 이로써, 새롭게 재순서화된 액세스들의 세트는 평면 1 내의 A1, 이어서 평면 1 내의 A5, 이어서 평면 2 내의 A2, 이어서 평면 3 내의 A3, 마지막으로 평면 4 내의 A4가 된다. 이러한 오더 또는 순서는 뷰(1408)에서 도시된 바와 같이 평면 천이 수를 4에서 3으로 변화시키며, 이 뷰는 액세스들 5와 2 간에서 발생하는 평면 천이 1, 액세스들 2와 3 간에서 발생하는 평면 천이 2, 액세스들 3와 4 간에서 발생하는 평면 천이 3을 나타낸다. 이 결과는 하나가 줄어든 평면 천이들을 갖는 최적화된 액세스 순서(1410)이다. 이러한 재순서화는 레이턴시-집약형 평면 천이들이 줄어듬으로써 메모리 처리량이 증가하며 전체 전력 소비량이 저감된다.
4. SoC 기반 컴퓨팅 디바이스 개요
도 15는 프로세서, 그래픽들, 메모리, 및 입출력 제어 로직을 일 SoC 패키지 내로 결합시킨 SoC(시스템-온-칩 ) 패키지(1500)설계인 MLMD 기반 메모리 서브시스템을 포함하는 컴퓨팅 디바이스의 실시예를 도시한다. 이로써, 도 15는 CPU 코어(들)(1502), GPU 코어(들)(1504), 그들의 각각의 캐시들(1506 및 1508)이 모두 메모리 서브시스템(1512) 및 입출력 서브시스템(1530)과 함께 패키지 내에 존재한다.
도시되지는 않았지만, 각 CPU 코어는 하나 이상의 인스트럭션/데이터 캐시들, 실행 유닛들, 프리페치 버퍼들, 인스트럭션 큐들, 브랜치 어드레스 계산 유닛들, 인스트럭션 디코더들, 플로팅 포인트 유닛들, 리타이어먼트 유닛들(retirement units) 등을 그 내에 포함할 수 있다. 존재하는 각 코어는 CPU 반도체 다이 상에 위치한다. SoC 패키지(1500) 내의 코어(들)(1502) 이외의 도시된 각 로직 유닛에 있어서, 이 로직 유닛은 몇몇 실시예들에서는 CPU 코어(들)(1502) 반도체 다이 상에 존재하거나 다른 실시예들에서는 다른 다이 상에 존재할 수 있다. 소정의 로직 유닛이 CPU 코어(들)(1502)과 동일한 다이 상에 있지 않으면, 이 로직 유닛은 상이한 반도체 다이 상에 있을 것이지만 동일한 SoC 패키지(1500) 내에 존재하며, 이 동일한 패키지는 이 패키지 내에 서로 통신가능하게 연결된(coupled) 몇몇 다이들을 포함할 수 있다.
SoC 패키지(1500)는 또한 CPU 캐시(1506)와 같은 적어도 하나의 하위 레벨 CPU 캐시를 포함한다. 이는 휘발성 메모리(1518) 및/또는 NVRAM(1520) 내의 메모리 로케이션들로부터 검색된(retrieved) 상당한 양의 데이터를 저장할 수 있는 범용 캐시일 수 있다. 상이한 실시예들에서, CPU 캐시(1506)는 모든 코어들 간에 공유되거나 각 코어는 그 자신의 하위 레벨 캐시를 가질 수도 있다.
하나 이상의 GPU 코어(들)(1504)는 또한 SoC 패키지(1500) 및 하나 이상의 GPU 코어(들)(1504)가 작업하는 그래픽 관련 데이터를 포함할 수 있는 하위 레벨 GPU 캐시(1508) 내에 포함될 수도 있다. 하나 이상의 GPU 코어(들)(1504)는 프로세스할 정보를 실행 유닛들에 제공하는데 사용되는 하나 이상의 실행 유닛들 및 하나 이상의 인스트럭션 및 데이터 캐시들을 내부적으로 포함할 수 있다. 또한, GPU 코어(들)(1504)는 다른 것들 중에서도 하나 이상의 버텍스(vertex) 프로세싱 유닛, 래스터화 유닛(rasterization units), 매체 프로세싱 유닛들 및 코덱들과 같은, 도 15에 도시되지 않는 다른 그래픽 로직 유닛들을 포함할 수 있다. 단순성을 위해서, GPU 코어(들)(1504) 내의 특정 로직은 도시되지 않는다.
SoC 패키지들(1500)은 코어들(1502) 및 SoC 패키지들(1500)의 다른 요소들을 코디네이션(coordination) 및 동작시키는 구성 요소들을 포함하는 홈 에이전트(home agent)(1510)를 또한 포함할 수 있다. 홈 에이전트 유닛(1510)은 예를 들어서 전력 제어 유닛(PCU)을 포함할 수 있다. PCU는 다른 태스크들 중에서도 코어(들)의 전력 상태를 조정하기 위해 필요한 로직 및 구성요소들을 포함할 수 있다.
도 15에서, SoC 패키지(1500)는 또한 휘발성 메모리(1518)로의 액세스를 제공하는데 사용될 수 있는, 통합된 휘발성 메모리 제어기(1514)를 갖는 메모리 서브시스템(1512)을 포함한다. 통합된 휘발성 메모리 제어기(1514)는 CPU 코어로부터 메모리 액세스 요청을 수신하고 이 요청을 휘발성 메모리(1518)로 라우팅할 수 있다. 마찬가지로, NVRAM 제어부(1516)는 CPU 코어로부터 메모리 액세스 요청을 수신하고 이 요청을 NVRAM(1520)로 라우팅할 수 있다.
"휘발성 메모리"(1518)는 NVRAM(1520)에 대한 낮은 판독/기록 액세스 레이턴시 및/또는 보다 대칭적인 판독/기록 레이턴시(즉, 기록 시간과 대략 동일한 판독 시간을 가짐)를 갖는 NVRAM(1520)과 함께 구성된 중간 레벨 메모리이다. 상술한 바와 같이, 몇몇 실시예들에서, 휘발성 메모리(1518)는 NVRAM(1520)보다 크게 낮은 기록 레이턴시를 가지지만 유사한(예를 들어서, 근소하게 낮은 또는 동일한)판독 레이턴시를 가지며; 예를 들어서, 휘발성 메모리(1518)는 휘발성 랜덤 액세스 메모리(VRAM)와 같은 휘발성 메모리일 수 있으며 DRAM 또는 다른 고속 커패시터 기반 메모리를 포함할 수 있다. 그러나, 본 발명의 기본적인 원리는 이러한 특정 메모리 타입들로 한정되는 것이 아님이 주목된다. 또한, 휘발성 메모리(1518)는 상대적으로 낮은 밀도를 가질 수 있거나/있으며 NVRAM(1520)보다 제조하는데 더 가격이 나갈 수 있다.
몇몇 실시예들에서, 휘발성 메모리(1518)는 NVRAM(1518)과 CPU 캐시(1506) 간에 구성된다. 이하에서 기술되는 실시예들 중 몇몇에서, 휘발성 메모리(1518)는 예를 들어서 판독/기록 한계사항들 및 메모리 열화 한계사항들을 포함하여 NVRAM(1520)의 성능 및/또는 사용 한계사항들을 차단하는데 사용된다. 이러한 구현예들에서, 휘발성 메모리(1518) 및 NVRAM(1520)의 조합은 시스템 메모리로서 오직 DRAM만을 사용하는 시스템에 근사거나 균등하거나 초과하는 성능 레벨에서 동작한다.
도 15에서의 특정 구성에서 도시된 바와 같이, 상이한 실시예들에서, 휘발성 메모리(1518)는 프로세서 다이 상에 위치하거나, SoC 패키지(1500)상에 위치한 별도의 다이 상에서 프로세서 다이 외부에 위치하거나, 예를 들어서 DIMM(memory dual in-line memory module), 라이저/메자닌(riser/mezzanine) 또는 컴퓨터 마더보드 상에서 SoC 패키지(1500)로의 높은 대역폭 링크를 갖는 CPU 패키지 외부에 위치할 수 있다. 도 15에서, 휘발성 메모리(1518)는 SoC 패키지(1500) 외부에 위치하는 것으로 도시되어 있다. 휘발성 메모리(1518)는 DDR 또는 다른 트랜잭션형 고 대역폭 링크들과 같은 단일 또는 다수의 고 대역폭 링크들을 사용하여서 SoC 패키지(1500)와 통신가능하게 연결될 수 있다. 디바이스들의 통신상의 연결들은 서로 연결된 디바이스들 간에서 정보가 전후방으로 전달될 수 있게 하는 전기적 링크, 광학적 링크, 무선 링크, 다른 형태의 링크 또는 이들의 조합을 통한 연결을 지칭한다. 몇몇 실시예들에서, 이러한 연결은 직접적이며 정보가 제1 디바이스에서 제2 디바이스로 그리고 잠재적으로 역으로도 정보가 직접적으로 전달될 수 있게 한다. 다른 실시예들에서, 이러한 연결은 간접적이며 정보가 해당 2 개의 통신가능하게 연결된 디바이스들 간에서 전달되는 동안에 정보가 취하는 경로를 따라서 상주하는 하나 이상의 추가 디바이스들을 정보가 통과하는 것을 요구한다.
다수의 실시예들에서, 입출력 서브시스템(1530)은 입출력 디바이스(들)(1534)와 같은 입출력 디바이스들과 통신하도록 도 15에서의 시스템 내에 존재한다. 도 15에서의 입출력 서브시스템(1530)은 SoC 패키지(1500) 내에 통합된다. 입출력 서브시스템(1530) 내에, 하나 이상의 입출력 어댑터(들)(1532)가 존재하여서 CPU 코어(들)(1502) 내에서 사용되는 호스트 통신 프로토콜을 특정 입출력 디바이스들와 호환되는 프로토콜로 변환시킨다. 어댑터들에 의해서 변환되기 위해서 사용할 수 있는 프로토콜들 중 몇몇은 다른 것들 중에서도 PCI-E(Peripheral Component Interconnect(PCI)-Express) 3.0; USB(Universal Serial Bus), 3.0; SATA(Serial Advanced Technology Attachment) 3.0; SCSI(Small Computer System Interface), Ultra-640; 및 IEEE(Institute of Electrical and Electronics Engineers) 1594 "파이어와이어(Firewire)" 를 포함한다.
또한, 하나 이상의 무선 프로토콜 입출력 어댑터들이 존재할 수 있다. 다른 것들 중에서도 무선 프로토콜의 실례들은 IEEE 802.15 및 블루투스, 4.0와 같은 PAN(personal area network); IEEE 802.11 기반 무선 프로토콜과 같은 무선 LAN(local area network); 및 셀룰러 프로토콜에서 사용된다.
BIOS(Basic Input/Output System) 플래시 1536 디바이스는 시스템들에 전력이 공급되거나 재부팅될 때에 부팅 인스트럭션 세트를 제공하도록 추가적으로 시스템 내에 존재할 수 있다. BIOS 플래시 1536 디바이스의 경우에, I/O 어댑터들(1534)이 변환시킬 수 있는 프로토콜들 중 몇몇은 다른 것들 중에서도 SPI(Serial Peripheral Interface), Microwire를 포함한다.
다음의 설명에서, 로직 구현예들, 연산자들(operands)을 특정하는 수단, 시스템 구성요소들의 자원 파티셔닝/공유/복제 구현예들, 타입들 및 상호관계들, 및 로직 파티셔닝/통합 선정사항들과 같은 다수의 특정 세부사항들은 본 발명의 보다 철저한 이해를 제공하기 위해서 제시되었다. 그러나, 본 발명은 이러한 특정 세부 사항이 없이도 실시될 수 있음은 본 기술 분야의 당업자에 의해서 이해될 것이다. 다른 실례들에서, 제어 구조들, 게이트 레벨 회로들, 및 전체 소프트웨어 인스트럭션 시퀀스들은 본 발명을 모호하게 하지 않도록 세부적으로 기술되지 않았다. 본 기술 분야의 당업자는 본원의 명세서를 사용하여서 과도한 실험 없이 적합한 기능을 구현할 수 있을 것이다.
본 명세서에서 "일 실시예", "실시예", "실례" 등에 대한 참조는 기술된 실시예가 특정 특징부, 구조, 또는 특성을 포함할 수 있지만 모든 실시예가 반드시 이러한 특정 특징부, 구조, 또는 특성을 포함하는 것은 아님을 의미한다. 또한, 이러안 구절들은 동일한 실시예를 반드시 지칭하는 것도 아니다. 또한, 특정 특징부, 구조, 또는 특성이 일 실시예와 관련하여서 기술된 때에, 이러한 특정 특징부, 구조, 또는 특성을, 명시적으로 기술되는지의 여부와 상관없이, 다른 실시예들과 관련하여서 실현할 수 있는 것은 본 기술 분야의 당업자의 지식의 범위 내에 있임이 제안된다.
다음의 설명 및 청구 범위에서, 용어 "커플링", "접속" 또는 이들의 파생어들이 사용될 수 있다. 이러한 용어들은 서로 동의어로서 해석되지 않을 수도 있다. "커플링(coupled)"은 서로 직접적으로 물리적 또는 전기적 접촉으로 될 수도 있고 되지 않을 수도 있는 2 개 이상의 요소들이 서로 함께 동작하거나 상호 작용하는 것을 표시하는데 사용된다. "접속(connected)"은 서로 연결된 2 개 이상의 요소들 간의 통신의 확립을 표시하는데 사용된다.
또한, 본 발명의 실시예들은 프로세스하기 위해서 컴퓨터(또는 다른 전자 디바이스)를 프로그래밍하는데 사용될 수 있는 인스트럭션들을 그 상에 저장한 비일시적 머신 판독가능한 매체를 포함할 수 있다. 비일시적 머신 판독가능한 매체는 다음으로 한정되지 않지만 플로피 디스켓들, 광학 디스크들, CD-ROM, 자기-광학 디스크, ROM, RAM, EPROM, EEPROM, 자기 또는 광학 카드, 전파 매체 또는 전자적 인스트럭션들을 저장하기에 적합한 다른 타입의 매체/머신-판독가능한 매체를 포함한다. 본 발명의 실시예들은 또한 컴퓨터 프로그램 제품으로서 다운로드될 수 있으며, 이 경우에 이 프로그램은 통신 링크(예를 들어서, 모뎀 또는 네트워크 접속부)를 통해서 반송파 또는 다른 전파 매체로 구현되는 데이터 신호들에 의해서 원격 컴퓨터(예를 들어서, 서버)에서 요청 컴퓨터(예를 들어서, 클라이언트)로 전달될 수 있다.
본 발명은 몇몇 실시예들의 측면에서 기술되었지만, 본 기술 분야의 당업자는 본 발명이 기술된 실시예들로 한정되는 것이 아니라 첨부된 청구항들의 범위 및 사상 내에서 수정 및 변경을 사용하여서 실시될 수도 있음을 이해할 것이다. 따라서, 본 명세서는 한정적으로 해석되는 대신에 예시적으로 간주되어야 한다.
Claims (26)
- 컴퓨팅 시스템을 위한 메모리로서 사용하기 위해 비-휘발성 메모리의 제1 양(amount)을 지정하는 단계;
상기 컴퓨팅 시스템을 위한 스토리지(storage)로서 사용하기 위해 상기 비-휘발성 메모리의 제2 양을 지정하는 단계;
상기 제1 양에 대한 메모리 재맵핑 테이블을 생성하는 단계;
상기 제2 양에 대한 스토리지 재맵핑 테이블을 생성하는 단계; 및
스토리지로서 사용하기 위해 상기 제1 양의 일부의 제1 재지정 또는 메모리로서 사용하기 위해 상기 제2 양의 일부의 제2 재지정에 응답하여 상기 메모리 및 스토리지 재맵핑 테이블들을, 상기 제1 양의 상기 일부 및 상기 제2 양의 상기 일부에 대한 포인터들을 수정함으로써, 업데이트하는 단계 - 상기 스토리지 재맵핑 테이블은 적어도 논리적 블록 어드레스를 상기 비-휘발성 메모리의 물리적 메모리 어드레스로 변환하도록 구성됨 -
를 포함하는 방법. - 제1항에 있어서,
제1 양의 시간 동안 상기 비-휘발성 메모리의 상기 제1 양 전체에 걸쳐 메모리로서의 사용에서 스토리지로서의 사용으로 재지정되도록 사이클링(cycling)하는 단계를 포함하고, 상기 사이클링하는 단계는 복수의 시간 세그먼트들(segments)의 개별 세그먼트들에서 상기 비-휘발성 메모리의 상기 제1 양 전체를 차지하는 복수의 부분들 각각을 재지정하는 단계를 포함하며, 상기 복수의 세그먼트들의 합은 상기 제1 양의 시간을 포함하는 방법. - 제1항에 있어서,
상기 메모리 재맵핑 테이블을 통해서 상기 컴퓨팅 시스템 상에서 실행되는 소프트웨어 애플리케이션을 위해 상기 비-휘발성 메모리의 적어도 하나의 물리적 메모리 어드레스로의 액세스를 제공하는 단계를 포함하고, 상기 메모리 재맵핑 테이블은 적어도 가상 메모리 어드레스를 상기 비-휘발성 메모리의 물리적 메모리 어드레스로 변환하도록 구성되는 방법. - 삭제
- 제1항에 있어서,
개별 페이지 상태 테이블 엔트리들에서 상기 비-휘발성 메모리의 개별 물리적 페이지들과 연관되는 비트를 적어도 갖는 페이지 상태 테이블을 생성하는 단계를 포함하고, 상기 개별 페이지 상태 테이블 엔트리들은 페이지 상태 테이블 엔트리에 대응하는 상기 비-휘발성 메모리의 물리적 페이지가 메모리 또는 스토리지로서 사용되기 위해 지정되는지를 나타내는 방법. - 제1항에 있어서,
상기 비-휘발성 메모리의 복수의 물리적 페이지들의 개별 물리적 페이지들에 대해, 상기 비-휘발성 메모리의 각 물리적 페이지들이 쓰여질 수 있는 프리(free) 상태인지를 결정하는 단계 - 상기 비-휘발성 메모리의 각 물리적 페이지는 상기 각 물리적 페이지가 유효한 데이터를 유지(holding)하고 있지 않을 때에 쓰여질 수 있는 프리 상태에 있음 -; 및
상기 비-휘발성 메모리의 개별적으로 식별된 프리 물리적 페이지들에 대해, 상기 개별적으로 식별된 프리 물리적 페이지들이 클린(clean) 상태인지를 결정하는 단계 - 상기 비-휘발성 메모리의 프리 물리적 페이지는 상기 프리 물리적 페이지 내의 모든 저장된 비트들이 1로 설정된 때에 클린 상태에 있음 -
를 포함하는 방법. - 제6항에 있어서,
적어도 하나의 개별적으로 식별된 프리 물리적 페이지를 클리닝(cleaning)하는 단계를 포함하고, 클리닝될 상기 적어도 하나의 개별적으로 식별된 프리 물리적 페이지는 제로로 설정된 적어도 하나의 저장된 비트를 포함하는 방법. - 제7항에 있어서,
상기 비-휘발성 메모리를 액세스하기 위한 인터페이스가 임의의 주어진 시간에 실질적으로 유휴 상태인지를 결정하기 위해 상기 인터페이스를 모니터링하는 단계;
요청자로부터 쓰기 요청을 수신하는 단계;
상기 비-휘발성 메모리를 액세스하기 위한 상기 인터페이스가 실질적으로 유휴 상태일 때 클리닝되어 있지 않은 상기 개별적으로 식별된 프리 물리적 페이지들 중 적어도 하나를 제공하는 단계; 및
상기 비-휘발성 메모리를 액세스하기 위한 상기 인터페이스가 실질적으로 유휴 상태가 아닐 때 클리닝되어 있는 상기 개별적으로 식별된 프리 물리적 페이지들 중 적어도 하나를 제공하는 단계
를 포함하는 방법. - 삭제
- 제1항에 있어서,
상기 메모리로서 사용하기 위해 비-휘발성 메모리의 제1 양을 지정하는 단계는, 상기 컴퓨팅 시스템을 위한 시스템 메모리의 적어도 일부로서 기능하도록 상기 비-휘발성 메모리의 상기 제1 양을 구성하는 단계를 포함하고;
상기 스토리지로서 사용하기 위해 비-휘발성 메모리의 제2 양을 지정하는 단계는, 상기 컴퓨팅 시스템을 위한 대용량 스토리지로서 기능하도록 상기 비-휘발성 메모리의 상기 제1 양을 구성하는 단계를 포함하는 방법. - 디바이스로서,
하드웨어 제어 로직
을 포함하고,
상기 하드웨어 제어 로직은,
컴퓨팅 시스템을 위한 메모리로서 사용하기 위해 비-휘발성 메모리의 제1 양을 지정하고;
상기 컴퓨팅 시스템을 위한 스토리지로서 사용하기 위해 상기 비-휘발성 메모리의 제2 양을 지정하고;
상기 제1 양에 대한 메모리 재맵핑 테이블을 생성하고;
상기 제2 양에 대한 스토리지 재맵핑 테이블을 생성하고;
스토리지로서 사용하기 위해 상기 제1 양의 일부의 제1 재지정 또는 메모리로서 사용하기 위해 상기 제2 양의 일부의 제2 재지정에 응답하여 상기 메모리 및 스토리지 재맵핑 테이블들을, 상기 제1 양의 상기 일부 및 상기 제2 양의 상기 일부에 대한 포인터들을 수정함으로써, 업데이트하고,
상기 스토리지 재맵핑 테이블은 적어도 논리적 블록 어드레스를 상기 비-휘발성 메모리의 물리적 메모리 어드레스로 변환하도록 구성되는, 디바이스. - 제11항에 있어서,
상기 하드웨어 제어 로직은, 상기 메모리 재맵핑 테이블을 통해서 상기 컴퓨팅 시스템 상에서 실행되는 소프트웨어 애플리케이션을 위해 상기 비-휘발성 메모리의 적어도 하나의 물리적 메모리 어드레스로의 액세스를 제공하고, 상기 메모리 재맵핑 테이블은 적어도 가상 메모리 어드레스를 상기 비-휘발성 메모리의 물리적 메모리 어드레스로 변환하도록 구성되는 디바이스. - 삭제
- 제11항에 있어서,
상기 하드웨어 제어 로직은, 개별 페이지 상태 테이블 엔트리들에서 상기 비-휘발성 메모리의 개별 물리적 페이지들과 연관되는 비트를 적어도 갖는 페이지 상태 테이블을 생성하고, 상기 개별 페이지 상태 테이블 엔트리들은 페이지 상태 테이블 엔트리에 대응하는 상기 비-휘발성 메모리의 물리적 페이지가 메모리 또는 스토리지로서 사용되기 위해 지정되는지를 나타내는 디바이스. - 제11항에 있어서,
기록 버퍼 로직을 포함하고, 상기 기록 버퍼 로직은,
상기 비-휘발성 메모리의 복수의 물리적 페이지들의 개별 물리적 페이지들에 대해, 상기 비-휘발성 메모리의 각 물리적 페이지들이 쓰여질 수 있는 프리 상태인지를 결정하고 - 상기 비-휘발성 메모리의 각 물리적 페이지는 상기 각 물리적 페이지가 유효한 데이터를 유지하지 않을 때에 쓰여질 수 있는 프리 상태에 있음 -;
상기 비-휘발성 메모리의 개별적으로 식별된 프리 물리적 페이지들에 대해, 상기 개별적으로 식별된 프리 물리적 페이지들이 클린 상태인지를 결정하고 - 상기 비-휘발성 메모리의 프리 물리적 페이지는 상기 프리 물리적 페이지 내의 모든 저장된 비트들이 1로 설정된 때에 클린 상태에 있음 -;
적어도 하나의 개별적으로 식별된 프리 물리적 페이지를 클리닝하고,
클리닝될 상기 적어도 하나의 개별적으로 식별된 프리 물리적 페이지는 제로로 설정된 적어도 하나의 저장된 비트를 포함하는 디바이스. - 제11항에 있어서,
상기 메모리로서 사용하기 위해 비-휘발성 메모리의 제1 양을 지정하는 것은, 상기 컴퓨팅 시스템을 위한 시스템 메모리의 적어도 일부로서 기능하도록 상기 비-휘발성 메모리의 상기 제1 양을 구성하는 것을 포함하고;
상기 스토리지로서 사용하기 위해 비-휘발성 메모리의 제2 양을 지정하는 것은, 상기 컴퓨팅 시스템을 위한 대용량 스토리지로서 기능하도록 상기 비-휘발성 메모리의 상기 제1 양을 구성하는 것을 포함하는 디바이스. - 삭제
- 시스템으로서,
비-휘발성 메모리;
휘발성 메모리; 및
하드웨어 제어 로직
을 포함하고,
상기 하드웨어 제어 로직은,
컴퓨팅 시스템을 위한 메모리로서 사용하기 위해 상기 비-휘발성 메모리의 제1 양을 지정하고;
상기 컴퓨팅 시스템을 위한 스토리지로서 사용하기 위해 상기 비-휘발성 메모리의 제2 양을 지정하고;
상기 제1 양에 대한 메모리 재맵핑 테이블을 생성하고;
상기 제2 양에 대한 스토리지 재맵핑 테이블을 생성하고;
스토리지로서 사용하기 위해 상기 제1 양의 일부의 제1 재지정 또는 메모리로서 사용하기 위해 상기 제2 양의 일부의 제2 재지정에 응답하여 상기 메모리 및 스토리지 재맵핑 테이블들을, 상기 제1 양의 상기 일부 및 상기 제2 양의 상기 일부에 대한 포인터들을 수정함으로써, 업데이트하고,
상기 스토리지 재맵핑 테이블은 적어도 논리적 블록 어드레스를 상기 비-휘발성 메모리의 물리적 메모리 어드레스로 변환하도록 구성되는, 시스템. - 제18항에 있어서,
상기 하드웨어 제어 로직은, 상기 메모리 재맵핑 테이블을 통해서 상기 컴퓨팅 시스템 상에서 실행되는 소프트웨어 애플리케이션을 위해 상기 비-휘발성 메모리의 적어도 하나의 물리적 메모리 어드레스로의 액세스를 제공하고, 상기 메모리 재맵핑 테이블은 적어도 가상 메모리 어드레스를 상기 비-휘발성 메모리의 물리적 메모리 어드레스로 변환하도록 구성되는 시스템. - 제18항에 있어서,
상기 하드웨어 제어 로직은, 상기 메모리 및 스토리지 재맵핑 테이블들이 상기 휘발성 메모리에 저장되게 하고, 상기 휘발성 메모리는 DRAM(dynamic random access memory) 또는 SRAM(static random access memory)을 포함하는 시스템. - 삭제
- 제18항에 있어서,
상기 하드웨어 제어 로직은,
개별 페이지 상태 테이블 엔트리들에서 상기 비-휘발성 메모리의 개별 물리적 페이지들과 연관되는 비트를 적어도 갖는 페이지 상태 테이블을 생성하고 - 상기 개별 페이지 상태 테이블 엔트리들은 페이지 상태 테이블 엔트리에 대응하는 상기 비-휘발성 메모리의 물리적 페이지가 메모리 또는 스토리지로서 사용되기 위해 지정되는지를 나타냄 -;
상기 페이지 상태 테이블이 상기 비-휘발성 메모리에 저장되게 하는 시스템. - 제18항에 있어서,
기록 버퍼 로직을 포함하고, 상기 기록 버퍼 로직은,
상기 비-휘발성 메모리의 복수의 물리적 페이지들의 개별 물리적 페이지들에 대해, 상기 비-휘발성 메모리의 각 물리적 페이지들이 쓰여질 수 있는 프리 상태인지를 결정하고 - 상기 비-휘발성 메모리의 각 물리적 페이지는 상기 각 물리적 페이지가 유효한 데이터를 유지하지 않을 때에 쓰여질 수 있는 프리 상태에 있음 -;
상기 비-휘발성 메모리의 개별적으로 식별된 프리 물리적 페이지들에 대해, 상기 개별적으로 식별된 프리 물리적 페이지들이 클린 상태인지를 결정하고 - 상기 비-휘발성 메모리의 프리 물리적 페이지는 상기 프리 물리적 페이지 내의 모든 저장된 비트들이 1로 설정된 때에 클린 상태에 있음 -;
적어도 하나의 개별적으로 식별된 프리 물리적 페이지를 클리닝하고,
클리닝될 상기 적어도 하나의 개별적으로 식별된 프리 물리적 페이지는 제로로 설정된 적어도 하나의 저장된 비트를 포함하는 시스템. - 제18항에 있어서,
상기 휘발성 메모리는 다중-레벨 메모리를 위한 근접 메모리(near memory)로서 기능하도록 구성되고, 메모리로서 사용하기 위해 지정된 상기 비-휘발성 메모리의 상기 제1 양은 상기 다중-레벨 메모리를 위한 원격 메모리(far memory)로서 구성되는 시스템. - 제24항에 있어서,
상기 다중-레벨 메모리는 상기 컴퓨팅 시스템을 위한 시스템 메모리로서 기능하도록 구성되고;
스토리지로서 사용하기 위해 지정된 상기 비-휘발성 메모리의 상기 제2 양은 상기 컴퓨팅 시스템을 위한 대용량 스토리지로서 기능하도록 구성된 상기 비-휘발성 메모리의 상기 제2 양을 포함하는 시스템. - 삭제
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/067824 WO2013101050A1 (en) | 2011-12-29 | 2011-12-29 | Multi-level memory with direct access |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020167014711A Division KR101692417B1 (ko) | 2011-12-29 | 2011-12-29 | 다이렉트 액세스를 갖는 다중-레벨 메모리 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170003730A KR20170003730A (ko) | 2017-01-09 |
KR101767359B1 true KR101767359B1 (ko) | 2017-08-10 |
Family
ID=48698287
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020167036731A KR101767359B1 (ko) | 2011-12-29 | 2011-12-29 | 다이렉트 액세스를 갖는 다중-레벨 메모리 |
KR1020167014711A KR101692417B1 (ko) | 2011-12-29 | 2011-12-29 | 다이렉트 액세스를 갖는 다중-레벨 메모리 |
KR1020147016262A KR101628929B1 (ko) | 2011-12-29 | 2011-12-29 | 다이렉트 액세스를 갖는 다중-레벨 메모리 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020167014711A KR101692417B1 (ko) | 2011-12-29 | 2011-12-29 | 다이렉트 액세스를 갖는 다중-레벨 메모리 |
KR1020147016262A KR101628929B1 (ko) | 2011-12-29 | 2011-12-29 | 다이렉트 액세스를 갖는 다중-레벨 메모리 |
Country Status (7)
Country | Link |
---|---|
US (5) | US9190124B2 (ko) |
KR (3) | KR101767359B1 (ko) |
CN (2) | CN104011690B (ko) |
DE (1) | DE112011106078B4 (ko) |
GB (1) | GB2510763B (ko) |
TW (1) | TWI585584B (ko) |
WO (1) | WO2013101050A1 (ko) |
Families Citing this family (60)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9703706B2 (en) | 2011-02-28 | 2017-07-11 | Oracle International Corporation | Universal cache management system |
US9958926B2 (en) * | 2011-12-13 | 2018-05-01 | Intel Corporation | Method and system for providing instant responses to sleep state transitions with non-volatile random access memory |
CN104011690B (zh) | 2011-12-29 | 2016-11-09 | 英特尔公司 | 具有直接存取的多级存储器 |
CN103514110B (zh) * | 2012-06-20 | 2016-08-24 | 华为技术有限公司 | 非易失性存储设备的缓存管理方法及装置 |
US10303618B2 (en) * | 2012-09-25 | 2019-05-28 | International Business Machines Corporation | Power savings via dynamic page type selection |
WO2014092698A1 (en) * | 2012-12-11 | 2014-06-19 | Hewlett-Packard Development Company | Application server to nvram path |
WO2014098839A1 (en) * | 2012-12-19 | 2014-06-26 | Hewlett-Packard Development Company | Nvram path selection |
US9280497B2 (en) | 2012-12-21 | 2016-03-08 | Dell Products Lp | Systems and methods for support of non-volatile memory on a DDR memory channel |
KR20140123203A (ko) * | 2013-04-11 | 2014-10-22 | 삼성전자주식회사 | 메모리 시스템 |
US9678689B2 (en) | 2013-05-29 | 2017-06-13 | Microsoft Technology Licensing, Llc | Storage systems and aliased memory |
US9552370B1 (en) * | 2013-06-27 | 2017-01-24 | EMC IP Holding Company LLC | Signaling impending out of storage condition from a virtual tape drive |
US9250999B1 (en) * | 2013-11-19 | 2016-02-02 | Google Inc. | Non-volatile random access memory in computer primary memory |
US9292380B2 (en) * | 2014-04-06 | 2016-03-22 | Freescale Semiconductor,Inc. | Memory access scheme for system on chip |
JP6265041B2 (ja) * | 2014-05-15 | 2018-01-24 | 富士通株式会社 | コンパイルプログラム、コンパイル方法およびコンパイル装置 |
WO2016013024A1 (en) * | 2014-07-25 | 2016-01-28 | StorNetware Systems Pvt. Ltd. | Unified converged network, storage and computer system |
US9892079B2 (en) * | 2014-07-25 | 2018-02-13 | Rajiv Ganth | Unified converged network, storage and compute system |
US20160224252A1 (en) * | 2015-01-30 | 2016-08-04 | Intel Corporation | Hybrid memory architecture |
US9652157B2 (en) | 2015-03-19 | 2017-05-16 | International Business Machines Corporation | Accelerated non-volatile memory recirculation processing |
US9582430B2 (en) * | 2015-03-27 | 2017-02-28 | Intel Corporation | Asymmetric set combined cache |
US10157008B2 (en) * | 2015-04-29 | 2018-12-18 | Qualcomm Incorporated | Systems and methods for optimizing memory power consumption in a heterogeneous system memory |
US10025747B2 (en) * | 2015-05-07 | 2018-07-17 | Samsung Electronics Co., Ltd. | I/O channel scrambling/ECC disassociated communication protocol |
US11829349B2 (en) | 2015-05-11 | 2023-11-28 | Oracle International Corporation | Direct-connect functionality in a distributed database grid |
US10459847B1 (en) | 2015-07-01 | 2019-10-29 | Google Llc | Non-volatile memory device application programming interface |
US9971550B2 (en) | 2015-11-12 | 2018-05-15 | International Business Machines Corporation | Zero copy support by the virtual memory manager |
US9928168B2 (en) * | 2016-01-11 | 2018-03-27 | Qualcomm Incorporated | Non-volatile random access system memory with DRAM program caching |
US10146704B2 (en) * | 2016-02-16 | 2018-12-04 | Dell Products L.P. | Volatile/non-volatile memory device access provisioning system |
US20170255565A1 (en) * | 2016-03-02 | 2017-09-07 | Intel Corporation | Method and apparatus for providing a contiguously addressable memory region by remapping an address space |
US10175903B2 (en) | 2016-03-31 | 2019-01-08 | Intel Corporation | N plane to 2N plane interface in a solid state drive (SSD) architecture |
US9965017B2 (en) | 2016-04-12 | 2018-05-08 | International Business Machines Corporation | System and method for conserving energy in non-volatile dual inline memory modules |
US20170371785A1 (en) * | 2016-06-28 | 2017-12-28 | Intel Corporation | Techniques for Write Commands to a Storage Device |
US10162522B1 (en) * | 2016-09-30 | 2018-12-25 | Cadence Design Systems, Inc. | Architecture of single channel memory controller to support high bandwidth memory of pseudo channel mode or legacy mode |
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 |
KR20180055297A (ko) | 2016-11-16 | 2018-05-25 | 삼성전자주식회사 | 언맵 리드를 수행하는 메모리 장치 및 메모리 시스템 |
TWI596541B (zh) * | 2016-11-30 | 2017-08-21 | 財團法人工業技術研究院 | 資料存取系統、資料存取裝置及資料存取方法 |
TWI643067B (zh) * | 2017-04-14 | 2018-12-01 | 國立臺灣科技大學 | 三維非及閘快閃記憶體及其記憶體管理方法 |
US10963780B2 (en) * | 2017-08-24 | 2021-03-30 | Google Llc | Yield improvements for three-dimensionally stacked neural network accelerators |
US11029863B2 (en) * | 2017-08-31 | 2021-06-08 | Vmware, Inc. | Using non-volatile random access memory as volatile random access memory |
US10719446B2 (en) * | 2017-08-31 | 2020-07-21 | Oracle International Corporation | Directly mapped buffer cache on non-volatile memory |
US11327887B2 (en) | 2017-09-14 | 2022-05-10 | Oracle International Corporation | Server-side extension of client-side caches |
US10802766B2 (en) | 2017-09-29 | 2020-10-13 | Oracle International Corporation | Database with NVDIMM as persistent storage |
US10552077B2 (en) * | 2017-09-29 | 2020-02-04 | Apple Inc. | Techniques for managing partitions on a storage device |
KR102631380B1 (ko) | 2018-05-17 | 2024-02-01 | 에스케이하이닉스 주식회사 | 데이터 연산을 수행할 수 있는 다양한 메모리 장치를 포함하는 반도체 시스템 |
US10725690B2 (en) * | 2018-05-18 | 2020-07-28 | Intel Corporation | Non-volatile memory cloning with hardware copy-on-write support |
US10698637B2 (en) | 2018-07-03 | 2020-06-30 | Oracle International Corporation | Stale block resynchronization in NVM based systems |
US10831666B2 (en) | 2018-10-05 | 2020-11-10 | Oracle International Corporation | Secondary storage server caching |
US11334445B2 (en) | 2018-10-19 | 2022-05-17 | Oracle International Corporation | Using non-volatile memory to improve the availability of an in-memory database |
TWI705372B (zh) * | 2018-12-26 | 2020-09-21 | 旺宏電子股份有限公司 | 快閃記憶體裝置及其控制方法 |
CN111913647B (zh) * | 2019-05-08 | 2022-10-11 | 华为技术有限公司 | 一种存储设备的磨损均衡方法、装置及相关设备 |
US11281578B2 (en) | 2019-08-20 | 2022-03-22 | Micron Technology, Inc. | Garbage collection in a memory sub-system during a low battery state |
US11726869B2 (en) | 2019-08-20 | 2023-08-15 | Micron Technology, Inc. | Performing error control operation on memory component for garbage collection |
US11281392B2 (en) | 2019-08-28 | 2022-03-22 | Micron Technology, Inc. | Garbage collection in a memory component using an adjusted parameter |
US11036412B2 (en) | 2019-09-27 | 2021-06-15 | Intel Corporation | Dynamically changing between latency-focused read operation and bandwidth-focused read operation |
CN114503086A (zh) * | 2019-10-09 | 2022-05-13 | 美光科技公司 | 自适应损耗平衡方法及算法 |
CN111104062B (zh) * | 2019-11-22 | 2023-05-02 | 中科寒武纪科技股份有限公司 | 存储管理方法、装置和存储介质 |
US11474941B2 (en) | 2020-03-09 | 2022-10-18 | International Business Machines Corporation | Using multi-tiered cache to satisfy input/output requests |
CN112380150B (zh) * | 2020-11-12 | 2022-09-27 | 上海壁仞智能科技有限公司 | 计算装置以及用于加载或更新数据的方法 |
US11922055B2 (en) | 2021-04-28 | 2024-03-05 | Seagate Technology Llc | Stack register having different ferroelectric memory element constructions |
US11556259B1 (en) * | 2021-09-02 | 2023-01-17 | Micron Technology, Inc. | Emulating memory sub-systems that have different performance characteristics |
KR20230050012A (ko) * | 2021-10-07 | 2023-04-14 | 에스케이하이닉스 주식회사 | 스토리지 장치 및 그 동작 방법 |
KR102579320B1 (ko) * | 2023-04-19 | 2023-09-18 | 메티스엑스 주식회사 | 캐시 메모리 장치 및 이를 이용하는 캐시 스케줄링 구현 방법 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002531988A (ja) | 1998-11-28 | 2002-09-24 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 人工衛星ナビゲーションシステムのds−cdma信号用受信機 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3197815B2 (ja) * | 1996-04-15 | 2001-08-13 | インターナショナル・ビジネス・マシーンズ・コーポレ−ション | 半導体メモリ装置及びその制御方法 |
DE19928057B4 (de) * | 1999-06-15 | 2005-11-10 | Francotyp-Postalia Ag & Co. Kg | Sicherheitsmodul und Verfahren zur Sicherung der Postregister vor Manipulation |
KR100582357B1 (ko) * | 2003-12-29 | 2006-05-22 | 주식회사 하이닉스반도체 | 로우디코딩을 효율적으로 할 수 있는 태그블럭을 구비하는반도체 메모리 장치 |
CN101065807A (zh) * | 2004-07-28 | 2007-10-31 | 柰米闪芯积体电路有限公司 | 整合传统式静态随机存储器与闪存单元的新式非易失性静态随机存储器内存单元结构 |
US7279380B2 (en) | 2004-11-10 | 2007-10-09 | Macronix International Co., Ltd. | Method of forming a chalcogenide memory cell having an ultrasmall cross-sectional area and a chalcogenide memory cell produced by the method |
US8135936B2 (en) * | 2009-12-23 | 2012-03-13 | Intel Corporation | Adaptive address mapping with dynamic runtime memory mapping selection |
KR20080018704A (ko) * | 2006-08-25 | 2008-02-28 | 삼성전자주식회사 | 교반장치, 이 교반장치를 구비하는 현상장치 및화상형성장치 |
US7870363B2 (en) * | 2007-12-28 | 2011-01-11 | Intel Corporation | Methods and arrangements to remap non-volatile storage |
KR20100013824A (ko) * | 2008-08-01 | 2010-02-10 | 주식회사 하이닉스반도체 | 고속 동작하는 반도체 스토리지 시스템 |
CN101458613B (zh) * | 2008-12-31 | 2011-04-20 | 成都市华为赛门铁克科技有限公司 | 一种混合分级阵列的实现方法、混合分级阵列和存储系统 |
US8195891B2 (en) * | 2009-03-30 | 2012-06-05 | Intel Corporation | Techniques to perform power fail-safe caching without atomic metadata |
US7898859B2 (en) * | 2009-06-15 | 2011-03-01 | Micron Technology, Inc. | Use of emerging non-volatile memory elements with flash memory |
US8688894B2 (en) * | 2009-09-03 | 2014-04-01 | Pioneer Chip Technology Ltd. | Page based management of flash storage |
CN102135891B (zh) * | 2010-01-21 | 2013-06-26 | 杭州华三通信技术有限公司 | 可实现引导启动的系统及引导启动控制装置和方法 |
US9015268B2 (en) | 2010-04-02 | 2015-04-21 | Intel Corporation | Remote direct storage access |
US20130024602A1 (en) * | 2011-07-18 | 2013-01-24 | Dell Products L.P. | Universal Storage for Information Handling Systems |
CN104011690B (zh) | 2011-12-29 | 2016-11-09 | 英特尔公司 | 具有直接存取的多级存储器 |
US8743820B2 (en) | 2012-05-30 | 2014-06-03 | Intel Corporation | PUCCH resource allocation with enhanced PDCCH |
-
2011
- 2011-12-29 CN CN201180075995.2A patent/CN104011690B/zh active Active
- 2011-12-29 CN CN201610912901.7A patent/CN107092561B/zh active Active
- 2011-12-29 US US13/993,695 patent/US9190124B2/en active Active
- 2011-12-29 WO PCT/US2011/067824 patent/WO2013101050A1/en active Application Filing
- 2011-12-29 GB GB1408844.7A patent/GB2510763B/en active Active
- 2011-12-29 KR KR1020167036731A patent/KR101767359B1/ko active IP Right Grant
- 2011-12-29 KR KR1020167014711A patent/KR101692417B1/ko active Application Filing
- 2011-12-29 DE DE112011106078.5T patent/DE112011106078B4/de active Active
- 2011-12-29 KR KR1020147016262A patent/KR101628929B1/ko active IP Right Grant
-
2012
- 2012-12-25 TW TW101149809A patent/TWI585584B/zh not_active IP Right Cessation
-
2015
- 2015-10-08 US US14/879,004 patent/US9430151B2/en active Active
-
2016
- 2016-07-19 US US15/214,005 patent/US9703502B2/en active Active
-
2017
- 2017-06-30 US US15/640,373 patent/US10241710B2/en active Active
-
2019
- 2019-03-25 US US16/363,576 patent/US10817201B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002531988A (ja) | 1998-11-28 | 2002-09-24 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 人工衛星ナビゲーションシステムのds−cdma信号用受信機 |
Also Published As
Publication number | Publication date |
---|---|
KR101692417B1 (ko) | 2017-01-05 |
CN107092561B (zh) | 2021-03-12 |
CN104011690A (zh) | 2014-08-27 |
US20170075616A1 (en) | 2017-03-16 |
US10241710B2 (en) | 2019-03-26 |
US20130339572A1 (en) | 2013-12-19 |
DE112011106078T5 (de) | 2014-12-04 |
TWI585584B (zh) | 2017-06-01 |
WO2013101050A1 (en) | 2013-07-04 |
US20190286356A1 (en) | 2019-09-19 |
US10817201B2 (en) | 2020-10-27 |
CN107092561A (zh) | 2017-08-25 |
US20170337009A1 (en) | 2017-11-23 |
KR101628929B1 (ko) | 2016-06-21 |
GB2510763B (en) | 2020-05-20 |
DE112011106078B4 (de) | 2021-01-28 |
US20160110106A1 (en) | 2016-04-21 |
GB2510763A (en) | 2014-08-13 |
KR20170003730A (ko) | 2017-01-09 |
TW201342053A (zh) | 2013-10-16 |
GB201408844D0 (en) | 2014-07-02 |
US9703502B2 (en) | 2017-07-11 |
KR20140091605A (ko) | 2014-07-21 |
KR20160068989A (ko) | 2016-06-15 |
US9430151B2 (en) | 2016-08-30 |
CN104011690B (zh) | 2016-11-09 |
US9190124B2 (en) | 2015-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10817201B2 (en) | Multi-level memory with direct access | |
US10719443B2 (en) | Apparatus and method for implementing a multi-level memory hierarchy | |
US11132298B2 (en) | Apparatus and method for implementing a multi-level memory hierarchy having different operating modes | |
TWI578156B (zh) | 非依電性隨機存取記憶磁碟 | |
KR101636634B1 (ko) | 프로세서로부터 메모리 서브시스템으로 데이터를 지능적으로 플러싱하기 위한 시스템 및 방법 | |
US9317429B2 (en) | Apparatus and method for implementing a multi-level memory hierarchy over common memory channels | |
KR101572403B1 (ko) | 메모리 채널 셧다운에 의한 전력 절약 | |
US20170109277A1 (en) | Memory system | |
US20170109072A1 (en) | Memory system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) | ||
GRNT | Written decision to grant |