KR100242868B1 - 압축된 데이터 캐쉬 저장 시스템 - Google Patents

압축된 데이터 캐쉬 저장 시스템 Download PDF

Info

Publication number
KR100242868B1
KR100242868B1 KR1019970015167A KR19970015167A KR100242868B1 KR 100242868 B1 KR100242868 B1 KR 100242868B1 KR 1019970015167 A KR1019970015167 A KR 1019970015167A KR 19970015167 A KR19970015167 A KR 19970015167A KR 100242868 B1 KR100242868 B1 KR 100242868B1
Authority
KR
South Korea
Prior art keywords
data
chain
dram
address
cache
Prior art date
Application number
KR1019970015167A
Other languages
English (en)
Other versions
KR980010784A (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 KR980010784A publication Critical patent/KR980010784A/ko
Application granted granted Critical
Publication of KR100242868B1 publication Critical patent/KR100242868B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 고속으로 작은 블록 단위로 데이터를 액세스하는 프로세서와 큰 전송단위로 데이터를 저장하는 대용량의 저장 매체 사이에서 랜덤 액세스 캐쉬 저장을 제공하기 위한 시스템 및 관련된 구조에 관한 것이다. 비손실 데이터 압축은 디램 내에 저장되기 전에 큰 전송 단위 데이터에 적용된다. 캐쉬 어드레스 공간은 디램내에서 미리 특정된 패턴없이 할당되지만 체인들을 통해 연결되는 할당 단위내에 할당된다. 체인의 길이는 전송 단위의 압축률 특성과 일치하도록 조정되고 나머지 체인을 스캐빈지(scavenge)하기 위한 자원(resource)을 포함한다. 전송 단위보다 훨씬 작은 논리 블록들은 디램으로부터 판독되는 동안 액세스되고 신장된다. 본 발명 시스템 구조는 인덱스를 통하여 개별 논리 블록들을 액세스하기 위한 자원을 제공한다. 본 발명은 고밀도로 압축가능한 데이터를 판독하는 마그네틱 또는 광디스크 대용량 저장 시스템과 관련하여 작은 캐쉬 디램을 갖는 디스크 드라이브 캐쉬 시스템에 특히 적합하다.

Description

압축된 데이터 캐쉬 저장 시스템
제1도는 본 발명의 비손실 데이터 압축 캐쉬 인터페이스(interface)의 입력과 출력 및 개념적으로 관련되는 블록도(block diagram).
제2도는 본 발명이 바람직하게 사용되는 컴퓨터 시스템의 개략적인 블록도.
제3도는 본 발명에 특징적인 비손실 데이터 압축 캐쉬 인터페이스의 실시예에 있어서 기능적 요소들을 보여주는 대략적 블록도.
제4도는 다양한 단위 크기를 갖는 데이터를 효율적으로 저장하기 위한 캐쉬 디램(DRAM) 내의 저장 위치들의 연결을 개략적으로 도시한 도면.
제5도는 연결된 체인과 캐쉬 디램 내의 어드레스(address) 사이의 관계를 개략적으로 예시한 도면.
제6도는 4킬로바이트의 논리 블록들에 의해 실행된 캐쉬 디램 구조를 개략적으로 예시한 도면.
제7도은 캐쉬 디램의 인덱스(index) 구조를 개략적으로 예시한 도면.
제8도 및 제9도는 인덱스에 들어 있는 워드(word) 내의 비트들의 할당을 개략적으로 예시한 도면.
제10도는 비어 있는 체인(free chain)에 포함시키기 위한 여분의 어드레스 공간을 스캐빈징(scavenging)하는 것을 개략적으로 예시한 도면.
* 도면의 주요부분에 대한 부호의 설명
1 : 고용량 저속 데이터 저장 시스템 3 : 입출력 인터페이스
4 : 컴퓨터 시스템 버스 6 : 프로세서
7,8 : 캐쉬 9 : 메인 메모리
11 : 입출력 서브 시스템 12 : 중간 속도 데이터 압축기
13 : 고속 데이터 신장기 14 : 압축 데이터 캐쉬 제어기
16 : 디램(DRAM) 17 : 압축기
18 : 4K 카운터 19 : 컴퓨터/DMA 제어기
21 : DMA형 캐쉬 기록 제어기 22 : 에스램(SRAM)
23 : DMA형 캐쉬 판독 제어기 24 : 신장기
26 : 섹터 선택기
[발명의 목적]
[발명이 속하는 기술분야 및 그 분야의 종래기술]
본 발명은 1994년 12월 14일자 미국 특허 출원 번호(serial number) 08/355,865호; 1995년 3월 23일자 08/409,766호; 1995년 9월 29일자 08/536,901호; 1995년 8월 18일자 08/516,773호; 1994년 4월 15일자 08/228,321호; 1994년 10월 7일자 08/320,088호; 1993년 12월 23일자 08/173,738호; 및 1994년 8월 15일자 08/290,451호 미국 출원들과 관련되어 있다. 상기 관련되는 모든 특허 출원들은 본 발명의 출원인에게 양도되었다.
본 발명은 일반적으로 컴퓨터 시스템 등에서의 데이터 캐쉬(cache)에 관한 것이다. 좀 더 구체적으로, 본 발명은 저속 대용량의 데이터 저장 시스템과 고속 데이터 처리 시스템 사이에 위치된 캐쉬 내에서 데이터의 압축 저장에 관한 것이다.
마그네틱디스크, 광디스크, 테이프, PCMCIA카드 등과 같은 고용량, 비휘발성 데이터 저장 디바이스들은 일반적으로 컴퓨터 시스템에 사용되어 대용량의 판독 및 액세스(read access)된 데이터를 저장한다. 이러한 대용량의 저장 매체로부터 데이터를 액세스(access)하는 컴퓨터 시스템에 관한 연구에 의하면 씨디(CD) 비디오 처리와 같이 특히 처리되는 많은 양의 데이터가 저장 매체로부터 큰 단위(unit)로 판독되는 경우에는 데이터 캐슁(caching)이 컴퓨터 시스템의 성능을 크게 향상시킬 수 있다는 것이 밝혀진 바 있다. 연구에 의하면 또한, 캐쉬의 크기가 커질수록 성능도 더욱 개선된다는 것이 밝혀진 바 있다. 데이터 저장 매체의 평균 데이터 전송 속도가 데이터 프로세서의 전송속도보다 대략 1/10 내지 1/1000 정도 저속인 경우에 이러한 시스템 레벨 성능 개선 효과가 어느 정도 기대된다.
저장 매체 캐쉬는 각각 수만 바이트로 구성된 비교적 대용량의 데이터 단위(unit) 다수개를 수신하여 저장하기에 충분할 만큼의 기억용량을 갖는 것이 이상적이다. 비록 대용량의 저장 매체로부터 이러한 캐쉬까지의 데이터 전송이 큰 단위로 수행되기는 하지만, 상기 데이터 전송은 비교적 느린 평균 데이터 판독 속도로 이루어진다. 이와 대조적으로, 캐쉬로부터 데이터를 판독하는 것은 통상적으로는 더 작은 단위를 사용하지만, 데이터 전송 속도는 더 빠르게 수행된다. 컴퓨터 시스템의 성능을 실질적으로 향상시키기 위하여 비교적 큰 캐쉬가 필요하고, 디램(DRAM) 캐쉬의 가격이 종종 저장 매체 가격의 중요한 요소가 되므로, 저렴한 대용량 저장 매체의 구성요소 가격을 제공하기 위하여 종종 캐쉬의 크기에 대한 절충이 이루어진다. 대용량의 저장 매체의 구성요소 가격을 줄이는 것과 데이터 전송 속도 성능을 향상시키는 것 사이에 부단한 논쟁이 존재하는 좋은 예로서 경쟁이 격심한 마그네틱 하드 디스크 드라이브(magnetic hard disk drive) 시장(market)을 들 수 있다.
[발명이 이루고자 하는 기술적 과제]
비록 다양한 데이터 처리 응용에서 메모리 크기를 줄이기 위하여 데이터 압축 기술이 사용되어 왔지만, 비손실 데이터 압축은 대용량의 저장 매체 캐쉬 시스템에는 아직까지 적용되지 않고 있다. 그 이유중 하나는, 비손실 데이터 압축에 있어서 데이터 내용에 의하여 압축률 편차가 발생하기 때문이다. 데이터 단위의 압축률이 예측불가능하게 변하기 때문에, 요구되는 고속의 데이터 압축(compression)과 신장(伸張; decompression) 뿐만 아니라 캐쉬의 기억 할당(storage allocation)과 기억 해제(storage deallocation)의 제어가 주요한 장애물이 된다는 것이 판명되었다. 따라서, 캐쉬에 데이터를 압축하여 저장하는 것이 바람직한 설계 목표로서 인식되고는 있지만, 효율적이고 빠른 시스템은 아직 실현되지 않고 있다.
따라서, 대용량 저장 매체로부터 검색된 데이터가 캐쉬 내에서 빠르고 효율적으로 압축되고 저장되며, 캐쉬로부터 랜덤(random)하게 액세스되고, 또한 데이터 처리 시스템으로 전송을 위하여 적시에 신장될 수 있는 시스템과 방법이 필요하다.
[발명의 구성 및 작용]
본 발명은 데이터 저장 시스템과 데이터 처리 시스템 사이에 위치된 데이터 캐쉬 인터페이스(interface)에 관한 것으로, 데이터 저장 시스템으로부터 수신된 데이터 블록을 관련된 압축 데이터 단위로 압축하기 위한 수단, 다수의 압축된 데이터 단위를 어드레스 지정 가능한 할당 단위 내에 저장하기 위한 캐쉬 메모리 수단, 다수의 할당 단위를 다수의 블럭의 전송 단위와 관련된 체인(chain) 내로 연결(link)하기 위한 수단, 특정 데이터 블록에 대한 데이터 처리 시스템 어드레스를 특정 할당 단위 및 체인 내의 특정 압축 데이터 단위를 식별하는 캐쉬 메모리 수단 어드레스로 변환하는 인덱스(index) 수단, 및 데이터 처리 시스템 어드레스의 수신에 응답하는 상기 특정 압축 데이터 단위를 신장하기 위한 수단을 포함한다.
또 다른 형태로는, 본 발명은 데이터 저장 시스템과 데이터 처리 시스템 사이에 위치된 데이터 캐쉬 인터페이스를 작동시키는 방법에 관한 것으로, 데이터 저장 장치로부터 수신된 데이터 블록을 관련된 압축 데이터 단위로 압축하는 단계, 다수의 블록의 전송 단위와 관련된 다수의 할당 단위가 체인 내로 연결되도록 다수의 압축된 데이터 단위를 캐쉬 메모리의 어드레스 지정 가능한 할당 단위 내로 저장하는 단계, 특정 데이터 블록에 대한 데이터 처리 시스템 어드레스를 특정 할당 단위 및 체인 내의 특정 압축 데이터 단위를 식별하는 캐쉬 메모리 어드레스로 변환하기 위해 인덱스를 생성하는 단계, 및 상기 특정 압축 데이터 단위를 상기 데이터 처리 시스템 어드레스의 수신에 응답하는 상기 특정 데이터 블럭으로 신장하는 단계를 포함한다.
본 발명의 특정 실시 예로는 캐쉬 시스템의 구조를 들 수 있는데, 이 캐쉬 시스템은 비교적 큰 전송 단위들에 데이터를 제공하는 소스(source)와 비교적 작은 논리 블록에서 데이터를 랜덤하게 액세스하는 프로세서(processor) 사이에 위치된다. 캐쉬 구조는 프로세서에 의하여 빠르게 액세스할 수 있는 데이터의 양을 최대화하기 위해 데이터를 압축된 형태로 저장한다. 데이터가 대용량의 저장 매체로부터 수신되면 압축되고, 디램(DRAM) 캐쉬에 저장되며, 프로세서에 의해 랜덤하게 액세스(random access)되고 신장된다.
본 발명에 의하여 제공되는 압축된 데이터 캐쉬 저장 시스템은 데이터의 압축률과 관련되는 디램(DRAM) 어드레스 공간의 할당과 해제를 제어하는데, 대용량의 저장 매체로부터 수신된 큰 전송 단위들과 관련되는 크기의 연결된 데이터 체인들의 구조를 포함한다. 프로세서로부터의 랜덤 액세스 어드레스를 빠른 신장에 적합한 블록 크기의 서브디비전(subdivision) 내에 있는 디램의 할당 단위들 내에 저장된 워드(word)들로 변환시키기 위하여 인덱스가 생성되고 사용된다. 본 발명은 디램(DRAM)의 비용을 감소시키고 대용량의 저장 매체로부터의 대용량의 데이터를 빠르게 액세스할 수 있도록 해주는 캐쉬 구조를 제공한다. 본 발명 시스템은 데이터 자체가 멀티미디어 데이터 또는 데이터 베이스 엔트리(entry)와 같이 고수준의 압축률을 갖는 특징이 있을 때 특히 가치가 있으며 효율적이다.
상기한 본 발명의 특징 및 기타 다른 특징들은 이하에서 설명하는 바와 같이 상세한 실시예의 설명을 고려하면 더욱 명백히 이해되고 인식될 것이다.
본 발명은 캐쉬에 저장되어야 할 데이터가 비교적 큰 전송 단위로 비압축 형태로 수신되어, 데이터가 압축되며, 전형적으로는 디램(Dynamic Random Access Memory)과 같은 캐쉬 저장을 최대화하기 위하여 데이터가 압축된 형태로 저장되고, 저장된 압축 데이터가 압축된 형태로 캐쉬로부터 랜덤 액세스 판독되며, 데이터가 각각의 논리 블록들 내에서 신장되는 캐쉬 구조에 관한 것이다. 상기 본 발명의 캐쉬는 디스크 드라이브와 프로세서를 인터페이싱(interfacing)하는데 특히 적합한 것으로, 상기 디스크 드라이브는 고속으로 랜덤 액세스되고 처리되어지는 고밀도로 압축가능한 대용량의 데이터를 저장한다.
본 발명에 관련되는 캐쉬 구조가 제1도에 개념적으로 도시되어 있다. 제1도에 도시된 바와 같이, 비압축 데이터가 비교적 큰 크기의 전송 단위(예를 들어, 64KB 내지 200KB)로 하드 디스크 드라이브 또는 이와 유사한 것들로부터 판독되는데, 만일 워드 단위로 랜덤하게 액세스되는 경우에는 비교적 낮은 평균 응답 속도를 보여준다. 상기와 같이 수신된 데이터는 렘퍼-지브(Lemper-Ziv)형 비손실 데이터 압축 알고리즘을 사용하여 압축되고 디램에 저장된다, 그 후, 압축된 멀티미디어 데이터는 신장 및 프로세서에 선택적 전송을 위하여 4KB 블록에 대응되는 단위로 액세스된다. 중요한 특징은 압축 특성이 데이터 내용에 따라 변하는 데이터를 효율적으로 압축, 저장, 검색 및 신장하는 능력이다.
본 발명의 바람직한 실시예를 제2도의 시스템과 관련하여 기술한다. 본 발명의 바람직한 실시예를 기술하는데 사용되는 용어에 대해서는 아래의 설명을 참조하기 바란다.
[할당 단위(Allocation Unit)]
- 내부에 캐쉬가 분할되는 디램 어드레스 공간의 적절한 입도(粒度; granularity)의 단위. 구체적인 예로는, 캐쉬 내의 할당 단위가 에스램(SRAM; 이하 “에스램”이라 함)의 크기(1MB/2K=512B)로 나누어진 캐쉬 크기에 대용된다. 각 할당 단위의 어드레스의 상부는 대응 에스램 어드레스와 일치한다.
[전송 단위 (Transfer Unit)]
- 대용량의 저장 매체로부터의 큰 데이터 단위. 실시예의 목적으로는, 전송 단위는 디스크 드라이브로부터의 데이터의 전체 트랙이다. 그 범위는 일단 디스크 헤드(head)가 트랙에 정렬되면 디스크의 트랙 탐색 시간이 데이터 전송 시간보다 훨씬 더 길다는 인식으로부터 유도된다. 전형적인 디스크 드라이브에 대해서는, 전송 단위의 크기가 64KB-200KB이다. 평균적으로 128KB가 사용된다. 전송 단위의 데이터는 압축된 후 에스램에 저장된 데이터 체인에 의하여 규정되는 연결 패턴(linking pattern)을 유지하면서, 디램 어드레스 공간을 구성하는 할당 단위를 통해 비연속 방식으로 분할된다.
[데이터 체인(Data Chain)]
- 전송 단위의 압축 데이터를 보유하기에 충분한 저장 공간을 제공하도록 연결된 연속된 할당 단위들. 데이터 체인의 단부(end)는 에스램 내의 제로(zero) 어드레스에 의하여 식별된다.
[에스램 (SRAM)]
- 에스램(Static Random Access Memory)은 데이터 체인을 위한 연결 패턴을 저장하는데 사용되는 것으로, 각 체인은 전송 단위에 대응된다. 각 에스램 어드레스에 저장된 데이터는 체인 내의 그 다음 어드레스를 나타내며, 상기 각 에스램 어드레스는 또한 대응하는 할당 단위에 대한 디램 시작 어드레스의 상위 비트들이다. 에스램 어드레스의 각 체인은 어드레스에 의해 직접적으로 관련되는 디램 내의 할당 단위들의 대응 세트(set)를 규정한다. 에스램 내의 제로 위치는 비어 있는 체인(free chain)의 첫번째 어드레스를 저장한다.
[비어 있는 체인(Free Chain)]
- 디램 내의 디스크 드라이브로부터 캐쉬 내로 전송 단위를 판독하는 동안 사용가능한 체인 내로 연결된 디램 내에서 사용되지 않은 할당 단위 어드레스 공간을 나타낸다. 에스램의 제로 어드레스에서 제로값이 나타나면 디램이 모두 채워졌음을 나타내고, 따라서 비어있는 체인이 존재하지 않는다.
에스램의 제로 어드레스에서 제로가 아닌 데이터 값은 비어 있는 체인의 시작 어드레스를 식별하고, 비어 있는 체인 자체는 데이터 체인과 동일한 방법으로 연결된다.
[논리 블록(Logical Block)]
- 비압축 형태로 되어 있는 4KB에 대응되는 데이터. 각 4KB 블록은 적응 렘펠-지브 압축 알고리즘(adaptive Lempel-Ziv compression algorithm)을 사용하여 개별적으로 압축된다. 각각의 압축된 4KB 블록은 디램 내에서 개별적으로 어드레스 지정이 가능하다. 4KB 블록 범위는 블록 단위로 선택적으로 신장되도록 압축되는 동안에 식별되고 인덱스 내에 저장된다. 4KB 블록 크기는 효율적 압축을 가능케하는 충분히 큰 데이터 단위와 빠른 신장을 가능케하는 충분히 작은 데이터 단위 간의 균형에 기초한 것이다, 또한, 한 개의 논리 블록의 크기가 4KB인 것은 최신의 운영 체제(operating system)에 의해 제어되는 최소의 데이터 단위 중 전형적인 것이다.
[인덱스(Index)]
- 디램의 첫번째 어드레스 공간으로, 압축된 형태로 된 연속적인 4KB 블록 데이터에 대한 시작점을 식별하는데 사용된다. 디램의 인덱스 영역 내의 데이터는 디램 내의 데이터의 시작 어드레스에 의해 4KB블록을 식별하고, 상위 차수 비트들은 할당 단위 어드레스에 대응되고 하위 차수 비트들을 4KB 블록이 시작되는 디램의 라인(line) 또는 워드를 식별한다.
[인덱스 그룹들(Index Groups)]
- 단일 전송 단위에 대응하며, 따라서, 데이터 체인에 의해서 연관되는, 디램 내에 있는, 인덱스 내로부터의 연속된 라인들의 그룹들. 인덱스 그룹내의 인덱스 라인들의 최대수는 가장 큰 전송 단위 내의 블록들의 최대수를 정함으로써 결정된다.
[베이스 논리 블록(Base Logical Block)]
- 대응하는 데이터 체인의 첫 번째 및 마지막 어드레스를 특정하는 각 인덱스 그룹 내의 첫 번째 인덱스 라인, 베이스 논리 블록의 수는 설계에 의해 정해지는 것으로, 디램 내에 저장가능한 전송 단위의 최대수와 일치한다.
[최소 사용 빈도(LFU)]
최소 사용 빈도(Least Frequently Used) 데이터를 결정하기 위하여 캐쉬 내에 저장된 데이터 세트들에 적용되는 통상적인 프로세스. 최소 사용 빈도수 프로세스는 전송 단위를 적재(loading)하는 도중에 디램이 모두 채워지게 될 때 어떤 데이터가 교체되어져야만 하는가를 결정한다.
제2도는 본 발명이 실행되어지는 바람직한 전후관계(context)를 개략적으로 도시하고 있다. 이러한 전후관계에 있어서, 고용량 데이터 저장 디바이스(1)(마그네틱 디스크, 광디스크, PCMCIA, 마그네틱 테이프, 입출력(Input/Output) 등)은 전송 단위 내의 데이터를 판독하기 위해 액세스된다. 상기 데이터는 순차적 랜덤 액세스 판독을 위해 입출력 인터페이스(3)을 통해 시스템(2)에 수신되어 압축 저장된다. 처리 시스템의 종래 구조를 유지하면서, 입출력 인터페이스(3)은 컴퓨터 시스템 버스(4)를 프로세서(6),(L2) 캐쉬(8), 메인 메모리(9) 및 기타 입출력 서브시스템(11)과 공유한다. 프로세서(6)은 그 자신의(L1) 레벨 캐쉬(7)을 포함하도록 도시되어 있다.
본 발명의 촛점은, 바람직하게는 고용량 저장 시스템(1)로부터의 데이터의 판독에 적용되는, 블록(2)에 의해 규정된 시스템 내의 캐쉬 구조에 있다. 디램(16)과 일체로 되어 있는 압축 데이터 캐쉬 제어기(14)는 중간 속도의 비손실 데이터 압축기(12)와 고속의 데이터 신장기(data decompressor)(13)을 사용하여 디램(16)의 크기의 영향을 최소화하면서 프로세서(6)에 빠르게 이용될 수 있는 랜덤 액세스가 가능한 데이터의 양을 증대시킨다.
중간 속도의 데이터 압축기(12)와 고속 신장기(13)은 바람직하게는 렘펠-지브(Lempel-Ziv) 알고리즘을 채용한다. 상기 알고리즘의 사용예는 미국 특허 출원 제08/409,766(1995년 3월 23일자) 및 제08/516,773(1995년 8월 18일자)에 기술되어 있는데, 이 출원들은 본 발명의 개시의 일부를 구성한다. 상기 알고리즘의 개념은 1977년에 IEEE Transactions on Information Theory, Vol. IT-23, No.3, pp.337-343에 실린 지브(Ziv)와 렘펠(Lempel)의 “순차적 데이터 압축에 대한 일반적인 알고리즘”(A Universal Algorithm for Sequential Data Compression)이라는 제목의 논문에 근거를 두고 있다.
본 발명의 압축 데이터 캐쉬 저장 시스템의 구조에 있어서 핵심 요소는 제3도에 도시되어 있다. 데이터는 64KB 내지 200KB의 전송 단위로 수신된다. 각각의 4KB 크기의 논리 블록들은 적응 렘펠-지브 데이터 압축기(17) 내에서 압축되는데, 증가된 크기는 4K 카운터(18)과 압축기/직접 메모리 접근(Direct Memory Access; DMA) 제어기(19)의 상호작용을 통해 제어된다. 압축된 논리 블록들은 모든 전송 단위가 압축되고 저장될 때까지 다수개의 512B 할당 단위들의 데이터 체인을 사용하는 디램(16) 내에 압축된 데이터로 저장된다. 제어기(21)은 연속적인 4KB 논리 블록들을 구별하고, 디램(16) 내의 새로운 라인 상에서 각각의 4KB 논리 블록들을 시작하며, 디램(16)의 인덱스 부분 내의 새로운 시작 라인의 인덱스를 생성한다. 제어기(21)은 또한 에스램(22) 내에 저장된 데이터 체인 구조를 통해 단일의 전송 단위를 저장하는데 사용되는 디램(16) 내의 할당 단위의 패턴을 특정하고 기록한다.
제어기(23)은 캐쉬 디램(16)으로부터의 데이터를 판독하는데 사용된다. 디램(16)의 인덱스 부분은 데이터의 512B 섹터를 특정하는 통상적인 변환 테크닉을 사용하는 어드레스가 특정된 프로세서에 의해 액세스되며, 그 후 제어기(23)은 섹터 어드레스를 포함하는 4KB 논리 단위를 표시하는 압축 데이터의 판독을 개시한다. 압축 데이터의 선택된 논리 단위는 4KB 논리 블록 내로부터 요구되는 512B 크기의 섹터에 도달하는 시간까지 적응 렘펠-지브 데이터 신장기(24)에 의해 처리된다. 그리고 나서, 선택기(selector)(26)은 신장된 캐쉬 출력으로 512B 섹터를 프로세서로 전송한다. 그 후, 선택기(26)은 신장기(24)를 플러쉬(flush)하고 제어기(23)에 의해 4KB 논리 블록의 나머지 판독을 종료한다.
신장기(24)에서 사용된 알고리즘은 명백히 압축기(17)에서 실행된 알고리즘과 보수(補數; complement)가 되어야만 한다. 앞에서 언급한 바와 같이, 압축기(17)과 신장기(24)는 바람직하게는 상기에서 언급한 IEEE 논문에 기술된 렘펠-지브 알고리즘을 채용하고 있다. 앞에서 언급한 미국 특허 출원에 특정 알고리즘의 사용예가 기재되어 있지만, 압축 효율, 데이터 내용, 요구되는 압축 속도, 요구되는 신장 속도, 블록 크기, 및 관련되는 요인들에 따라 또 다른 데이터 압축 및 신장 알고리즘이 사용될 수 있다.
제4도는 전송 단위 데이터의 적재 도중에 디램(16) 내의 어드레스 공간의 동적 할당과 연관되는 동작을 개략적으로 예시하고 있다. 제어기(21)(제3도)은 에스램(22)와 디램(16) 사이의 상호작용을 제어한다. 제어기(21)은 에스램(22) 내의 어드레스를 발생 및 저장함으로써 디램(16)의 인덱스되지 않은 부분 내의 물리적 어드레스 공간을 할당한다. 각각의 에스램 워드는 디램 어드레스 공간의 할당 단위에 대응된다. 에스램 워드 어드레스는 또한 실질적으로 디램 워드 어드레스의 상위 차수(high order) 부분으로 그러한 자격으로 디램 할당 단위를 결정하는데 비해, 디램 어드레스의 하위 차수(low order) 부분은 각 할당 단위 내의 개별 워드를 식별한다.
에스램 데이터 저장 위치는 체인 내의 그 다음 에스램 어드레스에 대한 식별자(pointer)로서 에스램 워드를 사용함으로써, 데이터 형태 및 비어 있는(free) 형태 모두를 포함하는 체인들 내로 접속된다. 이렇게 함으로써, 연속된 에스램 어드레스는 체인들 내로 연결되는데, 이 체인들은 연속된 디램 할당 단위들을 큰 전승 단위에 대하여 데이터를 저장할 수 있는 데이터 저장 체인들 내로 대응하여 연결한다.
만일 하나의 에스램 워드가 반드시 다른 어떤 워드를 어드레스할 수 있어야 한다면, 에스램 내의 워드들의 수가 그 비트 길이도 결정한다. 따라서, 제4도의 디자인에서는, 2,048에스램 워드들 각각은 11비트 길이를 갖는다. 제4도에 구현된 디램(16)은 32비트의 길이를 갖는다. 이와 관련해서, 디램 내의 각 할당 단위는 선택된 512바이트 할당 단위 크기를 형성하기 위해 128개의 4바이트 길이의 워드로 구성되어 있다. 128개의 워드 크기 할당 단위를 가진 상태에서, 7개의 하위 차수 비트들은 각 할당 단위 내로부터 개별 워드들 중에서 선택하는 것이 요구된다. 이렇게 함으로써, 제4도에 도시된 바와 같이, 디램(16)에 사용된 워드 어드레스(27)은 11개의 상위 차수 비트들과 7개의 하위 차수 비트들로 구성되는데, 11개의 상위차수 비트들은 에스램(22)의 어드레스와 일치한다.
제4도는 데이터 체인의 시작을 식별하기 위해 프로세서(6)(제2도)으로부터의 랜덤 액세스 어드레스가 디램(16)의 인덱스를 통해 변환되는 것을 도시하고 있다. 체인의 연결은 디램(16) 내에 대응하는 데이터 저장 위치의 연결을 가지고 있는 에스램(22) 내에 규정되어 있다. 이렇게 함으로써, 가변 압축률을 갖는 테이터의 큰 전송 단위들은 응집성 데이터 체인(cohesive data chain) 내에 저장된다.
대응하는 디램 어드레스를 포함하는 에스램(22) 내에 저장된 데이터 체인의 특정한 예가 제5도에 나타나 있다. 첫 번째 데이터 체인은 디램 어드레스 00C80-00CBF에서 시작하고, 그 다음 디램 어드레스 00D00-00D3F으로 계속되며, 그 다음 디램 어드레스 3FF00-3FF7F로 계속된 후, 디램 어드레스 03500-0353F로 끝나는 4개의 할당 단위로 구성되어 있다. 두 번째 데이터 체인은 디램 어드레스 3FE80-3FEFF에서 시작하고 어드레스 3FF80-3FFFF를 갖는 세 번째 할당 단위에서 끝난다.
에스램 어드레스 000-018은 데이터 저장을 위한 디램을 할당하는데 사용되지 않는다는 점에 유의하여야 한다. 그 이유는 어드레스 영역이 이하에서 기술될 인덱스 구조에 대해 리저브된(reserved) 디램 영역에 대응하기 때문이다. 최소한 두 개의 디램 할당 단위가 항상 인덱스 구조에 대해 사용되기 때문에 에스램 어드레스 000과 001은 어떠한 정상적인 데이터 체인의 일부분이 될 수 없다.
에스램 어드레스 000과 001은 비어 있는 체인 내의 첫 번째 및 마지막 할당 단위에 대한 식별자로 사용된다. 비어 있는 체인은 첫 번째 할당 단위 어드레스가 에스램 위치 000내에 보유되어 있고 마지막 어드레스가 에스램 위치 001내에 보유되어 있다는 점을 제외하고는 데이터 체인과 완전히 동일하다.
할당 단위 번호 000은 데이터 체인 내에서 사용되지 않기 때문에, 에스램 위치 내의 값 000는 체인 종단(chain terminator)으로 사용되고, 그 자체로 체인 내의 할당 단위가 더이상 없음을 표시한다. 제5도의 예에서는 체인(1)과 체인(2)의 단부가 모두 값 000을 가지고 있음에 유의하여야 한다.
체인으로 연결된 다수의 할당 단위를 포함하는 저장과 관련하여 디램(16)으로부터의 데이터 검색은 제4도에 도시된 바와 같이 인덱스를 통해 할당 단위 시작부분(starting allocation unit)을 식별함으로써 개시된다. DMA형 제어기(23)(제3도)은 체인에 의해 규정된 시퀀스(sequence) 내의 데이터를 검색하기 위하여 디램 구조 내의 데이터 체인을 즉시 분해(parse)한다. 각각의 할당 단위 내의 디램 워드를 통해 진행 중인 하위 차수 어드레스를 증가시킴으로써 디램 데이터 워드의 각각의 인출(fetch)이 이루어진다. 할당 단위의 단부(end)에 도달하면, 에스램으로부터 유도된 어드레스의 상위 차수 부분에 의해 식별되는 그 다음 할당 단위를 결정하기 위해 에스램이 액세스된다. 그리고 나서, DMA형 동작은 디램 내의 연속되는 할당 단위 전체를 통해 계속된다. 이러한 방법으로 데이터를 검색하는 경우 매 128개 워드에 대해 에스램 액세스를 포함하지만, 이것은 판독 사이클에서 비교적 무시할 수 있는 정도의 손실일 뿐 아니라 에스램으로부터 사전 인출(prefetch)을 통해 제거될 수도 있다.
디스크(1)(제3도)로부터 판독되어 압축 데이터 캐쉬 저장 시스템(2) 내로 저장되는 데이터는 큰 데이터 크기의 전송 단위로 제어된다. 디램(16) 내로의 데이터 진입(entry)은 압축된 데이터의 새로운 전송 단위를 갖는 하나 이상의 체인 내에 있는 기존 데이터의 겹쳐쓰기(over-writing)를 포함한다. 에스램을 사용하는 체인의 연결은 디램(16)으로부터의 데이터 검색에서 설명된 것과 유사하다. 하지만, 데이터의 압축률은 데이터 내용에 따라 가변적이므로, 새로운 전송 단위는 교체된 데이터 체인에 정확히 들어맞을 가능성이 거의 없다. 따라서, 데이터 저장의 동작중에 더 많은 할당 단위들이 제공될 필요가 있거나, 또는 새로운 전송 단위가 완전히 저장된 후에도 몇 개의 할당 단위들이 남아 있을 수도 있다.
압축된 전송 단위 데이터를 적재하는 정상적인 시퀀스(sequence)는 특정 데이터 체인을 겹쳐쓰기하는 것으로 시작된다. 특정 데이터 체인이 완전히 채워지고 나면, 데이터를 할당 단위 내로 기록하는 순서는, 비어 있는 체인이 존재하는 경우, 그것이 채워질 때까지 비어 있는 체인 내에서 정해진 순서(order)에 따른다. 비어 있는 체인의 순서는 특정 데이터 체인에 연결되어져 있어서 모든 할당 단위들은 디램을 통하여 연속체(continuum)를 따르게 된다. 비어 있는 체인 내에 특정된 저장이 압축된 전송 단위에 대해 여전히 불충분한 경우에는 첫 번째 특정된 오버플로우(overflow) 데이터 체인이 사용된다. 첫 번째 특정된 오버플로우 데이터 체인이 여전히 불충분한 경우에는, 연속적인 오버플로우 데이터 체인들이 추가적으로 특정되어 사용된다.
전송 단위를 저장하기 전에, 제어기(21)은 겹쳐 쓰여질 데이터 체인과, 특정된 데이터 체인과 사용 가능한 모든 비어 있는 체인들이 압축된 전송 단위의 크기에 대해 불충분한 경우에 사용될 오버플로우(overflow) 데이터 체인을 특정한다. 바람직하게는, 상기 두 개의 데이터 체인을 특정하기 위한 프로세스는 표준 최소 사용 빈도(LFU) 알고리즘의 응용을 사용하는 것이다. 이와 유사한 방법으로는, 적재 프로세스가 전송 단위를 저장하기 위해 오버플로우 데이터 체인을 사용하게 되는 경우, 제어기(21)은 겹쳐 쓰여질 그 다음의 연속적인 데이터 체인의 선택을 시작한다.
바람직하게는, 제어기(21)은 최소 전송 단위 크기와 최대 추정 압축률을 고려하여 임의의 지정된 오버플로우 데이터 체인에 대해서 최소 크기를 설정하는데, 이것은 미리 지정된 오버플로우 데이터 체인 내로 데이터를 기록하는 것이 처음으로 검지될 경우 제어기(21)이 그 다음 오버플로우 데이터 체인을 선택하기 위한 충분한 시간을 제공함을 목적으로 한다. 이렇게 함으로써, 데이터 저장 동작은 오버플로우 데이터 체인을 선택하는데 시간 지연이 없이 필요한 수만큼의 오버플로우에 대해 계속될 수 있다.
전송 단위 저장이 완료되면, 비어 있는 체인은 그 비어 있는 체인 내에서 새로운 시작 위치를 지정하거나 또는 기존의 비어 있는 체인에 사용되지 않은 할당 단위를 추가함으로써 갱신(update)된다. 이러한 프로세스의 상세한 내용은 이하에서 기술될 것이다.
상기에서 기술된 바와 같은 할당 절차의 효율은 디램 캐쉬 내의 전송 단위로 64KB 내지 200KB 범위를 갖는 전체 디스크 드라이브 트랙의 저장을 포함하는 응용에 대해 비교적 양호하다. 2:1 내지 4:1의 평균 압축률에 대해, 가장 큰 트랙에 대한 최소 압축률 및 가장 작은 트랙에 대한 최대 압축률을 고려하면, 압축된 전송 단위는 그 크기가 16K 내지 100KB에 걸쳐있다. 평균적으로 디램 내에서의 할당 단위의 절반이 데이터 체인으로서 압축 및 저장되는 각각의 전송 단위에 대해 소비되므로, 이러한 손실량은 고려된 가장 긴 전송 단위와 가장 짧은 전송 단위에 대해 각각 1.026% 내지 1.5% 범위에 해당된다.
전체 64K 내지 200KB 전송 단위에 적용되는 단일의 압축 동작은 대부분의 경우에 있어서 실질적으로 더 작은 크기의 전송 단위의 성능에 비교해 볼 때 양호한 압축률을 갖는다. 이러한 실시예가 갖는 문제점은 신장이 각 압축된 데이터 단위의 처음부터 시작되어야만 하는 렘펠-지브 알고리즘(Lempel-Ziv algorithm)의 특성으로부터 기인한다. 따라서, 바람직한 적응 렘펠-지브 데이타 신장기(24)(제3도)가 기능적으로 빠르다고 하더라도, 만일 프로세서에 의해 얻어진 랜덤하게 액세스된 어드레스가 전송 단위 내의 어드레스 범위의 단부 근처에 있는 경우 16K 내지 100KB 크기의 압축된 전송 단위는 상당한 신장 시간을 필요로 하게 된다. 이러한 이유 때문에, 압축은 디램(16) 내에서 인덱스되고 또한 개별적으로 어드레스 지정 가능한, 본 발명의 실시예의 목적으로 선택된 4KB 크기의 논리 블록 전송 단위의 작은 세그먼트(segment)에 점증적(incrementally)으로 적용된다.
상기 내용은 디램(16)의 인덱스와 할당 단위 영역이 서로 관련되어 있는 것으로 도시된 제6도에 개념적으로 기술되어 있다. 개별적으로 압축된 4KB 데이터 논리 블록들은 인덱스 내의 시작 어드레스에 의하여 식별된다. 4KB 논리 블록의 크기는 비압축 데이터에 적용될 때 카운터(18)과 제어기(19)(제2도)의 상호작용을 통해 지정되기 때문에, 데이터의 압축된 형태는 랜덤 워드와 블록으로부터 블록까지의 비트 위치에서 종료된다. 예를 들어, 제6도에서는 새로운 4KB 논리 블록이 할당 단위 디램 워드 어드레스 0E013에서 시작하는 것으로 도시되어 있다. 상기 논리 블록은 할당 단위 디램 워드 어드레스 0E016 내의 첫 번째 비트에서 종료되고, 나머지 워드 비트의 위치는 사용되지 않는다. 그 다음 4KB 논리 블록은 할당단위 워드 어드레스 0E017에서 시작하여 0E01C에서 종료된다. 이러한 시퀀스는 모든 전송 단위가 저장될 때까지 연속적으로 연결된 할당 단위 내에서 연속적인 4KB 논리 블록에 대하여 반복된다.
논리 블록의 크기로 4KB를 선택하는 것은 4KB 논리 블록들을 디램 내의 워드 어드레스에 정렬하기 위해 추적 비트(trailing bit)가 무시(discard)될 때 손실되는 저장용량과 프로세서에 의한 액세스에 응답하여 4KB 논리 블록을 신장하는 것과 연관된 지연(delay) 간의 균형을 고려한 결과이다. 따라서, 압축과 신장 동작은 모두 4KB 논리 블록의 압축되지 않은 데이터에 대해 행해진다. 64KB 내지 200KB의 모든 전송 단위에 렘펠-지브 압축을 적용하는 것과 비교하여 볼때 4KB 크기의 논리 블록에 렘펠-지브 압축을 적용하는 것은 대략 6%의 압축 손실이 발생하는 것으로 추정된다.
압축률이 6% 감소하는 대신에, 64KB 내지 200KB의 전송 단위 속도를 사용하는 것과 비교하여 볼때 4KB 논리 블록을 사용함으로써 신장 속도는 상당히 더 빠르게 된다. 예를 들어, 전형적인 디스크 드라이브가 512바이트 크기의 섹터를 사용하는 본 발명의 실시예에 있어서, 4KB 논리 불록 중 대략 3,600바이트가 마지막 512바이트 섹터를 액세스하기 위해 신장 및 무시되어져야 한다는 것이 가능하다. 1초에 50메가바이트의 명목상의 신장 속도(nominal decompression speed)에 대해, 상기 본 발명의 실시예는 대략 72마이크로초(micro second)의 최대 지연 시간을 갖는다. 따라서, 선택된 데이터의 섹터가 처음으로 사용가능하게 되기 전에 평균적으로 대략 1500바이트가 신장되어지고 무시되어져야 하므로, 평균 지연 시간은 대략 31마이크로초가 될 것으로 추정된다.
디램(16) 내의 물리적인 메모리 어드레스를 할당 단위 내의 4KB 논리 블록에 연관시키기 위해 적합한 인덱싱(indexing) 구조는 제7도에 기능적으로 도시되어 있다. 바람직한 메카니즘(mechnism)은 제어기(21)과 (23)(제3도)로 하여금 랜덤하게 분포된 할당 단위의 체인 내에 할당된 논리 블록을 할당하고, 그룹화(group)하며, 액세스하도록 한다. 제7도에 도시된 바와 같이, 인덱스는 어드레스 00000에서 시작하고 각각의 4KB 논리 블록에 대해 하나의 디램 워드 엔트리(entry)를 갖는 어드레스 00C7F까지 연장되는 디램의 연속된 영역을 차지한다. 인덱스 내의 4KB논리 블록 어드레스를 특정하는 워드의 수는 제어기에 의한 직접 사용을 용이하게 하기 위한 논리 블록의 수와 일치한다.
각각의 4KB 논리 블록에 대한 디램 인덱스 내에 저장된 데이터 워드는 두 개의 필드(field)로 구성된다. 첫 번째 필드는 할당 단위의 어드레스를 식별한다. 두 번째 필드는 디램 할당 단위 내의 워드 어드레스를 식별한다. 이러한 정보를 가지고, DMA형 캐쉬 판독 제어기(23)(제3도)은 인덱스 내에서 식별된 디램 워드와 함께 시작하고 또한 4KB의 데이터가 신장된 형태로 유도될 때까지 디램 내의 연속적인 워드 어드레스를 통해 DMA 방식으로 증가시킴으로써 4KB의 논리 블록을 직접 액세스한다.
또한, 제7도는 인덱스가 64개 그룹으로 나누어지고, 각 그룹은 50개의 논리 블록으로 구성되며, 각 블록 자체는 첫 번째 워드로서 단일 베이스 논리 불록 엔트리 정보를 포함하되 상기 첫 번째 워드는 각 디램 그룹 내의 나머지 49개의 워드에 대한 49개의 논리 블록 엔트리 정보가 이어지는 것을 예시하고 있다. 베이스 논리 블록 워드는 상위 순서 비트와 하위 순서 비트의 조합을 통해 데이터 체인 자체는 전송 단위를 포함한 채로 관련된 데이터 체인 내의 첫 번째와 마지막 할당 단위의 어드레스를 식별한다.
각 그룹 내의 엔트리 수는 가장 큰 전송 단위 내에서 캐쉬 내로의 진입이 가능한 최대 4KB의 논리 블록에 의해 결정된다. 바람직하게는, 디램 내에 저장될 수 있는 전송 단위의 최대수를 유도하기 위해 최소 전송 단위과 최대 압축률을 추정함으로써 그룹의 최대수가 유도된다. 구체화된 시스템의 일례로, 인덱스는 64개의 그룹으로 구성되고, 각 그룹은 50개의 워드로 구성되며, 각 워드는 디램의 각 할당 단위 어드레스 공간 내의 저장가능한 압축 데이터가 4KB 논리 블록인 시스템을 예로 들 수 있다.
베이스 논리 블록 워드 및 논리 블록 워드에 대한 샘플(sample) 비트 구성이 제8도 및 제9도에 각각 개략적으로 기술되어 있다. 인덱스 부분에 저장된 워드를 포함하여 디램(16)(제7도)에 저장된 각 워드는 32비트로 구성되기 때문에, 여분의 비트들이 각 워드 내에서 사용가능하다. 구체화된 바와 같은 베이스 논리 블록 워드는 첫 번째 비트 위치에 있는 “1”의 존재에 의해 구별되고, 비트 위치 01-03을 리저브(reserve)하며, 전송 단위의 데이터 체인 내에 있는 첫 번째 할당 단위의 어드레스를 식별하기 위하여 비트 위치 04-17을 사용하고, 데이터 체인 내의 마지막 할당 단위의 어드레스를 식별하기 위하여 남아 있는 비트 18-31을 사용한다.
논리 블록 워드의 비트 구조는 제9도에 도시되어 있다. 논리 블록 워드는 0비트 위치에 하나의 “0”이 존재함으로써 논리 블록 워드로 식별되고, 비트 위치 01-03은 리저브되며, 비트 위치 07-17은 4K바이트 논리 블록 어드레스의 상위 차수 비트들을 특정하고, 상위 차수 비트로서 데이터 체인 내의 할당 단위를 식별하며, 비트 25-31은 할당 단위 상의 하위 차수 비트들을 특정하고, 그 하위차수 비트로서 개별 워드들은 연속적인 4KB 논리 블록의 시작 어드레스를 나타낸다. 또한, 각각의 32비트 디램 워드 내에는 여분의 비트들이 존재한다.
인덱스의 워드 내에서 비트들을 할당하는 것은 시스템 구성에 의해 결정된다. 2KB의 에스램을 사용하는 실시예를 위해, 11비트가 할당 단위에 할당되고 그에 따라 인덱스 논리 블록 워드와 베이스 논리 블록 워드의 대응되는 위치 내에서 사용된다. 이와 유사하게, 4개의 256KB 크기의 워드로 구성되는 구체화된 디램은 1메가바이트이므로, 각 할당 단위는 128개 워드를 가지며 이에 대응하여 개별적으로 주소지정 가능한 인덱스 워드 구조 내에서 7비트를 필요로 한다.
인덱스를 디자인(design)하고 크기를 정하기(sizing) 위해서는 논리 블록 그룹들은 특정해야 하는데, 각 논리 블록 그룹은 고려된 가장 큰 전송 단위를 수용할 수 있을 정도로 충분히 커야한다. 더욱이, 캐쉬에 한 번에 저장가능한 전송 단위의 최대수를 제어하기에 충분한 논리 블록 그룹들이 필요하다. 이들 서로 상충되는 요건들은 인덱스 저장 공간의 얼마간의 낭비를 초래한다. 실시예로서 전송 단위가 그 크기에 있어서 64K 내지 200KB 범위에 있으며 4:1의 데이터 압축률을 제공해야 하는 경우, 인덱스 내의 64개의 논리 블록 그룹 각각은 50개의 논리 블록 워드 엔트리를 가져야한다. 워드 엔트리의 카운트(count)는 가장 큰 전송 단위를 논리 블록 크기로 나눔으로써 결정되고, 그룹의 수는 디램 캐쉬의 크기를 가장 작은 압축된 전송 단위 크기로 나눔으로써 결정된다.
실시예는 50워드를 갖는 64그룹을 사용하고 있고, 적어도 3,200워드의 인덱스를 필요로 하며, 이에 대응하여 인덱스는 최소한 1.2%의 디램 어드레스 공간을 소모한다. 논리 블록 그룹 내의 논리 블록들이 전송 단위를 위해 모두 요구되지는 않을 수도 있기 때문에, 사용되지 않는 인덱스 어드레스 공간이 생길 수 있다. 또한, 평균 압축률이 기대되는 것보다 상당히 큰 경우에도 인덱스 구조는 추가적인 데이터의 전송 단위가 디램 캐쉬 내로 위치되도록 허용하지 않는다. 할당 단위 내의 추가적인 저장은 인덱스 구조 내의 그룹화 한계(grouping limitation) 한계에 의해 불가능하게 된다. 그러나, 이러한 손실은 달성되는 동작상의 단순화(simplication)에 비하면 사소한 것에 불과하다.
제어기(19)(제3도)는 디스크(1)로부터 비압축된 데이터를 수신하기 위하여 렘펠-지브 데이터 압축기(17)의 동작을 제어한다. 4KB의 상기 데이터를 받는 즉시 제어기(19)는 압축기(17)의 동작을 종료시키고 그 압축기 내의 나머지 모든 데이터를 플러쉬한다. 이러한 프로세스는 모든 전송 단위가 압축되어 저장될 때까지 반복된다. 제어기(19)는 각각의 4KB 논리 블록 데이터의 경계를 식별하기 위해서 제어기(21)과 연결되어 있다.
제어기(21)은 디램(16) 내의 인덱스와 할당 동작을 제어한다. 제어기(19)에 의해 결정되는 각각의 새로운 논리 블록의 시작에서, 논리 블록 워드(제7도 및 제9도)는 디램(16)의 인텍스 부분 내로 진입된다. 그렇게 진입된 논리 블록 워드는 논리 블록이 저장될 할당 단위 내의 워드 어드레스 뿐만 아니라 할당 단위의 어드레스도 식별한다. 각각의 4KB 논리 블록은 디램(16) 내의 새로운 워드 상에서 시작한다. 인덱스 내에 저장되는 베이스 논리 블록 워드는 전송 단위 내의 첫 번째 할당 단위의 어드레스를 포함하고, 그 후에 마지막 논리 블록이 압축되어 저장될 때 그 전송 단위에 대한 할당 단위를 종료함으로써 갱신(update)된다.
제6도를 참조하여 앞에서 언급된 바와 같이, 디램(16) 내에 저장하기 위해 4KB 크기의 각 논리 블록들을 압축하는 것은 가변적이고 그러므로 각 논리 블록의 종료에 영향을 미친다. 따라서, 디램 내에 압축되어 저장된 각 논리 블록에 대해 평균적으로 디램 워드의 절반인 2바이트가 소모될 것이다. 상기와 같은 계산(valastion)에 기초하여, 그리고 64KB 내지 200KB의 전송 단위와 2:1 내지 4:1 범위의 명목상 압축편차를 갖는 시스템의 실시예의 상황에서, 각 64KB 전송 단위에 대하여 평균적으로 288바이트가 손실될 것이다. 명목 데이터 압축이 4:1인 경우, 이는 1.7%의 손실을 나타낸다. 더 큰 전송 단위와 더 작은 압축률 효과에 대해, 0.35%의 명목 저장 공간이 손실된다. 따라서, 상기의 효율은 압축을 통해 얻어지는 데이터 저장 이득(data storage gain)을 위하여 채용할 만(acceptable)하다.
여러 가지 효율 결과를 고려하면, 구체화된 압축 데이터 디램 캐쉬 저장 시스템은 저장 능력의 약 97%를 사용하며, 인덱스 구조와 4KB 논리 블록 경계를 사용함으로써 생기는 오버헤드(overhead)를 합한 나머지 3%가 손실된다. 압축으로 인하여 2:1의 명목 데이터 저장의 개선이 이루어진 경우, 손실은 이득과 비교하여 상대적으로 무시할 수 있다.
종래의 마이크로제어기(microcontroller)(도시되지 않음)는 전형적으로 트랙에 의하여 어떤 디스크 드라이브 데이터가 현재 캐쉬 내에 존재하는지를 식별하고, 또한 대응하는 데이터 섹터와 연관된 논리 블록 그룹을 식별한다. 이것은 종래의 디스크 드라이브 캐슁(caching) 기법을 실시한 것에 불과하다. 캐쉬 히트(hit)가 발생하면, 어드레스는 다시 통상적인 방법으로 대응되는 데이터 섹터를 포함하는 논리 블록으로 변환된다. 일단 논리 블록이 식별되고 액세스가 얻어지면, 제어기(23)(제3도)은 디램(16)의 인덱스 내에 있는 베이스 논리 블록의 어드레스를 찾아내기 위하여 논리 블록 워드를 사용하여 판독(readout) 및 신장을 시작한다. 베이스 논리 블록 워드는 할당 단위 어드레스를 포함하고 있다. 상위 차수 비트로서 할당 단위 어드레스를 가지고 하위 차수 비트 내에 할당 단위 워드 어드레스를 갖도록 함으로써, 4KB 논리 블록이 특정된다. 그 후, 연속적인 할당 단위 워드들은 4KB 논리 블록 내의 선택된 섹터의 검색 및 신장이 섹터 선택기(selector)(26)(제3도)에 의해 검지될 때까지 DMA 시퀀스(sequence)를 사용하여 액세스된다.
비어 있는 체인의 생성과 기존의 비어 있는 체인에 포함시키기 위하여 사용되지 않은 디램 어드레스 공간을 스캐빈지(scavenge)하는 것을 이하에서 기술한다. 앞에서 언급한 바와 같이, 비어 있는 체인의 시작 위치는 항상 에스램(22)의 000 어드레스에 저장된다. 000 어드레스 위치 내의 데이터가 “0”이면, 이것은 사용가능한 비어 있는 체인이 없음을 나타낸다. 디램(16) 내로 저장되는 데이터의 전송 단위의 단부에 도달하면, 제어기(21)(제3도)은 에스램(22) 내에 저장된 현재의 할당 단위에 속하는 데이터가 그 값이 “0”인지 여부를 결정한다. 상기 값이 “0”이 아니면, 나머지 할당 단위들은 체인으로부터 남겨지게 되는데, 마지막 체인은 전송 단위를 적재하기 위해 사용된다. 또한, 전송 단위를 적재하는데 사용되는 체인은 그 자체가 비어 있는 체인이 될 수 있었다는 점도 유의하여야 한다.
나머지 할당 단위들이 전송 단위를 적재하는 도중에 사용되는 비어 있는 체인으로부터 남겨지게 되면, 에스램(22)의 000 어드레스는 새로운 비어 있는 체인의 시작을 규정하기 위하여 체인 내의 그 다음 이어지는 어드레스로 적재된다. 반면에, 이전의 데이터 체인이 사용되는 경우, 그 체인의 나머지 어드레스 공간은 이미 존재하는 비어 있는 체인에 추가될 필요가 있다, 이것은 제10도에 예시된 바와 같이 달성된다.
제10도에 예시된 것은 데이터 체인의 나머지 부분을 기존의 비어 있는 체인의 전면에 부착(attach)하는 과정에서 에스램(22)와 디램(16) 간의 상호작용을 도시하고 있다. 처음에 비어 있는 체인은 어드레스 01C에서 시작하고 어드레스 06B에서 끝난다. 부착될 체인의 세그먼트(segment)는 상위 차수 어드레스 7FD를 갖는 할당 단위로 시작하고, 어드레스 01A를 갖는 할당 단위로 진행하며, 어드레스 7FF를 갖는 할당 단위로 끝나는 그룹(4) 내에 존재하도록 결정된다. 전송 단위를 적재하는 도중에 적재가 할당 단위 01A를 사용하여 완료되면, 할당 단위 7FF가 나머지가 되고 기존의 비어 있는 어떤 체인에라도 추가를 위해 사용될 수 있다.
앞에서 언급한 바와 같이, 나머지 할당 단위는 비어 있는 체인의 시작 부분에 추가된다. 전송 단위의 적재가 할당 01A로 끝나게 되면, 에스램(22) 내의 01A 어드레스에 대한 데이터는 데이터 체인의 단부를 나타내기 위하여 000으로 대체된다. 이렇게 함으로써, 에스램(22)의 000 어드레스는 이전의 01C 값에서 새로운 어드레스인 7FF로 바뀌게 된다. 마지막으로, 에스램(22)의 어드레스 위치 7FF에 있는 데이터는 000으로부터 01C로 바뀌게 된다. 이러한 방법으로, 나머지 할당 단위 7FF는 비어 있는 체인과 함께 사용할 수 있도록 스캐빈지되며, 현재 비어 있는 체인은 할당단위 7FF, 01C, 및 06B의 시퀀스로 구성된다. 또한 디램(16)의 인덱스 내에 있는 베이스 논리 블록 워드는 이전의 7FF에서 새로운 체인의 단부인 01A로 바뀌게 된다는 점에 유의하여야 한다.
상기에서 기술된 실시예들은 본 발명이 실시될 수 있는 수많은 것들 중의 예시에 불과하며, 첨부된 특허청구범위에 의해 정해지게 될 본 발명의 범위로부터 벗어남이 없이 균등물에 의해 대치될 수 있다는 것을 본 발명 기술 분야의 당업자는 이해할 수 있을 것이다.

Claims (20)

  1. 데이터 저장 시스템으로부터 수신된 데이터 블록을 관련된 압축 데이터 단위로 압축하기 위한 수단; 다수의 압축 데이터 단위들을 주소지정 가능한 할당 단위들 내에 저장하기 위한 캐쉬 메모리 수단; 다수의 할당 단위들을 다수의 블록들의 전송 단위와 관련된 체인 내로 연결하기 위한 수단; 특정 데이터 블록에 대한 데이터 처리 시스템 어드레스를 특정 할당 단위 및 체인 내의 특정 압축 데이터 단위를 식별하는 캐쉬 메모리 수단 어드레스로 변환하기 위한 인덱스 수단; 및 상기 데이터 처리 시스템 어드레스의 수신에 응답하여 상기 특정 압축 데이터 단위를 상기 특정 데이터 블록 내로 신장하기 위한 수단을 포함하는 데이터 저장 시스템과 데이터 처리 시스템 사이에 위치된 데이터 캐슁 인터페이스(data caching interface).
  2. 제1항에 있어서, 상기 데이터 캐슁 인터페이스가 상기 캐쉬 메모리 수단 내의 비어 있는 할당 단위들을 식별하기 위한 수단; 및 2이상의 식별된 비어 있는 할당 단위들을 비어 있는 체인 내로 연결하기 위한 수단을 더 포함하는 데이터 캐슁 인터페이스.
  3. 제1항에 있어서, 상기 데이터 저장 시스템이 비휘발성(nonvolatile) 저장 매체인 데이터 캐슁 인터페이스.
  4. 제2항에 있어서, 상기 데이터 저장 시스템이 비휘발성 저장 매체인 데이터 캐슁 인터페이스.
  5. 제3항에 있어서, 상기 연결하기 위한 수단이 상기 하나의 체인과 관련된 전송 단위 내의 상기 블록 데이터의 압축률에 따라 체인으로부터 할당 단위들을 추가하거나 또는 제거하는 데이터 캐슁 인터페이스.
  6. 제4항에 있어서, 상기 연결하기 위한 수단이 상기 체인과 관련된 전송 단위 내의 상기 블록 데이터의 압축률에 따라 체인으로부터 할당 단위들을 추가하거나 또는 제거하는 데이터 캐슁 인터페이스.
  7. 제5항에 있어서, 상기 캐쉬 메모리 수단이 휘발성 랜덤 액세스 메모리인 데이터 캐슁 인터페이스.
  8. 제6항에 있어서, 상기 캐쉬 메모리 수단이 휘발성 랜덤 액세스 메모리인 데이터 캐슁 인터페이스.
  9. 제7항에 있어서, 상기 데이터를 신장하기 위한 수단이 압축된 데이터를 신장하는 것이 상기 데이터를 압축하기 위한 수단이 신장된 데이터를 압축하는 것보다 더 빠른 데이터 캐슁 인터페이스.
  10. 제8항에 있어서, 상기 데이터를 신장하기 위한 수단이 압축된 데이터를 신장하는 것이 상기 데이터를 압축하기 위한 수단이 신장된 데이터를 압축하는 것보다 더 빠른 데이터 캐슁 인터페이스.
  11. 데이터 저장 시스템으로부터 수신된 데이터 블록을 관련된 압축 데이터 단위로 압축하는 단계; 다수의 블록들의 전송 단위와 관련되는 다수의 할당 단위들이 체인 내로 연결되도록 다수의 압축된 데이터 단위들을 캐쉬 메모리의 주소지정 가능한 할당 단위들 내에 저장하는 단계; 특정 데이터 블록에 대한 데이터 처리 시스템 어드레스를 특정 할당 단위 및 체인 내의 특정 압축 데이터 단위를 식별하는 캐쉬 메모리 어드레스로 변환하기 위하여 인덱스를 생성하는 단계; 및 상기 데이터 처리 시스템 어드레스의 수신에 응답하여 상기 특정 압축 데이터 단위를 상기 특정 데이터 블록 내로 신장하는 단계를 포함하는 데이터 저장 시스템과 데이터 처리 시스템 사이에 위치된 데이터 캐쉬 인터페이스를 동작하는 방법.
  12. 제11항에 있어서, 상기 방법이 상기 캐쉬 메모리 내의 비어 있는 할당 단위들을 식별하는 단계; 및 2이상의 식별된 비어 있는 할당 단위들을 비어 있는 체인 내로 연결하는 단계를 더 포함하는 데이터 캐쉬 인터페이스를 동작하는 방법.
  13. 제11항에 있어서, 상기 데이터 저장 시스템이 비휘발성 저장 매체인 데이터 캐쉬 인터페이스를 동작하는 방법.
  14. 제12항에 있어서, 상기 데이터 저장 시스템이 비휘발성 저장 매체인 데이터 캐쉬 인터페이스를 동작하는 방법.
  15. 제13항에 있어서, 하나의 체인 내에 연결된 상기 다수의 할당 단위들이 상기 체인과 관련된 전송 단위 내의 상기 블록 데이터의 압축률에 따라 증가하거나 또는 감소하는 데이터 캐쉬 인터페이스를 동작하는 방법.
  16. 제14항에 있어서, 하나의 체인 내에 연결된 상기 다수의 할당 단위들이 상기 체인과 관련된 전송 단위 내의 상기 블록 데이터의 압축률에 따라 증가하거나 또는 감소하는 데이터 캐쉬 인터페이스를 동작하는 방법.
  17. 제15항에 있어서, 상기 저장하는 단계가 휘발성(volatile) 랜덤 액세스 메모리 내에서 이루어지는 캐쉬 인터페이스를 동작하는 방법.
  18. 제16항에 있어서, 상기 저장하는 단계가 휘발성 랜덤 액세스 메모리 내에서 이루어지는 캐쉬 인터페이스를 동작하는 방법.
  19. 제17항에 있어서, 상기 압축된 데이터를 신장하는 단계가 상기 신장된 데이터를 압축하는 단계보다 더 빠르게 이루어지는 캐쉬 인터페이스를 동작하는 방법.
  20. 제18항에 있어서, 상기 압축된 데이터를 신장하는 단계가 상기 신장된 데이터를 압축하는 단계보다 더 빠르게 이루어지는 캐쉬 인터페이스를 동작하는 방법.
KR1019970015167A 1996-07-24 1997-04-23 압축된 데이터 캐쉬 저장 시스템 KR100242868B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/685,761 US5875454A (en) 1996-07-24 1996-07-24 Compressed data cache storage system
US08/685,761 1996-07-24

Publications (2)

Publication Number Publication Date
KR980010784A KR980010784A (ko) 1998-04-30
KR100242868B1 true KR100242868B1 (ko) 2000-02-01

Family

ID=24753574

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970015167A KR100242868B1 (ko) 1996-07-24 1997-04-23 압축된 데이터 캐쉬 저장 시스템

Country Status (2)

Country Link
US (1) US5875454A (ko)
KR (1) KR100242868B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101102190B1 (ko) * 2008-12-03 2012-01-02 엔비디아 코포레이션 압축 상태 비트 캐시 및 보조 기억 장치
KR101857177B1 (ko) 2017-04-19 2018-06-20 황규원 벼 직파기

Families Citing this family (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6115787A (en) * 1996-11-05 2000-09-05 Hitachi, Ltd. Disc storage system having cache memory which stores compressed data
US6175896B1 (en) * 1997-10-06 2001-01-16 Intel Corporation Microprocessor system and method for increasing memory Bandwidth for data transfers between a cache and main memory utilizing data compression
US6725329B1 (en) * 2000-04-19 2004-04-20 Western Digital Technologies, Inc. Cache control system and method having hardware-based tag record allocation
US6601137B1 (en) * 2000-04-19 2003-07-29 Western Digital Technologies, Inc. Range-based cache control system and method
US6553457B1 (en) * 2000-04-19 2003-04-22 Western Digital Technologies, Inc. Tag memory disk cache architecture
US6791555B1 (en) * 2000-06-23 2004-09-14 Micron Technology, Inc. Apparatus and method for distributed memory control in a graphics processing system
US6724391B1 (en) 2000-06-30 2004-04-20 Intel Corporation Mechanism for implementing Z-compression transparently
US6557083B1 (en) * 2000-06-30 2003-04-29 Intel Corporation Memory system for multiple data types
US6539460B2 (en) 2001-01-19 2003-03-25 International Business Machines Corporation System and method for storing data sectors with header and trailer information in a disk cache supporting memory compression
US20030101312A1 (en) * 2001-11-26 2003-05-29 Doan Trung T. Machine state storage apparatus and method
US6640283B2 (en) * 2002-01-16 2003-10-28 Hewlett-Packard Development Company, L.P. Apparatus for cache compression engine for data compression of on-chip caches to increase effective cache size
KR100445913B1 (ko) * 2002-05-27 2004-08-25 한국전자통신연구원 버퍼 캐시를 이용한 페이지 모드 dram 가속기
US7133972B2 (en) * 2002-06-07 2006-11-07 Micron Technology, Inc. Memory hub with internal cache and/or memory access prediction
US7200024B2 (en) * 2002-08-02 2007-04-03 Micron Technology, Inc. System and method for optically interconnecting memory devices
US7117316B2 (en) * 2002-08-05 2006-10-03 Micron Technology, Inc. Memory hub and access method having internal row caching
US7254331B2 (en) * 2002-08-09 2007-08-07 Micron Technology, Inc. System and method for multiple bit optical data transmission in memory systems
US7149874B2 (en) * 2002-08-16 2006-12-12 Micron Technology, Inc. Memory hub bypass circuit and method
US6820181B2 (en) 2002-08-29 2004-11-16 Micron Technology, Inc. Method and system for controlling memory accesses to memory modules having a memory hub architecture
US6938120B2 (en) * 2002-08-29 2005-08-30 International Business Machines Corporation Apparatus and method to form one or more premigration aggregates comprising a plurality of least recently accessed virtual volumes
US6895466B2 (en) * 2002-08-29 2005-05-17 International Business Machines Corporation Apparatus and method to assign pseudotime attributes to one or more logical volumes
US7836252B2 (en) * 2002-08-29 2010-11-16 Micron Technology, Inc. System and method for optimizing interconnections of memory devices in a multichip module
US6889302B2 (en) * 2002-08-29 2005-05-03 International Business Machines Corporation Apparatus and method to maintain information in one or more virtual volume aggregates comprising a plurality of virtual volumes
US7102907B2 (en) * 2002-09-09 2006-09-05 Micron Technology, Inc. Wavelength division multiplexed memory module, memory system and method
US7181457B2 (en) * 2003-05-28 2007-02-20 Pervasive Software, Inc. System and method for utilizing compression in database caches to facilitate access to database information
US7245145B2 (en) * 2003-06-11 2007-07-17 Micron Technology, Inc. Memory module and method having improved signal routing topology
US7120727B2 (en) * 2003-06-19 2006-10-10 Micron Technology, Inc. Reconfigurable memory module and method
US7260685B2 (en) 2003-06-20 2007-08-21 Micron Technology, Inc. Memory hub and access method having internal prefetch buffers
US7107415B2 (en) * 2003-06-20 2006-09-12 Micron Technology, Inc. Posted write buffers and methods of posting write requests in memory modules
US7428644B2 (en) * 2003-06-20 2008-09-23 Micron Technology, Inc. System and method for selective memory module power management
US7389364B2 (en) * 2003-07-22 2008-06-17 Micron Technology, Inc. Apparatus and method for direct memory access in a hub-based memory system
US7210059B2 (en) * 2003-08-19 2007-04-24 Micron Technology, Inc. System and method for on-board diagnostics of memory modules
US7133991B2 (en) * 2003-08-20 2006-11-07 Micron Technology, Inc. Method and system for capturing and bypassing memory transactions in a hub-based memory system
US7136958B2 (en) * 2003-08-28 2006-11-14 Micron Technology, Inc. Multiple processor system and method including multiple memory hub modules
US20050050237A1 (en) * 2003-08-28 2005-03-03 Jeddeloh Joseph M. Memory module and method having on-board data search capabilities and processor-based system using such memory modules
US7310752B2 (en) * 2003-09-12 2007-12-18 Micron Technology, Inc. System and method for on-board timing margin testing of memory modules
US7194593B2 (en) * 2003-09-18 2007-03-20 Micron Technology, Inc. Memory hub with integrated non-volatile memory
US7143238B2 (en) * 2003-09-30 2006-11-28 Intel Corporation Mechanism to compress data in a cache
US20050071566A1 (en) * 2003-09-30 2005-03-31 Ali-Reza Adl-Tabatabai Mechanism to increase data compression in a cache
US20050071151A1 (en) * 2003-09-30 2005-03-31 Ali-Reza Adl-Tabatabai Compression-decompression mechanism
US7133228B2 (en) * 2003-10-10 2006-11-07 Seagate Technology Llc Using data compression to achieve lower linear bit densities on a storage medium
US7120743B2 (en) * 2003-10-20 2006-10-10 Micron Technology, Inc. Arbitration system and method for memory responses in a hub-based memory system
US7234070B2 (en) * 2003-10-27 2007-06-19 Micron Technology, Inc. System and method for using a learning sequence to establish communications on a high-speed nonsynchronous interface in the absence of clock forwarding
US7330992B2 (en) 2003-12-29 2008-02-12 Micron Technology, Inc. System and method for read synchronization of memory modules
US7216196B2 (en) * 2003-12-29 2007-05-08 Micron Technology, Inc. Memory hub and method for memory system performance monitoring
US7512750B2 (en) * 2003-12-31 2009-03-31 Intel Corporation Processor and memory controller capable of use in computing system that employs compressed cache lines' worth of information
US7257693B2 (en) * 2004-01-15 2007-08-14 Intel Corporation Multi-processor computing system that employs compressed cache lines' worth of information and processor capable of use in said system
US7188219B2 (en) 2004-01-30 2007-03-06 Micron Technology, Inc. Buffer control system and method for a memory system having outstanding read and write request buffers
US7412574B2 (en) * 2004-02-05 2008-08-12 Micron Technology, Inc. System and method for arbitration of memory responses in a hub-based memory system
US7181584B2 (en) * 2004-02-05 2007-02-20 Micron Technology, Inc. Dynamic command and/or address mirroring system and method for memory modules
US7788451B2 (en) 2004-02-05 2010-08-31 Micron Technology, Inc. Apparatus and method for data bypass for a bi-directional data bus in a hub-based memory sub-system
US7366864B2 (en) * 2004-03-08 2008-04-29 Micron Technology, Inc. Memory hub architecture having programmable lane widths
US7257683B2 (en) * 2004-03-24 2007-08-14 Micron Technology, Inc. Memory arbitration system and method having an arbitration packet protocol
US7120723B2 (en) * 2004-03-25 2006-10-10 Micron Technology, Inc. System and method for memory hub-based expansion bus
US7213082B2 (en) * 2004-03-29 2007-05-01 Micron Technology, Inc. Memory hub and method for providing memory sequencing hints
US7447240B2 (en) * 2004-03-29 2008-11-04 Micron Technology, Inc. Method and system for synchronizing communications links in a hub-based memory system
US6980042B2 (en) * 2004-04-05 2005-12-27 Micron Technology, Inc. Delay line synchronizer apparatus and method
US7590797B2 (en) * 2004-04-08 2009-09-15 Micron Technology, Inc. System and method for optimizing interconnections of components in a multichip memory module
US7162567B2 (en) * 2004-05-14 2007-01-09 Micron Technology, Inc. Memory hub and method for memory sequencing
US7222213B2 (en) * 2004-05-17 2007-05-22 Micron Technology, Inc. System and method for communicating the synchronization status of memory modules during initialization of the memory modules
US7363419B2 (en) * 2004-05-28 2008-04-22 Micron Technology, Inc. Method and system for terminating write commands in a hub-based memory system
US7519788B2 (en) * 2004-06-04 2009-04-14 Micron Technology, Inc. System and method for an asynchronous data buffer having buffer write and read pointers
US7310748B2 (en) 2004-06-04 2007-12-18 Micron Technology, Inc. Memory hub tester interface and method for use thereof
TWI273402B (en) * 2004-07-30 2007-02-11 Mediatek Inc Data buffering method in disc data reading system and system of the same
US7392331B2 (en) 2004-08-31 2008-06-24 Micron Technology, Inc. System and method for transmitting data packets in a computer system having a memory hub architecture
US20060168407A1 (en) * 2005-01-26 2006-07-27 Micron Technology, Inc. Memory hub system and method having large virtual page size
US20070005893A1 (en) * 2005-06-30 2007-01-04 Intel Corporation Correlated logic micro cache
US7974478B2 (en) * 2006-08-24 2011-07-05 Dell Products L.P. Methods and apparatus for reducing storage size
US7970216B2 (en) * 2006-08-24 2011-06-28 Dell Products L.P. Methods and apparatus for reducing storage size
KR100849305B1 (ko) * 2006-11-24 2008-07-29 삼성전자주식회사 데이터를 압축하여 관리하는 메모리 및 그 방법
WO2009119224A1 (ja) * 2008-03-25 2009-10-01 アイシン・エィ・ダブリュ株式会社 車両上制御装置への制御用データの書込み方法および車両上制御装置
US8013762B2 (en) * 2009-11-03 2011-09-06 Seagate Technology Llc Evaluating alternative encoding solutions during data compression
US8886883B1 (en) * 2012-03-31 2014-11-11 Emc Corporation System and method for improving cache performance
US10489348B2 (en) 2017-07-17 2019-11-26 Alteryx, Inc. Performing hash joins using parallel processing
US11100996B2 (en) 2017-08-30 2021-08-24 Micron Technology, Inc. Log data storage for flash memory
US10552452B2 (en) 2017-10-16 2020-02-04 Alteryx, Inc. Asynchronously processing sequential data blocks
US10558364B2 (en) * 2017-10-16 2020-02-11 Alteryx, Inc. Memory allocation in a data analytics system
KR102154580B1 (ko) * 2018-09-04 2020-09-10 세종대학교산학협력단 이미지 처리 장치 및 방법
US11586554B2 (en) * 2020-07-23 2023-02-21 Arm Limited Cache arrangements for data processing systems

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4490782A (en) * 1981-06-05 1984-12-25 International Business Machines Corporation I/O Storage controller cache system with prefetch determined by requested record's position within data block
US5133060A (en) * 1989-06-05 1992-07-21 Compuadd Corporation Disk controller includes cache memory and a local processor which limits data transfers from memory to cache in accordance with a maximum look ahead parameter
US5345577A (en) * 1989-10-13 1994-09-06 Chips & Technologies, Inc. Dram refresh controller with improved bus arbitration scheme
JP2646032B2 (ja) * 1989-10-14 1997-08-25 三菱電機株式会社 Lifo方式の半導体記憶装置およびその制御方法
US5263136A (en) * 1991-04-30 1993-11-16 Optigraphics Corporation System for managing tiled images using multiple resolutions
US5448742A (en) * 1992-05-18 1995-09-05 Opti, Inc. Method and apparatus for local memory and system bus refreshing with single-port memory controller and rotating arbitration priority
US5444489A (en) * 1993-02-11 1995-08-22 Georgia Tech Research Corporation Vector quantization video encoder using hierarchical cache memory scheme
US5369605A (en) * 1993-07-07 1994-11-29 Dell Usa, L.P. Incremental search content addressable memory for increased data compression efficiency
US5440336A (en) * 1993-07-23 1995-08-08 Electronic Data Systems Corporation System and method for storing and forwarding audio and/or visual information on demand
US5463422A (en) * 1993-10-13 1995-10-31 Auravision Corporation Data processing technique for limiting the bandwidth of data to be stored in a buffer
AU1514795A (en) * 1993-12-30 1995-08-01 Connectix Corporation Lossless data compression system and method
US5450130A (en) * 1994-03-30 1995-09-12 Radius Inc. Method and system for cell based image data compression
JP3426385B2 (ja) * 1995-03-09 2003-07-14 富士通株式会社 ディスク制御装置
US5627534A (en) * 1995-03-23 1997-05-06 International Business Machines Corporation Dual stage compression of bit mapped image data using refined run length and LZ compression

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101102190B1 (ko) * 2008-12-03 2012-01-02 엔비디아 코포레이션 압축 상태 비트 캐시 및 보조 기억 장치
KR101857177B1 (ko) 2017-04-19 2018-06-20 황규원 벼 직파기

Also Published As

Publication number Publication date
US5875454A (en) 1999-02-23
KR980010784A (ko) 1998-04-30

Similar Documents

Publication Publication Date Title
KR100242868B1 (ko) 압축된 데이터 캐쉬 저장 시스템
US6349372B1 (en) Virtual uncompressed cache for compressed main memory
US6115787A (en) Disc storage system having cache memory which stores compressed data
US10067881B2 (en) Compression and caching for logical-to-physical storage address mapping tables
US6816942B2 (en) Storage control apparatus and method for compressing data for disk storage
US6968424B1 (en) Method and system for transparent compressed memory paging in a computer system
US5734892A (en) Efficient method and apparatus for access and storage of compressed data
US5649151A (en) Efficient method and apparatus for access and storage of compressed data
KR960012360B1 (ko) 플래시메모리를 사용한 기억장치
US5237460A (en) Storage of compressed data on random access storage devices
US5305295A (en) Efficient method and apparatus for access and storage of compressed data
US6094707A (en) Method for memory allocation in a disk drive employing a chunk array and identifying a smallest available element for write caching
US6360300B1 (en) System and method for storing compressed and uncompressed data on a hard disk drive
US6779088B1 (en) Virtual uncompressed cache size control in compressed memory systems
KR100216146B1 (ko) 직접 액세스 저장장치의 데이터 압축 방법 및 압축 데이터 구조
US8230139B2 (en) Method and system for storing memory compressed data onto memory compressed disks
US6240419B1 (en) Compression store addressing
JPS59114658A (ja) デ−タ記憶空間の管理方法
US20030145172A1 (en) Method and system for updating data in a compressed read cache
US20030097520A1 (en) Control device applicable to flash memory card and method for building partial lookup table
WO2004059651A2 (en) Nonvolatile memory unit with specific cache
JPH05204561A (ja) フラッシュメモリを記憶媒体とした半導体ディスク
US9378214B2 (en) Method and system for hash key memory reduction
US6353871B1 (en) Directory cache for indirectly addressed main memory
WO1993000635A1 (en) Data storage management systems

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee