浮点(FP)加法低指令功能单元的制作方法

文档序号:14943905发布日期:2018-07-17 11:50阅读:342来源:国知局

功率节约和处理效率正在日益成为电子设备的焦点。为了减小功耗并提高效率,处理器可对于各种进程和应用使用浮点运算。处理器可具有利用浮点运算来执行指令的一个或多个功能单元。这些功能单元可以是硬件单元,诸如浮点单元(fpu)或数学协处理器,其消耗处理器处的相对大量的功率。更高效的fpu和数学协处理器可降低功耗并提高处理器的效率。

附图说明

根据在下面给出的详细描述并且根据本发明的各种实施例的附图,将更充分地理解本发明的各种实施例。

图1a图示了根据一个实施例的用于执行add运算的方法的图。

图1b图示了根据一个实施例的执行add低(addlow)运算的方法的图。

图2图示了根据一个实施例的用于add低运算的比特串的图。

图3a是图示了根据一个实施例的有序(in-order)管线和寄存器重命名级、无序(out-of-order)发布/执行管线的框图。

图3b是图示了根据一个实施例的实现浮点(fp)加法低运算的处理器的微架构的框图。

图4图示了根据一个实施例的包括用于执行fp加法低运算的逻辑电路的处理器的微架构的框图。

图5是根据一个实施方式的计算机系统的框图。

图6是根据另一实施方式的计算机系统的框图。

图7是根据一个实施方式的片上系统的框图。

图8图示了根据一个实施方式的计算系统的框图的另一实施方式。

图9图示了根据一个实施方式的计算系统的框图的另一实施方式。

具体实施方式

常规的中央处理单元(cpu)和图形处理单元(gpu)设计包括fpu或数学协处理器。fpu可对浮点数执行数学运算。例如,fpu内的乘加器电路可以执行融合加法运算以执行等式(a×b)+c的单个指令执行。fpu或数学协处理器可以是专用硬件,诸如作为计算机处理器(cpu)或图形处理单元(gpu)的一部分来执行某些浮点功能的算术逻辑单元(alu)。cpu和gpu可对于范围从多媒体处理和3d图形处理到科学和工程应用的应用使用fpu或数学协处理器。常规的cpu和gpu可并入集成乘法累加运算,诸如融合加法运算。融合加法运算与后面是加法的乘法相比可具有较低的延迟和较高的精度。

为了改进浮点算术处理,常规的处理器对于浮点加法(add)指令(例如,a+b)的执行使用浮点加法(add)运算。常规的add运算可对于加法运算采用具有单精度和双精度(例如,本机浮点精度)的硬件。例如,许多常规的电子设备具有在硬件中实现ieee®双精度算术标准的cpu或gpu,从而为加法、减法、乘法和除法的基本运算提供正确地舍入的结果。这些常规的电子设备使用双精度浮点表示来维持电子设备的性能水平。然而,本机浮点精度对于某些应用来说可能是不适当的。

在另一示例中,点积运算可执行一连串的浮点计算。当点积运算使用本机浮点精度时,本机浮点精度的不足精度在一连串的浮点计算的结果与数学结果(即,无限精确)之间的舍入方面产生不匹配。本机浮点精度对于诸如针对计算要求较高的精确度的科学应用、线性代数函数、复杂算术函数、某些数学库函数以及使用要求多精度的长和或点积的应用之类的应用来说是不足的。

当本机浮点精度不足时,可使用多精度计算来满足适当的准确度要求。常规的add使用软件仿真来执行多精度运算或扩展精度运算以满足增加准确度要求。然而,add运算的软件仿真可能要执行若干浮点运算。例如,在add运算的低部分或尾部上执行add运算可在当|a|、|b|的顺序已知时为3个浮点(fp)运算与当|a|、|b|的顺序未知时为5个fp运算之间进行add运算的软件仿真,例如,一般情况实施方式。附加地,用于执行软件仿真的3至5个fp运算不包括针对特殊情况(诸如无穷大/nan输入或溢出)的检查,其可进一步降低add运算软件仿真的性能。用于软件仿真的3至5个fp运算也不包括范围检查,其可进一步降低add运算软件仿真的性能。

本文中所描述的实施例可以通过使用硬件运算单元来计算add的低部分或尾部(add低)来解决上面指出的缺陷。在一个示例中,完整add运算的结果是高fp值、低fp值和最低fp值的和,例如,高fp+低fp+最低fp。add低运算使用低fp值来生成结果。add低运算的优点是add低运算维持与add硬件计算完整add结果类似的准确度水平,同时提高add硬件的效率和性能。例如,当add(a,b)被舍入到最近整数时,add低运算可具有确切的add低结果(无舍入误差)。例如,add低运算可通过减少用于计算结果的fp运算的数量来提高add硬件的效率和性能。例如,按照惯例(a_高+a_低)+(b_高+b_低)的双双加法(其中a、b、c和d可以是变量)被计算为高fp+低fp。在一个示例中,使用add算法的常规的双双加法运算可按1个fp运算、一分支和3个逻辑运算的延迟进行7个fp运算、一分支和3个逻辑运算,而使用add低算法计算的双双加法运算可按3个fp运算的延迟进行4个fp运算。在另一示例中,常规的扩展精度求和运算(kahan(卡汉)求和运算)可按4个add的延迟进行4个fp运算,而使用add低算法的扩展精度求和运算可按1个add和1个add低的延迟进行2个fp运算。

图1a图示了根据一个实施例的用于执行add运算的方法100的图。方法100可以至少部分地由处理设备或处理逻辑的逻辑单元或alu执行,所述处理设备或处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微码等)、软件(例如,由处理设备执行的指令)、固件或其组合。

参考图1a,方法100从使用加法器来将第一数110与第二数112相加以获得和值(116)开始。在一个实施例中,第一数110和第二数112可以是可以用二进制格式表示的浮点数。

在另一实施例中,第一数110可包括第一尾数和第一指数并且第二数112可包括第二尾数和第二指数。指数可以是包括符号、指数和尾数字段的浮点数表示(编码)的一部分。在实施例中浮点值因此可等于{(-1)符号*2指数—偏差*尾数}。在一个实施例中,当第一数110与第二数112相加时,第一尾数与第二尾数相加以生成和值。

在另一实施例中,移位器可以使第一尾数和第二尾数的比特向左或向右移位。移位器可以使第一尾数和第二尾数的比特移位,使得第一尾数和第二尾数的比特被适当地对齐以用于加法运算或减法运算。

该方法可包括使用归一化器来使和值归一化以生成归一化和值(118)。在一个实施例中,归一化(118)可以包括使用编码器来对和值进行编码。编码可包括编码器分析和值的比特串。编码器可确定比特串中的比特是否将被移位。例如,编码器可以分析比特串并且标识最左边的(例如,最高有效的)“0”比特的位置。如果最左边的“0”比特是从比特数左边起的5个比特,则编码器可以确定比特串将被向左移位5个位置。在另一实施例中,归一化(118)可包括使用移位器来使比特串向右或向左移位。移位器在比特串被向左移位的情况下可以将“0”值加到比特串的右边,而在比特串被向右移位的情况下可以将“0”值加到比特串的左边。

