CA2183223A1 - Symmetric multiprocessing computer with non-uniform memory access architecture - Google Patents

Symmetric multiprocessing computer with non-uniform memory access architecture

Info

Publication number
CA2183223A1
CA2183223A1 CA002183223A CA2183223A CA2183223A1 CA 2183223 A1 CA2183223 A1 CA 2183223A1 CA 002183223 A CA002183223 A CA 002183223A CA 2183223 A CA2183223 A CA 2183223A CA 2183223 A1 CA2183223 A1 CA 2183223A1
Authority
CA
Canada
Prior art keywords
memory
cache
bus
motherboard
directory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
CA002183223A
Other languages
French (fr)
Inventor
Joseph Cox
William F. Baxter
Robert G. Gelinas
Barry E. Gillott
James M. Guyer
Andrea Heyda
Dan R. Huck
Michael F. Hunt
David L. Keating
Jeff S. Kimmell
Rob J. Pike
Tom V. Radogna
Phil J. Roux
Art A. Sherman
Michael Sporer
Liz M. Truebenbach
Doug J. Tucker
Pat J. Weiler
Simon N. Yeung
Rob P. Valentine
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EMC Corp
Original Assignee
Joseph Cox
William F. Baxter
Robert G. Gelinas
Barry E. Gillott
James M. Guyer
Andrea Heyda
Dan R. Huck
Michael F. Hunt
David L. Keating
Jeff S. Kimmell
Rob J. Pike
Tom V. Radogna
Phil J. Roux
Art A. Sherman
Michael Sporer
Liz M. Truebenbach
Doug J. Tucker
Pat J. Weiler
Simon N. Yeung
Rob P. Valentine
Data General Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=21700234&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=CA2183223(A1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Joseph Cox, William F. Baxter, Robert G. Gelinas, Barry E. Gillott, James M. Guyer, Andrea Heyda, Dan R. Huck, Michael F. Hunt, David L. Keating, Jeff S. Kimmell, Rob J. Pike, Tom V. Radogna, Phil J. Roux, Art A. Sherman, Michael Sporer, Liz M. Truebenbach, Doug J. Tucker, Pat J. Weiler, Simon N. Yeung, Rob P. Valentine, Data General Corporation filed Critical Joseph Cox
Publication of CA2183223A1 publication Critical patent/CA2183223A1/en
Abandoned legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2289Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing by configuration test
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/267Reconfiguring circuits for testing, e.g. LSSD, partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • G06F2212/2542Non-uniform memory access [NUMA] architecture

Abstract

A very fast, memory efficient, highly expandable, highly efficient CCNUMA processing system based on a hardware architecture that minimizes system bus contention, maximizes processing forward progress by maintaining strong ordering and avoiding retries, and implements a full-map directory structure cache coherency protocol. A Cache Coherent Non-Uniform Memory Access (CCNUMA) architecture is implemented in a system comprising a plurality of integrated modules each consisting of a motherboard and two daughterboards. The daughterboards, which plug into the motherboard, each contain two Job Processors (JPs), cache memory, and input/output (I/O) capabilities. Located directly on the motherboard are additional integrated I/O
capabilities in the form of two Small Computer System Interfaces (SCSI) and one Local Area Network (LAN) interface. The motherboard includes main memory, a memory controller (MC) and directory DRAMs for cache coherency. The motherboard also includes GTL backpanel interface logic, system clock generation and distribution logic, and local resources including a micro-controller for system initialization. A crossbar switch connects the various logic blocks together. A fully loaded motherboard contains 2 JP daughterboards, two PCI expansion boards, and up to 512MB of main memory. Each daughterboard contains two 50MHz Motorola 88110 JP complexes, having an associated 88410 cache controller and 1MB level 2 Cache. A
single 16MB third level write-through cache is also provided and is controlled by a third level cache controller.

Description

-~ 21 83223 SYMMETRIC MULTIPROCESSING COMPUTER WITH
NON-UNIFORM MEMORY ACCESS ARCHITE~TURE
RELATED APPLICATION
The present application claims the benef it of U S .
Provisional Application No. 60/002,320, filed August 14, 1995, which i5 hereby incorporated herein by reference.
FIELD OF THE INVENTION
The present invention relaees to multiprocessing computer systems, and more particularly to a flexible, highly scalable multiprocessing computer system incorporating a non-uniform memory access architecture.
BACKGROUND OF TH~ l~v~ 10~
Symmetric multiprocessing (SMP) computer architectures are known in the art as overcoming the limitations of single or uni-processors in terms of processing speed and transaction throughput, among other things. Typical, commercially available SMP systems are generally "shared memoryr systems, characterized in that multiple processors on a bus, or a plurality of busses, share a single global memory. In shared memory multiprocessors, all memory is uniformly accessible to each processor, which simplifies the task of dynamic load distribution. Processing of complex tasks can be distributed among various processors in the multiprocessor system while data used in the processing is substi~nt;i~11y equally available to each of tl~e processors undertaking any portion of the complex task. Similarly, p~:~JyL rS writing code for typical shared memory SMP systems do not need to be ,~,n~-Prn~f~ with issues of data partitioning, as ~ attached herewi th as Appendi~c each of the processors has access to and shares the same, consistent global memory.
However, SMP system5 suffer disadvantages in that system bandwidth and scalability are limited. - Although multiprocessor systems may be capable of PY'~-llt;n~ many mi 11 ;onc of instructioLs per second, the shared memory resources and the system bus ~,nnPct; n~ the multiprocessors to the memory presents a bottleneck as complex processing loads are spread among more processors, each needing acces3 to the global memory. As the complexity of sof tware running on SMP ' s increases, resulting in a need for more processors in a system to perform complex tasks or portions thereof, the demand for memory access increases accordlngly. Thus more processors doeEi not neces_arily translate into faster processlng, i.e. typical SMP systems are not scalable. ~hat is, processing per~ormance actually decreases at some polnt as more procescors are added to the sy3tem to procesa more compleY tasks. ~he decrease in performa~ce is due to the bottleneck created by the increased number of processors needing access to the memory and the tran3port r ~ch~n; ~m, e.g. bus, to and from memory.
Alternative arc_itecture3 are known which seek to reIieve the bandwidth bottleneck. Computer architectures based on Cache Coherent Non-Uni~orm Memory Access (CCN[~MA) are kno~n in the art as an exterLsion of SMP that supplants SMP' s "shared memory architecture. n CC~7MA architectures are typically characterized as having distributed global memory. Generally, CCN[~MA ~ h; nl~c co~1!~ ~ ~ nu~r o~ proce~ g Dodes ~o~cted tbrougù ~ ùigh bandwidth, low latency interc-oinection network. The processing nodes are each comprised oi~ one or more high-performance processors, associated cache, and a portion o:E a global shared memory. Each node or group of processors has near and ~ar ~:
memory, near memory being re8ident on the same physical circuit board, directly accessible to the l~ode's processors through a local bus, and ~ar memory being resident on other nodes and being accessible over a main system interconnect or bzl~kh/~n~. Cache coherence, i.e. the consistency and integrity of shared data stored in multiple caches, is typically ~;nt~ln.o~ by a directory-based, write-invalidate cache coherency protocol, as known in the art. To determine the status of caches, each processing node typically has a directory memory corresponding to: :
it~ respective portion of the shared physical memory. For each line or discrete addressa~le block of memory, the directory memory ~3tores an indication of remote nodes that are caching that same line One kno~qn implementation of the CCNUM~ architecture is in a scalable, shared memory multiprocessor system known as "DASH"
(Directory Architecture for SHared memory), developed at the Computer Sy3tems Laboratory at Stanford ~niverGity. The D~3H
architecture, described in The Directory-Based Cache Cohererce Protocol for the DASH Multiproce6sor, Lenoski et al., Proceedings of the 14th I~t'l Symp. Computer Architecture, IEEE CS Press, 1990, pp 148-159, which is incorporated herein by re~erence, consists o~ a number o~ processing nodes connected through a high-bandwidth, low-latency interconnection network. A8 is 2 ~ 83223 typical in CCNllMA ~-~h;n~.~, the physical memory is distributed among the nodea of the multiprocessor, with all memory accessible to each node. Each processing node consists of: a small number of high-performance processors; their respective individual caches; a portion of the shared-memory; a common cache for pending remote accesses; and a directory controller interfacing the node to the network.
A weakly ordered memory consistency model is implemented in DASH, which puts a significant burden relating to memory consistency on software developed for the DASH system. In effecting memory consistency in the DASH impl~ ; on of CCN~MA
architecture, a "release consistency" model is implemented, which is characterized in that memory operations issued by a given processor are allowed to be observed and completed out of order with respect to other processors. Ordering of memory operations is only effected under limited circumstances. Protection of variables in memory is left to the programmer developing software for the DASH multiprocessor, as under the DASH release consistency model the hardware only ensures that memory operations are completed prior to releasing a lock on the pertinent memory. Accordingly, the release consistency model for memory consistency in DASH is a weakly ordered model. It is generally accepted that the DASH model for impl~- i ng- memory correctness significantly complicates ~L~L 'n~ and cache coherency .
A bus-based snoopy scheme, as known in the art, is used to keep caches coherent within a node on the DASH system, while 2 1 83223 ~
inter-node cache consistency is r~;nti3;n~rl using directory memories to effect a distributed directory-based coherence protocol. In D SH, each processing node has a directory memory corresponding to its portion of the shared physical memory. For each memory block, the directory memory stores the identities of all remote nodes caching that block. Using the directory memory, a node writing a location can send point-to-point invalidation or update messages to those processors that are actually caching that block. This is in contrast to the invalidating broadcast required by the snoopy protocol. The scalability of DASH depends on this ability to avoid broadcasts on an inter-node basis.
The DASH architecture relies on the point-to-point invalidation or update mechanism to send messages to processors that are caching data that needs to be updated. All co~erence ~ ~=
operations, e.g. invalidates and updates, are issued point-to-point, sequentially, and must be positively acknowledged in a sequential manner by each of the remote processors before the issuing processor can proceed with an operation. This DASE~
implementation significantly negatively affects performance and commercial applicability. As acknowledged in the above-referenced publication describing DASH, ~erialization in the invalidate ~ n; r~" negatively affects performance by increasing queuing delays and thus the latency of memory requests.
DASH provides ~fences~' which can be placed by software to stall processors until pending memory operations have been completed, or which can be implemented to delay write operations until the completion of a pending write. The DASH CCN[~MA

2 ~ 83223 - -architecture generally presents an environment wherein a signi~icant burden is placed on software developers to ensure the protection and consistency of data available to the multiple processors in the system.
The DASH architecture, and more specif ically the memory consistency and cache coherency merh~n; r-- also disadvantageously introduce opportunities for livelock and deadlock situations which may, respectively, significantly delay or terminally lock proce3sor computational progress. The multiple processors in DASH
are interc~nnP~t~-l at the hardware level by two mesh networks, one to handle incoming messages, and the other to handle outgoing communications. However, the consumption of an ;n~ ;n~ message may require the generation of an outgoing message, which can result in circular dependencies between limited buf fers in two or - -more nodes, which can cause deadlock.
DASH further dedicates the meshes for particular service = -the first mesh to handle communications classified a~ reque~t messages, e.g. read and read-exclusive requests and invalidation requests, and the second mesh to handle reply mes~ages, e.g. read and read-exclusive replies and invalidation acknowledges, in an effort to eliminate request-reply circular dependencies.
~owever, request-request circular dep~n~1~n- ;es still present a potential problem, which is provided for in the DASH
impl -~;on by increasing the size of input and output FIFOs, which does not necessarily solve the problem but may make it occur less frequently. The DASH architecture also includes a time-out mechanism that does not work to avoid deadlocks, but merely ~ tes deadlocks by breaking them after a selected time period. Although the D~SH implementation includes some hardware and protocol features aimed at eliminating processor deadlocks, heavy reliance on software for memory consistency, and hardware impl: i~t;ons that require express acknowledgements and incorporate various retry - ~-h~n; cm~ I presents an environment wherein circular dependencie3 can easily develop. Accordingly, forward progress is not optimized for in the DASH CCNUMA
architecture .
The CCNUMA architecture is implemented in a commercial multiprocessor in a Sequent Computer Systems, Inc. machine referred to as 'rSting" which is described in S~ING: A CCNUMA
Computer System for the Commercial Marketplace, L. Lovett and R.
Clapp, ISCA `96, May 1996 incorporated herein by reference. The Sting ar~ h; t~--t-lre is based on a collection of nodes consisting of complete Standardized High Volume (SHV), four processor SMP
machines, each cnnt~;nin~ processors, caches, memories and I/0 busses. Intra-processor cache coherency is maintained by a standard snoopy cache protocol, as known in the art. The SHVs are configured with a "bridge board~ that interconnects the local busses of plural nodes and provides a remote cache which -m~;nt~;n~ copies of blocks fetched from remote memories. The bridge board interfaces the caches and memories on the local node with caches and memories on remote nodes. Inter-node cache .. ._:
coherency is managed via a directory based cache protocol, based on the Scalable Coherent Interface (SCI) specification, IEEE
1396. The SCI protocol, as known in the art, is implemented via -a commercially available device that provides a linked list and packet level protocol for an SCI network. The chip include~3 FIFo buffers and Send and Receive queueæ. Incoming packets are routed onto appropriate Receive ~r~ueueæ, while the Send queues hold rer~uest and response packets waiting to be inserted on an output link. Packets remain on the Se~d riueues awaiting a positive acknowledgement or "positive" echo from the destination as an indication that the destination has room to accept the packet.
If the destini~t;~n does not have r~ueue space to accept a packet, a negative echo is returned and subse~r,uent attempts are made to send the packet using an SCI retry protocol.
The linked list implementation of the SCI based coherency m~rh~n;em pregentg a disadvantage in that the links must be traversed in a ser~uential or serial manner, which negatively impacts the speed at which packets are sent and received. The ~=
retry mechanism has the potential to create circular r.Q~l1n~l~nrieæ
that can result in livelock or deadlock situations. The linked list ;mrll -ntation also disadvantageously rer1uires significant amounts of memory, in this remote cache memory, to store forward and backpointers necessary to effect the list.
Machines based on CCNUM~ architecture presently known - in the art do not take into consideration to any great extent respective workloads of each of the multiple processors as the r-rh;n~ are scaled up, i.e. as more processors or nodes are added.
Disadvantageously, as more processors are added in known CCNUMA
multiprocessors, limited, if any, efforts are made to ensure that processing is balanced among the job processors sharing processing tasks. Moreover, ~n 3uch 8ystems, when related tasks are dlstributed across multiple nodes for proceqsing, related data needed for proce5sing tell~ to be spread across the system as well, resulting in an undesirably high level of data swappiny in and out of system caches.
Methods and operating 6ystems are known for improving efficiency of operation in multiprocessor systems by improving affinity of related tasks and data with a group of processors for proces3ing with reduced overhead, such as described in commonly assigned U.S Patent Application Serial No. 08/187,665, filed January 26, 1994, which is hereby incorporated herein by reference Further, as described in commonly assigned U.S Patent Application Serial No. 08/49~,357, filed June 23, 1995, which is incorporated herein by reference, me~h~nif~-q are known for 8upporting memory migration and seamless integration of various memory resources of a NUMA multiprocessing system. However, known CC~ hi n~q generally do not i"Cl~L~Ldte me~ h~ni qTnq in their architectures for such; ~ LJV~ ' q in load balancing and sf~h ~ l; ng .
S~MMARY OF THE INVENTION
The present invention provide~q a highly F~ n~ h~ e, highly efficient CCN~ processing system based on a hardware architecture that minimizes system bus ~ntf~n~ n, ma~eimizes processing forward progress by maintaining strong ordering and avoiding retries, and implements a full-map directory structure ca~ ~e col~ren~ p - oco~ .

According to the invention, a Cache Coherent Non-Uniform Memory Access (CCN[lMA) architecture is implemented in a system comprising a plurality of integrated modules each consisting of a moth~rho~rd and two daughterboards. The daughterboards, which plug into the moth~rho~rd, each contain two Job Processors (JPs), cache memory, and input/output (I/0) capabilities. Located directly on the moth-~rho~rd are additional integrated I/0 ~ h;l;tie8 in the form of two Small Computer System Interfaces (SCSI) and one Local Area Network (LAN) interface. The moth~rho~rd (sometimes referred to as the "Madre" or "Sierra Madre" ) includes thereon main memory, a memory controller (MC) and directory Dynamic Random Access Memories (DRAMs) for cache coherency. The motherboard also, nrl ~ GTL backpanel interface logic, system clock generation and distribution logic, and local resources ;n~ l;n~ a micro-controller for system initialization.
A crossbar switch (sAXsAR) is implemented on the motherboard to connect the various logic blocks together. A fully loaded mothF~rh~-~rd contains 2 JP daughterboards, two Peripheral nPn~ Interface (PCI) expansion boards, and eight 64MB SIMMs, for a total of 512MB of main memory.
Each daughterboard contains two 50MHz Motorola 88110 ~P
complexes. Each 88110 complex includes an associated 88410 cache controller and lMB Level 2 Cache. A single 16MB third level write-through cache is also provided and is controlled by a third level cache controller (TI,CC) in the form of a TLCC application specific integrated circuit (ASIC). The third level cache is shared by both JPs, and is built using DRAMs. The DRAMs are 2 ~ 83223 .
protected by error correction code (ECC) which is generated and checked by two error detection "EDiiAC" ASICs under the control of the TLCC. Static Random Accesa Memories (SRAMs) are used to store cache tags for the third level cache . A Cache Interf ace (CI) ASIC is used as an interface to translate between a packet-switched local (PIX) bus protocol on the motherboard and the 8~410 cache controller bus protocol on the JP Daughter Board.
The architecture according to the invention minimizes system bus contention by impl~ nt; n~ four backplane or system busses referred to as "PIBus". Each of the four PIBus interconnects is a 64 bit wide, multiplexed control/address/data wire. Multiple system busses may be implemented to provide one, two or four backplane or system busses, depending upon the particular implementation and the related coherency protocol(s) . The PIBus, in an illustrative ~ t described hereinafter is used in implA~Ant;n~ a directed-broadcast system bus transfer protocol that limits system wide resource overhead to modules or nodes targeted to service a request.
Throughput on the PIBus is maximized, and transfer 1 AtPn~Ai Pq m;n;m;7_~ by a memory based, full-map directory structure cache coherency protocol, that m;n;m; 7_A snooping. The full-map directory structure is m~;nt~A;nP~l in the memory modules that are accessible over the PIBus. Each directory contains one entry per cache line in the corrPApnn~l; n~ memory. The directory entries contain coherency information for their respective cache lines.
The directory entry fields include: valid bits; modified bit;
l ock ~it; unordered ~it and an ordered ~l t . All memory ad es ~ee on the PIBus are routed to the appropriate memory module. Each address is put in a queue ~or ~ervice by the memory Each address is looked up in the directory and the memory will generate a response based on the directory rt~nt~nt~ and the type of access requested. The memory will send a response which will be picked up only by those nodes that have a valid copy of the accessed cache line, i e a directed broadcast. The responses from memory issued in the directed broadcast trans~er protocol include inv~ t~c, copyback and read data. The directed broadcast transfer protocol implementation according to the invention avoids unnecessary processor stalls in processors whose caches do not have a copy of the line being addressed, by forwarding ~'snoop" traffic in a manner that it will only affect those nodes that have a valid copy of the line being addressed The memory uses the valid bit f ield in the directory as an indicator as to which nodes have a copy of an accessed cache 1 ine Ordering of events occurring with re~pect to the backbone or ba~ nf~ PIBus is effected so as to maximi~e processing forward progress by ~';nt~;n;n~ strong ordering and avoiding retries All o~ the operations initiated by one requester must appear to complete in the same order to all other requesters, i . e cache, processor(s), I/O, in the system. Events are ordered by adhering to a three level priority scheme wherein events are ordered low, medium or high. Strict rules are implemented to ensure event ordering and to ef f ect coherent ordering on the PIBus between ::
packet~ ~ dii~erent pr ~itle~

The three level priority 3cheme according to the invention, work~: in conjunction with arbitration ~erviceE3, provided by an "ORB" ASIC, to effectively guarantee forward progres3 and sub3tantially avoid livelock/deadlock ~cenarios. The arbitration h~n; f~ i6 a function of the type of bus involved, and accordingly there i3 arbitration associated with the local PIX
bus, i . e . local to the motherboard, and arbitration associated with access to the system wide or PIBus.
The motherboard level PIX busses each use a centralized arbitration scheme wherein each bus requester sends the ORB ASIC _ information about the requested packet type and about the state of its input queues. The ORB ASIC implements a fairness algorithm and grants bus requests based on such information received from requesters, and based on other information sampled from requesters. The ORB samples a mix of windowed and unwindowed reque~ters every bus clock cycle. Windowed reque3ts have associated therewith particular time periods during which the request signal must be sampled and a grant issued and prioritized in accordance with predetermined parameters. At the same time that PIX bus requesters are being sampled, the ORB
samples the busy signals of the potential bus targets. Dur~ng the cycle after ~mrl ;n~, the ORB chooses one low priority requester, one medium priority requester and one high priority requester as potential bus grant ~ n~ e5, based on: ordering information from a low and a medium request tracking FIFO; the state of the Busy signals sampled; and a "shuffle code" which ensures f~;rnP~s of bus grants. Further selection for a single candidate for the 2 1 83223 .=~=~
PIXbu6 grant involves a priorit; 7~t;~n algorithm in which high priority requests have priority over medium reque3ts which have priority over low, and in which medium level requests are subjected to a "deli-counter-tiCket" style prioritization scheme that r-;nt;~;r~ time ordering o~ transactions. ~igh and low priority requests are not 6trictly granted based on time ordering The system wide backpanel, or PIBus arbitration mechanism is handled 3eparately for each of the four PIBusses. The arbitration/grant logic is distributed across respective "PI"
ASICs, which facilitates traffic between the PIX bus and the PIBus in both directions. PIBus arbitration i3 based on a "windowed-priority" distributed arbitration with fairness, in which there are specific times, i.e. windows, during which request signals are sampled and then grants associated with each request are prioritized. The requests are prioritized based on a shuffle code that ensures fairness. Since the arbitration logic is distributed each PIBus requester knows the request status of all the other requesters on the bus, and all the local requester only needs to know if a particular grant is for itself or another requester .
The "BI~XBAR" crossbar switch is implemented on the motherboard to connect the various logic blocks of the CCNUMA
architecture according to the invention together, and to propagate transfers between the busses on the moth-rho~rd and the daughterboard. The crossbar switch supports six 19 bit bidirectional ports and two 18 bit bidirectional ports, and is controlled by a three bit port gelect and an eight bit enable control. The port select bits control selection of eight potential sources ~or outputs, and also enable selected output ports .
Features of the invention include a highly efficient, high performance multiprocessor distributed memory system implemented with a high speed, high bandwidth, extensible system interconnect that has up to ~our busses available for multiprocessor communication. The architecture provides a highly scalable open- =
ended architecture. In contrast to the typical bus-snooping protocols known in the art, in which each cache mu6t look up all addresses on the bus, the directed broadcast protocol according to the invention increases system performance by not inter~ering with nodes that do not have a copy of an accessed cache line.
Accordingly, unnecessary processor stalls are avoided. The CCNUMA system implementation according to the invention maximizes forward progress by avoiding retries and maintaining strong ordering and coherency, avoiding deadly embraces. Strong ordering, i.e. completion of any two consecutive operations initiated by a single re~uester being observable by any other entity, i.e. cache, processor, I/0, only in their original~order, takes much of the burden and complexity relating to memory consistency out of the hands of software implementations and rest it with hardware in a manner that makes for greater consistency and predictability. The system wide or backplane bus distributed arbitration mechanism ensures fairness in bus accesses while m~;ntA;n;n~ ordering to a high degree. Node-local centralized 2 1 83223 :-local bus arbitration effects highly efficient and fair access to local resources.

BRIEF DESCRIPTION OF THE DRAWING
These and other features and advantage~ of the present invention will become more apparent from the following detailed description taken in conjunction with the accompanying drawing in which:
Fig. 1 is a high level block diagram of a multiprocessor system impl -~ -nt; ng a CC~lMA architecture according to the invention;
Fig. 2 is a block diagram of a motherboard of the multiprocessor system of Fig. 1;
Fig. 3 is a block diagram of one daughter board for : :
connection to the moth~rho~rd of Fig. 2;
Fig. 4 i~ a memory maI? of distributed ~ystem memory distributed among the motherboards of the multiproces~or system of Fig. 1;
Fig. 5 is a block diagrammatic overview of a PI asic controlling acce~s to and from a system backplane or PIBus;
Fig. 6 is a Table representing PIXBUS Operation Decode and Queue Priority Assignment;
Fig. 7 is a block diagram of a PI Header Buffer and Data Queue;
Pig. 8 is a block diagram of PI arbitration;
Fig. 9 is a high level block diagram of the memory complex of the multiprocessor system of Fig. 1;

Fig. lO i3 a block diagram of a memory controller ASIC;
Figs. 11-24 are 3tate machine diagram3 for state machines impl~m~ont;ng functionality in the memory controller of Fig. 10;
Fig. 25 is a block diagrar.. of an Error Detection and Control device ( "EDiiAC" or "13DAC" ) ASIC;
Fig. 26A and 26B are Tables of Cache Request Transitions;
Fig. 27 is a Table of Cache Inhibited Re~uest Transitions;
Fig. 28 is a block diagram of an OR3 ASIC;
Fig. 29 is a state machine diagram for a TR TRAC~tER state ~=
machine implemented in the ORB ASIC of Fig. 28;
Fig. 30 i8 a block diagram of a ;3axBar crossbar switch;
Fig. 31A, 31B and 31C illustrate crossbar source selection, PORT_OE assignrents, and port to bu~ mapping of the BaxBar crossbar switch, respectively;
Fig. 32 is a block diagram of a GG ASIC;
Fig. 33 is a block diagram of an RI ASIC;
Fig. 34-36 are state r~-h;nl~ for resources operation request, resource bus re~uest and resources looping, respectively, implemented in the RI ASIC of Fig. 33;
Fig. 37 is a block diagram of a CI ASIC; and Fig. 38 is a block diagram of a TLCC ASIC.

DETAILED DESCRIPTION
As illu~trated in Fig. l, a CCNUMA proce~ing system according to the present invention includes a plurality of motherboards (52) interconnected by a backplane (54). The backplane includes 4 PI buses (56), which provide communication 1~

between the motherboards (52). The PI busses (56) are all identical, allowing up to i~our sets of mother~oards (52) to transfer data simultaneously. Each motherboard (52) is a standard module, allowing the pracessing system (50) to contain virtually any number of motherhoards required for the processing load. Moth~rh~1~rds (52) are easily added to increase the processing power.
A single motherboard (52), as illustrated in Fig. 2 , is an integrated module cr~nti~;n;n~ processors, memory, and I/0. The processors, memory, and I/0 expansion facilities are all cnnt~;nP~l on separate ~ ht~r boards or SIMMs (Single Inline Memory Modules ) which plug into the motherboard . Located directly on the motherboard there are additional integrated I/0 facilities, including 2 SCSI (Small Computer System Interface) and 1 LAN (Local Area Network). The motherboard also includes a memory controller and directory DRAMs (for cache coherency), Local Resources ;n~ ;n~ a micro-controller for system init;i~1;7~tion, GTL backpanel interface logic, System Clock generation and distribution logic, and a Crossbar switch to connect the various logic blocks together.
A fully loaded motherboard (52) ~ nt::~;nc 2 processor ~
Daughter Boards (58a), (58b), two PCI expansion boards (60a), (60b), and 512MB of main memory (62) comprised of eight 64MB
SIMMs. Many of the functional modules are implemented using ASICs (Application Specific Integrated Circuits) .

Functional Overview PIBus The primary communication between processors across the backpanel is accomplished usin~ the PIBus Interface. A single PIBus (56) con6ists of a multiplexed 72-bit Address CTRL/Data bus and associated arbitration and control signalR. Each motherboard (52) implements 4 identical PIBus Interfaces u3ing respective PI
ASICs (64a-c), as will be described hereinafter. System traffic _:
is partitioned across the 4 PI Busses (56) by address, so that each bus (56) is approximately eolually utilized. The PIBus (56) is impl ~mf~nt~ using GTL logic. This is a logic level/switching standard that allows for very high speed communication across a heavily loaded backpanel. The logic signals switch between 0.4 and 1. 2V.

PIXBus The PIXbus (66) is the name given to the bus protocol that is used to connect the functional element8 of the motherboard (52) together. This is a packetized 72 bit wide multiplexed address/data bus using a similar protocol to that which the PIBus (56) uses across the backpanel (54). This bus (66) is actually implemented as a series of busses that connect into/out of a central crossbar switch (68), referred to in some places herein ~-a3 the "BaxBar". The PIXbu3 i3 implemented, using LVTT~
technology, via 4 BaxBar ASICs (70). A major portion of the PIX
Bus (66) is an interconnection between the BaxBar ASICs (70) and the four PI (PIBus Interface) ASIC3 (64a-d). This bus (66) uses AC Termination for signal integrity and timing. Arbitration for the PIXBus is provided by an ORB ASIC (98), as described in detail hereinafter. The complete PIXBus is actually comprised of a plurality of individual busses interconnecting the functional components on the motherboard of the system according to the invention, including:
an RI bus (72) portion of the PIXBus which connects the BaxBar ASICs (70) to an RI (Resources Interface) ASIC (74) and to debug buffers and a debug connector;
a GG bus (76) portion of the PIXBus which connects the BaxBar ASICs (70) to two GG (Golden Gate, I/0 Interface) ASICs (78a-b). This bus uses series resistors near to the GG for Signal Integrity/timing impLuv, -nt;
an MC Bus (80) portion of the PIXBus connects the BaxBar ASICs (70) to a MC (Memory Controller) ASIC (82);
a CI0 Bus (88a) portion of the PIXBus connects the BaxBar ASICs (70) to a first daughterboard (58a);
a CI1 Bus (88b) portion of the PIXBus connects the BaxBar ASICs (70) to a second daughterboard (58b); and MUD_~ (92) and MI~D_X Bus (94) portions of the PIXBus which are two busses used to connect the BaxBar ASICs (70) to two EDiiAC ASICs (96) facilitating data integrity of data from the memory system which is generally comprised of memory (62) and directory tag memory (86).

MemorY SubsYstem . --The Memory subsystem on the~motherboard (52) is capable of providing up to 512MB of system memory for the processing system (50) . Actual DRAM storage is provided by up to eight 16M (36) standard SIMMs (62). One mother~oard (52) can be populated with 0, 4 or 8 SIMMs. Data is typically accessed in full 64 Byte Cache blocks, but may also be read and written in double word or 64 bit quantities. The memory data is protected using ECC (Error -~
Correction Code) which is generated for data correction using two of the EDiiAC ASICs (96a-b). Each EDiiAC (96) provides a 64 bit data path and the two are used to interleave within a cache block to maximize performance.
In addition to the main memory data store, the memory subsystem also c~ntil;nc storage for a full map directory (86) which is used to maintain cache coherency, as described in detail hereinafter. The directory (86) is implemented using 4Mx4 DRAMs attached directly to the motherboard (52) . The directory is organized as a 8Mx17 storage using 11 data bit~ and 6 ECC bits.
The ECC codes for both the directory and the main data store are capable of correcting all single bit errors and detecting all double-bit errors.

I /O Subsystem The I/O subsystem of the motherboard (52) is comprised of two independent PCI ~ nnF~l c (79a-b) operating at 25M~z . Each PCI
channel (79) is interfaced to the PIX bus (66) using a single GG
ASIC (78) which also contains an integrated cache for I/O
transfers. The GG ASIC (78) r~nt~;nc all necessary logic to provide the interface between the 50MHz PIX bus (66) and t~e 25~z PCI bus (78), including PCI arbitration. The GG ASIC (78) al60 serves as a gatherer of interrupts ~rom system wide areas and combines these interrupta and directs them to the appropriate procesbor .
Each of the two PCI busses (79) is connected to an ::~
integrated SCSI interface (98), and to a single expansion slot (60). One of the two PCI busses (79a) also ~ntA1n~ an integrated lOMb LAN interface (100). The two SCSI interface3 (98a-b) are _ implemented usirLg the NCR825 Integrated PCI-SCSI controller as a pair of Wide Differential SCSI-2 interfaces. Each controller iB
connected through a set o~ differential transceivers to a 68 pin High Density SCSI connector (not shown) . The ~ingle I,AN
connection (100) is made using the DECchip 21040 PCI-Ethernet controller. Thi~ provides a single chip integrated LAN which is connected to an RJ-45 connector (not shown) .
The two expansion PCI slots are provided for by attaching a PCI Daughterpanel to the motherboard. This small board provides a connection between high-density AMP connectors and a standard PCI
card connector. The board also allows the two PCI cards to be plugged in parallel to the mo~hPrh~-Ard. The motherboard design has space to allow two half size PCI cards to be plugged into =-each mo~h~rhoArd. Further PCI expansion is achieved by using a --PCI expansion chassis, and plugging a host-side adapter cable into one of the motherboard expansion slots.

ResQurcçs Each motherboard (52) c'~nt~n~ all the local resources that are required of a system (50), with the exception of the System ID PROM (not shown) which is ~ nt~inpd on the h~-kr~nPl (54) The resource logic on the mothPrho~rd (52) includes a Microcontroller (102), state-recording EEPROMs (Electrically Erasable PL~Y1 hl e Read Only Memory, not shown), NOVRAM
(Non-Volatile R~M), and SCAN interface logic (104) which is described in detail in copending commonly owned PCT Application Serial No. (Atty Docket No. 158/46, 642), HIGH AVAILABII-ITY .=
C(J~ll ul~lt SYSTEM AND METHODS RELATED THERETO, which is incorporated herein by reference. The resource logic is duplicated on each motherboard (52), but a working system (50) only ever uses the resources section of the board in either slotO
or slotl of the backplane system (54) as system wide Global Resources. An Rr (Resources Interface~ ASIC (74) provides the interface between the PIXbus (72) and the devices within the Resources section on the mothPrho~rd (52) .
The Microcontroller (102) in the resources section is used to perform low- level early power-up diagnostics of the system (50) prior to de-asserting RESET to the processors. It is alco the controller/engine used for all scan operations, as described in the referenced application. Generally, scan is used to conf igure the ASICs durlng power up, communicate with the power supplies and blowers, communicate with the various ID PROMs within the system, and to dump failure information after a hardware f,~tal error. If a processor needs to do a scan operation, it make3 a request to the micro-controller (102) which can then per~orm the required operation.
The Resources sections also provides a DUART ~Dual Asynchronous Universal Receiver and Transmitter, not shown) for implemi~nt;n~ 3 UART ports for the system (50) . A fourth UART port is also used as part of a loopback circuit to allow a processor to monitor what is being driven on the main system console (not shown) .
The resources section also provides the logic to do JTAG
based scan of all the ASICs in the system (50), power supplies, blowers, SEEPROM and SYSID PROM, in accordance with the IEEE
1149.1 standard. The logic is in place to allow the system to be scanned either during Manufacturing Test using an ~t~rn;3l tester (e.g. ASSET) or during normal operation/power-up using the microcontroller on any mothf~rho~rd in the system. This logic allows simple boundary scan te~ting to be used as part of the power-up system testing to detect and isolate possible faulty , nmr,-n-~nt~.
Additionally, Macro Array CMOS ~Iigh Density devices (MACHs) which are high density electrically erasable CMOS programmable logic, on the resource bus can be ~L~JyL d using JTAG from an external connector. Also, the microcontroller can be uaed with an external connector to program the EEPROMs on the resource bus.
Thi~ allows manufacturing to assemble the boards with blank M~CHs and EEPROMs and then "burn" them as part of the test procedure, rather than stocking "burned" versions of the parts to be installed during assembly. This "in circuit ~L~JyL hilit feature also makes updates for ECO activity as simple as plugging in the p~yL n~ rnnn~,~tnr and re-~uy~ in~ the parts, rather than removing the old part and installing a new part in its place .

Clocks Each mothf~rhn~rd (52) r nnt~;nR the necessary logic to generate and distribute both 50MHz and 12.5MXz clocks to the other boards in the system (not shown). It also .~nnt~;nR the logic to distribute the received clocks from the h~kri,nf~l to all appropriate clock loads with a minimum of added skew. The clocks for a system (50) will always be sourced by either the mothF~rhni~rd (52) in slot O or the moth~rho~rd (52) in slot 1.
Each slot receives clocks from both slots and selects clocks from the appropriate slot (slot O unless the clocks from slot O have f ailed) .
Each motherboard ~nnt~;nR two PECL crystals used for ~ -generation of all system clocks. These two crystals are a lOOMHz nominal clock crystal and a 105MHz margin clock crystal. Both of these crystals are passed through a divide by two circuit to produce 50 and 52.5MHz system clocks with 5096 duty cycle. These two clocks are muxed together to produce the system clock for the system (50). The multiplexing is controlled from the resources section and allows either nominal or margin clocks to be used by the system. The chosen clock is buffered and 8 differential copies (one for each slot in a system) are driven out to the =~
backpanel (PECL_CLK_OUT) . A ninth copy of the system clock is further divided to produce a nnn;n~lly 12.5MHz signal which is used to generate the 12 . 5M~Iz scan/resources clock on each moth~rhn~rd. Eight differential copies of this signal are also distributed to the h~-kr~nPl Each moth~rhn~rd receives two 50MHz syatem clocks from the h~kr~nP7 All fir3t level differential pairs are routed to the same length, and all second level differential pairs are routed to the same length to reduce clock skew.
50M~Iz TTL clocka are produced uaing a translator/distribution device, auch as a 5ynergy Copyclock as known in the art. Thi3 device receives a differential PECL clock and translates it to TTL. An external feedback loop i8 used with the tran31ator to add phaae delay to the output clocks until the input of the f eedback clock is in phaae with the input clock .
This has the net effect of ~1 im;n~t;n~ skew between the differential PECL clock distributed to the A5ICs and the TTL
clock distri})uted to the EDiiAC~ (96) and synchronizing buffers.
The PECL clock lines are thevenin terminated to VDD (3 . 3V) using 62 ohm over 620 ohm resistors. The TTL clocks are source series tPrm; n~ted inside the translator chip .
Each motherboard (52) generates a 25MHz clock that is~used for the PCI devices. This clock is derived from the 50MEIz syatem clock divided by two, and ia then PECL to TTL tranalated by the tranalator. The length of the feedback loop for the translator waa calculated to provide the deaired skew correction to make the 25ME~z clock have the minimum akew in relation to the 50M~z clock.

All the clock lines are thevenin t~rmi n~t~i the same way as the 50MHz clocks with the exception o~ the expansion clocks which are eeries terminated using 51 ohm resistors.
Each motherboard (52) r~nti:l;n.q logic that allo~s it to detect and signal that there is a problem with the clock distribution logic. In slots 0 and 1 this logic also forms a means to have the clock distribution automatically failover from clocks in slot 0 to clocks in slot 1, as described in the referenced PCT application.

Dauqhter Boards The system Daughter Boards (58), as illustrated in Fig 3., each contain two 50MHz Motorola 88110 processor complexes. Each 88110 processor (110) has an associated 88410 cache controller (112) and lMB Level 2 Cache (114) built using eight MCM67D709 SRAMs. A single 16MB third level write-through cache (116) is also provided and is controlled by a TLCC (Third Level Cache Controller) ASIC (118). The third level cache (116) is shared by both processors (110), and is built using ten 60ns lMx16 DRAMs.
The DRAMs are protected by ECC (Error Correction Code), which is generated and checked by two EDiiAC ASICs (120) under the control of the TLCC ASIC (118) . Tag memory (122) built with three 12ns 256Rx4 SRAMs is used to store the cache tags for the Third Level Cache. A CI ASIC (124) is used to translate between the packet-switched PIX bus protocol on the motherboard (52) and the 88410 cache controller data bus (126) protocol on the Daughter Board (58) .

-System Functional Description PIX Bus Interf ace The system according to the inYention uses a packetized split reæponse bus protocol to ~ ; cate between the processors and memory or I/O. The ~ystem also uses a Dlrectory based cache coherency mechanism to eliminate snoop cycles on the main system busses. The CI ASIC's (124) main function is to serYe as a translation/sequencer between the PIX bus protocol that is used on the motherboard (52) and the 88410 bus protocol on the daughterboard (58). All off board communication with the exception of Clocks and Reset are part of the PIX bus and is connected directly to the CI. The PIX bus (88) consists of a 64 bit address/data bus with 8 bits of parity, 2 additional "bussed"
control signals that indicate the length of the current packet and an error indication. There are an additional ll signals that are used to provide arbitration control. The eIX bus categorizes different bus operations into three different priorities, LOW, MED, and HIGH, and each PIX bus entity implements queues as appropriate to allow it to recelve multiple packets of each priority, as described hereinafter. The CI ASIC (124) only receives Low or Med packets and generates only Low and High packet s .

Cache ~3us Interf ace The two CPU complexes, CI, and TLC, all on the daughterboard, are connected together by the S_D bus (126), consisting of 64 bits of data and 8 parity bits, and the S_A bus 2~ 83223 (128) which consists of 32 bits of address and additional control lines (130). Arbitration for access to the cache bus is performed by the CI ASIC (124). There are three possible bus masters; each of the two processors (110) for read and write operations (data transfers to or from cache) and the CI (124) for snoop operations (no data transfer) . The TLC (118) is always a bus slave. Due to pin limitations, the CI ASIC (124) multiplexes the 32 bit S_A
(128) and 32 bits of the S D bus (126) into a 32 bit S_AD bus (134) . This multiplexing is done using four LVT162245 devices (134 ) .
When an 88110 processor (110) detects a parity error during a read operation it asserts a P_BPE_N signal for a single cycle.
This ~ignal is monitored by the CI ASIC (124) and will cause a Fatal Error to be asserted when detected.
Because the system coherency is ~ nti~;n~d by the MC (82, Fig. 2) and the directory, the CPU complexes must be prevented from modifying a line of data that was previously read in. This is done by causing all read requests to be marked as SH~RED in the 88410 (112, Fig. 3), and 88110 (110). In hardware, this is accomplished by pulling down S SHRD_N and S TSHRD_N pins on the 88410 (112) and the P_SHD_N signal on the 88110 (110) .

Third Level Cache The Third Level Cache (TLC) on the daughterboard (58) is a 16MB direct mapped cache implemented using lMx16 DRAMs. The cache is; ~ l Pnl~nted using a write-through policy. This means that the cache never ~-r.nt~;n~ the only modified copy of a cache line in 2 ~ 83223 the system, and as such only ever sources data to either of the two processors (110) on the daughterboard (5~3) as the result of a read request.
The data store for the cache is constructed from 10 lMx16 60ns DRAMs (116). These DRAMs are organized as two banks of 5 DR~Ms which contain 64 bits of data plus 8 bits of ECC. Each bank of DRAMs is associated with an EDiiAC ASIC (120a-b) which is ueed to buffer the data and to perform error detection and correction of data read f rom the cache . The system outputs of the two EDiiACs are multiplexed down to the 64bit S_D bus (126) using six A;3T16260 2:1 latching multiplexers (138). The tag store for the cache is implemented using three 256Kx4 12ns SRAMs (122) . Control for the whole TLC i6 provided by the TLCC ASIC (118), as described in detail hereinafter. Due to timing constraints on the S_D bus (126) the output enable and mux select for the A3T16260 muxes (138) are driven by an FCT374 octal register (not shown). The inputs to the register are driven out one cycle early by the TLCC ASIC (118). The latch enables used to latch data from the S_D bus (126) also use ~ l logic. They are derived from the 50Mhz clock, described in the clock distribution section.
The data bits into the low EDiiAC (120b), accessed when a signal S_A[3] is a 0, are logically connected in reverse order, i.e. SD_L[0] iS connected to pin SD63, SD_L[1] to pin SD62, SD_L [63] to pin SD0 . The parity bits are also reversed to keep the parity bits with their corresponding byte of data. This reversal of bits MUST be taken into account by any software that does diagnostic reads and writes of the EDiiACs (120).

The Tl.CC (118) is designed to operate correctly with several different types of DRAMs. It i6 capable of supporting both the lK
and 4K refresh versions of 16 MBit DRAMs. The 4K refresh DRAMs use 12 row address bits and 8 column bits to addresa the DRAM
cell. The lK refresh parts use 10 row and 10 column bits. To allow the use of either DRAM, row addre3s lines A10 and A11 are driven out on A8 and A9 during the column address phase. These bits are ignored by the gK refresh ~ ^ntc in the column address phase, and the A10 and A11 line3 are No Connects on the lK refresh DRAMS. The TLCC (118) also supports DRAMs that use either 1 or 2 Write Enables (WE). This can be done because the minimum access size for the DR~Ms is a 64 bit double word.
Therefore, the two WE lines for each DRAM can be tied together.
On DRAMs that use a single WE, the extra WE is a No Connect.

CPU Com~lex The daughterboard (58) ~ nt~;nf~ two CPU complexes. Each complex consists of an 88110 CPU (110), 88410 Level 2 Cache Controller (112) and 8 67D709 128Kx9 SR~Ms (114). The 88110 and 88410 are ;mr~ ,~.1 using 299 and 279 PGA~s (Pin Grid Arrays) respectively. The SR~Ms are 32 pin PLCC' s and are mounted on both sides (top and bottom) of the daughterboard (58).

The SR~Ms (114) are 67D709 SRAMs that have two bidirectional data ports which simplifies the net topology for data flow from the memory system to the processor. One data port is used to transfer data to/from the 88110 on the P D bus (140a-b), the =

other data port connects the two ~R~M complexes together and also connect3 to the T~C muxe~ and ei~her the CI or the CI
transceivers on the S_D bus (126). The board (58) is laid out so that the S_D bus (126) is lesY than 8.5~ in length. This length restriction allows the bus (126) to be operated without any termination and still transfer data in a single 20ns cycle. The P_D bus (140) is a point-to-point bus between the SRAMs (114) and a single 88110 (110). This bus is approximately 6" long.
The control signals for the SRAMs (114) are driven by the 88410 (112) for all accesses. To provide the best timing and signal integrity for all of thebe nets, they are routed using a "tree~ topology. Thi3 topology places each of the 8 loads at an equal distance from the 88410 (112a-b), which helps to prevent underæhoot and edge rate problem3. The e2~ception to this topology is R_WE N[7:0] lines which are point-to-point from the 88410 (112) to the SRAMs (114). These use 220hm SerieY Resistors to control the edge rate and undershoot (not shown) .
To prevent Write-through operations from occurring on the System bus a P_WT_N pin on the 88110 (110) is left disconnected, and the corre~ponding pin on the 88410 (112) i9 pulled up. To help alleviate some hold time issues between the CI ASIC (~24) and the Cache RAMs, the Cache R~M clocks are skewed to be n~-;n~l ly O .2ns earlier than the other 50MXz clocks on the board (58) .

2 ~ 83223 ~ , .
The r~ ht~rho~d (58) receive~ two PECL differential pairs from the motherboard (52) as its source clocks (not shown). One of the pairs is the 50MHz System Clock and the other is the 12.5 MHz, test/scan clock. Each of the two clocks is buffered and distributed as required to the devices on the daughterboard (58) .
The clock distribution scheme on the daughterboard (58) matches that used on the motherboard (52) to minimize overall skew between motherboard (52) and ~ htl~rho;~rd (58) components.
Differeutial PECL is also used to minimize the skew introduced by the distribution nets and logic.
All etch lengths for each stage of clock signal distribution tree are matched to ~1 ;m;n~t.- skew. There are a couple of exceptions to this. The clocks that are driven to the 2nd Level Cache RAMs (114) are purposely skewed to be 500ps earlier than the other 50MHz clocks. This is done to alleviate a Hold time problem between the CI ASIC (124) and the SRAMs (114) wherl the CI
ASIC is writing to the SRAMs (line fill) .

JTAG
The ~ ht~rho~rd (58) has a single IEEE 1149.1 (JTAG~ scan chain that can be used both for Manufacturing and Power-Up testing, and scan initialization of the CI (124) and TLCC (118) ASICs. The EDiiACs (120), 88110's (110) and 88410's (112) all implement the ~ive wire version o~ the JTAG specification, but will be operated in the 4-wire mode by pulling the TRSTN pin high. The CI (124), TLCC (118), and board level JTAG logic all 21 83223 :~
;, 1 t the four wire version. A TCK signal is generated and received by the clock distribution logic. The devices in the chain are ~nnnf~ l in the folIowing order: CI (124) -> Lo EDii~C
(120a) -~ Hi EDiiAC (120b) -> TLCC (118) -~ TLC Address Latch (142) -> 88110 A (llOa) -> 88410 A (112a) -~ 88110 B (llOb) ->
88410 B (112b) -> SEEP~OM (144) .

SEEPROM
A Serial ~EPROM (144) is used on the daughterboard (~8) to provide a non-volatile place to store important board information, such as Board Number, Serial Number and revision history. The SEEPROM chosen does not have a true ~JTAG interface, theref ore it cannot be connected directly i~to the scan chain .
Instead, a JTAG buffer 74BCT8373 (not shown) is used to provide the interface between the two serial protocols.

Sy3tem ASICs Much of the functionality effected in the CCN~I~ system according to the invention is implemented in ASICs, as generally described hereinbefore, and more particularly described hereinaf ter .

PI ASIC
In monitoring PIBUS-to-PIXBUS traffic, the PI ASIC
r1P~rm; n~ when some node starts a tenure on the PIBUS by observing the request lines of all the nodes, and calculating when the bus is available for the next requester. The ~?I ASIC(s) 2~ 83223 (of which there are four, 64a-d, and which may be referred to interchangeably a~ "PI") have re3ponsibility for P~ minin~ all traffic on the PIBUS (56), and re3ponding to specific operations that it i3 involved in. The PI determines when a transfer i3 started by monitoring the PIBUS request information. There are three dif f erent ways that an operation can be decoded as targeted to a particular PI's node. These are: Node-field Bit Compare, ID
Originator Node Parsing, and Address Decode.
The first beat (i.e data transfer during one system clock cycle) of a transaction packet (also known as a Header beat) is always either a node type or an address type . If the f irst beat is a node type then the second beat is always an address type.
Information in the operation field determines which combination of decode - c ch~ni ~m~: to use .
If the fir3t beat is a node type, then this transfer has come from a memory controller' s (82) directory control logic.
Transfers require snooping local to all node3 which have their respective bit set in the 16-bit node field. If the bit is set, the PI (64) is responsible for requesting the PIXBUS (56) and forwarding the transfer inward.
If the first beat is address type, then the operation~field is parsed to determine whether to look at the reque~ter ID or the address. If the first beat operation field implies the requester ID match the PI ' s node ID register, then the PI is responsible for requesting the PIXBUS and forwarding the transfer inward If the fir3t beat is address type, and the command field does not imply the requester ID compare, then the addre3s i3 --parsed to determine if the PI' 8 node is the target of the transfer. If the physical address range compare results in a match, then the PIXBUS (66) is requested, and the transfer is f orwarded inward .
If the address range compare results in a match for the control, internal devices, or I/O channel mappings, the PIXBUS is requested and the transfer is forwarded inward.
Address decode consists of five range compares. These range compares are based on boundaries which are initialized at powerup. The memory map for the illustrative embodiment of the multiprocessor system according to the invention is shown in Fig.
4.
The global resource space (150) resides in the top 4MB of the 32-bit address range. It is contiguous. Only one node (i.e.
motherboard) in the 6ystem is allowed to re3pond to Global Space aess. Global Space (150) contains resources such as PROM, DUARTs, boot clock, and a real time clock (RTC, not shown) . A
Valid bit in an address decoder will be used to ~l~=t~-rm; ni~ which node currently owns the Global Space.
Directly below the global resource space is 4MB of Sof tware Reserved area (154) and 3MB of unused memory space (156) . ~elow the Sof tware Reserved Space is 1 MB of Local Control Space Alias (158). It is used to access node local control space without having to know specifically which node it is accessing. This function is implemented in the Cl ASIC (124), which converts any address issued by a processor (110) in the local control space ~;
alias (158) into an address in that node's control space.

The Per-JP Local Resources (160) follow the Local Control Space Alias segment. Per-.JP Local Resources include 88410 (112) flush registers, a ~;HOAMI register used to identify a respective node, per-JP programmable interval timer (PIT), per-JP Interrupt registers, and cross interrupt send registers.
The next segment i8 the 16MB Control space (162). Control Space i8 evenly partitioned over 16 nodes, 80 the minimum granularity for decoding of ; n~ ' n~ addresses i9 1 M3 .
The next segment used is the 16MB of Third Level Cache (TLC) Tag Store (166) . The TLC maps addresses into this space to allow simple access for prom initialization and diagnostics. JP
generated addresses in this range will not appear beyond the bus which the TLC resides (i.e. CI (124) will not pass these addresses to the CI_BUS (130), (126) ) . Therefore, the PI ASIC (64) will not have to do any special address decode for this address range .
Directly below Control Space (150) is the 64M3 dedicated to the integrated devices (168) . The PI ASICs (64) will have a 2MB
granularity while the GG ASICs (78) will have a 1 MB granularity.
Integrated Device space must be contiguous on each node. Holes are allowed between node assignments.
I/O channel space (172-174) exists between the highest physical memory address and the lower limit of the integrated devices space in the address range E000_0000 to F7FF_FFFF. It must be contiguous on each node. Holes are allowed between node assignments. It has a 32MB granularity. It is typically used for ~ME (Versa Module Eurobus) I/O.

Physical memory (176-180) must be contiguous on each node.
Holes are allowed between node assignments. EIowever, 30me software may not allow such holes. Phy3ical memory ha3 a granularity of 128MB. The architecture of the present system is set up to require that one node in the 3yatem contain modulo 128MB of memory 3tarting at addre3s 0 (bottom of memory).

Incominq PIBus Transfer (PIBus to PIXbus) The third cycle of a PIBUS transfer is the reply pha3e. This allows one cycle for decoding of the addres3/node information pre3ented in the fir3t beat. The interpretation of the3e pins differs between node and addr type first beats.
If the first beat is a node type, then thi3 operation is snoopable. Under that condition, all PI3 (64) who3e Node ID match their respective node field bit found in the node beat and i3 able to accept the tran3fer (P-TRANS queue not full) mu3t assert PI_RCVR_ACk_N. If a PI'3 Node ID matches it's respective node field bit and the PI's P-TRANS queue is full, the PI must assert PI_RSND_N. If no PI_RCVR_ACK_N or PI_RSND_N is a3serted during the reply cycle, this i3 a system fatal error, and must be reported as ~uch.
To ensure that none of the target PI ASICs (64) forwards the tran~fer inward (onto the PIXBUS (66) ) until all targets receive a complete tran3fer, the target PI ASICs (64) will wait one cycle after the reply to either request the PIXBUS (66) or to di3card the tran3fer. All target PI ASICS (64) mu3t di3card the transfer if there wa3 a PI_RSND_N in the re~ly phase.

If the first beat wa~ addres~ type, then this operation is not snoopable. Therefore, there is only one int~n~ 7 target, and only the intended target i~ to a~ert either PI_RCVR_ACK_N or PI_RSND_N. If no PI_RCVR_ACK_N or PI_RSND_N is asserted during the reply cycle, Low priority operation types will be transformed into a NACK type operation while other types will result in a fatal error, since it implies there wa~ no target node responding. In addition, if ;n~n~lPd target ob~erves PI_RSND_N
a~serted without it being the source of PI_RSND_N this is a fatal 6ystem error since only one node can respond to an addres~ type beat .
Since the node field of a command-node beat is only used to parse operations ;n( n~ from a PIBUS (56), it is not necessary to forward that beat to the node's PIXBUS (66). All ;n.o-n;n~ node type beat~ will be dropped when placing the transfer in the P-Transaction Queues.
Note that all of the command information of the address type beat i8 identical to the command of the node type beat, and an address type is sent with every packet.

PIBUS-to-PT~RUS Oueue & Bu~Eer Selectio~
There are three PIBUS incoming queues in the PI (HI, MED, LOW). E~eader beat operation fields are par~ed to determine which queue they should be ~ent to. The rea~on that there are three -queues with different prioritie3 is to order ;n~- ing requests and to promote forward progress. This i8 accomplished by ordering the completion of in-progre3s operations within the 13ystem ahead of new operations that will inject additional tra~:Eic into the Sy5 tem .
The ElI priority queue is dedicated to operations that have made the furthest progress, and can pot~-n~; ~l ly bottleneck the memory system and prevent forward progress of the operations that have already referenced memory on some module. Examples are CB_INV_RPLY, CB_RPLY and WB (e.g. copyback-invalidate-reply, copy-back reply and write-back operations, respectively).
The MED priority queue is dedicated to operations that have made the furthest progress, and will result in completion or forward progress of the operations that have already referenced memory on some module. Examples are I~V_CMD and RD S_REPLY (e.g.
invalidate and read-shared-reply).
The lower priority queue is dedicated to those operations that when serviced will cause the injection of more, higher priority traffic into the system. These are operations which have not yet been acted upon by memory such as RD_S and CI_WR (e.g.
read_shared and cache inhibited_write). Since the ORB (98) det~nT;n~ which queue gets granted a transfer on the PIXBUS
there may be cases where the ORB allows some lower priority transfers to go ahead of higher priority transfers.
Requests are indicated when the PI asserts the signals PI_X_HI_REQ_N, PI_X_MED_REQ N or PI_X_LOW_REQ_N for a high, medium or low request respectively. A PI (64) will initiate a request only if there is a valid entry in one of the queues.
Once a particular high, medium or low request has been made it remains asserted until the ORB (98) grants the PI (68) a bus 2 1 ~3223=
--tenure of that priority. Other ungranted requests will remain asserted. For high and low reque~ts, de-assertion occurs in the cycle after receiving the grant even if there are more entries of that priority in the queue. The medium request will remain asserted if there are more mediums in the queue.
A new high or low request can only be made if the previous high or low transfer did not have a MC_RESEND_N signal asserted ~_ in the fourth cycle of the transfer. This signal represents a limitation that prevents the PI from streaming transfers of HI or ::
LOW priority through the PI. However, full PIX3US bandwidth can be utilized by the PI if there are two transfers of different priority ready to be transmitted to the PIX;3US. Also, the other PIs on the PIX;3US may request independently of each other so one of the four PIs (64) dropping it' s request will have little impact on the PIXBUS bandwidth utilization.
A PI (64) will change the amount of time it takes to re-request the PIX~3US (66) on a resend. A backoff algorithm is used to progressively keep it from re-requesting the bus for longer periods of time. This he~ps prevent a PI (64) from wasting PIX;3US cycles resending operations to ASICS that recently have had full input queues. The progression of backoff time is-as follows: 0,1,3,7,15,16,18,22,30,31,1,5,13,.... This is done by using a 5-bit decrementor and a starting value for each subsequent backoff is increased from the previous value by 1, 2, 4, 8 ,1, 2, 4, 8, . . . The decrementor gets cleared if no resend is seen for the priority being backed-off or if a resend is seen for another priority. There is only one de~:" tor, and it always 2 1 83223 -=
--keeps track of the backoff needed for the last priority to get a re~end .

P IXBUS Gr~ n t Granting of PIXBUS (66) tenure i8 det~rm;n.-d by the ORB (9B) through a3sertion of the ORB_GNT_PI_HI, ORB_GNT_PI_MED, and ORB GNT PI_LOW input signals. The ORB (98) will only grant tenure if the PI a3serts PI_X_HI_REQ_N, PI_MED_REQ_N, or PI_X_LOW_REQ_N
signals for indicating, respectively, a high, medium or low priority request. Once granted the PI will select the E[I, MED or LOW queue that corresponds to the grant. The PI will then transfer the oldest operation of that priority which the queue holds .
The ORB (98) may grant any PI (64) tenure without regard to any PI, PIXBUS, queue status, except when a PI (64) is making a -~
low priority requeqt while asserting PI_CS_REQ. In this case, the ~_ ORB (98) must respect the requesting PI~s assertion of bu~y, via a PI_X_MED_BUSY_N queue status and not grant the requesting PI
(64). PI_CS REQ will be asserted anytime the PI (64) holds a low priority PI control space acce3s operation in the queue. Low priority PI requests that are granted when PI_CS_REQ is as~erted will result in a low priority queue transfer to the medium priority queue for control space access processing.
To ensure system coherency, it is necessary that the PI
ASICs (64) prevent any IM type of operation who' s cache block address matches any INV_CMD or RD_INV_RPLY (i.e. invalidate or ~ ~
read_invalidate reply), to be forwarded to a memory system. This .
prevention is called squashing. Squashing in the PI ASIC ( 64 ) i6 achieved by tran~3forming GUch operation types to be a NOP type (i.e. no operation), where it will be treated as a NOP on the PIXBUS .
Any operations currently existing in the PI queues that are Intent to Modify (IM) type operations are squashed if the current ; n~- ; n~ INV CMD or RD_I~V_RPLY address matches any of the three possible low prlority header buffer entries with any such operations. Any such operations which are currently being decoded are squashed if the associated cache block address matches any lNV_CMD or RD I~ RPLY address within the other header buffer or those which are currently being decoded.
Nodes (motherboards ) that j ust received IM operations that resulted in a squash must assert a PI_RSND_N signal on the PIBUS
to f orce potential receivers of such operations to squash any po3sible IM operations just received.
There are two different modes of operation for PIBUS
transfers involving PI_RSND_N (or PI_RCVR_AC~ N), i.e. re3end or receiver acknowledge, responses.
If the operation is targeted at only one PIBUS resident (i.e. the first beat of transfer is an address transfer), then only the targeted PIbus interface is allowed to issue a PI_RSND N
(or PI_RCVR_ACk_N) response. Therefore, when the PIBUS interface ===
receives an address, and that address is resolved to reside on the node, it can be ~orwarded; ~ t-~l y . This is a non-broadcast type operation.

21 83223 =~
If the operation is potentially a multi-target (i.e. the first beat o~ transfer i~3 a node bit field), then any targeted PIBUS interface i5 allowed to issue a PI_RSND_N (or PI_RCVR_ACK_N) response. However, since the operation cannot be operated on until all parties involved are able to accept the operation (no one asserts PI_RSND_N), it cannot be forwarded ;r~~ tely Thig is a broadcast type operation.

PIXBUS Arbitrat ion PIXBUS (66, 68, 72, 76, 80, 88, 92, 94 of Fig. 2) arbitration takes three different forms, one for each of the incoming queue types. HI (high) priority arbitration takes precedence over MED (medium) priority arbitration. MED priority arbitration takes precedence over LOW (low) priority arbitration.
MED priority arbitration uses a deli-counter ticket style mechanism to support the time ordering of transactions. HI and LOW priority arbitration are not conf ined to granting based on time ordering.
Requests are indicated when the PI (64) asserts any of the signals PI_X HI_REQ_N, PI_X_MED_REQ_N or Pl_X_LOW_REQ_N for a ~I, MED or LOW request respectively. The ORB (98) array is responsible for servicing requests from the PI with a fairness algorithm. The ORB (98) array bestows bus tenure, i.e. issues a grant, to the PI (64) by driving a ORB GNT_PI_HI, ORB_GNT_PI_MED
and/or ORB_GNT_PI_LOW signal.
For the MED priority input queue, the ORB (98) array rn~;nt;:;nR a Deli Count or ~ticket" assigned upon the arrival of a --remote MED priority type access targeted to the node. This arrival ia indicated to the ORB (98) by the rec~iving PI (64) asserting a PI_MED_uu~ u~ ~ signal. This indicates to the ORB
(98) array that the PI ~6g) is utilized this ticket. The ORB
array will then increment the ticket value, wrapping if necessary, for the next cycle. The actual ticket values are ~--;n~inF.fl in the ORB. The PI's PI ORDERED_OP output is asserted upon the enqueing of a CI_RD, CI_WR or CI_WR_UNLK (i.e. cache-inhibited-read, write or write unlock) low priority operation type or INV_CMD, or RD INV RPLY (i.e. invalidate or read_invalidate_reply) medium priority operation type into the PI
queue(s) . The PI_ORDERED_OP signal is used by the ORB (98) to give special priority to these types of operations when one of the PIs (64) has a MED priority operation that needs special ordering .
A PI_NEW_CUSTOMER_N output is asserted by the PI on any en~ueing of a MED priority or LOW operation into the queue.
A ONE_TO_GO signal is asserted by the PI (64) when it knows that the next beat is the last beat of the packet for which it was granted. The ORB (98) can use this signal to determine when the tenure is about to end.
An X_XTEND signal is asserted by the PI (64) in all cycles it expects to have bus tenure after the first beat transferred.
The PIXBUS receiver can use this signal to determine when the tenure has ended.
The PI (64) removes Medium priority operations from its queue in the cycle after its operation transfer was granted since ::

there is no MC_RESEND_N possible for medium priority tran~fers.
That is, the memory controller, as de~cribed in detail hereinafter, will not resend medium priority data transfers. Any data asE;ociated with the Medium operation transfer is removed as it is transferred High and Low priority operations cannot be removed until after the MC_RESEND_N signal is checked in the reply cycle. If there is a resend, the transfer completes as it would without the resend. The only difference is that the operation information and associated data is retained in the PI ~:
(64) for re-transmitting when re-granted.

PIXBUS-tQ-PIBUS Traffic :
The PI (64) determines when a transfer starts on the PIBUS ~~
by observing an X_TS signal which accompanies the f irst beat of a packet transfer The PI (64) i~ re~ponsible for ~Am;n;n~ all traffic on the PIXBUS, and responding to specific operations that it i3 involved in. There are three different ways that an operation can be decoded as targeted to a particular PI. These are: RMT_SNP Bit Compare, Requester ID Node Compare and Address Decode.
The first beat of a transaction packet (al60 known a~-a Header beat) is always either a node type or an address type_ If the fir~t beat is a node type and an RMT_SNP bit is set, then the . ~_ second beat is alway~ an address type. Otherwise, it is just an address type. Information in an operation field determine~ which combination of decode r?~h:~n;, to use. These are summarized in the Table of PIXBlJS Operation Decode and Queue ~; 5 t, Fig 6 .

2 ~ 83223 PIXBUS operations are the same format as those of the PI BUS
(56) . The only exception is that inbound node type operations have their node headers stripped. Inbound node type operations will not have the RMT_SNP bit set.
If the first beat is a node type, then this transfer has come from a memory controller' 8 directory control logic .
Transfers require snooping local to all nodes which have their respective bit set in a 16-bit node field. To distinguish between a snoop which was generated on this node and one which as already been forwarded to the PIBUS, the RMT_SNP bit is used. If the bit is set, and this beat is a node type, then the PI (64) is responsible for requesting the PIBUS and forwarding the transfer inward. If ~he RMT_SNP bit is not set, and this beat is a node type, then the PI (64) will only check the packet' s parity.
If the first beat is an address type, then the operation f ield is parsed to determi~e whether to look at the requester ID
or the address fields. This f~.~t.~rrn;n::lt;~n is summarized in the Table of Fig. 6.
If the first beat is an address type, and the operation field implies the requester ID match the PI's node ID regi~ter, then the PI (64) is responsible for requesting the PIBUS and forwarding the transfer outward. If the first beat is a address type, and the command field does not imply the requester ID
compare, then the address is parsed to determine if the PI ' s node is the target of the transfer. If the physical address range compare DOES NOT result in a match, then the PIBUS is requested, and the transfer is forwarded outward. If the address range compare DOES NOT reeult in a match for the control, internal devicea, or I/O channel mappings, the PIBUS is requested and the transfer is forwarded outward. If the address range compare DOES
result in a match for the PI control space mappings and an ASIC
ID matches, the PIBUS is requested and the transfer is forwarded outward. This match is indicated with a PI_OUR_ASIC signal.
Address decode for the PIXBUS is the same as the PIBUS address decode .

PI BUS Selection If a PIXBUS operation needs to be forwarded to the PIBUS the four PIs must determine which PI (64) will accept the operation.
This filtering process i8 done using information from the address beat of a transaction header For non-PI control space operations an address bit 19 is XORed with an address bit 7 and address bit 18 is XORed with address bit 6 The resulting two bit code is used to be compared with what codes will be allowed by ADDR_76_E~
configuration bits. If that code is allowed by the PI (64) the operation will be accepted by the PI. For PI control space operations only address certain bits, i.e. 7, 6, which are used as the two bit code.
There are three PIXBUS ; n,- n~ queues in the PI (HI, MED, LOW) Header beat Operation fields are parsed to r~t~nn;nFl which queue they should be sent to. The three queues have different priorities Anything residing in the HI priority queue has priority over everything in the MED ~ LOW priority queue.
Anything residing in the MED priority queue has priority over 2 ~ 8~223 --everything in the LOW priority queue. The reason that there are three queues with different prioritie8 i5 to order i n~ i n~
requests and to promote forward progress. This is accomplished by ordering the completion of in-progress operations within the system ahead of new operations that will inject additional tra~f ic into the system .
The HI priority queue is dedicated to operations that have made the furthest progress, and can potentially bottleneck the __:
memory system and prevent forward progress of the operations that have already ref erenced memory on some module . Examples are CB_INV_RPLY, CB_RPLY, and WB, as discussed hereinbefore. _~
The MED priority queue is dedicated to operations that have made the furthest progress, and will result in completion or forward progress of the operations that have already referenced memory on some module. Examples are INV_CMD and RD_S_REPLY.
The lower priority queue is ~ d to those operations that when serviced will cause the iniections of more higher priority traffic into the system. These are operations which have not yet been acted upon by memory such as RD_S & Cl_WR.
All ;n~ _ ;n~ packet transfers are put in their respective priority queues. The only exception is that for Cl_RDs and-Cl_WRs which are targeted to the PI's control space and received from the PI (64) itself. This is the case of remote PI control space access. In this case the low priority operation is put into the Medium queue instead of the Low queue. This is done to prevent deadlocking situations involving remote PI control space access.

PIBJS requests are asserted with the PI P_REQ_N<7: 0~
signals . Once granted the PI (64) must drop it~ s request . New requests are only asserted when PIBUS arbitration logic allows a new window (See PIBUS Arbitration). There must be a valid queue entry in either the high, medium or low queue before the PI (64) will request the PIBUS. A request may be delayed if there is a ~ -resend reply on the PIBUS bus.
Selection of which o~ the high, medium or low queue ~or output depends on the setting of a P_OUT_SHUF_ARB state, and which queues contain valid entries. If P OUT_SHUF_ARB = 0 then all valid high queue entries will get sent before all medium and low entries and all medium entries will get sent before all low entrie~. Priority will be ordered HI, MED, LOW.
If there is a resend reply on the PIBUS for an operation of a given priority then the PI (64) will shift its priority scheme to MED, LOW, HI) and select the next valid priority operation for output next time. If there is also a resend reply for this operation then the PI (64) will shift again to LOW, HI, MED. If there is yet another resend reply the PI (64) will shift again to HI, MED, LOW and so ~orth until an operation is sent without a resend reply. Once sent the priority goes back to the original XI, MED, LOW priority scheme.
If the P_O~_SHUF_ARB = 1, then a shuffling of the queue priority occurs like that of the shuffling done for PIBUS
arbitration. For one operation the priority will be HI, MED, LOW, then the next will be MED, LOW, HI, then ~OW, XI, MED, and back to HI, MED, LOW.

To ensure system coherency, it is necessary that the PI (64) ASICs prevent any intent to modi~y (IM) type of operation who' 8 address matches any lNV_CMD or RD_INV_RPI,Y to be forwarded to a memory system. As discussed hereinbefore, this prevention is called squashing. Squashing in the PI ASIC will be achieved by transforming the IM operation to a NOP type operation where it will be treated as a NOP on the PIXBUS.
Any IMs currently existing in the PI (64) queues are =
squashed if the current incoming INV CMD or RD_INV_RPLY address matches any of the three possible low priority header buffer entries with IMs. Any IMs which are currently being decoded are squashed if the IM address matches any INV_CMD or RD_INV_RPLY
address within the other Header buffer or those which are currently being decoded.
Unlike the PIBUS-to-PIXBUS transfer, there is no required latency in requesting the PIBUS. This is because there are no PI
(64) targeted PIX transactions which can be signalled to be resent. The ORB (98) will guarantee that there is always enough PIXBUS input queue space to accept a transaction which it grants onto the PIXBUS. The only exception to this rule is the memory controller lMC) input queue which can cause a MC_RESEND. EIowever, the transaction which is resent by the MC will never be a PI (64) targeted transaction and 80 it can be assumed that if a PI (64) detects a PIBUS bound transaction it will complete without a resend response.
PIBUS arbitration is based on a "Windowed-Priority"
distributed arbitration with fairne~s. What this means is that 2 ~ ~3223 there are specific times (windows) where the PI_REQ_P_N (request) signals are sampled and then grants associated with each request are prioritized based on a pre-determined code known as the shuf f le code .
Since this arbitration logic is distributed, each PIBIJS
requester knows the request status of all the other requesters on the bus. The local requester only needs to know if a particular grant is for itself or another requester.
The shuf f le code used in the PI ( 64 ) is simply a 3 -bit counter. It is initialized on reset with the lower three bits of a NODE ID value which is unique for each NODE. The NODE ID
counter i8 albo init; i~ l; z~ at reset with the NODE ID . Shuf f les are allowed if conigured to do 80, or after the first PIBUS
transfer window and then both counters count up by one anytime =
all requests in a given window have been granted.
The PIs (64) will only assert new requeæts on these window boundaries. As PIs are granted within a window, the PI (64) must deassert the request that was made in that window. A simplified block diagram of the PI Arbitration Logic is shown in Fig. 8.
The shuffle code/counter (200) is used as a M~X select for each of the eight 8:1 multiplexars (202). Each 8:1 MUX has-a specific permllt~t;nn of request signals. The output of the multiplexers is cnnn~ctF~I to a 8-bit priority encoder (204). The 3-bit output of the priority encoder i3 compared against the NODE
ID counter 206 output. If the shuffled prioritized encoded request matches the NODE ID count then the PI (64) is granted the PIBUS tenure.

The PI_A2~_P_GNT signal i3 used by the P_SLV_SM to know that a new PI (64) B~S transfer will begin next cycle The PI (64) ASIC will only enable one PI_P_REQ_N~7: 0~
corr,o~ to the node number at which the PI (64) reside3.
All others will be configured as input only in normal mode operation .
The PI (64) expects an acknowledge (Pl_RCVR_ACK_N) in the third cycle of the transfer it originates. If there is no acknowledge for a low priority operation, then the PI (64) will create a NACK type packet back to the requester. For all other operation priorities a fatal error will re3ult.
The PI (64) also expects a PI_RSND_N (if any) in the third cycle of the transfer it originates. Note that the PI (64) always sends the entire tran3fer to the PIBUS even if there is a Pl_RSND_N .
The PI (64) removes an operation from its queue in the cycle after its operation transfer was acknowledged with no resend ~_ (Pl_RCVR_ACK_N = 0, PI_RSND_N = 1) . If there is a re3end, the tran3fer completes as it would without the resend. The only di~ference is that the operation in~o and associated data is retained (or converted to NACK type) in the PI (64) for re-transmitting when re-granted . If a PIBUS is deconf igured then all the PIs on that PIBUS must be deconfigured even if they are fully functional.

2~ ~3223 MEUORY CONTROII~:R~MC ASIC
The memory system in the CCNUM~ architecture according to the invention, illustrated in Fig. 9, is also implemented via an ASIC, referred to as a memory controller (MC) (220) . Generally, the MC provides the interface to physical memory (222) for the multiprocessor system, and m~;nt~;n~ memory system coherency by impl -;n~ a coherency directory (224) for memory. The MC
comprises a plurality of functional elements that are described hereinaf ter .
The Memory Controller chip (MC) (82, Fig. 2) controls the execution of physical memory operations. T~is involves managing both the Directory which r-int~;n~ system coherency and the memory data store DRAMs. The MC operates at 50MHz, the standard system clock speed. It is capable of receiving a new packet every 20 ns until its queues are full. The MC is designed to operate on a split tr~n~cti~n, packetized bu3 based on the architecture defined herein. It is estimated that the MC needs to deliver 115 M~3/sec of memory bandwidth for the system according to the invention. This includes a 30~ overhead budget.
There is one MC ASIC per moth~rho~rd board (52), controlling from 0 to 512 MegaBytes, or 1/2 a GigaByte of local memory The MC, illu3trated in Fig. 10, processes memory transaction packets that are driven onto the MCBUS by the BAXBAR. The packets may have originated on any of the local busses or on the PIBUS. To ensure packet ordering needed for coherency, all packets affecting the same block address will always use the same PIBUS.
The MC checks packet addresses to decode if they address near or 5g - 2 ~ 83223 far memory. The MC will accept only near memory packets. The MC
accepts high and low priority packets and issues only medium priority packets. Packets issued~ by the MC can never be retried.
The MC has a four packet input queue (230) and four packet output queue (232). Only the packet header beats are enqueued in the MC. The data beats are enqueued in EDiiACs (described in detail hereinafter), which include the data queues (FIFOs) for the memory DRAM data 3tore. The one exception to this are Local ~egister writes, which are entirely enqueued in the MC. Memory responses (both data and coherency ,~ ) are driven onto the MCBUS as a packet. The MC (with the help of the EDiiACs) performs ECC error detection and correction on DRAM data and checks parity on MCBUS packets. There are two EDiiACs per MC. Each of the EDiiACs has a 64-bit data path and an 8-bit ECC path. When the DRAMs are read or written, the EDiiACs act in parallel to provide a 128-bit data path for the DRAMs. When the EDiiACs drive or receive data from the MUD_BUS (i.e. MUD_l, MUD_S, u3ed to connect the BaxBar ASICs (70) to two EDiiAC ASIC3 (96) ), they operate in seriea, each being active every other cycle. This provides a 64 bit data path to the MUD_BUS and allows a data beat every cycle, even though each EDiiAC by itself can only drive one data beat every other cycle.
The MC provides all the control for the EDiiACs and also provides the data 4tore addresses, row addres~ select (RAS), column address select (CAS) and other DRAM control signals.

MC DirectorY Manaqer The MC ;n~ a Directory Manager fllnr~;nn~l element that maintains coherency informatio~ on each block of physical memory.
The information is stored in the directory which is implemented in D~AM. The directory indicates which system nodes (a mothPrhn~rd is equivalent to a node) hold valid cached copies of memory blocks. It also indicates if a node has a modified version of a memory block and if a memory block is currently locked for the uæe of a single processor. For each packet that requests memory access, the Directory Manager will examine the corresponding directory information before allowing memory to be altered. When necessary to m~;nt~;n coherency, the Directory Manager will issue invalidates and copyback ~, n~lc. The Directory Manager will update the directory information before ~:
servicing the next memory re~uest.

MC Pirectorv The directory that the directory manager manages r~ ;n~;nl::
system coherency. It stores 11 bits of coherercy information for every block of data. Each directory entry describes the state of one memory block (also called a cache line). The coherency-information stored in the directory is at a node level. Coherency ibsue!3 below the node level are the respon~ibility of the node itself, The directory state is stored in a combination of a Directory Store (DTS) and Copyback ~nn~l~nl-c Addressable Memory (Copyback CAM or CAM), which are described hereinafter.

;~ 21 83223 For each memory access that the MC performs, it must look up the memory address ln both the DTS and the CAM to determine the coherency state of the block. The state de~ n~ what response the MC will make to the memory request. A memory block can be in any of the f ive f ollowing states:
~3NUSED. This state means that the block is not resident in any caches in the system. The only valid copy of the block is in memory. All valid bits and the modify bit are zero in this 3tate.
SHARED. This state means that there may cache line are the same as the copy held by the memory. One or more valid bits in the directory are set and the modif ied is zero .
MODIFIED. This state mean~ that one and only one cache in the system has a copy of the cache line . This cache' s copy is assumed to be different than the copy held by the memory.
One valid bit is set along with the modif ied bit in this state .
LOCKED. This state means that this cache line has been locked by a system requestor. The cache line is unavailable to other requestors until it is unlocked. This state is a cac~e inhibited state so no shared copies exist. The lock bit is set in this state and all vbits are zero.
BUSY This state means that this cache line has an outætanding copyback command. The directory entry bits are unchanged when a copyback command is issued, so the modi~ied bit and the vbit of the node which currently holds the data will still be set to one. The busy state is set by loading `--the address, opcode and requestor ID of the request in to the Copyback CAM.
These five states are qualified with the UNO~U~ L) bit which indicates whether the cache line is subject to packet ordering constraints. Thi8 affects whether local replies need to travel via the PIBus, but does not affect the type of reply packet or the coherent directory state.

MC Directory Store The memory' 8 directory information is stored in DRAMs controlled by the MC ASIC. Each entry in the Directory Store (DTS, 224, Fig. 9) corresponds to a block in the main DRAM data store. Each DTS entry is protected with 6 bits of ECC, used to provide single and double bit error detection and single bit error correction. The DTS is addressed with a 12-bit address bus that is ~eparate from the address bus for the data store. These separate busses are needed to allow multiple accesses to the directory (read and write) while a single multiple-beat block is being accessed in the data store. The DTS will may be implemented with 32 MB DRAM SIMMs, which would be incompletely used, since only 24MBs are needed.

For each DTS entry, bit ~RRi~ ' Fl are ag follows:
Bi t [ 10 ] - Unordered Bit [9] - ~iock Bit [8] - Mod Bit[7:0] - Vbits (Node 0= Bit 0) .~
Vbits - 8 bits - one valid bit for each possible node. Vbit=
1 indicates that the corresponding node has a valid copy of this block .
Mod - 1 bit - the modif ied bit . Mod=1 indicates that one node has a modified copy of this block and the data in memory i9 stale. When Mod=1, there must be one and only one Vbit set.
Lock - 1 bit - the lock bit. Lock= 1 indicates that a node has locked the block for its exclusive use. When,~;he lock bit is set, there can not be any Vbits set.
Unordered - 1 bit - the unordered bit. Unordered= 1 indicates that any local read replies from this block must be sent via the backplane to insure ordering with any outstanding invalidates .
Busy - A Copyback CAM hit. A directory entry i3 busy if its block address matches the tag stored in a valid Copyback CAM
entry. Such a CAM hit indicates that there is an outstanding copyback request for this block. The memory DRAMs hold stale data for this block 80 this block is unusable until copyback data is received .

Basic Memor~ Read ~rcess The following is a detailed description of how a read request is processed by the MC. A Read request packet is present on the MCBUS. The MC registers the first word, which is the header, into an Input Register portion of local registers (226) .
The packet address and command are inspected and since the packet is of interest to the memory it is passed through the Input Queue (230) to the DRAM Controller (232). The address is passed through the RAS/CAS address lr,gic of the DRAM Controller (232), where it is converted into a two part 12-bit DRAM address. The RAS and CAS
strobe~ are also created there, as are the WRITE and CHIP_SE~ECT
signals. The address is then clocked into the both Address Registers (234) in the address logic (232), one of which addresses the Data Store DRAMS and the other addresses the DTS
DRAMS. At this point the two registers hold the same address and the Data Store and the DTS will be read simultaneously.
The Directory bits for that address are read from the DTS
and registered into the Directory data path (RDP) input register (236). They are then passed through the ECC rh~rk;n~ logic (238) and corrected if necessary. The directory bits are then pass to the Header and Directory Decode Module (240) where it is determined what actions must be taken to ~-;n~;n coherency. ~ew directory bits are generated and passed through ECC generation and into the RDP (236) output register. From there the new directory bits and ECC are written into the DTS. The DTS reads and writes are only one beat each, while the read of the Data Store are 4 beats. Therefore the DTS write can be started while the Data Store read is still in progress. Thus the need for separate address registers for the DTS and Data Store.
Once the directory bits are decoded, the Header Encode Module (242) generate~ a 64-bit header for either a coherency command packet or for a Read Reply packet that will supply the requested read data to the rerluesting node. The completed header is registered into the Output Queue (246). When the header is at , .~
the top of the Output Queue (246), it will be registered into the Output Register. SimultAn~ooll~ly with the Directory being read, the cc~L~ ;nr~ data is read from the Data Store DRAMS.
As the data is read, it i5 passed through ECC rh~rk; ng and corrected if n~rf~1~s::lry. 128 bits are read at one time and loaded into a Read FIFO in the EDiiACs (not shown in Fig 10). Cache line reads are burst reads of 64 bytes. This will require four DRAM
reads. Partial reads will read only 128 bits and only one 64 bit beat will be sent with the reply packet. If a Command packet i8 required for coherency, then the data read from the DRAMs is stale and will not be used. When the command packet gets to the top of the output queue, the stale data will be removed from the EDiiAC read FIFOs.
Once the MC has arbitrated for and been granted the MCBUS, an Output Register portion of the local registers (226) drives the new packet header to the BAXBAR. The EDiiACs will drive the data, if any, onto the M[~D_BUS the cycle; ~ t~ly following the header on the MCBUS. If there is an uncorrectable error in the data read from the DRAMs, the MC and EDiiACs will finish putting the packet onto the MCBUS and the MC will also raise MCBUS_SCR_ERR (Source Error).

Basic MemorY Write Access Write requests are processed by the MC. Each of the memory operations that the MC will support are handled in a very similar manner, as described hereinafter.

2 ~ ~3223 A write request packet ia pre3ent on the MCBUS. The MC
registers the fir~t word, which is the header, into the Input Regiater portion of the local re-giatera 226. The packet addresa and command are ; nRp-r~f~d and aince the packet ia of intere3t to the memory it is passed through the Input Queue (230) to the DRAM
Controller (232). Address bit 3 and the lII_WR_RAM signal are passed to Data Path Control logic which muat begin to write data from the MUD BUS into the EDiiAC FIFOs in the following cycle.
Any data words following the header are driven onto the MUD_~3US
by the BAXBAR and regiatered into a Write FIF0 in the EDiiACs.
The addreaa ia passed through the RAS/CAS address logic of the DRAM Controller (232) in the MC, where it is converted into a two part 12-bit DRAM address. The RAS and CAS strobes are also created there, as are the WRITE_ENABLE signals. The address is then clocked into both Addre3s Registers, one of which addresses the Data Store DRAMS and the other addresses the DTS DRAMS. At this point the two registers hold the same address but or3ly the DTS will be read.
If the write is a block write (WB, CB_INV_RPLY or CB_RPhY), the DRAMs begin writing the data. This means that any coherency errors discovered by the directory can not stop the data from being written into the memory. These errors will be fatal. If the write ia a partial write (CI_WR, CI_WR_LK or WR_THRU), the write of the data store DRAMs can not begin until the dirçctory has been read and ~l~r~
The Directory bits for the referenced address are read from the DTS and registered into the Directory Data Path (RDP, 236) . .~
input register. They are then passed through the ECC rhf~k; nS
logic (238) and corrected if n.oc~s~ry. The directory bits are then passed to the Header and Directory Decode Module (240) where it is rlf~Prm; n-~l what actions nust be taken to ~--; n~; n coherency. New directory bits are generated and passed through ECC generation (244) and into the RDP output register From there the new directory bits and ECC are written into the DTS.
Once the directory bits are decoded, the EIeader Encode logic (242) generates a 64-bit header for an ACE~ packet, if necessary.
The complete header is registered into the Output Queue (246).
When the header is at the top of the Output Queue, it will be registered into the Output Register portion of the Local Registers (226).
The write data is written into the Data Store DRAMS as soon as the directory bits are decoded. The burst write will take four 128-bit writes to complete. Partial writes will require reading the block out o the DRAMS, merging in the new data and then writing the modified block into the DRAMS. This occurs in the EDiiACs .
If a Command packet is required for coherency, then the data in the EDiiAC write FIPO can not be written to the DRAMs and is removed from the FIFO before the MC begins decoding the next request packet.
The directory location that corresponds to the main memory location being accessed must be initialized either explicitly or by a " stuf f n operation bef ore that main memory location can be accessed .

The state of a directory entry is de~F~rm; n~l by the highest priority directory bit set in that entry. There are five potential directory statea. The priority of the bits is listed below. There iB no busy bit stored in the directory. A hit in an MC Copyback CAM (250), when ~h~ k;n~ for a directory entry, indicates that the directory block is busy.
Busy (CAM hit) - highest priority Lock - second highest priority Mod - third highest priority VBits - lowest priority The five states are as follows:
Directory State Busy Lock Mod VBits Busy (Copyback 1 X X X
CAM HIT) Locked O 1 X X
Modif ied o O 1 X
Shared O o O non-zero ~nused O O O O
The system according to the invention; ~ a ~~h~n; r~Y~
re~erred to as Queue s~l~h;n~ Queue ~ h;n~ is a mechanism to remove from the packet stream as many stale Intent to Modify (IM) packets as possible. A squashed packet is either removed from the stream or is turned into a NOP. Sg~ h;n~ I ~h~n;~ are implemented in the MC, PI and CI ASICs.
If all stale IMs were allowed to reach the Directory, some might look like valid operations by the time they arrived.
Squashing as many stale IMs as possible limits how much the directory state ha3 change since the invalidate that made the IM
tale. Thi~ increa~e~ the chancea of detecting that the IM i8 stale. A stale IM needs no reply packet and should not change any directory state.
If the MC receives a stale IM that it can not tell is stale, it will allow the directory to mark that block as modif ied by that requestor. However that requestor does not have a copy of the block. When that requestor receives the INV_C,~D that was ;ntPn~Pfl to give it ownership of the block, the requestor will respond with an I~NDO_MOD packet which restores the directory' 3 state to shared for that block.
Queue squashing is implemented by -hP~'k; n~ any IM in an ASIC
queue against any invalidates (~D~ RPLY or INV_CMD) that are in queues passing in the other direction. The MC checks for IMs in its Input Queue and for`inv~l;tl~tP~ in its Output Queue. If an IM
and an invalidate have the ~3ame addre3s, the IM is squashed.
If the IM i~ already in the Input Queue when the invalidate enters the Output Queue, the IM i8 turned into a NOP When it reaches the top of the Input Queue, it i8; ~ tPly dequeued.If the invalidate is already in the Output Queue when the IM arrive3 at the MC, the IM i8 enqueued in the Input Queue a~ a NOP ~The enqueue can not be aborted, so only the opcode is altered. When the NOP reaches the top of the Input Queue, it is immediately dequeued .
If a stale IM reaches the directory, it will be r~o~n; 7Pt as stale if the directory state read is illegal for an IM. In that c ~e a NOP reply packet is generated. The reply packet is .
t necessary because the MC may already be requesting the bus before it reali2 es that the IM is stale .
A stale IM can reach the directory when the invalidate command is sent to a PI in order to go to the backplane for snooping, and the IM arrives at the MC from a requestor on the same board as the MC. In that case the IM and the invalidate will never pass each other in any pair of queues.
In addition to the functionality described hereinbefore, the MC communicates with the control and status registers inside the EDiiAC ASICs. A more l~t~ d description of the registers and how they are used is set forth in a discussion of the EDiiAC ASIC
hereinaf ter .
The main memory DRAMs are accessed through a pair of EDiiAC
ASICs (also referred to as the EDACs). The EDACs contain the read and write FIFOs for the memory data. ~hen a read reply packet is sourced by the memory, the header beat is driven by the MC A~3IC, the first data beat is driven by one EDAC, the ~econd databeat is driven by the other EDAC, and the two EDACs ~ n~; nll~ to alternate for the rest of the data beats. The EDACs are selected between by bit 3 of the address. The EDACs just alternate driving data beats because they operate at ~alf the ~peed of the PIX sus.
The EDACs contain one control register and two status registers. These EDAC registers are not PIX Bus, ~ ,~t;hlel so sof tware access must access the registers by sending control space requests to the MC ASIC. The MC reformats the requests and forwards them to the EDACs. These forwarded operations are referred to as EDAC Diagnostic Mode operations.

When the MC receives a re~uest to read or write an EDAC
diagnostic mode register, the request ia PnrrlPllP~l in the MC input queue (230) and a flag ;n~ t;n~ that this is an EDAC diagnostic mode operation is set in the queue entry. This flag, IQ_EDAC_MODE, remains set until it is dequeued from the Input Queue . This f lag is used by the decode tables in the MC Header and Directory Decode module (240) to give hi~h priority packets special treatment, as explained below.
An additional state bit, HI_EDAC_MODE, is also set when the operation is PnqnPll o~ . HI_EDAC_MODE stays set until the MC is granted the bus to issue a NOP packet to the specif ied EDAC . As long as HI_EDAC_MODE is set, the MC will assert MC_BUSY_:~0_N.
This keeps the MC ~rom receiving any more low priority packets.
The MC does not assert MC_BUSY_HI_N. If the MC receives a high priority write, the write is performed, but a RETRY packet is generated if the high priority packet hits a read request in the Copyback C~M. This avoids Pnr~ ; nq a read reply with data beats. This use of MC_BUSY LO_N and RETRY responses guarantees two things: that the MC will not receive any more EDAC diagnostic mode opPr~t;~n~ until this one is complete; and that the MC will not e~queue any more read data into the EDAC FIFos until thi~
diagnostic mode operation is complete. This guarantees that the EDAC Read FIFOs will be empty when the NOP diagnostic mode packet gets to the top of the MC output queue.
When the EDAC diagnostic mode packet gets to the top of the input queue, the MC enqueues two packets in the output queue.
This is the only time that the MC generates two reply packets for 2 ~ 83223 - -one input packet . The f ir8t packet en~ueued is a NOP with eight data beats. The first data beat nnt~;n~ an instruction to the EDAC control register that 9pecifies the desired diagnostic operation. The second data beat returns the EDAC control register to its normal value, The other data beats are ignored.
The second packet enqueued is the reply to the requestor who initiated the diagnostic operation. If the operation was a read, the reply will be a single beat RD_S. If the operation was a write or clear, the reply will be an ACK.

MC/SvstPm Bus Arbitration __ The arbitration of the MCBUS and MUD_B~S is included in the local bus arbitration. When one local bus on a moth~rhn~rd i~
granted, all the busses are granted.
The MC receives high and low priority packets, and sources only medium priority packets. The MC has high and low priority busy signals to tell the arbiter which priority packets it can currently receive. This differPnt;~t;nn between high and low busy signals ensures that the MC will never allow a low priority packet to keep a high priority packet from executing.
A signal MC_BIJSY_HI_N tells the system arbiter that the MC
can not accept any more packets of any priority. It is asserted when the Input Queue (230) is full. MC_BUSY_LO_N tells the ~y~3tem arbiter that the MC can not accept any more low priority packets. However high priority packets can be accepted. It is asserted when the MC r~nt~;n~ its maximum of two low priority packets .

The Output Queue (246) also has entries that are reserved for responses generated by Copyback CAM (250) hits. The MC does not send the arbiter a busy signal when these reserved entries are full. The only effect is that the MC can not load any new entries in the Copyback CAM (250) until a reserved space opens in the Output Queue (246). Until then, the MC will retry any packet that needs to use the CAM. This is also what the MC does when the CAM itself is full.
Packets issued by the MC can never be retried. This would cause coherency violations. Likewise, the MC can not retry any writebacks or copybacks.
The MC attempts to drive either MC_NEAR_N or MC_FAR_N with each medium bus request that is asserts. These signals tell the bus arbiter whether the MC' 8 packet is destined for a local CI or GG, or for the PIBus vla a PI. Once MC_MED_REQ_N is asserted, MC_NEAR_N (near) and MC_FAR_N (far) stay deasserte~ until the MC
can be sure that it has r~l r~ t.--1 the correct value for them. If neither of the signals is asserted when the arbiter evaluates the MC's bus request, then the arbiter must consider all medium busy signals. If one of the signals is asserted then the arbiter can consider only a select group of the medium busy signals, increasing the MC' 8 chance of getting a grant . Once the MC
asserts NEAR or FAR signals, the signal stays asserted until the MC receives a bus grant. The ~EAR and FAR signals must dea~sert the cycle after the grant as the MC may; ~ tely start requesting a new bus tenure.

Packet En~ ; nq Each time a signal ORB_TS_MC is as~erted, the MC decodes the address of the packet on the MC_BUS to determine if the packet i8 for it. The decode occurs in the MC Header Tn~pl~ti~n module. If address [31:24] = FE, address [23:20) = MC_LR_NODE_ID (three bits that indicate the Node ID for this MC) and address [9: 6]
MC_LR_ASIC_ID (ASIC ID for this MC), the packet is for this MC' s control space. ~
The address is also decoded against the MC_LR_MEM_BIT_MAP, 32 bits that indicate the physical memory bit map for this MC, each bit of which represents 128MB of physical memory space.
The MC_LR_MEM_BIT_MAP will have a bit set for each 128M3 of DRAM
installed for this MC. Each MC may have up to 512MB.
If the packet is addressed to either the MC' 8 physical or control space, the packet header is enqueued in the Input Queue (230). If the packet is a control space write, the data beat will also be enqueued in the Input Queue (230) the cycle after the header. The Input Queue r~nt~;n~ two parallel 4-entry gueues, the Header Queue and the Datà Queue. The Data Queue entries are only used for control space writes. When a signal HI_ENQUEUE_IN is asserted it i8 an indication to enqueue an MC3US header beat into the MC Input Queue (Header queue).
If the packet is a physical address write, the data beats are ~n~l~llpd in the EDAC Write FIFOs.

Header Decode When IQC_VALID is asserted there i8 a valid packet at the top of the Input Queue (230). The assertion of IQC_VALID starts the SQ_C~RRENT_STATE state machine (Fig. 11) in the MC sequencer module (254, Fig. 10) . This i8 the main SP9 lPn,~Pr for the directory manager and queues. IQC_VALID also starts state ~--h;n~ ir. the DRAM controller (232). State machine diagrams which are self explanatory to those skilled in tb,~ art, are provided herewith as Figs. 11-24.
Some basic informdtion about the header is pre-decoded at the time the packet is Pn~lPIlPfl in the Input Queue (230). That inf~rr-t;-~n is kept in the queue with the header. This allows the DRAM controller (232) to; ~ tPly start the d~L~,~Liate read or write of Directory and Memory DRAMs.
The Header i8 further decoded in the MC Header and Directory decode module (240). The results of the decode for a physical memory request are not valid until SQ_MEM_DECODE_VALID is asserted. There is also a S_CS_DECODE_VAI ID for control space operations .
The main gate to header decode for physical memory requests is ~"'P~; n~ the directory entry for the address . The directory entry is valid the cycle af ter RDS_DTS_VAI ID is asserted . The RDS_DTS_VALID signal indicates that in the next cycle the directory entry for the current address will be valid. The directory entry will be available on RDP_V~3ITS RDP_~3USY, RDP_LOCK
and RDP_MOD lines . The header decode takes two cycles af ter the directory entry is read.

Re~lv Packet Encodinq By ~ m;n;ng the directory entry, the MC EIeader and Dlrectory decode module (240) decides what type of reply to send.
It also decides how to update the directory. The actual encoding of the reply packet header is done in the MC Header encode module (242). The packet header is f~nq~ l in the Output Queue (246).
If the reply packet needs to go P~t~rn~l to the PIBus to be snooped, a two beat header will be enqueued in the Output Queue (242). The first beat will be a node beat, as described hereinafter. Like the Input Queue (230), the Output Queue has two parallel queues . The Output Queue' 8 queues are five beats instead of four, the extra beat being needed to support EDAC mode operations. In this case one queue is used ~or the node beat and the other f or the header beat .
If the packet i9 a control space read reply, a data beat will be enqueued in the Output Queue (242) the cycle after the header beat is enqueued. This will also use one entry in each of the parallel queues. Both the Input Queue and the Output Queue always enqueue 8~ ~ h;n~ in both parallel queues. However if both beats are not needed, the second enqueue cycle will load garbage into the queue.
Once the reply header is enqueued and the DR~M controller (232) no longer needs the packet at the top of the Input Queue, the Input Queue is advanced to the next request packet.
IQC_VAIID is deasserted for one cycle while the queue is advancing .

2 ~ 83223 When there i8 a valid header in the Output Queue and the D~AM controller is ready to drive any needed data beats, the MCBUS Arbitration and Bus Master module (256) requests the bus.
For most control space replies, the entire packet i8 driven from the MC ASIC. The only ~ ,or~;~,n~ are some EDAC diagnostic mode op.~r~t;~nçl which have data beats driven from the EDACs. For physical address read replies, the node beat (if any) and the header beat are driven from the MC ASIC and the dgta beats are driven from the EDACs. For all other physical address replies there are no data beats and the entire packet is driven from the MC .
When the entire packet, ; n~ fl; n~ data beats has been driven, the Output Queue (246) is advanced. Like the Input Queue, the Output Queue valid signal, OQC_VALID is deasserted for one cycle while the queue is advancing. If the MC has another completed request packet already enqueued, the MC bus request aignal will not be deasserted when the first bus grant is received .

Co~Yback CAM
Memory requests that require a copyback use the Copyback CAM
(250). This CAM stores the header of the request packet 80 that when a copyback reply or writeback to the same address i8 received, the MC can generate a reply packet to the original reque3tor who precipitated the copyback. In these cases, the reply packet is built from the header stored in the CAM, not from t~e top of the Input Queue (230) The DR~M controller (232) will write the copyback or writeback data to memory and also store the data beats in the EDAC read FIFOs if a read reply i8 needed. Copyback replie3 return the data in the order needed for a read reply packet, 80 the Read FIF0 is filled at the same time that the data i8 written to the DRAMs. Writebacks wiIl always return the data block aligned, 80 the data is first written into memory and then read back out to the Read FIFOs in the order needed. _ Control Sl~ae Reqisters The MC has control space regiater3 that are all in the MC
Local Registera module (226). They are 32-bits wide or lesa. The control space registers are written f rom an IQ_DATA output of the Input Queue (230), which cu, r e~L~ullds to bits [31:0] on the MC_BUS .
When a control space register is read, the data is loaded into the "address" field (bits [31:0] ) of the reply packet's data beat. The data is stored in the Output Queue (246) along with the reply packet header. The data is muYed into the address input of the output queue by an MC Output MUY (258).

Packet ûrderinq The present: _ '; r ' of the MC sends all I~V_CMD
(invalidate) packets through the PIs to guarantee that INV_CMDs never arrive before earlier RD_S_RPLYs. Since the unordered condition can send any local read reply ~Y~ l, i . e . out through the PIs to the h:l~-krl~n~, all I~V_CMDs must also go external . Sending INV_CMDs ~ tA~n~ 1 also keeps some stale IM
ca~3es ~rom causing data corruptions.
The MC is responsible for -~;nt::l;n;n~ coherent order between high priority writes and medium priority inv~ At.o~. The need for ordering between packets of different prioritie8 ig ~cpl~;n~f1 hereinafter with respect to Cache Coherency. Only the need for high and medium ordering is explained here.
The ordering problem with high priority pack,~ts is that a high priority write (W3, C;3_RPLY C3_INV RPLY) could bypass an ; nl ' n~ medium priority snoopable invalidate ( INV_CMD, RD_INV RPLY). This could result in the following scenario: Memory in this example is on Node 0. Addres3 DATA is a data location that both JPO and JP5 wish to modify. Address SEMAPHORE is a L~A hr7re that allows only one requestor at a time to alter address DATA. Address DATA and SEM~PHORE are serviced on different P1 buses.
Packet Requestor Address 1. RD_S JPO DATA
2. RD_S_RPLY JPO DATA
3. RD_IM JP5 SEMAPHORE
4. (RD_INV_RPLY JP5 SEMAPHORE) outgoing to node 1 5 CI_RD JP5 DATA
6. RD_S_RPLY JP5 DATA
7. CI_NR JP5 DATA
8 . ( INV_CMD JP5 DATA) outgoing to nodes 0 ,1 9. RD_IM JPO SEMAPHORE
10. (C8_INV CMD JPO SEMAPHORE) outgoing to node 1 2 1 ~3223 11. CB INV_RPLY JP5 S~MAPHORE
12. RD_INV_RP~Y JPO 5~3MAPHORE
13. CI_WR JPO DATA
In line 12, JPO has been granted the semaphore without having received the invalidate for the data (line 8). As a result JPO reads stale data from its cache and writes it back to memory before ever seeing the invalidate which was issued in line 8.
The CB_I~V RPLY in line 11 can not be reordered to make it arrive on the PIXbus after the I~JV_CMD from line 8, because high priority packets must have unimpeded acce3s to memory.
Interfering with this can cause system livelock because the memory queues could always be full of read requests ~or a block that is currently modif ied . If the high priority copyback reply can not get to the directory, the read requests can never be sati8fied. Therefore it is dd~lyeLuu8 to apply any ordering rules to high priority packets. The alternative i5 to apply the ---ordering to the reads that try to access memory data altered by a high priority write.
Since the C3_INV_RPLY can not be reordered, instead the RD_INV_RPLY is ordered in line 12. The goal is to keep data written to memory by high priority writes f rom being aent eO
other requestors until af ter any clder invalidates have bee~
completed. This is accomplished by sending the RD_INV_RPLY in line 12 out through the PIs to the backplane. The medium queue ticketing at the PIs will enaure that the RD_I~V_RP~Y does not arrive at JPO until after the INV_CMD from line 8. JPO will not have a stale cached copy of the data and will have to read the correct data f rom memory .
The ordering could be accomplished by sending all local read replies thorough the PIs. However, this has performance penalties. Instead the OR~3 sends the MC a signal (OR~3_O~DER_NEEDED) that i8 asserted whenever a PI queue holds a medium priority invalidate ( INV_CMD or RD_INV_RP~Y) which has been in the PI queue for more than a given number of cycles (the number i8 ~I JyL hle from 31 to 0) . While OR~3 ORDER_NEEDED is asserted, the MC marks any memory block that receives a high priority write as potentially unordered. The MC will send any local read replies to that block f~ rni~ l through the PI ' s to guarantee that they will be ordered behind the outstanding invalidate .
To reduce the number of local read replies sent external, the MC' 5 packet ordering I ~h~n; F'~ incorporates the following rule~ .
a) High priority writes from remote requestors mark blocks I INI )I~ in the directory when OR3_ORDER_NEEDED is asserted at the time that the write was received by the MC. If OR~3_ORDER NEEDED deaE~serts before the MC begins to process~the write, the U~IIJ~IJ~;L bit will not be set.
b) A local read of an uN~ ;~L) block will clear the IIN~ :I) 8tate in the directory. The IIN(I~ I) state of the .
block is now tracked in the MC' 8 six entry Snoop CAM (252) . The address and requestor ID of the local read are loaded into the , ~ 2183223 Snoop CAM. The local read reply has a node beat ;ltt~ olprl to it and is sent to the PIs.
c) If the MC receives a high priority write from a remote requestor that hits a local read request in the Copyback CAM
(250), the T~ RnRRFn bit is not set, but the read reply is sent P~tPrn~l with a node beat and its address and requestor ID are loaded into the Snoop CAM.
d) Once loaded, the Snoop CAM (252) entry remains valid until the MC sees the same read reply reissued onto the PIXbus by the PIs. The MC snoops all PIXbus read replies that are to its memory range and which are coming from the PIs. Whenever a snooped read reply matches the addresa and requestor ID oi~ a Snoop CAM entry, that CAM entry is cleared.
e) Any additional local read requests to that cache block while the Snoop CAM still holds that address will also be loaded into the Snoop CAM and sent to the PIs with a node beat.
f) The UNI)KI~J~;K~;U condition of a block exists until the directory IlN()~lJ~Fl) bit and all Snoop CAM entries for that memory block address have been cleared. If the Snoop CAM contains multiple entries for the same address then each of those read replies must reappear on the PIXbus before the TTI~T~RnRRRn -condition is cleared.
g) If OKB_OKDEK_NEEDED is deasserted when a local read request hits the Snoop CAM, the read reply will not be ~ ns~; r~Pred unordered if it is a RD_S_RPLY. It will not be loaded into the Snoop CAM and it will not be sent to the PIs. If the read reply is a KD_INV_KPLY it will still be loaded irLto the Snoop CAM and 7a .~

sent to the PIs with a node beat. This is to prevent a RD_I~V_RPLY from arriving at a local requestor be~ore an older RD_S_RPl~Y which may have been delayed in the PI queues.
h) The Snoop CAM r~ gn;7~q six local requestor IDs, which in the present illustrative embodiment are set to the 4 ~Ps and 2 GGs. The requestor IDs can be set with Ecan, which is described in detail in the re~erenced PCT application. Each Snoop CAM entry is dedicated to one of those IDs. It is assumed that there will never be more than one outstanding low priority reque3t from each requestor. A fatal error will issue if the MC tries to load a new read reply into the Snoop CAM and f inds that that requestor already has an outstanding read reply.
i) Whenever the directory (224, Fig. 9) is accessed and ORB_ORDER_NEEDED is deasserted, the u~ bit in that directory entry is cleared (if set).
j ) The ORB has a ~yL hle delay which controls how soon the ORB_ORDER_NEEDED signal is asserted aEter the PIs enqueue an invalidate. Unordered read replies are not possible until a number of cycles a~ter the invalidate is enqueued. By reducing the number o~ cycles that ORB_ORDER_NE13DED is asserted, the performance impact of sending local read replies ~x~ l is reduced. This cycle count delay is ~L~yL hle from 31 to O
cycles, and defaults to 31 cycles.
It should be further noted that the MC must be run in external invalidate mode if more than one node exists. Otherwise INV_CMDs could get out of order with read replies that have been ~ent PY~ l due to unordering.

, ~-Memory Pgwer-u~ Init; A l; 7~ n During cold reset the MC ASIC reget~ mo8t ;nt~
registers, ;n~ l;n~ configuration regi3ters. Exceptions to this are the Input Queue (230), Output Queue (258), Performance Monitor Counters (not shown), and Input Register and Output Registers (226). Those registers will be ini~i~l;7~d through use .
The MC leaves cold reset with its fatal and gon-fatal error reporting enabled, except for DRAM related errors. Masked errors include refresh errors, ECC errors, coherency errors and M17D_BUS
parity errors. These errors can not be enabled until after the main memory and directory DRAMs have been ini~;~l;7~fl. To enable this error reporting, an MC_ERR_MASK register must be written.
On cold reset the MC will tri-state its bus outputs. All outputs will be reset to a benign state.

Init; ~ l; 2at ior The MC_MEM_BIT_MAP must be scanned or written to a non- zero value for the MC to accept any memory operations. The MC_MEM_BIT_M~P should match the amount of memory DRAMs present, and should also match the PI ASIC' 8 MEM_BIT_MAP .

Warm Reset The MC resets ;n~ ^n~l state ~ h;nl~ on warm reset.
Configuration registers are not reset, with one exception:
MC_ERR_MASK[15]. This bit masks MC fatal coherency errors. This class of error must be masked out while PROM is flushing system J ' caches, which occurs during warm resets after fatal errors. Once PROM ha~ r~;n;t;~ fl the dlrectory after a fatal error, it should re-enable MC fatal coherency errors by writing MC_ERR_MASK
[15] =o .
The MC Fatal error line, MC_FATAL_OlJT N, is reset and internal error detection i8 reset, however control space accessible error reporting register3 are not reset. This allows the error information to be read after the MC has been reset. The error registers must be cleared with a control space write to an MC_FATAI,_ERRORS register before more error information will be saved. Subsequent errors taken after the warm reset but before the error reporting registers have been cleared, will cause the MC to assert the appropriate error pin, but detailed information about the error will not be saved.
On warm reset the MC will tri-state its bus outputs. All output~ will be reset to a benign state, except for those needed to keep the DRAMs alive EDACs and DR7~M
Cold reset is conf igured to guarantee that it is asserted for 200 millisecond3. Thus the DRl~Ma are guaranteed to have their initial powerup period of 500 microseconds before the DRAM
controller takes any action.
An MC_LR_DRAM_CONFIG register has a cold reset value, 32'hlOB6_3780, which causes the DRAM controller to perform RAS-only refreshes on a 512 MByte memory configuration at the fastest possible frequency. This will in~ure that, once cold reset is 2l83223 ~
~ .
de-asserted, the DRAMs receive their required 8 RAS pulses within 256 clock cycles. Alt--rnAt~-1y, the value of 32~hlOB6_3784 will make sure only half the banks are ref reshed at any one time, but will take twice as long to make sure that all the DRAMs receive their required 8 RAS pulses.
Once the 8 RAS pulses are complete, the main memory and directory DRAMs can be init;~l;7~rl by setting a register =~
MC_LR_DRAM_CONFIG[1:0] = 2'bll. This will cause t;~e DRAM
controller to load zeros into all of main memory and all of the directory. The MC_LR_DRAM_CONFIG register needa to be polled by software to determine when stuff mode is complete. The DRAM
controller (232) will set MC_LR_DR~M_CONFIG [1: 0] back to zero when init;~l;7~t;on is complete.
Once DRAM init;~l;7~t;~n is complete, MC_LR_DRAM_CONFIG
needs to be set to a normal ~p~r~t;~ value. For 512 MByte memory in a 50MHz system, the suggested value ia 32'hlOB6_3720.
This sets the refresh to a normal speed, which is slower than that used for init; ~1; 7~t ion .
After warm reset is de-asserted, the EDACs can be initialized via writes to the appropriate MC control space register. The EDACs must be init;il1;7~d after a cold powerup before att ~ ; n~ to write to main memory since the EDAC mode register powers up in an unknown state. The re~
procedure for init;~l;7;n~ the EDACs is to write a value (0013 hex) to a "MC EDAC_NORM~_MODE" register for both EDACs. Bit 3 of the address of the "MC_EDAC_NORMAL_MODE" register specifies which EDAC mode register to modi~y. It is r~ (l that the EDACs have their diagnostic registers cleared after cold powerup by writing to an ~'MC_EDAC_CLEAR MODE" register for both EDACs (after init;Al;7;nq the "MC_EDAC_NORMAL MODE" register) . Bit 3 of the address of the "MC_EDAC_CLEAR_MODE" register specifies which EDAC mode register to modify.

Sizincr- Memory The resources section, de~cribed hereinafter with respect to the RI ASIC, will read the presence-detect bits of one SIMM from each bank (all SIMMs in a bank must be identical) to determine the population of main memory. The present illustrative embodiment of he CCNUMA architecture according to the invention supports 16Mx36 SIMMs. Only the bits PDl & PD2 are read, which ~_ are def ined as GND, GND .
It may be advisable to verify that memory i3 properly configured by sizing with software. It is r~ n~ that the MC be configured for the largest possible configuration while sizing 80 as to keep all DRAMs active 80 that they don' t require re-initialization (8 R~S pulses).

MC Error D~tl~t;- n and F~i~n~ll ;nq The MC generates both fatal and non-fatal errors. Each type of error has a dedicated ASIC interrupt pin: MC_FATAL_OUT_N and MC_~ON_FATA~_N, respectively.
The MC has an error mask, MC_ERR_MASK, that is read/writable f rom control space . The mask allows individual groups of errors to be ~ hl ,~d; nA~ n~-~nt l y . When an error is disabled, no 2~ 83223 .~
interrupt is generated, and the MC does not save error information. Ma~k bit~ for both fatal and non-fatal errors are r~)n ~ :1; n~ in MC_ERR_MASK .
Non-fatal errors are asserted for failures that will not corrupt system operation but which need to be logged or corrected by the operating system. All inf~ ;t n necessary for h~n~ll;nS
non-fatal errors is ~aved in control space accessible registers Non-Fatal errors are clear by writing to a MC_NON FATAL ERRORS
control space register. Clearing the error also allows error information to be captured for the nei~t error that occurs. As long as an error is outstanding, i.e., not yet cleared, additional errors of that same type can not be recorded by the MC .
Fatal errors are asserted for failures that will result in system corruption. This may be either data corruption or loss of ASIC sanity.
The MC ASIC will not switch to a scan clock on fatal error and can not be scanned. Scanning, described in the referenced PCT
application, would destroy the memory image stored in the DRAMs by interfering with memory DRAM refresh. The memory image must be ~-;n~;nl~d if a core dump is required for operating sys~em debug .
The MC supports a mode (LR_FATAL_CLK_MODE = 0 register) wherein it will stop clocks on a fatal error. This mode is ; n~n~ 1 for debug only, since it will prohibit memory core dumps after a fatal error. The rest of this section is written s~ccllm; n~ LR_FATAL_CLK_MODE=l .

On fatal error, the MC will abort the current operation and will remain idle except for refreshing the DRAMs. The MC input and output queues are cleared and some int,orn~l state ~n~h;nPA
are reset to idle. The MC will not respond to any bus activity until it receives a warm reset. After the warm reset, the MC's control space registers can be read to get error information that waa saved when the fatal error was l~t~t~i. The PROM then re- =
;n;t;~ A the MC by writing to each of the MC's error reporting registers to clear them.
Since the MC can not be scanned to collect inf ormation about a fatal error, it freezes copies of some of its current state into shadow registers when a fatal error occurs. Shadow registers are copies only and freezing them does not affect normal ASIC behavior. Many of these shadow registers are control space accessible. Others can be accessed only by scanning the MC. The information in the Ahadow registers remains valid through a warm reset and will not change until after the MC' ~;
error registers have been cleared by specif ic control space writes. If the MC take~ a fatal error after it has been given warm reset, but before PROM has read and cleared the error registers, it may be neces3ary to cold reset the MC and scan test it .
~ hen a fatal error originates at the MC, the MC; ~ tely freezes shadow copies of internal state relating to the operation currently being ~Y~cllt.o~l This allow~ ~tate to be captured before it advance8 without using several levels of shadow registers. Shadow registers ~nt~;n;n~ less volatile ~tate are , ~ 2 ~ 83223 not frozen until the MC gPn~r~tPA fatal error i8 sent back to the MC as a system fatal error. If a ~atal error is detected by another ASIC, the MC freezes all its shadow registers at the same time, i.e. when the MC receives the system fatal error Upon receiving FATAL_IN N i n~ ; n~ a fatal error, the MC
will: Tri-state the following outputs: MCBUS[71:0]; MC EXTEND_N;
and MC_SRC_ERR_N. Deassert the following outputs: MC_BUSY_HI_N;
MC_BUSY_LO_N; MC_MED_RE_N; MC_ONE_TO_GO; MC_DIAG ~ - MC Near Pin; MC_DIAG [O] - MC Far Pin. Invalidate the Input and Output Queues. lJpon receiving FATAL_IN_N indicating a fatal error, the MC will: Ignore the following ASIC inputs: ORB_GNT_MC; and ORB_TS_MC. Upon receiving FATAL_IN_N indicating a fatal error, the MC will: Idle the following state m~~-h;n~: MC_SQ; MC_ARB SM;
and MA_NF_STATE
When the system takes a fatal error, PROM based software (referred to hereinafter as nPROM" ) will initiate certain actions. PROM software will first scan as many ASICs as possible to rl~ rm; n!~ the type of error . The ORB ASIC will shadow the MC_FATAL_OUT_N signal so that when multiple fatal error signals are asserted software can ~l~t~rm;n~ from scan information which was asserted first. Then warm reset is applied to the ASIC3. Then any control space registers in the MC may be read. Warm reset will not affect the cnnt~n~ of the registers which hold pertinent error infnrm-t;nn. PROM must write to the MC_FATAL_ERRORS register to clear the MC' 8 error registers . This write must occur af ter the warm reset . MC_FATAL_ERRORS can not be ,~
cleared until MC_FATAL_OUT_N i8 deasserted, which requires a warm reset .
Sof tware may need to also do control space operations to the EDACs to re-initialize them if normal operation will be Cf~nt; n~
without re-initi~l;7;n~ the whole system. Once the MC and EDACs have been re-initialized, the software may choose to flush the contents of the system caches back to main memory.
Prior to taking a memory dump, PROM will flu~h the system caches to get any updated data they hold into the memory. This can cause coherency errors since the MC may receive Wr; ~,oh~kf~ to blocks with illegal directory states. To prevent this, PROM must mask out the MC Fatal Coherency error by setting MC_ERR_MASK[15] =l before beginning the flush. The mask should be set back to O when the flush is complete. When the error is masked out, the Writeback data will be written to the memory DRAMS, but the directory state will be updated only if the Writeback was received to a valid directory state. The MC may also drive MC_SRC_ERR_N on the header beats of reply packets generated while the directory is corrupt. To prevent this, it is advisable to set MC_ASIC_CO~FIG [24] =0 .
PROM should re-initialize the directory to unused before the flush. This will guarantee that no more coherency errors will be taken once the flushes are complete.
Both the main memory DRAM controller and the directory DRAM
controller are configured to rr~nt;n1lP refreshing after a fatal error. This should make it possible to retrieve the DRAM Cr~nt~nt~q after a warm reset. After fatal error has been asserted the DRAM

2 ~ 83223 ,~
controllers will not process any new operation~ from the input queue until warm reset has been asserted. Operations in progress will terminate as soon as possible without v;ol~t;nr~ the DRAM
parameters. If a fatal error occurs while the DRAM controller is writing a cache block to main memory, it is possible that only part of the block will be written. The DRAM controller does not cr~nt;nl~P to write data beats after the as~ertion of FATAL_IN~N, but it can not undo data beats that are already ~itten.

MC Elements De~cri~tion ~ Iaving described the interr~1~t;-~n~h;r~ of the various elements of the MC as they relate to the overall operation of the MC, the fllnrt;~n~, P11 ~ or modules are described hereinafter with respect to their individual characteristics, conf igurations and/or functionality. Not all of the MC ~ described hereinafter appear in the block diagram of Fig. 10, as some of the functional Pl I F~ are sub-portion3 of the .~1 tsl depicted in Fig. 10.

In~ut Reqister (IR) The input registers are free running input register. ~Every ~ystem bus cycle it clocks in the current value of the MC Bus.
The IR is 72 bitE) wide. The main memory data path control (RMP) element will take some bits of the address directly from the IR
to control the EDACS . The third beat of the IR, IR-BEAT [3], is used to select the f irst EDAC to load when write data is present on the MCBUS.

. .

2~ 83223 The IR also checks for even parity on the MCBUS~ Parity is checked every valid bu3 cycle. Bu3 parity i3 not guaranteed when no one i8 driving the bu3. When a parity error i9 detected the IR will notify an Error module (260) of the MC by asserting a signal IR-PARITY-ERROR. As a result, the Error Module (260) will issue a fatal system error.

Header InsPection (HI) The HI function entails the ~ m; nAtion of the packet header in the MC' 8 Input Register to decide if the packet should be enqueued. It also determine3 whether a read or a write is required of one or more of the following: the DTS directory, the Data Store DRAMs and the ~ocal Registers.
The HI also asserts a signal MC-BUSY-HI-N when enqueueing the new packet will cause the Input Queue to go full. It is possible that one more packet will arrive after the busy signal is a3serted. If this happens, HI will assert MC-RESEND and drop ~
the packet~ The requester will reissue the packet at its next opportunity. MC-ÆSEND will be asserted only for packets intended for this MC.
The MC will only resend low and high priority packets, since it never enqueues medium priority packets. A configuration option for the MC is to never raise either MC-BUSY-HI-N or MC-BUSY O_N, but to always issue MC_ÆSEND for packets that the MC can not enqueue. This may have a peL~ ce advantage over using both busy and resend if the system does not have good memory affinity.

2 ~ 83223 In~ut Oueue (IO) The Input Queue (230) containa two parallel queues, one i~or request packet headers, and one for data for control space writes. The header queue is 61 bits wide. The data queue is 33 bit8 wide. Both queues are 4 beats long. For memory write ope~ations the data beats are stored in the BDACs in the DRAM
data path.
The IQ also stores control signals decoded f~om the header by the Header Inspection function. The decoded information allows the DRAM controller (232) to begin operation as soon as a new header appears at the top of the Input Queue.
The Input Queue can hold a maximum of four headers. Of those headers, only two may be low priority requests. However up to four high priority request# are allowed. This is part of a forward progress scheme which will always be able to service ;n~ high priority packets. When the Input Queue is full, the MC asserts ita high priority busy signal. The MC will not accept any more packets until the Input Queue has an open entry.
If the Input Queue is not full, but it does contain two low priority request packets, then the MC will assert its low priority busy signal. The low busy signal will not be dropped until one of the low priority packets not only leaves the input queue, but is fully processed and its reply packet has been granted the MC;3us. This guarantees a maximum of two low priority packets in progress anywhere in the MC.
If the Input Queue is holding any IM request packets ( Intent to Modify), it will check the IM address against any RD~ PLY

2 t 83223 , ~
or INV-CMD packets in the Output Queue. If the addres3es match, then the Input Queue will "squash" the IM request. This means that it turns the IM into a NOP, as described hereinbefore. This is done to prevent stale IMs from reaching the memory~ An IM is stale when it is bu~e~eded by an invalidate command to the same cache line.
If an IM is det~rm; n ~7 to be stale before it i~3 enqueued, the MC-HI module will not assert HI_ENQU~UE_N and the IM packet will be ignored by the MC.
The MC' 8 Input Queue is composed of seven modules: the Input Queue FIFO (MC-IQ), the Input Queue Control (MC-IQC), the MC' b generic queue control module (MC-QSM), MC-lQ-M2REG and MC-IQ-M3REG (FIFO registers for the header queue), and MC-IQD-M2REG and MC-IQD-M3REG (FIFO registers for the data queue) ~
The Input Queue ~ nr7 1~7~ FIFOs that are controlled via their respective pointers~ Each register is preceded by a multiplexer~
This allows a new entry to be en~aueued at the top of the queue if the queue is empty~

Local Reqister~ (LR~ ~
The MC has local register~7 (226) that can ~e read via a non-memory control-space address~ Local Registers may contain configuration infrrr~t;rn, diagnostic information or performance monitorb ~ ' Reading and writing local registers is performed with cache inhibited memory operations to control space~ The headers of 2 ~ 83223 local regigter accesses are registered into the Input Queue and will be handled in order. The data for local register writes are stored in the corresponding data queue entry in the MCs Input queue .
Read reply packets for local register reads will be generated in much the same way as a normal memory read reply, except that the data will come from the LR module and be stored in the MC' 8 Output Queue instead of in an EDAC. ~he read data is muxed into bits [31:0] of the reply packets data beat by the MC-Output Mux which is on the inputs of the Output Queue.

Secluencer ~SO) The Sequencer (254) is the controlling state machine for the Directory Manager. It also helps control the input and output queues and coordinates between the directory manager and the DRAM
controller .

Header ;~n~1 ~; rectorv DecQde Module (MC-HD) The MC-E~D (240) decodes the packet header at the top of the MC's Input Queue. The MC-HD ~ n~ the packet's operation field and the directory entry read for this packet and determines the type of reply packet needed. Only one reply packet type should be specified at a time, one per input packet. This information is sent to the Eeader Encode Module (242), which encodeE~ the reply packet ' 8 header .
There are two cycles of decode for each packet in the Input Queue. This is 80 that the Output Queue has valid inputs for two cycles while it loads its two internal queues. So the MC-HD will decode for two cycles, producing the same output each cycle The MC-HD also asserts control signals for the Copyback CAM and for the MC-HE module.
The MC-HD outputs are only meaningful when the Sequencer (254) is asserting one of the following signals: SQ_MEM_DECODE, SQ_LR_DECODE, SQ_DTS_DECODE. These signals enable the HD' 8 three decode tables.
The HD module has three packet header decoding tables, one for each of three types o~ sp~rati~n,q: Memory Operations;
Diagnoatic Directory Operations; and Local Register Operations.
Only one table can be enabled by any one packet. The correct table is enabled by a control signal from the Sequencer. Once a table is enabled, it expects to decode a valid operation. If it does not, it will signal an error.
The Memory Operations Table raises HD_~u~ Y_ERROR when an error is detected. This will cause a fatal error interrupt to be asserted by the MC. The DTS and LR Operations tables return a NACK when an illegal low priority contrsl space packet is received A fatal error will be asserted i~ a high or medium priority packet is received to a control space address.
If the directory entry does not need to be changed, the directory will be written with the original data. Soft errors in the DTS directory store will be corrected when data is written back into the DTS.

.,' ~
Error }J;~n~ll; nc~ (ERR~
The Error h:~n(~l ;n~ module (260) geuerates fatal and non-fatal error signals, as described in detail hereinbefore, to notify the system of errors detected by the MC and EDACS. The errors are posted on pins of the MC ASIC. The MC does not support any packet based interrupts. Fatal errors are cleared by cold reset or scanning the interrupt registers. ~on-fatal errors can also be cleared by a control space write to t~Le MC_NO~-FATAh-ERRORS register.
only one interrupt of each type can be outstanding at once.
The MC will lose information about subsequent interrupts as long as a previous interrupt of that type is outstanding. Diagnostic information on these errors will be saved in the ~ocal Registers Module .

DRAM Addre3s Decgde The DRAM Address Decode function converts the address portion of the PIX bus header into a row and column address for the DRAM. It also decodes a bank for main memory based on the conEiguration register.
A DRAM Address Path element selects and registers the decoded address for the DRAM address decode function. This element also implements an increment function for the main memory column address. The output of this element is the address that goes to the DRAMs. Control is based on the state of a main memory DRAM sequencer and a directory DRAM sequencer.

2 ~ 83223 ~. --A Directory DRAM Control module controls all the MC' 8 output3 to the directory DRZ~M based on the state of the Directory DRAM sequencer and the decoded address. In order to drive the row address as quickly as p~3sihle, the RDC receives it from the decode logic directly, and drives it to the DR~M if there is no current operation.

DirectorY ECC Generation The Directory ECC Generation module (244) generates 7 ECC
rh-t-khil~c for 19 bitg of data. It is instantiated twice in the Directory data path module; once for read data and once for write data .

Directorv Data Path The Directory Data Path (RDP) provides a path between the data bus to the directory DR~Ms and the directory decode/encode logic. It u~es two in~tantiation~ of the flow-through Directory ECC module to generate ECC. The RDP corrects single-bit errors in the read data, if enabled to do 80. All data, i5 registered in and regi~tered out o~ this module.

Director~,r Refresh Control The Directory Refresh Controller contains the refresh timer/counter and an address counter for hardware ~:mif~;n~, In order to refresh 4096 rows every 64mS, it must generate a refresh cycle every 15uS. At operating speeds of 20ns, a re~resh must occur every 781 clock cycles. The Refresh controller includes a LJLU~jL hle regi8ter to set the re~resh frequency over a range of values between 15 and 781 cycle8. It supplies a row address to determine which row is refreshed, and a column and bank address to determine which memory location is sniffed. On Power-up reset it automatically enters a mode where it r~nt;nll~lly refreshes until all banks have been refreshed.

DirectorY DRAM Seauencer The Directory DRAM Sequencer control3 all acce8s to the directory DRAM bank. It receives a start signal for a particular type of operation, and then sequences through all the states o~
that operation. When it is f;n;~hl~tl with a particular operation it asserts the IDLE signal.

Main MemQrY Data Path Control The Main Memory Data Path Control (RMP) controls the portion of the data path from the EDAC FIFOs to the BAXBAR. On read operations it must clock data out of the EDAC' 8 read FIFOs into the BAXBAR. The data frûm EDAC-l (high order) travels on MUD_1_BUS; the data from EDAC-O (low order) travels on MUD-O-BUS.
It also controls the mul~; rl~i n~ of data in the BAXBAR to~
deliver a data beat to the PIX bus every cycle. The read operation starts when RMP receives a bus grant and a read data ready signal. On write operations, BAXBAR delivers each data beat on both MUD_O_BUS and MUD_1_BUS. The RMP clocks the data into alt~rn~t;n~ EDAC write FIFOS. The first word must be held in the write latches of both EDACs in case the transfer is a 2 ~ 83223 . --partial-word write. At the end of the write operation, the RMP
asserts the RMP-WDRDY signal. At the end of the read operation, RMP asserts the RMP-RDONE signal. The IR -BEAT [3] signal i9 used to determine which EDAC write FIFO is clocked first.
Main Memo~v Ref re~h Co~trol The Main Memory Ref resh Controller is very much like the Directory refresh controller described hereinbefq~e. It contains the refresh timer/counter and an address counter for hardware cn;ffin~, In order to refresh 4096 rows every 64mS, it must generate a refresh cycle every 15uS. At operating speeds of 20ns, a refresh must occur every 781 clock cycles. The main memory refresh controller in~ a ~1L~J~. hle register to set the refresh frequency over a range of values between 15 and 781 cycles. When it does a refresh operation, all banks have the appropriate row refreshed. This way the refresh frequency does not have to change if more memory is added. The refresh controller supplies a row address to determine which row i8 refreshed, and a column and bank address to determine which memory location is sniffed.

Main Memory DRAM Seauencer (RMS~
The Main Memory DRAM Sequencer controls all access to the main memory DRAM banks. It receives a ~tart signal for a particular type of operation, and then sequences through all the states of that operation . When it is f inished with a particular operation it asserts the IDLE signal.

Co~vback CAM MQdule The Copyback CAM (250) keeps copie8 of transactions that cause copyback requests. It stores the header from the original read or write request that caused the MC to issue a copyback command (CB_CMD or CB_INV_CMD). When a copyback reply (CB_RPLY or CB_INV_ RPLY) or WriteBack (WB) arrives at the top of the MC' s input queue, the CAM compares it to all the '~ stored in the CAM. If there is a match, then the packet sa~isfies a prior copyback command. The directory is updated as indicated by the stored command and a read reply packet (RD_S_RPLY or RD_INV_RPLY) is generated with the copyback or writeback data. Finally the hitting CAM entry is invalidated.
The Copyback CAM is necessary because the memory must forward copyback data to the node that is trying to read that block. The requesting node will not know that a copyback was needed to generate the read reply. Writebacks are also looked up in the CAM because a writeback and a copyback command for the same cache line can occur simultaneously. When the copyback command arrives at the cache, it will be ignored because the cache no longer has data for that block. Therefore the memory must recognize the writeback as satisfying the copyback command.
The Copyback CAM has two entries. Therefore the MC is limited to two outstanding copyback requests. When a request packet is received which needs to generate a copyback request, the request is given a RETRY reply packet if the CAM is full. No new copyback requests can be generated until a CB_RPLY, CB_INV_RPLY or WB arrives that matches the address of one 2~83223 of the CAM entries. Even then, the CAM is rnn~ red busy until the reply packe~ which is created from t~e newly arrived copyback or writeback data is granted onto the MCBUS. This ensures that the MC will not require more than two output queue entries to service all the outstanding copybacks. The Copyback CAM is allocated two output queue entries and must not use more or forward progress may be endangered.
The CAM checks for hits every cycle, however the ~eader Decoder Module (MC_~D) will look at the CAM' 9 hit signal only when a copyback reply, copyback invalidate reply or a writeback i9 at the top of the input queue. CAM entries may never be equal, i.e. multiple hits are not allowed. The CAM CONTROL is responsible for preventing equal entries. Reset clears all CAM
entries simultaneously .
If the MC receives a memory operation that requires a copyback, but the Copyback CAM is full, the MC will issue a Retry packet to the requester . The MC will read the directory bef ore considering if the CAM is full to avoid retrying a request unless it absolutely has to copyback . None of the MC' 8 busy signals are affected by the Copyback CAM being full.
The Copyback CAM is; ~ rl with two moduleg: the-CAM
M~X and the CAM CONTROL. The CAM M~X contains the two CAM
entries and outputs only the entry selected by the CAM' 8 hit signal . CAM CONTROL manages the CAM' E load pointers and manages reset and signals when the CAM i8 full.
Each CAM entry ha6 registers which are loaded f rom the top of the Input Queue. Each also has a registered Valid bit. All 2 ~ 83223 ~
these registers are loaded when the packet at the top of the Input Queue causes a copyback comn7and to be i~7~7ued. Only one CAM
SLICE is loaded for each copyback. The Valid bit is set or cleared by loading it with the value of CC-VALm when CC-LOAD is active .
The CAM mux module compares the contents of its ADDR
register against the packet at the top of the input queue every cycle. Each CAM entry puts out a CS_EIT to indic~3te that the addresses match and that the Valid bit is set. This hit signal is used to produce the Copyback CA.~' 8 output .
The CAM MUX takes the outputs of all the CAl~l entries and asserts CM_7~IT if one of the CA.~q entries is hitting. It outputs the address, opcode, and requester id from the hitting entry. If there are no hits, the address, opcode and requester id outputs of the CAM MUX are l7nf7~;nPd The CAM Control provides the reset and load control for the CAM SLICES. Multiple CAM hit3 are not allowed, i.e., CAM entries may never be equal . The Load pointer in.:, ~ q af ter a CAM entry is loaded, 80 it is always pointing to the next entry to load.
Reset simultaneously clears all CAM entries by synchronously clearing all the Valid bits. A signal SQCLR_CAM clears One entry by loading a zero into CC_VALID for the selected entry.

Snoo7~ CAM
The Snoop CAM i8 used to detect when read replies for ~-I~Nl~kl~4~l~ blocks have made it through the PI queues and are visible on the local Pix bus. A block is UN~ U~;~U if its . ~ 21 83223 directory u~ukulcK~L~ bit is set. This is explained hereinbefore.
Due to the UNU~I~;~;U state of a memory block, the MC may have to send local read replies for that block ~Yt~rn~l (via the h~kp1An~) to ~;nt~;n gygtem coherency. Sending the read reply ~:Yt~rn~1 guaranteeg that it will arrive on the local PixBus after any older invalidate type packets that may already be in the PI
queues .
Once the MC has sent such a read reply,external, it snoops the local Pix bus looking for the read reply to reappear.
Once the MC sees the read reply it knows that the invalidate that caused the read reply to go ~Yt-~rn~1 must have also left the PI
queues. That memory block is no longer unordered. This is tracked by ~ntor1n~ into the Snoop CAM the address (bits 29:6) and the requester ID (bit3 5: 0 ) of any read reply that is sent ~Ytf~rn~l due to I~NORDERED memory state. Issuing the read reply clears the u~u~u~i~;u directory bit and the U~IU~U~ ;J state of that memory block is now tracked in the Snoop CAM instead of in the directory.
The Snoop CAM entry i~ cleared when the MC sees the read reply issued on the local Pix bus . Both the packet ' 8 address and requester ID must match the Snoop QM entry before the ent~y is cleared .
The address of any local read reply generated by the MC is checked against the Snoop CAM as well as against the UNUlW~l~;l~
bit in the directory. The read reply must be sent ~Yt~rn;~1 if either the I~NORDERED bit is set or if the CAM shows that there is already an outstanding GYtl~rn~1 read reply for that memory block.

`. --Every local read reply sent external due to an I lN( ~ :l J
condition is entered the Snoop C~M, even if its address matches one already in the C~M. Since each requester can have only one outstanding read request, the requester IDs of all the Snoop CAM
entries will be different, 80 there will never be multiple hits where both the address and the reque3ter ID match. However there may be multiple hits for just the address compare.
When the directory manager does a Snoop CAM ~ookup to determine if a block is UN~ l~;L), only the addresses will be compared. But when the read reply 3nooping logic does a Snoop C~M lookup, both the address and the requester ID will be compared.
The Snoop CAM is a performance opt;m;7~t;--n. The unordered state could be kept exclusively in the directory. However snooping read replies would be impractical since each read reply seen on the local PIX bus would require a directory access to see ~-if that block is marked UN~ il~;Ln Omitting the read reply snooping would increase the number of local read replies sent external since memory blocks would retain their UNO~lJlC~5~- state f or much longer .
The Snoop CAM is a 6-entry 25-bit wide hybrid between~a CAM
~ mt~ntsl addresgable memory) and a register file. Each C~I
entry corresponds to one of six requester IDs. Q~l entries hold only a 24-bit address and a valid bit. Loading is done by ; n~; n~ into the Cl~M with the requester ID . Clearing requires an address comparison as well as ;nf~ ;n~ off of the requester ID .

. ~
The CAM loads and outputs address bit3 29: 6 . A CAM address hit is based on the comparison of the address bits and the valid bit. Each CAM entry has a separate hit signal. It is possible for multiple CAM entries to hit on the same address. The Snoop CAM can be loaded rom either the entry at the top of the Input Queue or from the Copyback CAM entry that matches the top Input Queue entry. The Snoop CAM is loaded during the second cycle that HI_SNP_SEL=0 after the SQ_LD_SNP_CAM signal is asserted. The Requestor ID of the packet in the Input Queue/Copyback CAM is used to index into the Snoop CAM to choose the entry to be loaded. A fatal error is flagged ii~ the CAM tries to load an already valid entry. When the directory manager (MC-HD module) requires a Snoop CAM comparison, a hit is found if the address stored in any valid Snoop CAM entry matches the address at the top of the Input Queue . An address f rom the Copyback CAM is used instead of the Input Queue address if the Input Queue packet is a high-priority write that is hitting a read request in the Copyback CAM.
When the read reply snooping logic is looking for a hit in the Snoop CAM, both the address and the requester ID must match.
The requester ID of the snooped read reply is used to index into the Snoop CAM. Then the address of the read reply is compared with the address stored in that CAM entry. If the addresses match and the entry' 8 valid bit is set, a match has been found and the CAM entry~ 8 valid bit i8 ~ tl ; cally cleared.
The CAM has six entries 80 that it will be able to service one outstanding read request from each of six local requesters.

-. ~
Each entry is ~ t~,l to a specific requester ID. Those IDs can be ~et by scanning the REQ_ID_<5-0~ registers, which are set by cold reset to selected IDs.
It i8 assumed that there will never be more than one outstanding low priority request from each requester. If the MC
tries to load a new read reply into the Snoop CAM and finds that that requester already has an outstanding read reply, the MC will assert a fatal error. The CAM has no data output_ Its only outputs are its hit and valid signal~. A warm reset clears all the valid bits.
The directory manager and the snooping logic arbitrate for u~e of the Snoop CAM. Each is granted two cycle windows to use the CAM. The snooping logic has priority if both request simultaneously. The arbitration is performed by the MC-HI
module. A HI_SNP_SEL signal is asserted when the snooping logic i~ granted. It is the default to grant the snooping logic.
HI_SNP_SEI is the select signal for a CAM mux which ~3elect!3 between input f rom the Input Queue/Copyback CAM and input f rom the HI snoop register. The HI snoop register holds the last read request snooped from the PIX~us. The snooping logic as3erts HI_SNP_BIJSY when it is Eitarting a CAM access. The directory manager as~erts SQ_SNP_REQ when it wants to u~e the CAM.
SQ_SNP_REQ must always be a~serted for exactly two cycle3.

Header Encode Module (HE) Thi3 module (242) encodes the header i~or any packet issued by the MC. It takes input from the Input Queue, the Header and Directory Decode, the Directory Input Register and the Copy~3ack CAM. Packet headera can be either one or two beats long. Two beat headers include a node field in the first beat. ~IE_TWO_3EAT
will be asserted during the node beat (first beat) of a two beat header. When a Local Register is read, the Header Encode tells a Header Mux to drive one beat of header from this module, followed by one beat of data from the ~ocal Registers. In this case the }~E_TWO_3EAT ~ignal is asserted during the header ~eat. The ~Ieader Encode Module has one smaller sub-module: the ~Ieader EXternal Compare (HEX). This compares the directory V~3its to the MC' s own node bit to determine if the reply packet will need to go to other nodes . The MC' 8 node bit is decoded from the node number assigned to the MC ASIC on the NODE_ID [3: 0] pins .

