KR102616804B1 - 시맨틱 값 데이터 압축 및 압축해제를 위한 방법, 장치 및 시스템 - Google Patents

시맨틱 값 데이터 압축 및 압축해제를 위한 방법, 장치 및 시스템 Download PDF

Info

Publication number
KR102616804B1
KR102616804B1 KR1020177036797A KR20177036797A KR102616804B1 KR 102616804 B1 KR102616804 B1 KR 102616804B1 KR 1020177036797 A KR1020177036797 A KR 1020177036797A KR 20177036797 A KR20177036797 A KR 20177036797A KR 102616804 B1 KR102616804 B1 KR 102616804B1
Authority
KR
South Korea
Prior art keywords
data
compressed
compression
decompression
mantissa
Prior art date
Application number
KR1020177036797A
Other languages
English (en)
Other versions
KR20180019598A (ko
Inventor
안젤로스 아레라키스
퍼 스텐스트롬
Original Assignee
제로포인트 테크놀로지 에이비
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 제로포인트 테크놀로지 에이비 filed Critical 제로포인트 테크놀로지 에이비
Priority to KR1020237043737A priority Critical patent/KR20240001326A/ko
Publication of KR20180019598A publication Critical patent/KR20180019598A/ko
Application granted granted Critical
Publication of KR102616804B1 publication Critical patent/KR102616804B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • 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/3068Precoding preceding compression, e.g. Burrows-Wheeler transformation
    • H03M7/3071Prediction
    • 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/3068Precoding preceding compression, e.g. Burrows-Wheeler transformation
    • H03M7/3079Context modeling
    • 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
    • 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
    • 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
    • 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
    • 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/6023Parallelization
    • 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/6064Selection of Compressor
    • H03M7/6082Selection strategies
    • H03M7/6088Selection strategies according to the data type

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

데이터 값이 의미론적으로 의미 있는 복수의 데이터 필드를 포함하는 경우에 방법, 장치, 및 시스템이 데이터 값의 압축 및 압축해제를 향상시킨다. 본 발명의 제1 개념에 의하면, 압축이 전체적으로 각 데이터 값에 적용되지 않고, 대신 각 데이터 값의 의미론적으로 의미 있는 데이터 필드의 적어도 하나에 다른 데이터 필드와 별도로 적용된다. 본 발명의 제2 개념에 의하면, 복수의 압축기와 압축해제기를 병렬적으로 이용함으로써, 동일한 의미론적 의미를 공유하는 데이터 필드를 함께 체계화하여 압축과 압축해제를 가속시킨다. 본 발명의 제3 개념에 의한 시스템에서는, 방법과 장치가 부동소수점 수의 의미론적으로 의미 있는 데이터 필드의 적어도 하나를 둘 또는 복수의 서브필드로 분리한 후에 부동소수점 수의 의미론적으로 의미 있는 데이터 필드의 압축 및 압축해제를 수행하여 값 집약성의 정도를 증가시키고 부동소수점 값의 압축성을 향상시킨다.

Description

시맨틱 값 데이터 압축 및 압축해제를 위한 방법, 장치 및 시스템
본 출원의 본 기재는 일반적으로 데이터 압축 및 압축해제 분야에 관한 것으로, 예를 들어, 컴퓨터 시스템의 캐시/메모리 서브시스템 및/또는 데이터 전송 서브시스템 또는 데이터 통신 시스템에서의 데이터 압축 및 압축해제 분야에 관한 것이다.
본 출원은 "데이터 압축 및 압축해제를 위한 방법, 장치 및 시스템"의 명칭으로 2015년 5월 21일에 출원한 스웨덴 특허 출원 번호 1550644-7를 우선권으로 하며, 그 내용이 모두 본 출원에 적용되었다.
데이터 압축은 데이터의 크기를 축소하기 위해 사용되는 정착된 기술로서, 메모리 용량을 증가시키기 위하여 컴퓨터 시스템의 메모리 서브시스템에 저장되는 데이터에 적용된다. 또한 컴퓨터 시스템 내의 상이한 서브시스템 사이에 데이터를 전송하는 경우나 일반적으로 통신 네트워크를 포함하는 데이터 통신 시스템의 두 지점 사이에 데이터를 전송하는 경우에 사용된다.
데이터 압축은 기본적으로 두 가지 동작을 필요로 한다. 1) 압축하지 않은 데이터를 입력 받아서 데이터값을 이에 상응하는 부호어(또는 인코딩, 코딩, 또는 코드)로 대체함으로써 이 데이터를 압축 데이터로 변형하는 압축(또는 부호화), 및 2) 압축 데이터를 입력 받아서 부호어를 이에 상응하는 데이터값으로 대체함으로써 이 데이터를 압축하지 않은 데이터로 변형하는 압축해제(또는 복호화). 데이터 압축은 압축해제 이후의 실제 데이터값이 압축 전의 원래 데이터값과 완전히 동일한지(무손실) 또는 압축해제 이후의 데이터값이 원래 데이터값과 상이하고 원래 데이터값을 가져올 수 없는지(손실) 여부에 따라 무손실 압축 또는 손실 있는 압축일 수 있다. 압축과 압축해제는 이에 상응하는 방법, 장치 및 시스템을 구현하는 소프트웨어, 하드웨어, 또는 소프트웨어와 하드웨어의 조합에서 수행될 수 있다.
컴퓨터 시스템(100)의 일례가 도 1에 도시되었다. 컴퓨터 시스템(100)은 통신 수단, 예를 들어, 상호연결망을 이용하여 기억계층(110)에 연결된 하나 또는 그 이상의 처리부(P1… Pn)를 포함한다. 각 처리부는 프로세서(또는 코어)를 포함하고 CPU(Central Processing Unit), GPU(Graphics Processing Unit) 또는 연산을 수행하는 일반적인 블록일 수 있다. 반면, 기억계층(110)은 컴퓨터 시스템(100)의 저장 서브시스템을 구성하고, 하나 이상의 L1 내지 L3 레벨로 정리될 수 있는 캐시 메모리(120)와 메모리(130)(주메모리)를 포함한다. 메모리(130)는 또한 보조 기억 장치(예, 하드디스크, SSD, 또는 플래시메모리)에 연결될 수 있다. 메모리(130)는 여러 레벨, 예를 들면 고속 주기억장치(예, DDR) 및 플래시메모리로 구성될 수 있다. 본 예시의 캐시메모리(120)는 3단계를 포함하는데, L1과 L2는 P1 내지 Pn의 처리부가 전용 L1/L2 캐시에 연결된 전용 캐시이고, L3는 P1 내지 Pn의 모든 처리부가 공유하는 공유 캐시이다. 다른 예시에서는, 캐시 단계가 더 많거나 적거나 아예 없는 구성, 캐시를 전용 또는 공유로 한정하거나 한정하지 않는 구성, 다양한 메모리 단계, 상이한 수의 처리부 구성, 및 처리부와 메모리 서브시스템 사이의 상이한 일반적 조합 등의, 상이한 캐시 계층을 구현할 수 있는데, 이는 당업자들에 의해 용이하게 구현되고 있다.
데이터 압축은 상이한 방법으로 컴퓨터 시스템에 적용될 수 있다. 도 2는 예를 들어 도 1의 시스템(100)과 같은 컴퓨터 시스템의 일례(200)를 도시한 것으로서, 데이터가 메모리, 예를 들어, 이러한 컴퓨터 시스템의 주기억장치에 압축된다. 이는 앞서 설명한 압축 동작에 의해 데이터가 메모리에 저장되기 전에 압축되고 데이터가 메모리에서 출력될 때 압축해제 됨을 의미한다.
도 3에 도시된 컴퓨터 시스템의 다른 예(300)에서, 데이터 압축은 캐시 시스템의 L3 캐시에 적용될 수 있다. 이전의 예와 유사하게, 데이터가 캐시에 저장되기 전에 압축이 요구되고, 데이터가 캐시에서 출력되기(예, 기타 캐시 단계(L2) 또는 데이터가 압축되지 않는 메모리(330)로) 이전에 압축해제가 요구된다. 다른 예에서, 데이터는 캐시 계층의 모든 계층에서 압축되어 저장될 수 있다.
데이터는 또한 컴퓨터 시스템의 상이한 서브시스템 사이에 전송될 때 압축될 수 있다. 도 4에 도시된 컴퓨터 시스템의 다른 예(400)에서, 데이터는 L3 캐시와 메모리(430) 사이에서 상응하는 통신 수단을 사용하여 전송될 때 압축된다. 이전의 예와 유사하게, 데이터가 전송되기 이전에 압축되고 반대편에서 수신될 때 압축해제되도록 압축과 압축해제가 통신수단의 양 편에 존재해야 한다.
컴퓨터 시스템의 다른 예(500)에서, 데이터 압축은 도 5에 도시된 바와 같은 서브 시스템의 조합에 적용될 수 있다. 본 예에서, 데이터는 메모리(530)에 저장되는 경우 및 메모리(530)와 캐시 계층(520) 사이에서 전송되는 경우에 압축된다. 이에 따라, 데이터가 캐시 계층(520)으로부터 메모리(530)으로 이동되는 경우, 데이터는 L3 캐시로부터 전송되기 전에만 압축되면 된다. 또는, 메모리(530)로부터 캐시 계층(520)으로 출력되는 압축데이터는 메모리(530)와 캐시 계층(520)을 연결하는 통신수단의 반대편에 수신될 때에 압축해제 하기만 하면 된다. 컴퓨터 시스템의 상이한 서브 시스템에 압축을 적용하는 조합에 관하여, 모든 예가 가능하고 당업자에 의해 구현될 수 있다.
데이터의 전송은 통신망 내의 임의의 두 지점 사이에 일어날 수 있다. 도 6은 데이터가 송신기(610)에 의해 전송되고 수신기(620)에 의해 수신되는 두 지점 사이의 통신망(605)을 포함하는 데이터 통신 시스템(600)의 일례를 도시한 것이다. 이러한 예에서, 이러한 지점들은 네트워크의 두 중간 노드이거나 통신 링크의 소스 노드(source node)와 목적지 노드(destination node), 또는 이들의 조합일 수 있다. 데이터 압축은 도 7에 도시된 예시적인 시스템(700)과 같은 데이터 통신 시스템에 적용될 수 있다. 압축은 데이터가 송신기(710)에 의해 통신망(705)으로 송신되기 전에 적용되어야 하고 압축해제는 데이터가 수신기(720)에 의해 수신된 후에 적용되어야 한다.
데이터 압축을 구현하는 상이한 알고리즘은 다양하다. 데이터 압축 알고리즘의 한 부류는 통계적 압축 알고리즘으로서, 이는 데이터 의존적이며, 데이터 값의 통계적 성질에 기반하여 가변 길이(또는 가변 폭) 코드를 할당하기 때문에 엔트로피(entropy)에 근사한 압축 효율을 제공할 수 있다. 즉, 빈번하게 등장하는 데이터값의 부호화에는 짧은 부호어(codewords)가 사용되고, 빈번하게 등장하지 않는 데이터값의 부호화에는 긴 부호어(codewords)가 사용된다. 알려진 통계적 압축 알고리즘으로는 허프만 인코딩(Huffman encoding)이 있다.
압축해제를 가속하기 위해 사용되는 허프만 인코딩의 알려진 한 변형은 정규화(canonical) 허프만 인코딩이다. 이에 근거하여, 부호어(codewords)는 수열 특성을 가지게 되며, 이는 동일한 길이의 부호어(codewords)는 연속적인 정수임을 의미한다.
정규화 허프만 기반 압축 및 압축해제 방법의 예는 선행기술에 제시돼 있다. 이러한 압축 및 압축해제 방법은 앞서 설명한 예시에서 사용되어 허프만 기반 압축 및 압축해제를 구현할 수 있다.
정규화 허프만 인코딩과 같은 허프만 인코딩을 실행하는 선행기술의 압축기(900)의 일례가 도 9에 도시되어 있다. 압축기(900)는 데이터값의 스트림이고 본 명세서 전반에 걸쳐 v1, v2, … vn으로 나타낸 하나 또는 복수의 데이터값을 포함하는 압축되지 않은 블록을 입력으로 취한다. 저장부 또는 압축되지 않은 블록으로부터의 데이터값의 추출기일 수 있는 단위(910)는 가변 길이 부호화부(920)에 데이터값을 공급한다. 가변 길이 부호화부(920)는 부호 테이블(CT)(922)과 부호어(CW) 선택기(928)을 포함한다. CT(922)는 룩업테이블(Look Up Table 또는 LUT) 또는 (임의의 결합 관계의) 컴퓨터 캐시 메모리로 실현될 수 있고 하나 또는 복수의 항목을 포함하는 표이다. 여기서, 각 항목은 부호어, CW(925), 및 부호어 길이(cL)(927)를 이용하여 압축될 수 있는 값(923)을 포함한다. 통계적 압축 알고리즘에 사용되는 다양한 부호어의 집합은 가변 길이이기 때문에, 각 항목이 고정 크기 폭(부호어(925))인 CT(922)에 부호어가 저장되는 경우, 숫자 0으로 채워넣어야 한다. 부호어 길이(927)는 가변 길이 인코딩의 실제 길이(예, 비트 단위)를 유지한다. CW 선택기(928)는 실제 CW를 식별하고 채워넣은 0을 폐기하기 위해 cL을 이용한다. 이후, 부호화된 값은 함께 압축된 블록을 형성하는 나머지 압축된 값과 연결된다. 앞서 설명한 바와 같은 압축 단계를 수행하는 압축 방법의 순서도의 예시가 도 11에 도시되어 있다.
선행기술의 압축해제기(1000)의 일례가 도 10에 도시되어 있다. 정규화 허프만 압축해제는 부호어 감지와 값 검색의 두 단계로 나뉘어질 수 있다. 각 단계는 (1) 부호어 감지부(CDU)(1020)와 (2)값 검색부(VRU)(1030)에 의해 수행된다. CDU(1020)의 목적은 압축된 시퀀스(즉, 압축된 데이터값의 부호어의 시퀀스) 내에서 유효한 부호어를 찾는 것이다. CDU(1020)는 한 세트의 비교기(1022)와 우선순위 인코더(1024)를 포함한다. 각 비교기(1022a, b, c)는 각 잠재적 비트 시퀀스를 알려진 부호어와 비교하는데, 본 예에서 알려진 부호어는 특정 길이에 대한 최초에 지정된(부호 생성시에) 정규화 허프만 부호어(FCW)이다. 다른 방식의 구현에서는, 최후에 지정된 정규화 허프만 부호어가 사용될 수 있지만, 이 경우 정확한 비교는 다를 수 있다. 저장부(1010)(예를 들어 FIFO 또는 플립플롭으로 구현)에 저장될 수 있고 비교기의 개수와 가장 넓은 비교기의 최대 폭을 결정하는, 상기 비교할 비트 시퀀스의 최대 크기는 부호 생성시에 결정되는 유효 허프만 부호어의 최대 길이(mCL)에 따라 결정된다. 그러나, 이러한 최대 길이는 이러한 압축해제기의 구현 선택(예, 소프트웨어 또는 하드웨어)에 따라 달라지는 설계, 컴파일, 구성, 또는 런타임에 의거한다. 비교기(1022)의 출력은 일치된 부호어의 길이(도 10에 "일치 길이"로 표시)를 출력하는 우선순위 인코더와 같은 구조(1024)로 입력된다. 이에 따라, 감지된 유효 부호어(일치 부호어)가 저장부(1010)에 저장된 비트 시퀀스로부터 추출되고, CDU(1020)가 다음 유효 부호어를 결정할 수 있도록 비트 시퀀스는 "일치 길이"가 정의하는 만큼의 위치 이동을 하고 빈 부분은 압축된 시퀀스의 다음 비트로 채워진다.
반면, 값 검색부(VRU)(1030)는 오프셋 표(1034), 감산부(1036), 및 압축해제 룩업테이블(DeLUT)(1038)을 포함한다. 감지된 부호어에 상응하는 원 데이터 값을 가져올 수 있고 압축해제된 블록(1040)에 보관된 나머지 압축해제 값에 첨부될 수 있는 DeLUT(1038)의 주소를 획득하기 위하여, 이전 단계의 "일치 길이"를 이용하여 역시 이전 단계에서 판단된 일치된 부호어의 산술값으로부터 감산(1036)해야 하는 오프셋 값(오프셋 표(1034)에 저장)을 판단한다. 압축해제기의 연산은 입력 압축 시퀀스(도 10에 압축된 블록으로 도시)에 압축 상태로 저장된 모든 값을 압축되지 않은 데이터 값(v1, v2, … vn)으로 가져올 때까지 반복된다.
앞서 설명한 압축해제 단계를 수행하는 압축해제 방법의 예시적인 순서도가 도 12에 도시되어 있다.
앞서 설명한 압축기와 압축해제기는 신속하고 효율적으로 가변 길이 허프만 인코딩으로 데이터 블록을 압축할 수 있고 가변 길이 허프만 인코등으로 압축된 데이터 블록을 압축해제할 수 있다. 델타 기반, 패턴 기반 등과 같은 기타 압축 및 압축해제 알고리즘을 실행하는 압축기와 압축해제기를 포함하는 기타 압축 스키마(scheme)도 사용될 수 있다. 이러한 스키마의 공통적인 특징은 값 집약성(value locality)에 대한 설계 - 시간 가정을 하여 압축 및/또는 압축해제 지연을 감소시킨다는 것이다. 값 집약성은 고정 크기 데이터 유형(예, 32비트 정수)에 의해 가장 잘 활용된다는 것이 일반적인 가정이다. 그러나, 이러한 스키마는 압축할 값이 의미론적으로 의미 있는 데이터 필드를 포함하는 경우 효과적인 압축을 할 수 없다. 본 발명자들은 데이터 압축과 압축해제의 기술분야에 개량의 여지가 있음을 인식하였다.
본 발명의 목적은 데이터 압축과 압축해제의 기술분야에 개량을 제공하기 위한 것이다.
본 발명은 압축이 예를 들어 컴퓨터 시스템 및/또는 데이터 통신 시스템의 캐시 서브시스템 및/또는 메모리 서브시스템 및/또는 데이터 전송 서브시스템에 적용되는 경우에 데이터 값의 데이터 세트를 압축하고 데이터 값의 압축된 데이터 세트를 압축해제하기 위한 방법, 장치 및 시스템을 기재한다. 상기 시스템에서 예를 들어 엔트로피 기반 가변 길이 인코딩을 사용하여 데이터를 효과적으로 압축하는 다양한 방법, 장치 및 시스템이 있으며, 그 중의 한 방법이 허프만 인코딩을 사용하는 것이다. 그러나, 상기 방법, 장치 및 시스템은 상기 데이터 세트의 데이터값이 의미론적으로 의미 있는 복수의 데이터 필드를 포함하고 있는 경우 효과적인 압축을 하지 않는다.
따라서, 본 발명의 제1 개념에 의하면, 압축된 데이터 필드를 생성하기 위하여, 압축이 전체적으로 각 데이터 값에 적용되지 않고, 대신 각 데이터 값의 의미론적으로 의미 있는 데이터 필드의 적어도 하나에 의미론적으로 의미 있는 다른 데이터 필드와 별도로 적용된다. 이후, 압축된 데이터 필드는 산출된 압축된 데이터 세트의 집계에 포함된다.
제 2 개념에 의하면, 동일한 의미론적 의미를 공유하는 데이터 필드가 함께 집합된다. 복수의 압축기 및 압축해제기가 병렬적으로 이용될 수 있음에 따라, 압축 및 압축해제의 속도가 증가될 수 있고, 다양한 압축 알고리즘을 이용하여 상이한 그룹을 압축함에 따라, 압축 효율이 향상될 수 있다.
본 발명의 제3 개념에 의한 시스템에서, 방법과 장치는 부동소수점 수의 의미론적으로 의미 있는 데이터 필드(예, 가수)의 적어도 하나를 둘 또는 복수의 서브필드로의 분리를 우선 고려한 후에 부동소수점 수의 의미론적으로 의미 있는 데이터 필드의 압축과 압축해제를 수행하여 값 집약성을 증가시키고 압축성을 향상시킨다. 이러한 부동소수점에 관한 압축과 압축해제 방법 및 장치는 부동소수점 값의 서브필드를 효과적으로 압축하고 압축 및 압축해제의 지연을 감소시키도록 구성되는데, 이는 메타데이터로 인한 영역 오버헤드를 방지하면서 컴퓨터 시스템 및/또는 통신망의 캐시 서브시스템 및/또는 메모리 서브시스템 및/또는 데이터전송 서브시스템의 성능에 매우 중요하다.
본 발명의 제1 측면은 복수의 데이터 값을 포함하는 압축되지 않은 데이터 세트를 압축된 데이터 세트로 압축하기 위한 데이터 압축장치를 제공한다. 상기 데이터 압축장치는 상기 데이터 세트의 각 데이터 값을 의미론적으로 의미 있는 복수의 데이터 필드로 분리하도록 구성된 분리기를 포함한다. 상기 데이터 압축장치는 또한 하나 또는 그 이상의 압축부를 포함하는 압축기를 포함한다. 여기서, 상기 압축부 중의 제1 압축부는 각 데이터 값의 상기 의미론적으로 의미 있는 데이터 필드의 적어도 하나에 대해 상기 데이터 값의 상기 의미론적으로 의미 있는 데이터 필드의 다른 데이터 필드와 별도로 제1 데이터 압축 스키마를 적용하여 압축된 데이터 필드를 생성하도록 구성된다. 상기 데이터 압축장치는 또한 상기 압축된 데이터 필드를 산출된 압축된 데이터 세트의 집계에 포함시켜 상기 압축된 데이터 세트를 생성하도록 구성된 집계기를 포함한다. 상기 데이터 압축장치는 데이터 값 계층보다는 데이터 필드 계층에서 값 집약성을 사용할 수 있게 함으로써 향상된 데이터 압축을 제공한다.
본 발명의 제2 측면은 복수의 데이터 값을 포함하는 압축되지 않은 데이터 세트를 압축된 데이터 세트로 압축하기 위한 데이터 압축 방법을 제공한다. 본 데이터 압축 방법은: 상기 데이터 세트의 각 데이터 값에 대해, 상기 데이터 값을 의미론적으로 의미 있는 복수의 데이터 필드로 분리하는 단계; 각 데이터 값의 상기 의미론적으로 의미 있는 데이터 필드의 적어도 하나에 대해, 상기 데이터 값의 상기 의미론적으로 의미 있는 다른 데이터 필드와 별도로 제1 데이터 압축 스키마 적용하여 압축된 데이터 필드를 생성하는 단계; 및 산출된 압축된 데이터 세트의 집계에 상기 압축된 데이터 필드를 포함시켜 상기 압축된 데이터 세트를 생성하는 단계를 포함한다. 상기 데이터 압축 방법은 데이터 값 계층보다는 데이터 필드 계층에서 값 집약성을 사용할 수 있게 함으로써 향상된 데이터 압축을 제공한다.
본 발명의 제3 측면은 처리 장치에 의해 로드 되고 실행되는 경우 상기 제2 측면에 따른 방법이 수행되도록 하는 코드 명령을 포함하는 컴퓨터 프로그램 제품을 제공한다.
본 발명의 제4 측면은 상기 제2 측면에 따른 방법을 수행하도록 구성된 로직 회로를 포함하는 장치를 제공한다.
본 발명의 제5 측면은, 적어도 하나의 데이터 필드는 의미론적으로 의미 있는 다른 데이터 필드와 별도로 압축된, 의미론적으로 의미 있는 복수의 데이터 필드를 각각 포함하는 데이터 값을 나타내는, 압축된 데이터 세트를 압축해제된 데이터 세트로 압축해제 하기 위한 데이터 압축해제 장치를 제공한다. 상기 데이터 압축해제 장치는 하나 또는 그 이상의 압축해제부를 포함하는 압축해제기를 포함한다. 여기서, 상기 압축해제부 중의 제1 압축해제부는 각 데이터 값의 상기 적어도 하나의 압축된 데이터 필드에 대해 제1 데이터 압축해제 스키마를 적용하여 압축해제된 데이터 필드를 생성하도록 구성된다. 상기 데이터 압축해제 장치는 또한 각 압축해제된 데이터 필드를 상기 압축해제된 데이터 세트의 산출된 데이터 값에 포함시켜 상기 압축해제된 데이터 세트를 생성하도록 구성된 메커니즘을 포함한다.
본 발명의 제6 측면은, 적어도 하나의 데이터 필드는 의미론적으로 의미 있는 다른 데이터 필드와 별도로 압축된, 의미론적으로 의미 있는 복수의 데이터 필드를 각각 포함하는 데이터 값을 나타내는, 압축된 데이터 세트를 압축해제된 데이터 세트로 압축해제 하기 위한 데이터 압축해제 방법을 제공한다. 상기 데이터 압축해제 방법은: 각 데이터 값의 상기 적어도 하나의 데이터 필드에 대해, 제1 데이터 압축해제 스키마를 적용하여 압축해제된 데이터 필드를 생성하는 단계; 및 압축해제된 각 데이터 필드를 상기 압축해제된 데이터 세트의 산출된 데이터 값에 포함시켜 상기 압축해제된 데이터 세트를 생성하는 단계를 포함한다.
본 발명의 제7 측면은 처리 장치에 의해 로드 되고 실행되는 경우 상기 제6 측면에 따른 방법이 수행되도록 하는 코드 명령을 포함하는 컴퓨터 프로그램 제품을 제공한다.
본 발명의 제8 측면은 상기 제6 측면에 따른 방법을 수행하도록 구성된 로직 회로를 포함하는 장치를 제공한다.
본 발명의 제9 측면은 하나 또는 그 이상의 메모리, 상기 제1 측면에 따른 데이터 압축장치, 및 상기 제5 측면에 따른 데이터 압축해제 장치를 포함하는 시스템을 제공한다.
본 발명의 실시예뿐만 아니라 배경기술의 예시가 하기의 도면을 참조하여 설명되었다.
도 1은 각각 3단계의 캐시 계층과 주메모리에 연결된 n 처리 코어를 포함하는 컴퓨터 시스템의 구성도이다.
도 2는 도 1의 구성도에서 주메모리가 데이터를 압축된 형태로 저장하는 것을 도시한 것이다.
도 3은 도 1의 구성도에서 L3 캐시가 데이터를 압축된 형태로 저장하는 것을 도시한 것이며, 기타 캐시 단계도 데이터를 압축된 형태로 저장할 수 있다.
도 4는 도 1의 구성도에서 데이터가 통신 수단에서 압축되는 것, 예를 들면, 데이터가 메모리와 캐시 계층 사이에서 전송되는 경우를 도시한 것이다.
도 5는 도 1의 구성도에서 압축이 주메모리와 메모리와 캐시 계층을 연결하는 링크에 적용될 수 있는 경우를 도시한 것이다. 일반적으로, 압축은 캐시 계층, 전송 수단(예, 메모리와 캐시 서브시스템을 연결하는 링크), 및 주메모리와 같은 부품의 모든 조합에 적용될 수 있다.
도 6은 통신망의 두 지점을 연결하는 데이터 전송 링크의 구성도를 도시한 것이다. 이 지점들은 네트워크의 두 중간 노드이거나 통신 링크의 소스 노드와 목적지 노드, 또는 이들의 조합일 수 있다.
도 7은 도 6의 데이터 전송 링크의 구성도에서 전송된 데이터가 송신기에서 압축되고 수신기에서 압축해제 되어야 하도록 압축된 형태로 전송되는 것을 도시한 것이다.
도 8은 데이터값의 압축되지 않은 블록을 좌측에 도시하고 허프만 인코등을 이용하여 생성된 가변 길이 인코딩을 이용하여 압축된 동일 블록을 우측에 도시한 것이다. 압축되지 않은 블록의 모든 데이터값은 상응하는 허프만 부호어에 의해 대체된다.
도 9는 도 8에 도시된 바와 같이 허프만 인코등을 사용하여 블록을 압축(또는 부호화)하기 위해 사용되는 압축기를 도시한 것이다.
도 10은 정규화 허프만 인코딩을 사용하여 압축된 블록을 복호화(또는 압축해제)하기 위해 사용되는 압축해제기를 도시한 것이다.
도 11은 가변 길이 인코딩(예, 허프만)을 이용하여 블록을 압축하기 위한 압축 방법의 예시적인 순서도를 도시한 것이다.
도 12는 가변 길이 인코딩(예, 정규화 허프만)을 이용하여 압축된 블록을 압축해제 하기 위한 압축해제 방법의 예시적인 순서도를 도시한 것이다.
도 13은 복수의 64비트 배정밀도 부동 소수점값을 포함하는 데이터 세트에서 각 값이 IEEE-754 표준에 따라 3개의 의미론적 비트 필드(기호, 지수, 및 가수)를 더 포함하는 것을 도시한 것이다.
도 14는 데이터 구조 형식에 따른 특정 데이터 유형의 복수의 값을 포함하는 데이터 세트를 도시한 것으로서, 각 값은 알려진 유형의 3개의 의미론적 비트 필드를 더 포함한다.
도 15는 도 14의 데이터 세트의 모든 값의 3개의 의미론적 비트 필드를 우선 3개의 그룹으로 분류함으로써 압축하는 예시적인 데이터 압축 장치의 구성도를 도시한 것이다.
도 16은 도 15의 데이터 압축 장치의 실시예에 의해 사용될 수 있는 의미론적 비트 필드 분류기 방법의 예시적인 순서도를 도시한 것이다.
도 17은 도 14의 데이터 세트의 모든 값의 압축된 의미론적 비트 필드를 압축해제 한 후 초기 데이터 세트를 재구성하는 예시적인 데이터 압축해제 장치의 구성도를 도시한 것이다.
도 18은 도 17의 데이터 압축해제 장치의 실시예에 의해 사용될 수 있는 초기 데이터 세트 재구성 방법의 예시적인 순서도를 도시한 것이다.
도 19는 다양한 데이터 유형의 복수의 값을 포함하는 데이터 값의 블록을 도시한 것이다.
도 20은 데이터 세트의 부동 소수점 값을 4개의 서브필드로 분리하는 예시적인 데이터 압축 장치의 구성도를 도시한 것으로서, 3개의 서브필드는 IEEE-754 표준에 따른 의미론적 비트 필드에 기반하고, 하나의 서브필드(예, 가수)는 더 높은 차원의 값 집약성이 밝혀짐에 따라 다시 두 개의 서브필드, 예를 들어, mantissa-High와 mantissa-Low로 분리된다. 본 데이터 압축 장치는 지수, mantissa-High, 및 mantissa-Low를 압축한다.
도 21은 압축해제를 가속하도록 4 그룹의 압축 서브필드 중에서 3 그룹을 압축해제하는 예시적인 데이터 압축해제 장치의 구성도를 도시한 것이다.
도 22A는 본 발명에 따른 일반적인 데이터 압축 장치를 도시한 것이다.
도 22B는 도 22A의 일반적인 데이터 압축 장치의 변형을 도시한 것이다.
도 23은 본 발명에 따른 일반적인 데이터 압축 방법을 도시한 것이다.
도 24는 본 발명에 따른 일반적인 데이터 압축해제 장치를 도시한 것이다.
도 25는 본 발명에 따른 일반적인 데이터 압축해제 방법을 도시한 것이다.
도 26은 본 발명에 따른 데이터 압축 장치와 데이터 압축해제 장치를 포함하는 일반적인 시스템을 도시한 것이다.
기재된 실시예의 기타 측면, 목적, 특징 및 이점은 하기의 상세한 설명, 첨부된 종속항 및 도면으로부터 이해될 수 있을 것이다. 일반적으로, 청구항에 사용된 모든 용어는, 여기에 명시적으로 다르게 정의하지 않는 한, 본 기술 분야의 일반적인 의미에 따라 해석되어야 한다.
구성요소, 장치, 요소, 수단, 단계 등에 관한 모든 표현은, 여기에 명시적으로 다르게 설명하지 않는 한, 이러한 구성요소, 장치, 요소, 수단, 단계 등의 적어도 한 경우를 의미하는 것으로 개방적으로 해석되어야 한다. 여기에 기재된 모든 방법의 단계들은, 다르게 설명하지 않는 한, 반드시 기재된 순서대로 수행되지 않아도 된다.
본 발명은 압축이 컴퓨터 시스템 및/또는 데이터 통신 시스템의 캐시 서브시스템 및/또는 메모리 서브시스템 및/또는 데이터 전송 서브시스템에 적용되는 경우에 데이터 값의 하나 또는 그 이상의 데이터 세트를 압축하고 데이터 값의 하나 또는 그 이상의 압축된 데이터 세트를 압축해제하기 위한 방법, 장치 및 시스템을 기재한다. 상기 각 데이터 세트는 특정 데이터 유형의 하나 또는 복수의 데이터 값을 포함하고 임의의 크기일 수 있다. 데이터 세트의 각 데이터 값은 복수의 의미론적으로 의미 있는 데이터 필드를 포함한다. 여기에 기재된 방법, 장치, 및 시스템에서, 압축은 데이터 값에 전체적으로 적용되지 않고, 대신 각 데이터 값의 의미론적으로 의미 있는 데이터 필드의 적어도 하나에 적용되고, 압축된 데이터 필드를 생성하기 위하여 데이터 값의 의미론적으로 의미 있는 다른 데이터 필드와 별개로 적용된다. 이후, 압축된 데이터 필드는 산출된 압축된 데이터 세트의 집계에 포함된다. 적용된 압축은 무손실 또는 손실 압축일 수 있으며, 다양한 압축 방법, 장치, 및 시스템을 이용하여 의미론적으로 의미 있는 다양한 데이터 필드를 압축할 수 있다.
의미론적으로 의미 있는 모든 데이터 필드가 압축되어야 하는 것은 아니다. 바람직하게, 의미론적으로 의미 있는 데이터 필드의 값 집약성이 고려되고, 의미론적으로 의미 있는 데이터 필드 중에 고차원의 값 집약성을 나타내는 데이터 필드에 값 집약성에 기반한 양호한 압축성을 산출하기에 적합한 데이터 압축이 적용된다.
데이터 유형은 정수, 부동 소수점, 문자, 스트링 등일 수 있고, 또는 코드 명령일 수 있지만, 데이터 구조 유형, 객체 유형 등의 추상 데이터 유형일 수도 있다. 일부 데이터 유형의 데이터는 특정 형식, 예를 들면, 비디오 형식, 오디오 형식, 또는 특정 표준을 따를 수 있고, 예를 들어, ASCII 형식을 따르는 문자, IEEE-754 표준을 따르는 부동 소수점 데이터 등이 이에 해당될 수 있다. 도 13의 예시적인 데이터 세트는 IEEE-754 표준에 의거한 형식을 따르는 배정밀도의 4 부동 소수점 값을 포함한다. 이 표준에 의하면, 부동 소수점 데이터 값은 3개의 데이터 필드, 즉, 기호, 지수, 및 가수(유효수)를 포함한다. 이 비트 필드의 폭은 선택된 정밀도에 따라 달라진다. 배정밀도가 선택된 도 13의 예시적인 실시예에서, 기호 비트 필드는 1 비트이고, 지수 비트 필드는 11 비트이며, 가수 비트 필드는 52 비트이다. 데이터 세트의 값의 기호 및 지수 비트 필드가 가수 비트 필드에 비해 전형적으로 높은 값 집약성을 나타내므로 기호 및 지수 비트 필드에 압축이 적용되도록 결정할 수 있다. 기타 표준을 따르는 부동 소수점 값의 다른 데이터 세트도 고려될 수 있다. 특정 표준을 따르는 특정 유형의 값을 포함하는 또 다른 데이터 세트에는 유니코드 표준(예, UTF-8, UTF-16)에서 정의된 바와 같은 텍스트 유형이 있다.
8개의 값을 포함하는 다른 대안적인 데이터 세트가 도 14에 도시되어 있다. 각 값은 데이터 구조(즉, 추상 데이터 유형)이고 세 개의 필드, 즉, 단 정수(short integer) 유형의 비트 필드(16 비트), 문자 비트 필드(8 비트), 및 불 방식(Boolean) 유형의 비트 필드를 포함한다. 앞서 설명한 실시예와 유사하게, 값 집약성에 따라 모든 필드 또는 모든 필드의 부분집합에 압축이 적용되도록 선택될 수 있다.
산출된 압축된 데이터 세트의 집계는 상이한 데이터 값으로부터 동일한 의미론적 의미를 공유하는 압축된 데이터 필드를 모음으로써 생성되어 압축된 데이터 필드가 산출된 압축된 데이터 세트의 집계에서 서로 인접하게 보이도록 할 수 있다. 이에 따라, 압축 효율이 향상되고, 압축과 특히 압축해제를 가속할 수 있을 뿐만 아니라, 상이한 데이터 필드가 상이한 방법, 장치 및 시스템을 사용하여 압축될 수 있으므로 상이한 부호화를 사용하고 따라서 상이한 압축기와 압축해제기가 필요하기 때문에 메타데이터와 전체적인 복잡성을 상당히 줄일 수 있다. 특히, 동일한 데이터 필드의 압축된 데이터가 서로 인접해 보이는 경우, 다양한 압축해제기 사이에서 전환하거나 단일 압축해제기가 복수의 비트 필드를 압축해제할 수 있도록 복잡하게 설계할 필요 없이 동일한 압축해제기를 사용하면 된다. 나아가, 상이한 압축된 필드의 압축해제기들을 병렬적으로 사용하여 압축해제 처리율을 향상시킬 수 있다.
이하, 앞서 설명한 내용에 따라 동작하도록 구성된 데이터 압축 장치와 데이터 압축해제 장치의 특정 실시예에 대해 도 15 내지 도 21을 참조하여 설명하도록 한다. 이후, 도 15 내지 도 21에 도시된 특정 실시예에서 일반화된 발명의 일반적인 측면을 도 22 내지 도 26을 참조하여 설명하도록 한다.
동일한 의미론적 의미를 공유하는 압축되지 않은 데이터 세트(1510)의 데이터 필드를 함께 묶은 후 다양한 그룹을 각각 별개로 압축함으로써 도 14의 예시적인 데이터 세트를 압축하는 데이터 압축 장치(1500)의 일 실시예의 구성도를 도 15에 도시하였다. 데이터 압축 장치(1500)는 시맨틱 비트 필드 분류기(1510) 형태의 분리기, 다양한 그룹에 대한 저장부(1524), 하나 또는 복수의 데이터 압축부(1530)(본 명세서에서 압축기 또는 압축기 엔진으도 지칭), 및 연결부(1540) 형태의 집계기를 포함한다. 초기 데이터 세트는 우선 시맨틱 비트 필드 분류기(1520)로 입력된다. 분류기(1520)는 또한 데이터 세트의 값이 포함하고 있는 시맨틱 비트 필드의 수와 상이한 시맨틱 비트 필드의 크기를 입력(1522, 1523)으로 취한다. 분류기(1520)의 동작에 대해서는 도 16의 예시적인 방법에서 상세히 설명한다. 분류기(1520)의 출력은 저장부(1525)에 저장된 복수의 그룹의 압축되지 않은 비트 필드이다. 본 실시예에는 3 그룹의 비트 필드가 있다. 즉, 1) 단 (정수) 필드 그룹(저장부(1525a)에 저장), 2) 문자 필드 그룹(저장부(1525b)에 저장), 및 3) 불 형식(Boolean) 필드 그룹(저장부(1525c)에 저장)이 있다. 다양한 그룹의 비트 필드가 복수의 압축기(1530)에 의해 압축된다. 각 압축기는 특정 그룹을 부호화 하고 이 그룹에 적합한 특정 압축 알고리즘(즉, 스키마)을 실행할 수 있다. 따라서, 압축기 S(1530a)는 단 정수 비트 필드 그룹을 압축하고, 압축기 C(1530b)는 문자 필드 그룹을 압축하며, 압축기 B(1530c)는 불 형식 필드 그룹을 압축한다. 이 압축기들은 무손실 또는 손실 압축 알고리즘(스키마)을 실행하거나, 유형을 추측하거나 이 유형에 대한 정보를 제공함으로써 비트 필드의 정확한 목표 유형에 근거하여 다양한 압축 알고리즘 중에서 적절하게 구성될 수 있다.
일부 실시예에서, 의미론적으로 의미 있는 데이터 필드가 특정 그룹의 비트 필드에 대한 효율적인 압축에 적합하지 않다고 판단되거나 또는 다른 이유가 있는 경우, 입력 파라미터(1532a, 1532b, 1532c)(도 15에 "Cmp?"로 표시)를 적절하게 설정함으로써, 압축기(1530a, 1530b, 1530c)가 이 특정 그룹을 전혀 압축하지 않도록 구성될 수 있다. 결국, 압축된 비트 필드 그룹은 연결부(1540)에 의해 연결되어 도 15의 하단에 도시된 압축된 데이터 세트(1590)을 형성한다. 따라서, 각각 상응하는 압축부(압축기)( 1530a, 1530b, 1530c)에 의해 적용된 압축 스키마의 결과로, 압축된 데이터 세트(1590)는 단 정수 데이터 유형의 데이터 필드의 압축된 그룹(1542a)에 이어 문자 데이터 유형의 데이터 필드의 압축된 그룹(1542b)과 불 형식 데이터 유형의 데이터 필드의 압축된 그룹(1542c)까지 포함한다.
도 15의 실시예에 의한 데이터 압축 장치(1500)의 분류기(1520)에 의해 수행되는 시맨틱 비트 필드 분류기 방법의 예시적인 순서도를 도 16에 도시하였다. 본 방법은 B 값을 포함하는 데이터 세트, 시맨틱 비트 필드의 크기(비트 단위로 측정), 및 각 값이 포함하는 시맨틱 비트 필드의 수(A)를 입력으로 취한다. 본 방법의 출력은 AxB 크기의 2차원 어레이로 조직된 시맨틱 비트 필드의 그룹들이다. 데이터 세트 i의 각 값에 대해, 각 비트 필드 j가 상기 값으로부터 상호작용 방식으로 추출한다. 각 값에 대한 비트 필드 추출은 순차적일 수 있고, 또는 시맨틱 비트 필드의 크기를 미리 알고 있기 때문에 병렬적일 수 있다. 유사하게, 복수의 값에 대한 비트 필드 추출은 순차적이거나 병렬적일 수도 있다. 본 분류기 방법을 도 14의 데이터 세트의 값의 시맨틱 비트 필드를 그룹으로 분류하기 위해 이용한다고 가정하면, 시맨틱 비트 필드의 수(A)는 3이고(단 정수, 문자, 및 불 형식), 데이터 세트 값의 수(B)는 8이다. 목표하는 실행에 따라, 본 분류기 방법은 당업자에 의해 소프트웨어 또는 로직 회로로 구현될 수 있다. 본 방법의 다른 실시예들도 당업자에 의해 구현될 수 있다.
시맨틱 비트 필드의 수와 크기를 포함하고 분류기(예, 도 15의 1520)가 필요로 하는 정보(예, 도 15의 1522, 1523)는, 시맨틱 비트 필드를 포함하는 데이터 세트가 데이터 구조인 예시적인 일 실시예에서, 응용 프로그램 2진(application binary) 또는 프로그램 언어 기본단위(programming language primitives)로부터 추출될 수 있다. 이후, 이 예시적인 실시예가 컴퓨터 시스템의 캐시 서브시스템 및/또는 메모리 서브시스템 및/또는 데이터 전송 서브시스템에 적용되는 압축기인 경우, 추출된 정보는 언더라인 하드웨어로의 시스템소프트웨어에 의한 특수 명령 등을 통해 분류기로 제공된다. 다른 실시예에서, 압축기가 미디어 데이터(예, 예시적인 비디오 형식을 따르는 데이터)에 상응하는 데이터에 적용되는 경우, 상기 정보는 미디어센터로 제공될 수 있다. 또다른 실시예에서, 상기 압축기가 특정 표준 또는 형식, 예를 들어, IEEE-754 표준에 의거한 부동소수점 데이터를 따르는 경우, 상기 정보는 이러한 표준에 기반하여 생성될 수 있다. 압축기 엔진이 복수의 압축 알고리즘 중의 하나로 구성될 수 있는 실시예에서, 상기 시맨틱 비트 필드의 데이터 유형에 관한 정보는 시맨틱 비트 필드의 수와 크기와 유사한 방법으로 압축기로 제공되어 상이한 그룹의 비트 필드에 대한 압축기 엔진(예, 도 15의 1530)을 이에 상응하게 구성할 수 있다. 본 발명 기술분야의 당업자라면 다른 실시예에서 다른 방법을 구현하여 상기 정보를 제공 또는 생성할 수 있다.
예시적인 압축 데이터 세트(1710)을 압축해제하는 데이터 압축해제 장치(1700)의 일 실시예의 구성도를 도 17에 도시하였다. 도 15의 데이터 압축 장치(1500)에 의해 생성됐을 수 있는 압축 데이터 세트(1710)는 단 정수 데이터 유형의 데이터 필드의 압축된 그룹(1712a)에 이어 문자 데이터 유형의 데이터 필드의 압축된 그룹(1712b), 및 불 형식 데이터 유형의 데이터 필드의 압축된 그룹(1712c)까지 포함한다. 데이터 압축해제 장치(1700)는 복수의 압축해제부(1730)(본 명세서에서 압축해제기 또는 압축해제기 엔진으로도 지칭함), 압축해제된 비트 필드 그룹에 대한 저장부(1735), 및 압축해제된 데이터 세트(1790)를 생성하도록 구성된 재구성부(1740) 형태의 메커니즘을 포함한다. 우선, 압축된 데이터 필드의 각 그룹(1712a, 1712b, 1712c)이 그룹(1712a, 1712b, 1712c)을 각각 압축해제 하도록 구성된 압축해제부(1730a, 1730b, 1730c)에 의해 압축해제 된다. 다양한 그룹의 압축해제는 순차적 또는 병렬적으로 수행될 수 있다. 그러나 병렬적 압축해제를 하려면 다양한 그룹의 압축된 필드의 경계를 알고 있어야 한다. 즉, 메타데이터로 저장돼 있거나 부호화 크기가 고정이어야 한다. 이후, 각 그룹의 압축해제된 필드는 저장부(1735)에 저장되고, 도 17의 하단에 도시된 바와 같이, 모든 그룹이 데이터 값의 압축해제된 데이터 세트(1790)를 생성하는 재구성부(1740)에 의해 처리된다.
도 17의 데이터 압축해제 장치(1700)의 재구성부(1740)에 의해 실행되는 초기 데이터 재구성 방법의 예시적인 순서도를 도 18에 도시하였다. 본 방법은 도 17의 압축해제기(1710)에 의해 압축해제 된 AxB 크기의 2차원 어레이로 조직된 시맨틱 비트 필드 그룹과 시맨틱 비트 필드의 크기(비트 단위로 측정)뿐만 아니라 각 값이 포함하는 시맨틱 비트 필드의 수(A)를 입력으로 취한다. 본 방법의 출력은 데이터 세트(B)이다. 각 비트 필드 그룹의 제1 항목에서 시작하여 모든 비트 그룹의 제2, 제3 등의 항목으로 반복적으로 진행하여, 각 값은 다양한 그룹의 시맨틱 비트 필드를 비트 필드의 합계 크기가 나타내는 바와 같은 형성될 값의 각 비트 위치에 배치하여 결합함으로써 형성된다. 예를 들어, 본 재구성 방법을 사용하여 도 14의 데이터 세트를 복원한다고 가정하고 비트 위치 0이 값의 시작(좌측)에 해당하고 31이 값의 끝(우측)이라고 가정하면, 데이터 세트의 각 데이터 값은 "단 정수", "문자", "불(Boolean) 형식" 비트 필드를 좌에서 우로 비트 위치 0-15, 16-23, 24-31에 각각 배치하여 서로 결합함으로써 형성된다. 각 값은 데이터 세트의 나머지 재구성 값에 연결된다. 시맨틱 비트 필드의 크기를 미리 알고 있기 때문에, 각 값에 대한 비트 필드의 결합은 순차적 또는 병렬적일 수 있다. 유사하게, 데이터 세트의 복수의 값에 대한 값 재구성도 순차적 또는 병렬적일 수 있다. 목표하는 실행에 따라, 본 재구성 방법은 당업자에 의해 소프트웨어 또는 로직 회로로 구현될 수 있다. 본 방법의 다른 실시예들도 당업자에 의해 구현될 수 있다.
도 15의 압축기와 도 17의 압축해제기의 상술한 실시예는 각각 세 개의 압축부(1530)와 압축해제부(1710)을 포함한다. 따라서, 최고 3 그룹의 필드의 압축을 지원할 수 있지만, 당업자에 의해 더 많거나 적은 압축기/압축해제기로 구성된 다른 실시예로도 구현될 수 있다. 상기 압축기의 수는, 목표하는 시스템이 재구성 로직, 예를 들어 FPGA를 포함하는 시스템이 아닌 한, 압축기와 압축해제기에 의해 지원되는 최대 비트 필드의 수로 제한되어야 한다. 따라서, 런타임에서 가변 수의 압축기/압축해제기가 구성될 수 있다.
도 19는 도 13과 도 14의 데이터 세트와 달리 다양한 유형의 하나 또는 복수의 데이터 값을 포함하는 데이터 값의 블록을 도시한 것으로서, 각 데이터 값은 반드시 복수의 의미론적으로 의민 있는 데이터 필드 또는 의미론적으로 동일한 의미를 공유하는 복수의 데이터 필드를 포함하지 않는다. 도 19에 도시된 블록의 예는 6개의 값을 포함한다. 즉, 3개의 값은 정수 유형, 하나의 값은 도 14의 실시예와 같은 데이터 구조, 나머지 2개의 값은 각기 IEEE-754 표준에 의거한 세 개의 시맨틱 비트 필드(기호, 지수, 가수)를 포함하는 배정밀도 부동소수점값(64 비트)이다. 데이터 값의 블록은 본 발명의 방법, 장치 및 시스템에 의해, 이 데이터 값의 블록을 데이터 값의 특정 데이터 세트로 간주하거나, 동일한 시맨틱 비트 필드를 포함하는 데이터 값을 각 데이터 세트에 포함시켜서 이 데이터 값의 블록 내에서 데이터 값의 하나 또는 복수의 데이터 세트를 형성함으로써, 압축될 수 있다. 나머지 데이터 값은 압축해제된 상태로 남겨놓거나 기존의 압축 방법, 장치 및 시스템을 이용하여 압축될 수 있다.
도 1에 도시된 컴퓨터 시스템의 실시예에서, 데이터 값의 블록은 1) 캐시 계층에 저장되는 경우, 캐시 라인, 캐시 세트, 캐시 섹터 등, 2) 메모리에 저장되거나 이러한 컴퓨터 시스템 내의 통신 수단에서 전송되는 경우, 캐시 라인, 메모리 페이지, 메모리 섹터 등으로 대안적으로 지칭될 수 있다. 반면, 도 6에 도시된 데이터 통신 시스템 내의 전송 링크의 실시예에서, 데이터 블록은 또한 패킷(packet), 플릿(flit), 페이로드(payload), 헤더(header) 등을 지칭하는 것일 수 있다.
데이터 세트의 값의 특정 데이터 유형이 바람직하게도 기존의 표준에 따른 부동소수점 수이고, 의미론적으로 의미 있는 데이터 필드가 이러한 부동소수점 수의 기호, 지수, 및 가수를 포함할 수 있는 경우, 하나 또는 그 이상의 데이터 필드는, 예를 들어, 가수를 mantissa-high와 mantissa-low의 두 개의 하부 필드로 다시 분리함으로써, 더 분리될 수 있다. 가수를 압축하는 것은 쉬운 일이 아니다. 즉, 가수의 최소 유효 비트는 도 13에서 관찰되듯이 표현된 실수의 작은 변화에도 급속히 변하기 때문에 높은 불규칙성을 나타낸다(즉, 가수의 최소 유효 비트 내의 비트가 1(또는 0)이 될 확률은 50%이다). 반면, 가수는 부동소수점 수의 주요한 부분이기 때문에 가수를 압축하면 결국 부동소수점의 압축성이 상당히 향상될 것이다. 이러한 이유로, 가수를 둘 또는 복수의 서브필드로 분리하면 일부 서브필드가 값 집약성을 보이는 것을 알 수 있고, 따라서 가수는 부분적으로 압축 가능할 수 있다. 예를 들어, 도 13의 데이터 세트 실시예에서, 가수의 20 최대 유효 비트(즉, x4D86E)는 상기 데이터 세트의 4개 가수 비트 필드 중 3 개에 대해서 동일하고, 가수의 16 최대 유효 비트(즉, x4D86)는 상기 데이터 세트의 모든 가수 비트 필드에 대해서 동일하다. 따라서, 가수의 이러한 16 또는 20 비트를 예를 들어 2개의 서브필드로 나누어 추출함으로써, 가수의 전체적인 압축성을 향상할 수 있다.
부동소수점 수의 의미론적으로 의미 있는 데이터 필드의 압축과 압축해제를 수행하고 가수를 둘 또는 복수의 서브필드로 추가 분리하는 예시적인 시스템의 데이터 압축 장치(2000)과 데이터 압축해제 장치(2100)의 실시예가 도 20과 도 21에 각각 도시되어 있다. 본 예시적인 시스템은 FP-H로 지칭한다.
FP-H의 데이터 압축장치(2000)의 일 실시예의 구성도가 도 20에 도시되었다. 데이테 압축장치(2000)는 저장부 및/또는 추출부(2015), 시맨틱 비트 필드 분류기(2020) 형태의 분리기, 시맨틱 비트 필드 그룹에 대한 저장부(2025), 상기 다양한 의미론적으로 의미 있는 데이터 필드를 압축하도록 구성된 압축부(압축기)(2030), 및 연결부(2040) 형태의 집계기를 포함한다. 저장/추출부(2015)는 압축되지 않은 데이터 세트(2010)의 부동소수점 값을 도 16의 예시적인 분류기와 유사한 방법으로 구성된 분류기(2020)로 유지 및/또는 추출하는데 사용된다. 본 예시적인 압축기의 데이터 세트는 IEEE-754표준에 의거하여 포맷된 복수의 8 배정밀도 부동소수점값을 포함한다. 다른 실시예에 의한 압축기는 기타 부동소수점 정밀도, 기타 부동소수점 표현(예, 소수), 또는 기타 표준을 지원할 수 있으며, 데이터 세트는 임의의 크기일 수 있다.
압축은 다음과 같은 단계로 수행된다.
(단계 1) 입력된 압축되지 않은 데이터 세트(2010)의 부동소수점 값 각각이 분류기(2020)에 의해 4개의 서브필드로 나뉘어진 후, 저장부(2025)에 함께 체계화되고 저장된다. 4개의 서브필드는 기호, 지수(e 또는 exp로 표시), mantissa-High(mH), 및 mantissa-Low(mL)이고, 가수 필드가 나뉘어지는 mH와 mL 서브필드의 크기는 가수를 분리할 때 확인되는 값 집약성의 정도에 기반하여 통계적으로 또는 동적으로 판단될 수 있다.
(단계 2) 각 서브필드가 상응하는 압축기(2030)에 의해 따로따로 그리고 나머지 서브필드와 병렬적으로 압축된다. 다른 무손실 또는 손실 압축 알고리즘을 사용할 수도 있지만, 예시적인 FP-H 시스템은 높은 값 집약성을 보여주는 허프만 인코딩과 같은 가변길이 통계적 압축을 이용한다. 이에 따라, 압축기(2030) 각각을 구현하기 위하여 도 9의 예시적인 압축기를 이용할 수 있다.
(단계 3) 기호(sign)는 작은 비율의 부동소수점 값을 구성하므로, FP-H 데이터 압축장치(2000)가 기호(sign)를 제외한 모든 데이터 서브필드의 압축 시도를 선택한다. 그러나, 다른 실시예에서는 기호(sign)의 압축도 시도할 수 있다. 그룹으로 체계화된 압축된 서브필드는 특정 순서(즉, 기호, 압축된 mL, 압축된 지수, 압축된 mH)로 연결부(2040)에 의해 서로 연결되어 도 20의 하단에 도시된 압축된 데이터 세트(2090)를 형성한다. 필드를 그룹으로 묶는 것은 반드시 필요한 것은 아니지만 이점이 있다. 즉, 다양한 가변 길이 인코딩이 사용됨에 따라, 이런 방식으로 압축 데이터 세트(2090)의 데이터를 재구성하면 다양한 압축 서브필드의 경계를 정의하기 위하여 가수를 유지할 필요없이 압축해제를 극적으로 가속할 수 있다. 가수 서브필드의 압축과 지수를 위하여 가변 길이 통계적 압축이 이용되므로, 각 서브필드에 대한 값-빈도 통계가 예시적인 값 빈도 표(Value Frequency Table 또는 VFT) 구조(또는 Value Table)(예, e-VFT 2034a, mH-VFT 2034b, mL-VFT 2034c)를 이용하여 샘플링(또는 학습) 단계 동안에 모니터링 된다. 미국 특허 출원 US 13/897,385은 이러한 VT와 이러한 학습 단계에 대해 설명하고 있다.
FP-H의 데이터 압축해제 장치(2100)의 일 실시예의 구성도가 도 21에 도시되어 있다. 데이터 압축해제 장치(2100)는 입력된 압축 데이터 세트(2110)를 저장하는 저장부(2105), 가수 서브필드 압축해제기(2130a, 2103b)와 지수 압축해제기(2130c)를 포함하는 복수의 압축해제부, 및 압축해제 및 재구성된 데이터 세트(2190)를 저장하는 저장부(2145)를 포함한다. 압축된 데이터의 경계는 이미 알고 있으며, 도 21에 도시된 바와 같이, 시작은 "X"로 표시되고, 끝은 "Y"로 표시되어 있다. 앞서 압축기의 실시예에서 설명한 바와 같이, 메타데이터는 영역 오버헤드를 증가시켜서 압축의 효과를 감소시키기 때문에, 가변 길이 압축 mH와 지수(e) 서브필드의 경계와 정확한 오프셋/크기에 관한 정보를 저장할 메타데이터가 없다. 따라서, 이러한 서브필드 각각에 대한 압축해제를 하기 위해서는 이전 서브필드의 압축해제가 완료, 즉, 우선은 mL의 압축해제와 최종적으로는 mH가 압축해제 되기를 기다려야 한다. 압축되지 않은 기호 비트의 그룹이 압축된 데이터 세트의 시작 위치(즉, X)에 있고, 압축된 mL 서브필드 그룹은 압축된 데이터 세트(2110)의 8번째 비트 위치에 있다. 가변 길이 허프만 인코딩의 압축해제는 원래 순차적이므로, 압축해제 지연이 상당히 증가될 수 있다.
대신, 도 21의 FP-H 데이터 압축해제 장치(2100)는 2단계 압축해제 과정을 이용한다. 즉, 1단계에서, 압축된 mH와 mL 서브필드 그룹이 병렬적으로 압축해제 되고, 2단계에서, 압축된 지수 그룹이 압축해제 된다. 압축된 mH 서브필드 그룹을 압축된 데이터 세트의 끝에서 역순으로 저장함으로써 mH와 mL가 병렬적으로 압축해제 되도록 한다("Y"는 압축된 mH 그룹의 첫번째 비트임). 압축해제기(2130a, 2130b)가 각각 8 값을 압축해제 한 후 mH와 mL에 대한 압축해제가 완료된다. 이때, 압축된 지수 서브필드의 경계를 알기 때문에 압축해제기(2130c)에 의한 압축해제가 바로 시작될 수 있다(2단계). 각 압축해제기(2130a, 2130b, 2130c)를 구현하기 위하여 도 10의 허프만 기반 정규화 압축해제기가 사용될 수 있다. 도 21의 데이터 압축해제 장치(2100)는, 마지막 지수 필드가 압축해제되면 압축해제된 데이터 세트(2190)가 준비되도록, 압축해제된 서브필드(mL, mH)와 압축해제된 데이터필드(e)를 저장부(2145)에 저장된 완전 압축해제된 데이터 세트의 상응하는 비트 위치에 직접 배치한다. 따라서, 압축해제기(2130a, 2130b, 2130c)는 압축된 데이터 세트(2190)을 생성하는 별도의 메커니즘 없이도 압축된 데이터 세트(2190)을 생성하는 메커니즘을 구현한다. 다른 실시예에서는 당업자에 의해 도 17과 유사하게 설계되어 별도의 재구성부를 사용하여 압축해제된 데이터 세트(2190)를 생성하는 메커니즘을 구현할 수 있다.
FP-H 시스템의 다른 실시예에서, 가수의 최소 유효 비트의 불규칙성으로 인해 값 집약성이 낮을 것으로 예상되므로, mL 그룹은 압축하지 않은 상태로 남겨두기로 선택될 수 있다. 이에 따라, 1단계만을 필요로 함으로써 압축해제를 가속시킬 수 있다(mL과 지수의 병렬적 압축해제).
데이터 세트의 값의 지수 필드에는 높은 값 집약성, 즉 시간적 집약성(동일 값이 자주 등장)뿐만 아니라 공간적 집약성(값이 공간적으로 가까움, 즉 서로간의 값 차이가 작음)이 관찰된다. 이에 따라, 가벼운 압축 알고리즘, 예를 들어, 델타 인코딩을 이용한 지수의 압축을 시도하는 FP-H 시스템의 다른 실시예가 구현될 수 있다. 이러한 실시예는 앞서 설명한 FP-H 시스템의 실시예와 비해 압축 효과에서 약간의 손해가 있을 수 있지만, 2단계에서 허프만 기반 압축 지수의 순차적 압축해제에 비하면 압축해제가 상당히 빠를 수 있다.
FP-H 시스템의 다른 실시예에서, 데이터 세트의 값의 지수 필드는 일반적으로 클러스터링 되어 있으므로, 지수는 델타 기반 압축기를 이용하여 압축될 수 있다(가수 서브필드는 앞서 설명한 바와 같이 압축 및 압축해제). 흥미롭게도, 델타 기반 압축해제는 주기(cycle)가 거의 필요하지 않아서, 다른 FP-H 압축해제기 실시예에서 압축해제 2단계의 지연을 감소시킬 수 있다. 이러한 다른 실시예의 시스템은 FP-H 델타로 지칭된다. 두 지수 클러스터가 데이터 세트 별로 자주 등장하는데, 데이터 세트가 예시적인 컴퓨터 시스템 및/또는 데이터 통신 시스템의 예시적인 캐시 서브시스템 및/또는 예시적인 메모리 서브시스템 및/또는 예시적인 데이터 전송 서브시스템 내의 블록인 경우에 특히 자주 등장한다. 이에 따라 두 지수 클러스터를 표현할 수 있기 위하여 2개의 기저(base)를 필요로 한다. 따라서, 압축된 지수 그룹은 3 부분, 즉, 2 기저(배정밀도 부동소수점 값의 압축되지 않은 지수의 폭과 유사한 각 11비트), 8 델타(2비트의 폭), 및 마스크(8x1비트)를 포함한다. 마스크는 압축해제 동안에 어느 기저를 사용할지를 정의하고, 델타 폭은 지수 클러스트에 의해 처리될 범위 목표에 따른 임의의 크기일 수 있다. 도 20의 FP-H 데이터 압축장치(2000)의 압축기(2030a)와 도 21의 FP-H 데이터 압축해제 장치(2100)의 압축해제기(2130a)는 Gennady Pekhimenko, Vivek Seshadri, Onur Mutlu, Phillip B. Gibbons, Michael A. Kozuch, and Todd C. Mowry, 2012, Base-delta-immediate compression: practical data compression for on-chip caches, in Proceedings of the 21st international conference on Parallel architectures and compilation techniques (PACT '12)에 기재된 압축기와 압축해제기를 각각 조정하여 당업자에 의해 구현될 수 있다.
여기에 기재된 데이터 압축장치와 압축해제 장치의 압축부와 압축해제부(즉, 압축기와 압축해제기)는 처리율의 증가 및/또는 압축 및 압축해제 지연의 감소를 위하여 당업자에 의해 직렬적 및/또는 병렬적으로 구성될 수 있다.
본 발명의 실시예에 의한 방법 및 구성도는 바람직하게는 처리 장치/칩 또는 메모리 장치/칩에 포함되거나 연계된 모든 로직 회로에 의해 런타임에서 실행될 수 있다. 따라서 발명의 기타 측면은 앞서 설명한 방법과 구성도를 실행하도록 구성된 로직 회로, 처리 장치/칩 및 메모리 장치/칩을 포함한다.
여기에 명시적으로 기재된 실시예 이외의 기타 실시예도 본 발명의 범위 내에서 동일하게 가능함은 물론이다.
본 설명에 언급된 모든 개체(예, 데이터 세트, 데이터 유형, 데이터 값, 데이터 필드, 데이터 블록, 캐시 블록, 캐시 라인, 데이터 덩어리(chunk) 등)의 데이터 크기에는 특정한 제한이 없다.
이하, 도 22 내지 도 26을 참조하여, 도 15 내지 도 21에 도시된 특정 실시예에서 일반화된 발명의 일반적인 측면을 설명한다. 참조번호는 유사하게 사용될 것이며, 도 22A 내지 도 26에서 XXnn 형식의 참조번호는 일반적으로 도 22 내지 도 26 또는 도 15 내지 도 21의 YYnn과 동일 또는 상응하는 구성요소를 나타낸다.
도 22A는 압축되지 않은 데이터 세트(2210)를 압축된 데이터 세트(2290)으로 압축하기 위한 데이터 압축장치(2200)를 도시한 것이다. 압축되지 않은 데이터 세트(2210)는 복수의 데이터 값(2212a-m)을 포함한다. 데이터 압축장치(2200)는 데이테 세트 내의 각 데이터 값을 복수의 의미론적으로 의미 있는 데이터 필드(2214a-n)로 나누도록 구성된 분리기(2220)를 포함한다. 분리기(2220)는 예를 들어 앞서 설명한 분류기(1520, 2020)의 하나일 수 있다.
데이터 압축장치(2200)는 또한 하나 또는 그 이상의 압축부(2230a, 2230b)를 포함하는 압축기(2230)를 포함한다. 여기서, 압축부 중의 제1 압축부(2230a)는, 각 데이터 값의 의미론적으로 의미 있는 데이터 필드의 적어도 하나(2214a)에 대해, 데이터 값의 의미론적으로 의미 있는 데이터 필드의 다른 데이터 필드(2214b, 2214n)와 별도로 이 데이터 필드(2214a)로 제1 데이터 압축 스키마를 인가하여 압축된 데이터 필드(2232a)를 생성하도록 구성된다. 데이터 압축장치(2230)는 예를 들어 앞서 설명한 데이터 압축부 또는 압축기(1530, 2030) 중의 어느 하나일 수 있다.
데이터 압축장치(2200)는 또한 산출된 압축된 데이터 세트의 집계 내의 압축된 데이터 필드를 포함하여 압축된 데이터 세트(2290)를 생성하도록 구성된 집계기(2240)를 포함한다. 집계기(2240)는 예를 들어 앞서 설명한 연결부(1540, 2040) 중의 어느 하나일 수 있다.
데이터 압축장치(2200)는 데이터 값 계층보다는 데이터 필드 계층에서 값 집약성을 사용할 수 있게 함으로써 향상된 데이터 압축을 제공한다.
바람직하게, 데이터 압축장치(2200)의 압축기(2230)는 제1 압축부(2230a)의 제1 데이터 압축 스키마와 다른 제2 데이터 압축 스키마를 적용하도록 구성된 제2 압축부(2230b)를 포함한다(압축기(2230)는 제3 내지 기타 데이터 압축 스키마를 각각 적용하도록 구성된 제3 및 기타 압축부(2230c)를 포함할 수도 있다).
바람직하게, 앞서 도 15 내지 도 21의 실시예에 관한 설명으로부터 알 수 있듯이, 제1 데이터 압축 스키마와 제2 데이터 압축 스키마의 적어도 하나는 예를 들어 다음과 같은 무손실 데이터 압축 스키마와 같은 무손실 데이터 압축 스키마이다: 통계적 압축(예, 허프만 압축, 정규화 허프만 압축, 산술 코딩), 델타 인코딩, 사전 기반 압축, 패턴 기반 압축, 중요도 기반 압축, 널 데이터 세트(null-data-set) 압축.
그러나 다른 실시예에서는, 제1 및 제2 데이터 압축 스키마의 적어도 하나는 손실 데이터 압축 스키마이다.
제1 압축부(2230a)의 제1 데이터 압축 스키마는, 제1 데이터 압축 스키마가 데이터 값(2212a) 전체에 적용되는 경우보다 더 나은 압축성을 발휘하도록, 의미론적으로 의미 있는 데이터 필드(2214a-n)의 적어도 하나(2214a)의 값 집약성을 활용하도록 구성될 수 있다.
데이터 압축장치(2200)의 일부 실시예에서, 의미론적으로 의미 있는 데이터 필드(2214a-n)의 적어도 하나는 어느 압축부(2230a, 2230b)에 의해서도 압축되지 않고, 생성된 압축된 데이터 세트(2290)에 압축되지 않은 형태로 집계기(2240)에 의해 포함된다. 예를 들어, 도 20에 도시된 실시예의 기호(s) 데이터 필드가 이 경우에 해당된다.
데이터 압축장치(2200)의 일부 실시예에서, 집계기(2240)는 압축되지 않은 데이터 세트(2210)의 데이터 필드(2214a-n)의 원래 순서를 생성된 압축된 데이터 세트(2290) 내에 유지하도록 구성된다.
그러나, 바람직하게, 도 15의 실시예의 경우와 같이, 데이터 압축장치(2200)의 분리기(2220)는 데이터 값(2212a-m)으로부터 상응하는 의미론적으로 의미 있는 데이터 필드(2214a)를 제1 데이터 필드 그룹(예, 도 15의 그룹(1525a))으로 함께 묶고 제1 압축부(2230a)(예, 압축기 S(1530a))로 제공하도록 구성되고, 분리기(2220)는 데이터 값(2212a-m)으로부터 상응하는 의미론적으로 의미 있는 데이터 필드(2214b)를 제2 데이터 필드 그룹(예, 그룹(1525b))으로 함께 묶고 제2 압축부(2230b)(예, 압축기 S(1530b))로 제공하도록 구성된다. 집계기(2240)(예, 연결부(1540))는 제1 압축부로부터 압축된 데이터 필드(2232a)의 제1 그룹(예, 1542a)를 형성하고, 제2 압축부로부터 압축된 데이터 필드(2232b)의 제2 그룹(예, 1542b)를 형성하며, 생성된 압축 데이터 세트(2290) 내에 제1 그룹과 제2 그룹을 연결하도록 구성된다. 제1 데이터 필드 그룹(예, 1525a) 내의 상응하는 의미론적으로 의미 있는 데이터 필드(2214a)는 동일한 의미론적 의미를 공유하고, 제2 데이터 필드 그룹(예, 1525b) 내의 상응하는 의미론적으로 의미 있는 데이터 필드(2214b)는 동일한 의미론적 의미를 공유할 수 있다. 이러한 동일한 의미론적 의미는, 예를 들어, 제1 또는 제2 데이터 필드 그룹(예, 1525a, 1525b) 내의 각 제1 또는 제2 의미론적으로 의미 있는 데이터 필드(2214a, 2214b)가 동일한 데이터 유형 또는 일반적인 데이터 유형의 동일 한 서브필드임을 가리키는 것일 수 있다.
복수의 압축기(및 압축해제기)를 병렬적으로 사용하여 상이한 그룹을 압축하기 위하여 상이한 압축 알고리즘을 이용함으로써 압축 효율을 향상할 수 있음에 따라, 이러한 실시예는 압축(및 압축해제)를 가속할 수 있기 때문에 특히 유리하다. 따라서, 제1 및 제2 압축부(2230a-b)(예, 1530a, 1530b)는 제1 및 제2 데이터 필드 그룹(예, 1525a, 1525b)의 데이터 필드를 각각 압축하는 경우, 병렬적으로 작동하도록 구성될 수 있다.
데이터 압축장치(2200)의 실시예에서, 압축되지 않은 데이터 세트(2210)의 데이터 값(2212a-m)은, 예를 들어, 정수, 부동소수점, 문자, 스트링과 같은 표준 데이터 유형이다. 또한, 특정 표준을 따르는 데이터 또는 부호 명령일 수 있다.
또는, 데이터 압축장치(2200)의 실시예에서, 압축되지 않은 데이터 세트(2210)의 데이터 값(2212a-m)은, 예를 들어, 데이터 구조 유형 또는 객체 유형과 같은 추상 데이터 유형, 또는 비디오 형식, 오디오 형식 등과 같은 특정 형식을 따르는 데이터이다. 추상 데이터 유형이 데이터 구조 유형인 경우, 추상 데이터 유형은 불 형식(Boolean)과 포인터뿐만 아니라 예를 들어 앞서 설명한 하나 또는 그 이상의 표준 데이터 유형의 조합을 포함할 수 있다.
도 22B의 2230a,2230b에 보여지듯이, 데이터 압축장치(2200)의 제1 및 제2 압축부(2230a, 2230b)는 다음 중의 적어도 하나를 판단하도록 제어될 수 있다: i) 각 압축부가 상응하는 데이터 압축 스키마를 적용하여 데이터 압축을 수행할지 여부, 및 ii) 상응하는 데이터 압축 스키마에 대한, 복수의 데이터 압축 알고리즘에서 선택 가능한, 데이터 압축 알고리즘. 이러한 제어의 예시가 도 15의 1532a 내지 1532c에 도시되어 있다. 제1 및 제2 압축부(2230a, 2230b)의 제어는 의미론적으로 의미 있는 데이터 필드(2214a-n)의 각 데이터 유형에 기반할 수 있다.
도 22B의 2222에 도시된 바와 같이, 데이터 압축장치(2200)의 분리기(2220)는 의미론적으로 의미 있는 데이터 필드(2214a-n)의 수와 크기에 관한 구조적 데이터 필드 정보를 수신하도록 구성될 수 있다. 이러한 구조적 데이터 필드 정보는 예를 들어 도 15의 실시예의 정보(1522, 1523) 형태일 수 있다.
일부 바람직한 실시예에서, 데이터 압축장치(2200)는 부동소수점 수의 압축을 위하여 이용될 수 있다. 이는 도 20의 실시예의 경우에 해당한다. 압축되지 않은 데이터 세트(2210)(예, 2010)의 데이터 값(2212a-m)는 따라서 부동소수점 수이고, 의미론적으로 의미 있는 데이터 필드(2214a-n)는 기호(s), 지수(e), 및 가수(mH, mL)일 수 있다. 지수(e)와 가수(mH, mL) 데이터 필드는 압축기(2230)(예, 2030)의 각각 상응하는 압축부(2230a-c)(예, 2030a-c)에 의해 압축될 수 있다. 도 20과 같은 일부 실시예에서, 기호(s) 데이터 필드는 압축기(2230)(예, 2030)의 아무 압축부(2230a-c)(예, 2030a-c)에 의해 압축되지 않는다.
데이터 집약성을 더 활용하기 위하여, 데이터 압축장치(2200)의 분리기(2220)는 적어도 하나의 의미론적으로 의미 있는 데이터 필드(2214a-n)을 둘 또는 그 이상의 서브필드로 분리하도록 구성될 수 있다. 여기서, 적어도 하나의 압축부는 적어도 하나의 서브필드에 다른 서브필드와 별도로 데이터 압축 스키마를 적용하여 압축된 서브필드를 생성하도록 구성될 수 있다. 여기서, 집계기(2240)는 산출된 압축된 데이터 세트의 집계에 압축된 서브필드를 포함시켜 압축된 데이터 세트(2290)을 생성하도록 구성된다.
이는 다시 도 20의 실시예의 경우에 해당한다. 서브필드는 가수 고(mH)와 가수 저(mL)일 수 있고, 가수 고(mH)와 가수 저(mL) 서브필드의 적어도 하나는 다른 가수 고와 가수 저 서브필드와 별도로 압축된다. 바람직하게, 가수 데이터 필드의 적어도 가수 고(mH) 서브필드는 통계적 압축에 의해 압축된다. 여기서, 지수(e) 데이터 필드는 통계적 압축, 델타 인코딩, 또는 다른 압축 스키마의 하나에 의해 압축된다.
도 20과 같은 바람직한 실시에에서, 가수 데이터 필드의 가수 고(mH)와 가수 저(mL) 서브필드와 지수(e) 데이터 필드는 모두 상응하는 압축기(2230)의 압축부(2030c, 2030b, 2030)에 의해 압축되고, 집계기(2240)(예, 2040)는 다음의 그룹을 아래 순서로 저장함으로써 압축된 데이터 세트(2290)(예, 2090)를 생성하도록 구성된다.
i. 기호(s) 데이터 필드를 포함하는 제1 그룹(2042-1);
ii. 가수 데이터 필드의 압축된 가수 저(mL) 서브필드를 포함하는 제2 그룹(2042-2);
iii. 압축된 지수(e) 데이터 필드를 포함하는 제3 그룹(2042-3); 및
iv. 가수 데이터 필드의 압축된 가수 고(mH) 서브필드를 압축되지 않은 데이터 세트(2010)의 역순으로 포함하는 제4 그룹(2042-4).
이러한 배열은 효율적인 압축해제를 가능하게 한다.
본 발명의 일반적인 데이터 압축 방법이 도 23에 도시되어 있다. 도 23의 2310 내지 2330에 기재된 기능에 대한 추가 및/또는 개선으로서, 본 발명의 일반적인 데이터 압축 방법은 앞서 설명한 데이터 압축장치(2200)의 다양한 실시예의 기능적 특징의 일부 또는 모두를 포함할 수 있다.
도 24는 압축된 데이터 세트(2410)를 압축해제된 데이터 세트(2490)으로 압축해제하기 위한 데이터 압축해제 장치(2400)을 도시한 것이다. 압축된 데이터 세트(2410)는 의미론적으로 의미 있는 복수의 데이터 필드(2484)를 각각 포함하는 데이터 값(2482)을 나타낸다. 여기서, 적어도 하나의 데이터 필드(2432a)는 의미론적으로 의미 있는 다른 데이터 필드와 별도로 압축된 것이다. 압축해제된 데이터 세트(2490)는 예를 들어 앞서 설명한 데이터 압축장치(2200, 1500, 2000)의 적어도 하나에 의해 생성된 것이다. 데이터 압축해제 장치(2400)는 하나 또는 그 이상의 압축해제부(2430a, 2430b)를 포함하는 압축해제기(2430)를 포함한다. 압축해제부 중에서 제1 압축해제부(2430a)는 각 데이터 값의 적어도 하나의 압축된 데이터 필드(2432a)에 제1 데이터 압축해제 스키마를 적용하여 압축해제된 데이터 필드(2484a)를 생성하도록 구성된다. 데이터 압축해제부(2430)는 예를 들어 앞서 설명한 압축해제부 또는 압축해제기(1730, 2130a-2130c)의 어느 하나일 수 있다.
데이터 압축해제 장치(2400)는 압축해제된 데이터 세트(2490)의 결과 데이터 값(2482a)에 압축해제된 각 데이터 필드(2484a)를 포함시킴으로써 압축해제된 데이터 세트(2490)을 생성하도록 구성된 메커니즘(2440)을 포함한다.
바람직하게, 데이터 압축해제 장치(2400)의 압축해제기(2430)는 제1 압축해제부(2430a)의 제1 데이터 압축해제 스키마와 상이한 제2 데이터 압축해제 스키마를 적용하도록 구성된 제2 압축해제부(2430b)를 포함한다(압축해제기(2430)은 또한 제3 데이터 압축해제 스키마 등을 적용하도록 구성된 제3 압축해제부(2430c) 등을 포함할 수 있다).
바람직하게, 앞선 설명을 통해 명료하게 이해되듯이, 제1 및 제2 데이터 압축해제 스키마 중 적어도 하나는 무손실 데이터 압축해제 스키마이다. 그러나, 다른 실시예에서, 제1 및 제2 데이터 압축해제 스키마 중 적어도 하나는 손실 데이터 압축해제 스키마일 수 있다.
데이터 압축해제 장치(2400)의 일부 실시예에서, 압축된 데이터 세트(2410)의 데이터 필드(2484)의 적어도 하나는 압축되지 않고, 압축해제된 데이터 세트를 생성하도록 구성된 메커니즘(2440)에 의해 압축해제된 데이터 세트(2490)의 결과 데이터 값(2482)에 압축되지 않은 형태로 포함된다.
데이터 압축해제 장치(2400)의 일부 실시예에서, 메커니즘(2440)은 압축된 데이터 세트(2410)로부터의 압축된 데이터 필드(2432a, 2432b)의 순서를 생성된 압축해제된 데이터 세트(2490) 내에 유지하도록 구성된다.
바람직하게, 예를 들어 도 17의 경우와 같이, 압축해제기(2430)(예, 1730)의 압축해제부(2430a)(예, 1730a-1730c)는 압축된 데이터 세트(2410)(예, 1710)으로부터 압축된 데이터 필드의 각 그룹(예, 1712a-1712c)을 수신하고, 각 그룹의 압축된 데이터 필드를 압축해제하고, 압축해제된 데이터 필드의 각 그룹(예, 1735a-1735c)을 메커니즘(2440)(예, 1740)에 제공하도록 구성된다. 각 압축해제부(2430a, 2430b)(예, 1730a-1730c)에 의해 압축해제된 데이터 필드의 그룹(예, 1735a-1735c)에 대해, 메커니즘(2440)(예, 1740)은 생성된 압축해제된 데이터 세트(2490) 내에 압축 이전의 원 데이터 세트의 데이터 값의 데이터 필드의 원 순서를 재구성하도록 구성된다.
복수의 압축해제기를 병렬적으로 사용하여 상이한 그룹을 압축해제하기 위하여 상이한 압축해제 알고리즘을 이용함으로써 압축해제 효율을 향상할 수 있음에 따라, 이러한 실시예는 압축해제를 가속할 수 있기 때문에 특히 유리하다. 따라서, 압축해제기(2430)(예, 1730)의 압축해제부(2430a, 2430b)(예, 1730a-1730c)는 병렬적으로 작동하도록 구성될 수 있다.
데이터 압축해제 장치(2400)의 실시예에서, 압축해제된 데이터 세트(2490)의 데이터 값(2482)은 표준 데이터 유형이다. 또는, 압축해제된 데이터 세트(2490)의 데이터 값(2482)은 추상 데이터 유형일 수 있다.
데이터 압축해제 장치(2400)(예, 1730)의 압축해제부(2430a, 2430b)(예, 1730a-1730c)는 다음 중의 적어도 하나를 판단하도록 제어될 수 있다: i) 상응하는 데이터 압축해제 스키마를 적용하여 데이터 압축해제를 수행할지 여부, 및 ii) 상응하는 데이터 압축해제 스키마에 대한, 복수의 데이터 압축해제 알고리즘에서 선택 가능한, 데이터 압축해제 알고리즘. 이러한 제어의 예시가 도 17의 1732a 내지 1732c에 도시되어 있다. 제1 및 제2 압축해제부(2430a-b)(예, 1730a-1730c)의 제어는 의미론적으로 의미 있는 데이터 필드(2484)의 각 데이터 유형에 기반할 수 있다.
데이터 압축해제 장치(2400)의 메커니즘(2440)은 의미론적으로 의미 있는 데이터 필드(2484)의 수와 크기에 관한 구조적 데이터 필드 정보(예, 도 17의 1742, 1743)을 수신하도록 구성될 수 있다.
일부 바람직한 실시예에서, 데이터 압축해제 장치(2400)는 부동소수점 수의 압축해제를 위하여 이용될 수 있다. 이는 도 21의 실시예의 경우에 해당한다. 압축해제된 데이터 세트(2490)의 데이터 값(2482)는 따라서 부동소수점 수이고, 의미론적으로 의미 있는 데이터 필드(2484)는 기호(s), 지수(e), 및 가수(mH, mL)일 수 있다. 압축된 데이터 세트(2410)(예, 2110)의 압축된 지수(e)와 가수(mH, mL) 데이터 필드(2432a, 2432b)는 압축해제기(2430)(예, 2030)의 각각 상응하는 압축해제부(2430a, 2430b)(예, 2130a-2130c)에 의해 압축해제될 수 있다. 도 21과 같은 일부 실시예에서, 압축된 데이터 세트(2410)(예, 2110)의 기호(s) 데이터 필드는 압축되지 않고, 압축해제기(2430)의 아무 압축해제부(2430a, 2430b)(예, 2130a-2130c)에 의해 압축해제되지 않는다.
앞서 도 20의 데이터 압축장치에 대해 설명한 바와 같이, 압축된 데이터 세트(2410)는 의미론적으로 의미 있는 데이터 필드의 적어도 하나의 압축된 서브필드(mH, mL)를 포함할 수 있다. 이에 따라, 도 21의 데이터 압축해제 장치(2100)의 경우와 같이, 압축해제부(2430)(예, 2130a, 2130b)의 적어도 하나(예, 2130a)는 데이터 압축해제 스키마를 적어도 하나의 서브필드(mL)에 적용하여 압축해제된 서브필드를 생성하도록 구성되고, 메커니즘(2440)(예, 2130a)은 압축해제된 데이터 세트(2490)의 결과 데이터 값에 압축해제된 서브필드를 포함시키도록 구성될 수 있다.
이는 다시 도 21의 실시예의 경우에 해당한다. 서브필드는 가수 고(mH)와 가수 저(mL)일 수 있고, 가수 고(mH)와 가수 저(mL) 서브필드의 적어도 하나는 다른 가수 고와 가수 저 서브필드와 별도로 압축해제된다. 바람직하게, 가수 데이터 필드의 적어도 가수 고(mH) 서브필드는 통계적 압축에 의해 압축해제된다. 여기서, 지수(e) 데이터 필드는 통계적 압축해제, 델타 디코딩, 또는 다른 압축해제 스키마의 하나에 의해 압축해제된다.
도 21과 같은 바람직한 실시예에서, 압축된 데이터 세트(2210)(예, 2110)는 다음의 그룹을 아래의 순서대로 포함한다:
i. 기호(s) 데이터 필드를 포함하는 제1 그룹;
ii. 가수 데이터 필드의 압축된 가수 저(mL) 서브필드를 포함하는 제2 그룹;
iii. 압축된 지수(e) 데이터 필드를 포함하는 제3 그룹; 및
iv. 가수 데이터 필드의 압축된 가수 고(mH) 서브필드를 압축되기 전의 원 데이터 세트의 데이터 값 내의 원 순서의 역순으로 포함하는 제4 그룹.
본 실시예에서, 압축해제기(2430)는 2단계 동작 아키텍처를 포함할 수 있다.
- 제1 단계에서, 가수 데이터 필드의 가수 고(mH) 및 가수 저(mL) 서브필드가 압축해제기(2430)의 제1 및 제2 압축해제부(2130a, 2130b)에 의해 통계적 압축해제로 병렬적으로 압축해제 되고,
- 제2 단계에서, 지수(e) 데이터 필드가 압축해제기(2430)의 제3 압축해제부(예, 2130c)에 의해 통계적 압축해제, 델타 디코딩, 또는 다른 압축해제 스키마로 압축해제 된다.
이러한 배열은 효율적인 압축해제를 가능하게 한다.
바람직하게, 제1, 제2, 및 제3 압축해제부(예, 2130a, 2130b, 2130c)는 압축해제된 데이터 세트(2490)(예, 2190) 내에 압축해제된 각 가수 고(mH)와 가수 저(mL) 서브필드와 압축해제된 지수(e) 데이터 필드를 직접 배치하도록 구성되어 메커니즘(2440)을 구현하고 별도의 메커니즘(예, 도 17의 재구성부(1740))의 필요성을 제거한다.
본 발명의 일반적인 데이터 압축해제 방법이 도 25에 도시되어 있다. 도 25의 2510 내지 2530에 기재된 기능에 대한 추가 및/또는 개선으로서, 본 발명의 일반적인 데이터 압축해제 방법은 앞서 설명한 데이터 압축해제 장치(2400)의 다양한 실시예의 기능적 특징의 일부 또는 모두를 포함할 수 있다.
여기에 기재된 데이터 압축장치는 하드웨어, 예를 들어, 집적회로의 디지털 회로, 전용 장치(예, 메모리 제어기), 프로그램 가능 처리장치(예, CPU(central processing unit) 또는 DSP(digital signal processor)), FPGA(field-programmable gate array), 또는 기타 로직 회로 등으로 구현될 수 있다. 여기에 기재된 데이터 압축 방법의 기능은 적절하게 구성된 모든 데이터 압축장치에 의해 수행되거나, 일반적으로 데이터 압축 방법을 수행하도록 구성된 로직 회로(예를 들어, 처리 장치/칩 또는 메모리 장치/칩에 포함되거나 연계된 회로)를 포함하는 장치, 또는 CPU 또는 DSP(예, 도 1 내지 도 5의 처리부(P1?Pn))와 같은 일반 처리 장치에 의해 로드되고 실행되는 경우에 본 방법이 수행되도록 하는 코드 명령을 포함하는 컴퓨터 프로그램 제품에 의해 수행될 수 있다.
여기에 기재된 데이터 압축해제 장치는 하드웨어, 예를 들어, 집적회로의 디지털 회로, 전용 장치(예, 메모리 제어기), 프로그램 가능 처리장치(예, CPU(central processing unit) 또는 DSP(digital signal processor)), FPGA(field-programmable gate array), 또는 기타 로직 회로 등으로 구현될 수 있다. 여기에 기재된 데이터 압축해제 방법의 기능은 적절하게 구성된 모든 데이터 압축해제 장치에 의해 수행되거나, 일반적으로 데이터 압축해제 방법을 수행하도록 구성된 로직 회로(예를 들어, 처리 장치/칩 또는 메모리 장치/칩에 포함되거나 연계된 회로)를 포함하는 장치, 또는 CPU 또는 DSP(예, 도 1 내지 도 5의 처리부(P1?Pn))와 같은 일반 처리 장치에 의해 로드되고 실행되는 경우에 본 방법이 수행되도록 하는 코드 명령을 포함하는 컴퓨터 프로그램 제품에 의해 수행될 수 있다.
도 26은 본 발명에 의한 일반적인 시스템(2600)을 도시한 것이다. 시스템(2600)은 하나 또는 그 이상의 메모리(2610), 데이터 압축장치(2620)(예, 데이터 압축장치(1500, 2000, 2200)), 및 데이터 압축해제 장치(2630)(예, 데이터 압축해제 장치(1700, 2100, 2400))를 포함한다. 바람직하게, 시스템(2600)은 컴퓨터 시스템(예, 도 1 내지 도 5의 컴퓨터 시스템(100-500))이고, 하나 또는 그 이상의 메모리(2610)는 캐시 메모리(예, 도 1 내지 도 5의 캐시 메모리(L1-L3)), RAM(예, 도 1 내지 도 5의 메모리(130-530)), 또는 보조 기억 장치이다. 또는, 시스템(2600)은 데이터 통신 시스템(예, 도 6 내지 도 7의 통신망(600, 700))이고, 하나 또는 그 이상의 메모리(2610)는 이 데이터 통신 시스템에서 노드의 전송 및 수신과 관련된 데이터 버퍼(예, 도 6 내지 도 7의 송신기(610, 710)와 수신기(620, 720))일 수 있다.

