Composite solid state drive identification and optimization technologies

Technologies for an operating system identifying SSD and CSSD devices based on a corresponding descriptor, and for optimizing operating system functionalities with respect to the SSD/CSSD device. Optimizations include disabling non-SSD/CSSD functionalities, such as HDD defragmentation, and by enabling SSD/CSSD specific functionalities, such as write optimization storage functionalities.

BACKGROUND

Solid state drives (“SSD”) are becoming economical for use as bootable mass storage devices. SSDs are commonly fabricated to include flash memory devices, such as nonvolatile flash memory devices including Not AND (“NAND”) type devices. Composite SSDs (“CSSD”) are typically fabricated with two or more performance classes of memory devices, high-speed memory devices (and thus higher cost) as well as lower-write-speed devices (and thus lower cost). Such composite SSDs tend to be less costly than SSDs fabricated solely of high-speed memory devices. Because write access on mass storage devices is often localized, composite SSDs are able to provide high-speed memory elements that can be leveraged for frequent write access combined with lower-write-speed memory elements for providing readable mass storage with less frequent write access. Since the introduction of SSD devices, manufactures have typically configured them to appear to a computing system as a conventional hard disk drive (“HDD”). But there tends to be significant performance differences between SSDs and HDDs. As many SSD devices are fabricated using flash memory, typical write operations have different considerations than do those of a conventional HDD that can over-write invalid (deleted) data with valid (new) data at the same physical location on the disk. SSD write operations typically require a write-merge operation so as to merge the new data with other existing data of the same memory block into a new memory block. Such merge operations typically involve a block erase operation that can be slow and reduce the life-span of the device. Thus, unnecessary write operations can contribute to reduced SSD performance and/or reliability.

SUMMARY

The present examples provide technologies for an operating system identifying SSD and CSSD devices based on a corresponding descriptor, and for optimizing operating system functionalities with respect to the SSD/CSSD device. Optimizations include disabling non-SSD/CSSD functionalities, such as HDD defragmentation, and enabling SSD/CSSD specific functionalities, such as write optimization storage functionalities. Further, these technologies may be applied to other forms of memory devices or storage devices or the like as well.

DETAILED DESCRIPTION

The detailed description provided below in connection with the accompanying drawings is intended as a description of the present examples and is not intended to represent the only forms in which the present examples may be constructed or utilized. The description sets forth at least some of the functions of the examples and/or the sequence of steps for constructing and operating examples. However, the same or equivalent functions and sequences may be accomplished by different examples.

Although the present examples are described and illustrated herein as being implemented in a computing environment, the environment described is provided as an example and not a limitation. As those skilled in the art will appreciate, the present examples are suitable for application in a variety of different types of computing environments.

FIG. 1is block diagram showing a conventional operating system110aand interface120ato a solid state drive (“SSD”)130a, and an example new operating system110band interface120bto a composite solid state drive (“CSSD”)130b. Conventional operating system110aincludes an example conventional file system112acoupled to an example conventional SSD driver114avia conventional interface113a. One example of interface113ais an input/output control (“IOCTL”) interface. File system112atypically manages the abstraction of data as files, folders, properties, and the like. These abstractions are typically transformed into physical data access and storage constructs by SSD driver114awhich interacts with SSD130avia interface120ato store and access data on SSD130a. Examples of interface120ainclude the advanced technology attachment (“ATA”) and small computer system interface (“SCSI”) interfaces.

Example SSD130ais a solid state storage device fabricated using solid-state memory devices or the like as the storage medium, as opposed to magnetic or optical storage media such as with conventional HDDs, floppy disks, compact disks, or the like. These solid state memory devices may be flash memory, or any other type or combination of solid-state memory or the like. Such SSD devices may be boot devices and may be considered primary storage devices or mass storage devices such as those described in connection withFIG. 4. Descriptions herein of functionality of or action by an SSD device generally refer to the SSD device and/or a corresponding SSD driver. Of particular note is that SSD130aidentifies itself to operating system110aas a conventional HDD, and operating system110arecognizes and interacts with SSD130aas a conventional HDD. Even so, SSD130amay be a composite SSD as described in connection withFIG. 2.

Example new operating system110bincludes example new file system112bcoupled to example new composite SSD (“CSSD”) driver114bvia example new interface113b, which in turn is coupled to CSSD130bvia new example interface120b. In general, the functionality of elements110b,112b,113b,114b,120b, and130bcorrespond to that of their similarly numbered1xxaconventional counterparts, but new functionality is added for the present invention.

File system112butilizes new interface113bto communicate with CSSD driver114bto identify and retrieve CSSD description information from CSSD130bvia new interface120b. Such CSSD description information typically enables operating system110bto, among other things, recognize and interact with CSSD130bas a CSSD device as opposed to a conventional HDD. Interface113bgenerally corresponds in functionality to interface113a, but is further operable to at least communicate CSSD description information. In one example, interface113bconforms to an IOCTL interface with additional functionality for communicating CSSD description information. Interface113bmay conform to any format and/or structure suitable for coupling a file system and a CSSD driver sufficient to communicate CSSD description information.

Interface120bgenerally corresponds to interface120a, but is further operable to communicate CSSD description information. In one example, interface120bconforms to an ATA interface with additional functionality for communicating CSSD description information. In yet another example, interface120bconforms to a SCSI interface with additional functionality for communicating CSSD description information. Interface120bmay conform to any format and/or structure suitable for coupling a CSSD driver and a CSSD device sufficient to communicate CSSD description information.

FIG. 2is a block diagram showing the structure of an example composite solid-state drive (“CSSD”)200. CSSD200is typically comprised of solid-state memory, such as memory230, and240though290, of differing performance classes, each performance class typically providing a different read and/or write access speed. With respect to CSSD devices, the primary performance consideration is typically speed of access, or memory speed. In one example, this memory is comprised of flash memory devices, such as nonvolatile flash memory devices including Not AND (“NAND”) type devices and the like. In other examples, other types of flash memory may be used, such as Not OR (“NOR”) type devices or the like. In yet other examples, any type of solid-state memory may be used, or any combination of device types. In yet further examples, magnetic media, optical media, tape media, or any type of memory device or storage device or the like may be used for one or more performance classes of memory of a CSSD resulting in a combination of solid state memory and magnetic media. I.e., memory290of CSSD200may be a HDD. In another example, a CSSD may be part of a computing environment, such as that described in connection withFIG. 4. For example, such a CSSD may be integrated with the motherboard of a computer system. Alternatively, a CSSD may be distinct from such an environment. For example, such a CSSD may be a portable device, plug-in device, wireless device, network appliance, or the like. Further, the term “CSSD” may refer to any type of composite memory device or composite storage device or the like, including non-solid state devices.

In a CSSD device, memory devices are typically classified by level. For example, level 1 memory230is typically the fastest or highest-speed memory (comprising one or more level 1 devices). Level 2 memory240is typically slower than level 1 memory230, but faster than other levels of memory that may be included in the CSSD device. Level n memory290represents the slowest class of memory included in the CSSD device. In general, a CSSD device may be comprised of memory of two or more performance classes, with each class or level of memory being comprised of one or more physical memory devices. In one example, a CSSD includes two levels or performance classes of memory.

Memory230and240-290are typically coupled via CSSD bus204that further couples the memory to CSSD interface202, and CSSD manager210. CSSD interface202typically serves to couple CSSD200to a computing environment, such as computing environment400described in connection withFIG. 4. In one example, CSSD interface202corresponds to interface120bofFIG. 1and is operable to couple CSSD200to an operating system typically including a CSSD driver. Data to be stored in CSSD200and/or retrieved from CSSD200are typically communicated through CSSD interface202and over bus204.

CSSD manager210is typically comprised of a processor or the like and sufficient processor-executable instructions to manage the operation of CSSD200. In general, this includes placing the data with the highest rate of access or the like in level 1 memory230while placing data being accessed less in correspondingly lower levels of memory240-290. This reallocation of data based on access rate is typically performed in a manner that is transparent to the system using CSSD200. Further, CSSD210is operable to communicate CSSD descriptor220to an operating system or the like via CSSD interface202. CSSD descriptor220provides description information of the CSSD that typically includes information identifying the performances classes of CSSD memory, the amounts of memory of each performance class, and the like. The format of and/or the description information in CSSD descriptor220may change over time as characteristics of the CSSD memory change, such as the percentage of available/used storage space, performance characteristics of the memory, and the like.

An example CSSD descriptor220is shown in table 1. This example may be structured for a conventional ATA interface. Similar descriptors may be structured for other interfaces, such as SCSI and the like.

TABLE 1WORDBITSDESCRIPTION05-15Reserved41 = Composite SSD1-3Reserved01 = SSD10-15SSD Level 1 memory size in MB (LSW)20-15SSD Level 1 memory size in MB (MSW)30-15SSD page size in bytes (LSW)40-15SSD page size in bytes (MSW)50-15SSD block size in bytes (LSW)60-15SSD block size in bytes (MSW)7-32Reserved

Example CSSD descriptor220shown in Table 1 may also be used to describe a non-composite SSD device or other types of memory devices or storage devices or the like. Other formats and/or information may additionally or alternatively be provided. The example in Table 1 enumerates size information in megabytes (“MB”) for one level of memory—SSD Level 1 memory. Additional levels of memory may be similarly described in additional fields not shown. Sizes are shown described in least-significant-word (“LSW”) and most-significant-word (“MSW”) format. CSSD descriptor220is typically maintained as a data structure stored in CSSD200in memory or some other form of computer-readable media.

Further example fields that may be used in example CSSD descriptor200are shown table 2.

Descriptor220is typically provided via interface202to an operating system or the like such that CSSD200can be identified by the operating system as an SSD and/or CSSD as opposed to a conventional HDD. Further, descriptor220provides the operating system with sufficient description information to determine the amounts of memory available for each memory performance level of CSSD200in addition to other CSSD characteristics. Such description information is usable by an operating system to optimize interactions with the CSSD and/or to optimize operations performed on the CSSD.

For example, and referring to Table 1, if bit0of word0is set to 1, then the device is an SSD device as opposed to an HDD or other device. In one example, if the device is an SSD device, then the operating system may disable HDD defragmentation for the device, and enable SSD defragmentation if it is available. Other non-SSD functionalities may similarly be disabled for the device, with other SSD-oriented functionality being enabled by the operating system.

If bit4of word1is set to 1, then the device is a composite SSD device. In one example, if the device is a CSSD, then the operating system may enable write optimized storage (“WOS”) functionality designed to optimize write operations based on the performance characteristics of CSSD devices comprising a plurality of performance classes of memory. In such an example, the operating system can determine the size of the level 1 memory by reading word1and2of the descriptor shown in Table 1. This information can be used to optimize the WOS functionality. In a CSSD device with two levels of performance, the difference between the level 1 size and the total size typically indicates the size of the level 2 memory, thus negating the need to report it explicitly in the descriptor. Further, the operating system may utilize the page and block size data of the descriptor to further optimize SSD/CSSD operations, such as write and read operations and the like.

FIG. 3is a block diagram showing an example method300for identifying SSD/CSSD devices and optimizing operating system operations for such devices. Method300is typically performed by an operating system in conjunction with an SSD/CSSD device. The operating system typically includes a file system and an SSD and/or CSSD driver; operations attributed to the operating system herein below may be performed by the file system, the SSD/CSSD driver, and/or other elements of the operating system. Block310indicates the operating system receiving a descriptor from a SSD/CSSD device, the descriptor including descriptive information describing the device such as that described in connection with Table 1 herein above and in connection with descriptor220described in connection withFIG. 2. Once the descriptor is received, method300typically continues with block320.

