矩阵转置自动控制电路系统及矩阵转置方法

文档序号:6584480阅读:228来源:国知局
专利名称:矩阵转置自动控制电路系统及矩阵转置方法
技术领域
本发明涉及计算机技术领域,特别是涉及一种矩阵转置自动控制电路系统及矩阵
转置方法。
背景技术
矩阵是计算机中人们熟知的一种数据结构,它是线性表的推广。在当今的计算机
应用中,在科学和工程计算、游戏、图像处理等领域中都需要用到矩阵的转置运算。 现有技术中,因为每次访问内存需要很长的时间,如果每次从内存中只读取源矩
阵一个字节的数据然后放到高速缓存(cache)块中,不仅会浪费宝贵的数据总线带宽,也
会造成高速缓存块中其它字节的资源浪费,并且增加了读数时间。写内存时,逐个数据的写
操作也会带来类似的问题。

发明内容
本发明的目的在于提供一种矩阵转置自动控制电路系统及矩阵转置方法,其克服现有技术中的缺陷,提高高速缓存(cache)块和数据总线的利用率,从而提高转置的效率。
为实现本发明目的而提供的一种矩阵转置自动控制电路系统,包括配置寄存器,控制寄存器和转置模块,其中 所述配置寄存器,用于接受输入数据,将配置信息传递给所述转置模块;
所述控制寄存器,用于接受输入数据,对所述转置模块发出的读写请求进行控制
信息; 所述转置模块,用于接受所述配置寄存器、控制寄存器的信息,然后根据这些信息,完成矩阵的转置操作,包括对源矩阵的读操作和对目的矩阵的写操作。其中,每次连续发出的读请求的数量由高速缓存块的容量决定。 较优地,所述矩阵转置自动控制电路系统,还包括状态寄存器,用于保存矩阵转置操作的结束信号,并将所述结束信号返回; 为了能够保证IO—致性,转置模块在二级高速缓存(cache)和处理器核之间增加了一致性命令通道和一致性应答通道。 为实现本发明目的,还提供一种矩阵转置方法,包括下列步骤
步骤A,当控制寄存器允许取数操作时,根据配置寄存器提供的地址信息向源矩阵发出多个读请求;所述读请求的地址为不连续的地址;所述读请求的个数由高速缓存块的容量决定; 步骤B,接收多个读请求返回的数据,并将这些数据存入缓冲区; 步骤C,当读请求的所有数据全部缓存完毕、并且控制寄存器允许写操作时,发出
一致性命令请求; 步骤D,接收到二级高速缓存(cache)返回的一致性应答;
步骤E,在满足IO—致性的前提下发 写数据请求;
步骤F,从缓冲区中取出数据,将其写入目标矩阵所在地址空间; 步骤G,接收写数据请求的应答信息。 重复上述7个步骤,直到完成源矩阵的转置操作。 较优地,所述的矩阵转置方法,所述步骤B还包括下列步骤 在收到源矩阵的所有数据后将读操作结束信号返回状态寄存器; 且, 在步骤G之后还包括下列步骤 在收到目标矩阵的所有应答后将写操作结束信号返回状态寄存器。
本发明的有益效果本发明的矩阵转置自动控制电路系统及矩阵转置方法,充分 利用高速缓存(cache)块的容量,具有很高的资源利用率,提高高速缓存(cache)块和数据 总线的利用率,从而提高转置的效率。进一步,本发明在写数据时还支持IO—致性,能够保 证处理器与直接存储器访问控制器(DMA)之间的缓存一致性。