Claims (52)

  1. 복수의 데이터 값(2212a-m)을 포함하는 압축되지 않은 데이터 세트(2210; 2010)를 압축된 데이터 세트(2290)로 압축하기 위한 데이터 압축장치(2200)에 있어서,
    상기 데이터 세트의 각 데이터 값을 의미론적으로 의미 있는 복수의 데이터 필드(2214a-n)로 분리하도록 구성된 분리기(2220; 1520; 2020);
    하나 또는 그 이상의 압축부(2230a-b; 2030a-c)를 포함하는 압축기(2230; 2030)―여기서, 상기 압축부 중의 제1 압축부(2230a; 1530a; 2030a)는 각 데이터 값의 상기 의미론적으로 의미 있는 데이터 필드의 적어도 제1 데이터 필드(2214a)에 대해 상기 데이터 값의 상기 의미론적으로 의미 있는 데이터 필드의 다른 데이터 필드(2214b, 2214n)와 별도로 제1 데이터 압축 스키마를 적용하여 압축된 데이터 필드(2232a)를 생성하도록 구성됨; 및
    상기 압축된 데이터 필드를 산출된 압축된 데이터 세트의 집계에 포함시켜 상기 압축된 데이터 세트(2290; 2090)를 생성하도록 구성된 집계기(2240; 1540; 2040)를 포함하고,
    상기 분리기(2220; 2020)는 상기 의미론적으로 의미 있는 데이터 필드(2214a-n)의 적어도 하나를 둘 또는 그 이상의 서브필드(mH, mL)로 더 분리하도록 구성되고;
    상기 압축부(2030a-c)의 적어도 하나(2030a, 2030b)는 상기 서브필드의 적어도 하나의 서브필드(mL)에 대해 상기 서브필드의 다른 서브필드(mH)와 별도로 데이터 압축 스키마를 적용하여 압축된 서브필드를 생성하도록 구성되고;
    상기 집계기(2240; 2040)는 상기 압축된 서브필드를 산출된 압축된 데이터 세트의 집계에 포함시켜 상기 압축된 데이터 세트(2290; 2090)를 생성하도록 구성된 것을 특징으로 하는 데이터 압축장치.
  2. 제1항에 있어서,
    상기 압축기(2230)는 상기 제1 압축부(2230a)의 상기 제1 데이터 압축 스키마와 상이한 제2 데이터 압축 스키마를 적용하도록 구성된 제2 압축부(2230b; 1530b; 2030b)를 포함하는 것을 특징으로 데이터 압축장치(2200).
  3. 제1항에 있어서,
    상기 제1 압축부(2230a)의 상기 제1 데이터 압축 스키마는, 상기 제1 데이터 압축 스키마가 상기 데이터 값(2212a) 전체에 적용되는 경우보다 더 나은 압축성을 발휘하도록, 상기 제1 데이터 필드(2214a)의 값 집약성을 활용하도록 구성된 것을 특징으로 하는 데이터 압축장치(2200).
  4. 제1항에 있어서,
    상기 의미론적으로 의미 있는 데이터 필드(2214a-n)의 적어도 하나는 상기 압축부(2230a, 2230b)에 의해 압축되지 않고 압축되지 않은 상태로 남아서 상기 생성된 압축된 데이터 세트(2290)에 압축되지 않은 형태로 상기 집계기(2240)에 의해 포함되는 것을 특징으로 하는 데이터 압축장치(2200).
  5. 제1항에 있어서,
    상기 집계기(2240)는 상기 생성된 압축된 데이터 세트(2290) 내에 상기 압축되지 않은 데이터 세트(2210)의 데이터 필드(2214a-n)의 원 순서를 유지하도록 구성된 것을 특징으로 하는 데이터 압축장치(2200).
  6. 제2항에 있어서,
    상기 분리기(2220; 1520)는 상기 데이터 값(2212a-m)의 의미론적으로 의미 있는 각 제1 데이터 필드(2214a)를 제1 데이터 필드 그룹(1525a)으로 함께 묶고 상기 제1 데이터 필드 그룹을 상기 제1 압축부(2230a; 1530a)로 제공하도록 구성되고;
    상기 분리기(2220; 1520)는 상기 데이터 값(2212a-m)의 의미론적으로 의미 있는 각 제2 데이터 필드(2214b)를 제2 데이터 필드 그룹(1525b)으로 함께 묶고 상기 제2 데이터 필드 그룹을 상기 제2 압축부(2230b; 1530b)로 제공하도록 구성되고;
    상기 집계기(2240; 1540)는 상기 제1 압축부로부터 제1 그룹(1542a)의 압축된 데이터 필드(2232a)를 형성하고, 상기 제2 압축부로부터 제2 그룹(1542b)의 압축된 데이터 필드(2232b)를 형성하고, 상기 제1 및 제2 그룹을 상기 생성된 압축된 데이터 세트(2290) 내에서 연결하도록 구성된 것을 특징으로 하는 데이터 압축장치(2200; 1500).
  7. 제6항에 있어서,
    상기 제1 및 제2 압축부(2230a-b; 1530a-b)는 각각 상기 제1 및 제2 데이터 필드 그룹(1525a, 1525b)의 데이터 필드를 압축하는 경우에 병렬적으로 동작하도록 구성되고,
    상기 제1 데이터 필드 그룹(1525a)의 상기 의미론적으로 의미 있는 제1 데이터 필드(2214a)는 동일한 의미론적 의미를 공유하고, 상기 제2 데이터 필드 그룹(1525b)의 상기 의미론적으로 의미 있는 제2 데이터 필드(2214b)는 동일한 의미론적 의미를 공유하는 것을 특징으로 하는 데이터 압축장치(2200).
  8. 제1항에 있어서,
    상기 압축되지 않은 데이터 세트(2210)의 상기 데이터 값(2212a-m)은 정수, 부동소수점, 문자, 스트링, 특정 표준을 따르는 데이터 중 하나 이상을 포함하는 표준 데이터 유형, 또는 데이터 구조 유형, 객체 유형 중 하나 이상을 포함하는 추상 데이터 유형으로 형성된 것을 특징으로 하는 데이터 압축장치(2200).
  9. 제2항에 있어서,
    상기 제1 및 제2 압축부(2230a-b; 1530a-b)는:
    상기 각 압축부가 상응하는 데이터 압축 스키마를 적용하여 데이터 압축을 수행할지 여부; 및
    상기 상응하는 데이터 압축 스키마에 대한, 복수의 데이터 압축 알고리즘에서 선택 가능한, 데이터 압축 알고리즘;
    의 적어도 어느 하나를 판단하기 위해 상기 의미론적으로 의미 있는 데이터 필드(2214a-n)의 각 데이터 유형에 기반하여 제어되는 것을 특징으로 하는 데이터 압축장치(2200; 1500).
  10. 제1항에 있어서,
    상기 분리기(2220; 1520)는 상기 의미론적으로 의미 있는 데이터 필드(2214a-n)의 수와 크기에 관한 구조적 데이터 필드 정보(2222; 1522, 1523)를 수신하도록 구성된 것을 특징으로 하는 데이터 압축장치(2200; 1500).
  11. 삭제
  12. 제1항에 있어서,
    상기 압축되지 않은 데이터 세트(2210; 2010)의 데이터 값(2212a-m)은 부동소수점 수이고, 상기 의미론적으로 의미 있는 데이터 필드(2214a-n)는 부호(s), 지수(e), 및 가수(mH, mL)인 것을 특징으로 하는 데이터 압축장치(2200; 2000).
  13. 제12항에 있어서,
    지수(e)와 가수(mH, mL) 데이터 필드는 상기 압축기(2230; 2030)의 압축부(2230a-c; 2030a-c)에 의해 각각 압축되는 것을 특징으로 하는 데이터 압축장치(2200; 2000).
  14. 제12항에 있어서,
    상기 서브필드는 가수 고(mH)와 가수 저(mL)이고, 상기 가수 고(mH)와 가수 저(mL) 서브필드의 적어도 하나는 상기 가수 고(mH)와 가수 저(mL) 서브필드의 다른 하나와 별도로 압축되는 것을 특징으로 하는 데이터 압축장치(2200; 2000).
  15. 제14항에 있어서,
    상기 가수 데이터 필드의 적어도 상기 가수 고(mH) 서브필드는 통계적 압축에 의해 압축되고, 상기 지수(e) 데이터 필드는 통계적 압축, 델타 인코딩 또는 기타 압축 스키마의 하나에 의해 압축되고,
    상기 가수 데이터 필드의 상기 가수 고(mH)와 가수 저(mL) 서브필드와 상기 지수(e) 데이터 필드는 상기 압축기(2230; 2030)의 압축부(2030b, 2030c, 2030a)에 의해 각각 압축되고, 상기 집계기(2240; 2040)는 다음의 그룹을 다음과 같은 순서로 상기 압축된 데이터 세트(2290; 2090) 내에 저장함으로써 상기 압축된 데이터 세트(2290; 2090)를 생성하도록 구성된 데이터 압축장치(2200; 2000):
    부호(s) 데이터 필드를 포함하는 제1 그룹(2042-1);
    상기 가수 데이터 필드의 압축된 가수 저(mL) 서브필드를 포함하는 제2 그룹(2042-2);
    압축된 지수(e) 데이터 필드를 포함하는 제3 그룹(2042-3); 및
    상기 가수 데이터 필드의 압축된 가수 고(mH) 서브필드를 상기 압축되지 않은 데이터 세트(2010)의 역순으로 포함하는 제4 그룹(2042-4).
  16. 복수의 데이터 값(2212a-m)을 포함하는 압축되지 않은 데이터 세트(2210)를 압축된 데이터 세트(2290)로 압축하기 위한 데이터 압축 방법에 있어서,
    상기 데이터 세트의 각 데이터 값에 대해, 상기 데이터 값을 의미론적으로 의미 있는 복수의 데이터 필드(2214a-n)로 분리하는 단계(2310);
    각 데이터 값의 상기 의미론적으로 의미 있는 데이터 필드의 적어도 하나의 데이터 필드(2214a)에 대해, 상기 데이터 값의 상기 의미론적으로 의미 있는 데이터 필드의 다른 데이터 필드(2214b, 2214n)와 별도로 상기 데이터 필드(2214a)에 제1 데이터 압축 스키마를 적용하여 압축된 데이터 필드(2232a)를 생성하는 단계(2320); 및
    산출된 압축된 데이터 세트의 집계에 상기 압축된 데이터 필드를 포함시켜 상기 압축된 데이터 세트(2290)를 생성하는 단계(2330)를 포함하고,
    상기 방법은:
    상기 의미론적으로 의미 있는 데이터 필드(2214a-n)의 적어도 하나를 둘 또는 그 이상의 서브필드(mH, mL)로 더 분리하는 단계;
    상기 서브필드의 적어도 하나의 서브필드(mL)에 대해 상기 서브필드의 다른 서브필드(mH)와 별도로 데이터 압축 스키마를 적용하여 압축된 서브필드를 생성하는 단계; 및
    상기 압축된 서브필드를 산출된 압축된 데이터 세트의 집계에 포함시켜 상기 압축된 데이터 세트(2290; 2090)를 생성하는 단계를 더 포함하는,
    데이터 압축 방법.
  17. 처리 장치에 의해 로드 되고 실행되는 경우 제16항의 상기 방법이 수행되도록 하는 코드 명령을 포함하는 컴퓨터 프로그램을 저장하는 메모리 장치.
  18. 제16항의 상기 방법을 수행하도록 구성된 로직 회로를 포함하는 장치.
  19. 적어도 하나의 데이터 필드(2432a)는 의미론적으로 의미 있는 다른 데이터 필드와 별도로 압축된, 의미론적으로 의미 있는 복수의 데이터 필드(2484)를 각각 포함하는 데이터 값(2482)을 나타내는, 압축된 데이터 세트(2410; 1710; 2110)를 압축해제된 데이터 세트(2490)로 압축해제 하기 위한 데이터 압축해제 장치(2400; 2100)에 있어서,
    하나 또는 그 이상의 압축해제부(2430a, 2430b; 1730a-1730c)를 포함하는 압축해제기(2430; 1730)―여기서, 상기 압축해제부 중의 제1 압축해제부(2430a)는 각 데이터 값의 상기 적어도 하나의 압축된 데이터 필드(2432a)에 대해 제1 데이터 압축해제 스키마를 적용하여 압축해제된 데이터 필드(2484a)를 생성하도록 구성됨; 및
    각 압축해제된 데이터 필드(2484a)를 상기 압축해제된 데이터 세트의 산출된 데이터 값(2482a)에 포함시켜 상기 압축해제된 데이터 세트(2490)를 생성하도록 구성된 메커니즘(2440; 1740)을 포함하고,
    상기 압축된 데이터 세트(2410; 2110)는 의미론적으로 의미 있는 데이터 필드의 적어도 하나의 압축된 서브필드(mH, mL)를 포함하고;
    상기 데이터 압축해제 장치(2100)의 압축해제부(2130a, 2130b, 2130c)의 적어도 하나(2130a)는 상기 적어도 하나의 서브필드(mL)에 데이터 압축해제 스키마를 적용하여 압축해제된 서브필드를 생성하도록 구성되고;
    상기 메커니즘(2440)은 상기 압축해제된 서브필드를 상기 압축해제된 데이터 세트(2490)의 산출된 데이터 값에 포함시키도록 구성된 것을 특징으로 하는 데이터 압축해제 장치.
  20. 제19항에 있어서,
    상기 압축해제기(2430)는 상기 제1 압축해제부(2430a)의 상기 제1 데이터 압축해제 스키마와 상이한 제2 데이터 압축해제 스키마를 적용하도록 구성된 제2 압축해제부(2430b)를 포함하는 것을 특징으로 하는 데이터 압축해제 장치(2400).
  21. 제19항에 있어서,
    상기 압축된 데이터 세트(2410)의 상기 데이터 필드 (2484)의 적어도 하나는 압축되지 않고, 상기 압축해제된 데이터 세트를 생성하도록 구성된 상기 메커니즘(2440)에 의해 상기 압축해제된 데이터 세트(2490)의 산출된 데이터 값(2482)에 압축되지 않은 형태로 포함되는 것을 특징으로 하는 데이터 압축해제 장치(2400).
  22. 제19항에 있어서,
    상기 메커니즘(2440)은 상기 압축된 데이터 세트(2410)로부터의 압축된 데이터 필드(2432a, 2432b)의 순서를 상기 생성된 압축해제된 데이터 세트(2490) 내에 유지하도록 구성된 것을 특징으로 하는 데이트 압축해제 장치(2400).
  23. 제19항에 있어서,
    상기 압축해제기(2430; 1730)의 상기 압축해제부(2430a, 2430b; 1730a-1730c)는 상기 압축된 데이터 세트(2410; 1710)로부터 압축된 데이터 필드의 각 그룹(1712a-1712c)을 수신하고 상기 각 그룹의 상기 압축된 데이터 필드를 압축해제 하고, 압축해제된 데이터 필드의 각 그룹(1735a-1735c)을 상기 메커니즘(2440; 1740)으로 제공하도록 구성되고;
    상기 메커니즘(2440; 1740)은, 각 압축해제부(2430a, 2430b; 1730a-1730c)에 의해 압축해제된 데이터 필드의 상기 그룹(1735a-1735c)에 대해, 상기 생성된 압축해제된 데이터 세트(2490) 내에 압축 이전의 원 데이터 세트의 상기 데이터 값의 상기 데이터 필드의 원 순서를 재구성하도록 구성된 것을 특징으로 하는, 데이터 압축해제 장치(2400; 1700).
  24. 제19항에 있어서,
    상기 압축해제기(2430; 1730)의 상기 압축해제부(2430a, 2430b; 1730a-1730c)는 병렬적으로 동작하도록 구성된 데이터 압축해제 장치(2400; 1700).
  25. 제19항에 있어서,
    상기 압축해제된 데이터 세트(2490)의 상기 데이터 값(2482)는 정수, 부동소수점, 문자, 스트링, 특정 표준을 따르는 데이터 중 하나 이상을 포함하는 표준 데이터 유형 또는 데이터 구조 유형, 객체 유형 중 하나 이상을 포함하는 추상 데이터 유형으로 형성된 것을 특징으로 하는 데이터 압축해제 장치(2400).
  26. 제19항에 있어서,
    상기 압축해제기(2430; 1730)의 상기 압축해제부(2430a, 2430b; 1730a-1730c)는:
    상기 각 압축해제부가 상응하는 데이터 압축해제 스키마를 적용하여 데이터 압축해제를 수행할지 여부; 및
    상기 상응하는 데이터 압축해제 스키마에 대한, 복수의 데이터 압축해제 알고리즘에서 선택 가능한, 데이터 압축해제 알고리즘;
    의 적어도 어느 하나를 판단하기 위해 상기 의미론적으로 의미 있는 데이터 필드(2484)의 각 데이터 유형에 기반하여 제어되는 것을 특징으로 하는 데이터 압축해제 장치(2400; 1700).
  27. 제19항에 있어서,
    상기 메커니즘(2440)은 상기 의미론적으로 의미 있는 데이터 필드(2484)의 수와 크기에 관한 구조적 데이터 필드 정보(1742, 1743)를 수신하도록 구성된 것을 특징으로 하는 데이터 압축해제 장치(2400; 1700).
  28. 삭제
  29. 제19항에 있어서,
    상기 압축해제된 데이터 세트(2490)의 데이터 값(2482)은 부동소수점 수이고, 상기 의미론적으로 의미 있는 데이터 필드(2484)는 부호(s), 지수(e), 및 가수(mH, mL)인 것을 특징으로 하는 데이터 압축해제 장치(2400; 2100).
  30. 제29항에 있어서,
    상기 압축된 데이터 세트(2410; 2110)의 압축된 지수(e)와 가수(mH, mL) 데이터 필드는 상기 압축해제부(2130a-2130c)에 의해 각각 압축해제되는 것을 특징으로 하는 데이터 압축해제 장치(2400; 2100).
  31. 제29항에 있어서,
    상기 서브필드는 가수 고(mH)와 가수 저(mL)이고, 상기 가수 고(mH)와 가수 저(mL) 서브필드의 적어도 하나는 상기 가수 고(mH)와 가수 저(mL) 서브필드의 다른 하나와 별도로 압축해제되는 것을 특징으로 하는 데이터 압축해제 장치(2400; 2100).
  32. 제31항에 있어서,
    상기 가수 데이터 필드의 적어도 상기 가수 고(mH) 서브필드는 통계적 압축해제에 의해 압축해제되고, 상기 지수(e) 데이터 필드는 통계적 압축해제, 델타 디코딩 또는 기타 압축해제 스키마의 하나에 의해 압축해제되고,
    상기 압축된 데이터 세트(2210; 2110)는 다음의 그룹을 아래의 순서대로 포함하고:
    i. 부호(s) 데이터 필드를 포함하는 제1 그룹;
    ii. 가수 데이터 필드의 압축된 가수 저(mL) 서브필드를 포함하는 제2 그룹;
    iii. 압축된 지수(e) 데이터 필드를 포함하는 제3 그룹; 및
    iv. 가수 데이터 필드의 압축된 가수 고(mH) 서브필드를 압축되기 전의 원 데이터 세트의 상기 데이터 값 내의 원 순서의 역순으로 포함하는 제4 그룹,
    상기 압축해제기(2430)는 2단계 동작 아키텍처를 포함하되,
    - 제1 단계에서, 상기 가수 데이터 필드의 상기 가수 고(mH) 및 가수 저(mL) 서브필드가 상기 압축해제부(2130a- 2130c)의 제1 압축해제부(2130a) 및 제2 압축해제부(2130b)에 의해 통계적 압축해제로 병렬적으로 압축해제 되고,
    - 제2 단계에서, 상기 지수(e) 데이터 필드가 상기 압축해제부(2130a- 2130c)의 제3 압축해제부(2130c)에 의해 통계적 압축해제, 델타 디코딩, 또는 다른 압축해제 스키마로 압축해제 되는 것을 특징으로 하는, 데이터 압축해제 장치(2400; 2100).
  33. 제32항에 있어서,
    상기 제1, 제2, 및 제3 압축해제부(2130a, 2130b, 2130c)는 상기 압축해제된 데이터 세트(2490; 2190) 내에 상기 압축해제된 각 가수 고(mH)와 가수 저(mL) 서브필드와 상기 압축해제된 지수(e) 데이터 필드를 직접 배치하도록 구성되어 상기 메커니즘(2440)을 구현하는 것을 특징으로 하는 데이터 압축해제 장치(2400; 2100).
  34. 적어도 하나의 데이터 필드(2432a)는 의미론적으로 의미 있는 다른 데이터 필드와 별도로 압축된, 의미론적으로 의미 있는 복수의 데이터 필드(2484)를 각각 포함하는 데이터 값(2482)을 나타내는, 압축된 데이터 세트(2410)를 압축해제된 데이터 세트(2490)로 압축해제 하기 위한 데이터 압축해제 방법에 있어서,
    각 데이터 값의 상기 적어도 하나의 데이터 필드(2432a)에 대해, 제1 데이터 압축해제 스키마를 적용하여 압축해제된 데이터 필드(2484a)를 생성하는 단계(2520); 및
    압축해제된 각 데이터 필드(2484a)를 상기 압축해제된 데이터 세트의 산출된 데이터 값(2482a)에 포함시켜 상기 압축해제된 데이터 세트(2490)를 생성하는 단계(2530)를 포함하고,
    상기 압축된 데이터 세트(2410; 2110)는 의미론적으로 의미 있는 데이터 필드의 적어도 하나의 압축된 서브필드(mH, mL)를 포함하고;
    상기 방법은:
    상기 적어도 하나의 서브필드(mL)에 데이터 압축해제 스키마를 적용하여 압축해제된 서브필드를 생성하는 단계; 및
    상기 압축해제된 서브필드를 상기 압축해제된 데이터 세트(2490)의 산출된 데이터 값에 포함시키는 단계를 더 포함하는, 데이터 압축해제 방법.
  35. 처리 장치에 의해 로드 되고 실행되는 경우 제34항의 상기 방법이 수행되도록 하는 코드 명령을 포함하는 컴퓨터 프로그램을 저장하는 메모리 장치.
  36. 제34항의 상기 방법을 수행하도록 구성된 로직 회로를 포함하는 장치.
  37. 하나 또는 그 이상의 메모리(2610), 제1항 내지 제10항 중 어느 한 항 또는 제12항 내지 제15항 중 어느 한 항에 따른 데이터 압축장치(1500; 2000; 2200), 및 제19항 내지 제27항 중 어느 한 항 또는 제29항 내지 제33항 중 어느 한 항에 따른 데이터 압축해제 장치(1700; 2100; 2400)를 포함하는 시스템(2600).
  38. 제37항에 있어서,
    상기 시스템은 컴퓨터 시스템(100; 200; 300; 400; 500)이고, 상기 하나 또는 그 이상의 메모리(2610)는 캐시 메모리(L1-L3), RAM(130; 230; 330; 430; 530), 및 보조 기억 장치에서 선택되는 것을 특징으로 하는 시스템(2600).
  39. 제37항에 있어서,
    상기 시스템은 데이터 통신 시스템(600; 700)이고, 상기 하나 또는 그 이상의 메모리(2610)는 데이터 버퍼인 것을 특징으로 하는 시스템(2600).

  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
  45. 삭제
  46. 삭제
  47. 삭제
  48. 삭제
  49. 삭제
  50. 삭제
  51. 삭제
  52. 삭제
