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

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

Info

Publication number
CN105867882A
CN105867882A CN201610184959.4A CN201610184959A CN105867882A CN 105867882 A CN105867882 A CN 105867882A CN 201610184959 A CN201610184959 A CN 201610184959A CN 105867882 A CN105867882 A CN 105867882A
Authority
CN
China
Prior art keywords
port sram
matrix
address
time
matrix transposition
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201610184959.4A
Other languages
English (en)
Inventor
卢建良
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
University of Science and Technology of China USTC
Original Assignee
University of Science and Technology of China USTC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by University of Science and Technology of China USTC filed Critical University of Science and Technology of China USTC
Priority to CN201610184959.4A priority Critical patent/CN105867882A/zh
Publication of CN105867882A publication Critical patent/CN105867882A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开了一种基于单端口SRAM的零耗时矩阵转置实现方法,包括:基于单端口SRAM来存储矩阵数据;当开启设置在单端口SRAM前端的矩阵转置开关后,所要访问的目标地址:第n行第m列,通过矩阵转置进行行列地址交叉转换为:第m行第n列;所述单端口SRAM将转换后的地址作为目标地址,并输出该地址中存放的数据。本发明的方案将矩阵转置的时间复杂度直接降为0,不需要耗费任何时间即可实现矩阵的转置,与传统的软件实现方式相比较,能极大的节省时间开销。

Description

