共享资源分配方法及装置与流程

文档序号:16811217发布日期:2019-02-10 13:40阅读:314来源:国知局
共享资源分配方法及装置与流程

本申请涉及信息技术领域,特别涉及一种共享资源分配方法及装置。



背景技术:

随着互联网与云计算的发展,越来越多的线程被从本地迁移到云端的数据中心服务器,为了减小数据中心服务器的硬件开销,提高数据中心服务器的资源利用率,一般会采取多个线程混合部署的策略,即将多个线程混合部署在同一台数据中心服务器中,由于混合部署的多个线程需要共享数据中心服务器中的软硬件资源(即共享资源),从而产生资源竞争,导致混合部署的线程性能的不可预测,会严重影响目标线程(如高优先级线程)的服务质量。



技术实现要素:

为解决现有技术的问题,本申请实施例提供一种共享资源分配方法及装置,在多线程同时访问共享资源时对目标线程的工作状态进行检测,并根据检测到的工作状态调整目标线程的共享资源的分配额度,从而保证目标线程的服务质量。

第一方面,本申请实施例提供一种共享资源分配方法,包括:在多线程同时访问共享资源时检测共享资源的工作状态并在工作状态下计数,工作状态包括目标线程无阻塞使用共享资源的第一状态、目标线程造成共享资源阻塞的第二状态、以及非目标线程造成共享资源阻塞的第三状态,读取计数值以获取基本时钟周期数、等候时钟周期数以及干扰时钟周期数,其中,基本时钟周期数是共享资源在第一状态下的计数值,等候时钟周期数是共享资源在第二状态下的计数值,干扰时钟周期数是共享资源在第三状态下的计数值,根据基本时钟周期数、等候时钟周期数和干扰时钟周期数,调整目标线程的共享资源的分配额度。

在本申请实施例中,由于针对目标线程对共享资源的使用情况进行检测,分别统计了目标线程的基本时钟周期数、等候时钟周期数和干扰时钟周期数,并根据基本时钟周期数、等候时钟周期数和干扰时钟周期数来调整目标线程的共享资源的分配额度,使得目标线程的共享资源的分配额度可根据共享资源的工作状态动态调整,从而确保目标线程的服务质量。

结合第一方面,在第一方面的第一种可能的实现方式中,共享资源包括多个子共享资源,目标线程和非目标线程以串行方式访问多个子共享资源,在目标线程无阻塞地使用多个子共享资源的任一者时,共享资源处于第一状态,在目标线程造成多个子共享资源的任一者阻塞时,共享资源处于第二状态,在非目标线程造成多个子共享资源的任一者阻塞时,共享资源处于第三状态。

在多个子共享资源以流水线方式被多线程访问时,通过检测各子共享资源的工作状态,并整合各子共享资源的工作状态,汇总为共享资源的全局工作状态,从整体上对目标线程对共享资源的占用率进行判断,可有效提高共享资源额度调整的准确度。

结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,根据目标线程的基本时钟周期数、等候时钟周期数和干扰时钟周期数,调整目标线程的共享资源的分配额度,具体包括:根据基本时钟周期数、等候时钟周期数和干扰时钟周期数,确定目标线程的独占运行时间和目标线程的实际运行时间,在独占运行时间与实际运行时间之间的比值小于服务质量qos指标时,则增加目标线程的共享资源的分配额度。

由于独占运行时间与实际运行时间根据基本时钟周期数、等候时钟周期数和干扰时钟周期数获得,直接反映目标线程对共享资源的使用情况,通过获取用户设定的qos指标,并将独占运行时间与实际运行时间之间的比值与qos指标比较,可获知目标线程对共享资源的使用情况是否满足用户预期,并在满足用户预期时维持共享资源对目标线程的分配,或增加共享资源对非目标线程的分配,可在保证目标线程的性能下提高共享资源的利用率,而在不满足用户预期时,通过增加目标线程的共享资源的分配额度,可保证目标线程的服务质量。

结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,在独占运行时间与实际运行时间之间的比值不小于服务质量qos指标时,维持目标线程的共享资源的分配额度。

结合第一方面的第二种可能的实现方式,在第一方面的第四种可能的实现方式中,在独占运行时间与实际运行时间之间的比值不小于服务质量qos指标时,增加非目标线程的共享资源的分配额度。

在一种可能的实现方式中,根据基本时钟周期数、等候时钟周期数和干扰时钟周期数,确定目标线程的独占运行时间和目标线程的实际运行时间,具体包括:对基本时钟周期数、等候时钟周期数以及干扰时钟周期数进行求和运算以获取实际运行时间,对基本时钟周期数以及等候时钟周期数进行求和运算以获取独占运行时间。

目标线程的独占运行时间表示目标线程在不受非目标线程的干扰而独占使用共享资源,因此独占运行时间举例而言可为基本时钟周期数与等候时钟周期数之和,而在实际应用中,在多线程混跑场景下,在没有对目标线程进行优先级设置而使得目标线程可独占共享资源时,目标线程不免会受到非目标线程的影响,因此目标线程的实际运行时间应为基本时钟周期数、等候时钟周期数以及干扰时钟周期数之和。

在一种可能的实现方式中,共享资源包括前端共享资源和后端共享资源,增加目标线程的共享资源的分配额度,具体包括:增加目标线程的前端共享资源的分配额度,在增加目标线程的前端共享资源的分配额度之后,在独占运行时间与实际运行时间之间的比值仍小于服务质量qos指标时,增加目标线程的后端共享资源的分配额度。

由于目标线程的指令和非目标线程的指令均是先使用前端共享资源再使用后端共享资源,因此通过优先增加目标线程的前端共享资源的分配额度,可较快地减少干扰时钟周期数,从而使得独占运行时间与实际运行时间之间的比值快速增大至大于或等于qos指标。

在一种可能的实现方式中,前端共享资源包括取指单元和一级指令缓存,后端共享资源包括访存队列、一级数据缓存、指令队列、指令重排序缓存和物理重命名寄存器。

第二方面,本申请实施例提供一种线程资源分配装置,包括:计数模块,用于在多线程同时访问共享资源时检测共享资源的工作状态,工作状态包括目标线程无阻塞使用共享资源的第一状态、目标线程造成共享资源阻塞的第二状态、以及非目标线程造成共享资源阻塞的第三状态,计数模块,用于在工作状态下计数,时钟周期数读取模块,用于读取计数值以获取基本时钟周期数、等候时钟周期数以及干扰时钟周期数,其中,基本时钟周期数是共享资源在第一状态下的计数值,等候时钟周期数是共享资源在第二状态下的计数值,干扰时钟周期数是共享资源在第三状态下的计数值;资源分配额度调整模块,用于根据基本时钟周期数、等候时钟周期数和干扰时钟周期数,调整目标线程的共享资源的分配额度。

第二方面或第二方面任意一种实现方式是第一方面或第一方面任意一种实现方式对应的装置实现,第一方面或第一方面任意一种实现方式中的描述适用于第二方面或第二方面任意一种实现方式,在此不再赘述。

第三方面,本申请实施例子提供一种线程资源分配装置,包括处理器和存储器,所存储器存储有程序指令,处理器运行程序指令以执行第一方面及第一方面各种可能实现方式的步骤。

本申请第四方面提供一种多线程的控制设备,包括用于执行以上第一方面的方法的至少一个处理元件(或芯片)。

本申请第五方面提供一种程序,该程序在被处理器执行时用于执行以上第一方面及第一方面各种可能实现方式的方法。

本申请第六方面提供一种程序产品,例如计算机可读存储介质,包括第五方面的程序。

本申请第七方面提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面的方法。

附图说明

图1是根据本申请实施例的共享资源分配系统的结构示意图;

图2是根据本申请实施例的共享资源分配方法的流程图;

图3是根据本申请实施例的共享资源分配系统的另一结构示意图;

图4是根据本申请实施例的一级指令缓存与一级指令缓存状态检测模块的连接示意图;

图5是根据本申请实施例的取指单元与取值单元状态检测模块的连接示意图;

图6是根据本申请实施例的物理重命名寄存器与物理重命名寄存器状态检测模块的连接示意图;

图7是根据本申请实施例的指令重排序缓存与指令重排序缓存状态检测模块的连接示意图;

图8是根据本申请实施例的指令队列与指令队列状态检测模块的连接示意图;

图9是根据本申请实施例的访存队列与访存队列状态检测模块的连接示意图;

图10是根据本申请实施例的一级数据缓存与一级数据缓存状态检测模块的连接示意图;

图11是根据本申请实施例的第一状态检测模块与基本时钟计数器的连接关系示意图;

图12是根据本申请实施例的第二状态检测模块与等候时钟计数器的连接关系示意图;

图13是根据本申请实施例的第三状态检测模块与干扰时钟计数器的连接关系图;

图14是根据本申请实施例的共享资源分配装置的硬件结构示意图。

具体实施方式

首先请参见图1,图1是根据本申请实施例的共享资源分配系统的结构示意图,如图1所示,共享资源分配系统100包括目标线程102、非目标线程103、共享资源300以及共享资源分配装置200。

在本申请实施例中,目标线程102是指需保证服务质量的线程,其对时延要求较小,需保证其占用的共享资源足够,非目标线程103是指无需保证服务质量的线程,对时延要求可相对目标线程大,可在保证目标线程102的服务质量的前提下牺牲非目标线程103所占用的共享资源。

具体地,目标线程102和非目标线程103分别包括至少一个指令,且每一指令均携带有指令内容和线程编号,线程编号用于标识指令所属的线程,在本申请实施例中,目标线程102的指令携带有目标线程编号,非目标线程103的指令携带有非目标线程编号,并且目标线程102和非目标线程103同时访问共享资源300,根据目标线程102和/或非目标线程103对共享资源300的使用情况,共享资源300可处于不同的工作状态。

其中,共享资源300的工作状态包括目标线程102无阻塞使用共享资源300的第一状态、目标线程102造成共享资源300阻塞的第二状态、以及非目标线程103造成共享资源300阻塞的第三状态。

具体而言,第一状态具体为在共享资源300充足时,目标线程102的指令可无需等候地直接使用共享资源300的状态;第二状态具体为共享资源300不足时,目标线程102的部分指令使用共享资源300,而目标线程102的其他指令等候共享资源300的状态,值得注意的是,在第二状态中,造成目标线程102的其他指令等候共享资源的原因在于该共享资源300已经被目标线程102的部分指令使用,从而引起阻塞;第三状态具体为共享资源300不足时,非目标线程103的指令使用共享资源300,而目标线程102的指令等候共享资源300的状态,在第三状态中,造成目标线程102的指令等候共享资源的原因在于该共享资源300已经被非目标线程103的指令使用,从而引起阻塞。

在本申请实施例中,共享资源分配装置200与共享资源300连接,用于检测共享资源300的工作状态,并根据检测到的工作状态调整目标线程102可使用的共享资源300的分配额度,使得目标线程102可使用的共享资源配额与目标线程102的工作状态相对应。

请进一步参见图1,共享资源包括多个子共享资源1、2、3、4,目标线程102和非目标线程103以串行方式访问多个子共享资源1、2、3、4,在目标线程102无阻塞地使用多个子共享资源1、2、3、4的任一者时,共享资源300处于第一状态,在目标线程102造成多个子共享资源1、2、3、4的任一者阻塞时,共享资源300处于第二状态,在非目标线程103造成多个子共享资源1、2、3、4的任一者阻塞时,共享资源300处于第三状态。

值得注意的是,在本申请实施例中,子共享资源的数量并不受限于图1所示数量,在可选实施例中,子共享资源的数量可根据实际需要设置。

共享资源分配装置200包括状态检测模块210、计数模块240、时钟周期读取模块220以及资源分配额度调整模块230。其中,计数模块240包括基本时钟计数器282、等候时钟计数器284以及干扰时钟计数器286,状态检测模块210包括第一子共享资源状态检测模块2101、第二子共享资源状态检测模块2102、第三子共享资源状态检测模块2103以及第四子共享资源状态检测模块2104,在本申请实施例中,每一子共享资源设置一子共享资源状态检测模块,子共享资源状态检测模块可检测对应的子共享资源的工作状态,其中,工作状态包括第一状态、第二状态以及第三状态。

状态检测模块210还包括第一状态检测模块281、第二状态检测模块283以及第三状态检测模块285,第一状态检测模块281分别从第一子共享资源状态检测模块2101、第二子共享资源状态检测模块2102、第三子共享资源状态检测模块2103以及第四子共享资源状态检测模块2104获知子共享资源1至4是否工作于第一状态,并且在共享资源1至4均工作于第一状态时,确认目标线程102无阻塞地使用多个子共享资源1、2、3、4的任一者,此时共享资源300整体而言处于第一状态,第一状态检测模块281通知基本时钟计数器282进行计数。

进一步,第二状态检测模块283分别从第一子共享资源状态检测模块2101、第二子共享资源状态检测模块2102、第三子共享资源状态检测模块2103以及第四子共享资源状态检测模块2104获知子共享资源1至4是否工作于第二状态,并且在共享资源1至4中的任一者工作于第二状态时,确认目标线程102造成多个子共享资源1、2、3、4的任一者阻塞,此时共享资源300整体而言处于第二状态,第二状态检测模块283通知等候时钟计数器284进行计数。

类似地,第三状态检测模块285分别从第一子共享资源状态检测模块2101、第二子共享资源状态检测模块2102、第三子共享资源状态检测模块2103以及第四子共享资源状态检测模块2104获知子共享资源1至4是否工作于第三状态,并且在共享资源1至4中的任一者工作于第三状态时,确认非目标线程103造成多个子共享资源1、2、3、4的任一者阻塞,此时共享资源300整体而言处于第三状态,第三状态检测模块285通知干扰时钟计数器286进行计数。

值得注意的是,由于子共享资源串行连接,因此在本申请实施例中,当每一子共享资源均无阻塞时,才能确认共享资源300工作于第一状态,而当任一子共享资源阻塞时,确认共享资源300工作于第二状态或第三状态,其中,可通过判断造成子共享资源阻塞的源头是目标线程102抑或是非目标线程103来确认共享资源300工作于何种状态,具体判断方式于下文详细介绍。

时钟周期读取模块220用于读取计数模块240的计数值以获取基本时钟周期数、等候时钟周期数以及干扰时钟周期数,其中,基本时钟周期数由基本时钟计数器282输出,是共享资源300在第一状态下的计数值,等候时钟周期数由等候时钟计数器284输出,是共享资源300在第二状态下的计数值,干扰时钟周期数由干扰时钟计数器286输出,是共享资源300在第三状态下的计数值。

资源分配额度调整模块230,用于根据基本时钟周期数、等候时钟周期数和干扰时钟周期数,调整目标线程的共享资源300的分配额度。

为了进一步清楚说明,以下结合图2进行参考,图2是根据本申请实施例的共享资源分配方法的流程图,如图2所示,共享资源分配方法包括以下步骤:

步骤401:共享资源分配装置200获取服务质量(qualityofservice,qos)指标。

具体地,共享资源分配装置200中的资源分配额度调整模块230预先存储qos指标,该qos指标可由用户输入,或按照默认值设定。

其中,qos指标为针对目标线程102的服务质量指标,其数值范围在0至100%之间,用于表示用户对目标线程102的优先级要求,举例而言,当qos指标为100%时,表示用户希望目标线程102独占共享资源300,当目标线程102对共享资源300使用完毕后,才可将共享资源300释放给非目标线程103;当qos指标为50%时,表示用户希望目标线程102和非目标线程103各占用共享资源300的一半;而当qos指标为0时,表示用户希望目标线程102不占用共享资源300。

步骤402:共享资源分配装置200在多线程同时访问共享资源300时检测共享资源300的工作状态并计数。

具体地,如图1及其对应内容所述,共享资源分配装置200的状态检测模块210在目标线程102和非目标线程103同时以串行方式访问共享资源300中的多个子共享资源1至4时检测共享资源300的工作状态,计数模块240对工作状态的持续时间进行累积计数,其中,基本时钟计数器282输出共享资源300在第一状态下的计数值,等候时钟计数器284输出共享资源300在第二状态下的计数值,干扰时钟计数器286输出共享资源300在第三状态下的计数值。

值得注意的是,本申请实施例中,目标线程102的数量可为一个或多个,非目标线程103的数量也可为一个或多个。

步骤403:共享资源分配装置200的时钟周期读取模块220从计数模块240读取计数值以获取基本时钟周期数、等候时钟周期数和干扰时钟周期数。

基本时钟周期数为基本时钟计数器282输出的计数值,等候时钟周期数为等候时钟计数器284输出的计数值,干扰时钟周期数为干扰时钟计数器286输出的计数值。

具体地,时钟周期读取模块220从基本时钟计数器282获取基本时钟周期数,从等候时钟计数器284获取等候时钟周期数,从干扰时钟计数器286获取干扰时钟周期数。

在本申请实施例中,由于共享资源300被目标线程102和非目标线程103同时使用,因此共享资源300在第一状态、第二状态以及第三状态之间动态切换工作状态,由于是动态切换,因此第一状态、第二状态或第三状态的持续时间并不是一个连续的时间段,而是多个离散的时间段,因此需要分别对第一状态、第二状态以及第三状态的累积时间进行计数,才能获取到在预定时间段内,第一状态、第二状态以及第三状态所占的时间比例。

于此所述的预定时间段举例而言可为一个统计周期,本申请实施例中,可在一个统计周期中获取基本时钟周期数、等候时钟周期数和干扰时钟周期数后,根据基本时钟周期数、等候时钟周期数和干扰时钟周期数,调整目标线程102的共享资源300的分配额度,在下一个统计周期中继续获取基本时钟周期数、等候时钟周期数和干扰时钟周期数,并进一步判断在上一个统计周期中调整目标线程102的共享资源300的分配额度之后,在本统计周期中的基本时钟周期数、等候时钟周期数和干扰时钟周期数是否满足qos指标。

取决于实际应用场景,统计周期举例而言可设置为在1ms至1s之间。

步骤404:共享资源分配装置200的资源分配额度调整模块230根据基本时钟周期数、等候时钟周期数和干扰时钟周期数,确定目标线程102的独占运行时间和目标线程102的实际运行时间。

目标线程102的独占运行时间表示目标线程102在不受非目标线程103的干扰而独占使用共享资源300,因此独占运行时间举例而言可为基本时钟周期数与等候时钟周期数之和。

而在实际应用中,在多线程混跑场景下,在没有对目标线程102进行优先级设置而使得目标线程102可独占共享资源300时,目标线程102不免会受到非目标线程103的影响,因此目标线程102的实际运行时间应为基本时钟周期数、等候时钟周期数以及干扰时钟周期数之和。

步骤405:共享资源分配装置200的资源分配额度调整模块230判断独占运行时间与实际运行时间之间的比值小于服务质量qos指标,如果是,执行步骤406,如果否,执行步骤407。

步骤406:共享资源分配装置200的资源分配额度调整模块230在独占运行时间与实际运行时间之间的比值小于服务质量qos指标时,则增加目标线程102的共享资源300的分配额度。

在独占运行时间与实际运行时间之间的比值小于服务质量qos指标时,说明目标线程102占用共享资源300的配额属于用户可以不可接受的水平,共享资源分配装置200需增加目标线程102的共享资源300的分配额度。

在一些示例中,共享资源300包括前端共享资源和后端共享资源,以图1所示为例,在图1中的子共享资源1和2可为前端共享资源,子共享资源3和4可为后端共享资源。而在本步骤中,增加目标线程102的共享资源300的分配额度具体可包括:增加目标线程102的前端共享资源的分配额度,在增加目标线程102的前端共享资源的分配额度之后,在独占运行时间与实际运行时间之间的比值仍小于服务质量qos指标时,增加目标线程102的后端共享资源的分配额度。

由于目标线程102的指令和非目标线程103的指令均是先使用前端共享资源再使用后端共享资源,因此通过优先增加目标线程102的前端共享资源的分配额度,可较快地减少干扰时钟周期数,从而使得独占运行时间与实际运行时间之间的比值快速增大至大于或等于qos指标。

而在增加目标线程102的前端共享资源的分配额度之后,若仍未能使得比值大于或等于qos指标,可进一步考虑增加目标线程102的后端共享资源的分配额度,从而减少干扰时钟周期数,使得独占运行时间与实际运行时间之间的比值增大至大于或等于qos指标。

举例而言,在精简指令集计算机(reducedinstructionsetcomputer,risc)的处理器架构中,前端共享资源包括取指单元和一级指令缓存,后端共享资源包括访存队列、一级数据缓存、指令队列、指令重排序缓存、以及物理重命名寄存器。

由于目标线程102的指令先访问前端共享资源,再访问后端共享资源,因此先增加目标线程102的前端共享资源的分配额度可马上降低干扰时钟周期数,从而使得在独占运行时间与实际运行时间之间的比值较为快速地增大至不小于qos指标的数值。

步骤407:共享资源分配装置200的资源分配额度调整模块230在独占运行时间与实际运行时间之间的比值不小于服务质量qos指标时,则维持目标线程102的共享资源300的分配额度,和/或增加非目标线程103的共享资源300的分配额度。

在本步骤中,在独占运行时间与实际运行时间之间的比值不小于服务质量qos指标时,说明目标线程102占用共享资源300的配额属于用户可以接受的水平,此时,作为一种可选方案,资源分配额度调整模块230无需对目标线程102的共享资源300的分配额度进行调整,而在另外一种可选方案中,资源分配额度调整模块230可以适当增加非目标线程103的共享资源300的分配额度,从而有效利用空余的共享资源300,或者,在另外一种可选方案中,资源分配额度调整模块230可以维持对目标线程102的共享资源300的分配额度,并同时适当增加非目标线程103的共享资源300的分配额度。

综上,本申请实施例在多线程同时访问共享资源300时对共享资源300的工作状态进行检测,并根据检测到的工作状态调整目标线程102的共享资源300的分配额度,从而保证了目标线程102的服务质量。

为了进一步清楚说明,以下请结合图3进行参考,图3是根据本申请实施例的共享资源分配系统的另一结构示意图,图3所示的共享资源分配系统包括目标线程102、非目标线程103、共享资源300、共享资源分配装置200以及功能模块,其中功能模块包括译码单元501、重命名/分配单元502以及功能单元503,共享资源300包括取指单元301、一级指令缓存302、访存队列306、一级数据缓存307、指令队列304、指令重排序缓存305以及物理重命名寄存器303。其中,取指单元301和一级指令缓存302为前端共享资源,访存队列306、一级数据缓存307、指令队列304、指令重排序缓存305和物理重命名寄存器303为后端共享资源。本申请实施例的共享资源分配装置200适用于risc处理器架构,具体而言,risc处理器架构包括图3所示的共享资源300和功能模块(包括译码单元501、重命名/分配单元502以及功能单元503),下文将资源分配装置200应用于risc处理器架构进行举例说明。

值得注意的是,在可选实施例中,本申请实施例的共享资源分配装置200也可适用于复杂指令集计算机(complexinstructionsetcomputer,cisc)的处理器架构或其他处理器架构。

并且,图3以risc处理器架构对图1所示的示例进行具体说明,在图3中,取指单元301、一级指令缓存302、访存队列306、一级数据缓存307、指令队列304、指令重排序缓存305以及物理重命名寄存器303为图1所示的子共享资源的具体实现。

而在图3所示的risc处理器架构中,目标线程102和非目标线程103的指令放置于一级指令缓存302,在一级指令缓存302检测到命中的指令时,发送命中的指令至取指单元301,取指单元301将取得的指令发送至译码单元501中进行译码,译码后的指令在重命名/分配单元502进行重排序并分配对应的物理重命名寄存器303,重命名/分配单元502将重排序和分配了对应物理重命名寄存器303的指令放置到指令重排序缓存305,并从指令重排序缓存305取出该指令并发送至指令队列304中,当功能单元503空闲时,功能单元503执行该指令。并且,重命名/分配单元502在判断到该指令为访存指令时,经指令队列304将该访存指令发送至访存队列306,该访存指令通过访存队列306对一级数据缓存307进行访问。

进一步,状态检测模块210分别用于检测取指单元301、一级指令缓存302、访存队列306、一级数据缓存307、指令队列304、指令重排序缓存305以及物理重命名寄存器303的工作状态,计数模块220分别对取指单元301、一级指令缓存302、访存队列306、一级数据缓存307、指令队列304、指令重排序缓存305以及物理重命名寄存器303的各工作状态的累积时间进行计数,获得目标线程102的基本时钟周期数、等候时钟周期数和干扰时钟周期数。

具体而言,如图4至图13所示,在本实施例中,状态检测模块210包括取指单元状态检测模块2108、一级指令缓存状态检测模块2109、物理重命名寄存器状态检测模块2110、指令重排序缓存状态检测模块2111、指令队列状态检测模块2105、访存队列状态检测模块2106、一级数据缓存状态检测模块2107,上述各功能模块为图1所示的子共享资源状态检测模块的具体实现。

首先请参见图4,图4是根据本申请实施例的一级指令缓存与一级指令缓存状态检测模块的连接示意图,如图4所示,一级指令缓存302存储有缓存地址和线程编号2,缓存地址所指向的缓存空间记录有缓存的指令。

一级指令缓存302用于从目标线程102或非目标线程103接收指令1000,并判断接收到的指令1000携带的请求地址与自身存储的缓存地址是否一致,如果是,则访存命中,说明一级指令缓存302没有发生访存冲突,一级指令缓存302将接收到的指令进行缓存处理,并产生高电平(下文以1表示高电平)的命中使能信号,如果否,则一级指令缓存302发生访存冲突,一级指令缓存302产生低电平(下文以0表示低电平)的命中使能信号。

在一些示例中,访存地址是一级指令缓存302根据指令1000的校验位计算所得,在另外一些示例中,也可根据指令1000携带的线程编号和指令内容计算所得,其具体计算方式与本申请实施例无关,于此不作展开介绍。

进一步地,在访存命中时,一级指令缓存302对指令1000进行缓存处理,此时一级指令缓存状态检测模块2109需判断出在一级指令缓存302进行缓存处理的指令1000是属于目标线程102还是非目标线程103,即是否是目标线程102使用一级指令缓存302。在本实施例中,第一判断单元224判断一级指令缓存302接收到的指令1000携带的线程编号与目标线程编号是否一致,如果是,说明该指令1000属于目标线程102,即目标线程102的指令可无阻塞地使用一级指令缓存302,此时第一判断单元224输出1,如果否,说明该指令属于非目标线程103,非目标线程103的指令可无阻塞地使用一级指令缓存302,第一判断单元224输出0。

因此,当访存命中,且一级指令缓存302接收到的指令1000携带的线程编号与目标线程编号一致时,说明一级指令缓存302没有阻塞,且目标线程102可无阻塞地使用一级指令缓存302,此时,第一状态输出接口223输出1,第三状态输出接口222输出0,第二状态输出接口221输出0。

而当访存冲突,说明一级指令缓存302阻塞,一级指令缓存302产生命中使能信号0并输入至与门229的输入端,使得与门229的输出端输出0,从而使得第一状态输出接口223输出0。一级指令缓存状态检测模块2109进一步判断造成一级指令缓存302阻塞的源头是目标线程102的指令还是非目标线程103的指令,具体地,第一判断单元224将一级指令缓存302接收到的指令1000携带的线程编号与目标线程编号作比较,如果二者一致,说明等候一级指令缓存302的线程为目标线程102,则输出1,如果二者不一致,说明等候一级指令缓存302的线程为非目标线程103,则输出0。

因此,在命中使能信号为0,且第一判断单元224输出1时,第三状态输出接口222输出0,第二状态输出接口221输出1;在命中使能信号为0,且第一判断单元224输出0时,第三状态输出接口222输出1,第二状态输出接口221输出0。

以下请参见图5,图5是根据本申请实施例的取指单元与取指单元状态检测模块的连接示意图,如图5所示,取指单元301用于从一级指令缓存302获取指令1000,取指单元状态检测模块2108用于将取指单元301获取到的指令1000所携带的线程编号与目标线程编号作比较。

具体而言,第二判断单元213比较取指单元301获取到的指令1000所携带的线程编号1与目标线程编号是否一致,如果是,则第二判断单元213输出1,第二状态输出接口211输出1,第三状态输出接口212输出0;如果否,则第一判断单元输出0,第二状态输出接口211输出0,第三状态输出接口212输出1。

以下请参见图6,图6是根据本申请实施例的物理重命名寄存器与物理重命名寄存器状态检测模块的连接示意图,如图6所示,当物理重命名寄存器303无阻塞,指令1000可无需等候地使用物理重命名寄存器303,此时物理重命名寄存器303输出的物理重命名寄存器阻塞置位信号为0,第一状态输出接口233输出1。

当物理重命名寄存器303被发生阻塞,此时物理重命名寄存器303输出的物理重命名寄存器阻塞置位信号为1,第一状态输出接口233输出0。

在本申请实施例中,第三判断单元234设置为被物理重命名寄存器阻塞置位信号使能,具体而言,物理重命名寄存器阻塞置位信号为1时,第三判断单元234工作,物理重命名寄存器阻塞置位信号为0时,第三判断单元234不工作。

因此,当物理重命名寄存器阻塞置位信号为1时,物理重命名寄存器状态检测模块2110需进一步判断造成物理重命名寄存器303阻塞的指令1000是目标线程102的指令还是非目标线程103的指令,此时,第三判断单元234判断指令1000所携带的线程编号与目标线程编号是否一致,如果是,则说明是目标线程102的指令造成物理重命名寄存器303阻塞,第三判断单元234输出1,如果否,则说明非目标线程103的指令造成物理重命名寄存器303阻塞,第三判断单元234输出0。

在第三判断单元234输出1时,第二状态输出接口231输出1,第三状态输出接口232输出0;在第三判断单元234输出0时,第三状态输出接口232输出0,第二状态输出接口231输出1。

值得注意的是,图7至图9分别介绍了与物理重命名寄存器状态检测模块2110具有类似结构和功能的物理重命名寄存器状态检测模块2110、指令重排序缓存状态检测模块2111、指令队列状态检测模块2105、以及访存队列状态检测模块2106,区别仅在于阻塞置位信号产生的原因不同,其中,图7所示的指令重排序缓存阻塞置位信号在指令重排序缓存305阻塞时时为1,反之为0。图8所示的指令队列阻塞置位信号在指令队列304阻塞时为1,反之为0。图10所示的访存队列阻塞置位信号在访存队列306阻塞时为1,反之为0。由于上述的模块与物理重命名寄存器状态检测模块2110类似,于此不作赘述。

进一步,图10介绍了一级数据缓存状态检测模块2107,一级数据缓存状态检测模块2107与图4所示的一级指令缓存状态检测模块2109类似,于此也不作赘述。

