法律状态公告日
法律状态信息
法律状态
2017-08-25
授权
授权
2013-04-24
实质审查的生效 IPC(主分类):G06F9/46 申请日:20110627
实质审查的生效
2013-03-27
公开
公开
背景技术
在现代处理器中,通常具有多个能够并行执行的计算核。然而,很多顺序 或串行的应用和程序不能有效地利用并行架构。线程级推测(Thread-level speculation TLS)是一种使顺序程序并行化的有希望的技术,其利用静态或动 态编译器和硬件以便在错误推测发生时恢复。然而在依赖加载和存储指令之间 没有适当同步的情况下,例如,加载可在存储之前执行并导致数据违背,这破 坏推测线程并且需要对于重新加载的数据的重新执行。
附图简述
图1是根据本发明一个实施例的示例系统的框图。
图2是根据本发明一实施例的示例推测引擎的框图。
图3A和3B是根据本发明一实施例的示例软件代码的框图。
图4是根据本发明的一实施例的线程级推测中的动态数据同步的流程图。
图5是根据本发明实施例的系统的框图。
详细描述
在各实施例中,引入具有推测高速缓存的处理器,该推测高速缓存具有同 步位,该同步位被设置时可使高速缓存线或字的读取停止。本领域的技术人员 将意识到这可防止错误的推测和相关的被破化线程的无效。还介绍了设置和清 除同步位的处理器指令。编译器可利用这些指令来同步数据依赖性。本发明旨 在实施在可包括附加并行和/或线程推测特征的处理器和系统中。
现在参见图1,所示为根据本发明的一个实施例的示例系统的框图。如图 1所示,系统100可包括处理器102和存储器104,诸如动态随机存取存储器 (DRAM)。处理器102可包括核106-110、推测高速缓存112和推测引擎118。 核106-110能够彼此独立地执行指令且可包括任意类型的架构。尽管被示为包 括三个核,然而处理器102可具有任意数量的核且可包括未示出的其它组件或 控制器。在一个实施例中,处理器102是芯片上系统(SOC)。
推测高速缓存112可包括任意数量的独立高速缓存且可包含任意数量的 实体。尽管期望作为低等待时间一级高速缓存,然而推测高速缓存112可在任 意架构级下以任意存储器技术来实现。推测高速缓存112包括与高速缓存线或 字116相关联的同步位114。当同步位114被设置时,如下文更详细描述的, 线或字116可能不能被核加载,因为例如另一个核可能要执行加载依赖的存储。 在一个实施例中,当同步位114被设置时试图从高速缓存线或字116加载的核 将停止直到同步位114被清除。
推测引擎118可实现用于线程级推测中的动态数据同步的方法,例如参考 图4描述的,且可具有参考图2描述的架构。推测引擎118可与处理器102分 离且可被实现为硬件、软件或硬件和软件的组合。
现在参见图2,所示为根据本发明的一实施例的示例推测引擎的框图。如 图2所示,推测引擎118可包括并行化服务202、并行输出代码204和串行输 入代码206。并行化服务202可提供推测引擎118,具有使串行指令并行化并 在线程级推测中增加动态数据同步的能力。
并行化服务202可包括线程服务208、同步集服务210和同步清除服务 212,其可分别从串行指令创建并行线程、插入处理器指令以在依赖源之前设 置同步位、并插入处理器指令以在依赖源之后清除同步位。并行化服务202可 从串行输入代码206(例如如图3A所示)创建并行输出代码204(例如如图3B 所示)。
现在参考图3A和3B,示出的是根据本发明一实施例的示例软件代码的框 图。如图3A所示,顺序指令300包括串行前进的各种加载和存储,且旨在由 处理器的单个核执行。顺序指令300可用作推测引擎118的串行输入代码206。 如图3B所示,并行指令302可表示推测引擎118的并行输出代码204。线程 304-308能够由核106-110单独地执行。
线程304-308可各自包括处理器指令(例如,标记_通信_地址 mark_comm_addr),该指令在被执行时在诸如存储指令之类的依赖源之前设置 关于特定高速缓存线或字116的同步位114。线程304-308还可各自包括对应 的处理器指令(例如,清除_通信_地址clear_comm_addr),该指令在被执行 时在依赖源之后清除同步位114。可在线程304和308中看到数据依赖的示例, 其中依赖接收端(dependence sink)将要等待依赖源完成并清除同步位。在这 种情况下,加载310将停止线程308的前进直到存储312完成且线程304清除 相关联的同步位。
现在参考图4,示出根据本发明的一实施例的线程级推测中的动态数据同 步的流程图。如图4所示,方法开始于从串行指令创建(402)并行线程。在 一个实施例中,线程服务208被调用以从顺序指令300生成并行指令302。在 另一个实施例中,所生成的线程(304-308)的数量至少部分地基于处理器中 核(106-110)的数量。
该方法继续,插入(404)处理器指令以设置和清除同步位。在一个实施 例中,当生成地址时,同步设置服务210在依赖源或潜在的依赖源之前的早期 点将指令(标记_通信_地址)插入线程304-308。在另一个实施例中,同步清 除服务212在依赖源或潜在的依赖源之后将指令(清除_通信_地址)插入线程 304-308。
该方法以在多核处理器的核上执行(406)并行线程结束。在一个实施例 中,线程304-308分别在核106-110上执行。在一个实施例中,核110的执行 可停止在加载310上,直到同步位114被核106上执行的线程304清除为止。
各实施例可在许多不同的系统类型中实现。现在参见图5,所示为根据本 发明实施例的系统的框图。如图5所示,多处理器系统500是点对点互连系统, 并且包括经由点对点互连550耦合的第一处理器570和第二处理器580。如图 5所示,处理器570和580中的每一个都可以是多核处理器,包括第一和第二 处理器核(即,处理器核574a与574b以及处理器核584a与584b)。每个处 理器可包括根据本发明的实施例的动态数据同步线程级推测硬件、软件和固 件。
仍参考图5,第一处理器570还包括存储器控制器中枢(MCH)572与点 对点(P-P)接口576和578。类似地,第二处理器580包括MCH 582与P-P 接口586和588。如图5所示,MCH 572和582将各处理器耦合到相应的存储 器,即存储器532和存储器534,这些存储器可以是主存储器(例如,动态随 机存取存储器(DRAM))的本地附连到相应处理器的部分,其中的每一个可 包括根据本发明的一个实施例的扩展页表。第一处理器570和第二处理器580 可分别经由P-P互连552和554耦合到芯片组590。如图5所示,芯片组590 包括P-P接口594和598。
此外,芯片组590包括将芯片组592与高性能图形引擎538耦合的接口 590。接着,芯片组590可经由接口596耦合到第一总线516。如图5所示,各 种I/O设备514可连同总线桥518一起耦合到第一总线516,总线桥518将第 一总线516耦合到第二总线520。各种设备可被耦合到第二总线520,这些设 备包括例如键盘/鼠标522、通信设备526以及诸如磁盘驱动器或其它大容量存 储设备之类的数据储存器单元528,在一个实施例中该数据储存器单元可包括 代码530。此外,音频I/O 524可耦合到第二总线520。
各实施例可以用代码实现,并可存储在其上存储有指令的存储介质上,这 些指令可用来对系统编程以执行这些指令。存储介质可包括但不限于任何类型 的磁盘,包括软盘、光盘、压缩盘只读存储器(CD-ROM)、可重写压缩盘 (CD-RW)以及磁光盘,半导体器件,比如只读存储器(ROM)、诸如动态 随机存取存储器(DRAM)、静态随机存取存储器(SRAM)之类的随机存取 存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可 编程只读存储器(EEPROM),磁卡或光卡,或适于存储电子指令的任何其它 类型的介质。
尽管本发明已针对有限数量的实施例作了描述,然而本领域技术人员将会 从其中领会到许多修改和变型。所附权利要求旨在覆盖所有这样的修改和变 型,只要其落在本发明的真实精神和范围内。
机译: 线程级动态中的动态数据同步
机译: 线程级推测中的动态数据同步
机译: 线程级推测中的动态数据同步