OUtPut Mux (OM) The OM (258) selects what to drive into the address field of the Output Queue. Selects between headers from the ~eàder Encoder Module and registered data from the Local Register Module. The Output Mux is 32 bits wide.

Out~ut Oueue Modules The Output Queue (246) holds the MC ASIC' s portion of up to 5 outgoing packets. The MC will normally use only 4 of the 5 ~[ueue entries . The f if th entry is used only if the MC is processing an EDAC diagnostic mode packet and the output queue fills with three normally generated reply packets. Normally, the MC generates no more than one output packet f or each input packet 2 ~ 83223 ~
it receives, and the input queue can hold only four packets.
~Iowever the EDAC diagnostic mode operations require two output packets to be generated. The fifth output queue entry guarantees room for that extra packet.
Each of the queue' s entries are two beats wide. If only one beat is needed, the second is a copy of the first and i8 never driven onto the MCBUS. The Output Queue is composed of two smaller queues, Queue A and Queue B . Queue A hold~L the f irst beat and 6 bits of packet control information. Queue B holds the second beat.
The DRAM control uses some additional bits from the Output Queue. It gets the number of data beats to be driven by looking at OQSIZE [2] . This bit is asserted when a full block needs to be driven. OQFORM~T [2] is asserted when the packet has a node beat. When there is a node beat, the DRAM controls wait an extra cycle after bus grant before driving data. A two beat entry may be the two beat header for a remotely snoopable packet (node and address beats) or it may be a Control Space read reply from the MC [address beat and one data beat). The MC ASIC can not source more than a single beat of data. The data beats for memory reads will be supplied by the EDACs via the MUD_O_BUS and MUD_1_BUS.
The Output Queue' 8 normal usage is limited to four packets because that is the maximum that the EDAC read FIFOs can hold.
Each packet in the Output Queue is guaranteed space for eight beats of data in the EDAC read FIFOS, even if there i~ no data needed from the EDACs for this packet. The exception to this are the EDAC diagnostic mode operations. Each diagnostic mode ~ 21 83223 ~.
operation puts two packets into the Output Queue, but they share the same space in the EDAC read FIFOs ~ecause the f ir~t packet instructs the EDAC to put diagnostic data into the read FIFO, and the second packet sends that data to the requester.
To guarantee forward progress the MC must always have enough output queue space to f inish a writeback or copyback reply once it is accepted into the Input Queue. Two entries are reserved in the Output Queue for this purpose because the Copyback CAM has two entries. Only read replies generated by copyback replies (CB_RPLY or CB_INV_RPLY) or wr; ~ha~-k~ (WB) that hit the Copyback CAM may use these entries. These entries are reserved on a flt~ilt;n~ basis, i.e., they are not att~-hf~d to any specific locations within the queue.
The Output Queue also reserves two entries for replies generated ~y the packets in the Input Queue. This is also to guarantee forward progress: the MC should also have enough output queue space to complete the operations accepted into its input queue. The Input Queue is four entries long, but only two of those entries may contain low priority packets.
The Output Queue is low-full if the Input Queue has two valid low entries. The MC will assert its low priority busy signal to ; n-l; r~e that it can accept only high priority packets.No busy signal is raised when the two entrie3 corresponding to the CAM are full. Instead the MC will retry any memory request that needs to generate a copyback command. The retry will not occur until the directory has been read. This is identical to what the MC does when the CAM itself is full.

