On-chip communications between memory channels and a central processing unit (CPU) may be serviced by a bus having a single port to access address space provided by the memory channels. Transactions, such as read and/or write requests, may target different types of memory, such as cacheable, non-cacheable, device, and strongly-ordered memory types. Protocols governing the function of the bus may specify that transactions having the same identifier and/or targeting the same type of memory are transmitted to a requested memory channel in order, and responses are returned in order. Order can be maintained by keeping track of identifiers for every outstanding transaction on all outgoing ports, enabling transaction requests and/or responses to be reordered based on the tracked information. However, such tracking involves memory resources and associated logic to store and process the tracked information, and can result in processing delays.
A transaction identifier may represent a memory type, such as cacheable, non-cacheable, device, and strongly-ordered memory types. Typically, transactions of a particular memory type are targeted to a particular memory channel; however it is possible for transactions having the same memory type to target different memory channels. As indicated above, it may be desirable to maintain transaction ordering per identifier. For example, in certain settings, it can be important to perform order tracking for all transactions targeting strongly ordered memory in order.
Memory channels often process requests from a central processing unit (CPU) in the order received, however one memory channel may process requests at a different rate than other channels. For some on-chip communication specifications and protocols, transactions between memory channels and CPUs are governed by ordering rules to ensure accurate responses and prevent errors in the system. However, while order may be maintained within each memory channel, order is not guaranteed in implementations with multiple memory channels. Embodiments are disclosed herein for selectively holding transactions to ensure that transaction requests are sent or responses are received in accordance with ordering rules associated with an on-chip communication specification.
Each of the CPUs 108 may generate transaction requests, such as read and/or write memory requests, such as DRAM and Memory-mapped I/O (MMIO). For example, a write request may identify a memory channel (e.g., a particular address/address block within a memory channel) and include data to be written to the memory channel. A response to a write request may include an acknowledgement of the write request and/or a confirmation that the data was written to the memory channel. A read request may identify a location in a memory channel from which data is to be received. Accordingly, a response to a read request may include data stored in the identified location in the memory channel.
The CPUs 108 may communicate with memory channels via an Advanced eXtensible Interface (AXI) bus that includes ordering rules for transactions performed with the interface. For example, AXI ordering may include a rule that outstanding transactions with matching AXI identifiers are sent to a target memory channel in order and responses for such transactions are received in order. The AXI identifiers may represent memory type (e.g., cacheable, non-cacheable, device, and strongly-ordered). Cacheable and non-cacheable memory types typically target DRAM, while device and strongly-ordered memory types typically target MMIO. An AXI demultiplexer (AXD) 118 is provided between the cache 116 and the memory channels and/or memory channel interfaces in order to handle transactions between the CPUs 108 and the memory channels. For each of a read and write configuration, the AXD 118 may branch a single AXI bus into a plurality of AXI buses, each communicatively connected to a different memory channel. Accordingly, read and write operations may be performed independently from one another. Although an AXI bus is described herein, it is to be understood that transactions utilizing any suitable bus may be ordered in a similar manner to satisfy the protocol specified by that type of bus. For example, the ordering described herein may be applied to other types of buses, including but not limited to other advanced microcontroller bus architecture (AMBA) buses and/or interfaces, Open Core Interface (OCI) bus, etc.
AXD 118 may include a read/write transaction decoder 120 for decoding an address of an incoming transaction request from a CPU. Based on the address, a read/write transaction ordering module 122 may determine whether to send or hold the transaction request based on outstanding requests for a memory channel targeted by the request, as described in more detail below with respect to
Responses received from memory channels traverse the same paths as requests, and are received by response module 128 of AXD 118. The response module 128 may update the read/write ordering module 122 on the status of outstanding transactions and send responses back to the appropriate CPU. For example, the response module 128 may inform the read/write ordering module 122 that a transaction response has been received for a particular transaction so that the read/write ordering module 122 may maintain an accurate count of outstanding transactions. Based on the count of outstanding transactions, incoming transaction requests may be passed along to memory channels or temporarily held in order to maintain ordering between transactions on a per-CPU basis. For example, if there are outstanding transactions of a particular memory type (e.g., device or strongly-ordered), incoming transactions for the same memory type are only passed if the incoming transactions target the same memory channel as the outstanding transactions. Accordingly, since each memory channel processes transactions in the order received, the system may ensure that responses for the transactions are received in order. Conversely, if incoming transactions were to be passed to any memory channel, regardless of the target memory channel of outstanding transactions, a response for a later-transmitted transaction may be returned before a response for an earlier-transmitted transaction, thereby disrupting the order of the transactions.
As shown in
At 204, the method 200 includes determining a current target memory channel for the incoming transaction request. The incoming transaction request may include a read request that identifies an address within the current target memory channel. The response to a read request may include the data stored at the identified address of the current target memory channel. Alternatively, the incoming transaction request may include a write request that identifies an address within the current target memory channel and specifies data to be stored in and/or written to the identified address. The response to a write request may include an acknowledgement that the request was received, that the data was successfully stored in the specified location, and/or that an error occurred. Read and write identifiers may be independent of each other and/or different for each CPU. Accordingly, read and write requests may be provided on separate buses, such that the method 200 is performed on each bus independently.
As indicated at 206, the current target memory channel may be determined by decoding an address of the incoming transaction request. For example, the address may be decoded using a predetermined address map matching addresses and/or address ranges to target memory channels. Some addresses and/or address ranges may be fixed to a particular target memory channel, while others may be configurable to be routed to one of a plurality of target memory channels. Table 1 shows an example address map defining the target for ranges of incoming transaction request addresses in accordance with an embodiment of the present disclosure. As described therein, some of the address-map apertures are fixed to MMIO or DRAM, while others are configurable to be routed to MMIO or DRAM. For example, for a system with approximately 2 Gigabytes of DRAM, only “DRAM” aperture will be routed to memory channels, and all others will be routed to MMIO. Additionally, DRAM may include two memory channels, in which case an address-map can be striped (at a configurable granularity, e.g., 1 Kilobyte) between two channels.
Method 200 further includes identifying an outstanding target memory channel of an outstanding transaction at 208. An outstanding transaction may refer to a transaction request that has not been fulfilled and/or a transaction for which a response has yet to be received and/or observed at a processor core. As indicated at 210, the outstanding target memory channel may be identified by a direction bit of a counter. In examples including only two target memory channel options, such as DRAM and MMIO, a single bit may be designated to indicate the target memory channel of an outstanding transaction. However, in examples including more than two target memory channel options, the direction bit may actually comprise a number of bits capable of differentiating between each of the target memory channels. The remaining bits of the counter may be designated to indicate the number of outstanding transactions. Thus, the method 200 further includes identifying the number of outstanding transactions at 212. The number of outstanding transactions may be determined by evaluating the value (e.g., the decimal value) of remaining bits of the counter, as indicated at 214.
Turning briefly to
As shown in
Turning briefly to
Turning back to
Returning to
In the example illustrated in
With reference to counter 314a of the cacheable memory bucket 308a, the least significant bit is set to “1,” while the decimal value of the counter is “1.” Accordingly, using the exemplary counter configuration and assignments described above, the cacheable bucket includes one outstanding transaction that targeted MMIO 312. If a new request having an identifier assigned to or otherwise associated with the cacheable memory bucket 308a is received at the demultiplexer 304, the request is analyzed to determine the current target memory channel of the new request. If the current target memory channel of the new request is the MMIO 312 (for example, the current target memory channel matches the outstanding target memory channel indicated by the direction bit of the counter 314a), the request is passed along to MMIO 312 and the counter incremented, even though the counter indicates the presence of an outstanding transaction.
Conversely, if the current target memory channel of the new request is the DRAM 310 (for example, the current target memory channel does not match the outstanding target memory channel indicated by the direction bit of the counter 314a), the request is held in the cacheable memory bucket 308a until the counter returns to zero or the direction bit is changed to match the current target memory channel of that request. For example, if a response is received for the outstanding transaction, the counter 314a is decremented by 1, causing the counter to indicate 0 outstanding transactions for MMIO 312. Responsive to such an indication, the previously held request may be sent to DRAM 310, causing the direction bit of the counter to change to “0” (the bit value assigned to DRAM 310 in this example). Additionally, the remaining bits of the counter indicating the number of outstanding transactions are incremented (thereby returning to a value of “1”) responsive to sending the previously held request to DRAM 310.
Referring now to the counter 314c associated with the others bucket 308c, if a request having an identifier assigned to or otherwise associated with the others bucket 308c is received at the demultiplexer 304, the request is passed along to the current target memory channel of that request. Since the counter 314c indicates that there are no outstanding transactions for the others bucket 308c, the request may be passed along regardless of the associated current target memory channel or the target memory channel of the last transaction directed to the others bucket 308c and the counter may be incremented.
The selective holding of transactions described above enables the system to ensure that transaction responses are received in accordance with ordering requirements associated with an on-chip communication specification. Each memory channel (e.g., DRAM 310 and MMIO 312) processes requests in the order received, however one memory channel may process requests more quickly than another memory channel. Thus, order may be maintained within each memory channel, while order is not guaranteed between multiple memory channels. Accordingly, multiple transaction requests may be sent to the same target memory channel without waiting for responses while maintaining order. Likewise, transaction requests may be sent to a new target memory channel if there are no outstanding requests for a previous target memory channel.
It will be readily apparent that the transaction ordering examples described herein may be implemented on any type of computing system, such as computing system 10 in
It will be appreciated that methods described herein are provided for illustrative purposes only and are not intended to be limiting. Accordingly, it will be appreciated that in some embodiments the methods described herein may include additional or alternative processes, while in some embodiments, the methods described herein may include some processes that may be reordered, performed in parallel or omitted without departing from the scope of the present disclosure. Further, it will be appreciated that the methods described herein may be performed using any suitable software and hardware in addition to or instead of the specific examples described herein. This disclosure also includes all novel and non-obvious combinations and sub-combinations of the above systems and methods, and any and all equivalents thereof.
| Number | Name | Date | Kind |
|---|---|---|---|
| 4620217 | Songer | Oct 1986 | A |
| 4648045 | Demetrescu | Mar 1987 | A |
| 4700319 | Steiner | Oct 1987 | A |
| 4862392 | Steiner | Aug 1989 | A |
| 4901224 | Ewert | Feb 1990 | A |
| 5185856 | Alcorn et al. | Feb 1993 | A |
| 5268995 | Diefendorff et al. | Dec 1993 | A |
| 5276838 | Rao et al. | Jan 1994 | A |
| 5285323 | Hetherington et al. | Feb 1994 | A |
| 5357604 | San et al. | Oct 1994 | A |
| 5392393 | Deering | Feb 1995 | A |
| 5487022 | Simpson et al. | Jan 1996 | A |
| 5488687 | Rich | Jan 1996 | A |
| 5491496 | Tomiyasu | Feb 1996 | A |
| 5546548 | Chen et al. | Aug 1996 | A |
| 5577213 | Avery et al. | Nov 1996 | A |
| 5579473 | Schlapp et al. | Nov 1996 | A |
| 5579476 | Cheng et al. | Nov 1996 | A |
| 5581721 | Wada et al. | Dec 1996 | A |
| 5600584 | Schlafly | Feb 1997 | A |
| 5604824 | Chui et al. | Feb 1997 | A |
| 5613050 | Hochmuth et al. | Mar 1997 | A |
| 5655132 | Watson | Aug 1997 | A |
| 5701444 | Baldwin | Dec 1997 | A |
| 5761468 | Emberson | Jun 1998 | A |
| 5764228 | Baldwin | Jun 1998 | A |
| 5768548 | Young et al. | Jun 1998 | A |
| 5777628 | Buck-Gengler | Jul 1998 | A |
| 5790817 | Asghar et al. | Aug 1998 | A |
| 5831640 | Wang et al. | Nov 1998 | A |
| 5850572 | Dierke | Dec 1998 | A |
| 5864342 | Kajiya et al. | Jan 1999 | A |
| 5881248 | Mergard | Mar 1999 | A |
| 5923859 | Melo et al. | Jul 1999 | A |
| 5941940 | Prasad et al. | Aug 1999 | A |
| 5995121 | Alcorn et al. | Nov 1999 | A |
| 6018803 | Kardach | Jan 2000 | A |
| 6029228 | Cai et al. | Feb 2000 | A |
| 6085276 | VanDoren et al. | Jul 2000 | A |
| 6101568 | Richardson | Aug 2000 | A |
| 6157980 | Arimilli et al. | Dec 2000 | A |
| 6166743 | Tanaka | Dec 2000 | A |
| 6173366 | Thayer et al. | Jan 2001 | B1 |
| 6182112 | Malek et al. | Jan 2001 | B1 |
| 6222550 | Rosman et al. | Apr 2001 | B1 |
| 6229553 | Duluk, Jr. et al. | May 2001 | B1 |
| 6233656 | Jones et al. | May 2001 | B1 |
| 6259460 | Gossett et al. | Jul 2001 | B1 |
| 6266742 | Challenger et al. | Jul 2001 | B1 |
| 6288730 | Duluk, Jr. et al. | Sep 2001 | B1 |
| 6314472 | Trieu et al. | Nov 2001 | B1 |
| 6333744 | Kirk et al. | Dec 2001 | B1 |
| 6345341 | Arimilli et al. | Feb 2002 | B1 |
| 6351806 | Wyland | Feb 2002 | B1 |
| 6353439 | Lindholm et al. | Mar 2002 | B1 |
| 6397296 | Werner | May 2002 | B1 |
| 6407740 | Chan | Jun 2002 | B1 |
| 6411130 | Gater | Jun 2002 | B1 |
| 6411301 | Parikh et al. | Jun 2002 | B1 |
| 6417851 | Lindholm et al. | Jul 2002 | B1 |
| 6466222 | Kao et al. | Oct 2002 | B1 |
| 6480939 | Anderson et al. | Nov 2002 | B2 |
| 6496537 | Kranawetter et al. | Dec 2002 | B1 |
| 6525737 | Duluk, Jr. et al. | Feb 2003 | B1 |
| 6526430 | Hung et al. | Feb 2003 | B1 |
| 6526518 | Catlin et al. | Feb 2003 | B1 |
| 6542971 | Reed | Apr 2003 | B1 |
| 6557022 | Sih et al. | Apr 2003 | B1 |
| 6571318 | Sander et al. | May 2003 | B1 |
| 6574712 | Kahle et al. | Jun 2003 | B1 |
| 6578102 | Batchelor et al. | Jun 2003 | B1 |
| 6597363 | Duluk, Jr. et al. | Jul 2003 | B1 |
| 6604188 | Coon et al. | Aug 2003 | B1 |
| 6624818 | Mantor et al. | Sep 2003 | B1 |
| 6636221 | Morein | Oct 2003 | B1 |
| 6664958 | Leather et al. | Dec 2003 | B1 |
| 6696854 | Momtaz et al. | Feb 2004 | B2 |
| 6696954 | Chung | Feb 2004 | B2 |
| 6717577 | Cheng et al. | Apr 2004 | B1 |
| 6718542 | Kosche et al. | Apr 2004 | B1 |
| 6731288 | Parsons et al. | May 2004 | B2 |
| 6734861 | Van Dyke et al. | May 2004 | B1 |
| 6738870 | Van Huben et al. | May 2004 | B2 |
| 6778181 | Kilgariff et al. | Aug 2004 | B1 |
| 6782457 | Hill et al. | Aug 2004 | B2 |
| 6806886 | Zatz | Oct 2004 | B1 |
| 6839828 | Gschwind et al. | Jan 2005 | B2 |
| 6910106 | Sechrest et al. | Jun 2005 | B2 |
| 6924808 | Kurihara et al. | Aug 2005 | B2 |
| 6947053 | Malka et al. | Sep 2005 | B2 |
| 6950892 | Bell, Jr. et al. | Sep 2005 | B2 |
| 6961821 | Robinson | Nov 2005 | B2 |
| 6980209 | Donham et al. | Dec 2005 | B1 |
| 6980222 | Marion et al. | Dec 2005 | B2 |
| 6996684 | Tseng et al. | Feb 2006 | B2 |
| 6999100 | Leather et al. | Feb 2006 | B1 |
| 6999426 | Miyoshi | Feb 2006 | B2 |
| 7032046 | Horii et al. | Apr 2006 | B2 |
| 7034828 | Drebin et al. | Apr 2006 | B1 |
| 7096291 | Lin | Aug 2006 | B2 |
| 7139878 | Malik et al. | Nov 2006 | B2 |
| 7158141 | Chung et al. | Jan 2007 | B2 |
| 7177985 | Diefendorff | Feb 2007 | B1 |
| 7187383 | Kent | Mar 2007 | B2 |
| 7225299 | Rozas et al. | May 2007 | B1 |
| 7257814 | Melvin et al. | Aug 2007 | B1 |
| 7263566 | Ganasan et al. | Aug 2007 | B2 |
| 7280112 | Hutchins | Oct 2007 | B1 |
| 7298375 | Hutchins | Nov 2007 | B1 |
| 7376798 | Rozas | May 2008 | B1 |
| 7376846 | Hawkins et al. | May 2008 | B2 |
| 7430654 | Huang et al. | Sep 2008 | B2 |
| 7450120 | Hakura et al. | Nov 2008 | B1 |
| 7477260 | Nordquist | Jan 2009 | B1 |
| 7505461 | Matsuda et al. | Mar 2009 | B2 |
| 7600058 | Danilak | Oct 2009 | B1 |
| 7627730 | Moll | Dec 2009 | B1 |
| 7659909 | Hutchins | Feb 2010 | B1 |
| 7706756 | Sato et al. | Apr 2010 | B2 |
| 7710427 | Hutchins et al. | May 2010 | B1 |
| 7873793 | Rozas et al. | Jan 2011 | B1 |
| 7895385 | Raju | Feb 2011 | B2 |
| 7928990 | Jiao et al. | Apr 2011 | B2 |
| 7941645 | Riach et al. | May 2011 | B1 |
| 7969446 | Hutchins et al. | Jun 2011 | B2 |
| 8055871 | Schulze et al. | Nov 2011 | B1 |
| 8370552 | Mittal et al. | Feb 2013 | B2 |
| 8537168 | Steiner et al. | Sep 2013 | B1 |
| 8656198 | Branover et al. | Feb 2014 | B2 |
| 8773447 | Donham | Jul 2014 | B1 |
| 8860722 | Cabral et al. | Oct 2014 | B2 |
| 9104421 | Ahmad et al. | Aug 2015 | B2 |
| 9411595 | Rozas | Aug 2016 | B2 |
| 20010001873 | Wickeraad et al. | May 2001 | A1 |
| 20010014928 | Chrysos et al. | Aug 2001 | A1 |
| 20020023204 | Barowski et al. | Feb 2002 | A1 |
| 20020056027 | Kanai et al. | May 2002 | A1 |
| 20020105519 | Lindholm et al. | Aug 2002 | A1 |
| 20020126126 | Baldwin | Sep 2002 | A1 |
| 20020129223 | Takayama et al. | Sep 2002 | A1 |
| 20020144054 | Fanning et al. | Oct 2002 | A1 |
| 20020169942 | Sugimoto | Nov 2002 | A1 |
| 20030115233 | Hou et al. | Jun 2003 | A1 |
| 20030126355 | David | Jul 2003 | A1 |
| 20030189565 | Lindholm et al. | Oct 2003 | A1 |
| 20030191880 | Lin | Oct 2003 | A1 |
| 20030229762 | Maiyuran et al. | Dec 2003 | A1 |
| 20040012597 | Zatz et al. | Jan 2004 | A1 |
| 20040012599 | Laws | Jan 2004 | A1 |
| 20040012600 | Deering et al. | Jan 2004 | A1 |
| 20040024260 | Winkler et al. | Feb 2004 | A1 |
| 20040024947 | Barth et al. | Feb 2004 | A1 |
| 20040049641 | So et al. | Mar 2004 | A1 |
| 20040064649 | Volpe et al. | Apr 2004 | A1 |
| 20040083341 | Robinson et al. | Apr 2004 | A1 |
| 20040088458 | Tomlinson et al. | May 2004 | A1 |
| 20040100474 | Demers et al. | May 2004 | A1 |
| 20040114813 | Boliek et al. | Jun 2004 | A1 |
| 20040117606 | Wang et al. | Jun 2004 | A1 |
| 20040119710 | Piazza et al. | Jun 2004 | A1 |
| 20040123043 | Rotithor et al. | Jun 2004 | A1 |
| 20040126035 | Kyo | Jul 2004 | A1 |
| 20040130552 | Duluk, Jr. et al. | Jul 2004 | A1 |
| 20040194084 | Matsunami et al. | Sep 2004 | A1 |
| 20040201647 | Jackson Pulver et al. | Oct 2004 | A1 |
| 20040246260 | Kim et al. | Dec 2004 | A1 |
| 20050081014 | Tran et al. | Apr 2005 | A1 |
| 20050086644 | Chkodrov et al. | Apr 2005 | A1 |
| 20050122330 | Boyd et al. | Jun 2005 | A1 |
| 20050134588 | Aila et al. | Jun 2005 | A1 |
| 20050135433 | Chang et al. | Jun 2005 | A1 |
| 20050138254 | Raghavan et al. | Jun 2005 | A1 |
| 20050162436 | Van Hook et al. | Jul 2005 | A1 |
| 20050216607 | Munguia | Sep 2005 | A1 |
| 20050223195 | Kawaguchi | Oct 2005 | A1 |
| 20050231506 | Simpson et al. | Oct 2005 | A1 |
| 20050237337 | Leather et al. | Oct 2005 | A1 |
| 20050280655 | Hutchins et al. | Dec 2005 | A1 |
| 20060007234 | Hutchins et al. | Jan 2006 | A1 |
| 20060028469 | Engel | Feb 2006 | A1 |
| 20060152519 | Hutchins et al. | Jul 2006 | A1 |
| 20060155964 | Totsuka | Jul 2006 | A1 |
| 20060177122 | Yasue | Aug 2006 | A1 |
| 20060288195 | Ma et al. | Dec 2006 | A1 |
| 20070030278 | Prokopenko et al. | Feb 2007 | A1 |
| 20070165029 | Lee et al. | Jul 2007 | A1 |
| 20070198758 | Asano et al. | Aug 2007 | A1 |
| 20070236495 | Gruber et al. | Oct 2007 | A1 |
| 20070279408 | Zheng et al. | Dec 2007 | A1 |
| 20070285427 | Morein et al. | Dec 2007 | A1 |
| 20070288902 | Lev et al. | Dec 2007 | A1 |
| 20090055566 | Reinig et al. | Feb 2009 | A1 |
| 20090089477 | Reed | Apr 2009 | A1 |
| 20090228631 | Marulkar et al. | Sep 2009 | A1 |
| 20100023707 | Hohmuth et al. | Jan 2010 | A1 |
| 20100057973 | Barake et al. | Mar 2010 | A1 |
| 20100211933 | Kiel et al. | Aug 2010 | A1 |
| 20100250972 | Freitas | Sep 2010 | A1 |
| 20100318741 | Scott et al. | Dec 2010 | A1 |
| 20110320839 | David et al. | Dec 2011 | A1 |
| 20120144126 | Nimmala et al. | Jun 2012 | A1 |
| 20140181404 | Chaudhary et al. | Jun 2014 | A1 |
| 20140237609 | Sharp et al. | Aug 2014 | A1 |
| 20140372990 | Strauss | Dec 2014 | A1 |
| Number | Date | Country |
|---|---|---|
| 1954338 | May 2004 | CN |
| 101091203 | May 2004 | CN |
| 1665165 | May 2004 | EP |
| 1745434 | May 2004 | EP |
| 1771824 | May 2004 | EP |
| 0510979 | Jun 1993 | JP |
| 11053187 | Feb 1999 | JP |
| 2000047872 | Feb 2000 | JP |
| 2002073330 | Mar 2002 | JP |
| 2002171401 | Jun 2002 | JP |
| 2004199222 | Jul 2004 | JP |
| 2006196004 | Jul 2006 | JP |
| 2008161169 | Jul 2008 | JP |
| 006007127 | May 2004 | WO |
| 2005112592 | May 2004 | WO |
| 2005114582 | Dec 2005 | WO |
| 2005114646 | Dec 2005 | WO |
| Entry |
|---|
| “Battery Charging Specification”, “USB Implementers Forum, Inc.”, Dated: Mar. 8, 2007, pp. 1-29, Revision 1.0. |
| “Device Class Specification Adopters Agreement”, Downloaded Circa: Mar. 10, 2007, pp. 1-5. |
| Frittis, “Multi-Level Memory Prefetching for Media and Stream Processing”, Proceedings. 2002 IEEE International conference on Multimedia and Expo, 2002.ICME '02. vol. 2, Aug. 26-29, 2002. |
| Carter et al., “Impulse: Building a Smarter Memory Controller”. Proceedings, Fifth International Symposiun on High Performance Computer Architecture. Jan. 9-13, 1999. |
| “Using Spin-Loops on Intel Pentium 4 Processor and Intel Xeon Processor”, Version 2.1, May 2001. |
| Jouppi, N. P., “Improving Direct-Mapped Cache Performance by the Addition of a Small Fully-Associative Cache and Prefetch Buffers”, Proceedings. 17th Annual International Symposium on Computer Architecture, 1990. May 28-31, 1990. |
| “Interleaved Memory.” Dec. 26, 2002. http://www.webopedia.comiTERM/I/interleaved—memory.html. |
| Pirazzi, Chris. “Fields, F1/F2, Interleave, Field Dominance and More.” Nov. 4, 2001 http://lurkertech.com/Ig/dominance.html. |
| Hennessy, et al., Computer Organization and Design: The Hardware/Software Interface, 1997, Section 6.5. |
| Moller, et al.; Real-Time Rendering, 2nd ed., 2002, A K Peters Ltd., pp. 92-99, 2002. |
| Hollasch; IEEE Standard 754 Floating Point Numbers; http://steve.hollasch.net/cgindex/coding/ieeefloathtml; dated Feb. 24, 2005; retrieved Oct. 21, 2010. |
| Microsoft; (Complete) Tutorial to Understand IEEE Floating-Point Errors; http://support.microsoft.com/kb/42980; dated Aug. 16, 2005; retrieved Oct. 21, 2010. |
| The Free Online Dictionary, Thesaurus and Encyclopedia, definition for cache; http://www.thefreedictionary.com/cache; retrieved Aug. 17, 2012. |
| Wolfe A, et al., “A Superscalar 3D graphics engine”, MICRO-32. Proceedings of the 32nd annual ACM/IEEE International Symposium on Microarchitecture. Haifa, Israel, Nov. 16-18, 1999;. |
| Zaharieva-Stoyanova E I: “Data-flow analysis in superscalar computer architecture execution,” Tellecommunications in Modern Satellite, Cable and Broadcasting Services, 2003. |
| “Sideband,” http://www.encyclopedia.com/html/s1/sideband.asp. |
| Pixar, Inc.; PhotoRealistic RenderMan 3.9 Shading Language Extensions; Sep. 1999. |
| Number | Date | Country | |
|---|---|---|---|
| 20150074315 A1 | Mar 2015 | US |