KR102456109B1 - 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법 - Google Patents

비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법 Download PDF

Info

Publication number
KR102456109B1
KR102456109B1 KR1020150171500A KR20150171500A KR102456109B1 KR 102456109 B1 KR102456109 B1 KR 102456109B1 KR 1020150171500 A KR1020150171500 A KR 1020150171500A KR 20150171500 A KR20150171500 A KR 20150171500A KR 102456109 B1 KR102456109 B1 KR 102456109B1
Authority
KR
South Korea
Prior art keywords
memory
memory mapping
mapping
requested
file
Prior art date
Application number
KR1020150171500A
Other languages
English (en)
Other versions
KR20170065272A (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 KR1020150171500A priority Critical patent/KR102456109B1/ko
Priority to US15/365,991 priority patent/US10185654B2/en
Publication of KR20170065272A publication Critical patent/KR20170065272A/ko
Application granted granted Critical
Publication of KR102456109B1 publication Critical patent/KR102456109B1/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/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/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
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법이 개시된다. 본 발명의 일 실시예에 따르면, 메모리 맵핑의 해제 요청이 수신된 경우, 상기 메모리 맵핑과 관련된 메타 데이터에 기초하여, 상기 메모리 맵핑이 파일의 맵핑인지 여부를 판단하고, 상기 판단의 결과 상기 메모리 맵핑이 파일의 맵핑인 경우 상기 메타 데이터를 별도로 저장하는 단계, 및 상기 메모리 맵핑이 파일의 맵핑이 아닌 경우, 상기 메모리 맵핑을 해제하는 단계를 포함한다. 그리고, 본 발명의 다른 실시예에 따르면, 메모리 맵핑 요청이 수신된 경우, 상기 요청된 메모리 맵핑이 파일의 맵핑인 경우, 메모리 맵핑 저장 공간에서 상기 파일과 동일한 파일에 대한 메모리 맵핑을 검색하는 단계, 및 상기 검색의 결과, 검색된 메모리 맵핑의 가상 주소 공간상에서의 영역이 상기 요청된 메모리 맵핑이 요구하는 가상 주소 공간상에서의 영역을 포함하는 경우, 상기 검색된 메모리 맵핑을 재사용하는 단계를 포함한다.

Description

비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법{MEMORY MAPPING MANAGEMENT METHOD FOR A NONVOLATILE MAIN MEMORY}
본 발명의 개념에 따른 실시예는 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법으로써, 특히 메모리 매핑을 이용한 파일 입출력시에 생성된 메모리 매핑을 재사용하는 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법에 관한 것이다.
컴퓨터 시스템의 메인 메모리로써 비휘발성 메모리를 활용하고자 하는 노력들이 시도되고 있다. 이러한 노력들과 더불어, 메모리 맵핑을 이용한 파일 입출력이 활용되고 있다.
메모리 맵핑을 이용한 파일 입출력은 일반적인 파일 입출력과 비교하여 높은 성능을 보인다. 즉, 메모리 맵핑을 이용한 파일 입출력은 대용량 파일의 고속 처리가 가능하고, 프로그램 코드가 단순하며, 유지보수가 용이하다.
그러나, 메모리 맵핑을 이용한 파일 입출력에 있어서, 페이지 폴트의 발생시 파일의 프레임과 프로세스의 페이지 간의 메모리 맵핑을 생성하는 경우에는 값비싼 시간 및 비용이 요구된다.
나아가 생성된 메모리 맵핑은 메모리 맵핑을 이용한 파일 입출력이 종료되면 함께 삭제되어, 일회성으로 사용된다는 문제가 있다.
따라서, 상술한 문제를 해결하기 위해, 생성된 메모리 맵핑을 효율적으로 활용할 수 있는 방안이 요구된다.
본 발명이 이루고자 하는 기술적인 과제는 메모리 매핑을 이용한 파일 입출력시에 미리 생성된 메모리 매핑을 재사용할 수 있는 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법을 제공하는 것이다.
본 발명의 일 실시예에 따른 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법은, 메모리 맵핑의 해제 요청을 수신하는 단계, 상기 메모리 맵핑과 관련된 메타 데이터에 기초하여, 상기 메모리 맵핑이 파일의 맵핑인지 여부를 판단하는 단계, 상기 판단의 결과 상기 메모리 맵핑이 파일의 맵핑인 경우 상기 메타 데이터를 별도로 저장하는 단계, 및 상기 판단의 결과, 상기 메모리 맵핑이 파일의 맵핑이 아닌 경우 상기 메모리 맵핑을 해제하는 단계를 포함한다.
실시예에 따라, 상기 메타 데이터를 별도로 저장하는 단계는, 상기 메타 데이터를 제1 데이터 구조에 추가하는 단계, 및 상기 메타 데이터를 제2 데이터 구조에 추가하는 단계를 포함한다.
실시예에 따라, 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법은, 상기 메타 데이터를 별도로 저장하는 단계 전에, 상기 메타 데이터의 접근 권한을 수정하는 단계를 더 포함한다.
실시예에 따라, 상기 제1 데이터 구조는 해시 테이블이고, 상기 제2 데이터 구조는 프리 리스트이다.
실시예에 따라, 상기 제1 데이터 구조 및 상기 제2 데이터 구조는 캐시에 별도로 저장된다.
실시예에 따라, 상기 메타 데이터는 가상 메모리 관리를 위해 운영 체제에 의하여 제공되는 자료 구조의 형태이다.
본 발명의 다른 실시예에 따른 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법은, 메모리 맵핑 요청을 수신하는 단계, 상기 요청된 메모리 맵핑이 파일의 맵핑인 경우, 메모리 맵핑 저장 공간에서 상기 파일과 동일한 파일에 대한 메모리 맵핑을 검색하는 단계, 및 상기 검색의 결과, 검색된 메모리 맵핑의 가상 주소 공간상에서의 영역이 상기 요청된 메모리 맵핑이 요구하는 가상 주소 공간상에서의 영역을 포함하는 경우, 상기 검색된 메모리 맵핑을 재사용하는 단계를 포함한다.
실시예에 따라, 상기 검색된 메모리 맵핑을 재사용하는 단계는, 상기 검색된 메모리 맵핑의 가상 주소 공간상에서의 영역이 상기 요청된 메모리 맵핑이 요구하는 가상 주소 공간상에서의 영역을 포함하는지 여부를 판단하는 단계를 포함하고, 상기 판단의 결과, 상기 검색된 메모리 맵핑의 가상 주소 공간상에서의 영역이 상기 요청된 메모리 맵핑이 요구하는 가상 주소 공간상에서의 영역을 포함하는 경우, 상기 요청된 메모리 맵핑의 접근 권한과 일치되도록 상기 검색된 메모리 맵핑의 접근 권한을 수정하는 단계를 더 포함한다.
실시예에 따라, 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법은, 상기 판단의 결과, 상기 검색된 메모리 맵핑의 가상 주소 공간상에서의 영역이 상기 요청된 메모리 맵핑이 요구하는 가상 주소 공간상에서의 영역을 포함하지 않는 경우, 메모리 맵핑 저장 공간의 부족 여부를 판단하는 단계, 및 상기 메모리 맵핑 저장 공간의 부족 여부의 판단의 결과, 상기 메모리 맵핑 저장 공간이 부족하지 않은 경우, 상기 요청된 메모리 맵핑을 생성하는 단계를 더 포함한다.
실시예에 따라, 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법은, 상기 메모리 맵핑 저장 공간의 부족 여부의 판단의 결과, 상기 메모리 맵핑 저장 공간이 부족한 경우, 상기 메모리 맵핑 저장 공간을 해제하는 단계를 더 포함한다.
실시예에 따라, 메모리 맵핑 저장 공간에서 상기 파일과 동일한 파일에 대한 메모리 맵핑을 검색하는 단계는, 상기 요청된 메모리 맵핑이 상기 파일의 맵핑인지 여부를 판단하는 단계를 포함하고, 상기 요청된 메모리 맵핑이 상기 파일의 맵핑이 아닌 경우, 무기명 메모리 맵핑을 생성하는 단계를 더 포함한다.
실시예에 따라, 상기 검색된 메모리 맵핑을 재사용하는 단계는 상기 요청된 메모리 맵핑이 요구하는 가상 주소 공간상에서의 영역이 상기 검색된 메모리 맵핑의 가상 주소 공간상에서의 영역과 전부 일치하는 경우, 상기 검색된 메모리 맵핑을 재사용하는 단계, 및 상기 요청된 메모리 맵핑이 요구하는 가상 주소 공간상에서의 영역이 상기 검색된 메모리 맵핑의 가상 주소 공간상에서의 영역과 부분적으로 일치하는 경우, 상기 검색된 메모리 맵핑을 그 가상 주소 공간상에서의 영역이 요청된 메모리 맵핑의 가상 주소 공간상에서의 영역과 일치되는 범위 내에서 재사용하는 단계를 포함한다.
실시예에 따라, 상기 요청된 메모리 맵핑이 요구하는 가상 주소 공간상에서의 영역이 상기 검색된 메모리 맵핑의 가상 주소 공간상에서의 영역과 부분적으로 일치하는 경우, 상기 검색된 메모리 맵핑의 메타 데이터는, 상기 요청된 메모리 맵핑의 가상 주소 공간상에서의 영역과 같은 범위를 갖도록 수정된다.
실시예에 따라, 상기 검색된 메모리 맵핑의 메타 데이터의 수정은, 상기 검색된 메모리 맵핑의 메타 데이터가 포함하는 구조체 멤버들 중 가상 메모리 공간상의 시작 주소 및 상기 가상 메모리 공간상의 마지막 주소를 수정함으로써 이루어진다.
실시예에 따라, 상기 비휘발성 메모리는 메모리 셀 어레이를 포함하고, 상기 메모리 셀 어레이는 3차원 메모리 셀들을 포함한다.
본 발명의 일 실시예에 따른 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법은, 메모리 맵핑 해제 요청이 수신되고, 상기 해제 요청된 메모리 맵핑이 파일의 맵핑인 경우, 상기 메모리 맵핑과 관련된 메타 데이터를 메모리 맵핑 저장 공간에 별도로 저장함으로써, 상기 해제 요청된 메모리 맵핑을 보관할 수 있는 효과가 있다.
본 발명의 일 실시예에 따른 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법은, 메모리 맵핑 요청이 수신되고, 상기 요청된 메모리 맵핑이 파일의 맵핑인 경우, 메모리 맵핑 저장 공간에 저장된 메모리 맵핑을 재사용할 수 있으므로, 상기 요청된 메모리 맵핑의 생성에 따른 시간 및 비용을 감소시킬 수 있는 효과가 있다.
본 발명의 일 실시예에 따른 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법은, 메모리 맵핑 저장 공간이 부족한 경우, 가장 오래된 메모리 맵핑과 관련된 메타 데이터들을 해제시킴으로써, 메모리 맵핑 저장 공간에 저장된 메모리 맵핑과 관련된 메타 데이터들을 유지 및 관리할 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 일 실시예에 따른 비휘발성 메인 메모리 시스템의 구성 블록도이다.
도 2는 본 발명의 일 실시예에 따른 비휘발성 메인 메모리 소자를 구체적으로 나타낸 블록도이다.
도 3은 도 2에 도시된 메모리 셀 어레이를 구체적으로 나타낸 일 실시예이다.
도 4는 도 2에 도시된 메모리 셀 어레이를 구체적으로 나타낸 다른 실시예이다.
도 5는 도 1에 도시된 메모리 맵핑 관리기가 포함하는 컴포넌트들의 구성 블록도이다.
도 6은 메모리 맵핑 해제 요청이 있는 경우, 본 발명의 일 실시예에 따른 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법을 설명하기 위한 흐름도이다.
도 7은 메모리 맵핑과 관련된 메타 데이터를 설명하기 위한 도면이다.
도 8은 메타 데이터를 관리하기 위한 제1 데이터 구조를 설명하기 위한 도면이다.
도 9는 메타 데이터를 관리하기 위한 제2 데이터 구조를 설명하기 위한 도면이다.
도 10은 메모리 맵핑 요청이 있는 경우, 본 발명의 일 실시예에 따른 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법을 설명하기 위한 흐름도이다.
도 11은 검색된 메모리 맵핑의 가상 주소 공간상에서의 영역이 요청된 메모리 맵핑이 요구하는 가상 주소 공간상에서의 영역을 포함하는 경우를 설명하기 위한 도면이다.
도 12는 도 1에 도시된 CPU 및 비휘발성 메인 메모리를 포함하는 시스템의 일 실시예를 나타내는 구성 블록도이다.
도 13은 도 1에 도시된 CPU 및 비휘발성 메인 메모리를 포함하는 시스템의 다른 실시예를 나타내는 구성 블록도이다.
도 14는 도 1에 도시된 CPU 및 비휘발성 메인 메모리를 포함하는 시스템의 또 다른 실시예를 나타내는 구성 블록도이다.
도 15는 도 1에 도시된 CPU 및 비휘발성 메인 메모리를 포함하는 시스템의 또 다른 실시예를 나타내는 구성 블록도이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1구성요소는 제2구성요소로 명명될 수 있고, 유사하게 제2구성요소는 제1구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
한편, 최근 메모리 반도체 분야에서, 메모리 공정상의 발전에 힘입어, 메모리의 기능의 비약적인 발전이 이루어지고 있다.
특히, 비휘발성 메모리는 독출 대기시간(read latency), 기입 대기시간(write latency), 주소 지정 가능도(addressability), 및 내구도(endurance) 등의 성능 지표에서, 기존의 휘발성 메인 메모리 또는 보조 메모리를 대체할 수 있는 수준에 이르고 있다.
본 명세서에서는 상술한 비휘발성 메모리의 기술 발전의 결과를 반영하여, 본 발명의 일 실시예에 따른 시스템이 아래와 같은 기술적 특징을 포함하고 있음을 전제로 기술하기로 한다.
첫째, 본 발명의 일 실시예에 따른 시스템은 메인 메모리로써, 휘발성 메모리를 대체하여, 비휘발성 메모리로 구현된다. 여기서, 상기 비휘발성 메모리는, 지속성 메모리(persistent memory)를 포함할 수 있다.
둘째, 비휘발성 메인 메모리는 보조 메모리의 기능을 수행할 수 있다. 따라서, 본 발명의 일 실시예에 따른 비휘발성 메인 메모리는 내부에 파일 시스템을 저장할 수 있다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다.
도 1은 본 발명의 일 실시예에 따른 비휘발성 메인 메모리 시스템의 구성 블록도이다.
도 1을 참조하면, 비휘발성 메인 메모리 시스템(Non-Volatile Main Memory System; 10)은 컴퓨팅 시스템(computing system; 100) 및 보조 메모리(sub memory; 142)를 포함할 수 있다.
컴퓨팅 시스템(100)은 중앙 처리 장치(CPU; 110), 메모리 맵핑 관리기(Memory Mapping Manager; 120), 비휘발성 메인 메모리(non-volatile main memory; 130), 보조 메모리 컨트롤러(sub memory controller; 140), 및 버스(150)를 포함할 수 있다. CPU(110)는 적어도 1 이상의 코어(core; 111) 및 캐시(cache; 112)를 포함할 수 있다. 비휘발성 메인 메모리(130)는 페이지 테이블(Page Table(PT); 132)을 포함할 수 있다.
CPU(110)는 운영 체제(Operating System; OS)의 제어 하에 비휘발성 메인 메모리 시스템(10)의 전반적인 동작을 제어할 수 있다. 이를 위해, CPU(110)는 코어(111) 및 캐시(112)를 이용할 수 있다.
실시예에 따라, CPU(110)는 가상 메모리(virtual memory)의 페이지들(pages)과 물리 메모리(physical memory)의 프레임들(frames) 간의 메모리 맵핑(memory mapping)을 생성하기 위해, 비휘발성 메인 메모리 시스템(10)의 전반적인 동작을 제어할 수 있다.
여기서, 상기 페이지들 및 상기 프레임들 각각은 상기 가상 메모리 및 상기 물리 메모리 각각의 저장 공간을 일정한 크기로 나눈 블록들을 의미할 수 있다.
상기 물리 메모리는 비휘발성 메인 메모리(130)일 수 있다.
CPU(110)는 상기 페이지들 및 상기 프레임들 간의 메모리 맵핑의 결과를 페이지 테이블(132)에 저장할 수 있다. CPU(110)는 새로이 추가되는 메모리 맵핑의 결과를 페이지 테이블(132)에 입력하거나, 또는 기존의 메모리 맵핑의 결과를 페이지 테이블(132)로부터 삭제할 수 있다.
그리고, CPU(110)는 파일 입출력을 할 수 있다.
나아가, CPU(110)는 상기 메모리 맵핑을 이용하여 파일 입출력(memory mapped file I/O)을 할 수 있다. CPU(110)가 메모리 맵핑을 이용하여 파일 입출력을 수행하는 경우, 일반적인 파일 입출력에 따라 발생되는 메모리 복사 오버헤드(memory copy overhead)를 피할 수 있고, 기타의 소프트웨어의 도움 없이 파일에 직접 접근할 수 있다.
본 발명의 일 실시예에 따른 비휘발성 메인 메모리(130)는 EEPROM, 플래시 메모리, MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque MRAM), FeRAM(Ferroelectiric RAM), PRAM(Phase change RAM), RRAM(Resistive RAM), 나노튜브 RRAM(nanotube RRAM), 폴리머 RAM(Polymer RAM), 나노 부유 게이트 메모리(Nano Floating Gate Memory), 홀로그래픽 메모리(holographic memory), 분자 전자 메모리 소자(Molecular Electronics Memory Device) 또는 절연 저항 변화 메모리(Insulator Resistance Change Memory)로 구현될 수 있다.
그러나, 본 발명의 범위는 이에 한정되지 않고, 비휘발성 메인 메모리(130)는 전원이 공급되지 않아도 입력된 데이터를 유지할 수 있는 특성을 갖는 지속성 메모리(persistent memory)로 구현될 수도 있다.
비휘발성 메인 메모리(130)에 포함된 페이지 테이블(132)은 가상 메모리(virtual memory)와 물리 메모리(physical memory) 간의 메모리 맵핑의 결과를 저장할 수 있다.
보조 메모리 컨트롤러(140)는 CPU(110)의 제어에 따라, 보조 메모리(142)의 데이터 접근 동작, 예컨대 쓰기 동작 또는 읽기 동작을 제어할 수 있다. 보조 메모리 컨트롤러(140)는 CPU(110)와 별도의 칩으로 구현될 수 있고, CPU(110)의 일부로서 구현될 수도 있다.
보조 메모리(142)는 비휘발성 메인 메모리(130)의 기능을 확장하여, 다량의 데이터를 영구히 보존할 수 있다.
컴퓨팅 시스템(100)은 PC(personal computer) 또는 모바일 장치로 구현될 수 있다. 모바일 장치는 랩탑 컴퓨터(laptop computer), 이동 전화기, 스마트폰, 태블릿(tablet) PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), 모바일 인터넷 장치(mobile internet device(MID)), 웨어러블(wearable) 컴퓨터, 사물 인터넷(internet of things(IoT)) 장치, 만물 인터넷(internet of everything(IoE)) 장치, 드론(drone), 또는 e-북(e-book)으로 구현될 수 있으나, 이에 한정되는 것은 아니다.
컴퓨팅 시스템(100)의 각 구성 요소(110, 111, 112, 120, 130, 132, 140)는 버스(150)를 통해 데이터를 주고받을 수 있다. 버스(150)는 AMBA(advanced microcontroller bus architecture), AHB(advanced extensible interface), ASB(advanced system bus), ACE(AXI coherency extensions), 또는 이들의 결합으로 구현될 수 있으나 이에 한정되는 것은 아니다.
메모리 맵핑 관리기(120)의 구체적인 구성 및 기능에 관하여는 도 5를 참조하여 후술하기로 한다.
도 2는 본 발명의 일 실시예에 따른 비휘발성 메인 메모리가 NAND 플래시 메모리로 구현된 경우의 구성 블록도이다. 도 3은 도 2에 도시된 메모리 셀 어레이를 구체적으로 나타낸 일 실시예이다. 도 4는 도 2에 도시된 메모리 셀 어레이를 구체적으로 나타낸 다른 실시예이다.
도 2를 참조하면, 비휘발성 메인 메모리(130-1)는 메모리 셀 어레이(1410)와 액세스 회로(1412)를 포함할 수 있다.
메모리 셀 어레이(1410)는 각 비트라인에 접속된 각 NAND 메모리 셀 스트링을 포함하고, 상기 각 NAND 메모리 셀 스트링은 직렬로 접속된 다수의 비휘발성 메모리 셀들을 포함할 수 있다.
실시예에 따라, 각 NAND 메모리 셀 스트링은 도 3에 도시된 바와 같이, 2차원적으로 동일한 평면(또는 레이어(layer))에 배치(또는 구현)될 수 있다.
실시예에 따라, 메모리 셀 어레이(1410)는 웨이퍼 적층(wafer stack), 칩 적층(chip stack) 또는 셀 적층(cell stack)을 통하여 도 4에 도시된 바와 같이 3차원적으로 구현될 수도 있다.
도 3 및 도 4를 참조하면, NAND 메모리 셀 스트링은 비트라인에 접속된 스트링 선택 트랜지스터(ST1)와 공통소스라인(Common Source Line; CSL)에 접속된 접지 선택 트랜지스터(ST2) 사이에, 직렬로 접속된 다수의 비휘발성 메모리 셀들을 포함할 수 있다.
상기 스트링 선택 트랜지스터(ST1)의 게이트는 스트링 선택 라인(string selection line ; SSL)에 접속되고, 다수의 비휘발성 메모리 셀들 각각의 게이트는 다수의 워드라인들 각각에 접속되고, 상기 접지 선택 트랜지스터(ST2)의 게이트는 접지 선택 라인(ground selection line; GSL)에 접속될 수 있다. 상기 NAND 메모리 셀 스트링 각각은 각 페이지 버퍼(도 3의 1421-11 내지 1421-1m 또는 도 4의 1421-1 내지 1421-m)에 연결될 수 있다. 이때 실시예에 따라 워드라인들의 개수는 다양하게 구현될 수 있다.
3차원 메모리 셀 어레이는 실리콘 기판 위(on or above)에 배치된 액티브 영역을 갖는 메모리 셀들의 어레이의 하나 또는 그 이상의 물리적인 레벨들 내에서 모노리식하게(monolithically) 형성되고, 상기 메모리 셀들의 작동에 관련된 회로를 포함할 수 있다. 상기 회로는 상기 기판의 내부 또는 위(on or above)에 형성될 수 있다.
모노리식(monolithic) 이라는 용어는 어레이의 각 레벨의 레이어들(layers)이 상기 어레이의 각 하부 레벨(each underlying level)의 레이어들에 직접 증착 (directly deposited )되는 것을 의미한다.
3차원 메모리 셀 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직으로 배향되는(vertically oriented) 수직 NAND 스트링을 포함할 수 있다. 상기 적어도 하나의 메모리 셀은 전하 트랩 레이어(charge trap layer)를 포함할 수 있다.
액세스 회로(1412)는 외부, 예컨대 CPU(120)로부터 출력된 명령 (또는 명령 세트들(command sets))과 어드레스에 따라 데이터 액세스 동작, 예컨대 프로그램 동작, 리드 동작, 또는 이레이즈 동작을 수행하기 위하여 메모리 셀 어레이(1410)를 액세스할 수 있다. 액세스 회로(1410)는 전압 발생기(1440), 로우 디코더(1450), 컨트롤 로직(1460), 컬럼 디코더(1470), 페이지 버퍼 & 감지 증폭기 블록(1420), Y 게이팅 회로(1430) 및 입출력 블록(1480)을 포함할 수 있다.
전압 발생기(1440)는 컨트롤 로직(1460)에 의해 생성된 제어 코드(CMD)에 따라 데이터 액세스 동작에 필요한 전압을 생성할 수 있다. 전압 발생기(1440)는 프로그램 동작을 수행하기 위해 필요한 프로그램 전압(Vpgm)과 프로그램 검증 전압(Vpvfy)을 생성하고, 리드 동작을 수행하기 위하여 필요한 리드 전압(Vrd)들을 생성하고, 이레이즈 동작을 수행하기 위하여 필요한 이레이즈 전압(Verase)과 이레이즈 검증 전압(Vevfy)을 생성하고, 각 동작을 수행하기 위하여 필요한 전압을 로우 디코더(1450)로 출력할 수 있다.
컨트롤 로직(1460)은 CPU(120)로부터 출력된 제어신호(CMD)에 따라 액세스 회로(1412)의 전반적인 동작을 제어할 수 있다. 예컨대, 컨트롤 로직(1460)은 메모리 리드 동작 동안 메모리 리드 상태 정보를 센싱하고, 리드되는 데이터를 CPU(120)로 출력하도록 제어할 수 있다.
컬럼 디코더(1470)는 컨트롤 로직(1460)의 제어 하에 컬럼 어드레스(YADD)들을 디코딩하여 다수의 선택신호들을 Y 게이팅 회로(1430)로 출력할 수 있다.
페이지 버퍼 & 감지 증폭기 블록(1420)은 다수의 페이지 버퍼(Page Buffer; PB)들을 포함할 수 있다. 다수의 페이지 버퍼들(PB) 각각은 다수의 비트라인들 각각에 접속될 수 있다.
다수의 페이지 버퍼들(PB) 각각은 컨트롤 로직(1460)의 제어에 따라 데이터 리드 동작 동안에는 메모리 셀 어레이(1410)에서 리드(read)된 데이터를 임시로 저장하기 위한 드라이버로써 동작할 수 있다. 또한 다수의 페이지 버퍼들(PB) 각각은 컨트롤 로직(1460)의 제어에 따라 리드 동작 동안에 다수의 비트라인들 각각의 전압 레벨을 감지 증폭할 수 있는 감지 증폭할 수 있는 감지 증폭기로써 동작할 수 있다.
Y 게이팅 회로(1430)는 컬럼 디코더(1470)로부터 출력된 다수의 선택신호들에 응답하여 페이지 버퍼 & 감지 증폭기 블록(1420)과 입출력 블록(1480) 사이에서 데이터(DATA)의 전송을 제어할 수 있다.
입출력 블록(1480)은 외부로부터 입력된 데이터(DATA)를 Y 게이팅 회로(1430)로 전송하거나 또는 Y 게이팅 회로(1430)로부터 출력된 데이터(DATA)를 다수의 입출력 핀들(또는 데이터 버스)를 통하여 CPU(120)로 전송할 수 있다.
도 5는 도 1에 도시된 메모리 맵핑 관리기(120)가 포함하는 컴포넌트들의 구성 블록도이다.
도 1 및 도 5를 참조하면, 메모리 맵핑 관리기(120)는 컴포넌트들로써, 인터페이스(I/F; 1000), 맵핑 컨트롤러(Mapping Controller; 1001), 검색 엔진(Search Engine; 1002), 판단기(Determinator; 1003), 메모리 맵핑 저장 공간(Memory Mapping Storage Space; 1004), 및 버스(Bus; 1005)를 포함할 수 있다. 메모리 맵핑 저장 공간(1004)은 제1 데이터 구조 공간(First Data structure Space; 1004a) 및 제2 데이터 구조 공간(Second Data structure Space; 1004b)을 포함할 수 있다.
각 컴포넌트들(1000, 1001, 1002, 1003, 1004, 1004a, 1004b, 및 1005)은, 본 발명의 일 실시예에 따른 비휘발성 메인 메모리 시스템의 메모리 맵핑을 관리할 수 있다.
인터페이스(1000)는 CPU(110)로부터 메모리 맵핑 요청 또는 메모리 맵핑 해제 요청을 수신할 수 있다.
상기 메모리 맵핑 요청 또는 상기 메모리 맵핑 해제 요청은 프로세스가 운영 체제(OS)의 커널의 기능을 사용하기 위한 시스템 호출(system call)일 수 있다.
실시예에 따라, 상기 메모리 맵핑 요청 또는 상기 메모리 맵핑 해제 요청 각각은 인자(argument)들을 포함할 수 있다.
실시예에 따라, 상기 메모리 맵핑 요청이 포함하는 인자들은 할당받고자 하는 가상 메모리 공간상의 주소 정보, 메모리 맵핑의 크기, 권한, 및 방식에 관한 정보, 메모리 맵핑을 하고자 하는 대상 파일의 디스크립터, 및 상기 디스크립터에서 메모리 맵핑을 시작할 오프셋 값을 포함할 수 있다.
실시예에 따라, 상기 메모리 맵핑 해제 요청이 포함하는 인자들은 메모리 맵핑된 가상 메모리 공간상의 시작 주소 및 상기 메모리 맵핑의 크기에 관한 정보를 포함할 수 있다.
인터페이스(1000)는 맵핑 컨트롤러(1001)의 제어 하에, 메모리 맵핑과 관련된 메타 데이터의 검색 요청을 CPU(110)로 전달하고, CPU(110)에 의해 검색된 메타 데이터를 CPU(110)로부터 수신할 수 있다.
상기 메모리 맵핑 요청, 상기 메모리 맵핑 해제 요청, 및 상기 메타 데이터와 관련된 구체적인 실시예들은, 도 6 및 도 10을 참조하여 상세하게 후술될 것이다.
맵핑 컨트롤러(Mapping Controller; 1001)는 메모리 맵핑 관리기(120)가 포함하는 각 컴포넌트들을 제어할 수 있다.
실시예에 따라, 맵핑 컨트롤러(1001)는 인터페이스(1000)를 통해 전달된 메모리 맵핑 요청, 메모리 맵핑 해제 요청이 포함하는 인자들을 메모리 맵핑 관리기(120)가 포함하는 각 컴포넌트들로 전달할 수 있다.
이 경우, 맵핑 컨트롤러(1001)는 상기 요청들에 따른 본 발명의 일 실시예들의 실행이 종료될 때까지, 상기 메모리 맵핑 요청 또는 상기 메모리 맵핑 해제 요청과 관련된 작동을 유보시키는 요청을 CPU(110)에게 전달할 수 있다.
실시예에 따라, 맵핑 컨트롤러(1001)는 메모리 맵핑을 생성하여 메모리 맵핑 저장 공간(1004)에 저장하거나 또는 메모리 맵핑 저장 공간(1004)에 저장된 메모리 맵핑을 해제시킬 수 있다. 그리고, 맵핑 컨트롤러(1001)는 메모리 맵핑 저장 공간(1004)에 저장된 메모리 맵핑을 수정할 수도 있다.
검색 엔진(Search Engine; 1002)은 맵핑 컨트롤러(1001)의 제어 하에, 메모리 맵핑 저장 공간(1004)에 저장된 메모리 맵핑을 검색할 수 있다. 이 경우, 검색 엔진(1002)은 제1 데이터 구조를 이용할 수 있다.
검색 엔진(1002)은 맵핑 컨트롤러(1001)의 제어 하에, 메모리 맵핑 저장 공간(1004)에 저장된 메모리 맵핑을 해제시킬 수 있다. 이 경우, 검색 엔진(1002)은 제2 데이터 구조를 이용할 수 있다.
실시예에 따라, 상기 제1 데이터 구조는 해시 테이블(hash table)이고, 상기 제2 데이터 구조는 프리 리스트(free list)일 수 있다.
상기 제1 데이터 구조 및 상기 제2 데이터 구조에 관한 구체적인 설명은, 도 8 및 도 9을 참조하여 상세하게 후술될 것이다.
판단기(1003)는 메모리 맵핑 요청에 따라 요청된 메모리 맵핑 또는 메모리 맵핑 해제 요청에 따라 해제하고자 하는 메모리 맵핑이 파일의 맵핑인지 여부를 판단할 수 있다.
실시예에 따라, 판단기(1003)는 상기 메모리 맵핑 요청에 포함된 인자들 중 어느 하나에 기초하여, 요청된 메모리 맵핑이 파일의 맵핑인지 여부를 판단할 수 있다. 그리고, 판단기(1003)는 상기 메모리 맵핑 해제 요청에 따라 전달된 메타 데이터들에 기초하여, 해제하고자 하는 메모리 맵핑이 파일의 맵핑인지 여부를 판단할 수 있다.
판단기(1003)는 메모리 맵핑 저장 공간(1004)에서 검색 엔진(1002)에 의하여 검색된 메모리 맵핑의 가상 주소 공간상에서의 영역이 상기 요청된 메모리 맵핑이 요구하는 가상 주소 공간상에서의 영역을 포함하는지 여부를 판단할 수 있다.
실시예에 따라, 상기 검색된 메모리 맵핑의 가상 주소 공간상에서의 영역은 상기 검색된 메모리 맵핑과 관련된 메타 데이터가 포함하는 구조체 멤버를 이용하여 정하여질 수 있다.
실시예에 따라, 상기 요청된 메모리 맵핑이 요구하는 가상 주소 공간상에서의 영역은 상기 메모리 맵핑 요청이 포함하는 인자들을 이용하여 정하여질 수 있다.
메모리 맵핑 저장 공간(1004)은 맵핑 컨트롤러(1001)의 제어 하에, 메모리 맵핑을 저장할 수 있다.
메모리 맵핑 관리기(120)의 각 구성요소(1000, 1001, 1002, 1003, 1004, 1004a, 및 1004b)는 버스(1005)를 통해 데이터를 주고받을 수 있다.
본 발명의 일 실시예에 따른 메모리 맵핑 관리기(120), 및 메모리 맵핑 관리기(120)가 포함하는 각 구성요소들(1000, 1001, 1002, 1003, 1004, 1004a, 및 1004b)의 작동 및 기능에 관하여는 도 6 내지 도 11을 참조하여 보다 상세하게 후술될 것이다.
실시예에 따라, 메모리 맵핑 관리기(120), 및 메모리 맵핑 관리기(120)가 포함하는 각 구성요소들(1000, 1001, 1002, 1003, 1004, 1004a, 및 1004b) 각각은 하드웨어 컴포넌트로 구현될 수 있다.
이 경우, 인터페이스(1000), 맵핑 컨트롤러(1001), 검색 엔진(1002), 판단기(1003), 메모리 맵핑 저장 공간(1004), 및 버스(1005) 각각은, 컴퓨팅 시스템(100)의 내부에 구현될 수 있다.
보다 구체적으로, CPU(110)의 일부로서 구현될 수 있고, CPU(110)와 별도의 칩으로 구현될 수도 있다. CPU(110)와 별도의 칩으로 구현되는 경우, 메모리 관리 유닛(Memory Management Unit(MMU); 미도시)의 내부에 구현될 수 있다. 그리고, 제1 데이터 구조(1004a) 및 제2 데이터 구조(1004b)는 캐시(112)에 저장될 수 있다.
실시예에 따라, 메모리 맵핑 관리기(120), 및 메모리 맵핑 관리기(120)가 포함하는 각 구성요소들(1000, 1001, 1002, 1003, 1004, 1004a, 및 1004b) 각각은 소프트웨어 컴포넌트로 구현될 수 있다.
이 경우, 인터페이스(1000), 맵핑 컨트롤러(1001), 검색 엔진(1002), 판단기(1003), 메모리 맵핑 저장 공간(1004), 및 버스(1005) 각각은, 비휘발성 메인 메모리(130)에 저장되어, 운영 체제(OS)에 의해 실행될 수 있다.
도 6은 메모리 맵핑 해제 요청이 있는 경우, 본 발명의 일 실시예에 따른 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법을 설명하기 위한 흐름도이다.
도 1 내지 도 6을 참조하면, 본 발명의 일 실시예에 따른 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법은, 메모리 맵핑 해제 요청을 수신하는 단계(S100)를 포함할 수 있다.
상기 메모리 맵핑 해제 요청은 프로세스에 의한 시스템 호출로써, 상기 메모리 맵핑 해제 요청의 수신은 인터페이스(1000)에 의해 수행될 수 있다. 인터페이스(1000)는 CPU(110)로부터 상기 메모리 맵핑 해제 요청을 수신할 수 있다.
실시예에 따라, 상기 메모리 맵핑 해제 요청은 인자들을 포함할 수 있다.
상기 인자들은 메모리 맵핑된 가상 메모리 공간상의 시작 주소 및 상기 메모리 맵핑의 크기에 관한 정보를 포함할 수 있다.
본 발명의 일 실시예에 따른 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법은, S100 단계 후에, 해제 요청된 메모리 맵핑과 관련된 메타 데이터를 검색하는 단계(S102)를 포함할 수 있다.
S102 단계에 따른 메타 데이터의 검색은, 매핑 컨트롤러(1001)의 요청에 의해, CPU(110)에 의해 수행될 수 있다. 매핑 컨트롤러(1001)의 요청은 인터페이스(1000)를 통해 CPU(110)로 전달될 수 있다.
상기 메타 데이터에 관한 구체적인 설명을 위해 도 7을 참조하기로 한다.
도 7은 메모리 맵핑과 관련된 메타 데이터를 설명하기 위한 도면이다.
실시예에 따라, 상기 메타 데이터는 가상 메모리의 관리를 위해 운영 체제(OS)가 제공하는 자료구조일 수 있다.
실시예에 따라, 상기 메타 데이터는 구조체 및 구조체 멤버들을 포함할 수 있다. 그리고, 상기 구조체 멤버로써, 상기 메모리 맵핑이 이루어진 가상 메모리 공간상의 시작 주소를 포함할 수 있다.
실시예에 따라, 상기 해제 요청된 메모리 맵핑과 관련된 메타 데이터의 검색은, S100 단계에 따른 메모리 맵핑 해제 요청에 포함된 인자와 상기 메모리 맵핑과 관련된 메타 데이터에 포함된 구조체 멤버들을 비교함으로써 이루어질 수 있다.
실시예에 따라, 검색되는 상기 메타 데이터는, 상기 인자에 포함된 상기 메모리 맵핑된 가상 메모리 공간 상의 시작 주소와 일치하는 구조체 멤버를 갖는 메타 데이터들일 수 있다.
다시 도 1 내지 도 6을 참조하면, CPU(110)는 S102 단계에 따라 검색된 상기 메타 데이터들을 인터페이스(1000)를 통해 맵핑 컨트롤러(1001)로 전달할 수 있다. 맵핑 컨트롤러(1001)는 전달된 상기 메타 데이터들을 판단기(1003)로 전달할 수 있다.
본 발명의 일 실시예에 따른 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법은, S102 단계 후에, 상기 해제 요청된 메모리 맵핑이 파일의 맵핑인지 여부를 판단하는 단계(S104)를 포함할 수 있다.
S104 단계에 따른 판단은, 판단기(1003)에 의해 수행될 수 있다.
도 7을 참조하면, 판단기(1003)는 맵핑 컨트롤러(1001)에 의해 전달된 상기 메타 데이터들의 구조체 멤버 중 파일의 맵핑 여부에 관한 정보를 포함하는 구조체 멤버를 참조하여, 상기 해제 요청된 메모리 맵핑이 파일의 맵핑인지 여부를 판단할 수 있다.
본 발명의 일 실시예에 따른 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법은, S104 단계 후에, 상기 해제 요청된 메모리 맵핑이 파일의 맵핑인 경우(S104 단계에서 Yes인 경우), 상기 메모리 맵핑과 관련된 메타 데이터의 접근 권한을 수정하는 단계(106a) 및 상기 메모리 맵핑과 관련된 메타 데이터를 메모리 맵핑 저장 공간에 별도로 저장하는 단계(S106b)를 포함할 수 있다.
S106a 단계에 따른 접근 권한의 수정은 맵핑 컨트롤러(1001)에 의해 수행될 수 있다.
도 7을 참조하면, 맵핑 컨트롤러(1001)는 상기 해제 요청된 메모리 맵핑과 관련된 메타 데이터의 구조체 멤버 중 접근 권한을 나타내는 구조체 멤버를 수정할 수 있다.
실시예에 따라, 상기 수정된 접근 권한은 읽기 전용(read only)일 수 있다.
S106b 단계에 따른 메모리 맵핑과 관련된 메타 데이터의 별도의 저장은 맵핑 컨트롤러(1001)에 의해 수행될 수 있다.
맵핑 컨트롤러(1001)는 메모리 맵핑 저장 공간(1004)에 상기 메모리 맵핑과 관련된 메타 데이터를 별도로 저장할 수 있다.
실시예에 따라, 메모리 맵핑 저장 공간(1004)에 저장된 상기 메모리 맵핑과 관련된 메타 데이터는 제1 데이터 구조 및 제2 데이터 구조를 이용하여 관리될 수 있다.
상기 제1 데이터 구조 및 상기 제2 데이터 구조에 관한 구체적인 설명을 위해 도 8 및 도 9를 참조하기로 한다.
도 8은 메타 데이터를 관리하기 위한 제1 데이터 구조를 설명하기 위한 도면이다. 도 9는 메타 데이터를 관리하기 위한 제2 데이터 구조를 설명하기 위한 도면이다.
상기 제1 데이터 구조는 임의의 상기 메타 데이터들 중 특정 구조체 멤버를 갖는 상기 메타 데이터들을 고속으로 검색하기 위한 데이터 구조일 수 있다.
상기 제2 데이터 구조는 임의의 상기 메타 데이터들 중 가장 오래된 상기 메타 데이터를 삭제하기 위한 데이터 구조일 수 있다.
실시예에 따라, 상기 제1 데이터 구조는 해시 테이블이고, 상기 제2 데이터 구조는 프리 리스트일 수 있다.
도 8을 참조하면, 상기 해시 테이블은 메타 데이터들(M(0)~M(j-1), M(j)~M(k-1))을 버켓(bucket)에 저장할 수 있다.
실시예에 따라, 상기 해시 테이블의 해시키(hashkey)는 파일의 경로(file location)일 수 있고, 상기 해시 테이블은 해시 충돌을 피하기 위해, 체이닝(chaining) 방식으로 구현될 수 있다.
도 9를 참조하면, 상기 프리 리스트는 S106b 단계에 따라 저장되는 순서대로 메타 데이터들(M(0)~M(j-1), M(j)~M(k-1))을 저장할 수 있다.
실시예에 따라, 상기 프리 리스트는 S106b 단계에 따른 메타 데이터들을 상기 프리 리스트의 테일(tail)에 추가할 수 있다.
도 7, 도 8, 및 도 9를 참조하면, 상기 해시 테이블 및 상기 프리 리스트에 저장된 메타 데이터들 각각은 상기 해시 테이블 및 상기 프리 리스트에서의 위치를 가리키기 위한 구조체 멤버들을 포함할 수 있다.
본 발명의 일 실시예에 따른 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법은, S104 단계 후에, 상기 해제 요청된 메모리 맵핑이 파일의 맵핑이 아닌 경우(S104 단계에서 NO인 경우), 상기 메모리 맵핑을 해제하는 단계(S108)를 포함할 수 있다.
S108 단계에 따른 메모리 맵핑의 해제는 맵핑 컨트롤러(1001)의 요청에 의해, CPU(110)에 의해 수행될 수 있다. CPU(110)는 운영 체제의 제어 하에, 상기 메모리 맵핑을 해제시킬 수 있다. 상기 메모리 맵핑의 해제에 따라 비휘발성 메인 메모리(130) 내의 페이지 테이블(132)에 존재하였던 상기 메모리 맵핑은 삭제될 수 있다.
즉, 본 발명의 일 실시예에 따른 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법은, 메모리 맵핑 해제 요청이 수신되고, 상기 해제 요청된 메모리 맵핑이 파일의 맵핑인 경우, 상기 메모리 맵핑과 관련된 메타 데이터를 메모리 맵핑 저장 공간(1004)에 별도로 저장함으로써, 상기 해제 요청된 메모리 맵핑을 보관할 수 있는 효과가 있다.
도 10은 메모리 맵핑 요청이 있는 경우, 본 발명의 일 실시예에 따른 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법을 설명하기 위한 흐름도이다.
도 1, 도 5, 및 도 10을 참조하면, 본 발명의 일 실시예에 따른 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법은, 메모리 맵핑 요청을 수신하는 단계(S200)를 포함할 수 있다.
상기 메모리 맵핑 요청은 프로세스에 의한 시스템 호출로써, S200 단계에 따른 메모리 맵핑 요청의 수신은 인터페이스(1000)에 의해 수행될 수 있다. 인터페이스(1000)는 CPU(110)로부터 상기 메모리 맵핑 요청을 수신할 수 있다.
상기 메모리 맵핑 요청은 인자들을 포함할 수 있다.
실시예에 따라, 상기 인자들은 상기 메모리 맵핑 요청에 따라 할당받고자 하는 가상 메모리의 주소 정보, 상기 메모리 맵핑의 크기, 권한 및 방식에 관한 정보, 메모리 맵핑을 하고자 하는 대상 파일의 파일 디스크립터, 또는 상기 파일 디스크립터에서 메모리 맵핑을 시작할 오프셋 값을 포함할 수 있다.
인터페이스(1000)에 의해 수신된 상기 메모리 맵핑 요청은, 맵핑 컨트롤러(1001)의 제어 하에 판단기(1003)로 전달될 수 있다.
본 발명의 일 실시예에 따른 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법은, S200 단계 후에, 요청된 메모리 맵핑이 파일의 맵핑인지 여부를 판단하는 단계(S202)를 포함할 수 있다.
S202 단계에 따른 판단은, 판단기(1003)에 의해 수행될 수 있다.
판단기(1003)는, 맵핑 컨트롤러(1001)의 제어 하에 전달된 상기 메모리 맵핑 요청에 포함된 인자들 중 어느 하나에 기초하여, 요청된 메모리 맵핑이 파일의 맵핑인지 여부를 판단할 수 있다.
실시예에 따라, 판단기(1003)는, 상기 메모리 맵핑 요청에 포함된 인자들 중 상기 메모리 맵핑의 방식에 관한 정보에 기초하여, 요청된 메모리 맵핑이 파일의 맵핑인지 여부를 판단할 수 있다.
본 발명의 일 실시예에 따른 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법은, S202 단계에 따른 판단 결과, 요청된 메모리 맵핑이 파일의 맵핑인 경우(S202 단계에서 YES인 경우), 메모리 맵핑 저장 공간에서 상기 파일과 동일한 파일에 대한 메모리 맵핑을 검색하는 단계(S204)를 포함할 수 있다.
S204 단계에 따른 검색은, 맵핑 컨트롤러(1001)의 제어 하에, 검색 엔진(1002)에 의해 수행될 수 있다.
검색 엔진(1002)은 상기 파일과 동일한 파일에 대한 메모리 맵핑의 검색을 위해, 메모리 맵핑 저장 공간(1004)에 저장된 메모리 맵핑을 검색할 수 있다.
도 8 및 도 9를 참조하여 상술한 바와 같이, 메모리 맵핑 저장 공간(1004)에 저장된 메모리 맵핑은 제1 데이터 구조 및 제2 데이터 구조에 의해 관리될 수 있다.
실시예에 따라, 상기 제1 데이터 구조는 해시 테이블이고, 상기 제2 데이터 구조는 프리 리스트일 수 있다.
검색 엔진(1002)는 상기 메모리 맵핑 저장 공간(1004)에서 상기 파일과 동일한 파일에 대한 메모리 맵핑의 검색을 위해 상기 제1 데이터 구조를 이용할 수 있다.
본 발명의 일 실시예에 따른 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법은, S204 단계 후에, 상기 검색된 메모리 맵핑의 가상 주소 공간상에서의 영역이 상기 요청된 메모리 맵핑이 요구하는 가상 주소 공간상에서의 영역을 포함하는지 여부를 판단하는 단계(S206)를 포함할 수 있다.
S206 단계에 따른 판단은, 판단기(1003)에 의해 수행될 수 있다.
실시예에 따라, 상기 요청된 메모리 맵핑이 요구하는 가상 주소 공간상에서의 영역은 상기 메모리 맵핑 요청이 포함하는 인자들을 이용하여 정하여질 수 있다. 상기 인자들은 상기 메모리 맵핑 요청에 따라 할당받고자 하는 가상 메모리의 주소 정보, 및 상기 메모리 맵핑의 크기에 관한 정보일 수 있다.
실시예에 따라, 상기 검색된 메모리 맵핑의 가상 주소 공간상에서의 영역은 상기 검색된 메모리 맵핑과 관련된 메타 데이터가 포함하는 구조체 멤버를 이용하여 정하여질 수 있다.
S206 단계에 따른 판단 결과 검색된 메모리 맵핑의 가상 주소 공간상에서의 영역이 요청된 메모리 맵핑이 요구하는 가상 주소 공간상에서의 영역을 포함하는 경우에 관한 구체적인 설명을 위해 도 11을 참조하기로 한다.
도 11은 검색된 메모리 맵핑의 가상 주소 공간상에서의 영역이 요청된 메모리 맵핑이 요구하는 가상 주소 공간상에서의 영역을 포함하는 경우를 설명하기 위한 도면이다.
경우 1(Case 1)은 요청된 메모리 맵핑이 요구하는 가상 주소 공간상에서의 영역(MRQT1)이 검색된 메모리 맵핑의 가상 주소 공간상에서의 영역(MSRH1)과 전부 일치하는 경우이다.
경우 2(Case 2)는 요청된 메모리 맵핑이 요구하는 가상 주소 공간상에서의 영역(MRQT2)이 검색된 메모리 맵핑의 가상 주소 공간상에서의 영역(MSRH2, MSRG2')과 부분적으로 일치(즉, MSRH2)하는 경우이다.
경우 3(Case 3)는 경우 2와 같이, 요청된 맵핑이 요구하는 가상 주소 공간상에서의 영역(MRQT3)이 검색된 메모리 맵핑의 가상 주소 공간상에서의 영역(MSRH3, MSRH3', MSRH3'')과 부분적으로 일치(즉, MSRH3)하는 경우이다.
즉, S206 단계에 따른 판단 결과 검색된 메모리 맵핑의 가상 주소 공간상에서의 영역이 요청된 메모리 맵핑이 요구하는 가상 주소 공간상에서의 영역을 포함하는 경우는, 실시예에 따라, 경우 1 내지 경우 3를 포함할 수 있다.
본 발명의 일 실시예에 따른 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법은, S206 단계에 따른 판단 결과 검색된 메모리 맵핑의 가상 주소 공간상에서의 영역이 요청된 메모리 맵핑이 요구하는 가상 주소 공간상에서의 영역을 포함하는 경우(S206 단계에서 YES인 경우), 상기 요청된 메모리 맵핑의 접근 권한과 일치되도록 상기 검색된 메모리 맵핑의 접근 권한을 수정하는 단계(S208)를 포함할 수 있다.
도 10을 참조하면, S208 단계에 따른 접근 권한의 수정은, 맵핑 컨트롤러(1001)에 의해 수행될 수 있다.
실시예에 따라, 상기 요청된 메모리 맵핑의 접근 권한 및 상기 검색된 메모리 맵핑의 접근 권한은 각각 읽기 전용(read only), 쓰기 전용(write only), 실행 전용(execute only), 및 이들의 가능한 조합들 중 어느 하나일 수 있다.
맵핑 컨트롤러(1001)는 상기 검색된 메모리 맵핑과 관련된 메타 데이터의 구조체 멤버 중 접근 권한을 나타내는 구조체 멤버를 수정함으로써, 상기 검색된 메모리 맵핑의 접근 권한을 상기 요청된 메모리 맵핑의 접근 권한과 일치시킬 수 있다.
본 발명의 일 실시예에 따른 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법은, S208 단계 후에, 검색된 메모리 맵핑을 재사용하는 단계(S210)를 포함할 수 있다.
도 10을 참조하면, S210 단계에 따른 검색된 메모리 맵핑의 재사용은, 맵핑 컨트롤러(1001)에 의해 수행될 수 있다. 맵핑 컨트롤러(1001)는 검색된 메모리 맵핑과 관련된 메타 데이터를 인터페이스(1000)를 통해 CPU(110)로 전달할 수 있다.
S210 단계에 따라 검색된 메모리 맵핑이 재사용되는 태양의 구체적인 설명을 위해 다시 도 7 및 도 11을 참조하기로 한다.
경우 1(Case 1)은 요청된 메모리 맵핑이 요구하는 가상 주소 공간상에서의 영역(MRQT1)이 검색된 메모리 맵핑의 가상 주소 공간상에서의 영역(MSRH1)과 전부 일치하는 경우이다.
경우 2(Case 2) 및 경우 3(Case 3)는 요청된 메모리 맵핑이 요구하는 가상 주소 공간상에서의 영역(MRQT2, MRQT3)이 검색된 메모리 맵핑의 가상 주소 공간상에서의 영역(MSRH2, MSRG2', MSRH3, MSRG3', MSRH3'')과 부분적으로 일치(즉, MSRH2, MSRH3)하는 경우이다.
실시예에 따라, 검색된 메모리 맵핑은 그 가상 주소 공간상에서의 영역이 요청된 메모리 맵핑의 가상 주소 공간상에서의 영역과 일치되는 범위 내에서 재사용될 수 있다. 예컨대, 경우 1 내지 경우 3에서, 검색된 메모리 맵핑 중 요청된 메모리 맵핑의 가상 주소 공간상에서의 영역과 일치하는 메모리 맵핑(MSRH1, MSRH2, MSRH3)은 재사용될 수 있다.
이를 위해 검색된 메모리 맵핑의 메타 데이터는 요청된 메모리 맵핑의 가상 주소 공간상에서의 영역과 같은 범위를 갖도록 수정될 수 있다.
상기 수정은, 상기 메타 데이터가 포함하는 구조체 멤버들 중 가상 메모리 공간상의 시작 주소 및 가상 메모리 공간상의 마지막 주소를 수정함으로써, 이루어질 수 있다.
실시예에 따라, 검색된 메모리 맵핑은 그 가상 주소 공간상에서의 영역이 요청된 메모리 맵핑의 가상 주소 공간상에서의 영역과 일치하지 않는 범위 내에서 메모리 맵핑 저장 공간(1004)에 저장될 수 있다. 예컨대, 경우 2 및 경우 3에서, 검색된 메모리 맵핑 중 요청된 메모리 맵핑의 가상 주소 공간상에서의 영역과 일치하지 않는 메모리 맵핑(MSRH2', MSRH3', MSRH3'')은 메모리 맵핑 저장 공간(1004)에 저장될 수 있다.
이를 위해 검색된 메모리 맵핑의 메타 데이터와 동일한 메모리 맵핑의 메타 데이터가 생성될 수 있다. 생성된 메모리 맵핑의 메타 데이터는 요청된 메모리 맵핑의 가상 주소 공간상에서의 영역을 제외한 범위를 갖도록 수정될 수 있다.
상기 수정은, 상기 검색된 메모리 맵핑의 메타 데이터와 동일한 메모리 맵핑의 메타 데이터가 포함하는 구조체 멤버들 중 가상 메모리 공간상의 시작 주소 및 가상 메모리 공간상의 마지막 주소를 수정함으로써, 이루어질 수 있다.
즉, 본 발명의 일 실시예에 따른 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법은, 메모리 맵핑 요청이 수신되고, 상기 요청된 메모리 맵핑이 파일의 맵핑인 경우, 메모리 맵핑 저장 공간에 저장된 메모리 맵핑을 재사용할 수 있으므로, 상기 요청된 메모리 맵핑의 생성에 따른 시간 및 비용을 감소시킬 수 있는 효과가 있다.
본 발명의 일 실시예에 따른 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법은, S206 단계에 따른 판단 결과 검색된 메모리 맵핑의 가상 주소 공간상에서의 영역이 요청된 메모리 맵핑이 요구하는 가상 주소 공간상에서의 영역을 포함하지 않는 것으로 판단된 경우(S206 단계에서 NO인 경우), 메모리 맵핑 저장 공간의 부족 여부를 판단하는 단계(S212)를 포함할 수 있다.
S212 단계에 따른 판단은, 판단기(1003)에 의해 수행될 수 있다.
상기 메모리 맵핑 저장 공간(1004)의 최대값은 본 발명의 일 실시예에 따른 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법을 수행하기 위해 미리 설정될 수 있다.
본 발명의 일 실시예에 따른 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법은, S212 단계에 따른 판단 결과 메모리 맵핑 저장 공간이 부족한 것으로 판단된 경우(S212 단계에서 YES인 경우), 메모리 맵핑 저장 공간을 해제하는 단계(S214)를 포함할 수 있다.
S214 단계에 따른 메모리 맵핑 저장 공간(1004)의 해제는, 맵핑 컨트롤러(1001)에 의해 수행될 수 있다. 맵핑 컨트롤러(1001)는 메모리 맵핑 저장 공간의 해제를 위해, 메모리 맵핑 저장 공간(1004)에 저장된 메모리 맵핑과 관련된 메타 데이터를 해제시킬 수 있다.
상기 해제되는 메모리 맵핑과 관련된 메타 데이터는 맵핑 컨트롤러(1001)의 제어 하에, 검색 엔진(1002)에 의해 수행될 수 있다.
도 8 및 도 9를 참조하여 상술한 바와 같이, 메모리 맵핑 저장 공간(1004)에 저장된 메모리 맵핑은 제1 데이터 구조 및 제2 데이터 구조에 의해 관리될 수 있다.
실시예에 따라, 상기 제1 데이터 구조는 해시 테이블이고, 상기 제2 데이터 구조는 프리 리스트일 수 있다.
검색 엔진(1002)은 상기 해제되는 메모리 맵핑과 관련된 메타 데이터를 선택하기 위해 상기 제2 데이터 구조를 이용할 수 있다. 검색 엔진(1002)에 의해 선택되는 상기 메모리 맵핑과 관련된 메타 데이터는 메모리 맵핑 저장 공간(1004)에 저장된 메모리 맵핑과 관련된 메타 데이터들 중 가장 오래된 상기 메타 데이터일 수 있다.
맵핑 컨트롤러(1001)는 검색 엔진(1002)에 의해 선택된 메모리 맵핑과 관련된 메타 데이터를 상기 제1 데이터 구조 및 상기 제2 데이터 구조로부터 해제시킬 수 있다.
즉, 본 발명의 일 실시예에 따른 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법은, 메모리 맵핑 저장 공간이 부족한 경우, 가장 오래된 메모리 맵핑과 관련된 메타 데이터들을 해제시킴으로써, 메모리 맵핑 저장 공간에 저장된 메모리 맵핑과 관련된 메타 데이터들을 유지 및 관리할 수 있는 효과가 있다.
본 발명의 일 실시예에 따른 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법은, S214 단계 후, 요청된 메모리 맵핑을 생성하는 단계(S216)를 포함할 수 있다.
나아가, 본 발명의 일 실시예에 따른 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법은, S212 단계에 따른 판단 결과 메모리 맵핑 저장 공간이 부족하지 않은 것으로 판단된 경우(S212 단계에서 NO인 경우)에도 요청된 메모리 맵핑을 생성하는 단계(S216)를 포함할 수 있다.
S216 단계에 따른 요청된 메모리 맵핑의 생성은, 맵핑 컨트롤러(1001)의 요청에 의해, CPU(110)에 의해 수행될 수 있다. 맵핑 컨트롤러(1001)는 요청된 메모리 맵핑과 관련된 메타 데이터를 생성하여, CPU(110)에게 전달할 수 있다.
CPU(110)는 페이지 폴트의 발생시, 운영 체제의 제어 하에, 상기 요청된 메모리 맵핑과 관련된 메타 데이터를 이용하여, 상기 요청된 메모리 맵핑을 생성할 수 있다. 상기 요청된 메모리 맵핑은 비휘발성 메인 메모리(130) 내의 페이지 테이블(132)에 저장될 수 있다.
본 발명의 일 실시예에 따른 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법은, S202 단계에 따른 판단 결과, 요청된 메모리 맵핑이 파일의 맵핑이 아닌 것으로 판단된 경우(S202 단계에서 NO인 경우), 무기명 메모리 맵핑을 생성하는 단계(S218)를 포함할 수 있다.
S218 단계에 따른 무기명 메모리 맵핑의 생성은, 맵핑 컨트롤러(1001)의 요청에 의해, CPU(110)에 의해 수행될 수 있다.
맵핑 컨트롤러(1001)는 생성된 무기명 메모리 맵핑과 관련된 메타 데이터를 생성하여, CPU(110)에게 전달할 수 있다.
CPU(110)는 페이지 폴트의 발생시, 운영 체제의 제어 하에, 상기 무기명 메모리 맵핑과 관련된 메타 데이터를 이용하여, 상기 무기명 메모리 맵핑을 생성할 수 있다. 상기 무기명 메모리 맵핑은 비휘발성 메인 메모리(130) 내의 페이지 테이블(132)에 저장될 수 있다.
도 12는 도 1에 도시된 CPU 및 비휘발성 메인 메모리를 포함하는 시스템의 일 실시예를 나타내는 구성 블록도이다.
도 1 및 도 12를 참조하면, 비휘발성 메인 메모리를 포함하는 시스템(20) 은 전자 장치 또는 휴대용 장치(portable device)로 구현될 수 있다. 상기 휴대용 장치는 이동 전화기 (cellular phone), 스마트폰(smart phone), 또는 태블릿(tablet) PC로 구현될 수 있다.
상기 시스템(20)은 호스트(210)와 메모리 장치(200)를 포함한다. 메모리 장치(200)는 도 1의 메모리 장치(140)일 수 있다.
실시 예에 따라, 호스트(210)와 메모리 장치(200)는 패키지로 패키징될 수 있다. 이 경우, 패키지는 시스템 보드(미도시) 위에 마운트될 수 있다.
호스트(210)는 메모리 장치(200)의 테스트 동작 및 데이터 처리 동작, 예컨대 쓰기 동작 또는 읽기 동작을 제어할 수 있는 메모리 컨트롤러(220)를 포함한다.
메모리 컨트롤러(220)는 시스템(20)의 전반적인 동작을 제어하는 호스트(210)에 의하여 제어된다. 실시 예에 따라, 메모리 컨트롤러(220)는 호스트(210)와 메모리 장치(200) 사이에 접속될 수 있다.
메모리 장치(200)에 저장된 데이터는, 호스트(210)의 제어에 따라, 디스플레이(230)를 통하여 디스플레이될 수 있다.
무선 송수신기(240)는 안테나(ANT)를 통하여 무선 신호를 주거나 받을 수 있다. 예컨대, 무선 송수신기(240)는 안테나(ANT)를 통하여 수신된 무선 신호를 호스트(210)가 처리할 수 있는 신호로 변환할 수 있다. 따라서 호스트(210)는 무선 송수신기(240)로부터 출력된 신호를 처리하고, 처리된 신호를 메모리 장치(200)에 저장하거나 또는 디스플레이(230)를 통하여 디스플레이할 수 있다.
무선 송수신기(240)는 호스트(210)로부터 출력된 신호를 무선 신호로 변환하고 변환된 무선 신호를 안테나(ANT)를 통하여 외부로 출력할 수 있다.
입력 장치(250)는 호스트(210)의 동작을 제어하기 위한 제어 신호 또는 호스트(210)에 의하여 처리될 데이터를 입력할 수 있는 장치로서, 터치 패드 (touch pad)와 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키패드(keypad), 또는 키보드로 구현될 수 있다.
호스트(210)는 메모리 장치(200)로부터 출력된 데이터, 무선 송수신기(240)로부터 출력된 무선 신호, 또는 입력 장치(250)로부터 출력된 데이터가 디스플레이(230)를 통하여 디스플레이될 수 있도록 디스플레이(230)를 제어할 수 있다.
도 13은 도 1에 도시된 CPU 및 비휘발성 메인 메모리를 포함하는 시스템의 다른 실시예를 나타내는 구성 블록도이다.
도 1 및 도 13을 참조하면, 시스템(30)은 PC(personal computer), 태블릿(tablet) PC, 넷-북(net-book), e-리더(e-reader), PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 또는 MP4 플레이어로 구현될 수 있다.
시스템(30)은 시스템(30)의 전반적인 동작을 제어하기 위한 호스트(310)와 메모리 장치(300)를 포함한다. 메모리 장치(300)는 도 1에 도시된 메모리 장치(140)를 의미할 수 있다.
실시 예에 따라, 호스트(310)와 메모리 장치(300)는 패키지로 패키징될 수 있다. 패키지는 시스템 보드(미도시) 위에 마운트될 수 있다.
호스트(310)는 메모리 장치(300)의 동작을 제어하는 메모리 컨트롤러(320)를 포함할 수 있다. 메모리 컨트롤러(320)는 도 1의 메모리 컨트롤러(200)일 수 있다.
호스트(310)는 입력 장치(340)에 의하여 발생한 입력 신호에 따라 메모리 장치(300)에 저장된 데이터를 디스플레이(330)를 통하여 디스플레이할 수 있다. 예컨대, 입력 장치(340)는 터치 패드(touch pad) 또는 컴퓨터 마우스 (computer mouse)와 같은 포인팅 장치(pointing device), 키패드(keypad), 또는 키보드로 구현될 수 있다.
도 14는 도 1에 도시된 CPU 및 비휘발성 메인 메모리를 포함하는 시스템의 또 다른 실시예를 나타내는 구성 블록도이다.
도 1 및 도 14를 참조하면, 시스템(40)은 이미지 처리 장치(Image Process Device), 예컨대 디지털 카메라 또는 디지털 카메라가 부착된 이동 전화기 또는 스마트 폰으로 구현될 수 있다.
시스템(40)은 호스트(410), 메모리 장치(400)와 메모리 장치(400)의 데이터 처리 동작, 예컨대 라이트 동작 또는 리드 동작을 제어할 수 있는 메모리 컨트롤러(420)를 포함한다. 또한, 시스템(40)은 이미지 센서(430) 및 디스플레이(440)를 더 포함한다.
컴퓨터 시스템(40)의 이미지 센서(430)는 광학 이미지를 디지털 신호들로 변환하고, 변환된 디지털 신호들은 호스트(410) 또는 메모리 컨트롤러(420)로 전송된다. 호스트(410)의 제어에 따라, 상기 변환된 디지털 신호들은 디스플레이(440)를 통하여 디스플레이되거나 또는 메모리 컨트롤러(420)를 통하여 메모리 장치(400)에 저장될 수 있다.
또한, 메모리 장치(400)에 저장된 데이터는 호스트(410) 또는 메모리 컨트롤러(420)의 제어에 따라 디스플레이(440)를 통하여 디스플레이 된다.
실시 예에 따라 메모리 장치(400)의 동작을 제어할 수 있는 메모리 컨트롤러(420)는 호스트(410)의 일부로서 구현될 수 있고 또한 호스트(410)와 별개의 칩으로 구현될 수 있다.
도 15는 도 1에 도시된 CPU 및 비휘발성 메인 메모리를 포함하는 시스템의 또 다른 실시예를 나타내는 구성 블록도이다.
도 1 및 도 15를 참조하면, 도 1에 도시된 메모리 장치(140)를 포함하는 시스템(50)은 메모리 장치(520) 및 메모리 장치(520)의 동작을 제어할 수 있는 호스트(510)를 포함한다. 메모리 장치(520)는 플래시 메모리(Flash Memory)와 같은 비휘발성 메모리로 구현될 것을 예시한다. 또한, 시스템 (50)은 시스템 메모리(500), 메모리 인터페이스(530), ECC 블록(540) 및 호스트 인터페이스(550)을 더 포함한다.
컴퓨터 시스템(600)에 접속된 호스트는 메모리 인터페이스(530)와 호스트 인터페이스(550)를 통하여 메모리 장치(500)와 데이터 통신을 수행할 수 있다.
호스트(510)의 제어에 따라 에러 정정 코드(error correction code(ECC)) 블록(540)은 메모리 인터페이스(530)를 통하여 메모리 장치(500)로부터 출력된 데이터에 포함된 에러 비트를 검출하고, 상기 에러 비트를 정정하고, 에러 정정된 데이터를 호스트 인터페이스(550)를 통하여 호스트(HOST)로 전송할 수 있다.
호스트(510)는 버스(570)를 통하여 메모리 인터페이스(530), ECC 블럭(540), 호스트 인터페이스(550), 및 메모리(520) 사이에서 데이터 통신을 제어할 수 있다.
시스템(50)은 플래시 메모리 드라이브, USB 메모리 드라이브, IC-USB 메모리 드라이브, 또는 메모리 스틱(memory stick)으로 구현될 수 있다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10: 비휘발성 메인 메모리 시스템
100: 컴퓨팅 시스템
110: 중앙 처리 장치
111: 코어
112: 캐시
120: 메모리 맵핑 관리기
130: 비휘발성 메인 메모리
132: 페이지 테이블
140: 보조 메모리 컨트롤러
142: 보조 메모리
150: 버스

Claims (10)

  1. 비휘발성 메모리 장치를 메인 메모리로 사용하는 비휘발성 메인 메모리 시스템에서의 메모리 맵핑 관리 방법에 있어서,
    메모리 맵핑의 해제 요청을 수신하는 단계;
    상기 요청을 수신한 것에 응답하여, 상기 메모리 맵핑과 관련된 메타 데이터에 기초하여, 상기 메모리 맵핑이 파일의 맵핑인지 여부를 판단하는 단계; 및
    상기 메모리 맵핑이 상기 파일의 맵핑이라는 판단 결과에 응답하여, 상기 메타 데이터를 별도로 저장하는 단계를 포함하는, 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법.
  2. 제1항에 있어서, 상기 메타 데이터를 별도로 저장하는 단계는,
    상기 메타 데이터를 제1 데이터 구조에 추가하는 단계; 및
    상기 메타 데이터를 제2 데이터 구조에 추가하는 단계를 포함하는, 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법.
  3. 제2항에 있어서, 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법은, 상기 메타 데이터를 별도로 저장하는 단계 전에, 상기 메타 데이터의 접근 권한을 수정하는 단계를 더 포함하는, 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법.
  4. 제2항에 있어서,
    상기 제1 데이터 구조는 해시 테이블이고,
    상기 제2 데이터 구조는 프리 리스트인, 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법.
  5. 제2항에 있어서, 상기 제1 데이터 구조 및 상기 제2 데이터 구조는
    캐시에 별도로 저장되는, 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법.
  6. 제1항에 있어서, 상기 메타 데이터는
    가상 메모리 관리를 위해 운영 체제에 의하여 제공되는 데이터 구조를 갖는, 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법.
  7. 비휘발성 메모리 장치를 메인 메모리로 사용하는 비휘발성 메인 메모리 시스템에서의 메모리 맵핑 관리 방법에 있어서,
    메모리 맵핑 요청을 수신하는 단계;
    상기 요청된 메모리 맵핑이 파일의 맵핑인 것에 응답하여, 메모리 맵핑 저장 공간에서 파일에 대한 메모리 맵핑을 검색하는 단계;
    가상 주소 공간에서 상기 요청된 메모리 맵핑이 요구하는 영역을 포함하는 상기 검색된 메모리 맵핑의 영역에 응답하여, 상기 검색 동안 발견된 상기 검색된 메모리 맵핑을 재사용하는 단계;
    상기 가상 주소 공간에서 상기 요청된 메모리 맵핑이 요구하는 상기 영역을 포함하지 않는 상기 검색된 메모리 맵핑의 영역에 응답하여, 상기 메모리 맵핑 저장 공간이 부족한지 여부를 판단하는 단계; 및
    상기 메모리 맵핑 저장 공간이 부족하지 않다는 판단에 응답하여, 상기 요청된 메모리 맵핑을 생성하는 단계를 포함하는, 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법.
  8. 제7항에 있어서,
    상기 가상 주소 공간에서 상기 요청된 메모리 맵핑이 요구하는 상기 영역을 포함하는 상기 검색된 메모리 맵핑의 영역에 응답하여, 상기 검색된 메모리 맵핑의 접근 권한을 상기 요청된 메모리 맵핑의 접근 권한과 동일하게 수정하는 단계를 더 포함하고,
    상기 검색된 메모리 맵핑을 재사용하는 단계는,
    상기 검색된 메모리 맵핑의 영역이 상기 가상 주소 공간에서 상기 요청된 메모리 맵핑이 요구하는 상기 영역을 포함하는지 여부를 판단하는 단계를 포함하는, 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법.
  9. 제7항에 있어서,
    상기 메모리 맵핑 저장 공간이 부족하다는 판단에 응답하여, 상기 메모리 맵핑을 해제하는 단계를 더 포함하는, 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법.
  10. 제7항에 있어서,
    상기 요청된 메모리 맵핑이 상기 파일의 맵핑이 아닌 것에 응답하여 무기명 메모리 맵핑을 생성하는 단계를 더 포함하고,
    상기 메모리 맵핑 저장 공간에서 상기 파일에 대한 상기 메모리 맵핑을 검색하는 단계는 상기 요청된 메모리 맵핑이 상기 파일의 맵핑인지 여부를 판단하는 단계를 포함하는, 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법.
KR1020150171500A 2015-12-03 2015-12-03 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법 KR102456109B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150171500A KR102456109B1 (ko) 2015-12-03 2015-12-03 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법
US15/365,991 US10185654B2 (en) 2015-12-03 2016-12-01 Memory mapping management method for nonvolatile main memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150171500A KR102456109B1 (ko) 2015-12-03 2015-12-03 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법

Publications (2)

Publication Number Publication Date
KR20170065272A KR20170065272A (ko) 2017-06-13
KR102456109B1 true KR102456109B1 (ko) 2022-10-18

Family

ID=58800311

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150171500A KR102456109B1 (ko) 2015-12-03 2015-12-03 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법

Country Status (2)

Country Link
US (1) US10185654B2 (ko)
KR (1) KR102456109B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190029316A (ko) * 2017-09-12 2019-03-20 에스케이하이닉스 주식회사 마이크로 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030204664A1 (en) 2002-04-30 2003-10-30 Microsoft Corporation Cache with multiway steering and modified cyclic reuse
US20130297886A1 (en) 2012-05-07 2013-11-07 International Business Machines Corporation Enhancing data caching performance
US20150293701A1 (en) 2014-04-09 2015-10-15 Samsung Electronics Co., Ltd. Execution method and apparatus

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6105103A (en) 1997-12-19 2000-08-15 Lsi Logic Corporation Method for mapping in dynamically addressed storage subsystems
JP4162183B2 (ja) 2001-11-12 2008-10-08 株式会社日立製作所 データベース管理システムの静的な情報を取得する手段を有する記憶装置
JP4313068B2 (ja) 2003-03-28 2009-08-12 株式会社日立製作所 記憶装置のキャッシュ管理方法
US7065630B1 (en) * 2003-08-27 2006-06-20 Nvidia Corporation Dynamically creating or removing a physical-to-virtual address mapping in a memory of a peripheral device
US7421562B2 (en) 2004-03-01 2008-09-02 Sybase, Inc. Database system providing methodology for extended memory support
US7386673B2 (en) 2005-11-30 2008-06-10 Red Hat, Inc. Method for tracking of non-resident pages
KR102047769B1 (ko) 2013-03-28 2019-11-25 한국전자통신연구원 메모리 가상화 기반 스냅샷 부트 장치 및 방법
KR102168169B1 (ko) * 2014-01-07 2020-10-20 삼성전자주식회사 비휘발성 메모리 시스템의 메모리 맵핑 방법 및 이를 제공하는 시스템
US9442663B2 (en) * 2014-11-19 2016-09-13 Sandisk Technologies Llc Independent set/reset programming scheme
US20160210044A1 (en) * 2015-01-15 2016-07-21 Commvault Systems, Inc. Intelligent hybrid drive caching

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030204664A1 (en) 2002-04-30 2003-10-30 Microsoft Corporation Cache with multiway steering and modified cyclic reuse
US20130297886A1 (en) 2012-05-07 2013-11-07 International Business Machines Corporation Enhancing data caching performance
US20150293701A1 (en) 2014-04-09 2015-10-15 Samsung Electronics Co., Ltd. Execution method and apparatus

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
J. Condit et al., Better I/O through byte-addressable, persistent memory, Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles, October 2009. Pages 133-146.

Also Published As

Publication number Publication date
US20170161185A1 (en) 2017-06-08
KR20170065272A (ko) 2017-06-13
US10185654B2 (en) 2019-01-22

Similar Documents

Publication Publication Date Title
CN107193486B (zh) 数据存储设备和包括该数据存储设备的数据处理系统
US10970235B2 (en) Computing system with a nonvolatile storage and operating method thereof
US11188259B2 (en) Storage device and method of operating the storage device
US12019602B2 (en) Key-value storage device and operating method thereof
KR102403266B1 (ko) 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US10719263B2 (en) Method of handling page fault in nonvolatile main memory system
KR102258126B1 (ko) 메모리 컨트롤러의 작동 방법, 이를 포함하는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템
US9875044B2 (en) Data storage device compensating for initial threshold voltage distribution shift, method of operating the same, and data processing system including the same
CN109300494B (zh) 存储设备、存储系统及操作其的方法
US10409718B2 (en) Memory system and operating method thereof
US10168926B2 (en) Method of operating data storage device and method of operating data processing system including same
US20190026220A1 (en) Storage device that stores latency information, processor and computing system
US11204797B2 (en) Computing systems and methods of operating computing systems
CN111722795A (zh) 存储系统以及用于控制存储系统的方法
US10162568B2 (en) Method for searching matching key of storage device and server system including the same
US10466938B2 (en) Non-volatile memory system using a plurality of mapping units and operating method thereof
KR102456109B1 (ko) 비휘발성 메인 메모리 시스템의 메모리 맵핑 관리 방법
KR102569177B1 (ko) 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법
US10977170B2 (en) Memory controller for performing unmap operation and memory system having the same
US9465747B2 (en) Controller for controlling non-volatile memory and semiconductor device including the same
US20170031633A1 (en) Method of operating object-oriented data storage device and method of operating system including the same
US20240184454A1 (en) Storage device and operating method of the same

Legal Events

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