CN104008021A - 针对多数据体系结构的精确的异常信号发送 - Google Patents
针对多数据体系结构的精确的异常信号发送 Download PDFInfo
- Publication number
- CN104008021A CN104008021A CN201410102598.5A CN201410102598A CN104008021A CN 104008021 A CN104008021 A CN 104008021A CN 201410102598 A CN201410102598 A CN 201410102598A CN 104008021 A CN104008021 A CN 104008021A
- Authority
- CN
- China
- Prior art keywords
- processor
- abnormal
- element set
- instruction
- input
- 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
Links
- 230000011664 signaling Effects 0.000 title claims description 13
- 239000013598 vector Substances 0.000 claims abstract description 50
- 238000000034 method Methods 0.000 claims abstract description 39
- 238000012545 processing Methods 0.000 claims abstract description 27
- 230000002159 abnormal effect Effects 0.000 claims description 50
- 238000004148 unit process Methods 0.000 claims description 13
- 230000008569 process Effects 0.000 claims description 6
- 230000005856 abnormality Effects 0.000 claims description 5
- 230000015654 memory Effects 0.000 description 19
- 230000006870 function Effects 0.000 description 12
- 230000008901 benefit Effects 0.000 description 10
- 238000007667 floating Methods 0.000 description 7
- 238000007726 management method Methods 0.000 description 7
- 230000000712 assembly Effects 0.000 description 4
- 238000000429 assembly Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000014616 translation Effects 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000008521 reorganization Effects 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 1
- 238000012360 testing method 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
-
- 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/3001—Arithmetic 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/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Abstract
本申请涉及针对多数据体系结构的精确的异常信号发送。提供了利用多数据处理单元处理器对多个元素执行一个或多个操作的方法和***。处理器接收包含多个元素的输入矢量。所述处理器判断对第一元素执行第一操作是否会导致异常,如果是,则向输出寄存器中存储的输出矢量的第一部分写入由所述第一操作导致的异常的指示。对第二元素可以执行第二操作,第二操作的结果被写入存储在输出寄存器中的输出矢量的第二部分。
Description
技术领域
本发明通常涉及利用多数据处理单元处理器对一个或多个元素执行一个或多个操作的***和方法。
背景技术
多数据处理单元处理器,例如单指令多数据(SIMD)或多指令多数据(MIMD),接收多数据输入,对输入数据进行操作,并将操作结果输出至例如输出寄存器。例如,这种处理器可能接收输入a,b,c和d,并将它们加在一起以生成a+b和c+d的结果。有时,对一个或多个数据输入执行指定的操作对于处理器来说是有问题的,会产生异常。例如,当所述指定的操作并非用于处理器对所提供的输入执行的操作时会发生这种情况。在这种情景中,处理器将无法执行该操作并会产生异常。
当出现异常时,典型地没有结果被写入输出寄存器中,并且利用软件模拟技术由异常处理机处理异常,例如,对数据输入执行操作或者以其他的方式来处理异常。这种方法的问题在于其可能较慢并且耗费资源。而且,在许多实例中,当执行操作时只有少数的多数据输入会导致异常;当执行操作时,大多数的数据输入并不会导致异常。然而,当异常处理机不能辨别哪种数据输入导致异常时,对异常的处理典型地也会延迟对与所述异常没有关联的数据的处理。
发明内容
因此,需要允许更精确的异常信号发送的***和方法,从而异常处理机只需处理与有效异常相关联的数据,同时允许未导致异常的数据输入能够及时地得到一个或多个处理单元的处理。根据本发明的实施例,提供了一种利用多数据处理单元处理器对多个元素执行一个或多个操作的方法。处理器接收包含多个元素的输入矢量。所述处理器确定对第一元素执行第一操作是否会导致异常,如果是,向输出寄存器中存储的输出矢量的第一部分写入异常由第一操作导致的指示。可以对第二元素执行第二操作,第二操作的结果被写入输出寄存器中存储的输出矢量的第二部分。
本发明的实施例包括多数据处理单元处理器。该***包括输入寄存器、输出寄存器和多数据处理单元处理器。所述输入寄存器可以被配置为存储包含多个元素的输入矢量。所述输出寄存器可以被配置为存储多个操作的结果。所述处理器被配置为从所述输入寄存器接收输入矢量,确定对第一元素执行第一操作将导致异常,并向所述输出寄存器中存储的输出矢量的第一部分输出由第一操作导致的异常的指示。此外,所述处理器可以被配置为对第二元素执行第二操作,并向所述输出寄存器中存储的输出矢量的第二部分输出第二操作的结果。
本发明的一些实施例包括利用多数据处理单元处理器对多个元素执行操作的方法。所述方法包括接收包含第一和第二元素的输入矢量,并确定对第一元素执行第一操作将导致异常。在这种情形中,所述方法继续通过向输出寄存器中存储的输出矢量的第一部分写入由第一操作导致的异常的指示。此外,所述方法包括对第二元素执行第二操作,并向所述输出寄存器中存储的输出矢量的第二部分写入第二操作的结果。
附图说明
合并于此并组成说明书一部分的附图和文字描述部分共同阐述了本发明,还用于解释本发明的原理,使相关领域的技术人员能够制造和使用本发明。
图1描绘了根据本发明的不同实施例的多数据处理单元***。
图2a和2b描绘了根据本发明的不同实施例的多数据操作。
图3阐述了根据本发明的不同实施例的处理数据元素的方法。
图4阐述了根据本发明的不同实施例的处理数据元素的方法。
图5阐述了根据本发明的不同实施例的处理数据元素的方法。
图6描绘了根据本发明的不同实施例的处理器结构。
通过下面结合附图对本发明实施例的详细描述,本发明的特点和优势将更加清楚,在全部附图中,相同的参考符号标识相同的元件。在所述附图中,相同的参考数字通常指示相同、功能类似、和/或结构类似的元件。由相应参考数字最左边的数字指示元件第一次出现的附图。
具体实施方式
下面对本发明实施例的详细描述将参照图示了示范性实施例的附图进行。此处描述的实施例涉及低功率多处理器。可能存在其他的实施例,在该描述的精神和范围内可以对实施例进行修改。因此,详细描述并不意在限制下面描述的实施例。
相关领域技术人员应该清楚的是,可以以附图中图示的软件、硬件、固件和/或实体的多种不同的实施例来实现下面描述的实施例。利用硬件的专门控制来实现实施例的任何实际软件代码并非用于限制该描述。因此,在已知此处提供的细节程度的情况下,所描述的实施例的操作行为应按照可能存在对所述实施例的修改和变体来理解。
图1描绘了根据本发明的实施例能够提供精确异常处理的***100。***100包括处理器104、输入A102a和输入B102b(此处统称为输入102)。处理器104可以向输出寄存器106输出操作结果。指令寄存器108可以包含指示所述处理器对输入102中包含的输入数据元素执行什么操作的一个或多个指令。
输入102a和102b每个都可以包含一个或多个能够存储一个或多个输入矢量的寄存器。此外,根据一些实施例,可以向所述处理器提供存储在单独寄存器上的单独输入矢量102。输入矢量每个都可以包括多个由处理器处理的数据元素。例如,处理器104可以对一个或多个元素的集合执行操作以产生结果。举个例子,假定输入102包含元素x和y。处理器104可以被配置为对元素x和y执行操作f并产生结果z,从而z=f(x,y)。然而,处理器104可以被配置为对来自输入102的任意数量的元素执行操作。
根据一些实施例,处理器104可以包含多数据处理单元处理器,例如单指令多数据(SIMD)处理器。此外,处理器104可以包含多指令多数据(MIMD)处理器。处理器可以被配置为基于指令输入108执行多种不同的操作(例如:加、减、除、乘、移位等等)。处理器也可以被配置为向输出寄存器106输出操作结果。
根据不同的实施例,处理器104可以被配置为接收控制所述处理器是否以不发信号的异常模式操作的控制信号110。当所述处理器不以不发信号的异常模式操作时,处理器104可以被认为是以“正常”模式操作。也就是,当对任何元素的操作产生异常时,所述处理器发出信号通知异常并且异常处理机处理对所有元素的操作。然而,当处理器104以不发信号的异常模式操作时,所述处理器不发送信号通知已经发生异常,而是仅为导致异常的特定操作在输出寄存器中指示异常,同时允许对其他元素的操作继续执行并将结果写入输出寄存器。
图2a图示了处理器104执行的操作。例如,如图所示,处理器104接收包含元素A0、A1、A2和A3的第一输入矢量202。所述矢量可以具有任意长度并可以存储在寄存器中。举个例子,如果第一输入矢量202存储在64位寄存器中,则每个元素A0、A1、A2和A3包含16位。类似于第一输入矢量202,第二输入矢量206也可以包含多个元素B0、B1、B2和B3。此外,第二输入矢量206可以存储在任意长度的寄存器中,而且不需要与存储第一输入矢量202的寄存器的长度相同。
根据本发明的实施例,处理器104可以被配置为对输入矢量202和206中的元素执行操作204。操作204可以由输入指令108定义。在一些实施例中(例如,在处理器104是SIMD处理器的实施例中),将只有一条指令并且在对每个输入元素对将执行同样的操作。图2a描述了这种情形,其中每个元素对(即A0和B0,A1和B1等)被加在一起以获得结果矢量208。可以将输出矢量208组织为多个结果(例如:208a、208b、208c和208d),每个对应于对一个或多个元素执行操作的结果。根据其他实施例(例如,MIMD实施例),处理器104可以接收多条指令或一个指令矢量,并且对不同的元素对可以执行不同的操作。
和输入矢量202和206一样,结果矢量208可以存储在诸如输出寄存器106的寄存器中。虽然输出寄存器可以具有任意尺寸,但优选足够大的尺寸以在任何或大多数环境下防止溢出。例如,根据本发明的观点,输出寄存器可以大于输入矢量202和206中的任何一个。
图2b图示了与图2a的描述类似的情形,但是其中在一个元素对执行的操作会导致一个异常。根据实施例,对输入矢量202和206执行操作的处理器104可以按不发信号的异常模式运行。如图2b所示,输入矢量202和206中包含的元素按照操作204的指定被加在一起。然而,在这种情形中,将A2和B2相加会导致异常。然而,剩余的结果不会导致异常并且被写入它们的相应位置208a、208b和208d的输出矢量208的相应结果部分。然而,代替结果,将A2和B2相加导致异常的指示写入位于相应位置208c的输出矢量。异常指示可以包含标识所发生的异常的信息(例如,异常代码)以及关于导致异常的元素的信息。
图3图示了根据本发明实施例的处理数据的方法300。在步骤302,处理器可以接收一个或多个输入矢量形式的输入元素,所述输入矢量每个都包含多个元素。此外,所述处理器可以接收一个或多个指示将对输入元素执行的操作的输入指令。根据一些实施例,所述输入矢量可以存储在一个或多个输入寄存器中。
在步骤304,所述处理器确定对第一元素或第一元素集执行操作将导致异常。在步骤306,将对第一元素或元素集执行操作将导致异常的指示输出到输出寄存器中的相应位置。在步骤308,可以对第二元素执行操作,并且在步骤310,对第二元素的操作的结果被存储在输出寄存器的相应位置。根据一些实施例,步骤304和306可以与步骤308和310并行执行。
图4图示了根据本发明实施例在处理器中使用的处理数据的方法400。在步骤402,所述处理器接收输入元素。根据不同的实施例,所述输入元素可以是一个或多个输入矢量的一部分,并存储在一个或多个输入寄存器中。此外,所述处理器可以接收一个或多个指示所述处理器将要对所述元素执行的操作的输入指令。
在步骤404,所述处理器判断是否已经启用不发信号的异常模式。根据不同的实施例,可以通过对在处理器中的控制位进行设置或解除设置来启用或禁用所述模式。如果所述模式被禁用,则在步骤418,所述处理器根据正常的异常发信号方法对所述元素执行一个或多个操作。也就是,当发生异常时,所述处理器发信号通知异常,并允许异常处理机对所有的输入元素执行一个或多个操作,而不管哪个元素或元素集导致所述异常。
如果在步骤404确定不发信号的模式被启用,则在步骤406,所述处理器判断元素或元素集是否将产生异常。如果所述元素或元素集将产生异常,则在步骤408,所述处理器产生异常的指示,并在步骤410向输出寄存器输出指示。根据实施例,所述指示可以标识导致异常的元素和操作。如果确定所述元素或元素集将不会导致异常,则在步骤412执行所述操作,并且在步骤414,将对一个或多个元素的操作的结果输出到输出寄存器。在步骤416,如果需要考虑更多的元素,所述方法返回到步骤406,否则在420结束。虽然图4描述了对于每个元素或元素集,顺序执行步骤406-414,但是对于所述元素或元素集的每一个都可以同时执行这些步骤。
图5图示了根据本发明的实施例标识在输出矢量中已经发生的异常的方法500。在步骤502,从所述输出寄存器或矢量中读取输出数据元素。然后可以判断所述数据元素是否包含操作的结果或异常的指示。在步骤504,如果所述结果是异常的指示,则在步骤506,根据所述指示可以确定适当的异常信息。例如,所述指示可以包含异常代码、关于一个或多个元素的信息以及导致异常的操作。在步骤508,可以将涉及异常的相关信息定送到异常处理机,从而它可以通过例如软件模拟处理异常。在步骤510,所述处理判断是否已经读完所有输出数据。如果否,则所述方法500返回到步骤502,并对输出寄存器中的下一个元素重复进行。然而,如果在步骤510,所述方法500确定已经读完所有的输出元素,则在步骤512所述处理结束。
可以理解,通过或结合启用不同软件例程、模块、元素或指令的功能的硬件组件,可以实现不同的实施例或使其便于实现。下面参照图6进一步描述示例硬件组件,例如,包括执行单元602、读取单元604、浮点单元606、加载/存储单元608、存储器管理单元(MMU)610、指令高速缓冲存储器612、数据高速缓冲存储器614、总线接口单元616、乘/除单元(MDU)620、协处理器622、通用寄存器624、高速暂存630和核扩展单元634的处理器核600。
虽然上面已经描述了本发明的不同实施例,应该理解,这些实施例是通过示例的方式提出而并非用于限制。对于相关计算机领域的技术人员来说清楚的是,在不背离本发明的精神和范围的情况下,可以在形式和细节上进行不同的变化。此外,应该理解,此处提供的本发明的详细描述,并非概述和摘要部分,旨在用于解释权利要求。正如发明人所预期的那样,所述概述和摘要部分可以阐述本发明的一个或多个但并非所有的示范性实施例。
例如,除了利用硬件(例如,位于中央处理单元(“CPU”)、微处理器、微控制器、数字信号处理器、处理器核、片上***(“SOC”)、或任何其他可编程的或电子设备的内部或与其相耦合)实现,也可以采用例如放置在被配置用于存储软件的计算机可用(例如可读取)介质中的软件(例如,以诸如源、目标或机器语言等任何形式放置的计算机可读代码、程序代码、指令和/或数据)来实现。这样的软件例如可以启用功能、制造、建模、仿真、描述、和/或对此处描述的设备和方法进行的测试。例如,这可以通过使用普通的编程语言(例如,C、C++),GDSII数据库,包括Verilog HDL、VHDL的硬件描述语言(HDL),SystemC寄存器传输级(RTL)等等,或者其他可用程序,数据库,和/或电路(即示意)捕获工具来完成。实施例可以放置在任何已知的非暂时性计算机可用介质中,包括半导体盘、磁盘、光盘(例如,CD-ROM、DVD-ROM等)。
可以理解,此处描述的设备和方法的实施例可以被包括在半导体知识产权核中,例如微处理器核(例如,用HDL体现)并且在集成电路的生产中转化为硬件。此外,此处描述的设备和方法可以体现为硬件和软件的组合。因此,不应采用任何上面描述的示范性实施例来限制本发明,而应仅依照下列权利要求和它们的等价物来进行界定。应该理解,利用硬件和软件组合的实施例可以通过或结合启用各种软件例程、模块、元素或指令的功能的硬件组件来实现或便于其实现,例如,上面参照图1提及的组件。
图6是根据本发明的一个实施例用于实现共享寄存器池的示范性处理器核600的示意图。处理器核600是示范性处理器,旨在说明而并非用于限制。本领域的技术人员应该认识到,根据本发明的实施例,有许多采用ISA的处理器实现方式可以使用。
如图6所示,处理器核600包括执行单元602、读取单元604、浮点单元606、加载/存储单元608、存储器管理单元(MMU)610、指令高速缓冲存储器612、数据高速缓冲存储器614、总线接口单元616、乘/除单元(MDU)620、协处理器622、通用寄存器624、高速暂存630和核扩展单元634。虽然此处将处理器核600描述为包括几个独立的组件,但是这些组件中的许多组件是可选组件,并不会出现在本发明的每个实施例中,或者例如组件可以进行组合,从而两个组件的功能存在于单个组件中。也可以增加额外的组件。因此,图6中显示的独立组件是解释性的而非旨在限制本发明。
执行单元602优选地利用单周期算术逻辑单元操作(例如,逻辑的、移位、加、减等)实现加载-存储(RISC)结构。执行单元602与读取单元604、浮点单元606、加载/存储单元608、乘-除单元620、协处理器622、通用寄存器624、和核扩展单元634相连接。
读取单元604负责向执行单元602提供指令。在一个实施例中,读取单元604包括指令高速缓冲存储器612的控制逻辑、重新编码压缩格式指令的重新编码器、动态分支预测和从执行单元602解耦合读取单元604的操作的指令缓冲器。读取单元604与执行单元602、存储器管理单元610、指令高速缓冲存储器612和总线接口单元616相连接。
浮点单元606与执行单元602相连接并对非整数数据进行操作。浮点单元606包括浮点寄存器618。在一个实施例中,浮点寄存器618可以位于浮点单元606的外部。浮点寄存器618可以是用于浮点单元606执行浮点操作的32位或64位寄存器。典型的浮点操作是算术操作,例如加法和乘法,也可以包括指数或三角计算。
加载/存储单元608负责数据加载和存储,并且包括数据高速缓冲存储器控制逻辑。加载/存储单元608与数据高速缓冲存储器614和高速暂存630和/或填充缓冲器(未显示)相连接。加载/存储单元608也与存储器管理单元610和总线接口单元616相连接。
存储器管理单元610将虚拟地址转换为物理地址以用于存储器访问。在一个实施例中,存储器管理单元610包括转换后备缓冲器(TLB),并且可以包括单独的指令TLB和单独的数据TLB。存储器管理单元610与读取单元604和加载/存储单元608相连接。
指令高速缓冲存储器612是组织成多路组联或直接相联高速缓冲存储器的片上存储器阵列,例如,2路组联高速缓冲存储器、4路组联高速缓冲存储器、8路组联高速缓冲存储器等等。指令高速缓冲存储器612优选地进行虚拟索引和物理标记,从而允许虚拟-物理地址转换与高速缓冲存储器的访问并行发生。在一个实施例中,所述标记除了物理地址位还包括有效位和可选的奇偶位。指令高速缓冲存储器612与读取单元604相连接。
数据高速缓冲存储器614也是片上存储器阵列。数据高速缓冲存储器614优选地进行虚拟索引和物理标记。在一个实施例中,所述标记除了物理地址位还包括有效位和可选的奇偶位。数据高速缓冲存储器614与加载/存储单元608相连接。
总线接口单元616为处理器核心600控制外部接口信号。在一个实施例中,总线接口单元616包括崩溃写缓冲,用于合并连续写入业务并从未被高速缓存的存储中收集写操作。
乘/除单元620为处理器核600执行乘法和除法操作。在一个实施例中,乘/除单元620优选地包括管线乘法器、累加寄存器(累加器)626、乘法和除法状态机,以及执行例如乘法、乘加、和除法功能所需的所有控制逻辑。如图6所示,乘/除单元620与执行单元602相连接。累加器626用于存储乘/除单元620执行的算术结果。
协处理器622为处理器核600执行各种开销(overhead)的功能。在一个实施例中,协处理器622负责虚拟-物理地址转换、执行高速缓冲存储器协议、异常处理、操作模式选择、以及启用/禁用中断功能。协处理器622与执行单元602相连接。协处理器622包括状态寄存器628和普通存储器638。状态寄存器628通常用于保存协处理器622使用的变量。状态寄存器628也可以包括通常为处理器核600保存状态信息的寄存器。例如,状态寄存器628可以包括状况寄存器。普通存储器638可以用于保存例如计算过程中产生的系数等临时值。在一个实施例中,普通存储器638是采取寄存器文件的形式。
通用寄存器624典型地是用于标量整数操作和地址计算的32位或64位寄存器。在一个实施例中,通用寄存器624是执行单元602的一部分。可选地,例如在中断和/或异常处理的过程中,可以包括一个或多个额外的寄存器文件集,例如影子寄存器文件集,以使内容交换开销最小化。
高速暂存630是存储或向加载/存储单元608提供数据的存储器。当处理器核600运行时,可以编程的方式预先配置或配置高速暂存的一个或多个特定地址区域。地址区域可以是例如通过基址和区域大小指定的连续地址范围。当使用基址和区域大小时,所述基址指定地址区域的起点,并且例如将区域大小加到基址上来指定地址区域的终点。典型地,一旦为高速暂存指定地址区域,将从所述高速暂存检索对应于所述指定地址区域的所有数据。
用户定义指令(UDI)单元634使得处理器核600能够适合特定的应用程序。UDI634允许用户定义和增加它们自己的可以对数据进行操作的指令,所述数据例如存储在通用寄存器624中。在保持工业标准结构所具有的性能时,UDI634允许用户增加新的性能。UDI634包括可以用于存储用户增加的指令和计算过程中产生的变量的UDI存储器636。在一个实施例中,UDI存储器636是采取寄存器文件的形式。
此处描述的实施例涉及共享寄存器池。正如发明人所预期的那样,所述概述和摘要部分可以提出本发明的一个或多个但并非所有的示范性实施例,因此并不期望以任何方式限制本发明和权利要求。
借助于阐明实现指定功能及其关系的功能构造块,上面已经描述了这里的实施例。为便于描述,此处已经任意地定义了这些功能构造块的边界。只要能够适当地执行所指定的功能及其关系,可以定义替换的边界。
前面对特定实施例的描述充分地展现了本发明的全面本质,从而在无需过度实验、不背离本发明一般概念的情况下,其他人可以通过应用本领域的技术知识,容易地对这些特定实施例进行修改和/或为不同的应用程序改编这些特定实施例。因此,基于此处提供的教导和指导,旨在将这些改编和修改包含在所披露实施例的等价物的意图和范围之内。可以理解,此处的措辞或术语是用于描述而并非限制,从而应由熟练技术人员根据教导和指导来解释本说明书的术语或措辞。
Claims (20)
1.一种利用多数据处理单元处理器对多个元素执行一个或多个操作的方法,包括:
接收一个或多个输入矢量,其中所述一个或多个输入矢量包含第一元素集和第二元素集;
确定对第一元素集执行第一操作将导致异常;
向输出矢量的第一元素写入由第一操作导致的异常的指示;
对第二元素集执行第二操作;并且
向所述输出矢量的第二元素写入第二操作的结果。
2.根据权利要求1所述的方法,进一步包括确定在处理器中启用不发信号的异常模式。
3.根据权利要求1所述的方法,其中所述一个或多个输入矢量包含第三元素集。
4.根据权利要求3所述的方法,进一步包括确定对第三元素集执行第三操作将导致异常,并将所述异常的指示写入输出矢量的第三元素。
5.根据权利要求1所述的方法,其中所述第一操作和第二操作是相同的操作。
6.根据权利要求1所述的方法,其中所述多数据处理单元处理器是单输入多数据(SIMD)处理器。
7.根据权利要求1所述的方法,其中所述多数据处理单元处理器是多输入多数据(MIMD)处理器。
8.根据权利要求1所述的方法,其中所述指示发信号通知异常处理机处理所述异常。
9.根据权利要求1所述的方法,其中第一元素集和第二元素集中的每一个都包含单个元素。
10.根据权利要求1所述的方法,其中第一元素集和第二元素集中的每一个都包含多个元素。
11.一种多数据处理元素***,包括:
输入寄存器,被配置用于存储一个或多个输入矢量,其中所述一个或多个输入矢量包含第一元素集和第二元素集;
输出寄存器,被配置用于存储多个操作的结果;和
多数据处理单元处理器,被配置用于:
从输入寄存器接收一个或多个输入矢量,
确定对第一元素集执行第一操作将导致异常,并且向输出寄存器的第一元素输出由第一操作导致的异常的指示,以及
对第二元素集执行第二操作并且向输出寄存器的第二元素输出所述操作的结果。
12.根据权利要求11所述的***,其中所述处理器进一步被配置为确定在所述处理器中启用不发信号的异常模式。
13.根据权利要求11所述的***,其中所述一个或多个输入矢量进一步包含第三元素集。
14.根据权利要求13所述的***,其中所述处理器进一步被配置为确定对第三元素集执行第三操作将导致异常,并向输出寄存器的第三元素输出异常的指示。
15.根据权利要求11所述的***,其中所述第一操作和第二操作是相同的操作。
16.根据权利要求11所述的***,其中所述多数据处理单元处理器是单输入多数据(SIMD)处理器。
17.根据权利要求11所述的***,其中所述多数据处理单元处理器是多输入多数据(MIMD)处理器。
18.根据权利要求11所述的***,其中所述指示被配置为发信号通知异常处理机处理所述异常。
19.根据权利要求11所述的***,其中第一元素集和第二元素集中的每一个都包含单个元素。
20.根据权利要求11所述的***,其中第一元素集和第二元素集中的每一个都包含多个元素。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/773,818 | 2013-02-22 | ||
US13/773,818 US20140244987A1 (en) | 2013-02-22 | 2013-02-22 | Precision Exception Signaling for Multiple Data Architecture |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104008021A true CN104008021A (zh) | 2014-08-27 |
Family
ID=50482540
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410102598.5A Pending CN104008021A (zh) | 2013-02-22 | 2014-02-21 | 针对多数据体系结构的精确的异常信号发送 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20140244987A1 (zh) |
CN (1) | CN104008021A (zh) |
DE (1) | DE102014002510A1 (zh) |
GB (1) | GB2513448A (zh) |
RU (1) | RU2014106624A (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2543303B (en) | 2015-10-14 | 2017-12-27 | Advanced Risc Mach Ltd | Vector data transfer instruction |
GB2543302B (en) * | 2015-10-14 | 2018-03-21 | Advanced Risc Mach Ltd | Vector load instruction |
GB2543554B (en) | 2015-10-22 | 2019-01-23 | Advanced Risc Mach Ltd | Handling exceptional conditions for vector arithmetic instruction |
GB2546510B (en) | 2016-01-20 | 2018-09-26 | Advanced Risc Mach Ltd | Vector atomic memory update instruction |
US10216515B2 (en) * | 2016-10-18 | 2019-02-26 | Oracle International Corporation | Processor load using a bit vector to calculate effective address |
US20190065202A1 (en) | 2017-08-31 | 2019-02-28 | MIPS Tech, LLC | Pointer-size controlled instruction processing |
US11080062B2 (en) | 2019-01-12 | 2021-08-03 | MIPS Tech, LLC | Address manipulation using indices and tags |
Citations (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5113521A (en) * | 1988-03-18 | 1992-05-12 | Digital Equipment Corporation | Method and apparatus for handling faults of vector instructions causing memory management exceptions |
US5966528A (en) * | 1990-11-13 | 1999-10-12 | International Business Machines Corporation | SIMD/MIMD array processor with vector processing |
US6038652A (en) * | 1998-09-30 | 2000-03-14 | Intel Corporation | Exception reporting on function generation in an SIMD processor |
WO2001013220A1 (en) * | 1999-08-13 | 2001-02-22 | Sun Microsystems, Inc. | Exception handling for simd floating point-instructions |
CN1497435A (zh) * | 2002-09-25 | 2004-05-19 | ���µ�����ҵ��ʽ���� | 处理器 |
US6880068B1 (en) * | 2000-08-09 | 2005-04-12 | Advanced Micro Devices, Inc. | Mode dependent segment use with mode independent segment update |
CN1890630A (zh) * | 2003-12-09 | 2007-01-03 | Arm有限公司 | 在寄存器和存储器之间移动数据的数据处理设备和方法 |
US20080016320A1 (en) * | 2006-06-27 | 2008-01-17 | Amitabh Menon | Vector Predicates for Sub-Word Parallel Operations |
CN101454753A (zh) * | 2006-06-29 | 2009-06-10 | 英特尔公司 | 处理异构资源的地址转换和异常 |
CN101488084A (zh) * | 2007-12-27 | 2009-07-22 | 英特尔公司 | 执行屏蔽加载和存储操作的指令和逻辑 |
US20090249039A1 (en) * | 1997-10-09 | 2009-10-01 | Mips Technologies, Inc. | Providing Extended Precision in SIMD Vector Arithmetic Operations |
CN101620589A (zh) * | 2008-06-30 | 2010-01-06 | 英特尔公司 | 处理器中的有效并行浮点异常处理 |
CN101729792A (zh) * | 2008-10-27 | 2010-06-09 | 索尼株式会社 | 图像处理装置、图像处理方法和程序 |
US20110035568A1 (en) * | 2008-08-15 | 2011-02-10 | Apple Inc. | Select first and select last instructions for processing vectors |
US7937559B1 (en) * | 2002-05-13 | 2011-05-03 | Tensilica, Inc. | System and method for generating a configurable processor supporting a user-defined plurality of instruction sizes |
US8108846B2 (en) * | 2006-04-04 | 2012-01-31 | International Business Machines Corporation | Compiling scalar code for a single instruction multiple data (SIMD) execution engine |
US20120117420A1 (en) * | 2010-11-05 | 2012-05-10 | Advanced Micro Devices, Inc. | Processor and method implemented by a processor to implement mask load and store instructions |
CN102473104A (zh) * | 2009-08-19 | 2012-05-23 | 国际商业机器公司 | ***用于优化的simd代码的操作-和-指示指令 |
US20120216011A1 (en) * | 2011-02-18 | 2012-08-23 | Darryl Gove | Apparatus and method of single-instruction, multiple-data vector operation masking |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5346117A (en) * | 1993-07-27 | 1994-09-13 | International Business Machines Corporation | Method of fabricating a parallel processor package |
US6304963B1 (en) * | 1998-05-14 | 2001-10-16 | Arm Limited | Handling exceptions occuring during processing of vector instructions |
US6301705B1 (en) * | 1998-10-01 | 2001-10-09 | Institute For The Development Of Emerging Architectures, L.L.C. | System and method for deferring exceptions generated during speculative execution |
-
2013
- 2013-02-22 US US13/773,818 patent/US20140244987A1/en not_active Abandoned
-
2014
- 2014-02-20 GB GB1403028.2A patent/GB2513448A/en not_active Withdrawn
- 2014-02-21 DE DE102014002510.1A patent/DE102014002510A1/de not_active Withdrawn
- 2014-02-21 CN CN201410102598.5A patent/CN104008021A/zh active Pending
- 2014-02-21 RU RU2014106624/08A patent/RU2014106624A/ru unknown
Patent Citations (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5113521A (en) * | 1988-03-18 | 1992-05-12 | Digital Equipment Corporation | Method and apparatus for handling faults of vector instructions causing memory management exceptions |
US5966528A (en) * | 1990-11-13 | 1999-10-12 | International Business Machines Corporation | SIMD/MIMD array processor with vector processing |
US20090249039A1 (en) * | 1997-10-09 | 2009-10-01 | Mips Technologies, Inc. | Providing Extended Precision in SIMD Vector Arithmetic Operations |
US6038652A (en) * | 1998-09-30 | 2000-03-14 | Intel Corporation | Exception reporting on function generation in an SIMD processor |
WO2001013220A1 (en) * | 1999-08-13 | 2001-02-22 | Sun Microsystems, Inc. | Exception handling for simd floating point-instructions |
US6880068B1 (en) * | 2000-08-09 | 2005-04-12 | Advanced Micro Devices, Inc. | Mode dependent segment use with mode independent segment update |
US7937559B1 (en) * | 2002-05-13 | 2011-05-03 | Tensilica, Inc. | System and method for generating a configurable processor supporting a user-defined plurality of instruction sizes |
CN1497435A (zh) * | 2002-09-25 | 2004-05-19 | ���µ�����ҵ��ʽ���� | 处理器 |
CN1890630A (zh) * | 2003-12-09 | 2007-01-03 | Arm有限公司 | 在寄存器和存储器之间移动数据的数据处理设备和方法 |
US8108846B2 (en) * | 2006-04-04 | 2012-01-31 | International Business Machines Corporation | Compiling scalar code for a single instruction multiple data (SIMD) execution engine |
US20080016320A1 (en) * | 2006-06-27 | 2008-01-17 | Amitabh Menon | Vector Predicates for Sub-Word Parallel Operations |
CN101454753A (zh) * | 2006-06-29 | 2009-06-10 | 英特尔公司 | 处理异构资源的地址转换和异常 |
CN101488084A (zh) * | 2007-12-27 | 2009-07-22 | 英特尔公司 | 执行屏蔽加载和存储操作的指令和逻辑 |
CN101620589A (zh) * | 2008-06-30 | 2010-01-06 | 英特尔公司 | 处理器中的有效并行浮点异常处理 |
US20110035568A1 (en) * | 2008-08-15 | 2011-02-10 | Apple Inc. | Select first and select last instructions for processing vectors |
CN101729792A (zh) * | 2008-10-27 | 2010-06-09 | 索尼株式会社 | 图像处理装置、图像处理方法和程序 |
CN102473104A (zh) * | 2009-08-19 | 2012-05-23 | 国际商业机器公司 | ***用于优化的simd代码的操作-和-指示指令 |
US20120117420A1 (en) * | 2010-11-05 | 2012-05-10 | Advanced Micro Devices, Inc. | Processor and method implemented by a processor to implement mask load and store instructions |
US20120216011A1 (en) * | 2011-02-18 | 2012-08-23 | Darryl Gove | Apparatus and method of single-instruction, multiple-data vector operation masking |
Also Published As
Publication number | Publication date |
---|---|
GB2513448A (en) | 2014-10-29 |
RU2014106624A (ru) | 2015-08-27 |
DE102014002510A1 (de) | 2014-08-28 |
GB201403028D0 (en) | 2014-04-09 |
US20140244987A1 (en) | 2014-08-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9715389B2 (en) | Dependent instruction suppression | |
US20220291927A1 (en) | Systems, methods, and apparatuses for tile store | |
CN104008021A (zh) | 针对多数据体系结构的精确的异常信号发送 | |
US9817667B2 (en) | Techniques for scheduling operations at an instruction pipeline | |
US9483273B2 (en) | Dependent instruction suppression in a load-operation instruction | |
US9489206B2 (en) | Dependent instruction suppression | |
US20170097826A1 (en) | System, Method, and Apparatus for Improving Throughput of Consecutive Transactional Memory Regions | |
CN102750133B (zh) | 支持simd的32位三发射的数字信号处理器 | |
CN114003288A (zh) | 用于将比原生支持的数据宽度更宽的数据原子地存储到存储器的处理器、方法、***和指令 | |
CN108351830A (zh) | 用于存储器损坏检测的硬件装置和方法 | |
TWI715686B (zh) | 用於容錯及錯誤偵測之系統、方法和裝置 | |
US11789734B2 (en) | Padded vectorization with compile time known masks | |
CN102640131A (zh) | 并行线程处理器中的一致分支指令 | |
TW201506797A (zh) | 用於在移動消除操作中旗標追蹤之系統與方法 | |
US9471326B2 (en) | Method and apparatus for differential checkpointing | |
CN105740200B (zh) | 用于k最近邻搜索的***、装置和方法 | |
US20140297996A1 (en) | Multiple hash table indexing | |
US20160239278A1 (en) | Generating a schedule of instructions based on a processor memory tree | |
KR20210028075A (ko) | 범위-특정 계수 세트를 사용하여 단항 함수를 수행하는 시스템 | |
KR20200139178A (ko) | 집적 회로를 위한 데이터 프로세싱 엔진 타일 아키텍처 | |
US9727340B2 (en) | Hybrid tag scheduler to broadcast scheduler entry tags for picked instructions | |
CN104317554B (zh) | 用于simd处理器的寄存器文件数据读写装置和方法 | |
US9582286B2 (en) | Register file management for operations using a single physical register for both source and result | |
US10628542B2 (en) | Core-only system management interrupt | |
US9959122B2 (en) | Single cycle instruction pipeline scheduling |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: American California Applicant after: Imagination Technologies Ltd. Address before: American California Applicant before: Imagination Technology Co.,Ltd. Address after: American California Applicant after: Imagination Technology Co.,Ltd. Address before: American California Applicant before: MIPS Technologies, Inc. |
|
CB02 | Change of applicant information | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20140827 |
|
RJ01 | Rejection of invention patent application after publication |