基于单端口sram的零耗时矩阵转置实现方法

文档序号:10511875阅读:282来源:国知局
基于单端口sram的零耗时矩阵转置实现方法
【专利摘要】本发明公开了一种基于单端口SRAM的零耗时矩阵转置实现方法,包括:基于单端口SRAM来存储矩阵数据;当开启设置在单端口SRAM前端的矩阵转置开关后,所要访问的目标地址:第n行第m列,通过矩阵转置进行行列地址交叉转换为:第m行第n列;所述单端口SRAM将转换后的地址作为目标地址,并输出该地址中存放的数据。本发明的方案将矩阵转置的时间复杂度直接降为0,不需要耗费任何时间即可实现矩阵的转置,与传统的软件实现方式相比较,能极大的节省时间开销。
【专利说明】
基于单端口 SRAM的零耗时矩阵转置实现方法
技术领域
[0001] 本发明涉及矩阵数据处理技术领域,尤其涉及一种基于单端口 SRAM的零耗时矩阵 转置实现方法。
【背景技术】
[0002] 在计算机数据处理过程中,经常会遇到矩阵转置的数学问题,传统CPU在处理此类 问题时将会消耗大量的资源,目前最快的软件转置算法时间复杂度也在O(mXn),其中m、n 为矩阵的列数和行数,对于一个1000X1000的矩阵来说,其时间复杂度为1〇6量级。
[0003] 传统方案中只能够通过软件算法来实现矩阵转置,由于软件无法直接操控底层硬 件(尤其是存储单元的地址),并且矩阵数据只能以固定顺序存储在内存空间;因此,传统的 软件实现转置算法时只能按以下步骤实现:申请与原矩阵A[M][N]容量相同大小的一块空 间B[N] [M];执行两层for循环,依次将A矩阵中的所有元素复制到B矩阵的对应位置上:
[0004] for( i = 0 ; i<M; i++)
[0005] for( j = 0; j<N; j++)
[0006] B[ j][i]=A[i][ j];
[0007] 即,软件实现算法中,矩阵有多少元素,就要执行多少次赋值操作,从而消耗大量 时间。

【发明内容】

[0008] 本发明的目的是提供一种基于单端口SRAM的零耗时矩阵转置实现方法,极大的节 省了时间开销。
[0009] 本发明的目的是通过以下技术方案实现的:
[0010] -种基于单端口 SRAM的零耗时矩阵转置实现方法,包括:
[0011]基于单端口 SRAM来存储矩阵数据;
[0012] 当开启设置在单端口 SRAM前端的矩阵转置开关后,所要访问的目标地址:第η行第 m列,通过矩阵转置进行行列地址交叉转换为:第m行第η列;
[0013] 所述单端口 SRAM将转换后的地址作为目标地址,并输出该地址中存放的数据。
[0014] 进一步的,所述单端口SRAM中所存储矩阵数据的炜度为N行第Μ列;M2 m,N2 η;
[0015] 所述单端口 SRAM的容量为2a+b;其中,a为满足2a 2 Μ的最小正整数;b为满足2b 2 Ν的 最小正整数。
[0016] 由上述本发明提供的技术方案可以看出,通过直接对底层硬件进行操作,当需要 进行矩阵转置时,直接对存储矩阵的单端口 SRAM的地址进行操作,将矩阵转置的时间复杂 度直接降为〇,不需要耗费任何时间即可实现矩阵的转置,与传统的软件实现方式相比较, 能极大的节省时间开销。
【附图说明】
[0017] 为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用 的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本 领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他 附图。
[0018] 图1为本发明实施例提供的单端口 SRAM的存储矩阵示意图;
[0019] 图2为本发明实施例提供的转置之前的图像示意图;
[0020] 图3为本发明实施例提供的转置之后的图像示意图;
[0021] 图4为本发明实施例提供的基于单端口 SRAM的零耗时矩阵转置实现方法的示意 图。
【具体实施方式】
[0022] 下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整 地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本 发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施 例,都属于本发明的保护范围。
[0023] 本发明实施例提供一种基于单端口 SRAM的零耗时矩阵转置实现方法,其主要包 括:
[0024]基于单端口 SRAM来存储矩阵数据;
[0025] 当开启设置在单端口 SRAM前端的矩阵转置开关后,所要访问的目标地址:第η行第 m列,通过矩阵转置进行行列地址交叉转换为:第m行第η列;
[0026] 所述单端口 SRAM将转换后的地址作为目标地址,并输出该地址中存放的数据。 [0027]如图1所示,所述单端口SRAM中所存储矩阵数据的炜度为N行第Μ列;M2 m,N2 η;
[0028] 所述单端口 SRAM的容量为2a+b;其中,a为满足2a 2 Μ的最小正整数;b为满足2b 2 Ν的 最小正整数;
[0029] 列地址通过sram的0~(a_l)位进行寻址;
[0030] 行地址通过sram的a~(a+b-Ι)位进行寻址;
[0031]本发明实施例中,当开启矩阵转置开关后,其输出相应的使能信号,从而触发相应 的行列地址交叉转换;当不需要进行矩阵转置时,关闭矩阵转置开关,即可访问单端口SRAM 中的原始矩阵。
[0032] 本发明实施例的上述方案可以应用与各种需要对存储数据矩阵进行转置的场景。 示例性的,在视频显示中,有一部分的显示区域的图像如图2所示,若用户需要将其变为图3 所示图像,即需要将图2所示图像的数据矩阵进行转置。按照传统方法,需要将图2所示图像 的矩阵中的数据依次取出,并重新写入新的位置;而用本发明所提供的方法,不需要耗费取 出再重新写入的时间,而是通过矩阵转置直接在两种图像状态之间转换。
[0033] 此外,上述示例中只是为说明应用场景而举的一个例子,其将两种图像状态进行 转换的原理与图像处理软件直接翻转图像并不相同;实际上在数学计算中,有很多地方需 要用到矩阵的转置。为了便于理解,下面结合一具体示例做进一步说明。
[0034]本示例中,应用场景为FPGA或ASIC等专用集成电路,可直接对底层硬件进行操作, 因此只需对存储矩阵的单端口 SRAM的地址进行操作即可。
[0035] 当关闭矩阵转置开关时,将矩阵数据写入单端口sram,比如向目标地址:{addr[a+ b_l :a],addr[a-l :0]}写入数据。
[0036] 如图4所示,将矩阵转置开关打开后,其输出相应的使能信号,从而触发相应的行 列地址交叉转换;此时,再次访问目标地址:{addr[a+b_l :a],addr[a_l :0]},将进行行列地 址交叉转换,地址变为:{addr[a_l :0],addr[a+b_l :a]},即实际读取的数据为单端口 sram 中{addr[a_l :0],addr[a+b_l :a]}存放的数据。
[0037] 以3X3矩阵为例进行说明,2维矩阵在计算机存储器内是按一维数组的形式排列 的:
[0039]该矩阵在存储器中的存储顺序如下:
[0041]转置后的矩阵为:
[0043]转置矩阵在存储器中的存储顺序如下:
[0045] 传统方法中,为了计算转置矩阵,需要一一变换矩阵中元素的存储位置。可以看 出,上述变换需要进行约次操作(η为矩阵维度)。而采用本发明的方案可以显著降低这 种操作成本。
[0046] 本发明实施例的上述方案中,通过直接对底层硬件进行操作,当需要进行矩阵转 置时,直接对存储矩阵的单端口 SRAM的地址进行操作,将矩阵转置的时间复杂度直接降为 〇,不需要耗费任何时间即可实现矩阵的转置,与传统的软件实现方式相比较,能极大的节 省时间开销。
[0047]以上所述,仅为本发明较佳的【具体实施方式】,但本发明的保护范围并不局限于此, 任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可轻易想到的变化或替换, 都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范 围为准。
【主权项】
1. 一种基于单端口 SRAM的零耗时矩阵转置实现方法,其特征在于,包括: 基于单端口 SRAM来存储矩阵数据; 当开启设置在单端口 SRAM前端的矩阵转置开关后,所要访问的目标地址:第η行第m列, 通过矩阵转置进行行列地址交叉转换为:第m行第η列; 所述单端口 SRAM将转换后的地址作为目标地址,并输出该地址中存放的数据。2. 根据权利要求1所述的方法,其特征在于,所述单端口 SRAM中所存储矩阵数据的炜度 为N行第Μ列;M>m,N>n; 所述单端口 SRAM的容量为2a+b;其中,a为满足2a 2 Μ的最小正整数;b为满足2b 2 N的最小 正整数。
【文档编号】G06F9/345GK105867882SQ201610184959
【公开日】2016年8月17日
【申请日】2016年3月24日
【发明人】卢建良
【申请人】中国科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1