KR20050027270A - 압축률에 기반한 압축 메인 메모리 사용을 위한 시스템 및방법 - Google Patents
압축률에 기반한 압축 메인 메모리 사용을 위한 시스템 및방법 Download PDFInfo
- Publication number
- KR20050027270A KR20050027270A KR1020057001784A KR20057001784A KR20050027270A KR 20050027270 A KR20050027270 A KR 20050027270A KR 1020057001784 A KR1020057001784 A KR 1020057001784A KR 20057001784 A KR20057001784 A KR 20057001784A KR 20050027270 A KR20050027270 A KR 20050027270A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- compressed
- data blocks
- compression
- threshold
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
- G06F12/127—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
프로세싱 시스템(도 1, 구성요소 100)에서 액세스 지연 및 경합을 줄이기 위한 방법 및 구조가 개시된다. 본 발명은 이용가능한 메모리의 양이 미리 확정된 범위를 벗어나는 경우를 검출하고, 그에 대응하여 이용가능한 메모리의 양이 미리 확정된 범위 이내 일때까지 (이용가능한 메모리를 증가시키는) 압축 또는 (비압축 데이터를 위한 여분의 이용가능한 메모리를 사용하는) 압축해제를 위한 데이터 블록들을 선택한다. 데이터 블록들이 압축되는 경우, 압축률(DOC) 속성(도 3, 구성요소 303)이 판정되고 데이터 블록과 관련된 디렉토리 엔트리(도 3, 구성요소 300)에서 속성으로서 저장된다. 낮은 DOC 속성들을 가진 데이터 블록들뿐만 아니라, 최근 데이터 블록 참조들의 가장 최근에 사용된 목록이 재압축을 위하여 선택되는 것을 방지한다. 모두 0인 데이터 블록들은 기본적인 압축/압축해제 오버헤드를 회피하기 위하여 검출된다.
Description
본 발명은 일반적으로 컴퓨터 시스템에서 압축 메인 메모리 아키텍쳐 분야에 관한 것으로, 보다 상세하게는 압축 메인 메모리 또는 관련된 비압축 캐시 관리를 위한 개선된 방법 및 장치에 관한 것이다.
컴퓨터 메인 메모리 시스템은 현재 메인 메모리와 프로세서들 사이의 데이터 플로우 경로들에서 고속의 압축/압축해제 하드웨어를 사용하는데 일반적으로 이용가능하다. 이 시스템 내의 메인 메모리로의 프로세서 액세스는 압축기와 압축해제기 장치들을 통하여 간접적으로 수행되는데, 압축기와 압축해제기 모두는 프로세서 액세스 지연 오버헤드를 현저히 증가시키지만, 스토리지 비용을 현저히 절감시키는 것을 가능케 한다.
대용량 캐시 메모리들은 프로세서와 압축 및 압축해제 하드웨어 사이에서 구현되어, 압축 메모리로의 프로세서 참조들의 빈도를 줄이고, 높은 압축/압축해제 지연 효과를 완화한다. 이 캐시들은 압축해제된 데이터를 포함하고 일반적으로 압축 및 압축해제에 필요한 고정 데이터 블록 크기와 동일한 캐시 라인들로 파티션된다. 프로세서가 아직 캐시에 위치하지 않은 데이터를 요청하는 경우, 요청된 데이터가 포함된 그 라인은 압축 메모리에 위치하고, 압축 메모리로부터 읽히며, 압축해제되고, 압축해제 캐시에 위치한다. 어떠한 빈 캐시 라인이 이용가능하지 않는 경우, 기존의 캐시 라인이 대체를 위해 선택되어, 기존의 캐시 라인이 그 캐시로부터 제거되고 압축 메모리에서 압축되고 저장되며 새로운 캐시 라인으로 대체된다. 최초 참조의 국부성 및 캐시 라인 내의 연속된 프로세서 참조들은 비압축 캐시 데이터로부터 직접적으로 서비스되고, 압축해제와 관련된 지연을 회피한다. 비압축 데이터 캐싱의 세가지 방법들이 기술된다.
통상적인 독립 캐시 어레이 및 관련 디렉토리는 최고의 성능을 제공하지만, 최고의 비용을 요한다. 프로세서로의 액세스 지연 최소화를 위하여 캐시 및 디렉토리 하드웨어가 최적화될 수 있고 메인 메모리 인터페이스 트래픽이 캐시 인터페이스의 트래픽으로부터 분리되는 경우에 성능이 최대화된다. 그러나, 비용은 캐시 어레이, 디렉토리, 관련된 하드웨어 인터페이스들과 관계가 있다.
Hovis 외(여기서 참조로 포함하는 미국 특허 제5,812,817호)는 논리적으로 메인 메모리 내에 비압축 캐시 메모리 영역을 할당한다. 캐시 제어기와 메모리 제어기는 동일한 물리 인터페이스를 통하여 동일한 스토리지 어레이를 공유한다. 캐시 라인 대체시에 데이터는 압축 메인 메모리 영역과 비압축 캐시 사이에서 왕복한다. 이 방식의 장점은 압축 캐시 크기가 미리 특정 시스템 애플리케이션들에 최적화될 수 있고, 독립 캐시 메모리에 관련된 비용, 디렉토리 및 관련 인터페이스들이 제거된다는 것이다. 지연에 민감한 캐시 제어기에 의한 메인 메모리 물리 인터페이스에 대한 경합에 의하여 성능이 현저히 저하된다.
Berveniste 외(여기서 참조로 포함하는 미국 특허 제6,349,372호)는 압축 메모리 내에서 비압축 형태로 저장되도록 허용된 미리 확정된 수의 비압축 데이터 블록들로 구성되고, 동일한 방식으로 압축불가능 데이터 블록이 저장될 가상 비압축 캐시를 기술한다. 모든 프로세서 데이터 참조들이 압축 메모리 디렉토리로부터 위치하게 되어, 분리된 캐시 디렉토리는 필요하지 않다. 비압축 데이터 블록들의 FIFO 목록은 유지되고, 새로운 데이터 블록이 비압축인 경우, 새로운 데이터 블록은 비압축 목록으로부터 데이터 블록을 대체한다. 비압축 목록에서 데이터 블록 대체시에 데이터는 압축/압축해제 하드웨어를 통하여 압축 메인 메모리를 왕복한다. 특별한 캐시 메모리 또는 디렉토리가 존재하지 않으므로, 이 방식은 비용이 매우 적다. 그러나, 프로세서 데이터와 디렉토리 참조들을 가지는 압축기/압축해제기 데이터 플로우의 경합에 의하여 성능이 저하된다.
이 방식들 모두는 (실제적인 경우) 압축 형태에서의 모든 압축 메모리 경합을 유지하고, 비압축 형태에서의 정해진 양 또는 캐시의 데이터를 허용하는 것을 포함한다. 프로세서가 비압축 데이터 세트 또는 캐시에서 발견되지 않는 데이터를 요청하는 경우, 그 데이터는 단지 (요구시에) 압축되지 않는다. 이것은 메인 메모리의 이용가능한 공간을 최대화하지만, 그 공간은 자주 사용되지 않는다. 데이터로의 액세스가 요청되기 이전에는 이 방식들 중 어떠한 것도 데이터를 압축/압축해제할 수단을 제공하지 않는다. 그러므로 프로세서가 메모리로의 액세스를 필요로 함과 동시에 압축기/압축해제기 데이터 트래픽 블록은 메모리에 유도되고, 경합을 유발한다. 또한, 기록 트래픽은 모든 필요 데이터가 압축기에 이용가능할 때까지 수행될 수 없고, 메모리 기록 스톨들(Stalls)이 공통이 되도록 압축기는 (수백 사이클들의 기간에) 데이터를 처리한다. 또한, 이 방식들은 모두 많은 양의 미사용 메모리를 남겨두고, 메모리 압력으로 알려진 문제를 완화하는 특별한 소프트웨어에 의존한다. 낮은 총 압축률과 높은 실제 메모리 활용 때문에, 압축 메모리에 데이터를 저장하기 위해 그 시점에 이용가능한 것보다 더 많은 메모리가 필요한 경우 메모리 압력 문제가 발생한다.
공간을 사용하지 않는 것과는 반대로, 데이터를 저장할 메인 메모리의 공간을 최대화할 수 있는 것이 바람직하다. 또한, 메인 메모리에 실제와 동일한 양의 비압축 데이터를 저장하고, 압축/압축해제 동작들을 회피함으로써 참조 지연을 줄이는 것은 바람직할 것이다. 또한, 압축 동작의 오버헤드 유발 후에 각 데이터 블록과 관련된 메모리에서 데이터 블록의 압축률을 유지하고, 이후에 낮게 압축가능한 데이터 블록들에 대해 불필요한 압축 활동을 완화하는 것이 바람직하다. 또한, 프로세서가 데이터를 필요로 하기 이전에 압축해제/압축 활동을 수행할 수 있고, 메인 메모리가 사용되지 않고 있는 경우에는, 메모리로의 프로세서 액세스로 경합 조건들을 완화할 수 있는 것도 바람직하다. 마지막으로 압축 메모리 관리자 하드웨어는 메모리 압축 조건들에 즉시 반응하여 낭비되는 메모리 여분들의 크기를 줄이는 것이 바람직하다.
전술한 목적 및 다른 목적들, 태양들 및 장점들은 본 발명의 바람직한 실시예(들)의 후술하는 상세한 설명으로부터 다음의 도면들을 참조하여 더 잘 이해될 수 있을 것이다.
도 1은 하드웨어 압축기/압축해제기를 가지는 캐시 및 메인 메모리 시스템을 구비한 컴퓨터의 블록도를 도시한다.
도 2는 메모리 주소 공간 파티션을 도시한다.
도 3은 본 발명의 원리에 따른 변형된 압축 메모리 섹터 변환 테이블을 도시한다.
도 4는 본 발명의 원리에 따른 캐시없는(cacheless) 압축 메인 메모리 액세스 제어를 엑세스하는 방법을 위한 상태도를 도시한다.
도 5는 본 발명의 원리에 따라, 전체적인 메모리 압축률과 관련하여, 캐시없는 압축 메모리 내의 최적 비압축 데이터 양을 동적으로 유지하는 방법을 위한 상태도를 도시한다.
도 6은 본 발명의 원리에 따라 메모리 제어 장치를 도시한다.
압축 메모리 시스템 내에서의 데이터를 관리하는 방법을 제공하여 비압축 형태에서 데이터를 저장하는데 이용되는 압축 메인 메모리의 양을 최대화하고, 데이터 액세스가 압축 및 확장 지연 페널티들을 반드시 유발하는 조건들을 완화하는 것이 본 발명의 목적이다.
이용가능한 메모리의 양이 미리 확정된 임계치들을 벗어나는 경우를 검출함으로써 전체적인 압축 메인 메모리 압축률을 통제하고, 그에 대응하여 이용가능한 메모리의 양이 미리 확정된 임계치들 이내 일때까지, 메모리 시스템이 비지(busy)한 경우 또는 비지한 조건들에 독립된 우선순위로, (이용가능한 메모리를 증가시키는) 압축 또는 (비압축 데이터를 위한 여분의 이용가능한 메모리를 사용하는) 압축해제를 위한 데이터 블록들의 선택을 시작하는 방법 및 장치를 제공하는 것이 본 발명의 또 다른 목적이다.
본 발명은 압축 데이터 블록들 및 비압축 데이터 블록들을 포함하는 데이터 블록들의 섹터를 가지는 메모리를 구비하는 컴퓨터 시스템을 포함한다. 메모리에 동작적으로 접속된 섹터 카운트는 메모리의 사용된 메모리 섹터 카운트를 유지하도록 적합화된다. 압축 메모리 관리자는 메모리에 동작적으로 접속된다. 또한 본 발명은 압축 메모리 관리자에 동작적으로 접속되고 압축 메모리 임계치를 포함하는 압축 메모리 임계치 레지스터를 가진다. 섹터 변환 테이블은 메모리에 동작적으로 접속되고 데이터 블록이 마지막으로 액세스된 때를 나타내는 터치 비트를 포함한다. 확장 메모리 임계치 레지스터는 압축 메모리 관리자에 동작적으로 접속되고 확장 메모리 임계치를 포함한다. 압축 메모리 관리자는 사용된 메모리 섹터 카운트가 압축 메모리 임계치를 초과하는 경우 메모리에서 데이터 블록들을 압축하도록 적합화된다. 터치 비트에 기초하여, 보다 최근에 액세스된 데이터 블록들이 압축되기 이전에 보다 덜 최근에 액세스된 데이터 블록들이 압축된다. 압축 메모리 관리자는 사용된 메모리 섹터 카운트가 확장 메모리 임계치 미만인 경우 데이터 블록들을 압축해제하도록 적합화된다.
또한 본 발명은 메모리에 동작적으로 접속된 메모리 제어기를 갖고, 메모리 제어기가 메모리 액세스 요청들을 수행하지 않는 경우에만 압축 및 압축해제가 압축 메모리 관리자에 의해 수행된다. 우선순위 압축 메모리 임계치 레지스터는 압축 메모리 관리자에 동작적으로 접속되고 우선순위 압축 메모리 임계치를 포함한다. 메모리 제어기의 메모리 액세스 활동에 관계없이, 사용된 데이터 섹터 카운트가 우선순위 압축 메모리 임계치를 초과하는 경우에, 압축 메모리 관리자는 메모리에서 데이터 블록들을 압축시키도록 적합화될 수 있다. 섹터 변환 테이블은 데이터 블록이 모두 0임을 나타내는 제로 속성을 가지는 데이터 블록들의 압축 속성들을 포함한다. 압축 메모리 관리자는 메모리 내에 제로 엔트리로서 제로 속성을 가지는 데이터 블록들을 저장하도록 적합화되고, 제로 엔트리는 메모리 섹터들을 사용하는 것을 회피한다. 압축 메모리 관리자는 저 압축률 속성을 가지는 데이터 블록들을 압축하기 이전에 고 압축률 속성을 가지는 데이터 블록들을 압축하도록 적합화된다.
본 발명은 컴퓨터 시스템에서 섹터화된 압축 메모리를 이용하는 방법을 사용한다. 그 방법은 메모리의 사용된 메모리 섹터 카운트를 모니터하고, 사용된 메모리 섹터 카운트가 압축 메모리 임계치를 초과하는 경우 메모리 내의 데이터 블록들을 압축하며, 사용된 메모리 섹터 카운트가 확장 메모리 임계치 미만인 경우에 데이터 블록들을 압축해제하는 것을 포함한다. 본 발명은 더 최근에 액세스된 데이터 블록들을 압축하기 이전에 덜 최근에 액세스된 데이터 블록들을 압축한다. 압축 및 압축해제는 컴퓨터 시스템에 있는 압축 메모리 관리자가 메모리 액세스 요청들을 수행하지 않는 경우에 수행된다. 또한 본 발명은, 압축 메모리 관리자의 메모리 액세스 요청 활동에 관계없이, 사용된 메모리 섹터 카운트가 우선순위 압축 메모리 임계치 미만인 경우에 메모리에 있는 데이터 블록들을 압축한다. 본 발명은 메모리에 있는 제로 엔트리로서 모두 0을 가지는 데이터 블록들을 항상 저장하고, 제로 엔트리는 메모리 섹터들을 사용하는 것을 회피한다. 본 발명은 저 압축률을 가지는 데이터 블록들을 압축하기 이전에 고 압축률을 가지는 데이터 블록들을 압축한다. 압축해제는 비압축 데이터 블록들을 압축해제하는 것을 회피한다. 또한, 본 발명은 컴퓨터 시스템의 캐시에 보유된 데이터 블록을 압축하는 것을 회피한다.
본 발명에 따르면, 주어진 전달 사이클에 있는 데이터가 모두 0인 경우를 나타낼 목적으로, 제로 데이터를 검출하는 수단은 압축기 기록 버퍼로의 데이터 경로에 존재한다. 주어진 데이터 블록을 위한 어떤 전달 사이클도 0이 아닌 경우에는, 데이터 블록은 0이 아닌 데이터 블록이다. 빈 메모리가 충분히 존재하는 경우에는, 모든 0이 아닌 데이터 블록들은 압축기를 우회하여 비압축 형태로 저장된다. 그렇지 않으면, 공간적 이익이 존재하는 경우에는 데이터가 압축되고 압축된 체로 저장된다. 3-비트 압축률(DOC) 속성이 얻어지고 모든 데이터 블록을 위하여 압축 메모리 디렉토리 엔트리에 저장된다. 이용가능한 메모리 양이 임계치 경계를 넘는 경우, 압축 메모리 관리자는 압축 메모리 디렉토리 DOC 필드들을 스캔하면서, 메모리를 해제하기 위한 최고 압축가능 데이터 블록들 또는 (압축 또는 압축해제를 통하여) 메모리를 확장하기 위한 압축 데이터 블록들을 선택하기 시작하는 것을 가능케 한다. 이 프로세스는 이용가능한 메모리가 미리 확정된 임계치 경계 내로 돌아올 때까지 계속된다.
본 발명이 비압축 캐시를 가진 시스템들에 적용되는 경우에, 캐시되지(cached) 않는 데이터 블록들만이 재압축을 위한 후보들이 된다. 또한, 본 발명은 압축 메인 메모리로부터 스태일(stale) 데이터를 제거한다. 그렇지 않고 비압축 캐시가 사용되지 않는 경우, 메모리로부터 읽혀진 가장 최근 데이터 블록 주소들의 작은 (전형적으로 32, 64, 128 엔트리) 버퍼는 하드웨어에서 유지되고, 버퍼에 위치하지 않은 데이터 블록들만이 재압축을 위한 후보들이 된다.
도면들 특히 도 1을 참조하면, 컴퓨터 시스템(100)의 블록도가 도시된다. 컴퓨터 시스템은 시스템 메인 메모리(103)로의 액세스를 제공하는 공통의 공유 메모리 제어기(102)에 접속된 하나 이상의 프로세서(101)들을 포함한다. 공유 메모리 제어기는 메인 메모리 내의 최종 스토리지를 위하여 고정된 크기의 정보 블록들을 가능한 한 작은 블록으로 압축하기 위한 압축기(104), 저장된 정보가 나중에 메인 메모리로부터 검색된 후에 압축 동작을 거꾸로하기 위한 압축해제기(105), 및 압축기로 향하는 메인 메모리 저장 요청 정보 블록(들)을 큐잉(queuing)하기 위한 기록 큐(113)을 포함한다. 프로세서 데이터 버스(108)는 다른 프로세서들 및/또는 공유 메모리 제어기 사이에서 비압축 정보를 전송하도록 사용된다. 정보는 메인 메모리(103)로부터 압축해제기(105)를 통과 또는 우회하고 멀티플렉서(111)을 경유하여 프로세서 데이터 버스(108)에까지 전달될 수 있다. 유사하게, 정보는 프로세서 데이터 버스(108)로부터 기록 큐(113)를 거치고 압축기(104)를 통과 또는 우회하며 멀티플렉서(112)를 경유하여 메인 메모리(103)에까지 전달될 수 있다.
메인 메모리(103)는 전형적으로 메모리 제어기(106)에 의해 제어되는 액세스를 가지는 동적 랜덤 액세스 메모리(DRAM)로 구성된다. 프로세서 주소 버스(107) 상에 나타나는 주소들은 실제 주소들(Real Addresses)로서 알려져 있으며, 프로그래밍 분야에 공지되어 있다. 메인 메모리 주소 버스(109) 상에 나타나는 주소들은 물리 주소들(Physical Addresses)로서 알려지고, 메모리 제어기와 메인 메모리 DRAM 사이에서만 사용되며 관련된다. 메모리 제어기(106) 내의 메모리 관리 블록(MMU) 하드웨어는 실제 프로세서 주소들을 가상 물리 주소 공간으로 변환하도록 사용된다. 이 변환은 압축된, 그래서 가변 크기인 정보를 효율적으로 저장하고 검색할 목적으로 작은 증분들에 물리 주소를 할당하는 수단을 제공한다.
압축기(104)는 위치를 찾고 블록 내의 반복되는 바이트 스트링들을 주어진 스트링의 첫번째 인스턴스를 가리키는 포인터로 교체하며, 프로토콜에 따른 결과를 인코딩함에 의해, 정보의 고정된 크기 즉, 1024 바이트의 블록 상에서 동작한다. 이 프로세스는 고정 길이 이상의 바이트 비교를 통하여 일어나고, 시퀀스 카운터와 보조를 맞추며, 일정한 완료 시간이 걸린다. 압축을 보증할 시작 블록 크기를 압축기가 충분히 줄일 수 없는 경우, 포스트 프로세스 출력 블록은 몇 바이트 내지 원래의 블록 크기의 범위를 가진다. 압축해제기(105)는 압축기 동작을 거꾸로함으로써 기능하는데, 압축 결과 얻어지는 압축기 출력 블록을 디코딩하여 알려진 포인터들에 의해 지시되는 위치의 블록에 바이트 스트링들을 삽입함으로써 원래의 정보 블록을 재구성한다. 가장 좋은 환경에서도, 압축기는 일반적으로 주변 시스템의 1/4 ~1/2 데이터 레이트 대역폭을 가지는 것만이 가능하다. 압축 및 압축해제 프로세스는 본래 선형이고 또한 직렬적이며, 하드웨어를 통하여 상당히 긴 메모리 액세스 지연을 나타낸다.
도 2를 참조하면, 메인 메모리 파티션을 위한 구조가 아이템(200)으로 도시된다. 압축 메인 메모리(205)는 프로세서(들) 프로그램 및 데이터 뿐만 아니라, 정보를 액세스하는데 필요한 모든 필수 데이터 구조들를 포함하기, 때문에 논리적 엔터티이다. 논리적 압축 메인 메모리(205)는 물리 메모리 주소 공간(206)으로부터 물리적으로 파티션화된다. 어떤 경우, 메인 메모리 파티션(205)은 분리 영역을 제공하는 이용가능한 물리 주소보다 작아서, 적분 디렉토리를 가지는 캐시 또는 외부적으로 실행되는 것(212)처럼 서비스한다. 실행되는 경우에, 캐시 스토리지는 비압축 섹터들의 관리되는 양인 물리 메모리(206)의 영역(201), 또는 분리된 스토리지 어레이로서 실행된다는 것을 주의하여야 한다. 실행되는 어떠한 경우에, 캐시 제어기는 캐시가 존재하지 않는 경우 프로세서가 하는 겻과 유사한 방식으로 압축 메인 메모리에 액세스를 요청할 것이다.
논리적 메인 메모리(205)는 섹터 변환 테이블(202)로 파티션화되고, 섹터들로 조직되는 길이 만큼의 압축 또는 비압축 정보, 프리 섹터 포인터들, 또는 어떤 다른 정보들도 포함할 수 있는 섹터 스토리지(203)에 할당될 남는 메모리를 가진다. 섹터 변환 테이블 영역 크기는 시스템 내의 프로그램 가능한 레지스터에 의해 정의되는 실제 주소 공간 크기에 비례하여 변한다. 특히, 수학식 1은 다음과 같이 섹터 변환 테이블 영역 크기의 변환을 제어한다.
<수학식 1>
섹터 변환 테이블 크기 =
(실제 메모리 크기/압축 블록 크기)×변환 테이블 엔트리 크기
엔트리는 프로세서의 실제 주소 공간, 이하의 수학식 2에 따라 제어되는 요청 주소에서의 고정 주소 범위로 직접 맵핑된다.
<수학식 2>
섹터 변환 테이블 엔트리 주소 =
(실제 주소 크기/압축 블록 크기)×변환 테이블 엔트리 크기+오프셋 크기
예컨대, 매핑은 16바이트 변환 테이블 엔트리를 사용하여 1024 바이트의 실제 주소 압축 블록을 재위치시키고, 256 바이트 섹터들로서 할당되며, 테이블 엔트리 내에 저장된 25-비트 포인터에 의해 지시되는 물리 메모리 주소에 각각 위치된다. 또한 그 엔트리는 유효성, 크기, 및 가능하게 다른 정보를 나타내는 섹터 포인트들의 수를 나타내는 속성 비트들(208)을 포함한다. 메인 메모리에 대한 모든 실제 주소 참조는 메모리 제어기가 요청 주소(210)를 포함하는 실제 주소 블록에 대응하여 변환 테이블 엔트리(207)를 참조하도록 유발한다.
읽기 요청들에 대하여, MMU는 속성 비트들(208)을 디코딩하고, 유효 포인터(209)를 추출하며 메모리 제어기가 지시된 섹터(204)에 위치하는 정보를 메인 메모리 섹터화된 영역(203)으로부터 읽도록 요청한다. 유사하게, 정보가 메인 메모리에 기록된 경우를 제외하면, 동일한 동작들을 수행하는 MMU 및 메모리 제어기에서 기록 요청이 유발된다. 그러나 기록 요청이 변환 테이블 엔트리에 있는 것보다 더 많은 유효 섹터들을 필요로 하는 경우, 기록이 시작되기 이전에 추가적인 섹터들이 테이블 엔트리에 할당되는 것이 필요하다. 섹터들은 일반적으로 미사용 섹터들에 저장된 포인터들의 연결 목록 또는 스택과 같이, 동적으로 유지되는 미사용 섹터들의 목록으로부터 할당된다. 데이터를 저장하기 위하여 할당되는 섹터들의 절대적 숫자는 항상 섹터 사용 카운터 또는 섹터 프리 카운터에 의해 알려지고, 미사용 섹터 리스트에/로부터 섹터들이 전달되는 경우에는 조정된다. 이 변환 방식에는 많은 가능한 변화들이 있지만, 모두 섹터 변환 테이블로서 매핑되는 메인 메모리 영역 및 섹터들로서 매핑되는 메모리 영역을 포함한다. DRAM 기반의 메인 메모리 내의 이 데이터 구조들의 스토리지는 최저의 비용에서 최고의 성능을 제공할 뿐만 아니라, 압축 및 변환없이 메모리 시스템을 전형적인 직접 매핑 메모리로 복귀시키는 것을 가능케 한다.
전형적인 압축 메인 메모리 시스템을 기술하면서, 본 발명의 일 실시예가 상세하게 기술된다. 본 발명에 따르면, 압축 메모리 관리자(CMM) 하드웨어가 압축 메모리 내의 압축 데이터 총량을 최대화시킬 목적으로, 세개의 프로그램 가능한 레지스터들은 미리 결정된 임계치를 설정하는 수단을 제공하여 할당된 메모리 섹터 카운트가 미리 설정된 범위를 벗어나는 경우를 검출한다. 확장 메모리 임계치(EMT), 압축 메모리 임계치(CMT), 및 우선순위 압축 메모리 임계치(PCMT) 레지스터는 항상 섹터 사용 카운터와 비교된다. 섹터 사용 카운터 값이 EMT보다 작은 경우에, CMM 하드웨어는 압축 데이터 블록들의 위치를 찾고 확장할 수 있다. 반대로, 섹터 사용 카운터 값이 CMT 또는 PCMT보다 큰 경우에, CMM 하드웨어는 확장 데이터 블록들의 위치를 찾고 압축할 수 있다. 활성화된 경우에는, CMM이 PCMT에 의해 활성화 되는 경우를 제외하고, 메모리가 액세스 요청들이 유발된 프로세서를 서비스하느라 비지한 경우에는 CMM 만이 동작한다. 이 경우에, CMM은 프로세서 활동에 관계없이 동작하여, 압축을 통해 미사용 풀(pool)에 해제될 메모리 섹터들의 양을 최대화하고, 그것에 의하여 미사용 섹터 풀이 위험하게 적은 경우에는 메모리 압력 조건들을 완화한다.
CMM이 STT를 참조하는 경우에, CMM은 전형적으로 4 내지 16인 STT 엔트리들의 블록을 액세스할 것이다. 또한 CMM이 프로그램 가능한 레지스터에 따라 주기적으로 STT를 참조하도록 실행될 수 있다. 소프트웨어는 시스템이 동작중인 때에는 항상 레지스터들을 다시 프로그램할 수 있어서, 새로운 런타임 메모리 조건들을 수용하는 통제 경계들을 재정의한다. 임계치들 근처에서 섹터 사용 카운트를 디더링(dithering)하는 경우, CMM이 확장 및 압축 모드들 사이에서 왕복하는 것을 방지하기 위하여, 히스테리시스 레벨이 임계치들에 적용된다. 예를 들면, CMM은 섹터 사용 카운터 값이 CMT보다 큰 경우 활성화되고, 섹터 사용 카운터 값이 CMT - 히스테리시스 오프셋(전형적으로 64) 미만일 때까지 유지된다. 명백한 언급없이, 임계치로의 또 다른 참조들 모두는 히스테리시스 오프셋을 나타낸다.
상술한 바와 같이, 일부 데이터 블록 패턴들은 매우 높게 압축가능하여, 압축된 결과는 그것을 나타내는 특별 비트와 함께 관련된 STT 엔트리에 알맞을 정도로 작으며, 어떤 이용가능한 메모리 섹터들도 필요로 하지 않는다. 본 발명은 보통의 압축기 및 압축해제기 오버헤드(지연 및 대역폭)를 유발하지 않고, 그 데이터 블록 패턴들이 "모두 0"인 케이스를 검출하는 수단을 제공하여, 하드웨어가 다른 데이터 블록들 상에서 병렬적으로 동작하도록 허용한다. 주어진 전달 사이클의 데이터가 모두 0인 경우를 나타낼 목적으로, "제로 데이터 압축기"는 제로 데이터가 압축기 기록 버퍼의 데이터 경로에 존재하는 경우를 검출한다. 주어진 데이터 블록에 대한 어떤 전달 사이클도 0이 아닌 경우에는, 데이터 블록은 0이 아닌 데이터 블록이고, 그렇지 않으면 데이터 블록은 "제로" 케이스이며, 특별하게 인코딩된 STT 엔트리로서 즉시 저장될 수 있다. 모든 "제로" 데이터 블록들은 압축 효율을 얻도록 항상 압축되어 저장된다. "제로" 케이스가 메모리 읽기 접근 시에 디코딩되는 경우에는, 메모리 제어기는 모두 제로인 응답에 어떤 데이터 블록 압축해제 동작도 제공하지 않는다. 빈 메모리가 충분히 존재하는 경우에는, 모두 0이 아닌 데이터 블록들은 비압축 형태로 (압축기를 우회하여) 저장되고, 그렇지 않으면 데이터는 공간 이익이 존재하는 경우에 압축되고 압축된 체로 저장된다
도 6을 참조하면, 본 발명의 원리에 따른, 모두 0인 데이터 블록들을 검출하는 수단을 가지는 메모리 제어 장치가 도시된다. 도면부호 603부터 601까지의 데이터 플로우에서, 프로세서는 멀티플렉서(602)에 의하여 개선되어, 압축해제기(609) 출력 데이터(601)를 랩핑(wrap)하는 수단을 기록 큐(605)를 통하여 압축기(606)에 제공하고, 비압축 메인 메모리 데이터 블록들의 압축 및 압축 메인 메모리 데이터 블록들의 확장을 수행하는 수단을 메모리 제어기(607)에 제공한다. 또한, 버스-폭의 논리적 OR 펑션(604)은, 프로세서 데이터 버스(603) 또는 압축기 데이터 버스(601)부터 압축기(606) 기록 큐(605)까지, 데이터 블록 전달과 관련있는 특정 사이클이 0이 아닌 경우를 검출하는 수단을 제공한다. 이 논리 조건들은 논리 신호(608)에 의하여 메모리 제어기(607)로 운반된다. 메모리 제어 하의 압축은 비압축 데이터 블록들이 압축해제기(609)를 우회하여 멀티플렉서(610)까지 가도록 하며, 멀티플렉서(602), 제로 검출기(604)를 통과하여 기록 큐(605)로 흘러서, 데이터가 멀티플렉서(611)까지 압축기(606)을 통과 또는 우회하여 메모리에 다시 기록될 수 있도록 한다. 메모리 제어 하의 확장은 압축 데이터 블록들이 압축해제기(609)를 통과하고, 멀티플렉서(610), 멀티플렉서(602), 제로 검출기(604)를 통과하여 기록 큐(605)까지 흐르게 하고, "모두 0"인 특별 케이스 또는 비압축의 경우, 데이터가 멀티플렉서(611)까지 압축기(606)을 우회하여 메모리에 다시 기록될 수 있도록 한다.
도 3을 참조하면, 본 발명의 원리들에 따라 변형되어, 개선된 압축 메모리 섹터 변환 테이블(STT; 302)이 도시되어 있다. 터치(T) 비트(304)는 각 STT 엔트리(301)를 포함하여, 프로세서가 특정 데이터 블록을 액세스한 때를 나타낸다. 터치 비트는 STT 엔트리가 프로세서 읽기 또는 기록 요청을 서비스하도록 액세스된 경우에는 언제나 세팅된다. 일부 STT를 업데이트하는 경우에 CMM은 터치 비트를 리셋한다.
3-비트 압축률(DOC) 속성 필드(303)는 각 STT 엔트리(301)에 포함되어, 8개의 유일한 압축 속성들을 디코딩한다. DOC는 데이터 블록이 "모두 0"인 특별 케이스를 나타내는 "제로"를 포함한다. 모두 0인 특별 케이스는 압축기를 우회하여 어떤 압축 메모리 섹터들도 사용하지 않고 STT 엔트리에 압축되며, 절대로 압축해제되지 않는다. 또한, DOC는 데이터 블록이 총 (제로가 아닌, 특별 케이스) 압축률을 가진다는 것을 나타내는 "스페셜(special)"을 포함한다. "스페셜" 케이스는 어떤 압축 메모리 섹터들도 사용하지 않고 STT 엔트리에 압축된다. DOC는 데이터 블록이 고 압축률을 가지는 것을 나타내는 "하이(high)"를 포함한다. "하이" 압축 데이터 블록은 메인 메모리 스토리지의 1 또는 2 메모리 섹터들을 필요로 한다. 또한, DOC는 데이터 블록이 중간 정도의 압축률을 가지는 것을 나타내는 "미디엄(medium)"을 포함한다. "미디엄" 압축 데이터 블록은 메인 메모리 스토리지의 3개의 메모리 섹터들을 필요로 한다. DOC는 데이터 블록이 저 압축률을 가지는 것을 나타내는 "로우(low)"를 포함한다. "로우" 압축 데이터 블록은 메인 메모리 스토리지의 4개의 메모리 섹터들을 필요로 하지만, 닐(nil) 케이스는 아니다. 또한, DOC는 데이터 블록이 미지의 압축률을 가지는 것을 의미하는 "언논(unknown)"을 포함한다. "언논" 비압축 데이터 블록은 절대 압축된 적이 없고, 압축기를 우회하지 않았거나, 또는 마지막 압축 이후에 변형된 적이 있다. DOC는 데이터 블록이 압축가능하지 않음, 즉 실제적이지 않은 압축을 나타내는 "닐"을 포함한다. 또한, DOC는 데이터 블록이 절대로 압축되지 않을 것임을 나타내는 "네버"를 포함한다. 주어진 데이터 블록을 위하여 압축이 회피되는 경우 특정한 성능 최적화 애플리케이션을 위하여 "네버"는 단지 소프트웨어로 세팅된다.
"제로" 내지 "닐"의 DOC 값들은 하드웨어에 의하여 설정되고, "네버"의 DOC 값은 소프트웨어에 의하여 설정 또는 변경된다. CMM이 메모리를 압축하고 있는 경우, CMM은 압축을 위하여 가장 유리한 비압축 데이터 블록들, 예컨데 최고의 압축률을 가지는 데이터 블록들을 선택한다. CMM이 메모리를 확장하고 있는 경우, 단지 압축된 또는 미지의 데이터 블록들이 압축해제를 위하여 선택된다. 본 발명이 비압축 캐시를 가진 시스템에 적용되는 경우에는, 단지 캐시되지 않은 데이터 블록들만이 재압축을 위한 후보들이 된다. 그렇지 않으면, 메인 메모리로부터 읽혀졌던 가장 최근의 데이터 블록 주소들의 작은 버퍼(전형적으로 32 또는 64)는 하드웨어에 유지되고, 버퍼에 위치하지 않은 데이터 블록들만이 재압축을 위한 후보들이 된다. 초기화 시에, 전체 물리 메모리는 유효한 에러 보정을 설정하는 패턴으로 채워진다. STT 인코딩은 유효 STT "모두 제로" 케이스로서 디코딩될 수 있는 복제된 패턴으로 채워지도록 하는 방법으로 정의된다. 이때 메모리는 가능한 한 충분히 압축된다. 소프트웨어 "부팅"시에 데이터가 메모리에 기록되는 경우, 메모리 제어기는 데이터 블록들을 압축해제하고 새로운 데이터에 맞는 섹터들을 할당할 뿐만 아니라, 관련된 T 비트들을 세팅할 것이다. 섹터 사용 카운트가 EMT를 초과하여 올라갈 때까지, 어떤 데이터 블록도 압축되지 않는다. 카운트가 EMT 미만인 경우, CMM은 확장가능한 압축 데이터를 위하여 STT를 스캔할 것이고, 어떤 것도 검출되지 않더라도 T 비트들은 리셋될 것이다. 섹터 사용 카운트가 CMT를 초과하여 올라가는 경우, CMM은 데이터 블록을 위하여 STT를 스캔하고 비압축 데이터를 읽으며, 압축하고, 로우 또는 닐 이상의 다른 DOC를 가지고 T가 아닌 데이터 블록들을 위하여 압축 데이터를 복원하고, 모든 케이스들에서 계산된 DOC를 반영하고 T 비트를 리셋하도록 STT 엔트리를 업데이트할 것이다. 데이터 재압축은 섹터들을 제한으로부터 자유롭게하고, 섹터 사용 카운트를 감소시킨다. 카운트가 CMT 미만으로 떨어지는 경우, CMM은 정지한다. 시간이 흐르면, 이 프로세스는 비압축 데이터의 최대 양을 이용가능한 메모리에 유지하고, 가장 높게 압축가능하고 가장 적게 참조되며 압축되는 모두 0인 데이터 블록들로 끝나는 경향이 있다.
도 4를 참조하면, 메모리 내의 비압축 데이터의 양을 최대화하고 특히 모두 0인 데이터 블록들을 취급하기 위하여 특별한 대비책들(provisions)을 가진 압축 메인 메모리에 액세스하는 방법을 위한 상태도가 도시되어 있다. 처음에 메모리 제어기는 메모리를 액세스하는 요청이 확인될 때까지 유휴 상태(401)에서 유지한다. 그 시간에, 요청 상태(주소, 읽기/기록, 크기, 모두 0 지시)는 요청 버퍼에서 포착되고 요청 단계가 승인된다. 그 후 요청 주소로부터 색인된 직접 매핑 STT 엔트리는 메모리로부터 읽히고 단계 403에서 디코딩된다.
단계 404로부터 메모리 읽기 액세스 요청 판정시, 모두 0인 데이터 블록들은 단계 405에서 검출되고, 단계 410에서 요청에 대한 즉각적인 데이터 응답 후에 완성된다. 단계 406에서 검출된 스페셜 케이스 데이터 블록들은 단계 410에서 데이터 요청에 대한 데이터 응답이 나오기 이전에 먼저 단계 409에서 압축해제되어야 하고, 본 발명은 병렬적으로 비압축 데이터를 단계 412에서 메모리에 다시 저장한다. 모든 다른 데이터 케이스들은 단계 404로부터 단계 405 및 406을 통과하여 단계 407까지 진행하고, 거기에서 데이터는 STT 엔트리에 의하여 지시된 메모리 섹터들로부터 읽혀진다. 단계 408에서 압축 데이터임을 STT 엔트리가 나타내는 경우, 응답(410) 이전에 데이터가 압축해제되고, 단계 412에서 비압축으로 다시 저장된다. 그렇지 않고, 데이터가 단계 408에서 이미 비압축인 경우, 데이터 응답은 단계 410에서 즉시 수행된다.
단계 404로부터 메모리 기록 액세스 요청 판정 시에, 데이터 블록이 단계 413에서 모두 0인 것으로 판단되면, 데이터 블록은 특별하게 인코딩된 STT 엔트리(412)로 저장된다. 또한, 0이 아닌 데이터 블록들은 충분한 스토리지가 이용가능한 경우(섹터 사용 카운트 < EMT 레지스터 ; 414) 메모리에 직접 저장되고, 그렇지 않은 경우 데이터를 저장하기 이전에 단계 415에서 데이터가 먼저 압축된다.
도 5를 참조하면, 최대 비압축 데이터 양을 가지면서 전체 스토리지 이용을 미리 설정된 범위 내에서 유지할 목적으로, 압축 메인 메모리 내에서 데이터 압축을 통제하는 방법을 위한 압축 메모리 관리자(CMM) 상태도가 도시되어 있다. CMM은 가장 최근 사용된 상태, 압축률(DOC)에 의존하여 메인 메모리 내에서 데이터 블록들을 택일적으로 압축 또는 확장함으로써 메인 메모리의 이용을 통제한다. CMM은 메모리의 전 STT 범위 상에서 순차적으로 STT 엔트리들의 각 블록을 읽고 기록한다. CMM은 먼저 버퍼를 비우고 엔트리들의 다음 블록을 읽는다. STT 버퍼에 보유된 STT 엔트리들의 범위에 대한 액세스는 직접적으로 STT 메모리의 STT 엔트리들을 참조하는 대신 버퍼로부터 서비스된다. CMM은 버퍼가 메모리에 다시 기록되기 이전에 순차적으로 버퍼의 STT 엔트리 상에서 동작한다. 최초, 및 프로그램 가능한 인에이블 비트에 의하여 동작금지된 경우에 CMM은 유휴 상태(501)에 있다. 그러나, 활성화된 경우, CMM은 할당 메모리 섹터 카운트 또는 섹터 사용 카운터가 확장 메모리 임계치(EMT) (데이터 확장), 압축 메모리 임계치(CMT) (데이터 압축), 또는 우선순위 압축 메모리 임계치(PCMT) (데이터 우선순위 압축) 레지스터에 의하여 정의되는 범위를 벗어나는 경우, 조건들(502)에 응답한다. 버퍼 포인터가 전진된(advanced) 경우(503), 및 단계 504에서 버퍼가 비거나 버퍼 포인터가 제1 엔트리에 랩핑한 경우 전체 버퍼가 메모리에 다시 기록되고, 단계 505에서 STT 엔트리들의 다음 블록은 메모리로부터 읽혀서 버퍼를 채운다. 그렇지 않고, 버퍼 포인터가 단계 504에서 유효 STT 엔트리를 선택하는 경우, CMM은 가장 최근 읽혀진(MRR) 버퍼에서 발견되는 STT 엔트리들을 건너뛰고(단계 506), 단계 515에서 터치(T) 비트는 여전히 리셋되며 CMM 제어는 유휴 상태(501)로 다시 돌아간다. 확장 또는 압축의 환경에 있어(단계 508), CMM은 단계 506에서 건너뛰지 않은 엔트리들을 평가한다.
이미 압축된 (또는 저 압축된) 데이터의 압축은 불필요하다. 데이터 블록이 최근 참조되었고(T 세트) 메모리가 우선순위로 압축되지 않는 경우, CMM은 선택된 데이터 블록의 압축을 건너뛰고(단계 509), 제어가 유휴 상태(501)로 되돌아가기 이전에 T 비트를 리셋한다. 단계 509에서 그렇지 않다면, 데이터는 압축될 것이지만, 단계 510에서 STT 엔트리 내의 특정 위치의 메모리에서 데이터를 먼저 읽어야 한다. 단계 511에서 모두 0을 포함하는 것으로 검출된 데이터 블록들은 압축을 건너뛴다. 그렇지 않으면 데이터 블록들은 압축되고(단계 512), STT 엔트리로 완전히 압축된 것들(단계 513)은 STT 엔트리 DOC 업데이트, T 비트 및 "빈 메모리" 풀에 해제되는 데이터 블록 메모리로 끝난다(단계 515). 유리하게 압축가능하지 않은 데이터 블록들(단계 513)은 메모리에 변화되지 않은 체로 남고 단지 DOC 업데이트 및 T 비트 리셋을 수용한다(단계 515). 단계 513에서 그렇지 않다면, 압축 데이터는 메인 메모리(514)에 저장되고, 그 후에 STT 엔트리 DOC가 업데이트되고 T 비트가 리셋되며 새로운 압축 데이터 위치가 업데이트되고 데이터 블록 메모리가 "빈 메모리" 풀(515)에 해제된다. 그 후에, 제어는 유휴 상태(501)로 되돌아간다.
이미 비압축 데이터 또는 압축된 모두 0인 데이터를 확장하는 것은 불필요하고(단계 516), CMM 제어가 유휴 상태(501)로 돌아가기 이전에 단계 515에서 다시 T 비트만이 리셋된다. 단계 516에서 그렇지 않다면, 데이터는 단계 519에서 압축해제될 것이다. 그러므로, 압축 데이터가 단계 519에서 압축해제될 수 있기 이전에, DOC=스페셜인 경우에(단계 517) 압축 데이터는 STT 엔트리 자체로부터 얻어지거나 또는 STT 엔트리에 의하여 지시되는 위치들의 메인 메모리로부터 읽혀진다(단계 518). CMM 제어가 유휴 상태(501)로 돌아가기 이전에, 비압축 데이터는 단계(514)에서 메인 메모리에 다시 저장되고, STT 엔트리는 비압축 데이터의 새로운 위치들로 업데이트되며, T는 리셋된다.
본 실시예는 캐싱 구조없이 최저 비용에서의 실행을 나타낸다. 그러나, 본 발명은 더 높은 성능을 가져오는 종래의 독립 캐시와 함께 사용할 수 있다. 상기 실시예는 임계치 조건들(502)이 참인 경우에만 CMM이 기능하는 것을 제안하지만, 또한 CMM은 STT 메모리를 "소거"하기 위한 주기적 간격에서 기능할 수 있으므로, DRAM에 축적될 수 있는 "경미한" 에러들을 검출 및 제거한다. 바람직한 실시예는 STT 엔트리에서 분리된 "압축" 플래그를 기술하지만, 이 상태는 추가적인 압축률 속성들에 인코딩 공간을 제공하는 압축률(DOC) 태그로 합쳐질 수 있다.
특히 바람직한 실시예는 특별한 "제로" 데이터 블록 검출기 및 그 케이스들을 위하여 압축 및 비압축 장치를 우회하는 방법을 요구하지만, 당업자들은 그 검출기가 데이터 플로우 경로에서 반복하는 고정 길이 패턴을 검출하도록 쉽게 향상될 수 있다는 것을 인식할 것이다. "제로" 케이스는 컴퓨터 시스템에서 가장 우세한 케이스이지만, 검출기가 미리 확정된 고정 길이의 반복하는 패턴을 검출하도록 설계된 경우 작은 기능 증대가 달성될 수 있다는 것이 인식된다.
본 발명을 사용하는 압축 메인 메모리 시스템들은, 메모리 압축에 의하여 제공된 장점들을 여전히 보유하면서, 전체적인 낮은 메모리 읽기 지연(더 높은 성능)로 이익을 얻는다. 본 발명은 프로세서의 스토리지 요구들에 대한 전체적인 메모리 압축률을 균형잡는 자발적인 수단을 제공하여, 데이터 및 프로그램 코드의 저장을 위하여 이용가능한 메모리가 최대로 이용된다. 메모리 압축을 사용하는 어떤 시스템도 본 발명으로부터 성능 이득을 얻을 수 있다. 그 시스템들은 네트워크 또는 IO 어댑터 캐쉬들, 디스크 스토리지 서브-시스템 캐시들, 프로세서 메인 메모리 시스템들을 포함하고, 거기에 제한되지는 않는다. 다른 시스템들은 하드웨어에서 "0"으로 채워진 데이터 블록들을 검출 및 처리하는데 요구되는 수단들로 이익을 얻을 수 있다. 특히, 데이터 블록들을 전달하는데 필요한 애플리케이션들은 이 케이스들을 검출하고 "제로" 데이터 블록을 나타내는 코드를 전달함으로써 이익을 얻을 수 있고, 따라서 다른 전달을 위하여 통신 채널 대역폭을 제한으로부터 자유롭게 할 수 있다.
본 발명은 바람직한 실시예들로 기술되었지만, 당업자들은 본 발명에 첨부된 청구항들의 사상 및 범위 내에서 변형되어 실시하는 것이 가능함을 인식할 것이다.
Claims (27)
- 압축 데이터 블록들 및 비압축 데이터 블록들을 포함하는 데이터 블록들 섹터들을 가지는 메모리;상기 메모리에 동작적으로 접속되고, 상기 메모리의 사용된 메모리 섹터 카운트를 유지하도록 적합화된 섹터 카운터;상기 메모리에 동작적으로 접속되는 압축 메모리 관리자;상기 압축 메모리 관리자에 동작적으로 접속되고, 압축 메모리 임계치를 포함하는 압축 메모리 임계치 레지스터; 및상기 압축 메모리 관리자에 동작적으로 접속되고, 확장 메모리 임계치를 포함하는 확장 메모리 임계치 레지스터; 를 포함하고,상기 사용된 메모리 섹터 카운트가 상기 압축 메모리 임계치를 초과하는 경우, 상기 압축 메모리 관리자는 상기 메모리에서 데이터 블록들을 압축하도록 적합화되고,상기 사용된 메모리 섹터 카운트가 상기 확장 메모리 임계치 미만인 경우, 상기 압축 메모리 관리자는 상기 데이터 블록들을 압축해제하도록 적합화되는 것을 특징으로 하는 컴퓨터 시스템.
- 제1항에 있어서,상기 메모리에 동작적으로 접속되는 메모리 제어기를 더 포함하고,상기 메모리 제어기가 메모리 액세스 요청들을 수행하지 않는 경우에만, 상기 압축 및 상기 압축해제는 상기 압축 메모리 관리자에 의하여 수행되는 것을 특징으로 하는 컴퓨터 시스템.
- 제2항에 있어서,상기 압축 메모리 관리자에 동작적으로 접속되고 우선순위 압축 메모리 임계치를 포함하는 우선순위 압축 메모리 임계치 레지스터를 더 포함하며,상기 메모리 제어기의 메모리 액세스 요청 활동에 관계없이, 상기 사용된 메모리 섹터 카운트가 상기 우선순위 압축 메모리 임계치를 초과하는 경우, 상기 압축 메모리 관리자는 상기 메모리의 상기 데이터 블록들을 압축하도록 적합화된 것을 특징으로 하는 컴퓨터 시스템.
- 제1항에 있어서,상기 메모리에 동작적으로 접속되고 상기 데이터 블록들의 압축 속성들을 포함하는 섹터 변환 테이블을 더 포함하는 것을 특징으로 하는 컴퓨터 시스템.
- 제4항에 있어서,상기 압축 속성들은 데이터 블록이 모두 0이라는 것을 나타내는 제로 속성을 포함하고,상기 압축 메모리 관리자는 상기 메모리에 제로 엔트리로서 상기 제로 속성을 가지는 데이터 블록들을 저장하도록 적합화되며, 상기 제로 엔트리는 메모리 섹터들의 사용을 회피하는 것을 특징으로 하는 컴퓨터 시스템.
- 제4항에 있어서,상기 압축 속성들은 압축불가능 속성, 비압축 속성, 미지의 압축률 속성을 포함하는 것을 특징으로 하는 컴퓨터 시스템.
- 제1항에 있어서,상기 압축 메모리 관리자는 저 압축률 속성을 가지는 데이터 블록들을 압축하기 이전에 고 압축률 속성을 가지는 데이터 블록들을 압축하도록 적합화된 것을 특징으로 하는 컴퓨터 시스템.
- 압축 데이터 블록들과 비압축 데이터 블록들을 포함하는 데이터 블록들 섹터를 가지는 메모리;상기 메모리에 동작적으로 접속되고 상기 메모리의 사용된 메모리 섹터 카운트를 유지하도록 적합화된 섹터 카운트;상기 메모리에 동작적으로 접속된 압축 메모리 관리자;상기 압축 메모리 관리자에 동작적으로 접속되고 압축 메모리 임계치를 포함하는 압축 메모리 임계치 레지스터;상기 데이터 블록이 마지막으로 액세스된 때를 나타내는 터치 비트를 포함하고, 상기 메모리에 동작적으로 접속된 섹터 변환 테이블; 및확장 메모리 임계치를 포함하고 상기 압축 메모리 관리자에 동작적으로 접속된 확장 메모리 임계치 레지스터; 를 포함하고,상기 메모리 섹터 카운트가 상기 압축 메모리 임계치를 초과하는 경우, 상기 압축 메모리 관리자는 상기 메모리에서 데이터 블록들을 압축하도록 적합화되고,상기 터치 비트에 기초하여, 보다 최근에 액세스된 데이터 블록들 이전에 보다 덜 최근에 액세스된 데이터 블록들이 압축되며, 또한상기 사용된 메모리 섹터 카운트가 상기 확장 메모리 임계치 미만인 경우 상기 압축 메모리 관리자는 상기 데이터 블록들을 압축해제하도록 적합화되는 것을 특징으로 하는 컴퓨터 시스템.
- 제8항에 있어서,상기 메모리에 동작적으로 접속되는 메모리 제어기를 더 포함하고, 상기 메모리 제어기가 메모리 액세스 요청들을 수행하지 않는 경우에만 상기 압축 및 상기 압축해제가 상기 압축 메모리 관리자에 의해 수행되는 것을 특징으로 하는 컴퓨터 시스템.
- 제9항에 있어서,상기 압축 메모리 관리자에 동작적으로 접속되고 우선순위 압축 메모리 임계치를 포함하는 우선순위 압축 메모리 임계치 레지스터를 더 포함하고,상기 메모리 제어기의 메모리 액세스 요청 활동에 관계없이, 상기 사용된 메모리 섹터 카운트가 상기 우선순위 압축 메모리 임계치를 초과하는 경우, 상기 압축 메모리 관리자는 상기 메모리의 상기 데이터 블록들을 압축하도록 적합화되는 것을 특징으로 하는 컴퓨터 시스템.
- 제8항에 있어서,섹터 변환 테이블은 데이터 블록이 모두 0이라는 것을 나타내는 제로 속성을 포함하는 상기 데이터 블록들의 압축 속성들을 포함하고,상기 압축 메모리 관리자는 상기 메모리에 제로 엔트리로서 제로 속성을 가지는 데이터 블록들을 저장하도록 적합화되며, 상기 제로 엔트리는 메모리 섹터들의 사용을 회피하는 것을 특징으로 하는 컴퓨터 시스템.
- 제8항에 있어서,상기 압축 메모리 관리자는 저 압축률 속성을 가지는 데이터 블록들을 압축하기 이전에 고 압축률 속성을 가지는 데이터 블록들을 압축하도록 적합화된 것을 특징으로 하는 컴퓨터 시스템.
- 제8항에 있어서,섹터 변환 테이블이 압축불가능 속성, 비압축 속성을 포함하는 상기 데이터 블록들의 압축 속성들을 포함하는 것을 특징으로 하는 컴퓨터 시스템.
- 컴퓨터 시스템에서 섹터화된 압축 메모리를 이용하는 방법으로서,상기 메모리의 사용된 메모리 섹터 카운트를 모니터하는 단계;상기 사용된 메모리 섹터 카운트가 압축 메모리 임계치를 초과하는 경우 상기 메모리에서 데이터 블록들을 압축하는 단계: 및상기 사용된 메모리 섹터 카운트가 확장 메모리 임계치 미만인 경우 상기 데이터 블록들을 압축해제하는 단계를 포함하는 것을 특징으로 하는 섹터화된 압축 메모리 이용 방법.
- 제14항에 있어서,상기 컴퓨터 시스템에서 압축 메모리 관리자가 메모리 액세스 요청들을 수행하지 않는 경우 상기 압축 및 상기 압축해제가 수행되는 것을 특징으로 하는 섹터화된 압축 메모리 이용 방법.
- 제15항에 있어서,상기 압축 메모리 관리자의 메모리 액세스 요청 활동에 관계없이, 상기 사용된 메모리 섹터 카운트가 우선순위 압축 메모리 임계치 미만인 경우 상기 메모리에서 상기 데이트 블록들을 압축하는 것을 더 포함하는 것을 특징으로 하는 섹터화된 압축 메모리 이용 방법.
- 제14항에 있어서,상기 메모리에서 제로 엔트리로서 모두 0을 가지는 데이터 블록들을 항상 저장하는 것을 더 포함하고, 상기 제로 엔트리는 메모리 섹터들의 사용을 회피하는 것을 특징으로 하는 섹터화된 압축 메모리 이용 방법.
- 제14항에 있어서,상기 압축은 저 압축률을 가지는 데이터 블록들을 압축하기 이전에 고 압축률을 가지는 데이터 블록들을 압축하는 것을 더 포함하는 것을 특징으로 하는 섹터화된 압축 메모리 이용 방법.
- 제14항에 있어서,상기 압축해제는 비압축 데이터 블록들의 압축해제를 회피하는 것을 특징으로 하는 섹터화된 압축 메모리 이용 방법.
- 제14항에 있어서,상기 압축은 상기 컴퓨터 시스템의 캐시에 보유된 데이터 블록들의 압축을 회피하는 것을 특징으로 하는 섹터화된 압축 메모리 이용 방법.
- 컴퓨터 시스템에서 섹터화된 압축 메모리를 이용하는 방법으로서,상기 메모리의 사용된 메모리 섹터 카운트를 모니터하는 단계;상기 사용된 메모리 섹터 카운트가 압축 메모리 임계치를 초과하는 경우 상기 메모리에서 데이터 블록들을 압축하는 단계: 및상기 사용된 메모리 섹터 카운트가 확장 메모리 임계치 미만인 경우 상기 데이터 블록들을 압축해제하는 단계,상기 압축은 보다 최근에 액세스된 데이터 블록들을 압축하기 이전에 보다 덜 최근에 액세스된 데이터 블록들을 압축하는 것을 포함하는 것을 특징으로 하는 섹터화된 압축 메모리 이용 방법.
- 제21항에 있어서,상기 컴퓨터 시스템의 압축 메모리 관리자가 메모리 액세스 요청들을 수행하지 않는 경우 상기 압축 및 압축해제가 수행되는 것을 특징으로 하는 섹터화된 압축 메모리 이용 방법.
- 제22항에 있어서,상기 압축 메모리 관리자의 메모리 액세스 요청 활동에 관계없이, 상기 사용된 메모리 섹터 카운트가 우선순위 압축 메모리 임계치 미만인 경우 상기 메모리에서 상기 데이터 블록들의 압축을 포함하는 것을 특징으로 하는 섹터화된 압축 메모리 이용 방법.
- 제21항에 있어서,상기 메모리에서 제로 엔트리로서 모두 0을 가지는 데이터 블록들을 항상 저장하는 것을 더 포함하고, 상기 제로 엔트리는 메모리 섹터들의 사용을 회피하는 것을 특징으로 하는 섹터화된 압축 메모리 이용 방법.
- 제21항에 있어서,상기 압축은 저 압축률을 가지는 데이터 블록들을 압축하기 이전에 고 압축률을 가지는 데이터 블록들을 압축하는 것을 더 포함하는 것을 특징으로 하는 섹터화된 압축 메모리 이용 방법.
- 제21항에 있어서,상기 압축해제는 비압축 데이터 블록들의 압축해제를 회피하는 것을 특징으로 하는 섹터화된 압축 메모리 이용 방법.
- 제21항에 있어서,상기 압축은 상기 컴퓨터 시스템의 캐시에 보유된 데이터 블록들의 압축을 회피하는 것을 특징으로 하는 섹터화된 압축 메모리 이용 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/213,840 | 2002-08-06 | ||
US10/213,840 US6775751B2 (en) | 2002-08-06 | 2002-08-06 | System and method for using a compressed main memory based on degree of compressibility |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20050027270A true KR20050027270A (ko) | 2005-03-18 |
KR100745532B1 KR100745532B1 (ko) | 2007-08-03 |
Family
ID=31494539
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020057001784A KR100745532B1 (ko) | 2002-08-06 | 2003-03-03 | 압축률에 기반한 압축 메인 메모리 사용을 위한 시스템 및방법 |
Country Status (7)
Country | Link |
---|---|
US (1) | US6775751B2 (ko) |
EP (1) | EP1546886A4 (ko) |
JP (1) | JP4051375B2 (ko) |
KR (1) | KR100745532B1 (ko) |
CN (1) | CN1329845C (ko) |
AU (1) | AU2003230590A1 (ko) |
WO (1) | WO2004017208A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101441228B1 (ko) * | 2010-06-29 | 2014-09-17 | 인텔 코오퍼레이션 | 고체-상태 드라이브의 성능 및/또는 신뢰성을 개선하는 방법 및 시스템 |
Families Citing this family (110)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7589789B2 (en) * | 1999-05-08 | 2009-09-15 | Lg Electronics Inc. | Video converting device and method for digital TV |
KR100777271B1 (ko) * | 2001-02-28 | 2007-11-20 | 엘지전자 주식회사 | 디지털 시스템의 메모리 관리 방법 |
US7761497B1 (en) * | 2001-07-13 | 2010-07-20 | Vignette Software, LLC | Storage medium having a manageable file directory structure |
US7174420B2 (en) * | 2002-10-22 | 2007-02-06 | Microsoft Corporation | Transaction-safe FAT file system |
US7363540B2 (en) | 2002-10-22 | 2008-04-22 | Microsoft Corporation | Transaction-safe FAT file system improvements |
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 |
US7636810B2 (en) * | 2003-11-26 | 2009-12-22 | Intel Corporation | Method, system, and apparatus for memory compression with flexible in-memory cache |
US20050132161A1 (en) * | 2003-12-15 | 2005-06-16 | Nokia Corporation | Creation of virtual memory space in a memory |
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 |
US7383399B2 (en) * | 2004-06-30 | 2008-06-03 | Intel Corporation | Method and apparatus for memory compression |
US7254689B1 (en) * | 2004-07-15 | 2007-08-07 | Google Inc. | Decompression of block-sorted data |
US7243191B2 (en) * | 2004-08-31 | 2007-07-10 | Intel Corporation | Compressing data in a cache memory |
US20060044934A1 (en) * | 2004-09-02 | 2006-03-02 | Micron Technology, Inc. | Cluster based non-volatile memory translation layer |
US7702875B1 (en) * | 2004-11-18 | 2010-04-20 | Sun Microsystems, Inc. | System and method for memory compression |
US9639554B2 (en) | 2004-12-17 | 2017-05-02 | Microsoft Technology Licensing, Llc | Extensible file system |
US8321439B2 (en) | 2004-12-17 | 2012-11-27 | Microsoft Corporation | Quick filename lookup using name hash |
US8606830B2 (en) * | 2004-12-17 | 2013-12-10 | Microsoft Corporation | Contiguous file allocation in an extensible file system |
US7873596B2 (en) | 2006-05-23 | 2011-01-18 | Microsoft Corporation | Extending cluster allocations in an extensible file system |
US20060200481A1 (en) * | 2005-03-04 | 2006-09-07 | Khalid Goyan | Method and system for data optimization and protection in DSP firmware |
JP4394047B2 (ja) * | 2005-08-05 | 2010-01-06 | 信越ポリマー株式会社 | キーフレームおよび押釦スイッチ用カバー部材 |
US20070088920A1 (en) * | 2005-10-19 | 2007-04-19 | Philip Garcia | Managing data for memory, a data store, and a storage device |
WO2008007419A1 (fr) * | 2006-07-10 | 2008-01-17 | Fujitsu Microelectronics Limited | Contrôleur de mémoire |
US7904619B2 (en) | 2006-11-24 | 2011-03-08 | Sandforce, Inc. | System, method, and computer program product for reducing memory write operations using difference information |
US7747813B2 (en) * | 2006-11-24 | 2010-06-29 | Sandforce, Inc. | Multi-memory device system and method for managing a lifetime thereof |
US7809900B2 (en) * | 2006-11-24 | 2010-10-05 | Sandforce, Inc. | System, method, and computer program product for delaying an operation that reduces a lifetime of memory |
US7904672B2 (en) | 2006-12-08 | 2011-03-08 | Sandforce, Inc. | System and method for providing data redundancy after reducing memory writes |
US7613738B2 (en) | 2007-01-16 | 2009-11-03 | Microsoft Corporation | FAT directory structure for use in transaction safe file system |
US7747664B2 (en) * | 2007-01-16 | 2010-06-29 | Microsoft Corporation | Storage system format for transaction safe file system |
US8874518B2 (en) * | 2007-06-06 | 2014-10-28 | International Business Machines Corporation | System, method and program product for backing up data |
US8429352B2 (en) * | 2007-06-08 | 2013-04-23 | Sandisk Technologies Inc. | Method and system for memory block flushing |
US7987161B2 (en) | 2007-08-23 | 2011-07-26 | Thomson Reuters (Markets) Llc | System and method for data compression using compression hardware |
US7895242B2 (en) * | 2007-10-31 | 2011-02-22 | Microsoft Corporation | Compressed storage management |
US7903486B2 (en) | 2007-11-19 | 2011-03-08 | Sandforce, Inc. | System, method, and computer program product for increasing a lifetime of a plurality of blocks of memory |
US7849275B2 (en) | 2007-11-19 | 2010-12-07 | Sandforce, Inc. | System, method and a computer program product for writing data to different storage devices based on write frequency |
US9183133B2 (en) * | 2007-11-28 | 2015-11-10 | Seagate Technology Llc | System, method, and computer program product for increasing spare space in memory to extend a lifetime of the memory |
US7984240B2 (en) * | 2008-03-04 | 2011-07-19 | International Business Machines Corporation | Memory compression implementation in a system with directly attached processor memory |
US8037251B2 (en) * | 2008-03-04 | 2011-10-11 | International Business Machines Corporation | Memory compression implementation using non-volatile memory in a multi-node server system with directly attached processor memory |
US7966455B2 (en) * | 2008-03-04 | 2011-06-21 | International Business Machines Corporation | Memory compression implementation in a multi-node server system with directly attached processor memory |
US7930483B2 (en) * | 2008-03-04 | 2011-04-19 | International Business Machines Corporation | Associativity implementation in a system with directly attached processor memory |
US20090271562A1 (en) * | 2008-04-25 | 2009-10-29 | Sinclair Alan W | Method and system for storage address re-mapping for a multi-bank memory device |
US8108442B2 (en) * | 2008-07-22 | 2012-01-31 | Computer Associates Think, Inc. | System for compression and storage of data |
JP4461187B1 (ja) * | 2008-12-24 | 2010-05-12 | 株式会社東芝 | 不揮発性半導体メモリドライブ装置、情報処理装置および不揮発性半導体メモリドライブ装置における記憶領域の管理方法 |
US8261174B2 (en) | 2009-01-13 | 2012-09-04 | International Business Machines Corporation | Protecting and migrating memory lines |
US8560918B1 (en) | 2009-04-21 | 2013-10-15 | Marvell International Ltd. | Method and apparatus for dynamically selecting an error correction code to be applied to data in a communication system |
US8516166B2 (en) * | 2009-07-20 | 2013-08-20 | Lsi Corporation | System, method, and computer program product for reducing a rate of data transfer to at least a portion of memory |
US8473669B2 (en) * | 2009-12-07 | 2013-06-25 | Sandisk Technologies Inc. | Method and system for concurrent background and foreground operations in a non-volatile memory array |
US8452911B2 (en) | 2010-09-30 | 2013-05-28 | Sandisk Technologies Inc. | Synchronized maintenance operations in a multi-bank storage system |
US8892809B2 (en) * | 2010-10-25 | 2014-11-18 | Marvell World Trade Ltd. | Data compression and encoding in a memory system |
US8738962B2 (en) | 2010-11-17 | 2014-05-27 | International Business Machines Corporation | Memory mirroring with memory compression |
US8495267B2 (en) | 2010-11-24 | 2013-07-23 | International Business Machines Corporation | Managing shared computer memory using multiple interrupts |
US8452900B2 (en) * | 2010-12-30 | 2013-05-28 | Emc Corporation | Dynamic compression of an I/O data block |
US8762627B2 (en) | 2011-12-21 | 2014-06-24 | Sandisk Technologies Inc. | Memory logical defragmentation during garbage collection |
US8909608B2 (en) * | 2012-06-14 | 2014-12-09 | International Business Machines Corporation | Reducing decompression latency in a compression storage system |
US9053018B2 (en) * | 2012-06-29 | 2015-06-09 | International Business Machines Corporation | Compressed memory page selection based on a population count of a dataset |
KR20140035082A (ko) * | 2012-09-13 | 2014-03-21 | 삼성전자주식회사 | 메모리 관리방법 |
KR102081980B1 (ko) | 2012-10-08 | 2020-02-27 | 삼성전자 주식회사 | 메모리 시스템에서의 라이트 동작 또는 리드 동작 수행 방법 |
WO2014076743A1 (en) * | 2012-11-19 | 2014-05-22 | Hitachi, Ltd. | Storage system |
US10565099B2 (en) | 2012-12-28 | 2020-02-18 | Apple Inc. | Methods and apparatus for compressed and compacted virtual memory |
US9348746B2 (en) | 2012-12-31 | 2016-05-24 | Sandisk Technologies | Method and system for managing block reclaim operations in a multi-layer memory |
US9465731B2 (en) | 2012-12-31 | 2016-10-11 | Sandisk Technologies Llc | Multi-layer non-volatile memory system having multiple partitions in a layer |
US8873284B2 (en) | 2012-12-31 | 2014-10-28 | Sandisk Technologies Inc. | Method and system for program scheduling in a multi-layer memory |
US9223693B2 (en) | 2012-12-31 | 2015-12-29 | Sandisk Technologies Inc. | Memory system having an unequal number of memory die on different control channels |
US9336133B2 (en) | 2012-12-31 | 2016-05-10 | Sandisk Technologies Inc. | Method and system for managing program cycles including maintenance programming operations in a multi-layer memory |
US9734050B2 (en) | 2012-12-31 | 2017-08-15 | Sandisk Technologies Llc | Method and system for managing background operations in a multi-layer memory |
US9734911B2 (en) | 2012-12-31 | 2017-08-15 | Sandisk Technologies Llc | Method and system for asynchronous die operations in a non-volatile memory |
KR101423867B1 (ko) * | 2013-01-30 | 2014-07-29 | 재단법인 다차원 스마트 아이티 융합시스템 연구단 | L2 이상의 레벨 캐쉬 캐시를 관리하는 장치 및 방법 |
US9852055B2 (en) * | 2013-02-25 | 2017-12-26 | International Business Machines Corporation | Multi-level memory compression |
KR102005227B1 (ko) | 2013-03-12 | 2019-07-30 | 삼성전자 주식회사 | 데이터 처리 시스템과 이의 동작 방법 |
US10102148B2 (en) | 2013-06-13 | 2018-10-16 | Microsoft Technology Licensing, Llc | Page-based compressed storage management |
US9477605B2 (en) | 2013-07-11 | 2016-10-25 | Advanced Micro Devices, Inc. | Memory hierarchy using row-based compression |
US11132300B2 (en) * | 2013-07-11 | 2021-09-28 | Advanced Micro Devices, Inc. | Memory hierarchy using page-based compression |
KR102114388B1 (ko) * | 2013-10-18 | 2020-06-05 | 삼성전자주식회사 | 전자 장치의 메모리 압축 방법 및 장치 |
US9491103B2 (en) * | 2014-02-28 | 2016-11-08 | Qualcomm Incorporated | Introducing uncompressed packets in compression flow based on flow control |
JP2015176245A (ja) * | 2014-03-13 | 2015-10-05 | 株式会社東芝 | 情報処理装置及びデータ構造 |
US9684625B2 (en) | 2014-03-21 | 2017-06-20 | Microsoft Technology Licensing, Llc | Asynchronously prefetching sharable memory pages |
US9778881B2 (en) * | 2014-06-27 | 2017-10-03 | EMC IP Holding Company LLC | Techniques for automatically freeing space in a log-structured storage system based on segment fragmentation |
JP2016057763A (ja) | 2014-09-08 | 2016-04-21 | 株式会社東芝 | キャッシュ装置、及びプロセッサ |
US9727479B1 (en) * | 2014-09-30 | 2017-08-08 | EMC IP Holding Company LLC | Compressing portions of a buffer cache using an LRU queue |
CN105630687B (zh) * | 2014-10-27 | 2019-01-08 | 群联电子股份有限公司 | 数据写入方法、存储器控制电路单元与存储器存储装置 |
US20160124684A1 (en) * | 2014-10-30 | 2016-05-05 | ScaleFlux | Method to realize object-oriented in-memory data storage and processing |
CN104571955A (zh) * | 2014-12-27 | 2015-04-29 | 华为技术有限公司 | 提高存储容量的方法和装置 |
US9632924B2 (en) | 2015-03-02 | 2017-04-25 | Microsoft Technology Licensing, Llc | Using memory compression to reduce memory commit charge |
US10037270B2 (en) | 2015-04-14 | 2018-07-31 | Microsoft Technology Licensing, Llc | Reducing memory commit charge when compressing memory |
US9766816B2 (en) * | 2015-09-25 | 2017-09-19 | Seagate Technology Llc | Compression sampling in tiered storage |
US20170109367A1 (en) * | 2015-10-16 | 2017-04-20 | International Business Machines Corporation | Early compression related processing with offline compression |
US10133490B2 (en) | 2015-10-30 | 2018-11-20 | Sandisk Technologies Llc | System and method for managing extended maintenance scheduling in a non-volatile memory |
US10042553B2 (en) | 2015-10-30 | 2018-08-07 | Sandisk Technologies Llc | Method and system for programming a multi-layer non-volatile memory having a single fold data path |
US9778855B2 (en) | 2015-10-30 | 2017-10-03 | Sandisk Technologies Llc | System and method for precision interleaving of data writes in a non-volatile memory |
US10120613B2 (en) | 2015-10-30 | 2018-11-06 | Sandisk Technologies Llc | System and method for rescheduling host and maintenance operations in a non-volatile memory |
US10140052B2 (en) | 2015-11-05 | 2018-11-27 | International Business Machines Corporation | Memory access in a data processing system utilizing copy and paste instructions |
US10241945B2 (en) | 2015-11-05 | 2019-03-26 | International Business Machines Corporation | Memory move supporting speculative acquisition of source and destination data granules including copy-type and paste-type instructions |
US10126952B2 (en) | 2015-11-05 | 2018-11-13 | International Business Machines Corporation | Memory move instruction sequence targeting a memory-mapped device |
US10152322B2 (en) | 2015-11-05 | 2018-12-11 | International Business Machines Corporation | Memory move instruction sequence including a stream of copy-type and paste-type instructions |
US10346164B2 (en) * | 2015-11-05 | 2019-07-09 | International Business Machines Corporation | Memory move instruction sequence targeting an accelerator switchboard |
US9990304B2 (en) * | 2015-11-13 | 2018-06-05 | Samsung Electronics Co., Ltd | Multimode storage management system |
US9996473B2 (en) | 2015-11-13 | 2018-06-12 | Samsung Electronics., Ltd | Selective underlying exposure storage mapping |
US9946642B2 (en) | 2015-11-13 | 2018-04-17 | Samsung Electronics Co., Ltd | Distributed multimode storage management |
US9940028B2 (en) | 2015-11-13 | 2018-04-10 | Samsung Electronics Co., Ltd | Multimode storage device |
US9823854B2 (en) * | 2016-03-18 | 2017-11-21 | Qualcomm Incorporated | Priority-based access of compressed memory lines in memory in a processor-based system |
US10191850B2 (en) | 2016-03-31 | 2019-01-29 | Qualcomm Incorporated | Providing memory bandwidth compression using multiple last-level cache (LLC) lines in a central processing unit (CPU)-based system |
US10176090B2 (en) * | 2016-09-15 | 2019-01-08 | Qualcomm Incorporated | Providing memory bandwidth compression using adaptive compression in central processing unit (CPU)-based systems |
US10387305B2 (en) * | 2016-12-23 | 2019-08-20 | Intel Corporation | Techniques for compression memory coloring |
US10417141B2 (en) * | 2017-05-22 | 2019-09-17 | Arm Limited | Method and apparatus for hardware management of multiple memory pools |
US11151155B2 (en) | 2017-07-18 | 2021-10-19 | Vmware, Inc. | Memory use in a distributed index and query system |
US10649967B2 (en) * | 2017-07-18 | 2020-05-12 | Vmware, Inc. | Memory object pool use in a distributed index and query system |
CN110765031B (zh) * | 2019-09-27 | 2022-08-12 | Oppo广东移动通信有限公司 | 数据存储方法、装置、移动终端及存储介质 |
US11977525B2 (en) * | 2021-03-04 | 2024-05-07 | EMC IP Holding Company LLC | Method to optimize ingest in dedupe systems by using compressibility hints |
CN114885359B (zh) * | 2022-06-09 | 2024-09-06 | 中国联合网络通信集团有限公司 | 时延性能评估方法、接入网设备及存储介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2108833A1 (en) * | 1992-10-22 | 1994-04-23 | Masanori Ishii | File compression processor |
US5710909A (en) * | 1996-01-23 | 1998-01-20 | International Business Machines Corporation | Data compression utilization method and apparatus for computer main store |
US6038571A (en) * | 1996-01-31 | 2000-03-14 | Kabushiki Kaisha Toshiba | Resource management method and apparatus for information processing system of multitasking facility |
US6000009A (en) * | 1997-05-06 | 1999-12-07 | International Business Machines Corporation | Method and apparatus for allocation of disk memory space for compressed data records |
US7024512B1 (en) * | 1998-02-10 | 2006-04-04 | International Business Machines Corporation | Compression store free-space management |
US6446145B1 (en) | 2000-01-06 | 2002-09-03 | International Business Machines Corporation | Computer memory compression abort and bypass mechanism when cache write back buffer is full |
US6549995B1 (en) | 2000-01-06 | 2003-04-15 | International Business Machines Corporation | Compressor system memory organization and method for low latency access to uncompressed memory regions |
US6519733B1 (en) | 2000-02-23 | 2003-02-11 | International Business Machines Corporation | Method and apparatus for high integrity hardware memory compression |
US6457104B1 (en) | 2000-03-20 | 2002-09-24 | International Business Machines Corporation | System and method for recycling stale memory content in compressed memory systems |
US6877081B2 (en) * | 2001-02-13 | 2005-04-05 | International Business Machines Corporation | System and method for managing memory compression transparent to an operating system |
-
2002
- 2002-08-06 US US10/213,840 patent/US6775751B2/en not_active Expired - Fee Related
-
2003
- 2003-03-03 JP JP2004529049A patent/JP4051375B2/ja not_active Expired - Fee Related
- 2003-03-03 AU AU2003230590A patent/AU2003230590A1/en not_active Abandoned
- 2003-03-03 CN CNB038173573A patent/CN1329845C/zh not_active Expired - Fee Related
- 2003-03-03 WO PCT/US2003/006554 patent/WO2004017208A1/en active Application Filing
- 2003-03-03 KR KR1020057001784A patent/KR100745532B1/ko not_active IP Right Cessation
- 2003-03-03 EP EP03723675A patent/EP1546886A4/en not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101441228B1 (ko) * | 2010-06-29 | 2014-09-17 | 인텔 코오퍼레이션 | 고체-상태 드라이브의 성능 및/또는 신뢰성을 개선하는 방법 및 시스템 |
US9317362B2 (en) | 2010-06-29 | 2016-04-19 | Intel Corporation | Method and system to improve the performance and/or reliability of a solid-state drive |
Also Published As
Publication number | Publication date |
---|---|
EP1546886A1 (en) | 2005-06-29 |
EP1546886A4 (en) | 2008-05-21 |
KR100745532B1 (ko) | 2007-08-03 |
JP4051375B2 (ja) | 2008-02-20 |
CN1672135A (zh) | 2005-09-21 |
US20040030847A1 (en) | 2004-02-12 |
CN1329845C (zh) | 2007-08-01 |
AU2003230590A1 (en) | 2004-03-03 |
WO2004017208A1 (en) | 2004-02-26 |
JP2005535051A (ja) | 2005-11-17 |
US6775751B2 (en) | 2004-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100745532B1 (ko) | 압축률에 기반한 압축 메인 메모리 사용을 위한 시스템 및방법 | |
US6549995B1 (en) | Compressor system memory organization and method for low latency access to uncompressed memory regions | |
US6446145B1 (en) | Computer memory compression abort and bypass mechanism when cache write back buffer is full | |
US7047382B2 (en) | System and method for managing compression and decompression and decompression of system memory in a computer system | |
US7162584B2 (en) | Mechanism to include hints within compressed data | |
US6968424B1 (en) | Method and system for transparent compressed memory paging in a computer system | |
US7143238B2 (en) | Mechanism to compress data in a cache | |
US6857047B2 (en) | Memory compression for computer systems | |
US6795897B2 (en) | Selective memory controller access path for directory caching | |
CN107066397B (zh) | 用于管理数据迁移的方法、系统和存储介质 | |
US6457104B1 (en) | System and method for recycling stale memory content in compressed memory systems | |
US10572378B2 (en) | Dynamic memory expansion by data compression | |
US20130124794A1 (en) | Logical to physical address mapping in storage systems comprising solid state memory devices | |
US6349375B1 (en) | Compression of data in read only storage and embedded systems | |
JP2000347935A (ja) | 圧縮メイン・メモリの仮想非圧縮キャッシュ | |
WO2007005829A2 (en) | Operating system-based memory compression for embedded systems | |
WO2008030672A2 (en) | Systems and methods for masking latency of memory reorganization work in a compressed memory system | |
EP3278229B1 (en) | Compressed pages having data and compression metadata | |
US6779100B1 (en) | Method and device for address translation for compressed instructions | |
US7162583B2 (en) | Mechanism to store reordered data with compression | |
US6353871B1 (en) | Directory cache for indirectly addressed main memory | |
WO1993000635A1 (en) | Data storage management systems | |
CN102792296B (zh) | 移动终端中请求页面调度方法、控制器以及移动终端 | |
US20050071566A1 (en) | Mechanism to increase data compression in a cache | |
US20230021108A1 (en) | File storage |
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: 20100428 Year of fee payment: 4 |
|
LAPS | Lapse due to unpaid annual fee |