存储器管理算法的动态选择的制作方法

文档序号:11142242阅读:563来源:国知局
存储器管理算法的动态选择的制造方法与工艺

本公开涉及数据处理系统领域。更具体地,本公开涉及对数据处理设备内的存储器的冲突存储器访问的管理。



背景技术:

已知提供了一种数据处理设备,该数据处理设备包括被实行存储器访问的存储器。数据处理设备可包括多个存储器访问请求源。作为示例,数据处理系统可包括多个处理器,每个处理器执行程序指令并且共享公共的存储器地址空间。已知的关于这种布置的问题在于:存储器访问可能冲突以及可能引起一致性问题和其他危害,例如写之后再写的危害,读之后再写的危害,等等。处理这些问题的一种已知技术是采用存储器锁定。利用这种方法,一处理器希望访问与另一处理器共享的存储器项目时将首先请求占有锁并且仅当获得了此锁时才允许进行存储器访问。当存储器访问已完成时,该锁然后被释放。如果另一处理器已经着手进行对该存储器项目的访问,则锁将不能得到,并且因此潜在冲突将被防止,请求过程稍后将重新尝试以获得锁。虽然这样的存储器锁定方法是安全的,但其具有降低性能的问题,因为在存储器访问可被执行前需要采取大量额外的步骤。

对于此问题的另一种方法是利用推测性存储器访问,其中存储器访问被发起,然后硬件监控器确定在第一存储器访问完成并且确认其结果之前是否有另一冲突的或者潜在冲突的存储器访问发出。如果这样的另一冲突存储器访问出现,则第一存储器访问被取消并且在稍后时间重试。虽然这样的方法在一些情况中(例如当冲突不太可能时)可以改善性能,但是这种方法可能降低性能,或者甚至在一些病态情况中可能由于出现冲突的水平而阻碍任何前进进程。



技术实现要素:

从一方面可见,本技术提供了一种存储器控制器,该存储器控制器被配置为利用选定管理算法来管理对数据处理设备内的存储器的冲突存储器访问,选定管理算法是依据数据处理设备的一个或多个当前状态参数从多个候选管理算法中动态地选出的。

本技术认识到当用于管理冲突存储器访问的管理算法依据数据处理设备的一个或多个检测到的当前状态参数被动态地选定时,能够获得改进的性能。一种管理算法在一些状态中可能比在其他状态中更有效。本技术允许系统适应当前盛行条件并且采用与那些盛行条件匹配的用于冲突存储器访问的管理算法。

将会认识到用作选择存储器管理算法的部分的一个或多个当前状态参数可采取各种不同形式。作为示例,系统可展示出随时间以规律方式变化的行为,并且这可被用于选择针对给定时间的最适当的管理算法。在其他实施例中,用于控制存储器管理算法的选择的有用状态参数是指示检测到的冲突存储器访问的量的一个或多个冲突水平参数。按照这种方式,当前出现的冲突水平可被用于动态地选择用于管理该冲突的适当存储器管理算法。利用不同管理算法将会更好地管理不同量的冲突存储器访问。

出现的冲突的水平可以各种不同方式来量度。在一些实施例中,一个或多个冲突水平参数包括指示针对存储器的全部被访问区域检测到的冲突存储器访问的量的全局冲突水平参数就足够了。因此,在一些实施例中,来自系统的冲突的整体或总体水平作为整体可被用于控制用于管理冲突的管理算法。

在其他实施例中,更精细粒度的控制可能更适当,并且一个或多个冲突水平参数可包括指示针对存储器的各个不同区域检测到的冲突存储器访问的量的多个每区域冲突水平参数、指示针对各个不同处理过程检测到的冲突存储器访问的量的多个每过程冲突水平参数、和/或指示针对各个不同的处理线程检测到的冲突存储器访问的量的多个每线程冲突水平参数中的一者或多者。对冲突量的这样的更精细水平的量度允许更精细水平地控制例如以每区域、每过程或每线程的方式(在适当的情况下)来选择管理算法。

为了收集有关出现的冲突的水平的信息,一些实施例可以包括一个或多个冲突计数器,这些冲突计数器被配置为存储各自的指示检测到的冲突存储器访问的数量的冲突计数值。这些冲突计数器可以按照全局、每区域、每过程和/或每线程地方式被提供。

