CN116414723A - 内存带宽的控制方法、装置、电子设备和存储介质 - Google Patents
内存带宽的控制方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN116414723A CN116414723A CN202111682780.9A CN202111682780A CN116414723A CN 116414723 A CN116414723 A CN 116414723A CN 202111682780 A CN202111682780 A CN 202111682780A CN 116414723 A CN116414723 A CN 116414723A
- Authority
- CN
- China
- Prior art keywords
- memory bandwidth
- cpu core
- preset
- control
- cpu
- 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
- 238000000034 method Methods 0.000 title claims abstract description 50
- 230000006870 function Effects 0.000 claims abstract description 25
- 238000011217 control strategy Methods 0.000 claims abstract description 18
- 238000001514 detection method Methods 0.000 claims description 18
- 238000012545 processing Methods 0.000 claims description 17
- 238000004422 calculation algorithm Methods 0.000 claims description 9
- 238000013519 translation Methods 0.000 claims description 8
- 238000011156 evaluation Methods 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 6
- 230000000903 blocking effect Effects 0.000 claims 1
- 238000005516 engineering process Methods 0.000 abstract description 11
- 230000002452 interceptive effect Effects 0.000 abstract 1
- 238000005192 partition Methods 0.000 description 8
- 230000014616 translation Effects 0.000 description 7
- 238000002955 isolation Methods 0.000 description 6
- 238000012544 monitoring process Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000015556 catabolic process Effects 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000006735 deficit Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000001771 impaired effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011895 specific detection Methods 0.000 description 1
Images
Classifications
-
- 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
-
- 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
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- 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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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
- G06F2212/1021—Hit rate 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及计算机技术领域,特别涉及一种内存带宽的控制方法、装置、电子设备和存储介质。应用在多核***对应的操作***上,方法包括:检测CPU核的预设评估CPU核内存带宽占用情况的指定事件的发生次数;当指定事件的发生次数满足预设控制条件时,根据预设内存带宽控制函数和控制策略获取内存带宽控制任务流;运行内存带宽控制任务流,完成对CPU核的内存带宽控制。通过对各CPU核进行独立的内存带宽占用检测,在内存带宽占用达到一定条件时进行内存带宽控制,避免因为一个CPU超额占用内存带宽而影响其他CPU的内存访问时间,多核***中各CPU的相互干扰以及各CPU核对DRAM控制器的争用,进而保证多核***的确定性和各CPU核内存访问的时效性及稳定性。
Description
技术领域
本申请实施例涉及计算机技术领域,特别涉及一种内存带宽的控制方法、装置、电子设备和存储介质。
背景技术
在多核***中,内存是一个关键的共享资源,存储器请求的处理时间是高度可变的,因为它取决于动态随机存取存储器(Dynamic Random Access Memory,简称DRAM)控制器的状态。具体来说由于来自一个中央处理器(Central Processing Unit,简称CPU)核的存储器访问也可能受来自其他CPU核的请求的影响,DRAM控制器通常采用调度算法对请求进行重新排序,以最大限度地提高DRAM的整体吞吐量;上述因素都会影响内存密集型实时应用的时间可预测性。
然而,用于安全关键航空电子***的多核分区操作***平台上,CPU核之间的竞争是多核分区隔离的主要障碍。各CPU核之间的竞争是由于硬件资源的隐性共享(如:由内存控制器和主存储器引发);且各CPU核对DRAM控制器的争用会导致多核***的不确定性,造成内存访问抖动和内存访问延迟的问题。
发明内容
本申请实施例的主要目的在于提出一种内存带宽的控制方法、装置、电子设备和存储介质。旨在避免多核***中各CPU的相互干扰以及各CPU核对DRAM控制器的争用,保证多核***的确定性和各CPU核内存访问的时效性及稳定性。
为实现上述目的,本申请实施例提供了一种内存带宽的控制方法,应用在包含各中央处理器CPU核的多核***对应的操作***上,包括:检测所述CPU核的预设的评估所述CPU核内存带宽占用情况的指定事件的发生次数;当所述指定事件的发生次数满足预设控制条件时,根据预设内存带宽控制函数和预设控制策略获取内存带宽控制任务流;运行所述内存带宽控制任务流,完成对所述CPU核的内存带宽控制。
为实现上述目的,本申请实施例还提供一种内存带宽的控制装置,应用包含各中央处理器CPU核的多核***对应的操作***上,包括:控制检测模块,用于检测所述CPU核的预设的评估所述CPU核内存带宽占用情况的指定事件的发生次数;任务生成模块,用于当所述指定事件的发生次数满足预设控制条件时,根据预设内存带宽控制函数和预设控制策略获取内存带宽控制任务流;内存带宽控制模块,用于运行所述内存带宽控制任务流,完成对所述CPU核的内存带宽控制。
为实现上述目的,本申请实施例还提供了一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的内存带宽的控制方法。
为实现上述目的,本申请实施例还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述的内存带宽的控制方法。
本申请提出的内存带宽的控制方法,在多核***的各中央处理器CPU核的内存带宽控制过程中,检测CPU核的预设的评估CPU核内存带宽占用情况的指定事件的发生次数;当指定事件的发生次数满足预设控制条件时,根据预设内存带宽控制函数和预设控制策略获取内存带宽控制任务流;运行内存带宽控制任务流,完成对CPU核的内存带宽控制;通过对各CPU核进行独立的内存带宽占用检测,在内存带宽占用达到一定条件时进行内存带宽控制,避免因为一个CPU超额占用内存带宽而影响其他CPU的内存访问时间,避免多核***中各CPU的相互干扰以及各CPU核对DRAM控制器的争用,进而保证多核***的确定性和各CPU核内存访问的时效性及稳定性,解决了现有技术中各CPU核对DRAM控制器的争用会导致多核***的不确定性,造成内存访问时间抖动和内存访问延迟的问题。
附图说明
图1是本申请实施方式提供的内存带宽的控制方法的流程图;
图2是本申请实施方式提供的内存带宽的控制方法的流程图;
图3是本申请实施方式提供的内存带宽的控制方法的流程图;
图4是本申请实施方式提供的内存带宽的控制方法的流程图;
图5是本申请实施方式提供的内存带宽的控制装置的结构示意图;
图6是本申请实施方式提供的电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请的各实施例进行详细的阐述。然而,本领域的普通技术人员可以理解,在本申请各实施例中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施例的种种变化和修改,也可以实现本申请所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本申请的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
用于安全关键航空电子***的多核分区操作***平台上,CPU核之间的竞争是分区间时间隔离的主要障碍。核心之间的争用是由于硬件资源的隐性共享,比如由内存控制器和主存储器引发,这种现象通常被称为“吵闹邻居”,如果保持现有分区隔离方案不变,则可能破坏分区之间的时间隔离性,使得一个分区程序的执行时间受其他分区影响,导致最后期限错过,甚至导致***故障。针对“CPU核之间的竞争是分区间时间隔离的主要障碍”这一问题,Intel公司提出了基于硬件的内存资源隔离解决方案Resource DirectorTechnology技术,其中包含了内存带宽分配(Memory Bandwidth Allocation,简称MBA)技术和内存带宽监测(Memory Bandwidth Monitoring,简称MBM)技术;ARM公司也提出了Memory System Resource Partitioning and Monitoring技术用于解决CPU访存过程中共享资源的竞争带来的某些关键应用性能下降或者***整体性能下降的问题。但Intel公司和ARM公司的方案依赖于硬件,目前只有最新的部分硬件支持;在航空电子领域,由于研发周期和适航的要求,采用的CPU硬件往往是远远落后于主流硬件的,因此目前无法利用Intel公司的Resource Director Technology技术和ARM公司的Memory System ResourcePartitioning and Monitoring技术提及的硬件方案解决该问题。
本申请提及的内存带宽的控制方法是一种通用的内存带宽的控制方法,不依赖最新的特殊硬件支持,可以在不支持Intel RDT和ARM MSRPM技术的CPU核中实施。
本申请的一个实施例涉及一种内存带宽的控制方法,应用在包含各中央处理器CPU核的多核***对应的操作***上,如图1所示,至少包括但不限于以下步骤:
步骤101,检测CPU核的预设的评估CPU核内存带宽占用情况的指定事件的发生次数。
在一示例实施中,评估CPU核内存带宽占用情况的指定事件可以是最后一级缓存未命中事件Last Level Cache Misses Events、地址变换高速缓存未命中事件Translation Look-aside Buffer Misses Events、内存管理单元数据繁忙事件Data MMUbusy Events、Load/Store,Data Cache,and Data Line Fill Buffer(DLFB)Events或Instruction MMU,Data MMU and L2 MMU Events,其中,以上事件可以独立使用,也可以组合使用。
在一示例实施中,在对CPU核的评估CPU核内存带宽占用情况的指定事件的发生次数进行检测时,可以基于CPU核现有的硬件进行检测,也可以基于软件程序的方式进行检测,具体的检测方式由设定的评估CPU核内存带宽占用情况的指定事件决定。
在一示例实施中,指定事件可以由多个硬件事件组成,如硬件事件A和硬件事件B组成指定事件,那么指定事件的发生次数等于各硬件事件的发生次数与各硬件事件的预设阈值的乘积的累加和,如:指定事件的发生次数=硬件事件A的发生次数*硬件事件A的预设阈值+硬件事件B的发生次数*硬件事B件的预设阈值,其中,指定事件中的各硬件事件可以是最后一级缓存未命中事件、地址变换高速缓存未命中事件、内存管理单元数据繁忙事件、Load/Store,Data Cache,and Data Line Fill Buffer(DLFB)Events或Instruction MMU,Data MMU and L2 MMU Events。
在一示例实施中,还可以为各CPU核设置一个检测周期,根据检测周期触发对CPU核的指定事件的发生次数的检测,使得本申请可以自动对各CPU核在一个检测周期内指定事件的发生次数进行检测。
步骤102,当指定事件的发生次数满足预设控制条件时,根据预设内存带宽控制函数和预设控制策略获取内存带宽控制任务流。
在一示例实施中,预设的控制条件是指定事件的发生次数的阈值,是根据CPU核的内存带宽配额和内存带宽控制算法生成的,而在指定事件中包含多个硬件事件时,在生成指定事件的发生次数的阈值时会考虑各硬件事件的权值(即指定事件的发生次数的阈值由各硬件事件的发生次数阈值和各硬件事件的权值生成);多核***中各CPU核的控制条件会由于各CPU核的内存带宽配额而不相同;多核***中各CPU核的实际内存带宽配额的总和小于多核***的总内存带宽。
在一示例实施中,在一检测周期中,当检测周期内的指定事件的发生次数均未满足控制条件时,则需要根据CPU核的内存带宽配额和内存带宽控制算法调整下一个检测周期内的控制条件。在一示例实施中,当指定事件的发生次数满足控制条件时,也就是指定事件的发生次数达到阈值时,需要根据内存带宽控制函数和控制策略获取内存带宽控制任务流;本申请包含有多种内控制策略,各控制策略都有其对应的存控制任务流,在该CPU核的控制策略确定好之后,可以通过内存带宽控制函数唤醒与确定好的控制策略对应的内存带宽控制任务流。
在一示例实施中,控制策略可以为执行一定数量空操作指令,该控制策略对应的内存带宽控制任务流指示执行预设数量的空操作指令;控制策略可以为阻塞CPU核的当前任务一段时间,该控制策略对应的内存带宽控制任务流为在预设时间内阻塞CPU核的内存访问操作;控制策略可以为占用全局或者其他CPU核空闲的内存带宽;该控制策略对应的内存带宽控制任务流用于当多核***中的其他CPU核存在空闲内存带宽时,从其他CPU核中获取空闲内存带宽供CPU核调用;控制策略可以为将内存带宽控制信号发送给CPU核的任务,该控制策略对应的内存带宽控制任务流用于将内存带宽控制信号发送给CPU核的任务,由任务自行处理。
在一示例实施中,所获取的内存带宽控制任务流设置有优先级,当获取到内存带宽控制任务流之后,通过内存带宽控制任务流的优先级保证一个预先设置的时间长度,在时间长度内执行该内存带宽控制任务流。
步骤103,运行内存带宽控制任务流,完成对CPU核的内存带宽控制。
在一示例实施中,运行所获取的内存带宽控制任务流,根据该内存带宽控制任务流对应的控制策略对CPU核的内存进行控制;从而避免避免该CPU核的内存访问请求通过DRAM控制器送到总线上,因为在存在多个请求的情况下,DRAM控制器会对各个CPU的内存访问请求进行串行排序,从而导致的多核***的各CPU核之间存在相互干扰,这种现象通常被称为“吵闹邻居”。
此处需要注意的是,本申请提及的包含各中央处理器CPU核的多核***对应的操作***中,对各CPU核的内存带宽控制是单独进行的。
本申请实施例,在多核***的各中央处理器CPU核的内存带宽控制过程中,检测CPU核的预设的评CPU核内存带宽占用情况的指定事件的发生次数;当指定事件的发生次数满足预设控制条件时,根据预设内存带宽控制函数和预设控制策略获取内存带宽控制任务流;运行内存带宽控制任务流,完成对CPU核的内存带宽控制;通过对各CPU核进行独立的内存带宽占用检测,在内存带宽占用达到一定条件时进行内存带宽控制,避免因为一个CPU超额占用内存带宽而影响其他CPU的内存访问时间,避免多核***中各CPU的相互干扰以及各CPU核对DRAM控制器的争用,进而保证多核***的确定性和各CPU核内存访问的时效性及稳定性,解决了现有技术中各CPU核对DRAM控制器的争用会导致多核***的不确定性,造成内存访问时间抖动和内存访问延迟的问题。
本申请的一个实施例涉及一种内存带宽的控制方法,应用在包含各中央处理器CPU核的多核***对应的操作***上,如图2所示,包括:
步骤201,当指定事件为地址变换高速缓存未命中事件时,通过预设的检测任务流检测CPU核的评估CPU核内存带宽占用情况的指定事件的发生次数。
在一示例实施中,由于地址映射(从虚拟地址转换成物理地址)需要的开销开大。转换过程如下:第一次访问内存是访问页表,取出虚拟页对应的物理页。第二次访问内存是访问实际内存地址。为了提高效率,现代CPU都包含了一个特殊Cache来跟踪最近使用过的地址变换,这个就是地址变换高速缓存(Translation Look-aside Buffer,简称TLB)。
在一示例实施中,对于TLB Miss由软件负责处理的***,如PPC-e500内核寄存器,可以通过检测任务流来获取CPU核的地址变换高速缓存未命中事件的发生次数。
步骤202,当指定事件的发生次数满足预设控制条件时,根据预设内存带宽控制函数和预设控制策略获取内存带宽控制任务流。
在一示例实施中,当指定事件为地址变换高速缓存未命中事件时,在指定事件的发生次数满足预设控制条件时,则会可以跳转到内存带宽控制函数,结合控制策略获取内存带宽控制任务流,获取任务流的方法与本申请实施例的步骤102大致相同,此处不一一赘述;其中,本步骤所提及的内存带宽控制函数可以是基于TLB Miss处理函数实现。
步骤203,运行内存带宽控制任务流,完成对CPU核的内存带宽控制。
在一示例实施中,本步骤与本申请实施例的步骤103大致相同,此处不一一赘述。
本申请实施例,在其他实施例的基础之上还可以使用软件程序来对各CPU核的指定事件的发生次数进行检测,只依赖于CPU核的硬件事件计数器或者性能计时器功能,不依赖于其他额外硬件功能,使得本申请的适用面广且成本低。
本申请的一个实施例涉及一种内存带宽的控制方法,应用在包含各中央处理器CPU核的多核***对应的操作***上,如图3所示,包括:
步骤301,当指定事件为CPU核最后一级缓存未命中事件时,通过CPU核的性能计数器检测CPU核的评估CPU核内存带宽占用情况的指定事件的发生次数。
在一示例实施中,缓存命中率是CPU核性能的一个关键性能指标。CPU里面有好几级缓存Cache,每一级缓存都比后一级缓存访问速度快,最后一级缓存称为Last LevelCache;最后一级缓存的后面就是内存。当CPU需要访问一块数据或者指令时,它会首先查看最靠近的一级缓存(L1);如果数据存在,那么就是缓存命中(Cache Hit),否则就是不命中(Cache Miss),此时需要继续查询下一级缓存。缓存不命中的比例对CPU的性能影响很大,尤其是最后一级缓存的不命中时,对性能的损害尤其严重。这个损害主要有两方面的性能影响:第一个方面是CPU核的速度受影响。在最后一级缓存没命中时便会继续访问内存,内存的访问延迟是最后一级缓存的延迟的很多倍(比如五倍),进而影响CPU核的计算速度。第二个方面是关于内存带宽。如果最后一级缓存没有命中,那么就只能从内存里面获取带宽资源。最后一级缓存不命中的计数,其实就是对内存访问的计数,因为CPU核对内存的访问总是要经过最后一级缓存,不会跳过最后一级缓存的。所以每一次最后一级缓存未命中,就会导致一次内存访问;反之也是成立的:每一次内存访问都是因为最后一级缓存没有命中。而一个***的内存带宽是有限制的,很有可能会成为性能瓶颈。从内存里取数据,就会占用内存带宽。因此,如果最后一级缓存未命中频次很高,那么对内存带宽的使用就会很大。内存带宽使用率很高的情况下,内存的存取延迟会急剧上升。因此,可以使用最后一级缓存未命中事件的发生次数来评估CPU核内存带宽占用情况。
在一示例实施中,可以使用CPU核中的性能计数器(Performance MeasuringCounters,简称PMC)来对最后一级缓存未命中事件的发生次数进行检测。
步骤302,根据预设周期CPU核的性能计数器上报的指定事件的发生次数,判断指定事件的发生次数是否满足控制条件。
在一示例实施中,CPU核的性能计数器在检测到指定事件的发生次数之后,并不会对指定事件的发生次数进行任务处理,而是上报至内存带宽控制***中,内存带宽控制***根据CPU核的性能计数器上报的指定事件的发生次数来判断该指定事件的发生次数是否满足控制条件。
步骤303,根据CPU核的性能计数器是否上报中断触发指令,判断指定事件的发生次数是否满足控制条件。
在一示例实施中,CPU核的性能计数器中也设置有指定事件的发生次数的控制条件,在检测到指定事件的发生次数之后,由CPU核的性能计数器判断指定事件的发生次数是否满足控制条件,在定事件的发生次数满足控制条件时生成一个中断触发指令,并将中断触发指令上报至内存带宽控制***,内存带宽控制***在接收到该中断触发指令之后,便认为指定事件的发生次数满足控制条件。
步骤304,当指定事件的发生次数满足预设控制条件时,根据预设内存带宽控制函数和预设控制策略获取内存带宽控制任务流。
在一示例实施中,当指定事件为CPU核最后一级缓存未命中事件时,在指定事件的发生次数满足预设控制条件时,则会触发内存带宽控制中断,可以跳转到内存带宽控制函数,结合控制策略获取内存带宽控制任务流,获取任务流的方法与本申请实施例的步骤102大致相同,此处不一一赘述;其中,本步骤所提及的内存带宽控制函数优选为中断处理函数,其他用于使CPU核的内存带宽控制流程终止或暂停的函数也可使用。
步骤305,运行内存带宽控制任务流,完成对CPU核的内存带宽控制。
在一示例实施中,本步骤与本申请实施例的步骤103大致相同,此处不一一赘述。
此处需要注意的是:步骤302和步骤303是两种并列的方法,可任选其一进行。
本申请实施例,在其他实施例的基础之上还可以基于现有CPU硬件的PMC寄存器进行CPU核的指定事件的发生次数的检测,无需新增额外的硬件来支持,使得本申请的适用面广且成本低。
本申请的一个实施例涉及一种内存带宽的控制方法,应用在包含各中央处理器CPU核的多核***对应的操作***上,如图4所示,包括:
步骤401,获取CPU核的内存带宽配额,并根据预设的控制算法和内存带宽配额生成控制条件。
在一示例实施中,在对CPU核进行指定事件的检测之前,需要获取到该CPU核的内存带宽配额,之后根据预设的控制算法将CPU核的内存带宽配额转换为指定事件的发生次数阈值,即控制条件,在后续检测到的指定事件的发生次数满足控制条件时,就说明该CPU核的内存带宽占用情况以达到最大值,需要进行内存带宽控制。
步骤402,检测CPU核的预设的评估CPU核内存带宽占用情况的指定事件的发生次数。
在一示例实施中,本步骤与本申请实施例的步骤101大致相同,此处不一一赘述。
步骤403,当指定事件的发生次数满足控制条件时,根据预设内存带宽控制函数和预设控制策略获取内存带宽控制任务流。
在一示例实施中,本步骤与本申请实施例的步骤102大致相同,此处不一一赘述。
步骤404,运行内存带宽控制任务流,完成对CPU核的内存带宽控制。
在一示例实施中,本步骤与本申请实施例的步骤103大致相同,此处不一一赘述。
本申请实施例,在其他实施例的基础之上还可以在对各CPU核的评估CPU核内存带宽占用情况的指定事件的发生次数进行检测之前,根据各CPU核的内存带宽配额生成各CPU核的指定事件的发生次数的控制条件,使得本申请对各CPU进行指定事件的发生次数的判断时,所采用的判断控制条件都是各CPU对应的,从而提高本申请对各CPU进行内存带宽控制判断的准确性。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
本申请的一个实施例涉及一种内存带宽的控制装置,应用在包含各中央处理器CPU核的多核***对应的操作***上,下面对本实施例的内存带宽的控制装置的细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本例的必须,图5是本实施例所述的内存带宽的控制装置的示意图,包括:控制检测模块501,任务生成模块502和内存带宽控制模块503。
其中,控制检测模块501,用于检测CPU核的预设的评估CPU核内存带宽占用情况的指定事件的发生次数;
任务生成模块502,用于当指定事件的发生次数满足预设控制条件时,根据预设内存带宽控制函数和预设控制策略获取内存带宽控制任务流;
内存带宽控制模块503,用于运行内存带宽控制任务流,完成对CPU核的内存带宽控制。
在一示例实施中,本申请实施例提及的操作***可以是多核***的分区操作***,也可以是多核***的通用操作***。
不难发现,本实施例为与上述方法实施例对应的***实施例,本实施例可以与上述方法实施例互相配合实施。上述实施例中提到的相关技术细节和技术效果在本实施例中依然有效,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在上述实施例中。
值得一提的是,本实施例中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本申请的创新部分,本实施例中并没有将与解决本申请所提出的技术问题关系不太密切的单元引入,但这并不表明本实施例中不存在其它的单元。
本申请的一个实施例涉及一种电子设备,如图6所示,包括:至少一个处理器601;以及,与所述至少一个处理器601通信连接的存储器602;其中,所述存储器602存储有可被所述至少一个处理器601执行的指令,所述指令被所述至少一个处理器601执行,以使所述至少一个处理器601能够执行上述各实施例中的内存带宽的控制方法。
其中,存储器和处理器采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器和存储器的各种电路连接在一起。总线还可以将诸如***设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器。
处理器负责管理总线和通常的处理,还可以提供各种功能,包括定时,***接口,电压调节、电源管理以及其他控制功能。而存储器可以被用于存储处理器在执行操作时所使用的数据。
本申请的一个实施例涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本申请的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。
Claims (12)
1.一种内存带宽的控制方法,其特征在于,应用在包含各中央处理器CPU核的多核***对应的操作***上,所述方法包括:
检测所述CPU核的预设的评估所述CPU核内存带宽占用情况的指定事件的发生次数;
当所述指定事件的发生次数满足预设控制条件时,根据预设内存带宽控制函数和预设控制策略获取内存带宽控制任务流;
运行所述内存带宽控制任务流,完成对所述CPU核的内存带宽控制。
2.根据权利要求1所述的内存带宽的控制方法,其特征在于,所述检测所述CPU核的预设的评估所述CPU核内存带宽占用情况的指定事件的发生次数,包括:
当所述指定事件为地址变换高速缓存未命中事件时,通过预设的检测任务流检测所述CPU核的所述指定事件的发生次数。
3.根据权利要求1所述的内存带宽的控制方法,其特征在于,所述检测所述CPU核的预设的评估所述CPU核内存带宽占用情况的指定事件的发生次数,包括:
当所述指定事件为所述CPU核最后一级缓存未命中事件时,通过所述CPU核的性能计数器检测所述CPU核的所述指定事件的发生次数。
4.根据权利要求3所述的内存带宽的控制方法,其特征在于,所述方法还包括:
根据预设周期检测所述CPU核的性能计数器上报的所述指定事件的发生次数,判断所述指定事件的发生次数是否满足所述控制条件;或者,
根据所述CPU核的性能计数器是否上报中断触发指令,判断所述指定事件的发生次数是否满足所述控制条件;所述中断触发指令是所述CPU核的性能计数器在所述指定事件的发生次数满足所述控制条件时生成的。
5.根据权利要求1至权利要求4中任一项所述的内存带宽的控制方法,其特征在于,当所述指定事件包含多个硬件事件时,所述检测所述CPU核的预设的评估所述CPU核内存带宽占用情况的指定事件的发生次数,包括:
将各所述硬件事件的发生次数与各所述硬件事件的预设权重的乘积的累加和作为所述指定事件的发生次数。
6.根据权利要求1至权利要求4中任一项所述的内存带宽的控制方法,其特征在于,所述检测所述CPU核的预设的评估所述CPU核内存带宽占用情况的指定事件的发生次数,之前包括:
获取所述CPU核的内存带宽配额;
根据预设的控制算法和所述内存带宽配额生成所述控制条件。
7.根据权利要求1至权利要求4中任一项所述的内存带宽的控制方法,其特征在于,所述控制策略,包括:执行预设数量的空操作指令;或,在预设时间内阻塞或切换所述CPU核的进行内存相关访问操作的任务;或,当所述多核***中的其他CPU核存在空闲内存带宽时,从所述其他CPU核中获取所述空闲内存带宽供所述CPU核调用。
8.根据权利要求1至权利要求4中任一项所述的内存带宽的控制方法,其特征在于,所述检测所述CPU核的预设的评估所述CPU核内存带宽占用情况的指定事件的发生次数,包括:
根据预设的检测周期对所述CPU核的所述指定事件的发生次数进行检测。
9.根据权利要求8所述的内存带宽的控制方法,其特征在于,所述方法还包括:当所述检测周期内的所述指定事件的发生次数均未满足所述控制条件时,则根据预设算法调整下一个所述检测周期内的所述控制条件。
10.一种内存带宽的控制装置,其特征在于,应用在包含各中央处理器CPU核的多核***对应的操作***上,所述装置包括:
控制检测模块,用于检测所述CPU核的预设的评估所述CPU核内存带宽占用情况的指定事件的发生次数;
任务生成模块,用于当所述指定事件的发生次数满足预设控制条件时,根据预设内存带宽控制函数和预设控制策略获取内存带宽控制任务流;
内存带宽控制模块,用于运行所述内存带宽控制任务流,完成对所述CPU核的内存带宽控制。
11.一种电子设备,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至9中任一项所述的内存带宽的控制方法。
12.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至9中任一项所述的内存带宽的控制方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111682780.9A CN116414723A (zh) | 2021-12-30 | 2021-12-30 | 内存带宽的控制方法、装置、电子设备和存储介质 |
PCT/CN2022/141128 WO2023125248A1 (zh) | 2021-12-30 | 2022-12-22 | 内存带宽的控制方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111682780.9A CN116414723A (zh) | 2021-12-30 | 2021-12-30 | 内存带宽的控制方法、装置、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116414723A true CN116414723A (zh) | 2023-07-11 |
Family
ID=86997787
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111682780.9A Pending CN116414723A (zh) | 2021-12-30 | 2021-12-30 | 内存带宽的控制方法、装置、电子设备和存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116414723A (zh) |
WO (1) | WO2023125248A1 (zh) |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4409568B2 (ja) * | 2006-12-21 | 2010-02-03 | 株式会社東芝 | 帯域制御プログラム及びマルチプロセッサシステム |
BR112019008825A2 (pt) * | 2016-10-31 | 2019-07-09 | Leonardo Spa | estrutura de software de sistema determinístico certificável para aplicações críticas de segurança em tempo real crítico em sistemas de aviônica com processadores de múltiplos núcleos |
GB2560548B (en) * | 2017-03-15 | 2021-01-13 | Advanced Risc Mach Ltd | Video data processing system |
CN107770096B (zh) * | 2017-12-11 | 2021-07-30 | 国网河南省电力公司信息通信公司 | 一种基于负载均衡的sdn/nfv网络动态资源分配方法 |
CN110287014B (zh) * | 2019-06-27 | 2022-12-09 | 北京大学深圳研究生院 | 一种计算机***内存带宽调度方法、***及存储介质 |
CN112260962B (zh) * | 2020-10-16 | 2023-01-24 | 网宿科技股份有限公司 | 一种带宽控制方法及装置 |
CN113485797A (zh) * | 2021-01-25 | 2021-10-08 | 北京智数慧云信息技术有限公司 | 一种面向数据获取任务的调度方法 |
-
2021
- 2021-12-30 CN CN202111682780.9A patent/CN116414723A/zh active Pending
-
2022
- 2022-12-22 WO PCT/CN2022/141128 patent/WO2023125248A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023125248A1 (zh) | 2023-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102231190B1 (ko) | 프리페처 기반 추론적 동적 랜덤 액세스 메모리 판독 요청 기술 | |
KR101455899B1 (ko) | 다수의 가상 서버들 사이에 공유 자원들의 할당을 통한 소프트웨어 제어기능을 갖는 마이크로 프로세서 | |
US9727497B2 (en) | Resolving contention between data bursts | |
US11876731B2 (en) | System and methods for sharing memory subsystem resources among datacenter applications | |
US10216414B2 (en) | Frame choosing during storage constraint condition | |
US6341334B1 (en) | Bridge method, bus bridge, and multiprocessor system | |
US20130339595A1 (en) | Identifying and prioritizing critical instructions within processor circuitry | |
US20130054896A1 (en) | System memory controller having a cache | |
JP7160941B2 (ja) | アクセラレータ要求を処理する際の中央処理装置の処理品質保証の実施 | |
WO2011161782A1 (ja) | マルチコアシステムおよび外部入出力バス制御方法 | |
JP2015148890A (ja) | 情報処理装置、情報処理システム、および情報処理システムの制御方法 | |
US8671232B1 (en) | System and method for dynamically migrating stash transactions | |
US20110055831A1 (en) | Program execution with improved power efficiency | |
Gracioli et al. | Two‐phase colour‐aware multicore real‐time scheduler | |
CN103955397B (zh) | 一种基于微架构感知的虚拟机调度多策略选择方法 | |
CN116414723A (zh) | 内存带宽的控制方法、装置、电子设备和存储介质 | |
JPH07287064A (ja) | レーダ信号処理装置 | |
US9043507B2 (en) | Information processing system | |
JPH04123234A (ja) | マルチプロセッサのプロセススケジューリング方式及びメモリ管理方式 | |
WO2023051917A1 (en) | Memory controller and data processing system with memory controller | |
US20230236981A1 (en) | Computer-implemented method for managing cache utilization | |
US20230068779A1 (en) | Method for Evicting Data from Memory | |
KR101480954B1 (ko) | Numa 시스템의 스케줄링 장치 및 그 방법 | |
CN117667776A (zh) | 存储器带宽分配方法及设备 | |
CN114356732A (zh) | 一种基于numa架构的应用***性能优化方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |