This disclosure is generally related to the field of data storage. More specifically, this disclosure is related to a system and method for quality of service (QoS) assurance of multi-stream scenarios in a hard disk drive.
The proliferation of the Internet and e-commerce continues to create a vast amount of digital content. Various storage systems have been created to access and store such digital content. A storage system or server can include multiple drives, such as hard disk drives (HDDs) and solid state drives (SSDs). The memory in a server plays a crucial role in the performance and capacity of a storage system. In the current economy, HDDs are significantly less expensive than SSDs. The capacity of HDDs continues to increase. At the same time, virtualization allows an increasing number of clients to share the resources of the same physical devices (such as an HDD). As a result, a single HDD may receive multiple write jobs in parallel. Each write job is part of a separate stream with multiple data parts, and each stream can be written to a different physical zone of the HDD on a platter. However, because an HDD is a spindle storage device with only one physical write head per platter, the write head must switch or move repeatedly between multiple physical zones on the platter, which can increase both the seek time and the rotation time. This can decrease the efficiency of the HDD as well as the overall efficiency and performance of the storage system, and can also result in a decreased level of QoS assurance.
One embodiment facilitates data placement in a storage device. During operation, the system receives incoming data from multiple streams, wherein the incoming data includes a plurality of data parts. The system formats the data parts by inserting a header before and a tail after each data part, wherein a formatted data part includes a respective data part, the header, and the tail, and wherein the header and the tail indicate an order and a destination zone for the respective data part within a stream. The system sequentially writes the formatted data parts to a pre-allocated journal zone of a non-volatile memory of the storage device. The system concatenates the data parts in the order indicated by their respective header and tail. The system sequentially writes the concatenated data parts to the non-volatile memory based on the destination zone indicated by their respective header and tail.
In some embodiments, prior to sequentially writing the concatenated data parts to the non-volatile memory: the system detects a fault; and the system reconstructs a mapping between a logical address of a data part and a physical address of the data part based on a destination zone identifier and a part length indicated by its respective header.
In some embodiments, the received incoming data is placed in a first data buffer. Subsequent to sequentially writing the formatted data parts to the journal zone: the system reads out the formatted data parts from the journal zone into a second data buffer; and the system validates the formatted data parts in the second data buffer.
In some embodiments, validating the formatted data parts in the second data buffer involves, for a respective formatted data part: confirming that a part identifier indicated by its respective header matches a part identifier indicated by its respective tail; and checking the respective data part based on a cyclic redundancy check value indicated by its respective tail.
In some embodiments, the header further indicates: a part start which is a beginning of the respective data part; a part identifier which is a unique identifier of the respective data part; a part length which indicates a number of bits included in the respective data part; a destination zone identifier which is a unique identifier of a zone to which the respective data part is to be written; and a destination zone offset which indicates a position from the part start at which to begin writing the respective data part. The tail further indicates: a part identifier which matches the part identifier indicated in the header; a cyclic redundancy check (CRC) value which indicates a signature for the respective data part encoded with an existing CRC codec; and a part end which indicates an end of the respective data part.
In some embodiments, in response to determining that a current write pointer is at an end of the journal zone, the system sets the current write pointer to a start of the journal zone.
In some embodiments, the system configures a spare sector pool region of the non-volatile memory to be utilized by both a pending sector replacement and data which requires additional storage capacity due to the pre-allocated journal zone.
In some embodiments, the storage drive includes a hard disk drive.
In some embodiments, the system allocates a zone of the non-volatile memory of the storage device as the pre-allocated journal zone.
In the figures, like reference numerals refer to the same figure elements.
The following description is presented to enable any person skilled in the art to make and use the embodiments, and is provided in the context of a particular application and its requirements. Various modifications to the disclosed embodiments will be readily apparent to those skilled in the art, and the general principles defined herein may be applied to other embodiments and applications without departing from the spirit and scope of the present disclosure. Thus, the embodiments described herein are not limited to the embodiments shown, but are to be accorded the widest scope consistent with the principles and features disclosed herein.
The embodiments described herein solve the problem of improving the efficiency of processing multiple incoming data streams in a hard disk drive (HDD) by using a pre-allocated journal zone, formatting the data with metadata, and re-ordering the data parts to be written sequentially to a destination zone, without requiring repeated moves by a write head of the HDD.
As described above, the capacity of HDDs continues to increase. At the same time, virtualization allows an increasing number of clients to share the resources of the same physical devices (such as an HDD). As a result, a single HDD may receive multiple write jobs in parallel. Each write job is part of a separate stream with multiple data parts, and each stream can be written to a different physical zone of the HDD on a platter. However, because an HDD is a spindle storage device with only one physical write head per platter, the write head must switch or move repeatedly between multiple physical zones on the platter, which can increase both the seek time and the rotation time. This can decrease the efficiency of the HDD as well as the overall efficiency and performance of the storage system, as described below in relation to
The embodiments described herein address these challenges by providing a system which reduces the seek and rotation time of handling multiple streams. The system can allocate a journal zone, format the data with metatadata, and concatenate data parts to write the data to specific destination zones. The system can receive incoming data from multiple streams, where the incoming data includes a plurality of data parts. The system can format the data parts (in a first data buffer) by inserting a header before and a tail after each data part. The header and the tail comprise metadata which indicate, for example, an order and a destination zone for each data part in its respective stream. The system can write the formatted data parts to the pre-allocated journal zone. The system can order the formatted data parts (in a second data buffer) based on the indicated metadata in the header and the tail of each formatted data part, and can concatenate the data parts based on the order. The system can then write the concatenated data parts to a specific destination zone in a sequential manner, which eliminates the need for the system to seek and rotate to a different destination zone for each specific data part (as in the prior art).
By including the metadata (e.g., the header and the tail), the system can ensure data consistency. Furthermore, the system can provide fault tolerance by using the metadata to reconstruct mapping information, as described below in relation to FIG.
Thus, the embodiments described herein provide a system which improves the efficiency of a storage system, where the improvements are fundamentally technological. The improved efficiency can include an improved performance in latency for completion of an I/O operation. The system provides a technological solution (i.e., a HDD with a pre-allocated journal zone for storing data from multiple streams, and formatting and subsequently concatenating data parts for sequential placement in a destination zone) to the technological problem of reducing the seek and rotation time involved in processing data from multiple streams in parallel, which improves both the Quality of Service (QoS) assurance and the overall efficiency of the system.
Exemplary Environment for Facilitating Data Placement in the Prior Art
The system can write data to specific zones on a platter of a HDD in the order indicated by the arrows. For example, the system can begin by moving a write head and writing data part A1 to zone 1110, moving the write head to zone 2 to write data part B1 in zone 2120 (arrow 150), moving the write head to zone 3 to write data part C1 in zone 3130 (arrow 152), moving the write head to zone 4 to write data part D1 in zone 4140 (arrow 154), and then moving the write head back to zone 1 to write data part A2 to zone 1110 (arrow 156), etc. In environment 100, the HDD is constantly “switching” the location of its write head. That is, the HDD must move its write head each time to seek and rotate to a different zone (e.g., as indicated by the arrows 150-156). With each “switch,” the HDD moves it write head to the correct track in the specific zone, and waits for the platter to rotate to the correct position in the specific zone at which to write the data part.
As the number of parallel streams increases, so decreases the performance of the HDD. Although each stream corresponds to a sequential write in the physical HDD, the many (e.g., dozens) of writes to different physical locations (e.g., tracks in zones) can result in a decreased efficiency. For example, the consumption of the seek time and the rotate time can result in an increased latency and a decreased QoS (due to repeated physical vibrations). Furthermore, the HDD DRAM write cache may be burdened with the accumulation of an increasing amount of data in order to handle the multiple streams of data. This may result in issues with data consistency. If the system experiences a fault, such as due to a power loss or a crash of the operating system, the system may lose the data which is held in the HDD DRAM cache. These challenges can decrease the efficiency of the overall storage system, and can also result in a decreased level of QoS assurance.
Exemplary Architecture of a Storage System Using a Pre-Allocated Journal Zone for Handling Multiple Streams of Write Data
The embodiments described herein provide a system which addresses the challenges described above in the conventional systems.
Upon formatting the data parts, the system can write (via a communication 224) the formatted data parts to a pre-allocated large journal zone 206, in a sequential manner without switching zones. That is, the formatted data parts can be sequentially written to the one pre-allocated journal zone 206, as described below in relation to
The system can perform ongoing background reading to place the data parts (of the formatted data parts) to the correct zone or physical location of the platter. For example, the system can retrieve the formatted data parts (via a communication 226) into an intermediate buffer 208 of the HDD controller, and pass the formatted data parts (via a communication 228) to a part concatenator module 210. Based on the metadata (including the order and the destination zone) indicated in the formatted data parts, part concatenator 210 can identify data parts of the same stream, order the identified data parts within the stream, and write the ordered data parts (without the header and the tail) of the same stream sequentially into the indicated destination zone (e.g., via a communication 230 to one of data zone 1212, data zone 2214, and data zone N 216). That is, the system can remove the header and the tail from each formatted data part before writing the data part to the destination zone.
For example, using the metadata indicated in the formatted data parts (e.g., the header and the tail), the system (via, e.g., concatenator module 210 of
Similarly, the system can identify parts B1-B8 of journal zone 302 as belonging to a same stream, order data parts B1-B8, concatenate the data from data parts B1-B8 (e.g., by removing the metadata), and write the concatenated data sequentially as a single stream of data to a zone 2320, without having to move the write head repeatedly to other physical zones during the writing of the data parts B1-B8 of stream B to zone 2320. The system can perform similar actions for data parts C1-C8 of stream C (which are written to a zone 3330), and for data parts D1-D8 of stream D (which are written to a zone 4340).
Thus, environment 300 illustrates how the system can process incoming data from multiple streams in parallel, and at the time, avoid repeatedly switching the write head to multiple other physical zones while writing the data parts of a single stream.
Exemplary Formatted Data Part as Stored in the Pre-Allocated Journal Zone; Exemplary Concatenation of Data
Environment 300 of
For example, given a formatted data part i 402 and a formatted data part j 452 of a same stream, the system can check that part identifier 414 (of header 410) matches part identifier 442 (of tail 440). The system can also check the validity of data 420 of formatted data part 402 based on CRC value 444 (of tail 440). The system can order the validated (formatted) data parts which are identified as belonging to the same stream, e.g., by checking that the destination zone offset (not shown) of a formatted data part j 452 is equal to the destination zone offset 420 (of header 410) of the previously ordered formatted data part i 402 plus part length 416 (of header 410) of formatted data part i.
Moreover, although the physical address of the data part is maintained by the metadata of the file system, the system can provide an additional fold of data protection in the event of a fault. If the system detects a fault, the system can reconstruct the mapping between a logical address of a data part and a physical address of the data part based on the destination zone identifier and the part length indicated in the respective header of the data part.
Exemplary Method for Facilitating Placement of Data from Multiple Streams in a Storage Device
If the current write pointer is not at an end of the journal zone (decision 510), the operation continues at operation 514. If the current write pointer is at an end of the journal zone (decision 510), the system sets the current write pointer to a start of the journal zone (operation 512). The system continues sequentially writing the formatted data parts to the journal zone (operation 514), and the operation continues at Label A of
If the system does not detect a fault (decision 538), the operation continues at operation 542. If the system detects a fault (decision 538), the system reconstructs a mapping between a logical address of a data part and a physical address of the data part based on a destination zone identifier and a part length indicated by its respective header (operation 540). The system sequentially writes the concatenated data parts to the non-volatile memory based on the destination zone indicated by their respective header and tail (operation 542). If the system reaches or determines that the most recent write is not a last write associated with the multiple streams (decision 544), the operation continues at operation 504 of
Shared Spare Sector Pool (with Inter-Configurable Capacity)
In HDD 602, the system can configure certain tracks of platter 610 to be allocated as the journal zone, i.e., a pre-allocated journal zone 620. However, allocating this journal zone can result in a decrease in the overall capacity available for storage in the HDD. To solve this issue, the system can use the hidden capacity of the HDD. An HDD is typically designed and manufactured with a larger capacity than its given stated or nominal capacity. Prior to being shipped, a manufacturer may mask out the bad tracks/sectors (referred to as “media defect masking.”) After the media defect masking, any additional remaining capacity which is greater than the nominal capacity may be used as the spare sector pool, e.g., for pending sector remapping. In general, the spare sector pool includes many more sectors than the number of pending sectors generated on the fly during the operation of an HDD.
In the embodiments described herein, the system can configure the spare sector pool to be a shared and inter-configurable area, which can be utilized by both a pending sector replacement and data which requires additional storage capacity due to the pre-allocated journal zone, i.e., a shared spare sector pool (with inter-configurable capacity) 630.
Exemplary Computer System and Apparatus
Content-processing system 718 can include instructions, which when executed by computer system 700, can cause computer system 700 to perform methods and/or processes described in this disclosure. Specifically, content-processing system 718 can include instructions for receiving and transmitting data packets, including incoming data from multiple streams, a data part, a formatted data part, a header, and a tail (communication module 720).
Content-processing system 718 can also include instructions for receiving incoming data from multiple streams, wherein the incoming data includes a plurality of data parts (communication module 720). Content-processing system 718 can include instructions for formatting the data parts by inserting a header before and a tail after each data part, wherein a formatted data part includes a respective data part, the header, and the tail, and wherein the header and the tail indicate an order and a destination zone for the respective data part within a stream (data-formatting module 722). Content-processing system 718 can include instructions for sequentially writing the formatted data parts to a pre-allocated journal zone of a non-volatile memory of the storage device (journal zone-managing module 728). Content-processing system 718 can include instructions for concatenating the data parts in the order indicated by their respective header and tail (data-concatenating module 726). Content-processing system 718 can include instructions for sequentially writing the concatenated data parts to the non-volatile memory based on the destination zone indicated by their respective header and tail (data-writing module 730).
Content-processing system 718 can include instructions for detecting a fault, and for reconstructing a mapping between a logical address of a data part and a physical address of the data part based on a destination zone identifier and a part length indicated by its respective header (fault-managing module 732). Content-processing system 718 can include instructions for validating the formatted data parts in the second data buffer (data-validating module 724). Content-processing system 718 can include instructions for allocating a zone of the non-volatile memory of the storage device as the pre-allocated journal zone (journal zone-managing module 728).
Data 734 can include any data that is required as input or that is generated as output by the methods and/or processes described in this disclosure. Specifically, data 734 can store at least: data; a stream of data; a data part; a formatted data part; a header; a tail; an indicator of a fault; a logical address; a physical address; a mapping between a logical address and a physical address; a data buffer; a part start; a part identifier; a part length; a destination zone identifier; a destination zone offset; a part identifier indicated in a tail; a CRC value; encoded data; an indicator of a location of a write pointer; an indicator of a start or an end in a zone; a spare sector pool or region; a zone; a journal zone; a pre-allocated journal zone; a destination zone; data parts; formatted data parts; validated data parts; ordered data parts; concatenated data; and an indicator of a validation or check of a data part.
The data structures and code described in this detailed description are typically stored on a computer-readable storage medium, which may be any device or medium that can store code and/or data for use by a computer system. The computer-readable storage medium includes, but is not limited to, volatile memory, non-volatile memory, magnetic and optical storage devices such as disk drives, magnetic tape, CDs (compact discs), DVDs (digital versatile discs or digital video discs), or other media capable of storing computer-readable media now known or later developed.
The methods and processes described in the detailed description section can be embodied as code and/or data, which can be stored in a computer-readable storage medium as described above. When a computer system reads and executes the code and/or data stored on the computer-readable storage medium, the computer system performs the methods and processes embodied as data structures and code and stored within the computer-readable storage medium.
Furthermore, the methods and processes described above can be included in hardware modules. For example, the hardware modules can include, but are not limited to, application-specific integrated circuit (ASIC) chips, field-programmable gate arrays (FPGAs), and other programmable-logic devices now known or later developed. When the hardware modules are activated, the hardware modules perform the methods and processes included within the hardware modules.
The foregoing embodiments described herein have been presented for purposes of illustration and description only. They are not intended to be exhaustive or to limit the embodiments described herein to the forms disclosed. Accordingly, many modifications and variations will be apparent to practitioners skilled in the art. Additionally, the above disclosure is not intended to limit the embodiments described herein. The scope of the embodiments described herein is defined by the appended claims.
Number | Name | Date | Kind |
---|---|---|---|
4775932 | Oxley | Oct 1988 | A |
6226650 | Mahajan et al. | May 2001 | B1 |
7565454 | Zuberi | Jul 2009 | B2 |
8260924 | Koretz | Sep 2012 | B2 |
8452819 | Sorenson, III | May 2013 | B1 |
8516284 | Chan | Aug 2013 | B2 |
8751763 | Ramarao | Jun 2014 | B1 |
8825937 | Atkisson | Sep 2014 | B2 |
9043545 | Kimmel | May 2015 | B2 |
9088300 | Chen | Jul 2015 | B1 |
9092223 | Pani | Jul 2015 | B1 |
9280472 | Dang | Mar 2016 | B1 |
9280487 | Candelaria | Mar 2016 | B2 |
9529601 | Dharmadhikari | Dec 2016 | B1 |
9588698 | Karamcheti | Mar 2017 | B1 |
9588977 | Wang | Mar 2017 | B1 |
1001316 | Fisher | Jul 2018 | A1 |
20020010783 | Primak | Jan 2002 | A1 |
20020073358 | Atkinson | Jun 2002 | A1 |
20020161890 | Chen | Oct 2002 | A1 |
20030163594 | Aasheim | Aug 2003 | A1 |
20030163633 | Aasheim | Aug 2003 | A1 |
20040010545 | Pandya | Jan 2004 | A1 |
20040255171 | Zimmer | Dec 2004 | A1 |
20040268278 | Hoberman | Dec 2004 | A1 |
20050038954 | Saliba | Feb 2005 | A1 |
20050097126 | Cabrera | May 2005 | A1 |
20050177755 | Fung | Aug 2005 | A1 |
20050195635 | Conley | Sep 2005 | A1 |
20050235067 | Creta | Oct 2005 | A1 |
20050235171 | Igari | Oct 2005 | A1 |
20060156012 | Beeson | Jul 2006 | A1 |
20070033323 | Gorobets | Feb 2007 | A1 |
20070101096 | Gorobets | May 2007 | A1 |
20080034154 | Lee | Feb 2008 | A1 |
20090113219 | Aharonov | Apr 2009 | A1 |
20090282275 | Yermalayeu | Nov 2009 | A1 |
20090307249 | Koifman | Dec 2009 | A1 |
20090310412 | Jang | Dec 2009 | A1 |
20100169470 | Takashige | Jul 2010 | A1 |
20100229224 | Etchegoyen | Sep 2010 | A1 |
20100325367 | Kornegay | Dec 2010 | A1 |
20110055458 | Kuehne | Mar 2011 | A1 |
20110153903 | Hinkle | Jun 2011 | A1 |
20110218969 | Anglin | Sep 2011 | A1 |
20110231598 | Hatsuda | Sep 2011 | A1 |
20110292538 | Haga | Dec 2011 | A1 |
20110302353 | Confalonieri | Dec 2011 | A1 |
20120084523 | Littlefield | Apr 2012 | A1 |
20120117399 | Chan | May 2012 | A1 |
20120147021 | Cheng | Jun 2012 | A1 |
20120159289 | Piccirillo | Jun 2012 | A1 |
20120210095 | Nellans | Aug 2012 | A1 |
20120246392 | Cheon | Sep 2012 | A1 |
20120278579 | Goss | Nov 2012 | A1 |
20120284587 | Yu | Nov 2012 | A1 |
20130061029 | Huff | Mar 2013 | A1 |
20130073798 | Kang | Mar 2013 | A1 |
20130145085 | Yu | Jun 2013 | A1 |
20130145089 | Eleftheriou | Jun 2013 | A1 |
20130151759 | Shim | Jun 2013 | A1 |
20130159251 | Skrenta | Jun 2013 | A1 |
20130166820 | Batwara | Jun 2013 | A1 |
20130173845 | Aslam | Jul 2013 | A1 |
20130219131 | Alexandron | Aug 2013 | A1 |
20130318283 | Small | Nov 2013 | A1 |
20140108414 | Stillerman | Apr 2014 | A1 |
20140181532 | Camp | Jun 2014 | A1 |
20140233950 | Luo | Aug 2014 | A1 |
20140250259 | Ke | Sep 2014 | A1 |
20140304452 | De la Iglesia | Oct 2014 | A1 |
20140310574 | Yu | Oct 2014 | A1 |
20140359229 | Cota-Robles | Dec 2014 | A1 |
20140365707 | Talagala | Dec 2014 | A1 |
20150019798 | Huang | Jan 2015 | A1 |
20150082317 | You | Mar 2015 | A1 |
20150106556 | Yu | Apr 2015 | A1 |
20150106559 | Cho | Apr 2015 | A1 |
20150142752 | Chennamsetty | May 2015 | A1 |
20150227316 | Warfield | Aug 2015 | A1 |
20150277937 | Swanson | Oct 2015 | A1 |
20150304108 | Obukhov | Oct 2015 | A1 |
20150363271 | Haustein | Dec 2015 | A1 |
20150372597 | Luo | Dec 2015 | A1 |
20160014039 | Reddy | Jan 2016 | A1 |
20160098344 | Gorobets | Apr 2016 | A1 |
20160110254 | Cronie | Apr 2016 | A1 |
20160232103 | Schmisseur | Aug 2016 | A1 |
20160239074 | Lee | Aug 2016 | A1 |
20160239380 | Wideman | Aug 2016 | A1 |
20160274636 | Kim | Sep 2016 | A1 |
20160306853 | Sabaa | Oct 2016 | A1 |
20160343429 | Nieuwejaar | Nov 2016 | A1 |
20160350002 | Vergis | Dec 2016 | A1 |
20170075583 | Alexander | Mar 2017 | A1 |
20170075594 | Badam | Mar 2017 | A1 |
20170109232 | Cha | Apr 2017 | A1 |
20170162235 | De | Jun 2017 | A1 |
20170168986 | Sajeepa | Jun 2017 | A1 |
20170212708 | Suhas | Jul 2017 | A1 |
20170228157 | Yang | Aug 2017 | A1 |
20170249162 | Tsirkin | Aug 2017 | A1 |
20170262178 | Hashimoto | Sep 2017 | A1 |
20170285976 | Durham | Oct 2017 | A1 |
20170286311 | Juenemann | Oct 2017 | A1 |
20170344470 | Yang | Nov 2017 | A1 |
20170344491 | Pandurangan | Nov 2017 | A1 |
20170353576 | Guim Bernat | Dec 2017 | A1 |
20180024772 | Madraswala | Jan 2018 | A1 |
20180088867 | Kaminaga | Mar 2018 | A1 |
20180143780 | Cho | May 2018 | A1 |
20180167268 | Liguori | Jun 2018 | A1 |
20180189182 | Wang | Jul 2018 | A1 |
20180270110 | Chugtu | Sep 2018 | A1 |
20180329776 | Lai | Nov 2018 | A1 |
20180373428 | Kan | Dec 2018 | A1 |
20190012111 | Li | Jan 2019 | A1 |
20190073262 | Chen | Mar 2019 | A1 |
Number | Date | Country |
---|---|---|
2003022209 | Jan 2003 | JP |
2011175422 | Sep 2011 | JP |
1994018634 | Aug 1994 | WO |
Entry |
---|
Tsuchiya, Yoshihiro et al. “DBLK: Deduplication for Primary Block Storage”, MSST 2011, Denver, CO, May 23-27, 2011 pp. 1-5. |
Chen Feng, et al. “CAFTL: A Content-Aware Flash Translation Layer Enhancing the Lifespan of Flash Memory based Solid State Devices”< FAST '11, San Jose, CA Feb. 15-17, 2011, pp. 1-14. |
Wu, Huijun et al. “HPDedup: A Hybrid Prioritized Data Deduplication Mechanism for Primary Storage in the Cloud”, Cornell Univ. arXiv: 1702.08153v2[cs.DC], Apr. 16, 2017, pp. 1-14. |
WOW: Wise Ordering for Writes—Combining Spatial and Temporal Locality in Non-Volatile Caches by Gill (Year: 2005). |
Helen H. W. Chan et al. “HashKV: Enabling Efficient Updated in KV Storage via Hashing”, https://www.usenix.org/conference/atc18/presentation/chan, (Year: 2018). |
Ivan Picoli, Carla Pasco, Bjorn Jonsson, Luc Bouganim, Philippe Bonnet. “uFLIP-OC: Understanding Flash I/O Patterns on Open-Channel Solid-State Drives.” APSys'17, Sep. 2017, Mumbai, India. pp. 1-7, 2017, <10.1145/3124680.3124741>. <hal-01654985>. |
EMC Powerpath Load Balancing and Failover Comparison with native MPIO operating system solutions. Feb. 2011. |
https://web.archive.org/web/20071130235034/http://en.wikipedia.org:80/wiki/ logical_block_addressing wikipedia screen shot retriefed on wayback Nov. 20, 2007 showing both physical and logical addressing used historically to access data on storage devices (Year: 2007). |
Number | Date | Country | |
---|---|---|---|
20200210100 A1 | Jul 2020 | US |