Cache Coherent I/O Register Mapping for Low Latency CPU Interaction

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current CPU interactions with I/O device controllers are inefficient due to serialized and ordered write transactions, which stall the CPU and waste cycles, and memory polling for status updates can increase latency and waste CPU resources.

Innovation Solution

Mapping I/O device controller registers to a cache coherent memory space allows CPUs to treat registers as cacheable memory, reducing latency and avoiding serialization costs, enabling efficient read/write operations through normal caching and prefetching mechanisms.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If the CPU issues write transactions to I/O device controller registers through PCIe bus, then the CPU can communicate with the I/O device controller, but the CPU must idle and wait for each write transaction to complete, stalling execution

Engineering Contradiction:
Improvecommunication reliabilityVSAvoidCPU execution efficiency
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The I/O device controller includes a command queue buffer that can store multiple write transactions before execution. When the CPU writes to register addresses within the command queue buffer address range, the transactions are queued in memory rather than being executed immediately through the PCIe bus. This allows the CPU to continue execution without waiting for each transaction to complete, while the I/O device controller executes the queued commands at its own pace.

Inventive Principle:
Principle #10Preliminary action

2Loss of information

If the CPU uses memory polling to obtain completion status, then the CPU can check the status of requests, but the CPU wastes cycles spinning in a loop and increases I/O latency

Engineering Contradiction:
Improvestatus information acquisitionVSAvoidI/O latency and CPU cycle waste
Core Design Contradiction:
Loss of informationVSLoss of time

Solution Approach 1:

The I/O device controller includes a completion queue buffer that automatically posts completion status to memory when commands are executed. The CPU can check the status of previously queued commands by reading from the completion queue buffer address range. This feedback mechanism eliminates the need for continuous polling, as the CPU only needs to check status when it has queued commands, significantly reducing CPU cycle waste and I/O latency.

Inventive Principle:
Principle #23Feedback

3Stability of the object's composition

If write transactions are serialized and ordered on the PCIe bus, then transaction ordering is maintained, but the CPU must wait for each earlier instruction to complete before resuming execution

Engineering Contradiction:
Improvetransaction orderingVSAvoidCPU throughput
Core Design Contradiction:
Stability of the object's compositionVSProductivity

Solution Approach 1:

The command queue buffer allows multiple write transactions to be preliminarily stored in memory in the desired serialized order. The CPU can rapidly queue multiple commands without waiting for PCIe bus transactions to complete, maintaining the ordered sequence in memory. The I/O device controller then executes these pre-queued commands in order, achieving both transaction ordering and improved CPU throughput.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS11782832B2Low latency host processor to coherent device interaction
Publication Date: 2023.10.10 VMWARE INC
  • US11782832B2 patent drawing
  • US11782832B2 patent drawing
  • US11782832B2 patent drawing

AI summary

In a computer system, a processor and an I/O device controller communicate with each other via a coherence interconnect and according to a cache coherence protocol. Registers of the I/O device controllers are mapped to the cache coherent memory space to allow the processor to treat the registers as cacheable memory. As a result, latency of processor commands executed by the I/O device controller is decreased, and size of data stored in the I/O device controller that can be accessed by the processor is increased from the size of a single register to the size of an entire cache line.