用于选择数据元素的硬件加速器的制作方法

文档序号:15736837发布日期:2018-10-23 21:37阅读:289来源:国知局

实施例涉及计算机处理器,并且更具体地涉及计算机处理器中的数据选择。



背景技术:

计算设备可以包括中央处理器和主存储器(例如,处理器外部的随机存取存储器)。中央处理器可以执行软件应用的指令。例如,可以执行一些软件应用以从更大的数据源(例如,数据库、数据流等)中选择一些数据元素或记录。

附图说明

图1是根据本发明的实施例的系统的一部分的框图。

图2是根据本发明的实施例的处理器的框图。

图3是根据本发明的另一实施例的多域处理器的框图。

图4是包括多个核的处理器的实施例。

图5是根据本发明的一个实施例的处理器核的微架构的框图。

图6是根据另一实施例的处理器核的微架构的框图。

图7是根据又一实施例的处理器核的微架构的框图。

图8是根据又进一步实施例的处理器核的微架构的框图。

图9是根据本发明的另一实施例的处理器的框图。

图10是根据本发明的实施例的代表性SoC的框图。

图11是根据本发明的实施例的另一示例SoC的框图。

图12是其中可以使用实施例的示例系统的框图。

图13是其中可以使用实施例的另一示例系统的框图。

图14是代表性计算机系统的框图。

图15是根据本发明的实施例的系统的框图。

图16是框图,示出根据实施例的用于制造集成电路以执行操作的IP核开发系统。

图17是根据一个或多个实施例的用于数据选择的示例系统的图。

图18是根据一个或多个实施例的示例选择加速器的图。

图19A-19C是根据一个或多个实施例的示例数据选择操作的框图。

图20是根据一个或多个实施例的用于数据选择的示例方法的流程图。

图21是根据一个或多个实施例的用于数据选择的示例方法的流程图。

具体实施方式

一些计算应用包括从较大数据集中选择N个数据元素。可以根据数据元素的分数值进行这种选择。例如,假设视频应用接收表示各个像素的数据元素流。进一步假设每个像素与视频参数(例如,颜色、亮度、运动等)的分数值相关联。视频应用可以基于分数值来选择前N个像素(例如,基于亮度分数的前200个像素)。在另一个示例中,网络路由器可以从各种设备接收数据分组,每个分组具有相关联的优先级分数。网络路由器可以根据优先级分数来选择待在其他分组之前处理的前N个分组。为了执行这种数据选择,一些应用可以对整个输入数据集进行分类,并且然后可以从已分类的数据集中选择前N个数据元素。然而,这种分类可能涉及大量的硬件资源和计算时间。

根据一些实施例,选择加速器可以从数据集中选择N个数据元素。元素的数量N在本文中可以称为选择加速器的“选择数量”。选择加速器可以基于数据集中的所有数据元素的分数值来将箱(bin)计数器递增。每个箱计数器可以对与特定分数值或与分数值范围相关联的多个数据元素进行计数。在一些实施例中,箱计数器可以根据降序分数值来排序。选择加速器可以确定一系列箱计数器的计数值的累计和。在一些实施例中,选择加速器可以标识序列中累计和达到选择数量N的特定箱计数器。选择加速器可以存储或指定与所述特定箱计数器相关联的分数值作为阈值分数。选择加速器可以基于数据元素与阈值分数的比较来生成输出数据集。选择加速器的示例实现在下面参考图17-21进一步描述。

尽管以下实施例是参考特定集成电路,诸如在计算平台或处理器中来描述的,但其他实施例也适用于其他类型的集成电路和逻辑设备。本文描述的实施例的类似技术和教导可以应用于其他类型的电路或半导体器件。例如,所公开的实施例不限于任何特定类型的计算机系统。也就是说,所公开的实施例可以用于许多不同的系统类型,范围从服务器计算机(例如,塔式服务器、机架式服务器、刀片式服务器、微服务器等),通信系统,存储系统,任何配置的台式计算机、膝上型计算机、笔记本计算机、平板计算机(包括2:1平板计算机、平板手机等),也可用于其他设备,诸如手持设备、片上系统(SoC)和嵌入式应用。手持设备的一些示例包括诸如智能手机之类的蜂窝电话、互联网协议设备、数码相机、个人数字助理(PDA)和手持式PC。嵌入式应用通常可以包括微控制器、数字信号处理器(DSP)、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机,可穿戴设备或任何其他可执行下文教导的功能和操作的系统。另外,实施例可以在具有标准语音功能的移动终端,诸如移动电话、智能手机和平板手机中,和/或在没有标准无线语音功能通信能力的非移动终端,诸如许多可穿戴设备、平板计算机、笔记本、台式机、微服务器、服务器等之中实现。另外,本文描述的装置、方法和系统不限于物理计算设备,而是还可以涉及软件实现。

现在参考图1,示出了根据本发明实施例的系统的一部分的框图。如图1所示,系统100可以包括各种部件,包括处理器110,如所示的是多核处理器。处理器110可以经由外部电压调节器160耦合到电源150,外部电压调节器160可以执行第一电压转换以向处理器110提供主调节电压Vreg。

如所看到的,处理器110可以是包括多个核120a-120n的单管芯处理器。此外,每个核可以与集成电压调节器(IVR)125a-125n相关联,所述集成电压调节器(IVR)接收主调节电压并生成将被提供给与IVR相关联的处理器的一个或多个代理的运行电压。因此,可以提供IVR实现以允许对每个单独核的电压进而对其功率和性能进行细粒度控制。这样,每个核可以在独立的电压和频率下运行,从而实现了很强的灵活性并为使功耗与性能平衡提供了很大可能。在一些实施例中,多个IVR的使用使得能够将部件分组成单独的电源层,使得功率由IVR调节并仅供应给组中的那些部件。在功率管理期间,当处理器处于某种低功耗状态时,一个IVR的给定电源层可能供电下降或停电,而另一个IVR的另一个电源层保持活动或完全供电。类似地,核120可以包括诸如一个或多个锁相环(PLL)之类的独立时钟生成电路系统或与其相关联,以独立地控制每个核120的运行频率。

仍然参考图1,处理器内可以存在附加部件,包括输入/输出接口(IF)132、另一接口134和集成存储器控制器(IMC)136。如所看到的,这些部件中的每一个都可以由另一个集成电压调节器125x供电。在一个实施例中,接口132可以实现用于快速路径互连(QPI)互连的操作,所述QPI互连提供高速缓存一致性协议中的点对点(PtP)链路,所述高速缓存一致性协议包括多个层,包括物理层、链路层和协议层。接口134进而可以经由外围部件互连高速(PCIeTM)协议进行通信。

还示出了功率控制单元(PCU)138,其可以包括包含用于执行关于处理器110的功率管理操作的硬件、软件和/或固件的电路系统。如所看到的,PCU 138经由数字接口162向外部电压调节器160提供控制信息,以使电压调节器生成适当的调节电压。PCU 138还经由另一数字接口163向IVR 125提供控制信息,以控制所生成的运行电压(或导致在低功率模式下禁用对应的IVR)。在各种实施例中,PCU 138可以包括各种功率管理逻辑单元以执行基于硬件的功率管理。这种功率管理可以整体由处理器控制(例如,通过各种处理器硬件,并且可以由工作负荷和/或功率、热或其他处理器约束条件来触发),和/或功率管理可以响应于外部源(诸如平台或功率管理源或系统软件)来执行。

在图1中,PCU 138示出为作为处理器的单独逻辑而存在。在其他情况下,PCU 138可以在给定的一个或多个核120上执行。在一些情况下,PCU 138可以实现为微控制器(专用或通用)或配置用于执行其自身的专用功率管理代码,有时称为P代码的其他控制逻辑。在又其他实施例中,待由PCU 138执行的功率管理操作可以在处理器的外部实现,诸如通过单独的功率管理集成电路(PMIC)或处理器外部的其他部件。在又其他实施例中,待由PCU 138执行的功率管理操作可以在BIOS或其他系统软件内实现。

实施例可以特别适用于多核处理器,其中多个核中的每一个可以在独立的电压和频率点上运行。如本文所使用的,术语“域”用于表示在相同的电压和频率点上运行的硬件和/或逻辑的集合。此外,多核处理器可以进一步包括其他非核处理引擎,诸如固定功能单元、图形引擎等。这种处理器可以包括除核之外的独立域,诸如与图形引擎相关联的一个或多个域(在本文中称为图形域)以及与非核电路系统相关联的一个或多个域,在本文中称为非核或系统代理。尽管多域处理器的许多实现可以形成在单个半导体管芯上,但其他实现可以通过多芯片封装来实现,其中不同的域可以存在于单个封装的不同半导体管芯上。

虽然为了便于说明而未示出,但应理解,处理器110内可以存在附加的部件,诸如非核逻辑,以及其他部件,诸如内部存储器,例如高速缓存存储器层次结构的一个或多个层等。另外,虽然在图1的实现方式中示出了集成电压调节器,但实施例不限于此。例如,可以从外部电压调节器160或者一个或多个附加的外部调节电压源向片上资源提供其他调节电压。

应注意,本文中描述的功率管理技术可以独立于基于操作系统(OS)的功率管理(OSPM)机制并与其互补。根据一种示例OSPM技术,处理器可以在各种性能状态或等级(所谓的P状态,即从P0到PN)下运行。通常,P1性能状态可以对应于OS可以请求的最高保证性能状态。除了这种P1状态之外,OS可以进一步请求更高的性能状态,即P0状态。这种P0状态因此可以是机会型、超频或涡轮模式状态,其中当功率和/或热预算可用时,处理器硬件可以配置处理器或其至少一部分在高于保证频率下运行。在许多实现方式中,处理器可以包括在P1保证最大频率之上的多个所谓的直方频率,所述直方频率超过特定处理器的最大峰值频率,在制造期间融入或以其他方式写入处理器中。此外,根据一种OSPM机制,处理器可以在各种功率状态或等级下运行。关于功率状态,OSPM机制可以指定不同的功耗状态,通常称为C状态,即C0、C1至Cn状态。当核活动时,它以C0状态运行,当核空闲时,可以将核置于核低功率状态,也称为核非零C状态(例如,C1-C6状态),每个C状态处于较低的功耗水平(使得C6是比C1更深的低功率状态等)。

应理解,许多不同类型的功率管理技术可以在不同的实施例中单独或组合使用。作为代表性示例,功率控制器可以控制处理器使得通过某种形式的动态电压频率缩放(DVFS)对其进行功率管理,其中一个或多个核或其他处理器逻辑的运行电压和/或运行频率可以动态地控制以在某些情况下降低功耗。在示例中,DVFS可以使用可从加利福尼亚州圣克拉拉市的英特尔公司购得的增强型英特尔SpeedStepTM技术来执行,从而以最低功耗水平提供最佳性能。在另一示例中,DVFS可以使用英特尔TurboBoostTM技术来执行,以使一个或多个核或其他计算引擎能够基于条件(例如,工作负荷和可用性)在高于保证运行频率下运行。

可以在某些示例中使用的另一种功率管理技术是不同计算引擎之间的工作负荷的动态交换。例如,处理器可以包括以不同的功耗级别运行的非对称核或其他处理引擎,使得在功率受限的情况下,一个或多个工作负荷可以动态切换以在较低功率的核或其他计算引擎上执行。另一种示例性功率管理技术是硬件工作周期(hardware duty cycling,HDC),其可以使核和/或其他计算引擎根据工作周期而周期性地启用和禁用,使得可以使一个或多个核在工作周期的非活动时间段期间处于非活动状态并在工作周期的活动时间段内处于活动状态。

当运行环境中存在约束条件时,也可以使用功率管理技术。例如,当遇到功率和/或热约束条件时,可以通过降低运行频率和/或电压来降低功率。其他功率管理技术包括调低指令执行速率或限制指令调度。更进一步,给定指令集架构的指令有可能包括关于功率管理操作的明示或暗示指导。尽管用这些特定示例进行了描述,但应理解,在特定实施例中可以使用许多其他功率管理技术。

实施例可以在用于各种市场的处理器中实现,包括服务器处理器、台式处理器、移动处理器等。现在参考图2,示出了根据本发明的实施例的处理器的框图。如图2所示,处理器200可以是包括多个核210a-210n的多核处理器。在一个实施例中,每个这样的核可以是独立的功率域的并且可以配置用于基于工作负荷进入和退出活动状态和/或最大性能状态。一个或多个核210可以与其他核异构,例如,具有不同的微架构、指令集架构、流水线深度、功率和性能能力。各种核可以经由互连215耦合到包括各种部件的系统代理或非核220。如所看到的,非核220可以包括共享高速缓存230,其可以是最后一级高速缓存。此外,非核可以包括集成存储器控制器240,以便例如经由存储器总线与系统存储器(图2中未示出)进行通信。非核220还包括各种接口250和功率控制单元255,功率控制单元255可以包括用于执行本文描述的功率管理技术的逻辑。

此外,通过接口250a-250n,可以连接到各种片外部件,诸如外围设备、大容量存储等。虽然在图2的实施例中以这一特定实现示出,但本发明的范围不受限制于此方面。

现在参考图3,示出了根据本发明的另一实施例的多域处理器的框图。如图3的实施例中所示,处理器300包括多个域。具体而言,核域310可以包括多个核310a-310n,图形域320可以包括一个或多个图形引擎,并且可以进一步存在系统代理域350。在一些实施例中,系统代理域350可以以与核域独立的频率执行,并且可以始终保持上电以处理功率控制事件和功率管理,使得可以控制域310和320以动态地进入和退出高功率和低功率状态。域310和320中的每一个都可以在不同的电压和/或功率下运行。应注意,虽然仅采用三个域示出,但应理解,本发明的范围不受限制于此方面并且其他实施例中可以存在附加域。例如,可以存在多个核域,每个核域包括至少一个核。

通常,除了各种执行单元和附加处理元件之外,每个核310a-310n还可以包括低级高速缓存。进而,各个核可以彼此耦合并耦合到由最后一级高速缓存(LLC)340a-340n的多个单元形成的共享高速缓存存储器。在各个实施例中,LLC 340可以在核和图形引擎以及各媒体处理电路系统之间共享。如所看到的,环形互连330因此将所述核耦合在一起,并提供核、图形域320和系统代理域350之间的互连。在一个实施例中,互连330可以为核域的一部分。然而,在其他实施例中,环形互连可以属于其自身的域。

如进一步看到的,系统代理域350可以包括显示控制器352,所述显示控制器可以提供对相关联的显示器的控制并提供到所述相关联显示器的接口。如进一步看到的,系统代理域350可以包括功率控制单元355,所述功率控制单元可以包括用于执行本文中描述的功率管理技术的逻辑。

如在图3中进一步看到的,处理器300可以进一步包括集成存储器控制器(IMC)370,所述IMC可以提供到系统存储器(诸如动态随机存取存储器(DRAM))的接口。可以存在多个接口380a-380n以实现处理器与其他电路系统之间的互连。例如,在一个实施例中,可以提供至少一个直接媒体接口(DMI)接口以及一个或多个PCIeTM接口。再进一步,为了提供其他代理,诸如附加处理器或其他电路系统之间的通信,还可以提供一个或多个QPI接口。虽然在图3的实施例中以高级别示出,但应理解,本发明的范围不受限制于此方面。

参考图4,示出了包括多个核的处理器的实施例。处理器400包括任何处理器或处理设备,诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持式处理器、应用处理器、协处理器、片上系统(SoC)或用于执行代码的其他设备。在一个实施例中,处理器400包括至少两个核,即核401和402,所述核可以包括非对称核或对称核(所示实施例)。然而,处理器400可以包括任何数量的处理元件,所述处理元件可以是对称或非对称的。

在一个实施例中,处理元件是指用于支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、处理单元、上下文、上下文单元、逻辑处理器、硬件线程、核和/或能够保持处理器的状态(诸如执行状态或架构状态)的任何其他元件。换句话说,在一个实施例中,处理元件是指能够与代码独立相关联的任何硬件,所述代码诸如软件线程、操作系统、应用或其他代码。物理处理器通常是指集成电路,所述集成电路可能包括任何数量的其他处理元件,诸如核或硬件线程。

核经常是指位于集成电路上的能够维持独立架构状态的逻辑,其中每个独立维护的架构状态与至少一些专用执行资源相关联。与核相比,硬件线程通常指位于集成电路上的能够维持独立架构状态的任何逻辑,其中独立维持的架构状态共享对执行资源的访问。可以看出,当某些资源被共享而其他资源被专用于架构状态时,硬件线程与核的命名之间的界限重叠。然而经常地,核和硬件线程被操作系统视为单独的逻辑处理器,其中操作系统能够在每个逻辑处理器上单独地调度操作。

如图4所示,物理处理器400包括两个核,即核401和402。本文中,核401和402被认为是对称核,即具有相同配置、功能单元和/或逻辑的核。在另一实施例中,核401包括无序处理器核,而核402包括有序处理器核。然而,核401和402可以分别选自任何类型的核,诸如本地核、软件管理的核、适配用于执行本地指令集架构(ISA)的核、适配用于执行转换ISA的核、共同设计的核或者其他已知的核。然而为了进一步讨论,以下进一步详细地描述核401中示出的功能单元,因为核402中的单元以类似方式进行操作。

如所描绘的,核401包括两个硬件线程401a和401b,所述硬件线程还可以称为硬件线程槽401a和401b。因此,在一个实施例中,诸如操作系统等软件实体可能将处理器400看作四个单独的处理器,即,能够并发执行四个软件线程的四个逻辑处理器或处理元件。如上文所暗示的,第一线程与架构状态寄存器401a相关联,第二线程与架构状态寄存器401b相关联,第三线程可以与架构状态寄存器402a相关联,并且第四线程可以与架构状态寄存器402b相关联。本文中,架构状态寄存器(401a、401b、402a和402b)中的每个架构状态寄存器可以称为如上文所描述的处理元件、线程槽或线程单元。如所示出的,架构状态寄存器401a被复制到架构状态寄存器401b中,所以能够为逻辑处理器401a和逻辑处理器401b存储单独的架构状态/上下文。在核401中,也可以为线程401a和401b复制诸如分配器和重命名器块430中的指令指针和重命名逻辑等其他更小资源。可以通过分区来共享一些资源,诸如重排序/引退单元435中的重排序缓冲器、分支目标缓冲器和指令转换后备缓冲器(BTB和I-TLB)420、加载/存储缓冲器和队列等。诸如通用内部寄存器、(多个)页表基址寄存器、低级数据高速缓存和数据TLB 450、(多个)执行单元440以及重排序/引退单元435的部分之类的其他资源可能完全共享。

处理器400经常包括其他资源,所述资源可以完全共享、通过分区来共享或者由处理元件专用/专用于处理元件。在图4中,示出了具有处理器的说明性逻辑单元/资源的纯粹示例性处理器的实施例。应注意,处理器可以包括或者省略这些功能单元中的任何功能单元,以及可以包括未描绘的任何其他已知功能单元、逻辑或固件。如所示出的,核401包括简化的代表性无序(OOO)处理器核。但可以在不同实施例中利用有序处理器。

核401进一步包括耦合到取出单元的解码模块425,以解码取出的元素。在一个实施例中,取出逻辑包括分别与线程槽401a、401b相关联的单独定序器。很多情况下,核401与第一ISA相关联,所述第一ISA限定/指定可在处理器400上执行的指令。作为第一ISA的一部分的机器代码指令经常包括引用/指定待执行的指令或操作的指令(被称为操作码)的一部分。解码模块425包括从指令的操作码中识别这些指令并在流水线上传递解码后的指令以进行如第一ISA所定义的处理的电路系统。例如,在一个实施例中,解码器模块425包括经设计或经适配以识别特定指令(诸如事务指令)的逻辑。作为解码器模块425的识别的结果,架构或核401采取特定的、预定义的动作来执行与适当指令相关联的任务。重要的是应注意,可以响应于单个或多个指令而执行本文中所描述的任务、块、操作和方法中的任何一个,所述指令中的一些指令可以是新指令或旧指令。

