KR20170087044A - Os 및 애플리케이션 투명 메모리 압축 기술 - Google Patents

Os 및 애플리케이션 투명 메모리 압축 기술 Download PDF

Info

Publication number
KR20170087044A
KR20170087044A KR1020170008817A KR20170008817A KR20170087044A KR 20170087044 A KR20170087044 A KR 20170087044A KR 1020170008817 A KR1020170008817 A KR 1020170008817A KR 20170008817 A KR20170008817 A KR 20170008817A KR 20170087044 A KR20170087044 A KR 20170087044A
Authority
KR
South Korea
Prior art keywords
memory
page
speed memory
sprkd
data
Prior art date
Application number
KR1020170008817A
Other languages
English (en)
Inventor
씨 마 케니스
서동욱
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US15/370,858 external-priority patent/US20170206033A1/en
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Publication of KR20170087044A publication Critical patent/KR20170087044A/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/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • 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/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/068Hybrid storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • 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)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

메모리 시스템들은 고속 메모리 부 및 저속 메모리 부를 포함하는 메모리 스토리지; 운영 체제에 의해 생성된 메모리 관리 명령을 인터셉트하는 것, 운영 체제의 메모리 관리 명령을 실행하기 전에 고속 메모리 부로부터 저속 메모리 부에 기록되는 데이터를 압축하는 것과 운영 체제의 메모리 관리 명령을 실행하기 전에 저속 메모리 부로부터 고속 메모리 부에 기록되는 데이터를 압축 해제하는 것 중 적어도 하나, 및 저속 메모리 부에 기록되는 압축된 데이터 또는 고속 메모리 부에 기록되는 압축 해제된 데이터 중 어느 하나를 전송하는 것에 적합한 소프트웨어 페이지 리맵핑 커널 드라이버(SPRKD); 및 데이터의 압축 또는 압축 해제가 운영 체제에 대해 투명하게 수행되도록 SPRKD에 의해 전송한 후에 메모리 관리 명령을 실행하는 것에 적합한 제어기를 포함할 수 있다.

Description

