NVM Express 1.4 eLearning Course

View all eLearning Courses

PCI Express Courses
PCIe 4.0 Update
Fundamentals of PCI Express eLearning Course
Comprehensive PCI Express 3.1 eLearning Course
PCI Express Config Space and Transaction Routing eLearning Course
PCI Express Physical Layer and Link Initialization and Training eLearning Course
PCI Express Interrupt Handling eLearning Course
PCI Express Error Handling eLearning Course
PCI Express Power Management eLearning Course
PCI Express Hot Plug and Resets eLearning Course
PCI Express 2.x and 3.x ECNs eLearning Course
Intro to PCI Express IO Virtualization eLearning Course
Mobile PCI Express (M-PCIe) eLearning Course
USB Courses
USB Type-C and Power Delivery eLearning Course
USB 3.2 Update
Comprehensive USB 3.1 eLearning Course
xHCI eLearning Course
Comprehensive USB 2.0 Embedded System Architecture
x86 Architecture Courses
Intel x86 Processor and Platform Architecture eLearning Course
Thunderbolt 3 Fundamentals
Intro to 32/64-bit x86 Architecture eLearning Course
Fundamentals of Intel QPI eLearning Course
ARM Courses
Fundamentals of ARM Architecture
ARMv8-M and v8.1-M eLearning Course
ARM 64-bit Architecture (ARM v8-A) eLearning Course
ARM v8-A Registers and Instruction Set eLearning Course
ARM v8-A Memory Management eLearning Course
ARM v8-A Exceptions and Interrupts eLearning Course
Comprehensive ARM Architecture eLearning Course
ARM v7 Registers and Instruction Set eLearning Course
ARM v7 Memory Management eLearning Course
ARM v7 Exceptions and Interrupts eLearning Course
Fundamentals of AMBA eLearning Course
ARM 32-bit Architecture (ARM v7) eLearning Course
ARM v8-A Porting and Software Optimization eLearning Course
ARM v8-A (64-bit) Pipelines eLearning Course
ARM MCU Architecture eLearning Course
ARM Cortex-M7 Processor eLearning Course
Fundamentals of ARMv8-A eLearning Course
Memory Courses
Modern DRAM (DDR4 / DDR3 / LPDDR3 / LPDDR2) eLearning Course
Storage Courses
SAS 3.0 Storage Technology eLearning Course
Advanced Host Controller Interface (AHCI) eLearning Course
NVM Express 1.4 eLearning Course
SATA 3.2 Technology eLearning Course
Universal Flash Storage (UFS) eLearning Course
Virtualization Courses
PC Virtualization eLearning Course
IO Virtualization for Intel Platforms eLearning Course
Intro to Virtualization Technology eLearning Course



NVM Express 1.4 eLearning Course

Instructor(s): Mike Jackson
Number of Modules: 26
Subscription Length: 90 days

Course Price
$595.00
Bundle Price (Course & Arbor)
$995.00
(more info on Arbor)



NVM Express 1.4 Technology eLearning Course

What's Included?

NVMe eLearning modules
(unlimited access for 90 days)
PDF of Course Slides
(yours to keep, does not expire)
PCI Express eBook
(yours to keep, does not expire)

Benefits of eLearning:

  • Access to the Instructor - Ask questions to the MindShare Instructor that taught the course
  • Cost Effective - Get the same information delivered in a live MindShare class at a fraction of the cost
  • Available 24/7 - MindShare eLearning courses are available when and where you need them
  • Learn at Your Pace - MindShare eLearning courses are self-paced, so you can proceed when you're ready

Who Should View?

This in-depth course is designed with the hardware or software engineer in mind. The course contains a detailed description of the NVM controller interface, the submission queues, completion queues and how software and the controller communicate with each other.

Course Outline:

  • Module 1a: Introduction and NVMe Basics
    - Intro, why use PCIe, software stack view, example file system request
  • Module 1b: Introduction and NVMe Basics
    - Example NVM subsystem, NVMe firmware, local memory (CMB and PMR), SSD Block diagram, namespaces intro, shared port, virtual functions, NVM sets, endurance groups, big picture (commands, submission queues, completion queues, etc.), comparison with SATA Express
  • Module 2: NVMe Host Controller Interface
    - NVMe controller registers, establishing admin queue, control registers and initialization, NVMe labs using Arbor, Queue Doorbell pointers and usage, queueing commands, fetching commands, writing completions, notifying host, tracking completion queue entries, phase tag information
  • Module 3a: NVMe Commands: Admin Commands
    - Generic command structure, Identify command, Create IO Completion Queue command, Create IO Submission Queue command, NVMe labs using Arbor
  • Module 3b: NVMe Commands: Admin Commands
    - Create IO Submission Queue command, NVMe labs using Arbor
  • Module 4a: NVM IO Commands
    - Read/Write commands, command attributes, protection fields, protection action, dataset management, atomic writes
  • Module 4b: NVM IO Commands
    - Optimizing write commands, basics of flash storage and SSD operation, avoiding write amplification with write streams, setting up write streams, directive receive, directive send, avoiding write amplification through deallocation
  • Module 5: Command Arbitration; Addressing Models: PRP and SGL
    - Round Robin and Weighted Round Robin (WRR), Commands using Physical Region Pages (PRPs), Commands using Scatter/Gather Lists (SGLs), PRP lists, SGL elements, SGL descriptors
  • Module 6: Get / Set Features Commands
    - Purpose of Get Features and Set Features commands, feature identifiers, LBA range types, feature numbers to set, temperature threshold, Host Memory Buffer (HMB), Keep alive timer, sanitize command, NVMe labs using Arbor
  • Module 7a: Error Reporting and Handling
    - Asynchronous Event Requests (AERs), error log page, SMART / Health log page, persistent events, error recovery, read recovery level, host behavior support, command retry delay
  • Module 7b: Error Reporting and Handling
    - Completion error reporting and handling, status codes, media and data integrity error codes, admin commands for handling errors (abort, delete IO submission queue, delete IO completion queue)
  • Module 8: Log Pages
    - Get log page command, log page contents covered in detail
  • Module 9: Firmware Updates
    - Firmware update process including live updates, Firmware image download, Firmware commit, boot partition image, Replay Protected Memory Block (RPMB)
  • Module 10: Controller Registers
    - Capability, Control, Status register, Doorbell register and more. Memory buffer support
  • Module 11: Controller Initialization
    - Controller initialization, resets (controller-level reset, queue-level reset), queue management, interrupts, interrupt coalescing
  • Module 12: Power Management
    - PCIe power options, NVM power states, changing power states, autonomous power state change, Runtime D3
  • Module 13: Reservations
    - Motivation, drives and form factors, method of reservations, NVM commands for reservations (Report, Register, Acquire, Release), Namespace management and creating Namespaces, unregistering, acquiring and releasing reservation
  • Module 14: Other NVMe Commands
    - Write uncorrectable command, write zeroes command, compare command, dataset management command
  • Module 15: Changes for v1.3
    - Emulated controller enhancements, keep alive, NVMe-MI, virtualization enhancements, telemetry, thermal management, timestamp, self test, sanitize, format NVM security send / receive
  • Module 16a: Changes for v1.4
    - NVM Sets, IO determinism
  • Module 16b: Changes for v1.4
    - Read recovery levels, persistent memory region, rebuild assist
  • Module 16c: Changes for v1.4
    - Asymmetric namespace access reporting, namespace write protect, persistent event log, endurance groups, traffic-based keep alive, IO performance and endurance hints, vendor-specific UUIDs
  • Module 16d: Changes for v1.4
    - Verify command, administrative controller, SQ associations, miscellaneous required changes
  • Module 17a: Appendix A: PCIe Architecture Overview
    - Links vs Lanes, bandwidth, Root Complex, Switches, Endpoints, PCIe device layers, Transaction Layer Packets (TLPs)
  • Module 17b: Appendix A: PCIe Architecture Overview
    - Example read/write requests, QoS, Flow Control, Data Link Layer and DLLPs, Ack/Nak Protocol, Physical Layer, ordered sets
  • Module 17c: Appendix A: PCIe Architecture Overview
    - Configuration space over and access mechanisms
Course Modules
ModuleLength
Module 1a: Introduction and NVMe Basics32 minutes
Module 1b: Introduction and NVMe Basics26 minutes
Module 2: Host Controller Interface34 minutes
Module 3a: NVMe Commands: Admin Commands24 minutes
Module 3b: NVMe Commands: Admin Commands21 minutes
Module 4a: NVM IO Commands23 minutes
Module 4b: NVM IO Commands24 minutes
Module 5: Command Arbitration; Addressing Models PRP and SGL24 minutes
Module 6: Get / Set Features Commands32 minutes
Module 7a: Error Reporting and Handling25 minutes
Module 7b: Error Reporting and Handling14 minutes
Module 8: Log Pages17 minutes
Module 9: Firmware Updates14 minutes
Module 10: Controller Registers29 minutes
Module 11: Controller Initialization19 minutes
Module 12: Power Management18 minutes
Module 13: Reservations28 minutes
Module 14: Other NVMe Commands6 minutes
Module 15: Changes for v1.316 minutes
Module 16a: Changes for v1.431 minutes
Module 16b: Changes for v1.429 minutes
Module 16c: Changes for v1.422 minutes
Module 16d: Changes for v1.411 minutes
Module 17a: Appendix A: PCIe Architecture Overview32 minutes
Module 17b: Appendix A: PCIe Architecture Overview28 minutes
Module 17c: Appendix A: PCIe Architecture Overview9 minutes