首页 / 数据流推送单元、处理单元及相关装置和方法

数据流推送单元、处理单元及相关装置和方法实质审查 发明

技术领域

[0001] 本申请实施例涉及芯片技术领域,尤其涉及一种数据流推送单元、处理单元及相关装置和方法。

相关背景技术

[0002] 在计算机系统中内存分为多个层级,包括一级缓存(L1 Cache)、二级缓存(L2 Cache)、三级缓存(L3 Cache)、主存(main memory)、计算扩展链接(Compute Express Link,CXL)内存等。不同层级的内存具有不同的特性,比如访问速度、容量、成本等,及对应的访问延迟和带宽等性能指标。内存层级结构的设计,旨在将常用数据存储在快速且昂贵的存储介质中,而将较少使用的数据转移到较慢缺廉价的存储介质中,以实现性能和成本的平衡。
[0003] 目前,通过对处理器(Central Processing Unit,CPU)核的数据进行预测判断,以确定应该将CPU核的数据存放在内存的哪个层级。
[0004] 随着人工智能大模型、超级数据中心等新型计算结构体系的出现,输入输出(IO)设备和加速器(例如GPU)的IO数据流越来越大,然而目前的数据预测判断方法不适用于IO数据流,导致IO数据流在内存中的存储层级不合理,进而导致内存利用效率较低。

具体实施方式

[0022] 以下基于实施例对本申请进行描述,但是本申请并不仅仅限于这些实施例。在下文对本申请的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本申请。为了避免混淆本申请的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
[0023] 首先,对本申请实施例进行描述的过程中出现的部分名词或术语适用于如下解释。
[0024] 内存层级:计算机系统中的内存可分为多个内存层级,不同的内存层级具有不同的特性,比如不同内存层级的速度、容量、成本、访问延迟和带宽等性能指标存在差异。内存层级包括位于处理单元(CPU)内的一级缓存、二级缓存、三级缓存和末级缓存(Last Level Cache,LLC),及位于CPU外的主存和CXL内存等。
[0025] 数据流类型:根据设定的数据流识别规则,可以对数据流进行类型识别,以确定数据流的类型。比如,根据数据流是否需要及时被处理单元处理,可以将数据流的类型确定为命令型数据流、元数据型数据流、一般数据型数据流或冷数据型数据流。按照被处理紧要程度由高至低的顺序,4个数据流类型的排序为命令型数据流、元数据型数据流、一般数据型数据流或冷数据型数据流,命令型数据流应被处理单元快速访问处理,冷数据型数据流在较长时间内不需要处理单元访问处理。
[0026] PCIe:PCIe(Peripheral Component Interconnect Express)是一种高速串行计算机扩展总线标准,PCIe属于高速串行点对点双通道高带宽传输,所连接的设备分配独享通道带宽,不共享总线带宽,主要支持主动电源管理、错误报告、端对端的可靠性传输、热插拔以及服务质量(QOS)等功能。
[0027] IO设备:IO(Input/Output)设备是指可以与计算机进行数据传输的硬件,在本申请实施例中IO设备是指可以与CPU进行硬件设备,比如固态硬盘(Solid State Disk或Solid State Drive,SSD)、网卡(Network Interface Card,NIC)、各种类型的加速器等,加速器可以是图形处理器(Graphics Processing Unit,GPU)、数据处理单元(Data Processing Unit,DPU)等。
[0028] 固态硬盘:固态硬盘(Solid State Disk或Solid State Drive,SSD)又被称为固态驱动器,是用固态电子存储芯片阵列制成的硬盘。
[0029] 计算扩展链接:计算扩展链接(Compute Express Link,CXL)是一种高速互联技术,可以提供更高的数据吞吐量和更低的延迟,以满足现代计算和存储系统的需求。CXL可以解决由于CPU和设备、设备和设备之间内存分割而导致的性能下降问题。
[0030] 计算设备
[0031] 图1示出一个计算设备10的示意性框图。计算设备10可以基于各种型号的处理单元构建,并由WINDOWS操作系统、UNIX操作系统、Linux操作系统等任一操作系统驱动。此外,计算设备10可以在PC机、台式机、笔记本、服务器和移动通信装置等硬件和/或软件中实施。
[0032] 如图1所示,计算设备10可以包括一个或多个处理单元12,以及存储器14。计算设备10中的存储器14可以作为主存储器(简称为主存或内存),用于存储由数据信号表示的指令信息和/或数据信息,例如,存储器14可以存放处理单元12提供的数据,也可以用于实现处理单元12与外部存储设备(或成为辅助存储器或外部存储器)之间的数据交换。
[0033] 在一些情形下,处理单元12需要通过总线11访问存储器14,以获取存储器14中的数据或对存储器14中的数据进行修改。由于存储器14的访问速度较慢,为了缓解处理单元12与存储器14之间的速度差距,计算设备10还包括与总线11通信连接的高速缓冲存储器
18,高速缓冲存储器18用于对存储器14中的一些可能会被反复调用的程序数据或者报文数据进行缓存。高速缓冲存储器18可以由诸如静态随机存储器(Static Random Access Memory,SRAM)等类型的存储装置实现。高速缓冲存储器18可以为多级结构,例如具有一级缓存(L1Cache)、二级缓存(L2 Cache)和三级缓存(L3 Cache)的三级缓存结构,高速缓冲存储器18也可以是三级以上的缓存结构或其他类型缓存结构。在一些实施例中,高速缓冲存储器18的一部分(例如一级缓存,或一级缓存和二级缓存两者)可以集成在处理单元12内部或与处理单元12集成在同一片上系统中。
[0034] 计算设备10可以包括一个或多个IO设备16,IO设备16可以是通过PCIe接口连接至总线11的存储设备(比如SSD、机械硬盘、光盘以及闪存等用于信息存取的设备),也可以是通过CXL接口连接至总线11的存储设备,还可以是通过PCIe接口连接至总线11的网卡。处理单元12可以通过总线11向IO设备16发送读写事务,以读取IO设备16存储的数据,比如处理单元12通过发送读写事务,读取存储在SSD中的数据。IO设备16可以通过总线11将接收到的数据发送给处理单元12,比如网卡将通过有线或无线网络接收到的数据发送给处理单元12。在处理单元12从IO设备16读取数据、及IO设备16将接收到的数据发送给处理单元12时,IO设备16均以数据流的形式向处理单元12发送数据,处理单元12在接收到IO设备16发送的数据流后,可以将数据流推送至内存中,进而处理单元12从内存中读取数据流作相应处理。
[0035] IO设备16可以是网卡等通信设备,进而计算设备10可以通过各种方式与网络或其他设备进行通信。通信设备可以包括一种或多种通信模块,通信设备可以包括适用于特定的无线通信协议的无线通信模块。例如,通信设备可以包括WLAN模块,用于实现符合电气和电子工程协会(IEEE)制定的802.11标准的WiFi通信。通信设备可以包括WWAN模块,用于实现符合蜂窝或其他无线广域协议的无线广域通信。通信设备还可以包括蓝牙模块等采用其他协议的通信模块,或其他自定义类型的通信模块。通信设备还可以是用于串行传输数据的端口。
[0036] 处理单元12的内存包括存储器14、高速缓冲存储器18、CXL内存(CXL‑memory)、非易失性内存(Non‑Volatile Memory,NVM)、分离式内存(Disaggregated memory)等内存层级。如图2所示,高速缓冲存储器的容量小于主存(存储器14)的容量,主存的容量小于CXL内存的容量,CXL内存的容量小于NVM的容量,NVM的容量小于分离式内存的容量,按照被处理器核访问时访问延时由小至大的顺序,上述各内存层级的排序为高速缓冲存储器、主存、CXL内存、NVM和分离式内存。
[0037] 计算设备10还可以包括图形处理器110,图形处理器110通过CXL接口与总线11连接。图形处理器110内部包括三级缓存,图形处理器110还可以连接高带宽内存(Hight Bandwidth Memory,HBM)。由于IO设备16推送的某些数据流可以被图形处理器110处理,所以图形处理器110的三级缓存和高带宽内存也可作为处理单元12的内存,所以处理单元12可以将IO设备16发送的数据流推送到图形处理器110的三级缓存或高带宽内存中,以便图形处理器110读取其三级缓存或高带宽内存中的数据进行处理。
[0038] 处理单元12在接收到IO设备16发送的数据流后,根据对数据流的类型进行识别,确定所接收到数据流的类型,进而根据数据流的类型将数据流推送至相应的内存层级。根据数据流的类型,将延时敏感的数据流推送到高速缓冲存储器18或其他具有特定属性(比如物理位置较近、宽带较大)的内存层级,使得处理单元12中的处理器核可以更快地读取这些数据流进行处理,降低数据的交互延时,提升系统性能。根据数据流的类型,将不需要及时被处理或延时不敏感的数据流推送到访问延时较大但容量较大、或者离处理单元12中处理器核较远的内存层级。处理单元12在接收到IO设备16发送的数据流后,根据数据流的类型将数据流推送到相应的内存层级,可以使关键缓存资源(比如高速缓冲存储器)得到高效的利用,缓解内存墙的瓶颈。
[0039] 此外,计算设备10还可以包括显示设备、音频设备。显示设备可以经相应的显卡与总线11耦合,用于根据总线11提供的显示信号进行显示。
[0040] 总线11可以是片上总线(Network on Chip,NoC)。
[0041] 需要说明的是,不同的计算设备10根据主板、操作系统和指令集架构的不同,计算设备10的结构可能有所变化。例如,目前很多计算设备设置有连接在总线11和各个IO设备16之间的输入/输出控制中心,且该输入/输出控制中心可以集成于处理单元12之内或独立于处理单元12。
[0042] 处理单元
[0043] 图3是本申请一个实施例的处理单元12的示意性框图。如图3所示,处理单元12可以包括用于处理指令的一个或多个处理器核集120,处理器核集120包括一个或多个处理器核121,指令的处理和执行是可以被用户(例如通过应用程序)和/或系统平台控制的。处理器核121可以用于处理特定的指令集,指令集可以支持复杂指令集计算(Complex Instruction Set Computing,CISC)、精简指令集计算(Reduced Instruction Set Computing,RISC)或基于超长指令字(Very Long Instruction Word,VLIW)的计算,特别需要说明的是,处理器核121适用于处理RISC‑V指令集。不同的处理器核121可以各自处理不同或相同的指令集。处理器核121还可以包括其他处理模块,比如数字信号处理器(Digital Signal Processor,DSP)等。作为一种示例,图3中示出了两个处理器核集,处理器核集包括两个处理器核。
[0044] 图1示出的高速缓冲存储器18可以被全部或部分集成于处理单元12中。根据架构的不同,高速缓冲存储器18可以是位于各个处理器核121之内和/或之外的单个或多级的内部高速缓冲存储器,图3示出了高速缓冲存储器L2、L3和LLC,一级缓存L1位于处理器核121内未示出,二级缓存L2、三级缓存L3和末级缓存LLC统一标识为18。高速缓冲存储器18也可以包括面向指令的指令高速缓存和面向数据的数据高速缓存。处理单元12中的各处理器核121可以共享至少一部分的高速缓存存储器,例如,同一处理器核集120中的处理器核121共用三级缓存L3,多个处理器核集120中的处理器核121共用末级缓存LLC。处理单元12还可以包括外部高速缓存,图3示出了作为主存的存储器14,存储器14可以是双倍速率同步动态随机存储器(DDR)。高速缓冲存储器18的不同层级之间通过NoC连接,如图3所示,二级缓存L2通过NoC与三级缓存L3连接,三级缓存L3通过NoC与末级缓存LLC连接,末级缓存LLC通过NoC与存储器14连接。
[0045] 根据需求可以将高速缓冲存储器18和存储器14划分为多个内存层级,比如将二级缓存L2和三级缓存L3划分为一个内存层级,将末级缓存LLC划分为一个内存层级,将存储器14划分为一个内存层级。需要说明的是,上述内存层级划分方式仅是基于访问延时的一种内存层级划分方式,还可以其他规则进行内存层次划分,比如根据与处理器核121之间的距离划分内存层级。数据流被推送到内存层级后,处理器核121可以对内存层级中缓存的数据进行读写。
[0046] 处理单元12还包括数据流推送单元122,数据流推送单元122与IO设备16连接,比如,数据流推送单元122可以通过PCIe接口与多个存储设备和网卡连接,数据流推送单元122还可以通过CXL接口与CXL内存连接。在一些实施例中,数据流推送单元122还可以通过CXL接口与GPU连接。
[0047] 在本申请实施例中,数据流推送单元122可以接收来自IO设备16的数据流,并对接收到的数据流进行类型识别,进而根据数据流的类型将该数据流推送至相应的内存层级,比如,将延时敏感的命令型数据流推送至访问速度较快的二级缓存L2或三级缓存L3,而将较长时间不会被处理器核121访问的冷数据型数据流推送至NVM或分离式内存。数据流推送单元122可以根据数据流的类型,将数据流推送到相应的内存层级,可以使关键缓存资源(比如高速缓冲存储器)得到高效的利用,缓解内存墙的瓶颈。
[0048] 数据流推送单元122的内部结构及推送数据流的具体实现,会在后续数据流推送单元实施例中进行详细描述。
[0049] 在一些实施例中,处理单元12还可以包括多个第二性能监控模块123和多个第二性能控制模块124,不同的第二性能监控模块123对应不同的内存层级,不同的第二性能控制模块对应不同的内存层级。如图3所示,末级缓存LLC上配备有第二性能监控模块123和第二性能控制模块124,三级缓存L3上也配备有第二性能监控模块123和第二性能控制模块124。需要说明的是,图3仅示出了配备在三级缓存L3和末级缓存LLC上的第二性能监控模块
123和第二性能控制模块124,在实际应用中,各内存层级均可以配备相应的第二性能监控模块123和第二性能控制模块124,比如二级缓存L2、DDR、CXL内存、NVM内存、分离式内存等均可以配备相应的第二性能监控模块123和第二性能控制模块124。
[0050] 第二性能监控模块123可以获取对应的内存层级的数据处理信息,并将数据处理信息发送给控制软件,数据处理信息用于指示对应的内存层级中由数据流推送单元122的数据流的相关信息。比如,连接至末级缓存LLC的第二性能监控模块123,可以监控末级缓存LLC中由数据流推送单元122推送的数据流的被处理状态,获得数据处理信息。
[0051] 第二性能监控模块123获取到的数据处理信息可以包括如下信息中的至少部分:
[0052] (1)第一数据处理信息c_miss_rate:处理器核121对该第二性能监控模块123对应的内存层级进行访问的访问失效率;
[0053] (2)第二数据处理信息push_io_alo:该第二性能监控模块123对应的内存层级中,分配给用于缓存由数据流推送单元122所推送数据的资源数目;
[0054] (3)第三数据处理信息ref_io_hit:在该第二性能监控模块123对应的内存层级中,由数据流推送单元122推送的数据被处理器核121引用的次数或频率;
[0055] (4)第四数据处理信息ref_c:在该第二性能监控模块123对应的内存层级中数据被引用的次数;
[0056] (5)第五数据处理信息retire_io:在该第二性能监控模块123对应的内存层级中,由数据流推送单元122推送的数据中被从该内存层级中替换出去的比例。
[0057] 第二性能监控模块123将数据处理信息发送给控制软件后,控制软件可以调控相应内存层级的缓存资源分配和替换策略等,生成相应的第二配置指令发送给第二性能控制模块124。控制软件可以通过第二性能监控模块123的寄存器访问接口,访问第二性能监控模块123获得的数据处理信息,或者第二性能监控模块123可以按照控制软件定义的格式,将数据处理信息写入执行的内存地址控制,由控制软件去读取这段空间,以获取数据处理信息。
[0058] 第二性能控制模块124在接收到控制软件发送的第二配置指令后,可以根据第二配置指令调整对应的内存层级中用于缓存由数据流推送单元122推送的数据流的缓存资源。
[0059] 在本申请实施例中,第二性能监控模块123可以对相应内存层级进行监测,获取可以指示相应内存层级中由数据流推送单元122所推送数据流的相关信息的数据处理信息,并将数据处理信息发送给控制软件,控制软件可以基于数据处理信息生成第二配置指令发送给第二性能控制模块124,第二性能控制模块124可以根据第二配置指令,调节相应内存层级中分配给数据流推送单元122的缓存资源,以动态调节内存层级中分配给数据流推送单元122的缓存资源,减少对内存带宽的过量占用和对其他程序的访问效率的影响。
[0060] 在一种可能的实现方式中,第二性能控制模块124可以根据第二配置指令,控制对应的内存层级的工作状态,内存层级在不同的工作状态下的缓存资源分配和替换策略不同。下面对第二性能控制模块124控制相对应内存层级的工作状态的过程进行详细说明。
[0061] 图4是本申请一个实施例的内存层级工作状态转换的示意图。如图4所示,内存层级的工作状态包括第四工作状态STABLE、第五工作状态SHAPING、第六工作状态SHAPING_MORE和第七工作状态LIFTING,工作状态之间存在8种转换关系,下面对这8种转换关系分别进行说明。
[0062] ①在内存层级工作于第四工作状态STABLE时,如果第一数据处理信息c_miss_rate大于第一阈值Limit_Water_up,且第二数据处理信息push_io_alo大于第二阈值attention_waterline,第二性能控制模块124根据第二配置指令控制内存层级转换至第五工作状态SHAPING。
[0063] 内存层级在第五工作状态SHAPING下,会限制分配给数据流推送单元122的缓存资源,保证第二数据处理信息push_io_alo不会大于安全水线security_waterline,并且会按照第一频率decrease_rate0减少分配给数据流推送单元122的缓存资源。
[0064] 内存层级在第四工作状态STABLE下,为数据流推送单元122分配固定量的缓存资源,而且内存层级在第五工作状态SHAPING下分配给数据流推送单元122的缓存资源,小于内存层级在第四工作状态STABLE下分配给数据流推送单元122的缓存资源。
[0065] ②在内存层级工作于第五工作状态SHAPING时,如果经过至少一个观测窗口时间后第一数据处理信息c_miss_rate小于第三阈值Limit_Water_Dn,且第三数据处理信息ref_io_hit位于预设范围(小于io_hit_up且大于io_hit_dn)内,第二性能控制模块124根据第二配置指令控制内存层级转换至第四工作状态STABLE。其中,第三阈值Limit_Water_Dn小于或等于第一阈值Limit_Water_up。
[0066] ③在内存层级工作于第五工作状态SHAPING时,如果经过至少一个观测窗口时间后第一数据处理信息c_miss_rate继续上升而没有下降,且第二数据处理信息push_io_alo大于第四阈值bypass_line,第二性能控制模块124根据第二配置指令控制内存层级转换至第六工作状态SHAPING_MORE。其中,第四阈值bypass_line小于或等于第二阈值attention_waterline。
[0067] 内存层级在第六工作状态SHAPING_MORE下,会限制分配给数据流推送单元122的缓存资源,保证第二数据处理信息push_io_alo不会大于安全水线security_waterline,并且会按照第二频率decrease_rate1减少分配给数据流推送单元122的缓存资源,第二频率decrease_rate1大于第一频率decrease_rate0。
[0068] ④在内存层级工作于第六工作状态SHAPING_MORE时,如果经过至少一个观测窗口时间后第一数据处理信息c_miss_rate小于或等于第一阈值Limit_Water_up,第二性能控制模块124根据第二配置指令控制内存层级转换至第五工作状态SHAPING。
[0069] 基于上述①至④所述的内存层级的工作状态转换过程,当处理器核121对内存层级进行访问的访问失效率较高时,说明数据流推送单元122推送到内存层级中的数据中,有较多的数据未被处理器核121有效使用,则使内存层级减少分配给数据流推送单元122的缓存资源,以使其他程序使用内存层级中更多的缓存资源,提高缓存资源的利用率。
[0070] ⑤在内存层级工作于第五工作状态SHAPING时,如果经过至少一个观测窗口时间后第一数据处理信息c_miss_rate小于第三阈值Limit_Water_Dn,且第四数据处理信息ref_c小于第五阈值hit_rate_water,第二性能控制模块124根据第二配置指令控制内存层级转换至第七工作状态LIFTING。
[0071] 内存层级在第七工作状态LIFTING下,会增加分配给数据流推送单元122的缓存资源。
[0072] ⑥在内存层级工作于第七工作状态LIFTING时,如果经过至少一个观测窗口时间后第一数据处理信息c_miss_rate大于第一阈值Limit_Water_up,第二性能控制模块124根据第二配置指令控制内存层级转换至第五工作状态SHAPING。
[0073] ⑦在内存层级工作于第七工作状态LIFTING时,如果经过至少一个观测窗口时间后第二数据处理信息push_io_alo等于安全水线security_waterline,或者第三数据处理信息ref_io_hit小于预设范围的上限io_hit_dn,第二性能控制模块124根据第二配置指令控制内存层级转换至第四工作状态STABLE。
[0074] ⑧在内存层级工作于第四工作状态STABLE时,如果经过至少一个观测窗口时间后第五数据处理信息retire_io大于第六阈值,且第一数据处理信息c_miss_rate小于第三阈值Limit_Water_Dn,第二性能控制模块124根据第二配置指令控制内存层级转换至第七工作状态LIFTING。
[0075] 基于上述⑤至⑧所述的内存层级的工作状态的转换过程,当处理器核121对内存层级进行访问的访问失效率较低,且由数据流推送单元122推送的数据被处理器核121引用的次数或频率较高时,说明数据流推送单元122推送到内存层级中的数据多数被处理器核121成功访问,处理器核121对内存层级中由其他程序缓存的数据的访问较少,所以使内存层级分配更多缓存资源给数据流推送单元122,以使数据流推送单元122向内存层级中推送更多的数据,提升缓存资源的利用率和系统的性能。
[0076] 数据流推送单元
[0077] 图5是本申请一个实施例的数据流推送单元122的示意性框图。如图5所示,数据流推送单元122包括接收子单元125、识别子单元126和推送子单元127。
[0078] 接收子单元125可以获取来自IO设备16的数据流,并将所接收到的数据流发送给识别子单元126。识别子单元126可以对接收到的数据流进行类型识别,获得用于指示数据流的类型的类型信息,并将获得的类型信息发送给推送子单元127。推送子单元127可以根据接收到的类型信息,将数据流推送到多个内存层级中的目标内存层级。
[0079] 识别子单元126在对数据流的类型进行识别时,可以识别策略对数据流的类型进行识别,以确定数据流是命令型数据流、元数据型数据流、一般数据型数据流或冷数据型数据流。推送子单元127根据类型信息,将数据流推送到相应的内存层级,比如推送到二级缓存L2、三级缓存L3、末级缓存LLC、主存、CXL内存或分离式内层等。
[0080] 在本申请实施例中,接收子单元125接收到来自IO设备16的数据流后,识别子单元126对数据流进行类型识别,获得类型信息,推送子单元127根据类型信息将数据流推送至相应的内存层级,可以高效地分配和利用缓存资源给延时敏感的数据流,从而使处理器核
121可以更快读取缓存资源中的数据进行处理,降低数据交互的延时,提升系统性能。
[0081] 图6是本申请另一个实施例的数据流推送单元122的示意性框图。如图6所示,识别子单元126包括分流模块1261、筛选模块1262和多个识别模块1263。
[0082] 分流模块1261可以接收接收子单元125发送的数据流,并根据分流策略将接收到的数据流发送给至少一个识别模块1263。识别模块1263在接收到数据流后,根据识别策略对数据流进行类型识别,获得用于指示数据流的类型的备选类型信息,并将备选类型信息发送给筛选模块1262。筛选模块1262可以根据筛选策略,从接收到的至少一个备选类型信息中确定数据流的类型信息,并将类型信息发送给推送子单元127。
[0083] 分流模块1261根据分流策略将数据流发送给一个或多个识别模块1263,分流策略可以通过软件进行配置,以配置分流模块1261将接收到的数据流发送给哪个识别模块1263。比如,识别子单元126还可以包括控制配置单元,软件可以通过控制配置单元对分流策略进行配置,以使分流模块1261根据分流策略将接收到的数据流发给相应的一个或多个识别模块1263。在一些例子中,软件可以通过控制配置单元配置分流策略,使分流模块1261将某些特定ID的数据流单独送到特定的某个识别模块1263进行类型识别,对某些数据流则按照地址或者数据流ID做哈希运算,根据哈希值决定将这些数据流送到哪个识别模块
1263。
[0084] 识别模块1263根据识别策略对接收到的数据流进行类型识别,不同的识别模块1263可以基于不同的识别策略对数据流进行类型识别,从而使不同的识别模块1263用以识别不同类型的数据流,而且同一数据流被送到不同的识别模块1263后,识别模块1263给出的类型识别结果可能不同。软件可以通过控制配置单元对识别模块1263的相关寄存器去设置识别模块1263的类型识别参数值,从而定义这个识别模块1263识别的数据流类型。类型识别参数值可以数据流类型的类型值、类型识别的数据特征值(比如身份标识、数据的长度、地址是否对齐、数据是否整写、对应地址是否被高频率访问、高频的水线等)、及对应数据特征值在识别过程中是否起作用。
[0085] 如下表1示出了识别模块1263识别命令型数据流的一种识别策略:
[0086] 表1
[0087]
[0088]
[0089] 在上述表1中,“NA”表示在识别数据流类型的过程中相应数据特征值无需进行比对,“关闭”表示在识别数据流类型的过程中相应数据特征值不起作用。
[0090] 筛选模块1262根据筛选策略从接收到的备选类型信息中确定类型信息,筛选策略可以通过软件进行配置,比如软件可以通过控制配置单元配置筛选策略。筛选模块1262根据筛选策略,可以根据当前向内存层级推送数据流的流量,从多个备选类型信息中确定类型信息,比如,在当前向内存层级推送数据流的流量较大时,将指示一般数据型数据流或冷数据型数据流的备选类型信息确定为类型信息,在当前向内存层级推送数据流的流量较小时,将指示命令型数据流或元数据型数据流的备选类型信息确定为类型信息。筛选模块1262也可以按照识别模块1263的优先级,将高优先级的识别模块1263输出的备选类型信息确定为类型信息,比如,第一识别模块和第二识别模块针对同一数据流给出了备选类型信息,第一识别模块的优先级高于第二识别模块,因此筛选模块1262将第一识别模块输出的备选类型信息确定为该数据流的类型信息。
[0091] 在本申请实施例中,识别子单元126包括多个识别模块1263,不同的识别模块1263根据不同的识别策略对数据流的类型进行识别,而分流模块1261可以根据分流策略将接收到的数据流发送给一个或多个识别模块1263进行类型识别,使得数据流推送单元122可以更加精准地识别输入数据流的类型,避免不同类型的数据流相互影响,保证数据流推送的准确性和及时性。在识别子单元126中可以实现控制配置单元,软件通过控制配置单元可以对分流策略、识别策略和筛选策略进行配置,方便用户对分流策略、识别策略和筛选策略进行配置,提高用户的使用满意度和适用性。
[0092] 图7是本申请又一个实施例的数据流推送单元122的示意性框图。如图7所示,数据流推送单元122在包括接收子单元125、识别子单元126和推送子单元127的基础上,还包括第一性能监控模块128和第一性能控制模块129。
[0093] 第一性能监控模块128可以获取推送子单元127向各内存层级推送数据流的数据推送信息,并将数据推送信息发送给控制软件。控制软件可以根据数据推送信息分析推送效果是否符合预期,进而通过向第一性能控制模块129发送第一配置指令的方式,调控推送子单元127的推送机制。第一性能控制模块129在接收到来自控制软件的第一配置指令后,可以根据第一配置指令控制推送子单元127的推送策略,根据类型信息将相应的数据流推送到内存层级。
[0094] 数据推送信息可以是指推送子单元127进行数据推送的效果,比如数据推送信息可以包括被推送子单元127推送到关键内存资源(比如二级缓存和三级缓存)的流量等,根据被推送子单元127推送到关键内存资源的流量,可以确定数据流访问关键内存资源的带宽。
[0095] 第一性能监控模块128将数据推送信息发送给控制软件时,可以由控制软件通过第一性能监控模块128的访问接口,从第一性能监控模块128获取数据推送信息,或者,第一性能监控模块128可以按照控制软件定义的格式,将数据推送信息写入控制软件指定的内存地址空间,进而由控制软件从该内存地址空间中读取数据推送信息。
[0096] 控制软件根据数据推送信息,可以通过第一性能控制模块129控制推送子单元127向特定内存层级推送数据流的流量大小,还可以控制推送子单元127推送数据流的内存层级和对应的具体物理位置。控制软件可以根据第一性能监控模块128发送的数据推送消息和当前程序的运行情况,通过第一性能控制模块129动态调整推送子单元127的推送策略。
[0097] 推送子单元127在向内存层级推送数据流时,会在访问内存层级的事务中携带相关推送信息,比如,访问内存层级的事务会携带是否要推送、推送的具体层次信息、数据流被推送到内存层级中被分配资源存储下来的优先级有多高(局部性locality属性)等信息。
[0098] 在本申请实施例中,在推送子单元127向内存层级推送数据流的过程中,第一性能监控模块128可以监控数据流推送效果,获得用于指示数据流推送效果的数据推送信息,并将数据推送信息发送给控制软件,控制软件可以根据数据推送信息调控数据流推送策略,向第一性能控制模块129发送相应的第一配置指令,第一性能控制模块129根据第一配置指令控制推送子单元127,按照更新后的推送策略向内存层级推送数据流,使得数据流推送策略更加灵活,将数据流推送到合适的内存层级,在保证内存资源具有较高利用率的前提下,提升系统的性能。
[0099] 在一种可能的实现方式中,第一性能控制模块129可以根据第一配置指令,控制推送子单元127工作于不同的工作状态,进而对推送子单元127推送到特定内存层级或特定物理位置的数据流的流量进行调控。图8是本申请一个实施例的推送子单元工作状态转换的示意图。如图8所示,推送子单元127的工作状态包括第一工作状态STASHING、第二工作状态THREHOLDING和第三工作状态SHUTDOWN。
[0100] 在推送使能push_en==1时,推送子单元127工作于第一工作状态STASHING,此时推送子单元127会根据类型信息和默认推送策略将数据流推送到关键内存资源,关键内存资源包括至少一个内存层级,比如关键内存资源包括二级缓存(L2)和三级缓存(L3)。在推送子单元127工作于第一工作状态STASHING时,第一性能监控模块128会确定待处理流量All_Sta_wr,待处理流量All_Sta_wr用于指示推送子单元127向关键内存资源推送的流量中还未被处理的流量。第一性能监控模块128在获取待处理流量All_Sta_wr的通知,还会时计时器开始计时,在计时器达到配置的监控周期后,会拉高deter_time,即在每个监控周期结束时将deter_time拉高,产生一个脉冲信号。在deter_time被拉高产生脉冲信号后,计时器会被重新清零,以重新开始计时。
[0101] 第一性能监控模块128会统计推送到关键内存资源的流量,获得流量统计值,流量统计值指示推送子单元127推送到关键内存资源的流量累计值。每经过控制软件配置的时间间隔Retire_Time,第一性能监控模块128会从流量统计值中减去已处理流量De_Sta_wr,获得待处理流量All_Sta_wr。已处理流量De_Sta_wr可以由控制软件配置,也可以由配置在关键内存资源的第二性能监控模块123反馈。
[0102] 在推送子单元127工作于第一工作状态STASHING,且deter_time为高时,第一性能控制模块129可以判断待处理流量All_Sta_wr是否小于第一流量阈值Down_threthold,如果是,则控制推送子单元127继续在第一工作状态STASHING工作,否则控制推送子单元127转换至第二工作状态THREHOLDING。推送子单元127在第二工作状态THREHOLDING下,会对推送到关键内存资源的数据流的类型进行更加严格的限制,仅有设定类型的数据流才会被推送到内存层级,比如,只有命令型数据流和元数据型数据流才会被推送到关键内存资源,或者只有命令型数据流才会被推送到关键内存资源,而其他类型的数据流将会被推送到非关键内存资源。
[0103] 在推送子单元127工作于第二工作状态THREHOLDING,且deter_time为高(即监控周期的结束)时,第一性能控制模块129会判断待处理流量All_Sta_wr是否小于第二流量阈值Up‑threthold,第二流量阈值Up‑threthold大于第一流量阈值Down_threthold,如果是,则控制推送子单元127继续在第二工作状态THREHOLDING工作,否则控制推送子单元127转换至第三工作状态SHUTDOWN。推送子单元127在第三工作状态SHUTDOWN下,会暂停向关键内存资源推送数据流,将接收到的数据流推送到非关键内存资源。
[0104] 在推送子单元127工作于第三工作状态SHUTDOWN,且deter_time为高时,第一性能控制模块129会判断待处理流量All_Sta_wr是否小于第二流量阈值Up‑threthold,如果是,则控制推送子单元127转换至第二工作状态THREHOLDING,否则控制推送子单元127继续在第三工作状态SHUTDOWN工作。
[0105] 在推送子单元127工作于第二工作状态THREHOLDING,且deter_time为高时,第一性能控制模块129会判断待处理流量All_Sta_wr是否小于第一流量阈值Down_threthold,如果是,则控制推送子单元127转换至第一工作状态STASHING,否则控制推送子单元127继续在第二工作状态THREHOLDING工作。
[0106] 在本申请实施例中,当推送子单元127推送到关键内存资源中的数据流剩余较多时,说明推送到关键内存资源中的数据有较大部分未被处理器核121及时处理,推送子单元127在第一性能控制模块129的控制下限制向关键内存资源推送的数据流的类型,仅将延时敏感的数据流推送到关键内存资源,如果关键内存资源中由推送子单元127推送的数据进一步增多,推送子单元127暂停向关键内存资源推送数据流,保证关键内存资源中的数据不会溢出,进而保证处理器核121能够从内存层级中找到所需数据。在暂停向关键内存资源推送数据流,或限制向关键内存资源推送的数据流的类型后,如果关键内存资源中由推送子单元127推送的数据减少到一定阈值,则重新开始向关键内存资源推送数据流或向关键内存资源中推送更多类型的数据流,保证关键内存资源能够被充分利用,提高关键内存资源的利用率和系统的性能。
[0107] 在一种可能的实现方式中,识别子单元126在对数据流进行类型识别时,可以对数据流进行解析,获得事物层报文处理提示(TLP Processing Hints,TPH)前缀中保留域的编码信息,进而根据该编码信息确定数据流的类型,获得用于指示数据流的类型的类型信息。
[0108] 在通过PCIe协议中,TPH前缀包括保留域。通过定义TPH前缀包括的保留域,IO设备16发送数据流时将数据流的类型信息进行编码后放在该保留域中,进而识别子单元126可以在对数据流进行类型识别时可以获得该保留域中的编码信息,进而根据编码信息确定数据流的类型。
[0109] 图9是本申请一个实施例的TPH前缀的示意图。如图9所示,Design‑Defined域为PCIe协议中是保留域,如下表2示出了该保留域的一种编码方式。
[0110] 表2
[0111]
[0112] 需要说明的是,TPH前缀中保留域的编码信息是数据生产者根据需求,对当前数据的一种处理提示,上述表2所示的编码方式仅是其中一种示例,并不构成对编码信息的限定。
[0113] 在本申请实施例中,通过设计PCIe总线现有的TPH前述的保留域来实现PCIe设备和处理单元侧有关数据类型的通信机制,使得数据流推送单元122能够更加精准地识别数据流的类型,提升数据流类型识别的准确性和速度。
[0114] 需要说明的是,数据流推送单元122可以在处理单元12的根复合体(Root Complex,RC)中实现。
[0115] 在一种可能的实现方式中,IO设备16可以是通过PCIe接口连接的固态硬盘、通过PCIe接口连接的网卡、或通过CXL接口连接的存储设备。
[0116] 在本申请实施例中,数据流推送单元122可以对来自各种类型的IO设备16的数据流进行类型识别,并根据类型识别结果将数据流推送到相应的内存层级,适应于多种类型的IO设备16,提升了数据流推送的适用范围。
[0117] 在一种可能的实现方式中,多个内存层级包括如下各项中的至少两个:处理单元12中的二级缓存(L2)、三级缓存(L3)、末级缓存(LLC)、主存(main memory)、通过CXL接口连接的内存(CXL内存)、通过CXL接口连接的GPU的三级缓存、及通过CXL接口连接的GPU的高带宽内存(Hight Bandwidth Memory,HBM)。
[0118] 如图3所示,GPU包括末级缓存(LLC),GPU包括的LLC与处理单元(CPU)12包括的LLC通过CXL接口互联,使得GPU和CPU可以共享彼此的LLC。
[0119] 在本申请实施例中,数据流推送单元122不仅可以将发送给处理器核121的数据流推送到CPU的内存层级,还可以将发送给GPU的数据流推送到GPU的三级缓存和HBM,在整个系统中GPU和处理器核均为计算单元。将数据流推送的范围扩展到GPU本地的三级缓存和HBM,进一步提升数据流推送单元122的适用范围,提升系统的性能。
[0120] 数据流推送方法
[0121] 图10是本申请一个实施例的数据流推送方法的流程图,该数据流推送方法可由上述实施例中的数据流推送单元122执行。如图10所示,该数据流推送方法包括如下步骤:
[0122] 步骤1001、获取来自IO设备的数据流;
[0123] 步骤1002、对数据流进行类型识别,获得用于指示数据流的类型的类型信息;
[0124] 步骤1003、根据类型信息,将数据流推送至多个内存层级中的目标内存层级。
[0125] 在本申请实施例中,接收到来自IO设备的数据流后,对数据流进行类型识别,获得类型信息,根据类型信息将数据流推送至相应的内存层级,可以高效地分配和利用缓存资源给延时敏感的数据流,从而使处理器核可以更快读取缓存资源中的数据进行处理,降低数据交互的延时,提升系统性能。
[0126] 需要说明的是,由于数据流推送方法的细节在上述实施例的处理单元和数据流推送单元部分,已经结合结构示意图进行了详细说明,具体过程可参见前述处理单元实施例和数据流推送单元实施例中的描述,在此不再进行赘述。
[0127] 本申请实施例的商业价值
[0128] 本申请实施例在解决不能对数据预测和判断其应存在在内存的哪个层级,特别是IO数据流的问题时,在host CPU的RC中实现数据流推送单元,数据流推送单元在接收到IO设备发送的数据流后,识别数据流的类型,进而根据数据流的类型将数据流推送至相应的内存层级,从而可以高效地分配和利用缓存资源给延时敏感的数据流,提高关键内存资源的利用率,提升系统性能,对于CPU产品具有良好的市场前景。
[0129] 需要说明的是,本申请实施例所涉及到的与用户有关的信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于对模型进行训练的样本数据、用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
[0130] 应该理解,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于装置和系统实施例中描述的方法,所以描述的比较简单,相关之处参见其他实施例的部分说明即可。
[0131] 应该理解,上述对本说明书特定实施例进行了描述。其它实施例在权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0132] 应该理解,本文用单数形式描述或者在附图中仅显示一个的元件并不代表将该元件的数量限于一个。此外,本文中被描述或示出为分开的模块或元件可被组合为单个模块或元件,且本文中被描述或示出为单个的模块或元件可被拆分为多个模块或元件。
[0133] 还应理解,本文采用的术语和表述方式只是用于描述,本说明书的一个或多个实施例并不应局限于这些术语和表述。使用这些术语和表述并不意味着排除任何示意和描述(或其中部分)的等效特征,应认识到可能存在的各种修改也应包含在权利要求范围内。其他修改、变化和替换也可能存在。相应的,权利要求应视为覆盖所有这些等效物。

当前第1页 第1页 第2页 第3页