在一个示例中,结果(在归一化之前)在前导尾数比特中包括1(“一”)。前导比特的位置可以是固定的并且取决于实施方式。当在前导不同位置上方存在任何非零结果比特时,归一化可包括每次使结果向右移位一个比特,直到前导比特为1(“一”)并且其上方的所有比特位置均为零为止。指数也可随着每个向右移位而递增。否则,当前导比特为0(“零”)但是在较低位置中存在非零比特时,可每次使结果尾数向左移位一个比特,直到前导比特为一(“1”)为止。类似地,可针对每个向左移位递增结果指数。

该方法可还包括使用舍入器来对归一化和值进行舍入以生成舍入归一化和值(120)。该方法可还包括使用舍入归一化和值来生成add结果(122)。在一个实施例中,add结果值是add(a,b)=a+b的计算,其中a是第一数110并且b是第二数112,并且a+b被舍入。加法器、归一化器和舍入器可以是逻辑单元或alu。

图1b图示了根据一个实施例的执行add低运算的方法124的图。方法124可以至少部分地由处理设备或处理逻辑的逻辑单元或alu执行,所述处理设备或处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微码等)、软件(例如,由处理设备执行的指令)、固件或其组合。

参考图1b,方法124从使用加法器来将第一数110与第二数112相加以获得和值(126)开始。除非另外明确地描述,否则图1b的方法124的一些数和结果与如通过类似的附图标记所指出的图1a的方法100的一些数和结果类似。该方法可包括使用减法器来将和值减去add结果122以生成差值(128)。该方法可包括使用归一化器来使差值归一化以生成归一化差值(130)。在一个实施例中,归一化(130)可以包括使用编码器来对差值进行编码。编码可包括编码器分析差值的比特串。编码器可确定比特串中的比特是否应该被移位。在另一实施例中,归一化(130)可包括使用移位器来使比特串向右或向左移位。该方法可包括使用舍入器来对归一化差值进行舍入以生成舍入归一化差值(132)。该方法可包括使用舍入归一化差值来生成add低结果值,这在一个实施例中,可包括使用在块132中的舍入期间丢弃的一个或多个比特(134)。加法器、减法器、归一化器和舍入器可以是逻辑单元或alu。

图2图示了根据一个实施例的用于图1b的add低运算的比特串200的图。图1b的add低运算可使用add低(a,b)=舍入((a+b)-add(a,b))的以下算法来生成add低结果。比特串200可包括第一尾数210和第二尾数220。

在一个实施例中,第一尾数210是方法100(图1a)中的add运算的add结果值。第一尾数210可以是add结果122的归一化尾数。第一尾数210可包括包括有b、b1、b2、...、bp-2、bp-1的多个比特,其中b表示比特在比特串200中的定位。p指示第一尾数210或第二尾数220的比特格式。例如,当p等于24时,比特格式是单精度格式。在另一示例中,当p等于53时,比特格式是双精度格式。

在另一实施例中,第二尾数220是方法124(图1b)中的add低运算的add低结果值。第二尾数220可以是add低结果值的归一化尾数。第二尾数220可包括多个比特bp、bp+1、...、b2p-1,其中b表示比特在比特串200中的定位。在一个示例中,在不失一般性的情况下假定|a|>=|b|,当指数(a)-指数(b)>p时则在舍入到最近模式下add(a,b)=a并且add_低(a,b)=b。对于add低结果值使用单精度格式的优点可以是用以减少针对单指令多数据(simd)指令并行计算的元素的数量。双精度格式的优点是用以提高add结果126或add低结果值的准确度。例如,双精度add低结果值可被用于双精度simd计算或标量计算。

在一个实施例中,对于add结果值(图1a)和/或对于add低结果值(图1b),可像前面的段落中所讨论的那样舍入。在一个示例中,归一化add低结果值是预先舍入的尾数并且可从r*2-p+1+bp*2-p+bp+1*2-p-1+...+b2p-1*2-2p+1+...舍入add低结果值,其中当add(a,b)远离零(朝向+/-无穷大)被舍入时r=-1而当add(a,b)朝向零被舍入时r=0。在另一示例中,可使用归一化(诸如通过使用如前面的段落中所讨论的移位)来调整add低结果值的指数并且可应用适当的符号。

在一个实施例中,add结果值或add低结果值可被舍入,因为用于add结果值或add低结果值的比特的长度超过比特串200的限定长度。例如,可使用以下算法来生成add低结果值:add低(a,b)=(a+b)-add(a,b),其中a是第一数110并且b是第二数112(图1a和图1b)。

在另一示例中,当add低结果值超过比特串200的限定长度时,可使用以下算法来生成add低结果值:add低(a,b)=舍入((a+b)-add(a,b))。在此示例中,add低(a,b)=(a+b)-add(a,b)是超过比特串200的限定长度的双精度或单精度浮点格式。在另一示例中,双精度格式可使用为规则浮点数两倍一样多的比特并且超过比特串200的限定长度。

在一个实施例中,add结果值或add低结果值可使用舍入到最近整数算法来舍入。在另一实施例中,add结果值或add低结果值可使用向零舍入算法来舍入。在另一实施例中,add结果值和add低结果值可使用其他舍入算法来舍入。在另一实施例中,可限制在计算add低结果值时使用的尾部比特的数量,诸如将尾部比特限于bp、bp+1、...、b2p-1。这可与将精确结果截断到规定数量的比特(例如,直到比特b2p-1)相同;在那种情况下,可丢弃所有较低的比特(例如,从b2p开始)。

图3a是图示了根据本公开的一些实施例的由处理器300实现的有序管线和寄存器重命名级、无序发布/执行管线的框图。图3a中的实线框图示了有序管线,而虚线框图示了寄存器重命名、无序发布/执行管线。具体地,处理器300描绘了根据本公开的至少一个实施例的要包括在处理器中的有序架构核心和寄存器重命名逻辑、无序发布/执行逻辑。

在图3a中,管线包括预取级302、长度解码级304、解码级306、分配级308、重命名级310、调度(也称为分派或发布)级312、寄存器读取/存储器读取级314、执行级316、回写/存储器写入级318、异常处理级322和提交级324。在一些实施例中,级302-324的排序可以不同于图示的并且不限于图3a中所示的具体排序。

图3b是图示根据一个实施例的实现浮点(fp)加法低运算的处理器300的微架构的框图。处理器300包括耦合到执行引擎单元350的前端单元330,并且两者都耦合到存储器单元370。处理器300可以包括精简指令集计算(risc)核心、复杂指令集计算(cisc)核心、甚长指令字(vliw)核心或者混合或替代核心类型。作为又一个选项,处理器300可以包括专用核心,诸如例如网络或通信核心、压缩引擎、图形核心等。在一个实施例中,处理器300可以是多核心处理器或者可以是多处理器系统的一部分。可以在处理器300中实现页面添加和内容复制的实施例。

前端单元330包括耦合到指令高速缓存单元334的分支预测单元332,所述指令高速缓存单元334耦合到指令转换后备缓冲器(tlb)336,所述指令转换后备缓冲器(tlb)336耦合到指令预取单元338,所述指令预取单元338耦合到解码单元340。解码单元340(也称为解码器)可以对指令进行解码,并且生成从原始指令解码的或者以其他方式反映原始指令或者从原始指令得到的一个或多个微运算、微码入口点、微指令、其他指令或其他控制信号作为输出。解码器340可以使用各种不同的机制来实现。适合的机制的示例包括但不限于查找表、硬件实施方式、可编程逻辑阵列(pla)、微码只读存储器(rom)等。指令高速缓存单元334进一步耦合到存储器单元370。解码单元340耦合到执行引擎单元350中的重命名/分配器单元352。

执行引擎单元350包括耦合到引退单元354和一组一个或多个调度器单元356的重命名/分配器单元352。(一个或多个)调度器单元356表示任何数量的不同的调度器,包括保留站(rs)、中央指令窗口等。(一个或多个)调度器单元356耦合到(一个或多个)物理寄存器堆单元358。(一个或多个)物理寄存器堆单元358中的每一个表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一个或多个不同的数据类型(诸如标量整数、标量浮点、封包整数、封包浮点、向量整数、向量浮点等)、状态(例如,作为要执行的下一个指令的地址的指令指针)等。(一个或多个)物理寄存器堆单元358与引退单元354重叠以图示可以(例如,使用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器堆;使用(一个或多个)将来文件、(一个或多个)历史缓冲器和(一个或多个)引退寄存器堆;使用寄存器图和寄存器池;等)实现寄存器重命名和无序执行的各种方式。

一般地,架构寄存器从处理器的外部或者从程序设计员的视角是可见的。寄存器不限于任何已知特定类型的电路。各种不同类型的寄存器是适合的,只要它们能够如本文中所描述的那样存储和提供数据即可。适合的寄存器的示例包括但不限于专用物理寄存器,使用寄存器重命名的动态地分配的物理寄存器、专用物理寄存器和动态地分配的物理寄存器的组合等。引退单元354和(一个或多个)物理寄存器堆单元358耦合到(一个或多个)执行集群360。(一个或多个)执行集群360包括一组一个或多个执行单元362和一组一个或多个存储器存取单元364。执行单元362可以执行各种运算(例如,移位、加法、减法、乘法)并且对各种类型的数据(例如,标量浮点、封包整数、封包浮点、向量整数、向量浮点)操作。

虽然一些实施例可以包括专用于特定功能或功能集的许多执行单元,但是其他实施例可以包括仅一个执行单元或全部都执行所有功能的多个执行单元。(一个或多个)调度器单元356、(一个或多个)物理寄存器堆单元358和(一个或多个)执行集群360被示出为可能为多个,因为某些实施例为某些类型的数据/运算创建单独的管线(例如,标量整数管线、标量浮点/封包整数/封包浮点/向量整数/向量浮点管线和/或各自具有它们自己的调度器单元、(一个或多个)物理寄存器堆单元和/或执行集群的存储器存取管线—并且在单独的存储器存取管线的情况下,实现其中仅此管线的执行集群具有(一个或多个)存储器存取单元364的某些实施例)。也应该理解的是,在使用单独的管线的情况下,这些管线中的一个或多个可以是无序发布/执行并且其余部分是有序发布/执行。

存储器存取单元364集耦合到存储器单元370,所述存储器单元370可以包括数据预取器380、数据tlb单元372、数据高速缓存单元(dcu)374和第2级(l2)高速缓存单元376,仅举几个例子。在一些实施例中,dcu374也被称为第一级数据高速缓存(li缓存)。dcu374可以处理多个未解决的高速缓存未命中并且继续为传入存储和加载服务。它也支持维持高速缓存一致性。数据tlb单元372是用于通过映射虚拟和物理地址空间来改进虚拟地址转换速度的高速缓存。在一个示例性实施例中,存储器存取单元364可以包括加载单元、存储地址单元和存储数据单元,其中的每一个耦合到存储器单元370中的数据tlb单元372。l2高速缓存单元376可以耦合到高速缓存的一个或多个其他级并且最终耦合到主存储器。

在一个实施例中,数据预取器380通过自动地预测程序将要消耗哪一个数据来推测性地向dcu374加载/预取数据。预取可以指代在处理器实际地要求数据之前将存储在存储器层次(例如,较低级高速缓存或存储器)的一个存储器定位(例如,位置)中的数据转移到更靠近处理器(例如,产生较低存取延迟)的更高级存储器定位。更具体地,预取可以指代在处理器发布对被返回的具体数据的要求之前对从较低级高速缓存/存储器中的一个到数据高速缓存和/或预取缓冲器的数据的早期检索。