在以每区域的方式提供冲突计数器的情形中,提供这些冲突计数器的一种有效方式是作为探听控制器的部分,其中探听控制器用于在所述存储器内的存储器区域的一粒度级下管理数据的不同复本之间的一致性。探听控制器存储的标签数据可以补充以指示针对那些区域检测到的冲突的计数值。探听控制器存储的标签数据的管理可被用于以类似方式管理计数值,即在当相关联区域被添加到探听控制器跟踪的区域或从探听控制器跟踪的区域移除的同时,计数值被增加、维持和驱逐。

冲突计数器可以采取各种不同形式。一种示例形式是饱和计数器。饱和计数器将在给定计数值范围中向上或向下计数,并且当达到此范围的边界时,计数值将被维持。这种饱和计数器提供了他们消耗的资源的量与他们提供的用于选择冲突管理算法的有用信息之间的良好平衡。

在具有这种冲突计数器的系统内,冲突-增加-注释算法可被用于当检测到冲突时改变冲突计数值。这种冲突-增加-注释算法例如可以采取如下形式:每当检测到冲突时使得计数值增大1,直到计数器达到最大值为止,超过该最大值,记录进一步冲突将没有任何影响,因为与最高程度冲突相匹配的管理算法选择已被指示出用于选择。

冲突-减少-注释算法应被提供为使得冲突计数值适当地跟踪随时间出现的冲突的程度也是适当的。当检测到由计数值中的相应一个计数值跟踪到无冲突的预定数量的访问和/或自从上次对计数值施加了产生增大的改变起已经经过了预定时间间隔中的一者或两者时,这样的冲突-减少-注释算法可对该计数值进行改变。因此,如果没有检测到冲突,则冲突计数值将随时间稳定地减少/减轻。

冲突-增加-注释算法和冲突-减少-注释算法对于整个系统可以是相同的,或者替代地(如果需要)可以每区域、每过程或每线程而不同以便改善计数值反映所跟踪的冲突的程度的准确性。

用于管理冲突存储器访问的不同候选管理算法可以采取各种不同形式。在一些实施例中,这些算法包括发起推测性存储器访问,而不论一个或多个冲突水平参数的值如何。另一种可能的候选管理算法是这样一种方法,其中如果一个或多个冲突水平参数的值在预定范围内,则发起推测性存储器访问,而如果一个或多个冲突水平参数的值在此范围外,则利用存储器锁定发起存储器访问。

另一种可能的存储器管理算法是这样一种方法,其中如果针对给定过程的第一推测性访问遇到了干扰访问,则系统等待针对该给定处理过程指定的一段时间量并且重试推测性访问。也可应用的依据检测到的当前参数进行选择的另一种不同候选算法是这样一种方法,其中如果针对给定处理过程的第一推测性访问遇到干扰访问,则系统等待依据检测到的一个或多个冲突水平参数的一段时间量,然后重试推测性访问。可被动态选择的又一种可能候选存储器管理算法是这样一种方法,其中如果针对给定处理过程的第一推测性访问遇到干扰访问,则系统利用存储器锁定来重试访问。

本技术可以被用在存储器访问是事务性存储器访问的存储器系统中。

从另一方面看,本技术提供了一种存储器控制器装置,该存储器控制器装置用于利用选定管理算法来管理对数据处理设备内的存储器的冲突存储器访问,选定管理算法是依据数据处理设备的一个或多个当前状态参数从多个候选管理算法动态地选出的。

从又一方面看,本技术提供一种管理对数据处理设备中的存储器的冲突存储器访问的方法,该方法包括以下步骤:依据数据处理设备的一个或多个当前状态参数动态地从多个候选管理算法中选择选定管理算法;以及利用选定管理算法来管理存储器访问。

附图说明

现在将参考附图并仅借助于示例来描述本发明的实施例,在附图中:

图1示意性地图示用于执行一致性存储器访问的数据处理设备,其中在存储器访问间可能出现冲突。

图2、3、4和5示意性地图示用于收集和存储指示出现的冲突的量的状态参数的不同布置;

图6示意性地图示从用于管理存储器冲突的多个候选管理算法间进行动态选择的第一示例。

图7示意性地图示从用于管理存储器冲突的多个候选管理算法间进行动态选择的第二示例。

图8是示意性地图示所涉及的算法选择的流程图;

图9是示意性地图示基于计时器的算法选择的流程图;

图10是示意性地图示冲突-增加-注释算法的流程图;

图11是示意性地图示冲突-减少-注释算法的流程图;

图12是示意性地图示用于管理存储器访问之间的冲突的管理算法的动态选择的又一示例。

具体实施方式

图1示意性地图示数据处理设备2,该数据处理设备包括多个处理器核心4、6、8、10,每个处理器核心具有相关联的L1缓存10、12、14、16并且共享L2缓存18以及存储器系统内的更高层。本领域技术人员将会认识到,存储器地址空间的数据块可以作为本地复本存储在L1缓存存储器10、12、14、16中的一个或多个缓存存储器中,以便给出对该数据行的低延时且低开销的访问。因为数据可能被保持在多个位置,所以管理数据的一致性是非常重要的。存储器控制器20(其包括探听控制器22)具有管理此一致性的功能,诸如通过利用根据一致性协议(例如MESI协议)的探听请求。

可应用的另一种存储器管理的技术是将存储器或至少存储器的区域作为事务性存储器,存储器访问在事务性存储器中被原子地执行。有若干不同的方式可以增加这种事务性存储器支持以应对可能出现冲突存储器访问的困难。当第一存储器访问正在进行但尚未完成,而与第一存储器访问交叠的第二存储器访问被发出或者试图发出时,可能出现冲突存储器访问。应对这种问题的一种方式是采用利用存储器锁定的管理算法。在存储器访问可发起之前,过程/线程必须请求并被准许对于存储器锁令牌的占有。与该存储器锁令牌相关联的存储器访问然后可被执行,并且当该存储器访问已经完成时,存储器锁令牌可被释放。针对每个存储器区域有一个存储器锁令牌,因此如果另一处理/线程已经占有令牌,则当潜在冲突存储器访问希望获得对该令牌的占有时,则不能获得该令牌,因此潜在冲突存储器访问将等待,直到令牌可用为止。这样的利用存储器锁令牌的技术有时被称作存储器锁定技术。

应对潜在冲突存储器访问的另一种技术是推测性地发出每个存储器访问,并且然后监控是否随后出现潜在冲突存储器访问。推测性地发出的存储器访问不能提交其(一个或多个)结果,直到确保在执行第一存储器访问所花的时间期间未出现或者将不会出现潜在冲突存储器访问。如果潜在冲突访问确实出现,则推测性地发出的第一存储器访问被取消并且稍后重试。

所提及的这种推测性存储器访问发出的变体将涉及:随后重试失败的推测性访问一次或多次,如果第一推测性访问失败则利用存储器锁定机制来执行存储器访问,在可随机改变的随后时间处重试存储器访问,或者是其他变型。

图1中示出的存储器控制器20用于支持上述用于管理冲突存储器访问的候选管理算法。存储器控制器20依据所检测到的数据处理设备2的一个或多个当前状态参数来动态地在这多个候选管理算法之间进行选择。这些当前状态参数可以采取各种不同形式,并且在已经注意到时间和要被执行的具有候选管理算法的适当性之间存在关联性的系统中可以如时间一样简单。

可以用于控制执行的管理算法的动态选择的当前状态参数的一种具体形式是一个或多个冲突水平参数,这些参数指示按照全局、每过程(process)、每线程(thread)、每区域或它们的各种组合的方式检测到的冲突存储器访问的量。

全局冲突水平参数指示针对存储器的所有访问区域检测到的冲突存储器访问的量。每区域冲突水平参数指示针对存储器的相应区域检测到的冲突存储器访问的量。每过程冲突水平参数指示针对相应处理过程检测到的冲突存储器访问的量。每线程冲突水平参数指示针对相应处理线程检测到的冲突存储器访问的量。

上述冲突水平参数可以利用一个或多个冲突计数器(可以是饱和计数器)来跟踪。这些饱和计数器将响应于检测到存储器访问冲突或没有检测到存储器访问冲突而被递增和递减(或者以其他形式改变)(和/或不论是否检测到的冲突而随时间逐渐的递减)。对于在计数器中保持的这些计数值的管理因此由冲突-增加-注释算法和冲突-减少-注释算法二者来控制。这些算法可以跨所有计数器是一致的,或者可以永久地或动态地跨不同计数器不同地配置。

图2示意性地图示存储器控制器20,该存储器控制器20包括全局冲突计数器24和每过程冲突计数器26。计数控制电路28接收指示何时检测到存储器访问冲突的信号和其他状态参数(诸如时间),并通过利用冲突-增加-注释算法和冲突-减少-注释算法来利用这些参数递增或递减计数值。

