KR100987332B1 - 메모리 구조에 따른 메모리 관리 장치 - Google Patents

메모리 구조에 따른 메모리 관리 장치 Download PDF

Info

Publication number
KR100987332B1
KR100987332B1 KR1020080110508A KR20080110508A KR100987332B1 KR 100987332 B1 KR100987332 B1 KR 100987332B1 KR 1020080110508 A KR1020080110508 A KR 1020080110508A KR 20080110508 A KR20080110508 A KR 20080110508A KR 100987332 B1 KR100987332 B1 KR 100987332B1
Authority
KR
South Korea
Prior art keywords
memory
page
information
executable code
space
Prior art date
Application number
KR1020080110508A
Other languages
English (en)
Other versions
KR20100051369A (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 KR1020080110508A priority Critical patent/KR100987332B1/ko
Publication of KR20100051369A publication Critical patent/KR20100051369A/ko
Application granted granted Critical
Publication of KR100987332B1 publication Critical patent/KR100987332B1/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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

메모리 관리 장치는 비휘발성(Nonvolatile)이고 복수의 페이지들로 구성된 실행가능한 코드를 저장하는 제1 메모리, 휘발성(volatile)이고 제1 및 제2 메모리 공간들을 포함하며, 상기 제1 및 제2 메모리 공간들은 메모리 관리 정책에 따라 구분되며 상기 복수의 페이지들의 배타적인 부분 집합을 각각 저장하는 제2 메모리 및 상기 제1 및 제2 메모리 공간들을 동적으로 제어하는 메모리 제어부를 포함한다. 따라서 메모리 관리 장치는 비휘발성 램에 저장된 실행 가능한 코드를 효율적으로 실행할 수 있다.

Description

메모리 구조에 따른 메모리 관리 장치{MEMORY MANAGEMENT DEVICE ACCORDING TO MEMORY HIERARCHY}
본 출원은 메모리 구조에 따른 메모리 관리 장치에 관한 것이다.
플래시 메모리(예를 들어, NAND 타입 플래시 메모리)는 데이터의 비휘발성(Non-volatility)으로 인하여 셀룰러 폰, 휴대용 미디어 플레이어와 PDA(Personal Digital Assitant)와 같은 모바일 시스템에 널리 사용되고 있다.
그러나 일반적으로 플래시 메모리는 읽기 연산 및/또는 쓰기 연산의 동작 속도로 인하여 프로그램 코드(즉, 실행 가능한 코드)를 저장하고 실행하기 위하여 사용되지 않는다. 특히, NAND 타입 플래시 메모리는 읽기 연산이 바이트 레벨의 임의 접근이 아닌 페이지 기반으로 수행되므로 실행 가능한 코드에는 적합하지 않을 수 있다.
실시예들 중에서, 메모리 관리 장치는 비휘발성(Nonvolatile)이고 복수의 페이지들로 구성된 실행가능한 코드를 저장하는 제1 메모리, 휘발성(volatile)이고 제1 및 제2 메모리 공간들을 포함하며, 상기 제1 및 제2 메모리 공간들은 메모리 관리 정책에 따라 구분되고 상기 복수의 페이지들의 배타적인 부분 집합을 각각 저장하는 제2 메모리 및 상기 제1 및 제2 메모리 공간들을 동적으로 제어하는 메모리 제어부를 포함한다.
일 실시예에서, 상기 메모리 제어부는 메모리 고정(Memory Pinning) 정책에 따라 상기 제1 메모리 공간을 관리할 수 있다. 상기 메모리 제어부는 LRU(Least Recently Used) 정책, LFU(Least Frequently Used) 정책 또는 FIFO(First-In First-Out) 정책에 따라 상기 제2 메모리 공간을 관리할 수 있다.
상기 메모리 제어부는 소정의 조건이 만족되도록 상기 제1 및 제2 메모리 공간들의 전체 크기와 상대적 크기를 결정할 수 있다. 예를 들어, 상기 소정의 조건은 허용가능한 페이지 폴트 수(tolerable page fault count)를 기초로 결정될 수 있다.
실시예들 중에서, 메모리 관리 장치는 제1 메모리, 상기 제1 메모리보다 빠르게 동작하며, 메모리 관리 정책에 따라 구분되는 제1 및 제2 메모리 공간들을 포함하는 제2 메모리 및 상기 제1 및 제2 메모리 공간들을 동적으로 제어하는 메모리 제어부를 포함한다.
상기 메모리 제어부는 소정의 조건하에서 상기 제1 및 제2 메모리 공간들의 전체 크기가 가장 작도록 상기 제1 및 제2 메모리 공간들의 상대적 크기를 결정할 수 있다. 예를 들어, 상기 소정의 조건은 허용가능한 페이지 폴트 수(tolerable page fault count)를 기초로 결정될 수 있다.
상기 제2 메모리는 실행 가능한 코드를 저장하기 위한 제1 영역 및 상기 실 행 가능한 코드의 페이지 매핑 정보를 저장하기 위한 제2 영역을 포함할 수 있다. 상기 메모리 제어부는 상기 페이지 매핑 정보를 기초로 상기 제1 및 제2 메모리 공간들의 전체 크기와 상대적 크기를 결정할 수 있다.
일 실시예에서, 상기 페이지 매핑 정보는 상기 실행 가능한 코드가 미리 실행되거나 상기 실행 가능한 코드가 컴파일될 때 결정될 수 있다. 상기 페이지 매핑 정보는 상기 제1 메모리 공간의 크기, 상기 제1 메모리 공간에 배치될 상기 실행가능한 코드를 구성하는 적어도 하나의 페이지 및 상기 제2 메모리 공간의 크기를 결정하기 위한 정보를 포함할 수 있다.
상기 메모리 제어부는 실행 인스턴스(실행 인스턴스는 실행 가능한 코드에 포함됨) 별로 상기 제1 및 제2 메모리 공간들의 전체 크기와 상대적 크기를 결정할 수 있다.
실시예들 중에서, 메모리 관리 장치는 제1 메모리, 상기 제1 메모리보다 빠르게 동작하며, 메모리 관리 정책에 따라 구분되는 제1 및 제2 메모리 공간들을 포함하는 제2 메모리 및 상기 제2 메모리 공간의 접근 시간 비용과 상기 제2 메모리 공간의 공간 비용을 고려하여 상기 제1 및 제2 메모리 공간들을 제어하는 메모리 제어부를 포함한다.
상기 메모리 제어부는 상기 접근 시간 비용을 고려하여 상기 제1 및 제2 메모리 공간들의 전체 크기가 가장 작도록 상기 제1 및 제2 메모리 공간들의 상대적 크기를 결정할 수 있다. 예를 들어, 상기 제1 메모리는 플래시 메모리에 상응할 수 있다.
실시예들 중에서, 컴퓨팅 시스템은 복수의 페이지들로 구성된 실행가능한 코드를 실행하는 프로세서, 상기 실행가능한 코드를 저장하는 제1 메모리, 상기 제1 메모리보다 빠르게 동작하고, 메모리 관리 정책에 따라 구분되며 상기 복수의 페이지들의 배타적인 부분 집합을 각각 저장하는 제1 및 제2 메모리 공간들을 포함하는 제2 메모리 및 상기 제1 및 제2 메모리 공간들을 동적으로 제어하는 메모리 제어부를 포함한다.
실시예들 중에서, 실행가능한 코드(복수의 페이지들을 포함함)를 실행하는 프로세서, 제1 및 제2 메모리들(상기 제1 메모리는 상기 실행가능한 코드를 저장하고, 상기 제2 메모리는 메모리 관리 정책에 따라 구분되는 제1 및 제2 메모리 공간들을 포함함)과 메모리 제어부(상기 제1 및 제2 메모리 공간들을 동적으로 제어함)를 포함하는 컴퓨팅 시스템에서, 상기 컴퓨팅 시스템에 의한 상기 제1 및 제2 메모리들을 효율적으로 관리하는 방법은 상기 프로세서는 필요한 페이지를 상기 메모리 제어부에게 요청하는 단계, 상기 메모리 제어부는 상기 제1 메모리에서 상기 필요한 페이지를 검색하는 단계; 및 만일 상기 필요한 페이지가 상기 제1 메모리에서 검색되는 경우에는 (a1) 상기 메모리 제어부는 상기 제1 메모리로부터 상기 필요한 페이지를 읽는 단계; 및 (a2) 상기 메모리 제어부는 상기 프로세서에 상기 읽은 페이지를 전송하는 단계를 포함한다.
상기 방법은 만일 상기 필요한 페이지가 상기 제1 메모리에서 검색되지 않은 경우에는 (b1) 상기 메모리 제어부는 상기 제2 메모리로부터 상기 필요한 페이지를 읽는 단계; 및 (b2) 상기 메모리 제어부는 상기 프로세서에 상기 읽은 페이지를 전 송하는 단계를 더 포함할 수 있다. 상기 방법은 (b3) 상기 메모리 제어부는 (b2) 단계 전 또는 후에 상기 읽은 페이지를 상기 메모리 관리 정책에 따라 상기 제1 메모리에 저장하는 단계를 더 포함할 수 있다.
개시된 기술에 관한 설명은 구조적 내지 기능적 설명을 위한 실시예에 불과하므로, 개시된 기술의 권리범위는 본문에 설명된 실시예에 의하여 제한되는 것으로 해석되어서는 아니 된다. 즉, 실시예는 다양한 변경이 가능하고 여러 가지 형태를 가질 수 있으므로 개시된 기술의 권리범위는 기술적 사상을 실현할 수 있는 균등물들을 포함하는 것으로 이해되어야 한다.
한편, 본 출원에서 서술되는 용어의 의미는 다음과 같이 이해되어야 할 것이다.
“제1”, “제2” 등의 용어는 하나의 구성요소를 다른 구성요소로부터 구별하기 위한 것으로 이들 용어들에 의해 권리범위가 한정되어서는 아니 된다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
“및/또는”의 용어는 하나 이상의 관련 항목으로부터 제시 가능한 모든 조합을 포함하는 것으로 이해되어야 한다. 예를 들어, “제1 항목, 제2 항목 및/또는 제3 항목”의 의미는 제1, 제2 또는 제3 항목뿐만 아니라 제1, 제2 또는 제3 항목들 중 2개 이상으로부터 제시될 수 있는 모든 항목의 조합을 의미한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다 른 구성요소에 직접적으로 연결될 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 한편, 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함하는 것으로 이해되어야 하고, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
각 단계들은 문맥상 명백하게 특정 순서를 기재하지 않은 이상 명기된 순서와 다르게 일어날 수 있다. 즉, 각 단계들은 명기된 순서와 동일하게 일어날 수도 있고 실질적으로 동시에 수행될 수도 있으며 반대의 순서대로 수행될 수도 있다.
여기서 사용되는 모든 용어들은 다르게 정의되지 않는 한, 개시된 기술이 속하는 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한 이상적이거나 과도하게 형식적인 의미를 지니는 것으로 해석될 수 없다.
도 1은 일 실시예에 따른 컴퓨팅 시스템을 설명하기 위한 블록도이다.
도 1을 참조하면, 컴퓨팅 시스템(100)은 프로세서(110), 메모리 제어부(120), 휘발성 램(RAM, RANDOM ACCESS MEMORY)(130) 및 비휘발성 플래시 메모리(140)를 포함한다.
프로세서(110)는 메모리 제어부(120)를 통하여 실행 가능한 코드와 데이터를 읽고, 메모리 제어부(120)를 통하여 데이터를 쓴다. 일 실시예에서, 데이터는 실행 가능한 코드에 있는 데이터뿐만 아니라 동영상 파일, 정지 영상 파일 및/또는 음악 파일을 포함할 수 있다.
메모리 제어부(120)는 프로세서(110)에 의한 메모리 관련 명령을 처리한다. 즉, 메모리 제어부(120)는 프로세서(110)에 의하여 요구된 램(130) 또는 플래시 메모리(140)에 있는 특정 페이지에 대한 읽기 명령 또는 쓰기 명령을 처리할 수 있다.
일 실시예에서, 만일 프로세서(110)가 플래시 메모리(140)에 있는 특정 페이지를 요구하는 경우에는 메모리 제어부(120)는 특정 페이지를 램(130)에서 검색할 수 있다. 만일 특정 페이지가 램(130)에서 검색되는 경우에는 메모리 제어부(120)는 램(130)에서 특정 페이지를 가져올 수 있고, 그렇지 않은 경우에는 메모리 제어부(120)는 플래시 메모리(140)로부터 특정 페이지를 가져올 수 있고, 특정 페이지는 램(130)에 복사될 수 있다.
또한, 메모리 제어부(120)는 플래시 메모리(140)에 있는 실행 가능한 코드를 효율적으로 실행시키기 위하여 메모리 관리 정책에 따라 램(130)을 제1 및 제2 메 모리 공간들로 구분하고, 제1 및 제2 메모리 공간들을 동적으로 제어한다. 제1 및 제2 메모리 공간들은 실행 가능한 코드를 구성하는 복수의 페이지들의 배타적인 부분 집합을 각각 저장한다. 예를 들어, 복수의 페이지들이 집합 {P1, P2, P3, P4}에 상응하는 경우에 제1 메모리 공간은 부분집합 {P1, P3}를 포함할 수 있고, 제2 메모리 공간은 부분집합 {P2, P4}를 포함할 수 있다.
플래시 메모리(140)는 실행 가능한 코드와 데이터를 저장하고, 실행 가능한 코드는 복수의 페이지들로 구성된다. 일반적으로 램(130)은 플래시 메모리(140)보다 빠르게 동작한다. 즉, 램(130)은 플래시 메모리(140)보다 빠른 읽기 및/또는 쓰기 속도를 가진다.
도 2는 도 1의 플래시 메모리를 설명하기 위한 도면이다.
도 2를 참조하면, 플래시 메모리(140)는 저장부(210)과 레지스터부(220)를 포함하고, 저장부(210)는 메인 영역(212)과 스패어 영역(214)으로 구분되며, 레지스터부(320)는 메인 레지스터(322)와 스패어 레지스터(324)로 구분된다.
일반적으로 저장부(310)는 복수의 블록들을 포함하고, 각 블록은 복수의 페이지들을 포함하며, 각 페이지는 메인 영역(312)과 스패어 영역(314)으로 구분된다. 각 페이지는 레지스터부(320)를 통하여 읽혀지거나 쓰여진다. 일 실시예에서, 각 블록은 64 페이지들에 상응할 수 있고, 각 페이지는 2 KByte 메인 영역과 64 Byte 스패어 영역으로 구성될 수 있다.
메인 영역(312)은 실행 가능한 코드 및/또는 데이터를 포함하는 일반적인 정보를 저장할 수 있고, 스패어 영역(314)은 에러 정정 코드(ECC, Error Correction Code)와 페이지 매핑 정보(page mapping information)를 포함하는 보조 정보를 저장할 수 있다. 에러 정정 코드는 메인 영역(312)에 있는 정보의 오류를 줄이기 위하여 사용되고, 페이지 매핑 정보는 메모리 제어부(120)가 제1 및 제2 메모리 공간들을 동적으로 제어하기 위하여 사용된다. 페이지 매핑 정보에 관한 설명은 후술한다.
도 3은 도 1의 컴퓨팅 시스템의 동작 방법을 설명하기 위한 도면이다. 도 3에서 플래시 메모리는 NAND 타입 플래시 메모리에 상응하고 램은 SRAM(Static RAM)에 상응한다고 가정하였다.
도 3을 참조하면, NAND 타입 플래시 메모리(140)는 실행 가능한 코드(142), 제1 멀티미디어 파일(144) 및 제2 멀티미디어 파일(146)을 저장하고, SRAM(130)은 코드 영역(132)과 데이터 영역(134)을 포함한다.
코드 영역(132)은 실행 가능한 코드(142)에 있는 코드(CODE)를 위하여 사용되고, 데이터 영역(134)은 실행 가능한 코드(142)에 있는 데이터(DATA), 제1 멀티미디어 파일(144) 및 제2 멀티미디어 파일(146)을 위하여 사용된다.
프로세서(110)는 메모리 제어부(120)를 통하여 SRAM(130)으로부터 코드(CODE)와 데이터(DATA)를 읽는다. 또한, 프로세서(110)는 메모리 제어부(120)를 통하여 데이터(DATA)를 SRAM(130)에 쓴다. 여기에서, 데이터(DATA)는 실행 가능한 코드에 있는 데이터(DATA)에 상응하는 것으로 가정하였으나, 필요에 따라 멀티미디어 파일에 상응하는 데이터도 포함할 수 있다.
만일 프로세서(110)에 의하여 요청된 코드(CODE)와 데이터(DATA)가 SRAM(130)에 포함되지 않은 경우에는 페이지 폴트(page fault)가 발생한다. 페이지 폴트가 발생하는 경우에는 메모리 제어부(120)는 해당 페이지를 SRAM(130)에 복사한 후 프로세서(110)에 전송하거나 또는 해당 페이지를 프로세서(110)에 전송한 후 SRAM(130)에 복사한다.
도 4는 도 3의 실행 가능한 코드를 설명하기 위한 도면이다.
도 4에서 실행 가능한 코드(410)의 포멧은 ELF(Executable and Linking Format)에 상응한다고 가정하였다.
도 4를 참조하면, 실행 가능한 코드(142)는 ELF 헤더(142a), 코드(.TEXT)(142b), 초기화된 데이터(.DATA)(142c) 및 초기화되지 않은 데이터(.BSS)(142d)를 포함할 수 있다.
코드 영역(132)은 코드(.TEXT)(142b)를 위하여 사용된다. 코드 영역(132)의 크기는 코드(.TEXT)(142b)의 크기보다 작을 수 있으므로 메모리 제어부(120)는 메모리 관리 정책에 따라 코드 영역(132)을 동적으로 제어한다. 즉, 메모리 제어부(120)는 코드 영역(132)을 제1 및 제2 메모리 공간들로 구분하고, 소정의 조건이 만족되도록 제1 및 제2 메모리 공간들의 전체 크기와 상대적 크기를 결정할 수 있다. 일 실시예에서, 소정의 조건은 허용가능한 페이지 폴트 수(tolerable page fault count)를 기초로 결정될 수 있다.
일 실시예에서, 메모리 제어부(120)는 소정의 조건하에서 제1 및 제2 메모리 공간들의 전체 크기가 가장 작도록 제1 및 제2 메모리 공간들의 상대적 크기를 결정할 수 있다.
메모리 제어부(120)는 메모리 고정(Memory Pinning) 정책에 따라 제1 메모리 공간을 관리할 수 있고, LRU(Least Recently Used) 정책, LFU(Least Frequently Used) 정책 또는 FIFO(First-In First-Out) 정책에 따라 제2 메모리 공간을 관리할 수 있다.
데이터 영역(134)은 초기화된 데이터(.DATA)(142c) 및 초기화되지 않은 데이터(.BSS)(142d)를 위하여 사용된다.
도 5A 내지 도 5C는 메모리 제어부가 램을 제어하는 과정을 설명하기 위한 도면들이고, 도 6은 허용가능한 페이지 폴트 수 내에서 메모리 관리 정책에 따라 필요한 램의 공간을 설명하기 위한 그래프이다.
도 5A 내지 도 5C에서, 코드 영역(132)은 NAND 타입 플래시 메모리(140)의 4 개의 페이지들에 상응하는 공간을 가지고 코드(.TEXT)(142b)는 NAND 타입 플래시 메모리(140)의 8 개의 페이지들에 상응하는 공간을 가진다고 가정하였다.
도 5A는 메모리 제어부(120)가 LRU 정책, LFU 정책 또는 FIFO 정책에 따라 코드 영역(132)을 제어한다고 가정하였다. 도 5A의 메모리 관리 정책은 L 값을 고려하지 않는다면 도 6의 포인트 (A)에 상응할 수 있다.
도 5B는 메모리 제어부(120)가 1 개의 페이지를 LRU 정책, LFU 정책 또는 FIFO 정책에 따라 제어하고 나머지 페이지들은 고정 정책에 따라 제어한다고 가정하였다. 도 5B의 메모리 관리 정책은 L 값을 고려하지 않는다면 도 6의 포인트 (B)에 상응할 수 있다. 어떤 경우에는, 도 5B의 메모리 관리 정책이 도 5A의 메모리 관리 정책보다 많은 메모리 공간을 요구할 수 있다. 이는 허용가능한 페이지 폴트 수를 만족시키기 위하여 보다 많은 고정 메모리가 필요하기 때문일 수 있다.
도 5C는 메모리 제어부(120)가 2 개의 페이지를 LRU 정책, LFU 정책 또는 FIFO 정책에 따라 제어하고 나머지 페이지들은 고정 정책에 따라 제어한다고 가정하였다 도 5C의 메모리 관리 정책은 L 값을 고려하지 않는다면 도 6의 포인트 (C)에 상응할 수 있다. 도 5C의 메모리 관리 정책은 도 5A와 도 5B의 메모리 관리 정책보다 적은 메모리 공간을 요구한다. 메모리 제어부(120)는 제2 메모리 공간의 접근 시간 비용과 제2 메모리 공간의 공간 비용을 고려하여 제1 및 제2 메모리 공간들을 제어한다.
일 실시예에서, 도 5C와 같이, 메모리 제어부(120)는 소정의 조건하에서 제1 및 제2 메모리 공간들의 전체 크기가 가장 작도록 제1 및 제2 메모리 공간들의 상대적 크기를 결정할 수 있다. 예를 들어, 소정의 조건은 허용가능한 페이지 폴트 수(tolerable page fault count)를 기초로 결정되거나 또는 제2 메모리 공간의 접근 시간 비용을 기초로 결정될 수 있다.
도 2를 다시 참조하면, 플래시 메모리(140)는 페이지 매핑 정보를 포함하고, 페이지 매핑 정보는 실행 가능한 코드가 미리 실행되거나 실행 가능한 코드가 컴파일될 때 결정될 수 있다. 페이지 매핑 정보는 제1 메모리 공간의 크기, 제1 메모리 공간에 배치될 적어도 하나의 페이지 및 제2 메모리 공간의 크기를 결정하기 위한 정보를 포함할 수 있다.
일 실시예에서, 페이지 매핑 정보는 제1 메모리 공간의 크기에 관한 정보, 제1 메모리 공간에 배치될 적어도 하나의 페이지에 관한 정보 및 제2 메모리 공간 의 크기를 결정하기 위한 정보를 각각 포함할 수 있다. 다른 일 실시예에서, 페이지 매핑 정보는 제1 메모리 공간에 페이지의 삽입, 삭제 및 대체에 관한 정보와 제2 메모리 공간의 크기를 결정하기 위한 정보를 포함할 수 있다.
도 7은 도 1의 컴퓨팅 시스템에서 실행 가능한 코드가 실행되는 과정을 설명하기 위한 도면이다.
도 7에서, 실행 가능한 코드에 상응하는 하나의 태스크(task)(τ)는 적어도 하나의 작업 주기(period)를 포함하고, 각 작업 주기는 적어도 하나의 실행 인스턴스(Ji)를 포함한다. 작업 주기는 규칙적이거나 또는 비규칙적일 수 있다. 태스크(τ)는 다음과 같이 표현될 수 있다.
τ = (J1, J2, ..., JN)
예를 들어, 만일 태스크(τ)가 동영상을 플레이하기 위한 미디어 플레이어에 상응하는 경우라면 작업 주기 중 실행 인스턴스(Ji)는 주기적으로 프레임을 플레이하는 실행 시간을 나타낼 수 있고, 작업 주기 중 수면 시간(sleep time)(sti)은 내재적으로 실행 인스턴스(Ji)의 데드라인(Di)을 추론하는 것을 도울 수 있다. 즉, 수면 시간(sti)은 허용가능한 페이지 폴트 수를 내재적으로 추론하는 것을 도울 수 있다.
메모리 제어부(120)는 실행 인스턴스(Ji) 별로 코드 영역(132)의 제1 및 제2 메모리 공간들을 동적으로 제어할 수 있다. 일 실시예에서, 메모리 제어부(120)는 실행 인스턴스(Ji) 별로 제1 및 제2 메모리 공간들의 전체 크기와 상대적 크기를 결정할 수 있다.
도 8은 도 1의 컴퓨팅 시스템이 제1 및 제2 메모리 공간들의 조합을 결정하는 과정을 설명하기 위한 흐름도이다.
도 8에서, 컴퓨팅 시스템(110)이 제1 및 제2 메모리 공간들의 조합을 결정하는 과정은 학습 과정(learning phase)과 생산 과정(production phase)으로 분류된다. 학습 과정은 실행 가능한 코드를 미리 실행하여 타이밍 관련 정보를 자동으로 추출하고 페이지 참조 순서를 추적한다. 생산 과정은 제1 및 제2 메모리 공간들의 조합을 결정한다.
컴퓨팅 시스템(100)은 실행 가능한 코드의 시간적 계획(temporal intention)을 추출하여 적어도 하나의 실행 인스턴스를 결정한다(블록 B810). 시간적 계획은 작업 주기를 구성하는 실행 인스턴스(Ji)와 수면 시간(sti)을 나타내고, 만일 작업 주기가 명확하게 나타나지 않는다면 시간적 계획은 각 실행 인스턴스의 데드라인(Di)을 나타낼 수 있다.
일 실시예에서, 시간적 계획을 추출하기 위하여 컴퓨팅 시스템(100)은 실행 가능한 코드 전체를 램(130)에 미리 적재할 수 있다. 실행 가능한 코드가 실행되는 동안에 컴퓨팅 시스템(100)은 얼마나 오랫동안 실행 가능한 코드가 자발적으로 수 면하는지 알기 위하여 수면 시스템 호출(sleep system call)을 파악할 수 있다. 즉, 컴퓨팅 시스템(100)은 실행 가능한 코드의 시간적 계획을 파악할 수 있다.
컴퓨팅 시스템(100)은 각 실행 인스턴스(Ji)의 페이지 참조 순서를 추적한다(블록 B820). 결과적으로, 컴퓨팅 시스템(100)은 각 실행 인스턴스(Ji)에 관하여 다음의 결과를 얻을 수 있다.
Ji: {sti, Φi = (Pi1, Pi2, ..., PiMi)}, Φi 는 실행 인스턴스(Ji)에서 페이지 참조 순서를 나타냄.
일 실시예에서, 페이지 참조 순서를 추적하기 위하여 컴퓨팅 시스템(100)은 실행 가능한 코드를 한번 더 실행할 수 있고, 필요에 따라 컴퓨팅 시스템(100)은 모든 페이지(PiMi)에서 페이지 폴트가 발생하도록 램(130)을 설정할 수 있다. 예를 들어, 램(130)이 하나의 유효한 페이지를 가지고 컴퓨팅 시스템(100)이 새로운 페이지를 램(130)에 적재하기 전에 이전의 페이지에 대하여 무효화시킨다면 모든 페이지(PiMi)에서 페이지 폴트가 발생할 수 있다.
컴퓨팅 시스템(100)은 소정의 기준하에서 제1 및 제2 메모리 공간들의 조합을 동적으로 결정할 수 있다(블록 B830). 즉, 컴퓨팅 시스템(100)은 허용가능한 페이지 폴트 수를 기초로 실행 인스턴스(Ji) 별로 제1 및 제2 메모리 공간들의 전체 크기와 상대적 크기를 결정할 수 있다.
일 실시예에서, 컴퓨팅 시스템(100)은 도 5C와 같이 제1 및 제2 메모리 공간들의 최적 조합을 결정할 수 있다. 즉, 컴퓨팅 시스템(100)은 제1 및 제2 메모리 공간들의 전체 크기가 가장 작도록 제1 및 제2 메모리 공간들의 상대적 크기를 결정할 수 있다.
도 9는 컴퓨팅 시스템이 제1 및 제2 메모리 공간들의 최적 조합을 결정하는 과정을 설명하기 위한 도면이고, 도 10은 도 9의 과정을 설명하기 위한 흐름도이다.
도 9와 도 10에서, 입력(IN)은 실행 인스턴스(Ji)의 수면 시간(sti), 페이지 참조 순서(Φi ) 및 허용가능한 페이지 폴트 수(FBOUND_i)를 포함한다.
출력(OUT)은 고정 정책을 위하여 필요한 페이지 수(LPINNING_i), 고정되는 페이지 집합(C(LPINNING_i)={P1, P2, ..., Pi}), LRU 정책을 위하여 필요한 페이지 수(LLRU_i), 전체 페이지 수(LTOTAL_i)를 포함한다.
도 9와 도 10의 최적 조합을 얻는 알고리즘은 크게 (1) 고정 정책을 위하여 필요한 페이지 수(LPINNING_i)와 고정되는 페이지 집합(C(LPINNING_i))을 얻는 과정, (2) LRU 정책을 위하여 필요한 페이지 수(LLRU_i)를 얻는 과정, (3) 전체 페이지 수(LTOTAL_i)를 얻는 과정으로 구성된다.
도 9의 라인 2부터 라인 14까지의 외부 do-until 루프는 고정된 페이지의 수(k)를 증가시켜 전체 페이지 수(LTOTAL_i)를 최소로 만드는 최적의 k를 찾는다(블록 B1010~B1100). 주어진 k에 대하여, 라인 4부터 라인 11까지의 내부 for 루프는 k 개의 고정된 페이지(들)의 가능한 모든 집합을 검색한다(블록 B1030~B1070). 각 집합을 C(k)라 한다. 내부 for 루프의 각 반복(iteration)에서 C(k)를 고려하면, 라인 5는 우선 페이지 참조 순서(Φi)로부터 C(k)에 있는 모든 페이지를 제거한다(블록 B1040). 제거된 페이지들은 어떤 페이지 폴트도 발생시키지 않고 고정되었기 때문이다. 남은 페이지 참조 순서를 Φ'i라 한다.
라인 6은 동일한 페이지를 연속적으로 참조하는 페이지(들)은 하나의 참조 순서(Φ''i)로 합병한다(블록 B1040). 상기에서 설명한, 주어진 k에 대하여 LRU 정책을 위한 메모리 크기(L)과 페이지 폴트 수(Φ''i)를 카운트하는 방법을 이용하여 라인 7은 페이지 폴트 수(FLRU_i(L, Φ''i))가 허용가능한 페이지 폴트 수(FBOUND_i) 이하인 것을 만족시키는 최소 L을 찾는다.
라인 8 내지 10에서, 만일 발견되 L이 지금까지 발견된 최적의 수보다 작다면, 라인 8 내지 10은 LRU 정책을 위한 페이지의 최적의 수(optLLRU(k))와 고정 정책을 위한 페이지의 최적 집합(optCPINNING(k))을 갱신한다(블록 B1050~B1060). 이런식으로, for 루프의 끝에 도달하면, 주어진 k에 대하여 LRU 정책을 위한 페이지의 최적의 수(optLLRU(k))와 고정 정책을 위한 페이지의 최적 집합(optCPINNING(k))가 발 견된다.
라인 12에서, 주어진 k에 대한 전체 페이지 수(optLTOTAL(k))는 k와 LRU 정책을 위한 페이지의 최적의 수(optLLRU(k))를 합하여 결정된다(블록 B1110). 위의 과정은 k가 1이 될 때까지 반복되고, 결과적으로 도 9의 출력이 얻어질 수 있다. 도 9의 알고리즘은 최적의 조합을 구할 수 있으나, 많은 연산 시간(특히, for 루프)을 요구할 수 있다.
만일 도 9의 for 루프가 주어진 k에 대하여 가장 자주 발생하는 페이지를 우선으로 하는 방법(mostly occurring page first heuristic)을 기초로 결정되는 단 하나의 조합을 채택한다면, for 루프의 연산 시간이 감소될 수 있다. 일 실시예에서, 알고리즘은 페이지 참조 순서(Φi)에 있는 다른 페이지들을 발생 수의 내림차순으로 정렬할 수 있다. 결과적으로, 라인 4 내지 11의 for 루프는 k 개의 가장 자주 발생하는 페이지의 집합인 C(k)에 대하여 한 번만 반복한다.
상기의 실시예는 하나의 태스크를 기초로 동작하는 컴퓨팅 시스템을 설명하였으나, 당업자는 복수의 태스크들에 대하여 멀티 태스킹을 수행하는 컴퓨팅 시스템 역시 쉽게 구현할 수 있다.
도 11 및 도 12는 컴퓨팅 시스템이 확률적으로 데드라인을 보장하면서 제1 및 제2 메모리 공간들의 최적 조합을 결정하는 과정을 설명하기 위한 도면이다.
상기에서, 연산 시간을 줄이기 위하여 가장 자주 발생하는 페이지를 우선으로 하는 방법(mostly occurring page first heuristic)이 설명되었다. 도 11 및 도 12의 경우, 다른 방법으로, 확률적으로 근접한 분석(probabilistically approximated analysis) 기법이 제시된다. 확률적으로 근접한 분석 기법은 모든 실행 인스턴스의 데드라인을 확률적으로 보장하기 위하여 적어도 하나의 샘플된 실행 인스턴스(Ji)의 메모리 크기로 모집단을 추정하는 기법을 의미한다. 일 실시예에서, 확률적으로 근접한 분석 기법은 LRU 정책을 위하여 요구되는 메모리 페이지들을 결정할 수 있다.
도 12는 도 11에서 k 개의 페이지가 고정된 A 부분을 설명하기 위한 도면이다
각 샘플된 실행 인스턴스(Ji)(i=1, 2, ..., N)에 대하여 가장 자주 발생하는 페이지를 우선으로 하는 방법을 기초로 k 개의 고정된 페이지가 결정된다면, 상기에서 설명한 바와 같이 메모리 관리 정책(예를 들어, LRU 정책)을 위하여 요구되는 메모리 페이지의 수(즉, LLRU_i)가 결정될 수 있다. 따라서 N 개의 샘플 데이터 LLRU_1, LLRU_2, ..., LLRU_N가 결정될 수 있다. 예를 들어, N=3이라면 k에 대하여 세 개의 샘플 데이터 LLRU_1, LLRU_2, LLRU_3가 결정될 수 있다.
확률적으로 근접한 분석 기법을 위하여 LRU 정책을 위하여 요구되는 메모리 페이지의 수(LLRU_i)가 확률 변수 X(Random Variable X)라면, N 개의 샘플 데이터 LLRU_1, LLRU_2, ..., LLRU_N는 확률 변수 X에 대한 N 개의 샘플 데이터로 고려될 수 있다. 만일 N이 충분히 크다면, 확률 변수 X의 확률 분포(probability distribution) 가 특정 확률 분포로 추정될 수 있다. 일 실시예에서, 특정 확률 분포는 평균
Figure 112008077309716-pat00001
와 표준 편차 σ를 가지는 정규 분포에 상응할 수 있다.
LRU 정책을 위하여 요구되는 메모리 페이지의 확률적 추정치(Xth)는 정규 분포를 기초로 결정되고, LRU 정책을 위하여 요구되는 메모리 페이지의 확률적 추정치(Xth)는 다음의 수학식을 만족시키고, 도 11에서 점선(B)으로 표시된다.
Figure 112008077309716-pat00002
(Probth는 주어진 임계치)
즉, 도 11의 점선(B)는 데드라인을 만족시키기 위한, LRU 정책을 위하여 요구되는 메모리 페이지의 수(LLRU_i)는 Probth 보다 큰 확률을 만족시킴을 나타낸다. 결과적으로 제1 및 제2 메모리 관리 정책들(예를들어, 메모리 고정 정책과 LRU 정책)을 위한 최적의 조합이 결정될 수 있다.
개시된 기술은 다음의 효과를 가질 수 있다. 다만, 특정 실시예가 다음의 효과를 전부 포함하여야 한다거나 다음의 효과만을 포함하여야 한다는 의미는 아니므로, 개시된 기술의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.
일 실시예에 따른 메모리 관리 장치는 메모리 구조(memory hierarchy)를 효율적으로 관리할 수 있다. 일 실시예에서, 메모리 관리 장치는 비휘발성 램에 저장된 실행 가능한 코드를 효율적으로 실행할 수 있다. 즉, 메모리 관리 장치는 적절한 램(즉, 빠른 동작 속도를 가지는 메모리)의 공간을 효율적으로 이용하면서 플래시 메모리(즉, 느린 동작 속도를 가지는 메모리)에 저장된 실행가능한 코드를 소정 시간 내에 실행하는 것을 도울 수 있다.
일 실시예에 따른 메모리 관리 장치는 메모리 관리 정책에 따라 구분되는 메모리 공간들을 이용하여, 실행 가능한 코드의 실행을 위한 시간 및 공간 비용을 최적으로 균형을 맞출 수 있다. 예를 들어, 메모리 관리 장치는 메모리 공간들을 동적으로 제어할 수 있고, 필요에 따라, 소정의 시간 제한하에 메모리 공간들의 전체 크기가 가장 작도록 메모리 공간들의 상대적 크기를 결정할 수 있다.
일 실시예에 따른 메모리 관리 장치는 메모리 관리 정책에 따라 구분되는 메모리 공간들을 이용하여 메모리 공간들을 동적으로 제어할 수 있다. 예를 들어, 메모리 관리 장치는 메모리 공간들의 전체 크기와 상대적 크기를 결정할 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
도 1은 일 실시예에 따른 컴퓨팅 시스템을 설명하기 위한 블록도이다.
도 2는 도 1의 플래시 메모리를 설명하기 위한 도면이다.
도 3은 도 1의 컴퓨팅 시스템의 동작 방법을 설명하기 위한 도면이다.
도 4는 도 3의 실행 가능한 코드를 설명하기 위한 도면이다.
도 5A 내지 도 5C는 메모리 제어부가 램을 제어하는 과정을 설명하기 위한 도면들이고, 도 6은 허용가능한 페이지 폴트 수 내에서 메모리 관리 정책에 따라 필요한 램의 공간을 설명하기 위한 그래프이다.
도 7은 도 1의 컴퓨팅 시스템에서 실행 가능한 코드가 실행되는 과정을 설명하기 위한 도면이다.
도 8은 도 1의 컴퓨팅 시스템이 제1 및 제2 메모리 공간들의 조합을 결정하는 과정을 설명하기 위한 흐름도이다.
도 9는 컴퓨팅 시스템이 제1 및 제2 메모리 공간들의 최적 조합을 결정하는 과정을 설명하기 위한 도면이다.
도 10은 도 9의 과정을 설명하기 위한 흐름도이다.
도 11 및 도 12는 컴퓨팅 시스템이 확률적으로 데드라인을 보장하면서 제1 및 제2 메모리 공간들의 최적 조합을 결정하는 과정을 설명하기 위한 도면이다.

Claims (20)

  1. 비휘발성(Nonvolatile)이고 복수의 페이지들로 구성된 실행가능한 코드를 저장하는 제1 메모리;
    휘발성(volatile)이고 제1 및 제2 메모리 공간들을 포함하며, 상기 제1 및 제2 메모리 공간들은 메모리 관리 정책에 따라 구분되고 상기 복수의 페이지들의 배타적인 부분 집합을 각각 저장하는 제2 메모리;
    실행 인스턴스(실행 인스턴스는 실행 가능한 코드에 포함됨) 별로 상기 제1 및 제2 메모리 공간들의 크기를 결정하여 상기 제1 및 제2 메모리 공간들을 동적으로 제어하는 메모리 제어부; 및
    상기 실행가능한 코드를 실행하는 프로세서를 포함하고,
    상기 제2메모리는
    페이지 매핑 정보를 포함하며, 상기 페이지 매핑 정보는 상기 실행가능한 코드가 미리 실행되거나 상기 실행 가능한 코드가 컴파일될 때 결정되고, 상기 페이지 매핑 정보는 상기 제1 메모리 공간의 크기에 관한 정보, 상기 제1 메모리 공간에 배치될 적어도 하나의 페이지에 관한 정보 및 상기 제2 메모리 공간의 크기를 결정하기 위한 정보를 포함하거나 또는 상기 제1 메모리 공간에 페이지의 삽입, 삭제 및 대체에 관한 정보와 상기 제2 메모리 공간의 크기를 결정하기 위한 정보를 포함하는 메모리 관리 장치.
  2. 제1항에 있어서, 상기 메모리 제어부는
    메모리 고정(Memory Pinning) 정책에 따라 상기 제1 메모리 공간을 관리하는 것을 특징으로 하는 메모리 관리 장치.
  3. 제2항에 있어서, 상기 메모리 제어부는
    LRU(Least Recently Used) 정책, LFU(Least Frequently Used) 정책 또는 FIFO(First-In First-Out) 정책에 따라 상기 제2 메모리 공간을 관리하는 것을 특징으로 하는 메모리 관리 장치.
  4. 제1항에 있어서, 상기 메모리 제어부는
    상기 실행가능한 코드의 시간적 계획을 기초로 적어도 하나의 실행 인스턴스를 결정하고, 허용가능한 페이지 폴트 수를 기초로 상기 실행 인스턴스 별로 상기 제1 및 제2 메모리 공간들의 크기를 결정하는 것을 특징으로 하는 메모리 관리 장치.
  5. 삭제
  6. 제1 메모리;
    상기 제1 메모리보다 빠르게 동작하며, 메모리 관리 정책에 따라 구분되는 제1 및 제2 메모리 공간들을 포함하는 제2 메모리;
    실행 인스턴스(실행 인스턴스는 실행 가능한 코드에 포함됨) 별로 상기 제1 및 제2 메모리 공간들의 크기를 결정하여 상기 제1 및 제2 메모리 공간들을 동적으로 제어하는 메모리 제어부; 및
    상기 실행가능한 코드를 실행하는 프로세서를 포함하고,
    상기 제2메모리는
    페이지 매핑 정보를 포함하며, 상기 페이지 매핑 정보는 상기 실행가능한 코드가 미리 실행되거나 상기 실행 가능한 코드가 컴파일될 때 결정되고, 상기 페이지 매핑 정보는 상기 제1 메모리 공간의 크기에 관한 정보, 상기 제1 메모리 공간에 배치될 적어도 하나의 페이지에 관한 정보 및 상기 제2 메모리 공간의 크기를 결정하기 위한 정보를 포함하거나 또는 상기 제1 메모리 공간에 페이지의 삽입, 삭제 및 대체에 관한 정보와 상기 제2 메모리 공간의 크기를 결정하기 위한 정보를 포함하는 메모리 관리 장치.
  7. 제6항에 있어서, 상기 메모리 제어부는
    소정의 조건하에서 상기 제1 및 제2 메모리 공간들의 전체 크기가 가장 작도록 상기 제1 및 제2 메모리 공간들의 상대적 크기를 결정하는 것을 특징으로 하는 메모리 관리 장치.
  8. 제7항에 있어서, 상기 소정의 조건은
    허용가능한 페이지 폴트 수(tolerable page fault count)를 기초로 결정되는 것을 특징으로 하는 메모리 관리 장치.
  9. 제6항에 있어서, 상기 제2 메모리는
    실행 가능한 코드를 저장하기 위한 제1 영역; 및
    상기 실행 가능한 코드의 페이지 매핑 정보를 저장하기 위한 제2 영역을 포함하는 것을 특징으로 하는 메모리 관리 장치.
  10. 제9항에 있어서, 상기 메모리 제어부는
    상기 페이지 매핑 정보를 기초로 상기 제1 및 제2 메모리 공간들의 전체 크기와 상대적 크기를 결정하는 것을 특징으로 하는 메모리 관리 장치.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 제1 메모리;
    상기 제1 메모리보다 빠르게 동작하며, 메모리 관리 정책에 따라 구분되는 제1 및 제2 메모리 공간들을 포함하는 제2 메모리;
    상기 제2 메모리 공간의 접근 시간 비용과 상기 제2 메모리 공간의 공간 비용을 고려하여 실행 인스턴스(실행 인스턴스는 실행 가능한 코드에 포함됨) 별로 상기 제1 및 제2 메모리 공간들을 제어하는 메모리 제어부; 및
    상기 실행가능한 코드를 실행하는 프로세서를 포함하고,
    상기 제2메모리는
    페이지 매핑 정보를 포함하며, 상기 페이지 매핑 정보는 상기 실행가능한 코드가 미리 실행되거나 상기 실행 가능한 코드가 컴파일될 때 결정되고, 상기 페이지 매핑 정보는 상기 제1 메모리 공간의 크기에 관한 정보, 상기 제1 메모리 공간에 배치될 적어도 하나의 페이지에 관한 정보 및 상기 제2 메모리 공간의 크기를 결정하기 위한 정보를 포함하거나 또는 상기 제1 메모리 공간에 페이지의 삽입, 삭제 및 대체에 관한 정보와 상기 제2 메모리 공간의 크기를 결정하기 위한 정보를 포함하는 메모리 관리 장치.
  15. 제14항에 있어서, 상기 메모리 제어부는
    상기 접근 시간 비용을 고려하여 상기 제1 및 제2 메모리 공간들의 전체 크기가 가장 작도록 상기 제1 및 제2 메모리 공간들의 상대적 크기를 결정하는 것을 특징으로 하는 메모리 관리 장치.
  16. 제15항에 있어서, 상기 제1 메모리는
    플래시 메모리에 상응하는 것을 특징으로 하는 메모리 관리 장치.
  17. 복수의 페이지들로 구성된 실행가능한 코드를 실행하는 프로세서;
    상기 실행가능한 코드를 저장하는 제1 메모리;
    상기 제1 메모리보다 빠르게 동작하고, 메모리 관리 정책에 따라 구분되며 상기 복수의 페이지들의 배타적인 부분 집합을 각각 저장하는 제1 및 제2 메모리 공간들을 포함하는 제2 메모리; 및
    실행 인스턴스(실행 인스턴스는 실행 가능한 코드에 포함됨) 별로 상기 제1 및 제2 메모리 공간들의 크기를 결정하여 상기 제1 및 제2 메모리 공간들을 동적으로 제어하는 메모리 제어부를 포함하고,
    상기 제2메모리는
    페이지 매핑 정보를 포함하며, 상기 페이지 매핑 정보는 상기 실행가능한 코드가 미리 실행되거나 상기 실행 가능한 코드가 컴파일될 때 결정되고, 상기 페이지 매핑 정보는 상기 제1 메모리 공간의 크기에 관한 정보, 상기 제1 메모리 공간에 배치될 적어도 하나의 페이지에 관한 정보 및 상기 제2 메모리 공간의 크기를 결정하기 위한 정보를 포함하거나 또는 상기 제1 메모리 공간에 페이지의 삽입, 삭제 및 대체에 관한 정보와 상기 제2 메모리 공간의 크기를 결정하기 위한 정보를 포함하는 컴퓨팅 시스템.
  18. 실행가능한 코드(복수의 페이지들을 포함함)를 실행하는 프로세서, 제1 및 제2 메모리들(상기 제1 메모리는 상기 실행가능한 코드를 저장하고, 상기 제2 메모리는 메모리 관리 정책에 따라 구분되는 제1 및 제2 메모리 공간들을 포함함)과 메모리 제어부(실행 인스턴스(실행 인스턴스는 실행 가능한 코드에 포함됨) 별로 상기 제1 및 제2 메모리 공간들의 크기를 결정하여 상기 제1 및 제2 메모리 공간들을 동적으로 제어함)를 포함하고, 상기 제2메모리는 페이지 매핑 정보를 포함하며, 상기 페이지 매핑 정보는 상기 실행가능한 코드가 미리 실행되거나 상기 실행 가능한 코드가 컴파일될 때 결정되고, 상기 페이지 매핑 정보는 상기 제1 메모리 공간의 크기에 관한 정보, 상기 제1 메모리 공간에 배치될 적어도 하나의 페이지에 관한 정보 및 상기 제2 메모리 공간의 크기를 결정하기 위한 정보를 포함하거나 또는 상기 제1 메모리 공간에 페이지의 삽입, 삭제 및 대체에 관한 정보와 상기 제2 메모리 공간의 크기를 결정하기 위한 정보를 포함하는 컴퓨팅 시스템에서, 상기 컴퓨팅 시스템에 의한 상기 제1 및 제2 메모리들을 효율적으로 관리하는 방법은
    상기 프로세서는 필요한 페이지를 상기 메모리 제어부에게 요청하는 단계;
    상기 메모리 제어부는 상기 제1 메모리에서 상기 필요한 페이지를 검색하는 단계; 및
    만일 상기 필요한 페이지가 상기 제1 메모리에서 검색되는 경우에는 (a1) 상기 메모리 제어부는 상기 제1 메모리로부터 상기 필요한 페이지를 읽는 단계; 및 (a2) 상기 메모리 제어부는 상기 프로세서에 상기 읽은 페이지를 전송하는 단계를 포함하는 상기 컴퓨팅 시스템에 의한 상기 제1 및 제2 메모리들을 효율적으로 관리하는 방법.
  19. 제18항에 있어서,
    만일 상기 필요한 페이지가 상기 제1 메모리에서 검색되지 않은 경우에는 (b1) 상기 메모리 제어부는 상기 제2 메모리로부터 상기 필요한 페이지를 읽는 단계; 및 (b2) 상기 메모리 제어부는 상기 프로세서에 상기 읽은 페이지를 전송하는 단계를 더 포함하는 것을 특징으로 하는 상기 컴퓨팅 시스템에 의한 상기 제1 및 제2 메모리들을 효율적으로 관리하는 방법.
  20. 제19항에 있어서,
    (b3) 상기 메모리 제어부는 (b2) 단계 전 또는 후에 상기 읽은 페이지를 상기 메모리 관리 정책에 따라 상기 제1 메모리에 저장하는 단계를 더 포함하는 것을 특징으로 하는 상기 컴퓨팅 시스템에 의한 상기 제1 및 제2 메모리들을 효율적으로 관리하는 방법.
KR1020080110508A 2008-11-07 2008-11-07 메모리 구조에 따른 메모리 관리 장치 KR100987332B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080110508A KR100987332B1 (ko) 2008-11-07 2008-11-07 메모리 구조에 따른 메모리 관리 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080110508A KR100987332B1 (ko) 2008-11-07 2008-11-07 메모리 구조에 따른 메모리 관리 장치

Publications (2)

Publication Number Publication Date
KR20100051369A KR20100051369A (ko) 2010-05-17
KR100987332B1 true KR100987332B1 (ko) 2010-10-18

Family

ID=42277147

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080110508A KR100987332B1 (ko) 2008-11-07 2008-11-07 메모리 구조에 따른 메모리 관리 장치

Country Status (1)

Country Link
KR (1) KR100987332B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022212182A1 (en) * 2021-03-31 2022-10-06 Advanced Micro Devices, Inc. System and method for providing page migration

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990076836A (ko) * 1995-12-26 1999-10-25 피터 엔. 데트킨 플래시 메모리가 주 메모리를 보충하도록 하는 메모리 관리자
WO2007145883A1 (en) 2006-06-07 2007-12-21 Microsoft Corporation Hybrid memory device with single interface
KR100843536B1 (ko) 2002-12-12 2008-07-04 인터내셔널 비지네스 머신즈 코포레이션 컴퓨터 시스템 내의 메모리 관리 향상 방법, 메모리 관리 메커니즘 및 컴퓨터 판독 가능한 기록 매체

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990076836A (ko) * 1995-12-26 1999-10-25 피터 엔. 데트킨 플래시 메모리가 주 메모리를 보충하도록 하는 메모리 관리자
KR100843536B1 (ko) 2002-12-12 2008-07-04 인터내셔널 비지네스 머신즈 코포레이션 컴퓨터 시스템 내의 메모리 관리 향상 방법, 메모리 관리 메커니즘 및 컴퓨터 판독 가능한 기록 매체
WO2007145883A1 (en) 2006-06-07 2007-12-21 Microsoft Corporation Hybrid memory device with single interface

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
AND 플래시 메모리의 실시간 성능 보장을 위한 페이지 교체 정책에 관한 연구(한국정보과학회 2008 가을 학술발표논문집 제35권 제2호(B), Pages 476~480. 2008.10.) *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022212182A1 (en) * 2021-03-31 2022-10-06 Advanced Micro Devices, Inc. System and method for providing page migration

Also Published As

Publication number Publication date
KR20100051369A (ko) 2010-05-17

Similar Documents

Publication Publication Date Title
US7673105B2 (en) Managing memory pages
US20060026372A1 (en) Page replacement method using page information
JP2011154547A (ja) メモリ管理装置及びメモリ管理方法
US10740013B2 (en) Non-volatile data-storage device with spare block pools using a block clearing method
WO2016095151A1 (en) Storing log records in a non-volatile memory
EP2979189A1 (en) Storing data from cache lines to main memory based on memory addresses
CN114265670B (zh) 一种内存块整理方法、介质及计算设备
US11138104B2 (en) Selection of mass storage device streams for garbage collection based on logical saturation
CN109558456A (zh) 一种文件迁移方法、装置、设备及可读存储介质
US20130304972A1 (en) Control device, storage device, and storage control method
JP5183662B2 (ja) メモリ制御装置及びメモリ制御方法
JP2014220021A (ja) 情報処理装置、制御回路、制御プログラム、および制御方法
US20170285953A1 (en) Data Storage Device and Data Maintenance Method thereof
KR100987332B1 (ko) 메모리 구조에 따른 메모리 관리 장치
US10210097B2 (en) Memory system and method for operating the same
US20160140034A1 (en) Devices and methods for linked list array hardware implementation
CN103389943A (zh) 控制装置、存储装置及存储控制方法
Kim et al. Real-time program execution on nand flash memory for portable media players
CN108984117B (zh) 一种数据读写方法、介质及设备
CN110874273B (zh) 一种数据处理方法及装置
US9760488B2 (en) Cache controlling method for memory system and cache system thereof
CN108932111B (zh) 一种数据读写性能的优化方法、介质及设备
CN111078122B (zh) 数据处理方法、装置和设备
US20140095792A1 (en) Cache control device and pipeline control method
KR101744401B1 (ko) 컴퓨팅 장치의 시스템 상태 저장, 복원방법 및 이를 위한 컴퓨팅 장치

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130930

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140929

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160217

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170925

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20181002

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20191001

Year of fee payment: 10