Coherent transaction ordering in multi-tiered bus system

Abstract: A computer system has a multi-tiered bus system. The multi-tiered bus system includes one or more local buses (20,25) and a central bus (10) connected to each local bus (20) by a bus interface (11). In order to maintain one global view of transaction ordering, the processors (21, 22) on each local bus (20) record bus transactions in an order on which the bus transactions appear on the central bus (10). To do this, bus transactions which are initiated on any local bus (20) are forwarded to the central bus (10) by the corresponding bus interface (11). The processors (21, 22) connected to the local bus (20) do not record bus transactions when they are initiated on the local bus (20). Every transaction which occurs on the central bus (10) is echoed back to every local bus (20) by the corresponding bus interface (11). Each processor (21, 22) records bus transactions at the time they are echoed back to the local bus (20).

Description: The present invention concerns the coherent ordering of bus transactions in a multi-tiered bus. Most modern computer systems include a central processing unit (CPU) and a main memory. In order to increase performance, the single CPU may be replaced, for example, by many processors with fast access to a high-bandwidth memory system. In one system, high multiprocessor performance is achieved by utilizing a tightly-coupled symmetrical multiprocessing reduced instruction set computer (RISC) processors placed on a high bandwidth coherent bus. See, for example, K. Chan, T. Alexander, C. Hu, D. Larson, N. Noordeen, Y. VanAtta, T. Wylegala, S. Ziai, Multiprocessor Features of the HP Corporate Business Servers , IEEE Compcon Digest of Papers, February 1993, pp. 336-337. In the system described by the paper cited above, it is necessary for each processor to monitor transactions on the bus for the purpose of cache and translation look-aside buffer (TLB) coherency. When monitoring transactions, it is important for each processor to track the ordering of the transactions as well as the transactions themselves. This may be done, for example, by a transaction queue. Each processor monitors the bus. Whenever a transaction occurs on the bus, including transactions by the processor itself, the processor places the transaction in a queue. The transactions are then listed in the queue in the order in which the transactions occur on the bus. While it is possible to use a queue to keep track of transactions for systems in which the system processors use a single processor memory bus, difficulties arise when it is necessary to track transaction order for a multi-tiered bus system. Particularly, in a multi-tiered bus system, generally some type of bus interface is used between each bus layer. Such a bus interface can add a significant amount of delay when transactions are relayed from one bus to another bus. In addition, it is desirable that each bus operates independently and simultaneously. In such a case, all transactions on each bus can be echoed to all other busses. This will assure that each system processor will be able to observe each transaction performed on the computer system regardless of the bus to which it is connected. However, the order of transactions observed by a system processor will depend upon the particular bus to which the system processor is connected. One way to assure that the observed transaction order is the same for all busses in the computer system is to suspend the ability of the computer system to simultaneously perform different transactions on different busses. That is, whenever a first transaction takes place on one bus, new transactions on other busses are suspended until the first transaction has propagated to the other busses. A method and apparatus of this type are described in Hagersten E., Haridi S. and Warren D.H.D, "The Data Diffusion Machine and its Data Coherency Protocols", Amsterdam, North Holland, Netherlands, 1990, proceedings of the IFIP TC10W/G 10.1, workshop on Concepts and Characteristics of Declarative Systems, Budapest, 16-20 Oct. 1988, pages 127-148. It discloses a method for a computing system with a local bus and a central bus connected by a bus interface, by which processors on the local bus record bus transactions in an order on which the bus transactions appear on the central bus, the method comprising the following steps : i) forwarding, by the bus interface, to the central bus, bus transactions being arbitrated at the central bus wherein transactions are suspended ; ii) forwarding, by the bus interface to the local bus, bus transactions occurring on the central bus resulting from the arbitrated transactions in step i) ; iii) processors record bus transactions which are forwarded by the bus interface to the local bus in step ii). The computing system comprises in addition the means corresponding to the forwarding steps i) and ii), to the arbitration of step ii) and to the recording of step iii). However, such suspension of bus activity can significantly impede performance of the computing system. It is desirable, therefore to implement a multi-tier bus in which each bus performs bus transactions simultaneous to the performance of bus transactions by other busses, and in which each system processor in the multi-tier bus system observes the same transaction order. Summary of the Invention In accordance with the preferred embodiment of the present invention, a computer system with a multi-tiered bus system is presented, as set forth in independent claims 1 and 3. Brief Description of the Drawings Figure 1 shows a simplified block diagram of a multi-tiered system in accordance with a preferred embodiment of the present invention. Figure 2 shows a queue within a processor within the multi-tiered system shown in Figure 1, in accordance with the preferred embodiment of the present invention. Figure 3 is a processor's flowchart which describes a method for placing bus transactions on a queue, in accordance with a preferred embodiment of the present invention. Figure 4 is a processor memory interface's (PMI) flowchart which describes a method for forwarding bus transactions between busses, in accordance with a preferred embodiment of the present invention. Figure 5, Figure 6, Figure 7, Figure 8, Figure 9, Figure 10 and Figure 11 illustrate a method for placing bus transactions on a queue in accordance with the preferred embodiment of the present invention. Description of the Preferred Embodiment Figure 1 shows a simplified block diagram of a multi-tiered bus system within a computing system in accordance with a preferred embodiment of the present invention. A processor memory interface (PMI) 11 and a processor memory interface 12 are connected to a central bus 10. Processor memory interface 11 interfaces central bus 10 to a local bus 20. Processor memory interface 12 interfaces central bus 10 to a local bus 25. A processor 21 and a processor 22 are connected to local bus 20. A processor 26 and a processor 27 are connected to local bus 25. In the preferred embodiment of the present invention, processor 21, processor 22, processor 26 and processor 27 each monitors transactions on the multi-tiered bus system for the purpose of cache and translation look-aside buffer (TLB) coherency. This may be done, for example, using a queue. Each processor determines transaction order by the relative order of transactions placed on its queue. While the preferred embodiment utilizes a queue, it will be well understood in the art that a queue not be used as long as each processor has a means for determining the relative order of transactions within the multi-tiered bus system. Figure 2 shows a queue 32 within processor 21. In the preferred embodiment, processor 21 determines transaction order by the relative order of transactions placed on queue 32. Within processor memory interface 11, forwarding logic 31 forwards transactions between central bus 10 and local bus 25. In the preferred embodiment, in order to assure that the transaction order is uniform across the multi-tiered system, transaction order for the multi-tiered system is determined to be the transaction order on central bus 10. Forwarding logic 31, therefore, forwards all bus transactions performed on local bus 20 to central bus 10. Likewise, forwarding logic 31, forwards all bus transactions performed on central bus 10 to local bus 20. Figure 3 is a flowchart which describes a method for placing bus transactions on queue 32, in accordance with a preferred embodiment of the present invention. In a step 41, the processor monitors transactions on the local bus. The monitored transactions on the local bus include transactions originated by all processors on the local bus including the processor performing the monitoring as well as the processor memory interface. When a transaction is detected, in a step 42, a determination is made as to whether the transaction originated from a processor memory interface. If the bus transaction originates from a processor memory interface, the transaction is recorded on the queue in a step 43. If the bus transaction does not originate from a processor memory interface, the bus transaction is not recorded on the queue. The processor then resumes monitoring transactions on the local bus waiting for the next transaction on the local bus. Figure 4 is a flowchart which describes a method by which a processor memory interface transfers bus transactions between central bus 10 and a local bus, in accordance with a preferred embodiment of the present invention. In a step 51, the processor memory interface monitors transactions on both central bus 10 and the local bus. The monitored transactions on the local bus include transactions originated by all processors on the local bus. Transactions originating from the processor memory interface on the local bus are not monitored. The monitored transactions on central bus 10 include transactions originated by all processors and processor memory interfaces connected to central bus 10, including the processor memory interface performing the monitoring. When a transaction is detected, in a step 52, a determination is made as to whether the transaction is on central bus 10. If the transaction is on central bus 10, in step 53, the transaction is forwarded to the local bus. If the bus transaction is not on central bus 10, i.e., it is on the local bus, the bus transaction is forwarded to central bus 10. The processor memory interface then resumes monitoring transactions on bus 10 and on the local bus waiting for the next transaction. The transactions forwarded from local bus 20 to central bus 10 are echoed back to local bus 20 by PMI 11. However, the transactions forwarded from central bus 10 to local bus 20 are not echoed back to central bus 10. Operation of a multi-tiered bus in accordance with the preferred embodiment is illustrated by observing how processor 21 adds transactions to queue 32. For example, in Figure 5, at a time one, a transaction A, represented by a message 61, is placed on central bus 10. In Figure 6, at a time two, processor memory interface 11 has, in accordance with the flowchart shown in Figure 4, forwarded transaction A on to local bus 20, as represented by a message 62. Also at time two, a transaction B, represented by a message 63, is placed on central bus 10. In Figure 7, at a time three, in accordance with the flowchart shown in Figure 3, processor 21 has recorded transaction A in queue 32. Processor 21 also has originated a transaction T on local bus 20, as represented by a message 64. In accordance with the flowchart shown in Figure 3, processor 21 has not recorded transaction T in queue 32 because transaction T was not originated by a processor memory interface. At time three, processor memory interface 11 is storing transaction B, as represented by a message 65, waiting for an opportunity to access local bus 20. In Figure 8, at a time four, in accordance with the flowchart shown in Figure 4, processor memory interface 11 has forwarded transaction B on to local bus 20, as represented by a message 66. Also at time four, in accordance with the flowchart shown in Figure 4, processor memory interface 11 has forwarded transaction T on to central bus 10, as represented by a message 67. In Figure 9, at a time five, in accordance with the flowchart shown in Figure 3, processor 21 has recorded transaction B in queue 32. Also at time five, processor memory interface 11 has, in accordance with the flowchart shown in Figure 4, echoed transaction T on to local bus 20, as represented by a message 68. Also at time five, a transaction C, represented by a message 69, is placed on central bus 10. In Figure 10, at a time six, in accordance with the flowchart shown in Figure 3, processor 21 has recorded transaction T in queue 32. Also at time six, processor memory interface 11 has, in accordance with the flowchart shown in Figure 4, forwarded transaction C on to local bus 20, as represented by a message 70. It is important to note that transaction T is not recorded in queue 32 until after transaction T has been echoed back by processor memory interface 11. In Figure 11, at a time seven, in accordance with the flowchart shown in Figure 3, processor 21 has recorded transaction C in queue 32. The resulting values in queue 32 reflect the order which transactions appeared on central bus 10 and not the order transactions appeared on local bus 20. The foregoing discussion discloses and describes merely exemplary methods and embodiments of the present invention. As will be understood by those familiar with the art, the invention may be embodied in other specific forms without departing from the scope or essential characteristics thereof. Accordingly, the disclosure of the present invention is intended to be illustrative, but not limiting, of the scope of the invention, which is set forth in the following claims.