图3示意性地图示存储器控制器20,该存储器控制器20包括多个每线程冲突计数器30。这些冲突计数器中的每个冲突计数器跟踪针对如操作系统排定的特定线程出现的存储器访问冲突。

图4示意性地图示存储器控制器20,该存储器控制器20包括探听控制器22,探听控制器22管理不同存储器区域之间的一致性。探听控制器22中的每行存储标识存储器区域的数据(例如,TAG(标签)值)并且与此相关联地提供每区域冲突计数器32,该每区域冲突计数器32存储指示针对存储器内的该特定区域出现的存储器访问冲突的数量的冲突计数值。这些冲突计数器可以以与标识不同存储器区域的TAG值相同的方式来管理,并且可以根据探听控制器22为了一致性而正跟踪哪些存储器区域的管理,二者都被增加到探听控制器22内的条目以及从探听控制器22中的条目丢弃。

图5示意性地图示存储器控制器20的又一示例实施例,该存储器控制器20包括探听控制器22,该探听控制器具有4路存储器34,该存储器34存储标识为了一致性管理而跟踪的区域。每路内的每个条目存储每区域和每路冲突计数器36。

图2、3、4、5图示可以如何跟踪数据处理设备的当前状态参数以及如何把当前状态参数保持在数据处理设备内的各种不同示例。这些当前状态参数然后被存储器控制器用来从用于管理冲突存储器访问的多个候选管理算法中进行选择以便所使用的管理算法较好地匹配处理设备的当前状态。

图6示意性地图示基于一个或多个状态参数对用于管理冲突存储器访问的存储器管理算法的动态选择。在步骤38,存储器管理算法被选择。初始选择的存储器管理算法可以是如下中一者:尝试一次;尝试两次;或者锁定。这些算法对应于:尝试推测性存储器访问一次并然后默认进行存储器锁定访问;尝试推测性存储器访问两次并然后默认进行存储器锁定访问;或者从一开始就尝试存储器锁定访问。

如果选择了尝试一次管理算法,则过程进行到步骤40,此处执行第一推测性访问。如果此推测性访问由于冲突存储器访问而失败,则在步骤42处检测到此失败。如果第一推测性访问成功,则过程结束。如果第一推测性访问失败,则步骤44判断可用于第一推测性访问的冲突计数器(不论针对全局、每过程、每线程、每区域或这些的组合)是否超过阈值。如果此冲突计数器小于阈值(表明冲突水平一般比较低),则在步骤46可执行第二推测性访问。如果在步骤44与阈值比较的冲突计数器值高于阈值,则过程进行到步骤48处以利用存储器锁定算法。存储器锁定算法在步骤48处取得存储器锁,在步骤50执行存储器访问,然后在步骤52释放存储器锁。事务性存储器、数据库其他一致性存储器系统中的锁定在本领域是已知的,并且在此将不详细论述。

如果在步骤38处的选择选择了尝试两次算法,则步骤54执行第一推测性存储器访问。如果此第一推测性存储器访问失败,则在步骤46处执行第二推测性访问。如果第二推测性存储器访问失败,则过程进行到步骤48,此处遵循存储器锁定算法。

图7图示出依据诸如冲突计数器值之类的当前状态参数来从用于管理冲突存储器访问的多个候选管理算法中进行动态选择的第二示例。在步骤56,执行第一推测性存储器访问。如果该访问成功,则过程在步骤58终结。如果在步骤60检测到第一推测性访问不成功,则过程进行到步骤62,此处将可应用的(一个或多个)冲突计数器值与阈值比较。如果(一个或多个)冲突计数器值指示冲突量高于对应于阈值的量,则处理进行到步骤64,此处通过在步骤64处首先取得锁值、在步骤66执行访问以及在步骤68释放锁值来提供存储器锁定算法。将会认识到,如果锁当前是由另一处理/线程保持时,在步骤64中取得锁的过程中可能会有延迟。

如果在步骤62处确定冲突计数器值小于阈值,则处理进行到步骤70,此处系统等待一段时间,此时间依赖于正在执行存储器访问的处理/线程和当前冲突计数器值。将会认识到,如果需要,等待时长可根据各种其他状态参数而变化。当超过等待时长时,步骤72执行第二推测性访问。如果此第二推测性访问失败,则系统切换为使用系统锁定算法以及步骤64处的处理过程。

所管理的存储器访问可以具有很多种不同形式并且包括影响存储器中的数据结构的各种方式。一个示例实施例将涉及单个存储器地址并涉及一次或多次读和/或写的数据结构。在一些示例实施例中,数据可跨“存储器的区域”,涉及对这些多个区域中的位置的读和/或写。所有这些示例可被认为是推测性构建或在锁定控制下构建的访问。因此,可能在推测性访问中具有冲突,推测性访问是复合访问的分量访问中任何分量访问的部分。

这种涉及多个分量的访问的示例是向内存(In-memory)FIFO中增加条目。这可以藉由如下步骤利用锁来执行。

取得锁

读取fifo写指针

如果fifo已满,则失败

将数据写入fifo写指针指向的位置

使得fifo写指针前进

写入新的fifo写指针值

释放锁

替代地,访问可以通过如下步骤而推测性地被执行:

开始事务

读取fifo写指针

如果fifo已满,则失败

将数据写入fifo写指针指向的位置

使得fifo写指针前进

写入新的fifo写指针值

提交或失败的事务

图8是示意性地图示在存储器访问发出时执行算法选择的另一示例实施例。在步骤74,过程进行等待,直到准备要发出存储器访问。步骤76随后读取设备的当前状态参数。步骤78选择要被应用于存储器访问的、作为当前状态参数的函数的管理算法。步骤80然后发出存储器访问,该存储器访问由在步骤78中选择的选定存储器管理算法掌控。

图9图示执行基于计时器的算法选择的另一示例实施例。步骤82等待,直到系统注释的时间值指示自从上一算法选择操作被执行起已经经过了大于阈值的时间。在步骤82之后,步骤84用于读取设备的状态参数。步骤86然后选择作为在步骤84处读取的状态参数的函数的、要被用于未来存储器访问的存储器管理算法。因此,上述处理周期性地基于当前状态参数而重新评估哪个存储器管理算法应被使用。

图10示意性地图示冲突-增加-注释算法。在步骤88,处理等待,直到冲突被检测到为止。当冲突被检测到时,步骤90使得可应用于检测到的冲突的一个或多个计数器递增。如果维护了不止一个计数值,则可在不止一个地方发生递增,如检测到的冲突可被用于递增例如全局计数值、过程计数值、区域计数值和线程计数值(如果这些都可应用于引起冲突的存储器访问)。全局计数值将针对出现的所有冲突而递增,而每过程、每区域和每线程计数器将仅在与计数器相关的过程/区域/线程匹配的冲突出现时才递增。

图11示意性地图示冲突-减少-注释算法。在步骤92,判断是否大于阈值数的无冲突连续访问已经执行。如果此条件被满足,则处理进行到步骤94,此处执行(一个或多个)相关冲突计数器的递减。如上,这些计数器可包括全局计数器、每过程计数器、每区域计数器和/或每线程计数器。

如果在步骤92处确定还没有执行了大于阈值数量的无冲突连续访问,则处理进行到步骤96,此处判断自从上次递减被应用起是否已经逝去了一定阈值时间。如果多于阈值的时间已经过去,则处理进行到步骤94,此处再次执行递减。因此,步骤96用于即使没有执行存储器访问也随着时间流逝而向冲突计数值施加递减。

将会认识到,即使全部算法流相同,也可以对不同计数器应用不同冲突-增加-注释算法和不同冲突-减少-注释算法和/或对不同计数器应用这些不同算法的不同参数。按照这种方式,对于各个计数器值,不同计数器值的更新可以被剪裁。

图12是示意性地图示动态管理算法选择的另一示例。在步骤98,处理等待,直到确定需要对管理算法进行选择。这种需求可以若干不同方式出现,诸如,例如定时器、自从做出上次选择起已经发出了若干访问、当每个存储器访问发出时、作为外部激励的结果,等等。当需要选择操作时,处理于是进行到步骤100,此处判断可应用于要发出的存储器访问的过程/区域/线程的当前冲突水平参数是否大于阈值。如果冲突水平参数大于阈值,则处理进行到步骤102,此处存储器锁定算法被采用并且存储器访问被发出。如果冲突水平小于阈值水平,则处理进行到步骤104,此处推测性存储器访问发出被选择作为要采用的管理算法。

虽然在此已经参照附图详细描述了示意性实施例,但应理解权利要求并不限于那些具体实施例,并且本领域技术人员在不脱离所附权利要求的范围和精神的情况下可实行各种改变、增加和修改。例如,可以做出对从属权利要求的特征和独立权利要求的特征的各种组合。

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