2 1 83223 ~ ~
The Output Queue f~ntr~ A the data on its inputs when the Sequencer (MC_sQ) a~iert~ SQ_ENQ1~13UE_OUT_A or SQ_ENQUEUE_OUT_B.
Only one of the two queues is ~n~ cl at a time. The Output Queue dequeues the beat at the top of the queue when the Master Bus Arbiter asserts MA_DEQUEUE_OUT. An entire entry (two beats) is ~ d at once . There is a cycle delay af ter MA_DEQUEUE_OUT
before the dequeue occurs. The Output Queue is built with registers instead of RAM 80 that it can be part of the MC scan chain .

OUtl~ut Reqister (OR) The OR registers data from the Output Queue and drives it onto the MCBUS when the bus is granted to the MC. The Output Register is 72 bits wide (64 bits of packet beat and 8 bits of parity). It also generates 8-bit even parity for out going packet beats. The Output Queue does not provide a full 64-bit beat, 80 missing bits are supplied here as zeros.

State Diaqrams Figs. 11-24 present state machine diagrams of the architecture according to the invention, some of which represent the major state ~-~h;n~A of the MC ASIC. The following state machine diagrams are ; n~ 1 and have a brief description herewith, but should be otherwise well understood by those skilled in the art.

SQ_C~RRENT_STATE: This is the main s~ n~pr for the header and directory decode and reply packet generation. It controls enqueueing of the Input Queue, the Output Queue and the Copyback CAM. It also controls dequeueing of the Input Queue and the Copyback CAM. It helps synchronize the DRAM controller with the header decode and generation logic.