在一个示例中,分配器和重命名器块430包括用于保留诸如用于存储指令处理结果的寄存器堆等资源的分配器。然而,线程401a和401b可能能够进行无序执行,其中分配器和重命名器块430也保留诸如用于跟踪指令结果的重排序缓冲器等其他资源。重命名块430还可以包括寄存器重命名器,以将程序/指令参考寄存器重命名为处理器400内部的其他寄存器。重排序/引退单元435包括用于支持无序执行和随后无序执行指令的有序引退的部件,诸如上文所提及的重排序缓冲器、负载缓冲器和存储缓冲器等。

在一个实施例中,调度器和(多个)执行单元块440包括用于在执行单元上调度指令/操作的调度器单元。例如,在具有可用的浮点执行单元的执行单元的端口上调度浮点指令。还包括与执行单元相关联的寄存器堆,以存储信息指令处理结果。示例性执行单元包括浮点执行单元、整数执行单元、跳转执行单元、负载执行单元、存储执行单元和其他已知执行单元。

较低级数据高速缓存和数据转换后备缓冲器(D-TLB)450耦合到(多个)执行单元440。数据高速缓存用于存储最近使用/操作的元素,诸如数据操作数,所述元素可能以存储器一致性状态保持。D-TLB用于存储最近的虚拟/线性地址到物理地址转换。作为特定示例,处理器可以包括用于将物理存储器分解成多个虚拟页的页表结构。

本文中,核401和402共享对用于高速缓存最近取出的元素的更高级或更外层(further-out)高速缓存410的访问。应注意,更高级别或更外层是指高速缓存级别增加或远离(多个)执行单元。在一个实施例中,更高级高速缓存410是最后一级数据高速缓存,即处理器400上的存储器层级中的末级高速缓存,诸如二级或三级数据高速缓存。然而,因为更高级高速缓存410可以与指令高速缓存相关联于或包括指令高速缓存,所以其并不受如此限制。跟踪高速缓存—一种类型的指令高速缓存—相反可以耦合在解码器模块425之后以存储最近解码的踪迹。

在所描绘的配置中,处理器400还包括总线接口405和功率控制单元460,所述功率控制单元可以执行根据本发明实施例的功率管理。在此场景中,总线接口405用于与处理器400外部的设备通信,诸如系统存储器和其他部件。

存储器控制器470可以与诸如一个或多个存储器等其他设备对接。在示例中,总线接口405包括与存储器控制器和图形控制器的环形互连以便与存储器对接,以及与图形处理器对接。在SoC环境中,可以将甚至更多设备,诸如网络接口、协处理器、存储器、图形处理器和任何其他已知计算机设备/接口,集成到单个管芯或集成电路上以便提供具有高功能和低功耗的小形状因子。

现在参考图5,示出了根据本发明的一个实施例的处理器核的微架构的框图。如图5所示,处理器核500可以是多级流水线无序处理器。核500可以基于接收到的运行电压在各种电压下运行,所述运行电压可以从集成电压调节器或外部电压调节器接收。

如图5中看到的,核500包括前端单元510,前端单元510可以用于取出待执行的指令并将其准备好以供稍后在处理器流水线中使用。例如,前端单元510可以包括取出单元501、指令缓存503和指令解码器505。在一些实现方式中,前端单元510可以进一步包括跟踪缓存、微代码存储以及微操作存储。取出单元501可以例如从存储器或指令高速缓存503中获取宏指令并将其反馈至指令解码器505以将其解码为原语,即用于由处理器执行的微操作。

耦合在前端单元510与执行单元520之间的是无序(OOO)引擎515,无序引擎515可以用于接收微指令并将其准备好以供执行。更具体地说,OOO引擎515可以包括各种缓冲器以重新排序微指令流并分配执行所需的各种资源,并提供将逻辑寄存器重命名到诸如寄存器堆530和扩展寄存器堆535等各种寄存器堆内的存储位置上。寄存器堆530可以包括用于整数和浮点运算的单独寄存器堆。为了配置、控制和附加操作,还可以存在一组机器特定寄存器(MSR)538并且所述一组MSR可以由核500内(以及核外部)的各种逻辑访问。

在执行单元520中可以存在各种资源,包括例如各种整数、浮点和单指令多数据(SIMD)逻辑单元等其他专门硬件。例如,除了其他此类执行单元之外,此类执行单元可以包括一个或多个算术逻辑单元(ALU)522和一个或多个向量执行单元524。

来自执行单元的结果可以提供给引退逻辑,即重排序缓冲器(ROB)540。更具体地说,ROB 540可以包括各种阵列和逻辑以接收与被执行的指令相关联的信息。然后,由ROB 540检查这一信息,以判定指令是否可以被有效地引退并且结果数据被提交到处理器的架构状态,或者是否发生了一个或多个防止指令正确引退的异常。当然,ROB 540可以处理与引退有关的其他操作。

如图5所示,ROB 540耦合到高速缓存550,在一个实施例中,高速缓存550可以是低级高速缓存(例如,L1高速缓存),尽管本发明的范围不受限制于此方面。而且,执行单元520可以直接耦合到高速缓存550。从高速缓存550,可以发生与更高级高速缓存、系统存储器等的数据通信。虽然在图5的实施例中以这种高级别示出,但理解本发明的范围不受限制于此方面。例如,尽管图5的实现是关于诸如 x86指令集架构(ISA)之类的无序机器,但本发明的范围不受限制于此方面。即,其他实施例可以在以下各种处理器中实现:顺序处理器、诸如基于ARM的处理器的精简指令集计算(RISC)处理器、或具有另一种类型的ISA的处理器,所述另一种类型的ISA可以经由仿真引擎和相关联的逻辑电路系统来仿真不同ISA的指令和操作。

现在参考图6,示出了根据另一实施例的处理器核的微架构的框图。在图6的实施例中,核600可以是具有不同微架构的低功率核,诸如设计用于降低功耗的具有相对有限的管道深度的基于 AtomTM的处理器。如所看到的,核600包括经耦合以向指令解码器615提供指令的指令高速缓存610。分支预测器605可以耦合到指令高速缓存610。应注意,指令高速缓存610可以进一步耦合到另一层级的高速缓存存储器,诸如L2高速缓存(为了便于在图6中展示而未示出)。进而,指令解码器615将解码后的指令提供给发布队列(IQ)620以供存储和递送到给定执行流水线。微代码ROM 618耦合到指令解码器615。

浮点流水线630包括浮点(FP)寄存器堆632,FP寄存器堆632可以包括具有诸如128、256或512位的给定位宽度的多个架构寄存器。流水线630包括浮点调度器634以调度指令以供在流水线的多个执行单元之一上执行。在所示实施例中,此类执行单元包括ALU 635、混洗单元636和浮点加法器638。进而,可以将这些执行单元中生成的结果提供回寄存器堆632的缓冲器和/或寄存器。当然,应理解,虽然仅用这些示例执行单元示出,但在另一实施例中可以存在附加的或不同的浮点执行单元。

还可以提供整数流水线640。在所示的实施例中,流水线640包括整数(INT)寄存器堆642,所述INT寄存器堆可以包括具有诸如128或256位的给定位宽度的多个架构寄存器。流水线640包括整数执行(IE)调度器644,以调度指令以供在流水线的多个执行单元之一上执行。在所示的实施例中,此类执行单元包括ALU 645、移位器单元646和跳转执行单元(JEU)648。进而,可以将这些执行单元中生成的结果提供回寄存器堆642的缓冲器和/或寄存器。当然,应理解,虽然仅用这些示例执行单元示出,但在另一实施例中可以存在附加的或不同的整数执行单元。

存储器执行(ME)调度器650可以调度存储器操作以便在地址生成单元(AGU)652中执行,所述AGU还耦合到TLB 654。如所看到的,这些结构可以耦合到数据高速缓存660,所述数据高速缓存可以是L0和/或L1数据高速缓存,所述L0和/或L1数据高速进而耦合到高速缓存存储器层级结构的其他层,包括L2高速缓存存储器。

为了提供对无序执行的支持,除了重排序缓冲器680之外,还可以提供分配器/重命名器670,重排序缓冲器680被配置用于重新排序无序执行的指令以便有序引退。尽管在图6的图示中以这种特定的流水线架构示出,但应理解,许多变体和替换是可能的。

应注意,在具有非对称核的处理器中,诸如根据图5和图6的微架构,出于功率管理的原因,可以在核之间动态交换工作负荷,因为这些核尽管具有不同的流水线设计和深度,但可能具有相同或相关的ISA。这种动态核交换可以以对用户应用(并且可能还有核)透明的方式执行。

参考图7,示出了根据又一实施例的处理器核的微架构的框图。如图7所示,核700可以包括用于在非常低的功耗水平下执行的多级有序流水线。作为一个这样的示例,核700可以具有根据可从加利福尼亚州森尼韦尔市ARM股份有限公司购得的ARM Cortex A53设计的微架构。在实现方式中,可以提供配置用于执行32位和64位代码的8阶段流水线。核700包括取出单元710,所述取出单元被配置用于取出指令并将其提供给解码单元715,所述解码单元可解码指令,例如,诸如ARMv8ISA之类的给定ISA的宏指令。进一步注意,队列730可以耦合到解码单元715以存储解码后的指令。解码后的指令提供给发布逻辑725,在所述发布逻辑处可以将解码后的指令发布给多个执行单元中给定的一个。

进一步参考图7,发布逻辑725可以向多个执行单元中的一个发布指令。在所示的实施例中,这些执行单元包括整数单元735、乘法单元740、浮点/向量单元750、双重发布单元760以及加载/存储单元770。这些不同的执行单元的结果可以提供给回写(WB)单元780。应理解,虽然为了便于说明而示出了单个回写单元,但在一些实现方式中,单独的回写单元可以与每个执行单元相关联。另外,应理解,尽管图7中所示的每个单元和逻辑都以高级别来表示,但具体实现可以包括更多或不同的结构。使用具有如图7中的流水线的一个或多个核设计的处理器可以在许多不同终端产品中实现,从移动设备到服务器系统。

