A design structure for piggybacking multiple data tenures on a single data bus grant to achieve higher bus utilization is disclosed. In one embodiment of the design structure, a method in a computer-aided design system includes a source device sending a request for a bus grant to deliver data to a data bus connecting a source device and a destination device. The device receives the bus grant and logic within the device determines whether the bandwidth of the data bus allocated to the bus grant will be filled by the data. If the bandwidth of the data bus allocated to the bus grant will not be filled by the data, the device appends additional data to the first data and delivers the combined data to the data bus during the bus grant for the first data. When the bandwidth of the data bus allocated to the bus grant will be filled by the first data, the device delivers only the first data to the data bus during the bus grant.
|
7. A data processing system comprising:
a processor; and
a memory coupled to the processor and having thereon a design structure for designing, manufacturing or testing an integrated circuit, said design structure comprising logic that is executed by the processor and causes the processor to:
send a first request for a first bus grant to deliver a first data to a data bus connecting a source device and a destination device;
receive the first bus grant to deliver said first data to the data bus in response to said first request;
determine whether a bandwidth of said data bus allocated to the first bus grant will be filled by said first data, wherein said bandwidth is a number of clock cycles allocated to the first bus grant;
responsive to determining that the bandwidth of said data bus allocated to the first bus grant will not be filled by said first data:
append a second data to said first data to provide combined data;
deliver the combined data to said data bus during said first bus grant; and
deliver only said first data to said data bus during said first bus grant when the bandwidth of said data bus allocated to the first bus grant will be filled by said first data;
determine whether said delivering of the combined data to said data bus during said first bus grant will violate a latency constraint of said data bus; and
responsive to determining that said delivering of the combined data to said data bus during said first bus grant will violate a latency constraint of said data, deliver only said first data to said data bus during said first bus grant.
1. A method in a computer-aided design system for generating a functional design structure of an integrated circuit, said method comprising a processor of a computer system executing code that performs the functions of:
sending a first request for a first bus grant to deliver a first data to a data bus connecting a source device and a destination device;
receiving the first bus grant to deliver said first data to the data bus in response to said first request;
determining whether a bandwidth of said data bus allocated to the first bus grant will be filled by said first data, wherein said bandwidth is a number of clock cycles allocated to the first bus grant;
in response to determining that the bandwidth of said data bus allocated to the first bus grant will not be filled by said first data:
appending a second data to said first data to provide combined data;
determining whether said delivering of the combined data to said data bus during said first bus grant will violate a latency constraint of said data bus;
responsive to determining that said delivering of the combined data to said data bus during said first bus grant will violate a latency constraint of said data, delivering only said first data to said data bus during said first bus grant;
responsive to determining that said delivering of the combined data to said data bus during said first bus grant will not violate a latency constraint of said data, delivering the combined data to said data bus during said first bus grant; and
delivering only said first data to said data bus during said first bus grant when the bandwidth of said data bus allocated to the first bus grant will be filled by said first data.
15. A non-transitory machine readable data storage medium having encoded thereon a set of instructions that cause a computer to perform a process aided design system comprising:
a hardware description language (HDL) design structure, said HDL design structure comprising elements that, when processed in the computer-aided design system, generates a machine-executable representation of an integrated circuit, wherein said HDL design structure comprises:
a first element processed to generate a functional computer-simulated representation of logic for sending a first request for a first bus grant to deliver a first data to a data bus connecting a source device and a destination device;
a second element processed to generate a functional computer-simulated representation of logic for receiving the first bus grant to deliver said first data to the data bus in response to said first request;
a third element processed to generate a functional computer-simulated representation of logic for determining whether a bandwidth of said data bus allocated to the first bus grant will be filled by said first data, wherein said bandwidth is a number of clock cycles allocated to the first bus grant;
a fourth element processed to generate a functional computer-simulated representation of logic, responsive to determining that the bandwidth of said data bus allocated to the first bus grant will not be filled by said first data, further comprising:
logic for appending a second data to said first data to provide combined data;
logic for determining whether said delivering of the combined data to said data bus during said first bus grant will violate a latency constraint of said data bus;
logic, responsive to determining that said delivering of the combined data to said data bus during said first bus grant will violate a latency constraint of said data, for delivering only said first data to said data bus during said first bus grant; and
logic, responsive to determining that said delivering of the combined data to said data bus during said first bus grant will not violate a latency constraint of said data, for delivering the combined data to said data bus during said first bus grant; and
a fifth element processed to generate a functional computer-simulated representation of logic for delivering only said first data to said data bus during said first bus grant when the bandwidth of said data bus allocated to the first bus grant will be filled by said first data.
2. The method of
3. The method of
sending a second request for a second bus grant to deliver said second data to the data bus;
determining whether the delivery of said first data for said first bus grant will be complete before said second bus grant can be received;
in response to determining that delivery of said first data for said first bus grant will be complete before said second bus grant can be received:
said appending the second data to said first data to provide combined data is performed; and
said delivering the combined data to said data bus during said first bus grant is performed, without waiting for said second bus grant; and
delivering only said first data to said data bus during said first bus grant when delivery of said first data for said first bus grant will not be complete before said second bus grant can be received.
4. The method of
5. The method of
6. The method of
8. The data processing system of
9. The data processing system of
logic that sends a second request for a second bus grant to deliver said second data to the data bus;
logic that determines whether the delivery of said first data for said first bus grant will be complete before said second bus grant can be received;
logic, responsive to determining that delivery of said first data for said first bus grant will be complete before said second bus grant can be received, for causing:
said logic that appends the second data to said first data to provide combined data; and
said logic that delivers the combined data to said data bus during said first bus grant, delivers the combined data without waiting for said second bus grant; and
logic that delivers only said first data to said data bus during said first bus grant when delivery of said first data for said first bus grant will not be complete before said second bus grant can be received.
10. The data processing system of
11. The data processing system of
12. The data processing system of
13. The data processing system of
14. The data processing system of
16. The non-transitory machine readable data storage medium of
17. The non-transitory machine readable data storage medium of
logic for sending a second request for a second bus grant to deliver said second data to the data bus;
logic for determining whether the delivery of said first data for said first bus grant will be complete before said second bus grant can be received;
logic, responsive to determining that delivery of said first data for said first bus grant will be complete before said second bus grant can be received, that causes:
said logic for appending the second data to said first data to provide combined data; and
said logic for delivering the combined data to said data bus to deliver the combined data during said first bus grant; and
logic for delivering only said first data to said data bus during said first bus grant when delivery of said first data for said first bus grant will not be complete before said second bus grant can be received.
|
The present application is a continuation-in-part of U.S. patent application Ser. No. 11/877,296, filed on Oct. 23, 2007, now U.S. Pat. No. 7,668,996. Applicants hereby claim benefit of priority under 35 U.S.C. 120 to U.S. patent application Ser. No. 11/877,296, now U.S. Pat. No. 7,668,996, which is incorporated by reference herein in its entirety and for all purposes.
1. Field of the Invention
The present invention relates in general to a design structure, and more specifically to a design structure for piggybacking multiple data tenures on a single data bus grant to achieve higher bus utilization.
2. Description of the Related Art
In computer architecture, a bus is a collection of related signal lines that transfer information (e.g. addresses and data) between components of a computer system. Unlike a point-to-point connection, a bus can logically connect several devices over the same set of signal lines. Typically, a computer system will have separate buses for transmitting different types of signals. A control bus carries commands from master devices and returns status signals from slave devices. A data bus is used to read data from and write data to another device on the bus. An address bus is used for communicating the physical addresses of computer memory elements and locations which the requesting device (master) wants to access. Access to a bus is controlled by a bus arbiter executing a bus protocol. A device submits a request to access the bus. When the bus arbiter grants the request, the requesting device may begin receiving data from the bus or writing data to the bus. Some architectures have a single arbiter with which a master arbitrates for the control bus, the address bus and
The normal data flow for a read request is as follows. The master issues a read request which is accepted and queued by a slave. When the slave has some or all of the data ready to return, the slave requests access to the read data bus. When the slave receives the grant for the read data bus, the slave returns the data for that transaction. Alternatively, the slave may return part of the data for that transaction and then request the data bus again to return more (or the rest) of the data for that transaction.
For a bus operating at high frequencies (e.g., 400 MHz and greater), the best turnaround time that can easily be achieved between a data bus request and a data bus grant (without a custom solution) is typically two clock cycles. In other words, if a device asserts a request on clock i, the earliest the device can expect a grant is on clock i+2. This delay occurs because the request and the grant must be “latched” into and out of an arbiter at those frequencies and each latching event takes one clock. Since the grant signal must be latched into the device providing the data, it then follows that the earliest the device can begin driving data on the bus is on clock i+3. This cadence allows efficient use of the data bus, provided that data bus tenures are three or more beats in length. A data bus tenure (“data tenure”) is the signaling with which a device writes data to the data bus in response to a granted bus request. As long as a request is made for the next transaction while there are three or more beats of data remaining to be delivered on the current transaction, a grant can be provided on the last beat of the current transaction, allowing that device to start driving its data on the next clock. There will be no gaps or stalls on the data bus, allowing the bandwidth of the bus to be fully utilized. However, when multiple transactions in a row are returned with data tenures that are only one or two beats, the bandwidth of the data bus will not be fully utilized. There will be gaps in data transmission as the bus is idle awaiting the next grant. This reduces the overall efficiency of the data bus.
To address the issues described above, a design structure for piggybacking multiple data tenures on a single data bus grant to achieve higher bus utilization is disclosed. In one embodiment of the design structure, a method in a computer-aided design system includes a source device sending a request for a bus grant to deliver data to a data bus connecting a source device and a destination device. The device receives the bus grant to deliver the data to the data bus in response to the request. Logic within the device determines whether the bandwidth of the data bus allocated to the bus grant will be filled by the data (bandwidth is the number of clock cycles allocated to the bus grant). If the bandwidth of the data bus allocated to the bus grant will not be filled by the data, the device appends additional data to the first data (“combined data”) and delivers the combined data to the data bus during the bus grant for the first data. When the bandwidth of the data bus allocated to the bus grant will be filled by the first data, the device delivers only the first data to the data bus during the bus grant. The above, as well as additional purposes, features, and advantages of the present invention will become apparent in the following detailed written description.
The novel features believed characteristic of the invention are set forth in the appended claims. The invention itself, however, as well as a preferred mode of use, further purposes and advantages thereof, will best be understood by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, where:
The present invention provides a design structure for an integrated circuit that enables “piggybacking” of multiple data tenures on a single data bus grant to achieve higher bus utilization. In one embodiment, a slave device that has queued up multiple read requests is allowed to deliver the data for two or more separate requests on the same data bus grant. In particular, this is done when the requested data tenures are shorter in duration than the total number of beats required to fill the data bus for successive bus grants so that the bus is not idle awaiting the next grant.
With reference now to the figures, and in particular to
High-speed buses, such as processor local bus 130, typically run at speeds equal to 400 MHz or higher. At clock frequencies 400 MHz or higher, the best turnaround time that can easily be achieved between a data bus request and a data bus grant is two clock cycles. It will take an additional cycle before data can be delivered to the bus. As discussed above, data tenures that are shorter in duration than the total number of beats required to fill the data bus for successive bus grants will cause idles in the data bus while the requesting device waits for the next bus grant. The bandwidth of the data bus will therefore not be fully utilized, as is demonstrated in the following figures.
With reference now to
With reference now to
With reference now to
With reference now to
The decision to piggyback is made when delivering the data. The decision does not have to be made up front (before the request is made) via a command from the master to deliver combined data. The master can issue several requests for data from a slave, and logic within the slave device determines whether data for the requests will be piggybacked on to one bus grant. Piggybacking combines any group of reads or writes for transport purposes only and the destination observes the transactions as separate. The present invention is therefore not limited to combining only transactions with adjacent addresses, but can combine any group of pending reads or writes that are ready for delivery.
With reference now to
According to one embodiment, the number of piggybacked transactions should be limited such that the combined number of clocks to return the piggybacked data does not exceed the maximum number of clocks allowed for the largest single transaction on the data bus. For example, if the largest single read data tenure supported on the bus is 128 bytes (8 clocks), then the total number of clocks for multiple piggybacked tenures cannot exceed 8. Four, two-beat transactions can be piggybacked on a single data bus grant for example. This constraint is needed to maintain acceptable latency on the bus. Without such a constraint, then a slave could lock out all other slaves on the same slave segment for an unspecified period of time.
The data for read request D is returned on a separate grant (624 at clock T15), because returning D on the same grant would violate the latency rule discussed above. In this example, a transaction on a single grant is limited to eight clocks. This transaction began on clock T10 and must end on clock T17. The data for read requests A, B and C last for six beats (two beats each), ending on clock T15. The data for read request D is four beats long and cannot be piggybacked. However, since the data for requests A, B and C are piggybacked in one transaction, slave 430 does not have to issue separate requests to deliver B and C and can issue a request for D as soon as the data for D is queued. Alternatively, slave 430 issues separate read requests to deliver B and C, but either ignores or cancels the requests. In effect, piggybacking extended the transaction prior to the grant of D to six beats in length (instead of two). As a result, the data bus is not idle between the request and grant of D.
There will be no confusion at the destination device (e.g., a master or slave device) as to where the data for one transaction ends and where the data for the next transaction starts because the two data tenures are distinguished by different tags, shown for example as “mtag” in trace 628. These tags identify which transaction the data belongs to (A, B, C or D) and allows data to be delivered out of sequence. The destination device does not need to be aware that this piggybacking has occurred. For practical purposes the interconnect (which must route each data tenure to the correct destination device) would be likely to only support piggybacked data tenures if they are destined for the same destination device, although it is possible for an interconnect to more broadly support piggybacked data tenures to different destination devices. If the interconnect supports piggybacked data destined for multiple destination devices, the source device would have to output an additional “destination tag” that “rides” along with the data so that the interconnect would know how to route the different tenures. Typically the routing information to the destination device is implict at the time the data bus is granted. However, if the route to the destination device is associated with the grant, then all of the data associated with that grant (even multiple tenures) would need to go to the same destination device.
The bus protocol and the bus controller implementation keep no associations between the command tenure and the data tenure of a transaction. Thus the number of data tenures need not match the number of command tenures. To keep no associations between the data and command tenures, the read and write data buses are arbitrated for independently from the command arbitration (i.e., separate arbiters, separate request/grant signals).
With reference now to
Design process 810 may include using a variety of inputs; for example, inputs from library elements 830 which may house a set of commonly used elements, circuits, and devices, including models, layouts, and symbolic representations, for a given manufacturing technology (e.g., different technology nodes, 32 nm, 45 nm, 90 nm, etc.), design specifications 840, characterization data 850, verification data 860, design rules 870, and test data files 885 (which may include test patterns and other testing information). Design process 810 may further include, for example, standard circuit design processes such as timing analysis, verification, design rule checking, place and route operations, etc. One of ordinary skill in the art of integrated circuit design can appreciate the extent of possible electronic design automation tools and applications used in design process 810 without deviating from the scope and spirit of the invention. The design structure of the invention is not limited to any specific design flow.
Design process 810 preferably translates an embodiment of the invention as shown in
While the invention has been described with reference to exemplary embodiments, it will be understood by those skilled in the art that various changes may be made and equivalents may be substituted for elements thereof without departing from the scope of the invention. For example, while the present invention has been described with regard to on-chip buses, it should be understood that at least some aspects of the present invention may be suited for use with any bus in a data processing system and is not limited to only on-chip buses. In addition, many modifications may be made to adapt a particular situation or device to the teachings of the invention without departing from the essential scope thereof. Therefore, it is intended that the invention not be limited to the particular embodiment disclosed as the best mode contemplated for carrying out this invention, but that the invention will include all embodiments falling within the scope of the appended claims. Moreover, the use of the terms first, second, etc. do not denote any order or importance, but rather the terms first, second, etc. are used to distinguish one element from another.
Drerup, Bernard C., Nicholas, Richard
Patent | Priority | Assignee | Title |
10901655, | Sep 27 2018 | Western Digital Technologies, INC | Non-volatile storage system with command response piggybacking |
Patent | Priority | Assignee | Title |
5640518, | Dec 14 1994 | International Business Machines Corporation | Addition of pre-last transfer acknowledge signal to bus interface to eliminate data bus turnaround on consecutive read and write tenures and to allow burst transfers of unknown length |
5951668, | Sep 19 1997 | GOOGLE LLC | Method and system for transferring data between buses having differing ordering policies |
6694417, | Apr 10 2000 | International Business Machines Corporation | Write pipeline and method of data transfer that sequentially accumulate a plurality of data granules for transfer in association with a single address |
7093058, | Mar 28 2003 | International Business Machines Corporation | Single request data transfer regardless of size and alignment |
7395361, | Aug 19 2005 | Qualcomm Incorporated | Apparatus and methods for weighted bus arbitration among a plurality of master devices based on transfer direction and/or consumed bandwidth |
7519054, | Jan 27 2005 | Intel Corporation | Replication of multicast data packets in a multi-stage switching system |
20090106466, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Apr 30 2008 | International Business Machines Corporation | (assignment on the face of the patent) | / | |||
Apr 30 2008 | DRERUP, BERNARD C | International Business Machines Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 020885 | /0647 | |
Apr 30 2008 | NICHOLAS, RICHARD | International Business Machines Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 020885 | /0647 |
Date | Maintenance Fee Events |
Mar 06 2015 | REM: Maintenance Fee Reminder Mailed. |
Jul 26 2015 | EXP: Patent Expired for Failure to Pay Maintenance Fees. |
Date | Maintenance Schedule |
Jul 26 2014 | 4 years fee payment window open |
Jan 26 2015 | 6 months grace period start (w surcharge) |
Jul 26 2015 | patent expiry (for year 4) |
Jul 26 2017 | 2 years to revive unintentionally abandoned end. (for year 4) |
Jul 26 2018 | 8 years fee payment window open |
Jan 26 2019 | 6 months grace period start (w surcharge) |
Jul 26 2019 | patent expiry (for year 8) |
Jul 26 2021 | 2 years to revive unintentionally abandoned end. (for year 8) |
Jul 26 2022 | 12 years fee payment window open |
Jan 26 2023 | 6 months grace period start (w surcharge) |
Jul 26 2023 | patent expiry (for year 12) |
Jul 26 2025 | 2 years to revive unintentionally abandoned end. (for year 12) |