Skip to content
DenseChip
Learn
PracticeCode labInterview

DenseChip

Navigate

Menu

LearnPracticeCode labInterview

Tools

All toolsSV editorCode repoResume
DenseChip

Practice, courses, and chip-design tools in one focused workspace.

LearnPracticeCode labInterviewToolsLearning paths

© 2026 DenseChip

AboutContactPrivacyTerms
Skip to lesson

Course contents

  • How to Use This Course
  • Reading Paths
  • Concept Map
  • How to Read the Diagrams
  • Part 0: What Is a Protocol?10
  • Part 1: Timing and Clocking11
  • Part 2: Encoding and Framing12
  • Part 3: Handshakes13
  • Part 4: Flow Control17
  • Part 5: Transactions19
    • Reads and Writes Are Not Symmetric
    • The Request/Response Model
    • Address Maps and Decoding
    • Register Semantics
    • Combined and Split Transactions
    • Independent Channels
    • Posted and Non-Posted Writes
    • Bursts
    • Alignment, Strobes and Narrow Transfers
    • Boundary Rules
    • Width and Endianness Conversion
    • Transaction Attributes
    • Atomics
    • Sideband or In-Band
    • Interrupts and Notification
    • Descriptors, Rings and Doorbells
    • Bridges and Protocol Conversion
    • Protocols Compared: Transactions
    • Drills: Transactions
  • Part 6: Concurrency and Performance17
  • Part 7: Ordering13
  • Part 8: Sharing and Arbitration12
  • Part 9: Deadlock and Liveness13
  • Part 10: Reliability and Recovery20
  • Part 11: Bring-Up and Link Management10
  • Part 12: Power8
  • Part 13: Shared State and Coherence9
  • Part 14: Security and Isolation7
  • Part 15: Specifying and Verifying11
  • Part 16: Protocols Dissected17
  • Part 17: Capstones5
  • Part 18: Interview Preparation6
Loading lesson

‹Part 5: Transactions
  1. Topics
  2. First Principles of Hardware Protocols
  3. Part 5: Transactions
  4. Posted and Non-Posted Writes

Part 5 · Transactions · Working (W)

Posted and Non-Posted Writes

A posted write is sent and forgotten; a non-posted request waits for an answer. What posting gains in speed, and what it gives up in error reporting and in knowing when the write has finished.

On this page

    Note

    Level: Working (W) · Answers: What exactly is being asked?

    Before this: Reads and Writes Are Not Symmetric

    A driver writes a command to a device's register to start a transfer, then immediately reads a status register to check the device is busy. Sometimes the status says "idle", as if the command never arrived. It did arrive, a moment later. The write had been posted: the driver was free to carry on before the write reached the device, and nothing guaranteed it had.

    What does it mean for a write to be posted, and when is that a problem?

    The obvious answer, and why it breaks

    The obvious write waits for an acknowledgement: send the address and data, wait for "done", carry on. That is safe and slow: every write costs a round trip, which (lesson 5.1) a write does not otherwise need. So many protocols let writes go without an answer. That is fast, but the writer then knows nothing about when, or even whether, the write completed.

    The idea: posted and non-posted

    Posted

    Non-posted

    Response

    None

    A completion, with status (and data for a read)

    The requester continues

    As soon as the write is handed off

    After the completion arrives

    Cost per transaction

    No round trip

    One round trip

    Error reporting

    No status to the requester; errors go elsewhere (an error log, an interrupt)

    The status comes back with the completion

    Knows when it finished

    No

    Yes

    Used for

    Memory writes, messages

    Reads, configuration and I/O accesses, atomics

    Posting removes the round trip, and with it the requester's knowledge of when and whether the write finished.

    What a posted write gives up

    • Error reporting to the requester. If a posted write fails, the requester never hears. The error must be logged or signalled some other way.

    • Knowing when it landed. The requester cannot tell whether the write has reached the target. To be sure, it must follow up with a non-posted access that is ordered behind the write: classically, a read from the same device, which cannot complete until earlier posted writes to it have landed, if the protocol orders reads behind posted writes (Part 7).

    • Flow-control simplicity. A posted write that cannot be accepted cannot be refused with a status; it can only wait in a buffer, so buffers for posted writes need their own credits (lesson 4.6).

    That follow-up read is why the opening driver should read back from the device after starting it, and why the protocol's ordering rules matter as much as the posting rule itself.

    Why some writes must not be posted

    • Configuration writes, which can change where a device sits in the address map. Software must know the change is done before it uses the new address.

    • Writes whose failure software must see at once, such as some I/O accesses.

    • Atomics, which return the old value (lesson 5.13).

    How real protocols chose

    Protocol

    Posting

    PCI Express

    Memory writes are posted. Configuration writes and reads are non-posted and get completions. Message-signalled interrupts are posted memory writes (lesson 5.15).

    AXI

    Every write gets a response on the write response channel. An interconnect may answer early from a buffer (an early acknowledgement, lesson 7.4), which behaves much like posting.

    DCLink

    Writes are non-posted: every WR gets a CPL.

    What breaks

    The opening story: a driver issued a posted write to start a device, then read the device's status through a different path that was not ordered behind the write. The status read overtook the write. Reading back from the same device, through the same path, would have flushed the write first. The general rule: after a posted write that matters, use a non-posted access that the protocol guarantees is ordered after it.

    Why this matters

    Senior lens. Posting is a promise not to care when a write lands. For every posted write, ask who does care, and how they find out: a read-back from the same device, a fence, an interrupt that is ordered behind the data. Also ask where a failed posted write is reported, because the requester will never hear.

    Interview

    Asked: "Why are PCIe memory writes posted but configuration writes not?"

    Weak answer: Because configuration is slower.

    Strong answer: Posting memory writes removes a round trip per write, which is most of the traffic, and the writer usually doesn't need to know exactly when each one lands; when it does, a later read to the same device flushes the earlier posted writes. Configuration writes can change how the device is addressed or behaves, so software must know they've completed, and must see errors, before it continues. So they're non-posted and get a completion with status.

    Follow-ups: (1) How does software know a posted write has landed? (2) Where does an error on a posted write go?

    Check yourself A driver posts 100 writes, each 1 µs from target to requester and back. Roughly how long do they take if posted versus non-posted (one at a time)?

    Posted: about the time to send them, plus one trip for the last to land. Non-posted, one at a time: about 100 round trips, roughly 100 µs.

    Check yourself Why does a read from the same device confirm that earlier posted writes have landed?

    Because the protocol does not let a read pass earlier posted writes on the same path; the read's completion cannot return until those writes have reached the device.

    Key takeaways

    • A posted write gets no response: no round trip, but no status and no knowledge of when it landed.

    • To be sure a posted write landed, follow it with a non-posted access the protocol orders behind it, such as a read from the same device.

    • Configuration accesses, reads and atomics are non-posted because the requester needs their result or their status.

    Keep going

    Next: Lesson 5.8, Bursts. One request, many beats: incrementing, wrapping and fixed bursts, and how to compute every address.

    Related topics

    • Part 5 overview: Transactions

    Previous

    74 / 234

    Next: Bursts

    Up next

    Up nextBursts

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Reads and Writes Are Not Symmetric
    • The Request/Response Model
    • Address Maps and Decoding