参考图8,示出了根据又一实施例的处理器核的微架构的框图。如图8所示,核800可以包括以非常高的性能水平(其可能发生在比图7的核700更高的功耗水平上)执行的多级多发布无序流水线。作为一个这样的示例,处理器800可以具有根据ARM Cortex A57设计的微架构。在实现方式中,可以提供配置用于执行32位和64位代码的15(或更多)阶段的流水线。此外,流水线可以提供3(或更大)宽带和3(或更大)发布的操作。核800包括取出单元810,取出单元810配置用于取出指令并将其提供给耦合到高速缓存820的解码器/重命名器/分派器单元815。单元815可以解码指令,例如,ARMv8指令集架构的宏指令,重命名指令内的寄存器引用,并将指令(最终)分派到选定的执行单元。解码后的指令可以存储在队列825中。应注意,虽然在图8中为了便于图示而示出单个队列结构,但应理解,可以为多个不同类型的执行单元中的每一个提供单独的队列。

在图8中还示出了发布逻辑830,存储在队列825中的解码指令可以从所述发布逻辑发布到选定的执行单元。在特定实施例中,发布逻辑830也可以用针对发行逻辑830耦合到的多个不同类型的执行单元中的每一个的单独发布逻辑来实现。

解码后的指令可以发布给多个执行单元中给定的一个。在所示的实施例中,这些执行单元包括一个或多个整数单元835、乘法单元840、浮点/向量单元850、分支单元860和加载/存储单元870。在实施例中,浮点/向量单元850可以配置用于处理128或256位的SIMD或向量数据。另外,浮点/向量执行单元850可以执行IEEE-754双精度浮点运算。这些不同执行单元的结果可以提供给回写单元880。应注意,在一些实现方式中,单独的回写单元可以与每个执行单元相关联。另外,应理解,虽然图8中所示的每个单元和逻辑都以高级别表示,但具体实现可以包括更多或不同的结构。

应注意,在具有非对称核的处理器中,诸如根据图7和图8的微架构,出于功率管理的原因,可以动态交换工作负荷,因为这些核尽管具有不同的流水线设计和深度,但可能具有相同或相关的ISA。这种动态核交换可以以对用户应用(并且可能还有核)透明的方式执行。

使用具有如图5-8中一个或多个图中的流水线的一个或多个核设计的处理器可以在许多不同终端产品中实现,从移动设备到服务器系统。现在参考图9,示出了根据本发明另一实施例的处理器的框图。在图9的实施例中,处理器900可以是包括多个域的SoC,所述域的每一个可以控制为在独立的运行电压和运行频率下运行。作为具体说明性示例,处理器900可以是基于 Architecture CoreTM的处理器,诸如可从英特尔公司购得的i3、i5、i7或其他此类处理器。然而,其他低功率处理器,诸如可从加利福尼亚州森尼韦尔市的先进微器件公司(AMD)购得的处理器,来自ARM股份有限公司或其许可证持有者的基于ARM的设计,或来自加利福尼亚州森尼韦尔市的MIPS技术公司或其许可证持有者或采用者的基于MIPS的设计则可以存在于其他实施例中,诸如苹果公司A7处理器、高通Snapdragon处理器或德州仪器OMAP处理器。这样的SoC可以用于低功率系统,诸如智能电话、平板计算机、平板手机计算机、UltrabookTM计算机或其他便携式计算设备,这种低功率系统可以包含具有基于异构系统架构的处理器设计的异构系统架构。

在图9所示的高级视图中,处理器900包括多个核单元910a-910n。每个核单元可以包括一个或多个处理器核、一个或多个高速缓存存储器和其他电路系统。每个核单元910可以支持一种或多种指令集(例如,x86指令集(具有较新版本中已经添加的一些扩展);MIPS指令集;ARM指令集(具有诸如NEON等可选附加扩展))或其他指令集或其组合。应注意,一些核单元可以是异构资源(例如,属于不同的设计)。此外,每个这样的核可以耦合到高速缓存存储器(未示出),在实施例中所述高速缓存存储器可以是共享的二级(L2)高速缓存存储器。非易失性存储930可以用于存储各种程序和其他数据。例如,该存储可以用于存储微代码的至少一部分、诸如BIOS之类的启动信息、其他系统软件等。

每个核单元910还可以包括诸如总线接口单元之类的接口,以实现与处理器的附加电路系统的互连。在实施例中,每个核单元910耦合到可以用作主高速缓存一致性管芯上互连的一致性结构,所述一致性结构进而耦合到存储器控制器935。进而,存储器控制器935控制与诸如DRAM之类的存储器(为了便于图示未在图9中示出)的通信。

除了核单元之外,处理器内还存在附加的处理引擎,包括至少一个图形单元920,所述至少一个图形单元可以包括一个或多个图形处理单元(GPU)以执行图形处理以及可能在图形处理器上执行通用操作(所谓的GPGPU操作)。此外,可以存在至少一个图像信号处理器925。信号处理器925可以配置用于处理从SoC内部或片外的一个或多个捕获设备接收的输入图像数据。

还可以存在其他加速器。在图9的图示中,视频译码器950可以执行译码操作,包括对视频信息的编码和解码,例如,提供对高清晰度视频内容的硬件加速支持。还可以提供显示控制器955来加速显示操作,包括提供对系统的内部和外部显示器的支持。此外,可以存在安全处理器945来执行安全操作,诸如安全引导操作、各种密码操作等。

每个单元可以通过功率管理器940控制其功率消耗,功率管理器940可以包括用于执行本文描述的各种功率管理技术的控制逻辑。

在一些实施例中,处理器900可以进一步包括非一致性结构,所述非一致性结构耦合到各种外围设备可以耦合到的一致性结构。一个或多个接口960a-960d使得能够与一个或多个片外设备通信。此类通信可以通过诸如PCIeTM、GPIO、USB、I2C、UART、MIPI、SDIO、DDR、SPI、HDMI等各种通信协议以及其他类型的通信协议来实现。尽管在图9的实施例中以此高级别示出,但应理解,本发明的范围不受限制于此方面。

现在参考图10,示出了代表性SoC的框图。在所示的实施例中,SoC 1000可以是针对低电力操作配置的多核SoC,所述多核SoC被优化以并入智能电话或其他低电力装置(如平板计算机或其他便携式计算装置)。作为示例,可以使用非对称或不同类型的核(诸如较高功率和/或低功率核的组合,例如无序核和有序核的组合)来实现SoC 1000。在不同的实施例中,这些核可以基于 ArchitectureTM核设计或ARM架构设计。在又一些其他实施例中,可以在给定的SoC中实现英特尔和ARM核的混合。

如图10所示,SoC 1000包括具有多个第一核1012a-1012d的第一核域1010。在示例中,这些核可以是诸如有序核的低功率核。在一个实施例中,这些第一核可以实现为ARM Cortex A53核。进而,这些核耦合到核域1010的高速缓存存储器1015。此外,SoC 1000包括第二核域1020。在图10的图示中,第二核域1020具有多个第二核1022a-1022d。在示例中,这些核可以是比第一核1012功耗更高的核。在实施例中,第二核可以是无序核,所述无序核可以实现为ARM Cortex A57核。进而,这些核耦合到核域1020的高速缓存存储器1025。应注意,虽然图10中所示的示例在每个域中包括4个核,但应理解,在其他示例中,在给定域中可以存在更多或更少的核。

进一步参考图10,还提供了图形域1030,图形域1030可以包括例如由核域1010和1020的一个或多个核提供的配置用于独立地执行图形工作负荷的一个或多个图形处理单元(GPU)。作为示例,除了提供图形和显示渲染操作之外,GPU域1030还可以用于为各种屏幕尺寸提供显示支持。

如所看到的,各个域耦合到相干互连1040,在实施例中,所述相干互连可以是进而耦合到集成存储器控制器1050的高速缓存相干互连结构。在一些示例中,相干互连1040可以包括共享高速缓存存储器,例如L3高速缓存。在实施例中,存储器控制器1050可以是直接存储器控制器,以提供与片外存储器通信的多个信道,诸如DRAM的多个通道(图10中为了便于说明而未示出)。

在不同的示例中,核域的数量可以变化。例如,对于适合于并入移动计算设备中的低功率SoC,可以存在如图10所示的有限数量的核域。更进一步,在此类低功率SoC中,包括较高功率核的核域1020可以具有较少数量的此类核。例如,在一种实现方式中,可以提供两个核1022以实现以降低的功耗水平运行。此外,不同的核域还可以耦合到中断控制器,以实现不同域之间的工作负荷的动态交换。

在又一些其他实施例中,可以存在更多数量的核域以及附加的可选IP逻辑,因为可以将SoC扩展到更高性能(和功率)水平,以便并入其他计算设备中,诸如台式机、服务器、高性能计算系统、基站。作为一个这样的示例,可以提供每个具有给定数量的无序核的4个核域。更进一步,除了可选的GPU支持(作为示例其可以采用GPGPU的形式)之外,还可以提供一个或多个加速器,所述一个或多个加速器用于针对特定功能(例如,Web服务、网络处理、交换等)提供优化的硬件支持。此外,可以存在输入/输出接口以将此类加速器耦合到片外部件。

现在参考图11,示出了另一个示例SoC的框图。在图11的实施例中,SoC 1100可以包括各种电路系统以实现用于多媒体应用、通信和其他功能的高性能。如此,SoC 1100适合于并入诸如智能手机、平板计算机、智能TV等各种各样的便携式设备和其他设备中。在所示出的示例中,SoC 1100包括中央处理器单元(CPU)域1110。在实施例中,在CPU域1110中可以存在多个单独的处理器核。作为一个示例,CPU域1110可以是具有4个多线程核的四核处理器。这种处理器可以是同构处理器或异构处理器,例如,低功率处理器核和高功率处理器核的混合。

进而,提供GPU域1120以在一个或多个GPU中执行高级图形处理以处理图形和计算API。DSP单元1130可以提供一个或多个低功率DSP,除了可能在执行多媒体指令期间发生的高级计算以外,所述低功率DSP还处理如音乐回放、音频/视频等低功率多媒体应用。进而,通信单元1140可以包括用于经由诸如蜂窝通信(包括3G/4G LTE)等各种无线协议,诸如BluetoothTM、IEEE 802.11等无线局域协议来提供连接性的各种部件。

再进一步,多媒体处理器1150可以用于执行对高清晰度视频和音频内容的捕获和回放,包括对用户姿势的处理。传感器单元1160可以包括多个传感器和/或传感器控制器以便与在给定平台中出现的各种芯片外传感器对接。图像信号处理器1170可以提供有一个或多个单独的ISP以便执行关于从平台的一个或多个相机(包括静态相机和视频相机)捕获的内容的图像处理。

显示处理器1180可以为连接到具有给定像素密度的高清晰度显示器提供支持,包括无线地传送用于在这种显示器上回放的内容的能力。再进一步,定位单元1190可以包括支持多个GPS星座的GPS接收器,以便为应用提供使用这种GPS接收器获得的高准确性定位信息。应理解,尽管在图11的示例中用此特定组部件示出,但许多变型和替代是可能的。

现在参考图12,示出了其中可以使用实施例的示例系统的框图。如所看到的,系统1200可以是智能手机或其他无线通信器。基带处理器1205被配置用于关于有待从所述系统发射或被所述系统接收的通信信号进行各种信号处理。进而,基带处理器1205耦合至应用处理器1210,所述应用处理器可以是所述系统的用于执行OS和(除了如许多熟知的社交媒体和多媒体app等用户应用之外)其他系统软件的主CPU。应用处理器1210可以进一步配置用于执行设备的各种其他计算操作。

进而,应用处理器1210可以耦合到用户界面/显示器1220,例如,触摸屏显示器。另外,应用处理器1210可耦合至存储器系统,所述存储器系统包括非易失性存储器(即闪存1230)和系统存储器(即DRAM 1235)。如进一步看到的,应用处理器1210进一步耦合到捕获设备1240,诸如可以记录视频和/或静止图像的一个或多个图像捕获设备。

仍然参考图12,包括订户身份模块和可能的安全存储和密码处理器的通用集成电路卡(UICC)1246也耦合到应用处理器1210。系统1200可以进一步包括安全处理器1250,安全处理器1250可以耦合到应用处理器1210。多个传感器1225可以耦合到应用处理器1210从而能够输入各种感测到的信息,诸如加速度计和其他环境信息。音频输出设备1295可以提供接口以输出声音,例如以语音通信、播放或流式传输音频数据等形式。

如进一步图示的,提供了近场通信(NFC)非接触式接口1260以经由NFC天线1265在NFC近场中通信。尽管在图12中示出了单独的天线,但应理解,在一些实现方式中,可以提供一个天线或不同的天线组以实现各种无线功能。

功率管理集成电路(PMIC)1215耦合到应用处理器1210以执行平台级功率管理。为此,PMIC 1215可以向应用处理器1210发布功率管理请求,以根据需要进入某种低功率状态。另外,基于平台约束条件,PMIC 1215还可以控制系统1200的其他部件的功率水平。

为了能够发送和接收通信,可以在基带处理器1205与天线1290之间耦合各种电路系统。具体地,可以存在射频(RF)收发器1270和无线局域网(WLAN)收发器1275。通常,RF收发器1270可以用于根据给定的无线通信协议,诸如3G或4G无线通信协议,诸如根据码分多址(CDMA)、全球移动通信系统(GSM)、长期演进(LTE)或其他协议,接收和传输无线数据和通话。此外,可以存在GPS传感器1280。还可以提供诸如无线电信号,例如AM/FM以及其他信号的接收或发射的其他无线通信。此外,经由WLAN收发器1275,还可以实现本地无线通信。

现在参考图13,示出了其中可以使用实施例的另一种示例系统的框图。在图13的图示中,系统1300可以是移动低功率系统,诸如平板计算机、2:1平板计算机、平板手机或其他可转换或独立平板系统。如所图示的,存在SoC 1310并且其可以配置用于作为设备的应用处理器运行。

各种设备可以耦合到SoC 1310。在示出的图示中,存储器子系统包括耦合到SoC 1310的闪存1340和DRAM 1345。此外,触摸面板1320耦合到SoC 1310,以便提供显示能力和经由触摸提供用户输入,包括在触摸面板1320的显示器上提供虚拟键盘。为了提供有线网络连接,SoC 1310耦合到以太网接口1330。外围中枢1325耦合到SoC 1310以实现与各种外围设备的接口,诸如可以通过各种端口或其他连接器中的任一个耦合到系统1300。

除了SoC 1310内的内部功率管理电路系统和功能之外,PMIC 1380还耦合到SoC 1310,以便提供基于平台的功率管理,例如基于系统是由电池1390供电还是经由AC适配器1395由AC电源来供电。除了这种基于电源的功率管理,PMIC 1380可以进一步基于环境和使用条件来执行平台功率管理活动。再进一步,PMIC 1380可以向SoC 1310传送控制和状态信息,以便在SoC 1310内引起各种功率管理动作。

仍然参考图13,为了提供无线能力,WLAN单元1350耦合到SoC 1310并进而耦合到天线1355。在各种实现方式中,WLAN单元1350可以根据一个或多个无线协议来提供通信。

如进一步示出的,多个传感器1360可以耦合到SoC 1310。这些传感器可以包括各个加速度计、环境和其他传感器,包括用户手势传感器。最终,音频编解码器1365耦合到SoC 1310以便提供到音频输出设备1370的接口。当然,应理解,尽管在图13中以这种特定的实现示出,但许多变化和替代是可能的。

现在参考图14,示出了诸如笔记本、UltrabookTM或其他小形状因子系统之类的代表性计算机系统的框图。在一个实施例中,处理器1410包括微处理器、多核处理器、多线程处理器、超低电压处理器、嵌入式处理器或其他已知的处理元件。在图示的实现方式中,处理器1410充当用于与系统1400的各种部件中的许多部件进行通信的主处理单元和中央中枢,并且可以包括如本文所述的功率管理电路系统。作为一个示例,处理器1410实现为SoC。

在一个实施例中,处理器1410与系统存储器1415通信。作为说明性示例,系统存储器1415经由多个存储器设备或模块来实现以便提供给定量的系统存储器。

为了提供诸如数据、应用程序、一个或多个操作系统等信息的持久存储,大容量存储1420还可以耦合到处理器1410。在各实施例中,为了实现更薄且更轻的系统设计以及为了改善系统响应,此大容量存储可以经由SSD来实现,或者所述大容量存储可以主要使用硬盘驱动器(HDD)来实现,其中较小量的SSD存储充当SSD高速缓存,以便能够在断电事件期间对上下文状态和其他此类信息进行非易失性存储,从而在系统活动重新启动时可以产生快速加电。还如图14所示,闪存设备1422可以例如经由串行外围接口(SPI)耦合到处理器1410。该闪存设备可以提供系统软件的非易失性存储,包括基本输入/输出软件(BIOS)以及系统的其他固件。

在系统1400内可以存在各种输入/输出(I/O)设备。在图14的实施例中具体示出的是显示器1424,显示器1424可以是高清晰度LCD或LED面板,所述LCD或LED面板进一步提供触摸屏1425。在一个实施例中,显示器1424可以经由显示器互连耦合到处理器1410,所述显示器互连可以实现为高性能图形互连。触摸屏1425可以经由另一互连耦合到处理器1410,在实施例中,所述互连可以是I2C互连。如图14中进一步示出的,除了触摸屏1425之外,通过触摸的用户输入也可以经由触摸板1430发生,触摸板1430可以配置在机箱内并且也可以耦合到与触摸屏1425相同的I2C互连。

为了感知计算和其他目的,各种传感器可以存在于系统内并且可以以不同方式耦合到处理器1410。某些惯性和环境传感器可以通过传感器中枢1440,例如经由I2C互连,耦合到处理器1410。在图14所示的实施例中,这些传感器可以包括加速度计1441、环境光传感器(ALS)1442、指南针1443和陀螺仪1444。其他环境传感器可以包括一个或多个热传感器1446,热传感器1446在一些实施例中经由系统管理总线(SMBus)总线耦合到处理器1410。

还如图14所示,各种外围设备可以经由低引脚数(LPC)互连耦合到处理器1410。在所示的实施例中,各种部件可以通过嵌入式控制器1435耦合。此类部件可以包括键盘1436(例如,经由PS2接口耦合)、风扇1437和热传感器1439。在一些实施例中,触摸板1430还可以经由PS2接口耦合到EC 1435。此外,诸如可信平台模块(TPM)1438之类的安全处理器也可以经由该LPC互连耦合到处理器1410。

系统1400可以以各种方式,包括无线方式,与外部设备进行通信。在图14所示的实施例中,存在各种无线模块,每个无线模块可以对应于配置用于特定无线通信协议的无线电。用于诸如近场的短距离中的无线通信的一种方式可以经由NFC单元1445,所述NFC单元在一个实施例中可以经由SMBus与处理器1410进行通信。应注意,经由该NFC单元1445,彼此接近的设备可以进行通信。

如图14中进一步看到的,附加的无线单元可以包括其他短距离无线引擎,包括WLAN单元1450和BluetoothTM单元1452。使用WLAN单元1450,可以实现Wi-FiTM通信,而经由BluetoothTM单元1452,可以发生短距离BluetoothTM通信。这些单元可以经由给定的链路与处理器1410通信。

此外,经由WWAN单元1456可以产生(例如,根据蜂窝或其他无线广域协议的)无线广域通信,所述WWAN单元进而可以耦合至用户身份模块(SIM)1457。此外,为了使得能够接受和使用位置信息,还可以存在GPS模块1455。应注意,在图14所示的实施例中,WWAN单元1456和诸如相机模块1454之类的集成捕获设备可以经由给定链路进行通信。

为了提供音频输入和输出,可以经由数字信号处理器(DSP)1460来实现音频处理器,所述数字信号处理器可以经由高清晰度音频(HDA)链路耦合到处理器1410。类似地,DSP 1460可以与集成编码/译码器(编解码器)和放大器1462通信,所述集成编码/译码器和放大器进而可以耦合到可以在机箱内实现的输出扬声器1463。类似地,放大器和编解码器1462可以被耦合以从麦克风1465接收音频输入,所述麦克风在实施例中可以经由双阵列麦克风(诸如数字麦克风阵列)来实施以提供高质音频输入从而使得能够对系统内的各种操作进行语音激活控制。还应注意,可以将音频输入从放大器/CODEC1462提供至头戴式耳机插口1464。尽管在图14的实施例中用这些特定部件示出,但应理解,本发明的范围不受限制于此方面。

实施例可以用许多不同的系统类型来实现。现在参考图15,示出了根据本发明的实施例的系统的框图。如图15所示,多处理器系统1500是点对点互连系统,并且包括经由点对点互连1550耦合的第一处理器1570和第二处理器1580。如图15所示,处理器1570和1580中的每一个可以是包括第一和第二处理器核(即,处理器核1574a和1574b以及处理器核1584a和1584b)的多核处理器,但处理器中可能存在更多的核。每个处理器可以包括PCU或其他功率管理逻辑以执行如本文所述的基于处理器的功率管理。

仍然参考图15,第一处理器1570进一步包括存储器控制器中枢(MCH)1572和点对点(P-P)接口1576和1578。类似地,第二处理器1580包括MCH 1582和P-P接口1586和1588。如图15所示,MCH 1572和1582将处理器耦合到各自的存储器,即存储器1532和存储器1534,所述存储器可以是本地附接到相应处理器的系统存储器(例如,DRAM)的部分。第一处理器1570和第二处理器1580可以分别经由P-P互连1562和1564耦合到芯片组1590。如图15所示,芯片组1590包括P-P接口1594和1598。

另外,芯片组1590包括通过P-P互连1539将芯片组1590与高性能图形引擎1538耦合的接口1592。进而,芯片组1590可以经由接口1596耦合到第一总线1516。如图15所示,各种输入/输出(I/O)设备1514,连同将第一总线1516耦合到第二总线1520的总线桥1518,可以耦合到第一总线1516。在一个实施例中,各种设备可以耦合到第二总线1520,包括例如键盘/鼠标1522、通信设备1526和数据存储单元1528,诸如磁盘驱动器或可以包括代码1530的其他大容量存储设备。另外,音频I/O 1524可以耦合到第二总线1520。实施例可以并入包括诸如智能蜂窝电话、平板计算机、上网本、UltrabookTM等移动设备的其他类型的系统中。

至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性代码实现,所述机器可读介质表示和/或限定集成电路(诸如处理器)内的逻辑。例如,机器可读介质可以包括表示处理器内的各种逻辑的指令。当由机器读取时,所述指令可以使机器制造用于执行本文描述的技术的逻辑。这类表示(称为“IP核”)是集成电路的逻辑的可重复使用单元,所述可重复使用单元可以作为对集成电路的结构进行描述的硬件模型而存储在有形、机器可读介质上。可以将硬件模型供应至在制造集成电路的制造机器上加载硬件模型的各消费者或制造设施。可以制造集成电路,从而使得所述电路执行与在此描述的实施例中的任一实施例相关联地描述的操作。

图16是示出根据实施例的可以用于制造集成电路以执行操作的IP核开发系统1600的框图。IP核开发系统1600可以用于生成可并入到更大的设计中或用于构建整个集成电路(例如,SOC集成电路)的模块化、可重复使用设计。设计工具1630可以用高级编程语言(例如,C/C++)生成IP核设计的软件仿真1610。软件仿真1610可以用于设计、测试和验证IP核的行为。然后可以从仿真模型创建或合成寄存器传输级(RTL)设计。RTL设计1615是对硬件寄存器之间的数字信号的流动进行建模的集成电路(包括使用建模的数字信号执行的相关联逻辑)的行为的抽象。除了RTL设计1615之外,还可以创建、设计或合成逻辑水平或晶体管水平上的较低层次设计。因此,初始设计和仿真的具体细节可能有所不同。

可以由设计设施将RTL设计1615或等效方案进一步合成为硬件模型1620,所述硬件模型可以采用硬件描述语言(HDL)或物理设计数据的某种其他表示。可以进一步仿真或测试HDL以验证IP核设计。可以使用非易失性存储器1640(例如,硬盘、闪存或任何非易失性存储介质)来存储IP核设计以便递送给第三方制造设施1665。或者,IP核设计可以通过有线连接1650或无线连接1660传输(例如,经由互联网)。制造设施1665然后可以制造至少部分地基于IP核设计的集成电路。所制造的集成电路可以经配置用于执行根据本文描述的至少一个实施例的操作。

现在参考图17,示出了根据一个或多个实施例的用于数据选择的系统1700的框图。在一些实施例中,系统1700可以是电子设备或部件的全部或一部分。例如,系统1700可以是蜂窝电话、计算机、服务器、网络设备、片上系统(SoC)、控制器、无线收发器、电源单元等。另外,在一些实施例中,系统1700可以是任何相关或互连设备的分组,诸如数据中心、计算集群等。

如图17所示,系统1700可以包括可操作地耦合到系统存储器1705的处理器1710。另外,尽管在图17中未示出,但系统1700可以包括其他部件。在一个或多个实施例中,系统存储器1705可以用任何一种或多种类型的计算机存储器(例如,动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、非易失性存储器(NVM)、DRAM和NVM的组合等)来实现。

处理器1710可以是通用硬件处理设备(例如,中央处理单元(CPU)、片上系统(SoC)等)。如所示出的,处理器1710可以包括选择加速器1720和任何数量的处理核1715A-1715N(也统称为核1715)。每个核1715可以是通用处理核。

在一个或多个实施例中,选择加速器1720可以是专用于从较大的数据集(例如,数据流、数据库、文件等)中选择数据元素的子集的硬件设备和/或电路系统。例如,选择加速器1720可以是诸如压缩协处理器、插入式卡、模块、芯片、处理块等硬件单元。在一些实施例中,核1715可以将数据集发送到选择加速器1720以供选择数据元素的子集。可选地,核1715还可以发送命令或指令以启动选择操作。在一些实施例中,选择加速器1720所选择的数据元素的数量可以由选择数量N来指定。

在一些实施例中,选择加速器1720可以从输入数据集中选择具有最高分数值的N个数据元素的子集。数据元素的分数值可以基于数据元素的参数和/或特征。例如,假设选择加速器1720接收包括表示各个像素的数据元素的视频流。进一步假设每个像素与视频参数(例如,颜色、亮度、运动等)的分数值相关联。在该示例中,选择加速器1720可以基于分数值选择前N个像素(例如,基于亮度分数的前200个像素)。

在一些实施例中,选择加速器1720所使用的分数值可以表示数据元素的单个参数或特征(例如,优先级、相关性、亮度等)。另外,在一些实施例中,选择加速器1720所使用的分数值可以是表示多个参数的组合的值。

现在参考图18,示出了根据一些实施例的选择加速器1800的示例。选择加速器1800可以大致对应于选择加速器1720(在图17中示出)的示例实施例。在一些实施例中,选择加速器1800可以包括输入缓冲器1810、直方图单元1820、阈值检测器1830、数据选择器1840和输出缓冲器1850。

在一个或多个实施例中,输入缓冲器1810可以接收输入数据1805。例如,输入缓冲器1810可以是先进先出(FIFO)缓冲器,以从存储器(例如,图17所示的系统存储器1705)接收输入数据1805。

在一个或多个实施例中,直方图单元1820可以处理全部输入数据1805以确定各个箱计数器中数据元素的计数。在一些实施例中,每个箱计数器可以对与特定分数值(或分数值范围)相关联的数据元素进行计数。另外,在一些实施例中,直方图单元1820的箱计数器可以按照分数值的降序(例如,从具有最高分数值的箱计数器到具有最低分数值的箱计数器)排序。

在一个或多个实施例中,直方图单元1820可以并行处理输入数据1805的多个数据元素。例如,在一些实施例中,直方图单元1820可以接收包括四个数据元素的数据字,并且可以基于这四个数据元素并行地将箱计数器递增。因此,在该示例中,直方图单元1820可以将处理输入数据1805的时间减少四分之三。

在一个或多个实施例中,在处理输入数据1805之后,直方图单元1820可以生成箱计数器中的计数的累计和。在一些实施例中,可以以具有最高分数值的箱计数器开始并按照分数值的降序进行的顺序执行累计和。

在一个或多个实施例中,阈值检测器1830可以检测累计和达到或超过期望的选择数量N的特定箱计数器。与该特定箱计数器相关联的分数值在本文中可以称为“阈值分数”。另外,这一特定箱计数器的计数在本文中可以称为“阈值计数”。

在一个或多个实施例中,数据选择器1840可以处理输入数据1805,并且可以基于阈值分数和阈值计数来选择数据元素。所选数据元素可以传递到输出缓冲器1850,并且可以包括在输出数据1855中。在一些实施例中,输出缓冲器1850可以是FIFO缓冲器。

在一个或多个实施例中,数据选择器1840可以并行处理输入数据1805的多个数据元素。例如,在一些实施例中,数据选择器1840可以接收包括四个数据元素的数据字,并且可以并行地将这四个数据元素中的每一个与阈值分数进行比较。因此,在这个示例中,数据选择器1840可以将生成输出数据1855的时间减少四分之三。

在一些实施例中,选择加速器1800可以包括设置在数据选择器1840的输出与输出缓冲器1850的输入之间的乒乓缓冲器(ping-pongbuffer)(图18中未示出)。在一些实施例中,乒乓缓冲器可以包括可并行使用的两个缓冲器,调整每个缓冲器的大小以存储单独的数据元素。例如,可以使用第一缓冲器将第一数据元素写入输出缓冲器1850,同时使用第二缓冲器从数据选择器1840接收第二数据。

在一些实施例中,每个箱计数器的分数范围的大小(例如,直方大小)可以计算为log(N),被舍入到最接近的整数。在一些实施例中,直方图单元1820中的箱计数器的数量可以在设计选择加速器1800时确定,并且可以基于输入数据1805中可能出现的独特数据值的数量来计算。例如,如果每个数据元素具有八位,则箱计数器的数量可以设置为等于256(即,数据元素的不同值的最大数量)。

在一些实施例中,每个箱计数器的最大计数可以限制为等于选择加速器1800的选择数量N。另外,在一些实施例中,选择数量N可能可通过在选择加速器1800中设置寄存器值来调整,或者可能硬编码在选择加速器1800中。

现在参考图19A-19C,示出了根据一个或多个实施例的示例数据选择操作的框图。具体地说,图19A-19C示出了示例数据选择操作的各个阶段。

