KR20170140230A - 적응적 압축-기반 페이징 - Google Patents

적응적 압축-기반 페이징 Download PDF

Info

Publication number
KR20170140230A
KR20170140230A KR1020177030880A KR20177030880A KR20170140230A KR 20170140230 A KR20170140230 A KR 20170140230A KR 1020177030880 A KR1020177030880 A KR 1020177030880A KR 20177030880 A KR20177030880 A KR 20177030880A KR 20170140230 A KR20170140230 A KR 20170140230A
Authority
KR
South Korea
Prior art keywords
software image
compressed
page
compressed software
image segment
Prior art date
Application number
KR1020177030880A
Other languages
English (en)
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 퀄컴 인코포레이티드
Publication of KR20170140230A publication Critical patent/KR20170140230A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • 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
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/70Type of the data to be coded, other than image and sound
    • H03M7/702Software
    • 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
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • 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
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/16General purpose computing application
    • G06F2212/161Portable computer, e.g. notebook
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

적응적 압축-기반 디맨드 페이징을 위한 시스템들, 방법들, 및 컴퓨터 프로그램들이 개시된다. 2 개 이상의 압축된 소프트웨어 이미지 세그먼트들이 하나 이상의 메모리들의 각각에 저장된다. 각각의 압축된 소프트웨어 이미지 세그먼트는 적어도 하나의 소프트웨어 태스크에 대응하고 다른 소프트웨어 이미지 세그먼트들의 압축 특성들과는 상이한 압축 특성에 따라 압축되는 하나 이상의 페이지들을 포함한다. 실행 소프트웨어 태스크와 연관된 페이지 요청이 시스템 메모리에 저장되지 않는 페이지를 식별하는 것이 결정되고, 그 다음에, 식별된 페이지를 포함하는 압축된 소프트웨어 이미지 세그먼트의 부분이 압축해제되고, 압축해제된 페이지는 시스템 메모리에 저장된다.

Description

