CN104899181B - 用于处理向量操作数的数据处理装置和方法 - Google Patents

用于处理向量操作数的数据处理装置和方法 Download PDF

Info

Publication number
CN104899181B
CN104899181B CN201510091541.4A CN201510091541A CN104899181B CN 104899181 B CN104899181 B CN 104899181B CN 201510091541 A CN201510091541 A CN 201510091541A CN 104899181 B CN104899181 B CN 104899181B
Authority
CN
China
Prior art keywords
micro
vector
vector register
register
circuitry
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
CN201510091541.4A
Other languages
English (en)
Other versions
CN104899181A (zh
Inventor
马蒂亚斯·伯特歇尔
姆布·埃约勒-莫诺诺
贾科莫·加布雷利
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.)
ARM Co Ltd
Original Assignee
ARM Co 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 ARM Co Ltd filed Critical ARM Co Ltd
Publication of CN104899181A publication Critical patent/CN104899181A/zh
Application granted granted Critical
Publication of CN104899181B publication Critical patent/CN104899181B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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/30018Bit or string 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/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/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/3017Runtime instruction translation, e.g. macros

Abstract

本发明提供了用于处理向量操作数的数据处理装置和方法,数据处理装置(2)具有处理电路(4),处理电路(4)响应于向量微操作来处理来自于向量寄存器存储装置(6)的向量操作数,向量微操作中的一些具有控制信息,该控制信息指示向量操作数的哪些数据元素被选择以供处理。控制电路(20)检测控制信息指定要被处理的向量操作数的一部分不具有被选择的元素的向量微操作。如果检测到这种向量微操作,那么控制电路(20)控制处理电路(4)以处理更低延迟的替换微操作,而非处理原微操作。相比在当不存在被选择的元素的情况下利用分支指令来旁路微操作而言,这种方式提供了更优的性能。

Description