Block320indicates the operating system reading the descriptor and identifying the device corresponding to the descriptor as an SSD device. In one example, the device is identified as an SSD device by finding a descriptor bit0of word0set to 1, such as in the descriptor described in Table 1. Once the device is identified as an SSD device, method300typically continues with block330.

Block330indicates the operating system reading the descriptor and identifying the SSD device corresponding to the descriptor as a CSSD device. In one example, the SSD device is identified as a CSSD device by finding a descriptor bit4of word0set to 1, such as in the descriptor described in Table 1. Once the SSD device is identified as a CSSD device, method300typically continues with block340.

Block340indicates the operating system optimizing interactions with and/or operations on the CSSD device based on the CSSD device characteristics. In one example, non-SSD/CSSD functionalities are disabled with respect to the CSSD device, such as HDD defragmentation. In another example, SSD/CSSD functionalities are enabled with respect to the CSSD device, such as WOS functionality.

FIG. 4is a block diagram showing an example computing environment400in which the technologies described herein may be implemented. A suitable computing environment may be implemented with numerous general purpose or special purpose systems. Examples of well known systems may include, but are not limited to, cell phones, personal digital assistants (“PDA”), personal computers (“PC”), hand-held or laptop devices, microprocessor-based systems, multiprocessor systems, servers, workstations, consumer electronic devices, set-top boxes, and the like.

Computing environment400typically includes a general-purpose computing system in the form of a computing device401coupled to various components, such as peripheral devices402,403,404and the like. System400may couple to various other components, such as input devices403, including voice recognition, touch pads, buttons, keyboards and/or pointing devices, such as a mouse or trackball, via one or more input/output (“I/O”) interfaces412. The components of computing device401may include one or more processors (including central processing units (“CPU”), graphics processing units (“GPU”), microprocessors (“μP”), and the like)407, system memory409, and a system bus408that typically couples the various components. Processor407typically processes or executes various computer-executable instructions to control the operation of computing device401and to communicate with other electronic and/or computing devices, systems or environment (not shown) via various communications connections such as a network connection414or the like. System bus408represents any number of several types of bus structures, including a memory bus or memory controller, a peripheral bus, a serial bus, an accelerated graphics port, a processor or local bus using any of a variety of bus architectures, and the like.

System memory409may include computer readable media in the form of volatile memory, such as random access memory (“RAM”), and/or non-volatile memory, such as read only memory (“ROM”) or flash memory (“FLASH”). A basic input/output system (“BIOS”) may be stored in non-volatile or the like. System memory409typically stores data, computer-executable instructions and/or program modules comprising computer-executable instructions that are immediately accessible to and/or presently operated on by one or more of the processors407.

Mass storage devices404and410may be coupled to computing device401or incorporated into computing device401via coupling to the system bus or a storage bus or the like. Such mass storage devices404and410may include non-volatile RAM, a magnetic disk drive which reads from and/or writes to a removable, non-volatile magnetic disk (e.g., a “floppy disk”)405, and/or an optical disk drive that reads from and/or writes to a non-volatile optical disk such as a CD ROM, DVD ROM406. Alternatively, a mass storage device, such as hard disk410, may include non-removable storage medium. Other mass storage devices may include memory cards, memory sticks, tape storage devices, and the like.

Any number of computer programs, files, data structures, and the like may be stored in mass storage410, other storage devices404,405,406and system memory409(typically limited by available space) including, by way of example and not limitation, operating systems, application programs, data files, directory structures, computer-executable instructions, and the like.

Output components or devices, such as display device402, may be coupled to computing device401, typically via an interface such as a display adapter411. Output device402may be a liquid crystal display (“LCD”). Other example output devices may include printers, audio outputs, voice outputs, cathode ray tube (“CRT”) displays, tactile devices or other sensory output mechanisms, or the like. Output devices may enable computing device401to interact with human operators or other machines, systems, computing environments, or the like. A user may interface with computing environment400via any number of different I/O devices403such as a touch pad, buttons, keyboard, mouse, joystick, game pad, data port, and the like. These and other I/O devices may be coupled to processor407via I/O interfaces412which may be coupled to system bus408, and/or may be coupled by other interfaces and bus structures, such as a parallel port, game port, universal serial bus (“USB”), fire wire, infrared (“IR”) port, and the like.

Computing device401may operate in a networked environment via communications connections to one or more remote computing devices through one or more cellular networks, wireless networks, local area networks (“LAN”), wide area networks (“WAN”), storage area networks (“SAN”), the Internet, radio links, optical links and the like. Computing device401may be coupled to a network via network adapter413or the like, or, alternatively, via a modem, digital subscriber line (“DSL”) link, integrated services digital network (“ISDN”) link, Internet link, wireless link, or the like.

Communications connection414, such as a network connection, typically provides a coupling to communications media, such as a network. Communications media typically provide computer-readable and computer-executable instructions, data structures, files, program modules and other data using a modulated data signal, such as a carrier wave or other transport mechanism. The term “modulated data signal” typically means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communications media may include wired media, such as a wired network or direct-wired connection or the like, and wireless media, such as acoustic, radio frequency, infrared, or other wireless communications mechanisms.

Power source490, such as a battery or a power supply, typically provides power for portions or all of computing environment400. In the case of the computing environment400being a mobile device or portable device or the like, power source490may be a battery. Alternatively, in the case computing environment400is a desktop computer or server or the like, power source490may be a power supply designed to connect to an alternating current (“AC”) source, such as via a wall outlet.

Some mobile devices may not include many of the components described in connection withFIG. 4. For example, an electronic badge may be comprised of a coil of wire along with a simple processing unit407or the like, the coil configured to act as power source490when in proximity to a card reader device or the like. Such a coil may also be configure to act as an antenna coupled to the processing unit407or the like, the coil antenna capable of providing a form of communication between the electronic badge and the card reader device. Such communication may not involve networking, but may alternatively be general or special purpose communications via telemetry, point-to-point, RF, IR, audio, or other means. An electronic card may not include display402, I/O device403, or many of the other components described in connection withFIG. 4. Other mobile devices that may not include many of the components described in connection withFIG. 4, by way of example and not limitation, include electronic bracelets, electronic tags, implantable devices, and the like.

Those skilled in the art will realize that storage devices utilized to provide computer-readable and computer-executable instructions and data can be distributed over a network. For example, a remote computer or storage device may store computer-readable and computer-executable instructions in the form of software applications and data. A local computer may access the remote computer or storage device via the network and download part or all of a software application or data and may execute any computer-executable instructions. Alternatively, the local computer may download pieces of the software or data as needed, or distributively process the software by executing some of the instructions at the local computer and some at remote computers and/or devices.

Those skilled in the art will also realize that, by utilizing conventional techniques, all or portions of the software's computer-executable instructions may be carried out by a dedicated electronic circuit such as a digital signal processor (“DSP”), programmable logic array (“PLA”), discrete circuits, and the like. The term “electronic apparatus” may include computing devices or consumer electronic devices comprising any software, firmware or the like, or electronic devices or circuits comprising no software, firmware or the like.

The term “firmware” typically refers to executable instructions, code, data, applications, programs, or the like maintained in an electronic device such as a ROM. The term “software” generally refers to executable instructions, code, data, applications, programs, or the like maintained in or on any form of computer-readable media. The term “computer-readable media” typically refers to system memory, storage devices and their associated media, and the like.

In view of the many possible embodiments to which the principles of the present invention and the forgoing examples may be applied, it should be recognized that the examples described herein are meant to be illustrative only and should not be taken as limiting the scope of the present invention. Therefore, the invention as described herein contemplates all such embodiments as may come within the scope of the following claims and any equivalents thereto.