The field of invention pertains generally to the computing sciences, and, more specifically, to a hub circuit for a DIMM having multiple components that communicate with a host.
System memory designers are often looking for new ways to improve the performance and/or functionality of their design. Unfortunately, increased performance/functionality generally comes at the expense of more components/devices that need to be communicated to, and, the more components/devices that need to be communicated to, the slower the throughput of the overall design. As such, creative architectures are needed in order to achieve improved performance and/or functionality without loss of throughput.
A better understanding of the present invention can be obtained from the following detailed description in conjunction with the following drawings, in which:
A second industry standard data bus 108 used to support communications between the host 107 and the other DIMM components 104, 105, 106 is also integrated into each of the memory channels 102, 103. Here, the host may be a processor of a computer that includes multiple general purpose processing cores and a system memory controller (also referred to as a main memory controller). This bus 108 may conform to a Mobile Industry Processor Interface (MIPI) I3C standard. A problem is that higher bandwidths are generally desired for the MIPI I3C bus 108 but the parallelization of multiple DIMMs each having multiple components being plugged into the bus 108 in a multi-drop bus fashion as depicted in
A potential solution, depicted in
In the case of a communication from the host 207 to a particular one of the components on a particular one of the DIMMs, each of the hubs on the DIMMs that are not targeted by the host are placed into a high impedance state, and the hub on the DIMM having the component that is being targeted by the host 207 acts as a gateway that passes the communication from the host 207 to the targeted DIMM's local bus 210.
According to a first variant of this approach, depicted in
A problem with this approach, however, is the time consumed executing two separate commands 321, 322 to effect only a single communication from host 307 to target component 311 combined with the resulting bus confusion that can result even if the components that are coupled to the bus behave in conformance with bus protocol specifications.
For example, between the first START and STOP conditions of the first command 321, 421, a message is sent from the host 307 to the hub 309 informing the hub 309 that it has been selected (and informing the other hubs on the host side bus that they are not selected). Between the START and STOP conditions of the second command 322, 422, the communication between the host 307 and targeted component 311 that necessitated the entire sequence is passed from the host 307 to the component 311 (e.g., a read command, write command, etc.). As can be seen in
Apart from the added overhead inefficiency, the formal MIPI I3C protocol permits components that are coupled to a MPIP I3C bus to interpret the generation of an STOP condition as meaning that overall communication has been successfully completed. As such, after an STOP condition has been placed on the bus, the bus is deemed “free” (e.g., idle, available) which permits other components to initiate communications over the bus.
Unfortunately, in the case of the communication approach of
a and 6b pertain to an improved hub based communication approach in which, rather than impose a second full command 322, 422 over the host side bus, instead, only a single command 521a from the host 507 to the hub 509 is required over the host side bus to complete communication from the host 507 to the targeted component 511.
Here, the hub 509: 1) as referenced by communication 521b in
In the case of the later, as far as the host side part of the bus is concerned, the communication is complete after the first communication 521a from the host to the hub, which, in turn, permits other devices to attempt to use the host side part of the bus immediately after the STOP condition of the first communication 521a. The hub 509 subsequently forwards the contents of the initial command 521a to the targeted component at its leisure and in isolation from the host side part of the bus.
Thus, regardless as to which approach is taken (
According to the first approach 521b (and
More specifically, referring to
Here, the header 701 includes a special code in its leading few (e.g., four) bits 703 (“1100”) that immediately signifies that the communication is being directed to a component on a local bus. Immediately after the special code 703, another three bits 704 identifies the selected hub from amongst the other hubs on the host side bus. Here, with the MIPI I3C specification specifying the header as including 7 bits of address, the first four bits 703 signify the special code and the remaining three bits 704 are used for the identification of the selected hub.
Thus, immediately after the first byte 701 is passed over the host side bus, the selected hub understands that the host has initiated a communication to one of its (the selected hub's) components and the other unselected hubs understand that the present communication on the host side bus is not being directed to them. As such, immediately after the propagation of the first byte 701 on the host side bus, the selected hub can either immediately switch to “short circuit” mode (
Assuming the selected hub decides to immediately switch to short circuit mode, the selected hub will effectively close a switch between its local bus and the host side bus. According to one approach, the closing of the switch should be complete by the beginning of the transmission of the first payload packet 705 which immediately follows the header packet 701. In an embodiment, the switch is closed while the selected hub is acknowledging the communication from the host between the end of the header byte 701 and the beginning of the first payload byte 705. In forming the closed switch, the selected hub couples its host side interface circuitry to its internal open drain (OD) and push-pull (PP) interface circuitry that interfaces to its local bus as a master. In so doing, the payload bytes 702 are directly re-driven onto the local bus. That is, the first byte 701 is not re-transmitted on the local bus. Rather, the first byte 705 of the payload 702 is the first byte to be re-transmitted on the local bus.
Notably, the first byte 705 of the payload 702 is essentially a second header byte that is to be processed by the components that are coupled to the local bus. As seen in
Notably, in the approach of
In the store and forward approach of
During replay, processing continues on the local bus as described above. Notably, no components on the local bus can attempt to utilize the local bus during the replay transmission on the local bus but can so attempt before or after the transmission. As such, notably, one reason why the selected hub may choose to store and forward a message from the host rather than immediately redrive it is that the local hub is busy (e.g., replay transmitting an earlier received store and forward message) when the host sends its message to the selected hub.
In the case of the write operation of
In an embodiment, no additional communication is sent to the host if the communication to the targeted component on the local bus is successful (again, from the host's perspective, the transmission is deemed complete after the first command 521a is sent from the host to the selected hub). In an embodiment, however, if a problem arises in the communication the selected hub will send a subsequent communication to the host to inform the host that the previous command failed. In a further embodiment, the report of the failed communication is sent as an In Band Interrupt (IBI) message on the host side bus from the selected hub to the host.
In the embodiments descried above, special code “1100” is used in the first four bits of the header byte to specify a communication to/from a component that is coupled to the local bus other than a hub device. In further embodiments, the special code “1010” is used to specify communications to/from a hub device. In the case of the later, the initial bits of the first byte of the payload that are nominally used to identify a component on a local bus are not used (N/A).
A first of the paths 1101 does not flow through the storage space 1105 and therefore corresponds to the path of the short-circuit mode of
The control circuitry 1106 may also strip off the first header byte 701 and ensure that only payload 702 is forwarded when communications are flowing through the hub 1100. The control circuitry 1106 may also process the parity bit (T) of any incoming bytes and include protocol circuitry to send and/or receive any acknowledgements on either of the busses 1103, 1104. Note that the term “short circuit” mode and the like refers to at least to a logical short circuit and not necessarily a true electrical short circuit (e.g., the local bus interface circuitry re-drives the information received from the host side bus circuitry).
The control logic circuitry may be implemented with dedicated custom hardwired logic circuitry (e.g., custom state machine logic circuitry), programmable logic circuitry (e.g., field programmable gate array (FPGA), programmable logic array (PLA), programmable logic device (PLD), etc.) or logic circuitry that can execute some form of program code (e.g., an embedded processor, embedded controller, etc.) or any combination thereof. The storage space may be implemented with registers, embedded memory (e.g., embedded DRAM, embedded SRAM) and/or external memory. The overall hub circuitry may be integrated into a serial presence detect (SPD) semiconductor chip that is disposed on a DIMM.
The host side circuitry that acts as a bus master for the overall MIPI bus with hub architecture may be integrated on a processor having multiple general purpose processing cores and a main memory controller. Such host side circuitry may include interface circuitry similar to the interface circuitry of
An applications processor or multi-core processor 1250 may include one or more general purpose processing cores 1215 within its CPU 1201, one or more graphical processing units 1216, a memory management function 1217 (e.g., a memory controller) and an I/O control function 1218. The general purpose processing cores 1215 typically execute the operating system and application software of the computing system which may include micro-service software programs as described above. Even lower levels of software may be executed by the processing cores such as, e.g., a virtual machine monitor.
The graphics processing unit 1216 typically executes graphics intensive functions to, e.g., generate graphics information that is presented on the display 1203. The memory control function 1217 (e.g., a system memory controller) interfaces with the system memory 1202 to write/read data to/from system memory 1202. The interconnect between the system memory controller 1217 and the system memory 1202 may include, e.g., one or more DDR memory channels having DIMMs plugged into them. The memory channels may further include MIPI I3C busses (or compatible versions thereof) having hub architectures as described above at length. The power management control unit 1212 generally controls the power consumption of the system 1200.
Each of the touchscreen display 1203, the communication interfaces 1204-1207, the GPS interface 1208, the sensors 1209, the camera(s) 1210, and the speaker/microphone codec 1213, 1214 all can be viewed as various forms of I/O (input and/or output) relative to the overall computing system including, where appropriate, an integrated peripheral device as well (e.g., the one or more cameras 1210). Depending on implementation, various ones of these I/O components may be integrated on the applications processor/multi-core processor 1250 or may be located off the die or outside the package of the applications processor/multi-core processor 1250.
Embodiments of the invention may include various processes as set forth above. The processes may be embodied in machine-executable instructions. The instructions can be used to cause a general-purpose or special-purpose processor to perform certain processes. Alternatively, these processes may be performed by specific/custom hardware components that contain hardwired logic circuitry or programmable logic circuitry (e.g., FPGA, PLD) for performing the processes, or by any combination of programmed computer components and custom hardware components.
Elements 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, floppy diskettes, optical disks, CD-ROMs, and magneto-optical disks, FLASH memory, ROMs, RAMs, EPROMs, EEPROMs, magnetic or optical cards, propagation media or other type of media/machine-readable medium suitable for storing electronic instructions. For example, the present 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).
In the foregoing specification, the invention has been described with reference to specific exemplary embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention as set forth in the appended claims. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.
Number | Date | Country | Kind |
---|---|---|---|
201841/009,712 | Mar 2018 | IN | national |
This application is a divisional of and claims the benefit of U.S. patent application Ser. No. 15/970,639, entitled, “HUB CIRCUIT FOR A DIMM HAVING MULTIPLE COMPONENTS THAT COMMUNICATE WITH A HOST”, filed May 3, 2018 which further claims, under 35 U.S.C. 119, the benefit of India Provisional Patent Application No. 201841/009,712, filed in the India Patent Office on Mar. 16, 2018, entitled “A HUB CIRCUIT FOR A DIMM HAVING MULTIPLE COMPONENTS THAT COMMUNICATE WITH A HOST” all of which are hereby incorporated by reference in its entirety into this application.
Number | Date | Country | |
---|---|---|---|
Parent | 15970639 | May 2018 | US |
Child | 17222760 | US |