用于处理向量操作数的数据处理装置和方法
技术领域
本技术涉及数据处理领域。更具体地,本技术涉及用于处理向量操作数的数据处理装置和方法。
背景技术
提供用于处理具有多个数据元素的向量操作数的数据处理装置已为公众所知,该数据处理装置可对于向量操作数的每个数据元素执行相应的数据处理操作(经常是并行的)。在一些情形下,向量处理操作可以与控制信息相关,该控制信息表明数据操作数的哪些数据元素应当被处理。处理操作可能仅运用于由控制信息指示的被选择的元素,而不运用于其它元素.本技术试图提高当执行这种类型的向量处理操作时的性能。
发明内容
从一方面来看,本技术提供了一种数据处理装置,包括:
向量寄存器存储装置,被配置为储存包含多个数据元素的向量操作数;
处理电路,被配置为利用从向量寄存器存储装置获得的向量操作数来执行向量处理;以及
控制电路,被配置为响应于向量微操作来控制处理电路执行向量处理;
其中,响应于向量微操作,该微操作指定向量寄存器存储装置的源向量寄存器和目标向量寄存器且与指示源向量寄存器的一部分的哪些数据元素为要由处理电路处理的被选择的元素控制信息相关,控制电路被配置为:
(a)检测控制信息是否满足预定条件,该预定条件指示源向量寄存器的所述部分不包含任何被选择的元素;
(b)若控制信息不满足预定条件,控制处理电路利用源向量寄存器的所述部分的一个或多个被选择的元素来处理所述向量微操作以执行预定处理操作,进而生成结果,该结果被存储于目标向量寄存器的与源向量寄存器的所述部分相对应的部分;
(c)若控制信息满足预定条件,则利用替换微操作来替换所述向量微操作,该替换微操作具有比所述向量微操作更低的处理延迟并且在控制信息满足预定条件的情况下为目标寄存器的所述部分提供与所述向量微操作相同的结果,以及控制处理电路处理所述替换微操作。
本技术认识到,能够对源向量寄存器的相应部分中由控制信息指示不应被处理电路处理而作为未被选择的元素的所有数据元素执行矢量微操作。在这种情况下,向量微操作的处理可能浪费处理资源。用于解决此问题的一种之前的技术是由程序员在向量微操作之前包含一个“保护”分支指令,该指令测试控制信息是否指示不存在要被处理的被选择的元素,如果不存在要被处理的被选择的元素,那么分支略过接下来的微操作。然而,本技术的发明人发现这种保护分支指令经常会降低而非提高性能,因为该分支操作经常受制于分支预测,并且由于分支执行与否高度依赖于数据,分支预测失误对保护分支操作而言是常见的。当发生分支预测失误时,这需要冲刷处理管线并且从之前执行中所有状态被确认是正确的点重启,这严重影响性能。因此,不包含保护分支指令,而是如同一般情况下仅仅处理向量微操作,常常是更优的,即使表明控制信息未指定要由向量微操作处理的任何被选择的元素。
因此,本技术采用了一种用于加速这种向量微操作的不同方法。控制电路检测控制信息是否满足预定条件,该预定条件指示源向量寄存器的相关部分不包含任何被选择的元素。若控制信息不满足该预定条件(即,在源向量寄存器的相关部分中存在至少一个被选择的元素),那么控制电路控制该处理电路利用源向量寄存器的该部分的一个或多个被选择的元素来处理向量微操作以执行预定处理操作,进而生成结果,该结果被存储于目标向量寄存器的与源向量寄存器的所述部分相对应的部分。因此,当存在至少一个被选择的元素时,按照一般情况处理该向量微操作。没有必要设置额外的保护分支指令,并且因此没有保护分支指令被错误预测而导致管线冲刷和丧失性能的风险。
在另一方面,如果确定控制信息满足预定条件,即,在源向量寄存器的所要求部分中不存在被选择的元素,那么控制电路利用替换微操作来替换该向量微操作,替换微操作具有比所述向量微操作更低的处理延迟并且在预定条件被满足的情况下提供与原向量微操作相同的结果。控制电路然后控制该处理电路处理此替换微操作。因此,控制电路的硬件能够识别何时不存在被选择的数据元素,,并且在不存在被选择的数据元的情况下,利用可以被处理电路更快速地处理的微操作来替换该向量微操作。因此,性能得到提升。
同时,如果可以利用与处理原向量微操作的向量处理单元不同的处理单元处理替换微操作,那么这使得能够利用该向量处理单元处理其余具有被选择的数据元素的向量微操作,从而使得相比于原微操作未被替换的情况,它们可以更早地被处理。这可以进一步地提高性能。
在一些实施例中,控制电路可以为处理电路的一部分,或者可以作为单独电路提供。
微操作可以为由处理电路执行的任何操作,可以独立于其他微操作而被调度。在一些实施例中,从存储器中取得的每一指令可以与发送给处理器的单个微操作相对应,从而使得这些微操作是简单程序指令。然而,在许多情况下,可能存在一些映射到多个微操作的复杂程序指令。例如,一条多载入/储存指令可以映射到多个可以独立地调度的载入/储存微操作。此外,一条用于处理一个向量操作数的单个向量程序指令可以被映射到多个微操作,该多个微操作的每一个处理该向量操作数的不同部分(例如,这允许具有较窄执行宽度的处理电路处理更大的向量操作数)。
对一些微操作来说,源向量寄存器的被向量微操作处理(并且控制电路对其检测被选择的数据元素)的部分可以为整个源向量寄存器,并且对其他的微操作来说,可以仅为源向量寄存器的子部分。
替换微操作可以为空微操作(不改变向量寄存器的任何状态的微操作)、用于将目标向量寄存器的至少一部分设置为与源向量寄存器的一部分相同的值的微操作(例如,寄存器迁移指令)和用于将目标向量寄存器的至少一部分设置为预定值(譬如0,或各比特均等于1的值)的微操作中的一者。出乎意料的是,本技术认识到将向量微操作替换为空微操作常常是不够的,而在不存在被选择的数据元素的情况下,这可能会被认为是应当的。从下面的示例中可见这一点。
对第一类型的微操作,处理电路可将目标向量寄存器的与源向量寄存器中未被选择的数据元素相对应的各部分设置为预定值,例如0。在此情况中,当源向量的该部分全部由未被选择的数据元素组成时,仅执行空微操作是不够的,而是替换微操作可作为将目标向量寄存器的相应部分设置为预定值的微操作。
对于第二类型的向量微操作,处理电路可将目标向量寄存器的未被选择的数据元素设置为与源向量寄存器中相应的未被选择的数据元素相同的值。
在一些情况下,源向量寄存器和目标向量寄存器可以相同。在这种情况下,处理电路可以将目标寄存器中被选择的数据元素替换为通过对这些被选择的数据元素运用该处理操作而确定的相应值,同时将未被选择的数据元素保留为其原先的值。人们可能认为,因为未被选择的数据元素被保留为其原先的值,那么在该寄存器的此部分中所有元素均为未被选择的元素的情况下,空微操作作为替换微操作可能足够了。然而,对于按序处理器,这可能是对的;对于乱序处理器或其他类型的利用寄存器重命名的处理器,即使微操作所指定的源和目标寄存器相同,在微操作到达该处理器之前,在该处理器看来,源和目标寄存器可能被映射为不同的物理寄存器。因此,即使当微操作所指定的源和目标寄存器相同时,可以使用将目标向量寄存器的该部分设置为源向量寄存器的相应部分的值的替换微操作。
在另一方面,对于第二类型的向量微操作,如果不同的寄存器被指定为源向量寄存器和目标向量寄存器,那么替换微操作也可以为将目标向量寄存器的该部分设置为与源向量寄存器的相应部分的值的微操作(与上面所描述的寄存器重命名的示例相同)。
在另一种类型的向量微操作下,目标向量寄存器的与源向量寄存器的未被选择的数据元素相应的各部分的值可以保留。在这种情况下,替换微操作可以为空微操作,或者在使用寄存器重命名的情况下,可以为如下微操作即,将与目标向量寄存器相应的新的被重命名的寄存器的该部分设置为与之前被重命名为目标向量寄存器的寄存器的相应部分的值的微操作。
控制信息可以具有不同形式。在一个示例中,可以提供掩码信息,该掩码信息将源向量寄存器的该部分内的各数据元素或各数据元素组指定为被选择的数据元素或未被选择的数据元素。在这种情况下,如果掩码信息指示源向量寄存器的该部分中没有数据元素被选择,那么控制电路可以确定预定条件被满足。掩码信息可以被储存于例如专门的控制寄存器中,或者被存储于一般用途的寄存器中的一个寄存器。
控制信息的另一个示例为向量长度信息,该向量长度信息指示响应向量微操作有多少数据元素将被处理。作为示例,可以假定大于该向量长度信息所指示的最后数据元素的位置中的任何数据元素可以作为未被选择的元素。在这种情况下,控制电路可以根据该向量长度信息基于该向量长度信息是否具有一个或多个预定值中的一个来判断预定条件是否被满足(例如,如果微操作对具有8个数据元素的向量寄存器的上半部分进行操作,如果该向量长度为4或更小,那么预定条件可以满足)。作为示例,该向量长度信息可以被储存于控制寄存器,或者可以被包含于微操作的编码中。
此外,该控制信息可以包含与微操作相关的向量格式信息。在一个示例中,该向量格式信息可以为从该微操作的编码得到的信息(例如,指定该微操作将要处理的向量长度或者特定类型的操作的信息),这使得控制电路能够确定源向量操作数中被选择的或者未被选择的数据元素的模式。作为示例,特定格式的标识符可以指示向量寄存器的四部分中仅第一和第三部分包含被选择的数据元素,第二和第四部分为未被选择的,因此如果用于处理第二和第四部分的微操作与该格式标识符相关,那么控制电路可以确定预定条件被满足,因此如上所讨论的,利用替换微操作替换该向量微操作。在其余示例中,向量格式信息可以被储存于控制寄存器中,而不是从微操作的编码得到。
在许多情况下,可能存在由处理电路维护的多条控制信息,以使不同的微操作可以使用不同的控制信息。作为示例,可以存在一定数目的时掩码存器以用于保存掩码信息。因此,微操作可以指定应当使用哪一控制信息,并且当确定是否利用替换微操作替换该微操作时,控制电路可以检查当前微操作的相关控制信息。
在一些情况下,控制电路可以维护额外的控制指示符,该指示符独立于与微操作相关的控制信息。虽然控制电路可以直接从控制信息确定预定条件是否被满足时,但在一些情况下,这可能花费一定的处理。作为示例,具有掩码信息,那么可能需要检查控制信息的若干比特的每一个以确定该部分的所有数据元素是否为未被选择的。该控制指示符为单条信息,该单条信息指示源向量寄存器的所要求的部分的所有数据元素是否为未被选择的,因此与原来的控制信息相比,可以更为有效地检查该控制指示符。该控制指示符可每当控制信息更新被更新。通常地,在控制信息的给定更新之后,在再次更新之前,控制信息然后被多次用于不同的微操作或相同微操作的重复情况。因此,通过在每次控制信息更新时生成该控制指示符,能够将确定该控制指示符的处理的开销共享到控制信息的多次使用中,从而使得不必要在控制信息每次被使用都执行该处理。
处理电路可以为用于操控微操作的处理管线的一部分。作为示例,处理电路可以对应于该管线的一个或多个执行阶段。在一些示例中,控制电路可以对应于用于操控微操作的管线的直至这些微操作被发送以供处理电路处理的前期阶段中的一个或多个阶段。作为示例,管线可以包含分发电路和发布电路,分发电路将微操作解码并将解码后的微操作分发至发布电路,然后发布电路可以在这些微操作等候它们的操作数变为可用时将这些微操作排队,并发布这些微操作以供处理。
上述讨论的微操作的替换可以在管线的不同部分实现。在一个示例中,分发电路可以执行该替换。这种方式的一个优势是,分发电路通过将替换微操作而非原来的向量微操作分发给发布电路来执行向量微操作替换相对比较简单。在另一方面,当分发电路作出这一决定时,该微操作所需的控制信息可能仍然不可用,因为该控制信息还需要被在该管线的发布阶段或处理阶段中进行的微操作更新。因此,有时分发电路可能不知道控制信息是否满足预定条件。为了保证所有微操作被正确处理,分发电路可以使用控制信息的保守估计,即如果控制信息仍然不可用,假定存在至少一个被选择元素,因此分发原来的向量微操作而不是其替代。虽然分发电路可能不能检测出在被处理的寄存器的该部分中不存在被选择的元素的所有情况,,但是通过对这些微操作的大部分情况的加速,仍然可能提升性能。
分发电路可以检查控制信息以便于作出是否替换微操作的决定。然而,通常,控制信息被保持在发布电路或处理电路的本地寄存器文件中,对分发电路而言,这些寄存器文件可能访问很慢。为降低延迟,希望降低管线的不同阶段之间传送的流量量。为解决这个问题,分发电路可以维护第一控制指示符,该指示符指示源向量的该部分中所有的数据元素是否为未被选择的数据元素,从而使得能够在不检查控制信息本身的情况下来判断预定条件是否被满足。
发布电路可以以类似方式维护二控制指示符,并且可以响应于控制信息的更新而更新其第二控制指示符。为了降低发布电路和分发电路之间的流量,当控制信息被更新时,仅当控制信息的更新导致第二控制指示符的更新时,发布电路才可以控制分发电路以更新其第一控制指示符。因此,即使控制信息被更新,这不会触发更新被扩散直至分发电路,除非它改变了是否发生微操作的替换。换言之,仅当控制信息在指示在源向量寄存器的相应部分中没有被选择的数据元素和指示在该部分存在一个或多个被选择的数据元素之间改变时,第一控制指示符才被更新。作为示例,替代指示2个被选择的数据元素而指示4个被选择的数据元素的控制信息的改变不会导致分发电路对第一控制指示符的更新,因为这一改变不会影响是否需要对微操作进行替换。
降低需要被往回扩散至分发电路的更新的次数的另一种方式是,最初将第一控制指示符设置为指示源向量寄存器的该部分中并非所有的数据元素为未被选择的元素(例如,当更新控制信息的指令被分发时,可以执行这样的设置)。然后,仅当控制信息改变以使得在该寄存器的该部分中仅存在未被选择的元素时,发布电路才可以触发其第一控制指示符的更新被扩散至分发电路。
在其他示例中,控制电路可以包含发布电路。发布电路可以检测控制信息是否满足预定条件,如果满足,可以将向量微操作替换为替换微操作。这种方法的一个优势是,在微操作离开发布电路之前,控制信息可用发布电路,因为在任何情况下,该微操作将在发布电路中等待,直到它们已准备好被处理并且所有它们的操作数可用。然而,有时在发布队列中执行微操作的替换比在分发阶段执行微操作的替换可能是困难的。作为示例,处理器可以具有与不同向量处理单元相关的单独的发布队列,如果原微操作在与处理替换微操作的队列不同的队列中,那么从一个队列中删除该微操作并向另一队列中加入一个微操作可能导致更大的开销。尽管如此,这仍然是可能的。同时,为了避免这一开销,可以向通常执行原微操作的处理单元加入附加功能,以使得该处理单元还能够处理替换微操作,因此将不需要改变发布队列,这使得替换处理更为简单。在空微操作或者向量移动微操作的情况下,此附加功能可能不需要大量电路,因此在给定对不存在被选择元素的向量微操作的加速的有益性能时,可以调整小的附加电路区域。
本技术尤其在支持具有不同数据元素大小和不同数目的数据元素的向量的系统中特别有用。在这种系统中,可能存在一些操作数格式,其中操作数的一部分由于包含不完全占用操作数的更小数据元素而是不活动的。在这些情况下,使用控制信息将操作数的一些部分标记为是未被选择的,这种方式可能是有用的,并且对转换后的向量操作数的闲置部分执行的微操作可以利用本技术被加速。
从另一方面来看,本发明提供了一种数据处理装置,包括:向量寄存
器存储装置,用于储存包含多个数据元素的向量操作数;
处理装置,用于利用从该向量寄存器存储装置获得的向量操作数来执行向量处理;以及
控制装置,被配置为响应于向量微操作来控制处理装置执行向量处理;
其中,响应于向量微操作,该微操作指定向量寄存器存储装置的源向量寄存器和目标向量寄存器并且与指示源向量寄存器的一部分的哪些数据元素为要由处理装置处理的被选择的元素的控制信息相关,该控制装置被配置为:
(a)检测控制信息是否满足预定条件,该预定条件指示源向量寄存器的所述部分不包含任何被选择的元素;
(b)若控制信息不满足所述预定条件,则控制处理装置处理利用源向量寄存器的所述部分的一个或多个被选择的元素来处理所述向量微操作以执行预定处理操作,进而生成结果,该结果被存储于目标向量寄存器的与源向量寄存器的所述部分相对应的部分;
(c)若控制信息满足所述预定条件,则利用替换微操作替换所述向量微操作,该替换微操作具有比所述向量微操作更低的处理延迟并且在控制信息满足所述预定条件的情况下为目标寄存器的所述部分提供与所述向量微操作相同的结果,以及控制处理装置处理替换微操作。
从进一步角度来看,本技术提供了一种由装置处理数据的方法,该装置包含被配置为储存包含多个数据元素向量操作数的向量寄存器存储装置,和被配置为利用从向量寄存器存储装置获得的向量操作数来执行向量处理的处理电路,该方法包含:
接收向量微操作,该向量微操作指定向量寄存器存储装置的源向量寄存器和目标向量寄存器,并且与控制信息相关,该控制信息指示源向量寄存器的一部分中的哪些元素为要由处理电路处理的被选择的元素;
响应于该向量微操作,检测控制信息是否满足预定条件,该预定条件指示源向量寄存器的所述部分不包含任何被选择的元素;
如果控制信息不满足所述预定条件,则控制处理电路利用源向量寄存器的所述部分的一个或多个被选择的元素来处理所述向量微操作以执行预定处理操作,进而生成结果,该结果存储于目标向量寄存器的与源向量寄存器的所述部分相应的部分;
如果控制信息满足所述预定条件,则将所述向量微操作替换为替换微操作,该替换微操作具有比所述向量微操作更低的处理延迟并且在控制信息满足所述预定条件的情况下对目标寄存器的所述部分提供与所述向量微操作相同的结果,并且控制处理电路处理替换微操作。
本技术还可以在虚拟机环境中实施。存储于记录介质上的计算机程序可被提供,当计算机程序由计算机执行时,该计算机程序提供可以按照如上所讨论的方式处理向量微操作的虚拟执行环境。
附图说明
本技术的其他方面、特征和优势可以从示例性实施例的下述描述中体现,这些实施例将结合附图来阅读,其中:
图1示意性地示出了用于向量处理的数据处理装置;
图2示出了处理来自于源向量操作数的被选择的数据元素的向量微操作的一个示例;
图3示出了源向量寄存器的仅包含未被选择的数据元素的部分的一个示例;
图4示出了一个嵌套循环的一个示例,该嵌套循环可以导致对不包含被选择的数据元素的部分进行向量微操作;
图5示出了在分发阶段替换向量微操作的第一示例;
图6和图7示出了将控制指示符存储于掩码寄存器文件的两个示例;
图8示出了将控制指示符存储于向量长度寄存器文件的一个示例;
图9示出了由分发阶段维护的控制指示符的一个示例;
图10示出了在发布阶段替换微操作的一个示例;
图11示出了处理向量操作的一种方法;
图12示出了本技术的一种虚拟机实现方式。
具体实施方式
图1示意性地示出了具有支持向量处理的处理电路4的数据处理装置2的一个示例。处理电路4可以处理通过输入总线8从向量寄存器存储装置6接收的源向量操作数,并且对源操作数的各个数据元素执行相应的数据处理操作,以生成结果向量操作数,结果向量操作数通过输出总线10被输出到向量寄存器存储装置6。处理电路可以包含向量处理器,该向量处理器对各个数据元素彼此之间并行执行操作,或者处理电路可以包含标量处理器,该标量处理器按序地而非并行地执行操作。处理电路4包括用于执行不同类型的处理操作的多个功能单元12。在此示例中,功能单元12包括算数逻辑单元(ALU)、乘积累加(MAC)单元和浮点单元(FPU),算数逻辑单元用于执行ALU操作,譬如加法、乘法、移位和逻辑操作,乘积累加(MAC)单元用于执行乘积累加操作,和浮点单元(FPU用于执行浮点运算。应认识到,可以提供其他类型的功能单元。向量加载存储单元14也被提供,该单元用于从高速缓存或内存向向量寄存器存储装置6加载数据和把来自向量寄存器存储装置6的数据存储到高速缓存或内存。
装置2还具有控制电路20,该控制电路用于控制由处理电路执行的操作。控制电路20具有指令队列22,该指令队列从高速缓存或内存接收指令;分发阶段24,该分发阶段对指令解码以生成要由处理电路4处理的微操作,并将微操作分发给发布队列26。微操作保存于发布队列26中,直到其操作数和执行微操作所需的任何控制信息变为可用,此时微操作被发布以供处理电路4的处理单元12中之一执行,或当微操作为加载/储存微操作时供加载/存储单元14执行。
微操作(μOPS)的每一个与一条指令的整体或部分对应。一些指令可以被拆分为与将被执行的不同操作相应的多个微操作,譬如一条加载/储存多指令的不同的加载/储存,或复杂处理操作的不同步骤,复杂处理操作譬如用于基于来自于源向量操作数的数据元素序列的组合生成数据值的向量扫描操作。其他指令可以被拆分为单独的微操作,这些微操作处理源操作数的不同部分。作为示例,向量操作数可以包括256或512个数据元素,但可以被拆分为具有每次处理32或64个数据元素的不同微操作的较小数据块。其他示例可以使用具有8个或16个元素的向量,并以每次4个或8个元素的较小数据块对其处理。
处理电路4具有对控制信息28的接入口,控制信息控制源寄存器的被微操作处理的部分中的哪些数据元素为将被处理的被选择元素。图2示出了一个示例,其中控制信息28包含掩码信息(mst)30,该信息定义哪些数据元素为被选择的数据元素(1)和哪些数据元素为未被选择的数据元素(0)。一个加法微操作将两个源操作数32、34(src 1、src2)的被选择的位元素相加,并将每一对元素的和放入结果操作数36的相应数据元素中,结果操作数36被写入向量寄存器存储装置6。源操作数的未被选择的数据元素未被相加,因此结果操作数36的相应元素(这一示例中的元素1和3)被设置为另一个值。对于为结果操作数的未被选择的部分选择值,可以提供不同模式。在一个示例中,结果值中的未被选择的部分可以被设置为预定值,譬如0或所有位均被设置为1的值。在另一示例中,未被选择的部分可以取源寄存器的相应部分的值,或者可以保持用于存储结果操作数36的向量寄存器存储装置6中目的寄存器的相应部分之前的值。虽然图2示出了控制信息28为掩码信息30的示例,然而在其他示例中,控制信息可以为指定源寄存器的包含被选择元素的部分的长度的向量长度信息,或者定义被选择的/未被选择的数据元素的特定样式的格式信息。
存在一些情况,其中要被处理电路4处理的微操作可能具有如下控制信息,即指定源寄存器的将被处理的部分中的数据元素均不是被选择的数据元素的控制信息。这样的微操被称作“0长度”微操作(因为它们可以由矢量长度参数0来指示,虽然也可以使用掩码信息或其他控制信息来指示0长度微操作)。图3示出了可能出现0长度微操作的第一示例。处理电路4可以支持不同的数据元素大小,以致数据寄存器例如可以被拆分为4个32位数据元素(如图3所示的F32格式)或者两个64位数据元素。如图3中所示,还可以存在F64的格式,其中两个32位数据元素被放入128位寄存器的0和2部分,但是32位部分1和3是闲置的。这可用于简化双精度和单精度浮点值之间的计算,以便例如允许利用简化的(经常是更快的)单精度硬件进行计算。在不具有如图3所示的掩码所提供的预测的情况下,F64值的整体将被传播通过处理电路4的功能单元12,这将意味着数据路径的一半将被不必要地激活。通过利用掩码来指示F64值的1和3部分为未被选择的元素,可以节省用于处理这些元素的处理资源。因此,处理1和3部分中的一个的微操作为0长度微操作,因为没有任何要处理的被选择的数据元素。
图4示出了另一示例,其中存在嵌套循环,其中利用数组A[x]、B[y]中元素的某个处理操作对两个变量x和y迭代操作。可以利用向量处理将循环的多个不同迭代操作组合为单个微操作。作为示例,可以利用512元向量处理循环的512次迭代。然而,通常该循环可能需要经过大量的重复进行迭代,重复的次数并非恰好是2的幂次(例如760次)。在这种情况下,虽然可以利用具有512个元素的完全占用的向量来处理512次迭代操作,但是余下的248次迭代操作不能完全填满512元向量,因此该向量的如此多位将由未被选择的元素组成。由于向量中的元素数目越大,2的相邻幂次之间的差距越大,因此循环将更有可能包含利用存在许多未被选择的元素的向量而执行的向量操作因此当向量长度增长时,这一问题变得更加严重。对单个循环而言,因为只有循环中最后的向量操作将利用不完整的向量而被执行,所以这可能不是很明显的问题。然而,当存在如图4所示的嵌套循环时,那么对外侧循环的每一次迭代,内侧循环的最后步骤可能处理不完整向量,因此若外侧循环被迭代多次时,那么零长度微操作的处理可能导致性能显著降低。
零长度微操作可能出现的另一种情况是,如果利用较大向量的向量操作被分解为分离的向量微操作,每一个向量微操作处理该向量的一个较小部分,以致可以使用执行路径具有较窄位宽的处理电路。作为示例,虽然向量寄存器文件6可以支持128元向量,为降低电路面积,处理电路可以具有仅能处理64元向量的数据路径。在这种情况下,那么128元向量可以两次经过处理电路而被处理。128元向量以独立经过的方式被处理的事实,对可能指定了128元向量处理指令的程序员来说可能是不可见的。然后这一指令可以被映射为具有控制信息的微操作,该控制信息表明向量操作数的一半或另外一半包含未被选择的元素。因此,可能存在一些微操作,这些微操作用于处理寄存器中全部由未被选择的元素组成的部分。
因此,可能合理地频繁发生零长度微操作。如果存在至少一个被选择的元素,要被执行的处理操作可能需要若干个处理循环以完成。作为示例,由MAC单元执行的乘积累加操作,或由FPU执行的浮点操作,可能需要若干次循环。如果零长度微操作被发布到这些单元中之一,那么在该零长度微操作的结果可为其他微操作使用之前,这可能导致若干次循环的延迟,并且可以防止可能导致丧失性能的其他微操作在此期间使用相同的处理单元12。本技术认识到这是不必要的,因为零长度微操作可以被替换为更快的微操作。
控制电路20识别控制信息28何时满足预定条件,该预定条件指示源寄存器将要被处理的部分仅包含未被选择的元素,并且如果满足预定条件,那么控制电路20将该微操作替换为替换微操作,替换微操作比原微操作可以在更少的循环内处理。下表示出了可以采用的不同类型的替换的示例。
Figure BDA0000676143850000151
相比更为复杂的需要处理源数据元素以生成结果值的微操作而言,通常情况下,可以在更少的循环内处理向量移动微操作“Vmov”或空微操作“NOP”,因此通过将原操作替换为这些微操作中的一个,可以加速处理。将零长度向量微操作替换为替换微操作所获得的潜在性能依赖于底层功能单元12的延迟和可用性。作为示例,一个给定的向量功能单元12可能需要3次或更多次循环,同时可能在2次循环内执行向量移动微操作,这至少节省了至少一次循环。同样,若处理电路2具有双发布能力以及用于执行向量移动微操作的两个置换单元,最多可并行加速两个零长度向量微操作,这使得原来的目标功能单元12空闲而可被其他指令使用。
注意到在大部分环境下,利用空操作来替换微操作是不够的。相反的,向量移动(vmov)指令可被用于确保目标寄存器取正确值。在乱序处理器的情况下尤其是如此,在乱序处理器的情况中可能发生寄存器重命名,因此即使源和目标寄存器相同,寄存器重命名可能将它们映射至不同的物理寄存器,因此可能仍然需要向量移动指令。同样,注意到即使当控制信息指示在所需部分中的所有元素为未被选择的元素,可能仍然存在需要该微操作等待更早指令的结果的数据依赖。如果目标寄存器与源寄存器不同(或者通过寄存器重命名而被映射于不同的寄存器),并且目标寄存器的未被选择的部分的值被设置为与源寄存器的相应部分相同,这种情况将发生。以上所示的“破坏性与合并”的情况为以下的特殊情形:假定目标寄存器的空闲元素被来自源的元素替换,该指令未体现输入对目标寄存器的依赖性(除非存在寄存器重命名),因此可以更快。对“非破坏与合并1”,因为目标寄存器的未被选择的元素被保留,因此存在输入对目标寄存器的依赖性。
对一些指令可能需要特别注意,这些指令执行一般情况下支持有条件的执行的系统中的条件标志的更新。有条件的微操作仅当条件标志指示特定状态时才被执行。一些微操作可以基于它们的处理结果来更新条件标志。若条件标志更新微操作为零长度微操作,那么在一些情况下可能会忽略标志的更新,这是因为通常任何情况下,未被选择的元素都不会影响标志的更新。然而,即使不存在将由微操作处理的被选择的元素,如果有可能需要标志更新,那么可以通过将执行替换微操作的处理单元12扩展为同时包含执行条件标志更新的功能来应对(通常情况下对例如向量移动微操作并非如此)。
微操作的替换可以在分发电路24或发布队列26进行。图5示出了一个示例,其中由分发电路24执行替换。在这种情况下,向量加指令(时隙2的vadd)具有相应的掩码信息VM(0),该信息表明该寄存器的所需部分全部由未被选择的元素组成。因此,该加指令被替换为向量移动指令(vmov vv2,vv1)。尽管所有元素为未被选择的元素,该向量移动指令仍然依赖于之前的向量移动指令(时隙1的vmov),因为时隙1的vmov生成了要被置于源寄存器vv1中用于时隙2的微操作的的值。否则,时隙2的向量移动指令将对寄存器vv1中的时隙1的操作执行之前的值进行操作,时隙而不是对时隙1的操作之后的值进行操作。
图6和7示出了用于储存控制信息28的掩码寄存器文件的不同示例。可以提供多个掩码寄存器,微操作可以指示掩码寄存器中的哪一个储存了用于这一微操作的控制信息。分发电路24可以基于原掩码数据本身来确定是否执行该微操作的替换。然而,在这种情况下,分发电路需要组合该掩码信息的若干比特以确定替换该操作的所需条件是否满足。为了加速检查该微操作是否为零长度微操作,可以如图6所示的将每一个掩码寄存器扩展为包含额外的控制标志40,该控制标志指示是否该掩码所指示的所有元素均为被选择的或者未被选择的。图6示出的额外的控制指示符40在掩码的任何位为1的情况下将具有值“false(假)”,在掩码的所有位为0的情况下将具有值“true(真)”。可以通过对相应掩码的位应用NOR操作来确定该额外的控制指示符40。对于给定微操作,如果该控制指示符40为“真”,那么如上所述的,分发电路24可以将相应的微操作替换为更快的NOP或vmov微操作。
图7示出了掩码寄存器文件的第二示例,其中提供了两个控制指示符40,42,每一个相应于掩码的不同的一半。这允许对仅对向量操作数的一半进行操作的微操作进行检验,以确定通过将该微操作替换为替换微操作,它们是否能够被加速。类似的,可以生成与掩码寄存器的更小部分相应的另外的控制标志(例如,将该掩码分为4、8、16部分等等)。
对图6和7来说,每次存在对掩码寄存器的写入时,控制电路20可以更新相应的控制指示符40、42。这可以通过将该写入传送经过NOR网络以设置或重新设置指示符40、42来实现。典型的,统一掩码在被再次更新之前可以由不同的微操作多次使用,因此通过以这种方式写入掩码寄存器来更新标志40、42,生成标志40、42的处理可以在多次读操作中被分次处理,而不是在每次读操作时被重复。
图8示出了控制信息28的另一示例,该控制信息包含向量长度寄存器文件,该寄存器文件包含用于储存不同微操作的向量长度数据44的寄存器。每一个微操作可以指定哪一寄存器储存这一微操作的向量长度。向量长度域44指示存在多少被选择的数据元素,比向量长度所指示的元素的位置更高的元素可以被假定为未被选择的。同样,可以确定控制标志40、42为指示某部分是否全部由未被选择的元素组成。作为示例,图8中的两个标志40、42与八元向量的前半和后半部分相应。如果向量长度为0,那么这两半部分都全部由未被选择的元素组成,因此两个标志40、42均为“真”。如果向量长度为4,由于只有该向量的后半部分包含未被选择的元素,那么标志40为“假”,标志42为“真”。因此,分发电路24可以使用图8中所示的表来确定是否替换微操作。
分发电路24也可以其自身的如图9所示的控制指示符44、46的表,以致相比如果必须访问通常位于发布队列26的掩码/向量长度寄存器文件而言,分发电路24能够更快地确定给定操作的掩码或向量长度是否指定了全部由未被选择的元素组成的块。然而,当在分发阶段的早期执行零长度微操作的检测时,那么可能存在一些操作,其中相应的控制信息28仍然由在发布队列26中进行的微操作生成。因此,除了控制指示符44、46的“真”和“假”状态以外,可以还存在“不知道”状态“x”。一般而言,如果不知道控制信息,那么分发电路24可以保守假定存在至少一个被选择的元素,即,“x”被认为是“假”的,以使得该微操作不被执行并且原微操作被分发至发布队列26。同样,对于用于更新控制信息的指令的分发,分发电路24可以将相应标志44、46设置为指示x/假。响应于由发布队列26维持于掩码寄存器文件或向量长度寄存器文件中的相应标志40、42的相应更新,图9中的标志44、46被分发电路24更新。仅当控制标志40、42改变状态时,发布队列26才将控制标志40、42的更新回传至分发电路24。如果控制信息的更新不改变控制标志40、42的状态,那么由发布电路24保持的标志44、46不被更新,以避免阶段之间不必要的流量(下述选择b)。替代的,如果向分发电路24回传所有标志更新而增加的流量是可接受的,那么掩码/向量长度寄存器文件不需要包含标志40、42,而是,由分发电路24维持的标志44、46可以为仅有的控制标志(下述选择a)。
总结而言,图9所示的标志44、46可被分发电路24以如下方式更新:
●当写入特定掩码寄存器的微操作被分发至发布队列26时(在这个示例中,0与图9中的x/false相应),使相关标志44、46无效(设置为0)
●在下述情况设置/重设相关标志44、46:
a)控制信息的所有更新;
b)仅当相应标志40、42在控制信息的更新后改变时。
选择a)增加了分发阶段和发布/执行阶段之间的互动,但不需要如图6至8所示的被扩展的寄存器文件,而选择b)降低了分发阶段和发布/执行阶段之间的互动。
零长度微操作的检测和在分发阶段中对该微操作的替换是相对简单以实现的,并且对后续的管线阶段具有很小的影响。然而,由于可能存在一些在正进行的控制信息的更新,分发阶段不得不对零长度微操作进行保守估计,因此这可能仍然导致零长度微操作的一些执行。
如图10所示,发布队列26的另一选择是检测零长度微操作并将它们用另一微操作替换。这具有加速零长度微操作的优势,即使当微操作进入发布队列时存在正在进行的控制信息的更新。因此,在图10的示例中,在设置掩码寄存器文件VM0的vset操作之后,在时隙2中,存在向量加操作。该加操作不得不等待,直到设置完成并将生成的掩码广播至发布队列。当掩码更新时,发布队列26还更新与掩码寄存器文件相关的相应控制标志40、42。如果该标志为false,那么该vadd微操作如正常进行。如果标志为true,那么该发布队列26将该vadd微操作替换为可替代的向量移动微操作,该向量移动微操作用于将寄存器vv1的部分移动至寄存器vv2的相应部分。如果存在与处理电路4的不同功能单元12相应的多个不同的发布队列,那么在功能单元12内部提供通常地执行原微操作的电路以使得该电路还可以执行替换微操作是有用的,从而避免当替换微操作时需要切换发布队列。
虽然一些系统可以在分发阶段24中检测和替换零长度微操作,其余一些系统可以在发布阶段26中执行这些操作,也可以在这两个阶段都执行检测和替换。这将具有如下好处,分发阶段将关注零长度微操作可以更容易地被另一操作替换时的这些零长度微操作,而发布阶段将检测少许余留的依赖于正在进行的控制信息的更新的零长度微操作。这将使得所有的零长度微操作被检测到,同时对于给定微操作而言,能够以最有效的方式实现替换,从而使得在性能提升和电路/处理复杂度之间寻求更好的平衡。
图11示出了一种执行向量处理的方法。在步骤100中,控制电路20检测是否存在待处理的向量微操作,该向量微操作具有确定哪些元素是被选择的元素和未被选择的元素的控制信息。当检测到这样的操作,那么在步骤102中,确定该控制信息是否指示在源寄存器或寄存器的当前部分中不存在被选择的元素。可以从控制信息本身,或者从导出的参数,譬如如上所讨论的控制标志40、42、44或46,来执行此确定。如果存在至少一个被选择的元素,那么在步骤104中,控制电路20控制处理电路4利用被选择的元素以该向量微操作原来的形式处理该向量微操作。如果不存在被选择的元素,那么在步骤106中,该向量微操作被替换为一个替换微操作,并且控制电路4被控制为处理该替换微操作而非原来的微操作。替换微操作可以比原来的微操作在更少的循环中被处理,因此该替换提升了性能。
图12示出了一个可利用的虚拟机实现方式。虽然之前描述的实施例以用于操作支持本技术的特定处理硬件的装置或方法的方式实现本发明,还可以提供所谓的硬件设备的虚拟机实现方式。这些虚拟机实现方式在通常运行支持虚拟机程序210的主机操作系统220的主机处理器230上运行。通常,需要大功效处理器以提供以合理速度运行的虚拟机实现方式,但这样的方法在某些情形下可能是合理的,譬如当处于兼容性或重用的原因而希望运行另一处理机本地的代码时。虚拟机程序210能够执行应用程序(或操作系统)200以给出与由实际的硬件设备执行该程序给出的结果相同的结果。因此,该程序指令,包括上面所描述的内存访问控制,可以利用该虚拟机程序210在应用程序内部被执行。
尽管通过参考附图详细描述了本发明的示例性实施例,应当理解本发明并非限于这些实施例的精确描述,在不脱离本发明如所附的权利要求所定义的范围和精神的情况下,本领域的技术人员可对本发明进行各种改变及修改。

Claims (24)

1.一种数据处理装置,包括:
向量寄存器存储装置,被配置为储存包含多个数据元素的向量操作数;
处理电路,被配置为利用从所述向量寄存器存储装置获得的向量操作数来执行向量处理;以及
控制电路,被配置为响应于向量微操作来控制所述处理电路执行向量处理;
其中,响应于向量微操作,该微操作指定了所述向量寄存器存储装置的源向量寄存器和目标向量寄存器,其中所述源向量寄存器的一部分包括多个连续数据元素并且该部分内的每个数据元素是被选择的元素或未被选择的元素,并且所述向量微操作与针对所述源向量寄存器的所述部分的每个数据元素指示该数据元素是被选择的元素还是未被选择的元素的控制信息相关,所述控制电路被配置为:
(a)检测所述控制信息是否满足预定条件,该预定条件指示所述源向量寄存器的所述部分中的所有元素是未被选择的元素;
(b)若所述控制信息不满足所述预定条件,则控制所述处理电路利用所述源向量寄存器的所述部分的一个或多个被选择的元素来处理所述向量微操作,以执行预定处理操作,进而生成结果,所述结果被存储于所述目标向量寄存器的与所述源向量寄存器的所述部分相对应的部分;
(c)若所述控制信息满足所述预定条件,则利用替换微操作来替换所述向量微操作,该替换微操作具有比所述向量微操作更低的处理延迟并且在所述控制信息满足所述预定条件的情况下为所述目标寄存器的所述部分提供与所述向量微操作相同的结果,以及控制所述处理电路处理所述替换微操作。
2.如权利要求1的数据处理装置,其中所述源向量寄存器的所述部分包含所述源向量寄存器的全体,以及所述目标向量寄存器的所述部分包含所述目标向量寄存器的全体。
3.如权利要求1和2中的任一项的数据处理装置,其中所述替换微操作包含空微操作、用于将所述目标向量寄存器的至少一部分设置为与所述源向量寄存器的一部分相同的值的微操作以及用于将所述目标向量寄存器的所述至少一部分设置为预定值的微操作中的一者。
4.如权利要求1的数据处理装置,其中响应于第一类型的所述向量微操作,所述处理电路被配置为控制该处理电路将所述目标向量寄存器的所述部分的数据元素设置为预定值,所述目标向量寄存器的所述部分的数据元素与所述源向量寄存器的所述部分的未被选择的数据元素相对应。
5.如权利要求4的数据处理装置,其中对于所述第一类型的所述向量微操作,所述替换微操作包含用于将所述目标向量寄存器的所述部分设置为所述预定值的微操作。
6.如权利要求1的数据处理装置,其中响应于第二类型的所述向量微操作,所述控制电路被配置为控制该处理电路以使得所述目标向量寄存器的所述部分的数据元素具有与所述源向量寄存器的所述部分的相应的未被选择的数据元素相同的值,所述目标向量寄存器的所述部分的数据元素与所述源向量寄存器的所述部分的未被选择的数据元素相对应。
7.如权利要求6的数据处理装置,其中如果所述第二类型的所述向量微操作指定了与所述源向量寄存器和所述目标向量寄存器相同的寄存器,那么所述替换微操作包含空微操作。
8.如权利要求6的数据处理装置,其中如果所述第二类型的所述向量微操作指定了与所述源向量寄存器和所述目标向量寄存器相同的寄存器,那么所述替换微操作包含用于将所述目标向量寄存器的所述至少一部分设置为与所述源向量寄存器的相应部分相同的值的微操作。
9.如权利要求6至8任一项的数据处理装置,其中如果所述第二类型的所述向量微操作指定了与所述源向量寄存器和所述目标向量寄存器不同的寄存器,那么所述替换微操作包含用于将所述目标向量寄存器的所述至少一部分设置为与所述源向量寄存器的相应部分相同的值的微操作。
10.如权利要求1的数据处理装置,其中响应于第二类型的所述向量微操作,所述控制电路被配置为控制该处理电路以使得所述目标向量寄存器的所述部分的数据元素的值被保持,所述目标向量寄存器的所述部分的数据元素与所述源向量寄存器的所述部分的未被选择的数据元素相对应。
11.如权利要求1的数据处理装置,其中所述控制信息包含以下信息中的至少一者:
(i)掩码信息,该掩码信息指定所述源向量寄存器的所述部分的哪些特定数据元素或数据元素组为被选择的数据元素,如果该掩码信息指示所述源向量寄存器的所述部分的所有数据元素均非被选择的数据元素,那么所述预定条件被满足;
(ii)向量长度信息,该向量长度信息指示响应于所述向量微操作而将要被处理的数据元素的数量,如果所述向量长度信息具有一个或多个预定值中的一个,那么所述预定条件被满足;
(iii)向量格式信息,该向量格式信息指定存储于所述源向量寄存器或所述目标向量寄存器的向量操作数的格式,如果所述向量格式信息具有一个或多个预定值中的一个,那么所述预定条件被满足。
12.如权利要求1的数据处理装置,其中所述控制电路被配置为维护控制指示符,该控制指示符指示所述控制信息是否指示所述源向量寄存器的所述部分的所有所述数据元素均为未被选择的数据元素,并且如果所述控制指示符具有预定值,那么确定所述预定条件被满足。
13.如权利要求12的数据处理装置,其中所述控制电路被配置为响应于所述控制信息的更新来判断所述控制指示符。
14.如权利要求1的数据处理装置,其中所述控制电路包含分发电路和发布电路;
所述分发电路被配置为解码微操作并将经解码的微操作分发给所述发布电路;
所述发布电路被配置为发布供所述处理电路处理的微操作。
15.如权利要求14的数据处理装置,其中所述分发电路被配置为检测所述控制信息是否满足所述预定条件,并且如果所述控制信息满足所述预定条件,则向所述发布电路分发所述替换微操作而非所述向量微操作。
16.如权利要求15的数据处理装置,其中所述分发电路被配置为,如果该分发电路检测到所述向量微操作的控制信息仍将基于另一微操作的结果而被更新,则向所述发布电路分发所述向量微操作而不用所述替换微操作来替换所述向量微操作。
17.如权利要求15和16中任一项的数据处理装置,其中所述分发电路被配置为维护第一控制指示符,该第一控制指示符指示所述控制信息是否指示所述源向量寄存器的所述部分的所有数据元素均为未被选择的数据元素,并且基于所述第一控制指示符来判断所述预定条件是否被满足。
18.如权利要求17的数据处理装置,其中所述发布电路被配置为,维护第二控制指示符,该第二控制指示符指示所述控制信息是否指示所述源向量寄存器的所述部分的所有数据元素均为未被选择的数据元素;并且
响应于所述控制信息的更新,所述发布电路被配置为,如果所述控制信息的更新导致所述第二控制指示符的更新,则触发所述分发电路更新所述第一控制指示符。
19.如权利要求17的数据处理装置,其中响应于用于设置所述控制信息的指令的分发,所述分发电路被配置为将所述第一控制指示符设置为指示所述控制信息指示所述源向量寄存器的所述部分的所有数据元素并非都为未被选择的数据元素。
20.如权利要求14的数据处理装置,其中所述发布电路被配置为检测所述控制信息是否满足所述预定条件,并且如果所述控制信息满足所述预定条件,那么用所述替换微操作来替换所述向量微操作。
21.如权利要求1的数据处理装置,其中所述向量操作数包含可变数目的数据元素,这些数据元素具有选自于多个数据元素大小的数据元素大小。
22.一种数据处理装置,包括:
向量寄存器存储装置,用于储存包含多个数据元素的向量操作数;
处理装置,用于利用从所述向量寄存器存储装置获得的向量操作数来执行向量处理;以及
控制装置,用于响应于向量微操作来控制所述处理电路执行该向量处理;
其中,响应于向量微操作,该微操作指定所述向量寄存器存储装置的源向量寄存器和目标向量寄存器,其中所述源向量寄存器的一部分包括多个连续数据元素并且该部分内的每个数据元素是被选择的元素或未被选择的元素,并且所述向量微操作与针对所述源向量寄存器的所述部分的每个数据元素指示该数据元素是被选择的元素还是未被选择的元素的控制信息相关,所述控制装置被配置为:
(a)检测所述控制信息是否满足预定条件,该预定条件指示所述源向量寄存器的所述部分中的所有元素是未被选择的元素;
(b)若所述控制信息不满足所述预定条件,则控制所述处理装置利用所述源向量寄存器的所述部分的一个或多个被选择的元素来处理所述向量微操作,以执行预定处理操作,进而生成结果,所述结果被存储于所述目标向量寄存器的与所述源向量寄存器的所述部分相对应的部分;
(c)若所述控制信息满足所述预定条件,则利用替换微操作来替换所述向量微操作,该替换微操作具有比所述向量微操作更低的处理延迟并且在所述控制信息满足所述预定条件的情况下为所述目标寄存器的所述部分提供与所述向量微操作相同的结果,以及控制所述处理装置处理所述替换微操作。
23.一种由装置处理数据的方法,该装置包含被配置为储存包含多个数据元素向量操作数的向量寄存器存储装置,和被配置为利用从该向量寄存器存储装置获得的向量操作数来执行向量处理的处理电路,该方法包含:
接收向量微操作,该向量微操作指定所述向量寄存器存储装置的源向量寄存器和目标向量寄存器,其中所述源向量寄存器的一部分包括多个连续数据元素并且该部分内的每个数据元素是被选择的元素或未被选择的元素,并且所述向量微操作与控制信息相关,该控制信息针对所述源向量寄存器的所述部分的每个数据元素指示该数据元素是被选择的元素还是未被选择的元素;
响应于所述向量微操作,检测所述控制信息是否满足预定条件,该预定条件指示所述源向量寄存器的所述部分中的所有元素是未被选择的元素;
如果所述控制信息不满足所述预定条件,控制所述处理电路利用所述源向量寄存器的所述部分的一个或多个被选择的元素来处理所述向量微操作以执行预定处理操作,进而生成结果,所述结果存储于所述目标向量寄存器的与所述源向量寄存器的所述部分相应的部分;
如果所述控制信息满足所述预定条件,利用替换微操作来替换所述向量微操作,该替换微操作具有比所述向量微操作更低的处理延迟并且在所述控制信息满足所述预定条件的情况下对所述目标寄存器的所述部分提供与所述向量微操作相同的结果,以及控制所述处理电路处理所述替换微操作。
24.一种存储计算机程序的计算机可读存储介质,当计算机程序由计算机执行时,该计算机程序提供与根据权利要求1至21中的任一项的数据处理装置相应的虚拟执行环境。
CN201510091541.4A 2014-03-07 2015-02-28 用于处理向量操作数的数据处理装置和方法 Active CN104899181B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1404037.2 2014-03-07
GB1404037.2A GB2523823B (en) 2014-03-07 2014-03-07 Data processing apparatus and method for processing vector operands

