KR20200021878A - 메모리 내부 연산을 위한 대용량 메모리 시스템을 가능하게 하는 스케일 가능한 아키텍쳐 - Google Patents
메모리 내부 연산을 위한 대용량 메모리 시스템을 가능하게 하는 스케일 가능한 아키텍쳐 Download PDFInfo
- Publication number
- KR20200021878A KR20200021878A KR1020190083463A KR20190083463A KR20200021878A KR 20200021878 A KR20200021878 A KR 20200021878A KR 1020190083463 A KR1020190083463 A KR 1020190083463A KR 20190083463 A KR20190083463 A KR 20190083463A KR 20200021878 A KR20200021878 A KR 20200021878A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- bits
- write
- predetermined number
- memory
- Prior art date
Links
- 238000005192 partition Methods 0.000 claims abstract description 44
- 238000013519 translation Methods 0.000 claims description 32
- 238000000034 method Methods 0.000 claims description 26
- 238000006243 chemical reaction Methods 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 7
- 230000008030 elimination Effects 0.000 claims description 3
- 238000003379 elimination reaction Methods 0.000 claims description 3
- 239000000872 buffer Substances 0.000 description 10
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 102100037904 CD9 antigen Human genes 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 108010066052 multidrug resistance-associated protein 1 Proteins 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Images
Classifications
-
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- 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/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0662—Virtualisation aspects
-
- 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/0662—Virtualisation aspects
- G06F3/0667—Virtualisation aspects at data level, e.g. file, record or object virtualisation
-
- 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
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
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)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Hardware Redundancy (AREA)
Abstract
메모리 시스템은 적어도 하나의 시스템 파티션(system partition)을 포함하고, 적어도 하나의 시스템 파티션은 제1 미리 정해진 크기의 물리적 메모리 공간을 포함하는 물리적 메모리; 호스트 시스템으로부터 데이터 쓰기 요청들 및 대응하는 데이터를 수신하고, 트랜잭션 테이블을 사용하여 호스트 시스템의 가상 메모리 공간에 대한 데이터 일관성(data coherency) 및 데이터 동시성(data consistency)를 유지하는 적어도 하나의 트랜잭션 관리자(TM; transaction manager); 적어도 하나의 커맨드 큐를 포함하고, 아웃스탠딩 버킷 넘버(OBN; outstanding bucket number) 및 적어도 하나의 커맨드 큐를 사용하여 물리적 메모리 공간에 대한 데이터 일관성 및 데이터 동시성을 유지하고, TM으로부터 데이터 쓰기 요청들을 수신하고 데이터 쓰기 요청들 각각에 대응하는 쓰기 커맨드를 적어도 하나의 커맨드 큐 중 선택된 커맨드 큐로 전송하는 적어도 하나의 쓰기 데이터 엔진 관리자(WDEM; write data engine manager); 및 적어도 하나의 커맨드 큐 각각에 대응하고, 데이터 쓰기 요청에 대응하는 데이터가 가상 메모리 공간에 복제되지 않은 경우, 데이터를 오버플로우 메모리 영역에 저장함으로써 대응하는 커맨드 큐에 저장된 쓰기 커맨드에 응답하거나, 또는 데이터가 가상 메모리 공간에 복제된 경우, 데이터에 대한 기준 카운터를 증가시키는 쓰기 데이터 엔진(WDE; write data engine)을 포함한다.
Description
본 발명은 메모리 시스템들에 관한 것이다. 더욱 상세하게는, 본 발명은 호스트 시스템의 가상 메모리 공간에 복제된 사용자 데이터에 대하여 물리 메모리 공간에서 사용자 데이터의 중복 제거(deduplication)을 제공하는 메모리 시스템들에 관한 것이다.
인공 지능(AI; Artificial Intelligence), 빅 데이터, 및 인-메모리 프로세싱은 점점 더 큰 메모리 용량들을 사용한다. 이러한 요구를 만족시키기 위하여, 인-메모리 복제 제거 시스템들(dedupe-DRAM)이 개발되고 있다. 불행히도, 종래의 복제 제거 시스템들(dedupe system)은 일부 문제점들을 갖는다. 예를 들어, 복제 제거 변환 테이블(deduplication translation table)은 가상 메모리의 크기의 증가에 따라 비선형적으로 증가할 수 있다. 더욱이, 복제 제거 동작들은 일반적으로 읽기 및 쓰기 레이턴시들의 일부 증가를 일으킨다. 즉, 단일 논리적 읽기 또는 쓰기는 복수의 물리적 읽기들 또는 쓰기들을 필요로 할 수 있고, 이에 따라 성능이 저하될 수 있다.
본 발명의 목적은 향상된 성능을 갖는 메모리 내부 연산을 위한 대용량 메모리 시스템을 가능하게 하는 스케일 가능한 아키텍쳐를 제공하는데 있다.
예시적인 실시 예는 물리적 메모리, 적어도 하나의 트랜잭션 관리자(TM; transaction manager), 적어도 하나의 쓰기 데이터 엔진 관리자(WDEM; write data engine manger), 및 쓰기 데이터 엔진(WDE; write data engine)을 포함할 수 있는 적어도 하나의 시스템 파티션을 포함할 수 있는 메모리 시스템을 제공한다. 상기 물리적 메모리는 제1 미리 정해진 크기를 포함할 수 있다. 상기 적어도 하나의 TM은 호스트 시스템으로부터 데이터 쓰기 요청들 및 대응하는 데이터를 수신할 수 있고, 상기 적어도 하나의 TM은 트랜잭션 테이블을 사용하여 상기 호스트 시스템의 가상 메모리 공간에 대한 데이터 일관성(data coherency and data consistency)을 유지할 수 있다. 상기 적어도 하나의 WDEM은 적어도 하나의 커맨드 큐를 포함할 수 있고, 상기 WDEM은 아웃스탠딩 버킷 넘버(OBN; outstanding bucket number) 및 커맨드 큐들을 사용하여 상기 물리적 메모리 공간에 대한 데이터 일관성(data coherency and data consistency) 을 유지할 수 있다. 상기 WDEM은 상기 TM으로부터 상기 데이터 쓰기 요청들을 수신하고, 상기 적어도 하나의 커맨드 큐 중 선택된 커맨드 큐로 각 데이터 쓰기 요청에 대응하는 쓰기 커맨드를 전송할 수 있다. 상기 WDE는 각 커맨드 큐에 대응할 수 있다. 상기 WDE는, 상기 데이터 쓰기 요청에 대응하는 상기 데이터가 상기 가상 메모리 공간에 복제되지 않은 경우 상기 데이터를 오버플로우 메모리 영역에 저장함으로써 상기 WDE에 대응하는 상기 커맨드 큐에 저장된 쓰기 커맨드에 응답하거나 또는 거나 또는 상기 데이터 쓰기 요청에 대응하는 상기 데이터가 상기 가상 메모리 공간에 저장된 경우 상기 데이터에 대한 기준 카운트를 증가시킬 수 있다. 일 실시 예에서, 상기 가상 메모리 공간은 상기 물리적 메모리 공간의 상기 제1 미리 정해진 메모리 크기보다 크거나 같은 제2 미리 정해진 크기를 포함할 수 있고, 상기 메모리 시스템은 상기 가상 메모리 공간의 상기 제2 미리 정해진 크기와 대응하는 제1 미리 정해진 개수의 비트들, 상기 물리적 메모리의 상기 제1 미리 정해진 크기와 대응하는 제2 미리 정해진 개수의 비트들, 및 데이터 단위에 대한 제3 미리 정해진 개수의 비트들을 포함할 수 있고, 상기 제2 미리 정해진 개수의 비트들 및 상기 제3 미리 정해진 개수의 비트들은 상기 제1 미리 정해진 개수의 비트들의 부분들일 수 있다.
예시적인 실시 예는 복수의 시스템 파티션들을 포함할 수 있고, 적어도 하나의 시스템 파티션은, 물리적 메모리, 적어도 하나의 트랜잭션 관리자(TM; transaction manager), 적어도 하나의 쓰기 데이터 엔진 관리자(WDEM; write data engine manager), 및 쓰기 데이터 엔진(WDE; write data engine), 및 메모리 영역 관리자(MRM; memory regional manager)를 포함할 수 있다. 상기 물리적 메모리는 제1 미리 정해진 크기의 물리적 메모리 공간을 포함할 수 있고, 복수의 메모리 영역들을 포함할 수 있다. 상기 적어도 하나의 TM은 호스트 시스템으로부터 데이터 쓰기 요청들 및 대응하는 데이터를 수신할 수 있고, 상기 적어도 하나의 TM은 트랜잭션 테이블을 사용하여 상기 호스트 시스템의 가상 메모리 공간에 대한 데이터 일관성(data coherency and data consistency)을 유지할 수 있다. 상기 가상 메모리 공간은 상기 물리적 메모리 공간의 상기 제1 미리 정해진 크기보다 크거나 같은 제2 미리 정해진 크기를 포함할 수 있다. 상기 적어도 하나의 TM은 변환 테이블을 사용하여 상기 호스트 시스템의 상기 가상 메모리 공간을 상기 적어도 하나의 시스템 파티션의 상기 물리적 메모리 공간으로 변환할 수 있다. 상기 적어도 하나의 WDEM은 적어도 하나의 커맨드 큐를 포함할 수 있고, 상기 WDEM은 아웃스탠딩 버킷 넘버(OBN; outstanding bucket number) 및 커맨드 큐들을 사용하여 상기 물리적 메모리 공간에 대한 데이터 일관성(data coherency and data consistency) 을 유지할 수 있다. 상기 WDEM은 상기 TM으로부터 상기 데이터 쓰기 요청들을 수신하고, 상기 적어도 하나의 커맨드 큐 중 선택된 커맨드 큐로 각 데이터 쓰기 요청에 대응하는 쓰기 커맨드를 전송할 수 있다. 상기 WDE는 각 커맨드 큐에 대응할 수 있고, 상기 WDE는 상기 쓰기 요청에 대응하는 상기 데이터가 상기 가상 메모리 공간에 복제되지 않은 경우, 오버플로우 영역에 상기 데이터를 저장하거나 또는 데이터 쓰기 요청에 대응하는 상기 데이터가 상기 가상 메모리 공간에 복제된 경우 상기 데이터에 대한 기준 카운터를 증가시킴으로써, 상기 WDE에 대응하는 상기 커맨드 큐에 저장된 쓰기 커맨드에 응답할 수 있다. 일 실시 예에서, 상기 변환 테이블은 상기 가상 메모리 공간의 상기 제2 미리 정해진 크기에 대응하는 제1 미리 정해진 개수의 비트들, 상기 물리적 메모리의 상기 제1 미리 정해진 크기에 대응하는 제2 미리 정해진 개수의 비트들, 및 데이터 단위에 대한 제3 미리 정해진 개수의 비트들을 포함할 수 있고, 상기 제2 미리 정해진 개수의 비트들 및 상기 제3 미리 정해진 개수의 비트들은 상기 제1 미리 정해진 개수의 비트들의 부분들일 수 있다.
예시적인 실시 예는 복수의 시스템 파티션들을 포함할 수 있는 복제 제거 시스템을 제공한다. 적어도 하나의 시스템 파티션은 물리적 메모리, 적어도 하나의 트랜잭션 관리자(TM; transaction manager), 적어도 하나의 쓰기 데이터 엔진 관리자(WDEM; write data engine manager), 및 쓰기 데이터 엔진(WDE; write data engine)을 포함할 수 있다. 상기 물리적 메모리는 제1 미리 정해진 크기의 물리적 메모리 공간을 포함할 수 있다. 상기 적어도 하나의 TM은 호스트 시스템으로부터 데이터 쓰기 요청들 및 대응하는 데이터를 수신할 수 있고, 상기 적어도 하나의 TM은 트랜잭션 테이블을 사용하여 상기 호스트 시스템의 가상 메모리 공간에 대한 데이터 일관성(data coherency and data consistency)을 유지할 수 있다. 상기 가상 메모리 공간은 상기 물리적 메모리 공간의 상기 제1 미리 정해진 크기보다 크거나 같은 제2 미리 정해진 크기를 포함할 수 있다. 상기 적어도 하나의 TM은 변환 테이블을 사용하여 상기 호스트 시스템의 상기 가상 메모리 공간을 상기 적어도 하나의 시스템 파티션의 상기 물리적 메모리 공간으로 변환할 수 있고, 상기 변환 테이블은 상기 가상 메모리 공간의 상기 제2 미리 정해진 크기에 대응하는 제1 미리 정해진 개수의 비트들, 상기 물리적 메모리의 상기 제1 미리 정해진 크기에 대응하는 제2 미리 정해진 개수의 비트들, 및 데이터 단위에 대한 제3 미리 정해진 개수의 비트들을 포함할 수 있고, 상기 제2 미리 정해진 개수의 비트들 및 상기 제3 미리 정해진 개수의 비트들은 상기 제1 미리 정해진 개수의 비트들의 부분들일 수 있다. 상기 적어도 하나의 WDEM은 적어도 하나의 커맨드 큐를 포함할 수 있고, 상기 WDEM은 아웃스탠딩 버킷 넘버(OBN; outstanding bucket number) 및 커맨드 큐들을 사용하여 상기 물리적 메모리 공간에 대한 데이터 일관성(data coherency and data consistency) 을 유지할 수 있다. 상기 WDEM은 상기 TM으로부터 상기 데이터 쓰기 요청들을 수신할 수 있고, 상기 적어도 하나의 커맨드 큐 중 선택된 커맨드 큐로 각 데이터 쓰기 요청에 대응하는 쓰기 커맨드를 전송할 수 있다. 상기 WDE는 상기 쓰기 요청에 대응하는 상기 데이터가 상기 가상 메모리 공간에 복제되지 않은 경우, 오버플로우 영역에 상기 데이터를 저장하거나 또는 데이터 쓰기 요청에 대응하는 상기 데이터가 상기 가상 메모리 공간에 복제된 경우 상기 데이터에 대한 기준 카운터를 증가시킴으로써, 상기 WDE에 대응하는 상기 커맨드 큐에 저장된 쓰기 커맨드에 응답할 수 있다.
본 발명의 실시 예들에 따르면, 향상된 성능을 갖는 메모리 내부 연산을 위한 대용량 메모리 시스템을 가능하게 하는 스케일 가능한 아키텍쳐가 제공된다.
이하의 섹션에서, 본문에 기재된 내용의 사상들이 도면에 도시된 예시적인 실시 예들을 참조하여 설명될 것이다.
도 1은 본 발명의 실시 예에 따른 스케일 가능한 복제 제거 메모리 시스템의 예시적인 실시 예의 블록도를 보여준다.
도 2는 본 발명의 실시 예에 따른 도 1에 도시된 시스템 파티션의 예시적인 실시 예의 좀 더 상세한 블록도를 보여준다.
도 3은 본 발명의 실시 예에 따른 시스템의 쓰기 데이터 경로의 다양한 구성들의 예시적인 실시 예의 다른 블록도를 보여준다.
도 4는 본 발명의 실시 예에 따라, 변환 테이블에 의해 사용되어 호스트 시스템의 가상 메모리 공간을 시스템의 가상 메모리 공간으로 변환할 수 있는, 도 1의 복제 제거 메모리 시스템에 대한 가상 메모리 공간 및 물리적 메모리 공간의 관계의 예시적인 실시 예의 일부 상세도를 보여준다.
도 5는 본 발명의 실시 예에 따른 예시적인 변환 테이블의 변환 테이블 엔트리들 및 예시적인 해시 테이블의 해시 테이블 엔트리들 사이의 관계를 보여준다.
도 6은 본 발명의 실시 예에 따라 트랜잭션 관리자에 의해 제공되는 예시적인 제어 프로세스의 흐름도를 보여준다.
도 7은 본 발명의 실시 예에 따라 쓰기 데이터 엔진 관리자에 의해 제공되는 예시적인 제어 프로세스의 흐름도를 보여준다.
도 8은 본 발명의 실시 예에 따라 쓰기 데이터 엔진에 의해 제공되는 예시적인 제어 프로세스의 흐름도를 보여준다.
도 9a는 본 발명의 실시 예에 따른 내장된 기준 카운터를 포함하는 복원 필드를 포함하는 물리적 라인의 예시적인 실시 예를 보여준다.
도 9b는 본 발명의 실시 예에 따른 지시자 플래그를 포함하는 물리적 라인의 예시적인 실시 예를 보여준다.
도 9c는 복원 필드의 컨텐츠가 복제된 사용자 데이터의 확장된 카운터를 포함하는 확장된 기준 카운터 테이블로의 인덱스를 포함하는 경우에서, 지시자 플래그가 사용자 데이터의 복제된 횟수가 복원 필드내의 내장된 기준 카운터의 크기를 초과하는 것을 가리키도록 설정된 상황을 보여준다.
도 1은 본 발명의 실시 예에 따른 스케일 가능한 복제 제거 메모리 시스템의 예시적인 실시 예의 블록도를 보여준다.
도 2는 본 발명의 실시 예에 따른 도 1에 도시된 시스템 파티션의 예시적인 실시 예의 좀 더 상세한 블록도를 보여준다.
도 3은 본 발명의 실시 예에 따른 시스템의 쓰기 데이터 경로의 다양한 구성들의 예시적인 실시 예의 다른 블록도를 보여준다.
도 4는 본 발명의 실시 예에 따라, 변환 테이블에 의해 사용되어 호스트 시스템의 가상 메모리 공간을 시스템의 가상 메모리 공간으로 변환할 수 있는, 도 1의 복제 제거 메모리 시스템에 대한 가상 메모리 공간 및 물리적 메모리 공간의 관계의 예시적인 실시 예의 일부 상세도를 보여준다.
도 5는 본 발명의 실시 예에 따른 예시적인 변환 테이블의 변환 테이블 엔트리들 및 예시적인 해시 테이블의 해시 테이블 엔트리들 사이의 관계를 보여준다.
도 6은 본 발명의 실시 예에 따라 트랜잭션 관리자에 의해 제공되는 예시적인 제어 프로세스의 흐름도를 보여준다.
도 7은 본 발명의 실시 예에 따라 쓰기 데이터 엔진 관리자에 의해 제공되는 예시적인 제어 프로세스의 흐름도를 보여준다.
도 8은 본 발명의 실시 예에 따라 쓰기 데이터 엔진에 의해 제공되는 예시적인 제어 프로세스의 흐름도를 보여준다.
도 9a는 본 발명의 실시 예에 따른 내장된 기준 카운터를 포함하는 복원 필드를 포함하는 물리적 라인의 예시적인 실시 예를 보여준다.
도 9b는 본 발명의 실시 예에 따른 지시자 플래그를 포함하는 물리적 라인의 예시적인 실시 예를 보여준다.
도 9c는 복원 필드의 컨텐츠가 복제된 사용자 데이터의 확장된 카운터를 포함하는 확장된 기준 카운터 테이블로의 인덱스를 포함하는 경우에서, 지시자 플래그가 사용자 데이터의 복제된 횟수가 복원 필드내의 내장된 기준 카운터의 크기를 초과하는 것을 가리키도록 설정된 상황을 보여준다.
이하의 상세한 설명에서, 다양한 상세한 설명들은 본 발명의 전반적인 이해를 제공하기 위하여 기술된다. 그러나 본문의 상세한 설명 없이 본 발명의 사상이 당업자에 의해 실시될 수 있음이 이해될 것이다. 다른 예들에서, 잘-알려진 방법들, 절차들, 구성들, 및 회로들은 본 발명의 실시 예들을 모호하게 하지 않기 위하여 기재되지 않는다. 더욱이, 기재된 사상들은 스마트폰, 사용자 장치(UE; User Equipment), 및/또는 랩탑 컴퓨터를 포함하나 이에 한정되지 않는 이미징 장치 또는 시스템에서, 저-전력, 3D-심도 측정들을 수행하도록 구현될 수 있다.
상세한 설명 전반에 걸친 "일 실시 예(one embodiment)"의 용어는 실시 예와 연관된 특정 특징(feature), 구조(structure), 또는 특성(characteristic)이 본문에 기재된 적어도 하나의 실시 예에 포함될 수 있음을 의미한다. 즉, 상세한 설명의 다양한 부분들에서 "일 실시 예에서(in one embodiment)" 또는 "일 실시 예에 따라(according to one embodiment)" (또는 유사한 의미를 갖는 다른 표현)의 표현이 기재된 것은 필수적으로 동일한 실시 예를 참지 않을 수 있다. 더욱이, 특정 특징들, 구조들, 또는 특성들은 하나 또는 그 이상의 실시 예들에서, 적절한 방식으로 조합될 수 있다. 이에 대하여, 본문에서 사용되는 바와 같이, "예시적인(exemplary)"의 단어는 예(example), 사례(instance), 또는 도시 예(illustration)로서 제공하는 것"을 의미한다. "예시적인(exemplary)"로서 본문에 기재된 일부 실시 예는 다른 실시 예들보다 반드시 바람직하거나 또는 유리한 것으로 해석되지 않는다. 더욱이, 특정 특징들, 구조들, 또는 특성들은 하나 또는 그 이상의 실시 예들에서 적절한 방식으로 조합될 수 있다. 또한, 본문에 기재된 맥락에 따라, 단수 용어는 대응하는 복수 형태들을 포함할 수 있고, 복수 용어는 대응하는 산수 형태를 포함할 수 있다. 유사하게, 하이픈으로 연결된 용어(예를 들어, "2-차원(two-dimensional)," "미리-정해진(pre-determined)," "픽셀-특정(pixel-specific)," 등)은 하이픈으로 연결되지 않는 대응하는 버전(예를 들어, "2 차원(two dimensional)," "미리 정해진(predetermined)," "픽셀 특정(pixel specific)," 등)으로 교대하여 가끔 사용될 수 있고, 영문 대문자 용어(예를 들어, "Counter Clock," "Row Select," "PIXOUT," 등)은 대응하는 비-영문 대문자 용어(예를 들어, "counter clock," "row selector," "pixout," 등)으로 교대하여 가끔 사용될 수 있다. 이러한 교체할 수 있는 사용들은 서로 모순되는 것으로 간주되어서는 안 된다.
또한, 본문에 기재된 내용의 맥락에 따라, 단수 용어는 대응하는 복수 형태들을 포함할 수 있고, 복수 용어는 대응하는 단수 형태를 포함할 수 있다. 본문에 도시되고 언급되는 다양한 도면들(구성 도면들을 포함함)은 오직 도시의 편의를 위한 것이며, 계측되어 도시되지 않는다. 유사하게, 다양한 파형들 및 타이밍도들은 오직 도시의 편의를 위해 도시된다. 예를 들어, 요소들의 일수의 치수는 명확성을 위해 다른 요소들과 비교하여 과장될 수 있다. 더욱이, 적절하게 고려되는 경우, 참조 번호들은 대응하는 및/또는 유사한 요소들을 나타내기 위해 도면들에서 반복된다.
본문에서 사용되는 용어들은 일부 실시 예들을 설명하는 목적을 위한 것이며, 본 발명이 이에 한정되는 것으로 의도되지 않는다. 본문에서 사용되는 바와 같이, 맥락에서 명확히 다르게 지칭되지 않는 한, 단수 용어들은 복수의 형태들을 포함하는 것으로 의도된다. "포함하다(comprises, comprising)"의 용어들은, 본문에서 사용될 때, 열거된 특징들(features), 정수들(integers), 단계들(steps), 동작들(operations), 요소들(elements), 및/또는 구성들(components)의 존재를 가리키나, 하나 또는 그 이상의 다른 특징들, 정수들, 단계들, 동작들, 요소들, 구성들, 및/또는 그것들의 그룹들의 존재 또는 추가를 불가능하게 하지 않는다. 본문에서 사용되는 바와 같이, "제1(first)," "제2(second)" 등의 용어들은 그것들에 앞선 명사들에 대한 라벨로서 사용되며, 명시적으로 정의되지 않는 한, 어떤 타입의 순서(예를 들어, 공간적(spatial), 시간적(temporal), 논리적(logical) 등)를 암시하지 않는다. 더욱이, 동일한 참조 번호들은 둘 또는 그 이상의 도면들에서 사용되어, 동일한거나 또는 유사한 기능을 갖는 부분들, 구성들, 블록들, 회로들, 유닛들, 또는 모듈들을 지칭할 수 있다. 그러나 이러한 사용은 도면의 간결성 및 설명의 편의를 위한 것이며, 이러한 구성들 또는 유닛들의 구성적이거나 또는 구조적인 세부 사항들이 모든 실시 예들에서 동일하거나 또는 공통적으로 참조되는 부분들/모듈들이 본문에 기재된 일부 예시적인 실시 예들을 구현하는 유일한 방법임을 암시하지 않는다.
요소 또는 계층이 다른 요소 또는 계층과 연결(connected 또는 coupled)되는 것으로 지칭될 경우, 그것은 다른 요소 또는 계층과 직접적으로(directly) 연결되거나 또는 중간 요소들 또는 계층들이 존재할 수 있다. 이와 반대로, 요소가 다른 요소 또는 계층과 직접적으로 연결되는 것으로 지칭되는 경우, 중간 요소들 또는 계층들이 존재하지 않는다. 유사한 참조 번호들은 전체적으로 유사한 요소들을 지칭한다. 본문에서 사용되는 바와 같이, "및/또는(and/or)"의 용어는 하나 또는 그 이상의 연관되어 열거된 아이템들의 모든 조합들을 포함한다.
다르게 정의되지 않는 한, 본문에서 사용되는 모든 용어들(기술적 또는 과학적 용어들을 포함함)은 본 발명이 속하는 기술 분야에서의 통상의 기술자에 의해 공통적으로 이해되는 바와 같이 동일한 의미를 갖는다. 공용 사전들에서 정의되는 용어들과 같은 용어들은 연관된 기술 분야의 맥락에서의 그것들의 의미와 동일한 의미를 갖는 것으로 해석되며, 본문에서 명시적으로 정의되지 않는 한 이상적이거나 또는 과도하게 형식적인 의미로 해석되지 않을 것이다.
본문에서 사용되는 바와 같이, "모듈(module)"의 용어는 모듈과 연관되어 본문에서 설명된 기능을 제공하도록 구성된 소프트웨어, 펌웨어, 및/또는 하드웨어의 어떤 조합을 지칭한다. 소프트웨어는 소프트웨어 패키지, 코드, 및/또는 명령어 세트 또는 명령어들로 구현될 수 있고, 본문에서 기재된 어떤 구현에서 사용되는 바와 같은 "하드웨어(hardware)"의 용어는, 예를 들어, 고정 배선 회로(hardwired circuitry), 프로그램 가능한 회로(programmable circuirity), 상태 머신 회로(state machine circuirity), 및 또는 프로그램 가능한 회로에 의해 실행되는 명령어들을 저장하는 펌웨어 중 하나 또는 그것들의 조합을 포함할 수 있다. 모듈들은 집적 회로(IC; integrated circuit), 시스템-온-칩(SoC; system on-chip) 등과 같은, 그러나 이에 한정되지 않는 더 큰 시스템의 일부를 형성하는 회로로서 종합적으로 또는 개별적으로 구현될 수 있다. 본문에 기재된 다양한 구성들 및/또는 기능 블록들은 다양한 구성들 및/또는 기능 블록들과 연관되어 본문에서 기재된 기능을 제공하는 소프트웨어, 펌웨어, 및/또는 하드웨어를 포함할 수 있는 모듈로서 구현될 수 있다.
본문에 기재된 내용은 시스템의 가상 메모리 크기가 증가함에 따라 크기 면에서 비-선형적으로 증가하지 않는 변환 테이블을 포함하는 대형 복제 제거 메모리 시스템 아키텍쳐(large-scale deduplication memory system architecture)를 제공한다. 일 실시 예에서, 본문에 기재된 메모리 시스템 아키텍쳐는 복수의 시스템 파티션들을 포함하고, 복수의 시스템 파티션들 각각내의 기능은 병렬화되어 높은 처리량 및 낮은 레이턴시를 제공할 수 있다.
일 실시 예에서, 시스템 파티션은 호스트 메모리 시스템의 가상 메모리 공간을 관리하도록 구성될 수 있고, 가상 메모리 공간에 대한 동시성(concurrency) 및 일관성(coherency)을 제공하는 하나 또는 그 이상의 트랜잭션 관리자들(transaction managers)을 포함할 수 있다. 더욱이, 각 트랜잭션 매니저는 복수의 미처리 트랜잭션들(multiple outstanding transactions)을 지원할 수 있고, 각각이 복수의 미처리 트랜잭션들을 포함하는 복수의 쓰레드들을 지원할 수 있다.
시스템 파티션은 시스템 파티션의 물리적 메모리 공간을 관리하도록 구성된 하나 또는 그 이상의 데이터 엔진 관리자들(data engine managers)을 포함할 수 있다. 데이터 엔진 관리자는 복수의 병렬 데이터 엔진들을 관리하도록 구성될 수 있다. 복수의 데이터 엔진들은 시스템 파티션의 복수의 직교 메모리 영역들(orthogonal memory regions)에 대한 메모리 어드레스 인터리빙을 수행하여 처리량(throughput)을 향상시킬 수 있다. q복수의 메모리 영역들에 대하여 본문에서 사용되는 바와 같이, "직교(orthogonal)"의 용어는 임의의 데이터 엔진이라도 시스템 파티션의 임의의 메모리 영역을 액세스할 수 있음을 가리킨다. 예를 들어, 쓰기 액세스에 대하여, 메모리 쓰기 충돌은 데이터가 쓰기 데이터 엔진(WDE; Write Data Engine)에 도착하기 전에, 쓰기 데이터 엔진 관리자(WDEM; Write Data Engine Manage)에 의해 관리된다. 데이터가 WDE에 도착한 이후에, 메모리 액세스 충돌들은 제거된다. 읽기 액세스에 대하여, 읽기 데이터 엔진(RDE; Read Data Engine)은 메모리 액세스 충돌을 갖지 않으며, 제한 없이 임의의 메모리 영역을 액세스할 수 있다. 메모리 영역 관리자(Memory Regional Manager)는 다른 복제 제거 메모리 영역들과 같은, 애플리케이션과 연관된 메모리 영역들을 관리한다. 즉, 물리적 메모리 충돌은 WDEM에 의해 "직교적으로(orthogonally)"으로 제거된다.
본문에 기재된 메모리 시스템 구조는 시스템의 물리적 메모리에 저장된 사용자 데이터에 내장될 수 있고 메모리 시스템에 의해 사용되는 메모리의 크기를 감소시킬 수 있는 기준 카운터(RC; reference counter)를 제공한다. 일 실시 예에서, 기준 카운터는, 기준 카운터가 내장된 사용자 데이터가 시스템의 가상 메모리 공간에 복제되는 횟수의 지시(indication)를 제공한다. 일 실시 예에서, 사용자 데이터에 기준 카운터를 내장하는 것은 64 바이트의 사용자 데이터 단위에 대하여 시스템 메모리 요구를 약 6%만큼 감소시킬 수 있다. 다른 실시 예에서, 사용자 데이터에 기준 카운터를 내장하는 것은 32 바이트의 사용자 데이터 단위에 대하여 시스템 메모리 요구를 약 12%만큼 감소시킬 수 있다.
사용자 데이터가 시스템의 가상 메모리에 복제될 수 있는 횟수가 미리 정해진 횟수보다 크거나 같은 다른 실시 예에서, 기준 카운터를 위해 사용되는 필드는 확장된 기준 카운터 테이블로 또는 특정 데이터 패턴 테이블로 인덱스를 제공하는 필드로 교체될 수 있다. 또 다른 실시 예에서, 시스템에 의해 사용되는 변환 테이블은 사용자 데이터가 시스템의 가상 메모리 공간에 복제된 횟수가 미리 정해진 횟수보다 크거나 같은 경우 특정 데이터 패턴 테이블로의 포인터 또는 인덱스를 포함하는 엔트리를 포함할 수 있으며, 이에 따라 레이턴시가 감소되고 처리량이 증가될 수 있다. 변환 테이블에 포인터 또는 인덱스를 위치시킴으로써, 변환 테이블이 액세스될 경우, 가상 메모리 공간에 자주 복제되는 사용자 데이터가 자동으로 검출될 수 있다. 더욱이, 이러한 자주 복제되는 사용자 데이터는 변환 테이블의 이러한 구성에 의해 제공되는 자동 검출을 통해 좀 더 쉽게 분석될 수 있다.
도 1은 본 발명의 실시 예에 따른 스케일 가능한 복제 제거 메모리 시스템 아키텍쳐(100)의 예시적인 실시 예의 블록도이다. 시스템 아키텍쳐(100)는 하나 또는 그 이상의 장치들 또는 시스템들(101), 호스트 인터페이스(102), 전단 스케쥴러(103)(front-end scheduler), 및 복수의 시스템 파티션들(200A~200K)을 포함할 수 있다. 호스트 시스템(101)은 호스트 인터페이스(102)와 통신적으로 연결될 수 있고, 호스트 인터페이스(102)는 전단 스케쥴러(103)와 통신적으로 연결될 수 있다. 호스트 인터페이스(102)는 하나 또는 그 이상의 직접 메모리 액새스(DMA; direct memory access) 장치들(DMA0~DMAH-1)을 포함할 수 있다. 전단 스케쥴러(103)는 복수의 시스템 파티션들(200A~200K) 각각과 통신적으로 연결될 수 있다. 호스트 시스템(101), 호스트 인터페이스(102), 및 전단 스케쥴러(103)는 잘-알려진 방식으로 동작할 수 있다.
시스템 파티션(200)은 쓰기 데이터 경로(201) 및 읽기 데이터 경로(202)를 포함할 수 있다. 쓰기 데이터 경로(201)는 트랜잭션 관리자(203)(TM; transaction manager), 쓰기 데이터 엔진(WDE) 관리자(204(WDEM), 하나 또는 그 이상의 메모리 영역 관리자들(207)(MRMs; memory regional managers), 및 하나 또는 그 이상의 메모리 영역들(209)(MRs; memory regions)을 포함할 수 있다. 일 실시 예에서, 쓰기 데이터 경로(201)는 TM(203)을 포함할 수 있다. 일 실시 예에서, 파티션 당 하나의 TM(203) 및 하나의 WDEM(204)이 존재할 수 있다. MR들(209)은 메모리 컨트롤러(MEM CNTRLR) 및 DIMM(dual in-line memory module)을 포함하는 것으로 도 1에서 도시된다. 다른 실시 예에들에서, MR들(209)에 대한 균등물을 포함할 수 있다. MR들(209)의 메모리는 동적 랜덤 액세스 메모리(DRAM; dynamic random access memory), 정적 랜덤 액세스 메모리(SRAM; static random access memory), 휘발성 메모리, 및/또는 불휘발성 메모리를 포함할 수 있으나, 이에 한정되지 않는다.
쓰기 데이터 경로(201)와 비교하여, 읽기 데이터 경로(202)는, 읽기 데이터 경로와 연관된 데이터 데이터 일관성(data coherency or data consistency) 이 없기 때문에, 상대적으로 간단할 수 있다. 도 1 및 도 2에 도시된 바와 같이, 읽기 데이터 경로(202)는 하나 또는 그 이상의 MR들(209), 하나 또는 그 이상의 MRM들(207)(도 1), 읽기 데이터 엔진(RDE) 관리자(212)(RDEM), 및 하나 또는 그 이상의 RDE들(213)을 포함할 수 있다. 호스트 시스템(101)으로부터 수신된 데이터 읽기 요청은 변환 테이블(도 4)을 포함할 수 있고, 데이터 읽기 액세스에 응답하여, 적절한 메모리 영역(들)로 액세스하여 읽기 데이터 경로(202)를 통해 요청된 읽기 데이터를 제공할 수 있다.
도 2는 본 발명의 실시 예에 따른 도 1의 시스템 파티션(200)의 예시적인 실시 예의 좀 더 상세한 블록도를 보여준다. 시스템 파티션(200)의 아키텍쳐는 복수의 트랜잭션들 및 복수의 쓰레드들 (및 그것들의 복수의 트랜잭션들)이 높은 처리량을 제공하는 방식으로 처리될 수 있도록 병렬화될 수 있다.
파티션(200)의 쓰기 데이터 경로(201)는 TM(203), WDEM(204), 하나 또는 그 이상의 WDE들(205)(WDE0~WDEN-1), 메모리 영역 아비터(206), MRM들(207)(MRM0~MRMP-1), 인터커넥터(208), 및 하나 또는 그 이상의 MR들(209)(MR0~MRP-1)을 포함할 수 있다. 파티션(200)의 읽기 데이텨 경로(202)는 MR들(209), 인터커넥터(208), 메모리 영역 아비터(206), RDEM(212), 및 하나 또는 그 이상의 읽기 데이터 엔진들(RDE)(213)를 포함할 수 있다. 시스템 파티션은 변환 테이블(TT; translation table) 관리자(210)(TT MGR) 및 TT 메모리(211)(TT MEM)를 포함할 수 있다. 시스템 파티션들(200A~200K)(도 1) 각각은 유사하게 구성될 수 있다.
메모리 영역 아비터(206), 인터커넥터(208)와 같은 구성 요소들은 잘-알려진 방식으로 동작하고, 상세한 설명에서 설명되지 않을 것이다. 더욱이, 메모리 영역 아비터(206)는 점선으로 표시된 바와 같이, 쓰기 데이터 경로(201) 및 읽기 데이터 경로(202) 모두에 위치하는 것으로 도 2에서 도시된다. 그러나 각각의 경로는 실제 다른 메모리 영역 아비터와 통신하고 작용하는 개별적인 메모리 영역 아비터를 포함할 수 있다. 도 1에 도시된 바와 같이, 읽기 데이터 경로(202)는 MRM(207)을 통해 통과한, 도 2에서는 그렇게 도시되지 않는다. 이는 RDEM(212)은 단지 물리적 메모리 위치에 대한 PLID를 획득하기 위해 변환 테이블을 읽을 필요가 있고, 이후에 RDE들(213)이 PLID에 의해 인덱스된 메모리 위치를 읽기 때문이다. 더욱이, 도 1 및 도 2에 도시된 구성들은 다양한 구성들 및/또는 기능 블록들과 연관되어 본문에 기재된 기능을 제공하는 소프트웨어, 펌웨어, 및/또는 하드웨어를 포함할 수 있는 모듈로서 구현될 수 있다.
도 3은 본 발명의 실시 예에 따른 시스템 파티션(200)의 쓰기 데이터 경로(201)의 다양한 구성들의 예시적인 실시 예의 다른 블록도를 보여준다. 좀 더 상세하게, 도 3에 도시된 시스템 파티션(200)의 구성들은 TM(203), WDEM(204), WDE들(205), 인터커넥터(208), 및 MR들(209)을 포함할 수 있다. 더욱이, 쓰기 데이터 경로는 쓰기 데이터 버퍼 컨트롤러(214)를 포함할 수 있다.
도 1 내지 도 3을 참조하면, TM(203)은 TM 컨트롤러(215) 및 하나 또는 그 이상의 트랜잭션 테이블들(216)을 포함할 수 있다. 트랜잭션 테이블들(216)은 호스트 시스템(101) 및 메모리(209) 사이에서 발생하는 미처리 쓰기 트랜잭션들을 추적하는데 사용될 수 있다. WDEM(204)은 OBN(outstanding bucket number) 테이블(217), CMD(command) 테이블(218), OVMI(overflow memory invalidate) 관리자(219), 및 하나 또는 그 이상의 CQ(command queue)들(220)(CQ0~CQN-1)을 포함할 수 있다. WDE들(205)은 하나 또는 그 이상의 WDE들(WDE0~WDEN-1)을 포함할 수 있다. 쓰기 데이터 버퍼 컨트롤러(214)는 하나 또는 그 이상의 쓰기 데이터 버퍼들(221)을 포함할 수 있다.
TM(203)은 호스트 시스템의 가상 메모리 공간의 데이터 일관성(data coherency and data consistency) 을 관리하도록 구성될 수 있다. 일 실시 예에서, TM(203)은 복수의 미처리 쓰기 트랜잭션들 및 복수의 쓰레드들을 지원하여 높은 데이터 처리량을 제공할 수 있다. 일 실시 예에서, 트랜잭션 테이블(216)은 미처리 쓰기 트랜잭션들의 리스트를 포함할 수 있다. 다른 실시 예에서, 트랜잭션 테이블(216)은 각각이 복수의 미처리 트랜잭션들을 포함하는 복수의 쓰레드들의 리스트를 포함할 수 있다. 호스트 시스템(101)으로부터 데이터 쓰기 요청이 수신된 경우, TM(203)은 트랜잭선 식별 번호(ID; identification number)를 쓰기 데이터 요청에 할당하고, 트랜잭션 ID 및 다른 메타데이터는 선택된 트랜잭션 테이블(216)로 입력된다. 쓰기 데이터 요청과 연관된 데이터는 쓰기 데이터 버퍼(221)에 저장된다. 쓰기 데이터 버퍼(221)의 데이터와 관련된 트랜잭션 ID 및 정보는 쓰기 데이터 경로(201)에 의한 추가 처리를 위하여 다운스트림될 수 있다. TM(203)은 하나 또는 그 이상의 TM 테이블들(216)을 사용하여 호스트 시스템/가상 메모리 공간에 순차적인 순서로 게시된 메모리 쓰기들의 완료들을 유지할 수 있다.
도 4는 본 발명의 실시 예에 따른 시스템 파티션(200)의 물리적 메모리 공간에서 데이터 위치를 추적하는데 TM(203) 및 RDEM(212)에 의해 사용될 수 있는 변환 테이블(400)의 예시적인 실시 예에 대한 일부 세부사항을 보여준다. 변환 테이블(211, 400)의 특정한 예시적인 실시 예는 1TB(즉, 240바이트)의 가상 메모리 공간에 대한 것이며, VA_WIDTH로 지칭된다. 복제 제거 단위(데이터 단위)는 64 비트(즉, 26비트)이다. 변환 테이블(400)의 물리적 메모리 공간은 256GB(즉, 238바이트)이고, PHY SPACE로 지칭된다. 도시된 시스템 변환 테이블 인덱스(TT_IDX)는 34비트를 갖는다. 시스템 파티션(200)에 의해 제공되는 파티셔닝(partitioning)은 결과적으로, MR(209)에 저장된 사용자 데이터의 크기가 증가함에 따라 변환 테이블의 크기를 극단적으로 증가시키지 않고, 변환 테이블(211)의 인덱스를 32비트 내에 위치하도록 한다. 다른 실시 예에서, 가상 메모리 크기, 물리 메모리 크기, 및 복제 제거 (데이터) 단위는 도 4에 도시된 바와 다를 수 있다.
도 5는 본 발명의 실시 예에 따른 예시적인 해시 테이블(501)의 해시 테이블 엔트리들 및 예시적인 변환 테이블(500)의 변환 테이블 엔트리들 사이의 관계를 보여준다. 도 2 및 도 5를 참조하면, 일 실시 예에서, 변환 테이블(500)은 TT MEM(211)에 저장될 수 있고, 해시 테이블(501)은 MR(209)의 HTRC MEM에 저장될 수 있다. 호스트 시스템(101)으로부터 수신된 논리적 어드레스(502)는 변환 테이블 인덱스(도 4의 TT_IDX) 및 단위(granularity)를 포함할 수 있다. 변환 테이블 인덱스는 변환 테이블(500)의 물리적 라인 식별(PLID; physical line identification)엔트리로 인덱스를 제공할 수 있다. PLID 엔트리의 포맷(503)은 해시 테이블(501)로의 행(즉, 해시 버킷) 인덱스(R_INDX) 및 열 인덱스(COL_INDX)를 포함할 수 있다. 해시 테이블(501)의 특정 행 및 특정 열에 포함된 컨텐츠는 2g의 단위를 갖는 특정 사용자 데이터일 수 있는 물리적 라인(PL; physical line)이다. 예를 들어, g가 6인 경우, PL의 단위는 64 바이트일 것이다.
일 실시 예에서, 해시 테이블 인덱스(즉, 행 인덱스 및 열 인덱스 모두)가 사용자 데이터에 대해 수행되는 해시 함수(h)에 의해 생성될 수 있다. 해시 테이블 엔트리가 사용자 데이터(C)에 대해 수행되는 해시 함수(h)에 의해 생성되기 때문에, 사용자 데이터의 일부분(C")만이 PL에 저장될 필요가 있다. 다시 말해서, C가 단위(2g)의 사용자 데이터 를 나타내고, C"가 해시 테이블에 저장될 필요가 있는 사용자 데이터(C)의 부분을 나타내면, C'는 해시 함수(h)를 사용하여 C"로부터 복원될 수 있는 사용자 데이터(C)의 부분을 나타낸다.
PL에서 C'와 대응되는 공간 또는 필드는 사용자 데이터(C)가 호스트 시스템(101)의 가상 메모리에 복제된 횟수와 관련된 기준 카운터(RC; reference counter) 정보를 저장하는 것과 같이 다른 목적을 위해 사용될 수 있다. PL에서 C'와 대응되는 공간 또는 필드는 복원 필드(reconstructed field)로서 지칭될 수 있다.
도 6은 본 발명의 실시 예에 따라 트랜잭션 관리자(203)(TM)에 의해 제공되는 예시적인 제어 프로세스(600)의 순서도를 보여준다. 601에서, TM(203)은 호스트 시스템(101)으로부터 데이터 쓰기 커맨드를 수신하거나 또는 WEDM(204)으로부터 응답을 수신하기를 기다리는 유휴 루프(idle loop)에 있을 수 있다. 602에서, 호스트 시스템(101)으로부터 데이터 쓰기 커맨드가 수신된 경우, 흐름은 트랜잭션 테이블들(216)을 검색하는 603으로 진행한다. 604에서, 데이터 쓰기 커맨드는 트랜잭션 ID를 할당 받고, 적절한 트랜잭션 테이블(216)로 삽입된다. 605에서, 쓰기 데이터는 쓰기 데이터 버퍼(219)로 입력된다. 606에서, 오래된 물리적 라인 식별자(PLID) 정보를 획득하기 위해 트랜잭션 테이블(211)이 읽어지고, 흐름은 601로 돌아간다.
602에서, 데이터 쓰기 커맨드가 수신되지 않은 경우, 흐름은 WEDM(204)으로부터 응답이 수신되었는지 판별되는 607로 진행한다. 만약 그렇지 않다면, 흐름은 601로 돌아간다. 만약 그렇다면, 흐름은 트랜잭션 테이블(216)이 업데이트되는 608로 진행한다. 609에서, 변환 테이블(211)이 업데이트된다. 이후에 흐름은 601로 돌아간다.
WDEM(204)은 WDE들(205)을 관리함으로써, 파티션(200) 내의 물리적 메모리 공간의 데이터 일관성(data coherency and data consistency) 을 관리하도록 구성될 수 있다. 일 실시 예에서, WDEM(204)은 커맨드 디스패쳐(218) 및 커맨드 큐(220)(즉, CQ0~CQN-1)를 사용하여 다른 WDE들(205)로의 내부 읽기/쓰기 트랜잭션들/쓰레드들 및 복수의 미처리 쓰기들 유지할 수 있다. WDEM(204)은 동일한 해시 버킷으로의 쓰기 트랜잭션들을 동일한 커맨드 큐(CQ)로 전송함으로써 동일한 해시 버킷으로의 쓰기 트랜잭션들이 순차적으로 실행되는 것을 보장하도록 동작할 수 있다. WDEM(204)은 부분 캐시 라인 쓰기들을 병합할 수 있고, MR들(209)의 OV MEM(overflow memory) 영역에 대한 메모리 관리를 수행할 수 있다.
WDEM(204)은 해시 테이블 버킷 넘버들 및 미처리 쓰기 커맨드들의 상태를 추적하는데 사용될 수 있는 OBN(outstanding bucket number) 테이블(219)을 포함할 수 있다. 커맨드 디스패쳐(218)는 쓰기 커맨드들을 선택된 CQ들(220)에 저장함으로써, 커맨드들을 다른 WDE들(205)로 할당할 수 있다. WDEM(204)은 OVM 무효화 테이블(미도시)을 더 포함할 수 있다.
도 7은 본 발명의 실시 예에 따른 WEDM(204)에 의해 제공되는 예시적인 제어 프로세스(700)의 흐름도를 보여준다. 제어 프로세서는 701에서 시작한다. 702에서, 쓰기 데이터 커맨드가 트랜잭션 관리자(203)(TM)으로부터 쓰기 데이터 버퍼 ID 및 오래된 PLID 정보와 함께 수신되었는지 판별된다. 만약 그렇다면, 흐름은 쓰기 데이터 테이블이 읽어지는 703으로 진행한다. 704에서, 쓰기 데이터 버퍼(221)로부터 읽어진 쓰기 데이터가 스페셜 데이터 패턴으로 표기된 경우, 흐름은 706으로 진행하여 트랜잭션 관리자로 응답을 전송한다. 만약, 704에서, 쓰기 데이터가 스페셜 데이터가 아닌 경우, 흐름은 OCB(outstanding command buffer) 테이블이 업데이트되는 705로 진행한다. 707에서, 옵코드(opcode)가 적절한 커맨드 큐(220)(CQ)로 추가되고, 708에서 프로세서는 종료한다. 만약, 709에서, WDE(205)로부터 응답이 수신된 경우, 흐름은 OCB(outstanding command buffer) 테이블이 업데이트되는 710로 진행한다. 711에서, 업데이트된 상태가 트랜잭션 관리자(203)(TM)으로 전송되고, 708에서 프로세스는 종료한다.
각 WDE(205)는 WEDM(204)의 대응하는 CQ(220)로부터 커맨드들(옵 코드들)을 수신한다. WDE들(205)은 복제 제거 판별 및 다른 연관된 연산들을 수행하도록 구성될 수 있다. WDE들(205)은 병렬로 구동하여 시스템 파티션(200)의 전체 처리량을 향상시킬 수 있다. 각 WDE(205)는 메모리 액세스들을 인터리빙하기 위해 각 메모리 영역의 MRM(207)과 조정된다.
도 8은 본 발명의 실시 예에 따른 WDE들(205)에 의해 제공된 예시적인 제어 프로세스(800)의 흐름도를 보여준다. 801에서, WDE(205)는 WDEM(204)으로부터 커맨드를 수신하기를 기다리는 유휴 루프(idle loop)에 있을 수 있다. 802에서, 커맨드가 사용자 데이터의 서명(signature)와 해시 버킷의 다른 사용자 데이터 서명들과 비교하는 것인지 또는 커맨드가 RC 카운터를 감소시키는 것인지가 판별될 수 있다. 만약 커맨드(즉, 옵코드)가 RC 카운터를 감소시키는 것인 경우, 흐름은 사용자 데이터에 대한 RC를 감소시키는 803으로 진행한다. 이후에, 흐름은 요청의 상태가 WDEM(204)으로 반환되는 804로 진행하고, 이후에 801로 돌아간다.
802에서, WDEM(204)으로부터 수신된 요청이 사용자 데이터(즉, 물리적 라인)을 기입하는 것인 경우, 흐름은 사용자 데이터의 서명이 다른 사용자 데이터 서명들과 비교되고, 해시 테이블에 이미 저장된 사용자 데이터와 비교하는 805를 진행한다. 806에서, 매칭이 있는 경우, 흐름은 사용자 데이터에 대한 RC를 증가시키는 807을 진행한다. 흐름은 요청의 상태가 WDEM(204)에 다시 보고되는 804로 진행한다. 만약 806에서, 매핑이 없다면, 흐름은 이전 사용자 데이터가 발견되지 않는 경우 HTRC 관리자가 "1"인 RC 카운터와 함께 사용자 데이터를 해시 테이블에 저장하도록 호출되되거나 또는 해시 버킷이 가득 차거나 또는 해시 충돌이 발생한 경우 오버플로우 영역에 사용자 데이터를 저장하기 위해 OVM 관리자를 호출하는 808을 진행한다. 흐름은 804를 진행하여 WDEM(204)으로 요청의 상태를 보고한다.
MRM들(207)은 WDE들(205)에 대한 MR들(207)로의 메모리 액세스를 관리한다. MRM(207)은 해시 테이블/기준 카운터 관리자(222)(HTRC MGR; hash table/reference counter manager), 오버플로우 관리자(223)(OVM MGR; overflow memory manager), 및 서명 관리자(224)(SIG MGR; signature manager)를 포함할 수 있다. 각 MRM(207)은 WDE들(205) 각각으로부터 HTRC MGR(222)(HR R/W), OVM MGR(223)(OVM R/W), 및 SIG MGR(224)(SIG R/W)을 위한 제어 및 데이터 정보를 수신한다.
도 9a는 본 발명의 실시 예에 따른 내장된 기준 카운터(RC; reference counter)를 포함하는 복원 필드(901)를 포함하는 PL(900)의 예시적인 실시 예를 보여준다. 일 실시 예에서, 사용자 데이터가 가상 메모리 공간에 복제될 수 있는 횟수가 작기 때문에, 복원 필드(reconstructed field)는 상대적으로 작은 크기를 갖는 내장된 RC(embedded RC)를 포함한다. 이러한 시스템 상황에 대하여, 내장된 RC는 r-1 비트의 크기를 갖는 기본 RC인 것으로 구성될 수 있다.
사용자 데이터가 호스트 시스템의 가상 메모리 공간에 복제되는 횟수가 PL의 복원 필드에 내장된 RC의 크기를 초과할 수 있는 다른 실시 예에서, 복원 필드는 확장된 RC 테이블 엔트리로의 인덱스를 포함할 수 있다. 또 다른 실시 예에서, PL의 선택된 비트와 같은 지시자 플래그(indicator flag)는 가상 메모리 공간에서의 사용자 데이터의 복제들의 횟수가 내장된 RC의 크기를 초과하는지를 가리키는데 사용될 수 있다.
도 9b는 본 발명의 실시 예에 따라 지시자 플래그(911)를 포함하는 PL(910)의 예시적인 실시 예를 보여준다. 도 9b에 도시된 바와 같이, 지시자 플래그(911)는 사용자 데이터의 복제 횟수가 복원 필드(912)에 내장된 RC의 크기보다 작거나 같은지를 가리키도록 설정된다. 따라서, 복원 필드(912)의 컨텐츠는 호스트 시스템(100)의 가상 메모리 공간에서의 사용자 데이터의 복제 횟수를 가리킬 것이다. 도 9c는 복원 필드의 컨텐츠가 복제된 사용자 데이터의 확장된 카운트를 포함하는 확장된 RC 테이블(913)로의 인덱스를 포함할 수 있는 경우에서, 지시자 플래그(911)가 사용자 데이터의 복제 횟수가 복원 필드(912)의 내장된 RC의 크기를 초과하는 것을 가리키도록 설정된 상황을 보여준다. 또는 복원 필드(912)는, 예를 들어, 자주 복제되는 데이터를 포함할 수 있는 특정 데이터 패턴 테이블(914)로의 인덱스 또는 포인터를 포함할 수 있다. 일 실시 예에서, 변환 테이블은 도 8에 도시된 바와 같이, 자주 복제되는 사용자 데이터에 대하여, 특정 데이터 패턴 테이블(914)로의 인덱스 또는 포인터일 수 있는 PLID를 포함하여 사용자 데이터와 연관될 수 있는 레이턴시를 감소시킬 수 있다. 즉, 변환 테이블에 포인터 또는 인덱스를 놓음으로써, 가상 메모리 공간에 자주 복제되는 사용자 데이터는 변환 테이블이 액세스될 때, 자동으로 검출될 수 있다.
MR들(209) 각각은 메타 데이터 메모리 영역 및 복수의 데이터 메모리 영역들을 포함한다. 시스템 파티션(200)이 복제 제거 메모리(deduplication memory)로서 구성되는 경우, 메타 데이터 영역은 변환 테이블(211)을 포함한다. 데이터 메모리 영역(209)은 해시 테이블/기준 카운터(HTRC; hash table/reference counter) 메모리(HTRC MEM), 서명 메모리(SG MEM; signatur memory), 및 오버플로우 메모리(OV MEM; overflow memory)를 포함한다.
다른 가상 어드레스들로부터의 MR들(209)의 동일한 물리적 메모리 영역으로의 쓰기들은 MRM들(207)에 의해 관리된다. HTRC 및 SG 관리자들(222)은 복제 제거 기능들(dedupe functions)을 수행하고, 해시 테이블 행(일명, 버킷) 및 열 위치와 관련하여 메모리 위치를 연산한다. 다른 가상 어드레스들로부터 동일한 HTRC 버킷으로의 쓰기들은 호스트로부터의 원본 순서와 다른 순서로 HTRC 버킷에 도달할 수 있다. 일관성(consistency)은 WDEM(204)에 의해 관리된다. 쓰기 데이터, 예를 들어, 쓰기 데이터 A 및 쓰기 데이터 B가 동일한 PLID(A==B)에 도달한 경우, RC 카운터는 단순히 증가될 수 있다. 다른 가상 어드레스들로부터의 쓰기 데이터가 동일하지 않고, 동일한 버킷 넘버를 갖지만, 다른 열(일명, 웨이) 넘버를 갖는 경우, 데이터는 동일한 버킷에 저장되나, 다른 웨이들에서 다르게 저장될 수 있다. 버킷에 하나의 엔트리만 남은 경우, A 또는 B 중 하나가 마지막 엔트리에 저장될 것이고, 나머지 하나는 오버플로우 영역에 저장될 것이다. 쓰기 데이터 A 및 쓰기 데이터 B가 다르나, 동일한 해시 버킷 및 행 넘버를 갖는 경우, 두번째 것은 오버플로우 영역에 저장될 것이다.
당업자에 의해 인식되는 바와 같이, 상세한 설명에 기재된 본 발명의 사상은 광범위한 애플리케이션들에서 변형되거나 또는 수정될 수 있다. 따라서 특허청구범위는 상술된 특정한 예시적인 교시로 제한되지 않아야 하며, 대신에 이하의 특허청구범위에 의해 정의될 것이다.
Claims (20)
- 메모리 시스템에 있어서,
적어도 하나의 시스템 파티션(system partition)을 포함하고,
상기 적어도 하나의 시스템 파티션은:
제1 미리 정해진 크기의 물리적 메모리 공간을 포함하는 물리적 메모리;
호스트 시스템으로부터 데이터 쓰기 요청들 및 대응하는 데이터를 수신하고, 트랜잭션 테이블을 사용하여 상기 호스트 시스템의 가상 메모리 공간에 대한 데이터 일관성(data coherency and data consistency)을 유지하는 적어도 하나의 트랜잭션 관리자(TM; transaction manager);
적어도 하나의 커맨드 큐를 포함하고, 아웃스탠딩 버킷 넘버(OBN; outstanding bucket number) 및 상기 적어도 하나의 커맨드 큐를 사용하여 상기 물리적 메모리 공간에 대한 데이터 일관성(data coherency and data consistency) 을 유지하고, 상기 TM으로부터 상기 데이터 쓰기 요청들을 수신하고 상기 데이터 쓰기 요청들 각각에 대응하는 쓰기 커맨드를 상기 적어도 하나의 커맨드 큐 중 선택된 커맨드 큐로 전송하는 적어도 하나의 쓰기 데이터 엔진 관리자(WDEM; write data engine manager); 및
상기 적어도 하나의 커맨드 큐 각각에 대응하고, 데이터 쓰기 요청에 대응하는 데이터가 상기 가상 메모리 공간에 복제되지 않은 경우, 상기 데이터를 오버플로우 메모리 영역에 저장함으로써 상기 대응하는 커맨드 큐에 저장된 쓰기 커맨드에 응답하거나, 또는 데이터 쓰기 요청에 대응하는 상기 데이터가 상기 가상 메모리 공간에 복제된 경우, 상기 데이터에 대한 기준 카운터를 증가시키는 쓰기 데이터 엔진(WDE; write data engine)을 포함하는 메모리 시스템. - 제 1 항에 있어서,
상기 가상 메모리 공간은 상기 물리적 메모리 공간의 상기 제1 미리 정해진 크기보다 크거나 같은 제2 미리 정해진 크기를 포함하고,
상기 메모리 시스템은 상기 가상 메모리 공간의 상기 제2 미리 정해진 크기와 대응하는 제1 미리 정해진 개수의 비트들, 상기 물리적 메모리의 상기 제1 미리 정해진 크기와 대응하는 제2 미리 정해진 개수의 비트들, 및 데이터 단위(data granularity)에 대한 제3 미리 정해진 개수의 비트들을 포함하는 변환 테이블을 포함하고,
상기 제2 미리 정해진 개수의 비트들 및 상기 제3 미리 정해진 개수의 비트들은 상기 제1 미리 정해진 개수의 비트들의 부분들인 메모리 시스템. - 제 2 항에 있어서,
상기 제1 미리 정해진 개수의 비트들은 40비트이고, 상기 제2 미리 정해진 개수의 비트들은 32 비트이고, 상기 제3 미리 정해진 개수의 비트들은 6비트인 메모리 시스템. - 제 2 항에 있어서,
상기 TM은 데이터 쓰기 요청을 수신한 것에 응답하여, 상기 변환 테이블을 액세스하여 상기 쓰기 요청의 가상 어드레스에 대응하는 물리적 어드레스를 판별하는 메모리 시스템. - 제 1 항에 있어서,
상기 TM은 상기 호스트 시스템의 상기 가상 메모리 공간에 대하여 쓰기-후-쓰기(write-after-write) 데이터 일관성(data coherency and data consistency) 을 유지하는 메모리 시스템. - 제 1 항에 있어서,
상기 TM은 상기 트랜잭션 테이블을 사용하여 상기 호스트 시스템으로부터 수신된 복수의 쓰기 요청들을 추적하는 메모리 시스템. - 제 6 항에 있어서,
상기 TM은 트랜잭션 식별자(ID; identification)를 상기 수신된 데이터 쓰기 요청들에 할당하고,
상기 TM은 상기 수신된 데이터 쓰기 요청들의 상기 트랜잭션 ID들에 대응하는 순서로 상기 호스트 시스템으로 쓰기 완료 메시지들을 전송하는 메모리 시스템. - 제 6 항에 있어서,
상기 TM은 상기 트랜잭션 테이블을 사용하여 쓰기 데이터 요청들의 복수의 쓰레드들을 추적하는 메모리 시스템. - 메모리 시스템에 있어서,
복수의 시스템 파티션들을 포함하고,
상기 복수의 시스템 파티션들 중 적어도 하나의 시스템 파티션은:
복수의 메모리 영역들을 포함하는 제1 미리 정해진 크기의 물리적 메모리 공간을 포함하는 물리적 메모리;
호스트 시스템으로부터 데이터 쓰기 요청들 및 대응하는 데이터를 수신하고, 트랜잭션 테이블을 사용하여 상기 제1 미리 정해진 크기의 상기 물리적 크기보다 크거나 같은 제2 미리 정해진 크기를 포함하는 상기 호스트 시스템의 가상 메모리 공간에 대한 데이터 일관성(data coherency and data consistency)을 유지하고, 변환 테이블을 사용하여 상기 호스트 시스템의 상기 가상 메모리 공간을 상기 적어도 하나의 시스템 파티션의 물리적 메모리 공간으로 변환하는 적어도 하나의 트랜잭션 관리자(TM; transaction manager);
적어도 하나의 커맨드 큐를 포함하고, 아웃스탠딩 버킷 넘버(OBN; outstanding bucket number) 및 상기 적어도 하나의 커맨드 큐를 사용하여 상기 물리적 메모리 공간에 대한 데이터 일관성(data coherency and data consistency) 을 유지하고, 상기 TM으로부터 상기 데이터 쓰기 요청들을 수신하고, 상기 데이터 쓰기 요청들 각각에 대응하는 쓰기 커맨드를 상기 적어도 하나의 커맨드 큐 중 선택된 커맨드 큐로 전송하는 적어도 하나의 쓰기 데이터 엔진 관리자(WDEM; write data engine manager);
상기 적어도 하나의 커맨드 큐 각각에 대응하고, 상기 데이터 쓰기 요청에 대응하는 데이터가 상기 가상 메모리 공간에 복제되지 않은 경우 상기 데이터를 오버플로우 영역에 저장하거나, 또는 상기 데이터가 상기 가상 메모리 공간에 복제된 경우 상기 데이터에 대한 기준 카운터를 증가시킴으로써, 상기 대응하는 커맨드 큐에 저장된 쓰기 데이터에 응답하는 쓰기 데이터 엔진(WDE; write data engine); 및
상기 물리적 메모리의 각 메모리 영역에 대응하고, 상기 각 메모리 영역에 저장된 데이터에 대한 기준 카운터 스토리지 공간을 포함하고, 상기 대응하는 각 메모리 영역으로의 WDE 액세스를 제어하는 메모리 공간 관리자(MRM; memory regional manager)를 포함하는 메모리 시스템. - 제 9 항에 있어서,
상기 변환 테이블은 상기 가상 메모리 공간의 상기 제2 미리 정해진 크기에 대응하는 제1 미리 정해진 개수의 비트들, 상기 물리적 메모리의 상기 제1 미리 정해진 크기에 대응하는 제2 미리 정해진 개수의 비트들, 데이터 단위에 대한 제3 미리 정해진 개수의 비트들을 포함하고,
상기 제2 미리 정해진 개수의 비트들 및 상기 제3 미리 정해진 개수의 비트들은 상기 제1 미리 정해진 개수의 비트들의 부분들인 메모리 시스템. - 제 10 항에 있어서,
상기 제1 미리 정해진 개수의 비트들은 40 비트를 포함하고, 상기 제2 미리 정해진 개수의 비트들은 32 비트를 포함하고, 상기 데이터 단위에 대한 상기 제3 미리 정해진 개수의 비트들은 6 비트들을 포함하는 메모리 시스템. - 제 9 항에 있어서,
상기 TM은 상기 호스트 시스템의 상기 가상 메모리 공간에 대한 쓰기-후-쓰기 데이터 일관성(data coherency and data consistency) 을 유지하는 메모리 시스템. - 제 9 항에 있어서,
상기 TM은 데이터 쓰기 요청이 수신된 것에 응답하여, 상기 변환 테이블을 액세스하여 상기 데이터 쓰기 요청의 가상 어드레스에 대응하는 물리적 어드레스를 판별하는 메모리 시스템. - 제 9 항에 있어서,
상기 TM은 상기 트랜잭션 테이블을 사용하여 상기 호스트 시스템으로부터 수신된 복수의 데이터 쓰기 요청들을 추적하는 메모리 시스템. - 제 14 항에 있어서,
상기 TM은 수신된 데이터 쓰기 요청으로 트랜잭션 식별자(ID; identification)를 할당하고,
상기 TM은 상기 수신된 데이터 쓰기 요청들의 상기 트랜잭션 ID들에 대응하는 순서로 상기 호스트 시스템으로 쓰기 완료 메시지들을 전송하는 메모리 시스템. - 제 14 항에 있어서,
상기 TM은 상기 트랜잭션 테이블을 사용하여 쓰기 데이터 요청들의 복수의 쓰레드들을 추적하는 메모리 시스템. - 복제 제거 메모리 시스템에 있어서,
복수의 시스템 파티션들을 포함하고,
상기 복수의 시스템 파티션들 중 적어도 하나의 시스템 파티션은:
제1 미리 정해진 크기의 물리적 메모리 공간을 포함하는 물리적 메모리;
호스트 시스템으로부터 데이터 쓰기 요청들 및 대응하는 데이터를 수신하고, 트랜잭션 테이블을 사용하여 상기 물리적 메모리 공간의 상기 제1 미리 정해진 크기보다 크거나 같은 제2 미리 정해진 크기를 포함하는 상기 호스트 시스템의 가상 메모리 공간에 대한 데이터 일관성을 유지하고, 상기 가상 메모리 공간의 상기 제2 미리 정해진 크기와 대응하는 제1 미리 정해진 개수의 비트들, 상기 물리적 메모리의 상기 제1 미리 정해진 크기와 대응하는 제2 미리 정해진 개수의 비트들, 및 데이터 단위에 대한 제3 미리 정해진 개수의 비트들을 포함하고 상기 제2 미리 정해진 개수의 비트들 및 상기 제3 미리 정해진 개수의 비트들은 상기 제1 미리 정해진 개수의 비트들의 부분들인 변환 테이블을 사용하여 상기 호스트 시스템의 상기 가상 메모리 공간을 상기 적어도 하나의 시스템 파티션의 상기 물리적 메모리 공간으로 변환하는 적어도 하나의 트랜잭션 관리자(TM; transaction manager);
적어도 하나의 커맨드 큐를 포함하고, 아웃스탠딩 버킷 넘버(OBN; outstanding bucket number) 및 상기 적어도 하나의 커맨드 큐를 사용하여 상기 물리적 메모리 공간에 대한 데이터 일관성(data coherency and data consistency)을 유지하고, 상기 TM으로부터 상기 데이터 요청들을 수신하고, 상기 데이터 쓰기 요청들 각각에 대응하는 쓰기 커맨드를 상기 적어도 하나의 커맨드 큐 중 선택된 커맨드 큐로 전송하는 적어도 하나의 쓰기 데이터 엔진 관리자(WDEM; write data engine manager); 및
각 커맨드 큐에 대응하고, 상기 쓰기 요청에 대응하는 상기 데이터가 상기 가상 메모리 공간에 복제되지 않은 경우 상기 데이터를 오버플로우 영역에 저장하거나 또는 상기 데이터 쓰기 요청에 대응하는 상기 데이터가 상기 가상 메모리 공간에 복제된 경우 기준 카운터를 증가시킴으로써, 상기 대응하는 커맨드 큐에 저장된 쓰기 커맨드에 응답하는 쓰기 데이터 엔진(WDE; write data engine)을 포함하는 복제 제거 메모리 시스템. - 제 17 항에 있어서,
상기 물리적 메모리는 복수의 메모리 영역들을 포함하고,
상기 복제 제거 메모리 시스템은 상기 물리적 메모리의 각 메모리 영역에 대응하고, 상기 메모리 영역에 저장된 데이터에 대한 기준 카운터 스토리지 공간을 포함하고, 상기 대응하는 메모리 영역으로의 WDE 액세스를 제어하는 메모리 영역 관리자(MRM; memory regional manager)를 더 포함하는 복제 제거 메모리 시스템. - 제 18 항에 있어서,
상기 제1 미리 정해진 개수의 비트들은 40비트를 포함하고, 상기 제2 미리 정해진 개수의 비트들은 32 비트를 포함하고, 상기 데이터 단위에 대한 상기 제3 미리 정해진 개수의 비트들은 6 비트를 포함하는 복제 제거 메모리 시스템. - 제 19 항에 있어서,
상기 TM은 상기 트랜잭션 테이블을 사용하여 쓰기 데이터 요청들의 복수의 쓰레드들을 추적하는 복제 제거 메모리 시스템.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862720909P | 2018-08-21 | 2018-08-21 | |
US62/720,909 | 2018-08-21 | ||
US16/180,003 US10628072B2 (en) | 2018-08-21 | 2018-11-04 | Scalable architecture enabling large memory system for in-memory computations |
US16/180,003 | 2018-11-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200021878A true KR20200021878A (ko) | 2020-03-02 |
KR102704278B1 KR102704278B1 (ko) | 2024-09-09 |
Family
ID=69583520
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190083463A KR102704278B1 (ko) | 2018-08-21 | 2019-07-10 | 메모리 내부 연산을 위한 대용량 메모리 시스템을 가능하게 하는 스케일 가능한 아키텍쳐 |
Country Status (5)
Country | Link |
---|---|
US (2) | US10628072B2 (ko) |
JP (2) | JP7517799B2 (ko) |
KR (1) | KR102704278B1 (ko) |
CN (1) | CN110851076B (ko) |
TW (1) | TWI812748B (ko) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11567683B2 (en) * | 2019-03-28 | 2023-01-31 | Intel Corporation | Technologies for providing edge deduplication |
JP7083964B2 (ja) * | 2019-04-23 | 2022-06-13 | ヤマハ発動機株式会社 | リニアコンベアシステム、リニアコンベアシステムの制御方法、リニアコンベアシステムの制御プログラムおよび記録媒体 |
US11538509B2 (en) | 2021-03-17 | 2022-12-27 | Qualcomm Incorporated | Compute-in-memory with ternary activation |
US20230056665A1 (en) * | 2021-08-18 | 2023-02-23 | Micron Technology, Inc. | Mechanism to provide reliable receipt of event messages |
US11550642B1 (en) | 2021-08-18 | 2023-01-10 | Micron Technology, Inc. | Mechanism to trigger early termination of cooperating processes |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170098187A (ko) * | 2016-02-19 | 2017-08-29 | 시게이트 테크놀로지 엘엘씨 | 저장 서브시스템을 위한 연관적 및 원자적 라이트-백 캐싱 시스템 및 방법 |
KR20170112953A (ko) * | 2016-03-31 | 2017-10-12 | 삼성전자주식회사 | 중복제거 어플리케이션을 즉시 처리하는 효율적인 메모리를 위한 가상 버킷 복수의 해시 테이블들 |
Family Cites Families (64)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4774659A (en) * | 1986-04-16 | 1988-09-27 | Astronautics Corporation Of America | Computer system employing virtual memory |
US5649157A (en) * | 1995-03-30 | 1997-07-15 | Hewlett-Packard Co. | Memory controller with priority queues |
US6055579A (en) * | 1997-11-17 | 2000-04-25 | Silicon Graphics, Inc. | Distributed control and synchronization of multiple data processors using flexible command queues |
US6209003B1 (en) * | 1998-04-15 | 2001-03-27 | Inktomi Corporation | Garbage collection in an object cache |
US6141707A (en) * | 1998-05-28 | 2000-10-31 | Emc Corporation | Input/output request allocation by establishing master command queue among plurality of command queues to receive and store commands, determine logical volume, and forwarding command to determined logical volume |
US6286092B1 (en) * | 1999-05-12 | 2001-09-04 | Ati International Srl | Paged based memory address translation table update method and apparatus |
US7159073B2 (en) * | 2003-03-27 | 2007-01-02 | Stmicroelectronics, Inc. | Data storage and caching architecture |
US8112574B2 (en) * | 2004-02-26 | 2012-02-07 | Super Talent Electronics, Inc. | Swappable sets of partial-mapping tables in a flash-memory system with a command queue for combining flash writes |
US7418540B2 (en) * | 2004-04-28 | 2008-08-26 | Intel Corporation | Memory controller with command queue look-ahead |
US7849259B1 (en) * | 2007-02-14 | 2010-12-07 | Marvell International Ltd. | Disk controller response handler for write commands |
US7873809B2 (en) * | 2007-03-29 | 2011-01-18 | Hitachi, Ltd. | Method and apparatus for de-duplication after mirror operation |
US8768895B2 (en) * | 2007-04-11 | 2014-07-01 | Emc Corporation | Subsegmenting for efficient storage, resemblance determination, and transmission |
US7962452B2 (en) * | 2007-12-28 | 2011-06-14 | International Business Machines Corporation | Data deduplication by separating data from meta data |
US20090319772A1 (en) * | 2008-04-25 | 2009-12-24 | Netapp, Inc. | In-line content based security for data at rest in a network storage system |
US9223642B2 (en) * | 2013-03-15 | 2015-12-29 | Super Talent Technology, Corp. | Green NAND device (GND) driver with DRAM data persistence for enhanced flash endurance and performance |
WO2009156873A1 (en) * | 2008-06-23 | 2009-12-30 | Sandisk Il Ltd. | Ad hoc flash memory reference cells |
US8271564B2 (en) * | 2008-07-14 | 2012-09-18 | Symbol Technologies, Inc. | Lookup table arrangement and related management method for accommodating concurrent processors |
US8126905B2 (en) * | 2008-09-23 | 2012-02-28 | Teradata Us, Inc. | System, method, and computer-readable medium for optimizing the performance of outer joins |
CN101493756A (zh) * | 2009-03-11 | 2009-07-29 | 威盛电子股份有限公司 | 数据写入方法与装置 |
US20100333116A1 (en) * | 2009-06-30 | 2010-12-30 | Anand Prahlad | Cloud gateway system for managing data storage to cloud storage sites |
US8688894B2 (en) * | 2009-09-03 | 2014-04-01 | Pioneer Chip Technology Ltd. | Page based management of flash storage |
US8204862B1 (en) * | 2009-10-02 | 2012-06-19 | Symantec Corporation | Systems and methods for restoring deduplicated data |
US9401967B2 (en) * | 2010-06-09 | 2016-07-26 | Brocade Communications Systems, Inc. | Inline wire speed deduplication system |
US9355109B2 (en) | 2010-06-11 | 2016-05-31 | The Research Foundation For The State University Of New York | Multi-tier caching |
US8352447B2 (en) * | 2011-03-01 | 2013-01-08 | Hitachi, Ltd. | Method and apparatus to align and deduplicate objects |
US8442952B1 (en) * | 2011-03-30 | 2013-05-14 | Emc Corporation | Recovering in deduplication systems |
US20180107591A1 (en) * | 2011-04-06 | 2018-04-19 | P4tents1, LLC | System, method and computer program product for fetching data between an execution of a plurality of threads |
US8462781B2 (en) * | 2011-04-06 | 2013-06-11 | Anue Systems, Inc. | Systems and methods for in-line removal of duplicate network packets |
US9135192B2 (en) * | 2012-03-30 | 2015-09-15 | Sandisk Technologies Inc. | Memory system with command queue reordering |
AU2013202553B2 (en) * | 2012-03-30 | 2015-10-01 | Commvault Systems, Inc. | Information management of mobile device data |
US8904068B2 (en) | 2012-05-09 | 2014-12-02 | Nvidia Corporation | Virtual memory structure for coprocessors having memory allocation limitations |
US9678863B2 (en) * | 2012-06-12 | 2017-06-13 | Sandisk Technologies, Llc | Hybrid checkpointed memory |
US8938417B2 (en) * | 2013-02-22 | 2015-01-20 | International Business Machines Corporation | Integrity checking and selective deduplication based on network parameters |
US9110914B1 (en) * | 2013-03-14 | 2015-08-18 | Emc Corporation | Continuous data protection using deduplication-based storage |
US10445243B2 (en) * | 2013-03-14 | 2019-10-15 | Nvidia Corporation | Fault buffer for resolving page faults in unified virtual memory system |
US20140304464A1 (en) * | 2013-04-03 | 2014-10-09 | Lsi Corporation | Methods and systems for performing deduplication in a data storage system |
US20150006475A1 (en) * | 2013-06-26 | 2015-01-01 | Katherine H. Guo | Data deduplication in a file system |
US9176676B2 (en) * | 2013-07-30 | 2015-11-03 | Gerald Simon | Efficiency of virtual machines that use de-duplication as primary data storage |
US10055422B1 (en) * | 2013-12-17 | 2018-08-21 | Emc Corporation | De-duplicating results of queries of multiple data repositories |
US9529546B2 (en) * | 2014-01-08 | 2016-12-27 | Netapp, Inc. | Global in-line extent-based deduplication |
US10635316B2 (en) * | 2014-03-08 | 2020-04-28 | Diamanti, Inc. | Methods and systems for data storage using solid state drives |
US9442941B1 (en) * | 2014-03-28 | 2016-09-13 | Emc Corporation | Data structure for hash digest metadata component |
US9799017B1 (en) | 2014-09-19 | 2017-10-24 | Amazon Technologies, Inc. | Cross-data-store operations in log-coordinated storage systems |
US9195674B1 (en) * | 2014-09-24 | 2015-11-24 | Logzilla Corporation | Systems and methods for large-scale system log analysis, deduplication and management |
US9740631B2 (en) | 2014-10-07 | 2017-08-22 | Google Inc. | Hardware-assisted memory compression management using page filter and system MMU |
US9846650B2 (en) | 2015-03-09 | 2017-12-19 | Samsung Electronics Co., Ltd. | Tail response time reduction method for SSD |
US10007619B2 (en) | 2015-05-29 | 2018-06-26 | Qualcomm Incorporated | Multi-threaded translation and transaction re-ordering for memory management units |
US10248656B2 (en) | 2015-06-18 | 2019-04-02 | International Business Machines Corporation | Removal of reference information for storage blocks in a deduplication system |
US9697079B2 (en) * | 2015-07-13 | 2017-07-04 | International Business Machines Corporation | Protecting data integrity in de-duplicated storage environments in combination with software defined native raid |
US20170017571A1 (en) * | 2015-07-17 | 2017-01-19 | Samsung Electronics Co., Ltd. | Method and apparatus fori n-line deduplication in storage devices |
US9904635B2 (en) | 2015-08-27 | 2018-02-27 | Samsung Electronics Co., Ltd. | High performance transaction-based memory systems |
US10025531B2 (en) * | 2015-09-10 | 2018-07-17 | HoneycombData Inc. | Reducing read command latency in storage devices |
US10176216B2 (en) * | 2016-02-01 | 2019-01-08 | International Business Machines Corporation | Verifying data consistency |
US9697224B1 (en) * | 2016-02-09 | 2017-07-04 | International Business Machines Corporation | Data deduplication for an eventually consistent system |
US9983821B2 (en) * | 2016-03-29 | 2018-05-29 | Samsung Electronics Co., Ltd. | Optimized hopscotch multiple hash tables for efficient memory in-line deduplication application |
US9966152B2 (en) * | 2016-03-31 | 2018-05-08 | Samsung Electronics Co., Ltd. | Dedupe DRAM system algorithm architecture |
TWI804466B (zh) | 2016-05-20 | 2023-06-11 | 南韓商三星電子股份有限公司 | 擷取記憶體中儲存的資料的方法與去重複模組 |
US10282124B2 (en) * | 2016-06-23 | 2019-05-07 | International Business Machines Corporation | Opportunistic handling of freed data in data de-duplication |
US10572484B2 (en) * | 2016-09-16 | 2020-02-25 | Oracle International Corporation | Duplicate reduction or elimination with hash join operations |
US10372620B2 (en) | 2016-12-30 | 2019-08-06 | Intel Corporation | Devices, systems, and methods having high data deduplication and low read latencies |
KR102509913B1 (ko) | 2017-01-25 | 2023-03-14 | 삼성전자주식회사 | 최대화된 중복 제거 메모리를 위한 방법 및 장치 |
US10678778B1 (en) * | 2017-10-19 | 2020-06-09 | EMC IP Holding Company LLC | Date deduplication acceleration |
US10366011B1 (en) * | 2018-05-03 | 2019-07-30 | EMC IP Holding Company LLC | Content-based deduplicated storage having multilevel data cache |
US11308036B2 (en) * | 2019-04-11 | 2022-04-19 | EMC IP Holding Company LLC | Selection of digest hash function for different data sets |
-
2018
- 2018-11-04 US US16/180,003 patent/US10628072B2/en active Active
-
2019
- 2019-07-04 TW TW108123547A patent/TWI812748B/zh active
- 2019-07-10 KR KR1020190083463A patent/KR102704278B1/ko active IP Right Grant
- 2019-08-14 JP JP2019148950A patent/JP7517799B2/ja active Active
- 2019-08-19 CN CN201910764183.7A patent/CN110851076B/zh active Active
-
2020
- 2020-03-24 US US16/828,930 patent/US12099736B2/en active Active
-
2024
- 2024-07-04 JP JP2024108045A patent/JP2024133605A/ja active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170098187A (ko) * | 2016-02-19 | 2017-08-29 | 시게이트 테크놀로지 엘엘씨 | 저장 서브시스템을 위한 연관적 및 원자적 라이트-백 캐싱 시스템 및 방법 |
KR20170112953A (ko) * | 2016-03-31 | 2017-10-12 | 삼성전자주식회사 | 중복제거 어플리케이션을 즉시 처리하는 효율적인 메모리를 위한 가상 버킷 복수의 해시 테이블들 |
Also Published As
Publication number | Publication date |
---|---|
US10628072B2 (en) | 2020-04-21 |
US12099736B2 (en) | 2024-09-24 |
KR102704278B1 (ko) | 2024-09-09 |
JP2020030822A (ja) | 2020-02-27 |
JP7517799B2 (ja) | 2024-07-17 |
US20200225862A1 (en) | 2020-07-16 |
CN110851076B (zh) | 2024-09-13 |
JP2024133605A (ja) | 2024-10-02 |
US20200065017A1 (en) | 2020-02-27 |
TW202009716A (zh) | 2020-03-01 |
CN110851076A (zh) | 2020-02-28 |
TWI812748B (zh) | 2023-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102704278B1 (ko) | 메모리 내부 연산을 위한 대용량 메모리 시스템을 가능하게 하는 스케일 가능한 아키텍쳐 | |
CN110851074B (zh) | 嵌入式参考计数器和特殊数据模式自动检测 | |
CN105917319B (zh) | 存储器单元和方法 | |
JP2017151982A (ja) | データストレージサブシステムにおけるキャッシングのための方法およびシステム | |
US11030088B2 (en) | Pseudo main memory system | |
KR102478527B1 (ko) | 이기종 메모리 시스템용 시그널링 | |
KR102168193B1 (ko) | 초과 공급 메모리 장치들을 통합하기 위한 시스템 및 방법 | |
US20230125792A1 (en) | Error recovery for non-volatile memory modules | |
CN114902197B (zh) | 非易失性双列直插式存储器模块的命令重放 | |
CN114902186A (zh) | 非易失性存储器模块的错误报告 | |
US10949359B2 (en) | Optimizing cache performance with probabilistic model | |
KR102266477B1 (ko) | 의사 메인 메모리 시스템 | |
US20220405253A1 (en) | Mechanism for managing a migration of data with mapped page and dirty page bitmap sections |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |