Embodiments of the invention are illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings in which like reference numerals refer to similar elements.
Embodiments of the invention are generally directed to systems, methods, and apparatuses for chipset determinism to improve validation (e.g., post-silicon validation). In some embodiments, an integrated circuit (e.g., part of computer system's chipset) receives an asynchronous request from a processor interconnect. The request is passed to an I/O subsystem through an asynchronous interface and a response is subsequently received from the I/O subsystem. As is further described below, in some embodiments, the response is released to the processor interconnect on deterministic time boundaries with respect to a specified deterministic event.
Processor(s) 110 may be any type of processing device. For example, processor 110 may be a microprocessor, a microcontroller, or the like. Further, processor 110 may include any number of processing cores or may include any number of separate processors.
Processor 110 is coupled with integrated circuit 120 via processor interconnect 102. Processor interconnect 102 may be any type of processor interconnect including a parallel bus and/or a high-speed serial interconnect. In some embodiments, processor interconnect 102 is a cache coherent interconnect.
Integrated circuit 120 is an element of chipset 122. In some embodiments, integrated circuit (IC) 120 is part of an IC that has a number of functions such as a coherency engine, a memory controller, a memory controller hub (e.g., a northbridge), and the like. In alternative embodiments, integrated circuit 120 may be integrated with a different component of a chipset.
Integrated circuit 120 is coupled with I/O subsystem 120 via interconnect 104. In some embodiments, interconnect 104 is a high speed point-to-point interconnect. For example, in some embodiments, interconnect 104 is based, at least in part, on direct media interface (DMI) technology. In alternative embodiments, interconnect 104 may be based on a different technology.
Input/output (I/O) subsystem 150 includes I/O controller 152 and non-volatile memory device 154. I/O controller 152 includes circuitry to perform tasks (and monitor operations) related to receiving input and transferring output for computing system 100. Non-volatile memory device 154 may be any type of non-volatile memory device including, for example, a flash memory device. In some embodiments, non-volatile memory device 154 stores the read only memory (ROM) code used to boot system 100 (e.g., the boot-up data).
In some embodiments, integrated circuit 120, interconnect 104, and/or I/O subsystem 150 may introduce non-deterministic behavior to chipset 122. The non-deterministic behavior is, in part, due to the presence of asynchronous clock domains within (and/or between) integrated circuit 120 and/or I/O subsystem 150. In the illustrated example, interconnect 104 operates at a first clock speed determined, at least in part, by clock 146 and the core circuitry of integrated circuit 120 operates at a second clock speed determined, at least in part, by clock 144. The difference in clock speeds creates asynchronous boundary 140.
Integrated circuit 120 includes determinism logic 124 to provide aspects of determinism for chipset 122. Determinism logic 124 includes response queue 132, request queue 134, and timer 136. In alternative embodiments, determinism logic 124 includes more elements, fewer elements, and/or different elements.
In operation, integrated circuit 120 receives a request from processor interconnect 102 as shown by 160. The request may be, for example, a request for boot-up data 158 (e.g., a request for the boot vector). In some embodiments, a first request may be allowed to pass through to I/O subsystem 150. Subsequent requests may be queued in request queue 134 until a response corresponding to a previously passed request is received from I/O subsystem 150.
I/O subsystem 154 processes the request and provides a response (as shown by 162). For example, if the request is for an element of boot-up data 158, then I/O subsystem 150 may provide the requested element. In some embodiments, determinism logic 124 controls the response so that it is synchronously returned to processor interconnect 102. As is further described below, in some embodiments, determinism logic 124 releases at least some of the responses to processor interconnect 102 on deterministic time boundaries with respect to a specified deterministic event.
In some embodiments, the start of a processor reset is linked to the beginning of a refresh sequence for all of memory (e.g., a refresh of main system memory such as memory 430, shown in
In some embodiments, CPU_RESET_DONE 206 is provided at a fixed interval of time after the reset is asserted (e.g., 1 ms) as shown by 208. A cap timer (e.g., timer 136, shown in
The reset done ack is sent to the processor interconnect at the expiration of the timer (plus a fixed length of RTL trickle time) as shown by 214 and the reset is de-asserted. In some embodiments, after the reset is de-asserted the integrated circuit receives one or more requests from the processor interconnect (216). The requests may be, for example, requests from a processor for boot-up data (e.g., boot-up data 158). The requests may be queued in a request queue (e.g., request queue 134, shown in
In some embodiments, the integrated circuit back pressures the processor sending the requests to limit the number of requests stored in the request queue. The term “back pressures” refers to asserting a priority (or other signal) that indicates that the integrated circuit is not accepting additional requests from the processor interconnect. For example, in some embodiments, the integrated circuit may back pressure the processor if the request queue is (or the request queues are) full.
In some embodiments, the periodic expiration of the cap timer is used to bound the release of the responses to the processor interconnect. For example, the first response is released to the processor interconnect at the expiration of the timer as shown by 218. Similarly, the second response is released to the processor interconnect at the next expiration of the timer as shown by 220. The process of bounding the release of the responses to the processor interconnect may be repeated for each response (e.g., as shown, at least in part, by 224-226).
The period of the cap timer may be defined to be long enough that there can be reasonable certainty that a response will be in the response queue and ready to be released to the processor interconnect at the expiration of the period. In some embodiments, the period of the cap timer is greater than or equal to a round-trip time between the integrated circuit and the I/O subsystem. In alternative embodiments, the expiration period of the cap timer may be different.
Referring to process block 304, the request is passed to an I/O subsystem via an asynchronous interface. An “asynchronous interface” refers to an interface that is operating at a different frequency than the core logic of the integrated circuit. An example of an asynchronous interface is interconnect 104, shown in
In some embodiments, the integrated circuit may receive a series of requests. The first request of the series may be passed to an I/O subsystem without being stored in the request queue. The subsequent requests may be stored in the request queue and passed to the I/O subsystem after responses to the prior requests are received.
Referring to process block 306, the integrated circuit receives a response (corresponding to the request) from the I/O subsystem. The response may be stored in a response queue (e.g., response queue 132, shown in
Radio frequency circuit 450 communicates with antenna 460 and I/O controller 440. In some embodiments, RF circuit 450 includes a physical interface (PHY) corresponding to a communication protocol. For example, RF circuit 450 may include modulators, demodulators, mixers, frequency synthesizers, low noise amplifiers, power amplifiers, and the like. In some embodiments, RF circuit 450 may include a heterodyne receiver, and in other embodiments, RF circuit 450 may include a direct conversion receiver. For example, in embodiments with multiple antennas 460, each antenna may be coupled to a corresponding receiver. In operation, RF circuit 450 receives communications signals from antenna 460 and provides analog or digital signals to I/O controller 440. Further, I/O controller 440 may provide signals to RF circuit 450, which operates on the signals and then transmits them to antenna 460.
Processor(s) 410 may be any type of processing device. For example, processor 410 may be a microprocessor, a microcontroller, or the like. Further, processor 410 may include any number of processing cores or may include any number of separate processors.
Memory controller 420 provides a communication path between processor 410 and other elements shown in
Memory 430 may include multiple memory devices. These memory devices may be based on any type of memory technology. For example, memory 430 may be random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), nonvolatile memory such as FLASH memory, or any other type of memory.
Memory 430 may represent a single memory device or a number of memory devices on one or more modules. Memory controller 420 provides data through interconnect 422 to memory 430 and receives data from memory 430 in response to read requests. Commands and/or addresses may be provided to memory 430 through interconnect 422 or through a different interconnect (not shown). Memory controller 430 may receive data to be stored in memory 430 from processor 410 or from another source. Memory controller 430 may provide the data it receives from memory 430 to processor 410 or to another destination. Interconnect 422 may be a bi-directional interconnect or a unidirectional interconnect. Interconnect 422 may include a number of parallel conductors. The signals may be differential or single ended. In some embodiments, interconnect 422 operates using a forwarded, multiphase clock scheme.
Memory controller 420 is also coupled to I/O controller 440 and provides a communications path between processor(s) 410 and I/O controller 440. I/O controller 440 includes circuitry for communicating with I/O circuits such as serial ports, parallel ports, universal serial bus (USB) ports and the like. As shown in
Elements of embodiments of the present invention may also be provided as a machine-readable medium for storing the machine-executable instructions. The machine-readable medium may include, but is not limited to, flash memory, optical disks, compact disks-read only memory (CD-ROM), digital versatile/video disks (DVD) ROM, random access memory (RAM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), magnetic or optical cards, propagation media or other type of machine-readable media suitable for storing electronic instructions. For example, embodiments of the invention may be downloaded as a computer program which may be transferred from a remote computer (e.g., a server) to a requesting computer (e.g., a client) by way of data signals embodied in a carrier wave or other propagation medium via a communication link (e.g., a modem or network connection).
It should be appreciated that reference throughout this specification to “one embodiment” or “an embodiment” means that a particular feature, structure or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Therefore, it is emphasized and should be appreciated that two or more references to “an embodiment” or “one embodiment” or “an alternative embodiment” in various portions of this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures or characteristics may be combined as suitable in one or more embodiments of the invention.
Similarly, it should be appreciated that in the foregoing description of embodiments of the invention, various features are sometimes grouped together in a single embodiment, figure, or description thereof for the purpose of streamlining the disclosure aiding in the understanding of one or more of the various inventive aspects. This method of disclosure, however, is not to be interpreted as reflecting an intention that the claimed subject matter requires more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive aspects lie in less than all features of a single foregoing disclosed embodiment. Thus, the claims following the detailed description are hereby expressly incorporated into this detailed description.