处理器和数据收集方法_3

文档序号:9564399阅读:来源:国知局
路45、矢量寄存器组47和运 算电路44。
[0083] 运算电路44响应于来自指令控制电路43的指令对从矢量寄存器组47读取的多 个矢量数据元素执行矢量运算并且将运算结果写入矢量寄存器组47。
[0084] 缓冲器组46包括缓冲器461和462。缓冲器461和462均是被划分成道w0至 wQ-1的区域以将数据元素存储在各个区域中的存储装置。此外,缓冲器461和462可更新 各个道单元中的数据元素。缓冲器组46可包括N个缓冲器。
[0085] 矢量寄存器组47包括矢量寄存器471、472、…、和47η(η是大于等于2的自然 数)。矢量寄存器471等均是被划分成道wO至wQ-1的区域以将数据元素存储在各个区域 中的存储装置。也就是说,矢量寄存器471等是能够存储每条目k个字的寄存器堆。然而, 假设矢量寄存器471等在各个道单元中不能更新数据,而在各个寄存器单元中能更新数据 (也就是说,将Q个数据元素共同地更新),以允许运算电路44高速执行矢量运算。此外, 矢量寄存器471和缓冲器461连接(也就是说,这二者彼此关联)并且存储的数据元素的 集合可在其间移动。类似地,矢量寄存器472和缓冲器462连接(也就是说,这二者彼此关 联)并且存储的数据元素的集合可在其间移动。
[0086] 存储器访问控制电路45是控制从处理器40到存储器30的存储器访问过程的电 路。存储器访问控制电路45包括请求发出单元450、切换单元451和452和数据分类单元 453。在从指令控制电路43接收到存储器读取请求信号SIGO时,请求发出单元450向存储 器30发出存储器访问(读取)请求,包括信号SIGO中包括的指定起始存储器地址A和字 的指定数目N。此后,每当接收到对请求的响应时,请求发出单元450通过将存储器地址A 添加大小C来发出请求。该请求的目的是读取指定N个字的相邻区域中存储的数据元素的 集合。在这个实施例中,假设读取两个字。此外,指令控制电路43可将存储器地址A添加 大小C。
[0087] 数据分类单元453接收作为对存储器访问请求的响应的数据元素的两个字的集 合并且将各个数据元素分类到切换单元451和452中的任一个。数据分类单元453可按从 存储器30读取各个数据元素的次序来分类数据元素。也就是说,较早读取的数据元素可被 输出到切换单元451并且较晚读取的数据元素可被输出到切换单元452。
[0088] 切换单元451和452基于来自指令控制电路43的写入目的地控制信号SIGl和 SIG2中的目的地,选择写入目的地道,并且写入从数据分类单元453接收的数据元素。这 里,切换单元451连接到缓冲器461,以将数据元素写入缓冲器461中的指定道wO至wQ-1 中的任一个。类似地,切换单元452连接到缓冲器462,以将数据元素写入缓冲器462中的 指定道w0至wQ-1中的任一个。
[0089] 这里,当指令解码电路42解码矢量运算指令时,指令控制电路43从矢量寄存器组 47读取预定矢量数据元素并且向运算电路44发出矢量运算指令。运算电路44基于指令对 多个矢量数据元素执行矢量运算并且将运算结果写入矢量寄存器组47。
[0090] 当指令解码电路42根据这个实施例解码收集指令时,处理器40经由存储器访问 控制电路45与存储器30通信。也就是说,指令控制电路43向请求发出单元450输出包括 指定起始存储器地址A和指定字数目N的存储器读取请求信号SIGO。此外,指令控制电路 43向切换单元451和452输出包括相同指定道号W(寄存器号k)的写入目的地控制信号 SIGl和SIG2。每当存储器访问控制电路45接收对请求的响应时,指令控制电路43以与结 构的数目对应的次数Q输出信号SIGO至SIG2。在这种情况下,指令控制电路43通过将存 储器地址A添加大小C来输出存储器读取请求信号SIG0。此外,指令控制电路43将道号W 加" 1"并且输出包括加1之后的指定道号的写入目的地控制信号SIGl和SIG2。换句话讲, 指令控制电路43可重复输出信号SIGO至SIG2,直至道号W达到最大数。
[0091] 图8是示出根据实施例3的收集指令的流程的流程图。图9是用于描述根据实施 例3的针对多个矢量寄存器的收集指令的操作构思的示图。在下面对图8的描述中,适当 地参考图9。
[0092] 首先,假设设置了根据这个实施例的收集指令。指令解码电路42解码收集指令 (SlOl)。响应于此,指令控制电路43执行初始设置。在这个初始设置中,假设起始存储器 地址A是结构31的成员变量z [0]. a的存储目的地地址,作为寄存器号k的道号W是"wO", 字的数目N是"2"并且存储器地址的添加值C是P。
[0093] 随后,指令控制电路43向矢量寄存器组47发出将数据元素从各个矢量寄存器移 至对应缓冲器的指令(S102)。在这个示例中,与矢量寄存器471中存储的一个条目对应的 数据组被存储在缓冲器461中并且与矢量寄存器472中存储的一个条目对应的数据组被存 储在缓冲器462中。
[0094] 随后,指令控制电路43向请求发出单元450输出包括指定起始存储器地址A和指 定字数目N的存储器读取请求信号SIG0。响应于此,请求发出单元450通过指定起始存储 器地址A和字数目N,向存储器30发出存储器访问请求(S104)。在这个示例中,从存储器 30读取数据值(下文中被简称为z [0]. a和z [0]. b),所述数据值被存储在结构31的成员 变量z [0]. a和z [0]. b中。也就是说,从存储器30读取与存储在相邻区域中的两个字对应 的数据元素。数据分类单元453将读取的数据组分类到各个字的缓冲器(S105)。在这个示 例中,数据分类单元453向切换单元451输出数据值z [0]. a并且向切换单元452输出数据 值 z [0]·b〇
[0095] 与步骤S103和S104并行地,指令控制电路43分别向切换单元451和452输出包 括指定道w0的写入目的地控制信号SIGl和SIG2 (S105)。
[0096] 在执行步骤S103至S105之后,切换单元451和452将分类后的各个数据元素写 入各个缓冲器的指定道W (S106)。在这个示例中,切换单元451将数据值z [0]. a写入通过 写入目的地控制信号SIGl指定的缓冲器461的道wO。此外,切换单元452将数据值z [0]. b写入通过写入目的地控制信号SIG2指定的缓冲器462的道wO (例如,参见图9中示出的 缓冲器461和462的道wO)。
[0097] 此后,指令控制电路43确定道号W是否是"Q-l"(S107)。在这个示例中,由于道 号W是"0",因此指令控制电路43将W加1,使得道号变成Wl并且向A添加"P"(S108)。
[0098] 随后,指令控制电路43基于步骤S108的结果,执行步骤S103至S107。也就是说, 请求发出单元450发出用于从存储器30的结构32的数据值z [1]. a的地址读取数据的两个 字的请求(S103)。因此,从存储器30读取结构32的数据值z [1]. a和z [1]. b。数据分类单 元453向切换单元451输出数据值z [1]. a并且向切换单元452输出数据值z [1]. b (S104)。 此外,指令控制电路43分别向切换单元451和452输出包括指定道wl的写入目的地控制 信号SIGl和SIG2(S105)。此后,切换单元451将数据值z[l]. a写入缓冲器461的道wl。 此外,切换单元452将数据值z [1]. b写入缓冲器462的道wl (S106,例如,参见图9中示出 的缓冲器461和462的道wl)。
[0099] 此后,重复执行步骤S103至S108,直到在步骤S107中确定道号W是"Q-Γ'。因此, 当道号W是"Q-1"时,数据值Z [Q-l]. a被写入缓冲器461的道WQ-I并且数据值Z [Q-l]. b 被写入缓冲器462的道wQ-l(S106,例如,参见图9中示出的缓冲器461和462的道wQ-1)。
[0100] 当在S107中确定道号W是"Q-1"时,指令控制电路43将各个缓冲器的数据元素 写入对应的矢量寄存器(S109)。也就是说,缓冲器461的道wO至wQ-1的数据值z [0]. a至 z [Q-l]. a被写入矢量寄存器471,缓冲器462的道wO至wQ-1的数据值z [0]. b至z [Q-l]. b 被写入矢量寄存器472 (例如,参见图9中示出的矢量寄存器471和472的道wO至wQ-Ι)。 此后,这个过程终止。
[0101] 以此方式,通过步骤S103,从存储器30的连续区域的两个字读取数据元素。也就 是说,共同地读取结构中以连续次序定义的不同成员变量。
[0102] 如果C是结构的大小P,则步骤S108中将起始存储器地址A加"C"的过程对应于 将结构阵列的索引以"1"递增。因此,在下一个存储器加载操作中,读取另一个相邻结构的 数据元素的N个字。
[0103] 另外,步骤S104和S106中读取的数据元素的两个字被分类到不同缓冲器并且各 个数据元素被存储在缓冲器的对应道中。以此方式,可在读取和写入数据元素的一系列过 程中实现与传统方法2中执行的重排过程对应的过程。因此,像传统方法2 -样的矢量寄 存器内的重排过程是不必要的并且处理时间可缩短。也就是说,在这个实施例中,可收集各 个矢量寄存器公共的成员变量,并且容易应用矢量运算。
[0104] 这里,将再描述传统方法1。图13是用于描述传统方法1中的收集指令的构思的 示图。图13示出用于实现传统方法1的收集指令的数据处理装置9000的硬件构造的示例。 数据处理装置9000包括存储器IOa和处理器90。处理器90包括指令提取电路91、指令解 码电路92、指令控制电路93、运算电路94、存储器访问控制电路95、缓冲器96和矢量寄存 器组97。这里,指令提取电路91、指令解码电路92、运算电路94和矢量寄存器组97可与 图7的那些相同。缓冲器96具有与图7的缓冲器461的构造相同的构造。然而,只提供一 个缓冲器96。在接收到传统方法1的收集指令时,指令控制电路93向存储器访问控制电 路95发送与(结构阵列的数目)X(成员变量的数目)对应的多个指令。此外,尽管存储 器访问控制电路95共同地读取多个字,但只保留一个数据元素并且丢弃其它数据元素。以 下,将描述流程。
[0105] 图15和图16是用于描述根据传统方法1的针对多个矢量寄存器的收集指令的操 作构思的示图。图15和图16示出当矢量寄存器具有能够在一个时钟周期中同时访问64 位的存储器带宽并且能够存储四个字时根据传统方法1的收集指令的操作。
[0106] 在图15和图16中,由于矢量寄存器97具有四个字的存储器带宽,因此传统方法1 的收集指令向不连续存储器区域发出四个存储器读取请求。在至少四个周期中,对存储器 IOa执行这个操作。尽管存储器IOa可在一个时钟内读取两个字,但由于收集指令只可在 该时间段内使用一个字,因此丢弃不必要的一个字。之前从存储器IOa读取的数据元素被 存储在缓冲器中,直到将被存储在矢量寄存器97中的数据元素的四个字返回到处理器90。 当数据元素的一个条目被存储在缓冲器96中时,数据元素被写入矢量寄存器97。具体地, 执行下面的操作。
[0107] 响应于来自指令控制电路93的指令,尽管存储器访问控制电路95共同地读取存 储器IOa的array [0]. a和array [0]. b,但丢弃array [0]. b并且array [0]. a被存储在缓冲 器96的道wO中。随后,尽管存储器访问控制电路95共同地读取存储器IOa的array [1]. a 和array [I]. b,但丢弃array [I]. b并且array [I]. a被存储在缓冲器96的道wl中。此后, 类似地,存储器访问控制电路95共同地读取存储器IOa的array [Q-l]. a和array [Q-l]. b 并且将array [Q-l]. a存储在缓冲器96的道wQ-1中,同时丢弃array [Q-l]. b。此后,从缓 冲器96向矢量寄存器组97的对应寄存器写入数据元素的一个条目(参见图15)。
[0108] 随后,存储器访问控制电路95执行Q个存储器访问并且无论
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1