KR20230124941A - 컴퓨터 메모리에서 밸류 유사성을 활용하는 시스템,방법, 및 장치 - Google Patents
컴퓨터 메모리에서 밸류 유사성을 활용하는 시스템,방법, 및 장치 Download PDFInfo
- Publication number
- KR20230124941A KR20230124941A KR1020237022365A KR20237022365A KR20230124941A KR 20230124941 A KR20230124941 A KR 20230124941A KR 1020237022365 A KR1020237022365 A KR 1020237022365A KR 20237022365 A KR20237022365 A KR 20237022365A KR 20230124941 A KR20230124941 A KR 20230124941A
- Authority
- KR
- South Korea
- Prior art keywords
- value
- data
- values
- delta
- reference value
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 190
- 230000015654 memory Effects 0.000 claims description 137
- 238000007906 compression Methods 0.000 claims description 90
- 230000006835 compression Effects 0.000 claims description 90
- 238000013144 data compression Methods 0.000 claims description 60
- 230000006837 decompression Effects 0.000 claims description 18
- 238000012545 processing Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 9
- 238000003860 storage Methods 0.000 claims description 9
- 230000001186 cumulative effect Effects 0.000 claims description 6
- 239000000872 buffer Substances 0.000 claims description 2
- 230000008569 process Effects 0.000 description 26
- 238000013507 mapping Methods 0.000 description 6
- 238000007667 floating Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000005265 energy consumption Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003064 k means clustering Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/42—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6017—Methods or arrangements to increase the throughput
- H03M7/6029—Pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- 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/1028—Power efficiency
-
- 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/1048—Scalability
-
- 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/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- 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
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)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Memory System (AREA)
- Image Analysis (AREA)
Abstract
복수의 데이터 값을 각각 포함하는 복수의 데이터 블록을 확보하는 단계(2210)를 데이터 압축 방법(2200)이 개시된다. 상기 방법은 델타값은 데이터 값과 기준값 사이의 차이를 의미하는, 상기 확보된 복수의 데이터 블록의 베이스-델타 인코딩(2220)을 수행한다. 이는 상기 복수의 데이터 블록에 공통인 글로벌 기준값 세트를 상기 복수의 데이터 블록의 상기 데이터 값 중에서 판단하는 단계(2230)를 포함한다. 상기 글로벌 기준값 세트는 상기 글로벌 기준값 세트 내의 상기 글로벌 기준값에 대하여 상기 복수의 데이터 블록의 상기 데이터 값에 대한 델타값을 최소화하도록 선택된다. 상기 방법은 상기 복수의 데이터 블록의 개별 데이터 값들을 부호화하는 단계(2240)를 더 포함하고, 상기 개별 데이터 값들은 상기 글로벌 기준값 세트에서, 상기 개별 데이터 값들에 수치적으로 가장 가깝고 그 결과로 최소 델타값을 산출하는 글로벌 기준값을 각 개별 데이터 값에 대해 선택(2250)하고 상기 선택된 글로벌 기준값과 상기 산출된 델타값을 나타내기 위해 상기 부호화된 개별 데이터 값에 대해 메타데이터를 생성(2260)하여 부호화된다.
Description
본 발명은 일반적으로 전자 컴퓨터의 메모리의 데이터 압축 분야에 관한 것이다.
데이터 압축은 빈번한 데이터의 모음을 덜 빈번한 데이터의 모음보다 더 효율적으로 코딩하여 데이터를 더욱 효율적으로 저장하고 전송하는 일반적인 방법이다. 일반적으로, 여러 이유로 인해 데이터를 더욱 효율적으로 저장하고 전송하고 싶어 한다. 예컨대, 주 메모리 또는 캐시 메모리 등과 같은 곳에 데이터 및 처리장치를 동작시키는 컴퓨터 명령어를 저장하는 메모리 등의 컴퓨터 메모리에서는, 이러한 데이터를 예를 들어 K배 더 효율적으로 저장하고자 하는데, 이는 한 메모리에서 다른 메모리로 데이터를 전송하는 데에 K배 더 적은 통신 용량을 사용하고 이러한 데이터를 컴퓨터 시스템 내부에 또는 컴퓨터 시스템 사이에 및/또는 메모리 사이에 저장 및 전송하는 데에 K배 적은 에너지를 소비할 수 있어서 이러한 메모리의 사이즈를 K배 줄일 수 있기 때문이다. 대안적으로, 사용 가능한 컴퓨터 메모리에 데이터 압축을 하지 않는 것보다 K배 더 많은 데이터를 저장할 수 있다. 이로써, 비용이 많이 들 수 있고 리소스 제약으로 인해 덜 바람직할 수 있는 메모리 추가를 하지 않고 컴퓨터의 성능을 K배 향상시킬 수 있다. 다른 예를 들면, 스마트폰, 태블릿, 노트북 컴퓨터, 데스크톱 컴퓨터, 또는 셋톱 박스의 크기 및 무게는 커지거나 무거워질수록 사용자에게 가치가 줄어들고 따라서 이러한 제품의 시장 가치가 떨어질 수 있기 때문에 제한적일 수 있다. 그럼에도 불구하고, 더욱 큰 메모리 용량과 메모리 통신 대역폭을 이용 가능하게 하면 성능의 향상으로 이어지고 이러한 제품을 더 잘 활용할 수 있게 해주므로, 더욱 큰 메모리 용량과 메모리 통신 대역폭은 이러한 제품의 시장 가치를 상승시킬 수 있다.
요약하면, 단독 장치 또는 상호 연결된 장치를 포함하는 컴퓨터 장치의 일반적인 환경에서, 데이터 압축은 성능을 향상하고, 에너지 소비를 줄이며, 사용 가능한 메모리 통신 대역폭을 증가하거나 메모리에 의해 소비되는 비용과 면적을 줄일 수 있다. 따라서, 데이터 압축은 여기에 설명한 활용 외에도 넓은 범위의 컴퓨터 제품에서 다양하게 활용될 수 있다.
통상적으로, 종래 기술의 압축 메모리 시스템은 메모리 페이지의 생성시에 디스크로부터 메모리 페이지를 읽어오거나 메모리 할당을 통하여 메모리 페이지를 압축한다. 압축은 소프트웨어 루틴 또는 하드웨어 가속기에 의한 다양한 공지의 방법을 활용하여 이루어질 수 있다. 프로세서가 메모리로부터 데이터를 요청하는 경우, 데이터는 요청하는 프로세서에 응답하기 전에 우선 압축해제 되어야 한다. 이러한 요청은 결국 중요 메모리 액세스 경로에 이르게 되므로, 메모리 액세스 시간에 영향이 작게 하기 위하여 압축해제는 통상적으로 하드웨어 가속된다.
메모리 접근 시간에 영향이 작게 하면서도 예컨대 메모리 페이지와 같은 메모리 대상의 데이터를 효과적으로 압축할 수 있기 위하여, 데이터는 통상적으로 데이터 블록별로 압축된다. 여기서, 데이터 블록은 64바이트일 수 있고, 물론 이보다 더 작거나 클 수도 있다. 데이터 블록은 정수 또는 부동 소수점(floating-point) 값, 또는 기타 데이터 유형들 등과 같은 여러 값을 포함할 수 있다. 예를 들어, 64바이트 데이터 블록은 16개의 32비트 정수 또는 부동 소수점을 포함할 수 있다.
압축 방식은 무손실 방식 또는 손실 방식일 수 있다. 무손실 압축 방식은 무손실 방식으로 압축되는 값이 압축해제 후에 완벽하게 복원될 수 있도록 정보를 보존한다. 이와 반대로, 손실 압축 방식은 모든 정보를 보존하지 않는다. 반면, 손실 방식으로 값이 압축되는 경우, 압축해제 후에 완벽하게 복원되지 않게 된다. 원본 값과 복원된 값 사이의 차이를 압축 오류라고 한다. 숙제는 이러한 오류를 제한되고 낮은 수준으로 유지하는 것이다.
종래 기술의 델타 압축(delta compression)이라고 불리는 무손실 압축 방식의 한 종류에서 취하는 방법은 수치가 서로 가까운 데이터 값의 집합에서 밸류 유사성을 활용하는 것이다. 데이터 값의 집합에 수치적으로 가까운 기준값(base value)을 선정함으로써, 델타값(delta value)이라고 불리는 각 개별 값과 사이의 차이를 따져 보기만 하면 된다.
예를 들어, BDI(base-delta-immediate compression)에서, 데이터 블록에 대한 기준값이 이 데이터 블록과 연관된 값들 중에서 임의로 선정된다. 데이터 블록은 데이터 블록 내의 각 값과 상기 기준값 사이의 차이를 추적하여 압축된다. 데이터 블록 내의 모든 값들이 수치적으로 유사한 경우, 이러한 차이는 작게 된다. 예를 들면, 데이터 블록이 100, 98, 102, 및 105의 4개의 값을 포함하고 첫째 값(100)이 기준값으로 선정되는 경우, 차이는 0, -2, 2, 및 5가 될 것이다.
차이, 즉, 델타값과 기준값만을 저장함으로써 예시적인 데이터 블록을 더욱 작게 저장하는 것이 가능하다. 앞의 예에서, 원래의 블록은 4 x 32 = 128비트의 저장공간을 필요로 하겠지만, 델타값의 범위가 [-8, 7]이라는 가정하에, BDI는 32 + 3 x 4 = 44비트만을 이상적으로 필요로 하여, 델타값을 저장하는 데에 4비트만 필요하다. 이로써 압축 정도(또는 압축 비율이라고도 함)는 128/44 = 3배가 된다.
BDI의 장점은 원래값/델타값과 기준값의 단순 뺄셈/덧셈만을 함으로써 데이터 블록을 압축/압축해제 하는 하드웨어 가속 압축 및 압축해제 장치에 의해 구현될 수 있다는 것이다. 하지만, 데이터 블록 내의 값들이 수치적으로 서로 유사한 경우에만 효과적으로 작동하게 되어 있다. 서로 유사하지 않은 경우, 델타값을 부호화하기 위해 필요한 메타데이터가 압축으로부터의 게인을 오프셋 시킬 수 있다. 예컨대, 각각 4개의 값을 가진 2개의 블록 B1과 B2가 있고, B1에 포함된 값들은 100, 102, 205, 208이고 B2에 포함된 값들은 200, 202, 105, 108인 경우가 있다고 할 때, BDI는 B1에 대한 기준값으로 100을 선정하고 델타값으로 0, 2, 105, 108을 부호화할 수 있다. 반면, BDI는 B2에 대한 기준값으로 200을 선정하고 델타값으로 0, 2, -95, -92를 부호화할 수 있다. 본 예에서, 델타값을 부호화하기 위한 메타데이터의 양이 클수록 BDI의 압축 효과가 떨어질 수 있다는 것을 알 수 있다. 기준값이 B1과 B2 사이에 공유되었다면, 메타데이터를 줄일 수 있을 것이다.
본 특허 개시가 해결하는 문제는, 복수의 데이터 블록에 저장된 데이터 세트에 대해, 복수의 데이터 블록에 의해 공유될 수 있는 기준값 세트를 선택할 수 있는 시스템, 방법, 및 장치를 제공하는 것이다.
첫째 과제는 메타데이터의 양을 줄여서 효과적으로 복수의 데이터 블록 중에서 델타값을 부호화하게 되는 기준값 세트를 복수의 데이터 블록 중에서 선택하도록 구성된 방법 및 장치를 고안하는 것이다. 둘째 과제는 하드웨어 가속기를 통해 효과적으로 압축 및 압축해제 프로세스를 관리하도록 구성된 방법 및 장치를 고안하는 것이다.
기준값의 선택은 델타값들이 명시적으로 부호화되는 인코딩 스키마(encoding scheme)로 이어지게 된다. 그러나, 델타값은 촘촘하게 부호화될 수 있는 반복된 값들을 의미하는 밸류 중복성(value redundancy)을 보일 수 있다. 예를 들어, 앞에 예시한 2개의 데이터 블록, 즉, B1은 100, 102, 205, 208의 값을 포함하고, B2는 200, 202, 105, 108의 값을 포함하는 경우에서, 기준값이 100과 200인 경우, B1의 델타값은 0, 2, 5, 8이고 B2의 델타값은 0, 2, 5, 8이다. 이 예는 델타값은 활용될 수 있는 밸류 중복성을 노출시킬 수 있다는 것을 보여준다. 구체적으로, 본 예에서, B1의 델타값 수 k는 B2의 델타값 k와 동일하다.
추가적으로, 본 개시는 종래 기술의 방법을 활용하여 조합으로 부호화된 델타값의 밸류 중복성을 활용하도록 구성된 시스템, 방법, 및 장치를 고안하는 문제를 해결한다.
부동 소수점 값들에 적용되는 손실 압축 방식들은 절단(truncation)을 통해 최소 유효 비트를 무시함으로써 높은 압축 정도(또는 압축 비율)을 달성하는 것을 목표로 한다. 예를 들면, 가수(mantissa)의 n개의 최소 유효 비트를 무시할 수 있다. 절단은 가수의 나머지 비트의 정보 엔트로피가 실질적으로 감소하는 효과가 있고, 델타 압축 또는 임의의 모든 기타 기존의 압축 방법을 활용하여 부동 소수점 값들의 크기를 효과적으로 줄이는 것이 가능하게 한다. 그러나 절단은 오차율이 높아지는 결과로 이어질 수 있다. 본 발명은 가수의 무시된 n개의 최소 유효 비트를 부동 소수점 수로 나타내는 방법을 선택하여 부동 소수점 값들에 대한 압축 비율을 높게 유지하고 실질적으로 오차율을 낮추도록 구성된 시스템, 방법, 및 장치를 고안하는 문제를 해결한다.
본 발명의 제1 양상은 복수의 데이터 블록을 확보하는 단계를 포함하고, 여기서 각 데이터 블록은 복수의 데이터 값을 포함하는 것을 특징으로 하는 데이터 압축 방법이다. 본 방법은, 복수의 데이터 블록의 데이터 값들 중에서 상기 복수의 데이터 블록에 공통인 글로벌 기준값 세트를 일단 판단하여, 상기 확보된 복수의 데이터 블록의 베이스-델타 인코딩을 수행하는 단계를 포함하고, 여기서 델타값은 데이터 값과 기준값 사이의 차이를 의미한다. 글로벌 기준값 세트는 글로벌 기준값 세트의 글로벌 기준값들에 대한 복수의 데이터 블록의 데이터 값들에 대한 델타값을 최소화하도록 선택된다. 본 방법은 이어서 개별 데이터 값에 수치적으로 가장 가까우므로 결과적으로 최소 델타값이 되는 글로벌 기준값을 각 개별 데이터 값에 대해 글로벌 기준값 세트에서 선택함으로써 복수의 데이터 블록의 개별 데이터 값을 부호화하는 단계 및 선택된 글로벌 기준값 및 그 결과의 델타값을 나타내도록 상기 부호화된 개별 데이터 값에 대해 메타테이터를 생성하는 단계를 포함한다.
본 발명의 제2 양상은 복수의 데이터 값을 각각 포함하는 확보된 복수의 데이터 블록의 베이스-델타 인코딩을 수행하기 위한 데이터 압축 장치이고, 여기서 델타값은 데이터 값과 기준값 사이의 차이를 의미한다. 데이터 압축 장치는 복수의 데이터 블록의 데이터 값들 중에서 상기 복수의 데이터 블록에 공통인 글로벌 기준값 세트를 판단하도록 구성된 애널라이저 유닛을 포함한다. 글로벌 기준값 세트는 글로벌 기준값 세트의 글로벌 기준값들에 대한 복수의 데이터 블록의 데이터 값들에 대한 델타값을 최소화하도록 선택된다. 데이터 압축 장치는 개별 데이터 값에 수치적으로 가장 가까우므로 결과적으로 최소 델타값이 되는 글로벌 기준값을 각 개별 데이터 값에 대해 글로벌 기준값 세트에서 선택함으로써 복수의 데이터 블록의 개별 데이터 값을 부호화하고 선택된 글로벌 기준값 및 그 결과의 델타값을 나타내도록 상기 부호화된 개별 데이터 값에 대해 메타테이터를 생성하기 위한 인코더 유닛을 더 포함한다.
본 발명의 제3 양상은 본 발명의 제1 양상에 따른 데이터 압축 방법에 의해 생성된 바와 같은 메타데이터를 확보하는 단계 및 복수의 데이터 값을 각각 포함하는 복수의 데이터 블록을 확보된 메타데이터에 의해 표현되는 글로벌 기준값 및 델타값으로부터 재구성하는 단계를 포함하는 데이터 압축해제 방법이다.
본 발명의 제4 양상은 디코더 유닛을 포함하는 데이터 압축해제 장치이고, 여기서 디코더 유닛은 본 발명의 제2 양상에 따른 데이터 압축 장치에 의해 생성된 바와 같은 메타데이터를 확보하고 복수의 데이터 값을 각각 포함하는 복수의 데이터 블록을 확보된 메타데이터에 의해 표현되는 글로벌 기준값 및 델타값으로부터 재구성하도록 구성된다.
본 발명의 제5 양상은 하나 이상의 메모리, 본 발명의 제2 양상에 따른 데이터 압축 장치, 및 본 발명의 제4 양상에 따른 데이터 압축해제 장치를 포함하는 시스템이다.
본 발명의 제6 양상은 프로세싱 장치에 의해 로딩되고 실행되는 경우에 본 발명의 제1 양상에 따른 방법의 수행을 유발하는 코드 지시어를 포함하는 컴퓨터 프로그램 제품이다. 대안적으로 또는 추가적으로, 본 발명의 제6 양상은 코드 지시어가 저장된 컴퓨터 프로그램을 포함하는 컴퓨터 판독가능 저장매체일 수 있고, 여기서 코드 지시어는 프로세싱 장치에 의해 로딩되고 실행되는 경우에 본 발명의 제1 양상에 따른 방법의 수행을 유발한다.
본 발명의 제7 양상은 프로세싱 장치에 의해 로딩되고 실행되는 경우에 본 발명의 제3 양상에 따른 방법의 수행을 유발하는 코드 지시어를 포함하는 컴퓨터 프로그램 제품이다. 대안적으로 또는 추가적으로, 본 발명의 제6 양상은 코드 지시어가 저장된 컴퓨터 프로그램을 포함하는 컴퓨터 판독가능 저장매체일 수 있고, 여기서 코드 지시어는 프로세싱 장치에 의해 로딩되고 실행되는 경우에 본 발명의 제3 양상에 따른 방법의 수행을 유발한다.
본 발명의 추가적인 양상은 컴퓨터 메모리 압축 방법이다. 본 방법은 기준값 세트의 선택에 대하여 컴퓨터 메모리 내용을 분석하는 단계를 포함한다. 본 발명은 또한, 데이트 블록 내의 각 데이터 값에 대한 델타값을 최소화하는 기준값을 선택하는 기준값 세트에 대하여 델타값에 의해 모든 데이터 블록의 값들을 표현함으로써 상기 컴퓨터 메모리 내용을 부호화하는 단계를 포함한다. 본 방법은 허프만 인코딩(Huffman encoding) 또는 산술 인코딩(arithmetic encoding)과 같이 종래 기술에서 알려진 임의의 모든 엔트로피 기반 또는 중복제거(deduplication) 기반 압축 방법을 이용하여 델타값들 중에서 밸류 중복성을 활용하는 방법을 추가적으로 포함한다. 또한, 설정된 기준값 세트를 이용하여 델타 인코딩으로 압축되고 델타값들이 엔트로피 기반 또는 중복제거 기반 압축 방법을 이용하여 부호화되는 데이터 값들을 압축해제 하는 방법이 제시된다.
본 발명의 다른 양상은 컴퓨터 메모리 압축 장치이다. 본 장치는 각 데이터 블록에서 임의의 기준값을 사용하는 것에 비하여 복수의 데이터 블록에서 델타값의 사이즈를 감소시키기 위해 기준값 세트를 선택하도록 구성된 애널라이저 유닛을 포함한다. 본 장치는 또한 복수의 데이터 블록에 공통인 선택된 기준값 세트를 이용하여 각 값에 대한 델타값을 설정함으로써 상기 컴퓨터 메모리 내용을 부호화하도록 구성된 인코더 유닛을 포함한다. 인코더 유닛은 데이터 값을 압축해제 하도록 구성된 부호화된 컴퓨터 메모리 내용 및 장치의 데이터 값들을 나타내는 메타데이터를 제공하도록 더 구성된다. 인코더 유닛은 또한, 허프만 코딩 또는 산술 코딩 또는 중복제거 기반 방법과 같은 종래 기술에서 알려지고, 설정된 기준값 세트를 이용하여 델타 인코딩으로 압축되고 델타값들이 엔트로피 기반 또는 중복제거 기반 압축 방법을 이용하여 부호화되는 데이터 값들을 압축해제 하도록 구성된 임의의 모든 엔트로피 기반 압축 방법 및 장치를 이용하여 델타값들을 더욱 촘촘하게 부호화하도록 구성된다.
개시된 실시예들의 기타 양상, 목적, 특징, 이점은 하기의 상세한 설명, 첨부된 청구 범위, 및 도면으로부터 명확해질 것이다.
일반적으로, 청구 범위에 사용된 모든 용어는, 본 명세서에서 명시적으로 다르게 정의하지 않는 한, 본 기술 분야의 일반적인 의미에 따라 해석되어야 한다. 구성요소, 장치, 성분, 수단, 단계 등에 관한 모든 내용은, 본 명세서에서 명시적으로 다르게 설명되어 있진 않는 한, 적어도 하나의 이러한 구성요소, 장치, 성분, 수단, 단계 등을 지칭하는 것으로 개방적으로 해석되어야 한다. 여기에 개시된 모든 방법의 단계들은, 본 명세서에서 명시적으로 다르게 설명되어 있진 않는 한, 반드시 개시된 순서로 수행되지 않아도 된다.
도 1은 하나 또는 복수의 처리 유닛, 3레벨의 예시적 캐시 계층, 하나 또는 복수의 칩 외부 메모리(off-chip memory)에 연결된 하나 또는 복수의 메모리 컨트롤러를 구비한 마이크로프로세서 칩을 포함하는 예시적인 컴퓨터 시스템을 도시한 것이다.
도 2는 데이터 및 지시어를 메모리에 압축하도록 구성된 도 1에 도시된 바와 같은 예시적인 컴퓨터 시스템을 도시한 것이다.
도 3은 데이터 블록 세트와 그 안의 값들을 포함하는 예시적인 메모리 페이지를 도시한 것이다.
도 4는 복수의 데이터 블록 내의 값들 중에서 글로벌 값을 설정하도록 구성된 애널라이저를 도시한 것이다.
도 5는 복수의 데이터 블록 내의 값들 중에서 글로벌 값을 설정하는 방법을 도시한 것이다.
도 6은 글로벌 기준값 세트를 이용하여 데이터 블록을 압축하는 방법을 도시한 것이다.
도 7은 글로벌 기준값 세트를 이용하여 데이터 블록을 압축하도록 구성된 인코더를 도시한 것이다.
도 8은 글로벌 기준값으로 값을 부호화하기 위한 메타데이터 형식을 도시한 것이다.
도 9는 글로벌 기준값 세트를 이용하여 데이터 블록을 압축해제 하는 방법을 도시한 것이다.
도 10은 글로벌 기준값 세트를 이용하여 데이터 블록을 압축해제 하도록 구성된 장치를 도시한 것이다.
도 11은 엔트로피 기반 인코딩을 이용하여 델타값을 촘촘하게 부호화하는 방법을 도시한 것이다.
도 12는 엔트로피 기반 인코딩을 이용하여 델타값을 촘촘하게 부호화하도록 구성된 장치를 도시한 것이다.
도 13은 글로벌 기준값을 이용한 엔트로피 기반 부호화된 델타값의 메타데이터 형식을 도시한 것이다.
도 14는 엔트로피 기반 인코딩을 활용하여 델타값을 복호화하는 방법을 도시한 것이다.
도 15는 엔트로피 기반 인코딩을 활용하여 델타값을 복호화하도록 구성된 장치를 도시한 것이다.
도 16은 데이터 값에서 앞에 나오는 0이나 1을 런 길이(run-length) 부호화하기 위한 메타데이터 형식을 도시한 것이다.
도 17은 비트 플레인 전환(bit-plane transformation)을 적용하여 복수의 데이터 값에서 앞에 나오는 0이나 1을 런 길이 부호화하기 위한 절차를 도시한 것이다.
도 18은 정확도를 향상시키기 위해 복수의 최소 유효 가수 비트들을 가장 공통적인 심볼로 교체하는 절차를 도시한 것이다.
도 19는 델타값들의 차이의 최대 유효 비트의 색인을 표현하도록 구성된 장치를 도시한 것이다.
도 20은 최소 델타값의 기준값을 활성화하고 부호화하도록 구성된 장치를 도시한 것이다.
도 21은 글로벌 기준값을 이용한 엔트로피 기반 인코딩된 델타값의 메타데이터 형식을 도시한 것으로, 엔트로피 기반 인코딩 또는 중복제거가 별개로 기준 포인터 인덱스(base-pointer-index) 값에 적용되어 도 13에 도시된 메타데이터 형식이 정제된 것이다.
도 22는 본 발명에 따른 데이터 압축 방법을 도시한 것이다.
도 23은 본 발명에 따른 데이터 압축 장치를 도시한 것이다.
도 24는 본 발명에 따른 시스템을 도시한 것이다.
도 25는 상한이 델타값 상에 있는 글로벌 기준값 세트를 이용하여 데이터 블록을 압축하는 방법을 도시한 것이다.
도 26은 상한이 델타값 상에 있는 글로벌 기준값 세트를 이용하여 데이터 블록을 부호화하도록 구성된 장치를 도시한 것이다.
도 27은 모든 데이터 워드가 동일한 경우에 이러한 워드를 기준으로 활용하여 데이터 블록을 압축하는 방법을 도시한 것이다.
도 28은 모든 데이터 워드가 동일한 경우를 포함하여 서로 상이한 부호화를 포함하는 부호화를 표현하는 메타데이터 형식을 도시한 것이다.
도 29는 모든 데이터 워드가 동일한 경우에 이러한 워드를 기준으로 활용하여 데이터 블록을 부호화 하도록 구성된 장치를 도시한 것이다.
도 30은 모든 데이터 워드가 동일한 경우에 데이터 블록을 압축해제 하도록 구성된 장치를 도시한 것이다.
도 31은 기준값의 엔트로피 기반 인코딩을 활용하여 데이터 블록을 압축하는 방법을 도시한 것이다.
도 2는 데이터 및 지시어를 메모리에 압축하도록 구성된 도 1에 도시된 바와 같은 예시적인 컴퓨터 시스템을 도시한 것이다.
도 3은 데이터 블록 세트와 그 안의 값들을 포함하는 예시적인 메모리 페이지를 도시한 것이다.
도 4는 복수의 데이터 블록 내의 값들 중에서 글로벌 값을 설정하도록 구성된 애널라이저를 도시한 것이다.
도 5는 복수의 데이터 블록 내의 값들 중에서 글로벌 값을 설정하는 방법을 도시한 것이다.
도 6은 글로벌 기준값 세트를 이용하여 데이터 블록을 압축하는 방법을 도시한 것이다.
도 7은 글로벌 기준값 세트를 이용하여 데이터 블록을 압축하도록 구성된 인코더를 도시한 것이다.
도 8은 글로벌 기준값으로 값을 부호화하기 위한 메타데이터 형식을 도시한 것이다.
도 9는 글로벌 기준값 세트를 이용하여 데이터 블록을 압축해제 하는 방법을 도시한 것이다.
도 10은 글로벌 기준값 세트를 이용하여 데이터 블록을 압축해제 하도록 구성된 장치를 도시한 것이다.
도 11은 엔트로피 기반 인코딩을 이용하여 델타값을 촘촘하게 부호화하는 방법을 도시한 것이다.
도 12는 엔트로피 기반 인코딩을 이용하여 델타값을 촘촘하게 부호화하도록 구성된 장치를 도시한 것이다.
도 13은 글로벌 기준값을 이용한 엔트로피 기반 부호화된 델타값의 메타데이터 형식을 도시한 것이다.
도 14는 엔트로피 기반 인코딩을 활용하여 델타값을 복호화하는 방법을 도시한 것이다.
도 15는 엔트로피 기반 인코딩을 활용하여 델타값을 복호화하도록 구성된 장치를 도시한 것이다.
도 16은 데이터 값에서 앞에 나오는 0이나 1을 런 길이(run-length) 부호화하기 위한 메타데이터 형식을 도시한 것이다.
도 17은 비트 플레인 전환(bit-plane transformation)을 적용하여 복수의 데이터 값에서 앞에 나오는 0이나 1을 런 길이 부호화하기 위한 절차를 도시한 것이다.
도 18은 정확도를 향상시키기 위해 복수의 최소 유효 가수 비트들을 가장 공통적인 심볼로 교체하는 절차를 도시한 것이다.
도 19는 델타값들의 차이의 최대 유효 비트의 색인을 표현하도록 구성된 장치를 도시한 것이다.
도 20은 최소 델타값의 기준값을 활성화하고 부호화하도록 구성된 장치를 도시한 것이다.
도 21은 글로벌 기준값을 이용한 엔트로피 기반 인코딩된 델타값의 메타데이터 형식을 도시한 것으로, 엔트로피 기반 인코딩 또는 중복제거가 별개로 기준 포인터 인덱스(base-pointer-index) 값에 적용되어 도 13에 도시된 메타데이터 형식이 정제된 것이다.
도 22는 본 발명에 따른 데이터 압축 방법을 도시한 것이다.
도 23은 본 발명에 따른 데이터 압축 장치를 도시한 것이다.
도 24는 본 발명에 따른 시스템을 도시한 것이다.
도 25는 상한이 델타값 상에 있는 글로벌 기준값 세트를 이용하여 데이터 블록을 압축하는 방법을 도시한 것이다.
도 26은 상한이 델타값 상에 있는 글로벌 기준값 세트를 이용하여 데이터 블록을 부호화하도록 구성된 장치를 도시한 것이다.
도 27은 모든 데이터 워드가 동일한 경우에 이러한 워드를 기준으로 활용하여 데이터 블록을 압축하는 방법을 도시한 것이다.
도 28은 모든 데이터 워드가 동일한 경우를 포함하여 서로 상이한 부호화를 포함하는 부호화를 표현하는 메타데이터 형식을 도시한 것이다.
도 29는 모든 데이터 워드가 동일한 경우에 이러한 워드를 기준으로 활용하여 데이터 블록을 부호화 하도록 구성된 장치를 도시한 것이다.
도 30은 모든 데이터 워드가 동일한 경우에 데이터 블록을 압축해제 하도록 구성된 장치를 도시한 것이다.
도 31은 기준값의 엔트로피 기반 인코딩을 활용하여 데이터 블록을 압축하는 방법을 도시한 것이다.
본 명세서는 글로벌 기준값을 식별하고 엔트로피 기반 인코딩을 활용하여 델타값을 촘촘하게 저장함으로써 컴퓨터 메모리 내의 값들의 촘촘한 부호화를 위해 밸류 유사성을 활용하는 일군의 압축 방식으로 컴퓨터 메모리 내의 데이터를 압축하는 시스템, 방법, 장치, 및 컴퓨터 프로그램 제품을 개시한다.
컴퓨터 시스템(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)을 포함한다.
하기에 더 상세히 설명하는 바와 같이, 애널라이저 유닛(214)은 예컨대 복수의 데이터 블록을 포함하는 페이지와 같은 컴퓨터 메모리 내 데이터의 메모리 객체 내의 복수의 데이터 블록의 데이터 값의 촘촘한 부호화를 위한 글로벌 기준값 설정에 대한 컴퓨터 메모리 콘텐츠를 분석하도록 구성된다. 이와 관련하여, 데이터 값은 전형적으로 메모리 객체보다 입도가 더 작게 되고, 메모리 객체는 전형적으로 컴퓨터 메모리 콘텐츠보다 입도가 더 작게 된다. 메모리 객체는 전형적으로 복수의 데이터 블록을 포함할 수 있고, 데이터 블록은 유형 정수(type integer) 또는 부동 소수점 값 또는 임의의 모든 기타 유형인 메모리 워드(데이터 워드라고도 함)와 같은 복수의 데이터 값을 전형적으로 포함할 수 있다.
인코더 유닛(212)은 글로벌 기준값 세트에 대한 델타값을 생성하여 메모리 객체의 모든 데이터 블록을 부호화하고 선택적으로 또한 엔트로피 기반 압축 방법을 활용하여 델타값을 부호화하도록 구성된다. 인코더 유닛(212)은 부호화된 컴퓨터 메모리 콘텐츠의 메모리 객체의 데이터 블록을 나타내는 메타데이터를 제공하도록 더 구성된다. 메타데이터는 모든 데이터 값 각각에 사용된 글로벌 기준값에 대하여 델타값이 어떻게 부호화되었는지를 반영한다. 이러한 메타데이터의 예들이 도 6의 참조번호 860과 870에 도시되어 있다. 로케이터 유닛(211)은 메타데이터를 활용하여 부호화된 컴퓨터 메모리 콘텐츠 내의 메모리 객체의 위치를 찾아내도록 구성된다.
컴퓨터 메모리 압축 장치(205)는 일측에서 메모리 컨트롤러에 연결되고 타측에서 최종 레벨 캐시(C3)에 연결된다. 주소 변환 유닛(211)의 목적은 압축된 메모리 내에서 메모리 블록의 위치를 찾아내기 위하여 종래의 물리적 주소(PA)를 압축 주소(CA)로 변환하는 것이다. 종래의 메모리 페이지(예: 4KB)는 압축 메모리에서 종래의 메모리 페이지의 사이즈보다 작은 임의의 사이즈로 압축될 수 있기 때문에 이러한 주소 변환이 필요하다는 것을 당업자라면 이해할 수 있다. 인코더(컴프레서) 유닛(212)의 목적은 수정되고 최종 레벨 캐시에서 내보내진 메모리 블록을 압축하는 것이다. 메모리 시스템의 성능에 끼치는 영향이 무시할 정도가 되게 하려면, 압축은 빨리 이루어져야 하고 전용 컴프레서 유닛에 의해 흔히 가속된다. 유사하게, 메모리 블록이 프로세서에 의해 요청되지만 예를 들어 예시된 실시예의 C1, C2, C3와 같은 캐시 레벨의 어디에도 없는 경우에, 메모리 블록은 메모리로부터 요청되어야 한다. 주소 변환 유닛(211)은 메모리 블록의 위치를 찾아내게 되지만 캐시 계층에, 예를 들어 C1에, 설치되기 이전에 압축해제 되어야 한다. 디컴프레서 유닛(213)의 목적은 메모리 시스템의 성능에 끼치는 영향이 무시할 정도가 되게 하도록 이러한 프로세스를 가속하는 것이다.
글로벌 기준값 선택을 위한 메모리 콘텐츠 분석
도 3은 메모리의 일부 및 그 안에 포함된 값들의 예시적인 스냅샷을 도시한 것이다. 참조번호 310은 6개의 예시적인 데이터 블록인 BL1, BL2,...BL6(311, 312, ...316) 및 그 안에 포함된 값들을 도시하고 있다. 예를 들어, 데이터 블록 311(BL1)은 100, 102, 205, 208이라는 값을 포함하고, 데이터 블록 313(BL3)은 205, 208, 100, 102라는 값을 포함한다. 참조번호 320은 참조번호 310의 예시적인 데이터 블록에 포함된 각 값의 빈도의 히스토그램을 도시하고 있고, 참조번호 321에는 값들이 도시되어 있고, 참조번호 322에는 이러한 값들의 발생 횟수, 즉 빈도가 도시되어 있다. 예컨대, 200이라는 값은 BL2(312), BL4(314), BL5(315)에 발생하여 3번 발생하는 반면에, 400이라는 값은 BL6(316)에 한 번만 발생한다.
도 4는 각 값 또는 메모리의 일부, 예를 들어 페이지의 값들의 서브세트(subset)의 빈도의 히스토그램을 설정하도록 구성된 장치(420)를 도시한 것이다. 이는 도 2의 애널라이저(214)의 일부일 수 있다. 장치(400)는 값 태그 어레이(421) 및 값 빈도 어레이(425)를 포함한다. 내부에 있는 각 값의 발생 빈도에 대해 분석될 메모리 부분은 스캐닝 될 수 있다. 이는 예컨대 해당 메모리 부분 내의 위치들 모두 또는 서브세트로부터 읽기를 하는 프로세서 또는 메모리 부분 내의 모든 값들 또는 모든 값들의 서브세트를 스캐닝하도록 구성된 장치를 구비함으로써 수행될 수 있다. 분석되는 메모리 부분 내의 각 값은 '메모리 값'으로 표시된 명부(410)에 배치될 수 있다. 명부는 본 실시예에서 캐시로서 정리된 장치(420) 안으로 색인하는 데에 사용될 수 있다.
예시적인 캐시와 같은 구조는 N개의 엔트리를 포함하고, 각 엔트리는 참조번호 423(VT 2)과 같은 값 태그 어레이 엔트리 및 참조번호 427(VF 2)과 같은 값 빈도 어레이 엔트리를 포함한다. 캐시가 직접 매핑 되도록, 즉, 메모리 값 명부(410)에 포함된 메모리 값과 장치(240) 내의 엔트리 사이에 1 대 1의 상응이 있도록 구성될 수 있다는 것은 당업자에게 당연하다 할 것이다.
대안적으로, 캐시는 세트 결합(set-associative)되도록, 즉, 메모리 값 명부(410)에 포함된 메모리 값과 장치(240) 내의 엔트리 사이에 1 대 다수의 상응이 있도록 구성될 수 있다. 무관하게, 명부(410)에 포함된 메모리 값은 장치(420)를 색인할 수 있다. 명부(410)의 메모리 값의 태그 비트가 하나와 일치하거나(직접 매핑 구성의 경우) 참조번호 420의 임의의 엔트리와 일치(세트 결합 구성의 경우)하는 경우, 참조번호 420에 일치가 있다. 일치가 있는 경우, 해당 값 빈도 어레이는 증가되게 된다. 예를 들면, 참조번호 423의 엔트리(VT 2)가 명부(410)의 메모리 값과 일치한다고 가정하면, 참조번호 427(VF 2)이 선택된다. VF 2가 15를 포함하는 경우, 16으로 증가되게 된다. 명부(410)의 메모리 값이 장치(420)에 포함되어 있지 않은 경우, 엔트리가 생성되어야 한다. 직접 매핑 구성의 경우, 선택된 엔트리에 있는 값은 교체된다. 세트 결합 구성의 경우, 교체하기 위해 선택할 수 있는 복수의 엔트리가 있을 수 있다. LRU(Least-Recently-Used) 또는 FIFO(First-In-First-Out) 등과 같은 여러 교체 정책 중에서 선택할 수 있다는 것이 당업자에게 당연하다 하겠지만, 본 장치 고유의 개시된 정책은 최소 빈도 값(Least-Frequent-Value)이라고 하는 것으로, 즉, 값 빈도 어레이(425)에서 카운트가 최소인 엔트리가 교체용으로 선택된다.
메모리 부분의 모든 의도된 값들이 스캐닝 된 경우, 장치(420)는 도 3의 값 빈도 히스토그램(320)의 평가치를 포함한다. 일 실시예에서, 장치(420)는 개별 엔트리들, 예컨대 엔트리 426(VF 1)과 관계된 엔트리 422(VT 1)가 메모리에 접근하는 컴퓨터 명령, 즉 로드 명령 및 저장 명령에 의해 판독될 수 있도록 구성된다. 이로써 장치(420)로부터 메모리(430)로 콘텐츠를 이동하는 가능성이 열린다. 도 2에서 알 수 있는 바와 같이, 장치(420)는 메모리 컨트롤러 141(MCTRL1), 142(MCTRL2), 및 143(MCTRL3)을 통해 메모리 장치 151(M1), 152(M2), 및 153(M3) 중의 임의의 메모리 장치로 연결되는 애널라이저(214)의 일부일 수 있다.
이하, 장치(420)에 의해 설정된 값 빈도 히스토그램을 활용하여 여러 기준값을 선정하여 이미 분석된 페이지 등과 같은 메모리 객체라고 불리는 메모리 부분에 포함된 모든 값들의 델타값을 최소화하는 방법에 대해 설명하기로 한다.
도 5는 복수의 데이터 블록의 데이터 값들 중에서 글로벌 기준값을 설정하는 방법을 도시한 것이다. 선택될 기준값의 수는 B인 것으로 가정한다. 여기서 택한 방법은 우선 메모리 객체 내에 발생하는 값들의 범위를 N개의 고정 크기 저장소(fixed-sized bins)로 나누는 것이다. 예를 들면, 값들의 범위가 1, 2,...100이라고 가정하고, 4개의 저장소가 선택되는 경우, 범위는 1, 2,...25; 26, 27...50; 51, 52,...75; 및 76, 77,...100의 4개의 저장소로 나뉘어진다.
방법의 제1 단계(520)는 값들을 최저값부터 최고값까지 빈도와 함께 분류하는 것이다. 제2 단계(530)는 고려할 저장소의 수 N과 글로벌 기준값 B를 설정하는 것이다. 기준값의 수를 적당히 적은 수로 유지하기 위해, B는 N 이하이다. 예를 들면, N이 4인 것으로 선택될 수 있고, B는 저장소마다 최대 1개의 글로벌 기준값을 산출하는 4개인 것으로 선택될 수 있다. 이러한 예에서, 최대 N인 MaxN이 4이고 최대 B가 단계 530에서 N인 경우에, N과 B의 모든 가능한 조합 (N,B)가 고려되어야 한다. 즉, (N,B) = (1,1); (2,1); (2,2); (3,1); (3,2); (3,3); (4,1); (4,2); (4,3); (4,4). 제2 단계(530)는 이러한 모든 조합이 고려될 수 있도록 보장한다.
제3 단계(540)에서, 복수의 조합 (N,B)의 하나를 고려하고 각 저장소의 글로벌 기준값을 설정한다. 당업자는 K-평균 군집화(k-means clustering)와 같은 종래 기술의 공지의 군집화 방법을 선택할 것이다. 그러나 K-평균은 클러스터 내에서 모든 값들까지의 거리를 최소화하는 글로벌 값을 선택한다. 이는 반드시 압축 비율을 최대화하지 않는다. 이를 구현하기 위해, 1, 1, 및 7의 3개의 값이 있는 클러스터를 고려하면, K-평균은 평균인 (1+1+7)/3 = 3을 기준값을 선택할 것이다. 기준값과 첫 2개의 값들 사이의 거리는 2이고, 이는 이진법에서 부호화하려면 2비트가 필요한 반면에, 기준값과 마지막 값과의 거리는 4이고, 이는 3비트가 필요하다. 따라서, 총 2+2+3=7개의 비트가 필요하다. 서로 동일한 첫 2개의 값들이 기준값으로 선택된다면, 이 값들까지의 거리는 0이 되고, 마지막 값까지의 거리는 6이 되므로, 3비트만이 필요하다. 값들 중의 하나를 기준값으로 선정함으로써, 값들의 평균을 기준값으로 선택하는 것보다 압축 비율이 높아진다.
이에 따라, 방법의 제3 단계(540)는 값의 범위를 N개의 저장소로 우선 나눈다. B<=N인 B개의 글로벌 기준값으로, 최고 누적값 빈도가 있는 B개 저장소 각각에 기준값이 배정된다. 상기 B개 저장소 각각 내에, 해당 저장소의 최고 빈도의 값이 기준값으로 배정된다. 제4 단계(550)는 이하 설명할 도 6의 방법에 따라 델타값을 설정하기 위해 가장 가까운 기준값을 사용함으로써 메모리 객체 내에 모든 데이터 값들을 포함한다. 압축 비율, 즉, 압축되지 않은 메모리 객체의 사이즈 대비 압축된 메모리 객체의 사이즈의 비율이 설정되고 기록된다.
제5 단계(560)는 고려할 저장소의 수 N과 글로벌 기준값의 수 B의 조합이 더 있는지 여부를 판단한다. 이 조합이 더 있다고 판단되는 경우, 프로세스의 제2 단계(530)로 돌아간다. 이 조합이 더 있지 않다고 판단되는 경우, 제6 단계(570)에서 최고 압축 비율을 제공할 N개의 저장소와 B개의 글로벌 기준값의 조합이 선택되고, 프로세스가 단계 580에서 종료된다.
[글로벌 기준값을 활용한 메모리 콘텐츠의 압축 및 압축해제]
이하, 설정된 글로벌 기준값을 활용하여, 예컨대 도 5를 참조하여 설명한 방법을 활용하여 데이터 블록을 압축하는 방법에 대해 설명하기로 한다. 프로세스는 단계 610으로 시작한다. 이를 위해, 도 6에 도시된 방법은 제1단계(620)에서 페이지와 같은 메모리 객체 내 또는 데이터 블록 내의 복수의 데이터 요소를 고려하고, 제1 값을 고려함으로써 이러한 복수의 데이터 요소가 나타내는 값들을 고려한다.
글로벌 기준값은 '글로벌 기준값 표'로 불리는 표에 저장되는 것으로 추정된다. 이 표의 각 엔트리는 인덱스와 연관된다. 예를 들어, 이 표에 N개의 엔트리가 있는 경우, 인덱스는 log2N 비트에 의해 표현될 수 있다. 방법의 제2 단계(630)에서, 선택된 값이 글로벌 기준값 표의 모든 글로벌 기준값들과 비교되고 해당 데이터 값과 수치적으로 가장 가까운, 즉 기준값과 해당 데이터 값과의 '델타값'으로 표기되는 차이가 최소인 기준값을 선택한다.
상기 데이터 값은 메타데이터에 의해 도시된 바와 같은 기준값 인덱스 및 델타값에 의해 부호화되어 도 8에 개시된 방법으로 데이터 값들을 부호화하게 된다. 2가지 메타데이터 형식(860, 870)이 있는데, 하나는 데이터 값이 압축된 경우에 해당하는 형식(860)이고, 다른 하나는 데이터 값이 압축되지 않은 경우에 해당하는 형식(870)이다. 참조번호 860과 같은 압축된 블록을 고려하면, 제1 필드(810)는 데이터 값이 압축된 것임을 의미하는 단일 비트 C이다. 참조번호 820의 필드는 글로벌 기준값 표에서 글로벌 기준값을 선택하는 데 사용될 기준 포인터 인덱스를 포함한다. 제3 필드(825)(부호)는 다음 필드가 비음수(non-negative)인지 아닌지 여부를 포함하는 단일 비트이다. 끝으로, 델타값을 나타내는 참조번호 830의 필드는 델타값을 포함한다. 명시적인 부호 비트로 인해, 델타값이 비음수인지 음수인지 여부에 따라, 델타값을 기준값으로부터의 거리로 해석하는 것이 가능해진다.
데이터 값이 압축되지 않은 경우, 참조번호 870의 메타데이터 형식이 사용된다. 모든 데이터가 압축될 수 있지만, 델타값이 사전 설정 임계값보다 작은 경우에만 데이터를 압축하는 실시예들도 고려된다. 그렇지 않은 경우, C(840)는 비워지고, 제2 필드(850)는 압축되지 않은 데이터 값을 포함하게 된다. 또는, C(840)가 설정된다.
도 6을 다시 참조하면, 제4 단계(650)에서, 메모리 객체 또는 데이터 블록에서 고려될 데이터 값이 더 있는 경우, 다음 값이 고려되게 되고, 제2 단계(630)가 선택되게 된다. 고려될 데이터 값이 더 없는 경우, 방법은 단계 660에서 종료된다.
도 6에 도시된 방법의 실시예에서, 데이터 값은 가장 가까운 기준값을 고려하여 델타값에 의해 항상 부호화되게 된다. 그러나 너무 큰 델타값을 허용하면 일부 데이터 값들이 전혀 압축되지 않는 경우보다 압축 비율이 낮아지는 결과로 이어질 수 있다. 대안적인 실시예에서, 상한 델타값(UB)로 표시되는 델타값의 한계를 설정하고, 해당 델타값이 이러한 상한 델타값 이하인 경우에만 압축할 수 있다. 압축되지 않는 값들은 상한 델타값보다 큰 델타값들이기 때문에 아웃라이어(outlier) 값이라고 지칭된다.
도 25는 각 기준값과 연관된 최대 델타값(MD)이 있는 경우에 델타값을 선택하기 위한 방법을 도시한 것이다. 상한 델타값(UB)은 최대 델타값(MD) 이하의 임계값이다. 바람직하게, 최대 델타값(MD)은 n 비트를 가진 최대 이진수에의 정의되고, 여기서 n = 최소 압축값 크기 - log2(B)이다. 최소 압축값 크기 파라미터는 특정 목표 압축 비율의 결과로 얻어진 부호화된 데이터 값의 최소 크기(비트로 표현)이다. B는 글로벌 기준값 세트 내에 있는 기준값의 개수이다. 예를 들어, 목표 압축 비율이 2이고 32 비트 데이터 값들이 있는 경우, 최소 압축값 크기는 16 비트가 되게 된다. 예컨대, B가 128인 경우, 16 - log2128 = 9 비트를 사용하게 되어 MD = 29 -1=511을 산출하게 된다. 목표 압축 비율이 1.5이고 32 비트 데이터 값들이 있는 경우, 최소 압축값 크기는 21 비트가 되게 된다. 목표 압축 비율이 2이고 데이터 값들이 64 비트 값들인 경우, 최소 압축값 크기는 32 비트가 되게 된다. 이러한 예는 무한하게 있을 수 있음을 당업자라면 당연히 이해할 것이고, 최대 델타값(MD)을 정의하는 다른 방법도 가능하다 할 것이다.
도 25에 도시된 방법(2500)은 단계 2510에서 시작하고, 기준값 세트가 도 6에 도시된 방법 등에 의해 기준값 세트의 각 기준값에 대해 설정된 것으로 추정한다(2520). 해당 기준값과 연관된 모든 데이터 값들이 고려되어 기준값과 연관된 값들의 세트 내에서 가장 큰 델타값인 상한 델타값(UB)을 설정한다(2530). 최대 델타값인 UB가 MD보다 큰 경우, UB는 MD로 설정된다(2540). 프로세스는 기준값 각각에 대해 반복되고(2550) 모든 기준값들이 고려된 경우에 종료된다(2560).
각 기준값에 대해 UB가 설정된 후에, 델타값이 UB 이하인 경우에, 가장 가까운 기준값에 대한 델타로서 데이터 값이 부호화 된다. 그렇지 않은 경우, 데이터 값은 압축되지 않는다.
도 7을 참조하면, 도 6을 참조하여 설명한 방법에 따라 글로벌 기준값 세트를 사용하여 데이터 블록을 압축하도록 구성된 인코더(700)가 도시되어 있다. 예시를 위해, 데이터 블록(710) 안에 참조번호 711과 712로 각각 표시된 2개의 값(V0, V1)이 있는 것을 고려한다. 데이터 값들을 부호화하는 장치(700)의 이러한 예시적인 실시예는 B0, B1, B2, B3에 각각 상응하는 4개의 엔트리(722, 723, 724, 725)가 있는 글로벌 기준값 표(720)를 포함한다. 글로벌 기준값들 중에서 가까이 있는 값까지의 최소 차이가 있는 값을 선택하기 위하여, 글로벌 기준값 표(720)는 데이터 값(721)을 저장하도록 구성된다.
글로벌 기준값 표는 임의의 글로벌 기준값 엔트라와 데이터 값(721) 사이의 차이가 설정될 수 있도록 더 구성된다. 일 실시예에서, 글로벌 기준값 엔트리와 데이터 값 사이의 뺄셈을 수행함으로써 결합 방식으로 병렬로 수행될 수 있다. 기준값과 데이터 값 사이의 차이는 명부(732, 733, 734, 735)에 저장되고, 여기서 데이터 값(721)과 기준값 엔트리 722(B0) 사이의 차이는 732(Diff)에 저장되고, 데이터 값(721)과 기준값 엔트리 724(B2) 사이의 차이는 734(Diff)에 저장된다. 여기서, 도 8의 델타값 필드(830)는 비음수 또는 음수 여부와 관계없이 기준값으로부터의 거리로 해석된다.
도 19 및 도 20에 기재되어 있는 본 장치의 나머지 부분들은 복수의 차이를 활용하여 최소 차이를 설정하고 상기 차이에 상응하는 기준값 표 엔트리를 선택하도록 구성된다.
도 19를 참조하면, 차이를 저장하는 도 7의 복수의 명부(730)가 도 19의 참조번호 1910에 다시 도시되어 있다. 본 예시적인 실시예에서, 각 차이 명부(1911, 1912, 1913, 1914)는 I3, I2, I1, I0으로 표기된 4개의 비트를 포함하고, 여기서 I0은 최소 유효 비트이다. 인덱스 블록(1921, 1922, 1923, 1924)의 목적은 차이의 최대 유효 비트, 즉 논제로(non-zero)인 최대 유효 비트가 어느 비트인지 설정하는 것이다. 많은 인덱스 블록들이 차이 명부로 있다. 인덱스 블록의 진리표가 참조번호 1930에 도시되어 있다. 예컨대, 참조번호 1932의 제3 입력 벡터인 “01XX”(X는 0 또는 1의 임의의 이진수 값을 나타냄)를 보면, 비트 I2가 최대 유효(논제로) 비트이고 (U1,U0) = (1,0)을 출력하게 된다. 다른 예를 들면, 제1 벡터 “0001”에서, I0가 최대 유효(논제로) 비트이고 (U1,U0) = (0,0)을 출력하게 된다.
최대 유효 논제로 비트의 인덱스 인코딩은 이제 다른 블록인 변환(Convert; 1925, 1926, 1927, 1928)으로 입력된다. 변환의 목적은 최소 차이를 추출하는 데 사용되게 되는 비트 스트링(bit string)을 생성하는 것이고, 이에 대하여는 하기에 설명한다. 변환 블록에 대한 진리표는 참조번호 1940에 도시되어 있다. 여기서, 인덱스 블록으로부터의 최대 유효 비트(U1, U0)의 인덱스 인코딩이 입력(1941)이고, 진리표 1942(입력)와 1943(출력)에 따른 비트 스트링이 출력이다. 예를 들어, 입력 (1,0)에 대해, 출력 (X3, X2, X1, X0)은 (0, 1, 1, 1)이다.
도 20은 데이터 값들의 부호화에 필요한 추가적인 기능을 도시한 것이다. 도 19의 복수의 변환 기능 블록(1925, 1926, 1927, 1928)은 도 20에 참조번호 2011, 2012, 2013, 2014로 다시 도시되었다. 참조번호 2020은 각 변환 블록에 대해 하나의 명부를 포함하고 변환 블록으로부터의 출력을 포함하는 비트 스트링을 저장하게 된다. 예를 들면, 참조번호 2022, 2023, 2024, 2025의 명부는 "0111", "0001", "1111", "0011"의 비트 스트링을 포함한다. 참조번호 2020의 목적은 가장 작은 최대 유효 비트, 즉 최대 유효 비트로부터 “1”이 세어진 첫번째 비트를 가진 비트 스트링을 설정하는 것이다. 이는 열 방향으로 AND 논리를 적용하여 설정될 수 있다. 예를 들어, 모든 X3 비트에 AND 논리를 적용하면 “0”이 산출되게 되고, X0에 AND 논리를 적용하면 “1”이 산출되게 된다. 따라서, 명부(2021)는 열 방향으로 AND 논리 연산을 적용한 후에 최소 차이에 상응하는 비트 스트링을 포함하게 된다.
최종 단계는 명부(2021)를 활용하여 최소 차이 또는 델타를 산출하는 기준값 표 엔트리를 설정하는 것이다. 이는 참조번호 2030과 2040에서 수행된다. 참조번호 2030은 참조번호 2020에서 설정된 비트 스트링에 적용된 복수의 우선 인코더(2031, 2032, 2033, 2034, 2035)를 포함한다. 우선 인코더의 출력은 차이 또는 델타값 내의 최대 유효 비트의 비트 위치의 인덱스이다. 우선 인코더의 대안으로, 참조번호 1920의 인덱스 블록, 예컨대 참조번호 1921 블록으로부터의 출력(U1,U0)을 사용할 수 있다. 참조번호 2040에서, 모든 인덱스가 명부(2021)의 인덱스와 병렬 비교된다. 동일한 하나의 인덱스는 어느 기준값 엔트리가 최소 차이를 산출하는지 설정하게 되고, 해당 엔트리를 가져오기 위해 활성 신호로 변환될 수 있다. 이는 결정 박스(2041, 2042, 2043, 2044)에 도시되어 있다. 복수의 인덱스가 기준값까지의 거리가 동일하고 상응하는 기준값 엔트리를 활성화할 수 있다. 이 경우, 가장 낮은 또는 가장 높은 엔트리 번호를 선택하거나 임의 선택에 의존할 수 있다.
데이터 값이 임의의 기준값과 동일한 경우에 우선 디코더는 유의미한 인덱스값을 출력하지 못하게 된다는 것을 당업자들은 안다. 이에 대한 한 가지 방안은 입력 신호(I3, I2, I1, I0)에 적용된 제로 비교기(zero-comparator)를 도 19의 인덱스 블록(1921, 1922, 1923, 1924)에 적용하여 이러한 경우를 검출하는 것이다. 이러한 제로 비교기의 출력 신호는 도 20의 결정 박스(2041, 2042, 2043, 2044)의 결정에 우선순위를 주게 된다. 예를 들어, 참조번호 2041과 2042가 최소 인덱스와의 일치를 이루고 참조번호 2043이 제로 비교 일치를 보고하는 경우, 2043의 결정 박스가 이기게 된다. 결국, 복수의 엔트리가 제로 비교를 보고하는 경우, 가장 높거나 낮은 엔트리 번호를 가지거나 임의 선택의 기준값 명부는 하나의 기준값 명부를 활성화시킨다.
도 25에 도시된 대안적인 방법을 다시 참조하면, 가장 가까운 기준값에 의해 형성된 델타값이 상한값 이하인 경우에만 데이터 값이 부호화 된다. 도 26은 도 25를 참조하여 설명한 방법에 따라 글로벌 기준값 세트를 활용하여 데이터 블록을 압축하도록 구성된 인코더(2600)를 도시한 것이다. 이는 도 6에 따라 데이터 값을 압축하도록 구성된 인코더로부터 응용된 것이다. 예를 들어, 데이터 블록(2610)에 2개의 값인 V0(2611)과 V1(2612)이 포함된 경우를 고려하면, 데이터 값을 부호화하기 위한 장치(2600)의 본 예시적인 실시예는 B0, B1, B2, B3에 각각 상응하는 4개의 엔트리(2622, 2623, 2624, 2625)가 있는 글로벌 기준값 표(2620)를 포함한다. 기준값들인 B0 내지 B3(2622 내지 2655)만을 각각 저장하는 것에 반하여, 도 25에 도시된 방법에 의해 설정되는 각 기준값과 연관된 상한 델타값도 저장한다. 글로벌 기준값들 중에서 가까이 있는 값까지의 최소 차이가 있는 값, 및 연관된 상한값을 선택하기 위하여, 글로벌 기준값 표(2620)는 데이터 값(2621)을 저장하도록 구성된다.
글로벌 기준값 표는 임의의 글로벌 기준값 엔트라와 데이터 값(2621) 사이의 차이가 설정될 수 있도록 더 구성된다. 일 실시예에서, 글로벌 기준값 엔트리와 데이터 값 사이의 뺄셈을 수행함으로써 결합 방식으로 병렬로 수행될 수 있다. 기준값과 데이터 값 사이의 차이는 명부(2632, 2633, 2634, 2635)에 저장되고, 여기서 데이터 값(2621)과 기준값 엔트리 2622(B0) 사이의 차이는 2632(Diff)에 저장되고, 데이터 값(2621)과 기준값 엔트리 2624(B2) 사이의 차이는 2634(Diff)에 저장된다. 여기서, 도 8의 델타값 필드(830)는 비음수 또는 음수 여부와 관계없이 기준값으로부터의 거리로 해석된다.
도 19 및 도 20에 기재되어 있는 본 장치의 나머지 부분들은 복수의 차이를 활용하여 최소 차이를 설정하고 상기 차이에 상응하는 기준값 표 엔트리를 선택하도록 구성된다. 최종 단계로, 도 26의 장치는, 차이가 기준값과 연관된 상한값 이하인 경우에, 설정된 기준값 표 엔트리와 차이를 인코딩에 활용하게 된다. 이는 선택된 기준값에 상응하는 임의의 기준값 명부 B0 내지 B3(2622-2625) 중에서 가져와질 수 있다. 최종적으로, 참조번호 2660에서, 설정된 차이가 상기 상한값과 비교되고, 차이가 상기 상한값 이하인 경우에만 인코딩이 생성되게 된다.
도 8의 메타데이터 레이아웃(800)을 다시 참조하면, 데이터 값이 압축되지 않게 되는 경우, C 비트(840)은 비워지게 되고 데이터 값은 압축되지 않는다(850).
다른 실시예에서, 높은 스루풋(throughput)으로 값들을 부호화하는 것이 바람직하다. 이를 위해, 예시적인 파이프라인 명부들이 기능 블록들 사이에 배치되고 점선(701)으로 표현되어 이러한 파이프라인 장치의 예를 도시한다.
대안적인 실시예에서, 델타값들의 크기를 더 줄일 수 있다. 델타값을 위해 고정 양의 공간, 예컨대 16비트를 예비해두는 것이 바람직하다. 그러나 델타값들이 전형적으로 작은 경우, 사용되지 않은 비트는 “0”이 되게 된다(또는, 2의 보수 표현에서는 “1”도 8의 메타데이터 형식을 다시 참조하면, 개시된 발명은 기준 포인터 인덱스 값을 델타값과 연결(concatenate)한다. 0(또는 1)의 연속을 더욱 조밀하게 부호화하여 연결된 필드들의 크기를 더 줄일 수 있다.
일 실시예에서, 도 8의 델타값 필드(830)는 최대 유효 비트에서 논제로 비트가 처음으로 나올 때까지의 0의 수를 세어서(또는, 2의 보수 표현에서, 최대 유효 비트에서 제로 비트가 처음으로 나올 때까지의 1의 수를 세어서) 부호화할 수 있다. 이러한 0 또는 1의 연속은 런렝스(runlength) 부호화될 수 있다. 예를 들어, 도 16에 도시되어 있는 13 비트 델타값(1611)은 최대 유효 10 비트가 0인 이후에 1이 있다. 메타데이터 형식(1620)은 델타값이 런렝스 인코딩을 활용하여 코드(1621, CODE)로 부호화되어, 런렝스 인코딩이 사용됨을 보여주고, 0의 수(이진법으로 1010)(1622)에 이어 논제로 부분(1623)을 보여준다.
대안적인 실시예에서, 복수의 인근값이 많은 수의 0(또는 1)으로 시작하는 경우, 일단 복수의 값의 최대 유효 비트를 고려한 후에 제2 유효 비트 등을 고려하여 여러 개의 0을 런렝스 인코딩할 수 있다. 예를 들어, 도 17에서는 4개의 예시적인 값들(1710, 1720, 1730, 1740)이 고려된다. 제1값(1710)의 20개의 최대 유효 비트가 0인 반면에, 제2값(1720), 제3값(1730), 및 제4값(1740)은 각각 19개, 21개, 및 21개 비트의 최대 유효 비트가 0이다.
상기 4개의 예시적인 값들(1710, 1720, 1730, 1740)에 대해 최대 유효 비트에서 시작하여 복수의 값을 가로질러 열 방향으로 0의 연속을 검사하고 다음 최대 유효 비트를 검사하는 방식을 통해 19개의 최대 유효 비트가 0임을 알 수 있다. 이러한 0들을 런렝스 인코딩함으로써, 복수의 델타값을 더욱 효과적으로 압축할 수 있다. 이는 당업자들 사이에서 비트 플레인 압축(bit-plane compression)이라고 알려져 있다. 이러한 방법 및 장치를 본 개시의 방법 및 장치와 조합하는 것도 가능하다.
도 17 또한 비트 플레인 압축을 글로벌 기준값을 채용하는 개시된 델타 인코딩 방법과 조합하는 경우의 메타데이터(1750)에 대한 형식의 일 실시예를 도시하고 있다. 여기서, 4개의 값의 예시적인 블록에 대한 메타데이터가 도시되어 있다. 사이즈(1751)는 임의의 델타값의 최대 사이즈를 묘사한다. 이는 예컨대 런렝스 인코딩 등에 의해 블록 내의 모든 값들에서 0인 최대 유효 비트의 수를 헤아려서 판단될 수 있다. 각 개별값과 연관된 기준값들은 BP1(1752), BP2(1754), BP3(1756), 및 BP4(1758)에 부호화된다. 최종적으로, 각 개별값과 연관된 델타값들은 D1(1753), D2(1755), D3(1757) 및 D4(1759)에 부호화된다. 다른 메타데이터 형식, 예컨대 도 8의 예시적인 메타데이터 형식에 채용된 것과 같은 블록의 압축 여부화 상관없이 전용 비트 인코딩도 가능하다.
본 개시의 시스템, 방법, 및 장치는 본 개시와 같은 델타 압축뿐만 아니라 엔트로피 기반 압축, 중복제거 기반 압축, 또는 당업자에게 공지의 임의의 압축 방법을 포함하는 임의의 모든 압축 방법을 적용하기 전의 예비 단계로서 광범위하게 적용 가능하다.
일례로, 데이터 값들이 부동소수점 수인 경우가 있다. 부동소수점 수를 고려하는 손실 압축 방법들에서, 가수에서 N개의 최소 유효 비트를 무시하는 것이 이점이 될 수 있다는 것은 당업자들 사이에서 잘 알려져 있다. 그러면 가수의 엔트로피가 감소되어 압축 비율이 높아지기 때문이다. 종래 기술에서 이를 수행하도록 구성된 방법 및 연관 장치는 단순히 절단을 한다. 즉, N개의 최소 유효 비트를 모두 0으로(또는 0과 유사한 것으로) 간주한다. N개의 제로 비트가 대부분 0(또는 1)인 경우, 절단의 결과는 오류가 작게 된다. 그러나 N개의 최소 유효 비트의 대부분이 논제로인 경우, 절단의 결과는 심각한 오류를 나을 수 있다.
예를 들면, 도 18은 4개의 부동소수점 값(1810, 1820, 1830, 1840)의 가수를 도시하고 있다. 각 가수는 24비트를 포함한다. N이 4로 선택되는 경우, 4개의 최소 유효 비트의 절단은 0이 되게 된다. 이는 4개의 최소 유효 비트 대부분이 1인 참조번호 1810과 1830의 가수에 대해 큰 오류를 초래하게 된다.
일 실시예에서, 방법 및 장치는 최소 유효 N 비트에서 0의 수를 세도록 구성될 수 있다. 0이 대부분에 있는 경우에, N 비트는 모두 0으로 표현된다. 반면에, 논제로(non-zero)가 대부분에 있는 경우에, N 비트는 모두 0으로 표현된다. 동률인 경우, 마지막 N 비트들이 1 또는 0으로 부호화될 수 있다. 예를 들어, 참조번호 1810과 1830의 가수의 최소 유효 비트는 “1”로 설정된 단일 비트(1850, 1870)로 각각 묘사되게 되고, 최소 유효 비트는 “0”으로 설정된 단일 비트(1860, 1880)로 각각 묘사되게 된다. 또한, 이 방법으로, 런렝스 인코딩을 적용하여 델타값을 더 조밀하게 부호화하는 앞서 언급한 방법들과 조합하는 임의의 실시예도 가능하다.
이하, 차이를 글로벌 기준값 세트로 부호화하여 압축된 데이터 블록을 압축해제 하는 방법에 대해 설명한다. 이러한 방법은 도 9에 도시되어 있다. 본 방법은 도 8의 메타데이터를 활용하여 부호화된 데이터 값에 적용한다. 데이터 값이 압축되어 있는 경우, 메타데이터 형식(860)을 적용하고, 필드(810)는 C=1에 의해 블록이 압축되어 있다는 것을 지정하게 되고, 필드(820, 825, 830)는 기준 포인터 인덱스, 부호 비트, 및 델타값을 각각 포함하게 된다. 반면에, 데이터 값이 압축되어 있지 않은 경우, 메타데이터 형식(870)을 적용하고, 필드(840)는 C=0에 의해 데이터 값이 압축되어 있지 않음을 지정하게 되고, 필드(850)는 압축되지 않은 데이터 값을 포함하게 된다.
도 9를 다시 참조하면, 프로세스(900)의 제1 단계(920)에서, 도 8의 필드(810, 840)의 C를 검사한다. 데이터 값이 압축되어 있지 않은 경우, 즉 C=0인 경우, 단계 930으로 진행하고 데이터 값을 필드 850으로부터 가져온 후에 단계 960에서 프로세스가 종료될 수 있다. 데이터 값이 압축되어 있는 경우, 프로세스는 단계 940으로 진행한다. 여기서, 도 8의 필드 820을 활용하여 글로벌 기준값을 가져와서 글로벌 기준값 표 안으로 색인한다. 도 9의 다음 단계 940에서, 글로벌 기준값(820)이 도 8의 부호 비트(825)를 고려하여 델타값(830)에 추가되어 데이터 값을 복원한다. 참조번호 900으로 도시된 프로세스는 페이지 등과 같은 메모리 객체 또는 데이터 블록에 포함된 데이터 값만큼 반복될 수 있다는 것은 당업자에게 당연하다 할 것이다.
도 10은 도 9의 프로세스에 따른 글로벌 기준값 세트를 활용하여 데이터 블록을 압축해제 하도록 구성된 장치를 도시한 것이다. 예시적인 장치(1000)는 도 8의 메타데이터 필드에 따른 복수의 부호화를 입력으로 사용한다. 예시적인 장치에서, 참조번호 1000에 따르면, 참조번호 1011과 1012에 2개의 부호화된 값(E0, E1)이 있다. 기준 포인터 인덱스 필드(1020)는 복수의 글로벌 기준값 엔트리 중의 하나를 선택한다. 예시적인 장치(1000)에는 참조번호 1021, 1022, 1023, 1024에 4개의 글로벌 기준값 엔트리(B0, B1, B2, B3)가 있다. 엔트리 중의 하나가 선택되고, 선택된 엔트리에 있는 글로벌 기준 포인터 값이 기준값 명부(1031)에 복사된다. 도 8의 델타값 필드(830)는 델타값 명부(1033)에 복사된다. 다음으로, 장치는 기준값(1031)을 델타값(1032)에 합하도록 구성된다. 합산은 원 값이 검색되는 명부(1032) 안으로 로딩된다.
다른 실시예에서, 스루풋이 높게 값들을 복호화하는 것이 바람직하다. 이를 위해, 예시적인 파이프라인 명부들이 기능 블록들 사이에 배치되고 점선(1001)으로 표현되어 이러한 파이프라인 장치의 예를 도시한다.
엔트로피 기반 코딩 스키마를 활용한 델타값의 압축 및 압축해제
이하, 글로벌 기준을 활용하는 델타 이코딩보다 높은 압축 정도를 제공할 수 있는 실시예에 대해 설명한다. 일 상황에서, 여러 데이터 블록이 완전히 동일한 값들을 포함하고 있을 수 있다. 이러한 값들은 동일한 글로벌 기준값을 활용하여 부호화될 수 있고 동일한 델타값을 가질 수 있다. 그러나 상이한 글로벌 기준값들을 활용하여도 여전히 동일한 델타값을 가질 수 있다. 다음의 특허 개시의 목적은 빈도가 높은 델타값을 빈도가 낮은 델타값보다 적은 수의 비트로 부호화하는 것이다.
도 11은 엔트로피 기반 인코딩을 활용하여 델타값을 더 조밀하게 부호화할 수 있는 방법을 도시한 것이다. 프로세스는 단계 1110에서 시작한다. 메모리 객체 또는 데이터 블록 내의 개별값들이 도 8에 도시된 메타데이터에 따른 글로벌 기준값을 가진 델타 인코딩을 활용하여 부호화된 경우를 가정하면, 일반적으로 본 방법의 목적은 메모리 객체 또는 데이터 블록 내의 복수의 부호화된 값의 델타값의 빈도의 히스토그램을 우선 설정하는 것이다. 이를 위해, 단계 1120에서 프로세스를 개시하고, 제2 단계(1130)에서 제1 델타값의 발생 수가 증분된다. 단계 1140에서, 모든 델타값들이 고려될 때까지 본 프로세스가 반복된다. 모든 델타값들이 고려된 경우, 프로세스는 델타값들의 엔트로피 기반 인코딩을 설정하기 위한 단계 1150으로 진행한다. 허프만 코딩, 산술 코딩 등과 같은 복수의 방법들 중에서 선택할 수 있다는 것은 당업자에게 당연하다 할 것이다. 이러한 엔트로피 기반 인코딩 방법에 공통적으로 필요한 것은 각 심볼의 상대 빈도에 관한 히스토그램 정보인데, 이 경우세서는 델타값이 될 수 있다.
도 12는 도 11에 기재된 방법을 지지하기 위해 엔트로피 기반 인코딩을 활용하여 델타값을 부호화하도록 구성된 장치를 도시한 것이다. 도 8의 메타데이터에 따라, 각 델타 부호화된 데이터 값은 명부(1210)(부호화된 메모리 값) 안으로 로딩된다. 로딩 명령과 저장 명령으로 컴퓨터가 이러한 명부에 접근할 수 있는 것으로 추정한다. 다음으로 도 8의 델타값 필드(830)가 추출되고 명부(1220) 안으로 복사된다. 장치(1260)는 각 델타값의 빈도, 즉 발생 횟수를 세도록 구성된 많은 실시예들 중의 하나이다. 명부(1220)는 장치(1260) 내부로 색인될 수 있고 캐시로 정리된다. 캐시와 같은 예시적인 구조는 N개의 엔트리를 포함하고, 각 엔트리는 참조번호 1232(DVT 2)와 같은 델타값 태그 어레이 엔트리 및 참조번호 1242(DVF 2)와 같은 델타값 빈도 어레이 엔트리를 포함한다. 캐시가 직접 매핑 되도록, 즉, 델타값 명부(1220)에 포함된 메모리(데이터) 값과 장치(1260) 내의 엔트리 사이에 1 대 1의 상응이 있도록 구성될 수 있다는 것은 당업자에게 당연하다 할 것이다.
대안적으로, 캐시는 세트 결합되도록, 즉, 델타값 명부(1220)에 포함된 메모리(데이터) 값과 장치(1260) 내의 엔트리 사이에 1 대다수의 상응이 있도록 구성될 수 있다. 무관하게, 명부(1220)에 포함된 델타값은 장치(1260)를 색인할 수 있다. 명부(1220)의 메모리 값의 태그 비트가 하나와 일치하거나(직접 매핑 구성의 경우) 참조번호 1260의 복수의 엔트리 중의 하나와 일치(세트 결합 구성의 경우)하는 경우, 참조번호 1260에 일치가 있다. 일치가 있는 경우, 해당 델타값 빈도 어레이 엔트리는 증가되게 된다. 예를 들면, 참조번호 1232의 엔트리(DVT 2)가 명부(1220)의 델타값과 일치한다고 가정하면, 참조번호 1242(DVF 2)가 선택된다. DVF 2가 15를 포함하는 경우, 16으로 증가되게 된다. 명부(1220)의 델타값이 장치(1260)에 포함되어 있지 않는 경우, 엔트리가 생성되어야 한다.
직접 매핑 구성의 경우, 선택된 엔트리에 있는 값은 교체된다. 세트 결합 구성의 경우, 교체하기 위해 선택할 수 있는 복수의 엔트리가 있다. LRU(Least-Recently-Used) 또는 FIFO(First-In-First-Out) 등과 같은 여러 교체 스키마 중에서 선택할 수 있다는 것이 당업자에게 당연하다 하겠지만, 본 장치 고유의 정책은 최소 빈도 사용 델타값(Least-Frequent- Delta-Value-Used)이라고 하는 것으로, 즉, 델타값 빈도 어레이(1240)에서 카운트가 최소인 엔트리이다.
메모리 부분의 모든 의도된 값들이 스캐닝 된 경우, 장치(1260)는 델타값 빈도의 평가치를 포함한다. 장치(1260)는 개별 엔트리들, 예컨대 엔트리 1241(DVF 1)과 관계된 엔트리 1231(DVT 1)가 소위 로드 명령을 통해 컴퓨터 명령에 의해 판독될 수 있도록 구성된다. 이로써 장치(1260)로부터 메모리(1250)로 콘텐츠를 이동하는 가능성이 열린다. 도 2에서 알 수 있는 바와 같이, 장치(420)는 메모리 컨트롤러 141(MCTRL1), 142(MCTRL2), 및 143(MCTRL3)을 통해 메모리 장치151(M1), 152(M2), 및 153(M3) 중의 임의의 메모리 장치로 연결되는 애널라이저(214)의 일부일 수 있다.
델타값 빈도 정보가 메모리로 복사된 경우, 이를 더 분석하고 허프만 코딩 또는 산술 코딩과 같은 종래 기술의 알려진 임의의 모든 엔트로피 기반 인코딩 스키마를 사용하여 부호화를 생성할 수 있다. 또한, 중복제거 기반 압축 방식을 적용할 수 있다.
도 13은 글로벌 기준값을 활용한 엔트로피 기반 인코딩 된 델타값의 메타데이터를 도시한 것이다. 메타데이터(1300)는 데이터 값이 압축된 경우와 압축되지 않은 경우 각각에 대한 2가지 형식(1360, 1370)으로 구성된다. 압축할지 말지 여부는 델타가 사전 설정된 임계값보다 작은지 여부 또는 다른 기준에 따라 결정될 수 있다. 이러한 방법 및 장치도 가능하다.
데이터 값이 압축되는 경우, 제1 필드(1310)에서 C는 1로 설정된다. 후속하는 3개의 필드(1320, 1325, 1330)는 도 8의 메타데이터의 경우와 같이 기준 포인터 인덱스를 부호화한다. 참조번호 1325의 필드는 단일 비트로 부호화 될 수 있는 델타값의 부호 비트를 인코딩 한다. 참조번호 1330은 선택된 엔트로피 기반 인코딩 스키마에 대한 델타값의 엔트로피 기반 인코딩을 포함한다. 반면에, 압축되지 않는 경우, 제1 필드(1340)에서 C는 0으로 설정된다. 그리고 참조번호 1350의 필드는 압축되지 않은 데이터를 포함한다.
이하, 엔트로피 기반 코딩으로 부호화된 델타값을 복호화하는 방법에 대해 설명한다. 도 14는 엔트로피 기반 인코딩을 활용하여 델타값을 복호화하는 방법(1400)을 도시한 것이다. 프로세스는 단계 1410에서 시작한다. 목적은 단계 1420에 표시된 바와 같이 데이터 블록 또는 복수의 데이터 블록의 모든 부호화된 델타값을 복호화하는 것이다. 제1 단계는 델타값이 압축되어 있는 경우에 도 13의 필드 1330을 추출하는 것이다. 이어서, 단계 1430에서, 부호화된 델타값은 선택된 엔트로피 기반 코딩 스키마를 활용하여 사용 가능한 코드와 대조한다. 델타값이 복호화되면, 도 13의 필드 1320을 활용하여 글로벌 기준값 표로부터 글로벌 기준값을 검색한다. 값이 압축되어 있지 않은 경우, 단계 1430에서 아무 동작도 취하지 않는다. 단계 1430에서, 부호화된 값들이 더 있으면 본 프로세스가 반복된다. 더 이상 값들이 없는 경우, 프로세스는 단계 1450에서 종료된다.
도 15는 도 14의 방법에 따라 엔트로피 기반 인코딩을 활용하여 델타값을 복호화하도록 구성된 장치(1500)를 도시한 것이다. 예시적인 장치(1500)는 도 13의 메타데이터 필드에 따른 복수의 부호화된 값을 입력으로 사용한다. 예시적인 장치에서, 참조번호 1500에 따르면, 참조번호 1511과 1512에 2개의 부호화된 값(E0, E1)이 있다. 장치(1520)는 델타값의 엔트로피 기반 인코딩을 추출하고(1521) 선택된 엔트로피 기반 인코딩 스키마에 따라 델타값을 복호화하도록 구성된 장치를 사용하여 델타값을 복호화하도록(1522) 구성된다. 장치(1522)는 당업자들에게 일반적으로 알려진, 본 명세서에 그 내용이 사실상 모두 포함된 WO 2020/130929의 도 3 및 도 7에 각각 개시된 허프만 디컴프레서(300, 700) 등과 같은, 임의의 모든 적합한 디컴프레서에 의해 구현될 수 있다. 최종 결과는 도 8의 메타데이터 형식에 따른 델타 부호화된 데이터 값이 되게 된다. 기준 포인터 인덱스 필드(820)는 복수의 글로벌 기준값 엔트리 중의 하나를 선택한다. 예시적인 장치(1500)에는 참조번호 1531, 1532, 1533, 1534로 표시된 4개의 글로벌 기준값 엔트리(B0, B1, B2, B3)가 있다. 엔트리 중의 하나가 선택되고, 선택된 엔트리에 있는 글로벌 기준 엔트리가 기준값 명부(1541)로 복사된다. 도 8의 델타값 필드는 델타값 명부(1543)로 복사된다. 이어서, 장치는 기준값(1541)을 델타값(1543)에 합하도록 구성된다. 합산은 원 값이 검색되는 명부(1542) 안으로 로딩된다.
다른 실시예에서, 스루풋이 높게 값들을 복호화 하는 것이 바람직하다. 이를 위해, 예시적인 파이프라인 명부들이 기능 블록들 사이에 배치되고 점선(1501)으로 표현되어 이러한 파이프라인 장치의 예를 도시한다.
또 다른 실시예에서, 도 13의 참조번호 1320으로 표시된 기준 포인터 인덱스 값에 엔트로피 기반 인코딩을 별도로 적용할 수 있다. 이로써, 한 기준값이 다른 기준값보다 더 많은 빈도로 사용되는 경우에 더 높은 압축을 만들어낼 수 있다. 도 21은 도 13의 메타데이터 형식을 도시하고 있고, 본 특허에 개시된 바와 같이 기준 포인터 값(2115)의 빈도를 분석하도록 구성된 임의의 모든 방법 및 장치를 활용하여 일 실시예가 기준 포인터 값(2115)의 빈도를 분석하기로 선택하는 것을 도시하고 있다.
추가적인 실시예에서, 중복제거를 적용할 수 있다. 이로써, 값 또는 전체 데이터 블록이 다른 데이터 값 또는 다른 데이터 블록과 동일한 경우에 더 높은 압축을 만들어낼 수 있다. 도 21은 도 13의 메타데이터 형식을 추가적으로 도시하고 있고, 본 특허에 개시된 바와 같이 기준 포인터 값(2125) 중에서 중복의 발생을 분석하도록 구성된 임의의 모든 방법 및 장치를 활용하여 일 실시예가 기준 포인터 값(2125) 중에서 중복의 발생을 분석하기로 선택하는 것을 도시하고 있다. 델타값에도 동일한 방식이 적용될 수 있다. 여기서, 본 특허에 개시된 바와 같이 델타값 중에서 중복의 발생을 분석하도록 구성된 임의의 모든 방법 및 장치를 활용하여 델타값 중에서 중복의 발생을 분석하기로 선택할 수 있다.
도 11에 도시된 방법에 대안으로 또는 추가하여, 데이터 블록의 모든 데이터 값이 동일한 경우, 그 중의 임의의 하나를 단일 비트를 가진 기준 데이터 값으로 사용하여 모든 값들이 동일함을 나타낼 수 있다. 도 27은 이러한 원리에 기초한 압축 방법(2700)을 도시한 것이다. 프로세스는 단계 2710에서 시작한다. 제1 단계(2720)는 기준을 데이터 블록의 제1 데이터 값과 동일한 값으로 설정하는 것이다. 이어서, 데이터 블록의 나머지 데이터 값이 각각 기준에 비교되어(2740) 데이터 블록의 나머지 데이터 값이 각각 고려된다(2730). 현 데이터 값이 기준과 동일한 경우, 프로세스는 고려할 값이 더 이상 없을 때까지 다음 데이터 값을 고려하며 진행된다(2750). 반면에, 단계 2740에서, 현 데이터 값이 기준과 동일하지 않은 경우, 프로세스는 종료되고, 데이터 블록은 압축되지 않게 된다(2760). 모든 데이터가 고려되었고 기준과 동일한 것으로 판단된 경우, 프로세스는 종료되고 데이터 블록은 압축되게 된다(2770).
도 28은 도 27에 도시된 방법을 활용하여 데이터 블록이 압축되는 방식을 보여주는 예시적인 레이아웃이다. 상기 방법으로 데이터 블록을 압축할 수 없는 경우, 도 6에 도시된 방법에 따라 데이터 블록을 압축하고, 여기서 데이터 블록의 각 값은 참조번호 2870의 형식을 활용하여 압축되거나, 두 방법 모두 압축되지 않은 각 데이터 값을 저장하는 데이터 블록을 압축할 수 없는 경우, 참조번호 2880의 형식을 사용한다.
도 27에 도시된 방법을 활용하여 압축되는 블록에서, 모든 데이터 값은 동일하다. 따라서, 블록은 동일 값들 중의 한 경우인 기준값(2820)을 저장하여 압축된다. 상기 방법이 사용되게 설정하기 위하여, 2 비트 코드 C(2810)는 10으로 설정된다. 반면에, 도 6의 방법이 사용되는 경우, 각 데이터 값은 선택된 기준값으로 델타를 사용하여 부호화된다. 선택된 기준값은 참조번호 2876의 필드에 부호화될 수 있고, 델타는 참조번호 2878에 부호화될 수 있고, 부호 비트는 참조번호 2877의 부호 필드에 부호화될 수 있다. 상기 방법이 사용되게 설정하기 위하여, C필드(2875)는 11로 설정된다. 최종적으로, 두 방법 모두 데이터 블록을 압축할 수 없는 경우, 모든 데이터 값은 압축되지 않은 형식으로 저장되게 되고 참조번호 2880의 레이아웃이 사용된다. 여기서, 각 값은 압축되지 않은 채 저장되고 C 필드(2885)는 00으로 설정된다. 도 27의 방법만이 사용되는 경우, 전체 데이터 블록에 대해 단일 C 필드를 사용하여 최적화하는 것이 가능하다.
따라서, 데이터 압축 방법은 복수의 데이터 블록 중의 개별 데이터 블록의 모든 데이터 값이 동일한 값인지 여부를 판단하고, 동일한 값인 경우에 상기 동일 값을 글로벌 기준값(2820)으로 사용하고 이를 나타내는 제1값을 메타데이터(2810)로 사용하여 전체 개별 데이터 블록을 부호화하는 단계를 포함할 수 있다. 동일한 값이 아닌 경우, 개별 데이터 블록의 데이터 값들은, 제3값을 가진 메타데이터(2885)로 표시된 압축되지 않은 데이터 값들을 제외하고, 이를 나타내는 제2값을 가진 메타데이터(2875)를 사용하여 본 명세서에 개시된 바와 같은 방법으로 부호화될 수 있다(즉, 예컨대 도 6의 방법과 같이, 선택된 글로벌 기준값 및 그 결과의 델타값을 포함).
도 29는 도 27에 도시된 방법과 도 28에 도시된 메타데이터 레이아웃으로 데이터 블록을 압축하도록 구성된 장치를 도시한 것이다. 장치(2900)로의 입력은 도 29의 예시적인 실시예에서 4개의 데이터 워드, 즉 W1(2910), W2(2920), W3(2930), 및 W4(2940)를 포함하는 데이터 블록이다. 장치(2950)는 모든 데이터 워드가 동일한 값을 포함하는지 여부를 설정하도록 구성된다. 상기 장치는 모든 데이터 워드가 동일한 값인 경우 논리 1을 출력으로 남겨두고 모든 데이터 워드가 동일한 값이 아닌 경우 논리 0을 출력으로 남겨두게 된다. 워드 n의 비트 i를 Wn[i]로 표기하기로 하면, 모든 데이터 워드가 동일하다는 의미는 원 내의 모든 비트에 대해 W1[i] = W2[i]= W3[i]= W4[i]라는 것이다. 당업자라면 장치(2950)이 XOR 게이트와 AND 게이트로 구성될 수 있다는 것을 인지할 수 있다. 출력 신호는 참조번호 2960과 2970으로 표시된 2개의 래치의 활성 입력으로 연결된다. 데이터 블록의 모든 워드가 동일한 경우, W1(2910)의 콘텐츠는 다음 클럭 신호(2980)에서 기준값 래치(2960) 안으로 래치되게 된다. 마찬가지로, 모든 데이터 워드가 동일한 경우, 도 28의 메타데이터 형식(2860)의 2개의 메타데이터 비트는 '1'과 '0'이 되어야 한다. '1'과 '0'을 2 비트 래치(2970)으로 래치하기 위해, 상기 래치는 활성 신호가 장치(2950)에 의해 제어되게 하여 다음 클럭 신호(2980)에서 '1'과 '0'으로 래치되게 된다. 당업자라면 C가 '1'과 '0'이 아니고 다른 논리 2 비트 값인 경우, 예컨대 도 28의 메타데이터 레이아웃(2800)의 참조번호 2870과 2880과 같은 다른 인코딩을 생성하는 것이 가능하다는 것을 인지할 수 있다.
도 30은 도 27에 도시된 방법과 도 28에 도시된 메타데이터 레이아웃으로 데이터 블록을 압축해제 하도록 구성된 장치를 도시한 것이다. 장치(3000)로의 입력은 메타데이터 C(3010)와 기준값(3090)이다. 도 28의 레이아웃(2860)에 따라 C=10인 경우, 기준값은 블록의 모든 데이터 워드로 복사된다. 장치(3000)의 예시적인 데이터 블록은 4개의 데이터 워드 W1(3040), W2(3050), W3(3060) 및 W4(3070)를 포함한다. 이러한 데이터 워드들은 각각 활성화 신호(E)를 가진 래치로 구성되고, E 신호는 논리값이 1인 경우에 다음 클럭 신호(CLK)에서 기준값 명부(3090)의 콘텐츠를 모든 래치로 전송하게 된다. E 신호는 AND 게이트(3030)으로의 입력 신호에 연결된 인버터 게이트(3020)에 의해 C(3010)가 10인 것으로 확인되는 경우에만 논리값이 1이 되게 된다. C가 10이 아니고 다른 논리값인 경우, 다른 값들의 세트를, 예컨대 도 28의 메타데이터 레이아웃(2880)에 따른 압축되지 않은 워드의 세트를 워드 래치 W1(3040), W2(3050), W3(3060) 및 W4(3070)에 각각 로딩하는 것이 가능하다는 것을 당업자는 인지할 수 있다.
기준값들은 전형적으로 기준값 포인터(또는 기준값 인덱스)를 활용하여 N개의 기준값 당 log2N 비트를 사용하여 기준값들 모두를 저장하는 표로 부호화된다. 일부 기준값들은 다른 기준값들보더 실질적으로 더 자주 사용될 수도 있다. 그 경우, 허프만 코딩이나 산술 코딩과 같은 엔트로피 기반 인코딩 스키마를 활용하여 기준값 포인터를 부호화하는 것이 바람직하다. 도 31은 엔트로피 기반 인코딩 스키마를 활용하여 기준값 포인터를 부호화하는 방법을 도시한 것이다.
도 31을 참조하면, 단계 3110에서 프로세스가 시작된다. 전체 프로세스는 예컨대 도 5를 참조하여 설명한 방법 등에 의해 설정된 모든 기준값들을 고려한다. 단계 3130에서, 각 기준값에 대해 각 기준값(또는 기준값 포인터)이 사용되는 횟수가 설정된다. 모든 기준값이 고려된 경우, 프로세스는 단계 3140을 거쳐 단계 3150으로 진행된다. 엔트로피 기반 인코딩은 모든 기준값이 사용되는 횟수에 근거하고, 더욱 빈번하게 사용되는 기준값에는 덜 빈번하게 사용되는 기준값보다 짧은 코드를 만들어낸다. 부호화가 이루어지면, 프로세스는 단계 3160에서 종료된다.
도 7과 같이 기준값 포인터를 명시적으로 저장하는 블록을 압축하는 장치로부터, 도 31에 도시된 방법으로 데이터 블록을 압축하도록 구성된 장치를 구성하는 것이 가능하다. 도 7을 다시 참조하면, 도 20에 더 설명한 장치의 작업(750)은 선택된 기준값에 대한 기준값 포인터가 명시적으로 저장되는 부호화를 생성하는 것이다. 도 31에 기재된 방법은 기준값 포인터와 엔트로피 기반 인코딩 사이에 1 대 1 매핑이 되게 한다. 이러한 표는 장치 내의 작은 표에 저장될 수 있고 압축이 활성화되는 경우에 로딩된다. 따라서, 기준값 포인터가 참조번호 750의 작업에서 설정된 경우, 이러한 포인터는 해당 기준값 포인터에 대한 부호화를 선택하도록 표 안으로 색인될 수 있다.
또한, 도 8과 같이 기준값 포인터를 명시적으로 저장하는 블록을 압축해제하는 장치로부터, 도 31에 도시된 방법으로 데이터 블록을 압축해제하도록 구성된 장치를 구성하는 것도 가능하다. 도 10은 이러한 인코딩을 압축해제하는 장치의 일 실시예를 도시한 것이다. 여기서, 예시적인 블록에는 4개의 기준값 B0(1021), B1(1022), B3(1023), B4(1024)를 활용할 수 있는 2개의 값 E0(1011)과 E1(1012)이 있다. 이러한 기준값들은 코드 워드와 기준값 사이에 1 대 1 매핑이 되어 있는 임의의 모든 엔트로피 기반 인코딩을 활용하여 코드 워드 안에 부호화된다. 앞서 설명한 부호화를 위한 장치에서와 같이, 기준값 인코딩 및 기준값 인덱싱 세트를 포함하는 작은 표를 구비하여 인코딩을 활용하여 기준값을 가져올 수 있다. 이러한 장치는 도 10의 참조번호 1020의 좌측에 도입되어 참조번호 1020에서 사용될 기준값을 가져올 수 있다. 적합한 장치의 일례는 사실상 본 명세서에 그 내용이 전부 포함된 US10846218에 개시된 압축해제 장치이다.
일반적으로, 본 개시는 글로벌 기준값 세트를 결정하고 베이스-델타 인코딩을 활용하여 복수의 데이터 값을 각각 포함하는 복수의 데이터 블록을 압축하도록 구성된 방법 및 장치에 관한 것이다. 추가적으로, 본 개시는 델타값들에 별개로 또는 기준값들에 별개로 또는 공동으로 적용된 종래 기술의 엔트로피 기반 인코딩 방식과 중복제거 기반 인코딩 방식과 조합하여 압축하도록 구성된 방법 및 장치에 관한 것이다. 이러한 실시예들이 모두 가능하다.
앞선 설명으로부터 당업자가 이해할 수 있듯이, 본 발명은 도 22의 참조번호 2200에서 알 수 있는 데이터 압축 방법을 제공한다. 방법(2200)은 복수의 데이터 값을 각각 포함하는 복수의 데이터 블록을 확보하는 단계(2210)를 포함한다. 방법(2200)은 확보된 복수의 데이터 블록의 베이스-델타 인코딩을 수행하는 단계(2220)를 더 포함하고, 여기서 델타값은 데이터 값과 기준값 사이의 차이를 의미하고, 이는 복수의 데이터 블록의 데이터 값들 중에서 복수의 데이터 블록에 공통인 글로벌 기준값 세트를 판단하는 단계(2230)에 의해 수행된다. 글로벌 기준값 세트는 글로벌 기준값 세트의 글로벌 기준값들에 대한 복수의 데이터 블록의 데이터 값들에 대하여 델타값들을 최소화하도록 선택된다.
방법(2200)은 이어서 복수의 데이터 블록의 개별 데이터 값들을 부호화하는 단계(2240)를 포함하고, 개별 데이터 값에 수치적으로 가장 가깝고 그로 인해 최소 델타값을 산출하는 글로벌 기준값을 각 개별 데이터 값에 대해 글로벌 기준값 세트에서 선택하는 단계(2250) 및 부호화된 개별 데이터 값에 대한 메타데이터를 생성하여 선택된 글로벌 기준값과 그 결과의 델타값을 표현하는 단계(2260)를 포함한다.
본 명세서의 개시로부터 당업자가 명확히 이해할 수 있는 바와 같이, 글로벌 기준값 세트는 다음과 같은 특징의 데이터 값을 포함하게 된다.
a)
델타 부호화될 복수의 데이터 블록에 등장("공통", "글로벌").
b)
후속 부호화 단계 2240에서 정의된 방식으로 글로벌 기준값 세트를 채용하여 복수의 데이터 블록의 데이터 값들이 베이스-델타 인코딩되는 경우에 최소 델타값(최대 압축 비율)이 결과로 나오게 됨.
이와 같이, 복수의 데이터 블록의 글로벌 값 세트에 대한 델타값을 최소화하는 글로벌 값 세트를 판단하는 것은 통상의 지식에 해당하고 클러스터링(clustering) 방법으로 알려져 있다. 예를 들어, 한 가지 공지의 클러스터링 방법은 Kmeans(Stuart P. Lloyd, Least Squares Quantization in PCM, IEEE Transactions on Information Theory, Vol. IT-28, No. 2, pp. 192, March 1982)이다.
도 4와 도 5를 특히 참조하여 설명한 바와 같이, 글로벌 기준값 세트를 판단하는 단계(2230)는 확보된 복수의 데이터 블록을 분석하여 복수의 데이터 블록의 데이터 값들에 대한 값 빈도 정보를 확립하는 단계 및 복수의 데이터 블록의 데이터 값들을 각각의 값 빈도와 함께 분류하는 단계를 포함할 수 있다. 이어서, N은 값 bin(value bin)의 수이고 B는 후보 기준값의 수인 N = 1...Nmax 및 B = 1...N의 각 특정 조합에 대해, 분류된 데이터 값들이 N개의 빈(bin)으로 분리된다. 최고 누적 값 빈도를 가진 B개의 bin에 대해, 각 bin에 대해 해당 bin에 최고 값 빈도를 가진 데이터 값으로서 후보 기준값이 배정된다. 이어서, B개의 bin에 대한 후보 기준값을 활용하여 확보된 복수의 데이터 블록의 데이터 값들의 베이스-델타 인코딩이 수행되어 특정 조합에 대한 베이스-델타 인코딩 압축 비율을 판단한다. 모든 특정 조합 중에서, 최대 압축 비율을 산출하는 값 bin과 후보 기준값의 조합이 식별된다. 식별된 조합의 후보 기준값들이 글로벌 기준값 세트로 선택된다.
개시된 실시예들(예: 도 6의 설명)에서 알 수 있는 바와 같이, 각 글로벌 기준값은 바람직하게 글로벌 기준값 세트에 고유의 기준값 인덱스가 있다. 복수의 데이터 블록의 개별 데이터 값들을 부호화하는 단계(2240)는 기준값 인덱스에 의해 생성된 메타데이터 내에 선택된 글로벌 기준값을 나타내는 단계를 포함한다.
또한, 복수의 데이터 블록의 개별 데이터 값들을 부호화하는 단계(2240)는 선택된 기준값에서 기인하는 델타값이 임계값을 초과하는지 여부를 각 데이터 블록 내의 각 데이터 값에 대해 판단하는 단계 및 초과하는 경우에 데이터 값 그 자체를, 선택된 글로벌 기준값과 그 결과의 델타값에 의해 데이터 값을 나타내는 대신에, 데이터 값이 압축되지 않았음을 나타내는 지시와 함께 포함할 메타데이터를 생성하는 단계를 포함할 수 있다.
앞서 설명한 바와 같이, 본 발명의 실시예들은 델타값들의 런렝스 인코딩을 포함할 수 있다. 이에 따라, 데이터 압축 방법(2200)은 a) 최대 유효 바이너리 0 또는 1의 연속의 길이를 나타내는 데이터 및 b) 델타값의 나머지(비연속 부분)의 조합에 의한 생성된 메타데이터 내에 델타값을 나타냄으로써 최대 유효 바이너리 0 또는 1의 연속을 포함하는 베이스-델타 인코딩된 데이터 값들의 델타값들을 런렝스 인코딩하는 단계를 더 포함할 수 있다.
유사하게, 본 발명의 실시예들은 델타값들의 비트 플레인 압축을 포함할 수 있다. 이를 위해, 데이터 압축 방법(2200)은 델타값 시퀀스의 각 델타값이 특정 최소 길이의 최대 유효 바이너리 0 또는 1의 연속을 포함함을 식별함으로써 베이스-델타 인코딩된 데이터 값들의 델타값 시퀀스에 비트 플레인 압축을 적용하는 단계 및 a) 식별된 최소 길이를 나타내는 데이터 및 b) 델타값 시퀀스 내의 나머지 델타값들(비연속 부분)의 조합에 의한 생성된 메타데이터의 델타값 시퀀스 내에 델타값들을 나타내는 단계를 더 포함할 수 있다.
앞서 설명한 바와 같이, 본 발명의 바람직한 실시예들은 델타값들 및/또는 기준값 인덱스들을 포함하는 단계를 포함한다. 따라서, 데이터 압축 방법(2200)은 하나 이상의 베이스-델타 인코딩된 데이터 블록의 베이스-델타 인코딩된 데이터 값들의 델타값들/기준값 인덱스들을 확보하는 단계 및 확보된 델타값들/기준값 인덱스들 중에서 밸류 중복성을 활용함으로써 상기 하나 이상의 베이스-델타 인코딩된 데이터 블록의 제2 단계 데이터 압축을 수행하는 단계를 더 포함할 수 있다.
제2 단계 데이터 압축은 확보된 델타값/기준값 인덱스들의 상대적 빈도 정보를 확보하고, 확보된 상대적 빈도 정보에 의거하여 각 확보된 델타값/기준값 인덱스에 대한 코드를 선택하고, 선택된 코드에 의한 델타값/기준값 인덱스를 각 베이스-델타 인코딩된 데이터 값에 대해 생성된 메타데이터 내에 나타냄으로써 허프만 인코딩 또는 산술 인코딩과 같은 엔트로피 기반 인코딩을 수행하는 단계를 바람직하게 포함할 수 있다. 기준값 인덱스들(또는 기준값 포인터들) 상에 엔트로피 기반 인코딩을 수행하는 것에 대한 대안으로, 엔트로피 기반 인코딩은 기준값들 자체 상에 수행될 수 있다. 그 결과, 기준값 코드 워드들은 기준값들과 1대 1로 매핑된 기준값 인덱스들로 사용될 수 있다.
대안적으로, 제2 단계 데이터 압축은 확보된 델타값/기준값 인덱스 중에서 하나 이상의 중복을 식별 및 중복 델타값/기준값 인덱스와 동일한 델타값을 가진 부호화된 개별 데이터 값의 포인터 또는 식별자에 의한 각 식별된 중복 델타값/기준값 인덱스를 생성된 메타데이터 내에 나타내어 중복제거 기반 압축을 수행하는 단계를 포함할 수 있다.
복수의 데이터 블록을 확보하는 단계(2210)는 컴퓨터 메모리(C1-C3, M1-Mk, 도 24의 참조번호 2410)로부터 메모리 객체를 판독하는 단계를 전형적으로 포함할 수 있고, 여기서, 상기 복수의 데이터 블록은 메모리 객체에 포함되고, 방법(2200)은 생성된 메타데이터를 컴퓨터 메모리에 저장하는 단계를 더 포함한다. 메모리 객체는 예컨대 컴퓨터 메모리(C1-C3, M1-Mk, 도 24의 참조번호 2410)의 페이지일 수 있다. 또는, 메모리 객체는 예컨대 캐시 라인이거나 메모리 페이지와 다른 크기의 다른 메모리 객체일 수 있다.
연관 컴퓨터 프로그램 제품은 처리장치(예: 도 2의 P1, P2, 또는 P3와 같은 CPU)에 의해 로딩되고 실행되는 경우에 앞서 설명한 데이터 압축 방법(2200)의 수행을 유발하는 코드 명령어를 포함할 수 있다.
도 23은 본 명세서에 기재된 바와 같은 확보된 복수의 데이터 블록의 베이스-델타 인코딩을 수행하기 위한 연관 데이터 압축 장치(2300; 도 2의 컴퓨터 메모리 압축 장치(205)에 상응할 수 있음)를 도시한 것이다. 앞서 설명한 바와 같이, 각 데이터 블록은 복수의 데이터 값을 포함하고, 여기서 델타값은 데이터 값과 기준값 사이의 차이를 의미한다. 데이터 압축 장치(2300)는 애널라이저 유닛(2310; 도 2의 애널라이저 유닛(214)에 상응할 수 있음) 및 인코더 유닛(2320; 도 2의 인코더 유닛(212)에 상응할 수 있음)을 포함한다.
애널라이저 유닛(2310)은 복수의 데이터 블록에 공통인 글로벌 기준값 세트를 복수의 데이터 블록의 데이터 값들 중에서 판단하도록 구성된다. 앞서 설명한 바와 같이, 글로벌 기준값 세트는 글로벌 기준값 세트의 글로벌 기준값들에 대해 복수의 데이터 블록의 데이터 값들에 대한 델타값들을 최소화하도록 선택된다.
인코더 유닛(2320)은 각 개별 데이터 값에 대해 각 개별 데이터 값에 수치적으로 가장 가깝고 그 결과로 최소 델타값을 산출하는 글로벌 기준값을 글로벌 기준값 세트에서 선택하고 선택된 글로벌 기준값과 그 결과의 델타값을 나타내는 인코딩된 개별 데이터 값에 대한 메타데이터를 생성함으로써 복수의 데이터 블록의 개별 데이터 값들을 인코딩하도록 구성된다.
애널라이저 유닛(2310)과 인코더 유닛(2320)을 구비한 데이터 압축 장치(2300)는 데이터 압축 방법(2200)과 그 실시예들에 대해 앞서 설명한 바와 같은 추가적인 또는 개선된 임의의 또는 모든 기능을 수행하도록 구성될 수 있다.
연관된 데이터 압축해제 방법은 데이터 압축 방법(2200)에 의해 생성된 메타데이터를 확보하는 단계 및 복수의 데이터 값을 각각 포함하는 복수의 데이터 블록을 확보된 메타데이터에 의해 표현된 글로벌 기준값들과 델타값들로부터 재구성하는 단계를 포함한다. 또한, 연관된 컴퓨터 프로그램 제품은 처리장치(예: 도 2의 P1, P2, 또는 P3와 같은 CPU)에 의해 로딩되고 실행되는 경우에 본 데이터 압축해제방법의 수행을 유발하는 코드 명령어를 포함한다.
상응하여, 연관된 데이터 압축해제 장치(2430; 도 24 참조)는 디코더 유닛(도 2의 디코더 유닛(213)에 상응할 수 있음)을 포함한다. 디코더 유닛(예: 205)은 데이터 압축 장치(2300)(예: 205)에 의해 생성된 것과 같은 메타데이터를 확보하고 복수의 데이터 값을 각각 포함하는 복수의 데이터 블록을 확보된 메타데이터에 의해 표현된 글로벌 기준값들과 델타값들로부터 재구성하도록 구성된다.
도 24는 하나 이상의 메모리(2410), 데이터 압축 장치(2420; 도 23의 장치(2300) 및/또는 도 2의 장치(205)에 상응할 수 있음), 및 데이터 압축해제 장치(2430)를 포함하는 시스템(2400)을 도시한 것이다.
시스템(2400)은 전형적으로 컴퓨터 시스템(예: 도 2의 컴퓨터 시스템(200))일 수 있고, 하나 이상의 메모리(2410)는 캐시 메모리(예: C1-C3), RAM(예: M1-Mk), 보조기억장치, 또는 데이터 버퍼일 수 있다.
이상, 본 발명의 상이한 실시예들을 참조하여 본 발명을 설명하였다. 그러나, 당업자들에게 당연한 바와 같이, 본 명세서에 개시된 것과 다른 실시예들도 첨부된 청구범위에 정의된 바와 같은 본 발명의 범위 이내에서 균등하게 가능하다.
Claims (35)
- 복수의 데이터 값을 각각 포함하는 복수의 데이터 블록을 확보하는 단계(2210); 및
델타값은 데이터 값과 기준값 사이의 차이를 의미하는, 상기 확보된 복수의 데이터 블록의 베이스-델타 인코딩을 수행하는 단계(2220)를 포함하는 데이터 압축 방법(2200)에 있어서,
상기 베이스-델타 인코딩은:
상기 복수의 데이터 블록에 공통인 글로벌 기준값 세트를 상기 복수의 데이터 블록의 상기 데이터 값 중에서 판단(2230)―여기서, 상기 글로벌 기준값 세트는 상기 글로벌 기준값 세트 내의 상기 글로벌 기준값에 대하여 상기 복수의 데이터 블록의 상기 데이터 값에 대한 델타값을 최소화하도록 선택됨; 및
상기 복수의 데이터 블록의 개별 데이터 값들을 부호화(2240)하여 수행되고,
상기 개별 데이터 값들은:
상기 글로벌 기준값 세트에서, 상기 개별 데이터 값들에 수치적으로 가장 가깝고 그 결과로 최소 델타값을 산출하는 글로벌 기준값을 각 개별 데이터 값에 대해 선택(2250); 및
상기 선택된 글로벌 기준값과 상기 산출된 델타값을 나타내기 위해 상기 부호화된 개별 데이터 값에 대해 메타데이터를 생성(2260)하여 부호화되는 것을 특징으로 하는, 데이터 압축 방법. - 제1항에 있어서,
상기 글로벌 기준값 세트를 판단하는 단계(2230)는:
상기 확보된 복수의 데이터 블록을 분석하여 상기 복수의 데이터 블록 내의 상기 데이터 값에 관한 값 빈도 정보를 확립하는 단계;
상기 복수의 데이터 블록의 데이터 값들을 각각의 값 빈도와 함께 분류하는 단계;
N = 1...Nmax 및 B = 1...N의 각 특정 조합에 대해―여기서, N은 값 빈(value bin)의 수이고 B는 후보 기준값의 수임:
상기 분류된 데이터 값들을 N개의 빈으로 분리;
최고 누적 값 빈도를 가진 상기 B개의 빈에 대해, 각 빈에 대해 해당 빈에 상기 최고 값 빈도를 가진 상기 데이터 값으로서 후보 기준값을 배정; 및
상기 B개의 빈에 대한 상기 후보 기준값을 활용하여 상기 확보된 복수의 데이터 블록의 상기 데이터 값들의 베이스-델타 인코딩을 수행하여 상기 특정 조합에 대한 베이스-델타 인코딩 압축 비율을 판단하는 단계;
모든 상기 특정 조합 중에서, 최대 압축 비율을 산출하는 값 빈과 후보 기준값의 조합을 식별하는 단계; 및
상기 식별된 조합의 상기 후보 기준값들을 상기 글로벌 기준값 세트로 선택하는 단계를 포함하는 것을 특징으로 하는, 데이터 압축 방법. - 제1항 또는 제2항에 있어서,
각 글로벌 기준값은 상기 글로벌 기준값 세트에 고유의 기준값 인덱스가 있고, 상기 복수의 데이터 블록의 상기 개별 데이터 값들을 부호화하는 단계(2240)는 상기 기준값 인덱스에 의해 상기 생성된 메타데이터 내에 상기 선택된 글로벌 기준값을 나타내는 단계를 포함하는 것을 특징으로 하는, 데이터 압축 방법. - 제1항 내지 제3항의 한 항에 있어서,
상기 복수의 데이터 블록의 상기 개별 데이터 값들을 부호화하는 단계는, 각 데이터 블록에 대해:
상기 데이터 블록 내의 각 데이터 값에 대해, 상기 선택된 기준값에서 기인하는 상기 델타값이 임계값(UB)을 초과하는지 여부를 판단하는 단계; 및
초과하는 경우에, 상기 선택된 글로벌 기준값과 그 결과의 상기 델타값에 의해 상기 데이터 값을 나타내는 대신에, 상기 데이터 값 그 자체를 상기 데이터 값이 압축되지 않았음을 나타내는 지시와 함께 포함할 상기 메타데이터를 생성하는 단계를 포함하는 것을 특징으로 하는, 데이터 압축 방법. - 제4항에 있어서,
상기 임계값(UB)은 n 비트를 가진 최대 이진수에의 정의되는 최대 델타값(MD) 이하이고,
n = 최소 압축값 크기 - log2(B)이고,
최소 압축값 크기는 특정 목표 압축 비율의 결과로 얻어진 상기 부호화된 데이터 값의 최소 크기이고,
B는 상기 글로벌 기준값 세트 내에 있는 기준값의 개수인 것을 특징으로 하는, 데이터 압축 방법. - 제5항에 있어서,
상기 임계값(UB)은 상기 글로벌 기준값 세트의 각 기준값에 대해:
가장 큰 델타값이 상기 최대 델타값(MD)보다 작은 경우, 상기 각 기준값과 연관된 상기 가장 큰 델타값; 및
가장 큰 델타값이 상기 최대 델타값(MD)보다 작지 않은 경우, 상기 최대 델타값(MD)으로 정의되는 것을 특징으로 하는, 데이터 압축 방법. - 제1항 내지 제6항의 한 항에 있어서,
상기 생성된 메타데이터 내에 델타값을 나타냄으로써 최대 유효 바이너리 0 또는 1의 연속을 포함하는 상기 베이스-델타 인코딩된 데이터 값들의 델타값들을 런렝스(run-length) 인코딩하는 단계를 더 포함하고
상기 델타값은 상기 생성된 메타데이터 내에:
최대 유효 바이너리 0 또는 1의 연속의 길이를 나타내는 데이터; 및
상기 델타값의 나머지(비연속 부분)의 조합에 의해 나타내어지는 것을 특징으로 하는, 데이터 압축 방법. - 제1항 내지 제6항의 한 항에 있어서,
상기 베이스-델타 인코딩된 데이터 값들의 델타값 시퀀스에 비트 플레인 압축을 적용하는 단계를 더 포함하고,
상기 비트 플레인 압축은:
상기 델타값 시퀀스의 각 델타값이 특정 최소 길이의 최대 유효 바이너리 0 또는 1의 연속을 포함함을 식별; 및
상기 생성된 메타데이터의 상기 델타값 시퀀스 내에 상기 델타값들을 나타내어 적용되고,
상기 델타값들은:
상기 식별된 최소 길이를 나타내는 데이터; 및
상기 델타값 시퀀스 내의 상기 델타값들의 나머지(비연속 부분)의 조합에 의해 나타내어지는 것을 특징으로 하는, 데이터 압축 방법. - 제1항 내지 제8항의 한 항에 있어서,
하나 이상의 상기 베이스-델타 인코딩된 데이터 블록의 상기 베이스-델타 인코딩된 데이터 값들의 상기 델타값들을 확보하는 단계; 및
상기 확보된 델타값들 중에서 밸류 중복성을 활용함으로써 상기 하나 이상의 베이스-델타 인코딩된 데이터 블록의 제2 단계 데이터 압축을 수행하는 단계를 더 포함하는, 데이터 압축 방법. - 제9항에 있어서,
상기 제2 단계 데이터 압축은 엔트로피 기반 인코딩을 수행하는 단계를 포함하고,
상기 엔트로피 기반 인코딩은:
상기 확보된 델타값들의 상대적 빈도 정보를 확립하는 단계;
상기 확립된 상대적 빈도 정보에 의거하여 각 확보된 델타값에 대한 코드를 선택하는 단계; 및
각 베이스-델타 인코딩된 데이터 값에 대한 상기 생성된 메타데이터 내에서, 상기 선택된 코드에 의해 상기 델타값을 나타내는 단계에 의해 수행되는 것을 특징으로 하는, 데이터 압축 방법. - 제10항에 있어서,
상기 엔트로피 기반 인코딩은:
허프만 인코딩; 및
산술 인코딩을 포함하는 그룹에서 선택되는 것을 특징으로 하는, 데이터 압축 방법. - 제9항에 있어서,
상기 제2 단계 데이터 압축은 중복제거 기반 압축을 수행하는 단계를 포함하고,
상기 중복제거 기반 압축은:
상기 확보된 델타값들 중에서 하나 이상의 중복을 식별하는 단계; 및
상기 중복 델타값과 동일한 델타값을 가진 인코딩된 개별 데이터 값의 포인터 또는 식별자에 의해 각 식별된 중복 델타값을 상기 생성된 메타데이터 내에 나타내는 단계에 의해 수행되는 것을 특징으로 하는, 데이터 압축 방법. - 제3항 내지 제12항의 한 항에 있어서,
하나 이상의 상기 베이스-델타 인코딩된 데이터 블록의 상기 베이스-델타 인코딩된 데이터 값들의 상기 기준값 인덱스들을 확보하는 단계; 및
상기 확보된 기준값 인덱스들 중에서 밸류 중복성을 활용함으로써 상기 하나 이상의 베이스-델타 인코딩된 데이터 블록의 제2 단계 데이터 압축을 수행하는 단계를 더 포함하는, 데이터 압축 방법. - 제13항에 있어서,
상기 제2 단계 데이터 압축은 엔트로피 기반 인코딩을 수행하는 단계를 포함하고,
상기 엔트로피 기반 인코딩은:
상기 확보된 기준값 인덱스들의 상대적 빈도 정보를 확립하는 단계;
상기 확립된 상대적 빈도 정보에 의거하여 각 확보된 기준값 인덱스에 대한 코드를 선택하는 단계; 및
각 베이스-델타 인코딩된 데이터 값에 대한 상기 생성된 메타데이터 내에서, 상기 선택된 코드에 의해 상기 기준값 인덱스를 나타내는 단계에 의해 수행되는 것을 특징으로 하는, 데이터 압축 방법. - 제14항에 있어서,
상기 엔트로피 기반 인코딩은:
허프만 인코딩; 및
산술 인코딩을 포함하는 그룹에서 선택되는 것을 특징으로 하는, 데이터 압축 방법. - 제13항에 있어서,
상기 제2 단계 데이터 압축은 중복제거 기반 압축을 수행하는 단계를 포함하고,
상기 중복제거 기반 압축은:
상기 확보된 기준값 인덱스들 중에서 하나 이상의 중복을 식별하는 단계; 및
상기 중복 기준값 인덱스와 동일한 기준값 인덱스를 가진 인코딩된 개별 데이터 값의 포인터 또는 식별자에 의해 각 식별된 중복 기준값 인덱스를 상기 생성된 메타데이터 내에 나타내는 단계에 의해 수행되는 것을 특징으로 하는, 데이터 압축 방법. - 제1항 내지 제16항의 한 항에 있어서,
상기 복수의 데이터 블록 중의 개별 데이터 블록의 모든 데이터 값들이 동일한 값인지 여부를 판단하고, 동일한 값인 경우에 상기 동일한 값을 글로벌 기준값(2820)으로 사용하고 이를 나타내는 제1값을 메타데이터(2810)로 사용하여 상기 개별 데이터 블록 전체를 부호화하는 단계; 및
동일한 값이 아닌 경우, 제3값을 가진 메타데이터(2885)로 표시된 제4항에 따른 압축되지 않은 데이터 값들을 제외하고, 이를 나타내는 제2값을 가진 메타데이터(2875)를 사용하여 제1항 내지 16항에 따른 상기 방법으로 상기 개별 데이터 블록의 상기 데이터 값들을 부호화하는 단계를 더 포함하는, 데이터 압축 방법. - 제1항 내지 제17항의 한 항에 있어서,
상기 복수의 데이터 블록을 확보하는 단계는 컴퓨터 메모리(C1-C3, M1-Mk; 2410)로부터 메모리 객체를 판독하는 단계를 포함하고, 여기서, 상기 복수의 데이터 블록은 상기 메모리 객체에 포함되고,
상기 데이터 압축 방법은 상기 생성된 메타데이터를 상기 컴퓨터 메모리에 저장하는 단계를 더 포함하는, 데이터 압축 방법. - 제18항에 있어서,
상기 메모리 객체는 상기 컴퓨터 메모리(C1-C3, M1-Mk; 2410)의 페이지인 것을 특징으로 하는, 데이터 압축 방법. - 복수의 데이터 값을 각각 포함하는 확보된 복수의 데이터 블록의 베이스-델타 인코딩을 수행하기 위한 데이터 압축 장치(2300; 205)에 있어서, 여기서 델타값은 데이터 값과 기준값 사이의 차이를 의미하고, 상기 데이터 압축 장치(2300; 205)는:
상기 복수의 데이터 블록의 상기 데이터 값들 중에서, 상기 복수의 데이터 블록에 공통인 글로벌 기준값 세트를 판단하도록 구성된 애널라이저 유닛(2310; 214)―여기서, 상기 글로벌 기준값 세트는 상기 글로벌 기준값 세트의 상기 글로벌 기준값들에 대한 상기 복수의 데이터 블록의 상기 데이터 값들에 대한 델타값들을 최소화하도록 선택됨; 및
상기 글로벌 기준값 세트에서, 개별 데이터 값에 수치적으로 가장 가까우므로 결과적으로 최소 델타값이 되는 글로벌 기준값을 각 개별 데이터 값에 대해 선택함으로써 상기 복수의 데이터 블록의 상기 개별 데이터 값을 부호화하고, 상기 선택된 글로벌 기준값 및 상기 결과적 델타값을 나타내도록 상기 부호화된 개별 데이터 값에 대해 메타테이터를 생성하도록 구성된 인코더 유닛(2320; 212)을 포함하는, 데이터 압축 장치(2300; 205). - 제20항에 있어서,
상기 애널라이저 유닛(2310; 214)은 상기 글로벌 기준값 세트를 판단하도록 구성되고,
상기 글로벌 기준값 세트는:
상기 확보된 복수의 데이터 블록을 분석하여 상기 복수의 데이터 블록 내의 상기 데이터 값에 관한 값 빈도 정보를 확립;
상기 복수의 데이터 블록의 데이터 값들을 각각의 값 빈도와 함께 분류;
N = 1...Nmax 및 B = 1...N의 각 특정 조합에 대해 - 여기서, N은 값 빈(value bin)의 수이고 B는 후보 기준값의 수임:
상기 분류된 데이터 값들을 N개의 빈으로 분리;
최고 누적 값 빈도를 가진 상기 B개의 빈에 대해, 각 빈에 대해 해당 빈에 상기 최고 값 빈도를 가진 상기 데이터 값으로서 후보 기준값을 배정; 및
상기 B개의 빈에 대한 상기 후보 기준값을 활용하여 상기 확보된 복수의 데이터 블록의 상기 데이터 값들의 베이스-델타 인코딩을 수행하여 상기 특정 조합에 대한 베이스-델타 인코딩 압축 비율을 판단;
모든 상기 특정 조합 중에서, 최대 압축 비율을 산출하는 값 빈과 후보 기준값의 조합을 식별; 및
상기 식별된 조합의 상기 후보 기준값들을 상기 글로벌 기준값 세트로 선택하여 판단되는 것을 특징으로 하는, 데이터 압축 장치(2300; 205). - 제20항 또는 제21항에 있어서,
각 글로벌 기준값은 상기 글로벌 기준값 세트에 고유의 기준값 인덱스가 있고, 상기 인코더 유닛(2320; 212)은 상기 기준값 인덱스에 의해 상기 생성된 메타데이터 내에 상기 선택된 글로벌 기준값을 나타냄으로써 상기 복수의 데이터 블록의 상기 개별 데이터 값들을 부호화하도록 구성된 것을 특징으로 하는, 데이터 압축 장치(2300; 205). - 제20항 내지 제22항의 한 항에 있어서,
상기 인코더 유닛(2320; 212)은, 각 데이터 블록 내의 각 데이터 값에 대해, 상기 선택된 기준값에서 기인하는 상기 델타값이 임계값을 초과하는지 여부를 판단하고, 초과하는 경우에, 상기 선택된 글로벌 기준값과 그 결과의 상기 델타값에 의해 상기 데이터 값을 나타내는 대신에, 상기 데이터 값 그 자체를 상기 데이터 값이 압축되지 않았음을 나타내는 지시와 함께 포함할 상기 메타데이터를 생성하여 상기 복수의 데이터 블록의 상기 개별 데이터 값들을 부호화하도록 구성된 것을 특징으로 하는, 데이터 압축 장치(2300; 205). - 제20항 내지 제23항의 한 항에 있어서,
상기 인코더 유닛(2320; 212)은 제7항의 상기 데이터 압축 방법에 정의된 바와 같이 델타값들을 런렝스(run-length) 인코딩하도록 더 구성된 것을 특징으로 하는, 데이터 압축 장치(2300; 205). - 제20항 내지 제23항의 한 항에 있어서,
상기 인코더 유닛(2320; 212)은 제8항의 상기 데이터 압축 방법에 정의된 바와 같이 비트 플레인 압축을 적용하도록 더 구성된 것을 특징으로 하는, 데이터 압축 장치(2300; 205). - 제20항 내지 제25항의 한 항에 있어서,
상기 인코더 유닛(2320; 212)은 제9항 내지 제12항의 상기 데이터 압축 방법에 정의된 바와 같이 상기 확보된 델타값들 중에서 밸류 중복성을 활용함으로써 상기 하나 이상의 베이스-델타 인코딩된 데이터 블록의 제2 단계 데이터 압축을 수행하도록 더 구성된 것을 특징으로 하는, 데이터 압축 장치(2300; 205). - 제22항 내지 제26항의 한 항에 있어서,
상기 인코더 유닛(2320; 212)은 제13항 내지 제16항의 상기 데이터 압축 방법에 정의된 바와 같이 상기 확보된 기준값 인덱스들 중에서 밸류 중복성을 활용함으로써 상기 하나 이상의 베이스-델타 인코딩된 데이터 블록의 제2 단계 데이터 압축을 수행하도록 더 구성된 것을 특징으로 하는, 데이터 압축 장치(2300; 205). - 제20항 내지 제27항의 한 항에 있어서,
컴퓨터 메모리(C1-C3, M1-Mk; 2410)로부터 메모리 객체를 판독하여 상기 메모리 객체에 포함되는 상기 복수의 데이터 블록을 확보하고, 상기 생성된 메타데이터를 상기 컴퓨터 메모리에 저장하도록 구성된 로케이터 유닛(211)을 더 포함하는, 데이터 압축 장치(2300; 205). - 제28항에 있어서,
상기 메모리 객체는 상기 컴퓨터 메모리(C1-C3, M1-Mk; 2410)의 페이지인 것을 특징으로 하는, 데이터 압축 장치(2300; 205). - 제1항 내지 제19항의 한 항에 따른 데이터 압축 방법에 의해 생성된 바와 같은 상기 메타데이터를 확보하는 단계; 및
복수의 데이터 값을 각각 포함하는 복수의 데이터 블록을 상기 확보된 메타데이터에 의해 표현된 상기 글로벌 기준값들과 델타값들로부터 재구성하는 단계를 포함하는, 데이터 압축해제 방법. - 디코더 유닛(213)을 포함하고,
상기 디코더 유닛(213)은 제20항 내지 제29항의 한 항에 따른 상기 데이터 압축 장치(2300; 205)에 의해 생성된 바와 같은 상기 메타데이터를 확보하고 복수의 데이터 값을 각각 포함하는 복수의 데이터 블록을 상기 확보된 메타데이터에 의해 표현된 상기 글로벌 기준값들과 델타값들로부터 재구성하도록 구성된 것을 특징으로 하는, 데이터 압축해제 장치(2430). - 하나 이상의 메모리(2410), 제20항 내지 제29항의 한 항에 따른 데이터 압축 장치(2300; 205; 2420), 및 제31항에 따른 데이터 압축해제 장치(2430)를 포함하는, 시스템(2400).
- 제32항에 있어서,
상기 시스템은 컴퓨터 시스템(200)이고,
상기 하나 이상의 메모리(2410)는 캐시 메모리(C1-C3), RAM(M1-Mk), 보조기억장치, 및 데이터 버퍼를 포함하는 그룹에서 선택되는 것을 특징으로 하는, 시스템(2400). - 프로세싱 장치에 의해 로딩되고 실행되는 경우에 제1항 내지 제19항의 한 항에 따른 상기 데이터 압축 방법의 수행을 유발하는 코드 지시어를 포함하는, 컴퓨터 프로그램 제품.
- 프로세싱 장치에 의해 로딩되고 실행되는 경우에 제30항에 따른 상기 데이터 압축해제 방법의 수행을 유발하는 코드 지시어를 포함하는, 컴퓨터 프로그램 제품.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
SE2051404-8 | 2020-12-01 | ||
SE2051404A SE544557C2 (en) | 2020-12-01 | 2020-12-01 | Systems, methods and devices for exploiting value similarity in computer memories |
PCT/SE2021/051191 WO2022119493A1 (en) | 2020-12-01 | 2021-12-01 | Systems, methods and devices for exploiting value similarity in computer memories |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20230124941A true KR20230124941A (ko) | 2023-08-28 |
Family
ID=81854274
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020237022365A KR20230124941A (ko) | 2020-12-01 | 2021-12-01 | 컴퓨터 메모리에서 밸류 유사성을 활용하는 시스템,방법, 및 장치 |
Country Status (8)
Country | Link |
---|---|
US (1) | US20240028510A1 (ko) |
EP (1) | EP4256710A1 (ko) |
JP (1) | JP2023553832A (ko) |
KR (1) | KR20230124941A (ko) |
CN (1) | CN116529705A (ko) |
CA (1) | CA3203482A1 (ko) |
SE (1) | SE544557C2 (ko) |
WO (1) | WO2022119493A1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12093573B2 (en) * | 2021-01-29 | 2024-09-17 | Intel Corporation | Low-complexity coverage-based compression |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016186563A1 (en) * | 2015-05-21 | 2016-11-24 | Zeropoint Technologies Ab | Methods, devices and systems for hybrid data compression and decompression |
CN108702160B (zh) * | 2016-01-29 | 2022-05-17 | 零点科技公司 | 用于压缩和解压缩数据的方法、设备和系统 |
SE544272C2 (en) * | 2018-11-14 | 2022-03-22 | Zeropoint Tech Ab | Accessing compressed computer memory |
EP3900340A4 (en) * | 2018-12-21 | 2022-08-17 | Zeropoint Technologies AB | EFFECTIVE COMPRESSION AND DECOMPRESSION METHODS, DEVICES AND SYSTEMS TO ACHIEVE HIGHER THROUGHPUT |
SE543186C2 (en) * | 2019-01-11 | 2020-10-20 | Zeropoint Tech Ab | Systems, methods and devices for eliminating duplicates and value redundancy in computer memories |
-
2020
- 2020-12-01 SE SE2051404A patent/SE544557C2/en unknown
-
2021
- 2021-12-01 EP EP21899311.1A patent/EP4256710A1/en active Pending
- 2021-12-01 US US18/254,651 patent/US20240028510A1/en active Pending
- 2021-12-01 CN CN202180080779.0A patent/CN116529705A/zh active Pending
- 2021-12-01 CA CA3203482A patent/CA3203482A1/en active Pending
- 2021-12-01 KR KR1020237022365A patent/KR20230124941A/ko unknown
- 2021-12-01 JP JP2023532372A patent/JP2023553832A/ja active Pending
- 2021-12-01 WO PCT/SE2021/051191 patent/WO2022119493A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2022119493A1 (en) | 2022-06-09 |
CN116529705A (zh) | 2023-08-01 |
JP2023553832A (ja) | 2023-12-26 |
SE544557C2 (en) | 2022-07-12 |
US20240028510A1 (en) | 2024-01-25 |
CA3203482A1 (en) | 2022-06-09 |
SE2051404A1 (en) | 2022-06-02 |
EP4256710A1 (en) | 2023-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200387488A1 (en) | Space efficient vector for columnar data storage | |
CN107925418B (zh) | 用于混合式数据压缩和解压缩的方法、设备和系统 | |
US10862507B2 (en) | Variable-sized symbol entropy-based data compression | |
US20110043387A1 (en) | Data compression using a nested hierachy of fixed phrase length static and dynamic dictionaries | |
US20060106870A1 (en) | Data compression using a nested hierarchy of fixed phrase length dictionaries | |
EP3295568B1 (en) | Improved compressed caching in a virtual memory system | |
KR20230124941A (ko) | 컴퓨터 메모리에서 밸류 유사성을 활용하는 시스템,방법, 및 장치 | |
CN111832257A (zh) | 编码数据的条件转码 | |
KR20210113297A (ko) | 컴퓨터 메모리 내의 복제 및 밸류 중복성을 제거하기 위한 시스템, 방법, 및 장치 | |
US12001237B2 (en) | Pattern-based cache block compression | |
US8373584B2 (en) | Compressing and decompressing data | |
US12124420B2 (en) | Systems, methods and devices for eliminating duplicates and value redundancy in computer memories | |
JP7571026B2 (ja) | コンピュータメモリにおける重複および値冗長性を排除するためのシステム、方法、および装置 | |
Shah et al. | Lightweight Huffman Coding for Efficient GPU Compression | |
Oswald et al. | Text and image compression based on data mining perspective | |
JP2024046000A (ja) | 圧縮装置及び圧縮方法 | |
Velez et al. | Improving bitmap execution performance using column-based metadata | |
US11431995B2 (en) | Memory system | |
US20240204796A1 (en) | Code table generation device, memory system, and code table generation method | |
US20230403027A1 (en) | Dictionary compressor, data compression device, and memory system | |
Lu et al. | ADT-FSE: A New Encoder for SZ | |
CN118860995A (zh) | 数据缩减的方法、装置、设备和存储介质 | |
Sawin et al. | Improving Bitmap Execution Performance Using Column-Based Metadata |