KR102114388B1 - 전자 장치의 메모리 압축 방법 및 장치 - Google Patents

전자 장치의 메모리 압축 방법 및 장치 Download PDF

Info

Publication number
KR102114388B1
KR102114388B1 KR1020130128848A KR20130128848A KR102114388B1 KR 102114388 B1 KR102114388 B1 KR 102114388B1 KR 1020130128848 A KR1020130128848 A KR 1020130128848A KR 20130128848 A KR20130128848 A KR 20130128848A KR 102114388 B1 KR102114388 B1 KR 102114388B1
Authority
KR
South Korea
Prior art keywords
compression
memory
delete delete
page
compressed
Prior art date
Application number
KR1020130128848A
Other languages
English (en)
Other versions
KR20150045348A (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 US14/436,344 priority Critical patent/US10037143B2/en
Priority to EP14851428.4A priority patent/EP3059678B1/en
Priority to PCT/KR2014/009849 priority patent/WO2015057031A1/ko
Priority to EP22196322.6A priority patent/EP4145295A1/en
Priority to CN201480002742.6A priority patent/CN104737137B/zh
Publication of KR20150045348A publication Critical patent/KR20150045348A/ko
Priority to US16/018,790 priority patent/US10895987B2/en
Application granted granted Critical
Publication of KR102114388B1 publication Critical patent/KR102114388B1/ko

Links

Images

Classifications

    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • 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/0638Organizing or formatting or addressing of data
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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)
  • Human Computer Interaction (AREA)
  • Memory System (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

본 발명은 전자 장치의 메모리 압축 방법 및 장치에 관한 것으로, 보다 구체적으로 본 발명의 전자 장치의 메모리 압축 방법은 제1 어플리케이션에 대한 실행 요청을 감지하는 감지 단계, 상기 제1 어플리케이션 실행을 위해 메모리 압축이 필요한지 여부를 판단하는 판단 단계, 메모리 압축이 필요한 경우, 상기 전자 장치의 백그라운드 상에서 실행 중인 어플리케이션에 대응하는 메모리를 압축하는 압축 단계, 및 상기 제1 어플리케이션을 실행하는 실행 단계를 포함하는 것을 특징으로 한다.

Description

전자 장치의 메모리 압축 방법 및 장치{Method and apparatus for compressing memory of electronic device}
본 발명은 전자 장치에 관한 것으로, 보다 구체적으로, 전자 장치의 메모리의 압축 방법 및 장치에 관한 것이다.
최근 어플리케이션(application)의 복잡도가 증가함에 따라 사용하는 메모리 크기도 증가하고 있다. 이에 따라 전자 장치에 이용되는 시스템 메모리의 크기가 다소 증가하기는 했지만, 어플리케이션이 요구하는 메모리 요구량을 충분히 만족시키지는 못하고 있다.
가용 메모리 공간을 확보하기 위한 방법으로 스왑핑(swapping) 방법이 있다. 상기 스왑핑 방법이란, 가용 메모리 공간의 확보를 위해 데이터를 메모리 공간에서 디스크 공간으로 이동시키는 것을 의미할 수 있다. 그런데, 이러한 스왑핑(swapping)을 수행할 경우, 일반적으로 메모리에 대한 접근 속도보다, 디스크에 대한 접근 속도가 느리기 때문에 시스템 성능이 저하될 수 있다.
이러한 문제를 해결하기 위한 기술 중 하나로 메모리를 압축하는 메모리 압축 방법을 고려해볼 수 있다. 메모리 압축 기술은 메모리 저장 공간 확보와 트래픽 대역(traffic bandwidth) 감소를 위해 사용되고 있다.
그런데 종래 기술에 따른 메모리 압축은 압축 속도와 압축률 사이의 트레이드 오프(trade-off) 관계가 존재한다.
본 발명이 이루고자 하는 기술적 과제는 효율적인 메모리 압축 방법 및 장치를 제공하는 것이다.
보다 구체적으로 본 발명은 메모리 상에 로딩된 전체 또는 적어도 하나의 어플리케이션들에 대응하는 데이터를 선택적으로 압축하여, 메모리의 가용 공간을 효율적으로 확보하는 방법 및 장치를 제공하는 것을 목적으로 한다.
또한, 본 발명은 시스템 상황에 따라 메모리 압축 방식을 변경하여 효율적으로 메모리를 압축하는 방법 및 장치를 제공하는 것을 목적으로 한다.
상기한 목적을 달성하기 위한 본 발명의 전자 장치의 메모리 압축 방법은 제1 어플리케이션에 대한 실행 요청을 감지하는 감지 단계, 상기 제1 어플리케이션 실행을 위해 메모리 압축이 필요한지 여부를 판단하는 판단 단계, 메모리 압축이 필요한 경우, 상기 전자 장치의 백그라운드 상에서 실행 중인 어플리케이션에 대응하는 메모리를 압축하는 압축 단계, 및 상기 제1 어플리케이션을 실행하는 실행 단계를 포함하는 것을 특징으로 한다.
또한, 본 발명의 전자 장치는 메모리, 및 제1 어플리케이션에 대한 실행 요청을 감지하고, 상기 제1 어플리케이션 실행을 위해 메모리 압축이 필요한지 여부를 판단하며, 메모리 압축이 필요한 경우 상기 전자 장치의 백그라운드 상에서 실행 중인 어플리케이션에 대응하는 메모리를 압축하고, 상기 제1 어플리케이션을 실행하도록 제어하는 제어부를 포함하는 것을 특징으로 한다.
또한, 본 발명의 일 실시예에 따르면 시스템 요구사항을 확인하는 단계, 확인된 시스템 요구사항에 기반하여 메모리에 저장된 데이터를 압축하는데 사용되는 압축 주체, 압축 단위 및 압축 프로세스 중 적어도 하나에 대한 압축 요소를 선택하는 단계 및 상기 선택된 압축 요소에 따라 메모리 압축을 수행하는 단계를 포함하는 것을 특징으로 하는 메모리 압축 방법을 제공한다.
또한, 본 발명의 일 실시 예에 따르면, 데이터를 저장하는 메모리, 시스템 요구사항을 확인하고, 확인된 시스템 요구사항에 기반하여 메모리에 저장된 데이터를 압축하는데 사용되는 압축 주체, 압축 단위 및 압축 프로세스 중 적어도 하나에 대한 압축 요소를 선택하고, 상기 선택된 압축 요소에 따라 메모리 압축을 수행하도록 제어하는 CPU를 포함하는 것을 특징으로 하는 전자 장치를 제공한다.
또한, 본 발명의 일 실시예에 따른 복수 개의 어플리케이션이 설치되어 적어도 두 개의 어플리케이션이 동시에 실행될 수 있는 전자 장치의 메모리 압축 방법은 제1 어플리케이션에 대한 실행 요청을 감지하는 단계, 상기 제1 어플리케이션 실행에 필요한 메모리 크기와 백그라운드 상에서 실행 중인 적어도 하나의 어플리케이션에 따른 가용 메모리 크기를 비교하는 단계, 및 상기 비교 결과, 상기 제1 어플리케이션 실행에 필요한 메모리 크기가 더 큰 경우 상기 백그라운드 상에서 실행 중인 적어도 하나의 어플리케이션에 대응하는 메모리를 압축하는 단계를 포함할 수 있다.
또한, 본 발명의 일 실시예에 따른 복수 개의 어플리케이션이 설치되어 적어도 두 개의 어플리케이션이 동시에 실행될 수 있는 전자 장치는 메모리, 및 제1 어플리케이션에 대한 실행 요청을 감지하면, 상기 제1 어플리케이션 실행에 필요한 메모리 크기와 백그라운드 상에서 실행 중인 적어도 하나의 어플리케이션에 따른 가용 메모리 크기를 비교하고, 상기 비교 결과 상기 제1 어플리케이션 실행에 필요한 메모리 크기가 더 큰 경우 상기 백그라운드 상에서 실행 중인 적어도 하나의 어플리케이션에 대응하는 메모리를 압축하도록 제어하는 제어부를 포함하는 것을 특징으로 한다.
본 발명의 실시 예에 따르면 메모리 상에 로딩된 전체 또는 적어도 하나의 어플리케이션들에 대응되는 데이터를 선택적으로 압축하여, 메모리의 가용 공간을 효율적으로 확보할 수 있다. 이에 따라, 별도의 메모리를 추가할 필요 없이, 본래 구비된 메모리를 보다 효율적으로 활용할 수 있어 메모리 추가에 따른 제조 비용 절감을 통해 저비용으로 전자 장치를 생산할 수 있다. 또한, 접근 속도가 낮은 디스크를 이용하지 않아 데이터 로딩 속도를 향상시킬 수 있다.
또한, 본 발명의 실시예에 따르면 시스템 상황에 따라 압축 방식을 변경함으로써, 효과적인 메모리 압축을 수행할 수 있다.
또한, 본 발명의 실시 예에 따르면 압축 속도 향상 및 압축률 향상을 통한 압축 성능을 향상시킬 수 있다.
도 1은 본 발명의 실시예에 따른 메모리 압축 시나리오를 도시하는 도면.
도 2는 본 발명의 실시예에 따라 전자 장치가 메모리를 압축하는 과정을 도시하는 순서도.
도 3은 본 발명의 실시예에 따라 전자 장치가 메모리 압축을 실행하는 과정을 도시하는 순서도.
도 4는 도 3의 S310 단계 즉, 압축할 어플리케이션을 선택하는 과정을 구체적으로 도시하는 도면.
도 5는 본 발명의 다양한 실시예 중 임의의 실시예에 대한 전체 흐름을 도시하는 순서도.
도 6은 압축 주체에 따른 특징을 설명하는 도면.
도 7은 압축 단위에 따른 특징을 설명하는 도면.
도 8은 압축 규칙에 따른 특징을 설명하는 도면.
도 9는 본 발명의 일 실시 예인 메모리 압축 장치 및 메모리 압축 장치의 압축 수행 과정을 설명하는 도면.
도 10 내지 도 12은 본 발명의 일 실시 예인 하드웨어 가속기 기반 메모리 압축을 위한 시스템 온 칩(SoC, System on Chip)의 구조에 대한 다양한 실시예를 설명하는 도면.
도 13은 본 발명의 일 실시 예인 메모리 압축 주체를 선택하는 방법을 설명하는 흐름도.
도 14는 본 발명의 일 실시 예인 메모리 압축 단위를 결정하는 방법을 결정하는 흐름도.
도 15는 본 발명의 일 실시 예인 메모리 압축 단위를 결정하는 방법을 결정하는 흐름도.
도 16은 본 발명의 일 실시 예인 멀티 페이지 압축 시스템 동작을 설명하는 흐름도.
도 17은 본 발명의 일 실시 예인 하드웨어 가속기 기반 압축 시스템의 특징을 설명하는 도면.
도 18은 본 발명의 일 실시 예에 따른 시스템 파라미터 사이의 관계를 설명하는 도면.
도 19는 본 발명의 일 실시 예에 따른 압축 프로세스 과정을 설명하는 흐름도.
도 20은 본 발명의 일 실시 예인 메모리 압축 장치를 설명하는 블록도.
이하, 첨부된 도면들을 참조하여 다양한 실시 예들을 상세히 설명한다. 이때, 첨부된 도면들에서 동일한 구성 요소는 가능한 동일한 부호로 나타내고 있음에 유의해야 한다. 또한 본 발명의 요지를 흐리게 할 수 있는 공지 기능 및 구성에 대한 상세한 설명은 생략할 것이다. 하기의 설명에서는 본 발명의 다양한 실시 예들에 따른 동작을 이해하는데 필요한 부분만이 설명되며, 그 이외 부분의 설명은 본 발명의 요지를 흩트리지 않도록 생략될 것이라는 것을 유의하여야 한다.
도 1은 본 발명의 실시예에 따른 메모리 압축 시나리오를 도시하는 도면이다.
우선, 도 1a는 적어도 하나의 어플리케이션이 메모리(100) 상에 로딩된 상태에서, 전자 장치(electronic device)의 상태가 변화된 경우를 도시한다. 상기 전자 장치는 스마트 폰, 휴대 단말기 등 이동성을 가지는 모바일 장치를 포함할 수 있지만, 반드시 이동성을 가지는 장치에 한정되는 것은 아니다. 예를 들어, 상기 전자 장치는 개인용 컴퓨터(Personal Computer), 서버(Server) 등을 포함할 수도 있다.
전자 장치의 상태가 변화된 경우에 대해서는 후술하는 바와 같이, 다양한 실시예가 존재할 수 있지만, 도 1을 설명함에 있어서는 임의의 어플리케이션 실행 요청이 수신된 경우를 예시하여 설명하도록 한다.
도 1a에서 도시되는 바와 같이, 임의의 어플리케이션에 대한 실행 요청이 수신되면, 상기 어플리케이션 실행에 필요한 데이터 및 관련 데이터들(이하, 어플리케이션에 상응하는 데이터)이 메모리(100)에 로딩되고, 상기 데이터 및 관련 데이터들이 메모리(100)에 로딩되면 상기 실행 요청된 어플리케이션이 실행된다. 도 1a는 어플리케이션 A, B, C에 대한 실행 요청이 수신되어, 각 어플리케이션 실행에 필요한 데이터 및 관련 데이터들이 메모리(100)에 로딩된 후, 실행된 상태를 도시한다.
그리고, 사용자 요청 등에 따라, 특정 어플리케이션에 대한 실행 요청이 수신될 수 있다. 이 경우, 상기 실행 요청된 어플리케이션 실행에 필요한 데이터 및 관련 데이터를 로딩하거나, 또는 상기 어플리케이션을 실행하기 위해 충분한 메모리 공간이 확보되지 않은 경우, 본 발명의 실시예에 따른 전자 장치는 메모리(100)를 압축할 수 있다.
본 발명의 실시예에 따르면, 상기 전자 장치는 어플리케이션에 상응하는 데이터가 로딩되는 단계, 또는 로딩 후 상기 어플리케이션을 실행하는 단계 중 적어도 하나의 단계에서 메모리 압축을 실행할 수 있다. 예를 들어, 전자 장치는 백그라운드에서 실행 중인 어플리케이션 중, 특정 조건을 만족시키는 어플리케이션에 대응하는 메모리를 압축한다. 본 발명에서는 메모리를 압축한다는 의미가 해당 어플리케이션에 대한 데이터를 압축한다는 것을 의미할 수 있다.
도 1b는 적어도 하나의 어플리케이션이 압축된 상태를 도시한다. 그러면, 상기 실행 요청된 어플리케이션을 실행할 수 있는 가용 공간이 확보될 수 있다.
이어서, 전자 장치는 도 1b에서 도시된 바와 같이, 상기 실행 요청된 어플리케이션을 실행할 수 있다. 본 발명의 실시예에서, 어플리케이션을 실행한다는 것은, 메모리(100) 상에 어플리케이션에 상응하는 데이터를 로딩 및 실행한다는 것을 의미할 수 있다.
한편, 도 1b를 통해 메모리 압축 과정이 수행된 후, 임의의 어플리케이션에 대한 실행 요청이 또 다시 수신될 수 있다. 이 경우, 실행 요청된 어플리케이션의 타입(type)에 따라 그 동작을 달리할 수 있다. 예를 들어, 메모리 압축 과정 수행 후 실행 요청된 어플리케이션의 타입은 메모리 상에 로딩되지 않은 어플리케이션, 메모리 상에서 압축되어 있는 어플리케이션, 메모리 상에 로딩된 상태이지만 압축되어 있지 않은 어플리케이션을 포함할 수 있다.
도 1c는, 상기 과정을 통해 메모리 압축 과정이 수행된 후 압축된 메모리에 상응하는 어플리케이션에 대한 실행 요청이 수신된 경우의 수행 과정을 도시하는 도면이다.
도 1c에 도시된 바와 같이, 메모리 압축 후 압축된 메모리에 상응하는 어플리케이션(어플리케이션 A)에 대한 실행 요청이 수신되면, 상기 실행 요청된 어플리케이션에 대응하는 압축된 메모리를 압축 해제할 수 있다. 그러면, 상기 실행 요청된 어플리케이션은 메모리(100) 상에 로딩된 상태이므로, 전자 장치는 상기 실행 요청된 어플리케이션을 실행할 수 있다.
또는, 도 1c에는 도시되지 않았지만, 메모리 압축 후 신규 어플리케이션에 대한 실행 요청이 수신될 수 있다. 신규 어플리케이션이란 메모리(100) 상에 로딩되지 않은 어플리케이션을 의미한다. 이 경우, 전자 장치는 상기 실행 요청된 신규 어플리케이션의 실행을 위해 메모리(100) 압축이 필요한지 여부를 판단하고, 상기 판단 결과에 따라 메모리(100) 압축 후 상기 신규 어플리케이션을 실행할 수 있다.
또는, 도 1c에는 도시되지 않았지만, 메모리 압축 후, 상기 메모리(100) 상에 로딩은 되어 있지만 압축되지 않은 어플리케이션에 대한 실행 요청이 수신될 수도 있다. 이 경우, 전자 장치는 상기 실행 요청된 어플리케이션을 재실행할 수 있다.
상기한 다양한 실시예에 대해서는 도 5를 참고하여 후술하도록 한다.
도 2는 본 발명의 실시예에 따라 전자 장치가 메모리를 압축하는 과정을 도시하는 순서도이다.
우선, 전자 장치는 S210 단계에서, 전자 장치에 대한 상태 변화를 감지할 수 있다. 그리고 전자 장치는 상기 감지된 상태 변화에 기반하여, 메모리 압축이 필요한지 여부를 판단하게 되는데, 이하에서는 메모리 압축 필요 여부에 대한 판단을 개시하는 조건에 대해 기술하도록 한다.
예를 들어, 전자 장치는 임의의 어플리케이션에 대한 실행 또는 종료 요청이 감지되면 메모리 압축 필요 여부를 판단할 수 있다. 예를 들어, 어플리케이션 실행 요청이 감지되면, 전자 장치는 되도록 많은 가용 공간을 확보하는 것이 상기 실행 요청된 어플리케이션을 실행하기에 유리할 수 있을 것이다.
상기한 어플리케이션 실행, 종료 요청에 대한 감지 이외에, 전자 장치는 버튼 클릭 이벤트 감지 시, 메모리 압축 필요 여부를 판단할 수 있다. 상기 버튼은 물리적 버튼 또는 소프트웨어 버튼을 포함할 수 있으며, 볼륨 버튼, 웨이크업/슬립 버튼(또는 전원 버튼), 홈(Home) 버튼을 포함할 수 있다. 예를 들어, 홈 버튼 클릭이 감지되면, 메인 화면에서 실행 중인 어플리케이션을 백그라운드 실행으로 전환해야 하므로, 상기 메인 화면에서 실행 중인 어플리케이션을 압축 대상으로 선택할 수도 있을 것이다. 또한, 전자 장치는 일정 시간 간격으로 메모리 압축 필요 여부를 확인할 수 있다. 예를 들어, 전자 장치는 미리 설정된 일정 시간 간격으로 메모리 상태(예를 들어, 가용 공간)를 확인하고, 메모리를 압축할 필요가 있는지 여부를 주기적으로 판단할 수 있다.
또한, 전자 장치는 CPU의 상태가 아이들(Idle) 상태 또는 활성(Active) 상태 상호간 전환되는 경우, 메모리 압축 필요 여부를 판단할 수 있다. 또한, 통화가 개시되거나 또는 수행 중인 통화가 종료된 경우, 팝 업 메시지(전화, 알람, SMS 등)가 표시되는 경우, 터치 입력이 감지되는 경우, 전자 펜 사용 또는 사용 가능성(예를 들어, 전자펜 근접이 감지)이 감지되는 경우, 블루투스와 같은 근거리 무선 통신 사용 여부가 감지되는 경우, 인터넷 접속이 감지되는 경우 등에, 메모리 압축 여부를 판단할 수 있다.
상기 사용 가능성 감지와 관련하여, 전자 장치의 디스플레이부에는 적어도 하나의 어플리케이션에 대응하는 아이템들이 표시될 수 있다. 상기 아이템은 예를 들어, 아이콘일 수 있다. 그리고 전자 장치가 임의의 터치 수단이 상기 아이템 중 어느 하나의 아이템에 근접하고 있는 것으로 감지하는 경우, 또는 임의의 어플리케이션에 대응하는 동작이 수행되는 경우 해당 어플리케이션에 대한 실행 요청이 감지된 것으로 판단하여 메모리 압축 필요 여부에 대한 판단을 개시하거나 또는 메모리 압축 필요 여부를 판단할 수 있다.
상기 근접한다는 것은 상기 임의의 터치 수단에 대한 터치 감도가 미리 설정된 감도 이상이 되는 경우를 의미할 수 있다. 또한, 상기 터치 수단은 전자 펜 또는 사용자 손가랑 중 적어도 하나를 포함할 수 있지만, 반드시 이에 한정되는 것은 아니며, 터치스크린 상에 터치 입력을 가할 수 있는 모든 수단을 포함할 수 있다.
전자 장치는 상기 예시한 인자들에 기반하여, 메모리 압축 필요 여부에 대한 판단을 개시할 수 있다.
이에 따라, 전자 장치는 S220 단계로 진행하여, 메모리 압축이 필요한지 여부를 판단할 수 있다. 예를 들어, 전자 장치는 가용 메모리 공간이 미리 설정된 기준 값 이하인 경우, 메모리 압축이 필요한 것으로 판단할 수 있다. 또한, 전자 장치는 백그라운드에서 실행 중인 어플리케이션의 개수가 미리 설정된 개수 이상인 경우, 메모리 압축이 필요한 것으로 판단할 수도 있다. 또한, 전자 장치는 특정 시간 동안 사용하지 않은 어플리케이션이 백그라운드 상에 존재하거나, 사용자가 설정한 특정 어플리케이션이 백그라운드 상에 존재 하거나, 사용 빈도가 낮은 어플리케이션이 백그라운드 상에 존재하는 경우, 메모리 압축이 필요한 것으로 판단할 수 있다. 또한, 전자 장치는 실행 요청된 어플리케이션이 필요로 하는 메모리 크기가 현재 백그라운드 상에 존재하는 어플리케이션들에 따른 가용 메모리보다 큰 경우, 메모리 압축이 필요한 것으로 판단할 수 있다. 또한, 전자 장치는 실행 요청된 어플리케이션이 필요로 하는 메모리 크기가 현재 백그라운드 상에 존재하는 어플리케이션들에 상응하는 데이터가 차지하는 메모리 크기로 인해 확보되지 못하는 경우, 메모리 압축이 필요한 것으로 판단할 수 있다.
S220 단계 판단 결과, 메모리 압축이 필요한 것으로 판단된 경우, 전자 장치는 S230 단계로 진행하여 메모리 압축 과정을 실행할 수 있다. 예를 들어, 전자 장치는 백그라운드 상에서 실행 중인 어플리케이션에 대응하는 메모리를 압축할 수 있다. 이는 백그라운드 상에서 실행 중인 어플리케이션에 따른 데이터(예를 들어, 카메라 어플리케이션일 경우, 저장된 이미지 데이터)를 압축하는 것임을 의미할 수 있다.
S230 단계의 메모리 압축 과정에 대해서는 하기에서 구체적으로 후술하도록 한다.
상기 메모리 압축 과정 실행 후, 전자 장치는 S240 단계로 진행하여, 상태 변화를 수행할 수 있다. 예를 들어, 실행 요청된 어플리케이션을 실행할 수 있다.
한편, S220 단계 판단 결과, 메모리 압축이 필요하지 않은 것으로 판단된 경우, 전자 장치는 S240 단계로 진행하여 상태 변화를 수행할 수 있다
한편, 상기에서는 메모리 압축 과정 실행 후, 상태 변화를 수행한다고 기술하였지만, 반드시 이러한 순서에 한정되지 않을 수 있다. 예를 들어, 전자 장치는 S230 단계에서, 메모리 압축 과정 실행 후, 다시 S220 단계로 복귀하여 메모리 압축 과정이 필요한지 여부를 다시 판단할 수 있다. 상기 판단 결과, 메모리 압축이 필요하다고 판단될 경우 S230 단계의 메모리 압축 과정을 재수행 할 수도 있다.
또한, 도 2를 설명함에 있어서, 전자 장치의 상태 변화가 감지된 후 메모리 압축이 필요한지를 판단하고, 필요 시 메모리 압축을 수행하는 순서로 기술하였지만, 본 발명의 실시예가 반드시 이에 한정되는 것은 아니다. 예를 들어, 전자 장치의 상태 변화가 감지되면, 메모리 압축 필요 여부를 판단하지 않고 바로 메모리 압축 과정을 실행할 수도 있다. 예를 들어, 어플리케이션 실행 요청이 수신되면, 전자 장치는 바로 메모리를 압축할 수 있다.
도 3은 본 발명의 실시예에 따라 전자 장치가 메모리 압축을 실행하는 과정을 도시하는 순서도이다.
도 3에서 도시되는 바와 같이, 전자 장치는 S310 단계에서, 압축할 어플리케이션을 선택한다. 예를 들어, 전자 장치는 백그라운드에서 실행 중인 모든 어플리케이션을 압축할 어플리케이션으로 선택할 수도 있고, 또는 백그라운드에서 실행 중인 어플리케이션 중 임의의 하나 이상의 어플리케이션을 압축할 어플리케이션으로 선택할 수도 있다.
그리고 전자 장치는 S320 단계에서, 압축 주체를 선택할 수 있다. 본 발명의 실시예에 따르면, 메모리를 압축함에 있어서, CPU 또는 하드웨어 가속기가 선택적으로 메모리를 압축할 수 있다.
압축 주체가 결정되면, 전자 장치는 S330 단계에서 전자 장치는 압축 단위를 선택할 수 있다. 본 발명의 실시예에 따르면, 메모리를 압축함에 있어서 싱글 페이지 또는 멀티 페이지 단위로 압축할 수 있다.
압축 단위가 결정되면, 전자 장치는 S340 단계로 진행하여, 본 발명의 실시예에 따라 압축 프로세스를 실행할 수 있다.
상기한 도 3의 각 단계에 대해서는 도면을 참고하여 이하에서 구체적으로 설명하도록 한다.
도 4는 도 3의 S310 단계 즉, 압축할 어플리케이션을 선택하는 과정을 구체적으로 도시하는 도면이다.
우선, 전자 장치는 S410 단계에서, 메모리 압축을 위한 우선 순위 리스트가 존재하는지 여부를 판단할 수 있다. 상기 우선 순위 리스트에 포함된 어플리케이션은 압축할 대상으로 우선적으로 선택될 수 있다.
우선 순위 리스트가 존재하는 경우, 전자 장치는 S420 단계로 진행하여 상기 우선 순위 리스트에 포함된 어플리케이션들 중 적어도 하나의 어플리케이션이 메모리 상에 존재하거나 또는 백그라운드 상에서 실행 중인지 여부를 판단할 수 있다. 상기 우선 순위 리스트에 포함된 적어도 하나의 어플리케이션이 메모리 상에 존재하거나 또는 백그라운드 상에서 실행 중인 경우, 전자 장치는 해당 어플리케이션을 압축할 대상으로 선택할 수 있다. 즉, 전자 장치는 상기 어플리케이션에 대응하는 메모리를 압축할 대상으로 선택할 수 있다.
한편, S420 단계에서, 우선 순위 리스트에 포함된 어플리케이션들이 메모리 상에 존재하지 않고 백그라운드 상에서 실행 중이지 않은 경우, 전자 장치는 S440 단계로 진행하여, 압축할 어플리케이션을 선택함에 있어서 상관도를 고려할지 여부를 판단할 수 있다. 상기 상관도는 전자 장치의 상태 변화를 일으킨 요인 또는 최근에 사용한 어플리케이션에 대한 상관도를 의미할 수 있는 바, 이에 대해서는 이하에서 설명하도록 한다.
상관도를 고려하는 경우, 전자 장치는 S450 단계로 진행하여, 단말의 상태 변화를 일으킨 요인과 상관도가 낮은 어플리케이션 또는 최근에 사용한 어플리케이션과 상관도가 낮은 어플리케이션을 압축할 대상으로 선택할 수 있다. 예를 들어, 전자 장치는 카메라 어플리케이션이 실행된 경우, 카메라와 금융 서비스의 상관도가 낮다는 전제 하에 금융 어플리케이션을 압축할 어플리케이션으로 선택할 수 있다.
마찬가지 원리로, 전자 장치는 최근에 사용한 어플리케이션이 카메라 어플리케이션일 경우, 사용자가 카메라 어플리케이션을 이용하여 이미지 촬영 후 SNS에 업로드할 가능성이 높다는 가정 하에, 카메라 어플리케이션과 SNS 어플리케이션의 상관도는 높다고 판단할 수 있지만, 금융 서비스 어플리케이션은 카메라 어플리케이션과 상관도가 낮다고 판단할 수 있다. 이러한 판단 결과에 따라, 최근에 사용한 어플리케이션이 카메라 어플리케이션인 경우, 전자 장치는 금융 어플리케이션을 압축할 어플리케이션으로 선택할 수 있다.
한편, 상관도를 고려하지 않는 경우, 전자 장치는 S460 단계로 진행하여 사용 빈도가 낮은 어플리케이션을 압축할 어플리케이션을 선택할 수도 있다.
상기한 도 4를 설명함에 있어서, 전자 장치가 압축할 어플리케이션을 선택함에 있어서, 우선 순위 리스트 존재 여부, 상관도 반영 여부, 사용 빈도 반영 여부를 순차적으로 고려하는 것으로 기술하였지만, 반드시 이러한 순서에 국한되는 것은 아니다. 예를 들어, 전자 장치는 우선 순위 리스트 존재 여부, 상관도 또는 사용 빈도 중 적어도 하나의 기준에 따라 압축할 어플리케이션을 선택할 수 있는 것이고, 상기한 기준을 어떻게 조합할 지, 어떠한 순서로 판단할지 여부는 다양한 방법으로 결정될 수 있는 것이다.
도 5는 본 발명의 다양한 실시예 중 임의의 실시예에 대한 전체 흐름을 도시하는 순서도이다.
구체적으로, 도 5는 도 2에서 기술된 전자 장치의 상태 변화가 구체적으로 어플리케이션 실행 요청 감지인 경우, 압축 필요 여부에 따라 메모리를 압축하고, 이후에 또 다른 신규 어플리케이션 실행 요청이 감지된 경우의 처리 과정을 도시한다. 도 5를 설명함에 있어, 도 2와 중복되는 내용은 필요에 따라 생략하기로 한다.
우선, 전자 장치는 S510 단계에서 어플리케이션 실행 요청이 수신되었음을 감지할 수 있다. 그러면 전자 장치는 S515 단계에서 메모리 압축이 필요한지 여부를 판단할 수 있다.
압축이 필요한 경우, 전자 장치는 S520 단계로 진행하여, 메모리 압축을 실행한다. 메모리 압축을 실행한 후 또는 메모리 압축이 필요 없는 경우, 전자 장치는 S525 단계로 진행하여, 실행 요청된 어플리케이션을 실행할 수 있다.
이후, 전자 장치는 S530 단계에서, 다시 어플리케이션 실행 요청을 감지할 수 있다. 그러면 전자 장치는 S535 단계에서, 상기 실행 요청된 어플리케이션이 신규 어플리케이션인지 여부 예를 들어, 실행 요청된 어플리케이션이 메모리상에 로딩되지 않았거나 또는 백그라운드에서 미실행 중인 어플리케이션인지 여부를 판단할 수 있다.
신규 어플리케이션인 경우, 전자 장치는 S540 단계로 진행하여 메모리 압축이 필요한지 여부를 판단할 수 있다. 예를 들어, 전자 장치는 신규 어플리케이션이 필요로 하는 메모리 크기와 현재의 가용 메모리 크기를 비교하여 메모리 압축이 필요한지 여부를 판단할 수 있다. 또는 도 2의 S220 단계의 설명에서 기술한 적어도 하나의 판단 기준에 따라 메모리 압축이 필요한지 여부를 판단할 수 있다.
메모리 압축이 필요한 경우, 전자 장치는 S545 단계로 진행하여 메모리 압축을 실행한다. 메모리 압축을 실행하는 구체적인 과정은 도 2의 S230 단계에서 기술한 바 있으므로 자세한 설명은 생략하기로 한다. 메모리 압축 실행 후, 전자 장치는 S550 단계로 진행하여 실행 요청된 어플리케이션을 신규 실행할 수 있다.
한편, S540 단계에서 메모리 압축이 필요 없다고 판단된 경우, 전자 장치는 S550 단계로 진행하여 실행 요청된 어플리케이션을 신규 실행할 수 있다.
한편, S535 단계에서, 실행 요청된 어플리케이션이 신규 어플리케이션이 아닌 경우, 전자 장치는 S555 단계로 진행하여 상기 실행 요청된 어플리케이션이 메모리 상에 압축되어 있는 어플리케이션인지 여부를 판단할 수 있다.
메모리 상에 압축되어 있는 경우, 전자 장치는 S560 단계로 진행하여 메모리 압축이 필요한지 판단할 수 있다. 메모리 압축 필요 여부에 대한 판단은 S540 단계에서 설명한 바 있으므로 자세한 설명은 생략하기로 한다. 메모리 압축이 필요한 경우, 전자 장치는 S565 단계에서 메모리 압축을 실행할 수 있다. 그리고 전자 장치는 실행 요청된 어플리케이션이 압축된 상태이므로, S570 단계로 진행하여 압축된 어플리케이션을 압축 해제한 후 이를 실행할 수 있다.
한편, S560 단계에서 메모리 압축이 필요하지 않은 경우, 전자 장치는 S570 단계를 실행할 수 있다.
한편, S555 단계의 판단 결과 실행 요청된 어플리케이션이 압축되지 않은 경우, 전자 장치는 S575 단계로 진행하여 상기 실행 요청된 어플리케이션을 재실행할 수 있다.
이하에서는 도 3의 S320 단계 내지 S340 단계에 대해 구체적으로 설명하도록 한다.
이상에서는 메모리 상에서 압축할 대상을 선택하는 과정이었다면, 이하에서는 압축할 대상으로 선택된 메모리 또는 어플리케이션을 보다 효율적으로 압축하는 과정에 대해 기술할 것이다.
우선, 본 발명의 일 실시예에서는 메모리 압축을 실행함에 있어서, 시스템 상황에 맞는 압축 방식을 사용하여 시스템 성능을 향상시키는 방안을 제안한다. 구체적으로는 도 3을 통해 설명한 바와 같이, 시스템 상황에 따라 압축을 수행하는 주체, 압축 단위, 압축 알고리즘을 선택할 수 있다.
이하에서는 도 6 내지 도 8을 통해, 압축 방식을 선택함에 있어서, 고려해야 할 인자 및 각 인자들에 대한 특징에 대해 설명하도록 한다. 구체적으로 도 6은 압축 주체에 따른 특징을 설명하는 도면이고, 도 7은 압축 단위에 따른 특징을 설명하는 도면이며, 도 8은 압축 규칙에 따른 특징을 설명하는 도면이다.
우선, 도 6을 참조하면, 전자 장치가 압축 주체로서 CPU를 이용하는 경우와 하드웨어 가속기(H/W accelerator)를 이용하는 경우의 특징을 비교하고 있다. 본 발명의 실시 예에서는 시스템 상황에 따라 메모리 압축을 수행하는 주체로서 CPU와 하드웨어 가속기를 선택적으로 이용하는 구성을 제안한다. CPU로 압축을 수행하는 경우 시스템과의 유연성(flexibility) 및 비용(cost) 관점에서 하드웨어 가속기를 이용하는 경우 보다 효율적이다. 반면, 하드웨어 가속기로 압축을 수행하는 경우 CPU를 이용하는 경우 보다 압축 시간(compression time)을 단축 시킬 수 있고, 소비 전력(power reduction)이 적다. 본 발명의 실시 예에서 제안하는 하드웨어 가속기(H/W accelerator)는 CPU가 아닌 메모리 압축을 위한 구성요소 일 수 있다. 또한 상기 하드웨어 가속기는 메모리 압축을 위한 전용 구성 요소일 수 있다.
유연성(flexibility)에 대하여 일반적으로 CPU는 하드웨어 가속기(H/W Accelerator)에 비해 유연성(flexibility)이 좋을 수 있다. 하드웨어 가속기(H/W Accelerator)는 미리 결정해 놓은 일은 잘 할 수 있지만 상황의 변화에 따라 알고리즘을 추가하거나 변경하는 것이 어려울 수 있다. 예를 들어 새로운 압축 알고리즘이 추가되어 제품에 적용해야 하는 경우 CPU는 소프트웨어(Software) 변경/추가 등을 통해 쉽게 추가 사항을 반영할 수 있지만, 하드웨어 가속기(H/W Accelerator)는 이러한 추가 사항 반영이 어려울 수 있다. 따라서 유연성(flexibility)이 높아야 하는 경우에는 CPU가 보다 적합할 수 있다.
비용(cost)에 대하여 하드웨어 가속기(H/W Accelerator)는 기존 CPU 기반의 SoC에 추가로 비용을 지불하여 설계를 해야 한다. 따라서 이러한 추가 비용에 대한 부담이 있는 경우, 또는 다른 이유로 해서 하드웨어 가속기(H/W Accelerator)가 SoC에 없는 경우에는 CPU를 사용하는 것이 적합할 수 있다.
도 7을 참조하면, 압축 단위로서 단일 페이지 압축(single-page compression)과 멀티 페이지 압축(multi-page compression)을 수행하는 경우의 특징을 비교하고 있다. 본 발명의 실시 예에서는 시스템 상황에 따라 메모리 압축 단위로서 단일 페이지 압축 또는 멀티 페이지 압축을 선택적으로 이용하는 구성을 제안한다. 단일 페이지 압축을 수행하는 경우 멀티 페이지 압축을 수행하는 경우 보다 구현(implementation)이 용이하고, 높은 압축률로 메모리 사이즈(memory size)를 줄일 수 있는 장점이 있다. 반면, 멀티 페이지 압축을 수행하는 경우, 빠른 속도(acceleration)로 압축을 수행할 수 있고, 소비 전력(power reduction)을 줄일 수 있는 장점이 있다.
도 8을 참조하면, 압축 규칙으로 고정된 알고리즘(fixed algorithm)을 이용하는 경우와 적응적 알고리즘(adaptive algorithm)을 적용하는 경우의 특징을 비교하고 있다. 본 발명의 실시 예에서는 시스템 상황에 따라 압축 알고리즘을 변경하여 압축하는 방법을 제안하고 있다. 시스템 상황에 따라 고정된 알고리즘을 이용하는 경우 압축 수행 능력에 이점이 있고, 적응적 알고리즘을 이용하는 경우 적응성에 장점이 있다.
상기에서는 도 6 내지 도 8을 참조하여, 메모리 압축을 수행 함에 있어 어떤 방법을 선택하느냐에 따라 각각 어떤 장단점이 있다는 것을 살펴보았다. 따라서 시스템 상황에 맞는 압축 방식을 사용할 경우 시스템 성능을 향상시킬 수 있다.
도 9는 본 발명의 일 실시 예인 메모리 압축 장치 및 메모리 압축 장치의 압축 수행 과정을 설명하는 도면이다.
도 9를 참조하면, 본 발명의 일 실시 예인 메모리 압축 장치(900)는 CPU(910), 압축할 페이지를 저장하기 위한 입력 버퍼(920, input buffer), 압축기(930), 압축된 페이지를 저장하기 위한 출력 버퍼(940, output buffer), 압축할 또는 압축된 페이지(page)에 관한 압축 정보 저장 공간(950, meta info)를 포함할 수 있다. N은 입력 버퍼의 크기를 나타낸다. 는 발생 속도(arrival rate)를 나타내는 지표로 OS로부터 압축할 페이지가 발생되는 평균 속도를 의미한다. 는 압축 서비스 속도를 나타내는 지표로 평균 압축 속도를 의미한다. 상기 압축 속도는 페이지 별 압축 속도일 수 있다. R은 압축 비율을 나타내는 지표로 평균 압축률을 의미한다. 평균 압축률은 페이지를 기준으로 한 압축률일 수 있다. 본 발명의 실시 예에서 설명하는 시스템 상황(system demands)는 어플리케이션의 특징, 가용 메모리의 크기, 확보할 메모리의 크기, 요구되는 압축 속도/압축률/소비전력/응답성, CPU 동작 상태, 버터리 상태, 트래픽(traffic) 상태 등을 포함할 수 있다. 본 발명의 실시 예에서는 상기 시스템 상황에 따라 압축 방법을 변경하는 방법을 제공한다.
상기 각 구성요소에 대하여 더욱 자세히 설명하면, 일반적으로 OS (operation system)는 메모리 공간을 일정한 크기로 나누어 관리한다. 그 단위를 보통 페이지(page)라고 부르며, 시스템에 따라 그 크기는 변경될 수 있다. 본 발명에서 기술하는 페이지란 메모리 관리 단위를 의미하는 것으로, 상기한 바와 같이 그 크기는 시스템에 따라 가변적일 수 있다.
입력 버퍼(920, Input buffer)는 압축할 페이지(page)를 저장하기 위한 공간으로 일종의 가상 램 디스크(virtual RAM disk)이다. 또한 입력 버퍼 사이즈 크기를 나타내는 N(input buffer size N)은 저장할 수 있는 페이지(page) 개수를 의미하고 변경될 수 있다. 출력 버퍼(940, Output buffer)는 페이지(page) 단위로 압축된 결과를 저장하기 위한 공간이며, 그 크기는 입력 버퍼 사이즈 크기 N(input buffer size N)에 따라 변할 수 있다.
압축 정보 저장 공간(950, Meta info)는 페이지(page)에 대한 정보를 저장하기 위한 공간으로 압축할/압축된 페이지(page)들을 구분하기 위한 고유의 인덱스(index)로 관리할 수 있다. 또한 해당 페이지(page)가 저장된 버퍼(buffer)를 나타내기 위한 위치(position)와 버퍼(buffer) 내 위치를 나타내기 위한 주소(address)를 포함할 수 있다. 압축된 페이지(page)의 크기를 저장하기 위한 사이즈(size)도 포함할 수 있다.
상기 발생 속도(λ), 압축 속도(μ), 압축률(R)은 시스템 상황에 따라 압축할 페이지(page)의 발생 속도는 변화할 수 있다. 또한 압축할 페이지(page)의 패턴(pattern)과 사용하는 압축 알고리즘에 따라 페이지(page)의 압축 속도와 압축률은 변화한다. 발생 속도(Arrival rate), 압축 속도(service rate), 압축률(compression ratio)은 이를 각각 나타낸 것이다.
한편, 본 발명의 실시예는 시스템 요구 사항에 기반하여 메모리를 압축하는데 사용되는 압축 주체, 압축 단위 및 압축 프로세스 중 적어도 하나에 대한 압축 요소를 선택한다. 상기 시스템 요구 사항은 전자 장치의 상태에 기반할 수 있다. 예를 들어, 전자 장치의 배터리 잔여량이 미리 설정된 값 이하인 경우, 메모리 압축을 위한 시스템 요구 사항은 저전력을 소비하는 주체가, 빠른 시간에 압축할 수 있을 것으로 설정될 수 있다.
정리하면, 본 발명의 실시예에 따른 시스템 요구 사항이란, 전자 장치의 상태를 반영하여 메모리를 압축하기 위해 고려해야 할 적어도 하나의 항목이라고 정의할 수 있다. 또한, 시스템 요구 사항은 압축 요소 선택에 반영될 수 있다.
상기 시스템 요구 사항은 실행 중이 어플리케이션에 필요한 시스템 요구 사항일 수도 있고, 또는 앞으로 실행되어야 할(또는 실행 요청된) 어플리케이션에 필요한 시스템 요구 사항일 수도 있다. 시스템 요구 사항(system demands)은 다음과 같이 다양한 항목들을 포함할 수 있다. 예를 들어, 시스템 요구 사항은 사용자 동작 시나리오, 멀티 태스킹 환경에서의 태스크 실행 상태, 어플리케이션 특징, 가용 메모리 크기, 메모리 압축을 통해 확보해야 할 메모리 크기, 요구되는 압축 속도, 압축률, 소비 전력, 응답성, CPU 동작 상태, 배터리 상태, 트래픽 상태 등을 포함할 수 있다.
상기 확보할 메모리 크기의 의미는 다음과 같다. 예를 들어, 카메라 어플리케이션에 대한 실행 요청이 수신되었으며, 상기 카메라 어플리케이션 실행에 100MB(Mega Byte)가 필요하다고 가정하도록 한다. 그리고 현재 전자 장치의 가용 메모리가 50 MB라고 가정하도록 한다. 그러면, 카메라 어플리케이션 실행에 50MB 크기의 메모리가 더 필요할 것이고, 이를 메모리 압축을 통해 확보해야 할 메모리 크기라 정의할 수 있다.
또한, 상기 응답성(latency)은 압축 속도와는 다른 개념으로, 압축을 수행한 결과를 얼마나 빨리 받아 볼 수 있는지를 의미한다.
예를 들어, 싱글 페이지 압축에서 페이지 1개를 압축하여 1초 후에 결과를 확인할 수 있는 경우, 응답성은 1초 이며, 압축 속도는 1 page/sec 이다. 반면, 멀티 페이지 압축에서 페이지 10개를 압축하여 5초 후에 결과를 확인할 수 있는 경우, 응답성은 5초이며, 압축 속도는 2 page/sec 이다. 상기 예의 경우 싱글 페이지 압축이 응답성은 빠르나 압축 속도는 느린 경우이다.
한편, 상기한 시스템 요구 사항은 고정적이지 않고 가변할 수 있다. 예를 들어, 현재 실행 중인 어플리케이션의 종류 또는 개수 등에 따라 가용 메모리 공간의 크기가 영향을 받을 수 있으며, 멀티태스킹 환경에서 태스크의 실행 상태에 따라 압축 가능한 크기가 변경될 수 있다. 또한 실행 중인 어플리케이션의 특징에 따라 사용하는 메모리 크기와 데이터 패턴 등이 다를 수 있으며 이는 압축 성능에 영향을 줄 수 있다. 이와 같이, 전자 장치의 동작 상태가 가변적이므로, 전자 장치의 상태에 기반하는 시스템 요구 사항 역시 가변적일 수 있다.
한편, 시스템 요구사항(system demands)을 반영하지 않고, 압축기(930)가 미리 설정된 방식으로 여러 페이지(page)들을 압축할 수도 있다. 이 경우, 압축기(930) 기반 멀티 페이지(Multipage) 압축은 사전에 선택된 방식에 따라 다음과 같이 수행될 수 있다.
압축기(930)는 ZIP 방식의 압축 알고리즘을 사용하고, 입력 버퍼(920, Input buffer)를 1MB로 설정해 둘 수 있다. 이 경우, 4KB 페이지(page)를 기준으로 하면, 입력 버퍼(920, Input buffer)는 256개의 페이지(page)를 저장할 수 있다. 출력 버퍼(940, Output buffer)의 크기는 입력 버퍼(920, Input buffer)의 크기에 따라 결정될 수 있으며, 메타 정보(Meta Info)도 마찬가지로 결정될 수 있다. 예를 들어, 출력 버퍼(940, Output buffer)의 크기는 입력 버퍼(920, Input buffer)의 크기와 동일하게 1MB로 결정될 수 있고, 메타 정보는 32Bytes x 256개 = 8KB로 결정될 수 있다.
입력 버퍼(920, Input buffer)에 미리 정의된 임계값(Threshold) 이상의 압축 페이지가 저장되는, CPU(910)는 압축기(930)에 압축을 시작하라는 제어 명령을 전달한다. 제어 명령을 수신한 압축기(930)는 압축을 수행한 후, Interrupt/Polling 방식 등을 이용하여 압축이 완료되었음을 CPU(910)에게 알린다.
도 10은 본 발명의 일 실시 예인 하드웨어 가속기 기반 메모리 압축을 위한 시스템 온 칩(SoC, System on Chip)의 구조를 설명하는 도면이고, 도 11 및 도 12는 본 발명의 일 실시 예인 하드웨어 가속기 기반 메모리 압축을 위한 시스템 온 칩의 다른 예를 설명하는 도면이다. 도 10 내지 도 12에 도시된 하드웨어 가속기 기반 메모리 압축을 위한 시스템 온 칩은 도 3의 S320 이하의 과정을 수행할 수 있다.
도 10을 참조하면, 압축 시스템 설계에 있어서 유연성, 비용, 압축 속도, 소비 전력 등을 고려하여 압축 주체를 변경할 수 있다. 유연성과 비용을 고려하여 CPU(1010)가 압축을 수행할 수 있으며, 압축 속도 향상과 소비 전력 감소를 위해 압축 전용 하드웨어 가속기(1030, H/W accelerator)를 설계할 수도 있다. 또한 필요에 따라 CPU(1010)와 하드웨어 가속기(1030, H/W accelerator)가 압축을 각각 나누어 동시에 수행할 수도 있다.
도 10 내지 도 12를 참조하면, 본 발명에서 하드웨어 가속기(H/W accelerator, compressor)는 다양한 형태로 구현할 수 있다. 즉, 도 6과 같이 버스(1060, bus)와 메모리 컨트롤러(1070, memory controller) 외부에 압축기(memory compressor, 1030)이 배치될 수 있다. 또한, 도 11과 같이 메모리 컨트롤러(1110, memory controller) 내부에 압축기(1115, memory compressor)가 배치될 수 있다. 또한, 도 12과 같이 버스(1210, bus)와 메모리 컨트롤러(1230, memory controller) 사이에 압축기(1220, memory compressor)가 배치될 수 있다. 상기 도 10 내지 도 12에서 제시한 시스템 온 칩의 구성은 본 발명에서 제안하는 하드웨어 가속기 기반 메모리 압축 장치의 시스템 온 칩의 다양한 구성 예 중 하나일 뿐 권리범위를 이에 한정하는 것은 아니다.
도 13의 과정은 도 3의 S320 과정을 구체적으로 설명하는 도면이다. 구체적으로, 도 13은 본 발명의 일 실시 예인 메모리 압축 주체를 선택하는 방법을 설명하는 흐름도이다.
상기한 바와 같이, 본 발명의 실시예에서는 시스템 요구 사항에 기반하여 메모리를 압축하는데 사용되는 압축 주체, 압축 단위 및 압축 프로세스 중 적어도 하나에 대한 압축 요소를 선택한다. 이에 따라, 전자 장치는 S1310 단계에서, 메모리 압축 주체를 선택하기 위해 시스템 요구 사항을 체크할 수 있다.
요구사항 체크는 상기 전자 장치에 포함된 CPU(또는 제어부)에서 체크할 수 있다. CPU는 시스템 요구 사항으로 어플리케이션의 특징, 가용 메모리의 크기, 확보할 메모리의 크기, 요구되는 압축 속도/압축률/소비전력/응답성, CPU 동작 상태, 배터리 상태, 트래픽(traffic) 상태 등을 체크할 수 있다. 예를 들어, 배터리 상태 체크 결과 한계 값 이하라면, 배터리 소모가 적은 하드웨어 가속기를 압축 주체로 선택할 수 있다.
S1330 단계에서 CPU(또는 제어부)는 압축 동작을 수행하는 주체로서 CPU와 하드웨어 가속기를 동시에 사용하여 압축하는 것이 적합한지를 판단할 수 있다.
S1330 단계에서 CPU와 하드웨어 가속기가 동시에 압축하는 것이 적합하다고 판단하면, S1340 단계로 진행하여 CPU 및 하드웨어 가속기가 압축 동작을 수행할 수 있다. 만약, S1330 단계에서 하나의 주체가 압축 동작을 수행하는 것이 적합하다고 판단하면, S1350 단계로 진행하여 CPU와 하드웨어 가속기 중 압축 주체로서 적합한 요소를 판단할 수 있다.
한편, 도 13의 도면에서는 S1330 단계와 S1350 단계를 나누어 설명하였으나, 압축 주체를 결정하는 하나의 단계에서 CPU와 하드웨어 가속기를 모두 이용하는 것이 적합한지, CPU만 이용하는 것이 적합한지, 하드웨어 가속기만 이용하는 것이 적합한지를 결정할 수도 있을 것이다.
계속해서 S1350 단계에서 CPU(또는 제어부)는 압축 동작을 수행하는 주체로서 CPU가 적합한지 하드웨어 가속기가 적합한지를 판단할 수 있다. 예를 들어, CPU(또는 제어부)는 유연성(flexibility)이 높거나 비용(cost) 제약이 큰 경우 또는 배터리가 기 설정된 배터리 비율 보다 여유 있는 경우 CPU로 압축 동작을 수행하는 것이 타당한 것으로 판단할 수 있다. 또한, CPU(또는 제어부)는 시스템 요구 사항에 따라 압축 속도가 빨라야 되거나 소비 전력이 낮아야 하는 경우, 또는 CPU가 utilization이 매우 낮은 경우 등을 하드웨어 가속기로 압축하는 것이 타당한 경우로 판단할 수 있다. 또한, CPU(또는 제어부)는 시스템 환경에서 요구하는 압축 속도가 매우 높은 경우 CPU와 하드웨어 가속기가 동시에 압축을 수행하도록 판단할 수 있다.
예를 들어, 어플리케이션 실행에 상대적으로 많은 CPU 사용이 요구되는 경우, 예를 들어 이미지 재생을 위한 갤러리 어플리케이션, 동영상 재생을 위한 동영상 재생 어플리케이션, 웹 서핑 어플리케이션 등은 어플리케이션 실행에 CPU를 사용해야 하므로 하드웨어 가속기를 압축 주체로 선택할 수 있다.
또한, 압축 응답 속도가 빨라야 하는 경우에는 신속한 메모리 압축 수행을 위해 CPU와 하드웨어 가속기를 모두 압축 주체로 선택할 수 있다.
S1350 단계에서 CPU가 압축 동작을 수행하는 것이 더 적합하다고 판단한 경우 S1360 단계로 진행할 수 있다. S1360 단계에서 CPU는 압축을 요청한 메모리의 데이터에 대하여 데이터 압축을 수행할 수 있다. S1350 단계에서 하드웨어 가속기가 압축 동작을 수행하는 것이 더 적합하다고 판단한 경우 S1370 단계로 진행할 수 있다. S1370 단계에서 하드웨어 가속기는 압축을 요청한 메모리의 데이터에 대하여 데이터 압축을 수행할 수 있다.
 메모리 주체를 결정하는 일 실시 예로 시스템이 요구하는 압축 속도에 따라 압축 주체를 결정하는 과정을 설명한다. 시스템에서 요구하는 압축 속도가 하드웨어 가속기(H/W accelerator)가 수행할 수 있는 최대 속도보다 높은 경우 CPU와 하드웨어 가속기(H/W accelerator)가 동시에 압축을 처리하도록 판단할 수 있다(S1330 단계). 이러한 경우 이후 단계에서 CPU와 하드웨어 가속기 모두가 압축을 처리할 수 있다.
다른 실시 예로 기 설정된 시스템 설정 사항에 따라 남은 배터리가 50% 미만이거나 CPU utilization이 10% 미만인 경우 소비전력을 낮추고 CPU를 아이들(idle) 상태로 하기 위해 하드웨어 가속기(H/W accelerator)가 압축을 수행하는 것이 적합하다고 판단할 수 있다. 이 경우, 하드웨어 가속기가 압축을 처리할 수 있다. 반면 남은 배터리가 50% 이상이거나 비용(cost) 등의 제약으로 하드웨어 가속기(H/W accelerator)가 없는 경우에는 CPU가 압축을 처리할 수 있다.
상기에서 각 시스템 요구 사항에 따른 판단은 본 발명을 실시 하는 하나의 실시 예일 뿐 본 발명의 권리범위가 이에 한정하는 것은 아니다. 상기 시스템 요구사항의 각 항목에 대한 기준은 시스템에 따라 변경할 수 있음은 자명할 것이다.
다음은 도 14 내지 도 17을 참조하여, 본 발명의 일 실시 예인 압축 단위를 결정하는 방법을 설명한다. 상기 도 14 내지 도 17은 상기한 도 3의 S330 단계의 메모리 압축 단위를 결정하는 과정에 대한 구체적인 방법을 기술한다.
도 14는 본 발명의 일 실시 예인 메모리 압축 단위를 결정하는 방법을 결정하는 흐름도이고, 도 15는 본 발명의 일 실시 예인 메모리 압축 단위를 결정하는 방법을 결정하는 흐름도이며, 도 16은 본 발명의 일 실시 예인 멀티 페이지 압축 시스템 동작을 설명하는 흐름도이며, 도 17은 본 발명의 일 실시 예인 하드웨어 가속기 기반 압축 시스템의 특징을 설명하는 도면이다.
도 14를 참조하여 압축 단위를 결정하는 방법을 설명하면, S1410 단계에서 메모리를 포함하는 전자 장치는 시스템 요구사항을 체크할 수 있다. 예를 들어 시스템 요구 사항은 입력 버퍼 사이즈 N, 응답성, 가용 메모리 공간 등 일 수 있다. 다만 시스템 요구 사항을 이에 한정하지 않는다.
S1430 단계에서 CPU(또는 제어부)는 압축 단위로서 싱글 페이지 압축이 적합한지 멀티 페이지 압축이 적합한지를 판단할 수 있다. CPU(또는 제어부)는 응답성이 높거나 가용 메모리 공간이 부족한 경우, 멀티 미디어 스트리밍 서비스용 어플리케이션이 동작 중인 경우 등의 시스템 요구사항이 있는 경우 싱글 페이지 압축이 더 적합한 것으로 판단할 수 있다. 또한, 가용 메모리 공간이 큰 경우에는 멀티 페이지 압축이 더 적합한 것으로 판단할 수 있다. 상기 판단 기준은 이에 한정하지 않는다.
S1430 단계에서 싱글 페이지 압축이 적합하다고 판단하는 경우, S1450 단계로 진행하여 싱글 페이지 압축을 수행할 수 있다. S1430 단계에서 멀티 페이지 압축이 적합하다고 판단하는 경우 S1470 단계로 진행하여 멀티 페이지 압축을 수행할 수 있다.
S1430 단계에서 적합성을 판단하는 일 예에 대하여 설명하면 다음과 같다. 예를 들어 압축 시스템을 확인하기 위한 일종의 파일럿 런(pilot-run)과 같이 응답성(압축된 결과를 얼마나 빠르게 확인할 수 있는지를 나타내는 지표)이 높아야 하는 경우 싱글 페이지 압축(single-page compression)이 적합할 수 있다.
또한, 어플리케이션의 특징에 따라 예를 들어, 멀티 미디어 스트리밍(Multimedia streaming) 서비스를 사용하는 어플리케이션(application)이 동작 중인 경우 처리해야 할 트래픽(traffic) 양이 많기 때문에 싱글 페이지 압축(single-page compression)이 적합할 수 있다. 구체적으로 설명하면 트래픽 양이 많다는 것은 현재 처리해야 할 일의 양이 많다는 것이다. 멀티 페이지 압축은 속도는 빠르나 처리해야 할 일의 양이 많아서, 트래픽 양이 많은 경우 멀티 페이지 압축을 수행하는 것이 바람직하지 않을 수 있다. 상기에서는 트래픽 양이 많은 경우, 싱글 페이지로 압축하는 실시예에 대해 설명하였으나 반드시 이에 한정될 필요는 없다.
또한, CPU(또는 제어부)는 입력 버퍼 크기에 따라 압축 단위를 판단할 수 있다. 예를 들어, N = 1 (single-page) : 페이지(page) 한 개씩 압축 수행하도록 설정하고, N ≥1 (multipage) : 여러 페이지(page)를 한 번에 페이지(page) 단위로 압축 수행하도록 설정할 수 있다.
또한, 싱글 페이지 압축(single-page compression)은 필요한 입력 버퍼 사이즈 N(input buffer size N)이 작기 때문에 시스템의 가용 메모리 공간이 전체 메모리 공간 대비 기 설정된 비율(예를 들어, 20%) 미만인 경우에 적합할 수 있다(가용 메모리 공간 비율은 일 실시 예일 뿐 이에 한정하지 않으며, 사용자 또는 장치의 설정에 따라 변경될 수 있다). 반면 멀티 페이지 압축(multipage compression)은 가용 메모리 공간의 크기가 전체 메모리 대비 기 설정된 비율(예를 들어, 20% 이상)인 경우에 적합할 수 있다. 단, 항목별 결정 기준점은 시스템에 따라 변경될 수 있다.
또한 압축 주체와 압축 단위가 연결되는 경우 일반적으로 하드웨어 가속기(H/W accelerator)는 멀티 페이지 압축(multipage compression)이 적합하며, CPU는 싱글 페이지 압축에 적합할 것이다. 설명한 바와 같이, 압축 주체에 따라 압축 단위가 영향을 받을 수도 있지만, 이에 한정하는 것은 아니며 압축 주체와 압축 단위를 결정하는 과정은 독립적일 수 있다.
다음으로 도 15를 참조하여 멀티 페이지 압축 시스템의 초기화 과정에 대하여 설명한다. S1510 단계에서 CPU(또는 제어부)는 입력 버퍼를 위한 메모리를 할당할 수 있다. 입력 버퍼는 압축할 페이지(page)를 저장하기 위한 공간으로 일종의 가상 램 디스크(virtual RAM disk)일 수 있다. 또한 입력 버퍼 사이즈 크기를 나타내는 N(input buffer size N)은 저장할 수 있는 페이지(page) 개수를 의미하고 변경될 수 있다. 입력 버퍼의 사이즈는 저장할 수 잇는 페이지의 개수와 페이지의 크기로 정해질 수 있다.
 다음으로 S1530 단계에서 출력 버퍼를 위한 메모리를 할당할 수 있다. 출력 버퍼는 페이지(page) 단위로 압축된 결과를 저장하기 위한 공간이며, 그 크기는 입력 버퍼 사이즈 크기 N(input buffer size N)에 따라 변할 수 있다. 출력 버퍼를 위한 메모리 할당은 S1510 단계에 선행하여 수행될 수도 있다.
S1550 단계에서 CPU(또는 제어부)는 입력 버퍼와 출력 버퍼를 포함하는 모든 버퍼에 메모리가 할당되었는지 판단할 수 있다. 모든 버퍼들이 할당되지 않은 것으로 판단되면, 다시 S1510 단계로 돌아가 각 버퍼에 메모리를 할당할 수 있다. 모든 버퍼들이 할당된 것으로 판단되면, S1570 단계에서 메타 데이터를 위한 메모리를 할당할 수 있다.
메타 데이터를 위한 공간은 압축 정보 저장 공간일 수 있다. 압축 정보 저장 공간은 페이지(page)에 대한 정보를 저장하기 위한 공간으로 압축할/압축된 페이지(page)들을 구분하기 위한 고유의 인덱스(index)로 관리할 수 있다. 또한 해당 페이지(page)가 저장된 버퍼(buffer)를 나타내기 위한 위치(position)와 버퍼(buffer) 내 위치를 나타내기 위한 주소(address)를 포함할 수 있다. 압축된 페이지(page)의 크기를 저장하기 위한 사이즈(size)도 포함할 수 있다.
S1590 단계에서 압축 방식(압축 프로세스)을 선택할 수 있다.
다음으로 도 16를 참조하여 멀티페이지 압축 시스템의 동작 과정을 설명한다.
S1610 단계에서 CPU(또는 제어부)는 압축 대상 데이터를 입력 버퍼에 저장하도록 제어할 수 있다. S1630 단계에서 제어부는 압축 대상 데이터를 저장할 입력 버퍼에 대응하는 메타 데이터의 공간을 초기화 할 수 있다.
S1650 에서 입력 버퍼의 상태에 따라 압축이 필요한지를 판단할 수 있다. 예를 들어 입력 버퍼의 공간이 가득 차거나 또는 기 설정된 임계값 이상으로 입력 버퍼의 메모리 공간이 차는 경우 메모리 압축을 시작하도록 판단할 수 있다.
S1670 단계에서는 입력 버퍼에 저장되어 있던 데이터에 대하여 압축을 시작할 수 있다. CPU에서 압축을 수행하는 경우 CPU는 별도의 신호를 전송하지 않을 수 있다. 하드웨어 가속기에서 압축을 수행하는 경우 하드웨어 가속기에 압축을 명령하는 신호를 수신하여 하드웨어 가속기가 압축을 수행할 수 있다. 하드웨어 가속기는 CPU로부터 압축 명령을 수신할 수 있다. CPU 및/또는 하드웨어 가속기는 압축을 수행한다. CPU 및/또는 하드웨어 가속기는 입력 버퍼에 저장되어 있는 페이지들을 페이지 별로 압축하여 출력 버퍼에 저장할 수 있다. S1680 단계는 압축 동작이 수행되고 있는 단계이다. 압축하는 과정 중에는 CPU는 해당 입력 버퍼에 압축할 페이지를 추가로 저장하지 않고 대기할 수 있다. CPU는 하드웨어 가속기가 압축을 완료한 후 다시 입력 버퍼에 압축을 위한 데이터를 저장할 수 있다.
S1690 단계에서 압축된 페이지들에 대한 정보를 저장할 수 있다. 압축된 페이지들에 대한 정보는 메타 데이터에 업데이트 하여 저장할 수 있다. 또한, 압축 대기 중인 페이지, 압축 중 실패한 페이지에 대한 정보들도 메타 데이터에 업데이트 될 수 있다. OS는 일반적으로 페이지 단위로 메모리 공간을 관리하기 때문에 페이지 별로 압축을 하는 방식은 메모리 압축 해제에 용이하다.
다음으로 도 17을 참조하여, 하드웨어 가속기 기반 멀티 페이지 압축 시스템의 특징을 설명한다.
CPU는 최대 N개의 페이지(page)를 입력 버퍼(input buffer)에 저장한 후 하드웨어 가속기(H/W accelerator)를 통해 한 번에 페이지(page) 별로 압축을 수행할 수 있다. 그러므로 CPU는 N/μ 동안 아이들 상태(idle state)를 유지할 수 있게 되며, 이를 통해 소비전력을 감소시킬 수 있다. 입력 버퍼 사이즈 N(Input buffer size N)은 CPU 아이들 시간(idle time) 및 시스템 메모리 가용 크기, 압축 속도 등에 따라 동적으로 결정할 수 있다.
또한 하드웨어 가속기(H/W accelerator)가 입력 버퍼(input buffer)에 저장된 페이지(page)들을 압축하는 과정 중에는 CPU는 해당 입력 버퍼(input buffer)에 압축할 페이지(page)를 추가로 저장하지 않으며, 하드웨어 가속기(H/W accelerator)가 압축을 완료한 후 다시 저장한다. 이는 CPU와 하드웨어 가속기(H/W accelerator) 사이의 상호 작용(interaction)을 감소시킬 수 있으며, 이를 통해 통신 오버헤드(communication overhead)를 줄일 수 있다. 한편 입력 버퍼(input buffer)와 출력 버퍼(output buffer)는 여러 개를 사용할 수 있으며, 이를 통해 CPU는 압축할 페이지(page)를 저장하지 못하고 대기하는 블록킹(blocking) 발생 비율을 감소시킬 수 있다.
더불어 입력 버퍼(Input buffer)와 출력 버퍼(output buffer)에 대한 메모리 영역은 물리적으로 연속된 공간에 할당하여 하드웨어 가속기(H/W accelerator)는 해당 버퍼(buffer) 영역의 출발 주소(start address)와 사이즈(size) 정보만으로 직접 메모리 액세스(DMA, direct memory access) 동작을 수행할 수 있다. 이를 통해 데이터 이동 속도를 향상시킬 수 있으며, 하드웨어(H/W) 구조를 단순화할 수 있다.
이하에서는 도 3의 S340 단계의 압축 프로세스를 실행하는 과정에 대해 기술하도록 한다.
우선, 본 발명의 실시예에 따른 압축 프로세스 실행 과정을 기술하기에 앞서, 이를 설명하기 위해 필요한 시스템 파라미터 사이의 관계에 대해 먼저 설명하도록 한다.
도 18은 본 발명의 일 실시 예에 따른 시스템 파라미터 사이의 관계를 설명하는 도면이다.
도 18을 참조하면, 시스템 파라미터(arrival rate λ, service rate μ, compression ratio R) 사이의 관계를 나타내고 있다. λ는 발생 속도(arrival rate)를 나타내는 지표로 OS로부터 압축할 페이지가 발생되는 평균 속도를 의미하고, μ는 압축 서비스 속도를 나타내는 지표로 평균 압축 속도를 의미하며, R은 압축 비율을 의미한다.
λ μ 관계 그래프를 참조하면, 시스템이 안정상태를 유지하기 위해 압축 속도 μ(service rate μ)는 발생 속도 λ(arrival rate λ)보다 커야 하므로 비례 관계를 가진다. 즉, 압축할 페이지가 발생하는 속도 λ 보다 CPU 또는 하드웨어 가속기에서의 압축 속도 μ 가 빠르지 않으면 압축할 페이지가 처리되지 못할 수 있으므로 안정적인 시스템 운영을 위해서는 압축 속도 μ 가 압축할 페이지 발생 속도 λ 보다 클 것이 요구된다.
반면, μ R 그래프를 참조하면, 압축 속도 μ(service rate μ)와 압축 비율 R(compression ratio R) 는 반비례 관계를 가진다. 즉, 압축 속도 μ 가 빠를수록 압축 비율 R은 떨어지고, 압축 비율 R이 높을수록 압축 속도 μ는 떨어지는 관계에 있다.
도 19는 본 발명의 일 실시 예에 따른 압축 프로세스 과정을 설명하는 흐름도이다.
도 19를 참조하면, arrival rate λ, service rate μ, compression ratio R을 사용하여 압축 알고리즘을 선택하고, 선택된 알고리즘에 따라 압축 프로세스를 수행하는 과정을 나타낸 것이다.
S1910 단계에서 메모리 압축 장치는 시스템 파라미터를 획득할 수 있다. 상기 시스템 파라미터는 arrival rate λ, service rate μ, compression ratio R 를 포함할 수 있다.
S1930 단계에서 메모리 압축 장치는 요구되는 압축 속도인 μ Required  (service rate μ Required )를 계산할 수 있다. 요구되는 압축 속도 μ Required  (service rate μ Required )은 도출한 압축할 데이터의 발생 속도(arrival rate λ) 또는 요구되는 압축 시간 등을 통해 계산할 수 있다.
S1950 단계에서 메모리 압축 장치는 요구되는 압축률인 R Required 를 계산할 수 있다. 요구되는 압축률 R Required  는 시스템의 가용 메모리 공간, 압축을 통해 확보할 메모리 크기, 요구되는 압축률 등에 따라 계산할 수 있다. 상기 S1930 및 S1950 단계의 순서는 서로 바뀔 수 있다.
S1970 단계에서 메모리 압축 장치는 상기와 같이 도출한 요구되는 압축 속도 μ R equir ed  와 요구되는 압축률 R Required  를 통해 압축 프로세스 선택 범위를 결정할 수 있다. 또한 우선순위에 따라 요구되는 압축 속도 μ Required  또는 요구되는 압축률 R Required  중 하나의 파라미터를 기준으로 압축 알고리즘을 결정할 수도 있다.
상기 압축 알고리즘을 결정한다는 것은, 적어도 하나의 압축 알고리즘 중, 상기한 적어도 하나의 파라미터에 기반하여 결정된 사항에 따라 압축을 실행할 압축 알고리즘을 결정한다는 것을 의미할 수 있다. 예를 들어, 메모리 압축 장치는 복수 개 예를 들어 10개의 압축 알고리즘을 저장할 수 있다. 상기 압축 알고리즘은 zip, tar, rar 등을 포함할 수 있지만, 반드시 이에 한정되는 것은 아니다.
만약, 상기 시스템 파라미터에 의해 현재 압축 과정에서는 압축 속도가 우선시 되어야 한다고 결정된 경우, 메모리 압축 장치는 복수 개의 압축 알고리즘 중 압축 속도가 빠른 압축 알고리즘을 선택하여 압축 프로세스를 실행할 수 있다. 예를 들어, 상기 예시한 압축 알고리즘 중 압축 속도가 가장 빠른 알고리즘이 zip 알고리즘이라면, 메모리 압축 장치는 zip 알고리즘을 현재 압축 과정에서의 압축 알고리즘으로 선택할 수 있다.
다른 예시로, 상기 시스템 파라미터에 의해 현재 압축 과정에서는 압축률이 우선시 되어야 한다고 결정된 경우, 메모리 압축 장치는 복수 개의 압축 알고리즘 중 압축률이 가장 높은 압축 알고리즘을 선택하여 압축 프로세스를 실행할 수 있다. 예를 들어, 상기 예시한 압축 알고리즘 중 압축률이 가장 높은 알고리즘이 rar 알고리즘이라면, 메모리 압축 장치는 rar 알고리즘을 현재 압축 과정에서의 압축 알고리즘으로 선택할 수 있다.
또한, 본 발명의 다른 실시예에 따르면 입력되는 페이지(page)의 데이터 패턴(data pattern)에 따른 압축 속도 μ와 압축률 R의 변화를 고려하여 알고리즘을 변경할 수도 있다.
또한, 동작 중인 어플리케이션(application)의 특징에 따라 사용하는 메모리 크기 또는 요구하는 메모리 공간의 크기, 그리고 메모리 액세스 패턴(access pattern) 및 데이터 패턴(data pattern) 등이 변경될 수 있다. 그러므로 이러한 특징들을 고려하여 적합한 μ Required  와 R Required 을 도출한 후 압축 프로세스을 결정할 수 있다. 더불어 압축 수행 후 결과를 확인하여 압축 프로세스를 변경할 수도 있다.
또한 압축 주체에 따라 적합한 압축 알고리즘을 선택할 수도 있다. 예를 들어 하드웨어 가속기(H/W accelerator)가 압축을 수행할 경우 하드웨어 가속기(H/W accelerator)에 적합한 알고리즘을 후보군으로 제한할 수도 있다.
다음은 압축률과 압축 속도를 결정하는 일 실시 예를 나타낸 것이다.
가용 메모리 공간이 부족하거나 CPU가 활용(utilization)이 낮은 경우, 게임, 사진/동영상 재생 등 메모리를 많이 사용하는 어플리케이션(application)이 동작 중인 경우 등을 압축률을 높이는 경우로 설정할 수 있다. 반면, 메모리 확보가 빨리 되어야 하는 경우 등을 압축 속도를 높이는 경우로 설정할 수 있다.
예를 들어 가용 메모리 공간이 전체 메모리 크기의 30% 미만이거나 CPU 활용(utilization)이 20% 미만인 경우 압축률 가장 높은 프로세스를 선택하도록 제어할 수 있다. 또한 가용 메모리 공간의 크기가 30% ~ 40% 사이 혹은 CPU 활용(utilization)이 20% ~ 30% 사이일 경우 압축률이 두 번째로 높은 프로세스를 선택하도록 제어할 수 있다. 위와 같은 방법으로 가용 메모리의 크기 및 CPU 활용도에 따라 단계 별로 압축률을 설정하여 압축을 수행하도록 제어할 수 있다.
반면 1초 이내에 200MB 이상의 메모리가 확보되어야 하는 시스템 요구가 있는 경우 압축 속도가 가장 빠른 프로세스를 선택할 수 있다. 상기에서 설명한 메모리 가용공간, 프로세스 활용, 확보되어야 할 공간에 따른 압축 속도 및 압축률 결정 예는 일 실시 예일 뿐 본 실시 예의 권리 범위를 이에 한정하는 것은 아니다. 또한, 항목별 기준 값은 시스템에 따라 변경될 수 있다.
도 20은 본 발명의 일 실시 예인 메모리 압축 장치를 설명하는 블록도이다.
도 20을 참조하면, 메모리 압축 장치(2000)를 전반적으로 제어하는 중앙 처리 장치, 메모리 압축을 위한 메모리 압축 제어부(2030) 및 데이터를 저장하는 메모리(2030)를 포함할 수 있다.
본 발명의 실시 예에서 상기 중앙 처리 장치(2010)는 장치의 전반적인 제어뿐만 아니라 시스템 요구사항을 체크하여, 시스템 요구사항에 따라 최적의 압축 방법을 제공할 수 있도록 제어할 수 있다.
본 발명의 실시 예에 따르면, 상기 중앙 처리 장치(2010)는 시스템 요구사항을 확인하고, 확인된 시스템 요구사항에 기반하여 메모리에 저장된 데이터를 압축하는데 사용되는 압축 주체, 압축 단위 및 압축 프로세스 중 적어도 하나에 대한 압축 요소를 선택하고, 상기 선택된 압축 요소에 따라 메모리 압축을 수행하도록 제어할 수 있다.
또한, 본 발명의 실시 예에 따르면, 상기 중앙 처리 장치(2010)는 상기 시스템 요구사항 기반하여 중앙 처리 장치(2010) 또는 하드웨어 가속기(2030) 중 적어도 하나를 압축 주체로 선택하도록 제어할 수 있다. 상기 중앙 처리 장치(2010)는 상기 압축 주체로 하드웨어 가속기가 선택되면, 입력 버퍼에 압축할 페이지를 저장하고, 출력 버퍼에 압축된 페이지를 저장하며, 압축 저장 공간에 압축 결과를 포함하는 압축 관련 정보를 저장하도록 제어할 수 있다.
또한, 본 발명의 실시 예에 따르면, 상기 중앙 처리 장치(2010)는 시스템 요구사항 기반하여 싱글 페이지 압축 또는 멀티 페이지 압축 중 하나를 압축 단위로 선택하도록 제어할 수 있다. 상기 중앙 처리 장치(2010)는 압축 단위로 멀티 페이지 압축을 선택하면, 압축 주체로 하드웨어 가속기를 선택하도록 제어할 수 있다. 또한, 상기 중앙 처리 장치(2010)는 압축 단위로 멀티 페이지 압축을 선택하면, 압축할 페이지를 입력 버퍼에 저장하고, 상기 입력 버퍼에 기 설정된 임계값 이상으로 압축할 페이지가 저장되었는지 판단하며, 임계값 이상으로 판단되면, 상기 입력 버퍼에 저장된 페이지를 압축하도록 제어할 수 있다.
또한, 본 발명의 실시 예에 따르면, 상기 중앙 처리 장치(2010)는 상기 시스템 요구사항에 기반하여, 요구되는 압축 속도 및 요구되는 압축률을 설정하고, 상기 설정된 압축 속도 및 압축률의 범위에서 압축 동작을 수행하도록 압축 프로세스를 선택할 수 있다.
상기 메모리 압축 제어부(2030)는 하드웨어 가속기라 명명할 수 있다. 상기 메모리 압축 제어부(2030)는 메모리에 저장되어 있는 데이터에 대한 압축 동작을 수행할 수 있다. 상기 메모리 압축 제어부(2030)는 메모리 압축을 위한 전용 제어부 일 수 있다.
본 발명의 일 실시 예에 따르면 상기 메모리 압축 제어부(2030)는 압축 주체로서 선택되면, 입력 버퍼에 저장된 압축할 페이지를 압축할 수 있다.
상기에서 중앙 처리 장치(2010)와 하드웨어 가속기(2030)의 기능에 대하여 설명하였으나, 각 부의 기능 및 동작은 이에 한정하지 않고, 도 1 내지 도 20을 통하여 제안한 본 발명의 실시 예를 수행할 수 있음은 자명할 것이다. 예를 들어, 본 발명의 순서도에서 도시된 각 단계는 본 발명의 전자 장치에 포함된 제어부에 의해 수행될 수 있다
그리고 본 명세서와 도면에 개시된 실시 예들은 본 발명의 내용을 쉽게 설명하고, 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 따라서 본 발명의 범위는 여기에 개시된 실시 예들 이외에도 본 발명의 기술적 사상을 바탕으로 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
예를 들어, 본 발명에서 개시된 압축 주체, 압축 단위, 압축 프로세스를 실행하는 과정은 그 자체로 독립적으로 수행될 수도 있다.

Claims (46)

  1. 메모리 압축 방법에 있어서,
    전자 장치의 상태를 반영하여 메모리를 압축하기 위한, 동작 중인 어플리케이션(application)의 특징, 메모리 여유 공간의 크기, 압축을 통해 확보해야 할 메모리 크기, 요구되는 압축 속도 및 압축률, 요구되는 소비 전력, 요구되는 응답성, CPU 동작 상태(busy/idle) 및 배터리 상태 중 적어도 하나를 포함하는 시스템 요구사항을 확인하는 단계;
    확인된 시스템 요구사항에 기반하여 메모리에 저장된 데이터를 압축하는데 사용되는 압축 주체, 압축 단위 및 압축 프로세스 중 적어도 하나에 대한 압축 요소를 선택하는 단계; 및
    상기 선택된 압축 요소에 따라 메모리 압축을 수행하는 단계를 포함하며,
    상기 압축 주체는 CPU 또는 하드웨어 가속기 중 적어도 하나를 포함하는 것을 특징으로 하는 메모리 압축 방법.
  2. 삭제
  3. 삭제
  4. 제1항에 있어서, 상기 압축 주체로 하드웨어 가속기를 선택하면,
    상기 메모리 압축을 수행하는 단계는,
    입력 버퍼에 압축할 페이지를 저장하는 단계,
    하드웨어 가속기에서 상기 저장된 압축할 페이지를 압축하는 단계,
    출력 버퍼에 상기 압축된 페이지를 저장하는 단계, 그리고
    압축 정보 저장 공간에 상기 압축 결과를 포함하는 압축 관련 정보를 저장하는 단계를 포함하는 것을 특징으로 하는 메모리 압축 방법.
  5. 제1항에 있어서, 상기 압축 요소를 선택하는 단계는,
    압축 단위를 선택하는 단계를 포함하고,
    상기 압축 단위를 선택하는 단계는 상기 시스템 요구사항 기반하여 싱글 페이지 압축 또는 멀티 페이지 압축 중 하나를 압축 단위로 선택하는 것을 특징으로 하는 메모리 압축 방법.
  6. 제5항에 있어서, 상기 압축 요소를 선택하는 단계는,
    압축 단위로 멀티 페이지 압축을 선택하면, 압축 주체로 하드웨어 가속기를 선택하는 것을 특징으로 하는 메모리 압축 방법.
  7. 제5항에 있어서,
    압축 단위로 멀티 페이지 압축을 선택하면,
    상기 압축하는 단계는,
    압축할 페이지를 입력 버퍼에 저장하는 단계,
    상기 입력 버퍼에 기 설정된 임계값 이상으로 압축할 페이지가 저장되었는지 판단하는 단계,
    임계값 이상으로 판단되면, 상기 입력 버퍼에 저장된 페이지를 압축하는 단계, 그리고
    상기 압축이 완료되면, 압축 결과를 압축 정보 저장 공간에 저장하는 단계를 포함하는 것을 특징으로 하는 메모리 압축 방법.
  8. 제1항에 있어서, 상기 압축 요소를 선택하는 단계는,
    압축 프로세스를 선택하는 단계를 포함하고,
    상기 압축 프로세스를 선택하는 단계는 상기 시스템 요구사항에 기반하여, 요구되는 압축 속도 및 요구되는 압축률을 설정하는 단계, 그리고
    상기 설정된 압축 속도 및 압축률의 범위에서 압축 동작을 수행하도록 압축 프로세스를 선택하는 단계를 포함하는 것을 특징으로 하는 메모리 압축 방법.
  9. 메모리를 포함하는 전자 장치에 있어서,
    데이터를 저장하는 메모리;
    상기 메모리를 압축하기 위한 하드웨어 가속기; 및
    동작 중인 어플리케이션(application)의 특징, 메모리 여유 공간의 크기, 압축을 통해 확보해야 할 메모리 크기, 요구되는 압축 속도 및 압축률, 요구되는 소비 전력, 요구되는 응답성, CPU 동작 상태(busy/idle) 및 배터리 상태 중 적어도 하나를 포함하는 시스템 요구사항을 확인하고, 확인된 시스템 요구사항에 기반하여 메모리에 저장된 데이터를 압축하는데 사용되는 압축 주체, 압축 단위 및 압축 프로세스 중 적어도 하나에 대한 압축 요소를 선택하고, 상기 선택된 압축 요소에 따라 메모리 압축을 수행하도록 제어하는 CPU를 포함하고,
    상기 압축 주체는 상기 CPU 또는 상기 하드웨어 가속기 중 적어도 하나를 포함하는 것을 특징으로 하는 전자 장치.
  10. 삭제
  11. 삭제
  12. 제9항에 있어서, 상기 압축 주체로 하드웨어 가속기가 선택되면,
    상기 CPU는 입력 버퍼에 압축할 페이지를 저장하고, 출력 버퍼에 압축된 페이지를 저장하며, 압축 저장 공간에 압축 결과를 포함하는 압축 관련 정보를 저장하도록 제어하고,
    상기 하드웨어 가속기는 상기 입력 버퍼에 저장된 압축할 페이지를 압축하는 것을 특징으로 하는 전자 장치.
  13. 제9항에 있어서, 상기 CPU는 상기 시스템 요구사항 기반하여 싱글 페이지 압축 또는 멀티 페이지 압축 중 하나를 압축 단위로 선택하도록 제어하는 것을 특징으로 하는 전자 장치.
  14. 제13항에 있어서, 상기 CPU는 압축 단위로 멀티 페이지 압축을 선택하면, 압축 주체로 하드웨어 가속기를 선택하도록 제어하는 것을 특징으로 하는 전자 장치.
  15. 제13항에 있어서, 상기 CPU는 압축 단위로 멀티 페이지 압축을 선택하면, 압축할 페이지를 입력 버퍼에 저장하고, 상기 입력 버퍼에 기 설정된 임계값 이상으로 압축할 페이지가 저장되었는지 판단하며, 임계값 이상으로 판단되면, 상기 입력 버퍼에 저장된 페이지를 압축하도록 제어하는 것을 특징으로 하는 전자 장치.
  16. 제9항에 있어서, 상기 CPU는 상기 시스템 요구사항에 기반하여, 요구되는 압축 속도 및 요구되는 압축률을 설정하고, 상기 설정된 압축 속도 및 압축률의 범위에서 압축 동작을 수행하도록 압축 프로세스를 선택하는 것을 특징으로 하는 전자 장치.
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
  45. 삭제
  46. 삭제
KR1020130128848A 2013-10-18 2013-10-28 전자 장치의 메모리 압축 방법 및 장치 KR102114388B1 (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
US14/436,344 US10037143B2 (en) 2013-10-18 2014-10-20 Memory compression method of electronic device and apparatus thereof
EP14851428.4A EP3059678B1 (en) 2013-10-18 2014-10-20 Method and apparatus for compressing memory of electronic device
PCT/KR2014/009849 WO2015057031A1 (ko) 2013-10-18 2014-10-20 전자 장치의 메모리 압축 방법 및 장치
EP22196322.6A EP4145295A1 (en) 2013-10-18 2014-10-20 Memory compression method of electronic device and apparatus thereof
CN201480002742.6A CN104737137B (zh) 2013-10-18 2014-10-20 电子设备的存储器压缩方法及其装置
US16/018,790 US10895987B2 (en) 2013-10-18 2018-06-26 Memory compression method of electronic device and apparatus thereof

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20130124885 2013-10-18
KR1020130124885 2013-10-18

Publications (2)

Publication Number Publication Date
KR20150045348A KR20150045348A (ko) 2015-04-28
KR102114388B1 true KR102114388B1 (ko) 2020-06-05

Family

ID=53037356

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130128848A KR102114388B1 (ko) 2013-10-18 2013-10-28 전자 장치의 메모리 압축 방법 및 장치

Country Status (4)

Country Link
US (2) US10037143B2 (ko)
EP (1) EP3059678B1 (ko)
KR (1) KR102114388B1 (ko)
CN (1) CN104737137B (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10114638B2 (en) * 2014-12-15 2018-10-30 Cisco Technology, Inc. Command message generation and execution using a machine code-instruction
KR102535825B1 (ko) * 2015-06-03 2023-05-23 삼성전자주식회사 시스템 온 칩 및 시스템 온 칩의 동작 방법
CN105068875B (zh) * 2015-08-12 2018-09-07 浪潮(北京)电子信息产业有限公司 一种智能数据处理方法及装置
US9848242B2 (en) * 2015-09-30 2017-12-19 Rovi Guides, Inc. Systems and methods for adjusting the priority of media assets scheduled to be recorded
CN105404551A (zh) * 2015-12-11 2016-03-16 Tcl移动通信科技(宁波)有限公司 移动终端的应用前后台切换处理方法、***及移动终端
US10346043B2 (en) * 2015-12-28 2019-07-09 Pure Storage, Inc. Adaptive computing for data compression
CN107003907A (zh) 2016-01-26 2017-08-01 华为技术有限公司 一种数据处理方法以及数据处理设备
JP2017138853A (ja) * 2016-02-04 2017-08-10 株式会社東芝 情報処理装置およびプログラム
US10572460B2 (en) 2016-02-11 2020-02-25 Pure Storage, Inc. Compressing data in dependence upon characteristics of a storage system
US20170264491A1 (en) * 2016-03-12 2017-09-14 Denis DeRuijter Intent based controller for provisioning a network
US11336294B2 (en) * 2016-06-10 2022-05-17 Apple Inc. Hybrid, adaptive virtual memory compression
US10635337B2 (en) 2016-06-27 2020-04-28 Intel Corporation Dynamic configuration of compressed virtual memory
WO2018084576A1 (en) 2016-11-03 2018-05-11 Samsung Electronics Co., Ltd. Electronic device and controlling method thereof
CN106843450A (zh) * 2017-01-23 2017-06-13 努比亚技术有限公司 一种终端应用的存储处理方法和装置
WO2018174584A1 (en) 2017-03-22 2018-09-27 Samsung Electronics Co., Ltd. Method of managing applications and computing device using the same
US10430246B2 (en) * 2018-01-18 2019-10-01 International Business Machines Corporation Virtualized and synchronous access to hardware accelerators
US11303296B2 (en) * 2018-06-26 2022-04-12 International Business Machines Corporation Hardware accelerated compression of instrumentation data
KR20200013162A (ko) * 2018-07-19 2020-02-06 삼성전자주식회사 전자 장치 및 그의 제어 방법
KR20200034499A (ko) * 2018-09-21 2020-03-31 삼성전자주식회사 메모리 장치와 통신하는 데이터 처리 장치 및 방법
US11169853B2 (en) * 2018-12-28 2021-11-09 Intel Corporation Technologies for providing dynamic selection of edge and local accelerator resources
CN112668033B (zh) * 2019-10-15 2023-04-25 抖音视界有限公司 数据处理方法、装置及电子设备
KR20210124607A (ko) * 2020-04-06 2021-10-15 에스케이하이닉스 주식회사 데이터 저장 시스템 및 컨트롤러의 동작 방법
CN116107742A (zh) * 2021-06-10 2023-05-12 荣耀终端有限公司 虚拟内存管理方法和电子设备
US20220413909A1 (en) * 2021-06-25 2022-12-29 Intel Corporation Techniques to enable quality of service control for an accelerator device
US11943296B2 (en) 2022-05-31 2024-03-26 Red Hat, Inc. Workload-based cache compression in a distributed storage system

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008042401A (ja) * 2006-08-03 2008-02-21 Canon Inc 情報処理装置、情報処理方法

Family Cites Families (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04359315A (ja) * 1991-06-05 1992-12-11 Matsushita Electric Ind Co Ltd データ圧縮制御装置及びデータ復元制御装置
US5418910A (en) * 1992-05-05 1995-05-23 Tandy Corporation Dual buffer cache system for transferring audio compact disk subchannel information to a computer
US5357614A (en) * 1992-09-17 1994-10-18 Rexon/Tecmar, Inc. Data compression controller
US5539865A (en) * 1992-11-10 1996-07-23 Adobe Systems, Inc. Method and apparatus for processing data for a visual-output device with reduced buffer memory requirements
JP2840511B2 (ja) * 1992-12-10 1998-12-24 富士通株式会社 磁気テープ装置を用いたサブシステムのエラー回復処理装置及び方法
JP3809209B2 (ja) * 1994-12-08 2006-08-16 キヤノン株式会社 印刷装置及びデータ制御方法
US5859982A (en) * 1996-06-05 1999-01-12 Sun Microsystems, Inc. Computer system and method for executing methods of downloaded programs with reduced run-time memory space requirements
US5765157A (en) * 1996-06-05 1998-06-09 Sun Microsystems, Inc. Computer system and method for executing threads of execution with reduced run-time memory space requirements
US6879266B1 (en) * 1997-08-08 2005-04-12 Quickshift, Inc. Memory module including scalable embedded parallel data compression and decompression engines
US6910210B1 (en) * 1998-11-24 2005-06-21 Microsoft Corp. System and method for terminating applications
US6885319B2 (en) * 1999-01-29 2005-04-26 Quickshift, Inc. System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms
US20010054131A1 (en) * 1999-01-29 2001-12-20 Alvarez Manuel J. System and method for perfoming scalable embedded parallel data compression
US6819271B2 (en) * 1999-01-29 2004-11-16 Quickshift, Inc. Parallel compression and decompression system and method having multiple parallel compression and decompression engines
US6360300B1 (en) * 1999-08-31 2002-03-19 International Business Machines Corporation System and method for storing compressed and uncompressed data on a hard disk drive
JP2001136352A (ja) * 1999-11-04 2001-05-18 Canon Inc 画像入力装置及びその制御方法
US6310563B1 (en) * 2000-05-12 2001-10-30 International Business Machines Corporation Method and apparatus for enhanced decompressor parsing
KR100910972B1 (ko) * 2002-12-07 2009-08-05 엘지전자 주식회사 대화형 광디스크 장치에서의 재생 제어방법
US7047382B2 (en) 2000-11-29 2006-05-16 Quickshift, Inc. System and method for managing compression and decompression and decompression of system memory in a computer system
KR100777271B1 (ko) * 2001-02-28 2007-11-20 엘지전자 주식회사 디지털 시스템의 메모리 관리 방법
US7194140B2 (en) * 2001-11-05 2007-03-20 Canon Kabushiki Kaisha Image processing apparatus and method which compresses image data of each region using a selected encoding method
US6640283B2 (en) * 2002-01-16 2003-10-28 Hewlett-Packard Development Company, L.P. Apparatus for cache compression engine for data compression of on-chip caches to increase effective cache size
US6775751B2 (en) 2002-08-06 2004-08-10 International Business Machines Corporation System and method for using a compressed main memory based on degree of compressibility
US7188130B2 (en) * 2003-09-30 2007-03-06 International Business Machines Corporation Automatic temporary precision reduction for enhanced compression
US7188227B2 (en) * 2003-09-30 2007-03-06 International Business Machines Corporation Adaptive memory compression
US20070005625A1 (en) 2005-07-01 2007-01-04 Nec Laboratories America, Inc. Storage architecture for embedded systems
CN101390043A (zh) * 2005-07-01 2009-03-18 美国日本电气实验室公司 嵌入式***用的存储器体系结构
US20070005911A1 (en) 2005-07-01 2007-01-04 Nec Laboratories America, Inc. Operating System-Based Memory Compression for Embedded Systems
US20070088920A1 (en) 2005-10-19 2007-04-19 Philip Garcia Managing data for memory, a data store, and a storage device
US7849241B2 (en) * 2006-03-23 2010-12-07 International Business Machines Corporation Memory compression method and apparatus for heterogeneous processor architectures in an information handling system
US20080005190A1 (en) * 2006-06-28 2008-01-03 Nokia Corporation System, Method, Apparatus and Computer Program Product for Providing Resource Reclamation in a Virtual Machine
KR100852729B1 (ko) 2006-09-12 2008-08-19 이너비트 주식회사 데이타 압축 관리장치
KR100849305B1 (ko) 2006-11-24 2008-07-29 삼성전자주식회사 데이터를 압축하여 관리하는 메모리 및 그 방법
US8510743B2 (en) * 2007-10-31 2013-08-13 Google Inc. Terminating computer applications
JP4917561B2 (ja) * 2008-03-18 2012-04-18 株式会社リコー 画像処理装置
US20090254705A1 (en) * 2008-04-07 2009-10-08 International Business Machines Corporation Bus attached compressed random access memory
TW201037516A (en) * 2009-04-14 2010-10-16 Inventec Corp Method of accessing a memory
US8458431B2 (en) * 2009-11-03 2013-06-04 International Business Machines Corporation Expanding memory size
JP2011128792A (ja) * 2009-12-16 2011-06-30 Toshiba Corp メモリ管理装置
US8156306B1 (en) * 2009-12-18 2012-04-10 Emc Corporation Systems and methods for using thin provisioning to reclaim space identified by data reduction processes
JP5066209B2 (ja) 2010-03-18 2012-11-07 株式会社東芝 コントローラ、データ記憶装置、及びプログラム
US8386740B2 (en) 2010-03-29 2013-02-26 International Business Machines Corporation Modeling memory compression
US8484405B2 (en) 2010-07-13 2013-07-09 Vmware, Inc. Memory compression policies
US8489824B2 (en) 2010-09-20 2013-07-16 International Business Machines Corporation Selective memory compression for multi-threaded applications
KR20120054699A (ko) * 2010-11-22 2012-05-31 삼성전자주식회사 메모리 컨트롤러, 이를 포함하는 데이터 저장 시스템 및 그 방법
KR101759658B1 (ko) 2011-02-23 2017-07-19 삼성전자 주식회사 메모리 장치 및 메모리 시스템
KR101861742B1 (ko) 2011-08-30 2018-05-30 삼성전자주식회사 이종의 가속기들 사이에서 스위칭할 수 있는 데이터 처리 시스템과 그 방법
KR101862341B1 (ko) 2012-01-09 2018-05-30 삼성전자주식회사 데이터 압축 기능을 갖는 데이터 저장 장치
US9007239B1 (en) * 2012-07-02 2015-04-14 Amazon Technologies, Inc. Reduction of memory consumption
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
WO2014188528A1 (ja) * 2013-05-22 2014-11-27 株式会社日立製作所 メモリ装置、計算機システム及びメモリ装置の制御方法
US10146435B2 (en) * 2013-07-31 2018-12-04 Hitachi, Ltd. Storage system and data write method
US9514146B1 (en) * 2013-09-26 2016-12-06 Emc Corporation System and method for improving data compression of a storage system in an online manner
US10277248B2 (en) * 2015-07-07 2019-04-30 Tidal Systems, Inc. Compression engine with consistent throughput
US10404836B2 (en) * 2016-12-26 2019-09-03 Intel Corporation Managing state data in a compression accelerator
US10224957B1 (en) * 2017-11-27 2019-03-05 Intel Corporation Hash-based data matching enhanced with backward matching for data compression

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008042401A (ja) * 2006-08-03 2008-02-21 Canon Inc 情報処理装置、情報処理方法

Also Published As

Publication number Publication date
EP3059678A4 (en) 2017-06-21
CN104737137B (zh) 2019-07-12
US10037143B2 (en) 2018-07-31
EP3059678A1 (en) 2016-08-24
US20180300063A1 (en) 2018-10-18
KR20150045348A (ko) 2015-04-28
EP3059678B1 (en) 2022-09-21
CN104737137A (zh) 2015-06-24
US10895987B2 (en) 2021-01-19
US20150339059A1 (en) 2015-11-26

Similar Documents

Publication Publication Date Title
KR102114388B1 (ko) 전자 장치의 메모리 압축 방법 및 장치
EP3851956B1 (en) Method and apparatus for accelerating cold-starting of application
KR101799253B1 (ko) 다중 클러스터 이종 프로세서 아키텍처에서 동적 캐시 확장을 제공하기 위한 시스템 및 방법
CN111158910B (zh) 内存管理方法、装置、存储介质及电子设备
WO2018059027A1 (zh) 一种内存回收方法及终端
US20140143791A1 (en) System, method, and apparatus for improving application-launch latencies
EP3000042B1 (en) Dirty data management for hybrid drives
KR20140014146A (ko) 동면으로부터의 다중 페이즈 재개
JP6152493B2 (ja) マルチオペレーティングシステム環境におけるオペレーティングシステムの遷移のための技術
CN114185494B (zh) 内存匿名页的处理方法、电子设备及可读存储介质
EP3149594B1 (en) Method and apparatus for cache access mode selection
JPWO2017006675A1 (ja) 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム
US9891846B2 (en) System and method for preventing solid state drive corruption after dirty shutdown power loss
JP2018063505A (ja) メモリ管理制御装置、メモリ管理制御方法、及びメモリ管理制御プログラム
US9146876B2 (en) Caching method and caching system using dual disks
WO2019071616A1 (zh) 一种处理方法及装置
CN111078405B (zh) 内存分配方法、装置、存储介质及电子设备
KR101772547B1 (ko) 컴퓨팅 디바이스에서의 전력 소비 감축
EP4145295A1 (en) Memory compression method of electronic device and apparatus thereof
CN116627622A (zh) 一种数据处理方法、装置、设备及存储介质
CN114064357A (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