处理器和数据收集方法_2

文档序号:9564399阅读:来源:国知局
从各个 对应区域读取的数据元素集中在一起,以形成数据集合。例如,控制单元23b将数据元素 a 和数据元素 b集中在一起,以形成数据集合。控制单元23b将数据集合中的各个数据元素 写入存储器10中的相邻存储区。例如,控制单元23b将数据元素 a 101和数据元素 b 102 写入存储器10中的与数据集合11的数据元素 a 101和数据元素 b 102对应的存储区。控 制单元23b还共同读取区域203和204中存储的数据元素,将数据元素集中在一起,以形成 数据集合,并且将数据元素写入存储器10中与数据集合12对应的相邻存储区。
[0049] 图5是示出根据实施例2的数据写入方法的流程的流程图。首先,处理器20b的 控制单元23b从第一存储单元(例如,存储单元21)的第一区域(例如,区域201)读取第 一数据元素(例如,数据元素 a) (S21)。此外,控制单元23b从第二存储单元(例如,存储单 元22)的第一区域(例如,区域202)读取第二数据元素(例如,数据元素 b) (S22)。区域 202可以是对应于区域201的区域。此外,控制单元23b可从存储单元22的区域204读取 第二数据元素。
[0050] 随后,控制单元23b将第一数据元素和第二数据元素共同地写入存储器10中的相 邻存储区(S23)。例如,如上所述,在一个存储器访问过程中,控制单元23b分别将数据元素 a和数据元素 b写入存储器10中的与数据集合11的数据元素 a 101和数据元素 b 102对 应的存储区。
[0051] 随后,控制单元23b从第一存储单元的第二区域(例如,区域203)读取第三数据 元素(例如,数据元素 c) (S24)。此外,控制单元23b从第二存储单元的第二区域(例如,区 域204)读取第四数据元素(例如,数据元素 d) (S25)。区域204可以是对应于区域203的 区域。这里,控制单元23b可从第一存储单元的区域之中的除了至少在步骤S21中被读取 数据的区域之外的区域读取第三数据元素。类似地,控制单元23b可从第二存储单元的区 域之中的除了至少在步骤S22中被读取数据的区域之外的区域读取第四数据元素。
[0052] 控制单元23b将第三数据元素和第四数据元素共同写入存储器10中的相邻存储 区(S26)。例如,在与步骤S23的存储器访问过程不同的另一个存储器访问过程中,控制单 元23b将数据元素 c和数据元素 d写入存储器10中的与数据集合12的数据元素 c 103和 数据元素 d 104对应的存储区。这里,假设步骤S26中的写入目的地存储区不同于步骤S23 中的写入目的地存储区。
[0053] 图6是示出包括根据实施例2的处理器20c的奇偶校验数据2000a的构造的框图。 当图4的处理器20b的构造应用于从三个或更多个寄存器读取N个字并且将这N个字共同 写入存储器IOa并且读取源存储单元(寄存器)的区域被关联为道的情况时,使用处理器 20c〇
[0054] 处理器20c包括控制单元23c和寄存器找1<至rg k+N丨。这里,寄存器找1<至rg k+N 1 与图3的寄存器rgkS rg k+N i相同。然而,假设数据元素被预先存储在寄存器rg kS rg k+N i 的道W〇至wQ-1中。处理器20c针对每个道共同地从寄存器找,至rg k+N 取数据元素并 且将针对每个道读取的数据元素集中在一起,以形成数据集合。处理器20c将数据集合中 的各个数据元素写入存储器IOa中的相邻存储区。例如,在一个存储器访问过程中,处理 器20c从各个寄存器找,至rg k+N i的道wO读取数据元素并且将N个字写入存储器IOa的 array [0]. a至array [0]. η。处理器20c类似地针对道wl至wQ-1中的每个读取数据元素 并且将数据元素写入对于各个道而言相同的数据集合的相邻存储区中。
[0055] 以此方式,根据实施例2,当写入被共同作为一个数据集合的、存储在多个存储单 元中的数据组(诸如,例如,由数据元素 a和数据元素 b形成的组和由数据元素 c和数据元 素 d形成的组)时,进行数据存储过程所需的时间可减少。这是因为,从不同存储单元单独 读取的各个数据元素被共同地写入连续(相邻)区域,因此不必针对各个数据元素单独执 行存储器访问过程。此外,由于数据元素是从多个存储单元中的对应区域读取的,因此不必 执行将读取的数据元素重排的过程。因此,可有效执行存储器和处理器中的存储单元之间 的数据存储过程。
[0056] 〈实施例3>
[0057] 这里,将再描述这个实施例要解决的问题。首先,假设包括多个成员变量的结构的 数据元素被作为结构阵列连续存储在存储器中。在这种情况下,可对多个结构阵列的相同 成员变量执行矢量运算。为了从存储器收集这些矢量数据元素,针对每个结构的各个成员 变量从存储器读取矢量数据元素的读指令总体上需要被发送到处理器。此外,为了将由于 矢量运算而得到的多个矢量数据元素存储在存储器中,针对每个结构的各个成员变量将矢 量数据元素从处理器中的寄存器写入存储器的写指令总体上需要被发送到处理器。
[0058] (传统方法1)
[0059] 在此方面,在现有技术中,作为传统方法1,经常在处理器中实现收集和分散指令。 通常,当单个收集或分散指令发送到处理器时,从处理器向存储器发送多个存储器访问指 令。例如,执行下面的过程。
[0060] (1)在接收到收集指令时,处理器发送针对不连续区域中存储的数据元素的多个 存储器访问指令并且将读取的各个数据元素加载到一个寄存器。
[0061] (2)处理器向作为多个矢量数据元素的加载于寄存器的各个数据元素应用矢量运 算。
[0062] (3)在接收到分散指令时,处理器单独读取寄存器的各个数据元素,发送用于无论 何时读取数据元素将数据元素写入存储器的存储器访问指令,并且将数据元素写入到不连 续区域的存储器地址。
[0063] 因此,根据传统方法1,即使当形成处理器的硬件具有能够访问连续N个字的存储 器带宽时,由于分散和收集指令单独访问不连续区域中的数据元素,因此难以充分利用带 宽。因此,在传统方法1中,以对应于结构和成员变量的数目的次数执行存储器访问过程。 此外,处理时间增加并且处理效率降低。
[0064] (传统方法2)
[0065] 传统方法2通过利用能够访问多个字的带宽,使用针对多个字的存储器访问指 令。也就是说,在传统方法2中,在针对多个字的单个存储器访问过程中,存储器的连续区 域中存储的数据组被暂时存储在矢量寄存器中。在这个阶段中,各个结构的数据组被存储 在各个矢量寄存器中。因此,此后,执行重排过程,使得各个结构的相同成员变量被存储在 相同矢量寄存器中。因此,必须在应用矢量运算之前和之后在矢量寄存器中插入不必要的 重排处理指令。因此,在传统方法2中,处理时间增加并且处理效率降低。
[0066] 因此,在实施例3中,通过在实施例1的构造中添加至少以下构造,解决以上问题。 也就是说,控制单元写入读取的数据元素,使得分类目的地存储单元中的数据元素的写位 置对应于各个数据集合。例如,通过第一存储器访问从存储器读取的多个字的数据元素被 分类并且存储在多个存储单元中,在这种情况下,数据元素被写入同一道。通过后续存储器 访问(例如,从同一数据集合)被共同且同时读取的数据元素被写入与第一存储器访问中 使用的道不同的同一道。这样,写入处理器中的各个存储单元的数据组可针对矢量运算原 样地用作矢量数据元素,并且可更有效收集数据。
[0067] 控制单元可优选地根据存储器中的相邻存储区的次序,将从存储器读取的各个数 据元素分类到多个存储单元中的任一个。在这种情况下,控制单元可优选地将分类后的数 据元素写入各个分类目的地存储单元。例如,当根据结构的成员变量的定义的次序将数据 元素存储在存储器中时,定义的次序与分类目的地存储单元关联。这样,从存储器读取数据 的次序可容易地与分类目的地存储单元关联,可简化处理器的构造。
[0068] 控制单元可优选地向存储器发出请求,请求响应于收集矢量数据元素的指令,从 数目与每个数据集合的多个矢量数据元素的数目对应的连续存储区读取多个数据元素。在 这种情况下,控制单元可优选地响应于对多个存储单元中的任一个的请求,针对每个请求, 分类从存储器读取的数据元素。这样,例如,根据这个实施例的存储器访问和存储单元的分 类可被应用于收集指令。
[0069] 另外,控制单元可响应于用于收集多个矢量数据元素的指令,发出请求,为每个数 据集合指定写入位置,并且将分类后的各个数据元素写入各个分类目的地存储单元中的指 定写入位置。例如,当道被指定为写入位置时,响应于针对每个数据集合的存储器访问,可 将数据元素容易地写入分类目的地存储单元中的对应区域。
[0070] 可供选择地,多个存储单元均可包括与数据集合中的各个数据元素的存储区对应 的多个缓冲器和与缓冲器对应的多个寄存器。控制单元可在多个缓冲器之中指定各个存储 区的不同写入目的地缓冲器,以分类各个数据元素并且将其写入指定的缓冲器中,读取全 部多个数据集合中的多个数据元素,然后将写入多个缓冲器中的每个的全部数据元素共同 地写入对应于缓冲器的寄存器。以此方式,当数据元素被单独写入可在各个区域单元中灵 活进行重新写入的缓冲器时,对其中难以将数据重新写入各个区域单元中的矢量寄存器进 行的写入操作的数目可减少并且处理效率可提高。
[0071] 另外,处理器还可包括矢量运算单元,矢量运算单元针对多个存储单元中的各个 对应写入位置共同地执行预定运算。这样,收集的数据组可被有效用于矢量运算。
[0072] 另外,矢量运算单元可对多个存储单元中的至少两个执行预定运算。例如,即使当 对数据集合中不一定相邻的区域中存储的数据元素执行矢量运算时,可共同地读取不用于 矢量运算的数据元素并且这些数据元素本身可不经历矢量运算。这样,可有效执行读取多 个字的存储器访问过程。
[0073] 另外,多个数据集合可优选地是使用多个数据元素作为成员变量的结构,多个存 储单元可优选地与成员变量关联。控制单元可优选地分类读取的各个数据元素并且将其写 入与成员变量关联的多个存储单元。这样,可对定义的结构(包括多个数据类型)有效执 行矢量运算。
[0074] 接下来,将详细描述根据实施例3的针对多个矢量寄存器的收集数据元素的收集 指令。图7是示出包括根据实施例3的处理器40的数据处理装置3000的构造的框图。数 据处理装置3000是根据实施例1的数据处理装置1000的改进例并且包括存储器30和处 理器40。存储器30具有与存储器10相同的构造并且结构31、32、…和33被存储在其中。 这里,假设结构31等是具有P个成员变量(P是2或更大的自然数)的结构并且Q个数据 元素(Q是2或更大的自然数)被存储在存储器30中。结构是具有多个数据类型的变量定 义的变量。当用C语言表达结构31等时,结构可被定义为以下的结构阵列。
[0076] 此外,假设与每个结构的成员变量对应的数据值被存储在存储器30的相邻区域 中。另外,假设可由处理器40执行的各种指令也被存储在存储器30中。
[0077] 此外,假设根据这个实施例的收集指令包括例如以下操作数。
[0078] -读取源存储器的起始存储器地址A(例如,对应于结构阵列的起始存储区)
[0079] -写入目的地的起始寄存器号k (k对应于读取目标结构的数目Q并且是等于或小 于道W的上限数目的自然数)
[0080] -针对连续存储器访问的字的数目N(N是大于等于2且小于等于P的自然数)
[0081] -用于更新存储器地址的大小C(C与结构大小P相同)
[0082] 处理器40是根据实施例1的处理器20的改进例。处理器40包括指令提取电路 41、指令解码电路42、指令控制电路43、运算电路44、存储器访问控制电路45、缓冲器组46 和矢量寄存器组47。假设处理器40可在一个时钟周期内访问数据元素的N个字。指令提 取电路41从存储器30读取指令并且将指令输出到指令解码电路42。指令解码电路42分 析输入指令并且将分析结果(解码结果)输出到指令控制电路43。指令控制电路43基于 输入指令的解码结果,将适当的信号输出到存储器访问控制电
当前第2页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1