CN107038020A - 支持端序不可知simd指令的处理器和方法 - Google Patents

支持端序不可知simd指令的处理器和方法 Download PDF

Info

Publication number
CN107038020A
CN107038020A CN201610959252.6A CN201610959252A CN107038020A CN 107038020 A CN107038020 A CN 107038020A CN 201610959252 A CN201610959252 A CN 201610959252A CN 107038020 A CN107038020 A CN 107038020A
Authority
CN
China
Prior art keywords
register
instruction
byte
processor system
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201610959252.6A
Other languages
English (en)
Inventor
R·J·罗扎里奥
S·兰加纳坦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Harrow Software Co.,Ltd.
Imagination Technologies Ltd
Original Assignee
Imagination Technologies Ltd
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 Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Publication of CN107038020A publication Critical patent/CN107038020A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • 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/3001Arithmetic instructions
    • 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/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/30098Register arrangements
    • 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/30098Register arrangements
    • G06F9/30141Implementation provisions of register files, e.g. ports
    • 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/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

支持端序不可知SIMD指令的处理器和方法。一种处理器,包括寄存器和加载存储单元(LSU)。LSU将数据从存储器加载到寄存器中。当在小端序模式下,来自依次增大的存储器地址的字节从寄存器的第一端(右端)到寄存器的第二端(左端)以对应的依次增大的字节存储器地址的顺序加载。当在大端序模式下,来自依次增大的存储器地址的字节从寄存器的第二端(左端)到寄存器的第一端(右)以对应的依次增大的存储器地址的顺序加载。因此,与以小端序模式还是以大端序模式操作无关,寄存器中的数据在其左侧具有最高有效字节,而在其右侧具有最低有效字节,这简化了SIMD指令的执行,这是因为数据对于这两种端序模式被相同地对齐。

Description

支持端序不可知SIMD指令的处理器和方法
技术领域
在一个方面中,以下公开涉及微处理器微架构,在更具体的方面中,涉及微处理器存储器存取。更具体地,设备、系统和方法涉及一种与数据处于小端序格式还是大端序(endian)格式无关的更好的管理数据的。具体地,设备、系统和方法提供单个加载指令和单个存储指令,而与由该单个加载指令加载的或由该单个存储指令存储的数据中编码的数据元素尺寸无关。
背景技术
在处理器架构和处理器架构的实施中,术语“端序”指的是计算机的存储器中数据的排序。具体地,“端序”指的是多分量数据元素的分量元素在存储器中储存的相对顺序。在许多实施中,各分量是字节,并且多分量数据元素是四字节或更大的数据元素。通常有两种类型的“端序”:大和小。大端序意味着被存储的值的最高有效部分存储在最低(最小)存储器地址中。相反,小端序意味着被存储的值的最低有效部分存储在最高(最大)存储器地址中。例如,从字节寻址存储器中的地址A开始,大端序机器中的4字节值0A0B0C0Dh(十六进制)会在地址A处存储0A,在地址A+1处存储0B,在地址A+2处存储0C并且在地址A+3处存储0D。相反,小端序机器会在地址A处存储值0D,以此类推。虽然指令和数据存取这两者必须遵守数据的储存与检索之间的端序规则,但存储器中指令的布局更有可能是编译器自动化的,而数据的储存可以由编程器较直接地控制,由此遵守合适的端序对于数据存取可能更受到关注。
通常使用大和小端序机器这两者。网络字节顺序是大端序。一些处理器架构仅是大端序的,而一些仅是小端序的。一些处理器架构允许任一种。MIPS精简指令集计算(RISC)架构是这种架构的示例。
发明内容
提供该发明内容,以以简化形式介绍概念的选择,下面在具体实施方式中进一步描述概念。该发明内容不旨在标识所要求保护主题的关键特征或基本特征,也不旨在用于限制所要求保护主题的范围。
在一个方面中,本公开涉及一种系统(例如,被实施为处理器、多处理器系统中的处理器内核、在物理处理资源上执行的虚拟内核等),该系统可以根据大端序或小端序规则来操作,并且利用寄存器内容执行从存储器到寄存器的加载操作和从寄存器到存储器的存储操作,该寄存器内容基于系统的当前端序模式而变化。这种系统可以针对不同尺寸的元素,诸如128或更大位宽的寄存器中的字节、半字、字、和双字长的元素)支持对寄存器的单指令多数据(SIMD)操作。该系统加载和存储数据和/或指令,而对所加载或存储的元素的尺寸不敏感,但对端序模式(也称为“端序性”)敏感。因为寄存器内容基于端序模式而变化,所以至少一些SIMD操作对端序模式和操作的元素尺寸这两者都敏感。
这种系统可以借助根据指令集架构(ISA)确定的指令来控制。根据公开的一些方面,ISA包括加载指令和存储指令,为了对数据进行SIMD操作的目的,其可以用于从存储器加载数据和将数据存储到存储器。这些加载指令和存储指令不具有对要对这种数据执行的SIMD操作的元素尺寸敏感的变量。根据公开的一些方面,ISA包括对固定寄存器尺寸内的不同元素尺寸操作的算术操作(例如,128位寄存器中的四倍长字乘法)。这些指令指定数据元素尺寸,并且最终执行该指令的执行单元使用端序模式的指示来确定在源寄存器内何处找到用于执行该指令的特定元素。根据本公开,ISA还可以提供搜索寄存器内所指定的字节值的首次出现的指令。被设置以执行这种指令的执行单元还对端序模式敏感,使得可以标识和实施对寄存器的正确搜索顺序。
附图说明
图1描绘了字节寻址存储器位置的组织,其中示出了存储器到寄存器21的小端序映射;
图2描绘了从图1的存储器到寄存器中的位置的小端序(LE)映射的现有技术示例,使得最低有效字节存储在字节的起始(右手侧),并且越来越有效的字节存储在连续位置中,图2还描绘了字节、半字、字等的阵列中元素的不同尺寸,其中示出了存储器到寄存器28的大端序映射;
图3描绘了根据不同尺寸的元素(诸如字节、半字、字、双字)从存储器到寄存器的大端序(BE)映射;
图4描绘了针对加载指令对于BE和LE这两者的操作的示例,加载指令可以用于加载SIMD操作中要使用的数据,但不指定从存储器加载到所描绘的寄存器中的元素的尺寸;
图5描绘了可以实施这里的公开的系统的一部分的框图;
图6描绘了对正在操作的寄存器的端序和寄存器中的元素的尺寸这两者敏感的SIMD处理逻辑的示例;
图7描绘了可以由根据本公开的系统实施的示例性处理;
图8描绘了示例性实施中的BE四倍长字乘法,其中示出了大端序模式下的4字封装SIMD乘法,其中i[0]*i[4]、i[1]*i[5]、i[2]*i[6]、i[7]*i[3];
图9描绘了示例性实施中的LE四倍长字乘法,其中示出了小端序模式下的4字封装SIMD乘法,其中i[0]*i[4]、i[1]*i[5]、i[2]*i[6]、i[7]*i[3];
图10-图13描绘了本公开的另选实施,其中,寄存器内容对字节顺序而言不改变,但处理逻辑对字节顺序以及用于SIMD操作的元素尺寸敏感,其中图11示出了大端序模式下的4字封装SIMD乘法,图13示出了用于输入到流水线的大端序重排序的字节;
图14提供了对寄存器内容的字节顺序敏感的搜索指令的示例,其中,寄存器内容根据本公开的示例性实施而填充,其中示出了用于搜索指定字节值的首次出现的指令;以及
图15A和图15B描绘了可以诸如在所描绘的存储单元中和无序流水线中实施本公开的处理系统的示例性框图。
具体实施方式
一些处理器架构被设计成支持向/从存储器传送数据的指令,或对寄存器中的值执行操作,但不支持对驻留在存储器中的数据执行操作的指令(即,执行操作的指令可以仅具有寄存器源和寄存器目的地)。加载指令和存储指令分别从存储器向寄存器中加载数据,或从寄存器向存储器存储数据。具有这些类型的“加载/存储”和“寄存器-寄存器”指令的架构称为精简指示集计算(RISC)架构。
处理器可以包括算术单元,该算术单元可以使用给定尺寸的寄存器在不同数据宽度上执行单指令多数据(SIMD)操作。例如,寄存器可以是64、128或256位宽等。在示例中,处理器可以支持128位寄存器中在8、16、32或64位数据宽度上的SIMD操作。例如,字长(32位)乘法指令将128位寄存器中的四字数据乘以另一个128位寄存器中的四字数据。
通常并且如图2和图3例示,对于小端序和大端序这两种模式,对于寄存器中存储的各个元素(I[N]),现有技术传统地从低(右)到高(左)对寄存器中的元素编号。例如,为了在小端序机器中以LE模式从具有字长的元素的存储器加载单个(即,非SIMD)128位数据元素,LSB(最低存储器地址)总是放在第一元素(I[0])的最低部分,并且依次增大的地址的字节被彼此相邻放置直到达到元素中的MSB为止。通常,在LE模式下,具有字长的元素的非SIMD128位加载会将最低有效地址放置在元素的右手侧,并且最低有效地址处的位在BE模式下会被放置在元素的左手侧。
由此,支持大端序和小端序这两种模式的处理器中的加载指令和存储指令具有附加的复杂性,这是因为它们必须能够区分大端序和小端序,使得值的LSB和MSB(无论大还是小)在存储器与寄存器之间正确移动。目前,其还应用于在执行SIMD操作时出现的加载和存储。具体地,对不同宽度的SIMD数据操作的加载指令和存储指令在大端序与小端序操作之间需要不同的处理。换言之,给定的寄存器宽度需要在大端序与小端序机器之间对于不同的操作数宽度对数据进行不同映射。实际上,这意味着对于不同宽度的SIMD加载,需要有不同的指令。例如,需要用于加载字节的不同指令、对于用于加载字的不同指令、用于加载双字的不同指令等。这还意味着加载和存储指令的操作码(opcode)部分需要位以指定什么尺寸的数据存储在加载和存储指令中。本领域技术人员将理解一些加载和存储指令中的opcode位是稀缺的,并且期望尽可能少使用opcode位。
图1例示了从十六进制地址0x1000至地址0x100F的存储器的小16字节部,其在LE模式下加载到128位寄存器21(图2)中并且在BE模式下加载到128位寄存器28(图3)中。如所例示且之前提到的,来自存储器的各个字节从地址0x1000处的存储器中的第一位置加载到所例示的寄存器21、28的LSB。如所例示的,来自存储器地址0x1000的字节“0”被加载到寄存器21、28的LSB位置。来自存储器地址0x1001的字节“1”被加载到其旁边,以此类推,直到最后字节“15”被加载在寄存器21、28的MSB位置为止。
图2示出了对于包括字节数据元素25(i[0]-i[15])、半字数据元素26(i[0]-i[8])、和字数据元素27(i[0]-i[3])在内的数据元素,对应于LE模式的排列25-27。图3示出了对于包括字节数据元素30(i[0]-i[15])、半字数据元素31(i[0]-i[8])、字数据元素32(i[0]-i[3])以及双字长数据元素33(i[0]-i[2])在内的数据元素,分别对于BE模式的排列30-33。
如从将LE模式和BE模式下寄存器的内容进行比较而显而易见的,在BE模式下,寄存器需要基于希望执行的操作的元素尺寸来加载。由此可见,如在示例中,支持BE操作的处理器架构会需要能够将存储器的内容映射到寄存器中。由此,当希望对寄存器中的数据的子集执行某种操作时,诸如,但不排外地,SIMD操作,这种架构需要具有指定希望加载的数据元素尺寸的加载指令。例如,长度为128位的加载指令并且包含字长(各32位)的数据元素,使得该示例性指令包含四个32位字数据元素。由此,该示例加载针对SIMD指令的源数据,使得寄存器28包含用于执行四个不同命令的源数据。由此,图4例示了单个加载/存储指令利用单个加载/存储命令加载/写入多个指令操作数的概念。要注意的是,在图3中,第一字i[0]的字数据元素包含四个字节,这四个字节已经被重排序为成字节3在最左侧的MSB位置、字节2紧挨着字节3、字节1紧挨着字节2并且字节0在LSB位置的顺序。由此,字数据元素32被重排序,以将其MSB置于左侧,而将其LSB置于右侧。如所看到的,字数据元素32具有与在它们于存储器10中不同的字节依次排序;因此,在被加载到寄存器28之前,这些字节需要被对齐(例如,拌和(swizzle))到正确位置中。
因为诸如算术逻辑单元(ALU)指令这样的SIMD指令可以包含多个数据元素,所以总是提供寄存器内容的相同排列、而不管端序模式的优点在于寄存器到寄存器指令无需对端序模式敏感。换言之,假定根据以上描述数据一旦被加载到寄存器中,对于端序性标准化的是,仅对寄存器操作的指令,即,仅读取寄存器作为源并且将结果写到寄存器(例如,数学运算))无需遵守基于操作模式变化的端序规则。
如下面参照图4讨论的,对于寄存器/寄存器(例如,ALU)操作处理器架构不需包括针对大端序和小端序操作的不同指令。例如,,不需要对于大端序和小端序操作用于字长乘法的不同乘法指令,也不需要输入到流水线的指示这种操作模式的信号。
虽然这呈现一些优点,但其有时也可能在机器在BE和LE模式下如何运转之间呈现非对称。该非对称起因于以下隐含要求:对于大端序和小端序这两者,LSB(和MSB)是相同的。换言之,执行仅寄存器操作的指令(例如,加法或乘法)对于BE和LE操作这两者把寄存器的LSB看作在相同位置。
图4描绘了当前发明的一个方面,其中,单个加载指令可以用于对40寄存器加载任意数据元素尺寸的数据。换言之,具有单个加载指令的ISA无需另一个加载指令来加载字节、加载字等。在所提出的示例中,执行加载指令的加载/存储单元(LSU)对端序模式敏感。然而,LSU仅将起始地址字节0处的字节用于加载(这里,有效地址#1000),并且对于BE或LE模式,如所示出的进行加载。图4示出了在BE模式下,起始地址字节0在寄存器40的最左边找到,并且对于LE模式,起始地址字节0在最右边找到。当考虑到数据作为特定尺寸(这里,是字长)的元素阵列来加载时,元素在寄存器40内的位置在BE模式与LE模式之间是不同的。
例如,认为字数据元素i[0]的阵列位置在BE模式下在寄存器40的最左边找到,并且相同的字数据元素i[0]在LE模式下在寄存器40的最右边找到。在之前的架构中,对于BE和LE这两种模式,如在LE模式下,字数据元素i[0]的阵列位置会被加载在最右边。图4还描绘了针对BE和LE模式中的每个的字数据元素i[0-4]的最高有效字节。如图4的示例中理解的,针对BE和LE这两者的MSB位于这些字数据元素i[0]中的每个的左侧处。然而,在LE模式下,字数据元素i[0]的MSB是字节3,并且在BE模式下,i[0]的MSB是字节0。
由此可见,根据图4的实施方式中出现的数据排列比标准架构中要求的数据排列简单,其中,阵列的相同数据元素在寄存器中位于相同位置,并且对于BE和LE这两种模式而言排序相同。再次,这是因为如图2和图3例示的,针对BE和LE这两种模式,现有标准架构初始地将元素加载在相同位置。在BE模式下,对于半字长和更大的数据元素,需要字节重排序,以确保MSB在各个数据元素的左侧。相反,当如图4中例示的单个加载指令在BE模式下对寄存器40进行加载时,其将MSB、字节0加载在寄存器40的左端处,以此类推,并且将LSB、字节15加载在右端处。这确保不需要字节重排序来确保MSB在寄存器40的左端处,并且还在是半字或更大的各个数据元素的左端处。
图5描绘了存储器300、存储器接口302和寄存器304,存储器接口302包含通道排列逻辑306。在一个配置中,存储器接口302如图4的示例所示响应于单个加载指令加载任何尺寸的数据元素,并且响应于单个存储指令将数据存储到存储器。这种存储器接口302会根据端序模式但独立于寄存器304中数据的元素尺寸来执行逆操作以执行存储。例如,当执行LE模式加载时,存储器接口302会从存储器10得字节15至0(图4),并且将它们存储在寄存器304中,字节0在寄存器304的最右侧并且MSB(LE)字节15在寄存器304的最左侧。因为这是与存储器10中找到的相同的字节顺序,所以通道排列逻辑306无需重排序/改变字节的通道。例如,当执行BE模式加载时,存储器接口302会从存储器10(图4)再次取得字节15至0,并且将它们存储在寄存器304中,MSB(BE)字节0在寄存器321的最左侧并且字节15在寄存器321的最左侧。这是因为对于BE字节排序中的MSB是字节0,并且LSB是字节15,这需要在将从存储器10加载的字节放置在寄存器304中之前通道排列逻辑306对它们重排序。
如这里所使用的,“处理器”和“逻辑”包括(但不限于)硬件、固件、软件和/或各个组合,以执行功能或动作和/或造成来自另一个逻辑、方法和/或系统的功能或动作。例如,基于期望的应用或需要,逻辑和/或处理器可以包括软件控制的微处理器、离散逻辑、专用集成电路(ASIC)、已编程的逻辑装置、包含指令等的存储装置。逻辑和/或处理器可以包括一个或更多个门、门的组合、或其他电路部件。逻辑和/或处理器还可以被完全具体实施为软件。在描述多个逻辑和/或处理器的情况下,可以将多个逻辑和/或处理器合并到一个物理逻辑(或处理器)中。类似地,在描述单个逻辑和/或处理器的情况下,可以在多个物理逻辑和/或处理器之间分布单个逻辑和/或处理器。
图6描绘了作为指令执行流水线的一部分的算术单元320的示例。算术单元320可以是无需考虑正在操作于的端序模式的、未修改的现有算术单元。这是因为输入重排序逻辑315和可选的输出重排序逻辑325在需要时具有重新排列输入和输出数据元素使得它们被正确对齐的能力。如下面所讨论的,复用器和其他数据总线转向逻辑根据一个或更多个指令配置输入323,基于算术单元320在何种BL/LE模式310下操作,可以对输入字节和输出字节重排序。在一些配置中,指令配置输入323可以描述诸如字、双字等的数据元素的排序,其可以依赖于不只是LE/BE模式310并且可以通过所执行的指令来指定。图8和图9例示了针对各种示例性SIMD乘法指令的输入字节的一些示例性排序。在需要时,输出排序逻辑325对数据元素或其他输出重排序,使得输出数据存储在目的地寄存器的正确位置。
图7例示了基于操作方法400操作于的端序模式来排列源寄存器字节并且产生目的地寄存器字节的示例性方法400。该示例性方法400参照流程图例示。虽然为了简单说明的目的,所例示的方法被示出和描述为一系列框,但要理解的是,方法不被框的顺序限制,这是因为一些框可以与其他框以与所示出和描述的不同的顺序和/或同时发生。而且,可能需要少于所有例示的框,以实现示例性方法。框可以被组合或分离成多个成分。而且,附加和/或另选方法可以采用附加、未例示的框。
示例性方法400开始于403,其中对之前取得的指令解码以确定其源和目的地操作数以及要执行什么类型的指令。接着,经解码的指令在405被路由到保留站。如后面所讨论的,保留站为无序流水线提供在完全收回编程顺序中的指令之前写入执行指令的推测性中间结果的方式。当指令要求从存储器加载时,在410在加载存储单元(LSU)流水线中执行加载,其从存储器对一个或更多个寄存器进行加载。该加载至少部分地基于端序模式(BE或LE)执行。然而,加载与寄存器是否是利用SIMD加载的或SIMD数据的数据元素尺寸无关。例如,基于端序模式,寄存器可以如图4例示被加载,并且单个加载指令可以用任何数据元素尺寸对寄存器进行加载。
在与保留站中的条目关联之后,指令被调度以在415执行。由于准备执行该指令,在423,从对应的寄存器获得与该指令关联的源操作数。当需要时,在425,源操作数字节/位至少部分地基于端序模式以及该指令的SIMD操作的数据元素尺寸(字节、半字、字、双字)对齐。指令在428执行/进行,并且当需要时,在430,所产生的字节/位至少部分地基于端序模式对齐。在432,目的地寄存器和如果需要则保留站用执行结果更新。当需要存储以将结果写到存储器时,方法400在434将要存储的数据发送到LSU流水线,使得基于端序模式,结果被存储到存储器,但与寄存器是否存储SIMD数据无关,并且与正在存储的SIMD数据的尺寸无关。
图8描绘了BE模式下四倍长字乘法的示例。在该示例中,源寄存器Rs1在BE模式下与源寄存器Rs2相乘。图9描绘了LE模式下的类似乘法。在这些示例两者中,数据元素字i[0]与i[4]相乘、i[1]与i[5]相乘、以此类推。在这些示例中,SIMD指令的字相乘,但在其他示例中,SIMD数据的字节、半字、双字或其他数据元素尺寸可以类似地相乘。图8和图9例示了因为这些数据元素字位于各自不同的位置,所以如果少于四个ALU可用,则不同对的数据元素可以在不同时间一起相乘。如果四个或更多的ALU可用于执行利用四个字的该SIMD,则四个乘法可以平行执行。通常,如果一个ALU可用,则在BE模式下,随着SIMD指令流过ALU流水线,字i[0]和i[4]首先一起相乘,然后字i[1]和i[5]一起相乘,接着字i[2]和i[6]一起相乘,然后字i[3]和i[7]一起相乘。在LE模式下,字i[3]和i[7]首先一起相乘,然后字i[2]和i[6]一起相乘,接着字i[1]和i[5]一起相乘,然后字i[0]和i[4]一起相乘。对于少量的其他指令,ALU/执行单元还要求针对字/元素尺寸的输入,以确定何时确定如何对齐一些输入数据和一些输出数据。如所例示的,用于字的乘法的流水线阶段之间的传播屏障在两个字已经被相乘之后终止进位传播。在各个字数据元素的各个乘法内,字节具有相同的排序,使得在这两个示例中,不需要进行逐字节重新映射。
返回参照图4,当执行单元针对特定数据元素值搜索图4的寄存器40时,其在BE模式下开始于寄存器的左端处的元素,并且行进到右端处的元素,而在LE模式下开始于寄存器的右端处的元素,并且行进到左端处的元素。这是因为对于LE和BE模式这两者,最低地址处的字节总是被加载在右端处,而最高地址处的字节总是被加载在寄存器的左端处,但寄存器中的各个字节到元素的分配改变。搜索指令按照定义开始于寄存器的最低有效元素,并且针对特定值逐个元素搜索,直到其达到最高有效元素为止。在LE模式下,第一元素在寄存器的右端处,而在BE模式下,第一元素在寄存器的左端处。如果在寄存器中未找到该搜索值,则搜索指令可以返回指示没有找到匹配的信号。
与图4的加载指令示例不同,图10-图13描绘了可以用于用任何尺寸的数据元素来加载寄存器的单个加载指令的不同示例。在某种程度上,该加载指令类似于经典的加载指令。然而,图10-图13的加载指令在加载时未考虑数据元素的可能尺寸。在图10中,当加载指令(加载D1#1000)被执行时,阵列要素的相同相对排列在BE与LE模式之间被维持(例如,i[0]会在相同位置处,与加载BE模式还是LE模式无关)。如图10所例示,寄存器D1加载有包含字节3-0的字数据元素i[0]、包含字节7-4的字数据元素i[1]、包含字节11-8的字数据元素i[2]、以及包含字节15-12的字数据元素i[3]。然而,在该配置中,并且如图11和图13例示,当实施BE模式时,如图13中针对i[0]和i[4]所示例的,寄存器中各个元素内的数据在使用之前需要重排序。
类似于图8,图11和图12例示了BE模式下源寄存器一(Rs1)205和源寄存器二(Rs2)210的4字封装的SMID乘法。如图11例示,Rs1 205已经加载有数据元素字(例如,元素)i[3]、i[2]、i[1]、i[0]并且Rs1 205已经加载有数据元素字i[7]、i[6]、i[5]、i[4]。Rs2 210的对应字节位置如图12中例示。该指令将字i[3]与字i[7]相乘、将字i[2]与字i[6]相乘、将字i[1]与字i[5]相乘、以及将字i[0]与字i[4]相乘。在LE模式下,各个字的字节被正确对齐。然而,在BE模式下,如图13中针对字i[0]和i[4]例示的,各个字的字节必须重新对齐。该重新对齐或拌和可以利用类似于上面参照图5描述的通道排列逻辑306的通道排列/对齐逻辑来进行,或利用类似于图6的输入重排序逻辑315的逻辑来进行。本领域技术人员将理解可以类似于在图形处理单元(GPU)中实施的对齐逻辑来实施该对齐逻辑。
图14描绘了搜索指令的示例,该搜索指令在搜索具有较小地址值的元素(例如,字节)至具有较大地址值的元素的同时标识元素(例如,字节)值的首次出现。在本公开的实施中,这些搜索指令由根据端序模式敏感的执行单元来执行。具体地,如图14所例示的,排序逻辑在BE模式与LE模式之间颠倒。如所例示的,在BE模式下,寄存器的搜索开始于寄存器的左侧,并且朝向寄存器的右侧逐元素行进,直到寄存器中找到匹配搜索值的元素或搜索了整个寄存器为止。在一些配置中,如果没发现匹配,则执行单元将生成该寄存器中没有匹配元素的指令。在LE模式下,搜索被反转并且寄存器的搜索开始于右侧,并且朝向寄存器的左侧逐元素行进,直到寄存器中找到匹配搜索值的元素或搜索了整个寄存器为止。
图15A和图15B呈现出可以实施本公开的处理器50的示例性框图。具体地,加载存储单元(LSU)66可以执行根据本公开的加载指令和存储指令,以针对各个模式执行存储器与寄存器之间描述的映射。指令执行流水线70(可以有序或无序)被设置有指示操作模式的端序模式信号。该端序模式信号还可以是被置位以指示端序模式的寄存器位。
取得逻辑52从存储器预先取得处理器50将要执行的软件指令。这些预先取得的指令被放置在指令缓存器54中。这些指令之后经由解码和重命名逻辑56从指令缓存器54去除,并且被解码成处理器能够处理的指令。这些指令还被重命名并且放置在指令队列58中。解码器和重命名逻辑56还向分支预测器和转译后备缓冲器(ITLB)60提供与分支指令关联的信息。分支预测器和ITLB 60预测分支并且向取得逻辑52提供分支预测信息,从而所预测的指令被取得。
重排序缓冲器62存储推测性完成指令的结果,该指令可能未准备好以编程顺序收回。重排序缓冲器62还可以用于展开误预测的分支。保留站68提供指令的位置,以写入它们的结果,而不要求寄存器变为可用。保留站68还提供寄存器重命名和动态指令重新调度。提交单元60确定指令数据值何时准备好提交/加载到寄存器堆72中的一个或更多个寄存器中。加载和存储单元66检测对存储器和从存储器的加载指令和存储指令,以确保该存储数据遵循依次的程序顺序,即使处理器50推测性地无序地执行指令。例如,加载和存储单元将不允许从尚未由挂起的旧存储指令写入的存储位置加载数据的加载。
指令在一个或更多个无序流水线70中执行,在指令以编程顺序执行时这些无序流水线70是不需要的。通常,指令最终将它们的结果写到寄存器堆72。图15B例示了示例性寄存器堆,其具有32个寄存器Reg#0至寄存器Reg#31。依赖于指令,来自寄存器堆72的数据结果可以在达到存储层级78之前最终写到一个或更多个一级(L1)数据缓存器74和N路组关联二级(L2)缓存器76中。
根据上述公开的处理器可以享受以下益处(虽然这种益处不必呈现在所有实施中):在一些处理器架构中,加载指令和存储指令这两者很大程度上需要比寄存器对寄存器指令多的opcode空间来表达。例如,具有源、目的地和16位偏移的加载会通常要求五位来标识32个源寄存器中的1个以及五位标识32个目的地寄存器中的1个,并且针对总共26位opcode空间的16个地址偏移位,使得32位opcode的最后六位空闲来标识指令为加载。另选地,无偏移的寄存器对寄存器指令将需要15位来指定三个寄存器,留下较多的opcode位可用于标识加载指令的类型。在另一个配置中,架构可以具有32个寄存器,每个寄存器利用五位来标识,并且可以具有六位的opcode。这种架构会仅使用21位来对这种寄存器到寄存器操作进行编码。虽然RISC架构可以仍然在32位中存储指令,但仅使用21位空间允许了对较多的指令进行编码。另选地,可以对较多的寄存器或其某些组合进行寻址。进一步地,存储器接口302(图5)中的通道排列逻辑306可以比在现有系统中的简单,在于无需执行字节特定重排序。虽然处理单元可能需要对端序模式敏感,但通常会有足够的通道重排序逻辑,以支持对不同尺寸的指定通道的可变逻辑或算术操作。可以补充该逻辑以将端序模式考虑在内。
术语“处理器”还包括可以处理数据的各种机器结构中的任意结构,包括例如,数字信号处理器、固定功能电路、输入/输出(I/O)、或甚至处理器内的功能单元。更进一步地,“处理器”包括虚拟化执行资源,使得一组物理执行资源可以被抽象为多个物理处理器。操作差别是是否提供用于将数据预取得到相对本地储存器的支持,并且可以需要实施本公开的辅助差别是从无序处理、多线程或这两者重排序要求请求的能力。
现代通用处理器规则地需要实施超过二十亿个晶体管,同时图形处理单元可以具有超过五十亿个晶体管。这种晶体管计数可能增大。这种处理器已经使用了这些晶体管,以实施增大复杂操作重排序、预测、更加并行化、更大的存储器(包括更多和更大的缓存)等。由此可见,需要能够以适合于正被论述的技术的细节级别来描述或讨论关于这种处理器的技术主题(不管通用还是专用)。通常,应用概念的层级,以允许本领域技术人员聚焦于正在被论述的主题的细节。
例如,高级别特征(诸如处理器支持什么指令)传递架构级别细节。当描述高级别技术(诸如编程模块)时,这种级别的抽象是合适的。微架构细节描述了关于架构的实施的高级别细节(甚至因为相同的微架构可以能够执行不同的ISA)。然而,微架构细节通常描述了不同的功能单元和他们的相互关系,诸如如何和何时数据在这些不同的功能单元之间移动。由此可见,参考这些单元的功能也是合适水平的抽象,而不是论述这些功能单元的实施,这是因为这些功能单元中的每一个本身可以包括几十万或上百万的门。当论述这些功能单元的某个特定特征时,可以适当标识这些单元的被代替的功能,并且使这些抽象化,同时更详细地论述功能单元的相关部分。
最终,可以指定实施这些功能单元的(在整个处理器的背景下)、门和互连(网络列表)的精准逻辑排列。然而,这种逻辑排列如何在特定芯片中物理实现(逻辑和互连在特定设计中如何布局)仍可以在不同的处理技术中不同,并且由于各种其他原因。关于制作用于功能单元的网络列表以及实际布局的许多细节使用设计自动化来确定,从要实现的逻辑的高级别逻辑进行(例如,“硬件描述语言”)。
术语“电路”不意味着单个电连接的电路组。电路可以是固定功能、可配置或可编程的。通常,与实施功能单元的特定部分的电路相比,实施功能单元的电路更有可能可配置,或可以是更大程度地配置。例如,处理器的算术逻辑单元(ALU)在执行不同的算术或逻辑运算时可以不同地重新使用电路的相同部分。由此可见,电路的该部分在被配置成执行或以其他方式互连以执行各个不同操作时是对于各个不同操作有效的电路,或电路的一部分。这种配置可以例如来自或基于指令或微代码。
在所有这些情况下,从功能的角度描述处理器的部分向本领域技术人员表达结构。在该公开的背景下,术语“单元”在一些实施中指的是实施归因于该单元的功能的一类或一组电路。这种电路可以实施附加功能,所以执行一个功能的电路的标识不意味着相同电路,或其一部分,也无法执行其他功能。在一些情况下,可以标识功能单元,然后可以描述不同地执行特定特征或实施新特征的电路的功能描述。例如,“解码单元”指的是实施处理器指令的解码的电路。描述说明了在一些方面中,这种解码单元,因此实施这种解码单元的电路支持特定指令类型的解码。指令的解码在不同的架构和微架构之间不同,并且除了权利要求的明确要求之外,术语不对其进行排除。例如,根据该实施的设计目标,不同的微架构可以有点不同地实施指令解码和指令调度。类似地,存在结构已经从他们执行的功能取得他们的名字的情况。例如,以规定方式表现的程序指令的“解码器”描述了支持该行为的结构。在一些情况下,结构可以与不支持这种行为的解码器具有永久的物理差异或改编。然而,这种结构还可以由临时改编或配置来制造,诸如一个在程序控制、微代码、或配置的其他源下产生。
存在设计电路的不同方法。例如,电路可以相对于时钟同步或异步。电路可以被设计成静态或动态。不同的电路设计原理可以用于实施不同的功能单元或其一部分。无特定文本专用基础,“电路”包含所有这种设计方法。
虽然这里描述的电路或功能单元可以由电路最经常地实施(且更具体地,由主要依赖于在半导体中被实施为一次开关元件的晶体管的电路),但该术语被理解为与所公开的技术相关。例如,不同的物体处理可以用于实施本公开的方面的电路,诸如光学、纳米管、微电机械元件、量子开关或存储储存器、磁抗逻辑元件等。虽然根据本技术的用于构建电路或功能单元的技术的选择可以随时间改变,但该选择是根据技术的当前状态进行的实施决定。这由从使用真空管作为开关元件到使用具有离散晶体管的电路、到使用集成电路的过渡,并且存储技术的进步在于虽然在这些领域中的各个领域中有许多发明,但这些方法不必从根本上改变计算机如何根本地工作。例如,具有从指令集构架选择的一系列指令的所存储的程序的使用是从计算机的重要改变,该计算机需要物理重写,以改变程序,但随后,这种存储的程序计算机程序内的各种功能单元有很多进步。
功能模块可以由电路组成,其中,这种电路可以是固定功能、在程序控制下可配置或在其他配置信息下可配置,或其某个组合。功能模块本身由此可以由它们执行的功能来描述,以有助于抽象化可以如何实施这种功能的构成部分中的一些。
在一些情况下,电路和功能模块可以从功能角度部分地描述,和从结构角度部分描述。在一些情况下,这种描述的结构部分可以从应用于电路或功能模块或这两者的配置的角度来描述。
虽然某个主题已经以特定于结构特征和/或方法步骤的示例的语言来描述,但将理解的是,所附权利要求中限定的主题不必限于这些描述的特征或行为。例如,给定结构特征可以归入在另一个结构元素内,或这种特征可以在特有部件之间分离或分配。类似地,处理的示例性部分可以被实现为副产品或与另一个行为或处理同时执行,或在一些实施中可以作为多个分开的行为执行。由此可见,根据本公开的实施不限于与具有所描绘和/或描述的示例具有1:1对应的那些。
上述,说明了计算硬件和/或软件编程的各种示例,以及这种硬件/软件如何可以互通的示例。硬件或被配置有软件和这种通信接口的硬件的这些示例提供用于完成归因于彼此的功能的手段。例如,用于执行这里描述的软件处理的实施的手段包括机器可执行代码,用于对机器进行配置以执行这种处理。本公开的一些方面属于由有限的可配置性或固定的功能电路执行的处理,并且在这种情况下,用于执行这种处理的手段包括专用和有限可编程性硬件中的一个或更多个。这种硬件可以通过软件在通用计算机上执行来控制或调用。
本公开的实施可以提供用于嵌入式系统,诸如电视、电器、车辆,或个人计算机、桌上型计算机、膝上型计算机、消息处理器、手持装置、多处理器系统、基于微处理器的或可编程的消费者电子器件、游戏控制器、网络PC、微计算机、大型计算机、移动电话、PDA、平板电脑等。
除了硬件实施方式(例如,在中央处理单元(“CPU”)内或耦合到中央处理单元(“CPU”)、微处理器、微控制器、数字信号处理器、处理器芯、片上系统(“SOC”)、或任意其他可编程或电子装置),实施还可以具体实施在软件(例如,计算机可读代码、程序代码、指令和/或以任意形式设置的数据,诸如源、对象或机器语言)中,软件设置例如在被配置成存储软件的计算机可用(例如,可读)介质中。这种软件可以能够实现例如功能、制造、建模、模拟、描述、和/或这里描述的设备和方法的测试。例如,这可以借助使用以下来实施:普通编程语言(例如,C、C++)、GDSII数据库、硬件描述语言(HDL)(包括Verilog HDL、VHDL、系统C寄存器传送级(RTL)等)、或其他可用程序、数据库、和/或电路(即,示意性)捕捉工具。实施方式可以设置在计算机可用介质中,包括永久性存储器,诸如使用半导体、磁盘、光盘的存储器、铁、电阻存储器等。
作为特定示例,理解的是,所公开的设备和方法的实施可以实施在具体实施为硬件描述语言(HDL)的半导体知识产权核(诸如微处理器核)中,或其一部分中,可以用于制造专用集成电路实施。计算机可读介质可以具体实施或存储这种描述语言数据,并且由此构成制品。永久性机器可读介质是计算机可读介质的示例。其他实施方式的示例包括存储寄存器传送语言(RTL)描述的计算机可读介质,可以适用于特定架构或微架构实施中。另外,这里描述的设备和方法可以具体实施为配置或编程硬件的硬件和软件的组合。
而且,在一些情况下,这里已经使用了术语,这是因为认为向普通技术人员更合理地传达特征点,但这种术语不应当被认为意味着对于由所公开的示例和其他方面包含的实施的范围的限制。前述公开中已经例示和描述了多个示例。必然地,不是每个示例都可以例示每个方面,并且示例不例示这种方面的排外构成。相反,相对于一个附图或示例例示和描述的方面可以与相对于其他附图例示和描述的方面一起使用或组合。由此可见,普通技术人员会从这些公开理解上述公开不限于根据权利要求的实施方式的构成,而是权利要求的范围这里限定发明实施方式的宽度和范围。发明内容和摘要部分可以阐述一个或更多个,但不是权利要求的范围内本发明的所有示例性实施方式和方面。

Claims (20)

1.一种处理器系统,该处理器系统包括:
寄存器;以及
加载存储单元LSU,该LSU被配置成将数据从存储器加载到所述寄存器中,其中,当在小端序模式下,来自依次增大的存储器地址的字节从所述寄存器的第一端到所述寄存器的第二端以对应的依次增大的字节存储器地址的顺序加载,并且其中,当在大端序模式下,来自依次增大的存储器地址的字节从所述寄存器的所述第二端到所述寄存器的所述第一端以对应的依次增大的存储器地址的顺序加载。
2.根据权利要求1所述的处理器系统,其中,字节作为数据元素存储在所述寄存器中,其中,所述数据元素根据包括字节、半字、字、双字和四倍长字的组中的一项来制定尺寸。
3.根据权利要求2所述的处理器系统,其中,所述寄存器是第一源寄存器并且还包括:
算术逻辑单元ALU,该ALU被配置成使用来自所述第一源寄存器和第二源寄存器的数据来执行指令,其中,当执行来自加法、减法和乘法的组的一个或更多个操作时,与所述系统以大端序模式操作还是以小端序模式操作无关,从所述第一源寄存器和所述第二源寄存器输入到所述ALU的各个数据元素内的位不被重排序。
4.根据权利要求3所述的处理器系统,其中,所述指令是单指令多数据SIMD指令。
5.根据权利要求3所述的处理器系统,所述处理器系统还包括:
输入重排序逻辑,该输入重排序逻辑被配置成至少部分地基于所述处理器系统是以大端序模式还是以小端序模式操作,在来自所述第一源寄存器的数据被输入到所述ALU之前,重排列来自所述第一源寄存器的位的顺序。
6.根据权利要求5所述的处理器系统,其中,所述SIMD指令代表在四个数据元素字对上操作的四个指令,其中,字数据元素对i[3]和i[7]一起处理,字数据元素对i[2]和i[6]一起处理,字数据元素对i[1]和i[5]一起处理,并且字数据元素对i[0]和i[4]一起处理。
7.根据权利要求6所述的处理器系统,其中,所述数据元素对在多个ALU中并行处理。
8.根据权利要求2所述的处理器系统,所述处理器系统还包括:
单个加载指令,该单个加载指令被配置成使所述LSU从存储器向所述寄存器加载具有数据元素的数据而与所述数据元素的尺寸无关。
9.根据权利要求3所述的处理器系统,所述处理器系统还包括:
输出重排序逻辑,该输出重排序逻辑被配置成对齐由所述ALU计算得的输出值的字节。
10.根据权利要求1所述的处理器系统,其中,所述LSU被进一步配置成将在所述寄存器中存储的字节返回到原始存储器字节地址,所述寄存器中存储的所述字节是从所述原始存储器字节地址加载的。
11.根据权利要求1所述的处理器系统,所述处理器系统还包括:
搜索逻辑,该搜索逻辑被配置成以小端序模式针对字节值进行搜索,该搜索开始于所述寄存器的所述第一端,并且逐字节地针对所述字节值进行搜索,直到达到所述寄存器的所述第二端为止,并且其中,所述搜索逻辑被配置成以大端序模式针对字节值进行搜索,该搜索开始于所述寄存器的所述第二端,并且逐字节地针对所述字节值进行搜索,直到达到所述寄存器的所述第一端为止。
12.一种处理器系统,该处理器系统包括:
加载存储单元LSU,该LSU被配置成执行加载指令和存储指令,以存取在存储器中的包括多个不同数据元素的数据,其中,所述加载指令和存储指令不对所述多个不同数据元素的尺寸进行区分;以及
寄存器堆,该寄存器堆被配置成响应于加载指令来接收数据并且响应于存储指令来提供要存储到存储器的数据,其中,寄存器的内容根据该寄存器是以大端序模式加载的还是以小端序模式加载的而不同。
13.根据权利要求12所述的处理器系统,该处理器系统还包括:
执行单元,该执行单元被配置成对一个或更多个源寄存器执行单指令多数据SIMD操作,并且被配置成在一个或更多个目的地寄存器中存储所述操作的结果,其中,所述执行单元接收端序模式的指示以标识特定数据元素在所述一个或更多个源寄存器内所位于的位置。
14.根据权利要求12所述的处理器系统,其中,为了使数据在SIMD操作中被使用,存在一个加载指令和一个存储指令,而与要执行的所述操作的预期元素尺寸无关。
15.根据权利要求14所述的处理器系统,其中,所述预期元素尺寸是字节、半字、字、双字和四倍长字的所述组中的一项。
16.根据权利要求12所述的处理器系统,其中,当以大端序模式操作时所述加载存储单元针对加载指令填充目的地寄存器,其中首次出现的数据元素在所述目的地寄存器的最高有效字节部处。
17.根据权利要求12所述的处理器系统,其中,对于小端序模式所述加载存储单元针对加载指令填充目的地寄存器,其中首次出现的数据元素在所述目的地寄存器的最低有效字节部处。
18.根据权利要求12所述的处理器系统,其中,所述处理器系统对于大端序模式和小端序模式这两者执行在逻辑上开始于源寄存器的一端的搜索指令。
19.一种处理器系统,该处理器系统包括:
加载存储单元LSU;
单个加载指令,该单个加载指令使所述LSU从存储器向寄存器加载数据,其中,在小端序模式下,第一存储器地址的字节被加载到所述寄存器的所述最低有效字节LSB中,连续增大的地址的字节在所述寄存器中彼此相邻加载,最大存储器地址的字节加载在所述寄存器的最高有效字节MSB中,其中,在大端序模式下,所述第一存储器地址的所述字节被加载到所述寄存器的所述MSB中,连续增大的地址的字节在所述寄存器中彼此相邻加载,所述最大存储器地址的所述字节加载在所述寄存器的所述LSB中;以及
单个存储指令,该单个存储指令使所述LSU在小端序模式下在起始存储器地址从所述寄存器向存储器存储数据,所述寄存器的所述LSB被加载到最低起始存储器地址,其中连续字节被加载到连续增大的存储器地址,直到所述寄存器的所述MSB被加载到由所述单个存储指令寻址的最大最后存储器地址为止,并且其中,所述单个存储指令被配置成使所述LSU在大端序模式下在起始存储器地址从所述寄存器向存储器存储数据,所述寄存器的所述MSB被加载到所述最低起始存储器地址,其中连续字节被加载到连续增大的存储器地址,直到所述寄存器的所述LSB被加载到由所述单个存储指令寻址的所述最大最后存储器地址为止。
20.根据权利要求20所述的处理器系统,所述处理器系统还包括:
执行流水线;以及
执行单元,该执行单元被配置成对经所述单个加载指令加载的一个或更多个源寄存器执行单指令多数据SIMD操作,并且被配置成将所述操作的结果存储在一个或更多个目的地寄存器中。
CN201610959252.6A 2015-11-03 2016-11-03 支持端序不可知simd指令的处理器和方法 Pending CN107038020A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/930,740 2015-11-03
US14/930,740 US20170123792A1 (en) 2015-11-03 2015-11-03 Processors Supporting Endian Agnostic SIMD Instructions and Methods

Publications (1)

Publication Number Publication Date
CN107038020A true CN107038020A (zh) 2017-08-11

Family

ID=57389185

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610959252.6A Pending CN107038020A (zh) 2015-11-03 2016-11-03 支持端序不可知simd指令的处理器和方法

Country Status (4)

Country Link
US (1) US20170123792A1 (zh)
EP (1) EP3166014B1 (zh)
CN (1) CN107038020A (zh)
GB (1) GB2545081A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112835842A (zh) * 2021-03-05 2021-05-25 深圳市汇顶科技股份有限公司 端序处理方法、电路、芯片以及电子终端

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10671387B2 (en) 2014-06-10 2020-06-02 International Business Machines Corporation Vector memory access instructions for big-endian element ordered and little-endian element ordered computer code and data
US10691453B2 (en) 2015-11-13 2020-06-23 International Business Machines Corporation Vector load with instruction-specified byte count less than a vector size for big and little endian processing
US10691456B2 (en) * 2015-11-13 2020-06-23 International Business Machines Corporation Vector store instruction having instruction-specified byte count to be stored supporting big and little endian processing
US10101997B2 (en) 2016-03-14 2018-10-16 International Business Machines Corporation Independent vector element order and memory byte order controls
US10459700B2 (en) * 2016-03-14 2019-10-29 International Business Machines Corporation Independent vector element order and memory byte order controls
US20200264877A1 (en) * 2019-02-19 2020-08-20 International Business Machines Corporation Load/store elements reversed instructions
US20200264883A1 (en) * 2019-02-19 2020-08-20 International Business Machines Corporation Load/store bytes reversed elements instructions
GB2582785A (en) * 2019-04-02 2020-10-07 Graphcore Ltd Compiling a program from a graph
US11886377B2 (en) 2019-09-10 2024-01-30 Cornami, Inc. Reconfigurable arithmetic engine circuit

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040030856A1 (en) * 2002-08-07 2004-02-12 Qureshi Shiraz A. System and method for operating in endian independent mode
US6728874B1 (en) * 2000-10-10 2004-04-27 Koninklijke Philips Electronics N.V. System and method for processing vectorized data
US20050125647A1 (en) * 2003-12-09 2005-06-09 Arm Limited Endianess compensation within a SIMD data processing system
US20050125476A1 (en) * 2003-12-09 2005-06-09 Arm Limited Data processing apparatus and method for performing arithmetic operations in SIMD data processing
CN1987827A (zh) * 2005-12-22 2007-06-27 国际商业机器公司 用来实现高效和灵活存储器复制操作的方法和系统
WO2007103195A2 (en) * 2006-03-06 2007-09-13 Analog Devices. Inc. Improved permutable address processor and method
US20100031007A1 (en) * 2008-02-18 2010-02-04 Sandbridge Technologies, Inc. Method to accelerate null-terminated string operations
US20110072170A1 (en) * 2009-09-21 2011-03-24 Brian King Flachs Systems and Methods for Transferring Data to Maintain Preferred Slot Positions in a Bi-endian Processor
CN103827815A (zh) * 2011-09-26 2014-05-28 英特尔公司 用于提供利用跨越和掩码功能的向量加载和存储的指令和逻辑
CN104834503A (zh) * 2014-02-12 2015-08-12 想象技术有限公司 具有粒度的增加立即数能力的处理器和方法
US20150248290A1 (en) * 2014-02-28 2015-09-03 International Business Machines Corporation Virtualization in a bi-endian-mode processor architecture

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0236615B1 (en) * 1986-02-06 1992-11-11 Mips Computer Systems, Inc. Functional units for computers
US5687337A (en) * 1995-02-24 1997-11-11 International Business Machines Corporation Mixed-endian computer system
US7047383B2 (en) * 2002-07-11 2006-05-16 Intel Corporation Byte swap operation for a 64 bit operand
US20110082999A1 (en) * 2009-10-07 2011-04-07 Andes Technology Corporation Data processing engine with integrated data endianness control mechanism
JP5622429B2 (ja) * 2010-04-20 2014-11-12 ルネサスエレクトロニクス株式会社 マイクロコンピュータ
US9336072B2 (en) * 2014-02-07 2016-05-10 Ralph Moore Event group extensions, systems, and methods
US9507595B2 (en) * 2014-02-28 2016-11-29 International Business Machines Corporation Execution of multi-byte memory access instruction specifying endian mode that overrides current global endian mode
US9619214B2 (en) * 2014-08-13 2017-04-11 International Business Machines Corporation Compiler optimizations for vector instructions
US9588746B2 (en) * 2014-12-19 2017-03-07 International Business Machines Corporation Compiler method for generating instructions for vector operations on a multi-endian processor
US9569190B1 (en) * 2015-08-04 2017-02-14 International Business Machines Corporation Compiling source code to reduce run-time execution of vector element reverse operations

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6728874B1 (en) * 2000-10-10 2004-04-27 Koninklijke Philips Electronics N.V. System and method for processing vectorized data
US20040030856A1 (en) * 2002-08-07 2004-02-12 Qureshi Shiraz A. System and method for operating in endian independent mode
US20050125647A1 (en) * 2003-12-09 2005-06-09 Arm Limited Endianess compensation within a SIMD data processing system
US20050125476A1 (en) * 2003-12-09 2005-06-09 Arm Limited Data processing apparatus and method for performing arithmetic operations in SIMD data processing
CN1987827A (zh) * 2005-12-22 2007-06-27 国际商业机器公司 用来实现高效和灵活存储器复制操作的方法和系统
WO2007103195A2 (en) * 2006-03-06 2007-09-13 Analog Devices. Inc. Improved permutable address processor and method
US20100031007A1 (en) * 2008-02-18 2010-02-04 Sandbridge Technologies, Inc. Method to accelerate null-terminated string operations
US20110072170A1 (en) * 2009-09-21 2011-03-24 Brian King Flachs Systems and Methods for Transferring Data to Maintain Preferred Slot Positions in a Bi-endian Processor
CN103827815A (zh) * 2011-09-26 2014-05-28 英特尔公司 用于提供利用跨越和掩码功能的向量加载和存储的指令和逻辑
CN104834503A (zh) * 2014-02-12 2015-08-12 想象技术有限公司 具有粒度的增加立即数能力的处理器和方法
US20150248290A1 (en) * 2014-02-28 2015-09-03 International Business Machines Corporation Virtualization in a bi-endian-mode processor architecture

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112835842A (zh) * 2021-03-05 2021-05-25 深圳市汇顶科技股份有限公司 端序处理方法、电路、芯片以及电子终端
CN112835842B (zh) * 2021-03-05 2024-04-30 深圳市汇顶科技股份有限公司 端序处理方法、电路、芯片以及电子终端

Also Published As

Publication number Publication date
GB201618384D0 (en) 2016-12-14
US20170123792A1 (en) 2017-05-04
EP3166014A1 (en) 2017-05-10
GB2545081A (en) 2017-06-07
EP3166014B1 (en) 2020-04-01

Similar Documents

Publication Publication Date Title
CN107038020A (zh) 支持端序不可知simd指令的处理器和方法
CN104050026B (zh) 使对共享存储器存取的同步松弛的处理器、方法及系统
CN104919416B (zh) 用于提供矢量地址冲突检测功能的方法、装置、指令和逻辑
CN111868702A (zh) 用于可配置空间加速器中的远程存储器访问的装置、方法和系统
CN109313556A (zh) 可中断和可重启矩阵乘法指令、处理器、方法和系统
CN105302543A (zh) 在64位机器上运行32位操作系统
CN107408036A (zh) 用户级分叉与结合处理器、方法、系统和指令
CN107368286A (zh) 用于多精度算术的simd整数乘法累加指令
CN106575218A (zh) 持久性存储屏障处理器、方法、系统和指令
CN108292215A (zh) 用于加载-索引和预取-聚集操作的指令和逻辑
US9575763B2 (en) Accelerated reversal of speculative state changes and resource recovery
CN105453030B (zh) 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统
CN107430508A (zh) 用于提供原子范围操作的指令和逻辑
CN108369516A (zh) 用于加载-索引和预取-分散操作的指令和逻辑
CN104011666B (zh) 具有独立进位链的加法指令
US9471326B2 (en) Method and apparatus for differential checkpointing
CN105247479B (zh) 指令次序实施指令对、处理器、方法和系统
CN108885551A (zh) 存储器复制指令、处理器、方法和系统
CN108292293A (zh) 用于得到多个向量元素操作的指令和逻辑
CN107003854A (zh) 提供向量包装元组交叉比较功能的方法、装置、指令和逻辑
CN108431770A (zh) 用于加速集合运算的硬件内容关联数据结构
US20180217840A1 (en) An apparatus and method for transferring a plurality of data structures between memory and one or more vectors of data elements stored in a register bank
CN108228234A (zh) 用于聚集-更新-分散操作的加速器
CN103946797B (zh) 用于转换矢量指令的系统、装置和方法
CN108369571A (zh) 用于偶数和奇数向量get操作的指令和逻辑

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
CB02 Change of applicant information

Address after: Hertfordshire

Applicant after: Mex Technology Co.,Ltd.

Address before: Hertfordshire

Applicant before: Harrow Software Co.,Ltd.

CB02 Change of applicant information
TA01 Transfer of patent application right

Effective date of registration: 20190821

Address after: Hertfordshire

Applicant after: Harrow Software Co.,Ltd.

Address before: Hertfordshire

Applicant before: Imagination Technologies Ltd.

Effective date of registration: 20190821

Address after: California, USA

Applicant after: Imagination Technologies Ltd.

Address before: Hertfordshire

Applicant before: Mex Technology Co.,Ltd.

TA01 Transfer of patent application right
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20170811

WD01 Invention patent application deemed withdrawn after publication