用于提供推入缓冲器复制和存储功能的指令和逻辑的制作方法

文档序号:9221606阅读:274来源:国知局
用于提供推入缓冲器复制和存储功能的指令和逻辑的制作方法
【专利说明】
[0001] 相关申请的夺叉引用
[0002] 本申请涉及2010年11月29日提交的题为"用于流式缓冲器管理指令的方法和装 置"("MethodandApparatusforStreamBufferManagementInstructions")的申请 S/N. 12/955, 763。
技术领域
[0003] 本公开涉及处理逻辑、微处理器以及相关联的指令集架构的领域,当由处理器或 其他处理逻辑执行该指令集架构时,该指令集架构执行逻辑、数学或其他功能性操作。具体 而言,本公开涉及用于提供推入缓冲器(pushingbuffer)复制和存储功能的指令和逻辑。
【背景技术】
[0004] 现代的诸多处理器通常包括提供计算密集性但提供高度的数据并行性的操作的 指令,可通过使用诸如单指令多数据(SIMD)向量寄存器之类的各种数据存储设备的高效 实现来利用该数据并行性。然后,中央处理单元(CPU)可提供并行硬件以支持处理向量。向 量是保持多个连续数据元素的数据结构。尺寸为M的向量寄存器可包含N个尺寸为0的向 量元素,,其中N=M/0。例如,可将64字节向量寄存器分割为:(a) 64个向量元素,每个元素 保持占用1字节的数据项;(b) 32个向量元素,每个元素保持占用2字节(或一个"字")的 数据项;(c) 16个向量元素,每个元素保持占用4字节(或一个"双字")的数据项;或(d) 8 个向量元素,每个元素保持占用8字节(或一个"四字")的数据项。
[0005] 可在将多个核或硬件线程包括到一个或多个管芯上的多核或多线程处理器中看 到通过利用并行化来提升性能的另一技术。多核和/或多线程处理器对诸如web服务器之 类的吞吐量驱动应用是有利的,但是,利用几乎独立的代码区在分开的处理器上运行的适 用性并不总是有助于具有大量要执行的显著序列化任务的通用应用。
[0006] 最近探索的替代方式是使用流水线并行化,其中,将每一个循环迭代拆分成多个 级,并且硬件线程可在来自不同迭代的不同级上同时操作。按这种方式,迭代i的前一级充 当迭代i的下一级的消费者的生产者,并且当一个硬件线程在迭代i的下一级上操作时,另 一硬件线程同时在迭代i+1的前一级上操作。由此,将串行软件过程排成从硬件线程到硬 件线程的队列,并且该串行软件过程可利用多核和/或多线程处理器的并行性。
[0007] 流水线并行性的缺点之一在于:在现代多核处理器的多层级的高速缓存层次结构 中正在被进行队列操作的多个核之间共享数据可能导致显著的性能延迟,并且可能造成一 致性业务量、用电和能耗方面代价高昂的增加。
[0008] -些提出的解决方案引入一种不具有一致性支持的消息传递架构和/或软件管 理存储器以避免内置的高速缓存一致性通过将负担置于软件上而在业务量、功率要求和能 耗方面有所增加。一个缺点可能是将大量开发和维护的工作量增加到了软件编程者的责任 中。
[0009] 到目前为止,尚未充分探索针对此类性能受限问题、高能耗担忧以及其他瓶颈的 潜在解决方案。
【附图说明】
[0010] 在所附附图的多个图中以示例方式而非限制方式示出本发明。
[0011] 图1A是执行用于提供推入缓冲器复制和存储功能的指令的系统的一个实施例的 框图。
[0012] 图1B是执行用于提供推入缓冲器复制和存储功能的指令的系统的另一实施例的 框图。
[0013] 图1C是执行用于提供推入缓冲器复制和存储功能的指令的系统的又一实施例的 框图。
[0014] 图2是执行用于提供推入缓冲器复制和存储功能的指令的处理器的一个实施例 的框图。
[0015] 图3A示出根据一个实施例的紧缩数据类型。
[0016] 图3B示出根据一个实施例的紧缩数据类型。
[0017] 图3C示出根据一个实施例的紧缩数据类型。
[0018] 图3D示出根据一个实施例的用于提供推入缓冲器复制和存储功能的指令编码。
[0019] 图3E示出根据另一实施例的用于提供推入缓冲器复制和存储功能的指令编码。
[0020] 图3F示出根据另一实施例的用于提供推入缓冲器复制和存储功能的指令编码。
[0021] 图3G示出根据另一实施例的用于提供推入缓冲器复制和存储功能的指令编码。
[0022] 图3H示出根据另一实施例的用于提供推入缓冲器复制和存储功能的指令编码。
[0023] 图4A示出用于执行提供推入缓冲器复制和存储功能的指令的处理器微架构的一 个实施例的诸要素。
[0024] 图4B示出用于执行提供推入缓冲器复制和存储功能的指令的处理器微架构的另 一实施例的诸要素。
[0025] 图5是用于执行提供推入缓冲器复制和存储功能的指令的处理器的一个实施例 的框图。
[0026] 图6是用于执行提供推入缓冲器复制和存储功能的指令的计算机系统的一个实 施例的框图。
[0027] 图7是用于执行提供推入缓冲器复制和存储功能的指令的计算机系统的另一实 施例的框图。
[0028] 图8是用于执行提供推入缓冲器复制和存储功能的指令的计算机系统的另一实 施例的框图。
[0029] 图9是用于执行提供推入缓冲器复制和存储功能的指令的芯片上系统的一个实 施例的框图。
[0030] 图10是用于执行提供推入缓冲器复制和存储功能的指令的处理器的实施例的框 图。
[0031] 图11是提供推入缓冲器复制和存储功能的IP核开发系统的一个实施例的框图。
[0032] 图12示出提供推入缓冲器复制和存储功能的架构仿真系统的一个实施例。
[0033] 图13示出用于转换提供推入缓冲器复制和存储功能的指令的系统的一个实施 例。
[0034] 图14示出用于使用用于提供推入缓冲器复制和存储功能的指令的系统的一个实 施例的流程图。
[0035] 图15示出用于使用用于提供推入缓冲器复制和存储功能的指令的系统的另一实 施例的流程图。
[0036] 图16示出用于提供推入缓冲器复制和存储功能的过程的一个实施例的流程图。
[0037] 图17示出用于提供推入缓冲器复制和存储功能的过程的替代实施例的流程图。
[0038] 图18示出用于提供推入缓冲器复制和存储功能的过程的另一实施例的流程图。
【具体实施方式】
[0039] 以下描述公开了用于在处理器、计算机系统或其他处理装置中,或结合处理器、计 算机系统或其他处理装置提供推入缓冲器复制和存储功能的指令和处理逻辑。
[0040] 本文所公开的指令和逻辑用于提供推入缓冲器复制和存储功能。一些实施例包 括:第一硬件线程或处理核以及第二硬件线程或处理核;高速缓存,用于将高速缓存一致 (cachecoherent)数据存储在针对可由第二硬件线程或处理核访问的共享存储器地址的 高速缓存行中。响应于对指定源数据操作数、作为目的地操作数的所述共享存储器地址和 所述共享存储器地址的一个或多个拥有者(owner)的指令进行解码,当所述一个或多个拥 有者包括所述第二硬件线程或处理核时,一个或多个执行单元将数据从源数据操作数复制 到针对可由所述第二硬件线程或处理核访问的所述共享存储器地址的高速缓存行中的高 速缓存一致数据中。
[0041] 将会理解,如本文中多个实施例中所述,可将SMD推入缓冲器复制和/或存储指 令用于在多个应用中(例如,在多核流水线并行软件应用中)提供推入缓冲器复制和推入 缓冲器存储功能,进而减少共享存储器高速缓存层次结构中的一致性业务量,增加性能和 指令吞吐量,并且减少用电和能耗。一些实施例可提供目的地存储器地址的硬件线程、逻辑 处理器或处理核拥有者以包括诸如自身的、全部共享的或物理核ID(例如,逻辑处理器的 第二扩展高级可编程中断控制器(X2APIC)标识符(ID))之类的多个规格。一些实施例也 可提供目的地高速缓存的(destinationcached)存储器地址的高速缓存层级以包括诸如 第一级高速缓存(Ll$)、第二级高速缓存(L2$)、…、末级高速缓存(LL$)或主存储器之类 的多个规格。在一些实施例中,可将存储器地址指定为用于提供推入缓冲器复制和存储功 能的指令的显式操作数。在一些替代实施例中,可隐式地将存储器地址指定为例如分别位 于x86寄存器ES: [ (E)DI]和DS: [ (E)SI]中,或分别位于寄存器[RDI]和[RSI]中,或分别 位于其他寄存器中。在一些实施例中,可将缓冲器的尺寸指定为向量寄存器的尺寸,例如, 64位、128位、256位、512位等;或指定为目的地高速缓存中高速缓存行的尺寸;或指定为 在寄存器中(例如,在x86寄存器(E)CX中或在寄存器RCX中)被隐式地指定的尺寸。
[0042] 将会理解,如本文所述的多个实施例中所述,SMD推入缓冲器复制和/或存储指 令提供推入缓冲器复制和/或存储功能,这些指令允许硬件线程、逻辑处理器或处理器核 将数据缓冲器(例如,向量寄存器的尺寸)复制或存储到硬件线程、逻辑处理器或处理核的 高速缓存中,而将高速缓存行中的高速缓存一致数据的所有权留给该硬件线程、逻辑处理 器或处理器核拥有者以避免导致高速缓存未命中。对于一些实施例,可将SMD推入缓冲 器复制指令解码为未被分配的加载操作(例如,微操作,也称为微op或uop)和推入存储 操作。在此类实施例中,响应于该未被分配的加载操作,可利用高速缓存控制逻辑而不分 配(或可能伴随未分配的)高速缓存行来将数据从存储器源数据操作数加载到数据缓冲器 (例如,64位、128位、256位、512位等的向量寄存器)中。响应于该推入存储操作,可将消 息从一个处理核的消息收发逻辑发送到另一处理核的消息收发逻辑,并且可将数据存储在 数据缓冲器中以用于将数据缓冲器推入存储到硬件线程、逻辑处理器或处理器核的高速缓 存中,将高速缓存行中的高速缓存一致数据的所有权留给该硬件线程、逻辑处理器或处理 器核拥有者以避免导致高速缓存未命中。对于一些替代实施例,例如当向量寄存器是所指 定的源数据操作数时,可将SIMD推入缓冲器存储指令解码为仅推入存储操作。对于其他替 代实施例,在推入存储操作中可不涉及目的地存储器地址的硬件线程、逻辑处理器或处理 器核拥有者来实现SMD推入缓冲器存储和/或存储指令,例如,直接利用所指定的层次结 构层级上的高速缓存控制逻辑。
[0043] 在以下描述中,陈述了诸如处理逻辑、处理器类型、微架构条件、事件、启用机制等 众多特定细节,以提供对本发明实施例的更透彻理解。然而,本领域技术人员应当领会,没 有这些具体细节也可实施本发明。此外,没有详细示出一些公知的结构、电路等,以避免不 必要地使本发明的多个实施例模糊。
[0044] 虽然参照处理器来描述下列多个实施例,但是其他实施例也适用于其他类型的集 成电路和逻辑设备。本发明的实施例的类似技术和教导可应用于可受益于更高的流水线吞 吐量和改善的性能的其他类型的电路或半导体器件。本发明的多个实施例的教导适用于执 行数据操纵的任何处理器或机器。然而,本发明不限于执行512位、256位、128位、64位、32 位、或16位数据运算的处理器或机器,并可适用于执行数据操纵或管理的任何处理器和机 器。此外,下述描述提供了示例,并且附图出于示意性目的示出各种示例。然而,这些示例 不应该被理解为具有限制性意义,因为它们仅仅旨在提供本发明的多个实施例的示例,而 并非对本发明的多个实施例的所有可能的实现方式进行穷举。
[0045] 虽然下述的示例描述了在执行单元和逻辑电路的情境中的指令处理和分配,但是 也可通过存储在机器可读有形介质上的数据和/或指令来完成本发明的其他实施例,这些 数据和/或指令在由机器执行时使得该机器执行与本发明的至少一个实施例相一致的功 能。在一个实施例中,与本发明的多个实施例相关联的功能被具体化在机器可执行指令中。 这些指令可用来使通过这些指令而被编程的通用处理器或专用处理器执行本发明的步骤。 本发明的多个实施例也可以作为计算机程序产品或软件来提供,该计算机程序产品或软件 可包括其上存储有指令的机器或计算机可读介质,这些指令可被用来对计算机(或其他电 子设备)进行编程以执行根据本发明的多个实施例的一个或多个操作。或者,本发明的多 个实施例的多个步骤可由包含用于执行这些步骤的固定功能逻辑的专用硬件组件来执行, 或由经编程的计算机组件以及固定功能硬件组件的任何组合来执行。
[0046] 可将用于对逻辑进行编程以执行本发明的多个实施例的指令存储在系统中的存 储器中(诸如,DRAM、高速缓存、闪存、或其他存储设备)内。此外,指令可经由网络或通过其 他计算机可读介质来分配。因此,计算机可读介质可包括用于以机器(例如,计算机)可读 的形式存储或发送信息的任何机制,但不限于:软盘、光盘、紧致盘只读存储器(CD-ROM)、 磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电 可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或在经由互联网通过电、光、声、或 其他形式的传播信号(例如,载波、红外信号、数字信号等)发送信息中所用的有形机器可 读存储器。因此,计算机可读介质包括适用于存储或发送机器(例如,计算机)可读形式的 电子指令或信息的任何类型的有形机器可读介质。
[0047] 设计会经历多个阶段,从创建到仿真到制造。表示设计的数据可用多种方式来表 示该设计。首先,像仿真中有用的那样,可使用硬件描述语言或另一功能性描述语言来表示 硬件。此外,可在设计过程的一些阶段产生具有逻辑和/或晶体管门的电路级模型。此外, 大多数设计在某个阶段都达到表示硬件模型中各种设备的物理布置的数据的层级。在使用 常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于制造集成电路的掩 模的不同掩模层上存在或不存在各种特征的数据。在任何设计表示中,数据可被存储在任 何形式的机器可读介质中。存储器或磁或光存储设备(诸如,盘)可以是存储信息的机器 可读介质,这些信息是经由光或电波来发送的,调制或以其他方式生成这些光或电波以传 送这些信息。当发送指示或承载代码或设计的电载波达到实现该电信号的复制、缓冲或重 新发送的程度时,即产生了新的副本。因此,通信提供商或网络提供商可在有形的机器可读 介质上至少临时地存储具体化本发明的多个实施例的技术的制品(诸如,被编码成载波的 信息)。
[0048] 在现代处理器中,将多个不同的执行单元用于处理和执行各种代码和指令。并不 是所有指令都被同等地创建,因为一些指令更快地完成而其他指令可能需要多个时钟周期 来完成。指令的吞吐量越快,则处理器的总体性能越好。因此,使许多指令尽可能快地执行 将会是有利的。然而,存在具有更大的复杂度,并在执行时间和处理器资源方面要求更多的 某些指令。例如,存在浮点指令、加载/存储操作、数据移动等。
[0049] 因为更多的计算机系统被用于互联网、文本以及多媒体应用,所以已逐渐地引进 了附加的处理器支持。在一个实施例中,指令集可与一个或多个计算机架构相关联,一个或 多个计算机架构包括:数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处 理以及外部输入和输出(I/O)。
[0050] 在一个实施例中,指令集架构(ISA)可由一个或更多微架构来执行,微架构包括 用于实现一个或多个指令集的处理器逻辑和电路。因此,具有不同微架构的多个处理器 可共享公共指令集的至少一部分。例如,INTEL?奔腾四(Pentium4)处理器、Intel?酷 睿(Core?)处理器、以及来自加利福尼亚州桑尼威尔(Sunnyvale)的超微半导体有限公司 (AdvancedMicroDevices,Inc.)的多个处理器执行几乎相同版本的x86指令集(在更新 的版本中加入了一些扩展),但具有不同的内部设计。类似地,由其他处理器开发公司(诸 如,ARM控股有限公司、MIPS或它们的授权方或兼容方)设计的多个处理器可共享至少一部 分公共指令集,但可包括不同的处理器设计。例如,ISA的相同寄存器架构在不同的微架构 中可使用新的或公知的技术以不同方法来实现,包括专用物理寄存器、使用寄存器重命名 机制(例如,使用寄存器别名表(RAT)、重排序缓冲器(ROB)以及引退寄存器组)的一个或 多个动态分配物理寄存器。在一个实施例中,寄存器可包括:可由软件编程者寻址或不可由 软件编程者寻址的一个或多个寄存器、寄存器架构、寄存器组、或其他寄存器集合。
[0051] 在一个实施例中,指令可包括一个或多个指令格式。在一个实施例中,指令格式可 指示多个字段(位的数目、位的位置等)以指定将要被执行的操作以及将要被执行的操作 的操作数等。一些指令格式可进一步由指令模板(或子格式)细分定义。例如,给定指令 格式的指令模板可被定义为具有指令格式字段的不同的
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1