处理器300可以支持一个或多个指令集(例如,x86指令集(具有已被添加有较新版本的一些扩展);英国赫特福德郡国王兰利(kingslangley)的imaginationtechnologies的mips指令集;加利福尼亚州桑尼维尔的armholdings的arm指令集(具有诸如neon之类的可选附加扩展)。

应该理解的是,核心可以支持多线程(执行两个或更多个并行的运算或线程集),并且可以以各种方式这样做,所述各种方式包括时间分片多线程、同时多线程(其中单个物理核心为该物理核心同时地多线程处理的线程中的每一个提供逻辑核心)或其组合(例如,诸如intel®超线程技术中的时间分片预取和解码及其后的同时多线程)。

虽然在无序执行的上下文中对寄存器重命名进行描述,但是应该理解的是,可以在有序架构中使用寄存器重命名。虽然所图示的处理器的实施例也包括单独的指令和数据高速缓存单元以及共享l2高速缓存单元,但是替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如第1级(l1)内部高速缓存或多级内部高速缓存。在一些实施例中,系统可以包括内部高速缓存和在核心和/或处理器外部的外部高速缓存的组合。替换地,所有的高速缓存可以在核心和/或处理器外部。

图4图示了根据一个实施例的包括用于执行浮点(fp)加法低运算的逻辑电路的处理器400的微架构的框图。在一些实施例中,依照一个实施例的指令可被实现来对具有字节、字、双字、四字等的大小的数据元素以及数据类型(诸如单精度和双精度整数及浮点数据类型)操作。在一个实施例中,有序前端401是处理器400的预取要执行的指令并且使它们有准备以被稍后用在处理器管线中的部分。可在处理器400中实现页面添加和内容复制的实施例。

前端401可以包括若干单元。在一个实施例中,指令预取器416从存储器预取指令并且将它们馈送给指令解码器418,所述指令解码器418进而对它们进行解码或解释。例如,在一个实施例中,解码器将接收到的指令解码成机器可执行的称作“微指令”或“微运算”(也称作微op或uops)的一个或多个运算。在其他实施例中,解码器将指令解析成操作码(opcode)以及由微架构使用来执行依照一个实施例的运算的对应数据和控制字段。在一个实施例中,追踪高速缓存430进行解码的uops并且将它们组装成uop队列434中的程序有序序列或追踪以供执行。当追踪高速缓存430遇到复杂指令时,微码rom432提供完成运算所需的uops。

一些指令被转换成单个微op,然而其他指令需要若干微op来完成完整运算。在一个实施例中,如果需要多于四个微op来完成指令,则解码器418访问微码rom432以做该指令。对于一个实施例,指令可被解码成少量的微op以便在指令解码器418处处理。在另一实施例中,如果需要许多微op来完成运算,则指令可被存储在微码rom432内。追踪高速缓存430参考入口点可编程逻辑阵列(pla)来确定用于从微码rom432读取要完成依照一个实施例的一个或多个指令的微码序列的正确的微指令指针。在微码rom432针对指令完成对微op定序之后,机器的前端401重新开始从追踪高速缓存430预取微op。

无序执行引擎403是为执行准备指令的地方。无序执行逻辑具有许多缓冲器以使指令流平滑和重新排序以随着它们通过管线往下并得以调度以供执行而优化性能。分配器逻辑给机器分配每个uop为了执行所需要的缓冲器和资源。寄存器重命名逻辑将逻辑寄存器重命名到寄存器堆中的条目上。分配器也在指令调度器:存储器调度器、快速调度器402、慢速/一般浮点调度器404和简单浮点调度器406前面为两个uop队列中的一个中的每个uop分配一个条目,为存储器运算分配一个条目并且为非存储器运算分配一个条目。uop调度器402、404、406基于其相关输入寄存器操作数(operand)源的就绪度和这些uop完成其运算所需要的执行资源的可用性来确定uop何时准备好执行。一个实施例的快速调度器402可在主时钟周期的每一半上调度,而其他调度器每主处理器时钟周期仅可调度一次。调度器对分派端口进行仲裁以对这些uop进行调度以供执行。

寄存器堆408、410位于调度器402、404、406与执行块411中的执行单元412、414、416、418、420、422、424之间。存在分别用于整数和浮点运算的单独的寄存器堆408、410。一个实施例的每个寄存器堆408、410也包括旁路网络,所述旁路网络可绕过或者将仍然尚未被写入到寄存器堆中的刚完成的结果运送到新的相关uops。整数寄存器堆408和浮点寄存器堆410也能够与另一个一起传送数据。对于一个实施例,整数寄存器堆408被分割成两个单独的寄存器堆,一个寄存器堆用于数据的低位32个比特并且第二寄存器堆用于数据的高位32个比特。一个实施例的浮点寄存器堆410具有128比特宽条目,因为浮点指令通常具有宽度从64到128个比特的操作数。

执行块411包含指令被实际地执行所在的执行单元412、414、416、418、420、422、424。这个部分包括寄存器堆408、410,其存储微指令需要执行的整数和浮点数据操作数值。一个实施例的处理器400由如下许多执行单元组成:地址生成单元(agu)412、agu414、快速alu416、快速alu418、慢速alu420、浮点alu422、浮点移动单元424。对于一个实施例,浮点执行块412、414执行浮点、mmx、simd和sse或其他运算。一个实施例的浮点alu412包括64比特乘64比特浮点除法器以执行除法、平方根和余数微op。对于本公开的实施例,可以利用浮点硬件处理牵涉浮点值的指令。

在一个实施例中,alu运算转到高速alu执行单元416、418。一个实施例的快速alu416、418可以以半个时钟周期的有效延迟执行快速运算。对于一个实施例,大多数复杂整数运算转到慢速alu410,因为慢速alu410包括用于长延迟类型的运算(诸如乘法、移位、标志逻辑和分支处理)的整数执行硬件。存储器加载/存储运算由agu412、414执行。对于一个实施例,在对64比特数据操作数执行整数运算的上下文中对整数alu416、418、420进行描述。在替代实施例中,alu416、418、420可被实现来支持包括16、32、128、256等的各种数据比特。类似地,浮点单元412、414可被实现来支持具有各种宽度的比特的一系列操作数。对于一个实施例,浮点单元412、414可与simd和多媒体指令相结合地对128比特宽封包数据操作数操作。

在一个实施例中,uops调度器402、404、406在父加载已完成执行之前分派相关运算。随着uops在处理器400中被推测地调度和执行,处理器400也包括用于处理存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则在管线中可能存在飞行中的已给调度器留下暂时不正确数据的相关运算。重放机制追踪并重新执行使用不正确数据的指令。仅相关运算需要被重放并且允许独立运算完成。处理器的一个实施例的调度器和重放机制也被设计来捕获用于文本串比较运算的指令序列。

根据一个实施例,处理器400也包括用于实现浮点(fp)加法低运算的逻辑。在一个实施例中,处理器400的执行块411可以包括微控制器(mcu),以根据本文描述执行fp加法低运算。

术语“寄存器”可以指代被用作指令的一部分来标识操作数的板上处理器存储定位。换句话说,寄存器可以是(从程序设计员的角度看)从处理器的外部可用的寄存器。然而,实施例的寄存器在含义上不应限于特定类型的电路。相反,实施例的寄存器能够存储和提供数据,并且执行本文中所描述的功能。本文中所描述的寄存器可通过使用任何数量的不同技术的处理器内的电路来实现,诸如专用物理寄存器、使用寄存器重命名的动态地分配的物理寄存器、专用物理寄存器和动态地分配的物理寄存器的组合等。在一个实施例中,整数寄存器存储三十二比特整数数据。一个实施例的寄存器堆也包含用于封包数据的八个多媒体simd寄存器。

对于本文中的讨论,寄存器被理解为被设计来保持封包数据的数据寄存器,诸如用来自加利福尼亚州圣克拉拉的英特尔公司的mmx技术实现的微处理器中的64比特宽mmxtm寄存器(在一些情况下也被称为‘mm’寄存器)。这些mmx寄存器(整数和浮点形式两者都可用)可与伴随simd和sse指令的封包数据元素一起操作。类似地,与sse2、sse3、sse4或超越(通常称为“ssex”)技术有关的128比特宽xmm寄存器也可用于保持此类封包数据操作数。在一个实施例中,在存储封包数据和整数数据时,寄存器不需要在这两种数据类型之间进行区分。在一个实施例中,整数和浮点被包含在相同的寄存器堆或不同的寄存器堆中。此外,在一个实施例中,浮点和整数数据可以被存储在不同的寄存器或相同的寄存器中。

可以按照许多不同的系统类型实现实施例。现在参考图5,示出的是依照实施方式的多处理器系统500的框图。如图5中所示,多处理器系统500是点对点互连系统,并且包括经由点对点互连550耦合的第一处理器570和第二处理器580。如图5中所示,处理器570和580中的每一个可以是多核心处理器,其包括第一和第二处理器核心(即,处理器核心574a和574b以及处理器核心584a和584b),但是在处理器中可以存在潜在更多的核心。依照本发明的实施例,处理器各自可以包括混合写入模式逻辑。可在处理器570、处理器580或两者中实现页面添加和内容复制的实施例。

虽然示出有两个处理器570、580,但是应当理解的是,本公开的范围不限于此。在其他实施方式中,在给定处理器中可以存在一个或多个附加处理器。

处理器570和580被示出分别包括集成存储器控制器单元572和582。处理器570也包括点对点(p-p)接口576和588作为其总线控制器单元的一部分;类似地,第二处理器580包括p-p接口586和588。处理器570、580可以使用p-p接口电路578、588来经由点对点(p-p)接口550交换信息。如图5中所示,imc572和582将处理器耦合到相应的存储器,即存储器532和存储器534,其可以是在本地附接到相应的处理器的主存储器的部分。

处理器570、580可以各自使用点对点接口电路576、594、586、598来经由单独的p-p接口552、554与芯片组590交换信息。芯片组590也可以经由高性能图形接口539与高性能图形电路538交换信息。

共享高速缓存(未示出)可以被包括在任何一个处理器中或在两个处理器外部,仍然经由p-p互连与处理器连接,使得如果处理器被置于低功耗模式,则任何一个或两个处理器的本地高速缓存信息可以被存储在共享高速缓存中。

芯片组590可以经由接口596耦合到第一总线516。在一个实施例中,第一总线516可以是外围组件互连(pci)总线,或诸如pciexpress总线或另一第三代i/o互连总线之类的总线,但是本公开的范围不限于此。

如图5中所示,各种i/o设备514可以耦合到第一总线516以及将第一总线516耦合到第二总线520的总线桥接器518。在一个实施例中,第二总线520可以是低引脚计数(lpc)总线。在一个实施例中,各种设备可以耦合到第二总线520,所述各种设备包括例如键盘和/或鼠标522、通信设备527和存储单元528,所述存储单元528是诸如可以包括指令/代码和数据530的磁盘驱动器或其他大容量存储设备。进一步地,音频i/o524可以耦合到第二总线520。注意,其他架构是可能的。例如,代替图5的点对点架构,系统可以实现多点总线或其他这种架构。

现在参考图6,示出的是依照本发明的实施例的第三系统600的框图。图5和图6中的相似的元件具有相似的附图标记,并且已经从图5中省略了图5的某些方面,以便避免使图6的其他方面混淆。

图6图示了处理器670、680分别可以包括集成存储器以及i/o控制逻辑(“cl”)672和682。对于至少一个实施例,cl672、682可以包括诸如本文中所描述的集成存储器控制器单元。此外。cl672、682也可以包括i/o控制逻辑。图6图示了存储器632、634耦合到cl672、682,并且i/o设备614也耦合到控制逻辑672、682。传统i/o设备615耦合到芯片组690。可在处理器670、处理器680或两者中实现页面添加和内容复制的实施例。

图7是可以包括一个或多个核心702的示例性片上系统(soc)700。本领域已知用于膝上型电脑、台式机、手持pc、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(dsp)、图形设备、视频游戏设备、机顶盒、微控制器、手机、便携式媒体播放器、手持设备和各种其他设备电子设备的其他系统设计和配置也是适合的。一般而言,能够并入如本文中所公开的处理器和/或其他执行逻辑的各式各样的系统或电子设备通常是适合的。

图7是依照本公开的实施例的soc700的框图。虚线框是更先进soc上的特征。在图7中(一个或多个)互连单元702耦合到:应用处理器717,其包括一组一个或多个核心702a-n和(一个或多个)共享高速缓存单元706;系统代理单元710;(一个或多个)总线控制器单元716;(一个或多个)集成存储器控制器单元714;一组或一个或多个媒体处理器720,所述媒体处理器720可以包括集成图形逻辑708、用于提供静止和/或视频相机功能性的图像处理器724、用于提供硬件音频加速的音频处理器726以及用于提供视频编码/解码加速的视频处理器728;静态随机存取存储器(sram)单元730;直接存储器存取(dma)单元732;以及用于耦合到一个或多个外部显示器的显示单元740。可在soc700中实现页面添加和内容复制的实施例。

接下来转向图8,描绘了依照本公开的实施例的片上系统(soc)设计的实施例。作为说明性示例,soc800被包括在用户设备(ue)中。在一个实施例中,ue指代要由最终用户使用来通信的任何设备,诸如手持电话、智能电话、平板、超薄笔记本、具有宽带适配器的笔记本或任何其他类似的通信设备。ue可以连接到基站或节点,其本质上可对应于gsm网络中的移动站(ms)。可在soc800中实现页面添加和内容复制的实施例。

这里,soc800包括2个核心—806和807。类似于以上讨论,核心806和807可以符合指令集架构,诸如具有intel®architecturecoretm、先进微器件公司(amd)处理器、基于mips的处理器、基于arm的处理器设计或其客户以及其许可证或采纳者的处理器。核心806和807耦合到高速缓存控件808,所述高速缓存控件808与总线接口单元809和l2高速缓存810相关联以与系统800的其他部分进行通信。互连811包括片上互连,诸如上面所讨论的iosf、amba或其他互连,其可以实现所描述的公开内容的一个或多个方面。

互连811向其他组件提供通信信道,所述其他组件诸如用于与sim卡对接的订户身份模块(sim)830、用于保持由核心806和807执行的引导代码以初始化并引导soc800的引导rom835、用于与外部存储器(例如dram860)对接的sdram控制器840、用于与非易失性存储器(例如闪存865)对接的闪存控制器845、用于与外围设备对接的外围控件850(例如串行外围接口)、视频编解码器820以及用于显示和接收输入(例如触摸使能输入)的视频接口825、用于执行图形相关计算的gpu815等。这些接口中的任何一个都可以并入本文中所描述的实施例的各方面。

此外,该系统图示了用于通信的外围设备,诸如蓝牙模块870、3g调制解调器875、gps880和wi-fi885。注意如上面所陈述的,ue包括用于通信的无线电设备。结果,可以不全部包括这些外围通信模块。然而,在ue中应该包括用于外部通信的某种形式的无线电设备。

图9图示了示例形式为计算系统900中的机器的图式表示,在所述计算系统900内可以执行用于使机器执行本文中所讨论的方法学中的任何一个或多个的一组指令。在替代实施例中,该机器可以连接(例如,联网)到lan、内联网、外联网或因特网中的其他机器。该机器可以在客户端-服务器网络环境中的服务器或客户端设备的容量中或者作为对等(或分布式)网络环境中的对等机器操作。该机器可以是个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝电话、web(网络)设备、服务器、网络路由器、交换机或桥接器,或能够执行指定要由该机器执行的动作的一组指令(顺序的或以其他方式)的任何机器。进一步地,虽然图示了仅单个机器,但是术语“机器”也应被认为包括单独地或者联合地执行一组(或多组)指令以执行本文中所讨论的方法学中的任何一个或多个的机器的任何合集。可在计算系统900中实现页面添加和内容复制的实施例。

计算系统900包括经由总线930彼此通信的处理设备902、主存储器904(例如,只读存储器(rom)、闪速存储器、动态随机存取存储器(dram)(诸如同步dram(sdram)或dram(rdram)等)、静态存储器906(例如,闪速存储器、静态随机存取存储器(sram)等)和数据存储设备918。

处理设备902表示诸如微处理器、中央处理单元等之类的一个或多个通用处理设备。更特别地,处理设备可以是复杂指令集计算(cisc)微处理器、精简指令集计算机(risc)微处理器、甚长指令字(vliw)微处理器或实现其他指令集的处理器,或实现指令集的组合的处理器。处理设备902也可以是一个或多个专用处理设备,诸如专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器等。在一个实施例中,处理设备902可以包括一个或多个处理器核心。处理设备902被配置成执行处理逻辑926以便执行本文中所讨论的运算。在一个实施例中,处理设备902可以是计算系统的一部分。替换地,计算系统900可包括如本文中所描述的其他组件。应该理解的是,核心可以支持多线程(执行两个或更多个并行的运算或线程集),并且可以以各种方式这样做,包括时间分片多线程、同时多线程(其中单个物理核心为该物理核心同时地多线程处理的线程中的每一个提供逻辑核心)或其组合(例如,诸如intel®超线程技术中的时间分片预取和解码及其后的同时多线程)。

计算系统900可以还包括通信地耦合到网络920的网络接口设备908。计算系统900也可以包括视频显示单元910(例如,液晶显示器(lcd)或阴极射线管(crt))、字母数字输入设备910(例如,键盘)、光标控制设备914(例如,鼠标)、信号生成设备916(例如,扬声器)或其他外围设备。此外,计算系统900可以包括图形处理单元922、视频处理单元928和音频处理单元932。在另一实施例中,计算系统900可以包括芯片组(未图示),其指代被设计来与处理设备902一起工作并且控制处理设备902与外部设备之间的通信的一组集成电路或芯片。例如,芯片组可以是主板上的芯片的集合,所述主板将处理设备902链接到甚高速设备,诸如主存储器904和图形控制器,以及将处理设备902链接到外围设备的低速外围总线,诸如usb、pci或isa总线。

数据存储设备918可以包括计算机可读存储介质924,在其上存储了具体实现本文中所描述的功能的方法学中的任何一个或多个的软件926的。软件926也可以作为指令926完全或至少部分地驻留在主存储器904内和/或在其由计算系统900执行期间作为处理逻辑926驻留在处理设备902内;主存储器904和处理设备902也构成计算机可读存储介质。

计算机可读存储介质924也可以用于存储诸如关于图1所描述的利用处理设备902的指令926,和/或包含调用以上应用的方法的软件库。虽然计算机可读存储介质924在示例性实施例中被示出为单个介质,但是术语“计算机可读存储介质”应被认为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库,和/或关联的高速缓存和服务器)。术语“计算机可读存储介质”也应被认为包括能够存储、编码或者承载由机器执行并且使机器执行本实施例的方法学中的任何一个或多个的一组指令的任何介质。术语“计算机可读存储介质”因此应被认为包括但不限于固态存储器以及光学和磁介质。

以下示例和另外的实施例有关。

示例1是一种处理器,其包括:1)寄存器,其中,所述寄存器用于存储第一浮点(fp)值和第二fp值;以及2)解码器,其用于:a)接收来自应用的要执行add低运算的请求;并且b)对所述请求进行解码;3)add低功能单元,其用于响应于所述请求:a)将所述第一fp值与所述第二fp值相加以获得第一和值;b)对所述第一和值进行舍入以生成add值;c)将所述第一fp值与所述第二fp值相加以获得第二和值;以及d)将所述第二和值减去所述add值以生成add低值。

在示例2中,根据示例1所述的处理器,其中:a)所述第一fp值包括第一尾数和第一指数,并且b)所述第二fp值包括第二尾数和第二指数。

在示例3中,根据示例2所述的处理器,其中:a)将所述第一fp值加到所述第二fp以获得所述第一和值还包括将所述第一尾数加到所述第二尾数以获得所述第一和值的第四尾数;以及b)将所述第一fp值加到所述第二fp以获得所述第二和值还包括将所述第一尾数加到所述第二尾数以获得所述第二和值的第五尾数。

在示例4中,根据示例2所述的处理器,其中,所述add低功能单元还用于使所述第一尾数或所述第二尾数的一个或多个比特移位以对齐所述第一尾数或所述第二尾数,以做加法来获得所述第一和值,以做加法来获得所述第二和值,或者以做减法来生成所述add低值。

在示例5中,根据示例1所述的处理器,其中,所述add低功能单元包括:1)加法器算术逻辑单元(alu),其用于做加法来获得所述第一和值并且用于做加法来获得所述第二和值;2)舍入器alu,其用于执行所述add值的舍入;以及3)减法器alu,其用于执行所述add低值的减法。

在示例6中,根据示例1所述的处理器,其中,所述add低功能单元包括一个或多个浮点单元(fpu),以做加法来获得所述第一和值,以舍入来生成所述add值,以做加法来获得所述第二和值,或者以做减法来生成所述add低值。

在示例7中,根据示例1所述的处理器,其中,所述add低功能单元还用于做加法来获得所述第二和值并且做减法来生成所述add低值作为单指令多数据(simd)运算。

在示例8中,根据示例1所述的处理器,其中,所述add低功能单元还用于做加法来获得所述第二和值并且做减法来生成所述add低值作为标量计算。

在示例9中,根据示例1所述的处理器,其中,所述add低值是单精度格式值。

在示例10中,根据示例1所述的处理器,其中,所述add低值是双精度格式值。

在示例11中,根据示例1所述的处理器,其中,所述add低功能单元还用于:a)使所述add低值归一化以获得归一化add低值;并且b)对所述归一化add低值进行舍入以获得舍入add低值。

各种实施例可以具有上述的结构特征的不同组合。例如,也可以相对于本文中所描述的系统来实现上述的处理器和方法的所有可选特征,并且可以在一个或多个实施例中的任何地方使用示例中的详情。

示例12是一种方法,其包括:1)由add低功能单元将第一浮点(fp)值加到第二fp值以获得第一和值;2)由所述add低功能单元对所述第一和值进行舍入以生成add值;3)由所述add低功能单元将所述第一fp值加到所述第二fp值以获得第二和值;以及3)由所述add低功能单元将所述第二和值减去所述add值以生成add低值。

在示例13中,根据权利要求12所述的示例,其中,所述add值是比特串的第一部分并且所述add低值是所述比特串的第二部分。

在示例14中,根据权利要求12所述的示例,还包括限制在生成所述add低值时使用的尾部比特的数量。

在示例15中,根据权利要求12所述的示例,还包括:由所述add低功能单元使所述add低值归一化以获得归一化add低值;以及由所述add低功能单元对所述归一化add低值进行舍入以获得舍入add低值。

在示例16中,根据权利要求15所述的示例,其中,所述第一和值和所述归一化add低值使用舍入到最近整数算法或向零舍入算法来舍入。

各种实施例可以具有上述的结构特征的不同组合。例如,也可以相对于本文中所描述的系统实现上述的处理器和方法的所有可选特征,并且可以在一个或多个实施例中的任何地方使用示例中的详情。

示例17是一种处理器,其包括:1)寄存器,其中,所述寄存器用于存储第一浮点(fp)值和第二fp值;以及2)add低功能单元,其用于接收来自应用的要执行add低运算的请求并且响应于所述请求而执行以下步骤:a)将所述第一fp值与所述第二fp值相加以获得第一和值;b)对所述第一和值进行舍入以生成add值;c)将所述第一fp值与所述第二fp值相加以获得第二和值;d)将所述第二和值减去所述add值以生成差值;e)使所述差值归一化以获得归一化差值;f)对所述归一化差值进行舍入以生成add低值;以及g)将所述add低值发送到所述应用。

在示例18中,根据示例17所述的处理器,其中:a)所述第一fp值包括第一尾数和第一指数,b)所述第二fp值包括第二尾数和第二指数,并且c)所述add低功能单元还用于使所述第一尾数或所述第二尾数的一个或多个比特移位,以做加法来获得所述第一和值,以做加法来获得所述第二和值,或者以做减法来生成所述差值。

在示例19中,根据示例18所述的处理器,其中,所述add低功能单元还用于确定要使用编码器来移位的比特串中的所述一个或多个比特。

在示例20中,根据示例17所述的处理器,其中,所述add低功能单元包括一个或多个算术逻辑单元(alu),以做加法来获得所述第一和值,以舍入来生成所述add值,以做加法来获得所述第二和值,以做减法来生成所述差值,以归一化来获得所述归一化差值,或者以舍入来生成所述add低值。

虽然已经相对于有限数量的实施例描述了本发明,但是本领域的技术人员将从其中领会许多修改和变化。意图是,所附权利要求涵盖如落入此发明的真实精神和范围内的所有此类修改和变化。

在本文描述中,阐述了许多具体细节,诸如具体类型的处理器和系统配置、具体硬件结构、具体架构和微架构细节、具体寄存器配置、具体指令类型、具体系统组件、具体测量/高度、具体处理器管线级和操作等的示例,以便提供对本发明的透彻理解。然而,对于本领域的技术人员而言将显而易见的是,不必采用这些具体细节来实践本发明。在其他实例中,尚未详细地描述众所周知的组件或方法,诸如具体和替代处理器架构、用于描述的算法的具体逻辑电路/代码、具体固件代码、具体互连操作、具体逻辑配置、具体制造技术和材料、具体编译器实施方式、代码中的算法的具体表达、具体断电和门控技术/逻辑以及计算机系统的其他具体操作细节,以便避免不必要地使本发明混淆。

参照在具体集成电路中(诸如在计算平台或微处理器中)的浮点(fp)加法低运算对实施例进行描述。这些实施例也可以适用于其他类型的集成电路和可编程逻辑器件。例如,所公开的实施例不限于台式计算机系统或便携式计算机,诸如intel®ultrabookstm计算机。并且也可以被用在其他设备中,所述其他设备诸如手持设备、平板、其他薄笔记本、片上系统(soc)设备和嵌入式应用。手持设备的一些示例包括蜂窝电话、因特网协议设备、数码相机、个人数字助理(pda)和手持式pc。嵌入式应用通常包括微控制器、数字信号处理器(dsp)、片上系统、网络计算机(netpc)、机顶盒、网络集线器、广域网(wan)交换机,或可执行在下面教导的功能和操作的任何其他系统。描述了该系统可以是任何种类的计算机或嵌入式系统。所公开的实施例尤其可以被用于低端设备,例如可穿戴设备(例如,手表)、电子植入物、传感和控制基础设施设备、控制器、监督控制和数据获取(scada)系统等。而且,本文中所描述的装置、方法和系统不限于物理计算设备,而是也可以涉及用于能源节约和效率的软件优化。如将在以下描述中变得容易地显而易见的,本文中所描述的方法、装置和系统的实施例(无论是参考硬件、固件、软件还是其组合)对于按性能考虑事项而平衡的“绿色技术”未来至关重要。

尽管参考处理器对本文实施例进行描述,然而其他实施例适用于其他类型的集成电路和逻辑设备。本发明的实施例的类似技术和教导可被应用于可受益于更高的管线吞吐量和改进的性能的其他类型的电路或半导体器件。本发明的实施例的教导适用于执行数据操纵的任何处理器或机器。然而,本发明不限于执行512比特、256比特、128比特、64比特、32比特或16比特数据运算的处理器或机器,并且可被应用于执行数据的操纵或管理的任何处理器和机器。此外,本文描述提供示例,并且附图出于图示的目的示出了各种示例。然而,不应该在限制性含义上解释这些示例,因为它们仅仅旨在提供本发明的实施例的示例,而不是提供本发明的实施例的所有可能的实现方式的详尽列表。

尽管以下示例在执行单元和逻辑电路的上下文中描述指令处理和分发,然而本发明的其他实施例可通过存储在机器可读有形介质上的数据或指令来实现,所述数据或指令当由机器执行时使该机器执行与本发明的至少一个实施例一致的功能。在一个实施例中,与本发明的实施例相关联的功能用机器可执行指令加以具体实现。这些指令可用于使被编程有指令的通用或专用处理器执行本发明的步骤。本发明的实施例可以作为计算机程序产品或软件被提供,所述计算机程序产品或软件可以包括上面存储有指令的机器或计算机可读介质,所述指令可以用于对计算机(或其他电子设备)进行编程以执行根据本发明的实施例的一个或多个操作。替换地,本发明的实施例的操作可能由包含用于执行这些操作的固定功能逻辑的具体硬件组件来执行,或者由编程计算机组件和固定功能硬件组件的任何组合来执行。

可将用于对逻辑进行编程以执行本发明的实施例的指令存储在系统中的存储器内,所述存储器诸如dram、高速缓存、闪速存储器或其他储存器。此外,可经由网络或者通过其他计算机可读介质来分发指令。因此机器可读介质可以包括用于以可由机器(例如,计算机)读取的形式存储或者发送信息的任何机制,但是不限于,软盘、光盘、紧致盘只读存储器(cd-rom)以及磁光盘、只读存储器(rom)、随机存取存储器(ram)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、磁或光学卡、闪速存储器,或在经由电、光学、声学或其他形式的传播信号(例如,载波、红外信号、数字信号等)通过因特网发送信息时使用的有形机器可读储存器。因此,计算机可读介质包括适合于以可由机器(例如,计算机)读取的形式存储或者发送电子指令或信息的任何类型的有形机器可读介质。

设计可以经历从创建到模拟到制造的各种阶段。表示设计的数据可以以许多方式表示该设计。首先,如在模拟中有用的,可以使用硬件描述语言或另一功能描述语言来表示硬件。附加地,可以在设计过程的某些阶段处产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在某个阶段处达到表示硬件模型中的各种设备的物理布局的数据的层级。在使用常规的半导体制作技术的情况下,表示硬件模型的数据可以是指定在用于产生集成电路的掩模的不同掩模层上存在或缺少各种特征的数据。在设计的任何表示中,可以将数据存储在任何形式的机器可读介质中。诸如盘的存储器或磁或光学储存器可以是用于存储经由被调制或者以其他方式生成来发送这种信息的光波或电波来发送的信息。当发送指示或者承载代码或设计的电载波时,在执行电信号的复制、缓冲或重传的范围内,新副本被做出。因此,通信提供商或网络提供商可以在有形机器可读介质上至少暂时地存储具体实现本发明的实施例的技术的物品,诸如编码成载波的信息。

如本文中所使用的模块指代硬件、软件和/或固件的任何组合。作为示例,模块包括与非暂时性介质相关联的硬件(诸如微控制器)以存储被适配成由该微控制器执行的代码。因此,对模块的引用在一个实施例中指代被具体地配置成辨识和/或执行要保持在非暂时性介质上的代码的硬件。此外,在另一实施例中,模块的使用指代包括被具体地适配成由微控制器执行来执行预定操作的代码的非暂时性介质。并且如可推理的,在又一个实施例中,术语模块(在此示例中)可以指代微控制器和非暂时性介质的组合。常常被图示为单独的模块边界通常变化并且可能重叠。例如,第一模块和第二模块可以共享硬件、软件、固件或其组合,同时可能保留某个独立硬件、软件或固件。在一个实施例中,术语逻辑的使用包括硬件,诸如晶体管、寄存器或其他硬件,诸如可编程逻辑器件。

