This invention relates generally to computer memory systems, and more particularly to test, initial bring-up, characterization and validation of a memory subsystem designed for use in a high-speed, high-reliability cascade interconnect memory system.
Contemporary high performance computing memory systems are generally composed of one or more dynamic random access memory (DRAM) devices, which are connected to one or more processors via one or more memory control elements. Overall computer system performance is affected by each of the key elements of the computer structure, including the performance/structure of the processor(s), any memory cache(s), the input/output (I/O) subsystem(s), the efficiency of the memory control function(s), the main memory device(s), and the type and structure of the memory interconnect interface(s).
Extensive research and development efforts are invested by the industry, on an ongoing basis, to create improved and/or innovative solutions to maximizing overall system performance and density by improving the memory system/subsystem design and/or structure. High-availability systems present further challenges as related to overall system reliability due to customer expectations that new computer systems will markedly surpass existing systems in regard to mean-time-between-failure (MTBF), in addition to offering additional functions, increased performance, reduced latency, increased storage, lower operating costs, etc. Other frequent customer requirements further exacerbate the memory system design challenges, and include such items as ease of upgrade and reduced system environmental impact (such as space, power and cooling).
As computer memory systems increase in performance and density, new challenges continue to arise which add significant levels of difficulty and increase the time required for initial bring-up, characterization and/or design validation of one or more memory system elements (e.g., high speed interface(s), hub device functionality, buffered memory modules, memory device interface(s), etc). Higher DRAM operating frequencies, especially when coupled to intermediary devices such as hub devices, buffer devices, register devices, etc via high speed bus(es) may prevent use of conventional test equipment to characterize memory systems and subsystems during both tester-based and system bring-up and operation—as the high speed bus(es) and memory device interfaces may not properly transfer information when known probing methods are used within the subsystem and/or system environment(s). In addition, traditional hardware and software diagnostic methods may also be of limited value given the complexity and large number of operations performed during bring-up and initial memory operations—including such operations as power supply activation (often with varying voltage ramp rates), power supply sequencing (e.g., the time relationship between and relative ramp rates of the various voltages utilized by the memory system), capture of initial subsystem characteristics (e.g., via Serial Presence Detects or other methods) by the controller or test environment, device reset operations, initial communications over untrained high speed bus(es), completion of the training of high speed bus(es), device initialization(s), determination of appropriate values and the setting of initial device configuration information for all programmable devices, the completion of initial diagnostics to attached device(s), etc. With the breadth of tasks involved in initial bring-up of the memory subsystem separately and/or within the memory system environment, the addition of tight timing margins and small signal swings further challenge traditional test and software diagnostic methods for analyzing and reporting fault and/or marginal operational conditions and will generally result in far too much data and limited “root-cause” failure indications—thereby dramatically increasing and complicating the time and effort required to complete initial bring-up, characterization and design validation of new memory structures under the range of operating conditions for which the memory structures are intended to reliably function.
An exemplary embodiment is a memory hub device with test logic. The memory hub device is configured to communicate with memory devices via multiple hub device ports. The memory hub device is also configured to communicate on one or more busses in an upstream and downstream direction. The test logic includes a built-in self test apparatus providing logic to simultaneously and independently test the memory devices interfaced to one or more of the hub device ports using read and write data patterns. The test logic also includes configuration registers to hold fault and diagnostic information, and to initiate one or more tests. The memory hub device may further include command collision detection logic, a trace array, buffer transmit mode logic, trigger logic, clock adjustment logic, transparent mode logic, and a configured command sequencer, as well as additional features described in greater detail herein.
Another exemplary embodiment is a method of testing an enhanced cascade interconnected memory system. The method includes receiving one or more commands at a memory hub device from one or more of: a downstream bus, an upstream bus, and a service interface. The method further includes configuring one or more configuration registers to initiate one or more tests in response to the one or more commands. The one or more commands may target one or more of: memory devices interfaced to two or more hub device ports of the memory hub device as one or more of simultaneous and independent tests, a downstream memory hub device cascade interconnected to the downstream bus, and an upstream memory hub device cascade interconnected to the upstream bus. The method also includes reporting one or more results of the one or more tests.
A further exemplary embodiment is a memory hub device with test logic. The memory hub device is configured to communicate with memory devices via multiple hub device ports. The memory hub device is also configured to communicate on one or more busses in an upstream and downstream direction. The test logic includes a configured command sequencer to launch an architected command to a target device configurable between local execution of the architected command at the memory hub device and remote execution at one or more of: a downstream memory hub device and an upstream memory hub device. The memory hub device further includes configuration registers to hold fault and diagnostic information, and to initiate one or more tests.
An additional exemplary embodiment is a design structure tangibly embodied in a machine-readable medium for designing, manufacturing, or testing an integrated circuit. The design structure includes a configured command sequencer to launch an architected command to a target device configurable between local execution of the architected command at a memory hub device and remote execution at one or more of: a downstream memory hub device and an upstream memory hub device. The design structure further includes and configuration registers to hold fault and diagnostic information, and to initiate one or more tests.
Other systems, methods, apparatuses, and/or design structures according to embodiments will be or become apparent to one with skill in the art upon review of the following drawings and detailed description. It is intended that all such additional systems, methods, apparatuses, and/or design structures be included within this description, be within the scope of the present invention, and be protected by the accompanying claims.
Referring now to the drawings wherein like elements are numbered alike in the several FIGURES:
The invention as described herein provides for the test, bring-up, initial characterization and/or functional validation of a memory system supporting enhanced cascade interconnections. Interposing a memory hub device as a memory interface device between a memory controller and memory devices enables a flexible high-speed operation and communication protocol with error detection to be implemented. Efficiency gains may be achieved by the intermixing of command and data streams instead of utilizing a fixed bandwidth allocation between commands and data. The protocol allows a high-speed memory channel to operate at one or more fixed frequencies, which are a variable multiple of the memory device clock frequency. Flexibility is increased by using variable frame formats to maximize utilization of available communication bandwidth at a selected ratio between the high-speed bus and memory device clock frequencies. Multiple memory hub devices can be cascade interconnected and/or connected via other means such as a multi-drop net to expand system capacity. Each memory hub device can support one or more memory subsystem configurations using multiple ports. For example, the ports of a memory hub device can be configured to interface directly with one or more ranks of memory devices directly connected to the hub device and/or connected by way of connectors to separate assemblies comprised of memory devices (e.g. Unbuffered DIMMs (UDIMMs)), registers and memory devices of industry-standard registered dual in-line memory modules (RDIMMs) and other module types. Moreover, memory hub devices can be attached to a system board (e.g. a system planar), a card assembly and/or integrated on memory module (e.g., a single or dual-sided DIMM). The memory hub devices may also support dynamic sparing to switch out one or more failed segments included in various communication busses.
To support testing during normal power-up, as well as in a lab environment (e.g., bring-up and debug from initial design prototypes to final products), memory hub devices can include and employ a variety of testing and debug features. In an exemplary embodiment, a memory hub device includes test logic and storage, such as: memory built-in self test (MBIST), a configured command sequencer (CCS), command collision detection (CCD) logic, a trace array, trigger logic, transparent mode logic, logic analyzer interface (LAI) mode logic, configuration registers, and buffer transmit mode (BTM) logic. The memory hub device also includes various communication and control interfaces to access memory devices (e.g., DRAMs), a memory controller and other memory hub devices, as well as interfacing with test and service equipment. Further details are provided herein.
Turning now to
In the example of
The memory channel 102 carries information to and from a memory controller 110 in host processing system 112. The memory channel 102 may transfer data at rates upwards of 6.4 Gigabits per second per pin. The hub control logic 113 in the memory hub device 104 can translate the information from a high-speed reduced pin count bus 114 which enables communication to and from the memory controller 110 of the host processing system 112 to lower speed, wide, bidirectional ports A 105 and B 106 to support low-cost industry standard memory, thus the memory hub device 104 and the memory controller 110 may both be generically referred to as communication interface devices or memory interface devices. The exemplary bus 114 includes downstream link segments 116 and upstream link segments 118 as unidirectional links between devices in communication over the bus 114. The term “downstream” indicates that the data is moving from the host processing system 112 to the memory devices 509 of the UDIMMs 108 and/or RDIMMs 109. The term “upstream” refers to data moving from the memory devices 509 of the UDIMMs 108 and/or RDIMMs 109 to the host processing system 112. The information stream coming from the host processing system 112 can include a mixture of information such as address(es), controls, commands and data to be stored in the UDIMMs 108 and/or RDIMMs 109 as well as redundancy information (e.g., ECC, parity, CRC and/or other information) which allows for reliable transfers. The information returning to the host processing system 112 can include data retrieved from the memory devices 509 on the UDIMMs 108 and/or RDIMMs 109 as well as redundant information for reliable transfers, error information, status information and/or other information requested by and/or of interest to the host processing system. Information such as address, commands and data can be initiated in the host processing system 112 using processing elements known in the art, such as one or more processors 120 and cache memory 122. The memory hub device 104 can also include additional communication interfaces, for instance, a service interface 124 to initiate special test modes of operation and/or to send and/or receive error, status and/or other information that may assist in configuring, testing and diagnosing the memory hub device 104 and/or attached memory modules, devices, interfaces, etc. via test logic 126. The test logic may also be responsive to addresses, commands, controls and/or data received on link interface 125 that handles communications on the bus 114. The memory hub device 104 also includes clock adjust logic 128 to control clocking ratios between the high-speed communications of bus 114 and (generally but not limited to) slower communications via ports A 105 and B 106.
In an exemplary embodiment, the memory controller 110 has a very wide, high bandwidth connection to one or more processing cores of the processor 120 and cache memory 122. This enables the memory controller 110 to initiate and/or monitor both actual and predicted future data requests to the memory channel 102. Based on the current and predicted processor 120 and cache memory 122 activity, the memory controller 110 determines a sequence of commands to best utilize the attached memory resources to service the demands of the processor 120 and cache memory 122. This stream of commands, addresses and/or controls are mixed together with data that is written to the memory devices 509 in units called “frames”. The memory hub device 104 receives and interprets the frames as formatted by the memory controller 110, translating and/or converting the contents of the frames into a format compatible with attached memory devices and/or memory modules such as UDIMMs 108 and/or RDIMMs 109.
Although only a single memory channel 102 is depicted in detail in
In one embodiment, one or more segment(s) comprising one of the spare bitlanes can be used to replace one or more failing data and/or clock segment(s), while one or more segment(s) comprising a second spare bitlane is used to repair one or more data segment(s) but not a clock link. The existence of the spare bitlane(s), in conjunction with the ability to apply single segment(s) comprising a spare bitlane to replace one or more failing device-to-device interconnect(s) comprising the upstream and downstream buses maximizes the ability to survive multiple interconnect failures (such as intermittent and/or hard failures), while continuing to retain the initial communication bandwidth and/or communication fault tolerance. Additionally, when not used to replace defective segment(s) in the upstream and/or downstream bus(es), one or more of the spare lanes can be used to test for transient failures or be operated and monitored to determine bit error rates on the bus(es) e.g. by mirroring the signals on a known bit lane onto a spare bit lane and comparing the information at a receiving hub device and/or memory controller to determine if the received information is the same or different. In an exemplary embodiment, the spare lane(s) are tested and aligned during initialization but are deactivated during normal run-time operation (e.g., to reduce system power consumption). In a further exemplary embodiment the channel frame format, error detection capability and communication protocols are the same before and after the invocation of one or more spare bit segments. The link interface 125 can be used to manage bitlane selection and the flow of information on the bus 114.
In order to allow larger memory configurations than could be achieved with the pins available on a single memory controller 110, the memory channel structure and protocol implemented in the memory system 100 allows for the memory hub devices to be cascaded together. Memory hub device 104 contains buffer elements in the downstream and upstream directions to enable the re-driving of data at each hub device 104, thereby minimizing bus loading and maximizing the data rate on the high-speed memory channel 102 to and from the host processing system 112. In order to optimize bandwidth to and from the host 112, it is desirable to have greater bandwidth capabilities on the attached UDIMMs 108 and RDIMMs 109 (and/or other memory device interconnect means) than can be handled by the high-speed memory channel 102. This allows the memory controller 110 to efficiently schedule traffic on the high-speed memory channel 102 by selecting from a pool of resources. It also introduces the need for flow control of the data returning on the upstream links 118 to maximize the use of the available bus bandwidth(s). In an exemplary embodiment, this flow control is achieved by the proper selection and scheduling of commands transmitted on the downstream links 116 through downstream transmission logic (DS Tx) 202 of
Exemplary memory hub devices 104 include support for the separate, out-of-band, service interface 124, as depicted in
In an exemplary embodiment, each service interface 124 selectively operates in one or both of ‘field replaceable unit service interface’ (FSI) and joint test action group (JTAG) modes. The FSI mode may be used during run-time, providing higher data rates and redundant, 2 wire interfaces for increased reliability. The JTAG mode is well adapted to provide bring-up and manufacturing test support but may also be used at other times. The service bus 216 may include a configuration indicator to identify the mode of operation and allow remapping the signals comprising the service bus 216 for each mode. Remapping signals to enable operation of each mode reduces the total pin count required for the service bus 216 to allow the operation of each of the service interfaces supported by block 124.
The MBIST apparatus 401 provides the capability to read and/or write different types of data patterns to specified memory locations locally attached to the hub device 104 and/or attached to one or more memory modules attached to the hub device and/or attached to hub devices located upstream and/or downstream to the MBIST apparatus 401, for the purpose of detecting faults that may exist in the memory system 100. The exemplary MBIST apparatus 401 receives information in response to read requests and detects these faults, reports failing locations and data bit positions, and assists in isolating failing memory devices, e.g., memory devices 509 of memory modules 108 and/or of RDIMMs 109, hub devices 104 and/or segments 116 and 118 located within the memory system 100. The CCS 404 enables users to assemble instructions (e.g., up to 16 instructions) using architected mainline or maintenance commands to create lab and/or system test floor debug routines external to the memory hub device 104 (e.g., by way of memory controller 110 or test equipment 214 of
The trace array 408 supports trace modes to aid in problem debug and lab diagnostics—storing data in response to pre-programmed trigger events, such as events detected by trigger logic 429. The trace array 408 can capture high-speed bus 114 and/or memory device interface information (e.g., one or more of upstream and/or downstream packets, memory device address, command, control and/or data, etc.) for external evaluation. The trigger logic 429 may also provide an observation point for one or more internal signals of the memory hub device 104 and/or one or more signals of ports A 105 and B 106, including internal clocks.
The transparent mode logic 410 allows access to the memory devices 509 of
The LAI mode logic 412 enables observation of high-speed activity on bus 114 using an external data capture and viewing device such as a logic analyzer. In an exemplary embodiment, when LAI mode is active, the memory hub device 104 echoes the signals it samples and re-drives all or a portion of the signals from the controller interfaces onto the memory interface signals. The echoed signals are descrambled and may be repaired by lane sparing. In an exemplary embodiment, a 4:1 gear ratio may be established via the clock adjust logic 128 to de-serialize the memory channel signals resulting in slower transitions and capture requirements on the logic analyzer (e.g., allowing the use of lower cost and/or more readily available logic analyzers). Along with the upstream and downstream signals, the memory hub device 104 can output information from the clock adjustment logic 128 (e.g., to indicate the downstream block number currently being observed).
The MBIST apparatus 401 also includes an MBIST finite state machine (FSM) 520 that provides logic for controlling the command sequencing, data/address incrementing, refresh interrupts, and subtest pointer increments. Further, the exemplary MBIST FSM 520 implements entry/exit logic for initiating and/or exiting self-timed refresh in memory devices which it is in communication with in an automated manner. Also, the MBIST FSM 520 includes a command generator that enables for the detection of many possible signal coupling faults and/or noise-generated faults. Command resource allocation logic is provided via a command scheduler 527 and is also included in the MBIST apparatus 401 for removing command overlaps and/or ensuring that such invalid command overlaps do not occur, as well as optimizing command spacing to memory to maximize useable bus and/or device bandwidths. This is described further herein. Additionally, the MBIST apparatus 401 contains a test memory 525 for storing subtests. In an exemplary embodiment, each subtest contains information about the subtest type, subcommand complement, address mode, data mode, and a “done” (e.g., “completion”) bit. These elements allow for multiple passes through memory without a need to reload registers, as described further herein. The MBIST apparatus 401 further implements: Refresh interrupt logic 528, Stop on Error after subtest completed (configurable), Break after subtest completed (configurable), and communicates with trigger logic 429. These implementations are described further herein.
A single exemplary subtest refers to a full march through a configured address range. The MBIST apparatus 401 allows for multiple subtests during a single MBIST test of the memory array. Any number of subtests may be configured to run in a single MBIST test. The MBIST FSM 520 controls the sequencing of the MBIST subtests by incrementing subtest pointer 530 when a subtest is completed.
Some subtests support more than one memory read/write combination per address. Each command per address is called a subcommand. For example, during a read—write—write subtest, each address will receive a read, write, write command sequence before the MBIST FSM 520 increments the address. Each subcommand has an associated data pattern, and this pattern may be programmed to be complemented via the subtest memory 525. This allows for marches through memory that can detect signal and/or internal device coupling faults. In an exemplary embodiment, subtests that contain multiple subcommands are executed with a single Bank Activate command which is then followed by the appropriate Write or Read commands with the bank left open until the final subcommand is executed—at which time an auto-precharge is issued to the open bank. This embodiment may assist in decreasing test time, although subcommands may also each be followed by an auto-precharge, or implemented using some other combination of operations and pre-charge(s), based on the test objectives.
An added looping mechanism provided by the MBIST FSM 520 enables a user to program infinite subtest loops. This feature may be used for burn-in tests, the capture and diagnosis of intermittent failures and/or other debug tests.
A refresh only subtest may be used test the memory retention capabilities of the memory devices 509 under test. This subtest can continuously refresh memory at one or more defined refresh rate(s) until a Break After Subtest bit is written—at which time the testing completes. Other elements illustrated in
Turning now to
If the ports A 105 and B 106 are not configured in self timed refresh mode, the FSM 520 automatically skips to the read the subtest memory state 609 to fetch the current subtest and then proceeds to the subtest reset state 610, the FSM 520 resets the address generators 512 and 514, and the data generator 516. The FSM 520 then jumps to one of the subtest type branches 612-624, depending on which subtest is being run. Branch 626 refers to the refresh interrupt state.
Upon exiting the branches 612-622, the address is incremented and checked to make sure it is not the last address of the current subtest. If the address is not the last address, then the next command is issued by going back to branches 612-622, depending upon the current subtest (if the subtest is Refresh Only 624, a Break on subtest bit is checked to see if testing should end). If the last address has been detected the FSM 520 waits for all current resource timers to timeout 632 and then checks for the last subtest 634. If the last subtest has been reached, FSM 520 exits testing by refreshing all the active ranks 636, and then issuing an enter self timed refresh command 638 to all the enabled ranks of both ports A 105 and B 106. If the last address has been detected, and the current subtest is not the last subtest, then the FSM 520 increments the subtest pointer 530 at state 634, and moves to the read subtest memory state 609 to get the next subtest type (e.g., one of subtest types 612-624), and begins the sequence all over again for the next subtest, until the last subtest is completed.
Subtest types enabled by the MBIST apparatus 401 are defined, but not limited to, the types described below and are used during run-time. The options in parentheses refer to dynamic variables. Configurations are static.
To use Random Command mode, in an exemplary embodiment, a data background with ECC is written to the memory under test in advance. The data mode is programmed to be random data with valid ECC. A linear feedback shift register (LFSR) may be used to create the random read/write commands, with a configurable weighting distribution. In an exemplary embodiment, each subcommand in a subtest will have the programmable setting of reading/writing the complement of the defined data phase.
In addition, another outer loop to an MBIST test may be specified where one or more hub and/or memory device settings and/or configurations are altered (e.g., based on MBIST configuration 526 of
Turning now to
If Subtest(0:2)=111 and Subtest(8:10)=000, then this is a Goto command and Subtest Addr—3:7 specifies which subtest address to change to (used for looping). If Subtest(0:2)=111 and Subtest(8:10)/=000, then this is a Refresh Only command.
For all other decodes of Subtest Type(0:2), the following definitions may be used.
As indicated above in
The MBIST apparatus 401 may automatically take the memory devices 509 out of STR state, if currently in that state. Break after subtest is supported and the MBIST apparatus 401 may be interrupted while it is in loop mode—with the MBIST apparatus 401 exiting the subtest after the current subtest has completed. Break after subtest is also used to stop a Refresh Only subtest. The MBIST apparatus 401 my also support Stop on Error after subtest completed. If a corresponding bit is set before issuing the command to initiate the MBIST testing, then when an error is detected, the MBIST FSM 520 exits the subtest after the current subtest is completed.
Refreshes may be generated every refresh interval (reflnt) via a configurable interrupt timer component of the refresh interrupt logic 528. Refreshes to separate ranks accessed via either port A 105 or port B 106 may also be enabled and disabled via a configuration register (e.g., MBIST configuration 526). In an exemplary embodiment, refreshes are sent out only after the completion of all commands to a particular address, and the rank is then reserved for a time of tRFC before new read and write commands are sent to the particular rank.
In an exemplary embodiment, refresh features may include the following:
As indicated above, the MBIST apparatus 401 provides resource scheduling. Dynamic command scheduling controls the command spacing—e.g., due to changing memory address locations during testing. The command scheduler 527 ensures that the command will not violate timing parameters of memory devices and/or modules attached to ports A 105 and B 106. If a command cannot be issued in the current cycle due to a busy resource on either or both of ports A 105 or B 106, then the command may be held until the next cycle and a logical determination made to see if the command can be issued at that time. A minimum command gap parameter may also be programmed, such that all commands are spaced greater than the specified minimum gap. This may be useful for debug as well as for throttling the command generator of the FSM 520 to slow command generation rates (e.g., increase command spacings). To achieve the highest command generation rate (e.g., the smallest valid command spacings), the addressing may be set such that the address does not access the same bank when the address is incremented. Configuration bits have been included to enable memory command spacing circuitry to wait a programmed fixed number of cycles between bank activate commands or to randomly wait (based on a programmable seed) from 1-1023 cycles, with configuration bits supplied to weigh the wait time from 1-1023 cycles, 1-511 cycles, 1-255 cycles or 1-127 cycles. Two random variables can be used when the command spacing is not fixed. The first random variable generates wait cycles from 1-128 cycles. The second random variable is used to multiply the generated wait cycles by 1 to 8. A value of 1 may be subtracted from the final result. This double random command spacing may be very useful in stressing system power delivery.
Dynamic resource scheduling of the MBIST apparatus 401 provides an accurate model ofthe stresses memory controller 110 may put on accesses to the memory devices 509. Timing between commands is subject to memory timing parameters and resource allocation constraints. In an exemplary embodiment, commands may not be reordered with respect to when the bank activate command is sent out to the memory devices 509 via ports A 105 and B 106. In addition, data may not be reordered. If a command occurs, the next command in the stream does not utilize the data bus until the previous command releases the data bus. Configuration bits are provided and sampled by the address generators 512 and 514 to determine how many memory ranks are configured on each port (e.g., how many device ranks, UDIMM ranks 108 and/or RDIMM ranks 109). In an exemplary embodiment, the subtest memory 525 can be loaded with up to 32 subtests that are to be executed, although other embodiments may include more or less subtests. Operations shown as RW, WR, RWR and RWW are two or more subcommands (operations) completed to a common row in a bank of memory—in this case there is no memory device precharge completed between the specified reads (R) or writes (W). The row or page is kept open and commands (e.g., reads and writes) are executed as fast as the timing parameters for the memory devices 509 allow. As previously described, configuration bits are also supplied to throttle back the speed at which commands are issued, if a larger command-to-command spacing is desired. Testing starts when the FSM 520 senses that the start MBIST bit has been activated. In an exemplary embodiment, the logic senses the configuration, density and/or type of memory devices and/or modules attached to the ports A 105 and B 106 and issues appropriate commands (if required) to exit from self-timed refresh. In an exemplary embodiment, all populated ranks of the memory devices 509 are refreshed in a staggered pattern with corresponding ranks of memory attached to ports A 105 and B 106 refreshed at the same time. FSM 520 reads the first subtest from the subtest memory 525 and signals the address generators 512 and 514 to start generating addresses, next address 531 of
Commands may be sent out on the ports A 105 and B 106 by the command generator 523, starting with a bank activate row address strobe (RAS) command with it's subsequent column address strobe (CAS) command placed in a queue with a wait value this is calculated based on additive latency (AL) and active to internal read or write delay time (tRCD). When the wait value decrements to zero, the CAS command is issued if no other possible bus collisions are detected and no other timing parameters can be violated. Since the CAS commands can have several cycles of wait time, additional RAS commands for other addresses can be sent out before any given CAS command is issued on ports A 105 and B 106. The hardware further checks to make sure RAS commands aren't violating timings such as active-to-active command period for a 1 KB page (tRRD) and four bank activate window (tFAW). The command scheduler 527 may ensure that the CAS commands do not violate other timing parameters or basic data bus collisions. When modules are configured on ports A 105 and B 106, the command scheduler 527 can determine the extreme allowable command spacings and timing parameters to ensure that they are not intentionally violated. An example of this is an addressing mismatch between memory attached to ports A 105 and B 106, where different device densities and/or ranks are accessed on each port—which can result in the need to wait multiple cycles between commands issued on the ports to prevent command collisions and/or timing violations. An auto precharge may be issued with the last associated CAS command of a previous RAS command (bank activate). This may be done to allow for situations were the various memory devices 509 do not have the same number of column address bits.
By way of illustration, the following resources may be managed by the MBIST apparatus 401. The number and type of resources may change depending upon the application and memory interface topology. It will be understood by those skilled in the art that any number and type of resources may be utilized. The following listing is for illustrative purposes and is not to be construed as limiting in scope: ranks, banks, data bus, command busses, data bus turnaround resources, four bank activate window (tFAW) resources, and minimum command gap resources.
Resource scheduling of resources (e.g., rank, bank, data bus, etc.) will now be described. To schedule a resource, the exemplary command scheduler 527 of
During normal operation of the memory hub device 104, the command scheduler 527 may be put in a mode to snoop an incoming command stream 540 of
In an exemplary embodiment, the MBIST apparatus 401 internally generates commands in the same format as commands that are sent to the memory hub device 104 from the memory controller 110 via the link interface 125. Commands supported by the MBIST apparatus 401 may include but are not limited to: Bank activate with column read, Bank activate with column write, Write to Buffer, Refresh, Self Refresh, and Idle.
In an exemplary embodiment, there are four addressing modes supported by the MBIST apparatus 401: Sequential forward and reverse addressing and random forward and reverse addressing. For sequential and random addressing modes, a starting and ending address may be configured. In one MBIST test run, one or both of random address and sequential address tests may be performed. During reverse address sequences, the address generator starts from the end address and decrements to the start address, at which time the current subtest ends, and the MBIST apparatus 401 jumps to the next subtest. For random addressing, the user may define a fixed address width and select a configurable LFSR mask such that random patterns can be generated for different sized address ranges. Addressing may begin from an address other than the first or last address within a range.
The MBIST apparatus 401 also includes support for varying memory device addressing (e.g., different device densities), on a per-port basis. This addressing support may include: two (or more) independent address generators (e.g., one or more per port), further extendable to permit the addressing for different density modules installed in multiple sockets (e.g., as depicted in
Further, in order to support alternating between different sized modules, such as memory modules 108 and/or memory modules 109 of
Support for multiple memory device densities (e.g., multiple device generation(s)) may further include (e.g., on a per port A 105/B 106 basis):
Turning now to
Address values 908 and 930 may be comprised of bit fields identifying the memory rank, bank, row, and column address(es) that are remapped as part of the MBIST testing. For example, rank address bits may serve as chip selects to the memory devices 509 via ports A 105 and B 106. Column bits 9:0 of address values 908 and 930 may map to column address bits 13, 11 and 9:2 for the memory devices 509, with column address bits 12 and 2:0 controlled differently, as previously described. Column address bit 10 may be an auto-precharge bit that FSM 520 controls to precharge a bank of memory.
Data mode features that are supported by the MBIST apparatus 401 of
Random Data and Address with ECC—this data mode feature may allow for random data and address, with valid check bits also generated and stored. This mode is useful for random command sequence mode; however, any command sequence mode may be used with this data mode as the data being read back is validated using the ECC check bits that were stored during the write operation.
As indicated above, the MBIST apparatus 401 also provides for error reporting features. When a failure is detected via checking logic 508 and 510, the exemplary MBIST apparatus 401 includes three mechanisms that may be used to record the failure: detailed error logs 533 and 543, error maps 534 and 544, and byte lane error counters 535 and 545. A register array may also be used to store the data when an error occurs. When an error occurs, the following information is stored in the exemplary error logs 533 and 543:
The error maps 534 and 544 refer to an array used in determining which memory devices 509 and/or modules failed during an MBIST test. Byte lane error counters 535 and 545 can count the number of fails that occurred on a byte lane. A user may reset the error logs 533 and 543, error counters 535 and 545, error maps 534 and 544 and status registers 541 and 551 after the full MBIST test is completed, e.g., by writing a configuration bit.
Features of status register 541 and 551 may include: CE (correctable error) Detected (ECC mode only); UE (uncorrectable error) Detected (ECC mode only); Error Trap Overflow; and Current Subtest Pointer. In accordance with an exemplary embodiment, the MBIST apparatus 401 completes even if a fail is detected, unless a stop on error configuration bit is set. If a fail occurs during MBIST operation, the trigger on fail logic 529 may be programmed to send an output pulse off chip for detection by external test equipment. This function enables test equipment, such as network analyzers and/or oscilloscopes, to capture fail data (e.g., due to memory device fails and/or interconnect signals) to facilitate the debug and root cause analysis of these fails.
Returning to
Returning to
At block 1104, the memory hub device 104 configures one or more configuration registers (e.g., configuration registers 414) to initiate one or more tests in response to the one or more commands. The one or more commands can target memory devices 509 interfaced to two or more hub device ports (e.g., port A 105 and port B 106) of the memory hub device 104 as simultaneous and/or independent tests. The one or more commands may target a downstream memory hub device cascade interconnected to the downstream bus, such as on DIMM 503c with respect to DIMM 503b of
At block 1106, upon running the one or more tests, one or more test results are reported. The results can include basic status indicators captured in the configuration registers 414 and/or status registers 541 and 551. The results may also include more detailed information captured in the trace array 408 and/or error logs 533 and 543. Reporting can be performed to the memory controller 110 via bus 114 or to test equipment 214 via the service interface 124. In an alternate embodiment, remapping of defined signals of the downstream and/or upstream bus is performed as part of the reporting, which can provide visibility of otherwise inaccessible signals.
Design process 1410 preferably employs and incorporates hardware and/or software modules for synthesizing, translating, or otherwise processing a design/simulation functional equivalent of the components, circuits, devices, or logic structures shown in
Design process 1410 may include hardware and software modules for processing a variety of input data structure types including netlist 1480. Such data structure types may reside, for example, within library elements 1430 and include a set of commonly used elements, circuits, and devices, including models, layouts, and symbolic representations, for a given manufacturing technology (e.g., different technology nodes, 32 nm, 45 nm, 90 nm, etc.). The data structure types may further include design specifications 1440, characterization data 1450, verification data 1460, design rules 1470, and test data files 1485 which may include input test patterns, output test results, and other testing information. Design process 1410 may further include, for example, standard mechanical design processes such as stress analysis, thermal analysis, mechanical event simulation, process simulation for operations such as casting, molding, and die press forming, etc. One of ordinary skill in the art of mechanical design can appreciate the extent of possible mechanical design tools and applications used in design process 1410 without deviating from the scope and spirit of the invention. Design process 1410 may also include modules for performing standard circuit design processes such as timing analysis, verification, design rule checking, place and route operations, etc.
Design process 1410 employs and incorporates logic and physical design tools such as HDL compilers and simulation model build tools to process design structure 1420 together with some or all ofthe depicted supporting data structures along with any additional mechanical design or data (if applicable), to generate a second design structure 1490. Design structure 1490 resides on a storage medium or programmable gate array in a data format used for the exchange of data of mechanical devices and structures (e.g. information stored in a IGES, DXF, Parasolid XT, JT, DRG, or any other suitable format for storing or rendering such mechanical design structures). Similar to design structure 1420, design structure 1490 preferably comprises one or more files, data structures, or other computer-encoded data or instructions that reside on transmission or data storage media and that when processed by an ECAD system generate a logically or otherwise functionally equivalent form of one or more of the embodiments of the invention shown in
Design structure 1490 may also employ a data format used for the exchange of layout data of integrated circuits and/or symbolic data format (e.g. information stored in a GDSII (GDS2), GL1, OASIS, map files, or any other suitable format for storing such design data structures). Design structure 1490 may comprise information such as, for example, symbolic data, map files, test data files, design content files, manufacturing data, layout parameters, wires, levels of metal, vias, shapes, data for routing through the manufacturing line, and any other data required by a manufacturer or other designer/developer to produce a device or structure as described above and shown in
The resulting integrated circuit chips can be distributed by the fabricator in raw wafer form (that is, as a single wafer that has multiple unpackaged chips), as a bare die, or in a packaged form. In the latter case the chip is mounted in a single chip package (such as a plastic carrier, with leads that are affixed to a motherboard or other higher level carrier) or in a multichip package (such as a ceramic carrier that has either or both surface interconnections or buried interconnections). In any case the chip is then integrated with other chips, discrete circuit elements, and/or other signal processing devices as part of either (a) an intermediate product, such as a motherboard, or (b) an end product. The end product can be any product that includes integrated circuit chips, ranging from toys and other low-end applications to advanced computer products having a display, a keyboard or other input device, and a central processor.
The capabilities of the present invention can be implemented in software, firmware, hardware or some combination thereof
As will be appreciated by one skilled in the art, the present invention may be embodied as a system, method or computer program product. Accordingly, the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, the present invention may take the form of a computer program product embodied in any tangible medium of expression having computer usable program code embodied in the medium.
Any combination of one or more computer usable or computer readable medium(s) may be utilized. The computer-usable or computer-readable medium may be, for example but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, or propagation medium. More specific examples (a non-exhaustive list) of the computer-readable medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CDROM), an optical storage device, a transmission media such as those supporting the Internet or an intranet, or a magnetic storage device. Note that the computer-usable or computer-readable medium could even be paper or another suitable medium upon which the program is printed, as the program can be electronically captured, via, for instance, optical scanning of the paper or other medium, then compiled, interpreted, or otherwise processed in a suitable manner, if necessary, and then stored in a computer memory. In the context of this document, a computer-usable or computer-readable medium may be any medium that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. The computer-usable medium may include a propagated data signal with the computer-usable program code embodied therewith, either in baseband or as part of a carrier wave. The computer usable program code may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc.
Computer program code for carrying out operations of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
The present invention is described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer-readable medium that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable medium produce an article of manufacture including instruction means which implement the function/act specified in the flowchart and/or block diagram block or blocks.
The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
Technical effects include the enablement and/or facilitation of test, initial bring-up, characterization and/or validation of a memory subsystem designed for use in a high-speed, high-reliability memory system. Test features may be integrated in a memory hub device capable of interfacing with a variety of memory devices that are directly attached to the hub device and/or included on one or more memory subsystems including UDIMMs and RDIMMs, with or without further buffering and/or registering of signals between the memory hub device and the memory devices. The test features reduce the time required for checking out and debugging the memory subsystem and in some cases, may provide the only known currently viable method for debugging intermittent and/or complex faults. Furthermore, the test features enable use of slower test equipment and provide for the checkout of system components without requiring all system elements to be present.
The diagrams depicted herein are just examples. There may be many variations to these diagrams or the steps (or operations) described therein without departing from the spirit ofthe invention. For instance, the steps may be performed in a differing order, or steps may be added, deleted or modified. All of these variations are considered a part of the claimed invention.
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof
The corresponding structures, materials, acts, and equivalents of all means or step plus function elements in the claims below are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description ofthe present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. The embodiment was chosen and described in order to best explain the principles of the invention and the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated. Moreover, the use of the terms first, second, etc. do not denote any order or importance, but rather the terms first, second, etc. are used to distinguish one element from another.