Transaction Tracking

Request Agent Transaction Tracking

It should be obvious that a Request Agent must keep track of each transaction that it has issued as each passes through its various phases on its way towards completion. The Request Agent has distinct responsibilities during each phase:

  • It issues the transaction request during the Request Phase.

  • It waits for and checks the snoop result during the Snoop Phase.

  • It waits for and checks the response received from the Response Agent during the Response Phase.

  • During the Data Phase of a read or write transaction, it accepts or sources data.

  • If, in the Response Phase, the Response Agent indicates that it wishes to defer completion until a later time, the Request Agent must remember the suspended transaction until the Response Agent initiates a Deferred Reply transaction at a later time.

In order to fulfill these responsibilities, the Request Agent must track all of the outstanding transactions issued by itself as well as those issued by other Request Agents. As each of its outstanding transactions enter a new phase, it must interact with the appropriate signal group when it becomes available.

Snoop Agent Transaction Tracking

The group of one or more Snoop Agents (processors) that reside on the FSB must also keep track of each transaction currently outstanding on the bus:

  • At the appropriate times, the Snoop Agents must present the snoop result for each transaction. As illustrated in Figure 44-3 on page 1147 (in time 11), sometimes the delivery of the snoop result for a particular transaction must be delayed until all of the snoopers have first presented the snoop result for the previous transaction.

  • When a snoop results in a hit on a modified line, the snooper must be prepared to write back the modified line to the system memory (and to the Request Agent if it's a read) during the Data Phase of the transaction.

Response Agent Transaction Tracking

A Response Agent must track the following:

  • It must latch each new transaction request and determine if it is the target of the transaction.

  • If it is the target and it intends to issue a Retry or a Deferred response during the Response Phase, it must assert DEFER# during the Snoop Phase.

  • If it is the target, the Response Agent must indicate during the Response Phase of the transaction how it will handle the transaction.

  • If it is the target and this is a read, the Response Agent will have to return data to the Request Agent when the Data Phase is entered.

  • If it is the target and this is a write, the Response Agent must be prepared to accept the write data when the Data Phase is entered.

  • If it is the target and the snoop result is a hit on a modified line, the Response Agent must be prepared to accept the modified line from the snooper during the Data Phase of the transaction.

The IOQ

In order to properly interact with the FSB at each stage of the appropriate transactions, each FSB agent must maintain a record of all transactions currently in progress, what phase each is currently in, and what responsibilities (if any) it has during each phase. This record is kept in a buffer referred to as the agent's In-Order Queue, or IOQ. When each transaction receives a response guaranteeing that the transaction will be completed now (in other words, it isn't being deferred or retried), the transaction is deleted from the IOQ. The Pentium® 4 processor has an IOQ depth of 12 (as opposed to eight on the P6 processors).

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.142.173.227