CN103460180B - 带有断言寄存器的处理器系统、计算机系统和用于管理断言的方法 - Google Patents
带有断言寄存器的处理器系统、计算机系统和用于管理断言的方法 Download PDFInfo
- Publication number
- CN103460180B CN103460180B CN201180069838.0A CN201180069838A CN103460180B CN 103460180 B CN103460180 B CN 103460180B CN 201180069838 A CN201180069838 A CN 201180069838A CN 103460180 B CN103460180 B CN 103460180B
- Authority
- CN
- China
- Prior art keywords
- data
- assertion
- processor system
- register
- additional
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 20
- 238000012545 processing Methods 0.000 claims abstract description 44
- 239000002775 capsule Substances 0.000 claims description 20
- 230000015654 memory Effects 0.000 claims description 14
- 238000007726 management method Methods 0.000 claims description 10
- 238000013500 data storage Methods 0.000 claims description 7
- 230000037361 pathway Effects 0.000 abstract 3
- 230000006870 function Effects 0.000 description 15
- 238000004590 computer program Methods 0.000 description 12
- 230000005540 biological transmission Effects 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 4
- 241001269238 Data Species 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000002372 labelling Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 239000011469 building brick Substances 0.000 description 1
- 230000019771 cognition Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000005294 ferromagnetic effect Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000005291 magnetic effect Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000000547 structure data Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30116—Shadow registers, e.g. coupled registers, not forming part of the register space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
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)
- Devices For Executing Special Programs (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明关于处理器系统,包括带有预定指令集的处理单元以及包括断言数据位置的断言寄存器,还包括至少一个通用寄存器,通用寄存器包括被布置在附加断言数据容器内的附加断言数据位置,其中每个附加断言数据位置适于存储附加断言数据以及用于在断言寄存器和通用寄存器之间传输数据的数据路径。所述处理器系统适于执行所述指令集的断言交换指令以经由数据路径将在第一断言数据位置内的断言数据与在第一附加断言数据容器内的对应附加断言数据位置中的数据进行交换以及经由数据路径将在第二断言存储位置内的断言数据与在第二附加断言数据内的对应附加断言数据位置中的数据进行交换。
Description
技术领域
本发明涉及一种带有至少一个断言寄存器(predicate register)的处理器系统、带有至少一个这种处理器系统的计算机系统、用于管理断言的方法和对应的计算机程序产品。
背景技术
很多现代中央处理单元(CPU)架构或计算机系统的处理器系统允许使用断言,例如以控制某些指令的条件执行或条件跳转来避免处理器系统在代码执行期间的不必要的跳转和分支。相应地,在这种系统上运行的软件的编译程序可以被编程以广泛使用断言。编译器所使用的断言往往不直接在硬件中反映出来,这是因为存储断言和随附逻辑的硬件断言寄存器可能相当昂贵。因此,硬件架构通常只支持要求仔细管理的有限数目的断言寄存器。缺乏足够的硬件断言寄存器在软件执行期间可能导致性能损失。另一方面,管理硬件断言寄存器以及将软件定义的断言映射到硬件断言寄存器上对于开发者或编译程序来说是一项艰巨的任务。
发明内容
正如附属权利要求中所描述的,本发明提供了带有至少一个断言寄存器的处理器系统、计算机系统、用于管理断言的方法和计算机程序产品。
本发明的具体实施例在从属权利要求中被陈述。
根据下文中描述的实施例,本发明的这些或其它方面将会很明显并且被阐述。
附图说明
参照附图,仅仅通过举例的方式,本发明的进一步细节、方面和实施例将被描述。在附图中,类似的参考数字被用于表示相同的或功能相似的元件。附图中的元件为了简单以及清晰而被图示,并且不一定按比例绘制。
图1示出了处理器系统的设置的例子。
图2示出了管理断言的例子。
图3描述了断言交换指令的实现。
具体实施方式
因为本发明所说明的实施例可能在大多数情况下通过使用本领域所属技术人员已知的电子组件、电路和软件被实施,所以不会在比上述所说明的认为有必要的程度大的任何程度上解释细节,以理解和认识本发明的基本概念并且为了不混淆或偏离本发明所教之内容。
在本说明书的上下文中,处理器系统可以是包括一个或多个处理器单元的电子器件。它可包括任何类型的微处理器或数字控制单元,诸如DSP(数字信号处理器)或微控制器。处理器系统或处理单元可以是任何类型的已知CPU(中央处理单元)架构。例如,它可以是基于ARM的、基于x 86的、或基于电力家族架构。处理单元可以例如是或包括StarCore处理单元。该处理单元可包括一个或多个处理器核心。处理单元可能包括预定义的指令集。指令集可定义要由处理单元执行的低级别指令。该指令集可以被定义为机器可读的。它可以被整体存储在处理单元或处理器系统上。通常,处理器系统可包括处理单元和一个或多个寄存器。可以认为处理器系统包括将其连接到附加组件的接口,例如以将处理器系统安装到计算系统的主板上。计算系统可包括一个或多个处理器系统并且包括存储器,例如像随机存取存储器(RAM)和/或高速缓冲存储器和/或外围器件或到像存储器件,例如硬盘,和/或像图形芯片或卡等等的图形器件的外围器件的接口。
寄存器可以被认为是少量的存储空间或对于CPU或处理单元可用的存储器。其内容可以被更快速地访问并且倾向于别处可用的存储。特别是,可以认为寄存器在程序的执行期间可以被处理单元直接访问。寄存器可以在处理单元的芯片或管芯上被实现。它可以接近处理单元被布置。通常,寄存器可允许优选的和非常快速的访问。特别是,寄存器可以位于处理单元内并且通常不被认为是高速缓冲存储器或RAM。可以设想寄存器表示由处理单元可直接访问的作为单元的存储器单元。寄存器集可包括一个或多个寄存器。寄存器集的寄存器可以是可单独和/或直接访问的。可以认为寄存器包括最简单和最快速访问CPU或处理单元的存储器。
断言寄存器可以是用于存储一个或多个断言的寄存器。处理单元可以适于直接访问断言寄存器以执行指令的条件执行,其中该条件执行取决于断言寄存器的状态或存储在断言寄存器内的一个或多个断言。处理单元的指令集可包括使处理器系统执行操作的条件执行的对应指令。可以认为指令或操作的有条件执行可能意味着只有在对应断言处于允许执行的状态中,例如,如果对应断言比特被设置的时候,才执行所述指令或操作。
通用寄存器可以是可用于更多一般用途的寄存器。数据可以从通用寄存器读取并且写入断言寄存器,并且反之亦然。可以设想处理单元可能不直接访问通用寄存器以将其用作断言寄存器来读取和/或检查断言的状态,以及是否基于通用寄存器的状态直接执行操作。通用寄存器可包含整数倍的比特的断言寄存器。特别是,通用寄存器可以适于包含3、4、至少为4,或5或更多倍比特数目的断言寄存器。
寄存器可包括适于存储数据的数据位置。数据位置可包括一个比特或一组比特,例如半字节、字节、或字。数据结构可以被定义用于寄存器或寄存器的部分。包括一个或多个比特的寄存器的一部分可以被认为是数据容器。数据结构可以将比特布置到比特的组和/或分配意义,因此将数据位置和/或功能定义用于个别比特和/或比特的组。例如,数据结构可以定义一组比特表示了字符、指针的数字或和/或给定比特表示了标志。特别是,可以在包括一个或多个数据位置的数据容器上定义数据结构。如果其包括数据位置相对于由数据结构定义的数据位置的大小和功能的相同布置,则寄存器或数据容器的数据结构可以被认为对应于另一个寄存器或数据容器的数据结构。可以认为数据结构包括具有不同数目的比特和/或不同功能的不同数据位置。例如,数据结构可以包括第一、第二和第三数据位置,其中第一数据位置是比特,第二数据位置是字节以及第三数据位置是半字节。
断言可以是被检查用于处理单元的条件执行的单一比特。可以认为断言包括一个或多个比特。断言的比特可以是寄存器中的连续比特,或它们可以是分布式的。
寄存器之间的数据路径可包括提供用于寄存器之间的数据传输的连接。数据路径通常可以是直接连接或间接连接。间接连接可经由一个或多个中间组件,例如中间缓冲器/寄存器或中间处理单元运行。
可以设想处理器系统,该处理器系统包括带有预定指令集的处理单元。这样的处理器系统的例子是图1中所示的并且在下面被更详细描述的处理器系统10。处理单元可以是如图1中所示的处理单元12。处理器系统可包括至少一个断言寄存器,例如图1的断言寄存器14或图2的断言寄存器102。可以认为断言寄存器包括n个断言数据位置,例如图1和图2的断言数据位置P1,P2,...,Pn。断言数据位置可以被布置在断言数据结构中,每个断言数据位置适于存储断言数据。特别是,断言寄存器可包括n个断言比特。
处理器系统可包括至少一个通用寄存器,该通用寄存器可以是图1的通用寄存器16或图2的通用寄存器104。通用寄存器可包括附加断言数据位置,该附加断言数据位置被布置在M-1个附加断言数据容器内。每个附加断言数据容器的数据结构可以对应于断言数据结构,其中每个附加断言数据位置适于存储附加断言数据。特别参照图2和图3在下面详细描述附加断言数据容器或数据结构的例子。因此,图2和图3的数据容器106、108、110分别对应的行可以被认为是数据容器的例子。
可以提供用于在所述至少一个断言寄存器和所述通用寄存器之间传输数据的数据路径,其中所述至少一个断言存储位置经由数据路径被连接或可连接到至少一个对应附加断言数据位置。这样数据路径的例子是如图1中所示的数据路径18。
如果相关联数据结构内的其大小、功能和/或布置对应于或等于断言寄存器数据结构内的断言数据位置的大小、功能和/或布置,则附加数据位置可以被认为对应于断言数据位置。
处理器系统可以适于执行所述指令集的断言交换指令,以经由数据路径将在第一断言数据位置中的断言数据与在第一附加断言数据容器中的对应附加断言数据位置中的数据进行交换,以及经由数据路径将在第二断言存储位置中的断言数据与在第二集合的附加断言数据中的对应附加断言数据位置中的数据进行交换。可以通过特别参照图3在下面描述的交换指令来说明所述交换指令。
断言寄存器内的断言数据可以被认为是有效的断言数据,因为它可以被用于操作的条件执行。在通用寄存器中存储为附加断言数据的数据可以被认为是非有效断言数据。非有效数据通过将其交换成断言寄存器的数据位置可能变得有效。可以认为通用寄存器和断言寄存器共同定义了大小为n x M的矩阵,其中n x M数据位置用于存储断言数据或附加断言数据。
每个断言寄存器的每个断言数据位置可以被关联到通用寄存器的M-1数据位置。数据的交换可以被执行,而没有中间缓冲或存储数据被交换。断言交换指令可以被定义成将源自多于两个断言存储位置的断言数据与源自两个或更多对应的附加断言数据位置中的数据进行交换。可以认为断言交换指令可以是处理单元的部分指令集。
每个断言存储位置可以适于存储一个或多于一个的断言比特。断言数据存储位置可以具有大小相等的比特,例如它们可以分别是单一比特。可行的是,处理器系统进一步适于在处理单元的一个时钟周期内执行断言交换指令。使断言数据交换的单一指令可以被定义。参照图3在下面更详细描述这样的单一指令的例子。
处理器系统可包括包含附加断言数据位置的一个以上的通用寄存器。可以设想一个以上的通用寄存器通过断言交换指令是可寻址的。处理器系统可包括一个以上的断言寄存器。断言寄存器可以被布置为断言寄存器的集合。一个以上的断言寄存器可以通过断言交换指令是可寻址的。特别是,可以设想所有断言寄存器通过断言交换指令是可寻址的。每个断言数据位置经由数据路径可以被连接或可连接到一个或多个通用寄存器的至少一个对应的附加断言数据位置。可以设想每个附加断言数据位置经由数据路径被连接或可连接到对应的断言数据位置。可以预想包括如本发明所描述的处理器系统的计算机系统。
可以设想一种管理处理器系统的断言数据的方法,该处理器系统特别是如本发明所描述的处理器系统。在下面特别参照图2和图3解释方法的例子。所述方法可包括识别断言交换指令,该断言交换指令可以是如在图2和图3的背景下如下所述的交换指令。可以设想将关于交换数据的起源和/或交换数据的目标的数据存储在存储器中。所述方法可以由编译器执行。该编译器可在编译软件以及使用一个或多个断言期间执行所述方法。该编译器可指派存储器,例如,RAM和/或高速缓冲存储器,以存储关于交换数据的起源和/或目标的数据。该数据可允许有效数据在任何时间重建,其中有效和非有效数据被存储在通用寄存器内。
可以考虑存储在计算机可读存储器上的计算机程序产品,所述计算机程序产品包括使计算机系统执行该方法的指令,该计算机系统特别是如本发明所描述的计算机系统。
现在更详细地参照附图,图1示出了处理器系统10的一般概述。处理器系统10可包括(出于简单起见未示出)外围器件。处理器系统10可包括处理单元12。处理单元12可以例如在StarCore架构内被实施。它可包括一个或多个处理器核心。取决于处理单元12的架构,包括预定指令的指令集可以针对处理单元来定义。处理单元12可以被布置成能够执行指令集的指令。
与处理单元12关联的可以是断言寄存器的集合14。所述寄存器的集合14可包括一个或多个断言寄存器。每个断言寄存器14可以将一个或多个断言存储为断言数据,这可以表示指令的条件执行的条件。断言可以被存储在断言数据位置中。数据结构可以针对每个断言寄存器14来定义。处理单元12可以检查断言比特是否被设置为1,并且只有是这样的情况时,才执行在对应的断言上被定义为是有条件的给定指令。
通用寄存器的集合16可以被关联到处理单元12。所述通用寄存器的集合16可以包括一个或多个单独可寻址的通用寄存器。所述通用寄存器的集合16的至少一个寄存器的大小可以大于断言寄存器集合12的大小。
该指令集可包括一个或多个指令,所述指令使处理单元12将来自断言寄存器的数据保存到通用寄存器,和/或从通用寄存器将数据读取到断言寄存器中。每个断言寄存器可以被连接或可连接到一个或多个通用寄存器。每个断言寄存器可以被连接或可连接到每个通用寄存器。应注意,通用寄存器16和/或断言寄存器14可以直接或间接地被连接或可连接到处理单元12。处理单元12可以被连接到可包括高速缓冲存储器和/或RAM的存储器布置20。
可以在所述断言寄存器的集合14和所述通用寄存器组的集合16之间提供数据路径18。数据路径18可以在所述断言寄存器的集合14和所述通用寄存器组的集合16之间或至少一个断言寄存器和一个通用寄存器之间提供了直接连接,没有中间寄存器和/或没有处理单元12的中间功能。数据路径18可以被布置成使得断言寄存器的每个比特被连接或可连接到通用寄存器的一个或多个比特。例如,第一断言寄存器的比特编号3可以被连接或可连接到第一通用寄存器、第二通用寄存器和/或第三通用寄存器的比特编号3。断言寄存器的每个比特分别可以被连接或可连接到与断言寄存器或其数据结构相对应的一个或多个通用寄存器的数据容器内的对应的比特。
如果通用寄存器的比特的大小大于断言寄存器的大小,则断言寄存器的每个比特可以例如被连接或可连接到通用寄存器内的一个以上的比特。例如,假设断言寄存器的大小是16比特并且通用寄存器的大小是32比特,断言寄存器的比特号3可以被连接或可连接到通用寄存器的比特号3和/或比特号19。
图2示出了在一种管理断言的方法的例子的不同阶段中的寄存器的布置。如所示出的,该布置包括一个或多个断言寄存器102。每个断言寄存器102可以包括用于存储断言的一个或多个断言单元。在图2中所示的例子中,示出了包括n个断言P1,P2,...,Pn的断言寄存器102。每个断言可以通过比特或通过比特序列来表示。如图2中所示出的,该布置可以包括通用寄存器104。通用寄存器104可以被布置成存储M-1个集合的附加断言。每个集合的附加断言可以具有与断言寄存器102相同的长度或比特数n。为了这个目的,通用寄存器104可以包括在图2中被示出的多个数据容器106、108、110,每个数据容器表示附加断言的一个集合。
每个数据容器106、108、110可以具有与断言寄存器的数据结构相对应的数据结构。
数据容器106,108,110可以被表示为一行的数据位置,通用寄存器104的行如图2中所示的被布置。通用寄存器104和断言寄存器可以提供n x M数据位置,其中M-1是数据容器或与断言寄存器或其数据结构相对应的通用寄存器104内的行的数目。应注意,在图2中示出最初存储在断言寄存器102内的数据块,其中具有白色背景。最初存储在行106中的数据用水平条纹标记。最初存储在行108内的数据用垂直条纹标记。最初存储在行110内的数据用点标记。如可以看到的,在这个例子中,存储在通用寄存器104中的附加断言数据与断言寄存器102中的断言类似地被布置。可以提供将断言寄存器102的位置P1,...,Pn与通用寄存器104的它们的对应的位置P1,...,Pn连接的数据路径。因此,断言寄存器102的位置P1可以被连接到通用寄存器104的三个位置P1,P2可以被连接或可连接到通用寄存器104的位置P2,等等。在图2的底部,示出了与程序流相对应的时间箭头t。在用时间箭头指示的方向上的程序的流动期间,存储在断言寄存器102内的断言数据位置中的数据可以与通用寄存器104内的断言位置中的数据进行交换。在图2中左侧所示出的时间发展的最初,寄存器102、104的数据位置中的数据对应于其初始状态。随着在图2的中间表示所示出的时间推进,断言交换命令可以被执行,这使断言寄存器102的一个或多个位置中的数据与通用寄存器104的一个或多个位置中的数据进行交换。交换可以由单一指令引起。更特别的是,处理单元的指令集的单一指令可以引起断言寄存器102和通用寄存器104之间的数据交换,其中通用寄存器104可以被识别为交换指令的目标寄存器。
在图2的中间视图中所示出的例子中,存储在断言寄存器102的位置P1中的数据与存储在通用寄存器104的第一行106中的数据进行交换。与此同时,利用相同指令,存储在断言寄存器102的位置P2中的数据与存储在通用寄存器104的第二行108的位置P2中的数据进行交换。通用寄存器104内的不同行可以直接被相同指令寻址,因为它们属于相同的通用寄存器。
程序的编译器或解释器可以被布置成提供措施以追踪当前处于断言寄存器102中的数据源于何处。特别是,编译器可能已经定义了编译的程序的命令结构和数据结构,例如在RAM中,使得当编译的程序运行的时候,它能追踪数据在寄存器的集合102和104中是如何分布的。
在没有由编译的程序提供的数据位置的表格的情况下,编译器在编译期间可以调整程序使得相关断言数据在执行将被编译的程序期间被存储在断言数据位置中。在图2的右边,示出了断言位置的数据的进一步交换。在该交换中,源自通用寄存器104的第二行、当前位于断言寄存器102的位置P2内的数据可以与通用寄存器104的第三行110中的数据进行交换。在交换之前的这种情况下仍然是初始断言数据的断言寄存器102的位置PN中的数据可以与通用寄存器104的第三行110的位置Pn中的数据进行交换。因此,在交换之后,断言寄存器102可以在其第一位置P1中包含源自通用寄存器104的第一行106的位置P1的断言数据。在位置P2中,可以存储有源自通用寄存器104的第三行110的位置P2的数据。在这个例子中,在断言寄存器102的位置P3,...,的Pn-1中的数据在所示出的程序执行期间没有被改变。在断言寄存器102的位置Pn内,可存储有源自通用寄存器104的最初设立的第二行108的数据。如可以看到的,通用寄存器104和断言寄存器102一起提供了断言数据的n x M-矩阵,其中M指定了该断言数据矩阵的行,并且n表示每个行(或矩阵的列)中的断言数。在断言寄存器102中,有效断言可以被存储,其中处理单元可能直接访问命令的条件执行。在通用寄存器中,n x M-1非有效断言可以被保存。除了所示出的交换指令,可以定义了其它事务,如同保存和/或恢复以分别将源自断言寄存器102中的位置的数据保存到通用寄存器的位置中或将来自通用寄存器104中的位置的数据恢复或加载到断言寄存器102中。一个以上的通用寄存器可以被提供,使得对应的指令可以寻址通用寄存器。M可以是2、3、4、5或更大。
在图3中,示出了用于交换断言数据的指令的例子。可以假定提供有若干通用寄存器GR1,...,GRL,其中示出了GR4。断言寄存器102可包括给定数目的断言位置P1,...,Pn。特别是,可以认为断言寄存器102包含因此定义的单一行的断言数据。通用寄存器GR4可包括用于存储断言数据的若干行数据位置,其中,行可以被解释为与断言寄存器相对应的数据容器。特别是,它可包括第一行106、第二行108、第三行110以及第四行112。行可以被定义为能够像存储在断言寄存器102中的数据一样存储数据结构的数据结构。应注意,通用寄存器104的数据位置的布置可以被表示为图3中所示出的连续行,或被表示为如图2上所示出的更像矩阵状结构,并且如何处理这种不依赖图形表示的数据结构对本领域所属技术人员来说是清楚的。
用于在断言寄存器102和如同通用寄存器GR4的通用寄存器之间的交换数据的指令可以在伪代码中被表示为
SWAP[P5,P2,P7],[3,2,1],GR4. (1)
该指令指示处理单元访问通用寄存器GR4并且将存储在断言寄存器102的位置P5处的数据与存储在寄存器GR4的第三行中的位置P5处的数据进行交换,其中第三行用数字3表示。在断言寄存器102的位置P2处的数据要与在通用寄存器的第二行中的位置P2处的数据进行交换,其中第二行用数字2表示。在断言寄存器102的位置P7中存储的数据要与在通用寄存器GR4的第一行中的位置P7处存储的数据进行交换。通常,该指令可能需要指示要交换断言寄存器的哪个数据位置的第一参数列表,在该例子中是[P5,P2,P7]。可以有指示哪个通用寄存器被寻址为交换指令的目标的第二参数或参数列表,例如GR4。第三参数列表可以指示要与对应于通用寄存器内的断言寄存器的哪个数据容器执行交换,例如[3,2,1]。进一步的参数可以被用于指示哪个断言寄存器是交换的基础。第一和第三参数列表可以包括相等数目的参数。第一和/或第三参数列表的参数数目可以在1和n(n是整数)之间发生变化。本领域所属技术人员应清楚,指令的参数可以以任何适当的顺序被布置。指令的参数或参数列表可以例如被存储在存储器中,特别是如同通用寄存器的寄存器。当执行指令的时候,存储器或寄存器可以例如被处理单元访问和/或读取。指令的一个以上的参数或参数列表可以以这种方式被存储和访问。指令可以被定义成当作当执行指令的时候,寄存器或存储器进行访问的一个或多个指针或指示器的参数。
可以从例如高速缓冲存储器或RAM存储器的不同存储器保存和/或恢复通用寄存器。而且,通用寄存器可以实质上延伸到RAM和/或高速缓冲存储器和/或不同寄存器中。不同通用寄存器例如可以被连接以表示用于存储附加断言数据的单一通用寄存器。因此,可以使用基本上无限数目的断言。
根据本发明陈述的方法,可能很容易在硬件方面提供大量的断言,而不必实际上实施像昂贵断言寄存器的所有寄存器。相反,可以提供nx M数据位置的场或矩阵以用于存储断言数据,n被存储在断言寄存器中并且可能积极地用于由处理单元进行的操作的条件执行。M-1x n数据位置可能存储非有效断言数据。对存储在何处、在程序内的给定阶段变为有效的断言数据的管理和监视可以被委托给编译器。利用单一指令,可以使处理单元在程序的执行期间容易地交换断言,而没有大的开销。因此,提供了一种从硬件方面提供大量断言的廉价方法,从而实现了软件的更好性能。
本发明可以在计算机程序或用于在计算机系统上运行的计算机程序产品中被实现,至少包括用于当在诸如计算机系统的可编程装置上运行时执行根据本发明的方法的阶段、或使得可编程的装置能够执行根据本发明的设备或系统的功能的代码部分。
计算机程序是一系列指令,诸如特定应用程序和/或操作系统。计算机程序可以例如包括以下中的一个或多个:子例程、函数、程序、对象方法、对象实现、可执行的应用、小程序、小服务程序、源代码、对象代码、共享库/动态装载库和/或被设计用于在计算机系统上执行的其它指令序列。
计算机程序可以在计算机可读存储介质上被内部地存储或经由计算机可读传输介质传输到计算机系统。所有或一些计算机程序可以被永久地提供在计算机可读介质上、可移除地或远程地耦合到信息处理系统。计算机可读介质可以包括,例如但不限于任何数目的以下:磁存储介质,包括磁盘和磁带存储介质;光学存储介质,诸如光盘介质(例如,CD-ROM、CD-R等等)以及数字视盘存储介质;非易失性存储器存储介质,包括基于半导体的存储器单元,诸如闪速存储器、EEPROM、EPROM、ROM;铁磁数字存储器;MRAM;易失性存储介质,包括寄存器、缓冲器或缓存器、主存储器、等等;以及数据传输介质,包括计算机网络、点对点电信设备、以及载波传输介质,仅举几个例子。
计算机处理通常地包括执行(运行)程序或程序的一部分,当前程序值和状态信息,以及通过操作系统用于管理处理的执行的资源。操作系统(OS)是管理计算机的资源共享以及给程序员提供用于访问那些资源的界面的软件。操作系统处理系统数据和用户输入,以及通过分配和管理任务以及内部系统资源作为对系统的用户和程序的服务来作出响应。
计算机系统可以例如包括至少一个处理单元、关联的存储器和多个输入/输出(I/O)器件。当执行计算机程序时,计算机系统根据计算机程序处理信息并且经由I/O器件产生所得到的输出信息。计算机系统或处理器系统可以用于任何类型的计算设备,诸如具有远程通信能力的移动单元,如同膝上型电脑、智能电话、移动电话、平板计算机、桌上型电脑、工作站和/或服务器或主机计算机。
在前面的说明书中,已经参照本发明实施例的特定例子对本发明进行了描述。然而,将明显的是,在不脱离如所附权利要求中陈述的发明的较宽精神及范围的情况下,可以在其中做出各种修改和变化。
如在此讨论的连接可以是适于例如经由中间设备传输来自或去往相应的节点、单元或设备的信号的任何类型的连接。因此,除非暗示或另外表明,所述连接例如可以是直接连接或间接连接。所述连接可以被图示或描述为涉及单一连接、多个连接、单向连接、或双向连接。然而,不同实施例可以改变连接的实现。例如,可以使用单独单向连接而不是双向连接,并且反之亦然。而且,多个连接可以被替换为连续地或以时间复用方式传输多个信号的单一连接。同样地,携带多个信号的单一连接可以被分离成携带这些信号的子集的各种不同的连接。因此,存在用于传输信号的许多选项。
此外,当将信号、状态比特、或类似的装置分别变为其逻辑真或逻辑假状态时,术语“设置”在本发明中被使用。如果逻辑真状态是逻辑电平“1”,则逻辑假状态是逻辑电平“0”。如果逻辑真状态是逻辑电平“0”,则逻辑假状态是逻辑电平“1”。
本领域技术人员将认识到:逻辑块之间的界限仅仅是说明性的并且替代实施例可以合并逻辑块或电路元件或在各种逻辑块或电路元件上强加替代的分解功能。因此,应了解,在此描述的架构仅仅是示例性的,并且事实上可以实现实现相同功能的很多其它架构。例如,可以设想断言寄存器和/或通用寄存器被实现在处理单元上。
为了实现相同功能的任何组件的布置是有效地“关联”使得所需的功能得以实现。因此,在此组合以实现特定功能的任何两个元件可以被看作彼此“相关联”使得所需的功能得以实现,而不论架构或中间元件。同样地,如此关联的任何两个组件还可以被认为是彼此被“可操作连接”或“可操作耦合”以实现所需的功能。
此外,本领域所属技术人员将认识到以上描述的操作之间的界限只是说明性的。多个操作可以组合成单一的操作,单一的操作可以分布在附加操作中并且可以至少部分地在时间上重叠地执行操作。而且,替代实施例可以包括特定操作的多个例子,并且操作的顺序在各种其它实施例中可以更改。
又如,在一个实施例中,说明的例子可以被实现为位于单一集成电路上的电路或在相同设备内的电路。例如,处理器系统或计算机系统可以被实现为芯片上的系统。替代地,所述例子可以被实现为任何数目的单独集成电路或以合适的方式彼此相联接的单独设备。例如,处理单元和寄存器可以被单独实现。
又例如,例子或其一部分可以以诸如任何合适类型的硬件描述语言被实现为软或代码表示的物理电路,或能够转化成物理电路的逻辑表示。
而且,本发明不限于在非可编程硬件中实现的物理器件或单元,但也可以应用在能够通过根据适当的程序代码操作来执行所需的器件功能的可编程器件或单元中,诸如主机、微型计算机、服务器、工作站、个人计算机、笔记本、个人数字助理、电子游戏、汽车和其它嵌入式系统、手机和各种其它无线器件,在本申请中通常表示“计算机系统”。
然而,其它修改、变化和替代也是可能的。说明书和附图相应地被认为是从说明性的而不是限制性意义。
在权利要求中,放置在括号之间的任何参照符号不得被解释为限制权利要求。单词“包括”不排除除了权利要求中列出的那些之外的其它元件或步骤的存在。此外,如在此使用的词语“一”或“一个”被定义为一个或不止一个。而且,即使当同一权利要求包括介绍性短语“一个或多个”或“至少一个”以及诸如“一”或“一个”的不定冠词时,在权利要求中诸如“至少一个”以及“一个或多个”的介绍性短语的使用也不应该被解释成暗示通过不定冠词“一”或“一个”引入的其它权利要求元素将包括这样介绍的权利要求元素的任何特定权利要求限制成仅包含一个这样的元素的发明。对于定冠词的使用也是如此。除非另有说明,使用诸如“第一”以及“第二”的术语来任意地区分这样的术语描述的元素。因此,这些术语不一定旨在指示这样的元素的时间或其它优先次序。在相互不同的权利要求中记载某些措施的事实并不指示这些措施的组合不能被用于获取优势。
Claims (12)
1.一种处理器系统(10)包括:
带有预定指令集的处理单元(12);
至少一个断言寄存器(14),所述断言寄存器(14)包括被布置在断言数据结构中的N个断言数据位置(P1,P2,...,Pn),每个断言数据位置(P1,P2,...,Pn)适于存储断言数据;
至少一个通用寄存器(16),所述通用寄存器(16)包括附加断言数据位置,所述附加断言数据位置被布置在M-1个附加断言数据容器中,其中每个附加断言数据容器的数据结构对应于所述断言数据结构,其中每个附加断言数据位置适于存储附加断言数据;
数据路径(18),用于在所述至少一个断言寄存器(14)和所述通用寄存器(16)之间传输数据,其中所述至少一个断言存储位置(P1,P2,...,Pn)经由所述数据路径(18)被连接或可连接到至少一个对应的附加断言数据位置;
其中所述处理器系统(10)适于执行所述指令集的断言交换指令,以经由所述数据路径(18)将在第一断言数据位置(P1,P2,...,Pn)中的断言数据与在第一附加断言数据容器中的对应附加断言数据位置中的数据进行交换,以及经由所述数据路径(18)将在第二断言存储位置(P1,P2,...,Pn)中的断言数据与在第二附加断言数据容器中的对应附加断言数据位置中的数据进行交换。
2.根据权利要求1所述的处理器系统,其中所述断言交换指令被定义成将来自多于两个断言存储位置的断言数据与来自两个或更多的对应附加断言数据位置的数据进行交换。
3.根据权利要求1或2所述的处理器系统,其中每个断言存储位置适于存储一个断言比特。
4.根据权利要求1或2所述的处理器系统,其中所述断言数据存储位置(P1,P2,...,Pn)大小相等。
5.根据权利要求1或2所述的处理器系统,其中所述处理器系统(10)进一步适于在所述处理单元(12)的时钟周期内执行所述断言交换指令。
6.根据权利要求1所述的处理器系统,其中一个以上的通用寄存器(16)通过所述断言交换指令是可寻址的。
7.根据权利要求1所述的处理器系统,其中一个以上的断言寄存器(14)通过所述断言交换指令是可寻址的。
8.根据权利要求1或2所述的处理器系统(10),其中每个断言数据位置(P1,P2,...,Pn)经由所述数据路径(18)被连接或可连接到一个或多个通用寄存器(16)的至少一个对应的附加断言数据位置。
9.根据权利要求1或2所述的处理器系统(10),其中每个附加断言数据位置经由所述数据路径(18)被连接或可连接到所述对应的断言数据位置(P1,P2,...,Pn)。
10.一种计算机系统,所述计算机系统带有根据权利要求1或2所述的处理器系统。
11.一种管理处理器系统的断言数据的方法,所述处理器系统特别是根据权利要求1或2所述的处理器系统,包括
识别断言交换指令;以及
将关于交换数据的起源和/或交换数据的目标的数据存储在存储器中。
12.根据权利要求11所述的方法,所述方法在编译软件以及使用一个或多个断言期间由编译器执行。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/IB2011/051285 WO2012131426A1 (en) | 2011-03-25 | 2011-03-25 | Processor system with predicate register, computer system, method for managing predicates and computer program product |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103460180A CN103460180A (zh) | 2013-12-18 |
CN103460180B true CN103460180B (zh) | 2017-04-26 |
Family
ID=46929547
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180069838.0A Expired - Fee Related CN103460180B (zh) | 2011-03-25 | 2011-03-25 | 带有断言寄存器的处理器系统、计算机系统和用于管理断言的方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9606802B2 (zh) |
EP (1) | EP2689325B1 (zh) |
CN (1) | CN103460180B (zh) |
WO (1) | WO2012131426A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9304771B2 (en) * | 2013-02-13 | 2016-04-05 | International Business Machines Corporation | Indirect instruction predication |
US10691691B2 (en) * | 2016-09-10 | 2020-06-23 | Sap Se | Iterative evaluation of data through SIMD processor registers |
CN107301151B (zh) * | 2017-07-28 | 2020-07-21 | 苏州浪潮智能科技有限公司 | 一种主板以及服务器 |
CN114489791B (zh) * | 2021-01-27 | 2023-03-24 | 沐曦集成电路(上海)有限公司 | 处理器装置及其指令执行方法、计算设备 |
CN114510271B (zh) * | 2022-02-09 | 2023-08-15 | 海飞科(南京)信息技术有限公司 | 用于在单指令多线程计算系统中加载数据的方法和装置 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2229832B (en) * | 1989-03-30 | 1993-04-07 | Intel Corp | Byte swap instruction for memory format conversion within a microprocessor |
GB2286265B (en) * | 1994-01-26 | 1998-02-18 | Advanced Risc Mach Ltd | selectable processing registers |
US5859999A (en) | 1996-10-03 | 1999-01-12 | Idea Corporation | System for restoring predicate registers via a mask having at least a single bit corresponding to a plurality of registers |
US6175892B1 (en) * | 1998-06-19 | 2001-01-16 | Hitachi America. Ltd. | Registers and methods for accessing registers for use in a single instruction multiple data system |
US6282631B1 (en) * | 1998-12-23 | 2001-08-28 | National Semiconductor Corporation | Programmable RISC-DSP architecture |
WO2001086431A1 (en) * | 2000-05-05 | 2001-11-15 | Lee Ruby B | A method and system for performing subword permutation instructions for use in two-dimensional multimedia processing |
US6804771B1 (en) | 2000-07-25 | 2004-10-12 | University Of Washington | Processor with register file accessible by row column to achieve data array transposition |
US7228402B2 (en) * | 2002-01-02 | 2007-06-05 | Intel Corporation | Predicate register file write by an instruction with a pending instruction having data dependency |
US7185150B1 (en) * | 2002-09-20 | 2007-02-27 | University Of Notre Dame Du Lac | Architectures for self-contained, mobile, memory programming |
US7269719B2 (en) * | 2002-10-30 | 2007-09-11 | Stmicroelectronics, Inc. | Predicated execution using operand predicates |
US7308682B2 (en) | 2003-04-25 | 2007-12-11 | Intel Corporation | Method and apparatus for recovering data values in dynamic runtime systems |
US7404067B2 (en) | 2003-09-08 | 2008-07-22 | Intel Corporation | Method and apparatus for efficient utilization for prescient instruction prefetch |
US7194606B2 (en) * | 2004-09-28 | 2007-03-20 | Hewlett-Packard Development Company, L.P. | Method and apparatus for using predicates in a processing device |
US7676647B2 (en) * | 2006-08-18 | 2010-03-09 | Qualcomm Incorporated | System and method of processing data using scalar/vector instructions |
US20080244238A1 (en) * | 2006-09-01 | 2008-10-02 | Bogdan Mitu | Stream processing accelerator |
US20080082798A1 (en) | 2006-09-29 | 2008-04-03 | 3Dlabs Inc. Ltd., | Flexible Microprocessor Register File |
-
2011
- 2011-03-25 EP EP11862438.6A patent/EP2689325B1/en not_active Not-in-force
- 2011-03-25 US US14/006,034 patent/US9606802B2/en active Active
- 2011-03-25 WO PCT/IB2011/051285 patent/WO2012131426A1/en active Application Filing
- 2011-03-25 CN CN201180069838.0A patent/CN103460180B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
WO2012131426A1 (en) | 2012-10-04 |
US9606802B2 (en) | 2017-03-28 |
US20140013087A1 (en) | 2014-01-09 |
CN103460180A (zh) | 2013-12-18 |
EP2689325A1 (en) | 2014-01-29 |
EP2689325B1 (en) | 2018-01-17 |
EP2689325A4 (en) | 2014-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109643233B (zh) | 具有带读取和读取/前进操作数编码的流引擎的数据处理设备 | |
CN104756090B (zh) | 提供扩展的缓存替换状态信息 | |
CN101814018B (zh) | 事务存储器(tm)系统中的读和写监控属性 | |
CN106716361B (zh) | 用于运行时例程冗余跟踪的编译器高速缓存 | |
CN102947808B (zh) | 一种有利于存储器访问的系统及方法 | |
CN103562892B (zh) | 配置存储级内存命令的系统和方法 | |
CN104049948B (zh) | 指令仿真处理器、方法和系统 | |
CN102906702B (zh) | 对适配器的地址空间的访客端访问 | |
CN108268282A (zh) | 用以检查和存储对存储器地址是否在持久存储器中的指示的处理器、方法、系统和指令 | |
CN104025067B (zh) | 具有由向量冲突指令和置换指令共享的全连接互连的处理器 | |
CN102483840B (zh) | 向处理器核分配高速缓冲存储器关联性 | |
CN108351830A (zh) | 用于存储器损坏检测的硬件装置和方法 | |
CN108205448B (zh) | 具有在每个维度上可选择的多维循环寻址的流引擎 | |
US20080250227A1 (en) | General Purpose Multiprocessor Programming Apparatus And Method | |
CN104823172B (zh) | 实时指令跟踪处理器、方法以及系统 | |
CN103460180B (zh) | 带有断言寄存器的处理器系统、计算机系统和用于管理断言的方法 | |
CN108475194A (zh) | 在片上网络架构中的寄存器通信 | |
CN106716434A (zh) | 具有独立的用户域与管理程序域的存储器保护密钥架构 | |
CN102906694B (zh) | 用于与适配器进行通信的加载指令的方法和系统 | |
US10942741B2 (en) | Storage organization for transposing a matrix using a streaming engine | |
CN107667358A (zh) | 用于在多个拓扑结构中使用的相干结构互连 | |
CN103562874B (zh) | 解除配置存储级内存命令 | |
CN105051680A (zh) | 使用硬件指针的simd核心中的发散分支解决方案 | |
CN109564552A (zh) | 增强基于每页当前特权等级的存储器访问许可 | |
CN103777923A (zh) | Dma向量缓冲区 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: Texas in the United States Patentee after: NXP America Co Ltd Address before: Texas in the United States Patentee before: Fisical Semiconductor Inc. |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170426 Termination date: 20190325 |