적응적 압축-기반 페이징
관련 기술의 설명
데스크톱, 랩톱 또는 태블릿 컴퓨터, 스마트폰, 휴대용 디지털 어시스턴트, 휴대용 게임 콘솔 등과 같은 컴퓨팅 디바이스는 중앙 프로세싱 유닛들, 그래픽 프로세싱 유닛들, 디지털 신호 프로세서들 등과 같은 하나 이상의 프로세서들을 포함한다. 전통적으로 컴퓨팅 디바이스들로서 지칭되지 않은, 컴퓨터 주변 장치들 및 소비자 전자기기들과 같은 다른 전자 디바이스들은 또한 하나 이상의 프로세서들을 포함할 수도 있다. 컴퓨팅 및 다른 디바이스들에서, 이러한 프로세서는, 그 프로세서가 하나 이상의 버스들을 통해 통신하는 시스템 메모리로부터 명령들 또는 소프트웨어 코드를 판독하고, 그것의 코드의 실행에 따라 태스크들을 수행하거나 관리한다. 프로세서는 다중 태스크들을 관리하도록 이러한 방식으로 프로그래밍될 수도 있다. 편의상 소프트웨어 이미지로서 지칭될 수도 있는 코드 및 데이터의 유닛은 수백 또는 심지어 수천 개 정도의 태스크들의 프로세서의 관리를 지원할 수도 있다. 고 스루풋을 촉진하기 위해, 시스템 메모리는 더블 데이터 레이트 동적 랜덤 액세스 메모리 (DDR-DRAM) 와 같은, 고속 동작이 가능한 타입의 것일 수도 있다.
휴대용 디바이스들과 같은 일부 타입들의 디바이스들은 비교적 제한된 양의 시스템 메모리 (스토리지) 용량을 가질 수도 있어서, 메모리가 전체 소프트웨어 이미지를 저장할 수 없게 된다. 이 문제를 해결하기 위해 디맨드 페이징 (demand paging) 으로서 통상적으로 알려진 기법이 채용될 수도 있다. 디맨드 페이징에서, 소프트웨어 이미지의 서브셋트 (subset) 는 세컨더리 메모리 (secondary memory) 에 저장되고, 프로세서에 의해 개시되는 페이지 요청들에 응답하여 필요에 따라 페이지들의 유닛들로 시스템 메모리 내로 전송된다. 세컨더리 메모리는 시스템 메모리보다 더 느린 타입의 것일 수도 있다. 결과적으로, 디맨드 페이징은 프로세서가 세컨더리 메모리가 허용하는 것보다 더 빨리 메모리를 액세스할 필요가 있는 태스크들의 퍼포먼스 (performance) 에 영향을 미칠 수도 있다.
소프트웨어 이미지의 서브셋트가 시스템 메모리에서 압축된 형태로 저장되는 디맨드 페이징 기법이 개발되었다. 프로세서에 의해 개시된 페이지 요청에 응답하여, 소프트웨어 이미지의 부분은 압축해제되고, 결과적인 페이지는 그 다음에, 프로세서에 의한 액세스를 위해 시스템 메모리에 저장된다.
적응적, 압축-기반 방식으로 디맨드 페이징하기 위한 시스템들, 방법들, 및 컴퓨터 프로그램들이 개시된다.
디맨드 페이징을 위한 예시적인 방법들에서, 복수의 압축된 소프트웨어 이미지 세그먼트들이 메모리에 저장된다. 각각의 압축된 소프트웨어 이미지 세그먼트는 복수의 소프트웨어 태스크들 중 적어도 하나의 소프트웨어 태스크에 대응한다. 각각의 압축된 소프트웨어 이미지 세그먼트는 압축된 소프트웨어 이미지 세그먼트와 연관되고 다른 압축된 소프트웨어 이미지 세그먼트들의 압축 특성들과는 상이한 압축 특성 (compression characteristic) 에 따라 압축되는 하나 이상의 페이지들을 포함한다. 실행 소프트웨어 태스크 (executing software task) 와 연관된 페이지 요청 (page request) 에 응답하여, 그 페이지 요청이 메모리에 저장된 페이지를 식별하는지 여부가 결정된다. 식별된 페이지가 메모리에 저장되지 않는 경우에는, 식별된 페이지를 포함하는 압축된 소프트웨어 이미지 세그먼트들 중 하나의 소프트웨어 이미지 세그먼트의 부분 (protion) 이 압축해제된 페이지로 압축해제된다. 압축해제된 페이지는 그 다음에 메모리에 저장된다.
디맨드 페이징을 위한 예시적인 시스템들은 메모리 및 프로세서를 포함한다. 메모리는 복수의 압축된 소프트웨어 이미지 세그먼트들을 저장하도록 구성된다. 각각의 압축된 소프트웨어 이미지 세그먼트는 복수의 소프트웨어 태스크들 중 적어도 하나의 소프트웨어 태스크에 대응한다. 각각의 압축된 소프트웨어 이미지 세그먼트는 압축된 소프트웨어 이미지 세그먼트와 연관되고 다른 압축된 소프트웨어 이미지 세그먼트들의 압축 특성들과는 상이한 압축 특성에 따라 압축된 하나 이상의 페이지들을 포함한다. 프로세서는: 실행 소프트웨어 태스크와 연관된 페이지 요청이 시스템 메모리에 저장된 페이지를 식별하는지 여부를 결정하고; 식별된 페이지가 메모리에 저장되지 않는 경우에, 식별된 페이지를 포함하는 압축된 소프트웨어 이미지 세그먼트들 중 하나의 소프트웨어 이미지 세그먼트의 부분을 압축해제된 페이지로 압축해제 (decompress) 하며; 그리고, 페이지 요청에 응답하여 메모리에 압축해제된 페이지를 저장하도록 구성된다.
디맨드 페이징을 위한 예시적인 컴퓨터 프로그램 제품들은, 비-일시적 (non-transitory) 저장 매체에 수록된 (embodied) 컴퓨터-실행가능 로직 (computer-executable logic) 을 포함한다. 프로세서에 의한 로직의 실행은: 실행 소프트웨어 태스크와 연관된 페이지 요청이 메모리에 저장된 페이지를 식별하는지 여부를 결정하고, 여기서, 메모리는 복수의 압축된 소프트웨어 이미지 세그먼트들을 그 안에 저장하였고, 각각의 압축된 소프트웨어 이미지 세그먼트는 복수의 소프트웨어 태스크들 중 적어도 하나의 소프트웨어 태스크에 대응하고, 각각의 압축된 소프트웨어 이미지 세그먼트는 압축된 소프트웨어 이미지 세그먼트와 연관되고 다른 압축된 소프트웨어 이미지 세그먼트들의 압축 특성들과는 상이한 압축 특성에 따라 압축된 하나 이상의 페이지들을 포함하며; 식별된 페이지가 메모리에 저장되지 않는 경우에, 식별된 페이지를 포함하는 압축된 소프트웨어 이미지 세그먼트들 중 하나의 소프트웨어 이미지 세그먼트의 부분을 압축해제된 페이지로 압축해제하며; 그리고, 페이지 요청에 응답하여 메모리에 압축해제된 페이지를 저장하도록 프로세서를 구성한다.
도면들에서, 달리 나타내어지지 않는 한 유사한 참조 부호들은 여러 도면들에 걸쳐 유사한 부분들을 지칭한다. "102A" 또는 "102B" 와 같이 문자 지정들을 갖는 참조 부호들에 있어서, 문자 지정들은 동일한 도면에 있는 2 개의 유사한 부분들 또는 엘리먼트들을 구별지을 수도 있다. 참조 부호들에 대한 문자 지정들은 참조 부호가 모든 도면들에서 동일한 참조 부호를 갖는 모든 부분들을 망라하고자 하는 경우 생략될 수도 있다.
도 1 은 예시적인 실시형태에 따른, 압축-기반 디맨드 페이징을 위한 프로세싱 시스템의 블록도이다.
도 2 는 예시적인 실시형태에 따른, 압축-기반 디맨드 페이징을 위한 예시적인 방법을 나타내는 흐름도이다.
도 3 은 예시적인 실시형태에 따른, 태스크들, 압축된 소프트웨어 이미지 세그먼트들, 및 압축 로직 엘리먼트들 사이의 관계들 또는 연관들을 나타내는 차트이다.
도 4 는 도 3 과 유사하고, 클록 및 전압 셋팅들과의 연관들을 추가로 나타낸다.
도 5a 는 도 2 와 유사한 흐름도이다.
도 5b 는 도 5a 의 흐름도의 계속이다.
도 6 은 예시적인 실시형태에 따른, 랩톱 컴퓨터의 USB 포트에 접속된 모뎀을 나타내는, 도 1 의 시스템을 갖는 모뎀의 정면도이다.
도 7 은 예시적인 실시형태에 따른, 도 1 의 시스템을 갖는 프로세서를 갖는 컴퓨터의 블록도이다.
도 8 은 예시적인 실시형태에 따른, 도 1 의 시스템을 갖는 휴대용 통신 디바이스의 블록도이다.
도 9a 는 도 2 및 도 5a-5b 와 유사한 흐름도이다.
도 9b 는 도 9a 의 흐름도의 계속이다.
단어 "예시적인" 은 본원에서 "일 예, 사례, 또는 실례의 역할을 하는" 것을 의미하기 위해 이용된다. "예시적" 으로 본원에서 설명된 임의의 양태는 반드시 다른 양태들보다 바람직하거나 이로운 것으로 해석되지는 않는다.
본 설명에서 이용되는 바와 같이, 용어들 "컴포넌트", "데이터베이스", "모듈", "시스템" 등은 컴퓨터 관련 엔티티, 하드웨어, 펌웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어, 또는 실행 중인 소프트웨어 중 어느 것을 지칭하고자 한다. 예를 들어, 컴포넌트는 프로세서 상에서 실행되는 프로세스, 프로세서, 오브젝트, 실행가능물, 실행의 스레드, 프로그램, 및/또는 컴퓨터일 수도 있지만, 이들에 제한되는 것은 아니다. 예시로서, 컴퓨팅 디바이스 상에서 실행되는 애플리케이션 및 컴퓨팅 디바이스 양자 모두가 컴포넌트일 수도 있다. 하나 이상의 컴포넌트들은 프로세스 및/또는 실행의 스레드 내에 있을 수도 있고, 컴포넌트는 하나의 컴퓨터 상에 로컬화될 수도 있고/있거나 두 개 이상의 컴퓨터 들 사이에 분산될 수도 있다. 또한, 이들 컴포넌트들은 다양한 데이터 구조들이 저장된 여러 컴퓨터 판독 가능한 매체들로부터 실행될 수도 있다. 컴포넌트들은 하나 이상의 데이터 패킷들 (예를 들어, 로컬 시스템의 다른 컴포넌트, 분산 시스템 및/또는 인터넷과 같은 네트워크에 걸쳐 신호를 통해 다른 시스템들과 상호작용하는 하나의 컴포넌트로부터의 데이터) 을 구비하는 신호에 따르는 것과 같이 로컬 및/또는 원격 프로세스들을 통해 통신할 수도 있다.
"애플리케이션 (application)" 또는 "이미지 (image)" 라는 용어는 또한, 오브젝트 코드, 스크립트들, 바이트 코드, 마크업 언어 파일들, 및 패치들과 같은 실행가능한 콘텐츠를 갖는 파일들을 포함할 수도 있다. 또한, 본 명세서에서 언급되는 "애플리케이션" 은 또한, 열릴 필요가 있을 수도 있는 문서들과 같이 성질상 실행가능하지 않은 파일들 또는 액세스될 필요가 있는 다른 데이터 파일들을 포함할 수도 있다.
"콘텐츠 (content)" 라는 용어는 또한, 오브젝트 코드, 스크립트들, 바이트 코드, 마크업 언어 파일들, 및 패치들과 같은 실행가능한 콘텐츠를 갖는 파일들을 포함할 수도 있다. 또한, 본 명세서에서 언급되는 "콘텐츠" 는 또한, 열릴 필요가 있을 수도 있는 문서들과 같이 성질상 실행가능하지 않은 파일들 또는 액세스될 필요가 있는 다른 데이터 파일들을 포함할 수도 있다.
"태스크 (task)" 라는 용어는 프로세스, 스레드, 또는 디바이스에서의 실행의 임의의 다른 유닛을 포함할 수도 있다.
"가상 메모리 (virtual memory)" 라는 용어는 메모리를 참조하고 있는 애플리케이션 또는 이미지로부터 실제 물리적 메모리의 추상화를 가리킨다. 트랜슬레이션 (translation) 또는 맵핑 (mapping) 은 가상 메모리 어드레스를 물리적 메모리 어드레스로 변환하기 위해 사용될 수도 있다. 맵핑은 1-대-1 로서 간단할 수도 있고, (예컨대, 물리적 어드레스는 가상 어드레스와 동일하다), 적당히 복잡할 수도 있으며, (예컨대, 물리적 어드레스는 가상 어드레스로부터의 일정한 오프셋과 동일하다), 또는 맵핑은 복잡할 수도 있다 (예컨대, 매 4KB 페이지가 고유하게 맵핑된다). 맵핑은 정적일 수도 있고 (예컨대, 시동시에 한번 수행됨), 또는 맵핑은 동적일 수도 있다 (예컨대, 메모리가 할당되고 비워짐에 따라 지속적으로 변화).
이 설명에서, 용어들 "통신 디바이스", "무선 디바이스", "무선 전화기", "무선 통신 디바이스", 및 "무선 핸드셋" 은 상호교환가능하게 사용된다. 3 세대 ("3G") 무선 기술 및 4 세대 ("4G") 의 도래로, 보다 큰 대역폭 이용가능성은 보다 다양한 무선 능력들을 갖는 보다 많은 휴대용 컴퓨팅 디바이스들을 가능하게 했다. 용어 "휴대용 컴퓨팅 디바이스" ("PCD") 는, 배터리와 같은 제한된 용량의 전력 공급기 상에서 동작하고 과도한 열적 에너지를 제거하기 위한 (즉, 팬 등과 같은 냉각을 위한) 시스템이 결여된 임의의 디바이스를 기술하기 위해서 사용된다. PCD 는, 다른 것들 중에서도, 셀룰러 전화기, 위성 전화기, 페이저, PDA, 스마트폰, 내비게이션 디바이스, 스마트북 또는 리더, 미디어 플레이어, 무선 접속을 갖는 랩톱 또는 핸드-헬드 컴퓨터, 또는 전술된 디바이스들의 조합일 수도 있다.
도 1 에서 예시된 바와 같이, 예시적인 실시형태에서, 시스템 (100) 은 프로세서 (102) 및 시스템 메모리 (104) 를 포함한다. 프로세서 (102) 및 시스템 메모리 (104) 는 데이터 버스 시스템 (106) 을 통해 통신한다. 프로세서 (102) 는 다중 태스크들 (108) 을 제어 또는 관리하도록, 소프트웨어, 즉, 프로그래밍을 통해 구성된다. 태스크들 (108) 은 예를 들어 6 개의 태스크들 (108a, 108b, 108c, 108d, 108e 및 108f) 을 포함할 수도 있다. 비록 이들 6 개의 태스크들 (108a-108f) 이 예시적인 실시형태와 관련하여 예시의 목적을 위해 본 명세서에서 기술되지만, 임의의 다른 수의 태스크들 (108) 이 다른 실시형태들에서 존재할 수도 있다. 당해 기술분야에서 통상의 지식을 가진 자 (이하, '통상의 기술자' 라 함) 에 의해 이해되는 바와 같이, 편의상 "소프트웨어 이미지 (software image)" 로서 지칭될 수도 있는 코드 및 데이터의 유닛은 수백 또는 심지어 수천 개 정도의 태스크들 (108) 의 프로세서의 제어 또는 관리를 지원할 수도 있다. 비록 도 1 에서 태스크들 (108a-108f) 이 프로세서 (102) 내에 존재하는 것으로서 예시의 목적을 위해 개념적으로 묘사되지만, 통상의 기술자는, 태스크들 (108a-108f) 이 소프트웨어의 제어 하에서 프로세서 (102) 에서 발생하는 로직에 의해 정의됨을 이해한다.
예시적인 실시형태에서, 예를 들어 메모리 (104) 가 태스크들 (108a-108f) 의 프로세서 (102) 에 의한 제어와 연관된 전체 소프트웨어 이미지를 보유할 충분한 저장 용량을 가지지 않을 수도 있기 때문에, 디맨드 페이징의 형태가 채용된다. 그럼에도 불구하고, 다른 실시형태들에서, 소프트웨어 이미지를 보유할 충분한 시스템 메모리가 존재하는지 여부와 무관하게, 본원에서 기술된 방법들 및 시스템들이 채용될 수도 있다. 추가적인 상세에서 이하 설명되는 바와 같이, 디맨드 페이징 방법은 데이터 압축을 채용한다.
예시적인 실시형태에서, 소프트웨어 이미지의 부분은 압축되어 2 개 이상의 압축된 소프트웨어 이미지 세그먼트들 (110) 을 형성한다. 압축된 소프트웨어 이미지 세그먼트들 (110) 은, 예를 들어, 3 개의 압축된 소프트웨어 이미지 세그먼트들 (110a, 110b 및 110c) 을 포함할 수도 있다. 압축된 소프트웨어 이미지 세그먼트들 (110a-110c) 은 메모리 (104) 에 저장된다. 비록 이들 3 개의 압축된 소프트웨어 이미지 세그먼트들 (110a-110c) 이 예시적인 실시형태와 관련하여 예시의 목적을 위해 본 명세서에서 기술되지만, 임의의 다른 수의 압축된 소프트웨어 이미지 세그먼트들 (110) 이 다른 실시형태들에서 존재할 수도 있다. 비록 압축된 소프트웨어 이미지 세그먼트들 (110a, 110b 및 110c) 이 서로로부터 분리된 것으로서 명확성의 목적을 위해 예시되지만, 그들은 연속적인 메모리 어드레스 공간을 점유할 수도 있다.
소프트웨어 이미지의 다른 부분이 또한 압축되지 않은 형태로 메모리 (104) 에 저장될 수도 있다. 소프트웨어 이미지의 이 압축되지 않은 부분의 일부 또는 전부는 페이지 풀 (page pool) (112) 의 형태일 수도 있다. 비록 페이지 풀 (112) 이 압축된 소프트웨어 이미지 세그먼트들 (110) 로부터 분리된 것으로서 명확성의 목적을 위해 예시되지만, 페이지 풀 (112) 및 압축된 소프트웨어 이미지 세그먼트들 (110) 은 연속적인 메모리 어드레스 공간을 점유할 수도 있다.
압축된 소프트웨어 이미지 세그먼트들 (110a-110c) 의 각각은 고유한 압축 특성에 따라 압축된 하나 이상의 페이지들을 포함한다. 즉, 압축된 소프트웨어 이미지 세그먼트 (110a) 는 압축된 소프트웨어 이미지 세그먼트들 (110b 및 110c) 이 각각 압축되는 압축 특성들과는 상이한 압축 특성에 따라 압축되고; 압축된 소프트웨어 이미지 세그먼트 (110b) 는 압축된 소프트웨어 이미지 세그먼트들 (110a 및 110c) 이 각각 압축되는 압축 특성들과는 상이한 압축 특성에 따라 압축되며; 압축된 소프트웨어 이미지 세그먼트 (110c) 는 압축된 소프트웨어 이미지 세그먼트들 (110a 및 110b) 이 각각 압축되는 압축 특성들과는 상이한 압축 특성에 따라 압축된다. 이하 더 자세히 설명되는 바와 같이, 압축 특성은, 예를 들어, 압축 알고리즘, 압축 블록 사이즈, 또는 압축 알고리즘 및 압축 블록 사이즈의 조합일 수도 있다.
압축된 소프트웨어 이미지 세그먼트들 (110) 의 각각은 태스크들 (108) 중 적어도 하나와 연관된다. 예를 들어, 도 1 에서 예시된 바와 같이, 압축된 소프트웨어 이미지 세그먼트 (110a) 는 태스크 (108a) 와 연관되고; 압축된 소프트웨어 이미지 세그먼트 (110b) 는 태스크 (108b 및 108c) 와 연관되며; 압축된 소프트웨어 이미지 세그먼트 (110c) 는 태스크 (108d, 108e 및 108f) 와 연관된다. 도 1 에서, 압축된 소프트웨어 이미지 세그먼트들 (110) 중의 하나와 태스크들 (108) 중의 하나 사이의 점선 또는 파선은 이러한 연관 (association) 을 나타낸다. 도 1 에서 도시된 압축된 소프트웨어 이미지 세그먼트들 (110) 과 태스크들 (108) 사이의 연관들은 오직 예시적이도록, 즉, 예시적인 실시형태와 관련하여 예시의 목적을 위해 의도된다.
압축해제 로직 (114) 은 또한, 압축해제 로직 엘리먼트들 (114a, 114b 및 114c) 에 의해, 도 1 에서 나타낸 바와 같이, 압축된 소프트웨어 이미지 세그먼트들 (110) 및 태스크들 (108) 과 연관된다. 압축해제 로직 엘리먼트들 (114a, 114b 및 114c) 의 각각은 고유한 압축 특성에 따라 압축해제를 수행하는 로직을 나타낸다. 즉, 압축해제 로직 엘리먼트 (114a) 는, 압축해제 로직 엘리먼트들 (114b 및 114c) 이 각각 압축해제를 수행하는 압축 특성들과는 상이한 압축 특성에 따라 압축해제를 수행하고; 압축해제 로직 엘리먼트 (114b) 는, 압축해제 로직 엘리먼트들 (114a 및 114c) 이 각각 압축해제를 수행하는 압축 특성들과는 상이한 압축 특성에 따라 압축해제를 수행하며; 그리고, 압축해제 로직 엘리먼트 (114c) 는, 압축해제 로직 엘리먼트들 (114a 및 114b) 이 각각 압축해제를 수행하는 압축 특성들과는 상이한 압축 특성에 따라 압축해제를 수행한다. 비록 압축해제 로직 엘리먼트들 (114a, 114b 및 114c) 이 서로로부터 구별되는 것으로서 명확성의 목적을 위해 도 1 에서 예시되지만, 통상의 기술자는, 그들이 일부 공통의 소프트웨어 피처들을 공유할 수도 있다는 의미에서 그들이 중첩할 수도 있음을 이해한다. 또한, 압축해제 로직 엘리먼트들 (114a-114c) 의 하나 이상은 압축해제의 작업의 일부 또는 전부를 하드웨어-기반 압축해제 로직 (115) 으로 오프로드할 수도 있다. 또한, 비록 도 1 에서 압축해제 로직 엘리먼트들 (114a-114c) 및 태스크들 (108a-108f) 은 프로세서 (102) 내에 존재하는 것으로서 예시의 목적을 위해 개념적으로 묘사되지만, 통상의 기술자는, 이들 엘리먼트들은 프로세서 (102) 에서의 소프트웨어의 실행에 의해 발생하는 로직에 의해 정의됨을 이해한다.
예시적인 방법과 관련하여 이하에서 설명되는 바와 같이, 압축된 소프트웨어 이미지 세그먼트들 (110a, 110b, 및 110c) 의 각각은 페이지 풀 (112) 로 압축해제될 수도 있는 하나 이상의 페이지들을 포함한다. 압축해제 로직 엘리먼트 (114a) 는 소프트웨어 이미지 세그먼트 (110a) 의 부분들을 압축해제하기 위해 채용될 수도 있다. 압축해제 로직 엘리먼트 (114b) 는 소프트웨어 이미지 세그먼트 (110b) 의 부분들을 압축해제하기 위해 채용될 수도 있다. 압축해제 로직 엘리먼트 (114c) 는 소프트웨어 이미지 세그먼트 (110c) 의 부분들을 압축해제하기 위해 채용될 수도 있다.
도 2 에서 예시된 바와 같이, 예시적인 실시형태에서, 방법 (200) 은 예를 들어 상기 설명된 시스템 (100) 에서의 디맨드 페이징에 관련된다. 블록 (202) 에 의해 나타낸 바와 같이, 압축된 소프트웨어 이미지 세그먼트들 (110a, 110b 및 110c) 이 생성되고 메모리 (104) 에 저장된다. 소프트웨어 툴 (tool) (미도시) 은 압축된 소프트웨어 이미지 세그먼트들 (110a, 110b 및 110c) 을 생성 및 저장하기 위해 채용될 수도 있다. 소프트웨어 이미지 세그먼트들 (110a, 110b 및 110c) 은 태스크들 (108) 의 동작에 앞서 생성되고 저장될 수도 있다. 태스크들 (108) 이 동작 상태에 있는 시간은, "빌드 타임 (build time)" 으로서 통상적으로 지칭되는, 다양한 로직 엘리먼트들이 초기화되고 저장되는 더 이른 시간에 반해, "런 타임 (run time)" 또는 " 실행 타임 (execution time)" 으로서 통상적으로 지칭된다. 이러한 소프트웨어 툴이 빌드 타임에서 채용될 수도 있는 방식은 이하에서 보다 충분하게 설명된다. 도 1 에서, 블록 (202) 은, 런-타임 액트 (act) 또는 스텝 (step) 에 대한 반대로서 예시적인 실시형태에서 방법 플로우에서 빌드-타임 액트 또는 스텝을 나타내기 위해 파선으로 묘사된다. 그럼에도 불구하고, 다른 실시형태들에서, 액트들 또는 스텝들은 다른 시간들에서 발생할 수도 있다.
블록 (204) 에 의해 나타낸 바와 같이, 태스크들 (108a-108f) 중 하나는 페이지 요청을 개시할 수도 있다. 통상의 기술자에 의해 잘 이해되는 바와 같이, 페이지 요청은, 그 페이지에 대응하는 소프트웨어 이미지의 부분이 메모리에 있지 않은 시간에서 페이지로서 알려진 메모리 공간의 유닛 내의 시스템 메모리 어드레스를 프로세싱 시스템이 액세스하기를 시도할 때 발생할 수도 있다. 페이징은 이하에서 더 자세히 설명된다.
블록 (206) 에 의해 나타낸 바와 같이, 페이지 요청에 응답하여, 요청된 페이지를 포함하는 압축된 소프트웨어 이미지의 부분이 압축해제된다. 압축해제는, (압축된 형태로) 요청된 페이지를 포함하는 압축된 소프트웨어 이미지 세그먼트들 (110) 의 하나와 연관되는 압축해제 로직 (114) 을 이용하여 수행된다. 따라서, 도 1 에서 나타낸 예시적인 실시형태에서, 태스크 (108a) 가 압축된 소프트웨어 이미지 세그먼트 (110a) 내에 포함된 페이지를 요청하는 인스턴스 (instance) 에서, 압축해제 로직 (114a) 은 그 요청된 페이지를 압축해제한다. 유사하게, 태스크 (108b 또는 108c) 가 압축된 소프트웨어 이미지 세그먼트 (110b) 내에 포함된 페이지를 요청하는 인스턴스에서, 압축해제 로직 (114b) 은 그 요청된 페이지를 압축해제한다. 마찬가지로, 태스크 (108d, 108e 또는 108f) 가 압축된 소프트웨어 이미지 세그먼트 (110c) 내에 포함된 페이지를 요청하는 인스턴스에서, 압축해제 로직 (114c) 은 그 요청된 페이지를 압축해제한다. 블록 (208) 에 의해 나타낸 바와 같이, 압축해제된 페이지는 그 다음에 시스템 메모리 (104) 에서의 페이지 풀 (112) (도 1) 에 저장된다.
도 3 에서 예시된 바와 같이, 태스크들 (108a-108f) 은 그들의 상대적인 레이턴시 공차 (latency tolerance) (및 대응하는 우선순위) 의 순서로 랭킹되거나 배열되는 것으로 보여진다. "레이턴시" 는 페이지 요청을 개시하는 태스크 (108) 와 페이지 풀 (112) 에서 이용가능하게되는 페이지 사이의 시간의 양이다. "레이턴시 공차" 는 공칭 값 또는 임계치를 초과하는 레이턴시가 태스크의 퍼포먼스에 영향을 주는 정도를 지칭한다. 도 3 에서, 태스크 (108a) 는 태스크들 (108a-108f) 중에서 가장 낮은 레이턴시 공차를 갖는다. 이러한 이유로, 태스크 (108a) 와 연관된 압축된 소프트웨어 이미지 세그먼트 (110a) 는 빠른 압축해제를 제공하는 압축 특성에 따라 압축된다. 상기 언급된 바와 같이, 이러한 압축 특성은 압축 알고리즘, 압축 블록 사이즈, 또는 이 양자의 조합을 포함할 수도 있다. 일부 알고리즘들이 다른 알고리즘들보다 더 빠르게 데이터를 압축해제한다는 것이 통상의 기술자에 의해 잘 이해된다. (트레이트오프 (tradeoff) 는 압축해제 속도와 압축 비율 사이의 일반적으로 역 관계이다.) 작은 블록 사이즈들에서 데이터가 압축되는 방식들은 일반적으로 더 큰 블록 사이즈들에서 데이터가 압축되는 방식들보다 더 빠른 압축해제를 용이하게 한다는 것이 통상의 기술자에 의해 또한 잘 이해된다. 따라서, 압축해제 로직 엘리먼트 (114a) 는 예를 들어 빠른 압축 알고리즘 및 작은 블록 사이즈에 의해 특징지어질 수도 있다.
도 3 에서, 태스크 (108b) 는 태스크 (108a) 의 레이턴시 공차보다 더 크지만 태스크 (108c) 의 레이턴시 공차보다 더 적은 레이턴시 공차를 갖는다 (이는 예시적인 목적들을 위해 이 실시형태에서 "중간 (medium)" 레이턴시 공차로서 지칭될 수도 있다). 태스크들 (108b 및 108c) 은 그들이 다른 태스크들 (108) 에 비해 함께 그룹핑되는 유사한 충분한 레이턴시 공차들을 가질 수도 있다. 이에 따라, 양 태스크들 (108b 및 108c) 과 연관되는 압축된 소프트웨어 이미지 세그먼트 (110b) 는, 압축된 소프트웨어 이미지 세그먼트 (110a) 가 압축되는 특성보다 더 느리지만 압축된 소프트웨어 이미지 세그먼트 (110c) 가 압축되는 특성보다는 더 빠른 압축 해제를 제공하는 압축 특성에 따라 압축된다. 이에 따라, 압축해제 로직 엘리먼트 (114b) 는 예를 들어 압축해제 로직 엘리먼트 (114a) 를 특징짓는 알고리즘 및 블록 사이즈보다 더 느린 압축 알고리즘 및 더 큰 블록 사이즈 (즉, "중간"-속도 알고리즘 및 "중간" 블록 사이즈) 에 의해 특징지어질 수도 있다.
레이턴시 공차의 순서에서 계속하여, 태스크 (108d) 는 태스크 (108c) 보다 더 높은 레인턴시 공차를 가지고, 태스크 (108e) 는 태스크 (108d) 보다 더 높은 레인턴시 공차를 가지며, 그리고, 태스크 (108f) 는 태스크들 (108a-108f) 중에서 가장 높은 레이턴시 공차를 갖는다는 것이 주목될 수 있다. 태스크들 (108d-108f) 은 다른 태스크들 (108) 에 비해 그들이 함께 그룹핑되는 유사한 충분한 레이턴시 공차를 가질 수도 있다. 이에 따라, 태스크들 (108d-108f) 의 각각과 연관되는 압축된 소프트웨어 이미지 세그먼트 (110c) 는, 압축된 소프트웨어 이미지 세그먼트 (110b) 가 압축되는 특성보다 더 느린 압축해제를 제공하는 압축 특성에 따라 압축된다. 이에 따라, 압축해제 로직 엘리먼트 (114c) 는, 예를 들어, 압축해제 로직 엘리먼트 (114b) 를 특징짓는 알고리즘 및 블록 사이즈보다 더 느린 압축 알고리즘 및 더 큰 블록 사이즈에 의해 특징지어질 수도 있다.
압축해제 속도에서의 추가적인 차별화는, 더 느린 레이턴시 공차들 또는 더 높은 우선순위들을 갖는 태스크들 (108) 에 대응하는 소프트웨어 이미지 세그먼트들 (110) 의 오직 그것들의 압축해제에서 하드웨어-기반 압축해제 로직 (115) 을 채용함으로써 예시적인 실시형태에서 제공될 수도 있다. 예를 들어, 압축해제 로직 엘리먼트 (114a) 는 하드웨어-기반 압축해제 로직 (115) 으로 압축해제의 작업을 오프로드할 수도 있는 한편, 압축해제 로직 엘리먼트들 (114b 및 114c) 은 그자신들이 (즉, 하드웨어-기반 압축해제 로직 (115) 의 보조 없이, 소프트웨어-기반 계산들로서) 압축해제의 작업을 수행한다. 대안적으로, 압축해제 로직 엘리먼트들 (114b 및 114c) 은 하드웨어-기반 압축해제 로직 (115) 으로 압축해제의 작업을 오프로드할 수도 있는 한편, 압축해제 로직 엘리먼트 (114c) 는 압축해제의 작업을 수행한다.
일부 경우들에서, 태스크의 레이턴시 공차와 태스크의 우선순위 사이에 역 관계가 존재할 수도 있다. 태스크의 "우선순위 (priority)" 는, 다른 태스크들의 퍼포먼스에 관하여 태스크의 퍼포먼스가 태스크들을 포함하는 시스템의 퍼포먼스 결과들에 영향을 미치는 정도에 관련된다. 다른 태스크보다 더 큰 정도로 시스템 퍼포먼스에 영향을 미치는 태스크는 다른 태스크보다 더 높은 우선순위를 할당받을 수도 있다. 태스크는 일부 다른 태스크들보다 더 높은 레이턴시 공차 및 더 낮은 우선순위를 가질 수도 있다. 역으로, 태스크는 일부 다른 태스크들보다 더 낮은 레이턴시 공차 및 더 높은 우선순위를 가질 수도 있다.
예시적인 실시형태에서, 시스템 클록 및/또는 전압 레벨은, 예를 들어, 태스크의 우선순위에 응답하여 동적 전압 및 주파수 스케일링 (dynamic voltage and frequency scaling; DVFS) 기법들을 이용하여 조정될 수도 있다. 도 4 에서 예시된 바와 같이, 예시적인 실시형태에서, 태스크들 (108) 의 각 그룹은 고유한 DVFS 레벨 또는 셋팅 (setting) 과 연관된다. 대응하여, 각각의 압축된 소프트웨어 이미지 세그먼트 (110) 는 고유 DVFS 레벨 또는 셋팅과 연관된다. 예를 들어, 태스크 (108a), 및 대응하여, 압축된 소프트웨어 이미지 세그먼트 (110a) 는, 시스템 (100) (도 1) 또는 그것의 부분들 (예컨대, 프로세서 (102)) 이 고속으로 동작는 것을 가능하게 하는 "높은 (high)" DVFS 셋팅과 연관된다. 태스크들 (108b 및 108c), 및 대응하여, 압축된 소프트웨어 이미지 세그먼트 (110b) 는, 시스템 (100) (도 1) 또는 그것의 부분들 (예컨대, 프로세서 (102)) 이 중간 속도로 동작는 것을 가능하게 하는 "중간 (medium)" DVFS 셋팅과 연관된다. 태스크들 (108d-108f), 및 대응하여, 압축된 소프트웨어 이미지 세그먼트 (110c) 는, 시스템 (100) (도 1) 또는 그것의 부분들 (예컨대, 프로세서 (102)) 이 저속으로 동작는 것을 가능하게 하는 "낮은 (low)" DVFS 셋팅과 연관된다. 따라서, 예시적인 실시형태에서, 태스크 (108) 의 우선순위가 더 높을수록, 시스템은 더 빨리 동작할 수도 있다.
예시적인 실시형태에서, 보다 높은 우선순위 태스크들과 연관된 소프트웨어 이미지 세그먼트들은 낮은 레이턴시 (즉, 높은 액세스 속도) 에 의해 특징지어지는 시스템 메모리에 압축 및 저장될 수도 있는 한편, 보다 낮은 우선순위 태스크들과 연관된 소프트웨어 이미지 세그먼트들은 시스템 메모리보다 높은 레이턴시 (즉, 보다 낮은 액세스 속도) 에 의해 특징지어지는 세컨더리 메모리에 압축 및 저장될 수도 있다. 예를 들어, 도 4 에서 개념적으로 예시된 바와 같이, 압축된 소프트웨어 이미지 세그먼트들 (110a 및 110b) 은 시스템 메모리에서의 저장과 연관될 수도 있는 한편, 압축된 소프트웨어 이미지 세그먼트 (110c) 는 세컨더리 메모리에서의 저장과 연관될 수도 있다. 이러한 시스템 메모리 및 세컨더리 메모리의 예들이 이하에서 설명된다.
도 5a, 5b 에서, 상술된 예시적인 방법 (200) 과 유사한 예시적인 방법 (500) 이 예시된다. 블록 (502) 은 상술된 블록 (202) 과 유사하다. 소프트웨어 툴 (미도시) 은 압축된 소프트웨어 이미지 세그먼트들 (110) 을 생성하기 위해 채용될 수도 있다. 그 툴은 소프트웨어 이미지 및 압축 특성들을 입력들로서 수신한다. 그 툴은 또한 다양한 태스크들 (108) 및 그들의 각각의 레이턴시 공차들 및/또는 우선순위들을 식별하는 정보를 수신할 수도 있다. 이러한 정보는 경험적으로 또는 통상의 기술자에 의해 이해되는 바와 같이 다른 방식들로 결정될 수도 있다. 툴은 도 3 및 도 4 와 관련하여 상술된 바와 같이 레이턴시 공차 및/또는 우선순위의 순서로 랭킹된, 태스크들 (108) 의 정렬된 리스트를 유지한다. 툴은 복수의 압축 알고리즘들 및 압축 블록 사이즈들을 포함할 수도 있고, 태스크들 (108) 중 하나 이상의 태스크들의 각 그룹을 랭킹에 대응하는 레이턴시 공차 및/또는 우선순위를 달성하는 압축 알고리즘 및 블록 사이즈의 조합과 연관시킬 수도 있다. 툴은 이들 입력들을 메모리 (104) 에서의 저장을 위해 압축된 소프트웨어 이미지 세그먼트들 (110) 을 발생시키기 위해서 사용할 수도 있다.
블록 (501) 은 상술된 블록 (204) 과 유사하다. 보다 상세하게는, 블록 (501) 은 블록들 (504, 506, 508, 510 및 512) 을 포함한다. 블록 (504) 에 의해 나타내어진 바와 같이, 태스크들 (108a-108f) 중 하나는 페이지 요청들을 개시할 수도 있다. 페이지 요청은 요청된 페이지의 가상 어드레스에 의해 식별된다. 블록 (506) 에 의해 나타내어진 바와 같이, 가상 어드레스는 트랜슬레이션 룩어사이드 버퍼 (translation lookaside buffer) 또는 "TLB" (미도시) 를 이용하여 메모리 (104) 에서의 물리적 어드레스로 트랜슬레이팅될 수도 있다. 블록 (508) 에 의해 나타내어진 바와 같이, TLB 에 그 물리적 어드레스가 존재하는지 여부가 결정된다. 물리적 어드레스가 TLB 에 존재한다는 결정은 통상적으로 "TLB 히트 (hit)" 로서 지칭된다. 물리적 어드레스가 TLB 에 존재하지 않는다는 결정은 통상적으로 "TLB 미스 (miss)" 로서 지칭된다. TLB 히트가 발생하지 않았다고 (즉, TLB 미스가 발생하였다고) 결정되는 경우에, 블록 (510) 에 의해 나타내어진 바와 같이, 물리적 어드레스가 페이지 테이블 (미도시) 에 존재하는지 여부가 결정된다. 물리적 어드레스가 페이지 테이블에 존재한다는 결정은 통상적으로 "페이지 테이블 히트" 로서 지칭된다. 물리적 어드레스가 페이지 테이블에 존재하지 않는다는 결정은 통상적으로 "페이지 테이블 미스" 로서 지칭된다. TLB 히트도 페이지 테이블 히트도 발생하지 않았다고 (즉, TLB 미스 및 페이지 테이블 미스 양자가 발생하였다고) 결정되는 경우에, 요청하는 태스크들 (108a-108f) 중의 하나와 연관되는 소프트웨어 이미지 세그먼트들 (110a-110c) 중의 하나의 소프트웨어 이미지 세그먼트의 부분이 압축해제된다. 블록 (514) 과 유사한 블록 (206) 과 관련하여 상술된 바와 같이, 이러한 압축해제는 요청된 페이지를 포함하는 압축된 소프트웨어 이미지 세그먼트들 (110a-110c) 중 하나와 연관된 압축해제 로직 엘리먼트들 (114a-114c) 중 하나를 이용하여 수행된다.
블록 (513) 에 의해 나타내어진 바와 같이, 상술된 페이징 및 압축해제와 함께, 시스템 (100) (도 1) 은 요청 태스크 (108) 와 연관된 (그리고 대응하여, 요청된 페이지를 포함하는 압축된 소프트웨어 이미지 세그먼트들 (110a-110c) 중 하나와 연관된) 셋팅 또는 레벨로, 전압 또는 클록 주파수와 같은 DVFS 특성을 설정하도록 조정될 수도 있다. 예를 들어, DVFS 특성은 압축해제가 수행되고 있는 동안 임시로 설정되고 사용된 다음에 그것의 이전의 셋팅으로 복귀될 수도 있다. 물론, DVFS 특성이 요청 태스크 (108) 와 연관된 레벨 또는 셋팅으로 이미 설정된 경우에, 블록 (513) 마다 동일 레벨 또는 셋팅으로 다시 설정될 필요는 없고, 그것의 당시의 셋팅으로 유지될 수 있다.
도 5b 로 계속하여, 상술된 블록 (208) 과 유사한 블록 (516) 에 의해 나타내어진 바와 같이, 압축해제된 페이지는 그 다음에, 메모리 (104) 에서 페이지 풀 (112) 에서 저장된다.
블록 (518) 에 의해 나타내어진 바와 같이, 압축해제된 페이지는 페이지 테이블 및 TLB 내로 맵핑된다. TLB 및 페이지 테이블의 관리는 통상의 기술자에 의해 잘 이해되므로, 이러한 프로세스들의 추가적인 상세들은 본 명세서에서 설명되지 않는다. 디맨드 페이징 로직 (519) (도 1) 은 상술된 페이징을 제어하도록 프로세서 (102) 를 구성하는 것에 기여할 수도 있는 한편, 압축해제 로직 엘리먼트들 (114) 은 상술된 압축해제를 제어하도록 프로세서 (102) 를 구성하는 것에 기여할 수도 있다.
블록 (520) 에 의해 나타내어진 바와 같이, DVFS 특성은 상술된 압축해제에 이어서 그것의 이전 셋팅으로 복귀될 수도 있다. 하지만, 2 개 이상의 압축해제들이 바로 연속하여 수행되어야 하고, 하나의 이러한 압축해제에 이어서, DVFS 특성이 이미 다음 압축해제와 연관된 요청 태스크 (108) 와 연관된 레벨 또는 셋팅으로 설정되는 경우에, DVFS 특성은 블록 (520) 마다 그것의 이전 레벨 또는 셋팅으로 복귀될 필요는 없고, 그것의 당시의 셋팅에서 유지될 수 있다. 상술된 페이징, 압축해제 및 DVFS 에 이어서, 요청 태스크 (108) 는 메모리 (104) 에서 압축해제된 페이지를 액세스할 수도 있고, 그렇지 않으면 계속 실행될 수도 있다.
TLB 또는 페이지 테이블 중 어느 일방에서 히트가 존재하였다고 결정되는 경우에, 블록 (514 및 516) 과 관련하여 상술된 압축해제도 블록 (520) 과 관련하여 상술된 DVFS 조정도 수행되지 않는다. 페이지 히트는 요청된 페이지가 이미 메모리 (104) 에 존재하는 것을 나타내므로, 요청 태스크는 페이지를 액세스하고 그렇지 않으면 계속 실행될 수도 있다.
상술된 방법 스텝들 또는 액트들 중 하나 이상은 컴퓨터 프로그램 명령들로서 메모리 (104)에 저장될 수도 있음을 이해하여야 한다. 이들 명령들은 본 명세서에서 설명된 방법들을 수행하도록 임의의 타입의 디바이스에서 임의의 타입의 프로세서 (102) 에 의해 실행될 수도 있다.
비록 상술된 프로세스 플로우들에서의 특정 액트들 또는 스텝들은 설명된 바와 같이 동작하도록 예시적인 실시형태들에 대해 다른 것들로 자연스럽게 진행하지만, 본 발명은 이러한 순서 또는 시퀀스가 본 발명의 기능을 변경하지 않는 경우 그들 액트들 또는 스텝들의 순서로 제한되지 않는다. 즉, 일부 액트들 또는 스텝들은 본 발명의 범위 및 사상으로부터 벗어남이 없이 다른 액트들 또는 스텝들 전에, 후에, 또는 병행하여 (실질적으로 동시에) 수행될 수도 있다. 일부 경우들에서, 특정 액트들 또는 스텝들은 본 발명으로부터 벗어남이 없이 생략되거나 수행되지 않을 수도 있다. 추가적으로, "그 후", "그 다음", "다음으로" 등과 같은 단어들은 액트들 또는 스텝들의 순서를 제한하는 것으로 의도되지 아니한다. 이들 단어들은 단순히 독자를 예시적인 방법들의 설명을 통해 안내하기 위해 사용된다.
추가적으로, 통상의 기술자는, 예를 들어 이 명세서에서의 흐름도들 및 연관된 설명에 기초하여, 어려움 없이 개시된 발명을 구현하기 위해 컴퓨터 코드를 쓰거나 적절한 하드웨어 및/또는 회로들을 식별할 수 있다.
따라서, 프로그램 코드 명령들 또는 상세한 하드웨어 디바이스들의 특정 셋트의 개시는 본 발명을 어떻게 실시하고 이용하는지의 적당한 이해를 위해 필요한 것으로 고려되지 않는다. 청구된 컴퓨터 구현된 프로세스들의 창의적 기능성은 상기 설명에서 그리고 다양한 프로세스 플로우들을 예시할 수도 있는 도면들과 함께 설명된다.
하나 이상의 예시적인 양태들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현되는 경우에, 기능들은 컴퓨터 판독가능 매체 상에 저장된 컴퓨터 실행가능 명령들 또는 코드에서 구현될 수도 있다. 컴퓨터 판독가능 매체들은 컴퓨터 또는 유사한 컴퓨팅 또는 통신 디바이스에 의해 액세스될 수도 있는 임의의 이용가능한 매체들을 포함한다. 예시로, 그리고 비제한적으로, 이러한 컴퓨터 판독가능 매체들은 RAM, ROM, EEPROM, NAND 플래시, NOR 플래시, M-RAM, P-RAM, R-RAM, CD-ROM 또는 다른 광학적, 자기적, 솔리드-스테이트 등의 데이터 저장 매체들을 포함할 수도 있다. 프로세서에 의한 실행을 위해 그 안에 저장된 비-일시적 컴퓨터 판독가능 저장 매체 및 컴퓨터 실행가능 로직 또는 명령들의 결합은 그 용어가 특허 용어집에서 이해되는 바와 같이 "컴퓨터 프로그램 제품" 을 정의함에 유의하여야 한다.
도 6 에서 예시된 바와 같이, 예시적인 실시형태에서, 상술된 시스템 (100) 은 랩톱 컴퓨터 (604) 또는 유사한 디바이스의 범용 직렬 버스 ("USB") 포트 내로 플러그가능한 타입의 무선 모뎀 (602) 에 포함될 수도 있다. 잠재적인 문제점은, 모뎀 (602) 이 전체 소프트웨어 이미지를 보유할 만큼 충분한 메모리를 결여할 수도 있지만, 모뎀 (602) 은 또한 컴퓨터 (604) 내의 메모리 (미도시) 로부터 페이징할 수 없을 수도 있다는 점이다. 모뎀 (602) 이 랩톱 컴퓨터 (604) 내의 메모리로부터 페이징할 수 없는 경우에서도, 레이턴시들은 일부 또는 모든 태스크들 (108) 의 레이턴시 공차들을 초과할 수도 있다. 이 예시적인 실시형태는 상술된 메모리 (104) 로부터의 페이징 및 메모리 (104) 내로의 압축해제를 제공함으로써 이러한 잠재적인 문제점을 해결한다.
도 7 에서 예시된 바와 같이, 다른 예시적인 실시형태들에서, 상술된 시스템 (100) (도 1) 은 컴퓨터 시스템 (700) 또는 유사한 컴퓨팅 디바이스의 다수의 상이한 타입들의 프로세서들 중 임의의 것에 포함될 수도 있다. 하나의 예시적인 실시형태에서, 시스템 (100) 은 중앙 프로세싱 유닛 ("CPU") (702) 에 포함될 수 있다. 다른 예시적인 실시형태에서, 시스템 (100) 은 그래픽 프로세싱 유닛 ("GPU") (704) 에 포함될 수 있다. 또 다른 예시적인 실시형태에서, 시스템 (100) 은 비디오 프로세서 (706) 에 포함될 수 있다.
이러한 예시적인 실시형태들에서, 컴퓨터 시스템 (700) 은 비-착탈형 매체들 (예컨대, 플래시 메모리, eMMC, 자기 디스크 등) 데이터 스토리지 (710) 및 착탈형-매체 드라이브 (712) (예컨대, DVD-ROM, CD-ROM, 블루-레이 디스크 등) 와 같은 대용량 저장 디바이스들 및 시스템 메모리 (708) 를 더 포함할 수도 있다. 예를 들어, 착탈형 매체 드라이브 (712) 는 DVD-ROM (713) 을 수용할 수도 있다. 본 명세서에서 사용된 바와 같은 "디스크 (disk)" 및 "디스크 (disc)" 라는 용어들은 콤팩트 디스크 ("CD"), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 ("DVD"), 플로피 디스크 및 블루-레이 디스크를 포함한다. 상기한 것들의 조합들도 또한 컴퓨터 판독가능 매체들의 범위 내에 포함된다. 컴퓨터 시스템 (700) 은 또한 USB 포트 (714) 를 포함하고, 이 USB 포트에 마우스 (716) 및 키보드 (718) 와 같은 사용자 인터페이스 디바이스들 또는 다른 주변 장치들이 접속될 수도 있다. 또한, 컴퓨터 시스템 (700) 은, 컴퓨터 시스템 (700) 과 인터넷과 같은 외부 네트워크 사이의 통신을 가능하게 하기 위한 네트워크 인터페이스 (720) 를 포함할 수도 있다. 사용자 인터페이스 주변 장치들은 또한, 비디오 프로세서 (706) 에 접속될 수도 있는 비디오 모니터 (722) 를 포함할 수도 있다.
도 9a 및 도 9b 에서, 도 5a 및 도 5b 와 관련하여 상기 설명된 예시적인 방법 (500) 과 유사한 예시적인 방법 (900) 이 예시된다. 블록들 (902 및 903) 은, 소프트웨어 이미지 세그먼트들이 메모리에 압축 및 저장된다는 점에서 상술된 블록 (502) 과 유사하다. 하지만, 예시적인 방법 (500) 에서와는 달리, 예시적인 방법 (900) 에서, 상위-우선순위 (higher-priority) 태스크들과 연관된 소프트웨어 이미지 세그먼트들과 하위-우선순위 (lower-priority) 태스크들과 연관된 소프트웨어 이미지 세그먼트들 사이에 구별이 이루어진다. 블록 (902) 에 의해 나타내어진 바와 같이, 상위-우선순위 태스크들과 연관된 소프트웨어 이미지 세그먼트들은, 블록 (502) 과 관련하여 상술된 것과 동일한 방식으로, 상술된 시스템 메모리 (104) (도 1) 또는 상술된 시스템 메모리 (708) (도 7) 와 같은, 고속 시스템 메모리에 압축 및 저장된다. 하지만, 블록 (903) 에 의해 나타내어진 바와 같이, 하위-우선순위 태스크들과 연관된 소프트웨어 이미지 세그먼트들은, 세컨더리 메모리 또는, 시스템 메모리보다 더 높은 레이턴시, 즉, 더 낮은 속도에 의해 특징지어지는 유사한 데이터 스토리지에 압축 및 저장된다. 이러한 세컨더리 메모리는, 예를 들어, 상술된 데이터 스토리지 (710) (도 7) 와 같은 플래시 메모리일 수도 있다. 대안적으로, 도 6 에서 예시된 실시형태와 관련하여, 이러한 세컨더리 메모리 (예컨대, 플래시 메모리) 는 컴퓨터 (604) 에 포함될 수도 있다.
블록 (901) 은 상술된 블록 (501) 과 유사하다. 블록 (501) 과 관련하여 상술된 바와 같이, 페이지 오류가 발생하였다고 결정되는 경우에, 요청 태스크와 연관되는 소프트웨어 이미지 세그먼트의 부분이 획득되고 압축해제된다. 블록 (914) 에 의해 나타내어진 바와 같이, 높은 우선순위 및/또는 낮은 레이턴시 공차를 갖는 요청 태스크의 경우에, 압축해제될 소프트웨어 이미지 세그먼트 부분이 시스템 메모리로부터 취출되고, 여기서, 그 소프트웨어 이미지 세그먼트는 상술된 블록 (902) 에 따라 저장되었다. 반면에, 블록 (915) 에 의해 나타내어진 바와 같이, 낮은 우선순위 및/또는 높은 레이턴시 공차를 갖는 요청 태스크의 경우에, 압축해제될 소프트웨어 이미지 세그먼트 부분이 세컨더리 메모리로부터 취출되고, 여기서, 그 소프트웨어 이미지 세그먼트는 상술된 블록 (903) 에 따라 저장되었다. 블록 (914 또는 915) 중 어느 일방의 블록의 경우에, 이 압축해제는 상기 설명된 다른 실시형태들에서와 같이, 요청된 페이지를 포함하는 압축된 소프트웨어 이미지 세그먼트와 연관된 압축해제 로직을 이용하여 수행된다. 따라서, 예시적인 방법 (200 및 500) 과 관련하여 상기 설명된 것과 동일한 방식으로, 예시적인 방법 (900) 에서, 채용되는 압축해제 로직은 요청 태스크의 우선순위 및/또는 레이턴시 공차와 연관된 압축 특성, 즉, 압축 알고리즘, 압축 블록 사이즈, 및 DVFS 셋팅 중의 하나 이상의 조합과 연관된다.
도 6 에서 예시된 실시형태에 대해 다시 참조하면, 무선 모뎀 (602) 은, 상위-우선순위 태스크들에 의해 개시된 페이지 요청들에 대해 응답하여 그것의 내부 시스템 메모리로부터의 이러한 압축-기반 페이징을 채용할 수도 있지만, 하위-우선순위 태스크들에 의해 개시된 페이지 요청들에 대해 응답하여 컴퓨터 (604) 내의 세컨더리 메모리로부터의 동일한 타입의 압축-기반 페이징을 채용할 수도 있다.
블록 (913) 은, 압축해제가 수행되고 있는 동안 DVFS 특성이 일시적으로 설정되고 사용될 수도 있으며, 그 다음에, 그것의 이전 셋팅으로 복귀 (920) 된다는 점에서 상술된 블록 (513) 과 유사하다. 물론, DVFS 특성이 요청 태스크 (108) 와 연관된 레벨 또는 셋팅으로 이미 설정된 경우에는, 블록 (913) 마다 동일한 레벨 또는 셋팅으로 다시 설정될 필요는 없고, 당시의 셋팅에서 유지될 수 있다. 도 5b 로 계속하면, 블록 (916) 은, 압축해제된 페이지가 고속 시스템 메모리에 저장된 다는 점에서 상술된 블록 (516) 과 유사하다. 블록들 (918 및 920) 은 상술된 블록들 (518 및 520) 과 각각 유사하다. 따라서, 2 개 이상의 압축해제들이 바로 연속하여 수행되어야 하고, 하나의 이러한 압축해제에 이어서 DVFS 특성이 다음 압축해제와 연관된 요청 태스크 (108) 와 연관된 레벨 또는 셋팅으로 이미 설정되는 경우에, DVFS 특성은 블록 (920) 마다 그것의 이전 레벨 또는 셋팅으로 복귀될 필요는 없고, 그것의 당시의 셋팅에서 유지될 수 있다.
특정 실시형태에서, (도 2, 도 5a-5b 및 도 9a-9b 와 관련하여 상기 설명된 것과 같은) 본 명세서에서 설명된 방법 스텝들의 하나 이상이 컴퓨터 프로그램 명령들로서 메모리 (708) 에 저장될 수도 있다. 이들 명령들은 본 명세서에서 설명된 방법들을 수행하기 위해 CPU (702), GPU (704), 비디오 프로세서 (706), 또는 다른 프로세서에 의해 실행될 수도 있다. 또한, 컴퓨터 프로그램 명령들에 의해 구성되는 바와 같은, CPU (702), GPU (704), 비디오 프로세서 (706), 또는 메모리 (708), 또는 이들의 조합은, 본 명세서에서 설명된 방법 단계들의 하나 이상을 수행하기 위한 수단으로서 기능할 수도 있다.
도 8 에서 예시된 바와 같이, 상술된 시스템 (100) (도 1) 이 포함될 수도 있는 다른 타입의 컴퓨팅 디바이스는 모바일 전화기와 같은 휴대용 통신 디바이스 (800) 이다. 휴대용 통신 디바이스 (800) 는, 함께 커플링되는 CPU 또는 DSP (804) 및 아날로그 신호 프로세서 (806) 를 포함하는 온-칩 시스템 (802) 을 포함한다. DSP (804) 는 상술된 페이징 및 압축해제 방법들과 관련하여 상술된 방식으로 동작하도록 구성될 수도 있다. 디스플레이 제어기 (808) 및 터치스크린 제어기 (810) 는 DSP (804) 에 커플링된다. 온-칩 시스템 (802) 외부의 터치스크린 디스플레이 (812) 는 디스플레이 제어기 (808) 및 터치스크린 제어기 (810) 에 커플링된다. 비디오 인코더 (814), 예컨대, 위상-교번 라인 ("PAL") 인코더, SECAM (sequential couleur avec memoire) 인코더, NTSC (national television system(s) committee) 인코더 또는 임의의 다른 비디오 인코더가 DSP (804) 에 커플링된다. 또한, 비디오 증폭기 (816) 는 비디오 인코더 (814) 및 터치스크린 디스플레이 (812) 에 커플링된다. 비디오 포트 (818) 는 비디오 증폭기 (816) 에 커플링된다. USB 제어기 (820) 는 DSP (804) 에 커플링된다. USB 포트 (822) 는 USB 제어기 (820) 에 커플링된다. 메모리 (104) (도 1) 와 관련하여 상기 설명된 방식으로 동작할 수도 있는 메모리 (824) 는 DSP (804) 에 커플링된다. 가입자 아이덴티티 모듈 ("SIM") 카드 (826) 및 디지털 카메라 (828) 가 또한 DSP (804) 에 커플링된다. 예시적인 양태에서, 디지털 카메라 (828) 는 전하-결합형 디바이스 ("CCD") 카메라 또는 상보형 금속-산화물 반도체 ("CMOS") 카메라이다.
스테레오 오디오 CODEC (830) 은 아날로그 신호 프로세서 (806) 에 커플링될 수도 있다. 또한, 오디오 증폭기 (832) 는 스테레오 오디오 CODEC (830) 에 커플링될 수도 있다. 예시적인 양태에서, 제 1 스테레오 스피커 (834) 및 제 2 스테레오 스피커 (836) 는 오디오 증폭기 (832) 에 커플링된다. 또한, 마이크로폰 증폭기 (838) 는 스테레오 오디오 CODEC (830) 에 커플링될 수도 있다. 마이크로폰 (840) 은 마이크로폰 증폭기 (838) 에 커플링될 수도 있다. 특정 양태에서, 주파수 변조 ("FM") 라디오 튜너 (842) 는 스테레오 오디오 CODEC (830) 에 커플링될 수도 있다. 또한, FM 안테나 (844) 는 FM 라디오 튜너 (842) 에 커플링된다. 또한, 스테레오 헤드폰들 (846) 은 스테레오 오디오 CODEC (830) 에 커플링될 수도 있다.
무선 주파수 ("RF") 트랜시버 (848) 는 아날로그 신호 프로세서 (806) 에 커플링될 수도 있다. RF 스위치 (850) 는 RF 트랜시버 (848) 와 RF 안테나 (852) 사이에 커플링될 수도 있다. RF 트랜시버 (848) 는 이동 전화 네트워크들과 같은 종래의 지상 통신 네트워크들과 뿐만 아니라, 글로벌 포지셔닝 시스템 ("GPS") 위성들과 통신하도록 구성될 수도 있다.
마이크로폰 (856) 을 갖는 모노 헤드셋은 아날로그 신호 프로세서 (806) 에 커플링될 수도 있다. 또한, 진동기 디바이스 (858) 는 아날로그 신호 프로세서 (806) 에 커플링될 수도 있다. 전력 공급기 (860) 는 온-칩 시스템 (802) 에 커플링될 수도 있다. 특정 양태에서, 전력 공급기 (860) 는 전력을 필요로 하는 휴대용 컴퓨팅 디바이스 (800) 의 다양한 컴포넌트들에 전력을 제공하는 직류 ("DC") 전력 공급기이다. 또한, 추가적인 양태에서, 전력 공급기는 AC 전원에 연결된 DC 트랜스포머에 대해 교류 ("AC") 로부터 도출되는 DC 전력 공급기 또는 재충전가능한 DC 배터리이다.
DVFS 제어기 (862) 는 DSP (804) 에 커플링될 수도 있다. DVFS 제어기 (862) 는 DSP (804) 에 인가되는 시스템 클록 주파수와 같은 DVFS 특성에 영향을 미치는 DVFS 셋팅을 조정함으로써 DSP (804) 로부터 수신되는 제어 신호들에 대해 응답할 수도 있다.
키패드 (854) 는 아날로그 신호 프로세서 (806) 에 커플링될 수도 있다. 터치스크린 디스플레이 (812), 비디오 포트 (818), USB 포트 (822), 카메라 (828), 제 1 스테레오 스피커 (834), 제 2 스테레오 스피커 (836), 마이크로폰 (840), FM 안테나 (844), 스테레오 헤드폰들 (846), RF 스위치 (850), RF 안테나 (852), 키패드 (854), 모노 헤드셋 (856), 진동기 (858), 및 전력 공급기 (860) 는 온-칩 시스템 (802) 외부에 있다.
특정 양태에서, (도 2 및 도 5a-5b 와 관련하여 상기 설명된 것과 같은) 본 명세서에서 설명된 방법 스텝들의 하나 이상은 컴퓨터 프로그램 명령들로서 메모리 (824) 에 저장될 수도 있다. 이들 명령들은 본 명세서에서 설명된 방법들을 수행하도록 DSP (804), 아날로그 신호 프로세서 (806), 또는 다른 프로세서에 의해 실행될 수도 있다. 또한, 컴퓨터 프로그램 명령들에 의해서 구성되는 DSP (804), 아날로그 신호 프로세서 (806), 또는 메모리 (112), 또는 이들의 조합은 본 명세서에서 설명되는 방법 스텝들의 하나 이상을 수행하기 위한 수단으로서 기능할 수도 있다.
본 발명의 사상 및 범주로부터 벗어나지 않으면서 본 발명과 관련되는 대안적인 실시형태들이 통상의 기술자에게 자명할 것이다. 따라서, 선택된 양태들이 예시되고 상세히 설명되었지만, 다음의 청구항들에 의해 정의되는 본 발명의 사상과 범주로부터 벗어나지 않으면서 다양한 대체예들 및 수정예들이 이루어질 수도 있음이 이해될 것이다.

Claims (30)

  1. 프로세서 및 하나 이상의 메모리들을 포함하는 프로세싱 시스템에서의 디맨드 페이징을 위한 방법으로서,
    상기 하나 이상의 메모리들은 시스템 메모리를 포함하고,
    상기 방법은,
    상기 하나 이상의 메모리들 중 적어도 하나의 메모리에 복수의 압축된 소프트웨어 이미지 세그먼트들을 저장하는 단계로서, 각각의 압축된 소프트웨어 이미지 세그먼트는 복수의 소프트웨어 태스크들 중 적어도 하나의 소프트웨어 태스크와 연관되고, 각각의 압축된 소프트웨어 이미지 세그먼트는 상기 압축된 소프트웨어 이미지 세그먼트와 연관되고 모든 다른 압축된 소프트웨어 이미지 세그먼트들과 연관된 압축 특성들과는 상이한 압축 특성에 따라 압축된 하나 이상의 페이지들을 포함하는, 상기 복수의 압축된 소프트웨어 이미지 세그먼트들을 저장하는 단계; 및
    실행 소프트웨어 태스크와 연관된 페이지 요청이 상기 시스템 메모리에 저장된 페이지를 식별하는지 여부를 결정하는 단계;
    식별된 페이지가 상기 시스템 메모리에 저장되지 않는 경우에, 상기 식별된 페이지를 포함하는 상기 압축된 소프트웨어 이미지 세그먼트들 중 하나의 소프트웨어 이미지 세그먼트의 부분을 압축해제된 페이지로 압축해제하는 단계; 및
    상기 페이지 요청에 응답하여 상기 시스템 메모리에 상기 압축해제된 페이지를 저장하는 단계를 포함하는, 디맨드 페이징을 위한 방법.
  2. 제 1 항에 있어서,
    상기 압축된 소프트웨어 이미지 세그먼트들 중 적어도 하나는 2 개 이상의 소프트웨어 태스크들의 그룹과 연관되는, 디맨드 페이징을 위한 방법.
  3. 제 1 항에 있어서,
    상기 압축 특성은 압축 알고리즘 및 압축 블록 사이즈 중 하나 이상을 포함하는, 디맨드 페이징을 위한 방법.
  4. 제 1 항에 있어서,
    상기 복수의 압축된 소프트웨어 이미지 세그먼트들을 저장하는 단계는, 제 1 복수의 압축된 소프트웨어 이미지 세그먼트들을 상기 시스템 메모리에 저장하는 단계 및 제 2 복수의 압축된 소프트웨어 이미지 세그먼트들을 상기 시스템 메모리보다 더 높은 레이턴시를 갖는 세컨더리 메모리에 저장하는 단계를 포함하고; 그리고
    상기 식별된 페이지가 상기 시스템 메모리에 저장되지 않는 경우에 상기 식별된 페이지를 포함하는 상기 압축된 소프트웨어 이미지 세그먼트들 중 하나의 소프트웨어 이미지 세그먼트의 부분을 압축해제된 페이지로 압축해제하는 단계는, 상기 시스템 메모리 및 상기 세컨더리 메모리 중 하나에 저장된 상기 압축된 소프트웨어 이미지 세그먼트들 중 하나의 소프트웨어 이미지 세그먼트의 부분을 압축해제하는 단계를 포함하는, 디맨드 페이징을 위한 방법.
  5. 제 1 항에 있어서,
    각각의 압축된 소프트웨어 이미지 세그먼트는 모든 다른 압축된 소프트웨어 이미지 세그먼트들의 동적 전압 및 주파수 스케일링 (DVFS) 특성들과는 상이한 DVFS 특성과 더 연관되고,
    상기 방법은, 상기 프로세싱 시스템의 DVFS 제어를, 상기 식별된 페이지를 포함하는 상기 압축된 소프트웨어 이미지 세그먼트들 중 하나의 소프트웨어 이미지 세그먼트와 연관된 상기 DVFS 특성으로 설정하는 단계를 더 포함하는, 디맨드 페이징을 위한 방법.
  6. 제 1 항에 있어서,
    상기 압축된 소프트웨어 이미지 세그먼트들 중 하나의 소프트웨어 이미지 세그먼트의 부분을 압축해제하는 단계는, 압축해제 하드웨어 로직을 이용하여 제 1 압축된 소프트웨어 이미지 세그먼트의 부분을 압축해제하고 압축해제 소프트웨어 로직을 이용하여 제 2 압축된 소프트웨어 이미지 세그먼트의 부분을 압축해제하는 단계를 포함하는, 디맨드 페이징을 위한 방법.
  7. 제 1 항에 있어서,
    상기 프로세싱 시스템은, 모바일 전화기, 퍼스널 디지털 어시스턴트, 페이저, 스마트폰, 내비게이션 디바이스, 및 무선 접속 또는 링크를 갖는 핸드-헬드 컴퓨터 중 적어도 하나를 포함하는 휴대용 컴퓨팅 디바이스에 포함되는, 디맨드 페이징을 위한 방법.
  8. 페이징을 위한 시스템으로서,
    시스템 메모리를 포함하는 하나 이상의 메모리들로서, 상기 하나 이상의 메모리들 중 적어도 하나의 메모리는 복수의 압축된 소프트웨어 이미지 세그먼트들을 상기 메모리에 저장하도록 구성되고, 각각의 압축된 소프트웨어 이미지 세그먼트는 복수의 소프트웨어 태스크들 중 적어도 하나의 소프트웨어 태스크와 연관되고, 각각의 압축된 소프트웨어 이미지 세그먼트는 상기 압축된 소프트웨어 이미지 세그먼트와 연관되고 모든 다른 압축된 소프트웨어 이미지 세그먼트들과 연관된 압축 특성들과는 상이한 압축 특성에 따라 압축된 하나 이상의 페이지들을 포함하는, 상기 하나 이상의 메모리들; 및
    실행 소프트웨어 태스크와 연관된 페이지 요청이 상기 시스템 메모리에 저장된 페이지를 식별하는지 여부를 결정하고;
    식별된 페이지가 상기 시스템 메모리에 저장되지 않는 경우에, 상기 식별된 페이지를 포함하는 상기 압축된 소프트웨어 이미지 세그먼트들 중 하나의 소프트웨어 이미지 세그먼트의 부분을 압축해제된 페이지로 압축해제하며; 그리고
    상기 페이지 요청에 응답하여 상기 시스템 메모리에 상기 압축해제된 페이지를 저장하도록 구성된 프로세서
    를 포함하는, 페이징을 위한 시스템.
  9. 제 8 항에 있어서,
    상기 압축된 소프트웨어 이미지 세그먼트들 중 적어도 하나는 2 개 이상의 소프트웨어 태스크들의 그룹에 대응하는, 페이징을 위한 시스템.
  10. 제 8 항에 있어서,
    상기 압축 특성은 압축 알고리즘 및 압축 블록 사이즈 중 하나 이상을 포함하는, 페이징을 위한 시스템.
  11. 제 8 항에 있어서,
    상기 압축 특성은 압축 알고리즘 및 압축 블록 사이즈의 조합을 포함하는, 페이징을 위한 시스템.
  12. 제 8 항에 있어서,
    상기 시스템 메모리는 제 1 복수의 압축된 소프트웨어 이미지 세그먼트들을 저장하도록 구성되고, 상기 시스템은 제 2 복수의 압축된 소프트웨어 이미지 세그먼트들을 저장하도록 구성된 세컨더리 메모리를 더 포함하고, 상기 세컨더리 메모리는 상기 시스템 메모리보다 더 높은 레이턴시를 가지며; 그리고
    상기 프로세서는, 상기 시스템 메모리 및 상기 세컨더리 메모리 중 하나에 저장된 상기 압축된 소프트웨어 이미지 세그먼트들 중 하나의 소프트웨어 이미지 세그먼트의 부분을 압축해제하도록 구성됨으로써, 식별된 페이지가 상기 시스템 메모리에 저장되지 않는 경우에, 상기 식별된 페이지를 포함하는 상기 압축된 소프트웨어 이미지 세그먼트들 중 하나의 소프트웨어 이미지 세그먼트의 부분을 압축해제된 페이지로 압축해제하도록 구성되는, 페이징을 위한 시스템.
  13. 제 8 항에 있어서,
    각각의 압축된 소프트웨어 이미지 세그먼트는 모든 다른 압축된 소프트웨어 이미지 세그먼트들의 동적 전압 및 주파수 스케일링 (DVFS) 특성들과는 상이한 DVFS 특성에 더 대응하고,
    상기 프로세서는, 프로세싱 시스템의 DVFS 제어를, 상기 식별된 페이지를 포함하는 상기 압축된 소프트웨어 이미지 세그먼트들 중 하나의 소프트웨어 이미지 세그먼트와 연관된 상기 DVFS 특성으로 설정하도록 더 구성되는, 페이징을 위한 시스템.
  14. 제 8 항에 있어서,
    상기 프로세서는, 압축해제 하드웨어 로직을 이용하여 제 1 압축된 소프트웨어 이미지 세그먼트의 부분을 압축해제하고 압축해제 소프트웨어 로직을 이용하여 제 2 압축된 소프트웨어 이미지 세그먼트의 부분을 압축해제하도록 구성되는, 페이징을 위한 시스템.
  15. 제 8 항에 있어서,
    상기 메모리 및 프로세서는, 모바일 전화기, 퍼스널 디지털 어시스턴트, 페이저, 스마트폰, 내비게이션 디바이스, 및 무선 접속 또는 링크를 갖는 핸드-헬드 컴퓨터 중 적어도 하나를 포함하는 휴대용 컴퓨팅 디바이스에 포함되는, 페이징을 위한 시스템.
  16. 시스템 메모리를 포함하는 하나 이상의 메모리들 및 프로세서를 포함하는 프로세싱 시스템에서의 디맨드 페이징을 위한 시스템으로서,
    상기 하나 이상의 메모리들 중 적어도 하나의 메모리에 복수의 압축된 소프트웨어 이미지 세그먼트들을 저장하는 수단으로서, 각각의 압축된 소프트웨어 이미지 세그먼트는 복수의 소프트웨어 태스크들 중 적어도 하나의 소프트웨어 태스크와 연관되고, 각각의 압축된 소프트웨어 이미지 세그먼트는 상기 압축된 소프트웨어 이미지 세그먼트와 연관되고 모든 다른 압축된 소프트웨어 이미지 세그먼트들과 연관된 압축 특성들과는 상이한 압축 특성에 따라 압축된 하나 이상의 페이지들을 포함하는, 상기 복수의 압축된 소프트웨어 이미지 세그먼트들을 저장하는 수단; 및
    실행 소프트웨어 태스크와 연관된 페이지 요청이 상기 시스템 메모리에 저장된 페이지를 식별하는지 여부를 결정하는 수단;
    식별된 페이지가 상기 시스템 메모리에 저장되지 않는 경우에, 상기 식별된 페이지를 포함하는 상기 압축된 소프트웨어 이미지 세그먼트들 중 하나의 소프트웨어 이미지 세그먼트의 부분을 압축해제된 페이지로 압축해제하는 수단; 및
    상기 페이지 요청에 응답하여 상기 시스템 메모리에 상기 압축해제된 페이지를 저장하는 수단을 포함하는, 디맨드 페이징을 위한 시스템.
  17. 제 16 항에 있어서,
    상기 압축된 소프트웨어 이미지 세그먼트들 중 적어도 하나는 2 개 이상의 소프트웨어 태스크들의 그룹과 연관되는, 디맨드 페이징을 위한 시스템.
  18. 제 16 항에 있어서,
    상기 압축 특성은 압축 알고리즘 및 압축 블록 사이즈 중 하나 이상을 포함하는, 디맨드 페이징을 위한 시스템.
  19. 제 16 항에 있어서,
    상기 압축 특성은 압축 알고리즘 및 압축 블록 사이즈의 조합을 포함하는, 디맨드 페이징을 위한 시스템.
  20. 제 16 항에 있어서,
    상기 저장하는 수단은, 제 1 복수의 압축된 소프트웨어 이미지 세그먼트들을 상기 시스템 메모리에 저장하는 수단 및 제 2 복수의 압축된 소프트웨어 이미지 세그먼트들을 상기 시스템 메모리보다 더 높은 레이턴시를 갖는 세컨더리 메모리에 저장하는 수단을 포함하고; 그리고
    상기 압축해제하는 수단은, 상기 시스템 메모리 및 상기 세컨더리 메모리 중 하나에 저장된 상기 압축된 소프트웨어 이미지 세그먼트들 중 하나의 소프트웨어 이미지 세그먼트의 부분을 압축해제하는 수단을 포함하는, 디맨드 페이징을 위한 시스템.
  21. 제 16 항에 있어서,
    각각의 압축된 소프트웨어 이미지 세그먼트는 모든 다른 압축된 소프트웨어 이미지 세그먼트들의 동적 전압 및 주파수 스케일링 (DVFS) 특성들과는 상이한 DVFS 특성과 더 연관되고,
    상기 시스템은, 상기 프로세싱 시스템의 DVFS 제어를, 상기 식별된 페이지를 포함하는 상기 압축된 소프트웨어 이미지 세그먼트들 중 하나의 소프트웨어 이미지 세그먼트와 연관된 상기 DVFS 특성으로 설정하는 수단을 더 포함하는, 디맨드 페이징을 위한 시스템.
  22. 제 16 항에 있어서,
    상기 압축된 소프트웨어 이미지 세그먼트들 중 하나의 소프트웨어 이미지 세그먼트의 부분을 압축해제하는 것은, 압축해제 하드웨어 로직을 이용하여 제 1 압축된 소프트웨어 이미지 세그먼트의 부분을 압축해제하고 압축해제 소프트웨어 로직을 이용하여 제 2 압축된 소프트웨어 이미지 세그먼트의 부분을 압축해제하는 것을 포함하는, 디맨드 페이징을 위한 시스템.
  23. 제 16 항에 있어서,
    상기 프로세싱 시스템은, 모바일 전화기, 퍼스널 디지털 어시스턴트, 페이저, 스마트폰, 내비게이션 디바이스, 및 무선 접속 또는 링크를 갖는 핸드-헬드 컴퓨터 중 적어도 하나를 포함하는 휴대용 컴퓨팅 디바이스에 포함되는, 디맨드 페이징을 위한 시스템.
  24. 비-일시적 저장 매체에 수록된 컴퓨터-실행가능 로직을 포함하는 컴퓨터 프로그램 제품으로서,
    프로세서에 의한 상기 로직의 실행은,
    실행 소프트웨어 태스크와 연관된 페이지 요청이 시스템 메모리에 저장된 페이지를 식별하는지 여부를 결정하는 것으로서, 상기 시스템 메모리는 상기 프로세서에 의해 액세스가능한 하나 이상의 메모리들에 포함되고, 상기 하나 이상의 메모리들 중 적어도 하나의 메모리는 그 안에 저장된 복수의 압축된 소프트웨어 이미지 세그먼트들을 가지며, 각각의 압축된 소프트웨어 이미지 세그먼트는 복수의 소프트웨어 태스크들 중 적어도 하나의 소프트웨어 태스크와 연관되고, 각각의 압축된 소프트웨어 이미지 세그먼트는 상기 압축된 소프트웨어 이미지 세그먼트와 연관되고 모든 다른 압축된 소프트웨어 이미지 세그먼트들의 압축 특성들과는 상이한 압축 특성에 따라 압축된 하나 이상의 페이지들을 포함하는, 실행 소프트웨어 태스크와 연관된 페이지 요청이 시스템 메모리에 저장된 페이지를 식별하는지 여부를 결정하는 것을 행하고;
    식별된 페이지가 상기 시스템 메모리에 저장되지 않는 경우에, 상기 식별된 페이지를 포함하는 상기 압축된 소프트웨어 이미지 세그먼트들 중 하나의 소프트웨어 이미지 세그먼트를 압축해제된 페이지로 압축해제하며; 그리고
    상기 페이지 요청에 응답하여 상기 시스템 메모리에 상기 압축해제된 페이지를 저장하도록
    상기 프로세서를 구성하는, 컴퓨터 프로그램 제품.
  25. 제 24 항에 있어서,
    상기 압축된 소프트웨어 이미지 세그먼트들 중 적어도 하나는 2 개 이상의 소프트웨어 태스크들의 그룹과 연관되는, 컴퓨터 프로그램 제품.
  26. 제 24 항에 있어서,
    상기 압축 특성은 압축 알고리즘 및 압축 블록 사이즈 중 하나 이상을 포함하는, 컴퓨터 프로그램 제품.
  27. 제 24 항에 있어서,
    상기 프로세서에 의한 상기 로직의 실행은, 제 1 복수의 압축된 소프트웨어 이미지 세그먼트들을 상기 시스템 메모리에 저장하고, 제 2 복수의 압축된 소프트웨어 이미지 세그먼트들을 상기 시스템 메모리보다 더 높은 레이턴시를 갖는 세컨더리 메모리에 저장하도록 상기 프로세서를 구성함으로써, 상기 복수의 압축된 소프트웨어 이미지 세그먼트들을 저장하도록 상기 프로세서를 구성하고; 그리고
    상기 프로세서에 의한 상기 로직의 실행은, 상기 시스템 메모리 및 상기 세컨더리 메모리 중 하나에 저장된 상기 압축된 소프트웨어 이미지 세그먼트들 중 하나의 소프트웨어 이미지 세그먼트의 부분을 압축해제하도록 상기 프로세서를 구성함으로써, 식별된 페이지가 상기 시스템 메모리에 저장되지 않는 경우에, 상기 식별된 페이지를 포함하는 상기 압축된 소프트웨어 이미지 세그먼트들 중 하나의 소프트웨어 이미지 세그먼트의 부분을 압축해제된 페이지로 압축해제하도록 상기 프로세서를 구성하는, 컴퓨터 프로그램 제품.
  28. 제 24 항에 있어서,
    각각의 압축된 소프트웨어 이미지 세그먼트는 모든 다른 압축된 소프트웨어 이미지 세그먼트들의 동적 전압 및 주파수 스케일링 (DVFS) 특성들과는 상이한 DVFS 특성과 더 연관되고,
    방법은, 프로세싱 시스템의 DVFS 제어를, 상기 식별된 페이지를 포함하는 상기 압축된 소프트웨어 이미지 세그먼트들 중 하나의 소프트웨어 이미지 세그먼트와 연관된 상기 DVFS 특성으로 설정하는 것을 더 포함하는, 컴퓨터 프로그램 제품.
  29. 제 24 항에 있어서,
    상기 압축된 소프트웨어 이미지 세그먼트들 중 하나의 소프트웨어 이미지 세그먼트의 부분을 압축해제하는 것은, 압축해제 하드웨어 로직을 이용하여 제 1 압축된 소프트웨어 이미지 세그먼트의 부분을 압축해제하고 압축해제 소프트웨어 로직을 이용하여 제 2 압축된 소프트웨어 이미지 세그먼트의 부분을 압축해제하는 것을 포함하는, 컴퓨터 프로그램 제품.
  30. 제 24 항에 있어서,
    상기 프로세서는, 모바일 전화기, 퍼스널 디지털 어시스턴트, 페이저, 스마트폰, 내비게이션 디바이스, 및 무선 접속 또는 링크를 갖는 핸드-헬드 컴퓨터 중 적어도 하나를 포함하는 휴대용 컴퓨팅 디바이스에 포함되는, 컴퓨터 프로그램 제품.
KR1020177030880A 2015-04-29 2016-03-29 적응적 압축-기반 페이징 KR20170140230A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/699,714 US20160320972A1 (en) 2015-04-29 2015-04-29 Adaptive compression-based paging
US14/699,714 2015-04-29
PCT/US2016/024615 WO2016175961A1 (en) 2015-04-29 2016-03-29 Adaptive compression-based paging

Publications (1)

Publication Number Publication Date
KR20170140230A true KR20170140230A (ko) 2017-12-20

Family

ID=55661653

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177030880A KR20170140230A (ko) 2015-04-29 2016-03-29 적응적 압축-기반 페이징

Country Status (6)

Country Link
US (1) US20160320972A1 (ko)
EP (1) EP3289467A1 (ko)
JP (1) JP2018519564A (ko)
KR (1) KR20170140230A (ko)
CN (1) CN107533510A (ko)
WO (1) WO2016175961A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220197816A1 (en) * 2020-12-22 2022-06-23 Intel Corporation Compressed cache memory with parallel decompress on fault

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996037846A1 (en) * 1995-05-22 1996-11-28 Syncronys Softcorp Virtual memory management system with adaptive knowledge base
US6879266B1 (en) * 1997-08-08 2005-04-12 Quickshift, Inc. Memory module including scalable embedded parallel data compression and decompression engines
US7681035B1 (en) * 2003-09-10 2010-03-16 Realnetworks, Inc. Digital rights management handler and related methods
US7188227B2 (en) * 2003-09-30 2007-03-06 International Business Machines Corporation Adaptive memory compression
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
US7929553B2 (en) * 2007-08-10 2011-04-19 Broadcom Corporation System and method for adjusting compression for computing clients based on a latency level
US9052895B2 (en) * 2010-04-07 2015-06-09 International Business Machines Power budget allocation in multi-processor systems
WO2012052336A2 (en) * 2010-10-22 2012-04-26 St-Ericsson Sa Methods and devices for reducing compressed page loading time on page fault
TWI588746B (zh) * 2012-08-28 2017-06-21 晨星半導體股份有限公司 電子裝置及其控制方法
US20150242432A1 (en) * 2014-02-21 2015-08-27 Microsoft Corporation Modified Memory Compression

Also Published As

Publication number Publication date
WO2016175961A1 (en) 2016-11-03
US20160320972A1 (en) 2016-11-03
EP3289467A1 (en) 2018-03-07
JP2018519564A (ja) 2018-07-19
CN107533510A (zh) 2018-01-02

Similar Documents

Publication Publication Date Title
US10310893B2 (en) Managing container pause and resume
US9110795B2 (en) System and method for dynamically allocating memory in a memory subsystem having asymmetric memory components
US9323684B2 (en) Dynamic cache and memory allocation for memory subsystems
US10628308B2 (en) Dynamic adjustment of memory channel interleave granularity
US20150261686A1 (en) Systems and methods for supporting demand paging for subsystems in a portable computing environment with restricted memory resources
CN106575273B (zh) 用于扩展片上系统的存储器的系统和方法
CN107003940B (zh) 用于在非统一存储器架构中提供改进的延迟的系统和方法
US20170371593A1 (en) Selective flash memory compression/decompression using a storage usage collar
US20160335127A1 (en) System and method for dynamic granularity control of parallelized work in a portable computing device (pcd)
US8751724B2 (en) Dynamic memory reconfiguration to delay performance overhead
EP3227787B1 (en) Systems and methods for providing improved latency in a non-uniform memory architecture
CN112654965A (zh) 动态模块的外部分页和交换
KR20170140230A (ko) 적응적 압축-기반 페이징
CN115357389A (zh) 内存管理方法、装置及电子设备
JP2018505489A (ja) システムオンチップにおける動的メモリ利用
US10713189B2 (en) System and method for dynamic buffer sizing in a computing device