CN111984579A - 针对差异数据粒度的数据传输方法和设备 - Google Patents
针对差异数据粒度的数据传输方法和设备 Download PDFInfo
- Publication number
- CN111984579A CN111984579A CN202010222543.3A CN202010222543A CN111984579A CN 111984579 A CN111984579 A CN 111984579A CN 202010222543 A CN202010222543 A CN 202010222543A CN 111984579 A CN111984579 A CN 111984579A
- Authority
- CN
- China
- Prior art keywords
- media
- storage medium
- slice
- controller
- media slice
- 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
Images
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/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- 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/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0658—Controller construction 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/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
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)
Abstract
本文公开了与数据传输关联的设备、存储介质和方法。在一些实施例中,一种用于计算的设备包括:提交生成器和介质写入生成器。提交生成器被布置成生成与存储介质的介质切片对应关联的提交指示符,以分别向存储介质的存储介质控制器表示是否继续将介质切片写入到存储介质中。介质写入生成器被布置成向存储介质控制器提供要被写入到存储介质中的介质切片的数据块以及关联的提交指示符。每个数据块的大小小于每个介质切片的大小。还描述并要求保护了其它实施例。
Description
技术领域
本公开涉及计算领域。更特定地,本公开涉及用于当主机的访问粒度与介质不同时将数据从主机传输到存储装置/存储器介质的方法和设备。
背景技术
随着集成电路和存储装置/存储器技术的发展,存储装置/存储器介质的容量在这些年来稳步增加。迄今为止,计算系统具有千兆字节固态存储装置/存储器介质并不罕见。为了改进介质访问效率和存储空间利用,存储装置/存储器介质内部的存储空间经常被划分成大的原子访问单元(表示为“切片”),例如2KB切片。然而,为了避免传输已经在介质中的大量冗余数据并且为了减少传送较高优先级数据的延迟,主机写入可以使用小得多的大小,例如512B。换句话说,经常花费多个主机写入来填满存储装置/存储器介质的一个切片。
外围部件互连高速连接(PCIe或PCI-e)是被开发以替代较旧的PCI、PCI扩展(PCI-X)和加速图形端口(AGP)总线标准的高速串行计算机扩展总线标准。现今,它是用于个人计算机的图形卡、硬盘驱动器、固态驱动器(SSD)、无线保真(Wi-Fi)和以太网硬件连接的常见主板接口。PCIe相对于较旧的标准具有许多改进,包括更高的最大系统总线吞吐量、更低的I/O引脚数、和更小的物理占地面积、针对总线装置的更好性能缩放、更详细的错误检测和报告机制(高级错误报告AER)、以及原生热插拔功能性。PCIe标准的最近修订版提供了对I/O虚拟化的硬件支持。
对于基于PCIe的存储装置/存储器系统,PCIe主机经常需要频繁地向存储介质写入数据或从存储介质读取数据。由于介质内部的存储空间经常被划分成大的切片,因此为了避免传输已经在介质中的大量冗余数据并为了减少传送较高优先级事务层分组(TLP)或数据链路层分组(DLLP)的延迟,PCIe主机写入通常使用小得多的大小以用于PCIe存储器写入TLP。此外,对于一些应用,主机可能需要更新在给定介质切片内的多个非连续位置中的数据。
因此,需要一种用于在通过较小数据单元进行操作的主机和通过较大数据单元进行操作的存储装置/存储器介质之间(诸如在PCIe主机和PCIe端点存储装置/存储器控制器之间)进行有效数据传输的方法。
附图说明
结合附图通过以下详细描述,将容易地理解实施例。为了促进本描述,相同的附图标记表示相同的结构元件。在附图的图中,作为示例并不是作为限制示出了实施例。
图1示出了结合根据各种实施例的、针对差异数据粒度的本公开的数据传输技术的计算系统的概览。
图2示出了结合根据各种实施例的、针对差异数据粒度的本公开的数据传输技术的具有PCIe主机和PCIe存储装置/存储器控制器的计算系统的部件视图。
图3示出了根据各种实施例的、通过差异数据粒度将数据块写入到存储装置/存储器介质中的示例操作流程。
图4示出了根据各种实施例的、适合用于实践本公开的计算机平台的硬件部件视图。
图5示出了根据各种实施例的、具有用于实践参考图1-3所描述的方法的指令的存储介质。
具体实施方式
如早先指明的,对于给定的介质原子访问单元,期望的是缩短将数据从主机(例如PCIe主机)传输到存储装置/存储器介质所要求的时间。由于以介质原子访问粒度来完成到存储装置/存储器介质的写入,因此对于此类系统的挑战之一将是确定存储装置/存储器控制器应该开始执行介质切片写入的适当时间。因此,目标将是减少从主机到介质的数据传输的时延,同时还通过防止过早转储清除而使每个介质写入最高效(基本上消除了在介质链路上的冗余数据传输)。例如,假设主机写入大小是512B,并且介质原子访问大小是2KB。如果主机仅想要向介质传输一个512B的数据块,则存储装置/存储器控制器应该在接收到具有512B数据的存储器写入(例如,PCIe存储器写入TLP)之后很快开始执行读取-修改-写入操作以更新介质中的此数据。然而,如果主机想要在介质切片地址范围内写入2个或3个数据块,则存储装置/存储器控制器应该在开始执行读取-修改-写入操作以将此数据写入到介质之前等待要接收的具有所有2-3个块的存储器写入。
因此,关于介质切片内需要更新的数据量以及开始向介质传输数据的适当时间,要求一种用于在主机和存储装置/存储器控制器之间进行有效通信的方法。此外,在PCIe主机和存储装置存储器控制器的情况下,为了确保互操作性,期望的是解决方案符合PCIe规范(包括但不限于最新的PCIe规范V5.0)。
为了解决这些挑战,本文公开了与针对差异数据粒度的数据传输技术关联的设备、方法和计算机可读存储介质。在各种实施例中,计算系统包括主机、耦合到主机的存储装置/存储器控制器、以及耦合到存储装置/存储器控制器并由其控制的存储装置/存储器介质。主机被布置成通过小于存储装置/存储器介质的介质切片的大小的数据粒度进行操作。为了促进主机和存储装置/存储器介质之间(经由存储装置/存储器控制器)的数据的高效传输,除了要被写入到存储装置/存储器介质中的介质切片的数据块之外,主机被布置成进一步提供与介质切片关联的提交指示符,以向存储介质控制器表示是否继续将特定介质切片写入到存储装置/存储器介质中。
在各种实施例中,在主机和存储装置/存储器控制器是PCIe主机和存储装置/存储器控制器的情况下,PCIe主机经由存储器写入TLP向PCIe存储装置/存储器控制器提供数据块,其中每个介质切片的关联的提交指示符被存储在TLP的报头中的字段中。在各种实施例中,每个介质切片的提交指示符被存储在TLP的报头中的保留字段中,从而避免影响PCIe的功能性。
下面将参考附图进一步描述本公开的数据传输技术的这些和其它方面。在以下详细描述中,将对形成其一部分的附图进行参考,其中贯穿全文,相同的附图标记表示相同的部分,并且其中作为可被实践的说明实施例来示出。要理解,可以利用其它实施例,并且可以在不脱离本公开的范围的情况下进行结构或逻辑改变。因此,不以限制性意义进行以下详细描述,并且实施例的范围由所附权利要求及其等效物所定义。
可以采用最有助于理解所要求保护的主题的方式将各种操作依次描述为多个分立动作或操作。然而,描述的顺序不应该被解释为暗示这些操作一定是顺序相关的。特定地,这些操作可以不以呈现的顺序来执行。所描述的操作可以采用与所描述的实施例不同的顺序来执行。可以执行各种附加操作和/或在附加实施例中可以省略所描述的操作。
为了本公开的目的,短语“A和/或B”意味着(A)、(B)或(A和B)。为了本公开的目的,短语“A、B和/或C”意味着(A)、(B)、(C)、(A和B)、(A和C)、(B和C)、或(A、B和C)。
描述可以使用短语“在实施例中”或“在一些实施例中”,它们可以各自指相同或不同实施例中的一个或多个。此外,如相对于本公开的实施例所使用的术语“包括”、“包含”、“具有”及诸如此类是同义词。
如本文所使用的,术语“模块”或“引擎”可以指专用集成电路(ASIC)、电子电路、执行一个或多个软件或固件程序的存储器(共享、专用或群组)和/或处理器(共享、专用或群组)、组合逻辑电路、和/或提供所描述的功能性的其它适合部件,或者是它们的一部分、或者包括它们。
现在参考图1,其中示出了结合根据各种实施例的、针对差异数据粒度的本公开的数据传输技术的计算系统的概览。如所示出的,计算系统100包括主机102、耦合到主机102的存储装置/存储器控制器104、以及耦合到存储装置/存储器控制器104并由其控制的存储装置/存储器介质106。主机102被布置成通过小于存储装置/存储器介质106的介质切片的大小的数据粒度进行操作。例如,主机102可被布置成通过512B的数据粒度进行操作,而存储装置/存储器介质可被布置成通过2KB的较大数据粒度进行操作。
为了促进主机102和存储装置/存储器介质106之间经由存储装置/存储器控制器104的数据的高效传输,主机102和存储装置/存储器控制器104与针对差异数据粒度的本公开的数据传输技术结合。即,除了要被写入到存储装置/存储器介质中的介质切片的数据块之外,主机102被布置成进一步提供与介质切片关联的提交指示符,以向存储装置/存储器控制器104表示是否继续将特定介质切片写入到存储装置/存储器介质106中。如果关联的提交指示符向存储装置/存储器控制器104表示继续将特定介质切片写入到存储装置/存储器介质106中,或者如果其已经接收到介质切片的所有数据块,则存储装置/存储器控制器104被补充地布置成继续将特定介质切片写入到存储装置/存储器介质106中。在主机102提供向存储装置/存储器控制器104表示继续写入特定介质切片的提交指示符而不提供介质切片的所有数据块的情况下,存储装置/存储器介质106执行读取-修改-写入操作,以在将介质切片写入到存储装置/存储器介质106之前检索介质切片的丢失数据块。
在各种实施例中,主机102向存储装置/存储器控制器104提供介质切片的关联的提交指示符连同介质切片的数据块。在其它实施例中,主机102可以向存储装置/存储器控制器104分开地提供介质切片的关联的提交指示符和介质切片的数据块。在各种实施例中,主机102在相同数据链路上向存储装置/存储器控制器104提供介质切片的关联的提交指示符和介质切片的数据块。在其它实施例中,主机102可以针对关联的提交指示符在分开的链路上(例如在侧通道上)向存储装置/存储器控制器104提供介质切片的关联的提交指示符和介质切片的数据块。
除了结合于其中的数据传输技术110的方面之外,主机102和存储装置/存储器控制器104可以是本领域中已知的此类元件中的任何一个。主机102可以包括单核或多核处理器。存储装置/存储器控制器104可以是许多易失性或非易失性存储装置/存储器控制器中的任何一个,包括但不限于闪存或固态存储器或驱动器控制器。类似地,存储装置/存储器介质106可以是许多易失性或非易失性存储介质中的任何一个,包括但不限于闪存或固态存储器或驱动器。非易失性存储器(NVM)装置可以包括字节可寻址就地写入(write-in-place)三维交叉点存储器装置,或其它字节可寻址就地写入NVM装置(也称为持久性存储器),诸如单级或多级相变存储器(PCM)或具有开关的相变存储器(PCMS)、使用硫属化物相变材料(例如,硫属化物玻璃)的NVM装置、电阻存储器(包括金属氧化物基、氧空位基和导电桥随机存取存储器(CB-RAM))、纳米线存储器、铁电随机存取存储器(FeRAM,FRAM)、结合忆阻器技术的磁阻随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、基于自旋电子磁结存储器的装置、基于磁隧穿结(MTJ)的装置、基于DW(畴壁)和SOT(自旋轨道转移)的装置、基于晶闸管的存储器装置、或任何以上项的组合、或其它存储器。固态驱动器(SSD)可以具有用于数据中心、消费者、专业或嵌入式应用的各种尺寸和容量的形状因子。
在各种实施例中,主机102和存储装置/存储器控制器104是PCIe主机和存储装置/存储器控制器。下面将参考图2进一步描述具有是PCIe主机和存储装置/存储器控制器的主机102和存储装置/存储器控制器104的计算系统的示例实施例。
除了针对差异数据粒度的本公开的数据传输技术之外,计算系统100另外可以是本领域已知的许多计算平台、装置和/或系统中的任何一个,包括但不限于可穿戴装置、智能电话、计算平板、膝上型计算机、桌上型计算机、游戏控制台、机顶盒、服务器等等。下面将参考图4进一步描述计算系统100的示例实施例。
在进一步描述针对差异数据粒度的数据传输技术之前,应该注意,来自主机的成功写入可以针对可以或可以不彼此相邻的不同介质切片,或者针对相同介质切片的连续或非连续数据块。
现在参考图2,其中示出了结合根据各种实施例的、针对差异数据粒度的本公开的数据传输技术的具有PCIe主机和PCIe存储装置/存储器控制器的计算系统的部件视图。如所示出的,对于所示实施例,可以是图1的计算系统100的计算系统200包括PCIe主机202和PCIe端点存储装置/存储器控制器242。PCIe主机202包括主机应用层204和PCIe控制器-主机206,而PCIe端点存储装置/存储器控制器242包括PCIe控制器-端点246和端点应用层244。
如所示出的,PCIe主机202的主机应用层204包括彼此通信地耦合的主机写入请求块212、提交生成逻辑块214和主机存储器写入(MWr)生成器216。主机写入请求块212被布置成发起存储器写入请求以将介质切片的数据块写入到由存储装置/存储器控制器242所控制的存储装置/存储器介质中。主机写入请求块212向提交生成逻辑块214和主机存储器写入(MWr)生成器216通知或转发存储器写入请求。提交生成逻辑块214被布置成跟踪各种介质切片的写入的数据块的量,并生成介质切片的对应的、关联的提交指示符以用于主机存储器写入生成器216。提交指示符向存储装置/存储器控制器242表示关联的介质切片是否要被写入到存储装置/存储器控制器242控制的存储装置/存储器介质。主机存储器写入生成器216被布置成基于由主机写入请求块212提供的数据块和由提交生成逻辑块214提供的提交指示符,生成用于存储装置/存储器控制器242的存储器写入TLP。在各种实施例中,主机存储器写入生成器216被布置成将提交指示符放置在TLP的报头中的对应字段中。特定地,如早先指明的,对于PCIe,在各种实施例中,每个介质切片的提交指示符被存储在TLP的报头中的保留字段中,从而避免影响PCIe的功能性。
PCIe控制器-主机206被布置成处置PCIe主机202的所有物理层、链路层以及事务层任务,包括但不限于发送存储器写入TLP,其具有要被写入到存储装置/存储器介质中的数据块以及介质切片的关联的提交指示符。在各种实施例中,事务层负责对数据和状态消息业务进行分组化和去分组化的工作。数据链路层可以被细分成包括介质访问控制(MAC)子层。物理层可以被细分成逻辑和电气子层。此外,物理逻辑子层可以包含物理编码子层(PCS)。除了针对差异数据粒度的本公开的数据传输技术之外,PCIe控制器-主机206另外可以是本领域已知的许多主机PCIe控制器中的任何一个。
如早先描述的,来自PCIe控制器-主机206的连续存储器写入TLP可以指向可以或可以不彼此相邻的不同介质切片,或者针对相同介质切片的连续或非连续数据块。
PCIe控制器-端点246(类似于PCIe控制器-主机206)被布置成处置除了存储装置/存储器控制器242的物理层、链路层以及事务层任务之外的所有物理层、链路层以及事务层任务。这些任务同样包括但不限于接收存储器写入TLP,其具有要被写入到存储装置/存储器介质中的数据块以及介质切片的关联的提交指示符。除了针对差异数据粒度的本公开的数据传输技术之外,存储装置/存储器控制器242另外可以是本领域已知的许多端点PCIe控制器中的任何一个。
如所示出的,存储装置/存储器控制器242的端点应用层244包括彼此耦合的介质写入控制器252、介质写入缓冲器254和介质切片写入跟踪器256。介质写入缓冲器254被布置成缓冲要被写入到存储装置/存储器介质中的介质切片的数据块,直到数据块被实际写入为止。介质切片写入跟踪器256被布置成跟踪各种介质切片到存储装置/存储器介质的写入。介质写入控制器252被布置成与介质写入缓冲器254和介质切片写入跟踪器256协作并控制介质切片到存储装置/存储器介质中的写入。下面将参考图3进一步描述介质写入控制器252的示例操作流程。
在各种实施例中,PCIe主机202的主机应用层204的主机写入请求块212、提交生成逻辑块214和主机存储器写入(MWr)生成器216,PCIe控制器-主机206,PCIe控制器-端点246中的每个;以及介质写入控制器252、介质写入缓冲器254和介质切片写入跟踪器256中的每个可以采用硬件、软件或其组合来实现。硬件实施例可以通过ASIC或诸如FPGA的可编程电路来实现。软件实施例可以采用可被编译成由硬件处理器或控制器所支持的汇编代码的许多编程语言中的任何一个来实现。
现在参考图3,其中示出了根据各种实施例的、通过差异数据粒度将介质切片写入在存储装置/存储器介质中的示例操作流程。如所示出的,对于所示实施例,用于通过差异数据粒度将介质切片写入在存储装置/存储器介质中的操作流程300包括在框302-322执行的操作。在各种实施例中,操作可以例如由图1的存储装置/存储器控制器106或图2的242执行,特定地,由端点应用层244的介质写入控制器252执行。在其它实施例中,操作流程可以具有更多或更少的操作,或者具有以不同顺序执行的操作中的一些操作。
操作流程300在框302开始。在框302,接收到介质切片的数据块及其关联的提交指示符。接下来,在框304,进行关于提交指示符是否表示关联的介质切片要被写入到存储装置/存储器介质中的确定。如果在框304的确定的结果指示提交指示符表示关联的介质切片要被写入到存储装置/存储器介质中,则操作流程300继续到框306,否则操作流程300继续到框308。在框306或308,进行关于是否已经接收到介质切片的所有数据块的确定。
如果在框306的确定的结果指示尚未接收到介质切片的所有数据块,则操作流程300继续到框310。在框310,执行介质读取以从存储装置/存储器介质检索尚未接收到的数据块。接下来,在框312,将(具有所有数据块的)介质切片写入到存储装置/存储器介质中。操作流程300从框312继续到框320。在框320,更新介质切片写入跟踪数据结构以反映介质切片的写入。
如果在框306或框308的确定的结果指示已经接收到介质切片的所有数据块,则操作流程300继续到框314。在框314,将(具有所有数据块的)介质切片写入到存储装置/存储器介质中。操作流程300从框314还继续到框320,在框320中,更新介质切片写入跟踪数据结构以反映介质切片的写入。
如果在框308的确定的结果指示尚未接收到介质切片的所有数据块,则操作流程300继续到框316。在框316,缓冲数据块。操作流程300从框316继续到框318。在框318,更新介质切片写入跟踪数据结构以反映介质切片的数据块的缓冲。
操作流程300从框318或框320继续到框322。在框322,终止操作流程的当前迭代,并且操作流程等待介质切片的下一数据块和介质切片的关联的提交指示符的到达。
因此,已经描述了用于通过差异数据粒度进行数据传输的方法和设备。所述方法和设备至少潜在地提供以下优点:
1. 减少在主机和介质的写入粒度不同时执行存储装置/存储器系统的介质切片的部分或完整更新所需要的时间、逻辑和操作。
2. 允许在链路上使用最小数量的事务在给定介质原子写入单元内传输多个非连续数据区段。这通过以下方法来实现:以主机原子访问粒度来累积主机数据,并以介质原子访问粒度基于“提交”字段在单个介质写入中将它们转储清除(写入)到介质。
3. 在对于PCIe实施例维持PCIe规范符合的同时,执行上面提到的效率改进。这允许通用PCIe端点控制器(物理、链路和事务层)设计和验证附属的完全重新使用性,以改进上市时间并确保与标准PCIe装置的互操作性。
现在参考图4,其中示出了根据各种实施例的、可以适合用于实践本公开的示例计算平台。如所示出的,计算平台、装置或系统400(在下文中,简称为计算平台)(其可以是图1的计算系统100或图2的计算系统200)包括一个或多个片上系统(SoC)402、ROM 403和系统存储器404。每个SoC 402可以包括一个或多个处理器核(CPU)、一个或多个图形处理器单元(GPU)、一个或多个加速器(诸如计算机视觉(CV)和/或深度学习(DL)加速器)。ROM 403可以包括基本输入/输出系统服务(BIOS)405。CPU、GPU和CV/DL加速器可以是本领域已知的许多这些元件中的任何一个。类似地,ROM 403和BIOS 405可以是本领域已知的许多ROM和BIOS中的任何一个。SoC 402和系统存储器404被布置成通过不同的数据粒度进行操作,并且被提供有针对差异数据粒度的本公开的数据传输技术。除了本公开的数据传输技术之外,SoC402和系统存储器404可以是本领域已知的许多SoC和易失性存储装置中的任何一个。
此外,计算平台400可以包括持久性存储装置406。类似地,持久性存储装置406被布置成通过如与SoC 402相比不同的数据粒度进行操作,并且同样被提供有针对差异数据粒度的本公开的数据传输技术。持久性存储装置406的示例可以包括但不限于闪存驱动器、硬盘驱动器、光盘只读存储器(CD-ROM)等等。
此外,计算平台400可以包括用于与一个或多个I/O装置(诸如传感器420)通过接口连接的一个或多个输入/输出(I/O)接口408。其它示例I/O装置可以包括但不限于显示器、键盘、光标控制等等。计算平台400还可以包括一个或多个通信接口410(诸如网络接口卡、调制解调器等等)。通信装置可以包括本领域已知的任何数量的通信和I/O装置。通信装置的示例可以包括但不限于用于Bluetooth®、近场通信(NFC)、WiFi、蜂窝通信(诸如LTE4G/5G)等等的联网接口。所述元件可以经由系统总线411而被彼此耦合,所述系统总线可以代表一个或多个总线。在多个总线的情况下,它们可以通过一个或多个总线桥接器(未示出)来桥接。在各种实施例中,系统总线411可以包括一个或多个PCIe总线。
这些元件中的每个可以执行其在本领域已知的常规功能。特定地,ROM 403可以包括具有引导加载器的BIOS 405。可以采用系统存储器404和海量存储装置4106来存储编程指令的工作副本和持久性副本,所述编程指令实现与操作系统、一个或多个应用、以及用于针对差异数据粒度的本公开的数据传输技术的控制器逻辑(统称为计算逻辑922)关联的操作。各种元件可以通过由SoC 402的(一个或多个)处理器核支持的汇编器指令或可以被编译成此类指令的高级语言(诸如例如C)来实现。
如由本领域技术人员将意识到的,本公开可以被体现为方法或计算机程序产品。相应地,本公开除了如早先描述那样采用硬件来体现,还可以采取完全软件实施例(包括固件、驻留软件、微代码等)或组合软件和硬件方面的实施例(它们一般全部可以被称为“电路”、“模块”或“系统”)的形式。此外,本公开可以采取在表达的任何有形或非暂时性介质中体现的计算机程序产品的形式,所述表达的任何有形或非暂时性介质具有在介质中体现的计算机可使用程序代码。图5示出了可以适合用于存储指令的示例计算机可读非暂时性存储介质,所述指令响应于由设备执行指令而使设备实践参考图1-3所描述的本公开的所选方面。如所示出的,非暂时性计算机可读存储介质502可以包括许多编程指令504。编程指令504可被配置成使能装置(例如计算平台400)响应于编程指令的执行而实现计算逻辑422(的方面)。在备选实施例中,编程指令504可以替代地被设置在多个计算机可读非暂时性存储介质502上。在仍有的其它实施例中,编程指令504可以被设置在计算机可读暂时性存储介质502(诸如信号)上。
可以利用一个或多个计算机可使用或计算机可读介质的任何组合。计算机可使用或计算机可读介质可以是例如但不限于:电子、磁、光、电磁、红外、或半导体系统、设备、装置或传播介质。计算机可读介质的更特定示例(非穷举列表)将包括以下项:具有一个或多个导线的电气连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪速存储器)、光纤、便携式光盘只读存储器(CD-ROM)、光存储装置、传送介质(诸如支持因特网或内联网的那些传送介质)、或磁存储装置。注意,计算机可使用或计算机可读介质甚至可以是纸或另一适合介质(在其上打印程序),因为程序可以例如经由对纸张或其它介质进行光扫描而被电捕获,然后被编译、解译或另外以适合方式处理(如果必要的话),并且然后被存储在计算机存储器中。在此文档的上下文中,计算机可使用或计算机可读介质可以是可包含、存储、传递、传播或传输程序供指令执行系统、设备或装置使用或与之结合使用的任何介质。计算机可使用介质可以包括传播的数据信号,其中计算机可使用程序代码与其一起(或者在基带中或者作为载波的一部分)被体现。计算机可使用程序代码可以使用任何适当介质(包括但不限于无线、有线、光纤线缆、RF等)来传送。
用于实行本公开操作的计算机程序代码可以采用一个或多个编程语言的任何组合来编写,所述编程语言包括面向对象的编程语言(诸如Java、Smalltalk、C++、或诸如此类)以及常规的过程编程语言(诸如“C”编程语言或类似的编程语言)。程序代码可以完全在用户的计算机上执行、部分在用户的计算机上执行、作为独立软件包来执行、部分在用户的计算机上并且部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一情形中,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))而被连接到用户的计算机,或者(例如使用因特网服务提供商通过因特网)可以进行到外部计算机的连接。
本申请提供了以下技术方案:
1. 一种用于计算的设备,包括:
提交生成器,所述提交生成器用于生成与存储介质的介质切片对应关联的提交指示符,以分别向所述存储介质的存储介质控制器表示是否继续将所述介质切片写入到所述存储介质中;以及
介质写入生成器,所述介质写入生成器用于向所述存储介质控制器提供要被写入到所述存储介质中的所述介质切片的数据块以及所关联的提交指示符;
其中每个数据块的大小小于每个介质切片的大小。
2. 如技术方案1所述的设备,其中
所述设备是外围部件互连高速连接(PCIe)主机;
所述存储介质控制器是PCIe存储介质控制器;以及
所述介质写入生成器被布置成生成存储器写入事务层分组(TLP),其中提交字段在每个TLP的报头中,以向所述PCIe存储介质控制器提供要被写入到所述存储介质中的所述介质切片的所述数据块以及所关联的提交指示符。
3. 一种用于计算的设备,包括:
介质写入数据缓冲器,所述介质写入数据缓冲器用于缓冲要被写入到存储介质中的介质切片的数据块;以及
介质写入控制器,所述介质写入控制器被耦合到所述介质写入数据缓冲器以控制将所缓冲的介质切片写入到所述存储介质;
其中除了要被写入到所述存储介质中的所述数据块之外,所述设备还被提供有与要被写入到所述存储介质中的所述介质切片对应关联的提交指示符;以及
其中所述介质写入控制器被布置成在接收到表示继续将所述介质切片写入到所述存储介质中的所关联的提交指示符时,使介质切片的所缓冲的数据块被写入到所述存储介质中;
其中每个数据块的大小小于每个介质切片的大小。
4. 如技术方案3所述的设备,其中所述介质写入控制器被布置成确定介质切片的所关联的提交指示符是否表示继续将所述介质切片写入到所述存储介质中;并且确定是否已经接收到介质切片的所有数据块。
5. 如技术方案4所述的设备,其中所述介质写入控制器被布置成在确定已经接收到所述介质切片的所有数据块时,进一步使所述介质切片被写入到所述存储介质。
6. 如技术方案5所述的设备,其中所述介质写入控制器被布置成在使所述介质切片被写入到所述存储介质时,进一步更新介质切片写入跟踪器数据结构。
7. 如技术方案4所述的设备,其中所述介质写入控制器被布置成在确定所述介质切片的所关联的提交指示符表示继续将所述介质切片写入到所述存储介质中,以及确定尚未接收到所述介质切片的所有数据块时,进一步使所述介质切片的剩余数据块从所述存储介质被读取。
8. 如技术方案7所述的设备,其中所述介质写入控制器被布置成在从所述存储介质读取所述介质切片的所述剩余数据块时,进一步使所述介质切片被写入到所述存储介质。
9. 如技术方案8所述的设备,其中所述介质写入控制器被布置成在使所述介质切片被写入到所述存储介质时,进一步更新介质切片写入跟踪器数据结构。
10. 如技术方案4所述的设备,其中所述介质写入控制器被布置成在确定所述介质切片的所关联的提交指示符不表示继续将所述介质切片写入到所述存储介质中,以及确定尚未接收到所述介质切片的所有数据块时,进一步使介质切片的所述数据块在所述介质写入数据缓冲器中被缓冲。
11. 如技术方案10所述的设备,其中所述介质写入控制器被布置成在使介质切片的所述数据块在所述介质写入数据缓冲器中被缓冲时,进一步更新介质切片写入跟踪器数据结构。
12. 如技术方案3所述的设备,其中
所述设备是外围部件互连高速连接(PCIe)存储介质控制器;以及
作为存储器写入事务层分组(TLP),要被写入到所述存储介质中的所述介质切片的所述数据块以及所关联的提交指示符由PCIe主机向所述PCIe存储介质控制器提供,其中每个TLP的报头中的提交字段具有所述提交指示符。
13. 如技术方案12所述的设备,其中所述提交字段在具有所述提交指示符的每个TLP的所述报头的保留字段中。
14. 一种用于计算的方法,包括:
由外围部件互连高速连接(PCIe)主机生成与存储介质的介质切片对应关联的提交指示符,以分别向所述存储介质的存储介质控制器表示是否继续将所述介质切片写入到所述存储介质中;以及
由所述PCIe主机生成存储器写入事务层分组(TLP)并向所述存储介质控制器提供所述存储器写入事务层分组,所述存储器写入事务层分组具有要被写入到所述存储介质中的所述介质切片的数据块以及被包括在所述TLP分组的报头中的所关联的提交指示符。
15. 如技术方案14所述的方法,进一步包括:
由所述存储介质控制器接收所述存储器写入TLP,所述存储器写入TLP具有要被写入到所述存储介质中的所述介质切片的所述数据块,以及被包括在所述TLP分组的报头中的所关联的提交指示符;以及
由所述存储介质控制器来缓冲要被写入到所述存储介质中的所述介质切片的所述数据块。
16. 至少一种计算机可读介质(CRM),所述至少一种计算机可读介质具有存储在其中的指令,所述至少一种计算机可读介质用于响应于由存储介质控制器执行所述指令而使所述存储介质控制器:
缓冲要被写入到存储介质中的介质切片的数据块,所述存储介质由所述存储介质控制器所控制;以及
控制将所缓冲的介质切片写入到所述存储介质;
其中要被写入到所述存储介质中的所述数据块经由外围部件互连高速连接(PCIe)存储器写入事务层分组(TLP)而被提供给所述存储介质控制器,其中所述TLP的报头具有与要被写入到所述存储介质中的所述介质切片对应关联的提交指示符;以及
其中控制写入包括在接收到TLP的报头中的所关联的提交指示符时,使介质切片的所缓冲的数据块被写入到所述存储介质中,所关联的提交指示符表示继续将所述介质切片写入到所述存储介质中。
17. 如技术方案16所述的CRM,其中进一步使所述存储介质控制器确定TLP的报头中的、介质切片的所关联的提交指示符是否表示继续将所述介质切片写入到所述存储介质中;并且确定是否已经接收到介质切片的所有数据块。
18. 如技术方案17所述的CRM,其中进一步使所述存储介质控制器在确定已经接收到所述介质切片的所有数据块时,使所述介质切片被写入到所述存储介质。
19. 如技术方案17所述的CRM,其中进一步使所述存储介质控制器在确定所述TLP的报头中的、所述介质切片的所关联的提交指示符表示继续将所述介质切片写入到所述存储介质中,以及确定尚未接收到所述介质切片的所有数据块时,使所述介质切片的剩余数据块从所述存储介质被读取。
20. 如技术方案17所述的CRM,其中进一步使所述存储介质控制器在确定所述TLP的报头中的、所述介质切片的所关联的提交指示符不表示继续将所述介质切片写入到所述存储介质中,以及确定尚未接收到所述介质切片的所有数据块时,使介质切片的所述数据块被缓冲。
参考根据本公开实施例的方法、设备(系统)和计算机程序产品的流程图说明和/或框图来描述本公开。将理解,流程图说明和/或框图的每个框以及流程图说明和/或框图中的框的组合可以由计算机程序指令来实现。这些计算机程序指令可以被提供给通用计算机、专用计算机、或其它可编程数据处理设备的处理器以生产机器,使得经由计算机或其它可编程数据处理设备的处理器执行的指令创建用于实现在流程图和/或一个或多个框图框中规定的功能/动作的组件。
这些计算机程序指令还可以被存储在计算机可读介质中,所述计算机可读介质可以引导计算机或其它可编程数据处理设备以特定方式起作用,使得被存储在计算机可读介质中的指令生产制品,所述制品包括实现在流程图和/或一个或多个框图框中规定的功能/动作的指令组件。
计算机程序指令还可被加载到计算机或其它可编程数据处理设备上,以使要在计算机或其它可编程设备上执行的一系列操作步骤产生计算机实现的过程,使得在计算机或其它可编程设备上执行的指令提供用于实现在流程图和/或一个或多个框图框中规定的功能/动作的过程。
图中的流程图和框图示出了根据本公开各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能性和操作。在这方面,流程图或框图中的每个框可以代表模块、区段、或代码的部分,其包括用于实现(一个或多个)规定的逻辑功能的一个或多个可执行指令。还应该注意,在一些备选实现中,在框中指明的功能可以不以图中指明的顺序发生。例如,取决于所涉及的功能性,接连示出的两个框实际上可以基本上同时执行,或者所述框有时可以采用相反顺序执行。还将注意,框图和/或流程图说明的每个框以及框图和/或流程图说明中的框的组合可以由基于专用硬件的系统实现,所述系统执行所规定的功能或动作、或者专用硬件和计算机指令的组合。
本文使用的术语仅是为了描述特定实施例的目的,并且不旨在是本公开的限制。如本文所使用的,单数形式“一(a和an)”和“该”旨在也包括复数形式,除非上下文另有明确指示。将进一步理解,术语“包括(comprises和/或comprising)”当在本说明书中使用时指定所陈述的特征、整数、步骤、操作、元件、和/或部件的存在,但不排除一个或多个其它特征、整数、步骤、操作、元件、部件、和/或其群组的存在或添加。
实施例可被实现为计算机过程、计算机系统、或被实现为制品,诸如计算机可读介质的计算机程序产品。计算机程序产品可以是由计算机系统可读并且编码计算机程序指令以用于执行计算机过程的计算机存储介质。
下面的权利要求中的所有组件或步骤加上功能元件的对应结构、材料、动作和等效物旨在包括特定要求保护的、用于结合其它要求保护的元件来执行功能的任何结构、材料或动作。本公开的描述已经为了说明和描述目的而呈现,但不旨在是穷举的或限于处于所公开形式的公开。在不脱离本公开的范围和精神的情况下,许多修改和变化对本领域技术人员将是明白的。选取并描述了实施例,以便最佳地解释本公开的原理以及实际应用,并且使能本领域其它技术人员能够理解具有如适合于预期的特定使用的各种修改的实施例的公开。
因此,已经描述了本公开的各种示例实施例,包括但不限于:
示例1是一种用于计算的设备,包括:提交生成器,所述提交生成器用于生成与存储介质的介质切片对应关联的提交指示符,以分别向所述存储介质的存储介质控制器表示是否继续将所述介质切片写入到所述存储介质中;以及介质写入生成器,所述介质写入生成器用于向所述存储介质控制器提供要被写入到所述存储介质中的所述介质切片的数据块以及所关联的提交指示符;其中每个数据块的大小小于每个介质切片的大小。
示例2是示例1,其中所述设备是外围部件互连高速连接(PCIe)主机;所述存储介质控制器是PCIe存储介质控制器;以及所述介质写入生成器被布置成生成存储器写入事务层分组(TLP),其中提交字段在每个TLP的报头中,以向所述PCIe存储介质控制器提供要被写入到所述存储介质中的所述介质切片的所述数据块以及所关联的提交指示符。
示例3是一种用于计算的设备,包括:介质写入数据缓冲器,所述介质写入数据缓冲器用于缓冲要被写入到存储介质中的介质切片的数据块;以及介质写入控制器,所述介质写入控制器被耦合到所述介质写入数据缓冲器以控制将所缓冲的介质切片写入到所述存储介质;其中除了要被写入到所述存储介质中的所述数据块之外,所述设备还被提供有与要被写入到所述存储介质中的所述介质切片对应关联的提交指示符;以及其中所述介质写入控制器被布置成在接收到表示继续将所述介质切片写入到所述存储介质中的所关联的提交指示符时,使介质切片的所缓冲的数据块被写入到所述存储介质中;
其中每个数据块的大小小于每个介质切片的大小。
示例4是示例3,其中所述介质写入控制器被布置成确定介质切片的所关联的提交指示符是否表示继续将所述介质切片写入到所述存储介质中;并且确定是否已经接收到介质切片的所有数据块。
示例5是示例4,其中所述介质写入控制器被布置成在确定已经接收到所述介质切片的所有数据块时,进一步使所述介质切片被写入到所述存储介质。
示例6是示例5,其中所述介质写入控制器被布置成在使所述介质切片被写入到所述存储介质时,进一步更新介质切片写入跟踪器数据结构。
示例7是示例4,其中所述介质写入控制器被布置成在确定所述介质切片的所关联的提交指示符表示继续将所述介质切片写入到所述存储介质中,以及确定尚未接收到所述介质切片的所有数据块时,进一步使所述介质切片的剩余数据块从所述存储介质被读取。
示例8是示例7,其中所述介质写入控制器被布置成在从所述存储介质读取所述介质切片的所述剩余数据块时,进一步使所述介质切片被写入到所述存储介质。
示例9是示例8,其中所述介质写入控制器被布置成在使所述介质切片被写入到所述存储介质时,进一步更新介质切片写入跟踪器数据结构。
示例10是示例4,其中所述介质写入控制器被布置成在确定所述介质切片的所关联的提交指示符不表示继续将所述介质切片写入到所述存储介质中,以及确定尚未接收到所述介质切片的所有数据块时,进一步使介质切片的所述数据块在所述介质写入数据缓冲器中被缓冲。
示例11是示例10,其中所述介质写入控制器被布置成在使介质切片的所述数据块在所述介质写入数据缓冲器中被缓冲时,进一步更新介质切片写入跟踪器数据结构。
示例12是示例3-11中任一项,其中所述设备是外围部件互连高速连接(PCIe)存储介质控制器;以及作为存储器写入事务层分组(TLP),要被写入到所述存储介质中的所述介质切片的所述数据块以及所关联的提交指示符由PCIe主机向所述PCIe存储介质控制器提供,其中每个TLP的报头中的提交字段具有所述提交指示符。
示例13是示例12,其中所述提交字段在具有所述提交指示符的每个TLP的所述报头的保留字段中。
示例14是一种用于计算的方法,包括:由外围部件互连高速连接(PCIe)主机生成与存储介质的介质切片对应关联的提交指示符,以分别向所述存储介质的存储介质控制器表示是否继续将所述介质切片写入到所述存储介质中;以及由所述PCIe主机生成存储器写入事务层分组(TLP)并向所述存储介质控制器提供所述存储器写入事务层分组,所述存储器写入事务层分组具有要被写入到所述存储介质中的所述介质切片的数据块以及被包括在所述TLP分组的报头中的所关联的提交指示符。
示例15是示例14,进一步包括:由所述存储介质控制器接收所述存储器写入TLP,所述存储器写入TLP具有要被写入到所述存储介质中的所述介质切片的所述数据块,以及被包括在所述TLP分组的报头中的所关联的提交指示符;以及由所述存储介质控制器来缓冲要被写入到所述存储介质中的所述介质切片的所述数据块。
示例16是示例15,进一步包括由所述存储介质控制器确定所述介质切片的相应的关联的提交指示符是否表示继续将所述介质切片写入到所述存储介质中;并且确定是否已经接收到每个介质切片的所有数据块。
示例17是至少一种计算机可读介质(CRM),所述至少一种计算机可读介质具有存储在其中的指令,所述至少一种计算机可读介质用于响应于由存储介质控制器执行所述指令而使所述存储介质控制器:缓冲要被写入到存储介质中的介质切片的数据块,所述存储介质由所述存储介质控制器所控制;以及控制将所缓冲的介质切片写入到所述存储介质;其中要被写入到所述存储介质中的所述数据块经由外围部件互连高速连接(PCIe)存储器写入事务层分组(TLP)而被提供给所述存储介质控制器,其中所述TLP的报头具有与要被写入到所述存储介质中的所述介质切片对应关联的提交指示符;以及其中控制写入包括在接收到TLP的报头中的所关联的提交指示符时,使介质切片的所缓冲的数据块被写入到所述存储介质中,所关联的提交指示符表示继续将所述介质切片写入到所述存储介质中。
示例18是示例17,其中进一步使所述存储介质控制器确定TLP的报头中的、介质切片的所关联的提交指示符是否表示继续将所述介质切片写入到所述存储介质中;并且确定是否已经接收到介质切片的所有数据块。
示例19是示例18,其中进一步使所述存储介质控制器在确定已经接收到所述介质切片的所有数据块时,使所述介质切片被写入到所述存储介质。
示例20是示例19,其中进一步使所述存储介质控制器在使所述介质切片被写入到所述存储介质时,更新介质切片写入跟踪器数据结构。
示例21是示例18,其中进一步使所述存储介质控制器在确定所述TLP的报头中的、所述介质切片的所关联的提交指示符表示继续将所述介质切片写入到所述存储介质中,以及确定尚未接收到所述介质切片的所有数据块时,使所述介质切片的剩余数据块从所述存储介质被读取。
示例22是示例21,其中进一步使所述存储介质控制器在从所述存储介质读取所述介质切片的所述剩余数据块时,使所述介质切片被写入到所述存储介质。
示例23是示例22,其中进一步使所述存储介质控制器在使所述介质切片被写入到所述存储介质时,更新介质切片写入跟踪器数据结构。
示例24是示例18-23中任一项,其中进一步使所述存储介质控制器在确定所述TLP的报头中的、所述介质切片的所关联的提交指示符不表示继续将所述介质切片写入到所述存储介质中,以及确定尚未接收到所述介质切片的所有数据块时,使介质切片的所述数据块被缓冲。
示例25是示例24,其中进一步使所述存储介质控制器在使介质切片的所述数据块在所述介质写入数据缓冲器中被缓冲时,更新介质切片写入跟踪器数据结构。
对本领域技术人员将明白的是,可以在不脱离本发明的精神或范围的情况下,在所公开装置及关联方法的所公开实施例中进行各种修改和变化。因此,旨在倘若所述修改和变化落在任何权利要求及其等效物的范围内,那么本公开涵盖了上面公开的实施例的修改和变化。
Claims (20)
1. 一种用于计算的设备,包括:
提交生成器,所述提交生成器用于生成与存储介质的介质切片对应关联的提交指示符,以分别向所述存储介质的存储介质控制器表示是否继续将所述介质切片写入到所述存储介质中;以及
介质写入生成器,所述介质写入生成器用于向所述存储介质控制器提供要被写入到所述存储介质中的所述介质切片的数据块以及所关联的提交指示符;
其中每个数据块的大小小于每个介质切片的大小。
2.如权利要求1所述的设备,其中
所述设备是外围部件互连高速连接(PCIe)主机;
所述存储介质控制器是PCIe存储介质控制器;以及
所述介质写入生成器被布置成生成存储器写入事务层分组(TLP),其中提交字段在每个TLP的报头中,以向所述PCIe存储介质控制器提供要被写入到所述存储介质中的所述介质切片的所述数据块以及所关联的提交指示符。
3. 一种用于计算的设备,包括:
介质写入数据缓冲器,所述介质写入数据缓冲器用于缓冲要被写入到存储介质中的介质切片的数据块;以及
介质写入控制器,所述介质写入控制器被耦合到所述介质写入数据缓冲器以控制将所缓冲的介质切片写入到所述存储介质;
其中除了要被写入到所述存储介质中的所述数据块之外,所述设备还被提供有与要被写入到所述存储介质中的所述介质切片对应关联的提交指示符;以及
其中所述介质写入控制器被布置成在接收到表示继续将所述介质切片写入到所述存储介质中的所关联的提交指示符时,使介质切片的所缓冲的数据块被写入到所述存储介质中;
其中每个数据块的大小小于每个介质切片的大小。
4.如权利要求3所述的设备,其中所述介质写入控制器被布置成确定介质切片的所关联的提交指示符是否表示继续将所述介质切片写入到所述存储介质中;并且确定是否已经接收到介质切片的所有数据块。
5.如权利要求4所述的设备,其中所述介质写入控制器被布置成在确定已经接收到所述介质切片的所有数据块时,进一步使所述介质切片被写入到所述存储介质。
6.如权利要求5所述的设备,其中所述介质写入控制器被布置成在使所述介质切片被写入到所述存储介质时,进一步更新介质切片写入跟踪器数据结构。
7.如权利要求4所述的设备,其中所述介质写入控制器被布置成在确定所述介质切片的所关联的提交指示符表示继续将所述介质切片写入到所述存储介质中,以及确定尚未接收到所述介质切片的所有数据块时,进一步使所述介质切片的剩余数据块从所述存储介质被读取。
8.如权利要求7所述的设备,其中所述介质写入控制器被布置成在从所述存储介质读取所述介质切片的所述剩余数据块时,进一步使所述介质切片被写入到所述存储介质。
9.如权利要求8所述的设备,其中所述介质写入控制器被布置成在使所述介质切片被写入到所述存储介质时,进一步更新介质切片写入跟踪器数据结构。
10.如权利要求4所述的设备,其中所述介质写入控制器被布置成在确定所述介质切片的所关联的提交指示符不表示继续将所述介质切片写入到所述存储介质中,以及确定尚未接收到所述介质切片的所有数据块时,进一步使介质切片的所述数据块在所述介质写入数据缓冲器中被缓冲。
11. 如权利要求10所述的设备,其中所述介质写入控制器被布置成在使介质切片的所述数据块在所述介质写入数据缓冲器中被缓冲时,进一步更新介质切片写入跟踪器数据结构。
12. 如权利要求3-11中任一项所述的设备,其中
所述设备是外围部件互连高速连接(PCIe)存储介质控制器;以及
作为存储器写入事务层分组(TLP),要被写入到所述存储介质中的所述介质切片的所述数据块以及所关联的提交指示符由PCIe主机向所述PCIe存储介质控制器提供,其中每个TLP的报头中的提交字段具有所述提交指示符。
13.如权利要求12所述的设备,其中所述提交字段在具有所述提交指示符的每个TLP的所述报头的保留字段中。
14. 一种用于计算的方法,包括:
由外围部件互连高速连接(PCIe)主机生成与存储介质的介质切片对应关联的提交指示符,以分别向所述存储介质的存储介质控制器表示是否继续将所述介质切片写入到所述存储介质中;以及
由所述PCIe主机生成存储器写入事务层分组(TLP)并向所述存储介质控制器提供所述存储器写入事务层分组,所述存储器写入事务层分组具有要被写入到所述存储介质中的所述介质切片的数据块以及被包括在所述TLP分组的报头中的所关联的提交指示符。
15. 如权利要求14所述的方法,进一步包括:
由所述存储介质控制器接收所述存储器写入TLP,所述存储器写入TLP具有要被写入到所述存储介质中的所述介质切片的所述数据块,以及被包括在所述TLP分组的报头中的所关联的提交指示符;以及
由所述存储介质控制器来缓冲要被写入到所述存储介质中的所述介质切片的所述数据块。
16. 一种存储介质控制器,包括:
用于缓冲要被写入到存储介质中的介质切片的数据块的组件,所述存储介质由所述存储介质控制器所控制;以及
用于控制将所缓冲的介质切片写入到所述存储介质的组件;
其中要被写入到所述存储介质中的所述数据块经由外围部件互连高速连接(PCIe)存储器写入事务层分组(TLP)而被提供给所述存储介质控制器,其中所述TLP的报头具有与要被写入到所述存储介质中的所述介质切片对应关联的提交指示符;以及
其中用于控制写入的组件包括用于在接收到TLP的报头中的所关联的提交指示符时,使介质切片的所缓冲的数据块被写入到所述存储介质中的组件,所关联的提交指示符表示继续将所述介质切片写入到所述存储介质中。
17.如权利要求16所述的存储介质控制器,其中所述存储介质控制器进一步包括用于确定TLP的报头中的、介质切片的所关联的提交指示符是否表示继续将所述介质切片写入到所述存储介质中的组件;以及用于确定是否已经接收到介质切片的所有数据块的组件。
18.如权利要求17所述的存储介质控制器,其中所述存储介质控制器进一步包括用于在确定已经接收到所述介质切片的所有数据块时,使所述介质切片被写入到所述存储介质的组件。
19.如权利要求17所述的存储介质控制器,其中所述存储介质控制器进一步包括用于在确定所述TLP的报头中的、所述介质切片的所关联的提交指示符表示继续将所述介质切片写入到所述存储介质中,以及确定尚未接收到所述介质切片的所有数据块时,使所述介质切片的剩余数据块从所述存储介质被读取的组件。
20.如权利要求17所述的存储介质控制器,其中所述存储介质控制器进一步包括用于在确定所述TLP的报头中的、所述介质切片的所关联的提交指示符不表示继续将所述介质切片写入到所述存储介质中,以及确定尚未接收到所述介质切片的所有数据块时,使介质切片的所述数据块被缓冲的组件。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/422,827 US10942672B2 (en) | 2019-05-24 | 2019-05-24 | Data transfer method and apparatus for differential data granularities |
US16/422827 | 2019-05-24 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111984579A true CN111984579A (zh) | 2020-11-24 |
Family
ID=67842579
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010222543.3A Pending CN111984579A (zh) | 2019-05-24 | 2020-03-26 | 针对差异数据粒度的数据传输方法和设备 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10942672B2 (zh) |
CN (1) | CN111984579A (zh) |
DE (1) | DE102020110853A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11947995B2 (en) * | 2020-05-19 | 2024-04-02 | Intel Corporation | End-to-end data protection for far memory data transfer from host to media |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7370133B2 (en) * | 2005-01-20 | 2008-05-06 | International Business Machines Corporation | Storage controller and methods for using the same |
US8856552B2 (en) * | 2008-03-31 | 2014-10-07 | Cleversafe, Inc. | Directory synchronization of a dispersed storage network |
US9535870B2 (en) * | 2013-09-18 | 2017-01-03 | HGST Netherlands B.V. | Acknowledgement-less protocol for solid state drive interface |
-
2019
- 2019-05-24 US US16/422,827 patent/US10942672B2/en active Active
-
2020
- 2020-03-26 CN CN202010222543.3A patent/CN111984579A/zh active Pending
- 2020-04-21 DE DE102020110853.2A patent/DE102020110853A1/de active Pending
Also Published As
Publication number | Publication date |
---|---|
DE102020110853A1 (de) | 2020-11-26 |
US10942672B2 (en) | 2021-03-09 |
US20190278513A1 (en) | 2019-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9772802B2 (en) | Solid-state device management | |
KR100708128B1 (ko) | 낸드 플래시 메모리 제어 장치 및 방법 | |
US8959260B2 (en) | Memory system having high data transfer efficiency and host controller | |
CN100555257C (zh) | 处理页面复制期间的dma操作的存储控制器和方法 | |
CN107305534B (zh) | 同时进行内核模式访问和用户模式访问的方法 | |
CN110647480A (zh) | 数据处理方法、远程直接访存网卡和设备 | |
US11379374B2 (en) | Systems and methods for streaming storage device content | |
TW201905714A (zh) | 以輔助處理器記憶體進行儲存裝置的直接輸入輸出操作的計算系統操作方法、計算系統、車輛及電腦可讀媒體 | |
US10719462B2 (en) | Technologies for computational storage via offload kernel extensions | |
US20180018231A1 (en) | Storage unit and storage device | |
EP3792776B1 (en) | Nvme-based data reading method, apparatus and system | |
JP2008047116A (ja) | 入力/出力装置とメモリ間のデータ転送の融通性のある制御 | |
CN115495389B (zh) | 存储控制器、计算存储装置以及计算存储装置的操作方法 | |
TW201227298A (en) | Operation method of data storage device | |
CN112416250B (zh) | 基于NVMe的固态硬盘的命令处理方法及相关设备 | |
US10114758B2 (en) | Techniques for supporting for demand paging | |
KR20170013882A (ko) | 플래시 메모리 기반 저장 디바이스의 멀티 호스트 전력 제어기(mhpc) | |
US10275175B2 (en) | System and method to provide file system functionality over a PCIe interface | |
CN107250995B (zh) | 存储器管理设备 | |
US10831684B1 (en) | Kernal driver extension system and method | |
CN113424165A (zh) | 在存储器子系统处的编程操作的中断 | |
CN111984579A (zh) | 针对差异数据粒度的数据传输方法和设备 | |
KR101363422B1 (ko) | 비휘발성 메모리 시스템 | |
US9280298B2 (en) | Storage device and storage system | |
US8996772B1 (en) | Host communication device and method with data transfer scheduler |
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 |