在一个实施例中,短语“被配置成”的使用指代布置、放在一起、制造、提供以出售、导入和/或设计用于执行指定的或确定的任务的装置、硬件、逻辑或元件。在此示例中,不在操作的装置或其元件在它被设计、耦合和/或互连以执行指定的任务的情况下仍然被配置成执行所述指定的任务。作为纯粹说明性示例,逻辑门可以在操作期间提供0或1。但是“被配置成”向时钟提供使能信号的逻辑门不包括可以提供1或0的每一潜在的逻辑门。替代地,逻辑门是以在操作期间1或0输出用于启用时钟的某种方式耦合的逻辑门。再次注意,术语“被配置成”的使用不要求操作,而是替代地集中于装置、硬件和/或元件的潜伏状态,其中在潜伏状态下装置、硬件和/或元件被设计来在该装置、硬件和/或元件正在操作时执行特定任务。

此外,短语‘用于’、“能够/用于”和/或“可操作来”的使用在一个实施例中指代以这样的方式被设计为使得能够以指定的方式使用装置、逻辑、硬件和/或元件的某个装置、逻辑、硬件和/或元件。注意如上述,用于、能够或可操作来的使用在一个实施例中指代装置、逻辑、硬件和/或元件的潜伏状态,其中该装置、逻辑、硬件和/或元件不在操作而是以这样的方式被设计为使得能够以指定的方式使用装置。

如本文中所使用的值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。常常,逻辑电平、逻辑值或逻辑值的使用也被称为l和0的使用,其简单地表示二进制逻辑状态。例如,1指代高逻辑电平并且0指代低逻辑电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元可以能够保持单个逻辑值或多个逻辑值。然而,已经使用计算机系统中的值的其他表示。例如十进制数字十也可以被表示为二进制值1010和十六进制字母a。因此,值包括能够被保持在计算机系统中的信息的任何表示。

而且,状态可以通过值或这些值的部分来表示。作为示例,诸如逻辑一之类的第一值可以表示默认或初始状态,然而诸如逻辑零之类的第二值可以表示非默认状态。此外,术语复位和置位在一个实施例中分别指代默认值或状态和更新值或状态。例如,默认值可能包括高逻辑值,即复位,然而更新值可能包括低逻辑值,即置位。注意,可以利用值的任何组合来表示任何数量的状态。

上面所阐述的方法、硬件、软件、固件或代码的实施例可以经由存储在可由处理元件执行的机器可访问介质、机器可读介质、计算机可访问介质或计算机可读介质上的指令或代码来实现。非暂时性机器可访问/可读介质包括以可由机器(诸如计算机或电子系统)读取的形式提供(即,存储和/或发送)信息的任何机制。例如,非暂时性机器可访问介质包括随机存取存储器(ram),诸如静态ram(sram)或动态ram(dram);rom;磁或光学存储介质;闪速存储器设备;电存储设备;光学存储设备;声学存储设备;用于保持从暂时性(传播)信号(例如,载波、红外信号、数字信号)接收的信息的其他形式的存储设备;等,这些介质或设备将与可以从那里接收信息的非暂时性介质区分开。

可以将用于对逻辑进行编程以执行本发明的实施例的指令存储在系统中的存储器内,所述存储器诸如dram、高速缓存、闪速存储器或其他储存器。此外,可经由网络或者通过其他计算机可读介质来分发指令。因此机器可读介质可以包括用于以可由机器(例如,计算机)读取的形式存储或者发送信息的任何机制,但是不限于,软盘、光盘、紧致盘只读存储器(cd-rom)以及磁光盘、只读存储器(rom)、随机存取存储器(ram)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、磁或光学卡、闪速存储器,或在经由电、光学、声学或其他形式的传播信号(例如,载波、红外信号、数字信号等)通过因特网发送信息时使用的有形机器可读储存器。因此,计算机可读介质包括适合于以可由机器(例如,计算机)读取的形式存储或者发送电子指令或信息的任何类型的有形机器可读介质。

贯穿本说明书对“一个实施例”或“实施例”的引用意味着结合该实施例所描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。因此,短语“在一个实施例中”或“在实施例中”贯穿本说明书出现在各个地方中不一定全部指代相同的实施例。此外,可以在一个或多个实施例中以任何适合的方式组合这些特定特征、结构或特性。

在上述说明书中,已经参考具体示例性实施例给出了详细描述。然而,将显然的是,在不脱离如所附权利要求书中阐述的本发明的更广精神和范围的情况下,可以对其做出各种修改和改变。本说明书和附图因此将在说明性含义而不是限制性含义上被考虑。此外,实施例和其他示例性语言的上述使用不一定指代相同的实施例或相同的示例,而是可以指代不同的和各别的实施例以及潜在相同的实施例。

在对计算机存储器内的数据比特的运算的算法和符号表示方面呈现详细描述的一些部分。这些算法描述和表示是由数据处理领域的技术人员使用来最有效地将他们的工作的实质传达给本领域的其他技术人员的手段。算法在这里并且通常被认为是导致期望结果的操作的前后一致序列。这些操作是要求对物理量进行物理操纵的操作。通常,但不一定,这些量采取能够被存储、转移、组合、比较并以其他方式操纵的电或磁信号的形式。主要出于常见用法的原因将这些信号称为比特、值、元素、符号、字符、术语、数字等有时已证明是方便的。本文中所描述的块可以是硬件、软件、固件或其组合。

然而,应该记住的是,所有这些和类似的术语都将与适当的物理量相关联,并且仅仅是应用于这些量的方便的标签。除非另外具体地陈述,否则如从以上讨论中显而易见的,应领会的是,在整个说明书中,利用诸如“定义”、“接收”、“确定”、“发布”、“链接”、“关联”、“获得、“认证”、“禁止”、“执行”、“请求”、“传送”等之类的术语的讨论指代计算系统或类似的电子计算设备的动作和过程,所述计算系统或类似的电子计算设备操纵并且将表示为计算系统的寄存器和存储器内的物理(例如,电子)量的数据变换成类似地表示为计算系统存储器或寄存器或其他这种信息存储、传输或显示设备内的物理量的其他数据。

单词“示例”或“示例性”在本文中用于意指用作示例、实例或图示。在本文中描述为“示例”或“示例性”的任何方面或设计不一定被解释为优于其他方面或设计为优选的或有利的。相反,单词“示例”或“示例性”的使用旨在以具体方式呈现构思。如本申请中所使用的,术语“或”旨在意指包括性“或”而不是排他性“或”。也就是说,除非另外指定或者从上下文中清楚,否则“x包括a或b”旨在意指自然包括性排列中的任何一个。也就是说,如果x包括a;x包括b;或者x包括a和b两者,则在上述实例中的任何一个下满足“x包括a或b”。此外,除非另外指定或者从上下文中清楚是针对单数形式,否则如本说明书和所附权利要求中使用的冠词“一”和“一个”通常应该被解释为意指“一个或多个”。而且,除非如此描述,否则术语“实施例”或“一个实施例”或“实施方式”或“一个实施方式”在各处的使用不旨在意指相同的实施例或实施方式。另外,如本文中所使用的术语“第一”、“第二”、“第三”、“第四”等意指为用于区分不同元件的标签,并且可能不一定根据它们的数值名称具有序数含义。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1