用于实现存储更新概率值的共享概率计数器的系统和方法_6

文档序号:9438887阅读:来源:国知局
数器在这些场景下可以是优选的。作为替代,给定(最终)计数器的所存储值只能不频繁 地改变(例如,在更新概率已经充分减小之后),记录从所存储值计算的预计值的优化可以 是合算的。
[0118] 在一些实施例中,本文所描述的可扩展统计计数器可以在包括事务存储器支持的 系统中使用的时候尤其有价值,不管事务存储器支持是在硬件中、在软件中还是利用硬件 和软件的组合实现的。例如,统计计数器可以在此类系统中用于各种目的,诸如在散列表中 记录条目的数量,或者维护关于某块代码多经常执行的统计数据。常见的经历是计数器在 原子事务中的使用使得所有事务对都冲突,因为它们全都更新计数器。如在本文所描述的, 在一些实施例中,可以通过减少对其的争用来使得计数器更可扩展,或者通过分割它们,使 得多个更新可以并行发生(就像在以上所述的多线方法中)或者通过减小更新的频率(就 像在本文所述的概率计数器中)。在一些实施例中,与采用通常扩展很差和/或产生高度不 准确计数的单纯不可扩展计数器的事务相比,这些技术可以具有显著减小利用这些计数器 的原子事务将彼此冲突的经常性的副作用。
[0119] 在各种实施例中,各种计数器技术(其中一些计数器技提供精确计数,并且其它 的计数器技旨在合理的相对误差,使得它们仍然对检测递增许多次的计数值有用)可以关 于扩展性和/或准确性产生比单纯并发计数器更好的结果。关于吞吐量和准确性,本文所 述的几个计数器都可以大大超过通常使用的统计计数器,尤其是在NUM系统中,同时保持 空间开销低。
[0120] 本文所述的许多计数器技术都很容易被看到是无锁的。此外,当采用本文所述的 概率计数器技术时,重试递增计数器的尝试的需求会随时间推移变得不太有可能,因为用 于计数器的更新概率随时间推移变得更小(尤其是当存在对采用上述BFP-DUP技术的计数 器的争用时)。在一些实施例中,本文所述的计数器可以被修改,使得它们无需等待,在一些 情况下这会添加开销和/或复杂性。把计数器修改为无需等待还会引入附加的限制(诸如 事先知道最大线程数的需求),或者会导致为了避免这种限制而对更多开销和复杂性的需 求。但是,在实践当中,假定一些类型的退避方案可以在存在对计数器的争用时应用,无锁 在一些实施例中会是足够强的属性,以确保对多线程应用的并发线程的进度。
[0121] 图14示出了根据各种实施例被配置为实现本文所述方法的计算系统。计算机系 统1400可以是任何各种类型的设备,包括,但不限于,个人计算机系统、台式计算机、膝上 型或笔记本计算机、大型计算机系统、手持式计算机、工作站、网络计算机、消费者设备、应 用服务器、存储设备、诸如交换机、调制解调器、路由器等等的外围设备,或者一般而言任何 类型的计算设备。在一些实施例中,计算机系统1400可以是采用NUM型存储器体系架构 和/或NUCA属性的系统中的多个节点之一,或者一般而言包括至少一个耦合到某种类型存 储器(例如,高速缓存、本地存储器、远程存储器,等等)的处理器核心的任何类型的计算节 点。
[0122] 用于实现本文所述的任何或全部可扩展统计计数器的机制可以作为计算机程序 产品或软件提供,该产品或软件可以包括其上存储指令的非暂态计算机可读存储介质,指 令可被用来编程计算机系统(或其它电子设备),以执行根据各种实施例的过程。计算机可 读存储介质可以包括用于以机器(例如,计算机)可读的形式(例如,软件、处理应用)存储 信息的任何机制。机器可读存储介质可以包括,但不限于,磁性存储介质(例如,软盘);光 学存储介质(例如,CD-ROM);磁-光存储介质;只读存储器(ROM);随机存取存储器(RAM); 可擦可编程存储器(例如,EPROM和EEPR0M);闪存存储器;适于存储程序指令的电或其它 类型介质。此外,程序指令可以利用光学、声学或其它形式的传播信号(例如,载波、红外线 信号、数字信号,等等)传送。
[0123] 在各种实施例中,计算机系统1400可以包括一个或多个处理器1470 ;每个处理器 可以包括多个核心,任何核心都可以是单线程或多线程的。例如,如图2中所说明的,多个 处理器核心可以包括在单个处理器芯片(例如,单个处理器1470)中,并且多个处理器芯片 可以包括在CPU板上,两个或更多个CPU可以包括在计算机系统1400中。在各种实施例中, 每个处理器1470可以包括高速缓存的层次结构。例如,如在图2中所说明的,每个处理器 芯片1470可以包括多个Ll高速缓存(例如,每个处理器核心一个)以及单个L2高速缓存 (这可以由处理器芯片上的处理器核心共享)。计算机系统1400还可以包括一个或多个持 久性存储设备1450 (例如,光学储存器、磁性储存器、硬驱、带式驱动器、固态存储器,等等) 以及一个或多个系统存储器1410(例如,高速缓存、SRAM、DRAM、RDRAM、EDO RAM、DDR 10 RAM、SDRAM、Rambus RAM、EEPROM,等等)。各种实施例可以包括更少或者未在图14中说明 的附加部件(例如,视频卡、音频卡、附加的网络接口、外围设备、网络接口,例如ATM接口、 以太网接口、帧中继接口,等等)。
[0124] -个或多个处理器1470、(一个或多个)存储设备1450,以及系统存储器1410可 以耦合到系统互连1440。一个或多个系统存储器1410可以包含程序指令1420。程序指令 1420可以是可执行的,以实现一个或多个应用1422(这可以包括对共享统计计数器的一个 或多个访问,如本文所述)、共享库1424或操作系统1426。在一些实施例中,程序指令1420 可以是可执行的,以实现争用管理器(未示出)。程序指令1420可以以平台本地的二进制、 诸如Java?字节码的任何解释语言或者以诸如C/C++、Java?的任何其它语言等等或者以 它们的任意组合来编码。程序指令1420可以包括功能、操作和/或其它过程,用于实现可 扩展的统计计数器和相关联的功能(例如,以可扩展统计计数器为目标的增量操作和/或 读操作),如本文所述。在各种实施例中,这样的支持和功能可以存在于共享库1424、操作 系统1426或应用程序1422当中的一个或多个中。系统存储器1410还可以包括其中数据 可以被存储的私人存储位置1430和/或共享存储位置1435。例如,在各种实施例中,共享 存储位置1435可以存储并发执行的线程、进程或原子事务可访问的数据,这可以包括存储 在实现共享统计计数器的一个或多个结构中的数据(例如,本文所述的精确计数器或概率 计数器之一)。
[0125] 虽然以上已经相当详细地描述了实施例,但是,一旦以上公开内容被完全理解,各 种变化和修改就将对本领域技术人员变得显然。预期以下权利要求要被解释为包含所有此 类变化和修改。
【主权项】
1. 一种方法,包括: 由一个或多个计算节点执行以下操作,其中每个节点包括至少一个处理器核心以及存 储器: 开始包括一个或多个递增共享计数器的操作的多线程应用的执行,其中共享计数器实 现为能够由在一个或多个计算节点上执行的多线程应用的多个线程访问的数据结构,其中 数据结构存储更新概率值的表示,其中更新概率值指示更新概率值的表示将响应于以共享 计数器为目标的递增操作的启动而更新的概率,并且其中共享计数器的预计值能够至少部 分地基于更新概率值的表示来计算; 由应用的给定线程启动以该共享计数器为目标的递增操作; 响应于所述启动,确定是否执行递增操作,其中所述确定至少部分地依赖于存储在数 据结构中的更新概率的表示;及 响应于确定递增操作要被执行,更新存储在数据结构中的更新概率值的表示,其中更 新的表示代表存储在数据结构中的更新概率值的更新表示将响应于后续递增操作的启动 而进一步被更新的概率; 其中所述确定是否执行递增操作的步骤或者所述更新更新概率值的表示的步骤中的 一个或多个依赖于可配置准确性参数的预定值。2. 如权利要求1所述的方法,还包括: 由所述多个线程之一执行以共享计数器为目标的读操作,其中执行读操作包括: 读取存储在数据结构中的更新概率值的表示; 从存储在数据结构中的更新概率值的表示计算共享计数器的预计值;及 返回共享计数器的预计值。3. 如权利要求1所述的方法,其中数据结构存储更新概率值的浮点表示。4. 如权利要求3所述的方法,其中所述更新包括用依赖于可配置准确性参数的预定值 的常量乘以更新概率值的浮点表示。5. 如权利要求1所述的方法,其中数据结构存储概率计数器值的二进制浮点表示,包 括尾数部分和指数部分。6. 如权利要求5所述的方法,其中所述更新包括依赖于可配置准确性参数的预定值更 新尾数部分或指数部分中的一个或多个。7. 如权利要求1所述的方法,其中所述更新导致减小存储在数据结构中的更新概率值 的更新表示将响应于后续递增操作的启动而进一步被更新的概率。8. 如权利要求1所述的方法,还包括: 响应于所述启动,生成随机数; 其中所述确定还依赖于所生成的随机数。9. 如权利要求1所述的方法,其中所述多线程应用的所述多个线程代表并发执行的事 务,并且其中所述启动包括在并发执行的事务之一内启动递增操作。10. 如权利要求1所述的方法, 其中数据结构还存储精确的计数值;及 其中所述更新存储在数据结构中的更新概率值的表示是响应于递增所存储的精确计 数值的一次或多次失败的尝试或者响应于争用管理策略的条件被满足而执行的。11. 如权利要求10所述的方法,还包括: 由所述多个线程之一启动以共享计数器为目标的读操作;及 响应于所述多个线程之一启动读操作: 读取存储在数据结构中的更新概率值的表示; 从存储在数据结构中的更新概率值的表示计算共享计数器的预计值; 把该预计值加到所存储的精确计数值;及 返回所述相加的结果。12. -种系统,包括: 支持多线程的一个或多个处理器; 存储程序指令的存储器,当程序指令在一个或多个处理器上执行时,使这一个或多个 处理器执行: 开始包括一个或多个递增共享计数器的操作的多线程应用的执行,其中共享计数器实 现为能够由所述多线程应用的多个线程访问的数据结构,其中数据结构存储更新概率值的 表示,其中更新概率值指示更新概率值的表示将响应于以共享计数器为目标的递增操作的 启动而更新的概率,并且其中共享计数器的预计值能够至少部分地基于更新概率值的表示 来计算; 由所述应用的给定线程启动以该共享计数器为目标的递增操作; 响应于所述启动,确定是否执行递增操作,其中所述确定至少部分地依赖于存储在数 据结构中的更新概率的表示;及 响应于确定递增操作要被执行,更新存储在数据结构中的更新概率值的表示,其中更 新的表示代表存储在数据结构中的更新概率值的更新表示将响应于后续递增操作的启动 而进一步被更新的概率; 其中所述确定是否执行递增操作的步骤或者所述更新更新概率值的表示的步骤中的 一个或多个依赖于可配置准确性参数的预定值。13. 如权利要求12所述的系统, 其中数据结构存储更新概率值的浮点表示;及 其中所述更新包括用依赖于可配置准确性参数的预定值的常量乘以更新概率值的浮 点表不。14. 如权利要求12所述的系统, 其中数据结构存储概率计数器值的二进制浮点表示,包括尾数部分和指数部分;及 其中所述更新包括依赖于可配置准确性参数的预定值更新尾数部分或指数部分中的 一个或多个。15. 如权利要求12所述的系统,其中,当在一个或多个处理器上执行时,程序指令还使 这一个或多个处理器执行: 响应于所述启动,生成随机数; 其中所述确定还依赖于所生成的随机数。16. 如权利要求12所述的系统, 其中数据结构还存储精确的计数值; 其中精确计数值和预计值共同表示共享计数器的值;及 其中所述更新存储在数据结构中的更新概率值的表示是响应于递增所存储的精确计 数值的一次或多次失败的尝试或者响应于争用管理策略的条件被满足而执行的。17. -种存储程序指令的非暂态计算机可读存储介质,当程序指令在一个或多个计算 机上执行时,使这一个或多个计算机执行: 开始包括一个或多个递增共享计数器的操作的多线程应用的执行,其中共享计数器 实现为能够由多线程应用的多个线程访问的数据结构,其中数据结构存储更新概率值的表 示,其中更新概率值指示更新概率值的表示将响应于以共享计数器为目标的递增操作的启 动而更新的概率,并且其中共享计数器的预计值能够至少部分地基于更新概率值的表示来 计算; 由所述应用的给定线程启动以该共享计数器为目标的递增操作; 响应于所述启动,确定是否执行递增操作,其中所述确定至少部分地依赖于存储在数 据结构中的更新概率的表示;及 响应于确定递增操作要被执行,更新存储在数据结构中的更新概率值的表示,其中更 新的表示代表存储在数据结构中的更新概率值的更新表示将响应于后续递增操作的启动 而进一步被更新的概率; 其中所述确定是否执行递增操作的步骤或者所述更新更新概率值的表示的步骤中的 一个或多个依赖于可配置准确性参数的预定值。18. 如权利要求17所述的非暂态计算机可读存储介质, 其中数据结构存储更新概率值的浮点表示;及 其中所述更新包括用依赖于可配置准确性参数的预定值的常量乘以更新概率值的浮 点表不。19. 如权利要求17所述的非暂态计算机可读存储介质, 其中数据结构存储概率计数器值的二进制浮点表示,包括尾数部分和指数部分;及 其中所述更新包括依赖于可配置准确性参数的预定值更新尾数部分或指数部分中的 一个或多个。20. 如权利要求17所述的非暂态计算机可读存储介质,其中,当在一个或多个计算机 上执行时,程序指令还使这一个或多个计算机执行: 响应于所述启动,生成随机数; 其中所述确定还依赖于所生成的随机数。
【专利摘要】本文所述的系统和方法可以实现概率计数器和/或用于那些计数器的更新机制,使得它们依赖于可配置准确性参数的值。准确性参数值可以被调节,以便对计数器的准确性与访问它们的应用的性能之间的折中提供精细粒度的控制。计数器可以实现为包括共同表示更新概率值的尾数部分和指数部分的数据结构。当更新计数器时,可配置准确性参数的值会影响尾数部分和/或指数部分是否、何时、多经常或者按多少量被更新。更新概率计数器可以包括用依赖于可配置准确性参数的值的常量乘以其值。计数器可在事务内访问。计数器可以具有确定性更新策略。
【IPC分类】G06F9/52, G06F9/50
【公开号】CN105190559
【申请号】CN201380072249
【发明人】D·戴斯, Y·列夫, M·S·莫尔
【申请人】甲骨文国际公司
【公开日】2015年12月23日
【申请日】2013年12月19日
【公告号】EP2936312A1, US20140181473, WO2014100296A1
当前第6页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1