CN108351786B - 在指令集架构中对数据进行排序并且合并经排序数据 - Google Patents

在指令集架构中对数据进行排序并且合并经排序数据 Download PDF

Info

Publication number
CN108351786B
CN108351786B CN201680066743.6A CN201680066743A CN108351786B CN 108351786 B CN108351786 B CN 108351786B CN 201680066743 A CN201680066743 A CN 201680066743A CN 108351786 B CN108351786 B CN 108351786B
Authority
CN
China
Prior art keywords
elements
ordered
sequence
sorted
identified
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.)
Active
Application number
CN201680066743.6A
Other languages
English (en)
Other versions
CN108351786A (zh
Inventor
A·K·米什拉
D·T·马尔
J·S·朴
N·R·萨蒂什
M·斯密尔安斯基
M·安德森
M·A·帕特瓦里
N·森达拉姆
S·李
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN108351786A publication Critical patent/CN108351786A/zh
Application granted granted Critical
Publication of CN108351786B publication Critical patent/CN108351786B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)

Abstract

一种处理装置,包括排序模块,所述排序模块向多个元素中的每一个加上寄存器组中的相应位置的位置值,从而在相应位置中产生多个经变换元素。所述多个元素包括多个位。所述排序模块将所述多个经变换元素中的每一个与自身以及彼此进行比较。所述排序模块还基于所述比较向所述多个经变换元素中的每一个分配启用指示符或禁用指示符之一。进一步地,所述排序模块对向所述多个经变换元素中的每一个分配的所述启用指示符的数量进行计数以生成所述多个元素的经排序序列。

Description

在指令集架构中对数据进行排序并且合并经排序数据
技术领域
本文所描述的实施例总体上涉及处理装置,并且更具体地涉及在处理装置的指令集架构中对数据进行排序并且合并经排序数据。
背景技术
排序是许多计算机应用广泛使用的重要核心。在数据库中,排序有助于对数据进行排序、创建索引、以及执行二进制搜索。排序促进了统计相关应用,包括找到最近对、确定元素的唯一性、找到第k个最大元素、以及识别异常值。排序在物理模拟中例如用于找到凸包以促进冲突检测。排序还在大数据应用、特别是图形分析中得以使用,在大数据应用中,排序用于在顶点编程期间对组成输出向量的键/值对进行排序。合并排序是排序的非常广泛使用的实施方式。合并排序内的关键图元是合并两个经排序序列。
附图说明
根据以下给出的详细描述并且根据本公开的各个实施例的附图,将更全面地理解本公开。然而,附图不应被认为是将本公开限制于特定实施例,而是仅用于解释和理解。
图1是包括实施指令集架构环境的处理装置的计算系统的一个实施例的框图;
图2是框图,展示了根据本公开的实施例的用于实施指令集架构执行环境的排序模块;
图3是根据本公开的实施例的在指令集架构执行环境中进行的排序的示例;
图4是流程图,展示了根据本公开的实施例的用于在指令集架构执行环境中进行排序的方法;
图5是框图,展示了根据本公开的实施例的用于实施指令集架构执行环境的合并模块;
图6是根据本公开的实施例的在指令集架构执行环境中进行的合并的示例;
图7是流程图,展示了根据本公开的实施例的用于在指令集架构执行环境中进行合并的方法;
图8是框图,展示了根据本公开的实施例的用于实施指令集架构执行环境的合并模块;
图9是根据本公开的实施例的在指令集架构执行环境中进行的合并的示例;
图10是流程图,展示了根据本公开的实施例的用于在指令集架构执行环境中进行合并的方法;
图11A是框图,展示了用于处理器的微架构,本公开的一个实施例可以用于所述微架构中;
图11B是框图,展示了根据本公开的至少一个实施例实施的有序流水线和寄存器重命名级、乱序发布/执行流水线;
图12展示了根据本公开的一个实施例的用于处理器的微架构的框图;
图13是框图,展示了本公开的实施例可以用于其中的系统;
图14是本公开的实施例可以在其中操作的系统的框图;
图15是本公开的实施例可以在其中操作的系统的框图;
图16是根据本公开的实施例的芯片上系统(SoC)的框图;
图17是根据本公开的SoC设计的实施例的框图;
图18展示了计算机系统的一个实施例的框图;并且
图19展示了根据本公开的采用计算系统的形式的机器的框图。
具体实施方式
本文所公开的是用于提供用于在计算系统中对数据进行排序并且合并经排序数据的指令集架构环境的实施例。
现有数据排序机制在计算系统中以软件实施,所述软件可以对存储在计算系统中的寄存器中的数据元素进行排序。当前数据排序机制对每个数据元素进行排序花费多个周期或指令。例如,对1个数据元素进行排序可能花费至少15个周期和12条指令。因此,在大数据应用中对数据进行排序可能消耗大量指令或周期,这是耗时的。
本公开的实施例通过使用诸如交叉开关逻辑、计数逻辑和置换逻辑等硬件逻辑对数据元素进行排序来克服上述问题。在一个实施例中,当(寄存器中的)n个未排序元素之中的一个元素的值与这n个排序元素之中的另一元素的值相同时,交叉开关逻辑将这n个未排序元素左移特定数量的位,向经左移的n个元素中的每一个加上位置值以生成经变换的n个元素,并且将经变换的n个元素中的每一个与经变换的n个元素中的其他元素进行比较。在一个实施例中,计数逻辑基于所述比较而生成相对顺序的n个元素的所产生序列,并且置换逻辑对n个元素的所产生序列进行置换并将n个经排序元素的经置换序列输出到寄存器。在一个实施例中,交叉开关逻辑花费4个周期,计数逻辑花费1个周期,并且置换逻辑花费1个周期。因此,可以使用总共6个周期来对16个数据元素进行排序。因此,相比现有数据排序机制,本公开的实施例使对数据元素的排序加速了至少35倍。
现有经排序数据合并机制在计算系统中以软件实施,所述软件可以对存储在计算系统中的寄存器中的经排序数据元素进行合并。当前数据合并机制一次一个地对每个数据元素进行合并,这可能花费多个周期或指令。例如,对于16个元素,合并每个数据元素可能每合并花费大约15个周期和12条指令。
本公开的实施例通过实施诸如划分逻辑、位置有效载荷逻辑、双调逻辑、排序有效载荷逻辑和置换逻辑等用于执行合并操作的硬件逻辑来克服对经排序数据元素进行合并的上述问题。在一个实施例中,划分逻辑将(寄存器中的)n个元素的经排序输入序列的两个组划分成两半:下半部分和上半部分。在一个实施例中,位置有效载荷逻辑在上半部分和下半部分两者中附上位置标识符作为这n个元素中的每一个的有效载荷。在一个实施例中,双调逻辑将上半部分中的这n个元素中的每一个与下半部分中的这n个元素中的每一个合并。排序有效载荷逻辑然后可以使用经合并经排序的n个元素中的每一个的位置来生成n个元素的经排序经合并序列。在一个实施例中,置换逻辑对n个元素的所产生的经排序经合并序列进行置换并且将n个经排序元素的经置换经排序经合并序列输出至寄存器。对于16个元素,本公开的实施方式一次可以利用2个周期或指令来合并每个数据元素(即,通过每周期合并8个元素),从而产生8倍于现有经排序数据合并机制的执行速度。
可替代地,本公开的实施例可以通过实施诸如识别逻辑、双调逻辑、掩码逻辑、排序掩码逻辑和置换逻辑等其他硬件逻辑来克服对经排序数据元素进行合并的上述问题。在一个实施例中,识别逻辑从(寄存器中的)这n个元素的经排序输入序列的这两个组中的第一输入序列中识别n个元素中的多组并且从第二输入序列中识别n个元素中的多组。双调逻辑可以首先将来自第一序列的所述多个组中的每一组中的所识别元素中的每一个与来自第二序列的所述多个组中的每一组中的所识别元素中的每一个进行比较。另外,双调逻辑将来自第二序列的所述多个组中的每一组中的所识别元素中的每一个与来自第一序列的所述多个组中的每一组中的所识别元素中的每一个进行比较。在一个实施例中,掩码逻辑基于第一比较从来自第一序列的所述多个组中的每一组中选择所识别元素,并且还基于第二比较从来自第二序列的所述多个组中的每一组中选择所识别元素。掩码逻辑然后可以将自来自第一序列的所述多个组中的每一组的所选所识别元素与来自第二序列的所述多个组中的每一组的所选所识别元素合并。在一个实施例中,排序掩码逻辑对经合并的所选所识别元素进行排序以生成n个元素的经排序经合并序列。在一个实施例中,置换逻辑对n个元素的所产生的经排序经合并序列进行置换并且将n个经排序元素的经置换经排序经合并序列输出至寄存器。
因此,与之前的一次合并一个数据元素的解决方案相反,本公开的实施例通过在同一时间合并多个数据元素而提高了与合并数据元素有关的处理速度。进一步地,本公开的实施例合并多个经排序输入序列以产生经全局排序的输出。
图1是实施处理装置的指令集架构(ISA)的计算系统100的框图。计算系统100的一些示例可以包括但不限于具有广泛处理能力的计算装置,诸如个人计算机(PC)、服务器计算机、个人数字助理(PDA)、智能电话、膝上型计算机、上网本计算机、平板装置和/或能够(相继或以其他方式)执行指定要由那个机器采取的动作的指令集的任何机器。
计算系统100可以包括例如用于处理针对计算系统100的操作的处理装置105。处理装置105可以包括位于单独的组件中的一个或多个处理装置(也被称为处理器),或者可替代地,可以包括在被安排成例如芯片上系统(SOC)配置的单个集成电路(IC)中具体化的一个或多个处理核。在一些实施例中,处理装置是通用处理装置。例如,处理装置105包括通常用作中央处理单元(CPU)的类型的处理装置。在其他实施例中,处理装置可以是专用处理装置。专用处理器的示例包括但不限于协处理装置、图形处理装置、通信处理装置、网络处理装置、密码处理装置、嵌入式处理装置、数字信号处理装置(DSP)等。处理装置105可以连接至插口。在一些实施例中,如果存在多个处理装置,则处理装置105可以连接至同一个插口或不同的插口。
计算系统100可以包括由处理装置105执行的一个或多个不同应用150。可以在处理装置105中执行用于实施应用150的指令(即,计算机可执行程序)。所述指令可以包括但不限于加法操作、移位操作、比较操作、计数操作、转换操作、置换操作以及置乱操作。
尽管处理装置105和应用150在图1中被描绘为单一的不同组件,但这些组件可以一起实施在单个装置中或者以一起操作的多个不同装置的各种组合来组网。装置的示例可以包括但不限于服务器、大型计算机、联网计算机、基于处理的装置、以及类似类型的系统和装置。
处理装置105可以包括诸如排序模块110、合并模块120、以及一个或多个寄存器140a至140n等模块。在一个实施例中,模块是硬件组件,比如执行某些操作的硬件电路系统。模块可以是与计算机系统的处理装置中的其他组件交互的自含式组件。
排序模块110可以执行与应用150相对应的指令。指令可以包括用于使排序模块110对n个数据元素(元素)的序列进行排序的程序代码,所述数据元素(元素)中的每一个具有特定数量的位。具体地,所述指令使排序模块110执行诸如但不限于以下各项的活动:在寄存器140a至140n中的未排序的n个元素的相应位置中读/检索这n个元素的序列;将未排序元素左移log(n)位;向经移位未排序的n个元素中的每一个加上相应位置的值,从而产生经变换的n个元素;将经变换的n个元素中的每一个与经变换的n个元素中的其他元素进行比较以生成相对顺序的n个元素的所产生序列;以及对n个元素的所产生序列进行置换以将n个经排序元素的经置换序列输出至寄存器140a至140n。包括指令、数据等的信息(未示出)可以存储在存储器130中。
合并模块120可以执行与应用150相对应的指令。指令可以包括用于使合并模块120将经排序序列的两个组合并成一个经合并序列并且对经合并序列进行排序以生成经排序经合并序列的程序代码。经排序序列的这两个组中的每一组包括n个元素,所述元素中的每一个具有特定数量的位。
在一个实施例中,所述指令使合并模块120执行诸如但不限于以下各项的活动:在寄存器140a至140n中的经排序的n个元素的相应位置中读/检索包括n个元素的经排序序列的两个组;将这n个元素的经排序序列的这两个组划分成两半:下半部分和上半部分;附上位置作为上半部分和下半部分两者中的这n个元素中的每一个的有效载荷;将上半部分中的这n个元素中的每一个与下半部分中的这n个元素中的每一个合并;以及使用经合并经排序的n个元素中的每一个的位置来生成n个元素的所产生经排序经合并序列;以及对n个元素的所产生经排序经合并序列进行置换以将n个经排序元素的经置换经排序经合并序列输出至寄存器140a至140n。包括指令、数据等的信息(未示出)可以存储在存储器130中。
在另一实施例中,所述指令使合并模块120执行诸如但不限于以下各项的活动:在寄存器140a至140n中的n个元素的相应位置中读/检索经排序序列的两个组,这两个组中的每一组包括n个元素;从第一序列中识别n个元素中的多组并且从第二序列中识别所述n个元素中的多组;将来自第一序列的所述多个组中的每一组中的所识别元素中的每一个与来自第二序列的所述多个组中的每一组中的所识别元素中的每一个进行比较;基于所述比较从来自第一序列的所述多个组中的每一组中选择所识别元素;将来自第二序列的所述多个组中的每一组中的所识别元素中的每一个与来自第一序列的所述多个组中的每一组的所识别元素中的每一个进行比较;基于所述比较从来自第二序列的所述多个组中的每一组中选择所识别元素;将来自第一序列的所述多个组中的每一组的所选所识别元素与来自第二序列的所述多个组中的每一组的所选所识别元素进行比较;对经合并的所选经识别元素进行排序以生成n个元素的所产生经排序经合并序列;以及对n个元素的所产生经排序经合并序列进行置换以将n个经排序元素的经置换经排序经合并序列输出至寄存器140a至140n。包括指令、数据等的信息(未示出)可以存储在存储器130中。
存储器130可以包括固定或可移除格式的随机存取存储器(RAM)、非易失性存储器、或只读存储器(ROM)。RAM可以包括用于在计算系统100的操作过程中保持信息的存储器,如例如静态RAM(SRAM)或动态RAM(DRAM)。ROM可以包括诸如用于在计算系统100激活时提供指令的计算装置BIOS存储器等存储器、诸如电子可编程ROM(EPROM)等可编程存储器、闪存等。在一个实施例中,存储器130被保护,使得存储器130可由排序模块110以及由合并模块120进行访问和修改。
寄存器140a至140n可以包括在计算系统100处于排序状态的同时由排序模块110执行指令期间使用以便能够读取数据中的未排序元素的寄存器和/或存储装置。在一个实施例中,所述寄存器是单指令多数据(SIMD)寄存器。在一个实施例中,寄存器140a至140n是向量数据寄存器。寄存器140a至140n可以包括但不限于:用于临时值的寄存器、栈指针、指向数据元素的指针、用于在计算系统100中执行的指令的临时存储装置等。在一个实施例中,寄存器140a至140n可以被保护以便仅可由排序模块110和合并模块120进行访问和修改。寄存器140a至140n可以对在排序模块110和合并模块120的外部执行的软件可读。
图2展示了根据本公开的一个实施例的包括用于实施指令集架构环境的排序模块210的处理装置205。在一个实施例中,处理装置205与以上关于图1所描述的处理装置105相同。在一个实施例中,排序模块210与以上关于图1所描述的排序模块110相同。排序模块210可以包括诸如交叉开关逻辑220、计数逻辑230和置换逻辑240等逻辑。在一个实施例中,逻辑是硬件组件,比如执行某些操作的硬件电路系统。逻辑可以是与计算机系统的处理装置中的其他组件交互的自含式组件。
可以在排序模块210中包括更多或更少的组件,而不失一般性。
在一个实施例中,排序模块210从诸如关于图1所描述的寄存器140a至140n等寄存器中接收未排序n个数据元素(元素)的序列的输入。在一个实施例中,数据元素是被限定用于处理的数据单元。可以通过大小和类型来限定数据元素。在一个实施例中,寄存器140a至140n是源寄存器。这n个元素中的每一个包括特定数量的位。在一个实施例中,寄存器140a至140n中的每一个是包括各自具有32位的16个元素的512位寄存器。在一个实施例中,寄存器140a至140n中的每一个是包括各自具有64位的8个元素的512位寄存器。交叉开关逻辑220将未排序的n个元素放置在交叉开关中在这n个元素的相应位置中以便辅助对元素进行排序。在一个实施例中,交叉开关逻辑220是包括被安排成矩阵配置的开关集合的交叉开关。
作为示例,这n个未排序元素是由3 3 1 2组成的十进制数的4个元素,所述元素中的每一个包括128位寄存器中的32位。图3是框图300,描绘了根据示例实施例通过4X4交叉开关对输入序列进行的概念性排序。如图3中所示的,十进制数3 3 1 2是放置在单独的列322a、322b、322c和322d中的第一行302中的输入。第二行304在单独的列中显示了位置向量值0 1 2 3。因此,数字3 3 1 2位置向量值分别为0 1 2 3。3的二进制值为0011,1的二进制值为0001,并且2的二进制值为0010。
在一个实施例中,当这n个未排序元素之中的至少一个元素的值与这n个未排序元素之中的另一个元素的值相同时,交叉开关逻辑220将未排序的n个元素中的每一个左移log(n)位。在一个实施例中,log(n)位是n中的位数的一半。在一个实施例中,左移被执行以处理所输入的未排序的n个元素的值的重复。在其他实施例中,如果所输入的未排序n个元素的这些值没有重复,并且硬件电路系统意识到这些值没有重复,则不执行左移。在一个实施例中,硬件电路系统根据硬件电路系统的编程器或用户意识到这些未排序的n个元素的输入值没有重复。
返回到图3中的示例,这4个未排序元素中的每一个被左移2位。二进制值0011的左移产生1100,1100转换为十进制值12。二进制值0001的左移产生0100,0100转换为十进制值4。二进制值0010的左移产生1000,1000转换为十进制值8。因此,十进制数3 3 1 2的经左移的值分别为12 12 4 8。1212 4 8中的每一个被插入到与其未排序数字3 3 1 2相对应的其单独的列中的第三行306中。在一个实施例中,交叉开关逻辑220向经左移未排序的n个元素中的每一个加上未排序的n个元素中的每一个的相应位置的位置向量值。在一个实施例中,加法的结果输出经变换的n个元素,这些元素维持未排序的n个元素的输入序列的相对排序而不具有任何重复值。返回到图3中的示例,位置向量值0 1 2 3被加至相应的经左移值1212 4 8中的每一个,从而分别在第四行308中产生十进制值12 13 6 11。
在一个实施例中,交叉开关逻辑220将经变换的n个元素中的每一个与自身以及经变换的n个元素中的其他元素进行比较。在一个实施例中,在将经变换的n个元素中的每一个与自身以及经变换的n个元素中的其他元素进行比较时,交叉开关逻辑220分配启用指示符或禁用指示符之一。在一个所述中,启用指示符包括值1并且禁用指示符包括值0。在一个实施例中,交叉开关逻辑220将经变换的n个元素中的每一个的这个所分配值1或0放置在其相应的位置中。在一个实施例中,未排序的n个元素将以升序进行排序。因此,在对经变换的n个元素中的每一个进行个比较时,交叉开关逻辑220执行大于操作。在一个实施例中,当经变换的n个元素中的每一个大于经变换的n个元素中的其他元素时,交叉开关逻辑220分配值1,并且当经变换的n个元素中的每一个不大于自身以及经变换的n个元素中的其他元素时,分配值0。在一个实施例中,未排序的n个元素将以降序进行排序。因此,在对经变换的n个元素中的每一个进行比较时,交叉开关逻辑220执行小于操作。在一个实施例中,当经变换的n个元素中的每一个小于经变换的n个元素中的其他元素时,交叉开关逻辑220分配值1,并且当经变换的n个元素中的每一个小于自身以及经变换的n个元素中的其他元素时,分配值0。
返回到图3中的示例,所产生的值12 13 6和11中的每一个将与自身以及其他所产生的值进行比较。在此示例中,比较操作是大于操作。例如,将12与自身、13、6和11进行比较以判定12是否大于12、13、6和11中的每一个。由于12不大于12,因此所分配的值为0;由于12不大于13,因此所分配的值为0;由于12大于6,因此所分配的值为1;并且由于12大于11,因此所分配的值为1。因此,具有位置向量值0的列322a中的值为0 0 11。针对值12、6和11执行使用大于操作的类似比较,这产生具有位置向量值1的列322b中的值为1 0 1 1,具有位置向量值2的列322c中的值为0 0 0 0,并且具有位置向量值3的列322d中的值为0 0 1 0。
在一个实施例中,计数逻辑230对在经变换的n个元素的相应位置中分配给这些元素中的每一个的1的总数进行计数,以便生成相对顺序的经排序的n个元素。返回到图3中的示例,在所产生的值12、13、6和11的相应位置向量值0 1 2和3中分配给这些值中的每一个的1的总数为2 3 0和1,如在最后一列310中分别反映的。因此,2 3 0和1分别是未排序输入数字3 3 1 2的相对顺序。在一个实施例中,置换逻辑240对相对顺序的经排序的n个元素进行置换(或置乱),并且将经置换经排序的n个元素输出至寄存器140a至140n之一。在一个实施例中,寄存器140a至140n之一是目的地寄存器。在一个实施例中,目的地寄存器与源寄存器相同。在一个实施例中,目的地寄存器与源寄存器不同。在一个实施例中,置换逻辑240分配经排序的n个元素中的每一个在目的地寄存器中的位置,所述位置与未排序的n个元素中的每一个在源寄存器中的位置相对应,并且将经排序的n个元素推送至其在目的地寄存器中的相应位置。
尽管图3将4x 4交叉开关展示为描绘对输入序列的概念性排序的n x n的一个示例,但另一个示例是具有16个位置向量值和十进制数的16个未排序元素的16x 16交叉开关,所述元素中每一个都包括512位寄存器中的32位,从而产生相对顺序的256位的16个经排序元素。
图4是根据本公开的实施例的用于在处理装置的指令集架构环境中以升序对数据进行排序的方法400的流程图。方法400可以由处理逻辑执行,所述处理逻辑可以包括硬件(例如,电路系统、专用逻辑、可编程逻辑、微代码等)、软件(如在处理装置、通用计算机系统、或专用机器上运行的指令)、固件、或其组合。在一个实施例中,方法400可以部分地由以上关于图1和图2所描述的排序模块110和210来执行。
为了简化说明,方法400被描绘和描述为一系列动作。然而,根据本公开的动作可以以各种顺序和/或同时发生,并且可以与本文未呈现和描述的其他动作一起发生。此外,可以不执行所展示的所有动作以实施根据所公开主题的方法400。另外,本领域技术人员将理解和意识到方法400可以可替代地经由状态图或事件表示为一系列相关状态。
在框402处,处理逻辑从源寄存器中检索来自未排序的n个数据元素(元素)的相应位置的这些数据元素的输入序列。在框404,将未排序的n个元素左移特定数量的位。在框406处,向经左移的未排序n个元素中的每一个加上相应位置的值,从而产生经变换的n个元素。在一个实施例中,经变换的n个元素维持未排序n个元素的输入序列的相对顺序。在一个实施例中,经变换的n个元素消除了未排序的n个元素的任何重复值。在框408处,将经变换的n个元素中的每一个与自身以及经变换的n个元素中的其他元素进行比较,以生成相对顺序的n个元素的所产生序列。在框410处,在将经变换的n个元素中的每一个与自身进行比较时,分配值0,因为经变换的n个元素不大于自身。在框412处,判定经变换的n个元素中的每一个是否大于经变换的n个元素中的其他元素。
随后,在框414处,当在框412处确定经变换的n个元素中的每一个不大于经变换的n个元素中的其他元素时,分配值0。在框416处,当在框412处确定经变换的n个元素中的每一个大于经变换的n个元素中的其他元素时,分配值1。在框418处,对被分配给经变换的n个元素中的每一个的1的总数进行计数,这产生相对顺序的经排序的n个元素。在框420处,对经排序的n个元素进行置换。在一个实施例中,置换包括分配经排序的n个元素中的每一个在目的地寄存器中的位置,所述位置与未排序的n个元素中的每一个在源寄存器中的位置相对应。在框422处,经置换经排序的n个元素被输出至目的地寄存器。在一个实施例中,目的地寄存器与源寄存器相同。在一个实施例中,目的地寄存器与源寄存器不同。在一个实施例中,为了以降序进行排序,在框412处执行小于操作,使得在框412处将判定经变换的n个元素中的每一个是否小于经变换的n个元素中的其他元素。
图5是框图,展示了根据本公开的一个实施例的包括用于实施指令集架构环境的合并模块520的处理装置505。在一个实施例中,处理装置505与以上关于图1所描述的处理装置105相同。在一个实施例中,合并模块520与以上关于图1所描述的合并模块120相同。合并模块520可以包括诸如划分逻辑530、位置有效载荷逻辑540、双调逻辑550、排序有效载荷逻辑560以及置换逻辑570等逻辑。在一个实施例中,逻辑是硬件组件,比如执行某些操作的硬件电路系统。逻辑可以是与计算机系统的处理装置中的其他组件交互的自含式组件。可以在合并模块520中包括更多或更少的组件,而不失一般性。
在一个实施例中,合并模块520从诸如关于图1所描述的寄存器140a至140n等至少一个寄存器中接收n个元素的经排序序列的两个组的输入。在一个实施例中,寄存器140a至140n之一是源寄存器。这n个元素中的每一个包括特定数量的位。在一个实施例中,寄存器140a至140n之一是包括各自具有32位的16个元素的512位寄存器。在一个实施例中,寄存器140a至140n之一是包括各自具有64位的8个元素的512位寄存器。在一个实施例中,寄存器140a至140n之一是包括各自具有32位的4个元素的128位寄存器。在一个实施例中,划分逻辑530将n个元素的所输入经排序序列的这两个组划分成两半:第一半部分和第二半部分,使得n个元素的所输入经排序序列的一个组在第一半部分中,并且n个元素的所输入经排序序列的另一组在第二半部分中。在第一半部分和第二半部分中的这n个元素中的每一个包括其相应位置以辅助合并元素。
作为示例,n个元素中的这两组包括4个元素,其中,每个元素是十进制数。在示例中,十进制数可以是1 4 7 8和3 7 10 15,这些数字中的每一个都是32位。图6是框图600,描绘了使用合并模块520进行的示例性合并操作的概念性图示。如图6中所示的,4个元素的经排序序列的示例多组被划分成分别为表602的第一半部分(例如,下半部分)610和第二半部分612(例如,上半部分)。这两个组中的第一组经排序序列的十进制数1 4 7 8被放置在下半部分610中在表602的第二行620b的前四列中,并且这两个组中的第二组经排序序列37 10 15被放置在上半部分612中在表602的第二行的最后四列中。第一行620a在单独的列中显示了位置向量值0至7。因此,下半组1 4 7 8的数字的位置向量值分别为0 1 2 3,并且上半组3 7 10 15的数字的位置向量值分别为4 5 6 7。
在一个实施例中,位置有效载荷逻辑540为下半部分610和上半部分612中的这n个元素中的每一个附上相应位置。返回到图6中的示例,为下半部分610中的十进制数1 4 7 8附上相应位置向量值0 1 2 3,并且为上半部分612中的十进制数3 7 10 15附上相应位置向量值4 5 6 7,如在第三行的括号中所展示的。如此,第三行620c的下半部分610包括1[位置0]、4[位置1]、7[位置2]、8[位置3],并且第三行620c的上半部分612包括3[位置4]、7[位置5]、10[位置6]、15[位置7]。在一个实施例中,双调逻辑550将下半部分610中的这n个元素中的每一个与上半部分中的这n个元素中的每一个合并,从而产生n个元素的经合并序列,并且为下半部分610和上半部分612中的经合并n个元素中的每一个附上相应位置,如表602的第四行620d中所示的。
在一个实施例中,合并包括将下半部分中的这n个元素中的每一个的值与上半部分中的这n个元素中的每一个进行比较以及将上半部分中的这n个元素中的每一个的值与下半部分中的这n个元素中的每一个进行比较。如以上所讨论的,下半部分中的这n个元素中的每一个的值来自经排序所输入序列的这两个组中的一个组,并且上半部分中的这n个元素中的每一个的值来自经排序所输入序列的这两个组中的另一个组。(即,一次合并是合并两个经排序输入以产生经全局排序的输出)。当使用双调合并过程时,比较的数量为n*log2n。
这些比较然后产生2n个元素的经排序序列,所述序列包括以下半部分中具有最低值的元素开始并且以上半部分中具有最高值的元素结束的行中的n个元素。在一个实施例中,比较的数量是值n的平方(例如,当n=8时,比较的数量是64,当n=16时,比较的数量是256)。
在一个实施例中,合并包括对所输入的n个元素的值进行比较,其中所输入元素的第一半(n/2个元素)来自一个经排序所输入序列并且所输入元素的剩余一半(n/2个元素)来自另一个经排序所输入序列(即,一次合并是合并两个经排序输入以产生经全局排序的输出)。在图6中提及的示例中,第一半可以是下半部分并且第二半可以是上半部分,或者反之亦然。当使用双调合并过程时,比较的数量为n*log2n。
返回到图6中的示例,下半部分中的十进制数1 4 7 8中的每一个与上半部分中的十进制数3 7 10和15中的每一个合并,从而产生8个元素的经合并序列。此8个元素的经合并序列包括下半部分中的1 3 4 7和上半部分中的7 8 10 15连同其在括号中的所附相应位置向量值,使得第三行620c中的所产生经合并序列在下半部分中包括1[位置0]、3[位置4]、4[位置1]、7[位置2]以及上半部分中的7[位置5]、8[位置3]、10[位置6]、15[位置7]。
在一个实施例中,排序有效载荷逻辑560检索下半部分和上半部分中的经合并的n个元素中的每一个的相应位置作为由n个元素组成的所产生的经排序经合并序列。参照图6中的示例,来自表602的第三行620c的下半部分中的相应位置向量值0 4 1 2中的每一个都被检索并放置在第四行的下半部分中,并且来自第三行的上半部分中的相应位置向量值53 6 7中的每一个都被检索并放置在第四行620d的上半部分中。因此,所产生的经合并经排序序列(具有位置向量值)是如在第五行620e中所示的0 4 1 2 5 3 6 7。
在一个实施例中,置换逻辑570对n个元素的经排序经合并序列进行置换(或置乱),并且将经置换经合并经排序的n个元素输出至寄存器140a至140n之一。在一个实施例中,寄存器140a至140n之一是目的地寄存器。在一个实施例中,目的地寄存器与源寄存器相同。在一个实施例中,目的地寄存器与源寄存器不同。在一个实施例中,置换逻辑570分配经排序经合并的n个元素中的每一个在目的地寄存器中的位置,所述位置与经排序的n个元素中的每一个在源寄存器中的位置相对应,并且将经排序经合并的n个元素推送至其在目的地寄存器中的相应位置。
图7是根据本公开的实施例的用于在处理装置的指令集架构环境中合并经排序序列的两个组并且对经合并序列进行排序的方法700的流程图。方法700可以由处理逻辑执行,所述处理逻辑可以包括硬件(例如,电路系统、专用逻辑、可编程逻辑、微代码等)、软件(如在处理装置、通用计算机系统、或专用机器上运行的指令)、固件、或其组合。在一个实施例中,方法700可以部分地由以上关于图1和图5所描述的合并模块120和520来执行。
为了简化说明,方法700被描绘和描述为一系列动作。然而,根据本公开的动作可以以各种顺序和/或同时发生,并且可以与本文未呈现和描述的其他动作一起发生。此外,可以不执行所展示的所有动作以实施根据所公开主题的方法700。另外,本领域技术人员将理解和意识到方法700可以可替代地经由状态图或事件表示为一系列相关状态。
在框702处,处理逻辑从源寄存器中检索来自n个数据元素(元素)的相应位置的n个数据元素的经排序序列的两个组的输入。在框704处,将n个元素的经排序输入序列的这两个组划分成两半:第一半部分和第二半部分,其中,这n个元素中的每一个具有其相应的位置。在框706处,对第一半部分和第二半部分中的这n个元素中的每一个附上相应位置的值。在框708处,将第一半部分中的这n个元素中的每一个与第二半部分中的这n个元素中的每一个合并,从而产生n个元素的经合并序列。因此,两个经排序输入序列被合并以产生经全局排序的输出。在框710处,对第一半部分和第二半部分中的经合并的n个元素中的每一个附上相应位置的值。
随后,在框712处,从第一半部分和第二半部分中检索经合并的n个元素的相应位置值中的每一个,从而产生n个元素的经排序经合并序列。在框714处,对n个元素的经排序经合并序列进行置换。在一个实施例中,置换操作包括分配经排序经合并的n个元素中的每一个在目的地寄存器中的位置,所述位置与经排序的n个元素中的每一个在源寄存器中的位置相对应。在框716处,n个元素的经置换经排序经合并序列被输出至目的地寄存器。在一个实施例中,目的地寄存器与源寄存器相同。在一个实施例中,目的地寄存器与源寄存器不同。
图8是框图,展示了根据本公开的一个实施例的包括用于实施指令集架构环境的合并模块820的处理装置805。在一个实施例中,处理装置805与以上关于图1所描述的处理装置105相同。在一个实施例中,合并模块820与以上关于图1所描述的合并模块120相同。合并模块820可以包括诸如识别逻辑830、双调逻辑840、掩码逻辑850、排序掩码逻辑860以及置换逻辑870等逻辑。在一个实施例中,逻辑是硬件组件,比如执行某些操作的硬件电路系统。逻辑可以是与计算机系统的处理装置中的其他组件交互的自含式组件。可以在合并模块820中包括更多或更少的组件,而不失一般性。
在一个实施例中,合并模块820从诸如关于图1所描述的寄存器140a至140n等寄存器中的至少一个接收n个元素的经排序序列的两个组的输入。在一个实施例中,寄存器140a至140n之一是源寄存器。这n个元素中的每一个包括特定数量的位。在一个实施例中,寄存器140a至140n之一是包括各自具有32位的16个元素的512位寄存器。在一个实施例中,寄存器140a至140n之一是包括各自具有64位的8个元素的512位寄存器。在一个实施例中,识别逻辑830从第一经排序序列中识别n个元素中的第一组并且从第二经排序序列中识别n个元素中的第二组。
图9是框图900,描绘了根据本公开的实施例的合并操作的概念性图示。图9中所描绘的示例包括n个元素的第一经排序输入序列,其中,第一经排序序列包括由1 2 7 8 9 1417 17组成的十进制数的8个元素,这些数字中的每一个包括32位。另外,示出了n个元素的第二经排序输入序列,其中,第二经排序序列包括由4 5 6 10 14 17 17 18组成的十进制数的8个元素,这些数字中的每一个也包括32位。在一个实施例中,识别逻辑830识从第一经排序序列中识别n个元素中的第一组并且从经排序第二序列中识别n个元素中的第一组。返回到图9中的示例,来自第一序列902的第一组包括前四个元素1 27 8并且来自第二序列904的第一组包括前四个元素4 5 6 10。
在一个实施例中,双调逻辑840将来自第一经排序序列的所识别第一组元素与来自第二经排序序列的所识别第二组元素合并。双调逻辑840可以将第一经排序序列的所识别第一组中的每个元素与第二经排序序列的所识别第一组中的每个元素进行比较,并且基于所述比较来分配值。类似地,双调逻辑840可以将第二经排序序列的第一组中的每个元素与第一经排序序列的第一组中的每个元素进行比较,并且基于所述比较来分配值。
在一个实施例中,这n个元素将以降序进行排序。因此,在对第一序列中的n个元素中的所识别组中的每一个元素与第二序列进行比较时,双调逻辑840执行小于操作,并且反之亦然。在一个实施例中,当第一序列中的n个元素中的所识别组中的每一个元素小于或等于第二序列中的n个元素中的所识别组中的至少一个其他元素时,双调逻辑840分配值1,并且反之亦然。在一个实施例中,当第一序列中的n个元素中的所识别组中的每一个元素不小于第二序列中的n个元素中的所识别组中的至少一个其他元素时,双调逻辑840分配值0,并且反之亦然。
在另一个实施例中,这n个元素将以升序进行排序。因此,在将第一序列中的n个元素中的所识别组中的每一个元素与第二序列进行比较时,双调逻辑840执行大于操作,并且反之亦然。在一个实施例中,当第一序列中的n个元素中的所识别组中的每一个元素大于或等于第二序列中的n个元素中的所识别组中至少一个其他元素时,双调逻辑840分配值1,并且反之亦然。在一个实施例中,当第一序列中的n个元素中的所识别组中的每一个元素不大于第二序列中的n个元素中的所识别组中的至少一个其他元素时,双调逻辑840分配值0,并且反之亦然。
返回到图9中的示例,将第一序列902中的元素1 2 7 8中的每一个与第二序列904中的元素4 5 6 10中的每一个进行比较。在此示例中,所述比较为小于操作,使得将第一序列中的十进制值1与其他十进制值进行比较以判定其是否小于或等于那些值(例如,第二序列中的4 5 6 10中的至少一个),类似地对第一序列中的2进行比较以判定其是否小于或等于第二序列中的4 56 10中的至少一个,以此类推。因此,为第一序列的所有元素1 2 7 8分配1 1 11的掩码值906。此外,将第二序列中的元素4 5 6 10中的每一个与第一序列中的元素1 2 7 8中的每一个进行比较。因此,对第二序列的所有元素4 5 6 10分配1 1 1 0的掩码值906。
在一个实施例中,掩码逻辑850选择第一序列的第一组中分配有值1的那些元素并且选择第二序列的第一组中分配有值1的那些元素。这些所选元素被掩码逻辑850结合在一起以形成经合并序列。返回到图9中的示例,第一序列中的元素1 2 7 8中的每一个被选择,并且在第二序列中的元素4 5 6被选择,并且这些元素被结合在一起,从而产生1 2 7 8 45 6的经合并序列908。在一个实施例中,排序掩码逻辑860对经合并序列进行排序,从而产生元素的经排序经合并序列。在一个实施例中,排序掩码逻辑860使用如上所述的图1和图2的排序模块110和210来对经合并序列进行排序。返回到图9中的示例,经排序经合并序列910为1 2 4 5 6 7 8。
在一个实施例中,由识别逻辑830、双调逻辑840、掩码逻辑850和排序掩码逻辑860对来自第一序列的n个元素中的第二组和来自第二序列的n个元素中的第二组重复上述过程。第一经排序输入序列的n个元素中的第二组可以包括来自第一序列中的n个元素中的第一组中未被合并的至少一个元素。第二经排序序列的n个元素中的第二组可以包括来自第二序列中的n个元素中的第一组中未被合并的至少一个元素。
返回参考图9中的示例,在第一序列中识别的第二组元素为9 14 1717,并且在第二序列中识别的第二组元素为10 14 17 17。应当注意,来自第二序列的第一组的元素10未被合并,并且因此被识别并包括在第二序列的第二组中。由双调逻辑840根据来自第一序列的所识别第二组元素(如由识别逻辑830所识别的)产生的结果具有1 1 1 1的掩码值916,并且由双调逻辑840根据自来第二序列的所识别一组元素(如由识别逻辑830所识别的)产生的结果具有也是1 1 1 1的掩码值916。如此,掩码逻辑850从第一序列中选择所有元素914 17 17并且从第二序列中选择所有元素10 14 17 17,并且将这些元素结合成9 14 1717 10 14 17 17的经合并序列918。排序掩码逻辑860对经合并序列进行排序,从而产生910 14 14 17 17 17 17的经排序经合并序列920。
在一个实施例中,由识别逻辑830、双调逻辑840、掩码逻辑850和排序掩码逻辑860针对来自第一经排序输入序列的n个元素中的其余多组和来自第二经排序输入序列的n个元素中的其余多组而重复上述过程,直到第一序列和第二序列中的所有元素被排序掩码逻辑860合并、排序并输出到n个元素的最终经排序经合并序列中。返回到图9中的示例,最终经排序经合并序列922为1 2 4 5 6 7 8 9 10 14 17 17 17 17 18。因此,两个经排序输入序列被合并以产生经全局排序的输出。
在一个实施例中,置换逻辑870对n个元素的最终经排序经合并序列进行置换(或置乱),并且将经置换经合并经排序的n个元素输出至寄存器140a至140n之一。在一个实施例中,寄存器140a至140n之一是目的地寄存器。在一个实施例中,目的地寄存器与源寄存器相同。在一个实施例中,目的地寄存器与源寄存器不同。在一个实施例中,置换逻辑870分配经排序经合并的n个元素中的每一个在目的地寄存器中的位置,所述位置与经排序的n个元素中的每一个在源寄存器中的位置相对应,并且将经排序经合并的n个元素推送至其在目的地寄存器中的相应位置。
图10是根据本公开的实施例的用于在处理装置的指令集架构环境中合并数据的方法1000的流程图。方法1000可以由处理逻辑执行,所述处理逻辑可以包括硬件(例如,电路系统、专用逻辑、可编程逻辑、微代码等)、软件(如在处理装置、通用计算机系统、或专用机器上运行的指令)、固件、或其组合。在一个实施例中,方法1000可以部分地由以上关于图1和图2所描述的排序模块110和210来执行。
为了简化说明,方法1000被描绘和描述为一系列动作。然而,根据本公开的动作可以以各种顺序和/或同时发生,并且可以与本文未呈现和描述的其他动作一起发生。此外,可以不执行所展示的所有动作以实施根据所公开主题的方法1000。另外,本领域技术人员将理解和意识到方法1000可以可替代地经由状态图或事件表示为一系列相关状态。
在框1002处,处理逻辑从源寄存器中检索来自n个数据元素(元素)的相应位置的n个数据元素的经排序序列的两个组的输入。在框1004处,从第一经排序输入序列中识别n个元素中的第一组并且从第二经排序输入序列中识别n个元素中的第一组。在框1006处,将第一序列的第一组中的元素中的每一个与第一序列的第一组中的元素中的每一个进行比较。在框1008处,基于框1006处进行的比较向第一序列的第一组中的元素分配值1。在一个实施例中,所述序列以升序进行合并,使得当确定第一序列的第一组中的元素大于或等于第二序列中的第一组中的元素中的至少一个时,向第一序列中的第一组中的元素分配值1。在另一个实施例中,所述序列以降序进行合并,使得当确定第一序列的第一组中的元素小于或等于第二序列中的第一组中的元素中的至少一个时,向第一序列中的第一组中的元素分配值1。
在框1010处,基于框1006处的比较,向第一序列中的第一组中的元素分配值0。在一个实施例中,所述序列以升序进行合并,使得当确定第一序列的第一组中的元素不大于第二序列中的第一组中的元素中的至少一个时,向第一序列中的第一组中的元素分配值0。在另一个实施例中,所述序列以降序进行合并,使得当确定第一序列的第一组中的元素不小于第二序列中的第一组中的元素中的至少一个时,向第一序列中的第一组中的元素分配值0。
然后,在框1012处,将第二序列的第一组中的元素中的每一个与第二序列的第一组中的元素中的每一个进行比较。然后,在框1014处,基于框1012处进行的比较,向第二序列的第一组中的元素分配值1。在一个实施例中,所述序列以升序进行合并,使得当确定第二序列的第一组中的元素大于或等于第一序列中的第一组中的元素中的至少一个时,向第二序列中的第一组中的元素分配值1。在一个实施例中,所述序列以降序进行合并,使得当确定第二序列的第一组中的元素小于或等于第一序列中的第一组中的元素中的至少一个时,向第二序列中的第一组中的元素分配值1。
然后,在框1016处,基于框1012处进行的比较,向第二序列的第一组中的元素分配值0。在一个实施例中,所述序列以升序进行合并,使得当确定第二序列的第一组中的元素不大于第一序列中的第一组中的元素中的至少一个时,向第二序列中的第一组中的元素分配值0。在一个实施例中,所述序列以降序进行合并,使得当确定第二序列的第一组中的元素不小于第一序列中的第一组中的元素中的至少一个时,向第二序列中的第一组中的元素分配值0。
在框1018处,将来自框1008的、第一序列的第一组中分配有值1的元素中的每一个与来自框1014的、第二序列的第一组中分配有值1的元素中的每一个合并,从而产生经合并序列。在框1020处,对经合并序列进行排序,从而产生元素的经排序经合并序列。因此,两个经排序输入序列被合并以产生经全局排序的输出。
针对第一序列的所有组元素以及第二序列的所有组元素、包括框1010和框1016的任何输出而从框1004处开始重复方法1000,直到在框1020处输出n元素的最终经排序经合并序列。在框1022处,对n个元素的最终经排序经合并序列进行置换。在一个实施例中,置换操作包括分配经排序经合并的n个元素中的每一个在目的地寄存器中的位置,所述位置与经排序的n个元素中的每一个在源寄存器中的位置相对应。在框1024处,n个元素的经置换经排序经合并序列被输出至目的地寄存器。在一个实施例中,目的地寄存器与源寄存器相同。在一个实施例中,目的地寄存器与源寄存器不同。
图11A是框图,展示了根据本发明的至少一个实施例的监测处理装置的性能以管理非精确事件的处理器的有序流水线和寄存器重命名级、乱序发布/执行流水线。图11B是框图,展示了根据本发明的至少一个实施例的有待包括在处理器中的有序架构核和寄存器重命名逻辑、乱序发布/执行逻辑。图11A中的实线框展示了有序流水线,而虚线框展示了寄存器重命名、乱序发布/执行流水线。类似地,图11B中的实线框展示了有序架构逻辑,而虚线框展示了寄存器重命名逻辑、乱序发布/执行逻辑。
在图11A中,处理器流水线1100包括取出级1102、长度解码级1104、解码级1106、分配级1108、重命名级1110、调度(也称为分派或发布)级1112、寄存器读/存储器读级1114、执行级1116、回写/存储器写级1118、异常处理级1122以及提交级1124。在一些实施例中,这些级以不同的顺序提供,并且不同的级可以被认为是有序的或乱序的。
在图11B中,箭头表示两个或更多个单元之间的耦合,并且箭头的方向指示这些单元之间的数据流动方向。图11B示出了处理器核1190,所述处理器核包括耦合至执行引擎单元1150的前端单元1130,并且所述执行引擎单元和前端单元两者都耦合至存储器单元70。
核1190可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或可替代核类型。作为又另一选项,核1190可以是专用核,如例如,网络或通信核、压缩引擎、图形核等。
前端单元1130包括耦合到指令高速缓存单元1134的分支预测单元1132,所述指令高速缓存单元耦合到指令转换后备缓冲器(TLB)1136,所述指令转换后备缓冲器耦合到指令取出单元1138,所述指令取出单元耦合到解码单元1140。解码单元或解码器可以对指令进行解码并且生成从原始指令中解码出的、或以其他方式反映原始指令或从原始指令衍生出的一个或多个微运算、微代码入口点、微指令、其他指令或其他控制信号作为输出。解码器可以使用各种不同的机制来实施。合适机制的示例包括但不限于:查找表、硬件实施方式、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元1134进一步耦合至存储器单元1170中的2级(L2)高速缓存单元1176。解码单元1140耦合到执行引擎单元1150中的重命名/分配器单元1152。
执行引擎单元1150包括耦合至引退单元1154的重命名/分配器单元1152和一组一个或多个调度器单元1156。引退单元1154可以包括用于根据本发明的实施例在指令集架构中对数据进行排序并且合并经排序数据的合并和排序模块1103。(多个)调度器单元1156表示任何数量的不同调度器,包括保留站、中央指令窗口等。(多个)调度器单元1156耦合至(多个)物理寄存器堆单元1158。(多个)物理寄存器堆单元1158中的每一个表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一个或多个不同的数据类型,诸如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点等、状态(例如,作为有待执行的下一指令的地址的指令指针)等。(多个)物理寄存器堆单元1158与引退单元1154重叠以展示可以实施寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来堆,(多个)历史缓冲区,以及(多个)引退寄存器堆;使用寄存器映射和寄存器池等)。
通常,架构寄存器从处理器的外部或从程序员的角度来看是可见的。寄存器不限于任何已知具体类型的电路。各种不同类型的寄存器是合适的,只要它们能够存储和提供如本文所描述的数据即可。合适的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等。引退单元1154和(多个)物理寄存器堆单元1158被耦合到(多个)执行集群1160。(多个)执行集群1160包括一组一个或多个执行单元1162和一组一个或多个存储器访问单元1164。执行单元1162可以执行各种运算(例如,移位、加法、减法、乘法)以及对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。
虽然一些实施例可以包括专用于具体功能或功能集合的若干执行单元,但是其他实施例可以包括一个执行单元或包括全都执行全部功能的多个执行单元。(多个)调度器单元1156、(多个)物理寄存器堆单元1158、以及(多个)执行集群1160被示出为可能是复数的,因为某些实施例为某些类型的数据/操作创建单独的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线、和/或存储器访问流水线,所述流水线各自具有其本身的调度器单元、(多个)物理寄存器堆单元、和/或执行集群,并且在单独的存储器访问流水线的情况下,实施了其中所述流水线的执行集群具有(多个)存储器访问单元1164的某些实施例)。还应当理解,在使用单独的流水线的情况下,这些流水线中的一者或多者可以是乱序发布/执行流水线,并且其余的是有序流水线。
所述一组存储器访问单元1164耦合至存储器单元1170,所述存储器单元包括耦合至数据高速缓存单元1174的数据TLB单元1172,所述数据高速缓存单元耦合至2级(L2)高速缓存单元1176。在一个示例性实施例中,存储器访问单元1164可以包括各自耦合至存储器单元1170中的数据TLB单元1172的加载单元、存储地址单元、以及存储数据单元。L2高速缓存单元1176耦合至一个或多个其他级的高速缓存并且最终耦合至主存储器。
通过示例的方式,示例性寄存器重命名乱序发布/执行核架构可以实施流水线1100如下:1)指令取出38执行取出和长度解码级1102和1104;2)解码单元1140执行解码级1106;3)重命名/分配器单元1152执行分配级1108和重命名级1110;4)(多个)调度器单元1156执行调度级1112;5)(多个)物理寄存器堆单元1158和存储器单元1170执行寄存器读/存储器读级1114;执行集群1160执行所述执行级1116;6)存储器单元1170和(多个)物理寄存器堆单元1158执行回写/存储器写级1118;7)各种单元可以涉及异常处理级1122;以及8)引退单元1154和(多个)物理寄存器堆单元1158执行提交级1124。
核1190可以支持一条或多条指令集(例如,x86指令集(具有已经添加了较新版本的一些扩展);加利福尼亚州桑尼维尔的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔的ARM控股公司的ARM指令集(具有附加扩展,比如NEON)。
应当理解,核可以支持多线程化(执行两个或更多个并行的操作或线程集),并且可以以各种方式来完成所述多线程化,此各种方式包括时分多线程化、同步多线程化(其中,单个物理核为物理核正同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后诸如超线程化技术中的同步多线程化)。
虽然在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。虽然处理器的所示实施例还包括单独的指令和数据高速缓存单元634/674和共享的L2高速缓存单元1176,但替代实施例可以具有用于指令和数据两者的单个内部高速缓存,如例如1级(L1)内部高速缓存、或多级内部高速缓存。在一些实施例中,所述系统可以包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。可替代地,所有高速缓存都可以在核和/或处理器的外部。
图12是框图,展示了根据本发明的一个实施例的用于处理器1200的微架构,所述处理器包括用于执行指令的逻辑电路。在一个实施例中,处理器1200监测处理装置的性能以管理非精确事件。在一些实施例中,可以实施根据一个实施例的指令来对具有字节、字、双字、四字等大小以及如单倍和双倍精度整数和浮点数据类型等数据类型的数据元素进行操作。在一个实施例中,有序前端1201是处理器1200的取出待执行的指令并将其准备于之后在处理器流水线中使用的部分。前端1201可以包括若干个单元。在一个实施例中,指令预取器1226从存储器取出指令并将它们馈送给指令解码器1228,所述指令解码器进而对指令进行解码或解释。例如,在一个实施例中,解码器将接收到的指令解码成机器可以执行的称为“微指令”或“微运算”(也称为微op或uop)的一个或多个运算。
在其他实施例中,根据一个实施例,解码器将指令解析为运算码和相应的数据以及被微架构用于执行运算的控制字段。在一个实施例中,跟踪高速缓存1230采用经解码的uop并且将它们汇编为程序有序序列或在uop队列1234中跟踪以用于执行。当跟踪高速缓存1230遇到复杂指令时,微代码ROM 1232提供完成运算所需的uop。
一些指令被转换为单个微op,而其他指令使用若干个微op来完成完整的运算。在一个实施例中,如果完成指令需要多于四个微op,则解码器1228访问微代码ROM 1232以执行指令。对于一个实施例,指令可以被解码成用于在指令解码器1228处进行处理的少量的微op。在另一实施例中,如果需要多个微op来完成运算,则指令可以存储在微代码ROM 1232中。跟踪高速缓存1230引用入口点可编程逻辑阵列(PLA),以确定用于从微代码ROM 1232读取微代码序列的正确微指令指针以便根据一个实施例完成一个或多个指令。在微代码ROM1232完成用于指令的排序微op之后,机器的前端1201从跟踪高速缓存1230重新取出微op。
乱序执行引擎1203是指令准备执行的地方。乱序执行逻辑具有许多缓冲器,所述多个缓冲器用于使指令流平滑并重新排序,以在指令顺着流水线进行并被安排执行时优化性能。分配器逻辑分配每个uop执行所需的机器缓冲器和资源。寄存器重命名逻辑将逻辑寄存器重命名到寄存器堆中的条目上。在指令调度器:存储器调度器、快速调度器1202、慢速/通用浮点调度器1204和简单浮点调度器1206前面,分配器还为两个uop队列(一个用于存储器运算,一个用于无存储器运算)之一中的每个uop分配条目。uop调度器1202、1204、1206基于其依赖输入寄存器操作数源的准备状态以及uop用于完成其运算的执行资源的可用性来判定这些uop是否准备好执行。一个实施例的快速调度器1202可以在主时钟周期的每一半上进行调度,而其他调度器可以在每个主处理器时钟周期调度一次。调度器仲裁分派端口以调度uop用于执行。
寄存器堆1208、1210位于调度器1202、1204、1206与执行块1211中的执行单元1212、1214、1216、1218、1220、1222、1224之间。存在单独的寄存器堆,分别用于整数运算和浮点运算。一个实施例的每个寄存器堆1208、1210还包括旁路网络,所述旁路网络可以绕过或转发尚未被写入到寄存器堆中的已完成结果到新的依赖uop。整数寄存器堆1208和浮点寄存器堆1210还能够与其他寄存器堆进行数据通信。对于一个实施例,整数寄存器堆1208被分成两个单独的寄存器堆,一个寄存器堆用于数据的低顺序32位,第二寄存器堆用于数据的高顺序32位。一个实施例的浮点寄存器堆1210具有128位宽的条目,因为浮点指令通常具有宽度为从66位至128位的操作数。
执行块1211包含实际上在其中执行指令的执行单元1212、1214、1216、1218、1220、1222、1224。这个部分包括寄存器堆1208、1210,所述寄存器堆存储微指令用于执行的整数和浮点数据操作数值。一个实施例的处理器1200由多个执行单元组成:地址生成单元(AGU)1212、AGU 1214、快速ALU 1216、快速ALU 1218、慢速ALU 1220、浮点ALU 1222、浮点移动单元1224。对于一个实施例,浮点执行块1222、1224执行浮点、MMX、SIMD和SSE、或其他运算。一个实施例的浮点ALU 1222包括用于执行除法、平方根和剩余微op的64位乘54位浮点除法器。对于本发明的实施例,涉及浮点值的指令可以用浮点硬件来处理。
在一个实施例中,ALU运算前往高速ALU执行单元1216、1218。一个实施例的快速ALU 1216、1218可以以半个时钟周期的有效等待时间执行快速运算。对于一个实施例,大多数复杂整数运算前往慢速ALU 1220,因为慢速ALU 1220包括用于长等待时间类型的运算的整数执行硬件,诸如乘法、移位、标志逻辑、以及分支处理。存储器加载/存储操作由AGU1212、1214执行。对于一个实施例,在对64位数据操作数执行整数操作的上下文中描述了整数ALU 1216、1218、1220。在替代性实施例中,ALU 1216、1218、1220可以被实施为支持包括16、32、128、256等的各种数据位。类似地,浮点单元1222、1224可以被实施为支持具有各种宽度的位的操作数范围。对于一个实施例,浮点单元1222、1224可以与SIMD和多媒体指令结合地对128位宽度的紧缩数据运算数进行运算。
在一个实施例中,uop调度器1202、1204、1206在父加载完成执行之前分派不独立运算。在处理器1200中推测性地调度和执行uop时,处理器1200还包括用于处理存储器未命中的逻辑。如果数据高速缓存中的数据加载未命中,则可能存在流水线中飞行的已经因暂时不正确数据而离开调度器的不独立运算。重放机制跟踪并重新执行使用不正确数据的指令。不独立运算需要被重放,并且允许完成独立运算。处理器的一个实施例的调度器和重放机制还被设计成捕获用于文本串比较操作的指令序列。
处理器1200可以包括耦合至执行块1211的引退单元1254。引退单元1254可以包括用于在处理装置的指令集架构中对数据进行排序并且合并经排序数据的合并和排序模块1205。
术语“寄存器”可以指代被用作指令的一部分以标识操作数的机载处理器存储位置。换言之,寄存器可以是从处理器外部(从程序员的角度来看)可用的寄存器。然而,实施例的寄存器不应限于特定类型的电路。而是,实施例的寄存器能够存储和提供数据,并且执行本文所描述的功能。本文所描述的寄存器可以由处理器内的电路系统使用任何数量的不同技术来实施,如专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用和动态分配的物理寄存器的组合等。在一个实施例中,整数寄存器存储三十二位整数数据。
一个实施例的寄存器堆还包含用于紧缩数据的八个多媒体SIMD寄存器。对于下面的讨论,寄存器被理解为设计成保持紧缩数据的数据寄存器,例如,用来自加利福尼亚州圣克拉拉的英特尔公司的MMXTM技术实现的微处理器中的64位宽MMX寄存器(在某些情况下也称为“mm”寄存器)。以整数和浮点形式可用的这些MMX寄存器可以用伴随SIMD和SSE指令的紧缩数据元素进行操作。类似地,与SSE2、SSE3、SSE4或更高版本(通常称为“SSEx”)技术有关的128位宽XMM寄存器也可以用于保持这样的紧缩数据操作数。在一个实施例中,在存储紧缩数据和整数数据时,寄存器不对这两种数据类型进行区分。在一个实施例中,整数和浮点包含在同一寄存器堆或不同的寄存器堆中。此外,在一个实施例中,浮点和整数数据可以存储在不同的寄存器或同一寄存器中。
现在参照图13,示出了根据本发明的一个实施例的系统1300的框图。系统1300可以包括耦合到图形存储控制器中枢(GMCH)1320的一个或多个处理器1310、1315。图13中用虚线表示附加处理器1315的可选性质。在一个实施例中,处理器1310、1315监测处理装置的性能以管理非精确事件。
每个处理器1310、1315可以是如上所述的电路、集成电路、处理器、和/或硅集成电路的某一版本。然而,应当注意的是,在处理器1310、1315中将不太可能存在集成图形逻辑和集成存储器控制单元。图13展示了GMCH 1320可以耦合到存储器1340,所述存储器可以是例如动态随机存取存储器(DRAM)。对于至少一个实施例,DRAM可以与非易失性高速缓存相关联。
GMCH 1320可以是芯片组、或者芯片组的一部分。GMCH1320可以与处理器1310、1315通信,并且控制(多个)处理器1310、1315与存储器1340之间的交互。GMCH 1320还可以用作(多个)处理器1310、1315与系统1300的其他元件之间的加速总线接口。对于至少一个实施例,GMCH1320经由多点分支总线(如前端总线(FSB)1395)与(多个)处理器1310、1315通信。
此外,GMCH 1320耦合到显示器1345(如平板显示器或触摸屏显示器)。GMCH 1320可以包括集成图形加速器。GMCH 1320进一步地耦合到输入/输出(I/O)控制器中枢(ICH)1350,所述ICH可以用于将各种外围装置耦合到系统1300。例如在图13的实施例中示出的是外部图形装置1360,其可以是与另一个外围装置1370一起耦合到ICH 1350的分立图形装置。
可替代地,在系统1300中还可以存在附加的或不同的处理器。例如,(多个)附加处理器1315可以包括与处理器1310相同的(多个)附加处理器、与处理器1310异构或不对称的(多个)附加处理器、加速器(例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列、或任何其他处理器。就包括架构、微架构、热、功耗特性等的一系列品质度量而言,处理器1310、1315之间存在多种差异。这些差异可以有效地将其本身表现为处理器1310、1315之间的不对称性和异构性。对于至少一个实施例,各处理器1310、1315可以驻留在相同裸片封装体中。
各实施例可以采用许多不同的系统类型来实施。图14是根据本公开的实施例的SoC 1400的框图。虚线框是关于更先进的SoC的可选特征。在图14中,(多个)互连单元1412被耦合到:应用处理器1420,所述应用处理器包括一组一个或多个核1402A至1402N和(多个)共享高速缓存单元1406;系统代理单元1410;(多个)总线控制器单元1416;(多个)集成存储器控制器单元1414;一组或者一个或多个媒体处理器1418,所述媒体处理器可以包括集成图形逻辑1408、用于提供静物和/或视频相机功能的图像处理器1424、用于提供硬件音频加速的音频处理器1426、以及用于提供视频编码/解码加速的视频处理器1428;静态随机存取存储器(SRAM)单元1430;直接存储器存取(DMA)单元1432;以及显示单元1440,所述显示单元用于耦合至一个或多个外部显示器。在一个实施例中,存储器模块可以被包括在(多个)集成存储控制器单元1414中。在另一实施例中,存储器模块可以被包括在SoC 1400的可用来访问和/或控制存储器的一个或多个其他组件中。应用处理器1420可以包括如在本文的实施例中所描述的条件分支、间接分支和事件执行逻辑。
存储器层级结构包括所述核内的一个或多个层级结构的高速缓存、一组或者一个或多个共享高速缓存单元1406、以及外部存储器(未示出),所述外部存储器耦合至所述一组集成存储器控制器单元1414。所述一组共享高速缓存单元1406可以包括一个或多个中级高速缓存,如2级(L2)、3级(L3)、4级(L4)、或其他级别的高速缓存、末级高速缓存(LLC)、和/或其组合。
在一些实施例中,核1402A至1402N中的一个或多个核能够进行多线程化。
系统代理1410包括协调和操作核1402A至1402N的那些组件。系统代理单元1410可包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括用于调节核1402A至1402N和集成图形逻辑1408的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
就架构和/或指令集而言,核1402A至1402N可以是同构或异构的。例如,核1402A至1402N中的一些可以是有序的,而其他核是乱序的。再如,核1402A至1402N中的两个或更多个能够执行同一指令集,而其他核能够仅执行所述指令集的子集或执行不同的指令集。
应用处理器1420可以是通用处理器,如可从加利福尼亚州圣克拉拉的IntelTM公司获得的CoreTMi3、i5、i7、2Duo和Quad、XeonTM、ItaniumTM、AtomTM、XScaleTM或StrongARMTM处理器。可替代地,应用处理器1420可以来自另一公司,如ARMTM控股公司、MIPSTM等。应用处理器1420可以是专用处理器,例如,网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器等。应用处理器1420可以在一个或多个芯片上实施。应用处理器1420可以是一个或多个衬底的一部分和/或可以使用如例如BiCMOS、CMOS或NMOS的多种工艺技术中的任何一种技术在一个或多个衬底上实施。
图15是根据本公开的芯片上系统(SoC)设计的实施例的框图。作为具体的说明性示例,SoC 1500被包括在用户设备(UE)中。在一个实施例中,UE是指由终端用户用于通信的任何装置,如手持电话、智能电话、平板电脑、超薄笔记本、具有宽带适配器的笔记本、或任何其他类似的通信装置。通常,UE连接到基站或节点,所述UE本质上可能对应于GSM网络中的移动台(MS)。
在此,SOC 1500包括2个核(1506和1507)。核1506和1507可以符合指令集架构,如基于架构核TM的处理器、超微半导体有限公司(AMD)处理器、基于MIPS的处理器、基于ARM设计的处理器、或其客户,以及它们的授权方或兼容方。核1506和1507被耦合到高速缓存控制1508,所述高速缓存控制与总线接口单元1508和L2高速缓存1510相关联,以与系统1500的其他部分进行通信。互连1510包括可能实施所描述的本公开的一个或多个方面的片上互连,如IOSF、AMBA或上文讨论的其他互连。在一个实施例中,条件分支、间接分支和事件执行逻辑可以包括在核1506、1507中。
互连1510向其他组件提供通信通道,例如用于与SIM卡接口连接的用户身份模块(SIM)1530、用于保持引导代码以便由核1506和1507执行对SoC 1500初始化和引导的引导ROM 1535、用于与外部存储器(例如DRAM 1560)接口连接的启动SDRAM控制器1540、用于与非易失性存储器(例如,闪存1565)接口连接的闪存控制器1545、用于与外围装置接口连接的外围控制1550(例如串行外围接口)、用于显示和接收输入(例如触摸使能的输入)的视频编解码器1520和视频接口1525、用于执行图形相关的计算的GPU 1515等。这些接口中的任何接口都可以结合本文所描述的本公开的方面。此外,系统1500展示了用于通信的外围装置,如蓝牙模块1570、3G调制解调器1575、GPS 1580、以及Wi-Fi 1585。
现在参照图16,示出了根据本发明的实施例的系统1600的框图。如图16所示,多处理器系统1600是点对点互连系统,并且包括经由点对点互连1650耦合的第一处理器1670和第二处理器1680。处理器1670和1680中的每一个可以是如本文所述的计算系统的处理器的某个版本。在一个实施例中,处理器1670、1680监测处理装置的性能以管理非精确事件,以便监测处理装置的性能来管理非精确事件。
虽然以两个处理器1670、1680来示出,但应理解本公开的范围不限于此。在其他实施例中,给定处理器中可以存在一个或多个附加处理器。
处理器1670和1680被示出为分别包括集成存储器控制器单元1672和1682。处理器1670还包括作为其总线控制器单元的一部分的点对点(P-P)接口1676和1678;类似地,第二处理器1680包括P-P接口1686和1688。处理器1670、1680可以使用点对点(P-P)接口电路1678、1688经由P-P接口1650交换信息。如图16中所示,IMC 1672和1682将处理器耦合到对应存储器(即,存储器1632和存储器1634),所述存储器可以是主存储器的本地附接至对应处理器上的部分。
处理器1670和1680可以各自使用点对点接口电路1676、1694、1686、1698经由单独的P-P接口1652、1654来与芯片组1690交换信息。芯片组1690还可以经由高性能图形接口1639与高性能图形电路1638交换信息。
共享高速缓存(未示出)可以包括在任一处理器中或者在两个处理器外部但经由P-P互连与所述处理器相连接,使得如果处理器被置于低功耗模式中,则任一或两个处理器的局部高速缓存信息可以被存储在所述共享高速缓存中。
芯片组1690可以经由接口1616耦合到第一总线1616。在一个实施例中,第一总线1616可以是外围组件互连(PCI)总线,或诸如PCI Express总线或另一种第三代I/O互连总线的总线,但本公开的范围不限于此。
如图16所示,各个I/O装置1614可以连同总线桥1618耦合到第一总线1616,所述总线桥将第一总线1616耦合到第二总线1620。在一个实施例中,第二总线1620可以是低引脚数(LPC)总线。在一个实施例中,各个装置可以耦合到第二总线1620,所述装置包括例如键盘和/或鼠标1622、多个通信装置1627、以及可以包括指令/代码数据1630的存储单元1628(如磁盘驱动器或者其他大容量存储装置)。进一步地,音频I/O 1624可以耦合到第二总线1620。注意到,其他架构是可能的。例如,替代图16的点对点架构,系统可以实施多点分支总线或其他这样的架构。
现在参照图17,示出了根据本发明的实施例的系统1700的框图。图17展示了处理器1770、1780。在一个实施例中,处理器1770、1780监测处理装置的性能以管理非精确事件。此外,处理器1770、1780可以分别包括集成存储器和I/O控制逻辑(“CL”)1772和1782,并且分别经由点对点(PP)接口1778和1788之间的点对点互连1750而彼此相互通信。如图所示,处理器1770、1780各自通过对应P-P接口1776至1794和1786至1798经由点对点互连1752和1754与芯片组1790通信。对于至少一个实施例,CL1772、1782可以包括集成存储器控制器单元。CL 1772、1782可以包括I/O控制逻辑。如所描绘的,存储器1732、1734被耦合到CL 1772、1782,并且I/O装置1714也被耦合到控制逻辑1772、1782。传统I/O装置1715经由接口1796耦合到芯片组1790。
图18展示了触摸屏接口连接器可以用于其中的平板计算装置、智能电话或其他移动装置的实施例的框图1800。处理器1810可以监测处理装置的性能以管理非精确事件。另外,处理器1810执行主要的处理操作。音频子系统1820表示与向计算装置提供音频功能相关联的硬件(例如,音频硬件和音频电路)和软件(例如,驱动器、编解码器)组件。在一个实施例中,用户通过提供由处理器1810接收并处理的音频命令来与平板计算装置或智能电话进行交互。
显示子系统1832表示为用户提供视觉和/或触感显示以便与平板计算装置或智能电话进行交互的硬件(例如,显示装置)和软件(例如,驱动器)组件。显示子系统1830包括显示界面1832,所述显示界面包括用于为用户提供显示的特定屏幕或硬件装置。在一个实施例中,显示子系统1830包括向用户提供输出和输入的触摸屏装置。
I/O控制器1840表示与用户的交互有关的硬件装置和软件组件。I/O控制器1840可操作用于管理作为音频子系统1820和/或显示子系统1830的一部分的硬件。另外,I/O控制器1840展示了连接至平板计算装置或智能电话的附加装置的连接点,用户可以通过所述连接点进行交互。在一个实施例中,I/O控制器1840管理装置,诸如加速度计、相机、光传感器或其他环境传感器、或可以被包括在平板计算装置或智能电话中的其他硬件。输入可以是直接用户交互的一部分,以及为平板计算装置或智能电话提供环境输入。
在一个实施例中,平板计算装置或智能电话包括功率管理1850,所述功率管理对电池电力使用情况、电池充电以及与节电操作有关的特征进行管理。存储器子系统1860包括用于将信息存储在平板计算装置或智能电话中的存储器装置。连接1870包括硬件装置(例如,无线和/或有线连接器以及通信硬件)和软件组件(例如,驱动器、协议栈),以使平板计算装置或智能电话能够与外部装置通信。蜂窝连接1872可以包括例如无线载波,诸如GSM(全球移动通信系统)、CDMA(码分多址)、TDM(时分复用)、或其他蜂窝服务标准。无线连接1874可以包括例如非蜂窝的活动,诸如个域网(例如,蓝牙)、局域网(例如,Wi-Fi)和/或广域网(例如,WiMAX)、或者其他无线通信。
外围连接1880包括硬件接口和连接器以及用于将外围连接作为到其他计算装置的外围装置(“去往”1882)的软件组件(例如,驱动程序、协议栈),以及具有连接到平板计算装置或智能电话、包括例如用于与其他计算装置连接的“对接”连接器的外围装置(“来自”1884)。外围连接1880包括诸如通用串行总线(USB)连接器、包括小型显示端口(MDP)的显示端口、高清多媒体接口(HDMI)、Firewire等通用或基于标准的连接器。
图19展示了采用计算系统1900的示例形式的在其中可以执行指令集的机器的图解表示,所述指令用于使所述机器执行本文所讨论的方法中的任何一种或多种。在替代性实施例中,机器可以连接(例如,联网)到LAN、内联网、外联网、或因特网中的其他机器。机器可以在客户端-服务器网络环境下以服务器或客户端装置的身份操作,或在点对点(或分布式)网络环境中作为对等机操作。所述机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络电器、服务器、网络路由器、交换机或桥、或能够(相继或以其他方式)执行指定要由那个机器采取的动作的指令集的任何机器。进一步地,虽然仅示出了单个机器,但术语“机器”也应视为包括机器的任何集合,所述机器个别地或联合地执行一个(或多个)指令集以便执行本文中所讨论的方法中的任何一种或多种方法。
计算系统1900包括经由总线1930而相互通信的处理装置1902、主存储器1904(例如,只读存储器(ROM)、闪存、动态随机存取存储器(DRAM)(如同步DRAM(SDRAM)或DRAM(RDRAM)等)、静态存储器1906(例如,闪存、静态随机存取存储器(SRAM)等)、以及数据存储装置1918。
处理装置1902表示一个或多个通用处理装置,如微处理器、中央处理单元等。更具体地,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算机(RISC)微处理器、超长指令字(VLIW)微处理器、或实施其他指令集的处理器、或实施指令集组合的处理器。处理装置1902还可以是一个或多个专用处理装置,如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。在一个实施例中,处理装置1902可以包括一个或多个处理核。处理装置1902被配置成执行处理逻辑1926以便执行本文所讨论的操作。在一个实施例中,处理装置1902与关于图1所描述的实施排序模块103和合并模块105的计算机系统100相同。可替代地,计算系统1900可以包括如本文所描述的其他组件。
计算系统1900可以进一步包括通信地耦合到网络1920的网络接口装置1908。计算系统1900还可以包括视频显示单元1910(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入装置1912(例如,键盘)、光标控制装置1914(例如,鼠标)、以及信号发生装置1916(例如,扬声器)或其他外围装置。此外,计算系统1900可以包括图形处理单元1922、视频处理单元1928、以及音频处理单元1932。在另一实施例中,计算系统1900可以包括芯片组(未示出),所述芯片组是指被设计用于与处理装置1902一起工作的一组集成电路或芯片并且控制处理装置1902与外部装置之间的通信。例如,芯片组可以是主板上将处理装置1902链接到诸如主存储器1904和图形控制器等超高速装置以及将处理装置1902链接到诸如USB、PCI或ISA总线等较低速外围总线或外围装置的一组芯片。
数据存储装置1918可以包括计算机可读存储介质1924,在所述存储介质上存储了使本文所描述的功能的方法中的任何一种或多种具体化的软件1926。软件1926还可以在由计算系统1900对其执行期间全部或至少部分地驻留在主存储器1904内作为指令1926和/或在处理装置1902内作为处理逻辑1926;主存储器1904和处理装置1902也构成计算机可读存储介质。
计算机可读存储介质1924还可以用于利用以上关于图1所描述的排序模块103和合并模块105和/或包含调用上述应用的方法的软件库来存储指令1926。虽然计算机可读存储介质1924在示例性实施例中被示出为单个介质,但术语“计算机可读存储介质”应当视为包括存储一个或多个指令集的单个介质或多个介质(例如,集中式或分布式数据库、和/或相关联的高速缓存和服务器)。术语“计算机可读存储介质”还应视为包括能够存储、编码或承载用于由机器执行的指令集并且使机器执行本实施例的方法中的任何一种或多种的任何介质。术语“计算机可读存储介质”应当相应地被视为包括但不限于固态存储器、以及光学介质和磁性介质。尽管已经关于有限数量的实施例描述了本发明,但本领域的技术人员将从其中认识到许多修改和变化。旨在使得所附权利要求书覆盖如落在本发明的真实精神和范围内的所有这种修改和变化。
以下示例涉及进一步的实施例。
示例1是一种处理装置,包括排序模块,所述排序模块用于:向多个元素中的每一个加上寄存器组中的相应位置的位置值,从而在相应位置中产生多个经变换元素,其中,所述多个元素中的每一个包括多个位;将所述多个经变换元素中的每一个与自身以及彼此进行比较;基于所述比较向所述多个经变换元素中的每一个分配启用指示符或禁用指示符之一;以及对向所述多个经变换元素中的每一个分配的所述启用指示符的数量进行计数以生成所述多个元素的经排序序列。
在示例2中,如示例1所述的主题可以可选地包括:排序模块,所述排序模块用于在所述多个元素之中的至少一个元素的值与所述多个元素之中的其他元素的值相同时将所述多个元素中处于所述相应位置中的每一个中的每一个元素左移一组位。
在示例3中,如示例1至2所述的主题可以可选地包括:其中,所述经排序序列包括对启用指示符的数量的计数,并且所述排序模块用于以升序或降序之一生成所述多个元素的所述经排序序列。
在示例4中,如示例1至3所述的主题可以可选地包括:其中,所述排序模块用于对所述多个经变换元素中的每一个进行比较进一步包括所述排序模块用于执行小于操作。
在示例5中,如示例1至4所述的主题可以可选地包括:其中,所述排序模块用于对所述多个经变换元素中的每一个进行比较进一步包括所述排序模块用于执行大于操作。
在示例6中,如示例1至5所述的主题可以可选地包括:其中,所述排序模块用于至少生成所述多个经排序元素的所述经排序序列的第一组以及所述多个经排序元素的所述经排序序列的第二组。
在示例7中,如示例1至6所述的主题可以可选地包括:进一步包括合并模块,所述合并模块耦合至所述排序模块,其中,所述合并模块用于:将所述经排序序列的所述第一组划分成第一半部分并且将所述经排序序列的所述第二组划分成第二半部分,其中,所述第一半部分包括所述经排序序列的所述第一组的所述多个经排序元素,并且所述第二半部分包括所述经排序序列的所述第二组的所述多个经排序元素;将所述第一半部分中的所述多个经排序元素中的每一个与所述第二半部分中的所述多个经排序元素中的每一个进行比较并且将所述第二半部分中的所述多个经排序元素中的每一个与所述第一半部分中的所述多个经排序元素中的每一个进行比较以便以一定顺序生成所述多个经排序元素的所述序列的第三组;并且将所述序列的所述第三组中的所述多个元素中的每一个的所述相应位置的所述位置值生成为经合并经排序序列。
在示例8中,如示例1至7所述的主题可以可选地包括:进一步包括合并模块,所述合并模块耦合至所述排序模块,其中,所述合并模块用于:从所述经排序序列的所述第一组中识别所述多个经排序元素中的多组并且从所述经排序序列的所述第二组中识别所述多个经排序元素中的另外多组;将来自所述经排序序列的所述第一序列的所识别多组中的每一组中的所述多个经排序元素中的每一个与来自所述经排序序列的所述第二组的所识别另外多组中的每一组中的所述多个经排序元素中的每一个进行比较;基于所述比较从来自所述经排序序列的所述第一序列的所述所识别多组中的每一组中选择所述经排序元素;将来自所述经排序序列的所述第二序列的所述所识别另外多组中的每一组中的所述多个经排序元素中的每一个与来自所述经排序序列的所述第一组的所述所识别多组中的每一组中的所述多个经排序元素中的每一个进行比较;以及基于所述比较从来自所述经排序序列的所述第二序列的所述所识别另外多组中的每一组中选择所述经排序元素;
在示例9中,如示例1至8所述的主题可以可选地包括:其中,所述合并模块用于:将来自经排序序列的所述第一序列的所述所识别多组中的每一组的所选经排序元素与来自所述经排序序列的所述第二序列的所述所识别另外多组中的每一组的所选经排序元素结合以生成包括所组合的所选经排序元素的经合并序列;以及以一定顺序放置所述所组合的所选经排序元素以生成经合并经排序序列。
在示例10中,如示例1至9所述的主题可以可选地包括:其中,所述合并模块用于以升序或降序之一生成所述经合并经排序序列。
示例11是一种芯片上系统(SoC),包括:存储器;以及处理装置,通信地耦合至所述存储器,所述处理装置包括排序模块,所述排序模块用于:向多个元素中的每一个加上寄存器组中的相应位置的位置值,从而在相应位置中产生多个经变换元素,其中,所述多个元素中的每一个包括多个位;将所述多个经变换元素中的每一个与自身以及彼此进行比较;基于所述比较向所述多个经变换元素中的每一个分配启用指示符或禁用指示符之一;以及对向所述多个经变换元素中的每一个分配的所述启用指示符的数量进行计数以生成所述多个元素的经排序序列。
在示例12中,如示例11所述的主题可以可选地包括:排序模块,所述排序模块用于在所述多个元素之中的至少一个元素的值与所述多个元素之中的其他元素的值相同时将所述多个元素中处于所述相应位置中的每一个中的每一个元素左移一组位。
在示例13中,如示例11至12所述的主题可以可选地包括:其中,所述经排序序列包括对启用指示符的数量的计数,并且其中,所述排序模块用于至少生成所述多个经排序元素的所述经排序序列的第一组以及所述多个经排序元素的所述经排序序列的第二组。
在示例14中,如示例11至13所述的主题可以可选地包括:其中,所述处理装置进一步包括合并模块,所述合并模块耦合至所述排序模块,其中,所述合并模块用于:将所述经排序序列的所述第一组划分成第一半部分并且将所述经排序序列的所述第二组划分成第二半部分,其中,所述第一半部分包括所述经排序序列的所述第一组的所述多个经排序元素,并且所述第二半部分包括所述经排序序列的所述第二组的所述多个经排序元素;将所述第一半部分中的所述多个经排序元素中的每一个与所述第二半部分中的所述多个经排序元素中的每一个进行比较并且将所述第二半部分中的所述多个经排序元素中的每一个与所述第一半部分中的所述多个经排序元素中的每一个进行比较以便以一定顺序生成所述多个经排序元素的所述序列的第三组;以及将所述序列的所述第三组中的所述多个元素中的每一个的所述相应位置的所述位置值生成为经合并经排序序列。
在示例15中,如示例11至14所述的主题可以可选地包括:其中,所述处理装置进一步包括合并模块,所述合并模块耦合至所述排序模块,其中,所述合并模块用于:从所述经排序序列的所述第一组中识别所述多个经排序元素中的多组并且从所述经排序序列的所述第二组中识别所述多个经排序元素中的另外多组;将来自所述经排序序列的所述第一序列的所识别多组中的每一组中的所述多个经排序元素中的每一个与来自所述经排序序列的所述第二组的所识别另外多组中的每一组中的所述多个经排序元素中的每一个进行比较;基于所述比较从来自所述经排序序列的所述第一序列的所述所识别多组中的每一组中选择所述经排序元素;将来自所述经排序序列的所述第二序列的所述所识别另外多组中的每一组中的所述多个经排序元素中的每一个与来自所述经排序序列的所述第一组的所述所识别多组中的每一组中的所述多个经排序元素中的每一个进行比较;基于所述比较从来自所述经排序序列的所述第二序列的所述所识别另外多组中的每一组中选择所述经排序元素;将来自经排序序列的所述第一序列的所述所识别多组中的每一组的所选经排序元素与来自所述经排序序列的所述第二序列的所述所识别另外多组中的每一组的所选经排序元素结合以生成包括所组合的所选经排序元素的经合并序列;以及以一定顺序放置所述所组合的所选经排序元素以生成经合并经排序序列。
示例16是一种方法,所述方法包括:向多个元素中的每一个加上寄存器组中的相应位置的位置值,从而在相应位置中产生多个经变换元素,其中,所述多个元素中的每一个包括多个位;将所述多个经变换元素中的每一个与自身以及彼此进行比较;基于所述比较向所述多个经变换元素中的每一个分配启用指示符或禁用指示符之一;以及对向所述多个经变换元素中的每一个分配的所述启用指示符的数量进行计数以生成所述多个元素的经排序序列。
在示例17中,如示例16所述的主题可以可选地包括:所述经排序序列包括对启用指示符的数量的计数。
在示例18中,如示例16至17所述的主题可以可选地包括:进一步包括在所述多个元素之中的至少一个元素的值与所述多个元素之中的其他元素的值相同时将所述多个元素中的每一个移位至所述相应位置中的每一个中的左侧位置;以及至少生成所述多个经排序元素的所述经排序序列的第一组以及所述多个经排序元素的所述经排序序列的第二组。
在示例19中,如示例16至18所述的主题可以可选地包括:将所述经排序序列的所述第一组划分成第一半部分并且将所述经排序序列的所述第二组划分成第二半部分,其中,所述第一半部分包括所述经排序序列的所述第一组的所述多个经排序元素,并且所述第二半部分包括所述经排序序列的所述第二组的所述多个经排序元素;将所述第一半部分中的所述多个经排序元素中的每一个与所述第二半部分中的所述多个经排序元素中的每一个进行比较并且将所述第二半部分中的所述多个经排序元素中的每一个与所述第一半部分中的所述多个经排序元素中的每一个进行比较以便以一定顺序生成所述多个经排序元素的所述序列的第三组;以及将所述序列的所述第三组中的所述多个元素中的每一个的所述相应位置的所述位置值生成为经合并经排序序列。
在示例20中,如示例16至19所述的主题可以可选地包括:从所述经排序序列的所述第一组中识别所述多个经排序元素中的多组并且从所述经排序序列的所述第二组中识别所述多个经排序元素中的另外多组;将来自所述经排序序列的所述第一序列的所识别多组中的每一组中的所述多个经排序元素中的每一个与来自所述经排序序列的所述第二组的所识别另外多组中的每一组中的所述多个经排序元素中的每一个进行比较;基于所述比较从来自所述经排序序列的所述第一序列的所述所识别多组中的每一组中选择所述经排序元素;将来自所述经排序序列的所述第二序列的所述所识别另外多组中的每一组中的所述多个经排序元素中的每一个与来自所述经排序序列的所述第一组的所述所识别多组中的每一组中的所述多个经排序元素中的每一个进行比较;基于所述比较从来自所述经排序序列的所述第二序列的所述所识别另外多组中的每一组中选择所述经排序元素;将来自经排序序列的所述第一序列的所述所识别多组中的每一组的所选经排序元素与来自所述经排序序列的所述第二序列的所述所识别另外多组中的每一组的所选经排序元素结合以生成包括所组合的所选经排序元素的经合并序列;以及以一定顺序放置所述所组合的所选经排序元素以生成经合并经排序序列。
示例21是一种非暂态机器可读存储介质,包括指令,所述指令当由处理装置访问时使所述处理装置执行包括以下各项的操作:向多个元素中的每一个加上寄存器组中的相应位置的位置值,从而在相应位置中产生多个经变换元素,其中,所述多个元素中的每一个包括多个位;将所述多个经变换元素中的每一个与自身以及彼此进行比较;基于所述比较向所述多个经变换元素中的每一个分配启用指示符或禁用指示符之一;以及对向所述多个经变换元素中的每一个分配的所述启用指示符的数量进行计数以生成所述多个元素的经排序序列。
在示例22中,如示例21所述的主题可以可选地包括:所述经排序序列包括对启用指示符的数量的计数。
在示例23中,如示例21至22所述的主题可以可选地包括:其中,所述操作进一步包括在所述多个元素之中的至少一个元素的值与所述多个元素之中的其他元素的值相同时将所述多个元素中的每一个移位至所述相应位置中的每一个中的左侧位置;以及至少生成所述多个经排序元素的所述经排序序列的第一组以及所述多个经排序元素的所述经排序序列的第二组。
在示例24中,如示例21至23所述的主题可以可选地包括:其中,所述操作进一步包括将所述经排序序列的所述第一组划分成第一半部分并且将所述经排序序列的所述第二组划分成第二半部分,其中,所述第一半部分包括所述经排序序列的所述第一组的所述多个经排序元素,并且所述第二半部分包括所述经排序序列的所述第二组的所述多个经排序元素;将所述第一半部分中的所述多个经排序元素中的每一个与所述第二半部分中的所述多个经排序元素中的每一个进行比较并且将所述第二半部分中的所述多个经排序元素中的每一个与所述第一半部分中的所述多个经排序元素中的每一个进行比较以便以一定顺序生成所述多个经排序元素的所述序列的第三组;以及将所述序列的所述第三组中的所述多个元素中的每一个的所述相应位置的所述位置值生成为经合并经排序序列。
在示例25中,如示例21至24所述的主题可以可选地包括:其中,所述操作进一步包括从所述经排序序列的所述第一组中识别所述多个经排序元素中的多组并且从所述经排序序列的所述第二组中识别所述多个经排序元素中的另外多组;将来自所述经排序序列的所述第一序列的所识别多组中的每一组中的所述多个经排序元素中的每一个与来自所述经排序序列的所述第二组的所识别另外多组中的每一组中的所述多个经排序元素中的每一个进行比较;基于所述比较从来自所述经排序序列的所述第一序列的所述所识别多组中的每一组中选择所述经排序元素;将来自所述经排序序列的所述第二序列的所述所识别另外多组中的每一组中的所述多个经排序元素中的每一个与来自所述经排序序列的所述第一组的所述所识别多组中的每一组中的所述多个经排序元素中的每一个进行比较;基于所述比较从来自所述经排序序列的所述第二序列的所述所识别另外多组中的每一组中选择所述经排序元素;将来自经排序序列的所述第一序列的所述所识别多组中的每一组的所选经排序元素与来自所述经排序序列的所述第二序列的所述所识别另外多组中的每一组的所选经排序元素结合以生成包括所组合的所选经排序元素的经合并序列;以及以一定顺序放置所述所组合的所选经排序元素以生成经合并经排序序列。
虽然已经关于有限数量的实施例对本公开进行了描述,但是本领域技术人员将理解来自其中的许多修改和变体。旨在使得所附权利要求书覆盖落入本公开的真正精神和范围的所有此类修改和变体。
设计可以贯穿各个不同的阶段,从产生到仿真到制造。表示设计的数据可用若干方式来表示所述设计。首先,如模拟中有用的,可使用硬件描述语言或其他功能性描述语言来表示硬件。另外,可以在设计过程的一些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,多数设计在一些阶段处达到代表在硬件模型中的不同装置的物理布局的数据水平。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指示由掩模用于产生集成电路的各种特征在不同掩模层上存在或不存在的数据。在任何设计表示中,数据可以存储在任何形式的机器可读介质中。存储器或磁存储装置或光存储装置(如,盘)可以是用于存储信息的机器可读介质,所述信息是经由光波或电波来传输的,所述光波或电波被调制或以其他方式被生成以传输这类信息。当传输指示或携带代码或设计的电载波时,在执行电信号的复制、缓冲或重传情况的程度上,制作新的副本。因此,通信提供者或网络提供者可以在有形机器可读介质上至少暂时地存储诸如编码到载波中的信息等制品,从而将本公开的实施例的技术具体化。
本文中使用的模块是指硬件、软件和/或固件的任意组合。作为示例,模块包括硬件,如与非暂态介质相关联的用于存储代码的微控制器,所述代码被适配成用于由微控制器执行。因此,在一个实施例中,对模块的引用是指硬件,所述硬件具体被配置成标识和/或执行有待保持在非暂态介质中的代码。此外,在另一实施例中,模块的使用指包括代码的非暂态介质,所述代码具体地被适配成用于由微控制器执行以执行预定操作。并且如可以推断的,在又另一实施例中,术语“模块”(在本示例中)可以指微控制器与非暂态介质的组合。通常,被展示为分开的模块边界通常会有所变化并且可能重叠。例如,第一和第二模块可共享硬件、软件、固件或其组合,同时可能保留一些独立的硬件、软件或固件。在一个实施例中,术语“逻辑”的使用包括硬件,诸如晶体管、寄存器,或其他硬件,如可编程逻辑装置。
短语‘配置成’的使用在一个实施例中是指安排、汇编、制造、提供销售、导入和/或设计设备、硬件、逻辑或元件,从而执行指定或确定的任务。在本示例中,未运行的设备或其元件如果被设计、被耦合和/或被互连用于执行所述指定任务则仍被‘配置成’执行指定的任务。仅作为说明性示例,逻辑门在操作过程中可以提供0或1。但是‘被配置成’为时钟提供启动信号的逻辑门不包括可以提供1或0的每个可能的逻辑门。相反,逻辑门是以某种方式耦合的,从而使得在操作过程中,1或0输出用于启动时钟。再次注意到的是,术语‘配置成’的使用不需要运算,而是集中于装置、硬件和/或元件的潜在状态,其中在潜在状态中,装置、硬件和/或元件被设计成当该装置、硬件和/或元件运行时执行具体任务。
此外,短语‘用于’、‘能够/能够用于’和或‘能操作以’的使用在一个实施例中指的是一些设备、逻辑、硬件和/或元件被设计的方式使得能够以指定方式使用所述设备、逻辑、硬件和/或元件。注意,在一个实施例中,如以上‘用于(to)’、‘能够用于(capable to)’或‘能操作以(operable to)’的使用是指设备、逻辑、硬件和/或元件的潜在状态,其中,所述设备、逻辑、硬件和/或元件未在运行但是被设计,其方式使得能够以特定的方式使用设备。
如本文中使用的值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。经常,逻辑电平、逻辑值或逻辑的值的使用也称为简单地代表二进制逻辑状态的1和0。例如,1是指高逻辑电平,并且0是指低逻辑电平。在一个实施例中,如晶体管或闪存单元(cell)的存储单元可以能够保持单个逻辑值或多个逻辑值。然而,计算机系统中值的其他表示已被使用。例如,十进制数字十也可以表示为二进制值910和十六进制字母A。因此,值包括能够在计算机系统中保持的信息的任何表示。
此外,状态可以由值或一部分值来代表。作为示例,第一值(例如逻辑一)可以代表默认或初始状态,而第二值(例如逻辑零)可以代表非默认状态。此外,在一个实施例中,术语重置和设置分别是指默认的和更新的值或状态。例如,默认值可能包括高逻辑值(即,重置),而更新值可能包括低逻辑值(即,设置)。注意,可利用值的任意组合来表示任意数量的状态。
以上阐述的方法、硬件、软件、固件或代码的实施例可经由存储在机器可访问的、机器可读的、计算机可访问的或计算机可读的介质上的可被处理元件执行的代码或指令来实施。非暂态机器可访问/可读介质包括提供(即,存储和/或传输)具有由机器(诸如,计算机或电子系统)可读的形式的信息的任何机制。例如,非暂态机器可访问介质包括:随机存取存储器(RAM),如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁存储介质或光存储介质;闪存装置;电存储装置;光存储装置;声学存储装置;用于保持从暂态(传播)信号(例如,载波、红外信号、数字信号)接收到的信息的其他形式的存储装置等,它们与可以从中接收信息的非暂态介质区分开来。
用于程序逻辑以执行本公开的实施例的指令可以存储在系统中的存储器内,例如,DRAM、高速缓存、闪存或其他存储装置。此外,指令可以经由网络或借助于其他计算机可读介质被分布。因此,机器可读介质可以包括用于存储或传输呈由机器(例如,计算机)可读的形式的信息的任何机制,但是不限于软磁盘、光盘、只读光盘存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或用于经由电、光、声音、或其他形式的传播信号(例如,载波、红外信号、数字信号等)在互联网上传输信息的易失性机器可读存储装置。因此,计算机可读介质包括适用于存储或传输机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
贯穿本说明书对于“一个实施例(one embodiment)”或“实施例(an embodiment)”的引用意味着结合所述实施例所描述的特定特征、结构或特性包括在本公开的至少一个实施例中。因此,贯穿本说明书,短语“在一个实施例中(in one embodiment)”或“在实施例中(in an embodiment)”在各种场合中的出现未必都是指相同的实施例。此外,在一个或多个实施例中,可以以任何合适的方式来组合具体特征、结构、或特性。
在上述说明书中,已经参照具体示例性实施例给出了详细说明。然而,在不偏离所附权利要求中阐述的本公开的更广精神和范围的情况下,将显然的是可对其进行各种修改和改变。因此,说明书和附图被认为是说明性意义的,而不是限制性意义的。此外,实施例和其他示范性语言的上述使用不一定指相同的实施例或相同的示例,而是可指不同且有区别的实施例,以及可能指相同的实施例。

Claims (23)

1.一种处理装置,包括:
排序电路系统,所述排序电路系统包括:
交叉开关电路,所述交叉开关电路包括:
向多个元素中的每一个加上寄存器组中的相应位置的位置值,从而在相应位置中产生多个经变换元素,其中,所述多个元素中的每一个包括多个位;
经由所述交叉开关电路中的大于操作或小于操作中的至少一个操作将所述多个经变换元素中的每一个与自身以及彼此进行比较;以及
基于所述比较向所述多个经变换元素中的每一个分配启用指示符或禁用指示符之一;以及
计数电路,所述计数电路用于对向所述多个经变换元素中的每一个分配的所述启用指示符的数量进行计数以生成所述多个元素的经排序序列。
2.如权利要求1所述的处理装置,其特征在于,所述排序电路系统用于在所述多个元素之中的至少一个元素的值与所述多个元素之中的其他元素的值相同时将所述多个元素中处于所述相应位置中的每一个中的每一个元素左移一组位。
3.如权利要求1所述的处理装置,其特征在于,所述经排序序列包括对启用指示符的数量的计数,并且所述排序电路系统用于以升序或降序之一生成所述多个元素的所述经排序序列。
4.如权利要求1所述的处理装置,其特征在于,所述排序电路系统用于至少生成所述多个经排序元素的所述经排序序列的第一组以及所述多个经排序元素的所述经排序序列的第二组。
5.如权利要求4所述的处理装置,其特征在于,进一步包括合并电路系统,所述合并电路系统耦合至所述排序电路系统,其中,所述合并电路系统用于:
将所述经排序序列的所述第一组划分成第一半部分并且将所述经排序序列的所述第二组划分成第二半部分,其中,所述第一半部分包括所述经排序序列的所述第一组的所述多个经排序元素,并且所述第二半部分包括所述经排序序列的所述第二组的所述多个经排序元素;
将所述第一半部分中的所述多个经排序元素中的每一个与所述第二半部分中的所述多个经排序元素中的每一个进行比较并且将所述第二半部分中的所述多个经排序元素中的每一个与所述第一半部分中的所述多个经排序元素中的每一个进行比较以便以一定顺序生成所述多个经排序元素的所述序列的第三组;并且
将所述序列的所述第三组中的所述多个元素中的每一个的所述相应位置的所述位置值生成为经合并经排序序列。
6.如权利要求5所述的处理装置,其特征在于,进一步包括合并电路系统,所述合并电路系统耦合至所述排序电路系统,其中,所述合并电路系统用于:
从所述经排序序列的所述第一组中识别所述多个经排序元素中的多组并且从所述经排序序列的所述第二组中识别所述多个经排序元素中的另外多组;
将来自所述经排序序列的第一序列的所识别多组中的每一组中的所述多个经排序元素中的每一个与来自所述经排序序列的所述第二组的所识别另外多组中的每一组中的所述多个经排序元素中的每一个进行比较;
基于所述比较从来自所述经排序序列的所述第一序列的所述所识别多组中的每一组中选择所述经排序元素;
将来自所述经排序序列的第二序列的所述所识别另外多组中的每一组中的所述多个经排序元素中的每一个与来自所述经排序序列的所述第一组的所述所识别多组中的每一组中的所述多个经排序元素中的每一个进行比较;以及
基于所述比较从来自所述经排序序列的所述第二序列的所述所识别另外多组中的每一组中选择所述经排序元素。
7.如权利要求6所述的处理装置,其特征在于,所述合并电路系统用于:
将来自经排序序列的所述第一序列的所述所识别多组中的每一组的所选经排序元素与来自所述经排序序列的所述第二序列的所述所识别另外多组中的每一组的所选经排序元素结合以生成包括所组合的所选经排序元素的经合并序列;以及
以一定顺序放置所述所组合的所选经排序元素以生成经合并经排序序列。
8.如权利要求7所述的处理装置,其特征在于,所述合并电路系统用于以升序或降序之一生成所述经合并经排序序列。
9.一种芯片上系统SoC,包括:
存储器;以及
处理装置,通信地耦合到所述存储器,所述处理装置包括:
排序电路系统,所述排序电路系统包括:
交叉开关电路,所述交叉开关电路用于:
向多个元素中的每一个加上寄存器组中的相应位置的位置值,从而在相应位置中产生多个经变换元素,其中,所述多个元素中的每一个包括多个位;
经由所述交叉开关电路中的大于操作或小于操作中的至少一个操作将所述多个经变换元素中的每一个与自身以及彼此进行比较;以及
基于所述比较向所述多个经变换元素中的每一个分配启用指示符或禁用指示符之一;以及
计数电路,所述计数电路用于对向所述多个经变换元素中的每一个分配的所述启用指示符的数量进行计数以生成所述多个元素的经排序序列。
10.如权利要求9所述的SoC,其特征在于,所述排序电路系统用于在所述多个元素之中的至少一个元素的值与所述多个元素之中的其他元素的值相同时将所述多个元素中处于所述相应位置中的每一个中的每一个元素左移一组位。
11.如权利要求9所述的SoC,其特征在于,所述经排序序列包括对启用指示符的数量的计数,并且所述排序电路系统用于以升序或降序之一生成所述多个元素的所述经排序序列。
12.如权利要求11所述的SoC,其特征在于,所述处理装置进一步包括合并电路系统,所述合并电路系统耦合至所述排序电路系统,其中,所述合并电路系统用于:
将所述经排序序列的第一组划分成第一半部分并且将所述经排序序列的第二组划分成第二半部分,其中,所述第一半部分包括所述经排序序列的所述第一组的所述多个经排序元素,并且所述第二半部分包括所述经排序序列的所述第二组的所述多个经排序元素;
将所述第一半部分中的所述多个经排序元素中的每一个与所述第二半部分中的所述多个经排序元素中的每一个进行比较并且将所述第二半部分中的所述多个经排序元素中的每一个与所述第一半部分中的所述多个经排序元素中的每一个进行比较以便以一定顺序生成所述多个经排序元素的所述序列的第三组;以及
将所述序列的所述第三组中的所述多个元素中的每一个的所述相应位置的所述位置值生成为经合并经排序序列。
13.如权利要求11所述的SoC,其特征在于,所述处理装置进一步包括合并电路系统,所述合并电路系统耦合至所述排序电路系统,其中,所述合并电路系统用于:
从所述经排序序列的第一组中识别所述多个经排序元素中的多组并且从所述经排序序列的第二组中识别所述多个经排序元素中的另外多组;
将来自所述经排序序列的第一序列的所识别多组中的每一组中的所述多个经排序元素中的每一个与来自所述经排序序列的所述第二组的所识别另外多组中的每一组中的所述多个经排序元素中的每一个进行比较;
基于所述比较从来自所述经排序序列的所述第一序列的所述所识别多组中的每一组中选择所述经排序元素;
将来自所述经排序序列的第二序列的所述所识别另外多组中的每一组中的所述多个经排序元素中的每一个与来自所述经排序序列的所述第一组的所述所识别多组中的每一组中的所述多个经排序元素中的每一个进行比较;
基于所述比较从来自所述经排序序列的所述第二序列的所述所识别另外多组中的每一组中选择所述经排序元素;
将来自经排序序列的所述第一序列的所述所识别多组中的每一组的所选经排序元素与来自所述经排序序列的所述第二序列的所述所识别另外多组中的每一组的所选经排序元素结合以生成包括所组合的所选经排序元素的经合并序列;以及
以一定顺序放置所述所组合的所选经排序元素以生成经合并经排序序列。
14.一种方法,包括:
经由处理设备的交叉开关电路向多个元素中的每一个加上寄存器组中的相应位置的位置值,从而在相应位置中产生多个经变换元素,其中,所述多个元素中的每一个包括多个位;
经由所述交叉开关电路中的大于操作或小于操作中的至少一个操作将所述多个经变换元素中的每一个与自身以及彼此进行比较;
由所述交叉开关电路基于所述比较向所述多个经变换元素中的每一个分配启用指示符或禁用指示符之一;以及
有所述处理设备的计数电路对向所述多个经变换元素中的每一个分配的所述启用指示符的数量进行计数以生成所述多个元素的经排序序列。
15.如权利要求14所述的方法,其特征在于,所述经排序序列包括对启用指示符的数量的计数。
16.如权利要求14所述的方法,其特征在于,进一步包括:
在所述多个元素之中的至少一个元素的值与所述多个元素之中的其他元素的值相同时将所述多个元素中的每一个移位至所述相应位置中的每一个中的左侧位置。
17.如权利要求14所述的方法,其特征在于,所述多个元素的所述经排序序列是以升序或降序之一生成的。
18.如权利要求14所述的方法,其特征在于,进一步包括:至少生成所述多个经排序元素的所述经排序序列的第一组以及所述多个经排序元素的所述经排序序列的第二组。
19.如权利要求18所述的方法,其特征在于,进一步包括:
将所述经排序序列的所述第一组划分成第一半部分并且将所述经排序序列的所述第二组划分成第二半部分,其中,所述第一半部分包括所述经排序序列的所述第一组的所述多个经排序元素,并且所述第二半部分包括所述经排序序列的所述第二组的所述多个经排序元素;
将所述第一半部分中的所述多个经排序元素中的每一个与所述第二半部分中的所述多个经排序元素中的每一个进行比较并且将所述第二半部分中的所述多个经排序元素中的每一个与所述第一半部分中的所述多个经排序元素中的每一个进行比较以便以一定顺序生成所述多个经排序元素的所述序列的第三组;以及
将所述序列的所述第三组中的所述多个元素中的每一个的所述相应位置的所述位置值生成为经合并经排序序列。
20.如权利要求18所述的方法,其特征在于,进一步包括:
从所述经排序序列的所述第一组中识别所述多个经排序元素中的多组并且从所述经排序序列的所述第二组中识别所述多个经排序元素中的另外多组;
将来自所述经排序序列的第一序列的所识别多组中的每一组中的所述多个经排序元素中的每一个与来自所述经排序序列的所述第二组的所识别另外多组中的每一组中的所述多个经排序元素中的每一个进行比较;
基于所述比较从来自所述经排序序列的所述第一序列的所述所识别多组中的每一组中选择所述经排序元素;
将来自所述经排序序列的第二序列的所述所识别另外多组中的每一组中的所述多个经排序元素中的每一个与来自所述经排序序列的所述第一组的所述所识别多组中的每一组中的所述多个经排序元素中的每一个进行比较;
基于所述比较从来自所述经排序序列的所述第二序列的所述所识别另外多组中的每一组中选择所述经排序元素;
将来自经排序序列的所述第一序列的所述所识别多组中的每一组的所选经排序元素与来自所述经排序序列的所述第二序列的所述所识别另外多组中的每一组的所选经排序元素结合以生成包括所组合的所选经排序元素的经合并序列;以及
以一定顺序放置所述所组合的所选经排序元素以生成经合并经排序序列。
21.至少一种机器可读介质,包括多条指令,所述多条指令响应于在计算装置上被执行而使所述计算装置执行根据权利要求14至20中任一项所述的方法。
22.一种实现在指令集架构中对数据进行排序并且合并经排序数据的用于引擎的装置,配置为执行如权利要求14至20中任一项所述的方法。
23.一种设备,包括用于执行如权利要求14至20中任一项所述的方法的装置。
CN201680066743.6A 2015-12-15 2016-11-14 在指令集架构中对数据进行排序并且合并经排序数据 Active CN108351786B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/969,864 US10198264B2 (en) 2015-12-15 2015-12-15 Sorting data and merging sorted data in an instruction set architecture
US14/969,864 2015-12-15
PCT/US2016/061901 WO2017105708A1 (en) 2015-12-15 2016-11-14 Sorting data and merging sorted data in an instruction set architecture

Publications (2)

Publication Number Publication Date
CN108351786A CN108351786A (zh) 2018-07-31
CN108351786B true CN108351786B (zh) 2024-03-08

Family

ID=59020026

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680066743.6A Active CN108351786B (zh) 2015-12-15 2016-11-14 在指令集架构中对数据进行排序并且合并经排序数据

Country Status (5)

Country Link
US (1) US10198264B2 (zh)
EP (1) EP3391202A1 (zh)
CN (1) CN108351786B (zh)
TW (1) TWI729019B (zh)
WO (1) WO2017105708A1 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11461096B2 (en) * 2019-05-24 2022-10-04 Texas Instruments Incorporated Method and apparatus for vector sorting using vector permutation logic
US9606803B2 (en) 2013-07-15 2017-03-28 Texas Instruments Incorporated Highly integrated scalable, flexible DSP megamodule architecture
EP3428792B1 (en) * 2017-07-10 2022-05-04 Arm Ltd Testing bit values inside vector elements
US11176084B2 (en) * 2017-11-09 2021-11-16 International Business Machines Corporation SIMD instruction sorting pre-sorted source register's data elements into a first ascending order destination register and a second descending destination register
US10936230B2 (en) * 2018-01-26 2021-03-02 National Technology & Engineering Solutions Of Sandia, Llc Computational processor-in-memory with enhanced strided memory access
US20200050452A1 (en) * 2018-08-11 2020-02-13 Intel Corporation Systems, apparatuses, and methods for generating an index by sort order and reordering elements based on sort order
US11082311B2 (en) * 2019-06-06 2021-08-03 Hewlett Packard Enterprise Development Lp System and methods for supporting multiple management interfaces using a network analytics engine of a network switch
US11249651B2 (en) * 2019-10-29 2022-02-15 Samsung Electronics Co., Ltd. System and method for hierarchical sort acceleration near storage
US11360740B1 (en) * 2020-03-04 2022-06-14 Unm Rainforest Innovations Single-stage hardware sorting blocks and associated multiway merge sorting networks
US11231935B2 (en) * 2020-04-13 2022-01-25 Oracle International Corporation Vectorized sorted-set intersection using conflict-detection SIMD instructions
CN112507284B (zh) * 2020-12-18 2022-08-12 清华大学 稀疏矩阵乘法在可重构处理器阵列上的实现方法及装置
WO2023230943A1 (en) * 2022-06-01 2023-12-07 Huawei Technologies Co., Ltd. System and method of data management

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6122728A (en) * 1998-02-02 2000-09-19 Compaq Computer Corporation Technique for ordering internal processor register accesses
CN101925877A (zh) * 2008-01-22 2010-12-22 Arm有限公司 对数据执行排列运算的装置与方法
US8108411B2 (en) * 2007-09-14 2012-01-31 Yahoo! Inc. Methods and systems for merging data sets
CN104204991A (zh) * 2012-03-30 2014-12-10 英特尔公司 将较小的已排序向量合并和排序为较大的已排序向量的指令的方法和装置
CN104951401A (zh) * 2014-03-28 2015-09-30 英特尔公司 排序加速处理器、方法、系统和指令

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3588212T2 (de) 1984-08-22 1999-12-30 Hitachi Ltd Verfahren und Gerät zum Suchen von Daten
US7536532B2 (en) 2006-09-27 2009-05-19 International Business Machines Corporation Merge operations of data arrays based on SIMD instructions
US20080104374A1 (en) * 2006-10-31 2008-05-01 Motorola, Inc. Hardware sorter
US8190943B2 (en) 2009-03-13 2012-05-29 Massachusetts Institute Of Technology Systolic merge sorter
US20100235163A1 (en) * 2009-03-16 2010-09-16 Cheng-Tung Hsu Method and system for encoding chinese words
US9021233B2 (en) * 2011-09-28 2015-04-28 Arm Limited Interleaving data accesses issued in response to vector access instructions
WO2013184975A2 (en) 2012-06-06 2013-12-12 Spiral Genetics Inc. Method and system for sorting data in a cloud-computing environment and other distributed computing environments
US9292288B2 (en) * 2013-04-11 2016-03-22 Intel Corporation Systems and methods for flag tracking in move elimination operations

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6122728A (en) * 1998-02-02 2000-09-19 Compaq Computer Corporation Technique for ordering internal processor register accesses
US8108411B2 (en) * 2007-09-14 2012-01-31 Yahoo! Inc. Methods and systems for merging data sets
CN101925877A (zh) * 2008-01-22 2010-12-22 Arm有限公司 对数据执行排列运算的装置与方法
CN104204991A (zh) * 2012-03-30 2014-12-10 英特尔公司 将较小的已排序向量合并和排序为较大的已排序向量的指令的方法和装置
CN104951401A (zh) * 2014-03-28 2015-09-30 英特尔公司 排序加速处理器、方法、系统和指令

Also Published As

Publication number Publication date
TWI729019B (zh) 2021-06-01
US10198264B2 (en) 2019-02-05
US20170168827A1 (en) 2017-06-15
EP3391202A1 (en) 2018-10-24
TW201723811A (zh) 2017-07-01
CN108351786A (zh) 2018-07-31
WO2017105708A1 (en) 2017-06-22

Similar Documents

Publication Publication Date Title
CN108351786B (zh) 在指令集架构中对数据进行排序并且合并经排序数据
CN108475193B (zh) 用于字节排序指令和用于四位组排序的处理器、方法和系统
US10331583B2 (en) Executing distributed memory operations using processing elements connected by distributed channels
EP3394723B1 (en) Instructions and logic for lane-based strided scatter operations
US10360035B2 (en) Instruction and logic for Boyer-Moore search of text strings
US10216516B2 (en) Fused adjacent memory stores
US10129018B2 (en) Hybrid SM3 and SHA acceleration processors
US10635447B2 (en) Scatter reduction instruction
CN107925420B (zh) 用于经优化压缩比的异构压缩架构
US20150095625A1 (en) Optimization of instructions to reduce memory access violations
EP3391234A1 (en) Instructions and logic for set-multiple-vector-elements operations
US10019262B2 (en) Vector store/load instructions for array of structures
US10719355B2 (en) Criticality based port scheduling
US9851976B2 (en) Instruction and logic for a matrix scheduler
US20160179651A1 (en) Enabling error detecting and reporting in machine check architecture
CN108475242B (zh) 冲突掩码生成
CN108363668B (zh) 线性存储器地址变换和管理
US9823984B2 (en) Remapping of memory in memory control architectures

Legal Events

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