KR102400977B1 - 프로세서를 통한 페이지 폴트 처리 방법 - Google Patents

프로세서를 통한 페이지 폴트 처리 방법 Download PDF

Info

Publication number
KR102400977B1
KR102400977B1 KR1020200065330A KR20200065330A KR102400977B1 KR 102400977 B1 KR102400977 B1 KR 102400977B1 KR 1020200065330 A KR1020200065330 A KR 1020200065330A KR 20200065330 A KR20200065330 A KR 20200065330A KR 102400977 B1 KR102400977 B1 KR 102400977B1
Authority
KR
South Korea
Prior art keywords
page
bit
fault
processor
table entry
Prior art date
Application number
KR1020200065330A
Other languages
English (en)
Other versions
KR20210147704A (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 KR1020200065330A priority Critical patent/KR102400977B1/ko
Priority to US16/950,370 priority patent/US11436150B2/en
Priority to EP20208142.8A priority patent/EP3916567B1/en
Priority to CN202011306819.2A priority patent/CN113742115B/zh
Publication of KR20210147704A publication Critical patent/KR20210147704A/ko
Application granted granted Critical
Publication of KR102400977B1 publication Critical patent/KR102400977B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • 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
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/102Error in check bits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • 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
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • 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/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction

Landscapes

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

Abstract

본 발명은 프로세서와 운영체제를 포함하는 시스템에서 어플리케이션 동작에 따라 요구 페이징을 수행하는 단계 및 상기 프로세서에서 상기 요구 페이징에 대응하여 데이터를 메모리로 불러오는 단계를 포함하는 페이지 폴트 처리 방법을 제공한다.

Description

프로세서를 통한 페이지 폴트 처리 방법{METHOD FOR PROCESSING PAGE FAULT BY A PROCESSOR}
본 발명은 프로세서를 통한 페이지 폴트 처리 방법을 제공한다.
페이지 기반 가상 메모리 기법을 사용하는 현대 컴퓨터 시스템 환경에서 요구 페이징 기법은 메모리를 효율적으로 사용하기 위해 널리 사용되는 기법이다. 통상적으로 사용되는 요구 페이징 기법은 요구 페이징을 적용할 가상주소에 해당하는 페이지 테이블 엔트리(page table entry)의 내용을 요구 페이징이 발생할 수 있도록 설정한다.
한편 필요에 따라 페이지 테이블 엔트리의 여유 비트 공간에 부가 정보(예를 들어 swap offset)를 저장할 수 있으나, 이는 프로세서(예를 들어 CPU)에서 해석하지 못하며 운영체제만 해석할 수 있다. 따라서 페이지 폴트가 발생하는 경우 프로세서는 운영체제가 미리 정해둔 예외처리 루틴에 따라 동작하며, 운영체제는 페이지 폴트가 발생한 가상 주소의 유효성을 검사하고, 유효한 영역의 가상주소일 경우, 해당 주소에 대응되는 데이터 적재 동작을 수행한다.
이 같은 운영체제 기반의 요구 페이징 기법은 저장장치 입출력 속도가 느린 경우에는 전체 페이지 폴트 지연에 큰 영향을 미치지 않는다. 그러나, 저장장치의 속도가 급격하게 빨라진 현재에는 전체 페이지 폴트 지연에서 운영체제 내 페이지 폴트 처리로 인한 지연 시간이 미치는 영향이 커지고 있는 실정이다.
본 발명은 발생된 페이지 폴트를 프로세서와 같은 하드웨어에서 직접적으로 처리함으로써 페이징 과정에서 저장장치 데이터 접근 시간을 단축시키며, 운영체제에서의 요구 페이징 처리로 인해 발생하는 프로세서 내 자원 오염을 줄일 수 있는 방법을 제공한다.
본 발명은 프로세서와 운영체제를 포함하는 시스템에서 어플리케이션 동작에 따라 요구 페이징을 수행하는 단계 및 상기 프로세서에서 상기 요구 페이징에 대응하여 데이터를 메모리로 불러오는 단계를 포함하는 페이지 폴트 처리 방법을 제공한다.
일 실시예에 따르면, 상기 데이터를 메모리로 불러오는 단계는 상기 프로세서를 구성하는 기억 관리부(memory management unit)에서 페이지 테이블을 탐색하는 단계, 페이지 테이블 엔트리(page table entry)의 present 비트를 확인하는 단계, 상기 present 비트가 기설정된 제1 값인 경우, 상기 페이지 테이블 엔트리의 LBA(logical block address) 비트를 확인하는 단계 및 상기 LBA 비트가 기설정된 제2 값인 경우, 상기 프로세서를 구성하는 폴트 처리부를 통해 페이지 폴트를 처리하는 단계를 포함할 수 있다.
일 실시예에 따르면, 상기 페이지 폴트를 처리하는 단계는 상기 폴트 처리부를 구성하는 페이지 미스 핸들러(page miss handler)에게 페이지 폴트와 관련된 정보를 전달하는 단계, 상기 페이지 폴트와 관련된 정보에 기반하여 PMSHR(page miss status holding registers)를 탐색하는 단계, 상기 PMSHR에 저장된 정보에 기반하여 상기 페이지 폴트를 처리하기 위한 페이지를 할당하는 단계, 상기 페이지 미스 핸들러에서 상기 페이지 테이블 엔트리를 갱신하는 단계 및 상기 페이지 미스 핸들러에서 상기 기억 관리부로 페이지 폴트 처리 완료 메시지를 전송하는 단계를 포함할 수 있다.
일 실시예에 따르면, 페이지 폴트 처리 방법은 상기 페이지 폴트를 처리하기 위한 페이지를 할당하는 단계 이후에, 상기 페이지 미스 핸들러에서 호스트 제어부로 I/O 요청을 전송하는 단계, 상기 호스트 제어부에서 큐 레지스터를 통해 입출력을 처리하는 단계 및 상기 호스트 제어부에서 상기 페이지 미스 핸들러로 입출력 완료 메시지를 전송하는 단계를 더 포함할 수 있다.
일 실시예에 따르면, 페이지 폴트 처리 방법은 상기 호스트 제어부에서 상기 I/O 요청에 대해 완료 큐의 head 주소를 스누핑(snooping)하여 상기 페이지 미스 핸들러로 상기 입출력 완료 메시지 전송 여부를 확인하는 단계를 더 포함할 수 있다.
일 실시예에 따르면, 상기 페이지 테이블 엔트리는 상기 present 비트에 대한 정보, 상기 LBA 비트에 대한 정보, 소켓 아이디에 대한 정보, 디바이스 아이디에 대한 정보, 논리 블록 주소에 대한 정보를 포함할 수 있다.
일 실시예에 따르면, 페이지 폴트 처리 방법은 상기 present 비트가 기설정된 제3 값인 경우, 페이지 프레임 번호를 반환하는 단계, 상기 LBA 비트가 기설정된 제4 값인 경우, 운영체제 페이지 폴트 핸들러를 호출하는 단계, 운영체제 메모리 할당자로부터 페이지를 할당하는 단계, 상기 페이지를 페이지 캐시(cache)에 삽입하는 단계, 파일 시스템을 통해 논리 블록 주소를 받아오는 단계, 블록 계층 처리 단계 및 디바이스 드라이버를 통해 I/O 요청을 하고 입출력 완료 시 상기 페이지 테이블 엔트리를 갱신하는 단계를 더 포함할 수 있다.
일 실시예에 따르면, 페이지 폴트 처리 방법은 상기 운영체제에서 주기적으로 커널 스레드를 호출하는 단계, 운영체제 메모리 할당자로부터 페이지를 할당 받는 단계, 할당 받은 페이지의 DMA(direct memory access) 매핑을 수행하는 단계 및 상기 할당 받은 페이지를 프리 페이지 큐에 삽입함으로써 프리 페이지를 충전하는 단계를 더 포함할 수 있다.
일 실시예에 따르면, 페이지 폴트 처리 방법은 상기 운영체제에서 주기적으로 페이지 테이블을 탐색하는 단계, 상기 운영체제에서 페이지 테이블 엔트리의 LBA 비트와 present 비트를 확인하는 단계, 상기 LBA 비트와 present 비트에 기반하여 상기 페이지 테이블 엔트리에 해당하는 페이지를 캐시 또는 LRU 리스트에 삽입하는 단계 및 페이지 관련 메타 데이터를 갱신하는 단계를 더 포함할 수 있다.
본 발명은 페이지 테이블을 탐색하고, 페이지 테이블 엔트리(page table entry)의 present 비트를 확인하며, 상기 present 비트가 기설정된 제1 값인 경우, 상기 페이지 테이블 엔트리의 LBA(logical block address) 비트를 확인하는 기억 관리부(memory management unit) 및 상기 LBA 비트가 기설정된 제2 값인 경우, 페이지 폴트를 처리하는 폴트 처리부를 포함하는 프로세서를 제공한다.
일 실시예에 따르면, 상기 폴트 처리부는 페이지 폴트와 관련된 정보를 수신하고, 상기 페이지 폴트와 관련된 정보에 기반하여 PMSHR(page miss status holding registers)를 탐색하며, 상기 PMSHR에 저장된 정보에 기반하여 상기 페이지 폴트를 처리하기 위한 페이지를 할당하고, 상기 페이지 테이블 엔트리를 갱신하며, 상기 기억 관리부로 페이지 폴트 처리 완료 메시지를 전송하는 페이지 미스 핸들러를 포함할 수 있다.
일 실시예에 따르면, 상기 폴트 처리부는 상기 페이지 미스 핸들러로부터 I/O 요청을 수신하고, 큐 레지스터를 통해 입출력을 처리하며, 상기 페이지 미스 핸들러로 입출력 완료 메시지를 전송하는 호스트 제어부를 더 포함할 수 있다.
일 실시예에 따르면, 상기 호스트 제어부는 상기 I/O 요청에 대해 완료 큐의 head 주소를 스누핑(snooping)하여 상기 페이지 미스 핸들러로 상기 입출력 완료 메시지 전송 여부를 확인할 수 있다.
일 실시예에 따르면, 상기 페이지 테이블 엔트리는 상기 present 비트에 대한 정보, 상기 LBA 비트에 대한 정보, 소켓 아이디에 대한 정보, 디바이스 아이디에 대한 정보, 논리 블록 주소에 대한 정보를 포함할 수 있다.
본 발명에서 개시하고 있는 일 실시예에 따르면, 프로세서를 기반으로 가상메모리를 통해 저장장치 데이터에 접근하는 경우의 지연시간이 감소될 수 있으며 응답 속도가 증가할 수 있다.
뿐만 아니라, 본 발명에서 개시하고 있는 일 실시예에 따르면, 요구 페이징의 처리 시간이 감소할 수 있으며, 요구 페이징 처리 과정에서 운영체제의 개입이 현저하게 줄어들어 운영체제의 개입으로 인해 발생했던 프로세서 내 마이크로 아키텍처 자원 오염이 감소할 수 있다.
도 1은 본 발명의 일 실시예에 따른 페이지 폴트 처리 방법에 대한 순서도이다.
도 2는 본 발명의 일 실시예에 따른 프로세서의 페이지 폴트 처리 방법에 대한 순서도이다.
도 3은 본 발명의 일 실시예에 따른 운영체제의 페이지 폴트 처리 방법에 대한 순서도이다.
도 4는 본 발명의 일 실시예에 따른 페이지 테이블 엔트리의 구조를 나타낸 도면이다.
도 5는 본 발명의 일 실시예에 따른 큐 레지스터의 구조를 나타낸 도면이다.
도 6은 본 발명의 일 실시예에 따른 페이지 미스 핸들러의 동작을 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시예에 따른 호스트 제어부의 동작을 설명하기 위한 도면이다.
도 8a는 본 발명의 일 실시예에 따른 페이지 할당 커널 스레드를 설명하기 위한 도면이다.
도 8b는 본 발명의 일 실시예에 따른 요구 페이징 기법 후처리 커널 스레드를 설명하기 위한 도면이다.
도 9 및 도 10은 종래 기술에 따른 경우 대비 본 발명에 따른 경우 쓰루풋(throughput) 향상 정도를 나타낸 그래프이다. 도 11은 본 발명에 따른 경우와 종래 기술에 따른 경우 쓰루풋과 자원 오염도를 비교한 그래프이다.
도 12는 본 발명의 일 실시예에 따른 프로세서의 구조를 나타낸 도면이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면을 참조하여 상세하게 설명하도록 한다. 그러나 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재 항목들의 조합 또는 복수의 관련된 기재 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급될 때에는 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
명세서 및 청구범위 전체에서, 어떤 부분이 어떤 구성 요소를 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성 요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있다는 것을 의미한다.
도 1은 본 발명의 일 실시예에 따른 페이지 폴트 처리 방법에 대한 순서도이다. 일 실시예에 따르면, 도 1에서 도시하고 있는 순서도는 도 12에서 도시하고 있는 프로세서에 의해 수행될 수 있다.
일 실시예에 따르면, 특정 어플리케이션이 동작하는 경우 가상메모리에 접근할 수 있으며, 프로세서는 S110 단계를 통해 기억 관리부(memory management unit)에서 페이지 테이블을 탐색할 수 있다. 다양한 실시예에 따르면, S120 단계에서 프로세서를 페이지 테이블 엔트리에 포함된 present 비트가 기설정된 제1 값인지 여부를 확인할 수 있다. 예를 들어 상기 제1 값은 0일 수 있다. 페이지 테이블 엔트리의 구체적인 구조에 대해서는 도 4에 대한 설명을 통해 후술한다.
일 실시예에 따르면, present 비트가 제1 값이 아닌 경우(예를 들어 present 비트가 1인 경우) 프로세서는 S130 단계를 통해 페이지 프레임 번호를 반환할 수 있다. 다양한 실시예에 따르면, present 비트가 제1 값인 경우 프로세서는 S140 단계를 통해 LBA(logical block address) 비트가 제2 값인지 여부를 확인할 수 있다. 예를 들어 상기 제2 값은 1일 수 있다.
일 실시예에 따르면, LBA 비트가 제2 값인 경우(예를 들어 LBA 비트가 1인 경우) 프로세서는 S150 단계를 통해 직접적으로 페이지 폴트를 처리할 수 있다. 다양한 실시예에 따르면, LBA 비트가 제2 값이 아닌 경우(예를 들어 LBA 비트가 0인 경우) S160 단계를 통해 페이지 폴트 예외가 발생했음을 확인할 수 있으며, 운영체제를 통해 페이지 폴트를 처리할 수 있다. S150 단계에 대한 구체적인 설명은 도 2를 통해 후술하며, S160 단계에 대한 구체적인 설명은 도 3을 통해 후술한다.
도 2는 본 발명의 일 실시예에 따른 프로세서의 페이지 폴트 처리 방법에 대한 순서도이다. 일 실시예에 따르면, 도 2에서 도시하고 있는 순서도는 도 12에서 도시하고 있는 프로세서에 의해 수행될 수 있다.
일 실시예에 따르면, 프로세서는 S210 단계를 통해 페이지 미스 핸들러에게 페이지 폴트 정보를 전달할 수 있다. 예를 들어, 프로세서는 페이지 테이블 엔트리 주소, 페이지 테이블 엔트리에 적재했던 LBA 정보를 페이지 미스 핸들러로 전달할 수 있다. 다양한 실시예에 따르면, 프로세서는 S220 단계를 통해 PMSHR(page miss status holding registers) 구조를 탐색할 수 있다.
일 실시예에 따르면, PMSHR은 현재 처리되고 있는 페이지 폴트(또는 미스)와 관련된 정보를 저장하는 테이블로 레지스터로 구성되며 content addressable memory의 일종일 수 있다. 다양한 실시예에 따르면, 각 PMSHR의 각 엔트리는 다음과 같은 값을 가질 수 있다.
- PTE(page table entry) address : 처리하는 페이지 폴트에 대해 해당 PTE가 저장되어 있는 주소값으로 페이지 폴트 처리 후 PTE 값을 업데이트하는데 이용될 수 있다.
- PMD address : 처리하는 페이지 폴트에 대한 PTE의 상위레벨 엔트리 주소이다.
- PUD address : 처리하는 페이지 폴트에 대한 PMD의 상위레벨 엔트리 주소이다.
- Device ID : 프로세서를 구성하는 폴트 처리부 내의 인덱스 값으로 해당 페이지 폴트가 처리되어야 할 저장장치의 인덱스를 포함하고 있다.
- LBA : 해당 페이지 폴트에 대해 접근할 저장장치 내 주소를 의미한다.
- PFN(page frame number) : 해당 페이지 폴트가 처리된 후 PTE 값 업데이트에 사용되는 정보로, 입출력 요청을 위해 할당 받은 페이지의 페이지 프레임 넘버를 의미한다.
일 실시예에 따르면, PMSHR의 각 엔트리는 동일한 페이지 폴트에 대해 하나의 엔트리만을 가지며, 각 페이지 폴트 별로 하나의 저장장치 입출력 동작을 수행할 수 있다. 다양한 실시예에 따르면, 다수의 CPU 코어에서 동일한 가상주소에 대해 페이지 폴트가 발생하는 경우, 제일 처음 페이지 폴트가 발생한 경우에만 PMSHR 내에 엔트리를 생성하며, 추후 발생하는 중복된 페이지 폴트는 엔트리를 추가로 생성하지 않을 수 있다.
일 실시예에 따르면, 프로세서는 S230 단계를 통해 free page queue에서 페이지를 할당할 수 있다. 다양한 실시예에 따르면, 프로세서는 S240 단계를 통해 호스트 제어부에 I/O 요청을 전송할 수 있다. 예를 들어 상기 호스트 제어부는 NVMe 호스트 제어부일 수 있다.
일 실시예에 따르면, S250 단계에서 큐 레지스터를 통해 입출력 처리를 수행할 수 있다. 다양한 실시예에 따르면, S250 단계에서 NVMe queue descriptor register를 통해 입출력 처리를 수행할 수 있다.
일 실시예에 따르면, S260 단계에서 페이지 미스 핸들러에게 입출력 완료 메시지를 전송할 수 있으며, S270 단계에서 페이지 미스 핸들러가 페이지 테이블 엔트리를 갱신할 수 있다. 다양한 실시예에 따르면, S280 단계에서 페이지 미스 핸들러는 기억 관리부에 페이지 폴트 처리 완료 메시지를 전송할 수 있다.
도 3은 본 발명의 일 실시예에 따른 운영체제의 페이지 폴트 처리 방법에 대한 순서도이다. 일 실시예에 따르면, 도 3에서 도시하고 있는 순서도는 운영체제에 의해 수행될 수 있다.
일 실시예에 따르면, 도 1의 S160 단계에 의해 페이지 폴트 예외(exception)이 발생하는 경우, 운영체제는 S310 단계를 통해 운영체제 페이지 폴트 핸들러를 호출할 수 있다. 다양한 실시예에 따르면, 운영체제는 S320 단계를 통해 운영체제 메모리 할당자로부터 페이지를 할당할 수 있다.
일 실시예에 따르면, 운영체제는 S330 단계를 통해 할당된 페이지를 페이지 캐시(cache) 또는 LRU(least recently used) 리스트에 삽입할 수 있다. 다양한 실시예에 따르면, 운영체제는 S333 단계를 통해 파일 시스템을 통한 LBA를 확인할 수 있으며, S335 단계를 통해 블록 계층을 처리할 수 있다.
일 실시예에 따르면, 운영체제는 S340 단계를 통해 디바이스 드라이버를 통해 입출력 요청을 수행할 수 있으며, S350 단계를 통해 운영체제는 입출력 완료 시 페이지 테이블 엔트리 내용을 갱신할 수 있다. 예를 들어 상기 디바이스 드라이버는 NVMe 디바이스 드라이버일 수 있다.
도 4는 본 발명의 일 실시예에 따른 페이지 테이블 엔트리의 구조를 나타낸 도면이다. 일 실시예에 따르면, 프로세서가 직접적으로 페이지 폴트를 처리하기 위해 페이지 테이블 엔트리 구조는 도 4와 같을 수 있다.
일 실시예에 따르면, present 비트가 0이고 LBA 비트가 1인 경우 프로세서는 페이지 폴트 예외를 발생시키지 않고 프로세서가 페이지 테이블 엔트리의 상위 비트 값(SID, Dev.ID 등)을 활용하여 페이지 폴트를 직접 처리할 수 있다. 다양한 실시예에 따르면, present 비트가 1인 경우 상위 비트 값(SID, Dev.ID 등)은 운영체제에 의해 관리될 수 있다.
일 실시예에 따르면, SID(socket ID)는 페이지 폴트를 처리해야 하는 프로세서 번호를 의미할 수 있다. 다양한 실시예에 따르면, Dev.ID는 프로세서가 처리해야 하는 페이지 폴트가 발생한 경우, 해당 데이터를 저장하고 있는 저장장치 번호를 의미할 수 있다. Logical Block Address는 해당 페이지의 데이터가 저장된 저장장치 상에서의 논리 주소를 의미하며 해당 주소는 추후 저장장치 I/O 명령어 전송시 이용될 수 있다.
일 실시예에 따르면, 운영체제는 메모리 매핑을 수행할 때 각 페이지의 페이지 테이블 엔트리에 해당 페이지의 저장장치 정보(예를 들어 SID, Dev.ID)와 저장장치내의 위치 정보(예를 들어 LBA)를 페이지 테이블 엔트리에 기록할 수 있다. 다양한 실시예에 따르면, present 비트를 0으로 설정하고 LBA 비트를 1로 설정하여 해당 가상주소가 프로세서의 기억 관리부를 통해 주소변환이 일어날 때, 폴트 처리부가 해당 페이지 테이블 엔트리의 정보를 전달하여 페이지 폴트를 처리할 수 있다.
도 5는 본 발명의 일 실시예에 따른 큐 레지스터의 구조를 나타낸 도면이다.
일 실시예에 따르면, 호스트 제어부는 NVMe 프로토콜에 기반한 저장장치일 수 있다. 다양한 실시예에 따르면, NVMe 프로토콜 처리를 위해 폴트 처리부는 도 5와 같은 큐 레지스터를 포함할 수 있다. 도 5는 한 개의 디바이스에 해당하는 정보를 나타내며, 도 5와 같은 큐 레지스터는 디바이스의 개수에 따라 다수 개 존재할 수 있다.
도 6은 본 발명의 일 실시예에 따른 페이지 미스 핸들러의 동작을 설명하기 위한 도면이다. 일 실시예에 따르면 도 6에서 도시하고 있는 동작은 도 12에서 도시하고 있는 페이지 미스 핸들러에 의해 수행될 수 있다.
일 실시예에 따르면, 페이지 폴트 발생시 프로세서는 PMSHR을 탐색할 수 있으며(도 6의 ①), 발생한 페이지 폴트가 새로운 페이지 폴트로 판단되는 경우 프로세서는 PMSHR 엔트리를 할당 받을 수 있다.(도 6의 ②) 다양한 실시예에 따르면 페이지 폴트가 발생한 프로세서의 기억 관리부로부터 필요한 정보를 받아 PMSHR 엔트리를 생성할 수 있다. 도 6에 개시된 PFN은 해당 페이지 폴트가 처리되는 경우 데이터를 담을 페이지 프레임 번호를 의미할 수 있다.
일 실시예에 따르면, 프로세서는 새로운 페이지 폴트 처리시에 해당 데이터를 담기 위한 프리 페이지를 일정량 미리 확보하고 있을 수 있다. 다양한 실시예에 따르면, 프로세서는 프리 페이지 큐(free page queue)라는 일정량의 프리 페이지를 확보하고 있을 수 있으며, 운영체제는 상기 프리 페이지 큐에 새로운 프리 페이지를 추가할 수 있으며, 프로세서는 상기 프리 페이지 큐에서 하나의 프리 페이지를 꺼내 페이지 폴트 처리에 이용할 수 있다.(도 6의 ③) 여기서 사용되는 페이지의 페이지 프레임 번호를 도 6의 ② 과정에서 할당 받은 PMSHR 엔트리에 기재한다.(도 6의 ④)
일 실시예에 따르면, 새로운 페이지 폴트에 대해 PMSHR 엔트리를 생성한 이후, 호스트 제어부에 저장장치 입출력 수행 요청을 전달할 수 있다.(도 6의 ⑤) 다양한 실시예에 따르면, 이 경우 I/O 요청을 위한 DMA(direct memory access) 주소, LBA, PMSHR 엔트리에서의 인덱스 정보를 전달할 수 있다.
일 실시예에 따르면, 호스트 제어부는 완료된 I/O에 대해 NVMe 명령어의 Command ID값을 페이지 미스 핸들러에 전달할 수 있다.(도 6의 ⑥) 다양한 실시예에 따르면, 페이지 테이블 엔트리의 상위 비트를 PFN으로 설정하고 present 비트를 1로 설정하여, 기억 관리부가 주소변환을 수행할 수 있다. (도 6의 ⑦) 또한 PMD 엔트리와 PUD 엔트리의 LBA 비트를 1로 설정하여 추후 요구 페이징 후처리에서 활용할 수 있도록 한다. 본 방법에 대해서는 도 8b에 대한 설명으로 후술한다.
일 실시예에 따르면, 처리가 완료된 페이지 폴트에 대해 이를 기다리는 기억 관리부에 완료 메시지를 전달할 수 있다.(도6의 ⑧) 다양한 실시예에 따르면 기억 관리부는 상기 메시지를 수신하면 멈췄던 주소변환을 다시 수행하여 명령어 수행을 재개할 수 있다.
일 실시예에 따르면, PMSHR 은 완료 메시지를 기억 관리부에 전송한 이후, 해당 PMSHR 엔트리의 값을 초기화할 수 있다. 다양한 실시예에 따르면, 도 6에서 ① ~ ⑤ 동작은 하나의 페이지 폴트 요청마다 처리되는 과정이며 ⑥ ~ ⑧ 동작은 호스트 제어부에서 하나의 I/O 완료마다 처리되는 과정이다. 따라서 ① ~ ⑤ 동작과 ⑥ ~ ⑧ 동작은 비동기적으로 수행될 수 있다. 즉, 반드시, ① ~ ⑤ 과정이 수행된 후, ⑥ ~ ⑧ 동작이 수행될 필요는 없다.
도 7은 본 발명의 일 실시예에 따른 호스트 제어부의 동작을 설명하기 위한 도면이다. 일 실시예에 따르면 도 7에서 도시하고 있는 동작은 도 12에서 도시하고 있는 호스트 제어부에 의해 수행될 수 있다.
일 실시예에 따르면 호스트 제어부는 페이지 미스 핸들러로부터 요청된 I/O에 대해 실제 저장장치에 I/O 명령을 전달하고, 저장장치로부터 전달된 I/O 완료 메시지를 받아 페이지 미스 핸들러에게 전달하는 역할을 수행할 수 있다. 다양한 실시예에 따르면, 호스트 제어부는 NVMe 기반 저장장치와 통신을 수행하며,NVMe 프로토콜을 처리할 수 있다.
일 실시예에 따르면, 페이지 미스 핸들러로부터 I/O 요청이 수신될 수 있다.(도 7의 ①) 다양한 실시예에 따르면, I/O 요청은 DMA 주소, LBA, Device ID, PMSHR 엔트리의 인덱스값을 파라미터로 포함할 수 있다.
일 실시예에 따르면, 상기 Device ID를 통해 NVMe 장치와 통신하기 위한 SQ주소, command 적재 위치를 판단한 후, NVMe read command를 생성하고, 이를 SQ address + SQ-tail 위치에 쓰기를 수행할 수 있다.(도 7의 ②) 이 때 NVMe read command의 command id는 PMSHR 엔트리의 인덱스값으로 설정한다. 다양한 실시예에 따르면, I/O 명령 전달의 마지막 단계로 SQ doorbell의 값을 업데이트하여 저장장치에게 새로운 I/O 명령 도착을 알릴 수 있다.(도 7의 ③)
일 실시예에 따르면, 호스트 제어부는 PCI root complex에서 발생하는 메모리 트랜잭션(transaction)을 스누핑(snooping)하여 CQ address + CQ-head의 위치에 발생하는 메모리 쓰기를 감지할 수 있다.(도 7의 ④) 다양한 실시예에 따르면, I/O 완료 메시지가 수신되면 NVMe 프로토콜의 규칙대로 CQ doorbell 값을 업데이트할 수 있다.(도 7의 ⑤)
일 실시예에 따르면, 상기 I/O 완료 메시지에서 command ID값을 추출할 수 있으며, 이 값을 페이지 미스 핸들러로 전달하여 페이지 폴트의 후처리를 수행하도록 할 수 있다.(도 7의 ⑥)
본 발명에서 개시하고 있는 하드웨어 기반 요구 페이징 기법이 수행되고 완료되기 위해서는 페이지 할당 및 요구 페이징 기법 후처리 작업이 반드시 수행되어야 하며, 이는 운영체제로부터의 도움을 필요로 한다.
일 실시예에 따르면 프리 페이지 큐의 엔트리가 지속적으로 소진됨에 따라 페이지 할당 및 DMA 매핑을 병행한 페이지 충전 작업이 필요할 수 있다. 다양한 실시예에 따르면, 프리 페이지 큐가 비어있을 경우 페이지 폴트 처리 전반을 운영체제에서 수행하도록 요청하며, 운영체제에서 큐 엔트리 충전을 수행할 수 있다. 큐 엔트리를 충전하기 위해 프리 페이지 큐 초기 설정 단계에서 페이지 충전 커널 스레드를 생성하여 커널 백그라운드에서 동작하도록 설정할 수 있다.
일 실시예에 따르면, 요구 페이징 기법 후처리에는 입출력 요청 페이지에 대한 페이지 캐시 삽입, 페이지 리버스 매핑, 페이지 테이블 엔트리 업데이트 등의 작업이 포함될 수 있다. 다양한 실시예에 따르면, 상기 작업들은 운영체제 기반으로 구성된 다양한 구조체들을 필요로 하므로 운영체제의 지원이 필수적이다. 본 발명에 따른 요구 페이징 기법 후처리 방법에 대해서는 도 8a 및 도 8b에 대한 설명으로 후술한다.
도 8a는 본 발명의 일 실시예에 따른 페이지 할당 커널 스레드를 설명하기 위한 도면이다. 일 실시예에 따르면, 도 8a에서 도시하고 있는 순서도는 운영체제에 의해 수행될 수 있다.
일 실시예에 따르면, S810 단계에서 주기적으로 커널 스레드를 호출할 수 있으며, S815 단계에서 운영체제 메모리 할당자로부터 페이지를 할당 받을 수 있다. 다양한 실시예에 따르면, S820 단계에서 할당 받은 페이지의 DMA 매핑을 수행할 수 있으며, S830 단계에서 상기 페이지를 프리 페이지 큐에 삽입할 수 있다. 즉, 도 8a에서 도시하고 있는 동작을 통해 프리 페이지 큐에 프리 페이지를 충전할 수 있다.
도 8b는 본 발명의 일 실시예에 따른 요구 페이징 기법 후처리 커널 스레드를 설명하기 위한 도면이다. 일 실시예에 따르면, 도 8b에서 도시하고 있는 순서도는 운영체제에 의해 수행될 수 있다.
일 실시예에 따르면, S840 단계에서 주기적으로 커널 스레드를 호출할 수 있으며, S845 단계에서 페이지 테이블을 탐색할 수 있다. 다양한 실시예에 따르면, S846 단계 및 S848 단계를 통해 PUD 엔트리 및 PMD 엔트리의 LBA 비트를 확인할 수 있다. S846 단계와 S848 단계에서 개시하고 있는 바와 같이 해당 엔트리의 LBA 비트가 1인 경우에만 페이지 테이블의 다음 레벨 탐색을 진행하여 페이지 테이블 탐색으로 인한 오버헤드를 크게 줄일 수 있다. S850 단계에서 페이지 테이블 엔트리의 LBA 비트와 present 비트를 확인할 수 있다.
일 실시예에 따르면, LBA 비트 혹은 present 비트가 1이 아닌 경우 S855 단계에서 다음 페이지 테이블 엔트리를 확인할 수 있다. 다양한 실시예에 따르면, LBA 비트와 present 비트가 1인 경우, S860 단계에서 페이지 테이블 엔트리에 해당하는 페이지를 페이지 캐시 또는 LRU 리스트에 삽입할 수 있다.
일 실시예에 따르면, S865 단계에서 페이지 관련 메타데이터가 갱신될 수 있으며, S870 단계에서 페이지 테이블 엔트리의 LBA 비트를 0으로 설정할 수 있다.
도 9 및 도 10은 SSD를 대상으로 종래 기술에 따른 경우 대비 본 발명에 따른 경우 쓰루풋(throughput) 향상 정도를 나타낸 그래프이다. 도 9는 Flexible I/O Tester(FIO), RocksDB DBbench readrandom 워크로드에서의 쓰루풋 향상 정도를 나타낸 그래프이다. 도 9의 그래프를 통해 본 발명에서 제안하는 기법을 따르는 경우 종래에 비해 약 29.4% 내지 57.1%의 성능이 향상되는 것을 확인할 수 있다. 한편, 도 10은 RocksDB에 대해 YCSB 워크로드를 수행하였을 때 쓰루풋 향상 정도를 나타낸 그래프로 읽기 작업의 비중이 가장 큰 YCSB-C 워크로드에서 쓰루풋 향상의 효과가 가장 큰 것을 확인할 수 있었으며, 전반적으로 약 5.3% 내지 27.3%의 성능이 향상되는 것을 확인할 수 있다.
도 11은 SSD를 대상으로 본 발명에 따른 경우와 종래 기술에 따른 경우 쓰루풋과 자원 오염도를 비교한 그래프이다. 보다 구체적으로 도 11은 YCSB-C 워크로드에 대한 정규 쓰루풋과 자원 오염도를 나타낸 그래프이며, OSDP로 표시된 그래프가 기존 운영체제 기반 요구 페이징 처리 기법에 따른 경우이며, HWDP로 표시된 그래프가 본 발명에서 제안하는 하드웨어 기반 요구 페이징 처리 기법을 따른 경우이다. 도 11의 그래프를 통해 마이크로 아키텍처 자원 미스 횟수가 감소하는 것을 확인할 수 있는바, 본 발명에서 제공하는 기술을 통해 운영체제의 context로 인한 마이크로 아키텍처 자원의 오염이 감소되는 것을 확인할 수 있다.
도 12는 본 발명의 일 실시예에 따른 프로세서의 구조를 나타낸 도면이다.
일 실시예에 따르면, 프로세서(1200)는 페이지 테이블을 탐색하고, 페이지 테이블 엔트리(page table entry)의 present 비트를 확인하며, 상기 present 비트가 기설정된 제1 값인 경우, 상기 페이지 테이블 엔트리의 LBA(logical block address) 비트를 확인하는 기억 관리부(1210, memory management unit) 및 상기 LBA 비트가 기설정된 제2 값인 경우, 페이지 폴트를 처리하는 폴트 처리부(1220)를 포함할 수 있다. 한편, 본 발명에서 개시하고 있는 프로세서(1200)는 CPU(central processing unit)와 GPU(graphics processing unit)을 포함할 수 있다.
일 실시예에 따르면, 상기 폴트 처리부(1220)는 페이지 폴트와 관련된 정보를 수신하고, 상기 페이지 폴트와 관련된 정보에 기반하여 PMSHR(page miss status holding registers)를 탐색하며, 상기 PMSHR에 저장된 정보에 기반하여 상기 페이지 폴트를 처리하기 위한 페이지를 할당하고, 상기 페이지 테이블 엔트리를 갱신하며, 상기 기억 관리부로 페이지 폴트 처리 완료 메시지를 전송하는 페이지 미스 핸들러(1221) 및 상기 페이지 미스 핸들러(1221)로부터 I/O 요청을 수신하고, 큐 레지스터를 통해 입출력을 처리하며, 상기 페이지 미스 핸들러(1221)로 입출력 완료 메시지를 전송하는 호스트 제어부(1223)를 포함할 수 있다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 사람이라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 실행된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.

Claims (14)

  1. 프로세서와 운영체제를 이용한 페이지 폴트 처리 방법에 있어서,
    어플리케이션 동작에 따라 요구 페이징을 수행하는 단계;
    상기 프로세서를 구성하는 기억 관리부(memory management unit)에서 페이지 테이블을 탐색하는 단계;
    페이지 테이블 엔트리(page table entry)의 present 비트를 확인하는 단계;
    상기 present 비트가 기설정된 제1 값인 경우, 상기 페이지 테이블 엔트리의 LBA(logical block address) 비트를 확인하는 단계; 및
    상기 LBA 비트가 기설정된 제2 값인 경우, 상기 프로세서에 포함된 폴트 처리부가 상기 페이지 테이블 엔트리의 상위 비트값에 기반하여 직접 페이지 폴트를 처리하는 단계를 포함하는,
    페이지 폴트 처리 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 페이지 폴트를 처리하는 단계는,
    상기 폴트 처리부를 구성하는 페이지 미스 핸들러(page miss handler)에게 페이지 폴트와 관련된 정보를 전달하는 단계;
    상기 페이지 폴트와 관련된 정보에 기반하여 PMSHR(page miss status holding registers)를 탐색하는 단계;
    상기 PMSHR에 저장된 정보에 기반하여 상기 페이지 폴트를 처리하기 위한 페이지를 할당하는 단계;
    상기 페이지 미스 핸들러에서 상기 페이지 테이블 엔트리를 갱신하는 단계; 및
    상기 페이지 미스 핸들러에서 상기 기억 관리부로 페이지 폴트 처리 완료 메시지를 전송하는 단계를 포함하는 것을 특징으로 하는,
    페이지 폴트 처리 방법.
  4. 제3항에 있어서,
    상기 페이지 폴트를 처리하기 위한 페이지를 할당하는 단계 이후에,
    상기 페이지 미스 핸들러에서 호스트 제어부로 I/O 요청을 전송하는 단계;
    상기 호스트 제어부에서 큐 레지스터를 통해 입출력을 처리하는 단계; 및
    상기 호스트 제어부에서 상기 페이지 미스 핸들러로 입출력 완료 메시지를 전송하는 단계를 더 포함하는 것을 특징으로 하는,
    페이지 폴트 처리 방법.
  5. 제4항에 있어서,
    상기 호스트 제어부에서 상기 I/O 요청에 대해 완료 큐의 head 주소를 스누핑(snooping)하여 상기 페이지 미스 핸들러로 상기 입출력 완료 메시지 전송 여부를 확인하는 단계를 더 포함하는,
    페이지 폴트 처리 방법.
  6. 제1항에 있어서,
    상기 페이지 테이블 엔트리는 상기 present 비트에 대한 정보, 상기 LBA 비트에 대한 정보, 소켓 아이디에 대한 정보, 디바이스 아이디에 대한 정보, 논리 블록 주소에 대한 정보를 포함하는 것을 특징으로 하는,
    페이지 폴트 처리 방법.
  7. 제1항에 있어서,
    상기 present 비트가 기설정된 제3 값인 경우, 페이지 프레임 번호를 반환하는 단계;
    상기 LBA 비트가 기설정된 제4 값인 경우, 운영체제 페이지 폴트 핸들러를 호출하는 단계;
    운영체제 메모리 할당자로부터 페이지를 할당하는 단계;
    상기 페이지를 페이지 캐시(cache)에 삽입하는 단계; 및
    디바이스 드라이버를 통해 I/O 요청을 하고 입출력 완료 시 상기 페이지 테이블 엔트리를 갱신하는 단계를 더 포함하는 것을 특징으로 하는,
    페이지 폴트 처리 방법.
  8. 제1항에 있어서,
    상기 운영체제에서 주기적으로 커널 스레드를 호출하는 단계;
    운영체제 메모리 할당자로부터 페이지를 할당 받는 단계;
    할당 받은 페이지의 DMA(direct memory access) 매핑을 수행하는 단계; 및
    상기 할당 받은 페이지를 프리 페이지 큐에 삽입함으로써 프리 페이지를 충전하는 단계를 더 포함하는,
    페이지 폴트 처리 방법.
  9. 제1항에 있어서,
    상기 운영체제에서 주기적으로 페이지 테이블을 탐색하는 단계;
    상기 운영체제에서 PMD 엔트리 및 PUD 엔트리의 LBA 비트를 확인하는 단계;
    상기 운영체제에서 페이지 테이블 엔트리의 LBA 비트와 present 비트를 확인하는 단계;
    상기 LBA 비트와 present 비트에 기반하여 상기 페이지 테이블 엔트리에 해당하는 페이지를 캐시 또는 LRU 리스트에 삽입하는 단계; 및
    페이지 관련 메타 데이터를 갱신하는 단계를 더 포함하는,
    페이지 폴트 처리 방법.
  10. 페이지 폴트를 처리하기 위한 프로세서에 있어서,
    페이지 테이블을 탐색하고, 페이지 테이블 엔트리(page table entry)의 present 비트를 확인하며, 상기 present 비트가 기설정된 제1 값인 경우, 상기 페이지 테이블 엔트리의 LBA(logical block address) 비트를 확인하는 기억 관리부(memory management unit); 및
    상기 LBA 비트가 기설정된 제2 값인 경우, 상기 페이지 테이블 엔트리의 상위 비트값에 기반하여 직접 페이지 폴트를 처리하는 폴트 처리부를 포함하는,
    프로세서.
  11. 제10항에 있어서,
    상기 폴트 처리부는,
    페이지 폴트와 관련된 정보를 수신하고, 상기 페이지 폴트와 관련된 정보에 기반하여 PMSHR(page miss status holding registers)를 탐색하며, 상기 PMSHR에 저장된 정보에 기반하여 상기 페이지 폴트를 처리하기 위한 페이지를 할당하고, 상기 페이지 테이블 엔트리를 갱신하며, 상기 기억 관리부로 페이지 폴트 처리 완료 메시지를 전송하는 페이지 미스 핸들러를 포함하는 것을 특징으로 하는,
    프로세서.
  12. 제11항에 있어서,
    상기 폴트 처리부는
    상기 페이지 미스 핸들러로부터 I/O 요청을 수신하고, 큐 레지스터를 통해 입출력을 처리하며, 상기 페이지 미스 핸들러로 입출력 완료 메시지를 전송하는 호스트 제어부를 더 포함하는 것을 특징으로 하는,
    프로세서.
  13. 제12항에 있어서,
    상기 호스트 제어부는 상기 I/O 요청에 대해 완료 큐의 head 주소를 스누핑(snooping)하여 상기 페이지 미스 핸들러로 상기 입출력 완료 메시지 전송 여부를 확인하는 것을 특징으로 하는,
    프로세서.
  14. 제10항에 있어서,
    상기 페이지 테이블 엔트리는 상기 present 비트에 대한 정보, 상기 LBA 비트에 대한 정보, 소켓 아이디에 대한 정보, 디바이스 아이디에 대한 정보, 논리 블록 주소에 대한 정보를 포함하는 것을 특징으로 하는,
    프로세서.
KR1020200065330A 2020-05-29 2020-05-29 프로세서를 통한 페이지 폴트 처리 방법 KR102400977B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020200065330A KR102400977B1 (ko) 2020-05-29 2020-05-29 프로세서를 통한 페이지 폴트 처리 방법
US16/950,370 US11436150B2 (en) 2020-05-29 2020-11-17 Method for processing page fault by processor
EP20208142.8A EP3916567B1 (en) 2020-05-29 2020-11-17 Method for processing page fault by processor
CN202011306819.2A CN113742115B (zh) 2020-05-29 2020-11-20 用于通过处理器处理页面错误的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200065330A KR102400977B1 (ko) 2020-05-29 2020-05-29 프로세서를 통한 페이지 폴트 처리 방법

Publications (2)

Publication Number Publication Date
KR20210147704A KR20210147704A (ko) 2021-12-07
KR102400977B1 true KR102400977B1 (ko) 2022-05-25

Family

ID=73475864

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200065330A KR102400977B1 (ko) 2020-05-29 2020-05-29 프로세서를 통한 페이지 폴트 처리 방법

Country Status (4)

Country Link
US (1) US11436150B2 (ko)
EP (1) EP3916567B1 (ko)
KR (1) KR102400977B1 (ko)
CN (1) CN113742115B (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230315328A1 (en) * 2022-03-18 2023-10-05 Nvidia Corporation High bandwidth extended memory in a parallel processing system

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040215898A1 (en) 2003-04-28 2004-10-28 International Business Machines Corporation Multiprocessor system supporting multiple outstanding TLBI operations per partition
JP2014067445A (ja) 2007-06-01 2014-04-17 Intel Corp ページ属性サポートのある仮想アドレスから物理アドレスへの変換
US20190310783A1 (en) 2018-04-04 2019-10-10 Samsung Electronics Co., Ltd. Memory systems having semiconductor memory modules therein that support page fault processing
JP2020009492A (ja) * 2016-08-12 2020-01-16 グーグル エルエルシー ハイブリッドメモリ管理
US20200104264A1 (en) 2018-09-27 2020-04-02 International Business Machines Corporation Mapping memory allocation requests using various memory attributes

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7941675B2 (en) * 2002-12-31 2011-05-10 Burr James B Adaptive power control
US7774627B2 (en) * 2002-10-03 2010-08-10 Via Technologies, Inc. Microprocessor capable of dynamically increasing its performance in response to varying operating temperature
US7353361B2 (en) * 2005-06-06 2008-04-01 International Business Machines Corporation Page replacement policy for systems having multiple page sizes
KR100755701B1 (ko) * 2005-12-27 2007-09-05 삼성전자주식회사 내장형 시스템을 위한 요구 페이징 장치 및 방법
KR100772863B1 (ko) 2006-01-13 2007-11-02 삼성전자주식회사 요구 페이징 기법을 적용한 시스템에서 페이지 교체 수행시간을 단축시키는 방법 및 장치
US8307191B1 (en) * 2008-05-09 2012-11-06 Vmware, Inc. Page fault handling in a virtualized computer system
US7915910B2 (en) * 2009-01-28 2011-03-29 Apple Inc. Dynamic voltage and frequency management
US9208084B2 (en) * 2009-06-29 2015-12-08 Oracle America, Inc. Extended main memory hierarchy having flash memory for page fault handling
US8555476B2 (en) 2010-03-12 2013-10-15 Sms Siemag Aktiengesellschaft Method and device for depositing a metal coil
US8954697B2 (en) * 2010-08-05 2015-02-10 Red Hat, Inc. Access to shared memory segments by multiple application processes
CN102931655B (zh) * 2011-08-12 2014-12-10 珠海全志科技股份有限公司 一种动态调节电压和频率的电路控制系统和方法
RU2650805C2 (ru) 2012-04-11 2018-04-17 Дзе Юнайтед Стейтс Оф Америка, Эз Репрезентед Бай Дзе Секретари, Департмент Оф Хелс Энд Хьюман Сёрвисез Химерные антигенные рецепторы, нацеленные на антиген созревания в-клеток
KR20140035146A (ko) 2012-09-13 2014-03-21 (주)아크원소프트 정보보안 장치 및 방법
KR101469353B1 (ko) 2013-03-13 2014-12-08 가천대학교 산학협력단 운동량 기반의 우울증 환자 상태 분석 방법 및 그 장치
DE102013022169A1 (de) * 2013-03-14 2014-09-18 Nvidia Corporation Fehlerpuffer zur verfolgung von seitenfehlern in einem vereinheitlichten virtuellen speichersystem
US10409730B2 (en) * 2013-03-15 2019-09-10 Nvidia Corporation Microcontroller for memory management unit
KR102203774B1 (ko) 2013-12-31 2021-01-18 엘지디스플레이 주식회사 백색 유기 발광 소자
CN104991869B (zh) * 2015-07-31 2017-11-10 成都腾悦科技有限公司 一种微处理器存储管理方法
EP3153971B1 (en) * 2015-10-08 2018-05-23 Huawei Technologies Co., Ltd. A data processing apparatus and a method of operating a data processing apparatus
US10558580B2 (en) 2016-02-29 2020-02-11 Apple Inc. Methods and apparatus for loading firmware on demand
US10007310B2 (en) * 2016-07-08 2018-06-26 Qualcomm Incorporated Circuits and methods providing calibration for temperature mitigation in a computing device
US10152427B2 (en) * 2016-08-12 2018-12-11 Google Llc Hybrid memory management
US9916256B1 (en) 2016-09-12 2018-03-13 Toshiba Memory Corporation DDR storage adapter
CN107885666B (zh) * 2016-09-28 2021-07-20 华为技术有限公司 一种内存管理方法和装置
CN106598483B (zh) 2016-11-10 2019-07-23 华中科技大学 一种面向异构内存的可重构内存管理系统
KR102101622B1 (ko) 2017-12-06 2020-04-17 주식회사 멤레이 메모리 제어 장치 및 이를 포함하는 컴퓨팅 디바이스

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040215898A1 (en) 2003-04-28 2004-10-28 International Business Machines Corporation Multiprocessor system supporting multiple outstanding TLBI operations per partition
JP2014067445A (ja) 2007-06-01 2014-04-17 Intel Corp ページ属性サポートのある仮想アドレスから物理アドレスへの変換
JP2020009492A (ja) * 2016-08-12 2020-01-16 グーグル エルエルシー ハイブリッドメモリ管理
US20190310783A1 (en) 2018-04-04 2019-10-10 Samsung Electronics Co., Ltd. Memory systems having semiconductor memory modules therein that support page fault processing
US20200104264A1 (en) 2018-09-27 2020-04-02 International Business Machines Corporation Mapping memory allocation requests using various memory attributes

Also Published As

Publication number Publication date
CN113742115B (zh) 2024-03-12
KR20210147704A (ko) 2021-12-07
EP3916567B1 (en) 2023-09-13
US11436150B2 (en) 2022-09-06
CN113742115A (zh) 2021-12-03
EP3916567A1 (en) 2021-12-01
US20210374063A1 (en) 2021-12-02

Similar Documents

Publication Publication Date Title
TWI643073B (zh) 混合式記憶體管理
JP7340326B2 (ja) メンテナンス動作の実行
CN113641596B (zh) 缓存管理方法、缓存管理装置、处理器
TWI787129B (zh) 記憶體請求之快取串流
US11341042B2 (en) Storage apparatus configured to manage a conversion table according to a request from a host
WO2024078342A1 (zh) 内存交换方法、装置、计算机设备及存储介质
JP2024054306A (ja) ハードウェアベースのメモリ圧縮
KR102400977B1 (ko) 프로세서를 통한 페이지 폴트 처리 방법
CN113407120B (zh) 基于hmb的映射表管理方法、装置及计算机设备
KR102482516B1 (ko) 메모리 어드레스 변환
KR102355374B1 (ko) 이종 메모리를 이용하여 메모리 주소 변환 테이블을 관리하는 메모리 관리 유닛 및 이의 메모리 주소 관리 방법
US20080301324A1 (en) Processor device and instruction processing method
US10754791B2 (en) Software translation prefetch instructions
JP2007207249A (ja) ミス衝突処理状態でのキャッシュ・ヒットのための方法、システムおよびマイクロプロセッサ
CN116383101A (zh) 内存访问方法、内存管理单元、芯片、设备和存储介质
US20200097415A1 (en) Arithmetic processor, information processing device and control method of arithmetic processor
US20090172297A1 (en) Cache memory system and cache memory control method
CN117311638A (zh) 缓存管理方法、缓存管理装置、处理器
CN116932425A (zh) 一种内联计算引擎的任务执行方法、装置以及介质
CN114780466A (zh) 一种基于dma的数据复制延时的优化方法
KR20220153330A (ko) 메모리 접근 방법 및 장치

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right