基于单端口SRAM的零耗时矩阵转置实现方法
技术领域
本发明涉及矩阵数据处理技术领域,尤其涉及一种基于单端口SRAM的零耗时矩阵转置实现方法。
背景技术
在计算机数据处理过程中,经常会遇到矩阵转置的数学问题,传统CPU在处理此类问题时将会消耗大量的资源,目前最快的软件转置算法时间复杂度也在O(m×n),其中m、n为矩阵的列数和行数,对于一个1000×1000的矩阵来说,其时间复杂度为106量级。
传统方案中只能够通过软件算法来实现矩阵转置,由于软件无法直接操控底层硬件(尤其是存储单元的地址),并且矩阵数据只能以固定顺序存储在内存空间;因此,传统的软件实现转置算法时只能按以下步骤实现:申请与原矩阵A[M][N]容量相同大小的一块空间B[N][M];执行两层for循环,依次将A矩阵中的所有元素复制到B矩阵的对应位置上:
for(i=0;i<M;i++)
for(j=0;j<N;j++)
B[j][i]=A[i][j];
即,软件实现算法中,矩阵有多少元素,就要执行多少次赋值操作,从而消耗大量时间。
发明内容
本发明的目的是提供一种基于单端口SRAM的零耗时矩阵转置实现方法,极大的节省了时间开销。
本发明的目的是通过以下技术方案实现的:
一种基于单端口SRAM的零耗时矩阵转置实现方法,包括:
基于单端口SRAM来存储矩阵数据;
当开启设置在单端口SRAM前端的矩阵转置开关后,所要访问的目标地址:第n行第m列,通过矩阵转置进行行列地址交叉转换为:第m行第n列;
所述单端口SRAM将转换后的地址作为目标地址,并输出该地址中存放的数据。
进一步的,所述单端口SRAM中所存储矩阵数据的纬度为N行第M列;M≥m,N≥n;
所述单端口SRAM的容量为2a+b;其中,a为满足2a≥M的最小正整数;b为满足2b≥N的最小正整数。
由上述本发明提供的技术方案可以看出,通过直接对底层硬件进行操作,当需要进行矩阵转置时,直接对存储矩阵的单端口SRAM的地址进行操作,将矩阵转置的时间复杂度直接降为0,不需要耗费任何时间即可实现矩阵的转置,与传统的软件实现方式相比较,能极大的节省时间开销。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。
图1为本发明实施例提供的单端口SRAM的存储矩阵示意图;
图2为本发明实施例提供的转置之前的图像示意图;
图3为本发明实施例提供的转置之后的图像示意图;
图4为本发明实施例提供的基于单端口SRAM的零耗时矩阵转置实现方法的示意图。
具体实施方式
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。
本发明实施例提供一种基于单端口SRAM的零耗时矩阵转置实现方法,其主要包括:
基于单端口SRAM来存储矩阵数据;
当开启设置在单端口SRAM前端的矩阵转置开关后,所要访问的目标地址:第n行第m列,通过矩阵转置进行行列地址交叉转换为:第m行第n列;
所述单端口SRAM将转换后的地址作为目标地址,并输出该地址中存放的数据。
如图1所示,所述单端口SRAM中所存储矩阵数据的纬度为N行第M列;M≥m,N≥n;
所述单端口SRAM的容量为2a+b;其中,a为满足2a≥M的最小正整数;b为满足2b≥N的最小正整数;
列地址通过sram的0~(a-1)位进行寻址;
行地址通过sram的a~(a+b-1)位进行寻址;
本发明实施例中,当开启矩阵转置开关后,其输出相应的使能信号,从而触发相应的行列地址交叉转换;当不需要进行矩阵转置时,关闭矩阵转置开关,即可访问单端口SRAM中的原始矩阵。
本发明实施例的上述方案可以应用与各种需要对存储数据矩阵进行转置的场景。示例性的,在视频显示中,有一部分的显示区域的图像如图2所示,若用户需要将其变为图3所示图像,即需要将图2所示图像的数据矩阵进行转置。按照传统方法,需要将图2所示图像的矩阵中的数据依次取出,并重新写入新的位置;而用本发明所提供的方法,不需要耗费取出再重新写入的时间,而是通过矩阵转置直接在两种图像状态之间转换。
此外,上述示例中只是为说明应用场景而举的一个例子,其将两种图像状态进行转换的原理与图像处理软件直接翻转图像并不相同;实际上在数学计算中,有很多地方需要用到矩阵的转置。为了便于理解,下面结合一具体示例做进一步说明。
本示例中,应用场景为FPGA或ASIC等专用集成电路,可直接对底层硬件进行操作,因此只需对存储矩阵的单端口SRAM的地址进行操作即可。
当关闭矩阵转置开关时,将矩阵数据写入单端口sram,比如向目标地址:{addr[a+b-1:a],addr[a-1:0]}写入数据。
如图4所示,将矩阵转置开关打开后,其输出相应的使能信号,从而触发相应的行列地址交叉转换;此时,再次访问目标地址:{addr[a+b-1:a],addr[a-1:0]},将进行行列地址交叉转换,地址变为:{addr[a-1:0],addr[a+b-1:a]},即实际读取的数据为单端口sram中{addr[a-1:0],addr[a+b-1:a]}存放的数据。
以3×3矩阵为例进行说明,2维矩阵在计算机存储器内是按一维数组的形式排列的:
a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33
该矩阵在存储器中的存储顺序如下:
a11 a12 a12 a21 a22 a23 a31 a32 a33
转置后的矩阵为:
a 11 a 21 a 31 a 12 a 22 a 32 a 13 a 23 a 33
转置矩阵在存储器中的存储顺序如下:
a11 a21 a31 a12 a22 a32 a13 a23 a33
传统方法中,为了计算转置矩阵,需要一一变换矩阵中元素的存储位置。可以看出,上述变换需要进行约n*n次操作(n为矩阵维度)。而采用本发明的方案可以显著降低这种操作成本。
本发明实施例的上述方案中,通过直接对底层硬件进行操作,当需要进行矩阵转置时,直接对存储矩阵的单端口SRAM的地址进行操作,将矩阵转置的时间复杂度直接降为0,不需要耗费任何时间即可实现矩阵的转置,与传统的软件实现方式相比较,能极大的节省时间开销。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。

Claims (2)

