CN104915181B - 用于条件存储器错误帮助抑制的方法、处理器和处理系统 - Google Patents

用于条件存储器错误帮助抑制的方法、处理器和处理系统 Download PDF

Info

Publication number
CN104915181B
CN104915181B CN201510080157.4A CN201510080157A CN104915181B CN 104915181 B CN104915181 B CN 104915181B CN 201510080157 A CN201510080157 A CN 201510080157A CN 104915181 B CN104915181 B CN 104915181B
Authority
CN
China
Prior art keywords
memory
instruction
mask
storage
mistake
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.)
Expired - Fee Related
Application number
CN201510080157.4A
Other languages
English (en)
Other versions
CN104915181A (zh
Inventor
Z·斯波伯
R·凡伦天
O·利维
M·米谢利
G·奥菲尔
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 CN104915181A publication Critical patent/CN104915181A/zh
Application granted granted Critical
Publication of CN104915181B publication Critical patent/CN104915181B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • 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, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Abstract

在一些公开的实施例中,指令执行逻辑提供条件存储器错误帮助抑制。处理器的一些实施例包括解码级,用于解码一个或多个指令,所述指令指定:存储器操作集合、一个或多个寄存器以及一个或多个存储器地址。一个或多个执行单元响应于一个或多个经解码的指令生成用于存储器操作集合的所述一个或多个存储器地址。指令执行逻辑记录一个或多个错误抑制位以指示是否对存储器操作集合的一个或多个部分进行掩码。当存储器操作集合中的错误的一个对应于存储器操作集合中被所述一个或多个错误抑制位指示为被掩码的部分时,抑制错误生成逻辑考虑对应于存储器操作集合中的所述错误的一个的存储器错误。

Description

用于条件存储器错误帮助抑制的方法、处理器和处理系统
技术领域
本公开涉及处理逻辑、微处理器以及相关联的指令集架构的领域,该指令集架构在被处理器或其他处理逻辑所执行时可有条件地执行逻辑、数学和/或其他功能性操作,诸如加载或存储存储器数据。具体地,本公开涉及用于提供条件存储器错误帮助抑制的指令执行逻辑。
背景技术
现代的诸多处理器通常包括指令以用于提供计算量密集但给出高度数据并行性的操作,这些指令可通过使用多种数据存储设备的高效实现来使用,这些数据存储设备诸如为:单指令多数据(SIMD)向量寄存器。
将应用或软件代码向量化可包括使该应用在特定系统或指令集架构(诸如例如宽或大宽度向量架构)上编译、安装和/或运行。对于一些应用,由于向量宽度增加(例如用于诸如三维(3D)图像渲染之类的操作),存储器访问可能是复杂的、不一致的或不连续的。用于向量化进程的存储器(memory)可能被存储在不连续或不邻近的存储器位置中。多种架构可能需要额外的指令,这些额外的指令最小化了指令吞吐量,并显著增加在执行任何算术操作之前对寄存器中的数据进行排序所需的时钟周期的数量。
用于改善存储器访问和对去往和来自更宽向量的数据进行排序的机制可包括实现聚集和分散操作,以针对来自其他非本地和/或不连续的存储器位置的数据产生本地连续的存储器访问。聚集操作可从存储装置中的一组不连续或随机的存储器位置收集数据,并将不同的数据组合到紧缩(packed)结构中。分散操作可将紧缩结构中的元素散开至一组不连续或随机的存储器位置。其他机制可包括采用常规跨距的加载和存储,用于从存储设备中的不连续存储器位置的集合中收集数据并将数据组合到紧缩结构中,或将紧缩结构中的元素分散到存储设备中的不连续存储器位置的集合中。再一些其他机制可包括加载和存储,用于从存储设备中的连续存储器位置的集合中收集数据并将数据稀疏地分散在向量结构中,或将稀疏向量结构中的元素合并到存储设备中的连续存储器位置的集合中。利用这种机制使应用或软件代码向量化可包括利用断言掩码的条件加载和存储存储器位置。这些存储器位置中的一些可能未被缓存,或已经被移出物理存储器的分页。
如果这些操作由于页面错误或一些其他原因而在加载和存储存储器位置的中间中断,在一些架构下,机器的状态可能未被保存,从而需要重复整个操作,而不是在该操作中断的位置处重新开始。由于在任一重复操作上可能需要多次存储器访问,所以可能需要许多时钟周期来完成,任何后续的依赖算术操作必须等待该重复操作完成。在一些可选架构中,在存储器位置的任何成功加载和存储之后,相反可保存机器的状态,但任何发生的错误可被推迟,直到向量指令的引退。在利用断言掩码有条件地加载和存储存储器位置的情况下,一些发生的错误或异常可能对应于一些假想存储器访问,对于这些假想存储器访问而言可能已使用断言掩码来抑制实际存储器访问。然而,即便是已经将断言掩码用于抑制错误的存储器访问时,在向量指令引退时对任何推迟的错误或异常的处理可导致延迟。这样的延迟代表瓶颈,该瓶颈会限制例如原本预期从宽或大宽度向量架构得到的性能优势。
到目前为止,尚未充分探索针对这样的性能受限问题和瓶颈的潜在解决方案。
附图说明
在附图的各图中作为示例而非限制地示出本发明。
图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示出利用断言掩码执行向量加载和/或存储以提供条件存储器错误帮助抑制的处理器微架构的一个可选实施例的诸个要素。
图15A示出将断言掩码映射到指令缓冲器中的错误抑制字段以提供条件存储器错误帮助抑制的一个实施例。
图15B示出将断言掩码映射到指令缓冲器中的错误抑制字段以提供条件存储器错误帮助抑制的可选实施例。
图15C示出将断言掩码映射到指令缓冲器中的错误抑制字段以提供条件存储器错误帮助抑制的另一个可选实施例。
图15D示出将断言掩码映射到指令缓冲器中的错误抑制字段以提供条件存储器错误帮助抑制的另一个可选实施例。
图16A示出利用断言掩码执行向量加载和/或存储以提供条件存储器错误帮助抑制的过程的一个实施例的流程图。
图16B示出利用断言掩码执行向量存储以提供条件存储器错误帮助抑制的过程的一个实施例的流程图。
图16C示出利用断言掩码执行向量加载以提供条件存储器错误帮助抑制的过程的一个实施例的流程图。
具体实施方式
以下描述公开了在处理器、计算机系统或其他处理设备之内或与处理器、计算机系统或其他处理设备相关联的的指令和处理逻辑,其用于提供利用断言掩码的向量加载和/或存储以提供条件存储器错误帮助抑制。
本文中公开的一些实施例包括用于提供尤其用于向量存储器操作的条件存储器错误帮助抑制的指令执行逻辑。处理器的一些实施例包括解码级,用于解码指令,该指令指定:存储器操作集合、源寄存器和一个或多个存储器地址。在一些实施例中,所述指令可以是单指令多数据(SIMD)指令。一个或多个执行单元响应于经解码的指令生成用于存储器操作集合的所述一个或多个存储器地址。指令执行逻辑记录一个或多个错误抑制位以指示存储器操作集合的一个或多个部分是否被掩码。只要存储器操作集合中的一个或多个对应于存储器操作集合中被指示为由所述一个或多个错误抑制位掩码的部分,则抑制错误生成逻辑考虑对应于存储器操作集合中的所述一个或多个的存储器错误。
在一些实施例中,SIMD指令可以是向量加载操作类型的指令,其指定存储器加载操作集合,该操作集合之后是算术操作或类型转换,或者可以仅是向量加载指令。在一些实施例中,SIMD指令也可以是向量存储操作类型的指令,其指定存储器存储操作集合,该操作之前是算术操作或类型转换,或者可以仅是向量存储指令。响应于经解码的SIMD指令,可将一个或多个微操作存储在微操作队列中。可将该一个或多个微操作存储为简单的微操作、或复杂的微操作、或作为微代码入口点、或作为融合(fused)微操作。在处理器流水线的一些实施例中,分配器/重命名器可将资源(例如,寄存器等)分配给包括指令缓冲器条目的指令。指令缓冲器可包括例如重排序缓冲器(ROB),其用于跟踪尤其是处理器的无序执行引擎中的指令执行的先后顺序。在一些实施例中,向量加载微操作和向量算术微操作二者可占用单个指令缓冲器条目,从而最终在同一时间被引退。同样,向量存储地址微操作和向量存储数据微操作二者可占用单个指令缓冲器条目,从而最终在同一时间被引退。在可选实施例中,它们可各自占用单独的指令缓冲器条目。
一个或多个执行单元可响应于一个或多个经解码的指令生成用于对应的存储器操作集合的存储器地址。在一些实施例中,一个或多个SIMD指令可使用一个或多个断言掩码来有条件地启用/禁用用于特定的向量元素的指定操作,或者使用一个或多个完成掩码来跟踪特定的向量元素的成功完成并避免重新开始指令之后重复访问。在一些处理器架构中,在存储器位置的成功加载和存储之后,可保存机器的状态,但任何发生的错误或异常可被推迟,直到向量指令的引退。在利用断言掩码或完成掩码来有条件地加载和存储存储器位置的情况下,一些发生的错误或异常可对应于一些存储器访问,可能已为这些存储器访问使用断言掩码或完成掩码来抑制实际存储器访问的其中某部分。在这种情况下,在向量指令的引退时任何推迟的错误或异常的处理可包括错误帮助级以检查是否将断言掩码或完成掩码用于抑制错误的存储器访问,由此避免为经掩码的存储器错误调用错误/异常处理器。
尽管错误帮助级可避免为经掩码的存储器错误实际调用错误处理器,但它仍需要一些处理(例如,在微代码中读取掩码寄存器并将其与错误元素进行比较),当没有未经掩码的错误时,这些处理可导致与分支错误预测惩罚相当的流水线性能惩罚。因此,一些实施例可在执行级中包括逻辑,该逻辑用于读取掩码寄存器并将一个或多个错误抑制位记录在相应的指令缓冲器条目中的Z指示符(例如,对于采用零来对向量元素进行掩码的掩码,把它看作是零(0)指示符)中。Z指示符中的一个或多个错误抑制位可用于指示存储器操作集合中的一个或多个部分是否被掩码以在引退时抑制相应的推迟错误。应意识到,既使存储器错误相当不频繁,但与只要在指令引退时需要就检查掩码寄存器相比,在执行级读取掩码寄存器,并在相应的指令缓冲器条目的Z指示符中记录一个或多个错误抑制位更有配置效率。此外,在一些实施例中,加载操作或存储地址操作可能始终不访问掩码寄存器,因为使加载或存储地址依赖于掩码可延迟操作并使性能降级。因此用于执行加载操作或存储地址操作的执行逻辑可能不在掩码物理寄存器组附近或者甚至不能访问掩码物理寄存器组。为此,向量加载操作和向量算术操作占用单个指令缓冲器条目的实施例允许在算术操作的执行级中访问掩码寄存器并且允许两个操作最终在同一时间引退。同样,向量存储地址操作和向量存储数据操作二者占用单个指令缓冲器条目的实施例可允许在存储数据操作的执行级中访问掩码寄存器,以在相应的指令缓冲器条目的Z指示符中记录一个或多个错误抑制位,而且两个操作最终在同一时间引退。因此,在引退时,可将Z指示符提供给错误帮助逻辑以在没有未被掩码的错误的情况下抑制对错误的进一步处理,由此避免和处理器流水线中的错误预测的分支同级别的性能惩罚。
因此,只要存储器操作集合中的一个或多个对应于存储器操作集合中被Z指示符中的错误抑制位所掩码的部分,则可抑制错误帮助级处的错误生成逻辑考虑对应于存储器操作集合的一个或多个的存储器错误。应意识到,当经掩码的错误以任何频率发生时(例如,在展开的(unrolled)循环访问末端,或当尤其从/向存储器中稀疏分散的位置进行向量加载/存储时),所导致的性能惩罚可体现出瓶颈,该瓶颈会限制例如原本预期从宽或大宽度向量架构得到的性能优势。因此,根据利用断言掩码执行向量加载和/或存储以提供条件存储器错误帮助抑制的处理器的实施例避免这种性能惩罚,体现出流水线处理中的显著的技术进步。
在以下描述中,陈述了诸如处理逻辑、处理器类型、微架构条件、事件、启用机制等多种特定细节,以提供对本发明实施例的更透彻理解。然而,本领域技术人员应当领会,没有这些具体细节也可实践本发明。此外,没有详细示出一些公知的结构、电路等等,以避免不必要地模糊本发明的实施例。
虽然下述的诸个实施例参照处理器来描述,但其他实施例也适用于其他类型的集成电路和逻辑设备。本发明的实施例的类似技术和教导可应用于其它类型的电路或半导体器件,这些其它类型的电路或半导体器件也可受益于更高的流水线吞吐量和提高的性能。本发明的诸个实施例的教导适用于执行数据操纵的任何处理器或机器。然而,本发明不限于执行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技术可被用于处理器中,这些处理器将寄存器中的诸个位(bit)逻辑地划分成多个固定尺寸或可变尺寸的数据元素,每个数据元素表示单独的值。例如,在一个实施例中,64位寄存器中的诸个位可被组织为包含四个单独的16位数据元素的源操作数,每个数据元素表示单独的16位值。这种数据类型可被称为“紧缩”(packed)数据类型或“向量”数据类型,并且该数据类型的操作数被称为紧缩数据操作数或向量操作数。在一个实施例中,紧缩数据项或向量可以是存储在单个寄存器中的紧缩数据元素的序列,并且紧缩数据操作数或向量操作数可以是SIMD指令(或“紧缩数据指令”或“向量指令”)的源操作数或目的地操作数。在一个实施例中,SIMD指令指定了将要对两个源向量操作数执行的单个向量操作,以生成具有相同或不同尺寸的、具有相同或不同数量的数据元素的、具有相同或不同数据元素顺序的目的地向量操作数(也被称为结果向量操作数)。
诸如由酷睿(CoreTM)处理器(具有包括x86、MMXTM、流SIMD扩展(SSE)、SSE2、SSE3、SSE4.1、SSE4.2、AVX、AVX2和AVX512指令的指令集)、ARM处理器(诸如,ARM 处理器族,具有包括向量浮点(VFP)和/或NEON指令的指令集)、MIPS处理器(诸如,中国科学院计算技术研究所(ICT)开发的龙芯(Loongson)处理器族)所使用的SIMD技术之类的SIMD技术在应用性能上带来了极大的提高(CoreTM和MMXTM是加利福尼亚州圣克拉拉市的英特尔公司的注册商标或商标)。
在一个实施例中,目的地寄存器/数据和源寄存器/数据是表示对应数据或操作的源和目的地的通用术语。在一些实施例中,它们可由寄存器、存储器或具有与所示出的那些名称或功能不同的名称或功能的其他存储区域所实现。例如,在一个实施例中,“DEST1”可以是临时存储寄存器或其他存储区域,而“SRC1”和“SRC2”可以是第一和第二源存储寄存器或其他存储区域,等等。在其他实施例中,SRC和DEST存储区域中的两个或更多区域可对应于相同存储区域中的不同数据存储元素(例如,SIMD寄存器)。在一个实施例中,例如通过将对第一和第二源数据执行的操作的结果写回至两个源寄存器中作为目的地寄存器的那个寄存器,源寄存器中的一个也可以作为目的地寄存器。
图1A是根据本发明的一个实施例的示例性计算机系统的框图,该计算机系统以处理器来形成,该处理器包括执行单元以执行指令。根据本发明,诸如根据在此所描述的实施例,系统100包括诸如处理器102之类的组件,以采用包括逻辑的执行单元来执行算法以处理数据。系统100代表基于可从美国加利福尼亚州圣克拉拉市的英特尔公司获得的III、4、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耦合至MCH116。
系统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能执行至少一个指令。对于一个实施例,处理核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,SIMD操作包括文本串比较操作。处理核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,用于识别指令集163的指令以供执行单元162执行,指令集163包括根据一个实施例的指令。对于替代实施例,SIMD协处理器161也包括解码器165B的至少一部分以解码指令集163的指令。处理核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、以及解码器165以识别指令集163的指令,指令集163包括根据一个实施例的指令。
图2是包括逻辑电路以执行根据本发明的一个实施例的指令的处理器200的微架构的框图。在一些实施例中,根据一个实施例的指令可被实现为对具有字节尺寸、字尺寸、双字尺寸、四字尺寸等并具有诸多数据类型(诸如单精度和双精度整数和浮点数据类型)的数据元素执行操作。在一个实施例中,有序前端201是处理器200的一部分,其取出将要被执行的指令,并准备这些指令以在稍后供处理器流水线使用。前端201可包括若干个单元。在一个实施例中,指令预取器226从存储器取出指令,并将指令馈送至指令解码器228,指令解码器228随后解码或解释指令。例如,在一个实施例中,解码器将所接收到的指令解码为机器可执行的被称为“微指令”或“微操作”(也称为微op或uop)的一个或多个操作。在其他实施例中,解码器将指令解析为操作码和对应的数据及控制字段,它们被微架构用于执行根据一个实施例的操作。在一个实施例中,追踪(trace)缓存230取得经解码的微操作,并将它们组装为微操作队列234中的程序排序的序列或轨迹,以用于执行。当追踪缓存230遇到复杂指令时,微代码ROM 232提供完成操作所需的微操作。
一些指令被转换为单个微操作,而其他指令需要若干个微操作以完成整个操作。在一个实施例中,如果需要超过四个微操作来完成指令,则解码器228访问微代码ROM 232以处理该指令。对于一个实施例,指令可被解码为少量的微操作以用于在指令解码器228处进行处理。在另一个实施例中,如果需要数个微操作来完成操作,则可将指令存储在微代码ROM 232中。追踪(trace)缓存230参考进入点可编程逻辑阵列(PLA)来确定正确的微指令指针,微指令指针用于从微代码ROM 232读取微代码序列以完成根据一个实施例的一个或多个指令。在微代码ROM 232完成对于指令的微操作排序之后,机器的前端201恢复从追踪缓存230提取微操作。
指令在无序执行引擎203处被准备好用于执行。无序执行逻辑具有数个缓冲器,用于将指令流平滑并且重排序,以优化当指令流进入流水线后且经调度以供执行时的性能。分配器逻辑分配每个微操作为了执行所需要的机器缓冲器和资源。寄存器重命名逻辑将诸个逻辑寄存器重命名到寄存器组中的诸个条目上。在指令调度器(存储器调度器、快速调度器202、慢速/通用浮点调度器204、简单浮点调度器206)之前,分配器还在两个微操作队列中的其中一个微操作队列中为每个微操作分配条目,一个队列用于存储器操作,另一个队列用于非存储器操作。微操作调度器202、204、206基于它们的依赖输入寄存器操作数源的准备就绪以及诸个微操作完成它们的操作所需的执行资源的可用性来确定微操作何时准备好用于执行。一个实施例的快速调度器202可在主时钟周期的每半个周期上进行调度,而其他调度器可仅仅每个主处理器时钟周期调度一次。调度器对分配端口进行仲裁以调度微操作以供执行。
寄存器组208、210位于调度器202、204、206和执行块211中的执行单元212、214、216、218、220、222、224之间。存在单独的寄存器组208、210,分别用于整数和掩码或浮点操作。一个实施例的每个寄存器组208、210也包括旁路网络,旁路网络可将刚完成的还没有被写入寄存器组的结果旁路或转发给新的依赖微操作。整数寄存器组208和浮点寄存器组210也能够彼此通信数据。对于一个实施例,整数寄存器组208被划分为两个单独的寄存器组,一个寄存器组用于低阶的32位数据,第二个寄存器组用于高阶的32位数据。一个实施例的浮点寄存器组210具有128位宽度的条目,因为浮点指令通常具有从32、64、80至128位宽度的操作数。本文所讨论的向量操作不仅是浮点操作。各种实施例可包括可具有紧缩整数数据元素的指令,以及可具有紧缩浮点数据元素的指令。
执行块211包括执行单元212、214、216、218、220、222、224,在执行单元212、214、216、218、220、222、224中实际执行指令。该区块包括寄存器组208、210,寄存器组208、210存储微指令需要执行的整数和浮点数据操作数值。一个实施例的处理器200由数个执行单元组成:地址产生单元(AGU)212、AGU 214、快速ALU216、快速ALU 218、慢速ALU 220、浮点ALU222、浮点移动单元224。对于一个实施例,浮点执行块222、224执行浮点、MMX、SIMD、SSE或其他操作。一个实施例的浮点ALU 222包括64位乘64位的浮点除法器,用于执行除法、平方根、以及余数微操作。对于本发明的诸个实施例,涉及浮点值的指令可使用浮点硬件来处理。在一个实施例中,ALU操作去往高速ALU执行单元216、218。一个实施例的高速ALU 216、218可执行高速操作,有效等待时间为半个时钟周期。对于一个实施例,大多数复杂整数操作去往慢速ALU 220,因为慢速ALU 220包括用于长等待时间类型操作的整数执行硬件,诸如,乘法器、移位器、标记逻辑和分支处理。存储器加载/存储操作由AGU 212、214来执行。对于一个实施例,整数ALU 216、218、220被描述为对64位数据操作数执行整数操作。在替换实施例中,ALU 216、218、220可被实现为支持多种数据位,包括16、32、128、256等等。类似地,浮点单元222、224可被实现为支持具有多种宽度的位的一系列操作数。对于一个实施例,浮点单元222、224可结合SIMD和多媒体指令对128位宽度紧缩数据操作数进行操作。
在一个实施例中,在父代加载已完成执行之前,微操作调度器202、204、206就分派依赖操作。因为在处理器200中微操作被投机性地调度和执行,所以处理器200也包括处理存储器未命中的逻辑。如果数据加载在数据缓存中未命中,则可能存在带着临时错误数据离开调度器并运行在流水线中的依赖操作。重放机制跟踪使用错误数据的指令,并重新执行这些指令。仅仅依赖操作需要被重放,而允许独立操作完成。处理器的一个实施例的调度器和重放机制也被设计为捕捉指令,该指令提供利用断言掩码的向量加载和/或存储以提供条件存储器错误帮助抑制。
术语“寄存器”可指代被用作为指令的一部分以标识操作数的板上处理器存储位置。换句话说,寄存器是那些从处理器外部(从编程者的角度来看)可用的处理器存储位置。然而,实施例的寄存器不限于表示特定类型的电路。相反,实施例的寄存器能够存储并提供数据,能够执行在此所述的功能。在此所述的寄存器可由处理器中的电路使用任何数量不同技术来实现,诸如,专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合,等等。在一个实施例中,整数寄存器存储三十二位整数数据。一个实施例的寄存器组也包含八个多媒体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示出了可替代的寄存器内数据存储格式。每个紧缩数据可包括超过一个独立数据元素。示出了三个紧缩数据格式:紧缩半数据元素314、紧缩单数据元素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示出了SIMD寄存器中字7到字0如何被存储。有符号紧缩字表示347类似于无符号紧缩字寄存器内表示346。注意到,每个字数据元素的第十六位是符号指示符。无符号紧缩双字表示348示出了双字数据元素如何存储。有符号紧缩双字表示349类似于无符号紧缩双字寄存器内表示348。注意到,必要的符号位是每个双字数据元素的第三十二位。
图3D是操作编码(操作码)格式360的一个实施例的描述,其具有32或更多位,以及与可从美国加利福尼亚州圣克拉拉市的英特尔公司的万维网(www)intel.com/products/processor/manuals/上获得的“64和IA-32英特尔架构软件开发者手册卷2A和2B:指令集参考A-Z(64and IA-32Intel Architecture Software Developer’s ManualVolumes 2A and 2B:Instruction Set Reference A-Z)”中描述的操作码格式类型相对应的寄存器/存储器操作数寻址模式。在一个实施例中,可通过字段361和362中的一个或多个字段来编码指令。可以标识每个指令多达两个操作数位置,包括多达两个源操作数标识符364和365。对于一个实施例,目的地操作数标识符366与源操作数标识符364相同,而在其他实施例中它们不相同。对于替代实施例,目的地操作数标识符366与源操作数标识符365相同,而在其他实施例中它们不相同。在一个实施例中,由源操作数标识符364和365所标识的源操作数中的一个被指令的结果所覆写,而在其他实施例中,标识符364对应于源寄存器元素,而标识符365对应于目的地寄存器元素。对于一个实施例,操作数标识符364和365可被用于标识32位或64位的源和目的地操作数。
图3E是对具有四十个或更多位的另一个替换式操作码(opcode)格式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指令,其具有CDP操作码字段382和389。对于替代实施例,该类型CDP指令操作可由字段383、384、387和388中的一个或多个来编码。可标识每个指令多达三个操作数位置,包括多达两个源操作数标识符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 Programming Reference)中描述的操作码格式类型相对应的的另一替代操作编码(操作码)格式397,其用于提供利用断言掩码的向量加载和/或存储以提供条件存储器错误帮助抑制。
原始x86指令集向1字节操作码提供多种地址字节(syllable)格式以及包含在附加字节中的立即操作数,其中可从第一个“操作码”字节中获知附加字节的存在。此外,预留特定字节值作为对操作码的修改符(称为前缀prefix,因为它们应被放置在指令之前)。当256个操作码字节的原始配置(包括这些特殊前缀值)耗尽时,指定单个字节以跳出(escape)到新的256个操作码集合。因为添加了向量指令(诸如,SIMD),即便通过使用前缀进行了扩展以后,也需要产生更多的操作码,并且“两字节”操作码映射也可能不够。为此,将新指令加入附加的映射中,附加的映射使用两字节加上可选的前缀作为标识符。
除此外,为了便于在64位模式中实现额外的寄存器,在前缀和操作码(以及任何的用于确定操作码所需的跳出字节)之间使用额外的前缀(被称为“REX”)。在一个实施例中,REX具有4个“有效载荷”位,以指示在64位模式中使用附加的寄存器。在其他实施例中,可具有比4位更少或更多的位。至少一个指令集的通用格式(一般对应于格式360和/或格式370)被一般地示出如下:
[prefixes][rex]escape[escape2]opcode modrm(等等)
操作码格式397对应于操作码格式370,并包括可选的VEX前缀字节391(在一个实施例中,以十六进制的C4开始)以替代大部分的其他常用的传统指令前缀字节和跳出代码。例如,以下示出了使用两个字段来编码指令的实施例,其可在原始指令中存在第二跳出代码时、或在需要在REX字段中使用额外位(诸如,XB和W字段)时被使用。在以下所示的实施例中,传统跳出由新的跳出值所表示,传统前缀被完全压缩为“有效载荷(payload)”字节的一部分,传统前缀被重新申明(reclaim)并可用于未来的扩展,第二跳出代码被压缩在“映射(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,并结合可选比例-索引-基址(scale-index-baseSIB)标识符393、可选位移标识符394以及可选立即数字节395,可以标识每个指令多达四个操作数位置和掩码。对于一个实施例,EVEX前缀字节396可被用于标识32位或64位的源和目的地操作数和/或128位、256位或512位SIMD寄存器或存储器操作数。对于一个实施例,由操作码格式398所提供的功能可与操作码格式370或397形成冗余,而在其他实施例中它们不同。操作码格式398允许由MOD字段373以及由可选的(SIB)标识符393、可选的位移标识符394以及可选的立即数字节395所部分指定的利用掩码的寄存器到寄存器寻址、存储器到寄存器寻址、由存储器对寄存器寻址、由寄存器对寄存器寻址、由立即数对寄存器寻址、寄存器至存储器寻址。至少一个指令集的通用格式(一般对应于格式360和/或格式370)被一般地示出如下:
evex 1 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位或更大(或更小)的向量寄存器上提供利用断言掩码的向量加载和/或存储以提供条件存储器错误帮助抑制。
通过以下示例示出一些示例的利用断言掩码以提供条件存储器错误帮助抑制的向量或条件加载和/或存储:
图4A是示出根据本发明的至少一个实施例的有序流水线以及寄存器重命名级、无序发布/执行流水线的框图。图4B是示出根据本发明的至少一个实施例的要被包括在处理器中的有序架构核以及寄存器重命名逻辑、无序发布/执行逻辑的框图。图4A中的实线框示出了有序流水线,而虚线框示出了寄存器重命名、无序发布/执行流水线。类似地,图4B中的实线框示出了有序架构逻辑,而虚线框示出了寄存器重命名逻辑以及无序发布/执行逻辑。
在图4A中,处理器流水线400包括获取级402、长度解码级404、解码级406、分配级408、指令缓冲级409、重命名级410、调度(也被称为指派或发布)级412、寄存器读取/存储器读取级414、执行级416、错误帮助抑制存储417、写回/存储器写入级418、引退中的错误抑制级419、错误帮助级423、异常处理级422以及提交级424。
在一个实施例中,解码级406对指定存储器加载操作集合、目的地寄存器和一个或多个存储器地址的单指令多数据(SIMD)指令进行解码。例如,SIMD指令可以是向量加载操作类型的指令,其指定存储器加载操作集合,之后是算术操作或类型转换,或者可以仅是向量加载指令。在解码级406之后,一些实施例可包括分配级408,其中将资源分配给包括缓冲器409位置的指令。缓冲器409可包括例如重排序缓冲器(ROB),其用于跟踪尤其是无序执行引擎中的指令执行的先后顺序。在一些实施例中,向量加载微操作和向量算术微操作二者可占用单个缓冲器409位置,从而最终在同一时间被引退。在可选实施例中,它们可占用分离的缓冲器409条目。
一个或多个执行单元可响应于经解码的SIMD指令生成用于加载操作集合的存储器地址。在一些实施例中,SIMD指令可使用断言掩码来有条件地启用/禁用用于特定的向量元素的指定操作,或者使用完成掩码来跟踪特定的向量元素的成功完成并避免重新开始指令之后重复访问。在一些处理器架构中,在存储器位置的成功加载和存储之后,可保存机器的状态,但任何发生的错误或异常可被推迟,直到向量指令的引退。在利用断言掩码或完成掩码来有条件地加载和存储存储器位置的情况下,一些发生的错误或异常可对应于一些存储器访问,可能已为这些存储器访问使用断言掩码或完成掩码以抑制实际存储器访问的其中一些。在这种情况下,在向量指令的引退时任何推迟的错误或异常的处理可包括错误帮助级423以检查是否已将断言掩码或完成掩码用于抑制错误的存储器访问,由此避免为经掩码的存储器错误而调用异常处理级422。
尽管错误帮助级423可避免为经掩码的存储器错误实际调用错误处理器,但它需要一些处理(例如,在微代码中读取掩码寄存器并将其与错误元素进行比较),当没有未经掩码的错误时,这些处理可导致和分支错误预测惩罚程度相当的性能惩罚。因此,流水线400的实施例可包括执行级416,以读取掩码寄存器并将一个或多个错误抑制位记录在相应的缓冲器409条目中的Z指示符417中,以指示加载操作集合中的一个或多个部分是否被掩码以便在引退级419抑制推迟的错误。因此,在引退时,可将Z指示符419提供给错误帮助级423以在没有未被掩码的错误的情况下抑制进一步处理,由此避免和流水线400中的错误预测的分支程度相当的性能惩罚。
因此,只要加载操作集合中的一个或多个对应于由Z指示符419中的一个或多个错误抑制位指示为被掩码的加载操作集合的一部分,可抑制帮助级423处的错误生成逻辑考虑与加载操作集合中的一个或多个相对应的存储器错误。应意识到,当经掩码的错误以任何频率发生时(例如,在展开的循环访问末端,或当尤其从/向存储器中稀疏分散的位置进行向量加载/存储时),所导致的性能惩罚可体现出瓶颈,该瓶颈会限制例如原本预期从宽或大宽度向量架构得到的性能优势。因此,根据用于利用断言掩码执行向量加载和/或存储以提供条件存储器错误帮助抑制的流水线400的实施例避免这种性能惩罚,体现出流水线处理中的显著的技术进步。
在图4B中,箭头指示两个或更多个单元之间的耦合,且箭头的方向指示那些单元之间的数据流的方向。图4B示出了包括耦合到执行引擎单元450的前端单元430的处理器核490,且执行引擎单元和前端单元两者都耦合到存储器单元470。
核490可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或替代核类型。作为另一个选项,核490可以是专用核,诸如网络或通信核、压缩引擎、图形核或类似物。
前端单元430包括耦合到指令缓存单元434的分支预测单元432,该指令缓存单元耦合到指令转换后备缓冲器(TLB)436,该指令转换后备缓冲器耦合到指令取出单元438,指令取出单元耦合到解码单元440。解码单元或解码器可解码指令,并生成一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出,这些输出是从原始指令中解码出的、或以其他方式反映原始指令、或是从原始指令中推导而出的。解码器可使用各种不同的机制来实现。合适的机制的示例包括但不限于:查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等等。指令缓存单元434进一步耦合至存储器单元470中的第二级(L2)缓存单元476。解码单元440耦合至执行引擎单元450中的重命名/分配器单元452。
执行引擎单元450包括重命名/分配器单元452,该重命名/分配器单元耦合至引退单元454和一个或多个调度器单元456的集合。调度器单元456表示任何数目的不同调度器,包括预留站、中央指令窗等。调度器单元456耦合到物理寄存器组单元458。物理寄存器组单元458中的每一个表示一个或多个物理寄存器组,其中不同的物理寄存器组存储一个或多个不同的数据类型(诸如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、等等)、状态(诸如,指令指针,其是将要被执行的下一个指令的地址)等等。物理寄存器组单元458被引退单元454所覆盖,以示出可实现寄存器重命名和无序执行的多种方式(诸如,使用重排序缓冲器和引退寄存器组、使用未来文件(future file)、历史缓冲器、引退寄存器组;使用寄存器映射和寄存器池等等)。通常,架构寄存器从处理器外部或从编程者的视角来看是可见的。这些寄存器不限于任何已知的特定电路类型。多种不同类型的寄存器可适用,只要它们能够存储并提供在此所述的数据。合适的寄存器的示例包括但不限于:专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用物理寄存器和动态分配物理寄存器的组合等等。引退单元454和物理寄存器组单元458耦合至执行群集460。执行群集460包括一个或多个执行单元462的集合和一个或多个存储器访问单元464的集合。执行单元462可以对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整型、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但其他实施例可包括全部执行所有功能的仅一个执行单元或多个执行单元。调度器单元456、物理寄存器组单元458、执行群集460被示出为可能是复数个,因为某些实施例为某些数据/操作类型创建了诸个单独流水线(例如,均具有各自调度器单元、物理寄存器组单元和/或执行群集的标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线、和/或存储器访问流水线,并且在单独的存储器访问流水线的情况下特定实施例被实现为仅仅该流水线的执行群集具有存储器访问单元464)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以为无序发布/执行,并且其余流水线可以为有序发布/执行。
存储器访问单元464的集合耦合到存储器单元470,该存储器单元包括耦合到数据缓存单元474的数据TLB单元472,其中数据缓存单元耦合到二级(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,处理器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处理器,这些均可以从加利福尼亚圣克拉拉市的Intel公司获得。或者,处理器可以来自另一个公司,诸如来自ARM控股公司、MIPS、等等。处理器可以是专用处理器,诸如,例如,网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器、或类似物。该处理器可以被实现在一个或多个芯片上。处理器500可以是一个或多个衬底的一部分,和/或可以使用诸如例如BiCMOS、CMOS或NMOS等的多个加工技术中的任何一个技术将处理器1200实现在一个或多个衬底上。
图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包括点对点接口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 Express总线或其它第三代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耦合至CL872、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。其他逻辑和电路可被包括在图10的处理器中,包括更多的CPU或GPU以及其他外围设备接口控制器。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性数据来实现,该数据表示处理器中的各种逻辑,其在被机器读取时使得该机器生成执行本文描述的技术的逻辑。此类表示即所谓“IP核”可以存储在有形的机器可读介质(“磁带”)上并提供给各种顾客或制造商,以加载到实际制作该逻辑或处理器的编制机器中去。例如,IP核(诸如由ARM控股公司所开发的CortexTM处理器族以及由中国科学院计算技术研究所(ICT)所开发的龙芯IP核)可被授权或销售给多个客户或受许可方,诸如德州仪器、高通、苹果、或三星,并被实现在由这些客户或受许可方所制造的处理器中。
图11示出根据一个实施例的IP核开发的框图。存储器1130包括仿真软件1120和/或硬件或软件模型1110。在一个实施例中,表示IP核设计的数据可经由存储器1140(诸如,硬盘)、有线连接(诸如,互联网)1150或无线连接1160而被提供给存储器1130。由仿真工具和模型所生成的IP核信息可随后被发送给制造工厂,在制造工厂可由第三方来进行生产以执行根据至少一个实施例的至少一个指令。
在一些实施例中,一个或多个指令可以对应于第一类型或架构(例如x86),并且在不同类型或架构的处理器(例如ARM)上被转换或仿真。根据一个实施例,指令可以在任何处理器或处理器类型上执行,包括ARM、x86、MIPS、GPU或其它处理器类型或架构。
图12示出了根据一个实施例的第一类型的指令如何被不同类型的处理器所仿真。在图12中,程序1205包含一些指令,这些指令可执行与根据一个实施例的指令相同或基本相同的功能。然而,程序1205的指令可以是与处理器1215所不同或不兼容的类型和/或格式,这意味着程序1205中的类型的指令不能原生地被处理器1215所执行。然而,借助于仿真逻辑1210,程序1205的指令可被转换成能够由处理器1215所原生执行的指令。在一个实施例中,仿真逻辑被具体化在硬件中。在另一实施例中,仿真逻辑具体化在有形的机器可读介质中,该机器可读介质包含将程序1205中的该类指令翻译成直接能由处理器1215执行的类型的软件。在其它实施例中,仿真逻辑是固定功能或可编程硬件和存储在有形的机器可读介质上的程序的组合。在一个实施例中,处理器包含仿真逻辑,但在其它实施例中,仿真逻辑在处理器之外并由第三方提供。在一个实施例中,处理器能够通过执行包含在处理器中或者与之相关联的微代码或固件,加载具体化在包含软件的有形的机器可读介质中的仿真逻辑。
图13是根据本发明的各实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,尽管作为替代,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图13示出:采用高级语言1302的程序可使用x86编译器1304来编译以生成x86二进制代码1306,该二进制代码可由具有至少一个x86指令集核的处理器1316原生地执行。具有至少一个x86指令集核1316的处理器表示任何处理器,该处理器能够通过兼容地执行或以其它方式处理(1)英特尔x86指令集核的指令集的大部分或(2)旨在具有至少一个x86指令集核的英特尔处理器上运行的应用或其它软件的目标代码版本,来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能,以实现与具有至少一个x86指令集核的英特尔处理器基本相同的结果。x86编译器1304表示能用于生成x86二进制代码1306(例如,目标代码)的编译器,该二进制代码1306可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器1316上执行。类似地,图13示出可以使用替代的指令集编译器1308来编译利用高级语言1302的程序,以生成可以由不具有至少一个x86指令集核的处理器1314(例如具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生执行的替代指令集二进制代码1310。指令转换器1312被用来将x86二进制代码1306转换成可以由不具有x86指令集核的处理器1314原生执行的代码。该转换后的代码不大可能与替代性指令集二进制代码1310相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作并由来自替代指令集的指令构成。因此,指令转换器1312通过仿真、模拟或任何其它过程来表示允许不具有x86指令集处理器或核的处理器或其它电子设备执行x86二进制代码1306的软件、固件、硬件或其组合。
图14示出包括流水线1400的处理器微架构的一个可选实施例的元素,该流水线1400利用断言掩码执行向量加载和/或存储以提供条件存储器错误帮助抑制。处理器流水线1400包括预取器1412,用于将指令(例如1402和1403)取入指令队列(IQ)1413;解码器1416,用于解码指令以产生在微操作(uOP)队列1417中的微操作(例如,1404、1405、1406和1407);分配器/重命名器1420;指令缓冲器1419;地址生成器1422;寄存器读取/存储器读取级1424;执行引擎1426;错误帮助抑制存储1427;写回/存储器写级1428;引退级1433中的错误帮助抑制1429级;错误帮助级1432和提交级1434。
在一个实施例中,解码器1416对指定存储器操作集合、源/目的地寄存器和一个或多个存储器地址的一个或多个单指令多数据(SIMD)指令进行解码。一个或多个SIMD指令可以是向量加载操作类型的指令(例如,1402),其指定存储器加载操作集合,之后是算术操作或类型转换,或者可以仅是向量加载指令。一个或多个SIMD指令可以是向量存储操作类型的指令,其指定存储器存储操作集合,该操作之前是算术操作或类型转换,或者可以仅是向量存储指令(例如,1403)。在解码器1416之后,可将一个或多个微操作存储在uOP队列1417中。可将该一个或多个微操作存储为简单的微操作(例如,1404-1407)、或复杂的微操作、或作为微代码入口点、或作为融合微操作。流水线1400的一些实施例可包括分配器/重命名器1420,其中将资源(例如,寄存器等)分配给包括缓冲器1419位置的指令。缓冲器1419可包括例如重排序缓冲器(ROB),其用于跟踪尤其是无序执行引擎1426中的指令执行的先后顺序。在一些实施例中,向量加载微操作(例如,1404)和向量算术微操作(例如,1405)二者可占用单个缓冲器1419位置(例如1408),从而最终在同一时间被引退。同样,向量存储地址微操作(例如,1406)和向量存储数据微操作(例如,1407)二者可占用单个缓冲器1419位置(例如1409),从而最终在同一时间被引退。在可选实施例中,它们可占用分离的缓冲器1419条目。
地址生成器1422的一个或多个执行单元可响应于一个或多个经解码的SIMD指令生成用于对应的存储器操作集合的存储器地址。在一些实施例中,一个或多个SIMD指令可使用一个或多个断言掩码来有条件地启用/禁用用于特定的向量元素的指定操作,或者使用一个或多个完成掩码来跟踪特定的向量元素的成功完成并避免重新开始指令之后重复访问。在一些处理器架构中,在存储器位置的成功加载和存储之后,可保存机器的状态,但任何发生的错误或异常可被推迟,直到向量指令的引退1433。在利用断言掩码或完成掩码来条件加载和存储存储器位置的情况下,一些发生的错误或异常可对应于一些存储器访问,可能已为这些存储器访问使用断言掩码或完成掩码以抑制实际存储器访问中的一些。在这种情况下,在向量指令的引退1433时对任何推迟的错误或异常的处理可包括错误帮助级1432以检查是否已将断言掩码或完成掩码用于抑制错误的存储器访问,由此避免为经掩码的存储器错误而调用错误/异常处理器。
尽管错误帮助级1432可避免为经掩码的存储器错误实际调用错误处理器,但它需要一些处理(例如,在微代码中读取掩码寄存器并将其与错误元素进行比较),当没有未经掩码的错误时,这些处理可导致和分支错误预测惩罚程度相当的流水线1400的性能惩罚。因此,流水线1400的实施例可包括执行级1426,以读取掩码寄存器并将一个或多个错误抑制位记录在相应的缓冲器1419条目中的Z指示符1427中,以指示存储器操作集合中的一个或多个部分是否被掩码,以便在引退1433时抑制推迟的错误。因此,在引退1433时,可将Z指示符1429提供给错误帮助级1432以在没有未被掩码的错误的情况下抑制进一步处理,由此避免和流水线1400中的错误预测的分支程度相当的性能惩罚。
因此,只要存储器操作集合中的一个或多个对应于由Z指示符1429中的一个或多个错误抑制位指示为被掩码的存储器操作集合的一部分,可抑制错误帮助级1432处的错误生成逻辑考虑与存储器操作集合中的一个或多个相对应的存储器错误。应意识到,当经掩码的错误以任何频率发生时(例如,在展开的循环访问末端,或当尤其从/向存储器中稀疏分散的位置进行向量加载/存储时),所导致的性能惩罚可体现出瓶颈,该瓶颈会限制例如原本预期从宽或大宽度向量架构得到的性能优势。因此,根据利用断言掩码执行向量加载和/或存储以提供条件存储器错误帮助抑制的流水线1400的实施例避免这种性能惩罚,体现出流水线处理中的显著的技术进步。
一个或多个错误抑制位(例如,417或1427)的记录可同时发生,或者替代地,在各级处发生。例如,对应于用于加载/存储的元素的每个掩码位可被记录在指令缓冲器条目中。替代地,指示所有的元素掩码位均为零(0)的单个错误抑制位可被记录在指令缓冲器条目中。在其它实施例中,可将一个或多个错误抑制位记录在错误抑制字段中以指示一个或多个最高有效的掩码位(例如,最后两个、最后四个等等)或者一个或多个最高有效和/或最低有效掩码位(例如,最后半部分和/或开始的半部分)为零(0)。在以下的示例中示出记录一个或多个错误抑制位的这种可选方式的一些实施例。
图15A示出将断言掩码映射到指令缓冲器中的错误抑制字段以提供条件存储器错误帮助抑制的一个实施例。如断言掩码的映射1501(以及本文中所示的其它映射)所示,寄存器1518的每个元素1510-1517可对应于掩码1520中的特定掩码位值,在一个实施例中掩码1520以最低有效位(LSB)1521开始且不一定包括最高有效位(MSB)1522。对应于存储器操作(例如,向量加载/存储指令)集合的指令缓冲器条目1519可使其与错误抑制字段相关联,以基于错误抑制字段中记录的一个或多个错误抑制位提供条件存储器错误帮助抑制。缓冲器条目1519可包括例如ROB中的条目,其用于跟踪尤其是无序执行引擎中的指令执行的先后顺序。在一些实施例中,向量加载微操作和向量算术微操作可占用单个指令缓冲器1519位置,从而最终在同一时间被引退。同样,向量存储地址微操作和向量存储数据微操作二者可占用单个缓冲器条目1519位置,从而最终在同一时间被引退。在可选实施例中,它们可各自占用ROB中的单独的缓冲器条目1519位置。如断言掩码1520至错误抑制字段1527的映射1501所示,错误抑制字段1527中的单个错误抑制位可用于指示所有的元素掩码1520均为零(0),且在一些实施例中,可将仅一个错误抑制位记录在指令缓冲器条目1519的错误抑制字段1527中。在一些可选实施例中,可将一个以上的错误抑制位记录在错误抑制字段1527中。
图15B示出将断言掩码1520映射1502到指令缓冲器中的一个或多个错误抑制字段以提供条件存储器错误帮助抑制的可选实施例。如断言掩码1520至错误抑制字段1527-1529的映射1502所示,错误抑制字段1529中的一个或多个错误抑制位可用于指示元素中的两个最高有效位(例如1516-1517)的掩码1520位是零(0);错误抑制字段1528中的一个或多个错误抑制位可用于指示元素中的四个最高有效位(例如1514-1517)的掩码1520位是零(0);…且错误抑制字段1527中的一个或多个错误抑制位可用于指示元素中的所有位(例如1510-1517)的掩码1520位是零(0)。在一些实施例中,可将仅单个错误抑制位记录在指令缓冲器条目1519的每个错误抑制字段1527-1529中。在一些可选实施例中,可将一个以上的错误抑制位记录在每个错误抑制字段1527-1529中,例如用于启用/禁用元素的两个最高有效位的错误抑制字段1529,以启用/禁用元素的四个最高有效位的错误抑制字段1528,等等。
图15C示出将断言掩码映射1503到指令缓冲器中的错误抑制字段以提供条件存储器错误帮助抑制的另一个可选实施例。如断言掩码1520至错误抑制字段1526的映射1503所示,可使用用于每个元素的掩码1520位的一个错误抑制位来指示元素的掩码1520位中的任一个为零(0)且可将其记录在指令缓冲器条目1519的错误抑制字段1526中。在一些可选实施例中,可将用于每个元素掩码1520位的一个以上的错误抑制位记录在错误抑制字段1526中,例如用于指示向量大小、长度或计数。
图15D示出将断言掩码映射1504到指令缓冲器中的错误抑制字段以提供条件存储器错误帮助抑制的另一个可选实施例。如断言掩码1520至错误抑制字段1524-1525的映射1504所示,错误抑制字段1525中的一个或多个错误抑制位可被用于指示元素的最高有效半部分(例如1514-1517)的掩码1520位为零(0);且错误抑制字段1524中的一个或多个错误抑制位可被用于指示元素的最低有效半部分(例如1510-1513)的掩码1520位为零(0)。在一些实施例中,可将仅单个错误抑制位记录在指令缓冲器条目1519的每个错误抑制字段1524-1525中。在一些可选实施例中,可将一个以上的错误抑制位记录在每个错误抑制字段1524-1525中,例如用于指示向量大小、长度或计数。
本发明的实施例涉及执行用于向量加载和/或存储的指令,所述向量加载和/或存储基于在向量加载/存储指令的执行期间记录下相应指令缓冲器条目1519的错误抑制字段(例如,1524-1529中的任一个或多个)中的一个或多个错误抑制位(用于指示存储器操作集合中的一个或多个部分是否被掩码)从而利用断言掩码以提供条件存储器错误帮助抑制。
图16A示出执行条件加载和/或存储的过程1601的一个实施例的流程图,其中所述条件加载和/或存储利用断言掩码以提供条件存储器错误帮助抑制。过程1601和本文中公开的其他过程通过处理块来执行,处理块可包括专用硬件或可由通用机器或专用机器或其某种组合执行的软件或固件操作码。
在过程1601的处理框1610中,将存储器操作集合缓冲在对应于一个或多个条件加载/存储指令的一个或多个指令缓冲器条目中。在一些实施例中,一个或多个条件加载/存储指令是利用断言掩码以提供条件存储器错误帮助抑制的单指令多数据(SIMD)指令。在一些可选实施例中,一个或多个条件加载/存储指令可以是一个或多个条件移动(CMOVcc)指令。在处理框1620中,生成对应于存储器操作集合中的下一个的下一个存储器地址。在处理框1630,判断对下一个存储器地址的相应访问是否生成错误。如果否,则在处理框1640,生成从/至该下一个存储器地址的向量元素的条件加载/存储,且处理然后前进至处理器框1650。否则,处理直接前进至处理框1650,其中判断是否对相应的访问进行掩码。如果是,则在处理框1660,在相应的指令缓冲器中更新错误抑制字段,使得对于一个或多个推迟的错误抑制错误帮助,且处理然后前进到处理框1670。如果否,则处理直接前进到处理框1670,其中判断是否完成对一个或多个条件加载/存储的处理。如果对条件加载/存储的处理未完成,则处理在处理框1620反复开始。否则,在处理框1680,在一个或多个条件加载/存储指令的引退期间,记录在对应的一个或多个指令缓冲器条目的错误抑制字段中的任何错误抑制位可被发送到错误帮助逻辑,使得如果必要则进行错误帮助,但相反可基于相应的一个或多个指令缓冲器条目的错误抑制字段中记录的错误抑制位来抑制错误帮助。最后,在处理框1690,一个或多个条件加载/存储的结果被存储或提交到架构可见的状态。
应意识到,尽管过程1601被示为依照元素而迭代,但在一个或多个条件加载/存储的执行期间将一个或多个错误抑制位记录在相应的指令缓冲器条目的错误抑制字段中(以指示存储器操作集合的一个或多个部分是否被掩码的)可同时发生,或在各级中发生。例如,可将每个掩码位记录在指令缓冲器条目中,如以上在图5C的一个实施例中所示。或者,可将指示所有的掩码位均为零(0)的单个错误抑制位记录在指令缓冲器条目中,如以上在图5A的一个实施例中所示。在其它实施例中,可将一个或多个错误抑制位记录在错误抑制字段中以指示一个或多个最高有效掩码位(例如,如图5B和5D的实施例所示)或一个或多个最低有效掩码位(例如,如图5D的一个实施例所示)为零(0)。
图16B示出利用断言掩码执行向量存储以提供条件存储器错误帮助抑制的过程1602的一个实施例的流程图。在过程1602的处理框1612,存储器存储操作的集合被缓冲在对应于向量存储指令的指令缓冲器条目(例如,在重排序缓冲器中)中。在一些实施例中,向量存储指令是利用断言掩码以提供条件存储执行和存储器错误帮助抑制的SIMD指令。在处理框1620中,生成对应于存储器存储操作集合中的下一个的下一个存储器地址。在处理框1630,判断对下一个存储器地址的相应访问是否生成错误。如果否,则在处理框1642,至该下一个存储器地址的向量元素的存储被缓冲(例如,在存储缓冲器中),且处理然后前进至处理器框1645。否则,处理直接前进到处理框1645,在处理框1645判断是否完成对向量存储的最后的向量元素生成最后存储操作。如果对向量存储的最后的向量元素生成最后存储操作,则处理在处理框1620反复开始。否则,在处理框1652,判断是否对一个或多个错误进行掩码。如果是,则在处理框1662,在相应的指令缓冲器中更新错误抑制字段,使得对于一个或多个推迟的错误抑制错误帮助,且处理然后前进到处理框1672。如果否,则处理直接前进到处理框1672,其中判断是否完成对向量存储的处理。如果向量存储的处理未完成,则处理重新迭代处理框1672。否则,在处理框1680,在向量存储指令的引退期间,记录在对应的指令缓冲器条目的错误抑制字段中的任何错误抑制位可被发送到错误帮助逻辑,使得如果必要则进行错误帮助,但相反可基于相应的指令缓冲器条目的错误抑制字段中记录的错误抑制位来抑制错误帮助。最后,在处理框1692,向量存储指令被引退或提交到架构可见状态。
图16C示出利用断言掩码执行向量加载以提供条件存储器错误帮助抑制的过程的一个实施例的流程图。在过程1603的处理框1613,存储器加载操作的集合被缓冲在对应于向量加载指令的指令缓冲器条目(例如,在重排序缓冲器中)中。在一些实施例中,向量加载指令是利用断言掩码以提供条件加载执行和存储器错误帮助抑制的SIMD指令。在一些实施例中,向量加载指令还可指定在将结果保存到目的地寄存器之前应在加载的数据元素上执行的条件算术或转换操作。在处理框1620中,生成对应于存储器加载操作集合中的下一个的下一个存储器地址。在处理框1630,判断对下一个存储器地址的相应访问是否生成错误。如果否,则在处理框1643,从下一个存储器地址加载向量元素,然后处理前进到处理框1645。否则,处理直接前进到处理框1645,在处理框1645判断是否完成了为向量加载的最后的向量元素生成最后加载操作。如果为向量加载的最后的向量元素生成最后加载操作尚未完成,则处理在处理框1620开始重新迭代。否则,在处理框1652,判断是否对一个或多个错误进行掩码。如果是,则在处理框1662,在相应的指令缓冲器中更新错误抑制字段,使得对于一个或多个推迟的存储器错误抑制错误帮助,且处理然后前进到处理框1680。如果否,处理直接前进到处理框1680,其中在向量加载指令的引退期间,记录在对应的指令缓冲器条目的错误抑制字段中的任何错误抑制位可被发送到错误帮助逻辑,使得如果必要则进行错误帮助,但相反可基于相应的指令缓冲器条目的错误抑制字段中记录的错误抑制位来抑制错误帮助。最后,在处理框1693,向量加载指令被引退或提交到架构可见状态。
本发明的实施例涉及执行用于向量加载和/或存储的指令,所述向量加载和/或存储基于在向量加载/存储指令的执行期间记录下相应指令缓冲器条目的错误抑制字段中的一个或多个错误抑制位(用于指示存储器操作集合中的一个或多个部分是否被掩码),利用断言掩码来提供条件存储器错误帮助抑制。一个或多个错误抑制位的记录可同时发生,或者替代地,在各级处发生。例如,对应于用于加载/存储的向量元素的每个掩码位可被记录在指令缓冲器条目中,如以上在图5C中所示。或者,可将指示所有的向量元素的掩码位均为零(0)的单个错误抑制位记录在指令缓冲器条目中,如以上在图5A中所示。在其它实施例中,可将一个或多个错误抑制位记录在错误抑制字段中以指示一个或多个最高有效的掩码位(例如,最后两个、最后四个等等,如图5B所示,或者最后一半,如图5D所示)或者一个或多个最低有效掩码位(例如图5D中所示的开始的半部分)为零(0)。
因此,只要存储器操作集合中的一个或多个对应于由相应的指令缓冲器条目(例如,Z指示符1429)的错误抑制字段中的一个或多个错误抑制位指示为被掩码的存储器操作集合的一部分,则可抑制错误帮助考虑与存储器操作集合中的一个或多个相对应的存储器错误。应意识到,当经掩码的错误以任何频率发生时(例如,在展开的循环访问末端,或当尤其从/向存储器中稀疏分散的位置进行向量加载/存储时),所导致的性能惩罚会限制例如原本预期从宽或大宽度向量架构得到的性能优势。因此,根据利用断言掩码执行向量加载和/或存储并提供条件存储器错误帮助抑制的实施例避免这种性能惩罚,体现出流水线处理中的显著的技术进步。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码应用至输入指令以执行本文描述的功能并产生输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程式化或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,指令表示处理器中的各种逻辑,指令在被机器读取时使得该机器制作用于执行本文所述的技术的逻辑。被称为“IP核”的这些表示可以被存储在有形的机器可读介质上,并被提供给多个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
此类机器可读存储介质可包括但不限于通过机器或设备制造或形成的非易失性的粒子有形排列,包括存储介质,诸如:硬盘;包括软盘、光盘、压缩盘只读存储器(CD-ROM)、可重写压缩盘(CD-RW)以及磁光盘的任何其它类型的盘;诸如只读存储器(ROM)之类的半导体器件;诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)之类的随机存取存储器(RAM);可擦除可编程只读存储器(EPROM);闪存;电可擦除可编程只读存储器(EEPROM);磁卡或光卡;或适于存储电子指令的任何其它类型的介质。
因此,本发明的各实施例还包括非瞬态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。
在一些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其它方式将指令转换成将由核来处理的一个或多个其它指令。指令转换器可以用软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
因此,公开了用于执行根据至少一个实施例的一个或多个指令的技术。虽然已经描述并在附图中示出了特定示例实施例,但可以理解,这些实施例仅仅是对本宽泛发明的说明而非限制,并且本发明不限于所示出和所描述的特定结构和配置,因为本领域技术人员在研究了本公开文本之后可以料知到多种其他修改方式。在诸如本申请这样的技术领域中,因为发展很快且未来的进步难以预见,所以本公开的诸个实施例可通过受益于技术进步而容易地获得配置和细节上的改动,而不背离本公开的原理和所附权利要求书的范围。

Claims (22)

1.一种处理器,包括:
解码级,用于解码单指令多数据SIMD指令,所述单指令多数据SIMD指令指定:存储器加载操作集合、目的地寄存器以及一个或多个存储器地址;以及
一个或多个执行单元,响应于经解码的SIMD指令,用于:
生成用于所述加载操作集合的所述一个或多个存储器地址;
记录一个或多个错误抑制位以指示所述加载操作集合的一个或多个部分是否被掩码;
只要所述加载操作集合中的一个或多个加载操作对应于所述加载操作集合中被所述一个或多个错误抑制位指示为被掩码的部分,则抑制错误生成逻辑考虑对应于所述加载操作集合中的所述一个或多个加载操作的存储器错误,其中所述错误生成逻辑包括错误帮助逻辑,用于:
当所述一个或多个错误抑制位指示所述存储器加载操作集合中的一个或多个部分未被掩码时,所述错误帮助逻辑响应于在所述存储器加载操作集合的执行级期间检测到错误状况,导致对应于所述存储器加载操作集合的掩码在引退级期间被检查。
2.如权利要求1所述的处理器,其特征在于,所述SIMD指令进一步指定掩码寄存器以指示所述存储器加载操作集合中的哪些单独的存储器加载操作被掩码。
3.如权利要求2所述的处理器,其特征在于,所述一个或多个错误抑制位用于指示何时所述存储器加载操作集合的全部被掩码。
4.如权利要求2所述的处理器,其特征在于,所述一个或多个错误抑制位用于指示何时所述目的地寄存器中的元素的连续最高有效部分以及其对应的单独存储器加载操作被掩码。
5.如权利要求1所述的处理器,其特征在于,响应于所述一个或多个错误抑制位具有第一值,对应于所述错误帮助逻辑的微代码例程被调用以检查对应于所述存储器加载操作集合的掩码,以确定是否要生成存储器错误,并且响应于所述一个或多个错误抑制位具有第二值,对应于所述错误帮助逻辑的微代码例程不被调用以检查对应于所述存储器加载操作集合的掩码。
6.如权利要求5所述的处理器,其特征在于,所述一个或多个错误抑制位被设置成所述第一值以指示何时所述存储器加载操作集合中的一个或多个未被掩码。
7.如权利要求5所述的处理器,其特征在于,所述一个或多个错误抑制位被设置成第二值以指示何时所述存储器加载操作集合的全部被掩码。
8.如权利要求1所述的处理器,其特征在于,所述SIMD指令进一步指定:一操作集合,所述一操作集合将在来自所述存储器加载操作集合的相应单独的存储器加载操作的数据元素上执行、且要在所述数据元素将被存储到所述目的地寄存器之前执行,以及掩码寄存器,用于指示所述操作集合及所述存储器加载操作集合中对应的单独存储器加载操作中的哪些被掩码。
9.一种处理器,包括:
解码级,用于解码单指令多数据SIMD指令,所述单指令多数据SIMD指令指定:存储器存储操作集合、源寄存器以及一个或多个存储器地址;以及
一个或多个执行单元,响应于经解码的SIMD指令,用于:
生成用于所述存储器存储操作集合的所述一个或多个存储器地址;
记录一个或多个错误抑制位以指示所述存储器存储操作集合的一个或多个部分是否被掩码;
只要所述存储器存储操作集合中的一个或多个存储器存储操作对应于所述存储器存储操作集合中被所述一个或多个错误抑制位指示为被掩码的部分,则抑制错误生成逻辑考虑对应于所述存储器存储操作集合中的所述一个或多个存储器存储操作的存储器错误,其中所述错误生成逻辑包括错误帮助逻辑,用于:
只要所述一个或多个错误抑制位已经在执行级期间被设置为指示所述存储器存储操作集合中的一个或多个部分未被掩码,则所述错误帮助逻辑响应于检测到所述存储器存储操作集合的错误状况,导致对应于所述存储器存储操作集合的掩码在引退级期间被检查。
10.如权利要求9所述的处理器,其特征在于,所述SIMD指令进一步指定掩码寄存器以指示所述存储器存储操作集合中的哪些单独的存储器存储操作被掩码。
11.如权利要求9所述的处理器,其特征在于,所述SIMD指令进一步指定:一操作集合,所述一操作集合将在来自所述源寄存器的数据元素上执行、且要在所述数据元素将通过所述存储器存储操作集合的相应单独的存储器存储操作被存储之前执行,以及掩码寄存器,用于指示所述操作集合及所述存储器存储操作集合中对应的单独存储器存储操作中的哪些被掩码。
12.一种处理系统,包括:
存储器;以及
多个处理器,所述多个处理器中的每个处理器包括:
解码级,用于解码单指令多数据SIMD指令,所述单指令多数据SIMD指令指定:存储器操作集合、向量寄存器以及一个或多个存储器地址;以及
一个或多个执行单元,响应于经解码的SIMD指令,用于:
生成用于所述存储器操作集合的所述一个或多个存储器地址;
记录一个或多个错误抑制位以指示所述存储器操作集合的一个或多个部分是否被掩码;
只要所述存储器操作集合中的一个或多个存储器操作对应于所述存储器操作集合中被所述一个或多个错误抑制位指示为被掩码的部分,则抑制错误生成逻辑考虑对应于所述存储器操作集合中的所述一个或多个存储器操作的存储器错误,其中所述错误生成逻辑包括错误帮助逻辑,用于:
只要所述一个或多个错误抑制位已经在执行级期间被设置为指示所述存储器操作集合中的一个或多个部分未被掩码,则所述错误帮助逻辑响应于检测到所述存储器操作集合的错误状况,导致对应于所述存储器操作集合的掩码在引退级期间被检查。
13.如权利要求12所述的处理系统,其特征在于,所述SIMD指令进一步指定掩码寄存器以指示所述存储器操作集合中的哪些单独的存储器操作被掩码。
14.如权利要求12所述的处理系统,其特征在于,所述SIMD指令进一步指定:一操作集合,所述一操作集合将在来自所述向量寄存器的数据元素上执行、且要在所述数据元素将通过所述存储器操作集合的相应单独的存储器操作被存储之前执行,以及掩码寄存器,用于指示所述操作集合及所述存储器操作集合中对应的单独存储器存储操作中的哪些被掩码。
15.如权利要求12所述的处理系统,其特征在于,所述SIMD指令进一步指定:一操作集合,所述一操作集合将在来自所述一个或多个存储器地址的数据元素上执行、且要在所述数据元素将被存储到所述向量寄存器之前执行,以及掩码寄存器,用于指示所述操作集合及所述存储器操作集合中对应的单独存储器操作中的哪些被掩码。
16.一种方法,包括:
在对应于单指令多数据SIMD指令的缓冲器条目中缓冲存储器操作集合;
生成对应于所述存储器操作集合的存储器地址集合;
在所述SIMD指令的执行期间在所述缓冲器条目中记录一个或多个错误抑制位以指示所述存储器操作集合的一个或多个部分是否被掩码;
在所述SIMD指令的引退期间,将所述一个或多个错误抑制位从所述缓冲器条目发送到错误生成逻辑以抑制所述错误生成逻辑考虑与被所述一个或多个错误抑制位指示为被掩码的所述存储器操作集合的所述一个或多个部分对应的任何存储器错误。
17.如权利要求16所述的方法,其特征在于,所述一个或多个错误抑制位用于指示何时所述存储器操作集合的全部被掩码。
18.如权利要求16所述的方法,其特征在于,所述一个或多个错误抑制位用于指示:何时向量寄存器中的元素的连续最高有效第一部分以及所述存储器操作集合中与之相对应的存储器操作被掩码。
19.如权利要求18所述的方法,其特征在于,所述一个或多个错误抑制位还用于指示何时所述向量寄存器中的元素的连续最低有效第二部分以及所述存储器操作集合中与之相对应的存储器操作被掩码。
20.如权利要求18所述的方法,其特征在于,所述一个或多个错误抑制位还用于指示何时所述向量寄存器中的元素的大于所述第一部分的连续最高有效第二部分以及所述存储器操作集合的相应存储器操作被掩码。
21.一种或多种其上存储有指令的计算机可读介质,所述指令当由计算机处理器执行时使所述处理器执行如权利要求16至20中任一项所述的方法。
22.一种设备,包括用于执行如权利要求16至20中任一项所述的方法的装置。
CN201510080157.4A 2014-03-15 2015-02-13 用于条件存储器错误帮助抑制的方法、处理器和处理系统 Expired - Fee Related CN104915181B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/214,910 US9396056B2 (en) 2014-03-15 2014-03-15 Conditional memory fault assist suppression
US14/214,910 2014-03-15

Publications (2)

Publication Number Publication Date
CN104915181A CN104915181A (zh) 2015-09-16
CN104915181B true CN104915181B (zh) 2018-06-05

Family

ID=54068995

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510080157.4A Expired - Fee Related CN104915181B (zh) 2014-03-15 2015-02-13 用于条件存储器错误帮助抑制的方法、处理器和处理系统

Country Status (3)

Country Link
US (1) US9396056B2 (zh)
CN (1) CN104915181B (zh)
TW (1) TWI578155B (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9715432B2 (en) * 2014-12-23 2017-07-25 Intel Corporation Memory fault suppression via re-execution and hardware FSM
GB2540948B (en) * 2015-07-31 2021-09-15 Advanced Risc Mach Ltd Apparatus with reduced hardware register set
GB2543303B (en) 2015-10-14 2017-12-27 Advanced Risc Mach Ltd Vector data transfer instruction
GB2543306B (en) * 2015-10-14 2019-05-01 Advanced Risc Mach Ltd Exception handling
GB2543302B (en) * 2015-10-14 2018-03-21 Advanced Risc Mach Ltd Vector load instruction
GB2543554B (en) * 2015-10-22 2019-01-23 Advanced Risc Mach Ltd Handling exceptional conditions for vector arithmetic instruction
US9990452B2 (en) * 2015-11-13 2018-06-05 Mentor Graphics Corporation Low power corruption of memory in emulation
US9898563B2 (en) * 2015-11-13 2018-02-20 Mentor Graphics Corporation Modeling memory in emulation based on cache
US9767237B2 (en) 2015-11-13 2017-09-19 Mentor Graphics Corporation Target capture and replay in emulation
US9507598B1 (en) * 2015-12-15 2016-11-29 International Business Machines Corporation Auxiliary branch prediction with usefulness tracking
US10248488B2 (en) * 2015-12-29 2019-04-02 Intel Corporation Fault tolerance and detection by replication of input data and evaluating a packed data execution result
GB2546510B (en) 2016-01-20 2018-09-26 Advanced Risc Mach Ltd Vector atomic memory update instruction
US10261790B2 (en) * 2016-03-31 2019-04-16 Intel Corporation Memory copy instructions, processors, methods, and systems
US10761979B2 (en) * 2016-07-01 2020-09-01 Intel Corporation Bit check processors, methods, systems, and instructions to check a bit with an indicated check bit value
US10296416B2 (en) * 2016-07-02 2019-05-21 Intel Corporation Read from memory instructions, processors, methods, and systems, that do not take exception on defective data
US10019288B2 (en) 2016-09-12 2018-07-10 Mediatek, Inc. Fast and stable mechanism for allocating contiguous memory
GB2558955B (en) * 2017-01-24 2020-12-23 Advanced Risc Mach Ltd An apparatus and method for generating and processing a trace stream indicative of execution of predicated vector memory access instructions
US11042375B2 (en) * 2017-08-01 2021-06-22 Arm Limited Counting elements in data items in a data processing apparatus
KR102456582B1 (ko) * 2017-12-19 2022-10-20 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN109032666B (zh) * 2018-07-03 2021-03-23 中国人民解放军国防科技大学 一种用于向量处理的确定断言活跃元素个数的方法和装置
US11842200B2 (en) * 2019-09-27 2023-12-12 Advanced Micro Devices, Inc. Multi-modal gather operation
CN113542043A (zh) * 2020-04-14 2021-10-22 中兴通讯股份有限公司 网络设备的数据采样方法、装置、设备及介质
US20230409238A1 (en) * 2022-06-21 2023-12-21 Advanced Micro Devices, Inc. Approach for processing near-memory processing commands using near-memory register definition data

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1411578A (zh) * 2000-03-27 2003-04-16 英芬能技术公司 将用户定义的执行单元加至采用可配置长指令字(cliw)的处理器的方法和设备
CN1431587A (zh) * 2002-08-22 2003-07-23 智慧第一公司 选择性控制存储器属性的装置及方法
CN1431586A (zh) * 2002-08-22 2003-07-23 智慧第一公司 非暂存存储器参照的控制机制
US7480787B1 (en) * 2006-01-27 2009-01-20 Sun Microsystems, Inc. Method and structure for pipelining of SIMD conditional moves
US7546446B2 (en) * 2002-03-08 2009-06-09 Ip-First, Llc Selective interrupt suppression
US8019976B2 (en) * 2007-05-14 2011-09-13 Apple, Inc. Memory-hazard detection and avoidance instructions for vector processing

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7380109B2 (en) * 2002-04-15 2008-05-27 Ip-First, Llc Apparatus and method for providing extended address modes in an existing instruction set for a microprocessor
US8862932B2 (en) * 2008-08-15 2014-10-14 Apple Inc. Read XF instruction for processing vectors
US8060724B2 (en) * 2008-08-15 2011-11-15 Freescale Semiconductor, Inc. Provision of extended addressing modes in a single instruction multiple data (SIMD) data processor
US9110802B2 (en) * 2010-11-05 2015-08-18 Advanced Micro Devices, Inc. Processor and method implemented by a processor to implement mask load and store instructions
US20120216011A1 (en) * 2011-02-18 2012-08-23 Darryl Gove Apparatus and method of single-instruction, multiple-data vector operation masking

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1411578A (zh) * 2000-03-27 2003-04-16 英芬能技术公司 将用户定义的执行单元加至采用可配置长指令字(cliw)的处理器的方法和设备
US7546446B2 (en) * 2002-03-08 2009-06-09 Ip-First, Llc Selective interrupt suppression
CN1431587A (zh) * 2002-08-22 2003-07-23 智慧第一公司 选择性控制存储器属性的装置及方法
CN1431586A (zh) * 2002-08-22 2003-07-23 智慧第一公司 非暂存存储器参照的控制机制
US7480787B1 (en) * 2006-01-27 2009-01-20 Sun Microsystems, Inc. Method and structure for pipelining of SIMD conditional moves
US8019976B2 (en) * 2007-05-14 2011-09-13 Apple, Inc. Memory-hazard detection and avoidance instructions for vector processing

Also Published As

Publication number Publication date
TWI578155B (zh) 2017-04-11
CN104915181A (zh) 2015-09-16
TW201546610A (zh) 2015-12-16
US20150261590A1 (en) 2015-09-17
US9396056B2 (en) 2016-07-19

Similar Documents

Publication Publication Date Title
CN104915181B (zh) 用于条件存储器错误帮助抑制的方法、处理器和处理系统
CN103827814B (zh) 用于提供利用跨越功能的向量加载操作/存储操作的指令和逻辑
CN104321741B (zh) 双舍入组合浮点乘法和加法
CN104011662B (zh) 用于提供向量混合和置换功能的指令和逻辑
CN104919416B (zh) 用于提供矢量地址冲突检测功能的方法、装置、指令和逻辑
CN105955704B (zh) 用于提供向量横向比较功能的指令和逻辑
CN103793201B (zh) 提供向量压缩和旋转功能的指令和逻辑
TWI731892B (zh) 用於以通道為基礎的跨步儲存操作之指令及邏輯
CN103827815B (zh) 用于提供利用跨越和掩码功能的向量加载和存储的指令和逻辑
CN103827813B (zh) 用于提供向量分散操作和聚集操作功能的指令和逻辑
CN103970509B (zh) 对条件循环进行矢量化的装置、方法、处理器、处理系统以及机器可读介质
CN104050077B (zh) 利用多个测试源来提供测试的处理器、处理系统和方法
CN108369509B (zh) 用于基于通道的跨步分散操作的指令和逻辑
CN103959236B (zh) 用于提供向量横向多数表决功能的处理器、设备和处理系统
CN104335183B (zh) 用于测试事务性执行状态的方法、装置和系统
CN104025033B (zh) 利用控制操纵的simd可变移位和循环
CN107209722A (zh) 用于在安全飞地页面高速缓存中使安全飞地的进程分叉和建立子飞地的指令和逻辑
TWI743064B (zh) 用於取得多重向量元素操作之指令及邏輯
TWI720056B (zh) 用於設置多重向量元素操作之指令及邏輯
CN103988173B (zh) 用于提供掩码寄存器与通用寄存器或存储器之间的转换的指令和逻辑
CN104011658B (zh) 用于提供向量线性内插功能的指令和逻辑
CN107690618A (zh) 用于提供向量紧缩直方图功能的方法、装置、指令和逻辑
CN107003854A (zh) 提供向量包装元组交叉比较功能的方法、装置、指令和逻辑
TWI729029B (zh) 用於向量位元欄壓縮及擴展的指令及邏輯
CN108369512A (zh) 用于置换序列的指令和逻辑

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180605

Termination date: 20220213

CF01 Termination of patent right due to non-payment of annual fee