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. Independent Channels

Part 5 · Transactions · Working (W)

Independent Channels

Splitting a transaction into separate address, data and response channels, each with its own handshake. What it buys, why reads and writes get separate channels, and the dependencies that remain between them.

On this page

    Note

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

    Before this: Combined and Split Transactions, The Valid/Ready Rules

    A DMA engine copies data: it reads from one buffer and writes to another, as fast as it can. On a bus with one shared data path, every cycle carries either read data or write data, never both, so the copy runs at half the bus's rate. A protocol with separate channels for read data and write data runs the same copy at full rate in both directions at once.

    Why split a transaction into several independent channels, and what still ties them together?

    The obvious answer, and why it breaks

    The obvious split protocol has two paths: requests go one way, responses come back the other. That works, but it bundles things that move at different times and in different amounts. A write's address is one beat; its data may be sixteen. A read's address goes out while another read's data comes back. Bundled into one path, the small items wait behind the large ones, and reads and writes take turns on a single data path.

    The idea: one channel per kind of information

    Give each kind of information its own channel, each a one-way valid/ready interface with its own handshake (Part 3). The generic set for a memory protocol is five channels:

    Channel

    Direction

    Carries

    Beats per transaction

    Write address

    Requester → target

    Address, length, size, ID, attributes

    One

    Write data

    Requester → target

    Data and byte strobes, last-beat marker

    One per beat

    Write response

    Target → requester

    ID, status

    One per burst

    Read address

    Requester → target

    Address, length, size, ID, attributes

    One

    Read data

    Target → requester

    ID, data, status, last-beat marker

    One per beat

    Addresses, write data and responses each travel on their own channel, so they never wait behind each other.

    What independence buys

    • Reads and writes move at the same time: the copy engine above uses read data and write data together.

    • Addresses run ahead of data. A requester can issue the next address while the previous burst's data is still moving, keeping the target's pipeline full.

    • Each channel is a plain valid/ready interface, so register slices and skid buffers (lessons 3.8 and 3.9) can be inserted on any channel independently to close timing.

    • Small items never wait behind large ones: a one-beat response does not queue behind a sixteen-beat data burst.

    The dependencies that remain

    Independent does not mean unrelated. Some orders are forced, because a channel's information only makes sense after another's:

    Dependency

    Why

    A write response comes after the last beat of its write data

    The target cannot report the outcome of data it has not received

    Read data comes after its read address

    The target cannot return data for an address it has not seen

    Write data may arrive before its write address

    Allowed in some protocols (AXI allows it); the target must then buffer the data until the address arrives

    There is no order between reads and writes

    A read and a write to the same address on different channels can arrive in either order; whoever needs an order must wait for the write response before issuing the read (Part 7)

    The last row is the price of independence: the protocol no longer orders reads against writes for you.

    How real protocols chose

    Protocol

    Channels

    AXI

    Exactly the five above: AW, W, B, AR, R, each with VALID/READY. One write response per burst; read data carries a status on every beat.

    APB

    One combined channel: address, data and response all belong to a single transfer.

    PCI Express

    One link per direction carrying packets of every kind; independence comes from separate packet types and credit pools per type (lesson 4.6).

    What breaks

    A target (illustrative) accepted write data only after it had seen the write address, while its requester sent write data first and only then the address, because both orders were legal. The requester waited for the data to be accepted before sending the address; the target waited for the address before accepting the data. Neither moved. Each side was individually correct; together they deadlocked. Independent channels need explicit rules about which side may wait for which, and the AXI specification spells these out for exactly this reason.

    Why this matters

    Senior lens. For every pair of channels, write down whether one may wait for the other, in both the requester and the target. Any cycle of waits is a deadlock waiting for the right traffic. Verify with traffic that sends write data before, with and after its address, and with reads and writes to the same address interleaved.

    Interview

    Asked: "Why does AXI have five channels?"

    Weak answer: For more bandwidth.

    Strong answer: Each kind of information moves at its own time and in its own amount, so each gets an independent valid/ready channel: write address, write data, write response, read address and read data. Reads and writes can then move at the same time, addresses can run ahead of data, small responses never wait behind bursts, and any channel can be pipelined on its own. The costs are the dependencies that remain, such as a write response only after the last data beat, and no ordering between reads and writes.

    Follow-ups: (1) May write data arrive before its address? (2) Why is there no ordering between reads and writes?

    Check yourself A copy engine reads and writes at 8 bytes per cycle each. With one shared data path of 8 bytes per cycle, what is its copy rate? With separate read and write data channels?

    Shared: 4 bytes per cycle (reads and writes take turns). Separate: 8 bytes per cycle, reading and writing at the same time.

    Check yourself Why can a write response never come before the write's last data beat?

    The response reports the outcome of the whole write; the target cannot know it until it has received all the data.

    Key takeaways

    • Independent channels give each kind of information its own valid/ready handshake.

    • They let reads and writes move together, let addresses run ahead, and let each channel be pipelined alone.

    • Some dependencies remain, and there is no order between reads and writes unless the requester waits for it.

    Keep going

    Next: Lesson 5.7, Posted and Non-Posted Writes. Writes that never get an answer: what posting buys, and what it gives up.

    Related topics

    • Part 5 overview: Transactions

    Previous

    73 / 234

    Next: Posted and Non-Posted Writes

    Up next

    Up nextPosted and Non-Posted Writes

    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