1. Field of the Invention
The present invention relates generally to the data processing field and, more particularly, to a computer implemented method, system and computer usable program code for processing a data request in a data processing system that includes an on-chip bus system that interconnects one or more processors and has separate read and write data busses, and wherein the processors and the bus system have an intervention capability.
2. Description of the Related Art
Exemplary embodiments are directed to data processing systems that include on-chip bus systems that interconnect one or more hardware coherent processors. (The term “processor” as used herein generally refers to a processor and one or more caches that are associated with the processor). Exemplary embodiments are also directed to data processing systems that include on-chip bus systems that have separate read and write data busses, and to processors and busses that have an intervention capability. “Intervention”, as used herein, relates to a mechanism by which a master device, for example, a processor or an input/output (I/O) master device, makes a read request to a slave device, for example, a memory such as a main memory, but the requested data is locally held by a cache (typically a cache associated with a processor); and the cache provides the data instead of the slave device. In such a situation, the cache provides “intervention data” when a snooping process, which occurs among all snoopers (processors) and a bus controller, determines that read data can and should be provided from the cache rather than from a slave device.
In a data processing system, a processor typically sends outgoing data, including castout data (cached data that has been written or modified by the processor and is subsequently being written to memory), to the processor's write data bus. For intervention, however, the outgoing data must eventually reach the read bus of the master requesting the data. In a known system, snoop-pushes (cache line pushes generated in response to snoops) were sent out a processor's write data bus, and a buffer in a bus controller was used to capture the data from the write data bus and send the data to the requesting master's read data bus. The buffer was needed, rather than just using routing logic (mux), because the read and write data busses operate independently. Using a buffer for such a purpose, however, is complex, adds area and power requirements, and increases latency.
There is, accordingly, a need for an improved mechanism for processing a data request in a data processing system that includes an on-chip bus system that interconnects one or more processors and has separate read and write data busses, and wherein the processors and the bus system have an intervention capability.
Exemplary embodiments provide a computer implemented method, system and computer usable program code for processing a data request in a data processing system. A read command requesting data is received from a requesting master device. It is determined whether a cache of a processor can provide the requested data. Responsive to a determination that a cache of a processor can provide the requested data, the requested data is routed to the requesting master device on an intervention data bus of the processor separate from a read data bus and a write data bus of the processor.
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 objectives and advantages thereof, will best be understood by reference to the following detailed description of an exemplary embodiment when read in conjunction with the accompanying drawings, wherein:
With reference now to the figures and in particular with reference to
In the depicted example, server 104 and server 106 connect to network 102 along with storage unit 108. In addition, clients 110, 112, and 114 connect to network 102. Clients 110, 112, and 114 may be, for example, personal computers or network computers. In the depicted example, server 104 provides data, such as boot files, operating system images, and applications to clients 110, 112, and 114. Clients 110, 112, and 114 are clients to server 104 in this example. Network data processing system 100 may include additional servers, clients, and other devices not shown.
In the depicted example, network data processing system 100 is the Internet with network 102 representing a worldwide collection of networks and gateways that use the Transmission Control Protocol/Internet Protocol (TCP/IP) suite of protocols to communicate with one another. At the heart of the Internet is a backbone of high-speed data communication lines between major nodes or host computers, consisting of thousands of commercial, governmental, educational and other computer systems that route data and messages. Of course, network data processing system 100 also may be implemented as a number of different types of networks, such as for example, an intranet, a local area network (LAN), or a wide area network (WAN).
With reference now to
Memory 206, in these examples, may be, for example, a random access memory or any other suitable volatile or non-volatile storage device. Persistent storage 208 may take various forms depending on the particular implementation. For example, persistent storage 208 may contain one or more components or devices. For example, persistent storage 208 may be a hard drive, a flash memory, a rewritable optical disk, a rewritable magnetic tape, or some combination of the above. The media used by persistent storage 208 also may be removable. For example, a removable hard drive may be used for persistent storage 208.
Communications unit 210, in these examples, provides for communications with other data processing systems or devices. In these examples, communications unit 210 is a network interface card. Communications unit 210 may provide communications through the use of either or both physical and wireless communications links.
Input/output unit 212 allows for input and output of data with other devices that may be connected to data processing system 200. For example, input/output unit 212 may provide a connection for user input through a keyboard and mouse. Further, input/output unit 212 may send output to a printer. Display 214 provides a mechanism to display information to a user.
Instructions for the operating system and applications or programs are located on persistent storage 208. These instructions may be loaded into memory 206 for execution by processor unit 204. The processes of the different embodiments may be performed by processor unit 204 using computer implemented instructions, which may be located in a memory, such as memory 206. These instructions are referred to as program code, computer usable program code, or computer readable program code that may be read and executed by a processor in processor unit 204. The program code in the different embodiments may be embodied on different physical or tangible computer readable media, such as memory 206 or persistent storage 208.
Program code 216 is located in a functional form on computer readable media 218 that is selectively removable and may be loaded onto or transferred to data processing system 200 for execution by processor unit 204. Program code 216 and computer readable media 218 form computer program product 220 in these examples. In one example, computer readable media 218 may be in a tangible form, such as, for example, an optical or magnetic disc that is inserted or placed into a drive or other device that is part of persistent storage 208 for transfer onto a storage device, such as a hard drive that is part of persistent storage 208. In a tangible form, computer readable media 218 also may take the form of a persistent storage, such as a hard drive, a thumb drive, or a flash memory that is connected to data processing system 200. The tangible form of computer readable media 218 is also referred to as computer recordable storage media. In some instances, computer recordable media 218 may not be removable.
Alternatively, program code 216 may be transferred to data processing system 200 from computer readable media 218 through a communications link to communications unit 210 and/or through a connection to input/output unit 212. The communications link and/or the connection may be physical or wireless in the illustrative examples. The computer readable media also may take the form of non-tangible media, such as communications links or wireless transmissions containing the program code.
The different components illustrated for data processing system 200 are not meant to provide architectural limitations to the manner in which different embodiments may be implemented. The different exemplary embodiments may be implemented in a data processing system including components in addition to or in place of those illustrated for data processing system 200. Other components shown in
As one example, a storage device in data processing system 200 is any hardware apparatus that may store data. Memory 206, persistent storage 208, and computer readable media 218 are examples of storage devices in a tangible form.
In another example, a bus system may be used to implement communications fabric 202 and may be comprised of one or more buses, such as a system bus or an input/output bus. Of course, the bus system may be implemented using any suitable type of architecture that provides for a transfer of data between different components or devices attached to the bus system. Additionally, a communications unit may include one or more devices used to transmit and receive data, such as a modem or a network adapter. Further, a memory may be, for example, memory 206 or a cache such as found in an interface and memory controller hub that may be present in communications fabric 202.
Exemplary embodiments provide a computer implemented method, system and computer usable program code for processing a data request in a data processing system that includes an on-chip bus system that interconnects one or more processors and has separate read and write data busses, and wherein the processors and the bus system have an intervention capability.
A computer implemented method, system and computer usable program code for processing a data request according to exemplary embodiments may be implemented in a data processing system such as data processing system 200 illustrated in
A data processing system according to an exemplary embodiment has a bus system that includes a bus controller having a slave interface that supports multiple slave devices per slave interface and that supports read data tenures independent of (including without) a command tenure. A “tenure” as used herein is a period of time devoted to transfer of a block of data. For example, if a bus width is 16 bits and a data block is 128 bits; eight periods are needed to transfer all the data, and the eight periods comprises a tenure. Thus, a read data tenure is the period of time devoted to reading a block of data and a command tenure is the period of time devoted to issuing command information.
A bus system according to an exemplary embodiment includes, in addition to a read data bus and a write data bus, a separate data bus, referred to herein as an “intervention data bus” for each processor in a data processing system. Whenever a processor provides intervention data, the data will go out on the processor's intervention data bus instead of on the processor's write bus. According to one exemplary embodiment, the processor determines whether it will send intervention data during a snooping process that occurs for each snoopable request. In particular, during a snooping process, the snoopable request is broadcast to all processors (or to directories that track the location of cached lines) in the data processing system. The processors check to see if they have a copy of the requested data in their respective caches. If a processor has the requested data, and the request is a read request, then the processor may directly determine to provide the intervention data. The determination may be made based on buffer and routing resource availability within the processor. Intervention is typically lower in priority than processor core requests, and, accordingly, may not occur if there are conflicts for those resources.
According to an alternative exemplary embodiment, the processors tell the bus controller whether they are able to provide intervention data. The bus controller then makes the decision of which, if any, processor shall provide the intervention data, and informs the processors of the decision.
In the exemplary embodiment illustrated in
Master devices 306a-306m comprise devices that request the transfer of data, for example, processors or input/output (I/O) master devices; and slave devices 308 and 310 comprise groups of slave devices that respond to requests for data transfer such as a main memory or a cache or a portion of a cache that functions as a slave memory. It should also be understood that data processing system 300 may also include any number of master and slave devices.
Bus system 312 includes bus controller 314, and a plurality of busses that connect the processors and the master and slave devices to bus controller 314. According to an exemplary embodiment, bus system 312 includes separate read and write data busses 326 and 328, respectively, connected to each processor 302 and 304. In addition, each processor includes a separate intervention data bus 330. As will be described more fully hereinafter, whenever a processor provides intervention data, the data will go out on the processor's intervention data bus 330 instead of on the processor's write data bus 328.
Processors 302 and 304 also each include a master command bus 324, and share a snoop command bus 322. These busses are used to transfer command information including, for example, address information and request length or whether a request is a read or a write request and the like, as opposed to transferring data.
As also shown in
In the exemplary embodiment illustrated in
As also shown in
The slave read data interface also includes a small number of signals that are not ORed, but that are unique between the bus controller and each separate slave device 308a, 308b or 310a, 310b. These signals are not illustrated in
The bus protocol, and thus, the bus controller and slave devices illustrated in
The read data bus protocol is defined to allow multiple slave devices to provide read data to the bus controller. This can be done without any corresponding command tenure by having a set of arbiters, generally designated by reference number 470, within the bus controller, one arbiter for each master device (read data destination), which selects among all possible read sources. The arbiter selects (grants) the read data bus to a device for a single data tenure, which may be one or more data beats (periods). To do this, the bus controller has unique read_data_request 462, read_data_grant 466 and read_data_master_ID 464 signals per separate slave device 408a and 408b, but combined (ORed) read_data_tenure signals 454 from all of the separate slave devices. There may be more than one set of combined signals if the bus has multiple crossbar ways such as the two shown in
The read_data_tenure signals 468a, 468b from each slave device 408a, 408b are each actually a collection of many signals including the read_data_bus signals (which may be 128-byte wide), read_data_ack signals, read_data-parity signals and more. These combined signals are ORed together, to provide combined read_data_tenure signal 454. The slave devices drive zeroes on the combined signal bus when the bus is not granted to them.
As indicated above, intervention data busses 330 of processors 302 and 304 illustrated in
Intervention data busses 330 can be tied into any slave read data bus when the bus controller supports multiple slave interfaces as crossbar “ways”, not just to slave group 308 as shown in
Intervention data bus 330 can also be used as a slave-read data bus when the processor's cache, typically the processor's L2 cache, is capable of being used as a slave memory. For example, when a slave memory is using a portion of L2 RAM as a separate memory space, rather than as a cache of main memory, and this separate memory space can be read and written by the processor and by bus masters. Support for a slave memory will also require the addition of an address/command bus and a slave-write data bus from the bus controller to the cache.
A determination is also made whether a cache associated with a processor can provide the data requested in each read command (Step 508). Responsive to a determination that a cache associated with a processor can provide the data requested in a read command (Yes output of Step 508), the requested data is provided from a cache on an intervention data bus of the processor (Step 510), and a read data arbiter selects one request to be read at a time (Step 512).
Returning to Step 508, responsive to a determination that a cache cannot provide the data requested in a read command (No output of Step 508), the requested data is provided from memory (a slave device) on the read data bus of the processor (Step 514), and the read data arbiter selects one request to be read at a time (Step 512).
For data to be furnished from a cache (intervention data), the processor drives the data on an intervention data bus (Step 516), the data is routed to the requesting master (Step 518), the requesting master receives the data (Step 520), and the method ends. When intervention data is furnished, slave devices that are not selected to furnish the data drive nothing, i.e., zeroes (Step 520) which are also routed to and received by the master as shown in
Exemplary embodiments thus provide a computer implemented method, system and computer usable program code for processing a data request in a data processing system. A read command requesting data is received from a requesting master device. It is determined whether a cache of a processor can provide the requested data. Responsive to a determination that a cache of a processor can provide the requested data, the requested data is routed to the requesting master device on an intervention data bus of the processor separate from a read data bus and a write data bus of the processor.
The invention can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements. In a preferred embodiment, the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc.
Furthermore, the invention can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer readable medium can be any tangible apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
The computer readable storage medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device. Examples of a computer-readable storage medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk—read only memory (CD-ROM), compact disk—read/write (CD-R/W) and DVD.
Further, a computer storage medium may contain or store a computer readable program code such that when the computer readable program code is executed on a computer, the execution of this computer readable program code causes the computer to transmit another computer readable program code over a communications link. This communications link may use a medium that is, for example without limitation, physical or wireless.
A data processing system suitable for storing and/or executing program code will include at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution.
Input/output or I/O devices (including but not limited to keyboards, displays, pointing devices, etc.) can be coupled to the system either directly or through intervening I/O controllers.
Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modem and Ethernet cards are just a few of the currently available types of network adapters.
The description of the present invention has been presented for purposes of illustration and description, and is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art. The embodiment was chosen and described in order to best explain the principles of the invention, the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.
Number | Name | Date | Kind |
---|---|---|---|
5895484 | Arimilli et al. | Apr 1999 | A |
6016526 | Arimilli et al. | Jan 2000 | A |
6055608 | Arimilli et al. | Apr 2000 | A |
6112016 | MacWilliams et al. | Aug 2000 | A |
20020013886 | Higuchi et al. | Jan 2002 | A1 |
20020069333 | Ghosh et al. | Jun 2002 | A1 |
20030005238 | Pawlowski | Jan 2003 | A1 |
20040024987 | Lentz et al. | Feb 2004 | A1 |
20040059875 | Garg et al. | Mar 2004 | A1 |
20040230751 | Blake et al. | Nov 2004 | A1 |
20050262368 | Cherukuri et al. | Nov 2005 | A1 |
20060184743 | Guthrie et al. | Aug 2006 | A1 |
Number | Date | Country | |
---|---|---|---|
20090177821 A1 | Jul 2009 | US |