KR20080070953A - 컨트롤 플로우를 이용한 페이지 프리로드 방법 및 그시스템 - Google Patents

컨트롤 플로우를 이용한 페이지 프리로드 방법 및 그시스템 Download PDF

Info

Publication number
KR20080070953A
KR20080070953A KR1020070008903A KR20070008903A KR20080070953A KR 20080070953 A KR20080070953 A KR 20080070953A KR 1020070008903 A KR1020070008903 A KR 1020070008903A KR 20070008903 A KR20070008903 A KR 20070008903A KR 20080070953 A KR20080070953 A KR 20080070953A
Authority
KR
South Korea
Prior art keywords
page
preload
information
pages
stored
Prior art date
Application number
KR1020070008903A
Other languages
English (en)
Other versions
KR100866627B1 (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 KR1020070008903A priority Critical patent/KR100866627B1/ko
Priority to US11/833,003 priority patent/US8732413B2/en
Publication of KR20080070953A publication Critical patent/KR20080070953A/ko
Application granted granted Critical
Publication of KR100866627B1 publication Critical patent/KR100866627B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • G06F8/4442Reducing the number of cache misses; Data prefetching
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • 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
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead

Abstract

컨트롤 플로우를 이용한 페이지 프리로드 방법 및 그 시스템이 개시된다. 상기 프리로드 방법은 적어도 하나의 페이지로 구성되는 제1프로그램 코드의 각 페이지별 프리로드 페이지 정보를 추출하고, 상기 프로그램 코드 및 추출된 상기 프리로드 페이지에 대한 정보를 포함하는 제2프로그램 코드를 생성하는 단계, 생성된 제2프로그램 코드를 비휘발성 메모리에 저장하는 단계, 및 상기 비휘발성 메모리에 저장된 상기 제2프로그램 코드의 페이지 중 어느 하나의 페이지를 메인메모리에 로드할 때, 상기 어느 하나의 페이지에 저장된 상기 프리로드 페이지에 대한 정보에 기초하여 상기 메모리에 저장된 페이지 중 적어도 하나의 페이지를 상기 메인메모리에 프리로드 하는 단계를 구비한다.

Description

컨트롤 플로우를 이용한 페이지 프리로드 방법 및 그 시스템{Method for page preload using control flow and system thereof }
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 프로그램의 수행경로를 나타내는 플로우 챠트이다.
도 2는 도 1에 도시된 프로그램을 컴파일했을 때 생성되는 코드의 순서를 나타낸다.
도 3은 본 발명의 실시 예에 따른 프리로드 페이지 추출장치의 기능 블록도를 나타낸다.
도 4는 본 발명의 실시 예에 따른 시스템을 간략히 나타내는 기능 블록도이다.
도 5는 본 발명의 실시 예에 따른 프리로드 페이지 추출장치가 생성한 프로그램 코드를 비휘발성 메모리에 저장한 상태를 개략적으로 나타낸다.
도 6은 본 발명의 실시 예에 따른 컨트롤 플로우를 이용한 페이지 프리로드 방법 중 프리로드 전의 상태를 설명하기 위한 블록도이다.
도 7은 본 발명의 실시 예에 따른 컨트롤 플로우를 이용한 페이지 프리로드 방법 중 프리로드 후의 상태를 설명하기 위한 블록도이다.
도 8은 본 발명의 실시 예에 따른 컨트롤 플로우를 이용한 페이지 프리로드 방법을 설명하기 위한 프로그램 수행경로 및 비휘발성 메모리에 저장된 코드를 나타낸다.
본 발명은 프로그램을 수행하는 시스템에 관한 것으로, 보다 상세하게는 프로그램의 페이지를 메인 메모리 또는 가상 메모리 공간에 프리로드 하는 방법, 그 장치, 및 시스템에 관한 것이다.
현재의 컴퓨팅 시스템에는 고속으로 동작 가능하지만 소량의 정보만을 기억할 수 있는 메인 메모리(예컨대, RAM)와 저속이지만 대략의 정보를 기억할 수 있는 보조 기억장치(예컨대, 하드디스크 드라이브)를 구비한다.
또한, 가상 메모리 공간은 소량의 메인 메모리를 더 크게 활용할 수 있도록 메모리 맵핑 등을 통해 가상적인 메모리 공간을 제공할 수 있다.
CPU는 보조 기억장치에 저장된 정보를 직접 억세스 하지 않고, 메인 메모리에 저장된 정보를 억세스 하므로, 시스템의 OS(operating system)는 CPU가 처리하는 프로세스에 대응되는 프로그램의 코드를 보조 기억장치에서 메인 메모리로 로드하게 된다.
하지만, 메인 메모리와 보조 기억장치의 용량 차이로 인해, CPU가 처리하는 프로세스에 대응되는 프로그램 코드를 모두 메인 메모리에 로드 할 수는 없다. 따 라서, OS는 필요한 코드만을 메인 메모리에 적재하였다가 필요한 코드가 메인 메모리에 존재하지 않는 경우에는 페이지 폴트(page fault)를 발생시키고, 필요한 페이지를 보조 기억장치에서 메인 메모리로 로드 하게 된다.
또한, OS는 현재 CPU가 사용할 코드 뿐만 아니라, 다음에 사용할 코드를 예측하여 메인 메모리에 미리 로드시키는 프리로드를 수행할 수 있다.
한편, 저속의 보조 기억장치를 억세스 하는 데에는, 많은 오버헤드(ovrehead)가 발생하므로, 페이지 폴트의 횟수는 시스템의 성능에 많은 영향을 미치게 된다.
따라서, 이러한 페이지 폴트를 줄이기 위하여 정확한 프리로드를 수행하는 것이 시스템의 성능에 많은 영향일 미친다.
도 1은 프로그램의 수행경로를 나타내는 플로우 챠트이며, 도 2는 도 1에 도시된 프로그램을 컴파일했을 때 생성되는 코드의 순서를 나타낸다.
도 1 및 도 2를 참조하면, 도 1에 도시된 각각의 블록(예컨대, A, B, C 등)은 각각의 기능 펑션(function)별로 나눈 상기 프로그램의 코드를 나타낼 수 있다. 도 1에 도시된 바와 같이 프로그램의 수행경로는 복수 개 일 수 있다. 예컨대, A, B, C, D, G, A의 순서로 진행되는 경로가 있을 수 있으며, A, B, E, F, G, A 또는 A, B, E, H, G, A의 순서롤 진행되는 경로도 존재한다.
컴파일러(compiler)는 상기 프로그램을 컴파일(compile)하고, 컴파일된 코드를 코드 저장용 메모리인 보조 기억장치(예컨대, 플래시 메모리 또는 하드 디스크 드라이브)에 저장할 수 있다.
상기 프로그램의 수행경로 중 A, B, C, D, G, A의 순서가 가장 빈번히 수행되는 수행경로라고 하면, 상기 컴파일러는 도 2에 도시된 바와 같은 수선로 컴파일 된 코드를 상기 보조 기억장치에 저장할 수 있다.
한편, OS에 구비된 DPM(demand paging module)은 전술한 프리로드를 수행할 수 있다. 일반적으로 프로그램이 수행되는 코드의 위치는 지역성(locality)를 갖게 되며, 지역성을 이용하여 현재 수행되는 코드와 근접한 위치의 코드 페이지를 프리로드 방법으로 사용할 수 있음은 공지된 바와 같다.
상기 DPM은 프로그램 코드가 도 2에 도시된 바와 같이 저장되어 있는 경우에 지역성에 의한 프리로드를 수행할 수 있으며, 이 경우 코드 'G'가 수행된 후 코드 'A'가 수행되어야 함에도 불구하고, 상기 DPM은 코드 'E'를 프리로드 하게 된다.
즉, 코드 'G'가 수행된 후 어떤 코드가 수행될지에 대한 정보를 상기 DPM이 알 수 없으므로 지역성에 의한 프리로드를 수행하게 되고, 그 결과 페이지 폴트가 발생하게 된다. 페이지 폴트가 발생함에 따라 프로그램의 수행시간이 늘어남은 물론이다.
따라서 현재 수행되고 있는 코드 페이지 다음에 수행될 페이지에 대한 정보를 추출하여, 프리로드된 페이지의 적중률(hit ratio)를 높여서, 프로그램의 수행시간을 단축할 수 있는 프리로드 방법 및 그 장치가 요구된다.
따라서 본 발명이 이루고자 하는 기술적인 과제는 현재 수행되고 있는 코드 페이지 다음에 수행될 페이지에 대한 정보를 추출하여, 프리로드된 페이지의 적중 률(hit ratio)를 높여서, 프로그램의 수행시간을 단축할 수 있는 프리로드 방법 및 그 장치를 제공하는 것이다.
상기 기술적 과제를 달성하기 위한 적어도 컨트롤 플로우를 이용한 페이지 프리로드 방법은 적어도 하나의 페이지로 구성되는 제1프로그램 코드의 각 페이지별 프리로드 페이지 정보를 추출하고, 상기 프로그램 코드 및 추출된 상기 프리로드 페이지에 대한 정보를 포함하는 제2프로그램 코드를 생성하는 단계, 생성된 제2프로그램 코드를 비휘발성 메모리에 저장하는 단계, 및 상기 비휘발성 메모리에 저장된 상기 제2프로그램 코드의 페이지 중 어느 하나의 페이지를 메인메모리에 로드할 때, 상기 어느 하나의 페이지에 저장된 상기 프리로드 페이지에 대한 정보에 기초하여 상기 메모리에 저장된 페이지 중 적어도 하나의 페이지를 상기 메인메모리에 프리로드 하는 단계를 구비한다.
상기 제2프로그램 코드를 생성하는 단계는 프리로드 페이지 추출기가 상기 제1프로그램 코드를 페이지 단위로 분리하고, 분리된 각 페이지에 포함된 브랜치를 검색하는 단계, 테스트 프로그램으로부터 출력된 프로파일링 정보에 기초하여 검색된 브랜치의 타켓 페이지 중 적중률이 높은 페이지를 상기 브랜치를 포함하는 페이지의 프리로드 페이지로 선정하는 단계, 및 선정된 상기 프리로드 페이지에 대한 정보를 상기 브랜치를 포함하는 페이지의 소정의 영역에 저장하는 단계를 구비할 수 있다.
상기 비휘발성 메모리는 낸드형 플래시 메모리일 수 있다.
상기 소정의 영역은 상기 브랜치를 포함하는 페이지의 스페어 영역일 수 있다.
상기 프리로드 페이지에 대한 정보는 상기 프리로드 페이지의 어드레스일 수 있다.
상기 어느 하나의 페이지에 저장된 상기 프리로드 페이지에 대한 정보에 기초하여 상기 메모리에 저장된 페이지 중 적어도 하나의 페이지를 상기 메인 메모리에 프리로드 하는 단계는, DPM(demand paging module)이 상기 프리로드 페이지에 대한 정보에 기초하여 미리 결정된 프리로드 페이지 수 만큼 프리로드 할 페이지를 탐색하는 단계, 및 탐색된 페이지를 상기 메인 메모리에 프리로드 하는 단계를 구비할 수 있다.
상기 프리로드 할 페이지를 탐색하는 단계는 상기 프리로드 페이지 수 만큼 상기 프리로드 페이지에 대한 정보에 상응하는 페이지에 저장된 프리로드 페이지에 대한 정보를 검색하는 단계를 구비할 수 있다. 상기 컨트롤 플로우를 이용한 페이지 프리로드 방법은 기록메체에 저장될 수 있다.
상기 기술적 과제를 달성하기 위한 프리로드 페이지 추출장치는 제1프로그램 코드를 페이지 단위로 분리하고, 분리된 각 페이지에 포함된 브랜치를 검색하는 브랜치 매니저, 및 테스트 프로그램으로부터 출력된 프로파일링 정보에 기초하여 상기 브랜치 매니저가 검색한 브랜치의 타켓 페이지 중 적중률이 높은 페이지를 상기 브랜치를 포함하는 페이지의 프리로드 페이지로 선정하는 프리로드 정보 추출기를 구비한다.
상기 프리로드 페이지 추출장치는 상기 프리로드 정보 추출기가 선정한 상기 프리로드 페이지에 대한 정보를 상기 분리된 각 페이지의 소정의 영역에 포함하는 제2프로그램 코드를 생성하는 이미지 생성기를 더 구비할 수 있다.
상기 기술적 과제를 달성하기 위한 시스템은 메인 메모리, 적어도 하나의 페이지로 구성되는 제1프로그램 코드 및 상기 제1프로그램 코드의 각 페이지별 프리로드 페이지 정보를 포함하는 제2프로그램 코드가 저장된 비휘발성 메모리, 및 상기 비휘발성 메모리에 저장된 상기 제2프로그램 코드 중 적어도 하나의 페이지를 상기 메인 메모리에 로드하기 위한 DPM을 구비하며, 상기 DPM은 상기 비휘발성 메모리에 저장된 상기 제2프로그램 코드의 페이지 중 어느 하나의 페이지를 상기 메인 메모리에 로드할 때, 상기 어느 하나의 페이지에 저장된 상기 프리로드 페이지에 대한 정보에 기초하여 상기 메모리에 저장된 페이지 중 적어도 하나의 페이지를 상기 메인메모리에 프리로드 한다.
상기 DPM은 상기 프리로드 페이지에 대한 정보에 기초하여 미리 결정된 프리로드 페이지 수 만큼 프리로드 할 페이지를 탐색하고, 탐색된 페이지를 상기 메인 메모리에 프리로드 할 수 있다.
상기 DPM은 상기 소정의 프리로드 페이지 수 만큼 상기 프리로드 페이지에 대한 정보에 상응하는 페이지에 저장된 프리로드 페이지에 대한 정보를 검색할 수 있다. 상기 시스템은 휴대용 단말기를 포함할 수 있다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시 예를 예시하는 첨부 도 면 및 첨부 도면에 기재된 내용을 참조하여야만 한다. 또한, 본 명세서에 있어서는 어느 하나의 구성요소가 다른 구성요소로 데이터를 '전송'하는 경우에는 상기 구성요소는 상기 다른 구성요소로 직접 상기 데이터를 전송할 수도 있고, 적어도 하나의 또 다른 구성요소를 통하여 상기 데이터를 상기 다른 구성요소로 전송할 수도 있는 것을 의미한다.
반대로 어느 하나의 구성요소가 다른 구성요소로 데이터를 '직접 전송'하는 경우에는 상기 구성요소에서 다른 구성요소를 통하지 않고 상기 다른 구성요소로 상기 데이터가 전송되는 것을 의미한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 3은 본 발명의 실시 예에 따른 프리로드 페이지 추출장치의 기능 블록도를 나타낸다.
도 3을 참조하면, 본 발명의 실시 예에 따른 프리로드 페이지 추출장치(10)는 브랜치 매니저(1) 및 프리로드 정보 추출기(3)를 구비한다. 상기 프리로드 페이지 추출장치(10)는 이미지 생성기(5)를 더 구비할 수 있다.
본 명세서에서는 플래시 메모리를 하드 디스크와 같은 대용량의 보조 기억장치로 사용하는 시스템(예컨대, 휴대용 단말기)을 일 예로 설명하지만, 본 발명의 권리범위가 이에 한정되지는 않는다.
또한, 본 명세서에서는 상기 프리로드 페이지 추출장치(10)가 본 발명의 실 시 예에 따른 시스템(예컨대, 휴대용 단말기)과는 별도의 장치(예컨대, 상기 컴퓨터)에 구비된 경우를 일 예로 설명한다. 하지만, 상기 프리로드 페이지 추출장치(10)는 본 발명의 실시 예에 따른 시스템(예컨대, 휴대용 단말기)에 직접 구비될 수 있음은 물론이다.
상기 브랜치 매니저(1)는 제1프로그램 코드를 페이지 단위로 분리하고, 분리된 각 페이지에 포함된 브랜치(branch)를 검색할 수 있다.
상기 제1프로그램 코드는 본 발명의 실시 예에 따른 시스템(예컨대, 휴대용 단말기)에 구비된 보조 기억장치(예컨대, 플래시 메모리)에 저장될 CPU가 인식할 수 있는 컴파일 된 프로그램 코드일 수 있다.
상기 제1프로그램 코드는 페이지 단위 즉, 상기 보조 기억장치(예컨대, 플래시 메모리) 또는 본 발명의 실시 예에 다른 시스템에 구비된 메인 메모리에서 데이터들이 저장되고 관리되는 데이터의 단위를 의미할 수 있다.
따라서, 상기 브랜치 매니저(1)는 상기 프리로드 페이지 추출장치(10)가 구비된 시스템(예컨대, 컴퓨터)에 존재하며 상기 시스템(예컨대, 컴퓨터)로부터 제1프로그램 코드를 수신하고, 수신된 제1프로그램 코드를 페이지 단위로 분리할 수 있다.
또한, 분리된 각각의 페이지에 포함된 브랜치를 검색한다. 여기서 브랜치라 함은 상기 제1프로그램 코드의 지역성을 깰 수 있는 소정의 코드(예컨대, goto statement 또는 jump statement 등)를 의미할 수 있다.
따라서, 상기 브랜치 매니저(1)는 지역성을 깰 수 있는 코드인 상기 브랜치 를 검색함으로써, 프리로드 할 때의 적중률(hit ratio)를 높일 수 있다. 또한, 검색된 브랜치의 타켓 코드가 검색된 브랜치와 동일한 페이지에 포함된 경우에는 상기 브랜치 매니저(1)는 검색된 브랜치를 무시할 수 있다. 이는 프로그램 코드는 페이지 단위로 메인 메모리에 로드 되기 때문에, 브랜치가 존재하여도 지역성을 깨지 않기 때문이다.
일반적으로 상기 브랜치는 소정의 조건(예컨대, if statement 또는 for statement 등)에 의하여 분기되는 타겟(target) 코드가 복수 개일 수 있으며, 그 중 프로그램의 수행되는 동안 가장 빈번히 분기되는 타겟 코드가 존재할 수 있다.
따라서, 상기 브랜치에서 가장 빈번히 분기되는 타켓 코드를 알기 위해 소정의 테스트 프로그램으로부터 출력된 프로파일링 정보를 이용할 수 있다.
상기 테스트 프로그램은 상기 제1프로그램 코드를 적어도 한번 수행하면서 각각의 브랜치가 분기되는 횟수, 분기되는 타겟 코드의 주소 등의 통계적 정보인 상기 프로파일링 정보를 생성할 수 있다.
상기 테스트 프로그램은 상기 프리로드 페이지 추출장치(10)와는 별도로 상기 상기 프리로드 페이지 추출장치(10)가 구비된 시스템(예컨대, 컴퓨터)에 구비될 수 있다.
상기 프리로드 정보 추출기(3)는 상기 프로파일링 정보에 기초하여 상기 브랜치 매니저(1)가 검색한 브랜치의 타켓 페이지 중 적중률이 높은 페이지(즉, 가장 빈번히 분기되는 타켓 코드가 포함된 페이지)를 상기 브랜치를 포함하는 페이지의 프리로드 페이지로 선정할 수 있다.
또한, 상기 프리로드 페이지 추출장치(10)는 이미지 생성기(5)를 더 구비할 수 있으며, 상기 이미지 생성기(5)는 상기 프리로드 정보 추출기(3)가 선정한 상기 프리로드 페이지에 대한 정보를 상기 분리된 각 페이지의 소정의 영역에 포함하는 제2프로그램 코드를 생성할 수 있다.
즉, 상기 제2프로그램 코드는 페이지 단위로 분리된 상기 제1프로그램 코드 및 상기 제1프로그램 코드의 각각의 페이지의 프리로드 페이지에 대한 정보를 포함하는 프로그램 코드일 수 있다.
상기 제2프로그램 코드는 보조 기억장치(예컨대, 플래시 메모리)에 저장되기 전에 상기 보조 기억장치(예컨대, 플래시 메모리)에 저장될 순서 및 위치 등의 정보를 포함하는 하나의 코드 이미지(image)일 수 있으며, 상기 코드 이미지를 상기 보조 기억장치(예컨대, 플래시 메모리)에 저장(예컨대, 프로그램)하면 도 5에 도시된 바와 같을 수 있다.
상기 프리로드 페이지에 대한 정보는 상기 프리로드 정보 추출기(3)가 선정한 각 페이지의 상기 프리로드 페이지의 어드레스 일 수 있다.
상기 프리로드 페이지의 어드레스는 선정된 상기 프리로드 페이지를 나타낼 수 있는 모든 정보를 포함할 수 있다. 예컨대, 상기 보조 기억장치(예컨대, 플래시 메모리)가 다수의 페이지들로 구성된 메모리 블록들을 구비하는 경우에는 상기 프리로드 페이지의 어드레스는 상기 프리로드 페이지가 포함된 메모리 블록의 오프셋(offset) 및 상기 프리로드 페이지가 포함된 메모리 블록 내에서의 상기 프리로드 페이지의 오프셋을 포함할 수 있다. 또는, 상기 보조 기억장치(예컨대, 플래시 메모리)에서 페이지 넘버가 유니크 하게 넘버링 된 경우에는 상기 페이지 넘버가 상기 프리로드 페이지의 어드레스가 될 수도 있다.
한편, 상기 보조 기억장치가 낸드형 플래시 메모리인 경우에는, 상기 프리로드 페이지에 대한 정보를 상기 브랜치를 포함하는 페이지의 스페어 영역에 저장할 수 있다.
즉, 낸드형 플래시 메모리의 각각의 페이지는 도 5에 도시된 바와 같이 스페어 영역이 존재하며, 상기 스페어 영역은 상기 낸드형 플래시 메모리를 보조 기억장치로 사용하는 시스템의 일반적인 파일 시스템에서는 사용하지 않는 영역이므로, 별도의 저장 영역의 낭비 없이 상기 프리로드 페이지의 어드레스를 저장할 수 있다.
하지만, 본 발명의 권리범위는 이에 한정되지는 않으며, 소정의 정보를 저장할 수 있는 저장장치이기만 하면 상기 보조 기억장치로 사용할 수 있으며, 이때에는 프리로드를 수행하는 OS가 상기 저장장치에서 상기 프리로드 페이지의 어드레스가 저장된 영역과 실제 데이터가 저장된 영역을 구별하여 인식할 수 있는 것이 바람직하다.
다시 도 3을 참조하면, 상기 이미지 생성기(5)가 생성한 상기 제2프로그램 코드는 본 발명의 실시 예에 따른 시스템(예컨대, 휴대용 단말기)의 보조 기억장치에 저장(즉, 프로그램)될 수 있으며, 저장된 프로그램 코드는 도 5에 도시된 바와 같다.
도 5는 본 발명의 실시 예에 따른 프리로드 페이지 추출장치가 생성한 프로 그램 코드를 비휘발성 메모리에 저장한 상태를 개략적으로 나타낸다.
도 3 및 도 5를 참조하면, 도 5는 상기 프리로드 페이지 추출장치(10)가 생성한 상기 제2프로그램 코드를 비휘발성 메모리(예컨대, 낸드형 플래시 메모리)로 구현된 보조 기억장치에 저장한 상태를 나타낸다.
상기 프리로드 페이지 추출장치(10)가 생성한 상기 제2프로그램 코드에 기초하여 본 발명의 실시 예에 따른 시스템(예컨대, 휴대용 단말기)에 구비된 보조 기억장치에 도 5에 도시된 것과 같은 코드를 저장(프로그램)할 수 있다.
즉, 상기 시스템(예컨대, 휴대용 단말기)의 출품 전에 상기 프리로드 페이지 추출장치(10)를 구비하는 시스템(예컨대, 컴퓨터)으로부터 상기 제2프로그램 코드를 소정의 기록장치(예컨대, 플래시 메모리 장치)가 수신하고, 수신된 상기 제2프로그램 코드에 기초하여 상기 제2프로그램 코드(예컨대, 부팅 프로그램 또는 OS)가 기록된 보조 기억장치(예컨대, 플래시 메모리)를 상기 시스템(예컨대, 휴대용 단말기)에 구비하여 출품할 수 있다. 특히, 부팅 프로그램 또는 OS는 프로그램이 수행되는 경로가 반복되는 경우가 많으므로, 본 발명의 실시 예에 따른 프리로드 방법을 사용하는 경우 적중률이 높을 수 있다.
하지만, 이는 하나의 실시 예에 불과하며, 상기 프리로드 페이지 추출장치(10)는 상기 시스템(예컨대, 휴대용 단말기)에 구비되어, 이후 상기 보조 기억장치에 저장되는 유저 어플리케이션 프로그램에 대해서도 프리로드 페이지에 대한 정보를 포함하는 프로그램 코드를 생성할 수 있음은 물론이다. 또한, 상기 시스템은 휴대용 단말기에 한정되지 않는다.
도 5에는 10개의 페이지가 나타나 있으며, 세 번째 페이지(Code 2), 여섯 번째 페이지(Code5), 및 여덟 번째 페이지(Code 8)의 각각의 스페어 영역에 각 페이지의 프리로드 페이지에 대한 정보가 저장되어 있음을 알 수 있다.
또한, 스페어 영역에 아무런 정보가 저장되지 않은 페이지(예컨대, 두 번째 페이지)는, 그 페이지에 브랜치가 없거나, 있는 경우에도 상기 브랜치의 타켓 코드가
상기 브랜치를 포함하는 페이지(예컨대, 두 번째 페이지)에 포함된 경우 일 수 있다. 이와 같이 스페어 영역에 아무런 정보가 저장되지 않은 페이지(예컨대, 두 번째 페이지)에 상응하는 프리로드 페이지는 그 다음 페이지(예컨대, 세 번째 페이지)가 될 수 있다.
도 4는 본 발명의 실시 예에 따른 시스템을 간략히 나타내는 기능 블록도이다.
도 4를 참조하면, 본 발명의 실시 예에 따른 시스템(100)은 메인 메모리(110), DPM(demand paging module, 120), 및 비휘발성 메모리(140)를 구비할 수 있다.
상기 비휘발성 메모리(140)는 보조 기억장치로 사용될 수 있으며, 도 4에 도시된 바와 같이 플래시 메모리로 구현되는 경우에는 상기 시스템(100)은 FTL(flash translation layer, 130)를 더 구비할 수 있다. 상기 시스템(100)은 휴대용 단말기 등에 구비될 수 있다.
상기 DPM(120)은 상기 비휘발성 메모리(140)에 저장된 페이지를 상기 메인 메모리(110)에 로드 또는 프리로드 할 수 있다.
또한, 상기 DPM(120)은 상기 시스템(100)에 구비된 메인 메모리(110)의 용량의 제한을 극복하기 위한 가상 메모리 공간(미도시)을 제공할 수도 있다.
상기 DPM(120)은 상기 시스템(100)의 OS에 구비되며, DPM 인터페이스(미도시), 페이지 폴트 핸들러(미도시), 및 페이지 캐시 매니저(미도시)를 구비할 수 있다.
상기 DPM 인터페이스(미도시)는 상기 시스템(100)에 전원이 인가되면 상기 DPM(120)이 사용하게 될 상기 FTL(130)을 초기화 할 수 있으며, 페이지의 로드 또는 프리로드를 수행할 준비를 한다.
상기 페이지 폴트 핸들러(미도시)는 수행할 프로그램 코드가 가상 메모리(미도시)에 존재하지 않아서 prefetch abort가 발생되는 경우, 상기 수행할 프로그램 코드가 포함되어 있는 페이지를 상기 플래시 메모리(140)로부터 상기 메인 메모리(110)로 적재하고 상기 메인 메모리(110)를 가상 메모리(미도시)로 매핑(mapping)시킨다. 또한, 상기 페이지 폴트 핸들러(미도시)는 미리 정해진 프리로드 메이지 수 만큼의 프리로드 페이지를 미리 상기 메인 메모리(110)로 로드시키고, 가상 메모리로 매핑시킬수 있다.
상기 페이지 캐시 매니저(미도시)는 페이지가 로드될 상기 메인 메모리(110)의 공간이 다 사용되었을 때 사용이 비번하지 않는 페이지를 언로드(unload)하고, 요구되어진 페이지를 로드 시킬 공간을 만드는 역할을 할 수 있다.
상기 FTL(130)은 상기 플래시 메모리(140)를 상기 시스템(100)에 구비된 파 일 시스템에서 사용할 수 있도록 하는 장치로서, STL(sector translation layer), BML(block management layer), 및 LLD(low level device driver) 등을 구비할 수 있다.
상기 비휘발성 메모리(140, 예컨대, 플래시 메모리)는 적어도 하나의 페이지로 구성되는 제1프로그램 코드 및 상기 제1프로그램 코드의 각 페이지별 프리로드 페이지 정보를 포함하는 제2프로그램 코드를 저장할 수 있다. 즉, 도 5에 도시된 바와 같은 프로그램 코드가 상기 비휘발성 메모리(140)에 저장될 수 있다.
상기 DPM(120)은 상기 비휘발성 메모리(140)에 저장된 상기 제2프로그램 코드의 페이지 중 어느 하나의 페이지를 상기 FTL(130)을 통하여 상기 메인 메모리(110)에 로드할 때, 상기 어느 하나의 페이지에 저장된 상기 프리로드 페이지에 대한 정보(예컨대, 상기 프리로드 페이지의 어드레스)에 기초하여 상기 비휘발성 메모리(140)에 저장된 페이지 중 적어도 하나의 페이지를 상기 메인 메모리(110)에 프리로드 할 수 있다.
즉, 상기 DPM(120)은 현재 수행될 프로그램 코드를 로드하면서 그 다음에 수행될 프로그램 코드도 상기 프리로드 페이지에 대한 정보에 기초하여 미리 프리로드 할 수 있다.
상기 DPM(120)은 상기 프리로드 페이지에 대한 정보에 기초하여 미리 결정된 프리로드 페이지 수 만큼 프리로드 할 페이지를 탐색하고, 탐색된 페이지를 상기 메인 메모리에 프리로드 할 수 있다.
즉, 상기 DPM(120)이 프리로드 할 페이지의 수가 한 개일 필요는 없으며, 시 스템의 구현 예에 따라 다양해질 수 있다. 따라서, 상기 프리로드 페이지 수는 미리 결정되어 있을 수도 있으며, 상기 DPM(120)에 의해 동적으로 변화될 수 있는 수 일수도 있다. 따라서 상기의 미리 결정된 프리로드 페이지 수는 시스템의 구현 예에 따라 고정된 수 또는 동적으로 변화될 수 있는 수를 포함하는 의미일 수 있다.
예컨대, 도 5를 참조하면, 상기 DPM(120)에 의해 프리로드 될 페이지의 수가 2개이고, 두 번째 페이지(Code 1)가 로드 된다고 하면, 상기 DPM(120)은 상기 두 번째 페이지(Code 1)의 스페어 영역에 저장된 프리로드 페이지에 대한 정보를 검색할 수 있다.
상기 두 번째 페이지(Code 1)의 스페어 영역에 저장된 프리로드 페이지에 대한 정보는 없으므로, 상기 두 번째 페이지(Code 1)에 상응하는 프리로드 페이지는 그 다음 페이지인 세 번째 페이지(Code2)가 될 수 있다.
프리로드 페이지 수가 2개이므로, 상기 DPM(120)은 상기 세 번째 페이지(Code 2)에 저장된 프리로드 페이지에 대한 정보를 한번 더 검색할 수 있다.
상기 세 번째 페이지(Code 2)에 저장된 프리로드 페이지에 대한 정보는 '3'이므로, 상기 프리로드 페이지에 대한 정보('3')에 상응하는 페이지는 네 번째 페이지(Code 3)임을 알 수 있다.
따라서 상기 DPM(120)은 상기 프리로드 페이지 수(예컨대, 2 개) 만큼 프리로드 할 페이지를 탐색하고, 탐색된 페이지(예컨대, Code 2 및 Code 3)를 상기 메인 메모리(110)에 프리로드 할 수 있다. 즉, 상기 두 번째 페이지(Code 1)은 로드되고, 2개의 탐색된 페이지(Code 2 및 Code 3)는 프리로드 될 수 있다.
예컨대, 도 5에서, 상기 DPM(120)에 의해 프리로드 될 페이지의 수가 2개이고, 다섯 번째 페이지(Code 4)가 로드 된다고 하면, 상기 DPM(120)은 상기 다섯 번째 페이지(Code 4)의 스페어 영역에 저장된 프리로드 페이지에 대한 정보를 검색할 수 있다.
상기 다섯 번째 페이지(Code 4)의 스페어 영역에 저장된 프리로드 페이지에 대한 정보는 없으므로, 상기 다섯 번째 페이지(Code 1)에 상응하는 프리로드 페이지는 그 다음 페이지인 여섯 번째 페이지(Code 5)가 될 수 있다.
프리로드 페이지 수가 2개이므로, 상기 DPM(120)은 상기 여섯 번째 페이지(Code 5)에 저장된 프리로드 페이지에 대한 정보를 한번 더 검색할 수 있다.
상기 여섯 번째 페이지(Code 5)에 저장된 프리로드 페이지에 대한 정보는 '11'이므로, 상기 프리로드 페이지에 대한 정보('11')에 상응하는 페이지는 열두 번째 페이지(Code 11, 미도시)임을 알 수 있다.
따라서 상기 DPM(120)은 상기 프리로드 페이지 수(예컨대, 2 개) 만큼 프리로드 할 페이지를 탐색하고, 탐색된 페이지(예컨대, Code 5 및 Code 11)를 상기 메인 메모리(110)에 프리로드 할 수 있다.
도 6은 본 발명의 실시 예에 따른 컨트롤 플로우를 이용한 페이지 프리로드 방법 중 프리로드 전의 상태를 설명하기 위한 블록도이다.
도 4 및 도 6을 참조하면, 상기 DPM(120)은 상기 메인 메모리(110)의 용량의 제한을 극복하기 위해 가상 메모리(150) 및 상기 가상 메모리 공간(150)과 상기 메인 메모리(110)를 매핑하기 위한 매핑 테이블(151)을 제공할 수 있다.
상기 매핑 테이블(151)에는 상기 가상 메모리(150)에 로드된 페이지가 물리적인 메모리인 상기 메인 메모리(110)에 실제로 로드 되었는지를 나타내는 유효정보(valid bit)가 더 저장될 수 있다.
상기 시스템(100)에 구비된 CPU(미도시)는 프로그램을 수행하기 위해 상기 가상 메모리(150)를 참조하게 되는데, 상기 가상 메모리 (150)에는 로드 되어 있지만 물리적 메모리인 상기 메인 메모리(110)에는 로드 되어 있지 않은 경우에는 페이지 폴트가 발생하게 된다.
도 6에 도시된 바와 같이, 프로그램(또는 프로그램을 수행하는 CPU)이 상기 가상 메모리 공간(150)에 접근하여 현재 수행될 페이지(page 2)를 참조하고자 하는 경우, 상기 매핑 테이블(151)에 저장된 상기 페이지(page 2)에 상응하는 유효정보가 '0'이므로 상기 페이지(page 2)는 상기 메인 메모리(110)에는 실제로 로드 되지 않은 상태이므로 페이지 폴트가 발생한다.
그러면, 상기 DPM(120)은 상기 비휘발성 메모리(140)로부터 상기 페이지(page 2)에 상응하는 페이지(Code 2를 포함하는 페이지)를 로드 할 수 있다. 이때, 상기 DPM(120)은 상기 비휘발성 메모리(140)로부터 상기 페이지(page 2)에 상응하는 페이지(Code 2를 포함하는 페이지) 및 상기 페이지(Code 2를 포함하는 페이지)의 소정의 영역(예컨대, 스페어 영역)에 저장된 프리로드 페이지에 대한 정보(예컨대, 프리로드 페이지의 어드레스)에 기초하여 상기 프리로드 페이지에 대한 정보에 상응하는 페이지(예컨대, Code 3을 포함하는 페이지)를 프리로드 할 수 있다. 프리로드 후의 상태는 도 7에 도시된다.
도 7은 본 발명의 실시 예에 따른 컨트롤 플로우를 이용한 페이지 프리로드 방법 중 프리로드 후의 상태를 설명하기 위한 블록도이다.
도 7을 참조하면, 상기 DPM(120)이 프리로드 하는 프리로드 페이지 수가 1개인 경우, 상기 DPM(120)은 프리로드 할 페이지를 탐색하고, 탐색된 페이지(예컨대, Code 3을 포함하는 페이지)를 프리로드 한다.
즉, 상기 DPM(120)은 상기 페이지(예컨대, Code 2를 포함하는 페이지)를 로드하면서, 상기 페이지(예컨대, Code 3을 포함하는 페이지)를 프리로드 할 수 있다.
따라서 상기 메인 메모리(110)에는 페이지들(Code 2를 포함하는 페이지 에 상응하는 page cache2 및 Code 3를 포함하는 페이지에 상응하는 page cache3)이 로드되고, 상기 매핑 테이블(151)의 정보도 도 7과 같이 변경된다.
따라서, 상기 프로그램이 현재 수행되는 코드(page 2)의 수행 후, 다음 코드를 참조하는 경우에는 페이지 폴트가 발생될 확률이 매우 줄어들 수 있다.
도 8은 본 발명의 실시 예에 따른 컨트롤 플로우를 이용한 페이지 프리로드 방법을 설명하기 위한 프로그램 수행경로 및 비휘발성 메모리에 저장된 코드를 나타낸다.
도 8a에 도시된 바와 같은 프로그램의 수행경로가 존재하는 경우, A, B, C, D, G, A의 수행경로가 빈번히 수행된다고 하면, 컴파일러가 생성하여 비휘발성 메모리에 저장하는 코드의 순서는 도 8b와 같다.
도 8b에 도시된 코드를 수행하면, 종래의 프리로드 방법에 의하면 DPM은 코 드 'G'를 로드 하면서, 코드 'E'를 프리로드 할 수 있다. 하지만, 코드 'G' 수행 후 코드 'A'가 빈번히 수행되므로 페이지 폴트 발생 빈도가 많게 된다.
하지만, 본 발명에 따른 컨트롤 플로우를 이용한 페이지 프리로드 방법에 의하면, 도 8c에 도시된 바와 같이 코드 'G' 수행 후, 가장 빈번히 수행되는 타겟 코드를 포함하는 페이지(코드 'A'를 포함하는 페이지)에 대한 정보가 소정의 영역(예컨대, 스페어 영역)에 저장되어 있으므로, DPM은 코드 'G'를 로드 하면서, 코드 'A'를 프리로드 할 수 있다. 따라서, 페이지 폴트 발생 빈도를 줄일 수 있다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
상술한 바와 같이 본 발명에 따른 하드디스크 드라이브의 미디어 테스트 방법은 현재 수행되고 있는 코드 페이지 다음에 수행될 페이지에 대한 정보를 추출하여, 프리로드된 페이지의 적중률(hit ratio)를 높여서, 프로그램의 수행시간을 단축할 수 있는 효과가 있다.
특히, 본 발명에 따른 컨트롤 플로우를 이용한 페이지 프리로드 방법은 일반적으로 유사한 경로를 반복적으로 수행하는 프로그램(예컨대, 부팅 프로그램, 또는 OS)의 수행시간을 줄이는데 뛰어난 효과가 있다.

Claims (14)

  1. 적어도 하나의 페이지로 구성되는 제1프로그램 코드의 각 페이지별 프리로드 페이지 정보를 추출하고, 상기 프로그램 코드 및 추출된 상기 프리로드 페이지에 대한 정보를 포함하는 제2프로그램 코드를 생성하는 단계;
    생성된 제2프로그램 코드를 비휘발성 메모리에 저장하는 단계; 및
    상기 비휘발성 메모리에 저장된 상기 제2프로그램 코드의 페이지 중 어느 하나의 페이지를 메인메모리에 로드할 때, 상기 어느 하나의 페이지에 저장된 상기 프리로드 페이지에 대한 정보에 기초하여 상기 메모리에 저장된 페이지 중 적어도 하나의 페이지를 상기 메인메모리에 프리로드 하는 단계를 구비하는 컨트롤 플로우를 이용한 페이지 프리로드 방법.
  2. 제 1항에 있어서, 제2프로그램 코드를 생성하는 단계는,
    프리로드 페이지 추출기가 상기 제1프로그램 코드를 페이지 단위로 분리하고, 분리된 각 페이지에 포함된 브랜치를 검색하는 단계;
    테스트 프로그램으로부터 출력된 프로파일링 정보에 기초하여 검색된 브랜치의 타켓 페이지 중 적중률이 높은 페이지를 상기 브랜치를 포함하는 페이지의 프리로드 페이지로 선정하는 단계; 및
    선정된 상기 프리로드 페이지에 대한 정보를 상기 브랜치를 포함하는 페이지의 소정의 영역에 저장하는 단계를 구비하는 컨트롤 플로우를 이용한 페이지 프리 로드 방법.
  3. 제 2항에 있어서, 상기 비휘발성 메모리는,
    낸드형 플래시 메모리인 컨트롤 플로우를 이용한 페이지 프리로드 방법.
  4. 제 3항에 있어서, 상기 소정의 영역은,
    상기 브랜치를 포함하는 페이지의 스페어 영역인 컨트롤 플로우를 이용한 페이지 프리로드 방법.
  5. 제 4항에 있어서, 상기 프리로드 페이지에 대한 정보는,
    상기 프리로드 페이지의 어드레스인 컨트롤 플로우를 이용한 페이지 프리로드 방법.
  6. 제 1항에 있어서, 상기 어느 하나의 페이지에 저장된 상기 프리로드 페이지에 대한 정보에 기초하여 상기 메모리에 저장된 페이지 중 적어도 하나의 페이지를 상기 메인 메모리에 프리로드 하는 단계는,
    DPM(demand paging module)이 상기 프리로드 페이지에 대한 정보에 기초하여 미리 결정된 프리로드 페이지 수 만큼 프리로드 할 페이지를 탐색하는 단계; 및
    탐색된 페이지를 상기 메인 메모리에 프리로드 하는 단계를 구비하는 컨트롤 플로우를 이용한 페이지 프리로드 방법.
  7. 제 6항에 있어서, 상기 프리로드 할 페이지를 탐색하는 단계는,
    상기 프리로드 페이지 수 만큼 상기 프리로드 페이지에 대한 정보에 상응하는 페이지에 저장된 프리로드 페이지에 대한 정보를 검색하는 단계를 구비하는 컨트롤 플로우를 이용한 페이지 프리로드 방법.
  8. 제 1항 내지 제 7항 중 어느 한 항에 기재된 방법을 수행하기 위한 프로그램을 기록한 기록매체.
  9. 제1프로그램 코드를 페이지 단위로 분리하고, 분리된 각 페이지에 포함된 브랜치를 검색하는 브랜치 매니저; 및
    테스트 프로그램으로부터 출력된 프로파일링 정보에 기초하여 상기 브랜치 매니저가 검색한 브랜치의 타켓 페이지 중 적중률이 높은 페이지를 상기 브랜치를 포함하는 페이지의 프리로드 페이지로 선정하는 프리로드 정보 추출기를 구비하는 프리로드 페이지 추출장치.
  10. 제 9항에 있어서, 상기 프리로드 페이지 추출장치는,
    상기 프리로드 정보 추출기가 선정한 상기 프리로드 페이지에 대한 정보를 상기 분리된 각 페이지의 소정의 영역에 포함하는 제2프로그램 코드를 생성하는 이미지 생성기를 더 구비하는 프리로드 페이지 추출장치.
  11. 메인 메모리;
    적어도 하나의 페이지로 구성되는 제1프로그램 코드 및 상기 제1프로그램 코드의 각 페이지별 프리로드 페이지 정보를 포함하는 제2프로그램 코드가 저장된 비휘발성 메모리; 및
    상기 비휘발성 메모리에 저장된 상기 제2프로그램 코드 중 적어도 하나의 페이지를 상기 메인 메모리에 로드하기 위한 DPM을 구비하며,
    상기 DPM은 상기 비휘발성 메모리에 저장된 상기 제2프로그램 코드의 페이지 중 어느 하나의 페이지를 상기 메인 메모리에 로드할 때, 상기 어느 하나의 페이지에 저장된 상기 프리로드 페이지에 대한 정보에 기초하여 상기 비휘발성 메모리에 저장된 페이지 중 적어도 하나의 페이지를 상기 메인메모리에 프리로드 하는 시스템.
  12. 제 11항에 있어서, 상기 DPM은,
    상기 프리로드 페이지에 대한 정보에 기초하여 미리 결정된 프리로드 페이지 수 만큼 프리로드 할 페이지를 탐색하고, 탐색된 페이지를 상기 메인 메모리에 프리로드 하는 시스템.
  13. 제 12항에 있어서, 상기 DPM은,
    상기 소정의 프리로드 페이지 수 만큼 상기 프리로드 페이지에 대한 정보에 상응하는 페이지에 저장된 프리로드 페이지에 대한 정보를 검색하는 시스템.
  14. 제 11항에 있어서, 상기 시스템은,
    휴대용 단말기를 포함하는 시스템.
KR1020070008903A 2007-01-29 2007-01-29 컨트롤 플로우를 이용한 페이지 프리로드 방법 및 그시스템 KR100866627B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020070008903A KR100866627B1 (ko) 2007-01-29 2007-01-29 컨트롤 플로우를 이용한 페이지 프리로드 방법 및 그시스템
US11/833,003 US8732413B2 (en) 2007-01-29 2007-08-02 Method and system for preloading page using control flow

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070008903A KR100866627B1 (ko) 2007-01-29 2007-01-29 컨트롤 플로우를 이용한 페이지 프리로드 방법 및 그시스템

Publications (2)

Publication Number Publication Date
KR20080070953A true KR20080070953A (ko) 2008-08-01
KR100866627B1 KR100866627B1 (ko) 2008-11-03

Family

ID=39669286

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070008903A KR100866627B1 (ko) 2007-01-29 2007-01-29 컨트롤 플로우를 이용한 페이지 프리로드 방법 및 그시스템

Country Status (2)

Country Link
US (1) US8732413B2 (ko)
KR (1) KR100866627B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103455353A (zh) * 2013-08-30 2013-12-18 广州市动景计算机科技有限公司 网页数据的请求方法及装置

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2456019A (en) * 2007-12-31 2009-07-01 Symbian Software Ltd Loading dynamic link libraries in response to an event
US20100030994A1 (en) * 2008-08-01 2010-02-04 Guzman Luis F Methods, systems, and computer readable media for memory allocation and deallocation
US8935589B2 (en) * 2009-06-02 2015-01-13 Silicon Motion, Inc. Controller and data access method for flash memories
TWI415130B (zh) * 2009-06-02 2013-11-11 Silicon Motion Inc 快閃記憶體之控制器以及於快閃記憶體存取資料的方法
US9164676B2 (en) * 2011-11-30 2015-10-20 International Business Machines Corporation Storing multi-stream non-linear access patterns in a flash based file-system
KR101955978B1 (ko) * 2012-05-23 2019-03-08 엘지전자 주식회사 영상 표시 장치 및 영상 표시 장치의 메모리 관리 방법
CN103744862B (zh) * 2013-12-06 2017-02-22 长春吉大工易软件有限公司 一种基于Sencha Touch的移动办公应用的预加载优化方法
CN106055367B (zh) * 2016-06-01 2021-06-18 腾讯科技(深圳)有限公司 一种脚本文件载入方法及装置
CN107145333B (zh) * 2017-04-21 2020-04-14 建荣半导体(深圳)有限公司 数据操作方法及其装置、应用、单片机及嵌入式系统
CN107832100B (zh) * 2017-10-27 2020-12-04 平安普惠企业管理有限公司 一种apk插件的加载方法及其终端

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2102883A1 (en) * 1993-02-26 1994-08-27 James W. Arendt System and method for lazy loading of shared libraries
JPH07152574A (ja) 1993-11-26 1995-06-16 Hitachi Ltd プログラムローディング方式
US5659752A (en) * 1995-06-30 1997-08-19 International Business Machines Corporation System and method for improving branch prediction in compiled program code
US5764994A (en) * 1996-09-16 1998-06-09 International Business Machines Corporation Method and system for compressing compiled microcode to be executed within a data processing system
US6226667B1 (en) * 1998-05-26 2001-05-01 International Business Machines Corporation Method and apparatus for preloading data in a distributed data processing system
US6718543B2 (en) * 1999-11-08 2004-04-06 Hewlett-Packard Development Company, L.P. Method and apparatus for optimization of the performance of an application program in a computer system while preserving the system behavior
US6684305B1 (en) 2001-04-24 2004-01-27 Advanced Micro Devices, Inc. Multiprocessor system implementing virtual memory using a shared memory, and a page replacement method for maintaining paged memory coherence
US20030236825A1 (en) 2002-06-20 2003-12-25 Kulkarni Suhas Sudhakar System, method and computer readable medium for transferring and rendering a web page
US6910106B2 (en) 2002-10-04 2005-06-21 Microsoft Corporation Methods and mechanisms for proactive memory management
WO2004072872A1 (en) * 2003-02-12 2004-08-26 Research In Motion Limited An apparatus and methods for managing data used by a mobile device
US7502901B2 (en) * 2003-03-26 2009-03-10 Panasonic Corporation Memory replacement mechanism in semiconductor device
US7290255B2 (en) * 2004-01-14 2007-10-30 International Business Machines Corporation Autonomic method and apparatus for local program code reorganization using branch count per instruction hardware
US20050243640A1 (en) * 2004-04-30 2005-11-03 Rudelic John C Storing code in fragments
JP2006048422A (ja) 2004-08-05 2006-02-16 Matsushita Electric Ind Co Ltd ローディング装置、ローディング方法、ローディングプログラム及びローディングプログラムを記録したコンピュータ読み取り可能な記録媒体
US20060075394A1 (en) * 2004-10-01 2006-04-06 Tatsuya Iwamoto Dynamic loading and unloading for processing unit
KR100755701B1 (ko) * 2005-12-27 2007-09-05 삼성전자주식회사 내장형 시스템을 위한 요구 페이징 장치 및 방법
KR100772863B1 (ko) * 2006-01-13 2007-11-02 삼성전자주식회사 요구 페이징 기법을 적용한 시스템에서 페이지 교체 수행시간을 단축시키는 방법 및 장치
US20070260862A1 (en) * 2006-05-03 2007-11-08 Mcfarling Scott Providing storage in a memory hierarchy for prediction information

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103455353A (zh) * 2013-08-30 2013-12-18 广州市动景计算机科技有限公司 网页数据的请求方法及装置
CN103455353B (zh) * 2013-08-30 2017-11-14 广州市动景计算机科技有限公司 网页数据的请求方法及装置

Also Published As

Publication number Publication date
US8732413B2 (en) 2014-05-20
KR100866627B1 (ko) 2008-11-03
US20080184006A1 (en) 2008-07-31

Similar Documents

Publication Publication Date Title
KR100866627B1 (ko) 컨트롤 플로우를 이용한 페이지 프리로드 방법 및 그시스템
US9530499B2 (en) Semiconductor memory device and information processing device
US7302517B2 (en) Apparatus and method for controlling execute-in-place (XIP) in serial flash memory, and flash memory chip using the same
CN101421701B (zh) 用于引导非易失性存储器的方法、设备和系统
US8205070B2 (en) Device bootup from a NAND-type non-volatile memory
US7953953B2 (en) Method and apparatus for reducing page replacement time in system using demand paging technique
CN102713826A (zh) 经由位图的树表示分配文件存储的方法和设备
CN104346294A (zh) 基于多级缓存的数据读/写方法、装置和计算机系统
US10168926B2 (en) Method of operating data storage device and method of operating data processing system including same
US20130268717A1 (en) Emulated electrically erasable memory having sector management
US7822940B2 (en) Apparatus and method for managing mapping information of nonvolatile memory
CN113253912B (zh) 存储器系统及其操作方法
US20210255956A1 (en) Microprocessor-based system memory manager hardware accelerator
CN101246429A (zh) 将闪存模块用作主存储器的电子系统和相关系统引导方法
KR101123335B1 (ko) 해시 인덱스 구성 방법과 그 장치, 및 상기 장치를 구비하는 데이터 저장 장치, 및 상기 방법을 구현하는 프로그램이 기록된 기록매체
US9158545B2 (en) Looking ahead bytecode stream to generate and update prediction information in branch target buffer for branching from the end of preceding bytecode handler to the beginning of current bytecode handler
US8068363B2 (en) Flash memory apparatus and read operation control method therefor
US9069480B2 (en) Method of creating target storage layout table referenced for partitioning storage space of storage device and related electronic device and machine-readable medium
US10019199B2 (en) Controller coupled to semiconductor memory device and operating method thereof
CN112965661A (zh) 数据存储方法、装置、设备及存储介质
CN112328630B (zh) 数据查询方法、装置、设备及存储介质
US11416163B2 (en) Systems and methods for dynamic logical block address distribution between multicores
CN114138176A (zh) Nor Flash的擦除、升级方法及装置、计算机设备和存储介质
CN104298471A (zh) 一种高速缓存的数据写入方法及装置
US20200257630A1 (en) Information processing apparatus, information processing method, and computer readable medium

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: 20120925

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20130930

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20141001

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20151001

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160930

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180927

Year of fee payment: 11