Unified three-dimensional (3D) DRAM cache
The integration of 3D DRAM with computational logic on the same die addresses the cost and scalability limitations of eDRAM by enabling high-speed, large-capacity caches with reduced latency, suitable for high-performance computing.
Patent Information
- Application Number
- JP2022013699
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2021-03-27
- Filing Date
- 2022-01-31
- Publication Date
- 2025-12-16
- Estimated Expiration
- 2042-01-31
AI Technical Summary
Existing embedded DRAM (eDRAM) technology has higher cost per bit compared to external DRAM and is limited in scalability, and traditional DRAM integration methods limit the pitch connection between dies, affecting performance and cost.
Integration of 3D DRAM with computational logic on the same die, allowing multiple DRAM layers stacked together with vertical connections, eliminating the need for routing signals through a PCB, and incorporating tag caches to reduce latency.
This approach enables high-speed, large-capacity caches with reduced latency and cost, supporting high-performance computing applications by decoupling memory from CMOS and integrating it tightly with processors.
Smart Images

Figure 0007786232000001 
Figure 0007786232000002 
Figure 0007786232000003
Abstract
Description
[Technical Field]
[0001] This description relates generally to processor and memory technology. [Background technology]
[0002] Dynamic random access memory (DRAM) generally includes an array of bit cells, each capable of storing a bit of information. A typical cell configuration consists of a capacitor for storing a charge representing the stored bit, and an access transistor that provides access to the capacitor during read and write operations. The access transistor is connected between a bit line and the capacitor and is gated (turned on or off) by a word line signal. During a read operation, the stored bit of information is read from the cell via the associated bit line. During a write operation, the bit of information is stored in the cell from the bit line via the transistor. Cells are dynamic in nature and therefore need to be periodically refreshed.
[0003] DRAM integrated on the same die or multi-chip module (MCM) as a processor or other computing logic is called embedded DRAM (eDRAM). Although embedded DRAM may have some performance advantages compared to external DRAM in a different package from the processor, existing eDRAM technology has a higher cost per bit compared to external DRAM and is limited in its ability to scale. [Brief explanation of the drawings]
[0004] The following description includes reference to drawings having figures provided as example implementations according to embodiments of the present invention. The drawings should be understood as illustrative, not limiting. As used herein, reference to one or more "embodiments" or "examples" is understood to describe specific features, structures, and / or characteristics included in at least one implementation of the present invention. Thus, phrases such as "in one embodiment" or "in one example" appearing herein describe various embodiments and implementations of the present invention, and do not necessarily all refer to the same embodiment. However, they are also not necessarily mutually exclusive.
[0005] [Figure 1A] Examples of single-layer DRAM and three-dimensional (3D) DRAM are shown.
[0006] [Figure 1B] Shows 3D DRAM integrated with computational logic. [Figure 1C] Shows 3D DRAM integrated with computational logic.
[0007] [Figure 1D] Shows 3D DRAM integrated with computational logic.
[0008] [Figure 1E] 1 shows a block diagram of a system including 3D DRAM integrated with computational logic.
[0009] [Figure 2] 1 illustrates an example of monolithic compute and 3D monolithic memory.
[0010] [Figure 3A] 1 shows an example of a select transistor and a capacitor of a conventional DRAM.
[0011] [Figure 3B] 1 shows an example of a select transistor for an NMOS or PMOS memory layer.
[0012] [Figure 4A] 1 illustrates an example of a memory layer in an interconnect stack.
[0013] [Figure 4B] 4B shows an expanded view of box 244 of FIG. 4A.
[0014] [Figure 5A] 3D computing variations including integrated 3D DRAM are shown. [Figure 5B] 3D computing variations including integrated 3D DRAM are shown. [Figure 5C] 3D computing variations including integrated 3D DRAM are shown.
[0015] [Figure 6A] 1 illustrates an example of a cache hierarchy including a unified 3D DRAM cache. [Figure 6B] 1 illustrates an example of a cache hierarchy including a unified 3D DRAM cache.
[0016] [Figure 7A] 1 shows an example of a tag cache. [Figure 7B] 1 shows an example of a tag cache.
[0017] [Figure 8A] 1 shows an example of a cash access flow. [Figure 8B] 1 shows an example of a cash access flow.
[0018] [Figure 9A] FIG. 10 is a flow diagram illustrating an example of a cache access flow including a tag cache. [Figure 9B] FIG. 10 is a flow diagram illustrating an example of a cache access flow including a tag cache.
[0019] [Figure 10] FIG. 10 is a block diagram showing an example of a cache access flow.
[0020] [Figure 11A] 1 illustrates a block diagram of an example system including a cache hierarchy. [Figure 11B] 1 illustrates a block diagram of an example system including a cache hierarchy.
[0021] [Figure 12A] FIG. 1 is a block diagram illustrating both an exemplary in-order pipeline and an exemplary register renaming, out-of-order issue / execution pipeline.
[0022] [Figure 12B] 1 is a block diagram illustrating both an exemplary embodiment of an in-order architecture core and an exemplary register renaming, out-of-order issue / execution architecture core included in a processor. FIG.
[0023] [Figure 13A] 1 is a block diagram of an example of a single processor core and its connection to an on-die interconnect network and its local subset of a level 2 (L2) cache.
[0024] [Figure 13B] 13B is an enlarged view of an example of a portion of the processor core in FIG. 13A.
[0025] [Figure 14] FIG. 1 is a block diagram of an example of a processor that may have more than one core, may have an integrated memory controller, and may have integrated graphics.
[0026] [Figure 15] FIG. 1 is a block diagram of an exemplary computer architecture. [Figure 16] FIG. 1 is a block diagram of an exemplary computer architecture. [Figure 17]FIG. 1 is a block diagram of an exemplary computer architecture. [Figure 18] FIG. 1 is a block diagram of an exemplary computer architecture.
[0027] A description of specific details and implementations follows, including a description of figures that may show some or all of the following embodiments, and also describes other potential embodiments or implementations of the inventive concepts presented herein. DETAILED DESCRIPTION OF THE INVENTION
[0028] The tightly integrated computational logic and three-dimensional (3D) memory may enable large on-package caches.
[0029] In one example, 3D DRAM is stacked and integrated with computational logic in the same package. The computational logic may include, for example, one or more processor cores, an SRAM cache, and cache control circuitry. The 3D DRAM includes multiple layers of DRAM cells on a die. The multiple layers of DRAM cells and the computational logic are connected to each other by vias that pass through the multiple layers, eliminating the need to route signals through an underlying PCB.
[0030] Integrated 3D DRAM allows for the creation of high-speed caches that are significantly larger than traditional caches. In one example, the integrated 3D DRAM includes a large level 4 (L4) cache, a large memory-side cache, or both an L4 cache and a memory-side cache. However, the large capacity of the integrated L4 and / or memory-side cache introduces significant tag overhead in terms of both space and tag access time.
[0031] In one example, the compute logic includes one or more tag caches, a memory-side cache, or both, for caching recently accessed tags from the L4 cache. A cache controller in the compute logic receives a request to access an address from one of the processor cores and compares the tag in the tag cache with the address. In response to a hit in the tag cache, the cache controller accesses data from the L4 cache at a location indicated by the entry in the tag cache without performing a tag lookup in the L4 cache. Similarly, in a system that includes a memory-side cache on an integrated 3D DRAM instead of an L4 cache, the tag cache in the compute logic can store tags from the memory-side cache. In a system that includes both a memory-side cache and an L4 cache on an integrated 3D DRAM, the compute logic may include two tag caches (or a separate tag cache) to store tags for the memory-side cache and the L4 cache. The tag cache reduces the instances in which L4 cache tags and memory-side cache tags are accessed, which may enable lower-latency cache accesses.
[0032] A large unified DRAM cache can be formed with multiple interconnected DRAM layers on a die. Traditionally, memory and processing logic are fabricated on different dies. A DRAM die traditionally includes a single DRAM layer. For example, FIG. 1A shows an example of a single-layer DRAM 102. The conventional DRAM 102 includes a single memory layer. Existing solutions for stacking DRAMs include stacking separate dies, which limits the pitch connection between the dies to 10-100 μm, thereby limiting cost and performance. In contrast, a 3D monolithic DRAM 104 includes multiple DRAM layers on a die. In the example shown in FIG. 1A, the 3D DRAM 104 includes multiple NMOS or PMOS DRAM layers 106 and a shared CMOS layer 108. In one example, each DRAM layer includes an NMOS or PMOS access transistor and a storage or memory element, such as a capacitor or other storage element. In one example, the shared CMOS is formed from PMOS transistors from the PMOS layer and NMOS transistors from the NMOS layer. The shared CMOS includes circuits such as sense amplifiers, control logic, and input / output circuits. In one such example, the CMOS layer 108 may be common to the memory layer 106 and the compute layer. The 3D DRAM may be tightly integrated with one or more compute layers (e.g., by using layer transfer or by forming the DRAM in a metal stack).
[0033] For example, FIGS. 1B and 1C show 3D DRAM integrated with compute logic. FIG. 1B shows an example in which 3D DRAM 105 is stacked above or on top of compute logic 103, which in turn is above or on top of package substrate 121. FIG. 1C shows an example in which compute logic 103 is stacked above or on top of 3D DRAM 105, which is above or on top of package substrate 121. Both compute logic 103 and 3D DRAM 105 can include multiple layers. In both systems, each layer has vertical channels connecting to the layers above and below it, allowing power and signals to pass through the layers of compute logic 103 and 3D DRAM 105. Thus, 3D DRAM can be integrated above or below the processor core.
[0034] In addition to changing orientation (e.g., 3D DRAM above or below the compute logic), the compute logic 103 and the 3D DRAM 105 may occupy the same or similar area (footprint), or may have different sizes and occupy different areas. FIG. 1D shows an example in which the compute layer 103, including the processor cores, is above the 3D DRAM 105. In the example shown, the compute logic 103 has a smaller area than the 3D DRAM 105. In other examples, the 3D DRAM may have a smaller area than the compute logic and / or be located above the compute logic. While FIG. 1D shows an example in which four compute dies are integrated above one 3D DRAM die, any number of compute dies may be integrated with several 3D DRAM dies.
[0035] 1E shows a block diagram of a system including 3D DRAM integrated with compute logic. System 100 includes compute logic 103 with integrated 3D DRAM 105 stacked above or below compute logic 103. 3D DRAM 105 and compute logic 103 are in the same package 123. The compute logic is also coupled to one or more external memory devices 107 that are external to the compute logic package (e.g., main memory).
[0036] In the illustrated example, the 3D DRAM 105 includes an L4 cache 117 and a memory-side cache 119. In other examples, the 3D DRAM may include only an L4 cache or only a memory-side cache. The L4 cache is one level of cache in a cache hierarchy and, in one example, may be considered a last-level cache (LLC). In one example, the L4 cache 117 is shared by more than one processor core. In one example, the memory-side cache 119 caches addresses and data only from local attached memory (e.g., from the local external memory device 107, but not from remote external memory attached to another socket and / or in a different domain). In contrast, in one example, the L4 cache 117 may cache data and addresses from both local and remote memory. In one example, one or both of the L4 cache 117 and the memory-side cache 119 are set-associative caches. However, other cache arrangement schemes (e.g., fully associative or other cache arrangement schemes) may be implemented. One or both of the L4 cache 117 and the memory-side cache 119 may be "banked" into multiple banks or partitions.
[0037] The computation logic includes one or more processor cores 111 and one or more levels of cache 109 (e.g., level 1 (L1), level 2 (L2), level 3 (L3), etc.). One or more levels of cache 109 may be implemented in SRAM on the same die as the processor cores. One or more levels of cache may be private to a processor core, while other levels of cache may be shared by multiple processor cores. A cache controller 115 includes circuitry for controlling access to caches 109, 117, and 119. For example, cache controller 115 may include circuitry for implementing cache placement and cache relocation / eviction policies. In one example, cache controller 115 is “banked” to include separate cache control logic (cache controller banks) for different banks and / or levels of cache. The computation logic 103 also includes one or more tag caches 113 that store recently accessed tags from L4 cache 117 and / or memory-side cache 119.
[0038] 2, 3B, 4A, 5A, 5B, and 5C show examples of 3D DRAM with multiple DRAM layers.
[0039] Figure 2 shows an example of monolithic compute and 3D monolithic memory. Monolithic 3D memory 201 includes multiple memory layers 210 and an NMOS or PMOS "finished layer" 216. In the example of Figure 2, multiple memory layers 210 include two types of memory: a memory 212 implemented with many layers of thin-film transistors in a metal stack, and a silicon-based NMOS or PMOS memory layer 214. While the example of Figure 2 shows both types of 3D DRAM, other examples may include only thin-film transistor-based memory layers, silicon-based NMOS or PMOS memory layers, or another 3D memory with multiple memory layers.
[0040] In the illustrated example, a memory formed to include an NMOS or PMOS memory layer includes a completion layer 216. The completion layer 216 includes a layer of PMOS transistors or a layer of NMOS transistors that, when combined with some transistors from the memory layer 214, form the control logic and access circuitry (CMOS circuitry) of the memory layer 214. The CMOS circuitry for controlling and accessing the memory layer may include, for example, sense amplifiers, drivers, test logic, sequencing logic, and other control or access circuitry. In one example, if the memory layer 214 is an NMOS memory layer, the completion layer is a PMOS layer for forming CMOS control circuitry from a PMOS layer and some NMOS transistors from an NMOS memory layer. Thus, in such an example having multiple NMOS DRAM layers, each of the multiple NMOS DRAM layers including an NMOS select transistor and a storage element includes an NMOS select transistor and a storage element, and the PMOS layer includes a PMOS transistor for combining with the NMOS transistors from one or more of the multiple NMOS DRAM layers to form the CMOS circuitry. Similarly, if memory layer 214 is a PMOS memory layer, the completed layers are an NMOS layer for forming CMOS control circuitry from an NMOS layer and several PMOS transistors from a PMOS memory layer. Thus, in one example, PMOS or NMOS layer 216 includes transistors for control logic but does not include memory elements and is therefore not a memory layer such as layer 214. In one example, some or all of memory layer 214 includes memory (select transistors and memory elements) but does not include control logic. In one example, each of layers 214 and 216 includes only one transistor type (e.g., only PMOS or only NMOS), which reduces costs.
[0041] Monolithic 3D memory technology enables scaling at many memory tiers to form very large memories integrated with a processor. The large unified memory can operate as one or more caches (or levels of cache) of on-package caches that are significantly larger than traditional caches. Thus, the monolithic 3D memory 201 can store data (e.g., data cache lines) and tags for operation as a cache.
[0042] The compute tier 202 is bonded to the 3D memory 201 via bonding techniques (e.g., solder bumps, balls, exposed contacts, pads, etc.). The compute tier 202 includes processor cores, a cache controller, and other computational logic. The compute tier 202 may also include one or more SRAMs to operate as caches. In one example, at least some tags are stored in the SRAM in the compute tier 202. For example, one or more tag caches may be implemented in the SRAM in the compute tier 202.
[0043] 3A shows an example of a conventional DRAM select transistor and capacitor. A DRAM die 302 includes a single layer of DRAM select transistors 304 and a capacitor 306 above the select transistors 304. In the example shown, the source and drain of the transistor 304 are on the same side (e.g., the front side) 308 of the transistor, and the capacitor 306 is formed above the transistor 304 along with the front end or front side 308 of the transistor. Having the source and drain both on the front side and the capacitor above the front side of the transistor breaks the connection from the bottom to the top of the transistor and limits the DRAM die to a single DRAM layer.
[0044] In contrast, FIG. 3B shows an example of a select transistor and memory element for an NMOS or PMOS memory layer, which allows for stacking of many memory layers. FIG. 3B shows a select transistor 222 for an NMOS or PMOS memory layer (e.g., one of the memory layers 214 of FIG. 2 ) and a transistor 220 that may be formed in the compute layer 202. As described above with respect to FIG. 2 , an NMOS or PMOS memory layer includes both a memory element and a select transistor in series with the memory element. The select transistor enables access (e.g., read and write) to the memory element. The select transistor 222 includes a source 226, a gate 230, and a drain 228. The transistor is coupled to a memory element 224. In the example shown, the memory element 224 is a capacitor (e.g., a bitline capacitor (COB)). Thus, in the example shown, a small memory cell is implemented with the capacitor 224 embedded under the transistor 222. However, the memory element 224 may be any memory element capable of storing one or more bits. For example, the memory elements may include volatile memory elements, non-volatile memory elements, dynamic random access memory (DRAM) elements, capacitors, chalcogenide-based memory elements, phase change memory (PCM) elements, nanowire memory elements, ferroelectric transistor random access memory (FeTRAM), magnetoresistive memory (MRAM), memory elements incorporating memristor technology, spin transfer torque MRAM (STT-MRAM) elements, qubit (quantum bit) elements, or a combination of one or more of the above, or other memory types.
[0045] Unlike conventional transistors that include source and drain terminals that are located and connected on the same side (e.g., the front side) in approximately the same plane, the select transistors in each of the memory layers 214 include transistors with sources and drains in different planes, allowing multiple memory layers to be stacked above each other and connected together.
[0046] 3B shows an example of a transistor 222 that may be formed in one of the memory layers 214. The select transistor 222 is an example having a source and a drain on both sides of the transistor. In the example shown, the drain 228 is located on and connected to one plane or side 234 (e.g., the front) of the transistor 222, and the source is located on and connected to a second plane side 236 (e.g., the back) of the transistor 222. In another example, the source is located on and connected to the front side of the transistor 222, and the drain is located on and connected to the back side of the transistor 222. The location of the contact 226 on the opposite side of the transistor relative to the other contact 228 allows for bitlines to be connected in a vertical fashion (e.g., from the backside contact 226 to the frontside contact 228 through the transistor to build multiple interconnected layers of NMOS or PMOS transistors).
[0047] FIG. 4A illustrates an example of a memory layer formed within an interconnect stack. In one example, memory layer 212 within the interconnect stack includes multiple layers of thin-film transistors (see box 244) above a silicon substrate 246 to provide a memory array 240 for 3D DRAM. Memory layer 240 may be fabricated between interconnect or metal layers. As shown in more detail in FIG. 4B, a memory cell may include one transistor and one capacitor to form a DRAM select transistor and capacitor in series. The transistors within the metal interconnect may be, for example, thin-film transistors or silicon transistors fabricated at low temperature. While FIGS. 4A and 4B illustrate a capacitor as the memory element, the memory layer within the interconnect stack may be formed with other memory elements, such as those described above with respect to FIG. 3B.
[0048] Referring again to FIG. 4A , in the illustrated example, the bottom layer includes a substrate 246 including a diffusion contact (diffcon) material. The die on which the memory layers are formed may include alternating layers of interconnect (M) layers and interlayer (V) layers. In the illustrated example, the transistors for the memory cell array 240 are positioned between the metal layers. In the illustrated example, the capacitors for the memory cells are positioned within the interlayer layers. Additional metal layers may be positioned above the array 240. Thus, the array is positioned between the metal layers. Although FIG. 4A shows only one level or layer of memory cells, the memory may include multiple levels or layers of memory cells stacked on top of each other.
[0049] The memory layer 212 may be fabricated on the back side of the substrate 246 and coupled to the CMOS circuitry on the front side of the substrate 246 by TSVs (Through Silicon Vias). In one example, the memory array 240 may be mirror symmetric on both sides of the silicon substrate 246. Because the physical array may be fabricated separately from the silicon substrate 246, the memory layer may be formed on either or both the front and back sides of the silicon substrate 246. The memory layer may be bonded to the compute layer 202.
[0050] 5A-5C illustrate variations of 3D compute with integrated 3D DRAM. In FIGS. 5A-5C, the 3D compute with integrated 3D memory devices includes an NMOS memory layer 213, a PMOS completion layer 215, and a compute layer 202. Similar to the memory layers 214 described above with respect to FIG. 2, each of the NMOS layers 213 is a memory layer having both memory elements 224 and select transistors 222. The PMOS layer 215 provides PMOS transistors for memory control circuitry. While the memory layers are shown as NMOS memory layers in the examples in FIGS. 5A-5C, other examples may include PMOS memory layers and NMOS completion layers. The CMOS layer 202 may include compute circuitry, such as a processor core, cache control logic, and SRAM for one or more caches. FIG. 5A illustrates an example of a 3D compute with integrated 3D DRAM powered from the bottom. In the example shown, the transistors in the NMOS memory layer 213, the PMOS layer 215, and the compute layer 202 have connections on both sides (front and back) to allow connections from one layer to another through the transistors, to allow all layers 213, 202, and 202 to be connected, and to allow power delivery from the bottom through bumps 218 through all layers.
[0051] In the example of FIG. 5A , power is provided from below the compute layer 202 via bumps 218 that interface with the package and / or underlying PCB (printed circuit board). As discussed above, transistors in the compute layer 202 and PMOS layer 215 include transistors with connections on either side or both ends to allow for connections through and between layers. In the example shown in FIG. 5A , the PMOS completed layer 215 and the compute layer 202 may include transistors such as transistor 221. Transistor 221 includes contacts on both ends (e.g., front and back). As discussed above, transistors typically connect to a source and drain on the top or front side of the transistor. Transistor 221 includes a source 512 and a drain 506 on the front side and a contact 508 on the back side 510. The source 512 and drain 506 on the front side 502 allow the transistor 221 to operate in connection with the front side contacts, and the source 508 on the back side 510 allows the transistor to operate back-to-front (or front-to-back) to connect to adjacent layers through the transistor 221. Thus, the transistor 221 can operate with either the source 512 or the source 508.
[0052] 5B shows an example where power is supplied from the top. For example, power is delivered to the NMOS memory layer 213, the PMOS layer 215, and the compute layer 202 through bumps 218 that interface with the package. Because power is not supplied through the compute layer from the bottom, the transistors 220 in the compute layer may include a source 533 and a drain 536 on the same side or end (e.g., front side 532) of the transistor.
[0053] FIG. 5C illustrates another 3D computing device with integrated 3D memory. In the example shown in FIG. 5C, multiple memory layers 213 are added to a base die 550. An NMOS memory layer 213 and a PMOS layer 215 can be added to the base die 550 via a layer transfer process, or the memory layers can be deposited on the base die 550. In one example, the NMOS memory layer includes a silicon layer (e.g., monocrystalline silicon) having memory elements and NMOS transistors. In one such example, a silicon-based memory layer is transferred to the base die via a layer transfer process. In one such example, the orientation of the select transistors and memory elements may be reversed, as shown in FIG. 5C. In another example, the NMOS layer 213 includes thin-film transistors having memory elements. In one such example, the thin-film transistors include an active material (e.g., polysilicon, amorphous silicon, indium gallium zirconium oxide, TMD (transition metal dichalcogenide), or other active material) that is deposited on the base die 550 to form thin-film transistors on the base die 550. The base die 550 includes the memory layer 213, the PMOS layer 215, and TSVs (through silicon vias) 552 for connecting the memory layer with the compute layer 202 within the base die 550. The base die 550 and the compute layer 202 may be bonded together using bonding techniques via contacts 556. Although FIG. 5C shows an example in which the base die is above the compute die, the base die may be below one or more compute die or above the compute die.
[0054] Therefore, 3D DRAM can be integrated with computational logic to provide high-density, low-cost DRAM, enabling high performance, low latency, and low power at low cost. By supporting multiple memory layers, low-cost memory can be integrated with processors at low cost. By decoupling memory from CMOS, a simplified process for manufacturing integrated memory can be achieved at a fraction of the cost of traditional processes. In one example, memory is decoupled but tightly integrated with compute implemented in the CMOS layer. In one example, the compute layer supports high-performance microprocessor designs. In one example, the memory layer includes memory cells with only a single NMOS transistor with memory elements or a single PMOS transistor with memory elements, with each layer being NMOS-only or PMOS-only. 3D DRAM can be used to create low-latency caches tightly integrated with microprocessors to create high-performance designs (e.g., high-performance processors or very wide machines). The integrated 3D DRAM may be implemented for a variety of applications, such as artificial intelligence (AI) processors or accelerators, graphics (e.g., graphics processing units (GPUs) or graphics accelerators), vision processing units (VPUs), etc.
[0055] As mentioned above, one application of 3D DRAM is to form one or more 3D caches above or below high-performance logic in a 3D monolithic fashion. Figures 6A and 6B show an example of a cache hierarchy with an integrated 3D DRAM cache.
[0056] FIG. 6A illustrates an example of a shared cache hierarchy with a unified 3D DRAM cache. The shared cache hierarchy in FIG. 6A includes two sockets 602A and 602B connected via a coherent link 610. Thus, sockets 602A and 602B share the same memory address map, and snoop filters track data from the local memory of socket 602A and the local memory of socket 602B. Each socket includes processor cores. In the illustrated example, the processor cores in each socket are in groups that share one or more levels of cache. For example, socket 602A includes two groups of cores, 603A and 605A, and socket 602B includes two groups of cores, 603B and 605B. In the illustrated example, each group, 603A, 605A, 603B, and 605B, includes one to N cores (cores 1 to n). The groups of cores may share clusters of cache, such as L2 and / or L3 caches. For example, cores in group 603A share L2 / L3 cache 604A, and cores in group 605A share L2 / L3 cache 608A. Similarly, cores in group 603B share L2 / L3 cache 604B, and cores in group 605B share L2 / L3 cache 608B. The L2 and L3 caches may be inclusive or exclusive.
[0057] Unlike traditional cache hierarchies, the cache hierarchy shown in FIG. 6A includes a large level 4 (L4) cache implemented on the package with 3D DRAM integrated with the cores. For example, L4 cache 606A is on the same package as groups of cores 603A and 605A, and L4 cache 606B is on the same package as groups of cores 603B and 605B. In the example shown in FIG. 6A, all cores in a socket share the same L4 cache. In one example, the L4 cache is a last level cache (LLC). For example, cores in groups 603A and 605A share the same L4 cache 606A, and cores in groups 603B and 605B share the same L4 cache 606B. Cores in each socket can also access local or remote memory. Thus, on-package L4 cache 606A can store cache lines from local memory (e.g., the local memory of socket 602A) and remote memory (e.g., the local memory of socket 602B). Similarly, on-package L4 cache 606B may store cache lines from local memory (e.g., local memory of socket 602B) and remote memory (e.g., local memory of socket 602A).
[0058] FIG. 6B illustrates another example of a cache hierarchy including a unified 3D DRAM cache. Similar to FIG. 6A, the cache hierarchy of FIG. 6B includes two sockets 602C and 602D connected via a coherent link 610. Sockets 602C and 602D share the same memory address map, and a snoop filter tracks data from the local memory of socket 602C and the local memory of socket 602D. Each socket has processor cores. In the illustrated example, the processor cores in each socket are in groups that share one or more levels of cache. For example, socket 602C has two groups of cores, 603C and 605C, and socket 602D has two groups of cores, 603D and 605D. In the illustrated example, each group, 603C, 605C, 603D, and 605D, has 1 through N cores (cores 1 through n). The groups of cores may share clusters of cache, such as L2 and / or L3 caches. For example, cores in group 603C share L2 / L3 cache 604C, and cores in group 605C share L2 / L3 cache 608C. Similarly, cores in group 603D share L2 / L3 cache 604D, and cores in group 605D share L2 / L3 cache 608D. The L2 and L3 caches may be inclusive or exclusive.
[0059] The cache hierarchy shown in FIG. 6B also includes a level 4 (L4) cache. For example, L4 cache 606C is on the same package as groups of cores 603C and 605C, and L4 cache 606D is on the same package as groups of cores 603D and 605D. In the example shown in FIG. 6B, all cores in a socket share the same L4 cache. For example, cores in groups 603C and 605C share the same L4 cache 606C, and cores in groups 603D and 605D share the same L4 cache 606D. Cores in each socket can also access local or remote memory. Thus, on-package L4 cache 606C may store cache lines from local memory (e.g., the local memory of socket 602C) and remote memory (e.g., the local memory of socket 602C). In one example, the L4 cache is a last level cache (LLC).
[0060] Also similar to FIG. 6A , the cache hierarchy of FIG. 6B includes a large on-package cache implemented with 3D DRAM integrated with the processor cores on a package. For example, socket 602C includes memory-side cache 607C on the same package as processor cores 603C and 605C. Similarly, socket 602D includes memory-side cache 607D on the same package as processor cores 603D and 605D. In one example, memory-side caches 607C and 607D are on the same package as the integrated memory controller and processor cores and are logically located between the integrated memory controller and memory to cache cache lines from off-package memory. In the example shown in FIG. 6B , the memory-side cache stores only local memory addresses. For example, memory-side cache 607C stores only cache lines from the local memory of socket 602C. Similarly, memory-side cache 607D stores only cache lines from the local memory of socket 602D. Thus, the cache architecture of FIG. 6B includes an L4 cache and a memory-side cache in the integrated 3D DRAM. Although the L4 cache is shown smaller than the memory-side cache, the diagram is not to scale, and the L4 cache may be smaller than, the same size as, or larger than the memory-side cache. In another example, the cache hierarchy includes a memory-side cache (e.g., memory-side cache 607C or 607D) within the integrated 3D DRAM, but does not include an L4 cache.
[0061] 6A and 6B show two sockets, a cache hierarchy having one or more caches formed from unified 3D DRAM may include a different number of sockets (one, four, etc.). Additionally, while Figures 6A and 6B show a unified L4 and memory-side cache, the techniques described herein may be applied to any level of a large unified cache (e.g., L4, L5, memory-side, etc.), which may be a last-level cache (LLC).
[0062] As mentioned above, a cache hierarchy including a large unified L4 cache or memory-side cache can have significant tag overhead. Considering an example with 64B cache lines, the tag for each cache line may consume, for example, several bytes for each cache line. For an L4 or memory-side cache that is tens or hundreds of times the size of a traditional unified cache, the tag overhead alone may occupy the space of the traditional cache (e.g., tens of megabytes). Additionally, cache lookup operations for a large L4 or memory-side cache may incur delays due to the large number of entries in the cache.
[0063] One or more tag caches may enable faster cache access by allowing tag lookups (e.g., tag access and comparison) in the L4 and memory-side caches to be avoided. Figures 7A and 7B show example block diagrams of tag caches. Figure 7A shows an L4 tag cache 702, and Figure 7B shows an example of a memory-side tag cache 704. L4 cache 706 and memory-side cache 708 may be identical to or similar to L4 cache 117 and memory-side cache 119 of Figure 1E described above. L4 cache 706 stores data cache lines (e.g., Data1, Data2...DataN) and associated tags and state information (e.g., Tag1, Tag2...TagN). A tag includes an identifier or description of the address of the associated data cache line. Similarly, memory-side cache 708 stores data cache lines and associated tags and state information. The cache may be organized as multiple banks 705 and 707. Within a bank, the cache may be organized in multiple sets, ways, etc. Thus, memory-side cache 708 may include or be organized as multiple memory-side cache banks 707. L4 cache 706 may include or be organized as multiple L4 cache banks. In one example, the banks are simultaneously accessible. Other cache configurations are possible.
[0064] L4 tag cache 702 stores tags of recently accessed cache lines from the L4 cache. Similarly, memory-side tag cache 704 stores tags of recently accessed cache lines from memory-side cache 708. Tag caches 702 and 704 are examples of tag cache 113 of FIG. 1E. L4 tag cache 702 and memory-side tag cache 704 may be implemented in SRAM on the computational logic (e.g., a processor). In one example, tag caches 702 and 704 are organized into banks 709 and 713 that correspond to the banks of caches 706 and 708. For example, L4 tag cache 702 may be organized as the same number of banks as L4 cache 704, with the banks of L4 tag cache 702 corresponding to the banks of the L4 cache (e.g., bank 0 of tag cache 702 corresponds to bank 0 of L4 cache 704). Similarly, memory-side tag cache 704 may be organized into the same number of banks as memory-side cache 708, with the banks of memory-side tag cache 704 corresponding to the banks of memory-side cache 708. In another example, multiple cache banks may correspond to tag cache banks. For example, L4 tag cache 702 may have fewer banks than the L4 cache, and multiple banks (e.g., two or more banks 705) may correspond to each of the banks 709 of the L4 tag cache.
[0065] Regardless of the configuration, tag caches 702 and 704 store a subset of tags from the corresponding cache. In the illustrated example, tag 2 in the L4 cache was recently accessed and inserted into L4 tag cache 702. If another memory access request is received with an address matching tag 2, the data (e.g., data 2) may be accessed directly without accessing and comparing the tag in the L4 cache. In the illustrated example, location information (e.g., an index, pointer, reference, or other location information) is associated with each tag in the L4 tag cache to identify the location of the data associated with the tag in the L4 cache. Similarly, each entry in the memory-side tag cache includes location information to identify the location of the data associated with the tag in the memory-side cache. Although the examples shown in FIGS. 7A and 7B show L4 and memory-side caches, tag caches may be used for any level of large unified cache.
[0066] Figures 8A and 8B show example cache access flows. Figure 8A shows a traditional cache access flow. Figure 8B shows a cache access flow including a tag cache. Both Figures 8A and 8B show caches including cache data, tags, and state information. For example, Figure 8A shows cache 801 storing cache data 802 and tag and state information 804. Similarly, Figure 8B shows cache 810 storing cache data 812 and tag and state information 814. Cache 810 in Figure 8B may be, for example, an L4 cache or a memory-side cache implemented in integrated 3D DRAM.
[0067] 8A, the cache controller receives an address (A), reads (803) a tag from cache 801, and compares (805) the address to the tag. If there is a hit (806), the cache controller retrieves the data from cache 801 and returns (807) the data to the requesting processor core.
[0068] In contrast, the flow in FIG. 8B includes the cache controller receiving an address (A) and reading a tag from tag cache 827 (813). Tag cache 827 may be implemented in SRAM. The address is compared to the tag read from tag cache 827 (819). If there is a miss in tag cache 827, the cache controller reads a tag from 3D DRAM cache 810 (815). The address may then be compared to the tag from 3D DRAM cache 810 (817), and if there is a hit in 3D DRAM cache 810, data may be retrieved from 3D DRAM cache 810 (825). In one example, the cache controller fills tag cache 827 with the tag read from 3D DRAM cache 810. In one example, filling the tag cache includes storing a matching tag from the 3D DRAM cache in the tag cache. If there is a hit in the tag cache 827, the cache controller retrieves 821 the data directly from the cache 810 without reading or comparing the tag from the cache 810. The data may then be returned 823 to the requestor. Because the tag cache 827 is smaller and implemented in SRAM, reading and comparing the tag with the address is faster than reading and comparing the tag from the larger DRAM cache 810. Therefore, access times to the larger unified 3D DRAM cache 810 can be significantly improved.
[0069] 9A and 9B are flow diagrams illustrating examples of cache access flows including a tag cache. Method 900A of FIG. 9A and method 900B of FIG. 9B may be performed by hardware logic (e.g., circuitry), firmware, or a combination of hardware and firmware. For example, a circuit in a processor or other computing logic, such as cache controller 115 of FIG. 1E, may perform cache access flow 900A.
[0070] Flow 900A begins at 901 with a requester (e.g., a processor core) sending a request for an access and an address and determining a targeted 3D DRAM cache bank and controller bank based on the address. For example, in a system with a banked L4 cache (e.g., an L4 cache including multiple L4 cache banks) implemented in integrated 3D DRAM, the cache controller may be organized as a corresponding cache controller bank. Circuitry (which may be part of the cache controller circuitry or separate from the cache controller circuitry) determines which L4 cache bank among the multiple L4 cache banks is targeted by the address and sends the request to one of the multiple cache controller banks corresponding to the L4 cache bank targeted by the address. In one example, the targeted cache bank and controller bank are determined by performing an address hash of the request address to determine the specific cache bank and controller bank targeted by the address. However, in other examples, the 3D DRAM cache is not banked, and thus the request may be sent directly to the cache controller without determining the targeted bank.
[0071] The cache controller (or controller bank) receives a request along with an address at 902. The request may be, for example, a memory read or memory write request for access to data at an address in memory (e.g., main memory). The cache controller accesses a tag in a tag cache at 904. For example, with reference to FIG. 7A , the cache controller reads one or more tags from the tag cache 702. The cache controller then compares the tag from the tag cache with the address at 905. In one example, the cache controller includes a comparator for comparing the address with one or more tags to determine whether there is a match. In response to a hit in the tag cache (906 YES branch), the cache controller calculates a data address based on the tag at 911 and accesses the data in the unified 3D DRAM cache at 912. For example, with reference to FIG. 7A , the tag cache 702 includes location information associated with each tag, which enables the cache controller to determine the data location and access the cache line corresponding to the tag in the 3D DRAM cache. Thus, the cache controller can directly access data from the unified 3D DRAM cache at the location indicated by the entry in the tag cache. The cache controller then provides a response to the requester at 914. For example, the cache controller may provide the data to the requester or indicate where the data is stored.
[0072] In response to a miss in the tag cache (906 NO branch), the cache controller accesses a tag from the 3D DRAM cache at 907 and compares the tag to the address at 908. For example, referring to FIG. 7A , the cache controller accesses a tag in L4 cache 706 and compares the tag to the address. If there is a hit in the 3D DRAM cache (909 YES branch), the cache controller fills the tag into the tag cache at 910. The cache controller may then calculate a data address at 911, access the data at 912, and provide a data response to the requestor at 914.
[0073] If there is a miss in the 3D DRAM cache (909 NO branch), the cache controller accesses off-package memory to retrieve the data at 921. The cache controller then fills the data and tag into the 3D DRAM cache and the tag into the tag cache at 923. The controller may then provide a response to the requestor at 914.
[0074] FIG. 9B illustrates an exemplary cache access flow in a system including two levels of cache within an integrated 3D DRAM. For example, referring to FIG. 6B, the cache hierarchy of socket 602C includes L4 cache 606C and memory-side cache 607C. In one such example, in response to a miss in the L4 cache, a second tag cache is accessed before accessing the tag in the memory-side cache. Method 900B of FIG. 9B begins at block 909 NO branch (miss in first 3D DRAM cache) of FIG. 9A. If there is a miss in the first 3D DRAM cache, the cache controller accesses the tag in the second tag cache at 952 and compares the tag from the second tag cache with the address at 954. For example, referring to FIG. 7B, if there is a miss in both L4 tag cache 702 and L4 cache 706, the tag in memory-side tag cache 704 is read and compared with the address.
[0075] In response to a hit in the second tag cache (956 YES branch), a data address is calculated at 960 and data from the memory-side cache at the location indicated by the entry in the second tag cache is accessed. The cache controller may then provide a response to the requester at 970. In response to a miss in the second tag cache (956 NO branch), a tag from a second 3D DRAM cache (e.g., memory-side cache) is accessed at 962 and compared with the address at 964. If there is a hit in the second 3D DRAM cache (965 YES branch), the tag is filled into the second tag cache at 968. A data address may then be calculated at 958 and data may be accessed in the second 3D DRAM cache at 960, and a response is provided to the requester at 970.
[0076] In response to the miss in the second 3D DRAM cache (965 NO branch), the data is retrieved from off-package memory at 921. The data and tag are then filled into the second 3D DRAM cache, and the tag is filled into the second tag cache. The cache controller may then provide a response to the requestor at 970. In one example, the data and tag may also be filled into the L4 cache, and the tag may be filled into the first tag cache.
[0077] FIG. 10 is a block diagram illustrating an example of a cache access flow. FIG. 10 shows the flow over time between different domains or circuit blocks. In one example, a core executes a load instruction, calculates an address, and checks a lower-level cache (e.g., L1, L2, L3, etc.) for the address. If there is a miss, the core (e.g., core boundary 1002) sends a request over the interface to the mesh network and cache controller bank 1004. The controller bank sends the request to the tag cache 1006 and determines whether there is a hit or miss in the tag cache. If there is a miss in the tag cache, the second-level tag 1008 (e.g., the tag of the unified 3D DRAM cache) is checked to determine whether there is a hit or miss. If there is a hit, the tag fill circuit 1010 fills the tag into the tag cache, and the data is accessed from the unified 3D DRAM cache 1012. The response and data are then sent over the mesh network to the core boundary 1014.
[0078] Thus, one or more large caches, e.g., L4 and memory-side caches, may be integrated with the compute logic in the same package. One or more tag caches may be included in the compute logic to enable faster access to the L4 and memory-side caches. The following description describes example systems and architectures in which a unified 3D DRAM cache may be implemented.
[0079] 11A-11B show block diagrams of example systems 1102A and 1102B including a cache hierarchy. Each of FIGS. 11A-11B includes processor cores 1104 and an L2 cache 1106 that is private to each core. A fabric 1108 couples the cores to an L3 cache that is shared by a group of cores. Fabrics 1108 and 1116 couple the cores to an L4 cache, one or more memory controllers (e.g., DDR 1122 and CXL.mem 1118), coherent link logic (e.g., UPI 1120), and one or more I / O controllers (e.g., PCIe 1112 and CXL.io 1114). In the example of FIGS. 11A-11B, the L4 cache is shared by all cores (e.g., at the system or SOC (system-on-chip) level). Figure 11A shows an example where the L4 cache 1124 is 3D DRAM integrated with the processor core 1104, and the L3 cache 1110A is implemented in SRAM. Figure 11B shows an example where both the L4 cache 1124 and the L3 cache 1110B are 3D DRAM integrated with the processor core 1104. In an example where the L3 cache is implemented in 3D DRAM, a third tag cache may be used to store recently accessed tags from the L3 cache.
[0080] Figure 12A is a block diagram illustrating both an exemplary in-order pipeline and an exemplary register renaming, out-of-order issue / execution pipeline. Figure 12B is a block diagram illustrating both an exemplary in-order architecture core and an exemplary register renaming, out-of-order issue / execution architecture core included in a processor. The solid lined boxes in Figures 12A-B indicate the in-order pipeline and in-order core, while the optional addition of dashed lined boxes indicates the register renaming, out-of-order issue / execution pipeline and core. The out-of-order aspects will be described with the understanding that the in-order aspects are a subset of the out-of-order aspects.
[0081] In FIG. 12A , a processor pipeline 1200 includes a fetch stage 1202, a length decode stage 1204, a decode stage 1206, an allocation stage 1208, a rename stage 1210, a scheduling (also known as dispatch or issue) stage 1212, a register read / memory read stage 1214, an execute stage 1216, a writeback / memory write stage 1218, an exception handling stage 1222, and a commit stage 1224.
[0082] 12B shows a processor core 1290 including a front-end unit 1230 coupled to an execution engine unit 1250, both of which are coupled to a memory unit 1270. Core 1290 may be an example of a core implemented in a compute tier integrated with 3D DRAM, such as compute tier 202 of FIG. 2. Core 1290 may be a reduced instruction set computing (RISC) core, a complex instruction set computing (CISC) core, a very long instruction word (VLIW) core, or a hybrid or alternative core type. As yet another option, core 1290 may be a special-purpose core, such as, for example, a network or communications core, a compression engine, a coprocessor core, a general-purpose computing graphics processing unit (GPGPU) core, a graphics core, etc.
[0083] Front-end unit 1230 includes a branch prediction unit 1232 coupled to an instruction cache unit 1234, coupled to an instruction translation lookaside buffer (TLB) 1236, coupled to an instruction fetch unit 1238, coupled to a decode unit 1240. Decode unit 1240 (or decoder) decodes instructions and may generate as output one or more micro-operations, microcode entry points, microinstructions, other instructions, or other control signals decoded from or otherwise reflecting or derived from the original instruction. Decode unit 1240 may be implemented using a variety of different mechanisms. Examples of suitable mechanisms include, but are not limited to, a lookup table, a hardware implementation, a programmable logic array (PLA), a microcode read-only memory (ROM), etc. In one embodiment, core 1290 includes a microcode ROM or other medium (e.g., within decode unit 1240 or otherwise within front-end unit 1230) that stores microcode for particular macro-instructions. The decode unit 1240 is coupled to a rename / allocator unit 1252 within the execution engine unit 1250 .
[0084] The execution engine unit(s) 1250 includes a rename / allocator unit 1252 coupled to a retirement unit 1254 and a set of one or more scheduler units 1256. The scheduler units 1256 represent any number of different schedulers, including reservation stations, central instruction windows, etc. The scheduler units 1256 are coupled to physical register file units 1258. Each of the physical register file units 1258 represents one or more physical register files, the different files storing one or more different data formats, such as, for example, scalar integers, scalar floating point, packed integers, packed floating point, vector integers, vector floating point, status (e.g., an instruction pointer, which is the address of the next instruction to be executed), etc. In one example, the physical register file units 1258 include a vector register unit, a write mask register unit, and a scalar register unit. These register units may provide architectural vector registers, vector mask registers, and general-purpose registers. The physical register files unit 1258 overlaps with the retirement unit 1254 to illustrate various ways in which register renaming and out-of-order execution can be implemented (e.g., using a reorder buffer and retirement register file, using a future file, history buffer, and retirement register file, using a register map and pool of registers, etc.). The retirement unit 1254 and the physical register files unit 1258 are coupled to the execution clusters 1260. The execution clusters 1260 include a set of one or more execution units 1262 and a set of one or more memory access units 1264. The execution units 1262 can perform various operations (e.g., shift, add, subtract, multiply) and on various types of data (e.g., scalar floating point, packed integer, packed floating point, vector integer, vector floating point).Some embodiments may include several execution units dedicated to a particular function or set of functions, while other embodiments may include only one execution unit or multiple execution units that all perform all functions. Scheduler unit 1256, physical register file unit 1258, and execution cluster 1260 are shown as possibly multiple because particular embodiments create separate pipelines for particular types of data / operations (e.g., a scalar integer pipeline, a scalar floating-point / packed integer / packed floating-point / vector integer / vector floating-point pipeline, and / or each with its own scheduler unit, physical register file unit, and / or memory access pipeline execution cluster—and in the case of a separate memory access pipeline, particular embodiments are implemented where only the execution cluster of this pipeline has memory access unit 1264). It should also be understood that when separate pipelines are used, one or more of these pipelines may be out-of-order issue / execution, while the rest are out-of-order.
[0085] The set of memory access units 1264 is coupled to a memory unit 1270, which includes a data TLB unit 1272 coupled to a data cache unit 1274 coupled to a level 2 (L2) cache unit 1276. In an exemplary embodiment, the memory access units 1264 may include a load unit, a store address unit, and a store data unit, each of which is coupled to the data TLB unit 1272 within the memory unit 1270. In one example, the TLB unit 1272 stores translations of virtual memory addresses to physical memory addresses. The instruction cache unit 1234 is further coupled to a level 2 (L2) cache unit 1276 within the memory unit 1270. The L2 cache unit 1276 is coupled to one or more other levels of cache and ultimately to main memory.
[0086] One or more levels of data cache and / or one or more levels of tag cache may implement 3D DRAM integrated with core 1290. For example, integrated 3D DRAM 1275 is coupled with memory unit 1270. The integrated 3D DRAM may include one or more caches, e.g., L4 cache 1279 and memory-side cache 1277, and / or other caches. Some of the caches (e.g., L4, etc.) may be shared by multiple cores, while other caches may be private to a core. In the illustrated example, one or more tag caches 1271 are implemented on memory unit 1270. Memory unit 1270 includes cache control logic 1269 (e.g., a cache controller such as cache controller 115 of FIG. 1E).
[0087] By way of example, an exemplary register renaming, out-of-order issue / execution core architecture may implement pipeline 1200 as follows: 1) instruction fetch 1238 performs fetch and length decode stages 1202 and 1204; 2) decode unit 1240 performs decode stage 1206; 3) rename / allocator unit 1252 performs allocation stage 1208 and rename stage 1210; and 4) scheduler unit 1256 performs scheduling stage 1212. 5) the physical register file unit 1258 and memory unit 1270 perform the register read / memory read stage 1214, and the execution cluster 1260 performs the execution stage 1216; 6) the memory unit 1270 and physical register file unit 1258 perform the writeback / memory write stage 1218; 7) various units may be involved in the exception handling stage 1222; and 8) the retirement unit 1254 and physical register file unit 1258 perform the commit stage 1224.
[0088] Core 1290 may support one or more instruction sets (e.g., the x86 instruction set (including any extensions added in later versions), the MIPS instruction set from MIPS Technologies of Sunnyvale, California, or the ARM instruction set (including any additional extensions such as NEON) from ARM Holdings of Sunnyvale, California), including the instructions described herein. In one embodiment, core 1290 includes logic to support packed data instruction set extensions (e.g., AVX1, AVX2), thereby enabling it to perform operations used by many multimedia applications using packed data.
[0089] It should be understood that a core may support multithreading (executing two or more parallel sets of operations or threads) and may do so in a variety of ways, including time-sliced multithreading, simultaneous multithreading (where a single physical core provides a logical core for each of the threads that the physical core is multithreading simultaneously), or a combination thereof (e.g., time-sliced fetch and decode followed by simultaneous multithreading such as Intel® Hyper-Threading Technology).
[0090] While register renaming is described in the context of out-of-order execution, it should be understood that register renaming may also be used in in-order architectures. The illustrated embodiment of the processor also includes separate instruction and data cache units 1234 / 1274 and a shared L2 cache unit 1276, although alternative embodiments may have a single internal cache for both instructions and data, such as, for example, a level 1 (L1) internal cache, or multiple levels of internal cache. In some embodiments, the system may include a combination of internal and external caches that are external to the core and / or processor. Alternatively, all caches may be external to the core and / or processor.
[0091] 13A-13B show block diagrams of a more specific exemplary in-order core architecture, where the core is one of several logic blocks (including other cores of the same and / or different types) in a chip. The logic block communicates with some fixed-function logic, memory I / O interfaces, and other necessary I / O logic, depending on the application, through a high-bandwidth interconnect network (e.g., a ring network).
[0092] 13A is a block diagram of a single processor core and its connection to an on-die interconnect network 1302 and its local subset of a level 2 (L2) cache 1304, in accordance with some embodiments of the present invention. In one example, an instruction decoder 1300 supports the x86 instruction set with the packed data instruction set extension. An L1 cache 1306 enables low-latency access to cache memory for the scalar and vector units. In one example (to simplify the design), the scalar unit 1308 and the vector unit 1310 use separate register sets (scalar registers 1312 and vector registers 1314, respectively), and data transferred between them is written to memory and then read back from the level 1 (L1) cache 1306; alternative examples may use different approaches (e.g., using a single register set or including a communication path that allows data to be transferred between the two register files without writing and reading it back).
[0093] The local subset of the L2 cache 1304 is part of a global L2 cache that is divided into separate local subsets, one for each processor core. Each processor core has a direct access path to its own local subset of the L2 cache 1304. Data read by a processor core is stored in its L2 cache subset 1304 and can be accessed quickly, in parallel with other processor cores accessing their own local L2 cache subsets. Data written by a processor core is stored in its own L2 cache subset 1304 and is flushed from other subsets as needed. The ring network ensures consistency of shared data. The ring network is bidirectional, allowing agents such as processor cores, L2 caches, and other logic blocks to communicate with each other within the chip. In one example, each ring data path is 1012 bits wide per direction.
[0094] Figure 13B is an expanded view of an example of a portion of the processor core of Figure 13A. Figure 13B includes a portion of the L1 data cache 1306A of the L1 cache 1306, as well as more detailed information regarding the vector unit 1310 and vector registers 1314. Specifically, the vector unit 1310 is a 16-wide vector processing unit (VPU) (see 16-wide ALU 1328) that executes one or more integer, single-precision floating-point, and double-precision floating-point instructions. The VPU supports swizzling of register inputs in a swizzle unit 1320, numeric conversion in numeric conversion units 1322A-1322B, and replication on memory inputs in a replication unit 1324. A write mask register 1326 allows predicating of the resulting vector writes.
[0095] Figure 14 is a block diagram of an example of a processor 1400 that may have more than one core, an integrated memory controller, and integrated graphics. The solid-lined box in Figure 14 depicts a processor 1400 with a single core 1402A, a system agent 1410, and a set of one or more bus controller units 1416, while the optional addition of dashed-lined boxes depicts an alternative processor 1400 with multiple cores 1402A-1402N, a set of one or more integrated memory controller units 1414 in the system agent unit 1410, and special-purpose logic 1408.
[0096] Thus, different implementations of processor 1400 may include: 1) a CPU with special-purpose logic 1408 that is integrated graphics and / or scientific (throughput) logic (which may include one or more cores), and cores 1402A-1402N that are one or more general-purpose cores (e.g., general-purpose in-order cores, general-purpose out-of-order cores, or a combination of the two); 2) a coprocessor in which cores 1402A-1402N are multiple special-purpose cores intended primarily for graphics and / or scientific (throughput); or 3) a coprocessor in which cores 1402A-1402N are multiple general-purpose in-order cores. Thus, processor 1400 may be a general-purpose processor, coprocessor, or special-purpose processor, such as, for example, a network or communications processor, a compression engine, a graphics processor, a GPGPU (general-purpose graphics processing unit), a high-throughput many-integrated-core (MIC) coprocessor (containing 30 or more cores), an embedded processor, or the like. The processor may be implemented on one or more chips. The processor 1400 may be part of and / or may be implemented using any of several process technologies such as, for example, BiCMOS, CMOS, or NMOS.
[0097] The memory hierarchy includes one or more levels of cache within the core, a set or one or more shared cache units 1406, and an external memory (not shown) coupled to a set of integrated memory controller units 1414. The set of shared cache units 1406 may include one or more intermediate levels of cache, such as level 2 (L2), level 3 (L3), level 4 (L4), or other levels of cache, a last level cache (LLC), and / or combinations thereof. One or more levels of cache may be implemented in on-package 3D DRAM. In one example, a ring-based interconnect unit 1412 interconnects integrated graphics logic 1408 (the integrated graphics logic 1408 is an example of special-purpose logic and is also referred to herein as special-purpose logic), the set of shared cache units 1406, and the system agent unit 1410 / integrated memory controller unit 1414, although alternative examples may use well-known techniques for interconnecting any number of such units. In one example, coherency is maintained between one or more cache units 1406 and the cores 1402A-1402N.
[0098] In some examples, one or more of the cores 1402A-1402N are capable of multithreading. The system agent 1410 includes these components that coordinate and operate the cores 1402A-1402N. The system agent unit 1410 may include, for example, a power control unit (PCU) and a display unit. The PCU may be or include the logic and components necessary to adjust the power state of the cores 1402A-1402N and the integrated graphics logic 1408. The display unit is for driving one or more externally connected displays.
[0099] The cores 1402A-1402N may be homogeneous or heterogeneous with respect to architectural instruction sets, i.e., two or more of the cores 1402A-1402N may be capable of executing the same instruction set, while other cores may be capable of executing only a subset of that instruction set or a different instruction set.
[0100] 15-18 are block diagrams of exemplary computer architectures. Other system designs and configurations known in the art are also suitable for laptops, desktops, handheld PCs, personal digital assistants, engineering workstations, servers, network devices, network hubs, switches, embedded processors, digital signal processors (DSPs), graphics devices, video game devices, set-top boxes, microcontrollers, mobile phones, portable media players, handheld devices, and various other electronic devices. In general, a wide variety of systems or electronic devices capable of incorporating a processor and / or other execution logic as disclosed herein are generally suitable.
[0101] 15, a block diagram of a system 1500 according to one embodiment of the present invention is shown. The system 1500 may include one or more processors 1510, 1515 coupled to a controller hub 1520. In one embodiment, the controller hub 1520 includes a graphics memory controller hub (GMCH) 1590 and an input / output hub (IOH) 1550 (which may be on separate chips), where the GMCH 1590 includes a memory and graphics controller to which a memory 1540 and a coprocessor 1545 are coupled, and the IOH 1550 couples input / output (I / O) devices 1560 to the GMCH 1590. Alternatively, one or both of the memory and graphics controller may be integrated within the processor (as described herein), the memory 1540 and the coprocessor 1545 are directly coupled to the processor 1510, and the controller hub 1520 is a single chip with the IOH 1550.
[0102] The optional nature of the additional processors 1515 is indicated by dashed lines in Figure 15. Each processor 1510, 1515 may include one or more of the processing cores described herein and may be some version of processor 1400. One or more 3D DRAM caches 1541 are integrated with the processor 1510.
[0103] The memory 1540 may be, for example, dynamic random access memory (DRAM), phase change memory (PCM), or a combination of the two. In at least one embodiment, the controller hub 1520 communicates with the processors 1510, 1515 via a multi-drop bus such as a front side bus (FSB), a point-to-point interface such as a QuickPath Interconnect (QPI), or similar connection 1595.
[0104] In one embodiment, coprocessor 1545 is a special-purpose processor, such as a high-throughput MIC processor, a network or communication processor, a compression engine, a graphics processor, a GPGPU, an embedded processor, etc. In one embodiment, controller hub 1520 may include an integrated graphics accelerator.
[0105] There may be a wide variety of differences between the physical resources 1510, 1515 with respect to a spectrum of metrics of merit, including architectural, microarchitectural, thermal, power consumption characteristics, and the like.
[0106] In one embodiment, processor 1510 executes instructions that control general types of data processing operations. Embedded within the instructions may be coprocessor instructions. Processor 1510 recognizes these coprocessor instructions as being of a type that should be executed by an attached coprocessor 1545. Accordingly, processor 1510 issues these coprocessor instructions (or control signals representing the coprocessor instructions) to coprocessor 1545 over a coprocessor bus or other interconnect. Coprocessor 1545 accepts and executes the received coprocessor instructions.
[0107] Referring now to Figure 16, a block diagram of a first, more specific, exemplary system 1600 according to one embodiment of the present invention is shown. As shown in Figure 16, multiprocessor system 1600 is a point-to-point interconnect system and includes a first processor 1670 and a second processor 1680 coupled via a point-to-point interconnect 1650. Each of processors 1670 and 1680 may be some version of processor 1400. In some embodiments, processors 1670 and 1680 are processors 1510 and 1515, respectively, and coprocessor 1638 is coprocessor 1545. In another embodiment, processors 1670 and 1680 are processor 1510 and coprocessor 1545, respectively.
[0108] Processors 1670 and 1680 are shown including integrated memory controller (IMC) units 1672 and 1682, respectively. Processor 1670 also includes point-to-point (PP) interfaces 1676 and 1678 as part of its bus controller unit. Similarly, a second processor 1680 includes PP interface circuits 1686 and 1688. Processors 1670, 1680 can exchange information over point-to-point (PP) interface 1650 using PP interface circuits 1678, 1688. As shown in FIG. 16 , IMCs 1672 and 1682 couple the processors to respective memories, i.e., memory 1632 and memory 1634, which may be part of a main memory locally connected to the respective processors.
[0109] Processors 1670, 1680 can each exchange information with chipset 1690 via respective PP interfaces 1652, 1654 using point-to-point interface circuits 1676, 1694, 1686, 1698. Chipset 1690 can optionally exchange information with coprocessor 1638 via high-performance interface 1692. In one embodiment, coprocessor 1638 is a special-purpose processor such as, for example, a high-throughput MIC processor, a network or communications processor, a compression engine, a graphics processor, a GPGPU, an embedded processor, or the like.
[0110] Either processor may include one or more caches 1635, 1637, and one or more caches 1631, 1633 may be external to both processors but included in the package with the processors and connected to the processors via a P-P interconnect. In one example, in addition to a data cache, caches 1635 and 1637 include one or more levels of tag cache. The 3D DRAM caches 1631, 1633 may include, for example, an L4 cache, a memory-side cache, and / or other levels of cache.
[0111] Chipset 1690 may be coupled to a first bus 1616 via an interface 1696. In one embodiment, first bus 1616 may be a bus such as a Peripheral Component Interconnect (PCI) bus, or a PCI Express bus or another third generation I / O interconnect bus, although the scope of the invention is not so limited.
[0112] As shown in FIG. 16 , various I / O devices 1614 may be coupled to the first bus 1616, along with a bus bridge 1618 that couples the first bus 1616 to a second bus 1620. In one embodiment, one or more additional processors 1615, such as a coprocessor, a high-throughput MIC processor, a GPGPU, an accelerator (e.g., a graphics accelerator or digital signal processing (DSP) unit), a field programmable gate array, or any other processor, are coupled to the first bus 1616. In one embodiment, the second bus 1620 may be a low pin count (LPC) bus. In one embodiment, various devices may be coupled to the second bus 1620, including, for example, a keyboard and / or mouse 1622, a communication device 1627, and a storage unit 1628, such as a disk drive or other mass storage device that may include instructions / code and data 1630. Additionally, audio I / O 1624 may be coupled to the second bus 1620. Note that other architectures are possible. For example, instead of the point-to-point architecture of FIG. 16, the system may implement a multi-drop bus or other such architecture.
[0113] Referring now to Figure 17, there is shown a block diagram of a second, more specific exemplary system 1700, according to an embodiment of the present invention. Like elements in Figures 16 and 17 have like reference numerals, and certain aspects of Figure 16 have been omitted from Figure 17 so as not to obscure other aspects of Figure 17.
[0114] Figure 17 shows that processors 1670, 1680 may include integrated memory and I / O control logic ("CL") 1772 and 1782, respectively. Thus, CL 1772, 1782 include integrated memory controller units and include I / O control logic. Figure 17 also shows that memory 1632, 1634 are coupled to CL 1772, 1782, as well as I / O devices 1714 are coupled to control logic 1772, 1782. Legacy I / O devices 1715 are coupled to chipset 1690.
[0115] Referring now to FIG. 18, a block diagram of an SoC 1800 according to one embodiment of the present invention is shown. Similar elements to FIG. 14 are labeled with similar reference numerals. Also, dashed boxes represent optional features of a more advanced SoC. In FIG. 18, an interconnect unit 1802 is coupled to an application processor 1810 including one or more cores 1402A-1402N, each including a cache unit 1404A-1404N, and a set of shared cache units 1406; a system agent unit 1410; a bus controller unit 1416; an integrated memory controller unit 1414; integrated graphics logic; a set or one or more coprocessors 1820, which may include an image processor, an audio processor, and a video processor; a static random access memory (SRAM) unit 1830; a direct memory access (DMA) unit 1832; and a display unit 1840 for coupling to one or more external displays. The interconnect unit 1802 is also connected to a 3D DRAM 1831 integrated in the same package as the processor 1810. The integrated 3D DRAM 1831 may be the same as or similar to the 3D DRAM described above (e.g., 3D DRAM 105 of FIG. 1E). In one example, the coprocessor 1820 includes a special-purpose processor such as, for example, a network or communication processor, a compression engine, a GPGPU, a high-throughput MIC processor, an embedded processor, etc.
[0116] Below is an example of integrated 3D DRAM memory.
[0117] Example 1: An apparatus including: a three-dimensional (3D) DRAM cache including multiple layers of DRAM cells on a die, the multiple layers of DRAM cells connected to each other by vias passing through the multiple layers; and computation logic stacked with the 3D DRAM cache in the same package. The computation logic includes one or more processor cores, a cache controller, and a tag cache. The cache controller receives a request from a requesting processor core of the one or more processor cores to access data at an address, compares a tag in the tag cache with the address, and, responsive to a hit in the tag cache, accesses the data from the 3D DRAM cache at the location indicated by the entry in the tag cache and sends a response to the requesting processor core.
[0118] Example 2: The apparatus of example 1, wherein the cache controller, in response to a miss in the tag cache, compares a tag in the 3D DRAM cache with the address, and, in response to a hit in the 3D DRAM cache, stores a matching tag in the tag cache and accesses data from the 3D DRAM cache.
[0119] Example 3: The apparatus of example 1 or 2, wherein the 3D DRAM cache includes a plurality of cache banks, the cache controller includes a plurality of cache controller banks, and the computation logic further includes circuitry for determining which of the plurality of cache banks is targeted by the address, and for sending a request to one of the plurality of cache controller banks corresponding to the cache bank targeted by the address.
[0120] Example 4: The apparatus of any one of Examples 1 to 3, further comprising a 3D DRAM memory-side cache for caching data from the local external memory, wherein the calculation logic includes a second tag cache, and wherein the cache controller, in response to a miss in the 3D DRAM cache, compares a tag in the second tag cache with the address, and, in response to a hit in the second tag cache, accesses data from the 3D DRAM memory-side cache at a location indicated by an entry in the second tag cache.
[0121] Example 5: The apparatus of any one of Examples 1 to 4, wherein the 3D DRAM memory-side cache includes a plurality of memory-side cache banks, the cache controller includes a plurality of cache controller banks, and the calculation logic further includes circuitry for determining which memory-side cache bank of the plurality of memory-side cache banks is targeted by the address, and for sending a request to one of the plurality of cache controller banks corresponding to the memory-side cache bank targeted by the address.
[0122] Example 6: The apparatus of any one of Examples 1 to 5, wherein the computation logic includes an SRAM including a tag cache.
[0123] Example 7: The apparatus of any one of Examples 1 to 6, wherein the computation logic includes one or more SRAMs including a tag cache and a second tag cache.
[0124] Example 8: The apparatus of any one of Examples 1 to 7, wherein the multiple layers of the 3D DRAM cache include: a plurality of NMOS DRAM layers, each including an NMOS select transistor and a storage element; and a PMOS layer including PMOS transistors for forming CMOS circuits in combination with the NMOS transistors from one or more of the plurality of NMOS DRAM layers.
[0125] Example 9: The device of any one of Examples 1 to 8, wherein the multiple layers of the 3D DRAM cache include multiple layers of thin film select transistors and storage elements between metal interconnects.
[0126] Example 10: The device of any one of Examples 1 to 9, wherein the 3D DRAM cache is stacked above the computational logic.
[0127] Example 11: The apparatus of any one of Examples 1 to 10, wherein the computational logic is stacked above the 3D DRAM cache.
[0128] Example 12: A processor stacked with a three-dimensional (3D) DRAM in a package, the processor including one or more processor cores, a tag cache, and cache control circuitry for accessing the 3D DRAM as a level four (L4) cache. The cache control circuitry receives a request from a requesting processor core of the one or more processor cores to access data at an address, compares a tag in the tag cache with the address, and, in response to a hit in the tag cache, accesses the data from the L4 cache at a location indicated by the entry in the tag cache and sends a response to the requesting processor core.
[0129] Example 13: A processor as described in Example 12, wherein the cache control circuit compares a tag in the L4 cache with an address in response to a miss in the tag cache, and stores a matching tag in the tag cache in response to a hit in the L4 cache, and accesses data from the L4 cache.
[0130] Example 14: A processor as described in Example 12 or 13, wherein the L4 cache includes a plurality of L4 cache banks, the cache control circuit includes a plurality of cache controller banks, and the processor further includes circuitry for determining which L4 cache bank among the plurality of L4 cache banks is targeted by the address, and for sending a request to one of the plurality of cache controller banks corresponding to the L4 cache bank targeted by the address.
[0131] Example 15: A processor described in any one of Examples 12 to 14, wherein the 3D DRAM includes a memory-side cache for caching data from a local external memory, the processor includes a second tag cache, and the cache control circuitry compares a tag in the second tag cache with an address in response to a miss in the L4 cache, and accesses data from the memory-side cache at a location indicated by an entry in the second tag cache in response to a hit in the second tag cache.
[0132] Example 16: A processor described in any one of Examples 12 to 15, wherein the memory-side cache includes a plurality of memory-side cache banks, the cache control circuit includes a plurality of cache controller banks, and the processor further includes circuitry for determining which memory-side cache bank among the plurality of memory-side cache banks is targeted by the address, and for sending a request to one of the plurality of cache controller banks corresponding to the memory-side cache bank targeted by the address.
[0133] Example 17: The processor of any one of Examples 12 to 16, including an SRAM including a tag cache.
[0134] Example 18: The processor of any one of Examples 12 to 17, including one or more SRAMs including a tag cache and a second tag cache.
[0135] Example 19: A system including: a three-dimensional (3D) DRAM including multiple layers of DRAM cells on a die, the multiple layers of DRAM cells being connected to each other by vias passing through the multiple layers; and a processor stacked with the 3D DRAM in the same package. The processor includes one or more processor cores, a cache controller, and a tag cache, and the cache controller accesses the 3D DRAM as a last-level cache (LLC). The cache controller receives a request from a requesting processor core of the one or more processor cores to access data at an address, compares a tag in the tag cache with the address, and, in response to a hit in the tag cache, accesses the data from the LLC cache at a location indicated by the entry in the tag cache and sends a response to the requesting processor core.
[0136] Example 20: The system of Example 19, further comprising one or more of an external memory device coupled to the processor, an input / output (I / O) device, a power source, and a display.
[0137] Embodiments of the present invention may include various processes as described above. The processes may be embodied in machine-executable instructions. The instructions may be used to cause a general-purpose or special-purpose processor to perform a particular process. Alternatively, these processes may be performed by specific / custom hardware components, including hardwired or programmable logic circuits (e.g., FPGAs, PLDs) for performing the processes, or by any combination of programmed computer components and custom hardware components.
[0138] Elements of the present invention may also be provided as a machine-readable medium for storing machine-executable instructions. The machine-readable medium may include, but is not limited to, a floppy disk, an optical disk, a CD-ROM, a magneto-optical disk, flash memory, ROM, RAM, EPROM, EEPROM, a magnetic or optical card, a propagation medium, or any other type of medium / machine-readable medium suitable for storing electronic instructions. For example, the present invention may be downloaded as a computer program product that may be transferred from a remote computer (e.g., a server) to a requesting computer (e.g., a client) via a communications link (e.g., a modem or network connection) using a data signal embodied in a carrier wave or other propagation medium.
[0139] Flow diagrams as illustrated herein provide examples of sequences of various process operations. Flow diagrams may depict physical operations as well as operations performed by software or firmware routines. In one example, a flow diagram may depict the states of a finite state machine (FSM), which may be implemented in hardware, software, or a combination. The order of operations, although shown in a particular sequence or order, can be modified unless otherwise specified. Therefore, the illustrated embodiments should be understood as examples only; processes may be performed in a different order, and some operations may be performed in parallel. Furthermore, one or more operations may be omitted in various examples, and therefore not all operations are necessarily required in all embodiments. Other process flows are possible.
[0140] Various operations or functions, to the extent described herein, may be described or defined as software code, instructions, configuration, data, or combinations thereof. Content can be directly executable ("object" or "executable" format), source code, or differential code ("delta" or "patch" code). The software content of the embodiments described herein may be provided via an article of manufacture storing the content or via a method of operating a communications interface to transmit data through the communications interface. A machine-readable storage medium can cause a machine to perform the functions or operations described and includes any mechanism for storing information in a form accessible by a machine (e.g., computing device, electronic system, etc.), such as recordable / non-recordable media (e.g., read-only memory (ROM), random access memory (RAM), magnetic disk storage media, optical storage media, flash memory devices, etc.). A communications interface includes any mechanism for interfacing to either hardwired, wireless, optical, etc. media to communicate with another device, such as, for example, a memory bus interface, a processor bus interface, an Internet connection, a disk controller, etc. The communications interface may be configured by providing configuration parameters and / or sending signals to prepare the communications interface to provide data signals describing the software content. The communications interface may be accessed via one or more commands or signals sent to the communications interface.
[0141] The various components described herein may be means for performing the described operations or functions. Each component described herein includes software, hardware, or a combination thereof. A component may be implemented as a software module, a hardware module, special-purpose hardware (e.g., application-specific hardware, application-specific integrated circuits (ASICs), digital signal processors (DSPs), etc.), an embedded controller, hard-wired circuitry, etc.
[0142] In addition to what is described herein, various modifications can be made to the disclosed embodiments and implementations of the invention without departing from the scope thereof. Accordingly, the illustrations and examples herein should be construed in an illustrative rather than a limiting sense. The scope of the invention should be assessed solely by reference to the claims that follow. [Other possible items] [Item 1] a three-dimensional (3D) DRAM cache including multiple layers of DRAM cells on a die, the multiple layers of DRAM cells connected to each other by vias passing through the multiple layers; computation logic stacked with the 3D DRAM cache in the same package, the computation logic including one or more processor cores, a cache controller, and a tag cache; The cache controller: receiving a request to access data at an address from a requesting processor core of the one or more processor cores; comparing a tag in the tag cache with the address; In response to a hit in the tag cache, accessing data from the 3D DRAM cache at a location indicated by an entry in the tag cache; transmitting a response to the requesting processor core; Device. [Item 2] The cache controller: responsive to a miss in the tag cache, comparing a tag in the 3D DRAM cache to the address; responsive to a hit in the 3D DRAM cache, storing a matching tag in the tag cache and accessing the data from the 3D DRAM cache; Item 1. The device according to item 1. [Item 3] the 3D DRAM cache includes a plurality of cache banks; the cache controller includes a plurality of cache controller banks; The calculation logic: determining which of the plurality of cache banks is targeted by the address; and further comprising circuitry for sending the request to one of the plurality of cache controller banks corresponding to the cache bank targeted by the address; Item 1. The device according to item 1. [Item 4] further comprising a 3D DRAM memory-side cache for caching data from the local external memory; the computation logic includes a second tag cache; The cache controller: In response to a miss in the 3D DRAM cache, comparing a tag in the second tag cache to the address; accessing the data from the 3D DRAM memory-side cache at a location indicated by an entry in the second tag cache in response to a hit in the second tag cache; Item 1. The device according to item 1. [Item 5] the 3D DRAM memory-side cache includes a plurality of memory-side cache banks; the cache controller includes a plurality of cache controller banks; The calculation logic: determining which memory-side cache bank of the plurality of memory-side cache banks is targeted by the address; and further comprising circuitry for sending the request to one of the plurality of cache controller banks corresponding to the memory-side cache bank targeted by the address; Item 4. The device according to item 4. [Item 6] the computation logic includes an SRAM that includes the tag cache; Item 1. The device according to item 1. [Item 7] the computation logic includes one or more SRAMs including the tag cache and the second tag cache; Item 4. The device according to item 4. [Item 8] the multiple layers of the 3D DRAM cache; a plurality of NMOS DRAM layers, each including an NMOS select transistor and a storage element; a PMOS layer including PMOS transistors for combining with NMOS transistors from one or more of the plurality of NMOS DRAM layers to form a CMOS circuit; Item 1. The device according to item 1. [Item 9] the multiple layers of the 3D DRAM cache include multiple layers of thin film select transistors and storage elements between metal interconnects; Item 1. The device according to item 1. [Item 10] the 3D DRAM cache is stacked above the computational logic; Item 1. The device according to item 1. [Item 11] the computational logic being stacked above the 3D DRAM cache; Item 1. The device according to item 1. [Item 12] A processor stacked with a three-dimensional (3D) DRAM in a package, one or more processor cores; Tag cache and a cache control circuit for accessing the 3D DRAM as a level 4 (L4) cache; The cache control circuit receiving a request to access data at an address from a requesting processor core of the one or more processor cores; comparing a tag in a tag cache with said address; In response to a hit in the tag cache, accessing data from the L4 cache at a location indicated by an entry in the tag cache; transmitting a response to the requesting processor core; Processor. [Item 13] The cache control circuit responsive to a miss in the tag cache, comparing a tag in the L4 cache to the address; responsive to a hit in the L4 cache, storing a matching tag in the tag cache and accessing the data from the L4 cache; Item 13. The processor of item 12. [Item 14] the L4 cache includes a plurality of L4 cache banks; the cache control circuitry includes a plurality of cache controller banks; the processor: determining which L4 cache bank of the plurality of L4 cache banks is targeted by the address; and further comprising circuitry for sending the request to one of the plurality of cache controller banks corresponding to the L4 cache bank targeted by the address; Item 13. The processor of item 12. [Item 15] the 3D DRAM includes a memory-side cache for caching data from a local external memory; the processor includes a second tag cache; The cache control circuit In response to a miss in the L4 cache, comparing a tag in the second tag cache with the address; accessing, in response to a hit in the second tag cache, from the memory-side cache, the data at the location indicated by the entry in the second tag cache; Item 13. The processor of item 12. [Item 16] the memory-side cache includes a plurality of memory-side cache banks; the cache control circuitry includes a plurality of cache controller banks; the processor: determining which memory-side cache bank of the plurality of memory-side cache banks is targeted by the address; and further comprising circuitry for sending the request to one of the plurality of cache controller banks corresponding to the memory-side cache bank targeted by the address; Item 16. The processor of item 15. [Item 17] an SRAM including the tag cache; Item 13. The processor of item 12. [Item 18] one or more SRAMs including the tag cache and the second tag cache; Item 16. The processor of item 15. [Item 19] a three-dimensional (3D) DRAM including multiple layers of DRAM cells on a die, the multiple layers of DRAM cells being connected to each other by vias passing through the multiple layers; a processor stacked with the 3D DRAM in the same package, the processor including one or more processor cores, a cache controller, and a tag cache; the cache controller accesses the 3D DRAM as a last level cache (LLC); The cache controller: receiving a request to access data at an address from a requesting processor core of the one or more processor cores; comparing a tag in the tag cache with the address; In response to a hit in the tag cache, accessing data from the LLC cache at a location indicated by an entry in the tag cache; transmitting a response to the requesting processor core; system. [Item 20] further comprising one or more of an external memory device coupled to the processor, an input / output (I / O) device, and a display; Item 19. The system of item 19.
Claims
1. a three-dimensional (3D) DRAM cache including multiple layers of DRAM cells on a die, the multiple layers of DRAM cells connected to each other by vias passing through the multiple layers; computation logic stacked with the 3D DRAM cache in the same package, the computation logic including one or more processor cores, a cache controller, and a tag cache; The cache controller: receiving a request to access data at an address from a requesting processor core of the one or more processor cores; comparing a tag in the tag cache with the address; In response to a hit in the tag cache, accessing data from the 3D DRAM cache at a location indicated by an entry in the tag cache; transmitting a response to the requesting processor core; Device.
2. The cache controller: In response to a miss in the tag cache, comparing a tag in the 3D DRAM cache with the address; responsive to a hit in the 3D DRAM cache, storing a matching tag in the tag cache and accessing the data from the 3D DRAM cache; 10. The apparatus of claim 1.
3. the 3D DRAM cache includes a plurality of cache banks; the cache controller includes a plurality of cache controller banks; The calculation logic: determining which of the plurality of cache banks is targeted by the address; and further comprising circuitry for sending the request to one of the plurality of cache controller banks corresponding to the cache bank targeted by the address; 3. The device according to claim 1 or 2.
4. further comprising a 3D DRAM memory-side cache for caching data from the local external memory; the computation logic includes a second tag cache; The cache controller: In response to a miss in the 3D DRAM cache, comparing a tag in the second tag cache with the address; accessing the data from the 3D DRAM memory-side cache at a location indicated by an entry in the second tag cache in response to a hit in the second tag cache; 4. An apparatus according to any one of claims 1 to 3.
5. the 3D DRAM memory-side cache includes a plurality of memory-side cache banks; the cache controller includes a plurality of cache controller banks; The calculation logic: determining which memory-side cache bank of the plurality of memory-side cache banks is targeted by the address; and further comprising circuitry for sending the request to one of the plurality of cache controller banks corresponding to the memory-side cache bank targeted by the address; 5. The apparatus of claim 4.
6. the computation logic includes an SRAM that includes the tag cache; 6. An apparatus according to any one of claims 1 to 5.
7. the computation logic includes one or more SRAMs including the tag cache and the second tag cache; 5. The apparatus of claim 4.
8. the plurality of layers of the 3D DRAM cache comprising: a plurality of NMOS DRAM layers, each including an NMOS select transistor and a storage element; a PMOS layer including PMOS transistors for forming CMOS circuits in combination with NMOS transistors from one or more of the plurality of NMOS DRAM layers; 8. An apparatus according to any one of claims 1 to 7.
9. the multiple layers of the 3D DRAM cache include multiple layers of thin film select transistors and storage elements between metal interconnects; 9. An apparatus according to any one of claims 1 to 8.
10. the 3D DRAM cache is stacked above the computational logic; 10. An apparatus according to any one of claims 1 to 9.
11. the computational logic being stacked above the 3D DRAM cache; 11. An apparatus according to any one of claims 1 to 10.
12. 1. A processor stacked with a three-dimensional (3D) DRAM in a package, comprising: one or more processor cores; Tag cache and a cache control circuit for accessing the 3D DRAM as a level 4 (L4) cache; The cache control circuit receiving a request to access data at an address from a requesting processor core of the one or more processor cores; comparing a tag in a tag cache with said address; In response to a hit in the tag cache, accessing data from the L4 cache at a location indicated by an entry in the tag cache; transmitting a response to the requesting processor core; Processor.
13. The cache control circuit In response to a miss in the tag cache, comparing a tag in the L4 cache with the address; responsive to a hit in the L4 cache, storing a matching tag in the tag cache and accessing the data from the L4 cache; The processor of claim 12.
14. the L4 cache includes a plurality of L4 cache banks; the cache control circuitry includes a plurality of cache controller banks; the processor: determining which L4 cache bank of the plurality of L4 cache banks is targeted by the address; and further comprising circuitry for sending the request to one of the plurality of cache controller banks corresponding to the L4 cache bank targeted by the address; A processor according to claim 12 or 13.
15. the 3D DRAM includes a memory-side cache for caching data from a local external memory; the processor includes a second tag cache; The cache control circuit In response to a miss in the L4 cache, comparing a tag in the second tag cache with the address; accessing, from the memory-side cache, the data at the location indicated by the entry in the second tag cache in response to a hit in the second tag cache; A processor according to any one of claims 12 to 14.
16. the memory-side cache includes a plurality of memory-side cache banks; the cache control circuitry includes a plurality of cache controller banks; the processor: determining which memory-side cache bank of the plurality of memory-side cache banks is targeted by the address; and further comprising circuitry for sending the request to one of the plurality of cache controller banks corresponding to the memory-side cache bank targeted by the address; 16. The processor of claim 15.
17. an SRAM including the tag cache; 17. A processor according to any one of claims 12 to 16.
18. one or more SRAMs including said tag cache and said second tag cache; 16. The processor of claim 15.
19. a three-dimensional (3D) DRAM including multiple layers of DRAM cells on a die, the multiple layers of DRAM cells being connected to each other by vias passing through the multiple layers; a processor stacked with the 3D DRAM in the same package, the processor including one or more processor cores, a cache controller, and a tag cache; the cache controller accesses the 3D DRAM as a last level cache (LLC); The cache controller: receiving a request to access data at an address from a requesting processor core of the one or more processor cores; comparing a tag in the tag cache with the address; accessing, from the LLC, data at a location indicated by an entry in the tag cache in response to a hit in the tag cache; transmitting a response to the requesting processor core; system.
20. further comprising one or more of an external memory device coupled to the processor, an input / output (I / O) device, and a display; 20. The system of claim 19.
21. The cache controller: In response to a miss in the tag cache, comparing a tag in the 3D DRAM cache with the address; responsive to a hit in the 3D DRAM cache, storing a matching tag in the tag cache and accessing the data from the 3D DRAM cache; 21. A system according to claim 19 or 20.
22. the 3D DRAM cache includes a plurality of cache banks; the cache controller includes a plurality of cache controller banks; the processor: determining which of the plurality of cache banks is targeted by the address; and further comprising circuitry for sending the request to one of the plurality of cache controller banks corresponding to the cache bank targeted by the address; 22. A system according to any one of claims 19 to 21.
23. further comprising a 3D DRAM memory-side cache for caching data from the local external memory; the processor includes a second tag cache; The cache controller: In response to a miss in the 3D DRAM cache, comparing a tag in the second tag cache with the address; accessing the data from the 3D DRAM memory-side cache at a location indicated by an entry in the second tag cache in response to a hit in the second tag cache; 23. A system according to any one of claims 19 to 22.
24. the 3D DRAM memory-side cache includes a plurality of memory-side cache banks; the cache controller includes a plurality of cache controller banks; the processor: determining which memory-side cache bank of the plurality of memory-side cache banks is targeted by the address; and further comprising circuitry for sending the request to one of the plurality of cache controller banks corresponding to the memory-side cache bank targeted by the address; 24. The system of claim 23.
25. the processor includes an SRAM containing the tag cache; 25. A system according to any one of claims 19 to 24.
Citation Information
Patent Citations
Cache constituting method and processor system
JP2002055880A
DRAM cache with tags and data stored together in physical rows
JP2015503160A
Hybrid memory module and operation method for the same
JP2018133086A
Processing unit and method for controlling processing unit
WO2013084314A1