1.一种基于单端口SRAM的零耗时矩阵转置实现方法,其特征在于,包括:
基于单端口SRAM来存储矩阵数据;
当开启设置在单端口SRAM前端的矩阵转置开关后,所要访问的目标地址:第n行第m列,通过矩阵转置进行行列地址交叉转换为:第m行第n列;
所述单端口SRAM将转换后的地址作为目标地址,并输出该地址中存放的数据。
2.根据权利要求1所述的方法,其特征在于,所述单端口SRAM中所存储矩阵数据的纬度为N行第M列;M≥m,N≥n;
所述单端口SRAM的容量为2a+b;其中,a为满足2a≥M的最小正整数;b为满足2b≥N的最小正整数。
CN201610184959.4A 2016-03-24 2016-03-24 基于单端口sram的零耗时矩阵转置实现方法 Pending CN105867882A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610184959.4A CN105867882A (zh) 2016-03-24 2016-03-24 基于单端口sram的零耗时矩阵转置实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610184959.4A CN105867882A (zh) 2016-03-24 2016-03-24 基于单端口sram的零耗时矩阵转置实现方法

Publications (1)

Publication Number Publication Date
CN105867882A true CN105867882A (zh) 2016-08-17

Family

ID=56626186

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610184959.4A Pending CN105867882A (zh) 2016-03-24 2016-03-24 基于单端口sram的零耗时矩阵转置实现方法

Country Status (1)

Country Link
CN (1) CN105867882A (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1801940A (zh) * 2005-12-15 2006-07-12 清华大学 整型变换电路和整型变换方法
CN102567241A (zh) * 2010-12-27 2012-07-11 北京国睿中数科技股份有限公司 存储器控制器及存储器访问控制方法
WO2015178212A1 (ja) * 2014-05-21 2015-11-26 ソニー株式会社 データ処理装置、及び、データ処理方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1801940A (zh) * 2005-12-15 2006-07-12 清华大学 整型变换电路和整型变换方法
CN102567241A (zh) * 2010-12-27 2012-07-11 北京国睿中数科技股份有限公司 存储器控制器及存储器访问控制方法
WO2015178212A1 (ja) * 2014-05-21 2015-11-26 ソニー株式会社 データ処理装置、及び、データ処理方法

Similar Documents

Publication Publication Date Title
US4675809A (en) Data processing system for floating point data having a variable length exponent part
KR100819061B1 (ko) 쓰기 전력 계산 및 데이터 반전 기능을 통한 상 변화메모리에서의 데이터 쓰기 장치 및 방법
WO2017156968A1 (zh) 神经网络的计算方法、系统及其装置
US9825648B1 (en) Method and apparatus for hybrid compression processing for high levels of compression
US20220101896A1 (en) Data structures with multiple read ports
WO2012023986A1 (en) High speed memory systems and methods for designing hierarchical memory systems
US10891337B2 (en) Content addressable memory and semiconductor device
US20060106969A1 (en) Memory controller and method for writing to a memory
CN103309626A (zh) 实现网络芯片多读写端口存储器的方法及相应存储器
CN116010299B (zh) 一种数据处理方法、装置、设备及可读存储介质
US20140082282A1 (en) Multi-granularity parallel storage system and storage
CN114115507B (zh) 存储器及写数据的方法
US11475102B2 (en) Adaptive matrix multiplication accelerator for machine learning and deep learning applications
US20140344515A1 (en) Multi-granularity parallel storage system
CN101707881A (zh) 微码仿真存储器的高速缓存
CN110737612A (zh) 一种含有存储内计算的处理器
CN107632830B (zh) 一种溢出优化的寄存器分配方法及系统
CN105867882A (zh) 基于单端口sram的零耗时矩阵转置实现方法
CN113378115B (zh) 一种基于磁性随机存储器的近存稀疏向量乘法器
US8924623B2 (en) Method for managing multi-layered data structures in a pipelined memory architecture
WO2016007069A1 (en) Device and method for performing a fourier transform on a three dimensional data set
US5875147A (en) Address alignment system for semiconductor memory device
KR20190029270A (ko) 다중 캐시 메모리를 구비한 지능형 반도체 장치 및 지능형 반도체 장치에서의 메모리 접근 방법
RU2730174C1 (ru) Реконфигурируемый вычислитель быстрого преобразования фурье сверхбольшой длины преобразования
US20230072556A1 (en) Processing unit architectures and techniques for reusable instructions and data

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20160817

RJ01 Rejection of invention patent application after publication