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

文档序号:9221606阅读:来源:国知局
显式地指定为源和目的地两者。在一些实施例中,可将缓冲器的尺寸指定为向量寄存器的 尺寸,例如64位、128位、256位、512位等;或指定为目的地高速缓存中高速缓存行的尺寸; 或指定为在寄存器中(例如,在x86寄存器(E)CX中或在寄存器RCX中)被隐式地指定的 尺寸。
[0146] 图16示出用于提供推入缓冲器复制和存储功能的过程1601的一个实施例的流程 图。通过处理块来执行过程1601和本文中公开的其他过程,这些处理块可包括专用硬件或 可由通用机器或专用机器或通用机器和专用机器两者的组合执行的软件或固件操作码。
[0147] 在过程1601的处理块1630中,对于第一处理核中的第一硬件线程,解码第一指令 以便由该第一硬件线程执行,该指令指定源数据操作数、作为目的地操作数的共享存储器 地址和该共享存储器地址的一个或多个拥有者。在处理块1645中,响应于对该第一指令进 行解码,将数据从源数据操作数复制到针对可由所述一个或多个拥有者访问的所述共享存 储器地址的存储中的高速缓存一致数据中。在处理块1660中,当所述一个或多个拥有者包 括第二处理核中的第二硬件线程时,第二处理核中的第二硬件线程访问来自所述共享存储 器地址的高速缓存一致数据存储的数据而不存在高速缓存未命中。
[0148] 图17示出用于提供推入缓冲器复制和存储功能的过程的替代实施例的流程图。 在多线程处理器中的过程1701的处理块1710中,执行第一硬件线程。在多线程处理器中 的过程1702的处理块1715中,执行第二硬件线程。在处理块1725中,将高速缓存一致数 据存储在针对可由第二硬件线程访问的高速缓存存储的共享存储器地址的高速缓存行中。
[0149] 在过程1701的处理块1730中,解码第一指令以便由第一硬件线程执行,该指令指 定源数据操作数、作为目的地操作数的共享存储器地址以及该共享存储器地址的至少第二 硬件线程拥有者。将会理解,该第一指令的一些实施例可提供共享存储器地址的硬件线程 拥有者以包括诸如自身的、全部共享的或物理核ID(例如,逻辑处理器的x2APICID)之类 的多个规格。在处理块1745中,响应于对第一指令进行解码,将数据从源数据操作数复制 到针对可由所述第二硬件线程访问的高速缓存存储的共享存储器地址的高速缓存行中的 高速缓存一致数据中。
[0150] 在过程1702的处理块1760中,访问来自第二硬件线程的高速缓存存储的高速缓 存行中的高速缓存一致数据的数据的该共享存储器地址处的数据。将会理解,当所指定的 一个或多个拥有者包括第二硬件线程时,在过程1702的处理块1760中,访问该共享存储器 地址处的数据,并且作为用于提供推入缓冲器复制和存储功能的过程1701的结果,不会导 致高速缓存未命中。
[0151] 图18示出用于提供推入缓冲器复制和存储功能的过程1801的另一实施例的流程 图。在多线程处理器中的过程1801的处理块1810中,执行第一线程。在处理块1820中, 取出第一指令以便由第一线程执行,该指令指定源数据操作数、共享存储器地址目的地、该 共享存储器地址的拥有者和高速缓存层级。在处理块1830中,解码该第一指令以生成未被 分配的加载操作和推入存储操作(例如,微操作、微op或uop)。在处理块1840中,响应于 该未被分配的加载操作,将数据从源数据操作数加载到数据缓冲器中。在处理块1850中, 响应于推入存储操作,将数据从该数据缓冲器复制到在所指定的高速缓存层级上的、对应 于共享存储器地址的高速缓存存储的共享存储器地址的高速缓存行中的高速缓存一致数 据中。然后,在处理块1860中,代表对应于共享存储器地址的拥有者的第二线程来访问来 自所指定的高速缓存层级上的高速缓存存储的高速缓存行的高速缓存一致数据。再一次将 会理解,当共享存储器地址的拥有者包括第二线程时,在处理块1860中,可访问该共享存 储器地址处的高速缓存一致数据,并且作为用于提供推入缓冲器复制和存储功能的第一指 令的结果,不会导致高速缓存未命中。一些实施例可提供共享存储器地址的拥有者以包括 诸如自身的、全部共享的或物理核ID(例如,逻辑处理器的x2APICID)之类的多个规格。一 些实施例可提供目的地高速缓存的存储器地址的高速缓存层级以包括诸如Ll$、L2$、…、 末级$或主存储器之类的多个规格。
[0152] 对于一些替代实施例,可解码第一指令以生成比未被分配的加载操作和推入存 储操作更少的操作,或作为未被分配的加载操作和推入存储操作的多个操作的附加或替 代--例如,利用高速缓存控制逻辑(例如,控制逻辑1542和1552)的操作1511中的高速 缓存行写回和操作1566中的高速缓存行预取出。在一些实施例中,可将存储器地址指定为 用于提供推入缓冲器复制和存储功能的指令的显式操作数。在一些替代实施例中,可隐式 地将存储器地址指定为分别位于寄存器ES: [(E)DI]和DS: [(E)SI]中,或分别位于寄存器 [RDI]和[RSI]中。在一些其他的替代实施例中,仅一个共享存储器地址可被显式地指定为 源和目的地操作数两者,并且/或者仅一致的高速缓存行内容状态和所有权可能受影响。
[0153] 如上述多个实施例中所述,可将推入缓冲器复制和/或存储指令用于在多个应用 (例如,多核流水线并行软件应用)中提供推入缓冲器复制和推入缓冲器存储功能,进而减 少共享存储器高速缓存层次结构中的一致性业务量,增加性能和指令吞吐量,并且减少用 电和能耗。
[0154] 本文公开的多个机制的各实施例可以被实现在硬件、软件、固件或此类实现的组 合中。可将本发明的实施例实现为在可编程系统上执行的计算机程序或程序代码,该可编 程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、 至少一个输入设备以及至少一个输出设备。
[0155] 可将程序代码应用于输入指令以执行本文描述的功能并产生输出信息。可以按已 知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸 如数字信号处理器OSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任 何系统。
[0156] 程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统 通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制 不限于任何特定编程语言的范围。在任何情况下,该语言可以是编译语言或解释语言。
[0157] 至少一个实施例中的一个或多个方面可由存储在表示该处理器中的各种逻辑的 机器可读介质上的表示性指令来实现,当由机器读取该表示性指令时,这些指令使得该机 器制作用于执行本文所述的技术的逻辑。可将被称为"IP核"的此类表示可以被1存储在 有形的机器可读介质上,并被提供给多个客户或生产设施以加载到实际制造该逻辑或处理 器的制造机器中。
[0158] 此类的机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品 的非瞬态的有形安排,其包括存储介质,诸如:硬盘;任何其他类型的盘,包括软盘、光盘、 紧致盘只读存储器(⑶-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器件,例如只读存 储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)之类的随机 存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器 (EEPR0M);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。
[0159] 因此,本发明的多个实施例也包含指令或包含设计数据的非瞬态有形机器可读介 质,设计数据诸如定义本文中所描述的结构、电路、装置、处理器和/或系统特征的硬件描 述语言(HDL)。也可将此类实施例称为程序产品。
[0160] 在一些情况下,指令转换器可用于将指令从源指令集转换为目标指令集。例如,指 令转换器可以变换(例如,使用静态二进制变换、包括动态编译的动态二进制变换)、变形、 仿真或以其他方式将指令转换成将由核来处理的一个或多个其他指令。可在软件、硬件、固 件、或其组合中实现该指令转换器。指令转换器可以在处理器上、在处理器外、或者部分在 处理器上且部分在处理器外。
[0161] 因此,公开了用于执行根据至少一个实施例的一条或多条指令的技术。虽然已经 描述并在附图中示出了某些示例性实施例,但是应当理解,此类实施例仅仅是对本宽泛发 明的说明而非限制,并且本发明不限于所示出和所描述的特定结构和配置,因为本领域技 术人员在研宄了本公开文本之后可以料知到各种其他修改。在诸如本申请这样的、发展迅 速且进一步的进展难以预见的技术领域中,所公开的多个实施例在通过启用技术进步所促 成的配置和细节上是容易修改的,同时不背离本公开的原理和所附权利要求书的范围。
【主权项】
1. 一种处理器,包括: 第一硬件线程和第二硬件线程; 高速缓存,用于将高速缓存一致数据存储在针对可由所述第二硬件线程访问的共享存 储器地址的高速缓存行中; 解码级,用于解码第一指令,以便由所述第一硬件线程执行,所述第一指令指定源数据 操作数、作为目的地操作数的所述共享存储器地址以及所述共享存储器地址的一个或多个 拥有者;以及 一个或多个执行单元,用于响应于被解码的第一指令: 当所述一个或多个拥有者包括所述第二硬件线程时,将数据从所述源数据操作数复制 到所述高速缓存中的、针对可由所述第二硬件线程访问的所述共享存储器地址的所述高速 缓存行中的所述高速缓存一致数据中。2. 如权利要求1所述的处理器,其特征在于,所述第一指令显式地将所述共享存储器 地址指定为目的地操作数。3. 如权利要求1所述的处理器,其特征在于,所述第一指令隐式地将所述共享存储器 地址指定为目的地操作数。4. 如权利要求3所述的处理器,其特征在于,所述第一指令隐式地将目的地操作数指 定为位于寄存器ES: [(E)DI]中或位于寄存器[RDI]中。5. 如权利要求1所述的处理器,其特征在于,所述第一指令显式地指定所述源数据操 作数。6. 如权利要求5所述的处理器,其特征在于,所述第一指令显式地将所述源数据操作 数指定为向量寄存器。7. 如权利要求6所述的处理器,其特征在于,所述第一指令是推入缓冲器存储指令。8. 如权利要求5所述的处理器,其特征在于,所述第一指令显式地将所述源数据操作 数指定为可高速缓存的存储器地址。9. 如权利要求1所述的处理器,其特征在于,所述第一指令隐式地指定所述源数据操 作数。10. 如权利要求9所述的处理器,其特征在于,所述第一指令是推入缓冲器复制指令。11. 如权利要求9所述的处理器,其特征在于,所述第一指令隐式地将所述源数据操作 数指定为位于寄存器DS: [(E)SI]中或位于寄存器[RSI]中。12. 如权利要求1所述的处理器,其特征在于,所述第一指令是推入缓冲器复制指令。13. 如权利要求1所述的处理器,其特征在于,仅当最高的向量目的地元素位置被填充 时,从向量源操作数到相邻的顺序元素位置的对应的向量元素才在向量目的地偏移位置处 开始。14. 一种方法,包括: 在多线程处理器中执行第一硬件线程和第二硬件线程; 将高速缓存一致数据存储在针对可由所述第二硬件线程访问的共享存储器地址的高 速缓存的高速缓存行中; 解码第一指令,以便由所述第一硬件线程执行,所述第一指令指定源数据操作数、作为 目的地操作数的所述共享存储器地址以及所述共享存储器地址的一个或多个拥有者;以及 响应于对所述第一指令进行解码,当所述一个或多个拥有者包括所述第二硬件线程 时,将数据从所述源数据操作数复制所述高速缓存中的、针对可由所述第二硬件线程访问 的所述共享存储器地址的所述高速缓存行中的所述高速缓存一致数据中。15. 如权利要求14所述的方法,其特征在于,所述第一指令也指定所述目的地操作数 的高速缓存层级。16. 如权利要求14所述的方法,其特征在于,所述第一指令显式地将所述共享存储器 地址指定为目的地操作数。17. 如权利要求14所述的方法,其特征在于,所述第一指令隐式地将目的地操作数指 定为位于寄存器ES: [(E)DI]中或位于寄存器[RDI]中。18. 如权利要求14所述的方法,其特征在于,所述第一指令显式地将所述源数据操作 数指定为向量寄存器。19. 如权利要求14所述的方法,其特征在于,所述源数据操作数是与所述目的地操作 数相同的共享存储器地址。20. 如权利要求14所述的方法,其特征在于,所述第一指令隐式地将所述源数据操作 数指定为位于寄存器DS: [(E)SI]中或位于寄存器[RSI]中。21. -种机器可读介质,用于记录包括第一可执行指令的功能性描述素材,如果代表机 器的第一硬件线程来执行所述第一可执行指令,则所述第一可执行指令使所述机器用于: 每当由所述第一可执行指令指定的一个或多个拥有者包括第二硬件线程时,代表所述 第一硬件线程将数据从由所述第一可执行指令指定的源数据操作数复制到针对可由所述 第二硬件线程访问的共享存储器地址的高速缓存行中的高速缓存一致数据中。22. 如权利要求21所述的机器可读介质,其特征在于,所述功能性描述素材包括第二 可执行指令,如果代表机器的所述第二硬件线程来执行所述第二可执行指令时,则所述第 二可执行指令使所述机器用于: 然后,每当由所述第一可执行指令指定的所述一个或多个拥有者包括所述第二硬件线 程时,代表所述第二硬件线程访问来自所述共享存储器地址的高速缓存行中的高速缓存一 致数据中的被复制的数据,而不会导致高速缓存未命中。23. 如权利要求22所述的机器可读介质,其特征在于,所述第一可执行指令指定由所 述第一可执行指令指定的一个或多个拥有者的高速缓存层次结构中的所述共享存储器地 址的高速缓存行的高速缓存层级。24. 如权利要求23所述的机器可读介质,其特征在于,所述第一可执行指令显式地将 所述共享存储器地址指定为目的地操作数。25. 如权利要求24所述的机器可读介质,其特征在于,所述源数据操作数被指定为与 所述目的地操作数相同的共享存储器地址。26. 如权利要求24所述的机器可读介质,其特征在于,所述源数据操作数被指定为与 所述目的地操作数不同的共享存储器地址。27. 如权利要求23所述的机器可读介质,其特征在于,所述第一可执行指令显式地将 所述源数据操作数指定为向量寄存器。28. -种处理系统,包括: 存储器;以及 多个处理器,包括第一处理器核和第二处理器核,每个处理器包括: 高速缓存,用于将高速缓存一致数据存储在针对可由所述第二处理器核访问的共享存 储器地址的高速缓存行中; 解码级,用于解码第一指令,以便由所述第一处理器核执行,所述第一指令指定源数据 操作数、作为目的地操作数的所述共享存储器地址以及所述共享存储器地址的一个或多个 拥有者;以及 一个或多个执行单元,用于响应于被解码的第一指令: 当所述一个或多个拥有者包括所述第二处理器核时,将数据从所述源数据操作数复制 到所述高速缓存中的、针对可由所述第二处理器核访问的所述共享存储器地址的所述高速 缓存行中的所述高速缓存一致数据中。29. 如权利要求28所述的处理系统,其特征在于,所述第一指令也指定所述目的地操 作数的高速缓存层级。30. 如权利要求29所述的处理系统,其特征在于,所述第一指令显式地将所述源数据 操作数指定为向量寄存器。31. 如权利要求29所述的处理系统,其特征在于,所述源数据操作数被指定为与所述 目的地操作数相同的共享存储器地址。32. 如权利要求29所述的处理系统,其特征在于,所述源数据操作数被指定为与所述 目的地操作数不同的共享存储器地址。33. 如权利要求29所述的处理系统,其特征在于,所述共享存储器地址的所述一个或 多个拥有者被指定为由下列各项组成的组中的一个:自身的、全部共享的和物理核ID。34. 如权利要求29所述的处理系统,其特征在于,所述共享存储器地址的所述一个或 多个拥有者被指定为逻辑处理器的x2APICID。
【专利摘要】指令和逻辑提供推入缓冲器复制和存储功能。一些实施例包括:第一硬件线程或处理核以及第二硬件线程或处理核;高速缓存,用于将高速缓存一致数据存储在针对可由第二硬件线程或处理核访问的共享存储器地址的高速缓存行中。响应于对指定源数据操作数、作为目的地操作数的共享存储器地址和该共享存储器地址的一个或多个拥有者的指令进行解码,当该一个或多个拥有者包括第二硬件线程或处理核时,一个或多个执行单元将数据从源数据操作数复制到针对可由第二硬件线程或处理核访问的共享存储器地址的高速缓存行中的高速缓存一致数据中。
【IPC分类】G06F12/00, G06F9/38, G06F9/06
【公开号】CN104937539
【申请号】CN201380056430
【发明人】C·休斯, 金昌奎, D·金, V·李, J·S·朴
【申请人】英特尔公司
【公开日】2015年9月23日
【申请日】2013年6月30日
【公告号】DE112013004867T5, US20140149718, WO2014084919A1
当前第6页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1