The present invention relates generally to a plug-and-play end-user add-in memory module for computers and consumer electronic devices, and more particularly relates to methods and apparatus for automatically managing active data sets in the memory module without external commands other than data set markers and for actively managing memory module maintenance operations independent of system control and in such a manner as to limit conflicts with normal memory module operations.
Advances in semiconductor manufacturing technology and digital systems architecture have provided the basis for the design, manufacture, and large-scale distribution of a wide variety of sophisticated consumer electronic devices and products. Many of these electronic products provide at least one connection, or interface, for use with one or more removable memory storage units, also referred to as removable memory modules.
Removable memory modules have been used with personal computers (PC) for many years. Such removable memory modules, or storage media, are used for many applications. Historically, the primary use of removable memory modules has been for general data storage. More recently the use of removable memory modules for entertainment or consumer applications including but not limited to audio, video and still pictures has become common. Conventionally, the type of storage device, or memory, used in such memory modules has been FLASH memory or hard disk drive mechanical storage media.
What is needed are methods and apparatus for providing portable data storage with performance characteristics between those of main memory and FLASH or hard disk drives, and which can be easily added and removed from a host system, and which can further be used to restore an image to main memory without resorting to loading data from a slower hard disk drive.
Briefly, a memory module including a volatile memory, a non-volatile memory, and a controller that provides address, data, and control interfaces to the memories and to a host system, such as, for example, a personal computer, is operable to interact with the host system so as to provide one or more additional layers in the memory hierarchy of the host system.
In one aspect of the present invention the controller operates the volatile memory of the memory as a cache for the non-volatile memory of the memory module.
In another aspect of the present invention data representing one or more software applications and/or one or more data sets are stored in the non-volatile memory of the memory module along with security information such that a host system may quickly launch applications from the memory module rather than from a slower hard disk drive.
In a further aspect of the present invention, since the memory module is in a different and independent path from that of the primary storage device, while the host system is booting from the memory module it can begin and service other requests from the primary storage device concurrently with the restore sequence.
Generally, a memory module with performance characteristics between those of main memory and non-volatile memory is provided on a separate path and allows, among other things, fast application launching, and concurrent servicing of multiple threads involving, for example, accessing the hard disk drive concurrently with application launching from the memory module. These and other functions and features of the memory module of the present invention are described in greater detail below.
Reference herein to “one embodiment”, “an embodiment”, or similar formulations, means that a particular feature, structure, operation, or characteristic described in connection with the embodiment, is included in at least one embodiment of the present invention. Thus, the appearances of such phrases or formulations herein are not necessarily all referring to the same embodiment. Furthermore, various particular features, structures, operations, or characteristics may be combined in any suitable manner in one or more embodiments.
Terminology
The terms integrated circuit (IC), semiconductor device, monolithic device, microelectronic device, and chip are often used interchangeably in the field of electronics. The present invention is applicable to all the above as they are generally understood in the field.
Memory modules in accordance with the present invention address the performance gap between main memory and mass storage (e.g., hard disk drives (HDD)). There is an ever growing performance gap between these two layers in the memory hierarchy.
It is noted that in a typical, but not required, application, a memory module in accordance with the present invention is an end-user add-in device. The portability aspect of such an embodiment is both a benefit and a problem. The benefits include, but are not limited to no added cost to the base system; flexible configurations to allow customization to specific needs; and independent system link such that it substantially reduces bus conflict when retrieving information in a highly threaded environment. Further benefits include, but are not limited to, a reduction of power, and an improved HDD reliability. The power savings and reliability are side benefits of being able to keep the HDD in the off state for extended periods of time. As for the problems due to the portable nature of the memory module, data encryption and security are useful to prevent the theft of data and/or the use of data that may have been modified without authorization.
Disclosed herein are several mechanisms to improve memory system performance while maintaining data integrity and security. As noted above, various embodiments of the present invention may incorporate one or more of these mechanisms. Power State Aware (PSA) is a mechanism where the memory module controller can act, to a predetermined extent, independently of the ACPI power state manager to reduce power consumption for the purpose of meeting desired performance or power criteria. Stored Image Integrity (SII) is a mechanism by which stored images are protected from modification and/or theft, including loading valid data sets based, at least in part, on predetermined file criteria. System Boot Manager is a mechanism that directs the memory module controller to source application code and data from the memory module and from specific memory types and locations within the memory module. Most Recently Used (MRU) is a mechanism where the most recently used data and applications are maintained in a highly ready state to ensure that the system, of which the inventive memory module form a part, responds as quickly as possible. User Selectable Application Acceleration is a mechanism in which a user selects which applications and data sets are to be managed and maintained in the memory module. Adaptive Learning Method is a mechanism in which the memory module adapts to user operations over a period of time in order to maintain a high state of readiness. Memory Maintenance Routines are the mechanisms by which the memory module is managed. Various embodiments of the present invention support one or more memory maintenance technologies. DRAM refresh, FLASH write wearing, emergency power loss, cache flushing, and security management are examples of such memory maintenance technologies.
To meet the growing need for performance improvements new memory module configurations are necessary to meet that performance demand. These new memory modules will use a combination of storage types to gain dramatic improvements in operational performance and storage capacity. In order for the different storage media to operate together cleanly and to deliver the highest possible performance special embedded operational functions must be defined. These embedded functions will be required to operate independent of normal system operations and must be designed to limit interference during normal operation.
With these various storage media types available to the system, predetermined data sets and applications can be associated with different types of storage media to extract the best desired system behavior. Various functions are described herein to improve system performance based on the particular abilities afforded by a hybrid memory configuration of memory modules in accordance with the present invention.
An illustrative memory module, in accordance with the present invention, uses a hybrid memory configuration wherein high speed volatile memory is used to improve memory module system performance and to manage temporary storage operations; and nonvolatile high density slower memory is used to store system data that is to be maintained regardless of power state. It is noted that non-volatile memories such as FLASH have write life limitations, and embodiments of the present invention allow the volatile memory of the memory module to be used at times in place of writes to the non-volatile memory, thereby effectively increasing the write life of the non-volatile memory. A simplified block diagram is shown in
Various embodiments of the present invention allow for the addition of system capabilities that have not previously been available in memory module technologies. In various embodiments, these capabilities operate substantially free from external control.
Memory Module
Referring to
The memory module controller may be implemented as a single integrated circuit, or as a combination of two or more integrated circuits. The present invention is not limited to any particular partitioning, distribution, or grouping of functional blocks onto one or more integrated circuits. The Express Card Interface is considered the Host bus interface as defined by the ExpressCard 1.0 specification. All other elements of the interface, DRAM/FLASH types, can be customized for any supplier to any application or availability of parts. In alternative embodiments, other functional blocks can be added depending on applications or tasks that the memory module is intended to perform. The arrangement illustrated in
The lesser blocks, mentioned above, make up the discrete components that are typically used for power decoupling, voltage regulator (VR) filtering, and fail safe DRAM data retention/emergency flushing, which various embodiments perform if power is lost prior to mirroring the DRAM data to a nonvolatile location.
In the illustrative embodiment of
The battery UPS and CAP UPS are optional design features for the memory module controller. As part of the general architecture support for emergency power down conditions, backup power needs to be provided as an option. In some embodiments of the present invention, if power were lost and contents in the DRAM have not been saved in a non-volatile location then the intent would be to maintain a power reserve large enough to write the volatile data to a non-volatile location on the memory module. Such a non-volatile location on the memory module is typically implemented with FLASH memory, however the present invention is not limited to any particular non-volatile memory technology.
Memory Controller
Referring to
The PCIe (Host) interface in the illustrative embodiment of
The DRAM interface in the illustrative embodiment of
The FLASH interface in the illustrative embodiment of
It is noted that the SMBUS controller must conform to the SMBUS 2.0 specification per the ExpressCard release 1.0 specification.
For reduced cost and simplicity of design, a Voltage Regulator controller is included in the illustrative memory module controller shown in
Still referring to
Still referring to
In various embodiments of the present invention, both router functions mentioned above are included since it may not be known if the operating system can easily or successfully delineate the difference between the two types of memory. If the DRAM is treated as a cache to the FLASH, then traditional cache management functionality is required. In some embodiments, software drivers are used to take advantage of the memory module with fully independent DRAM and FLASH operations. This effectively is having the memory module behave as though two more layers of memory hierarchy are disposed in the system between main memory and the HDD as shown in
The Router block of the illustrative embodiment shown in
The Router block functionality may be implemented by either a fixed hardwired state machine controller configurable via the config registers of the memory module controller; or by a microcontroller where the code to be executed by the microcontroller is stored in the FLASH memory of the memory module. This microcontroller implementation provides more flexibility for the operation of the module. It is noted that typical microcontroller architectures introduce the overhead of initial power-on latency and the possibility of slightly reduced performance.
The memory module controller in accordance with the present invention is “Power State Aware”. By having independent knowledge, separate from the ACPI control, of the power state and by having access to a user configuration of the power management window, the memory controller can use this information to improve performance under certain conditions and significantly reduce power consumption under other power managed conditions. The memory module controller follows the ACPI specification plus enhancements that are user configured and/or system configured.
In the D0 (On) and D1 (Standby) states there can be several power levels that can be configured depending on the importance of performance and/or battery life.
Power Level 5 level allows for full function, full performance operation. There are no preset restrictions placed on the DRAM, the FLASH, or any of the ExpressCard interfaces. The only restriction is what is gated by the thermal limit, or the power-in available limits for the ExpressCard devices as defined earlier, and there is no compromise on those limits.
Power Level 4 reduces power by limiting the DRAM performance and the PCIe transaction performance. This operating state is supported for battery operated devices. It is not required for battery mode operation and is considered user configurable.
Reduction of power in the DRAM can be accomplished in one of two ways: 1) reduce the maximum allowed number of read or write sequences in a given time period to the DRAM, essentially throttle the DRAM operation or reduce the frequency in which the DRAM is operating. A simple throttling algorithm can be used to restrict the number of cycles to the DRAM in any given time period. This reduces power and, in general, produces no noticeable decrease in system performance. The power saved by this type of throttling is good but not optimal.
An improved power saving option is to slow the operating frequency of the device down and restrict the number of requests being serviced by the ExpressCard interface. By doing this a significant savings in power can be achieved. Voltage can be reduced to the DRAM, frequency is reduced to the DRAM, and the number of cycle requests to the DRAM are reduced making the device function in a very lower power state while maintaining a reasonable system performance level. Power is calculated as the following: Power=Leakage+CV2f, so the ability to reduce voltage and frequency can result in major power savings. Some embodiments of the present invention include integrated voltage regulation circuitry for the memory module we have the capability of controlling this element on the module.
Power Level 3 provides a significant reduction in power, however performance of the memory module is reduced. In this power state the DRAM is used only as a write buffer to the FLASH memory. In this way, power consumed by the DRAM is reduced and power consumed by the interface is reduced as a consequence of the reduced number of access requests being processed. The DRAM is in an IDLE or STANDBY state most of the time and is only active when write traffic needs to be processed. This is substantially different than the operational states defined in Power Level 4 which allows both read and write traffic to be processed by the DRAM. As in the Power Level 4 Details, due to the lower operational state of the DRAM, voltage to the DRAM can be reduced as well as the frequency of operation by the DRAM thus saving additional power by the module.
Power Level 2 state is a standby state where low startup latency is wanted but without traffic being processed by the module. In this mode the DRAM is in a low power standby state and the FLASH is idle. Start-up latency by the DRAM is restricted by how deep a standby state is managed to the DRAM, clocks on or off, frequency of the clock and the voltage that is supplied to the DRAM. FLASH memory in IDLE allows for normal access to that memory without any latency hits.
In Power Level 1 there may be very little difference in the power consumed as compared to Power Level 2 since the amount of power consumed by the FLASH device in idle mode vs. standby mode is minor. An option to save power in this mode is to keep the DRAM in a low power standby state and to turn the power off to the FLASH device. Again the overall power savings may be small compared to Power Level 2.
In Power Level 0 the DRAM is turned off, and the FLASH may be turned off. Powering on the FLASH device adds to latency of operation but does reduce power.
Stored Image Integrity
Memory modules that contain non-volatile storage capability and uninterruptible power supply capability are used in many systems today for a wide variety of purposes. As noted previously in this disclosure, memory modules are typically removable devices. The stored image integrity methods and apparatus in accordance with the present invention are used to detect any change made to data previously stored on a memory module. Since the memory module is portable, i.e., removable, it is important to prevent inadvertent modifications and/or malicious tampering with the code and/or data stored thereon. For some applications and/or operating systems, it is important to know that the data being retrieved is what as originally stored. While a system is powered and operating this is not an issue as any storage device removed during operation most likely will not contain the latest image and therefore that image becomes useless to the system. The issue of image integrity occurs when a system is put into a power down state such as standby, hibernate or power-off. In any of these situations the memory module can be removed and returned without changes to the data image that is important to the system. In these cases, which would be quite prevalent, using existing systems' protocol the image would be required to be reloaded from the system's primary mass storage. This creates a situation where the system performance improvements are made non-functional. A mechanism in accordance with the present invention is provided to mark data sets and/or decrypt data sets. This mechanism provides the context by which the system can be put into any one of these power managed states, preserve the ability to remove the storage device, re-install the storage device and restart the system without having to re-load the stored contents, thus preserving the system response improvements.
Some Aspects of this Mechanism are:
In an alternative embodiment multiple users are allowed on a single module and those multiple users may be bound to different machines and/or use secure passwords to move information from one machine to another.
There are several approaches for securing the stored information, which approaches involve operations by the system to which a memory module in accordance with the present invention may be coupled. In one approach, an Advanced Encryption Standard (AES) encryption block is used with an associated user-controlled password. In another approach, an AES encryption block is used with an associated password that is machine only generated and controlled. In yet another approach, a CRC checking block, in the system code, determines, when retrieving the data from the storage device, whether the retrieved data was modified. A combination of a CRC generator and a machine generated password may be used to create a secure and binding environment.
Function Drivers
In computer systems, main memory design has been increasing performance by going to double wide busses and improved device performance but it is still not keeping pace with the CPU and Graphics load demand. Costs for main memory have remained constant or slightly growing over time with unit device count hovering around eight DRAM devices for main stream applications give or take four devices depending on commodity pricing at any given time. The performance gap between the main memory and the traditional HDD also continues to widen.
An end-user add-in memory module that fills the performance gap between main memory and the HDD is provided by various embodiments of the present invention. Various embodiments of the invention meet the desirable goal of not adding cost to the base computer system. Embodiments of the invention are scalable over time, and provide an independent path for the system to access information.
System Boot Manager
At a first host system power-up, when the memory module in accordance with the present invention is first detected but not yet active, software drivers will boot the system from the HDD as any normal system would. Concurrently with the host system booting, the software driver copies the appropriate boot image to the memory module. The memory module may store the boot image in both the DRAM as well as the FLASH memory space for future usage. Memory module configuration and configuration settings are used to determine whether to store the boot image in FLASH alone, or in both FLASH and DRAM of the memory module. The driver software will then change the boot pointers to the memory module for all subsequent boot operations either from hibernate or from hard power on. Refer to Tables 2 through 5 for power state information and
Operating System (OS) providers may take advantage of memory modules in accordance with the present invention as it is possible for the system to boot the 1st time from the memory module with preloaded OS launch codes installed. This obviates the need for the system to boot from the HDD and provides a significant improvement in system performance during the initial system boot sequence regardless of initial power state starting point. Other applications and data may also be preloaded on the memory module for ease of installation and rapid launch. Also note that the function of the system boot manager is not to replace the current S3 state manager that is heavily used in today's laptop personal computer systems.
*Optional definition for G3/D3 state - System Context is stored in FLASH for a fast boot.
**Optional definition for S4/D2 state - improve system performance w/reduced battery life.
The memory module of the present invention is primarily focused on Power up from S4, S5 and D3 states as well as accelerating other programs not typically saved as part of the S3 state management contained in the DRAM during S3 or normal operation. Such memory modules also reduce dependency on hard disk drives.
System Boot Operations
Referring to
The primary power transition state is from D3 (mechanical off) to D0 (fully on). This is considered the primary boot state and/or the initial state. After power is detected good, and reset is removed from the system, the memory module controller checks for valid boot pointers and/or flags indicating whether this is a fresh boot or a subsequent boot with a stored boot image available. If this is the 1st boot while the system is booting from the primary non-volatile storage device, which is usually a hard disk drive, this boot image is copied to the memory module for subsequent restarts. Flags and pointers are then set for subsequent system restart events and the system is considered active. If the check boot event sees flags that indicate that this is a 2nd boot and can launch the boot sequence from the memory module, the boot code is sourced from the memory module to the system for booting purposes and a normal but significantly faster restore sequence is completed. Because the memory module is in a different and independent path from that of the primary storage device while the system is booting from the memory module it can begin and service other requests from the primary storage device simultaneously with the restore sequence. Likewise if multiple memory modules are present in a system and if that system desires to retrieve multiple independent threads of information at the same time this is easily accomplished as each memory module is linked via an independent link and thus avoids connection conflicts.
System Boot 2nd and Successive Operations
Once the system has been operating and the appropriate information has been loaded into the memory module, all successive operations will then launch from the memory module either from the DRAM or from FLASH depending on prior usages and information stored by the MRU (Most Recently Used) manager. The 2nd system restore is from the D2 power state which would be the mechanical equivalent to hibernate and/or the S4 state. In order for the state machine to consider a launch from this state, flags would have to have been set to indicate that the system can boot from this memory module. A similar requirement exists when transitioning from a D1 (mechanical standby state) to the D0 full on state. The primary differences of operation, of the memory module in D2 and D1 states, is outlined in Table 5. The main difference is where the restore code is sourced from in each of these power states.
Most Recently Used Manager
The MRU manager is responsible for keeping the program usage information up to date. This is a separate manager that runs independent of other managers.
The MRU list is maintained as a non-volatile image that can be restored to higher performing volatile memory locations as needed. The program data list is shown in Table 6.
Once a program has been launched and remains open it is maintained in the main memory DRAM unless the host system resources get consumed and then it pages data from the source location, in this case the memory module.
If the data was not available in the memory module and is sourced from the HDD and if the appropriate flags are set indicating that this data set should be managed via the MRU, then that data set is stored in the memory module either in DRAM and or in FLASH depending on flagged preference. Automatically it would be added to DRAM and then eventually moved to flash in the event that DRAM resources were needed for other functions and/or as the priority is moved over time if the data is not accessed.
Part of the maintenance algorithm that can add performance is to purge the memory module DRAM of the image content if a program is maintained as open in the main memory. If the program is closed then the launch image is put back into memory module DRAM for future launch requests. This would free up the scarcer DRAM resources for other applications. This would require the system to move the contents either from main memory or the primary mass storage device to the memory module DRAM space. As long as the data is sourced from a location not in high demand and/or is run as a secondary non-priority event, system performance impacts will be minimal.
Notes:
1Auto launch override negates this function
If the system is started from a power off state and the boot image is kept in the FLASH portion of the memory module then the boot image is read from FLASH. At the same time the ongoing useful elements of the operational image are loaded into the DRAM. The MRU list is then loaded successively from the FLASH to the DRAM to an as of yet predefined allowable fill level as DRAM resources on the memory module are limited and required for other functions. This would allow for the optimal performance from the system for that pre-defined list. A certain amount of DRAM is required to be kept available for write buffering and data read buffering. Again this is done to maintain a very high level of system performance for the program(s) that are executing from memory module that are traditionally targeted for the hard disk drive.
After the system has booted, as the user launches programs (e.g., web browser, email, etc.) a list of most recently used programs is created by the driver. These programs, as they are launched, have their launch image copied to the memory module with future launches redirected to that module.
Launch Acceleration
Once the system has been operating and the appropriate information has been loaded into the memory module all successive operations will then launch from the memory module either from the DRAM or from FLASH depending on prior usages. The drivers need to keep track of the MRU and the LRU (least recently used) programs and data. A set of general operational rules are applied as a 1st level operational state. No intervention is required by a user of the host system.
Unless stated otherwise, when program images are copied to the memory module they are copied to both the DRAM as well as the Flash memory devices.
The memory module may also act as an HDD and use the flash for paging from the DRAM as necessary until it to reaches a full or close to full state.
In order to achieve such functionality, various embodiments of the present invention provide for: 1) boot image and OS operational image being maintained on the memory module; 2) an MRU algorithm employed to keep images at the ready for highly used programs; and 3) the drivers continuously monitor memory module usage and the MRU list.
The launch acceleration manager simplified flow diagram is shown in
Launch Acceleration User Override Manager
It is desirable to give the user options via a graphical user interface (GUI) to identify key programs and features that they want as part of the accelerated operation that override the MRU algorithm. This feature is intended for use by experienced users that know what they want from the system and how they want it to behave. That is, maintain a predetermined set of programs that need to be instantly available regardless of prior usage mapping, and elements of programs (e.g., cookies or temp files) that may want to be stored in a location other than the system HDD for security or other reasons.
If the memory module is equipped with sufficient storage capacity to hold all active and/or recently used programs and associated data, then the primary mass storage (e.g., HDD), of the host system may only be used infrequently and only on an as needed basis to hold a back-up image of the memory module. Once the memory module gains a capacity of 4-8 GBytes there is a high probability that this is enough capacity to store most commonly used applications today, including the OS, and associated data sets. This can allow for lower power, higher performance systems. It will be appreciated that memory requirements may increase over time and that the foregoing memory size is for illustrative purposes and does not limit the present invention.
Adaptive Learning Algorithm
As noted above in connection with Table 7, data is collected and stored on usage of the applications over a period of time. Part of the value added capability of this module is the ability to adapt to users behaviors without user intervention. Tracking not only program type but average duration of use and sequence of usage the system can be tracked real time to provide a user optimized interface.
The following is an example of an illustrative adaptive learning algorithm. In this example a user boots his PC routinely, opens email and reads it, then opens a web browser to surf for news, then opens some other program to do work. The adaptive learning algorithm tracks the sequence of events, the duration of usage of those events and the natural end behavior (i.e. shuts the program off, keeps it running in background). With this information the system can then determine what to do with that particular program and where to maintain the operational image for optimal system performance. When system elements are in a natural idle or low use state, the host system pre-loads programs and data into the memory module's DRAM for accelerated use, and puts less frequently used information into the flash on the memory module. In various embodiments, if the information is rarely used again and space is needed in the memory module, then that information is left on the HDD. By tracking and following this sequence of events the system is generally more ready for the user, and latency to access functions is substantially reduced. Further embodiments of the present invention apply this stored knowledge base to the initial launch and automatically configure the system to a user's needs while running in a background mode such that his/her email, web browsing and other elements are ready for the individual without slowing down the user of the system. That is, existing functional programs have priority, but when the system is in a low use state it prepares for the next level of expected system functionality.
The other natural use of this gathered information is when the user goes to shut down the host system. By having the sequential and time information available to the system during shut down, the host system can reconfigure itself to be ready for the next hard power on. In this way, the host system is constantly adapting to the individual's usage while it is powered on and may be required to give up previously stored information unless flagged as permanent.
Memory Module Maintenance Functions
There are several functional elements that fall into the category of “maintenance”. Since various embodiments of the present invention provide an adaptable system, various forms of maintenance are needed to prevent catastrophic failures and reduction in performance, as well as to be prepared for future operations. Those skilled in the field and having the benefit of this disclosure will recognize that these functions may be managed by hardware, by embedded firmware, by host system drivers, or by combinations of the foregoing. Each maintenance function will identify which mechanisms are available. There are 16 defined maintenance functions.
9. Power loss algoithm—As mentioned in connection with the DRAM flushing to FLASH, the very likely scenario is a power loss event. An option for the module is to have an uninterruptible power supply with energy reserves to Flush the critical DRAM data to the Flash on the memory module.
When the memory module controller detects a power loss event, the data that is flagged as critical is flushed to the FLASH, a flag is set and the memory module then shuts down. At new power on the normal power on sequence is followed and data restored to the DRAM.
Embodiments of the present invention find application in PC systems and in entertainment systems where one or more devices may be utilized. Various embodiments of the present invention provide methods and apparatus to improve power utilization, manage data integrity, ensure memory stability over time, and to improve system response time for the end-user through adaptive learning methodologies.
An advantage of some embodiments of the present invention is an improvement in computer system performance and response as it relates to application and data set availability to the end-user during active states, and during power up from various powered down states.
It is understood that the present invention is not limited to the embodiments described within, but encompasses any and all embodiments within the scope of the subjoined claims.
This non-provisional application claims the benefit of earlier filed provisional application No. 60/749,267, entitled “Advanced Dynamic Disk Memory Module”, filed 08 Dec. 2005; the entirety of which is hereby incorporated by reference.
Number | Date | Country | |
---|---|---|---|
60749267 | Dec 2005 | US |