KR1020177036797A 2015-05-21 2016-05-20 시맨틱 값 데이터 압축 및 압축해제를 위한 방법, 장치 및 시스템 KR102616804B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020237043737A KR20240001326A (ko) 2015-05-21 2016-05-20 시맨틱 값 데이터 압축 및 압축해제를 위한 방법, 장치 및 시스템

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
SE1550644 2015-05-21
SE1550644-7 2015-05-21
PCT/SE2016/050463 WO2016186564A1 (en) 2015-05-21 2016-05-20 Methods, devices and systems for semantic-value data compression and decompression

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020237043737A Division KR20240001326A (ko) 2015-05-21 2016-05-20 시맨틱 값 데이터 압축 및 압축해제를 위한 방법, 장치 및 시스템

Publications (2)

Publication Number Publication Date
KR20180019598A KR20180019598A (ko) 2018-02-26
KR102616804B1 true KR102616804B1 (ko) 2023-12-26

Family

ID=57320837

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020177036797A KR102616804B1 (ko) 2015-05-21 2016-05-20 시맨틱 값 데이터 압축 및 압축해제를 위한 방법, 장치 및 시스템
KR1020237043737A KR20240001326A (ko) 2015-05-21 2016-05-20 시맨틱 값 데이터 압축 및 압축해제를 위한 방법, 장치 및 시스템

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020237043737A KR20240001326A (ko) 2015-05-21 2016-05-20 시맨틱 값 데이터 압축 및 압축해제를 위한 방법, 장치 및 시스템

