Memory usage and access information may be useful in analyzing and improving designs for memory operations and architecture. Such information may be collected through memory traces (e.g., memory address accesses) from a memory controller.
For a more complete understanding of various examples, reference is now made to the following descriptions taken in connection with the accompanying drawings in which:
Various examples described below provide for monitoring of a memory controller and associated memory accesses. As described below, a dual inline memory module (DIMM) may be provided with a field programmable gate array (FPGA) and a storage device, such as one or more flash memory chips. The FPGA can monitor the memory address bus from the memory controller and detect all memory accesses to that DIMM. The FPGA can obtain certain information from the access signals, including the chip select signal for multi-rank DIMMs. The information can be stored on the flash chips on the DIMM. The DIMM may be provided with enough storage capacity (e.g., multiple flash memory chips) to store memory access information for a desired length of traces. Further, in various examples, the DIMM including the FPGA and the flash memory chips has a form factor which allows housing in a standard server environment.
Referring first to
Various commands executed by the CPU 110 may require access to data or other information stored in the memory of the example system 100. In this regard, the example system 100 is provided with various memory systems. The example system 100 of
As noted above, memory usage and access information may be useful in analyzing and improving designs for memory operations and architecture. Examples of the present disclosure provide a DIMM device that may be installed in a DIMM slot to facilitate collection of such data in an efficient manner. In various examples, collection of the data may be achieved with little or no overhead added to the system 100. In this regard,
Referring now to
Further, since the FPGA 220 can capture signals from the memory bus 130, there is no need to interfere with normal operation of the memory controller 120 or the system 100. For example, the tracer DIMM 200 does not require any separate signals to be sent to the memory controller 120 or additional processes to be added, resulting in no additional overhead as a result of the capture of the memory traces.
Additionally, in various examples, the tracer DIMM 200 is able to capture information which specifically identifies each memory address requested by the memory controller 120 regardless of to which DIMM the memory address corresponds. Since the tracer DIMM 200 is connected to the memory bus 130, the tracer DIMM 200 is able to see all of the commands and addresses transmitted on the memory bus 130. Thus, the tracer DIMM 200 sees commands and addresses related to not only the tracer DIMM 200, but also other DIMM's on the memory bus 130 such as DIMMs 140a-c.
Further, with the FPGA 220 connected to the memory bus 130, the tracer DIMM 200 can capture the chip select signal from the memory controller 120 for memory access request signals associated with the tracer DIMM 200. For multi-rank tracer DIMMs, each memory access request signal may correspond to an address on one of the multiple ranks. In various examples, the tracer DIMM 200 can identify which rank of the tracer DIMM 200 the memory access request corresponds to.
The captured information is stored in the storage section 230. The storage section 230 may include one or more types of memory devices which may be sized to store a sufficient amount of trace information. For example, as described below with reference to
Referring now to
The FPGA 320 of the example tracer DIMM 300 is connected to the command and address bus that is broadcast from the DIMM's register chip. Thus, the tracer DIMM 300 does not increase any loading on the memory bus and adds no overhead. Certain ports of the FPGA snoop the command and address bus for the memory access signals. In various examples, these ports are double clocked, enabling the FPGA 320 to trace the high-speed DDR3 protocol.
In the example of
As illustrated in
Various examples of tracer DIMMs may include additional components. For example, the example tracer DIMM 300 of
Referring now to
In the example of
Each state machine 410, 411 is coupled to a formatter 420, 421 for the associated rank. The formatters 420, 421 use the current state for each rank and the memory address in requested by the memory controller to create traces of memory addresses for each rank. In one example, the formatters 420, 421 create 32-bit traces of the memory addresses for storage in the flash memory chips described above with reference to
In the example illustrated in
Referring now to
Thus, various examples described above provide tracing of memory accesses with minimal or no overhead since the memory system and the operating system are not disturbed. Further, the tracing is achieved using a self-contained unit which can store the trace information without the need to transfer or transmit that information to an external unit. Additionally, various examples of tracer DIMMs have a form factor which allows them to be mounted in standard server units. For example, the tracer DLMM 300 of
In some examples, two or more DIMM slots of a memory system may be provided with tracer DIMMs. In one example, all DIMM slots are provided with tracer DIMMs. In this regard, the DRAM portion of each of the tracer DIMMs operates as a normal DRAM, thus resulting in the tracer DLMMs as appearing to the memory controller as normal DIMMs. An example of such an arrangement is illustrated in
In various examples, each tracer DIMM 612, 622, 632 may be provided with synchronization ports. Referring again to
The synchronization signal may be used to indicate starting and/or stopping of the tracing. In one example, the synchronization signal indicates the start of the tracing, and the stopping of the tracing may be performed at a particular time period after the start.
In various examples, synchronization signals may be indicated to each tracer DIMM 612, 622, 632 in a variety of manners. In one example, the synchronization signal is transmitted through a manual command by a user. For example, as illustrated in
In other examples, the server may be connected to the tracer DIMMs 612, 622, 632 are connected to the server processor (e.g., CPU 110 of
In another example, a specific memory address may be reserved on the first tracer DIMM 612. A command associated with the reserved memory address may indicate a start trace or a stop trace signal to the first tracer DIMM 612. Thus, upon receiving a write access to the reserved address, the first tracer DIMM 612 may issue a synchronization signal to each of the other daisy-chained tracer DIMMs 622, 632, and each tracer DIMM 612, 622, 632 may begin the memory trace.
Thus, in various example, one or more (including all) DIMMs of a memory system may be tracer DIMMs capable of storing a memory trace. In this regard, a complete memory trace for the entire memory system may be obtained with no additional overhead for the memory system.
The various examples set forth herein are described in terms of example block diagrams, flow charts and other illustrations. Those skilled in the art will appreciate that the illustrated examples and their various alternatives can be implemented without confinement to the illustrated examples. For example, block diagrams and their accompanying description should not be construed as mandating a particular architecture or configuration.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US2014/040201 | 5/30/2014 | WO | 00 |
Publishing Document | Publishing Date | Country | Kind |
---|---|---|---|
WO2015/183303 | 12/3/2015 | WO | A |
Number | Name | Date | Kind |
---|---|---|---|
6049476 | Laudon et al. | Apr 2000 | A |
9280497 | Berke | Mar 2016 | B2 |
20020108015 | Lai et al. | Aug 2002 | A1 |
20050289399 | Kimura | Dec 2005 | A1 |
20060044860 | Kinsley et al. | Mar 2006 | A1 |
20080126690 | Rajan | May 2008 | A1 |
20080294951 | Ahmad et al. | Nov 2008 | A1 |
20100325383 | Karamcheti et al. | Dec 2010 | A1 |
20110246712 | Vergis et al. | Oct 2011 | A1 |
20120072666 | Deleris | Mar 2012 | A1 |
20140075250 | Katayama | Mar 2014 | A1 |
Entry |
---|
Huang, Y. et al., “HMTT: A Hybrid Hardware/Software Tracing System for Bridging the DRAM Access Trace's Semantic Gap”, (Research Paper), Oct. 19, 2013, 25 pages. |
PCT Search Report/Written Opinion, Application No. PCT/US2014/040201 dated Feb. 4, 2015, 10 pages. |
Number | Date | Country | |
---|---|---|---|
20170199831 A1 | Jul 2017 | US |