KR102363526B1 - 복수의 엑세스 모드를 지원하는 불휘발성 메모리를 포함하는 시스템 및 그것의 엑세스 방법 - Google Patents

복수의 엑세스 모드를 지원하는 불휘발성 메모리를 포함하는 시스템 및 그것의 엑세스 방법 Download PDF

Info

Publication number
KR102363526B1
KR102363526B1 KR1020160042453A KR20160042453A KR102363526B1 KR 102363526 B1 KR102363526 B1 KR 102363526B1 KR 1020160042453 A KR1020160042453 A KR 1020160042453A KR 20160042453 A KR20160042453 A KR 20160042453A KR 102363526 B1 KR102363526 B1 KR 102363526B1
Authority
KR
South Korea
Prior art keywords
address
nvm
address space
access mode
governor
Prior art date
Application number
KR1020160042453A
Other languages
English (en)
Other versions
KR20170008141A (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 삼성전자주식회사
Publication of KR20170008141A publication Critical patent/KR20170008141A/ko
Application granted granted Critical
Publication of KR102363526B1 publication Critical patent/KR102363526B1/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
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • 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
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • 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
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/06Address interface arrangements, e.g. address buffers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Storage Device Security (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명의 실시 예에 따른 시스템은 NVDIMM(Non-Volatile Dual In-Line Memory Module), NVM 가버너를 포함할 수 있다. NVM 가버너는 제 1 어플리케이션에 대한 제 1 주소 공간을 제 1 엑세스(Access) 모드로 NVDIMM에 할당하고, 제 2 어플리케이션에 대한 제 2 주소 공간을 제 2 엑세스 모드로 NVDIMM에 할당하고, 적어도 제 1 주소 공간에 대한 제 1 주소 마스크를 NVM(Non-Volatile Memory) 컨트롤 레지스터 내에 저장하도록 동작할 수 있다. 제 1 주소 마스크는 제 1 엑세스 모드와 연관될 수 있다.

Description

복수의 엑세스 모드를 지원하는 불휘발성 메모리를 포함하는 시스템 및 그것의 엑세스 방법{SYSTEM COMPRISING NON-VOLATILE MEMORY SUPPORTING MULTIPLE ACCESS MODES AND ACCESSING METHOD THEROF}
본 발명은 메모리에 관한 것으로, 보다 구체적으로는 복수의 엑세스 모드를 지원하는 불휘발성 메모리를 포함하는 시스템 및 그것의 엑세스 방법에 관한 것이다.
NVDIMM(Non-Volatile Dual In-Line Memory Module)은 불휘발성 메모리를 DIMM (Dual In-Line Memory Module) 내의 메모리 채널에 위치시킨다. 하지만, NVDIMM은 일반적으로 DRAM에서 찾아볼 수 없는 새로운 문제를 발생시킨다. DIMM은 일반적으로 바이트 단위의 주소화(Addressable) 스토리지를 지원하는 반면에, NVDIMM은 바이트 단위의 또는 블록 단위의 주소화 스토리지를 지원할 수 있다. 다만, DIMM은 OS(Operating System)의 지원 하에 블록 단위의 주소화 스토리지를 지원할 수 있다.
간단한 해결책으로는 NVDIMM이 하나의 어드레싱(Addressing) 모드만을 사용하도록 할 수 있다. 하나의 어드레싱 모드는 바이트 단위의 주소화 메인 메모리/스토리지 또는 블록 단위의 주소화 스토리지 중 하나의 형태와 같은 특정 NVDIMM의 기능들이다. 하지만, 이는 단순한 해결책이다. 또한, 이러한 단순한 해결책으로 모든 상황에 대응할 수 없다.
다양한 어플리케이션들이 다른 메모리 요구사항들을 가질 수 있기 때문에, NVDIMM을 특정 어드레스 주소 모드로 제한하는 것은 리소스를 최적으로 활용하도록 유도할 수 없다. 하나의 엑세스 모드를 사용하는 하나의 NVDIMM은 과부화 되는 반면에, 다른 어드레스 모드를 사용하는 다른 NVDIMM은 충분히 활용되지 않을 수 있다. 또한, 이러한 시나리오는 복수의 NVDIMM을 포함하는 컴퓨터 시스템을 가정한다. 만약에 컴퓨터 시스템이 하나의 NVDIMM 만을 포함한다면, 해당 NVDIMM에 의해 지원되지 않는 엑세스 모드는 완전히 사용될 수 없을 것이다.
따라서, 하나의 NVDIMM 내에서 복수의 엑세스 모드를 사용하도록 지원하는 방법이 요구된다.
본 발명의 목적은 주소 마스크를 저장하는 NVM 컨트롤 레지스터를 이용하여 복수의 엑세스 모드를 지원하는 불휘발성 메모리 장치를 포함하는 시스템 및 그것의 엑세스 방법을 제공하는데 있다.
본 발명의 실시 예에 따른 시스템은 NVDIMM(Non-Volatile Dual In-Line Memory Module), NVM 가버너를 포함할 수 있다. NVM 가버너는 제 1 어플리케이션에 대한 제 1 주소 공간을 제 1 엑세스(Access) 모드로 NVDIMM에 할당하고, 제 2 어플리케이션에 대한 제 2 주소 공간을 제 2 엑세스 모드로 NVDIMM에 할당하고, 적어도 제 1 주소 공간에 대한 제 1 주소 마스크를 NVM(Non-Volatile Memory) 컨트롤 레지스터 내에 저장하도록 동작할 수 있다. 제 1 주소 마스크는 제 1 엑세스 모드와 연관될 수 있다.
본 발명의 실시 예에 따른 NVDIMM을 포함하는 시스템의 엑세스 방법은 NVDIMM 내에 주소 공간을 할당하기 위한 요청을 수신하는 단계, 요청된 주소 공간에 대한 엑세스 모드를 수신하는 단계, NVDIMM 내의 주소 공간을 확인하는 단계, 요청된 주소 공간에 대해 주소 공간을 반환하는 단계를 포함할 수 있다. 엑세스 모드는 적어도 두 가지 엑세스 모드를 포함하는 세트로부터 추출될 수 있다.
본 발명의 실시 예에 따른 NVDIMM을 포함하는 시스템의 엑세스 방법은 NVDIMM으로부터 주소 공간에 엑세스하기 위한 요청을 수신하는 단계, 주소 공간에 대한 엑세스 모드를 결정하는 단계, 엑세스 모드를 이용하여 NVDIMM으로부터 주소 공간에 엑세스하기 위한 요청을 스케쥴하는 단계를 포함할 수 있다.
본 발명에 따르면, 복수의 불휘발성 메모리 장치 또는 복수의 NVDIMM 각각에 대해 개별적인 엑세스 모드를 통해 엑세스를 할 수 있다. 이를 통해, 시스템은 메모리 등의 리소스를 효율적으로 활용할 수 있다.
본 발명의 실시 예들은 제한적인 방법으로서가 아니라 예로서 도시되었으며, 첨부 도면에서 유사한 참조 번호는 유사한 요소를 참조한다.
도 1은 본 발명의 실시 예에 따른 메모리 채널 상의 메모리 또는 스토리지를 위해 NVDIMM을 이용한 컴퓨터 시스템을 보여주는 블록도이다.
도 2는 도 1에 도시된 컴퓨터 시스템의 외부 구성을 보여주는 그림이다.
도 3은 도 1에 도시된 NVDIMM이 주소 공간으로 분리된 구성을 보여주는 그림이다.
도 4는 도 1의 NVM 컨트롤 레지스터 및 복수의 NVDIMM와 상호 작용하는 도 1에 도시된 NVM 가버너를 보여주는 그림이다.
도 5는 16개의 다른 주소 마스크 및 엑세스 모드를 저장하는 도 1에 도시된 NVM 컨트롤 레지스터를 보여주는 그림이다.
도 6은 본 발명의 실시 예에 따라 NVM 컨트롤 레지스터를 이용하여 요청된 주소에 대한 엑세스 모드를 결정하는 도 1에 도시된 NVM 가버너를 보여주는 블록도이다.
도 7은 본 발명의 실시 예에 따라 어플리케이션에 대해 NVDIMM 내에 주소 공간을 할당하는 방법을 보여주는 순서도이다.
도 8은 본 발명의 실시 예에 따라 NVM 가버너가 NVDIMM에 새로 할당된 주소 공간을 위해 사용되는 엑세스 모드를 결정하는 방법을 보여주는 순서도이다.
도 9는 본 발명의 실시 예에 따라 NVM 가버너가 할당된 주소 공간에 대한 정보를 NVM 컨트롤 레지스터 내에 저장하는 방법을 보여주는 순서도이다.
도 10은 본 발명의 실시 예에 따라 NVM 가버너가 NVDIMM 내의 주소에 엑세스 요청을 처리하는 방법을 보여주는 순서도이다.
도 11은 본 발명의 실시 예에 따라 NVM 가버너가 요청된 주소에 대해 엑세스 모드를 결정하는 방법을 보여주는 순서도이다.
도 12는 본 발명의 다른 실시 예에 따라 NVM 가버너가 요청된 주소에 대해 엑세스 모드를 결정하는 방법을 보여주는 순서도이다.
도 13은 도 1 내지 도 12에 도시된 메모리 또는 스토리지를 위한 복수의 NVDIMM을 사용할 수 있는 장치를 보여주는 그림이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
이하에서는, 불휘발성 메모리 장치가 본 발명의 특징 및 기능을 설명하기 위한 예로서 사용될 것이다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 본 발명은 다른 실시 예들을 통해 또한, 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다.
본 발명의 실시 예들은 적응적(Adaptive) 엑세스 모드 및 스마트 분할(Smart Partioning) 메커니즘을 갖는 NVDIMM을 포함할 수 있다. 스마트 분할 메커니즘을 수행하기 위해, NVM(Non-Volatile Memory) 가버너(Governor)는 NVDIMM 내에 바이트 혹은 블록 단위의 주소화 모드로 주소 공간을 할당하도록 구성된 하드웨어 및/또는 소프트웨어 모듈을 포함할 수 있다. 주소화 모드는 어플리케이션에 의해 요청될 수 있다. 어플리케이션의 동작에 따라 런타임 시에, NVM 가버너는 동적으로 NVDIMM을 바이트 및 블록 단위의 주소화 부분으로 분할할 수 있다. 또한, 스마트 분할 메커니즘은 복수의 엑세스 모드를 갖는 주소 범위를 저장할 수 있는 NVM 컨트롤 레지스터를 포함할 수 있다.
NVM 가버너는 관계된 엑세스 모드를 갖는 NVDIMM 주소 공간을 위한 어플리케이션 요청을 수신할 수 있다. 어플리케이션은 다양한 엑세스 모드를 갖는 하나 이상의 주소 공간을 요청할 수 있다. NVM 가버너는 정보를 NVM 컨트롤 레지스터에 저장할 수 있다. 예를 들어, 정보는 요청된 주소 공간 및 모드에 대한 엑세스 모드 및 주소 마스크를 포함할 수 있다.
주소 공간에 읽기 및 쓰기 요청을 수행하기 위해, NVM 가버너는 NVM 컨트롤 레지스터 내의 주소 마스크들을 확인할 수 있다. 이는 개별적 또는 병렬적으로 수행될 수 있다. 주소 공간과 엑세스 모드의 매칭이 발견되는 경우, NVM 가버너는 선택된 엑세스 모드를 갖는 요청을 스케쥴할 수 있다.
도 1은 본 발명의 실시 예에 따른 메모리 채널 상의 메모리 또는 스토리지를 위해 NVDIMM을 이용한 컴퓨터 시스템을 보여주는 블록도이다. 도 1을 참조하면, 프로세서(105)가 도시되었다. 프로세서(105)는 복수의 NVDIMM(110, 115)과 같은 다른 메모리 모듈과 연결될 수 있다. 또한, 프로세서(105)는 복수의 DIMM(120, 125)과 같은 다른 메모리 모듈과 연결될 수 있다. 다른 실시 예에서, 모든 메모리 모듈은 동등하게 연결될 수 있다. 다른 실시 예에서, 복수의 DIMM(120, 125)은 복수의 NVDIMM(110, 115)에 대한 캐쉬로서 동작할 수 있다. 다른 실시 예들에서, 원하는 방식에 따란 복수의 NVDIMM(110, 115), 복수의 DIMM(120, 125), 그리고 다른 메모리 및/또는 스토리지 장치들이 이용될 수 있다. 예를 들어, 이는 장치들의 특성을 최적화하는 계층 구조 내에 다른 메모리 및 스토리지 장치들을 층층이 쌓아서 수행될 수 있다.
또한, 프로세서(105)는 스토리지(130)와 연결될 수 있다. 스토리지(130)는 HDD(Hard Disk Drives), SSD(Solid State Drives), 및/또는 다른 NVM 기술과 같은 기술들을 포함하는 어떠한 형태의 스토리지도 될 수 있다. 더불어, 스토리지(130)는 HDD 및 SDD 등의 다른 스토리지가 혼합된 타입을 포함할 수 있다. 결과적으로, 스토리지(130)는 어떠한 형태로도 프로세서(105)와 연결될 수 있다. 예를 들어, 연결 형태는 버스를 통한 직접 연결 또는 USB(Universal Serial Bus) 인터페이스와 같은 인터페이스를 통한 외부 스토리지와의 연결 등의 형태를 포함할 수 있다.
프로세서(105)는 OS(135)(Operating System)의 동작을 지원할 수 있다. OS(135)는 한번에 하나의 어플리케이션의 동작이나 병렬적으로 복수의 어플리케이션의 동작을 지원하는 어떠한 형태의 운영 체제일 수 있다. 또한, OS(135)는 복수의 가상 머신을 지원할 수 있다. 복수의 가상 머신은 각각의 가상 머신에 컴퓨터 시스템 내의 모든 자원을 완전히 사용하는 형태를 제공할 수 있다. 도 1을 참조하면, OS(135)에 의해 지원되는 n 개의 복수의 가상 머신(140~145)이 도시되었다.
OS(135)는 NVM 가버너(150)를 포함할 수 있다. NVM 가버너(150)는 복수의 NVDIMM(110, 115) 내의 주소 공간의 할당 및 복수의 NVDIMM(110, 115) 내의 주소 공간들로부터 읽기/쓰기 동작의 처리를 제어할 수 있다. NVM 가버너(150) 동작의 지원은 다른 가능성 중에 프로세서(105) 혹은 메모리 컨트롤러 내에 위치할 수 있는 NVM 컨트롤 레지스터(155)에 의해 수행될 수 있다. 이하에서 도 4 내지 도 6에서 도시되는 바와 같이, NVM 컨트롤 레지스터(155)는 주소 공간들이 사용되는 방법에 대한 정보를 저장할 수 있다. 예를 들어, 이러한 정보는 주소 마스크 및 엑세스 모드 등을 포함할 수 있다.
주소 마스크는 주소 공간의 모든 주소들 내의 최상위 비트와 매칭되는 특정 비트(Bit) 패턴을 포함할 수 있다. 엑세스 모드는 NVDIMM 내의 주소들에 데이터가 쓰이거나 주소들로부터 데이터를 읽는 방법을 지정할 수 있다. 현재, 읽기 및 쓰기 동작은 바이트 단위의 주소화 모드 또는 블록 단위의 주소화 모드를 이용하여 수행된다. 현재 두 가지 엑세스 모드만이 존재한다는 것을 고려하면, 하나의 엑세스 모드는 싱글(Single) 비트를 사용한다고 할 수 있다. 하지만, 만약 추가적인 엑세스 모드들이 디자인된다면, NVM 컨트롤 레지스터(155)에 저장된 엑세스 모드는 추가적인 비트들을 사용할 수 있다.
도 2는 도 1에 도시된 컴퓨터 시스템의 외부 구성을 보여주는 그림이다. 도 2를 참조하면, 컴퓨터 시스템(205)이 도시되었다. 컴퓨터 시스템(205)은 컴퓨터(210), 모니터(215), 키보드(220), 그리고 마우스(225)를 포함할 수 있다. 당업자는 컴퓨터 시스템(205)에 다른 구성 요소들이 포함될 수 있음을 쉽게 이해할 수 있을 것이다. 예를 들어, 컴퓨터 시스템(205)은 프린터와 같은 I/O 장치 등을 더 포함할 수 있다. 더불어, 컴퓨터 시스템(205)는 도 1에 도시된 기존의 내부 구성 요소들을 포함할 수 있다. 예를 들어, 기존의 내부 구성 요소들은 프로세서(105), 복수의 NVDIMM(110, 115), 복수의 DIMM(120, 125), 그리고 스토리지(130) 등을 포함할 수 있다.
도 2에 도시되지 않았지만, 당업자는 컴퓨터 시스템(205)이 그래픽 카드, 모뎀 등의 다른 내부 구성 요소들을 포함할 수 있다는 것을 쉽게 이해할 수 있을 것이다. 또한, 당업자는 컴퓨터 시스템(205)이 다른 컴퓨터 시스템과 직접적으로 혹은 다른 타입의 네트워크(미도시)를 통해 상호 작용할 수 있음을 쉽게 이해할 수 있을 것이다. 더불어, 비록 도 2는 컴퓨터 시스템(205)이 기존의 데스크 탑(Desktop) 컴퓨터로서 도시되었지만, 당업자는 컴퓨터 시스템(205)이 어떠한 형태의 머신 또는 컴퓨팅 장치가 될 수 있음을 쉽게 이해할 수 있을 것이다. 예를 들어, 상술한 머신 또는 컴퓨팅 장치는 랩 탑(Laptop) 컴퓨터, 태블릿 컴퓨터, PDA(Personal Digital Assistant), 또는 스마트 폰 등을 포함할 수 있다.
도 3은 도 1에 도시된 NVDIMM이 주소 공간으로 분리된 구성을 보여주는 그림이다. 도 3을 참조하면, NVDIMM(110)이 도시되었다. 하지만, 도 3에 도시된 내용은 도 1의 NVDIMM(115)에도 동일하게 적용될 수 있다. NVDIMM(110)은 주소 공간들(305, 310, 315)를 포함하는 16 개의 복수의 주소 공간으로 구분되도록 도시되었다. 주소 공간들(305, 310, 315) 각각은 일부 어플리케이션에 대해 할당된 NVDIMM(110)의 일부분일 수 있다.
또한, 복수의 다른 주소 공간들(305, 310, 315)이 동일한 어플리케이션에 할당될 수 있다. 즉, 개별 어플리케이션은 NVDIMM(110) 내의 단일(Single) 주소 공간(305, 310, 315)을 사용하는 것에 한정되지 않는다. 더불어, 주소 공간들(305, 310, 315) 각각은 어떠한 엑세스 모드도 사용할 수 있다. NVDIMM(110)과 같은 단일 NVDIMM 내의 주소 공간들(305, 310, 315) 또는 단일 어플리케이션에 의해 사용되는 주소 공간들(305, 310, 315)은 원하는 형태의 어떠한 엑세스 모드도 사용할 수 있다. 주소 공간들(305, 310, 315)이 어플리케이션 요청에 응답하여 할당될 때, 도 1의 NVM 가버너(150)는 주소 공간들(305, 310, 315)의 사이즈를 지정하는 역할을 책임질 수 있다.
도 3은 NVDIMM(110)이 16 개의 주소 공간으로 구분되는 것으로 도시되었다. 하지만, NVDIMM(110) 내에 할당된 주소 공간들의 수는 16보다 크거나 작을 수 있다. 또한, 도 3은 주소 공간들(305, 310, 315) 각각이 동일한 사이즈를 갖는 것으로 도시되었다. 즉, 주소 공간들(305, 310, 315) 각각이 NVDIMM(110) 내에 동일한 수의 주소들을 포함하는 것으로 도시되었다. 하지만, 주소 공간들(305, 310, 315)은 NVDIMM(110)의 자체 사이즈 내의 어떠한 사이즈라도 될 수 있다. 예를 들어, 주소 공간(305)은 단지 8Kb의 데이터만을 저장할 수 있는 반면에, 주소 공간(310)은 48Mb의 데이터를 저장할 수 있다. 주소 공간들(305, 310, 315)에 대해 기술된 사이즈들은 단지 예시적인 것이며, NVDIMM(110) 내의 개별 주소 공간들(305, 310, 315)의 사이즈는 이에 한정되는 것이 아니다.
더불어, 도 1의 NVM 가버너(150)는 주소 공간들(305, 310, 315)의 크기를 재조정할 수 있다. 예를 들어, 주소 공간(305)이 초기에 1Mb의 데이터를 저장하도록 할당되었다고 가정한다. 주소 공간(305)을 사용하는 어플리케이션이 실행되는 도중에, 어플리케이션이 도 1의 NVM 가버너(150)에 추가적인 메모리 및/또는 스토리지를 요청할 수 있다. 도 1의 NVM 가버너(150)는 단순히 추가적인 주소 공간(310, 315)를 할당하고, 이를 해당 어플리케이션에 배분할 수 있다. 하지만, 만약 해당 어플리케이션에 의해 요청된 추가적인 메모리 및/또는 스토리지가 주소 공간(305)과 동일한 엑세스 모드를 사용하고, 주소 공간(305)에 인접한 가능한 주소들이 있다면(즉, 주소 공간(310)은 아직 할당되지 않은 경우), 도 1의 NVM 가버너(150)는 주소 공간(305)이 인접 주소들을 포함하도록 확장할 수 있다.
상술한 예들은 주소 공간들(305, 310, 315)의 사이즈가 증가하는 예들을 설명하였지만, 주소 공간(305, 310, 315)의 사이즈는 동일한 방법으로 줄어들 수 있다. 만약 어플리케이션이 불 필요한 메모리 및/또는 스토리지를 해제하기를 원하는 경우, 해당 메모리 및/또는 스토리지는 도 1의 NVM 가버너(150)에 의해 할당 해제되도록 고려되어 이후의 메모리 및/또는 스토리지에 대한 요청을 만족시키도록 이용될 수 있다.
도 5 및 도 6에서 기술되는 바와 같이, 도 1의 NVM 컨트롤 레지스터(155)는 주소 공간들(305, 310, 315) 각각에 대한 주소 마스크들을 저장할 수 있다. 이러한 주소 마스크들은 어떤 주소 공간들(305, 310, 315)이 특정 주소를 포함할지를 결정하는 데에 이용될 수 있다. 만약, 상술한 바와 같이 주소 공간들(305, 310, 315)의 공간이 재조정된다면, 주소 공간들(305, 310, 315)과 관련된 주소 마스크는 새롭게 사이즈가 재조정된 주소 공간들(305, 310, 315)을 반영하여 변경될 수 있다. 예를 들어, 만약 주소 공간들(305, 310, 315)이 확장된다면, 관련된 주소 마스크는 보다 적은 수의 비트를 포함할 수 있다. 만약, 주소 공간들(305, 310, 315)이 줄어든다면, 관련된 주소 마스크는 추가적인 비트를 포함할 수 있다.
주소 마스크 내의 비트 수는 주소 공간(305, 310, 315)의 사이즈에 영향을 줄 수 있다. 예를 들어, 개별 주소가 64 비트를 포함한다고 가정한다. 만약 48 비트가 주소 마스크에 사용된다면, 최 하위 16 비트는 해당 주소 공간 내의 주소들을 구분하도록 사용될 것이다. 이는 주소 공간(305, 310, 315)이 65 비트, 536 비트, 또는 8192 바이트의 데이터를 저장한다는 것을 의미한다. 예를 들어, 만약 어플리케이션이 주소 공간(305, 310, 315)에게 16,777,216 비트 또는 2,097,152 바이트를 저장하기 위해 확장하도록 요청한다면, 주소 마스크는 48 비트에서 40 비트로 줄어들 수 있다.
주소 마스크의 길이가 주소 공간들(305, 310, 315)의 사이즈에 영향을 줄 수 있는 방법에 대한 한 가지 결과는 주소 공간들(305, 310, 315)이 2의 거듭 제곱의 형태의 사이즈를 갖도록 하는 것이다. 하지만, 단지 주소 공간들(305, 310, 315)의 사이즈가 2의 거듭 제곱의 형태라는 것이 해당 어플리케이션이 전체 주소 공간들(305, 310, 315)에 엑세스 권한을 부여해야 한다는 것을 의미하지 않기 때문에, 어플리케이션이 엑세스하기 힘든 주소 공간들(305, 310, 315)의 일부는 결과적으로 사용될 수 없을 것이다. 사용될 수 없는 메모리 및/또는 스토리지를 갖지 않기 위해, 만약 어플리케이션이 2의 거듭 제곱 형태의 사이즈로 주소 공간들(305, 310, 315)를 확장하는 것에 의해 적절하게 얻어 질 수 없는 추가적인 메모리 및/또는 스토리지를 요청하는 경우, 다른 사이즈를 갖는 다른 주소 공간들(305, 310, 315)은 도 1의 NVM 컨트롤 레지스터(155) 내의 추가적인 구성과 함께 사용될 수 있다.
도 4는 도 1의 NVM 컨트롤 레지스터 및 복수의 NVDIMM와 상호 작용하는 도 1에 도시된 NVM 가버너를 보여주는 그림이다. 도 4를 참조하면, NVM 가버너(150)는 할당 로직(405), 바이트 주소화 로직(410), 블록 주소화 로직(415), 그리고 소프트웨어(420)를 포함할 수 있다. 어플리케이션으로부터의 요청에 응답하여, 할당 로직(405)은 어플리케이션에 대해 도 3의 주소 공간들(305, 310, 315)과 같이 NVDIMM(110)으로부터 메모리 및/또는 스토리지의 일부를 할당할 수 있다. 바이트 주소화 로직(410)은 바이트 단위의 주소화 엑세스 모드를 이용하는 NVDIMM(110) 내의 도 3의 주소 공간들(305, 310, 315)로부터 주소에 엑세스할 수 있다.
또한, 블록 주소화 로직(415)은 블록 단위의 주소화 엑세스 모드를 이용하는 NVDIMM(110) 내의 도 3의 주소 공간들(305, 310, 315)로부터 주소에 엑세스 할 수 있다. 마지막으로, 일부 실시 예들에서, 블록 주소화 로직(415)을 포함하는 것 대신에, 소프트웨어(420)는 바이트 주소화 로직(410)을 이용하여 블록 주소화 로직(415)을 에뮬레이션(Emulation)할 수 있다. 즉, 메모리 및/또는 스토리지로의 블록 엑세스가 바이트 주소화 로직(410)을 이용하여 소프트웨어(420)에 의해 에뮬레이트될 수 있기 때문에, 일부 실시 예들은 블록 주소화 로직(415)을 포함할 필요가 없다.
NVM 가버너(150)는 NVM 컨트롤 레지스터(155)에 데이터를 저장하거나 저장된 데이터에 엑세스할 수 있다. NVM 가버너(150)가 할당 로직(405)을 이용하는 경우, NVM 가버너(150)는 NVM 컨트롤 레지스터(155) 내에 주소 마스크 및 엑세스 모드를 저장할 수 있다. 그러면, NVM 가버너(150)가 주소에 엑세스하기 위한 요청을 수신하는 경우, NVM 가버너(150)는 NVM 컨트롤 레지스터(155) 내에 저장된 주소 마스크들 및 엑세스 모드들을 사용할 수 있다. 이는 요청된 주소에 엑세스하는 경우 사용될 엑세스 모드를 결정하기 위함이다.
도 5는 16개의 다른 주소 마스크 및 엑세스 모드를 저장하는 도 1에 도시된 NVM 컨트롤 레지스터를 보여주는 그림이다. 도 5를 참조하면, 컨트롤 레지스터(155)는 복수의 주소 마스크(505, 510, 515) 및 복수의 엑세스 모드(520, 525, 530)를 포함할 수 있다. 주소 마스크 및 엑세스 모드의 각각의 쌍은 도 1의 복수의 NVDIMM(110, 115) 내의 도 3의 주소 공간들(305, 310, 315)과 연관될 수 있다.
도 5는 NVM 컨트롤 레지스터(155)가 16 개의 복수의 주소 마스크 및 엑세스 모드를 포함하도록 도시하였다. 다만, 이는 예시적인 것으로 NVM 컨트롤 레지스터(155)는 이에 한정되지 않는다. NVM 컨트롤 레지스터(155)는 어떠한 수의 주소 마스크 및 엑세스 모드들도 저장할 수 있다. 더불어, 도 5는 복수의 주소 마스크가 48 비트의 길이를 갖고, 엑세스 모드는 하나의 비트를 갖는 것으로 도시하였다. 다만, 이는 예시적인 것으로 복수의 주소 마스크 및 엑세스 모드는 이에 한정되지 않는다. 복수의 주소 마스크(505, 510, 515)는 어떠한 사이즈도 가질 수 있으며, 각각 다른 사이즈일 수 있다. 유사하게, 두 가지 엑세스 모드(바이트 단위 및 블록 단위의 주소화)를 구분하기 위해 하나의 비트 만이 필요하지만, 만약 추가적인 엑세스 모드가 제공되는 경우, 복수의 엑세스 모드(520, 525, 530)는 하나 이상의 비트를 포함할 수 있다.
도 6은 본 발명의 실시 예에 따라 NVM 컨트롤 레지스터를 이용하여 요청된 주소에 대한 엑세스 모드를 결정하는 도 1에 도시된 NVM 가버너를 보여주는 블록도이다. 도 6을 참조하면, 요청된 주소(605)는 어플리케이션이 읽거나 쓰기를 원하는 주소일 수 있다. 이어, 복수의 비교기(610, 615, 620)는 요청된 주소(605)를 복수의 주소 마스크(505, 510, 515)와 비교할 수 있다. 이는 도 3의 주소 공간(305, 310, 315) 중 어떤 주소 공간이 요청된 주소(605)를 포함할지를 결정하기 위함이다. 이러한 비교는 어떤 주소 마스크가 요청된 주소(605) 내의 최상위 비트와 매칭되는지 보기 위해 확인하는 것을 포함할 수 있다. 정확한 주소 마스크가 확인되는 경우, 인코더(625)(Encoder)는 해당 정보를 컨트롤 신호를 생성하기 위해 사용할 수 있다. 컨트롤 신호는 해당 엑세스 모드(520, 525, 530)를 선택하기 위한 멀티플렉서(630)(Multiplexer)에 대한 신호이다. 이러한 선택된 엑세스 모드는 엑세스 모드(635)로서 출력될 수 있다.
도 7은 본 발명의 실시 예에 따라 어플리케이션에 대해 NVDIMM 내에 주소 공간을 할당하는 방법을 보여주는 순서도이다.
도 7을 참조하면, 705 단계에서, 도 1의 NVM 가버너(150)는 어플리케이션으로부터 해당 어플리케이션에 NVM 주소 공간을 할당하도록 요청을 수신할 수 있다.
710 단계에서, 도 1의 NVM 가버너(150)는 요청된 주소 공간에 대한 엑세스 모드를 수신할 수 있다. 715 단계에서, 도 1의 NVM 가버너(150)는 도 1의 복수의 NVDIMM(110, 115) 내의 도 3의 주소 공간들(305, 310, 315) 중 유효한 주소 공간을 확인할 수 있다.
720 단계에서, 도 1의 NVM 가버너(150)는 도 1의 NVM 컨트롤 레지스터(155) 내에 도 3의 확인된 주소 공간들(305, 310, 315)에 대한 엑세스 모드 및 주소 마스크를 저장할 수 있다. 725 단계에서, 도 1의 NVM 가버너(150)는 요청한 어플리케이션에게 도 3의 주소 공간들(305, 310, 315)을 반환할 수 있다.
도 7 및 이하의 다른 순서도를 참조하면, 하나의 실시 예가 도시되었다. 하지만, 당업자는 상술한 단계의 순서를 변경하거나, 일부 단계를 생략하거나, 도면에서 도시되지 않은 연결을 포함하여 다른 실시 예들이 구현될 수 있음은 쉽게 이해할 수 있을 것이다. 명시적으로 설명되었는지 여부와 관계 없이, 이러한 순서도의 변형들은 본 발명의 실시 예로서 간주될 수 있다.
도 8은 본 발명의 실시 예에 따라 NVM 가버너가 NVDIMM에 새로 할당된 주소 공간을 위해 사용되는 엑세스 모드를 결정하는 방법을 보여주는 순서도이다. 도 8에서, 도 7의 710 단계가 자세히 설명되었다.
도 8을 참조하면, 805 단계에서, 도 1의 NVM 가버너(150)는 바이트 단위의 주소화된 주소 공간에 대해 어플리케이션으로부터 요청을 수신할 수 있다. 또는, 805 단계 대신에, 810 단계에서, 도 1의 NVM 가버너(150)는 블록 단위의 주소화된 주소 공간에 대해 어플리케이션으로부터 요청을 수신할 수 있다.
상술한 바와 같이, 일 실시 예는 바이트 단위의 주소화 및 블록 주소화의 두 가지 엑세스 모드를 고려할 수 있다. 도 8을 참조하면, 이러한 실시 예들이 반영되었다. 하지만, 만약 추가적인 엑세스 모드들이 도입된다면, 도 8은 추가적인 엑세스 모드들의 사용을 반영하도록 변형될 수 있다.
도 9는 본 발명의 실시 예에 따라 NVM 가버너가 할당된 주소 공간에 대한 정보를 NVM 컨트롤 레지스터 내에 저장하는 방법을 보여주는 순서도이다. 도 9에서, 도 7의 720 단계의 동작이 자세히 설명되었다.
도 9를 참조하면, 905 단계에서, 도 1의 NVM 가버너(150)는 도 1의 NVM 컨트롤 레지스터(155) 내에 도 3의 모든 주소 공간들(305, 310, 315)에 대한 엑세스 모드들 및 주소 마스크들을 저장할 수 있다.
또는, 905 단계 대신에, 910 단계에서, 도 1의 NVM 가버너(150)는 바이트 단위의 주소화 엑세스 모드를 사용하지 않는 도 3의 주소 공간들(305, 310, 315)에 대한 엑세스 모드들 및 주소 마스크들만을 저장할 수 있다. 그러면, 만약 도 6의 요청된 주소(605)와 같이 요청된 주소가 도 1의 NVM 컨트롤 레지스터(155)의 주소 마스크들 내에서 발견되지 않는 경우, 도 3의 주소 공간들(305, 310, 315)은 바이트 단위의 주소화 엑세스 모드를 사용한다고 가정될 수 있다. 다시 말해, 바이트 단위의 주소화 엑세스 모드는 도 1의 NVM 컨트롤 레지스터(155) 내의 마스크 되지 않은 모든 주소에 대한 디폴트(Default) 엑세스 모드로 간주될 수 있다.
910 단계에 대한 두 가지 내용은 언급할 가치가 있다. 첫 번째로, 디폴트 엑세스 모드로서 바이트 단위의 주소화 엑세스 모드를 설정하는 것은 하나의 선택이다. 하지만, 블록 단위의 주소화된 주소 공간과 관련된 주소 마스크들이 대신 생략될 수 있는 경우에, 블록 단위의 주소화 엑세스 모드와 같은 다른 엑세스 모드들은 디폴트 엑세스 모드로 간주될 수 있다.
두 번째로, 만약 복수의 NVDIMM(110, 115)가 오직 바이트 및 블록 단위의 주소화 엑세스 모드와 같이 두 가지 엑세스 모드만을 제공하는 경우, 해당 엑세스 모드는 전적으로 도 1의 NVM 컨트롤 레지스터(155)로부터 생략될 수 있다. 이는 도 1의 NVM 컨트롤 레지스터(155) 내에 주소 마스크가 저장되는 것 자체로 적절한 엑세스 모드를 확인할 수 있기 때문이다.
도 10은 본 발명의 실시 예에 따라 NVM 가버너가 NVDIMM 내의 주소에 엑세스 요청을 처리하는 방법을 보여주는 순서도이다.
도 10을 참조하면, 1005 단계에서, 도 1의 NVM 가버너(150)는 어플리케이션으로부터 주소에 엑세스하기 위한 요청을 수신할 수 있다. 1010 단계에서, 도 1의 NVM 가버너(150)는 도 1의 NVM 컨트롤 레지스터(155)로부터 해당 요청된 주소에 대한 적절한 엑세스 모드를 결정할 수 있다. 도 1의 NVM 가버너(150)는 도 1의 NVM 컨트롤 레지스터(155)에 저장된 주소 마스크들을 해당 요청된 주소와 비교하여(혹은, 병렬적으로) 이러한 결정을 수행할 수 있다. 비교에 의해 매칭이 이루어진 경우, 해당 엑세스 모드는 도 1의 NVM 컨트롤 레지스터(155)로부터 결정된 엑세스 모드로서 선택될 수 있다.
도 11은 본 발명의 실시 예에 따라 NVM 가버너가 요청된 주소에 대해 엑세스 모드를 결정하는 방법을 보여주는 순서도이다. 도 11에서, 도 10의 1010 단계가 자세히 설명되었다.
도 11을 참조하면, 1105 단계에서, 도 1의 NVM 가버너(150)는 주소 공간들(305, 310, 315)이 바이트 단위의 주소화 엑세스 모드를 사용하도록 결정할 수 있다. 또는, 1105 단계 대신에, 1110 단계에서, 도 1의 NVM 가버너(150)는 주소 공간들(305, 310, 315)이 블록 단위의 주소화 엑세스 모드를 사용하도록 결정할 수 있다. 더불어, 만약 복수의 NVDIMM(110, 115)이 추가적인 엑세스 모드들을 지원하는 경우, 도 11은 다른 엑세스 모드들을 결정하는 방법을 반영하여 변형될 수 있다.
도 12는 본 발명의 다른 실시 예에 따라 NVM 가버너가 요청된 주소에 대해 엑세스 모드를 결정하는 방법을 보여주는 순서도이다. 도 12에서, 도 10의 1010 단계가 자세히 설명되었다.
도 12를 참조하면, 1205 단계에서, 도 1의 NVM 가버너(150)는 요청된 주소를 도 1의 NVM 컨트롤 레지스터(155) 내의 주소 마스크들과 비교할 수 있다. 1210, 단계에서, 도 1의 NVM 가버너(150)는 매칭 결과가 발견되었는지 여부를 판단할 수 있다. 매칭 결과가 발견되는 경우(Yes 방향), 절차는 1215 단계로 진행된다. 매칭 결과가 발견되지 않는 경우(No 방향), 절차는 1220 단계로 진행된다.
1215 단계에서, 도 1의 NVM 가버너(150)는 요청된 주소에 대한 엑세스 모드를 매칭된 주소 마스크에 대응하는 도 1의 NVM 컨트롤 레지스터(155)에 저장된 엑세스 모드로 결정할 수 있다.
1220 단계에서, 도 1의 NVM 가버너(150)는 엑세스 모드를 바이트 단위의 주소화 엑세스 모드로 결정할 수 있다. 혹은, 바이트 단위의 주소화 엑세스 모드가 디폴트가 아닌 경우, 어떠한 엑세스 모드도 디폴트 엑세스 모드로 지정될 수 있다.
이하에서 본 발명의 특정 양상들이 적용될 수 있는 적합한 시스템 또는 시스템들에 대한 간략하고 일반적인 설명이 제공될 것이다.
도 13은 도 1 내지 도 12에 도시된 메모리 또는 스토리지를 위한 복수의 NVDIMM을 사용할 수 있는 장치를 보여주는 그림이다. 도 13을 참조하면, 일반적으로 시스템(205)은 하나 또는 하나 이상의 프로세서(105), 복수의 메모리(110, 115, 120, 125)(예를 들어, RAM(Random Access Memory), ROM(Read-Only Memory), 또는 다른 상태 저장 매체), NVM 가버너와 같은 메모리 컨트롤러(150), 스토리지(130), 유저 인터페이스(1310), 그리고 I/O(Input/Output) 엔진(1315)을 이용하여 제어될 수 있는 I/O 인터페이스 포트들이 부착된 시스템 버스(1305)를 포함할 수 있다. 또한, 시스템(205)은 예를 들어 이더넷(Ethernet) 커넥터와 같은 네트워크 커넥터(1320)을 포함할 수 있다. 클록(1325)은 시스템 버스(1305)에 연결된 구성 요소들의 동작을 조정하기 위해 사용될 수 있다.
시스템(205)은 적어도 부분적으로 기존의 입력 장치들로부터의 입력에 의해 제어될 수 있다. 예를 들어, 기존의 입력 장치들은 키보드들, 마우스들을 포함할 수 있다. 혹은, 이러한 제어는 다른 머신으로부터 수신된 지침들, VR(Virtual Reality) 환경과의 상호 작용, 생체 인식 피드백, 가상 머신들, 또는 다른 입력 신호들에 의해 수행될 수 있다.
여기서 사용된 '시스템' 이라는 용어는 광범위하게 단일 머신 혹은 시스템, 가상 머신, 또는 통신 결합 머신들의 시스템, 가상 머신들, 또는 함께 동작하는 장치들을 포함할 수 있다. 예시적인 시스템들은 퍼스널(Personal) 컴퓨터들, 워크스테이션들, 서버들, 포터블(Portable) 컴퓨터들, 포켓용(Handheld) 장치들, 휴대전화들, 태블릿들 등을 포함할 수 있다. 혹은 예시적인 시스템들은 자동차들, 기차들, 택시들과 같은 개인용 또는 대중 교통등과 같은 교통 장치들을 포함할 수 있다.
시스템(205)은 내장 컨트롤러들 등을 포함할 수 있다. 예를 들어, 내장 컨트롤러들은 프로그램이 가능하거나 혹은 불가능한 로직 장치들 또는 어레이(Array), ASIC(Application Specific Integrated Circuits), 내장 컴퓨터들, 스마트 카드들 등을 포함할 수 있다. 시스템(205)은 하나 또는 하나 이상의 원격 머신과의 하나 또는 하나 이상의 연결을 사용할 수 있다. 예를 들어, 이러한 연결은 네트워크 인터페이스, 모뎀, 또는 다른 의사 전달 연결을 통해 이루어질 수 있다.
시스템(205)은 인트라넷, 인터넷, LAN(Local Area Network), WAN(Wide Area Network) 등과 같은 물리적 및/또는 논리적 네트워크 방법에 의해 상호 연결될 수 있다. 당업자는 네트워크 통신이 다양한 유선 및/또는 무선 근거리 또는 장거리 캐리어 및 프로토콜을 이용할 수 있다는 것을 쉽게 이해할 수 있을 것이다. 예를 들어, 캐리어 및 프로토콜은 RF(Radio Frequency), 위성(Satellite), 마이크로 웨이브(Microwave), IEEE(Institute of Electrical and Electronics Engineers) 802.11, Bluetooth®, 광학, 적외선, 케이블, 레이저 등을 포함할 수 있다.
본 발명의 실시 예들은 기능들, 단계들, 데이터 구조들, 어플리케이션 프로그램들을 포함하는 관련 데이터를 참조하여 설명될 수 있다. 기능들, 단계들, 데이터 구조들, 어플리케이션 프로그램들은 시스템에 의해 엑세스되는 경우에 시스템이 테스크를 수행하거나 추상적인 데이터 타입들 또는 로우 레벨(Low-Level)의 하드웨어 컨텍스트(Context)들을 정의하도록 한다. 예를 들어, 상술한 관련 데이터는 RAM, ROM과 같은 휘발성 및/또는 불휘발성 메모리에 저장될 수 있다. 또는, 관련 데이터는 다른 스토리지 장치들 및 그들의 관련 스토리지 매체에 저장될 수 있다. 예를 들어, 관련 스토리지 매체는 하드 드라이브들, 플로피 디스크(Floppy-Disks), 광학 스토리지(Optical Storage), 테이프(Tapes), 플래시 메모리(Flash Memory), 메모리 스틱(Memory Sticks), 디지털 비디오 디스크(Digital Video Disks), 생체 스토리지(Biological Storage) 등을 포함할 수 있다.
관련 데이터는 패킷, 시리얼(Serial) 데이터, 패러렐(Parallel) 데이터, 전파 신호 등의 형태로 물리적 및/또는 논리적 네트워크를 포함하는 통신 환경을 통해 전송될 수 있다. 또한, 관련 데이터는 압축되거나 암호화된 형태로 이용될 수 있다. 관련 데이터는 분산 환경에서 이용될 수 있고, 시스템 엑세스에 대해 가까이 및/또는 멀리 저장될 수 있다.
본 발명의 실시 예들은 유형의 논 트랜지토리(Non-transitory)의 시스템 리더블(Readable) 매체를 포함할 수 있다. 시스템 리더블 매체는 하나 또는 하나 이상의 프로세서에 의해 수행되는 명령, 여기서 기술된 본 발명의 요소들을 수행하는 명령들로 구성된 명령들을 포함할 수 있다.
본 발명의 실시 예들은 제한 없이 다음의 예시들에 확장될 수 있다.
제 1 예에서, 본 발명의 실시 예는 시스템을 포함할 수 있다. 시스템은 NVDIMM 및 NVM 가버너를 포함할 수 있다. NVM 가버너는 제 1 어플리케이션에 대해 제 1 주소 공간을 제 1 엑세스 모드로 NVDIMM에 할당하고, 제 2 어플리케이션에 대해 제 2 주소 공간을 제 2 엑세스 모드로 NVDIMM에 할당하도록 동작한다. 또한, NVM 가버너는 적어도 제 1 주소 공간에 대한 제 1 주소 마스크를 NVM 컨트롤 레지스터 내에 저장하도록 동작한다. 제 1 주소 마스크는 제 1 엑세스 모드와 연관된다.
제 2 예에서, 본 발명의 실시 예는 제 1 예에 따른 시스템을 포함한다. 제 1 엑세스 모드는 제 2 엑세스 모드와 다르다.
제 3 예에서, 본 발명의 실시 예는 제 1 예에 따른 시스템을 포함한다. 제 1 엑세스 모드는 블록 단위의 주소화 모드를 포함하고, 제 2 엑세스 모드는 바이트 단위의 주소화 모드를 포함한다.
제 4 예에서, 본 발명의 실시 예는 제 3 예에 따른 시스템을 포함한다. NVM 컨트롤 레지스터는 복수의 주소 마스크를 저장하도록 동작한다. 복수의 주소 마스크 각각은 블록 단위의 주소화 모드를 사용하는 주소 공간과 연관된다. NVM 가버너는 NVM 컨트롤 레지스터 내에 저장되지 않은 주소 마스크에 대한 모든 주소 공간을 바이트 단위의 주소화 모드를 이용하는 주소 공간으로 처리할 수 있다.
제 5 예에서, 본 발명의 실시 예는 제 3 예에 따른 시스템을 포함할 수 있다. NVM 컨트롤 레지스터는 복수의 주소 마스크를 저장하도록 동작한다. 복수의 주소 마스크 각각은 바이트 단위의 주소화 모드를 사용하는 주소 공간과 연관된다. NVM 가버너는 NVM 컨트롤 레지스터 내에 저장되지 않은 주소 마스크에 대한 모든 주소 공간을 블록 단위의 주소화 모드를 이용하는 주소 공간으로 처리할 수 있다.
제 6 예에서, 본 발명의 실시 예는 제 3 예에 따른 시스템을 포함할 수 있다. NVM 컨트롤 레지스터는 제 2 주소 공간에 대한 제 2 주소 마스크를 저장하도록 동작한다. 제 2 주소 마스크는 제 2 엑세스 모드와 연관된다.
제 7 예에서, 본 발명의 실시 예는 제 3 예에 따른 시스템을 포함한다. NVM 컨트롤 레지스터는 16 개의 주소 마스크 및 16 개의 엑세스 모드들을 저장하도록 동작한다. 이는 NVDIMM 내의 16 개의 주소 공간들을 지원하기 위함이다. 16 개의 주소 마스크 각각은 48 비트의 사이즈를 갖는다.
제 8 예에서, 본 발명의 실시 예는 제 3 예에 따른 시스템을 포함한다. NVM 가버너는 바이트 단위 또는 블록 단위의 주소화 모드로 NVDIMM 내에 주소 공간을 할당하는 할당 로직을 포함할 수 있다.
제 9 예에서, 본 발명의 실시 예는 제 3 예에 따른 시스템을 포함한다. NVM 가버너는 바이트 단위의 주소화 모드를 사용하여 제 1 주소 공간에 엑세스하는 바이트 주소화 로직을 포함한다. NVM 가버너는 블록 단위의 주소화 모드를 이용하여 제 2 주소 공간에 엑세스 하기 위해 에뮬레이션하는 소프트웨어를 포함할 수 있다. 소프트웨어는 바이트 주소화 로직을 이용한다.
제 10 예에서, 본 발명의 실시 예는 제 3 예에 따른 시스템을 포함한다. NVM 가버너는 바이트 단위의 주소화 모드를 이용하여 제 1 주소 공간에 엑세스하는 바이트 주소화 로직 및 블록 단위의 주소화 모드를 이용하여 제 2 주소 공간에 엑세스하는 블록 주소화 로직을 포함한다.
제 11 예에서, 본 발명의 실시 예는 제 3 예에 따른 시스템을 포함한다. NVM 가버너는 NVM 컨트롤 레지스터 내의 모든 주소 마스크에 대해 병렬적인 엑세스 체크를 수행하도록 동작한다. 또한, NVM 가버너는 매칭된 주소 마스크와 연관된 엑세스 모드를 이용하여 주소 요청을 스케쥴한다.
제 12 예에서, 본 발명의 실시 예는 제 3 예에 따른 시스템을 포함한다. NVM 컨트롤 레지스터는 복수의 주소 마스크 각각을 어떠한 수의 엑세스 모드 중의 하나와 연관시키도록 동작한다.
제 13 예에서, 본 발명의 실시 예는 제 3 예에 따른 시스템을 포함한다. 시스템은 NVDIMM과 연결된 프로세서를 더 포함한다. 프로세서는 NVM 컨트롤 레지스터를 포함한다.
제 14 예에서, 본 발명의 실시 예는 제 3 예에 따른 시스템을 포함한다. 시스템은 프로세서 상에서 동작 가능한 OS(Operating System)을 더 포함한다. OS는 NVM 가버너를 포함한다.
제 15 예에서, 본 발명의 실시 예는 방법을 포함한다.
방법은 주소 공간을 NVDIMM에 할당하는 요청을 수신하는 단계;
요청된 주소 공간에 대한 엑세스 모드를 수신하는 단계;
NVDIMM 내의 주소 공간을 확인하는 단계; 그리고
요청된 주소 공간으로서 상기 주소 공간을 반환하는 단계를 포함하되, 상기 엑세스 모드는 적어도 두 가지 엑세스 모드를 포함하는 세트로부터 추출된다.
제 16 예에서, 본 발명의 실시 예는 제 15 예에 따른 방법을 포함한다. 방법은 주소 공간에 대한 주소 마스크 및 주소 공간에 대한 엑세스 모드를 NVM 컨트롤 레지스터 내에 저장하는 단계를 더 포함한다.
제 17 예에서, 본 발명의 실시 예는 제 16 예에 따른 방법을 포함한다. 주소 공간에 대한 주소 마스크를 저장하는 단계는 만약 상기 주소 공간에 대한 엑세스 모드가 블록 단위의 주소화 모드인 경우에 상기 주소 공간에 대한 주소 마스크만을 저장하는 단계를 포함한다.
제 18 예에서, 본 발명의 실시 예는 제 16 예에 따른 방법을 포함한다. 주소 공간에 대한 주소 마스크를 저장하는 단계는 만약 상기 주소 공간에 대한 엑세스 모드가 바이트 단위의 주소화 모드인 경우에 상기 주소 공간에 대한 주소 마스크만을 저장하는 단계를 포함한다.
제 19 예에서, 본 발명의 실시 예는 제 15 예에 따른 방법을 포함한다. 요청된 주소 공간에 대한 엑세스 모드를 수신하는 단계는 요청된 주소 공간에 대한 블록 단위의 주소화 모드를 수신하는 단계를 포함한다.
제 20 예에서, 본 발명의 실시 예는 제 15 예에 따른 방법을 포함한다. 요청된 주소 공간에 대한 엑세스 모드를 수신하는 단계는 요청된 주소 공간에 대한 바이트 단위의 주소화 모드를 수신하는 단계를 포함한다.
제 21 예에서, 본 발명의 실시 예는 방법을 포함한다.
방법은 NVDIMM으로부터 주소 공간에 엑세스 하기 위한 요청을 수신하는 단계;
상기 주소 공간에 대한 엑세스 모드를 결정하는 단계; 그리고
상기 엑세스 모드를 이용하여 NVDIMM으로부터 상기 주소 공간에 엑세스하기 위한 요청을 스케쥴하는 단계를 포함한다.
제 22 예에서, 본 발명의 실시 예는 제 21 예에 따른 방법을 포함한다. 주소 공간에 대한 엑세스 모드를 결정하는 단계는 상기 주소 공간에 대한 블록 단위의 주소화 모드를 결정하는 단계를 포함한다.
제 23 예에서, 본 발명의 실시 예는 제 21 예에 따른 방법을 포함한다. 주소 공간에 대한 엑세스 모드를 결정하는 단계는 상기 주소 공간에 대한 바이트 단위의 주소화 모드를 결정하는 단계를 포함한다.
제 24 예에서, 본 발명의 실시 예는 제 21 예에 따른 방법을 포함한다. 주소 공간에 대한 엑세스 모드를 결정하는 단계는 프로세서 내의 NVM 컨트롤 레지스터로부터 엑세스 모드를 결정하는 단계를 포함한다.
제 25 예에서, 본 발명의 실시 예는 제 24 예에 따른 방법을 포함한다. NVM 컨트롤 레지스터로부터 상기 엑세스 모드를 결정하는 단계는,
상기 주소 공간을 상기 NVM 컨트롤 레지스터 내의 주소 마스크와 매칭시키도록 시도하는 단계; 그리고
상기 주소 공간과 매칭되는 NVM 컨트롤 레지스터 내의 주소 마스크에 대응하는 엑세스 모드를 결정하는 단계를 포함한다.
제 26 예에서, 본 발명의 실시 예는 제 25 예에 따른 방법을 포함한다. 상기 주소 공간을 상기 NVM 컨트롤 레지스터 내의 주소 마스크와 매칭시키도록 시도하는 단계는 상기 주소 공간을 NVM 컨트롤 레지스터 내의 주소 마스크 각각과 비교하는 단계를 포함한다.
제 27 예에서, 본 발명의 실시 예는 제 26 예에 따른 방법을 포함한다. 상기 주소 공간을 NVM 컨트롤 레지스터 내의 주소 마스크 각각과 비교하는 단계는 병렬적으로 상기 주소 공간을 NVM 컨트롤 레지스터 내의 주소 마스크 각각과 비교하는 단계를 포함한다.
제 28 예에서, 본 발명의 실시 예는 제 25 예에 따른 방법을 포함한다. NVM 컨트롤 레지스터로부터 상기 엑세스 모드를 결정하는 단계는 만약 상기 주소 공간이 상기 NVM 컨트롤 레지스터 내의 주소 마스크와 매칭되지 않는 경우에 상기 엑세스 모드를 바이트 단위의 주소화 모드로 결정하는 단계를 포함한다.
제 29 예에서, 본 발명의 실시 예는 제 25 예에 따른 방법을 포함한다. NVM 컨트롤 레지스터로부터 상기 엑세스 모드를 결정하는 단계는 만약 상기 주소 공간이 상기 NVM 컨트롤 레지스터 내의 주소 마스크와 매칭되지 않는 경우에 상기 엑세스 모드를 블록 단위의 주소화 모드로 결정하는 단계를 포함한다.
이상에서와 같이 도면과 명세서에서 최적 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
105 : 프로세서 110, 115 : NVDIMM
120, 125 : DIMM 130 : 스토리지
135 : OS 140, 145 : 가상 머신
150 : NVM 가버너 155 : NVM 컨트롤 레지스터
205 : 컴퓨터 시스템 210 : 컴퓨터
215 : 모니터 220 : 키보드
225 : 마우스 305, 310, 315 : 주소 공간
405 : 할당 로직 410 : 바이트 주소화 로직
415 : 블록 주소화 로직 420 : 소프트웨어
505, 510, 515 : 주소 마스크 520, 525, 530 : 엑세스 모드
605 : 요청된 주소 610, 615, 620 : 비교기
625 : 인코더 630 : 멀티플렉서
635 : 엑세스 모드 1305 : 시스템 버스
1310 : 유저 인터페이스 1315 : I/O 엔진
1320 : 네트워크 커넥터 1325 : 클록

Claims (20)

  1. NVDIMM(Non-Volatile Dual In-Line Memory Module); 그리고
    제 1 어플리케이션에 대한 제 1 주소 공간을 제 1 엑세스(Access) 모드로 상기 NVDIMM에 할당하고, 제 2 어플리케이션에 대한 제 2 주소 공간을 제 2 엑세스 모드로 상기 NVDIMM에 할당하고, 적어도 상기 제 1 주소 공간에 대한 제 1 주소 마스크를 NVM(Non-Volatile Memory) 컨트롤 레지스터 내에 저장하도록 동작하는 NVM 가버너를 포함하되,
    상기 NVM 가버너는:
    상기 NVM 가버너는 상기 제 1 주소 마스크 및 요청된 주소를 비교하는 비교기;
    상기 비교기의 정보를 기반으로 컨트롤 신호를 생성하는 인코더; 및
    상기 컨트롤 신호를 기반으로 상기 제 1 엑세스 모드 및 상기 제 2 엑세스 모드 중 어느 하나를 선택하여 출력하는 멀티플렉서를 포함하고,
    상기 제 1 주소 마스크는 상기 제 1 엑세스 모드와 연관되고,
    상기 NVDIMM 내의 상기 제 1 주소 공간은 제 1 할당 요청에 응답하는 상기 제 1 엑세스 모드를 사용하여 할당될 수 있고, 제 2 할당 요청에 응답하는 상기 제 2 엑세스 모드를 사용하여 할당될 수 있고,
    상기 NVM 컨트롤 레지스터는 상기 제 2 엑세스 모드를 사용하여 할당된 주소 공간들에 대한 주소 마스크들을 저장하지 않고; 그리고
    상기 NVM 가버너는 상기 NVM 컨트롤 레지스터에 저장되지 않는 주소 마스크에 대한 모든 주소 공간을 상기 제 2 엑세스 모드를 사용하는 주소 공간으로 처리하도록 동작하고,
    상기 제 1 엑세스 모드 및 상기 제 2 엑세스 모드는 블록 단위의 주소화 (Block-addressable) 모드 및 바이트 단위의 주소화(Byte-addressable) 모드를 포함하는 세트로부터 각각 추출되고,
    상기 제 1 주소 마스크는 상기 제 1 주소 공간에 포함된 주소들을 결정하는데 이용되는 시스템.
  2. 삭제
  3. 제 1 항에 있어,
    상기 NVM 가버너는,
    상기 바이트 단위의 주소화 모드를 사용하여 바이트 단위의 주소화 주소 공간에 엑세스하는 바이트 단위의 주소화 로직; 그리고
    상기 블록 단위의 주소화 모드를 사용하여 블록 단위의 주소화 주소 공간에 엑세스하는 것을 에뮬레이트하는(Emulate) 소프트웨어를 포함하되,
    상기 소프트웨어는 상기 바이트 단위의 주소화 로직을 사용하는 시스템.
  4. 제 1 항에 있어,
    상기 NVM 가버너는,
    상기 바이트 단위의 주소화 모드를 사용하여 바이트 단위의 주소화 주소 공간에 엑세스하는 바이트 단위의 주소화 로직; 그리고
    상기 블록 단위의 주소화 모드를 사용하여 블록 단위의 주소화 주소 공간에 엑세스하는 블록 단위의 주소화 로직을 포함하는 시스템.
  5. 제 1 항에 있어,
    상기 NVM 가버너는 상기 NVM 컨트롤 레지스터 내의 모든 주소 마스크들로 병렬적인 엑세스 체크(Access Check)를 수행하도록 동작하고, 매칭된 주소 마스크와 연관된 엑세스 모드를 사용하여 주소 요청을 스케쥴하도록 동작하는 시스템.
  6. 제 1 항에 있어,
    상기 NVDIMM과 연결된 프로세서를 더 포함하되,
    상기 프로세서는 상기 NVM 컨트롤 레지스터를 포함하는 시스템.
  7. 제 6 항에 있어,
    상기 프로세서 상에서 실행될 수 있는 운영 체제(Operating System)를 더 포함하되,
    상기 운영 체제는 상기 NVM 가버너를 포함하는 시스템.
  8. 제 1 항에 있어서,
    상기 제 1 엑세스 모드는 제 1 입력/출력(I/O) 요청이 상기 제 1 주소 공간으로부터 데이터를 읽거나 쓰는 방법을 지정하고, 상기 제 2 엑세스 모드는 제 2 I/O 요청이 상기 제 1 주소 공간으로부터 데이터를 읽거나 또는 쓰는 방법을 지정하는 시스템.
  9. 제 1 항에 있어서,
    상기 제 1 주소 공간은 제 1 크기를 포함하고, 상기 제 2 주소 공간은 제 2 크기를 포함하고, 상기 제 1 크기는 상기 제 2 크기와 다른 시스템.
  10. 어플리케이션, NVDIMM(Non-Volatile Dual In-Line Memory Module) 및 NVM(Non-Volatile Memory) 가버너를 포함하는 시스템의 동작 방법에 있어서,
    상기 NVM 가버너는:
    상기 NVM 가버너는 주소 마스크 및 요청된 주소를 비교하는 비교기;
    상기 비교기의 정보를 기반으로 컨트롤 신호를 생성하는 인코더; 및
    상기 컨트롤 신호를 기반으로 엑세스 모드를 선택하여 출력하는 멀티플렉서를 포함하되,
    상기 동작 방법은:
    상기 NVM 가버너에 의해, NVDIMM 내에 주소 공간을 할당하기 위한 요청을 수신하는 단계;
    상기 NVM 가버너에 의해, 상기 요청된 주소 공간에 대한 엑세스 모드를 수신하는 단계, 상기 엑세스 모드는 적어도 두 가지 엑세스 모드들을 포함하는 세트로부터 추출되고, 상기 적어도 두 가지 엑세스 모드들은 블록 단위의 주소화(Block-addressable) 모드 및 바이트 단위의 주소화(Byte-addressable) 모드를 포함함;
    상기 NVM 가버너에 의해, 상기 NVDIMM 내의 주소 공간을 확인하는 단계;
    상기 NVM 가버너에 의해, 상기 엑세스 모드가 제 1 엑세스 모드가 아닌 경우, 상기 주소 공간에 대한 주소 마스크 및 상기 주소 공간에 대한 상기 엑세스 모드를 NVM(a Non-Volatile Memory) 컨트롤 레지스터 내에 저장하는 단계, 상기 주소 마스크는 상기 주소 공간에 포함된 주소들을 결정하는 데 이용됨;
    상기 NVM 가버너에 의해, 상기 요청된 주소 공간으로 상기 주소 공간을 반환하는 단계; 그리고
    상기 NVM 가버너에 의해, 상기 NVM 컨트롤 레지스터에 저장되지 않는 주소 마스크에 대한 모든 주소 공간을 상기 제 1 엑세스 모드를 사용하는 주소 공간으로 처리하는 단계를 포함하는 방법.
  11. 제 10 항에 있어,
    상기 주소 공간에 대한 주소 마스크를 저장하는 단계는,
    상기 주소 공간에 대한 상기 엑세스 모드가 블록 단위의 주소화(block-addressable) 모드인 경우, 상기 주소 공간에 대한 상기 주소 마스크를 저장하는 단계를 포함하는 방법.
  12. 제 10 항에 있어서,
    상기 주소 공간에 대한 주소 마스크를 저장하는 단계는,
    상기 주소 공간에 대한 상기 엑세스 모드가 바이트 단위의 주소화(byte-addressable) 모드인 경우, 상기 주소 공간에 대한 상기 주소 마스크를 저장하는 단계를 포함하는 방법.
  13. 제 10 항에 있어서,
    NVDIMM(Non-Volatile Dual In-Line Memory Module) 내에 주소 공간을 할당하기 위한 요청을 수신하는 단계는, 상기 어플리케이션으로부터 상기 NVDIMM 내에 상기 주소 공간을 할당하기 위한 상기 요청을 수신하는 단계를 포함하고,
    상기 요청된 주소 공간에 대한 엑세스 모드를 수신하는 단계는, 상기 어플리케이션으로부터 상기 요청된 주소 공간에 대한 상기 엑세스 모드를 수신하는 단계를 포함하고,
    상기 NVDIMM 내의 주소 공간을 확인하는 단계는, 상기 엑세스 모드를 사용하여 상기 NVDIMM 내의 상기 주소 공간을 할당하는 단계를 포함하고,
    상기 요청된 주소 공간으로 상기 주소 공간을 반환하는 단계는, 상기 요청된 주소 공간으로 상기 주소 공간을 상기 어플리케이션에 반환하는 단계를 포함하고,
    상기 엑세스 모드는 적어도 두 가지 엑세스 모드들을 포함하는 세트로부터 추출되고, 상기 주소 공간은 상기 엑세스 모드를 사용하여 엑세스되도록 디자인되는 방법.
  14. 제 10 항에 있어서,
    상기 주소 공간은 제 1 할당 요청에 응답하는 적어도 두 가지 엑세스 모드들 중 상기 제 1 엑세스 모드를 사용하여 할당될 수 있고, 제 2 할당 요청에 응답하는 상기 적어도 두 가지 엑세스 모드들 중 제 2 엑세스 모드를 사용하여 할당될 수 있는 방법.
  15. 제 10 항에 있어서,
    상기 적어도 두 가지 엑세스 모드들 각각은 입력/출력(I/O) 요청이 상기 주소 공간으로부터 데이터를 읽거나 쓰는 방법을 지정하는 방법.
  16. 제 10 항에 있어서,
    상기 주소 마스크 및 상기 엑세스 모드가 상기 NVM 컨트롤 레지스터 내에 저장된 상기 주소 공간은 제 1 크기를 포함하고, 상기 NVDIMM 내에 제 2 주소 공간은 제 2 크기를 포함하고, 상기 제 1 크기는 상기 제 2 크기와 다른 방법.
  17. 어플리케이션, NVDIMM(Non-Volatile Dual In-Line Memory Module) 및 NVM(Non-Volatile Memory) 가버너를 포함하는 시스템의 동작 방법에 있어서,
    상기 NVM 가버너는:
    상기 NVM 가버너는 주소 마스크 및 요청된 주소를 비교하는 비교기;
    상기 비교기의 정보를 기반으로 컨트롤 신호를 생성하는 인코더; 및
    상기 컨트롤 신호를 기반으로 엑세스 모드를 선택하여 출력하는 멀티플렉서를 포함하되,
    상기 동작 방법은:
    상기 NVM 가버너에 의해, NVDIMM으로부터 주소 공간에 엑세스하기 위한 요청을 수신하는 단계;
    상기 NVM 가버너에 의해, 상기 주소 공간을 NVM 컨트롤 레지스터 내의 주소 마스크와 매칭시키려고 시도하는 단계, 상기 NVM 컨트롤 레지스터는 주소 마스크 각각에 대응하는 엑세스 모드를 저장하고, 상기 주소 마스크는 상기 엑세스 모드와 연관된 제 1 주소 공간에 포함된 주소들을 결정하는 이용됨;
    상기 NVM 가버너에 의해, 상기 주소 공간이 상기 NVM 컨트롤 레지스터 내의 주소 마스크와 매칭하지 않는 경우, 상기 주소 공간에 대한 엑세스 모드를 제 1 엑세스 모드로 결정하는 단계;
    상기 NVM 가버너에 의해, 상기 주소 공간이 상기 NVM 컨트롤 레지스터 내의 주소 마스크와 매칭하는 경우, 상기 주소 공간에 대한 상기 엑세스 모드를 상기 NVM 컨트롤 레지스터로부터 상기 매칭된 주소 마스크에 대응하는 상기 엑세스 모드로 결정하는 단계; 그리고
    상기 NVM 가버너에 의해, 상기 엑세스 모드를 사용하여 상기 NVDIMM으로부터 상기 주소 공간에 엑세스하기 위한 요청을 스케쥴하는 단계를 포함하고,
    상기 주소 공간은 제 1 할당 요청에 응답하는 상기 엑세스 모드를 사용하여 할당되고, 제 2 할당 요청에 응답하는 제 2 엑세스 모드를 사용하여 할당되도록 디자인되고,
    상기 엑세스 모드 및 상기 제 2 엑세스 모드는 블록 단위의 주소화 (Block-addressable) 모드 및 바이트 단위의 주소화(Byte-addressable) 모드를 포함하는 세트로부터 각각 추출되는 방법.
  18. 제 17 항에 있어,
    상기 주소 공간에 대한 엑세스 모드를 상기 제 1 엑세스 모드로 결정하는 단계는, 상기 엑세스 모드를 상기 주소 공간에 대한 블록 단위의 주소화(block-addressable) 모드 및 바이트 단위의 주소화(byte-addressable) 모드 중 하나로 결정하는 단계를 포함하는 방법.
  19. 제 17 항에 있어서,
    상기 주소 공간에 대한 상기 엑세스 모드를 상기 NVM 컨트롤 레지스터로부터 결정하는 단계는, 프로세서 내의 상기 NVM 컨트롤 레지스터로부터 상기 엑세스 모드를 결정하는 단계를 포함하는 방법.
  20. 제 17 항에 있어서,
    상기 주소 공간을 상기 NVM 컨트롤 레지스터 내의 주소 마스크와 매칭시키려고 시도하는 단계는, 상기 주소 공간을 상기 NVM 컨트롤 레지스터 내의 주소 마스크 각각과 비교하는 단계를 포함하는 방법.
KR1020160042453A 2015-07-13 2016-04-06 복수의 엑세스 모드를 지원하는 불휘발성 메모리를 포함하는 시스템 및 그것의 엑세스 방법 KR102363526B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201562192028P 2015-07-13 2015-07-13
US62/192,028 2015-07-13
US14/957,568 2015-12-02
US14/957,568 US9886194B2 (en) 2015-07-13 2015-12-02 NVDIMM adaptive access mode and smart partition mechanism

Publications (2)

Publication Number Publication Date
KR20170008141A KR20170008141A (ko) 2017-01-23
KR102363526B1 true KR102363526B1 (ko) 2022-02-16

Family

ID=57775804

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160042453A KR102363526B1 (ko) 2015-07-13 2016-04-06 복수의 엑세스 모드를 지원하는 불휘발성 메모리를 포함하는 시스템 및 그것의 엑세스 방법

Country Status (5)

Country Link
US (1) US9886194B2 (ko)
JP (1) JP6744768B2 (ko)
KR (1) KR102363526B1 (ko)
CN (1) CN106354656B (ko)
TW (1) TWI691838B (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018057039A1 (en) * 2016-09-26 2018-03-29 Hewlett-Packard Development Company, L. Update memory management information to boot an electronic device from a reduced power mode
US10025714B2 (en) * 2016-09-30 2018-07-17 Super Micro Computer, Inc. Memory type range register with write-back cache strategy for NVDIMM memory locations
KR20180061851A (ko) * 2016-11-30 2018-06-08 삼성전자주식회사 바이트 액세서블 인터페이스 및 블록 액세서블 인터페이스를 지원하는 스토리지 장치 및 이를 포함하는 전자 시스템
KR102400102B1 (ko) * 2017-05-11 2022-05-23 삼성전자주식회사 데이터 버퍼의 내부 데이터(dq) 터미네이션을 지원하는 메모리 시스템
TWI645295B (zh) 2017-06-20 2018-12-21 慧榮科技股份有限公司 資料儲存裝置與資料儲存方法
CN110720126B (zh) * 2017-06-30 2021-08-13 华为技术有限公司 传输数据掩码的方法、内存控制器、内存芯片和计算机系统
CN109791589B (zh) * 2017-08-31 2021-07-16 华为技术有限公司 一种计算机内存数据加解密的方法及装置
US11194524B2 (en) 2017-09-15 2021-12-07 Qualcomm Incorporated Apparatus and method for performing persistent write operations using a persistent write command
US10782994B2 (en) * 2017-12-19 2020-09-22 Dell Products L.P. Systems and methods for adaptive access of memory namespaces
CN108255428B (zh) * 2018-01-10 2020-07-24 联想(北京)有限公司 一种数据处理方法、装置及电子设备
US11042374B2 (en) 2019-05-02 2021-06-22 International Business Machines Corporation Non-volatile dual in-line memory module storage
US11113188B2 (en) 2019-08-21 2021-09-07 Microsoft Technology Licensing, Llc Data preservation using memory aperture flush order
US11314460B2 (en) * 2019-09-13 2022-04-26 Kioxia Corporation Solid state drive supporting both byte addressable protocol and block addressable protocol
US11003376B2 (en) * 2019-09-13 2021-05-11 Toshiba Memory Corporation Reconfigurable SSD storage pool
CN111753337B (zh) * 2020-07-02 2023-02-21 上海电器科学研究所(集团)有限公司 一种储能电池管理系统意外断电soc处理方法
TWI818732B (zh) * 2022-09-16 2023-10-11 新唐科技股份有限公司 記憶體裝置及其操作方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005258804A (ja) * 2004-03-11 2005-09-22 Toshiba Corp メモリカード装置およびメモリカード制御方法
US20060143396A1 (en) 2004-12-29 2006-06-29 Mason Cabot Method for programmer-controlled cache line eviction policy
JP2008204257A (ja) * 2007-02-21 2008-09-04 Seiko Epson Corp メモリを制御するメモリコントローラ、メモリの制御方法。
US20110060887A1 (en) 2009-09-09 2011-03-10 Fusion-io, Inc Apparatus, system, and method for allocating storage
US20120185640A1 (en) 2011-01-19 2012-07-19 Mstar Semiconductor, Inc. Controller and method for controlling memory and memory system
US20130275661A1 (en) 2011-09-30 2013-10-17 Vincent J. Zimmer Platform storage hierarchy with non-volatile random access memory with configurable partitions
US20140208016A1 (en) 2013-01-18 2014-07-24 Yasir Malik System and Method for Filtering Addresses
JP2014170360A (ja) * 2013-03-04 2014-09-18 Hitachi Ltd 計算機及びメモリ管理方法

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5513337A (en) * 1994-05-25 1996-04-30 Intel Corporation System for protecting unauthorized memory accesses by comparing base memory address with mask bits and having attribute bits for identifying access operational mode and type
KR19980033054A (ko) * 1996-10-23 1998-07-25 윌리엄비.켐플러 프로그램 가능 메모리 액세스
US6496916B1 (en) * 1998-04-17 2002-12-17 Agere Systems Inc. System for flexible memory paging in partitioning memory
US6854043B2 (en) * 2002-07-05 2005-02-08 Hewlett-Packard Development Company, L.P. System and method for multi-modal memory controller system operation
US20050251617A1 (en) 2004-05-07 2005-11-10 Sinclair Alan W Hybrid non-volatile memory system
US20060069849A1 (en) * 2004-09-30 2006-03-30 Rudelic John C Methods and apparatus to update information in a memory
TWI446171B (zh) * 2006-09-28 2014-07-21 Virident Systems Inc 用於異質性主記憶體具有可程式化記憶體控制的系統,方法及裝置
US20080250220A1 (en) * 2007-04-06 2008-10-09 Takafumi Ito Memory system
US8832408B2 (en) 2007-10-30 2014-09-09 Spansion Llc Non-volatile memory array partitioning architecture and method to utilize single level cells and multi-level cells within the same memory
US8261047B2 (en) * 2008-03-17 2012-09-04 Freescale Semiconductor, Inc. Qualification of conditional debug instructions based on address
KR101573047B1 (ko) * 2009-01-23 2015-12-02 삼성전자주식회사 복합 메모리 장치 및 이를 이용한 i/o 처리 방법
US8239619B2 (en) * 2010-07-09 2012-08-07 Macronix International Co., Ltd. Method and apparatus for high-speed byte-access in block-based flash memory
CN103197985B (zh) * 2011-11-08 2018-07-13 索尼公司 存储控制装置
CN103514095B (zh) * 2012-06-18 2016-08-03 记忆科技(深圳)有限公司 一种数据库写入ssd 的方法和系统
CN102779096B (zh) * 2012-07-11 2015-02-04 山东华芯半导体有限公司 一种基于页块面三维的闪存地址映射方法
US9098402B2 (en) * 2012-12-21 2015-08-04 Intel Corporation Techniques to configure a solid state drive to operate in a storage mode or a memory mode
US8949486B1 (en) * 2013-07-17 2015-02-03 Mellanox Technologies Ltd. Direct memory access to storage devices
ES2628328T3 (es) * 2013-10-29 2017-08-02 Huawei Technologies Co., Ltd. Sistema de procesamiento de datos y método de procesamiento de datos
WO2015112126A1 (en) * 2014-01-22 2015-07-30 Hewlett Packard Development Company, L.P. Byte-addressable non-volatile read-write main memory partitioned into regions including metadata region
US20160253123A1 (en) * 2014-03-19 2016-09-01 Bruce Ledley Jacob NVMM: An Extremely Large, Logically Unified, Sequentially Consistent Main-Memory System
CN105094691B (zh) * 2014-05-21 2019-05-21 华为技术有限公司 一种数据操作的方法、设备和系统
US9396769B1 (en) * 2015-02-11 2016-07-19 Macronix International Co., Ltd. Memory device and operating method of same
US9645939B2 (en) * 2015-06-26 2017-05-09 Intel Corporation Hardware apparatuses and methods for distributed durable and atomic transactions in non-volatile memory

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005258804A (ja) * 2004-03-11 2005-09-22 Toshiba Corp メモリカード装置およびメモリカード制御方法
US20060143396A1 (en) 2004-12-29 2006-06-29 Mason Cabot Method for programmer-controlled cache line eviction policy
JP2008204257A (ja) * 2007-02-21 2008-09-04 Seiko Epson Corp メモリを制御するメモリコントローラ、メモリの制御方法。
US20110060887A1 (en) 2009-09-09 2011-03-10 Fusion-io, Inc Apparatus, system, and method for allocating storage
US20120185640A1 (en) 2011-01-19 2012-07-19 Mstar Semiconductor, Inc. Controller and method for controlling memory and memory system
US20130275661A1 (en) 2011-09-30 2013-10-17 Vincent J. Zimmer Platform storage hierarchy with non-volatile random access memory with configurable partitions
US20140208016A1 (en) 2013-01-18 2014-07-24 Yasir Malik System and Method for Filtering Addresses
JP2014170360A (ja) * 2013-03-04 2014-09-18 Hitachi Ltd 計算機及びメモリ管理方法

Also Published As

Publication number Publication date
CN106354656B (zh) 2021-05-11
JP2017021789A (ja) 2017-01-26
TW201706850A (zh) 2017-02-16
US9886194B2 (en) 2018-02-06
TWI691838B (zh) 2020-04-21
JP6744768B2 (ja) 2020-08-19
KR20170008141A (ko) 2017-01-23
CN106354656A (zh) 2017-01-25
US20170017402A1 (en) 2017-01-19

Similar Documents

Publication Publication Date Title
KR102363526B1 (ko) 복수의 엑세스 모드를 지원하는 불휘발성 메모리를 포함하는 시스템 및 그것의 엑세스 방법
US10296217B2 (en) Techniques to configure a solid state drive to operate in a storage mode or a memory mode
KR102137761B1 (ko) 이종 통합 메모리부 및 그것의 확장 통합 메모리 스페이스 관리 방법
KR102317657B1 (ko) Nvdimm을 포함하는 장치 및 그것의 엑세스 방법
KR102161448B1 (ko) 멀티 채널 메모리를 포함하는 시스템 및 그 동작 방법
US9317312B2 (en) Computer and memory management method
BR112017009045B1 (pt) Método de acesso de recurso de armazenamento suportado por virtualização de entrada/saída de raiz única sr-iov, controlador de armazenamento suportado por virtualização de entrada/saída de raiz única e dispositivo de armazenamento
KR102707683B1 (ko) 메모리 채널의 소프트웨어 트레이닝을 수행하는 전자 장치 및 그것의 메모리 채널 트레이닝 방법
US20150324119A1 (en) Method and System for Improving Swap Performance
KR20190054426A (ko) 메모리 시스템 및 그것의 동작 방법
KR20140146458A (ko) 메모리 관리 방법 및 장치
US10146440B2 (en) Apparatus, system and method for offloading collision check operations in a storage device
CN113032293A (zh) 缓存管理器及控制部件
CN112445423A (zh) 存储器系统、计算机系统及其数据管理方法
US9229891B2 (en) Determining a direct memory access data transfer mode
KR20190102438A (ko) 전자 장치 및 그것의 동작 방법
US10831684B1 (en) Kernal driver extension system and method
CN113485791B (zh) 配置方法和访问方法、装置、虚拟化系统和存储介质
US20180239711A1 (en) Dimm ssd addressing performance techniques
US20140229688A1 (en) Storage control device, storage system, and storage control method
US20150326684A1 (en) System and method of accessing and controlling a co-processor and/or input/output device via remote direct memory access
US20150212759A1 (en) Storage device with multiple processing units and data processing method
CN113031849A (zh) 直接内存存取单元及控制部件
US12045475B1 (en) Resizable scratchpad memory
CN117908772B (zh) 多mb的数据处理方法、装置、设备及介质

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)