以下请参见图11,图11是根据本申请实施例的第一状态检测模块与基本时钟计数器的连接关系示意图,在图11中,图1的第一状态检测模块281具体实现为与门281,与门281的输入端分别与图4、图6至图10所示的第一状态输出接口223、233、243、253、263、和273连接,与门281的输出端的输出信号对基本时钟计数器282使能,在任一第一状态输出接口为0时,与门281的输出端的输出信号为0,基本时钟计数器282不计数,在所有第一状态输出接口输出均为1时,与门281的输出端的输出信号为1,基本时钟计数器282计数。

在本实施例中,与门281的输出电平表示第一状态,当门281的输出电平是1时,表示共享资源300处于第一状态,当门281的输出电平是0时,表示共享资源300没有处于第一状态。

并请参见图12,图12是根据本申请实施例的第二状态检测模块与等候时钟计数器的连接关系示意图,在图12中,图1所示的第二状态检测模块283具体实现为或门283,或门283的输入端分别与图4至图10所示的第二状态输出接口211、221、231、241、251、261、和271连接,或门283的输出端的输出信号对等候时钟计数器284使能,在任一等候时钟计数器接口输出为1时,等候时钟计数器284计数,在所有等候时钟计数器接口输出均为0时,等候时钟计数器284不计数。

在本实施例中,与门283的输出电平表示第二状态,当门283的输出电平是1时,表示共享资源300处于第二状态,当门283的输出电平是0时,表示共享资源300没有处于第二状态。

并请参见图13,图13是根据本申请实施例的第三状态检测模块与干扰时钟计数器的连接关系图,在图13中,图1所示的第三状态检测模块285具体实现为或门285,或门285的输入端分别与图4至图10所示的第三状态输出接口212、222、232、242、252、262、和272连接,或门285的输出端的输出信号对干扰时钟计数器286使能,在任一干扰时钟计数器接口输出为1时,干扰时钟计数器计数,在所有干扰时钟计数器接口输出均为0时,干扰时钟计数器286不计数。

在本实施例中,与门285的输出电平表示第三状态,当门285的输出电平是1时,表示共享资源300处于第三状态,当门285的输出电平是0时,表示共享资源300没有处于第三状态。

因此,基于图4至图11所示的架构,基本时钟计数器282可对共享资源300的第一状态的累积时间进行计数以获取基本时钟周期数,等候时钟计数器可对共享资源300的第二状态的累积时间进行计数以获取等候时钟周期数,干扰时钟计数器可对共享资源300的第三状态的累积时间进行计数以获取时钟周期数,图1所示的时钟周期读取模块220分别从基本时钟计数器282获取基本时钟周期数,从等候时钟计数器284获取等候时钟周期数,从干扰时钟计数器286获取等候时钟周期数。

资源分配额度调整模块230根据基本时钟周期数、等候时钟周期数以及等候时钟周期数调整目标线程的共享资源的分配额度,举例而言,资源分配额度调整模块230可通过以下方式来实现目标线程的共享资源的分配额度的调整:调整目标线程的指令在一级指令缓存302、一级数据缓存307以及指令重排缓存305的分配额度,或调整目标线程的指令在物理重命名寄存器303、取指单元301、指令队列304以及访存队列306中的分配数量。具体可参见图2所示的步骤404至步骤407。

综上,本申请实施例提供的一种共享资源分配方法及装置,可在多线程同时访问共享资源时对目标线程的工作状态进行检测,并根据检测到的工作状态调整目标线程的共享资源的分配额度,从而保证目标线程的服务质量。

在本申请的实施例中,共享资源分配装置可通过包括逻辑门的集成电路实现,而本申请可选实施例中,共享资源分配装置也可通过现场可编程门阵列(fieldprogrammablegatearray,fpga)实现,具体可通过写入至fpga芯片的程序指令来实现对应功能。以下请参见图14,图14是根据本申请实施例的共享资源分配装置的硬件结构示意图,如图14所示,共享资源分配装置200包括存储器501、总线503以及处理器502,处理器502和存储器501分别与总线503连接,存储器501存储有程序指令,处理器502运行程序指令以实现上述共享资源分配装置200的功能。

需说明的是,以上描述的任意装置实施例都仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部进程来实现本实施例方案的目的。另外,本申请提供的装置实施例附图中,进程之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用cpu、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本申请而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。

所属领域的技术人员可以清楚地了解到,上述描述的系统、装置或单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求书的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1