Publications (2)

Publication Number Publication Date
CN104899181A CN104899181A (zh) 2015-09-09
CN104899181B true CN104899181B (zh) 2020-01-03

Family

ID=50554680

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510091541.4A Active CN104899181B (zh) 2014-03-07 2015-02-28 用于处理向量操作数的数据处理装置和方法

Country Status (4)

Country Link
US (1) US10514919B2 (zh)
KR (1) KR102256188B1 (zh)
CN (1) CN104899181B (zh)
GB (1) GB2523823B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11544214B2 (en) * 2015-02-02 2023-01-03 Optimum Semiconductor Technologies, Inc. Monolithic vector processor configured to operate on variable length vectors using a vector length register
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
GB2549737B (en) * 2016-04-26 2019-05-08 Advanced Risc Mach Ltd An apparatus and method for managing address collisions when performing vector operations
US10628157B2 (en) * 2017-04-21 2020-04-21 Arm Limited Early predicate look-up
US10963253B2 (en) * 2018-07-10 2021-03-30 Arm Limited Varying micro-operation composition based on estimated value of predicate value for predicated vector instruction
CN113015958A (zh) * 2018-09-18 2021-06-22 优创半导体科技有限公司 实现掩蔽向量指令的系统和方法
CN111338694B (zh) * 2018-12-19 2022-05-31 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
US11327766B2 (en) * 2020-07-31 2022-05-10 International Business Machines Corporation Instruction dispatch routing
US11714652B2 (en) * 2021-07-23 2023-08-01 Advanced Micro Devices, Inc. Zero operand instruction conversion for accelerating sparse computations in a central processing unit pipeline

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62202264A (ja) * 1986-02-07 1987-09-05 Fujitsu Ltd ベクトル演算処理方式
US4841438A (en) * 1985-09-19 1989-06-20 Fujitsu Limited System for generating mask pattern for vector data processor
US5903769A (en) * 1997-03-31 1999-05-11 Sun Microsystems, Inc. Conditional vector processing
US5940625A (en) * 1996-09-03 1999-08-17 Cray Research, Inc. Density dependent vector mask operation control apparatus and method
US7739482B2 (en) * 1991-07-08 2010-06-15 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4949250A (en) * 1988-03-18 1990-08-14 Digital Equipment Corporation Method and apparatus for executing instructions for a vector processing system
US7676647B2 (en) * 2006-08-18 2010-03-09 Qualcomm Incorporated System and method of processing data using scalar/vector instructions
US9529592B2 (en) * 2007-12-27 2016-12-27 Intel Corporation Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation
US8713912B2 (en) * 2010-07-12 2014-05-06 Raytheon Company Solid propellant rocket motors employing tungsten alloy burst discs and methods for the manufacture thereof
US8904153B2 (en) * 2010-09-07 2014-12-02 International Business Machines Corporation Vector loads with multiple vector elements from a same cache line in a scattered load operation
US8539206B2 (en) * 2010-09-24 2013-09-17 Intel Corporation Method and apparatus for universal logical operations utilizing value indexing
GB2484654B (en) * 2010-10-12 2013-10-09 Advanced Risc Mach Ltd Conditional selection of data elements
US20120216011A1 (en) * 2011-02-18 2012-08-23 Darryl Gove Apparatus and method of single-instruction, multiple-data vector operation masking
US8880857B2 (en) * 2011-04-07 2014-11-04 Via Technologies, Inc. Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor
US20130029068A1 (en) * 2011-07-28 2013-01-31 Eastman Chemical Company Extrusion blow molded articles
WO2013085491A1 (en) * 2011-12-06 2013-06-13 Intel Corporation System, apparatus and method for translating vector instructions
WO2013095554A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Processors, methods, systems, and instructions to generate sequences of consecutive integers in numerical order
US9146741B2 (en) * 2012-04-26 2015-09-29 Qualcomm Incorporated Eliminating redundant masking operations instruction processing circuits, and related processor systems, methods, and computer-readable media

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4841438A (en) * 1985-09-19 1989-06-20 Fujitsu Limited System for generating mask pattern for vector data processor
JPS62202264A (ja) * 1986-02-07 1987-09-05 Fujitsu Ltd ベクトル演算処理方式
US7739482B2 (en) * 1991-07-08 2010-06-15 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US5940625A (en) * 1996-09-03 1999-08-17 Cray Research, Inc. Density dependent vector mask operation control apparatus and method
US5903769A (en) * 1997-03-31 1999-05-11 Sun Microsystems, Inc. Conditional vector processing

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
SIMD数据置换指令的自动生成与优化;陈向;《中国优秀硕士学位论文全文数据库(电子期刊) 信息科技辑》;20120215;第2012年卷(第2期);全文 *
一种SIMD优化中的向量寄存器部分重用方法;钱兴隆等;《计算机工程与科学》;20070604;第29卷(第5期);141-146 *

Also Published As

Publication number Publication date
CN104899181A (zh) 2015-09-09
KR20150105199A (ko) 2015-09-16
US10514919B2 (en) 2019-12-24
US20150254077A1 (en) 2015-09-10
GB2523823A (en) 2015-09-09
GB2523823B (en) 2021-06-16
KR102256188B1 (ko) 2021-05-26
GB201404037D0 (en) 2014-04-23

Similar Documents

Publication Publication Date Title
CN104899181B (zh) 用于处理向量操作数的数据处理装置和方法
US10776124B2 (en) Handling exceptional conditions for vector arithmetic instruction
US11003450B2 (en) Vector data transfer instruction
US9411589B2 (en) Branch-free condition evaluation
US9256427B2 (en) Tracking multiple conditions in a general purpose register and instruction therefor
US9081564B2 (en) Converting scalar operation to specific type of vector operation using modifier instruction
US9965275B2 (en) Element size increasing instruction
US10564968B2 (en) Vector load instruction
WO2001006353A1 (en) Conditional instruction execution in a computer
KR101016257B1 (ko) 프로세서 및 정보 처리 장치
US9081581B2 (en) Size mis-match hazard detection
US7406587B1 (en) Method and system for renaming registers in a microprocessor
US11392386B2 (en) Program counter (PC)-relative load and store addressing for fused instructions

Legal Events

Date Code Title Description
C06 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