参考图19A,在第一时间点,可以基于输入数据1905调整直方图1920。如所示出的,直方图1920可以包括分别与不同分数值相关联的箱计数器。在一些实施例中,直方图1920的箱计数器可以按照分数值的降序来排列。直方图1920可以大致对应于直方图单元1820(在图18中示出)的示例实现。

现在参考图19B,在第二时间点,假设基于全部输入数据1905调整了直方图1920。在一些实施例中,累加器1925可以从具有最高分数值的箱计数器开始,确定一系列箱计数器的计数值的累计和。可以将对应于特定序列(例如,对于前三个箱计数器)的累计和提供给检测器1930。检测器1930可以将累计和与选择数量N进行比较。在一些实施例中,比较器1931可以判定累计和是否等于或大于选择数量N。如果累计和小于选择数量N,序列可以增加以包括下一个箱计数器,并且可以将下一个箱计数器的计数值添加到累计和中。当累计和等于或大于选择数量N时,可以将添加到序列的最后一个箱计数器的分数值指定或存储为阈值分数1932,并且可以将最后一个箱计数器的计数指定或存储为阈值计数1936。检测器1930可以大致对应于阈值检测器1830(在图18中示出)的示例实现。在一些实施例中,阈值分数1932和阈值计数1936可以存储在检测器1930的内部寄存器中。

现在参考图19C,在第三时间点,选择器1940可以处理输入数据1905。选择器1940可以大致对应于数据选择器1840(在图18中示出)的示例实现。在一些实施例中,选择器1940可以包括比较器1941,以对每个数据元素的分数值与阈值分数1932进行比较。如果数据元素的分数值小于阈值分数1932,则选择器1940可以忽略或过滤掉该数据元素。然而,如果数据元素的分数值大于阈值分数1932,则选择器1940可以将当前数据元素包括在输出数据1955中。

在一个或多个实施例中,如果数据元素的分数值等于阈值分数1932,则选择器1940可以将匹配计数1943与阈值计数1936进行比较。在一些实施例中,匹配计数1943可以对输出数据1955中包括的,分数值等于阈值分数1932的数据元素的数量进行计数。如果匹配计数1943小于阈值计数1936,则选择器1940可以将当前数据元素包括在输出数据1955中,并且可以将匹配计数1943加1。然而,如果匹配计数1943不小于阈值计数1936,则选择器1940可以忽略当前数据元素。

在一个或多个实施例中,对于包括在输出数据1955中的每个数据元素,选择器1940可以将输出计数1947加1。另外,选择器1940可以将输出计数1947与选择数量N进行比较。当输出计数1947等于选择数量N时,选择器1940可以停止处理输入数据1905。因此,在一些实施例中,图19A-19C的数据选择操作可以在不必处理全部输入数据1905的情况下完成。

现在参考图20,示出了根据一个或多个实施例的用于数据选择的方法2000的流程图。在各种实施例中,可以通过处理逻辑来执行方法2000,所述处理逻辑可以包括硬件(例如,处理设备、电路系统、专用逻辑、可编程逻辑、微代码等),软件(例如,在处理设备上运行的指令),或其组合。在一些实现方式中,可以使用图17-19C中所示的一个或多个部件(例如,选择加速器1800)来执行方法2000。在固件或软件实施例中,方法2000可以通过存储在诸如光学、半导体或磁存储设备之类的非暂时性机器可读介质中的计算机执行指令来实现。机器可读介质可以存储数据,所述数据如果由至少一个机器使用则使所述至少一个机器制造用于执行方法的至少一个集成电路。为了说明,下面可以参考图17-19C来描述方法2000中涉及的动作,图17-19C示出了根据一个或多个实施例的示例。然而,本文中讨论的各种实施例的范围不受限制于此方面。

在框2010处,可以基于数据集中的所有数据元素将一组箱计数器递增。例如,参考图19A,可以基于输入数据1905中的每个数据元素的分数值来调整直方图1920的箱计数器。

在框2020处,可以访问序列中的第一箱计数器。在一些实施例中,序列中的第一箱计数器与输入数据1905中的数据元素的最高分数值相关联。在框2030处,可以将第一箱计数器的计数值添加到累计和中。例如,参考图19B,从直方图1920的计数值生成累计和。

在菱形框2040处,可以判定累计和是否大于或等于选择数量N。例如,参考图19B,检测器1930可以比较来自直方图1920的累计和与选择数量N。如果在菱形框2040处确定累计和不大于或等于选择数量N,则在框2045处,访问序列中的下一个箱计数器(例如,与次最高分数值相关联的箱计数器)。方法2000然后可以返回到框2030以将当前箱计数器的计数值添加到累加和中。

然而,如果在菱形框2040处确定累计和大于或等于选择数量N,则在框2050处,可以将当前箱计数器的分数值标识为阈值分数。在框2060处,可以将当前箱计数器的计数标识为阈值计数。例如,参考图19B,检测器1930可以将当前箱计数器的分数值存储为阈值分数1932,并且可以将当前箱计数器的计数存储为阈值计数1936。

在框2070处,可以访问数据集中的数据元素。在菱形框2080处,可以执行数据元素的分数值与阈值分数的比较。例如,参考图19C,选择器1940可以访问输入数据1905的数据元素,并且可以将数据元素的分数值与阈值分数1932进行比较。

如果菱形框2080处的比较指示数据元素的分数值小于阈值分数,则方法2000可以返回到框2070以访问数据集的另一个数据元素。另外,如果菱形框2080处的比较指示数据元素的分数值大于阈值分数,则方法2000可以在框2085处继续(下面描述)。另外,如果菱形框2080处的比较指示数据元素的分数值等于阈值分数,则方法2000在菱形框2088处继续。

在菱形框2088处,可以判定匹配计数是否小于阈值计数。如果在菱形框2088处确定匹配计数不小于阈值计数,则方法2000在菱形框2082处继续(下面描述)。然而,如果在菱形框2088处确定匹配计数小于阈值计数,则在框2090处,将匹配计数加1。在框2090之后,方法2000在框2085处继续。例如,参考图19C,选择器1940可以将匹配计数1943与阈值计数1936进行比较。如果匹配计数1943小于阈值计数1936,则选择器1940可以将匹配计数1943加1。

在框2085处,将数据元素添加到输出数据,并且可以将输出计数加1。例如,参考图19C,选择器1940可以将数据元素包括在输出数据1955中,并且可以将输出计数1947加1。

在菱形框2082处,可以判定输出计数是否等于选择数量N。如果在菱形框2082处确定输出计数不等于选择数量N,则方法2000可以返回到框2070以访问数据集的另一个数据元素。例如,参考图19C,选择器1940可以确定输出计数1947不等于选择数量N,并且作为响应可以访问输入数据1905的下一个数据元素。

然而,如果在菱形框2082处确定输出计数等于选择数量N,则方法2000完成。例如,参考图19C,选择器1940可以确定输出计数1947等于选择数量N,并且作为响应可以停止处理输入数据1905。

现在参考图21,示出了根据一个或多个实施例的用于数据选择的方法2100的流程图。在各种实施例中,可以通过处理逻辑来执行方法2100,所述处理逻辑可以包括硬件(例如,处理设备、电路系统、专用逻辑、可编程逻辑、微代码等),软件(例如,在处理设备上运行的指令),或其组合。在一些实现方式中,可以使用图17-19C中所示的一个或多个部件(例如,选择加速器1800)来执行方法2100。在固件或软件实施例中,方法2100可以通过存储在诸如光学、半导体或磁存储设备之类的非暂时性机器可读介质中的计算机执行指令来实现。机器可读介质可以存储数据,所述数据如果由至少一个机器使用则使所述至少一个机器制造用于执行方法的至少一个集成电路。为了说明,下面可以参考图17-19C来描述方法2100中涉及的动作,图17-19C示出了根据一个或多个实施例的示例。然而,本文中讨论的各种实施例的范围不受限制于此方面。

在框2110处,可以访问包括多个数据元素的输入数据集。每个数据元素可以具有分数值。在框2120处,可以基于多个数据元素的分数值来将多个箱计数器递增。每个箱计数器可以用于对具有相关联分数值的多个数据元素进行计数。可以根据降序分数值对多个箱计数器进行排序。例如,参考图19A,可以基于输入数据1905中的每个数据元素的分数值来调整直方图1920的箱计数器。

在框2130处,可以使用累加器来确定一系列箱计数器的计数值的累计和。所述序列可以从多个箱计数器中的第一箱计数器开始。例如,参考图19B,累加器1925可以确定直方图1920中一系列箱计数器的计数值的累计和。

在框2140处,可以使用第一比较器来标识一系列箱计数器中的累计和达到N个元素的第二箱计数器。例如,参考图19B,检测器1930的比较器1931可以标识来自直方图1920的累计和达到选择数量N的箱计数器。

在框2150处,可以由第二比较器基于多个数据元素与同第二箱计数器相关联的分数值的比较来生成输出数据集。例如,参考图19C,选择器1940的比较器1941可以将每个数据元素的分数值与阈值分数1932进行比较。基于此比较,选择器1940可以将数据元素包括在输出数据1955中。在框2150之后,方法2100完成。

应注意,图1-21中所示的示例是为了说明而提供,并且不旨在限制任何实施例。例如,可以设想,选择加速器1720可以在一个或多个核1715A-1715N中的电路系统和/或微架构中实现。另外,可以设想,选择加速器1720可以在处理器1710外部的设备(例如,协处理器芯片、加速器卡或模块等)中实现。在另一示例中,可以设想,选择加速器1720可以选择数据集的底部N个数据元素(即,具有最低分数值的N个元素)。

还应注意,尽管为了清楚起见可能以简化形式示出实施例,但实施例可以包括任何数量和/或布置的处理器、核和/或附加部件(例如,总线、存储介质、连接器、功率部件、缓冲器、接口等)。例如,可以设想,一些实施例可以包括除了所示出的那些部件之外的任何数量的部件,并且在某些实现方式中可以出现所示出的部件的不同布置。另外,可以设想,图1-21所示的示例中的细节可以在一个或多个实施例中的任何地方使用。例如,上文关于图17-21讨论的部件和/或功能可以在上文关于图1-16讨论的任何系统和/或部件中实现。

实施例可以在代码中实现并且可存储在非暂态存储介质上,所述非暂态存储介质具有存储在其上的指令,所述指令可用于对系统编程来执行指令。实施例还可以在数据中实现并且可存储在非暂态存储介质上,所述非暂态存储介质如果由至少一台机器使用则使所述至少一台机器制造用于执行一个或多个操作的至少一个集成电路。存储介质可以包括但不限于包括以下各项的任何类型的磁盘:软盘、光盘、固态驱动器(SSD)、致密盘只读存储器(CD-ROM)、可复写致密盘(CD-RW)、和磁光盘;如只读存储器(ROM)等半导体器件、如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)等随机存取存储器(RAM);可擦可编程只读存储器(EPROM);闪存;电可擦可编程只读存储器(EEPROM);磁卡或光卡;或者适合于存储电子指令的任何其他类型的介质。

以下条款和/或示例涉及进一步的实施例。

在示例1中,一种用于数据选择的处理器可以包括多个处理元件以及用于选择数据元素的硬件加速器。所述硬件加速器可以用于:访问包括多个数据元素的输入数据集,每个数据元素具有分数值;基于所述多个数据元素的所述分数值将多个箱计数器递增,每个箱计数器用于对具有相关联分数值的多个数据元素进行计数;使用累加器确定一系列箱计数器的计数值的累计和,所述序列从所述多个箱计数器中的第一箱计数器开始;使用第一比较器标识所述一系列箱计数器中的第二箱计数器,在所述第二箱计数器处所述累计和达到选择数量N;以及使用第二比较器基于所述多个数据元素与同所述第二箱计数器相关联的阈值分数的比较来生成输出数据集。

在示例2中,如示例1所述的主题可以可选地包括:所述硬件加速器进一步用于:将与所述第二箱计数器相关联的所述阈值分数存储在所述硬件加速器的第一寄存器中;以及将与所述第二箱计数器相关联的阈值计数存储在所述硬件加速器的第二寄存器中。

在示例3中,如示例1-2所述的主题可以可选地包括:所述硬件加速器进一步用于:将所述多个数据元素的分数值与所述阈值分数进行比较;以及过滤掉分数值小于所述阈值分数的数据元素。

在示例4中,如示例1-3所述的主题可以可选地包括:所述硬件加速器进一步用于针对分数值大于所述阈值分数的每个数据元素执行以下操作:将输出计数加1;以及传递待包括在所述输出数据集中的所述数据元素。

在示例5中,如示例1-3所述的主题可以可选地包括:所述硬件加速器进一步用于针对分数值等于所述阈值分数的每个数据元素执行以下操作:判定匹配计数是否小于所述阈值计数;响应于确定所述匹配计数小于所述阈值计数:将所述匹配计数加1;将所述输出计数加1;以及传递待包括在所述输出数据集中的所述数据元素。

在示例6中,如示例1-5所述的主题可以可选地包括:所述硬件加速器进一步用于:响应于确定所述匹配计数不小于所述阈值计数,过滤掉所述数据元素。

在示例7中,如示例1-6所述的主题可以可选地包括:所述多个箱计数器根据降序分数值来排序。

在示例8中,如示例1-7所述的主题可以可选地包括:所述硬件加速器进一步用于:并行地访问所述输入数据集中的多个数据元素。

在示例9中,一种用于数据选择的方法可以包括:由选择加速器基于输入数据集中的多个数据元素的分数值将多个箱计数器递增;确定一系列箱计数器的计数值的累计和,所述序列从所述多个箱计数器中的第一箱计数器开始;在所述一系列箱计数器中确定第二箱计数器,在所述第二箱计数器处所述累计和达到选择数量N;以及将与所述第二箱计数器相关联的分数值标识为阈值分数;将所述多个数据元素的分数值与所述阈值分数进行比较;以及由所述选择加速器基于所述多个数据元素的所述分数值与所述阈值分数的比较来生成输出数据集。

在示例10中,如示例9所述的主题可以可选地包括将与所述第二箱计数器相关联的计数值标识为阈值计数。

在示例11中,如示例9-10所述的主题可以可选地包括将所述阈值分数和所述阈值计数存储在所述选择加速器的寄存器中。

在示例12中,如示例9-11所述的主题可以可选地包括过滤掉分数值小于所述阈值分数的数据元素。

在示例13中,如示例9-12所述的主题可以可选地包括针对分数值大于所述阈值分数的每个数据元素执行以下操作:将输出计数加1;以及将所述数据元素包括在所述输出数据集中。

在示例13中,如示例9-13所述的主题可以可选地包括针对分数值等于所述阈值分数的每个数据元素执行以下操作:判定匹配计数是否小于所述阈值计数;响应于确定所述匹配计数小于所述阈值计数:将所述匹配计数加1;将所述输出计数加1;将所述数据元素包括在所述输出数据集中;以及响应于确定所述匹配计数不小于所述阈值计数,过滤掉所述数据元素。

在示例15中,一种用于数据选择的计算设备可以包括一个或多个处理器,以及存储器,所述存储器具有存储于其中的多条指令,所述指令在由所述一个或多个处理器执行时使所述计算设备执行如示例9-14中任一项所述的方法。

在示例16中,至少一种机器可读介质可以在其上存储有数据,所述数据如果由至少一个机器使用则使所述至少一个机器执行如示例9-14中任一项所述的方法。

在示例17中,一种用于数据选择的电子设备包括用于执行如示例9-14中任一项所述的方法的装置。

在示例18中,一种用于数据选择的系统可以包括处理器,所述处理器包括选择电路,以及耦合到所述处理器的外部存储器。所述选择电路可以用于:访问包括多个数据元素的输入数据集,每个数据元素具有分数值;基于所述多个数据元素的所述分数值将多个箱计数器递增,每个箱计数器用于对具有相关联分数值的多个数据元素进行计数,所述多个箱计数器根据降序分数值排序;确定一系列箱计数器的计数值的累计和,所述序列从所述多个箱计数器中的第一箱计数器开始;标识所述一系列箱计数器中的第二箱计数器,在所述第二箱计数器处所述累计和达到选择数量N;以及基于所述多个数据元素的分数值与同所述第二箱计数器相关联的阈值分数的比较来生成输出数据集。

在示例19中,如示例18所述的主题可以可选地包括:所述选择加速器进一步用于:将与所述第二箱计数器相关联的所述阈值分数存储在所述选择加速器的第一寄存器中;以及将与所述第二箱计数器相关联的阈值计数存储在所述选择加速器的第二寄存器中。

在示例20中,如示例18-19所述的主题可以可选地包括:所述选择加速器进一步用于:过滤掉分数值小于所述阈值分数的数据元素。

在示例21中,如示例18-20所述的主题可以可选地包括:所述选择加速器进一步用于针对分数值大于所述阈值分数的每个数据元素执行以下操作:将输出计数加1;以及将所述数据元素包括在所述输出数据集中。

在示例22中,如示例18-21所述的主题可以可选地包括:所述选择加速器进一步用于针对分数值等于所述阈值分数的每个数据元素执行以下操作:判定匹配计数是否小于所述阈值计数;响应于确定所述匹配计数小于所述阈值计数:将所述匹配计数加1;将输出计数加1;以及将所述数据元素包括在所述输出数据集中。

在示例23中,如示例18-2所述的主题可以可选地包括:所述选择加速器进一步用于:响应于确定所述匹配计数不小于阈值计数,过滤掉所述数据元素。

在示例24中,一种用于数据选择的装置可以包括:用于基于输入数据集中的多个数据元素的分数值将多个箱计数器递增的装置;用于确定一系列箱计数器的计数值的累计和的装置,所述序列从所述多个箱计数器中的第一箱计数器开始;用于在所述一系列箱计数器中确定第二箱计数器的装置,在所述第二箱计数器处累计和达到选择数量;以及用于将与所述第二箱计数器相关联的分数值标识为阈值分数的装置;用于将所述多个数据元素的分数值与所述阈值分数进行比较的装置;以及用于基于所述多个数据元素的所述分数值与所述阈值分数的比较来生成输出数据集的装置。

在示例25中,如示例24所述的主题可以可选地包括用于将与所述第二箱计数器相关联的计数值标识为阈值计数的装置。

在示例26中,如示例24-25所述的主题可以可选地包括用于将所述阈值分数和所述阈值计数存储在所述装置的寄存器中的装置。

在示例27中,如示例24-26所述的主题可以可选地包括用于过滤掉分数值小于所述阈值分数的数据元素的装置。

在示例28中,如示例24-27所述的主题可以可选地包括用于针对分数值大于所述阈值分数的每个数据元素执行以下操作的装置:将所述输出计数加1;以及将所述数据元素包括在所述输出数据集中。

在示例29中,如示例24-28所述的主题可以可选地包括:所述多个箱计数器根据降序分数值来排序。

在示例30中,如示例24-29所述的主题可以可选地包括用于并行地访问所述输入数据集中的多个数据元素的装置。

可以设想,以上示例的各种组合是可能的。实施例可以用于许多不同类型的系统中。例如,在一个实施例中,通信设备可以布置为执行本文中描述的各种方法和技术。当然,本发明的范围不限于通信设备,相反其他实施例可涉及用于处理指令的其他类型的设备、或包括指令的一个或多个机器可读介质,所述指令响应在计算设备上被执行而使得所述设备执行在此描述的方法和技术中的一项或多项。

整个说明书中对“一个实施例”或“实施例”的引用意味着结合所述实施例描述的特定特征、结构或特性包括在本发明所涵盖的至少一个实现方式中。因此,短语“一个实施例”或“在实施例中”的出现不一定是指同一实施例。另外,特定的特征、结构或特性可以以除所示出的特定实施例以外的其他合适形式来实施,并且所有此类形式可以涵盖在本申请的权利要求内。如本文中使用的,“响应于”是指直接的因果关系。

尽管已经关于有限数量的实施例描述了本发明,但本领域的技术人员将从其中认识到许多修改和变化。旨在使得所附的权利要求书覆盖落入本发明的真正精神和范围的所有这样的修改和变体。

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