CN104937539A - 用于提供推入缓冲器复制和存储功能的指令和逻辑 - Google Patents

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

Info

Publication number
CN104937539A
CN104937539A CN201380056430.9A CN201380056430A CN104937539A CN 104937539 A CN104937539 A CN 104937539A CN 201380056430 A CN201380056430 A CN 201380056430A CN 104937539 A CN104937539 A CN 104937539A
Authority
CN
China
Prior art keywords
instruction
processor
storage address
shared storage
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201380056430.9A
Other languages
English (en)
Other versions
CN104937539B (zh
Inventor
C·休斯
金昌奎
D·金
V·李
J·S·朴
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN104937539A publication Critical patent/CN104937539A/zh
Application granted granted Critical
Publication of CN104937539B publication Critical patent/CN104937539B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

指令和逻辑提供推入缓冲器复制和存储功能。一些实施例包括:第一硬件线程或处理核以及第二硬件线程或处理核;高速缓存,用于将高速缓存一致数据存储在针对可由第二硬件线程或处理核访问的共享存储器地址的高速缓存行中。响应于对指定源数据操作数、作为目的地操作数的共享存储器地址和该共享存储器地址的一个或多个拥有者的指令进行解码,当该一个或多个拥有者包括第二硬件线程或处理核时,一个或多个执行单元将数据从源数据操作数复制到针对可由第二硬件线程或处理核访问的共享存储器地址的高速缓存行中的高速缓存一致数据中。

Description

用于提供推入缓冲器复制和存储功能的指令和逻辑
相关申请的交叉引用
本申请涉及2010年11月29日提交的题为“用于流式缓冲器管理指令的方法和装置”(“Method and Apparatus for Stream Buffer ManagementInstructions”)的申请S/N.12/955,763。
技术领域
本公开涉及处理逻辑、微处理器以及相关联的指令集架构的领域,当由处理器或其他处理逻辑执行该指令集架构时,该指令集架构执行逻辑、数学或其他功能性操作。具体而言,本公开涉及用于提供推入缓冲器(pushing buffer)复制和存储功能的指令和逻辑。
背景技术
现代的诸多处理器通常包括提供计算密集性但提供高度的数据并行性的操作的指令,可通过使用诸如单指令多数据(SIMD)向量寄存器之类的各种数据存储设备的高效实现来利用该数据并行性。然后,中央处理单元(CPU)可提供并行硬件以支持处理向量。向量是保持多个连续数据元素的数据结构。尺寸为M的向量寄存器可包含N个尺寸为O的向量元素,,其中N=M/O。例如,可将64字节向量寄存器分割为:(a)64个向量元素,每个元素保持占用1字节的数据项;(b)32个向量元素,每个元素保持占用2字节(或一个“字”)的数据项;(c)16个向量元素,每个元素保持占用4字节(或一个“双字”)的数据项;或(d)8个向量元素,每个元素保持占用8字节(或一个“四字”)的数据项。
可在将多个核或硬件线程包括到一个或多个管芯上的多核或多线程处理器中看到通过利用并行化来提升性能的另一技术。多核和/或多线程处理器对诸如web服务器之类的吞吐量驱动应用是有利的,但是,利用几乎独立的代码区在分开的处理器上运行的适用性并不总是有助于具有大量要执行的显著序列化任务的通用应用。
最近探索的替代方式是使用流水线并行化,其中,将每一个循环迭代拆分成多个级,并且硬件线程可在来自不同迭代的不同级上同时操作。按这种方式,迭代i的前一级充当迭代i的下一级的消费者的生产者,并且当一个硬件线程在迭代i的下一级上操作时,另一硬件线程同时在迭代i+1的前一级上操作。由此,将串行软件过程排成从硬件线程到硬件线程的队列,并且该串行软件过程可利用多核和/或多线程处理器的并行性。
流水线并行性的缺点之一在于:在现代多核处理器的多层级的高速缓存层次结构中正在被进行队列操作的多个核之间共享数据可能导致显著的性能延迟,并且可能造成一致性业务量、用电和能耗方面代价高昂的增加。
一些提出的解决方案引入一种不具有一致性支持的消息传递架构和/或软件管理存储器以避免内置的高速缓存一致性通过将负担置于软件上而在业务量、功率要求和能耗方面有所增加。一个缺点可能是将大量开发和维护的工作量增加到了软件编程者的责任中。
到目前为止,尚未充分探索针对此类性能受限问题、高能耗担忧以及其他瓶颈的潜在解决方案。
附图说明
在所附附图的多个图中以示例方式而非限制方式示出本发明。
图1A是执行用于提供推入缓冲器复制和存储功能的指令的系统的一个实施例的框图。
图1B是执行用于提供推入缓冲器复制和存储功能的指令的系统的另一实施例的框图。
图1C是执行用于提供推入缓冲器复制和存储功能的指令的系统的又一实施例的框图。
图2是执行用于提供推入缓冲器复制和存储功能的指令的处理器的一个实施例的框图。
图3A示出根据一个实施例的紧缩数据类型。
图3B示出根据一个实施例的紧缩数据类型。
图3C示出根据一个实施例的紧缩数据类型。
图3D示出根据一个实施例的用于提供推入缓冲器复制和存储功能的指令编码。
图3E示出根据另一实施例的用于提供推入缓冲器复制和存储功能的指令编码。
图3F示出根据另一实施例的用于提供推入缓冲器复制和存储功能的指令编码。
图3G示出根据另一实施例的用于提供推入缓冲器复制和存储功能的指令编码。
图3H示出根据另一实施例的用于提供推入缓冲器复制和存储功能的指令编码。
图4A示出用于执行提供推入缓冲器复制和存储功能的指令的处理器微架构的一个实施例的诸要素。
图4B示出用于执行提供推入缓冲器复制和存储功能的指令的处理器微架构的另一实施例的诸要素。
图5是用于执行提供推入缓冲器复制和存储功能的指令的处理器的一个实施例的框图。
图6是用于执行提供推入缓冲器复制和存储功能的指令的计算机系统的一个实施例的框图。
图7是用于执行提供推入缓冲器复制和存储功能的指令的计算机系统的另一实施例的框图。
图8是用于执行提供推入缓冲器复制和存储功能的指令的计算机系统的另一实施例的框图。
图9是用于执行提供推入缓冲器复制和存储功能的指令的芯片上系统的一个实施例的框图。
图10是用于执行提供推入缓冲器复制和存储功能的指令的处理器的实施例的框图。
图11是提供推入缓冲器复制和存储功能的IP核开发系统的一个实施例的框图。
图12示出提供推入缓冲器复制和存储功能的架构仿真系统的一个实施例。
图13示出用于转换提供推入缓冲器复制和存储功能的指令的系统的一个实施例。
图14示出用于使用用于提供推入缓冲器复制和存储功能的指令的系统的一个实施例的流程图。
图15示出用于使用用于提供推入缓冲器复制和存储功能的指令的系统的另一实施例的流程图。
图16示出用于提供推入缓冲器复制和存储功能的过程的一个实施例的流程图。
图17示出用于提供推入缓冲器复制和存储功能的过程的替代实施例的流程图。
图18示出用于提供推入缓冲器复制和存储功能的过程的另一实施例的流程图。
具体实施方式
以下描述公开了用于在处理器、计算机系统或其他处理装置中,或结合处理器、计算机系统或其他处理装置提供推入缓冲器复制和存储功能的指令和处理逻辑。
本文所公开的指令和逻辑用于提供推入缓冲器复制和存储功能。一些实施例包括:第一硬件线程或处理核以及第二硬件线程或处理核;高速缓存,用于将高速缓存一致(cache coherent)数据存储在针对可由第二硬件线程或处理核访问的共享存储器地址的高速缓存行中。响应于对指定源数据操作数、作为目的地操作数的所述共享存储器地址和所述共享存储器地址的一个或多个拥有者(owner)的指令进行解码,当所述一个或多个拥有者包括所述第二硬件线程或处理核时,一个或多个执行单元将数据从源数据操作数复制到针对可由所述第二硬件线程或处理核访问的所述共享存储器地址的高速缓存行中的高速缓存一致数据中。
将会理解,如本文中多个实施例中所述,可将SIMD推入缓冲器复制和/或存储指令用于在多个应用中(例如,在多核流水线并行软件应用中)提供推入缓冲器复制和推入缓冲器存储功能,进而减少共享存储器高速缓存层次结构中的一致性业务量,增加性能和指令吞吐量,并且减少用电和能耗。一些实施例可提供目的地存储器地址的硬件线程、逻辑处理器或处理核拥有者以包括诸如自身的、全部共享的或物理核ID(例如,逻辑处理器的第二扩展高级可编程中断控制器(x2APIC)标识符(ID))之类的多个规格。一些实施例也可提供目的地高速缓存的(destination cached)存储器地址的高速缓存层级以包括诸如第一级高速缓存(L1$)、第二级高速缓存(L2$)、…、末级高速缓存(LL$)或主存储器之类的多个规格。在一些实施例中,可将存储器地址指定为用于提供推入缓冲器复制和存储功能的指令的显式操作数。在一些替代实施例中,可隐式地将存储器地址指定为例如分别位于x86寄存器ES:[(E)DI]和DS:[(E)SI]中,或分别位于寄存器[RDI]和[RSI]中,或分别位于其他寄存器中。在一些实施例中,可将缓冲器的尺寸指定为向量寄存器的尺寸,例如,64位、128位、256位、512位等;或指定为目的地高速缓存中高速缓存行的尺寸;或指定为在寄存器中(例如,在x86寄存器(E)CX中或在寄存器RCX中)被隐式地指定的尺寸。
将会理解,如本文所述的多个实施例中所述,SIMD推入缓冲器复制和/或存储指令提供推入缓冲器复制和/或存储功能,这些指令允许硬件线程、逻辑处理器或处理器核将数据缓冲器(例如,向量寄存器的尺寸)复制或存储到硬件线程、逻辑处理器或处理核的高速缓存中,而将高速缓存行中的高速缓存一致数据的所有权留给该硬件线程、逻辑处理器或处理器核拥有者以避免导致高速缓存未命中。对于一些实施例,可将SIMD推入缓冲器复制指令解码为未被分配的加载操作(例如,微操作,也称为微op或uop)和推入存储操作。在此类实施例中,响应于该未被分配的加载操作,可利用高速缓存控制逻辑而不分配(或可能伴随未分配的)高速缓存行来将数据从存储器源数据操作数加载到数据缓冲器(例如,64位、128位、256位、512位等的向量寄存器)中。响应于该推入存储操作,可将消息从一个处理核的消息收发逻辑发送到另一处理核的消息收发逻辑,并且可将数据存储在数据缓冲器中以用于将数据缓冲器推入存储到硬件线程、逻辑处理器或处理器核的高速缓存中,将高速缓存行中的高速缓存一致数据的所有权留给该硬件线程、逻辑处理器或处理器核拥有者以避免导致高速缓存未命中。对于一些替代实施例,例如当向量寄存器是所指定的源数据操作数时,可将SIMD推入缓冲器存储指令解码为仅推入存储操作。对于其他替代实施例,在推入存储操作中可不涉及目的地存储器地址的硬件线程、逻辑处理器或处理器核拥有者来实现SIMD推入缓冲器存储和/或存储指令,例如,直接利用所指定的层次结构层级上的高速缓存控制逻辑。
在以下描述中,陈述了诸如处理逻辑、处理器类型、微架构条件、事件、启用机制等众多特定细节,以提供对本发明实施例的更透彻理解。然而,本领域技术人员应当领会,没有这些具体细节也可实施本发明。此外,没有详细示出一些公知的结构、电路等,以避免不必要地使本发明的多个实施例模糊。
虽然参照处理器来描述下列多个实施例,但是其他实施例也适用于其他类型的集成电路和逻辑设备。本发明的实施例的类似技术和教导可应用于可受益于更高的流水线吞吐量和改善的性能的其他类型的电路或半导体器件。本发明的多个实施例的教导适用于执行数据操纵的任何处理器或机器。然而,本发明不限于执行512位、256位、128位、64位、32位、或16位数据运算的处理器或机器,并可适用于执行数据操纵或管理的任何处理器和机器。此外,下述描述提供了示例,并且附图出于示意性目的示出各种示例。然而,这些示例不应该被理解为具有限制性意义,因为它们仅仅旨在提供本发明的多个实施例的示例,而并非对本发明的多个实施例的所有可能的实现方式进行穷举。
虽然下述的示例描述了在执行单元和逻辑电路的情境中的指令处理和分配,但是也可通过存储在机器可读有形介质上的数据和/或指令来完成本发明的其他实施例,这些数据和/或指令在由机器执行时使得该机器执行与本发明的至少一个实施例相一致的功能。在一个实施例中,与本发明的多个实施例相关联的功能被具体化在机器可执行指令中。这些指令可用来使通过这些指令而被编程的通用处理器或专用处理器执行本发明的步骤。本发明的多个实施例也可以作为计算机程序产品或软件来提供,该计算机程序产品或软件可包括其上存储有指令的机器或计算机可读介质,这些指令可被用来对计算机(或其他电子设备)进行编程以执行根据本发明的多个实施例的一个或多个操作。或者,本发明的多个实施例的多个步骤可由包含用于执行这些步骤的固定功能逻辑的专用硬件组件来执行,或由经编程的计算机组件以及固定功能硬件组件的任何组合来执行。
可将用于对逻辑进行编程以执行本发明的多个实施例的指令存储在系统中的存储器中(诸如,DRAM、高速缓存、闪存、或其他存储设备)内。此外,指令可经由网络或通过其他计算机可读介质来分配。因此,计算机可读介质可包括用于以机器(例如,计算机)可读的形式存储或发送信息的任何机制,但不限于:软盘、光盘、紧致盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或在经由互联网通过电、光、声、或其他形式的传播信号(例如,载波、红外信号、数字信号等)发送信息中所用的有形机器可读存储器。因此,计算机可读介质包括适用于存储或发送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
设计会经历多个阶段,从创建到仿真到制造。表示设计的数据可用多种方式来表示该设计。首先,像仿真中有用的那样,可使用硬件描述语言或另一功能性描述语言来表示硬件。此外,可在设计过程的一些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在某个阶段都达到表示硬件模型中各种设备的物理布置的数据的层级。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于制造集成电路的掩模的不同掩模层上存在或不存在各种特征的数据。在任何设计表示中,数据可被存储在任何形式的机器可读介质中。存储器或磁或光存储设备(诸如,盘)可以是存储信息的机器可读介质,这些信息是经由光或电波来发送的,调制或以其他方式生成这些光或电波以传送这些信息。当发送指示或承载代码或设计的电载波达到实现该电信号的复制、缓冲或重新发送的程度时,即产生了新的副本。因此,通信提供商或网络提供商可在有形的机器可读介质上至少临时地存储具体化本发明的多个实施例的技术的制品(诸如,被编码成载波的信息)。
在现代处理器中,将多个不同的执行单元用于处理和执行各种代码和指令。并不是所有指令都被同等地创建,因为一些指令更快地完成而其他指令可能需要多个时钟周期来完成。指令的吞吐量越快,则处理器的总体性能越好。因此,使许多指令尽可能快地执行将会是有利的。然而,存在具有更大的复杂度,并在执行时间和处理器资源方面要求更多的某些指令。例如,存在浮点指令、加载/存储操作、数据移动等。
因为更多的计算机系统被用于互联网、文本以及多媒体应用,所以已逐渐地引进了附加的处理器支持。在一个实施例中,指令集可与一个或多个计算机架构相关联,一个或多个计算机架构包括:数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理以及外部输入和输出(I/O)。
在一个实施例中,指令集架构(ISA)可由一个或更多微架构来执行,微架构包括用于实现一个或多个指令集的处理器逻辑和电路。因此,具有不同微架构的多个处理器可共享公共指令集的至少一部分。例如,奔腾四(Pentium 4)处理器、酷睿(CoreTM)处理器、以及来自加利福尼亚州桑尼威尔(Sunnyvale)的超微半导体有限公司(Advanced Micro Devices,Inc.)的多个处理器执行几乎相同版本的x86指令集(在更新的版本中加入了一些扩展),但具有不同的内部设计。类似地,由其他处理器开发公司(诸如,ARM控股有限公司、MIPS或它们的授权方或兼容方)设计的多个处理器可共享至少一部分公共指令集,但可包括不同的处理器设计。例如,ISA的相同寄存器架构在不同的微架构中可使用新的或公知的技术以不同方法来实现,包括专用物理寄存器、使用寄存器重命名机制(例如,使用寄存器别名表(RAT)、重排序缓冲器(ROB)以及引退寄存器组)的一个或多个动态分配物理寄存器。在一个实施例中,寄存器可包括:可由软件编程者寻址或不可由软件编程者寻址的一个或多个寄存器、寄存器架构、寄存器组、或其他寄存器集合。
在一个实施例中,指令可包括一个或多个指令格式。在一个实施例中,指令格式可指示多个字段(位的数目、位的位置等)以指定将要被执行的操作以及将要被执行的操作的操作数等。一些指令格式可进一步由指令模板(或子格式)细分定义。例如,给定指令格式的指令模板可被定义为具有指令格式字段的不同的子集,和/或被定义为具有以不同方式进行解释的给定字段。在一个实施例中,使用指令格式(并且,如果定义过,则以该指令格式的给定的指令模板中的一个)来表示指令,并且该指令指定或指示操作以及该操作将操作的操作数。
科学应用、金融应用、自动向量化通用应用、RMS(识别、挖掘和合成)应用以及视觉和多媒体应用(例如,2D/3D图形、图像处理、视频压缩/解压缩、语音识别算法和音频处理)可能需要对大量数据项执行相同的操作。在一个实施例中,单指令多数据(SIMD)指的是使得处理器对多个数据元素执行一个操作的指令类型。可将SIMD技术用于可将寄存器中的多个位逻辑地划分为固定尺寸或可变尺寸的数据元素(每个数据元素表示单独的值)的处理器中。例如,在一个实施例中,可将64位寄存器中的多个位组织为包含四个单独的16位数据元素的源操作数,每个数据元素表示单独的16位的值。该数据类型可被称为紧缩数据类型或向量数据类型,并且该数据类型的操作数被称为紧缩数据操作数或向量操作数。在一个实施例中,紧缩数据项或向量可以是存储在单个寄存器中的紧缩数据元素的序列,并且紧缩数据操作数或向量操作数可以是SIMD指令(或“紧缩数据指令”或“向量指令”)的源操作数或目的地操作数。在一个实施例中,SIMD指令指定了将要对两个源向量操作数执行以生成具有相同或不同尺寸的、具有相同或不同数量的数据元素的、具有相同或不同数据元素顺序的目的地向量操作数(也被称为结果向量操作数)的单个向量操作。
诸如由酷睿(CoreTM)处理器(具有包括x86、MMXTM、流SIMD扩展(SSE)、SSE2、SSE3、SSE4.1、SSE4.2指令的指令集)、ARM处理器(诸如,ARM 处理器族,具有包括向量浮点(VFP)和/或NEON指令的指令集)和MIPS处理器(诸如,中国科学院计算机技术研究所(ICT)开发的龙芯处理器族)所采用的SIMD技术之类的SIMD技术在应用性能上带来了极大的提高(CoreTM和MMXTM是加利福尼亚州圣克拉拉市的英特尔公司的注册商标或商标)。
在一个实施例中,目的地寄存器/数据和源寄存器/数据是表示对应数据或操作的源和目的地的通用术语。在一些实施例中,它们可由寄存器、存储器或具有与所描绘的那些名称或功能不同的名称或功能的其他存储区域来实现。例如,在一个实施例中,“DEST1”可以是临时存储寄存器或其他存储区域,而“SRC1”和“SRC2”可以是第一和第二源存储寄存器或其他存储区域,等等。在其他实施例中,SRC和DEST存储区域中的两个或更多可对应于相同存储区域中的不同数据存储元素(例如,SIMD寄存器)。在一个实施例中,通过例如将对第一和第二源数据执行的操作的结果写回至两个源寄存器中作为目的地寄存器的那个寄存器,源寄存器中的一个也可以作为目的地寄存器。
图1A是根据本发明的一个实施例的示例性计算机系统的框图,该计算机系统被形成为具有包括用于执行指令的执行单元的处理器。根据本发明,诸如根据在此所描述的实施例,系统100包括诸如处理器102之类的组件,该处理器102用于使用包括逻辑的执行单元以执行算法来处理数据。系统100代表基于可从美国加利福尼亚州圣克拉拉市的英特尔公司获得的 XeonTMXScaleTM和/或StrongARMTM微处理器的处理系统,不过也可使用其他系统(包括具有其他微处理器的PC、工程工作站、机顶盒等)。在一个实施例中,样本系统100可执行可从美国华盛顿州雷蒙德市的微软公司获得的WINDOWSTM操作系统的一个版本,不过也可使用其他操作系统(例如,UNIX和Linux)、嵌入式软件、和/或图形用户界面。因此,本发明的各实施例不限于硬件电路和软件的任何具体组合。
实施例不限于计算机系统。本发明的替代实施例可用于其他设备,诸如手持式设备和嵌入式应用。手持设备的一些示例包括蜂窝电话、网际协议设备、数码相机、个人数字助理(PDA)以及手持PC。嵌入式应用可包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机、或可执行根据至少一个实施例的一条或多条指令的任何其他系统。
图1A是计算机系统100的框图,计算机系统100被形成为具有处理器102,处理器102包括一个或多个执行单元108用于执行算法,从而执行根据本发明的一个实施例的至少一条指令。可在单处理器桌面或服务器系统的情境中描述一个实施例,但是可将替代实施例包括在多处理器系统中。系统100是“中枢”系统架构的示例。计算机系统100包括用于处理数据信号的处理器102。处理器102可以是复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现多个指令集组合的处理器或任意其他处理器设备(例如,数字信号处理器)。处理器102耦合至处理器总线110,该处理器总线可在处理器102和系统100内的其他组件之间传输数据信号。系统100的多个要素执行本领域所熟知的常规功能。
在一个实施例中,处理器102包括第一级(L1)内部高速缓存存储器104。取决于架构,处理器102可具有单个内部高速缓存或多级内部高速缓存。或者,在另一个实施例中,高速缓存存储器可驻留在处理器102的外部。其他实施例也可包括内部高速缓存和外部高速缓存的组合,这取决于特定实现和需求。寄存器组106可将不同类型的数据存储有在各种寄存器(包括整数寄存器、浮点寄存器、状态寄存器、指令指针寄存器)中。
执行单元108(包括用于执行整数和浮点操作的逻辑)也驻留在处理器102中。处理器102还包括存储用于特定宏指令的微代码(ucode)ROM。对于一个实施例,执行单元108包括用于处理紧缩指令集109的逻辑。通过将紧缩指令集109包括在通用处理器102的指令集内并包括用于执行这些指令的相关的电路,可使用通用处理器102中的紧缩数据来执行由许多多媒体应用使用的操作。因此,通过将处理器数据总线的完整宽度用于执行对紧缩数据进行操作,可加速并更高效地执行许多多媒体应用。这能消除横跨处理器数据总线传输更小数据单元以便一次对一个数据元素执行一个或多个操作的需求。
执行单元108的替代实施例也可被用于微控制器、嵌入式处理器、图形设备、DSP以及其他类型的逻辑电路。系统100包括存储器120。存储器120可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备或其他存储器设备。存储器120可存储由可由处理器102执行的数据信号来表示的指令和/或数据。
系统逻辑芯片116耦合至处理器总线110和存储器120。在所示出的实施例中的系统逻辑芯片116是存储器控制器中枢(MCH)。处理器102可经由处理器总线110与MCH 116通信。MCH 116提供至存储器120的高带宽存储器路径118,用于指令和数据存储,以及用于存储图形命令、数据和纹理。MCH116用于引导处理器102、存储器120以及系统100内的其他组件之间的数据信号,并在处理器总线110、存储器120和系统I/O 122之间桥接该数据信号。在一些实施例中,系统逻辑芯片116可提供耦合至图形控制器112的图形端口。MCH 116经由存储器接口118耦合至存储器120。图形卡112通过加速图形端口(AGP)互连114耦合至MCH 116。
系统100使用专用中枢接口总线122以将MCH 116耦合至I/O控制器中枢(ICH)130。ICH 130经由本地I/O总线向一些I/O设备提供直接连接。本地I/O总线是高速I/O总线,用于将外围设备连接至存储器120、芯片组以及处理器102。一些示例是音频控制器、固件中枢(闪存BIOS)128、无线收发机126、数据存储设备124、包括用户输入和键盘接口的传统I/O控制器、串行扩展端口(诸如通用串行总线(USB))以及网络控制器134。数据存储设备124可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备、或其他大容量存储设备。
对于系统的另一实施例,可将根据一个实施例的指令与芯片上系统一起使用。芯片上系统的一个实施例包括处理器和存储器。用于一个此类系统的存储器是闪存存储器。闪存存储器可位于与处理器和其他系统组件相同的管芯上。此外,诸如存储器控制器或图形控制器之类的其他逻辑块也可位于芯片上系统上。
图1B示出数据处理系统140,该数据处理系统140实现本发明的一个实施例的原理。本领域的技术人员将容易理解,本文描述的多个实施例可用于替代的处理系统,而不背离本发明的多个实施例的范围。
计算机系统140包括能够执行根据一个实施例的至少一条指令处理核159。对于一个实施例,处理核159表示任何类型的架构(包括但不限于,CISC、RISC或VLIW类型架构)的处理单元。处理核159也可适于以一种或多种处理技术来制造,并且通过足够详细地表示在机器可读介质上可适用于促进所述制造。
处理核159包括执行单元142、寄存器组145的集合以及解码器144。处理核159也包括对于理解本发明的多个实施例不是必需的附加电路(没有示出)。执行单元142用于执行处理核159接收到的指令。除了执行典型的处理器指令外,执行单元142也可执行紧缩指令集143中的指令,以便执行对紧缩数据格式进行的操作。紧缩指令集143包括用于执行本发明的多个实施例的指令以及其他紧缩指令。执行单元142通过内部总线耦合至寄存器组145。寄存器组145表示处理核159上用于存储包括数据的信息的存储区域。如前文所述,可以理解,将该存储区域用于存储紧缩数据并不是关键的。执行单元142耦合至解码器144。解码器144用于将处理核159接收到的指令解码为控制信号和/或微代码进入点。响应于这些控制信号和/或微代码进入点,执行单元142执行合适的操作。在一个实施例中,将解码器用于解释指令的操作码,该操作码将指示应当对该指令内所指示的对应数据执行什么操作。
处理核159耦合至总线141,用于与各种其他系统设备进行通信,其他系统设备可包括但不限于:例如,同步动态随机存取存储器(SDRAM)控制器146、静态随机存取存储器(SRAM)控制器147、猝发闪存接口148、个人计算机存储卡国际协会(PCMCIA)/紧致闪存(CF)卡控制器149、液晶显示器(LCD)控制器150、直接存储器存取(DMA)控制器151、以及替代的总线主接口152。在一个实施例中,数据处理系统140也可包括I/O桥154,用于经由I/O总线153与各种I/O设备进行通信。此类I/O设备可包括但不限于:例如,通用异步接收机/发射机(UART)155、通用串行总线(USB)156、蓝牙无线UART 157、以及I/O扩展接口158。
数据处理系统140的一个实施例提供了移动通信、网络通信和/或无线通信,并提供了能够执行包括文本串比较操作的SIMD操作的处理核159。可利用各种音频、视频、成像和通信算法对处理核159进行编程,这些算法包括:离散变换(诸如Walsh-Hadamard变换、快速傅立叶变换(FFT)、离散余弦变换(DCT)以及它们相应的逆变换);压缩/解压缩技术(例如,色彩空间变换、视频编码运动估计或视频解码运动补偿);以及调制/解调(MODEM)功能(例如,脉冲编码调制(PCM))。
图1C示出能够执行用于提供推入缓冲器复制和存储功能的指令的数据处理系统的另一些替代实施例。根据一个替代实施例,数据处理系统160可包括主处理器166、SIMD协处理器161、高速缓存处理器167以及输入/输出系统168。输入/输出系统168可以可选地耦合至无线接口169。SIMD协处理器161能够执行包括根据一个实施例的指令的操作。处理核170可适用于以一种或多种处理技术来制造,并且通过足够详细地表示在机器可读介质上,可适用于促进包括处理核170的数据处理系统160的全部或部分的制造。
对于一个实施例,SIMD协处理器161包括执行单元162以及一组寄存器组164。主处理器166的一个实施例包括解码器165,该解码器165用于识别包括根据一个实施例的、用于由执行单元162执行的指令的指令集163中的多条指令。对于替代实施例,SIMD协处理器161也包括用于对指令集163中的多条指令进行解码的解码器165B的至少部分。处理核170也包括对于理解本发明的实施例不是必需的附加电路(没有示出)。
在操作中,主处理器166执行控制通用类型的数据处理操作(包括与高速缓存存储器167和输入/输出系统168之间的交互)的数据处理指令流。SIMD协处理器指令被嵌入到该数据处理指令流中。主处理器166的解码器165将这些SIMD协处理器指令识别为应当由附连的SIMD协处理器161来执行的类型。因此,主处理器166在协处理器总线171上发布这些SIMD协处理器指令(或表示SIMD协处理器指令的控制信号),由任何附连的SIMD协处理器从该协处理器总线171接收到这些指令。在这种情况下,SIMD协处理器161将接受并执行任何接收到的针对该SIMD协处理器的SIMD协处理器指令。
可经由无线接口169接收数据以通过SIMD协处理器指令进行处理。对于一个示例,能以数字信号的形式接收到语音通信,可由SIMD协处理器指令处理该数字信号以便重新生成表示该语音通信的数字音频样本。对于另一个示例,能以数字位流的形式接收到被压缩的音频和/或视频,可由SIMD协处理器指令处理该数字位流以便重新生成音频样本和/或运动视频帧。对于处理核170的一个实施例,主处理器166和SIMD协处理器161被集成在单个处理核170中,该单个处理核170包括执行单元162、一组寄存器组164以及用于识别包括根据一个实施例的多条指令的指令集163中的多条指令的解码器165。
图2是处理器200的微架构的框图,该处理器200包括用于执行根据本发明的一个实施例的指令的逻辑。在一些实施例中,可将根据一个实施例的指令实现为对具有字节尺寸、字尺寸、双字尺寸、四字尺寸等并具有诸多数据类型(例如,单精度和双精度整数和浮点数据类型)的数据元素进行操作。在一个实施例中,有序前端201是处理器200的部分,该部分取出要被执行的指令,并准备这些指令以便稍后在处理器流水线中使用。前端201可包括若干单元。在一个实施例中,指令预取器226从存储器取出指令,并将指令馈送至指令解码器228,指令解码器228随后解码或解释这些指令。例如,在一个实施例中,该解码器将接收到的指令解码为机器可执行的、被称为“微指令”或“微操作”(也称为微op或uop)的一个或多个操作。在其他实施例中,该解码器将指令解析为可由微架构用于执行根据一个实施例的多个操作的操作码以及对应的数据和控制字段。在一个实施例中,追踪高速缓存230接受经解码的微操作,并将它们组合为程序有序序列或uop队列234中的踪迹,以用于执行。当追踪高速缓存230遇到复杂指令时,微代码ROM 232提供完成操作所需的uop。
一些指令被转换为单个微op,而其他指令需要若干个微op以完成完整的操作。在一个实施例中,如果需要多于四个微op来完成指令,则解码器228访问微代码ROM 232以执行该指令。对于一个实施例,可将指令解码为少量的微op,以便在指令解码器228处进行处理。在另一实施例中,如果需要多个微op来完成操作,则可将指令存储在微代码ROM 232中。追踪高速缓存230参考进入点可编程逻辑阵列(PLA)来确定正确的微指令指针,以从微代码ROM 232中读取微代码序列来完成根据一个实施例的一条或多条指令。在微代码ROM 232完成对指令的微op进行的序列化操作之后,该机器的前端201恢复从追踪高速缓存230中提取微op。
无序执行引擎203是准备指令以进行执行的地方。无序执行逻辑具有多个缓冲器,这些缓冲器用于使指令流平滑并且重排序该指令流,以优化指令流往下进入流水线并且被调度以供执行时的性能。分配器逻辑分配每个微op需要的机器缓冲器和资源以用于执行。寄存器重命名逻辑将多个逻辑寄存器重命名为寄存器组中的多个条目。在指令调度器(存储器调度器、快速调度器202、慢速/通用浮点调度器204和简单浮点调度器206)之前,分配器也为两个uop队列(一个uop队列用于存储器操作,另一个uop队列用于非存储器操作)中的一个队列中的每个uop分配条目。uop调度器202、204、206基于对它们的从属输入寄存器操作数源的准备状态以及微操作完成其操作所需的执行资源的可用性来确定uop何时就绪用于执行。一个实施例中的快速调度器202可在主时钟周期的每半个上进行调度,而其他调度器可在每个主处理器时钟周期上仅调度一次。调度器对分配端口进行仲裁以调度uop以便执行。
在执行块211中,寄存器组208和210位于调度器202、204和206以及执行单元212、214、216、218、220、222和224之间。也存在单独的寄存器组208、210,分别用于整数和浮点操作。一个实施例中的每个寄存器组208、210也包括旁路网络,该旁路网络可绕开还未被写入到寄存器组中的、刚完成的结果或将这些结果转发到新的从属uop中。整数寄存器组208和浮点寄存器组210也能够彼此传递数据。对于一个实施例,将整数寄存器组208划分为两个单独的寄存器组,一个寄存器组用于低阶的32位数据,第二个寄存器组用于高阶的32位数据。一个实施例中的浮点寄存器组210具有128位宽的条目,因为浮点指令通常具有从64至128位宽度的操作数。
执行块211包括执行单元212、214、216、218、220、222和224,实际在这些执行单元中执行指令。该区块包括存储微指令执行所需要的整数和浮点数据操作数值的寄存器组208和210。一个实施例中的处理器200包括多个执行单元:地址生成单元(AGU)212、AGU 214、快速ALU 216、快速ALU 218、慢速ALU 220、浮点ALU 222和浮点移动单元224。对于一个实施例,浮点执行块222和224执行浮点、MMX、SIMD、SSE以及其他操作。一个实施例中的浮点ALU 222包括用于执行除法、平方根和余数微op的64位/64位的浮点除法器。对于本发明的多个实施例,可利用浮点硬件来处理涉及浮点值的指令。在一个实施例中,ALU操作去往高速ALU执行单元216和218。一个实施例中的快速ALU 216和218可执行有效等待时间为半个时钟周期的快速操作。对于一个实施例,大多数复杂整数操作去往慢速ALU 220,因为慢速ALU 220包括用于长等待时间类型操作的整数执行硬件,例如,乘法器、移位器、标记逻辑和分支处理设备。存储器加载/存储操作由AGU 212和214来执行。对于一个实施例,在对64位的数据操作数执行整数操作的情境中描述整数ALU216、218和220。在替代实施例中,可实现ALU 216、218和220以支持包括16、32、128、256等各种数据位。类似地,可实现浮点单元222和224以支持具有各种位宽的一系列操作数。对于一个实施例,浮点单元222和224可结合SIMD和多媒体指令,对128位宽度紧缩数据操作数进行操作。
在一个实施例中,在父加载完成执行之前,uop调度器202、204和206就分派从属操作。由于在处理器200中推测性地调度并执行uop,因此处理器200也包括用于处理存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则在流水线中会存在带着临时不正确的数据离开调度器的运行中的从属操作。重放机制跟踪并重新执行使用不正确数据的指令。仅仅从属操作需要被重放,而允许独立操作完成。处理器的一个实施例中的调度器和重放机制也被设计为用于捕捉提供推入缓冲器复制和存储功能的指令。
术语“寄存器”指代被用作指令的一部分以标识操作数的板上处理器存储位置。换句话说,寄存器可以是那些从处理器外部(从编程者的角度来看)可用的那些。然而,实施例中的寄存器不限于表示特定类型的电路。相反,实施例中的寄存器能够存储并提供数据,并且执行本文中所述的功能。可由处理器中的电路使用任何数量的不同技术来实现本文中所述的寄存器,例如,专用物理寄存器、使用寄存器重命名的动态分配物理寄存器,以及专用和动态分配物理寄存器的组合等。在一个实施例中,整数寄存器存储32位的整数数据。一个实施例中的寄存器组也包含八个用于紧缩数据的多媒体SIMD寄存器。对于以下讨论,应当将寄存器理解为设计成用于保持紧缩数据的数据寄存器,诸如来自美国加利福尼亚州圣克拉拉市的英特尔公司的启用了MMX技术的微处理器中的64位宽的MMXTM寄存器(在一些实例中也称为‘mm’寄存器)。”这些MMX寄存器(可用在整数和浮点格式中)可与伴随SIMD和SSE指令的紧缩数据元素一起操作。类似地,涉及SSE2、SSE3、SSE4或更新的技术(统称为“SSEx”)的128位宽XMM寄存器也可被用于保持这样紧缩数据操作数。在一个实施例中,在存储紧缩数据和整数数据时,寄存器不需要区分这两类数据类型。在一个实施例中,整数和浮点数据可被包括在相同的寄存器组中,或被包括在不同的寄存器组中。此外,在一个实施例中,浮点和整数数据可被存储在不同的寄存器中,或被存储在相同的寄存器中。
在下述附图的示例中,描述了多个数据操作数。图3A示出了根据本发明一个实施例的多媒体寄存器中的各种紧缩数据类型表示。图3A示出用于128位宽操作数的紧缩字节310、紧缩字320以及紧缩双字(dword)330的数据类型。本示例的紧缩字节格式310是128位长,并且包含十六个紧缩字节数据元素。字节在此被定义为8位数据。每一个字节数据元素的信息被存储为:对于字节0存储在位7到位0,对于字节1存储在位15到位8,对于字节2存储在位23到位16,最后对于字节15存储在位120到位127。因此,在该寄存器中使用了所有可用的位。该存储配置提高了处理器的存储效率。同样,因为访问了十六个数据元素,所以现在可并行地对十六个数据元素执行一个操作。
通常,数据元素是与具有相同长度的其他数据元素一起被存储在单个寄存器或存储器位置中的、单独的数据片。在涉及SSEx技术的紧缩数据序列中,存储在XMM寄存器中的数据元素的数目是128位除以单独的数据元素的位长。类似地,在涉及MMX和SSE技术的紧缩数据序列中,存储在MMX寄存器中的数据元素的数目是64位除以单独的数据元素的位长。虽然图3A中所示的数据类型是128位长,但本发明的多个实施例也可操作64位宽、256位宽、512位宽或其他尺寸的操作数。本示例中的紧缩字格式320是128位长,并且包含八个紧缩字数据元素。每个紧缩字包含十六位的信息。图3A的紧缩双字格式330是128位长,并且包含四个紧缩双字数据元素。每个紧缩双字数据元素包含三十二位的信息。紧缩四字是128位长,并包含两个紧缩四字数据元素。
图3B示出替代的寄存器内数据存储格式。每个紧缩数据可包括多于一个的独立数据元素。示出了三种紧缩数据格式:紧缩半数据元素341、紧缩单数据元素342和紧缩双数据元素343。紧缩半数据元素341、紧缩单数据元素342和紧缩双数据元素343的一个实施例包含固定点数据元素。对于替代实施例,紧缩半数据元素341、紧缩单数据元素342和紧缩双数据元素343中的一个或多个可包含浮点数据元素。紧缩半数据元素341的一个替代实施例是一百二十八位长的,并且包含八个16位数据元素。紧缩单数据元素342的一个替代实施例是一百二十八位长的,并且包含四个32位数据元素。紧缩双数据元素343的一个实施例是一百二十八位长的,并且包含两个64位数据元素。将会理解,可进一步将此类紧缩数据格式扩展至其他寄存器长度,例如,96位、160位、192位、224位、256位、512位或更长。
图3C示出了根据本发明的一个实施例的多媒体寄存器中的各种有符号和无符号紧缩数据类型表示。无符号紧缩字节表示344示出将无符号紧缩字节存储在SIMD寄存器中。每一个字节数据元素的信息被存储为:对于字节0存储在位7到位0,对于字节1存储在位15到位8,对于字节2存储在位23到位16,等等,最后对于字节15存储在位120到位127。因此,在该寄存器中使用了所有可用的位。该存储安排可提高处理器的存储效率。同样,因为访问了十六个数据元素,所以能以并行方式对十六个数据元素执行一个操作。有符号紧缩字节表示345示出了有符号紧缩字节的存储。注意,每个字节数据元素的第八位是符号指示符。无符号紧缩字表示346示出了如何将字7到字0存储在SIMD寄存器中。有符号紧缩字表示347类似于无符号紧缩字寄存器内表示346。注意,每个字数据元素的第十六位是符号指示符。无符号紧缩双字表示348示出了如何存储双字数据元素。有符号紧缩双字表示349类似于无符号紧缩双字寄存器内表示348。注意,必要的符号位是每个双字数据元素的第三十二位。
图3D是与可从美国加利福尼亚州圣克拉拉市的英特尔公司的万维网(www)intel.com/products/processor/manuals/上获得的“和IA-32英特尔架构软件开发者手册组合卷2A和2B:指令集参考A-Z(and IA-32Intel Architecture Software Developer’s Manual Combined Volume 2A and2B:Instruction Set Reference A-Z)”中描述的操作码格式类型相对应的、具有32或更多位的操作编码(操作码)格式360以及寄存器/存储器操作数寻址模式的一个实施例的描绘。在一个实施例中,可通过字段361和362中的一个或多个对指令进行编码。可以对于每条指令标识多至两个操作数位置,包括多至两个源操作数标识符364和365。对于一个实施例,目的地操作数标识符366与源操作数标识符364相同,而在其他实施例中它们不相同。对于替代实施例,目的地操作数标识符366与源操作数标识符365相同,而在其他实施例中它们不相同。在一个实施例中,由源操作数标识符364和365标识的源操作数中的一个被指令的结果覆写,而在其他实施例中,标识符364对应于源寄存器元件,而标识符365对应于目的地寄存器元件。对于一个实施例,操作数标识符364和365可被用于标识32位或64位的源和目的地操作数。
图3E是具有四十个或更多位的另一个替代操作编码(操作码)格式370的描绘。操作码格式370对应于操作码格式360,并包括可选的前缀字节378。根据一个实施例的指令可通过字段378、371和372中的一个或多个来编码。通过源操作数标识符374和375以及通过前缀字节378,可对每条指令标识多至两个操作数位置。对于一个实施例,前缀字节378可被用于标识32位或64位的源和目的地操作数。对于一个实施例,目的地操作数标识符376与源操作数标识符374相同,而在其他实施例中它们不相同。对于替代实施例,目的地操作数标识符376与源操作数标识符375相同,而在其他实施例中它们不相同。在一个实施例中,指令对由操作数标识符374和375所标识的操作数中的一个或多个进行操作,并且通过该指令的结果覆写由操作数标识符374和375所标识的一个或多个操作数,而在其他实施例中,将由标识符374和375标识的操作数写入另一寄存器中的另一数据元素中。操作码格式360和370允许由MOD字段363和373以及由可选的比例-索引-基址(scale-index-base)和位移(displacement)字节部分地指定的寄存器到寄存器寻址、存储器到寄存器寻址、由存储器对寄存器寻址、由寄存器对寄存器寻址、由立即数对寄存器寻址、寄存器到存储器寻址。
接下来转到图3F,在一些替代实施例中,64位(或128位、或256位、或512位或更多位)单指令多数据(SIMD)算术操作可经由协处理器数据处理(CDP)指令来执行。操作编码(操作码)格式380描绘了具有CDP操作码字段382和389的一条此类指令。对于替代实施例,可由字段383、384、387和388中的一个或多个对CDP指令操作的这种类型进行编码。可以对每个指令标识多至三个操作数位置,包括多至两个源操作数标识符385和390以及一个目的地操作数标识符386。协处理器的一个实施例可对8位、16位、32位和64位的值进行操作。对于一个实施例,对整数数据元素执行指令。在一些实施例中,可使用条件字段381,有条件地执行指令。对于一些实施例,可通过字段383来对源数据尺寸进行编码。在一些实施例中,可对SIMD字段执行零(Z)、负(N)、进位(C)和溢出(V)检测。对于一些指令,可通过字段384对饱和类型进行编码。
接下来转到图3G,其描绘了与可从美国加利福尼亚州圣克拉拉市的英特尔公司的万维网(www)intel.com/products/processor/manuals/上获得的“高级向量扩展编程参考(Advanced Vector Extensions ProgrammingReference)”中描述的操作码格式类型相对应的、根据另一实施例的用于提供推入缓冲器复制和存储功能的另一替代操作编码(操作码)格式397。
原始x86指令集向1字节操作码提供各种格式的地址字节(syllable)以及被包括在在附加字节中的立即操作数,其中可从第一个“操作码”字节中获知附加字节的存在。此外,存在作为对该操作码的修饰符而保留的某些字节值(被称为前缀(prefix),因为必须将它们置于指令之前)。当256个操作码字节的原始调配(包括这些特殊的前缀值)耗尽时,将单个字节专用于去往256个操作码的新集合的跳出方式(escape)。因为添加了向量指令(例如,SIMD),因此,即便通过使用前缀进行扩展,也产生了对更多操作码的需求,并且“两字节”操作码映射也是不够的。为此,将新指令加入附加的映射中,该附加的映射将两字节加上可选的前缀用作标识符。
此外,为了便于在64位模式中实现额外的寄存器,可在前缀和操作码(以及确定该操作码所必需的任何跳出字节)之间使用附加的前缀(被称为“REX”)。在一个实施例中,该REX具有4个“有效负荷”位,以指示在64位模式中使用附加的寄存器。在其他实施例中,该REX可具有少于或多于4位。至少一个指令集的通用格式(通常对应于格式360和/或格式370)被一般地示出如下:
[prefixes][rex]escape[escape2]opcode modrm(等)
操作码格式397对应于操作码格式370,并包括替代大部分的其他公共使用的传统指令前缀字节和跳出代码的、可选的VEX前缀字节391(在一个实施例中,以十六进制的C4开始)。例如,以下示出了使用两个字段来编码指令的实施例,可在第二跳出代码存在于原始指令中时,或者在需要使用REX字段中的额外位(例如,XB和W字段)时使用该实施例。在以下所示的实施例中,传统跳出由新的跳出值来表示,传统前缀被完全压缩为“有效负荷(payload)”字节的部分,传统前缀被重新申明并可用于未来的扩展,第二跳出代码被压缩在“映射(map)”字段中且未来的映射或特征空间可用,并且加入新的特征(例如,增加的向量长度以及附加的源寄存器区分符)。
根据一个实施例的指令可通过字段391和392中的一个或多个来进行编码。通过字段391结合源操作码标识符374和375,并且结合可选的比例-索引-基址(scale-index-base,SIB)标识符393、可选的位移标识符394以及可选立即数字节395,可以为每条指令标识多至四个操作数位置。对于一个实施例,VEX前缀字节391可被用于标识32位或64位的源和目的地操作数和/或128位或256位SIMD寄存器或存储器操作数。对于一个实施例,由操作码格式397提供的功能可与操作码格式370形成冗余,而在其他实施例中它们不同。操作码格式370和397允许由MOD字段373以及由可选的(SIB)标识符393、可选的位移标识符394以及可选的立即数字节395部分地指定的寄存器到寄存器寻址、存储器到寄存器寻址、由存储器对寄存器寻址、由寄存器对寄存器寻址、由立即数对寄存器寻址、寄存器到存储器寻址。
接下来转到图3H,其描绘了根据另一实施例的、用于提供推入缓冲器复制和存储功能的另一替代的操作编码(操作码)格式398。操作码格式398对应于操作码格式370和397,并包括替代大部分的其他公共使用的传统指令前缀字节和跳出代码,并提供附加的功能的、可选的EVEX前缀字节396(在一个实施例中,以十六进制的62开始)。根据一个实施例的指令可通过字段396和392中的一个或多个来进行编码。通过字段396结合源操作码标识符374和375,并且结合可选比例-索引-基址(SIB)标识符393、可选的位移标识符394以及可选的立即数字节395,可以为每条指令多至四个操作数位置以及标识掩码。对于一个实施例,EVEX前缀字节396可被用于标识32位或64位的源和目的地操作数和/或128位、256位或512位SIMD寄存器或存储器操作数。对于一个实施例,由操作码格式398提供的功能可与操作码格式370或397形成冗余,而在其他实施例中它们不同。操作码格式398允许由MOD字段373以及由可选的(SIB)标识符393、可选的位移标识符394以及可选的立即数字节395部分地指定的、利用掩码的寄存器到寄存器寻址、存储器到寄存器寻址、由存储器对寄存器寻址、由寄存器对寄存器寻址、由立即数对寄存器寻址、寄存器到存储器寻址。至少一个指令集的通用格式(其通常对应于格式360和/或格式370)被一般地示出如下:
evex1 RXBmmmmm WvvvLpp evex4 opcode modrm[sib][disp][imm]
对于一个实施例,根据EVEX格式398来编码的指令可具有附加的“有效负荷”位,该附加的“有效负荷”位可用于提供推入缓冲器复制和存储功能,并具有附加的新特征,诸如例如,用户可配置掩码寄存器、或附加的操作数、或从128位、256位或512位向量寄存器或待选择的更多的寄存器中进行选择,等等。
例如,在可将VEX格式397用于提供对带有隐式掩码的推入缓冲器复制和存储功能的情况下,可将EVEX格式398用于提供带有显式用户可配置掩码的推入缓冲器复制和存储功能。此外,在可将VEX格式397用于提供对128位或256位向量寄存器的推入缓冲器复制和存储功能的情况下,可将EVEX格式398用于提供对128位、256位、512位或更大的(或更小的)向量寄存器的推入缓冲器复制和存储功能。
通过以下示例说明用于提供推入缓冲器复制和存储功能的示例指令:
将会理解,如上述示例所述,可将SIMD推入缓冲器复制和存储指令用于在多个应用中(例如,在多核流水线并行软件应用中)提供推入缓冲器复制和存储功能,进而减少共享存储器高速缓存层次结构中的一致性业务量,增加性能和指令吞吐量,并且减少用电和能耗。一些实施例(例如,在上述示例中)可提供目的地高速缓存的存储器地址的拥有者核以包括诸如自身的、全部共享的或物理核ID(例如,逻辑处理器的x2APIC ID)之类的多个规格。一些实施例(例如,在上述示例中)也可提供目的地高速缓存的存储器地址的高速缓存层级以包括诸如L1$、L2$、…、末级$或主存储器之类的多个规格。在一些实施例中,可将存储器地址Mem1和/或Mem2指定为用于提供推入缓冲器复制和存储功能的指令的显式操作数。在一些替代实施例中,可隐式地将存储器地址Mem1和/或Mem2指定为例如分别位于寄存器ES:[(E)DI]和DS:[(E)SI]中,或分别位于寄存器[RDI]和[RSI]中。在一些其他的替代实施例中,仅一个共享存储器地址可被显式地指定为源和目的地操作数两者,并且/或者仅一致的高速缓存行内容状态和所有权可能受影响。在一些实施例中,可将缓冲器的尺寸指定为向量寄存器的尺寸、或目的地高速缓存中高速缓存行的尺寸、或在寄存器中(例如,寄存器(E)CX中或寄存器RCX中)被隐式地指定的尺寸。
图4A是示出根据本发明的至少一个实施例的有序流水线以及寄存器重命名级、无序发布/执行流水线的框图。图4B是示出根据本发明的至少一个实施例的、要被包括在处理器中的有序架构核以及寄存器重命名逻辑、无序发布/执行逻辑的框图。图4A中的实线框示出了有序流水线,而虚线框示出了寄存器重命名的、无序发布/执行流水线。类似地,图4B中的实线框示出了有序架构逻辑,而虚线框示出了寄存器重命名逻辑以及无序发布/执行逻辑。
在图4A中,处理器流水线400包括取出级402、长度解码级404、解码级406、分配级408、重命名级410、调度(也被称为分派或发布)级412、寄存器读取/存储器读取级414、执行级416、写回/存储器写入级418、异常处理级422和提交级424。
在图4B中,箭头指示两个或更多个单元之间的耦合,并且箭头的方向指示那些单元之间的数据流的方向。图4B示出处理器核490,其包括耦合至执行引擎单元450的前端单元430,该前端单元和执行引擎单元两者均耦合至存储器单元470。
核490可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或替代的核类型。作为又一选项,核490可以是专用核,例如,网络或通信核、压缩引擎、图形核等。
前端单元430包括耦合至指令高速缓存单元434的分支预测单元432,该指令高速缓存单元耦合至指令转换后备缓冲器(TLB)436,该指令转换后备缓冲器(TLB)耦合至指令取出单元438,该指令取出单元耦合至解码单元440。解码单元或解码器可解码指令,并生成从原始指令中解码出的、或以其他方式反映原始指令的、或从原始指令中推导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。可使用各种不同的机制来实现解码器。合适机构的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元434还耦合到存储器单元470中的第二级(L2)高速缓存单元476。解码单元440耦合至执行引擎单元450中的重命名/分配器单元452。
执行引擎单元450包括耦合到引退单元454和一个或多个调度器单元456的集合的重命名/分配器单元452。调度器单元456表示任意数量的不同调度器,包括预留站、中央指令窗等。调度器单元456耦合到物理寄存器组单元458。每个物理寄存器组单元458表示一个或多个物理寄存器组,其中不同的物理寄存器组存储一个或多个不同的数据类型(诸如,标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点,等等)、状态(诸如,作为要被执行的下一条指令的地址的指令指针)等等。物理寄存器组单元458被引退单元454覆盖,以示出可实现寄存器重命名和无序执行的各种方式(例如,使用重排序缓冲器和引退寄存器组;使用未来文件(future file)、历史缓冲器和引退寄存器组;使用寄存器映射和寄存器池等)。通常,架构寄存器从处理器外部或从编程者的视角来看是可见的。这些寄存器不限于任何已知的特定电路类型。各种不同类型的寄存器是合适的,只要它们能够存储并提供本文所述的数据。合适寄存器的示例包括但不限于,专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、以及专用物理寄存器和动态分配物理寄存器的组合,等等。引退单元454和物理寄存器组单元458耦合至执行群集460。执行群集460包括一个或多个执行单元462的集合以及一个或多个存储器访问单元464的集合。执行单元462可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但其他实施例可包括全部执行所有功能的仅一个执行单元或多个执行单元。调度器单元456、物理寄存器组单元458和执行群集460被示出为可能是复数个,因为某些实施例为某些数据/操作类型创建了多个单独流水线(例如,均具有各自调度器单元、物理寄存器组单元和/或执行群集的标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线和/或存储器访问流水线;以及在单独的存储器访问流水线的情况下,某些实施例被实现为仅仅该流水线的执行群集具有存储器访问单元464)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是无序发布/执行,并且其余流水线可以是有序发布/执行。
存储器访问单元464的集合耦合至存储器单元470,该存储器单元包括数据TLB单元472,该数据TLB单元耦合至高速缓存单元474,该高速缓存单元耦合至第二级(L2)高速缓存单元476。在一个示例性实施例中,存储器访问单元464可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元470中的数据TLB单元472。L2高速缓存单元476耦合至一个或多个其他层级的高速缓存,并最终耦合至主存储器。
作为示例,示例性的寄存器重命名无序发布/执行核架构可按下列方式实现流水线400:1)指令取出器438执行取出和长度解码级402和404;2)解码单元440执行解码级406;3)重命名/分配器单元452执行分配级408和重命名级410;4)调度器单元456执行调度级412;5)物理寄存器组单元458和存储器单元470执行寄存器读取/存储器读取级414;执行群集460实现执行级416;6)存储器单元470和物理寄存器组单元458执行写回/存储器写入级418;7)各种单元可被牵涉在异常处理级422中;以及8)引退单元454和物理寄存器组单元458执行提交级424。
核490可支持一个或多个指令集(例如,x86指令集(具有增加了更新版本的一些扩展)、加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指令集、加利福尼亚州桑尼威尔的ARM控股公司的ARM指令集(具有可选的附加扩展,诸如NEON))。
应当理解,核可支持多线程操作(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同步多线程化(其中单个物理核为物理核正在同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及之后的同步多线程操作(例如,用超线程化技术))。
尽管在无序执行的情境中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。虽然处理器的所示出的实施例也包括单独的指令和数据高速缓存单元434/474以及共享的L2高速缓存单元476,但替代的实施例可具有用于指令和数据两者的单个内部高速缓存,诸如例如第一级(L1)内部高速缓存、或多个层级的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
图5是根据本发明的多个实施例的具有集成的存储器控制器和图形器件的单核处理器和多核处理器500的框图。图5的实线框示出了处理器500,其具有单个核502A、系统代理510、一组一个或多个总线控制器单元516,而可选附加的虚线框示出了替代的处理器500,其具有多个核502A-N、位于系统代理单元510中的一组一个或多个集成存储器控制器单元514的以及集成图形逻辑508。
存储器层次结构包括核内的一个或多个高速缓存层级、一组一个或多个共享高速缓存单元506、以及耦合至该组集成存储器控制器单元514的外部存储器(未示出)。该组共享高速缓存单元506可包括一个或多个中级高速缓存,诸如,第二级(L2)、第三级(L3)、第四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)和/或以上的组合。虽然在一个实施例中,基于环形的互连单元512将集成图形逻辑508、该组共享高速缓存单元506和系统代理单元510进行互连,但替代的实施例也可使用任意数量的公知技术来互连这些单元。
在一些实施例中,一个或多个核502A-N能够进行多线程操作。系统代理510包括协调和操作核502A-N的那些组件。系统代理单元510可包括例如功率控制单元(PCU)和显示单元。PCU可以是或可包括对核502A-N以及集成图形逻辑508的功率状态进行调节所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
在架构和/或指令集方面,核502A-N可以是同构的或异构的。例如,核502A-N中的一些可以是有序的,而另一些是无序的。作为另一个示例,核502A-N中的两个或更多能够执行相同的指令集,而其他核能够执行该指令集中的仅子集或执行不同的指令集。
处理器可以是通用处理器,诸如酷睿(CoreTM)i3、i5、i7、2Duo和Quad、至强(XeonTM)、安腾(ItaniumTM)、XScaleTM或StrongARMTM处理器,这些均可以从加利福尼亚圣克拉拉市的英特尔公司获得。或者,处理器可以来自另一个公司,诸如来自ARM控股公司、MIPS等。处理器可以是专用处理器,例如,网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器等。该处理器可以被实现在一个或多个芯片上。处理器500可以是一个或多个基板的一部分,和/或使用多种工艺技术(诸如,BiCMOS、CMOS、或NMOS)中的任意技术被实现在一个或多个基板上。
图6-8是适于包括处理器500的示例性系统,而图9是可包括502中的一个或多个的示例性芯片上系统(SoC)。本领域已知的对膝上型计算机、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含本文中所公开的处理器和/或其他执行逻辑的多种系统或电子设备一般都是合适的。
现在参考图6,所示出的是根据本发明一个实施例的系统600的框图。系统600可包括耦合至图形存储器控制器中枢(GMCH)620的一个或多个处理器610和615。附加的处理器615的可选性质在图6中通过虚线来表示。
每个处理器610、615可以是处理器500的某个版本。然而,应当注意,集成图形逻辑和集成存储器控制单元不太可能出现在处理器610和615中。图6示出GMCH 620可耦合至存储器640,该存储器640可以是例如动态随机存取存储器(DRAM)。对于至少一个实施例,DRAM可以与非易失性高速缓存相关联。
GMCH 620可以是芯片组或芯片组的部分。GMCH 620可以与处理器610和615进行通信,并控制处理器610、615与存储器640之间的交互。GMCH 620还可担当处理器610、615和系统600中的其他元件之间的加速总线接口。对于至少一个实施例,GMCH 620经由诸如前端总线(FSB)695之类的多点总线与处理器610和615进行通信。
此外,GMCH 620耦合至显示器645(诸如平板显示器)。GMCH 620可包括集成图形加速器。GMCH 620还耦合至输入/输出(I/O)控制器中枢(ICH)650,该输入/输出(I/O)控制器中枢(ICH)650可用于将各种外围设备耦合至系统600。在图6的实施例中作为示例示出了外部图形设备660以及另一外围设备670,该外部图形设备660可以是耦合至ICH 650的分立图形设备。
替代地,系统600中还可存在附加的或不同的处理器。例如,附加处理器615可包括与处理器610相同的附加处理器、与处理器610异类或不对称的附加处理器、加速器(例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器。在物理资源610和615之间会存在包括架构、微架构、热和功耗特征等的一系列品质度量方面的各种差异。这些差异会有效显示为处理器610和615之间的不对称性和异类性。对于至少一个实施例,各种处理器610和615可驻留在同一管芯封装中。
现在参照图7,所示出的是根据本发明实施例的第二系统700的框图。如图7所示,多处理器系统700是点对点互连系统,并且包括经由点对点互连750而被耦合的第一处理器770和第二处理器780。处理器770和780中的每一个可以是处理器500的某个版本(如处理器610、615中的一个或多个)。
虽然仅以两个处理器770和780示出,但是应当理解,本发明的范围不限于此。在其他实施例中,在给定处理器中可存在一个或多个附加处理器。
处理器770和780被示出为分别包括集成存储器控制器单元772和782。处理器770还包括作为其总线控制器单元的部分的点对点(P-P)接口776和778;类似地,第二处理器780包括P-P接口786和788。处理器770和780可经由使用点对点(P-P)接口电路778和788的P-P接口750来交换信息。如图7所示,IMC 772和782将处理器耦合到各自的存储器,即存储器732和存储器734,这些存储器可以是本地附连到各自处理器的主存储器的部分。
处理器770、780可各自经由使用点对点接口电路776、794、786和798的各个P-P接口752和754与芯片组790交换信息。芯片组790还可经由高性能图形接口739与高性能图形电路738交换信息。
共享高速缓存(未示出)可被包括在任一处理器中,或在两个处理器的外部但经由P-P互连与这些处理器连接,使得如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在该共享的高速缓存中。
芯片组790可经由接口796耦合至第一总线716。在一个实施例中,第一总线716可以是外围组件互连(PCI)总线或诸如PCI高速总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图7所示,各种I/O设备714可连同总线桥718一起耦合到第一总线716,总线桥718将第一总线716耦合到第二总线720。在一个实施例中,第二总线720可以是低引脚计数(LPC)总线。各种设备可以被耦合至第二总线720,在一个实施例中,这些设备包括例如键盘和/或鼠标722、通信设备727以及诸如可包括指令/代码和数据730的盘驱动器或其他大容量存储设备之类的存储单元728。此外,音频I/O 724可耦合至第二总线720。注意,其他架构是可能的。例如,代替图7的点对点架构,系统可实现多点总线或者其他此类架构。
现在参照图8,所示出的是根据本发明实施例的第三系统800的框图。图7和8中的类似元件使用类似的附图标记,且在图8中省略了图7的某些方面以避免使图8的其他方面模糊。
图8示出处理器870和880可分别包括集成存储器和I/O控制逻辑(“CL”)872和882。对于至少一个实施例,CL 872和882可包括诸如以上结合图5和7所描述的集成存储器控制器单元。此外,CL 872、882还可包括I/O控制逻辑。图8示出不仅存储器832和834耦合至CL 872和882,而且I/O设备814也耦合至控制逻辑872和882。传统I/O设备815耦合至芯片组890。
现在参照图9,所示出的是根据本发明的实施例的SoC 900的框图。图5中的类似组件具有相同的标号。另外,虚线框是更先进的SoC上的可选特征。在图9中,互连单元902被耦合至:应用处理器910,其包括一组一个或多个核502A-N以及共享高速缓存单元506;系统代理单元510;总线控制器单元516;集成存储器控制器单元514;一组一个或多个媒体处理器920,其可包括集成图形逻辑508、用于提供静止和/或视频照相功能的图像处理器924、用于提供硬件音频加速的音频处理器926、用于提供视频编码/解码加速的视频处理器928、静态随机存取存储器(SRAM)单元930;直接存储器存取(DMA)单元932;以及显示单元940,其用于耦合至一个或多个外部显示器。
图10示出处理器,包括中央处理单元(CPU)和图形处理单元(GPU),该处理器可执行根据一个实施例的至少一条指令。在一个实施例中,执行根据至少一个实施例的操作的指令可由CPU来执行。在另一实施例中,指令可以由GPU来执行。在又一实施例中,指令可以由GPU和CPU所执行的操作的组合来执行。例如,在一个实施例中,根据一个实施例的指令可被接收,并被解码,以便在GPU上执行。然而,经解码的指令中的一个或多个操作可由CPU来执行,并且结果被返回到GPU,以便进行指令的最终引退。相反,在一些实施例中,CPU可作为主处理器,而GPU作为协处理器。
在一些实施例中,受益于高度并行化的吞吐量处理器的指令可由GPU来执行,而受益于处理器(这些处理器受益于深度流水线架构)性能的指令可由CPU来执行。例如,图形、科学应用、金融应用以及其他并行工作负荷可受益于GPU的性能并相应地被执行,而更多的序列化应用(例如,操作系统内核或应用代码)更适于CPU。
在图10中,处理器1000包括,CPU 1005、GPU 1010、图像处理器1015、视频处理器1020、USB控制器1025、UART控制器1030、SPI/SDIO控制器1035、显示设备1040、高清晰度多媒体接口(HDMI)控制器1045、MIPI控制器1050、闪存存储器控制器1055、双数据率(DDR)控制器1060、安全引擎1065、I2S/I2C(集成跨芯片声音/跨集成电路)接口1070。其他逻辑和电路(包括更多的CPU或GPU以及其他外围设备接口控制器)可被包括在图10的处理器中。
至少一个实施例的一个或多个方面可由存储在表示处理器内的各种逻辑的机器可读介质上的表示性数据来实现,当机器读取该表示性数据时,该表示性数据使得该机器用于制造执行本文所述的技术的逻辑。可将此类表示(即所谓“IP核”)存储在有形的机器可读介质(“磁带”)上,并将其提供给各种顾客或生产设施,以便加载到实际制作该逻辑或处理器的制造机器中。例如,IP核(诸如由ARM控股公司所开发的CortexTM处理器族以及由中国科学院计算机技术研究所(ICT)所开发的龙芯IP核)可被授权或销售给各种客户或受许可方,诸如德州仪器、高通、苹果、或三星,并被实现在由这些客户或受许可方生产的处理器中。
图11示出根据一个实施例的IP核开发的框图。存储器1130包括仿真软件1120和/或硬件或软件模型1110。在一个实施例中,表示IP核设计的数据可经由存储器1140(例如,硬盘)、有线连接(例如,互联网)1150或无线连接1160而被提供给存储器1130。由仿真工具和模型所生成的IP核信息可随后被发送到生产设施,可由第三方在该生产设施中制造该IP核信息以执行根据至少一个实施例的至少一条指令。
在一些实施例中,一条或多条指令可以对应于第一类型或架构(例如,x86),并且可在不同类型或架构的处理器(例如,ARM)上被转换或仿真。根据一个实施例,因此可在任何处理器或处理器类型(包括ARM、x86、MIPS、GPU或其他处理器类型或架构)上执行指令。
图12示出了根据一个实施例的第一类型的指令如何被不同类型的处理器仿真。在图12中,程序1205包含可执行与根据一个实施例的指令相同或基本相同的功能的一些指令,这些指令。然而,程序1205的指令可以是与处理器1215不同或不兼容的类型和/或格式,这意味着不能够由处理器1215原生地执行程序1205中的类型的指令。然而,借助于仿真逻辑1210,将程序1205的指令转换成能够由处理器1215原生执行的指令。在一个实施例中,仿真逻辑被具体化在硬件中。在另一实施例中,将仿真逻辑具体化在有形的机器可读介质中,该机器可读介质包含用于将程序1205中的该类指令翻译成能由处理器1215原生地执行的类型的软件。在其他实施例中,仿真逻辑是固定功能或可编程硬件和存储在有形的机器可读介质上的程序的组合。在一个实施例中,处理器包含仿真逻辑,而在其他实施例中,仿真逻辑在处理器之外,并且由第三方提供。在一个实施例中,处理器能够通过执行被包括在处理器中或者与该处理器相关联的微代码或固件,加载被具体化在包含软件的有形的机器可读介质中的仿真逻辑。
图13是根据本发明的多个实施例的对照使用软件指令转换器将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但作为替代,可在软件、固件、硬件或其各种组合中实现该指令转换器。图13示出可使用x86编译器1304来编译利用高级语言1302的程序,以生成可由具有至少一个x86指令集核的处理器1316原生地执行的x86二进制代码1306。具有至少一个x86指令集核1316的处理器表示能够通过兼容地执行或以其他方式处理下列各项来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能的任何处理器:(1)英特尔x86指令集核的指令集的本质部分或(2)旨在在具有至少一个x86指令集核的英特尔处理器上运行以实现与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器1304表示可用于生成x86二进制代码1306(例如,目标代码)的编译器,该x86二进制代码1306能够通过附加的链接处理或无需附加的链接处理而在具有至少一个x86指令集核的处理器1316上被执行。类似地,图13示出可使用替代的指令集编译器1308来编译利用高级语言1302的程序,以生成可由不具有至少一个x86指令集核的处理器1314(例如,具有执行加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指令集的核的处理器和/或执行加利福尼亚州桑尼威尔的ARM控股公司的ARM指令集的核的处理器)原生地执行的替代指令集二进制代码1310。该指令转换器1312被用于将x86二进制代码1306转换为可由不具有x86指令集核的处理器1314原生地执行的代码。该经变换的代码不太可能与替代指令集二进制代码1310相同,因为难以制造能完成这样的指令转换器;然而,经变换的代码将完成一般操作,并且由替代指令集中的指令构成。因此,指令转换器1312通过仿真、模拟或任何其他过程来表示允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码1306的软件、固件、硬件或它们的组合。
图14示出用于使用提供推入缓冲器复制和存储功能的指令的系统1401的一个实施例的流程图。系统1401包括系统存储器1490和处理器1402。处理器1402包括第一硬件线程或逻辑处理器1420和第二硬件线程或逻辑处理器1430。将会理解,虽然出于简化的目的将处理器1402示为包括两个逻辑处理器,每个逻辑处理器表示单个硬件线程,但本发明不限于此。例如,诸如处理器1402之类的处理器或本文中示出的其他处理器具有若干逻辑处理器核也是典型的,这些逻辑处理器核可能共享或不共享一些物理资源和/或电路,每个逻辑处理器或处理器核具有能够同时或并发地执行软件线程的多个硬件线程。在此示例中,逻辑处理器1430具有解码级1432以及一个或多个执行单元(例如,执行单元1434)。逻辑处理器1430具有高速缓存1450,该高速缓存1450用于将高速缓存一致数据存储在针对可由逻辑处理器1430的第二硬件线程访问的共享存储器地址的高速缓存行1455中。逻辑处理器1420具有:高速缓存1440,其用于将高速缓存一致数据存储在高速缓存行1445中;以及解码级1422,其用于解码指令1410,以便由逻辑处理器1420的第一硬件线程执行,该指令1410指定源数据操作数(例如,1425或可选地1445或1495)。一些实施例中的源数据操作数可以是向量寄存器或存储器地址。指令1410也将所述共享存储器地址指定为目的地操作数,例如,在1455处被高速缓存的内容以及所述共享存储地址的一个或多个拥有者(例如,逻辑计算机1430的第二硬件线程)。逻辑处理器1420具有一个或多个执行单元(例如,执行单元1424),这些执行单元响应于被解码的指令1410,当所述一个或多个拥有者包括第二硬件线程或逻辑处理器1430时,将数据从源数据操作数(例如,1425或可选地1445或1495)复制到高速缓存1450中的、针对可由逻辑处理器1430的第二硬件线程访问的所述共享存储器地址的高速缓存行1455中的高速缓存一致数据中,并且不会导致高速缓存未命中或者造成用于获取高速缓存行1455中的高速缓存一致数据的所有权的开销。也就是说,指令1410的一个实施例提供推入缓冲器复制和/或存储功能,该功能允许逻辑处理器1420将数据缓冲器(如,1425)复制或存储到逻辑处理器1430的高速缓存1450中,同时将高速缓存行1455中的高速缓存一致数据的所有权留给逻辑处理器1430以避免导致高速缓存未命中。
图15示出用于使用用于提供推入缓冲器复制和存储功能的指令的系统1501的另一实施例的流程图。系统1501包括系统存储器1590和处理器1502。处理器1502包括第一硬件线程或处理器核1520和第二硬件线程或处理器核1530。处理器核1530具有解码级1532以及一个或多个执行单元(例如,执行单元1534)。处理器核1530也具有高速缓存1550,该高速缓存1550用于将高速缓存一致数据存储在针对可由处理器核1530的第二硬件线程访问的共享存储器地址的高速缓存行1555中。处理器核1520具有用于将高速缓存一致数据保存在高速缓存行1545中的高速缓存1540。高速缓存1540和1550分别包括控制逻辑1542和1552,并且是第一级(L1)高速缓存1503。除L1高速缓存1503和作为第二级(L2)缓存1504的分别包括控制逻辑1562和1572的高速缓存1560和1570之外,高速缓存系统1501还在其高速缓存存储器层次结构中包括末级高速缓存1580。将会理解,虽然为了简化,将处理器1502示出为包括L1高速缓存1503,但是,也可将L2高速缓存1504以及高速缓存存储器层次结构的其他层级包括在处理器1502中。
处理器核1520也具有解码级1522,该解码级1522用于解码指令1510,以便由处理器核1520的第一硬件线程执行,该指令1510指定源数据操作数(例如,1525或可选地1565或1595或一些其他的源数据操作数)。一些实施例中的源数据操作数可以是向量寄存器(如,1525)或存储器地址(如,1595的地址)。指令1510也将所述共享存储器地址指定为目的地操作数,例如,在1555处被高速缓存的以及所述共享存储地址的一个或多个拥有者(例如,处理器核1530的第二硬件线程)。处理器核1520具有一个或多个执行单元(例如,执行单元1524),这些执行单元响应于被解码的指令1510,当所述一个或多个拥有者包括第二硬件线程或处理核1530时,将数据从源数据操作数(例如,1525或可选地1565或1595或一些其他的源数据操作数)复制到高速缓存1550中的、针对可由处理器核1530的第二硬件线程访问的所述共享存储器地址的高速缓存行1555中的高速缓存一致数据中,并且不会导致高速缓存未命中或者造成用于在执行指令1510后获取高速缓存行1555中的高速缓存一致数据的所有权的开销。也就是说,指令1510的多个实施例提供推入缓冲器复制和/或存储的功能,该功能允许处理器核1520将数据缓冲器(如,1525)复制或存储到处理器核1530的高速缓存1550中,同时将高速缓存行1555中的高速缓存一致数据的所有权留给处理器核1530以避免导致高速缓存未命中。
对于一些实施例,可将指令1510解码为未被分配的加载操作1511(例如,微操作,也被称为微op或uop)和推入存储操作1566。在此类实施例中,响应于未被分配的加载操作1511,可利用高速缓存控制逻辑(例如,控制逻辑1542和/或1562)而不分配(或者可能伴随未分配的)高速缓存行(例如,1565)来将数据从存储器源数据操作数(例如,1565或1595或一些其他的存储器源数据操作数)加载到数据缓冲器(如,1525中)。响应于该推入存储操作1566,可将消息从处理核1520的消息收发逻辑1526发送到处理核1530的消息收发逻辑1536,并且可以可选地将数据存储在数据缓冲器1535中,以便利用高速缓存控制逻辑(例如,控制逻辑1552)推入缓冲器复制和/或存储以将数据缓冲器(例如,1525或可选地1535)存储到处理器核1530的高速缓存1550中,同时将高速缓存行1555中的高速缓存一致数据的所有权留给处理器核1530以避免导致高速缓存未命中。对于一些替代实施例,例如当向量寄存器是所指定的源数据操作数1525时,可将指令1510解码为仅推入存储操作1566。对于其他替代实施例,可在推入存储操作1566中不涉及处理器核1530(例如,直接利用高速缓存控制逻辑1552)而实现指令1510。
将会理解,如上述多个实施例中所述,可将SIMD推入缓冲器复制和/或存储指令用于在多个应用(例如,多核流水线并行软件应用)中提供推入缓冲器复制和推入缓冲器存储功能,进而减少共享存储器高速缓存层次结构中的一致性业务量,增加性能和指令吞吐量,并且减少用电和能耗。一些实施例可提供目的地存储器地址的拥有者处理器核以包括诸如自身的、全部共享的或物理核ID(例如,逻辑处理器的x2APIC ID)之类的多个规格。一些实施例(例如,在上述示例中)也可提供目的地高速缓存的存储器地址的高速缓存层级以包括诸如L1$、L2$、…、末级$或主存储器之类的多个规格。在一些实施例中,可将存储器地址指定为用于提供推入缓冲器复制和存储功能的指令的显式操作数。在一些替代实施例中,可隐式地将存储器地址指定为分别位于x86寄存器ES:[(E)DI]和DS:[(E)SI]中,或分别位于寄存器[RDI]和[RSI]中。在一些替代实施例中,仅一个共享存储器地址可被显式地指定为源和目的地两者。在一些实施例中,可将缓冲器的尺寸指定为向量寄存器的尺寸,例如64位、128位、256位、512位等;或指定为目的地高速缓存中高速缓存行的尺寸;或指定为在寄存器中(例如,在x86寄存器(E)CX中或在寄存器RCX中)被隐式地指定的尺寸。
图16示出用于提供推入缓冲器复制和存储功能的过程1601的一个实施例的流程图。通过处理块来执行过程1601和本文中公开的其他过程,这些处理块可包括专用硬件或可由通用机器或专用机器或通用机器和专用机器两者的组合执行的软件或固件操作码。
在过程1601的处理块1630中,对于第一处理核中的第一硬件线程,解码第一指令以便由该第一硬件线程执行,该指令指定源数据操作数、作为目的地操作数的共享存储器地址和该共享存储器地址的一个或多个拥有者。在处理块1645中,响应于对该第一指令进行解码,将数据从源数据操作数复制到针对可由所述一个或多个拥有者访问的所述共享存储器地址的存储中的高速缓存一致数据中。在处理块1660中,当所述一个或多个拥有者包括第二处理核中的第二硬件线程时,第二处理核中的第二硬件线程访问来自所述共享存储器地址的高速缓存一致数据存储的数据而不存在高速缓存未命中。
图17示出用于提供推入缓冲器复制和存储功能的过程的替代实施例的流程图。在多线程处理器中的过程1701的处理块1710中,执行第一硬件线程。在多线程处理器中的过程1702的处理块1715中,执行第二硬件线程。在处理块1725中,将高速缓存一致数据存储在针对可由第二硬件线程访问的高速缓存存储的共享存储器地址的高速缓存行中。
在过程1701的处理块1730中,解码第一指令以便由第一硬件线程执行,该指令指定源数据操作数、作为目的地操作数的共享存储器地址以及该共享存储器地址的至少第二硬件线程拥有者。将会理解,该第一指令的一些实施例可提供共享存储器地址的硬件线程拥有者以包括诸如自身的、全部共享的或物理核ID(例如,逻辑处理器的x2APIC ID)之类的多个规格。在处理块1745中,响应于对第一指令进行解码,将数据从源数据操作数复制到针对可由所述第二硬件线程访问的高速缓存存储的共享存储器地址的高速缓存行中的高速缓存一致数据中。
在过程1702的处理块1760中,访问来自第二硬件线程的高速缓存存储的高速缓存行中的高速缓存一致数据的数据的该共享存储器地址处的数据。将会理解,当所指定的一个或多个拥有者包括第二硬件线程时,在过程1702的处理块1760中,访问该共享存储器地址处的数据,并且作为用于提供推入缓冲器复制和存储功能的过程1701的结果,不会导致高速缓存未命中。
图18示出用于提供推入缓冲器复制和存储功能的过程1801的另一实施例的流程图。在多线程处理器中的过程1801的处理块1810中,执行第一线程。在处理块1820中,取出第一指令以便由第一线程执行,该指令指定源数据操作数、共享存储器地址目的地、该共享存储器地址的拥有者和高速缓存层级。在处理块1830中,解码该第一指令以生成未被分配的加载操作和推入存储操作(例如,微操作、微op或uop)。在处理块1840中,响应于该未被分配的加载操作,将数据从源数据操作数加载到数据缓冲器中。在处理块1850中,响应于推入存储操作,将数据从该数据缓冲器复制到在所指定的高速缓存层级上的、对应于共享存储器地址的高速缓存存储的共享存储器地址的高速缓存行中的高速缓存一致数据中。然后,在处理块1860中,代表对应于共享存储器地址的拥有者的第二线程来访问来自所指定的高速缓存层级上的高速缓存存储的高速缓存行的高速缓存一致数据。再一次将会理解,当共享存储器地址的拥有者包括第二线程时,在处理块1860中,可访问该共享存储器地址处的高速缓存一致数据,并且作为用于提供推入缓冲器复制和存储功能的第一指令的结果,不会导致高速缓存未命中。一些实施例可提供共享存储器地址的拥有者以包括诸如自身的、全部共享的或物理核ID(例如,逻辑处理器的x2APIC ID)之类的多个规格。一些实施例可提供目的地高速缓存的存储器地址的高速缓存层级以包括诸如L1$、L2$、…、末级$或主存储器之类的多个规格。
对于一些替代实施例,可解码第一指令以生成比未被分配的加载操作和推入存储操作更少的操作,或作为未被分配的加载操作和推入存储操作的多个操作的附加或替代——例如,利用高速缓存控制逻辑(例如,控制逻辑1542和1552)的操作1511中的高速缓存行写回和操作1566中的高速缓存行预取出。在一些实施例中,可将存储器地址指定为用于提供推入缓冲器复制和存储功能的指令的显式操作数。在一些替代实施例中,可隐式地将存储器地址指定为分别位于寄存器ES:[(E)DI]和DS:[(E)SI]中,或分别位于寄存器[RDI]和[RSI]中。在一些其他的替代实施例中,仅一个共享存储器地址可被显式地指定为源和目的地操作数两者,并且/或者仅一致的高速缓存行内容状态和所有权可能受影响。
如上述多个实施例中所述,可将推入缓冲器复制和/或存储指令用于在多个应用(例如,多核流水线并行软件应用)中提供推入缓冲器复制和推入缓冲器存储功能,进而减少共享存储器高速缓存层次结构中的一致性业务量,增加性能和指令吞吐量,并且减少用电和能耗。
本文公开的多个机制的各实施例可以被实现在硬件、软件、固件或此类实现的组合中。可将本发明的实施例实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码应用于输入指令以执行本文描述的功能并产生输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定编程语言的范围。在任何情况下,该语言可以是编译语言或解释语言。
至少一个实施例中的一个或多个方面可由存储在表示该处理器中的各种逻辑的机器可读介质上的表示性指令来实现,当由机器读取该表示性指令时,这些指令使得该机器制作用于执行本文所述的技术的逻辑。可将被称为“IP核”的此类表示可以被1存储在有形的机器可读介质上,并被提供给多个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
此类的机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非瞬态的有形安排,其包括存储介质,诸如:硬盘;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器件,例如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。
因此,本发明的多个实施例也包含指令或包含设计数据的非瞬态有形机器可读介质,设计数据诸如定义本文中所描述的结构、电路、装置、处理器和/或系统特征的硬件描述语言(HDL)。也可将此类实施例称为程序产品。
在一些情况下,指令转换器可用于将指令从源指令集转换为目标指令集。例如,指令转换器可以变换(例如,使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其他方式将指令转换成将由核来处理的一个或多个其他指令。可在软件、硬件、固件、或其组合中实现该指令转换器。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
因此,公开了用于执行根据至少一个实施例的一条或多条指令的技术。虽然已经描述并在附图中示出了某些示例性实施例,但是应当理解,此类实施例仅仅是对本宽泛发明的说明而非限制,并且本发明不限于所示出和所描述的特定结构和配置,因为本领域技术人员在研究了本公开文本之后可以料知到各种其他修改。在诸如本申请这样的、发展迅速且进一步的进展难以预见的技术领域中,所公开的多个实施例在通过启用技术进步所促成的配置和细节上是容易修改的,同时不背离本公开的原理和所附权利要求书的范围。

Claims (34)

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所述的处理系统,其特征在于,所述共享存储器地址的所述一个或多个拥有者被指定为逻辑处理器的x2APIC ID。
CN201380056430.9A 2012-11-28 2013-06-30 用于提供推入缓冲器复制和存储功能的指令和逻辑 Active CN104937539B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/687,918 2012-11-28
US13/687,918 US9563425B2 (en) 2012-11-28 2012-11-28 Instruction and logic to provide pushing buffer copy and store functionality
PCT/US2013/048838 WO2014084919A1 (en) 2012-11-28 2013-06-30 Instruction and logic to provide pushing buffer copy and store functionality

Publications (2)

Publication Number Publication Date
CN104937539A true CN104937539A (zh) 2015-09-23
CN104937539B CN104937539B (zh) 2018-09-18

Family

ID=50774366

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380056430.9A Active CN104937539B (zh) 2012-11-28 2013-06-30 用于提供推入缓冲器复制和存储功能的指令和逻辑

Country Status (5)

Country Link
US (2) US9563425B2 (zh)
KR (1) KR101842058B1 (zh)
CN (1) CN104937539B (zh)
DE (1) DE112013004867T5 (zh)
WO (1) WO2014084919A1 (zh)

Cited By (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106250348A (zh) * 2016-07-19 2016-12-21 北京工业大学 一种基于gpu访存特性的异构多核架构缓存管理方法
CN107870891A (zh) * 2016-09-23 2018-04-03 卡西欧计算机株式会社 控制装置、电子表、处理控制方法及计算机可读存储介质
CN107918557A (zh) * 2016-10-05 2018-04-17 联发科技股份有限公司 一种运行多核系统的装置和方法及多核系统
CN108228094A (zh) * 2016-12-09 2018-06-29 英特尔公司 存储器侧高速缓存中通路的伺机增加
CN108228484A (zh) * 2016-12-12 2018-06-29 英特尔公司 针对处理器中的高速缓存利用的无效读取
CN108227896A (zh) * 2016-12-09 2018-06-29 英特尔公司 用于并行多步骤功率管理流程的指令和逻辑
CN108268423A (zh) * 2016-12-31 2018-07-10 英特尔公司 实现用于具有写到读依赖关系的稀疏线性代数运算的增强的并行性的微架构
CN108268386A (zh) * 2016-12-30 2018-07-10 英特尔公司 加速硬件中的存储器排序
CN108292268A (zh) * 2015-12-29 2018-07-17 英特尔公司 用于分布式一致性存储器的系统、方法和设备
CN108334458A (zh) * 2017-01-18 2018-07-27 英特尔公司 存储器高效的末级高速缓存架构
CN108351781A (zh) * 2015-12-24 2018-07-31 英特尔公司 用于利用monitor和mwait架构的用户级线程同步的方法和设备
CN108351830A (zh) * 2015-12-21 2018-07-31 英特尔公司 用于存储器损坏检测的硬件装置和方法
CN108351839A (zh) * 2015-12-24 2018-07-31 英特尔公司 用来挂起/恢复安全飞地页面高速缓存中飞地的迁移的指令和逻辑
CN108351835A (zh) * 2015-11-23 2018-07-31 英特尔公司 用于高速缓存控制操作的指令和逻辑
CN108351784A (zh) * 2015-11-30 2018-07-31 英特尔Ip公司 用于在乱序处理器中进行有序处理的指令和逻辑
CN108363668A (zh) * 2017-01-26 2018-08-03 英特尔公司 线性存储器地址变换和管理
CN108694057A (zh) * 2017-03-31 2018-10-23 英特尔公司 用于改善主机到设备通信以获得最优功率和性能的高效型基于范围的存储器回写
CN108701088A (zh) * 2016-04-01 2018-10-23 英特尔公司 用于延迟低开销同步页表更新的设备和方法
CN108694072A (zh) * 2017-04-07 2018-10-23 英特尔公司 用于高效图形虚拟化的设备及方法
CN109215728A (zh) * 2017-07-01 2019-01-15 英特尔公司 用于分布式存储器危险检测和错误恢复的存储器电路和方法
CN109313548A (zh) * 2016-06-24 2019-02-05 高通股份有限公司 用于执行simd收集和复制操作的方法和设备
CN109478139A (zh) * 2016-08-13 2019-03-15 英特尔公司 用于共享存储器中的访问同步的装置、方法和系统
CN109643463A (zh) * 2016-09-16 2019-04-16 英特尔公司 预设图形处理器内的分级式深度逻辑
CN109643443A (zh) * 2016-09-26 2019-04-16 英特尔公司 图形处理器流水线中的高速缓存和压缩互操作性
CN109661656A (zh) * 2016-09-30 2019-04-19 英特尔公司 用于利用条件所有权请求的智能存储操作的方法和装置
CN109656710A (zh) * 2017-09-15 2019-04-19 畅想科技有限公司 资源分配
CN109791530A (zh) * 2016-10-10 2019-05-21 英特尔公司 多管芯硬件处理器和方法
CN110168510A (zh) * 2017-01-12 2019-08-23 国际商业机器公司 用于延长私有高速缓存中的高速缓存行的独占持有的设施
CN110249302A (zh) * 2017-02-06 2019-09-17 微软技术许可有限责任公司 在处理器核上同时执行多个程序
CN110908929A (zh) * 2018-09-18 2020-03-24 辉达公司 用于高带宽缩放的一致数据高速缓存
CN111143174A (zh) * 2018-11-02 2020-05-12 辉达公司 在共享功率/热约束下操作的硬件的最佳操作点估计器
CN111666253A (zh) * 2019-03-07 2020-09-15 国际商业机器公司 向具有共享存储器的共享处理元件的系统传递可编程数据
US11593295B2 (en) 2018-06-30 2023-02-28 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US11907713B2 (en) 2019-12-28 2024-02-20 Intel Corporation Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9501276B2 (en) * 2012-12-31 2016-11-22 Intel Corporation Instructions and logic to vectorize conditional loops
US9424034B2 (en) 2013-06-28 2016-08-23 Intel Corporation Multiple register memory access instructions, processors, methods, and systems
US10339236B2 (en) * 2013-09-10 2019-07-02 Vmware, Inc. Techniques for improving computational throughput by using virtual machines
US9753873B1 (en) * 2014-12-09 2017-09-05 Parallel Machines Ltd. Systems and methods for key-value transactions
US9563431B2 (en) * 2014-12-26 2017-02-07 Intel Corporation Techniques for cooperative execution between asymmetric processor cores
US10152322B2 (en) 2015-11-05 2018-12-11 International Business Machines Corporation Memory move instruction sequence including a stream of copy-type and paste-type instructions
US10067713B2 (en) 2015-11-05 2018-09-04 International Business Machines Corporation Efficient enforcement of barriers with respect to memory move sequences
US10346164B2 (en) 2015-11-05 2019-07-09 International Business Machines Corporation Memory move instruction sequence targeting an accelerator switchboard
US10140052B2 (en) 2015-11-05 2018-11-27 International Business Machines Corporation Memory access in a data processing system utilizing copy and paste instructions
US10126952B2 (en) 2015-11-05 2018-11-13 International Business Machines Corporation Memory move instruction sequence targeting a memory-mapped device
US9996298B2 (en) 2015-11-05 2018-06-12 International Business Machines Corporation Memory move instruction sequence enabling software control
US10241945B2 (en) 2015-11-05 2019-03-26 International Business Machines Corporation Memory move supporting speculative acquisition of source and destination data granules including copy-type and paste-type instructions
US10042580B2 (en) 2015-11-05 2018-08-07 International Business Machines Corporation Speculatively performing memory move requests with respect to a barrier
US10331373B2 (en) 2015-11-05 2019-06-25 International Business Machines Corporation Migration of memory move instruction sequences between hardware threads
US10261790B2 (en) 2016-03-31 2019-04-16 Intel Corporation Memory copy instructions, processors, methods, and systems
US10339063B2 (en) * 2016-07-19 2019-07-02 Advanced Micro Devices, Inc. Scheduling independent and dependent operations for processing
US10606755B2 (en) 2017-06-30 2020-03-31 Intel Corporation Method and system for performing data movement operations with read snapshot and in place write update
US11436143B2 (en) * 2017-12-22 2022-09-06 Alibaba Group Holding Limited Unified memory organization for neural network processors
US20190227957A1 (en) * 2018-01-24 2019-07-25 Vmware, Inc. Method for using deallocated memory for caching in an i/o filtering framework
US10664273B2 (en) * 2018-03-30 2020-05-26 Intel Corporation Delayed prefetch manager to multicast an updated cache line to processor cores requesting the updated data
US11055226B2 (en) 2018-06-29 2021-07-06 Intel Corporation Mitigation of cache-latency based side-channel attacks
US10678548B2 (en) * 2018-08-24 2020-06-09 Apple Inc. Pipelined allocation for operand cache
CN112749120A (zh) * 2019-10-29 2021-05-04 辉达公司 将数据有效地传输至处理器的技术
CN112416625B (zh) * 2020-11-30 2024-04-09 深信服科技股份有限公司 免拷贝的进程间通信系统及方法
CN117742977B (zh) * 2024-02-20 2024-04-26 沐曦科技(成都)有限公司 芯片内存数据拷贝方法、电子设备和介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6055605A (en) * 1997-10-24 2000-04-25 Compaq Computer Corporation Technique for reducing latency of inter-reference ordering using commit signals in a multiprocessor system having shared caches
US6263414B1 (en) * 1998-07-17 2001-07-17 Technion Research And Development Foundation, Ltd. Memory for accomplishing lowered granularity of a distributed shared memory
US6360231B1 (en) * 1999-02-26 2002-03-19 Hewlett-Packard Company Transactional memory for distributed shared memory multi-processor computer systems
CN101425042A (zh) * 2004-09-09 2009-05-06 英特尔公司 解决高速缓存冲突

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6044438A (en) * 1997-07-10 2000-03-28 International Business Machiness Corporation Memory controller for controlling memory accesses across networks in distributed shared memory processing systems
US6718457B2 (en) 1998-12-03 2004-04-06 Sun Microsystems, Inc. Multiple-thread processor for threaded software applications
US7363474B2 (en) 2001-12-31 2008-04-22 Intel Corporation Method and apparatus for suspending execution of a thread until a specified memory access occurs
US7640549B2 (en) * 2002-07-22 2009-12-29 Agilent Technologies, Inc. System and method for efficiently exchanging data among processes
US8230422B2 (en) 2005-01-13 2012-07-24 International Business Machines Corporation Assist thread for injecting cache memory in a microprocessor
US7681020B2 (en) 2007-04-18 2010-03-16 International Business Machines Corporation Context switching and synchronization
US8117403B2 (en) * 2007-05-14 2012-02-14 International Business Machines Corporation Transactional memory system which employs thread assists using address history tables
US8095750B2 (en) * 2007-05-14 2012-01-10 International Business Machines Corporation Transactional memory system with fast processing of common conflicts
US9081501B2 (en) * 2010-01-08 2015-07-14 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
CN108241504A (zh) * 2011-12-23 2018-07-03 英特尔公司 经改进的提取指令的装置和方法
CN114721721A (zh) * 2011-12-23 2022-07-08 英特尔公司 用于混洗浮点或整数值的装置和方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6055605A (en) * 1997-10-24 2000-04-25 Compaq Computer Corporation Technique for reducing latency of inter-reference ordering using commit signals in a multiprocessor system having shared caches
US6263414B1 (en) * 1998-07-17 2001-07-17 Technion Research And Development Foundation, Ltd. Memory for accomplishing lowered granularity of a distributed shared memory
US6360231B1 (en) * 1999-02-26 2002-03-19 Hewlett-Packard Company Transactional memory for distributed shared memory multi-processor computer systems
CN101425042A (zh) * 2004-09-09 2009-05-06 英特尔公司 解决高速缓存冲突

Cited By (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108351835B (zh) * 2015-11-23 2022-10-04 英特尔公司 用于高速缓存控制操作的指令和逻辑
CN108351835A (zh) * 2015-11-23 2018-07-31 英特尔公司 用于高速缓存控制操作的指令和逻辑
CN108351784A (zh) * 2015-11-30 2018-07-31 英特尔Ip公司 用于在乱序处理器中进行有序处理的指令和逻辑
CN108351784B (zh) * 2015-11-30 2023-04-11 英特尔公司 用于在乱序处理器中进行有序处理的指令和逻辑
CN108351830B (zh) * 2015-12-21 2023-10-27 英特尔公司 用于存储器损坏检测的硬件装置和方法
US11645135B2 (en) 2015-12-21 2023-05-09 Intel Corporation Hardware apparatuses and methods for memory corruption detection
CN108351830A (zh) * 2015-12-21 2018-07-31 英特尔公司 用于存储器损坏检测的硬件装置和方法
CN108351839A (zh) * 2015-12-24 2018-07-31 英特尔公司 用来挂起/恢复安全飞地页面高速缓存中飞地的迁移的指令和逻辑
CN108351781B (zh) * 2015-12-24 2024-01-23 英特尔公司 用于线程同步的方法和设备
CN108351781A (zh) * 2015-12-24 2018-07-31 英特尔公司 用于利用monitor和mwait架构的用户级线程同步的方法和设备
CN108351839B (zh) * 2015-12-24 2023-10-31 英特尔公司 挂起/恢复飞地页面高速缓存中飞地的迁移的设备和方法
CN108292268A (zh) * 2015-12-29 2018-07-17 英特尔公司 用于分布式一致性存储器的系统、方法和设备
CN108292268B (zh) * 2015-12-29 2024-03-22 英特尔公司 用于分布式一致性存储器的系统、方法和设备
CN108701088B (zh) * 2016-04-01 2023-07-28 英特尔公司 用于延迟低开销同步页表更新的设备和方法
CN108701088A (zh) * 2016-04-01 2018-10-23 英特尔公司 用于延迟低开销同步页表更新的设备和方法
CN109313548A (zh) * 2016-06-24 2019-02-05 高通股份有限公司 用于执行simd收集和复制操作的方法和设备
CN109313548B (zh) * 2016-06-24 2023-05-26 高通股份有限公司 用于执行simd收集和复制操作的方法和设备
CN106250348A (zh) * 2016-07-19 2016-12-21 北京工业大学 一种基于gpu访存特性的异构多核架构缓存管理方法
CN106250348B (zh) * 2016-07-19 2019-02-12 北京工业大学 一种基于gpu访存特性的异构多核架构缓存管理方法
CN109478139A (zh) * 2016-08-13 2019-03-15 英特尔公司 用于共享存储器中的访问同步的装置、方法和系统
CN109478139B (zh) * 2016-08-13 2024-01-23 英特尔公司 用于共享存储器中的访问同步的装置、方法和系统
US11681529B2 (en) 2016-08-13 2023-06-20 Intel Corporation Apparatuses, methods, and systems for access synchronization in a shared memory
CN109643463B (zh) * 2016-09-16 2024-03-01 英特尔公司 预设图形处理器内的分级式深度逻辑
CN109643463A (zh) * 2016-09-16 2019-04-16 英特尔公司 预设图形处理器内的分级式深度逻辑
CN107870891B (zh) * 2016-09-23 2021-09-17 卡西欧计算机株式会社 控制装置、电子表、处理控制方法及计算机可读存储介质
CN107870891A (zh) * 2016-09-23 2018-04-03 卡西欧计算机株式会社 控制装置、电子表、处理控制方法及计算机可读存储介质
CN109643443B (zh) * 2016-09-26 2024-03-08 英特尔公司 图形处理器流水线中的高速缓存和压缩互操作性
CN109643443A (zh) * 2016-09-26 2019-04-16 英特尔公司 图形处理器流水线中的高速缓存和压缩互操作性
CN109661656A (zh) * 2016-09-30 2019-04-19 英特尔公司 用于利用条件所有权请求的智能存储操作的方法和装置
CN109661656B (zh) * 2016-09-30 2023-10-03 英特尔公司 用于利用条件所有权请求的智能存储操作的方法和装置
US11550721B2 (en) 2016-09-30 2023-01-10 Intel Corporation Method and apparatus for smart store operations with conditional ownership requests
CN107918557A (zh) * 2016-10-05 2018-04-17 联发科技股份有限公司 一种运行多核系统的装置和方法及多核系统
CN109791530A (zh) * 2016-10-10 2019-05-21 英特尔公司 多管芯硬件处理器和方法
CN109791530B (zh) * 2016-10-10 2023-06-27 英特尔公司 多管芯硬件处理器和方法
US11899615B2 (en) 2016-10-10 2024-02-13 Intel Corporation Multiple dies hardware processors and methods
US11586579B2 (en) 2016-10-10 2023-02-21 Intel Corporation Multiple dies hardware processors and methods
CN108228094B (zh) * 2016-12-09 2023-11-17 英特尔公司 存储器侧高速缓存中通路的伺机增加
CN108227896A (zh) * 2016-12-09 2018-06-29 英特尔公司 用于并行多步骤功率管理流程的指令和逻辑
CN108228094A (zh) * 2016-12-09 2018-06-29 英特尔公司 存储器侧高速缓存中通路的伺机增加
CN108227896B (zh) * 2016-12-09 2024-03-12 英特尔公司 用于并行多步骤功率管理流程的指令和逻辑
CN108228484A (zh) * 2016-12-12 2018-06-29 英特尔公司 针对处理器中的高速缓存利用的无效读取
CN108268386A (zh) * 2016-12-30 2018-07-10 英特尔公司 加速硬件中的存储器排序
CN108268423A (zh) * 2016-12-31 2018-07-10 英特尔公司 实现用于具有写到读依赖关系的稀疏线性代数运算的增强的并行性的微架构
CN108268423B (zh) * 2016-12-31 2023-10-13 英特尔公司 实现用于具有写到读依赖关系的稀疏线性代数运算的增强的并行性的微架构
CN110168510A (zh) * 2017-01-12 2019-08-23 国际商业机器公司 用于延长私有高速缓存中的高速缓存行的独占持有的设施
CN108334458A (zh) * 2017-01-18 2018-07-27 英特尔公司 存储器高效的末级高速缓存架构
CN108334458B (zh) * 2017-01-18 2023-09-12 英特尔公司 存储器高效的末级高速缓存架构
CN108363668A (zh) * 2017-01-26 2018-08-03 英特尔公司 线性存储器地址变换和管理
CN108363668B (zh) * 2017-01-26 2024-03-08 英特尔公司 线性存储器地址变换和管理
CN110249302A (zh) * 2017-02-06 2019-09-17 微软技术许可有限责任公司 在处理器核上同时执行多个程序
CN108694057A (zh) * 2017-03-31 2018-10-23 英特尔公司 用于改善主机到设备通信以获得最优功率和性能的高效型基于范围的存储器回写
CN108694072A (zh) * 2017-04-07 2018-10-23 英特尔公司 用于高效图形虚拟化的设备及方法
CN109215728B (zh) * 2017-07-01 2024-05-03 太浩研究有限公司 用于分布式存储器危险检测和错误恢复的存储器电路和方法
CN109215728A (zh) * 2017-07-01 2019-01-15 英特尔公司 用于分布式存储器危险检测和错误恢复的存储器电路和方法
CN109656710A (zh) * 2017-09-15 2019-04-19 畅想科技有限公司 资源分配
US11593295B2 (en) 2018-06-30 2023-02-28 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
CN110908929A (zh) * 2018-09-18 2020-03-24 辉达公司 用于高带宽缩放的一致数据高速缓存
CN110908929B (zh) * 2018-09-18 2023-06-09 辉达公司 用于高带宽缩放的一致数据高速缓存
CN111143174A (zh) * 2018-11-02 2020-05-12 辉达公司 在共享功率/热约束下操作的硬件的最佳操作点估计器
CN111143174B (zh) * 2018-11-02 2023-09-05 辉达公司 在共享功率/热约束下操作的硬件的最佳操作点估计器
CN111666253A (zh) * 2019-03-07 2020-09-15 国际商业机器公司 向具有共享存储器的共享处理元件的系统传递可编程数据
CN111666253B (zh) * 2019-03-07 2023-05-12 国际商业机器公司 向具有共享存储器的共享处理元件的系统传递可编程数据
US11907713B2 (en) 2019-12-28 2024-02-20 Intel Corporation Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator

Also Published As

Publication number Publication date
US20170242700A1 (en) 2017-08-24
US20140149718A1 (en) 2014-05-29
WO2014084919A1 (en) 2014-06-05
US9563425B2 (en) 2017-02-07
KR101842058B1 (ko) 2018-03-27
DE112013004867T5 (de) 2015-07-02
KR20150060884A (ko) 2015-06-03
CN104937539B (zh) 2018-09-18
US10152325B2 (en) 2018-12-11

Similar Documents

Publication Publication Date Title
CN104937539A (zh) 用于提供推入缓冲器复制和存储功能的指令和逻辑
JP6207095B2 (ja) 条件付きループをベクトル化する命令及び論理
TWI584192B (zh) 提供向量混合與置換功能的指令與邏輯(二)
CN103959237B (zh) 用于提供向量横向比较功能的指令和逻辑
CN108292215B (zh) 用于加载-索引和预取-聚集操作的指令和逻辑
CN107729048B (zh) 提供向量压缩和旋转功能的指令和逻辑
CN103827814B (zh) 用于提供利用跨越功能的向量加载操作/存储操作的指令和逻辑
TWI731892B (zh) 用於以通道為基礎的跨步儲存操作之指令及邏輯
CN108369509B (zh) 用于基于通道的跨步分散操作的指令和逻辑
CN108369516B (zh) 用于加载-索引和预取-分散操作的指令和逻辑
CN104321741A (zh) 双舍入组合浮点乘法和加法
CN103827813A (zh) 用于提供向量分散操作和聚集操作功能的指令和逻辑
CN104049945A (zh) 用于融合指令以在多个测试源上提供或(or)测试和与(and)测试功能的方法和装置
CN104915181A (zh) 条件存储器错误帮助抑制
TWI743064B (zh) 用於取得多重向量元素操作之指令及邏輯
TW201723814A (zh) 用於可程式化組構層級與快取之指令及邏輯
CN104484284A (zh) 用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑
CN105453071A (zh) 用来提供向量族群计数功能的方法、设备、指令和逻辑
CN103827815A (zh) 用于提供利用跨越和掩码功能的向量加载和存储的指令和逻辑
CN104025033A (zh) 利用控制操纵的simd可变移位和循环
TWI720056B (zh) 用於設置多重向量元素操作之指令及邏輯
CN104050077A (zh) 利用多个测试源来提供或(or)测试和与(and)测试功能的可融合指令和逻辑
CN104781803A (zh) 用于架构不同核的线程迁移支持
CN103959236A (zh) 用于提供向量横向多数表决功能的指令和逻辑
CN105359129A (zh) 用于提供用于基因组测序和比对的族群计数功能的方法、装置、指令以及逻辑

Legal Events

Date Code Title Description
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant