The described embodiments relate to systems and methods for assembling memory modules, and more specifically, systems and methods for assembling memory modules using a plurality of individual memory devices.
The memory capacity of memory devices has significantly increased in recent years. Corresponding to this increase in memory capacity is a greater likelihood for memory devices to be manufactured with defective memory cells or for at least some memory cells of the memory device to become defective through use. Any defective memory cell in a memory device may, to varying degrees, negatively affect the operation of a computing device or other device that may employ the memory device for data storage.
Error correction schemes may be used to deal with single-bit errors or multi-bit errors resulting from memory defects that are detected during the operation of a computing system. Other schemes for handling memory errors detected during the operation of a computing system are also known.
For example, U.S. Pat. No. 7,694,195 describes a method of managing memory defects. Defective memory locations are detected in a scan operation during the startup of a computer system, and the memory defect information is stored in a memory defect map. Subsequently, these defective memory locations may be skipped during normal operating procedures.
U.S. Pat. No. 7,783,919 further describes detecting and handling memory errors during execution of a run time environment within a computer system. If it is determined that a memory error has occurred, memory locations on individual memory devices where the memory error occurred may be identified, and references to these memory locations can be stored in a persistent memory of a memory module. Moreover, U.S. Patent Publication No. 2010/0251044 discloses generating a memory map, wherein usable memory regions containing defective memory elements are excluded from the memory map.
For a better understanding of embodiments of the systems and methods described herein, and to show more clearly how they may be carried into effect, reference will be made, by way of example, to the accompanying drawings in which:
a and 1b are block diagrams of a memory space in which at least one memory module is provided;
a and 5b are block diagrams illustrating a process of sorting tested memory devices in accordance with at least one example embodiment;
a and 11b are block diagrams of memory modules used for illustrating a method of assembling a memory module from tested memory devices in accordance with at least one example embodiment;
In contrast to methods and systems where defective memory locations on a memory device are identified using resources available on a computing system or other device that is employing the memory device while in operation, at least some embodiments described herein relate generally to systems and methods for managing defective memory devices during the testing and assembly of memory devices, which typically occurs prior to their actual use in the computing system where they are intended to be used.
By managing defective memory devices at the testing and assembly stage, this may provide greater control over the specific components used to assemble a memory module, for example.
By way of illustration, certain characteristics of memory devices may be determined from the testing results of each memory device or memory module. Example characteristics include the number of memory defects, and the locations of memory defects on the tested memory device or memory module.
Accordingly, when assembling a memory module from a plurality of memory devices that have been tested, a manufacturer is equipped with more information about each memory device, and may determine which tested memory devices are more suitable for a particular use, prior to their actual use. Memory defect data that is associated with a given memory device and obtained during testing may then be stored for future reference.
In particular, memory modules may be assembled from tested memory devices of which certain cells were determined to be defective. Information about the memory defects may be pre-loaded onto the memory modules before the memory modules are made available for use by a computing system. The computing system may, therefore, be made aware of the location of memory defects so that those locations may be skipped during operation, without the computing system itself having to devote resources to generate the memory defect data. The resources employed during the testing stage may also be more reliable in determining the memory defect data than the resources available on the computing system.
Furthermore, at least some embodiments herein may also allow memory devices that are not defect-free to nevertheless be used in the assembly of memory modules when they might otherwise be discarded after testing, for example.
In one broad aspect, there is provided a method of assembling memory modules, the method comprising: for each memory device of a plurality of memory devices, based on testing performed on the memory device, determining whether the memory device has any defective memory locations, and if the memory device has one or more defective memory locations, identifying the one or more defective memory locations, and generating data that identifies the one or more defective memory locations on the memory device; and assembling a memory module, the memory module comprising at least one memory device, of the plurality of memory devices, having one or more defective memory locations; wherein the assembling comprises, for each memory device of the memory module having one or more defective memory locations, storing the data that identifies the one or more defective memory locations on the memory device in a persistent store on the memory module.
In another broad aspect, the method further comprises selecting the at least one memory device from the plurality of memory devices for assembly into the memory module based on where the defective memory locations are located on each of the at least one memory device.
In another broad aspect, for each of the at least one memory device, the memory device is selected for assembly into the memory module if at least one of the defective memory locations on the memory device, and at least one of the defective memory locations on at least one different memory device of the at least one memory device, will belong to a same at least one memory block of the memory module after assembly of the memory module.
In another broad aspect, the persistent store on the memory module comprises a serial presence detect module.
In another broad aspect, the method further comprises: storing, for each memory device of the plurality of memory devices, the data that identifies the one or more defective memory locations on the memory device in a database; and retrieving, for each memory device of the memory module having one or more defective memory locations, the data that identifies the one or more defective memory locations on the memory device, from the database for storing in the persistent store on the memory module.
In another broad aspect, the method further comprises: generating, for each memory device of the plurality of memory devices, data that identifies details associated with the testing performed on the memory device; wherein assembling the memory module further comprises storing the data that identifies details associated with the testing performed on the memory device in the persistent store on the memory module.
In another broad aspect, the method further comprises: storing, for each memory device of the plurality of memory devices, the data that identifies the details associated with the testing performed on the memory device in a database; and retrieving, for each memory device of the memory module having one or more defective memory locations, the data that identifies the details associated with the testing performed on the memory device, from the database for storing in the persistent store on the memory module.
In another broad aspect, the details associated with the testing performed on the memory device comprise an identification of a test pattern that caused a failure of the memory device.
In another broad aspect, the memory module comprises at least one memory device having no defective memory locations.
In another broad aspect, each memory device of the memory module comprises the same number of defective memory locations.
In another broad aspect, each memory device of the memory module comprises exactly one defective memory location.
In another broad aspect, the memory module comprises eight memory devices.
In another broad aspect, the plurality of memory devices comprises eight or less defective memory locations, in total, amongst the plurality of memory devices.
In another broad aspect, the method further comprises testing each of the plurality of memory devices, wherein test vector patterns are utilized in the testing to determine defective memory locations on each of the plurality of memory devices.
In another broad aspect, the method further comprises retrieving the plurality of memory devices from a pool of tested memory devices.
In another broad aspect, the method further comprises sorting the plurality of memory devices into at least two groups prior to the retrieving, wherein memory devices having no defective memory locations are separated from the memory devices having one or more defective memory locations.
In another broad aspect, the sorting comprises separating the memory devices having one or more defective memory locations into at least one group associated with a pre-defined number of defective memory locations.
In another broad aspect, the sorting comprises separating the memory devices having a number of defective memory locations greater than a threshold value into a group, wherein memory devices having the number of defective memory locations greater than the threshold value are not used for assembling the memory module.
In another broad aspect, the sorting is performed with aid from a robotic device.
In another broad aspect, retrieving the plurality of memory devices from the pool of tested memory devices comprises selecting the plurality of memory devices from the pool of tested memory devices, such that all of the defective memory locations on the plurality of memory devices are located in a same at least one memory block.
In another broad aspect, the same at least one memory block is associated with at least one memory block address.
In another broad aspect, there is provided a system for testing and assembling memory modules, the system comprising: a tester, wherein the tester comprises a processor, and wherein the processor is configured to, for each memory device of a plurality of memory devices, based on testing performed on the memory device, determine whether the memory device has any defective memory locations, and if the memory device has one or more defective memory locations, identify the one or more defective memory locations, and generate data that identifies the one or more defective memory locations on the memory device; and wherein the system is further configured to assemble a memory module, the memory module comprising at least one memory device, of the plurality of memory devices, having one or more defective memory locations; wherein assembling the memory module comprises, for each memory device of the memory module having one or more defective memory locations, storing the data that identifies the one or more defective memory locations on the memory device in a persistent store on the memory module.
Reference is now made to
a illustrates a block diagram of a memory space 100, comprising multiple memory components that are capable of being addressed as memory. Examples of memory components may include memory modules 120, shown as dual inline memory modules (DIMMs) in the Figures by way of illustration only, and other memory mapped components 110. It will be understood by persons skilled in the art that memory modules other than DIMMs may be employed in variant embodiments. A memory space may comprise multiple memory modules, and/or other memory components, of a single type or of different types.
By way of illustration, memory space 100 may be subject to a memory scanning operation that scans the memory in each memory device to analyze all addressable memory locations in succession. In
In one known system, the memory scanning operation occurs during the startup of a computing system. The computing system may then create a memory map which excludes defective memory locations as determined from the memory scanning operation, or as determined from prior startup scans. Data identifying defective memory locations within a particular memory space may be stored in a persistent store on a memory module. The persistent store may be a Serial Presence Detect (SPD) device on the memory module, for example.
Continuing the example of
Reference is now made to
Memory module 200 may be scanned for memory errors. In one known system, a scan for memory errors is performed during the execution of a run time environment within a computer system. Memory locations on individual memory devices, such as one or more of MD1210, MD2215, MD3220, MD4225, MD5230, MD6235, MD7240 and MD8245, in which a memory error is detected, may be identified. Data identifying those memory locations can be stored in the persistent store 250 of the memory module 200. Memory locations in which a memory error is detected are also referred to herein as “defective” memory locations.
In accordance with at least one embodiment described herein, the data identifying defective memory locations 250 may originate from data stored in a database. The database may have been populated with data obtained during testing of memory devices prior to their assembly into memory modules for example, as discussed below.
Referring now to
Typically, memory devices are tested and certified by manufacturers to ensure that signal parameters are within an allowable range set by the manufacturer or by corresponding appropriate standards. Complete testing of a memory device may include both functional testing as well as application-specific testing.
Specific to memory devices, functional testing generally tests whether or not a memory device performs particular functions properly and meets the manufacturer's specifications. For example, functional testing may test whether or not a digital value written to a cell of memory will later be retrieved without error, regardless of how the memory device is implemented. More specifically, memory devices may be subject to pattern testing, which is a method of exercising each memory device to verify its functionality with regards to certain test vector patterns.
Functional testing may also test whether or not certain critical operating characteristics of a memory device fall within an allowable range of values. Parametric tests verify critical operating characteristics, including characteristics such as, for example, power consumption, standby current, leakage current, voltage levels and access time. The allowable range may be set by the manufacturer of the memory device or by the corresponding appropriate standards.
While functional testing is generally oriented towards discovering whether or not a memory device under test is likely to fail during its intended use or application, it typically involves testing memory devices to verify how they execute a specific set of functions that are specially designed for this purpose.
Further testing of a memory device may also involve application-specific testing. During application-specific testing, memory devices may be subject to a testing of their system behavior in order to detect their behavioral failures. Behavioral failure is a type of failure that occurs when a memory device is operated within an actual application system. For example, a behavioral failure may be a failure that occurs as a result of a specific command or access sequence to a memory device that is performed in regular operations on a personal computer (PC).
Functional testing will not necessarily detect behavioral failures. With functional testing, the operation of a memory device under test does not need to be indicative of how the device will behave during its intended application. Accordingly, complete and comprehensive testing of a memory device may require application-specific testing in addition to functional testing.
Referring again to
The tester 410 may include, for example, a program memory (PM) 450, a comparator 460, a test vector pattern generator (TVPG) 480, a controller (Contr) 490, a control computer (CC) 494, and a microprocessor (mP) 495. In practice, the functions of some of the elements shown logically in
Only certain electrical connections between the various components of the tester 410 and of the test system 400 are illustrated, for ease of exposition. However, it will be understood by persons skilled in the art that the tester 410 and/or test system 400 may include components or connections in addition to or as an alternative to one or more of the components or connections shown in
In the example of
In
In at least one embodiment, the tester 410 and the handler 415 co-operate with each other during testing of the DUT 420. Each of the tester 410 and the handler 415 may be equipped with a control computer or other processing element (e.g. 494 and 416, respectively) configured, at least, to communicate test results. For example, the handler 415 may first load (by a mechanical means 417, such as for example, a robotic device) the DUT 420 into a testing unit (not shown) of the tester 410 to facilitate testing. The tester 410 performs testing on the DUT 420. Test results are processed by control computer (CC) 494. The control computer 494 in the tester may then send the test results to a control computer 416 in the handler, for example, via the interface 412. Based on the received test results, the control computer 416 in the handler may then determine where to physically move the tested memory device from the testing unit.
Some example operations of the tester 410 in relation to the DUT 420 are described in the paragraphs below. For example, testing may be performed on each individual memory cell of the memory device 430 so that if a given individual memory cell is determined to be defective (e.g. the memory cell failed a test carried out by the test system 400), its corresponding memory location may be identified.
To perform testing on the DUT 420, the microprocessor 495 may retrieve an instruction or instructions from the program memory 450. In response, the microprocessor 495 may instruct the TVPG 480 to generate a digital representation of a test vector pattern, which is then sent by the TVPG 480 to the controller 490. The test vector pattern may be utilized in the testing to determine defective memory locations on the DUT 420, which, in this example, is the memory device 430. Alternatively, the DUT 420 may comprise a plurality of memory devices.
Upon receipt of the test vector pattern generated by the TVPG 480, the controller 490 converts the test vector pattern into an electrical waveform. The controller 490 then outputs the electrical waveform to the DUT 420 via the communication channel 440. The TVPG 480 also sends a digital representation of the test vector pattern to the reference memory device 470 for temporary storage, to be used at a later stage in the testing procedure. In variant embodiments, a reference memory module comprising multiple memory devices may be employed instead of a reference memory device 470, particularly where the DUT 420 comprises multiple memory devices, for example.
The electrical waveform is transmitted electrically across the communication channel 440 to the DUT 420 and is sampled back into digital form. At some point after the electrical waveform has been transmitted to the DUT 420 by the controller 490, the DUT 420 electrically transmits, across the communication channel 440, a response data signal containing a response bit pattern for each memory device of the DUT 420, namely the memory device 430 illustrated in
The controller 490 then converts the response data signals from the DUT 420 into digital form. The response data signals include the response data signals generated by the memory device 430 which are dependent on the test vector pattern sent by the controller 490 as an electrical waveform to the DUT 420.
The controller 490 then relays the converted response data signal from the DUT 420 to the comparator 460. At the comparator 460, the response data signal from the DUT 420 is compared with a digital form of a reference signal (i.e., a reference bit pattern, also generally referred to as an expected bit pattern), namely the signal that the controller 490 expects to receive from the DUT 420 that sent the response data signal. In one embodiment, the previously stored reference signal is transmitted to the comparator 460 by the reference memory device 470. The comparator 460 determines whether or not the response data signal is an identical match, based on a digital comparison, to the corresponding reference signal, and outputs that logical determination to the microprocessor 495.
If the comparator 460 determines a digital match between the two compared signals (i.e., between the response data signal and the corresponding reference signal), then the DUT 420 has, at least in the context of that particular test vector pattern, produced valid data. Where the DUT 420 is not determined to have undergone failure during testing and is determined to have met all required specifications, the DUT 420 may be considered a “good” or “defect-free” memory device.
However, if the comparator 460 determines that the two compared signals are not digitally identical, then the DUT 420 may have undergone a failure of some kind. As previously described, testing is performed on each individual memory cell on the memory device 430. Therefore, after the comparator 460 determines that the DUT 420 has undergone a failure, the one or more memory locations on the memory device where the failure occurred may be identified and those one or more memory locations are deemed to be “defective”. Data that identifies the one or more defective memory locations on the memory device, once generated, may be stored.
For example, the data that identifies the one or more defective memory locations on the memory device may be stored in a database 405. This database 405 may reside on a computer system that may be external to, or within or coupled to the tester 410. If the database 405 is external to the tester 410, the database may be accessible via a network 407, for example.
Each entry associated with a defective memory location in the database 405 may comprise, for example, a memory device identification number, in addition to data identifying the actual memory location on the memory device. Optionally, other details describing a failure of the DUT 420 during testing (e.g., the technical characteristics of the DUT or the test pattern that caused the failure of the DUT) may also be recorded in the database 405. Further, information associated with the handler 415 may also be stored in the database 405, such as data identifying the handler used in the testing process (e.g., if multiple handlers are used), and data identifying the location in which the handler placed the memory device for testing (e.g., a test socket identifier). Also, information associated with the tester 410 may also be stored in the database 405, such as data identifying the tester used in the testing process (e.g., if multiple testers are used).
As described herein, in accordance with at least one embodiment, the database 405 may be used to store, for each memory device of a plurality of memory devices, data that identifies one or more defective memory locations on the memory device, for subsequent recording onto a persistent store on a memory module. Other data obtained from the database 405, such as operating parameters for the memory devices (e.g., Joint Electron Devices Engineering Council (JEDEC) memory standards) and manufacturer-specific parameters or data, for example, may also be stored in the persistent store on the memory module.
In at least one embodiment, a tested memory device, or alternatively, a plurality of tested memory devices, may be sorted, after testing, into at least two groups. For example, memory devices determined to have no defective memory locations may be separated from memory devices determined to have one or more defective memory locations. The memory devices determined to have no defective memory locations may be classified as “good” or “defect-free” memory devices, whereas the memory devices determined to have one or more defective memory locations may be generally classified as “bad” or at least partially “defective” memory devices. However, as previously noted, a memory device that has been classified as “bad” may still be rendered useful by identifying the defective memory locations in a persistent store on a memory module that would subsequently allow a computing device to “skip” those defective memory locations during operation, for example.
Memory devices having one or more defective memory locations may be further classified by memory device characteristics, such as, for example, whether or not a threshold number of defective memory locations is exceeded and/or whether there is memory leakage (e.g., when an error in a given cell is detected only if the memory cells surrounding the given cell take on particular values). If the threshold number of defective memory locations is exceeded, for example, the memory device may be discarded.
Referring now to
In accordance with at least one example embodiment,
In
As illustrated in
The term “bin” is used generally herein to define any logical or physical mechanism usable to group memory devices together, and different containers may be employed in variant implementations. It will be further understood that each of the illustrated bins may be designated to receive memory devices of the same type within a particular testing period. Generally, each bin may be used to collect tested memory devices of the same type and with similar testing results.
In variant embodiments, memory devices determined to have one or more defective memory locations may be sorted based on the number of defective memory locations. There may be a number of ways of defining multiple groups based on the number of defective memory locations. For example, memory devices having a number of defective memory locations greater than or equal to a certain threshold value may be separated into their own group, so that they may be discarded. The remaining memory devices having a number of defective memory locations less than the threshold value may be sorted into at least one other group. Some groups may be defined for memory devices having a specific number of defective memory locations (e.g., 1, 2, or 3 defective memory locations, etc.) or a range thereof (e.g., 1-2 and 3-4, or 1-3 and 4-6 defective memory locations, etc.).
Furthermore, in some embodiments, tested memory devices determined to have one or more defective memory locations may be sorted based on the memory block within which they are found. For example, a plurality of memory devices with one or more defective memory locations within a memory block that will correspond to the same memory block address within the memory module (and optionally, for example, within memory blocks that will correspond to neighboring memory block addresses) may be grouped together.
Each bin illustrated in
In an alternative configuration, Bin 1605 may be designated for tested memory devices with no defective memory locations, Bin 2 may be designated for tested memory devices with one defective memory location, Bin 3 may be designated for tested memory devices with two defective memory locations, Bin 4 may be designated for tested memory devices with three or four defective memory locations, Bin 5 may be designated for tested memory devices with five, six or seven defective memory locations, and Bin 6 may be designated for tested memory devices with eight or more defective memory locations. If the threshold number of defective memory locations before a memory device is to be subject to discard is defined as eight, the memory devices that are sorted into Bin 6650 may be marked for discard and not used for assembling a memory module, in this example.
As a further example, tested memory devices may be separated into three groups or bins. A first bin may be designated for tested memory devices determined to have no defective memory locations, a second bin may be designated for tested memory devices determined to have a number of defective memory locations greater than a threshold value, and a third bin may be designated for tested memory devices with one or more defective memory locations, but where the number of defective memory locations is less than the threshold value. For example, if the threshold value for defective memory locations is 10, tested memory devices determined to have 10 or more defective memory locations would be sorted into the second bin, whereas tested memory devices determined to have between one and nine defective memory locations would be sorted into the third bin.
It will, however, be understood that the threshold value may differ in variant embodiments. In some embodiments, no threshold value may be defined.
As a further example, tested memory devices may be separated into bins based on defective memory locations in a given device being within one or more specific rows or columns of memory cells, where the specific rows or columns may be associated with one or more specific memory block addresses. For example, a given device may possess 1024 rows of memory cells. A first bin may be designated for the tested memory devices with no defective memory locations, a second bin may be designated for the tested memory devices with defective memory locations in any of rows 1-128 of memory cells of the given device, a third bin may be designated for the tested memory devices with defective memory locations in any of rows 129-256 of memory cells of the given device, and so on.
It will be understood that the number of bins to be utilized may differ in variant embodiments. It will also be understood that other criteria for sorting tested memory devices may be employed in variant embodiments. For example, in variant embodiments, tested memory devices may be sorted based on variations in voltage, timing parameters or frequency parameters associated with the testing of the memory devices.
It will also be understood that the selection of tested memory devices for assembly into a memory module may not require that tested memory devices be initially sorted into final groupings. Different and successive sorting techniques may be alternatively employed. For example, the tested memory devices may first be sorted based on a number of defective memory locations and then, each group of tested memory devices may then be further sorted based on certain defective memory locations being within certain groups of memory cells that will correspond to the same memory block address within the memory module (or neighboring memory block addresses). As previously noted, a memory block can span multiple memory devices. Conversely, the memory devices determined to have one or more defective memory locations may first be sorted based on the memory block addresses within which the defective memory locations are found, before being further sorted based on the number of defective memory locations.
In a further example, tested memory devices may not be pre-sorted into groups at all prior to assembly into memory modules.
In at least one embodiment, sorting may be performed with the assistance of a robotic device.
After memory devices have been tested and optionally sorted, and testing data is stored in the database (e.g., database 405 of
In at least one embodiment, the plurality of memory devices retrieved from the pool of tested memory devices may be selected such that all of the defective memory locations on the plurality of memory devices for a given memory module are located within the same memory block that corresponds to a particular memory block address, or within memory blocks that correspond to a particular group of neighboring memory block addresses.
When assembling a memory module, any number of memory devices may be used. Typically, the memory module will be assembled according to a standard configuration (e.g., using eight memory devices each storing eight bits of data, or using sixteen memory devices each storing four bits of data, etc.). In the methods and systems described herein, a memory module may be assembled using a plurality of memory devices, at least one of which is a memory device with one or more defective memory locations. Each one of the plurality of memory devices may be tested by the tester 410 (
The assembly of memory modules may be performed with the aid of one or more mechanical machines or devices, and may involve the application of chemical processes, for example.
After a given memory module is assembled, the memory module may be subject to further testing. Information (which may include data identifying defective memory locations) pertaining to any memory defects that are identified after the memory module is assembled but that were not previously identified during the testing of the individual memory devices of the memory module may also be stored in a database (e.g., database 405 of
By way of example,
In at least one embodiment, the persistent store 730 on the memory module 700 may be an SPD module or device. The SPD may be used to store characteristics of the memory module, such as for example, manufacturer data, date code data, timing parameters, operating parameters (e.g., according to the JEDEC standards), supporting parameters, etc.
In a variant embodiment, characteristics of an assembled memory module may be stored in a database. For example, data identifying defective memory locations in tested memory devices stored in the database 405 (
In at least one embodiment, data identifying defective memory locations in tested memory devices may be stored in the persistent store 730 as updateable memory references. For example,
In at least one embodiment, data identifying the one or more defective memory locations in each of the tested memory devices may be retrieved from a database (e.g., database 405 of
Referring again to
For example, each of the eight tested memory devices 705, 707, 711, 713, 715, 717, 719 and 721 may each have the same number of defective memory locations in an assembled memory module 700. For example, each of the eight tested memory devices 705, 707, 711, 713, 715, 717, 719 and 721 in the assembled memory module 700 may have one defective memory location. In accordance with one embodiment, this memory module may be assembled by retrieving eight tested memory devices from a bin associated with the group of tested memory devices comprising a single defective memory location. Each of the defective memory locations on each of the eight tested memory devices 705, 707, 711, 713, 715, 717, 719 and 721 may be identified using data that is stored in the persistent store 730. This data may be retrieved from a database (e.g., database 405 and/or other database that stores data associated with assembled memory modules).
As a further example, four of the tested memory devices in the assembled memory module may each have two defective memory locations while the remaining four tested memory devices in the assembled memory module may each have no defective memory locations.
As a further example, the eight tested memory devices may be assembled so that two of the tested memory devices in the assembled memory module may each have four defective memory locations while the remaining six tested memory devices in the assembled memory module may each have no defective memory locations. As a further example, the memory module may be assembled so that one of the tested memory devices has eight defective memory locations while the remaining seven tested memory devices in the assembled memory module each have no defective memory locations.
All of these examples described herein are provided for the illustrative purposes, and it will be understood that other distributions of defective memory locations among tested memory devices of an assembled memory module are possible in variant implementations.
As previously noted, in at least one embodiment, a memory module may be assembled with tested memory devices such that defective memory locations, if any, are located within the same memory block that corresponds to a particular memory block address within the memory module, or within memory blocks that correspond to a particular group of neighboring memory block addresses.
Referring now to
Groups of memory cells across different memory devices of a memory module may constitute a contiguously addressable memory block. Accordingly, when a memory module is in use, memory cells (e.g., a row, or a half-row, or other grouping) on each of multiple memory devices of the memory module may be accessed (e.g. read from or written to) in parallel. Typically, every individual memory device of a memory module will be accessed during any given memory operation in parallel; however, it is possible that only a strict subset of memory devices of the memory module might be accessed in parallel during a memory operation in certain implementations.
In accordance with an example memory management scheme, in response to each memory access request (e.g. read, write) to specific cells associated with the memory block address, data on each memory device of a memory module may be accessed in parallel from memory locations associated with that particular memory block address. Memory locations on multiple memory devices may be accessed even if the request relates to data that is to be read from or written to a particular memory device.
For example, for a memory module comprising eight memory devices, a memory address directed to a byte on this memory module can be represented by a 23-bit value. Bits 0-2 of the memory address may be used to identify a specific one of the eight memory devices, bits 3-12 may be used to designate a column address, and bits 13-22 may be used to designate a row address.
During a read operation where a memory controller is asked by the microprocessor to read a byte on the memory module at a particular memory address, the memory controller identifies bits 3 to 22 to the memory module; however, bits 0-2 are withheld. Accordingly, the memory controller will receive from the memory module not one, but eight consecutive bytes of data—one byte of data from each of the eight memory devices. The memory controller may then identify the requested byte (by then considering the value of bits 0-2 of the memory address), determines which byte of data is being requested, and returns the requested byte of data to the microprocessor. The other seven bytes of data that were simultaneously retrieved with the requested byte may be discarded or temporarily stored (e.g., in a cache). During a write operation where a memory controller is asked by the microprocessor to write a byte to the memory module at a particular memory address, all eight memory devices may also be simultaneously accessed. The memory controller provides the memory module with the byte of data to be written to the desired memory device, along with seven other (e.g., arbitrary) bytes that are “masked” (i.e., not actually written to the memory). Therefore, only the data at the desired memory device is overwritten.
Different portions of what is considered a contiguously addressable “memory block” will generally be distributed over each and every memory device in a memory module (although it may be possible in certain implementations that different memory block portions will be distributed over fewer memory devices of the memory module). A contiguously addressable memory block can be associated with a unique memory block address. Ultimately, when accessing memory according to this memory arrangement scheme, data on multiple devices of a memory module will typically be accessed in parallel even when data from only one particular memory device may be desired at a particular time, in order to reduce the memory access time. In anticipation of the future memory accesses, it may be more efficient to retrieve data in advance from the corresponding rows of memory cells across all memory devices corresponding to a memory block and to temporarily cache some data.
For example, in the example of
In
In this example, a defective memory location (such as for example, a memory cell) has been identified in each of the memory devices, namely 1111, 1121, and 1131 (depicted by an ‘X’ in
As shown in
Consider that defective memory locations may be situated randomly within a given memory device, and the defective memory locations may also be distributed randomly as between different memory devices in a given memory module that is assembled using randomly selected memory devices.
Therefore, in this example, when access to any memory cell located in the memory block associated with memory block address MA1 is attempted, data will actually be accessed, in parallel, from each memory block portion 1101, 1104 and 1107 across all memory devices of the memory module, as all of these memory block portions belong to one memory block associated with the memory block address MA1. However, since the memory block portion 1104 contains a defective memory location 1121, the entire memory block associated with the memory block address MA1 may be excluded from a usable memory map and thus, all memory block portions 1101, 1104 and 1107 that belong to that memory block may be excluded from use.
Similarly, when access to any memory cell located in the memory block associated with memory block address MA2 is attempted, data will actually be accessed, in parallel, from each memory block portion 1102, 1105, and 1108 across all memory devices of the memory module, as all of these memory block portions belong to one memory block associated with the memory block address MA2. However, due to the presence of defective memory location 1111 in the memory block portion 1102, all memory block portions 1102, 1105, and 1108 that belong to that memory block may be excluded from a usable memory map.
When access to any memory cell located in the memory block associated with memory block address MA3 is attempted, data will actually be accessed, in parallel, from each memory block portion 1103, 1106, and 1109 across all memory devices of the memory module, as all of these memory block portions belong to one memory block associated with the memory block address MA3. However, all memory block portions 1103, 1106 and 1109 that belong to that memory block may be excluded from a usable memory map because there is a defective memory location 1131 in the memory block portion 1109.
In contrast, in accordance with at least one embodiment described herein,
However, unlike the defective memory locations 1111, 1121 and 1131 shown in
To achieve this result, in accordance with at least one embodiment described herein, tested memory devices may be uniquely selected, specifically based on the defective memory locations identified for those devices, when assembling a memory module. The selection allows for a particular arrangement of memory devices within a memory module such that different defective memory locations across multiple memory devices will be located within one or more of the same memory blocks, as illustrated in
In that example, each of MD1′, MD2′ and MD3′ was tested by the testing process performed by the tester 410 as described herein, and determined to have one or more defective memory locations. The three tested memory devices were then specifically grouped together and used to assemble memory module 1150, because each of the tested memory devices MD1′, MD2′ and MD3′ was determined to comprise a defective memory location 1161, 1171, and 1181 in memory block portions 1152, 1155, and 1158 located in one memory block associated with one specific memory block address, MA2.
In another example implementation, the tested memory devices MD1′, MD2′ and MD3′ may have been first sorted based on the number of defective memory locations (e.g., each had one defective memory location), and then further sorted based on the specific memory block in which the defective memory location for the given memory device would be located. The further sorting may be done just prior to assembling the memory module, if desired.
Referring again to
By judicially selecting memory devices in the assembly of a memory module, the number of memory blocks that may ultimately be included in a usable memory map may be increased. As illustrated by
It will be understood by a person skilled in the art that the structure of memory devices depicted in
It will also be understood that in certain architectures, a memory block may comprise multiple memory block portions (e.g., multiple rows of memory cells) on the same memory device. Determining whether a given memory block may contain a defective memory location would then generally require a determination of whether any of the multiple memory block portions (or rows of memory cells) on a given memory device contain a memory defective memory location, and then repeating this act for each other memory device in the memory module containing portions of the same given memory block.
Note that when selecting memory devices for assembly into memory modules such that defective memory locations are located in the same memory block (or in the same group of neighbouring memory blocks), knowledge of the relevant architecture is typically required. For example, defective memory locations can exist in the first and third rows of memory cells on a given memory device. Then, when these individual rows of memory cells are associated with different memory blocks (in this example, two different memory blocks are affected) or these rows of memory cells are associated with one memory block (in this example, the first and third rows of memory cells could be associated with a single memory block), it may influence the selection of the memory devices for the assembly of a memory module.
In some embodiments, after testing the assembled memory module 1150, the records in the persistent store 730 may be simplified by removing two of the three entries 1210, 1220, 1230 since they refer to the same memory block associated with the same memory block address MA2, recognizing that the entire memory block may be excluded from usable memory if any one of the three entries 1210, 1220, 1230 exists in the persistent store 730. However, it may be desirable to keep all three entries in the persistent store, particularly if one wishes to maintain information about the defective memory locations on each individual memory device for some future use.
It will be understood that the data identifying defective memory locations in tested memory devices as stored in the persistent store 730 may further include entries identifying any defective memory locations on any other memory devices that may be on the assembled memory module 1150, and may further include one or more blank entries 1290, updateable to store data associated with additional defective memory locations that are later discovered and identified. Other data associated with the tested memory devices on the assembled memory module 1150, as previously noted for example, may also be stored in the persistent store 730.
It will also be understood from the examples above that in at least one embodiment, a memory module may be assembled from at least one memory device having no defective memory locations.
Referring now to
At 1310, for each of a plurality of memory devices, a tester (e.g. tester 410 of
At 1320, for each of the plurality of memory devices, based on results of the testing performed at 1310, it is determined whether the memory device comprises one or more defective memory locations.
If it is determined that the given memory device does not have any defective memory locations, then at 1330, a handler (e.g., handler 415 of
On the other hand, if it is determined that the memory device does comprise one or more defective memory locations, then at 1340, the one or more defective memory locations on the memory device are identified, and corresponding data identifying the one or more defective memory locations on the memory device is generated. Data identifying the one or more defective memory locations on the memory device may be stored in the database. The storage of this data into the database may take place, for example, immediately after the memory device has been tested, after the memory device is optionally sorted, after the memory device is assembled onto a memory module, or at some other time as determined by a test engineer or other individual.
After a memory device has undergone testing and it is determined that the memory device has one or more defective memory locations, the handler may sort or place the tested memory device into a group or “bin”, if sorting is desired as determined at 1344. If sorting of the memory device is desired, the handler will sort the memory device by placing the memory device with a group for devices containing one or more defective memory locations at 1350. Otherwise, the flow of the method may proceed directly to 1372.
After the handler places the memory device into a group, it is determined at 1355 whether further sorting of the group of memory devices is to be performed. If further sorting of the group is to be performed, the handler may further sort the memory devices in the group into sub-groups based on a pre-defined number(s) of defective memory locations on the memory devices at 1360. Otherwise, the flow of the method may proceed directly to 1372.
After the handler further sorts memory devices at 1360, it is determined at 1365 whether further sorting based on the defective memory location is to be performed. If further sorting of the group is to be performed, the handler may further sort the memory devices based on the memory block within which the one or more defective memory locations will be located at 1370. Otherwise, the flow of the method may proceed directly to 1372.
At 1372, it is determined whether assembly of memory modules is to commence. If so, the assembling unit proceeds to retrieve memory devices at 1375. Otherwise, the tester may continue to test individual memory devices, and the flow of the method proceeds back to 1310.
It will be understood by persons skilled in the art that a given act of sorting memory devices (e.g. 1350, 1360 and 1370) can be performed without the preceding act or acts taking place, in combination with each other in a different order (e.g. 1350 then 1370, or 1370 before 1360), or the act of sorting may not be performed at all. For example, it will be understood that 1350 may not be performed if either the sorting at 1360 or 1370 is first performed, because the sorting at 1360 or 1370 may implicitly sort memory devices into groups of memory devices having one or more defective memory locations. As a further example, the handler may place a tested memory device directly into a bin containing defective memory locations in a particular memory block (e.g., as at 1370) without performing any other pre-sorting. This may conserve resources, particularly where operations of the handler are to be generally minimized.
In some embodiments, no acts of sorting memory devices at all are performed prior to the memory devices being assembled into memory modules, after the memory devices have been tested. The tested memory devices may all be placed together into a storage unit, and stored and indexed (e.g., by a device ID) in such a way that allows an individual device to be later located and retrieved from the storage unit for assembly or for some other purpose.
At 1375, one or more tested memory devices are located (e.g., from particular groups or bins, or some other storage unit) and retrieved for assembly into memory modules.
At 1380, a memory module (see e.g.
At 1385, for each tested memory device assembled in the memory module having one or more defective memory locations, data that identifies the one or more defective memory locations on the memory device is stored in a persistent store on the memory module.
Although not explicitly shown in
In variant embodiments, data to be stored in a persistent store of a memory module may be stored therein directly during testing without first being stored or being additionally stored in a database. In variant embodiments, data associated with tested memory devices assembled on a memory module may be additionally or alternatively stored in a database that is used to store characteristics of assembled memory modules.
The embodiments described herein have been shown and described by way of a number of examples. It will be apparent to those skilled in the art that changes and modifications to the described embodiments may be made without departing from the substance and scope of the described embodiments, as defined in the appended claims.
Number | Name | Date | Kind |
---|---|---|---|
4001818 | Radichel et al. | Jan 1977 | A |
4209846 | Seppa | Jun 1980 | A |
4240143 | Besemer et al. | Dec 1980 | A |
4379259 | Varadi et al. | Apr 1983 | A |
4426688 | Moxley | Jan 1984 | A |
4479214 | Ryan | Oct 1984 | A |
4484329 | Slamka et al. | Nov 1984 | A |
4821238 | Tatematsu | Apr 1989 | A |
4965799 | Green et al. | Oct 1990 | A |
5224107 | Mattes | Jun 1993 | A |
5375228 | Leary et al. | Dec 1994 | A |
5450576 | Kennedy | Sep 1995 | A |
5539697 | Kim et al. | Jul 1996 | A |
5588112 | Dearth et al. | Dec 1996 | A |
5612965 | Michaelson | Mar 1997 | A |
5619430 | Nolan et al. | Apr 1997 | A |
5619926 | Engelmann et al. | Apr 1997 | A |
5666482 | McClure | Sep 1997 | A |
5671229 | Harari et al. | Sep 1997 | A |
5720031 | Lindsay | Feb 1998 | A |
5751641 | Petrosino | May 1998 | A |
5758056 | Barr | May 1998 | A |
5764878 | Kablanian et al. | Jun 1998 | A |
5774647 | Raynham et al. | Jun 1998 | A |
5794175 | Conner | Aug 1998 | A |
5844913 | Hassoun et al. | Dec 1998 | A |
5862314 | Jeddeloh | Jan 1999 | A |
5867702 | Lee | Feb 1999 | A |
5905858 | Jeddeloh | May 1999 | A |
5937367 | Eckardt | Aug 1999 | A |
5940875 | Inagaki et al. | Aug 1999 | A |
5959914 | Gates et al. | Sep 1999 | A |
5986950 | Joseph | Nov 1999 | A |
5995424 | Lawrence et al. | Nov 1999 | A |
5995915 | Reed et al. | Nov 1999 | A |
5996096 | Dell et al. | Nov 1999 | A |
6002623 | Stave et al. | Dec 1999 | A |
6014759 | Manning | Jan 2000 | A |
6018484 | Brady | Jan 2000 | A |
6029262 | Medd et al. | Feb 2000 | A |
6035432 | Jeddeloh | Mar 2000 | A |
6052798 | Jeddeloh | Apr 2000 | A |
6055653 | LeBlanc et al. | Apr 2000 | A |
6055661 | Luk | Apr 2000 | A |
6058055 | Brunelle | May 2000 | A |
6085334 | Giles et al. | Jul 2000 | A |
6125392 | Labatte et al. | Sep 2000 | A |
6134690 | Ivaturi et al. | Oct 2000 | A |
6154851 | Sher et al. | Nov 2000 | A |
6158025 | Brisse et al. | Dec 2000 | A |
6173382 | Dell et al. | Jan 2001 | B1 |
6178526 | Nguyen et al. | Jan 2001 | B1 |
6237110 | Lin et al. | May 2001 | B1 |
6260127 | Olarig et al. | Jul 2001 | B1 |
6275962 | Fuller et al. | Aug 2001 | B1 |
6285607 | Sinclair | Sep 2001 | B1 |
6304989 | Kraus et al. | Oct 2001 | B1 |
6313657 | Hashimoto | Nov 2001 | B1 |
6324657 | Fister et al. | Nov 2001 | B1 |
6324665 | Fay | Nov 2001 | B1 |
6327556 | Geiger et al. | Dec 2001 | B1 |
6345372 | Dieckmann et al. | Feb 2002 | B1 |
6389525 | Reichert et al. | May 2002 | B1 |
6425095 | Yasui | Jul 2002 | B1 |
6430720 | Frey et al. | Aug 2002 | B1 |
6452411 | Miller et al. | Sep 2002 | B1 |
6460152 | Demidov et al. | Oct 2002 | B1 |
6499117 | Tanaka | Dec 2002 | B1 |
6499120 | Sommer | Dec 2002 | B1 |
6536005 | Augarten | Mar 2003 | B1 |
6546511 | Sim et al. | Apr 2003 | B1 |
6574759 | Woo et al. | Jun 2003 | B1 |
6600614 | Lenny et al. | Jul 2003 | B2 |
6601183 | Larson et al. | Jul 2003 | B1 |
6615379 | Tripp et al. | Sep 2003 | B1 |
6622269 | Ngo et al. | Sep 2003 | B1 |
6646936 | Hamamatsu et al. | Nov 2003 | B2 |
6701474 | Cooke et al. | Mar 2004 | B2 |
6708298 | Corbin et al. | Mar 2004 | B2 |
6728907 | Wang et al. | Apr 2004 | B1 |
6731125 | Chang | May 2004 | B2 |
6754117 | Jeddeloh | Jun 2004 | B2 |
6820224 | Lin et al. | Nov 2004 | B1 |
6851076 | Cook, III et al. | Feb 2005 | B1 |
6880118 | Chen et al. | Apr 2005 | B2 |
6888366 | Kim et al. | May 2005 | B2 |
6889305 | Adelmann | May 2005 | B2 |
6910146 | Dow | Jun 2005 | B2 |
6996749 | Bains et al. | Feb 2006 | B1 |
7010452 | Gomes et al. | Mar 2006 | B2 |
7065630 | Ledebohm et al. | Jun 2006 | B1 |
7085980 | Martin-de-Nicolas et al. | Aug 2006 | B2 |
7088122 | Hartmann et al. | Aug 2006 | B2 |
7092902 | Eldridge et al. | Aug 2006 | B2 |
7114024 | Herbst | Sep 2006 | B2 |
7119567 | Ma et al. | Oct 2006 | B2 |
7120777 | Adelmann | Oct 2006 | B2 |
7123051 | Lee et al. | Oct 2006 | B1 |
7131046 | Volkerink et al. | Oct 2006 | B2 |
7142003 | Kanbayashi et al. | Nov 2006 | B2 |
7155370 | Nejedlo | Dec 2006 | B2 |
7159160 | Yoh et al. | Jan 2007 | B2 |
7216273 | Phelps et al. | May 2007 | B2 |
7246269 | Hamilton | Jul 2007 | B1 |
7251744 | Housty | Jul 2007 | B1 |
7260758 | Agrawal et al. | Aug 2007 | B1 |
7269765 | Charlton et al. | Sep 2007 | B1 |
7272758 | Roohparvar | Sep 2007 | B2 |
7287204 | Mayer et al. | Oct 2007 | B2 |
7346755 | Pomaranski et al. | Mar 2008 | B2 |
7428687 | Klein | Sep 2008 | B2 |
7444564 | Anand et al. | Oct 2008 | B2 |
7447955 | Niijima et al. | Nov 2008 | B2 |
7478285 | Fouquet-Lapar | Jan 2009 | B2 |
7590008 | Roge et al. | Sep 2009 | B1 |
7603595 | Sasaki | Oct 2009 | B2 |
7694195 | Khatri et al. | Apr 2010 | B2 |
7783919 | Khatri et al. | Aug 2010 | B2 |
7848899 | Lai et al. | Dec 2010 | B2 |
7945815 | Khatri et al. | May 2011 | B2 |
7949913 | Norrod et al. | May 2011 | B2 |
8276029 | Khatri et al. | Sep 2012 | B2 |
20010042225 | Cepulis et al. | Nov 2001 | A1 |
20020073353 | Fish et al. | Jun 2002 | A1 |
20020108072 | Beng Sim et al. | Aug 2002 | A1 |
20020120826 | Venkatraman et al. | Aug 2002 | A1 |
20020157048 | Roohparvar | Oct 2002 | A1 |
20020184445 | Cherabuddi | Dec 2002 | A1 |
20030005367 | Lam | Jan 2003 | A1 |
20030058711 | Benedix et al. | Mar 2003 | A1 |
20030095455 | Dono et al. | May 2003 | A1 |
20030145250 | Chin | Jul 2003 | A1 |
20030208654 | Krontz et al. | Nov 2003 | A1 |
20030226090 | Thayer | Dec 2003 | A1 |
20040034825 | Jeddeloh | Feb 2004 | A1 |
20040042293 | Ogino | Mar 2004 | A1 |
20040088614 | Wu | May 2004 | A1 |
20040186688 | Nejedlo | Sep 2004 | A1 |
20050022066 | Herbst | Jan 2005 | A1 |
20050060514 | Pomaranski et al. | Mar 2005 | A1 |
20050120270 | Anand et al. | Jun 2005 | A1 |
20050149687 | Adelmann | Jul 2005 | A1 |
20060004942 | Hetherington et al. | Jan 2006 | A1 |
20060059383 | Roohparvar | Mar 2006 | A1 |
20060236165 | Cepulis et al. | Oct 2006 | A1 |
20070061637 | Ward et al. | Mar 2007 | A1 |
20070101238 | Resnick et al. | May 2007 | A1 |
20070136385 | Abrashkevich et al. | Jun 2007 | A1 |
20070136625 | Niijima et al. | Jun 2007 | A1 |
20070140025 | Chan et al. | Jun 2007 | A1 |
20070147144 | Tokiwa | Jun 2007 | A1 |
20070150777 | Sasaki | Jun 2007 | A1 |
20070174718 | Fouquet-Lapar | Jul 2007 | A1 |
20070217559 | Stott et al. | Sep 2007 | A1 |
20070260828 | Swaminathan et al. | Nov 2007 | A1 |
20080229143 | Muraki | Sep 2008 | A1 |
20080235505 | Hobson et al. | Sep 2008 | A1 |
20080247243 | Kang et al. | Oct 2008 | A1 |
20080301530 | Spanel | Dec 2008 | A1 |
20090049257 | Khatri et al. | Feb 2009 | A1 |
20090254777 | Feyt et al. | Oct 2009 | A1 |
20090300413 | Chang et al. | Dec 2009 | A1 |
20100251044 | Khatri et al. | Sep 2010 | A1 |
20110305086 | Fujimura et al. | Dec 2011 | A1 |
20120075944 | Ide et al. | Mar 2012 | A1 |
Number | Date | Country |
---|---|---|
0704854 | Apr 1996 | EP |
2005234744 | Sep 2005 | JP |
9802816 | Jan 1998 | WO |
9905599 | Feb 1999 | WO |
9950748 | Oct 1999 | WO |
0229824 | Apr 2002 | WO |
Entry |
---|
Hermann, A.L., Diagnostic Data Comparator, IBM Technical Disclosure Bulletin, IBM Corp. New York, vol. 24, No. 5, Oct. 1981, pp. 2591-2592. |
Co-pending U.S. Appl. No. 14/011,508, “Systems and Methods for Testing Memory”, Filed Aug. 27. 2013. |
Number | Date | Country | |
---|---|---|---|
20130135951 A1 | May 2013 | US |