KR20060009256A - 데이터 처리 장치 및 방법과, 컴퓨터 프로그램 제품 - Google Patents
데이터 처리 장치 및 방법과, 컴퓨터 프로그램 제품 Download PDFInfo
- Publication number
- KR20060009256A KR20060009256A KR1020057019597A KR20057019597A KR20060009256A KR 20060009256 A KR20060009256 A KR 20060009256A KR 1020057019597 A KR1020057019597 A KR 1020057019597A KR 20057019597 A KR20057019597 A KR 20057019597A KR 20060009256 A KR20060009256 A KR 20060009256A
- Authority
- KR
- South Korea
- Prior art keywords
- block
- address
- data
- memory
- blocks
- Prior art date
Links
Images
Classifications
-
- 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
-
- 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
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
-
- 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)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Image Processing (AREA)
Abstract
이미지와 같은 데이터는 각각이 각 데이터 어드레와 관련된 데이터 아이템(픽셀)으로 구성된다. 데이터를 나타내는 압축 블럭은 메모리 시스템에 저장된다. 각 블럭은 데이터의 어드레스의 서브 범위내의 데이터 어드레스와 관련된 압축된 데이터 아이템을 나타낸다. 각 블럭은 멀티 어드레스 이송을 위해 각자의 바람직한 시작 어드레스부터 시작한다. 각 블럭의 어드레스의 서브 범위는 바람직한 시작 어드레스들간의 어드레스 거리에 대응하는 길이를 가지며, 압축으로 인해 블럭들 사이의 특정 블럭에 의해 점유되지 않는 메모리 어드레스는 남겨둔다. 압축 해제기는 처리 소자와 메모리 시스템 사이에 결합된다. 압축 해제기는 처리 소자가 블럭에 대한 억세스를 동적으로 요구할 때, 메모리 시스템으로 부터의 블럭들중 요구된 블럭의 멀티 어드레스 메모리 이송을 시작하는데, 그 이송시에 이송되지 않은 블럭들중의 다음 블럭에 대한 바람직한 시작 어드레스까지의 블럭을 바로 뒤따른 메모리 어드레스는 남겨둔다. 이송된 데이터는 압축 해제되어 프로세서에 전달된다.
Description
본 발명은 메모리에 저장된 데이터에 대해 데이터 압축을 이용하는 데이터 처리 장치에 관한 것이다.
미국특허번호 6,173,381호에는 버스를 통해 접속된 프로세서와 시스템 메모리를 가진 데이터 처리 시스템이 개시되어 있다. 이미지 데이터와 같은 데이터는 시스템 메모리내에 압축된 형태 또는 비 압축 형태로 저장된다. 프로세서는 집적 메모리 제어기를 통해 시스템 메모리에 연결되며, 시스템 메모리에 데이터를 기록하거나 그로 부터 데이터를 독출할 때 데이터를 압축하거나 압축된 데이터를 압축 해제한다. 미국특허번호 6,173,381호에는, 메모리 장소를 차지하는데 있어서 압축된 형태로 데이터를 저장하는 것이 비 압축 형태의 동일 데이터에 대해 요구되는것 보다 덜 차지하기 때문에, 압축을 이용하여 메모리 점유 및 버스 대역폭을 감소시키는 방법이 개시되어 있다.
압축된 형태로 데이터를 저장하면, 그 데이터의 처리를 방해할 수 있는데, 그러한 방해는 그 처리가 데이터내의 다른 장소를 어드레싱할 필요가 있을때 발생한다. 압축, 특히 가변 길이 압축으로 인해, 비 압축 데이터에 있어서의 다른 아이템들간의 어드레스 거리는 압축된 데이터에서는 유지되지 못한다. 미국특허번호 6,173,381호에서는, 프로세서와 집적 메모리 제어기 사이의 캐쉬 메모리를 이용하여 비 압축 데이터를 캐쉬에 저장함으로서 상술한 문제를 해결한다. 따라서, 비 압축 데이터는, 비 압축 데이터의 가상 어드레스를 이용하는 프로세서에 의해 캐쉬 메모리내에서 어드레싱될 수 있다. 집적 메모리 제어기는, 캐쉬 페치(fetch) 또는 재기록 동안에, 압축 데이터가 적당한 시스템 메모리 어드레스에서 독출되고 그 어드레스에 기록되는 것을 보장해야 한다. 미국특허번호 6,173,381호는 압축된 데이터를 적절하게 어드레싱하는 방법을 개시하고 있지는 않지만, 아마도 프로세서에 의해 발생된 비 압축 데이터의 가상 어드레스가 압축 형태의 데이터의 물리적 어드레스로 변환되고, 데이터를 이들 물리적 어드레스에 기록하거나 그 어드레스로 부터 독출하는 것 같다. 가상 어드레스를 물리적 어드레스로 변환하는 것은 처리를 늦춘다.
오늘날의 많은 데이터 처리 시스템에서는 버스 이송(transfer)시에 데이터가 검색되는데, 버스 이송시에는, 예를 들어 64 또는 128 바이트까지의 다량의 어드레스 가능 워드를 가진 블럭이 각각의 단일 어드레스에 응답하여 메모리와 프로세서간에 이송될 수 있다. 그러한 이송은 특정 시작 어드레스(이하에서는 바람직한 시작 어드레스라고 지칭함), 예를 들어, 서로간에 동일 거리에 있는 128 바이트 블럭 경계에서의 어드레스(그 어드레스들 중 다수의 최하위 비트들은 0임)에서 부터 시 작해야 하며, 또는 그 이송이 바람직한 시작 어드레스가 아닌 어드레스에서 시작해야 하는 경우에는 적어도 추가적인 오버헤드(overhead)가 필요하게 된다. 이송 길이는 선택될 수 있다. 이것은 메모리 대역폭을 증가시킨다. 알려진 프로세서에서는, 이러한 워드 개수가 압축 파라메타와 관련이 없다.
우선적으로, 본 발명의 목적은, 데이터의 서로 다른 어드레스 가능 부분에 대해 억세스가 복잡하지 않으면서, 압축에 의해 데이터 억세스에 필요한 버스 대역폭이 감소되는 데이터 처리 장치 및 방법을 제공하는데 있다.
본 발명의 목적은, 데이터의 서로 다른 어드레스 가능 부분에 대한 억세스가 복잡하지 않으면서, 이미지 및/또는 오디오 데이터를 억세스하는데 필요한 버스 대역폭이 압축에 의해 감소되는 데이터 처리 장치 및 방법을 제공하는데 있다.
본 발명의 목적은 비 압축 데이터를 이용하는 프로세스용의 버스 대역폭이 동적으로 조정될 수 있는 데이터 처리 장치 및 방법을 제공하는데 있다.
본 발명에 따른 데이터 처리 장치는 청구항 제1항에 설명되어 있다. 그 장치는, 샘플링 순시(instant) tn와 관련된 시간 데이터 또는 관련 x,y 어드레스를 가진 이미지내의 픽셀과 같은 소정의 데이터 어드레스 범위내의 각 데이터 어드레스와 각각으로 관련된 데이터 아이템들을 처리한다. 압축 블럭들이 이용되는데, 그 압축 블럭의 각각은 데이터 어드레스들의 범위중 개별적인 서브 범위로 부터의 데이터 아이템을 나타낸다. 서브 범위 길이의 선택은, 그들이 멀티-어드레스 메모리 이송을 위한 바람직한 시작 메모리 어드레스 쌍들 간의 거리에 대응하도록 실행된다. 바람직하게, 각 서브 범위는 동일한 길이를 가진다. 압축 블럭은 메모리 시스템에 저장되는데, 각각은 바람직한 시작 메모리 어드레스에서 부터 시작하며, 그에 따라 다음 블럭의 시작 메모리 어드레스까지의 어드레스 거리는 블럭내의 데이터와 관련된 데이터 어드레스의 서브 범위의 길이에 대응하게 된다.
따라서, 블럭이 이송되고 나면 종료되는 멀티-어드레스 메모리 이송을 이용함으로서, 그 블럭들을 저장 및 검색하는 메모리 억세스 대역폭을 감소시킬 수 있다. 블럭들의 시작 어드레스들간의 거리가 비 압축 데이터에 대한 것과 동일하기 때문에, 예를 들어, 데이터 어드레스들의 상위 부분을 취득함으로써, 필요한 비압축 데이터 아이템의 데이터 어드레스로 부터 이송의 시작 어드레스가 직접 결정될 수 있다. 그 결과, 압축 블럭이 저장된 메모리 어드레스들의 범위는 실질적으로 비 압축 데이터 아이템을 위해 필요한 것과 동일하게 된다. 따라서, 점유된 메모리의 어드레스 범위가 감소되지는 않으며, 단지 대역폭 이용만이 감소된다.
처리 소자는 필터링과 같은 처리 동작을 이들 데이터 아이템에 적용한다. 전형적으로, 처리 소자는 (가능하다면 약간의 오프셋으로 정정된) 데이터 어드레스로 데이터 아이템을 어드레싱하지만, 예를 들어, 단지 다음 데이터 아이템이 필요함을 나타냄으로서 인접 데이터 어드레스를 가진 데이터-아이템을 호출함에 의해, 프로세서는 단지 암묵적으로 데이터 어드레스를 이용할 수도 있다. 바람직하게, 비 압축 블럭내의 모든 데이터 어드레스에 대한 비 압축 데이터는 그러한 검색을 위해 버퍼내에 저장되지만, 대안적으로, 그 블럭내의 어드레싱된 데이터만을 매번 압축 해제할 수도 있다. 메모리 시스템은, 예를 들어, 메모리 버스가 수반된 단일 반도체 메모리, 또는 어드레스에 응답하여 데이터를 공급하는데 협조하는 임의 조합된 메모리들이다.
압축 데이터의 블럭들을 압축 해제를 위해 검색하는 경우, 멀티-어드레스 메모리 이송 길이는 실제 블럭 크기에 의거하여 선택된다. 메모리 이송 동안, 압축 데이터 블럭으로 부터의 데이터가 이송되고 나서, 다음 블럭의 시작시의 데이터가 이송되기 전에 그 이송이 종료된다. 따라서, 압축 데이터의 블럭들은 최소 버스 대역폭으로 검색될 수 있으며, 압축 데이터의 다른 블럭들의 크기를 알지 못해도 어드레싱될 수 있다.
압축 어드레스의 서브 범위 길이는 압축 블럭내에 데이터와 함께 압축되며 연속적인 한쌍의 바람직한 시작 메모리 어드레스들간의 거리와 동일함이 바람직하다. 이에 따라 보다 효율적인 메모리 버스 이용이 가능해지고 메모리 억세스 대기 시간을 잠정적으로 감소시킨다. 그러나, 본 발명을 벗어나지 않고도, 서브 범위는 다수의 연속하는 바람직한 시작 메모리 어드레스들간의 거리들에 걸쳐 연장될 수 있다. 이에 따라, 보다 높은 압축비가 제공되고, 메모리 대역폭이 줄어들게 된다. 이 경우, 다수의 멀티-어드레스 메모리 이송은 하나의 블럭을 이송하는데 이용된다.
압축 데이터의 블럭들의 길이에 대한 정보는 그 블럭과 함께 저장됨이 바람직하다. 따라서, 이들 길이는 블럭이 이송될 때 추가적인 메모리 어드레싱 없이도 자동적으로 이용 가능하게 된다. 일 실시예에 있어서, 압축 데이터의 소정 블럭에 대한 길이 정보는 자체적으로 그 블럭과 함께 저장된다. 따라서, 블럭 그 자체내의 정보에 기초하여 이송을 종료하기 위한 신호가 생성될 수 있다. 다른 실시예에 있어서, 압축 데이터의 논리적으로 다음에 위치한 블럭에 대한 길이 정보는 압축 데이터의 블럭과 함께 저장된다(논리적으로 다음에 위치한 블럭이란 처리 소자에 의해 다음번에 억세스되는 블럭을 의미한 것으로, 예를 들어, 블럭들이 인접한 이미지 영역에 대한 이미지 데이터를 인코딩할 때 그들은 논리적으로 서로 인접한 것이다). 따라서, 소정 블럭이 어드레싱 되기 전에 그 블럭에 대한 이송 길이를 설정하기 위한 길이 정보가 이용 가능하게 된다. 이것은, 이송 길이가 각 이송의 시작시에 설정되어야 하는 경우에 유용한다.
스케일링 가능한 압축 해제 기법(scalable decompressing technique)이 이용됨이 바람직한데, 이 기법에서는 보다 크거나 작은 블럭 길이를 이용하여 압축 해제의 품질이 조정될 수 있다. 따라서, 소정 블럭으로 부터의 데이터의 이송 길이를 조정함으로써 압축 해제 품질을 희생시켜 대역폭을 동적으로 및 적응적으로 이용할 수 있다.
바람직하게, 손실 압축이 이용되는데, 그 이용은 특히 데이터가 인간의 지각을 위한 것일 경우에(예를 들어, 이미지 데이터 및 오디오 데이터) 이루어진다. 손실 압축 이후에는, 데이터는 일반적으로 압축 해제에 의해 정확하게 재 구성될 수 없으며, 압축 비율에 의거하여, 보다 크거나 보다 작은 정도로 지각되는 동일 콘텐츠를 전달한다. 일 실시예에 있어서, 압축 비율은 동적으로 이용 가능한 메모리 대역폭에 의거하여 동적으로 조정된다.
다른 실시예에 있어서, 메모리 이송을 보다 빠르게 종료시킴에 의해 정확성이 떨어지는 대신에 보다 작은 대역폭이 이용되도록, 점진적으로 감소하는 다른 데이터를 이용하여 점진적으로 정확성이 떨어지는 데이터를 재 구성하는 다른 압축 해제 선택이 이용 가능하다.
본 발명의 이러한 목적 및 다른 목적과 장점은 이하의 도면을 이용하여 설명될 것이다.
도 1은 데이터 처리 장치를 나타낸 도면,
도 2는 메모리 억세스를 설명한 도면,
도 3은 메모리 점유를 나타낸 도면,
도 4는 처리 소자를 나타낸 도면,
도 5는 메모리 점유를 나타낸 도면.
도 1은 메모리(10)와, 버스(12)를 통해 상호 접속된 다수의 처리 소자(14)(예시적으로 단지 2개만이 도시됨)를 가진 데이터 처리 시스템을 나타낸 도면이다. 처리 소자(14)는 프로세서(140)와, 압축 해제기(142) 및 압축기(144)를 포함한다. 프로세서(140)는 압축 해제기(142)와 압축기(144)를 통해 버스(12)에 결합된다. 본 출원과 관련하여, 메모리(10)와 버스(12)는 메모리 시스템의 일부이며, 그 메모리 시스템은 메모리(10)내의 데이터에 대한 억세스를 제공한다.
도 2는 도 1 의 장치의 동작 동안 버스(12)를 통한 메모리(10) 관련 메모리 이송을 도시한 도면이다. 예를 들어, 도 2는 개별 어드레스 신호(20), 데이터 신호(22) 및 종료 신호(24)를 도시한다. 메모리(10)로 부터/에 데이터를 독출하거나 기록하기 위하여, 처리 소자(14)는, 우선, 어드레스 신호(20)내의 블럭 어드레스(21)를 출력한다. 후속하여, 블럭 어드레스(21)에 대한 다수의 데이터 워드(23)가 이송된다. 독출 동작의 경우, 데이터 워드(23)는 블럭 어드레스(21)로 부터 시작하는 어드레스들을 가진 연속적인 메모리 장소로 부터의 데이터 워드이다. 기록 동작의 경우, 데이터 워드(23)는 블럭 어드레스(21)로 부터 시작하는 어드레스들을 가진 연속하는 메모리 장소에 기록되어야 하는 처리 소자(14)로 부터의 데이터 워드이다.
다수의 데이터 워드(23)의 이송 후, 처리 소자(14)는 블럭 어드레스(21)에 대한 메모리 이송의 종료와, 다음 블럭 어드레스(27)에서의 다음 메모리 이송에 대한 버스(12)의 이용 가능성을 나타내는 종료 신호(25)를 생성한다. 따라서, 데이터 워드(23)는 타임 슬롯(26) 동안에 전송되며, 그의 길이는 처리 소자(14)에 의해 제어된다. (실제적인 구현에서는, 어드레스 신호(20), 데이터 신호(22) 및/또는 종료 신호(24)와는 다르지만 동일 정보를 나타내는 신호 유형이 이용될 것임을 알 것이다. 예를 들어, 종료 신호는 이송 시작시에 전송된 길이 코드로 표시될 수 있다)
도 3은 프로세서(140)에 의해 인지되는 메모리(10)의 실제 메모리 점유(30) 와 가상 메모리 점유(32)를 나타낸 도면이다. 메모리(10)는 블럭(300a-d)들로 편성된 것으로 도시되며, 그 블럭들(300a-d)은 하나씩 적층되는 형식으로 이루어진다. 블럭들의 길이는 서로 다른 블럭 어드레스(21)에 의해 어드레싱될 수 있는 연속적인 장소들 사이의 워드들의 수에 대응한다. 전형적으로, 그 길이는 2의 멱값, 예를 들어, 블럭당 64 워드 또는 128 워드이다.
일 실시예에 있어서, 멀티-어드레스 메모리 이송이 128 바이트 또는 256 바이트 떨어진 어드레스와 같은 블럭 경계 어드레스에서만 시작할 수 있도록 구성되는 메모리(10)가 사용되며, 그 어드레스중 마지막 7 또는 8비트들은 0이다. 멀티-어드레스 이송에 대한 요청에 응답하여, 메모리는 그 메모리내의 연속적인 어드레싱 장소들에 상당하는 신호를 생성하며, 그 메모리의 어드레스들은 그 어드레스의 하위 비트들이 서로 다른 값을 가진다. 그러한 메모리 시스템의 아키텍처는 소정 라인의 시작으로 부터 이러한 유형의 억세스에 대해 (버스 이용성 및 대기 시간 측면에서)최적의 성능을 제공하도록 고안된다. 이것은 독출 및 기록에 적용된다. 본 실시예에 있어서 시작 어드레스는 바람직한 시작 어드레스라 할 것이며, 이는 비록 그들이 멀티-어드레스 메모리 이송에 대한 사실상 유일한 시작 어드레스인 경우에도 마찬가지이다.
다른 실시예에 있어서, 적어도 추가 메모리 클럭 사이클을 이용하여 멀티-어드레스 메모리 이송의 시작 어드레스를 선택하는데 있어서, 멀티 어드레스 메모리 이송의 시작 어드레스의 최하위 부분이 선택적으로 이용되도록 구성된 (본질적으로 알려진) 메모리가 이용된다. 이 경우, 이러한 추가 클럭 사이클을 이용하는 것이 아니라 최소 오버헤드를 가진 표준 시작 어드레스로 부터 즉시 멀티 어드레스 메모리 이송을 시작하기 위해 소정 신호를 메모리(10)에 전송하는데, 이러한 것은 조정된 시작 어드레스에 대한 하나 이상의 추가적인 클럭 사이클을 이용하지 않고도 이루어진다. 용어 "바람직한 시작 어드레스"는 본 실시예에서 이러한 표준 어드레스를 나타내는데 이용될 것이다. 이송될 블럭이 2 이상의 시작 어드레스로 연장되는 경우, 새로운 멀티 어드레스 이송이 각각의 바람직한 시작 어드레스마다 시작되어야만 하도록 최대 이송 길이가 바람직한 시작 어드레스들간의 거리만큼 부가되는 추가적인 실시예를 상술한 두 실시예가 가질 수 있지만, 본 발명이 그러한 추가적인 실시예에 제한되는 것은 아니다.
바람직하게, 비 압축 데이터의 연속적인 블럭들간의 어드레스 거리가 멀티-어드레스 메모리 이송에 대한 한쌍의 바람직한 시작 어드레스들간의 거리와 동일하게 되도록 압축 블럭 크기가 선택된다. 많은 압축 알고리즘에 있어서, 블럭 크기는 조정될 수 있으며, 또는 메모리 아키텍처에 의해 정의된 필요한 블럭 크기가 실현될 수 있도록 압축 블럭이 보다 큰 블럭으로 조합될 수 있다. 이하에서 설명하겠지만, 대안적으로 압축 블럭 크기는 이러한 메모리 시스템 블럭 크기의 정수배로 설정될 수 있다. 블럭으로 부터의 압축 데이터가 압축 해제되면, 압축 해제된 데이터의 각 블럭은 메모리(10)내의 한쌍의 바람직한 시작 어드레스들간의 거리에 대응하는 길이를 가진다. 바람직하게, 압축 해제된 데이터의 모든 블럭은 동일한 길이를 가진다.
압축 데이터에 의해 점유된 실제 메모리 점유(30)내의 이러한 메모리 장소들 은 빗금친 영역으로 도시된다. 실제 메모리 점유(30)에서 알 수 있는 바와 같이, 메모리 이송 유닛(300a-d)의 가변 부분들은, 가변 길이 압축이 이용되는 경우에, 압축 데이터에 의해 점유되지 않는채로 유지된다.
처리 소자(14)는 압축 해제기(142)와 압축기(144)를 포함한다. 압축 해제기(142)는 메모리(10)로 부터 버스(12)를 통하는 압축 데이터를 검색하는데, 이러한 검색은, 압축 데이터의 소정 블럭의 블럭 어드레스(21)를 공급하고, 전체 물리적 메모리 이송 유닛의 콘텐츠가 이송되기 전에 어드레싱된 블럭으로 부터의 모든 압축 데이터가 이송될 때 메모리 이송을 종료하기 위한 종료 신호(25)를 생성함에 의해 이루어진다. 압축 해제기(142)는 어드레싱된 블럭으로 부터 검색된 데이터를 압축 해제하고, 압축 해제된 데이터를 프로세서(140)에 공급한다.
유사하게, 압축기(144)는 프로세서(140)에 의해 생성된 데이터를 압축하고, 압축된 데이터를 버스(12)를 통해 메모리(10)에 기록한다. 이 경우, 압축기(144)는 압축 데이터의 소정 블럭에 대한 단일 블럭 어드레스(21)를 공급하고, 압축 블럭으로 부터의 압축 데이터의 워드들을 전송하며, 물리적 메모리 이송 유닛내의 모든 워드가 중복 기록되기 전 및 압축 데이터를 나타내는 워드들의 수가 전송되고 나면 블럭 어드레스(21)에 대한 전송을 종료하기 위한 신호를 전송한다.
프로세서(140)는 압축 해제된 데이터의 어드레스를 이용하여 블럭들내의 데이터를 어드레싱한다. 즉, 데이터 어드레스는 압축 해제된 블럭의 소정 블럭 어드레스와 압축 해제된 블럭내의 워드 어드레스로 구성된다. 워드 어드레스는 기 설정된 압축 해제된 블럭 크기까지의 임의의 값일 수 있다. 따라서, 프로세서(140)에 대해 가상 메모리 점유(32)에 도시된 바와 같은 어드레스 공간이 나타나며, 이때, 각 블럭(320a-d)은 동일한 기설정된 수의 장소를 점유한다. 프로세서(140)가 독출 요청을 발생하면, 그것은 데이터 어드레스를 압축 해제기(142)에 공급한다. 어드레싱된 데이터가 저장되어 있지 않다면, 압축 해제기(142)는 버스틀 통해 어드레스 메모리(10)로 제공되는 데이터 어드레스의 블럭 어드레스 부분을 이용한다. 후속하여, 압축 해제기(142)는 어드레싱된 블럭으로 부터, 압축 블럭을 나타내는데 필요한 워드의 실제 개수를 검색하고, 기 설정된 전체 블럭 길이가 이송되기 전에 이러한 실제 개수가 이송되면 메모리 이송을 종료한다. 압축 해제기(142)는 검색된 데이터를 압축 해제하고, 프로세서(140)로 부터 데이터 어드레스에 의해 어드레싱된 데이터를 선택하고, 선택된 데이터를 프로세서(140)에 제공한다.
바람직하게, 압축 해제기(142)는 압축 해제된 블럭의 모든 데이터 어드레스에 대한 데이터를 저장하는 (별도로 도시되지 않음)버퍼 메모리를 포함한다. 블럭이 압축 해제되면, 압축 해제된 데이터는 이러한 모든 장소에 기록되며, 프로세서(140)에 의해 어드레싱된 데이터는 이들 장소로 부터 프로세서(140)로 제공된다. 대안적으로, 항상 데이터로 부터의 어드레싱된 워드만이 압축 해제되거나, 어드레싱된 워드를 포함하는 워드들의 서브셋이 압축 해제될 수도 있다. 일반적으로, 그것은 모든 워드를 버퍼링함에 의해 단지 하나의 워드가 아닌 모든 워드를 압축해제 하는데 있어서 거의 추가적인 노력을 필요로 하지 않으며, 억세스 대기 시간이 평균적으로 감소된다. 그러나, 실시예에 있어서 압축 블럭은 서로간에 독립적으로 압축 해제될 수 있는 서브 블럭들로 구성됨을 알아야 한다. 이 경우에는, 하나의 서 브 블럭으로 부터 데이터가 필요한 때 하나의 서브 블럭에 대한 압축 해제된 데이터가 메모리 시스템(10)으로 부터의 새로운 소정 블럭의 페칭(fetching)없이, 버퍼 메모리내의 동일 블럭으로 부터의 다른 서브 블럭의 데이터를 중복 기록한다.
프로세서(140)가 데이터를 기록할 때, 프로세서(140)는 기록 데이터에 압축기(144)가 이용하는 데이터 어드레스를 제공한다. 전형적으로, 압축기(144)는 완전한 압축 해제된 블럭으로 부터의 데이터를 저장하고, 기록 데이터를 이용하여 데이터 어드레스에 의해 어드레싱된 어드레스에 있는 이러한 압축 해제된 데이터를 교체하고, 이후 데이터를 압축하고, 프로세서(140)에 의해 이용된 데이터 어드레스로 부터의 블럭 어드레스를 이용하여 메모리에 압축 데이터를 기록한다. 압축기(144)는, 기설정된 수의 워드가 연속적인 블럭 어드레스들간의 거리에 대응하는 메모리(10)에 이송되기 전 및 블럭 어드레스에 대한 압축 데이터가 이송된 때에, 이송을 종료한다.
결과적으로, 프로세서(140)가 전체 압축 해제된 데이터를 어드레싱하는 경우, 버스(12)를 통해 처리 소자(14)와 메모리(10) 사이에 전송되어야 하는 워드의 수는 압축 해제된 데이터내의 워드의 전체 수보다 작으며, 다른 이송을 위한 보다 많은 버스 및 메모리 대역폭이 남게 된다. 압축 데이터에 의해 점유된 메모리 공간은, 일반적으로, 압축 데이터를 이용함으로써 감소되지 않는데, 이는 점유되지 않은 공간이 메모리(10)내의 각각의 압축 블럭의 후방에 자리하여, 압축 해제된 블럭의 이용된 블럭 어드레스가 압축 블럭을 검색하기 위한 블럭 어드레스로서 이용되도록 하기 때문이다.
하나의 예시에 있어서, 압축 비디오 이미지는 메모리내의 다수의 연속적인 압축 블럭에 걸쳐 분산 저장된다. 압축 해제 후 프로세서(140)는 이러한 이미지의 픽셀을 개별적으로 어드레싱한다. 이 경우, 압축된 이미지에 의해 점유된 메모리 장소의 가장 낮은 어드레스와 가장 높은 어드레스간의 거리는, 실질적으로, 비 압축 이미지를 저장하는데 필요한 것과 동일한데, 이는 이용되지 않는 장소가 각각의 압축 블럭(300a-d)의 종료부에 자리하기 때문이다. 이 경우, 텔레비전 모니터와 같은 비디오 디스플레이 장치는 압축 해제기 및 버스(12)를 통해 메모리(10)에 결합되며, 또는 카메라나 케이블 입력과 같은 비디오 소오스는 압축기 및 버스(12)를 통해 메모리(10)에 결합된다.
압축기(144)와 압축 해제기(142)는 가변 길이 압축을 이용하여, 각각의 압축 블럭내의 압축 데이터의 길이를 그 블럭내의 특정의 비 압축 데이터에 맞춘다.
이미지 데이터 또는 오디오 데이터와 같은 다른 지각 데이터의 경우, 데이터 손실 압축을 이용하여, 약간의 정보 손실을 희생하여 데이터를 압축한다. 이에 따라, 메모리 및 버스 대역폭 이용을 최소로 할 수 있다. 일 실시예에 있어서, 압축 비율(및 그에 의한 손실량)은 동적으로 이용할 수 있는 버스 대역폭에 따라 동적으로 조정될 수 있다. 본 실시예에 있어서, 버스 모니터 장치(도시되지 않음)는 대역폭 이용을 판정하기 위해 버스(12)에 결합된다. 이것은, 예를 들어, 처리 소자(14)가 요청된 대역폭을 나타내는 신호를 버스 모니터에 전송하도록 고안되거나, 버스 모니터가 시간당 이용되지 않는 버스 싸이클의 수를 카운트하는 경우에 실현될 수 있다. 버스 모니터는 압축기(144)에 결합되어 압축된 데이터의 기록을 시작하라는 처리 소자(14)로 부터의 요청에 응답하거나 또는 동적으로 압축기(44)의 압축 비율을 설정한다.
바람직하게, 압축기(144)는 압축 데이터의 각 블럭에, 압축 데이터의 그 블럭내의 워드 수를 나타내는 길이 코드를 포함한다. 길이 코드는, 예를 들어, 압축 데이터에 선행하는 압축 블럭의 제 1 워드에 포함된다. 따라서, 소정 블럭의 포맷은 다음과 같다.
(블럭의 길이 코드, 압축 데이터)
압축 해제기(142)가 압축 블럭을 검색하기 위해 소정 블럭 어드레스를 이용하는 경우, 압축 해제기(142)는 압축 블럭으로 부터 길이 코드를 독출하고, 길이 코드를 이용하여 얼마나 많은 워드 이후에 블럭 어드레스에 대한 메모리 이송이 종료될 것인지를 메모리(10)에 신호 전송한다.
대안적으로, 압축기(144)는 각각의 특정 압축 블럭에 대한 길이 코드를, 메모리(10)내의 그 특정 압축 블럭의 앞부분 또는 뒷 부분에 인접한 압축 블럭에 저장하도록 구성된다.
(선행하거나 뒤따른 블럭의 길이 코드, 압축 데이터)
이 경우, 압축 해제기(142)는 메모리 이송내에 포함되어야 하는 워드 수를 판정하기 위해 우선 선행하거나 뒤따르는 블럭을 독출해야 한다. 일반적으로 블럭은 메모리에 저장되는 순서로 이송되기 때문에, 압축 해제기(142)는 다음 페치된 압축 블럭에 대한 메모리 이송의 길이를 제어하기 위해 압축 블럭으로 부터의 길이 코드를 간직함으로써 길이 코드를 검색하기 위한 추가적인 메모리 이송을 하지 않 는다. 이에 따라, 메모리 이송의 시작시에 길이 코드를 제공할 수 있게 된다. 통상적으로, 데이터는 한 어드레스 방향으로만 억세스된다. 이 경우, 인접 블럭에 대한 길이 코드를 각각의 특정 압축 블럭에 한 방향으로 저장할 수 있게 된다. 다른 실시예에 있어서, 양 방향으로 인접한 블럭에 대한 길이 코드가 포함됨으로써, 어느 한 방향으로의 독출시에 길이 코드의 개별적인 독출을 피한다. 연속적인 이송의 이러한 프로세스가 시작되면, 제 1 블럭의 길이는 알지 못하게 된다. 그 경우, 전체 비 압축 길이가 이송되어 단지 첫번째 이송에 대한 작은 불이익만을 받게 된다.
또 다른 실시예에 있어서, 길이 코드가 메모리(10)에 지정된 압축 블럭과 함께 포함되는 특정 압축 블럭은 블럭을 연속적으로 어드레싱하는 예상된 방식에 적합하게 된다. 예를 들어, 각각의 압축 해제된 제 2 블럭이 스킵(skip)될 것으로 예상되는 경우, 제 2 의 다음 압축 블럭의 길이 코드가 각각의 소정 블럭과 함께 포함된다. 추가적인 실시예에 있어서, 다음 블럭 코드는, 논리적 다음 블럭을 나타내도록 소정 블럭과 함께 포함되며, 다음 블럭에 대한 길이 코드가 포함된다. 블럭 포맷은 예를 들어 다음과 같다
(논리적 다음 블럭을 식별하는 코드, 논리적 다음 블럭의 길이 코드, 현재 블럭에 대한 압축 데이터)
압축 이미지 데이터가 저장되는 일 실시예에 있어서, 예를 들어, 인터레이스형 이미지가 억세스될 때 모든 제 2 이미지를 스킵하는 것이 바람직하다. 따라서, 각 이미지의 종료에서의 길이 코드는 다음의 제 2 이미지 라인의 시작에 대한 압축 워드의 수를 나타내도록 구성된다.
도 4는 캐쉬 메모리(40)와 캐쉬 관리 유닛(42)을 가진 처리 소자의 실시예를 나타낸 도면이다. 캐쉬 메모리(40)는 일측에는 프로세서(140)에 결합되고, 타측으로는 압축기(144)와 압축 해제기(142)에 결합된다. 동작에 있어서, 캐쉬 메모리(40)는 하나 이상의 압축 해제 데이터 블럭과 캐쉬된 블럭의 어드레스에 대한 정보를 저장한다. 프로세서(140)가 캐쉬된 블럭으로 부터의 데이터를 억세스하는 경우, 버스(12)에 대한 억세스가 필요치 않다. 프로세서(140)가 캐쉬 메모리(40)내에 있지 않는 데이터를 어드레스하는 경우, 캐쉬 관리 유닛(42)은 압축 해제기(142)를 트리거하여 압축 블럭을 검색하고, 그로 부터 어드레싱된 데이터는 압축 해제후에 검색될 수 있게 된다. 압축 해제기(142)는 검색된 블럭을 압축 해제하고, 압축 해제된 블럭을 캐쉬 메모리에 기록함으로써, 그 블럭이 후속적으로 어드레싱되게 한다.
필요한 경우, 캐쉬 관리 유닛(42)은 비 압축 데이터의 이전 블럭을 위해 이용된 캐쉬 메모리 공간을 다시 이용하여 캐쉬 메모리(40)내에 룸(room)을 생성한다. 프로세서(140)가 이 블럭내의 데이터를 갱신하고 나면, 우선, 캐쉬 관리 유닛은 비 압축 블럭을 압축하고 압축 블럭을 메모리(10)(도시되지 않음)에 기록하기 위한 신호를 압축기(144)에 보낸다. 연속 기록(write through)(프로세서(140)가 캐쉬 메모리(40)내의 데이터 워드를 갱신할 때마다 압축하고 기록함) 또는 재 기록(새로운 비 압축 블럭에 대한 캐쉬 공간이 필요한 경우에만 수행)과 같은 다양한 종래의 캐쉬 재 기록 방법이 이용될 수 있다.
메모리(10)에 압축 데이터의 소정 블럭을 기록할 때, 일반적으로 압축기 (144)는 압축 해제된 데이터의 전체 블럭을 필요로 하며, 이는 단지 하나의 워드가 프로세서(140)에 의해 갱신된 경우에도 그러함을 알아야 한다. 따라서, 소정 데이터 워드를 기록하기 위해, 메모리(10)로 부터 압축 데이터의 그 블럭을 검색하고, (바람직하기로는 압축 해제기(142)를 이용하여) 압축 데이터의 그 블럭을 압축 해제하고, 압축 해제된 블럭내의 관련 데이터 워드나 워드들을 갱신하고, 갱신된 블럭을 압축하고, 압축 블럭을 재 기록하는 것이 필요하다. 그러나, 통상적으로, 다수의 서로 다른 비 압축 블럭의 데이터 워드는 연속적으로 갱신된다. 바람직하게, 재 기록은, 비 압축 블럭의 처리가 완료된 경우에만 이루어진다. 또한, 비 압축 블럭내의 모든 데이터가 갱신되어, 구 블럭의 압축 해제가 필요치 않는 경우도 있다.
일 실시예에서는, 압축 및 압축 해제가 선택적이다. 이러한 실시예에 있어서, 압축 및 압축 해제된 블럭은 메모리(10)에 저장된다. 예를 들어, 기설정된 어드레스 범위의 내외에 데이터 어드레스가 있을 때 압축 또는 비 압축을 선택하거나, 압축 제어 레지스터(도시되지 않음)를 설정함에 의해 프로세서(140)는 압축 여부를 선택한다. 비 압축 데이터의 경우, 압축기(144,142)는 예를 들어 하나 이상의 특정 어드레스 범위밖의 데이터 어드레스를 위해 효율적으로 바이패스된다. 데이터 어드레스로 부터의 소정 비트는, 예를 들어, 압축되거나 비 압축 데이터가 어드레싱 되는 범위내에 어드레스가 있는 지 또는 그 범위 밖에 어드레스가 있는지를 나타내는데 이용된다.
다른 실시예에 있어서, 압축 해제기(142)는 점진적으로 작아지는 압축 해제된 데이터의 서브셋을 이용하여, 동일한 압축 데이터로 부터 압축 해제된 정보를 각각으로 획득할 수 있는 일련의 서로 다른 압축 선택 사항들 중 하나를 사용하도록 배열된다. 메모리에 있어서, 각각의 압축 데이터 블럭마다, 가장 작은 서브셋으로 부터의 데이터가 우선 배치되고, 그 다음의 각 시간마다 다음으로 큰 서브셋을 완료하는데 필요한 추가적인 데이터가 배치된다. 예를 들어, 블럭이 일련의 숫자로 코딩되면, 그 블럭에 대한 숫자의 상위 비트들을 포함하는 워드가 메모리에 우선적으로 배치되고, 그에 이어 하위 비트를 포함하는 워드가 배치되고, 그 다음에 그 하위 비트 보다도 하위인 비트를 포함하는 워드가 배치된다. 그러나, 그 블럭의 서브 샘플링된 서브셋을 나타내는 숫자들을 우선적으로 배치하는 것과 같은 다른 가능성도 존재함을 알아야 한다. 다른 압축 선택 사항은 압축 데이터의 점차로 커지는 블럭 서브셋을 독출하고, 그에 의해 압축 해제기는 품질이 점차로 증가하는 압축 해제된 데이터를 재생성할 수 있다. 특정의 압축 해제 선택 사항이 이용되는 경우, 관련 데이터 서브셋이 이송되고 나면 압축 해제기는 메모리 이송을 종료한다. 그 이송의 필요한 길이는 이용된 그 선택 사항으로 부터 계산되고, 응용 가능할 경우, 그 블럭에 대한 길이 코드로 부터 계산된다(예를 들어, 상위 비트들이 이용되는 경우, 이송될 비트의 개수는 상위 비트들중 이용된 부분과 길이(블럭내의 숫자들의 개수)의 승산값으로 된다). 따라서, 버스(12)상에서의 대역폭 이용이 최소화된다.
따라서, 보다 적은 버스(12) 대역폭 이용은 점차 낮아지는 품질의 압축 해제를 이용하여 실현될 수 있다. 프로세서(14)에 의해 실행되는 알고리즘의 필요성에 따라, 프로세서(14)는 압축 해제 알고리즘들중 하나를 선택하고, 선택된 압축 해제 알고리즘을 이용하도록 압축 해제기(142)에 명령한다. 따라서, 대역폭 이용은 프로세서(14)의 필요성에 따라 조정된다. 또한, 버스 관리기(도시되지 않음)는 버스(12)에서의 버스 대역폭 이용을 판정하고(대역폭을 판정하는 임의의 알려진 방식이 채용된다), 버스(12)상의 이용 가능한 대역폭에 따라 압축 해제 알고리즘을 선택하기 위한 신호를 전송하기 위해 제공된다.
데이터 캐쉬(40)에 추가하여, 처리 소자는 프로세서(140)를 위한 명령 캐쉬를 구비한다. 바람직하게, 명령 캐쉬는 버스(12)에 대한 별도의 인터페이스를 가진다. 바람직하게 압축 해제된 데이터로 부터 분리되어 관리되는 캐쉬 및 대기 시간을 최소화하기 위해 압축 해제없이 명령이 독출된다.
상기에서는, 압축 블럭에 대응하는 비 압축 블럭의 시작 데이터 어드레스들간의 거리에 대응하는 어드레스 거리에 연속적인 압축 블럭이 저장되는 방법을 설명하였다. 바람직하게, 그 거리는, 단일 블럭 어드레스에 응답하여 버스(12)를 통해 멀티-어드레스 메모리 이송을 시작하는 메모리 시스템 아키텍처에 의해 정의된 바와 같이 한쌍의 연속하는 바람직한 시작 어드레스들간의 거리에 대응한다. 그러나, 추가적인 실시예에 있어서, 그 거리는 이 거리의 정수배, 즉, 다른 바람직한 시작 어드레스에 의해 이격된 한쌍의 바람직한 시작 어드레스들간의 거리에 대응한다. 최대 멀티-어드레스 이송 길이가 연속하는 바람직한 시작 어드레들간의 거리로 제한되면, 이 경우에 압축 블럭을 위해 이용 가능한 전체 메모리 공간은 단일 블럭 어드레스(21)에 의해 어드레싱될 수 없다. 이것이 의미하는 것은, 원리상, 다수의 블럭 어드레스(21)가 압축 블럭을 억세스하기 위해 제공될 필요가 있다는 것이다. 압축 비율에 의거하여, 하나 이상의 이들 블럭 어드레스는, 압축 블럭이 이송되거나/되고 제공된 블럭 어드레스로 억세스할 수 있는 데이터 워드의 마지막 수가 이송될 필요가 없는 경우에 생략될 수 있다.
이러한 설명에서, "압축 데이터의 블럭"이란 단어가 다른 블럭에 대한 참조없이 압축 해제될 수 있는 데이터의 집합을 나타내지만, 압축 블럭으로 부터의 모든 데이터가 그 블럭내의 임의의 워드를 압축 해제할 필요가 있음을 암시하는 것은 아님을 알아야 한다. 예를 들어, 소정 압축 데이터 블럭은 독립적으로 압축 해제될 수 있는 다수의 압축 데이터 서브 블럭을 포함한다. 유사하게, Huffman 코딩과 같은 가변 길이 코딩이 이용되는 경우, 비 압축 데이터의 특정 어드레스에 대한 워드들의 시작점을 판정하기 위해서만 다른 워드에 대한 데이터를 참조할 필요가 있다.
도 5에는 블럭들의 시작 어드레스들간의 보다 큰 거리를 이용하는 예시적인 물리적 메모리 점유(50)가 도시된다. 이 예시에 있어서, 압축비는 2이다. 결과적으로, 이송을 위해 2개의 블럭 어드레스들을 필요로 하는 압축 해제된 데이터(520a,b)는 하나의 블럭 어드레스와 함께 이송될 수 있는 크기를 가진 메모리 공간(500a,b)(빗금 영역으로 도시됨)에 압축 데이터로서 저장될 수 있다. 이러한 크기의 모든 다른 메모리 공간(빗금되지 않은 영역으로 도시됨)은 압축된 데이터가 점유하지 않으며, 그의 콘텐츠는 이송될 필요가 없다. 메모리(10)에 공급되는데 필요한 블럭 어드레스의 개수는 반감될 것이다. 압축의 다른 팩터를 위한 나머지 개수의 메모리 공간이 개방 상태로 됨을 알 수 있을 것이다.
원칙적으로, 압축 해제된 블럭내의 어드레스로 어드레싱을 도모하기 위해 개 방 상태로 된 메모리 중간 공간에는 관련 데이터가 없다. 그러나, 본 발명을 벗어나지 않고, 다른 프로세스가 이용하기 위해, 다른 데이터가 이들 중간 공간에 저장될 수도 있다. 또한, 다른 블럭으로 부터의 압축 데이터의 사본이 이러한 중간 공간에 저장된다. 이 경우, 바람직한 어드레스들 사이의 전체 공간으로 부터의 데이터를 로딩함에 의해 일부 동작에서 예측이 선택적으로 이용될 수 있다. 그러나, 물론, 중간 공간내의 이 데이터는 다음 압축 데이터 블럭이 시작되는 다음의 바람직한 시작 어드레스를 계속 통과하지 못한다.
또한, 압축 해제된 데이터의 일부는 압축 데이터에 의존하지 않는 더미 데이터(dummy data)임을 알아야 한다. 결과적으로, 2개의 블럭 어드레스들 사이에 저장된 압축 데이터로 부터 압축 해제를 이용하여 실질적으로 획득되는 데이터 워드의 수는, 사실상, 이들 2 블럭 어드레스들간의 데이터 워드의 수보다 작다. 또한, 압축 데이터의 블럭들(선택적으로 길이 정보를 포함함)이 바람직한 시작 어드레스로 부터 즉시 시작될지라도, 본 발명을 벗어나지 않고서, 오프셋이 이용됨을 알 수 있을 것이다. 이 경우, 바람직한 시작은 여전히 멀티-어드레스 메모리 이송의 시작 어드레스이지만, 그 이송의 시작으로부터 일부 이송된 데이터는 압축 해제를 위해 이용되지 않는 상태로 남게 된다. 유사하게, 압축 블럭의 마지막 어드레스를 어느 정도 지난 멀티 어드레스 이송의 종료 어드레스를 오프셋할 수 있다. 이송되지 않은 다음의 바람직한 시작 어드레스까지 일부 데이터를 남긴채 그 이송이 종료되는한 대역폭 이득이 여전히 실현된다.
본 발명은 메모리내의 압축 블럭을 어드레싱하기 위해 처리 소자에 의해 제 공된 어드레스들을 사용하는 압축기와 압축 해제기 및 명확히 비 압축 데이터의 어드레스를 제공하는 처리 소자를 이용하여 설명되었지만, 명백히, 예를 들어 인접 어드레스(예를 들어, 시간 신호의 우측 또는 나중 샘플에 대한 픽셀)에 대한 어드레스 변경을 나타내기 위해 압축기 또는 압축 해제기에 "다음" 신호를 전송함에 의해 처리 소자가 데이터를 어드레싱함을 알 수 있을 것이다. 본 발명은, 비 압축 데이터의 어드레스가 압축된 데이터의 블럭들의 메모리 어드레스로 직접 변환되고, 랜덤 억세스의 경우에 무시되어야만 할 불필요한 블럭에 대한 데이터가 페치될 필요가 없다는 장점이 있다. 다른 블럭의 시작점에 대해 관리가 유지될 필요가 없다.
본 발명이 비 압축 데이터의 동일 크기의 어드레스 서브 범위내의 데이터를 각각으로 나타내는 압축 블럭에 적용되는 것이 바람직하지만, 본 발명을 벗어나지 않고도 다른 크기의 서브 범위가 다른 블럭을 위해 이용될 수 있음을 알 것이다.
Claims (22)
- 소정의 데이터 어드레스 범위내의 각 데이터 어드레스와 각각으로 관련된 데이터-아이템을 처리하는 장치로써,상기 데이터 아이템을 나타내는 압축 블럭은 메모리 시스템내에 저장되고, 상기 메모리 시스템의 멀티 어드레스 이송을 위한 각각의 바람직한 시작 어드레스로 부터 시작하는 각 블럭에 의해 메모리 어드레스들이 점유되고, 각 블럭은 상기 범위의 각 서브 범위내의 데이터 어드레스와 관련된 압축 데이터 아이템을 나타내며, 상기 서브 범위들은 연속적으로 인접하며, 각각의 특정 서브 범위는 특정 서브 범위내의 데이터 아이템을 나타내는 특정 블럭의 어드레스들이 시작하는 바람직한 시작 어드레스와 다음의 연속하는 서브 범위에 대한 블럭들중 다음 블럭의 어드레스가 시작하는 바람직한 시작 어드레스들간의 어드레스 거리에 대응하는 길이를 가지며, 블럭들 사이의 상기 특정 블럭에 의해 점유되는 않은 메모리 어드레스들은 방치하되,단지 바람직한 시작 어드레스에서 부터만 시작하는 선택 가능한 길이 멀티-어드레스 메모리 이송을 실행할 수 있으며 또는 상기 바람직한 시작 어드레스가 아닌 다른 어드레스로부터 시작하는 것 보다는 작은 오버헤드로 상기 이송을 실행할 수있는 시스템 메모리와;상기 데이터 아이템을 처리하는 처리 소자; 및상기 처리 소자와 메모리 시스템 사이에 결합된 압축 해제기를 포함하고,상기 압축 해제기는,상기 처리 소자가 상기 블럭에 대한 억세스를 요구할 때, 상기 메모리 시스템으로 부터의 블럭들중 요구된 블럭의 멀티 어드레스 메모리 이송을 시작하고 - 상기 이송시에 이송되지 않은 블럭들중 다음번 블럭에 대한 바람직한 시작 어드레스까지 상기 요구된 블럭을 바로 뒤따르는 메모리 어드레스는 방치함 -,상기 처리 소자로 상기 데이터 아이템을 전달하기 전에 상기 블럭들중 요구된 블럭으로 부터의 데이터 아이템을 압축해제하도록 구성되는데이터 아이템 처리 장치.
- 제 1 항에 있어서,상기 처리 소자는 상기 이송될 블럭들 중 요구된 블럭의 바람직한 시작 어드레스로 부터 시작하여, 보다 하위의 어드레스들을 연속적으로 요구하는 일련의 다른 압축 해제 선택 사항들로 부터 선택된 압축 해제 선택 사항을 상기 압축 해제기에 표시하도록 구성되고, 상기 압축 해제기는 표시된 압축 해제 선택 사항에 의거하여 메모리 이송 길이를 설정하는데이터 아이템 처리 장치.
- 제 1 항에 있어서,상기 압축 해제기는 상기 블럭들중 요구된 블럭의 길이에 의거하여 선택된 다수의 워드가 전송되었을 때 상기 블럭들중 요구된 블럭의 멀티-어드레스 메모리 이송을 종료하기 위한 신호를 상기 메모리 시스템에 전송하도록 구성된데이터 아이템 처리 장치.
- 제 3 항에 있어서,상기 압축 해제기는, 상기 멀티 어드레스 메모리 이송으로 부터 상기 블럭들중 요구된 블럭의 길이를 나타내는 정보를 검색하도록 구성되고, 상기 정보에 의거한 신호를 생성하는데이터 아이템 처리 장치.
- 제 1 항에 있어서,상기 압축 해제기는,상기 블럭들중 요구된 블럭에 선행하여 검색된 선행 검색 블럭의 멀티 어드레스 메모리 이송으로 부터 상기 블럭들중 요구된 블럭의 길이를 나타내는 정보를 검색하고,상기 블럭들중 요구된 블럭에 대한 상기 멀티 어드레스 메모리 이송의 시작시에 상기 정보로 부터 도출된 이송 길이 선택 신호를 상기 메모리 시스템에 전송 하도록 구성된데이터 아이템 처리 장치.
- 제 1 항에 있어서,상기 서브 범위의 길이는 연속하는 바람직한 시작 어드레스들간의 거리와 서로 동일하거나 그보다 크고, 상기 압축 해제기는 상기 블럭의 길이에 조건적으로 의거하여 상기 블럭들 중 요구된 블럭에 대한 후속적인 멀티 어드레스 메모리 이송을 시작하도록 구성되는데이터 아이템 처리 장치.
- 제 6 항에 있어서,각 블럭은 서로 독립적으로 압축 해제할 수 있는 다수의 서브 블럭들을 포함하고, 각 서브 블럭은 상기 블럭에 대한 각각의 동일한 크기의 서브 범위 부분에 대응하며, 상기 압축 해제기는 상기 멀티 어드레스 메모리 이송동안에 독출된 압축 데이터의 서브 블럭을 버퍼링하는 버퍼 메모리 영역과, 상기 서브 블럭에 대해 연속적으로 압축 해제된 데이터를 저장하는 중간 메모리 영역을 포함하고, 상기 압축 해제기는 메모리 이송 동안에 독출된 각 서브 블럭으로 부터의 압축 해제된 데이터를 상기 중간 메모리에서 연속적으로 서로 교체하는데이터 아이템 처리 장치.
- 제 1 항에 있어서,상기 압축 해제기는 손실 블럭 압축에 대응하는 압축 해제를 제공하도록 구성되는데이터 아이템 처리 장치.
- 제 1 항에 있어서,상기 압축 해제기는 가변 길이 블럭 압축에 대응하는 압축 해제를 제공하도록 구성되는데이터 아이템 처리 장치.
- 제 1 항에 있어서,상기 서브 범위들은 상호 동일한 길이를 가지는데이터 아이템 처리 장치.
- 제 1 항에 있어서,상기 서브 범위들의 각각과 관련되어, 한쌍의 바람직한 시작 어드레스들간의 거리와 동일한 길이를 가진 데이터 아이템을 압축하는 압축기를 포함하고, 상기 압축기는 상기 각각의 서브 범위와 관련된 데이터 아이템을 상기 각 블럭내로 압축하고, 상기 블럭들의 각자에 대한 각각의 멀티 어드레스 메모리 이송을 이용하여 상기 메모리 시스템에 상기 압축된 데이터를 저장하도록 구성되며, 각각의 이송은 상기 바람직한 시작 어드레스들의 각자로 부터 시작하고, 상기 압축기는, 상기 각 블럭이 요구되지 않을 때 다음의 바람직한 시작 어드레스까지 기록하지 않고, 각 블럭의 저장 완료시에 멀티 어드레스 메모리 이송을 종료하는데이터 아이템 처리 장치.
- 제 11 항에 있어서,상기 처리 소자는 압축을 위해 데이터 아이템을 계산하며, 상기 압축기는 상기 처리 소자로 부터 압축을 위한 데이터 아이템을 수신하도록 구성되는데이터 아이템 처리 장치.
- 제 11 항에 있어서,상기 압축기는 상기 메모리 시스템에 억세스하기 위한 이용 가능 대역폭의 동적으로 측정된 레벨에 의거하여 데이터의 압축을 위한 압축비를 조정하도록 구성되는데이터 아이템 처리 장치.
- 데이터 아이템 세트를 처리하기 위한 것으로, 각 데이터 아이템이 데이터 어드레스 범위내의 각 데이터 어드레스와 관련되는 방법으로써,멀티 어드레스 메모리 이송이 배타적으로 시작될 수 있거나 바람직한 시작 어드레스와는 다른 어드레스로 부터 시작하는 것보다는 작은 오버헤드로 시작할 수 있는 등거리의 바람직한 시작 어드레스의 서브셋을 구비하는 메모리 어드레스를 가진 메모리 시스템을 제공하는 단계와;상기 바람직한 시작 어드레스들의 각자로 부터 시작하는 각각의 블럭을 위해 이용되는 어드레스들을 상기 메모리 시스템내의 압축 블럭에 저장하는 단계를 포함하되,상기 각 블럭은 상기 데이터 어드레스 범위내의 각각의 서브 범위내의 데이터 어드레스와 관련된 압축 데이터 아이템을 나타내고, 상기 서브 범위들은 연속적으로 인접하며, 각각의 특정 서브 범위는 특정 서브 범위내의 데이터 아이템을 나타내는 특정 블럭이 시작하는 바람직한 시작 어드레스와, 연속하는 다음 서브 범위에 대한 블럭들중 다음 블럭이 시작하는 바람직한 시작 어드레스간의 어드레스 거 리에 대응하는 길이를 가지며, 상기 블럭들 사이의 상기 특정 블럭에 의해 점유되지 않은 메모리 어드레스들은 방치하는데이터 아이템 처리 방법.
- 제 14 항에 있어서,상기 블럭으로 부터 도출되는 압축 해제된 데이터 아이템을 처리하는 단계와,상기 블럭들중 요구되는 블럭이 저장된 바람직한 시작 어드레스로 부터 시작하는 멀티 어드레스 메모리 이송을 이용하여, 상기 처리를 위한 메모리 시스템으로 부터 상기 블럭들중 요구되는 블럭을 검색하는 단계와,이송되지 않은 상기 블럭들중 요구되는 블럭을 위해 이용되는 어드레스를 바로 뒤따르는 메모리 어드레스의 콘텐츠는 방치한채, 상기 블럭들중 요구되는 블럭의 길이에 따라 상기 블럭들중 요구되는 블럭에 대한 멀티 어드레스 메모리 이송을 종료하는 단계를 포함하는데이터 아이템 처리 방법.
- 제 14 항에 있어서,상기 멀티 어드레스 메모리 이송시에 이송하기 위해, 상기 블럭들중 요구되 는 블럭의 길이를 나타내는 정보를 상기 블럭들중 요구되는 블럭과 함께 상기 메모리 시스템에 저장하는 단계를 포함하는데이터 아이템 처리 방법.
- 제 14 항에 있어서,상기 블럭들중 논리적 선행 블럭에 대한 멀티 어드레스 메모리 이송시에 이송하기 위해, 상기 블럭들중 요구된 블럭으로 부터의 데이터 아이템에 선행하는 데이터 아이템이 상기 처리 동안에 정상적으로 처리되는 블럭들중의 논리적 선행 블럭과 함께 상기 블럭들중 요구되는 블럭의 길이를 나타내는 정보를 저장하는 단계를 포함하는데이터 아이템 처리 방법.
- 제 17 항에 있어서,상기 블럭들중 논리적 선행 블럭으로 부터 정보를 독출하는 단계와,상기 블럭들중 요구된 블럭에 대한 멀티 어드레스 메모리 이송의 시작시에 상기 메모리 시스템에 상기 정보에 의거하여 선택된 이송 길이 선택 신호를 전송하는 단계를 포함하는데이터 아이템 처리 방법.
- 제 14 항에 있어서,상기 블럭을 생성하기 위해 비 압축 데이터의 손실 블럭 압축을 이용하는데이터 아이템 처리 방법.
- 제 14 항에 있어서,상기 블럭을 생성하기 위해 비 압축 데이터의 가변 길이 블럭 압축을 이용하는데이터 아이템 처리 방법.
- 제 20 항에 있어서,가변 길이 블럭 압축의 압축비는 상기 메모리 시스템을 억세스 하기 위한 동적으로 이용 가능한 대역폭에 따라 동적으로 조정되는데이터 아이템 처리 방법.
- 청구항 제 14 항 내지 제 21 항 중 어느 한 항의 방법에 따라 메모리 이송과 압축 해제를 제어하는 기계 명령어를 포함하는 컴퓨터 프로그램 제품.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP03101037 | 2003-04-16 | ||
EP03101037.4 | 2003-04-16 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20060009256A true KR20060009256A (ko) | 2006-01-31 |
Family
ID=33185936
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020057019597A KR20060009256A (ko) | 2003-04-16 | 2004-04-13 | 데이터 처리 장치 및 방법과, 컴퓨터 프로그램 제품 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20060271761A1 (ko) |
EP (1) | EP1627310A2 (ko) |
JP (1) | JP2006524858A (ko) |
KR (1) | KR20060009256A (ko) |
CN (1) | CN1894677A (ko) |
WO (1) | WO2004092960A2 (ko) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8473673B2 (en) * | 2005-06-24 | 2013-06-25 | Hewlett-Packard Development Company, L.P. | Memory controller based (DE)compression |
JP2007094639A (ja) * | 2005-09-28 | 2007-04-12 | Tdk Corp | メモリコントローラ及びフラッシュメモリシステム |
WO2007135602A1 (en) * | 2006-05-24 | 2007-11-29 | Koninklijke Philips Electronics N.V. | Electronic device and method for storing and retrieving data |
WO2007138602A2 (en) | 2006-05-31 | 2007-12-06 | Storwize Ltd. | Method and system for transformation of logical data objects for storage |
US8868930B2 (en) | 2006-05-31 | 2014-10-21 | International Business Machines Corporation | Systems and methods for transformation of logical data objects for storage |
KR101454167B1 (ko) * | 2007-09-07 | 2014-10-27 | 삼성전자주식회사 | 데이터 압축 및 복원 장치 및 방법 |
KR101503829B1 (ko) * | 2007-09-07 | 2015-03-18 | 삼성전자주식회사 | 데이터 압축 장치 및 방법 |
US8718142B2 (en) | 2009-03-04 | 2014-05-06 | Entropic Communications, Inc. | System and method for frame rate conversion that utilizes motion estimation and motion compensated temporal interpolation employing embedded video compression |
JP5526641B2 (ja) * | 2009-08-03 | 2014-06-18 | 富士通株式会社 | メモリコントローラ |
GB0918373D0 (en) * | 2009-10-20 | 2009-12-02 | Advanced Risc Mach Ltd | Memory interface compression |
KR101649357B1 (ko) * | 2010-05-10 | 2016-08-19 | 삼성전자주식회사 | 데이터 저장 장치, 그것의 동작 방법, 그리고 그것을 포함한 스토리지 서버 |
KR20110138076A (ko) * | 2010-06-18 | 2011-12-26 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 쓰기 방법 |
US8510518B2 (en) * | 2010-06-22 | 2013-08-13 | Advanced Micro Devices, Inc. | Bandwidth adaptive memory compression |
CN102129873B (zh) * | 2011-03-29 | 2012-07-04 | 西安交通大学 | 提高计算机末级高速缓存可靠性的数据压缩装置及其方法 |
US8949513B2 (en) * | 2011-05-10 | 2015-02-03 | Marvell World Trade Ltd. | Data compression and compacting for memory devices |
JP5855150B2 (ja) | 2014-03-06 | 2016-02-09 | ウィンボンド エレクトロニクス コーポレーション | 半導体記憶装置 |
CN107250991B (zh) | 2015-02-13 | 2020-08-28 | 谷歌有限责任公司 | 透明硬件辅助存储器解压缩 |
CN104853213B (zh) * | 2015-05-05 | 2018-05-18 | 福州瑞芯微电子股份有限公司 | 一种提高视频解码器cache处理效率的方法及其系统 |
JP6679290B2 (ja) * | 2015-11-30 | 2020-04-15 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
CN109672923B (zh) * | 2018-12-17 | 2021-07-02 | 龙迅半导体(合肥)股份有限公司 | 一种数据处理方法和装置 |
JP7142562B2 (ja) * | 2018-12-25 | 2022-09-27 | ルネサスエレクトロニクス株式会社 | 半導体装置、および、データのアクセスを制御するための方法 |
KR20210088304A (ko) * | 2020-01-06 | 2021-07-14 | 삼성전자주식회사 | 이미지 프로세서의 동작 방법, 이미지 처리 장치 및 이미지 처리 장치의 동작 방법 |
US11243890B2 (en) * | 2020-01-14 | 2022-02-08 | EMC IP Holding Company LLC | Compressed data verification |
US11245415B2 (en) * | 2020-03-13 | 2022-02-08 | The University Of British Columbia University-Industry Liaison Office | Dynamic clustering-based data compression |
CN113835872A (zh) * | 2020-06-24 | 2021-12-24 | 北京小米移动软件有限公司 | 一种用于减少内存开销的数据处理方法、装置及存储介质 |
CN113326001B (zh) * | 2021-05-20 | 2023-08-01 | 锐掣(杭州)科技有限公司 | 数据处理方法、装置、设备、系统、介质及程序 |
CN114442951B (zh) * | 2022-01-24 | 2024-08-02 | 珠海泰芯半导体有限公司 | 传输多路数据的方法、装置、存储介质和电子设备 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5392417A (en) * | 1991-06-05 | 1995-02-21 | Intel Corporation | Processor cycle tracking in a controller for two-way set associative cache |
US6002411A (en) * | 1994-11-16 | 1999-12-14 | Interactive Silicon, Inc. | Integrated video and memory controller with data processing and graphical processing capabilities |
US5864859A (en) * | 1996-02-20 | 1999-01-26 | International Business Machines Corporation | System and method of compression and decompression using store addressing |
JP3127853B2 (ja) * | 1997-04-30 | 2001-01-29 | 日本電気株式会社 | メモリ集積回路並びにこれを用いた主記憶システム及びグラフィクスメモリシステム |
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 |
US7188227B2 (en) * | 2003-09-30 | 2007-03-06 | International Business Machines Corporation | Adaptive memory compression |
-
2004
- 2004-04-13 US US10/552,766 patent/US20060271761A1/en not_active Abandoned
- 2004-04-13 EP EP04727086A patent/EP1627310A2/en not_active Withdrawn
- 2004-04-13 JP JP2006506835A patent/JP2006524858A/ja not_active Withdrawn
- 2004-04-13 CN CNA2004800100428A patent/CN1894677A/zh active Pending
- 2004-04-13 KR KR1020057019597A patent/KR20060009256A/ko not_active Application Discontinuation
- 2004-04-13 WO PCT/IB2004/050426 patent/WO2004092960A2/en not_active Application Discontinuation
Also Published As
Publication number | Publication date |
---|---|
US20060271761A1 (en) | 2006-11-30 |
EP1627310A2 (en) | 2006-02-22 |
WO2004092960A3 (en) | 2006-06-22 |
JP2006524858A (ja) | 2006-11-02 |
CN1894677A (zh) | 2007-01-10 |
WO2004092960B1 (en) | 2006-07-27 |
WO2004092960A2 (en) | 2004-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20060009256A (ko) | 데이터 처리 장치 및 방법과, 컴퓨터 프로그램 제품 | |
CN106534867B (zh) | 接口装置及操作接口装置的方法 | |
US6407741B1 (en) | Method and apparatus for controlling compressed Z information in a video graphics system that supports anti-aliasing | |
US6492991B1 (en) | Method and apparatus for controlling compressed Z information in a video graphics system | |
US6243081B1 (en) | Data structure for efficient retrieval of compressed texture data from a memory system | |
US11023152B2 (en) | Methods and apparatus for storing data in memory in data processing systems | |
US6157743A (en) | Method for retrieving compressed texture data from a memory system | |
US7190284B1 (en) | Selective lossless, lossy, or no compression of data based on address range, data type, and/or requesting agent | |
US6822589B1 (en) | System and method for performing scalable embedded parallel data decompression | |
US6208273B1 (en) | System and method for performing scalable embedded parallel data compression | |
US8830247B2 (en) | Image displaying device having image cache memory | |
US8548962B2 (en) | Data compression and decompression using relative and absolute delta values | |
US20030128878A1 (en) | Method and device for forming a derived digital signal from a compressed digital signal | |
US8674858B2 (en) | Method for compression and real-time decompression of executable code | |
RU2265879C2 (ru) | Устройство и способ для извлечения данных из буфера и загрузки их в буфер | |
KR20200000353A (ko) | 데이터 처리 시스템 | |
JP2009211494A (ja) | 情報処理装置及び方法 | |
US6353871B1 (en) | Directory cache for indirectly addressed main memory | |
US6459737B1 (en) | Method and apparatus for avoiding redundant data retrieval during video decoding | |
US9137541B2 (en) | Video data cache | |
US20050047510A1 (en) | Data processing device for MPEG | |
CN106919514A (zh) | 半导体装置、数据处理系统以及半导体装置控制方法 | |
KR20210092129A (ko) | 데이터 처리 시스템 | |
US20240201894A1 (en) | Low overhead page recompression | |
EP0948213A2 (en) | Moving pictures decompression device and method thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |