KR20080017292A - 내장 시스템들을 위한 저장 아키텍쳐 - Google Patents

내장 시스템들을 위한 저장 아키텍쳐 Download PDF

Info

Publication number
KR20080017292A
KR20080017292A KR1020077012346A KR20077012346A KR20080017292A KR 20080017292 A KR20080017292 A KR 20080017292A KR 1020077012346 A KR1020077012346 A KR 1020077012346A KR 20077012346 A KR20077012346 A KR 20077012346A KR 20080017292 A KR20080017292 A KR 20080017292A
Authority
KR
South Korea
Prior art keywords
compressed
data
storage area
storage
computer program
Prior art date
Application number
KR1020077012346A
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 KR20080017292A publication Critical patent/KR20080017292A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • 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
    • 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)
  • Software Systems (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

내장 시스템들과 같은 장치들에 특히 유익한 저장 관리 아키텍쳐가 개시된다. 이 아키텍쳐는 압축/압축해제 시스템을 위한 프레임워크를 제공하는 바, 이는 유익하게는 소프트웨어 기반이며, 명령어 코드와 쓰기가능한 데이터 모두의 압축을 용이하게 한다.
저장 공간 관리, 명령어 압축, 쓰기용 데이터 압축, 내장 시스템

Description

내장 시스템들을 위한 저장 아키텍쳐{STORAGE ARCHITECTURE FOR EMBEDDED SYSTEMS}
본 발명은 저장 아키텍쳐(storage architecture)에 관한 것으로서, 특히 내장 시스템(embedded system)들에서 명령어 코드 및 데이터를 처리하기 위한 아키텍쳐에 관한 것이다.
내장 시스템은 심각한 설계 제약, 특히 크기와 전력 소모에 있어서의 제약을 수반한다. 메모리와 같은 저장소(storage)는 내장 시스템의 전력 소비의 상당한 부분을 차지하고 있다. 허용가능한 성능을 유지하면서 저장소의 크기를 줄일 수 있는 방식으로, 내장 시스템에 압축 및 암호화 등의 변환을 포함시키는 것이 유익하다.
압축 기술들은 잘 알려져 있다. 내장 시스템들에 압축을 포함시키는 기존의 작업은 일반적으로 명령어 부분 만을 압축하는 하드웨어 솔루션에 초점을 두었다. 예를 들어, L. Benini 등의 "Selective Instruction Compression for Memory Energy Reduction in Embedded Systems," IEEE/ACM Proc. of International Symposium on Lower Power Electronics and Design (ISLPED '99), 페이지 206-11을 참조하라. 압축 알고리즘 선택에 있어서의 보다 큰 유연성 및 하드웨어 복잡성의 감소로 인하여, 소프트웨어 기반의 압축 시도가 점점 더 주목받고 있다. 캐시를 구 비한 내장 시스템들 상에서 명령어 코드를 압축 해제(decompress)하는 데에 소프트웨어 기반의 방법을 이용하는 것이 제안되어 있다. C. Lefurgy 및 T. Mudge에 의해 CASES(Compiler and Architecture Support for Embedded Systems) '99 (1999년 10월)에서 발표된 "Fast Software-Managed Code Decompression"을 참조하라. 내장 시스템 응용들에 대해 읽기 전용(read-only)의 코드 및 데이터가 압축될 수 있게 하는 CRAMFS라 불리는 압축된 파일 시스템은 Linux/GNU 운영 체제에서 구현되었다. CRAMFS를 참조하라(http://sourceforge.net/projects/cramfs(2002년 2월)). 읽기 전용 데이터에 집중하게 되면 다음과 같은 장점이 있다: 읽기 전용 데이터는 실행중 변경되지 않기 때문에, 실행 이전에 압축하고 런타임(runtime)에 작은 부분들을 압축 해제하는 것이 가능해진다. 읽기 전용 데이터를 인덱싱(indexing)하는 것, 즉 압축된 스트림 내의 데이터를 찾는 것은 런타임 압축이 요구되는 경우 보다 실질적으로 용이하다.
복수의 내장 시스템 응용들에 있어서, 쓰기(wrtie)가 가능한 데이터를 포함한 모든 데이터 영역을 압축하는 것이 바람직하다. 실행가능한 프로그램은 종종, 초기화되지 않은 데이터에 대응하며 런타임 동안 변경될 수 있는 .bss 영역과 같은 대규모의 데이터 영역들을 포함한다. 더 나쁜 경우, 상기 실행가능한 프로그램은 대규모의 동적으로 할당되는 데이터 영역을 가질 수 있다. 이러한 영역들이 크고 압축되지 않게 되면, 읽기 전용 데이터 압축에 대한 장점을 상당히 감소시킬 것이다.
내장 시스템들과 같은 장치들에 특히 유익한 저장 관리 아키텍쳐가 개시된다. 이 아키텍쳐는 소프트웨어로 구현되는 것이 바람직한 변형 엔진(transformation engine)을 포함하는 바, 이러한 변형 엔진은 데이터를 변형된 형태로 변형시킨다. 예를 들어, 변형 엔진은 데이터를 압축된 형태로 압축하는 압축/압축해제 엔진이 될 수 있고, 그리고/또는 이러한 변형 엔진은 데이터를 암호화된 형태로 암호화하는 암호화/복호화 엔진이 될 수 있다. 프로그램이 장치의 프로세서 상에서 실행될 때, 그 프로그램과 프로그램의 데이터의 일부분들은 장치의 변형되지 않은 저장 영역에 저장된다. 저장 자원들이 프로그램의 실행중에 고갈(deplete)됨에 따라, 변형 엔진을 이용하여 비변형된 저장 영역 내의 프로그램 또는 데이터의 적어도 하나의 부분을 변형된 형태로 변형(예를 들어, 압축)시키며, 이러한 변형된 형태는 변형된 프로그램 또는 데이터의 변형된 부분들에 대해 할당되는 변형된 저장 영역으로 이동될 수 있다. 장치의 비변형된 저장 영역 내의 저장 자원들은 동적으로 자유화(free up)될 수 있다. 이러한 변형된 저장 영역은 시스템의 요구에 따라 확장되거나 감소될 수 있는 바, 예를 들어 압축된 저장 영역으로 이동되어야 하는 압축된 부분이 그 영역에 대해 현재 할당된 공간 내에서 맞지(fit) 않는 경우, 시스템은 압축된 저장 영역을 자동으로 확장시킨다. 변형된 저장 영역은, 유익하게는 프로그램의 변형된 부분들에 대한 임의 접근을 가능하게 하는 저장 할당 메커니즘(storage allocation mechanism)을 포함할 수 있다. 따라서, 개시되는 아키텍쳐는 압축/압축해제 시스템을 위한 프레임워크(framework)를 제공하는 바, 이는 소프트웨어 기반이 될 수 있고, 명령어 코드와 쓰기가능한 데이터 모두의 압축을 용이하게 한다.
이러한 아키텍쳐에 의해, 프로그램의 서로 다른 부분들(예를 들어, 명령어 코드 세그먼트들과 데이터 세그먼트들, 및 심지어 다른 타입의 데이터)은, 프로그램의 서로 다른 부분들에 대해 서로 다른 변형 기술들을 이용하는 것을 포함하여, 저장 관리 구조에 의해 서로 다르게 처리될 수 있게 된다. 명령어 코드와 같은 프로그램의 읽기 전용 부분들은 압축없이 비변형 저장 영역으로부터 드롭(drop)되고 필요에 따라 다시 읽혀질 수 있다. 저장소에 상주하는 명령어 코드와 데이터 모두의 변형/압축을 촉진시킴으로써, 시스템은 압축/압축해제로 인한 낮은 성능 저하를 유지하면서 저장 오버헤드(overhead)를 줄일 수 있게 된다. 개시되는 변형 프레임워크는 유익하게는 압축/압축해제를 지원하기 위한 특별한 하드웨어 또는 심지어 하드웨어 캐시를 필요로 하지 않는다. 개시되는 프레임워크는 디스크가 없는 또는 디스크 기반의 내장 시스템에서 용이하게 구현될 수 있으며, 유익하게는 동적으로 할당되는 데이터 및 정적으로 초기화되는 데이터를 처리할 수 있다.
본 발명의 이러한 장점들 및 다른 장점들은 하기의 상세한 설명 및 첨부 도면을 참조하여 당업자에게 명백해질 것이다.
도 1은 본 발명의 일 양상의 일 실시예에 따른 시스템 아키텍쳐를 도시한다.
도 2는 데이터가 변형된 저장 영역으로 이동할 때 도 1에 도시된 시스템에 의해 수행되는 처리의 흐름도이다.
도 3은 변형된 저장 영역 내에 저장 공간을 할당하기 위해 맵핑 테이 블(mapping table)을 이용하는 것을 나타내는 개요도이다.
도 1은 본 발명의 바람직한 실시예에 따라 구성되는 예시적인 내장 시스템 아키텍쳐의 개요도이다. 이 내장 시스템은 프로세서(110) 및 저장소(120)를 포함한다. 이러한 프로세서(110) 및 저장소(120)는 임의의 특정 하드웨어 설계로 제한되지 않고, 컴퓨터 시스템에서 통상적으로 이용되는 임의의 하드웨어를 이용하여 구현될 수 있다. 예를 들어, 저장 장치(120)는 메모리들, 플래시 디바이스들, 또는 하드 디스크들 등의 디스크 기반의 저장 장치들에 의해 구현될 수 있지만, 오직 이것들로만 한정되지 않는다.
상기 시스템은 변형 엔진(150)을 포함하는 바, 그 동작에 대해서는 하기에서 더 설명된다. 변형 엔진(150)은 소프트웨어로서 구현되는 것이 바람직하다. 변형 엔진(150)은, 데이터가 저장소의 다른 영역들 간에 이동할 때, 그 데이터(및 하기에서 더 설명되는 명령어 코드)를 변형된 상태와 변형되지 않는 상태 간에 자동으로 변형시키는 역할을 한다. 예를 들어, 변형 엔진(150)은 변형된 상태가 압축된 상태이고 변형되지 않은 상태가 압축되지 않은 상태인 압축/압축해제 엔진으로서 구현될 수 있지만, 오직 이것으로만 한정되지 않는다. 다른 예로서, 변형 엔진(150)은 변형된 상태가 암호화된 상태이고 변형되지 않은 상태가 복호화된 상태인 암호화/복호화 엔진으로서 구현될 수 있다. 본 발명은 임의의 특정 압축 또는 암호화 알고리즘을 포함한 임의의 특정 변형 기술로 한정되지 않는다.
이러한 시스템 아키텍쳐 내에서의 개별적인 저장 영역들의 배치 및 이들의 역할에 대해서는 압축 변형의 예시적인 특정 환경에서 비 한정적으로 하기에서 설명된다.
도 1에 도시된 바와 같이, 저장소(120)의 영역은 압축되지 않은 영역(122)에 할당된다. 압축되지 않은 영역(122)은 프로세서(110)에 의해 액세스될 수 있고, 프로그램을 실행하는 동안 압축되지 않은 명령어 코드와 데이터를 저장하기 위해 프로세서(110)에 의해 이용된다. 본 발명은 압축되지 않은 영역(122)과 관련된 임의의 특정 저장 할당 기술로 한정되지 않으며, 종래의 임의의 편리한 기술들이 이용될 수 있다. 프로그램이 프로세서(110)에 의해 실행될 때, 더욱 많은 영역(122)이 그 프로그램에 의해 이용된다. 한정된 저장 자원들을 갖는 내장 시스템에 있어서, 압축되지 않은 영역(122)에서는 저장 자원들이 빨리 고갈될 수 있다. 따라서, 프로그램을 실행하는 동안, 압축되지 않은 영역(122)에 저장되어 있는 프로그램의 부분들을 동적으로 압축하는 것이 유익하다.
전형적으로, 현재 거의 이용되지 않는 자체 변형 코드(self modifying code)를 제외하고, 명령어 세그먼트들은 런타임 동안 변경되지 않는다. 이는 명령어 코드를 오프라인으로 (실행 이전에) 한번 압축하고, 코드를 압축된 포맷으로 파일 시스템에 저장하는 것이 가능함을 의미한다. 런타임 동안에는, 압축 해제만이 요구된다. 이러한 시스템에서는, 코드를 처리하는 데에 있어서 읽기 전용 시도이면 충분하다. 한편, 데이터 영역들은 다른 방책(strategy)을 필요로 한다. 실행 동안 데이터는 동적으로 변경되며, 이에 따라 온라인 압축이 필요하다. 데이터는 정적으로 초기화되는 데이터(예를 들어, .bss 영역들) 및 동적으로 할당되는 데이터를 포함 할 수 있다. 정적으로 초기화되는 데이터는 고정된 양의 공간을 차지하는 바, 이것은 애플리케이션 초기화시에 일반적으로 0들로 채워지기 때문에 종종 상당히 압축가능하다. 한편, 동적으로 할당되는 데이터는 가변량의 공간을 차지하고, 내장 시스템들에서는 종종 회피되는데, 그 이유는 시스템에 대해 실제로 이용가능한 것 보다 많은 저장 공간을 필요로 할 수 있기 때문이다. 정적으로 초기화되는 데이터와 동적으로 할당되는 데이터는 모두 온라인 압축 기술을 요구하는데, 그 이유는 이들은 모두 쓰여질 수 있어야 하기 때문이다. 본 발명자는 정적으로 초기화되는 데이터 영역과 동적으로 할당되는 데이터 영역 모두는, 매우 잘 압축되는 연속적인 0의 영역이 크기때문에 고도로 압축되는 경향이 있다는 것을 알게 되었다.
주목할 사항으로서, 개시되는 프레임워크는 정적으로 초기화되는 데이터와 동적으로 할당되는 데이터 모두를 처리할 수 있는 장점이 있다.
프로그램을 실행하는 동안 더욱 많은 압축되지 않은 영역(122)이 고갈됨에 따라, 하기에서 더 설명되는 바와 같이, 시스템은 압축되지 않은 영역(122)에 저장되어 있는 데이터의 선택된 부분들을 동적으로 압축함으로써, 압축되지 않은 영역(122) 내의 부가적인 공간을 자유롭게 하도록 구성된다. 압축된 데이터에 대한 임의 접근을 유지하기 위해, 시스템은 압축된 데이터를 위한 압축된 저장 영역(124)을 할당하는 것이 바람직하며, 이러한 압축된 저장 영역은 이후 프로세서(110)가 요구할 때에 시스템으로 하여금 압축된 데이터를 검색할 수 있도록 구성된다. 압축된 저장 영역(124)은, 2004년 6월 16일 출원되었고, 그 명칭이 "Memory Compression Architecture for Embedded Systems"인 동시 계류중이고 공동으로 양 도된 미국 출원 번호 10/869,985호(대리인 관리 번호 03041)(그 내용은 본원의 참조로서 인용된다)에 개시되어 있는 저장 할당 기술에 따라 구성되는 것이 바람직하기는 하지만, 압축된 데이터에 대한 임의 접근을 제공하는 한 다른 저장 할당 기술들도 이용될 수 있음을 주목해야 한다. 또한, 주목할 사항으로서, 도 1은 압축된 저장 영역(124)과 압축되지 않은 영역(122)이 인접하는 것으로 나타내었지만, 이들이 인접해야 한다는 어떠한 요건도 없다. 하기에서 더 설명되는 바와 같이, 압축된 저장 영역(124)은 압축되지 않은 영역(122) 전반에 걸쳐 퍼져있는 다수의 비인접 부분들을 나타내며, 프로그램이 실행되는 동안 시스템이 변경을 요구할 때에 어떠한 최소 크기로부터 확장될 수 있으며 줄어들 수 있다.
도 2는 압축되지 않은 영역이 프로그램 실행 동안 고갈될 때에 도 1에 도시된 시스템에 의해 실행되는 처리의 흐름도이다. 단계(210)에서, 시스템은, 예를 들어 압축되지 않은 영역 내의 자유로운(즉, 이용가능한) 저장 자원들의 양이 어떠한 임계치 아래로 떨어지거나, 또는 저장 요구가 충족될 수 없음을 결정함으로써, 압축되지 않은 자원들이 적다고 결정한다. 단계(220)에서, 시스템은 압축되지 않은 영역 내의 데이터를 압축을 위해 선택한다. 시스템은 저장된 데이터의 타입, 데이터가 어떻게 압축가능한지, 데이터가 프로세서에 의해 얼마나 자주 이용되는지 등에 기초하여 선택을 행한다. 시스템은 알려져있는 기술들을 이용하여 이러한 데이터를 선택하며, 이러한 기술들은 전형적으로 물리적인 메모리를 확장하고, 별도의 메모리 공간으로서 디스크를 이용하여 가상 메모리(virtual memory)를 제공하는 데에 이용된다. 압축되어야 하는 데이터를 선택한 후, 시스템은 단계(230)에서 변형 엔진을 이용하여 데이터를 변형시킨다. 예를 들어, 유익한 고속 압축 알고리즘을 이용하여 데이터를 압축한다. 단계(240)에서, 시스템은 압축된 저장 영역 상에 존재하는 자유로운 저장 자원들 내에 압축된 데이터를 위한 장소(room)를 할당하고자 시도한다. 만일 압축된 저장 영역 내에, 압축된 데이터를 할당하기 위한 존재하는 자유로운 저장 자원들이 있으면, 압축된 데이터는 단계(250)에서 압축된 저장 영역으로 이동된다. 압축되지 않은 영역 및 압축된 저장 영역에서의 저장 공간의 할당을 유지하는 데이터 구조는 단계(280)에서 업데이트된다. 압축된 저장 영역이 압축된 데이터에 대해 할당하기 위한 존재하는 자유로운 저장 자원들을 충분히 갖지 않는 경우, 시스템은 압축된 저장 영역에 더 많은 저장 공간을 할당함으로써, 압축된 저장 영역의 크기를 확장시키고자 시도한다. 이에 의해, 하기에서 더 설명되는 바와 같이, 압축되지 않은 영역에 대해 이용가능한 전체 저장 공간이 감소하게 된다. 하지만, 압축되지 않은 영역으로부터 압축된 저장 영역으로 많은 압축가능 데이터를 이동시킴으로써 보다 많은 압축되지 않은 영역이 자유롭게 된다. 시스템이, 단계(260)에서, 압축되지 않은 저장 영역에 대해 보다 많은 저장 공간을 할당하는 데에 성공하면, 시스템은 단계(250)에서 압축된 데이터를 압축된 저장 영역으로 이동시킨다. 만일 실패하면, 시스템은 단계(290)에서 에러를 보고할 수 있다.
대안적으로, 시스템은 압축된 저장 체계(hierarchy)를 구현할 수 있는 바, 이러한 압축된 저장 영역에 할당될 수 없는 데이터는 다음의 압축된 저장 영역 또는 파일 시스템 내의 압축된 영역으로 이동된다.
압축되지 않은 영역(122)으로부터 압축된 저장 영역(124)으로 데이터가 이동 할 때, 시스템은 어떤 데이터가 이동되었는지, 그리고 데이터를 어떻게 검색할 것인지를 계속하여 추적해야 한다. 상기 언급한 바와 같이, 도 3에 도시된 바와 같이 압축된 저장 영역 내의 압축된 데이터를 추적하기 위해 맵핑 테이블을 이용하는 것이 특히 유익하기는 하지만, 임의의 유익한 메모리 할당 기술이 이용될 수 있다. 주목할 사항으로서, 도 3에 도시된 압축된 저장 영역(320)은 실질적으로 인접하는 것으로서 나타나있지만, 압축된 저장 영역(320)은 실제로 저장소 내의 인접하거나 인접하지 않을 수 있는 할당된 메모리 어드레스 범위들이다. 따라서, 그리고 상기 주목한 바와 같이, 실제로 영역들(122 및 124)은 압축된 부분과 압축되지 않은 부분이 인접하지 않는 방식으로 함께 혼합되는 하나의 영역이 될 수 있다. 도 3에 도시된 바와 같이, 데이터는 블록들로 압축되는 것이 바람직하다. 맵핑 테이블(310)은 각각의 압축된 블록에 대해 엔트리(311, 312, 313, ... 315)를 저장한다. 각 엔트리는 압축된 저장 영역 내에서의 압축된 블록들(321, 322, ... 323)의 저장 위치에 대한 포인터이다. 따라서, 데이터 세그먼트 내의 압축된 블록, 예를 들어 도 3의 압축된 블록(322)에 대한 요청이 수신되는 경우, 시스템은 압축된 블록(322)에 대한 맵핑 테이블 엔트리, 즉 압축된 블록의 위치에 대한 포인터를 가지고 있는 엔트리(312)를 찾기만 하면 된다. 압축된 저장 영역(320) 내의 자유로운 공간은 자유로운 공간의 저장 위치들에 대한 연결 리스트(linked list)에 의해 나타낼 수 있다. 시스템이 압축된 저장 영역(320) 내에 새로운 압축된 데이터를 위한 공간을 할당할 필요가 있을 때, 시스템은 연결 리스트를 참고할 수 있다. 압축된 데이터가 압축된 저장 영역(320)으로부터 액세스될 때, 이것은 압축되지 않은 영역으로 다시 이동되고, 자유롭게 된 그 공간은 자유로운 저장 위치들의 연결 리스트에 부가된다.
상기에서 언급한 바와 같이, 압축된 저장 영역(124)은 프로그램의 특정 부분들(이것은 데이터 세그먼트들 또는 특정 타입의 데이터 세그먼트들을 포함하지만, 오직 이것들로만 한정되지 않는다)에 대해 예약(reserve)될 수 있다. 압축된 저장 영역을 도입함으로써, 작업 공간 저장소(working space storage)(그 일부는 압축된 저장 영역에 할당된다)가 보다 작아짐으로 인해 페이지 전송 요청(page transfer request)의 수가 증가되고, 작업 공간 저장소는 모든 프로세스들을 실행하는 데에 충분하지 않을 수 있다. 또한, 데이터를 입출(in and out) 이동시킴에 따라, 저장소를 액세스하는 시간과 압축 및 압축 해제를 위한 시간을 포함하여 레이턴시를 야기한다. 하지만, 상기 시스템은 총 물리적인 저장 공간이 일반적으로 충분하지 않은 경우에도 프로세스를 실행할 수 있게 하는 바, 압축된 저장 영역이 보다 많은 어드레스가능한 저장 공간을 효과적으로 제공한다.
프로그램의 (명령어 코드와 같은) 읽기 전용 부분들은 압축되지 않은 영역(122)으로부터 폐기되고, 시스템이 최초의 프로그램 및 파일들을 저장하는 곳으로부터 필요에 따라 시스템에 의해 다시 읽혀질 수 있다. 또한, 압축된 영역(124)의 사전 할당된 부분들에 프로그램의 읽기 전용 부분들을 저장할 수 있다. 본 발명은 장치를 동작시키는 데에 필요한 프로그램 파일들을 저장하는 임의의 특정 아키텍쳐로 제한되지 않는다.
주목할 사항으로서, 상기 예시된 저장 관리 기술은 서로 다른 많은 방법으로 용이하게 구현될 수 있다. 이러한 기술은 장치의 운영 체제 내의 메모리 관리 코드 또는 관련 코드에 통합될 수 있다. 대안적으로, 이러한 기술은 프로세서 상에서 실행되는 애플리케이션 내에 직접 포함될 수 있다.
다시 한번 주목할 사항으로서, 본 발명은 임의의 특정 변형 또는 임의의 특정 압축 알고리즘으로 제한되지 않는다. 저장 공간 내에서 충분히 큰(바람직하게는 1KB 또는 그 이상) 복수의 바이트들을 선택하여 개별적으로 압축함으로써, 본 발명자들은 많은 범용의 압축 알고리즘들이 우수한 압축 성능을 갖는 다는 것을 발견했다. 압축/압축 해제의 속도의 측면에서, 본 발명자들은 최상으로 동작하는 알고리즘들은 압축 및 압축 해제 동안 작은 양의 저장 공간을 이용하도록 설계되는 딕셔너리 기반의 알고리즘(dictionary-based algorithm)들이라는 것을 발견했다. 상기의 아키텍쳐는 임의의 유익한 압축 알고리즘을 용이하게 "플러그인(plug-in)"할 수 있는 방식으로 설계된다. 또한, 주목할 사항으로서, 코드를 압축하는 데에 이용되는 압축 알고리즘은 데이터 또는 다른 타입의 데이터를 압축하는 데에 이용되는 압축 알고리즘과 다를 수 있다. 따라서, 상기의 프레임워크를 구현할 때, 명령어 코드가 압축될 필요가 없다는 사실을 이용하여, 느리게 압축하지만 빠르게 압축 해제하는 명령어 코드를 위한 알고리즘을 이용할 수 있다.
또한, 본 발명은 단일 형태의 변형으로 제한되지 않는다. 상기 설명한 변형 엔진은 선택된 데이터 부분에 대해 다수의 변형을 수행할 수 있다. 예를 들어, 변형 엔진은 선택된 부분에 대해 압축을 수행한 다음, 압축된 데이터에 대해 암호화를 수행할 수 있다. 대안적으로, 변형 엔진은 압축된 저장 영역 내의 민감 한(sensitive) 데이터 블록들에 대해서만 암호화 및 압축을 선택적으로 수행하면서, 압축된 저장 영역에 상주하는 다른 타입의 데이터에 대해 압축을 수행할 수 있다.
이해될 사항으로서, 본 발명의 예시적인 도면들 및 특정의 실시예들이 예시되어 설명되었지만, 본 발명의 범위는 개시된 특정의 실시예들로 제한되지 않는다. 따라서, 상기 실시예들은 제한적인 것이 아닌 예시적인 것으로서 간주되어야 한다. 하기의 청구항에서 설명되는 본 발명의 범위를 벗어나지 않으면서 당업자들에 의해 상기 실시예들에 대한 변경들이 이루어질 수 있으며, 본 발명은 이러한 모든 변경들, 구조적이고 기능적인 등가들을 포괄한다. 다양한 변경들중 단지 하나로서, 압축 이외의 변형들이 본 발명의 환경에서 용이하게 이용될 수 있다는 것을 유념해야 한다. 또한, 본 발명은 특히 내장 시스템들과 관련하여 설명되었지만, 본 발명의 근본적인 원리는 내장 시스템 외에 컴퓨팅 시스템에도 일반적으로 적용될 수 있다.

Claims (20)

  1. 프로세서와 저장소(storage)를 포함하는 장치에서 소프트웨어로 구현되는 저장 관리 방법으로서,
    컴퓨터 프로그램의 실행 동안 상기 프로세서에 의해 이용될 수 있도록, 상기 컴퓨터 프로그램 및 그 데이터의 부분들을 압축되지 않은 저장 영역에 저장하는 단계와; 그리고
    상기 컴퓨터 프로그램의 실행 동안 저장 자원들이 고갈되면, 상기 압축되지 않은 저장 영역 내의 상기 컴퓨터 프로그램 또는 데이터의 적어도 하나의 부분을 압축한 다음, 압축된 저장 영역 내로 이동시킴으로써, 상기 압축되지 않은 저장 영역 내의 자원들을 자유롭게 하는 단계를 포함하는 것을 특징으로 하는 저장 관리 방법.
  2. 제 1 항에 있어서,
    상기 압축된 부분이 상기 압축된 저장 영역에 대해 현재 할당된 공간 내에서 맞지 않는 경우, 상기 압축된 저장 영역은 확장되는 것을 특징으로 하는 저장 관리 방법.
  3. 제 1 항에 있어서,
    압축이 필요하지 않은 경우, 상기 압축된 저장 영역은 크기가 감소되는 것을 특징으로 하는 저장 관리 방법.
  4. 제 1 항에 있어서,
    상기 압축된 부분은 상기 컴퓨터 프로그램의 데이터 부분인 것을 특징으로 하는 저장 관리 방법.
  5. 제 4 항에 있어서,
    상기 압축된 부분은, 상기 컴퓨터 프로그램의 다른 부분들 보다 용이하게 압축되는 특정 타입의 데이터를 보유하는, 상기 컴퓨터 프로그램의 데이터 부분인 것을 특징으로 하는 저장 관리 방법.
  6. 제 1 항에 있어서,
    상기 압축된 부분은 딕셔너리 기반의 압축 알고리즘을 이용하여 압축되는 것을 특징으로 하는 저장 관리 방법.
  7. 제 1 항에 있어서,
    상기 압축된 부분은 압축된 후 암호화되는 것을 특징으로 하는 저장 관리 방법.
  8. 제 1 항에 있어서,
    상기 압축된 저장 영역 내의 상기 압축된 부분의 위치들을 추적하기 위해, 맵핑 테이블을 이용하는 것을 특징으로 하는 저장 관리 방법.
  9. 제 1 항에 있어서,
    상기 장치는 내장형 장치인 것을 특징으로 하는 저장 관리 방법.
  10. 프로세서와;
    저장소와;
    변형 엔진과; 그리고
    상기 프로세서에 의해 이용될 수 있도록 프로그램 및 그 데이터의 부분들을 변형되지 않은 저장 영역에 저장하고, 상기 변형 엔진을 이용하여, 상기 변형되지 않은 저장 영역에 저장되어 있는 상기 프로그램 또는 데이터의 적어도 하나의 부분을 변형시킨 다음, 상기 변형된 부분을 상기 변형되지 않은 저장 영역으로부터 상기 프로그램 또는 데이터의 변형된 부분들에 대해 할당된 변형된 저장 영역으로 이동시키는 저장 관리 모듈을 포함하는 것을 특징으로 하는 장치.
  11. 제 9 항에 있어서,
    상기 변형 엔진은 암호화/복호화 엔진인 것을 특징으로 하는 장치.
  12. 제 9 항에 있어서,
    상기 변형 엔진은 압축/압축해제 엔진인 것을 특징으로 하는 장치.
  13. 제 9 항에 있어서,
    상기 변형 엔진은 암호화/복호화 엔진과 압축/압축해제 엔진이 결합된 것이며, 여기서 상기 변형 엔진은 암호화 이전에 압축을 수행하는 것을 특징으로 하는 장치.
  14. 제 9 항에 있어서,
    상기 저장 관리 모듈은 상기 변형된 저장 영역 내의 상기 변형된 부분들의 위치들을 추적하는 데에 이용되는 맵핑 테이블을 액세스하는 것을 특징으로 하는 장치.
  15. 제 9 항에 있어서,
    상기 장치는 내장형 장치인 것을 특징으로 하는 장치.
  16. 제 9 항에 있어서,
    상기 변형 엔진 및 상기 저장 관리 모듈은 소프트웨어로 구현되는 것을 특징으로 하는 장치.
  17. 프로세서와 저장소를 포함하는 장치를 위한 저장 관리 아키텍쳐로서,
    컴퓨터 프로그램의 실행 동안 상기 프로세서에 의해 이용될 수 있도록, 상기 컴퓨터 프로그램 및 그 데이터의 부분들을 변형되지 않은 저장 영역에 저장하기 위한 수단과; 그리고
    상기 컴퓨터 프로그램의 실행 동안 저장 자원들이 고갈되면, 상기 변형되지 않은 저장 영역 내의 상기 컴퓨터 프로그램 또는 데이터의 적어도 하나의 부분을 변형시킨 다음, 상기 변형된 부분을 변형된 저장 영역 내로 이동시킴으로써, 상기 변형되지 않은 저장 영역 내의 자원들을 자유롭게 하기 위한 수단을 포함하는 것을 특징으로 하는 저장 관리 아키텍쳐.
  18. 제 17 항에 있어서,
    상기 부분은 압축 알고리즘을 적용함으로써 변형되는 것을 특징으로 하는 저장 관리 아키텍쳐.
  19. 제 17 항에 있어서,
    상기 부분은 암호화 알고리즘을 적용함으로써 변형되는 것을 특징으로 하는 저장 관리 아키텍쳐.
  20. 제 17 항에 있어서,
    상기 장치는 내장형 장치인 특징으로 하는 저장 관리 아키텍쳐.
KR1020077012346A 2005-07-01 2006-06-15 내장 시스템들을 위한 저장 아키텍쳐 KR20080017292A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US69639805P 2005-07-01 2005-07-01
US60/696,398 2005-07-01
US11/231,738 2005-09-21
US11/231,738 US20070005625A1 (en) 2005-07-01 2005-09-21 Storage architecture for embedded systems

Publications (1)

Publication Number Publication Date
KR20080017292A true KR20080017292A (ko) 2008-02-26

Family

ID=37590976

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077012346A KR20080017292A (ko) 2005-07-01 2006-06-15 내장 시스템들을 위한 저장 아키텍쳐

Country Status (5)

Country Link
US (1) US20070005625A1 (ko)
EP (1) EP1899799A4 (ko)
JP (1) JP2009500723A (ko)
KR (1) KR20080017292A (ko)
WO (1) WO2007005237A2 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080162522A1 (en) * 2006-12-29 2008-07-03 Guei-Yuan Lueh Methods and apparatuses for compaction and/or decompaction
US7688232B2 (en) * 2007-03-27 2010-03-30 Intel Corporation Optimal selection of compression entries for compressing program instructions
US7692975B2 (en) 2008-05-09 2010-04-06 Micron Technology, Inc. System and method for mitigating reverse bias leakage
US9772936B2 (en) * 2008-07-10 2017-09-26 Micron Technology, Inc. Data collection and compression in a solid state storage device
US8918657B2 (en) 2008-09-08 2014-12-23 Virginia Tech Intellectual Properties Systems, devices, and/or methods for managing energy usage
US8918374B1 (en) * 2009-02-13 2014-12-23 At&T Intellectual Property I, L.P. Compression of relational table data files
US9330105B1 (en) * 2010-05-07 2016-05-03 Emc Corporation Systems, methods, and computer readable media for lazy compression of data incoming to a data storage entity
US9311002B1 (en) 2010-06-29 2016-04-12 Emc Corporation Systems, methods, and computer readable media for compressing data at a virtually provisioned storage entity
US9378560B2 (en) * 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
JP5780067B2 (ja) * 2011-09-01 2015-09-16 富士通株式会社 ストレージシステム、ストレージ制御装置およびストレージ制御方法
KR102114388B1 (ko) 2013-10-18 2020-06-05 삼성전자주식회사 전자 장치의 메모리 압축 방법 및 장치
US10296229B2 (en) * 2015-06-18 2019-05-21 Hitachi, Ltd. Storage apparatus
US10572460B2 (en) * 2016-02-11 2020-02-25 Pure Storage, Inc. Compressing data in dependence upon characteristics of a storage system
JP7261317B2 (ja) * 2019-04-29 2023-04-19 ヒタチ ヴァンタラ エルエルシー 圧縮データの記憶及び取得の最適化

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5410671A (en) * 1990-05-01 1995-04-25 Cyrix Corporation Data compression/decompression processor
JP3561002B2 (ja) * 1994-05-18 2004-09-02 富士通株式会社 ディスク装置
US6002411A (en) * 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
US7190284B1 (en) * 1994-11-16 2007-03-13 Dye Thomas A Selective lossless, lossy, or no compression of data based on address range, data type, and/or requesting agent
US5805827A (en) * 1996-03-04 1998-09-08 3Com Corporation Distributed signal processing for data channels maintaining channel bandwidth
US5884014A (en) * 1996-05-23 1999-03-16 Xerox Corporation Fontless structured document image representations for efficient rendering
US6157955A (en) * 1998-06-15 2000-12-05 Intel Corporation Packet processing system including a policy engine having a classification unit
JP4842417B2 (ja) * 1999-12-16 2011-12-21 ソニー株式会社 記録装置
US8095508B2 (en) * 2000-04-07 2012-01-10 Washington University Intelligent data storage and processing using FPGA devices
US7120607B2 (en) * 2000-06-16 2006-10-10 Lenovo (Singapore) Pte. Ltd. Business system and method using a distorted biometrics
US6694393B1 (en) * 2000-06-30 2004-02-17 Lucent Technologies Inc. Method and apparatus for compressing information for use in embedded systems
WO2002047080A2 (en) * 2000-12-07 2002-06-13 Sandisk Corporation System, method, and device for playing back recorded audio, video or other content from non-volatile memory cards, compact disks or other media
US7231531B2 (en) * 2001-03-16 2007-06-12 Dualcor Technologies, Inc. Personal electronics device with a dual core processor
US7260820B1 (en) * 2001-04-26 2007-08-21 Vm Ware, Inc. Undefeatable transformation for virtual machine I/O operations
US7107439B2 (en) * 2001-08-10 2006-09-12 Mips Technologies, Inc. System and method of controlling software decompression through exceptions
US20030196081A1 (en) * 2002-04-11 2003-10-16 Raymond Savarda Methods, systems, and computer program products for processing a packet-object using multiple pipelined processing modules
US6857047B2 (en) * 2002-06-10 2005-02-15 Hewlett-Packard Development Company, L.P. Memory compression for computer systems
US20040025004A1 (en) * 2002-08-02 2004-02-05 Gorday Robert Mark Reconfigurable logic signal processor (RLSP) and method of configuring same
US7099884B2 (en) * 2002-12-06 2006-08-29 Innopath Software System and method for data compression and decompression
US7536418B2 (en) * 2003-01-10 2009-05-19 At&T Intellectual Property Ii, Lp Preload library for transparent file transformation
US6847315B2 (en) * 2003-04-17 2005-01-25 International Business Machines Corporation Nonuniform compression span
US7389308B2 (en) * 2003-05-30 2008-06-17 Microsoft Corporation Shadow paging
WO2004112004A2 (en) * 2003-06-17 2004-12-23 Nds Limited Multimedia storage and access protocol
JP4261299B2 (ja) * 2003-09-19 2009-04-30 株式会社エヌ・ティ・ティ・ドコモ データ圧縮装置、データ復元装置およびデータ管理装置
US20050132161A1 (en) * 2003-12-15 2005-06-16 Nokia Corporation Creation of virtual memory space in a memory
US7549042B2 (en) * 2003-12-16 2009-06-16 Microsoft Corporation Applying custom software image updates to non-volatile storage in a failsafe manner
US20050198498A1 (en) * 2004-03-02 2005-09-08 International Business Machines Corporation System and method for performing cryptographic operations on network data
US20060230014A1 (en) * 2004-04-26 2006-10-12 Storewiz Inc. Method and system for compression of files for storage and operation on compressed files
US20060143454A1 (en) * 2004-05-27 2006-06-29 Silverbrook Research Pty Ltd Storage of multiple keys in memory
US8363837B2 (en) * 2005-02-28 2013-01-29 HGST Netherlands B.V. Data storage device with data transformation capability
US20060230030A1 (en) * 2005-04-12 2006-10-12 Volpa Peter J Method and system for accessing and viewing files on mobile devices

Also Published As

Publication number Publication date
WO2007005237A3 (en) 2008-08-28
US20070005625A1 (en) 2007-01-04
JP2009500723A (ja) 2009-01-08
EP1899799A2 (en) 2008-03-19
EP1899799A4 (en) 2009-04-29
WO2007005237A2 (en) 2007-01-11

Similar Documents

Publication Publication Date Title
KR20080017292A (ko) 내장 시스템들을 위한 저장 아키텍쳐
JP5255348B2 (ja) クラッシュダンプ用のメモリアロケーション
US6857047B2 (en) Memory compression for computer systems
US9256532B2 (en) Method and computer system for memory management on virtual machine
US6549995B1 (en) Compressor system memory organization and method for low latency access to uncompressed memory regions
JP4815346B2 (ja) コンピュータ装置のデータにアクセスする方法
US9003104B2 (en) Systems and methods for a file-level cache
US7962684B2 (en) Overlay management in a flash memory storage device
KR102434170B1 (ko) 하이브리드 메모리 시스템
KR102443600B1 (ko) 하이브리드 메모리 시스템
JP4599172B2 (ja) フリーバッファプールを使用することによるメモリの管理
JP5422652B2 (ja) フラッシュメモリ記憶装置における動的メモリ割当てに起因する自己エビクションの回避
JPWO2006107095A1 (ja) 計算機システム,メモリ管理方法,およびそのプログラム
EP1190438B1 (en) Operating system page placement to maximize cache data reuse
US8930732B2 (en) Fast speed computer system power-on and power-off method
US20200242041A1 (en) Information processing device, access controller, information processing method, and computer program
EP3278229B1 (en) Compressed pages having data and compression metadata
US20030188121A1 (en) Efficiency in a memory management system
KR101392062B1 (ko) 고속 컴퓨터 시스템 파워 온 및 파워 오프 방법
KR102443593B1 (ko) 하이브리드 메모리 시스템
CN102792296B (zh) 移动终端中请求页面调度方法、控制器以及移动终端
KR20090053487A (ko) 실시간 응답성이 요구되는 코드를 위한 요구 페이징 방법및 단말
JP6243884B2 (ja) 情報処理装置、プロセッサ、および情報処理方法
JP6254986B2 (ja) 情報処理装置、アクセスコントローラ、および情報処理方法
JP6689471B2 (ja) 情報処理装置、情報処理方法及び情報処理プログラム

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid