1. Field of the Invention
The present invention relates to a bus control system between a microprocessor and peripheral LSIs thereof, and more particularly to a bus control system which can transfer a command and data between chips more efficiently using the bus. The present invention also relates to a bus control system which allows a burst transfer of data more efficiently.
2. Description of the Related Art
A microprocessor is connected with peripheral chip sets and is mounted on a board of a computer. For example, a microprocessor is connected to a PCI bus where a peripheral device is connected via a bridge IC, and the microprocessor and the bridge IC are connected via a bus.
In other words, the microprocessor issues a command and data, and sends them to the bridge IC via the bus. From the bridge IC as well, a command and data from the device connected with the bridge IC are sent to the microprocessor via the bus. Commands typically include a read and a write, and an address is added to a read command, and an address and data are added to the write command. Data includes data which was read responding to a read command, and write data which corresponds to a write command.
In another example, a microprocessor is connected to a memory controller IC via a bus, and reads from or writes to a memory or another processing LSI connected to the memory controller. The microprocessor is also read or written by the processing LSI.
When a command is issued from the microprocessor A to the chip B in the configuration shown in
When the microprocessor A continuously issues commands to the chip B, the chip B cannot process the fifth command. Therefore, the chip B must notify the microprocessor A that the chip B cannot accept the fifth command. In prior art, when the chip B is processing four commands internally and cannot receive a new command, the chip B outputs the busy signal BUSY to the microprocessor A to stop the microprocessor A from issuing a new command.
The strobe signal STRB shown in the time chart in
In this prior art, the chip B outputs the busy signal BUSY from the cycle next to the cycle when the command buffer for reception became full. This method is possible in an area where the operating frequency is slow, but if the operating frequency is high, the busy signal BUSY cannot be output at the cycle next to the cycle when the command buffer becomes full. Therefore, the microprocessor A, when issuing the command, must confirm whether the busy signal BUSY was output from the chip B before issuing the next command, so that in the end the microprocessor A can issue the next command only one cycle after issuing a command.
As the time chart in
The above problem occurs not only to a command bus but to a data bus as well. Also, the same problem occurs not only when a command or data is transferred from the microprocessor A to the chip B, but also when a command or data is transferred in the opposite direction.
Also when a command or data is transferred between chips via a two-way bus, a bus arbiter circuit is required to decide which chip has the bus access right. But the above conventional system is inappropriate to employ a two-way bus, and the number of buses are required to be doubles.
With the foregoing in view, it is an object of the present invention to provide a new bus control system with increased bus access efficiency.
It is another object of the present invention to provide a bus control system which allows issuing and transferring a command or data without decreasing the bus access efficiency, even when the operating frequency of the buses is high-speed.
It is still another object of the present invention to provide a bus control system which allows accessing a two-way bus more efficiently.
It is still another object of the present invention to provide a bus control system which allows accessing a bus efficiently in a burst transfer.
To achieve the above objects, an aspect of the present invention is a command or data transfer between two integrated circuit devices (hereafter LSIs) wherein an LSI issuing a command or data (issuing side LSI) outputs a strobe signal, which indicates that a valid command or data was transmitted, to the LSI which receives the command or data (receiving side LSI), and the receiving side LSI outputs a signal, which notifies that the command processing completed (command ready signal), to the issuing side LSI.
The issuing side LSI comprises a counter where a value to indicate the number of commands which the receiving side LSI can simultaneously process or simultaneously receive is loaded at initialization, wherein the counter is decremented when a command or data is issued, the counter is incremented when the ready signal is received, and issuing a command or data is inhibited when the counter becomes “0”. Therefore the issuing side LSI can issue a command or data to the receiving side LSI without confirming a busy signal from the receiving side LSI.
As described above, the command or data issuing side LSI can control the status of the command buffer or data buffer of the receiving side LSI, so a command or data can be efficiently issued even if the bus is operating at high-speed.
Embodiments of the present invention will now be described with reference to the accompanying drawings. These embodiments, however, do not limit the technical scope of the present invention. In the embodiments, bus control between a microprocessor and a bridge LSI are used as an example for description, however the present invention is not limited to such a combination but can be widely applied to bus control between two LSIs. In the following embodiments, an address as well as a command are transferred to the command bus, but an address may be transferred via a data bus or via an independent address bus.
[Command Issuing Control]
As
When a command processing completes, the bridge chip B outputs the command ready signal CMD_READY to the microprocessor A, instead of the busy signal BUSY in prior art. This command ready signal CMD_READY is output to the microprocessor A only for one cycle each time one processing for a command issued by the microprocessor A completes.
The microprocessor A (1) turns the switch 14 ON at initialization, and loads the number of stages of the issuable stages indicating register 13 to the counter 18, (2) turns ON the switch 16 responding to the strobe signal CMD_STRB when a command is issued to the bridge chip B, and decrements the counter value, and (3) turns the switch 15 ON when the command ready signal CMD_READY is received from the bridge chip B, and increments the counter value. The count value of the counter 18 is maintained when the strobe signal is issued and the ready signal is also received, and also when the strobe signal is not issued and the ready signal is not received. These increments and decrements are controlled synchronizing with the clock.
When the counter value becomes “0”, the microprocessor A outputs the command issuing inhibiting signal S19 to the command issuing circuit 20 so as to inhibit issuing a new command. The command issuing inhibiting signal S19 is generated by the issuing inhibiting signal generation circuit 19. When issuing a command is requested, the command issuing circuit 20 outputs an issuing signal S20 for a new command unless the command issuing inhibiting signal S19 is output.
The specific operation will now be described with reference to the time chart in
The bridge chip B outputs the first command ready signal CMD_READY at the cycle 8. Also at the cycle 8, the microprocessor A recognizes that one command buffer of the bridge chip B is open (the counter value becomes “1”) by the command ready signal CMD_READY, and issues the fifth command at the next cycle 9. Therefore at the cycle 9, the counter 18 is incremented by the command ready signal CMD_READY at the cycle 9, and is decremented by the command strobe signal CMD_STRB simultaneously, and the count value remains unchanged.
Also at the cycle 9, the bridge chip B outputs the command ready signal CMD_READY, and the microprocessor A recognizes this and issues the sixth command at the cycle 10. At the cycle 11, the command ready signal CMD_READY for the third command is output, then the counter value is incremented to “1”, since the microprocessor A has no new command to issue.
If the microprocessor A does not issue a command thereafter, the bridge chip B outputs the command ready signal CMD_READY three times, for the fourth to sixth commands, although this operation is not indicated in the time chart. And the microprocessor A increments the counter 18 three times, and returns to the initial status.
As illustrated, the command issuing inhibiting signal S19 is generated at the cycles 6, 7, 8 and 11. In this time chart, at a cycle where the bridge chip B outputs the command ready signal CMD_READY, the microprocessor A checks the signal and judges whether a command can be output at the next cycle. However, when the bus 10 operates at a high-speed frequency, the microprocessor A must recognize the command ready signal CMD_READY, not at the cycle where the bridge chip B outputs the command ready signal, but at the next cycle after the internal flip-flop latches the command ready signal once. In this case as well, although issuing of a command by the microprocessor A is delayed only one cycle, the protocol of the bus has no problems.
Therefore, the commands 1 to 4 are issued at continuous cycles even when the above mentioned bus 10 operates at a high-speed frequency. The command 5 to be issued at the cycle 9, however, is shifted to the cycle 10. Along with this, the command 6 is issued two cycles later. Still the access frequency of the bus 10 is higher than a prior art.
As the detailed block diagram in
The command issuing control circuit 12 supplies a command output indication signal S20 to the command buffer for issuing 24, and issues the command to the command bus 10. At this time, the command issuing circuit 20 outputs the command strobe signal CMD_STRB at the same time. This command output indication signal S20 is generated responding to a new command issuing request unless the command issuing inhibiting signal S19 is output. When a command is issued, a corresponding command in the command buffer 24 is deleted by the clear signal CL.
The bridge chip B at the receiving side comprises a bus control part 22B, a bridge core 30, and a bus interface 32 for the lower bus. The bus control part 22B further comprises a command system control part 23B and a data system control part 25B, and the command system control part 23B further comprises a receive command buffer 26 and a command processing part 28. The receive command buffer 26 latches the command signal in the command bus 10 as a valid command signal when the command strobe signal CMD_STRB is received, and transfers the command to the bridge core 30 responding to the transfer instruction S28 of the command processing part 28. When the processing of the command completes, the command processing part 28 issues the command ready signal CMD_READY to the microprocessor A.
In
In other words, two sets of a command strobe signal line, a command ready signal line and a command bus are required. Since the command signal includes an address, the total number of signal lines becomes excessive if mutual signal lines are disposed from the chip A to the chip B and from the chip B to the chip A.
[Command Bus Control]
The operation will now be described with reference to the timing chart in
When the chip B must continuously issue commands, the chip B outputs the request signal REQUEST for the number of commands, and the chip A also outputs the grant signal GRANT for the same number of times. In the time chart, the chip B outputs the request signal REQUEST at the cycle 6 and the cycle 8, and the chip A outputs the grant signal GRANT at two cycles, the cycle 8 and the cycle 9. In response to this, the chip B outputs the commands B2 and B3 at two cycles, the cycle 10 and the cycle 11.
The bus control part 36 has a counter 38 for counting the number of grant signals. This counter value is “0” at reset. When the command request signal REQUEST from the chip B is received, the bus control part increments the counter 38 by turning the switch 390N unless the grand signal is issued (in
When the counter value req_sum of the counter 38 is not “0” and the command issuing control circuit 12 has not output the issuing request signal S20, the OR/AND gate 42 generates the grant signal n_GRANT and grants the access right to the command bus 10 to the chip B. In this case, the issuing inhibiting signal S36 is supplied to the command issuing control circuit 12 so as to inhibit issuing a command from the chip A thereafter. Even when the counter value of the counter 38 is “0”, if the request signal REQUEST is received and the issuing request signal S20 has not been output, the OR/AND gate 42 generates the grant signal n_GRANT immediately, and generates the issuing inhibiting signal S36 via the circuit 43 comprising a flip-flop and a NOR gate.
As
As mentioned above, the bus arbiter circuit 35 gives the access right to the bus 10 to the chip A with priority, and gives the bus access right to the chip B responding to the request signal from the chip B only when the chip A is not using the command bus 10.
In the above example, the arbiter circuit 35 of the chip A outputs the grant signal GRANT when the chip A is not going to output a command, but the arbiter circuit of chip A may output the grant signal GRANT and give priority to the chip B to access the bus when the request signal REQUEST is detected, even if the chip A is going to output a command. When priority is given to the access from the chip B, if the chip B asserts the request signal REQUEST, the chip A always outputs the grant signal GRANT at the next cycle, so the grant signal GRANT from the chip A can be omitted.
As
In
[Data Issuing Control (Control of Data Buffer)]
The command issuing control and control of the access right to the bi-directional command bus were described above. The same controls can be applied to data. When the issuing side LSI issues data to the receiving side LSI, the issuing side LSI controls data volume that the receiving side LSI simultaneously received and controls the number of data stages, so that the bus access efficiency can be increased even at a high-speed frequency. In the case of the bi-directional command bus, a bus arbiter is required.
This data issuing control circuit 112 is also comprised of a data stages indication register 113 which has information on the number of data stages of the data buffer which the chip B can simultaneously receive, a counter 118 where the number of data stages is set at reset, an issuing inhibiting signal generation circuit 119 which generates the data issuing inhibiting signal S119 when the counter value is “0”, and a data issuing circuit 120 which generates a data issuing signal S120 when the data issuing inhibiting signal S119 has not been output.
A complete reversal of the above mentioned control is executed between the data system control part 25B of the chip B and the data system control part of the chip A.
[Control of Data Bus Access Right]
In other words, in the bus arbiter circuit 135, the counter 138 is incremented when the data request signal DT_REQUEST is issued from the chip B, and if the chip A issues the data grant signal DT_GRANT responding to this when the chip A is not going to issue data, the counter 138 is decremented. And when the counter value is not “0” and when the data issuing request S120 has not been output from the data issuing control circuit 112, the OR/AND gate 142 issues the grant signal GRANT, and supplies the issuing inhibiting signal S136 to the data issuing control circuit 112. In this way, the access right to the data bus is given to the chip B.
The operation of this data bus control is the same as the operation of the command bus control in
The bus arbiter circuit 135 in the chip A is the same as the arbiter circuit shown in
In the example in
[Data Access Type]
In the examples shown in
For example, it is assumed that commands are issued in the sequence of the read command from the chip A to the chip B, and the write command from the chip B to the chip A. In this case, the data transfer direction is from the chip B to the chip A for both commands, but the chip A requires data to be transferred in the sequence of commands, that is, the sequence of the reply data of the read command and the write data of the write command, in order to latch data to be transferred from the chip B correctly. The chip B side, however, may take time to prepare the data for the read command from the chip A, since the chip B must issue a command to another LSI and wait for that reply in some cases. For write data, on the other hand, data is normally ready in the chip B when the chip B issues the write command to the chip A, so it is a waste of time to wait until data for the read command, which was issued first, is prepared.
According to conventional methods, the chip A issues the read commands Read 1 and 2 at the cycles 1 and 5, and the chip B issues the write commands Write 1, 2 and 3 to the chip A at the cycles 3, 7 and 8, as shown in
With the foregoing in view, in the present embodiment, an access type signal TYPE, which indicates whether data DATA being transferred is read reply data or write data, is added as a data bus signal, as shown in
As
[Default Bus Master]
In the examples shown in
For example, when the chip A is a microprocessor, such as a CPU, and the chip B is a bridge LSI, the reply to a read command issued by the microprocessor A must be as quick as possible in order to improve the performance of the entire chipset.
In the above example, the microprocessor A can immediately issue a command to the bridge chip B without overhead, but the bridge chip B cannot transfer the read reply data to the microprocessor A unless the bridge chip B outputs a request to the data bus and receives a grant signal in response. So, for the bridge chip B, overhead occurs when data is transferred.
As
When a read command is issued from the bridge LSI to the CPU, arbitration is required for both command issuing and data transfer, but such an access, which is rare, has almost no influence on performance. In this case, responding to a command request from the command issuing control part 12B of the chip B, the command bus arbiter 35 of the chip A issues a command grant signal when the chip A does not issue a command, and outputs the issuing inhibiting signal S36 to the command issuing control circuit 12. The command issuing control circuit 12B of the chip B, on the other hand, outputs the command issuing signal S20 to the command transmission buffer, which is not illustrated, responding to the command grant signal.
Responding to the data request from the data issuing control part 112 of the chip A, the data bus arbiter 135B of the chip B issues the data grant signal when the chip B does not issue data, and outputs the issuing inhibiting signal S136 to the data issuing control circuit 112B. The data issuing control circuit 112 of the chip A, on the other hand, outputs the data issuing signal S20A to the data transmission buffer, which is not illustrated, responding to the data grant signal.
[Burst Transfer of Data Bus (Bus Access Period Control)]
For data transfer between LSIs, a burst transfer to continuously transfer collective data is required, unlike the case of a command. To implement a burst transfer, control of the bus access period for a plurality of cycles is required, in addition to the control of the bus access right. Also data buffer control at the receiving side, which is mentioned later, is necessary.
In the case of the bi-directional data bus 10D, the bus access right must be controlled by the bus arbiter circuit 135, as mentioned above. The bus arbiter circuit 135 is provided at the chip A side, the chip A side has the bus access right by default, and if the chip B must issue data to the data bus, the chip B issues a data request signal DT_REQUEST as an issuing request, receives the data grant signal DT_GRANT from the bus arbiter 135, then the chip B transfers the data. To perform a burst transfer in this case, the bus access right must be continued for the cycles which have the burst length which is calculated by dividing the transfer data size by the bus width. This becomes the bus access period. In the same way, such bus access period control is also required in the case of a burst transfer from the chip A to the chip B. Arbitration of the bus access right, however, is unnecessary in this case.
The data bus arbiter 135 has a bus access period control circuit 60 in addition to the bus access right control circuit 62, described for the data bus control in
The burst size (or data size/bus width) size B from the chip B is decremented “−1” and loaded to the burst counter 67 via the switch 64 when the pre-signal n_DT_GRANT of the data grant signal is issued. And from the next clock cycle, the counter value is decremented by the switch 66 synchronizing with the clock CLK while the inhibiting signal S68 is being output. When the data transfer for the burst size completes, the burst counter 67 becomes “0” and the inhibiting signal S68 stops.
The burst size size A from the chip A is decremented “−1” and loaded to the burst counter 67 via the switch 65 when the pre-signal n_DT_STRB_A of the data strobe signal is issued. The decrement operation of the counter thereafter is the same as above.
During this burst transfer period, the inhibiting signal S68 is also output to the OR/AND gate 142 of the bus access right control circuit 62 to continue the bus access right. Therefore while the inhibiting signal S68 is generated, the generation of the data grant signal DT_GRANT is inhibited. The issuing inhibiting signal S136 is generated as follows by the issuing inhibition signal generation circuit 143. At first, the size B value from the size buffer 63B is incremented “+1”, and is loaded to the counter 144 at a timing when the pre-signal n_DT_GRANT is valid. The counter 144 is decremented at each cycle until the value becomes “0”. The issuing inhibiting signal S136 is output from the NOR gate 145 at a cycle where the counter value is not “0” and at a cycle where the pre-signal n_DT_GRANT is valid. The rest of bus arbitration is the same as the example in
The data bus 10D outputs data D1 and D2 corresponding to the first command A1 during two cycles from the cycle 4 to the cycle 5. The chip B outputs the data request signal DT_REQUEST at the cycle 4, but the chip A is outputting the data and the inhibiting signal S68 is being generated, so the chip A outputs the data grant signal DT_GRANT at the cycle 6, which is one cycle later. Responding to this, the chip B outputs data d1-d4 during four cycles from the next cycle 7. The inhibiting signal S68 is generated until the cycle where the second data from the last is output. The chip A cannot immediately output data corresponding to the command A2 since the chip B is using the data bus. To the counter 144 of the issuing inhibiting signal generation circuit 143, a value (=5), when 1 is added to the burst length 4 of the data of the chip B, is loaded at the cycle 6 by the pre-signal n_DT_GRANT at the cycle 5. This counter 144 is decremented at each cycle, and becomes “0” at the cycle 11. The issuing inhibiting signal S136 is output during six cycles, from the cycle 5 where the pre-signal n_DT_GRANT is valid, to the cycle 10, which is just before the counter value becomes “0”. The chip A outputs the data D1 corresponding to the command A2 at the cycle 12, which is the next cycle of the cycle 11 where the issuing inhibiting signal is negated.
By outputting the size signal SIZE which indicates that the data size is output simultaneously with a command, as described above, the bus access right can be maintained during a burst transfer, which enables the burst transfer.
[Receive Data Buffer Control During Burst Transfer]
Making a burst transfer possible means that the data volume of a data transfer changes each time. Therefore it is necessary to consider the control of the receive data buffer at the receiving chip side. The simplest method is to set a maximum data size of the data transfer for one command, regardless the burst length, creating a plurality of stages of the receive data buffers having the set size, and controlling the receive data buffer by the number of data stages, as described in
For example, the upper limit of the size of one burst transfer is set to 64 bytes. If the bus width of the data bus is 8 bytes (64 bits), then the maximum burst length is 8 cycles. In this case, the receive data buffer 126 is configured into a plurality of stages (4 stages in
In this case, the receive data buffer can be controlled by the data issuing control circuit 112 shown in
Data transfer from the chip A to the chip B and transfer from the chip B to the chip A can be implemented by the same mechanism.
Now the second receive data buffer control method will be described. In the case of the above mentioned first receive data buffer control method, 64 bytes of the data buffer is used to transfer even 1 byte data, so the use efficiency of the receive data buffer is poor. As a method to improve this, the second control method where the receive data buffer is controlled in byte units according to the data size to be transferred will be described with reference to the block diagram and the operation time chart in
In this case, the receive data buffer is controlled not by the number of stages but by the data volume according to the present embodiment. Since the total of transfer data from the commands A1 to A4 is 32B, 32B is open in the receive data buffer having 64B, as the counter 218 indicates. Therefore the burst transfer of the data D5 corresponding to the command A5 is executed during four burst cycles from the cycle 7. As a result, the counter value reaches “0”, and the data transfer thereafter is inhibited. Then, after the data ready signal DT_READY_B is output at the cycle 9, the counter value recovers to 4B, and the data D1 corresponding to the command A6 is transferred at the cycle 11.
By this second data buffer control method, even a receive data buffer with small capacity can be used effectively. This data issuing control circuit can be provided at the chip B side as well.
Now the third receive data buffer control method will be described. In the case of the above mentioned second receive data buffer control method, if a 4 byte size or a 2 byte size command is issued, the receive data buffer must be controlled with that size, which makes control for storing data to the buffer complicated. In the case of the third receive data buffer control method, the unit to control the receive data buffer is the burst length so as to simplify this control.
According to this third method, data buffer access efficiency is somewhat lower than the second method where the data buffer is controlled by the transfer data volume, but control of the receive data buffer is very simple since data need not be rearranged when the data, which size is smaller than the bus width, is to be transferred.
Now the fourth receive data buffer control method will be described. According to the above mentioned third method, when a data ready signal is received, the counter 218 is incremented for the value of the data transfer size S215 corresponding to the data ready signal. Therefore in this method, the transfer size must be stored.
So according to the fourth receive data buffer control method, the data receiving side (the chip B) does not output the data ready signal only once for one data transfer, but outputs the data ready signals for the burst length times for one data transfer. The counter in the data issuing control circuit increments the burst length +1 responding to the data ready signal. By this, the size at the data transfer need not be stored, which simplifies control.
According to the fourth method, the counter 218 is decremented for the value of the burst length S214 at the data transfer, and the counter 218 is incremented “1” when the data ready signal is received. For example, when a 32 byte transfer is executed, the counter 218 is decremented “4” at the transfer, and since the data ready signal is output four time from the other side, the counter 218 is incremented +1 each time the data ready signal is output.
The four types of receive data buffer control methods were described above, but it is preferable to be able to switch the plurality of types of control methods according to a combination of the two chips of the chipset. For example, a control method is set at the initial setup when power is turned ON and this setup can be switched.
[Separation of Read Reply Data Buffer and Write Data Buffer]
The eighth embodiment is a method for increasing the efficiency of data transfer between the chip A and the chip B when the bridge chip B is connected to an interlock type bus.
A configuration where the chip A and the chip B are connected via a command bus 10C and a data bus 10D and the chip B is also connected to another interlock type bus ILBUS, as
In such a system configuration, if a read command is issued from a device C on the interlock type bus ILBUS to the chip A via the chip B ([1] Read in
For example, if the data buffer for receiving 126 of the chip B has a 64B capacity, and the data size of the write command from the chip A is 64B, then the chip A cannot return the read reply since the data buffer 126 is full. The data buffer 126 of the chip B must be open for the chip A to return the reply data. For this, the chip B must issue the write command, which was issued by the chip A, to the interlock type bus so as to output the write data. The interlock type bus ILBUS, however, received the read command and is now waiting for the reply, so the system enters a dead lock status.
To avoid entering into such a dead lock status, the data buffer for receiving 126 of the chip B is separated into a write data buffer 126W for receiving write data and a read reply data buffer R126 for receiving read replay data, as shown in
In this configuration, the data ready signal from the chip B to the chip A must also be separated into two signals, the data ready signal for write data WDT_READY_B and the data ready signal for read reply data RDT_READY_B, as shown in the block diagram in
When the chip A is connected to an interlock type bus, which is not illustrated, the data ready signal from the chip A to the chip B is also separated into two signals, the data ready signal for write data WDT_READY_A and the data ready signal for read reply data WDT_READY_A, and the above described control is performed.
When the chip B is connected to a bus which is not an interlock type, it is not necessary to separate the data buffer for receiving into two, since the above mentioned dead lock does not occur. It is preferable that the chip A can operate in both cases when the chip A is connected to the chip B which is to be connected to an interlock type bus and to the chip B which is to be connected to a non-interlock type bus, by including control circuits for both cases and switching the control operation depending on which type of chip B is connected.
[Embodiment Where Adding Access ID Makes Data Transfer Sequence Arbitrary]
In the methods described above, data must be transferred according to the sequence in which commands are issued. However, when processing time differs depending on the command, data for a command which was issued later may be ready first. So the ninth embodiment, where the data transfer sequence can be arbitrary, will now be described.
As
The methods described thus far do not have ID signals which clearly indicate the correspondence between the command and the data, so the correspondence was an implicit correspondence by matching the command issuing sequence and the data transfer sequence. Even in the method shown in
By adding ID signals as mentioned above, the correspondence between the command and the data can be maintained even if data for which transfer is ready is output to the data bus regardless the command issuing sequence. Since it is unnecessary to hold the data prepared first, processing efficiency and data bus access efficiency can be improved.
In the time chart shown in
If an LSI corresponding to the bus protocol where the ID numbers are added is connected to an LSI which does not correspond to the bus protocol, operation becomes abnormal since the data correspondence cannot be maintained. So, if an LSI corresponding to the bus protocol where the ID numbers are added can be set such that the LSI can operate even in a mode where the data transfer sequence must be maintained without using ID numbers by setting, then the LSI can be operated connecting with either an LSI corresponding to the bus protocol where the ID numbers are added or to an LSI which does not correspond to the bus protocol. Therefore it is preferable that the appropriate mode be set at initialization when power is turned ON.
When the chip A issues a write command, the command issuing control circuit 12 adds the ID number to the write command and issues the write command from the issuing command buffer 24. This ID number is transferred to the data issuing control circuit 112. And the data issuing control circuit 112 adds this ID number to the write data and issues the write data from the transmission data buffer 124 to the chip B. The chip B refers to this ID number and recognizes the write command to which the write data corresponds.
[Inhibiting Access Immediately After Reset]
According to the methods described thus far, an LSI, the chip A for example, controls the status of the other LSI connected to, the chip B for example, and controls the status by receiving only the ready signals from the other LSI. Therefore when a command or data is output, it is assumed that the other LSI is in a status where the command or the data can be received.
However, if timing when the reset signals to be applied to the chip A and the chip B are negated shifts slightly to the direction where the chip B delays four cycles for example, and if the chip A issues the command to the chip B immediately after reset is cleared, then the chip B is still being reset at that point, so the chip B does not receive the command and does not respond to the command. As a result, an operation error occurs.
To avoid such a status, the chip A and the chip B have a respective counter for each other, so that the counter counts the number of cycles where the negating timing of the reset may shift, and during this time, the output of a command/data to the bus is inhibited. If a command/data is still output from the other chip, the command is accepted even during counting. By this, the timing shift at reset can be absorbed.
The chip A inhibits issuing of a command during the eight cycles ΔTa from the cycle 2 to the cycle 9, and the chip A issues a command A1 to the chip B at the cycle 11, which is two cycles after the inhibition is cleared. The chip B is still in the command issuing inhibition period ΔTb at this time, but can receive a command since reset has been cleared. Therefore the command from the chip A can be received. The chip B ends the command issuing inhibition period ΔTb at the cycle 14, and asserts the request signal REQUEST at the cycle 15.
In this way, issuing of a command is inhibited by the counter of the respective chip during a period longer than the period where the reset clear timing between the two chips may shift. Therefore, at the timing after the command issuing inhibition period of an LSI for which reset was cleared first has passed, it is guaranteed that the reset of the other LSI has been cleared. As a result, a command issued by the LSI for which reset was cleared first can always be received by the other LSI.
[Double Data Rates for Data Bus]
In the above mentioned embodiment, data is latched or data is changed at the rise edge of the clock signal, just like an ordinary logic circuit. If a data transfer is mostly a burst transfer, the access efficiency to the address bus is lower compared with a data bus. To improve the transfer speed of the bus, clock speed must be increased, but if an address bus where the access efficiency is low is also operated under a high-speed clock, power consumption increases.
A possible method therefore is operating only a data bus where the access efficiency is high under a high-speed clock, but if an address bus and a data bus operate under different clocks, other problems, such as skew between clocks, occur. Therefore, so the transfer rate is improved by changing data at both the rise edge and the fall edge of the clock only for the data bus, while using the same clock for both the address bus and the data bus. The address bus is also used as a command bus in the above mentioned embodiment, and the command bus transfers the address. Therefore, the command bus or the address bus has a single rate, where operation synchronizes at the rise edge of the clock, and the data bus has a double rate, where operation synchronizes at both edges of the rise and fall of the clock.
In this way, the processing efficiency can be improved by using a double data rate for the data bus which volume of data to be transferred is large compared with a command bus or address bus.
According to the present invention, the command or the data issuing or transmission side LSI controls the status of the receive buffer of the receiving side LSI using the number of times of strobe signals which were output when the command or the data asserted by the receiving side LSI is issued, and the number of times of ready signals asserted by the receiving side LSI which were output for indicating the processing completed, and a command or data is issued as long as the receive buffer of the receiving side LSI is open, and the issue of a command or data is inhibited when the receive buffer is full. Therefore, even when the operating frequency of the bus reaches high-speed, the issuing or transmission side LSI can continuously issue a command or data at high-speed without receiving a busy signal from the receiving side LSI. As a result, bus access frequency can be improved.
The protective range of the present invention is not limited to the above mentioned embodiments, but covers the invention stated in the claims and the equivalents thereof.
Number | Date | Country | Kind |
---|---|---|---|
2000-11553 | Jan 2000 | JP | national |
This application is a divisional application of U.S. application Ser. No. 09/739,835 filed Dec. 20, 2000, now allowed and incorporated by reference herein.
Number | Date | Country | |
---|---|---|---|
Parent | 09739835 | Dec 2000 | US |
Child | 11136417 | May 2005 | US |