This application claims priority under 35 U.S.C. §119(a) from Korean Patent Application No. 10-2010-0032803, filed on Apr. 9, 2010 in the Korean Intellectual Property Office, the entirety of the disclosure of which is incorporated by reference herein.
1. Field of the Invention
The present general inventive concept relates to electronic devices, and more particularly, the present general inventive concept relates to a data storage device.
2. Description of the Related Art
As it is known in the art, computer systems generally use several types of memory systems. For example, computer systems generally use so-called main memory comprised of semiconductor devices typically having the attribute that the devices can be randomly written to and read from with comparable and very fast access times and thus are commonly referred to as random access memories. However, since semiconductor memories are relatively expensive, other higher density and lower cost memories are often used. For example, other memory systems include magnetic disk storage systems. In case of magnetic disk storage systems, generally, access times are in the order of tens of milliseconds. On the other hand, in the case of main memory, the access times are in the order of hundreds of nanoseconds. Disk storage is used to store large quantities of data which can be sequentially read into main memory as needed. Another type of disk-like storage is solid state disk storage (SSD, also called solid state drive). SSD is a data storage device that uses memory chips, such as SDRAM (Synchronous Dynamic Random Access Memory), to store data, instead of the spinning platters found in conventional hard disk drives.
The term “SSD” is used for two different kinds of products. The first type of SSD, based on fast, volatile memory such as SDRAM, is categorized by extremely fast data access and is used primarily to accelerate applications that are held back by the latency of disk drives. Since this SSD uses volatile memory, it typically incorporates internal battery and backup disk systems to ensure data persistence. If power is lost for whatever reason, the battery keeps the unit powered long enough to copy all data from RAM to backup disk. Upon the restoration of power, data is copied back from backup disk to RAM and the SSD resumes normal operation. The first type of SSD is especially useful on a computer which is already has the maximum amount of RAM. The second type of SSD uses flash memory to store data and is generally used to replacement of a hard disk drive.
Exemplary embodiments of the present general inventive concept can provide a method of storing data in a storage media. The method includes sequentially compressing data by a compression unit, and storing the compressed data in the storage media, the compression unit being varied according to a compression characteristic of data to be stored in the storage media.
Additional features and utilities of the present general inventive concept will be set forth in part in the description which follows and, in part, will be obvious from the description, or may be learned by practice of the present general inventive concept.
Exemplary embodiments of the present general inventive concept may also provide a data storage device which includes a storage media, and a controller to compress data to be stored in the storage media by a compression unit, the controller to control the compression unit so that a size of compressed data is fitted to a physical storage unit of the storage media.
Exemplary embodiments of the present general inventive concept may also provide a system having a plurality of solid state drives, where each of the plurality of solid state drives includes a storage media, and a controller to compress data to be stored in the storage media, the controller to compress data to be stored in the storage media by a compression unit and to control the compression unit variably according to a compression characteristic of data to be stored so as to constantly maintain a size of data compressed by the compression unit.
Exemplary embodiments of the present general inventive concept may also provide a method of storing data in a storage apparatus, the method including compressing data with a controller of the storage apparatus by varying the compression according to at least one characteristic of the data, and storing the variably compressed data in a storage apparatus communicatively connected to the controller.
The varying the compression may include adjusting a size of a unit of compression.
The compressing of the data may include determining at least one unit of compression with the controller, dividing the data into one or more sub-groups according the to the determined at least one unit of compression, and compressing the data according to the at least one unit of compression.
Exemplary embodiments of the present general inventive concept may also include a data storage apparatus including a storage media, and a controller to compress data by varying the compression according to at least one characteristic of the data and to store the variably compressed data in the storage media communicatively connected to the controller.
The data storage apparatus may include where the controller adjusts a size of a unit of compression.
The data storage apparatus may include where the controller determines at least one unit of compression, divides the data into one or more sub-groups according to the determined at least one unit of compression, and compresses the data according to the at least one unit of compression.
The data may include a first unit of data and a second unit of data, and the controller may compress the first unit of data according to a first characteristic of the data and may compress the second unit of data according to a second characteristic of the data.
The above and/or other aspects of the present general inventive concept will become apparent and more readily appreciated from the following description of the exemplary embodiments, taken in conjunction with the accompanying drawings, in which:
The present general inventive concept is described more fully hereinafter with reference to the accompanying drawings, in which embodiments of the present general inventive concept are illustrated. This inventive concept may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. Rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the inventive concept to those skilled in the art. In the drawings, the size and relative sizes of layers and regions may be exaggerated for clarity. Like numbers refer to like elements throughout.
It will be understood that, although the terms first, second, third etc. may be used herein to describe various elements, components, regions, layers and/or sections, these elements, components, regions, layers and/or sections should not be limited by these terms. These terms are only used to distinguish one element, component, region, layer or section from another region, layer or section. Thus, a first element, component, region, layer or section discussed below could be termed a second element, component, region, layer or section without departing from the teachings of the inventive concept.
Spatially relative terms, such as “beneath”, “below”, “lower”, “under”, “above”, “upper” and the like, may be used herein for ease of description to describe one element or feature's relationship to another element(s) or feature(s) as illustrated in the figures. It will be understood that the spatially relative terms are intended to encompass different orientations of the device in use or operation in addition to the orientation depicted in the figures. For example, if the device in the figures is turned over, elements described as “below” or “beneath” or “under” other elements or features would then be oriented “above” the other elements or features. Thus, the exemplary terms “below” and “under” can encompass both an orientation of above and below. The device may be otherwise oriented (rotated 90 degrees or at other orientations) and the spatially relative descriptors used herein interpreted accordingly. In addition, it will also be understood that when a layer is referred to as being “between” two layers, it can be the only layer between the two layers, or one or more intervening layers may also be present.
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the inventive concept. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof. As used herein, the term “and/or” includes any and all combinations of one or more of the associated listed items.
It will be understood that when an element or layer is referred to as being “on”, “connected to”, “coupled to”, or “adjacent to” another element or layer, it can be directly on, connected, coupled, or adjacent to the other element or layer, or intervening elements or layers may be present. In contrast, when an element is referred to as being “directly on,” “directly connected to”, “directly coupled to”, or “immediately adjacent to” another element or layer, there are no intervening elements or layers present.
Unless otherwise defined, all terms (including technical and scientific terms) used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this inventive concept belongs. It will be further understood that terms, such as those defined in commonly used dictionaries, should be interpreted as having a meaning that is consistent with their meaning in the context of the relevant art and/or the present specification and will not be interpreted in an idealized or overly formal sense unless expressly so defined herein.
Referring to
In exemplary embodiments of the present general inventive concept, the controller 2000 can divide externally provided data (hereinafter, referred to as non-compressed/raw data) and to compress divided data units (or, sub-groups). A division unit (or, a compression unit) of raw data can be determined variably as described below. The division unit can be changed so as to fit a size of compressed data of a divided data unit (or, a sub-group) to a physical storage unit of the storage media 1000. The storage media 1000 may be used with increased efficiency by fitting a size of compressed data of a divided data unit (or, a sub-group) to a physical storage unit of the storage media 1000. This will be more fully described below.
In exemplary embodiments of the present general inventive concept, a physical storage unit (or, a compression/division unit) of the storage media 1000 may be set to a word unit, a page unit, a sector unit, a block unit, a super-block unit, or the like, based on a non-volatile memory applied to the storage media 1000. When a non-volatile memory has an M-plane array structure (M being 2 or more integer), the super-block can be formed of N memory blocks in each of M planes and in the same row. N may be an integer less than M.
Referring to
The first interface 2100 can interface with an external device (or, a host). The first interface 2100 may include one or more electrical circuits so that the controller 2000 may communicate with an external device and/or host. The second interface 2200 can interface with a storage media 1000 illustrated in
The buffer 2400 can temporarily store data transferred from an external device via the first interface 2100. The buffer 2400 can temporarily store data transferred from the storage media 1000 via the second interface 2200. The compression block 2500 can operate according to the control of the CPU 2300 (or, the control of MTL executed by the CPU 2300) and can compress data that is sequentially provided from the buffer 2400 by a division unit. Each of compressed data can be stored in the storage media 1000 via the second interface 2500. The compression block 2500 can operate according to the control of the CPU 2300 (or, the control of MTL executed by the CPU 2300) and can decompress data read out from the storage media 1000. The compression block 2500 may be one or more electronic circuits, a programmable logic device, a field programmable gate array, or an application specific integrated circuit to compress the data that is sequentially provided, for example, from the buffer 2400. Alternatively, the compression block 2500 may be software and/or a combination of software and electronic circuits to compress the received data.
In exemplary embodiments of the present general inventive concept, a compression function of the compression block 2500 may be made optionally and/or selectively. Stream data can be stored in the storage media 1000 via the buffer 2400 without data compression. For example, an ON/OFF of the compression block 2500 may be made according to received stream data. That is, the compression block 2500 may operate so as to compress data when in an ON state, and may not compress the received data stream when in an OFF state. Data and/or information included in the received data stream may control the ON/OFF state of the compression block. When multimedia data that is compressed data is provided to a data storage device or when a predetermined amount of energy is consumed at data compression due to a predetermined small size of data, the compression block 2500 may be controlled to operate in an OFF state. The ON/OFF operation of the compression block 2500 may be made by hardware (for example, a register) or a software setting. Externally provided data can be stored directly in the storage media 1000 via the first and second interfaces 2100 and 2200 (i.e., without compression).
In operation S100, stream data externally provided upon write request can be stored in a buffer 2400 via a first interface 2100 that is controlled by the CPU 2300. The stream data stored in the buffer 2400 can be compressed by a compression block 2500 before stored in a storage media 1000. The data stream can be compressed as follows. In operation S110, the stream data in the buffer 2400 can be divided into a plurality of sub-groups according to a division unit. In exemplary embodiments of the present general inventive concept, a size of the division unit (or, a compression unit) can be varied (i.e., not fixed). Herein, division of the stream data can be that the amount of data corresponding to a size of the division unit (or, sub-group) can be transferred to the compression block 2500 under the control of the CPU 2300. In operation S120, the compression block 2500 can compress data provided from the buffer 2400 by the division unit, that is, at least one sub-group of data. If no compression algorithm of the compression block 2500 is changed, a size of compressed data (CD) may be varied according to one or more attributes of the stream data (for example, a pattern-repeated frequency, a pattern-repeated length, etc.). In other words, a compression rate of stream data to compressed data may be different according to the one or more attributes of the stream data.
In operation 130, the CPU 2300, that is, a Memory Translation Layer (MTL) can determine whether a size of the compressed data (CD) satisfies a reference condition (e.g., a predetermined reference condition). That is, the Memory Translation Layer (MTL) can determine whether a size of the compressed data (CD) is identical to or more than a minimum value Min and identical to or less than a maximum value Max. In exemplary embodiments of the present general inventive concept, the values Min and Max may be determined based on a physical storage unit LWU of the storage media 1000: word, page, sector, block, super-block, etc. For example, the minimum value Min can be LWU*0.95, and the maximum value Max is LWU*1. When the size of the compressed data (CD) is between the minimum value Min and the maximum value Max, a remaining space of a physical storage region of the storage media 1000 may be negligibly small when compressed data is stored in a corresponding physical storage region of the storage media 1000.
When the size of the compressed data (CD) is determined to be less than the minimum value Min or more than the maximum value Max, operation S140 can adjust the size of the division unit under the control of the CPU 2300 (or, MTL operated by the CPU 2300). For example, when the size of the compressed data (CD) is determined to be less than the minimum value Min, the size of the division unit can be adjusted so as to be increased. When the size of the compressed data (CD) is determined to be more than the maximum value Max, the size of the division unit can be adjusted so as to be decreased. The above-described operations S110 to S140 can be repeated until the size of the compressed data (CD) is identical to or more than the minimum value Min and identical to or less than the maximum value Max.
Retuning to operation S130, when the size of the compressed data (CD) is determined to be identical to or more than the minimum value Min and identical to or less than the maximum value Max, the compression block 2500 can sequentially compress sub-groups by dividing the stream data by a division unit determined by the above-described process at operation 5150. Data sequentially compressed by the compression block 2500 in operation 5160 can be stored in the storage media 1000 via a second interface 2200.
As understood from the above description, a remaining space of a physical storage unit of the storage media 1000 that may exist after storing of compressed data therein can be minimized by fitting a size of compressed data to a physical storage unit of the storage media 1000.
For example, the stream data 101 may be divided into a plurality of subgroups SG1 to SG3, and the sub-groups SG1 to SG3 may be compressed as described above in connection with
In exemplary embodiments of the present general inventive concept, it can be assumed that an attribute of the stream data 101 can be different from that of the stream data 102 and that a size of the stream data 101 can be identical to that of the stream data 102. With the assumption, as illustrated in
In
The pattern detecting block 2700 can be controlled by the CPU 2300 (or, a memory translation layer (MTL) operated by the CPU 2300) and can detect one or more attributes of raw data. The pattern detecting block 2700 may be one or more circuits, a processor, a field programmable gate array, a programmable logic device, and/or any other suitable circuits to detect patterns in data according to the exemplary embodiments of the present general inventive concept as disclosed herein. The pattern detecting block may be a combination of software and electrical circuits to detect patterns in data according to exemplary embodiments of the present general inventive concept. For example, the pattern detecting block 2700 can detect attributes (for example, a pattern-repeated frequency, a pattern-repeated length, etc.) of stream/raw data based on data (or, a part of stream data) transferred to the buffer 2400 from the first interface 2100 and can predict a compression rate of stream data according to the detected attribute information. The predicted compression rate can adjust a division unit of stream data, which will be described below.
In an exemplary embodiments of the present general inventive concept, prediction of the compression rate may be made based on a size difference between compressed data generated by compressing a part of data to be stored in a storage media, and uncompressed (or, before-compression) data.
In exemplary embodiments of the present general inventive concept, prediction of the compression rate may be made by the compression block 2500 instead of the pattern detecting block 2700. Alternatively, a controller 2000 can control the pattern detecting block 2700 to detect attributes of stream data and control the compression block 2500 to predict the compression rate according to the detected attributes.
In operation 5200, stream data externally provided upon write request can be stored in a buffer 2400 via a first interface 2100 under the control of CPU 2300. At the same time, in operation 5210, a pattern detecting block 2700 can predict a compression rate based on stream data transferred to the buffer 2400. Prediction of the compression rate may be made according to one or more attributes of the stream data such as a pattern-repeated frequency, a pattern-repeated length, etc. In operation 3220, the CPU 2300 (or, MTL operated by the CPU 2300) can determine a division unit based on the predicted compression rate. In operation 230, the stream data stored in the buffer 2400 can be divided into a plurality of sub-groups based on the division unit determined in the step S220. As described above, division of the stream data can include where the amount of data corresponding to a size of the division unit (or, sub-group) can be transferred to the compression block 2500 under the control of the CPU 2300. In operation S240, the compression block 2500 can compress data provided from the buffer 2400 by the division unit, that is, at least one sub-group of data.
In operation 250, the CPU 2300, that is, a Memory Translation Layer (MTL) can determine whether a size of the compressed data (CD) is identical to or more than a minimum value Min and identical to or less than a maximum value Max. In exemplary embodiments of the present general inventive concept, the values Min and Max may be determined based on a physical storage unit LWU of the storage media 1000: word, page, sector, block, super-block, etc. For example, the minimum value Min can be LWU*0.95, and the maximum value Max can be LWU*1. The size of the compressed data (CD) that exists between the minimum value Min and the maximum value Max can include where a remaining space of a physical storage region of the storage media 1000 is negligibly small after compressed data is stored in a corresponding physical storage region of the storage media 1000.
When the size of the compressed data (CD) is determined to be less than the minimum value Min or more than the maximum value Max, the size of the division unit can be adjusted under the control of the CPU 2300 (or, MTL operated by the CPU 2300) in operation S260. For example, when the size of the compressed data (CD) is determined to be less than the minimum value Min, the size of the division unit can be adjusted so as to be increased. When the size of the compressed data (CD) is determined to be more than the maximum value Max, the size of the division unit can be adjusted to be decreased, and the operation S230 can be performed. The above-described operations S230 to S260 can be repeated until the size of the compressed data (CD) is identical to or more than the minimum value Min and identical to or less than the maximum value Max.
Retuning to operation 5250, when the size of the compressed data (CD) is determined to be identical to or more than the minimum value Min and identical to or less than the maximum value Max, operation 5270 can be performed, in which the compression block 2500 sequentially compresses sub-groups taken by dividing the stream data by a division unit determined by the above-described operations. Data sequentially compressed by the compression block 2500, in operation S280, can be stored in the storage media 1000 via a second interface 2200.
As understood from the above description, a division unit (or, a compression unit) of raw data transferred from a host can be adjusted to be variable (i.e., not fixed). A size of compressed data can be maintained constantly. Referring to
In exemplary embodiments of the present general inventive concept, one or more operations and/or a part of functions (for example, a function of determining a division size) of the MTL may be made at a host level. Information indicating a division size (or, a compression size) can be provided to a data storage device together with stream data, and the data storage device can perform at least one compression operation according to the externally provided information (that is, a division size). Alternatively, data can be transferred to the data storage device according to a division size (or, a compression size) that may be determined at a host level.
In exemplary embodiments of the present general inventive concept, a physical storage unit LWU can be formed of a writable unit WU or a plurality of writable units. The writable unit WU can be a unit by which memory cells may be programmed at the same time. The writable unit WU, for example, can include a word, a page, a plurality of sectors, etc.
Referring to
In exemplary embodiments of the present general inventive concept, a data storage device may have a compression block 3500 that may be turned on or off (i.e., have ON/OFF operational states). For example, determining ON/OFF of the compression block 3500 can be made according to received stream data. When multimedia data that is compressed data is provided to a data storage device, or when a predetermined amount of energy is consumed upon data compression due to a predetermined small size of data, the compression block 3500 may operate in an OFF state. When the compression block 3500 is disabled, data can be transferred to a storage media 1000 via the buffer 3400.
Changing the ON/OFF operation of the compression block 3500 may be made by a hardware (for example, register) or a software setting. Externally provided data can be stored directly in the storage media 1000 via the first and second interfaces 2100 and 2200. Alternatively, data can be stored directly in the storage media 1000 via the first and second interfaces 3100 and 3200. Stream data provided via the first interface 3100 can be stored in both the buffer 3400 and a buffer of the compression block 3500. Either one of data in the buffer 3400 and data compressed by the compression block 3500 can be stored in the storage media 1000 according to whether a compression operation is activated or inactivated.
With the above-described system, the host 1 can transmit and/or send data that is compressed by the compression block 2A to the data storage device 1, and the transferred data can be stored in the storage media 1000 via the buffer 3400. When data is transferred to the host 2 from the data storage device 1, compression of data read out from a storage media 1000 can be released by a compression block 3500 of the data storage device 1, and decompressed data can be sent to the host 2. The same compression algorithm can be applied to the compression blocks 2A and 3500.
As illustrated in
As described above, a memory translation layer (MTL) that may be controlled by CPU may manage one or more mapping tables. For ease of description, it may be assumed that the storage media 1000 can be formed of NAND flash memories, and that NAND flash memories can be managed in a log mapping manner, as discussed in detail below.
Referring to
In
For ease of description, assignment of log blocks performed upon a write operation will be described with the assumption that a logical writable unit (LWU) has a page size. It may be assumed that a command directing that two pages are stored from a logical LWU number LLN3 is received. When there is no block assigned to a log block, the MTL can assign one of the free blocks in a free block pool to a log block, and can generate a log block group with respect to a data block group DGN0. Logical LWU numbers LLN3 and LLN4 can be recorded in the first and second pages 1200 and 1201 of the assigned log block PBN300. The MTL can store mapping information in an LWU mapping table 12. Flag bit information FBC can be stored to indicate whether data is uncompressed/raw data or compressed data. When the data is compressed data, the MTL can assign a new data block.
When a command is received directing that two pages are stored from a logical LWU number LLN6, data of the LLN6 can be stored in a log block PBN300, and the MTL can assign one of free blocks in the free block pool as a new log block PBN400 since a storage space of the log block PBN300 may be insufficient. The log block PBN400 can be added to the data block group DGN0, and data of a logical LWU number LLN7 can be stored in the log block PBN400.
When a command is received that directs that two pages are stored from a logical LWU number LLN10, because no logical LWU number LLN10 belongs to the data block group DGN0, a new log block PBN500 can be assigned. The MTL can generate a data block group DGN1 including a new-assigned log block PBN500. Because flag bit information FBC can be set to 1, data stored in a log block can be compressed data. Data of logical LWU numbers LLN10 and LLN11 can be stored in the new-assigned log block PBN500, and mapping information can be stored in the LWU mapping table 12.
The above-described operations may be performed until no free block pool includes at least one free block. When no free block pool includes at least one free block, an erase operation can be performed. With the above-described mapping, one data block group can be mapped to one log block group.
Referring to
When an update operation increases the first compressed data, update-requested data may not be stored in a block (for example, 2) having an empty space among blocks 1 and 2 of the first compressed data, but can be stored in new-assigned log blocks as follows. The block with an empty space can be assigned to an unused block, and two free blocks can be assigned to a log block. The new-assigned log blocks can be used to update of the first compressed data. Data in the block 2 with an empty space can be moved to a new-assigned log block, and update-requested data can be stored in a remaining space of the new-assigned log blocks.
It may be assumed that an update is requested when a free block pool does not include a free block. For example, an update that increases the third uncompressed data may occur when a free block pool does not include a free block. When there is no free block to be assigned to a log block, an erase operation can be carried with respect to one or more unused blocks. Erased blocks can be assigned to a free block. A free block can be assigned to a log block to update the third uncompressed data, and the update data can be stored in the new-assigned log block.
Referring to
An SSD 4000 according to exemplary embodiments of the present general inventive concept may be included in a storage illustrated in
Referring to
When a solid state drive including a data storage device according to exemplary embodiments of the present general inventive concept is applied to a storage, as illustrated in
In exemplary embodiments of the present general inventive concept, a compression block 2500 of a controller 2000 may include one of the following compression algorithms or a combination of two or more compression algorithm. Compression algorithms may includes LZ77&LZ78, LZW (Lempel-Ziv-Welch), Entropy encoding, Huffman coding, Adpative Huffman coding, Arithmetic coding, DEFLATE, REG (Joint Photographic Experts Group), etc.
In exemplary embodiments of the present general inventive concept, a first interface 2100 of a controller 2000 may be formed of one of computer bus standards, storage bus standards, and iFCPPeripheral (Internet Fibre Channel Protocol) bus standards, or a combination of two or more standards. The computer bus standards may includes S-100 bus, Mbus, Smbus, Q-Bus, ISA (Industry Standard Architecture), Zorro II, Zorro III, CAMAC (Computer Automated Measurement and Control), FASTBUS, LPC (Low Pin Count bus), EISA (Extended Industry Standard Architecture), VME (VERSAmodule Eurocard bus), VXI (VME eXtensions for Instrumentation), NuBus, TURBOchannel, MCA (Micro Channel Architecture), Sbus, VLB (Video Electronics Standards Association Local Bus), PCI (Peripheral Component Interconnect), PXI (PCI eXtensions for Instrumentation), HP GSC bus, CoreConnect, InfiniBand, UPA (Ultra Port Architecture), PCI-X (Peripheral Component Interconnect eXtended), AGP (Accelerated Graphics Port), PCIe (Peripheral Component Interconnect Express), Intel® QuickPath Interconnect, Hyper Transport, etc. The storage bus standards may include ST-506, ESDI (Enhanced Small Disk Interface), SMD (Small Disk Interface), Parallel ATA (Advanced Technology Attachment), DMA (Direct Memory Access), SSA (Serial Storage Architecture), HIPPI (High Performance Parallel Interface), USB MSC, FireWire (1394), Serial ATA (Serial Advanced Technology Attachment), eSATA (external Serial Advanced Technology Attachment), SCSI (Small Computer System Interface), Parallel SCSI, Serial Attached SCSI, Fibre Channel, iSCSI (Internet Small Computer System Interface), SAS (Serial Attached SCSI), RapidIO, FOP (Fibre Channel over Internet Protocol), etc. The iFCPPeripheral bus standards may include Apple Desktop Bus, HIL, MIDI (Musical Instrument Digital Interface), Multibus, RS-232, DM 512-A, EIA/RS-422, IEEE-1284, UNIX), 1-Wire, I2C, SPI (Serial Peripheral Interface), EINRS-485, USB (Universal Serial Bus), Camera Link, External PCIe (Peripheral Component Interface Express), Light Peak Multidrop Bus, etc.
The present general inventive concept can also be embodied as computer-readable codes on a computer-readable medium. The computer-readable medium can include a computer-readable recording medium and a computer-readable transmission medium. The computer-readable recording medium is any data storage device that can store data as a program which can be thereafter read by a computer system. Examples of the computer-readable recording medium include read-only memory (ROM), random-access memory (RAM), CD-ROMs, magnetic tapes, floppy disks, and optical data storage devices. The computer-readable recording medium can also be distributed over network coupled computer systems so that the computer-readable code is stored and executed in a distributed fashion. The computer-readable transmission medium can be transmitted through carrier waves or signals (e.g., wired or wireless data transmission through the Internet). Also, functional programs, codes, and code segments to accomplish the present general inventive concept can be easily construed by programmers skilled in the art to which the present general inventive concept pertains.
The above-disclosed subject matter is to be considered illustrative, and not restrictive, and the appended claims are intended to cover all such modifications, enhancements, and other embodiments, which fall within the true spirit and scope. Thus, to the maximum extent allowed by law, the scope is to be determined by the broadest permissible interpretation of the following claims and their equivalents, and shall not be restricted or limited by the foregoing detailed description.
Although several embodiments of the present invention have been shown and described, it would be appreciated by those skilled in the art that changes may be made in these embodiments without departing from the principles and spirit of the general inventive concept, the scope of which is defined in the claims and their equivalents.
Number | Date | Country | Kind |
---|---|---|---|
10-2010-0032803 | Apr 2010 | KR | national |