Claims: A method for a computing system with a local bus (20) and a central bus (10) connected by a bus interface (11), by which aplurality of processors (21, 22) on the local bus (20) record bus transactions in an order on which the bus transactions appear on the central bus (10), the method comprising the steps of: (a) forwarding, by the bus interface (11) to the central bus (10), each of the bus transactions which any of the plurality of processors (21, 22) initiates on the local bus (20); and (b) forwarding, by the bus interface (11) to the local bus (20), each of the bus transactions which occur on the central bus (10), the bus transactions which occur on the central bus (10) including each of the bus transactions which are forwarded by the bus interface (11) to the central bus (10) in step (a); and (c) each of the plurality of processors (21, 22) records each of the bus transactions which are forwarded by the bus interface (11) to the local bus (20) in step (b) and only each of the bus transactions which are forwarded by the bus interface (11) to the local bus (20) in step (b) are recorded by each of the plurality of processors (21, 22). A method as in claim 1 wherein in step (c) for each of the plurality of processors (21, 22), the bus transactions recorded by the processor are recorded in a queue within the processor. A computing system comprising: a local bus (20); a central bus (10); a plurality of processors (21,22) coupled to the local bus (20); and, a bus interface (11), coupled to the local bus (20) and to the central bus (10), the bus interface (11) including: first forwarding means (31), coupled to the local bus (20) and the central bus (10), for forwarding to the central bus (10), each of the bus transactions which the processor (21) initiates on the local bus (20), and second forwarding means (31), coupled to the local bus (20) and the central bus (10), for forwarding to the local bus (20), each of the bus transactions which occur on the central bus (10), the bus transactions which occur on the central bus (10) including each of the bus transactions which are forwarded by the first forwarding means (31) to the central bus (10); and each of the plurality of processors (21,22) includes recording means (41, 42, 43) for recording each of the bus transactions which are forwarded by the second forwarding means (31) to the local bus (20) and each of the said recording means (41, 42, 43) recording only each of the bus transactions which are forwarded by the second forwarding means (31) to the local bus (20). A computing system as in claim 3 wherein the processor (21) additionally includes a queue (32), the recording means (41, 42, 43) recording the bus transactions in the queue (32). A computing system as in claim 3 additionalIy comprising a second processor (22), coupled to the local bus (20), the second processor (22) including second recording means (41, 42, 43) for recording each of the bus transactions which are forwarded by the second forwarding means (31) to the local bus (20). A computing system as in claim 5 wherein the second processor (22) additionally includes a second queue, the second recording means (41, 42, 43) recording the bus transactions in the second queue. A computing system as in claim 5 wherein the recording means (41, 42, 43) and the second recording means (41, 42, 43) record only each of the bus transactions which are forwarded by the second forwarding means (31) to the local bus (20).

Inventors: ALEXANDER THOMAS B, CHAN KENNETH K, WU JULIE W, ALEXANDER, THOMAS B., CHAN, KENNETH K., WU, JULIE W.
Applicants: HEWLETT PACKARD CO, HEWLETT-PACKARD COMPANY
Application year: 1995
Main classification: G06F13
IPC codes: G06F13, G06F12, G06F15