CN109992203A - 能够进行细粒度读取和/或写入操作的海量存储装置 - Google Patents
能够进行细粒度读取和/或写入操作的海量存储装置 Download PDFInfo
- Publication number
- CN109992203A CN109992203A CN201811432877.2A CN201811432877A CN109992203A CN 109992203 A CN109992203 A CN 109992203A CN 201811432877 A CN201811432877 A CN 201811432877A CN 109992203 A CN109992203 A CN 109992203A
- Authority
- CN
- China
- Prior art keywords
- byte
- read requests
- capacity storage
- piece
- block address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0625—Power saving in storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0661—Format or protocol conversion arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/70—Details relating to dynamic memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
描述了一种海量存储装置控制器。控制器处理在海量存储装置的I/O接口处接收的第一和第二读取请求。第一读取请求包括第一逻辑块地址。第一读取请求在I/O接口处提供存储在海量存储装置的非易失性存储介质内的第一块。第一块由第一逻辑块地址标识。第二读取请求包括第二逻辑块地址,并指定由第二块地址标识并存储在非易失性存储介质内的第二块内的一个或更多字节。第二读取请求在I/O接口提供一个或更多字节。
Description
技术领域
本发明的领域一般涉及计算科学,并且更确切地说,涉及能够进行细粒度读取和/或写入操作的海量存储装置。
背景技术
计算系统设计者一直在考虑改进他们的系统的设计的方式。“效率”是系统操作的可尊敬的测量标准,并且因此是系统设计的可尊敬的测量标准。具体地说,在切实可行的范围内,要避免对系统内的大量不需要的信息的存取和/或移动。
附图说明
从如下详细描述结合附图能获得本发明的更好的理解,其中:
图1(现有技术)示出了传统计算系统和海量存储装置;
图2示出了具有改进的海量存储装置的改进的计算系统;
图3a、3b和3c涉及改进的海量存储装置;
图4a、4b、4c、4d描绘了由改进的海量存储装置执行的操作;
图5示出了计算机和海量存储装置之间的网络;
图6示出了要在计算系统内操作的改进的方法;
图7示出了计算系统。
具体实施方式
图1描绘了传统计算系统100,其包括多个通用处理核101、主存储器102(也称为系统存储器)、主存储器控制器103、外围控制中枢104和非易失性海量存储装置105。根据传统计算系统100的操作,通用处理核101从主存储器102读取一个或更多软件程序的相应程序代码和对应数据以用于执行。软件确定不要保持在处理器寄存器空间中的数据可以被写回主存储器102。
这里,主存储器的地址空间通常被视为被分解成页。软件程序通过发出对于指令的存储器读取请求和用于/针对已经为主存储器102中的软件程序分配的页上的数据的读取/写入指令来操作。经常,软件程序的足迹(footprint)大于已经在主存储器102中为其分配的页的数量。因此,在软件的运行时间执行期间,不需要的或者被软件认为不迫切需要的页可以被换出主存储器102,并存储在非易失性海量存储装置105中。同样,需要的或者被软件认为迫切需要的并且不在主存储器102中的页被从海量存储装置105调出,并被输入到主存储器102中。
不幸的是,每个页都能含有大量信息(例如,4千字节(KB))。以页为单位向/从海量存储装置105传输大量数据量源于海量存储装置(例如,硬盘驱动器、FLASH存储器装置、磁带驱动器等)对以小粒度级快速地存取信息的传统无能力。例如,在传统盘驱动器的情况下,将读取/写入头移动到盘上的适当轨道上消耗相当大量的时间。一旦读取/写入头处于正确位置,就能以相对高的速度存取大量信息。从而,就其本质而言,如果要求在单个轨道位置读取/写入大量数据而不是以低速从一个轨道“跳”到一个轨道来仅存取少量数据,则盘驱动器的性能是优化的。
对于FLASH存储器装置存在类似情形,因为传统上只有在大块中一起擦除相同的数据量,并且而且,作为对于硬盘驱动器的替代,FLASH存储器装置被设计成支持以大量数据(块)为单位的读取/写入存取。
相比之下,主存储器102传统上被实现为真随机存取存储器(诸如动态随机存取存储器(DRAM)),并且能够以更细得多的粒度存取数据。通常,数据在高速缓存行中物理地从主存储器102读取/向主存储器102写入,高速缓存行比页小得多。例如,传统上,虽然单个页可以是4096字节(4KB)的数据,但是单个高速缓存行可以仅是例如64字节(64B)的数据。而且,主存储器102通常被称为是“字节可寻址”的,因为从发出存储器读取/写入请求的处理核101的角度来看,可以向主存储器102写入和/或从主存储器102读取小到单个字节的数据段。也就是,处理核101可以发出仅请求将单个字节写入主存储器102的写入请求,和/或处理核101可以发出仅请求单字节的信息的读取请求。
从而,传统上,在能对主存储器102进行存取所按的粒度与能对海量存储装置105进行存取所按的粒度之间存在很大悬殊。
重要的是,计算系统设计者认识到,向/从海量存储装置105传输大量数据可能太低效。例如,考虑这样一种情形:从海量存储装置105调出整个页并将其输入主存储器102中,但是其软件程序实际上仅利用该页上的小量信息。这里,不仅没有利用大量的消耗的存储空间,而且大量数据基本上无目的地被从海量存储装置105移动到主存储器102。主存储器102中不需要的数据的存在以及没有最终目的的大量数据的移动能被转化为计算机系统100的显著的功耗低效率。例如在电池供电的系统(诸如手持装置(例如,智能电话)或膝上型计算机)的情况下,该问题可能特别相关。
照此,图2描绘了一种改进的系统,其中由非易失性海量存储器205组成的装置能够进行更细粒度存取(例如类似于主存储器),并且不仅限于基于更大块的存取。更确切地说,图2示出了类似图1的计算机系统100的计算系统,只是图2的海量存储装置能接收对于与主存储器202的数据大小/粒度相当的和/或等同的数据大小/粒度的读取/写入请求。例如,根据一个实施例,海量存储装置能仅处理对于一字节信息的读取和/或写入请求(在执行请求中,海量存储装置仅写入/读取单个字节)。
图3a和3b涉及海量存储装置301(诸如固态驱动器(SSD)),具有非易失性存储介质302(例如,一个或更多(例如,堆叠)的FLASH存储器芯片)和控制器303。控制器具有关联的存储器304,诸如DRAM。控制器303可被实现为专用硬连线逻辑电路(例如,硬连线专用集成电路(ASIC)状态机和支持电路)、可编程逻辑电路(例如,现场可编程门阵列(FPGA)、可编程逻辑器件(PLD))、设计成执行程序代码的逻辑电路(例如,嵌入式处理器、嵌入式控制器等)或这些的任何组合。在其中控制器303的至少某一部分被设计为执行程序代码的实施例中,程序代码被存储在控制器的本地存储器304中并由控制器从那儿执行。I/O接口305被耦合到控制器,并且可与行业标准外围或海量存储技术接口(例如,外围组件互连(PCIe)、ATA/IDE(高级技术附件/集成驱动电子设备)、通用串行总线(USB)、IEEE 1394(“Firewire”)、FiberChannel等)兼容。
在各种实施例中,与传统SSD操作一致,SSD以“块”粒度存取信息(页和块可以具有相同大小,或者例如,一个是另一个的倍数)。照此,控制器303管理将逻辑块地址映射到物理块地址的映射表(也称为地址翻译表)。当主机发送要被写入SSD 301中的数据块时,主机还将块地址附加到数据,该地址被称为逻辑块地址(LBA)。然后,SSD 301将数据块写入非易失性介质302中,并在映射表内将数据的LBA与存储块的数据页的SSD内的物理位置相关联。特定物理位置用物理块地址(PBA)指定,PBA唯一标识其中存储页的SSD 301内的一个或更多管芯、平面和/或其它资源。
重要的是,控制器303还支持更细粒度的数据存取,诸如例如字节级读取操作和/或字节级写入操作。在字节级读取操作的情况下,参考图3b,SSD 301接收例如对于一字节信息的读取请求1。这里,即便底层非易失性存储介质303本来仅支持更大粒度的块存取,也从非易失性存储介质读取含有所请求的更细粒度数据的块2,并将其置于控制器存储器304中。这里,字节级读取请求还包括用于特定字节的地址。地址的较高有序比特对应于控制器的地址翻译表内的LBA,控制器能从该LBA容易地存取含有所请求的字节级数据的非易失性存储介质302内的特定块。在从海量存储介质304读取具有作为目标的字节的块2并将其置于控制器的存储器304中之后,控制器303然后操作以在准备对请求的响应时“剥离”大量或所有的页的不相关(非请求的)数据。照此,比块小得多的数据项(例如,仅所请求的字节)在SSD的I/O输出端被呈现为读取响应3。
这里,在响应中包括的剥离的信息量可略大于所请求的数据。例如,I/O接口的物理层可以建立最小分组有效载荷大小,其大于SSD能支持读取/写入请求所按的最小粒度。例如,SSD可具有支持字节级请求的能力,但I/O接口具有8字节的最小分组有效载荷大小。在这种情况下,可以在响应3中返回包括所请求字节的八字节大块。然后,主机将会至少将所请求的字节传递直到存储器控制器,其将所请求的字节写入主存储器中。
在字节级写入操作的情况下,参考图3c,SSD 301接收对于一个字节数据的写入请求1。写入请求还包括要写入的字节的地址。地址的较高有序比特对应于控制器的地址翻译表内的LBA,控制器能从LBA中容易地存取含有要改写的字节的非易失性存储介质内的特定块。控制器从海量存储介质读取具有要改写的字节的块2,并将其置于控制器的存储器304中。在已经从非存储介质读取块2并将其写入控制器的存储器304中之后,控制器操作于用在写入请求中接收的新字节改写作为目标的字节。然后,控制器将具有新的、更新的字节的整个块写回存储介质302(为了便于说明,在图3c中未示出)中。照此,实质上实现了读取-修改-写入操作。
在各种实施例中,用于SSD 301的装置驱动器软件被增强以接受支持如上所述的较小粒度的非易失性海量存储操作的软件命令(这里,装置驱动器软件可以在通用处理核201上执行,或者潜在地在系统中的一些其它处理智能上执行)。例如,根据一个实施例,装置驱动器软件维护应用编程器的接口(API),该接口通过接口支持如下“ReadPartial”软件命令(方法调用):
pData<=ReadPartial(LBA,X,Int N)
其中LBA是含有期望的读取数据的块的逻辑块地址,X是从作为目标的块中的第一个字节的位置(期望的数据开始于此)的偏移,并且N是以字节为单位指定的所请求的数据量。pData是返回的读取数据,其被写入到主存储器中,或者至少由海量存储装置响应于方法调用而提供。图4a提供了操作的高级视图。注意,在仅请求单个字节的情况下,Int N = 1。
因此,ReadPartial操作能够提供1到N字节范围中的读取量,并且在功能性中比仅提供单个字节更宽。如上面所论述的,实际返回的量可不同于实际需要的量,例如,归因于SSD能够进行的粒度和SSD与主存储器之间的信道之间的差异。例如,在其中I/O的物理层支持最小分组有效载荷大小(其大于SSD能执行的最小粒度)的上述的示例中,唤起方法调用的软件可以设置Int N =最小分组有效载荷大小。
图4b示出了其中X指定延伸到具有块地址LBA+1的相邻块中的数据量的操作。在所请求的读取量延伸到下一个LBA中的情况下,控制器将读取在LBA和在LBA+1两者处的块,将它们置于控制器存储器中,并且从这两个块中仅抽取所请求的信息。在又一些其它实施例中,所请求的数据总量甚至可超过一个块的大小,在此情况下,不仅一个或两个块的部分数据而且在所请求数据的开始和结束部分中间的至少一个完整块可以被包括在返回中。
在各种实施例中,装置驱动器的API还通过接口支持如下“WritePartial”软件命令(方法调用):
WritePartial(LBA,X,Int N,pData)
其中LBA是含有要改写的数据的块的逻辑块地址,X是从要改写的数据开始所在的作为目标的块中的第一个字节的位置的偏移,并且N是以字节为单位指定的要写入的数据量。pData是要写入的数据。图4c提供了操作的高级视图。注意,在仅请求单个字节的情况下,Int N = 1。从而,WritePartial操作能够写入1到N字节范围中的数据量,并且在功能性中比仅写入单个字节更宽。
图4d示出了其中X指定延伸到具有块地址LBA+1的相邻块中的写入数据量。在其中写入量延伸到下一LBA的情况下,控制器将读取在LBA和在LBA+1两者处的块,将它们置于控制器存储器中,改写来自这两个块中的受影响的信息,并将更新的块写回到非易失性介质。在又一些其它实施例中,写入数据的总量甚至可超过一个块的大小,在此情况下,不仅一个或两个块的部分数据而且在写入到的数据的开始和结束部分中间的至少一个完整块可以被改写。
在各种实施例中,前面提到的SSD仍然能够进行块级存取,其中要读取的块由LBA指定并由SSD提供,并且要写入的块被提供给SSD并且改写在SSD内具有相同LBA的块。
在单个命令中,指定以不仅具有关于数据量(例如,仅单个字节)而且关于起点和终点(即使请求大数据量,可以想象,甚至比块更大)的粒度的读取或写入数据的能力对应于在计算系统内的更精确得多的使用模型以及所得到的效率。
具体地说,如果仅向海量存储装置写入/从海量存储装置读取少量数据,则在存储器控制器和外围控制中枢之间仅传递对应的少量数据。与传统方法相比,避免传递大量不需要的数据,由此改进了计算系统的功率效率。如果未在块边界上对齐的大量的信息大块需要写入/读取操作,则在存储器控制器和外围控制中枢之间传递特定写入/读取数据(以及少量的,如果还有任何其它内容的话),同样,这至少消除了在系统内传递大量的不需要数据的可能性(例如,在其中受影响的数据在第一块的末尾附近开始并在最后一块的开始附近结束的情况下)。
在各种系统实现中,监视如本文所述的改进SSD的功能性和系统存储器的页管理的软件(例如,操作系统、虚拟机监测器、操作系统实例、应用软件等)不将本文描述的改进操作的粒度应用于海量存储装置,直到用于受这种改进操作影响的所有数据的页都驻留在主存储器中。
也就是,例如,当应用需要关于当前未驻留在主存储器中的页上的指令或数据时,按照传统方法从海量存储装置调出该页。这里,再次,页在大小上可以等于SSD内的数据块,或者,一个可以是另一个的倍数(在块是多于一个页的倍数的情况下,通常,多个页作为传输的单个单元在存储器和存储装置之间传递)。然而,一旦页驻留在主存储器中,软件就能开始在海量存储装置中写入/读取对该页上的数据的更细粒度存取。
这里,尽管通常通过存取主存储器中的数据页上的信息来执行软件,但是也能发生用于已经在主存储器中的页的信息的海量存储装置的操作。一个示例例如是交易软件(例如,两阶段提交协议软件),其中已经被计算并保留在主存储器中的某些数据需要被“提交”到海量存储装置,以用于例如因为其非易失性特性而永久保持。在此情况下,主存储器中的页上的数据被写回到海量存储装置。这里,用本文描述的改进操作,如果这样的数据仅是少量的(例如,仅一个字节),则只有少量的能从主存储器写回到海量存储装置,而按照传统操作,数据所在的整个页需要从主存储器写回到海量存储装置。
在读取的情况下,反向情形也是有可能的,例如,永久数据(例如,查找表数据)在从主存储器中的页进行处理时被改写。如果软件再次需要原始数据,则只能从海量存储装置中提取它。这里,如果数据例如小到一个字节,则能使用本文描述的改进操作从海量存储装置调出这样的数据,而根据传统操作,数据的整个页将需要从海量存储装置调出。
对于影响多个页的操作(例如,从第一页的中部延伸到第二页的中部的大量写入数据),每个受影响的页都应该存在于存储器中,以便将改进的写入功能用于海量存储装置,其仅包括写入数据本身且不包括写入数据驻留在其上的所有页的数据。类似地,在其读取数据跨越多个页的大读取的情况下,通常,具有受影响数据的页应该已经驻留在主存储器中。然而,在其中大读取包括在所请求数据量的中部中的一个或更多整页的情况下,只有具有所请求数据的开始和结束部分的页应该在存储器中以便执行命令。可以想象,最初能通过执行改进的命令来调出具有开始和结束部分的页中间的介于中间的整个页(它们不需要是主存储器作为执行改进的读取操作的先决条件)。
图5示出了其中在外围控制中枢502和海量存储装置503之间存在某种网络501的另一实现。这里,尽管许多人将PCIe视为在中枢与存在于计算机的封装范围之内(例如,在膝上型计算机内)的计算机外设之间的网络,但根据图5的视角,网络501能是更大得多的网络,诸如局域网(例如,以太网)、或者甚至是广域网(诸如无线蜂窝网络、因特网等)。在这种情况下,通过网络501传递的业务被大大减少,因为在许多情况下,通过网络501仅传递含有小量数据(例如,小到一个字节)的单个小数据分组,而传统方法将需要多个分组,它们共同传输要通过网络传递的整个页。
在其它实施例中,并非作为例如在输入参数语法中与支持基于块的存取的遗留命令不同的新的/单独命令,相反,上述方法调用与遗留操作协同增强,使得仅一个命令语法被用于细粒度调用和遗留方法调用两者。更确切地说,例如,并非被表述为“部分”读取,通用读取方法调用被表述为:
pData <= Read(LBA, X, Int N)
其中,对于部分读取,输入参数LBA、X和Int N如上述的用于PartialRead,除了对于遗留读取命令X=0并且Int N=块大小以外。类似地,并非被表述为“部分”写入,通用写入方法调用被表述为:
Write(LBA, X, Int N, pData)
其中,对于部分写入,输入参数LBA、X和Int N如上述的用于PartialWrite,除了对于遗留写入命令X=0并且Int N=块大小之外。
在各种实施例中,海量存储高速缓存(“盘高速缓存”)可以内部地或外部地在上述海量存储装置的前面。如本领域中已知的,高速缓存用于将频繁存取的块保持在更快的存储介质(诸如DRAM)中,使得可以观察到海量存储装置的执行比存储装置的底层、更深的非易失性海量存储介质更快。这里,如果高速缓存足够大以便高速缓存频繁存取的块,则高速缓存的某一部分或某一附加的较小延伸高速缓存区域可用于高速缓存小粒度的频繁存取的项。例如,仅仅8B高速缓存能高速缓存多达八个字节的信息,这些信息是较小粒度的读取/写入操作的常见目标(例如,如果海量存储装置频繁接收对于八个不同的非连续字节的读取/写入存取(如在它们各自的方法调用中用八个不同输入参数集合所表达的),8B高速缓存能保持这些字节中的每一个。
图6示出了上述方法。该方法包括:向海量存储装置发送601第一命令以从所述海量存储装置读取块。该方法还包括:将具有块内信息的页写入602到主存储器中。该方法还包括:向海量存储装置发送603第二命令以仅将一字节信息从页写入到存储在海量存储装置内的块。
图7提供了计算系统700(例如,智能电话、平板计算机、膝上型计算机、台式计算机、服务器计算机等)的示范性描绘。如在图7中所观察到的,基本计算系统700可以包括中央处理单元701(其可包括例如多个通用处理核715_1至715_X)和设置在多核处理器或应用处理器上的主存储器控制器717、系统存储器702、显示器703(例如,触摸屏、平板)、本地有线点对点链路(例如,USB)接口704、各种网络I/O功能705(诸如以太网接口和/或蜂窝调制解调器子系统)、无线局域网(例如,WiFi)接口706、无线点对点链路(例如,蓝牙)接口707和全球定位系统接口708、各种传感器709_1至709_Y、一个或更多相机710、电池711、功率管理控制单元712、扬声器和麦克风713以及音频编码器/解码器714。
应用处理器或多核处理器750可以包括其CPU 701内的一个或更多通用处理核715、一个或更多图形处理单元716、存储器管理功能717(例如,存储器控制器)和I/O控制功能718。通用处理核715通常执行计算系统的操作系统和应用软件。图形处理单元716通常执行图形密集型功能,以例如生成被呈现在显示器703上的图形信息。存储器控制功能717与系统存储器702对接,以向/从系统存储器702写入/读取数据。功率管理控制单元712通常控制系统700的功耗。
触摸显示器703、通信接口704-707、GPS接口708、传感器709、相机710和扬声器/麦克风编解码器713、714中的每一个全都能被视为相对于整体计算系统的各种形式的I/O(输入和/或输出),整体计算系统在适当时也包括集成外围装置(例如,一个或更多相机710)。取决于实现,这些I/O组件中的各种组件可以被集成在应用处理器/多核处理器750上,或者可以位于管芯外或在应用处理器/多核处理器750的封装外。
计算系统还包括非易失性存储装置720,其可以是系统的海量存储组件。这里,例如,海量存储装置可以由一个或更多SSD组成,这些SSD由FLASH存储器芯片组成,FLASH存储器芯片的多比特存储单元取决于如上面详细描述的SSD容量利用率以不同的存储密度编程。
本发明还提供如下技术方案:
技术方案1. 一种设备,包括:
海量存储装置控制器,用于处理在海量存储装置的I/O接口处接收的第一和第二读取请求,所述第一读取请求包括第一逻辑块地址,所述第一读取请求用于在所述I/O接口处提供存储在所述海量存储装置的非易失性存储介质内的第一块,所述第一块由所述第一逻辑块地址标识,所述第二读取请求包括第二逻辑块地址,并指定由所述第二块地址标识并存储在所述非易失性存储介质内的第二块内的一个或更多字节,所述第二读取请求用于在所述I/O接口处提供所述一个或更多字节。
技术方案2. 如技术方案1所述的设备,其中所述第一和第二读取请求是不同的命令。
技术方案3. 如技术方案1所述的设备,其中所述第一和第二读取请求是具有不同输入参数的相同命令。
技术方案4. 如技术方案1所述的设备,其中所述非易失性存储介质包括FLASH存储器芯片。
技术方案5. 如技术方案1所述的设备,其中所述一个或更多字节包括单个字节。
技术方案6. 如技术方案1所述的设备,其中所述控制器进一步要处理第三读取请求,所述第三读取请求包括第三逻辑块地址,并指定在由所述第三块地址标识并存储在所述非易失性存储介质内的第三块内开始的连续多个字节,所述多个字节延伸到所述非易失性存储介质内的下一块中,所述第三读取请求用于在所述I/O接口处提供所述多个字节。
技术方案7. 如技术方案1所述的设备,其中所述控制器要处理在所述I/O接口处接收的第一和第二写入请求,所述第一写入请求包括第三逻辑块地址和第三块,所述第一写入请求用于将所述第三块写入所述非易失性存储介质内,所述第二写入请求包括第四逻辑块地址和要写入由所述第四块地址标识的第四块内的一个或更多字节,所述第四写入请求用于将所述第四块内的所述一个或更多字节写入所述非易失性存储介质内。
技术方案8. 一种计算系统,包括:
一个或更多通用处理核;
主存储器;
存储器控制器,在所述一个或更多通用处理核与所述主存储器之间;
外围控制中枢,耦合到所述存储器控制器;
海量存储装置,耦合到所述外围控制中枢,所述海量存储装置包括:
I/O接口;
非易失性存储介质;
控制器,用于处理在所述I/O接口处接收的第一和第二读取请求,所述第一读取请求包括第一逻辑块地址,所述第一读取请求用于在所述I/O接口处提供存储在所述非易失性存储介质内的第一块,所述第一块由所述第一逻辑块地址标识,所述第二读取请求包括第二逻辑块地址,并指定由所述第二块地址标识并存储在所述非易失性存储介质内的第二块内的一个或更多字节,所述第二读取请求用于在所述I/O接口处提供所述一个或更多字节。
技术方案9. 如技术方案8所述的计算系统,其中所述第一和第二读取请求是不同的命令。
技术方案10. 如技术方案8所述的计算系统,其中所述第一和第二读取请求是具有不同输入参数的相同命令。
技术方案11. 如技术方案8所述的计算系统,其中所述非易失性存储介质包括FLASH存储器芯片。
技术方案12. 如技术方案8所述的计算系统,其中所述一个或更多字节包括单个字节。
技术方案13. 如技术方案8所述的计算系统,其中所述控制器进一步处理第三读取请求,所述第三读取请求包括第三逻辑块地址,并指定在由所述第三块地址标识并存储在所述非易失性存储介质内的第三块内开始的连续多个字节,所述多个字节延伸到所述非易失性存储介质内的下一块中,所述第三读取请求用于在所述I/O接口处提供所述多个字节。
技术方案14. 如技术方案8所述的计算系统,其中所述控制器要处理在所述I/O接口处接收的第一和第二写入请求,所述第一写入请求包括第三逻辑块地址和第三块,所述第一写入请求用于将所述第三块写入所述非易失性存储介质内,所述第二写入请求包括第四逻辑块地址和要写入由所述第四块地址标识的第四块内的一个或更多字节,所述第四写入请求用于将所述第四块内的所述一个或更多字节写入所述非易失性存储介质内。
技术方案15. 一种机器可读存储介质,包括存储的程序代码,所述程序代码当由计算系统的一个或更多处理器处理时使所述计算系统执行一种方法,包括:
向海量存储装置发送第一命令以从所述海量存储装置读取块;
将具有所述块内的信息的页写入主存储器;
向所述海量存储装置发送第二命令以仅将一字节的信息从所述页写入到存储在所述海量存储装置内的所述块。
技术方案16. 如技术方案15所述的机器可读介质,其中所述方法进一步包括:抑制从所述海量存储装置读取少于第二块的信息,除非所述第二块的对应页在所述主存储器内。
技术方案17. 如技术方案15所述的机器可读介质,进一步包括:向所述海量存储装置发送第三命令以从所述海量存储装置内的所述块仅读取一字节的信息。
技术方案18. 如技术方案15所述的机器可读介质,其中所述第一和第二命令是不同的命令。
技术方案19. 如技术方案15所述的机器可读介质,其中所述第一和第二命令是具有不同输入参数的相同命令。
技术方案20. 如技术方案19所述的机器可读介质,其中所述输入参数指定从块的起始端的偏移和字节数。
本发明的实施例可包括如上面所阐述的各种过程。这些过程可以用机器可执行指令实施。指令能用于使通用或专用处理器执行某些过程。备选地,这些过程可以由含有用于执行过程的硬连线逻辑电路或可编程逻辑电路(例如FPGA、PLD)的特定/定制硬件组件执行,或者由已编程计算机组件和定制硬件组件的任何组合执行。
本发明的元件还可被提供为用于存储机器可执行指令的机器可读介质。机器可读介质可包括但不限于软盘、光盘、CD-ROM以及磁光盘、FLASH存储器、ROM、RAM、EPROM、EEPROM、磁卡或光卡、传播介质或者适合于存储电子指令的另一类型的介质/机器可读介质。例如,本发明可以作为计算机程序下载,计算机程序可经由通信链路(例如调制解调器或网络连接)通过以载波或其它传播介质实施的数据信号从远程计算机(例如服务器)传输到发出请求的计算机(例如客户端)。
在前述说明书中,本发明已经参考其特定示范实施例被描述。然而,将显然的是,在不脱离如在所附权利要求书中所阐述的本发明的更广泛的精神和范围的情况下可对其进行各种修改和改变。说明书和附图因而被视为说明性的,而非约束的意思。
Claims (20)
1.一种海量存储装置,包括:
I/O接口;
非易失性存储介质;
控制器,用于处理在所述I/O接口处接收的第一和第二读取请求,所述第一读取请求包括第一逻辑块地址,所述第一读取请求用于在所述I/O接口处提供存储在所述非易失性存储介质内的第一块,所述第一块由所述第一逻辑块地址标识,所述第二读取请求包括第二逻辑块地址,并指定由所述第二块地址标识并存储在所述非易失性存储介质内的第二块内的一个或更多字节,所述第二读取请求用于在所述I/O接口处提供所述一个或更多字节。
2.如权利要求1所述的海量存储装置,其中所述第一和第二读取请求是不同的命令。
3.如权利要求1所述的海量存储装置,其中所述第一和第二读取请求是具有不同输入参数的相同命令。
4.如权利要求1所述的海量存储装置,其中所述非易失性存储介质包括FLASH存储器芯片。
5.如权利要求1所述的海量存储装置,其中所述一个或更多字节包括单个字节。
6.如权利要求1所述的海量存储装置,其中所述控制器进一步要处理第三读取请求,所述第三读取请求包括第三逻辑块地址,并指定在由所述第三块地址标识并存储在所述非易失性存储介质内的第三块内开始的连续多个字节,所述多个字节延伸到所述非易失性存储介质内的下一块中,所述第三读取请求用于在所述I/O接口处提供所述多个字节。
7.如权利要求1所述的设备,其中所述控制器要处理在所述I/O接口处接收的第一和第二写入请求,所述第一写入请求包括第三逻辑块地址和第三块,所述第一写入请求用于将所述第三块写入所述非易失性存储介质内,所述第二写入请求包括第四逻辑块地址和要写入由所述第四块地址标识的第四块内的一个或更多字节,所述第四写入请求用于将所述第四块内的所述一个或更多字节写入所述非易失性存储介质内。
8.一种计算系统,包括:
一个或更多通用处理核;
主存储器;
存储器控制器,在所述一个或更多通用处理核与所述主存储器之间;
外围控制中枢,耦合到所述存储器控制器;
海量存储装置,耦合到所述外围控制中枢,所述海量存储装置包括:
I/O接口;
非易失性存储介质;
控制器,用于处理在所述I/O接口处接收的第一和第二读取请求,所述第一读取请求包括第一逻辑块地址,所述第一读取请求用于在所述I/O接口处提供存储在所述非易失性存储介质内的第一块,所述第一块由所述第一逻辑块地址标识,所述第二读取请求包括第二逻辑块地址,并指定由所述第二块地址标识并存储在所述非易失性存储介质内的第二块内的一个或更多字节,所述第二读取请求用于在所述I/O接口处提供所述一个或更多字节。
9.如权利要求8所述的计算系统,其中所述第一和第二读取请求是不同的命令。
10.如权利要求8所述的计算系统,其中所述第一和第二读取请求是具有不同输入参数的相同命令。
11.如权利要求8所述的计算系统,其中所述非易失性存储介质包括FLASH存储器芯片。
12.如权利要求8所述的计算系统,其中所述一个或更多字节包括单个字节。
13.如权利要求8所述的计算系统,其中所述控制器进一步处理第三读取请求,所述第三读取请求包括第三逻辑块地址,并指定在由所述第三块地址标识并存储在所述非易失性存储介质内的第三块内开始的连续多个字节,所述多个字节延伸到所述非易失性存储介质内的下一块中,所述第三读取请求用于在所述I/O接口处提供所述多个字节。
14.如权利要求8所述的计算系统,其中所述控制器要处理在所述I/O接口处接收的第一和第二写入请求,所述第一写入请求包括第三逻辑块地址和第三块,所述第一写入请求用于将所述第三块写入所述非易失性存储介质内,所述第二写入请求包括第四逻辑块地址和要写入由所述第四块地址标识的第四块内的一个或更多字节,所述第四写入请求用于将所述第四块内的所述一个或更多字节写入所述非易失性存储介质内。
15.一种方法,包括:
向海量存储装置发送第一命令以从所述海量存储装置读取块;
将具有所述块内的信息的页写入主存储器;
向所述海量存储装置发送第二命令以仅将一字节的信息从所述页写入到存储在所述海量存储装置内的所述块。
16.如权利要求15所述的方法,其中所述方法进一步包括:抑制从所述海量存储装置读取少于第二块的信息,除非所述第二块的对应页在所述主存储器内。
17.如权利要求15所述的方法,进一步包括:向所述海量存储装置发送第三命令以从所述海量存储装置内的所述块仅读取一字节的信息。
18.如权利要求15所述的方法,其中所述第一和第二命令是不同的命令。
19.如权利要求15所述的方法,其中所述第一和第二命令是具有不同输入参数的相同命令。
20.如权利要求19所述的方法,其中所述输入参数指定从块的起始端的偏移和字节数。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/857,406 US20190042153A1 (en) | 2017-12-28 | 2017-12-28 | Mass storage device capable of fine grained read and/or write operations |
US15/857406 | 2017-12-28 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109992203A true CN109992203A (zh) | 2019-07-09 |
Family
ID=64572093
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811432877.2A Pending CN109992203A (zh) | 2017-12-28 | 2018-11-28 | 能够进行细粒度读取和/或写入操作的海量存储装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20190042153A1 (zh) |
EP (1) | EP3506075A1 (zh) |
CN (1) | CN109992203A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113836050A (zh) * | 2021-09-30 | 2021-12-24 | 龙芯中科技术股份有限公司 | 访存控制方法、装置、设备及可读存储介质 |
CN114327272A (zh) * | 2021-12-28 | 2022-04-12 | 深圳大普微电子科技有限公司 | 一种数据处理方法、固态硬盘控制器及固态硬盘 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI660269B (zh) * | 2018-01-26 | 2019-05-21 | 慧榮科技股份有限公司 | 用來於一記憶裝置中進行寫入管理之方法以及記憶裝置及其控制器 |
US10929251B2 (en) | 2019-03-29 | 2021-02-23 | Intel Corporation | Data loss prevention for integrated memory buffer of a self encrypting drive |
US11010079B2 (en) | 2019-04-09 | 2021-05-18 | Intel Corporation | Concept for storing file system metadata within solid-stage storage devices |
US20220300208A1 (en) * | 2021-03-18 | 2022-09-22 | Micron Technology, Inc. | Memory read performance techniques |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101573047B1 (ko) * | 2009-01-23 | 2015-12-02 | 삼성전자주식회사 | 복합 메모리 장치 및 이를 이용한 i/o 처리 방법 |
US9251058B2 (en) * | 2010-09-28 | 2016-02-02 | SanDisk Technologies, Inc. | Servicing non-block storage requests |
KR101938210B1 (ko) * | 2012-04-18 | 2019-01-15 | 삼성전자주식회사 | 낸드 플래시 메모리, 가변 저항 메모리 및 컨트롤러를 포함하는 메모리 시스템의 동작 방법 |
US9105333B1 (en) * | 2014-07-03 | 2015-08-11 | Sandisk Technologies Inc. | On-chip copying of data between NAND flash memory and ReRAM of a memory die |
US9904490B2 (en) * | 2015-06-26 | 2018-02-27 | Toshiba Memory Corporation | Solid-state mass storage device and method for persisting volatile data to non-volatile media |
-
2017
- 2017-12-28 US US15/857,406 patent/US20190042153A1/en not_active Abandoned
-
2018
- 2018-11-28 EP EP18209000.1A patent/EP3506075A1/en not_active Ceased
- 2018-11-28 CN CN201811432877.2A patent/CN109992203A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113836050A (zh) * | 2021-09-30 | 2021-12-24 | 龙芯中科技术股份有限公司 | 访存控制方法、装置、设备及可读存储介质 |
CN114327272A (zh) * | 2021-12-28 | 2022-04-12 | 深圳大普微电子科技有限公司 | 一种数据处理方法、固态硬盘控制器及固态硬盘 |
Also Published As
Publication number | Publication date |
---|---|
EP3506075A1 (en) | 2019-07-03 |
US20190042153A1 (en) | 2019-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109992203A (zh) | 能够进行细粒度读取和/或写入操作的海量存储装置 | |
US11797180B2 (en) | Apparatus and method to provide cache move with non-volatile mass memory system | |
US10742737B2 (en) | Storage device and electronic device including the same | |
EP2248023B1 (en) | Extended utilization area for a memory device | |
CN106776358B (zh) | Dimm ssd寻址性能技术 | |
WO2017084565A1 (zh) | 存储数据访问方法及相关的控制器、设备、主机和系统 | |
US9164804B2 (en) | Virtual memory module | |
US10346052B2 (en) | Memory system with priority processing and operating method thereof | |
CN112214158B (zh) | 主机输出输入命令的执行装置及方法及计算机可读取存储介质 | |
TW201411551A (zh) | 資訊處理裝置 | |
US11494318B2 (en) | Controller and operation method thereof | |
US11762590B2 (en) | Memory system and data processing system including multi-core controller for classified commands | |
CN109783405A (zh) | 存储设备和存储设备的操作方法 | |
US11922062B2 (en) | Controller and operating method thereof | |
CN106919343A (zh) | 周边接口电路与周边存储器系统 | |
CN109542336B (zh) | 存储设备及其操作方法 | |
CN110059099A (zh) | 用于在数据库中执行迭代器操作的设备 | |
US11662947B2 (en) | Memory system and data processing system performing operation on commands before fetching of commands | |
KR102725183B1 (ko) | 컨트롤러 및 컨트롤러의 동작방법 | |
CN112732171B (zh) | 控制器及其操作方法 | |
KR20110124821A (ko) | 복수의 커맨드 실행이 가능한 메모리 시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |