KR100849305B1 - 데이터를 압축하여 관리하는 메모리 및 그 방법 - Google Patents

데이터를 압축하여 관리하는 메모리 및 그 방법 Download PDF

Info

Publication number
KR100849305B1
KR100849305B1 KR1020060117006A KR20060117006A KR100849305B1 KR 100849305 B1 KR100849305 B1 KR 100849305B1 KR 1020060117006 A KR1020060117006 A KR 1020060117006A KR 20060117006 A KR20060117006 A KR 20060117006A KR 100849305 B1 KR100849305 B1 KR 100849305B1
Authority
KR
South Korea
Prior art keywords
data
compressed
compressed page
page
memory
Prior art date
Application number
KR1020060117006A
Other languages
English (en)
Other versions
KR20080047096A (ko
Inventor
정순용
민창우
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020060117006A priority Critical patent/KR100849305B1/ko
Priority to US11/945,079 priority patent/US8037255B2/en
Publication of KR20080047096A publication Critical patent/KR20080047096A/ko
Application granted granted Critical
Publication of KR100849305B1 publication Critical patent/KR100849305B1/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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/04Addressing variable-length words or parts of words
    • 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)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

본 발명은 메모리에 관한 것으로, 특히 임의의 데이터를 관리하는 메모리 및 방법에 관한 것이다. 본 발명에 의하면, 데이터를 압축하여 관리하는 메모리에 있어서, 상기 데이터를 임시 저장하며, 압축하고, 압축 해제하는 압축 페이지 캐시를 다수개 이상 포함하는 압축 페이지 캐시영역과, 상기 압축으로 생성되는 압축 데이터를 저장하는 압축 페이지 블록을 다수개 이상 포함하는 압축 페이지 블록영역을 포함하는 메모리부를 특징으로 한다. 이와 같은 메모리에 의해서, 본 발명은 메모리에 임의의 데이터를 저장할 때, 데이터를 압축하여 저장함으로 더 많은 양의 데이터를 저장할 수 있다. 그리고 한번에 많은 양의 데이터를 저장할 수 있으므로, 메모리간의 데이터 이동으로 발생하는 데이터 처리 속도의 저하를 최소화할 수 있다.
메모리, 압축, 저장, 로드, 언로드

Description

