KR101738074B1 - 메모리 장치, 및 이를 포함하는 컴퓨터 시스템 - Google Patents

메모리 장치, 및 이를 포함하는 컴퓨터 시스템 Download PDF

Info

Publication number
KR101738074B1
KR101738074B1 KR1020110031361A KR20110031361A KR101738074B1 KR 101738074 B1 KR101738074 B1 KR 101738074B1 KR 1020110031361 A KR1020110031361 A KR 1020110031361A KR 20110031361 A KR20110031361 A KR 20110031361A KR 101738074 B1 KR101738074 B1 KR 101738074B1
Authority
KR
South Korea
Prior art keywords
page
hash
same
address
contents
Prior art date
Application number
KR1020110031361A
Other languages
English (en)
Other versions
KR20120113584A (ko
Inventor
황주영
유학수
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020110031361A priority Critical patent/KR101738074B1/ko
Priority to US13/437,418 priority patent/US8732434B2/en
Publication of KR20120113584A publication Critical patent/KR20120113584A/ko
Application granted granted Critical
Publication of KR101738074B1 publication Critical patent/KR101738074B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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/1009Address translation using page tables, e.g. page table structures
    • G06F12/1018Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

실시예는 메모리 장치, 이를 포함하는 컴퓨터 시스템에 관한 것이다. 실시예에 따른 메모리 장치는, 해쉬값에 기초하여 생성된 해쉬 테이블을 구비하는 해쉬유닛과, 상기 해쉬값이 동일한 페이지의 주소를 상기 해쉬유닛으로부터 전송받아 상기 주소를 갖는 페이지의 내용을 전송하는 메모리 셀 유닛과 상기 전송된 페이지의 내용을 비교하는 비교유닛을 구비하는 제어부를 포함하고, 상기 제어부는, 상기 전송된 페이지의 내용이 동일한 경우, 상기 페이지의 내용이 동일함을 비트(bit)값으로 표시한다. 이에 의해, 복수개의 가상화머신을 사용함에 따라 발생하는 중복 메모리를 메모리 장치 내부에서 제거할 수 있게 되어, CPU의 부하용량을 줄일 수 있다.

Description

메모리 장치, 및 이를 포함하는 컴퓨터 시스템{Memory device, computer system having the same}
본 발명은의 실시예는 메모리 장치 및 이를 포함하는 컴퓨터 시스템에 관한 것으로, 특히, 메모리 장치 내부에서 메모리 중복 제거가 가능한 메모리 장치, 및 이를 포함하는 컴퓨터 시스템에 관한 것이다.
서버 머신(Server machine)은 내고장성, 부하평형화를 위한 목적으로 가상화기술을 사용하는 추세이다. 또한 컴퓨터에서도 이종의 운영체제(OS:Operating System)를 실행하기 위하여 가상화기술을 사용하기도 한다.
가상화 환경에서 가상 머신(Virtual machine) 각각은 OS를 구동하기 위한 메모리가 필요하지만, 메모리의 사이즈에는 한계가 있어, 따라서 비슷한 OS를 사용하는 경우, 같은 내용의 페이지(page)를 갖는 경우 CPU(Central Processing Unit) 활용에 한계가 있다. 또한, 비슷한 OS를 사용하는 경우 같은 내용의 페이지(page)를 갖는 경우가 발생하는데, 이를 모두 저장하는 것은 비효율적이므로, 메모리 중복 제거 방법(Memory deduplication)을 사용한다.
그러나, 중복제거를 CPU에서 처리함에 따라, CPU의 다른 처리에 지장을 주지 않기 위해, 보조작업으로 처리하고, 그에 따라 많은 시간이 소요되는 단점이 있다.
따라서, 본 발명이 해결하고자 하는 기술적 과제는, 메모리 중복 제거 기능을 메모리 장치 내에 탑재함으로써, CPU의 부하를 줄일 수 있는 메모리 장치, 이를 포함하는 컴퓨터 시스템을 제공하는데 그 목적이 있다.
상술한 과제를 해결하기 위한 실시예에 따른 메모리 장치는, 해쉬값에 기초하여 생성된 해쉬 테이블을 구비하는 해쉬 유닛과, 상기 해쉬값이 동일한 페이지의 주소를 상기 해쉬 유닛으로부터 전송받아 상기 주소를 갖는 페이지의 내용을 전송하는 메모리 셀 유닛과, 상기 전송된 페이지의 내용을 비교하는 비교 유닛을 구비하는 제어부를 포함하고, 상기 제어부는, 상기 전송된 페이지의 내용이 동일한 경우, 상기 페이지의 내용이 동일함을 상기 해쉬 테이블에 비트(bit)값으로 표시한다.
상기 제어부는, 상기 메모리 셀 유닛에 새로운 페이지가 입력되는 경우, 상기 새로 입력된 페이지를 새로운 해쉬값으로 계산하여 상기 해쉬 테이블에 기록한다.
상기 제어부는, 외부로부터 명령을 받지 않는 경우, 상기 메모리 셀 유닛으로 상기 해쉬값이 동일한 페이지 주소를 전송한다.
상기 제어부는, 상기 전송된 페이지의 내용이 동일한 경우, 상기 동일한 내용을 갖는 페이지 중 어느 하나에 새로운 내용이 입력되더라도 상기 해쉬값을 변경하지 않는다.
상기 제어부는, 제1 플래그 신호를 출력하여, 상기 해쉬값을 계산하고, 상기 계산된 해쉬값을 상기 해쉬 테이블에 저장된 기존의 해쉬값과 비교하여, 상기 해쉬 테이블에 상기 계산된 해쉬값을 저장하며, 제2 플래그 신호를 출력하여 상기 비교 유닛에서 상기 동일한 해쉬값을 갖는 페이지의 내용을 비교한 결과에 따라 상기 비트값(bit)을 수정한다.
상술한 과제를 해결하기 위한 실시예에 따른 컴퓨터 시스템은, 상기 메모리 장치와, 상기 가상 주소를 송신하는 CPU와, 상기 CPU로부터 수신한 가상 주소를 페이지 주소형태로 변환하는 메모리관리유닛을 포함한다.
상기 CPU는, 상기 비트(bit)값을 기초로 상기 동일한 내용을 가진 페이지 중 어느 하나의 페이지를 지정하여 공유하도록 상기 동일한 내용을 가진 페이지의 주소를 변경한다.
상기 CPU는, 상기 동일한 내용을 갖는 페이지 중 어느 하나의 페이지에 새로운 데이터가 입력된 경우, 상기 공유된 페이지의 공유를 해지하고, 상기 새로운 데이터가 입력된 페이지를 위한 별도의 페이지를 할당하여 상기 공유된 페이지의 내용을 복사하고, 상기 새로운 데이터가 입력된 페이지의 페이지 주소를 상기 별도의 페이지의 주소로 설정한다.
상기 CPU는, 상기 비트값을 기초로 상기 동일한 내용을 가진 페이지 중 어느 하나의 페이지를 지정하여 공유하도록 상기 어느 하나의 페이지를 제외한 페이지의 주소를 변경한다.
상기 CPU는, 상기 제어부로 사용하지 않는 페이지에 관한 정보를 전송하고, 상기 제어부는, 상기 사용하지 않는 페이지에 대응하는 해쉬값을 상기 해쉬 테이블에서 제거한다.
본 발명의 실시예에 따르면, 기존에 CPU에서 담당하던 복수개의 가상화 머신을 사용함에 따라 발생하는 중복 메모리의 제거를 메모리 장치 내에서 함으로써, CPU의 부하를 줄일 수 있다.
또한, 메모리 장치 내부에서 메모리 중복 제거 작업을 수행함에 따라 CPU의 오버헤드를 줄임으로써, 전체 컴퓨터 시스템의 동작속도를 증가시킬 수 있다.
도 1은 본 발명의 실시예에 따른 컴퓨터 시스템의 구성요소를 간략히 도시한 블록도이다.
도 2는 본 발명의 실시예에 따른 컴퓨터 시스템을 도시한 블록도이다.
도 3은 본 발명의 실시예에 따른 가상 머신을 도시한 블록도이다.
도 4는 본 발명의 실시예에 따른 메모리 장치 내부의 시간에 따른 동작을 도시한 표이다.
도 5a는 시간에 따른 메모리 장치의 동작방법을 도시한 도이다.
도 5b는 본 발명의 일 실시예에 따른 메모리 장치의 동작방법을 예시한 표를 도시한 도이다.
도 6은 본 발명의 일 실시예에 따른 컴퓨터 시스템의 동작을 도시한 블록도이다.
도 7은, 본 발명의 일 실시예에 따른 해쉬 테이블과 페이지의 관계를 도시한 도이다.
도 8은, 본 발명의 일 실시예에 따른 컴퓨터 시스템의 동작방법에 관한 순서도이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1구성요소는 제2구성요소로 명명될 수 있고, 유사하게 제2구성요소는 제1구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다.
도 1은 본 발명의 실시예에 따른 컴퓨터 시스템의 구성요소를 간략히 도시한 블록도이다.
도 2는 본 발명의 실시예에 따른 컴퓨터 시스템을 도시한 블록도이다.
도 3은 본 발명의 실시예에 따른 가상 머신을 도시한 블록도이다.
도 1 내지 도 3을 참조하면, 실시예에 따른 컴퓨터 시스템(100)은, 메모리 장치(110), CPU(150) 및 메모리 관리 유닛(160), 대용량 저장장치(170), 디바이스(180), 및 가상 머신(200)을 포함할 수 있다.
본 발명의 컴퓨터 시스템(100)은 모바일 기기, 노트북, 및 데스크 톱 컴퓨터 등과 같은 시스템을 포함할 수 있다.
메모리 장치(110)는, 제어부(120), 메모리 셀 유닛(130), 및 해쉬유닛(140)을 포함할 수 있다.
메모리 장치(110)는, 인터페이스(미도시)를 통해 호스트(host) 즉, CPU(150) 및 메모리 관리 유닛(160)과 연결되며, DRAM(Dynamic Random Access Memory) 및 비휘발성 메모리(NVM: Non-Volatile Vemory)를 포함하며, 상기 비휘발성 메모리는 EEPROM, 플래시 메모리, MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque MRAM), FeRAM(Ferroelectiric RAM), PRAM(Phase change RAM), RRAM(Resistive RAM), 나노튜브 RRAM(nanotube RRAM), 폴리머 RAM(Polymer RAM), 나노 부유 게이트 메모리(Nano Floating Gate Memory), 홀로그래픽 메모리(holographic memory), 분자 전자 메모리 소자(Molecular Electronics Memory Device) 또는 절연 저항 변화 메모리(Insulator Resistance Change Memory)를 포함할 수 있다.
제어부(120)는 메모리 장치(110)의 전반적인 동작을 제어하며, 구체적으로 본 발명의 일실시예에 따르면, 컴퓨터 시스템(100)에서 가상화 환경을 사용하는 경우, 각각의 가상 머신(200)은 다수의 운영체제를 실행할 수 있다. 가상화 환경을 만들게 된 이유는, 일부 회로가 고장나더라도 자동으로 수정하여 전체적인 컴퓨터 시스템(100)에 영향이 없도록 고장 허용범위를 설정할 수 있고, 작업량을 균등하게 분산시켜 특정 어플리케이션에서 과부하가 생기는 것을 방지할 수 있기 때문이다. 이러한 가상화 환경은, 컴퓨터 시스템(100), 서버 등에서도 설정할 수 있다.
페이지(page)는, 4KB로, 1024 32비트 데이터 워드나 혹은 4096 8비트 바이트를 포함할 수 있다. 본 발명에서는 4KB 사이즈의 페이지(page)를 일 실시예로 들어 표현하고 설명하나, 본 발명의 기술은 어떤 사이즈의 페이지에도 적용이 가능하다.
제어부(120)는, CPU(150)로부터 전송된 새로운 페이지 주소에 기반하여 해쉬함수(Hash function)를 이용하여 해쉬값(Hash value)을 계산하는 해쉬유닛(Hash unit)(140)을 제어한다. 또한, 제어부는(120) 계산된 해쉬값(Hash value)이 동일한 페이지(page)들의 주소를 해쉬유닛(140)으로부터 전송받아 해쉬값이 동일한 페이지들의 내용을 전송하도록 메모리 셀 유닛(130)을 제어할 수 있다.
또한 제어부(120)는, 해쉬값이 동일한 페이지들의 구체적인 내용을 비교하는 비교유닛(125)을 구비할 수 있다. 비교유닛(125)에서 구체적인 내용을 비교한 결과, 내용이 동일한 페이지인 경우 제어부(120)는 내용이 동일한 페이지임을 해쉬유닛(140)에 비트값으로 표시할 수 있다. 비트값에 관하여는 도 5에서 후술하도록 한다.
내용이 동일한 페이지인 경우, 중복되는 내용을 갖는 페이지임에도, 각각메모리 셀 유닛을 차지하여 메모리 셀 유닛 뿐 아니라 가상화 환경에서 대용량 저장장치(170)의 효율성도 감소시킬 수 있다.
따라서, 해쉬값이 같은 페이지를 검출하여 분류한 후, 해쉬값이 같은 페이지들이 포함하고 있는 구체적인 내용을 비교하여, 내용이 동일한 경우 중복되는 페이지를 없앰으로써, 사용해야 할 메모리의 양을 줄이고 이에 따라 최소한의 비용으로 데이터를 유지, 관리 할 수 있다.
이를 데이터 중복 제거(data de-duplication)라하며, 구체적인 메모리 장치(110)의 동작은 후술하도록 한다.
CPU(150)는, 멀티 프로세서(Multi processor)나, 복수의 프로세서 코어(Processor Core)를 1개의 패키지에 집적한 멀티-코어 프로세서(Multi-Core Processor)일 수 있다. CPU(140)는, 컴퓨터 시스템(100)의 모든 부분의 동작에 관여할 수 있다. 본 발명의 실시예에 따르면, CPU(150)는 가상 주소(Virtual Address)를 메모리 관리 유닛(160)으로 송신하고, 메모리 관리 유닛(160)은 이를 받아 가상 주소(Virtual address)를 물리적인 메모리 상의 주소인 페이지 주소(page address)로 변환한다.
CPU(150)는, 적어도 하나의 디바이스(180)와 적어도 하나의 가상 머신(200)을 제어할 수 있다.
디바이스(180)는, 컴퓨터 시스템에 연결된 주변 장치들로, 입출력장치, 저장장치 등이며, 가상 머신(200)은 가상화 환경에서 구현될 수 있다.
도 3을 참조하면, 가상 머신(200)은 제1 어플리케이션(210)과 제2 어플리케이션(215), 드라이버(220), 가상CPU(230), 가상 디바이스(240), 가상메모리(250), 및 가상디스크(260)를 포함할 수 있다. 가상 CPU(230), 가상 디바이스(240), 및 가상 메모리(250) 모두 실제 컴퓨터 시스템(100)의 구성요소에 대응하여 같은 기능을 수행한다.
메모리 관리 유닛(Memory management unit : MMU)(160)은, CPU(150)가 읽고 쓰는 가상 주소(Virtual Address : VA)를 페이지 주소(Page Address : PA)로 변환할 수 있고, 상술한 도 2의 메모리 장치(110)로의 접근을 제어할 수 있다. 메모리 관리 유닛(160)이 페이지 주소(PA)로 변환할 때, 페이지 테이블(Page table)을 참조하는데, 페이지 테이블은, 페이지의 정보를 저장하고 있다. 페이지 테이블에 저장된 페이지의 정보에 따라 페이지의 주소를 알 수 있다. 또한, 페이지 테이블은 각 페이지에 대한 읽기/쓰기 접근 권한을 갖고 있다.
도 4는 본 발명의 실시예에 따른 메모리 장치 내부의 시간에 따른 동작을 도시한 표이다. 도 4는 일 예일 뿐 이에 한정되지 않는다.
제1 어플리케이션(210)과 제2 어플리케이션(215)이 동작하는 경우, CPU(150)가 출력하는 제1 어플리케이션(210)의 가상주소(Virtual address)가 가상주소1(VA1)인 경우, 메모리 관리유닛(MMU : Memory management unit)(160)에서 변환되어 페이지 주소1(PA1)로 변환된다. 즉, 제1 어플리케이션(210)은 페이지 주소1(PA1)을 지정하고 있다.
또한, CPU(150)가 출력하는 제2 어플리케이션(215)의 가상주소가 가상주소2(VA2)인 경우, 메모리 관리유닛(160)에서 페이지 주소2(PA2)로 변환된다. 즉, 제2 어플리케이션(215)은 페이지 주소2(PA2)를 지정하고 있다.
구체적으로, 제1 어플리케이션(210)은 페이지 주소1(PA1)에 저장된 데이터를 요청하고 있고, 제2 어플리케이션(215)은 페이지 주소2(PA2)에 저장된 데이터를 요청하고 있다. 이 때의 페이지 주소1(PA1) 및 페이지 주소2(PA2)는 모두 읽기와 쓰기가 모두 가능한 상태이다.
제어부(120)는 페이지 주소1의 내용과 페이지 주소2의 내용을 비교유닛(125)을 통해 비교한다. 전제로 페이지 주소1과 페이지 주소2는 동일한 해쉬값을 가진다. 비교유닛(125)에 의해 비교된 페이지 주소1의 내용과 페이지 주소2의 내용이 동일한 경우, 제어부(120)는 해쉬유닛(140) 내부의 비트(bit)값을 동일하게 설정할 수 있다.
CPU(150)에서 동작하는 운영체제 소프트웨어(OS)는 일정한 주기마다 해쉬유닛(140) 내부의 비트(bit)값을 읽을 수 있다. CPU(150)는 해쉬유닛(140) 내부의 해쉬 테이블을 통하여 페이지 주소1의 비트값과 페이지 주소2의 비트값이 같음을 인지하고, 제1 어플리케이션(210)이 용청하는 가상 주소1과 제2 어플리케이션(215)이 요청하는 가상 주소2가 모두 페이지 주소1로 지정되도록 페이지 테이블을 변경한다. 페이지 테이블은 메모리 장치(110)에 저장될 수 있다. CPU(150)가 페이지 테이블을 변경한 이후에는 메모리 관리유닛(160)이 페이지 테이블의 변경사항을 알 수 있다. 이 부분은 본 발명의 범위에 포함되지 않는 것으로 상세 기술하지 않는다.
구체적으로 메모리 장치(110) 내부의 페이지 정보를 저장하는 페이지 테이블의 페이지 정보를 변경하여, 동일한 내용을 갖는 페이지는 동일한 페이지 주소를 갖게 될 수 있다. 즉, CPU(150)는, 비트값을 기초로 동일한 내용을 가진 페이지 중 어느 하나의 페이지를 지정하여 공유하도록 동일한 내용을 가진 페이지들의 페이지 주소를 수정할 수 있다. 비트값에 관하여는 도 5에서 후술한다.
이 경우, 제1 어플리케이션(210)과 제2 어플리케이션(215)은, 페이지 주소1의 메모리를 읽기 전용으로 공유한다. 즉, 페이지1과 페이지2 모두 페이지 주소1를 갖는다. 또한 제어부(120)는, 페이지 주소1의 내용을 백업해 둘 수 있다.
동일한 내용을 갖는 페이지1 과 페이지2 중 페이지2에 새로운 데이터가 쓰여지는 경우,, 페이지2의 접근 권한은 읽기 전용으로 되어 있으므로, 메모리 관리 유닛(160)은 페이지 폴트(page fault)를 발생시켜 CPU(150)에게 전달할 수 있다.
CPU(150)는, 페이지 폴트(Page fault)를 인지하면, 페이지 2의 기존 접근 권한에 쓰기 권한이 있는지 여부를 검사할 수 있다.
페이지 2의 기존 접근 권한에 쓰기 권한이 있다면, 카피-온-라이트(Copy-on-write : COW)메커니즘을 통해 페이지 주소1의 공유를 해지하고, 페이지2를 위한 새로운 페이지 주소 3을 가진 페이지를 할당하여 여기에 페이지 1의 내용을 복사하고, 페이지 2의 주소를 페이지 주소 3으로 설정한다. CPU(150)는, 페이지1과 페이지 2 각각을 기존의 접근 권한으로 재설정할 수 있다.
페이지 2의 기존 접근 권한에 쓰기 권한이 없으면, 운영체제(OS)에 설정된 바에 따라 페이지 폴트를 처리한다. 예를 들면, 페이지 2에 쓰기를 시도한 제2 어플리케이션(215)을 강제 종료시킬 수 있다.
도 5a는, 시간에 따른 메모리 장치의 동작방법을 도시한 도이다.
도 5a를 참조하면, 메모리 장치(110)에 대한 접근 명령이 CPU(150)로부터 내려지면, 메모리 장치(110)는 메모리 셀 유닛(130)에 데이터를 저장할 수 있다. 저장된 데이터, 본 발명에서의 페이지에 저장된 데이터를 기초로 해쉬유닛(140)은 해쉬값을 계산하고, 해쉬값이 동일한 페이지는 해당하는 해쉬버켓(Hash Bucket)에 등록한다. 해쉬값 계산은 해쉬함수(Hash function)에 의하고, 해쉬함수는 CRC(Cyclic Redundancy Check), 체크섬(checksum) 방식을 사용할 수 있다. CRC 및 체크섬방식은 오류를 체크하는 방식으로 본 발명의 내용과 직접적인 관련이 없으므로 설명은 생략한다.
해쉬함수는 해쉬값을 계산하는 잘 정의된 절차 또는 수학적인 함수이다. 구체적인 해쉬유닛(140)의 동작은 도 6에서 후술하기로 한다.
메모리 장치(110)에 저장된 데이터를 읽은 후, CPU(150)는 휴지상태(Idle)에 들어간다. CPU(150)가 휴지상태가 되어 메모리 장치(110)에 입력되는 명령이 없을 때, 메모리 장치(110)의 제어부(120)는 동일한 해쉬값을 갖는 페이지들의 구체적인 내용을 바이트 투 바이트(byte-to-byte)로 비교할 수 있다.
비교 결과, 내용이 동일한 페이지 중 어느 하나의 페이지 주소로 변경하여 페이지 주소를 일치시킴으로써 내용을 공유한다.
도 5b는 본 발명의 일 실시예에 따른 메모리 장치의 동작방법을 예시한 표를 도시한 도이다.
도 5b 및 도 6을 참조하면, 페이지 주소가 0인 페이지와 페이지 주소가 5인 페이지의 내용이 동일하고, 페이지 주소가 1인 페이지와 페이지 주소가 9인 페이지의 내용이 동일한 경우, 해쉬유닛(140) 내부의 해쉬 테이블의 비트값의 변화를 도시한 도이다.
테이블 인덱스(i)는 단순한 주소형식이며, 어느 해쉬 테이블(646)의 어느 슬롯에 페이지를 분류할 것인지를 구분할 수 있는 값이다. 해쉬값에 따른 버켓 인덱스는 동일한 해쉬값을 갖는 페이지를 분류할 수 있는 값이다. 일 예로, 도면을 참조하면 A버켓 인덱스에는 동일한 해쉬값을 갖는 페이지들이 분류되어 도시되어 있다.
비트값은 적어도 하나의 비트로 구성될 수 있으며, 하나의 버켓내에 복수의 페이지가 각각 분류되어 보관될 수 있도록 구비되는 슬롯의 개수에 따라 비트값이 갖는 비트의 개수가 결정될 수 있다. 도면을 참조하면, A버켓엔 4개의 슬롯을 가지며, 이에 따라 2개의 비트를 갖는 비트값으로 결정되었다.
해쉬유닛(140)은 해쉬값이 동일한 페이지를 같은 버켓에 분류한다. 도면을 참조하면 페이지 주소가 0,5,12,9인 페이지는 A버켓 인덱스에 같이 분류되어 있다. 이는 해쉬값이 동일한 페이지의 경우, 동일한 내용을 포함하고 있을 가능성이 높기 때문에 일단 해쉬값이 동일한 페이지를 따로 분류한다.
모든 페이지의 내용을 일일이 비교할 수 없기 때문에, 해쉬값이 동일한 페이지들끼리 내용을 비교하여 중복제거를 수행하는 것이다.
즉, 도 5b는 도 5a의 중복제거구간에서 수행된다. A버켓 인덱스에 분류된 페이지들 중에서 페이지 주소가 0,5인 페이지의 내용이 동일하고, 페이지 주소가 12,9인 페이지의 내용이 동일한 경우, 제어부(120)는 해쉬 테이블의 비트값을 동일하게 수정한다.
이후, 동일한 비트값을 갖는 테이블은 내용이 동일하므로, 이를 기초로 같은 내용을 같은 페이지들은 내용을 공유할 수 있다.
즉, 중복 제거 구간은, CPU(150)가 휴지상태에 있는 구간이며, 제어부(120)는 이 구간에서 중복 제거를 수행할 수 있다.
도 6은 본 발명의 일 실시예에 따른 컴퓨터 시스템의 동작을 도시한 블록도이다.
컴퓨터 시스템(600)은, 메모리 장치(610)와 CPU(650)를 포함할 수 있다. 메모리 관리 유닛(160)은 도면 상으로만 생략되었으며, 가상 주소를 페이지 주소로 변환하는 역할을 할 수 있음은 상술한 바와 동일하다.
메모리 장치(610)는, 제어부(620), 메모리 셀 유닛(630), 해쉬유닛(640) 및 복수의 플래그(662, 664, 666)를 포함할 수 있다.
해쉬 유닛(640)은 해쉬값 계산부(642), 해쉬값 비교기(644), 해쉬 테이블(646) 및 해쉬 테이블포인터(648)을 포함할 수 있다.
해쉬값 계산부(642)는 메모리 장치(610)에 데이터가 쓰여지면, 이를 해쉬함수(Hash function)을 통하여 해쉬값을 계산할 수 있다.
해쉬값 비교기(644)는 해쉬값 계산부(642)에서 계산된 해쉬값을 해쉬 테이블(646)에 기존에 보관되어 있는 해쉬값과 비교한다. 해쉬 테이블 포인터(648)는,계산된 해쉬값이 기존에 해쉬 테이블(646)에 보관되어 있는 값이라면, 동일한 해쉬값을 갖는 페이지들이 보관된 버켓 인덱스에 같이 분류될 수 있도록 포인터를 지정할 수 있다. 해쉬값 비교기(644)에서 비교된 해쉬값이 새로운 해쉬값이라면, 바로 해쉬 테이블(646)에 보관될 수 있다.
또한, 해쉬 테이블 포인터(648)는 복수의 페이지들이 동일한 내용을 갖고 있는 경우, 동일한 내용을 갖는 복수의 페이지들이 갖는 비트값을 동일하게 설정하여 분류할 수 있다.
해쉬 테이블(646)은, 복수개의 버켓을 구비할 수 있고, 복수개의 버켓 각각은 복수개의 슬롯을 구비할 수 있다. 각각의 버켓엔 해쉬값이 같은 페이지가 보관되어 있다. 해쉬 테이블(646)은 테이블인덱스와 해쉬값에 따른 버켓 인덱스, 비트값, 및 페이지 주소에 관한 정보를 보관할 수 있다.
제어부(620)는, CPU(650)의 명령을 받아 플래그(662, 664, 666)에 제1 플래그 신호, 제2 플래그 신호 또는 제3 플래그 신호를 출력할 수 있다.
플래그(662,664,666)는 용도에 따라 여러 신호 중에 하나의 신호만 통과시키거나 또는 하나의 신호를 여러 개의 신호로 분할 시킬 수 있으며, 도면에는 멀티플렉서(MUX) 또는 디멀티플렉서(DMUX)로 도시되어 있으나, 이에 한정되는 것은 아니다.
즉, 제어부(620)에서 출력하는 플래그 신호의 종류에 따라, 플래그(662,664,666)에서 어떤 신호가 통과되고, 통과되지 않을지 여부가 결정된다.
일 실시예로, 제어부(620)는, 제1 플래그 신호를 출력하여, 해쉬값을 계산하도록 해쉬값 계산부(642)를 제어할 수 있다. 제어부(620)는 제1 플래그 신호를 출력하여, 해쉬값 계산부(642)에서 계산된 해쉬값을 해쉬 테이블(646)에 저장된 기존의 해쉬값과 비교하여, 해쉬값을 해쉬 테이블(646)에 저장할 수 있다.
제어부(620)는, 제1 플래그 신호를 출력하여, CPU(650)가 송신한 가상 주소가 변환된 페이지 주소를 갖는 새로운 페이지를 메모리 셀 유닛(630)에 저장할 수 있다.
또 다른 실시예로, 제어부(620)는 제2 플래그 신호를 출력하여, 비교유닛(625)에서 동일한 해쉬값을 갖는 페이지의 내용을 비교한 결과에 따라 해쉬 테이블(646)의 비트값을 수정할 수 있다.
또 다른 실시예로, 제어부(620)는 제3 플래그 신호를 출력하여, 해쉬 테이블(646)의 비트값을 기초로 동일한 내용을 갖는 페이지의 주소를 CPU(650)로 전송할 수 있다. 또한, 이때 CPU(650)는 동일한 내용을 갖는 페이지 중 어느 하나의 페이지를 지정하여 공유하도록 동일한 내용을 갖는 페이지 중 일부의 페이지 주소를 수정할 수 있다.
또한, CPU(650)는 비트값을 기초로 동일한 내용을 가진 페이지 중 어느 하나의 페이지를 지정하여 공유하도록 어느 하나의 페이지를 제외한 페이지의 주소를 수정할 수 있다.
즉, 제어부(620)는 상술한 플래그 신호의 종류를 변경하여 출력함으로써, 동일한 내용을 갖는 페이지의 주소를 일치시키고, 동일한 내용이 중복되어 저장되는 것을 방지할 수 있다.
예를 들어, 플래그 신호가 00인 경우, 해쉬값 계산부(624)와 해쉬값 비교기(644)는 활성화상태이며, 해쉬 테이블 포인터(648)에서는 포인터를 생성한다. 플래그 신호가 00인 경우는, 전체적으로 보았을 때, 해쉬 테이블(646)을 생성하는 과정이다. 이 때는, 메모리 셀 유닛(630)으로 전송되는 페이지 주소는 CPU(650)에서 전송하는 페이지 주소이다.
플래그 신호가 01인 경우가 동일한 내용을 가진 중복된 데이터를 제거하는 과정으로써, 해쉬값 계산부(642)와 해쉬값 비교기(644)는 불활성화되며, 메모리 셀 유닛(630)으로 전송되는 페이지 주소는 해쉬 테이블(646)에 저장된 페이지 주소이다. 즉, 메모리 셀 유닛(630)으로는 해쉬 테이블(646)에 저장된 페이지의 주소를 가진 페이지만 전송될 수 있다.
플래그 신호가 10인 경우는, CPU(650)가 중복 데이터의 제거를 위해 해쉬 테이블(646)의 비트값을 읽을 수 있도록 한다.
메모리 셀 유닛(630)은 저장된 페이지를 플래그(664)를 통하여 버퍼(626,628)로 전송할 수 있다. 버퍼(626,628)는 메모리 셀 유닛(630)에서 전송되는 해쉬값이 동일한 페이지의 개수 이상의 수를 가질 수 있다. 제어부(620)는, 버퍼(626,628)로 동일한 해쉬값을 갖는 페이지의 데이터를 전송하며, 비교유닛(625)으로 하여금, 각각의 페이지의 구체적인 내용이 동일한지 여부를 판단할 수 있다.
제어부(620)는 각각의 페이지의 구체적인 내용이 동일한 경우, 이를 해쉬 테이블 포인터(648)로 전송하여, 해쉬 테이블(640)의 비트값을 수정할 수 있다.
제어부(620)는 메모리 셀 유닛(630)에 새로운 페이지가 입력되는 경우, 새로 입력된 페이지를 새로운 해쉬값으로 계산하여 해쉬 테이블(646)에 기록할 수 있다.
CPU(650)는, 사용하지 않는 페이지가 존재하는 경우, 컴퓨터 시스템(600)에서 사용하지 않는 페이지에 관한 정보를 제어부(620)로 전송하고, 제어부(620)는, 사용하지 않는 페이지에 대응하는 해쉬값을 해쉬 테이블(646)에서 제거할 수 있다.
이에 관한 구체적인 예는 도 7에서 후술하기로 한다.
도 7은, 본 발명의 일 실시예에 따른 해쉬 테이블과 페이지의 관계를 도시한 도이다.
도 7은 본 발명의 일 실시예일 뿐, 페이지의 개수나 페이지의 주소, 버켓의 개수, 버켓에 분류되는 페이지의 개수 등은 도면에 한정되지 않는다.
도면을 참조하면, 페이지(710)는 총 8개로 1부터 8까지의 페이지 주소(715)를 갖는다. 상술한 바와 같이 해쉬 테이블(646)은 복수개의 버켓으로 구성되며, 각각의 버켓에는 동일한 해쉬값을 갖는 페이지들이 분류되어 저장될 수 있다.
도 7에는, 버켓0에는 페이지 주소 1과 2를 가진 페이지들이 분류되어 저장되며, 버켓1에는 페이지 주소6을 가진 페이지들이 분류되어 저장된다. 버켓2에는 페이지 주소 3을 가진 페이지들이 분류되어 저장되었으며, 버켓3에는 페이지 주소 4,5,7 및 8를 가진 페이지들이 분류되어 저장되어 있다.
즉, 페이지 주소 1과 2를 가진 페이지들의 해쉬값(Hash value)은 동일하며, 페이지 주소 4,5,7,및 8를 가진 페이지들의 해쉬값은 동일함을 알 수 있다.
비교유닛(625)는 각 버켓에 저장된 페이지들의 내용을 비교하고, 이를 기초로 제어부(620)는 페이지 테이블의 페이지 주소를 수정할 수 있다.
도 8은, 본 발명의 일 실시예에 따른 컴퓨터 시스템의 동작방법에 관한 순서도이다.
외부로부터 메모리 장치(620) 내부로 새로운 페이지가 입력된다(S801).
제어부(620)를 통해 제1 플래그 신호가 플래그(662,664,666)로 입력되는 경우(S803), 해쉬값 계산부(642)는, 해쉬함수를 이용하여 해쉬값을 계산할 수 있다(S805). 이에 따라 계산된 해쉬값이 해쉬 테이블(646)에 기록되어, 해쉬 테이블(646)이 생성될 수 있다(S807). CPU(650)가 휴지상태(Idle)인지 여부에 따라(S809), 휴지상태인 경우, 제어부(620)를 통해 제2 플래그 신호가 입력된다(S811). 즉, 메모리 장치 (620)의 외부로부터 어떤 명령도 받는 않는 상태에서 제어부(620)는 메모리 셀 유닛(630)으로 해쉬값이 동일한 페이지 주소를 전송하도록 할 수 있다.
제어부(620)는 중복 데이터 즉, 내용이 동일한 페이지를 파악하는 과정에서 동일한 해쉬값을 갖는 페이지 주소를 메모리 셀 유닛(630)에 전송할 수 있다(S813). 비교 유닛(625)은, 해쉬값이 동일한 페이지의 내용을 비교할 수 있다(S815). 제어부(620)는 해쉬값이 동일한 페이지들의 내용까지 동일한 경우, 해쉬 테이블(646)의 비트값을 변경할 수 있다(S817).
CPU(650)가 중복 데이터의 제거를 위해 해쉬 테이블(646)의 비트값을 읽을 수 있도록, 제어부(620)는 제3 플래그 신호를 출력할 수 있다(S819). CPU(650)는, 해쉬 테이블(646)의 비트값을 참조하여 동일한 내용을 갖는 페이지들을 알 수 있다. CPU(650)는, 동일한 내용을 갖는 페이지들 중 어느 하나를 지정하여 내용을 공유하도록 페이지 테이블을 수정할 수 있다(S821)
CPU(650)는 동일 내용을 공유하던 페이지 중 어느 하나에 새로운 데이터가 입력되면, 공유를 해지할 수 있다(S823).CPU(650)는 공유가 해지된 후, 새로운 데이터가 입력된 페이지를 위한 별도의 페이지를 할당할 수 있다(S825). CPU(650)는 할당된 별도의 페이지에 공유된 페이지의 내용을 복사하고(S827), 새로운 데이터가 입력된 페이지의 페이지 주소를 별도의 페이지의 주소로 설정할 수 있다(S829).
중복된 데이터를 인지하는 과정은 CPU(650)가 휴지상태에서 수행되므로, CPU(650)가 휴지 상태가 아닌 경우, 제어부(620)는 제2 플래그 신호를 출력하지 않는다. CPU(650)가 메모리 장치(610)에 새로운 데이터를 기록하는 과정에서, 메모리 장치(610)는 해쉬함수를 이용하여 계산된 해쉬값에 따라 해쉬 테이블(646)을 기록하고 생성하는 과정을 수행할 수 있다.
이상에서는 바람직한 실시예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해되어져서는 안될 것이다.
100, 600 : 컴퓨터 시스템 110, 610 : 메모리 장치
120, 620 : 제어부 125, 625 : 비교 유닛
130, 630 : 메모리 셀 유닛 140, 640 : 해쉬 유닛
150, 650 : CPU 626, 628 : 버퍼
642 : 해쉬값 계산부 644 : 해쉬값 비교기
646 : 해쉬 테이블 648 : 해쉬 테이블 포인터
662, 664, 666 : 플래그