图1是本发明实施例的矩阵转置自动控制的电路系统示意图; 图2是本发明实施例的配置寄存器工作过程示意图; 图3是本发明实施例的控制寄存器工作过程示意图; 图4是图3中控制寄存器各部分信息示意图; 图5是本发明实施例的状态寄存器工作过程示意图; 图6是本发明实施例的矩阵转置方法流程示意图。
具体实施例方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对 本发明的矩阵转置自动控制电路系统及矩阵转置方法进行进一步详细说明。应当理解,此 处所描述的具体实施例仅仅用以解释本发明而不是对本发明的限制。 如图1所示,本发明实施例的矩阵转置自动控制电路系统,外部与配置总线5和地 址/数据总线6相连。 其中,处理器或DMA通过配置总线5对控制电路系统内部的各寄存器进行读写操 作,控制电路系统通过地址/数据总线6从内存读需要转置的矩阵,并通过地址/数据总线 6向内存写入转置后的矩阵。 本发明实施例的矩阵转置自动控制电路系统,包括配置寄存器1,状态寄存器2, 控制寄存器3和转置模块4,其中 所述配置寄存器l,用于接受输入数据,将起始地址和矩阵行列等配置信息传递给 所述转置模块4; 所述状态寄存器2,用于保存矩阵转置操作的结束信号,并将所述结束信号返回;
所述控制寄存器3,用于接受输入数据,对所述转置模块4发出的读写请求进行控 制; 所述转置模块4,用于接受所述配置寄存器1、状态寄存器2、控制寄存器3的信息, 然后根据这些信息,完成矩阵的转置操作,包括对源矩阵的读操作和对目的矩阵的写操作,其中,每次连续发出的读请求的数量由高速缓存块的容量决定。 作为一种可实施方式,本发明的矩阵转置自动控制电路系统的高速缓存块 (cache)为32字节,当控制寄存器允许取数操作时,每次连续发出32个读请求,即读一个 32字节x 32字节的小矩阵。 本发明实施例的矩阵转置自动控制电路系统,配置寄存器1接受配置总线5送来 的读写请求,并将这些配置信息传递给转置模块4 ;然后转置模块4根据这些配置信息通过 地址/数据总线6向源矩阵发出读请求,在接收到读请求返回的数据后,紧接着通过地址 /数据总线6向目标矩阵发出写请求;在完成读写操作后,转置模块4将结束信号写回状 态寄存器2,并通过配置总线5传给处理器核或者直接存储器访问控制器(Direct Memory Access, DMA)(未示出),以便进行下一次矩阵转置操作。 作为一种可实施方式,本发明实施例的转置模块4需要配置寄存器1提供与读写 请求地址相关的配置信息,如图2所示,这些配置信息包括源矩阵7和目标矩阵8的起始地 址,源矩阵一行的元素个数和一列的元素个数,以及源矩阵7和目标矩阵8所在大矩阵以字 节为单位的行跨度等。 作为一种可实施方式,本发明实施例的转置模块4还需要控制寄存器3提供读写 请求的控制信息,如图3所示,这些控制信息包括输入控制和输出控制信息等。
作为一种可实施方式,控制寄存器3中具体每一位的含义如图4所示,其中
读写使能用于控制转置模块4发出读写请求;如果只使能读请求,转置模块4则将 源矩阵7的数据读到高速缓存块中;如果同时写请求也被使能,转置模块4则会将高速缓存 中的数据写到配置寄存器1给出的目标矩阵8地址中; 因为配置寄存器1只给出源矩阵7中每行和每列的元素个数,因此控制寄存器3 还需要提供每个元素表示的字节数。作为一种可实施方式,用两比特(bit)表示,两比特的 元素宽度有四种取值00、01、 10、 11,其中00表示该元素代表1字节,01代表2字节,10代 表4字节,11代表8字节。 考虑到与其它模块的兼容性,本发明实施例中的控制寄存器3,还提供一位控制 位,用于控制是否进行转置操作。 为了控制发出读写请求的频率,本发明实施例中的控制寄存器3,还包括流控位, 用于控制发出读写请求的频率,流控位控制转置模块4在可发出读请求或写请求的情况下 每次请求所需间隔的周期数。 本发明实施例的转置模块4在完成转置操作后会将读写操作的结束信号写回状 态寄存器2,如图5所示,状态寄存器2将这些信息通过配置总线5传给处理器或DMA,告诉 它们本次矩阵转置已经完成,以便发出下一次矩阵转置操作。 较佳地,为了能够保证输入输出(10) —致性,转置模块4包括一致性命令通道41
和一致性应答通道42,位于二级高速缓存(cache)和处理器核之间,其中 所述一致性命令通道41,用于在收到所有读请求数据,并且控制寄存器3允许写
操作时,先通过读数据通道发出一致性命令请求; 所述一致性应答通道42,用于接收一致性应答。 转置模块4在满足输入输出(10) —致性的前提下才发出写数据请求。 本发明实施例中完成矩阵转置操作的主要模块是转置模块4,作为一种可实施方式,其核心的结构是一个1024x8比特的缓冲区buffer。 下面详细说明本发明实施例的矩阵转置自动控制电路系统的矩阵转置过程,即本 发明实施例的矩阵转置方法,如图6所示,包括下列步骤 步骤S100,当控制寄存器3允许取数操作时,转置模块4根据配置寄存器1提供的 地址信息向源矩阵7发出多个读请求;所述读请求的个数由高速缓存块的容量决定;
考虑到连续读内存而非连续写内存、与非连续读内存而连续写内存之间的性能差 异,作为一种可实施方式,本发明实施例采用非连续读内存而连续写内存,即读请求的地址 为不连续的地址。 基于每个高速缓存(cache)块最多能够存储32字节的数据,因此理想情况下每次 读请求都需要源矩阵返回256位的数据。这样每次读回来的数据都能写满一个高速缓存 块,而且不会造成数据总线的带宽浪费。 同样,写矩阵时也要充分利用高速缓存块的容量,即一次写操作也是写32字节的 数据,因此在本发明实施例中需要连续发出32次读请求,每次请求为写操作提供一字节的 数据。但每次读请求的地址是不连续的,跨度为源矩阵7所在大矩阵的行跨度。
这样,转置模块4实际上对源矩阵7进行转置操作时是将其分成多个32字节x 32 字节的小矩阵,并将这些数据搬到缓冲区,这也是本发明实施例中设置缓冲buffer的大小 为1024x8比特的原因。 步骤S200,接收多个读请求返回的数据,并将这些数据存入缓冲区。
将内存中读回来的数据写入缓冲区。为了能够实现连续写内存,数据写入的缓存 区buffer地址并不是连续的,而是将每个读回来的32字节数据离散写入缓冲块,每个字节 的间隔受元素宽度的影响。在一个实施例中,当元素宽度为0时,对id0而言,写入的缓冲 块为第0号、32号、64号、96号……缓冲块;依次类推。在本发明实施例中本地id只有16 个,因此当收到某个id的读数据后,需要标记这个id,这样读请求就可以重复使用该id号, 从而能够利用16个id发出32次读请求。 为了实现处理器核和直接存储器访问控制器(DMA)之间的缓存一致性,这就需要 在二级高速缓存(cache)和处理器核之间增加一致性命令通道41和一致性应答通道42,这 两个通道分别借助读数据请求通道和读数据返回通道。 步骤S300,当收到32字节x32字节小矩阵的所有数据后,并且控制寄存器3允许 写操作时,转置模块4则可以根据配置寄存器1中目标矩阵8的地址信息,向目标矩阵发出 一致性命令请求。 因为在发该请求时会计算出写目标矩阵8的地址,而相应的应答可能需要经过很 多拍才能返回,所以本发明实施例在发出读地址请求的同时保存读请求的id号、地址等信 息,这些信息在发出写地址请求时被取出。 因为本发明实施例采用连续写内存的方式,因此,对矩阵的每一行写操作,地址是 递增的,只有当到达每行的末尾时才会跳转到下一行的起始地址,该地址与目标矩阵8所 在大矩阵的行跨度密切相关。 步骤S400,读数据返回通道返回接收一致性应答,它们与高速缓存(cache) —致 性相关,包含awcache等信息。 步骤S500,在满足10 —致性的前提下,转置模块4根据发读地址请求时保存的地
7址和id号等信息,向目标地址发出写地址请求。其中控制信息可以从步骤S400中返回的 数据获得,而地址、id号等信息则可从步骤S300保存的寄存器信息中得到。
步骤S600,转置模块从缓冲区中取出数据,将其写入目标矩阵8所在地址空间。
作为一种可实施方式,因为步骤S200在存放源矩阵7的数据时考虑了写操作的连 续性,此时只需顺序从缓冲中取出数据,并将其写入目标矩阵8所在的连续地址空间。
步骤700,内存返回写请求的响应,报告响应的状态,这样转置模块4就可以重新 使用那些已经收到写数据响应的id 了。 较佳地,本发明实施例的矩阵转置方法,所述步骤S200还包括下列步骤
步骤S210,在收到源矩阵的所有数据后将读操作结束信号返回状态寄存器2 ;
并且,在步骤S700之后还包括下列步骤 步骤S710,在收到目标矩阵的所有应答后将写操作结束信号返回状态寄存器2。
重复上述7个步骤S100 700,直到完成源矩阵的转置操作。
在一个实施例中,设配置寄存器1给出的源矩阵7起始地址为0X20000000,目标 矩阵8起始地址为0X50000000,源矩阵一行元素的个数为OXaO,源矩阵一列元素的个数为 0X40,源矩阵7所在大矩阵的行跨度为0X400,目标矩阵8所在大矩阵的行跨度为0X600 ;控 制寄存器3为0X1000100400fe3。当这些寄存器信息都传递给转置模块4后,矩阵的转置操 作则开始进行了。转置模块4将向地址0X20000000发出读请求,紧接着读地址0X20000400, 依此类推,直到读地址0X20c00000。这样,它就将32字节x32字节的数据读入缓冲区。当最 后一个字节的数据写入缓冲区buffer以后,转置模块4可以开始向目标地址写入转置后的 矩阵。因为写内存是连续的,因此写入的内存地址为0X50000000、0X50000020、0X50000040、 0X50000060、0X50000080,此时到达目标矩阵8的行尾,跳转到矩阵的下一行起始地址开始 写操作,即0X50000600 ;依此类推,直到写完最后一个id,缓冲中的数据都写到了目标矩阵 8,缓冲区buffer为空。此时,转置矩阵可以继续读取源矩阵中下一个32字节x32字节的 小矩阵。当源矩阵7的所有数据都读出来并且写到目标矩阵8所在的内存中后,状态寄存 器2的结束信号将被置起来,这样处理器或DMA就知道本次矩阵转置操作完成了 。
本发明实施例的矩阵转置自动控制电路系统及矩阵转置方法,充分利用高速缓存 块的容量,每次读写操作都是针对32字节的数据,具有很高的资源利用率,提高高速缓存 块和数据总线的利用率,从而提高转置的效率。进一步,本发明在写数据时还支持10—致 性,能够保证处理器与DMA之间的缓存一致性。 最后应当说明的是,很显然,本领域的技术人员可以对本发明进行各种改动和变 型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要 求及其等同技术的范围之内,则本发明也意图包含这些改动和变型。
权利要求
一种矩阵转置自动控制电路系统,其特征在于,包括配置寄存器,控制寄存器和转置模块,其中所述配置寄存器,用于接受输入数据,将配置信息传递给所述转置模块;所述控制寄存器,用于接受输入数据,对所述转置模块发出的读写请求进行控制信息;所述转置模块,用于接受所述配置寄存器、控制寄存器的信息,然后根据这些信息,完成矩阵的转置操作,包括对源矩阵的读操作和对目的矩阵的写操作;其中,每次连续发出的读请求的数量由高速缓存块的容量决定。
2. 根据权利要求1所述的矩阵转置自动控制电路系统,其特征在于,还包括状态寄存 器,用于保存矩阵转置操作的结束信号,并将所述结束信号返回。
3. 根据权利要求1或2所述的矩阵转置自动控制电路系统,其特征在于,所述电路系统 外部与配置总线和地址/数据总线相连;所述配置总线对所述电路系统内部的寄存器进行读写操作;所述电路系统通过地址/数据总线向内存读需要转置的矩阵,并通过地址/数据总线 向内存写入转置后的矩阵。
4. 根据权利要求1所述的矩阵转置自动控制电路系统,其特征在于 所述配置信息包括源矩阵和目标矩阵的起始地址,源矩阵一行的元素个数和一列的元素个数,以及源矩阵和目标矩阵所在大矩阵以字节为单位的行跨度; 所述控制信息包括输入控制信息和输出控制信息。
5. 根据权利要求3所述的矩阵转置自动控制电路系统,其特征在于,所述转置模块包 括一致性命令通道和一致性应答通道,位于二级高速缓存和处理器核之间,其中所述一致性命令通道,用于在收到所有读请求数据,并且控制寄存器允许写操作时,先 通过读数据通道发出一致性命令请求;所述一致性应答通道,用于接收一致性应答。
6. —种矩阵转置方法,其特征在于,包括下列步骤步骤A,当控制寄存器允许取数操作时,根据配置寄存器提供的地址信息向源矩阵发出多个读请求;所述读请求的数量由高速缓存块的容量决定;步骤B,接收所述多个读请求返回的数据,并将这些数据存入缓冲区;步骤C,如果收到所述多个读请求的所有数据,并且控制寄存器允许写操作时,发出写数据请求;步骤D,从缓冲区中取出数据,将其写入目标矩阵所在地址空间。
7. 根据权利要求6所述的矩阵转置方法,其特征在于,所述步骤C包括下列步骤 步骤C1,当读请求的所有数据全部缓存完毕、并且控制寄存器允许写操作时,先通过读数据通道发出一致性命令请求;步骤C2,接收到二级高速缓存返回的一致性应答;步骤C3,在满足输入输出一致性要求下发出写数据请求。
8. 根据权利要求7所述的矩阵转置方法,其特征在于,所述步骤B还包括下列步骤 在收到源矩阵的所有数据后将读操作结束信号返回状态寄存器;且,在步骤D之后还包括下列步骤在收到目标矩阵的所有应答后将写操作结束信号返回状态寄存器。
9. 根据权利要求6至8任一项所述的矩阵转置方法,其特征在于,还包括下列步骤重复步骤A D,直到完成源矩阵的转置操作。
10. 根据权利要求9所述的矩阵转置方法,其特征在于,所述对源矩阵进行转置操作 时,将所述源矩阵分成多个小矩阵数据,并将所述数据传递到缓冲区;所述步骤A中,所述根据配置寄存器提供的地址信息向源矩阵发出读请求,包括下列 步骤根据配置寄存器提供的地址信息向源矩阵发出多个读请求,并且所述读请求的地址 是不连续的;所述步骤D中,所述将数据写入目标矩阵所在的地址空间,包括下列步骤从缓冲区中 取出数据后,将数据写入目标矩阵所在的连续地址空间。
全文摘要
本发明公开一种矩阵转置自动控制电路系统及矩阵转置方法,包括配置寄存器,用于接受输入数据,将配置信息传递给所述转置模块;控制寄存器,用于接受输入数据,对所述转置模块发出的读写请求进行控制信息;转置模块,用于接受所述配置寄存器、控制寄存器的信息,然后根据这些信息,完成矩阵的转置操作。还包括状态寄存器,用于保存矩阵转置操作的结束信号,并将所述结束信号返回。其提高高速缓存块和数据总线的利用率,从而提高转置的效率。
文档编号G06F13/28GK101706760SQ20091023607
公开日2010年5月12日 申请日期2009年10月20日 优先权日2009年10月20日
发明者王玲, 陈云霁, 高翔 申请人:北京龙芯中科技术服务中心有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1