Country Status (7)

Country Link
US (1) US10268380B2 (ko)
EP (2) EP4012928B1 (ko)
JP (1) JP7031828B2 (ko)
KR (2) KR102616804B1 (ko)
CN (1) CN107836083B (ko)
CA (1) CA2986559A1 (ko)
WO (1) WO2016186564A1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3304746B1 (en) 2015-05-21 2021-04-07 Zeropoint Technologies AB Methods, devices and systems for hybrid data compression and decompression
SE540178C2 (en) 2016-01-29 2018-04-24 Zeropoint Tech Ab Methods, devices and systems for compressing and decompressing data
US10222853B2 (en) 2016-03-03 2019-03-05 Qualcomm Incorporated Power saving techniques for memory systems by consolidating data in data lanes of a memory bus
DE102019002951A1 (de) * 2018-04-25 2019-10-31 Avago Technologies International Sales Pte. Limited Pixelspeicherung für graphische Bildspeicher
US10305508B2 (en) * 2018-05-11 2019-05-28 Intel Corporation System for compressing floating point data
CN110909870B (zh) * 2018-09-14 2022-12-09 中科寒武纪科技股份有限公司 训练装置及方法
US11880368B2 (en) * 2018-10-15 2024-01-23 Ocient Holdings LLC Compressing data sets for storage in a database system
CN111384968B (zh) * 2018-12-28 2022-08-09 上海寒武纪信息科技有限公司 数据压缩解压装置和数据解压方法
EP3900340A4 (en) 2018-12-21 2022-08-17 Zeropoint Technologies AB EFFECTIVE COMPRESSION AND DECOMPRESSION METHODS, DEVICES AND SYSTEMS TO ACHIEVE HIGHER THROUGHPUT
US11843397B2 (en) 2019-09-09 2023-12-12 Google Llc Compression of data that exhibits mixed compressibility
KR20220015556A (ko) 2020-07-31 2022-02-08 삼성전자주식회사 이미지 처리 장치 및 프레임 버퍼 컴프레서
CN112291341A (zh) * 2020-10-28 2021-01-29 维沃移动通信有限公司 文件传输方法、装置和设备
CN113268460B (zh) * 2021-05-28 2022-10-14 中科计算技术西部研究院 基于多层次并行的基因数据无损压缩方法及装置
CN116208170B (zh) * 2023-03-01 2023-10-27 山东华科信息技术有限公司 分布式能源并网监测的数据解压缩系统、方法及其设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130007076A1 (en) * 2011-06-30 2013-01-03 Samplify Systems, Inc. Computationally efficient compression of floating-point data

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07131655A (ja) * 1993-11-02 1995-05-19 Fujitsu Commun Syst Ltd 動的多値化データ圧縮装置
JP2003044459A (ja) * 2001-08-02 2003-02-14 Hitachi Software Eng Co Ltd 構造化データに対するデータ圧縮方法およびデータ交換方法
JP3729759B2 (ja) * 2001-08-07 2005-12-21 株式会社ルネサステクノロジ 圧縮された命令コードを読み出すマイクロコントローラ、命令コードを圧縮して格納するプログラムメモリ
US7143046B2 (en) * 2001-12-28 2006-11-28 Lucent Technologies Inc. System and method for compressing a data table using models
US6990505B2 (en) * 2002-05-09 2006-01-24 Sun Microsystems, Inc. Method/apparatus for conversion of higher order bits of 64-bit integer to floating point using 53-bit adder hardware
CN1781253B (zh) * 2003-06-20 2012-01-25 日本电信电话株式会社 浮点格式的数字信号的无损编码方法、解码方法及其装置
EP1662667B1 (en) * 2003-09-02 2015-11-11 Nippon Telegraph And Telephone Corporation Floating point signal reversible encoding method, decoding method, device thereof, program, and recording medium thereof
JP4011580B2 (ja) * 2004-12-27 2007-11-21 株式会社ナナオ 画像データ伝送システム
US8300823B2 (en) * 2008-01-28 2012-10-30 Netapp, Inc. Encryption and compression of data for storage
US8208532B2 (en) 2008-03-31 2012-06-26 Oracle America, Inc. Method and apparatus for data compression and decompression
US8285687B2 (en) * 2008-08-27 2012-10-09 Netapp, Inc. System and method for file system level compression using compression group descriptors
EP2481001B1 (en) * 2009-09-21 2014-11-05 XRing Technologies GmbH A method and system for error resilient compression and decompression of computed tomography data
CN103731154B (zh) * 2013-11-01 2017-01-11 陕西理工学院 一种基于语义分析的数据压缩算法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130007076A1 (en) * 2011-06-30 2013-01-03 Samplify Systems, Inc. Computationally efficient compression of floating-point data

