SMALL CACHE PBUS INTERFACE
SMALL CACHE PBUS INTERFACE
SMALL CACHE PBUS INTERFACE
DRAGON PROJECT — FOR INTERNAL XEROX USE ONLY
DRAGON PROJECT — FOR INTERNAL XEROX USE ONLY
DRAGON PROJECT — FOR INTERNAL XEROX USE ONLY
Small Cache PBus Interface
Specifications
Pradeep Sindhu
Dragon-87-01 Written January 1987 Revised March 10, 1987
© Copyright 1986 Xerox Corporation. All rights reserved.
Abstract: This document provides logical and electrical specifications for the Small Cache's PBus interface.
Keywords: June87, Dragon, PBus, Small Cache
FileName: /indigo/dragon/smallcache/SCPInterface.tioga, .interpress
XEROX Xerox Corporation
Palo Alto Research Center
3333 Coyote Hill Road
Palo Alto, California 94304
Dragon Project - For Internal Xerox Use Only
Contents
1. Introduction
2. PBus Review
3. Interface Signals
4. Interface Circuits
5. Interface Timing
ChangeLog
1. Introduction
The small cache's PInterface allows a cache to be connected to either a Dragon EU or IFU via the PBus. In typical configurations, one PBus connects the IFU to the code cache, while a second PBus connects the EU to the data cache and perhaps other devices such as a floating point unit.
This document provides the logical and electrical specifications for the PInterface. It begins in Section 2 with an overview of the PBus (the PBus is described more completely elsewhere, but we will provide relevant information directly in this document to make it easier to read). Section 3 lists the signals comprising the interface and gives the detailed characteristics of each. To avoid ambiguity, Section 4 supplies circuit diagrams for the logic actually used to send and receive each signal. Lastly, Section 5 gives the timing assumptions about the signals.
2. PBus Review
The PBus is a synchronous, low latency bus consisting of 48 wires. Of these wires, 32 comprise the multiplexed data/address path; eight define the bus command; one wire supplies the processor mode; a reject wire holds the processor for long operations; four wires are used to provide a fault indication; and two wires PhA and PhB supply the two phases of the bus clock.
Each PBus has a unique master, which implies there is no need to arbitrate for the bus. For the EU PBus the master is the EU; for the IFU PBus it is the IFU. All other devices on the bus are slaves—that is, they do not initiate operations. Slaves are designed in such a way that there is exactly one slave that will respond to a given operation. This means we cannot have conflicts where more than one slave is driving the bus and we cannot have situations where the master initiates an operation and no one responds.
PBus operation is best described in terms of transactions. Each transaction consists of one or more bus cycles, where each cycle is one period of the two phase clock (nominally 100ns). In PhA of the first cycle of a transaction, the unique bus master (either EU or IFU) sends the bus command and an address on the bus. All slaves receive this information, and exactly one of them decides that it is the one addressed by this transaction. For some commands (eg. store) PhB of the first cycle is used by the master to transmit 32 bits of data to the slave; for others (eg. fetch) this PhB is used by the slave to respond with 32 bits of data. If the slave is not able to complete the transaction in one cycle, then it asserts reject in PhB of the first cycle. This holds up the processor until there is a PhB in which the slave deasserts reject. In this PhB the slave supplies 32 bits of data if called for by the transaction.
3. Interface Signals
The PInterface consists of the 48 signals listed below. The description uses the following naming conventions: S[a..b) denotes a group of b-a lines that encode the bits representing the signal S; most significant bits of the signal are written leftmost; ie., S[0] is the most significant bit. A signal represented by a single wire is written without with the [) notation. All signals are assumed to follow positive logic unless they have an "n" at the beginning of the signal name. The direction of signals (input/output) are with reference to the PInterface.
PhA
This input only signal defines the "A" phase of the two phase non-overlapping PBus clock.
PhB
This input only signal defines the "B" phase of the PBus clock.
PCmd[0..8)
These input only signals encode the PBus command. PCmd is driven only by the master, so there is no possibility of conflict. During PhA of cycles in which no transaction is in progress, the master drives PCmd to a NoOp to ensure no slave executes an unintended command. During PhA of the first cycle of a transaction, the master drives PCmd to the appropriate value; during subsequent cycles of the transaction it reverts back to driving PCmd to a NoOp to avoid having other slaves believe it is the beginning of another transaction. Thus PCmd must be received by a latch enabled by the first PhA.
The encoding of PCmd is as follows:
Bits Meaning (for all devices)
[0..7] all zeros => NoOp
[0] 1 => cache operation, 0 => non-cache operation
Bits Meaning (for caches only)
[1..4] byte select (1=> selected)
[5] 1 => IO operation, 0 => memory operation
[6] 1 => special operation, 0 => normal operation
[7] 1 => write, 0 => read
PMode
This input only signal indicates whether the processor is in user mode (1) or kernel mode (0). PMode is driven only by the master, so there is no possibility of conflict. PMode is valid only during PhA of the first cycle of a transaction so it must be received by a latch enabled by the first PhA.
PData[0..32)
These input output signals carry either data or address depending on the clock phase. During the first PhA of a transaction, PData carries the address driven by the master; during all other PhA's the value is undefined. During the first PhB, if the read/write bit of PCmd indicates a write then the data is driven by the master and received by a slave. If the PCmd bit indicates a read, then the data will be driven onto the PBus by the selected slave if it is able to respond in one cycle. If the slave is not able to respond in one cycle, then the data will be driven onto the PBus for the first PhB during which PReject is not asserted. For PhB's during which PReject is asserted the value of PData is undefined. This value is also undefined for PhB's that correspond to PhA's in which PCmd is NoOp.
PReject
This output only signal is used by an addressed slave to indicate that it has not completed the requested transaction as yet. PReject must be precharged to 0 during each PhA by every PInterface, regardless of whether it belongs to the addressed slave or not; additionally, each PInterface must ensure that the signal is driven weakly to 0 all the time. The signal may be driven to 1 during PhB only by the addressed slave; it does not need to be driven to 0 during PhB because of the precharging during PhA.
This scheme is required because PReject is interpreted all the time by the EU and IFU and not just during cycles when a transaction is in progress.
The sequence below shows how PReject should be driven for a transaction that is not delayed at all followed by one that is delayed by 2 cycles:
Transaction# 1 2 3
A B A B A B A B A B A B
PReject 0 1 1 0
PFault
This output only signal indicates if the current transaction encountered a fault. Like PReject, PFault must be precharged to 0 during each PhA by every PInterface, regardless of whether it belongs to the addressed slave or not; additionally, each PInterface must ensure that the signal is driven weakly to 0 all the time. The signal may be driven to a 1 during PhB only by the addressed slave and only if PReject is also being driven to 1. It does not need to be driven to 0 during PhB because of the precharging during PhA.
This scheme is required because PFault is interpreted all the time by the IFU, not just during cycles when a transaction is in progress.
The sequence below shows how PReject and PFault should be driven:
Transaction# 1 2
A B A B A B A B A B A B
PReject 1 1 1 0
PFault 0 0 1 0
PFaultCode[0..3)
These
output only signals indicate the fault code when PFault is asserted; at other times they are meaningless. The encoding of PFaultCode is as follows:
Name Encoding Meaning
MemAccessFault 001 first write to page or insufficient privilege
AUFault 010 arithmetic unit fault
IOAccessFault 011 insufficient privilege to read or write IO location
MapFault 100 map cache miss
DynaBusTimeOut 101 transaction timeout on DynaBusIOAccessFault
DynaBusOtherFault 111 some other DynaBus fault reported via reply packet
For DynaBusOtherFault, the cache stores 32 bits of FaultCode supplied by the reply packet. The faulting processor must read this information via an IORead to determine what the fault was. This extra information is not present for any of the other faults.
PReschedule
This output only signal causes the IFU to take a Reschedule TRAP. PReschedule is driven all the time by the PInterface. It may change only during PhA and must remain stable throughout PhB. For each reschedule event it must stay asserted during exactly one PhB.
4. Interface Circuits
This section gives the logic diagrams for sending and receiving each of the signals just described.
PhA, PhB
The signals PhA and PhB are received by input buffers and used to drive and receive the other signals.
PCmd[0..8), PMode
PCmd and PMode are received by input buffers and fed to latches enabled by PhA'nRejectBA. This ensures that PCmd and PMode are latched only during PhA of the first cycle of a transaction.
PData[0..32)
For input, PData is received into a buffer that drives an address latch during PhA'nRejectBA and a data latch during PhB'nRejectAB. For output, PData is driven by a tristate driver enabled by PhB'CacheSelected, where CacheSelected is PCmdIn[0], the signal that indicates that a cache is selected.
PReject
PReject is pulled low permanently by a weak transistor; additionally, it is pulled low every PhA. It is pulled high only during PhB.
[Artwork node; type 'ArtworkInterpress on' to command tool]
PReject Circuitry
PFault
PFault is pulled low permanently by a weak transistor; additionally, it is pulled low every PhA. It is pulled high only during the last PhB for which PReject is high.
[Artwork node; type 'ArtworkInterpress on' to command tool]
PFault Circuitry
PFaultCode
PFaultCode is driven only when PFault is asserted, ie., Reject'Fault'CacheSelected'PhB is TRUE.
PReschedule
PReschedule is driven all the time. It is received into a latch which is set by the reschedule event and cleared when the signal has been latched into a second latch and it is PhB. Thus PReschedule stays high for exactly one PhB for each event.
[Artwork node; type 'ArtworkInterpress on' to command tool]
PReschedule Circuitry
5. Interface Timing
This section begins with the phase relationship between PhA and PhB on the one hand and the DynaBus clock which drives the cache on the other. It then gives the timing of each of the interface signals.
Phase Relationship between PBus Clock and DynaBus Clock
The PInterface is designed assuming that the PBus clock and the DynaBus clock are phase locked. The DynaBus clock is nominally a 50% duty cycle signal having a period of 25 ns, while PhA and PhB is each have a duty cycle of less than 50% and a period of 100ns. The design assumes the following phase relationship between the clocks. Note that this phasing can be generated easily.
[Artwork node; type 'ArtworkInterpress on' to command tool]
Phase Relationship between PBus Clock and DynaBus Clock
Timing of PCmd, PMode, and PAdrs
All of these signals are asserted during PhA. The figure below shows their timing.
Timing of PData For Writes
PData carries 32 bits of data during PhB. The figure below shows the timing.
[Artwork node; type 'ArtworkInterpress on' to command tool]
Timing of PData For Writes
Timing of PData For Reads
PData carries 32 bits of data during PhB. The figure below shows the timing.
[Artwork node; type 'ArtworkInterpress on' to command tool]
Timing of PData For Reads
Timing of Reject and Fault
PFault is asserted during PhB. The figure below shows the timing.
[Artwork node; type 'ArtworkInterpress on' to command tool]
Timing of PReject and PFault
Appendix A. Encoding of Cache Commands
This appendix gives the values of PCmd for various cache commands.
PCmd Value (IO|Special|Write) Cache Command
000 Memory Read
001 Memory Write
010 ConditionalWriteSingle
011 DeMap
100 IORead
101 IOWrite
110 Undefined
111 BIOWrite
ChangeLog
[PSS] Feb 1, 1987: Created
[PSS] Feb 7, 1987: Modified PReject, PFault, PReschedule logic in response to bug fixes.
Modified timing diagrams to conform to truth.
[PSS] May 5, 1987: Added Appendix A.