SQ_DONE_STATE Machine: This state machine determines the earliest time that the MC can request the bus for the reply packet being encoded. When the Output Queue is empty, bus request can be asserted before the header is even ready to be enqueued in the Output Queue. There are two limiting factors. When the header will be ready, and when any data beats will be ready. SQ_DONE_STATE is started by the SQ_CURRENT_STATE machine when it ~lF.t~r n; n~R that a reply packet is needed .

SQ_CURRENT_STATE asserts START_REQIJEST when it knows the header can be produced in time. I~ the reply packet will contain read data, SQ_DONE_STATE waits for the DRAM controller to signal that it is ready. The SQ_DONE_STATE asserts DO_NEW_OP when we are ready to request the bus. DO_NEW_OP asserts for only one cycle.
SQ_DO_OP_STATE Machine: This state machine counts the number of packets waiting for a bus grant and tell~ the MC_ARB_SM state machine when to request the bus. It asserts SQ_DO_MED_OP for one cycle when DO~ OP is asserted by the SQ_DONE_STATE machine. If there is more than one packet waiting for a bus grant, then SQ_DO_MED_OP remains asserted until bus request has been aaserted for the la~t packet.

MC_ARB_SM: This state machine asserts the MC' 8 bus request whenever SQ_DO_MED_OP is asserted. MC_ARB_SM also monitors bus grant and reports an error if grant comes at an illegal time.
When a request is granted, the state machine ~ t~rm; n~C whether request should be keep asserted for another packet It also delays requests if the EDAC Read FIFO is busy dumping unwanted data or is being used for a partial write-merge. When the Read FIFO is busy, it is unavailable to drive data beats for a reply packet .

MC_M_SM: This state machine drives reply packets on to the bus.
It monitors bus grant and uses the packet's format code to drive the correct number of beats onto the bus. The 3tates of this state machine are also used to generate MC_ONE_TO_GO and MC_EXTE~D .

SQ_EDAC_STATE: This state machine runs only when an EDAC
diagnogtic mode operation is being performed. It stays in the IDLE state until the NOP packet to the EDACs has been enqueued in the Output Queue. Then it advances to the DECODE state where is waits until OQC_FUIL indicates that the output queue has room to enqueue the reply packet to the requestor (either an RD_S_RPLY
ACK or NACK). It then advances through the ENQ_A and ENQ_B
states, asserting the SQ_ENQ~JEUE_OiJT_A and SQ_ENQUEUE_OUT_B

.~ 2 1 83223 signals to enqueue the reply packet in the output queue. It returns to the IDLE state only when the NOP packet receives a bus grant. It then asserts the SQ_EDAC_DONE 3ignal which deasserts the MC_BUSY_HI_N and MC_BUSY_LO_N signals.

HI_SNP_STATE: Selects the input for the Snoop CAM input mux.

EDiiC ASIC
Data integrity for the memory resources on the motherboard (52) as discussed hereinbefore, and the daughterboard (58) third level cache (TLC) to be discussed hereinafter, is effected by a standard Error Detection and Control device known in the art, referred to herein as the rEDiiAC" or "EDAC" ASIC, a block diagram of which is illustrated in Fig. 25. The Error Detection and Correction ASIC is a 240-pin PQFP CMOS gate array u3ing LSI's ==
LCA3OOK, 0.6 micron proceas, such as LSI part number LlA9566.
This part is a virtual fl~n~-t;rn~l equivalent for the IDT 49C466, a generally available memory error correction IC, described in detail in the IDT Hiqh Performance Loqic data book, the ~ h; n~8 of which are incorporated herein by reference.
The EDiiAC, in both applications, checks and generates 8 bits of checkbit information across 64 bits of data. Both reads and writes are supported by 16 word deep FIFOs, as well as a single word latch to bypass the FIFO. On the non-ECC side, parity is checked and generated in either polarity.
All single-bit errors are detected and corrected. All two-bit and some multi-bit (greater than two-bit) errors are ~ ~ 21 83223 detected. The EDiiAC also implements a byte merging facility, where individual bytes of data are ~- n~-d with a word o~ data read f rom memory .
Operations are controlled by a mode register. The EDiiAC
can be set up to generate and check ECC or to generate check and correct. Diagnostic information is captured in the EDiiAC and can be read by manipulating the mode register. The EDiiAC is implemented as a functional part of the memory system as described hereinbefore with respect to the MC ASIC, and as a functional part of the third level cache as will be described hereinafter with respect to the third level cache controller (TLCC) ASIC.

CACHE Cu~;~.- ~ -System Event Ordering In any multi-bus, parallelized processor design like the present system (50), ordering of events is a potential problem.
As an example, consider two processors sharing a database. Both processors have shared copies of the database data. Processor A
acquires the lock for the database. processor A modifies a shared database, then releases the lock to that database. If processor B observes the release of the lock before seeing the notification that his hard copy of the data is stale, he will use the stale data, causing l~n~-n~rl effects that are difficult to find. Note that the addresses of the data and lock can be completely different; there are no address match dependencies.

2~ 83223 - `
`.~
In the present illustrative - '; of a CC~UMA
ar-h;t~ re according to the invention, several 1 -h~n;~ are ~ d and distributed throughout the functionality of the system which ensure ordering and cache coherency. To begin with, the architecture is ~ n~od to r-; nt~; n the philosophy that any two consecutive events that modify system state which when issued by a single entity (e.g. processor, I/O device) must be observed at every other entity in the system in the same order that they were issued. Candidate events are: low priority events: CI_RD, CI_nR_UNLK, WR_T~U; medium priority events: INV_CMD, RD_INV_RPLY, CB_INV_CMD; and high priority events: CB_RPLY, CB_I~V_RPLY, WL
Ordering with respect to the initiation of tran8fers from the source is effected by requiring that for all operation types except writebacks and copyback replies, transfer requesters be pending until they receive an acknowledge of that transfer If they isaue a CI_RD, they mu3t receive the data return packet. If they issue a CI_WR, CI_WR_UNLR or WR_THRU they must receive an ACR packet. If they issue a RD_IM they must receive the data return block, and if they issue an IM they must receive the INV_CMD as their acknowledge. This -hAn; ~-- guarantees that the initial packet has either reached the des~;n~t;~-n (CI_operations) or has reached the memory controller (MC) and the invalidate/acknowledge packet has reached the backplane bus and has been accepted by all ~krl ~n~ bus interface arrays .
Ordering on a mo~h~rh-~rd (52) is guaranteed not only with the pending until acknowledge scheme, but also by the artifact of 2 ~ 83223 only having one bus, which s~r; ~ R the operations . The only other consideration on the source board is that it i~3 n~rF~RR~ry to guarantee that opPr~t; ~nR do not reverse within the input FIFOs o~ the dest;n~t;~n arrays or ASICs.
Guar~nte~; nr, of ordering at the b~rkrl~nf~ busses is dealt with for invalidate/ack packets only. Initial transfers do not cause inv~ t~q indirectly, as in a 8noop-type architecture.
In the present invention, all initial rer1uests are routed to the appropriate memory module, which looks up the state of the cache line held in the memory controller's (MC) (82) cache state directory. The memory controller will generate an invalidate/ack packet and route it to the h~rkpl~nP bus (56). Any affected mothPrh~rd (52) which cannot accept the packet (i e if their medium input r~ueue is full) will indicate by asserting RESEND.
No mo~h~rho~rd will accept the packet replied to with a RESEND.
This quarantees that the packet i5 accepted by all motherboard~
at the same time (this ;nrl~ R the mo~h--rhQ;-rd of the original reriuester) .

Motherboard Tn - nq Packets The merh~ described guarantee that an invalidatefack associated with an initial request will have reached the backplane bus interfaces of all moth~rho~rds (52). There is a case where the invalidate/ack on the initiator' 8 moth~rho~rd will be returned to the initiator, but the invalidate/ack on a remote mo~h,~rho~rd may remain for a period of time in the bus interface input rlueue~ This allows a scenario where the initiator can un-11~

.~
pend the processor and issue another request which modif ies system state. That request must not be allowed to get into the remote mo~hf~rho~rd before the earlier invalidate/ack.
A Cache Inhibited Operation (CI_op) followed by CI_op will not cause a problem because of the acknowledge requirement.
A CI_op followed by invalidate/ack will not cause a problem because of the acknowledge requirement. A CI_op followed by writeback/copyback will not cause a problem because of the acknowledge requirement. A writeback/copyback followed by writeback/copyback will not cause a problem because the two operations can only be physical memory references, and there cannot be stale shared data anywhere in the system. A
writeback/copyback followed by CI_op will not cause a problem because the f irst operation can only be physical memory reference, and there cannot be stale shared data anywhere in the system. A writeback/copyback followed by invalidate/ack will not cause a problem because the first operation can only be physical memory reference, and there cannot be stale shared data anywhere in the system.
An invalidate/ack followed by invalidate/ack is handled by arbitration on the dest;n~ n mo~h-~rh--~rd(s). Tnl ng me~aium priority packets are ticketed (time-stamped) when enqueued by the PI ( 64 ), and are granted based on age . ~ote that all medium priority packets are ordered, not just the invalidate/ack ones.
The PI may enqueue non- invalidate packets ahead of older invalidate packets while the invalidate packet is waiting to see if it will receive a PIBus (54) resend.

.~
An invalidate/ack followed by CI_op is handled by arbitration on the dest;n~t;nn board(~). The ORB (98) won't grant any CI_RD,CI_WR, CI_WR,CI_WR_UNLK, WR-THRU operations that arrive at the PI arraya from the backplane until all invalidate/ack packets that had been received within the last 31 cycles have been granted. The reaaon for allowing CI_ops to be granted before the older inv~l;rl~tGq is that there is a minimum latency for a requester to receive the ack from the backplane, unpend a procesaor, issue a CI_op, and have that operation arrive at a remote mothGrho~rd~
Another requirement i8 that the invalidate/ack and CI_op must not be allowed to reverse order in the input queues of the target ASIC. This has been handled in the ASIC designs for the CI (124) and GG (78) . The RI ASIC (74) is not a problem since it does not initiate requests, and the MC ASIC (82) is not a problem since MC ;ntGrnAl registers are not used as 8 I, ~nres for coherent ~ ;r:lt;nn~2 by software An invalidate/ack ~ollowed by writeback/copyback is handled by arbitration on the destination board (8) in conjunction with the memory controller. The MC (82) guarantees ordering by routing local memory reference to the h~rk~ nG (54), whic~ then arrive through the medium ;n~ 'n~ queue (in the PI). This is only nGrG~ry for memory cache lines which have been modified while there is one or more outstanding invalidate/ac ops which has resided in a PI backplane bus input queues for more than 31 cycles .

2 ~ 83223 .--The ORB (98) monitors the PI's (64) medium priority requests, and sends the results to the MC (82) . This pin is called ORB_ORDER_NEEDED. The MC has a bit (UNUtW~;~;L~) in the directory that indicates the need to route local replies to the backplane. ~ote that remote replies do not change the routing requirements of local replies. Once a reply has been routed to the backplane (54) and been "snooped" by the MC (82), further routing to the b~ nl~ based on the original condition is unnecessary .
The design for the present invention implements the following rules to ensure event ordering. Many of these rules target coherent ordering on the busses between packets of di f f erent prio ri ties .
1. All packets to the same cache line address always use the same PI bus. This ~-;nt~;n~ order between packets of the same priority for any cache block.
2. ~igh Priority Packets can Al~WAYS get to memory.
Livelock can result if this rule is broken. High priority packets are always accepted by the MC (82), they never get a RETRY.
Forward progress of a high priority packet should never depend on the forward progress of another packet.
3. Medium Priority Packets received from the PIBus (56) are granted onto the PixBus (66) in the order that they are enqueued by the PIs (64). Medium packets are ticketed as they are enqueued in PI-3PIX queues. Ticketing a medium packet prevents it from being granted the PixBus (66) ahead of any older medium packets. Mediums are ticketed to ensure that memory responses arrive at other nodes in the order that they were generated by the memory. Medium priority packets are enqueued by the PIn (64) in the order that they arrive on the PIBua (56), with one exception. Packets that are targeted at multiple nodes are held by the PI (64) for two cyclea before F~nql~ ;n~ them. The two cycles are required for the PI (64) to determine if all the other targeted PIs were able to take the packst. A packet may not be Pn~lP-lP~l by any PI (64) unless all the targeted PI3 can enqueue it in the same cycle. Because of this two cycle delay, a newer medium packet arriving on a different PIBu3 could get an earlier ticket that the f irst packet . Although a RD_S_RPLY can not be targeted at multiple nodes, it can get a node beat, which would cause the PI (64) to also delay it for two cycles.
This ordering scheme prevents these low priority packets from bypassing older medium priority inv~l;fl~tF~q, and is needed to made software 5. ,hf~re3 work. Invi~ t~q which arrive at a PI
(64) le3s than 31 cycle3 before a CI_RD, CI_WR or CI_WR_UNLK are not believed to cau3e ordering problem3 . The n: _ h~re ordering problem require3 that the invalidate is the local memory' 8 acknowledgment of a remote reque3tor' 3 modification of a data location. The low priority reque3t would be a reque3t from the 3ame reque3tor to release the L. , h~re for the data location.
The ordering problem occurs if the q. , h~re relea3e reache3 the local memory before the older data invalidate i3 snooped by local caches. The invalidate packet is .on~lellP~l by the PIs on both the local and remote nodes in the same cycle. It is believed that it requires more than 31 cycles from then for the invalidate to r~
reach and be processed by the remote requestor and for the requestor to then issue the ~ _ ~ = release. The number 31 i8 ~JL~J~L hle to 6maller values.
4. A packet with more than one target node will arrive at the PI (64) queues of each node simult~nPo~ y~ This helps ensure that snoopa are seen on all boards in the same order. This means that RD_INV_RPLYs and INV_CMDs that are targeted at local requestors but that need to be snooped on remote node3 are ~ent PYtf~rn;~l to the PIBus. The local requestors are not allowed to snoop the packets until they arrive back on local PixBus.
5. All CB_I~V_CMDs and CB_CMDs are sent PYtPrn~l, This ensures that a copyback command targeted at a local requestor (one on the memory' 8 own node) will never arrive at its target be~ore an older RD_INV_RPLY or INV_CMD. Since the snoopable RD_INV_RPLY and INV_CMD packets may have to be sent to local requestors via the backplane, this rule ensures that the copyback command will not bypas~2 the invalidate by being sent to the ~=
requestor via the local PixBus. Instead the copyback command ends up serialized with the invalidate in the PI (64) medium queues .
6. All I~V_CMDs are sent PYtprn~l Since local RD_S_RPLYs and RD_INV_RPI.Ys may be sent PYt.~rnAl when a cache line is marked unordered, INV_CMDs must always go ~Ytprn~l, While the read replieg are tracked in the director' 8 Snoop CAM, the INV_CMDs are not. Be sending all INV_CMDs P7ctprnF~l we can guarantee that a local invalidate will never arrive at its target ahead of the read data that it is supposed to invalidate. Sending INV_CMDs external also prevents stale INV_CMDs from causing data corruptions .
7. I~NDO_MODs are issued for 88410 return phase miscompares and idles. The CI will iaaue an ~NDO_MOD if it receives a reply to a RD_IM or IM request and the 88410 either does not come back to take the reply or comes back asking for a different address.
The I~NDO_MOD will take the directory state for that block from modified back to shared, and the CI will drop its RD_IM or IM.
8 . Medium priority packets are serviced bef ore Low priority packets in GG ASIC (78). When the GG (78) receives a low priority packet, it services older Rn~ p;lhle RD_INV_RPLY and INV_CMD packets before the new low packet. When a low priority packet arrives, the GG f lags any medium queue entries which contain either RD_INV_RPLY packets that are targeted at other requestors or any INV_CMD packets . All the f lagged entries muat be serviced before the low packet. Any new low priority packeta are RETRYed since the GG does not enqueue low priority packets.
Any new medium priority packets are placed in unf lagged queue entries because they do not need to precede the older low priority packet. RD_INV_RPLYs that are targeted at this GG are data returns, not snoopa, and do not need to be aerviced before the newer low packeta.
9. Medium Inv~ t~ are aerviced before Private Reaource Requests in CI ASIC (124). The CI ASIC will retry any private resource requests that it receives from the 884108 while there are ~n(~p~hlP inv~ (RD_INV_RPLY, INV_CMD, DB_INV_CMD) in the medium input queue.

2 ~ 83223 ,--10. Read Replies are ordered with INV_CMDs when data has been modified by a Xigh Priority Write from a remote node. Local RD_S_RPLYs and RD_INV_RPLYs are aent ~t~rn~l through the PI (64) queues to be ordered behind older INV_CMDs when there ia a chance that the read data could release a ~OLLwdLt: n , hr~e ~or a data location affected by the INV_CMD. This is actually an ordering problem between high and medium packets, however no ordering reatrictions may be placed on the high packets aa they must have n; ~-lPri accegg to the memory. Interfering with this will lead to system livelock. Therefore:
11. Special ~tt~nt;r~n i8 paid to Ordering between Eigh and Medium Packet3. M~;nt~;n;ns order between high priority writes and medium priority inv~ requires aome details. The ordering problem with high ~?riority packets is that a high priority write (WB, CB_RPLY, CB_INV_RPLY) could bypass an ;n. n~ medium priority snoopable invalidate (INV_CMD, RD_INV_RPLY). Aa deacribed hereinbefore with reapect to the MC
ASIC, while a signal ORB_ORDER_~EEDED is asserted, the MC marks any memory block that receives a high priority write as pot~ont;~lly unordered. The MC (82) will send any local read replies to that block PYtPrn~l through the PI's to guarantee that they will be ordered behind the outstanding invalidate.

Packet Node Beat~
In order to effect the directed broadcast mechanism according to the invention, i . e . to ensure that only nodes that have a copy of a cache line being accesaed are ~ffe~t~, an extra 2~ 83223 beat is used at the beginning of a packet header. When the directory senda a snoopable operation to the PIBus it attache~3 the extra beat called a node beat to the bP~;nn;ng of the packet.
The node beat ;ntl;c~t~ to the PIs which nodes need to receive the packet . The node beat is the f irst beat of any packet which has the Remote Snoop Bit, bit 45, set. The Remote Snoop Bit is set in both the node and header beats. Any packet on the PIXBus with a Remote Snoop Bit set is known to be headed for the h~ kpli~nl~ and will not be snooped. When the PI (64) drives the packet back into the PixBus, the PI (64) strips off the node beat and clears the Remote Snoop Bit in the header beat.
Non-snoopable packets are targeted at only one requestor, the one indicated by the requestor ID. So these packets do not need a node beat to keep local requestors from enqueueing them.
For these packet6, the PI ( 64 ) looks at the requestor ID to d~t~ T i n~ if the packet is targeted at a local or remote node .
If the ID is remote, the packet is sent to the PiBus. If the ID
is local the PI ( 64 ) does nothing with the packet and it is delivered on the local PixBus.
Only the memory can generate packets with node beats. The following snoopable packets are always generated by the melaory with a node beat: INV_CMD, DB_INV_CMD, CB_CMD. The RD_INV_RPLY
snoopable packets are generated with a node beat if they are going to a remote node or if they are being sent to the PiBus to ~-;nt~;n order with older inv~ When the packet is going remote, it gets a node beat regardless of whether it is targeted at one or more nodes.

2 ~ 8 3 22 3 ~ ~
The RD_S_RP~Y non-snoopable packets are generated with a node beat only if they are being sent to the PiBu8 to m~;nt~;n order with older invAl ;~lAtP~ These are local repliea, 80 the PIs would not send them to the PiBus if they did not have a node beat .
The AC, NACK, RETRY, NOP packets are non-snoopable packets that never get a node beat.

Directory Cache CoherencY
The coherency protocol of the present invention is based on a full-map directory structure m~;ntA;n~cl in the memory modules.
Any tim. e a cache line changes state the directory must be updated. For each cache line the directory knows which nodes (moth~rho~rds) ~have copies of the line and in what state the line is held. For the cache line to transition to a new state, the directory mu3t receive a request f rom and issue a response to the cache that desires the data. If the new state makes existing cached copies of the line stale, the directory will send an invalidate to all the nodes that have copies of the line. Such inv~ At~ are targeted at nodes, not individual caches, because the directory stores node, not requestor, infr~r~m~ti~n~ Bei4g able to target coherency updates like invAl ;~At~q at specific nodes is the directory' 8 main advantage as it reduces llnnf~rl~ snooping.
Each node which ~ntA;n~ local memory also has a directory.
The directory c~)ntA;nA one entry for each cache line in the physical memory space of that directory' 8 associated memory. The directory entries contain coherency information for their s-- 21 83223 respective cache lines . The directory entry f ields as def ined hereinbefore with respect to the MC ASIC, include:
VALID BITS: an 8 -bit f ield . Each bit pertains to a specif ic node on the PIBus . A bit set in this f ield indicates that there is a valid copy of the cache line at the corrP~p-~n~l; n~ node .
MODIFIED BIT: a l-bit ~ield. This bit, when get, ;n~ P~
that there is a modified copy of the cache line somewhere in the system and the line is stale in memory. When the Mod bit is set, one and only one Valid bit should be set. Data coherency allows only one, ~;f;~ copy of a cache line at any one time.
LOCK BIT: a l-bit field. This bit indicates that there is a lock set on this cache line. When this bit is set, all accesses to the corresponding cache are retried (except for the unlock operation) .
U~U~;~;L~ BIT: a l-bit field. This bit indicates that this cache line may be subject to packet ordering constraints. When this bit is set, some read replies to local requestor~3 may have to be sent via the PIBus, i.e. ~tPrn~7 n, to preserve coherency packet ordering .
BUSY - COPYBACK CAM ~IIT . This is not a directory f ield although it could be ; ~1 ed as one . The directory has a 2 entry CAM
which stores the address, opcode and requestor ID of requests for which the directory must request a copyback. All memory requests are looked up in the Copyback CAM in parallel with accessing the directory entry. A hit for the Copyback CAM indicates that there ;:
is an outstanding copyback pending on that cache line. When this 21 ~3223 ~
bit i8 set, all acce6ses to the corr.o~pnn~l;n~ cache line are retried (except for wr; t~h~nk~ and copyback replies) .
All memory addresses on the PIBus (56) are routed to the ~L~,~Liate memory module. Each address is put in a queue for service by the memory. Each address is looked up in the directory and the memory will generate a response based on the directory rnn~l~n~ and the type of access requested. The memory will send data and acknowl ~ '_ responses only to the node that requested the cache line. Snoopable L~ lses are directed only to nodes that have a valid copy of the accessed cache line.

DirectorY States The memory directory can hold a cache line in one of five states, as described hereinbefore and elaborated upon hereinafter. Those states are:
r~NUSED. This state means that the cache line i~ not re3ident in any caches in the system. The only valid copy of the line is in memory. All valid bits and the modify bit are zero in this state .
S~RED. This state means that there may be caches with copies of the cache line that are the same as the copy held by the memory. One or more valid bits in the directory are set and the modif ied is zero .
MODIFIED. This state means that one and only one cache in the system has a copy of the cache line . This cache ' 8 copy is assumed to be different than the copy held by the memory. One valid bit is set along with the modified bit in this state.

2~ 83223 `^ LOCKED. This state means that this cache line has been locked by a ~3ystem requestor. The cache line is unavailable to other requestors until it is unlocked. This state is a cache inhibited state so no shared copies exist. The lock bit is set in this state and all vbits are zero.
BUSY. This state means that this cache line has an outstanding copyback command. The directory entry bits are unchanged when a copyback command is issued, so the modified bit and the vbit of the node which currently holds the data will still be set to one. The busy state is set by loading the address, opcode and requestor ID of the request in to the Copyback CAM.
These five states are qualified with the UNORDE~ED bit which indicates whether the cache line is subject to packet ordering constraints. This affects whether local replies need to travel via the eIBus, but does not af f ect the type of reply packet or the coherent directory state.
For further discussion it is necessary to distinguish between cache states and directory states. A cache keeps state information with each cache line it holds. Those state3 follow:
Invalid. This state means that the cache does not have a valid copy of the line.
Shared. This state means that the cache has a valid copy of the cache line and that this copy is the same as the copy held by the memory. other caches in the system may also have shared copies of this line.

`' Exclusive. This state means that the cache has a valid copy of the cache line and that thi~ copy iB the same as the copy held by the memory. No other cache in the system has a valid copy of this line.
Modified. This state means that the cache has a valid copy of the cache line and that this copy is not the same as the copy held by the memory. This is the only valid copy of the cache line in the system.
The coherency model based on 88110 processors does not support the EXCLUSIVE cache state. Therefore the CI ASIC (124), described hereinafter, must make the EXCLUSIVE state of the 88410 and 88110 caches invisible to the PIBus and the directory. The directory will mark lines modified that may be ma~ked exclusive in a cache. The directory will expect a copyback o~ accesses to ~::
modified lines and the CI (124) must generate a copyback from 84410 in this case.

Director~ and Cache State TransitiQn ~=
The tables in Fig 26A, 26B and Fig. 27 ~ummarizes the changes in directory and cache state for each pos~ible memory transaction of the present invention. Cache state refers to the state of the 88410 and I/0 caches. The tables also show the type of packet is~ued by the directory/memory in response to each request. The directory ---intA;nF~ coherency in the 3ystem~s caches by issuing copyback ,:~ n~l~/ and invalidate c~ n~lq as needed .

~- There are separate tables for cached requests, Figs. 26A and 26~, and cache inhibited request3, Fig. 27. A cached request is one that causes data to be read or written in a cache. A cache inhibited request does not read or write data in a cache and it is assumed that a cache will invalidate a valid cache line if it issues a cache inhibited request to that line. Cache inhibited requests will generate coherent responses from the memory directory, i . e ., they are snooped .
The four lines in each table entry list the following information based on the request and the INITIAL state of the cache line in the directory:
1. The memory response. This is the operation that the memory will generate based on the request and the INITIAL
state o~ the line.
2. The NEXT state of the directory. This indicates the state tran3ition in the directory caused by the request ~his is the final state o~ the directory after all activity initiated by the operation is complete.
3. The NEXT state of the cache which initiated the operation. This is the final state of the cache after all activity initiated by the operation is complete.
4. The NEXT state of all other caches in the system. This is the final state of the caches after all activity initiated by the operation is complete.
For transactions that cause a copyback command (CB_CMD or CB_INV CMD) the state transition tables show the directory and cache state after the copyback command has been issued and ~-- 21 83223 received and cache state ha~ ~een updated, but before the copyback reply ha~ been generated.
If the directory detecta one of the states marked as "Not Po~ible", the MC ASIC (82) will i~sue a fatal coherency error.
The "No Change" entry in the table means that a cache line can be shared in some caches and invalid in others and the operation =.=_ will not change that 3tate.
The following legend definea abbreviations in the tables in Fig~. 26A, 26B and 27 (and el~ewhere in this Specification).
RD_S = Read Shared.
RD_S_RPLY = Read Shared Reply.
RD IM = Read with intent to modify.
RD_INV_RPLY = Read invalidate command.
RD_S_RPLY = Read ~3hared reply.
CI_RD = Cache inhibited read shared.
Cs_CMD = Copyback ( E;hared) command .
CI_WR = Cache inhibited write.
ACK = acknowledgment.
WB = Writeback.
UNDO_MOD = Undo Modified State.
UNDO_I.K = Undo Lock State.
INV_CMD = Invalidate command.
CB_INV_CMD = Copyback invalidate command.
CI_RD_LK = Cache inhibited read re~ue~t to lock.
CI_WR_UNLK = Cache inhibited write unlock.
Mo~t coherency is~ues are ea~ily handled by the directory is~uing coherency command~ like invalidate~ and copyback c. n~

and by maintaining order between packets. However there are some special cases that require more attention One such area i8 stale packets. These occur in four main ways: unsolicited writebacks of data which cause stale copyback ,~ n~; multiple bus routes allowing memory responses to arrive ahead of older snoop ~ Ic which cause stale copyback replies;
multiple requestors simultaneously attempting to modify the same cache line which cause stale IMs; and stale IMs combined with multiple bus routes which can result in stale INV_CMDs.
A cache which holds a modified copy of a cache line may choose to write it back to memory at any time to make room for new cache lines. This writeback will appear on the bus as a W~3 from the 8~410 and as a CB_INV_RPLY from the GG Cache. If the directory sends the cache a copyback command while the cache is voluntarily doing a writeback, the writeback will pass the copyback command in transit. When the writeback arrives at the memory the directory u6es it to satisfy its outstanding copyback request. When the copyback command arrives at the cache, it is snooped but does not cause a copyback since the cache has already given up its modif ied copy of that cache line . Once the writeback is generated the copyback command is considered stale, sin~e it is no longer needed.
Stale copyback commands may appear at cache6 at any time.
Normally they only cause an extra snoop. However if the target cache line has , I ; nPd shared in any caches and the copyback command is a CB_I~V_CMD, those caches will have to invalidate the line. A stale copyback command can even cause a stale copyback reply from a local requestor. All copyback ,: n~1f ar-e sent via :~
the PI33us, even when targeted at the memory~ s own node . This is an ordering rule which prevents copyback command f rom arriving ahead of older invalidate ,~ ~ which may have been sent to multiple nodes, and therefore were sent via the PiBus. Once a cache has done a writeback of a line, the directory is free to give it to other requestors. If the line is requested by a local requestor, the memories' reply would be sent via the PixBus, allowing it to arrive at its target before the older stale copyback command which may still be in the PI queues. The new requestor may even be given permission to modify the line.
Once the stale copyback command does arrive, the cache has no way of knowing that the command is stale and will have to =:
snoop it. If the cache has only a shared copy, then an unnecessary invalidate may be done and the cache will have to request the line from memory again. If the cache has a modified ~_ copy, it will have to do the requested copyback. This is a stale copyback reply which the directory is not expecting to see. The =
directory handles stale copyback replies (sometimes called unexpected copyback replies) as though they were writebacks, with the exception that a C3_INV_RPI,Y does not leave any shared- copies in any caches.
Stale copyback ~ c and stale copyback replies do not cause any coherency problems. The data is NOT stale and can be safely writ~en to memory. There is a slight performance penalty becau3e of wasted bus and snoop cycles and because they cause 2 1 ~3223 .--processors to writeback cache lines before they are done with them .
For stale IM squashing, if multiple caches have shared copies of the same cache line, more than one of them may request modified acceæs to the line by issuing an IM packet. The directory honors whichever request it receives f irst . The f irst IM receives an I~V_CMD response which will be snooped by all the~
caches which have shared copies of the line However the other IM
requests were issued before the INV_CMD arrived. The cache that got the modified status will take the INV_CMD as an acknowledgment because it ~ nt:~;nc its requestor ID. The other caches will snoop the INV_CMD, invalidate their cached copies, drop their outstanding IM request and issue a RD_IM request in its place. The outstanding IM requests are dropped because they are stale, since those cache' 8 no longer have shared copies of the line.
Stale IMs can also be caused by the memory respondin~ to a RD_IM with a RD INV_RPLY. If other caches have IMs outstanding when the RD_INV_RPl;Y arrives for snooping, their IMs become stale and the cache ~ nvalidates and issues a RD_IM instead .
I~ the directory can tell an IM is stale it will not service it and will not issue a reply packet. Stale IMs are not a problem as long as all nodes can tell they are stale. Coherency errors will develop if stale IMs are serviced by the directory.
Therefore stale IMs are squashed whenever they are recognized as stale. Squashing means that the IM is removed from the request stream (sometimes the IM is actually replaced with a NOP) . The .--- following subsections describe how stale IMs are detected and squashed at various places in the system.
In the CI queues, when the CI (124) snoops an INV_CMD that does not have its re~uestor ID but does match the block address of an IM request in its Outstanding Request Register (ORR) (300), it will clear the ORR and will no longer expect a reply to that request. The CI puts the INV_CMD on the 88410 bus for snooping.
The 88410 invalidates its shared entry and a RD_IM is issued in place of the IM. Clearing the ORR in this case is called ~ =
squashing. The CI will also squash the IM if it snoops a RD_INV_RPLY that matches the IM's address. The CI ~124) may issue a NOP when it squashes an IM that it is about to put onto the PixBus (88) .
Stale IMs are also squashed in the PI (64) queues. If a RD_INV_RPLY or INV_CMD in the medium queue passes an IM to the same cache line in the low queue, the PI changes the IM packet to a NOP by altering the opcode stored in that queue entry.
Invalidates in the PIX-~PI medium queue squash IMs in the PI->PIX
low queue . Invalidates in the Pl- >PIX medium queue squash IMs in the PIX- >PI low queue . If the PI receives a RD_INV_RPI,Y or INV_CMD from the PIBus just before it drives an IM onto the PI
bus, it issues a PIBus Resend to recall the IM. This will keep the IM at the head of the PIBus output queue longer 80 that the PI will have time to squash, if required. The PI does no address comparisons before issuing the Resend, 80 the need to squash is not guaranteed. If the PI did not Resend the IM, it might not have time to change the IM opcode to a NOP if a squash is needed.

.--Stale IMs are also squashed in the MC queues. RD_INV_RPLY or CMD packets in the output queue 3quash IMs to the same cache line in the input queue. The IM opcode of a squaæhed IM is replaced with a NOP opcode. When the NOP reaches the head of the MC input queue, the packet is dequeued and discarded.
Stale IMs from remote requestors (those not on the same node as the targeted memory) never survive queue squashing. There is a straight path from the MC->Pl->CI for the invalidate packet and the IMs follow the reverse of the same path. It is impossible for the invalidate and the IM not to pass each other, which will result in the IM being squashed . However stale IMs f rom local requestors (those on the same node as the targeted memory) will often survive queue squashing. This is because some invalidate packets are sent through the PI queues rather than directly to their local targets via the PixBus. A local IM request will always travel directly to the MC via the Pixsus and can bypass an older invalidate packet in a PI queue without getting squashed.
This means that the IM will arrive at the directory and the directory will attempt to process it. The CI can handle this case by issuing an UNDO_MOD (Undo Modi~y) when it received the INV_CMD . ~
In the present invention, the system would work without directory squashing, but it is still more efficient to squash IMs (Intent to Modify) as soon as possible.

.--ORB AS I C
The ORB ASIC is a functional element of the E~y~3tem according to the invention, which basically provides two functions:
controlling arbitration for the motherboard bus structure (i e.
the PIXbus and its sub-busses); and controlling the BAXBAR switch bus transceiver In the present illustrative embodiment, the ORB
and BAXBAR are implemented in the same ASIC
The ORB provides the arbitration services for all clients on the individual motherboards or node subsystem. The ORB also provides the control necessary to allow the BAXBAR switch, described hereinafter, to propagate transfers. The ORB is instrumental in guaranteeing forward progress and avoiding livelock/deadlock scenarios. This is accomplished by use of three levels of priority of requests, use of three levels of "busy"
indications from potential targets, support of '~deli-counter"
ordering across all four PI arrays, use of windowed arbitration with a fairness algorithm within windows, and by means of configuration-time proyL h; l; ty of arbitration and grant timing. The ORB also provides ordering support for ensuring that CI_WR, CI_RD, CI_WR_UNIK, WR THRIJ operations rom a processor do not bypass invalidates caused by that same processor.
The windowed arbitration implemented by the ORB implies that all outstanding re~auests are captured simultaneously, and serviced to completion (if possible) prior to re-sampling later requests There is an exception to the windowing of re~uests local to a motherboard. That exception is that although CI, GG, RI and PI requests are windowed, the MC re~uest is not. The reason for this is to keep the MC output queue emptying. If the MC request was windowed, only one memory bus tenure would be allowed within a request window. The effect of this is to bottleneck memory references and to under-utilize DRAM bus bandwidth .
This occurrence of bottlenecking the outputs of memory i8 a result of the split transaction nature of the PIXBus. In a system that doesn't have split transaction system busses, all references by requesters to memory imply that the output of memory is immediately serviced - hence one memory transaction is retired for each requester' 8 transaction.
In the present implementation according to the invention, there is a single bit state machine which tracks when a window is in progress. This bit also serves as a mux select to re-circulate the r^~-;n;n~ wlndowed requesters into the requester register.
Thiq window bit is set upon detecting that there is an outstanding request needing service. It is reset if either all outstanding requests have been granted the system bus, or if none of the requests L~ ;n;n~ in a current reo~uester window register can be serviced because of the assertion of busy signals.
The ORs is effectively divided into a plurality of functional blocks, illustrated in Fig. 28, described hereinafter.
sB_RQ_REQ~EST MODUl: E
This module collects all of the bus requests, and arranges them in "windows" to avoid starvation.
A new window is sampled when there are no outstanding reouests in the previous cycle, or where there were requests in a grant cycle, but all were blocked from being granted because of busys or tickets that cannot be granted No outstanding requests i8 obvious What is less obvious is when all requesters are blocked by busys In a traditional system with RETRY instead of queue full busys, that loosely correlates with all ~ ;n;n~
requesters having gotten the bus, seen RETRY, and re-issued bus requests (honored in the next window).
There are also instances when a PI medium request cannot be honored because the ticket presented for that operation is next in sequence. This occurs when a PI has more than one outstanding medium request Since only one medium request is serviced per window, that PI may hold a blocking ticket number until the next window is defined This condition is reported from the BB_TI_TICKET module as TI_FINISEI~iD_TICKETS.
The ~ n; ~m to determine when all requesters are blocked from being granted is detecting that there are no potential candidates for granting (unqualified grants) when a TRACKER state machine, illustrated in Fig 29, is about to enter the GRANT
state This implies that there is at least one outstanding request and that no-one can be granted.
The feature o~ starting a new window when there are blocked requesters can be defeated. ~ormally it is undesirable to wait until all requesters have been granted before opening a new window for performance reasons, but it has been incluaed as a debug tool (EMPTY_WI~DOW scan bit) There i8 an additional debug feature that inhibits grants up to three cycles after ~le~;n;n~
the start of a new window (W_D131AY[l: 0] ) .

2 ~ 83223 :
.--This module contains registers that are set when there are requests being asserted from the other ASICs at the time that a new window is defined (i.e., "windowed requests~ for all requesters). Each register remains asserted until a grant is issued for the respective request, at which time it is cleared.
There is a Eingle window for each CI and GG ASIC (400, Fig.
28) . The CI and GG ASICs or arrays each present three requests:
high, medium and low. They are allowed to change their requests or withdraw their requests, but are not allowed to assert more than one request line at a time. The request lines are or-ed together 402 to determine the setting of the respective request window . The request window is cleared if the ASIC withdraws it ' 5 request. The windowed request is then generated by combining the window bit with the registered high, medium and low registered request lines. I~ the UNWINDOW_E~I option is asserted, the high request line registers ~or these ASICs are or-ed into the request window every cycle.
The MC and RI ASICs each have one window, since they only have one request, medium. Normally the MC is not included in the windowing scheme, but it has a degrade mode, i.e., MEM_INCI.UDE, that allows the MC to be subject to the windowing. When ~
MEM_INCLUDE is not asserted, the request window is updated ~nt; n~ usly with the MC request line .
The PI ASICs have three window registers, one each for low, medium, and high reque5ts. The high request windows allow c~nt;n~ us updating from the high request lines from the PI if the ~IIG~_INCLUDE option is cleared.

2 1 83223 ~
.--The BB RQ REQUEST module checks to make sure the CI and GG
ASICs do not simultaneously i~3sue multiple priority requests.
The module also checks that the other ASICs do not withdraw their requests without being granted.

BB_TI_TICKET Module The BB_TI_TICKET module keeps track of the ordering of medium priority requests from PI requesterg, and m~;nti~;n~
ordering of cache inhibited low requests with respect to medium invalidate type requests. The BB_TI_TICKET module instantiates eight other modules to effect its operation, four being BB_~OW_FIF0, and four being BB MED_FIF0, for use as ticket fifas.
Snoopable operations (like Invalidate Command, Copyback Invalidate Command, Copyback Command, Read Invalidate Reply) must arrive in the time 6equence with which they were issued. All snoopable operations are MEDII~M priority, and issued by MC ASICs, however, not all medium priority operations are snoopable.
Because there are four h~kr~nPl busses, and memory queues, it is possible that snoopable operations could reverse order because of dif f erent backpanel latencies .
This has been avoided by the following three ----h~n; sms .
First, a single source cannot issue a request that will result in a snoop condition until any similar outstanding operation has been replied to with an acknowledge. Second, the backpanel bus interface ASICs (PIs) do not accept a snoopable operation unless all PIs on all motherboards are able to accept the operation into their input queue. Third, each incoming snoopable (medium priority) request i8 ticketed with a time stamp, and the ORB only services their requests in the proper order. The TI_TICKET
module deals with the assignment of tickets and the ordering of their grants.
There are 16 ticket3, sufficient to handle the four medium queue entries in each of the four PI arrays or ASICs. The tickets are n-~;n~i~;nPfl in the ORB as a set of four fifos 404, one :
for each PI. A signal from each PI, PIx_NEW_CUSTOMER_N, announces the arrival of a medium priority operation at the h~kr~nPl The fifo is then loaded with an incremented value of :
the last ticket to be assigned. If multiple PIs assert PIx_~EW_CUSTOMER_~ simultaneously, they will each be assigned the same ticket. Tickets are four bits in length and wrap. The ~
fifos are designed to start empty on WARM RST N. The input is the new ticket value to be assigned, the push is the PIx_~EW_CUSTOMER_N pin coming from the PI, and the pop is a ~uffered version of the grant indication ~ent to the PI to service the earliest medium request. The output is the oldest ticket captured in the fifo. Note that overflow and underflow detection is provided.
Since requests are windowed, there is a condition which occurs in which one PI could have obtained two or more tickets, the additional tickets having a lower value than other PIs ~
tickets within the same request window. In that event, ~ince only one ticket can be retired within the window, when a PI which holds a ticket with the oldest value does not have a valid windowed request outstanding, no more medium PI grants will be issued until the next window is establi~hed The BB_TI_TICKET logic is responsible for determining the ~ ~_ oldest outstanding windowed PI request and informing the BB_PE PRIORITY_ENCODER module. This is accomplished by keeping track of the ticket number for the last medium PI request to be granted .
Compares are made between outstanding requesters ' ticket numbers and the last ticket to be granted. A match indicates that those outstanding requesters must be serviced prior to other outstanding windowed requests Compares also are made against an in~ tP~l value of the last ticket to be granted. If thPre is no match for the last ticket to be granted, but there is a match between a windowed request ticket and the incremented value, then that requester must be serviced prior to other outstanding windowed requests Out-of-sequence ticket detection logic is provided. This is identified when there are one or more PI medium request lines asserted, and none of their tickets match either the last ticket granted or the incremented value of the last ticket granted BB_PE PRIORITY_ENCODER
The BB_PE_PRIORITY_ENCODER module selects one grant candidate from each of three categories, high, medium, and low It takes as input device busy information from the ss_GR_GRANT
module, ordering information from the BB_TI_TICKET module, and windowed requests from the BB_RQ_REQUEST module The BB_PE_PRIORITY ENCODER module takes as inputs; the set of windowed requesters from the BB_R_REQUEST module, various -combinations of registered BUSY conditions from the BB_GR GRANT
module, medium PI request priority TI PIx OLDEST information from the BB_TI_TICKET module and TR_TRACKER_GRANT_NEXT f rom the BB_TR_TRACKER module. All of this information is condensed, and the requests prioritized within one cycle. The result is the generation of up to three grant candidates, one for high priority grants, one for medium priority, and one for low priority. These are referred to as the "unqualified" grants, the signals that the BB_PE_PRIORITY_ENCODER module outputs. This unqualified grant ~is then shipped to the BB_GR_GRANT module.
Competition within a window for high priority unqualified grant (PE_U_GNT xxx_XI~ is implemented with a wire-or arbitration net, which results in ultimate selection of a single requester to =~
receive the grant. Each requester is assigned a fixed three bit encoding and this encoding is xored with the shuffle code to =~
generate an ID. Each requesting device drives it' 8 IDs onto an arbitration net, i.e., or'ing net and near the end of the cycle reads it off of the net. What is read is compared with what it drove and, if the ID read matches the ID driven, then that-requester will become the unqualif ied grant candidate .
For the high priority arbitration net, the initial assignment is xored with the shuf f le code such that bit 2 of the assignment is xored with bit 2, bit 1 is xored with bit 1, and bit 0 is xored with bit O.

2 ~ 83223 .--Competition within a window for medium priority unqualified grant (PE_U_GNT_xxx MED) also is implemented with a wire-or arbitration net Since there are ten medium requesters, a three bit arbitration net i~ not sufficient. The medium requesters will be put into two groupings. The MC and RI requests will be treated as one request group, and the eight other requesters will be treated as another request group.
The MC has priority over the RI within the MC/RI request group and the MC/RI request group normally will have priority over the other group, the CI/GG/PI request group. In the case of concurrent requests from the two groups that are potential candidates for unqualified grant, the tie will be broken by P~r~min;n~ a ping-pong toggle. The toggle flips every time there is contention between the two groups.
Each requester in the CI/GG/PI request group is assigned a fixed three bit encoding. This encoding is xored with the shuffle code t~ generate an ID. Each CI or GG ASIC with a windowed request, not blocked by busys, drives it's IDs onto an arbitration net (or~ ing net) and near the end of the cycle reads it of f of the net . What is read is compared with what it drove and, if the ID read matches the ID driven, then that requester will become the unqualified grant candidate.
The PIs use the TI_PIx_OLDEST to determine if they drive the medium arbitration net. Multiple PIs can have their TI_PIx_OIIDEST asserted. Each PI with TI_PIx_O~DEST asserted, that is not blocked by busys, drives it's IDs onto an arbitration net (or' ing net) and near the end of the cycle reads it off of .--the net. What is read is compared with what it drove and, if the ID read matches the ID driven, then that reo~ue~ter will become the uno~ualified grant candidate.
For the medium priority arbitration net, the initial assignment is xored with the shuffle code such that bit 2 of the assignment is xored with bit 0, bit l is xored with bit 2, and bit 0 is xored with bit l. This provides a different arbitration priority pattern from high and low requests within one window.
Competition within a window for low priority unqualified grant (PE_U_GNT_xxx_BO) is implemented with a wire-or arbitration net. Each requester is assigned a fixed three bit encoding, and this encoding is xored with the shuf f le code to generate an ID .
Each requesting device drives it ' s IDs onto an arbitration net (or' ing net) and near the end of the cycle reads it off of the net. What is read is compared with what it drove and, if the ID
read matches the ID driven, then that requester will become the unqualified grant ~'Alltl; ~AtF._ For the low priority arbitration net, the initial assignment is xored with the shuffle code such that bit 2 of the assignment is xored with bit 0, bit l is xored with bit 1, and bit 0 i8 xored with bit 2. This provides a difference in low reque~t prioritization from either high or medium request priorities within one window.

BB_GR_GRANT
The BB_GR_GRANT module takes the three candidates from the BB_PB_PRIORITY_ENCODER module, does a last-minute check of appropriate device busy signals, and issues a grant to one of them as specified by the sB_PE_PRIORITY_ENCoDER module.

BB_TR TRACKER MODULE
The BB_TR_TR~CKER module takes the grant information from the BB_GR_GR~NT and takes a "ONE_TO_GO" signal from the granted device It determines when the bus transfer hae completed, and instructs BB_GR_GR~NT module when the next grant can be issued.
The BB_TR_TR~CKER module contains a state machine, illustrated in Fig. 29, that tracks the progress of a bue master through the tr~n~ n. RESET places the state machine in the IDLE state . The state machine is kicked of f by a registered valid request, and moves from the ID~E cycle to the GR~NT cycle.
If the grant is inhibited by the aesertion of a BUSY, the state machine will remain in the GRANT state.
When the bus master i8 granted, the state machine moves from the GR~NT state to the QIJIESCENT state. Thi~ state is vi~ited for one cycle only. The state machine is then placed in the BUS sUSY
state. If the appropriate ONE TO_GO has not been asserted, the state machine will remain in the BUS_susY state. When it iY
asserted, the ~tate machine will move to either the GRANT state or the IDLE state depending on the exi3tence of additional serviceable requests.
The TR_TR~CKER module ~nt~;n~ the ONE_TO_GO registers for all requesters. ONE TO_GO signals are registered first, then are muxed to select only the PROPER_ONE_TO GO for the state machine.
Pre-registered ONE_TO_GO signals are also available from thie 2 ~ 83223 module in the form of EARLY_ONE_TO_GO, used by the BB_CONTROL _=~
module to initiate the assertion of PORT_OE. The mux selects are determined by the selection of the bus requester to grant. The mux selects originate in the GR_GRANT module.
The state machine generates an ok-to-grant signal which the GR_GRANT module uses. This signal is TR_TRACKER_GRANT NEXT.
Thi6 signal is as6erted either when the state machine is (i) in IDLE and someone requests, (ii) in GRANT when the grant has been ~ =
inhibited, or (iii) in BUS_BUSY when the transfer i8 ending and there are more outstanding, and there are no debug feature6 inhibiting the grant. The state machine include a 6tall feature that allows partial or full serialization of the arbitration portion of tran6fers. To accomplish this, there is a three bit scan loadable configuration register. The contents o~ thi6 register cause the state machine to wait a number of cycles be~ore allowing the next grant. In addition, there are hooks to inhibit further grants. This is referred to as "QUIESCE". It is available pre-registered by the ORB.

TS_TRANS_START Module The BB_TS_TRANS_START module takes the grant informat;on from BB_GR_GRANT and issues a Transaction Start (TS) first on the bus of the granted device, then on all the requesters on other moth~rhr~rd busses.
The TS_TRANS_START module generates the TS signals and distributes them to the bus clients. TS asserted indicates to a client that the accompanying header tran6fer on the data portion of the bus is the start of a transfer. The first cycle after a =~
GRANT is a quiescent cycle, the cycle in which the TS will be driven on that bus. Thi6 allows other clients that reside on that particular bus to recognize the start of the transfer. The second cycle after GRANT is the cycle before the start of the transfer is broadcast to other motherboard local busses through the register stage of the BAXBAR. TS will be driven on all the other busses (but not on the requester' 8 bus) during this cycle .
The TS_TRANS_START module also generates the mux selects necessary to identify the PROPER_ONE_TO_GO signal for the TR_TRACKER state machine for use in identifying the end of a transfer .

BC_BAXBAR_CTL Module The BB_BC_BAXBAR_CTL module takes the grant information from ss_GR_GRANT and instructs the BAXBAR arrays as to which port the master device is on and which ports to drive for each cycle in the transfer.
The BC_BAXBAR_CTL module generates the BAXBAR control for transfers. These control lines comprise a three bit encoded requester drive port (DR_PORT [2 :0] and eight unarily encoded BAXBAR port output enables (PORT_OE [7 :0], and a single control line XFER_E~B N. The XFER E~B_N signal indicates the pending end of a transfer and is used by the B~XBAR to ~lpt~rm;n~ when to check the source bus for good parity.
The requester drive port, DR PORT[2:0], is driven to the BAXBAR during the quiescent cycle following a grant, and every .--consecutive cycle for the duration of the requesters bus transfer. The PORT OE [7 :0] is driven to the BAXBAR during the quiescent cycle following a grant, and will de-assert one cycle before the end of the transfer on the requester' 5 bus . This allows the BB to firet register the PORT_OE, and DR_PORT In addition. For non-memory reque3ter transfers, the EDAC ports (bits 3, 2 ) will have their output enables extended for one cycle if the transfer is a partial write.
Other modules used by the ORB include ::
The BB_Fl_FATAL_IN module which collects fatal error indicators from all motherboard asics and the micro-processor, --and informs half of the motherboard ASICs that a fatal error has occurred .
The BB_FX_FATAL_IN_EXT module usee the result of BB_Fl_FATAL_IN to inform the other half of the motherboard ASICs that a f atal error has occurred .
The outputs of the BB_CONTROL_SIGNALS module are used to control which pins are inputs and which pins are outputs. These assignments are static when the ASIC is being used as an ORB.
The BB_ERROR module collects ;ntPrn~l ly detected error ~ :
conditions from the other modules, and asserts the FATAL O~T N
signal, which then goes to the BB Fl_FATAL_IN module.

BAXBAR Reql e ter Swi tch The Baxbar is a registered cross-bar switch which serves as the interconnect path for the Sierra board-level busses. The Baxbar is implemented with four ASIC slices in con]unction with ~ 2183223 the OR3 ASIC described hereinbefore. Each ASIC slice is a 240 pin LSI 300D CMOS array. It will be capable of operation at clock frequencies up to 50MHz. A functional block diagram of the BaxBar switch is illustrated in Fig. 30.
The Baxbar registered crossbar switch supports six 19 bit ports and two 18 bit ports. The switch control is comprised of a 3 bit source port select (DR_PORT) and an eight bit output enable control (PORT_OE) . The tables of Figs. 31A, 31B and 31C
illuetrate crossbar source selection, PORT_OE assignments, and port to bus mapping of the BaxBar crossbar switch, respectively.
The six 19 bit ports are referred to as A, B, CM, DM, D0, D1. The two 18 bit ports are re~erred to as C0, C1.
There are two main modes of operation referred to as non-generic mode and generic mode. These modes control the way ports C0 and C1 behave. In non-generic mode, ports C0 and C1 are given extra control to connect to EDACs. In generic mode, this control is disabled giving 7 ports that behave identically. The eighth port may be used in this mode, though it will experience an extra delay in some cases.
Parity is checked on the lower 18 bits of the tntPrn;ll bus that feeds output ports A, B, CM, DM, D0, D1. Any of the eight possible sources can potPntt~lly be muxed onto this bus. The 18 bits is made up of 2 parity bits associated with two 8 bit busses. On a parity error (exclusive OR o~ 9 bits = 1), the error is latched, qualified with a parity enable and sent to the module BB_ERROR.

~ 2~ 83223 Four 16x18 R~MS are provided in the Baxbar to log information about the state of the saxbar during the last 32 cycle6 .
The two 18 bit ports are connected to EDACs and port CM is connected to the Memory Controller. ~8 outputs, the source data (except last beat) that feeds out of the CO, C1 ports is held for two cycles to provide the EDACs with additional hold time.
during the last beat, the data is held for one and a half cycles.
Note that one of the EDACs outputs the even data beats, the other the odd beats. This i3 controlled by sample ADDR_3_IN
during the cycle where the source is presenting the f irst data beat. If this signal is low, CO outputs the even data beats and C1 the odd beats.

GG AS I C
The GG ASIC (78) pro~ides an interface between the 50 MHz PIX (76) bus and a 25 MHz PCI bus (79a,b) . Each of the two busses is connected to an integrated Small Computer System Interfaces (SCSI) interface and to a single PCI expansion board.
One of the two PCI busses also is connected to an integrated lOMb Local Area Network (I~N) interface 286. The GG ASIC also sources the 25 MHz clocks for the PCI bus. A block diagram of the GG
ASIC is set ~orth in Fig. 32.
The GG ASIC (78) acts as a PCI Bus master on behalf of JP
initiated transfers on the PCI Bus. All transfers between a JP
and an external PCI Bus device are cache inhibited. It also acts as a PCI Bus slave on behalf of an ~ rn:-l PCI Bus master initiating transfers to system memory. A small cache i8 provided in the ASIC (78) and is used for DMA transfers between the external PCI Bus master and system memory (86) . The GG ASIC =
cache supports exclusive modif ied cache line ownership as well as shared ownership. A cache line is eight beats long.
Address transactions coming from the 64-bit multiplexed PIX
(76) bus into the GG ASIC (78) are registered in the Slave OP, Snoop or ADDR/Header buffers depending on the command decode.
The ADDR/E~eader addresses are compared against the outgoing request register to identify packet replies to I/0 cache line f ills .
The Slave Op addresses are used to access PCI configuration, PCI I/0 and ;nt~rn;ll GG ASIC configuration registers. The Slave Op addresses are decoded by an address decode unit that generates the four PCI Bus ID and multiple ;ntf~rn;~l GG register selects.
only one data beat is associated with a cache inhibited Slave operation, and the GG ASIC makes the restriction that only the least significant DWO~D ~bits 63 :32~ contains valid data.
The Snoop Addresses are used to invalidate or copyback a cache line and are looked up in the I/0 cache tag ram. If the cache line has been modified, the GG ASIC will copyback the cache line back to memory with a CB_INV_RPLY. If a cache line is marked shared in the cache, its status will be changed to invalid. Because the tags are a shared resource, i.e. support PCI and PIX bus slave accesses, a busy mechanism is implemented to handle tag access collisions.

Addresses from the~PCI Bus enter the GG ASIC (78) on the 32-bit PCI Bus multiplexed address and data lines and each address is compared against the PCI Bus memory range registers. For a - -PCI Bus master to system memory transfers (DMA), the address is passed to the cache. ~ cache hit is followed by a PCI Bus transfer without any PIX bus activity. A cache miss forces the GG ASIC (78) to initiate the appropriate PIX bus activity to load the cache with the requested data while the PCI device is retried. This may include initiating a writeback, with a CB~ RP~Y, prior to f illing the cache line . The capability to retry on cache misses ie PLUYL hle. This allows ~lexibility when dealin~ with PCI bridges which may not come back with the same request when retried.
Data from the 64-bit PIX bus enters the GG ASIC (78~ through the Data Return buffer that interfaces with the GG ASIC internal cache. Data is then moved from the cache to the PCI Bus as requested by the PCI interface There are also two queues used by the GG ASIC to store inl ;n~ medium packets, i.e., snoops and data replies, and outgoing retries . Tn~nmi n9i medium packets are stored in a four deep queue to be processed by the cache. This includes snoops, resulting in an invalidate or copyback, and data return packets f or cache line f ills . A medium busy signal is asserted to the PIX bus arbiter when this queue has three or more entries in it, to prevent an overflow condition.
The retry queue is three entries deep and holds retry packets for low priority operations that can not be completed by the GG ASIC, as the GG ASIC performs one low priority operation at a time. When this r~ueue i8 full, i.e. all three entries valid, the GG ASIC will assert a low busy ~ignal to the PIX bu~
arbiter, to prevent more low priority packets from arriving.

RI ASIC
Each moth~orhr:lrd (52) rnnt~;n~ all the local resources that are required of a system (50). The resource logic on the motherboard (52) includes a Microcontroller (102), state-recording EEPROMs (Electrically Erasable Programmable Read Only Memory, not shown), NOVRAM (Non-Volatile RAM), and SCAN
interface logic (104). The resource logic i~ duplicated on each motherboard (52), but a working system (50) only ever uses the resources section of the board in either slotO or slotl o~ the backplane system (54 ) as sy~tem wide Global Resources . An RI
(Re~ources Interface) ASIC (74) provides the interface between the PIXbu~ (72) and the devices within the Resources section on the motherboard (52) .
The RI ASIC or array provides an interface between the ~_, PIXbus and the Resources Bus. The resources bus provides the JPs access, through the RI portion of the PIX bu~ (RI bus), to local resources required by the system, including the test bus controller and the diagno~tic bus interface. The RI ASIC acts as a Resources Bus master on behalf of JP initiated transfers on the Resources Bus. The RI ASIC is not a slave on the Resources Bus and as such will not initiate a read or write request on the PIXbus. Rather it services three types of operations; CI_RD_, CL_WR and RD_S. A RD_S request will be honored only if the 2~83223 requested resource device is marked as ~n(-A~hf'Ahle The EEPROM
on the Resources Bus is F'n~'~('h.'Ahle, allowing faster booting of the system. The RI responds to the upper 4 Megabytes of memory, assuming its global bit is set, and requests to it ' s control space. A functional block diagram of the RI ASIC is shown in Fig. 33-The RIbus state m~-h;n~, illustrated in Figs. 34, 35 and 36, control the interface to the RIbus. The RIbus master will assert a bus request to the motherboard arbiter and, when, granted, drive the appropriate RIbus control, header and data to acce3s the resources section.
The Microcontroller (102) in the resources section is used to perform low-level early power-up diagnostics of the system (50) prior to de-asserting RESET to the processors. It is also -the controller/engine used for all scan operations, as described in the referenced application. Generally, scan is used to configure the ASICs during power up, communicate with the power supplies and blowers, communicate with the various ID PROMs within the system, and to dump failure information after a -hardware fatal error. If a proce3sor needs to do a scan operation, it makes a request to the micro-controller (102J which can then perform the required operation.
The Resources sections also provides a DUART (Dual Asynchronous Universal Receiver and Transmitter, not shown) for impl: ~ln~ 3 UART ports for the system (50). A fourth UART port is also used as part of a loopback circuit to allow a processor 2~ 83223 to monitor what is being driven on the main system console (not shown ) .
The resources section also provides the logic to do JTAG
based scan of all the ASICs in the system (50), power supplies, blowers, SEEPROM and SYSID PROM, in acrrr~ nr~ with the IEEE
1149.1 standard. The logic is in place to allow the system to be scanned either during Manufacturing Test using an external teæter (e.g.ASSET) or during normal operation/power-up using the microcontroller on any motherboard in the system. This logic allows simple boundary scan testing to be used as part of the power-up system testing to detect and i601ate possible faulty components .
Additionally, MACH electrically erasable, programmable devices on the resource bus can be programmed using JTAG from an external rnnn~rtrr Also, the microcontroller can be used with an external connector to program the EEPROMs on the resource bus.
This allows manufacturing to assemble the boards with blank MACHs and EEPROMs and then "burn" them as part of the test procedure, rather than stocking "burned" versions of the parts to be installed during a~sembly. This "in circuit programmability"
feature also makes updates i~or ECO activity as simple as pIugging in the ~.Uyl ng connector and re-~.~,y, inr the parts, rather than removing the old part and installing a new part in its place .

DAlJGXTER3QARD A3ICs ~ -In addition to the various ASICs and functional elements on the motherboard, the daughterboard includes A3ICs as well, to provide and control an interface between the Motorola 88410 cache controller bus (126, 128, 130, Fig. 3) and the Daughterboard bus (88) (Cibus), and to control the third level cache resident on the daughterboard.

CI ASI
The CI ASIC (124) provides an interface between the Motorola 88410 cache controller bus (126, 128, 130 Fig. 3) and the Daughterboard bus (88) (Cibus). The CI A~IC (12~) provides support for two MC88410s cache controllers (112) The CI ASIC
(124) controls the MC88410 address (128) and data (126) bus arbitration and provides system status for the MC88410 cache controllers (112) A block diagram of the CI AS~C is provided in Fig. 37.
The MC88410 address bus (126) and the lower 32 bits of the data bus (128) are multiplexed together, before interfacing to the CI A3IC (124). This is done in order to decrease the number of pins needed, so that the CI A~IC could ~it into a 3 04 mquad package. Four 16-bit transceivers (136) are used to multiplex the address and data bus, creating a 32-bit address/data bus (134) .
Two transceivers for the address path (136b) and two transceivers for the data path (136a). Two output enables, and two directio~L
signals are provided by the CI to control these transceivers (not shown) .

2 ~ 83223 The CI ASIC (124) accepts all addresses driven on the MC88410 addre66 bu6 ~128) by the MC884106 (112) . These tran6action6 are referred to a6 initial tran6action6. The CI ASIC
(124) decode6 the addre66 to determine if a Cibu6 tenure is required. Transaction6 addre66ed to CI ASIC (124) internal regi6ters are referred to a6 private re60urces and are 6erviced immediately. Tr~n~r~ n~ that are shared read6 may be serviced by the TLC memory (116) if the addre66 tag i6 valid. The TLC_XIT
(Third Level Cache E~it) 6ignal will indicate if the address i6 located in the TLC (116), and the tran6action i6 6erviced immediately. A6 soon as the MC88410 (112) i6 granted tenure, the CI ASIC (124) reque6ts the Cibus. If the transaction is serviced by private resources or the TLC, then the Cibus transaction is aborted and a NOP command is issued onto the Cibus.
The CI ASIC (124) uses the MC88410 transaction attributes to parse the opcode used for the CI ASIC (124) transaction. The address, node ld, and opcode are formed into a header. Parity is generated, and the header is sourced onto the Cibus (88), once a bu6 grant is received. Addres6e6 that re~r,uire Cibu6 tenure ara stored in an out6tanding reque6t regi6ter (ORR) (300) Fig 37. The CI ASIC (124) provide6 three ORRs per MC88410: ORR, CIRD_ORR (CI
Read Outstanding Rerlue6t Regi6ter), and a CIWR_ORR (CI Write Out6tanding Reque6t Regi6ter) but each MC88410 can have only one outstanding rer~uest.
If the transaction i6 a write, then the data is loaded into the data output buffer (DOB) (302). If the Clbu6 is granted immediately then the data is 6treamed directly to the CI ASIC bus (88). If the grant is delayed or the transaction needs to be resent then the data i8 sourced from the Dos (302) . The CI ASIC
(124) will check parity on all data it receives from the secondary cache SR~Ms (114). At the end of the MC88410 transaction, with the address safely loaded into the ORR (300), the MC88410 bus tenure is terminated with a transaction retry.
The MC88410 (112) is then pended until the CI ASIC (124) receives notif ication that the operation can be completed, i . e ., read data is returned from memory or an acknowledgement that an invalidate has taken place. Pendin~ the MC88410 (112) means that it is not granted the MC88410 bus (126, 128). This protocol leaves the MC88410 (112) and MC88410 bus (126, 128) in a state where it is able to snoop Cibus traffic.
The CI ASIC (124) accepts all addresses (headers) from the CIbus (88). The opcode and address in the Cibus packet are compared to the addre~s and opcode in each ORR (300) . The CI ASIC
(124) determines what action, if any, is necessary on the MC88410 bus (126, 128) from the result of the ORR comparisons. MC88410 bus actions include: data return (reads), data bus completion (writes), and broadcast snoops.
Transactions that involve data being returned or writes being acknowledged are ref erred to as data return transactions .
The MC88410 which was pended is granted the bus. If data is being returned then the data is sourced to secondary SRAMs (114), otherwise the transaction is simply acknowledged with the assertion of S_TA_N (Transaction Acknowledge) . All data returns -are snooped by the other MC88410 (112), and the transaction is not allowed to f inish until snooping is ~; n; q~
All locked operations begin with an initial cache-inhibited read. When the response arrives the data i3 transferred to the MC88410 SRAMs (114). Upon completion of~ the transaction the bus is locked until the MC88410 returns with an cache-inhibited write. The transaction is; ~ ely acknowledged, in order to allow snooping. However the MC88410 is pended until the acknowledge response arrives. This response is dropped and the next grant for that MC88410 will be ~or an initial transaction.
If an error occurred or a NACK was received by the CI ASIC
(124) then the transaction is terminated by the assertion of S_TEA N (Transaction Error Acknowledge).
The CI ASIC (124) will generate the flush control lines (130) to the MC88410s (112). These ~rill be deter~nined from decode addresses received ~rom the MC88410s (112) . The CI ASIC (124) will also generate interrupt and NMI (Non-Maskable Interrupt) signRls to the 88110 processors (110), determined from decoded addresses ~rom the Clbus (88). Other local resources provided by the CI ASIC (124) chip include interrupt enable and status registers and ~oyLal .able interval timers ~PIT) .
The CI ASIC (124) has a set of private resource registers (304) that are accessible by the local processors (110) . These include the interrupt registers, JPIST and JPrEN, the timer regi~ters PIT and PIT SC, the flush and invalidate registeri, FLUSH PAGE, FLUS~ ALL, and INVALIDATE ALL, the MC88410 diagnostic registers, SET_DIAG and CLR_DIAG, and a configuration register which iB a duplicate o~ the one located on the TLCC, TLC_CI_SC.
The CI ASIC (124) has a set of control space registers (306) used to monitor system actively, control configurability, control interrupts, and control error masking and forcing. The CI ASIC
(124) has a set of diagnostic registers visible to the scan controller (not shown). Important state is shadow registered. The CI ASIC (124) has boundary (JTAG) scan and an inter~al acan interface visible to the scan controller (not shown).

TLCC ~SIÇ
Fig. 38 illustrates a block diagram of the third level cache controller subsystem. The third level cache subsystem includes a third level cache controller (TLCC 118), a third level cache and associated system busses. The TLC (Third Level Cache) is a 16Mb direct mapped, write-through cache on the Daughter Board (58), and thus 3ervices two processor ~ 1P~;~ (110, 112) . Read hits can be handled by the TLC without any further interaction from the system. Read misses go out to memory on the motherboard (52) and are loaded into the cache (116) when the data is returned.
Read-with-inte~t-to-modify hits are invalidated, and ~urst~writes (copybacks and wr;t~h~f kq) are loaded into the cache (116) . Note that only shared data will be loaded. By default the TLC ASIC
(118) f~nr~ h~ all (near and far) addresaes, but can ~e pru~, -d to service only far memory.
The third level cache includes a data store memory (116) that is organized as ten lMb x 16 chips, with two EDiiACs (120) 2~83223 providing ECC protection, as described hereinbefore. The cache line size is 64 bytes, and the tag store (122) is 256Kb deep.
Three 256Kb x 4 SRAM5 are used to implement the tag store (122), with eight bits going for the tag, one bit for disable, one for valid, and one for parity. The following breakdowns the address presented to the TLC from the 88410: bits 31-24: the tag; bits 23-6: the index; and bits 5-3: word within a line The TLCC (118) coordinates the tag and data accesses necessary for the operation of the TLC. It checks the 88410 address (on the 88410 bus (128) and transfer attributes to decide what to do in response to the current 88410 bus cycle. Separate tag and dram control units allow tag lookup and data access to begin simultaneously. An operation decoder (350) generates a TLC
opcode (352) that in turn tells the tag controller (354) whether to update/invalidate the tag and the dram path controller (358) and data path controller (360) whether to complete the data store access .
At the top level, the TLCC can be divided into four logical units: the system interface (362), the tag unit (354 and 356), the data unit (358 and 360), and the operation controller (364) .
The system interface (362) ba3ically takes in the 88410 address (128) and control signals (130) and decodes and registers them.
It also ~ ~1n~i~; nf~ the interface for reading and writing TLC
control space registers. The address decoder (364) determines if the system address presented by the 88410 is one of the following: a valid memory address; a near or far memory address;
an .-n~ h~hle memory address; a tag store address; an EDAC

register address; a T~CC/CI configuration register address; or a TLCC control space address. The decoded address is registered in ADDR_OP (366). The current address in ADDR_OP is saved for the DR~M Controller (358) to use if a new 88410 operation starts before the current DRAM operation has f;n;~hPd.
The following is the bit definition of the address opcode:
R_ADDR oPr6]: EDAC_ACCESS; R_ADDR_oPL5]: NEAR_ACCESS;
R_ADDR_OP[4]: FAR_ACOESS; R_ADDR_OP[3]: MEM_ACCESS; R_ADDR_ oPt2l:
EN~ T,R; R_ADDR_OP [1]: TAG_ACCESS; and R_ADDR OP [0]:
CTRL_ACOESS .
The operation decoder (350) is composed of two decoder sections, the attribute decoder and the TLC decoder The attribute d~coder generates a code based on the current 88410 cycle' s transfer attribute signals . These codes are as follows:
1100 CI_READ; 0100 CI_WRITE; 0110 ~RITE_THRU; 1011 READ_SHARED;
1010 READ_IM; 0010 WRITEBACK; 0011 SNOOP COPYBACK; 0001 INVALIDATE; and o000 NOP.
The T~C decoder, which is within the operation decoder, takes the attribute code plus configuration and cycle type information and produces a T~C opcode. This opcode is registered in TLC OP register (368) and copies are kept in the event that a new 88410 operation starts while the current DR~M operation is still in progress (same as in the address decoder). The bit definition of the TLC opcode is as follows: R TLC_OP [3]: READ;
R TLC_OP[2]: WRITE; R_TLC_OP~1]: BURST; R_TLC oPL0]: INVALIDATE.
So for example, an opcode of 1000 indicates to the TLC that it 2 ~ 83223 has to do a single beat readi an opcode of 0110 indicates a burst write The system interface (362) also includes the system address registers (370), error handling logic, and error shadow registers. All of the TLC control space registers are contained in the system interface (362) and all are muxed into one output register, which is in turn driven onto the S_D during control space reads. The contents of the System Address Register (372) must be saved if and when a new 88410 operatio~ starts before the DRAM Controller (358) has completed the last 88410 operation.
The TLCC ASIC (118) unlike other ASICs of the i~stant inve~tion, only generates non fatal errors. A non fatal error, NON FATAL N, can be asserted due to tag parity errors that occur ::
durin~ tag lookups. The EDiiAC ASICs (120) detect system data parity errors, single bit errors, and multi-bit errors.
Qualified errors are masked and registered in the status register and a NON_FATAL N is asserted when any non-nested bit is set.
The error status bits can be cleared by a control space write or by a cold reset. The shadow address registers are loaded when a particular type of error occurs.
There are four shadow registers: one for tag parity, one for system data parity, one for single bit error, and one for multi bit error. These are loaded with the current address when the corresponding type of error is detected. Because these registers are part of the TLC control space, they can be read directly oy the processor.

The tag unit rr~nt~in~ a control unit (TCU) ~354) and a data unit (TDU) (356) . The TCU (354) i3 responsible for initiating tag atore read and write operations, for controlling the external address latch, and for loading the 88410 address and attribute registers. A tag lookup i9 normally done on a 88410 Bus Grant or Snoop Request. However, if the TLCC (118) can not handle the operation due to a busy DRAM controller, the lookup is changed to an invalidate. The tag store SRAMs (122) are written with 88410 data during processor (110) writes to the TLC' s tag store control space. Error invalidate3 are done on EDAC detected parity and multi-bit errors, and also if Transfer Error Acknowledge (TEA) is seen on the 88410 bus.
The TDU (356) supplies data to the tag SRAMs (122) during tag update and invalidate operations. The TDU (356) also receives data from the tag SRAMs during tag lookup operations, and generate~ the HIT signal by performing tag compares. The TDU
(356) check~ parity on i nr~i nr, tag data and generates parity on outgoing tag data. It registers the HIT and TAG PE signals and keeps copies when a new 88410 operation starts before the DRAM
controller (358) can finish the prevlous one.
The data unit is compriaed of the DRAM controller (DRC) (358), and the data path controller (DPC) (360). The DRC (358) controls DRAM read, write, and refresh operations, provides DRAM
addresses, and performs CAS before RAS refreshes. It also reads data out of the EDiiAC (120) write FIFO for DRAM writes. When reading the DR~M, the DRC (358) kicks off the DPC (360).

The DPC (360) controls the TLC mux (138) and TLC EDACs (120) . It also handles TLC control space accesses and the assertion of Transfer Acknowledge (TA) and TEA. For writes to ~:
the data store, the DPC (368) pulls data off the 88410 data bus (126) when it sees a TA, latches it in to the TLC mux (138), and places it into the EDAC FIFO. For reads from the data store, it controls the EDAC's flow through latches and switches between EDAC SD outputs via the mux select.
The operation controller (364) is a collection of one and two bit state m~h; n~R . Some of these machines coordinate the actions of the tag unit (354, 356) and the DPC (360), which always keep up with the 88slO system bus, and the DRC (358), which can fall behind the 88410 bus during writes to the TLC data store. Included within the operations controller (364) is an operation counter, an error machine, an ignore machine, a refresh machine, a wait machine, a TA window machine, an operation queue ~=
pointer machine, a last refresh machine and a bus grant refresh machine .
The operation counter counts 88410 bus operations that start with a Bus Grant (BG), where the count is incremented on a BG and decreme~ted when the DRC (358) asserts a done signal. T~e~TLC
cannot accept any new operations when the operation count is 3.
The error machine tells the TCU (354) to do an error invalidate if an error is detected during a 88410 operation. The ignore machine tells the DPC (360) to ignore the TA associated with an operation that the TLC can not handle because of a busy DRC
( 3 5 8 ) .

2~ 83223 The refresh machine sends a refresh signal to the DRC (358) when the refresh counter hits the refresh interval. It clears the refresh signal when the DRC (358) sends a refresh done signal. For every 88410 bus operation, the wait machine a~serts a wait signal to the TCU (354) and DRC (358) until that cycle' 8 TS shows up. The wait signal is needed when a the 88410 bus is parked during a copyback, because the TCU (354) and DRC (358) start on a BG and need to wait until a TS comes along.
The TA window machine asserts a signal to the DRC (358) during the time a TA could become valid. This is done because the first TA, which starts the DPC (360) on a write, occurs during different cycles for different types of operations. The operation queue pointer machine sets a bit to indicate that information necessary for a DRC operation has been saved in a ~queue~ register because a new operation is started on the 88~10 bus. The HIT signal, TLC opcodes, and the system address all need to be saved.
The last refresh machine sets a bit when a refresh operation starts and clears this bit when the next DRC operation finishes.
This bit is checked by the DRC (358) when it 3tarts to determine if it has been delayed with respect to the 88410 bu3 due t~ a refresh. The bus grant in refresh machine watches for two BGs to occur during the time it takes for the DRC (358) to do a refresh.
If this happens, the operation represented by the first BG is ignored. No operation valid to the TLC is short enough to start and finish during a refresh and the DRC (358) has to deal with a valid 88410 operation that starts while it is doing a refresh.

L ~ The TLCC (lla) also includes a JTAG interface (374) . The JTAG interface (374) interfaces the TLCC (118) with the IEEE
1149.1 scan chain that includes the TLCC. The JATG interface (374) is used when the TLCC is being scanned during cold reset to verify the integrity and operability of the 6ystem prior to the loading of code. Such 3canning also is done to retrieve state information, after a fatal error is asserted in the system.
Although the invention has been shown and described herein with respect to an illustrative embodiment thereof, it should be appreciated that various changes, omissions and additions in the form and detail thereof can be made without departing from the spirit and scope of the invention.

Claims (19)

1. A scalable multiprocessor computer system, comprising:
a backplane, including at least one backplane communication bus;
a plurality of motherboards, detachably connected to said backplane; each motherboard interfacing to said at least one backplane communication bus, each of said plurality of motherboards including:
at least one backplane communication bus interface mechanism interfacing at least one of said plurality of motherboards to said at least one backplane communication bus;
a motherboard communication bus comprising a first portion that is selectably interfaceable to said at least one backplane communication bus and at least one second portion, said motherboard communication bus including a crossbar register switch selectably interconnecting said at least one second portion of said motherboard communication bus to said first portion;
a motherboard communication bus request arbitration mechanism arbitrating requests from said plurality of motherboards for access to said first portion and said at least one second portion of said motherboard communication bus by selected ones of said plurality of motherboards;
a memory system including main memory distributed among said plurality of motherboards, directory memory for maintaining main memory coherency with caches on other motherboards, and a memory controller module for accessing said main memory and directory memory and interfacing to said motherboard communication bus; and at least one daughterboard, detachably connected to said motherboard and interfacing to said motherboard communication bus, said at least one daughterboard further including:
a motherboard communication bus interface module, for interfacing said at least one daughterboard to said motherboard communication bus and a local bus on said daughterboard; and at least one cache memory system including cache memory and a cache controller module maintaining said cache memory for a processor of said scalable multiprocessor computer system.
2. The scalable multiprocessor computer system of claim 1 wherein said main memory is contiguously addressable across said plurality of motherboards.
3. The scalable multiprocessor computer system of claim 1 wherein said backplane includes four backplane communication busses, and each of said plurality of motherboards includes four backplane communication bus interface modules.
4. The scalable multiprocessor computer system of claim 1 wherein one of said plurality of motherboards is selected to provide a system clock signal for all motherboards.
5. The scalable multiprocessor computer system of claim 4 wherein a second one of said plurality of motherboards is selected to provide a backup system clock signal for all motherboards .
6. The scalable multiprocessor computer system of claim 1 wherein each of said plurality of motherboards includes a peripheral interface module, said peripheral interface module interfacing to said motherboard communication bus, and to at least one peripheral device.
7. The scalable multiprocessor computer system of claim 6 wherein said at least one peripheral device is one of a local area network (LAN) device, a small computer system interface (SCSI) device and an expansion card device.
8. The scalable multiprocessor computer system of claim 1 wherein said at least one daughterboard includes two processor modules.
9. The scalable multiprocessor computer system of claim 8 wherein said at least one cache memory system on said on said at least one daughterboard provides a cache for said two processor modules.
10. A system for maintaining coherency of multiple copies of a data element in a non-uniform memory architecture computer system, said non-uniform memory architecture computer system including a plurality of processor elements including local caches, wherein one of said multiple copies of said data element is located in a main memory section, and at least one of said multiple copies of said data element is stored in at least one of said local caches of said plurality of processor elements, comprising:
a directory structure providing a directory of said main memory section by maintaining a list of which of said plurality of processor elements includes a copy of said data element in said local cache of said processor element, said directory structure being responsive to an indication that one of said copies of said data element has been altered, and transmitting a global update to all of said plurality of processor elements, said global update including a processor identifier, said processor identifier indicating each of said plurality of processor elements which includes of copy of said data element in said local cache of said processor element; and wherein said plurality of processor elements each receive said global update, and wherein only each processor element indicated by said processor identifier responds to said global update.
11. The system of claim 10 wherein said each processor element indicated by said processor identifier responds to said global update by obtaining a new copy of said copy of said data element stored in said local cache of said processor element.
12. The system of claim 10 wherein said directory structure is located in directory memory, separate from main memory.
13. The system of claim 12 wherein said directory memory implements said list of which of said plurality of processor elements includes a copy of said data element in said local cache of said processor elements using a sequence of data bits, each data bit representing a processor element.
14. The system of claim 13, wherein said directory memory further includes data bits to indicate whether said data element may be altered by a processor with copy of said data element in said local cache.
15. The system of claim 10 wherein all of said processor elements receive said global update simultaneously.
16. A method of arbitrating requests for a system bus in a computer system by a plurality of system bus requesters comprising the steps:
establishing a window for simultaneously capturing all requests for said system bus, wherein said requests include information about a requested packet type, and an input queue state of said system bus requester;
capturing all said requests for said system bus during said window;
prioritizing said captured requests into high, medium, and low priority based on said information included in said captured requests;
examining potential system bus targets by their busy signals;
selecting one low priority requester, one medium priority requester, and one high priority requester as potential bus grant candidates;
choosing one of said selected low, medium, and high priority requesters by said requests, wherein high priority requests have priority over medium priority requests, which have priority over low priority requests, and medium priority requests are prioritized by time ordering; and granting said system bus to said chosen requester.
17. The method of claim 16 wherein said step of selecting one low priority requester, one medium priority requester, and one high priority requester as potential bus grant candidates is based on said examined busy signals of potential bus targets and a shuffle code.
18. A scalable distributed memory multiprocessor computer system including a backplane comprising a plurality of identical independent backplane buses, said backplane providing communication paths for a plurality of motherboards, each of said motherboards including at least one processor with a local cache memory, a motherboard communications bus, a motherboard communications bus to backplane interface module, and a memory system, wherein:
said motherboard communications bus to backplane interface module includes three input queues of high, medium, and low priority, and packets sent on said backplane to a motherboard are placed in one of said input queues depending on the priority of each packet;
all packets to the same cache line use the same one of said plurality of identical independent backplane buses;
high priority packets are always accepted into said memory system on a motherboard without needing to retry;
medium priority packets received from said plurality of identical independent backplane buses are granted onto a motherboard communication bus in the order in which said medium priority packages are received from said plurality of identical independent backplane buses;
packets for cache-inhibited reads, cache-inhibited writes, and cache-inhibited write unlocks are ordered with previous invalidate command and read invalidate reply packets previously inserted in said medium priority input queue;
packets to be received by more than one motherboard will arrive to each motherboard simultaneously;
all copyback invalidate commands and copyback, commands are sent out on said backplane to a receiving motherboard;
all invalidate copybacks are sent out on said backplane to a receiving motherboard; and a motherboard will retry any local resource requests while said medium input queue of said motherboard communications bus to backplane interface module contains any read invalidate reply, invalidate command, or copyback invalidate command packets.
19. The scalable distributed memory multiprocessor computer system of claim 18, wherein:
packets of low priority include cache-inhibited reads, cache inhibited writes, cache-inhibited write unlock and write-through;
packets of medium priority include invalidate commands, read invalidate replies, and copyback invalidate commands; and packets of high priority include copyback replies, copyback invalidate replies, and writebacks.
CA002183223A 1995-08-14 1996-08-13 Symmetric multiprocessing computer with non-uniform memory access architecture Abandoned CA2183223A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US232095P 1995-08-14 1995-08-14
US60/002,320 1995-08-14

Publications (1)

Publication Number Publication Date
CA2183223A1 true CA2183223A1 (en) 1997-02-15

Family

ID=21700234

Family Applications (2)

Application Number Title Priority Date Filing Date
CA002183223A Abandoned CA2183223A1 (en) 1995-08-14 1996-08-13 Symmetric multiprocessing computer with non-uniform memory access architecture
CA002229441A Abandoned CA2229441A1 (en) 1995-08-14 1996-08-14 A high availability computer system and methods related thereto

Family Applications After (1)

Application Number Title Priority Date Filing Date
CA002229441A Abandoned CA2229441A1 (en) 1995-08-14 1996-08-14 A high availability computer system and methods related thereto

Country Status (5)

Country Link
US (3) US5887146A (en)
EP (1) EP0852035A4 (en)
JP (1) JPH11510934A (en)
CA (2) CA2183223A1 (en)
WO (1) WO1997007457A1 (en)

Families Citing this family (254)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7308629B2 (en) * 2004-12-07 2007-12-11 Texas Instruments Incorporated Addressable tap domain selection circuit with TDI/TDO external terminal
US6272600B1 (en) * 1996-11-15 2001-08-07 Hyundai Electronics America Memory request reordering in a data processing system
US6055600A (en) * 1996-12-19 2000-04-25 International Business Machines Corporation Method and apparatus for detecting the presence and identification of level two cache modules
US5978379A (en) * 1997-01-23 1999-11-02 Gadzoox Networks, Inc. Fiber channel learning bridge, learning half bridge, and protocol
US6718375B1 (en) * 1997-01-31 2004-04-06 Hewlett-Packard Development Company, L.P. Using local storage to handle multiple outstanding requests in a SCI system
US6230245B1 (en) 1997-02-11 2001-05-08 Micron Technology, Inc. Method and apparatus for generating a variable sequence of memory device command signals
US6175894B1 (en) 1997-03-05 2001-01-16 Micron Technology, Inc. Memory device command buffer apparatus and method and memory devices and computer systems using same
FR2763714B1 (en) * 1997-05-26 1999-07-02 Bull Sa REPLACEMENT COUNTERS FOR MACHINE WITH NON-UNIFORM ACCESS MEMORY
FR2763712B1 (en) * 1997-05-26 2001-07-13 Bull Sa INSTRUMENTATION DEVICE FOR MACHINE WITH NON-UNIFORM ACCESS MEMORY
FR2764097B1 (en) * 1997-06-02 1999-07-02 Bull Sa HOT POINT DETECTION IN A MACHINE WITH NON-UNIFORM ACCESS MEMORY
US5996043A (en) 1997-06-13 1999-11-30 Micron Technology, Inc. Two step memory device command buffer apparatus and method and memory devices and computer systems using same
US6484244B1 (en) 1997-06-17 2002-11-19 Micron Technology, Inc. Method and system for storing and processing multiple memory commands
KR100237545B1 (en) * 1997-06-24 2000-01-15 김영환 Time and frequency generating device in cdma system
US6094709A (en) * 1997-07-01 2000-07-25 International Business Machines Corporation Cache coherence for lazy entry consistency in lockup-free caches
US6044438A (en) * 1997-07-10 2000-03-28 International Business Machiness Corporation Memory controller for controlling memory accesses across networks in distributed shared memory processing systems
EP0892352B1 (en) * 1997-07-18 2005-04-13 Bull S.A. Computer system with a bus having a segmented structure
US6026448A (en) * 1997-08-27 2000-02-15 International Business Machines Corporation Method and means for exchanging messages, responses and data between different computer systems that require a plurality of communication paths between them
US6202119B1 (en) 1997-12-19 2001-03-13 Micron Technology, Inc. Method and system for processing pipelined memory commands
DE19805711C2 (en) * 1998-02-12 1999-11-18 Siemens Ag Method and arrangement for exchanging a defective assembly, preferably within a digital exchange
US6446149B1 (en) * 1998-03-03 2002-09-03 Compaq Information Technologies Group, L.P. Self-modifying synchronization memory address space and protocol for communication between multiple busmasters of a computer system
US6038651A (en) * 1998-03-23 2000-03-14 International Business Machines Corporation SMP clusters with remote resource managers for distributing work to other clusters while reducing bus traffic to a minimum
US6357023B1 (en) * 1998-04-08 2002-03-12 Kingston Technology Co. Connector assembly for testing memory modules from the solder-side of a PC motherboard with forced hot air
US6415397B1 (en) * 1998-04-08 2002-07-02 Kingston Technology Company Automated multi-PC-motherboard memory-module test system with robotic handler and in-transit visual inspection
US6351827B1 (en) * 1998-04-08 2002-02-26 Kingston Technology Co. Voltage and clock margin testing of memory-modules using an adapter board mounted to a PC motherboard
US6094530A (en) * 1998-04-29 2000-07-25 Intel Corporation Remotely monitoring execution of a program
US6389513B1 (en) * 1998-05-13 2002-05-14 International Business Machines Corporation Disk block cache management for a distributed shared memory computer system
US6463550B1 (en) * 1998-06-04 2002-10-08 Compaq Information Technologies Group, L.P. Computer system implementing fault detection and isolation using unique identification codes stored in non-volatile memory
US6505276B1 (en) * 1998-06-26 2003-01-07 Nec Corporation Processing-function-provided packet-type memory system and method for controlling the same
US6067611A (en) * 1998-06-30 2000-05-23 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that buffers potential third node transactions to decrease communication latency
US6286083B1 (en) * 1998-07-08 2001-09-04 Compaq Computer Corporation Computer system with adaptive memory arbitration scheme
US6175905B1 (en) 1998-07-30 2001-01-16 Micron Technology, Inc. Method and system for bypassing pipelines in a pipelined memory command generator
US6085293A (en) * 1998-08-17 2000-07-04 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that decreases latency by expediting rerun requests
US6178488B1 (en) 1998-08-27 2001-01-23 Micron Technology, Inc. Method and apparatus for processing pipelined memory commands
KR100578112B1 (en) 1998-10-16 2006-07-25 삼성전자주식회사 Computer system and method controlled memory clock signal
US7430171B2 (en) * 1998-11-19 2008-09-30 Broadcom Corporation Fibre channel arbitrated loop bufferless switch circuitry to increase bandwidth without significant increase in cost
US6253269B1 (en) * 1998-12-22 2001-06-26 3Com Corporation Bus arbiter system and method for managing communication buses
US8225002B2 (en) 1999-01-22 2012-07-17 Network Disk, Inc. Data storage and data sharing in a network of heterogeneous computers
US6549988B1 (en) * 1999-01-22 2003-04-15 Ilya Gertner Data storage system comprising a network of PCs and method using same
US6421775B1 (en) 1999-06-17 2002-07-16 International Business Machines Corporation Interconnected processing nodes configurable as at least one non-uniform memory access (NUMA) data processing system
US6560725B1 (en) * 1999-06-18 2003-05-06 Madrone Solutions, Inc. Method for apparatus for tracking errors in a memory system
US6421712B1 (en) * 1999-07-16 2002-07-16 Silicon Graphics, Inc. Method and apparatus for broadcasting invalidation messages in a computer system
US6601183B1 (en) * 1999-09-30 2003-07-29 Silicon Graphics, Inc. Diagnostic system and method for a highly scalable computing system
US6502128B1 (en) * 1999-10-01 2002-12-31 Hewlett-Packard Company Server and a method for communicating event messages from the server connected to a peripheral device and a client computer
US6757762B1 (en) 1999-10-29 2004-06-29 Unisys Corporation Multi-mode processor bus bridge
US6728668B1 (en) * 1999-11-04 2004-04-27 International Business Machines Corporation Method and apparatus for simulated error injection for processor deconfiguration design verification
US6732235B1 (en) 1999-11-05 2004-05-04 Analog Devices, Inc. Cache memory system and method for a digital signal processor
US6738845B1 (en) * 1999-11-05 2004-05-18 Analog Devices, Inc. Bus architecture and shared bus arbitration method for a communication device
US6415424B1 (en) * 1999-11-09 2002-07-02 International Business Machines Corporation Multiprocessor system with a high performance integrated distributed switch (IDS) controller
US6553447B1 (en) 1999-11-09 2003-04-22 International Business Machines Corporation Data processing system with fully interconnected system architecture (FISA)
US6792513B2 (en) 1999-12-29 2004-09-14 The Johns Hopkins University System, method, and computer program product for high speed backplane messaging
US6681320B1 (en) * 1999-12-29 2004-01-20 Intel Corporation Causality-based memory ordering in a multiprocessing environment
US6247100B1 (en) * 2000-01-07 2001-06-12 International Business Machines Corporation Method and system for transmitting address commands in a multiprocessor system
US6598193B1 (en) * 2000-01-24 2003-07-22 Dell Products L.P. System and method for testing component IC chips
US6594802B1 (en) * 2000-03-23 2003-07-15 Intellitech Corporation Method and apparatus for providing optimized access to circuits for debug, programming, and test
US6658522B1 (en) 2000-06-16 2003-12-02 Emc Corporation Method to reduce overhead associated with system I/O in a multiprocessor computer system
DE60008088T2 (en) * 2000-07-06 2004-12-23 Texas Instruments Inc., Dallas Multiprocessor system test circuit
US6848024B1 (en) * 2000-08-07 2005-01-25 Broadcom Corporation Programmably disabling one or more cache entries
US6826619B1 (en) 2000-08-21 2004-11-30 Intel Corporation Method and apparatus for preventing starvation in a multi-node architecture
US6415369B1 (en) * 2000-08-29 2002-07-02 Agere Systems Guardian Corp. Shared devices and memory using split bus and time slot interface bus arbitration
US6567900B1 (en) * 2000-08-31 2003-05-20 Hewlett-Packard Development Company, L.P. Efficient address interleaving with simultaneous multiple locality options
US6738836B1 (en) * 2000-08-31 2004-05-18 Hewlett-Packard Development Company, L.P. Scalable efficient I/O port protocol
US6487643B1 (en) 2000-09-29 2002-11-26 Intel Corporation Method and apparatus for preventing starvation in a multi-node architecture
US7028115B1 (en) * 2000-10-06 2006-04-11 Broadcom Corporation Source triggered transaction blocking
WO2002069166A1 (en) * 2000-11-02 2002-09-06 Pirus Networks Switching system
US9639553B2 (en) * 2000-11-02 2017-05-02 Oracle International Corporation TCP/UDP acceleration
US7313614B2 (en) * 2000-11-02 2007-12-25 Sun Microsystems, Inc. Switching system
US7089293B2 (en) 2000-11-02 2006-08-08 Sun Microsystems, Inc. Switching system method for discovering and accessing SCSI devices in response to query
US7865596B2 (en) * 2000-11-02 2011-01-04 Oracle America, Inc. Switching system for managing storage in digital networks
US6985956B2 (en) * 2000-11-02 2006-01-10 Sun Microsystems, Inc. Switching system
US7099383B2 (en) * 2001-01-19 2006-08-29 Raze Technologies, Inc. Apparatus and associated method for operating upon data signals received at a receiving station of a fixed wireless access communication system
US6629099B2 (en) * 2000-12-07 2003-09-30 Integrated Silicon Solution, Inc. Paralleled content addressable memory search engine
US6772298B2 (en) 2000-12-20 2004-08-03 Intel Corporation Method and apparatus for invalidating a cache line without data return in a multi-node architecture
DE10065418A1 (en) * 2000-12-27 2002-07-18 Siemens Ag Integration procedure for automation components
US7234029B2 (en) * 2000-12-28 2007-06-19 Intel Corporation Method and apparatus for reducing memory latency in a cache coherent multi-node architecture
US6791412B2 (en) * 2000-12-28 2004-09-14 Intel Corporation Differential amplifier output stage
US6721918B2 (en) 2000-12-29 2004-04-13 Intel Corporation Method and apparatus for encoding a bus to minimize simultaneous switching outputs effect
US20020087775A1 (en) * 2000-12-29 2002-07-04 Looi Lily P. Apparatus and method for interrupt delivery
US20020087766A1 (en) * 2000-12-29 2002-07-04 Akhilesh Kumar Method and apparatus to implement a locked-bus transaction
US7080375B2 (en) * 2000-12-30 2006-07-18 Emc Corporation/Data General Parallel dispatch wait signaling method, method for reducing contention of highly contended dispatcher lock, and related operating systems, multiprocessor computer systems and products
US6981087B1 (en) * 2001-01-02 2005-12-27 Juniper Networks, Inc. Multi-master and diverse serial bus in a complex electrical system
US6883070B2 (en) * 2001-03-14 2005-04-19 Wisconsin Alumni Research Foundation Bandwidth-adaptive, hybrid, cache-coherence protocol
US6529053B2 (en) * 2001-04-05 2003-03-04 Koninklijke Philips Electronics N.V. Reset circuit and method therefor
WO2002091692A1 (en) * 2001-04-13 2002-11-14 Girard Gregory D Ditributed edge switching system for voice-over-packet multiservice network
US6748495B2 (en) 2001-05-15 2004-06-08 Broadcom Corporation Random generator
US7287649B2 (en) * 2001-05-18 2007-10-30 Broadcom Corporation System on a chip for packet processing
US20020184566A1 (en) * 2001-06-01 2002-12-05 Michael Catherwood Register pointer trap
US6799217B2 (en) * 2001-06-04 2004-09-28 Fujitsu Limited Shared memory multiprocessor expansion port for multi-node systems
US6711652B2 (en) * 2001-06-21 2004-03-23 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that provides precise notification of remote deallocation of modified data
US6971098B2 (en) 2001-06-27 2005-11-29 Intel Corporation Method and apparatus for managing transaction requests in a multi-node architecture
JP2003031666A (en) * 2001-07-12 2003-01-31 Mitsubishi Electric Corp Apparatus and method for simultaneously testing semiconcudotr device or semiconductor wafer
US6839892B2 (en) * 2001-07-12 2005-01-04 International Business Machines Corporation Operating system debugger extensions for hypervisor debugging
US7239636B2 (en) 2001-07-23 2007-07-03 Broadcom Corporation Multiple virtual channels for use in network devices
US6910062B2 (en) * 2001-07-31 2005-06-21 International Business Machines Corporation Method and apparatus for transmitting packets within a symmetric multiprocessor system
US6671644B2 (en) * 2001-08-15 2003-12-30 International Business Machines Corporation Using clock gating or signal gating to partition a device for fault isolation and diagnostic data collection
WO2003023602A1 (en) * 2001-09-07 2003-03-20 Ip Flex Inc. Data processing system and control method thereof
US6920485B2 (en) * 2001-10-04 2005-07-19 Hewlett-Packard Development Company, L.P. Packet processing in shared memory multi-computer systems
US20030069949A1 (en) * 2001-10-04 2003-04-10 Chan Michele W. Managing distributed network infrastructure services
US6999998B2 (en) * 2001-10-04 2006-02-14 Hewlett-Packard Development Company, L.P. Shared memory coupling of network infrastructure devices
US7958199B2 (en) * 2001-11-02 2011-06-07 Oracle America, Inc. Switching systems and methods for storage management in digital networks
US6848015B2 (en) * 2001-11-30 2005-01-25 Hewlett-Packard Development Company, L.P. Arbitration technique based on processor task priority
KR100441712B1 (en) * 2001-12-29 2004-07-27 엘지전자 주식회사 Extensible Multi-processing System and Method of Replicating Memory thereof
US6820149B2 (en) * 2002-01-11 2004-11-16 International Business Machines Corporation Method, system, and program for testing a bus interface
US6968416B2 (en) * 2002-02-15 2005-11-22 International Business Machines Corporation Method, system, and program for processing transaction requests during a pendency of a delayed read request in a system including a bus, a target device and devices capable of accessing the target device over the bus
US20030158985A1 (en) * 2002-02-15 2003-08-21 Edward Fried Systems and methods for fair arbitration between multiple request signals
US7295555B2 (en) 2002-03-08 2007-11-13 Broadcom Corporation System and method for identifying upper layer protocol message boundaries
US6728938B2 (en) * 2002-04-26 2004-04-27 Sun Microsystems, Inc. Knowledge-based intelligent full scan dump processing methodology
US7266587B2 (en) * 2002-05-15 2007-09-04 Broadcom Corporation System having interfaces, switch, and memory bridge for CC-NUMA operation
EP1363193B1 (en) * 2002-05-15 2006-05-03 Broadcom Corporation Programmable cache for the partitioning of local and remote cache blocks
US6957369B2 (en) * 2002-05-30 2005-10-18 Corrigent Systems Ltd. Hidden failure detection
US7171610B2 (en) * 2002-06-12 2007-01-30 International Business Machines Corporation Method, system, and article of manufacture for preventing data loss
TW579467B (en) * 2002-07-24 2004-03-11 Via Tech Inc Method for blocking request to bus
US7434106B2 (en) 2002-07-31 2008-10-07 Seagate Technology Llc Reference clock failure detection on serial interfaces
US6968408B2 (en) * 2002-08-08 2005-11-22 Texas Instruments Incorporated Linking addressable shadow port and protocol for serial bus networks
US7051235B2 (en) * 2002-08-27 2006-05-23 Sun Microsystems, Inc. Clock distribution architecture having clock and power failure protection
US7934021B2 (en) 2002-08-29 2011-04-26 Broadcom Corporation System and method for network interfacing
US7346701B2 (en) 2002-08-30 2008-03-18 Broadcom Corporation System and method for TCP offload
US7411959B2 (en) 2002-08-30 2008-08-12 Broadcom Corporation System and method for handling out-of-order frames
US7313623B2 (en) 2002-08-30 2007-12-25 Broadcom Corporation System and method for TCP/IP offload independent of bandwidth delay product
US8180928B2 (en) 2002-08-30 2012-05-15 Broadcom Corporation Method and system for supporting read operations with CRC for iSCSI and iSCSI chimney
US6934806B2 (en) * 2002-09-23 2005-08-23 International Business Machines Corporation Method and system for improving input/output performance by proactively flushing and locking an entire page out of caches of a multiprocessor system
US7769893B2 (en) * 2002-10-08 2010-08-03 Koninklijke Philips Electronics N.V. Integrated circuit and method for establishing transactions
US6895530B2 (en) * 2003-01-24 2005-05-17 Freescale Semiconductor, Inc. Method and apparatus for controlling a data processing system during debug
US20050044174A1 (en) * 2003-04-11 2005-02-24 Sun Microsystems, Inc. Multi-node computer system where active devices selectively initiate certain transactions using remote-type address packets
US6976109B2 (en) * 2003-04-16 2005-12-13 Neomagic Israel Ltd. Multi-level and multi-resolution bus arbitration
US6975954B2 (en) * 2003-06-24 2005-12-13 Intel Corporation Functional testing of logic circuits that use high-speed links
US7210070B2 (en) * 2003-07-11 2007-04-24 Unisys Corporation Maintenance interface unit for servicing multiprocessor systems
US7237152B2 (en) * 2003-10-24 2007-06-26 Honeywell International Inc. Fail-operational global time reference in a redundant synchronous data bus system
KR20050043426A (en) * 2003-11-06 2005-05-11 삼성전자주식회사 Command transmitting method and apparatus in the pipeline bus system
US7415634B2 (en) * 2004-03-25 2008-08-19 International Business Machines Corporation Method for fast system recovery via degraded reboot
US7734797B2 (en) * 2004-03-29 2010-06-08 Marvell International Ltd. Inter-processor communication link with manageability port
US20050229020A1 (en) * 2004-04-06 2005-10-13 International Business Machines (Ibm) Corporation Error handling in an embedded system
US20060031596A1 (en) * 2004-08-05 2006-02-09 International Business Machines Corporation Method and apparatus for providing an alternate route to system memory
JP4455411B2 (en) * 2004-08-06 2010-04-21 キヤノン株式会社 Information processing apparatus, information notification method thereof, and control program
WO2006026461A2 (en) * 2004-08-27 2006-03-09 Board Of Regents, The University Of Texas System Methods for memory assignment schemes and architecture for shareable parallel memory module based internet switches
TW200609721A (en) * 2004-09-03 2006-03-16 Inventec Corp Redundancy control system and method thereof
EP1817670A1 (en) * 2004-10-19 2007-08-15 Nxp B.V. Data processing system and method for monitoring the cache coherence of processing units
US7336462B2 (en) * 2004-10-29 2008-02-26 Spx Corporation Alternator and starter tester protection apparatus and method
US7134324B2 (en) * 2004-10-29 2006-11-14 Spx Corporation Alternator holding apparatus and method for alternator testing
US7300041B2 (en) * 2004-10-29 2007-11-27 Spx Corporation Vertical alternator holding apparatus and method for alternator testing
US7212911B2 (en) * 2004-10-29 2007-05-01 Spx Corporation Alternator and starter tester apparatus and method
US7152464B2 (en) * 2004-10-29 2006-12-26 Spx Corporation Belt tensioning apparatus and method for alternator testing
US7690573B2 (en) * 2006-07-27 2010-04-06 Spx Corporation Alternator and starter tester with bar code functionality and method
US7134325B2 (en) * 2004-10-29 2006-11-14 Spx Corporation Starter motor holding apparatus and method for starter motor testing
US7150186B2 (en) * 2004-10-29 2006-12-19 Spx Corporation Door interlock apparatus and method for alternator/starter bench testing device
TW200617955A (en) * 2004-11-24 2006-06-01 Cheerteck Inc Method for applying downgraded dram to the electronic device and the electronic device thereof
US7970980B2 (en) * 2004-12-15 2011-06-28 International Business Machines Corporation Method and apparatus for accessing memory in a computer system architecture supporting heterogeneous configurations of memory structures
JP2006178616A (en) * 2004-12-21 2006-07-06 Nec Corp Fault tolerant system, controller used thereform, operation method and operation program
US7694064B2 (en) * 2004-12-29 2010-04-06 Hewlett-Packard Development Company, L.P. Multiple cell computer systems and methods
US8205046B2 (en) * 2005-01-31 2012-06-19 Hewlett-Packard Development Company, L.P. System and method for snooping cache information using a directory crossbar
JP2006252006A (en) * 2005-03-09 2006-09-21 Seiko Epson Corp Debug system, semiconductor integrated circuit device, microcomputer and electronic equipment
US7568122B2 (en) * 2005-03-16 2009-07-28 Dot Hill Systems Corporation Method and apparatus for identifying a faulty component on a multiple component field replaceable unit
CN100507866C (en) * 2005-03-18 2009-07-01 富士通株式会社 CPU suppression system and CPU suppression method using service processor
US7487327B1 (en) 2005-06-01 2009-02-03 Sun Microsystems, Inc. Processor and method for device-specific memory address translation
US7498806B2 (en) * 2005-06-20 2009-03-03 Spx Corporation Apparatus and method for isolating noise from a signal
US20060294317A1 (en) * 2005-06-22 2006-12-28 Berke Stuart A Symmetric multiprocessor architecture with interchangeable processor and IO modules
US20070022349A1 (en) * 2005-07-07 2007-01-25 Agilent Technologies, Inc. Test apparatus with tester channel availability identification
US7376799B2 (en) * 2005-07-21 2008-05-20 Hewlett-Packard Development Company, L.P. System for reducing the latency of exclusive read requests in a symmetric multi-processing system
US7269682B2 (en) 2005-08-11 2007-09-11 P.A. Semi, Inc. Segmented interconnect for connecting multiple agents in a system
US7318138B1 (en) 2005-08-30 2008-01-08 Symantec Operating Corporation Preventing undesired trespass in storage arrays
US7263642B1 (en) 2005-09-15 2007-08-28 Azul Systems, Inc Testing replicated sub-systems in a yield-enhancing chip-test environment using on-chip compare to expected results for parallel scan chains testing critical and repairable sections of each sub-system
US7265556B2 (en) * 2005-09-28 2007-09-04 Lucent Technologies Inc. System and method for adaptable testing of backplane interconnections and a test tool incorporating the same
US20070168740A1 (en) * 2006-01-10 2007-07-19 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for dumping a process memory space
US20070248111A1 (en) * 2006-04-24 2007-10-25 Shaw Mark E System and method for clearing information in a stalled output queue of a crossbar
JP2007293701A (en) * 2006-04-26 2007-11-08 Canon Inc Controller for dynamic reconfigurable device, and its method
US20070258459A1 (en) * 2006-05-02 2007-11-08 Harris Corporation Method and system for QOS by proxy
US20070258445A1 (en) * 2006-05-02 2007-11-08 Harris Corporation Systems and methods for protocol filtering for quality of service
US20070291768A1 (en) * 2006-06-16 2007-12-20 Harris Corporation Method and system for content-based differentiation and sequencing as a mechanism of prioritization for QOS
US8516153B2 (en) * 2006-06-16 2013-08-20 Harris Corporation Method and system for network-independent QoS
US20070291767A1 (en) * 2006-06-16 2007-12-20 Harris Corporation Systems and methods for a protocol transformation gateway for quality of service
US20070291765A1 (en) * 2006-06-20 2007-12-20 Harris Corporation Systems and methods for dynamic mode-driven link management
US8730981B2 (en) * 2006-06-20 2014-05-20 Harris Corporation Method and system for compression based quality of service
US20080013559A1 (en) * 2006-07-14 2008-01-17 Smith Donald L Systems and methods for applying back-pressure for sequencing in quality of service
WO2008013968A2 (en) 2006-07-28 2008-01-31 Vast Systems Technology Corporation Virtual processor generation model for co-simulation
US20100241759A1 (en) * 2006-07-31 2010-09-23 Smith Donald L Systems and methods for sar-capable quality of service
US20080025318A1 (en) * 2006-07-31 2008-01-31 Harris Corporation Systems and methods for dynamically customizable quality of service on the edge of a network
US20100238801A1 (en) * 2006-07-31 2010-09-23 Smith Donald L Method and system for stale data detection based quality of service
US8300653B2 (en) * 2006-07-31 2012-10-30 Harris Corporation Systems and methods for assured communications with quality of service
US7450588B2 (en) * 2006-08-24 2008-11-11 Intel Corporation Storage network out of order packet reordering mechanism
US7533297B2 (en) * 2006-09-14 2009-05-12 International Business Machines Corporation Fault isolation in a microcontroller based computer
CN101150792A (en) * 2006-09-20 2008-03-26 深圳富泰宏精密工业有限公司 Method for recovering operation function temporary disabled user recognition card and mobile communication device
US8719807B2 (en) * 2006-12-28 2014-05-06 Intel Corporation Handling precompiled binaries in a hardware accelerated software transactional memory system
US8644305B2 (en) 2007-01-22 2014-02-04 Synopsys Inc. Method and system for modeling a bus for a system design incorporating one or more programmable processors
US8060775B1 (en) 2007-06-14 2011-11-15 Symantec Corporation Method and apparatus for providing dynamic multi-pathing (DMP) for an asymmetric logical unit access (ALUA) based storage system
US7987229B1 (en) 2007-06-28 2011-07-26 Emc Corporation Data storage system having plural data pipes
US7979572B1 (en) 2007-06-28 2011-07-12 Emc Corporation Data storage system having operation code in address portion for atomic operations
US7979588B1 (en) * 2007-06-28 2011-07-12 Emc Corporation Data storage system having acceleration path for congested packet switching network
US7707367B1 (en) * 2007-06-28 2010-04-27 Emc Corporation Data storage system having separate atomic operation/non-atomic operation paths
US8090789B1 (en) 2007-06-28 2012-01-03 Emc Corporation Method of operating a data storage system having plural data pipes
US20090006712A1 (en) * 2007-06-29 2009-01-01 Fatma Ehsan Data ordering in a multi-node system
US7619484B2 (en) * 2007-10-19 2009-11-17 Hewlett-Packard Development Company, L.P. Oscillator phase matching
US7941399B2 (en) 2007-11-09 2011-05-10 Microsoft Corporation Collaborative authoring
US8825758B2 (en) 2007-12-14 2014-09-02 Microsoft Corporation Collaborative authoring modes
US8185338B2 (en) * 2007-12-24 2012-05-22 Stmicroelectronics International N.V. Low pin interface testing module
US8745337B2 (en) * 2007-12-31 2014-06-03 Teradyne, Inc. Apparatus and method for controlling memory overrun
US8521951B2 (en) * 2008-01-16 2013-08-27 S. Aqua Semiconductor Llc Content addressable memory augmented memory
US8301588B2 (en) 2008-03-07 2012-10-30 Microsoft Corporation Data storage for file updates
US8352870B2 (en) 2008-04-28 2013-01-08 Microsoft Corporation Conflict resolution
US8825594B2 (en) * 2008-05-08 2014-09-02 Microsoft Corporation Caching infrastructure
US8429753B2 (en) * 2008-05-08 2013-04-23 Microsoft Corporation Controlling access to documents using file locks
US8417666B2 (en) * 2008-06-25 2013-04-09 Microsoft Corporation Structured coauthoring
US8386750B2 (en) * 2008-10-31 2013-02-26 Cray Inc. Multiprocessor system having processors with different address widths and method for operating the same
US20100131836A1 (en) * 2008-11-24 2010-05-27 Microsoft Corporation User-authored notes on shared documents
US20100185896A1 (en) * 2009-01-22 2010-07-22 International Business Machines Corporation Method and apparatus for fully redundant control of low-speed peripherals
US8346768B2 (en) * 2009-04-30 2013-01-01 Microsoft Corporation Fast merge support for legacy documents
US20120210069A1 (en) * 2009-10-25 2012-08-16 Plurality Ltd. Shared cache for a tightly-coupled multiprocessor
CN102053847B (en) * 2009-11-09 2014-04-23 英业达股份有限公司 Server and updating method thereof
CN101699406B (en) * 2009-11-12 2011-12-14 威盛电子股份有限公司 Data storage system and method
TWI417887B (en) * 2009-12-02 2013-12-01 Via Tech Inc Data storage system and method
US8639885B2 (en) * 2009-12-21 2014-01-28 Oracle America, Inc. Reducing implementation costs of communicating cache invalidation information in a multicore processor
US8195883B2 (en) 2010-01-27 2012-06-05 Oracle America, Inc. Resource sharing to reduce implementation costs in a multicore processor
US8650431B2 (en) 2010-08-24 2014-02-11 International Business Machines Corporation Non-disruptive hardware change
FR2982960B1 (en) * 2011-11-22 2014-06-27 Schneider Electric Usa Inc DYNAMIC ADAPTATION TO CHANGES IN CONTROL SYSTEM TOPOLOGY
US8930947B1 (en) 2011-12-30 2015-01-06 Emc Corporation System and method for live migration of a virtual machine with dedicated cache
US9009416B1 (en) * 2011-12-30 2015-04-14 Emc Corporation System and method for managing cache system content directories
US9053033B1 (en) * 2011-12-30 2015-06-09 Emc Corporation System and method for cache content sharing
US9158578B1 (en) 2011-12-30 2015-10-13 Emc Corporation System and method for migrating virtual machines
US9235524B1 (en) 2011-12-30 2016-01-12 Emc Corporation System and method for improving cache performance
US9104529B1 (en) 2011-12-30 2015-08-11 Emc Corporation System and method for copying a cache system
US8892800B2 (en) 2012-02-09 2014-11-18 Intel Corporation Apparatuses for inter-component communication including slave component initiated transaction
US9244828B2 (en) * 2012-02-15 2016-01-26 Advanced Micro Devices, Inc. Allocating memory and using the allocated memory in a workgroup in a dispatched data parallel kernel
US10055711B2 (en) 2012-02-22 2018-08-21 Bosch Automotive Service Solutions Inc. Alternator and starter tester with warranty code functionality and method
US9128156B2 (en) 2012-05-03 2015-09-08 Bosch Automotive Service Solutions Inc. Alternator and starter tester with other failures determination functionality and method
US8903595B2 (en) 2012-09-17 2014-12-02 Bosch Automotive Service Solutions Llc Alternator and starter tester with increased load and cable identification
US9251073B2 (en) 2012-12-31 2016-02-02 Intel Corporation Update mask for handling interaction between fills and updates
US9411014B2 (en) 2013-03-22 2016-08-09 Synopsys, Inc. Reordering or removal of test patterns for detecting faults in integrated circuit
US9417287B2 (en) 2013-04-17 2016-08-16 Synopsys, Inc. Scheme for masking output of scan chains in test circuit
US9588179B2 (en) 2013-06-12 2017-03-07 Synopsys, Inc. Scheme for masking output of scan chains in test circuit
US10459784B2 (en) * 2013-06-28 2019-10-29 Infineon Technologies Ag Frequency signal generator, a frequency modulated continuous wave radar system and a method for generating a frequency signal
US10067187B2 (en) 2013-07-19 2018-09-04 Synopsys, Inc. Handling of undesirable distribution of unknown values in testing of circuit using automated test equipment
US9344525B2 (en) * 2013-11-25 2016-05-17 Violin Memory Inc. Method and apparatus for data migration
US9274835B2 (en) 2014-01-06 2016-03-01 International Business Machines Corporation Data shuffling in a non-uniform memory access device
US9256534B2 (en) 2014-01-06 2016-02-09 International Business Machines Corporation Data shuffling in a non-uniform memory access device
US9558064B2 (en) * 2015-01-28 2017-01-31 Micron Technology, Inc. Estimating an error rate associated with memory
FR3033428A1 (en) * 2015-04-10 2016-09-09 Continental Automotive France METHOD FOR DETERMINING THE ORIGIN OF A SAFETY FAULT
US9524769B2 (en) * 2015-04-17 2016-12-20 Samsung Electronics Co., Ltd. Smart in-module refresh for DRAM
US9761296B2 (en) 2015-04-17 2017-09-12 Samsung Electronics Co., Ltd. Smart in-module refresh for DRAM
RU2591180C1 (en) * 2015-05-29 2016-07-10 Юрий Анатольевич Ткаченко Protected computer storing its serviceability at damage
US9797956B2 (en) 2015-11-24 2017-10-24 Bosch Automotive Service Solutions Inc. System and method for testing alternator default mode operation
US10193413B2 (en) 2015-12-15 2019-01-29 Bosch Automotive Service Solutions Inc. Mounting bracket for water cooled type alternator
RU2615314C1 (en) * 2015-12-25 2017-04-04 Акционерное общество "Научно-исследовательский институт электронной техники" Method for increasing microcomputer reliability
US9923579B2 (en) * 2016-03-08 2018-03-20 International Business Machines Corporation Clock path technique for using on-chip circuitry to generate a correct encode pattern to test the on-chip circuitry
US9910090B2 (en) * 2016-03-08 2018-03-06 International Business Machines Corporation Bypassing an encoded latch on a chip during a test-pattern scan
US10474601B2 (en) 2017-02-06 2019-11-12 Oracle International Corporation Distributed fairness protocol for interconnect networks
CN107273100B (en) * 2017-06-15 2021-06-08 华为技术有限公司 Data real-time processing and storing device
US11080188B1 (en) 2018-03-28 2021-08-03 Apple Inc. Method to ensure forward progress of a processor in the presence of persistent external cache/TLB maintenance requests
US10866892B2 (en) 2018-08-13 2020-12-15 Apple Inc. Establishing dependency in a resource retry queue
US10747928B2 (en) * 2018-12-29 2020-08-18 Intel IP Corporation Diagnostic testing of FPGAs for safety critical systems
US10972408B1 (en) 2020-02-10 2021-04-06 Apple Inc. Configurable packet arbitration with minimum progress guarantees
CN115428409B (en) * 2020-04-24 2023-04-11 株式会社东阳特克尼卡 Packet capturing device and method
EP4204976A4 (en) * 2020-08-28 2024-03-06 Deep Vision Inc A processor system and method for increasing data-transfer bandwidth during execution of a scheduled parallel process
US11422946B2 (en) 2020-08-31 2022-08-23 Apple Inc. Translation lookaside buffer striping for efficient invalidation operations
US11615033B2 (en) 2020-09-09 2023-03-28 Apple Inc. Reducing translation lookaside buffer searches for splintered pages
US11675710B2 (en) 2020-09-09 2023-06-13 Apple Inc. Limiting translation lookaside buffer searches using active page size
CN113034878B (en) * 2021-03-09 2022-04-22 何思源 Universal household appliance remote control device with self-defined voice control

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3069562A (en) * 1956-08-06 1962-12-18 Digital Control Systems Inc Highly reliable rectifier unit
US3226569A (en) * 1962-07-30 1965-12-28 Martin Marietta Corp Failure detection circuits for redundant systems
US4920540A (en) * 1987-02-25 1990-04-24 Stratus Computer, Inc. Fault-tolerant digital timing apparatus and method
US4644498A (en) * 1983-04-04 1987-02-17 General Electric Company Fault-tolerant real time clock
US4939694A (en) * 1986-11-03 1990-07-03 Hewlett-Packard Company Defect tolerant self-testing self-repairing memory system
US4801869A (en) * 1987-04-27 1989-01-31 International Business Machines Corporation Semiconductor defect monitor for diagnosing processing-induced defects
US4873685A (en) * 1988-05-04 1989-10-10 Rockwell International Corporation Self-checking voting logic for fault tolerant computing applications
JPH0797328B2 (en) * 1988-10-25 1995-10-18 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン False tolerant synchronization system
US5392297A (en) * 1989-04-18 1995-02-21 Vlsi Technology, Inc. Method for automatic isolation of functional blocks within integrated circuits
US5042032A (en) * 1989-06-23 1991-08-20 At&T Bell Laboratories Packet route scheduling in a packet cross connect switch system for periodic and statistical packets
US4961013A (en) * 1989-10-18 1990-10-02 Hewlett-Packard Company Apparatus for generation of scan control signals for initialization and diagnosis of circuitry in a computer
US5157781A (en) * 1990-01-02 1992-10-20 Motorola, Inc. Data processor test architecture
US5313455A (en) * 1990-04-23 1994-05-17 Koninklijke Ptt Nederland N.V. Transmission system with recording of untransmitted packets
US5159273A (en) * 1990-09-28 1992-10-27 Hughes Aircraft Company Tri-state bus driver to support reconfigurable fault tolerant logic
US5166604A (en) * 1990-11-13 1992-11-24 Altera Corporation Methods and apparatus for facilitating scan testing of asynchronous logic circuitry
US5271019A (en) * 1991-03-15 1993-12-14 Amdahl Corporation Scannable system with addressable scan reset groups
US5269013A (en) * 1991-03-20 1993-12-07 Digital Equipment Corporation Adaptive memory management method for coupled memory multiprocessor systems
US5260979A (en) * 1991-05-28 1993-11-09 Codex Corp. Circuit and method of switching between redundant clocks for a phase lock loop
US5522080A (en) * 1991-10-24 1996-05-28 Intel Corporation Centralized control SIMD processor having different priority levels set for each data transfer request type and successively repeating the servicing of data transfer request in a predetermined order
JP2854474B2 (en) * 1992-09-29 1999-02-03 三菱電機株式会社 Bus use request arbitration device
US5533188A (en) * 1992-10-19 1996-07-02 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Fault-tolerant processing system
JPH0760395B2 (en) * 1992-11-06 1995-06-28 日本電気株式会社 Fault tolerant computer system
US5434993A (en) * 1992-11-09 1995-07-18 Sun Microsystems, Inc. Methods and apparatus for creating a pending write-back controller for a cache controller on a packet switched memory bus employing dual directories
JP2522140B2 (en) * 1992-11-18 1996-08-07 日本電気株式会社 Logic circuit
US5396619A (en) * 1993-07-26 1995-03-07 International Business Machines Corporation System and method for testing and remapping base memory for memory diagnostics
US5577204A (en) * 1993-12-15 1996-11-19 Convex Computer Corporation Parallel processing computer system interconnections utilizing unidirectional communication links with separate request and response lines for direct communication or using a crossbar switching device
US5535405A (en) * 1993-12-23 1996-07-09 Unisys Corporation Microsequencer bus controller system
CA2145553C (en) * 1994-03-30 1999-12-21 Yuuki Date Multi-processor system including priority arbitrator for arbitrating request issued from processors
US5613153A (en) * 1994-10-03 1997-03-18 International Business Machines Corporation Coherency and synchronization mechanisms for I/O channel controllers in a data processing system
US5623672A (en) * 1994-12-23 1997-04-22 Cirrus Logic, Inc. Arrangement and method of arbitration for a resource with shared user request signals and dynamic priority assignment
US5603005A (en) * 1994-12-27 1997-02-11 Unisys Corporation Cache coherency scheme for XBAR storage structure with delayed invalidates until associated write request is executed
US5487074A (en) * 1995-03-20 1996-01-23 Cray Research, Inc. Boundary scan testing using clocked signal
EP0735487B1 (en) * 1995-03-31 2001-10-31 Sun Microsystems, Inc. A fast, dual ported cache controller for data processors in a packet switched cache coherent multiprocessor system
US5691985A (en) * 1995-04-19 1997-11-25 Lucent Technologies Inc. System and method for increasing throughput of inter-network gateways using a hardware assist engine
US5805905A (en) * 1995-09-06 1998-09-08 Opti Inc. Method and apparatus for arbitrating requests at two or more levels of priority using a single request line

Also Published As

Publication number Publication date
EP0852035A1 (en) 1998-07-08
CA2229441A1 (en) 1997-02-27
US6026461A (en) 2000-02-15
EP0852035A4 (en) 1999-10-13
JPH11510934A (en) 1999-09-21
US6122756A (en) 2000-09-19
WO1997007457A1 (en) 1997-02-27
US5887146A (en) 1999-03-23

Similar Documents

Publication Publication Date Title
US6026461A (en) Bus arbitration system for multiprocessor architecture
US11907528B2 (en) Multi-processor bridge with cache allocate awareness
US7343456B2 (en) Load-linked/store conditional mechanism in a CC-NUMA system
EP0911731B1 (en) Order supporting mechanisms for use in a switch-based multi-processor system
US6014690A (en) Employing multiple channels for deadlock avoidance in a cache coherency protocol
US6279084B1 (en) Shadow commands to optimize sequencing of requests in a switch-based multi-processor system
US6101420A (en) Method and apparatus for disambiguating change-to-dirty commands in a switch based multi-processing system with coarse directories
US6085276A (en) Multi-processor computer system having a data switch with simultaneous insertion buffers for eliminating arbitration interdependencies
US6154816A (en) Low occupancy protocol for managing concurrent transactions with dependencies
US6108752A (en) Method and apparatus for delaying victim writes in a switch-based multi-processor system to maintain data coherency
US6094686A (en) Multi-processor system for transferring data without incurring deadlock using hierarchical virtual channels
US6249520B1 (en) High-performance non-blocking switch with multiple channel ordering constraints
US7818388B2 (en) Data processing system, method and interconnect fabric supporting multiple planes of processing nodes
KR100348947B1 (en) Non-uniform memory access(numa) data processing system that speculatively issues requests on a node interconnect
US20060294525A1 (en) Ambiguous virtual channels
JPH06180682A (en) Method and apparatus for data transfer
US6460133B1 (en) Queue resource tracking in a multiprocessor system
US8103791B2 (en) Synchronized communication in a data processing system
US20080175272A1 (en) Data processing system, method and interconnect fabric for selective link information allocation in a data processing system
US6430658B1 (en) Local cache-to-cache transfers in a multiprocessor system
US20080181244A1 (en) Data processing system, method and interconnect fabric for improved communication in a data processing system
US6389516B1 (en) Intervention ordering in a multiprocessor system
US7254694B2 (en) Processors interconnect fabric with relay broadcasting and accumulation of partial responses
US6275906B1 (en) Coherency maintenance in a multiprocessor system
JP2003030131A (en) Split transaction snooping bus and method of arbitration

Legal Events

Date Code Title Description
FZDE Dead

Effective date: 20020813