Also Published As

Publication number Publication date
JP7031828B2 (ja) 2022-03-08
CN107836083B (zh) 2021-09-21
EP3298695A4 (en) 2019-01-16
EP4012928B1 (en) 2023-06-14
CA2986559A1 (en) 2016-11-24
CN113810057A (zh) 2021-12-17
EP3298695B1 (en) 2022-01-05
JP2018520576A (ja) 2018-07-26
US20180143770A1 (en) 2018-05-24
KR20240001326A (ko) 2024-01-03
KR20180019598A (ko) 2018-02-26
WO2016186564A1 (en) 2016-11-24
CN107836083A (zh) 2018-03-23
EP4012928A1 (en) 2022-06-15
EP3298695A1 (en) 2018-03-28
US10268380B2 (en) 2019-04-23

Similar Documents

Publication Publication Date Title
KR102616804B1 (ko) 시맨틱 값 데이터 압축 및 압축해제를 위한 방법, 장치 및 시스템
US10901948B2 (en) Query predicate evaluation and computation for hierarchically compressed data
US8090027B2 (en) Data compression using an arbitrary-sized dictionary
CN107545066B (zh) 用于在易失性存储器内保持关系型数据的列向量的技术
Grigoras et al. Accelerating SpMV on FPGAs by compressing nonzero values
US9094039B2 (en) Efficient deflate decompression
Ledwon et al. High-throughput FPGA-based hardware accelerators for deflate compression and decompression using high-level synthesis
Kim et al. Data dependency reduction for high-performance FPGA implementation of DEFLATE compression algorithm
CN108932315A (zh) 一种数据解压的方法以及相关装置
US20210157485A1 (en) Pattern-based cache block compression
CN113810057B (zh) 用于语义值数据压缩和解压缩的方法、设备和系统
Yong et al. Cuda lossless data compression algorithms: a comparative study
CN111832257A (zh) 编码数据的条件转码
US8190584B1 (en) Utilizing recursive application of a reversible transform which involves lexicographic ordering
Rani et al. A survey on lossless text data compression techniques
Bharathi et al. A plain-text incremental compression (pic) technique with fast lookup ability
Ledwon Design of FPGA-based accelerators for Deflate compression and decompression using high-level synthesis
Philip et al. LiBek II: A novel compression architecture using adaptive dictionary
Indurani et al. A survey on big data compression
Doshi et al. “Quad-Byte Transformation as a Pre-processing to Arithmetic Coding
Banerjee et al. An Intelligent Lossless Data Compressor Implementation using Reconfigurable Hardware.
Kumar A plain-text compression technique with fast lookup ability
Waghulde et al. New data compression algorithm and its comparative study with existing techniques
Suneetha et al. A Compression Algorithm for DNA Palindrome Compression Technique
Piliavin et al. Multimode intelligent data compressor/decompressor (MICE) optimized for speed and storage capacity

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant