KR100324154B1 - 우수한 데이터 완전성을 제공하는 저장 서브시스템용 압축 및데이터 처리 칩 및 그 방법 - Google Patents

우수한 데이터 완전성을 제공하는 저장 서브시스템용 압축 및데이터 처리 칩 및 그 방법 Download PDF

Info

Publication number
KR100324154B1
KR100324154B1 KR1019980000620A KR19980000620A KR100324154B1 KR 100324154 B1 KR100324154 B1 KR 100324154B1 KR 1019980000620 A KR1019980000620 A KR 1019980000620A KR 19980000620 A KR19980000620 A KR 19980000620A KR 100324154 B1 KR100324154 B1 KR 100324154B1
Authority
KR
South Korea
Prior art keywords
data
compression
data stream
decompression means
interface
Prior art date
Application number
KR1019980000620A
Other languages
English (en)
Other versions
KR19980079595A (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 포만 제프리 엘
Publication of KR19980079595A publication Critical patent/KR19980079595A/ko
Application granted granted Critical
Publication of KR100324154B1 publication Critical patent/KR100324154B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/00007Time or data compression or expansion
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1833Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Hardware Redundancy (AREA)

Abstract

본 발명은 높은 데이터 완전성을 갖는 데이터 압축을 제공하는 시스템 및 방법을 개시한다. 본 발명의 한 특징으로, 본 발명의 방법 및 시스템은 제 1 인터페이스, 제 2 인터페이스 및 저장 수단을 포함한다. 본 발명의 방법 및 시스템은 제 1인터페이 및 저장 장치에 결합된 제 1 압축/압축해제(compression/decompression) 수단을 포함한다. 제 1 압축/압축해제 수단은 제 1 인터페이스를 통하여 제공된 데이터를 압축하며, 저장 수단으로부터의 데이터를 압축해제시킨다. 또한, 제 1 압축/압축해제 수단은 제 1 데이터 스트림을 제공한다. 또한, 본 발명의 방법 및 시스템은 제 2 인터페이스와 저장 수단에 결합된 제 2 압축/압축해제 수단을 포함한다. 제 2 압축/압축해제 수단은 제 2 인터페이스를 통하여 제공된 데이터를 압축하고, 저장 수단으로부터의 데이터를 압축해제시킨다. 또한, 제 2 압축/압축해제 수단은 제 2 데이터 스트림을 제공한다. 각각의 압축/압축해제 수단은 저장 수단에 대한 공통 공유 인터페이스를 통하여 서로의 입력 및 출력 양자를 모니터링할 수 있다. 제 2 압축/압축해제 수단이 마스터 장치(master device)인 경우 제 1 압축/압축해제 수단이 제 2 데이터 스트림을 모니터링하고, 제 2 데이터 스트림을 제 1 데이터 스트림과 비교한다. 제 1 압축/압축해제 수단이 마스터 장치인 경우 제 2 압축/압축해제 수단이 제 1 데이터 스트림을 모니터링하고 제 1 데이터 스트림을 제 2 데이터 스트림과 비교한다.
본 발명의 또다른 특징으로, 본 발명의 방법 및 시스템은 저렴한 비용으로높은 데이터 안전성을 갖는 데이터 압축을 제공한다. 이 경우, 본 발명의 방법은 데이터에 대해 제 1 에러 체크를 수행한다. 본 발명의 방법은 제 1 에러 체크 결과를 저장하고, 상기 데이터를 압축/압축해제 수단에 제공하는데, 상기 압축/압축해제 수단은 데이터 스트림을 제공하기 위하여 데이터를 압축한다. 데이터 스트림은 저장되고, 압축/압축해제 수단에 제공되는데, 상기 압축/압축해제 수단은 데이터 스트림을 압축해제시킨다. 본 발명의 방법은 압축해제된 출력에 대해 제 2 에러 체크를 수행하고, 제 2 에러 체크 결과를 제 1 에러 체크 결과와 비교한다.

Description

우수한 데이터 완전성을 제공하는 저장 서브시스템용 압축 및 데이터 처리 칩 및 그 방법
본 발명은 높은 완전성을 갖는 데이터 압축용 시스템 및 그 방법에 관한 것으로, 특히 데이터 저장 제품 또는 서브시스템 분야에서 적절한 비용으로 요구되는 데이터 완전성을 제공할 수 있는 데이터 압축기/압축해제기, 호스트 인터페이싱 및 데이터 완전성 체킹 칩 또는 구성 소자 구현용 시스템 및 방법에 관한 것이다.
예를 들어 테이프에 파일을 보관하기 위하여 데이터를 압축하는 일이 사용자에게 점점 더 중요해지고 있다. 압축 및 저장 처리 또는 검색 및 압축해제 처리들이 모두 높은 완전성을 갖도록 수행됨으로써, 기록 저장용으로 시스템에 제공된 원시 데이터(original data)가 정확하게 검색될 수 있도록 보장하는 것이 중요하다. 바꾸어 말하면, 저장 매체에 기록된 정보는 원시 데이터를 정확하게 압축 표시한 것이여야 한다. 마찬가지로, 이러한 저장된 정보가 검색되어 압축해제되는 경우, 그 압축해제가 일어나는 동안 어떠한 추가 에러도 유입(流入)되지 않아야 한다. 마찬가지로, 시스템의 한 부분으로부터 다른 부분으로의 정보 전달 또는 시스템 내에서의 정보 버퍼링(buffering)시에도 에러가 유입되지 않아야 한다.
높은 데이터 완전성을 제공하는 것은 압축 및 저장 중인 데이터가 사용자의 조작에 중요하거나 기본적인 요소인 "고성능(high end)" 시스템인 경우 특히 중요한 문제이다. 상기와 같은 시스템의 예로는 은행(banking) 업무 또는 신용 카드 처리(credit card processing)와 같은 대규모의 금융 데이터 처리 응용을 들 수 있다. 상기와 같은 데이터를 저장하여야 하는 사용자들은 자신들이 사용하는 데이터가 더욱 높은 완전성을 가지는 것을 보장하기 위하여 보다 비싼 시스템이라도 기꺼이 구입하려고 할 것이다.
데이터에 에러가 유입되지 않는 것을 보장하는 일반적인 방법으로 에러 보정 코드(error correcting code)들이 있지만, 이러한 코드들은 압축 및 압축해제가 이루어지는 동안 완전성을 제공하기에는 부적절하다. 그 대신, 상기와 같은 코드들은 저장 매체 내의 결함과 같은 다른 에러의 원인을 밝히는데 주로 사용된다. 따라서, 대부분의 에러 보정 코드들은 단순히 저장 매체에 입력되는 데이터를 기초로하고 이에 에러 보정 코드가 부가되는 것에 불과하다. 그 결과, 데이터가 압축 처리되는 동안 에러가 발생하는 경우, 부정확한 압축 정보를 사용하는 에러 보정 코드가 형성될 수 있다. 에러 보정 코드는 그 코드가 저장 매체에 기록되고 나중에 저장 매체로부터 검색될 때 상기 에러를 그대로 보유한다.
높은 데이터 완전성을 제공하기 위한 종래의 한 방법은 별도의 데이터 압축기 및 압축해제기를 구축하는 것이다. 이렇게 함으로써, 상기 압축기 및 압축해제기들이 동시에 작동될 수 있다. 저장될 데이터는 호스트 시스템에 의해 압축기에 제공된다. 상기 데이터가 압축기를 통과하는 동안 섬체크(합계 검사(合計 檢査) :sumcheck)가 행해진다. 압축된 결과가 압축기로부터 출력되어 압축해제기 및 테이프와 같은 저장 매체 양자 모두에게 제공된다. 압축해제기는 원시 데이터를 다시 구성한다. 재구성된 데이터가 압축해제기로부터 출력되는 경우, 재구성된 데이터는 폐기되고, 섬체크는 재구성된 데이터 상에서 행해진다. 그 다음으로, 이러한 압축해제기 섬체크는 압축기에 공급된 원시 데이터로부터의 섬체크와 비교된다. 두가지 섬체크가 일치하는 경우 압축/압축해제 처리가 이루어지는 동안 데이터 완전성이 유지되었을 확률이 매우 높으므로 시스템은 데이터를 계속 처리할 수 있다.
이러한 종래의 시스템은 버퍼를 사용하여도 또한 구현될 수 있다는 사실에 주목해야 한다. 이러한 버퍼의 상이한 부분들은 상이한 상태(different state)로 데이터를 저장하는데 사용될 수 있다. 예를 들어, 한 부분은 인터페이스를 통해 호스트로부터 수신되는 압축되지 않은 데이터를 저장할 수 있으며, 다른 부분은 저장 매체에 기록되기 위해 대기하고 있는 압축된 데이터를 저장할 수 있다. 그러나, 상기와 같은 방식은 버퍼 저장/검색 동작이 행해지는 동안 데이터가 소실 또는 오염되지 않도록 보장하기 위하여 일반적으로 에러 체킹을 행한다. 또한, 완정성을 보장하기 위하여 압축/압축해제 동작시에도 체킹이 수행되어야 한다.
상기 설명된 종래의 시스템이 데이터 완전성을 보장한다고 하더라도, 비교적 비용이 많이 들며 또 비교적 적은 수의 시스템만이 데이터 완전성을 보장할 수 있다. 압축/압축해제를 동시에 수행하는 능력은 이러한 부류의 제품들에만 요구된다. 이는 이중 호스트 인터페이스 능력(dual host interface capability)에 관해서도 마찬가지 이다. 그 결과, 소량 생산인 경우에는 고집적도의 특수 설계 칩이 요구된다. 대부분의 집적 회로(IC) 제조업체들은 상기와 같은 구성 소자들을 비교적 소량 생산하는 것을 꺼린다.
이러한 저장 시스템 중 "저성능(low end)" 시스템의 경우에는 상황이 달라진다. 데이터 완전성이 여전히 요구되기는 하지만, 시스템의 가격은 훨씬 낮다. 저성능 시스템은 고성능 시스템이 판매되는 수보다 수 차수(次數 : order)배 더 많이 팔린다. 상기의 종래의 칩은 고가이기 때문에, 이러한 저성능 제품에 사용될 수 없다. 또한, 저성능 시스템은 단지 하나의 호스트만이 부착되기 때문에 통상 하나의 인터페이스만을 필요로 한다.
따라서, 고성능 시스템의 데이터 완전성을 보장하면서도 더 간단하고 더 적은 비용이 드는 회로를 사용하여 압축기, 압축해제기 및 단일 인터페이스를 가지는 저성능 시스템을 제공하는 것이 요구된다. 이상적으로는, 상기의 간단한 저비용 구성 소자들을 고성능 시스템에 사용하여 종래의 경우와 같거나 그 보다 더 양호한 데이터 완전성 수준을 제공할 수 있을 것이다. 고성능 시스템의 구성 소자들이 다중 인터페이스 능력(multiple interface capability)을 제공하기 위한 선택 사양(option)을 포함하게 하면, 저성능 시스템이 고성능 시스템과 같은 수준의 데이터 완전성을 구비하면서도 상기와 같은 구성 소자들의 가격이 낮다는 잇점을 누릴 수 있어서 바람직할 것이다. 또한, 저성능 시스템 칩의 생산량이 늘어나는 제조상의 규모의 경제 효과에 의하여 고성능 시스템도 또한 저비용의 잇점을 누릴 수 있게 된다. 본 발명은 이와 같은 필요를 충족시키기 위한 것이다.
본 발명은 데이터 압축시 높은 데이터 완전성을 갖도록 하는 시스템 및 방법을 제공한다. 본 발명의 하나의 특징으로, 본 발명의 방법 및 시스템은 제 1 인터페이스, 제 2 인터페이스 및 저장 수단을 포함한다. 본 발명의 방법 및 시스템은 제 1인터페이스 및 저장 장치에 결합된 제1 압축/압축해제(compression/decompression) 수단을 포함한다. 제 1 압축/압축해제 수단은 제 1 인터페이스를 통하여 제공된 데이터를 압축하며 또 저장 수단으로부터의 데이터를 압축해제시킨다. 또한, 제 1 압축/압축해제 수단은 제 1 데이터 스트림을 제공한다. 본 발명의 방법 및 시스템은 제 2 인터페이스와 저장 수단에 결합된 제 2 압축/압축해제 수단을 추가로 포함한다. 제 2 압축/압축해제 수단은 제 2 인터페이스를 통하여 제공된 데이터를 압축하고 또 저장 수단으로부터의 데이터를 압축해제시킨다. 또한, 제 2 압축/압축해제 수단은 제 2 데이터 스트림을 제공한다. 각각의 압축/압축해제 수단은 저장 수단에 대한 공통 공유 인터페이스를 통하여 서로의 입력 및 출력 양자를 모니터링할 수 있다. 제 2 압축/압축해제 수단이 마스터 장치(master device)인 경우 제 1 압축/압축해제 수단은 제 2 데이터 스트림을 모니터링하여 제 2 데이터 스트림을 제 1 데이터 스트림과 비교한다. 제 1 압축/압축해제 수단이 마스터 장치인 경우 제 2 압축/압축해제 수단은 제 1 데이터 스트림을 모니터링하여 제 1 데이터 스트림을 제 2 데이터 스트림과 비교한다.
본 발명의 또다른 특징으로, 본 발명의 방법 및 시스템은 비교적 적은 비용으로 높은 데이터 안전성을 갖는 데이터 압축을 추가로 제공한다. 이 경우, 본 발명의 방법은 데이터에 대해 제 1 에러 체크를 수행한다. 본 발명의 방법은 제 1 에러 체크 결과를 저장하고 또 상기 데이터를 압축/압축해제 수단에 제공하는데, 상기 압축/압축해제 수단은 데이터 스트림을 제공하기 위하여 데이터를 압축한다. 데이터 스트림은 저장되며 또 압축/압축해제 수단에 제공되는데, 상기 압축/압축해제 수단은 데이터 스트림을 압축해제시킨다. 본 발명의 방법은 압축해제된 출력에 대해 제 2 에러 체크를 수행하며, 제 2 에러 체크 결과를 제 1 에러 체크 결과와 비교한다.
본 발명에 개시된 시스템 및 방법에 따르면, 본 발명은 더 간단하고 더 저렴한 압축기/압축해제기를 사용하여 매우 높은 수준의 완전성을 갖는 압축 및 압축해제를 제공한다. 본 발명의 하나의 특징적인 방법 및 시스템에서는 제 1 및 제 2 압축기/압축해제기 구성 소자를 사용함으로써, 이중 호스트 인터페이싱 및 더 양호한 수준의 압축 하드웨어 체킹이 제공된다. 또다른 특징으로, 본 발명의 시스템 및 방법은 단일 압축기/압축해제기를 사용할 수 있다. 이 경우, 본 발명의 방법 및 시스템은 낮은 비용으로 비교적 높은 데이터 완전성 체킹을 제공할 수 있다. 또한, 본 발명의 방법 및 시스템은 단일 압축기/압축해제기 구성 소자들이 더 큰 규모로 제조될 수 있으므로 규모의 경제(economies of scale)라는 관점에서 더욱 유리하다.
도 1은 데이터 압축 및 압축해제를 제공하기 위한 종래 시스템의 블록도.
도 2는 높은 완전성을 가지는 데이터 압축을 제공하기 위한 본 발명 시스템의 실시예 블록도.
도 3은 비교적 적은 비용으로 높은 완전성을 가지는 데이터 압축을 제공하는 본 발명 실시예의 블록도.
도 4는 비교적 적은 비용으로 높은 완전성을 가지는 데이터 압축을 제공하는 본 발명 방법의 플로우 차트.
도 5는 비교적 적은 비용으로 높은 완전성을 가지는 데이터 압축해제를 제공하는 본 발명 방법의 플로우 차트.
* 도면의 주요부분에 대한 부호의 설명
100 : 시스템
104, 114 : CRAM 압축기/압축해제기
102 : 인터페이스 A
112 : 인터페이스 B
116 : 공유 데이터 버퍼 인터페이스
118 : 저장 버퍼
120 : 저장 장치
121, 123 : 공통 인터페이스
122 : 시스템 제어기
본 발명은 높은 데이터 완전성을 가지는 데이터 압축 및 압축해제를 가능하게 하는 방법 및 시스템을 제공한다. 다음의 설명은 본 기술 분야의 당업자가 본 발명을 이해하고 사용 가능하도록 제시된다. 본 기술 분야의 당업자들은 바람직한 실시예에 대한 다양한 변경을 용이하게 행할 수 있으며 또 본 발명의 일반적인 원리는 다른 실시예에 응용될 수 있다. 따라서, 본 발명은 설명되는 실시예에 제한되는 것이 아니라 본 명세서에 기술된 원리 및 특징과 일치하는 가장 넓은 범위에 해당된다.
도 1은 데이터를 압축 또는 압축해제하기 위한 종래의 시스템(1)의 블록도이다. 종래 시스템(1)의 단일 압축기/압축해제기(7)은 압축 및 압축해제를 동시에 수행할 수 있다. 시스템(1)에서는 저장될 데이터가 이중 인터페이스(13) 및 (15) 가운데 하나를 통하여 호스트 시스템(3)에 의해 압축기로 제공된다. 섬체크 유닛(5)는 호스트(3)에 의해 제공된 데이터에 대한 섬체크를 구한다. 그 다음으로, 압축기/압축해제기(7)의 압축기(7-1)은 데이터를 압축한다.
압축기(7-1)로부터의 데이터의 일부분을 압축한 결과는 압축해제기(7-2) 및 저장 장치(11) 양자 모두에 제공된다. 저장 장치(11)은 통상적으로 테이프이다. 압축기/압축해제기(7)의 압축해제기(7-2)는 원시 데이터를 재구성한다. 따라서, 압축 및 압축해제는 일반적으로 동시에 행해진다.
통상, 압축해제기(7-2)에 의해 재구성된 데이터는 폐기된다. 그러나, 페기되기 전에 섬체크 유닛 (9)가 재구성된 데이터로부터 섬체크를 구한다. 그 다음으로, 재구성된 데이터에 대해 구해진 섬체크 결과는 원시 및 재구성된 데이터들이 동일하다는 것을 보장하기 위하여 원시 데이터에 대해 구해진 섬체크와 비교된다.
압축해제 처리가 행해지는 동안, 데이터는 저장 장치(11)에 의해 압축해제기(7-2)에 제공된다. 섬체크 유닛(5)는 압축된 데이터에 대한 섬체크를 구한다. 그 다음으로, 압축해제기(7-2)는 데이터를 압축해제한다. 압축해제기(7-2)로부터의 데이터의 일부분을 압축해제한 결과는 압축기(7-1) 및 호스트(3) 양자 모두에 제공된다. 압축기/압축해제기(7)의 압축기(7-1)은 압축된 데이터를 재구성한다. 역시 압축 및 압축해제는 일반적으로 동시에 행해진다.
통상, 압축기(7-1)에 의해 재구성된 데이터는 폐기된다. 그러나, 폐기되기 전에 섬체크 유닛(9)는 압축기 출력으로부터 섬체크를 구한다. 재구성된 데이터에 대해 구해진 섬체크 결과는 압축기 출력과 원시 압축된 데이터들이 동일하다는 것을 보장하기 위하여 압축된 데이터에 대해 구해진 섬체크와 비교된다. 그 결과, 압축 및 압축해제 양자 모두에서 높은 데이터 완전성이 달성된다.
또한, 시스템(1)은 데이터 버퍼를 사용하여 구현될 수 있다는 사실에 주목해야 한다. 버퍼의 상이한 부분은 상이한 상태의 데이터를 저장하기 위하여 사용될 수 있다. 그러나, 버퍼에 저장하는 동안 어떠한 에러도 유입되지 않았음을 보장하기 위하여 추가 에러 체킹이 행해진다.
비록 도 1에 도시된 시스템(1)이 데이터를 압축하고 또 압축된 데이터의 완전성을 보장한다고 하더라도, 본 기술 분야의 당업자는 종래의 시스템(1)의 가격이 비싸다는 것을 용이하게 알 수 있다. 또한, 해마다 시판되는 상기 시스템의 수는 비교적 작을 것으로 예상된다. 시스템(1)은 동시 압축 및 압축해제를 요구할 뿐만 아니라 인터페이스(13) 및 (15)와 같은 이중 인터페이스도 역시 요구한다. 그 결과, 압축기/압축해제기(7)은 고집적된 회로를 요구한다. 시판되는 고성능 시스템(1)의 수가 상대적으로 작으며 또 압축기/압축해제기(7)은 고집적된 회로여야 하기 때문에, 제조자들은 상기 고집적 회로 칩을 해마다 시판될 것으로 예상되는 비교적 작은 수의 범위 내에서 제조하는 것을 꺼려한다.
또한, 본 기술의 당업자는 저성능 저장 시스템의 경우 압축기/압축해제기(7)은 비용이 많이 들기 때문에 사용될 수 없다는 것을 역시 이해할 것이다. 또한, 저성능 시스템은 단지 하나의 호스트만이 부착되기 때문에 통상 하나의 인터페이스만을 필요로 한다. 그러나, 본 기술 분야의 당업자는 시스템(1)에 의해 제공되는 데이터 완전성이 여전히 중요하다는 것을 쉽게 이해할 것이다. 마지막으로, 비록 저성능 시스템의 비용이 작게들지만, 저성능 시스템들이 시판되는 수는 상당히 더 많다.
본 발명은 비교적 비용이 작게 드는 표준화된 압축기/압축해제기를 사용함으로써 고성능 및 저성능 시스템 내에서 높은 완전성을 갖는 데이터 압축 및 압축해제를 제공하는 방법 및 시스템을 제공한다. 본 발명은 데이프 상에 데이터를 저장하기 위한 시스템에서 사용되는 CRAM 집적형 LZ1 압축 알로리즘 회로와 관련하여 설명된다. 그러나, 본 기술 분야의 당업자는 본 발명의 방법 및 시스템이 다른 압축/압축해제 알고리즘 및 다른 유형의 저장 장치에 대해서도 유효하게 적용된다는 사실을 쉽게 이해할 수 있다. 또한, 본 기술 분야의 당업자는 자동차단(autoblocking)과 같은 본 발명의 방법 및 시스템의 일부 기능을 설명하지 않는다고 하더라도, 이들 기능이 본 명세서에서 설명되는 방법 및 시스템과 관련하여 수행될 수 있다는 사실을 역시 이해할 수 있다.
고속 하드웨어 LZ1 압축기는 통상 내용 지정 메모리(content addressable memory : CAM)를 사용한다. 이와는 대조적으로, 압축해제기는 통상 RAM만을 사용한다. 또한, 어드레스 디코더가 구비된 경우에는 CAM이 RAM의 기능도 수행할 수 있다. 이렇게 하면 개별적인 CAM 및 RAM 어레이를 사용하는 경우보다 더 작은 칩 면적이 요구된다.
CRAM은 데이터 압축 및 데이터 압축해제 양자를 각각 행할 수는 있으나 이를 동시에 행하지는 않는다. CRAM은 표준화가 가능한 압축기/압축해제기의 한 형태이며, 또 상대적으로 값싼 제조 비용으로 간단하게 제조될 수 있다. 따라서, 본 발명의 방법 및 시스템을 CRAM 기초형 압축기/압축해제기를 사용하여 설명한다. 그러나, 본 발명의 방법 및 시스템이 상기 CRAM 기초형 압축기/압축해제기에 대한 것으로만 제한되는 것은 아니다.
본 발명에 따른 방법 및 시스템을 더 상세하게 설명하기 위하여, 본 발명 시스템의 한 실시예의 블록도를 도시하는 도 2를 참조한다. 본 발명의 시스템(100)은 2개의 CRAM 압축기/압축해제기(104) 및 (114)를 포함하는데, 이들은 각각 인터페이스 A(102) 및 인터페이스 B(112)로 표시되는 하나의 호스트 인터페이스를 포함한다.
2개의 압축기/압축해제기(104) 및 (114)는 저장 버퍼(118)에 대한 공통 데이터 버퍼 인터페이스(116)을 공유한다. 또한, 2개의 압축기/압축해제기(104) 및 (114)는 저장 장치(120)에 대한 공통 인터페이스(121)을 역시 공유한다. 한 실시예에서, 저장 장치(120)은 테이프 드라이브이다. 특정 실시예에서는 인터페이스 A(102) 및 B(112)가 데이터 버퍼 인터페이스(116)에 결합될 수 있다. 다른 실시예에서 인터페이스 A(102)는 압축기/압축해제기(104)에 결합될 수 있으며, 인터페이스 B(112)는 압축기/압축해제기(114)에 결합될 수 있다. 또한, 데이터 버퍼 인터페이스(116)은 압축기/압축해제기(104) 및 (114)에 결합되거나 또는 저장 장치(120)에 대한 공통 인터페이스(121)에 결합될 수 있다. 또한, 압축기/압축해제기(104) 및 (114)는 공통 인터페이스(121)을 통하여 저장 장치(120)에 결합될 수 있다.
도 2의 시스템(100)에서는 압축기/압축해제기(104) 및 (114)가 시스템 제어기(122)에 대한 공통 인터페이스(123)을 공유한다. 한 실시예에서 시스템 제어기는 소정의 마이크로컨트롤러이다. 시스템 제어기(122)의 기능은 인터페이스 A(102) 또는 B(112)를 통하여 수신된 커맨드(command)를 해석(interpreting)하고 그 해석에 따라 시스템(100)의 전체 동작을 제어하는 것이다.
시스템 제어기(122)는 2개의 압축기/압축해제기(104) 또는(114) 가운데 어느 것이 호스트 A(102) 또는 B(112)를 통하여 데이터를 수신 또는 전송할 것인지를 지시한다. 또한, 시스템 제어기(122)는 압축기/압축해제기(104) 및 (114) 각각이 압축 또는 압축해제 장치로서 작동할 것인지를 결정한다. 시스템 제어기(122)는 데이터가 인터페이스 A(102) 또는 B(112), 압축기/압축해제기(104) 및 (114) 및 저장 장치(120)에 대한 공유 인터페이스(121)과 데이터 버퍼 저장 장치(118)에 대한 공유 데이터 버퍼 인터페이스(116) 사이에서 어떻게 결합되는지를 지시한다.
시스템(100)은 고성능 데이터 저장 및 검색 시스템, 또는 압축기/압축해제기(104) 및 (114)를 포함하는 2개의 동일한 구성소자의 가격이 비싸지 않은 다른 시스템에서 특히 유용하다.
바람직한 실시예에서는 데이터가 인터페이스 A(102) 또는 인터페이스 B(112)가운데 하나를 통하여 시스템(100)에 제공되거나 또는 시스템(100)으로부터 판독된다. 하나의 실시예에 있어서, 2개의 인터페이스 A(102) 및 B(112)는 SCSI 인터페이스이다. 따라서, 시스템(100)은 고성능 저장 서브시스템에서 요구되는 바와 같이 2개의 인터페이스를 포함한다. 제어기(122)는 어느 인터페이스가 임의의 소정 동작에 사용될 것인지를 결정한다.
시스템(100)의 하나의 실시예에서는 먼저 압축될 데이터가 인터페이스(116)을 통하여 데이터 버퍼(118)에 저장된다. 특정 실시예에서 버퍼(118)은 4 메가바이트(MB) RDRAM이다. 저장이 이루어지는 동안 데이터 완전성이 유지되는 것을 보장하기 위하여 데이터가 인터페이스(116)을 통하여 버퍼(118) 내에 저장되는 동안 그 데이터에 대한 섬체크가 구해질 수 있다. 또한, 버퍼(118)은 데이터, 압축된 데이터 및 각각의 데이터 집합에 대한 섬체크를 저장하기 위한 개별 부분을 가질 수 있다. 한 실시예에서는 버퍼(118)로부터의 데이터가 동일한 인터페이스(116)을 통하여 추후 검색된 다음 압축기/압축해제기(104) 및 (114) 양자에 동기적으로 공급된다.
인터페이스(116)을 통하여 버퍼(118)에 입력된 데이터에 대한 섬체크가 구해지는 경우에는, 일반적으로 동일한 데이터가 인터페이스(116)을 통하여 버퍼(118)로부터 검색될 때 섬체크가 다시 구해진다. 2개의 섬체크를 비교함으로써 데이터 버퍼(118)에 저장되는 동안 그리고 데이터 버퍼(118)로부터 검색되는 동안 어떠한 데이터 에러도 유입되지 않았다는 사실이 확인된다.
시스템(100)에 대한 한 실시예에 있어서, 공통 데이터 버퍼 인터페이스(116)은 RAMBUS이다. RAMBUS는 2개의 압축기/압축해제기 칩(104) 및 (114) 상에서 더 적은 수의 물리적 접속을 요구하며, 더 넓은 대역폭(bandwith)을 제공한다. 현재 데이터 버퍼로서 사용되는 RAMBUS 인터페이스 및 RDRAM 메모리는 500 MB/초까지의 대역폭을 지원할 수 있다.
제어기(122)는 압축기/압축해제기(104) 및 (114) 가운데 하나를 MASTER로 또 다른 하나를 SLAVE로 지정한다. 바람직한 실시예에서 MASTER는 동작을 위해 활성 상태의 인터페이스가 되는 호스트 인터페이스 A(104) 또는 B(114)를 포함하는 압축기/압축해제기(104) 또는(114)이다.
데이터는 먼저 MASTER의 인터페이스를 통하여 MASTER에 의해 수신되어 인터페이스(116)을 통하여 데이터 버퍼(118)의 한 부분에 저장된다. MASTER는 또한 후속적으로 인터페이스(116)을 통하여 상기 데이터를 검색하여 데이터 압축을 수행한다. 이와 동시에, SLAVE는 공통 인터페이스(116)을 통하여 동일한 데이터에 접근할 수 있으며 또 MASTER와 동기적으로 동일한 압축 동작을 수행한다. 한 실시예에서는 앞서 설명한 섬체크가 버퍼(118)로부터 검색된 데이터의 완전성을 보장하는데 사용될 수 있다.
상기 압축 동작이 이루어지는 동안, MASTER는 공통 인터페이스(116)을 통하여 버퍼(118)의 상이한 부분에 압축된 결과 데이터를 주기적으로 저장한다. 바람직한 실시예에서는 상기 데이터가 저장될 때 상기 데이터에 대한 개별적인 섬체크가 구해진다. 이러한 섬체크는 버퍼(118)에 저장된 압축 데이터가 저장 장치(120)에 기록되기 위해 검색될 때 완전성을 확인하기 위해 추후에 사용된다.
바람직한 실시예에서 SLAVE는 압축된 결과 데이터를 버퍼(118)에 기록하지 않는다. 그 대신에, SLAVE는 MASTER에 의해 버퍼(118) 내에 기록된 각각의 데이터 패키지(data package)를 단지 관찰하기만 한다. 한 실시예에서는 SLAVE가 공통 인터페이스(116) 상에서의 동작을 관찰함으로써 이러한 일을 수행한다. SLAVE는 MASTER에 의해 버퍼(118)에 기록되고 있는 데이터를 SLAVE 자신의 압축된 데이터와 비교한다. 버퍼(118)로 제공된 MASTER의 데이터 스트림과 SLAVE 데이터 스트림 사이의 어떠한 불일치(discrepancy)도 데이터 압축시 발생한 에러로 간주될 수 있다. 한 실시예에서는 데이터 스트림 비교가 압축기/압축해제기 구성소자(104) 및 (114)의 각각에 구비된 비교기에 의해 수행된다. 마찬가지로, 한 실시예에서는 섬체크 산출/체킹 프로세스(sumcheck building/checking process)가 압축기/압축해제기 구성소자(104) 및 (114)의 각각에 구비된 하드웨어 회로를 사용하여 달성된다.
압축해제 동작은 상기와 유사한 방식으로 수행된다. 저장 장치(120)으로부터 판독된 압축 데이터는 MASTER 및 SLAVE 압축기/압축해제기(104) 및 (114) 양자 모두에 동기된 상태로 직접 제공될 수 있다. 다른 실시예에서는 먼저 저장 장치(120)으로부터 판독된 압축 데이터가 인터페이스(116)을 통하여 버퍼(118)의 한 부분에 저장될 수 있다. 각각의 압축기/압축해제기(104) 또는(114)는 압축된 데이터를 버퍼(118)에 저장할 수 있다. 한 실시예에서는 후속 검색시 완전성을 보장하기 위하여 버퍼(118) 내에 저장되고, 버퍼(118)로부터 검색되는 압축된 데이터에 대한 섬체크가 구해질 수 있다. 버퍼(118)로부터 검색된 데이터는 압축기/압축해제기(104) 및 (114) 양자 모두에 제공된다.
바람직한 실시예에서 압축해제 동작이 이루어지는 동안 압축기/압축해제기(104) 및 (114) 양자 모두는 동기된 상태로 작동한다. 저장 장치(120)으로부터 인터페이스를 통하여 직접 전달되거나 또는 인터페이스(116) 상에 나타나는 데이터로부터 전달되는 데이터는 그 데이터가 버퍼(118)의 한 영역으로부터 MASTER에 의해 페칭(fetching)될 때 압축해제된다. 압축기/압축해제기(104) 또는(114) 중 어느 것이 MASTER로 지정되는지는 제어기(122)에 의해 결정된다. 바람직한 실시예에서는 제어기(122)가 인터페이스 A(102) 또는 B(112) 중 어느 것이 작동 상태에 있는지에 기초하여 압축기/압축해제기(104) 또는(114) 중 어느 것이 MASTER가 될 것인지를 결정한다.
MASTER는 압축해제된 데이터를 데이터 버퍼(118)의 개별적인 영역에 저장하거나 또는 자신의 호스트 인터페이스 A(102) 또는 B(112)에 직접 전달한다. 바람직한 실시예에서는 압축해제된 데이터가 버퍼(118)에 제공되거나 또는 직접 MASTER의 호스트 인터페이스 A(102) 또는(112)에 제공되는지에 상관없이 압축해제된 데이터가 공통 데이터 버퍼 저장 인터페이스(116) 상에 나타난다. 한 실시예에서는 결과 데이터가 버퍼링(buffering)되는 경우 앞서 설명한 방법과 동일한 섬체크 방법이 완전성을 보장하는데 사용된다. 결과 데이터를 버퍼링하는 것이 요구되지 않는 경우, 한 실시예에서는 공통 인터페이스(116)이 MASTER와 SLAVE 사이의 통신 채널 역할을 함으로써, SLAVE는 MASTER의 압축해제된 데이터 스트림을 인지(aware)하게 된다.
바람직한 실시예에서는 SLAVE가 버퍼(118)에 데이터를 저장하지 않거나 또는SLAVE의 호스트 인터페이스 A(102) 또는 B(112)에 데이터를 제공하지 않는다. 그 대신에, SLAVE는 공통 인터페이스(116) 상에 MASTER에 의해 제공되는 압축해제된 데이터를 관찰하며, 이를 SLAVE 자신의 처리 결과와 비교한다. 비교 결과 나타나는 어떠한 불일치도 데이터를 압축해제하는 동안 발생한 에러로 간주될 수 있다.
바람직한 실시예에서는 MASTER가 자신의 처리 결과인 압축해제된 데이터를 버퍼(118)에 저장한다. 압축해제된 데이터는 추후 MASTER에 의해 검색되어 관련된 인터페이스 A(102) 또는 B(112)를 통하여 호스트에 송신된다. 바람직한 실시예에서는 섬체크를 구함으로써 버퍼링 동작이 이루어지는 동안 데이터 완전성이 유지되었는지가 확인된다.
시스템(100)에서는 제어기(122)가 압축기/압축해제기(104)를 MASTER로 그리고 압축기/압축해제기(114)를 SLAVE로 지정하거나, 또는 압축기/압축해제기(114)를 MASTER로 그리고 압축기/압축해제기(104)를 SLAVE로 지정할 수 있다. 바람직한 실시예에서는 압축기/압축해제기(104) 및 (114) 양자 모두는 동일한 압축기/압축해제기, 동일한 데이터 비교기 및 동일한 섬체크 회로를 갖는 동일한 압축기/압축해제기이다.
시스템(100)에 의해 검출되지 않는 하드웨어 에러만이 2개의 독립적인 압축기/압축해제기(104) 및 (114)에 의해 행해진 동시에 발생하는 동일한 에러(identical and simultaneous error)라는 사실에 주목해야 한다. 이것은 종래의 시스템보다는 훨씬 더 높은 수준의 하드웨어 에러 검출 능력을 제공한다.
도 3은 저성능 시스템(200)의 한 실시예이다. 저성능 시스템(200)에서는 단일 압축기/압축해제기(204)가 저가격으로 매우 높은 데이터 완전성을 제공하는데 사용될 수 있다.
시스템(200)은 호스트에 대한 인터페이스(202)를 포함한다. 바람직한 실시예에서는 인터페이스(202)가 SCSI 인터페이스이다. 또한, 시스템(200)은 압축기/압축해제기(204)를 추가로 포함한다. 바람직한 실시예에서는 압축기/압축해제기(204)가 CRAM을 사용한다. 압축기/압축해제기(204)는 인터페이스(216)을 통하여 버퍼(218)에 결합된다. 한 실시예에서, 버퍼(218)은 4개의 부분(218-1) 내지(218-4)로 분할된다. 저장 장치(220)은 압축기/압축해제기(204)에 직접 결합되거나 또는 인터페이스(216)을 통하여 버퍼(218)에 결합될 수 있다. 한 실시예에서, 저장 장치(220)은 테이프이다. 호스트 인터페이스(202)는 인터페이스(216)을 통하여 버퍼(218)에 결합되거나, 또는 압축기/압축해제기(204)에 직접 결합될 수 있다. 바람직한 실시예에서, 모든 데이터 전송은 버퍼(218)을 통하여 수행된다.
도 4는 도 3의 시스템(200)을 사용하여 데이터를 압축하기 위한 방법(300)의 플로우 차트(flow chart)를 도시한다. 도 4를 참조하면, 데이터는 단계(301)을 통하여 시스템(200)에 제공된다. 단계(301)에서, 데이터는 호스트(202)를 통하여 입력될 때 패리티 체크(parity check)된 다음 영역(218-1)에 저장된다. 섬체크 A는 데이터가 역시 단계(301)을 통하여 입력될 때에 구해진다. 섬체크는 단계(302)를 통하여 버퍼(218)의 영역(218-2)에 저장된다.
그 다음으로, 데이터가 압축된다. 데이터는 버퍼 영역(218-1)로부터 검색되어 단계(303)에서 압축기에 공급된다. 압축된 데이터 스트림은 역시 단계(303)에서버퍼(218)의 영역(218-3)에 저장된다. 데이터가 검색되어 압축될 때, 단계(303)을 통하여 입력 데이터에 대한 섬체크 A가 다시 구해진다. 단계(305)에서는, 단계(303)을 통하여 구해진 섬체크 A가 완료되면 단계(302)에서 영역(218-2)에 저장된 섬체크 A와 비교된다. 이러한 비교를 통해 저장/검색 처리 과정에서 원시 데이터가 오염되지 않았음이 확인된다. 또한, 버퍼 영역(218-3)에 저장되는 압축된 결과 데이터에 대한 다른 섬체크 B가 단계(303)에서 형성된다. 섬체크 B는 궁극적으로 단계(304)를 통하여 버퍼 영역(218-4)에 저장된다.
압축 프로세스를 체킹하기 위하여, 단계(306)에서는 버퍼 영역(218-3)에 저장된 압축된 데이터가 페칭된 후 압축해제를 위해 압축기/압축해제기(204)에 공급(feeding)된다. 압축기/압축해제기로부터의 출력은 폐기된다. 그러나, 단계(306)에서는 버퍼 영역(218-3)으로부터의 압축된 데이터에 대한 섬체크 B가 다시 구해진다. 또한, 단계(306)을 통하여 압축해제된 후 폐기된 데이터에 대한 다른 섬체크 A가 구해진다.
단계(307)에서는 섬체크 B가 단계(303)에서 구해진 섬체크 B와 비교되고 버퍼 영역(218-4)에 저장된다. 단계(308)에서, 섬체크 A가 단계(301)에서 구해진 섬체크 A와 비교되고 버퍼 영역(218-2)에 저장된다. 상기 섬체크 양자 모두가 일치할 경우 압축/압축해제 처리가 에러없이 수행되었을 가능성이 매우 높다. 마지막으로, 단계(309)에서는 버퍼 영역(218-3)의 압축된 데이터가 인터페이스(221)을 통하여 저장 장치(220)에 공급된다. 버퍼 영역(218-3)의 압축된 데이터가 검색될 때, 섬체크 B가 단계(309)에서 다시 구해진다. 그 다음으로, 단계(310)에서 저장된 데이터가 오염되지 않았음을 보장하기 위하여 섬체크 B가 버퍼 영역(218-4)의 값과 비교된다.
도 5는 도 3의 시스템(200)을 사용하여 데이터를 압축해제하기 위한 방법(400)을 도시한다. 도 5를 참조하면, 데이터가 단계(401)을 통하여 저장 장치(220)으로부터 인터페이스(221)을 통하여 시스템(200)에 제공된다. 이러한 데이터는 버퍼(218)의 버퍼 영역(218-1)에 저장된다. 단계(401)에서, 압축된 데이터가 버퍼 영역(218-1)에 저장될 때 섬체크 A가 구해진다. 그 다음으로, 섬체크 A는 단계(402)를 통하여 버퍼 영역(218-2)에 저장된다.
다음으로, 데이터가 압축해제된다. 데이터는 버퍼 영역(218-1)로부터 검색되어 단계(403)에서 압축기/압축해제기(207)에 공급된다. 압축해제된 결과적인 데이터 스트림도 단계(403)에서 버퍼 영역(218-3)에 저장된다. 이와 동시에, 버퍼 영역(218-1)로부터 검색된 데이터에 대한 섬체크 A가 단계(403)을 통하여 다시 구해진다. 이러한 섬체크 A가 완료되면 저장/검색 처리가 진행되는 동안 데이터가 오염되지 않았음을 확인하기 위하여 상기 섬체크 A는 단계(405)를 통하여 버퍼 영역(218-2)에 저장된 섬체크와 비교된다. 버퍼 영역(218-3)에 저장되는 압축해제된 데이터에 대한 제 2 섬체크 B가 구해지며, 이는 궁극적으로 단계(404)에서 버퍼 영역(218-4)에 저장된다.
다음에, 압축해제 프로세스를 체킹하기 위하여, 압축해제된 결과 데이터는 버퍼 영역(218-3)으로부터 데이터를 페칭함으로써 단계(406)에서 압축 회로에 공급된다. 또한, 단계(406)에서는 섬체크 B가 구해진다. 압축된 결과 데이터는 폐기되나, 단계(406)을 통하여 압축된 결과 데이터로부터 다른 섬체크 A가 구해진다. 그 다음으로, 섬체크 B가 단계(407)에서 버퍼 영역(218-4)의 값과 비교된다. 단계(408)에서, 섬체크 A가 버퍼 영역(218-2)의 값과 비교된다.
만일, 섬체크 A 및 B 양자 모두가 버퍼 영역(218-2) 및 (218-4) 양자 모두와 각각 일치하는 경우, 압축해제/압축 프로세스가 에러없이 수행되었을 확률이 높다. 마지막으로, 단계(409)에서 버퍼 영역(218-3)에 있는 압축해제된 데이터가 검색되고 인터페이스(202)를 통하여 호스트에 인가된다. 이러한 데이터가 검색될 때, 섬체크 B가 단계(409)를 통하여 구해진다. 이러한 섬체크 B는 저장 및 검색이 이루어지는 동안 압축해제된 데이터에 오염이 발생하지 않았음을 보장하기 위하여 단계(410)을 통하여 버퍼 영역(218-4)에 있는 값과 비교된다.
다시 도 3을 참조하면, 하나의 실시예에 있어서 버스(216)은 RAMBUS이며 또 인터페이스(202)는 SCSI 인터페이스이다. 현재의 SCSI 인터페이스는 매초 40 MB의 속도로 데이터를 전송할 수 있다. 시스템(200)이 높은 완전성을 가지는 데이터 압축을 유지하기 위해서는 압축기/압축해제기(204)가 각각의 데이터 블록을 SCSI 전송 속도를 따라갈 수 있도록 빠르게 압축한 다음 압축해제하여야 한다. 이를 달성하기 위해서 압축기/압축해제기(204)가 약 80 MB/초의 속도로 데이터를 압축 또는 압축해제할 수 있어야 한다. 500 MB/초의 데이터 전송 속도를 가지는 RAMBUS는 상기 유지 동작에 필요한 것으로 버퍼(218)에 대한 양 방향으로의 모든 데이터 전송의 전체 대역폭 요구사항을 수용할 수 있다는 사실에 주목해야 한다.
본 발명의 방법 및 시스템은 고성능 및 저성능 저장 시스템 양자 모두에 높은 완전성을 가지는 데이터 압축/압축해제 능력을 제공할 수 있다. 위에서 설명된 실시예에서 사용된 압축기/압축해제기, 즉 CRAM을 사용하는 압축기/압축해제기는 현재 사용되고 있는 방법보다 비용이 적게 들며 또 제조가 더 용이하다. 한 실시예에서, 본 발명의 방법 및 시스템은 2개의 동일한 압축기/압축해제기 가운데 하나를 MASTER로 그리고 다른 하나를 SLAVE로 지정함으로써 높은 완전성을 가지는 데이터 압축/압축해제를 행한다. 그 다음으로, 양자 모두는 동시에 데이터를 압축 또는 압축해제한다. MASTER가 자신의 결과 데이터를 버퍼 저장 장치에 저장하는 동안, SLAVE는 상기 MASTER의 데이터 스트림을 모니터링하며 또 자신의 결과 데이터 스트림과 동일한지를 체킹한다.
다른 실시예에서는 단지 하나의 압축기/압축해제기만이 제공된다. 그 다음으로, 단일 압축기/압축해제기는 데이터 블록을 압축한 다음 압축해제하거나, 경우에 따라서는 데이터 블록을 압축해제한 다음 압축한다. 섬체크가 각각의 단계에서 구해지며, 이는 데이터 저장 버퍼 하드웨어의 완전성과 압축/압축해제 하드웨어의 데이터 완전성 양자 모두를 체킹하기 위해 이전에 저장된 섬체크 값과 비교된다. 그 결과, 각각의 실시예는 매우 높은 데이터 완전성을 가지는 데이터 버퍼 저장 능력 및 압축/압축해제 능력을 제공한다.
따라서, 본 발명의 시스템 및 방법은 더 간단하고 더 저렴한 구성 소자를 사용하여 매우 높은 수준의 완전성을 가지는 데이터 압축 및 압축해제를 제공한다. 또한, 고성능 시스템인 경우 상기와 같은 2개의 구성 소자를 사용함으로써 이중 호스트 인터페이싱 및 더 양호한 수준의 압축 하드웨어 체킹이 제공될 수 있다. 저성능 시스템은 단지 하나의 구성 소자만을 사용할 수 있으므로 현재의 고성능 시스템과 대등한 데이터 완전성 체킹을 제공할 수 있다. 전체 시스템에 있어서 단일의 동일한 구성 소자를 사용하는 것은 현재 단일 설계가 대량 생산에 사용될 수 있으므로 규모 경제적 관점에서 또다른 장점을 제공한다.
비록 본 발명이 도시된 실시예에 따라 설명되었지만, 본 기술 분야의 당업자는 상기 실시예들이 변형가능하고 또 이러한 변형들은 본 발명의 정신 및 범위 내에 속한다는 사실을 쉽게 인식할 수 있다. 따라서, 첨부된 특허청구 범위의 정신 및 범위로부터 벗어남이 없이 본 기술의 당업자에 의해 많은 변형들이 행해질 수 있다.

Claims (21)

  1. 제 1 인터페이스, 제 2 인터페이스 및 저장 수단을 포함하며, 높은 데이터 완전성(data integrity)을 가지는 데이터 압축을 제공하는 시스템에 있어서,
    a) 제 1 인터페이스 및 저장 수단에 결합되며, 제 1 인터페이스를 통하여 제공되는 데이터를 압축하고, 상기 저장 수단으로부터의 데이터를 압축해제(decompressing)하며, 제 1 데이터 스트림(data stream)을 제공하기 위한 제 1 압축/압축해제 수단(first compression/decompression means) 및
    b) 제 2 인터페이스 및 저장 수단에 결합되며, 제 2 인터페이스를 통하여 제공된 데이터를 압축하고, 상기 저장 수단으로부터의 데이터를 압축해제하며, 제 2 데이터 스트림을 제공하기 위한 제 2 압축/압축해제 수단(second compression/decompression means)을 포함하며,
    제 1 및 제 2 압축/압축해제 수단이 각각 상기 저장 수단에 대한 공통 공유 인터페이스(common shared interface)를 통하여 서로의 입력 및 출력 양자를 모니터링할 수 있고,
    제 2 압축/압축해제 수단이 마스터 장치(master device)인 경우 제 1 압축/압축해제 수단이 제 2 데이터 스트림을 모니터링하고 또한 제 2 데이터 스트림을 제 1 데이터 스트림과 비교하며,
    제 1 압축/압축해제 수단이 마스터 장치인 경우 제 2 압축/압축해제 수단이 제 1 데이터 스트림을 모니터링하고 또한 제 1 데이터 스트림을 제 2 데이터 스트림과 비교하는 데이터 압축 시스템.
  2. 제 1항에 있어서,
    제 1 압축/압축해제 수단이 공통 버스를 통하여 제 2 압축/압축해제 수단에 결합되는 데이터 압축 시스템.
  3. 제 2항에 있어서,
    공통 버스가 RAMBUS를 추가적으로 포함하는 데이터 압축 시스템.
  4. 제 3항에 있어서,
    제 1 압축/압축해제 수단은 제 1 내용 지정 메모리(content addressable memory) 및 제 1 내용 지정 메모리에 결합되는 제 1 디코더를 추가적으로 포함하고,
    제 2 압축/압축해제 수단은 제 2 내용 지정 메모리 및 제 2 내용 지정 메모리에 결합되는 제 2 디코더를 추가적으로 포함하는 데이터 압축 시스템.
  5. 제 4항에 있어서,
    제 1 압축/압축해제 수단 및 제 2 압축/압축해제 수단에 결합되고, 제 1 압축/압축해제 수단과 제 2 압축/압축해제 수단 가운데 하나를 마스터 장치(master device)로 지정하고 또한 제 1 압축/압축해제 수단과 제 2 압축/압축해제 수단 가운데 다른 하나를 슬레이브 장치(slave device)로 지정하기 위한 제어기를 추가적으로 포함하는 데이터 압축 시스템.
  6. 제 5항에 있어서,
    제 2 압축/압축해제 수단이 마스터 장치인 경우 제 1 압축/압축해제 수단은 제 2 출력을 제 1 출력과 비교하기 위한 제 1 비교 수단을 추가적으로 포함하고, 제 1 압축/압축해제 수단이 마스터 장치인 경우 제 2 압축/압축해제 수단은 제 1 출력을 제 2 출력과 비교하기 위한 제 2 비교 수단을 추가적으로 포함하는 데이터 압축 시스템.
  7. 제 6항에 있어서,
    제 1 비교 수단과 제 2 비교 수단이 각각 비교기를 추가적으로 포함하는 데이터 압축 시스템.
  8. 제 7항에 있어서,
    제어기는 데이터가 제 1 인터페이스를 통하여 제공되는 경우에는 제 1 압축/압축해제 수단을 마스터 장치로 지정하고 제 2 압축/압축해제 수단을 슬레이브 장치로 지정하며, 데이터가 제 2 인터페이스를 통하여 제공되는 경우에는 제 1 압축/압축해제 수단을 슬레이브 장치로 지정하고 제 2 압축/압축해제 수단을 마스터 장치로 지정하는 데이터 압축 시스템.
  9. 높은 데이터 완전성을 가지는 데이터 압축을 제공하기 위한 방법에 있어서,
    a) 제 1 인터페이스 및 저장 수단에 결합되며, 제 1 인터페이스를 통하여 제공되는 데이터를 압축하고, 상기 저장 수단으로부터의 데이터를 압축해제(decompressing)하며, 제 1 데이터 스트림(data stream)을 제공하기 위한 제 1 압축/압축해제 수단을 제공하는 단계; 및
    b) 제 2 인터페이스 및 저장 수단에 결합되며, 제 2 인터페이스를 통하여 제공된 데이터를 압축하고, 상기 저장 수단으로부터의 데이터를 압축해제하며, 제 2 데이터 스트림을 제공하기 위한 제 2 압축/압축해제 수단을 제공하는 단계를 포함하며,
    제 2 압축/압축해제 수단이 마스터 장치인 경우 제 1 압축/압축해제 수단이 제 2 데이터 스트림을 모니터링하고 또한 제 2 데이터 스트림을 제 1 데이터 스트림과 비교하며,
    제 1 압축/압축해제 수단이 마스터 장치인 경우 제 2 압축/압축해제 수단이 제 1 데이터 스트림을 모니터링하고 또한 제 1 데이터 스트림을 제 2 데이터 스트림과 비교하는 데이터 압축 방법.
  10. 저렴한 비용(low cost)으로 높은 완전성을 갖는 데이터를 압축하는 방법에 있어서,
    a) 데이터에 대해 제 1 에러 체킹을 수행하는 단계;
    b) 제 1 에러 체킹을 저장하는 단계;
    c) 데이터를 압축/압축해제 수단에 제공하는 단계;
    d) 데이터 스트림을 제공하기 위하여 데이터를 압축하는 단계;
    e) 데이터 스트림을 저장하는 단계;
    f) 데이터 스트림을 압축/압축해제 수단에 제공하는 단계;
    g) 데이터 스트림을 압축해제하는 단계;
    h) 압축해제된 출력에 대해 제 2 에러 체킹을 수행하는 단계; 및
    i) 제 2 에러 체킹을 제 1 에러 체킹과 비교하는 단계를 포함하는 데이터 압축 방법.
  11. 제 10항에 있어서, 데이터 스트림을 제공하기 위하여 데이터를 압축하는 상기 단계 d)는
    d1) 데이터 스트림을 제공하기 위하여 데이터를 압축하는 단계; 및
    d2) 데이터 스트림에 대해 제 3 에러 체킹을 수행하는 단계를 추가적으로 포함하고, 데이터 스트림을 저장하는 상기 단계 e)는
    e1) 데이터 스트림을 저장하는 단계; 및
    e2) 제 3 에러 체킹을 저장하는 단계를 추가적으로 포함하는 데이터 압축 방법.
  12. 제 11항에 있어서,
    데이터 스트림을 압축/압축해제 수단에 제공하는 상기 단계 f)가
    f1) 데이터 스트림을 압축/압축해제 수단에 제공하는 단계;
    f2) 압축/압축해제 수단에 제공된 데이터 스트림에 대해 제 4 에러 체킹을 수 행하는 단계; 및
    f3) 제 4 에러 체킹을 제 3 에러 체킹과 비교하는 단계를 추가적으로 포함하는 데이터 압축 방법.
  13. 제 12항에 있어서,
    데이터를 압축/압축해제 수단에 제공하는 상기 단계 c)가
    c1) 데이터 스트림을 압축/압축해제 수단에 제공하는 단계;
    c2) 압축/압축해제 수단에 제공된 데이터에 대해 제 5 에러 체킹을 수행하는 단계; 및
    c3) 제 5 에러 체킹을 제 1 에러 체킹과 비교하는 단계를 추가적으로 포함하는 데이터 압축 방법.
  14. 제 13항에 있어서,
    상기 단계 c1), c2), d1), d2) 및 e1)이 실질적으로 동시에 행해지는 데이터 압축 방법.
  15. 제 14항에 있어서,
    상기 단계 f1), f2), g) 및 h)가 실질적으로 동시에 행해지는 데이터 압축 방법.
  16. 저렴한 비용으로 높은 완전성을 갖는 데이터를 압축해제하는 방법에 있어서,
    a) 데이터에 대해 제 1 에러 체킹을 수행하는 단계;
    b) 제 1 에러 체킹을 저장하는 단계;
    c) 데이터를 압축/압축해제 수단에 제공하는 단계;
    d) 데이터 스트림을 제공하기 위하여 데이터를 압축하는 단계;
    e) 데이터 스트림을 저장하는 단계;
    f) 데이터 스트림을 압축/압축해제 수단에 제공하는 단계;
    g) 데이터 스트림을 압축하는 단계;
    h) 압축된 데이터 스트림에 대해 제 2 에러 체킹을 수행하는 단계; 및
    i) 제 2 에러 체킹을 제 1 에러 체킹과 비교하는 단계를 포함하는 데이터 압축해제 방법.
  17. 저장 수단 및 인터페이스를 포함하고, 저렴한 비용으로 높은 데이터 완전성을 갖는 데이터 압축을 제공하는 시스템에 있어서,
    a) 저장 수단 및 인터페이스에 결합되며, 인터페이스로부터 제공되는 데이터를 압축하고, 저장 수단에 의해 제공되는 데이터를 압축해제하기 위한 압축/압축해제 수단-여기서 압축/압축해제 수단은 데이터 스트림을 저장수단에 제공하기 위하여 데이터를 압축하고, 데이터 압축이 완료된 후 압축해제된 데이터 스트림을 제공하기 위하여 데이터 스트림을 압축해제함-; 및
    b) 데이터를 압축해제된 데이터 스트림과 비교하기 위한 에러 비교 수단을 포함하는 데이터 압축 시스템.
  18. 제 29항에 있어서,
    에러 비교 수단이
    a) 데이터에 대해 에러 체킹을 수행하기 위한 제 1 에러 체킹 수단;
    b) 압축해제된 데이터 스트림에 대해 에러 체킹을 수행하기 위한 제 2 에러 체킹; 및
    c) 제 1 에러 체킹을 제 2 에러 체킹과 비교하기 위한 비교 수단을 추가적으로 포함하는 데이터 압축 시스템.
  19. 제 18항에 있어서,
    제 1 에러 체킹 수단은 제 1 섬체크(sumcheck)를 구하기 위한 수단을 추가적으로 포함하고, 제 2 에러 체킹 수단은 제 2 섬체크를 구하기 위한 수단을 추가적으로 포함하는 데이터 압축 시스템.
  20. 제 19항에 있어서, 압축/압축해제 수단이 내용 지정 메모리 및 내용 지정 메모리에 결합되는 디코더를 추가적으로 포함하는 데이터 압축 시스템.
  21. 저장 수단 및 인터페이스를 포함하고, 저렴한 비용으로 높은 데이터 완전성을 갖는 데이터 압축해제를 제공하는 시스템에 있어서,
    a) 저장 수단 및 인터페이스에 결합되며, 인터페이스로부터 제공되는 데이터를 압축하고, 저장 수단에 의해 제공되는 데이터를 압축해제하기 위한 압축/압축해제 수단―여기서 압축/압축해제 수단은 데이터 스트림을 저장수단에 제공하기 위하여 데이터를 압축해제하고, 데이터 압축해제가 완료된 후 압축된 데이터 스트림을 제공하기 위하여 데이터 스트림을 압축함-; 및
    b) 데이터를 압축된 데이터 스트림과 비교하기 위한 에러 비교 수단을 포함하는 데이터 압축해제 시스템.
KR1019980000620A 1997-04-22 1998-01-12 우수한 데이터 완전성을 제공하는 저장 서브시스템용 압축 및데이터 처리 칩 및 그 방법 KR100324154B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/847,955 1997-04-22
US08/847,955 US6026508A (en) 1997-04-22 1997-04-22 Storage sub-system compression and dataflow chip offering excellent data integrity
US8/847,955 1997-04-22

Publications (2)

Publication Number Publication Date
KR19980079595A KR19980079595A (ko) 1998-11-25
KR100324154B1 true KR100324154B1 (ko) 2002-06-24

Family

ID=25301938

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980000620A KR100324154B1 (ko) 1997-04-22 1998-01-12 우수한 데이터 완전성을 제공하는 저장 서브시스템용 압축 및데이터 처리 칩 및 그 방법

Country Status (5)

Country Link
US (1) US6026508A (ko)
EP (1) EP0874365A3 (ko)
JP (1) JPH10320224A (ko)
KR (1) KR100324154B1 (ko)
SG (1) SG81924A1 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6874109B1 (en) 1999-11-23 2005-03-29 Janusz Rajski Phase shifter with reduced linear dependency
US6684358B1 (en) * 1999-11-23 2004-01-27 Janusz Rajski Decompressor/PRPG for applying pseudo-random and deterministic test patterns
WO2001039254A2 (en) * 1999-11-23 2001-05-31 Mentor Graphics Corporation Continuous application and decompression of test patterns to a circuit-under-test
US7493540B1 (en) * 1999-11-23 2009-02-17 Jansuz Rajski Continuous application and decompression of test patterns to a circuit-under-test
US8533547B2 (en) * 1999-11-23 2013-09-10 Mentor Graphics Corporation Continuous application and decompression of test patterns and selective compaction of test responses
US9664739B2 (en) 1999-11-23 2017-05-30 Mentor Graphics Corporation Continuous application and decompression of test patterns and selective compaction of test responses
US9134370B2 (en) 1999-11-23 2015-09-15 Mentor Graphics Corporation Continuous application and decompression of test patterns and selective compaction of test responses
US6353842B1 (en) * 1999-11-23 2002-03-05 Janusz Rajski Method for synthesizing linear finite state machines
US6557129B1 (en) * 1999-11-23 2003-04-29 Janusz Rajski Method and apparatus for selectively compacting test responses
US6327687B1 (en) 1999-11-23 2001-12-04 Janusz Rajski Test pattern compression for an integrated circuit test environment
US6300885B1 (en) * 2000-04-14 2001-10-09 International Business Machines Corporation Dual aldc decompressors inside printer asic
EP1356598B1 (en) * 2001-01-17 2012-05-30 Koninklijke Philips Electronics N.V. Robust checksums
US7437640B2 (en) * 2003-02-13 2008-10-14 Janusz Rajski Fault diagnosis of compressed test responses having one or more unknown states
DE602004014904D1 (de) * 2003-02-13 2008-08-21 Mentor Graphics Corp Komprimieren von testantworten unter verwendung eines kompaktors
US7302624B2 (en) * 2003-02-13 2007-11-27 Janusz Rajski Adaptive fault diagnosis of compressed test responses
US7509550B2 (en) * 2003-02-13 2009-03-24 Janusz Rajski Fault diagnosis of compressed test responses
US7231570B2 (en) * 2004-05-26 2007-06-12 Syntest Technologies, Inc. Method and apparatus for multi-level scan compression
US8370544B2 (en) * 2009-07-23 2013-02-05 Stec, Inc. Data storage system with compression/decompression
JP7493001B2 (ja) * 2022-09-13 2024-05-30 株式会社日立製作所 圧縮伸長装置、ストレージシステム、および圧縮伸長方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63309063A (ja) * 1987-06-10 1988-12-16 Canon Inc 画像処理装置
JPH03175538A (ja) * 1989-12-04 1991-07-30 Nec Corp 二重化処理装置
JPH08116274A (ja) * 1994-10-18 1996-05-07 Fuji Xerox Co Ltd データ圧縮伸長システムおよびディスクアレイ装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3444528A (en) * 1966-11-17 1969-05-13 Martin Marietta Corp Redundant computer systems
MX4130E (es) * 1977-05-20 1982-01-04 Amdahl Corp Mejoras en sistema de procesamiento de datos y escrutinio de informacion utilizando sumas de comprobacion
DE3239434C1 (de) * 1982-10-25 1984-01-19 Siemens AG, 1000 Berlin und 8000 München Einrichtung zum Überwachen der Funktionsfähigkeit eines Mehr-Rechnersystems
US5287511A (en) * 1988-07-11 1994-02-15 Star Semiconductor Corporation Architectures and methods for dividing processing tasks into tasks for a programmable real time signal processor and tasks for a decision making microprocessor interfacing therewith
GB9001312D0 (en) * 1990-01-19 1990-03-21 Hewlett Packard Ltd Storage of compressed data
US5410671A (en) * 1990-05-01 1995-04-25 Cyrix Corporation Data compression/decompression processor
US5247638A (en) * 1990-06-18 1993-09-21 Storage Technology Corporation Apparatus for compressing data in a dynamically mapped virtual data storage subsystem
US5167034A (en) * 1990-06-18 1992-11-24 International Business Machines Corporation Data integrity for compaction devices
US5293388A (en) * 1990-11-13 1994-03-08 Hewlett-Packard Company Compression/decompress with ECC data flow architecture
US5455576A (en) * 1992-12-23 1995-10-03 Hewlett Packard Corporation Apparatus and methods for Lempel Ziv data compression with improved management of multiple dictionaries in content addressable memory
US5384780A (en) * 1993-05-14 1995-01-24 Codex Corporation High speed modem, method and system for achieving synchronous data compression
US5446839A (en) * 1993-05-26 1995-08-29 Intel Corporation Method for controlling dataflow between a plurality of circular buffers
US5703887A (en) * 1994-12-23 1997-12-30 General Instrument Corporation Of Delaware Synchronization and error detection in a packetized data stream

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63309063A (ja) * 1987-06-10 1988-12-16 Canon Inc 画像処理装置
JPH03175538A (ja) * 1989-12-04 1991-07-30 Nec Corp 二重化処理装置
JPH08116274A (ja) * 1994-10-18 1996-05-07 Fuji Xerox Co Ltd データ圧縮伸長システムおよびディスクアレイ装置

Also Published As

Publication number Publication date
US6026508A (en) 2000-02-15
SG81924A1 (en) 2001-07-24
KR19980079595A (ko) 1998-11-25
EP0874365A2 (en) 1998-10-28
EP0874365A3 (en) 2004-05-06
JPH10320224A (ja) 1998-12-04

Similar Documents

Publication Publication Date Title
KR100324154B1 (ko) 우수한 데이터 완전성을 제공하는 저장 서브시스템용 압축 및데이터 처리 칩 및 그 방법
US7020798B2 (en) Detecting low-level data corruption
US6883079B1 (en) Method and apparatus for using data compression as a means of increasing buffer bandwidth
US5630092A (en) System and method for transferring compressed and uncompressed data between storage systems
US7752526B2 (en) Nonvolatile memory apparatus and data processing system
US9141554B1 (en) Methods and apparatus for data processing using data compression, linked lists and de-duplication techniques
US7899945B2 (en) Interface device and method for command processing
US20040243906A1 (en) Method and apparatus for parallelly processing data and error correction code in memory
US5968149A (en) Tandem operation of input/output data compression modules
CA2218296C (en) Method and apparatus for storing and retrieving error check information
CN111506452B (zh) 数据存储保护方法、装置、计算机设备及存储介质
US7146494B2 (en) High speed data transfer between mainframe storage systems
US6751714B2 (en) Systems and methods for relocation of compressed data tracks
JP7479441B2 (ja) ストレージ装置
US11349494B2 (en) Data compression apparatus and data compression method
US11397546B2 (en) Memory system
US9436550B2 (en) Systems and methods for internal disk drive data compression
US6170034B1 (en) Hardware assisted mask read/write
US6915475B1 (en) Data integrity management for data storage systems
JPH06274279A (ja) ミラードディスクおよびその制御方式
CN113552999B (zh) 存储装置
JPH08116274A (ja) データ圧縮伸長システムおよびディスクアレイ装置
US6952452B2 (en) Method of detecting internal frame skips by MPEG video decoders
US20240134528A1 (en) Resolving deduplication matches when using non-cryptographic hash
CA2333386A1 (en) Circuit and method for rapid checking of error correction codes using cyclic redundancy check

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20041110

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee