KR102011135B1 - 모바일 장치 및 그것의 스왑을 통한 데이터 관리 방법 - Google Patents

모바일 장치 및 그것의 스왑을 통한 데이터 관리 방법 Download PDF

Info

Publication number
KR102011135B1
KR102011135B1 KR1020120143722A KR20120143722A KR102011135B1 KR 102011135 B1 KR102011135 B1 KR 102011135B1 KR 1020120143722 A KR1020120143722 A KR 1020120143722A KR 20120143722 A KR20120143722 A KR 20120143722A KR 102011135 B1 KR102011135 B1 KR 102011135B1
Authority
KR
South Korea
Prior art keywords
data
page data
swap
type
page
Prior art date
Application number
KR1020120143722A
Other languages
English (en)
Other versions
KR20140075416A (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 KR1020120143722A priority Critical patent/KR102011135B1/ko
Priority to AU2013263762A priority patent/AU2013263762A1/en
Priority to DE102013113189.1A priority patent/DE102013113189A1/de
Priority to TW102144510A priority patent/TWI578225B/zh
Priority to NL2011914A priority patent/NL2011914B1/en
Priority to US14/101,934 priority patent/US9116631B2/en
Priority to CN201310675037.XA priority patent/CN103870212B/zh
Priority to JP2013256247A priority patent/JP2014116017A/ja
Publication of KR20140075416A publication Critical patent/KR20140075416A/ko
Application granted granted Critical
Publication of KR102011135B1 publication Critical patent/KR102011135B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/17Embedded application
    • G06F2212/171Portable consumer electronics, e.g. mobile phone
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • 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

Abstract

본 발명은 모바일 장치에 관한 것이다. 본 발명의 모바일 장치는, 스토리지, 스왑 빅틈 버퍼와 일반 데이터 영역으로 구분되는 버퍼 메모리, 일반 데이터 영역에 저장된 페이지 데이터의 스왑이 요구될 때 페이지 데이터를 압축하여 스왑 빅틈 버퍼에 저장하도록 구성되는 어플리케이션 프로세서로 구성된다. 어플리케이션 프로세서는 스왑 빅틈 버퍼에 저장된 데이터가 특정 조건을 만족할 때, 스왑 빅틈 버퍼에 저장된 데이터를 상기 스토리지로 스왑 되도록 한다.

Description

모바일 장치 및 그것의 스왑을 통한 데이터 관리 방법{MOBILE DEVICE AND METHOD OF MANAGING DATA USING SWAP THEREOF}
본 발명은 모바일 장치에 관한 것으로, 더 상세하게는 스왑(swap)을 통한 데이터 관리 방법에 관한 것이다.
근래에, 스마트폰, 스마트 패드, 노트북 컴퓨터 등과 같은 휴대용 정보기기의 사용이 급증하고 있다. 반도체 기술 및 통신 기술의 발전은, 휴대용 정보기기의 정보 처리량의 증가를 유발하고 있다. 휴대용 정보기기의 정보 처리량이 증가하면서, 휴대용 정보기기는 스마트 기기라는 새로운 형태로 발전하고 있다.
스마트 기기는 사용자가 자유롭게 어플리케이션을 설치하고, 설치된 어플리케이션을 이용하여 정보를 생산 및 가공할 수 있는 기능을 지원한다. 스마트 기기의 발전과 함께, 스마트 기기에서 구동되는 어플리케이션의 제조 기술도 발전하고 있다.
어플리케이션의 제조 기술이 발전하면서, 어플리케이션 자체의 용량, 어플리케이션이 취급하는 콘텐츠의 용량, 그리고 어플리케이션이 소모하는 스마트 기기의 자원이 급증하고 있다. 그러나, 스마트 기기의 저장 용량 및 자원은 한정되어 있으며, 스마트 기기의 저장 용량 및 자원을 향상시키는 것은 스마트 기기의 가격의 상승을 초래한다.
따라서, 스마트 기기의 한정된 저장 용량 및 자원을 이용하여, 다양한 어플리케이션들을 차질 없이 구동하는 새로운 기술이 요구되고 있다.
본 발명의 목적은, 향상된 동작 성능을 갖는 응용 프로세서의 데이터 관리 방법 및 응용 프로세서를 포함하는 모바일 장치를 제공하는 데에 있다.
본 발명의 실시 예에 따른 모바일 장치는, 데이터를 저장하기 위한 스토리지; 스왑 빅틈 버퍼와 일반 데이터 영역으로 구분되는 버퍼 메모리; 상기 일반 데이터 영역에 저장된 페이지 데이터의 스왑이 요구될 때, 상기 페이지 데이터를 압축하여 상기 스왑 빅틈 버퍼에 저장하도록 구성되는 어플리케이션 프로세서를 포함하고, 어플리케이션 프로세서는 상기 스왑 빅틈 버퍼에 저장된 데이터가 특정 조건을 만족할 때, 상기 스왑 빅틈 버퍼에 저장된 데이터를 상기 스토리지로 스왑 되도록 한다.
실시 예로서, 상기 어플리케이션 프로세서는 다이렉트 메모리 액세스(DMA)를 포함하고, 상기 스왑 빅틈 버퍼에 저장된 데이터가 상기 다이렉트 메모리 액세스(DMA)의 데이터 전송 단위인 청크(chunk)를 형성할 때, 상기 다이렉트 메모리 액세스(DMA)는 상기 스왑 빅틈 버퍼에 저장된 데이터를 상기 스토리지로 스왑하도록 구성된다.
실시 예로서, 상기 스토리지는 플래시 메모리이고, 상기 버퍼 메모리는 DRAM인 것을 특징으로 한다.
실시 예로서, 상기 어플리케이션 프로세서가 상기 스왑 빅틈 버퍼에 저장된 데이터를 필요로 할 때, 상기 스왑 빅틈 버퍼에 저장된 데이터를 읽고, 상기 읽은 데이터의 압축을 해제하고, 그리고 상기 압축이 해제된 데이터를 사용하도록 구성된다.
실시 예로서, 상기 어플리케이션 프로세서는 상기 일반 데이터 영역에 저장된 페이지 데이터의 스왑이 요구될 때, 상기 페이지 데이터의 타입에 따라 상기 페이지 데이터를 상기 스트리지로 바로 스왑하는 즉시 스왑(instant swap) 및 상기 페이지 데이터를 압축한 후 상기 스왑 빅틈 버퍼에 저장하고 상기 스왑 빅틈 버퍼에 저장된 데이터를 상기 스토리지로 스왑하는 느린 스왑(lazy swap) 중 하나를 수행하도록 구성된다.
실시 예로서, 상기 어플리케이션 프로세서는 상기 스왑이 요구되는 페이지 데이터의 압축률이 문턱값 이하일 때, 상기 스왑 빅틈 버퍼를 경유하지 않고 상기 스토리지로 즉시 스왑하도록 구성된다.
본 발명의 다른 예에 따른 모바일 장치는, 데이터를 저장하기 위한 불휘발성 메모리; 스왑 빅틈 버퍼와 일반 데이터 영역으로 분할되는 동적 랜덤 액세스 메모리(DRAM); 그리고 상기 불휘발성 메모리 및 상기 동적 랜덤 액세스 메모리와 연결되는 어플리케이션 프로세서를 포함하고, 상기 어플리케이션 프로세서는 상기 일반 데이터 영역에 저장된 페이지 데이터의 스왑이 요구될 때, 상기 페이지 데이터의 타입에 따라 상기 페이지 데이터를 상기 불휘발성 메모리로 바로 스왑하는 즉시 스왑(instant swap) 및 상기 페이지 데이터를 압축한 후 상기 스왑 빅틈 버퍼에 저장하고 상기 스왑 빅틈 버퍼에 저장된 데이터를 상기 불휘발성 메모리로 스왑하는 느린 스왑(lazy swap) 중 하나를 수행하도록 구성된다.
실시 예로서, 상기 어플리케이션 프로세서는 상기 페이지 데이터의 압축률에 따라 상기 페이지 데이터의 타입을 판별하도록 더 구성된다.
실시 예로서, 상기 어플리케이션 프로세서는 다이렉트 메모리 액세스 컨트롤러(DMAC)를 포함하고, 상기 즉시 스왑은 상기 어플리케이션 프로세서의 중앙처리장치에 의해 수행되고, 상기 느린 스왑은 상기 DMAC에 의해 수행된다.
실시 예로서, 상기 느린 스왑은 상기 스왑 빅틈 버퍼에 저장된 데이터가 그룹화되어 형성하는 데이터 청크의 단위로 수행된다.
본 발명의 실시 예에 따른 프로세서의 데이터 관리 방법은, DRAM(DRAM)에 저장된 페이지 데이터의 데이터 타입을 판별하는 단계; 그리고 상기 판별된 데이터 타입이 느린 타입이면 상기 페이지 데이터의 늦은 스왑(lazy swap)을 수행하고, 상기 판별된 데이터 타입이 즉시 타입이면 상기 페이지 데이터의 즉시 스왑(instant swap)을 수행하는 단계를 포함한다.
실시 예로서, 상기 데이터 타입을 판별하는 단계는, 상기 DRAM으로부터 상기 페이지 데이터를 읽고, 상기 읽어진 페이지 데이터를 압축하는 단계; 상기 페이지 데이터가 압축될 때의 압축률이 문턱값보다 높은지 판별하는 단계; 그리고 상기 압축률이 상기 문턱값보다 높으면 상기 페이지 데이터의 데이터 타입을 상기 느린 타입으로 판별하고, 상기 압축률이 상기 문턱값보다 높지 않으면 상기 페이지 데이터의 데이터 타입을 상기 즉시 타입으로 판별하는 단계를 포함한다.
실시 예로서, 상기 페이지 데이터의 데이터 타입을 저장하는 단계를 더 포함한다.
실시 예로서, 상기 저장된 데이터 타입을 읽는 단계; 상기 읽어진 데이터 타입이 상기 느린 타입이면 상기 페이지 데이터를 상기 DRAM으로부터 읽고 상기 읽어진 페이지 데이터를 압축하고, 상기 읽어진 데이터 타입이 상기 느린 타입이 아니면 상기 페이지 데이터의 압축을 생략하는 단계를 더 포함한다.
실시 예로서, 상기 페이지 데이터의 압축률을 저장하는 단계를 더 포함한다.
실시 예로서, 상기 저장된 압축률을 읽는 단계; 상기 읽어진 압축률이 상기 문턱값보다 높으면 상기 페이지 데이터를 상기 DRAM으로부터 읽고 상기 읽어진 페이지 데이터를 압축하고, 상기 읽어진 압축률이 상기 문턱값보다 높지 않으면 상기 페이지 데이터의 압축을 생략하는 단계를 더 포함한다.
실시 예로서, 상기 페이지 데이터 또는 상기 페이지 데이터와 연관된 프로세스의 특성을 검출하는 단계; 그리고 상기 검출 결과에 따라 상기 문턱값을 조절하는 단계를 더 포함한다.
실시 예로서, 상기 데이터 타입을 판별하는 단계는, 상기 페이지 데이터의 압축을 시작하는 단계; 상기 페이지 데이터의 일부분의 압축률이 문턱값보다 높은지 판별하는 단계; 그리고 상기 압축률이 상기 문턱값보다 높으면 상기 압축을 지속하고 상기 페이지 데이터의 데이터 타입을 상기 느린 타입으로 판별하고, 상기 압축률이 상기 문턱값보다 높지 않으면 상기 압축을 중지하고 상기 페이지 데이터의 데이터 타입을 상기 즉시 타입으로 판별하는 단계를 포함한다.
실시 예로서, 상기 판별된 데이터 타입이 느린 타입이면 상기 페이지 데이터의 늦은 스왑(lazy swap)을 수행하고, 상기 판별된 데이터 타입이 즉시 타입이면 상기 페이지 데이터의 즉시 스왑(instant swap)을 수행하는 단계는, 상기 판별된 데이터 타입이 상기 즉시 타입이면, 상기 페이지 데이터를 상기 DRAM으로부터 읽는 단계; 상기 읽어진 페이지 데이터를 스토리지에 저장하는 단계; 그리고 상기 페이지 데이터를 상기 DRAM으로부터 삭제하는 단계를 포함한다.
실시 예로서, 상기 판별된 데이터 타입이 느린 타입이면 상기 페이지 데이터의 늦은 스왑(lazy swap)을 수행하고, 상기 판별된 데이터 타입이 즉시 타입이면 상기 페이지 데이터의 즉시 스왑(instant swap)을 수행하는 단계는, 상기 판별된 데이터 타입이 상기 느린 타입이면, 상기 페이지 데이터가 압축된 압축 페이지 데이터를 상기 DRAM의 스왑 빅틈 버퍼에 저장하는 단계; 그리고 상기 페이지 데이터를 상기 DRAM으로부터 삭제하는 단계를 포함하고, 상기 DRAM은 상기 페이지 데이터를 저장하는 일반 데이터 영역 및 상기 스왑 빅틈 버퍼로 분할되어 관리된다.
실시 예로서, 상기 스왑 빅틈 버퍼는 복수의 엔트리 영역들을 포함하고, 각 엔트리 영역은 복수의 페이지 엔트리들을 저장하도록 구성되고, 상기 압축 페이지 데이터는 상기 복수의 엔트리 영역들 중 선택된 엔트리 영역의 페이지 엔트리로 저장된다.
실시 예로서, 각 엔트리 영역의 페이지 엔트리들로 저장되는 압축 페이지 데이터는 링크드 리스트로 관리된다.
실시 예로서, 상기 스왑 빅틈 버퍼의 스왑이 요구될 때, 상기 복수의 엔트리 영역들로부터 각각 압축 페이지 데이터를 선택하는 단계; 상기 선택된 압축 페이지 데이터를 스토리지에 복사하도록 다이렉트 메모리 액세스 컨트롤러(DMAC)를 제어하는 단계; 그리고 상기 선택된 압축 페이지 데이터를 상기 복수의 엔트리 영역들로부터 삭제하는 단계를 더 포함한다.
실시 예로서, 상기 선택되는 압축 페이지 데이터는 가장 오래 전에 상기 스왑 빅틈 버퍼에 저장된 압축 페이지 데이터이다.
실시 예로서, 상기 스왑 빅틈 버퍼에 저장된 상기 압축 페이지 데이터가 요구될 때, 상기 스왑 빅틈 버퍼로부터 상기 압축 페이지 데이터를 읽는 단계; 상기 읽어진 압축 페이지 데이터의 압축을 해제하는 단계; 상기 압축 해제된 페이지 데이터를 상기 일반 데이터 영역에 저장하는 단계; 그리고 상기 스왑 빅틈 버퍼에 저장된 상기 압축 페이지 데이터를 삭제하는 단계를 더 포함한다.
실시 예로서, 상기 늦은 스왑은 다이렉트 메모리 액세스(DMA)를 이용하여 수행되고, 상기 즉시 스왑은 프로세서에 의해 수행된다.
본 발명의 실시 예들에 따르면, DRAM(DRAM)에 저장된 페이지 데이터는 데이터 타입에 따라 즉시 스왑(instant swap) 또는 느린 스왑(lazy swap) 된다. 느린 스왑은 스왑 빅틈 버퍼를 경유하여 수행된다. 따라서, 호출된 페이지 데이터가 스왑 빅틈 버퍼에 저장되어 있는 경우, 즉시 DRAM으로 복구될 수 있다. 따라서, 향상된 동작 속도를 갖고, 스래싱(thrashing)을 방지하는 프로세서의 데이터 관리 방법 및 프로세서를 포함하는 모바일 장치가 제공된다.
본 발명의 실시 예들에 따르면, 느린 스왑은 어플리케이션 프로세서의 다이렉트 메모리 액세스(DMA)를 이용하여 수행된다. 따라서, 전력 소모가 감소되고, 동작 성능이 향상된 프로세서의 데이터 관리 방법 및 프로세서를 포함하는 모바일 장치가 제공된다.
도 1은 본 발명의 실시 예에 따른 모바일 장치를 보여주는 블록도이다.
도 2는 도 1에 도시된 DRAM과 플래시 메모리의 데이터 영역 구조를 개념적으로 보여주는 블록도이다.
도 3은 도 1에 도시된 모바일 장치의 데이터 관리 방법을 보여주는 순서도이다.
도 4는 도 3에 도시된 S110 단계 즉, 어플리케이션 프로세서(1100)가 스왑이 요구되는지를 판별하는 방법을 보여주는 순서도이다.
도 5는 도 3에 도시된 S120 단계, 즉 어플리케이션 프로세서가 페이지 데이터의 데이터 타입을 판별하는 실시 예를 보여주는 순서도이다.
도 6은 도 5에서 판별한 데이터 타입이 로그 정보로 저장된 후에, 데이터 타입의 판별이 다시 요구될 때 중앙처리장치가 데이터 타입을 판별하는 방법을 보여주는 순서도이다.
도 7은 도 3에 도시된 S120 단계, 즉 어플리케이션 프로세서가 페이지 데이터의 데이터 타입을 판별하는 다른 실시예를 보여주는 순서도이다.
도 8은 도 7에서 판별한 데이터 타입이 로그 정보로 저장된 후에, 데이터 타입의 판별이 다시 요구될 때 중앙처리장치가 데이터 타입을 판별하는 방법을 보여주는 순서도이다.
도 9는 도 1에 도시된 중앙처리장치가 문턱값을 조절하는 예를 보여주는 순서도이다.
도 10은 본 발명에 따른 모바일 장치의 다른 실시 예를 보여주는 블록도이다.
도 11은 도 10에 도시된 DRAM, SRAM, 그리고 플래시 메모리의 데이터 영역 구조를 개념적으로 보여주는 블록도이다.
도 12는 도 10에 도시된 어플리케이션 프로세서가 페이지 데이터의 데이터 타입을 판별하는 예를 보여주는 순서도이다.
도 13은 도 12에 도시된 S660 단계, 즉 즉시 스왑 방법을 보여주는 순서도이다.
도 14는 도 12에 도시된 S640 단계, 즉 늦은 스왑 방법을 보여주는 순서도이다.
도 15 및 도 16은 도 11의 DRAM에서 즉시 스왑 및 느린 스왑이 수행되는 예들을 보여주는 도면들이다.
도 17은 스왑된 페이지 데이터를 복원하는 방법을 보여주는 순서도이다.
이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다.
도 1은 본 발명의 실시 예에 따른 모바일 장치를 보여주는 블록도이다. 도 1을 참조하면, 모바일 장치(1000)는 어플리케이션 프로세서(AP, 1100), DRAM(1200), 플래시 메모리(1300), 모뎀(1400), 그리고 사용자 인터페이스(1500)를 포함한다.
어플리케이션 프로세서(1100)는 모바일 장치(1000)의 제반 동작을 제어하고, 논리 연산을 수행할 수 있다. 예를 들어, 어플리케이션 프로세서(1100)는 시스템-온-칩(SoC, System-on-Chip)으로 구성될 수 있다.
계속해서 도 1을 참조하면, 어플리케이션 프로세서(1100)는 버스(1110), 중앙처리장치(CPU, 1120), 다이렉트 메모리 액세스(DMA, 1130), 압축 해제기(1140), DRAM 인터페이스(1150), SRAM(1160), 그리고 플래시 인터페이스(1170)를 포함한다. 도 1에서, 어플리케이션 프로세서(1100)가 모뎀(1400) 및 사용자 인터페이스(1500)와 통신하는 인터페이스들은 생략되어 있다.
버스(1110)는 어플리케이션 프로세서(1100)의 구성 요소들 사이에 채널들을 제공할 수 있다. 중앙처리장치(1120)는 어플리케이션 프로세서(1100)의 메인 연산, 데이터 처리 및 제어를 수행하는 핵심 요소일 수 있다. 다이렉트 메모리 액세스(DMA, 1130)는 메모리들 사이의 데이터 교환을 제어할 수 있다.
DMA(1130)는 중앙처리장치(1120)의 제어에 따라 동작할 수 있다. 예를 들어, DMA(1130)는 중앙처리장치(1120)에 의해 프로그램되고, 프로그램된 바에 따라 동작할 수 있다. 프로그램된 DMA(1130)는 중앙처리장치(1120)의 제어 없이 모바일 장치(1000)의 저장 요소들 사이의 데이터 흐름을 제어할 수 있다. 예를 들어, DMA(1130)는 DRAM(1200), SRAM(1160), 그리고 플래시 메모리(1300) 중 적어도 둘 사이의 데이터 흐름을 제어할 수 있다.
압축 해제기(1140)는 하드웨어(HW)로 구현될 수 있으며, 압축된 페이지 데이터의 압축을 해제하도록 구성될 수 있다. DRAM 인터페이스(1150)는 DRAM(1200)과의 통신을 지원할 수 있다. SRAM(1160)는 어플리케이션 프로세서(1100)의 캐시 메모리, 버퍼 메모리, 또는 임시 메모리로 사용될 수 있다. 플래시 인터페이스(1170)는 플래시 메모리(1300)와의 통신을 지원할 수 있다.
계속해서 도 1을 참조하면, DRAM(1200)은 모바일 장치(1000)의 버퍼 메모리 또는 동작 메모리로 사용될 수 있다. 예시적으로, 모바일 장치(1000)의 동작 메모리는 DRAM(1200)인 것으로 도시되어 있다. 그러나, 모바일 장치(1000)의 동작 메모리는 SRAM, 노어 플래시 메모리, 자기 랜덤 액세스 메모리(MRAM), 상 변화 랜덤 액세스 메모리(PRAM), 강유전체 랜덤 액세스 메모리(FRAM), 저항성 랜덤 액세스 메모리(RRAM) 등과 같이, 휘발성 및 불휘발성 여부에 관계 없이, 랜덤 액세스 기능을 지원하는 다양한 메모리들 중 적어도 하나로 응용 및 대체될 수 있다.
플래시 메모리(1300)는 스토리지(storage)로 사용될 수 있다. 스토리지는 데이터의 장기적인 보존을 목적으로 하는 저장소일 수 있다. 플래시 메모리(1300)는 자기 랜덤 액세스 메모리(MRAM), 상 변화 랜덤 액세스 메모리(PRAM), 강유전체 랜덤 액세스 메모리(FRAM), 저항성 랜덤 액세스 메모리(RRAM) 등과 같은 불휘발성 메모리들을 포함하는 솔리드 스테이트 드라이브(SSD, Solid State Drive), 또는 하드 디스크 드라이브(HDD)로 응용 및 대체될 수 있다.
모뎀(1400)은 어플리케이션 프로세서(1100)의 제어에 따라 외부 장치와 무선 또는 유선 통신을 수행할 수 있다. 모뎀(1400)은 와이파이(Wifi), CDMA, GSM, LTE, 블루투스, NFC 등과 같은 다양한 통신 표준들 중 적어도 하나에 기반하여 통신을 수행할 수 있다. 예시적으로, 모뎀(1400)은 어플리케이션 프로세서(1100)와 함께 시스템-온-칩(SoC)을 구성할 수 있다.
사용자 인터페이스(1500)는 외부와 신호를 교환할 수 있다. 예를 들어, 사용자 인터페이스(1500)는 키보드, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서 등과 같은 사용자 입력 인터페이스들을 포함할 수 있다. 사용자 인터페이스(1500)는 LCD (Liquid Crystal Display), OLED (Organic Light Emitting Diode), AMOLED (Active Matrix OLED), LED, 스피커, 모터 등과 같은 사용자 출력 인터페이스들을 포함할 수 있다.
도 2는 도 1에 도시된 DRAM과 플래시 메모리의 데이터 영역 구조를 개념적으로 보여주는 블록도이다. 도 2를 참조하면, DRAM(1200)은 스왑 빅틈 버퍼(SVB; Swap Victim Buffer, 1230) 및 일반 데이터 영역(NDA; Normal Data Area, 1250)으로 분할될 수 있다.
스왑 빅틈 버퍼(1230)는 일반 데이터 영역(1250)에 저장된 데이터가 플래시 메모리(1300)로 스왑(swap)될 때, 스왑되는 데이터가 저장되는 영역일 수 있다. 예를 들어, 일반 데이터 영역(1250)에 저장된 데이터 중 적어도 일부는 스왑 빅틈 버퍼(1230)로 이동된 후 플래시 메모리(1300)로 이동될 수 있다.
일반 데이터 영역(1250)은 어플리케이션 프로세서(1100)에 의해 구동되는 프로세스들(또는 어플리케이션들)이 사용하는 영역일 수 있다. 예를 들어, 프로세스들의 코드들, 프로세스들에 의해 처리되는 데이터가 일반 데이터 영역(1250)에 저장될 수 있다.
예를 들어, DRAM(1200)에서 데이터를 페이지의 단위로 관리될 수 있다. 페이지는 모바일 장치(1000)의 운영 체제(OS)에서 정의되는 사이즈를 가질 수 있다. 프로세스들의 코드들이나 데이터는 페이지의 단위로 DRAM(1200)에 저장되고, DRAM(1200)으로부터 읽어질 수 있다. 이하에서, 페이지의 단위로 액세스되는 데이터를 페이지 데이터라 부르기로 한다.
플래시 메모리(1300)는 모바일 장치(1000)의 스토리지로 사용될 수 있다. 플래시 메모리(1300)는 사용자 데이터 및 스왑 데이터를 저장할 수 있다. 예를 들어, 어플리케이션 프로세서(1100)는 처리되는 데이터(예를 들어, 프로세스 자체의 데이터 또는 프로세스에 의해 처리되는 데이터를 포함하는 데이터)를 DRAM(1200)에 저장하고, 처리되는 데이터의 일부를 플래시 메모리(1300)로 스왑(swap)할 수 있다. 스왑 데이터는 어플리케이션 프로세서(1100)에 의해 스왑된 데이터일 수 있다.
도 3은 도 1에 도시된 모바일 장치의 데이터 관리 방법을 보여주는 순서도이다. 예를 들어, 도 1의 어플리케이션 프로세서(1100)의 데이터 관리 방법이 도 3에 도시된다.
S110 단계에서는, 스왑이 요구되는지가 판별된다. 어플리케이션 프로세서(1100)는 일반 데이터 영역(1250)에 저장된 페이지 데이터의 스왑이 요구되는지 판별할 수 있다. 스왑이 요구되지 않으면, 데이터 관리는 종료될 수 있다. 스왑이 요구되면, S120 단계가 수행된다. 스왑이 요구되는지 판별하는 S110 단계는 도 4를 참조하여 더 상세하게 설명된다.
S120 단계에서는, DRAM(1200)에 저장된 페이지 데이터의 타입이 판별된다. 예를 들어, 어플리케이션 프로세서(1100)는 일반 데이터 영역(1250)에 저장된 페이지 데이터 중 스왑의 대상으로 선택된 페이지 데이터의 타입을 판별할 수 있다. 페이지 데이터의 타입을 판별하는 동작은 도 5 내지 도 8, 그리고 도 12를 참조하여 더 상세하게 설명된다.
S130 단계에서는, S120 단계에서 결정된 데이터 타입에 따라 늦은 스왑(lazy swap) 또는 즉시 스왑(instant swap)이 수행된다. 스왑되는 페이지 데이터의 타입에 따라 서로 다른 방식으로 스왑을 수행하는 동작은 도 13 내지 도 16를 참조하여 더 상세하게 설명된다.
도 4는 도 3에 도시된 S110 단계 즉, 어플리케이션 프로세서(1100)가 스왑이 요구되는지를 판별하는 방법을 보여주는 순서도이다. 도 1 및 도 4를 참조하면, S210 단계에서는, DRAM(1200)의 새로운 할당이 요구되는지가 판별된다. 예를 들어, 어플리케이션 프로세서(1100)가 새로운 프로세스(또는 어플리케이션)를 로딩할 때, 로딩되는 프로세스(또는 어플리케이션)에 일반 데이터 영역(1250)의 적어도 하나의 페이지의 할당이 요구될 수 있다.
S220 단계에서는, DRAM(1200)의 자유 저장 공간이 충분한지가 판별된다. 어플리케이션 프로세서(1100)는 프로세스(또는 어플리케이션)에 일반 데이터 영역(1250)의 미리 정해진 수의 페이지들을 할당할 수 있다. 예를 들어, 어플리케이션 프로세서(1100)는 로딩되는 프로세스(또는 어플리케이션)의 실행 히스토리에 기반하여, 프로세스(또는 어플리케이션)에서 요구되는 페이지들의 수를 판별할 수 있다.
프로세스(또는 어플리케이션)에서 요구되는 페이지들의 용량이 일반 데이터 영역(1250)의 자유 저장 공간보다 적을 때, DRAM(1200)의 자유 저장 공간은 충분한 것으로 판별될 수 있다. 이때, S230 단계에서, 스왑이 요구되지 않는 것으로 판별될 수 있다.
프로세스(또는 어플리케이션)에서 요구되는 페이지들의 용량이 일반 데이터 영역(1250)의 자유 저장 공간보다 클 때, DRAM(1200)의 자유 저장 공간은 충분하지 않은 것으로 판별될 수 있다. 이때, S240 단계에서, 스왑이 요구되는 것으로 판별될 수 있다.
도 5는 도 3에 도시된 S120 단계, 즉 어플리케이션 프로세서가 페이지 데이터의 데이터 타입을 판별하는 실시 예를 보여주는 순서도이다.
S310 단계에서는, 일반 데이터 영역(1250)으로부터 페이지 데이터가 읽어지고, 읽어진 페이지 데이터가 압축된다. 예를 들어, 중앙처리장치(1120)는 스왑되는 것으로 선택된 페이지 데이터를 DRAM(1200)의 일반 데이터 영역(1250)으로부터 DRAM 인터페이스(1150)를 통해 읽을 수 있다. 중앙처리장치(1120)는 읽어진 페이지 데이터를 압축할 수 있다.
S320 단계에서는, 압축률이 문턱값보다 큰지가 판별된다. 예를 들어, 중앙처리장치(1120)는 읽어진 페이지 데이터의 압축을 수행한 후, 압축된 페이지 데이터의 압축률을 문턱값과 비교할 수 있다.
압축률이 문턱값보다 크지 않으면, S340 단계에서, 읽어진 페이지 데이터의 데이터 타입은 즉시 타입(instant type)으로 판별될 수 있다. 즉, 즉시 타입의 페이지 데이터는, 문턱값보다 낮은 압축률을 갖는 페이지 데이터일 수 있다. 예시적으로, 읽어진 페이지 데이터의 데이터 타입이 즉시 타입으로 판별되면, 읽어진 페이지 데이터가 압축된 압축 페이지 데이터는 폐기될 수 있다.
압축률이 문턱값보다 크면, S330 단계에서, 읽어진 페이지 데이터의 데이터 타입은 느린 타입(lazy type)으로 판별될 수 있다. 즉, 느린 타입의 페이지 데이터는 문턱값보다 큰 압축률을 갖는 페이지 데이터일 수 있다. 예시적으로, 읽어진 페이지 데이터의 데이터 타입이 느린 타입으로 판별되면, 읽어진 페이지 데이터가 압축된 압축 페이지 데이터가 스왑을 위해 사용될 수 있다.
S350 단계에서, 데이터 타입이 로그 정보로 저장된다. 예를 들어, 중앙처리장치(1120)는 페이지 데이터의 데이터 타입을 로그 정보로 SRAM(1160)에 저장할 수 있다. 중앙처리장치(1120)는 페이지 데이터를 사용하는 프로세스의 식별자, 페이지 데이터가 코드인지 데이터인지를 가리키는 정보, 그리고 페이지 데이터의 데이터 타입을 로그 정보로 저장할 수 있다. SRAM(1160)에 저장된 로그 정보는 주기적으로, 미리 정해진 스케줄에 따라, 또는 특정한 이벤트(예를 들어, 전원 오프 등)의 발생에 응답하여 플래시 메모리(1300)로 백업될 수 있다. 모바일 장치(1000)의 전원이 오프된 후 다시 온 될 때, 플래시 메모리(1300)에 백업된 로그 정보는 SRAM(1160)으로 복사될 수 있다.
도 6은 도 5에서 판별한 데이터 타입이 로그 정보로 저장된 후에, 데이터 타입의 판별이 다시 요구될 때 중앙처리장치가 데이터 타입을 판별하는 방법을 보여주는 순서도이다.
S360 단계에서는, 페이지 데이터의 데이터 타입이 로그 정보로부터 읽어진다. 중앙처리장치(1120)는 SRAM(1160)에 저장된 로그 정보를 읽고, 로그 정보가 포함하는 페이지 데이터의 데이터 타입을 식별할 수 있다.
S370 단계에서는, 읽어진 데이터 타입이 느린 타입(lazy type)인지가 판별된다. 데이터 타입이 느린 타입이 아니면, 일반 데이터 영역(1250)에 저장된 페이지 데이터의 압축이 생략되고, 데이터 타입의 판별 동작이 종료될 수 있다. 데이터 타입이 노린 타입이면, S380 단계에서, 일반 데이터 영역(1250)으로부터 페이지 데이터가 읽어지고, 읽어진 페이지 데이터가 압축될 수 있다. 압축 페이지 데이터는 스왑을 위해 사용될 수 있다.
도 7은 도 3에 도시된 S120 단계, 즉 어플리케이션 프로세서가 페이지 데이터의 데이터 타입을 판별하는 다른 실시예를 보여주는 순서도이다. 도 7에 도시된 S410 단계 내지 S440 단계는 도 5의 S310 단계 내지 S340 단계와 동일한 방법으로 수행된다. 따라서, S410 단계 내지 S440 단계에 대한 상세한 설명은 생략된다.
S450 단계에서, 페이지 데이터의 압축률이 로그 정보로 저장된다. 예를 들어, 중앙처리장치(1120)는 페이지 데이터의 압축률(compression ratio)을 로그 정보로 SRAM(1160)에 저장할 수 있다. 중앙처리장치(1120)는 페이지 데이터를 사용하는 프로세스의 식별자, 페이지 데이터가 코드인지 데이터인지를 가리키는 정보, 그리고 페이지 데이터의 압축률을 로그 정보로 저장할 수 있다. 도 8은 도 7에서 판별한 데이터 타입이 로그 정보로 저장된 후에, 데이터 타입의 판별이 다시 요구될 때 중앙처리장치가 데이터 타입을 판별하는 방법을 보여주는 순서도이다.
S460 단계에서는, 페이지 데이터의 압축률이 로그 정보로부터 읽어진다. 중앙처리장치(1120)는 SRAM(1160)에 저장된 로그 정보를 읽고, 로그 정보가 포함하는 페이지 데이터의 압축률을 식별할 수 있다.
S470 단계에서는, 읽어진 압축률이 문턱값보다 큰지 판별된다. 읽어진 압축률이 문턱값보다 크지 않으면, 일반 데이터 영역(1250)에 저장된 페이지 데이터의 압축이 생략되고, 데이터 타입의 판별 동작이 종료될 수 있다. 압축률이 문턱값보다 크면, S480 단계에서, 일반 데이터 영역(1250)으로부터 페이지 데이터가 읽어지고, 읽어진 페이지 데이터가 압축될 수 있다. 압축 페이지 데이터는 스왑을 위해 사용될 수 있다.
본 발명의 실시 예들에 따르면, 데이터 타입은 페이지 데이터의 압축률에 따라 결정될 수 있다. 압축 페이지 데이터는 데이터 타입에 따라 스왑을 위해 사용되거나 폐기될 수 있다.
한번 결정된 데이터 타입은 로그 정보로 저장된다. 따라서, 이후에 페이지 데이터의 데이터 타입의 판정이 다시 요구될 때, 페이지 데이터를 압축하지 않고 로그 정보를 읽는 것으로, 페이지 데이터의 데이터 타입이 판별될 수 있다. 데이터 타입을 확인한 후 압축이 수행되므로, 불필요한 압축(예를 들어, 압축이 필요하지 않은 페이지 데이터의 압축)이 방지되고, 모바일 장치(1000)의 동작 성능이 향상된다.
도 9는 도 1에 도시된 중앙처리장치가 문턱값을 조절하는 예를 보여주는 순서도이다.
S510 단계에서는, 페이지 데이터 또는 페이지 데이터와 연관된 프로세스의 특성이 검출된다. S520 단계에서는, 검출된 특성에 따라, 문턱값이 결정된다. 즉, 스왑을 위해 선택된 페이지 데이터 또는 페이지 데이터와 연관된 프로세스의 특성에 따라, 페이지 데이터의 압축 여부를 결정하는 문턱값이 조절될 수 있다.
예를 들어, 문서 편집을 위한 프로세스 및 데이터는 높은 압축률을 가질 수 있다. 높은 압축률을 가진 프로세스들 및 데이터가 모바일 장치(1000)에서 구동되고 문턱값이 고정되어 있는 경우, 모든 페이지 데이터에 대해 압축이 수행될 수 있다. 반면에, 동영상 편집을 위한 프로세스 및 데이터는 낮은 압축률을 가질 수 있다. 낮은 압축률을 가진 프로세스들 및 데이터가 모바일 장치(1000)에서 구동되고 문턱값이 고정되어 있는 경우, 어떠한 페이지 데이터에 대해서도 압축이 수행되지 않을 수 있다.
프로세스 및 데이터의 압축률의 분포에 따라 문턱값이 결정되면, 모바일 장치(1000)에서 구동되는 프로세스들 및 데이터 중 압축되는 프로세스들 및 데이터의 비율이 조절될 수 있다.
도 10은 본 발명에 따른 모바일 장치의 다른 실시 예를 보여주는 블록도이다. 도 10을 참조하면, 모발일 장치(2000)는 어플리케이션 프로세서(2100), DRAM(2200), 플래시 메모리(2300), 모뎀(2400), 그리고 사용자 인터페이스(2500)을 포함한다. 그리고 어플리케이션 프로세서(2100)는 버스(2110), 중앙처리장치(2120), DMA(2130), 압축기 및 압축 해제기(2140), DRAM 인터페이스(2150), SRAM(2160), 그리고 플래시 인터페이스(2170)를 포함한다.
도 10에 도시된 모바일 장치(2000)는 압축기 및 압축 해제기(2140)를 사용하여 페이지 데이터를 압축하고, 압축된 페이지 데이터의 압축을 해제할 수 있다. 도 1의 어플리케이션 프로세서(1100)와 비교하면, 어플리케이션 프로세서(2100)는 페이지 데이터의 압축 기능이 중앙처리장치(2120)가 아닌 압축기 및 압축 해제기(2140)에 제공된다. 도 10에서, 압축기 및 압축 해제기(2140)는 하드웨어(HW)로 구현될 수 있다.
도 11은 도 10에 도시된 DRAM, SRAM, 그리고 플래시 메모리의 데이터 영역 구조를 개념적으로 보여주는 블록도이다. 도 11을 참조하면, DRAM(2200)은 스왑 빅틈 버퍼(Swap Victim Buffer, 2230) 및 일반 데이터 영역(Normal Data Area, 2250)으로 분할될 수 있다.
스왑 빅틈 버퍼(2230)는 일반 데이터 영역(2250)에 저장된 데이터가 플래시 메모리(2300)로 스왑(swap)될 때, 스왑되는 데이터가 저장될 수 있다. 도 11을 참조하면, 스왑 빅틈 버퍼(2230)는 복수의 엔트리(예를 들면, Entry1~Entry16)를 포함할 수 있다. 각 엔트리(예를 들면, Entry_K)는 복수의 페이지 엔트리(PE1~PEm)를 저장하도록 구성된다. 하나의 페이지 엔트리는 하나의 압축 페이지 데이터에 대응할 수 있다. 즉, 하나의 압축 페이지 데이터는 하나의 페이지 엔트리로 스왑 빅틈 버퍼(2230)에 저장될 수 있다.
복수의 엔트리(Entry1~Entry16) 각각에서 하나의 페이지 엔트리(또는 압축 페이지 데이터)가 선택되어, 하나의 데이터 청크(Data Chunk)를 형성할 수 있다. 예시적으로, 복수의 엔트리(Entry1~Entry16)의 페이지 엔트리(PE1~PEm)는 행 및 열 방향을 따라 매트릭스 형태로 도시되어 있다. 페이지 엔트리(PE1~PEm)의 하나의 열은 하나의 데이터 청크(DC)를 형성할 수 있다.
예시적으로, 스왑 빅틈 버퍼(2230)의 복수의 엔트리(Entry1~Entry16) 각각의 복수의 페이지 엔트리(PE1~PEm)는 링크드 리스트(linked list)에 따라 관리될 수 있다. 하나의 엔트리(예를 들어, Entry_K)에 저장되는 첫 번째 압축 페이지 데이터는 제 1 페이지 엔트리(PE1)로 저장될 수 있다. 제 K 엔트리(Entry_K)에 저장되는 두 번째 압축 페이지 데이터는 제 2 페이지 엔트리(PE2)로 저장될 수 있다. 제 1 페이지 엔트리(PE1)와 제 2 페이지 엔트리(PE2)는 서로 링크될 수 있다. 마찬가지로, 제 1 내지 제 m 페이지 엔트리들(PE1~PEm)은 서로 링크될 수 있다.
서로 링크된 페이지 엔트리들(PE1~PEm) 중 하나의 페이지 엔트리가 제거될 때, 링크가 갱신될 수 있다. 예를 들어, 제 2 페이지 엔트리(PE2)가 제거되면, 제 1 및 제 3 페이지 엔트리들(PE1, PE3)이 서로 링크될 수 있다. 제 3 내지 제 m 페이지 엔트리들(PE3~PEm)은 제 2 내지 제 m-1 페이지 엔트리들(PE2~PEm-1)로 관리되도록 갱신될 수 있다. 이후에, 새로 저장되는 압축 페이지 데이터는 제 m 페이지 엔트리(PEm)로 저장될 수 있다. 즉, 복수의 엔트리들(Entry1~Entry16)의 한 측면에는 가장 오래 전에 저장된 페이지 엔트리들(PE1)이 위치할 수 있다. 이 페이지 엔트리들(PE1)이 데이터 청크(Data Chunk)를 형성할 수 있다.
일반 데이터 영역(2250)은 어플리케이션 프로세서(2100)에 의해 구동되는 프로세스들(또는 어플리케이션들)이 사용하는 영역일 수 있다. 예를 들어, 프로세스들의 코드들, 프로세스들에 의해 처리되는 데이터가 일반 데이터 영역(2250)에 저장될 수 있다.
예를 들어, DRAM(2200)에서 데이터를 페이지의 단위로 관리될 수 있다. 페이지는 모바일 장치(2000)의 운영 체제(OS)에서 정의되는 사이즈를 가질 수 있다. 프로세스들의 코드들이나 데이터는 페이지의 단위로 DRAM(2200)에 저장되고, DRAM(2200)으로부터 읽어질 수 있다.
플래시 메모리(2300)는 모바일 장치(2000)의 스토리지로 사용될 수 있다. 어플리케이션 프로세서(2100)는 처리되는 데이터(예를 들어, 프로세스 자체의 데이터 또는 프로세스에 의해 처리되는 데이터를 포함하는 데이터)를 DRAM(2200)에 저장하고, 처리되는 데이터의 일부를 플래시 메모리(2300)로 스왑(swap)할 수 있다.
도 12는 도 10에 도시된 어플리케이션 프로세서가 페이지 데이터의 데이터 타입을 판별하는 예를 보여주는 순서도이다.
S610 단계에서는, 페이지 데이터의 압축이 시작된다. 예를 들어, 일반 데이터 영역(2250)으로부터 스왑되는 것으로 선택된 페이지 데이터가 읽어지고, 읽어진 페이지 데이터가 압축기 및 압축 해제기(2140)로 전달될 수 있다. 압축기 및 압축 해제기(2140)는 수신된 페이지 데이터의 압축을 시작할 수 있다.
S620 단계에서는, 페이지 데이터의 일부분의 압축률이 문턱값보다 높은지가 판별된다. 예를 들어, 압축기 및 압축 해제기(2140)는 압축이 완료되기 전에, 압축률과 문턱값을 비교할 수 있다.
압축률이 문턱값보다 크면, S630 단계에서, 페이지 데이터의 압축이 지속된다. S640 단계에서, 페이지 데이터의 데이터 타입이 느린 타입으로 판별된다. 압축 페이지 데이터는 스왑을 위해 사용될 수 있다.
압축률이 문턱값보다 크지 않으면, S650 단계에서, 페이지 데이터의 압축이 중지된다. S660 단계에서, 페이지 데이터의 데이터 타입이 즉시 타입으로 판별된다.
본 발명의 실시 예들에 따르면, 페이지 데이터의 압축 및 압축 해제는 중앙처리장치(2120)와 분리된 압축기 및 압축 해제기(2140)에서 수행된다. 따라서, 중앙처리장치(2120)의 자원을 소모하지 않으며 페이지 데이터의 압축 및 압축 해제가 수행되고, 압축이 완료되기 전에 압축률이 판별될 수 있다. 압축이 완료되기 전에 압축률과 문턱값이 비교되므로, 불필요한 압축을 수행하는 것이 방지된다.
상술한 실시 예들에서, 페이지 데이터의 데이터 타입은 압축률에 따라 판별되는 것으로 설명되었다. 그러나, 페이지 데이터의 데이터 타입은 예측에 기반하여 판별될 수 있다. 예를 들어, 멀티미디어 데이터는 낮은 압축률을 갖고, 텍스트나 코드는 높은 압축률을 가질 수 있다. 어플리케이션 프로세서(2100)는 페이지 데이터의 헤더를 읽음으로써, 페이지 데이터가 멀티미디어 데이터인지, 텍스트인지, 코드인지 판별할 수 있다. 판별 결과에 따라, 어플리케이션 프로세서(2100)는 멀티미디어 데이터를 즉시 타입으로 판별하고, 텍스트 또는 코드를 느린 타입으로 판별할 수 있다.
도 13은 도 12에 도시된 S660 단계, 즉 즉시 스왑 방법을 보여주는 순서도이다. 예시적으로, 페이지 데이터가 즉시 타입으로 판별된 때에, 즉시 스왑이 수행될 수 있다. 즉, 페이지 데이터의 압축률이 문턱값보다 높지 않을 때, 즉시 스왑이 수행될 수 있다.
도 11 및 도 13을 참조하면, S710 단계에서는, 일반 데이터 영역(2250)으로부터 페이지 데이터가 읽어진다. 예를 들어, 어플리케이션 프로세서(2100)는 운영 체제 등과 같은 상위 레벨에서 스왑되는 것으로 선택된 페이지 데이터를 일반 데이터 영역(2250)으로부터 읽을 수 있다.
S720 단계에서, 읽어진 페이지 데이터가 플래시 메모리(2300)에 저장된다. 어플리케이션 프로세서(2100)는 읽어진 페이지 데이터를 플래시 메모리(2300)에 저장할 수 있다.
S730 단계에서, 일반 데이터 영역(2250)으로부터 페이지 데이터가 삭제된다.
즉, 압축률이 문턱값보다 높지 않은 즉시 타입의 페이지 데이터는 압축되지 않고 플래시 메모리(2300)로 스왑된다. 예를 들어, 어플리케이션 프로세서(2100)는 스왑 요청이 있을 때, 즉시 타입의 페이지 데이터를 바로 스왑할 수 있다.
도 14는 도 12에 도시된 S640 단계, 즉 늦은 스왑 방법을 보여주는 순서도이다. 예시적으로, 페이지 데이터가 느린 타입으로 판별된 때에, 느린 스왑이 수행될 수 있다. 즉, 페이지 데이터의 압축률이 문턱값보다 높지 않을 때, 느린 스왑이 수행될 수 있다.
도 11 및 도 14를 참조하면, S810 단계에서, 압축 페이지 데이터가 스왑 빅틈 버퍼(2230)의 복수의 엔트리 중 하나의 엔트리에 저장된다. 스왑 빅틈 버퍼(2230)는 복수의 엔트리를 포함하고, 각 엔트리는 복수의 페이지 엔트리들을 포함할 수 있다. 하나의 압축 페이지 데이터는 선택된 엔트리의 선택된 페이지 엔트리에 저장될 수 있다.
S820 단계에서는, 스왑 빅틈 버퍼 정보(SVB information)가 저장된다. 스왑 빅틈 버퍼 정보는 스왑 빅틈 버퍼(2230)에 저장된 압축 페이지 데이터에 대한 정보를 포함할 수 있다. 예를 들어, 스왑 빅틈 버퍼 정보는 스왑 빅틈 버퍼(2230)에 저장된 압축 페이지 데이터와 연관된 프로세스의 식별자, 어드레스 및 LRU (Least Recently Used) 정보를 포함할 수 있다(도 11 참조). 어드레스는 압축 페이지 데이터가 저장되어 있던 일반 데이터 영역(2250)의 어드레스 또는 압축 페이지 데이터가 스왑되는 것으로 선택된 플래시 메모리(2300)의 어드레스일 수 있다. LRU 정보는 압축 페이지 데이터가 가장 최근에 액세스된 시각에 대한 정보를 포함할 수 있다.
S830 단계에서는, 스왑 빅틈 버퍼(2230)의 스왑이 요구되는지가 판별된다. 어플리케이션 프로세서(2100)는 스왑 빅틈 버퍼(2230)의 스왑이 요구되는지 판별할 수 있다. 예를 들어, 도 4에서 설명한 바와 같이, 어플리케이션 프로세서(2100)는 스왑 빅틈 버퍼(2230)에서 새로운 할당이 요구되는 용량 및 스왑 빅틈 버퍼(2230)의 자유 저장 용량을 비교하고, 비교 결과에 따라 스왑이 요구되는지 판별할 수 있다. 어플리케이션 프로세서(2100)는 스왑 빅틈 버퍼(2230)의 자유 저장 용량이 없는 경우, 자유 저장 용량이 기준값보다 적은 경우 등과 같은 다양한 조건에 따라 스왑이 요구되는지 판별할 수 있다.
스왑 빅틈 버퍼(2230)의 스왑이 요구되지 않으면, 늦은 스왑은 종료된다. 스왑 빅틈 버퍼(2230)의 스왑이 요구되면, S840 단계가 수행된다.
S840 단계에서, 스왑 빅틈 버퍼(2230)의 복수의 엔트리로부터 압축 페이지 데이터가 선택된다. 예를 들어, 어플리케이션 프로세서(2100)는 복수의 엔트리 각각에서 하나의 압축 페이지 데이터를 선택할 수 있다. 예를 들어, 어플리케이션 프로세서(2100)는 복수의 엔트리들 각각에서, 가장 오래 전에 저장된 압축 페이지 데이터를 선택할 수 있다. 선택된 압축 페이지 데이터는 데이터 청크(data chunk)를 형성할 수 있다.
S850 단계에서는, 선택된 압축 페이지 데이터를 플래시 메모리(2300)로 복사하도록 다이렉트 메모리 액세스(도 10 참조, 2130)가 제어된다. 어플리케이션 프로세서(2100)는 선택된 압축 페이지 데이터, 즉 데이터 청크를 플래시 메모리(2300)로 복사하도록 다이렉트 메모리 액세스 (2130)를 프로그램할 수 있다.
S860 단계에서는, 선택된 압축 페이지 데이터가 스왑 빅틈 버퍼(2230)로부터 삭제된다. 어플리케이션 프로세서(2100)는 선택된 압축 페이지 데이터를 스왑 빅틈 버퍼(2230)으로부터 삭제할 수 있다.
S870 단계에서, 스왑 빅틈 버퍼 정보가 갱신된다. 예를 들어, 어플리케이션 프로세서(2100)는 스왑된 압축 페이지 데이터에 대한 정보가 삭제되도록 스왑 빅틈 버퍼 정보를 갱신할 수 있다.
예시적으로, 스왑 빅틈 버퍼 정보는 로그 정보와 함께 SRAM(도 11 참조, 2160)의 SVB 설명 테이블(SVB descriptor table, 2161)을 통해 관리될 수 있다.
도 15 및 도 16은 도 11의 DRAM에서 즉시 스왑 및 느린 스왑이 수행되는 예들을 보여주는 도면들이다. 도 15 및 도 16에서, 일반 데이터 영역(2250)은 복수의 페이지 데이터(PD)를 저장하도록 구성된다. 간결한 설명을 위하여, 일반 데이터 영역(2250)은 제 1 내지 제 i 행들(R1~Ri) 및 제 1 내지 제 j 열들(C1~Cj)을 따라 매트릭스 형태로 도시되어 있다.
도 15를 참조하면, 일반 데이터 영역(2250)의 제 3 행(R3)의 제 1 및 제 2 열들(C1, C2)의 페이지 데이터(PD')가 즉시 스왑되는 것으로 선택될 수 있다. 선택된 페이지 데이터(PD')는 일반 데이터 영역(2250)으로부터 읽어지고, 플래시 메모리(2300)에 저장될 수 있다. 이후에, 선택된 페이지 데이터(PD')는 DRAM(2200)로부터 삭제될 수 있다.
도 16을 참조하면, 일반 데이터 영역(2250)의 제 2 행(R2)의 제 1 및 제 2 열들(C1, C2)의 페이지 데이터(PD')가 느린 스왑되는 것으로 선택될 수 있다. 선택된 페이지 데이터(PD')는 압축된 후 스왑 빅틈 버퍼(2230)에 저장될 수 있다. 예를 들어, 압축 페이지 데이터는 제 2 엔트리(Entry2) 및 제 3 엔트리(Entry3)에 각각 페이지 엔트리로 저장될 수 있다.
이후에, 스왑 빅틈 버퍼(2230)의 스왑 조건이 만족되면, 느린 스왑을 통해 압축 페이지 데이터가 플래시 메모리(2300)로 스왑될 수 있다. 예를 들어, 압축 페이지 데이터가 스왑 빅틈 버퍼(2230)에서 가장 오래 전에 저장된 압축 페이지 데이터가 되어 데이터 청크(DC)를 형성하면, 느린 스왑을 통해 압축 페이지 데이터가 플래시 메모리(2300)로 스왑될 수 있다.
도 17은 스왑된 페이지 데이터를 복원하는 방법을 보여주는 순서도이다. 도 10 및 도 17을 참조하면, S910 단계에서는, 스왑된 페이지 데이터가 요구되는지가 판별된다. 예를 들어, 모바일 장치(2000)에서 구동되는 운영 체제 또는 어플리케이션이 스왑된 페이지를 액세스하고자 하는 경우, 스왑된 페이지가 요구될 수 있다. 스왑된 페이지가 요구되지 않으면, 페이지 데이터의 복원은 수행되지 않는다. 스왑된 페이지 데이터가 요구되면, S920 단계가 수행된다.
S920 단계에서는, 스왑된 페이지 데이터가 느린 타입의 페이지 데이터인지가 판별된다. 예를 들어, 어플리케이션 프로세서(2100)는 로그 정보를 참조하여 스왑된 페이지 데이터가 느린 타입의 페이지 데이터인지 판별할 수 있다.
스왑된 페이지 데이터가 느린 타입의 페이지 데이터가 아니면, 즉 즉시 타입의 페이지 데이터이면, S930 단계에서, 요청된 페이지 데이터가 플래시 메모리(2300)로부터 읽어지고, 읽어진 페이지 데이터가 일반 데이터 영역(NDA, 2250)에 저장되고, 그리고 요청된 페이지 데이터가 플래시 메모리(2300)로부터 삭제된다. 즉시 타입의 페이지 데이터는 압축 없이 플래시 메모리(2300)로 즉시 스왑되는 페이지 데이터이다. 따라서, 요청된 페이지 데이터를 플래시 메모리(2300)로부터 읽고 일반 데이터 영역(2250)에 저장하는 것으로, 요청된 페이지 데이터의 복원이 완료될 수 있다.
스왑된 페이지 데이터가 느린 타입의 페이지 데이터이면, S940 단계에서, 요청된 페이지 데이터가 스왑 빅틈 버퍼(2230)에 저장되어 있는지가 판별된다. 앞에서 설명한 바와 같이, 느린 타입의 페이지 데이터는 스왑 빅틈 버퍼(2230)에 저장되고, 스왑 빅틈 버퍼(2230)의 스왑 조건이 만족될 때까지 스왑 빅틈 버퍼(2230)에서 유지된다. 따라서, 요청된 페이지 데이터가 스왑 빅틈 버퍼(2230)에 저장되어 있는지에 따라, 요청된 페이지 데이터의 복원 방법이 달라질 수 있다.
요청된 페이지 데이터가 스왑 빅틈 버퍼(2230)에 저장되어 있지 않으면, 요청된 페이지 데이터는 플래시 메모리(2300)로 스왑된 상태이다. 따라서, S950 단계에서, 요청된 페이지 데이터가 플래시 메모리(2300)로부터 읽어지고, 읽어진 페이지 데이터가 압축 해제되고, 압축 해제된 페이지 데이터가 일반 데이터 영역(2250)에 저장되고, 그리고 요청된 페이지 데이터(즉, 압축 페이지 데이터)가 플래시 메모리(2300)로부터 삭제된다.
요청된 페이지 데이터가 스왑 빅틈 버퍼(2230)에 저장되어 있으면, S960 단계에서, 요청된 페이지 데이터가 스왑 빅틈 버퍼(2230)로부터 읽어지고, 읽어진 페이지 데이터가 압축 해제되고, 압축 해제된 페이지 데이터가 일반 데이터 영역(2250)에 저장되고, 그리고 요청된 페이지 데이터(즉, 압축 페이지 데이터)가 스왑 빅틈 버퍼(2230)로부터 삭제된다. 이후에, S970 단계에서, 스왑 빅틈 버퍼 정보 및 스왑 빅틈 버퍼의 엔트리들이 갱신된다.
스왑을 수행하는 모바일 장치(2000)에서 발생할 수 있는 문제점 중 하나는 스래싱(thrashing)이다. 스래싱은 모바일 장치(2000)가 페이지 데이터의 스왑 및 스왑된 페이지 데이터의 복원(즉, 페이징)에 과도한 자원을 소모하는 현상을 가리킨다.
본 발명의 실시 예들에 따르면, 압축된 페이지 데이터는 바로 플래시 메모리(2300)로 스왑되지 않고, DRAM(2200)의 스왑 빅틈 버퍼(2230)에서 일정 기간 동안 저장된다. 따라서, 스래싱이 방지되고, 모바일 장치(2000)의 동작 성능이 향상된다. 또한, 스왑 빅틈 버퍼(2230)에 저장된 데이터는 DMA에 의해 스왑된다. DMA가 데이터를 복사할 때에 소모되는 전력은 어플리케이션 프로세서(2100)가 데이터를 복사할 때에 소모되는 전력보다 적다. 따라서, 전력 소모가 감소된 모바일 장치(2000)가 제공된다. 또한, 어플리케이션 프로세서(2100)가 데이터를 복사할 때, 어플리케이션 프로세서(2100)의 캐시 메모리에 복사되는 데이터가 저장될 수 있다. DMA에 의해 데이터가 복사되면 어플리케이션 프로세서(2100)의 캐시 메모리에 복사되는 데이터가 저장되지 않으므로, 어플리케이션 프로세서(2100)의 캐시 메모리가 스왑에 의해 오염되는 것이 방지되고, 향상된 동작 성능을 갖는 모바일 장치(2000)가 제공된다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 자명하다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
1000; 모바일 장치
1100; 어플리케이션 프로세서 1200; DRAM
1300; 불휘발성 메모리 1400; 모뎀
1500; 사용자 인터페이스
1110; 버스
1120, 2120; 중앙처리장치
1130; 다이렉크 메모리 액세스 컨트롤러
1140; 압축 해제기
2140; 압축기 및 압축 해제기 1160; SRAM
1150; DRAM 인터페이스 1170; 플래시 인터페이스

Claims (28)

  1. 데이터를 저장하기 위한 스토리지;
    스왑 빅틈 버퍼 영역과 일반 데이터 영역을 포함하는 버퍼 메모리;
    상기 일반 데이터 영역으로부터 스왑될 페이지 데이터를 선택하고, 그리고 상기 선택된 페이지 데이터에 대해 스왑 동작을 수행하도록 구성되는 어플리케이션 프로세서를 포함하고,
    상기 스왑 동작은 상기 선택된 페이지 데이터의 데이터 타입에 따라, 상기 페이지 데이터가 상기 일반 데이터 영역으로부터 상기 스토리지로 이동되는 즉시 스왑 동작 또는 상기 페이지 데이터가 상기 일반 데이터 영역으로부터 상기 스왑 빅틈 버퍼 영역을 통해 상기 스토리지로 이동되는 늦은 스왑 동작을 수행하는 모바일 장치.
  2. 제 1 항에 있어서,
    상기 늦은 스왑 동작 동안, 상기 어플리케이션 프로세서는 상기 페이지 데이터를 압축하고 상기 압축된 페이지 데이터를 상기 스왑 빅틈 버퍼 영역에 저장하고, 그리고 상기 압축된 페이지 데이터를 상기 스토리지로 이동하도록 구성되는 모바일 장치.
  3. 제 2 항에 있어서,
    상기 스왑 빅틈 버퍼에 저장된 상기 압축된 페이지 데이터가 필요할 때, 상기 어플리케이션 프로세서는 상기 스왑 빅틈 버퍼에 저장된 상기 압축된 페이지 데이터를 읽고, 상기 상기 압축된 페이지 데이터의 압축을 해제하고, 그리고 상기 압축이 해제된 데이터를 상기 일반 데이터 영역에 저장하도록 구성되는 모바일 장치.
  4. 제 2 항에 있어서,
    상기 즉시 스왑 동작 동안에, 상기 어플리케이션 프로세서는 상기 스왑 빅틈 버퍼 영역을 사용하지 않고 상기 페이지 데이터를 상기 일반 데이터 영역으로부터 상기 스토리지로 이동하도록 구성되는 모바일 장치.
  5. 제 4 항에 있어서,
    상기 어플리케이션 프로세서는 상기 선택된 페이지 데이터의 압축률이 문턱값 이하일 때, 상기 즉시 스왑 동작을 수행하도록 구성되는 모바일 장치.
  6. 불휘발성 메모리;
    스왑 빅틈 버퍼 영역과 일반 데이터 영역을 포함하도록 구성되는 동적 랜덤 액세스 메모리(DRAM); 그리고
    상기 불휘발성 메모리 및 상기 동적 랜덤 액세스 메모리와 연결되는 어플리케이션 프로세서를 포함하고,
    상기 일반 데이터 영역에 저장된 페이지 데이터의 스왑이 요구될 때, 상기 어플리케이션 프로세서는 상기 페이지 데이터의 타입에 따라 즉시 스왑 동작 또는 늦은 스왑 동작을 수행하도록 구성되고,
    상기 즉시 스왑 동작은 상기 스왑 빅틈 버퍼 영역을 사용하지 않고 상기 페이지 데이터를 상기 불휘발성 메모리로 이동하고,
    상기 늦은 스왑 동작은 상기 페이지 데이터를 압축하고, 그리고 상기 압축된 페이지 데이터를 상기 스왑 빅틈 버퍼 영역을 통해 상기 불휘발성 메모리로 이동하는 모바일 장치.
  7. 제 6 항에 있어서,
    상기 어플리케이션 프로세서는 상기 페이지 데이터의 압축률에 따라 상기 페이지 데이터의 타입을 판별하는 모바일 장치.
  8. 제 6 항에 있어서,
    상기 어플리케이션 프로세서는 상기 스왑 빅틈 버퍼에 저장된 상기 압축된 페이지 데이터를 상기 불휘발성 메모리로 이동하는 다이렉트 메모리 액세스(DMA)를 포함하는 모바일 장치.
  9. 제 8 항에 있어서,
    상기 압축된 페이지 데이터는 데이터 청크의 단위로 상기 스왑 빅틈 버퍼로부터 상기 불휘발성 메모리로 이동되는 모바일 장치.
  10. 제 9 항에 있어서,
    상기 데이터 청크의 단위는 상기 다이렉트 메모리 액세스에 의한 상기 데이터 청크의 데이터 전송 시간이 상기 어플리케이션 프로세서에 의한 상기 데이터 청크의 데이터 전송 시간과 같거나 그보다 짧아지도록 설정되고,
    상기 다이렉트 메모리 액세스에 의한 상기 데이터 청크의 상기 데이터 전송 시간은 상기 다이렉트 메모리 액세스의 프로그램 시간을 포함하는 모바일 장치.
  11. 어플리케이션 프로세서의 데이터 관리 방법에 있어서:
    DRAM에 저장된 페이지 데이터의 데이터 타입을 판별하는 단계; 및
    상기 판별된 데이터 타입이 느린 타입이면 상기 페이지 데이터의 늦은 스왑(lazy swap) 동작을 수행하고, 상기 판별된 데이터 타입이 즉시 타입이면 상기 페이지 데이터의 즉시 스왑(instant swap) 동작을 수행하는 단계를 포함하고,
    상기 늦은 스왑 동작은:
    상기 페이지 데이터를 압축된 데이터 포맷으로 상기 DRAM의 스왑 빅틈 버퍼 영역으로 이동하는 단계를 포함하는 데이터 관리 방법.
  12. 제 11 항에 있어서,
    상기 데이터 타입을 판별하는 단계는,
    상기 페이지 데이터를 압축하는 단계;
    상기 페이지 데이터의 압축률을 판별하는 단계; 그리고
    상기 압축률이 문턱값보다 높으면 상기 페이지 데이터의 데이터 타입을 상기 느린 타입으로 판별하고, 상기 압축률이 상기 문턱값보다 높지 않으면 상기 페이지 데이터의 데이터 타입을 상기 즉시 타입으로 판별하는 단계를 포함하는 데이터 관리 방법.
  13. 제 12 항에 있어서,
    상기 페이지 데이터의 데이터 타입을 저장하는 단계를 더 포함하는 데이터 관리 방법.
  14. 제 12 항에 있어서,
    상기 페이지 데이터의 압축률을 저장하는 단계를 더 포함하는 데이터 관리 방법.
  15. 제 12 항에 있어서,
    상기 페이지 데이터 또는 상기 페이지 데이터와 연관된 프로세스의 특성을 검출하는 단계; 그리고
    상기 검출 결과에 따라 상기 문턱값을 조절하는 단계를 더 포함하는 데이터 관리 방법.
  16. 제 11 항에 있어서,
    상기 데이터 타입을 판별하는 단계는,
    상기 페이지 데이터의 일부분을 압축하는 단계;
    상기 페이지 데이터의 상기 일부분의 압축률이 문턱값보다 높은지 판별하는 단계; 그리고
    상기 압축률이 상기 문턱값보다 높을 때, 상기 페이지 데이터의 나머지를 압축하고 상기 데이터 타입을 상기 느린 타입으로 판별하는 단계;
    상기 압축률이 상기 문턱값보다 높지 않을 때, 상기 페이지 데이터의 상기 나머지를 압축하지 않고 상기 데이터 타입을 상기 즉시 타입으로 판별하는 단계를 포함하는 데이터 관리 방법.
  17. 제 11 항에 있어서,
    상기 스왑 빅틈 버퍼 영역은 복수의 엔트리를 포함되고, 각 엔트리는 복수의 페이지 엔트리를 갖도록 구성되고,
    상기 페이지 데이터는 상기 복수의 엔트리 중 하나의 페이지 엔트리에 상기 압축된 데이터 포맷으로 저장되는 데이터 관리 방법.
  18. 제 17 항에 있어서,
    상기 늦은 스왑 동작은 상기 스왑 빅틈 버퍼 영역으로부터 상기 압축된 페이지 데이터를 스토리지로 이동하는 단계를 더 포함하는 데이터 관리 방법.
  19. 어플리케이션 프로세서의 데이터 관리 방법에 있어서:
    DRAM에 저장된 페이지 데이터의 데이터 타입을 판별하는 단계; 및
    상기 판별된 데이터 타입이 느린 타입이면 상기 페이지 데이터의 늦은 스왑(lazy swap) 동작을 수행하고, 상기 판별된 데이터 타입이 즉시 타입이면 상기 페이지 데이터의 즉시 스왑(instant swap) 동작을 수행하는 단계를 포함하고,
    상기 데이터 타입을 판별하는 단계는,
    상기 페이지 데이터를 압축하는 단계;
    상기 페이지 데이터의 압축률을 판별하는 단계; 그리고
    상기 압축률이 문턱값보다 높으면 상기 페이지 데이터의 데이터 타입을 상기 느린 타입으로 판별하고, 상기 압축률이 상기 문턱값보다 높지 않으면 상기 페이지 데이터의 데이터 타입을 상기 즉시 타입으로 판별하는 단계를 포함하는 데이터 관리 방법.
  20. DRAM 인터페이스;
    플래시 메모리 인터페이스;
    다이렉트 메모리 액세스; 그리고
    스왑 동작이 필요한지 판별하고, 상기 DRAM 인터페이스를 통해 스왑될 페이지 데이터를 수신하도록 구성되고, 그리고 상기 페이지 데이터의 데이터 타입에 따라 즉시 스왑 동작 또는 늦은 스왑 동작에서 상기 페이지 데이터에 대한 스왑 동작을 수행하도록 구성되는 프로세서를 포함하고,
    상기 늦은 스왑 동작에서, 상기 프로세서는 상기 페이지 데이터를 압축하고 그리고 상기 압축된 페이지 데이터를 상기 DRAM 인터페이스를 통해 출력하도록 구성되고, 상기 다이렉트 메모리 액세스는 상기 DRAM 인터페이스 및 상기 플래시 메모리 인터페이스 사이의 데이터 경로를 제어하여 상기 DRAM 인터페이스로부터 압축되어 출력되는 상기 페이지 데이터를 상기 플래시 메모리 인터페이스로 이동하도록 구성되는 어플리케이션 프로세서.
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
KR1020120143722A 2012-12-11 2012-12-11 모바일 장치 및 그것의 스왑을 통한 데이터 관리 방법 KR102011135B1 (ko)

Priority Applications (8)

Application Number Priority Date Filing Date Title
KR1020120143722A KR102011135B1 (ko) 2012-12-11 2012-12-11 모바일 장치 및 그것의 스왑을 통한 데이터 관리 방법
AU2013263762A AU2013263762A1 (en) 2012-12-11 2013-11-28 Mobile device and method of managing data using swap thereof
DE102013113189.1A DE102013113189A1 (de) 2012-12-11 2013-11-28 Mobile Vorrichtung und Verfahren zum Verwalten von Daten mit Auslagerung derselben
TW102144510A TWI578225B (zh) 2012-12-11 2013-12-05 移動裝置和使用交換其的資料管理方法
NL2011914A NL2011914B1 (en) 2012-12-11 2013-12-09 Mobile device and method of managing data using swap thereof.
US14/101,934 US9116631B2 (en) 2012-12-11 2013-12-10 Mobile device and method of managing data using swap thereof
CN201310675037.XA CN103870212B (zh) 2012-12-11 2013-12-11 移动设备及其利用交换来管理数据的方法
JP2013256247A JP2014116017A (ja) 2012-12-11 2013-12-11 モバイル装置とアプリケーションプロセッサ及びそのデータ管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120143722A KR102011135B1 (ko) 2012-12-11 2012-12-11 모바일 장치 및 그것의 스왑을 통한 데이터 관리 방법

Publications (2)

Publication Number Publication Date
KR20140075416A KR20140075416A (ko) 2014-06-19
KR102011135B1 true KR102011135B1 (ko) 2019-08-14

Family

ID=50778273

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120143722A KR102011135B1 (ko) 2012-12-11 2012-12-11 모바일 장치 및 그것의 스왑을 통한 데이터 관리 방법

Country Status (8)

Country Link
US (1) US9116631B2 (ko)
JP (1) JP2014116017A (ko)
KR (1) KR102011135B1 (ko)
CN (1) CN103870212B (ko)
AU (1) AU2013263762A1 (ko)
DE (1) DE102013113189A1 (ko)
NL (1) NL2011914B1 (ko)
TW (1) TWI578225B (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10102148B2 (en) 2013-06-13 2018-10-16 Microsoft Technology Licensing, Llc Page-based compressed storage management
KR101468336B1 (ko) * 2013-11-25 2014-12-04 성균관대학교산학협력단 데이터 압축률 예측 기법에 기반한 데이터 분산 저장 방법, 이를 이용한 저장 장치 및 시스템
US9547447B2 (en) * 2014-01-03 2017-01-17 Advanced Micro Devices, Inc. Dedicated interface for coupling flash memory and dynamic random access memory
US9684625B2 (en) 2014-03-21 2017-06-20 Microsoft Technology Licensing, Llc Asynchronously prefetching sharable memory pages
KR101654724B1 (ko) 2014-11-18 2016-09-22 엘지전자 주식회사 적어도 하나의 메모리를 포함하는 디바이스의 제어 방법 및 스마트 tv
US9632924B2 (en) 2015-03-02 2017-04-25 Microsoft Technology Licensing, Llc Using memory compression to reduce memory commit charge
KR102314138B1 (ko) 2015-03-05 2021-10-18 삼성전자 주식회사 모바일 장치 및 모바일 장치의 데이터 관리 방법
US10037270B2 (en) * 2015-04-14 2018-07-31 Microsoft Technology Licensing, Llc Reducing memory commit charge when compressing memory
EP3304746B1 (en) * 2015-05-21 2021-04-07 Zeropoint Technologies AB Methods, devices and systems for hybrid data compression and decompression
US10452614B2 (en) 2015-06-12 2019-10-22 International Business Machines Corporation Storage data reduction analysis and forecast
US10762030B2 (en) * 2016-05-25 2020-09-01 Samsung Electronics Co., Ltd. Storage system, method, and apparatus for fast IO on PCIE devices
JP7007557B2 (ja) * 2017-08-24 2022-01-24 富士通株式会社 情報処理装置、プロセス管理方法およびプロセス管理プログラム
KR102281966B1 (ko) 2017-11-01 2021-07-26 삼성전자주식회사 데이터 스토리지 장치 및 그 동작 방법
JP2019133391A (ja) * 2018-01-31 2019-08-08 東芝メモリ株式会社 メモリシステムおよび制御方法
KR102533726B1 (ko) 2018-04-06 2023-05-18 삼성전자주식회사 전자 장치 및 그의 제어방법
CN110457235B (zh) * 2019-08-20 2021-10-08 Oppo广东移动通信有限公司 内存压缩方法、装置、终端及存储介质
KR102379176B1 (ko) * 2019-12-31 2022-03-28 성균관대학교산학협력단 메모리 스왑 방법 및 시스템
KR20220116650A (ko) * 2021-02-15 2022-08-23 삼성전자주식회사 이형 메모리들을 포함하는 전자 장치 및 그것의 이형 메모리들 간 압축 데이터 이동 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070294494A1 (en) * 2006-06-16 2007-12-20 Texas Instruments Incorporated Page processing circuits, devices, methods and systems for secure demand paging and other operations

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6256642B1 (en) 1992-01-29 2001-07-03 Microsoft Corporation Method and system for file system management using a flash-erasable, programmable, read-only memory
JP2000276363A (ja) 1999-03-26 2000-10-06 Nec Corp 記憶階層システムにおけるスワッピング処理方法ならびに装置
US6681305B1 (en) 2000-05-30 2004-01-20 International Business Machines Corporation Method for operating system support for memory compression
CA2355473A1 (en) * 2000-09-29 2002-03-29 Linghsiao Wang Buffer management for support of quality-of-service guarantees and data flow control in data switching
US6877081B2 (en) 2001-02-13 2005-04-05 International Business Machines Corporation System and method for managing memory compression transparent to an operating system
US6687185B1 (en) * 2002-08-29 2004-02-03 Micron Technology, Inc. Method and apparatus for setting and compensating read latency in a high speed DRAM
US6762974B1 (en) * 2003-03-18 2004-07-13 Micron Technology, Inc. Method and apparatus for establishing and maintaining desired read latency in high-speed DRAM
EP1870814B1 (en) * 2006-06-19 2014-08-13 Texas Instruments France Method and apparatus for secure demand paging for processor devices
WO2007023975A1 (ja) 2005-08-22 2007-03-01 Ssd Company Limited マルチプロセッサ、ダイレクトメモリアクセスコントローラ、及びシリアルデータ送受信装置
KR100735560B1 (ko) 2005-11-09 2007-07-04 삼성전자주식회사 가상 메모리를 제어하는 장치 및 방법
JP2008140236A (ja) 2006-12-04 2008-06-19 Nec Corp メモリ管理システム、情報処理装置及びメモリ管理方法
JP5018060B2 (ja) 2006-12-14 2012-09-05 日本電気株式会社 情報処理装置および情報処理方法
JP2008226082A (ja) 2007-03-15 2008-09-25 Nec Corp データ圧縮伸張装置、コンピュータに実行させるためのプログラム、及びデータ圧縮伸張方法
US8180981B2 (en) 2009-05-15 2012-05-15 Oracle America, Inc. Cache coherent support for flash in a memory hierarchy
KR101612922B1 (ko) * 2009-06-09 2016-04-15 삼성전자주식회사 메모리 시스템 및 메모리 시스템 관리 방법
WO2011007599A1 (ja) * 2009-07-17 2011-01-20 株式会社 東芝 メモリ管理装置
JP2011128792A (ja) * 2009-12-16 2011-06-30 Toshiba Corp メモリ管理装置
KR101739556B1 (ko) * 2010-11-15 2017-05-24 삼성전자주식회사 데이터 저장 장치, 사용자 장치 및 그것의 주소 맵핑 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070294494A1 (en) * 2006-06-16 2007-12-20 Texas Instruments Incorporated Page processing circuits, devices, methods and systems for secure demand paging and other operations

Also Published As

Publication number Publication date
TWI578225B (zh) 2017-04-11
DE102013113189A1 (de) 2014-06-12
US9116631B2 (en) 2015-08-25
NL2011914B1 (en) 2019-07-04
CN103870212B (zh) 2018-07-13
JP2014116017A (ja) 2014-06-26
CN103870212A (zh) 2014-06-18
KR20140075416A (ko) 2014-06-19
TW201423577A (zh) 2014-06-16
AU2013263762A1 (en) 2014-06-26
NL2011914A (en) 2014-06-12
US20140164686A1 (en) 2014-06-12

Similar Documents

Publication Publication Date Title
KR102011135B1 (ko) 모바일 장치 및 그것의 스왑을 통한 데이터 관리 방법
US10310893B2 (en) Managing container pause and resume
EP3108371B1 (en) Modified memory compression
US10416932B2 (en) Dirty data management for hybrid drives
US9626126B2 (en) Power saving mode hybrid drive access management
US9684625B2 (en) Asynchronously prefetching sharable memory pages
US10642493B2 (en) Mobile device and data management method of the same
WO2015138949A1 (en) Systems and methods for supporting demand paging for subsystems in a portable computing environment with restricted memory resources
JP6258525B2 (ja) 再構成可能フェッチパイプライン
US20190370009A1 (en) Intelligent swap for fatigable storage mediums
CN107408073B (zh) 使用存储器压缩来减少存储器提交开销
US20170371593A1 (en) Selective flash memory compression/decompression using a storage usage collar
US11438010B2 (en) System and method for increasing logical space for native backup appliance
JP2018063505A (ja) メモリ管理制御装置、メモリ管理制御方法、及びメモリ管理制御プログラム
KR20210049602A (ko) 컴퓨팅 장치 및 그 동작 방법
US10848179B1 (en) Performance optimization and support compatibility of data compression with hardware accelerator
US10840943B1 (en) System and method of data compression between backup server and 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