用于ssd的自适应存储调度器

文档序号:168352 发布日期:2021-10-29 浏览:27次 >En<

阅读说明:本技术 用于ssd的自适应存储调度器 (Adaptive storage scheduler for SSD ) 是由 F·G·伯纳特 于 2020-12-22 设计创作,主要内容包括:一种电子装置的实施例可以包括:一个或多个基板、以及耦合到一个或多个基板的逻辑,所述逻辑用以:接收针对与流相关联的存储介质的当前访问请求;标识当前访问请求中的提示,所述提示指示来自所述流的未来访问请求的一个或多个流特性;以及基于来自所述流的未来访问请求的所指示的一个或多个流特性来处理当前访问请求。还公开和要求保护其他实施例。(An embodiment of an electronic device may include: one or more substrates, and logic coupled to the one or more substrates to: receiving a current access request for a storage medium associated with a stream; identifying a hint in a current access request, the hint indicating one or more stream characteristics of future access requests from the stream; and processing the current access request based on the indicated one or more flow characteristics of future access requests from the flow. Other embodiments are also disclosed and claimed.)

具体实施方式

现在参考所公开的附图来描述一个或多个实施例或实现方式。虽然讨论了特定配置和布置,但应当理解的是,这仅仅是出于说明性目的而完成的。相关领域的技术人员将意识到,在不脱离本描述的精神和范围的情况下可以采用其他配置和布置。相关领域的技术人员将显而易见的是,本文中所描述的技术和/或布置也可以被采用在除了本文中所描述的那些之外的各种各样的其他系统和应用中。

虽然以下描述阐述了可以例如在诸如片上系统(SoC)架构之类的架构中显现的各种实现方式,但是本文中所描述的技术和/或布置的实现方式不限于特定架构和/或计算系统,并且可以由用于类似目的的任何架构和/或计算系统来实现。例如,采用例如多个集成电路(IC)芯片和/或封装、和/或各种计算设备和/或消费者电子(CE)设备(诸如,机顶盒、智能电话等)的各种架构可以实现本文中所描述的技术和/或布置。此外,虽然以下描述可以阐述众多特定细节(诸如,系统组件的逻辑实现方式、类型和相互关系、逻辑划分/集成选择等),但是所要求保护的主题可以在没有这种特定细节的情况下实践。在其他实例中,诸如例如控制结构和全软件指令序列之类的一些材料可能未详细示出,以免使本文中公开的材料模糊不清。

本文中公开的材料可以用硬件、固件、软件或其任何组合来实现。本文中公开的材料还可以被实现为存储在机器可读介质上的指令,该指令可以由一个或多个处理器读取和执行。机器可读介质可以包括用于存储或传输采用由机器(例如,计算设备)可读形式的信息的任何介质和/或机构。例如,机器可读介质可以包括只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光学存储介质;闪速存储器设备;电器、光学、声学或其他形式的传播信号(例如,载波、红外信号、数字信号等)以及其他的。

在说明书中对“一个实现方式”、“实现方式”、“示例实现方式”等的引用指示所描述的实现方式可以包括特定特征、结构或特性,但是每个实施例可能不一定包括该特定特征、结构或特性。此外,这种短语不一定是指同一实现方式。此外,当结合实施例描述特定特征、结构或特性时,所认为的是,结合其他实现方式(无论是否在本文中被明确描述)来实现这种特征、结构或特性在本领域技术人员的知识范围内。

本文中描述的各种实施例可以包括存储器组件和/或至存储器组件的接口。这种存储器组件可以包括易失性和/或非易失性(NV)存储器。易失性存储器可以是如下存储介质:该存储介质需要功率来维持由该介质存储的数据的状态。易失性存储器的非限制性示例可以包括各种类型的随机存取存储器(RAM),诸如动态RAM(DRAM)或静态RAM(SRAM)。可以在存储器模块中使用的一种特定类型的DRAM是同步动态RAM(SDRAM)。在特定实施例中,存储器组件的DRAM可以符合联合电子设备工程委员会(JEDEC)颁布的标准,诸如用于双倍数据速率(DDR)SDRAM的JESD79F、用于DDR2 SDRAM的JESD79-2F、用于DDR3 SDRAM的JESD79-3F、用于DDR4 SDRAM的JESD79-4A、用于低功率DDR(LPDDR)的JESD209、用于LPDDR2的JESD209-2、用于LPDDR3的JESD209-3和用于LPDDR4的JESD209-4(这些标准可从jedec.org获得)。这种标准(以及类似的标准)可以被称为基于DDR的标准,并且实现这种标准的存储设备的通信接口可以被称为基于DDR的接口。

NV存储器(NVM)可以是如下存储介质:该存储介质不需要功率来维持由该介质存储的数据的状态。在一个实施例中,存储器设备可以包括块可寻址存储器设备,诸如基于NAND或NOR技术的存储器设备。存储器设备还可以包括未来一代的非易失性设备,诸如三维(3D)交叉点存储器设备、或其他字节可寻址的就地写入非易失性存储器设备。在一个实施例中,存储器设备可以是或者可以包括使用以下各项的存储器设备:硫族化物玻璃、多阈值级NAND闪速存储器、NOR闪速存储器、单级或多级相变存储器(PCM)、电阻式存储器、纳米线存储器、铁电晶体管RAM(FeTRAM)、反铁电存储器、并入了忆阻器技术的磁阻RAM(MRAM)存储器、包括金属氧化物基体、氧空位基体和导电桥RAM(CB-RAM)的电阻式存储器、或自旋转移矩(STT)-MRAM、基于自旋电子磁性结存储器的设备、基于磁性隧道结(MTJ)的设备、基于DW(畴壁)和SOT(自旋轨道转移)的设备、基于晶闸管的存储器设备、或以上各项中的任何内容的组合、或其他存储器。存储器设备可以指代管芯本身和/或指代封装的存储器产品。在特定实施例中,具有非易失性存储器的存储器组件可以符合由JEDEC颁布的一个或多个标准,诸如JESD218、JESD219、JESD220-1、JESD223B、JESD223-1或其他合适的标准(此处引用的JEDEC标准可从jedec.org获得)。

参考图1,电子系统10的实施例可以包括存储介质12、以及通信地耦合到存储介质12的控制器11。控制器11可以包括逻辑13,该逻辑用于:接收针对与流相关联的存储介质12的当前访问请求;标识当前访问请求中的提示,该提示指示来自该流的未来访问请求的一个或多个流特性;以及基于来自该流的未来访问请求的所指示的一个或多个流特性来处理当前访问请求。例如,逻辑13可以被配置成:基于该提示来确定针对该流的时延和带宽要求中的一个或多个;基于该提示来确定该流的优先级;和/或基于该提示来确定针对该流的访问请求的粒度。在一些实施例中,逻辑13可以进一步被配置成基于来自该流的未来访问请求的所指示的一个或多个流特性来调度当前访问请求。例如,逻辑13还可以被配置成将当前访问请求与来自该流的未来访问请求中的一个或多个进行组合。在本文中的任何实施例中,存储介质12可以包括永久性存储介质,诸如固态驱动器(SSD)。

上述控制器11、存储介质12、逻辑13和其他系统组件中的每一个的实施例可以用硬件、软件或其任何合适组合来实现。例如,硬件实现方式可以包括:可配置逻辑(诸如例如,可编程逻辑阵列(PLA)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD))、或者使用电路技术(诸如例如,专用集成电路(ASIC)、互补金属氧化物半导体(CMOS)或晶体管-晶体管逻辑(TTL)技术)的固定功能逻辑硬件、或其任何组合。控制器11的实施例可以包括通用控制器、专用控制器、存储控制器、存储器控制器、微控制器、通用处理器、专用处理器、中央处理器单元(CPU)、执行单元等。在一些实施例中,存储介质12、逻辑13和/或其他系统存储器可以位于包括控制器11(例如,在同一管芯上)的各种组件中,或者与所述各种组件并置。

替代地或附加地,这些组件中的全部或部分可以在一个或多个模块中被实现为存储在机器可读或计算机可读存储介质中的要由处理器或计算设备执行的一组逻辑指令,该存储介质诸如随机存取存储器(RAM)、只读存储器(ROM)、可编程ROM(PROM)、固件、闪速存储器等。例如,用以执行这些组件的操作的计算机程序代码可以以一种或多种操作系统(OS)适用/适当的编程语言的任何组合来编写,这些编程语言包括面向对象的编程语言(诸如,PYTHON、PERL、JAVA、SMALLTALK、C++、C#等等)、以及常规过程性编程语言(诸如,“C”编程语言或类似编程语言)。例如,存储介质12、其他存储介质或其他系统存储器可以存储一组指令,该指令在由控制器11执行时使系统10实现系统10的一个或多个组件、特征或方面(例如,逻辑13,其接收针对与该流相关联的存储介质12的当前访问请求,标识当前访问请求中的提示,基于针对该流的提示来处理当前访问请求等)。

现在转到图2,电子装置15的实施例可以包括一个或多个基板16、以及耦合到一个或多个基板16的逻辑17。逻辑17可以被配置成:接收针对与流相关联的存储介质的当前访问请求;标识当前访问请求中的提示,该提示指示来自该流的未来访问请求的一个或多个流特性;以及基于来自该流的未来访问请求的所指示的一个或多个流特性来处理当前访问请求。例如,逻辑17可以被配置成:基于该提示来确定针对该流的时延和带宽要求中的一个或多个;基于该提示来确定该流的优先级;和/或基于该提示来确定针对该流的访问请求的粒度。在一些实施例中,逻辑17可以进一步被配置成基于来自该流的未来访问请求的所指示的一个或多个流特性来调度当前访问请求。例如,逻辑17还可以被配置成将当前访问请求与来自该流的未来访问请求中的一个或多个进行组合。在本文中的任何实施例中,存储介质可以包括SSD。

逻辑17的实施例可以用系统、装置、计算机、设备等(例如诸如,本文中描述的那些)来实现。更特别地,逻辑17的硬件实现方式可以包括:可配置逻辑(诸如例如,PLA、FPGA、CPLD)、或者采用使用电路技术(诸如例如,ASIC、CMOS或TTL技术)的固定功能逻辑硬件的形式、或其任何组合。替代地或附加地,逻辑17可以在一个或多个模块中被实现为存储在机器可读或计算机可读存储介质(诸如,RAM、ROM、PROM、固件、闪速存储器等)中的要由处理器或计算设备执行的一组逻辑指令。例如,用以执行这些组件的操作的计算机程序代码可以以一种或多种OS适用/适当的编程语言的任何组合来编写,这些编程语言包括面向对象的编程语言(诸如,PYTHON、PERL、JAVA、SMALLTALK、C++、C#等等)、以及常规过程性编程语言(诸如,“C”编程语言或类似编程语言)。

例如,逻辑17可以在半导体装置上实现,该半导体装置可以包括一个或多个基板16,其中逻辑17耦合到一个或多个基板16。在一些实施例中,逻辑17可以至少部分地用(一个或多个)半导体基板(例如,硅、蓝宝石、砷化镓等)上的可配置逻辑和固定功能硬件逻辑中的一个或多个来实现。例如,逻辑17可以包括:晶体管阵列和/或其他集成电路组件,它们利用定位在(一个或多个)基板16中的晶体管沟道区而耦合到(一个或多个)基板16。逻辑17与(一个或多个)基板16之间的界面可以不是突变结。逻辑17还可以被认为包括在(一个或多个)基板16的初始晶圆上生长的外延层。

现在转到图3A至3C,用于控制存储装置的方法20的实施例可以包括:在框21处,接收针对与流相关联的存储介质的当前访问请求;在框22处,标识当前访问请求中的提示,该提示指示来自该流的未来访问请求的一个或多个流特性;以及在框23处,基于来自该流的未来访问请求的所指示的一个或多个流特性来处理当前访问请求。例如,方法20可以包括:在框24处,基于该提示来确定针对该流的时延和带宽要求中的一个或多个;在框25处,基于该提示来确定该流的优先级;和/或在框26处,基于该提示来确定针对该流的访问请求的粒度。方法20的一些实施例可以进一步包括:在框27处,基于来自该流的未来访问请求的所指示的一个或多个流特性来调度当前访问请求。例如,方法20还可以包括:在框28处,将当前访问请求与来自该流的未来访问请求中的一个或多个进行组合。在本文中的任何实施例中,在框29处,存储介质可以包括SSD。

方法20的实施例可以用系统、装置、计算机、设备等(例如诸如,本文中描述的那些)来实现。更特别地,方法20的硬件实现方式可以包括:可配置逻辑(诸如例如,PLA、FPGA、CPLD)、或者采用使用电路技术(诸如例如,ASIC、CMOS或TTL技术)的固定功能逻辑硬件的形式、或其任何组合。替代地或附加地,方法20可以在一个或多个模块中被实现为存储在机器可读或计算机可读存储介质(诸如,RAM、ROM、PROM、固件、闪速存储器等)中的要由处理器或计算设备执行的一组逻辑指令。例如,用以执行这些组件的操作的计算机程序代码可以以一种或多种OS适用/适当的编程语言的任何组合来编写,这些编程语言包括面向对象的编程语言(诸如,PYTHON、PERL、JAVA、SMALLTALK、C++、C#等等)、以及常规过程性编程语言(诸如,“C”编程语言或类似编程语言)。

例如,方法20可以如结合下面的示例22至28所描述的那样在计算机可读介质上实现。方法20的实施例或部分可以用固件、应用(例如,通过应用编程接口(API))、或者用在操作系统(OS)上运行的驱动器软件来实现。附加地,逻辑指令可以包括汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、状态设置数据、用于集成电路的配置数据、将对于硬件是原生的电子电路和/或其他结构组件(例如,主处理器、中央处理单元/CPU、微控制器等)进行个性化的状态信息。

一些实施例可以有利地为具有宽松的时延要求的新兴工作负载提供自适应存储调度技术。作为背景而非限制,数据中心可以跨各种各样的用例来提供存储服务,这些用例包括例如边缘云服务、物联网(IoT)应用、制造、有人驾驶航空、无人驾驶航空运输、自主和辅助车辆、健康监测、智能监控等等。一些实施例可以有利地提供用于在许多不同的设备当中对数据进行高效的管理、移动和共享的技术,这些设备中的许多设备本身是较大设备集团的部分。

一些常规的存储器和存储系统当以不同的粒度和/或服务水平协议(SLA)要求来读取或写入到该介质时可能是不太高效的,这是因为它们缺少来自软件实体(例如,服务或设备)的有关预期数据流的足够信息。依据一些实施例,来自设备或服务的到达该存储设备的若干个写入在被写入到该介质中之前可以被合并,这取决于从该服务或设备发送了消息之后该存储设备处的粒度以及时延和带宽要求。例如,如果第一设备正在每1 ms地向该存储介质发送连续的128B写入并且具有低优先时延要求(prior latency requirement),并且该存储介质将512B有效负载写入到该介质,则该介质可以在4ms期间将4个写入保留在缓冲器中,并且在缓冲器已满之后写入到该存储介质。在另一个示例中,如果第二设备正在发送64B写入并且具有高时延要求,则对存储装置的每个64B写入请求可以直接到达该介质。在一些常规的存储器和存储系统中,来自相同实体(例如,服务或设备)的针对较小数据大小的若干个读取请求会生成独立的小存储请求,这可能导致较差的资源利用。依据一些实施例,如果服务在低时延要求下、以每0.5ms 64字节的粒度进行访问,则可以将多个读取组合在从该存储装置到平台的单个数据分组中。

一些实施例可以提供更具可扩展性、分层式且功率高效的架构(例如,通过在边缘和IoT部署中提供与加速器的高效互操作)。一些实施例可以以敏捷的方式允许不同的优先级和SLA,使得“是处理给定请求作为批处理(batch)的一部分还是立即将其分派”可以基于实时控制回路,其中该确定可以被容易地判定、指定和端到端地实现。一些实施例可以为不同粒度(即,64字节、4KB、1MB等)的数据有效负载提供高效的数据存储方案。为了实现前述内容中的一个或多个,一些实施例可以提供允许实体向该存储设备提供提示的技术,该存储设备可以利用该提示以实现从该存储设备到实体的更高效的数据路径返回策略,和/或基于时延、带宽、SLA和其他流特性提示(例如,粒度)来实现对该介质的自适应且更高效的写入策略。

在一些实施例中,存储装置或存储器设备可以包括如下技术:该技术用以使用关于数据流特性的服务或设备提示以在存储装置/存储器设备(例如,本地平台存储装置、既简单磁盘捆绑(JBOD)等)处实现智能请求处理。例如,可以利用该提示以在满足应用的各种SLA的同时提供从/向该存储介质的更高效的数据读取和写入。

参考图4,分布式计算环境40可以包括边缘设备41(例如,设备1至设备N,其中N>1),该边缘设备41通过无线电接入网络(RAN)42的接入点将边缘设备请求传送到本地分汇(local breakout)和/或边缘服务执行平台43(例如,其可以包括预置装备、微云等)。相应边缘设备41可以具有不同的特性和/或要求。例如,设备1(例如,汽车)可以具有以下特性:时延SLA=高;低带宽(LBW)SLA=中等;业务类型=WR块64B。设备2(例如,移动电话)可以具有以下特性:时延SLA=中等;LBW SLA=低;业务类型=WR块128B。其他边缘设备41可以具有其他特性。依据一些实施例,边缘设备41可以通过RAN 42将关于与流标识符(例如,流ID)相关联的这些和/或其他特性的提示提供给本地分汇和/或边缘服务执行平台43。例如,数据中心可以包括存储设备44,存储设备44被配置成:基于流和SLA提示将写入有效负载合并到介质缓冲器中,并且基于流和SLA提示将要返回到该平台的读取合并到介质缓冲器中。例如,存储设备44可以包括:流合并逻辑44a、以及SLA和调度逻辑44b,它们被配置成基于流提示来合并相应的读取和写入有效负载。

在一些实施例中,网络接口45(例如,网络接口卡(NIC)、5G卡、蜂窝V2X卡等)可以被配置成接收该提示(例如,名义上格式化为提示(流ID,优先级={BW,Lat,...},粒度))并且利用通信信道46a(例如,计算快速链路(CXL)互连、PCIE等),通信信道46a被配置成将流提示(例如,SLA、消息粒度等)从网络接口45传播到平台43a。另一个通信信道46b可以被配置成将流提示从平台43a传播到存储设备44。除了边缘设备41之外,其他设备或服务也可以通过平台43a向存储设备44做出访问请求。例如,服务47可以具有以下特性:时延SLA=低;LBW SLA=低;业务类型=RD块64B。

依据一些实施例,边缘设备41或(一个或多个)服务47可以提供两种类型的提示(例如,该设备/服务可以在相同边缘平台中,或者可以从该平台自身的外部发出请求)。第一类型的提示可以指示来自特定流的有效负载需要被多快地写入到存储设备44中(例如,总的流带宽要求以及按每个个体请求或(一个或多个)请求组的最小时延)。处理特定流将取决于在给定时间段期间被需要存储到介质中的数据量、针对该流的注入速率、以及与每个个体请求相关联的时延SLA。第二类型的提示可以指示来自特定流的读取请求需要被多快地返回到客户端。在这种情况下,类似于写入,处理特定流可以取决于需要将多少数据返回到客户端、以及与每个个体请求相关联的SLA。对于这两种类型的提示,每个请求的限制性较小的时延SLA可以为存储设备44的流合并逻辑44a提供更多选项,以将(例如,来自相同流的)不同请求合并到设备44、或者从设备44合并到平台43a(例如,或者在JBOD的情况下合并到网络)。

有利地,存储装置/存储器设备的一些实施例可以包括如下逻辑:该逻辑用以利用任一种/两种类型的提示以按每一个流来调度并组合读取和写入请求,以便改进或最大化去往该平台的链路和去往特定存储设备的链路的带宽利用。在一些实施例中,该逻辑可以在存储装置或存储器控制器(例如,其可以是本地附接的、网络附接的、池化的等)中实现。一些实施例对于多个设备(包括分布式系统中的设备)的动态集成、对于CPU、GPU、加速器等处的请求的灵活且经优先级排序的处理而言可能是特别有益的。

参考图5,计算系统50的实施例可以包括(例如,经由PCIE)通信地耦合到CPU 52的存储设备51,该CPU 52还通信地耦合到NIC 53和分立设备目标54(例如,加速器)。存储设备51可以包括:入口逻辑51a、接口51b、未决请求调度器51c、出口逻辑51d、合并逻辑51e、未决请求队列51f和每流合并逻辑(per stream merge logic)51g,它们如所示出的那样耦合。CPU 52可以包括:PCIE逻辑52a和管芯上互连(ODI)52f,它们如所示出的那样耦合。每个PCIE逻辑52a可以包括:接口52b、至对等方的发送队列(to-peer-send queue)52c、至设备的合并队列(to-device-merge queue)52d和调度器52e。NIC 53可以包括:入口逻辑53a、接口53b、未决请求调度器53c、未决请求队列53d和出口逻辑53e。

依据一些实施例,计算系统50中的每个分立中间设备(例如,诸如NIC 53)可以被配置有如下逻辑:该逻辑允许发送器(例如,诸如联网客户端)传送用于在该中间设备处以及还在后续接收器处处理该发送器的请求的粒度和优先级。对于不同的分立设备,特定的实现方式可能是不同的,但是分立中间设备的实施例可以包括如下技术,该技术用以提供从发送器的角度可见的以下能力:入口队列、未决请求队列和调度器。

由发送器或发送设备提交的该发送器想要路由到其他对等方处的一个或多个设备的请求可以被接收到入口队列中。依据一些实施例,入口逻辑可以与如下逻辑对接:该逻辑用于根据该请求的优先级(例如,基于时延、BW等所指定的多度量向量)和用于发送到目标设备的期望粒度(例如,以改进或最大化性能、PCIE链路利用等)来处理传入请求。例如,可以将所提交的请求输入到未决队列请求中,该未决队列请求按优先级来排序。在一些实施例中,可以随着时间的推进来重新计算这些请求的优先级。例如,具有低优先级的请求通常可以使其优先级随时间增加。在一些实施例中,可能作为公式来计算请求的优先级。例如,该公式可以考虑针对不同性能参数、功率、效率参数等的各种子优先级。在一个示例中,低时延类别(例如,速度参数)可以被赋予80%的权重,并且带宽参数可以被赋予20%的权重(例如,以反映出实现快速响应需要使排队时间最小化)。未决队列请求可以由调度器(例如,用于NIC 53的未决请求队列53d的未决请求调度器53c)来调度。调度器通常可以拾取第一未决请求(例如,当可能的时候)并且处理该请求。例如,处理该请求可以使该请求经由出口点(例如,用于NIC 53的出口逻辑53e)被发送到目标(例如,在该示例中为CPU 52)。

在CPU 52(例如,或另一个目标设备)处,PCIE逻辑52a可以被配置有流提示逻辑,以用于其作为发送器和接收器两者的角色。当作为发送器进行操作时,PCIE逻辑52a可以被配置成提供如下技术:该技术用于使接口52b基于请求中的流提示从而以指定的优先级、粒度等将这些请求入队;使至对等方的发送队列52c存储未决请求;以及使调度器52e选择队列52c上的哪些未决请求将被发送到目标PCIE逻辑(例如,其管理该目标设备)。例如,当调度器52e选择一请求时,调度器52e可以将具有优先级、粒度等的消息报头发送到管理该目标设备的PCIE逻辑块。然后,调度器52e可以通过将一个或多个ODI分组发送到目标PCIE逻辑块来开始处理该请求,直到传输了所有的原始有效负载为止。有利地,来自以不同PCIE逻辑块(例如,不同设备或CPU)为目标的队列的多个请求可以被同时处理。各种策略或启发式方法可以管控在不同目标当中的散布的请求(诸如,在用于目标的ODI处的饱和)、交替的时延敏感性请求与带宽敏感性请求等。在较早的示例中,该逻辑可以决定以不同的64字节批次(例如,或ODI信道带宽)使来自事务1和2、去往ODI的消息交替。

当作为接收器进行操作(例如,处理来自PCIE逻辑52a的接收请求)时,PCIE逻辑52a可以被配置成提供如下技术:该技术用于使至设备的合并队列52d存储来自对等方PCIE逻辑块的飞行中(inflight)的请求,这些请求映射到特定设备事务。例如,队列52d可以存储来自ODI和对等方PCIE逻辑的所有即将到来的有效负载。队列52d可以进一步被配置成合并和发送这些有效负载。例如,队列52d可以包括如下逻辑:该逻辑用于将以ODI粒度到达队列52d中的有效负载映射成以相等/更高粒度的有效负载,这取决于例如通过接口52b指定的粒度、针对该链路所支持的粒度、和/或不同未决请求的优先级。在分立设备是目标的情况下,分立设备目标可以依据该设备的正常操作照常处理输入消息。

在一些实施例中,入口逻辑51a可以提供用于使入口队列进入到存储设备51中的技术。平台可以将该平台想要路由到该存储设备的存储介质的请求提交给入口逻辑51a。接口52b可以包括如下逻辑:该逻辑用以根据用于传入请求的第一接口以及根据用于传入请求的第二接口来处理入口队列中的传入请求,该第一接口用以指定与特定流相关联的一个或多个特性(例如,其中该特性可以包括时延(每个请求)、带宽(针对整个流)、与该特定流相关联的SLA(针对读取和写入流两者)、关于被发送以写入到该存储装置中的有效负载的预期大小的提示等),该第二接口用以将读取和/或写入请求提交给该存储介质。例如,可以针对该请求来扩展读取和写入接口以指定流ID、该请求的可选时延SLA(例如,其可以默认为来自入口逻辑51a的优先级)以及在写入请求的情况下的有效负载。

在一些实施例中,合并逻辑51e可以包括如下技术:该技术用以按每一个流(例如,直到该逻辑中支持的流的最大数量)来支持内容可寻址存储器(CAM)结构,该结构保留了所有尚未被发送到该介质的写入请求。每个CAM可以包括要被写入到存储器或存储装置的请求的地址、该请求到达时的周期、以及有效负载。

在一些实施例中,未决请求调度器51c可以包括用以处理每个新请求的逻辑。例如,当写入请求到达存储设备51时,可以检查针对该特定流的时延SLA。例如,存储设备51的逻辑的各个部分可以利用来自与流ID相关联地保存的提示的流特性来创建条目/值或向表51h添加条目/值。然后,那些部分和其他部分可以从表51h中查找信息,以基于该流的流ID来标识什么提示/信息可用于该流。如果表51h中的针对特定流的时延SLA值指示应当将该请求尽快提交给该介质,则该请求将去往用于该设备的非延迟请求逻辑。如果表51h中的针对特定流的时延SLA值指示该请求可以被延迟,则可以将该请求存储在每流合并逻辑51g中。调度器51c的逻辑可以每一个周期地遍历每流合并逻辑51g中的所有未决请求,并且按照需要被写入到该介质的每个请求来选择请求。调度器51c可以对可基于去往该介质的总线大小而被组合的请求进行优先级排序。每一个周期,调度器51c的逻辑可以选择最终提交给该介质的请求。最终选择可以基于该流的优先级以及基于针对该流建立的SLA。调度器51c的逻辑可以对从CAM所选择的有效负载实行合并,并且将其提交给该介质。

出口逻辑51d可以包括如下逻辑:该逻辑用以实现与调度器51c类似的过程,但是用于要被返回到网络或平台的数据。出口逻辑51d可以与合并逻辑51e(例如,其可以与CAM类似地实现)协作,以用于要被返回到平台的数据。例如,每个CAM可以包括:要被写入到存储器或存储装置的请求的地址;该请求到达时的周期、有效负载、以及用以合并CAM上的请求的调度逻辑。

本文中讨论的技术可以在各种计算系统(例如,包括:非移动计算设备,诸如台式机、工作站、服务器、机架系统等;移动计算设备,诸如智能电话、平板设备、超移动个人计算机(UMPC)、膝上型计算机、ULTRABOOK计算设备、智能手表、智能眼镜、智能手环等;和/或客户端/边缘设备,诸如物联网(IoT)设备(例如传感器、相机等))中提供。

现在转到图6,计算系统100的实施例可以包括一个或多个处理器102-1至102-N(在本文中通常被称为“(一个或多个)处理器102”)。处理器102可以经由互连或总线104进行通信。每个处理器102可以包括各种组件,为了清楚起见,仅参考处理器102-1来讨论其中的一些组件。相应地,其余处理器102-2至102-N中的每一个可以包括参考处理器102-1讨论的相同或类似的组件。

在一些实施例中,处理器102-1可以包括:一个或多个处理器核106-1至106-M(在本文中被称为“(多个)核106”,或者更一般地被称为“核106”)、高速缓存108(在各种实施例中,其可以是共享高速缓存或者私有高速缓存)和/或路由器110。处理器核106可以在单个集成电路(IC)芯片上实现。此外,芯片可以包括一个或多个共享和/或私有高速缓存(诸如,高速缓存108)、总线或互连(诸如,总线或互连112)、逻辑170、存储器控制器或其他组件。

在一些实施例中,路由器110可以被用来在处理器102-1和/或系统100的各种组件之间进行通信。此外,处理器102-1可以包括多于一个路由器110。此外,众多路由器110可以进行通信以使得能够在处理器102-1内部或外部的各种组件之间进行数据路由。

高速缓存108可以存储由处理器102-1的一个或多个组件(诸如核106)利用的数据(例如,包括指令)。例如,高速缓存108可以对存储在存储器114中的数据进行本地高速缓存,以供处理器102的组件进行更快的访问。如在图6中示出的,存储器114可以经由互连104与处理器102通信。在一些实施例中,高速缓存108(其可以是共享的)可以具有各种级别,例如高速缓存108可以是中级高速缓存和/或末级高速缓存(LLC)。而且,核106中的每一个可以包括级别1(L1)高速缓存(116-1)(在本文中通常被称为“L1高速缓存116”)。处理器102-1的各种组件可以直接地通过总线(例如,总线112)和/或存储器控制器或集线器与高速缓存108进行通信。

如在图6中示出的,存储器114可以通过存储器控制器120耦合到系统100的其他组件。存储器114可以包括易失性存储器,并且可以被可互换地称为主存储器或系统存储器。即使存储器控制器120被示为耦合在互连104与存储器114之间,存储器控制器120也可以位于系统100中的其他地方。例如,在一些实施例中,存储器控制器120或其部分可以被提供在处理器102之一内。

系统100可以经由网络接口128(例如,网络接口128经由有线或无线接口与计算机网络和/或云129进行通信)与其他设备/系统/网络进行通信。例如,网络接口128可以包括天线(未示出),用以与网络/云129无线地(例如,经由电气与电子工程师协会(IEEE)802.11接口(包括IEEE 802.11a/b/g/n/ac等)、蜂窝接口、3G、4G、LTE、蓝牙等)进行通信。

系统100还可以包括存储设备,诸如经由SSD控制器逻辑125耦合到互连104的SSD设备130。因此,逻辑125可以控制系统100的各种组件对SSD设备130的访问。此外,即使逻辑125在图6中被示为直接耦合到互连104,逻辑125也可以替代地经由存储总线/互连(诸如,SATA(串行高级技术附件)总线、外围组件互连(PCI)(或PCI快速(PCIe)接口)、NVM快速(NVMe)等)与系统100的一个或多个其他组件进行通信(例如,其中存储总线经由某个其他逻辑(如总线桥、芯片组等)耦合到互连104)。附加地,在各种实施例中,逻辑125可以并入到存储器控制器逻辑(诸如,参考图7所讨论的那些)中,或者被提供在相同集成电路(IC)设备上(例如,被提供在与SSD设备130相同的电路板设备上,或被提供在与SSD设备130相同的外壳中)。

此外,逻辑125和/或SSD设备130可以耦合到一个或多个传感器(未示出),以接收指示该一个或多个传感器的状态或者由该一个或多个传感器检测到的值的信息(例如,采用一个或多个比特或信号的形式)。可以将这些(一个或多个)传感器提供在系统100(或本文中讨论的其他计算系统)的组件附近,以感测影响了该系统/平台的功率/热行为的各种因素(诸如,温度、操作频率、操作电压、功率消耗和/或核间通信活动等)中的变化,系统100的组件包括核106、互连104或112、在处理器102外部的组件、SSD设备130、SSD总线、SATA总线、逻辑125、逻辑160、逻辑170等。

图7图示了根据实施例的SSD设备130的各种组件的框图。如图7中所图示的,逻辑160可以位于各种位置中,诸如位于SSD设备130或控制器382等内部(或位于存储器控制器120或存储器114内部),并且逻辑160可以包括与结合图6所讨论的技术类似的技术。SSD设备130包括:控制器382(其进而包括一个或多个处理器核或处理器384和存储器控制器逻辑386)、高速缓存138、RAM 388、固件存储装置390、以及一个或多个存储器设备392-1至392-N(统称为存储器392,其可以包括3D交叉点或其他类型的非易失性存储器)。存储器392经由一个或多个存储器通道或总线而耦合到存储器控制器逻辑386。而且,SSD设备130经由接口(诸如,SATA、SAS、PCIe、NVMe等接口)与逻辑125进行通信。处理器384和/或控制器382可以压缩/解压缩被写入到存储器设备392-1至392-N或从存储器设备392-1至392-N读取的数据。

如图6和图7中所图示的,SSD设备130可以包括逻辑160,逻辑160可以与SSD设备130处于相同外壳中,和/或完全集成在SSD设备130的印刷电路板(PCB)上。系统100可以在SSD设备130外部包括另外的逻辑170。参考图1-5所讨论的一个或多个特征/方面/操作可以由图6和/或图7的一个或多个组件来实行。而且,图1-5的一个或多个特征/方面/操作可以被编程到固件390中。此外,SSD控制器逻辑125也可以包括逻辑160。有利地,逻辑160和/或逻辑170可以包括如下技术:该技术用以实现系统10(图1)、装置15(图2)、方法20(图3A至3C)、环境40(图4)、系统50(图5)和/或本文中讨论的任何特征的一个或多个方面。例如,逻辑170可以包括如下技术,该技术用以实现本文中描述的各种实施例的主机设备/计算机系统/代理或分立目标设备方面,而逻辑160可以包括如下技术,该技术用以实现本文中描述的各种实施例的存储装置/存储器设备方面。

特别地,逻辑160可以被配置成:接收针对与流相关联的存储器设备392的当前访问请求;标识当前访问请求中的提示,该提示指示来自该流的未来访问请求的一个或多个流特性;以及基于来自该流的未来访问请求的所指示的一个或多个流特性来处理当前访问请求。例如,逻辑160可以被配置成:基于该提示来确定针对该流的时延和带宽要求中的一个或多个;基于该提示来确定该流的优先级;和/或基于该提示来确定针对该流的访问请求的粒度。在一些实施例中,逻辑160可以进一步被配置成基于来自该流的未来访问请求的所指示的一个或多个流特性来调度当前访问请求。例如,逻辑160还可以被配置成将当前访问请求与来自该流的未来访问请求中的一个或多个进行组合。

在其他实施例中,SSD设备130可以用任何合适的存储装置/存储器技术/介质来代替。在一些实施例中,逻辑160/170可以耦合到一个或多个基板(例如,硅、蓝宝石、砷化镓、印刷电路板(PCB)等),并且可以包括被定位在一个或多个基板内的晶体管沟道区。在其他实施例中,SSD设备130可以包括两种或更多种类型的存储介质。例如,大部分存储装置可以是NAND,并且可以进一步包括一些更快的、更小粒度的可访问(例如,字节可寻址)NVM,诸如INTEL 3DXP介质。SSD设备130可以替代地或附加地包括永久性易失性存储器(例如,电池或电容器备份的DRAM或SRAM)。例如,SSD设备130可以包括:具有能量存储电容器的功率损失紧急(power loss imminent)(PLI)技术。能量存储电容器可以提供足够的能量(功率)来完成任何正在进行的命令,并且确保DRAM/SRAM中的任何数据都被交付给非易失性NAND介质。电容器可以用作永久性易失性存储器的备用电池。如图6中所示,逻辑160和/或逻辑170的特征或方面可以遍及系统100而分布,和/或与系统100的各种组件并置/集成。

附加注释和示例

示例1包括一种电子装置,其包括一个或多个基板、以及耦合到一个或多个基板的逻辑,所述逻辑用以:接收针对与流相关联的存储介质的当前访问请求;标识当前访问请求中的提示,所述提示指示来自所述流的未来访问请求的一个或多个流特性;以及基于来自所述流的未来访问请求的所指示的一个或多个流特性来处理当前访问请求。

示例2包括权利要求1所述的装置,其中所述逻辑进一步用以:基于所述提示来确定针对所述流的时延和带宽要求中的一个或多个。

示例3包括权利要求1至2中任一项所述的装置,其中所述逻辑进一步用以:基于所述提示来确定所述流的优先级。

示例4包括权利要求1至3中任一项所述的装置,其中所述逻辑进一步用以:基于所述提示来确定针对所述流的访问请求的粒度。

示例5包括权利要求1至4中任一项所述的装置,其中所述逻辑进一步用以:基于来自所述流的未来访问请求的所指示的一个或多个流特性来调度当前访问请求。

示例6包括权利要求5所述的装置,其中所述逻辑进一步用以:将当前访问请求与来自所述流的未来访问请求中的一个或多个进行组合。

示例7包括权利要求1至6中任一项所述的装置,其中存储介质包括固态驱动器。

示例8包括一种电子系统,其包括存储介质、以及通信地耦合到存储介质的控制器,所述控制器包括如下逻辑,所述逻辑用以:接收针对与流相关联的存储介质的当前访问请求;标识当前访问请求中的提示,所述提示指示来自所述流的未来访问请求的一个或多个流特性;以及基于来自所述流的未来访问请求的所指示的一个或多个流特性来处理当前访问请求。

示例9包括权利要求8所述的系统,其中所述逻辑进一步用以:基于所述提示来确定针对所述流的时延和带宽要求中的一个或多个。

示例10包括权利要求8至9中任一项所述的系统,其中所述逻辑进一步用以:基于所述提示来确定所述流的优先级。

示例11包括权利要求8至10中任一项所述的系统,其中所述逻辑进一步用以:基于所述提示来确定针对所述流的访问请求的粒度。

示例12包括权利要求8至11中任一项所述的系统,其中所述逻辑进一步用以:基于来自所述流的未来访问请求的所指示的一个或多个流特性来调度当前访问请求。

示例13包括权利要求12所述的系统,其中所述逻辑进一步用以:将当前访问请求与来自所述流的未来访问请求中的一个或多个进行组合。

示例14包括权利要求8至13中任一项所述的系统,其中存储介质包括固态驱动器。

示例15包括一种用于控制存储装置的方法,其包括:接收针对与流相关联的存储介质的当前访问请求;标识当前访问请求中的提示,所述提示指示来自所述流的未来访问请求的一个或多个流特性;以及基于来自所述流的未来访问请求的所指示的一个或多个流特性来处理当前访问请求。

示例16包括权利要求15所述的方法,进一步包括:基于所述提示来确定针对所述流的时延和带宽要求中的一个或多个。

示例17包括权利要求15至16中任一项所述的方法,进一步包括:基于所述提示来确定所述流的优先级。

示例18包括权利要求15至17中任一项所述的方法,进一步包括:基于所述提示来确定针对所述流的访问请求的粒度。

示例19包括权利要求15至18中任一项所述的方法,进一步包括:基于来自所述流的未来访问请求的所指示的一个或多个流特性来调度当前访问请求。

示例20包括权利要求19所述的方法,进一步包括:将当前访问请求与来自所述流的未来访问请求中的一个或多个进行组合。

示例21包括权利要求15至20中任一项所述的方法,其中存储介质包括固态驱动器。

示例22包括至少一个非暂时性的一种机器可读介质,其包括多个指令,所述多个指令响应于在计算设备上执行而使计算设备:接收针对与流相关联的存储器介质的当前访问请求;标识当前访问请求中的提示,所述提示指示来自所述流的未来访问请求的一个或多个流特性;以及基于来自所述流的未来访问请求的所指示的一个或多个流特性来处理当前访问请求。

示例23包括权利要求22所述的至少一个非暂时性的一种机器可读介质,其包括多个进一步的指令,所述指令响应于在计算设备上执行而使计算设备:基于所述提示来确定针对所述流的时延和带宽要求中的一个或多个。

示例24包括权利要求22至23中任一项所述的至少一个非暂时性的一种机器可读介质,其包括多个进一步的指令,所述指令响应于在计算设备上执行而使计算设备:基于所述提示来确定所述流的优先级。

示例25包括权利要求22至24中任一项所述的至少一个非暂时性的一种机器可读介质,其包括多个进一步的指令,所述指令响应于在计算设备上执行而使计算设备:基于所述提示来确定针对所述流的访问请求的粒度。

示例26包括权利要求22至25中任一项所述的至少一个非暂时性的一种机器可读介质,其包括多个进一步的指令,所述指令响应于在计算设备上执行而使计算设备:基于来自所述流的未来访问请求的所指示的一个或多个流特性来调度当前访问请求。

示例27包括权利要求26所述的至少一个非暂时性的一种机器可读介质,其包括多个进一步的指令,所述指令响应于在计算设备上执行而使计算设备:将当前访问请求与来自所述流的未来访问请求中的一个或多个进行组合。

示例28包括权利要求22至27中任一项所述的至少一个非暂时性的一种机器可读介质,其中存储器介质包括永久性存储器介质。

示例29包括一种控制器装置,其包括:用于接收针对与流相关联的存储器介质的当前访问请求的部件;用于标识当前访问请求中的提示的部件,所述提示指示来自所述流的未来访问请求的一个或多个流特性;以及用于基于来自所述流的未来访问请求的所指示的一个或多个流特性来处理当前访问请求的部件。

示例30包括权利要求29所述的装置,进一步包括:用于基于所述提示来确定针对所述流的时延和带宽要求中的一个或多个的部件。

示例31包括权利要求29至30中任一项所述的装置,进一步包括:用于基于所述提示来确定所述流的优先级的部件。

示例32包括权利要求29至31中任一项所述的装置,进一步包括:用于基于所述提示来确定针对所述流的访问请求的粒度的部件。

示例33包括权利要求29至32中任一项所述的装置,进一步包括:用于基于来自所述流的未来访问请求的所指示的一个或多个流特性来调度当前访问请求的部件。

示例34包括权利要求33所述的装置,进一步包括:用于将当前访问请求与来自所述流的未来访问请求中的一个或多个进行组合的部件。

示例35包括权利要求29至34中任一项所述的装置,其中存储器介质包括永久性存储器介质。

术语“耦合”在本文中可以被用来指代所讨论的组件之间的任何类型的直接或间接关系,并且可以应用于电气、机械、流体、光学、电磁、机电或其他连接。此外,除非另行指出,否则术语“第一”、“第二”等在本文中可以仅被用来便于讨论,并且不带有任何特定时间或时间顺序重要性。

如在本申请和权利要求中所使用的,通过术语“......中的一个或多个”连接的项目列表可以意指所列项目的任何组合。例如,短语“A、B和C中的一个或多个”和短语“A、B或C中的一个或多个”两者都可以意指A;B;C;A和B;A和C;B和C;或A、B和C。可以用软件、固件和/或硬件和/或其任何组合来实现本文中描述的系统的各种组件。例如,可以至少部分地通过诸如可以在计算系统(诸如例如智能电话)中找到的计算SoC的硬件来提供本文中讨论的系统或设备的各种组件。本领域技术人员可以意识到:本文中描述的系统可以包括尚未在对应附图中描绘的附加组件。例如,本文中讨论的系统可以包括为了清楚而尚未描绘的附加组件,诸如比特流复用器或解复用器模块等等。

虽然本文中讨论的示例过程的实现方式可以包括承担以所图示的次序示出的所有操作,但是本公开在这方面不受限制,并且在各种示例中,本文中的示例过程的实现方式可以仅包括所示操作的子集、以不同于所图示的次序实行的操作或附加操作。

此外,可以响应于由一个或多个计算机程序产品提供的指令来承担本文中讨论的任何一个或多个操作。这种程序产品可以包括提供指令的信号承载介质,该指令在由例如处理器执行时可以提供本文中描述的功能。计算机程序产品可以以一个或多个机器可读介质的任何形式来提供。因此,例如,包括一个或多个图形处理单元或(一个或多个)处理器核的处理器可以响应于由一个或多个机器可读介质传达给该处理器的程序代码和/或指令或指令集而承担本文中的示例过程的一个或多个框。一般而言,机器可读介质可以以程序代码和/或指令或指令集的形式来传达软件,该程序代码和/或指令或指令集可以使得本文中描述的设备和/或系统中的任一个实现如在本文中讨论的操作的至少部分,和/或在本文中讨论的设备、系统或任何其他模块或组件的任何部分。

如在本文中描述的任何实现方式中所使用的,术语“模块”是指被配置成提供本文中描述的功能的软件逻辑、固件逻辑、硬件逻辑和/或电路的任何组合。软件可以被体现为软件包、代码和/或指令集或指令,并且如在本文中描述的任何实现方式中所使用的“硬件”可以例如单独地或以任何组合的形式包括硬连线电路、可编程电路、状态机电路、固定功能电路、执行单元电路、和/或存储由可编程电路所执行的指令的固件。这些模块可以共同或单独地被体现为形成较大系统的一部分的电路,例如集成电路(IC)、片上系统(SoC)等等。

各种实施例可以使用硬件元件、软件元件或两者的组合来实现。硬件元件的示例可包括处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等等)、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等等。软件的示例可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、功能、方法、规程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或者其任何组合。确定实施例是否使用硬件元件和/或软件元件来实现可以依据任何数量的因素而变化,诸如期望的计算速率、功率水平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度以及其他设计和性能约束。

至少一个实施例的一个或多个方面可以由表示处理器内的各种逻辑的机器可读介质上存储的代表性指令来实现,该机器可读介质在由机器读取时使该机器制作用以实行本文中描述的技术的逻辑。被称作IP核的这种表示可以存储在有形机器可读介质上,并且被供应给各种客户或制造设施,以加载到实际制作该逻辑或处理器的制造机器中。

虽然参考各种实现方式描述了本文中阐述的某些特征,但是本描述不意图以限制性意义来理解。因此,本文中描述的实现方式的各种修改、以及对于本公开所涉及的领域的技术人员显而易见的其他实现方式被视作处于本公开的精神和范围内。

将意识到的是,实施例不限于如此描述的实施例,而是可以在不脱离所附权利要求的范围的情况下通过修改和变更来实践。例如,上述实施例可以包括特征的特定组合。然而,上述实施例在这方面不受限制,并且在各种实现方式中,上述实施例可以包括:仅承担这些特征的子集、承担这些特征的不同次序、承担这些特征的不同组合、和/或承担除了明确列出的那些特征之外的附加特征。因此,应当参考所附权利要求以及这种权利要求所赋权的等同物的全部范围来确定实施例的范围。

24页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:包括多个存储器系统的数据处理系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类