并行原子递增的制作方法
【专利摘要】本发明的一些特定的示例性实施例提供了一种并行原子递增。一个vgather指令将存储器位置的值返回到多个处理单元。一个vgather_hit指令将命中的数目的函数返回到存储器位置。在一个实施例中,该函数是统一的。在另一实施例中,该函数是具有次序指定小于或等于收到返回值的处理单元的命中的数目。
【专利说明】并行原子递增
【技术领域】
[0001]本说明书涉及并行处理的领域,并且更具体地涉及一种提供并行原子递增功能的微处理器。
【背景技术】
[0002]并行处理,例如,由一个数字信号处理器(DSP)来执行以优化数字信号处理算法,在存储器访问操作中趋于密集。例如,一个DSP可以作为一个单指令,多数据(SIMD),或数据并行处理器。在SMD操作中,单指令被发送到一个数字信号处理器的多个处理单元,其中每个处理单元可以对不同的数据执行相同的操作。为了实现高数据吞吐量,具有SMD架构(或其它支持并行处理的处理器)的DSP的存储器组织支持多个、同步的数据访问。举一个例子,处理器架构可包括通过存储器互连网络架构互连到处理单元的多组存储器,以使得多于一个的数据操作对象可以在一个给定的循环过程中被加载到(被其访问)处理单
J Li ο
[0003]存储器互连网络架构通常包括为每一个各自的并行数据传输的互连网络。例如,如果为了执行一个操作,需要两个从存储器到处理单元的并行数据传输,存储器互连网络架构实现了一个互连网络将第一数据集从存储器传输到处理单元,以及另一个互连网络将第二数据集从存储器传输到处理单元。
【专利附图】
【附图说明】
[0004]本发明可以结合附图并从下面的详细描述中得到很好的理解。需要强调的是,按照通常做法,各种特征不是按比例绘制,仅用于说明的目的。
[0005]图1是为提供一个并行原子递增指令的数字信号处理器的框图。
[0006]图2是一个数字信号处理器的处理单元的框图。
[0007]图3是表示一个微处理器执行并行原子递增指令的第一状态的框图。
[0008]图4是表示一个微处理器执行并行原子递增指令的另一个状态的框图。
[0009]图5是表示一个微处理器执行并行原子递增指令的又一个状态的框图。
[0010]图6是表示一个微处理器执行并行原子递增指令的再一个状态的框图。
[0011]图7是表示一个微处理器执行并行原子递增指令的再又一个状态的框图。
[0012]图8是表示一个微处理器执行并行原子递增指令的再又一个状态的框图。
[0013]图9是表示一个微处理器执行并行原子递增指令的再又一个状态的框图。
[0014]图10是用于提供并行原子递增指令的局部逻辑的方框图。
【发明内容】
[0015]在一个示例实施例中,公开了一种计算机可执行的方法,包括:接收多个对于一个存储器位置的同步读取请求;返回存储器位置的值和多个同步读取请求的函数的值;计算存储器位置的值和读取请求的数目的值的总和;将该总和写回到存储器位置。
[0016]在另一个示例性实施例中,公开了一种微处理器,包括多个被配置为同步访问存储器位置的处理单元,其中微处理器被配置为,当接收到多个对存储器位置的读取请求时,将包含在存储器位置的值和访问了存储器位置的处理单元的数目的函数的值返回到至少一个处理单元中。
[0017]在又一个示例性实施例中,公开了一种微处理器,其提供一个矢量命中指令,矢量命中指令被配置为在第一时分期间从多个处理单元接收多个指向存储器位置的读取请求;在第二时分期间返回到至少一个处理单元一个值,其为在第一时分期间为存储器位置提供了读取请求的处理单元的数目的函数。
【具体实施方式】
[0018]下面的描述提供了许多不同的实施例或示例,用于实施本发明的不同特征。部件和安排的具体实例描述如下,以简化本发明。当然,这些仅仅是示例,并且不旨在进行限制。进一步地,本发明可以在各种示例中重复附图标记和/或字母。这种重复是为了简化和清楚的目的,并不限于自身表明的所讨论的各种实施例和/或配置之间的关系。
[0019]原子递增通常是由一定种类的并行微处理器如图形处理单元(GPU)和数字信号处理器(DSP)提供的操作,并且在程序语言OpenCL中作为一个本地方法被提供。原子递增保证,如果多个线程对一个存储器位置执行相同的操作,结果是一致的。例如,假设名为“进程A”和“进程B”的两个线程都运行在一个数据集上来创建直方图,对一个确定的值都可以找到一个“命中点”,并访问计数值被存储的存储器位置,例如十六进制位置0x100。假设该位置0x100包含值” 0”,进程A会从0x100处读取值0,并将其加载到一个寄存器。在下一个时钟周期,进程A将该值递增到“ I ”,但进程B在进程A递增时可能也从0x100读取值“O”。进程A然后将“ I ”写到0x100,最终进程B将“ I ”写到0x00。
[0020]其结果是不正确的。因为两个线程的每一个对该值发现一个命中,正确的递增值应为“2”。所以一个原子递增操作被提供以保证如果两个线程访问存储器位置,正确的值“2”将被写入。原子递增函数的一般的原型可为以下形式:
[0021]int atomic_inc (int*p)
[0022]原子递增接受一个指向一个存储器位置的指针,锁定所指向的位置,递增所指向的值,并返回旧的指向值。因此,在上例中,两个线程可以调用:
[0023]old = atomic_inc (0x100);
[0024]当进程A调用atomicjnc,一个锁定被放置在存储器位置0x100。当进程B在锁定到位时试图读取位置0x100,将须等进程A完成了递增操作。进程A将该值递增到“1”,并收到返回的“0”(旧值)。方法B然后被允许访问该存储位置,将该值递增到“2”,并且接收“I”作为返回值。
[0025]一个依赖于锁定状态的原子操作会内在地造成其它的并行进程线性化。例如,进程A和进程B可运行在单个数据集的分离的块。这两个可以同时为一个特定的值定位命中,并为该值更新直方图输入。但是,因为处理A锁定了存储器位置,进程B将被强制等待,就好像递增是一个串行操作。
[0026]但是,原子递增操作的并行版本允许两个进程A和进程B正确地并行递增存储器位置。例如,一个单指令多数据(SMD)的微处理器可提供多个处理单元(PEs),每个工作在一个数据集的单独的块以形成一个直方图。如果三个PE设备在大致相同的时间定位同一个值,每一个都会同时通过一个特定的“vgather”指令对OxlOO发出一个读取请求。作为对vgather指令的响应,每个PE接收第一寄存器的旧值,和第二寄存器中访问了存储器位置的PE的数目。本领域技术人员也会认识到,该方法可以通过对任一值返回一个简单的、可逆的函数而被很容易的替换,例如一个常数或一个乘数的偏移。对本说明书的目的,对返回值的任何简单变换函数被当作返回值本身的完全等效。
[0027]因此,在执行“vgather”指令后,每个PE都知道旧值,并且知道有三个PE访问了该值。每个PE对该值递增三次,而不是对旧值递增一次。然后,这些PE的每一个对存储器位置发出一个写请求,正确的值被存储。
[0028]该指令的一个更广义的版本,还可以或可选提供,并且对一定的压缩操作更加有用。在这种情况下,PE由一个有序指定值确定优先级。例如,如果一个微处理器包含8个PE,它们将被编号为0-7。在这个“vgather”指令版本中,每一个处理器接收发出读去请求的PE的数目的函数,尤其是在本实施例中,具有指定值的PE的数目小于或等于发出请求的PE的数目。因此举例来说,在PE0、1和3在同一时钟周期各自对位置为0x100发出vgather指令。每个接收“O”作为0x100的旧值。PEO收到“I”作为PE数目的返回值,因为它是对0x100发出读取请求的具有指定值或者或更低的唯一的PE。PEl收到“2”作为PE数目的返回值,因为PEl和PEO具有小于或等于PEl的指定值。PE3收到“3”作为PE数目的返回值,因为PE3、PEl和PEO都有一个小于或等于PE3的指定值。
[0029]在下一个时钟周期,PE3、PE1和PEO都试图写一个值返回给0x100,形成了紊乱情况。微处理器提供了一个规则来判决哪个值可以写。例如,在本实施例中,具有最高指定在PE可以被允许写回,在这种情况下即PE3,其已经正确的递增了数目3。所以在这个时钟周期之后,PE3具有值“3”,其被写回0x100。现在的位置正确的反映了三个新的事件已经被定位。
[0030]参照附图可以更好的理解示例性实施例的更多的细节。然而,应当理解的是,附图只提供一个或多个示范性实施例,并且本领域的技术人员将理解和认识到基于本发明公开的实施例的许多适当的变换是可能的,并且也不是要通过所公开的具体实施例来限定权利要求。
[0031]图1是一个数字信号处理器(DSP) 100的一个示范性的实施例的框图。DSP100包括处理核心110,其包括多个处理单元112。每个处理单元被有序的指定值索引,在这种情况下为从O到7,以使PEl 12-1被指定为PEO,PEl 12-2指定为PEl,依此类推到PEl 12-8指定为PE7。虽然本例中公开了一个有8个处理单元的DSP100,本领域技术人员将认识到PE的数量是一个普通的设计选择,而且对于本公开的目的,DSP100可以具有任何数量的PE,其提供基本的并行操作。PE112可以数字信号处理算法执行数字处理,并可以独立地操作、并行操作,或作为一个SMD引擎。PE112可以是矢量处理器,如在本示例性实施例中,也可以是标量和矢量处理器的任意组合。
[0032]本领域的技术人员将会认识到,虽然DSP100被披露为“数字信号处理器”,这是可以适于与本发明使用的许多不同的类型微处理器中的一个例子。例如,DSP100可以在其他实施例中是一个中央处理单元、微控制器、图形处理单元、现场可编程门数组或专用集成电路,以非限制性示例的方式。
[0033]DSPlOO经由数据总线170可通信地耦合到存储器120。内存120可以是,例如,随机存取存储器或非易失性存储器。存储器120是一个逻辑指定,本领域技术人员将认识至IJ,存储器120可以被分成核上缓存、主存储器、分页,以及非易失性存储器中的一个或多个层。在一些实施例中处理速度至关重要,存储器120可以是一个高速、低延迟的存储器技术。
[0034]控制单元150可通信地耦合到处理核心110,可以解码和提供软件指令152。在一些实施例中,指令152包括选择性地启动在PE112的电路的信号。一个示例性的SMD方法包括:提供一个指令到多个PE112,每个PE运行在分离的存储地址。然而,这不应该与运行在分离的直方数组相混淆。例如,给定一个4色调图像,8个单独的PE112可以在八个分离的图像区域,其每个寻找四个音调的出现。每个PE112更新一个直方图数组四个位置。直方图适用于整个图像,因此,所有8个PE112应当能够访问和更新直方图。
[0035]时钟130调节DSP100的时序。时钟130可以控制不仅指令152的执行,而且对存储器120访问的次数。A “时钟周期”通常用来指围绕一个普通的单个循环的时间,交替的时钟130的低-高循环。在某些情况下,PE112被配置以在每个时钟周期执行单条指令152。但本领域普通技术人员将认识到,某些指令需要多个时钟周期来执行,而执行一系列指令可以更一般地被分成一系列时间分割,并且每个时分不一定在时间与每一个或或任何其他时间分割相等。
[0036]因为多个PE112可能会在一个单一的时分期间尝试从同一个存储器位置读取或写入到其中,控制单元150可能需要在PE112之间进行判决。例如,如果在PE112-1U12-4和112-8在一个时分过程中每个尝试写入相同的内存位置,控制单元150可允许只有一个值被写入到存储器120并丢弃其他。例如,控制单元150可以接受来自最高编号的PE的值,在此情况下即PE7112-8。其他对多个写入请求之间进行判决的算法是本领域已知的。与此相反,多个读取请求不一定会导致数据冲突。在多个读取请求的情况下,控制单元150仅仅从存储器120中取得所请求的值,并将其提供给请求该值的各个PE112。对这些操作来说,控制单元150知道每个PE112试图访问内存120的标识,并在总数上知道在一个单一的时分期间有多少PE112试图访问相同的内存位置,是其固有。
[0037]最后,处理核心110可通信地耦合到一个或多个外围驱动器140,它使处理核心110与其它系统元件如通信网络或人机接口进行通信,通过非限制性实施例的方式。
[0038]图2是一个示例性的处理单元112的一个实施例的框图。PE112接收时钟130和指令152,如图1所述。PE112还与总线170可通信的耦合,使能PE112提出要求对一个内存位置进行读或写访问。虽然本示例性实施例示出了一个到总线170的直接连接,本领域技术人员将认识到,在某些情况下,控制单元150 (图1)或其它选择电路可在单一 PE112和存储器120之间调节。
[0039]PE112包括一个逻辑单元210,其可以包括用于执行一个或多个指令的电路。当一个指令152被提供给逻辑单元210,指令152可以包括用于选择来执行的指令电路的数据。指令可依赖于一个或多个寄存器220,其存储临时值由逻辑单元210立即访问。在一般情况下,一个寄存器220可由存储器120(图1)或由逻辑单元210提供值。当寄存器值被从存储器120(图1)检索,数据缓冲器230可以用于临时缓冲值,直到读或写请求完成。
[0040]图3是一个显示了实施并行原子递增的示例性的方法的框图。在示范实施例中,多个PE设备112包含索引值。例如,示例性的方法可以是涉及创建一个四个色调图像的直方图。在这种情况下,这四个色调的直方图存储在数组310,其被包含在存储器120(图1)中。数组310包括四个存储器位置索引O到3,代表四个色调。在时间t = 0时,一些像素处理已经发生,所以数组[O]包含十六进制值0x12,意味着在T = O之前,具有该值的0x12像素被发现。同样,数组[I]包含0x3A,数组[2]包含ΟχΟΒ,数组[4]包含0x85。同样在t = O之前,DSP100 (图1)扫描图像的8个像素,发现三个强度为O (这些值通过PEOl 12-1、PE2112-3 和 PE3112-4 收到)。两个强度为 I (PEl112-2 和 PE4112-5),两个强度为2(PE5112-6和PE6112-7),以及一个强度为3(PE7112-8)。每个PE112在索引寄存器I中保持它的索引值320。在t = O时,每个PE112发出指令,如示范性“vgather”指令,它发出一个读请求到存储器120(图1),寻求数组[I]中的值。
[0041]现在来看图4,在t = I时,每个PE112接收从vgather指令的返回值。每个PE112包括两个通用寄存器R0410和R1420。每个PEl 12接收R0410中的数组[I]的旧值,并且接收Rl中在t = O的期间访问数组[I]的PEll的数量的函数的值。在此示例性实施例中,该函数是统一的,所以每个PE112接收访问的数组[I]的PE112的总数的值。PE0112-1、PE2112-3 和 PE3112-4 每个接收 0x12 到 R0410 和 0x3 到 R1420。PE1112-2 和 PE4112-5 都接收值 0x3A 到 R0410 和 0x2 到 R1420。PE5112-6 和 PE6112-7 都接收值 OxOB 到 R0410 和值 0x2 到 R1420。PE7112-8 接收值 0x85 到 R0410 和 Oxl 到 R1420。
[0042]因此,在时刻t = 1,每个PE112知道数组[I]的旧值,其代表先前遇到的具有那种强度的像素的数目,和发出读请求到数组[I]的PE112的数目,其代表在该过程中具有那种强度的像素的数目。在时刻t = 2时,为了更新直方图,每个PE112执行SMD指令RO=R0+R1,如图5所示。现在每个PE112在R0410中保持准确“击中”强度[I]的像素的数目。每个PEl 12也仍然在索引寄存器320中保持包含强度[I]的像素数量的内存位置的索引值。
[0043]在图6中,在时刻t = 3,每个PE112发出将其在RO中保持的值写回到数组[I]的请求,这也是对直方图的更新的命中计数。因为不止一个PE112可尝试写入到数组[I],控制器150可提供判决。例如,具有最高指定值的PE112可被授予写访问权,因此在这种情况下,PE3112-4、PE4112-5、PE6112-7和PE7112-8将分别被授予与它们的各自的存储器位置相应的写访问权。
[0044]图7是显示了提供“Vgather_hit”指令的第二个示例性实施例的框图。在这种情况下,图7示出了在时刻t = O来自多个PE112的到数组310的多个读请求。例如在图3,每个PE112包括一个索引寄存器320。为了便于说明,图7中每个PE112和在数组310中的每个位置包含与图3中所示的相同的数据。
[0045]在图8中,在时间t = I,而不是返回发出读请求的PE112的总数目,vgather_hit返回向该存储器位置发出读请求的PE112的数目的函数。具体地,每个PE接收在寄存器RO中的指定值小于或等于该PE的指定值的PE的数目。因此,PE0、PE2和PE3分别接收“0x0”到 Rl0 PEO 接收“0x1” 到 R0, PE2 接收“0x2” 到 R0, PE3 接收“0x3” 到 R0。同样,PEl 和PE4都接收“0x1”到Rl0 PEl接收“0x1”到R0, PE4接收“0x2”到R0。PE5和PE6都接收“0x2” 到 Rl0 PE5 接收“0x1” 到 R0,PE6 接收“0x2” 到 R0。PE7 接收“0x3” 到 Rl,“0xl” 到RO0值得注意的是,虽然该vgather_hit的实施方案也将返回存储器位置的旧值到R0,这一行为是不必要的。在一些应用中,唯一感兴趣的值是该实施例中Rl中提供的命中计数的函数,并可能是提供的唯一的值。
[0046]在图9中,每个PE112执行矢量和操作RO = R0+R1,之后PEO包含“0x13”在RO中,PEl 包含“0x3B”,PE2 包含“0xl4”,PE3 包含“0xl5”,PE4 包含“0x3C”,PE5 包含“OxOC”,PE6 包含 “ OxOd”,PE7 包含 “0x86”。
[0047]在t = 3,每个PE112然后尝试把它的值写回到它的索引寄存器320所指向的位置。在这种情况下,PEOl 12-1,PE2112-3和PE3112-4每个尝试写入到存储位置O中。控制器150提供判决,例如通过接受具有最高顺序指定的PE112的写值,在这种情况下,PE3112-4。因此,数组[O]接收0x15。但是,本领域技术人员将认识到其他判决方法是可用的,并且可以适当的使用。
[0048]同样,PEI和PE4都试图写入数组[I],并且PE4获胜,从而使数组[I]接收为0x3C。PE5和PE6都试图写入数组[2],并且PE6胜,因而数组[2]接收ΟχΟΒ。ΡΕ7是唯一的写入至擞组[3]的ΡΕ112,所以在这种情况下没有判决是必要的。
[0049]图10是一个级联的逻辑电路的框图,揭示了图7 9所公开的实施例的逻辑的一种示例性的硬件实现。该电路被划分成多个“电平”,每一级处理与逐步的更高编号的ΡΕ112的逻辑。每个ΡΕ112具有一个与它关联地址1010,这即是被读出的存储器的位置。对于比PEO更高的每个PEl 12,提供一个逻辑块1060,其上设置有比较器1030、与门1040,以及加法器1050。逻辑块1060将被测试PE的索引寄存器与一个低次序指定的PE的索引寄存器进行比较。如果索引寄存器相匹配并且PE已被启用,命中计数递增一,加法器也被递增一。PEO是一种特殊情况,因为它的计数总会刚好是一。因为每个额外的逻辑电平比之前的水平包括一个更多的逻辑块1060,每个逻辑块可能比之前的水平多出一个“命中”。
[0050]在图10中也公开的是一个“使能”操作器1020。使能操作器1020可用于有选择地选择或取消选择列入“命中计数”的特定的ΡΕ112。举例来说,任何使能操作器设置为“I”或“启用”的ΡΕ112被包含在内,而任何使能操作器设置为“O”或“未启用”的ΡΕ112则被排除在计数之外。因此,例如,如果使能操作器1020为ΡΕ0-ΡΕ1,则ΡΕ3-ΡΕ7被设置为“1”,而若ΡΕ2的使能操作器1020被设置为“0”,ΡΕ2将被忽略,其目的为了此处提供的向量指令。
[0051]图7 10所公开的原子递增操作的变换方案对于例如将数组压缩成列表的方法是有用的。例如,在Canny边缘检测滤波器,唯一关注的像素是那些具有高于阈值的梯度幅值的。所有其它的被忽略。因此,给定一组数据:
[0052]0 10 0-1203
[0053]一个Canny过滤器可被指定任务去找到所有具有非零值的像素的偏移量。一个并行操作可被执行,例如:
[0054]for (i = j = O ;i〈N ;i++)
[0055]if (pixel [i])
[0056]list [atomic_inc (&j) ] = i ;
[0057]该循环可以被展开和执行,例如对于8个PE,每个PE检查一个像素。所得的非零像素的列表可以是以下形式:
[0058]4 5 7
[0059]在这种情况下,图3 6所公开的原子递增中是不合适的,因为每个PE会尝试将它的位置写回到数组“list □”中的相同位置。然而,图7 10的实施例会工作,因为每个PE现在会收到一个唯一的地址。
[0060]随着一个序列化的原子递增指令,这个循环将在8个连续的时间分割上执行。但是随着并行原子递增,整个循环可以在一个单一的时间分割上对8个PE执行。前面的代码可以在一个示例性的矢量处理器架构的汇编指令的形式来作进一步说明。
【权利要求】
1.一种计算机可执行的方法,包括: 接收多个对于一个存储器位置的同步读取请求; 返回存储器位置的值和多个同步读取请求的函数的值; 计算存储器位置的值和读取请求的数目的值的总和; 将该总和写回到存储器位置。
2.根据权利要求1所述的方法,其中,所述多个同步读取请求是由多个处理单元提供,每一个都具有一个次序指定,并且,其中返回步骤包括返回到每个处理单元以存储器位置和具有低于或等于该处理单元的次序指定值的处理单元发出的读请取求的数目的值。
3.根据权利要求2所述的方法,其中,所述写步骤包括,每一个处理单元试图将总和写回到存储器位置,并从具有最高次序指定的处理单元接收总和。
4.根据权利要求1所述的方法,其中,所述多个同步读取请求是由多个处理单元提供,并且,其中所述返回步骤包括返回到每个处理单元以存储器位置和读取请求的总数的值。
5.根据权利要求1所述的方法,其中,所述计算总和进一步包括:对于每个读取请求检查使能操作器的状态,仅在使能操作器处于使能状态时将该读取请求包含在总和中。
6.一种微处理器,包括: 多个被配置为同步访问存储器位置的处理单元; 其中微处理器被配置为,当接收到多个对存储器位置的读取请求时,将包含在存储器位置的值和访问了存储器位置的处理单元的数目的函数的值返回到至少一个处理单元中。
7.根据权利要求6所述的微处理器,其中所述微处理器被进一步被配置为将包含在存储器位置的值返回到每一个提出读取请求的处理单元。
8.根据权利要求7所述的微处理器,其中: 每个处理单元被分配一个次序指定; 其函数是,对于一个给定的处理单元,具有低于或等于该处理单元的次序指定值的处理单元发出的读请取求的数目的值。
9.根据权利要求8所述的微处理器,其中,所述微处理器被配置为将函数的值提供给每一个向存储器位置提出读取请求的处理单元。
10.根据权利要求9所述的微处理器,其中,所述微处理器被进一步被配置为接收多个从多个处理单元到存储器位置的写请求。
11.根据权利要求10所述的微处理器,其中,所述微处理器被进一步被配置为只接收来自具有最高次序指定的处理单元的写请求。
12.根据权利要求6所述的微处理器,其中,所述微处理器被进一步被配置为将函数的值返回到访问该存储器位置的每一个处理单元。
13.根据权利要求6所述的微处理器,其中,所述微处理器被进一步被配置为将存储器位置中包含的值和函数的值返回到访问该存储器位置的每一个处理单元。
14.根据权利要求13所述的微处理器,其中所述函数是统一的。
15.根据权利要求6所述的微处理器,其中所述函数是统一的。
16.根据权利要求6所述的微处理器,其中,每一个处理单兀有一个关联的使能操作器,并且,所述微处理器进一步被配置为只在处理单元的使能操作器处于使能状态时才认为该处理单元已访问了存储器位置。
17.一种提供矢量命中指令的微处理器,其矢量命中指令被配置为: 在第一时分期间从多个处理单元接收多个指向存储器位置的读取请求;在第二时分期间返回到至少一个处理单元一个值,其为在第一时分期间为存储器位置提供了读取请求的处理单元的数目的函数。
18.根据权利要求17所述的微处理器,其中,所述矢量命中指令进一步将存储器位置的一个值提供给至少一个处理单元。
19.根据权利要求18所述的微处理器,进一步提供一个矢量写指令,其被配置为: 在第三时分期间,从多个处理单元接收多个指向存储器位置的写请求; 选择性的接收其中一个写请求,将其写到存储器位置。
20.根据权利要求19所述的微处理器,其中,所述微处理器基于分配给每一个处理单元的次序指定选择性的接收其中一个写请求。
21.根据权利要求17所述的微处理器,其中所述函数是统一的。
22.根据权利要求17所述的微处理器,其中,为每一个处理单元分配一个次序指定,所述函数为,对于每一个处理单元,具有低于或等于该处理单元的次序指定值的发出读取请求的处理单元的数目。
23.根据权利要求17所述的微处理器,其中,每一个处理单元有一个关联的使能操作器,并且,矢量命中指令进一步被配置为只在处理单元的使能操作器处于使能状态时才认为该处理单元已提出了读取请求。
【文档编号】G06F9/38GK104166539SQ201410191687
【公开日】2014年11月26日 申请日期:2014年5月8日 优先权日:2013年5月17日
【发明者】B·勒纳, J·L·瑞德福德 申请人:美国亚德诺半导体公司