Method for transferring data in a multiprocessor computer system with crossbar interconnecting unit

Abstract: Method (T1-T27) for transferring data in a computer system comprising a plurality of processors and a shared memory, at least one of the processors having a cache memory for storing corresponding data of the shared memory, a plurality of data channels to each of which at least one of the said processors is connected, and means for selectively interconnecting the data channels, the method comprising the steps of requesting (T1-T5) the reading of a data element from the shared memory by a requesting processor, and in the case (T5-T12) in which the requested data element is present in modified form in the cache memory of an intervening processor, transferring (T14-T26) the modified data element from the intervening processor to the interconnecting means and subsequently (T20-T27) to the requesting processor, in which the interconnecting means are granted (T14) access to the data channel corresponding to the requesting processor before the modified data element is available (T19) in the interconnecting means.

Description: The present invention relates to a method for transferring data in a multiprocessor computer system, and particularly to a method according to the precharacterizing clause of the first claim. Multiprocessor computer systems, in which a plurality of processors execute different operations simultaneously using a shared memory, are widely used to obtain high operating performance. A particular type of multiprocessor computer system, described for example in EP-A-0608663, comprises a multi-point communication channel, or bus, for the transfer of addresses to which the processors and the shared memory are connected in parallel; each processor and the shared memory are connected selectively in pairs for the transfer of data through point-to-point communication channels connected to a crossbar interconnecting unit, controlled by a suitable control unit; typically, the interconnecting unit is provided with input and output buffer memories, each of which is connected to a corresponding data channel. In general, each processor includes a memory of the cache type (very fast but with a limited capacity), which stores data corresponding to those stored in the (relatively slow) shared memory, in such a way as to reduce statistically the number of accesses to the shared memory (and therefore also to the address bus). When a processor requests the reading of a data element from the shared memory, this processor (after obtaining access to the address bus) sends the address of the requested data along the bus. To ensure the consistency of the data of the shared memory replicated in the cache memories, the processors continuously observe (by a process known as snooping) the read requests, to check whether the requested data element is present in their cache memory. If the requested data element is present in a processor in a form which is modified with respect to the (no longer valid) value present in the shared memory, this processor intervenes by directly supplying the data element to the requesting processor. When the requested data element is available in the output buffer of the interconnecting unit corresponding to the data channel of the requesting processor, the control unit of the interconnecting unit requests access to this data channel for transferring the data element to the requesting processor. The inventors have realized that the known data transfer method described above does not allow the resources of the computer system to be exploited in an optimal way; in particular, it has a duration which is not negligible and has a negative effect on the performance of the whole computer system. The object of the present invention is to overcome the above drawbacks.To achieve this object a method for transferring data as described in the first claim is proposed. Further characteristics and the advantages of the method for transferring data according to the present invention will be made clear by the following description of a preferred embodiment thereof, provided for information only and without restriction, with reference to the attached figures, in: Fig. 1 is a block diagram of a computer system in which the method according to the present invention can be used; Fig. 2 represents in schematic form the signals exchanged with the arbitration unit shown in Fig. 1; Fig. 3 illustrates in a timing diagram a known method for transferring data in the computer system shown in Fig. 1; Figs. 4a and 4b represent in timing diagrams different examples of the method of transferring data according to the present invention. With reference to Fig. 1 in particular, a multiprocessor computer system 100 is illustrated, comprising an address bus 105 (of the 64-bit type for example) to which are connected in parallel a plurality of processors C1, C2, C3, C4 and C5 (five in the example shown) which operate in what is known as "master" mode with the function of controlling access (with reciprocal exclusion) to the address bus 105; typically, the processors C1-C5 consist of central processing units (CPU), or alternatively input/output controllers, interface units (bridges) for connection to a group (cluster) of processors, and similar. Each processor C1, C2, C3, C4 and C5 (or only one or more of them) is provided with a cache memory, identified as CM1, CM2, CM3, CM4 and CM5 respectively. A shared memory 115, typically consisting of a plurality of modules is also connected, through a control unit (System Memory Control, or SMC) Cm, to the address bus 105. A value (ADD) indicating an address of a data element (of the shared memory, of an internal register of a processor, of a remote memory of a cluster of processors, and similar) and the type of operation requested (reading or writing) is transmitted along the address bus 105; typically, the data are not controlled in an ordered flow and may be supplied to a requesting processor in any sequence (Out of Order), and consequently the ADD value also includes a tag (TAG) which identifies the requesting processor and the transaction relating to it. The processors C1-C5 and the memory control unit Cm are connected simultaneously to the address bus 105 to receive the value transmitted along it; the access of the processors C1-C5 with reciprocal exclusion to the address bus 105 for sending a particular value along it is controlled by an arbitration unit (ARB) 120. Each processor C1, C2, C3, C4, C5 and the shared memory 115 are connected through a data communication channel D1, D2, D3, D4, D5 and Dm respectively to a crossbar interconnecting unit (Data CrossBar, or DCB) 125; the interconnecting unit 125 is provided with input buffers Bin1, Bin2, Bin3, Bin4, Bin5 and with output buffers Bout1, Bout2, Bout3, Bout4, Bout5, each of which is connected to a corresponding data channel D1, D2, D3, D4, D5 respectively. The interconnecting unit 125 selectively connects a processor C1-C5 to the shared memory 115, or to another processor C1-C5, in response to suitable instruction signals supplied by the memory control unit Cm; it should be noted that it is possible to activate a plurality of connections simultaneously without any interference. A data element and the corresponding identifying tag are transmitted along each data channel D1-D5 and Dm. The data channels D1-D5 have a capacity of 64 bits, for example, while the data channel Dm preferably has a multiple capacity, of 256 bits for example; in this case, the transfer of data between the shared memory 115 and the interconnecting unit 125 takes place simultaneously in two 256-bit blocks (512 bit), while the transfer of data between the interconnecting unit 125 and the processors C1-C5 takes place by serialization of the operation into a plurality of successive stages (8 in the example in question) during each of which one 64-bit block is transferred. The corresponding processor C1-C5 and the interconnecting unit 125 are connected simultaneously to each data channell D1-D5 to receive the value transmitted along it; the memory control unit Cm is connected to a portion of each data channel D1-D5 to receive only the identifying tags. The arbitration unit (ARB) 120 controls the access to each data channel D1-D5, with reciprocal exclusion, by the corresponding processor C1-C5 and by the interconnecting unit 125 (at the request of the memory control unit Cm). Similar considerations are applicable in the case in which two or more processors are connected directly to each data channel D1-D5. On the contrary, access to the data channel Dm by the interconnecting unit 125 and by the memory 115 is controlled directly by the memory control unit Cm. A timer unit (TIME) 130 generates a clock signal Ck which is supplied to the processors C1-C5, to the memory control unit Cm, to the shared memory 115, to the arbitration unit 120 and to the interface unit 125 to synchronize the operation of the computer system 100. The method according to the present invention is, however, also suitable for use in other computer systems, for example those having a different number of processors, with address bus and data channels having different capacities, with two or more interconnecting units connected in parallel, with input buffers only, output buffers only, or no buffers in the interconnecting unit, with a similar input/output buffer connected to the data channel of the shared memory, and in general in any multiprocessor computer system in which one or more processors are connected through a corresponding data channel to equivalent interconnecting means. With reference now to Fig. 2 (the elements shown previously in Fig. 1 are indicated by the same reference numbers or symbols), each processor C1-C5 is connected to the arbitration unit 120 through a dedicated point-to-point line for sending a signal requesting access to the address bus (Address Bus Request, or ABR i , where i=C1...C5), and through a further dedicated line for receiving a signal granting access to the address bus (Address Bus Grant, or ABG i ). The arbitration unit 120 is connected through a multi-point line to all the agents (processors C1-C5 and memory control unit Cm) for sending a signal indicating the validity of the value present in the address bus (Early Transfer Start, or EATS). Each processor C1-C5 is connected to the arbitration unit 120 through a dedicated line for sending a signal requesting access to the corresponding data channel (Data Bus Request, or DBR i ) and through a further dedicated line for receiving a signal granting access to the data channel (Data Bus Grant, or DBG i ). The memory control unit Cm is connected to the arbitration unit 120 through a dedicated line for each data channel for sending along each line a signal requesting access to the corresponding data channel (DBR j , where j=D1...D5) and through a further dedicated line for each data channel for receiving a signal granting access to the data channel (DBG j ). The memory control unit Cm is also connected to the arbitration unit 120 through a dedicated line for each data channel for receiving along each line a signal (Req j ) indicating the fact that there are requests for access (from the processor) to the corresponding data channel. A dedicated line for each data channel is used to transmit a signal indicating the occupation of the corresponding data channel (Dbusy j ). The corresponding agents (processor C i and memory control unit Cm) and the arbitration unit 120 are connected to each of these lines; the Dbusy j signal is sent along the corresponding line by the agent which has obtained access to the data channel and is received simultaneously by the other agents and by the arbitration unit. The duration of the data channel occupation signal is variable as a function of the length of the data transmitted; for example, if the data channel has a capacity of 64 bits, in other words 8 bytes, and the transmitted data element consists of a cache memory line of 64 bytes, the transfer of this data element requires 8 clock periods. It should be noted that a corresponding signal is not used for the address bus, since its occupation has a fixed duration (of 3 clock periods, for example). The agents C1-C5, Cm are connected through dedicated channels (with a capacity of 2 bits each, for example) to the arbitration unit 120 for sending a signal indicating the state of the transaction (AStatOut k , where k=C1...C5, Cm); the arbitration unit 120 is connected through a multi-point channel (with a capacity of 2 bits, for example) to all the agents C1-C5, Cm for sending a signal indicating the collective state of the transaction (AStatIn), which is a function of the value of the various AStatOut k signals. In particular, the AStatIn signal takes a first value (AddressParityError) if an agent has detected a parity error in the address, a second value (Retry) if an agent is unable to check a transaction because it has all its resources occupied (so that the transaction has to be cancelled and repeated by the requesting processor), a third value (PositiveAcknowledge) if an agent recognizes that it is the addressee of the transaction, and a fourth value (NoAcknowledge) if no agent recognizes that it is the addressee of the transaction. Similarly, the agents C1-C5, Cm are connected through dedicated channels (with a capacity of 3 bits each, for example) to the arbitration unit 120 for sending a signal (ARespOut k ) which indicates the state of the snooping; the arbitration unit 120 is connected through a multi-point channel (with a capacity of 3 bits, for example) to all the agents C1-C5, Cm for sending a signal indicating the collective state of the snooping (ARespIn), which is a function of the value of the various ARespOut k signals. In particular, the signal ARespIn takes a first value (Retry) if the transaction has to be cancelled for any reason (for example because some resources are not available) and then repeated by the requesting processor, a second value (Modify) if a processor has in its cache memory the requested data element in a form modified with respect to the (no longer valid) value present in the shared memory, a third value (ReRun) if the transaction has to be cancelled and suspended for subsequent reactivation (to prevent continual repetitions of the transaction), and a fourth value (Null) if no processor has the requested data element in its cache memory. The present invention is, however, also capable of being applied with equivalent arbitration units which use other types of signals, different connections to the other units of the computer system, with a fixed duration of occupation of each data channel, and similar. An known example of data transfer used in the computer system described above is illustrated by the timing diagram in Fig. 3; as usual, the various signals are set/reset, in other words take a low/high value (or vice versa) for a time interval having a duration equal to the period of the clock signal Ck (or a multiple of this period), and each rising edge of the clock signal Ck defines the instant at which the state of the signals is stable and can be recognized (strobed). It is assumed that at the instant T1 a generic processor (for example the processor indicated by C1 in Fig. 1) requests access to the address bus (by setting the signal ABR C1 ) for reading a data element from the shared memory; the signal ABR C1 is kept set up to an instant, for example T3, at which the arbitration logic grants access to the address bus (by setting the signal ABG C1 ). The arbitration unit sets the signal EATS at the instant T4 to signal to all the agents that the value present in the address bus at the next instant is valid. Simultaneously, the processor C1 accesses the address bus by sending along it the value ADD (address of requested data element and corresponding identifying tag). The value ADD present in the address bus is received at the instant T5 by all the agents, each of which generates a corresponding transaction state signal at the instant T7 (represented in the figure in cumulative form by a single signal AStatOut). At the instant T8, the collective transaction state signal AStatIn is produced by the arbitration unit. Each agent then generates at the instant T11 a corresponding snooping state signal (represented in the figure in cumulative form by a single signal ARespOut). At the instant T12, the collective snooping state signal ARespIn is produced by the arbitration unit. We shall now consider the case in which the requested data element is present in the cache memory of an intervening processor (for example the processor indicated by C3 in Fig. 1) in modified form (ARespIn=Modify). In this situation, the intervening processor C3 requests access to the corresponding data channel (indicated by D3 in Fig. 1) for transferring the modified data element to the interconnecting unit. In particular, at an instant T14 (generally following the instant T12) the intervening processor C3 sets the signal DBR C3 ; the arbitration unit grants access to the data channel D3 to the intervening processor C3 at a subsequent instant, for example T16 (setting the signal DBG C3 ). At the instant T18, the intervening processor C3 occupies the data channel D3 (setting the signal Dbusy D3 ) and sends the modified data element; the transfer operation requires, for example, 8 clock periods, and therefore the Dbusy D3 signal is reset after the instant T24 and the transfer of the modified data element terminates at the instant T25. Simultaneously, the memory control unit receives from the data channel D3 the identifying tag associated with the transferred data element (indicating the requesting processor C1). The modified data element is loaded into the input buffer of the interconnecting unit corresponding to the data channel D3 (indicated by Bin3 in Fig. 1) after one clock period, in other words from the instant T19 to the instant T26. At the next instant T20 the memory control unit (according to the value of the identifying tag received previously) connects the input buffer Bin3 to the output buffer (indicated by Bout1 in Fig. 1) corresponding to the data channel D1 for transferring the modified data element (from the instant T20 to the instant T27). Simultaneously, the memory control unit requests access to the data channel D1, setting the signal DBR D1 . The arbitration unit grants the memory control unit access to the data channel D1 at a subsequent instant, for example T22 (setting the signal DBG D1 ). At the instant T24, the memory control unit occupies the data channel D1 (setting the signal Dbusy D1 ) for transferring the modified data element to the requesting processor C1. The Dbusy D1 signal is then reset at the instant T30 and the transfer of the modified data element terminates at the instant T31. With reference now to Fig. 4a, an example of data transfer according to the present invention is illustrated. The stages up to the loading of the modified data element into the input buffer Bin3 are identical to those described above; the present invention, however, is also suitable for application with equivalent timing systems capable of providing, in general, the steps of requesting the reading of the data element from the shared memory and, if the requested data element is present in modified form in the cache memory of the intervening processor, transferring the modified data element from the intervening processor to the interconnecting unit (and then to the requesting processor). In the method according to the present invention, the arbitration unit grants the memory control unit (and consequently the interconnecting unit) access to the data channel D1, setting the signal DBG D1 , before the modified data element is available in the interconnecting unit (particularly in the input buffer Bin3). Preferably, the signal DBG D1 is set immediately after the instant (T11) in which the arbitration unit receives from the intervening processor C3 the signal ARespOut C3 indicating that the requested data element is present in its cache memory in modified form, at the instant T14 for example. In a particularly advantageous embodiment of the present invention, the arbitration unit grants the memory control unit access to the data channel D1 only if there are no other requests (from the corresponding processor C1) for access to the same data channel. In this case, the other access requests are satisfied first, after which the arbitration unit grants the memory control unit access to the data channel D1, in such a way as to avoid the unnecessary blocking of other transactions. At the instant T16, the memory control unit occupies the data channel D1, setting the signal Dbusy D1 . As soon as the modified data element is available in the input buffer Bin3 (instant T19), the memory control unit connects the input buffer Bin3 to the output buffer Bout1. The data element is transferred at the following instant T20 to the output buffer Bout1 and to the data channel D1. Preferably, the transfer from the input buffer Bin3 to the data channel D1 is immediate, since it is not necessary to store the data element in the output buffer Bout1 (since access to the data channel D1 has already been granted); in this way, the output buffer Boutl is transparent and operates solely as a driver circuit of the data channel D1. The Dbusy D1 signal is then reset at the instant T26 and the transfer of the modified data element terminates at the instant T27. The method described above reduces the duration of the data transfer operation. In particular, this solution makes it unnecessary for the memory control unit to request access to the data channel D1; additionally, in this way there is a saving of the time required to transfer the modified data element to the output buffer Bout1 and to grant to the memory control unit access to the data channel D1. The example of embodiment illustrated in Fig. 4a provides, in particular, a reduction of 4 clock periods by comparison with the known method illustrated in Fig. 3; in general, the method according to the present invention provides a time saving of the order of 20% over the whole operation of transferring the modified data element from the intervening processor to the requesting processor. Preferably, the granting of access to the data channel D1 to the memory control unit is not unconditional. In particular, the signal DBG D1 is not kept set by the arbitration unit, but is stored within the memory control unit (to be cancelled at the end of the operation of transferring the modified data element). If a different request for access to the data channel D1 (from the corresponding processor C1) is received before the completion of the operation of transferring the modified data element (at the instant T16 for example), the arbitration unit notifies this request to the memory control unit (by setting the signal Req D1 ), as illustrated in Fig. 4b. The memory control unit then decides, according to the state of the transfer operation, whether to maintain the access to the data channel D1 (for example because the operation is about to be concluded) or to free access to it. In the latter case, the memory control unit frees the data channel D1 by resetting the DBusy D1 signal (at the instant T17). When the Req 1 signal is reset, since there are no other requests for access to the data channel D1 (at the instant T19 for example), the memory control unit again requests access to the data channel D1, setting the signal DBR D1 at the next instant T20. The arbitration unit grants the memory control unit access to the data channel D1 at a subsequent instant, for example T22 (by setting the signal DBG D1 again). At the instant T24, the memory control unit occupies the data channel D1 (by setting the Dbusy D1 signal again) to transfer the modified data element, as soon as it is available, to the requesting processor C1. In the case shown in the figure, in which the loading of the modified data element into the input buffer Bin3 has already commenced (instant T19), the modified data element is preferably transferred into the output buffer Bout1 (from the instant T20 to the instant T27), in such a way that the input buffer Bin3 is freed for other data. The modified data element is then transferred to the data channel D1 at the instant T24; the Dbusy D1 signal is therefore reset at the instant T30 and the transfer of the modified data element terminates at the instant T31. Evidently, those skilled in the art may make numerous modifications and changes to the method for transferring data described above, in order to meet contingent and specific requirements; all such modifications are contained within the scope of protection of the invention as defined by the following claims.

Claims: Method (T1-T27) for transferring data in a computer system (100) comprising a plurality of processors (C1-C5) and a shared memory (115), at least one of the processors (C1-C5) having a cache memory (CM1-CM5) for storing corresponding data of the shared memory (115), a plurality of data channels (D1-D5) to each of which at least one of said processors (C1-C5) is connected, and interconnecting means (125, Cm) for selectively interconnecting the data channels (D1-D5), the method comprising the steps of: a) requesting (T1-T5) the reading of a data element from the shared memory (115) by a requesting processor (C1), b) in the case (T5-T12) in which the requested data element is present in modified form in the cache memory (CM3) of an intervening processor (C3), transferring (T14-T26) the modified data element from the intervening processor (C3) to the interconnecting means (125, Cm) and subsequently (T20-T27) to the requesting processor (C1), characterized by the step of c) granting (T14) to the interconnecting means (125, Cm) access to the data channel (D1) corresponding to the requesting processor (C1) before the modified data element is available (T19) in the interconnecting means (125, Cm). Method (T1-T27) according to Claim 1, in which the computer system (100) includes an address bus (105) to which the processors (C1-C5) are connected, the step (a) comprising the step of (a1) the sending (T4-T5) to the address bus (105) by the requesting processor (C1) of a value (ADD) containing an address of the requested data element and an identifying tag of the requesting processor (C1), and the step (b) comprising the steps of (b1) the monitoring (T5) by each of the said processors (C1-C5) of the content of the address bus (105) to check (T11-T12) whether the requested data element is present in modified form in its cache memory (CM1-CM5), (b2) the transfer (T14-T25) of the modified data element and the identifying tag from the intervening processor (C3) to the intervening data channel (D3), and (b3) the receiving (T18-T25) by the interconnecting means (125, Cm) of the identifying tag from the intervening data channel (D3) for interconnecting (T20-T27) the intervening data channel (D3) and the requesting data channel (D1). Method (T1-T27) according to Claim 2, in which the interconnecting means (125, Cm) include a plurality of input buffers (Bin1-Bin5), each connected to a corresponding data channel (D1-D5), the method (T1-T27) further comprising after the step (b3) the step (b4) of transferring (T19-T26) the modified data element from the intervening data channel (D3) to the corresponding input buffer (Bin3). Method (T1-T27) according to Claim 3, further comprising after the step (b4) the step (b5) of transferring (T20-T27) the modified data element directly from the input buffer (Bin3) corresponding to the intervening data channel (D3) to the requesting data channel (D1). Method (T1-T27) according to any of Claims 1 to 4, in which the step (c) includes the step of granting (T14) to the interconnecting means (125, Cm) access to the requesting data channel (D1) immediately after it has been ascertained (T11) that the requested data element is present in modified form in the cache memory (CM3) of the intervening processor (C3). Method (T1-T27) according to any of Claims 1 to 5, in which the step (c) includes the step of granting (T14) to the interconnecting means (125, Cm) access to the requesting data channel (D1) only when there are no other requests for access to the requesting data channel (D1). Method (T1-T31) according to any of Claims 1 to 6, additionally comprising after the step (c) and before the completion of the step (b) the step of: (d) notifying (T16-T18) to the interconnecting means (125, Cm) the presence of other requests for access to the requesting data channel (D1). Method (T1-T31) according to Claim 7, additionally comprising after the step (d) the steps of: (e) the freeing (T17) by the interconnecting means (125, Cm) of access to the requesting data channel (D1), (f) the requesting (T20-T22) by the interconnecting means (125, Cm) of access to the requesting data channel (D1) when (T19) there are no longer other requests for access to the requesting data channel (C1). Method (T1-T27) according to Claim 3 or 4, in which the interconnecting means (125, Cm) include a plurality of output buffers (BOut1-BOut5), each connected to a corresponding data channel (D1-D5), the method additionally comprising after the step (b4) the step (b5') of transferring (T20-T28) the modified data element from the input buffer (Bin3) corresponding to the intervening data channel (D3) to the output buffer (Bout1) corresponding to the requesting data channel (D1) and subsequently (T24-T31) to the requesting data channel (D1). Computer system (100) comprising a plurality of processors (C1-C5) and a shared memory (115), at least one of the processors (C1-C5) having a cache memory (CM1-CM5) for storing corresponding data of the shared memory (115), a plurality of data channels (D1-D5) to each of which is connected at least one of the said processors (C1-C5), interconnecting means (125, Cm) for selectively interconnecting the data channels (D1-D5), control means (120, Cm) which are suitable, in an intervention situation in which a requesting processor (C1) requests the reading of a data element from the shared memory (115) and the requested data element is present in modified form in the cache memory (CM3) of an intervening processor (C3), for transferring the modified data element from the intervening processor (C3) to the interconnecting means (125, Cm) and subsequently to the requesting processor (C1), characterized in that in the intervention situation the control means (120, Cm) are further suitable for granting (T14) to the interconnecting means (125, Cm) access to the data channel (D1) corresponding to the requesting processor (C1) before the modified data element is available (T19) in the interconnecting means (125, Cm).

Inventors: GRASSI ANTONIO, ZULIAN FERRUCCIO, GRASSI, ANTONIO, ZULIAN, FERRUCCIO
Applicants: BULL SA, BULL S.A.
Application year: 1997
Main classification: G06F13
IPC codes: G06F12, G06F13