CN118151863A - 访问sram的方法、装置及芯片 - Google Patents
访问sram的方法、装置及芯片 Download PDFInfo
- Publication number
- CN118151863A CN118151863A CN202410419380.6A CN202410419380A CN118151863A CN 118151863 A CN118151863 A CN 118151863A CN 202410419380 A CN202410419380 A CN 202410419380A CN 118151863 A CN118151863 A CN 118151863A
- Authority
- CN
- China
- Prior art keywords
- data
- read
- sram
- address
- block structure
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 54
- 230000015654 memory Effects 0.000 claims abstract description 75
- 238000003491 array Methods 0.000 claims abstract description 22
- 230000004044 response Effects 0.000 claims abstract description 7
- 238000004364 calculation method Methods 0.000 claims description 35
- 238000006243 chemical reaction Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 3
- 238000001914 filtration Methods 0.000 claims description 3
- 238000012163 sequencing technique Methods 0.000 claims description 3
- 238000000638 solvent extraction Methods 0.000 claims description 3
- 239000011159 matrix material Substances 0.000 abstract description 4
- 230000001483 mobilizing effect Effects 0.000 abstract 1
- 238000013507 mapping Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 6
- 230000003068 static effect Effects 0.000 description 4
- 241000402754 Erythranthe moschata Species 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 239000003086 colorant Substances 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Landscapes
- Image Input (AREA)
Abstract
本发明公开了一种访问SRAM的方法、装置及芯片,基于预先设置的读写规则将多维数组转换成多个一维数组;基于读写规则和SRAM块结构的配置,计算待写入SRAM块结构的各个数据的写入地址,并将各个数据根据对应的写入地址分别写入对应的SRAM块结构的存储地址中;响应于访问请求,计算访问请求所请求的读出数据对应的读出地址并将读出数据从对应的SRAM块结构的存储地址中读出。本发明的技术方案,能够在矩阵运算中的多系数单周期无冗余地访问SRAM硬件结构,具有在1T存取周期内送出多个用户指定的系数数据,在访问过程中调动最少的SRAM块结构的引用块数、无数据交叠冗余以及降低硬件成本。
Description
技术领域
本发明涉及半导体技术领域,尤其涉及一种访问SRAM的方法、装置及芯片。
背景技术
随着集成电路的快速发展,需要往集成电路中添加的计算也越来越复杂,如3DLUT(3-Dimension Look-up Table,三维查找表)色域转换(采用内插算法)、2D GammaConvert(二维伽马变换)、1D Gamma Interpolation(一维伽马插值)、Adaptive(variablecoefficient to input signal(随输入信号的可变系数))Filter(自适应滤波器)、双三次插值、双线性插值以及离散卷积等矩阵运算。这些运算需要同时访问大量系数数据。在目前的算法中,高速数据缓存(databuffer)常选SRAM(Static Random-Access Memory,静态随机存取存储器)。为提升***性能,数据需要存放于SRAM之中来提升访问速度从而达到。
在一些实时视频类处理中,需要一个cycle(1T时钟周期)内完成多个乘加运算。数个乘法加权系数要从SRAM中一次读出。现在的SRAM技术限制为1个存取周期内只能送出1个地址的数据。
但由于SRAM一维线性地址访问的原因,即一个cycle(1T时钟周期)内最多存取一个地址的数据,这会使得访问多个数据时存在存取冲突问题,需要将对多个数据的访问分为多次访问请求进行。因此,如何实现SRAM快速访问成了提升***性能的必要手段之一。
此外,存储器(SRAM)数量也随之不断上升,这意味着在硬件设计中要考虑的物理限制因素也要随之增加。为了满足这些要求,目前采用以下两种解决方案:
1、交叠冗余
a)多块冗余复制;将相同的数据复制多份存储在多块SRAM中,一个时钟周期内一次读出不同地址的数据,这种蛮力做法无疑将造成数据冗余,浪费存储空间;
b)部分数据交叠冗余;剔除那些不需要同时读出的数据,写到不同地址。找到那些必须要同时读出但又无法同时读出的数据,按连续地址交叠冗余存储,虽然好过上一种做法,但仍造成数据冗余,需要改进。
2、分块存取
将需要同时读出的的数据按一定逻辑分写到多的SRAM blocks(块)中,可以解决多数据单周期访问(MultiAccess in Single Cycle),但是太多的SRAM blocks会造成以下问题:
a)地址译码逻辑电路重复,面积浪费;
b)产品良率降低;
c)还会造成memory BIST(memory Built-in SelfTest,内存自建自动测试)复杂度增加,测试成本增加。
可见,现有技术仍然无法实现能够同时满足使用更少的SRAM块数、存储的数据不交叠以及单周期存取要求这些条件的方案。
发明内容
本发明的目的之一是为了克服现有技术中的不足,针对现有技术中存在的上述技术问题,提供一种访问SRAM的方法、装置及芯片。
为实现以上目的,本发明通过以下技术方案实现:
第一方面,本发明提供了一种访问SRAM的方法,所述方法包括:
基于预先设置的读写规则将多维数组转换成多个一维数组,所述一维数组被配置为每个数据同时读出;
在存储空间中划分出多个SRAM块结构,每个SRAM块结构被配置为设置有多列单片SRAM和多行存储地址,每个存储地址用于存储一数据,所述一维数组的数据被配置为基于所述读写规则被存储于SRAM块结构中不同的单片SRAM中属于同一行的存储地址中;
基于所述读写规则和SRAM块结构的配置,计算待写入SRAM块结构的各个数据的写入地址,并将所述各个数据根据对应的写入地址分别写入对应的SRAM块结构的存储地址中;
响应于访问请求,计算所述访问请求所请求的读出数据对应的读出地址并将所述读出数据从对应的SRAM块结构的存储地址中读出。
在本申请的一个优选实施例中,所述读写规则包括第一规则和第二规则,所述第一规则被配置为将在读取时需要同时读出的多个数据写到多个SRAM块结构中不同的单片SRAM的存储地址中,所述第二规则被配置为将在读取时需要同时读出的多个数据写到各个SRAM块结构中不同的单片SRAM的同一行存储地址中;当所述SRAM块结构中单片SRAM的数量为m时,应用第一规则进行数据转换;当所述SRAM块结构中单片SRAM的数量为m/2时,先后应用所述第一规则和所述第二规则进行数据转换。
在本申请的一个优选实施例中,将所述多维数组转换成一维数组的过程包括:
预先设置读写规则,接收图像并获取图像信息;
基于所述图像信息对图像的源色彩空间进行分割,得到多个子色彩空间;
解析各个子色彩空间,获得能够表征RGB三个颜色通道的多个色彩数据,每个色彩数据之间能够通过插值计算得到;
将每个子色彩空间的色彩数据汇集形成多维数组;
基于所述读写规则,将所述多维数组中隶属于同一子色彩空间的各个色彩数据作为需要同时读出的数据进行划分,得到与各个子色彩空间对应的一维数组。
在本申请的一个优选实施例中,在存储空间中划分SRAM块结构的过程包括:
设置单个SRAM块结构中划分给单片SRAM的最大数据宽度;
将所述存储空间划分为多个子存储空间,所述子存储空间被配置为能够容纳所述单片SRAM的最大数据宽度。
在本申请的一个优选实施例中,各个数据对应的写入地址的计算过程包括:
为所述多维数组中各个数据赋予对应的逻辑寻址表示;
根据各个数据对应的逻辑寻址表示,为每个所述一维数组的各个数据进行排序;
根据各个所述一维数组中各个数据的顺序,依次将各个数据与所述SRAM块结构的各个单片SRAM中属于同一行的各个存储地址进行关联,得到各个数据对应的写入地址;
为每个SRAM块结构的各个单片SRAM设置对应的片选使能位,所述片选使能位被配置为与各个SRAM块结构中每片SRAM位于起始行的存储地址对应的数据相关联。
在本申请的一个优选实施例中,各个数据对应的读出地址的计算过程包括:
获取访问请求,所述访问请求中包括请求的读出数据的读出信息;
根据所述读出信息得到所述读出数据的逻辑寻址表示;
根据所述读出数据的逻辑寻址表示,求得所述读出数据对应的写入地址;
基于所述读写规则,将所述读出数据对应的各个SRAM块结构中各个单片SRAM的片选使能位设置为1;
基于所述逻辑寻址表示和所述写入地址,计算所述读出数据对应的读出地址;
通过各个设置为1的片选使能位,基于所述读出数据对应的读出地址,将所述读出数据从各个SRAM块结构中各个单片SRAM的存储地址中读出。
在本申请的一个优选实施例中,若SRAM块结构中单片SRAM的数量精简到一半,则各个数据对应的读出地址的计算过程还包括:
针对计算出的各个读出地址,从第一位读出地址开始每隔两位将相邻两位读出地址进行合并至同一存储地址,得到各个SRAM块结构的各个单片SRAM对应的新读出地址;
为各个SRAM块结构的各个单片SRAM对应的新读出地址和片选使能位分别设置对应的填充位,并基于填充位对新读出地址进行过滤,得到有效读出地址;
通过各个设置为1的片选使能位,基于所述读出数据对应的有效读出地址,从各个SRAM块结构的各个单片SRAM的存储地址中得到对应的输出数据;
通过对所述输出数据进行拼接,得到所述读出数据。
第二方面,本发明提供了一种访问SRAM的装置,所述装置包括转换模块、划分模块、写入模块和读出模块;
所述转换模块用于基于预先设置的读写规则将多维数组转换成多个一维数组,所述一维数组被配置为每个数据同时读出;
所述划分模块用于在存储空间中划分出多个SRAM块结构,每个SRAM块结构被配置为设置有多列单片SRAM和多行存储地址,每个存储地址用于存储一数据,所述一维数组的数据被配置为基于所述读写规则被存储于SRAM块结构中不同的单片SRAM中属于同一行的存储地址中;
所述写入模块用于基于所述读写规则和SRAM块结构的配置,计算待写入SRAM块结构的各个数据的写入地址,并将所述各个数据根据对应的写入地址分别写入对应的SRAM块结构的存储地址中;
所述读出模块用于响应于访问请求,计算所述访问请求所请求的读出数据对应的读出地址并从将所述读出数据对应的SRAM块结构的存储地址中读出。
第三方面,本发明提供了一种芯片,包括输入电路、控制电路、写入地址计算电路、读出地址计算电路、地址译码及片选电路、SRAM控制电路和输出电路;所述输入电路连接所述控制电路,所述控制电路分别连接所述写入地址计算电路、所述读出地址计算电路、所述地址译码及片选电路和所述SRAM控制电路,所述写入地址计算电路和所述读出地址计算电路连接在所述地址译码及片选电路上,所述地址译码及片选电路分别连接所述SRAM控制电路和所述输出电路;
所述输入电路用于输入图像数据、读写规则和访问请求;
所述控制电路用于基于所述读写规则将图像数据的多维数组转换成多个一维数组并将各个一维数组配置为每个数据同时读出;
所述SRAM控制电路用于基于读写规则,在存储空间中划分出多个SRAM块结构,并将每个SRAM块结构配置为设置有多列单片SRAM和多行存储地址,每个存储地址用于存储一数据,所述一维数组的数据被配置为基于所述读写规则被存储于SRAM块结构中不同的单片SRAM中属于同一行的存储地址中;
所述写入地址计算电路用于基于读写规则和SRAM块结构的配置,计算待写入SRAM块结构的各个数据的写入地址;
所述读出地址计算电路用于响应于访问请求,计算所述访问请求所请求的读出数据对应的读出地址;
所述地址译码及片选电路用于选中需要同时读出的多个数据并将该些数据根据对应的写入地址分别写入对应的SRAM块结构的存储地址中,以及用于响应于访问请求选中需要同时读出的多个读出数据并将该些读出数据从对应的SRAM块结构的存储地址中读出;
所述输出电路用于将所述多个读出数据输出。
第四方面,本发明提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行如第一方面所述的访问SRAM的方法。
本发明所公开的访问SRAM的方法、装置及芯片,能够在矩阵运算中的多系数单周期无冗余地访问SRAM硬件结构,具有在1T存取周期内送出多个用户指定的系数数据,在访问过程中调动最少的SRAM块结构的引用块数、无数据交叠冗余以及降低硬件成本。
附图说明
本发明借助于以下附图进行描述:
图1是本发明中实施例的芯片中的电路连接示意图;
图2是本发明中实施例的访问SRAM的装置中的模块示意图;
图3是本发明中实施例的访问SRAM的方法的流程图;
图4是本发明中实施例中,三维数组中小立方体的示意图;
图5是本发明中实施例中,三维数组的示意图;
图6是本发明中实施例的访问SRAM时,向SRAM块结构中写入数据的示意图;
图7是本发明中实施例的访问SRAM时,数据存储在单个SRAM块结构的8片SRAM的示意图;
图8是本发明中实施例的访问SRAM时,数据存储在单个SRAM块结构的4片SRAM的示意图。
附图标记:
10-输入电路;20-控制电路;30-写入地址计算电路;40-读出地址计算电路;50-地址译码及片选电路;60-SRAM控制电路;70-输出电路;
100-转换模块;200-划分模块;300-写入模块;400-读出模块。
具体实施方式
为了更好的理解本申请的技术方案,下面结合附图对本申请实施例进行详细描述。
应当明确,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
如图1所示,本发明实施例提供了一种芯片,包括输入电路10、控制电路20、写入地址计算电路30、读出地址计算电路40、地址译码及片选电路50、SRAM控制电路60和输出电路70;输入电路10连接控制电路20,控制电路20分别连接写入地址计算电路30、读出地址计算电路40、地址译码及片选电路50和SRAM控制电路60,写入地址计算电路30和读出地址计算电路40连接在地址译码及片选电路50上,地址译码及片选电路50分别连接SRAM控制电路60和输出电路70。
其中,输入电路10用于输入图像数据、读写规则和访问请求。该图像数据可以是单个静态图片的图片数据也可以是具有多帧图像的视频数据,该读写规则可以根据对图像数据进行处理的实际需求进行设置,处理图片数据和处理视频数据的读写规则可以相同也可以不同,该访问请求可以是访问SRAM中存储的图像数据中部分数据或者全部数据的请求。
控制电路20用于基于读写规则将图像数据的多维数组转换成多个一维数组并将各个一维数组配置为每个数据同时读出。图像数据中包含有大量表示色彩的数据,这些数据处于不同的维度从而能够表达复杂的图像情况。而存储在物理存储结构(PhysicalMemory Structure)的数据为一维表示,故需要将多维数组转换成一维数组才能够存储至物理存储结构中,该物理存储结构可以是主存,也可以是显存、闪存等其他存储器。在对视频进行处理时,视频的每一帧都包含大量的色彩数据,每个色彩数据可能包含多个数据,这些属于同一色彩数据的多个数据需要被同时读出,因此在转换多维数组至一维时,需要将这些需要被同时读出的数据配置在同一个一维数组中,以便于被同时读出。
SRAM控制电路60用于基于读写规则,在存储空间中划分出多个SRAM(StaticRandom-Access Memory,静态随机存取存储器)块结构,并将每个SRAM块结构配置为设置有多列单片SRAM和多行存储地址,每个存储地址用于存储一数据,一维数组的数据被配置为基于读写规则被存储于SRAM块结构中不同的单片SRAM中属于同一行的存储地址中。物理存储结构(比如主存)中具有能够容纳多个存储块的存储空间,比如可以存储多个SRAM块结构,每个SRAM块结构具有多列单片SRAM,单片SRAM具有多个存储地址,这些存储地址的按照行的序号从小到大排列,比如从0开始递增,单片SRAM的大小可以设置为数据宽度小于512bit(比特),从而使得该存储空间能够容纳最大块数目的SRAM块结构。每个SRAM块结构都具有一定数量的存储地址,以行为单位表示,并且可以通过规定起始点来定义每一行对应的序号,从而使得被配置为需要同时读出的一组一维数组的数据,能够被配置为存储在SRAM块结构中处于不同的单片SRAM中序号相同的属于同一行的存储地址中,比如第一组一维数组的多个数据,被存储在SRAM块结构中各片SRAM的行的序号为第一行的存储地址中。
写入地址计算电路30用于基于读写规则和SRAM块结构的配置,计算待写入SRAM块结构的各个数据的写入地址。该写入地址计算电路30能够将多维数组中的数据通过分类成多个一维数组,然后再将其余多个SRAM块结构中的存储地址进行对应计算,将计算出来的各个数据对应的存储地址记为写入地址。
读出地址计算电路40用于响应于访问请求,计算访问请求所请求的读出数据对应的读出地址。该读出地址计算电路40根据写入地址与各个数据的映射关系,将请求的读出数据所对应的存储地址从各个SRAM块结构的存储地址中找出,记为读出地址。
地址译码及片选电路50用于选中需要同时读出的多个数据并将该些数据根据对应的写入地址分别写入对应的SRAM块结构的各个单片SRAM的存储地址中,以及用于响应于访问请求选中需要同时读出的多个读出数据并将该些读出数据从对应的SRAM块结构的各个单片SRAM的存储地址中读出。在写入地址计算电路30计算出多维数组的各个数据与各个SRAM块结构的各个单片SRAM的存储地址之间的映射关系之后,由地址译码及片选电路50根据该映射关系将数据映射到对应的SRAM块结构的存储地址中。在读出地址计算电路40计算出访问请求所请求的读出数据对应的读出地址之后,由地址译码及片选电路50根据上述映射关系选中读出地址对应的SRAM块结构以及对应的存储地址,进而从SRAM块结构中将请求的读出数据从对应的存储地址中读出。
输出电路70用于将多个读出数据输出。
如图2所示,本发明提供了一种访问SRAM的装置,安装于芯片中,通过上述多个电路的控制来实现访问SRAM的操作,该装置包括转换模块100、划分模块200、写入模块300和读出模块400。转换模块100用于基于预先设置的读写规则将多维数组转换成多个一维数组,一维数组被配置为每个数据同时读出。划分模块200用于在存储空间中划分出多个SRAM块结构,每个SRAM块结构被配置为设置有多列单片SRAM和多行存储地址,每个存储地址用于存储一数据,一维数组的数据被配置为基于读写规则被存储于SRAM块结构中不同的单片SRAM中属于同一行的存储地址中。写入模块300用于基于读写规则和SRAM块结构的配置,计算待写入SRAM块结构的各个数据的写入地址,并将各个数据根据对应的写入地址分别写入对应的SRAM块结构的存储地址中。读出模块400用于响应于访问请求,计算访问请求所请求的读出数据对应的读出地址并将读出数据从对应的SRAM块结构的存储地址中读出。
如图3所示,本发明提供了一种访问SRAM的方法,由上述装置通过对芯片中多个电路的控制来执行,该方法包括:
S1:基于预先设置的读写规则将多维数组转换成多个一维数组,一维数组被配置为每个数据同时读出;
S2:在存储空间中划分出多个SRAM块结构,每个SRAM块结构被配置为设置有多列单片SRAM和多行存储地址,每个存储地址用于存储一数据,一维数组的数据被配置为基于读写规则被存储于SRAM块结构中不同的单片SRAM中属于同一行的存储地址中;
S3:基于读写规则和SRAM块结构的配置,计算待写入SRAM块结构的各个数据的写入地址,并将各个数据根据对应的写入地址分别写入对应的SRAM块结构的存储地址中;
S4:响应于访问请求,计算访问请求所请求的读出数据对应的读出地址并将读出数据从对应的SRAM块结构的存储地址中读出。
具体来说,读写规则包括第一规则和第二规则,第一规则被配置为将在读取时需要同时读出的多个数据写到多个SRAM块结构中不同的单片SRAM的存储地址中,第二规则被配置为将在读取时需要同时读出的多个数据写到各个SRAM块结构中不同的单片SRAM的同一行存储地址中。在不同的物理存储结构中在SRAM块结构中设置单片SRAM的数量不相同,假设多维数组转换成的一维数组包含m个数据,那么当SRAM块结构中单片SRAM的数量为m时,应用第一规则进行数据转换即可。如果将SRAM块结构中单片SRAM的数量缩减,比如当SRAM块结构中单片SRAM的数量为m/2时,需要先后应用第一规则和第二规则进行数据转换。如此类推,不限于将2个相邻单片SRAM中存储的2个数据进行合并的情况,可以扩展到将多个相邻单片SRAM中存储的2n个数据进行合并的情况,则SRAM块结构中单片SRAM的数量为m/2n,此时需要考虑其他因素来平衡选择,比如多比特翻转带来更大功耗。
在执行S1时,将多维数组转换成一维数组的过程包括:
S101:预先设置读写规则,接收图像并获取图像信息;
S102:基于图像信息对图像的源色彩空间进行分割,得到多个子色彩空间;
S103:解析各个子色彩空间,获得能够表征RGB三个颜色通道的多个色彩数据,每个色彩数据之间能够通过插值计算得到;
S104:将每个子色彩空间的色彩数据汇集形成多维数组;
S105:基于读写规则,将多维数组中隶属于同一子色彩空间的各个色彩数据作为需要同时读出的数据进行划分,得到与各个子色彩空间对应的一维数组。
在执行S2时,在存储空间中划分SRAM的过程包括:
S201:设置单个SRAM块结构中划分给单片SRAM的最大数据宽度;
S202:将存储空间划分为多个子存储空间,子存储空间被配置为能够容纳单片SRAM的最大数据宽度。
在执行S3时,各个数据对应的写入地址的计算过程包括:
S301:为多维数组中各个数据赋予对应的逻辑寻址表示;
S302:根据各个数据对应的逻辑寻址表示,为每个一维数组的各个数据进行排序;
S303:根据各个一维数组中各个数据的顺序,依次将各个数据与SRAM块结构的各个单片SRAM中属于同一行的各个存储地址进行关联,得到各个数据对应的写入地址;
S304:为每个SRAM块结构的各个单片SRAM设置对应的片选使能位,片选使能位被配置为与各个SRAM块结构中每片SRAM位于起始行的存储地址对应的数据相关联。
在执行S4时,各个数据对应的读出地址的计算过程包括:
S401:获取访问请求,访问请求中包括请求的读出数据的读出信息;
S402:根据读出信息得到读出数据的逻辑寻址表示;
S403:根据读出数据的逻辑寻址表示,求得读出数据对应的写入地址;
S404:基于读写规则,将读出数据对应的各个SRAM块结构中各个单片SRAM的片选使能位设置为1;
S405:基于逻辑寻址表示和写入地址,计算读出数据对应的读出地址;
S406:通过各个设置为1的片选使能位,基于读出数据对应的读出地址,将读出数据从各个SRAM块结构中各个单片SRAM的存储地址中读出。
在执行S4时,若SRAM块结构中单片SRAM的数量精简到一半,则各个数据对应的读出地址的计算过程还包括:
S407:针对计算出的各个读出地址,从第一位读出地址开始每隔两位将相邻两位读出地址进行合并至同一存储地址,得到各个SRAM块结构的各个单片SRAM对应的新读出地址;
S408:为各个SRAM块结构的各个单片SRAM对应的新读出地址和片选使能位分别设置对应的填充位,并基于填充位对新读出地址进行过滤,得到有效读出地址;
S409:通过各个设置为1的片选使能位,基于读出数据对应的有效读出地址,从各个SRAM块结构的各个单片SRAM的存储地址中得到对应的输出数据;
S410:通过对输出数据进行拼接,得到读出数据。
下面以通过三维查找表(3DLUT)将C算法模型(C-model)中的数据存入物理存储结构中,再根据访问SRAM的访问请求将请求的读出数据读出的过程对本发明进行说明。
三维查找表简称3DLUT,是一个对应数值的列表,可以通过它查询任何输入值及其所对应的输出值,是色彩转换技术中常用的一种技术。其核心思想是,将源色彩空间进行分割,划分为一个个规则的立方体,每个立方体的八个顶点的数据是己知的,将所有源空间的已知点构成一张三维查找表。在本发明中,输入的图像数据包含诸多色彩数据,一般为RGB(红绿蓝)三个颜色通道的色值,将RGB三个通道分别等分为N个顶点,组成NxNxN个节点,即多维数组为三维数组,在使用时,其他节点就能直接通过插值得到,常用的节点阵列分布形式有9x9x9,17x17x17,33x33x33,65x65x65等。在ISP(Image Singal Process,图像信号处理)算法和显示算法里,一般都是用17x17x17。在不同的图像数据中,插值策略也不尽相同,根据插值策略的不同可以把三维插值法划分为不同的切割立方体插值,通常采用三维线性插值(八点六面体),如图4所示,插值计算需要在一个周期(1cycle)内得到立方体的8个顶点的系数值,再根据后面的插值规则计算各个顶点的系数值。在目前的C模型中简化了计算细节,不用考虑物理存储结构的一维线性寻址的概念,也不用考虑时钟周期的概念,该C模型中多维数组的逻辑寻址表示(Logic representation ofarray in C model)可用以下表达式表示:Z[zmax:0]Y[ymax:0]X[xmax:0]。通过该表达式,可以在图像数据的三维数组中,由多个输入的xyz坐标,一次性查到想要的8个顶点的系数值。但是,由于SRAM仅支持一维线性地址访问,即一个cycle(1T时钟周期)内最多存取一个地址的数据,这会使得访问多个数据时存在数据和地址的存取冲突问题,需要将对多个数据的访问分为多次访问请求进行。对多个xyz输入坐标,则需要多个cycle才能查到想要的多个数据。这对于要求实时运算的实时视频处理来说是没法在1~2个cycle内产生输出结果的。因此需要将C模型中的多维数组转换为能够支持一维线性寻址的SRAM物理存储体结构,比如一维数组。
将多维数组转换成一维数组的过程如S101~S105,遵循的原则是上述第一规则和第二规则,即第一规则为需要同时读出的多个数据,写到多个SRAM块结构中不同的单片SRAM的存储地址中,第二规则为需要同时读出的数据,可写到各个SRAM块结构中不同的单片SRAM中行的序号为同地址的一行数据,再加以滤出。下面参照图5,以多维数组的立方体为4x4x4的小立方体结构为例,在该立方体中具有64个小立方体,每个小立方体有8个顶点,相邻的小立方体之间存在交叉顶点,它们共用这些交叉顶点,每个顶点都有一个系数,每个小立方体中的任一点都可以通过插值算法得到。由上文可知,每个小立方体的8个顶点属于需要被同时读出的数据,故在转换成一维数组时,将每个小立方体的8个顶点归类在同一个一维数组中,即从多维数组转换出的各个一维数组分别代表一个小立方体并包含该小立方体的8个顶点的系数。
在存储空间中划分出多个SRAM块结构的过程如S201~S202,一个存储空间中划分出的SRAM块结构中单片SRAM的数量可以与一维数组的数组个数相同,在本发明中SRAM块结构中单片SRAM的数量m可以为8个,每个SRAM块结构中单片SRAM的大小通常为数据宽度小于512bit(比特)。为每个SRAM块结构配置多列单片SRAM和多行存储地址,用于存储数据。
各个一维数组中各个数据与其待写入的SRAM块结构的各个单片SRAM以及其中的存储地址之间的映射关系的建立过程如S301~S304,即该过程为每个一维数组中的数据都配置了对应的写入地址,每个数据与其写入地址的映射关系即为地址译码的依据。在SRAM块结构的各个单片SRAM中,存储地址用Addr来表示,编号从0开始依次增加。在本发明中,单个一维数组包含8个单周期读出数据,那么在单片SRAM中对应的存储地址也就分配8个,即Addr0~Addr7。该8个数据在C模型中的逻辑寻址表示采用二进制表达,每个数据的逻辑寻址表示与存储地址之间的映射关系如下:
{Addr0=(z>>1)*ymax*xmax+(y>>1)*xmax+x>>1=(z[zmax:1]*ymax*xmax+y[ymax:1]*xmax+x[xmax:1]);
Addr1=Addr0+1;
Addr2=Addr0+xmax=(z>>1)*ymax*xmax+(y>>0)*xmax+x>>1;
Addr3=Addr2+1;
Addr4=Addr0+xmax*ymax=(z>>0)*ymax*xmax+(y>>1)*xmax+x>>1;
Addr5=Addr4+1;
Addr6=Addr0+xmax*ymax+xmax=(z>>0)*ymax*xmax+(y>>0)*xmax+
x>>1;
Addr7=Addr6+1};
Addr0~Addr7即为同一个一维数组在8个单片SRAM:SRAM0~SRAM7的写入地址。基于上述映射关系,地址译码及片选电路50就能够对各个数据进行地址译码,从而将各个数据存入各个单片SRAM的对应存储地址中。此外,每个单片SRAM还配置了片选使能位,即:
{csel[0]=(z[0]y[0]x[0]==000);
csel[1]=(z[0]y[0]x[0]==001);
csel[2]=(z[0]y[0]x[0]==010);
csel[3]=(z[0]y[0]x[0]==001);
csel[4]=(z[0]y[0]x[0]==100);
csel[5]=(z[0]y[0]x[0]==101);
csel[6]=(z[0]y[0]x[0]==110);
csel[7]=(z[0]y[0]x[0]==111)};
其中,csel[7:0]为SRAM块结构中8个单片SRAM:SRAM0~SRAM7的片选使能位。基于该些片选使能位,地址译码及片选电路50能够选中该8个单片SRAM:SRAM0~SRAM 7,进而将同一个一维数组的8个数据同时写入或者逐次每个写入对应的SRAM块结构的存储地址中。将SRAM块结构设置为8片SRAM的形式仅为本发明的一种实施方式,还可以将SRAM块结构设置为4片SRAM的形式,即SRAM0~SRAM3,此时只需要设置4个片选使能位即可,即csel[3:0],选择哪种实施方式取决于处理视频的实际需求以及单片SRAM的最大位宽(通常为512bit)。如果三维数组的立方体NxNxN中的N为奇数,则数据的逻辑寻址表示中的y的值每增加1,x的值奇偶顺序就需要进行调换。
在建立了多维数组的各个数据与SRAM块结构的存储地址之间的映射关系,为各个数据计算对应了写入地址之后,将这些数据按照写入地址的顺序填入SRAM块结构的各个单片SRAM中,从而得到SRAM数据。如图6所示,在SRAM块结构的各个单片SRAM中按照SRAM0~SRAM7的顺序往存储地址中写入数据。在往SRAM0的存储地址中写入数据的过程中,先从图5所示的立方体中的上层平面(在xy方向组成的z方向为0的平面中共计16个小立方体)的左下角第1列(即x坐标、y坐标和z坐标均为0的小立方体)开始沿SRAM0的x方向逐个往存储地址中写入对应的数据,等SRAM0的存储地址填写完毕后,则按图6中实线箭头顺序,跳过邻近的SRAM1,在下下列SRAM2开始沿x方向逐个往存储地址中写入对应的数据,以此类推直到该立方体的平面中各个数据填写完毕。再按图6中虚线箭头顺序转到下下层平面(在xy方向组成的z方向为2的平面中共计16个小立方体),从左下角第1列(即x坐标和y坐标为0,z坐标为2的小立方体)开始沿SRAM2的x方向逐个往存储地址中写入对应的数据,再参照上述的方式填写SRAM2的存储地址直至填写完毕,再以此类推进行下一***作。在往SRAM1的存储地址中写入数据的过程中,先图5所示的上层平面(在xy方向组成的z方向为0的平面中共计16个小立方体)的左下角第2列(即x坐标和z坐标为0,y坐标为1的小立方体)开始沿SRAM1的x方向逐个往存储地址中写入对应的数据,等SRAM1的存储地址填写完毕后,按图6中实线箭头顺序,跳过邻近的SRAM2,在下下列SRAM3开始沿x方向逐个往存储地址中写入对应的数据,以此类推直到该立方体的平面中各个数据填写完毕。再按图6中虚线箭头转到下下层平面(在xy方向组成的z方向为0的平面中共计16个小立方体),从左下角第1列(即x坐标和y坐标为0,z坐标为2的小立方体)开始沿开始SRAM3的x方向逐个往存储地址中写入对应的数据,再参照上述的方式填写SRAM2的存储地址直至填写完毕,再以此类推进行下一***作。直到所有数据都被写入SRAM中,应用上述第一规则,在存储地址增加的x方向上,按照数据的奇偶性可分为8片地址标识,如图7所示,由此将该8片地址标识转换成SRAM物理存储结构,得到8个单片SRAM:SRAM0~SRAM7对应的SRAM数据。
在接收到访问SRAM的访问请求之后,对已经写入图像数据中各个数据的SRAM块结构进行访问,通过执行S401~S406将访问请求的读出数据从SRAM块结构中读出。基于已经建立的数据和写入地址之间的映射关系,当访问请求的读出数据给定其位于立方体中的坐标数据(xyz索引),就能够通过映射关系按照以下表达式求得读出地址:
Addr0=z>>2*ymax+y>>2*xmax+x>>2 csel[0]=1;
Addr1=Addr0 csel[1]=1;
Addr2=Addr0 csel[2]=1;
Addr3=Addr2 csel[3]=1;
Addr4=Addr0 csel[4]=1;
Addr5=Addr0 csel[5]=1;
Addr6=Addr0 csel[6]=1;
Addr7=Addr0 csel[7]=1;
其中,csel[7:0]为SRAM块结构中8个单片SRAM:SRAM0~SRAM7的片选使能位。通过片选使能位csel[7:0],最后将访问请求的读出数据对应读出,得到输出数据,即小立方块的8个顶点的系数值。
以上为SRAM块结构的存储空间设计为8个单片SRAM:SRAM0~SRAM7的情况。当SRAM块结构的存储空间设计为4个单片SRAM:SRAM0~SRAM3时,在进行写入地址计算的时候,会应用上述的第二规则,得到4个单片SRAM:SRAM0~SRAM3,如图8所示。在接收到访问请求需要读出数据时,在执行完S401~S405之后,继续执行S407~S410,将8个单片SRAM:SRAM0~SRAM7中x方向上编号为奇偶相邻两个存储地址中的数据合并到同一个存储地址中,为各个数据的新读出地址。由于增加了单片SRAM的位宽,需要在单片SRAM的新读出地址中滤出有效的数据位。设msb为单个立方体的8个顶点的系数值的二进制位宽,每个单片SRAM设有2个musk,那么为新读出地址滤出有效的数据位,再经右移后得到的有效读出地址的方式如下:
Addr0=z>>2*ymax+y>>2*xmax csel[0]=1;
musk_0=x*(msb+1) musk_1=(x+1)*(msb+1);
Addr1=Addr0+xmax csel[1]=1;
musk_2=x*(msb+1) musk_3=(x+1)*(msb+1);
Addr2=Addr0+xmax*ymax csel[2]=1;
musk_4=x*(msb+1) musk_5=(x+1)*(msb+1);
Addr3=Addr0+xmax*ymax+xmax csel[3]=1;
musk_6=x*(msb+1) musk_7=(x+1)*(msb+1);
每个单片SRAM的数据输出宽度是msb*xmax。其中,csel[3:0]为4个单片SRAM:SRAM0~SRAM3的片选使能位。经过上述方式得到有效读出地址之后,从有效地址中滤出访问请求所需求的输出数据,其中{sram_data_0,sram_data_1,sram_data_2,sram_data_3}为4个单片SRAM:SRAM0~SRAM3的输出数据,{data_musk_0,data_musk_1,data_musk_2,data_musk_3,data_musk_4,data_musk_5,data_musk_6,data_musk_7}为最终取得的立方体的八个顶点的系数值,msb为该八个顶点的系数值的二进制位宽,那么该立方体的八个顶点的系数值的计算如下:
data[msb-1:0]data_musk_0=sram_data_0>>(x*(msb+1));
data[msb-1:0]data_musk_1=sram_data_0>>((x+1)*(msb+1));
data[msb-1:0]data_musk_2=sram_data_1>>(x*(msb+1));
data[msb-1:0]data_musk_3=sram_data_1>>((x+1)*(msb+1));
data[msb-1:0]data_musk_4=sram_data_2>>(x*(msb+1));
data[msb-1:0]data_musk_5=sram_data_2>>((x+1)*(msb+1));
data[msb-1:0]data_musk_6=sram_data_3>>(x*(msb+1));
data[msb-1:0]data_musk_7=sram_data_3>>((x+1)*(msb+1));
根据上述计算拼接得到输出数据,通过上述4个片选使能位csel[3:0]从4个单片SRAM:SRAM0~SRAM3中同时选出对应的4*2*msb位,按客户要求顺序排列输出8个顶点的系数值,得到输出数据并输出。
本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行本发明实施例的访问SRAM的方法。
本发明所公开的访问SRAM的方法、装置及芯片,能够在矩阵运算中的多系数单周期无冗余地访问SRAM硬件结构,具有在1T存取周期内送出多个用户指定的系数数据,在访问过程中调动最少的SRAM块结构的引用块数、无数据交叠冗余以及降低硬件成本。
需要理解的是,以上对本发明的具体实施例进行的描述只是为了说明本发明的技术路线和特点,其目的在于让本领域内的技术人员能够了解本发明的内容并据以实施,但本发明并不限于上述特定实施方式。凡是在本发明权利要求的范围内做出的各种变化或修饰,都应涵盖在本发明的保护范围内。
Claims (10)
1.一种访问SRAM的方法,其特征在于,所述方法包括:
基于预先设置的读写规则将多维数组转换成多个一维数组,所述一维数组被配置为每个数据同时读出;
在存储空间中划分出多个SRAM块结构,每个SRAM块结构被配置为设置有多列单片SRAM和多行存储地址,每个存储地址用于存储一数据,所述一维数组的数据被配置为基于所述读写规则被存储于SRAM块结构中不同的单片SRAM中属于同一行的存储地址中;
基于所述读写规则和SRAM块结构的配置,计算待写入SRAM块结构的各个数据的写入地址,并将所述各个数据根据对应的写入地址分别写入对应的SRAM块结构的存储地址中;
响应于访问请求,计算所述访问请求所请求的读出数据对应的读出地址并将所述读出数据从对应的SRAM块结构的存储地址中读出。
2.根据权利要求1所述的方法,其特征在于,所述读写规则包括第一规则和第二规则,所述第一规则被配置为将在读取时需要同时读出的多个数据写到多个SRAM块结构中不同的单片SRAM的存储地址中,所述第二规则被配置为将在读取时需要同时读出的多个数据写到各个SRAM块结构中不同的单片SRAM的同一行存储地址中;当所述SRAM块结构中单片SRAM的数量为m时,应用第一规则进行数据转换;当所述SRAM块结构中单片SRAM的数量为m/2时,先后应用所述第一规则和所述第二规则进行数据转换。
3.根据权利要求1所述的方法,其特征在于,将所述多维数组转换成一维数组的过程包括:
预先设置读写规则,接收图像并获取图像信息;
基于所述图像信息对图像的源色彩空间进行分割,得到多个子色彩空间;
解析各个子色彩空间,获得能够表征RGB三个颜色通道的多个色彩数据,每个色彩数据之间能够通过插值计算得到;
将每个子色彩空间的色彩数据汇集形成多维数组;
基于所述读写规则,将所述多维数组中隶属于同一子色彩空间的各个色彩数据作为需要同时读出的数据进行划分,得到与各个子色彩空间对应的一维数组。
4.根据权利要求1所述的方法,其特征在于,在存储空间中划分SRAM块结构的过程包括:
设置单个SRAM块结构中划分给单片SRAM的最大数据宽度;
将所述存储空间划分为多个子存储空间,所述子存储空间被配置为能够容纳所述单片SRAM的最大数据宽度。
5.根据权利要求1所述的方法,其特征在于,各个数据对应的写入地址的计算过程包括:
为所述多维数组中各个数据赋予对应的逻辑寻址表示;
根据各个数据对应的逻辑寻址表示,为每个所述一维数组的各个数据进行排序;根据各个所述一维数组中各个数据的顺序,依次将各个数据与所述SRAM块结构的各个单片SRAM中属于同一行的各个存储地址进行关联,得到各个数据对应的写入地址;
为每个SRAM块结构的各个单片SRAM设置对应的片选使能位,所述片选使能位被配置为与各个SRAM块结构中每片SRAM位于起始行的存储地址对应的数据相关联。
6.根据权利要求5所述的方法,其特征在于,各个数据对应的读出地址的计算过程包括:
获取访问请求,所述访问请求中包括请求的读出数据的读出信息;
根据所述读出信息得到所述读出数据的逻辑寻址表示;
根据所述读出数据的逻辑寻址表示,求得所述读出数据对应的写入地址;
基于所述读写规则,将所述读出数据对应的各个SRAM块结构中各个单片SRAM的片选使能位设置为1;
基于所述逻辑寻址表示和所述写入地址,计算所述读出数据对应的读出地址;通过各个设置为1的片选使能位,基于所述读出数据对应的读出地址,将所述读出数据从各个SRAM块结构中各个单片SRAM的存储地址中读出。
7.根据权利要求6所述的方法,其特征在于,若SRAM块结构中单片SRAM的数量精简到一半,则各个数据对应的读出地址的计算过程还包括:
针对计算出的各个读出地址,从第一位读出地址开始每隔两位将相邻两位读出地址进行合并至同一存储地址,得到各个SRAM块结构的各个单片SRAM对应的新读出地址;
为各个SRAM块结构的各个单片SRAM对应的新读出地址和片选使能位分别设置对应的填充位,并基于填充位对新读出地址进行过滤,得到有效读出地址;通过各个设置为1的片选使能位,基于所述读出数据对应的有效读出地址,从各个SRAM块结构的各个单片SRAM的存储地址中得到对应的输出数据;
通过对所述输出数据进行拼接,得到所述读出数据。
8.一种访问SRAM的装置,其特征在于,所述装置包括转换模块、划分模块、写入模块和读出模块;
所述转换模块用于基于预先设置的读写规则将多维数组转换成多个一维数组,所述一维数组被配置为每个数据同时读出;
所述划分模块用于在存储空间中划分出多个SRAM块结构,每个SRAM块结构被配置为设置有多列单片SRAM和多行存储地址,每个存储地址用于存储一数据,所述一维数组的数据被配置为基于所述读写规则被存储于SRAM块结构中不同的单片SRAM中属于同一行的存储地址中;
所述写入模块用于基于所述读写规则和SRAM块结构的配置,计算待写入SRAM块结构的各个数据的写入地址,并将所述各个数据根据对应的写入地址分别写入对应的SRAM块结构的存储地址中;
所述读出模块用于响应于访问请求,计算所述访问请求所请求的读出数据对应的读出地址并将所述读出数据从对应的SRAM块结构的存储地址中读出。
9.一种芯片,其特征在于,包括输入电路、控制电路、写入地址计算电路、读出地址计算电路、地址译码及片选电路、SRAM控制电路和输出电路;所述输入电路连接所述控制电路,所述控制电路分别连接所述写入地址计算电路、所述读出地址计算电路、所述地址译码及片选电路和所述SRAM控制电路,所述写入地址计算电路和所述读出地址计算电路连接在所述地址译码及片选电路上,所述地址译码及片选电路分别连接所述SRAM控制电路和所述输出电路;
所述输入电路用于输入图像数据、读写规则和访问请求;
所述控制电路用于基于所述读写规则将图像数据的多维数组转换成多个一维数组并将各个一维数组配置为每个数据同时读出;
所述SRAM控制电路用于基于读写规则,在存储空间中划分出多个SRAM块结构,并将每个SRAM块结构配置为设置有多列单片SRAM和多行存储地址,每个存储地址用于存储一数据,所述一维数组的数据被配置为基于所述读写规则被存储于SRAM块结构中不同的单片SRAM中属于同一行的存储地址中;
所述写入地址计算电路用于基于读写规则和SRAM块结构的配置,计算待写入SRAM块结构的各个数据的写入地址;
所述读出地址计算电路用于响应于访问请求,计算所述访问请求所请求的读出数据对应的读出地址;
所述地址译码及片选电路用于选中需要同时读出的多个数据并将该些数据根据对应的写入地址分别写入对应的SRAM块结构的存储地址中,以及用于响应于访问请求选中需要同时读出的多个读出数据并将该些读出数据从对应的SRAM块结构的存储地址中读出;
所述输出电路用于将所述多个读出数据输出。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行如权利要求1至7任一项所述的访问SRAM的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410419380.6A CN118151863A (zh) | 2024-04-08 | 2024-04-08 | 访问sram的方法、装置及芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410419380.6A CN118151863A (zh) | 2024-04-08 | 2024-04-08 | 访问sram的方法、装置及芯片 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118151863A true CN118151863A (zh) | 2024-06-07 |
Family
ID=91293031
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410419380.6A Pending CN118151863A (zh) | 2024-04-08 | 2024-04-08 | 访问sram的方法、装置及芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118151863A (zh) |
-
2024
- 2024-04-08 CN CN202410419380.6A patent/CN118151863A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3251421B2 (ja) | 半導体集積回路 | |
CN113424201A (zh) | 神经网络处理器 | |
JP3278756B2 (ja) | 画像処理方法及び装置 | |
US10001971B2 (en) | Electronic apparatus having parallel memory banks | |
CN103760525A (zh) | 一种补齐式原地矩阵转置方法 | |
CN111630560A (zh) | 用于校正失真输入图像的方法和*** | |
JP5917907B2 (ja) | 画像処理装置 | |
CN112988621A (zh) | 一种张量数据的数据载入装置及方法 | |
CN118151863A (zh) | 访问sram的方法、装置及芯片 | |
CN113448624B (zh) | 数据存取方法及装置、***、ai加速器 | |
JP2013132003A (ja) | 画像処理装置 | |
JP2851804B2 (ja) | 2次元直交変換装置 | |
US6108746A (en) | Semiconductor memory having an arithmetic function and a terminal arrangement for coordinating operation with a higher processor | |
EP4390711A1 (en) | Performing an operation on an array of values at a processing unit | |
JP3860545B2 (ja) | 画像処理装置及び画像処理方法 | |
CN116150046B (zh) | 一种高速缓存电路 | |
US20230307036A1 (en) | Storage and Accessing Methods for Parameters in Streaming AI Accelerator Chip | |
JP2647375B2 (ja) | 画像処理装置 | |
JP4431953B2 (ja) | データ変換装置、データ変換方法およびデータ変換プログラム | |
JP2647376B2 (ja) | 画像処理装置 | |
GB2620810A (en) | Performing a separable operation on a two-dimensional array of values at a processing unit comprising a memory | |
JPS6019258A (ja) | 記憶装置 | |
JP2647377B2 (ja) | 画像処理装置 | |
CN115796236A (zh) | 一种基于存内cnn中间缓存调度的存储器 | |
JP2647380B2 (ja) | カラー画像処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Country or region after: China Address after: 201203, 11th Floor, Building 3, No. 889 Bibo Road, China (Shanghai) Pilot Free Trade Zone, Pudong New Area, Shanghai Applicant after: Granfei Intelligent Technology Co.,Ltd. Address before: Room 201, No. 2557, Jinke Road, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai, 201203 Applicant before: Gryfield Intelligent Technology Co.,Ltd. Country or region before: China |
|
CB02 | Change of applicant information |