OS 및 애플리케이션 투명 메모리 압축 기술{TEHCNIQUES WITH OS- AND APPLICATION- TRANSPARENT MEMORY COMPRESSION}
본 개시물(disclosure)의 예시적인 실시예들은 메모리 시스템 및 그 동작 방법에 관한 것이다.
컴퓨터 환경 패러다임은 언제 어디서나 이용될 수 있는 유비쿼터스 컴퓨팅(ubiquitous computing) 시스템들로 옮겨 갔다. 이러한 사실로 인해, 이동 전화들, 디지털 카메라들 및 노트북 컴퓨터들과 같은 휴대용 전자 디바이스들의 이용이 급속히 증가하였다. 이들 휴대용 전자 디바이스들은 일반적으로 메모리 디바이스들을 가진 메모리 시스템, 즉, 데이터 저장 디바이스를 이용한다. 데이터 저장 디바이스는 휴대용 전자 디바이스들의 주 메모리 디바이스 또는 보조 메모리 디바이스로서 이용된다.
메모리 디바이스들을 이용한 데이터 저장 디바이스들은 움직이는 부품들이 없기 때문에 우수한 안정성, 내구성, 높은 정보 접속 속도 및 낮은 전력을 제공한다. 이러한 이점들을 갖는 데이터 저장 디바이스들의 예들은 범용 직렬 버스(universal serial bus; USB) 메모리 디바이스들, 다양한 인터페이스들을 갖는 메모리 카드들, 및 솔리드 스테이트 드라이브(solid state drive; SSD)들을 포함한다.
고속 메모리는 컴퓨팅 시스템에서 중요한 자원이며, 증가된 메모리 용량은 수요가 많다. 메모리 압축은 메모리 용량을 증가시키는데 이용되며, 메모리 시스템들, 방법들, 디바이스들 및 프로세스들에서 메모리 압축을 향상시키기 위한 필요성이 존재한다.
본 발명의 양태들은 메모리 시스템들을 포함한다. 메모리 시스템들은 고속 메모리 부 및 저속 메모리 부를 포함하는 메모리 스토리지; 운영 체제에 의해 생성된 메모리 관리 명령을 인터셉트(intercept)하는 것, 운영 체제의 메모리 관리 명령을 실행하기 전에 고속 메모리 부로부터 저속 메모리 부에 기록되는 데이터를 압축하는 것과 운영 체제의 메모리 관리 명령을 실행하기 전에 저속 메모리 부로부터 고속 메모리 부에 기록되는 데이터를 압축 해제하는 것 중 적어도 하나, 및 저속 메모리 부에 기록되는 압축된 데이터 또는 고속 메모리 부에 기록되는 압축 해제된 데이터 중 어느 하나를 전송하는 것에 적합한 소프트웨어 페이지 리맵핑 커널 드라이버(software page remapping kernel driver; SPRKD); 및 데이터의 압축 또는 압축 해제가 운영 체제에 대해 투명하게 수행되도록 SPRKD에 의해 전송한 후에 메모리 관리 명령을 실행하는 것에 적합한 제어기를 포함할 수 있다.
본 발명의 추가의 양태들은 방법들을 포함한다. 방법들은, 소프트웨어 페이지 리맵핑 커널 드라이버(SPRKD)를 이용하여, 운영 체제에 의해 생성된 메모리 관리 명령을 인터셉트하는 단계, SPRKD를 이용하여, 운영 체제의 메모리 관리 명령을 실행하기 전에 메모리 스토리지의 고속 메모리 부로부터 메모리 스토리지의 저속 메모리 부에 기록되는 데이터를 압축하는 단계와 SPRKD를 이용하여, 운영 체제의 메모리 관리 명령을 실행하기 전에 저속 메모리 부로부터 고속 메모리 부에 기록되는 데이터를 압축 해제하는 단계 중 적어도 하나, 및 SPRKD를 이용하여, 저속 메모리 부에 기록되는 압축된 데이터 또는 고속 메모리 부에 기록되는 압축 해제된 데이터 중 어느 하나를 전송하는 단계, 및 제어기를 이용하여, 데이터의 압축 또는 압축 해제가 운영 체제에 대해 투명하게 수행되도록 SPRKD에 의해 전송한 후에 메모리 관리 명령을 실행하는 단계를 포함할 수 있다.
본 발명의 부가적인 양태들은 메모리 디바이스들을 포함한다. 메모리 디바이스들은, 고속 메모리 부 및 저속 메모리 부를 포함하는 메모리 스토리지; 운영 체제에 의해 생성된 메모리 관리 명령을 인터셉트하고, 운영 체제의 메모리 관리 명령을 실행하기 전에 고속 메모리 부로부터 저속 메모리 부에 기록되는 데이터를 압축하는 것과 운영 체제의 메모리 관리 명령을 실행하기 전에 저속 메모리 부로부터 고속 메모리 부에 기록되는 데이터를 압축 해제하는 것 중 적어도 하나를 실행하며, 저속 메모리 부에 기록되는 압축된 데이터 또는 고속 메모리 부에 기록되는 압축 해제된 데이터 중 어느 하나를 전송하도록 구성된 소프트웨어 페이지 리맵핑 커널 드라이버(SPRKD); 및 데이터의 압축 또는 압축 해제가 운영 체제에 대해 투명하게 수행되도록 SPRKD에 의해 전송한 후에 메모리 관리 명령을 실행하도록 구성된 제어기를 포함할 수 있다.
도 1은 본 발명의 일 실시예에 따른 메모리 시스템을 도시한 개략적인 블록도이다.
도 2는 본 발명의 일 실시예에 따른 메모리 시스템을 도시한 블록도이다.
도 3은 본 발명의 일 실시예에 따른 메모리 디바이스의 메모리 블록을 도시한 회로도이다.
도 4는 본 발명의 양태들에 따라 압축 및 압축 해제를 위한 하이브리드 메모리를 갖는 예시적인 시스템의 다이어그램이다.
도 5는 본 발명의 양태들에 따라 압축 및 압축 해제를 위한 하이브리드 메모리를 갖는 예시적인 시스템의 다이어그램이다.
도 6은 본 발명의 양태들에 따라 압축 및 압축 해제를 위한 하이브리드 메모리를 갖는 예시적인 시스템의 다이어그램이다.
도 7은 본 발명의 양태들에 따라 페이지 리맵핑을 위한 예시적인 시스템의 다이어그램이다.
도 8은 본 발명의 양태들에 따라 페이지 리맵핑 및 압축/압축 해제를 위한 CPU 시스템/프로세스의 다이어그램이다.
도 9는 본 발명의 양태들에 따라 페이지 리맵핑 및 압축/압축 해제를 위한 방법에서의 단계들의 흐름도이다.
이하, 첨부된 도면들을 참조로 다양한 실시예들이 더욱 상세히 설명될 것이다. 그러나, 본 발명은 상이한 다른 형태들로 구현될 수 있고, 본 명세서에서 설명된 실시예들로 제한되는 것으로 해석되지 않아야 한다. 오히려, 이들 실시예들은 본 개시물이 철저히 완전하고, 본 발명의 범위를 본 기술 분야의 통상의 기술자들에게 충분히 전달하도록 제공된다. 본 개시물의 전체에 걸쳐, 동일한 참조 번호들은 본 발명의 다양한 도면들 및 실시예들의 전체에 걸쳐 동일한 부분들을 지칭한다.
본 발명은 다양한 방식들로 구현될 수 있고, 프로세스; 장치; 시스템; 물질의 구성(composition of matter); 컴퓨터 판독 가능 저장 매체상에서 구현된 컴퓨터 프로그램 제품; 및/또는 프로세서에 결합된 메모리 상에 저장되고/되거나 메모리에 의해 제공된 명령어들을 실행하는데 적합한 프로세서와 같은 프로세서를 포함한다. 본 명세서에서, 이들 구현들, 또는 본 발명이 취할 수 있는 임의의 다른 형태는 기술들로서 지칭될 수 있다. 일반적으로, 개시된 프로세스들의 단계들의 순서는 본 발명의 범위 내에서 변경될 수 있다. 달리 언급되지 않으면, 태스크(task)를 수행하는데 적합하는 것으로 설명된 프로세서 또는 메모리와 같은 구성 요소는 주어진 시간에 태스크를 수행하는데 일시적으로 적합한 일반적인 구성 요소, 또는 태스크를 수행하기 위해 제조되는 특정 구성 요소로서 구현될 수 있다. 본 명세서에서 이용된 바와 같이, 용어 '프로세서'는 하나 이상의 디바이스들, 회로들, 및/또는 컴퓨터 프로그램 명령어들과 같은 데이터를 처리하는데 적합한 처리 코어들을 지칭한다.
본 발명의 하나 이상의 실시예들의 상세한 설명은 본 발명의 원리들을 예시하는 첨부된 도면과 함께 아래에 제공된다. 본 발명은 이러한 실시예들과 관련하여 설명되지만, 본 발명은 임의의 실시예로 제한되지 않는다. 본 발명의 범위는 청구 범위에 의해서만 제한되고, 본 발명은 많은 대안들, 수정들 및 등가들을 포함한다. 많은 특정 상세 사항들은 본 발명의 철저한 이해를 제공하기 위해 다음의 설명에서 제시된다. 이들 상세 사항들은 예를 위해 제공되고, 본 발명은 이들 특정 상세 사항들의 일부 또는 전부가 없이 청구 범위에 따라 실시될 수 있다. 명확성을 위해, 본 발명에 관련된 기술 분야에서 알려진 기술적 자료는 본 발명이 불필요하게 모호하게 되지 않도록 상세히 설명되지 않았다.
도 1은 본 발명의 일 실시예에 따른 메모리 시스템(10)을 도시한 개략적인 블록도이다.
도 1을 참조하면, 메모리 시스템(10)은 메모리 제어기(100) 및 반도체 메모리 디바이스(200)를 포함할 수 있다.
메모리 제어기(100)는 반도체 메모리 디바이스(200)의 전체 동작들을 제어할 수 있다.
반도체 메모리 디바이스(200)는 메모리 제어기(100)의 제어 하에 하나 이상의 소거, 프로그램 및 판독 동작들을 수행할 수 있다. 반도체 메모리 디바이스(200)는 입출력 라인들을 통해 명령(CMD), 어드레스(ADDR) 및 데이터(DATA)를 수신할 수 있다. 반도체 메모리 디바이스(200)는 전력 라인을 통해 전력(PWR)을 수신하고 제어 라인을 통해 제어 신호(CTRL)를 수신할 수 있다. 제어 신호는 CLE(command latch enable) 신호, ALE(address latch enable) 신호, CE(chip enable) 신호, WE(write enable) 신호, RE(read enable) 신호 등을 포함할 수 있다.
메모리 제어기(100) 및 반도체 메모리 디바이스(200)는 단일 반도체 디바이스에 통합될 수 있다. 예를 들면, 메모리 제어기(100) 및 반도체 메모리 디바이스(200)는 솔리드 스테이트 드라이브(solid state drive; SSD)와 같은 단일 반도체 디바이스에 통합될 수 있다. 솔리드 스테이트 드라이브는 데이터를 저장하기 위한 저장 디바이스를 포함할 수 있다. 반도체 메모리 시스템(10)이 SSD에서 이용될 때, 메모리 시스템(10)에 결합된(도시되지 않은) 호스트의 동작 속도는 현저하게 향상될 수 있다.
메모리 제어기(100) 및 반도체 메모리 디바이스(200)는 메모리 카드와 같은 단일 반도체 디바이스에 통합될 수 있다. 예를 들면, 메모리 제어기(100) 및 반도체 메모리 디바이스(200)는 PCMCIA(personal computer memory card international 5 association)의 PC 카드와 같은 메모리 카드, 콤팩트 플래시(compact flash; CF) 카드, 스마트 미디어(smart media; SM) 카드, 메모리 스틱, 멀티미디어 카드(multimedia card; MMC), 축소형 멀티미디어 카드(reduced-size multimedia card; RS-MMC), MMC의 마이크로 크기 버전(micro-size version of MMC; MMCmicro), 보안 디지털(secure digital; SD) 카드, 미니 보안 디지털(mini secure digital; miniSD) 카드, 마이크로 보안 디지털(micro secure digital; microSD) 카드, SDHC(secure digital high capacity) 및 UFS(universal flash storage)를 구성하도록 단일 반도체 디바이스에 통합될 수 있다.
다른 예의 경우, 메모리 시스템(10)은, 컴퓨터, UMPC(ultra-mobile PC), 워크스테이션, 넷북 컴퓨터, PDA(personal digital assistant), 휴대용 컴퓨터, 웹 태블릿 PC, 무선 전화, 휴대 전화, 스마트 폰, 전자 책 리더기, PMP(portable multimedia player), 휴대용 게임 디바이스, 내비게이션 디바이스, 블랙 박스, 디지털 카메라, 디지털 멀티미디어 방송(digital multimedia broadcasting; DMB) 플레이어, 3차원 텔레비전, 스마트 텔레비전, 디지털 오디오 레코더, 디지털 오디오 플레이어, 디지털 화상(picture) 레코더, 디지털 화상 플레이어, 디지털 비디오 레코더, 디지털 비디오 플레이어, 데이터 센터의 저장 디바이스, 무선 환경에서 정보를 수신하고 전송할 수 있는 디바이스, 홈 네트워크의 전자 디바이스들 중 하나, 컴퓨터 네트워크의 전자 디바이스들 중 하나, 텔레매틱스 네트워크의 전자 디바이스들 중 하나, 무선 주파수 식별(radio-frequency identification; RFID) 디바이스 또는 컴퓨팅 시스템의 요소 디바이스들과 같은 전자 디바이스를 포함하는 다양한 요소들 중 하나로서 제공될 수 있다.
도 2는 본 발명의 일 실시예에 따른 메모리 시스템을 도시하는 상세한 블록도이다. 예를 들어, 도 2의 메모리 시스템은 도 1에 도시된 메모리 시스템(10)을 나타낼 수 있다.
도 2를 참조하면, 메모리 시스템(10)은 메모리 제어기(100) 및 반도체 메모리 디바이스(200)를 도시한다. 메모리 시스템(10)은 호스트 디바이스로부터의 요청에 응답하여 동작할 수 있고, 특히, 호스트 디바이스에 의해 액세스되는 데이터를 저장할 수 있다.
호스트 디바이스는 다양한 종류들의 전자 디바이스들 중 어느 하나로 구현될 수 있다. 일부 실시예들에서, 호스트 디바이스는 데스크톱 컴퓨터, 워크스테이션, 3차원(3D) 텔레비전, 스마트 텔레비전, 디지털 오디오 레코더, 디지털 오디오 플레이어, 디지털 화상 레코더, 디지털 화상 플레이어, 디지털 비디오 레코더 및 디지털 비디오 플레이어와 같은 전자 디바이스를 포함할 수 있다. 일부 실시예들에서, 호스트 디바이스는 휴대 전화, 스마트 폰, 전자 책, MP3 플레이어, PMP(Portable Multimedia Player) 및 휴대용 게임 플레이어와 같은 휴대용 전자 디바이스를 포함할 수 있다.
메모리 디바이스(200)는 호스트 디바이스에 의해 액세스되는 데이터를 저장할 수 있다.
메모리 디바이스(200)는, 동적 랜덤 액세스 메모리(dynamic random access memory; DRAM) 및 정적 랜덤 액세스 메모리(static random access memory; SRAM)와 같은 휘발성 메모리 디바이스, 또는 판독 전용 메모리(read only memory; ROM), 마스크 ROM(MROM), 프로그램 가능 ROM(PROM), 소거 가능한 프로그램 가능 ROM(erasable programmable ROM; EPROM), 전기적으로 소거 가능한 프로그램 가능 ROM(EEPROM), 강유전체 랜덤 액세스 메모리(ferroelectric random access memory; FRAM), PRAM(phase change RAM), MRAM(magnetoresistive RAM) 및 RRAM(resistive RAM)과 같은 비휘발성 메모리 디바이스로 구현될 수 있다.
제어기(100)는 메모리 디바이스(200) 내의 데이터의 저장을 제어할 수 있다. 예를 들어, 제어기(100)는 호스트 디바이스로부터의 요청에 응답하여 메모리 디바이스(200)를 제어할 수 있다. 제어기(100)는 메모리 디바이스(200)로부터 판독된 데이터를 호스트 디바이스에 제공하고, 호스트 디바이스로부터 제공된 데이터를 메모리 디바이스(200)에 저장할 수 있다.
제어기(100)는 저장 유닛(110), 제어 유닛(120), 에러 정정 코드(error correction code; ECC) 유닛(130), 호스트 인터페이스(140) 및 메모리 인터페이스(150)를 포함할 수 있으며, 이들은 버스(160)를 통해 결합된다.
저장 유닛(110)은 메모리 시스템(10) 및 제어기(100)의 작업 메모리(working memory)의 역할을 하고, 메모리 시스템(10) 및 제어기(100)를 구동하기 위한 데이터를 저장할 수 있다. 제어기(100)가 메모리 디바이스(200)의 동작들을 제어할 때, 저장 유닛(110)은 판독, 기록, 프로그램 및 소거 동작들과 같은 동작들을 위해 제어기(100) 및 메모리 디바이스(200)에 의해 이용되는 데이터를 저장할 수 있다.
저장 유닛(110)은 휘발성 메모리로 구현될 수 있다. 저장 유닛(110)은 정적 랜덤 액세스 메모리(SRAM) 또는 동적 랜덤 액세스 메모리(DRAM)로 구현될 수 있다. 상술한 바와 같이, 저장 유닛(110)은 판독 및 기록 동작들을 위해 호스트 디바이스에 의해 이용되는 데이터를 메모리 디바이스(200)에 저장할 수 있다. 데이터를 저장하기 위해, 저장 유닛(110)은 프로그램 메모리, 데이터 메모리, 기록 버퍼, 판독 버퍼, 맵 버퍼 등을 포함할 수 있다.
제어 유닛(120)은 호스트 디바이스로부터의 기록 요청 또는 판독 요청에 응답하여 메모리 시스템(10)의 일반적인 동작들, 및 메모리 디바이스(200)에 대한 기록 동작 또는 판독 동작을 제어할 수 있다. 제어 유닛(120)은 메모리 시스템(10)의 일반적인 동작들을 제어하기 위해 FTL(flash translation layer)로서 지칭되는 펌웨어를 구동할 수 있다. 예를 들어, FTL은 L2P(logical to physical) 맵핑, 웨어 레벨링(wear leveling), 가비지 콜렉션(garbage collection) 및 배드 블록 핸들링(bad block handling)과 같은 동작들을 수행할 수 있다. L2P 맵핑은 LBA(logical block addressing)으로서 공지되어 있다.
ECC 유닛(130)은 판독 동작 동안 메모리 디바이스(200)로부터 판독된 데이터의 에러들을 탐지하여 정정할 수 있다. ECC 유닛(130)은 에러 비트들의 수가 정정 가능한 에러 비트들의 임계 수보다 크거나 같을 때 에러 비트들을 정정할 수 없고, 에러 비트들을 정정하는데 실패를 나타내는 에러 정정 실패 신호를 출력할 수 있다.
일부 실시예들에서, ECC 유닛(130)은 LDPC(low density parity check) 코드, BCH(Bose-Chaudhuri-Hocquenghem) 코드, 터보 코드, TPC(turbo product code), RS(Reed-Solomon) 코드, 콘볼루션 코드(convolution code), 순환 시스템 코드(recursive systematic code; RSC), TCM(trellis-coded modulation), BCM(Block coded modulation) 등과 같은 코딩된 변조에 기초하여 에러 정정 동작을 수행할 수 있다. ECC 유닛(130)은 에러 정정 동작을 위한 모든 회로들, 시스템들 또는 디바이스들을 포함할 수 있다.
호스트 인터페이스(140)는, 범용 직렬 버스(USB), 멀티미디어 카드(MMC), PCI-E(peripheral component interconnect express), SCSI(small computer system interface), SAS(serial-attached SCSI), SATA(serial advanced technology attachment), PATA(parallel advanced technology attachment), ESDI(enhanced small disk interface) 및 IDE(integrated drive electronics)와 같은 다양한 인터페이스 프로토콜들 중 하나 이상을 통해 호스트 디바이스와 통신할 수 있다.
메모리 인터페이스(150)는 제어기(100)가 호스트 디바이스로부터의 요청에 응답하여 메모리 디바이스(200)를 제어하도록 허용하기 위해 제어기(100)와 메모리 디바이스(200) 사이에 인터페이스를 제공할 수 있다. 메모리 인터페이스(150)는 메모리 디바이스(200)에 대한 제어 신호들을 생성하고, CPU(120)의 제어 하에 데이터를 처리할 수 있다. 메모리 디바이스(200)가 NAND 플래시 메모리와 같은 플래시 메모리일 때, 메모리 인터페이스(150)는 메모리에 대한 제어 신호들을 생성하고, CPU(120)의 제어 하에 데이터를 처리할 수 있다.
메모리 디바이스(200)는 메모리 셀 어레이(210), 제어 회로(220), 전압 생성 회로(230), 행(row) 디코더(240), 페이지 버퍼(250), 열(column) 디코더(260) 및 입출력 회로(270)를 포함할 수 있다. 메모리 셀 어레이(210)는 복수의 메모리 블록들(211)을 포함할 수 있고, 이 내에 데이터를 저장할 수 있다. 전압 생성 회로(230), 행 디코더(240), 페이지 버퍼(250), 열 디코더(260) 및 입출력 회로(270)는 메모리 셀 어레이(210)에 주변 회로를 형성한다. 주변 회로는 메모리 셀 어레이(210)의 프로그램, 판독 또는 소거 동작을 수행할 수 있다. 제어 회로(220)는 주변 회로를 제어할 수 있다.
전압 생성 회로(230)는 다양한 레벨들을 갖는 동작 전압들을 생성할 수 있다. 예를 들어, 소거 동작에서, 전압 생성 회로(230)는 소거 전압 및 통과 전압과 같은 다양한 레벨들을 갖는 동작 전압들을 포함할 수 있다.
행 디코더(240)는 전압 생성 회로(230) 및 복수의 메모리 블록들(211)에 연결될 수 있다. 행 디코더(240)는 제어 회로(220)에 의해 생성된 행 어드레스(RADD)에 응답하여 복수의 메모리 블록들(211) 중에서 적어도 하나의 메모리 블록을 선택하여, 전압 생성 회로(230)로부터 공급된 동작 전압들을 복수의 메모리 블록들(211) 중에서 선택된 메모리 블록들에 전송할 수 있다.
페이지 버퍼(250)는(도시되지 않은) 비트 라인(BL)들을 통해 메모리 셀 어레이(210)에 연결된다. 페이지 버퍼(250)는, 양의 전압으로 비트 라인(BL)들을 프리차지(precharge)하고, 프로그램 및 판독 동작들에서 선택된 메모리 블록에 데이터를 전송하고 이러한 메모리 블록으로부터 데이터를 수신하거나, 제어 회로(220)에 의해 생성된 페이지 버퍼 제어 신호에 응답하여 전송된 데이터를 일시 저장할 수 있다.
열 디코더(260)는 데이터를 페이지 버퍼(250)에 전송하고 페이지 버퍼(250)로부터 데이터를 수신하거나, 데이터를 입출력 회로(270)에 전송하고 입출력 회로(270)로부터 데이터를 수신할 수 있다.
입출력 회로(270)는, 외부 디바이스(예를 들어, 메모리 제어기(100))로부터 전송된 명령 및 어드레스를 제어 회로(220)에 전송하고, 외부 디바이스로부터의 데이터를 열 디코더(260)에 전송하거나, 입출력 회로(270)를 통해 열 디코더(260)로부터의 데이터를 외부 디바이스로 출력할 수 있다.
제어 회로(220)는 명령 및 어드레스에 응답하여 주변 회로를 제어할 수 있다.
도 3은 본 발명의 일 실시예에 따른 반도체 메모리 디바이스의 메모리 블록을 도시한 회로도이다. 예를 들어, 도 3의 메모리 블록은 도 2에 도시된 메모리 셀 어레이(200)의 메모리 블록들(211)일 수 있다.
도 3을 참조하면, 메모리 블록들(211)은 비트 라인들(BL0 내지 BLm-1)에 각각 결합된 복수의 셀 스트링들(221)을 포함할 수 있다. 각각의 열의 셀 스트링은 하나 이상의 드레인 선택 트랜지스터들(DST) 및 하나 이상의 소스 선택 트랜지스터들(SST)을 포함할 수 있다. 복수의 메모리 셀들 또는 메모리 셀 트랜지스터들은 선택 트랜지스터들(DST, SST) 사이에 직렬로 결합될 수 있다. 메모리 셀들(MC0 내지 MCn-1)의 각각은 각각의 셀에 다중 비트들의 데이터 정보를 저장하는 MLC(multi-level cell)로 형성될 수 있다. 셀 스트링들(221)은 각각 대응하는 비트 라인들(BL0 내지 BLm-1)에 전기적으로 결합될 수 있다.
일부 실시예에서, 메모리 블록(211)은 NAND 타입 플래시 메모리 셀을 포함할 수 있다. 그러나, 메모리 블록(211)은 NAND 플래시 메모리에 한정되지 않고, NOR 타입 플래시 메모리, 2개 이상의 타입의 메모리 셀들이 조합되는 하이브리드 플래시 메모리, 및 제어기가 메모리 칩 내에 내장되는 1-NAND 플래시 메모리를 포함할 수 있다.
DRAM 또는 고속의 주 메모리는 컴퓨팅 시스템에서 중요한 자원이다. 빅(big) 데이터 및 인-메모리(in-memory) 컴퓨팅에 대한 추세는 확장된/부가적인 주 메모리 용량을 더욱 더 요구하였다. 간단한 아이디어는 주 메모리 용량을 증가시키기 위해 주 메모리 압축을 적용하는 것이지만, 수년간의 연구에도 불구하고 많은 도전들이 존재한다.
저장 용량을 증가시키기 위한 압축의 사용법이 발달되고, 블록 레벨 압축, 중복 제거(deduplication) 등과 같은 기술을 이용하여 수년간 널리 사용되어 왔고, 좋은 결과를 가져왔지만, 시스템 비용과 전력 소비를 크게 증가시키지 않고 데이터 압축/압축 해제 프로세스들 및 메타 데이터 처리 등에 대한 지연 시간을 약간만 증가시킨 가변적인 압축 비율을 달성하였다. 생성된 데이터 블록들이 스토리지에 전송하고 기록하기에 더 작기 때문에, 일부 설계는 적은 네트워크, 스토리지 대역폭 및 적은 전력을 사용하여 더 고속 성능을 달성할 수 있다.
그러나, 대기 시간이 중요한 주 메모리(예를 들어, DRAM)의 용량을 증가시키기 위한 압축의 사용법은 많은 문제들과 도전들 때문에 실제로 성공적으로 사용되지 않았다. 예를 들어, 기존의 압축 알고리즘은 압축된 메모리 페이지 내에서 캐시 라인을 찾기 위해 메모리 제어기가 중요한 계산을 수행하도록 할 필요가 있기 때문에 주 메모리에 직접 적용될 때 잘 변환하지 않는다. 또한, 압축 해제는 임의의 압축된 데이터에 액세스하는 임계 경로에 의한다. Lempel-Ziv 및 Huffman 인코딩과 같은 정교한 압축 알고리즘은 전형적으로 성능을 현저하게 저하시킬 수 있는 큰 압축 해제 대기 시간을 희생시키면서 높은 압축 비율을 달성한다.
압축 해제 대기 시간이 적고 압축 비율이 적절히 높은 FPC(Frequent pattern compression) 또는 BDI(Base Delta-Immediate)와 같은 간단한 알고리즘들이 제안되었다. 그러나, 현대의 CPU 성능은 수년 동안 거의 동일한 DRAM 액세스 대기 시간에 의해 이미 점점 더 병목 현상이 발생되었다. FPC 또는 BDI에 의해 유발된 대기 시간의 증가(심지어 1 또는 2 ns)는 시스템 성능에 악영향을 미칠 것이다.
압축 알고리즘들의 경우, 이의 설계에 대한 많은 도전들이 있다. 예를 들어, 운영 체제가 고정 크기의 가상 페이지들을 가변 크기의 실제 페이지들에 맵핑해야 하기 때문에 주 메모리 압축은 메모리 관리를 복잡하게 한다. 또한, 현대의 프로세서는 상이한 캐시 라인들 사이의 앨리어싱(aliasing)을 방지하기 위해 실제 어드레스로부터 유도된 태그들을 가진 온칩(on-chip) 캐시들을 사용한다(실제 어드레스들은 고유한 반면, 가상 어드레스들은 고유하지 않음). 따라서, 캐시 태깅 로직은 대기 시간 임계 L1 캐시 액세스들의 임계 경로에서 주 메모리 어드레스 계산을 취하기 위해 메모리 압축에 비추어 수정될 필요가 있다. 더욱이, 일반적인 가상-실제 어드레스 변환과는 대조적으로, 캐시 라인의 실제 페이지 오프셋은 압축된 실제 캐시 라인들이 이들의 대응하는 가상 캐시 라인들보다 작기 때문에 종종 대응하는 가상 페이지 오프셋과 상이하다. 사실상, 주 메모리에서 실제 페이지의 압축된 캐시 라인의 위치는 동일한 실제 페이지에서 그것 앞에 오는 압축된 캐시 라인들의 크기에 따라 달라진다. 결과적으로, 주 메모리에서 압축된 페이지 내의 캐시 라인에 액세스하는 것은 주 메모리에서 캐시 라인의 위치를 계산하기 위해 부가적인 어드레스 계산의 계층을 필요로 하며, 이는 비용이 많이 들 수 있다.
따라서, 압축 프로세스들은, 예를 들어, 더 길고 비결정론적인 대기 시간(메모리 액세스들의 임계 경로상에서), CPU, 캐시 로직, 메모리 제어기들, 하드웨어 압축/압축 해제 엔진의 부가, 및 고정 가상 페이지 크기들을 가변 실제 페이지 크기들에 맵핑하는 OS 메모리 관리와 같은 다른 변경들을 포함하는 높은 설계 복잡도, 및 부가적인 동작들의 결과로서 높은 전력 소비의 부정적 효과들을 가질 수 있다.
저속 메모리(예를 들어, NAND 플래시, PCRAM, ReRAM 등)에 압축된 데이터를 저장하는(예를 들어, 저속 및 고속 메모리를 사용하여) 하이브리드 메모리 서브 시스템을 이용하는 시스템들, 방법들, 디바이스들 및 프로세스들이 본 명세서에 개시되어 있지만, 고속 메모리(예를 들어, DRAM)에서의 데이터는 압축되지 않은 채로 있어야 한다. 저속 메모리 및 고속 메모리 둘 다가 압축된/압축 해제된 데이터를 저장하는데 전용되는 다양한 부분들을 포함하도록 분할되고/되거나 구분할 수 있음에 따라, 본 기술 분야의 통상의 기술자들은 저속 메모리 구성 요소들이 압축된 데이터만을 저장하는데 배타적으로 한정되지 않을 수 있고, 고속 메모리 구성 요소들이 압축 해제된 데이터만을 저장하는데 배타적으로 한정되지 않을 수 있다는 본 개시물로부터 이해할 것이다. 따라서, OS 및/또는 애플리케이션(예를 들어, 사용자 공간 프로세스들)이 고속 메모리(또는 주 메모리, 시스템 메모리 등)에 액세스할 때, 압축 해제 대기 시간이 거의 발생하지 않거나, 복잡한 캐시 라인 오프셋 계산 및 메타 데이터 처리 오버헤드가 거의 발생하지 않을 것이다.
본 명세서에 개시된 본 발명은 하이브리드 고속 및 저속 메모리의 사용으로 함께 작동될 수 있다. 예를 들어, 32GB DRAM 및 512GB NAND 플래시 스토리지를 가진 하이브리드 메모리 DIMM은 64GB DRAM 또는 128GB SCM 스토리지 클래스 메모리보다 훨씬 저렴한 비용을 갖지만, OS는 그것을 512GB 바이트 이상의 어드레스 지정 가능한 고속 메모리로서 인식할 것이고, 시스템은 다중 DIMM 구성들에서 다수의 데이터의 TB들을 포함하는 훨씬 더 큰 데이터 세트들로 애플리케이션을 효과적으로 실행할 수 있다.
일반적으로 도 4를 참조하면, 페이지 리맵핑을 위한 시스템(40)이 도시된다. 시스템(40)은 사용자 공간(400) 및 커널 공간(402)을 포함하며, 여기서, 사용자 공간(400) 및 커널 공간(402)은 통신한다. 사용자 공간(400)은 실행하기 위해 커널 공간(402)의 구성 요소들을 필요로 하는 애플리케이션(404)을 포함한다. 커널 공간(402)은 소프트웨어 페이지 리맵핑 커널 드라이버(406), 메모리 관리 유닛(memory management unit; MMU)/변환 색인 버퍼(translation lookaside buffer)(408), 제어기/디코더(410), 고속 메모리(412)(예를 들어, DRAM, MRAM 등) 및 저속 메모리(414)(예를 들어, NAND 플래시, PCRAM, ReRAM, 비휘발성 메모리들(NVM) 등)을 포함한다. 도 4의 시스템(40)에 도시된 구성 요소들 및 이들의 기능들은 아래에서 상세히 설명된다.
하이브리드 메모리 서브 시스템들을 갖는 시스템들(50 및 60)은 도 5 및 도 6에 도시된다. 시스템(50)은 고속 메모리(500) 및 저속 메모리(502)를 포함한다. 본 명세서에서의 설명으로부터 본 기술 분야의 통상의 기술자들에 의해 이해되는 바와 같이, 시스템(50)은 일반적인 목적을 위해 설명되고, 다양한 메모리 시스템들, 디바이스들, 프로세스들 및 방법들에서 구현될 수 있다. 시스템(50)에서, 고속 메모리(500)로부터의 데이터를 저속 메모리(502)에 기록하는 것은 데이터의 압축(504)을 포함할 수 있다. 또한 시스템(50)에서, 저속 메모리(502)로부터의 데이터를 고속 메모리(500)에 기록하는 것은 데이터의 압축 해제(506)를 포함할 수 있다.
시스템(60)은 투명 처리(예를 들어, 투명 의미는 보이지 않거나 OS에 의해 인식됨)의 일례를 도시한다. 시스템(60)은 애플리케이션 실행(602)을 위한 사용자 공간(600) 및 커널 공간(604)을 포함한다. 사용자 공간(600)은 고속 메모리와 관련하여 커널 공간(604)과 통신할 수 있다. OS 및 애플리케이션들(602)은 (예를 들어, 저속 메모리(608) 용량 플러스 리맵핑 프로세스에 할당되지 않은 고속 메모리(606)의 메모리의 2배 이상인) 실질적으로 증가된 메모리 용량을 인식하지만, OS/애플리케이션들(602)은 대부분 (일부 실시예들에는 항상) 고속 메모리(606)에 액세스할 것이다.
시스템(60)은 또한 투명 처리(610)를 위해 배치/구성되는 저속 메모리(608)를 포함한다. 대안적으로, 데이터가 고속 메모리(606)로부터 저속 메모리(608)에 기록될 때, 데이터의 압축(612)을 포함할 수 있고/있거나, 데이터가 저속 메모리(608)로부터 고속 메모리(606)에 기록될 때에는, 데이터의 압축 해제(612)를 포함할 수 있으며, (아래에 더욱 상세히 설명되는) 투명한 처리(610) 구성은 압축(612) 및 압축 해제(614)가 OS에 투명하게(예를 들어, 보이지 않거나 인식되지 않게) 수행되도록 허용한다.
본 발명의 예들에서, CPU, OS 및 애플리케이션들이 압축 해제, 캐시 라인 오프셋 및 메타 데이터 처리에 의해 대기 시간이 거의 발생하지 않도록 고속 메모리(500 및 606) 내의 데이터는 압축 해제될 수 있다(일부 실시예에서, 고속 메모리(500 및 606) 내의 모든 데이터는 압축 해제될 수 있고/있거나 항상 압축 해제될 수 있다). 효과적인(인식된) 용량을 증가시키기 위해 저속 메모리(502 및 608) 내의 데이터는 압축될 수 있다(일부 실시예에서, 모든 데이터는 압축될 수 있고/있거나 항상 압축될 수 있다).
데이터는 페이지를 기록하거나 스와핑된 더티 페이지(swapped, dirty page)를 다시 저속 메모리(502 및 608)에 "라이트백(write-back)"할 때 압축될 수 있다(504/612). 시스템(60)에서, 압축 프로세스(612) 및 대기 시간은 프로세스 중에 숨겨진다. 데이터는 저속 메모리(502 및 608)에서 고속 메모리(500 및 606)로 페이지를 스와핑할 때 압축 해제될 수 있다(506/614). 시스템(60)에서, 압축 해제 프로세스(614) 및 대기 시간은 프로세스 중에 숨겨질 수 있다.
이와 같이, 압축 해제 및/또는 압축, 캐시 라인 오프셋 계산 및 메타 데이터 처리 오버헤드들에서 (압축(504) 및 압축 해제(506) 프로세스들이 OS에 대해 투명하게 수행될 수 있는 메모리 시스템에서 구현될 수 있는 시스템(50)을 포함하는) 본 명세서에서 설명된 시스템(60) 및 다른 예들은 "숨김(hidden)"이며, OS/애플리케이션(602)이 타겟 메모리 위치들에 액세스하기 전에 페이지 리맵핑 프로세스 중에 처리될 수 있다.
일부 실시예들에서, 본 명세서에 개시된 하이브리드 메모리 발명들은 소프트웨어 페이지 리맵핑 프로세스를 이용하고, 페이지 리맵핑의 페이지 스와핑 프로세스 중에 압축/압축 해제 프로세스들을 숨김으로써, 시스템은 OS 및 애플리케이션들에 의해 인식된 주 메모리 용량을 실질적으로 증가시키면서 OS/애플리케이션(602)의 투명한 메모리 압축을 가능하게 한다.
아래에 개시된 일부 실시예들에서, 소프트웨어 페이지 리맵핑 방식이 이용되며, 여기서 페이지 리맵핑 방식은 또한 OS/애플리케이션들에 투명하다. 소프트웨어 페이지 리맵핑 방식이 OS 및 애플리케이션에 투명하기 때문에, 저속 메모리로 향하게 되는 모든 (또는 실질적으로 모든) 액세스들이 일어나기 전에 먼저 고속 메모리로 리맵핑(또는 복제 또는 스와핑)될 것이며, 이러한 페이지 리맵핑 프로세스 중에 압축/압축 해제 프로세스를 숨김으로써, 시스템은 OS 및 애플리케이션들에 의해 인식된 유효한 메모리 용량을 실질적으로 증가시킬 수 있는 완전히 OS 및 애플리케이션에 투명한 메모리 압축을 가능하게 하지만, 통상적으로 주 메모리 압축 시스템들과 관련된 바와 같은 제로 압축 해제 대기 시간, 캐시 라인 오프셋 계산 및 메타 데이터 처리 오버헤드를 발생시키는 것을 보장한다.
본 명세서에 개시된 본 발명은 명칭이 "MECHANISM ENABLING THE USE OF SLOW MEMORY TO ACHIEVE BYTE ADDRESSABILITY AND NEAR-DRAM PERFORMANCE WITH PAGE REMAPPING SCHEME"인 미국 가출원 제62/280,430호에 설명된 리맵핑 시스템들과 같이 소프트웨어 페이지 리맵핑을 위해 구성된 시스템에서 구현될 수 있으며, 이의 내용은 본 명세서에서 참조로 포함된다.
본 명세서에 개시된 압축 시스템들, 방법들, 프로세스들 및 디바이스들과 함께 이용될 수 있는 페이지 리맵핑을 위한 예시적인 시스템(70)은 본 발명의 양태들에 따라 도 7에 도시된다. 본 기술 분야의 통상의 기술자들은 아래에 더 설명되는 바와 같이 페이지 리맵핑을 위한 시스템 내의 구현으로 제한되지 않는다는 것을 이해할 것이다. 시스템(70)은 고속 메모리 부(예를 들어, DRAM 등)(714), 저속 메모리 부(예를 들어, NVM, NAND 등)(716) 및 가상 메모리 VM(718)을 포함한다.
(본 기술 분야의 통상의 기술자들이 이해하고 상술한 바와 같이 본 발명을 실시하기 위해 다른 적절한 고속 메모리들이 이용될 수 있지만, 본 명세서에서 DRAM으로서 지칭되는) 총 물리적 고속 메모리 공간(714)은 "D"로서 도시된다. "D" GB 중에서, DRAM의 "X" GB는 맵핑되어 OS에서 볼 수 있다. 다시 말하면, DRAM의 "D-X" GB는 리맵 버퍼로서 사용될 수 있다. (본 기술 분야의 통상의 기술자들이 이해하고 상술한 바와 같이 본 발명을 실시하기 위해 다른 적절한 저속 메모리들이 이용될 수 있지만, 본 명세서에서 NAND 및/또는 NVM으로서 지칭되는) 총 물리적 저속 메모리 공간(516)은 "Y" GB이며, 따라서, OS에 의해 인식되는 바와 같은 총 시스템 메모리/총 실제 메모리는 "X + Y" GB이다. 가상 메모리/가상 어드레스(718) 공간의 양은 Z TB이다.
시스템(70)은 사용자 공간(700) 및 커널 공간(701)(예를 들어, 커널 공간(701)의 점선 아래의 구성 요소들/동작들)을 포함할 수 있다. 사용자 공간(700)으로부터, OS/애플리케이션들(702)이 실행될 수 있다. 커널 공간(701)은 OS 메모리 관리 명령들(704)을 전송하기 위한 모듈, 소프트웨어 페이지 리맵핑 커널 드라이버(SPRKD)(506), MMU/TLB(메모리 관리 유닛(예를 들어, 제어기)/변환 색인 버퍼(translation lookaside buffer)(708), 및/또는 MEMC/디코더(메모리 제어기 디코더)(710)를 포함한다.
통상적인 OS 환경에서, OS가 VA 위치 "A"에 액세스(또는 할당)할 때, "A"를 포함하는 페이지가 이미 시스템 메모리에 맵핑된 경우, 그것은 페이지 폴트를 생성시키고, OS는 스토리지(예를 들어, 하드 디스크 드라이브 또는 SSD)로부터 해당 페이지를 검색하여 시스템 메모리에 복사할 것이다. 그러나, 도 7에 도시된 바와 같이, OS가 총 시스템 메모리를 "X + Y" GB로서 인식하기 때문에, 할당된 메모리 페이지가 NVM(716) 어드레스 범위(예를 들어, "X 내지 X + Y" GB)에 속하는 경우, 해당 페이지로의 후속 판독/기록 액세스는 예를 들어 NAND(716)가 DRAM(714)보다 실질적으로 더 느리고, 판독/기록 액세스들이 페이지(블록 모드) 액세스를 수반하기 때문에 느릴 수 있고, 바이트 어드레스 지정 가능하지 않고/않거나, 블록 모드 액세스들을 수행하기 위해 블록 모드 드라이버를 호출할 필요가 있다.
시스템(70)은 저속 메모리(716)로의 후속 액세스들을 (적어도 투명하게, 또는 OS에 의해 보이지 않거나 인식되는 방식으로) DRAM(714)으로 재지향하며, 따라서, (예를 들어, 고속 메모리(714)와 같은) 고속 메모리로서 동작 가능하도록 전체 NAND(716) 공간을 "X에서 X+Y(X to X+Y)"로 에뮬레이트(emulate)하여, 랜덤, 바이트 어드레스 지정 가능 판독/기록 액세스를 지원하도록 구성될 수 있다. SPRKD(706)는 OS 메모리 관리 명령들(704)을 인터셉트하고, 2차 변환 또는 페이지 리맵핑을 수행함으로써 페이지 리맵핑을 개시하도록 구성될 수 있다.
일례로서, SPRKD(706)는 (예를 들어, 저속 메모리 공간(716)에서) 가상 어드레스 VA = "0 내지 Z" TB를 실제 어드레스 PA = "X 내지 X + Y" GB에 맵핑하는 MM 명령들(704)을 인터셉트하고, VA = "0 내지 Z" TB에 대한 맵들을 PA = "X 내지 D" GB 범위로 변환하도록 구성됨으로써, VA = "0 내지 Z" TB에 대한 모든 액세스가 "X 내지 D" 사이의 DRAM(714) 리맵 버퍼 공간으로 재지향될 것이다.
MM 명령들(704)을 인터셉트한 후, SPRKD(706)는 DRAM(714) 리맵 버퍼 공간(예를 들어, "X 내지 D" 사이)에서 빈 페이지를 찾음으로써 리맵핑이 수행될 필요가 있는지를 체크하여, 다음의 예시적인 단계들을 수행하도록 구성될 수 있다. 빈 페이지가 이용 가능한 경우, SPRKD(706)는 NVM(716) 페이지를 빈 DRAM(714) 리맵 버퍼 공간에 복사하는 단순히 페이지 복제일 수 있는 리맵핑을 수행할 수 있다. 빈 페이지가 이용 가능하지 않을 경우, 축출할 페이지를 선택하기 위해 축출 알고리즘이 이용될 수 있다. 예를 들어, 축출하기 위해 선택된 페이지가 클린(clean)하면, 그것은 간단히 폐기될 수 있고, 페이지 복제가 수행될 수 있다. 선택된 페이지가 더티(dirty)하면, SPRKD(706)는 리맵핑을 수행하기 전에 해당 페이지를 대응하는 NVM(716) 페이지에 라이트백하도록 구성될 수 있다.
다음으로 도 8을 참조하면, 예시적인 CPU 및 OS 동작들의 다이어그램(80)이 도시된다. 도 8에 도시된 바와 같이, 애플리케이션들(801)이 실행하는 사용자 공간(800) 및 커널 공간(802)이 있다. 동작에서, 이용된 구성 요소들은 MMU/TLB(804), 페이지 테이블 엔트리들(PTE)(806)을 포함하는 페이지 테이블(PT), 소프트웨어 페이지 리맵핑 커널 드라이버(SPRKD)(808), 가상 어드레스(VA) 대 실제 어드레스(PA) 맵핑/페이지 폴트 핸들러(810), NVM-DRAM 리맵 테이블(812), (이들 구성 요소들이 설명을 용이하게 하기 위해 도 8에 별개로 도시되지만, 저속 및 고 속 메모리의 총 스토리지를 포함할 수 있는) 스토리지(816), 저속 메모리/NVM(818) 및 DRAM/고속 메모리(826)를 포함 할 수 있다. 시스템/프로세스(80)는 또한 CPU 캐시 히트/미스 체크(828)를 포함할 수 있다.
814에서 OS MM 기능 호출들/명령들을 인터셉트함으로써 SPRKD(808)가 모든 액세스들을 NAND/NVM(818) 어드레스 공간으로 변환하여, 이들을 "X 내지 D" GB에서 DRAM(826) 리맵 버퍼 공간에 리맵핑하기 때문에, 저속 메모리 공간(818)에 대한 OS 액세스들은 OS가 고속 바이트 어드레스 지정 가능한 DRAM 메모리에 액세스한다고 생각하도록 항상 DRAM에 리맵핑(재지향)된다.
일반적으로, SPRKD(808)는 2개의 기능들을 수행하도록 구성될 수 있다. 먼저, SPRKD(808)는 OS MM 기능 호출들(814)을 인터셉트한다. OS가 VA(가상 어드레스)를 PA(실제 어드레스) 맵핑으로 변경할 필요가 있을 때, SPRKD(808)는 페이지가 먼저 NVM-DRAM Remap 테이블(912)에 존재하는지를 체크할 것이다. 히트하면, 그것은 RT(Remap Table) 정보를 이용하여 PTE(806) 및 TLB(804)에 대한 "RT Update(Remap Table Update)"를 수행할 것이다. 미스하면, 그것은 페이지 폴트로서 처리하여 OS 페이지 폴트 핸들러(810)로 전달할 것이다.
둘째로, 정상적인 TLB 미스에서, TLB 미스 핸들러는 페이지가 PT(히트)에서 맵핑되는지 PT("리맵 폴트"로서 처리되는 미스)에서 맵핑되지 않는지를 결정하기 위해 "페이지 워크(page walk)"를 수행하고 나서, SPRKD(808)로 전달될 것이다. SPRKD(808)에서, PT 히트에 대해, 그것은 리맵을 수행하고, 리맵 테이블(812)을 업데이트하며, TLB 업데이트를 수행하도록 구성될 수 있다. SPRKD(808)에서, PT 미스에 대해, 그것은 스토리지로부터 페이지를 적재하기 위해 페이지 폴트와 유사한 동작을 수행하고, VA-PA 맵핑, PT 업데이트, 다른 프로세서들에 대한 TLB 슛다운, 타겟 프로세서에 대한 TLB 업데이트를 수행한 다음, TLB 미스를 트리거하는 메모리 액세스를 다시 시도하도록 구성될 수 있다.
시스템(80)이 SPRKD(808)로 페이지 리맵핑하기 위한 CPU 프로세스의 예를 도시하지만, 본 기술 분야의 통상의 기술자들은 본 명세서의 개시물로부터 본 발명을 벗어나지 않고 본 발명을 실시하기 위한 다른 적절한 프로세스들 및 구성들을 인식할 것이다.
시스템/프로세스(80)에 도시된 바와 같이, OS에 대해 투명하게 수행되는 페이지 리맵핑 프로세스는 또한 압축 동작들(820)을 이의 리맵핑 동작에 통합한다. 페이지 리맵핑 단계들을 수행하는 데 필요한 고속 메모리(826)와 저속 메모리(818) 사이의 동작들 및 전송들은 고속 메모리(826)로부터 저속 메모리(818)로의 압축 동작들(822) 및 저속 메모리(818)로부터 고속 메모리(826)로의 압축 해제 동작(824)을 포함할 수 있다. 이들 동작들은 아래에 상세히 설명된다.
본 발명의 일부 실시예에서, SPRKD는 저속 메모리에 대한 압축된 페이지로의 라이트백을 수행하기 전에 먼저 축출되도록 선택된 페이지를 압축할 수 있고, SPRKD는 복제되도록 선택된 타겟 페이지를 압축 해제하고 나서, 저속 메모리로부터 고속 메모리에 복제할 수 있다.
도 9는 운영 체제에 투명한 페이지 리맵핑 및 압축 동작들을 수행하기 위한 방법/프로세스에서의 단계들의 흐름도(90)이고, 이전의 도면들에서 설명된 구성 요소들이 또한 흐름도(90)에서의 단계들을 수행하도록 구성될 수 있지만 특히 설명을 쉽게 하기 위해 도 8의 구성 요소들에 대해 설명될 것이다.
단계(900)에서, 메모리 관리 명령(814)은 인터셉트된다. 예를 들어, SPRKD(808)는 메모리 관리 명령(814)을 인터셉트하도록 구성될 수 있다. 메모리 관리 명령(814)은 NAND 부(716)의 VA = "0 내지 Z"를 실제 어드레스들(PA) = "X 내지 Y"로 맵핑하는 메모리에 대한 명령 또는 액세스를 포함할 수 있다.
단계(902)에서, 페이지 리맵핑이 필요한지가 결정된다. 예를 들어, SPRKD(808)는 페이지 리맵핑이 필요한지를 결정하도록 구성될 수 있다. 페이지 리맵핑이 필요하지 않을 경우(예를 들어, 액세스가 이미 DRAM 버퍼 공간 내에 있는 어드레스에 대한 것이고/이거나, 메모리 관리 명령(814)에 대한 압축 또는 압축 해제가 필요하지 않는 경우), OS 페이지 폴트 핸들러(810)가 스토리지(816)로부터 페이지를 판독하고, VA-PA 맵핑을 수행할 수 있도록 SPRKD(808)는 디폴트할 수 있다.
단계(904)에서, 페이지 리맵핑이 필요한 것으로 결정되면, 압축 및/또는 압축 해제 동작들(820)은 페이지 리맵핑 프로세스 중에 수행되도록 구성될 수 있다. 예를 들어, SPRKD(808)는 리맵핑 동작 동안 압축 및/또는 압축 해제 동작들(820)을 개시/수행하도록 구성될 수 있다.
단계(906)에서, 저속 메모리(818)로부터의 페이지는 고속 메모리(826)에 복제되도록 식별될 수 있다. SPRKD(808)는 고속 메모리(826)에 복제되도록 저속 메모리(818)로부터 페이지를 식별하도록 구성될 수 있다.
단계(908)에서, 단계(906)에서 식별된 페이지가 빈 페이지에서 고속 메모리(826)에 복제(예를 들어, 기록)될 수 있도록 페이지는 고속 메모리(826)에서 이용 가능한 지가 결정된다. 일례로서, SPRKD(808)는 페이지가 고속 메모리(826)에서 이용 가능한지를 결정하도록 구성될 수 있다.
단계들(910 내지 914)은 단계(908)에서 고속 메모리(826)에서 이용 가능한 페이지가 없는 것으로 결정될 때(예를 들어, SPRKD(808)가 결정할 때) 취해진 단계들의 예시적인 세트를 설명한다.
단계(910)에서, 고속 메모리(826)에서 페이지가 이용 가능하지 않으면, 고속 메모리로부터의 페이지는 축출되도록 선택된다. 본 명세서에서 사용된 바와 같이, 축출은, 리맵핑/복제/압축/압축 해제/등이 수행될 수 있도록 고속 메모리(826)에서 페이지 또는 페이지들 또는 그렇지 않으면 공간을 비우는 (본 명세서에서 참조로 이전에 통합된 미국 가출원 제62/280,430호에 설명된 알고리즘들과 같은) 알고리즘들을 지칭할 수있다. 선택된 페이지가 저속 메모리(818)에 라이트백될 필요가 있는 데이터를 포함하지 않는 경우, 프로세스는 단계(916)로 진행할 수 있다. 그렇지 않으면, 프로세스는 단계들(912-914)에서 계속한다.
페이지가 선택되면, 단계(912)에서, 선택된 페이지가 라이트백 데이터(예를 들어, 저속 메모리(818)에 라이트백되는 데이터)를 포함하는 경우, 축출하도록 선택된 페이지(예를 들어, 페이지 내의 데이터)는 압축된다. 예를 들어, SPRKD(808)는 선택된 페이지를 압축하도록 구성될 수 있다. 페이지가 이전에 고속 메모리(826)에 있기 때문에, 페이지는 압축 해제 상태로 저장되며(가능성이 있으며), 그 이유는 OS가 고속 메모리(826)에 액세스하고, 이들 액세스들이 대기 시간이 거의 없도록 설계되기 때문이다. 따라서, 저속 메모리(818)의 인식된 공간을 개선하기 위해, 페이지 내의 데이터가 라이트백될 필요가 있기 때문에, 압축 동작(822)은 단계(912)에서 발생할 수 있다. 리맵핑 동작이 OS에 대해 투명하게 수행되고, 압축 동작(822)이 또한 리맵핑 동작 중에 수행되므로, 압축 동작(822)은 또한 OS에 대해 투명하게 수행되며, 따라서 대기 시간을 줄이고, 본 명세서에서 설명되는 바와 같은 다른 이점들을 포함한다.
단계(914)에서, 축출하도록 선택된 페이지/데이터가 압축되면(예를 들어, 압축 동작(822)이 완료되면), 압축된 페이지/데이터는 저속 메모리(818)에 라이트백된다. 일부 실시예들에서, SPRKD(808)는 (예를 들어, 페이지 폴트 핸들러(810)를 통해) 압축된 선택된 페이지를 저속 메모리(818)에 라이트백하도록 구성된다. 데이터가 저속 메모리(818)에 라이트백되면, 선택된 페이지는 축출될 수 있다(예를 들어, 페이지 내의 데이터는 제거되어, 리맵핑 동작 동안 고속 메모리(826) 내의 공간을 비울 수 있다).
단계(916)에서, 복제되도록 식별된 페이지는 압축 해제된다. 복제되도록 식별되는 페이지는 저속 메모리(818) 상에 저장될 수 있으며, 따라서 압축된 상태로 저장될 수 있다. 고속 메모리(826)에 저장되는 데이터가 압축 해제된 상태로 그렇게 수행되는 것이 바람직하기 때문에, 이러한 단계에서 압축 해제 동작(824)은 리맵핑 프로세스에서 실시될 수 있다. 일례에서, SPRKD(808)는 압축 해제 프로세스(824)를 실시/개시하도록 구성된다. 압축 해제 동작(824)이 (위에서 상세히 설명된 바와 같이 OS에 대해 투명하게 수행되는) 리맵핑 프로세스 동안 수행되기 때문에, 압축 해제 동작(824)은 또한 OS에 대해 투명하게 수행될 수 있다.
단계(918)에서, 압축 해제된 페이지는 고속 메모리(826)에 복제된다. 예를 들어, SPRKD(808)는 복제 프로세스를 개시하고, 압축 해제된 페이지를 고속 메모리(826)에 복제하도록 구성될 수 있다. 본 명세서에서 설명된 것과 같은 페이지 리맵핑 방식들에서의 통상적인 단계인 이러한 복제는 압축 해제가 리맵핑을 완료하기 전에 일어났기 때문에 메모리 디바이스의 동작을 개선한다. 따라서, 복제된(리맵핑된) 페이지는 고속 메모리(826)에 기록될 때 압축 해제된다. 이것은 운영 체제에 투명할 뿐만 아니라 리맵핑에 따른 부가적인 단계가 제거되기 때문에 유리하다. 통상적으로, 리맵핑이 행해진 후, 압축 해제는 수행되지 않으며, 따라서 페이지의 복제 후에, 시스템은 고속 메모리(826)에 저장되는 바와 같이 페이지의 압축 해제를 실시해야 한다. 이것은 OS에 투명하지 않고, 동작의 속도를 감소시킨다. 이런 방식으로 페이지 리맵핑 및 압축/압축 해제 동작을 수행시킴으로써, 투명한 리맵핑 및 압축/압축 해제 동작이 허용되고, 불투명한 단계들이 제거되어, 성능이 증가된다.
본 명세서에 개시된 시스템들, 방법들, 프로세스들 및 디바이스들은 상술한 리맵핑 페이지 방식들을 사용하지 않는 다른 하이브리드 또는 이종 메모리 서브 시스템에 적용될 수 있으며, 이들은 압축/압축 해제 프로세스가 OS 및 애플리케이션에 투명한 방식으로 행해질 수 있는 방법, 및 성능 저하가 없거나 거의 없도록 대기 시간의 일부 또는 전부가 오프셋되거나 "숨김"으로 될 수 있는 방법을 예시하는 예로서 참조된다.
크기가 더 작은 압축된 데이터 블록들에 의해, 본 명세서에 개시된 시스템들, 방법들, 프로세스들 및 디바이스들은 마모를 감소시키고, 저속 메모리 매체의 내구성 및 수명을 향상시킬 수 있다.
크기가 더 작은 압축된 데이터 블록들에 의해, 판독/기록 시간 및 메모리 대역폭은 감소될 수 있고, 이것은 페이지 리맵핑/스와핑/복제 프로세스 중에 (숨겨진) 압축/압축 해제 프로세스에 의해 발생된 대기 시간들을 부분적으로 오프셋하거나, 완전히 오프셋하며, 또는 심지어 보상할 수 있다. 본 명세서에 설명된 본 발명을 이용한 메모리 압축은 메모리 압축과 연관된 다른 모든 이점을 누리면서 성능 저하가 거의 없도록 할 수 있다.
"저속 메모리"가 "원격 메모리"인 경우, 다른 서버, 다른 데이터 센터 또는 "메모리 풀(Memory Pool)" 서버 등에 위치되는지, 그것이 어떤 형태의 네트워크 또는 패브릭(fabric)들을 통해 NAND, SCM/NVM 또는 심지어 DRAM인지, 본 명세서에 개시된 본 발명은 그것을 지원할 수 있고, 로컬 고속 및 저속 원격 메모리 간에 페이지 리맵핑을 수행할 때에만 원격 메모리에 액세스하는 네트워크/패브릭 트래픽이 발생하기 때문에 네트워크 대역폭, 패브릭 대역폭 및 메모리 대역폭을 실질적으로 감소시킬 수 있으며, 따라서 원격 메모리에 대한 정상적인 OS 및 애플리케이션 액세스들은 고속 로컬 메모리 내의 리맵핑된 페이지들로 지향되고, 더욱 작고 압축된 페이지들은 네트워크, 패브릭 및 메모리 버스 인터페이스들을 통과하여, 이에 따라 대역폭, 대기 시간 및 전력을 감소시킬 것이다.
일 실시예에서, 소프트웨어 페이지 리맵핑 프로세스로 구현될 때, 호스트 CPU, 호스트 메모리 제어기 또는 메모리 채널 인터페이스들에 대한 하드웨어 변경들이 없다. 따라서, 본 명세서에 개시된 본 발명은 기존 및 향후 JEDEC 메모리 소켓(예를 들어, JEDEC DDR3, DDR4)에서 작업할 수 있고, 동일한 채널 상에서 다른 기존의 JEDEC(또는 비-JEDEC) 메모리와 호환 가능하며, 또한 모든 비-JEDEC 메모리 인터페이스들(예를 들어, IBM/OpenPOWER DMI 인터페이스 등) 상에서 작업할 수 있고, 본 발명이 OS에 대해 "투명한" 방식으로 행해지기 때문에 OS 레벨 NUMA 메커니즘과 호환 가능하다.
본 발명은 전형적인 2:1 이상의 타겟 압축 비율에 의해 인식된 메모리의 유효성을 증가시킴으로써 소프트웨어 페이지 리맵핑 방식들을 더 향상시킨다. 위와 동일한 예를 이용하면, 실제 32GB DRAM + 256GB NAND 플래시를 가진 하이브리드 메모리 DIMM은 여전히 64GB DRAM 또는 128GB SCM 스토리지 클래스 메모리보다 훨씬 저렴하면서 512GB 랜덤 액세스 이상의 바이트 어드레스 지정 가능한 고속 메모리로서 OS 및 애플리케이션들에 의해 인식될 수 있다. 따라서, 본 발명은 빅(big) 데이터 애플리케이션들 및 메모리내(in-memory) 컴퓨팅 환경들을 매우 비용 효율적으로 배치할 수 있게 한다.
본 명세서에 개시된 본 발명은 다른 하드웨어 또는 소프트웨어 페이지 스와핑/리맵핑 방식들과 함께 이용될 수 있고, 페이지 리맵핑 방식이 OS/애플리케이션에 완전히 투명한지의 여부가 이용될 수 있다. 압축 해제 대기 시간 오버헤드가 주 메모리 액세스의 임계 경로 내에 있고, 시스템 성능에 부정적인 영향을 주는 프로세스와는 대조적으로, 본 발명은 압축/압축 해제 오버헤드 및 관련된 대기 시간들의 전부 또는 일부를 숨김으로써 여전히 실질적인 이득을 제공 할 것이다.
본 발명의 예들은 제한 없이 모든 손실 없는 압축 알고리즘을 채택할 수 있지만, 2:1 이상의 양호한 평균 압축비를 갖는 저 대기 시간 알고리즘들이 실제 구현들을 위해 바람직하다. Lempel-Ziv 기반(LZO, LZ4, LZ77, LZ78), 허프만(Huffman) 인코딩, FPC(Frequent Pattern Compression) 또는 BDI(Base-Delta-Immediate compression)와 같은 알고리즘들이 모두 본 발명에 대한 가능한 옵션들이다.
실시예들은 OS 및 SPRKD가 애플리케이션을 인식하는 경우 손실 압축 알고리즘들을 지원할 수 있다. 예를 들어, SPRKD는 코드 또는 정상 애플리케이션 데이터에 사용된 페이지들에 무손실 압축을 적용할 수 있고, 심리적 무손실을 지원하지만 실제로 손실 압축(예를 들어, VESA 디스플레이 스트림 압축(Display Stream Compression; DSC) v1.1 등)을 사용하는 디스플레이 프레임 버퍼로서 할당된 페이지에 손실 압축을 적용할 수 있다.
본 명세서에 개시된 본 발명은 하드웨어 또는 소프트웨어 압축/압축 해제 방법들 중 어느 하나를 지원하고, 하드웨어 가속기들은 더욱 짧은 대기 시간 및 더욱 높은 성능을 가질 수 있다. 메타 데이터 캐시들 등을 부가하기 위해 CPU, 캐시 태깅 로직 또는 호스트 메모리 제어기에 대한 변경이 필요하지 않다.
본 명세서에 개시된 본 발명은 매우 유연한 구현이 소프트웨어 또는 하드웨어 페이지 리맵핑/스와핑/복제 메커니즘들 중 하나를 소프트웨어 또는 하드웨어 압축 방법들 중 하나와 결합하도록 허용한다. 따라서, 고성능 구현을 위해 압축 하드웨어 및 관련된 DMA 로직을 부가하기 위해 제로 하드웨어 비용(zero hardware cost)에서 적당한 비용까지 다양하다.
상술한 실시예가 이해의 명확성을 위해 약간 상세하게 설명되었지만, 본 발명은 제공된 상세 사항에 한정되지 않는다. 본 발명을 구현하는 많은 대안적 방식이 있다. 개시된 실시예들은 제한적이 아니라 예시적이다.

Claims (18)

  1. 메모리 시스템에 있어서,
    고속 메모리 부 및 저속 메모리 부를 포함하는 메모리 스토리지;
    운영 체제에 의해 생성된 메모리 관리 명령을 인터셉트하는 것, 상기 운영 체제의 메모리 관리 명령을 실행하기 전에 상기 고속 메모리 부로부터 상기 저속 메모리 부에 기록되는 데이터를 압축하는 것과 상기 운영 체제의 메모리 관리 명령을 실행하기 전에 상기 저속 메모리 부로부터 상기 고속 메모리 부에 기록되는 데이터를 압축 해제하는 것 중 적어도 하나, 및 상기 저속 메모리 부에 기록되는 압축된 데이터 또는 상기 고속 메모리 부에 기록되는 압축 해제된 데이터 중 어느 하나를 전송하는 것에 적합한 소프트웨어 페이지 리맵핑 커널 드라이버(SPRKD); 및
    데이터의 압축 또는 압축 해제가 상기 운영 체제에 대해 투명하게 수행되도록 상기 SPRKD에 의해 전송한 후에 상기 메모리 관리 명령을 실행하는 제어기
    를 포함하는, 메모리 시스템.
  2. 제 1 항에 있어서,
    상기 SPRKD는 페이지 리맵핑 프로세스 중에 상기 압축 또는 압축 해제를 수행하는, 메모리 시스템.
  3. 제 1 항에 있어서,
    상기 SPRKD는,
    상기 고속 메모리에 복제하기 위해 상기 저속 메모리로부터의 페이지를 식별하고;
    페이지가 상기 고속 메모리에서 이용 가능한지를 결정하며;
    복제되도록 식별된 페이지를 압축 해제함으로써
    압축 해제를 수행하는, 메모리 시스템.
  4. 제 3 항에 있어서,
    상기 SPRKD는 페이지가 상기 고속 메모리에서 이용 가능하지 않는 것으로 결정할 때, 상기 SPRKD는 상기 고속 메모리로부터의 축출할 페이지를 선택하는, 메모리 시스템.
  5. 제 1 항에 있어서,
    상기 SPRKD는,
    라이트백 데이터를 포함하는 상기 고속 메모리로부터의 축출할 페이지를 선택하고;
    상기 선택된 페이지의 상기 라이트백 데이터를 압축함으로써
    압축을 수행하는, 메모리 시스템.
  6. 제 5 항에 있어서,
    상기 SPRKD는 상기 압축된 페이지를 상기 저속 메모리에 라이트백하는, 메모리 시스템.
  7. 방법에 있어서,
    소프트웨어 페이지 리맵핑 커널 드라이버(SPRKD)를 이용하여, 운영 체제에 의해 생성된 메모리 관리 명령을 인터셉트하는 단계;
    상기 SPRKD를 이용하여, 상기 운영 체제의 메모리 관리 명령을 실행하기 전에 메모리 스토리지의 고속 메모리 부로부터 상기 메모리 스토리지의 저속 메모리 부에 기록되는 데이터를 압축하는 단계와 상기 SPRKD를 이용하여, 상기 운영 체제의 메모리 관리 명령을 실행하기 전에 상기 저속 메모리 부로부터 상기 고속 메모리 부에 기록되는 데이터를 압축 해제하는 단계 중 적어도 하나;
    상기 SPRKD를 이용하여, 상기 저속 메모리 부에 기록되는 상기 압축된 데이터 또는 상기 고속 메모리 부에 기록되는 상기 압축 해제된 데이터 중 어느 하나를 전송하는 단계; 및
    제어기를 이용하여, 데이터의 압축 또는 압축 해제가 상기 운영 체제에 대해 투명하게 수행되도록 상기 SPRKD에 의해 전송한 후에 상기 메모리 관리 명령을 실행하는 단계
    를 포함하는, 방법.
  8. 제 7 항에 있어서,
    페이지 리맵핑 프로세스 중에 상기 압축 또는 압축 해제하는 단계들을 수행하는 단계를 더 포함하는, 방법.
  9. 제 7 항에 있어서,
    상기 압축 해제하는 단계는,
    상기 SPRKD를 이용하여, 상기 고속 메모리로 복제될 페이지를 상기 저속 메모리로부터 식별하는 단계;
    상기 SPRKD를 이용하여, 페이지가 상기 고속 메모리에서 이용 가능한지를 결정하는 단계; 및
    상기 SPRKD를 이용하여, 복제되도록 식별된 페이지를 압축 해제하는 단계를 더 포함하는, 방법.
  10. 제 10 항에 있어서,
    페이지가 상기 고속 메모리에서 이용 가능하지 않는 것으로 결정될 때, 상기 SPRKD를 이용하여, 상기 고속 메모리로부터 축출될 페이지를 선택하는 단계를 더 포함하는, 방법.
  11. 제 7 항에 있어서,
    상기 압축하는 단계는,
    상기 SPRKD를 이용하여, 라이트백 데이터를 포함하는 상기 고속 메모리로부터의 축출할 페이지를 선택하는 단계; 및
    상기 SPRKD를 이용하여, 상기 선택된 페이지의 상기 라이트백 데이터를 압축하는 단계를 더 포함하는, 방법.
  12. 제 11 항에 있어서,
    상기 압축된 페이지를 상기 저속 메모리에 라이트백하는 단계를 더 포함하는, 방법.
  13. 메모리 디바이스에 있어서,
    고속 메모리 부 및 저속 메모리 부를 포함하는 메모리 스토리지;
    상기 운영 체제에 의해 생성된 메모리 관리 명령을 인터셉트하고, 상기 운영 체제의 메모리 관리 명령을 실행하기 전에 상기 고속 메모리 부로부터 상기 저속 메모리 부에 기록되는 데이터를 압축하는 것과 상기 운영 체제의 메모리 관리 명령을 실행하기 전에 상기 저속 메모리 부로부터 상기 고속 메모리 부에 기록되는 데이터를 압축 해제하는 것 중 적어도 하나를 실행하며, 상기 저속 메모리 부에 기록되는 압축된 데이터 또는 상기 고속 메모리 부에 기록되는 압축 해제된 데이터 중 어느 하나를 전송하도록 구성된 소프트웨어 페이지 리맵핑 커널 드라이버(SPRKD); 및
    데이터의 압축 또는 압축 해제가 상기 운영 체제에 대해 투명하게 수행되도록 상기 SPRKD에 의해 전송한 후에 상기 메모리 관리 명령을 실행하도록 구성된 제어기
    를 포함하는, 메모리 디바이스.
  14. 제 13 항에 있어서,
    상기 SPRKD는 페이지 리맵핑 프로세스 중에 상기 압축 또는 압축 해제를 수행하도록 더 구성되는, 메모리 디바이스.
  15. 제 13 항에 있어서,
    상기 SPRKD는,
    상기 고속 메모리에 복제하기 위해 상기 저속 메모리로부터의 페이지를 식별하고;
    페이지가 상기 고속 메모리에서 이용 가능한지를 결정하며;
    복제되도록 식별된 페이지를 압축 해제함으로써
    압축 해제하도록 더 구성되는, 메모리 디바이스.
  16. 제 15 항에 있어서,
    상기 SPRKD는 페이지가 상기 고속 메모리에서 이용 가능하지 않는 것으로 결정할 때, 상기 SPRKD는 상기 고속 메모리로부터 축출할 페이지를 선택하도록 구성되는, 메모리 디바이스.
  17. 제 13 항에 있어서,
    상기 SPRKD는,
    라이트백 데이터를 포함하는 상기 고속 메모리로부터의 축출할 페이지를 선택하고;
    상기 선택된 페이지의 상기 라이트백 데이터를 압축함으로써
    압축하도록 더 구성되는, 메모리 디바이스.
  18. 제 17 항에 있어서,
    상기 SPRKD는 상기 압축된 페이지를 상기 저속 메모리에 라이트백하도록 더 구성되는, 메모리 디바이스.
KR1020170008817A 2016-01-19 2017-01-18 Os 및 애플리케이션 투명 메모리 압축 기술 KR20170087044A (ko)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US201662280430P 2016-01-19 2016-01-19
US62/280,430 2016-01-19
US201662311282P 2016-03-21 2016-03-21
US62/311,282 2016-03-21
US15/370,890 US20170206172A1 (en) 2016-01-19 2016-12-06 Tehcniques with os- and application- transparent memory compression
US15/370,858 US20170206033A1 (en) 2016-01-19 2016-12-06 Mechanism enabling the use of slow memory to achieve byte addressability and near-dram performance with page remapping scheme
US15/370,890 2016-12-06
US15/370,858 2016-12-06

Publications (1)

Publication Number Publication Date
KR20170087044A true KR20170087044A (ko) 2017-07-27

Family

ID=59315169

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170008817A KR20170087044A (ko) 2016-01-19 2017-01-18 Os 및 애플리케이션 투명 메모리 압축 기술

Country Status (3)

Country Link
US (1) US20170206172A1 (ko)
KR (1) KR20170087044A (ko)
CN (1) CN106990911A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200142447A (ko) * 2019-06-12 2020-12-22 삼성전자주식회사 메모리 시스템에서 읽기 포트들을 줄이고 압축 해제를 가속하는 방법

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11977484B2 (en) 2016-07-19 2024-05-07 Sap Se Adapting in-memory database in hybrid memory systems and operating system interface
US10698732B2 (en) 2016-07-19 2020-06-30 Sap Se Page ranking in operating system virtual pages in hybrid memory systems
US10437798B2 (en) 2016-07-19 2019-10-08 Sap Se Full system simulator and memory-aware splay tree for in-memory databases in hybrid memory systems
US10387127B2 (en) 2016-07-19 2019-08-20 Sap Se Detecting sequential access data and random access data for placement on hybrid main memory for in-memory databases
US10783146B2 (en) 2016-07-19 2020-09-22 Sap Se Join operations in hybrid main memory systems
US10474557B2 (en) 2016-07-19 2019-11-12 Sap Se Source code profiling for line-level latency and energy consumption estimation
US10452539B2 (en) * 2016-07-19 2019-10-22 Sap Se Simulator for enterprise-scale simulations on hybrid main memory systems
US10540098B2 (en) 2016-07-19 2020-01-21 Sap Se Workload-aware page management for in-memory databases in hybrid main memory systems
US10061698B2 (en) 2017-01-31 2018-08-28 Qualcomm Incorporated Reducing or avoiding buffering of evicted cache data from an uncompressed cache memory in a compression memory system when stalled write operations occur
US11010379B2 (en) 2017-08-15 2021-05-18 Sap Se Increasing performance of in-memory databases using re-ordered query execution plans
CN107622781B (zh) * 2017-10-12 2020-05-19 华中科技大学 一种提升三层忆阻器写性能的编解码方法
KR20190052366A (ko) * 2017-11-08 2019-05-16 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작방법
CN108255740A (zh) * 2017-12-07 2018-07-06 深圳市中易通安全芯科技有限公司 一种flash均衡擦写方法及系统
KR20190143073A (ko) * 2018-06-20 2019-12-30 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
CN110458277B (zh) * 2019-04-17 2021-11-16 上海酷芯微电子有限公司 适用于深度学习硬件加速器的可配置精度的卷积硬件结构
US11868273B2 (en) * 2019-06-29 2024-01-09 Intel Corporation Memory protection with hidden inline metadata to indicate data type
US11221770B2 (en) 2019-12-03 2022-01-11 International Business Machines Corporation Providing a dynamic random-access memory cache as second type memory
KR20210119070A (ko) * 2020-03-24 2021-10-05 에스케이하이닉스 주식회사 메모리 장치에서 연속으로 수행되는 다수의 커맨드 동작에 사용되는 파워값을 최소화하기 위해 수행시점 차이를 정확하게 조절할 수 있는 메모리 시스템 및 메모리 시스템의 동작방법
CN114356213B (zh) * 2021-11-29 2023-07-21 重庆邮电大学 一种numa架构下nvm磨损均衡的并行空间管理方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5696926A (en) * 1993-07-30 1997-12-09 Apple Computer, Inc. Method and apparatus for transparently compressing data in a primary storage device
US6564305B1 (en) * 2000-09-20 2003-05-13 Hewlett-Packard Development Company Lp Compressing memory management in a device
US6968424B1 (en) * 2002-08-07 2005-11-22 Nvidia Corporation Method and system for transparent compressed memory paging in a computer system
US7356651B2 (en) * 2004-01-30 2008-04-08 Piurata Technologies, Llc Data-aware cache state machine
US8180981B2 (en) * 2009-05-15 2012-05-15 Oracle America, Inc. Cache coherent support for flash in a memory hierarchy
US20150032945A1 (en) * 2012-01-29 2015-01-29 Thomson Licensing Method for flash compressed instruction caching for limited ram/flash device architectures
US9734548B2 (en) * 2012-10-26 2017-08-15 Nvidia Corporation Caching of adaptively sized cache tiles in a unified L2 cache with surface compression

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200142447A (ko) * 2019-06-12 2020-12-22 삼성전자주식회사 메모리 시스템에서 읽기 포트들을 줄이고 압축 해제를 가속하는 방법

Also Published As

Publication number Publication date
US20170206172A1 (en) 2017-07-20
CN106990911A (zh) 2017-07-28

Similar Documents

Publication Publication Date Title
US20170206172A1 (en) Tehcniques with os- and application- transparent memory compression
CN109800180B (zh) 用于地址映射的方法和存储器系统
US9507711B1 (en) Hierarchical FTL mapping optimized for workload
US20170206033A1 (en) Mechanism enabling the use of slow memory to achieve byte addressability and near-dram performance with page remapping scheme
CN107229577B (zh) 存储系统及其操作方法
CN107239228B (zh) 提高重建效率的存储器系统和操作方法
JP5649742B2 (ja) トランザクションログの復元
CN110825659B (zh) 用于检查存储器系统中的块中的有效数据的设备和方法
US10565124B2 (en) Memory system and method for controlling nonvolatile memory
CN110189775B (zh) 接口电路和具有该接口电路的存储装置
CN111581121B (zh) 用于管理存储器系统中的映射数据的方法和设备
US10896125B2 (en) Garbage collection methods and memory systems for hybrid address mapping
US11741013B2 (en) Prefetch buffer of memory sub-system
CN111435334B (zh) 在存储器系统中检查有效数据的设备和方法
CN110119326B (zh) 数据存储装置及其操作方法
CN113590503B (zh) 一种非挥发性记忆体存储器的垃圾回收方法与垃圾回收系统
CN109426448B (zh) 存储器系统及其操作方法
US20190205249A1 (en) Controller, operating method thereof and data processing system including the controller
KR102406449B1 (ko) 스토리지 장치 및 그 동작 방법
CN113934666A (zh) 数据接口桥的预取
CN109254722B (zh) 控制器及其操作方法
US11422889B2 (en) Memory system and controller for storing map data of volatile memory into nonvolatile memory device during power off operation
CN112860182B (zh) 用于写回合并的位屏蔽有效扇区
US11360893B2 (en) Apparatus and method for managing firmware through runtime overlay
US20200310873A1 (en) Controller and memory system including the same