Claims (10)

  1. 해쉬값에 기초하여 생성된 해쉬 테이블을 구비하는 해쉬 유닛;
    상기 해쉬값이 동일한 페이지의 주소를 상기 해쉬 유닛으로부터 전송받아 상기 주소를 갖는 페이지의 내용을 전송하는 메모리 셀 유닛;및
    상기 전송된 페이지의 내용을 비교하는 비교 유닛을 구비하는 제어부를 포함하고,
    상기 제어부는,
    상기 전송된 페이지의 내용이 동일한 경우, 상기 페이지의 내용이 동일함을 상기 해쉬 테이블에 비트(bit)값으로 표시하는 메모리 장치.
  2. 제1항에 있어서, 상기 제어부는,
    상기 메모리 셀 유닛에 새로운 페이지가 입력되는 경우, 상기 새로 입력된 페이지를 새로운 해쉬값으로 계산하여 상기 해쉬 테이블에 기록하는 메모리 장치.
  3. 제1항에 있어서, 상기 제어부는,
    외부로부터 명령을 받지 않는 경우, 상기 메모리 셀 유닛으로 상기 해쉬값이 동일한 페이지 주소를 전송하는 메모리 장치.
  4. 제1항에 있어서, 상기 제어부는,
    상기 전송된 페이지의 내용이 동일한 경우, 상기 동일한 내용을 갖는 페이지 중 어느 하나에 새로운 내용이 입력되더라도 상기 해쉬값을 변경하지 않는 메모리 장치.
  5. 제1항에 있어서, 상기 제어부는,
    제1 플래그 신호를 출력하여, 상기 해쉬값을 계산하고, 상기 계산된 해쉬값을 상기 해쉬 테이블에 저장된 기존의 해쉬값과 비교하여, 상기 해쉬 테이블에 상기 계산된 해쉬값을 저장하며,
    제2 플래그 신호를 출력하여 상기 비교 유닛에서 상기 동일한 해쉬값을 갖는 페이지의 내용을 비교한 결과에 따라 상기 비트값(bit)을 수정하는 메모리 장치.
  6. 제1항의 메모리 장치;
    가상 주소를 송신하는 CPU(Central Processing Unit); 및
    상기 CPU로부터 수신한 상기 가상 주소를 페이지 주소로 변환하는 메모리관리유닛을 포함하는 컴퓨터 시스템.
  7. 제6항에 있어서, 상기 CPU는,
    상기 비트(bit)값을 기초로 상기 동일한 내용을 가진 페이지 중 어느 하나의 페이지를 지정하여 공유하도록 상기 동일한 내용을 가진 페이지의 주소를 변경하는 컴퓨터 시스템.
  8. 제7항에 있어서, 상기 CPU는,
    상기 동일한 내용을 가진 페이지 중 어느 하나의 페이지에 새로운 데이터가 입력된 경우, 공유된 페이지의 공유를 해지하고, 상기 새로운 데이터가 입력된 페이지를 위한 별도의 페이지를 할당하여 상기 공유된 페이지의 내용을 복사하고, 상기 새로운 데이터가 입력된 페이지의 페이지 주소를 상기 별도의 페이지의 주소로 설정하는 컴퓨터 시스템.
  9. 제6항에 있어서, 상기 CPU는,
    상기 비트값을 기초로 상기 동일한 내용을 가진 페이지 중 어느 하나의 페이지를 지정하여 공유하도록 상기 어느 하나의 페이지를 제외한 페이지의 주소를 변경하는 컴퓨터 시스템.
  10. 제6항에 있어서, 상기 CPU는,
    상기 제어부로 사용하지 않는 페이지에 관한 정보를 전송하고, 상기 제어부는, 상기 사용하지 않는 페이지에 대응하는 해쉬값을 상기 해쉬 테이블에서 제거하는 컴퓨터 시스템.
KR1020110031361A 2011-04-05 2011-04-05 메모리 장치, 및 이를 포함하는 컴퓨터 시스템 KR101738074B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020110031361A KR101738074B1 (ko) 2011-04-05 2011-04-05 메모리 장치, 및 이를 포함하는 컴퓨터 시스템
US13/437,418 US8732434B2 (en) 2011-04-05 2012-04-02 Memory device, computer system including the same, and operating methods thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110031361A KR101738074B1 (ko) 2011-04-05 2011-04-05 메모리 장치, 및 이를 포함하는 컴퓨터 시스템

Publications (2)

Publication Number Publication Date
KR20120113584A KR20120113584A (ko) 2012-10-15
KR101738074B1 true KR101738074B1 (ko) 2017-05-19

Family

ID=46967021

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110031361A KR101738074B1 (ko) 2011-04-05 2011-04-05 메모리 장치, 및 이를 포함하는 컴퓨터 시스템

Country Status (2)

Country Link
US (1) US8732434B2 (ko)
KR (1) KR101738074B1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9088406B2 (en) * 2012-07-29 2015-07-21 Qualcomm Incorporated Frame sync across multiple channels
KR101419428B1 (ko) * 2012-10-17 2014-07-17 주식회사 리얼타임테크 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치 및 그 방법
US9898404B2 (en) * 2013-07-14 2018-02-20 Cnex Labs Method and apparatus for providing improved garbage collection process in solid state drive
CN103544292B (zh) * 2013-10-29 2017-05-24 大唐移动通信设备有限公司 基于HASH表的Diameter消息处理方法和装置
KR102140792B1 (ko) 2013-12-24 2020-08-03 삼성전자주식회사 데이터 중복 제거를 수행할 수 있는 데이터 저장 장치의 동작 방법들
US9613121B2 (en) * 2014-03-10 2017-04-04 International Business Machines Corporation Data duplication detection in an in memory data grid (IMDG)
US9823842B2 (en) 2014-05-12 2017-11-21 The Research Foundation For The State University Of New York Gang migration of virtual machines using cluster-wide deduplication
KR101729097B1 (ko) 2014-06-09 2017-04-24 한국전자통신연구원 복수의 가상 머신에서 수행되는 응용 프로그램들간 참조 데이터를 공유하는 방법 및 이를 위한 참조 데이터 관리 장치 및 시스템
US9575661B2 (en) * 2014-08-19 2017-02-21 Samsung Electronics Co., Ltd. Nonvolatile memory systems configured to use deduplication and methods of controlling the same
CN104282330B (zh) * 2014-09-29 2017-04-05 山东华芯半导体有限公司 增加动态随机存储器可靠性的方法和电路
KR102252376B1 (ko) 2014-12-08 2021-05-14 삼성전자주식회사 셀 특성 플래그를 이용하여 리프레쉬 동작을 제어하는 메모리 장치
US10255208B2 (en) * 2016-03-04 2019-04-09 Toshiba Memory Corporation Data transfer apparatus and data transfer system
US10496543B2 (en) * 2016-03-31 2019-12-03 Samsung Electronics Co., Ltd. Virtual bucket multiple hash tables for efficient memory in-line deduplication application
CN110134509B (zh) * 2018-02-08 2021-07-27 中移(苏州)软件技术有限公司 一种数据的缓存方法及设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100023941A1 (en) 2008-07-28 2010-01-28 Fujitsu Limted Virtual machine monitor
US8463981B2 (en) 2010-12-08 2013-06-11 Hitachi, Ltd. Storage apparatus having deduplication unit

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1244221A1 (en) 2001-03-23 2002-09-25 Sun Microsystems, Inc. Method and system for eliminating data redundancies
US6789156B1 (en) 2001-05-22 2004-09-07 Vmware, Inc. Content-based, transparent sharing of memory units
US8209506B2 (en) 2007-09-05 2012-06-26 Emc Corporation De-duplication in a virtualized storage environment
US8074047B2 (en) 2008-05-16 2011-12-06 International Business Machines Corporation System and method for content replication detection and elimination in main memory

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100023941A1 (en) 2008-07-28 2010-01-28 Fujitsu Limted Virtual machine monitor
US8463981B2 (en) 2010-12-08 2013-06-11 Hitachi, Ltd. Storage apparatus having deduplication unit

Also Published As

Publication number Publication date
US8732434B2 (en) 2014-05-20
KR20120113584A (ko) 2012-10-15
US20120260060A1 (en) 2012-10-11

Similar Documents

Publication Publication Date Title
KR101738074B1 (ko) 메모리 장치, 및 이를 포함하는 컴퓨터 시스템
US20200151104A1 (en) System having persistent memory
EP3274806B1 (en) Sequential write stream management
US11487675B1 (en) Collecting statistics for persistent memory
US10593380B1 (en) Performance monitoring for storage-class memory
CN113806253A (zh) 受到损害的存储设备固件的检测
US10657052B2 (en) Information handling system with priority based cache flushing of flash dual in-line memory module pool
US11314635B1 (en) Tracking persistent memory usage
KR20130107070A (ko) Ssd 콘트롤러 및 그의 제어 방법
US20230072589A1 (en) Hierarchical memory systems
US10459662B1 (en) Write failure handling for a memory controller to non-volatile memory
US10642727B1 (en) Managing migration events performed by a memory controller
US10956245B1 (en) Storage system with host-directed error scanning of solid-state storage devices
KR102555800B1 (ko) 스토리지 시스템 및 그 동작 방법
KR102440665B1 (ko) 계층적 메모리 장치
US11650843B2 (en) Hierarchical memory systems
US11914879B2 (en) Storage controller and storage system comprising the same
US11106595B2 (en) Hierarchical memory systems
US20210255807A1 (en) Hierarchical memory systems
KR20220043226A (ko) 계층적 메모리 장치
KR20220047825A (ko) 계층적 메모리 장치
KR20220014272A (ko) 복사 명령 처리 시스템 및 방법
WO2020055534A1 (en) Hybrid memory system interface

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