개시된 기술에 관한 설명은 구조적 내지 기능적 설명을 위한 실시예에 불과하므로, 개시된 기술의 권리범위는 본문에 설명된 실시예에 의하여 제한되는 것으로 해석되어서는 아니 된다. 즉, 실시예는 다양한 변경이 가능하고 여러 가지 형태를 가질 수 있으므로 개시된 기술의 권리범위는 기술적 사상을 실현할 수 있는 균등물들을 포함하는 것으로 이해되어야 한다.
한편, 본 출원에서 서술되는 용어의 의미는 다음과 같이 이해되어야 할 것이다.
“제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 정책을 위하여 요구되는 메모리 페이지의 수(L
LRU_i)가 확률 변수 X(Random Variable X)라면, N 개의 샘플 데이터 L
LRU_1, L
LRU_2, ..., L
LRU_N는 확률 변수 X에 대한 N 개의 샘플 데이터로 고려될 수 있다. 만일 N이 충분히 크다면, 확률 변수 X의 확률 분포(probability distribution) 가 특정 확률 분포로 추정될 수 있다. 일 실시예에서, 특정 확률 분포는 평균
와 표준 편차 σ를 가지는 정규 분포에 상응할 수 있다.
LRU 정책을 위하여 요구되는 메모리 페이지의 확률적 추정치(Xth)는 정규 분포를 기초로 결정되고, LRU 정책을 위하여 요구되는 메모리 페이지의 확률적 추정치(Xth)는 다음의 수학식을 만족시키고, 도 11에서 점선(B)으로 표시된다.
즉, 도 11의 점선(B)는 데드라인을 만족시키기 위한, LRU 정책을 위하여 요구되는 메모리 페이지의 수(LLRU_i)는 Probth 보다 큰 확률을 만족시킴을 나타낸다. 결과적으로 제1 및 제2 메모리 관리 정책들(예를들어, 메모리 고정 정책과 LRU 정책)을 위한 최적의 조합이 결정될 수 있다.
개시된 기술은 다음의 효과를 가질 수 있다. 다만, 특정 실시예가 다음의 효과를 전부 포함하여야 한다거나 다음의 효과만을 포함하여야 한다는 의미는 아니므로, 개시된 기술의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.
일 실시예에 따른 메모리 관리 장치는 메모리 구조(memory hierarchy)를 효율적으로 관리할 수 있다. 일 실시예에서, 메모리 관리 장치는 비휘발성 램에 저장된 실행 가능한 코드를 효율적으로 실행할 수 있다. 즉, 메모리 관리 장치는 적절한 램(즉, 빠른 동작 속도를 가지는 메모리)의 공간을 효율적으로 이용하면서 플래시 메모리(즉, 느린 동작 속도를 가지는 메모리)에 저장된 실행가능한 코드를 소정 시간 내에 실행하는 것을 도울 수 있다.
일 실시예에 따른 메모리 관리 장치는 메모리 관리 정책에 따라 구분되는 메모리 공간들을 이용하여, 실행 가능한 코드의 실행을 위한 시간 및 공간 비용을 최적으로 균형을 맞출 수 있다. 예를 들어, 메모리 관리 장치는 메모리 공간들을 동적으로 제어할 수 있고, 필요에 따라, 소정의 시간 제한하에 메모리 공간들의 전체 크기가 가장 작도록 메모리 공간들의 상대적 크기를 결정할 수 있다.
일 실시예에 따른 메모리 관리 장치는 메모리 관리 정책에 따라 구분되는 메모리 공간들을 이용하여 메모리 공간들을 동적으로 제어할 수 있다. 예를 들어, 메모리 관리 장치는 메모리 공간들의 전체 크기와 상대적 크기를 결정할 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.