处理器和数据收集方法_4

文档序号:9564399阅读:来源:国知局
何时执行存储器访 问,将array[0]· b至array[Q_l]· b存储到缓冲器96的道wO至wQ-1,同时丢弃array[0]· a至array [Q-l]. a。此后,数据元素的一个条目被从缓冲器96写入矢量寄存器组97的其 它对应寄存器(参见图16)。
[0109] 如上所述,相比于这个实施例,使用传统方法1的收集指令的方法不可有效地利 用硬件在一个时钟内将多个字加载到存储器的能力。在图15和图16的情况下,收集数据 元素的四个字至少需要四个周期,在该时间段内可利用的存储器带宽( = 4X2)之中,只可 利用1/2的存储器带宽。
[0110] 相反,在根据本实施例的处理器40中,为了确保与矢量寄存器的长度对应的数据 元素的多个字,除了图13的缓冲器96之外,还添加必要数目的缓冲器。也就是说,如上所 述,在存储能够同时访问两个字并且存储高达数据元素的四个字的处理器40中,使用在存 储(两个字)X (四个字)=(16字)的同时重排数据元素的缓冲器。
[0111] 根据这个实施例的针对多个矢量寄存器的收集指令涉及同时加载两个连续的字, 将同时加载的各个字分类到不同的缓冲器461和462,并且改变各个结构的指定写入目的 地道。由此,在将数据元素存储在缓冲器中的步骤的同时,完成数据重排。因此,不同于传 统方法1,不必丢弃除了一个数据元素外的读取的数据元素的多个字。因此,相比于传统方 法1的收集指令,根据这个实施例的收集指令可更有效地利用存储器带宽。
[0112] 在上述条件下,在这个实施例中,通过一个指令收集数据元素的八个字,针对这个 收集需要四个存储器访问和两个寄存器写入操作。因此,相比于传统方法1的收集指令,存 储器访问过程的数目可减少,处理时间可减少,处理效率可提高。
[0113] 将再次描述传统方法2。传统方法2利用加载多个连续字的指令。图17是用于 描述根据现有技术的加载多个字的加载指令的操作构思的示图。图17示出根据传统方法 2的用于实现加载多个字的加载指令的数据处理装置9000a的硬件构造的示例。数据处理 装置9000a包括存储器IOa和处理器90a。在处理器90a中,分别用指令控制电路93a和存 储器访问控制电路95a取代处理器90的指令控制电路93和存储器访问控制电路95,并且 省略与缓冲器96对应的缓冲器。
[0114] 在这个示例中,将描述当矢量寄存器在一个时钟周期内具有同时访问64位的存 储器带宽并且能够存储四个字时加载多个字的指令的操作。
[0115] 在传统方法2中,首先,处理器90a使用加载多个连续字的指令,将第0个结构阵 列的成员变量array [0]. a和array [0]. b存储在一个矢量寄存器97中。处理器90a将结 构阵列的索引加"1"并且重复加载多个字。在这种情况下,需要Q个加载指令(也就是说, 至少Q个时钟周期)。
[0116] 如上所述,在传统方法2中,由于加载了多个连续字,因此可利用高达64位的硬件 的存储器带宽。在传统方法2的情况下,一次将连续数据元素写入同一矢量寄存器的连续 道。因此,结构的不同元素被存储在同一矢量寄存器中,并且难以应用矢量运算。
[0117] 因此,在加载全部数据元素之后,处理器90a对矢量寄存器组97中存储的数据元 素执行重排处理并且收集同一矢量寄存器中的相同成员变量。图18是用于描述根据传统 方法2的在矢量寄存器内的数据重排处理的操作构思的示图。
[0118] 在重排处理开始之前,相同结构阵列的各个成员变量被存储在各个矢量寄存器 中。因此,在这种状态下,成员变量不可用于矢量运算。因此,为了将不同结构阵列的相同成 员变量存储在各个矢量寄存器中,执行重排处理。在这种情况下,具体地,数据元素在矢量 寄存器的各个区域中被重排,同时将各个矢量寄存器的条目暂时保存在缓冲器中。另外,由 于矢量寄存器为每个条目被更新,因此各个区域中的数据元素的重排需要大量的步骤。因 此,重排处理会增加所需指令的数目,这样会增加性能降低的可能性。
[0119] 例如,在传统方法2的以上示例中,为了加载数据的八个字,发出四个指令,需要 四个存储器访问和四个寄存器写入操作。另一方面,如上所述,为了加载数据元素的八个 字,根据这个实施例的收集指令只需要发出一个指令并且执行两个寄存器写入操作。也就 是说,根据传统方法2的加载多个字的加载指令需要四个指令,然而这个实施例只需要一 个指令以获得相同的结果。因此,可执行与收集指令无关的其它操作指令,直到完成根据这 个实施例的收集指令。此外,可利用存储器带宽。另外,与将数据元素存储在缓冲器中并行 地,执行对应于重排处理的过程。因此,相比于传统方法2,不需要进行重排处理的指令,可 防止指令数目和必要寄存器的数目增加,可防止性能降低。
[0120] 〈实施例4>
[0121] 实施例4是上述实施例2的改进例。此外,实施例4解决了传统方法1中的分散 指令和传统方法2中存储多个字的指令中出现的问题。传统方法1和2的问题与加载多个 字的收集指令和加载指令中出现的问题相同。
[0122] 因此,在实施例4中,通过在实施例2的构造中添加至少以下构造,解决以上问题。 也就是说,控制单元写入读取的各个数据元素,使得多个存储单元中的数据元素的存储区 彼此对应。也就是说,从处理器中的相同存储单元读取的数据元素可被写入不同数据集合 的对应存储区的位置。由此,矢量运算的结果可被返回到原始存储位置并且可有效地写入 数据元素。
[0123] 此外,控制单元可优选地响应于将多个矢量数据元素存储在存储器中的指令,针 对多个区域中的每个,从多个存储单元中的对应区域读取各个数据元素。控制单元可优选 地将从对应区域读取的各个数据元素分组,以针对多个区域中的每个形成数据集合。控制 单元可优选地向存储器发出请求,请求将分组后的数据集合的各个数据元素存储在数目与 针对多个区域中每个的矢量数据元素的数目对应的连续存储区中。这样,矢量运算的结果 可适当地被重排成结构的成员变量。
[0124] 另外,控制单元可发出请求并且响应于将多个矢量数据元素存储在存储器中的指 令为多个区域中的每个指定区域,并且使用指定区域作为对应区域从多个存储单元中的每 个读取各个数据元素。这样,例如,根据这个实施例的从存储单元进行读取和存储器访问可 应用于分散指令。
[0125] 另外,多个存储单元均可包括能够在被划分的全体的区域单元中读取和写入数据 的多个寄存器和与各个寄存器对应并且能够在单独的区域单元中读取和写入数据的多个 缓冲器。控制单元可读取多个寄存器中的每个中存储的全部多个数据元素并且将数据元素 共同地写入对应于各个寄存器的各个缓冲器。控制单元可针对寄存器中的对应区域中的每 个,读取各个缓冲器的区域中存储的各个数据元素。控制单元可将读取的数据元素集中在 一起,以针对对应区域中的每个形成写入数据集合,并且将数据集合中的各个数据元素写 入存储器中的相邻存储区。这样,当数据元素被单独读取到可在各个区域单元中灵活读取 数据元素的缓冲器时,对其中难以在各个区域单元中读取数据的矢量寄存器进行的读取操 作的数目可减少并且处理效率可提高。
[0126] 处理器还可包括矢量运算单元,矢量运算单元针对多个存储单元中的各个对应写 入位置共同地执行预定运算,并且将预定运算的结果写入多个存储单元,并且控制单元可 在矢量运算单元写入预定运算的结果之后开始读取。这样,矢量运算的结果可被有效返回 到原始存储器,而不需要进行重排处理。
[0127] 接下来,将详细描述根据实施例4的针对多个矢量寄存器的分散指令。图10是示 出包括根据实施例4的处理器40a的数据处理装置3000a的构造的框图。数据处理装置 3000a是根据实施例2的数据处理装置2000的改进例并且包括存储器30和处理器40a。存 储器30具有与图7的构造相同的构造。
[0128] 这个实施例的分散指令将多个矢量寄存器k至k+Ν-Ι的数据元素存储在设置在存 储器上的结构阵列中。假设根据这个实施例的分散指令包括例如下面的操作数。
[0129] -写入目的地存储器的起始存储器地址A(例如,对应于结构阵列的起始存储区)
[0130] -读取源的起始寄存器号k (k对应于读取目标结构的数目Q并且是等于或小于道 W的上限数目的自然数)
[0131] -针对连续存储器访问的字的数目N (N是大于等于2且小于等于P的自然数)
[0132] -用于更新存储器地址的大小C(C与结构大小P相同)。
[0133] 处理器40a是根据实施例2的处理器20b的改进例。处理器40a包括指令提取电 路41、指令解码电路42、指令控制电路43a、运算电路44、存储器访问控制电路45a、缓冲器 组46和矢量寄存器组47。假设处理器40a可在一个时钟周期内访问数据元素的N个字。 指令提取电路41、指令解码电路42、运算电路44、缓冲器组46和矢量寄存器组47与图7的 那些相同。然而,假设数据元素被预先存储在矢量寄存器组47的矢量寄存器471和472的 各个道中。例如,预定矢量运算的结果可被存储在矢量寄存器471和472中。
[0134] 存储器访问控制电路45a是控制从处理器40a到存储器30的存储器访问过程的 电路。存储器访问控制电路45a包括请求发出单元450a、切换单元451a和452a和数据分组 单元454。在从指令控制电路43a接收到存储器写入请求信号SIG3时,请求发出单元450a 指定包括在信号SIG3中的起始存储器地址A和字的数目N并且向存储器30发出存储器访 问(写入)请求,以写入数据分组单元454产生的数据集合。此后,每当接收到对请求的响 应时,请求发出单元450a通过向存储器地址A添加大小C来发出请求。该请求的目的是将 各个数据元素存储在指定N个字的相邻区域中。在这个实施例中,假设写入两个字。此外, 指令控制电路43a可向存储器地址A添加大小C。
[0135] 切换单元451a和452a基于来自指令控制电路43a的读取源控制信号SIG4和SIG5 的目的地,选择读取源道并且从选择的道读取数据元素。这里,切换单元451a连接到缓冲 器461,以从缓冲器461中的指定道wO至wQ-1中的任一个读取数据元素。类似地,切换单 元452a连接到缓冲器462,以从缓冲器462中的指定道wO至wQ-1中的任一个读取数据元 素。
[0136] 当根据这个实施例,指令解码电路42解码分散指令时,处理器40a经由存储器访 问控制电路45a与存储器30通信。也就是说,指令控制电路43a向切换单元451a和452a 输出包括指定道号W(寄存器号k)的读取源控制信号SIG4和SIG5。此外,指令控制电路 43a向请求发出单元450a输出包括指定起始存储器地址A和指定字数目N的存储器写入请 求信号SIG3。每当存储器访问控制电路45a接收对请求的响应时,指令控制电路43a以与 结构的数目对应的次数Q输出信号SIG3至SIG5。在这种情况下,指令控制电路43a通过向 存储器地址A添加大小C来输出存储器读取请求信号SIG3。此外,指令控制电路43a通过 向道号W加" 1"来输出读取源控制信号SIG4和SIG5。换句话讲,指令控制电路43a可重复 输出信号SIG3至SIG5,直至道号W达到最大数。
[0137] 图11是示出根据实施例4的分散指令的流程的流程图。此外,图12是用于描述 根据实施例4的针对多个矢量寄存器的分散指令的操作构思的示图。在下面对图11的描 述中,适当参考图12。
[0138] 首先,假设设置了根据这个实施例的分散指令。指令解码电路42解码分散指令 (S201)。响应于此,指令控制电路43a执行初始设置。在这个初始设置中,假设起始存储器 地址A是结构31的成员变量z [0]. a的存储目的地地址,作为寄存器号k的道号W是"wO", 字的数目N是"2"并且存储器地址的添加值C是P。
[0139] 随后,指令控制电路43a向矢量寄存器组47发出将数据元素从各个矢量寄存器移 至对应缓冲器的指令(S202)。在这个示例中,与矢量寄存器471中存储的一个条目对应的 数据组被存储在缓冲器461中并且与矢量寄存器472中存储的一个条目对应的数据组被存 储在缓冲器462中(例如,参见图12中示出的缓冲
当前第4页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1