데이터를 압축하여 관리하는 메모리 및 그 방법{MEMORY FOR COMPRESSING AND MANAGING AND THE METHOD}
도 1은 본 발명의 바람직한 실시 예에 따른 단말기의 블록 구성도
도 2는 본 발명의 바람직한 실시 예에 따른 1차 메모리부의 구성도
도 3은 본 발명의 바람직한 실시 예에 따른 페이지 테이블(Page Table)의 예시도
도 4는 본 발명의 바람직한 실시 예에 따라 가상 페이지 엔트리 테이블(Virtual Page Entry Table)의 데이터 구조를 지정하는 유사 코드
도 5는 본 발명의 바람직한 실시 예에 따라 임의의 데이터를 관리하는 흐름도
도 6은 본 발명의 바람직한 실시 예에 따라 임의의 데이터를 1차메모리부로 이동하는 흐름도
도 7은 본 발명의 바람직한 실시 예에 따라 임의의 데이터를 로드하는 흐름도
도 8은 본 발명의 바람직한 실시 예에 따라 임의의 데이터를 언로드하는 흐름도
도 9는 본 발명의 바람직한 실시 예에 따라 임의의 데이터를 2차메모리부로 이동하는 흐름도
본 발명은 메모리에 관한 것으로, 특히 임의의 데이터를 관리하는 메모리 및 방법에 관한 것이다.
일반적으로 램(RAM: Random Access Memory)등의 1차 메모리는 하드나 플래쉬 등의 2차 메모리보다 속도가 빠르고 사용이 편리한 장점이 있지만, 메모리 용량대비 가격이 2차 메모리보다 비싸다는 단점이 있다.
특히 휴대단말기와 같은 임베디드 시스템에서 1차 메모리의 용량이 커질수록 부품단가가 커지며, 부품단가가 커지면 휴대단말기의 가격 경쟁력이 약해지므로 휴대단말기에 가능한 적은 1차 메모리 용량을 구비하려고 한다.
이와 같은 1차 메모리의 용량부족을 해결하기 위해서, 주로 스와핑(Swapping)을 이용한 가상 메모리 방식이다. 가상 메모리 방식은 2차 메모리에 가상 메모리 영역을 설정하고, 가상 메모리 영역에 데이터들을 이동하고, 실제 수행에 필요한 데이터들만 1차 메모리로 이동하여 임의의 데이터를 처리한다.
그러나 앞에서 언급한 가상 메모리 방식에서, 1차 메모리와 2차 메모리간의 데이터를 이동할 때 일정시간이 소비된다. 이에 따라 1차 메모리와 2차 메모리간의 빈번한 데이터 이동은 데이터 처리 속도의 저하를 가져오는 문제점이 있었다.
따라서 본 발명은 1차 메모리와 2차 메모리에서 서로 데이터를 이동하여 발생하는 데이터 처리 속도의 저하를 최소화하는 방법 및 장치를 제공한다.
상기한 문제점을 해결하기 위해 메모리에서 데이터를 압축하여 관리하는 방법에 있어서, 임의의 데이터의 입력 시, 상기 데이터를 입력받아 임시 저장하고, 상기 데이터를 미리 지정되는 압축기법으로 압축하여 압축 데이터를 생성하고, 상기 압축 데이터를 저장함을 특징으로 한다.
상기한 문제점을 해결하기 위해 메모리에서 데이터를 압축하여 관리하는 방법에 있어서, 임의의 데이터의 로드 요청 시, 상기 데이터에 해당하는 압축 데이터를 검색하고, 상기 압축 데이터를 미리 지정되는 압축해제기법으로 압축 해제하여 상기 데이터를 생성하고 임시 저장함을 특징으로 한다.
상기한 문제점을 해결하기 위해 메모리에서 데이터를 압축하여 관리하는 방법에 있어서, 임의의 데이터의 언로드 요청 시, 상기 데이터를 검색하고, 상기 검색한 데이터를 미리 지정되는 압축기법으로 압축하여 압축 데이터를 생성하고, 상기 생성한 압축 데이터를 저장함을 특징으로 한다.
상기한 문제점을 해결하기 위해 메모리에서 데이터를 압축하여 관리하는 방법에 있어서, 임의의 데이터의 출력 시, 상기 데이터에 해당하는 압축 데이터를 검색하고, 상기 압축 데이터를 미리 지정되는 압축해제기법으로 압축 해제하여 상기 데이터를 생성하고, 상기 생성한 데이터를 출력함을 특징으로 한다.
상기한 문제점을 해결하기 위해 데이터를 압축하여 관리하는 메모리에 있어서, 임의의 데이터를 임시 저장하며, 압축하고, 압축 해제하는 압축 페이지 캐시를 다수개 이상 포함하는 압축 페이지 캐시영역과, 상기 압축으로 생성되는 압축 데이터를 저장하는 압축 페이지 블록을 다수개 이상 포함하는 압축 페이지 블록영역을 포함하는 메모리부를 포함함을 특징으로 한다.
이하 본 발명의 바람직한 실시 예들을 첨부한 도면을 참조하여 상세히 설명한다. 또한 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능 및 구성에 대한 상세한 설명은 생략한다.
본 발명에 관해 설명하기에 앞서 본 발명을 간단히 설명하고자 한다. 본 발명은 1차 메모리에 관한 것으로, 2차 메모리에서 1차 메모리로 이동한 데이터를 압축하여 관리하는 방식에 관한 것이다. 예를 들면, 1차 메모리로 입력된 임의의 데이터를 단순한 압축기법인 RLE(Run-Length Encoding) 압축기법을 이용하여 원본의 데이터의 크기보다 거의 1/10 정도의 데이터의 크기로 압축한 후, 압축된 데이터를 관리할 수 있다. 이에 따라 본 발명에서 1차 메모리는 일반적인 스와핑 방식이 아닌 스와핑-압축 방식으로 동일한 1차 메모리의 용량으로도 더 많은 양의 데이터를 관리할 수 있다. 이제부터 본 발명을 설명할 때, 1차 메모리는 1차 메모리부로, 2차 메모리는 2차 메모리부로 명명한다.
도 1은 본 발명의 바람직한 실시 예에 따른 단말기의 블록 구성도이다. 도 1을 참조하여 본 발명에 따른 단말기의 구성요소들을 설명하고자 한다.
단말기는 제어부(101)와 2차 메모리부(103)와 1차 메모리부(105)를 포함하여 구성한다.
각 구성요소들을 살펴보면, 2차 메모리부(103)는 단말기의 제어 시 필요한 데이터들을 저장하고 있다. 특히 2차 메모리부(103)는 가상 메모리영역(VMR: Virtual Memory Region)(111)을 포함하고 있으며, 가상 메모리영역(VMR)(111)은 임의의 데이터를 저장하는 다수개의 페이지(Page)(113)를 포함하여 구성한다. 그리고 2차 메모리부(103)는 페이지(113)에 포함되어 있는 임의의 데이터를 제어부(101)의 제어에 따라 1차 메모리부(105)로 출력하거나 1차 메모리부(105)로부터 임의의 데이터를 입력받는다.
페이지의 메모리 용량은 임의로 정해질 수 있으며, 일반적으로 4Kbyte이거나 1Kbyte일 수 있다. 2차 메모리부(103)의 가상 메모리영역(VMR)(111)에 포함된 전체 페이지의 수는 가상 메모리영역(VMR)(111)의 메모리 용량과 페이지의 메모리 용량에 따라 달라진다. 가상 메모리영역(VMR)(111)의 메모리 용량을 페이지의 메모리 용량으로 나눈 값이 전체 페이지의 개수가 된다.
예를 들면, 가상 메모리영역(VMR)(111)의 메모리 용량이 32Mbyte이며, 페이지의 메모리 용량이 4Kbyte인 경우, 전체 페이지의 개수는 32Mbyte/4Kbyte = 8192 개가 된다.
본 발명을 설명하기 위해서 페이지의 메모리 용량은 P로 나타내고, 전체 페이지의 개수는 N으로 나타낸다.
1차 메모리부(105)는 제어부(101)의 제어에 따라 2차 메모리부(103)로부터 임의의 데이터를 입력받으며, 입력된 데이터를 압축하여 압축 데이터를 생성하고, 생성한 압축 데이터를 관리한다. 특히 1차 메모리부(105)는 압축 페이지 캐시영역(CPCR: Compressed Page Cache Region)(115)과 압축 페이지 블록영역(CPBR: Compressed Pgae Block Region)(119)을 포함한다.
압축 페이지 캐시영역(CPCR)(115)은 다수의 압축 페이지 캐시(CPC: Compressed Pgae Cache)(117)를 포함하여 구성된다. 그리고 압축 페이지 블록영역(CPBR)(119)은 다수의 압축 페이지 블록(CPB: Compressed Page Block)(121)을 포함하여 구성된다.
1차 메모리부(105)는 제어부(101)의 제어에 따라 2차 메모리부(103)의 페이지(113)에 포함된 임의의 데이터를 입력받아 압축 페이지 캐시영역(CPCR)(115)에 포함된 임의의 압축 페이지 캐시(CPC)(117)에 임시 저장한다. 그리고 1차 메모리부(105)는 압축 페이지 캐시(CPC)(117)에 임시 저장된 임의의 데이터를 미리 지정되는 압축기법으로 압축하여 압축 데이터를 생성한다. 그리고 1차 메모리부(105)는 압축 페이지 블록영역(CPBR)(119)에 포함된 임의의 압축 페이지 블록(CPB)(121)으로 압축 페이지 캐시(CPC)(117)에 포함된 압축 데이터를 이동하여 저장한다.
그리고 1차 메모리부(105)는 제어부(101)의 제어에 따라 압축 페이지 캐시영역(CPCR)(115)에 포함된 임의의 압축 페이지 캐시(CPC)(117)로 압축 페이지 블록(CPB)(121)에 포함된 압축 데이터를 이동하여 임시 저장한다. 그리고 1차 메모리부(105)는 압축 페이지 캐시(CPC)(117)에 임시 저장된 압축 데이터를 미리 지정되는 압축해제기법으로 압축을 해제하여 원본 데이터를 생성한다. 그리고 1차 메모리 부(105)는 압축 페이지 캐시(CPC)(117)에 임시 저장된 원본 데이터를 2차 메모리부(103)로 출력한다.
제어부(101)는 단말기의 다양한 기능을 제공하기 위해 단말기의 각 구성요소들을 제어한다. 특히 본 발명에서 제어부(101)는 메모리관리부(MMU: Memory Management Unit)(107)와 압축 메모리관리부(CMMU: Compressed Memory Management Unit)(109)를 포함한다.
제어부(101)의 메모리관리부(MMU)(107)는 2차 메모리부(103)의 페이지(113)에 포함되어 있는 임의의 데이터를 1차 메모리부(105)의 압축 페이지 캐시영역(CPCR)(115)에 포함되어 있는 임의의 압축 페이지 캐시(CPC)(117)로 출력하여 임시 저장한다. 그리고 메모리관리부(MMU)(107)는 1차 메모리부(105)의 압축 페이지 캐시(CPC)(117)에 포함되어 있는 임의의 데이터를 2차 메모리부(103)의 가상 메모리영역(VMR)(111)에 포함되어 있는 페이지(113)로 출력하여 저장한다. 그리고 메모리관리부(MMU)(107)는 변동되는 압축 페이지 캐시(CPC)의 메모리 어드레스에 따라 페이지 테이블(PT)을 관리한다.
도 3을 참조하여 본 발명에 따른 페이지 테이블(PT)을 좀 더 자세히 설명하고자 한다.
페이지 테이블(PT)은 다수의 페이지 엔트리 테이블(PET)로 구성되며, 페이지 엔트리 테이블(PET)은 페이지의 색인번호 순서대로 나열된다. 페이지 엔트리 테이블(PET)은 2차 메모리부(103)의 가상 메모리영역(VMR)(111)에 포함된 임의의 페이지의 메모리 어드레스를 포함하고, 임의의 페이지에 포함된 임의의 데이터가 임시 저장되는 1차 메모리부(105)의 압축 페이지 캐시영역(CPCR)(115)에 포함된 압축 페이지 캐시(CPC)의 메모리 어드레스를 포함한다.
예를 들면, n번째 페이지의 메모리 어드레스가 0x04000000(301)이며, n번째 페이지에 포함된 임의의 데이터가 저장되는 압축 페이지 캐시(CPC)의 메모리 어드레스가 0x08000000(303)인 경우, n번째 페이지에 해당하는 페이지 엔트리 테이블(PET)은 페이지의 메모리 어드레스인 0x04000000(301)과 압축 페이지 캐시(CPC)의 메모리 어드레스인 0x08000000(303)을 포함할 수 있다.
압축 메모리관리부(CMMU)(109)는 압축 페이지 캐시(CPC)(117)에 포함된 임의의 데이터를 미리 지정되는 압축기법으로 압축하여 압축 데이터를 생성하고, 생성된 압축 데이터를 압축 페이지 블록영역(CPBR)(119)에 포함되어 있는 임의의 압축 페이지 블록(CPB)으로 이동하여 저장한다. 그리고 압축 메모리관리부(CMMU)(109)는 압축 페이지 블록(CPB)에 저장되어 있는 임의의 압축 데이터를 임의의 압축 페이지 캐시(CPC)로 이동한 후, 미리 지정되는 압축해제기법으로 압축 데이터의 압축을 해제하여 원본 데이터를 생성한다.
지금까지 도 1을 참조하여 본 발명에 따른 단말기의 구성요소를 살펴보았다. 도 2는 본 발명의 바람직한 실시 예에 따른 1차 메모리부의 구성도이다. 도 2를 참조하여 본 발명에 따른 1차 메모리부의 구성을 살펴보고자 한다.
1차 메모리부(105)는 비압축 페이지영역(UPR: Uncompressed Page Region)(201)과 압축 페이지 캐시영역(CPCR: Compressed Page Cache Region)(203)과 가상 페이지 테이블(VPT: Virtual Page Table)(207)과 압축 페이지 블록 비트 맵(CPBB: Compressed Page Block Bitmap)(211)과 압축 페이지 블록영역(CPBR: Compressed Page Block Region)(213)을 포함하여 구성한다.
비압축 페이지영역(UPR)(201)은 2차 메모리부(103)의 가상 메모리영역(VMR) (111)으로부터 출력된 임의의 데이터들 중에서 종래의 1차 메모리부(105)와 같이 스와핑 방식으로 데이터들을 저장하고 관리하는 영역이다.
압축 페이지 캐시영역(CPCR)(203)은 데이터를 임시 저장할 수 있는 다수개의 압축 페이지 캐시(CPC)(205)를 포함하여 구성한다. 압축 페이지 캐시영역(CPCR)(203)은 메모리관리부(MMU)(107)의 제어에 따라 2차 메모리부(103)로부터 임의의 데이터를 입력받아 임의의 압축 페이지 캐시(CPC)에 임시 저장한다. 그리고 압축 페이지 캐시영역(CPCR)(203)은 메모리관리부(MMU)(107)의 제어에 따라 임의의 압축 페이지 캐시(CPC)(205)에 임시 저장된 임의의 데이터를 2차 메모리부(103)로 출력한다.
그리고 압축 페이지 캐시영역(CPCR)(203)은 압축 메모리관리부(CMMU)(109)의 제어에 따라 임의의 압축 페이지 캐시(CPC)에 포함되어 있는 임의의 데이터를 압축하여 압축 데이터를 생성한다. 그리고 압축 페이지 캐시영역(CPCR)(203)은 생성된 압축 데이터를 이동하여 압축 페이지 블록영역(CPBR)(213)의 임의의 압축 페이지 블록(CPB)에 저장한다. 그리고 압축 페이지 캐시영역(CPCR)(203)은 압축 메모리관리부(CMMU)(109)의 제어에 따라 임의의 압축 페이지 블록(CPB)에 포함되어 있는 압축 데이터를 이동하여 임의의 압축 페이지 캐시(CPC)에 임시 저장한 후, 압축 데이터의 압축을 해제하여 원본 데이터를 생성한다.
압축 페이지 캐시영역(CPCR)(203)에 포함된 압축 페이지 캐시(CPC)의 전체 개수를 L로 나타낼 수 있으며, 압축 페이지 캐시(CPC)의 메모리 용량은 페이지의 메모리 용량과 동일하다. 그러므로 압축 페이지 캐시영역(CPCR)(203)의 메모리 용량은 전체 압축 페이지 캐시(CPC)의 개수인 L과 압축 페이지 캐시(CPC)의 메모리 용량인 P를 곱한 값이 된다.
압축 페이지 블록영역(CPBR)(213)은 임의의 데이터를 저장하는 다수의 압축 페이지 블록(CPB)(215)을 포함하여 구성한다. 압축 페이지 블록영역(CPBR)(213)은 압축 메모리관리부(CMMU)(109)의 제어에 따라 임의의 압축 페이지 캐시(CPC)에 포함되어 있는 압축 데이터를 이동하여 임의의 압축 페이지 블록(CPB)에 저장한다.
그리고 압축 페이지 블록영역(CPBR)(213)은 압축 메모리관리부(CMMU)(109)의 제어에 따라 임의의 압축 페이지 블록(CPB)에 저장되어 있는 압축 데이터를 이동하여 임의의 압축 페이지 캐시(CPC)에 임시 저장한다.
압축 페이지 블록 비트맵(CPBB)(211)은 압축 페이지 블록(CPB)의 수와 동일한 비트수로 구성되며, 단순한 비트의 나열이다. 각각의 비트는 각각의 압축 페이지 블록(CPB)에 대응되며, 각각의 비트에 대응되는 압축 페이지 블록(CPB)을 사용할 수 있는지 사용할 수 없는지를 나타낸다. 예를 들면, 임의의 압축 페이지 블록(CPB)에 압축 데이터가 저장되어 사용 중이면, 압축 페이지 블록(CPB)을 사용할 수 없으므로 압축 페이지 블록(CPB)에 대응되는 임의의 비트는 1이 될 수 있다. 그리고 임의의 압축 페이지 블록(CPB)에 압축 데이터가 저장되어 있지 않아 비어 있으면, 압축 페이지 블록(CPB)을 사용할 수 있으므로 압축 페이지 블록(CPB)에 대 응되는 임의의 비트는 0이 될 수 있다.
압축 페이지 블록영역(CPBR)(213)에 포함된 전체 압축 페이지 블록(CPB)의 개수는 M으로 나타낼 수 있으며, 전체 압축 페이지 블록(CPB)의 개수는 임의의 데이터를 압축할 때 나타나는 평균 압축비와 전체 페이지의 개수인 M을 곱한 값보다 더 커야한다.
가상 페이지 테이블(VPT)(207)은 가상 페이지 엔트리 테이블(VPET: Virtual Page Entry Table)(209)이 다수개 모여서 구성된다.
가상 페이지 엔트리 테이블(VPET)(209)은 임의의 페이지에 포함된 임의의 데이터를 1차 메모리부(105)의 압축 페이지 블록(CPB)에 저장할 때까지 필요한 정보들을 나타내는 테이블이다.
도 4는 가상 페이지 엔트리 테이블(VPET)(209)을 구조체로 나타낸 것이다. 도 4를 참조하여 가상 페이지 엔트리 테이블(VPET)(209)에 포함된 정보를 설명하고자 한다.
compressor_type(401)은 1차 메모리부(105)의 압축 페이지 캐시영역(CPCR)(203)에 임시 저장되어 있는 임의의 데이터가 어떤 압축기법으로 압축되는지를 나타낸다. 데이터를 압축하는 압축기법이 증가할수록 compressor_type(401)의 플래그(flag)의 비트수도 증가할 수 있다.
예를 들면, 하나의 압축기법만으로 임의의 데이터를 압축하는 경우, compressor_type(401)의 플래그(flag)는 1비트로 나타낼 수 있다. compressor_type(401)의 플래그(flag)가 1이면, 임의의 데이터를 압축하여 임의의 압축 페이지 블록(CPB)에 저장한 것임을 나타낼 수 있다. 그리고 compressor_type(401)의 플래그(flag)가 0이면, 임의의 데이터를 압축하지 않고 임의의 압축 페이지 블록(CPB)에 저장한 것임을 나타낼 수 있다. 임의의 데이터를 압축하여 압축 데이터를 생성한 후에, 압축 데이터의 크기가 압축하지 않은 원본 데이터의 크기보다 더 커질 경우, 임의의 압축 페이지 블록(CPB)에 임의의 데이터를 압축하지 않고 저장하는 것이 더 바람직하므로 compressor_type(401)의 플래그(flag)가 0인 경우도 필요하다.
lock(403)은 언로드(unload)되어서는 안 되는 데이터들을 나타낸다.
로드(load)란 임의의 압축 페이지 블록(CPB)에 저장된 압축 데이터를 이동하여 압축 페이지 캐시영역(CPCR)(203)의 임의의 압축 페이지 캐시(CPC)에 임시 저장하는 것을 말한다. 언로드(unload)란 로드(load)된 임의의 데이터를 이동하여 다시 압축 페이지 블록영역(CPBR)(213)의 임의의 압축 페이지 블록(CPB)에 저장하는 것을 말한다.
예를 들면, lock(403)의 플래그를 1비트로 나타낼 때, lock(403)의 플래그가 0인 경우 임의의 데이터는 언로드(unload)가 가능한 데이터임을 나타낼 수 있다. 이와 달리, lock(403)의 플래그가 1인 경우 임의의 데이터는 언로드(unload)가 불가능한 데이터임을 나타낼 수 있다.
dirty(405)는 압축 페이지 블록영역(CPBR)(213)으로 임의의 압축 데이터를 로드(load)한 후에, 해당 데이터에 쓰기 접근(write access)이 발생하는지 발생하지 않는지를 나타낸다. 압축 페이지 블록영역(CPBR)(213)에 저장된 임의의 압축 데 이터가 이동하여 압축 페이지 캐시영역(CPCR)(203)에 임시 저장되면, dirty(405)의 플래그는 0으로 초기화 된다. 그리고 압축 데이터의 압축을 해제한 후, 해당 데이터에 쓰기 접근(write access)이 발생하면, dirty(405)의 플래그는 1로 설정된다.
data_length(407)는 임의의 데이터를 압축한 후에 생성되는 압축 데이터의 크기를 나타낸다.
data_block[](409)은 압축 페이지 캐시영역(CPCR)(203)에 임시 저장된 임의의 데이터를 이동하여 압축 페이지 블록영역(CPBR)(213)에 저장할 때, 임의의 데이터가 압축된 후에 저장되는 압축 페이지 블록(CPB)을 나타낸다. 예를 들면, 임의의 압축 페이지 캐시(CPC)에 임시 저장된 임의의 데이터를 압축하여 압축 페이지 블록영역(CPBR)의 2번째 압축 페이지 블록(2th CPB)과 3번째 압축 페이지 블록(3th CPB)에 저장하는 경우, data_block[](409)은 data_block[2,3]이 될 수 있다.
VPET[](411)는 현재 가상 페이지 엔트리 테이블(VPET)이 2차 메모리부(103)의 몇 번째 페이지에 대응되는 테이블인지 나타낸다. 예를 들면, 현재 가상 페이지 엔트리 테이블(VPET)이 2차 메모리부(103)의 2번째 페이지에 대응되는 테이블일 때, VPET[](411)는 VPET[2]가 될 수 있다.
도 5는 본 발명의 바람직한 실시 예에 따라 임의의 데이터를 관리하는 흐름도 이다. 도 5를 참조하여 본 발명에 따른 단말기에서 임의의 데이터를 관리하는 과정을 설명하고자 한다.
501단계에서 제어부(101)는 2차 메모리부(103)에 저장된 임의의 데이터를 1차 메모리부(105)로 출력하여 저장한다.
도 6을 참조하여 501단계를 좀 더 자세히 설명하고자 한다.
601단계에서 제어부(101)의 메모리관리부(MMU)(107)는 2차 메모리부(103)의 임의의 페이지를 1차 메모리부(105)로 출력하라는 명령이 요청되면 603단계로 진행하고, 임의의 데이터를 1차 메모리부(105)로 출력하라는 명령이 요청되지 않으면 601단계를 반복한다.
603단계에서 제어부(101)의 메모리관리부(MMU)(107)는 가상 메모리영역(VMR) (111)에서 임의의 페이지에 대응되는 페이지 색인번호 n을 검색한다. 그리고 메모리관리부(MMU)(107)는 검색한 페이지 색인번호 n을 압축 메모리관리부(CMMU)(109)로 출력한다.
그리고 메모리관리부(MMU)(107)는 압축 페이지 캐시영역(CPCR)(203)을 구성하는 다수의 압축 페이지 캐시(CPC)중에서 임의의 데이터를 임시 저장할 수 있는 비활성 압축 페이지 캐시(CPC)가 존재하면 607단계로 진행하고, 임의의 데이터를 임시 저장할 수 있는 압축 페이지 캐시(CPC)가 존재하지 않으면 605단계로 진행한다.
605단계에서 제어부(101)의 메모리관리부(MMU)(107)는 임의의 데이터를 임시 저장할 수 있는 비활성 압축 페이지 캐시(CPC)를 생성한 후, 607단계로 진행한다.
예를 들면, 제어부(101)의 메모리관리부(MMU)(107)는 이미 임의의 데이터를 임시 저장중인 활성 압축 페이지 캐시(CPC)중에서 랜덤(random)으로 활성 압축 페이지 캐시(CPC)를 선택한다. 이후에 메모리관리부(MMU)(107)는 압축 페이지 캐시(CPC)에 포함된 임의의 데이터를 삭제하여 비활성 압축 페이지 캐시(CPC)를 생성 할 수 있다. 또 다른 예로, 제어부(101)의 메모리관리부(MMU)(107)는 활성 압축 페이지 캐시(CPC) 중에서 가장 최근에 사용된(Least Recently Used) 압축 페이지 캐시(CPC)를 검색한다. 그리고 메모리관리부(MMU)(107)는 검색한 압축 페이지 캐시(CPC)에 포함된 임의의 데이터를 삭제하여 비활성 압축 페이지 캐시(CPC)를 생성할 수 있다.
607단계에서 제어부(101)의 메모리관리부(MMU)(107)는 1차 메모리부(105)에 포함된 압축 페이지 캐시영역(CPCR)(203)중에서 비활성 압축 페이지 캐시(CPC)에 임의의 페이지에 포함된 임의의 데이터를 임시 저장하여 압축 페이지 캐시(CPC)를 활성화 한다.
이후에 메모리관리부(MMU)(107)는 활성화된 압축 페이지 캐시(CPC)의 메모리 어드레스를 검색한다. 그리고 메모리관리부(MMU)(107)는 603단계에서 검색한 페이지 색인번호에 대응되는 페이지 엔트리 테이블(PET)을 검색한다. 그리고 메모리관리부(MMU)(107)는 검색한 페이지 엔트리 테이블(PET)을 분석하여 페이지의 메모리 어드레스에 대응되게 검색한 압축 페이지 캐시(CPC)의 메모리 어드레스를 추가한다.
그리고 제어부(101)의 압축 메모리관리부(CMMU)(109)는 활성화된 압축 페이지 캐시(CPC)에 포함된 임의의 데이터를 미리 지정되는 압축 기법으로 압축하여 압축 데이터를 생성한다.
609단계에서 제어부(101)의 압축 메모리관리부(CMMU)(109)는 압축 페이지 블록영역(CPBR)(213)을 구성하는 다수의 압축 페이지 블록(CPB) 중에서 임의의 압축 페이지 블록(CPB)(n
Figure 112006086553287-pat00001
번째 블록)을 검색한다. 그리고 압축 메모리관리부(CMMU)(109)는 압축 페이지 캐시(CPC)에 임시 저장된 압축 데이터를 이동하여 검색한 압축 페이지 블록(CPB)에 저장한다.
만약에 압축 데이터의 크기가 (C-1)*(압축 페이지 블록(CPB)의 메모리 용량)보다 크면, 압축 메모리관리부(CMMU)(109)는 압축 데이터의 크기가 원본 데이터의 크기보다 큰 것으로 파악하여 원본 데이터를 압축 페이지 블록(CPB)에 저장한다.
C는 압축 페이지 캐시(CPC)의 메모리 용량을 압축 페이지 블록(CPB)의 메모리 용량으로 나눈 값이다. C가 커질수록 압축 페이지 블록(CPB)의 메모리 용량이 작아져서 1차 메모리부(105)의 효율성이 높아지는 장점이 있지만, 압축 페이지 블록(CPB)의 전체 개수가 많아져서 압축 페이지 블록 비트맵(211)이 커지는 단점이 있다.
이후에 압축 메모리관리부(CMMU)(109)는 페이지의 색인번호 n에 대응되는 가상 페이지 엔트리 테이블(VPET)을 검색하고, 검색한 가상 페이지 엔트리 테이블(VPET)에 포함된 다수의 정보들을 생성한다.
다시 도 5로 돌아와서, 503단계에서 제어부(101)는 n번째 페이지에 포함된 임의의 데이터의 로드가 요청되면, 1차 메모리부(105)에서 임의의 데이터가 저장된 압축 페이지 블록(CPB)을 검색한다. 그리고 제어부(101)는 검색한 압축 페이지 블록(CPB)에 포함된 압축 데이터를 이동하여 임의의 압축 페이지 캐시(CPC)에 임시 저장한다. 그리고 제어부(101)는 압축 페이지 캐시(CPC)의 압축 데이터를 미리 지정되는 압축해제기법으로 압축을 해제하여 원본 데이터를 생성한다.
도 7을 참조하여 로드하는 과정을 좀 더 자세히 설명하고자 한다.
701단계에서 제어부(101)의 메모리관리부(MMU)(107)는 n번째 페이지의 로드가 요청되면 703단계로 진행하고, n번째 페이지의 로드가 요청되지 않으면 701단계를 반복한다.
703단계에서 제어부(101)의 메모리관리부(MMU)(107)는 n번째 페이지에 포함된 임의의 데이터가 1차 메모리부(105)의 압축 페이지 캐시영역(CPCR)(203)에 매핑되어 있으면 713단계로 진행하고, 1차 메모리부(105)의 압축 페이지 캐시영역(CPCR)(203)에 매핑되어 있지 않으면 705단계로 진행한다.
705단계에서 제어부(101)의 메모리관리부(MMU)(107)는 압축 페이지 캐시영역(CPCR)(203)을 구성하는 다수의 압축 페이지 캐시(CPC) 중에서 임의의 데이터를 임시 저장할 수 있는 비활성 압축 페이지 캐시(CPC)가 존재하면 709단계로 진행하고, 임의의 데이터를 임시 저장할 수 있는 압축 페이지 캐시(CPC)가 존재하지 않으면 707단계로 진행한다.
707단계에서 제어부(101)의 메모리관리부(MMU)(107)는 임의의 데이터를 임시 저장할 수 있는 비활성 압축 페이지 캐시(CPC)를 생성한 후, 709단계로 진행한다.
709단계에서 제어부(101)의 메모리관리부(MMU)(107)는 로드가 요청된 페이지의 색인번호인 n을 검색하여 압축 메모리관리부(CMMU)(109)로 출력한다. 그리고 제어부(101)의 압축 메모리관리부(CMMU)(109)는 입력된 페이지 색인번호에 대응되는 가상 페이지 엔트리 테이블(VPET)을 검색한다. 그리고 압축 메모리관리부(CMMU)(109)는 검색한 가상 페이지 엔트리 테이블(VPET)에 포함된 정보들 중에서 data_block[](409)을 이용하여 압축 페이지 블록영역(CPBR)(213)에서 임의의 데이터가 저장되어 있는 n
Figure 112006086553287-pat00002
번째 압축 페이지 블록(CPB)을 검색한다.
711단계에서 제어부(101)의 압축 메모리관리부(CMMU)(109)는 검색한 n
Figure 112006086553287-pat00003
번째 압축 페이지 블록(CPB)에 포함된 압축 데이터를 비활성 압축 페이지 캐시(CPC)에 임시 저장하여 비활성 압축 페이지 캐시(CPC)를 활성화 한다. 그리고 압축 메모리관리부(CMMU)(109)는 활성화된 압축 페이지 캐시(CPC)에 포함된 압축 데이터를 미리 지정되는 압축해제기법을 이용하여 압축을 해제하고 713단계로 진행한다.
713단계에서 제어부(101)의 메모리관리부(MMU)(107)는 페이지 테이블(PT)을 구성하는 다수의 페이지 엔트리 테이블(PET)중에서 페이지 색인번호 n에 대응되는 페이지 엔트리 테이블(PET)을 검색한다. 그리고 메모리관리부(MMU)(107)는 검색한 페이지 엔트리 테이블(PET)에 포함된 압축 페이지 캐시(CPC)의 메모리 어드레스를 711단계에서 활성화된 압축 페이지 캐시(CPC)의 메모리 어드레스로 변경한다.
다시 도 5로 돌아와서, 505단계에서 제어부(101)는 n번째 페이지에 포함된 임의의 데이터의 언로드가 요청되면, 1차 메모리부(105)의 압축 페이지 캐시영역(CPCR)(203)중에서 임의의 데이터가 저장된 압축 페이지 캐시(CPC)를 검색한다. 그리고 제어부(101)는 검색한 압축 페이지 캐시(CPC)에 포함된 임의의 데이터를 미리 지정되는 압축기법으로 압축하여 압축 데이터를 생성한다. 그리고 제어부(101)는 생성한 압축 데이터를 이동하여 임의의 압축 페이지 블록(CPB)에 저장한다.
도 8을 참조하여 언로드하는 과정을 좀 더 자세히 설명하고자 한다.
801단계에서 제어부(101)의 메모리관리부(MMU)(107)는 n번째 페이지의 언로 드가 요청되면 803단계로 진행하고, n번째 페이지의 언로드가 요청되지 않으면 801단계를 반복한다.
803단계에서 제어부(101)의 메모리관리부(MMU)(107)는 언로드가 요청된 n번째 페이지의 어드레스 주소를 검색한다. 그리고 메모리관리부(MMU)(107)는 검색한 페이지 어드레스 주소에 대응되는 페이지 엔트리 테이블(PET)을 검색하고, 검색한 페이지 엔트리 테이블(PET)을 분석하여 n번째 페이지의 어드레스 주소에 대응되는 압축 페이지 캐시(CPC)의 어드레스 주소를 검색한다. 그리고 메모리관리부(MMU)(107)는 압축 메모리관리부(CMMU)(109)로 언로드가 요청된 페이지의 색인번호인 n과 압축 페이지 캐시(CPC)의 메모리 어드레스를 출력한다.
805단계에서 제어부(101)의 압축 메모리관리부(CMMU)(109)는 페이지 색인번호인 n에 대응되는 가상 페이지 엔트리 테이블(VPET)을 검색한다. 그리고 압축 메모리관리부(CMMU)(109)는 가상 페이지 엔트리 테이블(VPET)을 분석하여 dirty(405) 플래그가 1로 설정되어 있는지 파악한다. 압축 메모리관리부(CMMU)(109)는 dirty(405) 플래그가 1인 경우, n번째 페이지가 로드된 후에 쓰기 접근(write access)가 발생한 것으로 파악하고 805단계로 진행한다. 이와 달리 압축 메모리관리부(CMMU)(109)는 dirty(405) 플래그가 0인 경우, n번째 페이지가 로드된 후에 쓰기 접근(write access)가 발생하지 않은 것으로 파악하고 807단계로 진행한다.
807단계에서 제어부(101)의 압축 메모리관리부(CMMU)(109)는 803단계에서 입력된 압축 페이지 캐시(CPC)의 어드레스 주소에 대응되는 압축 페이지 캐시(CPC)를 검색한다. 그리고 압축 메모리관리부(CMMU)(109)는 검색한 압축 페이지 캐시(CPC) 에 포함된 데이터를 삭제하여 압축 페이지 캐시(CPC)를 비활성화 한다.
805단계에서 제어부(101)의 압축 메모리관리부(CMMU)(109)는 803단계에서 입력된 압축 페이지 캐시(CPC)의 어드레스 주소에 대응되는 압축 페이지 캐시(CPC)를 검색한다. 그리고 압축 메모리관리부(CMMU)(109)는 압축 페이지 캐시(CPC)에 포함된 임의의 데이터를 미리 지정되는 압축기법으로 압축하여 압축 데이터를 생성한다.
809단계에서 제어부(101)의 압축 메모리관리부(CMMU)(109)는 805단계에서 생성한 압축 데이터의 크기가 압축하지 않은 원본 데이터의 크기를 초과하는지 파악한다.
압축 메모리관리부(CMMU)(109)는 압축 데이터의 크기가 원본 데이터의 크기를 초과하면 811단계로 진행하고, 압축 데이터의 크기가 원본 데이터의 크기 이하이면 813단계로 진행한다.
811단계에서 압축 메모리관리부(CMMU)(109)는 미리 지정되는 압축해제기법으로 압축 데이터의 압축을 해제한다. 그리고 압축 메모리관리부(CMMU)(109)는 압축 페이지 블록영역(CPBR)(213)을 구성하는 다수의 압축 페이지 블록(CPB)중에서 임의의 압축 페이지 블록(CPB)을 검색한다. 그리고 압축 메모리관리부(CMMU)(109)는 검색한 압축 페이지 블록(CPB)에 압축 페이지 캐시(CPC)에 포함된 임의의 데이터를 저장한다. 그리고 압축 메모리관리부(CMMU)(109)는 페이지 색인번호인 n에 대응되는 가상 페이지 엔트리 테이블(VPET)을 검색한다. 그리고 압축 메모리관리부(CMMU)(109)는 검색한 가상 페이지 엔트리 테이블(VPET)에 포함된 다수의 정보를 수정한 후, 저장한다.
813단계에서 압축 메모리관리부(CMMU)(109)는 압축 페이지 블록영역(CPBR)(213)을 구성하는 다수의 압축 페이지 블록(CPB)중에서 임의의 압축 페이지 블록(CPB)을 검색한다. 그리고 압축 메모리관리부(CMMU)(109)는 검색한 압축 페이지 블록(CPB)에 압축 페이지 캐시(CPC)에 포함된 압축 데이터를 저장한다.
다시 도 5로 돌아와서, 507단계에서 제어부(101)는 1차 메모리부(105)에 저장된 임의의 데이터를 2차 메모리부(103)로 출력하여 저장한다.
도 9를 참조하여 507단계를 좀 더 자세히 설명하고자 한다.
901단계에서 제어부(101)의 메모리관리부(MMU)(107)는 1차 메모리부(105)에 포함된 임의의 데이터를 2차 메모리부(103)로 저장하는 것이 요청되면 903단계로 진행하고, 1차 메모리부(105)에 포함된 임의의 데이터를 2차 메모리부(103)로 저장하는 것이 요청되지 않으면 901단계를 반복한다.
903단계에서 제어부(101)의 메모리관리부(MMU)(107)는 임의의 데이터가 저장되었던 페이지의 색인번호 n을 검색한다. 그리고 메모리관리부(MMU)(107)는 압축 메모리관리부(CMMU)(109)로 검색한 페이지의 색인번호를 출력한다. 그리고 메모리관리부(MMU)(107)는 압축 페이지 캐시영역(CPCR)(203)을 구성하는 다수의 압축 페이지 캐시(CPC) 중에서 비활성 압축 페이지 캐시(CPC)가 존재하는지 파악한다. 메모리관리부(MMU)(107)는 압축 페이지 캐시영역(CPCR)(203)에 비활성 압축 페이지 캐시(CPC)가 존재하면 907단계로 진행하고, 압축 페이지 캐시영역(CPCR)(203)에 비활성 압축 페이지 캐시(CPC)가 존재하지 않으면 905단계로 진행한다.
905단계에서 제어부(101)의 메모리관리부(MMU)(107)는 압축 페이지 캐시영역(CPCR)(203)에 비활성 압축 페이지 캐시(CPC)를 생성한 후, 907단계로 진행한다.
예를 들면, 제어부(101)의 메모리관리부(MMU)(107)는 이미 임의의 데이터를 임시 저장중인 활성 압축 페이지 캐시(CPC) 중에서 랜덤(random)으로 활성 압축 페이지 캐시(CPC)를 선택한다. 이후에 메모리관리부(MMU)(107)는 선택한 압축 페이지 캐시(CPC)에 포함된 임의의 데이터를 삭제하여 비활성 압축 페이지 캐시(CPC)를 생성할 수 있다. 또 다른 예로, 제어부(101)의 메모리관리부(MMU)(107)는 활성 압축 페이지 캐시(CPC) 중에서 가장 최근에 사용된(Least Recently Used) 압축 페이지 캐시(CPC)를 검색한다. 그리고 메모리관리부(MMU)(107)는 검색한 압축 페이지 캐시(CPC)에 포함된 임의의 데이터를 삭제하여 비활성 압축 페이지 캐시(CPC)를 생성할 수 있다.
907단계에서 제어부(101)의 압축 메모리관리부(CMMU)(109)는 가상 페이지 테이블(VPET)을 구성하는 다수의 가상 페이지 엔트리 테이블(VPET)중에서 903단계에서 입력된 페이지 색인번호인 n에 대응되는 가상 페이지 엔트리 테이블(VPET)을 검색한다. 그리고 압축 메모리관리부(CMMU)(109)는 검색한 가상 페이지 엔트리 테이블(VPET)에 포함된 data_block[](409)을 이용하여 임의의 데이터가 저장된 압축 페이지 블록(CPB)의 색인번호를 검색한다. 그리고 압축 메모리관리부(CMMU)(109)는 압축 페이지 블록영역(CPBR)(213)을 구성하는 다수의 압축 페이지 블록(CPB)중에서 검색한 압축 페이지 블록(CPB)의 색인번호에 해당하는 압축 페이지 블록(CPB)을 검색한다.
909단계에서 제어부(101)의 압축 메모리관리부(CMMU)(109)는 압축 페이지 캐시영역(CPCR)(203)에 포함된 비활성 압축 페이지 캐시(CPC)로 907단계에서 검색한 압축 페이지 블록(CPB)에 포함된 압축 데이터를 이동한다. 그리고 압축 메모리관리부(CMMU)(109)는 압축 페이지 캐시(CPC)에 포함된 압축 데이터를 미리 지정되는 압축해제기법으로 압축을 해제한다.
911단계에서 제어부(101)의 메모리관리부(MMU)(107)는 903단계에서의 페이지 엔트리 테이블(PET)을 검색한 후, 페이지 엔트리 테이블(PET)에 포함된 압축 페이지 캐시(CPC)의 메모리 어드레스를 909단계에서 압축 데이터를 임시 저장한 압축 페이지 캐시(CPC)의 메모리 어드레스로 변경한다. 그리고 제어부(101)의 메모리관리부(MMU)(107)는 페이지 엔트리 테이블(PET)에 포함된 n번째 페이지의 메모리 어드레스로 압축 페이지 캐시(CPC)에 임시 저장된 임의의 데이터를 출력한다.
상기한 과정을 통하여 1차 메모리부(105)의 메모리 용량은 동일하지만 스와핑 방식으로 임의의 데이터를 저장하여 관리하는 것보다 임의의 데이터를 스와핑한 후 압축하여 관리하는 것이 1차 메모리부(105)의 효율성이 더 높다.
그리고 2차 메모리부(103)의 가상 메모리영역(VMR)(111)에 저장된 임의의 데이터를 1차 메모리부(105)가 압축하여 관리하므로, 2차 메모리부(103)는 스와핑 방식보다 더 많은 임의의 데이터를 1차 메모리부(105)에 저장할 수 있다. 이에 따라 1차 메모리부와 2차 메모리부에서 서로 데이터를 이동하여 발생하는 데이터 처리속도의 저하를 최소화할 수 있다.
상술한 본 발명의 설명에서는 구체적인 실시 예에 관해 설명하였으나, 여러 가지 변형이 본 발명의 범위에서 벗어나지 않고 실시될 수 있다. 예를 들어, 본 발명에서는 2차 메모리부(103)에 포함된 가상 메모리영역(VMR)(111)에 포함된 임의의 페이지에서 임의의 데이터를 출력하여 1차 메모리부(105)에 저장하였으나 2차 메모리부(103)에서 임의의 데이터를 출력하여 1차 메모리부(105)에 저장할 수 있다. 따라서 본 발명의 범위는 설명된 실시 예에 의하여 정할 것이 아니고 특허청구범위 뿐만 아니라 특허청구범위와 균등한 것에 의해 정해져야 한다.
상기와 같이, 본 발명은 1차 메모리부에 입력되는 데이터를 압축하여 저장함으로 더 많은 양의 데이터를 저장할 수 있고, 1차 메모리와 2차 메모리에서 서로 데이터를 이동하여 발생하는 데이터 처리 속도의 저하를 최소화할 수 있다.

Claims (16)

  1. 제1 메모리부와 제2 메모리부를 포함하는 메모리에서 데이터를 압축하여 관리하는 방법에 있어서,
    데이터를 임시로 저장하기 위한 복수의 압축 페이지 캐시를 포함하는 압축 페이지 캐시영역과, 압축 데이터를 저장하는 복수의 압축 페이지 블록을 포함하는 압축 페이지 블록영역으로 구성하는 메모리 영역을 상기 제1 메모리부에 할당하는 과정과,
    상기 제2 메모리부로부터 상기 제1 메모리부에 임의의 데이터가 입력되면 상기 입력된 데이터를 상기 압축 페이지 캐시영역에 임시 저장하고, 상기 임시 저장된 데이터를 압축하여 압축 데이터를 생성한 후 상기 압축 페이지 블록영역에 저장하는 데이터 입력 과정과,
    임의의 데이터에 대한 로드 요청이 있으면 상기 압축 페이지 블록영역에서 상기 로드 요청된 임의의 데이터에 해당하는 압축 데이터를 검색하고, 상기 검색된 압축 데이터를 상기 압축 페이지 캐시영역으로 이동하여 임시 저장한 후 압축을 해제하고, 상기 압축 해제된 데이터를 다시 임시 저장하는 데이터 로드 과정을 포함하는 것을 특징으로 데이터 압축 관리 방법.
  2. 제1항에 있어서,
    상기 데이터 입력 과정은,
    상기 데이터를 미리 지정되는 압축기법으로 압축하여 압축 데이터를 생성하는 단계와,
    상기 압축 데이터의 크기와 상기 데이터의 크기를 비교하는 단계와,
    상기 압축 데이터의 크기가 상기 데이터의 크기를 초과하면, 상기 압축 데이터를 미리 지정되는 압축해제기법으로 압축 해제하여 상기 데이터를 생성하고, 상기 생성한 데이터를 저장하는 단계와,
    상기 압축 데이터의 크기가 상기 데이터의 크기 이하이면, 상기 압축 데이터를 저장하는 단계를 포함함을 특징으로 하는 데이터 압축 관리 방법.
  3. 제1항에 있어서,
    임의의 데이터에 대한 언로드 요청이 있으면 상기 압축 페이지 캐시영역에서 상기 언로드 요청된 임의의 데이터를 검색하고, 상기 검색된 데이터를 압축하여 압축 데이터를 생성한 후 상기 생성된 압축 데이터를 상기 압축 페이지 블록영역에 저장하는 데이터 언로드 과정을 더 포함하는 것을 특징으로 하는 데이터 압축 관리 방법.
  4. 제3항에 있어서,
    상기 검색된 압축 데이터는 상기 압축 페이지 캐시 영역에 포함된 압축 페이지 캐시들 중 비활성 압축 페이지 캐시에 임시 저장하고,
    상기 생성된 압축 데이터는 상기 압축 페이지 블록영역에 포함된 압축 페이지 블록에 저장하는 것을 특징으로 하는 데이터 압축 관리 방법.
  5. 제1항에 있어서,
    임의의 데이터에 대한 출력 요청이 있으면 상기 압축 페이지 블록 영역에서 상기 출력 요청된 임의의 데이터에 해당하는 압축 데이터를 검색하고, 상기 검색된 압축 데이터를 상기 압축 페이지 캐시영역에 임시 저장한 후 상기 임시 저장한 압축 데이터를 압축 해제하여 상기 제2 메모리부로 출력하는 데이터 출력 과정을 더 포함하는 것을 특징으로 하는 데이터 압축 관리 방법.
  6. 제5항에 있어서,
    상기 데이터 출력 과정은,
    임의의 데이터에 대한 출력 요청이 있으면 상기 압축 페이지 블록영역에 포함된 압축 페이지 블록에서 상기 출력 요청된 데이터에 대응되는 압축 데이터를 검색하는 단계와,
    상기 압축 페이지 캐시영역에 포함된 압축 페이지 캐시들 중 비활성 압축 페이지 캐시가 존재하면 상기 비활성 압축 페이지에 상기 검색한 압축 데이터를 임시 저장하는 단계와,
    상기 임시 저장한 압축 데이터를 압축 해제하여 상기 데이터를 생성한 후 상기 생성한 데이터를 출력하는 단계를 포함하는 것을 특징으로 하는 데이터 압축 관리 방법.
  7. 제4항 또는 제6항에 있어서,
    상기 비활성 압축 페이지 캐시가 존재하지 않으면 상기 압축 페이지 영역에서 데이터를 임시 저장중인 활성 압축 페이지 캐시들 중 어느 하나의 활성 압축 페이지 캐시를 선택하고, 상기 선택된 활성 압축 페이지 캐시에 포함된 데이터를 삭제하여 상기 검색한 압축 데이터를 임시 저장하는 단계를 더 포함하는 것을 특징으로 하는 데이터 압축 관리 방법.
  8. 메모리에서 데이터를 압축하여 관리하기 위한 장치에 있어서,
    데이터를 임시로 저장하기 위한 복수의 압축 페이지 캐시를 포함하는 압축 페이지 캐시영역과, 압축 데이터를 저장하는 복수의 압축 페이지 블록을 포함하는 압축 페이지 블록영역을 포함하는 제1 메모리부와,
    상기 데이터를 포함하는 복수의 페이지를 저장하는 제2 메모리부와,
    상기 제2 메모리부로부터 상기 제1 메모리부에 임의의 데이터가 입력되면 상기 입력된 데이터를 상기 압축 페이지 캐시영역에 임시 저장하고, 상기 임시 저장된 데이터를 압축하여 압축 데이터를 생성한 후 상기 압축 페이지 블록영역에 저장하고, 임의의 데이터에 대한 로드 요청이 있으면 상기 압축 페이지 블록영역에서 상기 로드 요청된 임의의 데이터에 해당하는 압축 데이터를 검색하고, 상기 검색된 압축 데이터를 상기 압축 페이지 캐시영역에 이동하여 임시 저장한 후 압축을 해제하고, 상기 압축 해제된 데이터를 다시 임시 저장하는 제어부를 포함하는 데이터 압축 관리 장치.
  9. 제8항에 있어서,
    상기 제어부는 임의의 데이터에 대한 언로드 요청이 있으면 상기 압축 페이지 캐시영역에서 상기 언로드 요청된 임의의 데이터를 검색하고, 상기 검색된 데이터를 압축하여 압축 데이터를 생성한 후 상기 생성된 압축 데이터를 상기 압축 페이지 블록영역에 저장하는 것을 특징으로 하는 데이터 압축 관리 장치.
  10. 제9항에 있어서,
    상기 검색된 압축 데이터는 상기 압축 페이지 캐시 영역에 포함된 압축 페이지 캐시들 중 비활성 압축 페이지 캐시에 임시 저장하고,
    상기 생성된 압축 데이터는 상기 압축 페이지 블록영역에 포함된 압축 페이지 블록에 저장하는 것을 특징으로 하는 데이터 압축 관리 장치.
  11. 제8항에 있어서,
    상기 제어부는 임의의 데이터에 대한 출력 요청이 있으면 상기 압축 페이지 블록 영역에서 상기 출력 요청된 임의의 데이터에 해당하는 압축 데이터를 검색하고, 상기 검색된 압축 데이터를 상기 압축 페이지 캐시영역에 임시 저장한 후 상기 임시 저장한 압축 데이터를 압축 해제하여 출력하는 것을 특징으로 하는 데이터 압축 관리 장치.
  12. 제8항에 있어서,
    상기 제어부는 임의의 데이터에 대한 출력 요청이 있으면 상기 압축 페이지 블록영역에 포함된 압축 페이지 블록에서 상기 출력 요청된 임의의 데이터에 대응되는 압축 데이터를 검색하고, 상기 압축 페이지 캐시영역에 포함된 압축 페이지 캐시들 중 비활성 압축 페이지 캐시가 존재하면 상기 비활성 압축 페이지에 상기 검색한 압축 데이터를 임시 저장하고, 상기 임시 저장한 압축 데이터를 압축 해제하여 상기 데이터를 생성한 후 상기 생성한 데이터를 출력하는 것을 특징으로 데이터 압축 관리 장치.
  13. 제10항 또는 제12항에 있어서,
    상기 제어부는 상기 비활성 압축 페이지 캐시가 존재하지 않으면 상기 압축 페이지 영역에서 데이터를 임시 저장중인 활성 압축 페이지 캐시들 중 어느 하나의 활성 압축 페이지 캐시를 선택하고, 상기 선택된 활성 압축 페이지 캐시에 포함된 데이터를 삭제하여 비활성 압축 페이지 캐시를 생성하는 것을 특징으로 하는 데이터 압축 관리 장치.
  14. 제8항에 있어서,
    상기 메모리부는 상기 데이터를 압축하고 압축 해제하기 위한 정보들을 포함하는 다수의 가상 페이지 엔트리 테이블을 포함하는 가상 페이지 테이블을 더 포함함을 특징으로 하는 데이터 압축 관리 장치.
  15. 제14항에 있어서,
    상기 가상 페이지 엔트리 테이블은 해당 압축 페이지의 크기를 나타내는 정보와 상기 압축 데이터가 저장된 압축 페이지 블록의 색인번호를 포함함을 특징으로 하는 데이터 압축 관리 장치.
  16. 제8항에 있어서,
    상기 메모리부는 상기 압축 페이지 블록영역에 포함된 각각의 상기 압축 페이지 블록의 사용여부를 나타내는 적어도 하나의 비트를 포함하는 압축 페이지 블록 비트맵을 더 포함함을 특징으로 하는 데이터 압축 관리 장치.
KR1020060117006A 2006-11-24 2006-11-24 데이터를 압축하여 관리하는 메모리 및 그 방법 KR100849305B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020060117006A KR100849305B1 (ko) 2006-11-24 2006-11-24 데이터를 압축하여 관리하는 메모리 및 그 방법
US11/945,079 US8037255B2 (en) 2006-11-24 2007-11-26 Memory and method for data compression and management

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060117006A KR100849305B1 (ko) 2006-11-24 2006-11-24 데이터를 압축하여 관리하는 메모리 및 그 방법

Publications (2)

Publication Number Publication Date
KR20080047096A KR20080047096A (ko) 2008-05-28
KR100849305B1 true KR100849305B1 (ko) 2008-07-29

Family

ID=39477223

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060117006A KR100849305B1 (ko) 2006-11-24 2006-11-24 데이터를 압축하여 관리하는 메모리 및 그 방법

Country Status (2)

Country Link
US (1) US8037255B2 (ko)
KR (1) KR100849305B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101467515B1 (ko) * 2010-11-23 2014-12-01 삼성전자 주식회사 스냅샷 이미지를 이용한 부팅 장치 및 방법
KR20160050917A (ko) * 2014-10-31 2016-05-11 에스케이텔레콤 주식회사 인-메모리 레이어 관리 장치 및 그를 위한 컴퓨터로 읽을 수 있는 기록 매체

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8595437B1 (en) 2008-11-21 2013-11-26 Nvidia Corporation Compression status bit cache with deterministic isochronous latency
US8700862B2 (en) 2008-12-03 2014-04-15 Nvidia Corporation Compression status bit cache and backing store
US9148172B2 (en) 2012-06-22 2015-09-29 Micron Technology, Inc. Data compression and management
KR20140035082A (ko) * 2012-09-13 2014-03-21 삼성전자주식회사 메모리 관리방법
US8898118B2 (en) * 2012-11-30 2014-11-25 International Business Machines Corporation Efficiency of compression of data pages
KR102005227B1 (ko) 2013-03-12 2019-07-30 삼성전자 주식회사 데이터 처리 시스템과 이의 동작 방법
EP4145295A1 (en) * 2013-10-18 2023-03-08 Samsung Electronics Co., Ltd. Memory compression method of electronic device and apparatus thereof
KR102114388B1 (ko) 2013-10-18 2020-06-05 삼성전자주식회사 전자 장치의 메모리 압축 방법 및 장치
KR101573379B1 (ko) * 2014-06-30 2015-12-03 전자부품연구원 압축 가속 장치 및 이에 적용되는 압축 가속기
KR102314138B1 (ko) 2015-03-05 2021-10-18 삼성전자 주식회사 모바일 장치 및 모바일 장치의 데이터 관리 방법
US10095624B1 (en) * 2017-04-28 2018-10-09 EMC IP Holding Company LLC Intelligent cache pre-fetch
US20230205704A1 (en) * 2021-12-23 2023-06-29 Intel Corporation Distributed compression/decompression system
CN117666929A (zh) * 2022-08-29 2024-03-08 华为技术有限公司 一种数据存储方法及相关装置
KR102561316B1 (ko) * 2023-03-20 2023-07-31 메티스엑스 주식회사 전자 장치 및 이를 포함하는 컴퓨팅 시스템

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR980010784A (ko) * 1996-07-24 1998-04-30 제프리 엘. 포먼 압축된 데이터 캐쉬 저장 시스템
KR20040107343A (ko) * 2003-06-05 2004-12-20 캐리 컴퓨터 이엔지. 컴퍼니 리미티드 전송속도를 개선시킨 저장장치
US6883079B1 (en) * 2000-09-01 2005-04-19 Maxtor Corporation Method and apparatus for using data compression as a means of increasing buffer bandwidth

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5490260A (en) * 1990-12-14 1996-02-06 Ceram, Inc. Solid-state RAM data storage for virtual memory computer using fixed-sized swap pages with selective compressed/uncompressed data store according to each data size
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR980010784A (ko) * 1996-07-24 1998-04-30 제프리 엘. 포먼 압축된 데이터 캐쉬 저장 시스템
US6883079B1 (en) * 2000-09-01 2005-04-19 Maxtor Corporation Method and apparatus for using data compression as a means of increasing buffer bandwidth
KR20040107343A (ko) * 2003-06-05 2004-12-20 캐리 컴퓨터 이엔지. 컴퍼니 리미티드 전송속도를 개선시킨 저장장치

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101467515B1 (ko) * 2010-11-23 2014-12-01 삼성전자 주식회사 스냅샷 이미지를 이용한 부팅 장치 및 방법
KR20160050917A (ko) * 2014-10-31 2016-05-11 에스케이텔레콤 주식회사 인-메모리 레이어 관리 장치 및 그를 위한 컴퓨터로 읽을 수 있는 기록 매체
KR102167791B1 (ko) 2014-10-31 2020-10-19 에스케이 텔레콤주식회사 인-메모리 레이어 관리 장치 및 그를 위한 컴퓨터로 읽을 수 있는 기록 매체

Also Published As

Publication number Publication date
US20080133855A1 (en) 2008-06-05
KR20080047096A (ko) 2008-05-28
US8037255B2 (en) 2011-10-11

Similar Documents

Publication Publication Date Title
KR100849305B1 (ko) 데이터를 압축하여 관리하는 메모리 및 그 방법
EP3108371B1 (en) Modified memory compression
US5237460A (en) Storage of compressed data on random access storage devices
US8554745B2 (en) Nearstore compression of data in a storage system
US7412562B2 (en) Using non-volatile memories for disk caching of partition table entries
US6360300B1 (en) System and method for storing compressed and uncompressed data on a hard disk drive
EP3008602B1 (en) Page-based compressed storage management
US20070005911A1 (en) Operating System-Based Memory Compression for Embedded Systems
US20020178333A1 (en) Method and system for adding compressed page tables to an operating system
US6349375B1 (en) Compression of data in read only storage and embedded systems
US10747678B2 (en) Storage tier with compressed forward map
JP6608468B2 (ja) ストレージ装置及びその制御方法
EP3278229B1 (en) Compressed pages having data and compression metadata
KR20070031647A (ko) 플래시 메모리 장치에 압축 데이터를 기록하는 방법 및상기 기록된 데이터를 읽는 방법, 그리고 상기 방법을이용하는 플래시 메모리 장치
US10776262B2 (en) Memory system and operating method thereof
US8131918B2 (en) Method and terminal for demand paging at least one of code and data requiring real-time response
US10444991B1 (en) In-place resumable partial decompression
KR100852729B1 (ko) 데이타 압축 관리장치
US20020178332A1 (en) Method and system to pre-fetch compressed memory blocks suing pointers
EP0490239A2 (en) Storage of compressed data on random access storage devices
CN111798366A (zh) 基于小内存嵌入式设备加快png显示速度的方法及终端
WO2019124320A1 (ja) ストレージコントローラ、ストレージアレイ装置、データ格納方法、および記憶媒体
US20240004549A1 (en) Memory system
US20240201894A1 (en) Low overhead page recompression
CN117743197A (zh) 用于在内存中执行数据压缩的系统和方法

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: 20130627

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140627

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150629

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160629

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170629

Year of fee payment: 10