协调硬件事务存储器事务和软件事务存储器事务对存储单元的访问的制作方法

文档序号:6569959阅读:205来源:国知局
专利名称:协调硬件事务存储器事务和软件事务存储器事务对存储单元的访问的制作方法
协调硬件事务存储器事务和软件事务存储器事务对存储单元的访问 背景技术
事务执行和存储器允许程序作为单个原子操作来对存储单元进行读取和修改。事务是包括存储器读取和写入的机器指令的有 限序列。事务可顺序执行,使得一个事务的步骤不与另一个事务的步 骤交错。此外,事务是原子的,以及或者提交它对存储器的写入、使 得事务对存储器的改变是其它进程全部同时可见的,或者中止并放弃 改变。
对于事务执行存在两种^f莫型,硬件事务存储器(HTM)和 软件事务存储器(STM)。 HTM包括完全在处理器硬件中实现的硬件事 务。对于硬件事务,可将数据存储在硬件寄存器和高速緩存中,使得 通过硬件自动进行所有高速緩存动作,并且仅在提交事务时才将HTM 中的数据写入主存储器。在事务进行提交之前,HTM保持所有推测写 入,而不传播到主系统存储器、如随机访问存储器(RAM)设备。如果 硬件事务中止,则放弃保持HTM中的试探写入的高速緩存线。HTM 硬件事务可利用高速緩存一致性协议来检测和管理HTM硬件事务之 间的沖突。高速緩存一致性协议跟踪硬件事务中的访问。如果两个硬 件事务正访问同一个存储单元,则当存在沖突时,HTM中止一个事务, 否则可将事务的改变提交给系统存储器。
通过软件来实现软件事务存储器(STM)。将所有推测 STM事务数据存储在系统存储器中,并将它表示为处于未提交状态。 当STM事务提交时,将事务写入的任何数据表示为已提交并且随后是 其它线程和事务可用的。在某些STM系统中,可设置标志以便将数据 表示为已提交并且在存储器中是其它事务可访问且可用的。
HTM事务通常需要比STM事务更少的开销,因为HTm事务完全通过硬件进行。由于硬件限制,可将HTM事务限于较小的 事务,而STM事务可处理很大且较长的事务。
本领域需要允许HTM和STM事务在集成环境中共同操 作并防止HTM与STM事务之间的冲突、以便提供HTM的效率同时 提供STM的保证的技术。


图1示出计算环境的一实施例。
图2示出映射到STM所有权表中的记录的存储单元的一实施例。
图3示出页面保护属性信息的一实施例。
图4示出软件事务的事务描述符信息的一实施例。
图5示出具有关于访问存储单元的软件事务的信息的 STM所有权记录。
图6示出软件事务访问存储单元所执行的操作的一实施例。
图7示出硬件事务访问存储单元所执行的操作的一实施例。
图8和图IO示出软件事务访问存储单元所执行的操作的 另一实施例。
图9示出图8的操作中的页面跟踪信息的一实施例。
具体实施方式
图1示出计算环境的一个实施例。系统2包括例如中央 处理器等处理器4以及例如易失性存储设备等用作系统2的主存储器 的存储器6。处理器4包括硬件事务存储器(HTM)8,其中包括处理器 4的硬件中的寄存器和其它存储区、如板载高速緩存,它存储处理器4 的硬件中执行的硬件事务10所使用的数据。在提交阶段,将更新从HTM 8到存储器6的硬件事务10写入。硬件事务10利用例如高速緩 存一致性协议等技术来防止两个或多于两个硬件事务10相对于同一 个存储单元执行冲突操作。处理器4还包括事务后备緩冲器(TLB)12, 它使处理器6能够通过存储器6中的虚拟地址空间来访问数据。TLB 12 将虚拟地址转换为物理地址,并检查访问权限,使得仅当请求进程具 有正确的授权时,才容许对处理器4的硬件指令、数据或I/0的访问。
可在一个或多个电子存储设备中实现的存储器6包括应 用存储器14,它存储来自应用程序以及硬件事务10和软件事务16的 数据。可将应用存储器14中的数据存储在页面18中,其中各页面18 具有映射到虚拟地址的多个可寻址位置。软件事务16包括原子事务, 其数据存储在软件事务存储器(STM)20中,该存储器通过存储器6中 的数据结构来实现。在提交阶段,将STM 20中存储的写入施加到对 其它进程和事务可用的应用存储器14。
虚拟存储管理器22管理存储器6中的虚拟地址到物理地 址的映射,其中,虚拟地址可对存储器6中或者交换到存储装置24中 的页面18上的数据寻址。虚拟存储管理器22在数据页面祐L访问时将 数据页面18从存储装置24换入到存储器6中,以及从存储器6将数 据页面18换出到存储装置24中,以便为存储装置24中已经请求存储 单元的页面留出空间。存储装置24可包括例如硬盘驱动器等非易失性 存储装置,或者例如低级易失性存储设备等电子存储设备,或者例如 闪存设备、电可擦除可编程存储器(EEPROM)等非易失性电子存储器。 虛拟存储管理器22保存包含关于换入到存储器6中的页面的信息的页 面保护属性26,用来管理对页面18中的存储单元的访问。
软件事务16利用软件事务存储器(STM)所有权表28,该 表由软件事务16用于使它们对应用存储器中的存储单元的访问同步, 并防止两个软件事务16同时访问和修改同一个存储单元。页面跟踪器 30提供应用存储器14中被软件事务16所访问的页面18的列表。可 将能够在系统2中执行的各事务编译为将作为软件事务16执行的软件功能模块32以及编译为将由硬件事务10执行的硬件功能模块34。这 样,任何事务均可在HTM8或STM20中执行,以便提供执行事务的 综合方法。
图2示出应用存储器堆50中例如所示虚拟地址al、 a2、 a3和a4等可寻址存储单元如何映射到STM所有权表28中例如52a、 52b等所有权记录条目的一个实施例。由可在一个进程的独立线程上 执行的软件事务16来共享STM所有权表28。可使用哈希函数将虛拟 存储器地址映射到STM所有权表28中的所有权记录条目。STM所有 权表28中的各所有者记录指向事务描述符,例如事务描述符54a、54b, 它们提供关于"拥有"或被容许对存储单元的访问的软件事务16的信 息。如果不存在正访问那个存储单元的事务,则STM所有权记录可包 括空指针或者其它某种形式的指示。
图3示出可包含在4是供一个页面18的属性信息的页面保 护属性26的实例60中的信息的一个实施例。页面保护属性60提供属 性信息为其提供的页面18的页面标识符(ID)62以及表明软件事务16 是否有权访问所标识页面上的一个存储单元的事务标志64。
图4示出事务描迷符54、如54a、 54b(图2)中包含的信 息的一实施例,其中包括事务标识符(ID)70,标识一个软件事务16; 事务状态,标识软件事务的状态,例如活动(但未提交)、已提交(它表 示软件事务正采用来自STM 20的更新来更新事务期间被访问的应用 存储器14中的存储单元)或者表明事务不再访问该存储单元的已完成; 以及^皮访问的存储单元74的本地副本。
图5示出例如所有权记录52a和52b(图2)等STM所有 权记录52中包含的信息的一实施例,其中包括记录标识符(E))80, 标识所有权记录,它可包括对记录的索引;事务描述符指针82,标识 有权访问与所有权记录52相关联的存储单元的事务描述符54;以及 用来访问与STM所有权记录52相关联的存储单元的虚拟存储器地址 84。
图6示出由编译软件功能模块32中编码的软件事务16 执行的操作的一个实施例,该事务使用STM所有权表28来使对应用 存储器14的访问同步。在框100,软件事务16发起访问应用存储器 14中的存储单元以便进行读或写操作的操作。要访问存储单元,软件 事务16访问(在框102)存储单元的所有权记录52,以便确定另 一个软 件事务是否正访问(即拥有)该存储单元。可通过将哈希函数应用于软 件事务16想要访问的存储单元的虚拟存储器地址,来确定要访问的所 有权记录标识符80。如果祐L访问的所有权记录52包含指向没有已完 成或中止事务状态72(图4)的事务描述符54的指针82,则另一个软件 事务正访问这个存储单元。如果(在框104)另一个活动软件事务不拥有 该存储单元,则请求访问的软件事务将存储单元的被访问的所有权记 录52中的事务描述符指针82更新(在框106)为指向标识发起访问的软 件事务的事务描述符。软件事务在页面保护属性60中设置(在框108) 包括^皮请求存储单元的页面18的事务标志64(图3),以表明该页面正 被软件事务16访问。
在一个实施例中,更新(在框IIO)页面保护属性60中的 事务标志64可能产生那个页面的页面错误或者以其它方式使处理器4 中的TLB 12中止正访问页面16上的存储单元的任何硬件事务10。在 一个实施例中,可执行TLB终结(shootdown),以便中止正访问其事务 标志64净皮更新的页面上的存储单元的任何硬件事务10。这个过程确 保正确处理硬件事务10和软件事务16之间的冲突,因为在软件事务 16访问该存储单元时,硬件事务10被中止。然后,在更新存储单元 的所有权记录52以便将软件事务标识为有权访问该存储单元之后,软 件事务16访问(在框112)该存储单元。还可将事务状态72设置为活动, 从而表明软件事务16有权访问该存储单元,但当前未更新应用存储器 14的存储单元中的数据、即未提交任何写入。在活动(但未提交)状态 中,软件事务16可能正从存储单元进行读取或者在STM 20中緩冲更 新。如果(在框104)另一个软件事务有权访问该存储单元,则软件事务根据软件事务16的事务描述符54(图4)来确定(在框114)事务状态72, 其中软件事务16的事务描述符54由存储单元的所有权记录52中的事 务描述符指针82来标识。如果(在框116)事务状态为已提交、即采用 STM 20中的写入更新应用存储器14中的存储单元,则请求软件事务 16可等待当前所有者完成更新或者帮助更新。在拥有访问权的当前软 件事务完成更新之后,控制进入框106,将对于该存储单元的访问权 提供给请求软件事务。否则,如果事务状态72为未提交但为活动的, 则当前所有者对该存储单元的所有权坤皮中止(在框120),并且控制进入 框106,将该存储单元的访问权和所有权提供给请求软件事务16。在 某些实施例中,如果拥有存储单元的当前软件事务处于无法从其中回 滚(rollback)的状态,则它不会^L中止。如果事务所执行的改变在该事 务结束时可以反转(即返回到事务开始之前的状态),则可"回滚,,该事 务。如果当前软件事务所有者处于可以从其中回滚的状态,则它可以 被中止。在框116的检查当前所有者软件事务是否正更新存储单元的 操作是检查事务是否可回滚的一个实施例。
图7示出由编译^/f牛功能才莫块34中编码的硬件事务10 执行的操作的一个实施例,该事务使用页面保护属性26来使对应用存 储器14的访问同步。在框150,硬件事务10发起访问事务存储器8 中的存储单元的操作。硬件事务10确定(在框152)包括被请求存储单 元的页面18是否正被软件事务访问。这可由TLB 12或者确定包括被 请求存储单元的页面的页面保护属性60中的事务标志64是否表明页 面18具有被一个软件事务16访问的存储单元的某个其它处理器4的 硬件来确定。如果(在框152)包括被请求存储单元的页面18未被访问, 则对硬件事务IO提供对存储单元的访问权(在框154)。
否则,如果(在框152)将事务标志64设置成表明软件事 务16有权访问包括被请求存储单元的页面,则将页面错误返回(在框 156)给请求硬件事务10。然后,硬件事务10可确定(在框158)页面跟 踪器30是否表明页面正净皮软件事务16访问。在一个实施例中,硬件事务10可运行中止处理程序来确定页面错误是软件事务访问包括请 求存储单元的页面的结果,还是由可通过调用虚拟存储管理器22以将 包括被请求存储单元的页面18净奐入应用存储器16来校正的一种类型 的页面错误所引起的。如果(在框158)页面跟踪器30或某个其它信息 表明页面正由软件事务16访问,则请求硬件事务10中止。否则,如 果(在框158)页面错误不是由软件事务16访问页面上的存储单元引起 的,则硬件事务10确定(在框162)页面错误是否为可能导致一般保护 错误的无效页面错误,即无法纠正的页面错误。如果(在框162)页面错 误不是无效页面错误,则(在框164)虚拟存储管理器22可换入包括被 请求存储单元的页面18。然后,在页面18-皮换入应用存储器14之后, 硬件事务10可访问(在框154)页面18。
否则,如杲页面错误是通过将页面16从存储装置24换 入应用存储器无法纠正的无效页面错误,则中止硬件事务(在框166), 并且硬件事务或者管理错误的其它代码可确定是作为执行该功能的硬 件34形式的硬件事务10还是作为执行该功能的软件形式32的软件事 务16来重试该功能。该策略可^是供,在作为软件事务进行重试并执行 功能模块32的软件形式之前,重试被中止硬件事务预定次数。
通过在包括被请求存储单元的页面被活动软件事务访问 时阻止硬件事务访问被请求的存储单元,图7的实施例提供确定硬件 事务是否将与软件事务沖突的操作。硬件事务IO还可执行其它操作、 例如通过使用高速緩存一致性协议来避免与其它硬件事务沖突。此外, 对于图6和图7的操作,如果两个软件事务正访问一个存储页面上同 一个存储单元,则发生两个软件事务之间的争用。在访问一个页面上 的不同存储单元的两个软件事务之间不会发生争用。
在图6和图7的所述实施例中,软件事务设置页面保护 属性、例如事务标志64(图3),以便防止硬件事务访问被软件事务访问 的页面上的存储单元。在备选实施例中,软件事务16可执行不同类型 的操作,以防止硬件事务10访问软件事务正访问的存储单元。
图8和图10说明软件事务18引起尝试访问^皮软件事务 16访问的存储单元的硬件事务10的页面错误所执行的操作的一备选 实施例。对于图8,在执行(在才匡200)图6的框106的操作之后以及在 执行112之前,获得对存储单元的访问权的软件事务16(在框202)将页 面18设置成不许访问(noaccess)。将页面18设置成"不许访问"涉及改 变页面保护属性,它引起TLB终结以及访问该页面的其它硬件事务的 中止。但是,即使将页面改变为"不许访问",软件事务和其它软件事 务也需要访问该页面。要允许软件事务16访问页面,引起TLB终结 的软件事务可调用(在框210)虚拟存储管理器22来创建虚拟存储器别 名,它可涉及在操作系统页表中创建新条目,使得将新的虚拟页面映 射到相同物理页面(即,刚设置成不许访问的物理页面)。软件事务16 使用这个新虚拟页面(或别名页面)来访问存储单元。为将新虚拟存储 器地址(别名页面)的使用传递到其它软件事务,软件事务16将关于重 新映射页面的信息存储在页面跟踪器数据结构、如30中。在图9的实 施例中,页面跟踪器30具有已经重新映射到新虚拟地址的各页面的条 目230,并且各条目230包括重新映射到新虚拟地址的页面的页面地 址232和新虚拟地址234。软件事务16采用已^t重新映射的页面地址 232和新虚拟地址234来更新(在框212)页面跟踪器条目230,以供软 件事务用来访问那个页面。因此,如果TLB 12尝试使用旧虚拟地址来 访问硬件事务10的存储单元,则将返回错误,因为TLB 12所使用的 虚拟存储器地址不再有效。
图10示出在前一个软件事务16重新映射存储单元的虚 拟地址以防止硬件事务10访问那个存储单元的实施例中由软件事务 16所执行的操作的一个实施例。当软件事务开始访问存储单元时,图 10的操作可作为图6的框112的一部分来执行。在这个实施例中,将 不执行框108和110中的操作,即框106中的操作之后跟随框112中 的操作。当发起(在框250)访问存储单元的操作时,软件事务16确定(在 框252)在页面跟踪器数据结构30中是否存在该存储单元的页面跟踪器条目230。如果没有,则软件事务16使用(在框254)当前或已知的虚 拟存储器地址来访问该存储单元。如果存在页面跟踪器条目230,则 软件事务16根据页面跟踪器条目230来确定(在框256)用于另一个软 件事务所改变的存储单元的新虚拟存储器地址234、即别名地址。然 后,软件事务16使用(在框258)所确定虛拟存储器地址来访问该存储 单元。因此,当虚拟地址改变时,将不会阻止其它软件事务16访问该 存储单元,因为在页面跟踪器条目230中表明了新的虚拟地址。但是, 硬件事务可中止,因为它们在访问存储单元时没有访问页面跟踪器30。
对于图8、图9和图10的所述实施例,仅当硬件事务正 访问或尝试访问与净皮软件事务访问的另 一个位置处在相同的页面中的 存储单元时,才可能发生访问错误。在软件事务已经提交或完成之后, 它则将页面改回完全访问(foll access),使得不再触发错误。因此,仅 在软件事务正运行时将页面设置成不许访问,以便防止任何硬件事务 与^:件事务发生沖突。在将页面重置回完全访问时,还更新页面跟踪 器中的信息,以便表明该页面不再#_重新映射并且不再具有新的虛拟 地址。
对于所述实施例,软件事务执行引起错误、如访问错误 而被返回到正访问或尝试访问存储单元的硬件事务的操作。在某些实 施例中,如果硬件事务正访问或尝试访问包括存储单元的页面上的存 储单元,则可将错误返回给硬件事务。或者,仅当硬件事务正在访问 被软件事务访问的同一个存储单元时,才可返回错误。
所述操作可使用标准编程和/或工程技术以产生软件、固 件、硬件或者它们的任何结合,作为方法、装置或制品来实现。所述 操作可作为"计算机可读介质"中包含的代码来实现,其中,处理器可 从计算机可读介质中读取和执行代码。计算机可读介质可包括例如磁 存储介质(如硬盘驱动器、软盘、》兹带等)、光存储装置(CD-ROM、 DVD、 光盘等)、易失性和非易失性存储设备(如EEPROM、 ROM、 PROM、 RAM、 DRAM、 SRAM、闪存、固件、可编程逻辑等)等。实现所述操作的代码还可通过硬件逻辑(例如集成电路芯片、可编程门阵列(PGA)、 专用集成电路(ASIC)等)来实现。更进一步,实现所述操作的代码可通 过"传输信号"来实现,其中,传输信号可通过空间或通过例如光纤、 铜线等传输介质来传播。在其中对代码或逻辑进行编码的传输信号还 可包括无线信号、卫星传输、无线电波、红外信号、蓝牙等。在其中 对代码或逻辑进行编码的传输信号能够由发射站发射并由接收站接 收,其中,可在接收或发射站或设备上、通过硬件或计算机可读介质 对传输信号中编码的代码或逻辑进行解码和存储。"制品"包括其中可 实现代码的计算机可读介质、硬件逻辑和/或传输信号。本领域的技术 人员自然会认识到,可在不背离本发明的范围的前提下对本配置进行 许多修改,并且制品可包括本领域已知的适当信息承载介质。
所述操作可由电if各来执行,其中,"电路"指的^:硬件或 软件或者它们的结合。用于执行所述实施例的操作的电路可包括硬件 设备,例如集成电路芯片、可编程门阵列(PGA)、专用集成电路(ASIC) 等。电路还可包括例如集成电路等处理器组件以及例如存储器等计算 机可读介质中的代码,其中,由处理器执行所述代码以便执行所述实 施例的操作。
在所述实施例中,响应软件事务所执行的操作而将错误 返回给尝试访问或正访问存储单元的硬件事务。在备选实施例中,如 果软件事务正在对被请求存储单元或者包括被请求存储单元的页面进 行访问或发起访问,则可将备选返回代码或消息提供给硬件事务,以 便使它中止。
术语"一实施例"、"实施例"、"多个实施例"、"该实施 例"、"这些实施例"或者"一个或多个实施例"、"一些实施例"和"一 个实施例"表示"本发明的一个或多个Cf旦不是全部)实施例",除非另有 明确^见定。
术语"包括"、"包含"、"具有"及其变化表示"包括但不限 于",除非另有明确规定。
项的枚举列表不意味着项的任一个或全部是互斥的,除 非另有明确规定。
术语"一"和"该"表示"一个或多个",除非另有明确规定。
相互通信的设备无需彼此连续通信,除非另有明确规定。 另外,相互通信的设备可直接或者通过一个或多个中介间接通信。
具有相互通信的若干组件的一实施例的描述不意味着需 要所有这类组件。相反,描述了许多任选组件,以便说明本发明的大 量可能的实施例。
此外,虽然可按顺序来描述过程步骤、方法步骤、算法 等,但是,这类过程、方法和算法可配置成轮流进行工作。换言之, 可用以描述步骤的任何序列或顺序不一定表示必需以那个顺序执行所 述步骤。可按照任何可行的顺序来执行本文所述的过程的步骤。此外, 可同时执行某些步骤。
当本文描述单个装置或产品时,大家易于清楚地知道, 一个以上设备/产品(无论它们是否配合工作)可用来代替单个设备/产 品。类似地,在本文描述一个以上设备或产品(无论它们是否配合工作) 的情况下,大家易于清楚地知道,单个设备/产品可用来代替一个以上 设备或产品,或者可使用与所示多个数量不同数量的设备。
或者可通过没有明确描述为具有这类功能性/特征的一 个或多个其它设备来体现设备的这类功能性和/或特征。因此,在本发 明的其它实施例不需要包括该设备本身。
图6、图7、图8和图10的所示的操作示出以某个顺序 发生的某些事件。在备选实施例中,某些操作可按照不同的顺序来执 行或者被修改或去除。此外,可对上述逻辑增加步骤,并且仍然符合 所述实施例。另外,本文所述纟喿作可依次发生,或者可并行处理某些 操作。此外,可由单个处理单元或者由分布式处理单元来执行操作。
为了说明和描述的目的,提供了对本发明的各种实施例 的以上描述。它不是意在涵盖本发明的各个方面或者将本发明限于所公开的精确形式。根据上述教导,许多修改及变更都是可行的。本发 明的范围不是由这个详细描述来限定,而是由所附权利要求书来限定。 上述说明、示例和数据提供了对本发明的构成的制造和使用的全面描 述。由于在不背离本发明的精神和范围的前提下可实现本发明的许多 实施例,因此本发明在于以下所附的权利要求书。
权利要求
1.一种制品,包括用于硬件事务和软件事务的代码,所述代码配置成使操作执行,所述操作包括由能够在硬件事务存储器中执行的所述硬件事务发起访问存储单元的请求,其中,所述硬件事务和软件事务能够访问存储单元;以及由在软件事务存储器中执行的软件事务来执行操作,其中,所述操作使错误返回到硬件事务请求。
2. 如权利要求l所述的制品,其中,由所述软件事务执行的、使 所述错误返回的操作包括所述软件事务访问包括所请求的存储单元 的页面上的一个存储单元。
3. 如权利要求2所述的制品,其中,如果两个软件事务正在访问 一个存储页面上的同一个存储单元,则发生所述两个软件事务之间的 争用,以及在访问一个页面上的不同存储单元的两个软件事务之间不 会发生争用。
4. 如权利要求2所述的制品,其中,由所述软件事务执行的、使 所述错误返回的操作包括将包括所述存储单元的所述页面指示为被 所述软件事务访问,其中所述操作还包括由所述硬件事务来确定,来自所述硬件事务的所请求的存储单元 是否处于指示为正被一个软件事务访问的一个页面上,其中,响应确 定包括所请求的存储单元的所述页面正被一个软件事务访问而返回所 述错误。
5. 如权利要求l所述的制品,其中,所述错误能够与正^皮一个软 件事务访问的所述存储单元无关,其中所述操作还包括由所述硬件事务来确定所返回的错误是否与正被一个软件事务访 问的所述存储单元有关;以及响应确定所述错误与正^1一个软件事务访问的所述存储单元有 关,而由所述硬件事务中止所述硬件事务。
6. 如权利要求5所述的制品,其中,确定所述错误是否与一个软 件事务有关的步骤包括确定包括所请求的存储单元的页面是否正被 一个软件事务访问。
7. 如权利要求l所述的制品,其中,所述错误可与正^皮一个软件 事务访问的所述存储单元无关,其中所述操作还包括由所述硬件事务来确定所迷错误是否与软件事务的操作无关;以及由所述硬件事务调用虚拟存储管理器来把包括所请求的存储单元 的所述页面加栽到存储器中,以便提供对所述页面和所请求的存储单 元的硬件事务访问。
8. 如权利要求l所述的制品,其中,所请求的存储单元包括第一 所请求的存储单元,其中由所述软件事务的所述代码引起的所述操作 还包括提供存储单元的信息,该信息表明软件事务正在访问所述存储单元;由第 一软件事务发起访问第二所请求的存储单元的请求; 根据所述信息来确定第二车欠件事务是否正在更新第二所请求的存 储单元;以及响应确定所述第二软件事务正在访问第二所请求的存储单元,使 所述第一或第二软件事务这两者其中之一能够对第二所请求的存储单 元进行访问。
9. 如权利要求8所述的制品,其中,允许对第二所请求的存储单 元进行访问的步骤包括允许对包括第二所请求的存储单元的页面进 行访问,其中由所述软件事务的所述代码引起的所述操作还包括确定所述第二软件事务是否处于可^Mv其中回滚的状态,其中,响应确定所述第二软件事务的状态不能回滚而使所述第二软件事务能够 继续访问包括所述存储单元的所述页面;以及响应确定可回滚所述第二软件事务,而中止所述第二软件事务对包括第二所请求的存储单元的所述页面的访问,并允许对包括第二所 请求的存储单元的所述页面的所述第一软件事务访问。
10. 如权利要求1所述的制品,其中,由所述软件事务执行的、 使所述错误返回的操作包括所述软件事务将用于访问所请求的存储 单元的虚拟存储器地址改变为新的虚拟存储器地址,其中响应在一个 软件事务改变了所请求的存储单元的所述存储器地址之后、所述硬件 事务没有使用所述新的虚拟存储器地址来访问所请求的存储单元,而 将所述错误返回到所述硬件事务。
11. 如权利要求IO所述的制品,其中,由所述软件事务的所述代 码引起的所述操作还包括提供由软件事务使用的、表明访问各存储单元的已更新虚拟存储 器地址的信息;以及由 一个软件事务来确定在i方问 一个存储单元时用于访问所述存储 单元的所述已更新虚拟存储器地址。
12. 如权利要求1所述的制品,其中,在向所述硬件事务提供对 所请求的存储单元的访问权之后,发生由所述软件事务执行的、使所 述错误返回的操作。
13. —种系统,包括 存储器,包括存储单元; 硬件事务存储器; 软件事务存储器;硬件事务,适合于在所述石更件事务存储器中发起访问所述存储单 元其中之一的请求;以及适合于在所述软件事务存储器中执行的软件事务,该事务执行使 错误返回到硬件事务请求的操作。
14. 如权利要求13所述的系统,其中,由所述软件事务执行的、 使所述错误返回的操作包括所述软件事务访问包括所请求的存储单 元的页面上的一个存储单元。
15. 如权利要求14所述的系统,其中,如果两个软件事务正在访 问一个存储页面上的同一个存储单元,则发生所述两个软件事务之间 的争用,以及在访问一个页面上的不同存储单元的两个软件事务之间 不会发生争用。
16. 如权利要求14所述的系统,其中,由所述软件事务执行的、 使所述错误返回的操作包括将包括所述存储单元的所述页面指示为 被所述软件事务访问,其中所述硬件事务还适合于执行以下步骤确定来自所述硬件事务的所请求的存储单元是否处于指示为正被 一个软件事务访问的一个页面上,其中,响应确定包括所请求的存储 单元的所述页面正被一个软件事务访问而返回所述错误。
17. 如权利要求14所述的系统,其中,所述错误能够与正神皮一个 软件事务访问的所述存储单元无关,其中接收所返回的错误的所述硬 件事务还适合于执行以下步骤确定所返回的错误是否与正被一个软件事务访问的所述存储单元 有关;以及响应确定所述错误与正被一个软件事务访问的所述存储单元有 关,而中止所述硬件事务。
18. 如权利要求13所述的系统,其中,所迷错误可与正^皮一个软 件事务访问的所述存储单元无关,其中所述硬件事务还适合于执行以 下步骤确定所述错误是否与软件事务的操作无关;以及 调用虚拟存储管理器来把包括所请求的存储单元的所述页面加载到存储器中,以便提供对所述页面和所请求的存储单元的硬件事务访问。
19. 如权利要求13所述的系统,其中,所请求的存储单元包括第 一所请求的存储单元,还包括存储单元的信息,该信息表明软件事务正在访问所述存储单元; 其中,在所述软件事务存储器中执行的第一软件事务还适合于执行以下步骤发起访问第二所请求的存储单元的请求;根据所述信息来确定第二软件事务是否正在更新第二所请求的存储单元;以及响应确定所述第二软件事务正在访问第二所请求的存储单元,使 所述第一或第二软件事务这两者其中之一能够对第二所请求的存储单 元进行访问。
20. 如权利要求13所述的系统,其中,由所述软件事务执行的、 使所述错误返回的操作包括所述软件事务将用于访问所请求的存储 单元的虚拟存储器地址改变为新的虚拟存储器地址,其中响应在一个 软件事务改变了所请求的存储单元的所述存储器地址之后、所述硬件 事务没有使用所述新的虚拟存储器地址来访问所请求的存储单元,而 将所述错误返回到所述硬件事务。
21. 如权利要求3所述的制造的系统,其中,在向所述硬件事务 提供对所请求的存储单元的访问权之后,发生使所述错误返回的软件事务操作。
22. —种方法,包括由在硬件事务存储器中执行的硬件事务来发起访问存储单元的请 求;以及响应由在软件事务存储器中执行的一个软件事务进行的操作,将 错误返回到硬件事务请求。
23. 如权利要求22所述的方法,其中,由所述软件事务执行的、 使所述错误返回的操作包括所述软件事务访问包括所请求的存储单 元的页面上的一个存储单元。
24. 如权利要求23所述的方法,其中,如果两个软件事务正在访 问 一个存储页面上的同 一个存储单元,则发生所述两个软件事务之间 的争用,以及在访问一个页面上的不同存储单元的两个软件事务之间 不会发生争用。
25. 如权利要求23所述的方法,其中,由所述软件事务执行的、 使所述错误返回的操作包括将包括所述存储单元的所述页面指示为 被所述软件事务访问,还包括由所述硬件事务来确定,来自所述硬件事务的所请求的存储单元 是否处于指示为正净皮一个软件事务访问的一个页面上,其中,响应确 定包括所请求的存储单元的所迷页面正4皮一个软件事务访问而返回所 述错误。
26. 如权利要求22所述的方法,其中,所述错误能够与正被一个 软件事务访问的所述存储单元无关,还包括确定所返回的错误是否与正被一个软件事务访问的所述存储单元 有关;以及响应确定所述错误与正被一 个软件事务访问的所述存储单元有 关,而中止所述硬件事务。
27. 如权利要求22所述的方法,其中,所述错误可与正被一个软 件事务访问的所述存储单元无关,还包括由所述硬件事务来确定所述错误是否与软件事务的操作无关;以及由所述硬件事务调用虛拟存储管理器来把包括所请求的存储单元 的所述页面加栽到存储器中,以便提供对所述页面和所请求的存储单 元的硬件事务访问。
28. 如权利要求22所述的方法,其中,所请求的存储单元包括第 一所请求的存储单元,还包括提供存储单元的信息,该信息表明软件事务正在访问所述存储单元;由第 一软件事务发起访问第二所请求的存储单元的请求; 根据所述信息来确定第二软件事务是否正在更新第二所请求的存 储单元;以及响应确定所述第二软件事务正在访问第二所请求的存储单元,使所述第一或第二软件事务这两者其中之一能够对第二所请求的存储单 元进行访问。
29. 如权利要求22所述的方法,其中,由所述软件事务执行的、 使所述错误返回的操作包括所述软件事务将用于访问所请求的存储 单元的虚拟存储器地址改变为新的虚拟存储器地址,其中响应在一个 软件事务改变了所请求的存储单元的所述存储器地址之后、所述硬件 事务没有使用所述新的虚拟存储器地址来访问所请求的存储单元,而 将所述错误返回到所述硬件事务。
30. 如权利要求22所述的方法,其中,在向所述硬件事务提供对 所请求的存储单元的访问权之后,发生由所述软件事务执行的、使所 述错误返回的操作。
全文摘要
提供了用于协调硬件事务存储器事务和软件事务存储器事务对存储单元的访问的方法、系统和程序。在硬件事务存储器中执行的硬件事务发起访问存储单元的请求。响应由在软件事务存储器中执行的一个软件事务进行的操作,将错误返回到硬件事务请求。
文档编号G06F9/52GK101326494SQ200680046532
公开日2008年12月17日 申请日期2006年12月5日 优先权日2005年12月15日
发明者A·-R·阿德尔-塔巴塔拜, B·萨哈, H·阿卡里, R·L·哈森, R·拉瓦 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1