The number of Central Processing Units (CPUs) per server socket and the memory bandwidth per CPU have both been increasing over time. This has required an increased number of memory channels per server socket. Each one of the memory channels connects to one of more external memory DRAM DIMMs (Dynamic Random Access Memory Dual Inline Memory Modules). Routing all the memory channel signals from the chip input and outputs (“IO”) to the external memory s has become increasingly complicated with the increase in the number of memory channels. This has resulted in an increase in the number of required signal layers on both the socket package and the system board and a corresponding increase in cost of these components. The more complicated routing also makes it more difficult match the routing of the signals and hence reduces the timing margin on the routed signals.
The foregoing aspects and many of the attendant advantages of this invention will become more readily appreciated as the same becomes better understood by reference to the following detailed description, when taken in conjunction with the accompanying drawings, wherein like reference numerals refer to like parts throughout the various views unless otherwise specified:
Embodiments of methods and apparatus for Cross DRAM DIMM sub-channel pairing are described herein. In the following description, numerous specific details are set forth to provide a thorough understanding of embodiments of the invention. One skilled in the relevant art will recognize, however, that the invention can be practiced without one or more of the specific details, or with other methods, components, materials, etc. In other instances, well-known structures, materials, or operations are not shown or described in detail to avoid obscuring aspects of the invention.
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. Thus, the appearances of the phrases “in one embodiment” or “in an embodiment” in various places throughout this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures, or characteristics may be combined in any suitable manner in one or more embodiments.
For clarity, individual components in the Figures herein may also be referred to by their labels in the Figures, rather than by a particular reference number. Additionally, reference numbers referring to a particular type of component (as opposed to a particular component) may be shown with a reference number followed by “(typ)” meaning “typical.” It will be understood that the configuration of these components will be typical of similar components that may exist but are not shown in the drawing Figures for simplicity and clarity or otherwise similar components that are not labeled with separate reference numbers. Conversely, “(typ)” is not to be construed as meaning the component, element, etc. is typically used for its disclosed function, implement, purpose, etc.
In the current art, System on a Chip (SOC) DRAM controllers and their associated Input-Output (IO) are stepped in the “y” dimension on the SOC dies. DIMMs are spaced horizontally, and each DIMM is connected to a specific DRAM channel controller. This requires a complicated swizzle of the signals leaving the controller IOs to line up with what is required by the DIMM.
In accordance with aspects of embodiments disclosed herein, each memory channel on a memory controller or System on a Chip with integrated memory controller(s) is segmented into two subchannels. In some embodiments the two subchannels are independent of each other except for sharing a command-bus clock. Some embodiments use an approach which uses one subchannel for two different memory channels instead of two subchannels from the same memory channel to supply the two subchannels per DIMM. This disclosure teaches two solutions to the shared command-bus clock on current DIMMs. One solution is to place an additional command-bus clock on the DIMM connector by repurposing existing MCR pins to provide a second command-bus clock to a second Registered Clock Driver (RCD) on the DIMM to allow the subchannels to be fully independent. Another solution is the pair every other DRAM controller IO to the same command-bus clock. Other solutions employ “skip” configurations under which a given IO interface uses a command-bus clock located proximate to a different IO interface. In some embodiments, other control pins, such as reset, will be treated as common between the two DIMMs and these signals will be routed on silicon to both controllers using the two DIMMs.
To better understand aspects of the teachings and principles of the embodiments disclosed herein, a brief primer on the operation of DRAM is provided with reference an exemplary memory subsystem illustrated in
As further shown in
As described herein, reference to memory devices (e.g., DRAM devices) can apply to different volatile memory types. Volatile memory is memory whose state (and therefore the data stored on it) is indeterminate if power is interrupted to the device. Dynamic volatile memory requires refreshing the data stored in the device to maintain state. One example of dynamic volatile memory includes DRAM, or some variant such as synchronous DRAM (SDRAM). A memory subsystem as described herein may be compatible with a number of memory technologies or standards, such as DDR3 (double data rate version 3, JESD79-3, originally published by JEDEC (Joint Electronic Device Engineering Council) on Jun. 27, 2007), DDR4 (DDR version 4, JESD79-4, originally published in September 2012 by JEDEC), LPDDR3 (low power DDR version 3, JESD209-3B, originally published in August 2013 by JEDEC), LPDDR4 (low power DDR version 4, JESD209-4, originally published by JEDEC in August 2014), WIO2 (Wide IO 2 (WideIO2), JESD229-2, originally published by JEDEC in August 2014), HBM (high bandwidth memory DRAM, JESD235, originally published by JEDEC in October 2013), LPDDR5 (originally published by JEDEC in February 2019, current version published in June 2021), HBM2 ((HBM version 2), originally published by JEDEC in December 2018), DDR5 (DDR version 5, originally published by JEDEC in July 2020), or others or combinations of memory technologies, and technologies based on derivatives or extensions of such specifications. In addition to the foregoing, the specification for LPDDR6 is currently being developed.
Under conventional (S)DRAM memory, data are generally accessed (Read and Written) using cachelines (also called cache lines) comprising a sequence of memory cells (bits) in a wordline. The cachelines for a given memory architecture generally have a predetermined width or size, such as 64 Bytes, noting other widths/sizes maybe used.
Reference to memory devices may apply to different memory types. Memory devices often refers to volatile memory technologies such as DRAM. In addition to, or alternatively to, volatile memory, in some examples, reference to memory devices can refer to a nonvolatile memory device whose state is determinate even if power is interrupted to the device. In one example, the nonvolatile memory device is a block addressable memory device, such as NAND or NOR technologies. A memory device may also include byte or block addressable types of non-volatile memory having a 3-dimensional (3-D) cross-point memory structure that includes, but is not limited to, chalcogenide phase change material (e.g., chalcogenide glass) hereinafter referred to as “3-D cross-point memory”. Non-volatile types of memory may also include other types of byte or block addressable non-volatile memory such as, but not limited to, multi-threshold level NAND flash memory, NOR flash memory, single or multi-level phase change memory (PCM), resistive memory, nanowire memory, ferroelectric transistor random access memory (FeTRAM), anti-ferroelectric memory, resistive memory including a metal oxide base, an oxygen vacancy base and a conductive bridge random access memory (CB-RAM), a spintronic magnetic junction memory, a magnetic tunneling junction (MTJ) memory, a domain wall (DW) and spin orbit transfer (SOT) memory, a thyristor based memory, a magnetoresistive random access memory (MRAM) that incorporates memristor technology, spin transfer torque MRAM (STT-MRAM), or a combination of any of the above.
Descriptions herein referring to a “RAM” or “RAM device” can apply to any memory device that allows random access, whether volatile or nonvolatile. Descriptions referring to a “DRAM”, “SDRAM, “DRAM device” or “SDRAM device” may refer to a volatile random access memory device. The memory device, SDRAM or DRAM may refer to the die itself, to a packaged memory product that includes one or more dies, or both. In some examples, a system with volatile memory that needs to be refreshed may also include at least some nonvolatile memory.
Memory controller 220, as shown in
According to some examples, settings for each channel are controlled by separate mode registers or other register settings. For these examples, memory controller 220 may manage a separate memory channel, although system 200 may be configured to have multiple channels managed by a single memory controller, or to have multiple memory controllers on a single channel. In one example, memory controller 220 is part of processor 210, such as logic and/or features of memory controller 220 are implemented on the same die or implemented in the same package space as processor 210, sometimes referred to as an integrated memory controller.
Memory controller 220 includes Input/Output (IO) interface circuitry 222 to couple to a memory bus, which is replicated for two memory channels 0 and 1. IO interface circuitry 222 (as well as IO interface circuitry 242 of memory device(s) 240) may include pins, pads, connectors, signal lines, traces, or wires, or other hardware to connect the devices, or a combination of these. IO interface circuitry 222 may include a hardware interface. As shown in
In some examples, memory controller 220 may be coupled with memory device(s) 240 via multiple signal lines. The multiple signal lines may include at least a clock (CLK) 232, command/address (C/A) 234, and write data (DQ) and read data (DQ) 236, and zero or more other signal lines 238. According to some examples, a composition of signal lines coupling memory controller 220 to memory device(s) 240 may be referred to collectively as a memory bus. The signal lines for C/A 234 may be referred to as a “command bus”, a “C/A bus” or a CMD/ADD bus, or some other designation indicating the transfer of commands and/or address data. The signal lines for DQ 236 may be referred to as a “data bus”.
According to some examples, independent channels may have different clock signals, command buses, data buses, and other signal lines. For these examples, system 200 may be considered to have multiple “buses,” in the sense that an independent interface path may be considered a separate bus. It will be understood that in addition to the signal lines shown in
In some examples, the bus between memory controller 220 and memory device(s) 240 includes a subsidiary command bus routed via signal lines included in C/A 234 and a subsidiary data bus to carry the write and read data routed via signal lines included in DQ 236. In some examples, C/A 234 and DQ 236 may separately include bidirectional lines. In other examples, DQ 236 may include unidirectional write signal lines to write data from the host to memory and unidirectional lines to read data from the memory to the host.
According to some examples, in accordance with a chosen memory technology and system design, signals lines included in other 238 may augment a memory bus or subsidiary bus. For example, strobe line signal lines for a DQS. Based on a design of system 200, or memory technology implementation, a memory bus may have more or less bandwidth per memory device included in memory device(s) 240. The memory bus may support memory devices included in memory device(s) 240 that have either a x32 interface, a x16 interface, a x8 interface, or other interface. The convention “xW,” where W is an integer that refers to an interface size or width of the interface of memory device(s) 240, which represents a number of signal lines to exchange data with memory controller 220. The interface size of these memory devices may be a controlling factor on how many memory devices may be used concurrently per channel in system 200 or coupled in parallel to the same signal lines. In some examples, high bandwidth memory devices, wide interface memory devices, or stacked memory devices, or combinations, may enable wider interfaces, such as a x128 interface, a x256 interface, a x512 interface, a x1024 interface, or other data bus interface width.
According to some examples, memory device(s) 240 represent memory resources for system 200. For these examples, each memory device included in memory device(s) 240 is a separate memory die. Separate memory devices may interface with multiple (e.g., 2) channels per device or die. A given memory device of memory device(s) 240 may include IO interface circuitry 242 and may have a bandwidth determined by an interface width associated with an implementation or configuration of the given memory device (e.g., x16 or x8 or some other interface bandwidth). IO interface circuitry 242 may enable the memory devices to interface with memory controller 220. IO interface circuitry 242 may include a hardware interface and operate in coordination with IO interface circuitry 222 of memory controller 220.
In some examples, multiple memory device(s) 240 may be connected in parallel to the same command and data buses (e.g., via C/A 234 and DQ 236). In other examples, multiple memory device(s) 240 may be connected in parallel to the same command bus but connected to different data buses. For example, system 200 may be configured with multiple memory device(s) 240 coupled in parallel, with each memory device responding to a command, and accessing memory resources 260 internal to each memory device. For a write operation, an individual memory device of memory device(s) 240 may write a portion of the overall data word, and for a read operation, the individual memory device may fetch a portion of the overall data word. As non-limiting examples, a specific memory device may provide or receive, respectively, 8 bits of a 128-bit data word for a read or write operation, or 8 bits or 16 bits (depending for a x8 or a x16 device) of a 256-bit data word. The remaining bits of the word may be provided or received by other memory devices in parallel.
According to some examples, memory device(s) 240 may be disposed directly on a motherboard or host system platform (e.g., a PCB (printed circuit board) on which processor 210 is disposed) of a computing device. Memory device(s) 240 may be organized into memory module(s) 270. In some examples, memory module(s) 270 may represent dual inline memory modules (DIMMs). In some examples, memory module(s) 270 may represent other organizations or configurations of multiple memory devices that share at least a portion of access or control circuitry, which can be a separate circuit, a separate device, or a separate board from the host system platform. In some examples, memory module(s) 270 may include multiple memory device(s) 240, and memory module(s) 270 may include support for multiple separate channels to the included memory device(s) 240 disposed on them.
In some examples, memory device(s) 240 may be incorporated into a same package as memory controller 220. For example, incorporated in a multi-chip-module (MCM), a package-on-package with through-silicon via (TSV), or other techniques or combinations. Similarly, in some examples, memory device(s) 240 may be incorporated into memory module(s) 270, which themselves may be incorporated into the same package as memory controller 220. It will be appreciated that for these and other examples, memory controller 220 may be part of or integrated with processor 210.
As shown in
According to some examples, as shown in
In some examples, writing to or programming one or more registers of register(s) 244 may configure memory device(s) 240 to operate in different “modes”. For these examples, command information written to or programmed to the one or more register may trigger different modes within memory device(s) 240. Additionally, or in the alternative, different modes can also trigger different operations from address information or other signal lines depending on the triggered mode. Programmed settings of register(s) 244 may indicate or trigger configuration of IO settings. For example, configuration of timing, termination, on-die termination (ODT), driver configuration, or other IO settings.
According to some examples, memory device(s) 240 includes ODT 246 as part of the interface hardware associated with IO interface circuitry 242. ODT 246 may provide settings for impedance to be applied to the interface to specified signal lines. For example, ODT 246 may be configured to apply impedance to signal lines include in DQ 236 or C/A 234. The ODT settings for ODT 246 may be changed based on whether a memory device of memory device(s) 240 is a selected target of an access operation or a non-target memory device. ODT settings for ODT 246 may affect timing and reflections of signaling on terminated signal lines included in, for example, C/A 234 or DQ 236. Control over ODT setting for ODT 246 can enable higher-speed operation with improved matching of applied impedance and loading. Impedance and loading may be applied to specific signal lines of IO interface circuitry 242, 222 (e.g., C/A 234 and DQ 236) and is not necessarily applied to all signal lines.
In some examples, as shown in
Referring again to memory controller 220, memory controller 220 includes CMD logic 224, which represents logic and/or features to generate commands to send to memory device(s) 240. The generation of the commands can refer to the command prior to scheduling, or the preparation of queued commands ready to be sent. Generally, the signaling in memory subsystems includes address information within or accompanying the command to indicate or select one or more memory locations where memory device(s) 240 should execute the command. In response to scheduling of transactions for memory device(s) 240, memory controller 220 can issue commands via IO interface circuitry 222 to cause memory device(s) 240 to execute the commands. In some examples, controller 250 of memory device(s) 240 receives and decodes command and address information received via IO interface circuitry 242 from memory controller 220. Based on the received command and address information, controller 250 may control the timing of operations of the logic, features and/or circuitry within memory device(s) 240 to execute the commands. Controller 250 may be arranged to operate in compliance with standards or specifications such as timing and signaling requirements for memory device(s) 240. Memory controller 220 may implement compliance with standards or specifications by access scheduling and control.
In some examples, memory controller 220 includes refresh (REF) logic 226. REF logic 226 may be used for memory resources that are volatile and need to be refreshed to retain a deterministic state. REF logic 226, for example, may indicate a location for refresh, and a type of refresh to perform. REF logic 226 may trigger self-refresh within memory device(s) 240 or execute external refreshes which can be referred to as auto refresh commands by sending refresh commands, or a combination. According to some examples, system 200 supports all bank refreshes as well as per bank refreshes. All bank refreshes cause the refreshing of banks within all memory device(s) 240 coupled in parallel. Per bank refreshes cause the refreshing of a specified bank within a specified memory device of memory device(s) 240. In some examples, controller 250 within memory device(s) 240 includes a REF logic 254 to apply refresh within memory device(s) 240. REF logic 254, for example, may generate internal operations to perform refresh in accordance with an external refresh received from memory controller 220. REF logic 254 may determine if a refresh is directed to memory device(s) 240 and determine what memory resources 260 to refresh in response to the command.
Under this first solution, for a given memory channel 308, IO signals corresponding to subchannel A are coupled to corresponding IO signals received by a subchannel A on a DIMM 316 via wiring in a printed circuit board (PCB) or other substrate (not shown), while IO signals corresponding to subchannel B are coupled to corresponding IO signals received by a subchannel B on the DIMM via wiring in the PCB or other substrate. Thus, signals from IO memory channel 0 are coupled to DIMM D0, IO channel 1 are coupled to DIMM D1, memory channel 4 are coupled to DIMM D4, IO channel 5 are coupled to DIMM D5. This pattern would also pertain to the other memory channels 2, 3, 6, and 7, and DIMMs D2, D3, D6 and D7. For simplicity and clarity, the double-ended arrows are shown as being connected somewhere within the regions labeled ‘SubA’ or ‘SubB’ in the Figures herein. This would include CMD and Address signals, as well as other signals commonly used for DDR (double data rate) memory channels (e.g., DQ and DQS, for example—see
System architecture 300 provides the advantages of reducing swizzle in signal routing and reducing the package and board costs.
As further shown, the clock output signal for IO channel 0 is coupled to RCD inputs 425 on each of DIMMs D6 and D7, the clock output signal for IO channel 1 is coupled to RCD inputs 425 on each of DIMMs D4 and D5, the clock output signal for IO channel 6 is coupled to RCD inputs 427 on each of DIMMs D4 and D5, and the clock output signal for IO channel 7 is coupled to RCD inputs 427 on each of DIMMs D6 and D7. As before, only a portion of the signals are shown in
As shown, the C/A sub-channel signals and clock signals for each of DDR IO blocks I0, I1, I2, and I3 are coupled to different DIMMs D0, D1, D2, and D3. For example, for DDR IO block I0, C/A signals and data lines for subchannel 510 are coupled to mating interfaces on DIMM D0, while the C/A signals and data lines for subchannel 512 are coupled to mating interfaces on DIMM D1, and clock signal 514 is provided to the RCD input 326 on DIMM D3. Similarly, the C/A sub-channel signals and clock signals for each of DDR IO blocks I4, I5, I6, and I7 are coupled to different DIMMs D4, D5, D6, and D7.
Under this configuration there is a pair of adjacent clocks for every other DDR-IO block instance. For example, the clocks for DDR-IO blocks I1 and I2 are adjacent, as are the clocks for DDR-IO blocks I5 and I6. System architecture 500 also can be used with existing DDRx DIMMs.
System architecture 600 shows a subchannel based DIMM configuration employing a “Skip 1” scheme under which clocks for a given DDR-IO block are configured to be logically adjacent to another DDR-IO block rather than being logically co-located with the DDR-IO block. As shown, system 600 includes an SoC 602 having a die 604 die including either sets of DDR-IO circuitry depicted as a DDR-IO block 608, a clock 610, and an IO interface 612 including a pair of subchannels 614 and 616. The DDR-IO blocks 608 are also labeled I0, I1, I2, I3, I4, I5, I6, I7, and I8, while each of the clocks 610 and IO interfaces 612 are labeled 0, 1, 2, 3, 4, 5, 6, 7, and 8.
As shown, each DDR-IO block 608 is disposed adjacent to a respective IO interface 612 with the same number, e.g., DDR-IO block I0 is adjacent to IO interface 0, DDR-IO block I1 is adjacent to IO interface 1, etc. Meanwhile, clocks 1, 2, 5, and 6 are moved such that the vertical arrangement of the clock is 0, 2, 1, 3, 4, 6, 5, and 7. In this configuration, there is a skip of 1 in the number of vertically adjacent pairs of clocks, e.g., clocks 0-2, 1-3, 4-6, and 5-7, hence the name “Skip-1.”
Under system architecture 600, for IO interfaces 0, 3, 4, and 7, the clock signal associated with the DDR-IO circuitry instance and one of the subchannels are routed to the same DIMM (respectively DIMM D3 (subchannel B), DIMM D0 (subchannel B), DIMM D6 (subchannel A), and DIMM D5 (subchannel A). However, this is not the case for IO interfaces 1, 2, 5, and 6—for a given DIMM 316 the C/A signals for subchannel A and subchannel B and the clock signal originate from different DDR-IO circuitry instances.
System architecture 700 shows a subchannel based DIMM configuration employing a “Skip 2” scheme and including an Soc 702 with a die 704 having eight instances of DDR-IO circuitry corresponding to respective memory channels. As depicted by like-numbered blocks and components in
System architecture 800 shows a subchannel based DIMM configuration employing a “Skip 3” scheme and including an Soc 802 with a die 804 having eight instances of DDR-IO circuitry corresponding to respective memory channels. As depicted by like-numbered blocks and components in
Systems 900a, 900b, 900c, and 900d in
SoC 904 includes a processor 906 and an integrated memory controller 920a including CMD logic 224 and REF logic 226. Memory controller 920a includes IO interface circuitry for multiple memory channels of which a single instance is shown; it will be understood that there would be multiple similar instances. In this example, the IO interface circuitry for a memory channel 0 is partitioned into a pair of subchannels 222-0A and 222-0B (e.g., subchannels A and B), each providing respective C/A signals 232A and 232B, respective data lines DQ 236A and 236B, and option other signals 238. The memory channel 0 IO circuitry further includes a clock signal 232 that is shared by both subchannels 222-0A and 222-0B. interface circuitry 222-0 and 222-1 for memory channels 0 and 1.
In this example, the memory channel interface circuitry 242A and 242B on DDRx DIMM 903 for each subchannel employs a DQ bus width of approximately 40 bits. Each subchannel on the DIMM includes a respective CMD logic block 252A and 252B, which the DIMM also includes REF logic 254 and registers 244. Clock signal 232 is received at by an RCD chip 908, which is used to provide clock signals for the components on the DIMM, including multiple DRAM devices (e.g., chips or packages) 910. Internally, sets of DQ data lines and C/A signals received at the pins of DDRx DIMM 903 are routed to DQ data lines and C/A signals for each DRAM device 910. As shown, the DQ data lines on each DRAM device 910 are split into a pair of subchannels A and B, with the lower 8 bits (DQ[7:0], 236A-0) used for subchannel A and the upper 8 bits (DQ[15:8], 236B-0) used for subchannel B. The use of ‘−0’ here means this is the portion of the subchannel A and B DQ data lines that are routed to a first DRAM device 910. The other DRAM devices would have a similar configuration, but would be coupled to different subsets of the DQ lines coupled to the IO interface circuitry of the DIMM. As further shown, the memory in DRAM device 910 is organized as n bank groups BG0, BG1 . . . BGn, each having four banks B0, B1, B2, and B3. However, this is merely illustrative and non-limiting, as the internal organization of the memory resources for a DRAM device may vary and is outside the scope of this disclosure.
System 900a is illustrative of the memory subchannel A and B and DIMM connections shown in system architecture 300 in
System 900b in
The configuration shown for system 900b corresponds to routing instances in the Skip-1, Skip-2, and Skip-3 examples where signals and data lines one of the subchannels and the clock for a given DDR-IO instance are routed to the same DIMM 316, while the signals and data lines for the other subchannel comes from a different DDR-IO instance.
System 900c in
IO interface circuitry 222-iA for subchannel A of memory channel i provides the C/A signals 234A and DQ data lines 236A for subchannel A of DDRx DIMM 903c, while IO interface circuitry 222-jB for subchannel B of memory channel j provides the C/A signals 234B and DQ data lines 236B for subchannel B of DDRx DIMM 903c. Clock signal 232i for memory channel i and clock signal 232j for memory channel j are respectively received as clock input to RCD chips 908A and 908B. In one embodiment, MCR pins 912 on the DIMM connector are repurposed and used to provide one of the clock inputs to the RCD chips (clock signal 232j is provided to RCD chip 908B using MCR pins 912 in the illustrated example). When using separate clocks for each of subchannels A and B the subchannels are enabled to operate independent of one another, since they each employ their own clock.
System 900d of
The foregoing examples shown signals for a subchannel A on the memory controller being coupled to IO interface circuitry for subchannel A on the DIMMSs and signals for a subchannel B on the memory controller being coupled to IO interface circuitry for subchannel B on the DIMMs. This is for illustrative purposes, wherein the label ‘A’ or ‘B’ on the memory controller side represents one of the two subchannels for a given memory channel. For example, as illustrated in some of the previous diagrams, a given DIMM may be coupled to a pair of subchannels A or a pair of subchannels B on the memory controller side.
While various embodiments described herein use the term System-on-a-Chip or System-on-Chip (“SoC”) to describe a device or system having a processor and associated circuitry (e.g., Input/Output (“IO”) circuitry, power delivery circuitry, memory circuitry, etc.) integrated monolithically into a single Integrated Circuit (“IC”) die, or chip, the present disclosure is not limited in that respect. For example, in various embodiments of the present disclosure, a device or system can have one or more processors (e.g., one or more processor cores) and associated circuitry (e.g., Input/Output (“IO”) circuitry, power delivery circuitry, etc.) arranged in a disaggregated collection of discrete dies, tiles and/or chiplets (e.g., one or more discrete processor core die arranged adjacent to one or more other die such as memory die, IO die, etc.). In such disaggregated devices and systems, the various dies, tiles and/or chiplets can be physically and electrically coupled together by a package structure including, for example, various packaging substrates, interposers, active interposers, photonic interposers, interconnect bridges and the like. The disaggregated collection of discrete dies, tiles, and/or chiplets can also be part of a System-on-Package (“SoP”).
Although some embodiments have been described in reference to particular implementations, other implementations are possible according to some embodiments. Additionally, the arrangement and/or order of elements or other features illustrated in the drawings and/or described herein need not be arranged in the particular way illustrated and described. Many other arrangements are possible according to some embodiments.
In each system shown in a figure, the elements in some cases may each have a same reference number or a different reference number to suggest that the elements represented could be different and/or similar. However, an element may be flexible enough to have different implementations and work with some or all of the systems shown or described herein. The various elements shown in the figures may be the same or different. Which one is referred to as a first element and which is called a second element is arbitrary.
In the description and claims, the terms “coupled” and “connected,” along with their derivatives, may be used. It should be understood that these terms are not intended as synonyms for each other. Rather, in particular embodiments, “connected” may be used to indicate that two or more elements are in direct physical or electrical contact with each other. “Coupled” may mean that two or more elements are in direct physical or electrical contact. However, “coupled” may also mean that two or more elements are not in direct contact with each other, but yet still co-operate or interact with each other. Additionally, “communicatively coupled” means that two or more elements that may or may not be in direct contact with each other, are enabled to communicate with each other. For example, if component A is connected to component B, which in turn is connected to component C, component A may be communicatively coupled to component C using component B as an intermediary component.
An embodiment is an implementation or example of the inventions. Reference in the specification to “an embodiment,” “one embodiment,” “some embodiments,” or “other embodiments” means that a particular feature, structure, or characteristic described in connection with the embodiments is included in at least some embodiments, but not necessarily all embodiments, of the inventions. The various appearances “an embodiment,” “one embodiment,” or “some embodiments” are not necessarily all referring to the same embodiments.
Not all components, features, structures, characteristics, etc. described and illustrated herein need be included in a particular embodiment or embodiments. If the specification states a component, feature, structure, or characteristic “may”, “might”, “can” or “could” be included, for example, that particular component, feature, structure, or characteristic is not required to be included. If the specification or claim refers to “a” or “an” element, that does not mean there is only one of the element. If the specification or claims refer to “an additional” element, that does not preclude there being more than one of the additional element.
Italicized letters, such as ‘i’, ‘j’, ‘k’, ‘m’, ‘n’, etc. in the foregoing detailed description are used to depict an integer number, and the use of a particular letter is not limited to particular embodiments. Moreover, the same letter may be used in separate claims to represent separate integer numbers, or different letters may be used. In addition, use of a particular letter in the detailed description may or may not match the letter used in a claim that pertains to the same subject matter in the detailed description.
As used herein, a list of items joined by the term “at least one of” can mean any combination of the listed terms. For example, the phrase “at least one of A, B or C” can mean A; B; C; A and B; A and C; B and C; or A, B and C.
The above description of illustrated embodiments of the invention, including what is described in the Abstract, is not intended to be exhaustive or to limit the invention to the precise forms disclosed. While specific embodiments of, and examples for, the invention are described herein for illustrative purposes, various equivalent modifications are possible within the scope of the invention, as those skilled in the relevant art will recognize.
These modifications can be made to the invention in light of the above detailed description. The terms used in the following claims should not be construed to limit the invention to the specific embodiments disclosed in the specification and the drawings. Rather, the scope of the invention is to be determined entirely by the following claims, which are to be construed in accordance with established doctrines of claim interpretation.