KR102335063B1 - 저장 디바이스 메모리 공간에의 직접적인 호스트 액세스 - Google Patents

저장 디바이스 메모리 공간에의 직접적인 호스트 액세스 Download PDF

Info

Publication number
KR102335063B1
KR102335063B1 KR1020180115194A KR20180115194A KR102335063B1 KR 102335063 B1 KR102335063 B1 KR 102335063B1 KR 1020180115194 A KR1020180115194 A KR 1020180115194A KR 20180115194 A KR20180115194 A KR 20180115194A KR 102335063 B1 KR102335063 B1 KR 102335063B1
Authority
KR
South Korea
Prior art keywords
nvm
host
access
driver
pcie
Prior art date
Application number
KR1020180115194A
Other languages
English (en)
Other versions
KR20190074194A (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 KR20190074194A publication Critical patent/KR20190074194A/ko
Application granted granted Critical
Publication of KR102335063B1 publication Critical patent/KR102335063B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • 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
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Memory System (AREA)
  • Information Transfer Systems (AREA)
  • Storage Device Security (AREA)

Abstract

호스트에 의해 저장 디바이스의 메모리 공간에 직접적으로 액세스하는 장치 및 방법이 제공된다. 일 실시예에서, 호스트에 의한 비휘발성 메모리 디바이스의 비휘발성 메모리의 드라이버리스 액세스의 방법은 호스트 메모리 공간에 비휘발성 메모리 디바이스의 비휘발성 메모리의 일부분을 맵핑시키는 PCIe 메모리 공간을 초기화하는 단계를 포함한다. 비휘발성 메모리는 호스트와 비휘발성 메모리 디바이스 사이의 PCIe 링크를 통해 맵핑된다. 로딩/저장 커맨드는 드라이버리스 액세스를 위해 PCIe 메모리 공간으로 전송된다. 방법은 최소 트랜잭션 패킷 크기의 정렬 크기를 협상하여 로딩/저장 커맨드를 완료하는 단계를 추가로 포함한다.

Description

저장 디바이스 메모리 공간에의 직접적인 호스트 액세스{DIRECT HOST ACCESS TO STORAGE DEVICE MEMORY SPACE}
본 발명의 실시예는 대체로 호스트에 의해 저장 디바이스의 메모리 공간에 직접적으로 액세스하는 장치 및 방법에 관한 것이다.
컴퓨터 시스템의 메모리는 휘발성 메모리와 같은 주 메모리, 및 비휘발성 메모리와 같은 이차 메모리 또는 메모리 저장소로 구성될 수 있다. 컴퓨터의 중앙 프로세싱 유닛(central processing unit, CPU)과 메모리 저장소 사이의 통신은 판독/기록 액세스를 위한 명령어를 특정하는 커맨드 세트 및 프로토콜에 의해 그리고 그러한 커맨드가 송신되게 하는 호스트 프로그래밍 인터페이스에 의해 규정된다. 통신 프로토콜은 주변기기 컴퓨터 확장 버스와 같은 버스를 통해 호스트에 접속되는 메모리 저장 디바이스들의 보다 빠른 채택 및 상호운용성을 가능하게 하도록 정의되어 왔다.
CPU는 메모리 저장 디바이스로부터 호스트와 메모리 저장 디바이스 사이의 다양한 물리적 층, 링크 층, 호스트 인터페이스 층, 메모리 관리 층, 데이터 경로 층, 및 플래시 변환 층을 거치는 통신을 통해 데이터에 액세스한다. 호스트와 메모리 저장 디바이스 사이의 각각의 통신에 대한 시간 레이턴시(time latency)는 데이터 페치(fetch)/실행 사이클 시간에 유의한 양의 시간을 추가한다.
따라서, 호스트에 의해 메모리 저장 디바이스의 메모리 공간에 액세스하기 위한 개선된 장치 및 방법이 필요하다.
호스트에 의해 저장 디바이스의 메모리 공간에 직접적으로 액세스하는 장치 및 방법이 제공된다. 일 실시예에서, 호스트에 의한 비휘발성 메모리 디바이스의 비휘발성 메모리의 드라이버리스(driverless) 액세스의 방법은 호스트 메모리 공간에 비휘발성 메모리 디바이스의 비휘발성 메모리의 일부분을 맵핑시키는 PCIe 메모리 공간을 초기화하는 단계를 포함한다. 비휘발성 메모리는 호스트와 비휘발성 메모리 디바이스 사이의 PCIe 링크를 통해 맵핑된다. 로딩/저장 커맨드는 드라이버리스 액세스를 위해 PCIe 메모리 공간으로 전송된다. 방법은 최소 트랜잭션 패킷 크기의 정렬 크기를 협상하여 로딩/저장 커맨드를 완료하는 단계를 추가로 포함한다.
다른 실시예에서, 호스트에 의한 비휘발성 메모리 디바이스의 비휘발성 메모리의 드라이버 액세스 및 드라이버리스 액세스의 방법은 호스트 메모리 공간에 비휘발성 메모리 디바이스의 비휘발성 메모리의 일부분을 맵핑시키는 PCIe 메모리 공간을 초기화하는 단계를 포함한다. 비휘발성 메모리는 호스트와 비휘발성 메모리 디바이스 사이의 PCIe 링크를 통해 맵핑된다. 저장 디바이스의 구성 정보로 PCIe 구성 공간이 또한 초기화된다. 로딩/저장 커맨드는 드라이버리스 액세스를 위해 PCIe 메모리 공간으로 전송된다. 판독/기록 커맨드는 저장 디바이스의 구성 정보를 활용하여 드라이버 액세스를 위해 호스트의 NVMe 드라이버로 전송된다.
또 다른 실시예에서, 호스트에 의해 비휘발성 메모리 디바이스의 비휘발성 메모리에 액세스하는 방법은 호스트와 비휘발성 메모리 디바이스 사이에 제1 PCIe 링크를 그리고 호스트와 주변기기 디바이스 사이에 제2 PCIe 링크를 확립하는 단계를 포함한다. 호스트 메모리 공간에 비휘발성 메모리 디바이스의 비휘발성 메모리의 하나 이상의 부분을 맵핑시키는 PCIe 메모리 공간이 제1 PCIe 링크를 통해 초기화된다. 데이터는 비휘발성 메모리 디바이스의 비휘발성 메모리의 하나 이상의 부분을 맵핑시키는 PCIe 메모리 공간을 어드레싱함으로써 주변기기 디바이스로부터 제2 PCIe 링크를 통해 제1 PCIe 링크로 라우팅된다.
일 실시예에서, 컴퓨터 시스템이 호스트 수단 및 비휘발성 메모리 디바이스를 포함한다. 호스트 수단은 호스트 메모리 공간을 포함한다. 비휘발성 메모리 디바이스는 비휘발성 저장 메모리 및 비휘발성 저장 메모리에 커플링되는 제어기를 포함한다. 호스트 수단은 호스트 수단에 의한 직접 액세스를 위해 호스트 메모리 공간에 맵핑되는 비휘발성 저장 메모리의 하나 이상의 부분을 동적으로 활성화 및 비활성화시키도록 구성된다.
일 실시예에서, 비휘발성 메모리 디바이스는 링크 인터페이스, 비휘발성 메모리, 및 비휘발성 메모리에 커플링되는 제어기를 포함한다. 링크 인터페이스는 호스트에 연결되도록 구성된다. 제어기는, 드라이버리스 액세스 커맨드를 수신하도록 그리고 드라이버리스 액세스 커맨드를 라우팅하여 호스트 인터페이스 프로토콜 층을 바이패싱하도록 구성된다. 제어기는 드라이버 액세스 커맨드를 수신하도록 그리고 드라이버 액세스 커맨드를 호스트 인터페이스 프로토콜 층으로 라우팅하도록 추가로 구성된다.
본 발명의 상기에 언급된 특징이 상세히 이해될 수 있는 방식으로, 상기에 간략하게 요약된 본 발명의 보다 구체적인 설명이 실시예들을 참조하여 이루어질 수 있고, 이들 중 일부는 첨부 도면에 도시되어 있다. 그러나, 첨부 도면이 본 발명의 전형적인 실시예만을 도시하고, 그에 따라, 본 발명에 대해, 다른 동등하게 유효한 실시예로 인정될 수 있는 그의 범주의 제한사항으로 간주되어서는 안 된다는 것에 유의해야 한다.
도 1a는 개시자 또는 호스트 및 호스트를 위한 비휘발성 메모리 디바이스를 포함하는 시스템의 일 실시예의 개략도이다.
도 1b는 비휘발성 메모리 디바이스의 호스트 및 비휘발성 메모리의 메모리 어드레스 공간의 메모리 맵의 일 실시예의 개략도이다.
도 2는 비휘발성 메모리 디바이스의 비휘발성 메모리에의 드라이버 액세스 및 드라이버리스 액세스의 일 실시예를 도시한 개략도이다.
도 3은 비휘발성 메모리 디바이스의 비휘발성 메모리에의 주변기기 디바이스의 드라이버 액세스 및 드라이버리스 액세스의 일 실시예를 도시한 개략도이다.
도 4는 호스트에 의한 비휘발성 메모리 디바이스의 비휘발성 메모리의 드라이버리스 액세스의 기록 경로의 일 실시예를 도시한 개략도이다.
도 5는 드라이버리스 액세스 모드에서 NVM 디바이스를 동작시키는 방법의 일 실시예를 도시한 개략도이다.
도 6은 이형(anomaly) 검출기 모듈을 갖는 비휘발성 메모리 디바이스의 제어기의 일 실시예의 개략도이다.
도 7은 직접 액세스 모드에서 비휘발성 메모리 디바이스를 동작시키고 잠재적인 보안 위반을 검출하는 방법의 일 실시예를 도시한 개략도이다.
하기에서는, 본 발명의 실시예를 참조한다. 그러나, 본 발명이 구체적인 기술된 실시예로 제한되지 않는다는 것이 이해되어야 한다. 그 대신, 하기의 특징들 및 요소들의 임의의 조합이, 상이한 실시예들과 관련되든 관련되지 않든, 본 발명을 구현하고 실시하기 위해 고려된다. 게다가, 본 발명의 실시예가 다른 가능한 해법 이상의 그리고/또는 종래 기술 이상의 이점을 달성할 수 있지만, 특정 이점이 주어진 실시예에 의해 달성되는지 여부는 본 발명의 제한사항이 아니다. 따라서, 하기의 태양, 특징, 실시예, 및 이점은 단지 예시적인 것이며, 청구항(들)에서 명시적으로 언급된 경우를 제외하면 첨부된 청구범위의 요소 또는 제한사항으로 간주되지 않는다. 마찬가지로, "본 발명"에 대한 언급은 본 명세서에서 개시되는 임의의 독창적 주제의 일반화로서 이해해서는 안 되며, 청구항(들)에서 명시적으로 언급된 경우를 제외하면 첨부된 청구범위의 요소 또는 제한사항으로 간주되어서는 안 된다.
본 발명의 실시예는 대체로 호스트에 의해 저장 디바이스의 메모리 공간에 직접적으로 액세스하는 장치 및 방법에 관한 것이다. 호스트는 드라이버리스 커맨드 및 드라이버 커맨드 양측 모두에 의해 NAND 플래시 메모리 공간과 같은 메모리 공간에 액세스할 수 있다. 드라이버리스 액세스 및 드라이버 액세스는 컴퓨터 디바이스, 컴퓨터 시스템, 또는 컴퓨터 네트워크에 제공될 수 있거나, 또는 그에 접속된 임의의 주변기기 디바이스에 제공될 수 있다.
도 1a는 개시자 또는 호스트(150) 및 호스트(150)를 위한 NVM 디바이스(102), 예컨대 SSD를 포함하는 시스템(100)의 일 실시예의 개략도이다. 호스트(150)는, 예컨대 메모리 저장소, 주 메모리, 캐시 메모리, 백업 메모리, 또는 리던던트 메모리에 대해, NVM 디바이스(102)에 포함된 NVM(106)을 활용하여 데이터를 기록 및 판독할 수 있다. NVM 디바이스(102)는 노트북 하드 드라이브 또는 데스크톱 하드 드라이브와 같은 내부 저장소 드라이브일 수 있다. NVM 디바이스(102)는 메모리 카드(예컨대, SD(secure digital) 카드, 마이크로-SD 카드, 또는 MMC(multimedia card)) 또는 USB 디바이스와 같은 핸드헬드 탈착가능 메모리 디바이스와 같은, 그러나 이로 제한되지 않는 탈착가능 대용량 저장 디바이스일 수 있다. NVM 디바이스(102)는 eSD/eMMC 임베디드 플래시 디바이스와 같이 호스트(150) 내에 임베드되는 임베디드 대용량 저장 디바이스의 형태를 취할 수 있다. NVM 디바이스(102)는, 또한, 임의의 다른 타입의 내부 저장 디바이스, 탈착가능 저장 디바이스, 임베디드 저장 디바이스, 외부 저장 디바이스, 또는 네트워크 저장 디바이스일 수 있다.
호스트(150)는 컴퓨터 서버, NAS(network attached storage) 유닛, 데스크톱 컴퓨터, 노트북(즉, 랩톱) 컴퓨터, 태블릿 컴퓨터(즉, "스마트" 패드), 셋톱박스, 전화 핸드셋(즉, "스마트"폰), 텔레비전, 카메라, 디스플레이 디바이스, 디지털 미디어 플레이어, 비디오 게이밍 콘솔, 비디오 스트리밍 디바이스, 및 자동차 애플리케이션(즉, 길안내, 자율주행)과 같은 광범위한 디바이스를 포함할 수 있다. 소정 실시예에서, 호스트(150)는, 범용 프로세싱 유닛, 전용 하드웨어(예컨대, ASIC(application specific integrated circuit)), FPGA(field programmable gate array)와 같은 설정가능형 하드웨어, 또는 소프트웨어 명령어, 마이크로코드, 또는 펌웨어에 의해 구성되는 임의의 다른 형태의 프로세싱 유닛을 비롯하여, 데이터를 프로세싱할 수 있는 프로세싱 유닛 또는 임의의 형태의 하드웨어를 갖는 임의의 디바이스를 포함한다.
호스트(150)는 루트 컴플렉스(root complex)(153)를 통해 DRAM 또는 다른 주 메모리와 같은 메모리 어드레스 공간(154)에 접속되는 CPU(152)를 포함한다. 루트 컴플렉스(153)는 CPU(152)와 일체화될 수 있거나 또는 별개의 컴포넌트일 수 있다. 애플리케이션 프로그램은 호스트(150)의 컴포넌트에 의한 실행을 위해 메모리 어드레스 공간(154)에 저장될 수 있다. 호스트(150)는 저장 디바이스 인터페이스와 같은 버스(156)를 포함하는데, 이는 NVM 디바이스(102)의 호스트 인터페이스(101)와 상호작용한다. 버스(156) 및 호스트 인터페이스(101)는 PCIe(Peripheral Component Interface Express) 직렬 통신 프로토콜 또는 다른 적합한 통신 프로토콜과 같은 통신 프로토콜(118, 120) 하에서 동작한다. 다른 적합한 통신 프로토콜은 이더넷, SAS(serial attached SCSI), SATA(serial AT attachment), RDMA(remote direct memory access)와 관련된 임의의 프로토콜, 예컨대 인피니밴드, iWARP, 또는 RoCE(RDMA over Converged Ethernet), 및 다른 적합한 직렬 통신 프로토콜을 포함한다.
PCIe 통신 프로토콜에서, 호스트(150)는 TLP(transaction packet)로서 커맨드를 전송한다. TLP는 찾고 있는 판독 또는 기록 정보가 NVM 디바이스(102)의 NVM(106)에 위치되어 있음을 명시하는 어드레스 필드를 포함한다. TLP는 다른 필드들, 예컨대 Fmt 필드, 타입 필드, TC 필드, TD 필드, CRC, 길이 필드, 요청자 ID 필드, 태그 필드, 및 기타 필드를 포함할 수 있다. 제어기(110)는 명시된 위치에 있는 데이터에 액세스하는 데 어드레스 필드를 사용할 수 있다.
NVM 디바이스(102)의 NVM(106)은 비휘발성 메모리 공간으로서 정보의 장기 저장을 위해 구성될 수 있고, 전력 온/오프 사이클 이후에 정보를 보유한다. NVM(106)은 NAND 플래시 메모리의 하나 이상의 다이로 이루어질 수 있다. 비휘발성 메모리의 다른 예는 상변화 메모리, ReRAM 메모리, MRAM 메모리, 자기 매체(슁글(shingle) 자기 기록을 포함함), 광 디스크, 플로피 디스크, EPROM(electrically programmable read only memory), EEPROM(electrically erasable programmable read only memory), 및 기타 솔리드 스테이트 메모리를 포함한다. 자기 매체 비휘발성 메모리는 NVM 디바이스(102) 내의 하나 이상의 자기 플래터(magnetic platter)일 수 있다. 각각의 플래터는 데이터의 하나 이상의 트랙의 하나 이상의 영역을 포함할 수 있다. NVM(106)은 하나 이상의 타입의 비휘발성 메모리를 포함할 수 있다.
제어기(110)는 비휘발성 메모리 디바이스(102)의 동작을 관리하는데, 예컨대 NVM(106)에 기록하고 그로부터 판독한다. 제어기(110)는 하나 이상의 프로세서(130)를 포함할 수 있는데, 이는 멀티코어 프로세서일 수 있다. 프로세서(130)는 펌웨어 코드를 통해 NVM 디바이스(102)의 컴포넌트를 다룬다. 제어기(110)는 MAC 및 PHY 컴포넌트를 포함할 수 있는 호스트 인터페이스(101)를 통해 호스트(150)와 인터페이싱한다. 호스트 인터페이스(101)는 NVM 인터페이스(114)를 통해 NVM(106)과 인터페이싱한다.
제어기(110)는 NVMe(NVM Express) 프로토콜 하에서 동작할 수 있지만, 다른 프로토콜이 적용가능하다. NVMe는 PCIe 인터페이스를 통해 연결된 호스트 및 저장 디바이스를 통해 SSD가 동작하도록 개발된 통신 인터페이스/프로토콜이다. 인터페이스는 NAND 플래시 메모리의 NVM(106)을 갖는 SSD와 같은 SSD에 대한 커맨드 큐(queue) 및 완료 경로를 제공한다. NVMe는 엔드-투-엔드(end-to-end) 데이터 보호, 향상된 에러 리포팅, 및 가상화(virtualization)와 같은 엔터프라이즈 능력에 대한 지원을 포함한다.
제어기(110)는, 또한, NVM 디바이스(102)의 동작 동안 단기 저장 또는 일시적 메모리에 대한 캐시 버퍼(들) 또는 휘발성 메모리(112)를 포함한다. 휘발성 메모리(112)는, 전력이 차단되는 경우, 저장된 데이터를 보유하지 않는다. 휘발성 메모리의 예는 RAM, DRAM, SRAM(static random access memory), 및 다른 형태의 휘발성 메모리를 포함한다.
제어기(110)는 컴퓨터 판독가능 프로그램 코드(예컨대, 소프트웨어 또는 펌웨어) 실행가능 명령어(본 명세서에서 "명령어"로 지칭됨)를 실행시킨다. 명령어는 제어기(110)의 다양한 컴포넌트, 예컨대 프로세서(130), 로직 게이트, 스위치, ASIC, 프로그래밍가능 로직 제어기, 임베디드 마이크로제어기, 및 제어기(110)의 기타 컴포넌트에 의해 실행될 수 있다.
명령어는 비일시적 컴퓨터 판독가능 저장 매체에 저장된다. 소정 실시예에서, 명령어는 NVM 디바이스(102)의 비일시적 컴퓨터 판독가능 저장 매체에, 예컨대 ROM(113) 또는 NVM(106)에 저장된다. NVM 디바이스(102)에 저장된 명령어는 호스트(150)로부터의 추가 입력 또는 지시 없이 실행될 수 있다. 다른 실시예에서, 명령어는 호스트(150)로부터 송신된다. 저장된 명령어는 제어기에 의한 실행을 위해 제어기(110)의 휘발성 메모리(112) 내에 전체적으로 또는 부분적으로 저장될 수 있다. 제어기(110)는 본 명세서에 기술되고 도면에 도시된 다양한 기능을 수행하기 위한 하드웨어 및 명령어로 구성된다.
NVM 디바이스(102)는, 또한, 스위치 또는 브리지를 통해 호스트(150)에 접속될 수 있다. 시스템(100)은, 또한, 호스트(150)의 버스(156)에 접속되거나 또는 스위치 또는 브리지를 통해 호스트(150)에 접속되는 주변기기 디바이스(190), 예컨대 카메라를 포함할 수 있다. 시스템(100)은, 또한, 스위치 또는 브리지를 통해 호스트(150)에 접속되는 제2 호스트(도시되지 않음)를 포함할 수 있다.
도 1b는 도 1a의 NVM 디바이스(102)의 NVM(106) 및 호스트(150)의 메모리 어드레스 공간(154)의 메모리 맵(155)의 개략도이다. 메모리 맵(155)은 시스템(100)을 참조하여 기술되지만, 다른 시스템들이 적용가능할 수 있다. 메모리 맵(155)은 호스트(150)에 의해 확립되는 NVM 디바이스(102)의 NVM(106)의 드라이버리스 액세스 모드 및 드라이버 액세스 모드 양측 모두를 나타낸다.
드라이버 액세스 모드에서, 호스트(150)는 DeviceA_bar0에 대응하는 PCIe 구성 공간에 구현된 NVM 디바이스(102)의 하나의 BAR(124)을 활성화시킬 수 있다. PCIe 구성 공간은 NVM 디바이스(102)의 구성 정보를 저장한다. 호스트(150)는 NVM 디바이스(102)의 구성 정보에 액세스하여, NVM 디바이스(102) 및 호스트(150)의 NVMe 드라이버 층을 통한 드라이버 액세스를 구현하여 NVM 디바이스(102)의 NVM 부분들(106A 내지 106E)에 액세스한다.
드라이버리스 액세스 모드에서, 호스트(150)는 DeviceA_bar2에 대응하는 PCIe 메모리 공간 또는 가상 메모리 공간에 구현된 NVM 디바이스(102)의 다른 BAR(124)을 활성화시킬 수 있다. 호스트(150)는 NVM 부분(106B)의 내부 레지스터를 호스트(150)의 메모리 어드레스 공간(154B)에 맵핑시킨다. 호스트(150)는 메모리 어드레스 공간(154B)의 어드레스에 대해 직접적으로 판독 및 기록할 수 있는데, 여기서 PCIe 통신 프로토콜은 판독 및 기록 커맨드를 NVM 디바이스(102)로 자동으로 전달한다. 호스트(150)는 드라이버리스 액세스 모드에서 NVM 디바이스(102)의 추가 BAR(124)을 활성화시켜서 NVM 디바이스(102)의 NVM(106)의 다른 부분에의 액세스를 제공할 수 있다. 예를 들어, 호스트는 DeviceA_bar4에 대응하는 PCIe 메모리 공간에 구현된 NVM의 추가 BAR(124)을 활성화시켜서 NVM 부분(106D)의 내부 레지스터를 호스트(150)의 메모리 어드레스 공간(154C)에 맵핑시킬 수 있다.
호스트(150)는 제2 디바이스, 예컨대 주변기기 디바이스 또는 제2 NVM 디바이스에의 드라이버리스 액세스 및/또는 드라이버 액세스를 확립할 수 있다. 예를 들어, 제2 PCIe 디바이스는 DeviceB_bar0에 대응하는 PCIe 구성 공간에 구현된 BAR을 활성화시켜서 제2 PCIe 디바이스에의 드라이버 액세스를 제공할 수 있다.
도 2는 도 1의 시스템(100)을 참조하여 기술된 NVM 디바이스(202)의 NVM(230)에의 NVMe 기반 호스트 액세스(200) 또는 드라이버 액세스의 일 실시예를 도시한 개략도이지만, 다른 시스템이 적용가능할 수 있다. NVMe 기반 호스트 액세스(200)는 호스트(250)가 호스트(250)의 애플리케이션(210)에 의해 개시되는 커맨드에 의해 NVM 디바이스(202)를 관리하는 것을 포함한다. 호스트(250)의 애플리케이션(210)은 판독 또는 기록 커맨드와 같은 커맨드를 호스트(250)의 파일-시스템 층(212)으로 전송한다. 파일-시스템 층(212)은 호스트(250)의 MVMe 디바이스 드라이버(214)로 커맨드를 전달한다. NVMe 디바이스 드라이버(214)는 호스트(250)의 DRAM(216)으로부터 큐 메시지를 로딩하고 그에 큐 메시지를 저장할 수 있다. NVMe 드라이버(214)는 PCIe 통신 프로토콜 하에서 동작하는 호스트(250)의 PCIe 층(218)으로 판독/기록 커맨드를 전달한다.
NVM 디바이스(202)의 PCIe 층(220)은 호스트(250)로부터 커맨드를 수신하고, NVM 디바이스(202)의 NVMe 층(222)으로 커맨드를 전달한다. NVMe 층(222)은 커맨드를 NVMe 프로토콜로 변환하고, NVM 디바이스(202)의 프론트엔드 층(224)으로 커맨드를 전달한다. NVM 디바이스(202)의 프론트엔드 층(224)은 NVM 디바이스(202)의 NVM(230)의 캐시 관리 및 일관성(coherency) 관리를 포함할 수 있다. 프론트엔드 층(224)은 NVM 디바이스(202)의 데이터 경로 층(226)으로 판독/기록 커맨드를 전달한다. 데이터 경로 층(226)은 FTL(flash translation layer) 모듈(228)에 액세스하여, 커맨드의 로직 어드레스와 연관된 물리적 어드레스를 판정하게 한다. 데이터 경로 층(226)은 NVM(230)에 액세스하여, 커맨드와 연관된 데이터를 판독 및 기록하게 한다. 데이터 경로 층(226)은 프론트엔드 층(224)으로부터 커맨드를 그리고 FTL 모듈(228)로부터 어드레스 정보를 수신하여, NVM(230)에 대한 판독/기록 동작을 개시하게 한다. 요컨대, 애플리케이션(210)이 NVM 디바이스(202)에 NVMe 기반 액세스 커맨드를 제공하는 경우, 커맨드는 애플리케이션(210)으로부터 파일-시스템 층(212)으로, NVMe 드라이버(214)로, 호스트의 PCIe 층(218)으로, NVM 디바이스의 PCIe 층(220)으로, NVMe 층(222)으로, 프론트엔드로, FTL 모듈(228)에 액세스하는 데이터 경로 층(226)으로, NVM(230)으로 전달된다.
도 2는, 또한, NVM(230)에의 드라이버리스 액세스 경로(access route)(240)의 일 실시예를 도시하는데, 여기서 NVM(230)은 호스트(250)의 메모리 공간에 맵핑된다. 예를 들어, 호스트(250)의 애플리케이션(210)은 호스트(250)의 PCIe 층(218)으로 드라이버리스 액세스 커맨드를 전달한다. NVM 디바이스(202)의 PCIe 층(220)은 호스트(250)로부터 드라이버리스 액세스 커맨드를 수신하고, NVM 디바이스(202)의 데이터 경로 층(226)으로 드라이버리스 액세스 커맨드를 전달한다. 데이터 경로 층(226) 모듈은 NVM(230)에 대한 판독/기록 동작을 개시한다. 요컨대, 애플리케이션(210)이 NVM 디바이스(202)에 드라이버리스 액세스 커맨드를 제공하는 경우, 커맨드는 애플리케이션(210)으로부터 호스트의 PCIe 층(218)으로, NVM 디바이스의 PCIe 층(220)으로, 데이터 경로 층(226)으로, NVM(230)으로 전달된다.
드라이버리스 액세스 경로(240)에서, 제어기(110)는 NVMe 파일-시스템 테이블을 바이패싱하도록 그리고 BAR을 가상-물리적 어드레스 맵핑으로서 다루도록 지시받는다. 예를 들어, NVM(230)의 물리적 부분에 대응하는 BAR이 로직 블록 어드레스에 동적으로 맵핑될 수 있다. PCIe 프로토콜은 LBA 범위를 그 자신의 가상 메모리 어드레스 공간에 맵핑시키는 것 그리고 PCIe 트랜잭션을 이용하여 이들 LBA에의 드라이버리스 액세스를 허용하는 것 -- 이에 따라, NVMe 층을 바이패싱함 -- 을 가능하게 한다. PCIe 프로토콜은 특정 LBA 범위를 맵핑시키고 나서 PCIe 층을 통해 그들 LBA를 직접적으로 어드레싱함으로써 NVMe 층을 바이패싱하는 데 이용된다. 호스트(250)는 PCIe를 통해 이러한 어드레스 공간에 직접적으로 액세스할 수 있고, 이러한 어드레스 공간에 판독하고 그에 기록할 수 있다.
소정 실시예에서, 드라이버리스 액세스 경로(240)에서, 제어기(110)는 복수의 드라이버리스 액세스 요청을 NVM 인터페이스(114)에 대한 버스트 동작으로 종합하거나 결부시킬 수 있다. 복수의 드라이버리스 액세스 커맨드는 휘발성 메모리(112)에 종합될 수 있다. NVM 인터페이스(114)는 NVM(106)에 대한 단일 요청으로서 버스트 동작을 실행할 수 있다. NAND 플래시를 포함하는 NVM(106)의 경우, 버스트 동작이 성능을 증가시킬 수 있는데, 이는 NAND 플래시 다이의 유휴 시간이 감소될 수 있기 때문이다.
소정 태양에서, PCIe는 NMV 디바이스(202) 내의 NVM(230)을 메모리 어퍼처(aperture)로 변환하여, 메모리 어퍼처를 호스트(250) 내의 메모리 어드레스 공간에 노출시킨다. PCIe 프로토콜은 메모리 어퍼처를 호스트(250) 상의 메모리 어드레스 공간에 맵핑시킨다. NVM(230)는 CPU(152)에 대한 간단한 메모리로 나타나서, 제출 및 완료 레이턴시를 감소시키고 유효 대역폭 활용을 증가시킬 수 있다.
소정 실시예에서, 직렬 PCIe는 물리적 메모리의 할당된 부분을 호스트 디바이스 내의 가상 어드레스 공간에 동적으로 맵핑시키는 데 사용된다. 예를 들어, 시스템이 PCIe 프로토콜 또는 그의 파생물들 중 어느 하나 하에서 동작하는 실시예에서, 디바이스는 BAR을 통해 호스트 메모리 어드레스 공간에 맵핑될 수 있다.
드라이버리스 액세스 모드에서, NVM(230)의 일부분이 소정 기간 동안에 호스트(250)의 메모리 공간에 맵핑된다. 할당된 NVM(230)의 부분은 NVM(230)의 서브세트여서 복잡도를 감소시킬 수 있다. 드라이버리스 액세스 경로(240)는 FTL 모듈(228)과의 협력을 포함할 수 있는데, 여기서 데이터 경로 층(226)은 어드레스 변환을 위해 FTL 모듈(228)에 액세스한다. 다른 실시예에서, 드라이버리스 액세스 경로(240)는 FTL 모듈(228)의 바이패싱을 포함할 수 있다. NVM 디바이스(202)의 FTL 모듈(228)을 바이패싱함으로써, 호스트(250)는, 예컨대 어드레스 변환을 수행 및 관리함으로써, NVM(230)을 직접적으로 관리한다.
애플리케이션(210)의 가상 어드레스 공간에의 물리적 어드레스의 맵핑은 판독/기록 규칙적 호스트 트랜잭션을 통하는 것이 아니라 CPU의 로딩/저장 메모리 트랜잭션을 통해 특정 어드레스 범위에의 드라이버리스 액세스를 제공한다. DRAM(216)으로 라우팅하는 것 대신, 로딩/저장 메모리 트랜잭션이 NVM 디바이스(102)로 라우팅된다. NVM(230)에의 드라이버리스 액세스는 호스트(250)의 NVMe 드라이버(214) 및 NVM 디바이스(202)의 NVMe 층(222)을 바이패싱함으로써 호스트(250)와 NVM 디바이스(202) 사이의 레이턴시를 감소시킨다.
도 3은 도 1의 시스템을 참조하여 기술된 NVM 디바이스(302)의 NVM(330)에의 NVMe 기반 호스트 액세스(300) 또는 카메라와 같은 주변기기 디바이스(390)의 드라이버 액세스의 일 실시예를 도시한 개략도이지만, 다른 시스템이 적용가능하다. 예를 들어, PCIe 주변기기 디바이스와 같은 주변기기 디바이스(390)가 DRAM(316)에 기록될 데이터를 제공할 수 있다. DRAM(316)은 파일-시스템 층(312)에 데이터를 전송한다. 파일-시스템 층(312)은 호스트(350)의 NVMe 드라이버(314)로 데이터를 전달한다. NVMe 드라이버(314)는 호스트(350)의 PCIe 층(318)으로 데이터를 전달한다. NVM 디바이스(302)의 PCIe 층(320)은 호스트(350)로부터 데이터를 수신하고, NVM 디바이스(302)의 NVMe 층(322)으로 데이터를 전달한다. NVMe 층(322)은 NVM 디바이스(302)의 프론트엔드 층(324)으로 데이터를 전달한다. NVM 디바이스(302)의 프론트엔드 층(324)은 NVM 디바이스(302)의 데이터 경로 층(326)으로 데이터를 전달한다. 데이터 경로 층(326)은 FTL 모듈(328)에 액세스하여, 데이터의 로직 어드레스와 연관된 물리적 블록 어드레스를 판정하게 한다. 데이터 경로 층(326)은 NVM(330)에 액세스하여, NVM(330)에 데이터를 기록하게 한다. 요컨대, 주변기기 디바이스(390)가 NVM(330)에의 NVMe 기반 액세스를 제공하는 경우, 데이터는 주변기기 디바이스(390)로부터 DRAM(316)으로, 파일-시스템 층(312)으로, NVMe 드라이버(314)로, 호스트의 PCIe 층(318)으로, NVM 디바이스의 PCIe 층(320)으로, NVMe 층(322)으로, 프론트엔드 층(324)으로, FTL 모듈(328)에 액세스하는 데이터 경로 층(326)으로, NVM(330)으로 전달된다.
도 3은, 또한, NVM(330)으로의 드라이버리스 액세스 경로(340)의 기록 경로의 일 실시예를 도시한다. 드라이버리스 액세스 경로(340)의 기록 경로의 일 실시예에서, 주변기기 디바이스는 호스트(350)의 PCIe 층(318)에 기록될 데이터를 제공한다. NVM 디바이스(302)의 PCIe 층(320)은 호스트(350)로부터 데이터를 수신하고, NVM 디바이스(302)의 데이터 경로 층(326)으로 데이터를 전달한다. 데이터 경로 층(326)은 NVM(330)에 액세스하여, NVM(330)에 데이터를 기록하게 한다. 요컨대, 주변기기 디바이스(390)가 NVM(330)에 드라이버리스 기록 데이터를 제공하는 경우, 데이터는 주변기기 디바이스(390)로부터 PCIe 층(318)으로, NVM 디바이스(302)의 PCIe 층(320)으로, 데이터 경로 층(326)으로, NVM(330)으로 전달된다.
훨씬 더 짧은 PCIe-PCIe 경로가 드라이버리스 액세스 경로(340)에 의해 가능해진다. 드라이버리스 액세스 경로(340)에서, 제어기(110)는 NVMe 파일-시스템 테이블을 바이패싱하도록 그리고 할당된 BAR을 가상-물리적 어드레스 맵핑으로서 다루도록 지시받는다. PCIe 프로토콜은 LBA 범위를 그 자신의 가상 메모리 어드레스 공간에 맵핑시키는 것 그리고 PCIe 트랜잭션을 이용하여 이들 LBA에의 직접 액세스를 허용하는 것 -- 이에 따라, NVMe 층을 바이패싱함 -- 을 가능하게 한다. PCIe 프로토콜은 특정 LBA 범위를 맵핑시키고 나서 PCIe 층을 통해 그들 LBA를 직접적으로 어드레싱함으로써 NVMe 층을 바이패싱하는 데 이용된다. 호스트(350)는 PCIe를 통해 이러한 어드레스 공간에 직접적으로 액세스할 수 있고, 이러한 어드레스 공간에 판독하고 그에 기록할 수 있다.
소정 실시예에서, 드라이버리스 액세스 경로(340)에서, 제어기(110)는 복수의 드라이버리스 액세스 요청을 NVM 인터페이스(114)에 대한 버스트 동작으로 종합하거나 결부시킬 수 있다. 복수의 드라이버리스 액세스 커맨드는 휘발성 메모리(112)에 종합될 수 있다. NVM 인터페이스(114)는 NVM 디바이스(102)에 대한 단일 요청으로서 버스트 동작을 실행할 수 있다. NAND 플래시를 포함하는 NVM 디바이스(102)의 경우, 버스트 동작이 성능을 증가시킬 수 있는데, 이는 NAND 플래시 다이의 유휴 시간이 감소될 수 있기 때문이다.
드라이버리스 액세스 경로(340)는 FTL 모듈(328)과의 협력을 포함할 수 있는데, 여기서 데이터 경로 층(326)은 어드레스 변환을 위해 FTL 모듈(328)에 액세스한다. 다른 실시예에서, 드라이버리스 액세스 경로(340)는 FTL 모듈(328)의 바이패싱을 포함할 수 있다. NVM 디바이스(302)의 FTL 모듈(328)을 바이패싱함으로써, 호스트(350)는, 예컨대 어드레스 변환을 수행 및 관리함으로써, NVM(330)을 직접적으로 관리한다.
주변기기 디바이스(390)에 할당된 가상 어드레스 공간에의 물리적 어드레스의 맵핑은 판독/기록 규칙 호스트 트랜잭션을 통하는 것이 아니라 CPU의 로딩/저장 메모리 트랜잭션을 통해 특정 어드레스 범위에의 드라이버리스 액세스를 제공한다. NVM(330)에의 드라이버리스 액세스는 호스트(350)의 NVMe 드라이버(314) 및 NVM 디바이스(302)의 NVMe 층(322)을 바이패싱함으로써 주변기기 디바이스(390)와 NVM 디바이스(302) 사이의 레이턴시를 감소시킨다.
소정 실시예에서, 호스트(350)는, 호스트(350) 및/또는 NVM 디바이스(302)의 PCIe 제어기에의 기록 구성 커맨드와 같은, NVM 디바이스(102)의 NVM(106)의 할당된 부분에 대응하는 BAR에 대한 주변기기 디바이스(390)를 구성할 수 있다. 소정 실시예에서, 할당된 BAR 메모리는, 예컨대 할당된 BAR 메모리에 펌웨어 또는 호스트(350)의 다른 컴포넌트를 통해 액세스함으로써, 호스트(350)의 운영체제를 수반하지 않은 채 주변기기 디바이스(390)(또는 제2 호스트)에 의해 액세스될 수 있다.
소정 태양에서, 드라이버리스 액세스 경로(340)는 DRAM(316)에서 버퍼링되고 나서 파일-시스템 층(312), NVMe 드라이버(314), 및 이어서, PCIE 층(318)으로 라우팅될 데이터, 예컨대 기록될 데이터를 라우팅하는 것을 회피시킨다. BAR 할당이 이루어진 경우, 데이터는 메모리 어퍼처를 통해 NVM 디바이스(302)의 NVM(330)으로 직접적으로 라우팅될 수 있다.
소정 태양에서, 드라이버리스 액세스 경로(340)는 카메라와 같은 주변기기 디바이스(390)로부터 NVM 디바이스(302)의 NVM(330)으로의 데이터의 순차적인 기록을 위한 개선된 성능을 제공한다. 예를 들어, 데이터의 순차적인 기록은 NVM(330)의 페이지들의 순차적인 패턴으로 기록되는 다량의 데이터를 포함할 수 있다. 드라이버리스 액세스 경로(340)는 NVMe, 및 호스트(350) 및 NVM 디바이스(302) 내의 다른 층과 같은 통신 프로토콜을 바이패싱함으로써 NVM(330)에의 낮은 레이턴시 및 높은 대역폭 액세스를 제공할 수 있다.
드라이버리스 액세스 경로(340)는, 또한, 주변기기 디바이스(390) 상에 저장된 코드의 인-플레이스-코드(in-place-code) 실행을 위해 사용될 수 있다. 예를 들어, NVMe 기반 호스트 액세스(300)에서, 주변기기 디바이스(390)는 DRAM(316)에 실행될 커맨드를 제공할 수 있다. DRAM(316)은 파일-시스템 층(312)에 실행될 커맨드를 전송한다. 파일-시스템 층(312)은 호스트(350)의 NVMe 드라이버(314)로 실행될 커맨드를 전달한다. NVMe 드라이버(314)는 호스트(350)의 PCIe 층(318)으로 실행될 커맨드를 전달한다. NVM 디바이스(302)의 PCIe 층(320)은 호스트(350)로부터 실행될 커맨드를 수신하고, 실행을 위해 NVM 디바이스(302)의 NVM 층(322)으로 실행될 커맨드를 전달한다.
드라이버리스 액세스 경로(340)에서, 주변기기 디바이스(390)는 주변기기 디바이스(390) 상에 저장된 코드로부터 실행될 커맨드를 호스트(350)의 PCIe 층(318)에 제공할 수 있다. PCIe 층(318)은 NVM 디바이스(302)의 PCIe 층(320)으로 실행될 커맨드를 직접적으로 전송한다. NVM 디바이스(302)의 PCIe 층(320)은 커맨드를 실행시킨다. 드라이버리스 액세스 경로(340)는 주변기기 디바이스(390) 상에 저장된 코드로부터의 커맨드를 직접적으로 실행시키는 것을 허용하고, 호스트(350)의 DRAM(316)에 코드를 저장하는 것뿐 아니라 호스트(350) 및 NVM 디바이스(302)의 다른 층을 바이패싱하는 것을 회피시킨다. 따라서, 드라이버리스 액세스 경로(340)는 주변기기 디바이스(390) 상에 저장된 코드의 낮은 레이턴시 실행을 제공할 수 있다.
도 4는 도 1의 시스템(100)을 참조하여 기술된 호스트(150)에 의해 NVM 디바이스(102)의 NVM(106)에 액세스하는 방법(400)의 일 실시예를 도시한 개략도이지만, 다른 시스템이 적용가능할 수 있다. 방법(400)은 드라이버 액세스 모드 및 드라이버리스 액세스 모드 양측 모두에서 호스트(150)에 의해 NVM 디바이스(102)의 NVM(106)에 액세스하는 단계를 포함한다. 방법(400)의 하나 이상의 블록이 CPU(152), 제어기(110), 또는 NVM 디바이스(102) 또는 호스트(150)에 저장된 컴퓨터 판독가능 프로그램 코드(예컨대, 소프트웨어 또는 펌웨어) 실행가능 명령어를 실행시키는 다른 제어기에 의해 수행될 수 있다.
블록(410)에서, NVM(106)의 일부분이 통신 프로토콜을 통해, 예컨대 PCIe 프로토콜을 통해, 호스트(150)에 의해 호스트(150)의 메모리 어드레스 공간(154)에 동적으로 맵핑된다. NVM의 일부분의 크기는 호스트의 요건 또는 필요성에 기초하여 호스트에 의해 동적으로 할당될 수 있다. 호스트(150)는 NVM 디바이스(102)의 NVM(106)의 다양한 부분에 대응하는 하나 이상의 BAR을 활성화시킴으로써 NVM(106)을 호스트(150)의 메모리 어드레스 공간(154)에 동적으로 맵핑시킬 수 있다.
블록(420)에서, 드라이버리스 액세스 커맨드가 NVM(102)의 제어기(110)에 의해 수신된다. 예를 들어, 드라이버리스 액세스 커맨드는 메모리 어드레스 공간(154)에 NVM(106)의 일부분을 맵핑시킨 메모리 어퍼처(236)를 통해 수신될 수 있다.
블록(430)에서, 드라이버리스 액세스 커맨드는 NVMe 층과 같은 호스트 인터페이스 프로토콜 층을 바이패싱하도록 라우팅된다.
블록(440)에서, 호스트(150)의 메모리 어드레스 공간(154)에 맵핑된 NVM(106)의 일부분은 드라이버리스 액세스 커맨드에 응답하여 액세스된다. 예를 들어, 메모리 어드레스 공간(154)에 맵핑된 NVM(106)의 일부분은 메모리 어퍼처(236)를 통해 액세스될 수 있다. 호스트(150) 및 NVM 디바이스(102)는 드라이버리스 액세스 커맨드를 완료하기 위해 정렬 크기로 정렬될 수 있다. 소정 실시예에서, 정렬 크기는, 예컨대 NVM이 NAND 플래시를 포함하는 경우, 다수의 바이트로 프로그래밍 및 판독되는 NVM에 대해 1 바이트 초과일 수 있다.
블록(410, 420, 430, 440)은 통신 프로토콜을 통해 NVM(106)의 다른 부분을 호스트(150)의 메모리 어드레스 공간(154)에 리맵핑(remap)시키도록 반복될 수 있다. 예를 들어, NVM(106)의 다른 부분에 대응하는 제2 BAR이 활성화될 수 있다. NVM(106)은 통신 프로토콜을 통해 호스트(150)의 메모리 어드레스 공간(154)에 리맵핑되어, NVM(106)의 할당된 크기를 변화시킬 수 있다.
블록(450)에서, 비휘발성 메모리 디바이스의 제어기에 의한 드라이버 액세스 커맨드가 수신된다. 드라이버 액세스 커맨드는 NVMe 인터페이스와 같은 호스트 인터페이스를 통할 수 있다.
블록(460)에서, 드라이버 액세스 커맨드는 호스트 인터페이스 프로토콜 층으로 라우팅된다. 예를 들어, 드라이버 액세스 커맨드는 NVM 디바이스(102)의 통신 프로토콜을 통해 호스트의 호스트 인터페이스 프로토콜 층으로 라우팅된다.
블록(470)에서, 호스트 인터페이스 프로토콜 층을 통하는 NVM 디바이스(102)의 NVM(106)의 다른 부분이 드라이버 액세스 커맨드에 응답하여 액세스된다. 일 실시예에서, NVM의 2개의 개별 부분이 블록(440)에서의 드라이버리스 액세스를 위해 그리고 블록(470)에서의 드라이버 액세스를 위해 동시에 할당될 수 있다. 예를 들어, NVM(106)의 하나의 부분이 드라이버리스 액세스를 위해 NVM 디바이스(102)의 NVM(106)의 일부분에 대응하는 BAR을 활성화시킴으로써 호스트(150)의 메모리 어드레스 공간(154)에 맵핑될 수 있고, NVM(106)의 다른 부분이 드라이버 액세스를 위해 할당될 수 있다.
다른 실시예에서, NVM(106)의 중첩 부분이 블록(440)에서의 드라이버리스 액세스를 위해 그리고 블록(470)에서의 드라이버 액세스를 위해 할당될 수 있다. 예를 들어, 드라이버리스 액세스를 위한 NVM(106)의 부분에 대응하는 하나의 BAR이 활성화될 수 있는 한편, 드라이버 액세스는 비활성 상태일 수 있다. 유사하게, 드라이버리스 액세스를 위한 NVM(106)의 부분에 대응하는 하나의 BAR이 비활성 상태일 수 있는 한편, 드라이버 액세스는 활성 상태일 수 있다.
방법(400)은 PCIe 통신 프로토콜과 같은 동일한 통신 프로토콜을 이용하여 NVM 디바이스(102)에의 드라이버리스 액세스 및 드라이버 액세스 양측 모두를 제공한다. 동일한 통신 프로토콜을 통한 NVM 디바이스(102)는 상이한 LBA 범위를 이용하여 드라이버리스 액세스 커맨드 및 드라이버 액세스 커맨드를 동시에 완료할 수 있다. 동일한 통신 프로토콜을 통한 NVM 디바이스(102)는 중첩 LBA 범위를 이용하여 드라이버리스 액세스 커맨드 및 드라이버 액세스 커맨드를 상이한 시간에 완료할 수 있다.
소정 실시예에서, 드라이버 액세스는 PCIe를 통한 NVMe 기반 액세스일 수 있다. 소정 실시예에서, 드라이버리스 액세스는 PCIe BAR4와 같은 PCIe BAR에 의한 호스트(150)의 메모리 어드레스 공간(154)에 대한 NVM(106)의 맵핑에 의해 달성될 수 있다. 호스트(150)는 NVMe 커맨드를 큐잉하면서, 또한, 로딩/저장 직접 액세스 커맨드를 NVM(106)에 맵핑되는 PCIe BAR로 전송할 수 있다.
호스트(150) 또는 주변기기 디바이스(190)는 드라이버리스 액세스를 이용하여 레이턴시를 감소시킬 수 있다. 드라이버리스 액세스는 NVM(106)에의 순차적인 데이터 기록/판독을 위한 레이턴시를 감소시키는 데 이용될 수 있는데, 이는 액세스되는 데이터의 버퍼링이 회피될 수 있기 때문이다. 드라이버리스 액세스는 임의의 타입의 데이터, 즉 순차 또는 랜덤 데이터에 대한 레이턴시를 감소시키는 데 이용될 수 있는데, 이는 NVMe 층 및 다른 층이 호스트(150) 내에서 그리고 NVM 디바이스(102) 내에서 바이패싱되기 때문이다. 방법(400)은 NVM 디바이스(102)의 NVM(106)의 임의의 액세스 커맨드, 예컨대 단일 액세스 커맨드 또는 다수의 액세스 커맨드에 적용될 수 있다.
도 5는 도 1의 시스템(100)을 참조하여 기술된 드라이버리스 액세스 모드에서 NVM 디바이스(102)를 동작시키는 방법(500)의 일 실시예를 도시한 개략도이지만, 다른 NVM 디바이스가 적용가능할 수 있다. 방법(500)의 하나 이상의 블록이 NVM 디바이스(102) 또는 호스트(150)에 저장된 컴퓨터 판독가능 프로그램 코드(예컨대, 소프트웨어 또는 펌웨어) 실행가능 명령어를 실행시키는 제어기(110)에 의해 수행될 수 있다.
블록(510)에서, PCIe 메모리 공간이 초기화되어, NVM 디바이스(102)의 NVM(106)의 일부분을 호스트 메모리 공간(154)에 맵핑시킨다. 맵핑은 호스트(150)와 NVM 디바이스(102) 사이의 PCIe 링크를 통해 이행된다.
블록(520)에서, 이용가능한 또는 바람직한 정렬 모드가 NVM 디바이스(102)에 의해 광고 또는 송신된다. 정렬 크기는 BAR을 활성화시키기 전 또는 그 후에 협상될 수 있다. NVM 디바이스(102)는 바람직한 정렬 모드들의 리스트를 광고할 수 있다. NVM이 복수의 바이트에 의해 프로그래밍 및 판독되는 실시예의 경우에 바이트 액세스가 NVM(106)에 대해 최적이 아니므로, NVM 디바이스(102)는 정렬 크기로 정렬될 수 있다. 예를 들어, NVM 디바이스(102)는 64 바이트 이상의 바람직한 정렬 크기, 예컨대 NAND 메모리의 한 페이지 이상의 크기를 송신 또는 광고할 수 있다. NVM 디바이스(102)는 지원되는 다른 정렬 파라미터들의 리스트를 추가로 제공할 수 있다.
블록(530)에서, 정렬 크기의 정렬 선택이 NVM 디바이스(102)에 의해 수신된다. 정렬 선택은 호스트(150) 또는 호스트(150)에 접속된 주변기기 디바이스(190)로부터의 것이다. 정렬 크기의 협상 이후, 트랜잭션 패킷이 정렬 크기 또는 정렬 크기의 배수로 송신되어 드라이버리스 액세스 커맨드를 완료한다.
NVM 디바이스(102)는 다른 정렬 파라미터의 정렬 모드 선택을 수신할 수 있다. 드라이버리스 액세스 모드는 이러한 협상의 일부로서 확립될 수 있다. 예를 들어, NVM 디바이스(102)는 동적 정렬로 호스트(150)와 정렬될 수 있는데, 여기서 정렬 크기는 호스트(150)의 요건 또는 필요성에 따라 변화한다. 예를 들어, 하나 이상의 드라이버리스 액세스 커맨드는 하나의 정렬 크기로 전달되고, 하나 이상의 다른 드라이버리스 액세스 커맨드는 다른 정렬 크기로 전달된다. 다른 실시예에서, NVM 디바이스(102)는 정적 정렬로 호스트(150)와 정렬될 수 있는데, 여기서 각각의 드라이버리스 액세스 커맨드는 동일한 정렬 크기로 전달된다(즉, 트랜잭션 패킷이 정렬 크기 또는 정렬 크기의 배수로 송신됨).
정렬 선택이 타임아웃 기간 이후에 NVM 디바이스(102)에 의해 수신되지 않는 경우, 드라이버리스 액세스 모드는 디폴트 정렬 크기로 확립될 수 있다. 다른 실시예에서, 블록(520, 530)은 드라이버리스 액세스 모드가 디폴트 정렬 크기로 확립된 상태로 스킵될 수 있다.
블록(540)에서, NVM 디바이스(102)의 NVM(106)의 일부분에 대응하는 BAR이 활성화된다. BAR이 활성화된 후, 트랜잭션 패킷이 호스트(150) 및 NVM 디바이스(102)에 의해 정렬 크기 또는 정렬 크기의 배수로 송신된다. 호스트 메모리 공간(154)의 로직 어드레스로 어드레싱되는 트랜잭션 패킷은 NVM 디바이스(102)의 NVMe 층을 바이패싱하여 NVM 디바이스(102)로 전송될 것이다. BAR은 NVM 디바이스(102)의 NVM(106)의 동일한 부분에 대한 드라이버 액세스를 제공하기 위해 비활성화될 수 있다. 블록(510, 520, 530, 540)은 NVM 디바이스(102)의 다른 BAR(124)을 활성화시키기 위해 반복될 수 있다. 블록(510, 520, 530, 540)은 NVM 디바이스(102)의 NVM(106)의 상이한 크기 및/또는 상이한 정렬 크기로 BAR에 대한 재확립된 드라이버리스 액세스 모드로 반복될 수 있다.
블록(550)에서, NVM 디바이스(102)는 드라이버리스 액세스 모드에서 활성화된 BAR에 대한 정렬된 정렬 크기 또는 디폴트 정렬 크기로 액세스 요청을 수신한다.
방법(500)의 소정 태양에서, NVM 디바이스(102)는 액세스 정렬 크기로 호스트(150) 또는 주변기기 디바이스(190)와 협상 및 정렬한다. NVM 디바이스(102)는 호스트(150) 또는 주변기기 디바이스(190)에 비-바이트(non-byte)(1 바이트 초과) 분해능으로 드라이버리스 액세스를 제공할 수 있다. 예를 들어, NAND 플래시로 구성된 NVM(106)의 경우, 단일 바이트 또는 수 바이트 트랜잭션 크기는 지원하기가 어려운데, 이는 수 바이트가 NAND 플래시 어레이의 페이지에 의해 프로그래밍 및 판독되기 때문이다. 호스트(150) 또는 주변기기 디바이스(190)는 성능 또는 애플리케이션 요건에 기초하여 액세스 정렬 크기를 선택할 수 있다. 소정 태양에서, 드라이버리스 메모리 액세스는 동적 판독/기록 정렬 크기로 작업하는 것을 허용한다. 호스트 플래닝 동작(host planned operation)을 검토함으로써, 호스트(150)와 NVM 디바이스(102) 사이의 파이프라인은 메모리 어퍼처(236)에의 드라이버리스 액세스를 선택적으로 이용함으로써 성능을 증가시키도록 구성될 수 있다.
소정 태양에서, 감소된 레이턴시가 호스트(150)에 대해, NVM 디바이스(102)에 대해, 또는 호스트(150) 및 NVM 디바이스(102) 양측 모두에 대해 달성될 수 있다. 호스트(250, 350)의 NVMe 드라이버(214, 314), 및 NVM 디바이스(202, 302)의 NVMe 층(222, 322)을 바이패싱하는 것은 호스트(150) 및/또는 NVM 디바이스(302)에 대해 감소된 레이턴시를 제공할 수 있다. 감소된 레이턴시와 함께, 데이터 액세스 기록/판독의 증가된 처리율이 달성될 수 있다. 감소된 레이턴시와 함께, 호스트(150) 및/또는 NVM 디바이스(102)에 의한 감소된 전력 소비가 달성될 수 있다.
소정 태양에서, 맵핑 동안의 QoS(quality of service) 레벨 또는 IOPS(input/output operations per second) 레벨이 판정될 수 있다. 예를 들어, NVM 디바이스(102)의 NVM(106)의 일부분 또는 전부가 호스트(150)의 메모리 어드레스 공간(154)에 맵핑되어 유연한 QoS 또는 IOPS 레벨을 제공하게 할 수 있다. 호스트(150)는 동의 하에 또는 소정 파라미터 하에 리소스를 할당하도록 통신할 수 있다. 소정 실시예에서, 낮은 레이턴시가 요구되는 경우, NVM(106)의 많은 부분이 드라이버리스 액세스 모드에 할당될 수 있다. 소정 실시예에서, NVM(106)의 부분들은 필요에 따라 드라이버리스 액세스를 위해 동적으로 할당될 수 있다. 예를 들어, NVM(106)의 일부분을 맵핑시키는 BAR이 호스트(150)에 의해 요구되는 저장 공간의 양을 조절하도록 동적으로 비맵핑 및 리맵핑될 수 있다.
소정 실시예에서, 호스트(150)는 여러 개의 하드웨어 및 펌웨어 컴포넌트를 바이패싱하는 커맨드를 메모리 어퍼처(236)를 통해 전송함으로써 드라이버리스 커맨드를 NAND 플래시로 전송하여, NVM 디바이스(102)의 NVM(106)에서 디버그 동작을 수행하고 에러를 격리시킨다. NVM(106)의 드라이버리스 액세스, 예컨대 NAND 플래시 다이의 드라이버리스 액세스는, NVM(106)의 중요 컴포넌트에 초점을 맞추고 호스트(150)와 NVM(106)을 접속시키는 물리적 링크 및 회로부를 바이패싱함으로써 디버그 노력을 감소시킬 수 있다.
소정 실시예에서, NVM 디바이스(102)는 동적 기반으로 액세스될 수 있다(즉, 동일한 NVM 디바이스는 드라이버 액세스 모드 및 드라이버리스 액세스 모드를 동시에 제공할 수 있음). 양측 모드 모두는 동시에 동작할 수 있는데, 예를 들어, NVM 디바이스(102)의 NVM(106)의 하나의 부분에 대한 BAR은 드라이버리스 액세스를 위해 할당될 수 있고, NVM 디바이스(102)의 NVM(106)의 다른 부분은 드라이버 액세스에 할당될 수 있다. 다시 말해, 드라이버리스 액세스 및 드라이버 액세스는 NVM 디바이스(102)의 NVM(106)의 상이한 물리적 어드레스들에 액세스하는 것일 수 있다.
소정 실시예에서, NVM 디바이스(102)의 NVM(106)에의 드라이버리스 액세스는 호스트(150)로부터 수신된 로딩/저장 커맨드를 통하는 것일 수 있고, 드라이버 액세스는 호스트(150)로부터 수신된 판독/기록 커맨드를 통하는 것일 수 있다.
소정 실시예에서, NVM(106)은 드라이버리스 액세스 모드에서 CPU(152)에 대한 메모리로서 나타난다. 선택적인 실시예에서, 드라이버리스 액세스 모드를 위한 통신 프로토콜은 중간 제어기에 의해 수행될 수 있다. 중간 제어기는 에러 검사, 인입 커맨드의 버퍼링, 및/또는 마모 레벨링을 선택적으로 수행할 수 있다. 드라이버리스 액세스는 통신 프로토콜 하에서 동작하는 임의의 시스템(100)에 대해 수행되어, 제출 및 완료 레이턴시를 감소시키고 유효 대역폭 활용을 증가시킬 수 있다.
호스트(150)의 칩셋의 하나 이상의 컴포넌트를 바이패싱하는 것은, 칩셋의 애플리케이션 프로세서 및/또는 주 메모리(즉, DRAM)를 통해 데이터를 라우팅하는 것에 비해, 호스트(150)와 NVM 디바이스(102) 사이에서 데이터를 이송하는 시간을 감소시킬 수 있다. 데이터의 이송 동안에 칩셋의 하나 이상의 컴포넌트를 바이패싱함으로써, 칩셋의 전력 소비가 감소될 수 있다.
일부 실시예에서, 호스트(150)와 NVM 디바이스(102) 사이의 통신은 여러 개의 전기적 링크를 통과할 수 있는데, 각각의 전기적 링크는 상호접속 스위치에 의해 또는 프로토콜 브리지 어댑터에 의해 접속된다. 그러한 실시예에서, 각각의 링크를 따르는 통신은 상이한 프로토콜에 따라 협상될 수 있다. 예를 들어, 커맨드 큐에 놓이는 커맨드가 PCIe 루트 포트(root port)를 통해 라우팅될 수 있고, 네트워크 어댑터를 통해 컴퓨터 네트워킹 통신 표준 링크로 스위칭할 수 있고, 이어서, NVM 디바이스(102)에 도달하기 전에 PCIe로 다시 스위칭할 수 있다.
소정 태양에서, 본 명세서에 기술된 실시예에서 NVM 디바이스(102)의 NVM(106)에의 드라이버리스 액세스, PCIe 프로토콜을 통한 다른 드라이버리스 액세스, PCIe 프로토콜을 통한 다른 직접 액세스, 또는 다른 통신 프로토콜을 통한 다른 직접 액세스("직접 액세스"로 총칭됨)를 제공하는 것은 NVM 디바이스(102)를 보안 위반에 취약하게 할 수 있다. 직접 액세스는 호스트 레벨에서 동작되는 표준 보안 보호 툴의 효과를 감소시킬 수 있다. 예를 들어, 호스트(150)와 NVM 디바이스(102) 사이에 확립된 직접 액세스 모드에서, 비인가 또는 해킹 디바이스 또는 프로그램은 승인, NVMe 보안 프로토콜, 및 다른 보안 층을 바이패싱할 수 있다. 해킹 디바이스 또는 프로그램은 NVM 디바이스(102)가 호스트(150)와의 직접 액세스 모드에 있음을 식별할 수 있고, 호스트(150)의 메모리 어드레스 공간(154)에의 NVM(106)의 맵핑된 메모리 어퍼처를 통해 NVM 디바이스(102)와 그 자신의 액세스를 확립하도록 시도할 수 있다. 해킹 디바이스 또는 프로그램은 NVM(106)의 맵핑된 부분을 제어할 수 있다. 메모리 어퍼처를 통한 NVM 디바이스(102)에의 액세스를 갖는 해킹 디바이스 또는 프로그램은 중요 영역, 예컨대 시스템 파일, 부트 파일, 패스워드, 관리 테이블, 펌웨어, 및 소거/무효 데이터에의 원치않는 판독 및 기록 액세스를 가질 수 있다. 그러한 보안 위반은 검출하기가 곤란할 수 있다.
도 6은 이형 검출기 모듈(620)을 갖는 NVM 디바이스의 제어기(610)의 일 실시예의 개략도이다. 제어기(610)는 도 1의 NVM 디바이스(102)에서 구현될 수 있지만, 다른 NVM 디바이스가 적용가능할 수 있다.
도 7은 도 6의 제어기(610)에 의해 NVM 디바이스를 동작시키는 방법(700)의 일 실시예를 도시한 개략도이지만, 다른 NVM 디바이스가 적용가능할 수 있다. 방법(700)은 직접 액세스 모드에서 NVM 디바이스(102)의 NVM(106)에의 액세스를 제공하는 단계, 및 잠재적인 보안 위반을 검출하는 단계를 포함한다. 방법(700)은 시스템(100) 및 제어기(610)를 참조하여 기술되지만, 다른 시스템 및 제어기가 사용될 수 있다. 방법(700)의 하나 이상의 블록이 NVM 디바이스(102)에 저장된 컴퓨터 판독가능 프로그램 코드(예컨대, 소프트웨어 또는 펌웨어) 실행가능 명령어를 실행시키는 제어기(610)에 의해 수행될 수 있다.
블록(710)에서, 제어기(610)의 파라미터 추적 모듈(630)은 호스트(150)에 의한 직접 액세스 커맨드와 관련된 하나 이상의 파라미터를 추적 또는 모니터링한다. 한 가지 가능한 파라미터는 직접 액세스 트랜잭션에서 액세스되는 로직 블록 어드레스(즉, 시작 LBA 어드레스 및 종료 LBA 어드레스)를 포함한다. 다른 가능한 파라미터는 직접 액세스 커맨드의 타이밍(즉, 직접 액세스 트랜잭션이 발생하는 시기)을 포함한다. 다른 가능한 파라미터는 직접 액세스 트랜잭션에서 액세스되는 데이터의 크기를 포함한다. 다른 가능한 파라미터는 직접 액세스 트랜잭션의 소스를 포함한다(즉, 호스트(150) 또는 주변기기 디바이스(190)로부터의 커맨드의 소스임). 다른 가능한 파라미터는 액세스 커맨드의 타입(즉, 판독 액세스, 기록 액세스)을 포함한다. 추적 또는 모니터링되는 다른 파라미터가 가능하다. 다른 실시예에서, NVM 디바이스(102)는 직접 액세스 트랜잭션에서 프로그래밍 또는 판독되는 데이터의 콘텐츠를 추적할 수 있다. 예를 들어, NVM 디바이스(102)는 직접 액세스 트랜잭션에서 기록된 0들의 패턴, 기록된 1들의 패턴, 및/또는 기록된 0 대 1의 비를 추적할 수 있다.
하나 이상의 파라미터는 제어기(610)의 PCIe 층(690)으로부터 추적되어 NVM(106)에의 직접 액세스를 제공하게 한다. 호스트(150)의 직접 액세스 트랜잭션의 추적 또는 모니터링은 모든 직접 액세스 트랜잭션을 추적 또는 모니터링하는 것을 포함할 수 있거나, 또는 직접 액세스 트랜잭션의 샘플 또는 일부분을 추적 또는 모니터링하는 것을 포함할 수 있다. 소정 실시예에서, 다수의 트랜잭션이 추적 또는 모니터링되어 트랜잭션의 이력을 생성하게 할 수 있다. 추적 또는 모니터링되는 다수의 트랜잭션의 각각의 트랜잭션에 대해, 하나 이상의 파라미터가 추적 또는 모니터링될 수 있다. 하나 이상의 파라미터의 변화율이 다수의 트랜잭션의 과정을 통해 판정될 수 있다. 예를 들어, 소정 로직 블록 어드레스가 액세스되는 비율이 추적 또는 모니터링될 수 있다.
블록(720)에서, 제어기(610)의 정상 패턴 맞춤(normal-pattern-fitting) 모듈(640)이 정상 거동 패턴에 대한 임계치를 결정한다. 정상 거동 패턴에 대한 임계치는 블록(710)에서 추적된 하나 이상의 파라미터에 의해, 블록(710)에서 추적된 액세스되는 데이터의 콘텐츠에 의해, 성능 테스팅에서 누적된 데이터에 의해, 그리고/또는 오프라인 세팅(setting)에 의해 결정될 수 있다. 정상 거동 패턴에 대한 임계치는 새로운 정보가 블록(710)으로부터 누적됨에 따라 업데이트될 수 있다. 일 태양에서, NVM 디바이스(102)는 블록(710)에서 수집된 파라미터들의 패턴, 또는 발생한 트랜잭션 또는 트랜잭션의 파라미터의 통계치 또는 확률을 판정한다.
일 실시예에서, 블록(720)은 NVM 디바이스(102)가 동작 중일 때 온라인으로 이행될 수 있다. 다른 실시예에서, 임계치 거동 패턴은 NVM 디바이스(102)가 동작 중일 때 사용자 모드 페이지에 의해 설정될 수 있다. 다른 실시예에서, 블록(720)은, 예컨대 NVM 디바이스(102)의 정성화(qualification) 동안, 오프라인으로 이행될 수 있다. 예를 들어, 정상 거동의 룩업 테이블 또는 딕셔너리(dictionary)가 오프라인으로 생성될 수 있고, NVM 디바이스(102)에 업로딩될 수 있다.
블록(730)에서, 제어기(110)의 이형 판정 모듈(650)이, 블록(720)에서 판정된 임계치 거동 패턴에 대해 정상 거동 패턴에 대한 임계치가 초과되었는지 여부를 판정한다. 예를 들어, 이형 판정 모듈(650)은 트랜잭션이 블록(720)에서 판정된 패턴에 대한 이상치(outlier)인지 여부를 판정한다. 소정 실시예에서, 정상 거동 패턴에 대한 임계치가 초과되었는지 여부를 판정하는 것은 하기의 기법의 카테고리들 중 하나 이상에 기초할 수 있다: 자율 학습 동작(패턴을 판정한 것에 기초한 동작), 지도 학습 동작(정상 및 비정상 트랜잭션들 양측 모두의 데이터세트 예에 기초한 동작), 또는 준지도 학습 동작.
소정 실시예에서, 임계치가 초과되었는지 여부를 판정하는 것은 하기의 기법들 중 하나 이상에 기초할 수 있다: 밀도 기반 기법(예컨대, k-최근접 이웃, 로컬 이상치 인자), 고차원 데이터에 대한 부분 공간 및 상관도 기반 이상치 검출, 단일 클래스 서포트 벡터 머신(one class support vector machine), 리플리케이터 뉴럴 네트워크(replicator neural network), 클러스터 분석 기반 이상치 검출, 연관성 규칙(association rule) 및 빈번한 아이템 세트로부터의 편차, 퍼지(fuzzy) 로직 기반 이상치 검출, 및 앙상블 기법(즉, 특징부 배깅(bagging), 스코어 표준화, 상이한 다이버시티 소스 등을 이용함). 예를 들어, 어드레스 공간의 작은 부분에 대한 과도한 횟수의 판독/기록은 의심스러운 직접 액세스 트랜잭션을 나타낼 수 있다. 다른 예에서, 분리된 기록 트랜잭션과 함께 다수의 판독 트랜잭션들의 패턴은 의심스러운 직접 액세스 트랜잭션을 나타낼 수 있다.
블록(740)에서, 제어기(610)의 보호조치 모듈(660)이, 블록(730)에서 임계치가 초과된 것으로 판정된 경우에 보호조치를 수행할 수 있다. 보호조치의 일례는 임계치가 초과되거나 이형이 검출되는 경우에 경고를 제공하는 것을 포함한다. 경고는 호스트(150)로 전송될 수 있다. 경고는, 또한, 검출된 이형이 낮은 보안 위험인지, 중간 보안 위험인지, 높은 보안 위험인지의 신뢰도 레벨을 포함할 수 있다. 경고는, 또한, 호스트가 의심스러운 트랜잭션을 승인하는지 불승인하는지에 대한 피드백을 가능하게 할 수 있다.
보호조치의 다른 예는 루트 컴플렉스(153)를 통해 식별된 소스의 검사, 예컨대 열거 정보의 검토에 의해 문제가 되는 액세스 커맨드의 소스를 식별하는 것을 포함할 수 있다. 보호조치의 다른 예는 문제가 되는 직접 액세스 트랜잭션의 식별된 소스를 선택적으로 차단하는 것을 포함한다. 보호조치의 다른 예는 문제가 되는 직접 액세스 트랜잭션의 식별된 소스에의 액세스를 선택적으로 억제하거나 지연시키는 것을 포함한다. 억제 또는 지연된 액세스는 의심스러운 직접 액세스 커맨드가 계속되는 경우에 증가될 수 있다.
보호조치의 다른 예는 임계치가 초과되거나 이형이 검출되었다는 경고 또는 인스턴스의 로그를 생성하는 것을 포함한다. 로그는 블록(710)에서 추적된 하나 이상의 파라미터를 포함할 수 있다. 로그는 임계치가 초과되거나 이형이 검출된다는 경고 또는 인스턴스의 이력을 포함할 수 있다. 로그는 검출된 이형이 낮은 보안 위험인지, 중간 보안 위험인지, 높은 보안 위험인지의 신뢰도 레벨을 포함할 수 있다. 로그는 NVM(106)에 저장될 수 있다. 일 실시예에서 호스트(150)는 로그를 검토할 수 있다. 다른 실시예에서, 제어기(610)는 다른 보호조치와의 조합 시에 로그를 사용할 수 있다. 예를 들어, 임계치에 대한 경고 또는 인스턴스의 소정 개수, 비율(즉, 차례차례), 및/또는 심각도가 초과되었거나 이형이 검출된 이후에, NVM 디바이스(102)는 보호조치의 심각도를 증가시킬 수 있다. 이형 검출기 모듈(620)은 임의의 보호조치로 시작될 수 있고, 임의의 다른 보호조치로 증가할 수 있다. 예를 들어, 이형 검출기 모듈(620)은 보호조치로서의 억제로 시작될 수 있고, 이어서, 이형이 계속되거나 증가한 경우에 차단에 대한 보호조치를 증가시킬 수 있다.
소정 실시예에서, NVM 디바이스(102)의 NVM(106)의 직접 액세스의 이형 검출이 제공된다. NVM 디바이스(102)에 의한 이형 검출은 호스트(150)에 의해 식별될 수 없거나 식별되지 않는 잠재적인 보안 위반을 식별할 수 있다. 이형 검출로부터의 보호조치는 호스트(150)에의 통지와 같은 정적 액션, 또는 액세스를 억제하는 것 또는 액세스를 차단하는 것과 같은 능동적 액션일 수 있다. 소정 실시예에서, 보호조치는 의심스러운 직접 액세스 커맨드가 계속되는 경우에 정적 액션으로부터 능동적 액션으로 스위칭할 수 있다.
소정 실시예에서, 직접 액세스 트랜잭션에 관한 보안 보호가 NVM 디바이스(102)에 의해 제공된다. 보안 보호는 의심스러운 트랜잭션을 식별하는 것을 포함할 수 있고, 의심스러운 직접 액세스 커맨드의 소스를 식별하는 것을 포함할 수 있다. 보안 보호는 의심스러운 직접 액세스 트랜잭션이 식별되는 경우에 보호조치를 구현하는 것을 포함할 수 있다. 소정 태양에서, 이러한 보안 보호는 직접 액세스 모드에서 바이패싱되지 않을 수도 있다.
일 실시예에서, 비휘발성 메모리 디바이스의 비휘발성 메모리에의 액세스를 제공하기 위한 방법은 메모리 요청을 수신하는 단계를 포함한다. 수신된 메모리 요청이 직접 액세스 메모리 요청인 경우, 비휘발성 메모리 디바이스의 호스트 인터페이스 프로토콜 층이 바이패싱된다. 수신된 메모리 요청이 비-직접 액세스 메모리 요청인 경우, 비-직접 액세스 메모리 요청은 호스트 인터페이스 프로토콜 층으로 전송된다. 소정 실시예에서, 호스트 인터페이스 프로토콜 층은 NVM-Express 프로토콜 층이다. 소정 실시예에서, 방법은 호스트에의 PCIe 링크를 확립하는 단계를 추가로 포함한다. 소정 실시예에서, 방법은 직접 메모리 요청을 위해 비휘발성 메모리 내에 물리적 어드레스 공간을 할당하는 단계를 추가로 포함한다. 물리적 어드레스 공간은 비휘발성 메모리 디바이스에 대한 기본 어드레스 레지스터에 의해 결정될 수 있다. 물리적 어드레스 공간의 크기는 동적으로 할당될 수 있다. 비휘발성 메모리 디바이스 내의 물리적 어드레스 공간은 새로운 메모리 요청을 위해 재할당될 수 있다. 물리적 어드레스 공간의 일부분 또는 많은 부분이 직접 액세스 메모리 요청 및 새로운 비-직접 액세스 요청에 의해 직접적으로 액세스될 수 있고 비-직접적으로 액세스될 수 있다.
일 실시예에서, 비휘발성 메모리 디바이스의 비휘발성 메모리에의 액세스를 제공하기 위한 방법은 비휘발성 메모리의 복수의 직접 액세스 트랜잭션과 관련된 파라미터를 추적하는 단계를 포함한다. 호스트 활동의 임계치 거동 패턴은 추적된 파라미터에 기초하여 결정된다. 직접 액세스 트랜잭션은 임계치 거동 패턴이 초과되는지 여부를 결정하도록 검토된다. 임계치 거동 패턴은 추적된 파라미터의 변화율의 온라인 추적을 통해 결정될 수 있다. 임계치 거동 패턴은 룩업 테이블의 오프라인 생성을 통해 결정될 수 있다. 임계치 거동 패턴은 사용자 모드 페이지에 의해 설정될 수 있다. 임계치 거동 패턴은 직접 액세스 트랜잭션으로부터 프로그래밍된 데이터를 분석함으로써 결정될 수 있다. 추적된 파라미터는 액세스되는 LBA 어드레스, 직접 액세스 트랜잭션의 타이밍, 직접 액세스 트랜잭션의 트랜잭션 크기, 직접 액세스 트랜잭션의 소스, 직접 액세스 트랜잭션에서 요청되는 액세스의 타입, 또는 다른 적합한 파라미터일 수 있다. 복수의 파라미터가 각각의 직접 액세스 트랜잭션에 대해 추적될 수 있다. 기계 학습은 임계치 거동 패턴이 직접 액세스 트랜잭션들 중 하나에 의해 초과되었는지 여부를 판정하는 데 활용될 수 있다.
다른 실시예에서, 비휘발성 메모리 디바이스의 비휘발성 메모리에의 액세스를 제공하기 위한 방법은 비휘발성 메모리의 직접 액세스 트랜잭션과 관련된 파라미터를 모니터링하는 단계를 포함한다. 직접 액세스 트랜잭션은 임계치 거동 패턴이 초과되는지 여부를 결정하도록 검토된다. 임계치 거동 패턴을 초과하는 직접 액세스 트랜잭션에 대한 보호조치가 수행된다. 보호조치는 임계치 거동 패턴이 직접 액세스 트랜잭션에 의해 초과되었다는 경고를 전송하는 것을 포함할 수 있다. 경고는 직접 액세스 트랜잭션이 보안 위반인 신뢰도 레벨을 포함할 수 있다. 보호조치는 직접 액세스 트랜잭션이 인가되어 있는지 여부의 확인을 수신하는 것을 추가로 포함할 수 있다. 보호조치는 임계치 거동 패턴을 초과하는 직접 액세스 트랜잭션의 소스를 식별하는 것을 포함할 수 있다. 임계치 거동 패턴을 초과하는 직접 액세스 트랜잭션의 식별된 소스에 제공되는 직접 액세스가 억제될 수 있다. 임계치 거동 패턴을 초과하는 직접 액세스 트랜잭션의 식별된 소스에 제공되는 직접 액세스가 차단될 수 있다. 보호조치의 심각도는 임계치 거동 패턴이 계속해서 초과되는 경우에 증가될 수 있다.
일 실시예에서, 비휘발성 메모리 디바이스는 제어기를 포함한다. 비휘발성 메모리가 제어기에 커플링된다. 제어기는 비휘발성 메모리에의 직접 액세스를 제공하도록 동작가능하다. 제어기는 직접 액세스에 대한 임계치 거동 패턴이 초과되었는지 여부를 판정하는 이형 검출기 모듈을 포함한다. 임계치 거동 패턴은 복수의 직접 액세스 트랜잭션의 파라미터의 모니터링으로부터 결정될 수 있다. 임계치 거동 패턴은 모드 페이지 설정으로부터 결정될 수 있다. 임계치 거동 패턴은 룩업 테이블로부터 결정될 수 있다. 임계치 거동 패턴은 기계 학습에 기초하여 초과되는 것으로 결정될 수 있다.
다른 실시예에서, 비휘발성 메모리 디바이스는 제어기를 포함한다. 제어기는 이형 검출기 수단을 포함한다. 비휘발성 메모리가 제어기에 커플링된다. 제어기는 비휘발성 메모리에의 직접 액세스를 제공하도록 동작가능하다. 이형 검출기 수단은 의심스러운 직접 액세스 트랜잭션을 검출하도록 동작가능하다. 이형 검출기 수단은 직접 액세스의 파라미터를 모니터링할 수 있다. 이형 검출기 수단은 의심스러운 직접 액세스 트랜잭션을 플래그할 수 있다.
전술한 사항이 본 발명의 실시예에 관한 것이지만, 본 발명의 다른 및 추가의 실시예가 그의 기본 범주로부터 벗어나지 않고서 고안될 수 있고, 그의 범주는 하기의 청구범위에 의해 결정된다.

Claims (49)

  1. 호스트 드라이버 및 호스트 동적 랜덤 액세스 메모리(DRAM, dynamic random access memory)를 구비한 호스트에 의한, 비휘발성 메모리(NVM, non-volatile memory) 드라이버를 구비한 NVM 디바이스의 NVM의 드라이버리스(driverless) 액세스의 방법으로서,
    상기 NVM 디바이스의 NVM의 물리적 영역에 대응하는 기본 어드레스 레지스터를 활성화시킴으로써, 상기 호스트와 상기 NVM 디바이스 사이의 주변 기기 인터페이스 익스프레스(PCIe, peripheral component interface express) 링크를 통해 호스트 메모리 공간에 상기 NVM 디바이스의 NVM의 일부분을 맵핑시키기 위해 PCIe 메모리 공간을 초기화하는 단계;
    최소 트랜잭션 패킷 크기의 정렬 크기를 협상하여 로딩/저장 커맨드를 완료하는 단계;
    상기 호스트 DRAM, 상기 호스트 드라이버, 및 상기 NVM 드라이버를 바이패싱함으로써 상기 NVM의 드라이버리스 액세스를 위해 상기 PCIe 메모리 공간으로 로딩/저장 커맨드를 전송하는 단계; 및
    상기 호스트 DRAM, 상기 호스트 드라이버, 및 상기 NVM 드라이버를 통해 라우팅된 드라이버 액세스를 위해 상기 호스트의 호스트 드라이버로 판독/기록 커맨드를 전송하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 정렬 크기는,
    상기 NVM 디바이스에 의해 지원되는 정렬 모드를 광고함으로써; 그리고
    상기 호스트에 의해 정렬 모드의 선택을 수신함으로써 협상되는, 방법.
  3. 제1항에 있어서, 상기 정렬 크기는,
    상기 NVM 디바이스에 의해 지원되는 정렬 모드를 광고함으로써; 그리고
    정렬 모드 선택이 타임아웃 기간 내에 수신되지 않는 것에 응답하여 디폴트 정렬 모드로 진행함으로써 협상되는, 방법.
  4. 제1항에 있어서, 상기 로딩/저장 커맨드는 상기 PCIe 링크를 통해 상기 NVM 디바이스의 제어기로 전송되는, 방법.
  5. 제1항에 있어서, 상기 로딩/저장 커맨드는 제어기의 데이터 경로 층으로 전송되어 상기 NVM 디바이스의 NVM에 액세스하는, 방법.
  6. 제5항에 있어서, 상기 데이터 경로 층은 플래시 변환 층에 액세스하여, 상기 로딩/저장 커맨드에 따라 상기 NVM에서 판독/기록 동작을 수행하는, 방법.
  7. 제5항에 있어서, 상기 데이터 경로 층은 버스트 동작에서의 상기 로딩/저장 커맨드를 NVM 인터페이스에 종합하여 판독/기록 동작을 실행시키는, 방법.
  8. 제1항에 있어서, 상기 NVM 디바이스는 제어기를 포함하는, 방법.
  9. 제8항에 있어서, 상기 제어기는 프로세서를 포함하는, 방법.
  10. 제8항에 있어서, 상기 제어기는 휘발성 메모리를 포함하는, 방법.
  11. 제8항에 있어서, 상기 제어기는 호스트 인터페이스를 포함하는, 방법.
  12. 제8항에 있어서, 상기 제어기는 NVM 인터페이스를 포함하는, 방법.
  13. 제8항에 있어서, 상기 제어기는 기본 어드레스 레지스터를 포함하는, 방법.
  14. 호스트 드라이버 및 호스트 동적 랜덤 액세스 메모리(DRAM)를 구비한 호스트에 의한, 비휘발성 메모리(NVM) 드라이버를 구비한 NVM 디바이스의 NVM의 드라이버 액세스 및 드라이버리스 액세스의 방법으로서,
    상기 NVM 디바이스의 NVM의 물리적 영역에 대응하는 기본 어드레스 레지스터를 활성화시킴으로써, 상기 호스트와 상기 NVM 디바이스 사이의 주변 기기 인터페이스 익스프레스(PCIe) 링크를 통해 호스트 메모리 공간에 상기 NVM 디바이스의 NVM의 일부분을 맵핑시키기 위해 PCIe 메모리 공간을 초기화하는 단계;
    상기 NVM 디바이스의 구성 정보로 PCIe 구성 공간을 초기화하는 단계;
    상기 호스트 DRAM, 상기 호스트 드라이버, 및 상기 NVM 드라이버를 바이패싱함으로써 드라이버리스 액세스를 위해 상기 PCIe 메모리 공간으로 로딩/저장 커맨드를 전송하는 단계; 및
    상기 NVM 디바이스의 구성 정보를 활용하여 상기 호스트 DRAM, 상기 호스트 드라이버, 및 상기 NVM 드라이버를 통해 라우팅된 드라이버 액세스를 위해 상기 호스트의 호스트 드라이버로 판독/기록 커맨드를 전송하는 단계를 포함하는, 방법.
  15. 제14항에 있어서, 상기 호스트 드라이버는 상기 NVM 디바이스의 NVM 드라이버로 판독/기록 커맨드를 전송하는, 방법.
  16. 제14항에 있어서, 상기 NVM의 상이한 부분들에서 상기 로딩/저장 커맨드 및 상기 판독/기록 커맨드를 동시에 실행시키는 단계를 더 포함하는, 방법.
  17. 제14항에 있어서, 상기 NVM의 중첩 부분에서 상기 로딩/저장 커맨드 및 상기 판독/기록 커맨드를 순차적으로 실행시키는 단계를 더 포함하는, 방법.
  18. 제14항에 있어서, 상기 NVM의 다른 부분을 상기 호스트의 로직 어드레스에 맵핑시킴으로써 상기 NVM 디바이스에의 드라이버리스 액세스를 위해 상기 PCIe 메모리 공간을 재초기화하는 단계를 더 포함하는, 방법.
  19. 제18항에 있어서, 상기 PCIe 메모리 공간은 드라이버리스 액세스를 위해 상기 NVM의 맵핑된 크기를 변화시키도록 재초기화되는, 방법.
  20. 제14항에 있어서, 제어기가 이형(anomaly) 검출기 모듈을 포함하는, 방법.
  21. 제20항에 있어서, 상기 이형 검출기 모듈은 파라미터 추적 모듈을 포함하는, 방법.
  22. 제20항에 있어서, 상기 이형 검출기 모듈은 정상 패턴 맞춤(normal-pattern-fitting) 모듈을 포함하는, 방법.
  23. 제20항에 있어서, 상기 이형 검출기 모듈은 이형 판정 모듈을 포함하는, 방법.
  24. 제20항에 있어서, 상기 이형 검출기 모듈은 보호조치(countermeasure) 모듈을 포함하는, 방법.
  25. 비휘발성 메모리(NVM) 디바이스로서,
    호스트 드라이버 및 호스트 동적 랜덤 액세스 메모리(DRAM)를 구비한 호스트에 연결되도록 구성된 링크 인터페이스;
    NVM; 및
    상기 NVM에 커플링되고 NVM 드라이버를 구비한 제어기를 포함하고,
    상기 제어기는,
    드라이버리스 액세스 커맨드를 수신하고;
    상기 호스트 DRAM, 상기 호스트 드라이버, 및 상기 NVM 드라이버를 바이패싱하도록 상기 드라이버리스 액세스 커맨드를 라우팅하고;
    상기 호스트 드라이버로부터 드라이버 액세스 커맨드를 수신하고;
    상기 호스트 DRAM, 상기 호스트 드라이버, 및 상기 NVM 드라이버를 통해 상기 드라이버 액세스 커맨드를 라우팅하도록
    구성되고, 상기 호스트는 상기 드라이버리스 액세스 커맨드에 대한 드라이버리스 액세스를 제공하기 위해 하나 이상의 기본 어드레스 레지스터를 동적으로 활성화 및 비활성화시키는, NVM 디바이스.
  26. 제25항에 있어서, 상기 NVM 드라이버는 NVM 익스프레스 인터페이스 프로토콜 층을 포함하는, NVM 디바이스.
  27. 제25항에 있어서, 상기 링크 인터페이스는 주변 기기 인터페이스 익스프레스(PCIe) 링크 인터페이스인, NVM 디바이스.
  28. 제25항에 있어서, 상기 제어기는 리드 온리 메모리(ROM, read only memory)를 더 포함하는, NVM 디바이스.
  29. 비휘발성 메모리(NVM) 디바이스로서,
    호스트 드라이버 및 호스트 동적 랜덤 액세스 메모리(DRAM)를 구비한 호스트를 연결하기 위한 수단;
    NVM; 및
    상기 NVM에 커플링되고 NVM 드라이버를 구비한 제어기를 포함하고,
    상기 제어기는:
    드라이버리스 액세스 커맨드를 수신하고;
    상기 호스트 DRAM, 상기 호스트 드라이버, 및 상기 NVM 드라이버를 바이패싱하도록 상기 드라이버리스 액세스 커맨드를 라우팅하고;
    상기 호스트 드라이버로부터 드라이버 액세스 커맨드를 수신하고;
    상기 호스트 DRAM, 상기 호스트 드라이버, 및 상기 NVM 드라이버를 통해 상기 드라이버 액세스 커맨드를 라우팅하도록
    구성되고, 상기 호스트는 상기 드라이버리스 액세스 커맨드에 대한 드라이버리스 액세스를 제공하기 위해 하나 이상의 기본 어드레스 레지스터를 동적으로 활성화 및 비활성화시키는, NVM 디바이스.
  30. 호스트에 의한 비휘발성 메모리(NVM) 디바이스의 NVM을 액세스하는 방법으로서,
    상기 호스트와 상기 NVM 디바이스 사이의 제1 주변 기기 인터페이스 익스프레스(PCIe, peripheral component interface express) 링크 및 상기 호스트와 주변기기 디바이스 사이의 제2 PCIe 링크를 확립하는 단계;
    상기 호스트와 상기 NVM 디바이스 사이의 상기 제1 PCIe 링크를 통해 호스트 메모리 공간에 상기 NVM 디바이스의 NVM의 하나 이상의 부분을 맵핑하는 PCIe 메모리 공간을 초기화하는 단계; 및
    상기 NVM 디바이스의 NVM의 하나 이상의 부분을 맵핑하는 상기 PCIe 메모리 공간을 어드레싱함으로써 상기 제2 PCIe 링크를 통해 상기 주변기기 디바이스로부터 상기 제1 PCIe 링크로 데이터를 라우팅하는 단계를 포함하는, 방법.
  31. 제30항에 있어서, 라우팅된 상기 데이터는 상기 호스트의 휘발성 메모리를 바이패싱하는, 방법.
  32. 제30항에 있어서, 라우팅된 상기 데이터는 상기 NVM 디바이스의 드라이버 층을 바이패싱하는, 방법.
  33. 제30항에 있어서, 상기 데이터는 상기 주변기기 디바이스로부터 상기 제2 PCIe 링크를 통해 그리고 상기 제1 PCIe 링크를 통해 상기 NVM 디바이스의 데이터 경로 층으로 라우팅되는, 방법.
  34. 제33항에 있어서, 상기 데이터 경로 층은 상기 NVM에 상기 데이터의 순차적 기록 동작을 수행하는, 방법,
  35. 제30항에 있어서, 라우팅된 상기 데이터는 상기 호스트의 NVM 익스프레스(NVMe)를 바이패싱하는, 방법.
  36. 제35항에 있어서, 라우팅된 상기 데이터는 상기 NVM 디바이스의 NVMe 드라이버를 바이패싱하는, 방법.
  37. 제30항에 있어서, 상기 호스트에 상기 NVM 디바이스의 지원 정렬 모드들(supported alignment modes)을 광고하는 단계를 더 포함하는, 방법.
  38. 제30항에 있어서,
    상기 호스트에 의한 정렬 모드의 선택을 수신하는 단계; 또는
    타임아웃 기간 내에 상기 호스트로부터 정렬 모드 선택이 수신되지 않음에 응답하여 디폴트 정렬 모드로 진행하는 단계를 더 포함하는, 방법.
  39. 컴퓨터 시스템으로서,
    호스트 메모리 공간을 포함하는 호스트 수단; 및
    비휘발성 메모리(NVM) 및 상기 NVM에 커플링되는 제어기를 포함하는 NVM 디바이스를 포함하고,
    상기 호스트 수단은 상기 호스트 수단에 의한 직접 액세스를 위해 상기 호스트 메모리 공간에 맵핑되는 상기 NVM의 하나 이상의 부분을 동적으로 활성화 및 비활성화하도록 구성되는, 컴퓨터 시스템.
  40. 제39항에 있어서, 상기 호스트 수단은 상기 호스트 메모리 공간에 맵핑되는 메모리 어퍼처(aperture)를 통해 상기 NVM 디바이스에 액세스하도록 동작가능한, 컴퓨터 시스템.
  41. 제39항에 있어서, 상기 호스트 수단은 상기 NVM을 상기 호스트 메모리 공간 내의 메모리 어퍼처에 연결하는 통신 링크를 포함하는, 컴퓨터 시스템.
  42. 제39항에 있어서, 상기 호스트 수단은 상기 NVM에 액세스하기 위해 상기 호스트 메모리 공간에 로딩/저장 커맨드들을 전송하도록 동작가능한, 컴퓨터 시스템.
  43. 제39항에 있어서, 상기 호스트 수단은 또한, 상기 NVM에 대한 드라이버 액세스를 확립하도록 구성되는, 컴퓨터 시스템.
  44. 제39항에 있어서, 상기 호스트 수단은 동적 랜덤 액세스 메모리(DRAM) 및 NVM 익스프레스(NVMe) 드라이버를 포함하는, 컴퓨터 시스템.
  45. 비휘발성 메모리(NVM) 디바이스로서,
    NVM; 및
    상기 NVM에 커플링되는 제어기를 포함하고,
    상기 제어기는 이형 검출기 모듈을 포함하고, 상기 제어기는:
    호스트와의 주변 기기 인터페이스 익스프레스(PCIe, peripheral component interface express) 링크를 확립하고;
    로딩/저장 커맨드들을 완료하기 위해 최소 트랜잭션 패킷 크기의 정렬 크기를 협상하고;
    상기 호스트 및 상기 NVM 디바이스 사이의 상기 PCIe 링크를 통해 상기 NVM 디바이스의 NVM의 하나 이상의 부분을 호스트 메모리 공간에 맵핑하는 PCIe 메모리 공간을 초기화하고; 그리고
    상기 NVM 디바이스의 NVM의 하나 이상의 부분을 맵핑하는 상기 PCIe 메모리 공간을 어드레싱함으로써 상기 PCIe 링크를 통해 데이터를 라우팅하도록 구성되는, NVM 디바이스.
  46. 제45항에 있어서, 상기 제어기는 상기 로딩/저장 커맨드들을 순차적으로 실행하도록 구성되는, NVM 디바이스.
  47. 제46항에 있어서, 상기 제어기는 상기 NVM의 상이한 부분들에서 판독/기록 커맨드들과 동시에 상기 로딩/저장 커맨드들을 실행하도록 구성되는, NVM 디바이스.
  48. 제45항에 있어서, 상기 이형 검출기 모듈은:
    파라미터 추적 모듈;
    정상 패턴 맞춤 모듈; 및
    이형 판정 모듈을 포함하는, NVM 디바이스.
  49. 제45항에 있어서, 상기 이형 검출기 모듈은 보호조치(countermeasure) 모듈을 포함하는, NVM 디바이스.
KR1020180115194A 2017-12-19 2018-09-27 저장 디바이스 메모리 공간에의 직접적인 호스트 액세스 KR102335063B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/847,671 US10929309B2 (en) 2017-12-19 2017-12-19 Direct host access to storage device memory space
US15/847,671 2017-12-19

Publications (2)

Publication Number Publication Date
KR20190074194A KR20190074194A (ko) 2019-06-27
KR102335063B1 true KR102335063B1 (ko) 2021-12-02

Family

ID=66674941

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180115194A KR102335063B1 (ko) 2017-12-19 2018-09-27 저장 디바이스 메모리 공간에의 직접적인 호스트 액세스

Country Status (4)

Country Link
US (3) US10929309B2 (ko)
KR (1) KR102335063B1 (ko)
CN (1) CN109933283B (ko)
DE (1) DE102018123817A1 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10956071B2 (en) 2018-10-01 2021-03-23 Western Digital Technologies, Inc. Container key value store for data storage devices
US10769062B2 (en) 2018-10-01 2020-09-08 Western Digital Technologies, Inc. Fine granularity translation layer for data storage devices
US10740231B2 (en) 2018-11-20 2020-08-11 Western Digital Technologies, Inc. Data access in data storage device including storage class memory
US10860333B1 (en) * 2019-10-14 2020-12-08 Western Digital Technologies, Inc. Interleaved host reset and next re-initialization operations
US11016905B1 (en) 2019-11-13 2021-05-25 Western Digital Technologies, Inc. Storage class memory access
US11487544B2 (en) * 2020-01-15 2022-11-01 Western Digital Technologies, Inc. Method and device for simultaneously decoding data in parallel to improve quality of service
US11249921B2 (en) 2020-05-06 2022-02-15 Western Digital Technologies, Inc. Page modification encoding and caching
CN111783163A (zh) * 2020-07-01 2020-10-16 联想(北京)有限公司 一种主机保护区的实现方法、装置和电子设备
US11733931B1 (en) * 2020-07-13 2023-08-22 Meta Platforms, Inc. Software defined hybrid flash storage memory controller
CN112199040B (zh) * 2020-09-18 2022-10-14 星宸科技股份有限公司 存储访问方法及智能处理装置
CN112256601B (zh) * 2020-10-19 2023-04-21 苏州凌云光工业智能技术有限公司 数据存取控制方法、嵌入式存储系统及嵌入式设备
CN114968855A (zh) * 2021-02-18 2022-08-30 西部数据技术公司 对持久性存储区域范围的一致访问
CN112835842B (zh) * 2021-03-05 2024-04-30 深圳市汇顶科技股份有限公司 端序处理方法、电路、芯片以及电子终端
CN113127402B (zh) * 2021-04-29 2024-05-14 广东湾区智能终端工业设计研究院有限公司 一种spi访问控制方法、系统、计算设备及存储介质
US11640335B2 (en) 2021-06-15 2023-05-02 Western Digital Technologies, Inc. Multiple function level reset management
US20230056018A1 (en) * 2021-08-23 2023-02-23 Infineon Technologies Ag Anamoly detection system for peripheral component interconnect express
US11922034B2 (en) 2021-09-02 2024-03-05 Samsung Electronics Co., Ltd. Dual mode storage device
CN114003170B (zh) * 2021-09-17 2024-03-19 方一信息科技(上海)有限公司 一种基于FPGA的Raid卡驱动方法
US11841767B2 (en) 2021-11-24 2023-12-12 Samsung Electronics Co., Ltd. Controller controlling non-volatile memory device, storage device including the same, and operating method thereof
US20230409234A1 (en) * 2022-05-17 2023-12-21 Western Digital Technologies, Inc. Data Storage Device and Method for Host Multi-Command Queue Grouping Based on Write-Size Alignment in a Multi-Queue-Depth Environment
CN117453279B (zh) * 2023-12-26 2024-03-19 中国人民解放军国防科技大学 一种适用于太空强辐射环境下的星载设备硬件架构

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130343131A1 (en) 2012-06-26 2013-12-26 Lsi Corporation Fast tracking for flash channels
US20140237156A1 (en) 2012-10-25 2014-08-21 Plx Technology, Inc. Multi-path id routing in a pcie express fabric environment

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7257714B1 (en) * 1999-10-19 2007-08-14 Super Talent Electronics, Inc. Electronic data storage medium with fingerprint verification capability
CN1252592C (zh) 2000-03-17 2006-04-19 恩培勒蒂孚股份有限公司 通信服务供应方法和设备
US7475174B2 (en) 2004-03-17 2009-01-06 Super Talent Electronics, Inc. Flash / phase-change memory in multi-ring topology using serial-link packet interface
US7861122B2 (en) 2006-01-27 2010-12-28 Apple Inc. Monitoring health of non-volatile memory
CN101515472B (zh) * 2008-02-19 2012-05-02 南亚科技股份有限公司 存取存储器芯片的方法
US8775718B2 (en) 2008-05-23 2014-07-08 Netapp, Inc. Use of RDMA to access non-volatile solid-state memory in a network storage system
US9218278B2 (en) 2010-12-13 2015-12-22 SanDisk Technologies, Inc. Auto-commit memory
KR20120132820A (ko) * 2011-05-30 2012-12-10 삼성전자주식회사 스토리지 디바이스, 스토리지 시스템 및 스토리지 디바이스의 가상화 방법
US9727570B2 (en) * 2011-06-03 2017-08-08 Apple Inc. Mount-time unmapping of unused logical addresses in non-volatile memory systems
CN102308282A (zh) 2011-07-20 2012-01-04 华为技术有限公司 多处理器体系结构远端内存访问的模拟方法及模拟器
US10037272B2 (en) 2012-08-08 2018-07-31 Avalanche Technology, Inc. Storage system employing MRAM and array of solid state disks with integrated switch
US8966172B2 (en) 2011-11-15 2015-02-24 Pavilion Data Systems, Inc. Processor agnostic data storage in a PCIE based shared storage enviroment
WO2013163612A1 (en) 2012-04-27 2013-10-31 Magpie Sensing Llc Environmental monitoring
US20140101370A1 (en) 2012-10-08 2014-04-10 HGST Netherlands B.V. Apparatus and method for low power low latency high capacity storage class memory
US8880771B2 (en) * 2012-10-25 2014-11-04 Plx Technology, Inc. Method and apparatus for securing and segregating host to host messaging on PCIe fabric
CN103838676B (zh) 2012-11-22 2017-10-17 华为技术有限公司 数据存储系统、数据存储方法及pcm桥
US9430412B2 (en) 2013-06-26 2016-08-30 Cnex Labs, Inc. NVM express controller for remote access of memory and I/O over Ethernet-type networks
US8949486B1 (en) 2013-07-17 2015-02-03 Mellanox Technologies Ltd. Direct memory access to storage devices
CN105164980B (zh) * 2014-04-04 2019-01-08 华为技术有限公司 众核下网络数据的分发方法及系统
CN105005536B (zh) * 2015-07-01 2019-08-06 忆正科技(武汉)有限公司 固态存储设备、主机的工作方法及固态存储设备、主机
US10223314B2 (en) * 2015-08-17 2019-03-05 Avago Technologies International Sales Pte. Limited PCI express connected network switch
US20170139849A1 (en) 2015-11-17 2017-05-18 HGST Netherlands B.V. Driverless storage device using serially-attached non-volatile memory

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130343131A1 (en) 2012-06-26 2013-12-26 Lsi Corporation Fast tracking for flash channels
US20140237156A1 (en) 2012-10-25 2014-08-21 Plx Technology, Inc. Multi-path id routing in a pcie express fabric environment

Also Published As

Publication number Publication date
US10929309B2 (en) 2021-02-23
US20190188153A1 (en) 2019-06-20
US11681634B2 (en) 2023-06-20
KR20190074194A (ko) 2019-06-27
CN109933283B (zh) 2022-06-28
DE102018123817A1 (de) 2019-06-19
US20210124692A1 (en) 2021-04-29
CN109933283A (zh) 2019-06-25
US20240078188A1 (en) 2024-03-07

Similar Documents

Publication Publication Date Title
KR102335063B1 (ko) 저장 디바이스 메모리 공간에의 직접적인 호스트 액세스
US11720283B2 (en) Coherent access to persistent memory region range
US11354454B2 (en) Apparatus and method of detecting potential security violations of direct access non-volatile memory device
US10255176B1 (en) Input/output (‘I/O’) in a storage system that includes multiple types of storage devices
US9274713B2 (en) Device driver, method and computer-readable medium for dynamically configuring a storage controller based on RAID type, data alignment with a characteristic of storage elements and queue depth in a cache
US10503934B2 (en) Secure subsystem
KR102480544B1 (ko) 손상된 저장 디바이스 펌웨어의 검출
US8190815B2 (en) Storage subsystem and storage system including storage subsystem
US11231987B1 (en) Debugging of memory operations
KR102478392B1 (ko) 최저 테일 레이턴시를 갖는 ssd들을 식별하기 위한 시스템 및 방법
US11544205B2 (en) Peer storage devices sharing host control data
US20210255794A1 (en) Optimizing Data Write Size Using Storage Device Geometry
US11409466B2 (en) Access control in CMB/PMR virtualization environment
US11315028B2 (en) Method and apparatus for increasing the accuracy of predicting future IO operations on a storage system
US20160026582A1 (en) Encrypt data of storage device
CN114968855A (zh) 对持久性存储区域范围的一致访问
US11914879B2 (en) Storage controller and storage system comprising the same
US20240037233A1 (en) Ransomware and malicious software protection in ssd/ufs by nvme instructions log analysis based on machine-learning
KR20240018388A (ko) 사이버 공격들로부터 내부 ssd 건강 및 저장 공간 보호를위한 멀웨어 방지 알고리즘, 하드웨어 및 소프트웨어
CN115910161A (zh) 存储封装、存储设备和用于操作存储设备的方法

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant