KR20210113297A - 컴퓨터 메모리 내의 복제 및 밸류 중복성을 제거하기 위한 시스템, 방법, 및 장치 - Google Patents

컴퓨터 메모리 내의 복제 및 밸류 중복성을 제거하기 위한 시스템, 방법, 및 장치 Download PDF

Info

Publication number
KR20210113297A
KR20210113297A KR1020217024939A KR20217024939A KR20210113297A KR 20210113297 A KR20210113297 A KR 20210113297A KR 1020217024939 A KR1020217024939 A KR 1020217024939A KR 20217024939 A KR20217024939 A KR 20217024939A KR 20210113297 A KR20210113297 A KR 20210113297A
Authority
KR
South Korea
Prior art keywords
memory
unique
block
memory object
memory block
Prior art date
Application number
KR1020217024939A
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
Application filed by 제로포인트 테크놀로지 에이비 filed Critical 제로포인트 테크놀로지 에이비
Publication of KR20210113297A publication Critical patent/KR20210113297A/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/04Addressing variable-length words or parts of words
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • 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
    • 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
    • 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/0877Cache access modes
    • G06F12/0882Page mode
    • 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
    • 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
    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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
    • 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/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3088Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3091Data deduplication
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4031Fixed length to variable length coding
    • H03M7/4037Prefix coding
    • H03M7/4043Adaptive prefix coding
    • H03M7/405Tree adaptation
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6017Methods or arrangements to increase the throughput
    • H03M7/6029Pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Peptides Or Proteins (AREA)
  • Medicines Containing Antibodies Or Antigens For Use As Internal Diagnostic Agents (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

컴퓨터 메모리 압축 방법은 복제 메모리 객체뿐만 아니라 고유 메모리 객체 내에 데이터 값의 밸류 중복성의 발생에 대한 컴퓨터 메모리 콘텐츠를 분석하는 단계(1210)를 포함한다. 컴퓨터 메모리 콘텐츠는 복제 메모리 객체를 제거하고 잔여 고유 메모리 객체의 데이터 값의 데이터 값 국부성을 활용하여 각 잔여 고유 메모리 객체를 압축함으로써 인코딩(1220) 된다. 메타데이터(500)는 인코딩 된 컴퓨터 메모리 콘텐츠의 메모리 객체를 나타내도록 제공(1230)된다. 메타데이터는 제거된 복제 메모리 객체, 잔여 고유 메모리 객체, 및 각 잔여 고유 메모리 객체의 압축에 사용된 압축의 유형을 반영한다. 인코딩 된 컴퓨터 메모리 콘텐츠 내의 메모리 객체는 메타데이터(500)를 활용하여 위치가 파악(1240)된다.

Description

컴퓨터 메모리 내의 복제 및 밸류 중복성을 제거하기 위한 시스템, 방법, 및 장치
본 발명은 일반적으로 전자 컴퓨터의 메모리의 데이터 압축 분야에 관한 것이다.
데이터 압축은 빈번한 데이터의 모음을 덜 빈번한 데이터의 모음보다 더 효율적으로 코딩하여 데이터를 더욱 효율적으로 저장하고 전송하는 일반적인 방법이다. 일반적으로, 여러 이유로 인해 데이터를 더욱 효율적으로 저장하고 전송하고 싶어 한다. 예컨대, 주 메모리 또는 캐시 메모리 등과 같은 곳에 데이터 및 처리장치를 동작시키는 컴퓨터 명령어를 저장하는 메모리 등의 컴퓨터 메모리에서는, 이러한 데이터를 예를 들어 K배 더 효율적으로 저장하고자 하는데, 이는 한 메모리에서 다른 메모리로 데이터를 전송하는데 K배 더 적은 통신 용량을 사용하고 이러한 데이터를 컴퓨터 시스템 내부에 또는 컴퓨터 시스템 사이에 및/또는 메모리 사이에 저장 및 전송하는데 K배 적은 에너지를 소비할 수 있어서 이러한 메모리의 사이즈를 K배 줄일 수 있기 때문이다. 대안적으로, 데이터 압축을 하지 않는 것보다 사용 가능한 컴퓨터 메모리에 K배 더 많은 데이터를 저장할 수 있다. 이로써, 비용이 많이 들 수 있고 리소스 제약으로 인해 덜 바람직할 수 있는 메모리 추가를 하지 않고 컴퓨터의 성능을 K배 향상시킬 수 있다. 다른 예를 들면, 스마트폰, 태블릿, 노트북 컴퓨터, 데스크톱 컴퓨터, 또는 셋톱 박스의 크기 및 무게는 커지거나 무거워질수록 사용자에게 가치가 줄어들고 따라서 이러한 제품의 시장 가치가 떨어질 수 있기 때문에 제한적일 수 있다. 그럼에도 불구하고, 더욱 큰 메모리 용량과 메모리 통신 대역폭은 성능의 향상으로 이어지고 이러한 제품을 더 잘 활용할 수 있게 해주므로, 더욱 큰 메모리 용량과 메모리 통신 대역폭은 이러한 제품의 시장 가치를 상승시킬 수 있다.
요약하면, 단독 장치 또는 상호 연결된 장치를 포함하는 컴퓨터 장치의 일반적인 환경에서, 데이터 압축은 성능을 향상하고, 에너지 소비를 줄이며, 메모리 통신 대역폭을 증가하거나 메모리에 의해 소비되는 비용과 면적을 줄일 수 있다. 따라서, 데이터 압축은 여기에 설명한 활용 외에도 넓은 범위의 컴퓨터 제품에서 다양하게 활용될 수 있다.
통상적으로, 종래 기술의 압축 메모리 시스템은 메모리 페이지의 생성시에 디스크로부터 메모리 페이지를 읽어오거나 메모리 할당을 통하여 메모리 페이지를 압축한다. 압축은 소프트웨어 루틴 또는 하드웨어 가속기에 의한 다양한 공지의 방법을 활용하여 이루어질 수 있다. 프로세서가 메모리로부터 데이터를 요청하는 경우, 데이터는 요청하는 프로세서에 응답하기 전에 우선 압축해제 되어야 한다. 이러한 요청은 결국 중요 메모리 액세스 경로에 이르게 되므로, 메모리 액세스 시간에 영향이 작게 하기 위하여 압축해제는 통상적으로 하드웨어 가속된다.
중복 제거(deduplication)이라고 불리는 한 가지 압축 방법에서, 동일한 메모리 객체를 식별하는 것을 기본 개념으로 한다. 예컨대, 메모리가 동일한 페이지의 동일한 5개의 인스턴스를 포함한다고 가정하면, 1개의 인스턴스만 저장되면 되고, 나머지 4개의 인스턴스는 이 1개의 인스턴스를 참조할 수 있으므로, 인수가 5인 압축 비율을 제공한다. 종래 기술에서 공지의 중복 제거는 사이즈가 통상적으로 약 수 킬로바이트(KB) 내지 수십 KB 또는 그 이상인 메모리 페이지 및 사이즈가 통상적으로 예를 들어 64 바이트(64B)와 같이 수십 바이트인 메모리 블록과 같은 입도(granularity)의 범위의 고정 사이즈 객체에 적용되어 왔다. 다른 종래 기술은 가변 사이즈 저장 파일과 같은 가변 입자 사이즈를 고려한다. 결국, 중복 제거는 동일한 메모리 객체 발생의 중복만을 제거한다는 한계가 있다.
동일한 객체를 제거하는데 있어서, 제거된 객체는 그 객체와 동일한 단독 객체에 대한 참조를 성립해야 한다. 포인터의 차원에서, 참조는 메모리 객체의 유일한 사본을 가리켜야 하고, 이는 메모리 공간을 차지한다. 따라서, 중복 제거는 상당한 압축 메타데이터 오버헤드로 이어질 수 있다. 예를 들어, 1 테라바이트(= 240 바이트)의 메모리에서 64B(=26 바이트)의 메모리 블록에 중복 제거가 적용된다고 가정하면, 중복 제거된 메모리 블록의 고유 사본을 가리키는데 (40-6=) 34비트 참조 포인터가 필요하다.
종래 기술로부터 알려진 대안적인 압축 방법들은 밸류 중복성(value redundancy)(단일 워드의 차원에서, 예를 들면 32비트 또는 64비트)을 활용한다. 예를 들면, 다른 메모리 객체보다 더 흔한 메모리 객체는 덜 흔한 메모리 객체보다 적은 비트로 인코딩 되게 된다. 일례로, 엔트로피 기반 압축 방식은 예를 들어 허프만 코딩(Huffman coding), 산술 코딩(arithmetic coding) 등을 포함하는 종래 기술에 많다. 다른 압축 방식에는 예를 들어, 메모리 페이지 및 블록과 같은 데이터 객체에 저장된 수치는 숫자상으로 서로 가깝고 그 사이의 차이를 밀집하여 인코딩한다는 점을 활용하는 Base-Delta-Immediate 압축이 포함된다.
중요한 것은, 중복을 제거하는 중복 제거 방식과 엔트로피 기반 압축과 Base-Delta-Immediate 압축과 같은 밸류 국부성(value locality)을 활용하는 밸류 중복성을 제거하는 압축 방식은 여러 차원에서 상호 보완적이라는 것이다. 동일 페이지의 단일 사본이 저장되는 반면에 사본으로부터 참조 포인터가 제공되어 고유 사본을 참조하는 페이지 기반 중복 제거를 예를 들어보면, 이러한 중복 제거 스키마는 페이지 이내의 워드 레벨(예, 32비트 또는 64비트 엔티티)과 같은 미세 입도에 존재하는 밸류 중복성을 이용하지 않는다.
밸류 중복성을 감소시키는 압축 스키마와 중복 제거를 조합함으로써, 각 데이터의 통계적 값의 성질에 기초하여 각 데이터 값을 고유 사본 내부에 인코딩하여 중복을 제거하고 잔존하는 고유 사본을 훨씬 조밀하게 저장하는 것이 가능하다.
본 명세서는 복제와 밸류 중복성을 제거하는 컴퓨터 메모리에 적용되는 일군의 압축 방식의 장치, 시스템, 및 방법을 제공하는 발명을 개시하고자 한다.
중복 제거와 밸류 국부성 기반 압축을 조합하려 하면, 몇 가지 난관에 부딪히게 된다. 첫번째 문제는 복제를 제거할 뿐만 아니라 밸류 국부성 기반 방식을 활용하여 잔존하는 고유 사본에 아이템을 압축함으로써 압축성에 통합된 게인을 제공하는 인코딩을 찾는 방법이다. 압축된 메모리에서 메모리 블록을 효율적으로 찾기 위해서, 중복 제거와 밸류 국부성 기반 압축의 조합된 방식을 사용하면, 메타데이터의 양을 낮게 유지하고 압축 장치와 압축해제 장치가 메모리 지연 오버헤드를 낮게 부과하도록 하는 문제에 부딪히게 된다. 따라서, 두번째 문제는 메타데이터의 양을 낮게 유지할 수 있고 메모리 지연 오버헤드를 낮게 부과하는 압축 및 압축해제 방법, 장치, 및 시스템을 구성하는 것이다. 동작에서, 데이터 객체는 프로세서 쓰기에 대응하여 변하게 된다. 그 결과, 복제 및 고유 블록의 성질이 복제의 수뿐만 아니라 잔존하는 고유 사본의 밸류 국부성의 통계적 성질에 관하여 변하게 된다. 세번째 문제는 이러한 동적 효과에 비추어 압축성을 높게 유지할 수 있는 방법, 장치, 및 시스템을 제공하는 것이다. 여기에 개시된 발명은 이러한 문제 및 기타 문제를 해결하기 위한 것이다.
본 발명의 제1 양상은 컴퓨터 메모리 압축 방법이다. 본 방법은 복제 메모리 객체뿐만 아니라 고유 메모리 객체 내에 데이터 값의 밸류 중복성의 발생에 대한 컴퓨터 메모리 콘텐츠를 분석하는 단계를 포함한다. 본 방법은 또한 상기 복제 메모리 객체를 제거하고 각 잔여 고유 메모리 객체의 데이터 값의 데이터 값 국부성을 활용하여 각 잔여 고유 메모리 객체를 압축하여 상기 컴퓨터 메모리 콘텐츠를 인코딩하는 단계를 포함한다. 본 방법은 또한 인코딩 된 컴퓨터 메모리 콘텐츠의 메모리 객체를 나타내는 메타데이터를 제공하는 단계를 포함한다. 메타데이터는 제거된 복제 메모리 객체, 잔여 고유 메모리 객체, 및 각 잔여 고유 메모리 객체의 압축에 사용된 압축의 유형을 반영한다. 본 방법은 또한 상기 메타데이터를 활용하여 인코딩 된 컴퓨터 메모리 콘텐츠에서 메모리 객체의 위치를 찾아내는 단계를 포함한다.
본 발명의 제2 양상은 컴퓨터 메모리 압축 장치이다. 본 장치는 복제 메모리 객체뿐만 아니라 고유 메모리 객체 내에 데이터 값의 밸류 중복성의 발생에 대한 컴퓨터 메모리 콘텐츠를 분석하도록 구성된 애널라이저 유닛을 포함한다. 본 장치는 또한 상기 복제 메모리 객체를 제거하여 상기 컴퓨터 메모리 콘텐츠를 인코딩하고 데이터 값의 데이터 값 국부성을 활용하여 각 잔여 고유 메모리 객체를 압축하도록 구성된 인코더 유닛을 포함한다. 인코더 유닛은 또한 인코딩 된 컴퓨터 메모리 콘텐츠의 메모리 객체를 나타내는 메타데이터를 제공하도록 구성된다. 메타데이터는 제거된 복제 메모리 객체, 잔여 고유 메모리 객체, 및 각 잔여 고유 메모리 객체의 압축에 사용된 압축의 유형을 반영한다. 본 장치는 또한 상기 메타데이터를 활용하여 인코딩 된 컴퓨터 메모리 콘텐츠에서 메모리 객체의 위치를 찾아내도록 구성된 로케이터 유닛을 포함한다.
개시된 실시예들의 기타 양상, 목적, 특징, 이점은 하기의 상세한 설명, 첨부된 청구 범위, 및 도면으로부터 명확해질 것이다.
일반적으로, 본 명세서에 설명하는 바와 같은 데이터 값 국부성을 활용하는 압축은 엔트로피 기반 인코딩, 델타 인코딩, 사전 기반 인코딩, 또는 패턴 기반 인코딩을 포함할 수 있으며, 이에 한정되지 않는다.
일반적으로, 청구 범위에 사용된 모든 용어는, 본 명세서에서 명시적으로 다르게 정의하지 않는 한, 본 기술 분야의 일반적인 의미에 따라 해석되어야 한다. 구성요소, 장치, 성분, 수단, 단계 등에 관한 모든 내용은, 본 명세서에서 명시적으로 다르게 설명되어 있진 않는 한, 적어도 하나의 이러한 구성요소, 장치, 성분, 수단, 단계 등을 지칭하는 것으로 개방적으로 해석되어야 한다. 여기에 개시된 모든 방법의 단계들은, 본 명세서에서 명시적으로 다르게 설명되어 있진 않는 한, 반드시 개시된 순서로 수행되지 않아도 된다.
도 1은 하나 또는 복수의 처리 유닛, 3단계의 예시적인 캐시 계층, 하나 또는 복수의 오프칩(off-chip) 메모리에 연결된 하나 또는 복수의 메모리 컨트롤러를 가진 마이크로프로세서 칩을 포함하는 컴퓨터 시스템을 도시한 것이다.
도 2는 데이터 및 명령어를 메모리에 압축하도록 구성된 도 1에 도시된 바와 같은 컴퓨터 시스템을 도시한 것이다.
도 3은 중복 제거 및 밸류 중복성 제거 압축 방법의 적용 전과 후의 예시적인 메모리 페이지 레이아웃을 도시한 것이다.
도 4는 페이지 이내에 고유 블록을 계속 파악하기 위한 트리 기반 데이터 구조의 예시적인 레이아웃을 도시한 것이다.
도 5는 중복 제거와 기타 압축 방법의 조합을 활용하여 메모리 페이지를 압축하기 위한 메타데이터 구조와 그 사용예를 도시한 것이다.
도 6은 중복 제거 프로세스의 순서도를 도시한 것이다.
도 7은 밸류 중복성 제거 압축 방법의 순서도를 도시한 것이다.
도 8은 고유 메모리 블록의 변경에 대응한 예시적인 메모리의 변화를 도시한 것이다.
도 9는 중복 제거된 메모리 블록의 변경에 대응한 예시적인 메모리의 변화를 도시한 것이다.
도 10은 중복 제거 및 밸류 중복성 제거 압축 방법을 활용하여 메모리 블록의 위치를 설정하기 위한 주소 변환 유닛을 도시한 것이다.
도 11은 중복 제거 및 밸류 중복성 제거 압축 방법을 활용하여 메모리 블록을 압축해제 하기 위한 압축해제기 유닛을 도시한 것이다.
도 12는 컴퓨터 메모리 압축 방법의 일반적인 순서도를 도시한 것이다.
본 명세서는 컴퓨터 메모리 내의 복제와 밸류 중복성을 제거하는 일군의 압축 방식으로 컴퓨터 메모리 내의 데이터를 압축하는 시스템, 방법, 및 장치를 개시한다.
컴퓨터 시스템(100)의 예시적인 일 실시예가 도 1에 도시되어 있다. 도시된 시스템은 마이크로프로세서 칩(110)과 M1(151), M2(152) 내지 MK(153)로 표시된 하나 또는 복수의 메모리 모듈을 포함한다. 마이크로프로세서 칩은 임의의 모든 가능한 기술의 이산 시스템이거나 시스템온칩(SoC) 상에 통합될 수 있다. 마이크로프로세서(110)는 P1(131), P2(132) 내지 PN(133)로 표시되고 간혹 CPU 또는 코어 및 메모리 계층으로 불리는 하나 또는 여러 처리 유닛을 포함한다. 반면, 메모리 계층은 예를 들어 도 1에 C1, C2, 및 C3로 표시되어 예시된 3개의 레벨과 같이 여러 캐시 레벨을 포함한다. 이러한 레벨은 예컨대 SRAM, DRAM 등의 동일한 또는 상이한 메모리 기술에서 또는 PCM(Phase-Change Memory)등을 포함하는 임의의 모든 유형의 비휘발성 기술에서 구현될 수 있다. 캐시 레벨의 수는 상이한 실시예에서 다를 수 있고, 예시된 실시예(100)는 최종 캐시 레벨이 C3(120)인 3개의 레벨을 도시하고 있다. 이러한 레벨은 일종의 상호연결 수단(예: 버스 또는 임의의 모든 다른 상호연결망)을 활용하여 연결된다. 예시된 실시예에서, C1 레벨과 C2 레벨은 P i 로 표시된 각 처리 유닛(i)(예: 도 1의 P1) 전용이고 각 처리 유닛(i)만이 접근 가능하다. 다른 실시예에서, 임의의 모든 수의 전용 캐시 레벨이 있을 수 있거나, 대안적으로 모든 캐시 레벨이 도 1의 제3 레벨(C3)에 의해 도시된 바와 같이 공유될 수 있음은 당업자에게 당연하다 할 것이다. 캐시 계층으로 데이터를 포함하는 것은 임의의 모든 실시예에서 가능하고 당업자에게는 당연할 것이다. 예를 들어, C1은 C2에 포함될 수 있고, C2는 C3에 대하여 비포괄적일 수 있다. 당업자라면 대안적인 실시예도 이해할 수 있다. 도 1의 컴퓨터 시스템(100)은 MCTRL1(141), MCTRL2(142) 내지 MCTRLL(143)로 표시된 하나 또는 복수의 메모리 컨트롤러를 포함한다. 최종 캐시 레벨(도 1의 C3)은 메모리 컨트롤러에 연결되고, 메모리 컨트롤러는 이어서 하나 또는 복수의 메모리 모듈로 연결된다. 메모리 컨트롤러는 마이크로프로세서 칩(110) 상에 통합되거나 마이크로프로세서 칩의 외부에 구현될 수 있다. 컴퓨터 시스템은 하나 이상의 작업을 실행한다. 작업은 임의의 모든 소프트웨어 어플리케이션이거나 특정 시스템 상에서 실행될 수 있는 소프트웨어 어플리케이션의 일부일 수 있다.
도 1의 실시예로 예시된 바와 같은 컴퓨터 시스템은 M1(151) 내지 MK(153)로 도시된 메모리의 용량과 레벨(예: 도 1의 C1, C2, C3)과 무관하게 캐시 메모리의 용량에 한계가 있다. 캐시 메모리의 한계는 메모리 요청의 더 많은 부분이 메모리 계층의 다음 레벨에서 사용되어져야 하는 것으로 나타나서 성능의 손실과 에너지 소비의 증가로 이어지게 된다. 이 문제를 완화하기 위해, 캐시 용량을 증가시켜 메모리 계층의 다음 레벨에 의해 사용되어질 필요가 있는 요청의 수를 줄이는 것을 고려할 수 있다. 마이크로프로세서 칩 상에서 캐시 레벨의 용량을 증가시키면 여러 문제로 이어지게 된다. 첫째, 캐시 접근 요청 시간이 늘어나 성능 손실로 이어질 수 있다. 둘째, 더 큰 캐시로의 접근 요청에 소모되는 에너지가 늘어날 수 있다. 셋째, 더 큰 캐시 레벨을 실현하기 위해 마이크로프로세서 칩 상에 더 많은 실리콘 또는 이와 균등한 물질을 사용하면 처리 능력의 손실을 감수해야 할 수 있다. 따라서, 상기 문제가 없이 더 많은 캐시 용량을 실현하는 것이 바람직하다. 한정된 메모리 용량도 유사한 문제가 있고, 전형적으로 메모리 계층의 저장 레벨로 구현되는 메모리 계층의 다음 레벨에서 사용되어져야 할 더 많은 메모리 요청에서 드러날 수 있다. 이러한 저장 레벨 접근은 느리고 성능과 에너지 소비의 상당한 손실을 가져올 수 있다. 메모리 용량을 늘리면 이러한 단점을 보완할 수 있다. 그러나, 메모리 용량의 증가는 부품 차원과 에너지 소비 차원에서 컴퓨터 시스템의 비용을 증가시킬 수 있다. 또한, 더 많은 메모리는 더 큰 공간을 차지하게 되고, 이는 예를 들어 모바일 컴퓨터(예: 태블릿, 스마트폰, 웨어러블 기기, 및 인터넷에 연결된 소형 컴퓨터 장치)를 포함하는 특히 폼팩터 제약을 받는(form-factor constrained) 제품에서 컴퓨터 시스템의 활용을 제한할 수 있다.
본 발명 개시는 상기 설명에 예시된 메모리 계층 압축이 적용되는 레벨이 상이한 여러 실시예들을 고려한다. 제1 실시예는 주 메모리에 적용되는 본 발명의 압축 방법에 관한 것이다. 그러나, 다른 실시예들도 당업자에 의해 가능할 것이다. 이러한 실시예들이 본 발명 개시에 명시적으로 기재되어 있지 않더라도 본 발명 개시에서도 포함되는 것으로 이해되어야 한다.
주 메모리 용량의 한계 문제를 고려하는 제1 실시예에 대해서, 도 1에 예시된 시스템은 데이터와 명령어가 주 메모리 내에 압축되게 하도록 구성될 수 있다. 도 2는 이러한 컴퓨터 시스템(200)의 일례를 도시한 것이다. 여기서 추가된 것은 마이크로프로세서 칩(210) 상의 컴퓨터 메모리 압축 장치(205)이다. 컴퓨터 메모리 압축 장치(205)는 4개의 기능 블록을 포함한다. 기능 블록은 로케이터(주소 변환) 유닛(211), 인코더(컴프레서) 유닛(210), 디컴프레서 유닛(213), 및 애널라이저 유닛(214)를 포함한다.
하기에 더 상세히 설명하는 바와 같이, 애널라이저 유닛(3214)은 고유 메모리 객체 내의 데이터 값의 밸류 중복성 및 복제 메모리 객체의 발생에 대한 컴퓨터 메모리 콘텐츠를 분석하도록 구성된다. 이와 관련하여, 데이터 값은 전형적으로 메모리 객체보다 입도가 더 작게 되고, 메모리 객체는 전형적으로 컴퓨터 메모리 콘텐츠보다 입도가 더 작게 된다. 컴퓨터 메모리 콘텐츠는 전형적으로 컴퓨터 메모리의 페이지일 수 있고, 메모리 객체는 전형적으로 메모리 블록일 수 있으며, 각 메모리 블록은 전형적으로 메모리 워드와 같은 복수의 데이터 값을 포함할 수 있다.
인코더 유닛(212)은 복제 메모리 객체를 제거하고 잔여 고유 메모리 객체의 데이터 값의 데이터 값 국부성(data value locality)을 활용하여 각 잔여 고유 메모리 객체를 압축함으로써 컴퓨터 메모리 콘텐츠를 인코딩 하도록 구성된다. 인코더 유닛(212)은 인코딩 된 컴퓨터 메모리 콘텐츠의 메모리 객체를 나타내는 메타데이터를 제공하도록 더 구성된다. 메타데이터는 제거된 복제 메모리 객체, 잔여 고유 메모리 객체, 및 각 잔여 고유 메모리 객체의 압축에 사용된 압축 유형을 반영한다. 이러한 메타데이터의 예시들이 도 5의 도면부호 500에 도시되어 있다. 로케이터 유닛(211)은 메타데이터를 활용하여 인코딩된 컴퓨터 메모리 콘텐츠 내의 메모리 객체의 위치를 찾아내도록 구성된다.
상응하는 일반적인 컴퓨터 메모리 압축 방법(1200)이 도 12에 도시되어 있다. 이 방법은 고유 메모리 객체 내의 데이터 값의 밸류 중복성 및 복제 메모리 객체의 발생에 대한 컴퓨터 메모리 콘텐츠를 분석하는 단계(1210)를 포함한다. 이 방법은 복제 메모리 객체를 제거하고 잔여 고유 메모리 객체의 데이터 값의 데이터 값 국부성을 활용하여 각 잔여 고유 메모리 객체를 압축함으로써 컴퓨터 메모리 콘텐츠를 인코딩하는 단계(1220)를 더 포함한다. 이 방법은 또한 인코딩 된 컴퓨터 메모리 콘텐츠의 메모리 객체를 나타내는 메타데이터(500)를 제공하는 단계(1230)를 포함한다. 이 방법은 또한 메타데이터(500)를 활용하여 인코딩 된 컴퓨터 메모리 콘텐츠 내의 메모리 객체의 위치를 찾아내는 단계(1240)를 포함한다. 컴퓨터 메모리 압축 방법(1200)은 일반적으로 본 명세서 전반에 걸쳐 기재되는 바와 같은 컴퓨터 메모리 압축 장치(205)의 임의의 또는 모든 구조적 특징 및 실시예에 의해 수행되는 기능에 상응하는 기능적 단계를 포함한다.
컴퓨터 메모리 압축 장치(205)는 일측에서 메모리 컨트롤러에 연결되고 타측에서 최종 레벨 캐시(C3)에 연결된다. 주소 변환 유닛(211)의 목적은 압축된 메모리 내에서 메모리 블록의 위치를 찾아내기 위하여 종래의 물리적 주소(PA)를 압축 주소(CA)로 변환하는 것이다. 종래의 메모리 페이지(예: 4KB)는 압축 메모리에서 임의의 사이즈로 압축될 수 있기 때문에 이러한 주소 변환이 필요하다는 것을 당업자라면 이해할 수 있다. 인코더(컴프레서) 유닛(212)의 목적은 수정되고 최종 레벨 캐시에서 내보내진 메모리 블록을 압축하는 것이다. 메모리 시스템의 성능에 끼치는 영향이 무시할 정도가 되게 하려면, 압축은 빨리 이루어져야 하고 흔히 전용 컴프레서 유닛에 의해 가속된다. 유사하게, 메모리 블록이 프로세서에 의해 요청되지만 예를 들어 예시된 실시예의 C1, C2, C3와 같은 캐시 레벨의 어디에도 없는 경우에, 메모리 블록은 메모리로부터 요청되어야 한다. 주소 변환 유닛(211)은 메모리 블록의 위치를 찾아내게 되지만 캐시 계측에, 예를 들어 C1에, 설치되기 이전에 압축해제 되어야 한다. 디컴프레서 유닛(213)의 목적은 메모리 시스템의 성능에 끼치는 영향이 무시할 정도가 되게 하도록 이러한 프로세스를 가속하는 것이다.
당업자라면 컴프레서와 디컴프레서 유닛의 기능은 사용되는 압축 알고리즘의 유형에 달려 있음을 알 수 있다. 일 실시예에서, 값 그 자체보다는 값과 기준 값 사이의 차이가 저장되는 델타 인코딩(예: Base-Delta-Immediate 인코딩)이 사용될 수 있다. 다른 실시예에서, 다른 값들보다 더 빈번한 값들이 밀도가 더 높은 코드를 사용하는 엔트로피 기반 인코딩(예: 허프만 인코딩)이 사용될 수 있다. 제3 실시예에서, 고유 블록들만이 메모리에 저장되는 중복 제거가 사용될 수 있다. 본 발명 개시는 밸류 중복성의 제거 목적을 가진 모든 압축 알고리즘을 포함하고자 한다.
도 2에 따른 실시예를 고려하여, 본 명세서의 이하 내용은 컴퓨터 메모리 콘텐츠(예, 메모리 페이지)를 인코딩 하는 방법, 압축된 메모리에서 메모리 객체(예: 메모리 블록)의 위치를 찾아내는 방법, 개별 메모리 객체(예, 메모리 블록)을 압축 및 압축해제 하는 방법, 및 컴퓨터 메모리 콘텐츠(예: 메모리 페이지)를 재압축하여 추가적인 복제와 밸류 중복성을 제거하는 방법에 대한 중복 제거와 밸류 중복성 제거 압축에 의거한 조합된 압축 방식을 활용하는 장치, 방법, 및 시스템을 제공한다.
메모리 페이지의 데이터 분석 및 인코딩
중복 제거와 엔트로피 기반 압축의 조합을 활용하여 메모리 페이지가 압축되는 방법의 예시적인 개요가 도 3에 제공되어 있다. 그러나, 델타 인코딩(예: Base-Delta-Immediate 인코딩)과 같은 다른 밸류 중복성 제거 압축 방법도 가능하다. 페이지의 예시적인 레이아웃(300)은 도 3의 좌측에 있는 (A)에 1, 2, ??, N의 번호로 표시된 바와 같이 N개의 블록을 포함하고 종래의 압축되지 않은 컴퓨터 메모리의 연속된 메모리 블록 주소에서 보이며, 여기서 도면부호 310은 첫번째 메모리 블록을 나타내고 320은 마지막 메모리 블록을 나타낸다. 중복 제거는 중복된 블록을 제거하여 고유 블록만 메모리 페이지에 속하도록 하기 위한 것이다. 도 3의 중앙에 있는 (B)에 도시된 바와 같이, 페이지의 메모리 블록의 예시적인 레이아웃(300)에서, 도면부호 340과 350으로 나타낸 메모리 블록은 중복 데이터이다. 하기에 상세히 설명하는 바와 같이, 중복 데이터를 메모리에 저장하는 대신에, 고유 블록에 대한 참조(예: 포인터)만을 저장한다. 메모리 블록(350)은 도면부호 370으로 표시된 포인터를 사용하여 메모리 블록 2(330)을 참조한다. 마찬가지로, 메모리 블록(340)은 도면부호 360으로 표시된 포인터를 사용하여 메모리 블록 1을 참조한다. 따라서, 중복 제거 프로세스 이후에, 메모리 페이지는 고유 메모리 블록으로 칭해지는 뚜렷한 콘텐츠가 있는 메모리 블록만을 포함하게 된다.
종래 기술은 또한 허프만 인코딩과 같이 빈번하게 사용되는 데이터를 덜 빈번하게 사용되는 데이터보다 더 높은 밀도로 인코딩하는 압축 방법 또는 델타 인코딩(예: Base-Delta-Immediate 인코딩)과 같이 수치가 유사한 점을 활용하는 압축 방법을 포함한다. 이러한 압축 방법들은 밸류 중복성 제거 압축 방법으로 일컬어진다. 밸류 중복성 제거 압축 방법을 활용하여 페이지를 압축하기 위하여, 전형적으로 예컨대 워드 레벨(예: 64 비트)의 입도에서 모든 개별 데이터 아이템을 분석한다. 밸류 빈도 분포는 페이지 내의 상이한 값의 상대적인 발생을 캡처할 수 있다. 그러나, 중복 제거 이전에 메모리 페이지의 원 컨텐츠에 평범하게 적용되는 경우에, 중복 데이터의 존재는 밸류 분포를 대폭 변경시킬 수 있다. 이런 이유로 인해, 제안된 실시예는 잔여 고유 메모리 블록의 밸류 분포가 설정되기 이전에 중복 제거를 먼저 적용하여 중복 데이터를 제거한다. 도 3의 (C)에 도시된 바와 같이, 최우측의 예시적인 레이아웃은 밸류 중복성 제거 압축이 적용된 후의 결과를 보여준다. 밸류 중복성 제거 압축이 더 빈번한 데이터 아이템을 덜 빈번한 데이터 아이템보다 더 높은 밀도로 관리하였을 수 있기 때문에, 고유 메모리 블록 1(380)과 고유 메모리 블록 2(390)의 사이즈는 이제 더 작을 수 있다.
이제 조합된 방법이 어떻게 도 3에 예시된 바와 같이 구현되는지를 살펴보기로 한다. 이에 대하여 도 4 내지 도 7을 참조하여 설명한다. 상기 문단에서 설명한 바와 같이, 밸류 중복성 제거 압축과 중복 제거의 조합의 모든 가능성을 구현하려면, 중복 제거를 먼저 수행하는 것이 중요하다. 일 실시예에서, 중복 제거는 고유 여부를 밝히려는 목표를 가지고, 여러 페이지 내의 메모리 블록을 모두 고려하는 가능성을 배제하지 않은 상태에서, 단일 페이지 내의 메모리 블록을 모두 순차적으로 분석함으로써 구현될 수 있다. 이를 위해, 분석될 첫번째 메모리 블록은 항상 고유한 것으로 분류되게 된다. 도 4를 참조하면, 예시적인 트리(tree) 데이터 구조(400)는 모든 고유 블록을 기록한다. 한 블록이 삽입되기 전에, 종래 기술에서 공지인 그 블록의 서명(signature)이 생성된다. 서명은 블록의 값을 밀도 있게 표현한 것으로서, 두 메모리 블록의 서명이 서로 상이한 경우, 두 메모리 블록은 동일하지 않다. 그러나, 반대의 경우도 반드시 그렇지는 않다.
메모리 블록이 고유한지 및 트리 기반 데이터 구조에 삽입되어야 하는지 여부를 판단하기 위하여, 메모리 블록의 서명이 트리 데이터 구조(400)의 최상위 노드(410)의 서명과 비교된다. 서명이 동일한 경우, 두번째 검사가 수행되어 두 메모리 블록의 콘텐츠를 비교한다. 두 메모리 블록이 실제로 서로 동일한 경우, 중복 블록이 검출된 것이다. 트리 기반 데이터 구조의 각 노드에서 동일한 동작이 수행된다. 그러나, 서명이 동일하지만 두 블록이 서로 동일하지 않은 경우, 새로운 블록이 동일한 서명을 가지고 삽입되어야 한다. 이는 허위 양서(false positive)를 처리할 다음과 같은 추가 검사를 포함할 수 있다. 생성된 서명(S)이 트리 데이터 구조(400)에 있는 서명과 일치하는(650) 경우에는 다음과 같이 진행한다.
· 상기 개별 메모리 객체가 상기 일치하는 서명으로 나타내어진 상기 고유 메모리 블록과 동일한지 여부를 판단; 및
· 상기 개별 메모리 객체와 상기 일치하는 서명으로 나타내어진 상기 고유 메모리 블록이 동일하지 않은 경우:
o 트리 데이터 구조(400)에 노드를 삽입;
o 생성된 서명(S)을 삽입된 노드에 기입; 및
o 고유 메모리 객체임을 나타내는 정보(510)와 상기 개별 메모리 객체로의 고유 메모리 객체 참조(530, U_PTR)가 있는 메타데이터(500)를 상기 개별 메모리 객체에 대해 생성.
반면에, 서명이 불일치하는 경우, 서명이 460에서의 검사에 따라 최상위 노드(410)의 서명보다 작다면 검색은 트리의 좌측 가지로 진행한다. 서명이 최상위 노드의 서명보다 크다면, 검색은 검사(470)에 따라 트리의 우측 가지로 진행한다. 따라서, 모든 노드(410, 420, 430, 440, 450)는 내림차순(좌측 가지)과 오름차순(우측 가지)으로 정리되어 검색 시간이 선형(linear)이 아닌 대수(logarithmic)가 되게 한다. 프로세스에서 중복이 제거되게 됨에 따라, 메모리 블록은 종래의 압축되지 않은 페이지에서처럼 동일 주소에 있지 않게 된다. 이런 이유로 인해, 각 노드에 '블록 위치 - BL'로 묘사된 바와 같이, 블록의 새로운 위치가 트리 기반 데이터 구조에 기록되게 된다.
중복 제거 프로세스이 최종 결과는 모든 중복된 메모리 블록이 제거되었다는 것이다. 이러한 이유로 인해, 도 3을 참조하여 설명한 바와 같이, 메모리 블록은 중복 제거되지 않은 원래의 페이지에서와 동일한 위치의 중복 제거된 페이지에 있지 않을 수 있다. 이러한 이유로 인해, 하기에 더 상세히 설명하는 바와 같이, 압축된 메모리에서 메모리 블록의 위치 파악을 지원하기 위해, 중복 제거 프로세스에서 메타데이터가 생성되어야 한다.
도 5는 좌측의 (A)에 각 메모리 블록에 대한 프로세스에서 생성된 예시적인 메타데이터(500)를 도시하고 있다. 메타데이터(500)는 4개의 구성요소, 즉, TYPE(510), Block encoding - ENC(520), U_PTR(530), 및 D_PTR(540)을 포함한다. TYPE은 블록이 고유한지 또는 복제인지 여부를 나타낸다. ENC로 표시되는 Block encoding은 예를 들면 허프만 코딩, 산술 코딩, 또는 기타 코딩과 같이 메모리 블록 콘텐츠에 적용되는 압축 알고리즘의 유형을 나타낸다. 메모리 블록이 고유한 경우, 메모리 블록의 위치를 가리키는 포인터가 필요하다. 이는 U_PTR(530)로 묘사되어 있다. 반면에, 블록이 복제인 경우, 고유 사본을 가리키는 포인터가 필요하다. 고유 사본의 경우와 같이, U_PTR(530)이 압축된 메모리 내의 고유 사본을 가리킨다.
도 5는 우측의 (B)에 메모리 블록(570)은 고유하고 메모리 블록(580)과 메모리 블록(590)은 메모리 블록(570)의 복제 메모리 블록인 페이지의 3개의 메모리 블록의 예시적인 레이아웃을 도시하고 있다. 여기서, 복제 메모리 블록의 U_PTR은 고유 메모리 블록(570)을 가리키고 있다. 그러나, 동작에서는, 고유 블록이 수정되는 경우가 있을 수 있다. 이 경우, 도면부호 580과 590에 따른 복제 블록과 동일한 콘텐츠를 포함하지 않을 수 있다. 이런 이유로 인해, 고유 메모리 블록의 관점으로 복제 메모리 블록을 추적할 필요가 있다. 이를 위해, D_PTR로 표시된 포인터가 제공된다. 이 포인터들은 모든 복제 메모리 블록을 상응하는 고유 메모리 블록과 연결하는 연결 데이터 구조를 설정한다. 본 예시에서, 고유 메모리 블록(570)의 D_PTR(550)은 복제 메모리 블록(580)을 가리킨다. 복제 메모리 블록(580)의 D_PTR은 다른 복제 메모리 블록(590)을 가리킨다.
따라서, 요약하면, 메타데이터(500)는 인코딩 된 컴퓨터 메모리 콘텐츠의 각 메모리 객체에 대해 바람직하게 다음과 같은 정보를 포함한다.
· 메모리 객체가 제거된 복제 메모리 객체 또는 잔여 고유 메모리 객체임을 나타내는 정보(510);
· 메모리 객체가 고유 메모리 객체인 경우, 사용된 압축의 유형을 나타내는 정보(520) 및 고유 메모리 객체를 가리키는 고유 메모리 객체 참조(530, U_PTR); 및
· 메모리 객체가 복제 메모리 객체인 경우, 압축되지 않은 콘텐츠가 복제 메모리 객체와 동일한 고유 메모리 객체를 가리키는 고유 메모리 객체 참조(530, U_PTR).
바람직하게, 메타데이터(500)는, 고유 메모리 객체인 각 메모리 객체에 대해, 압축되지 않은 콘텐츠가 고유 메모리 객체와 동일한 제거된 복제 메모리 객체를 가리키는 복제 메모리 객체 참조(540, D_PTR)를 더 포함한다.
이하, 페이지(다수의 페이지와 같은 다른 입도도 가능) 이내의 모든 메모리 블록을 분석하여 메모리 블록이 중복 제거되는 전체 프로세스에 대해 설명하기로 한다. 이러한 프로세스는 도 6의 흐름도에 도시되어 있다. 앞서 도 4를 참조하여 설명한 바와 같이, 메모리 블록을 중복 제거하는 프로세스(600)는 궁극적으로 모든 고유 메모리 블록을 포함하게 되는 트리 기반 데이터 구조(400)를 사용한다. 프로세스(600)는 페이지의 모든 메모리 블록을 순차적 방식으로 분석하게 된다. 첫번째 판단 단계 620에서, 페이지의 모든 메모리 블록을 거쳤는지 여부를 확인한다. 그렇지 않은 것을 확인되는 경우, 다음 메모리 블록이 고려된다. 도 4를 참조하여 설명한 바와 같이, 블록의 서명이 종래 기술에 공지인 일부 방법에 따라 생성되고, 일치가 검출될 때까지 트리의 모든 노드와 비교된다. 최종적으로 2개의 결과가 있다. 판단 단계 640에서 검사된 바와 같이, 블록이 고유한 경우, 단계 660에서 삽입된다. 이후, 메모리 블록 위치가 페이지 내의 메모리 블록 번호와 함께 기록된다. 블록이 고유하지 않은 경우, 단계 650에서 중복 제거되고, 트리 기반 데이터 구조에 이미 기록된 고유 블록의 블록 위치를 가리키는 포인터가 도 5에 따라(도면부호 530 참조) 메타데이터의 U_PTR 포인터에 배정된다. 결과와 무관하게, 다음 동작은 판단 단계 620으로 돌아가서 페이지의 다음 메모리 블록을 분석하는 것이다.
따라서, 도 4 내재 도 6의 설명에서 알 수 있듯이, 컴퓨터 메모리 압축 장치(205)의 애널라이저 유닛(214)과 인코더 유닛(212)은 다음과 같은 동작을 통해 컴퓨터 메모리 콘텐츠 내의 각 개별 메모리 객체를 처리하도록(600) 구성된다.
· 메모리 객체의 데이터 값을 밀도 있게 표현한 것인 서명(S)을 생성;
· 트리 데이터 구조(400)를 거쳐, 생성된 서명(S)을 트리 데이터 구조(400)에 이미 있는 서명과 비교;
· 생성된 서명(S)이 트리 데이터 구조(400)에 이미 있는 서명과 일치하지 않는(660) 경우:
o 트리 데이터 구조(400)에 노드를 삽입;
o 삽입된 노드에 생성된 서명(S)을 기입; 및
o 고유 메모리 객체임을 나타내는 정보(510)와 개별 메모리 객체로의 고유 메모리 객체 참조(530, U_PTR)가 있는 메타데이터(500)를 상기 개별 메모리 객체에 대해 생성; 및
· 생성된 서명(S)이 트리 데이터 구조(400)에 이미 있는 서명과 일치하는(650) 경우:
o 복제 메모리 객체임을 나타내는 정보(510)와 트리 데이터 구조(400)에서 일치하는 서명으로 묘사된 고유 메모리 블록으로의 고유 메모리 객체 참조(530, U_PTR)가 있는 메타데이터(500)를 상기 개별 메모리 객체에 대해 생성; 및
o 트리 데이터 구조(400)에서 일치하는 서명으로 묘사된 고유 메모리 블록의 메타데이터(500)를 업데이트하여 상기 개별 메모리 객체로의 복제 메모리 객체 참조(540, D_PTR)를 도입.
앞서 설명한 바와 같이, 복제는 밸류 빈도 분포를 정확하게 나타내지 못하기 때문에 예를 들어 워드 레벨에서 개별 데이터 아이템의 밸류 국부성을 활용하고자 하는 임의의 압축 방법 이전에 중복 제거를 적용하는 것이 중요하다. 이를 위해, 고유 블록의 밸류 빈도 분포를 설정하는 프로세스가 필요하다. 이러한 프로세스(700)가 도 7에 도시되어 있다. 전체 프로세스(700)는 도 4의 트리 기반 데이터 구조(400)에 기록된 모든 고유 메모리 블록의 분석을 위한 것이다. 프로세스(700)는 단계 710에서 시작한다. 모든 고유 메모리 블록을 거치지 않은 한(단계 720), 프로세스(700)는 각 고유 블록을 거쳐가며 그 고유 블록의 밸류 빈도를 기록한다. 이는 단계 730에서 해시 테이블(hash table)에 각 개별 값의 빈도를 기록하여 수행될 수 있다. 최종적으로, 모든 고유 메모리 블록의 밸류 빈도가 설정될 수 있고, 단계 740에서 허프만 코딩이나 산술 코딩 등과 같은 임의의 밸류 국부성 기반 압축 방법에 기반한 인코딩이 설정될 수 있다.
따라서, 컴퓨터 메모리 압축 장치(205)의 애널라이저 유닛(214)과 인코더 유닛(212)은 컴퓨터 메모리 콘텐츠의 모든 메모리 객체가 처리된(600) 경우에 다음과 같은 동작을 수행하도록 구성될 수 있다.
· 트리 데이터 구조(400)를 거쳐, 트리 데이터 구조(400)의 노드에 의해 묘사된 고유 메모리 객체의 데이터 값에 대한 밸류 빈도 표를 생성; 및
· 생성된 밸류 빈도 표를 사용하여 엔트로피 기반 압축 스키마에 의해 각 고유 메모리 객체를 압축.
일 실시예에서, 애널라이저 유닛은 해시 테이블을 이행하여 예컨대 소프트웨어 루틴을 활용한 추후의 분석에 활용될 각 값의 빈도를 기록하여 예를 들어 허프만 인코딩 또는 일부 기타 엔트로피 기판 인코딩 방법을 활용한 인코딩을 설정할 수 있다.
대안적인 실시예에서, 델타 인코딩(예: Base-Delta-Immediate 인코딩)을 활용하여, 복제가 제거된 이후의 잔여 값이 활용되어 하나 또는 복수의 기준 값을 선택할 수 있다. 한 방식에서, 복제가 제거된 이후에, 클러스터링(clustering) 방식이 활용되어 어느 기준 값이 고유 사본의 모든 값에 가장 가까운지를 분석할 수 있다.
따라서, 대안적으로, 컴퓨터 메모리 압축 장치(205)의 애널라이저 유닛(214)과 인코더 유닛(212)은 컴퓨터 메모리 콘텐츠의 모든 메모리 객체가 처리된(600) 경우에 다음과 같은 동작을 수행하도록 구성될 수 있다.
· 트리 데이터 구조(400)를 거쳐, 트리 데이터 구조(400)의 노드에 의해 묘사된 고유 메모리 객체의 데이터 값에 대한 밸류 빈도 표를 생성; 및
· 생성된 밸류 빈도 표를 사용하여 엔트로피 기반 압축 스키마에 의해 각 고유 메모리 객체를 압축.
[압축된 메모리에서 메모리 블록의 위치 파악]
이하, 중복 제거와 밸류 중복성 제거 압축 방식을 함께 사용하여 압축된 메모리에서 메모리 블록의 위치를 찾아내고 압축해제 하는 방법에 대해 설명하기로 한다. 도 2를 참조하여 설명한 바와 같이, 로케이터(주소 변환) 유닛(211)은 종래의 물리적 주소를 압축된 주소 공간의 주소로 변환한다. 도 10은 도 2의 로케이터(주소 변환) 유닛(211)의 상세한 레이아웃(1000)을 도시한 것이다. 여기에는 다수의 페이지 엔트리가 포함되어 있고, 각 엔트리(1010)는 다수의 필드, 즉, 페이지의 물리적 주소와 압축된 주소에 각각 상응하는 Physical Address(PA, 1011)와 Compressed Address(CA, 1012)를 포함한다. 도 10의 도면부호 1021 내지 1023에서 알 수 있듯이, 각 페이지 엔트리는 각 블록의 메타데이터(MD 1??MD N)과 연관된다. 앞서 설명한 바와 같이, 메타데이터의 상세한 내용은 도 5의 좌측에 있는 (A)를 참조하면 된다. 도 5에 도시된 바와 같이, 메모리 블록이 고유이거나 중복 제거된 것인지에 무관하게, U_PTR은 압축된 주소(CA)에 대한 상대적인 블록의 위치로의 오프셋(offset) 역할을 한다. 가산기(1030)는 U_PTR과 압축된 주소 CA(1012)의 합을 설정함으로써 블록 주소(1040)를 형성한다.
도 2의 프로세서(P1 내지 PN으로 표시) 중의 하나가 캐시 레벨(C1, C2, 또는 C3) 중의 어느 것에 의해서도 만족될 수 없는 읽기 요청을 하는 경우, 도 2 및 도 10의 로케이터(주소 변환) 유닛(211, 1000)에 의해 처리되게 되고, 물리적 주소(PA)는 앞서 설명한 프로세스에 따라 PA와 연관된 압축된 주소(CA)와 요청된 블록의 메타데이터를 함께 활용하여 변환되게 된다. 그러나, 쓰기 요청이 캐시 레벨 중의 어느 것에 의해서도 만족될 수 없는 경우에, 해당 쓰기는 어느 블록이 고유하고 어느 블록이 중복 제거되는지에 영향을 미칠 수 있다. 도 8의 좌측에 있는 (A)의 경우를 보면, 고유 블록은 도면부호 830으로 표시되어 있고, 도면부호 810과 820으로 표시된 두 개의 중복 제거된 블록은 동일한 콘텐츠를 가지고 있으며, 이 중복 제거된 블록들의 U_PTR은 고유 블록(830)을 가리키고 있다. 중복 제거된 메모리 블록(810, 820)은 고유 블록의 D_PTR이 메모리 블록(820)을 가리키게 함으로써 고유 블록(830)에 연결되어 있고, 동일 블록의 D_PTR은 메모리 블록(810)을 가리킨다.
이하, 쓰기 요청이 궁극적으로 고유 메모리 블록(830)으로 향하는 것으로 가정하고 도 8의 우측에 있는 (B)를 참조하면, 고유 메모리 블록(830)의 복제가 존재하므로, 이 메모리 블록을 유지하는 것이 바람직할 수 있다. 이는 반드시는 아니지만 페이지 이내에 있을 수 있는, 도 8에 도면부호 840으로 표시된, 전용 메모리 영역의 사용 중이 아닌 영역을 활용하여 고유 메모리 블록(830)의 예전 콘텐츠를 복사하여 이루어진다. 사용 중이 아닌 메모리 영역의 현재 시작 주소(805)는 예를 들어 F_PTR로 표시된 전용 포인터 등의 참조에 의해 가리켜진다. 고유 메모리 블록(830)의 예전 콘텐츠는 도면부호 870에 도시된 바와 같이 사용 중이 아닌 영역(840)으로 복사되고, 중복 제거된 메모리 블록(810, 820)의 U_PTR은 이제 도면부호 870에 있는 예전 고유 메모리 블록을 가리킨다. 또한, D_PTR은 도면부호 870에 있는 예전 고유 메모리 블록으로 중복 제거된 메모리 블록(810, 820)을 연결하도록 변경된다. 대안적으로, 블록 870의 D_PTR만이 블록 820을 가리키도록 업데이트 되는 반면에, 나머지 D_PTR은 도 8의 좌측 (A)에 도시된 것처럼 유지된다. 즉, 연결된 목록의 헤드(head)만이 업데이트 된다. 원래 장소, 즉, 830에 있는 고유 메모리 블록은 이제 쓰기 요청에 따라 새로운 콘텐츠로 업데이트 될 수 있다. 도면부호 880에서 알 수 있듯이, F_PTR도 사용 중이 아닌 영역의 변경된 시작 주소를 반영하도록 업데이트 된다.
도 8의 고유 메모리 블록(830)으로 궁극적으로 향하게 되어 있는 쓰기 요청을 처리하는 대안적인 방법은 다음과 같다. 여기서, 도 8은 이하의 설명을 반영하지 않고 있다. 중복 제거된 메모리 블록(820)은 고유 메모리 블록(830)의 서명(S)을 사용하여 트리 데이터 구조(400)(도 4 참조)에서 고유한 것으로 상승된다. 쓰기 요청에 따른 고유 메모리 블록(830)의 업데이트된 콘텐츠는 전용 메모리 영역의 사용 중이 아닌 영역(840)에 기록된다. 블록 830의 U_PTR은 새로운 블록이 사용 중이 아닌 메모리 영역 안에 있는 곳을 가리키도록 업데이트되고, 블록 830은 검출된 복제가 없는 고유 블록이므로 블록 830의 D_PTR은 제거되거나 아무 곳도 가리키지 않도록 업데이트된다. F_PTR은 쓰기 이후에 새로운 시작 주소를 반영하도록 업데이트된다.
쓰기 요청이 궁극적으로 중복 제거된 블록으로 향하는 경우를 가정하고, 도 9의 좌측에 있는 도면을 참조하면, 고유 메모리 블록(910)과 동일한 콘텐츠를 가진 두 개의 중복 제거된 메모리 블록(920, 930)이 있고, U_PTR과 D_PTR은 상기 문단에서 설명한 바와 같은 경우를 반영하도록 설정되어 있다. 쓰기 요청이 도면 좌측의 중복 제거된 블록(920)으로 궁극적으로 향하도록 되어 있다고 가정하면, 중복 제거된 블록의 콘텐츠가 이제 변경될 것이기 때문에, 그 콘텐츠는 고유 메모리 블록(910)과 동일하지 않게 된다. 대신에, 업데이트된 중복 제거된 블록은 사용 중이 아닌 영역(980)에 배치되게 되고 D_U로 표시된다. 블록920의 U_PTR은 이제 새로운 고유 블록(980)d을 가리키도록 변경되고, 이 블록의 D_PTR은 중복 제거된 블록(920)을 가리킨다. 또한, 중복 제거된 블록을 고유 블록(910)에 이전에 연결했던 D_PTR은 이제 다른 중복 제거된 블록(930)을 가리키도록 변경되고, 이 블록(930)의 U_PTR은 고유 블록(910)을 가리킨다.
도 8과 도 9의 상황 모두에서, 쓰기 동작은 이미 존재하거나 존재하지 않을 수 있는 새로운 블록 콘텐츠를 생성하게 된다. 설명된 프로세스에서, 새로운 블록이 이미 존재하는 다른 블록과 동일한지 여부를 분석하려는 시도는 없다. 그로 인해, 고유 블록을 지속적으로 파악하고 있는 트리 구조에 삽입될 필요가 없다. 그러나, 추후의 분석 단계에서, 새롭게 생성된 블록을 포함하는 모든 블록의 콘텐츠를 다시 들여다보고 중복 제거의 기회를 다시 가질 수 있다.
[메모리 블록의 압축, 압축해제, 및 재압축]
도 5의 메타데이터의 일부는 인코딩(도면부호 520의 ENC)을 위해 사용되는 압축 알고리즘을 포함한다. 블록은 메모리로부터 검색된 후에 압축해제 되게 된다. 이는 압축 알고리즘(ENC)의 유형과 메모리로부터 압축해제 된 블록을 입력으로 취하는 디컴프레서 유닛(1110)에 의해 도 11에 도시되어 있다. 이러한 유형의 압축 알고리즘은 중복 제거, 엔트로피 기반 압축, 델타 인코딩(예: Base-Delta-Immediate 인코딩), 또는 밸류 중복성의 제거를 목표로 하는 임의의 기타 압축 방법일 수 있다.
블록이 도 2에 예시된 실시예의 최종 캐시 레벨(C3)로부터 교체되는 경우에서, j이 블록은 수정되었을 수 있고 이후에 후기록(write-back) 요청을 생성할 수 있다. 그렇다면 메모리에 후기록되기 전에 압축되어야 한다. 도 2의 로케이터(주소 변환) 유닛(211)이 조사되고, 상기 블록이 속하는 페이지에 대한 메타데이터의 엔트리가 있는 경우에, 해당 메타데이터는 어느 압축 알고리즘을 사용하여 해당 블록을 압축할 것이지를 인코딩한다. 도 8과 도 9의 상황을 다시 참조하면, 후기록 요청이 고유 블록(도 8) 또는 중복 제거된 블록(도 9)에 해당하는 요청일 수 있다. 이러한 경우들에서, 주소 변환 유닛과 이와 연관된 로직은 메타데이터를 변경하여 이 프로세스에서 생성될 복제의 수를 줄이는데 원조하게 된다.
도 8 내지 도 11의 설명은 다음과 같이 요약되고 일반화될 수 있다. 컴퓨터 메모리 압축 장치(205)는 바람직하게 다음과 같은 동작을 하도록 구성될 수 있다.
· 물리적 메모리 페이지 주소(PA)를 가진 메모리 페이지의 메모리 블록에 대한 읽기 요청을 수신;
· 룩업 테이블(1010)에서 압축된 메모리 페이지 주소(CA)를 판단;
· 메모리 블록에 대한 메타데이터(1020)를 검색;
· 압축된 메모리 페이지 주소(CA)와 검색된 메타데이터의 고유 메모리 객체 참조(530, U_PTR)로부터 압축 메모리 블록 주소(1040)를 계산;
· 계산된 압축 메모리 블록 주소(1040)에서 압축 메모리 블록(1105)를 검색; 및
· 압축 유형을 나타내고 메모리 블록에 대한 검색된 메타데이터에서 사용 가능한 정보(520; 1120, ENC)를 활용하여 검색된 압축 메모리 블록(1105)을 디컴프레서 유닛(213; 1110)에 의해 압축해제.
도 8을 참조하여 설명한 바와 같이, 컴퓨터 메모리 압축 장치(205)는 바람직하게 다음과 같은 동작을 하도록 더 구성될 수 있다.
· 원 메모리 위치(830)에 있는 고유 메모리 블록의 업데이트를 포함하는 후기록 요청을 수신;
· 컴퓨터 메모리 콘텐츠의 전용 메모리 영역의 사용 중이 아닌 영역(840) 내의 새로운 메모리 위치(870)로 업데이트하기 이전에 고유 메모리 블록(830)을 복사;
· 고유 메모리 블록(830)에 연결된 복제 메모리 블록(810, 820)의 복제 메모리 객체 참조(540, D_PTR)의 진행 방향이 전용 메모리 영역의 사용 중이 아닌 영역(840)의 새로운 메모리 위치(870)로 바뀌도록 고유 메모리 블록(830)에 연결된 복제 메모리 블록(810, 820)의 메타데이터를 업데이트; 및
· 후기록 요청에 따라 원 메모리 위치(830)에 있는 고유 메모리 블록을 업데이트.
또한, 컴퓨터 메모리 압축 장치(205)는 바람직하게 다음과 같은 동작을 하도록 더 구성될 수 있다.
· 전용 메모리 영역의 사용 중이 아닌 영역(840)의 시작 주소(805)로의 참조(F_PTR)를 포함하는 메타데이터를 제공; 및
· 전용 메모리 영역의 사용 중이 아닌 영역(840) 내의 새로운 메모리 위치(870)로 고유 메모리 블록(830)을 복사한 후에 새로운 시작 주소(880)를 반영하도록 상기 참조(F_PTR)를 업데이트.
도 8에 대한 대안으로 설명한 바와 같이, 컴퓨터 메모리 압축 장치(205)는 바람직하게 다음과 같은 동작을 하도록 더 구성될 수 있다.
· 원 메모리 위치에 있는 고유 메모리 블록(830)의 업데이트를 포함하는 후기록 요청을 수신;
· 고유 메모리 블록(830)의 복제인 중복 제거된 메모리 블록(820)을 검색;
· 고유 메모리 블록(830)의 서명(S)을 사용하여 검색된 중복 제거된 메모리 블록(820)을 트리 데이터 구조(400)에서 고유한 것으로 상승;
· 후기록 요청에 따라 고유 메모리 블록(830)의 업데이트된 콘텐츠를 전용 메모리 영역의 사용 중이 아닌 영역(840)의 새로운 메모리 위치(870)에 기록; 및
· 고유 메모리 블록(830)의 고유 메모리 객체 참조(530, U_PTR)의 진행 방향이 전용 메모리 영역의 사용 중이 아닌 영역(840)의 새로운 메모리 위치(870)로 바뀌도록 고유 메모리 블록(830)의 메타데이터를 업데이트하되, 모든 복제 메모리 객체 참조(540, D_PTR)는 제거됨.
또한, 컴퓨터 메모리 압축 장치(205)는 바람직하게 다음과 같은 동작을 하도록 더 구성될 수 있다.
· 전용 메모리 영역의 사용 중이 아닌 영역(840)의 시작 주소(805)로의 참조(F_PTR)를 포함하는 메타데이터를 제공; 및
· 후기록 요청에 따라 고유 메모리 블록(830)의 업데이트된 콘텐츠를 전용 메모리 영역의 사용 중이 아닌 영역(840) 내의 새로운 메모리 위치(870)로 기록한 후에 새로운 시작 주소(880)를 반영하도록 상기 참조(F_PTR)를 업데이트.
도 9를 참조하여 설명한 바와 같이, 컴퓨터 메모리 압축 장치(205)는 바람직하게 다음과 같은 동작을 하도록 더 구성될 수 있다.
· 복제 메모리 블록(920)의 업데이트를 포함하는 후기록 요청을 수신;
· 업데이트된 복제 메모리 블록의 콘텐츠를 전용 메모리 영역의 사용 중이 아닌 영역(940)에 새로운 고유 메모리 블록(980)으로 저장; 및
· 고유 메모리 블록(910)과 다른 복제 메모리 블록(930) 사이의 연결을 유지하면서, 이전에 복제 메모리 블록(920)에 연결되었던 고유 메모리 블록(910)이 더 이상 복제 메모리 블록(920)에 연결되지 않는다는 것을 반영하도록 고유 메모리 블록(910)의 메타데이터를 업데이트.
후기록 요청의 결과로, 앞서 도 8과 도 9를 참조하여 설명한 바와 같이, 고유 및 중복 제거된 사본은 업데이트 되게 되고, 불필요한 복제가 발생하는 것을 방지하는데 활용된 사용 중이 아닌 영역에 이르게 된다. 그러나, 시간이 지나면, 압축비가 악화되는 결과가 될 수 있다. 일 실시예에서, 압축비가 지속적으로 모니터링된다. 압축비가 미리 설정된 임계값을 초과하는 경우, 복제와 밸류 중복성의 발생에 대하여 메모리 페이지를 분석하여 이 페이지의 재압축을 수행하는 것을 목표로 하는 프로세스가 개시된다. 이러한 프로세스는 도 6과 도 7에 도시된 프로세스와 동일할 수 있다. 다른 실시예에서, 페이지들을 주기적으로 검토하여 재압축이 필요한지 여부를 파악한다. 재압축이 필요한 것으로 파악되는 경우, 도 6과 도 7에 도시되고 앞서 설명한 프로세스가 활성화된다.
이에 따라, 컴퓨터 메모리 압축 장치(205)는 바람직하게 다음과 같은 동작을 하도록 더 구성될 수 있다.
· 메모리 페이지에 대해 시간의 경과에 따른 압축비를 모니터링; 및
· 압축비가 특정 기준을 만족하지 않는 경우, 본 명세서에 설명된 바와 같은 컴퓨터 메모리 압축 방법(1200)의 기능을 수행하여 메모리 페이지의 재압축을 수행.
대안적으로 또는 추가적으로, 컴퓨터 메모리 압축 장치(205)는 메모리 페이지의 재압축을 주기적으로 수행하여 본 명세서에 설명된 바와 같은 컴퓨터 메모리 압축 방법(1200)의 기능을 수행하여 압축비를 향상하도록 더 구성될 수 있다.
예시적인 실시예들을 참조하여 본 발명의 양상들을 설명하였지만, 본 발명의 양상들은 개시된 실시예들로 한정되지 않고 당업자에 의해 실현될 수 있는 대안적인 실시예들도 포함한다.
한 가지 대안적인 발명 양상은 데이터 아이템의 복제와 밸류 중복성을 제거하여 컴퓨터 메모리 데이터를 압축할 목적의 컴퓨터 메모리 데이터 분석 시스템일 수 있고, 이 시스템은 복제와 밸류 중복성의 제거 수단, 복제와 밸류 중복성의 제거 이후에 데이터 아이템의 위치 파악 수단, 상기 압축 방법을 활용한 데이터 아이템의 압축 및 압축해제 수단, 및 데이터 아이템의 재압축 수단을 포함할 수 있다.
다른 대안적인 발명 양상은 데이터 아이템의 복제와 밸류 중복성을 제거하여 컴퓨터 메모리 데이터를 압축할 목적의 컴퓨터 메모리 데이터 분석 방법일 수 있고, 이 방법은 복제와 밸류 중복성을 제거하는 단계, 복제와 밸류 중복성의 제거 이후에 데이터 아이템의 위치를 파악하는 단계, 상기 압축 방법을 활용하여 데이터 아이템을 압축 및 압축해제하는 단계, 및 데이터 아이템을 재압축하는 단계를 포함할 수 있다.
또 다른 대안적인 발명 양상은 데이터 아이템의 복제와 밸류 중복성을 제거하여 컴퓨터 메모리 데이터를 압축할 목적의 컴퓨터 메모리 데이터 분석 장치일 수 있고, 이 장치는 복제와 밸류 중복성을 제거하고, 복제와 밸류 중복성의 제거 이후에 데이터 아이템의 위치를 파악하고, 상기 압축 방법을 활용하여 데이터 아이템을 압축 및 압축해제하고, 데이터 아이템을 재압축하도록 구성될 수 있다.
또 다른 대안적인 발명 양상은 메모리 블록의 복제의 발생에 대하여 및 잔여 고유 메모리 블록의 밸류 중복성의 발생에 대하여 주 메모리 내의 페이지의 콘텐츠를 분석하는 수단을 가진 데이터 분석 시스템을 포함하는 개시된 발명일 수 있다. 개시된 발명은 또한 메모리의 복제와 밸류 중복성을 제거하기 위한 수단을 가진 시스템을 포함한다. 또한, 개시된 발명은 복제와 밸류 중복성의 제거 이후에 개별 메모리 블록의 위치를 파악하는 수단과 이 수단을 활용하여 메모리 블록의 압축과 압축해제를 하는 수단을 포함한다. 그리고, 개시된 발명은 메모리 페이지를 재압축하는 수단을 가진 시스템을 포함한다.
추가적인 대안적인 발명 양상은 메모리 블록의 복제의 발생에 대하여 및 잔여 고유 메모리 블록 내의 값의 상대적인 빈도에 대하여 주 메모리 내의 페이지의 콘텐츠를 분석하는 방법, 중복 제거 및 밸류 국부성에 모두 기반한 인코딩 방법을 고려하는 메모리 블록의 인코딩 방법, 및 일군의 병합된 중복 제거 및 밸류 국부성 기반 압축 방식을 위한 압축 메모리 내에서 개별 메모리 블록의 위치를 파악하는 방법 및 이를 활용한 메모리 블록의 압축 및 압축해제 방법일 수 있다. 그리고, 개시된 발명은 메모리 페이지의 재압축 방법을 포함한다.
다른 대안적인 발명 양상은 메모리 블록의 복제의 발생에 대하여 및 잔여 고유 메모리 블록의 밸류 중복성에 대하여 주 메모리 내의 페이지의 콘텐츠를 분석하도록 구성된 데이터 애널라이저 장치, 잔여 고유 블록 내의 복제 및 밸류 중복성의 제거를 고려하여 메모리 블록을 인코딩하도록 구성된 데이터 인코더 장치, 일군의 병합된 중복 제거 및 밸류 국부성 기반 압축 방식을 위해 압축 메모리 내에서 개별 메모리 블록의 위치를 파악하도록 구성된 메모리 블록 로케이터 장치와 이를 이용하여 메모리 블록을 압축 및 압축해제하도록 구성된 장치, 및 메모리 페이지를 재압축하도록 구성된 장치일 수 있다.

Claims (37)

  1. 복제 메모리 객체뿐만 아니라 고유 메모리 객체 내에 데이터 값의 밸류 중복성의 발생에 대한 컴퓨터 메모리 콘텐츠를 분석하는 단계(1210);
    상기 복제 메모리 객체를 제거하고 각 잔여 고유 메모리 객체의 상기 데이터 값의 데이터 값 국부성을 활용하여 상기 각 잔여 고유 메모리 객체를 압축하여 상기 컴퓨터 메모리 콘텐츠를 인코딩하는 단계(1220);
    상기 인코딩 된 컴퓨터 메모리 콘텐츠의 상기 메모리 객체를 나타내는 메타데이터(500)를 제공하는 단계(1230)―여기서, 상기 메타데이터(500)는 제거된 복제 메모리 객체, 잔여 고유 메모리 객체, 및 각 잔여 고유 메모리 객체의 압축에 사용된 압축의 유형을 반영함; 및
    상기 메타데이터(500)를 활용하여 상기 인코딩 된 컴퓨터 메모리 콘텐츠에서 메모리 객체의 위치를 찾아내는 단계(1240)를 포함하는,
    컴퓨터 메모리 압축 방법(1200).
  2. 제1항에 있어서,
    상기 메타데이터(500)는 상기 인코딩 된 컴퓨터 메모리 콘텐츠의 각 메모리 객체에 대해:
    상기 메모리 객체가 제거된 복제 메모리 객체 또는 잔여 고유 메모리 객체임을 나타내는 정보(510);
    상기 메모리 객체가 고유 메모리 객체인 경우, 사용된 압축의 유형을 나타내는 정보(520) 및 상기 고유 메모리 객체를 가리키는 고유 메모리 객체 참조(530, U_PTR); 및
    상기 메모리 객체가 복제 메모리 객체인 경우, 상기 압축되지 않은 콘텐츠가 상기 복제 메모리 객체와 동일한 고유 메모리 객체를 가리키는 고유 메모리 객체 참조(530, U_PTR)를 포함하는 것을 특징으로 하는, 방법.
  3. 제2항에 있어서,
    상기 메타데이터(500)는, 고유 메모리 객체인 각 메모리 객체에 대해, 상기 압축되지 않은 콘텐츠가 상기 고유 메모리 객체와 동일한 제거된 복제 메모리 객체를 가리키는 복제 메모리 객체 참조(540, D_PTR)를 더 포함하는 것을 특징으로 하는, 방법.
  4. 제3항에 있어서,
    상기 메모리 객체의 상기 데이터 값을 밀도 있게 표현한 것인 서명(S)을 생성;
    트리 데이터 구조(400)를 거쳐, 상기 생성된 서명(S)을 상기 트리 데이터 구조(400)에 이미 있는 서명과 비교;
    상기 생성된 서명(S)이 상기 트리 데이터 구조(400)에 이미 있는 상기 서명과 일치하지 않는(660) 경우:
    상기 트리 데이터 구조(400)에 노드를 삽입;
    상기 삽입된 노드에 상기 생성된 서명(S)을 기입; 및
    고유 메모리 객체임을 나타내는 상기 정보(510)와 상기 개별 메모리 객체로의 상기 고유 메모리 객체 참조(530, U_PTR)가 있는 상기 메타데이터(500)를 상기 개별 메모리 객체에 대해 생성; 및
    상기 생성된 서명(S)이 상기 트리 데이터 구조(400)에 이미 있는 서명과 일치하는(650) 경우:
    복제 메모리 객체임을 나타내는 상기 정보(510)와 상기 트리 데이터 구조(400)에서 상기 일치하는 서명으로 묘사된 고유 메모리 블록으로의 상기 고유 메모리 객체 참조(530, U_PTR)가 있는 상기 메타데이터(500)를 상기 개별 메모리 객체에 대해 생성; 및
    상기 트리 데이터 구조(400)에서 상기 일치하는 서명으로 묘사된 상기 고유 메모리 블록의 상기 메타데이터(500)를 업데이트하여 상기 개별 메모리 객체로의 복제 메모리 객체 참조(540, D_PTR)를 도입하여,
    상기 컴퓨터 메모리 콘텐츠 내의 상기 개별 메모리 객체 각각을 처리하는 단계(600)를 더 포함하는, 방법.
  5. 제4항에 있어서,
    상기 생성된 서명(S)이 상기 트리 데이터 구조(400)에 있는 서명과 일치하는(650) 경우에,
    상기 개별 메모리 객체가 상기 일치하는 서명으로 나타내어진 상기 고유 메모리 블록과 동일한지 여부를 판단하는 단계; 및
    상기 개별 메모리 객체와 상기 일치하는 서명으로 나타내어진 상기 고유 메모리 블록이 동일하지 않은 경우:
    상기 트리 데이터 구조(400)에 노드를 삽입;
    상기 생성된 서명(S)을 상기 삽입된 노드에 기입; 및
    고유 메모리 객체임을 나타내는 상기 정보(510)와 상기 개별 메모리 객체로의 상기 고유 메모리 객체 참조(530, U_PTR)가 있는 상기 메타데이터(500)를 상기 개별 메모리 객체에 대해 생성하는 단계를 더 포함하는, 방법.
  6. 제4항 또는 제5항에 있어서,
    상기 컴퓨터 메모리 콘텐츠의 모든 메모리 객체가 처리된(600) 경우에,
    상기 트리 데이터 구조(400)를 거쳐, 상기 트리 데이터 구조(400)의 상기 노드에 의해 묘사된 상기 고유 메모리 객체의 상기 데이터 값에 대한 밸류 빈도 표를 생성하는 단계; 및
    상기 생성된 밸류 빈도 표를 사용하여 엔트로피 기반 압축 스키마에 의해 각 고유 메모리 객체를 압축하는 단계를 더 포함하는, 방법.
  7. 제4항 또는 제5항에 있어서,
    상기 컴퓨터 메모리 콘텐츠의 모든 메모리 객체가 처리된(600) 경우에,
    상기 트리 데이터 구조(400)의 상기 노드에 의해 묘사된 상기 고유 메모리 객체의 상기 데이터 값을 검사하고 하나 이상의 기준 값을 판단하여 상기 트리 데이터 구조(400)를 횡단하는 단계; 및
    상기 판단된 하나 이상의 기준 값을 활용하여 델타 인코딩 기반 압축 스키마(delta encoding-based compression scheme)에 의해 각 고유 메모리 객체를 압축하는 단계를 더 포함하는, 방법.
  8. 제1항 내지 제7항의 한 항에 있어서,
    상기 데이터 값은 상기 메모리 객체보다 입도가 더 작고, 상기 메모리 객체는 상기 컴퓨터 메모리 콘텐츠보다 입도가 더 작은 것을 특징으로 하는, 방법.
  9. 제8항에 있어서,
    상기 컴퓨터 메모리 콘텐츠는 컴퓨터 메모리의 페이지이고, 상기 메모리 객체는 메모리 블록이고, 각 메모리 블록은 복수의 데이터 값을 포함하는 것을 특징으로 하는, 방법.
  10. 제2항에 종속하는 제9항에 있어서,
    물리적 메모리 페이지 주소(PA)를 가진 메모리 페이지의 메모리 블록에 대한 읽기 요청을 수신하는 단계;
    룩업 테이블(1010)에서 압축된 메모리 페이지 주소(CA)를 판단하는 단계;
    상기 메모리 블록에 대한 메타데이터(1020)를 검색하는 단계;
    상기 압축된 메모리 페이지 주소(CA)와 상기 검색된 메타데이터의 상기 고유 메모리 객체 참조(530, U_PTR)로부터 압축 메모리 블록 주소(1040)를 계산하는 단계;
    상기 계산된 압축 메모리 블록 주소(1040)에서 압축 메모리 블록(1105)를 검색하는 단계; 및
    상기 메모리 블록에 대한 상기 검색된 메타데이터로부터 압축 유형을 나타내는 상기 정보(520; 1120, ENC)를 활용하여 상기 검색된 압축 메모리 블록(1105)을 압축해제하는 단계(1110)를 더 포함하는, 방법.
  11. 제3항에 종속하는 제9항 또는 제10항에 있어서,
    원 메모리 위치에 있는 고유 메모리 블록(830)의 업데이트를 포함하는 후기록(write-back) 요청을 수신하는 단계;
    상기 컴퓨터 메모리 콘텐츠의 전용 메모리 영역의 사용 중이 아닌 영역(840) 내의 새로운 메모리 위치(870)로 업데이트하기 이전에 상기 고유 메모리 블록(830)을 복사하는 단계;
    상기 고유 메모리 블록(830)에 연결된 복제 메모리 블록(810, 820)의 상기 복제 메모리 객체 참조(540, D_PTR)의 진행 방향이 상기 전용 메모리 영역의 사용 중이 아닌 영역(840)의 상기 새로운 메모리 위치(870)로 바뀌도록 상기 고유 메모리 블록(830)에 연결된 상기 복제 메모리 블록(810, 820)의 상기 메타데이터를 업데이트하는 단계; 및
    상기 후기록 요청에 따라 원 메모리 위치(830)에 있는 상기 고유 메모리 블록을 업데이트하는 단계를 더 포함하는, 방법.
  12. 제11항에 있어서,
    상기 전용 메모리 영역의 사용 중이 아닌 영역(840)의 시작 주소(805)로의 참조(F_PTR)를 포함하는 메타데이터를 제공하는 단계; 및
    상기 전용 메모리 영역의 사용 중이 아닌 영역(840) 내의 상기 새로운 메모리 위치(870)로 상기 고유 메모리 블록(830)을 복사한 후에 새로운 시작 주소(880)를 반영하도록 상기 참조(F_PTR)를 업데이트하는 단계를 더 포함하는, 방법.
  13. 제4항 및 제9항 또는 제10항에 있어서,
    원 메모리 위치에 있는 고유 메모리 블록(830)의 업데이트를 포함하는 후기록 요청을 수신하는 단계;
    상기 고유 메모리 블록(830)의 복제인 중복 제거된 메모리 블록(820)을 검색하는 단계;
    상기 고유 메모리 블록(830)의 상기 서명(S)을 사용하여 상기 검색된 중복 제거된 메모리 블록(820)을 상기 트리 데이터 구조(400)에서 고유한 것으로 상승시키는 단계;
    상기 후기록 요청에 따라 상기 고유 메모리 블록(830)의 업데이트된 콘텐츠를 전용 메모리 영역의 사용 중이 아닌 영역(840)의 새로운 메모리 위치(870)에 기록하는 단계; 및
    상기 고유 메모리 블록(830)의 상기 고유 메모리 객체 참조(530, U_PTR)의 진행 방향이 상기 전용 메모리 영역의 사용 중이 아닌 영역(840)의 상기 새로운 메모리 위치(870)로 바뀌도록 상기 고유 메모리 블록(830)의 상기 메타데이터를 업데이트하는 단계―여기서, 모든 복제 메모리 객체 참조(540, D_PTR)는 제거됨―를 더 포함하는, 방법.
  14. 제13항에 있어서,
    상기 전용 메모리 영역의 사용 중이 아닌 영역(840)의 시작 주소(805)로의 참조(F_PTR)를 포함하는 메타데이터를 제공하는 단계; 및
    상기 후기록 요청에 따라 상기 고유 메모리 블록(830)의 상기 업데이트된 콘텐츠를 상기 전용 메모리 영역의 사용 중이 아닌 영역(840) 내의 상기 새로운 메모리 위치(870)로 기록한 후에 새로운 시작 주소(880)를 반영하도록 상기 참조(F_PTR)를 업데이트하는 단계를 더 포함하는, 방법.
  15. 제9항 내지 제14항의 한 항에 있어서,
    복제 메모리 블록(920)의 업데이트를 포함하는 후기록 요청을 수신하는 단계;
    상기 업데이트된 복제 메모리 블록의 상기 콘텐츠를 전용 메모리 영역의 사용 중이 아닌 영역(940)에 새로운 고유 메모리 블록(980)으로 저장하는 단계; 및
    고유 메모리 블록(910)과 다른 복제 메모리 블록(930) 사이의 연결을 유지하면서, 이전에 상기 복제 메모리 블록(920)에 연결되었던 상기 고유 메모리 블록(910)이 더 이상 상기 복제 메모리 블록(920)에 연결되지 않는다는 것을 반영하도록 상기 고유 메모리 블록(910)의 상기 메타데이터를 업데이트하는 단계를 더 포함하는, 방법.
  16. 제11항 내지 제15항의 한 항에 있어서,
    메모리 페이지에 대해 시간의 경과에 따른 압축비를 모니터링하는 단계; 및
    상기 압축비가 특정 기준을 만족하지 않는 경우, 제1항 내지 제10항의 방법의 기능을 수행하여 상기 메모리 페이지의 재압축을 수행하는 단계를 더 포함하는, 방법.
  17. 제15항 내지 제16항의 한 항에 있어서,
    메모리 페이지의 재압축을 주기적으로 수행하여 제1항 내지 제10항의 방법의 기능을 수행하여 압축비를 향상하는 단계를 더 포함하는, 방법.
  18. 제1항 내지 제17항의 한 항에 있어서,
    데이터 값 국부성을 활용하는 상기 압축은:
    엔트로피 기반 인코딩;
    델타 인코딩;
    사전 기반 인코딩; 및
    패턴 기반 인코딩 중의 하나를 포함하는 것을 특징으로 하는, 방법.
  19. 복제 메모리 객체뿐만 아니라 고유 메모리 객체 내에 데이터 값의 밸류 중복성의 발생에 대한 컴퓨터 메모리 콘텐츠를 분석하도록 구성된 애널라이저 유닛(214);
    상기 복제 메모리 객체를 제거하고 각 잔여 고유 메모리 객체의 상기 데이터 값의 데이터 값 국부성을 활용하여 상기 각 잔여 고유 메모리 객체를 압축하여 상기 컴퓨터 메모리 콘텐츠를 인코딩하도록 구성된 인코더 유닛(212)―여기서, 상기 인코더 유닛(212)은 상기 인코딩 된 컴퓨터 메모리 콘텐츠의 상기 메모리 객체를 나타내는 메타데이터(500)를 제공하도록 더 구성되고, 상기 메타데이터(500)는 제거된 복제 메모리 객체, 잔여 고유 메모리 객체, 및 각 잔여 고유 메모리 객체의 압축에 사용된 압축의 유형을 반영함; 및
    상기 메타데이터(500)를 활용하여 상기 인코딩 된 컴퓨터 메모리 콘텐츠에서 메모리 객체의 위치를 찾아내도록 구성된 로케이터 유닛(211)을 포함하는, 컴퓨터 메모리 압축 장치(205).
  20. 제19항에 있어서,
    상기 메타데이터(500)는 상기 인코딩 된 컴퓨터 메모리 콘텐츠의 각 메모리 객체에 대해:
    상기 메모리 객체가 제거된 복제 메모리 객체 또는 잔여 고유 메모리 객체임을 나타내는 정보(510);
    상기 메모리 객체가 고유 메모리 객체인 경우, 사용된 압축의 유형을 나타내는 정보(520) 및 상기 고유 메모리 객체를 가리키는 고유 메모리 객체 참조(530, U_PTR); 및
    상기 메모리 객체가 복제 메모리 객체인 경우, 상기 압축되지 않은 콘텐츠가 상기 복제 메모리 객체와 동일한 고유 메모리 객체를 가리키는 고유 메모리 객체 참조(530, U_PTR)를 포함하는 것을 특징으로 하는, 장치.
  21. 제20항에 있어서, 상기 메타데이터(500)는, 고유 메모리 객체인 각 메모리 객체에 대해, 상기 압축되지 않은 콘텐츠가 상기 고유 메모리 객체와 동일한 제거된 복제 메모리 객체를 가리키는 복제 메모리 객체 참조(540, D_PTR)를 더 포함하는 것을 특징으로 하는, 장치.
  22. 제21항에 있어서,
    상기 애널라이저 유닛(214)과 상기 인코더 유닛(212)은:
    상기 메모리 객체의 상기 데이터 값을 밀도 있게 표현한 것인 서명(S)을 생성;
    트리 데이터 구조(400)를 거쳐, 상기 생성된 서명(S)을 상기 트리 데이터 구조(400)에 이미 있는 서명과 비교;
    상기 생성된 서명(S)이 상기 트리 데이터 구조(400)에 이미 있는 상기 서명과 일치하지 않는(660) 경우:
    상기 트리 데이터 구조(400)에 노드를 삽입;
    상기 삽입된 노드에 상기 생성된 서명(S)을 기입; 및
    고유 메모리 객체임을 나타내는 상기 정보(510)와 상기 개별 메모리 객체로의 상기 고유 메모리 객체 참조(530, U_PTR)가 있는 상기 메타데이터(500)를 상기 개별 메모리 객체에 대해 생성; 및
    상기 생성된 서명(S)이 상기 트리 데이터 구조(400)에 이미 있는 서명과 일치하는(650) 경우:
    복제 메모리 객체임을 나타내는 상기 정보(510)와 상기 트리 데이터 구조(400)에서 상기 일치하는 서명으로 묘사된 고유 메모리 블록으로의 상기 고유 메모리 객체 참조(530, U_PTR)가 있는 상기 메타데이터(500)를 상기 개별 메모리 객체에 대해 생성; 및
    상기 트리 데이터 구조(400)에서 상기 일치하는 서명으로 묘사된 상기 고유 메모리 블록의 상기 메타데이터(500)를 업데이트하여 상기 개별 메모리 객체로의 복제 메모리 객체 참조(540, D_PTR)를 도입하여,
    상기 컴퓨터 메모리 콘텐츠 내의 상기 개별 메모리 객체 각각을 처리하도록(600) 구성된 것을 특징으로 하는, 장치.
  23. 제22항에 있어서,
    상기 애널라이저 유닛(214)과 상기 인코더 유닛(212)은 상기 생성된 서명(S)이 상기 트리 데이터 구조(400)에 있는 서명과 일치하는(650) 경우에,
    상기 개별 메모리 객체가 상기 일치하는 서명으로 나타내어진 상기 고유 메모리 블록과 동일한지 여부를 판단; 및
    상기 개별 메모리 객체와 상기 일치하는 서명으로 나타내어진 상기 고유 메모리 블록이 동일하지 않은 경우:
    상기 트리 데이터 구조(400)에 노드를 삽입;
    상기 생성된 서명(S)을 상기 삽입된 노드에 기입; 및
    고유 메모리 객체임을 나타내는 상기 정보(510)와 상기 개별 메모리 객체로의 상기 고유 메모리 객체 참조(530, U_PTR)가 있는 상기 메타데이터(500)를 상기 개별 메모리 객체에 대해 생성하도록 더 구성된 것을 특징으로 하는, 장치.
  24. 제23항에 있어서,
    상기 애널라이저 유닛(214)과 상기 인코더 유닛(212)은 상기 컴퓨터 메모리 콘텐츠의 모든 메모리 객체가 처리된(600) 경우에,
    상기 트리 데이터 구조(400)를 거쳐, 상기 트리 데이터 구조(400)의 상기 노드에 의해 묘사된 상기 고유 메모리 객체의 상기 데이터 값에 대한 밸류 빈도 표를 생성; 및
    상기 생성된 밸류 빈도 표를 사용하여 엔트로피 기반 압축 스키마에 의해 각 고유 메모리 객체를 압축하도록 더 구성된 것을 특징으로 하는, 장치.
  25. 제23항에 있어서,
    상기 애널라이저 유닛(214)과 상기 인코더 유닛(212)은 상기 컴퓨터 메모리 콘텐츠의 모든 메모리 객체가 처리된(600) 경우에,
    상기 트리 데이터 구조(400)의 상기 노드에 의해 묘사된 상기 고유 메모리 객체의 상기 데이터 값을 검사하고 하나 이상의 기준 값을 판단하여 상기 트리 데이터 구조(400)를 횡단; 및
    상기 판단된 하나 이상의 기준 값을 활용하여 델타 인코딩 기반 압축 스키마(delta encoding-based compression scheme)에 의해 각 고유 메모리 객체를 압축하도록 더 구성된 것을 특징으로 하는, 장치.
  26. 제19항 내지 제25항의 한 항에 있어서,
    상기 데이터 값은 상기 메모리 객체보다 입도가 더 작고, 상기 메모리 객체는 상기 컴퓨터 메모리 콘텐츠보다 입도가 더 작은 것을 특징으로 하는, 장치.
  27. 제26항에 있어서,
    상기 컴퓨터 메모리 콘텐츠는 컴퓨터 메모리의 페이지이고, 상기 메모리 객체는 메모리 블록이고, 각 메모리 블록은 복수의 데이터 값을 포함하는 것을 특징으로 하는, 장치.
  28. 제20항에 종속하는 제27항에 있어서,
    디컴프레서 유닛(213; 1110)을 더 포함하고,
    물리적 메모리 페이지 주소(PA)를 가진 메모리 페이지의 메모리 블록에 대한 읽기 요청을 수신;
    룩업 테이블(1010)에서 압축된 메모리 페이지 주소(CA)를 판단;
    상기 메모리 블록에 대한 메타데이터(1020)를 검색;
    상기 압축된 메모리 페이지 주소(CA)와 상기 검색된 메타데이터의 상기 고유 메모리 객체 참조(530, U_PTR)로부터 압축 메모리 블록 주소(1040)를 계산;
    상기 계산된 압축 메모리 블록 주소(1040)에서 압축 메모리 블록(1105)를 검색; 및
    상기 메모리 블록에 대한 상기 검색된 메타데이터로부터 압축 유형을 나타내는 상기 정보(520; 1120, ENC)를 활용하여 상기 검색된 압축 메모리 블록(1105)을 압축해제 하도록 구성된, 장치.
  29. 제21항에 종속하는 제27항 또는 제28항에 있어서,
    원 메모리 위치에 있는 고유 메모리 블록(830)의 업데이트를 포함하는 후기록(write-back) 요청을 수신;
    상기 컴퓨터 메모리 콘텐츠의 전용 메모리 영역의 사용 중이 아닌 영역(840) 내의 새로운 메모리 위치(870)로 업데이트하기 이전에 상기 고유 메모리 블록(830)을 복사;
    상기 고유 메모리 블록(830)에 연결된 복제 메모리 블록(810, 820)의 상기 복제 메모리 객체 참조(540, D_PTR)의 진행 방향이 상기 전용 메모리 영역의 사용 중이 아닌 영역(840)의 상기 새로운 메모리 위치(870)로 바뀌도록 상기 고유 메모리 블록(830)에 연결된 상기 복제 메모리 블록(810, 820)의 상기 메타데이터를 업데이트; 및
    상기 후기록 요청에 따라 원 메모리 위치(830)에 있는 상기 고유 메모리 블록을 업데이트하도록 더 구성된, 장치.
  30. 제29항에 있어서,
    상기 전용 메모리 영역의 사용 중이 아닌 영역(840)의 시작 주소(805)로의 참조(F_PTR)를 포함하는 메타데이터를 제공; 및
    상기 전용 메모리 영역의 사용 중이 아닌 영역(840) 내의 상기 새로운 메모리 위치(870)로 상기 고유 메모리 블록(830)을 복사한 후에 새로운 시작 주소(880)를 반영하도록 상기 참조(F_PTR)를 업데이트하도록 더 구성된, 장치.
  31. 제22항 및 제27항 또는 제28항에 있어서,
    원 메모리 위치에 있는 고유 메모리 블록(830)의 업데이트를 포함하는 후기록 요청을 수신;
    상기 고유 메모리 블록(830)의 복제인 중복 제거된 메모리 블록(820)을 검색;
    상기 고유 메모리 블록(830)의 상기 서명(S)을 사용하여 상기 검색된 중복 제거된 메모리 블록(820)을 상기 트리 데이터 구조(400)에서 고유한 것으로 상승;
    상기 후기록 요청에 따라 상기 고유 메모리 블록(830)의 업데이트된 콘텐츠를 전용 메모리 영역의 사용 중이 아닌 영역(840)의 새로운 메모리 위치(870)에 기록; 및
    상기 고유 메모리 블록(830)의 상기 고유 메모리 객체 참조(530, U_PTR)의 진행 방향이 상기 전용 메모리 영역의 사용 중이 아닌 영역(840)의 상기 새로운 메모리 위치(870)로 바뀌도록 상기 고유 메모리 블록(830)의 상기 메타데이터를 업데이트―여기서, 모든 복제 메모리 객체 참조(540, D_PTR)는 제거됨―하도록 더 구성된, 장치.
  32. 제31항에 있어서,
    상기 전용 메모리 영역의 사용 중이 아닌 영역(840)의 시작 주소(805)로의 참조(F_PTR)를 포함하는 메타데이터를 제공; 및
    상기 후기록 요청에 따라 상기 고유 메모리 블록(830)의 상기 업데이트된 콘텐츠를 상기 전용 메모리 영역의 사용 중이 아닌 영역(840) 내의 상기 새로운 메모리 위치(870)로 기록한 후에 새로운 시작 주소(880)를 반영하도록 상기 참조(F_PTR)를 업데이트하도록 더 구성된, 장치.
  33. 제27항 내지 제32항의 한 항에 있어서,
    복제 메모리 블록(920)의 업데이트를 포함하는 후기록 요청을 수신;
    상기 업데이트된 복제 메모리 블록의 상기 콘텐츠를 전용 메모리 영역의 사용 중이 아닌 영역(940)에 새로운 고유 메모리 블록(980)으로 저장; 및
    고유 메모리 블록(910)과 다른 복제 메모리 블록(930) 사이의 연결을 유지하면서, 이전에 상기 복제 메모리 블록(920)에 연결되었던 상기 고유 메모리 블록(910)이 더 이상 상기 복제 메모리 블록(920)에 연결되지 않는다는 것을 반영하도록 상기 고유 메모리 블록(910)의 상기 메타데이터를 업데이트하도록 더 구성된, 장치.
  34. 제32항 또는 제33항에 있어서,
    메모리 페이지에 대해 시간의 경과에 따른 압축비를 모니터링; 및
    상기 압축비가 특정 기준을 만족하지 않는 경우, 제1항 내지 제10항의 방법의 기능을 수행하여 상기 메모리 페이지의 재압축을 수행하도록 더 구성된, 장치.
  35. 제32항 내지 제34항의 한 항에 있어서,
    메모리 페이지의 재압축을 주기적으로 수행하여 제1항 내지 제9항의 방법의 기능을 수행하여 압축비를 향상하도록 더 구성된, 장치.
  36. 제19항 내지 제35항의 한 항에 있어서, 상기 인코더 유닛(212)는,
    엔트로피 기반 압축; 및
    Base-Delta-Immediate 압축 중의 하나를 적용하여 데이터 값 국부성을 활용하여 압축하도록 구성된 것을 특징으로 하는, 장치.
  37. 하나 이상의 프로세서(P1??PN);
    하나 이상의 컴퓨터 메모리(M1-Mk; C1-C3); 및
    제19항 내지 제36항의 한 항에 따른 컴퓨터 메모리 압축 장치(205)를 포함하는, 컴퓨터 시스템(200).

KR1020217024939A 2019-01-11 2020-01-09 컴퓨터 메모리 내의 복제 및 밸류 중복성을 제거하기 위한 시스템, 방법, 및 장치 KR20210113297A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
SE1950027A SE543186C2 (en) 2019-01-11 2019-01-11 Systems, methods and devices for eliminating duplicates and value redundancy in computer memories
SE1950027-1 2019-01-11
PCT/SE2020/050013 WO2020145874A1 (en) 2019-01-11 2020-01-09 Systems, methods and devices for eliminating duplicates and value redundancy in computer memories

Publications (1)

Publication Number Publication Date
KR20210113297A true KR20210113297A (ko) 2021-09-15

Family

ID=71521321

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217024939A KR20210113297A (ko) 2019-01-11 2020-01-09 컴퓨터 메모리 내의 복제 및 밸류 중복성을 제거하기 위한 시스템, 방법, 및 장치

Country Status (8)

Country Link
US (1) US20230076729A2 (ko)
EP (1) EP3908938A4 (ko)
JP (1) JP2022516502A (ko)
KR (1) KR20210113297A (ko)
CN (1) CN113366463A (ko)
CA (1) CA3124691A1 (ko)
SE (1) SE543186C2 (ko)
WO (1) WO2020145874A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11651209B1 (en) * 2019-10-02 2023-05-16 Google Llc Accelerated embedding layer computations
SE544557C2 (en) * 2020-12-01 2022-07-12 Zeropoint Tech Ab Systems, methods and devices for exploiting value similarity in computer memories

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1003301A3 (en) * 1998-11-19 2000-06-07 NEC Corporation Program information providing apparatus and record/playback control apparatus
US7188227B2 (en) * 2003-09-30 2007-03-06 International Business Machines Corporation Adaptive memory compression
US9292530B2 (en) * 2011-06-14 2016-03-22 Netapp, Inc. Object-level identification of duplicate data in a storage system
US9843702B1 (en) * 2012-03-30 2017-12-12 EMC IP Holding Company LLC Method and system for dynamic compression module selection
US9471500B2 (en) * 2013-04-12 2016-10-18 Nec Corporation Bucketized multi-index low-memory data structures
US20150227543A1 (en) * 2014-02-11 2015-08-13 Atlantis Computing, Inc. Method and apparatus for replication of files and file systems using a deduplication key space
KR101953548B1 (ko) * 2016-02-15 2019-03-04 한국전자통신연구원 네트워크 트래픽 기록 장치 및 그 방법
JP6794782B2 (ja) * 2016-11-02 2020-12-02 富士通株式会社 情報処理装置、情報処理プログラム、及び情報処理方法
US10552469B2 (en) * 2017-01-06 2020-02-04 Oracle International Corporation File system hierarchy mirroring across cloud data stores
CN108427539B (zh) * 2018-03-15 2021-06-04 深信服科技股份有限公司 缓存设备数据的离线去重压缩方法、装置及可读存储介质
US10776957B2 (en) * 2018-10-02 2020-09-15 Samsung Electronics Co., Ltd. Online image compression in hardware

Also Published As

Publication number Publication date
SE543186C2 (en) 2020-10-20
CA3124691A1 (en) 2020-07-16
EP3908938A4 (en) 2022-09-21
JP2022516502A (ja) 2022-02-28
US20230076729A2 (en) 2023-03-09
CN113366463A (zh) 2021-09-07
EP3908938A1 (en) 2021-11-17
WO2020145874A1 (en) 2020-07-16
SE1950027A1 (en) 2020-07-12
US20220100718A1 (en) 2022-03-31

Similar Documents

Publication Publication Date Title
US9880746B1 (en) Method to increase random I/O performance with low memory overheads
US10642522B2 (en) Method and system for in-line deduplication in a storage drive based on a non-collision hash
US20210263662A1 (en) Methods and Systems for Object Level De-Duplication for Data Storage System
US20230108124A1 (en) Organizing prime data elements using a tree data structure
US10691340B2 (en) Deduplication of objects by fundamental data identification
US10635359B2 (en) Managing cache compression in data storage systems
US9268783B1 (en) Preferential selection of candidates for delta compression
US9262434B1 (en) Preferential selection of candidates for delta compression
US9405764B1 (en) Method for cleaning a delta storage system
US8639669B1 (en) Method and apparatus for determining optimal chunk sizes of a deduplicated storage system
US7188118B2 (en) System and method for detecting file content similarity within a file system
US8972672B1 (en) Method for cleaning a delta storage system
US10135462B1 (en) Deduplication using sub-chunk fingerprints
CN110741637B (zh) 简化视频数据的方法、计算机可读存储介质和电子装置
US9400610B1 (en) Method for cleaning a delta storage system
US10614038B1 (en) Inline deduplication of compressed data
US9026740B1 (en) Prefetch data needed in the near future for delta compression
JP6320432B2 (ja) データ重複排除における、類似性探索に基づくダイジェスト検索
US11372576B2 (en) Data processing apparatus, non-transitory computer-readable storage medium, and data processing method
CN108475508B (zh) 音频数据和保存在块处理存储系统中的数据的简化
JP2023525791A (ja) 基本データシーブを使用して無損失削減されたデータの効率的な取出しのための基本データの局所性の利用
KR20210113297A (ko) 컴퓨터 메모리 내의 복제 및 밸류 중복성을 제거하기 위한 시스템, 방법, 및 장치
US9116902B1 (en) Preferential selection of candidates for delta compression
Zhang et al. Data deduplication based on Hadoop
KR20230124941A (ko) 컴퓨터 메모리에서 밸류 유사성을 활용하는 시스템,방법, 및 장치