CN116150046A - 一种高速缓存电路 - Google Patents
一种高速缓存电路 Download PDFInfo
- Publication number
- CN116150046A CN116150046A CN202310430252.7A CN202310430252A CN116150046A CN 116150046 A CN116150046 A CN 116150046A CN 202310430252 A CN202310430252 A CN 202310430252A CN 116150046 A CN116150046 A CN 116150046A
- Authority
- CN
- China
- Prior art keywords
- module
- data
- index
- array
- data buffer
- 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.)
- Granted
Links
- 238000012545 processing Methods 0.000 claims abstract description 80
- 238000006243 chemical reaction Methods 0.000 claims description 66
- 230000009466 transformation Effects 0.000 claims description 59
- 238000000034 method Methods 0.000 claims description 30
- 230000003068 static effect Effects 0.000 claims description 17
- 238000004364 calculation method Methods 0.000 claims description 16
- 230000008569 process Effects 0.000 claims description 16
- 230000003139 buffering effect Effects 0.000 claims description 11
- 230000015654 memory Effects 0.000 claims description 11
- 238000004891 communication Methods 0.000 claims description 4
- 230000003993 interaction Effects 0.000 claims description 4
- 230000005540 biological transmission Effects 0.000 abstract description 6
- 230000006870 function Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 18
- 238000001914 filtration Methods 0.000 description 15
- 238000013461 design Methods 0.000 description 13
- 230000009286 beneficial effect Effects 0.000 description 5
- 230000010354 integration Effects 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 5
- 238000007781 pre-processing Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000000903 blocking effect Effects 0.000 description 4
- 230000006872 improvement Effects 0.000 description 4
- 239000004973 liquid crystal related substance Substances 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 230000017105 transposition Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000005086 pumping Methods 0.000 description 3
- 230000002441 reversible effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 206010027339 Menstruation irregular Diseases 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请公开一种高速缓存电路,涉及数据传输技术领域,用于实现高速数据的缓存,针对目前的高速缓存电路在数据处理效率上仍有待提高的问题,提供一种高速缓存电路,通过由SRAM作为底部结构组成的数据缓冲模块作为存储介质实现高速数据缓存,由于SRAM本身具有支持行、列读/写,且无需动态刷新等优势,在数据的读/写上可以得到更高的效率。另外,SRAM结构相对SDRAM更为简单,容易集成到芯片内部。并且,本申请还通过数据输入/输出处设置的多路选择模块实现高速数据的分路,进而由多个数据缓冲模块实现数据的交替读/写,使得数据的写入和读出不间断,更进一步的提高了数据缓存的读/写效率。
Description
技术领域
本申请涉及数据传输技术领域,特别是涉及一种高速缓存电路。
背景技术
在目前的数据传输过程中,当由一个芯片、电路或模组输出的高带宽信号数据(高位宽,高频率)传输到另外一个芯片、电路或模组中以进行数据处理时,为了平衡数据处理过程中的因电路各种物理因素造成的短暂卡顿、数据积压等问题,目前通常会在处理电路中外挂DDRx-SDRAM(此处的DDRx-SDRAM指SDRAM、DDR-SDRAM、DDR2-SDRAM等从第一代到目前最新代)芯片作为数据的高速缓存。具体的电路结构如图1所示,在高速信号的输入、输出端之间,加入由输入高速缓存、DDRx-SDRAM及其读写控制单元、输出高速缓存等部件组成的高速缓存电路。
DDR:Double Data Rate即双倍速率,DDR-SDRAM即为双倍速率同步动态随机存储器。
SDRAM:synchronous dynamic random-access memory,同步动态随机存取内存,它是有一个同步接口的动态随机存取内存(DRAM)。
但是,DDRx-SDRAM器件虽然凭借其适合大容量、缓存地址简单、连续控制等优点被广泛地应用于高速缓存这一场景中,但其本身对高带宽信号的阵列数据的处理上也有着十分明显的缺点:
1、工作效率低:DDRx-SDRAM基本不支持列读/写,效率很低;并且,其在进行行读/写时由于其特性需要一行一行地进行,效率同样有待提高;此外,DDRx-SDRAM还需要不定期的进行刷新操作,也会严重影响到单个数据/极小量数据读写操作时的工作效率。
2、电路结构复杂:由于DDRx-SDRAM器件本身电路结构较为复杂,除去会带来较高的热功耗和成本等问题,还使得DDRx-SDRAM器件通常是以外设芯片的形式存在以及参与高速缓存电路的设计当中的,这种不能将内存器件直接集成到芯片内部的问题也为高速缓存电路效率的优化提供了进一步的空间。
所以,现在本领域的技术人员亟需要一种高速缓存电路,解决现有的高速缓存电路使用DDRx-SDRAM器件作为存储介质在数据处理效率上仍有待提高的问题。
发明内容
本申请的目的是提供一种高速缓存电路,以提供一种拥有更高数据处理效率的高速缓存电路设计方案。
为解决上述技术问题,本申请提供一种高速缓存电路,包括:多个数据缓冲模块、写控制模块、读控制模块、输入多路选择模块、输出多路选择模块和索引变换模块;
数据缓冲模块由静态随机存取存储器组成,用于缓存数据;
输入多路选择模块分别与多个数据缓冲模块的输入端连接;
输出多路选择模块分别与多个数据缓冲模块的输出端连接;
写控制模块与输入多路选择模块连接,用于控制输入多路选择模块对应的选通以向对应的数据缓冲模块写入数据;
读控制模块与输出多路选择模块连接,用于控制输出多路选择模块对应的选通以从对应的数据缓冲模块读出数据;
索引变换模块串联于高速缓存电路中;其中,索引变换模块的前级电路为输出多路选择模块,包括:索引数据缓冲模块、索引读控制模块和索引模式寄存器;
索引数据缓冲模块由静态随机存取存储器组成,用于缓存数据;
索引读控制模块与索引数据缓冲模块连接,用于控制索引数据缓冲模块从前级电路中存储的数据的指定位置读取数据;
索引模式寄存器中存储有第一标识,与索引读控制模块连接,用于基于对应第一标识的索引模式、通过索引读控制模块控制索引数据缓冲模块的数据读取。
另一方面,上述的高速缓存电路还包括:串联于高速缓存电路中的运算变换模块;
其中,运算变换模块的前级电路为输出多路选择模块或索引变换模块,包括:运算数据缓冲模块、运算模块、运算模式寄存器和运算数存储模块;
运算数据缓冲模块由静态随机存取存储器组成,用于缓存数据;
运算模块设置于前级电路和运算数据缓冲模块之间连接,用于对前级电路输出的数据进行处理,并写入运算数据缓冲模块;
运算模式寄存器中存储有第二标识,与运算模块连接,用于控制运算模块基于对应于第二标识的运算模式对前级电路输出的数据进行处理;
运算数存储模块中存储有运算数据,与运算模块连接,用于为运算模块提供计算用的运算数据。
一方面,上述的运算数存储模块为运算数值寄存器,其中存储有以数值形式存在的运算数据。
另一方面,上述的运算数存储模块为运算数阵列存储模块;
运算数阵列存储模块由静态随机存取存储器组成,其中存储有以阵列形式存在的运算数据。
另一方面,上述的索引变换模块还包括:行索引阵列存储模块和列索引阵列存储模块;
行索引阵列存储模块和列索引阵列存储模块由静态随机存取存储器组成,分别存储有行索引阵列和列索引阵列;其中,行索引阵列和列索引阵列的大小相同;
行索引阵列存储模块和列索引阵列存储模块分别与索引读控制模块连接,以配合对应于第一标识的索引模式,通过索引读控制模块控制索引数据缓冲模块的数据读取。
另一方面,上述的运算变换模块为多个,且彼此之间串联连接。
另一方面,上述的静态随机存取存储器为块随机存储器。
另一方面,上述的各块随机存储器之间为并行结构。
另一方面,上述的写控制模块和读控制模块之间存在通信连接,用于进行信息交互以协同控制数据缓冲模块的数据写入/读出。
另一方面,上述的写控制模块还用于将接收到数据进行拼接,以将位宽与数据缓冲模块最小位宽相同的数据写入至数据缓冲模块。
本申请提供的一种高速缓存电路,通过由SRAM作为底部结构组成的数据缓冲模块作为存储介质实现高速数据缓存,由于SRAM本身具有支持行、列读/写、能源消耗相对SDRAM较小、且无需动态刷新等优势,在数据的读/写上可以得到更高的效率。另外,SRAM结构相对SDRAM更为简单,容易集成到芯片内部,从而有利于高速缓存电路的集成化和小型化,更有助于实施。并且,本申请的高速缓存电路通过数据输入/输出处设置的多路选择模块实现高速数据的分路,进而通过多个数据缓冲模块实现数据缓存,利用至少一个数据缓冲模块写入数据,利用另外的数据缓冲模块进行数据读出,使得数据的写入和读出不间断,更进一步的提高了数据缓存的读/写效率,更好地贴合了高速缓存电路的实际应用需要。进一步的,本申请还通过索引变换模块的设置,使得高速缓存电路在输出缓存数据之前,还对其进行索引变换处理,减轻后端的数据处理电路的负担,并且由于索引变换模块是高速缓存电路之中的模块,可以集成实现,彼此之间的数据交互效率更高,也有利于数据缓存及处理的整体过程效率的提高。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一种常见的高速缓存电路的结构图;
图2为本发明提供的一种高速缓存电路的结构图;
图3为本发明提供的一种SRAM高速缓存阵列的结构图;
图4为本发明提供的一种索引变换模块的结构图;
图5为本发明提供的另一种索引变换模块的结构图;
图6为本发明提供的一种运算变换模块的结构图;
图7为本发明提供的另一种运算变换模块的结构图;
图8为本发明提供的一种多级运算变换模块的结构图;
图9为本发明提供的一种索引、运算变换模块组合应用的结构图;
图10为本发明提供的另一种索引、运算变换模块组合应用的结构图;
图11为本发明提供的一种索引、多级运算变换模块组合应用的结构图;
图12为本发明提供的一种十字式四邻域的示意图;
图13为本发明提供的一种对角式四邻域的示意图;
图14为本发明提供的一种八邻域的示意图;
图15为本发明提供的一种像素点及其八邻域的示意图;
图16为本发明提供的一种质心分布的示意图;
图17为本发明提供的一种高速缓存电路的信号图。
其中,10表示高速缓存电路,11表示数据缓冲模块,12表示写控制模块,13表示读控制模块,14表示输入多路选择模块,15表示输出多路选择模块,20表示索引变换模块,21表示索引数据缓冲模块,22表示索引模式寄存器,23表示行索引阵列存储模块,24表示列索引阵列存储模块,30表示运算变换模块,31表示运算数据缓冲模块,32表示运算模块,33表示运算模式寄存器,34表示运算数存储模块。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本申请保护范围。
本申请的核心是提供一种高速缓存电路。
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。
目前对于高速缓存电路的产品实现上已经存在一种较为成熟的技术方案,具体的电路结构如图1所示,包括:DDRx-SDRAM、读/写控制模块、输入高速缓存和输出高速缓存。
DDRx-SDRAM芯片用于进行数据的高速缓存,以平衡数据处理过程中的因电路各种物理因素造成的短暂卡顿、数据积压等问题。读/写控制模块则是用于向DDRx-SDRAM中写入或从DDRx-SDRAM中读出数据。读/写控制模块两侧(即输入端和输出端两侧)分别配置有一组或多组的输入/输出高速缓存(配置多组高速缓存时,多组高速缓存先采用带优先级仲裁方式,再接入总线),输入/输出高速缓存则用于:实现输入、输出端不同时钟信号域的转换;短暂接受、缓存外部输入的高带宽数据以写入DDRx-SDRAM中,或短暂缓存DDRx-SDRAM输出的数据并控制数据输出速度,使得后端的数据处理单元可以通过一种均衡、匀速、不间断的方式完成大数据的相关处理(数据算法、转换等)。
DDRx-SDRAM器件作为一种控制较为复杂的大容量、高速存储(缓存)单元电子器件,比较适合应用在大容量、缓存地址简单、连续控制的应用场景中,从而充分体现它高速、大容量和廉价的综合特点。但是,DDRx-SDRAM对阵列数据(需要高速、阵列数据进行算法设计)处理上的缺点也十分明显:
1、工作效率低,主要表现在以下几个方面:
1)行读/写效率低:虽然,行地址对于DDRx是连续的,但是,DDRx-SDRAM对于行读取,仍然需要每次读/写前、后都要有行的开、闭地址操作(即,执行任何行的读/写操作之前,必须先激活SDRAM中的一行;读/写完成后,如果需要对另外一行进行寻址,就要将原来有效的行关闭)。行的打开和关闭需要消耗一定的时间。假设一行打开后,读取N个元素,读取每个元素一个时钟周期,打开、关闭行操作分别需要K个时钟周期,那么,行读取的效率为N/(2*K+N)。
2)列读/写效率低:相对于行读/写,DDRx-SDRAM进行列读/写的效率会更低。因为DDRx-SDRAM基本不支持列操作。所以,为实现列读/写,DDRx-SDRAM必须对M行中的每行读取对应列位置的元素,最后拼接得到一列M个元素,这样读的效率奇低,写也是同理。
3)需要不断刷新:DDRx-SDRAM还需要不定期的刷新操作,这也会严重影响到单个数据/极小量数据读写操作时的工作效率。在极端情况下,工作效率会低至正常读写效率的1/20甚至更低。
除此之外,DDRx-SDRAM器件作为一种控制较为复杂的单元器件,其实现起来所需的电路结构也较为复杂,通常是以外挂的形式应用在高速缓存电路当中,会带来较高的热功耗、集成度差以及较高的经济成本等问题。
综上所述,为解决目前使用DDRx-SDRAM器件实现高速缓存电路这一方案所带来的上述问题,本申请提供一种高速缓存电路10,如图2和图4所示,包括:多个数据缓冲模块11、写控制模块12、读控制模块13、输入多路选择模块14输出多路选择模块15和索引变换模块20;
数据缓冲模块11由静态随机存取存储器(SRAM)组成,用于缓存数据;
输入多路选择模块14分别与多个数据缓冲模块11的输入端连接;
输出多路选择模块15分别与多个数据缓冲模块11的输出端连接;
写控制模块12与输入多路选择模块14连接,用于控制输入多路选择模块14对应的选通以向对应的数据缓冲模块11写入数据;
读控制模块13与输出多路选择模块15连接,用于控制输出多路选择模块15对应的选通以从对应的数据缓冲模块11读出数据;
另外,还有索引变换模块20串联于高速缓存电路中,由于索引变换模式串联在高速缓存电路中的位置可选,故通过图4独立示出索引变换模块的具体结构;
其中,索引变换模块的前级电路为输出多路选择模块15,包括:索引数据缓冲模块21、索引读控制模块和索引模式寄存器22;
索引数据缓冲模块21由静态随机存取存储器组成,用于缓存数据;
索引读控制模块与索引数据缓冲模块21连接,用于控制索引数据缓冲模块21从前级电路中存储的数据的指定位置读取数据;
索引模式寄存器中存储有第一标识,与索引读控制模块连接,用于基于对应第一标识的索引模式、通过索引读控制模块控制索引数据缓冲模块21的数据读取。
一个完整的使用高速缓存电路10的应用场景如图2所示,由高速阵列输出电路输出高速数据,经由高速阵列数据接口输入到高速缓存阵列中,进而由图2所示的高速缓存电路10对数据进行缓存,再输出至后端的数据处理电路中,最后将处理完毕的数据交由其他的芯片或模块进行分析、使用。
首先,本申请选用SRAM作为高速缓存电路10中缓存数据的存储介质,相比于DDRx-SDRAM器件,SRAM支持列读/写,同时其一般不为行列地址复用,在读取数据时,只需要一次完成行、列寻址,行、列读/写的效率更高;同时,SRAM在加电情况下不需要不定期刷新数据也不会丢失,从而不会产生更多的功耗;SRAM及其控制电路结构较DDRx-SDRAM简单,容易被集成到芯片内部,从而提高电路的集成度,也更有利于数据的高速缓存。
更进一步的,对于上述的SRAM还可选用SRAM中的块随机存储器(Block RAM)。Block RAM的物理形式是一块一块相互独立的,使用起来比较灵活,可以任意拼接出所期望大小的存储阵列。如图3所示,在一种较优的实施方式中,可设计数据缓冲模块11中的每一逻辑行对应于一个Block RAM块,又由于不同Block RAM块之间相互独立,除了物理实现上的方便,还可以通过设计各Block RAM块之间为并行的结构,以保证使用时实现数据的并行操作,一次读/写可同时对多行/多列进行操作,也即实现数据的块读、块写,效率更高。
对于输入多路选择模块14和输出多路选择模块15的硬件实施,如图2所示,可使用多路复用器(Multiplexer,MUX)和解复用器(DEMUX),MUX和DEMUX常常配合使用,用于实现数据在单通道和多通道之间的转换。
需要说明的是,一个由并行的Block RAM组成的数据缓冲模块11在设计时应根据缓存数据的分辨率进行设置(即缓存数据在行和列上在存储空间的大小):每个数据缓冲模块11一行的最大数据量等同于输入数据(从高速阵列数据接口中输入的数据)一行的最大数据量;数据缓冲模块11中具体设置多少行,取决于设计预期的电路成本、后端算法电路处理需求和处理速率上的平衡,设置方式灵活,并不固定为某一具体数值。示例性的,如需要设计一个3×3的阵列运算,每一元素的为一8bit数据,则数据缓冲模块11的一行数据最大位宽等于3×8=24bit即可。
此外,本申请电路中的数据缓冲模块11为多个,于实际应用中可以如图2所示,具体为两个Block RAM块(Block RAM[0]和Block RAM[1])。如此设置的原因是因为缓存模块对于读和写的实现方式往往不同,所以必须需要独立的读/写缓存。例如,实际中写数据时通常是一行、一行被高速输入的;而读数据时又常常是一列、一列或者多行多列并行操作的。也即,一个缓存模块被读时,其无法同时支持写操作,反之亦然。所以本实施例通过两个Block RAM块交替循环用于高速数据的写入和读出,通过写控制模块12、读控制模块13和输入多路选择模块14以及输出多路选择模块15实现交替控制。
具体的,上述交替控制的一种可能的控制逻辑为:当高速阵列数据接口有数据输入时,写控制模块12控制输入多路选择模块14选通一个Block RAM块进行数据写入(假定为Block RAM[0],两Block RAM块起始都为空);当写控制模块12监控到Block RAM[0]写满时,控制输入多路选择器选通Block RAM[1],以向Block RAM[1]中继续数据写入;此时,读控制模块13监控到Block RAM[0]写满(或也可由写控制模块12通信告知),则控制输出多路选择模块15选通Block RAM[0]进行数据读出。如此交替往复,即形成Block RAM[0]和Block RAM[1]交替读/写的效果,实现数据的不间断缓存,更好地提高了数据读/写的效率。
更进一步的,在另一种优选的实施方案中,写控制模块12和读控制模块13之间存在通信连接,用于进行信息交互以协同控制所述数据缓冲模块11的数据写入/读出。具体即用于告知当前是否有数据缓冲模块11被写满/被读空,以控制另一方对该数据缓冲模块11进行数据读出/写入,保证对数据读/写的及时性,避免数据堵塞。
对于读控制模块13和写控制模块12的具体实施,由于对某一指定存储介质进行数据读/写的实施方法对于本领域技术人员是已知的,通常是通过控制地址指针实现对存储介质中的指定位置进行数据的读出或写入,同样通过地址指针控制还可以实现数据的跳读、逆读(逆顺序读)等。且市面上已经存在诸多成熟的产品,如图1所示的DDRx-SDRAM的读/写控制模块,故对于本申请中上述提到的读控制模块13和写控制模块12具体的电路结构以及原理本实施例不再赘述。同时,如上述实施例所述,读/写控制模块通常也具有实现输入、输出两端时钟信号域转换的功能,此功能通常由另一高速缓存(区别于上述的数据缓冲模块11,容量通常较小)实现,即本申请中的读/写控制模块中至少也还应包括一个用于实现时钟域转换的高速缓存。
本申请所提供的一种高速缓存电路10,通过SRAM代替DDRx-SDRAM器件作为高速数据缓存的存储介质,并针对SRAM设计一套完整的缓存结构,具体的:通过由SRAM组成的多个数据缓冲模块11实现数据的高速缓存;由读/写控制模块以及输入/输出多路选择器组成的片选结构实现对多个数据缓冲模块11的选通读/写,以保证数据的不间断读/写,避免由于SRAM在数据读/写时的操作不兼容所导致的数据堵塞,大大提高了数据缓存的及时性和效率,从而更好地适应了高速数据缓存这一应用场景下的需要。此外,由于SRAM相对于DDRx-SDRAM具有支持列读/写、无需刷新等优点,使得SRAM的数据读/写效率更高、功耗更低;同时SRAM及其控制电路的结构更为简单,容易被集成到缓存芯片中,相比于芯片外挂DDRx-SDRAM器件的实施方式而言在缩小电路占地面积、数据传输速率上都有更为明显的优势,更好地满足了实际应用的需要。
另一方面,在高速缓存电路10的后端通常配置有相应的数据处理模块,用于对缓存中读出的数据进行期望的处理,以便于后续对数据的分析或直接使用,这部分数据处理过程可通过诸如计算机等具有较强数据处理能力的设备以软件形式实现,也可基于所需的数据处理方法(例如具体的算法等)进行针对性的硬件电路实现,本实施例对此不做限制。
为降低后续数据处理模块的设计和实施难度,以及数据处理的效率,上述实施例如图4所示,通过索引变换模块20实现对高速缓存数据的输出前的预处理,以减轻后端数据处理电路的负担,并通过高度集成化的优势在整体上提高数据传输、处理的效率。
需要说明的是,本实施例中的索引数据缓冲模块21与上述的数据缓冲模块11的实际实施方式可以相同,具体可参见上述数据缓冲模块11的实施例,本实施例在此不再赘述。
另外,还需要说明的是,对于索引读控制模块,即用于从上述缓存阵列(即上述的数据缓冲模块11,更具体的,可以指上述的Block RAM[0]和Block RAM[1],目的是为方便区分各类数据缓冲模块,下述的XX阵列亦是同理)中读出数据放入到索引阵列中(即索引数据缓冲模块21),与上述的读控制模块13相比仅是限定了读出数据的写入对象是索引阵列,而读控制模块13具体将读出数据向谁写入取决于其后端所连接于谁,故本实施例的索引读控制模块在具体实施中也可以是上述的读控制模块13。又或者说,上述的索引变换模块20是读控制模块13的一部分(基于此,索引读控制模块未于图4中示出)。通过在原有读控制模块13的基础上增加索引模式寄存器22以指导原有读控制模块13的读数据功能,再通过索引数据缓冲模块21暂存索引处理后的数据以供后续电路读取,实现数据的索引变换。
对于索引变换模块20所支持的数据索引处理功能,可以包括但不限于以下几种索引模式:
1、正常模式(Normal Mode):即正常的序列数据读取,从头至尾读取数据缓冲模块11中的所有数据。
2、行镜像模式(Row Mirroring Mode):对所读取的阵列数据进行行镜像变换。在具体的数据读取过程中,对于同一行数据,从行尾到行头(即从最后一列开始到最初一列结束)读取数据,即可实现阵列行内数据镜像的索引功能。
3、列镜像模式(Column Mirroring Mode):对读取的阵列数据进行列镜像变换。与上述行镜像模式相近,对于同一列数据从最后一行开始读取,即可实现数据的列镜像功能。
4、阵列镜像模式(Array Mirroring Mode):对读取的阵列数据同时进行行、列的镜像变换。与上述同理,即从最后一行最后一列开始读取数据,从而实现阵列数据行、列全镜像的索引功能。
5、阵列转置模式(Array transpose Mode):将矩阵的行列互换得到的新矩阵称为转置矩阵,即从缓存阵列中行读出的数据填入到索引阵列中的对应列中,以实现阵列转置功能。
6、抽行缩减模式:也即对缓存阵列中所存储的数据进行有选择的读取,例如每4行/列数据中抽一行/列读取,(例如抽每四行/列中的第一行/列),或者2行/列抽一行/列。该功能目的是为缩减非必要的情况下的计算量,例如在使用手机观看视频等应用场景中,源码视频文件的分辨率是4K,而所使用的手机所支持的最大分辨率仅有2K,此时视频文件以2K的分辨率播放即达到该播放设备的最高清晰度,无需获取4K分辨率的源码视频文件,进而在图像滤波处理时,通过上述的抽行缩减模式降源码视频文件抽线成2K进行后续播放即可满足要求。
容易理解的是,对于索引模式寄存器22中所存储的第一标识,需要在进行索引变换功能前预先进行设置,对于设置第一标识的执行主体,可以是如图4所示的数据处理电路,也即如上述实施例所述的,在索引变换模块20后端存在用于对高速缓存电路10输出数据进行进一步数据处理的数据处理电路,该数据处理电路根据数据处理需要,确定所需要的索引模式,进而通过对索引模式寄存器22的配置通过索引变换模块20实现数据的索引处理,以降低数据处理电路的数据处理难度,提高数据处理效率,也从硬件实现上降低了数据处理电路的复杂度和难易度。
除去上述所提供的6种索引模式之外,也可根据实际需要自定义索引模式,本实施例所提供的索引变换模块20支持所有通过控制数据读取地址指针对缓存阵列中数据进行特异化读取的索引模式。上述的索引模式根据预先设置的对应关系可通过保存在索引模式寄存器22中的不同数值(第一标识)表示,例如1表示正常模式、2表示行镜像模式等等,用以指示索引读控制模块(或读控制模块13)按照指定模式读取数据。
对于索引数据缓冲模块21(索引阵列)的硬件组成,可与数据缓冲模块11(缓存阵列)一样,由SRAM或进一步具体用并行结构的Block RAM组成,可如图4所示命名为BlockRAM[2],即索引变换后的读结果阵列,用于存储索引变换后、读取得到结果的数据缓存阵列。
对于索引阵列存储空间大小的设置,则是根据索引变换预期功能需要所确定,例如上述的索引模式1-4,不对原数据在行、列的大小上做出改变,则索引阵列大存储空间大小可等同于缓存阵列。而对于索引模式5和6,可能涉及到了对数据阵列行/列在大小上的改变,由于这种改变是可预期的,所以对于索引阵列存储空间的设置可预先根据所期望实现的索引变换功能所设计,并不一定需要与缓存阵列相同。
进一步的,上述的所以变换功能除去由索引模式寄存器22指示数据读取以完成索引功能之外,本实施例还提供另一种索引变换模块20的优选实施例,如图5所示,上述的索引变换模块20还包括:行索引阵列存储模块23和列索引阵列存储模块24;
行索引阵列存储模块23和列索引阵列存储模块24由静态随机存取存储器组成,分别存储有行索引阵列和列索引阵列;其中,行索引阵列和列索引阵列的大小相同;
行索引阵列存储模块23和列索引阵列存储模块24分别与索引读控制模块连接,以配合对应于第一标识的索引模式,通过索引读控制模块控制索引数据缓冲模块21的数据读取。
对于本实施例中的行索引阵列存储模块23和列索引阵列存储模块24,与上述的数据缓冲模块11一致,也可由SRAM组成,进一步的由并行结构的Block RAM组成,其中如图5所示,行索引阵列为Block RAM[3]、列索引阵列为Block RAM[4],其中存储有指导索引读控制模块从缓存阵列中如何读取数据的指导阵列数据。
相对于上述通过索引模式寄存器22实现的索引变换功能,本实施例通过引入行索引阵列和列索引阵列实现对更为丰富的索引功能的支持,除去上述实施例所支持的索引模式之外,本实施例还支持一种新的索引模式:
7、自定义索引模式(Custom Index Array Mode):对读取的阵列进行自定义的行、列索引阵列变换,索引变换功能更加灵活,实现形式更加多样。
具体的,对于上述的行索引阵列和列索引阵列如何实现自定义的阵列变换,本实施例提供一种示例性的实际实施场景:
一方面,可以通过索引模式寄存器22根据预先设置的索引模式5:阵列转置模式实现,另一方面也可由本实施例新增的行索引阵列和列索引阵列实现。具体的,后端的数据处理电路可配置行索引阵列=,列索引阵列=/>,即可实现上述的阵列A的转置操作。详细的,对于索引变换后得到的阵列AT的获取,其第一行、第一列的元素由行索引阵列的第一行、第一列的元素1,以及行索引阵列的第一行、第一列的元素1可知,应从缓存阵列中存储的数据阵列A的第一行、第一列得到,也即得到a11;
与之同理,阵列AT的第一行、第二列的元素由行索引阵列的第一行、第二列的元素2,以及行索引阵列的第一行、第二列的元素1可知,从阵列A的是第二行、第一列得到,为a21;以此类推,最终得到完整的转置阵列AT。
容易理解的是,上述的转置变换仅是本实施例所支持的自定义索引模式的一种实现方式,是为了对本索引模式实现原理做出的一种说明,具体实施中本实施例所提供的这种自定义索引模式实施更灵活,也不局限于预设的几种保存在索引模式寄存器22中的索引模式,可以通过配置行索引阵列和列索引阵列实现更为灵活的索引功能。
与上述索引模式寄存器22的配置方式同理,行索引阵列和列索引阵列同样可由后端的数据处理电路进行配置,此时索引模式寄存器22中存储的第一标识应对应于上述的自定义索引模式(例如第一标识=7)。
还需要说明的是,行索引阵列和列索引阵列对应的存储模块在设计时,应满足以下条件:使其存储空间大小一样,如此才能保证各元素之间一一对应,进而经过索引变换后得到一个完整的索引阵列;使行索引阵列和列索引阵列中各元素的下标不越界,从而避免错误输出(越界输出的元素值为全1的二进制数,即全0xF);行索引阵列和列索引阵列的大小可以跟缓存阵列的大小不一样,从而实现自定义尺寸的索引阵列获取,如上述实施例的通过行索引、列索引实现矩阵转置,通过自定义尺寸的方式还相当于实现了对转置阵列的“裁剪”,即剔除无关数据或不需要的数据。
本实施例具体提供了索引变换模块20的几种实施方案,实现对高速缓存电路10的功能拓展,可在缓存数据的同时对数据进行一定的预处理(索引变换),从而减轻后续数据处理电路的处理压力以及硬件实施上的设计难度。同时,因为高速缓存电路10可集成在同一芯片中,芯片内数据的传输速度相较于芯片之间的传输速度更快,集成程度也更高,更有利于实际实施。此外,本实施例除去通过索引模式寄存器22实现的几种预设的索引模式之外,还通过添加行索引阵列存储模块23和列索引阵列存储模块24实现更为灵活、丰富的索引变换模式,更好地满足了实际不同场景下的差异化数据处理需求。
另一方面,本实施例还提供区别于索引变换的另一种扩展功能,其目的与索引变换扩展相同,是为了降低对后端数据处理电路的要求,具体的,如图6以及图7所示,上述的高速缓存电路10还包括:串联于高速缓存电路10中的运算变换模块30;
其中,运算变换模块30的前级电路为输出多路选择模块15或索引变换模块20,包括:运算数据缓冲模块31、运算模块32、运算模式寄存器33和运算数存储模块34;
运算数据缓冲模块31由静态随机存取存储器组成,用于缓存数据;
运算模块32设置于前级电路和运算数据缓冲模块31之间连接,用于对前级电路输出的数据进行处理,并写入运算数据缓冲模块31;
运算模式寄存器33中存储有第二标识,与运算模块32连接,用于控制运算模块32基于对应于第二标识的运算模式对前级电路输出的数据进行处理;
运算数存储模块34中存储有运算数据,与运算模块32连接,用于为运算模块32提供计算用的运算数据。其中,运算数存储模块34根据所存储数据的不同需要可以采用寄存器或一个存储模块。例如图6所示,运算数存储模块34为运算数值寄存器,其中存储有以数值形式存在的运算数据;而如图7所示,运算数阵列存储模块由静态随机存取存储器组成,其中存储有以阵列形式存在的运算数据。
运算数据缓冲模块31与上述数据缓冲模块11和索引缓冲模块同理,也可由并行结构的Block RAM组成,如图6和7所示的Block RAM[5],用于暂存经运算模块32进行计算处理后的数据。
对于运算模块32,则根据预先设置的运算模式决定其电路结构,例如针对四则运算中的加法运算,可通过加法器实现;减法运算可通过补码存储和加法器实现;乘法和除法都可通过对应的乘法器、除法器实现。但考虑到触发器在硬件实现上较为复杂,除法运算应根据实际需要选择是否实施。除去上述的四则运算之外,现有的可通过硬件电路实现的算法处理都可应用在本实施例的运算模块32中,根据实际应用需求自定义运算模式。在设计完成之后,与运算模式寄存器33配合使用指导运算模块32所进行何种运算处理。
对于运算数存储模块34,用于存储运算用的运算数(或称为操作数,操作数可以是一个数值也可以是一个序列)同样是根据实际运算需求进行设计,如图6和7所示。由于一般情况下缓存序列中存储的数据都以序列的形式被获取,若期望该序列与某一数值进行运算(例如四则运算、位运算等),则可如图6设置运算数值寄存器;若期望该序列与某一序列进行矩阵与矩阵之间的运算,则可如图7所示设置运算数阵列存储模块。对于运算数阵列存储模块,同样可由并行结构的Block RAM组成,为如图7所示的Block RAM[6]。
基于上述,本实施例提供一种可能的实施方案,上述的运算变换模块30可支持但不局限于以下的运算模式:
1、四则运算:具体的,又可以细分为:加法、减法、乘法和除法运算。
容易理解的是,当运算数存储模块34存储的运算数据为一具体数值时,四则运算是针对缓存阵列中的每一元素做基于运算数值的四则运算。而当运算数存储模块34存储的运算数据为一序列数据时,四则运算则是针对两序列数据进行各个对应位置元素之间的四则运算。
2、位运算:具体的,又可以细分为:按位与、按位或、按位异或、按位取数据左移、数据算术右移、数据逻辑右移等运算。
同样的,当运算数据为一具体数值时,上述的位运算都是基于该运算数值实现;而当运算数据为一序列时,则上述的位运算都是基于两序列中元素与元素的位置对应关系,对每一元素进行针对性的位运算。
3、求和运算(阵列单目运算):具体的,又可细分为:按行求和、按列求和、阵列整体求和以及阵列整体求平均值等运算。
容易知道的是,本运算模式区别于四则运算中的加法运算,是对缓存阵列中的部分元素进行求和运算,也即不需要运算数存储模块34中存储的运算数据的参与,为阵列单目运算。具体的,按行求和运算即是对MxN阵列的每一行都求和,最后得到一个Mx1的阵列;按列求和运算则是对MxN阵列的每一列都求和,最后得到一个1xN的阵列;阵列整体求和则是对MxN阵列的每一个元素都求和,最后得到一个表征阵列整体和的数值;阵列整体求均值即是在上述阵列整体求和的结果的基础上,再除以MxN,以得到一个表征阵列元素平均值的数值。
4、工程数学上的常见运算:具体的,可以包括但不限于:阵列转置运算、阵列叉乘运算、求阵列的逆、求阵列组成行列式的值、求阵列的秩等其他自定义的运算。
5、图像处理运算:具体的,可以包括但不限于:滤波运算和质心运算。
容易理解的是,在实际运算变换模块30的设置中,不局限于包括上述所有运算模式的应用,可根据需要选择上述的一部分运算模式实现。同时也不局限于仅可实现上述的这几种运算模式。足够清楚的是,对于序列和数值之间、序列和序列之间、以及序列单目运算的运算处理方法,如果其硬件实现是本领域技术人员所熟知的,都可应用于本实施例中的运算变换模块30中。
综上所示,通过上述实施例提供的运算变换模块30可在数据传输到后端的数据处理电路之前,先对数据进行一次运算的预处理,不需要后端的数据处理电路在单独做循环遍历以对缓存阵列中的所有数据进行读出和运算,从而降低后续数据处理电路的设计难度,并且提升整体过程的数据处理效率。
但进一步的,对于部分较为复杂的数据处理过程而言,其所涉及到的数据预处理过程也不是简单的通过一次运算就可以满足要求的,于是在上述运算变换模块30的基础上,本实施例还提供一种优选的实施方案,如图8所示,运算变换模块30为多个,且彼此之间串联连接,构成多级运算结构。
需要说明的是,图8中所示的为运算数存储模块34为运算数阵列存储模块时对应的二级运算结构(运算模块32省略未示出,第二级运算变换模块30的运算数据缓冲模块31对应于Block RAM[7]、运算数阵列存储模块对应于[8]),实际应用中运算变换模块30中的运算数存储模块34可采用寄存器的方式实现,也可以是更多级的运算结构(2~N级运算),本实施例对此皆不做限制。
通过本实施例所提供的多级运算结构可实现运算变换模块30实现的更为复杂的运算处理,通过多级运算模块32所采用的不同运算模式,可以实现更灵活、更丰富的数据处理,从而满足更广泛的应用场景下的需要。另外,对于滤波和求质心这类复杂的运算,完全可以通过两次基本的运算得到,以此降低对硬件电路实现的复杂性并提高计算效率。
示例性的,当运算模块32进行邻域滤波计算时,由于邻域滤波本质上是针对某一元素结合其周围元素(周围一圈8格、或周围十字/对角线的4格)进行求平均,所以由后端的数据处理电路对每一行元素进行邻域滤波时,其都需要遍历该行及其相邻一行的数据(即一行一行的循环遍历读取123、234、345等行的数据),效率低且实现复杂,而在使用并行结构Block RAM组成的运算数据缓冲模块31时,可支持数据的多行同时读取,例如同时获取1-5行数据,无需反复遍历读取,运算效率更高,也降低了后端数据处理电路的设计难度。
还需要说明的是,由于运算变换模块30直接对缓存阵列中存储的数据进行运算处理,且最终目的是为了提供给后端的数据处理电路预处理后的数据,其在电路中的位置与读控制模块13相同或相近,所以在具体实施中,运算变换模块30可以和索引变换模块20一样,是扩展在读控制模块13之中的模块,也即,索引变换模块20和运算变换模块30都是读控制模块13的扩展模块。
本实施例所提供的一种运算变换模块30,通过对缓存阵列中的数据进行运算处理,并暂存到运算数据缓冲模块31中进行暂存,以被后端的数据处理电路调用。位于后端的数据处理电路获得运算变换模块30预处理后的数据,即可降低自身的运算复杂度,从而也降低自身硬件电路实现的设计难度。另一方面的,由于运算数据缓冲模块31的底层结构同样是基于SRAM实现,由于SRAM的阵列存取速度更快,且缓存的存储空间较少,可以做成全并行结构,如此在读取和运算的效率会更高,相比于目前通过后端的数据处理电路循环遍历获取所需要的数据而言运算效率要更快,有利于高速数据整体处理效率的提升的同时,又进一步降低了数据处理电路的硬件复杂性。此外,本实施例还提供一种多级运算变换模块30的扩展方式,从而使本实施例的运算变换模块30支持更灵活、更复杂的运算,更好地适应不同应用场景下的需要。
由上述实施例可知,运算变换模块30和索引变换模块20一样,都是高速缓存模块的扩展模块,两者在地位上是相同的,运算变换模块30和索引变换模块20可以分别单独实施,也可组合应用。本质上,当运算变换模块30和索引变换模块20组合应用时,不限制两者的前后关系(也即位于电路的前级、后级的关系),但在实际应用中,一般选择以索引变换模块20为前级电路、运算变换模块30为后级电路的实施方式,这是基于索引变换模块20所实现的功能通常是对计算前的准备工作(剔除无关数据或者对数据进行镜像或转置等处理),而运算变换模块30负责具体的运算处理工作这一特征所决定的。
对于运算变换模块30和索引变换模块20的组合应用方式,本实施例提供几种具体的应用场景:
1、一个索引变换模块20与一个运算变换模块30组合(索引在前、运算在后);
如图9所示的电路结构,此时后端的数据处理电路需要同时配置索引模式寄存器22、运算数值寄存器和运算模式寄存器33(索引变换模块20不包括行索引阵列存储模块23和列索引阵列存储模块24、运算数存储模块34具体为运算数值寄存器),此时,索引阵列和运算阵列在存储空间大小上应相同(以保证对除阵列单目运算之外的运算模式的支持)。
如图10所示的电路结构,此时后端的数据处理电路需要同时配置索引模式寄存器22、行索引阵列存储模块23、列索引阵列存储模块24以及运算数阵列存储模块和运算模式寄存器33(索引变换模块20包括行索引阵列存储模块23和列索引阵列存储模块24、运算数存储模块34具体为运算数阵列存储模块)。
2、一个索引变换模块20与多个运算变换模块30组合(索引在前、运算在后);
如图11所示的电路结构,此时索引变换模块20包括行索引阵列存储模块23和列索引阵列存储模块24;运算变换模块30为二级运算结构;每一级运算变换模块30的运算数存储模块34皆为运算数阵列存储模块。
为作区分,第一级的运算变换模块30的运算数据缓冲模块31命名为Block RAM[5]、运算数阵列存储模块为Block RAM[6];第二级的运算变换模块30的运算数据缓冲模块31命名为Block RAM[7]、运算数阵列存储模块为Block RAM[8]。
容易理解的是,上述图9-11所示的仅为索引变换模块20和运算变换模块30的几种可能的组合应用形式,事实上,对于不同实施例中对应的索引变换模块20和运算变换模块30之间可采用上述几种之外的组合形式,运算变换模块30也可采用更多级的运算结构,本实施例对此皆不做限制,应根据实际数据处理需要和硬件电路设计而定。
又如上述实施例所述,图像处理算法中的滤波算法和质心计算可简单地拆分成两个简单的计算,本实施例对此进行进一步的说明:
1、邻域滤波计算(以3×3为例);
如图12-14所示,3×3的邻域又可分为十字型的4邻域、对角邻域(也是4邻域)和8邻域,本实施例中以8邻域的邻域滤波处理为例,又如图15所示,为一像素点和其邻域算子在整个序列中的位置关系图。
邻域滤波(Neighborhood Filtering)的基本原理是:用邻域加权均值代替原图像中的各个像素值。即对待处理的当前像素点f(x,y),选择一个N×N大小的模板T,模板T由像素点f(x,y)近邻的若干像素组成。求模板中所有像素的加权均值,再把该均值赋予当前像素点f(x,y),作为处理后图像在该点上的灰度g(x,y)。
g(x,y)的值可以通过下述公式得到:
由上述邻域滤波算式可知,对于一个像素点的邻域滤波计算可拆分成两步运算:1、对3×3阵列求阵列和;2、对阵列和进行除法运算(运算数值为9=3×3)。由此,邻域滤波计算可由二级运算变换模块30组成的运算架构实现,或由一级运算变换模块30进行求阵列和,由后端的数据处理电路进行求均值,也可实现算法的化简。此外,对于每一像素点邻域点的数据获取,则可通过索引变换模块20实现。
2、质心计算(以求某一列的质心为例,即M×1);
所谓质心法,即求一个物体的质量分布中心,在本实施例中,用一列数组代表一个物体的质量分布,如图16所示。其中下标(用i表示),代表物体的质量位移;下标对应的数据值(用Q i 来表示)代表该位移处的质量值。具体求质心的公式如下:
其中,QualityPosition i 表示质位,Barycenter表示质心。
代入图16所示数值,对第1、2列的质心求解如下:
对于上述的质心求解可知,质心求解可拆分为阵列(缓存阵列)与阵列(运算数列,运算数列各元素的值等于其所在行的位置-1)的乘法运算(点乘)、按列求和运算、以及一个除法运算。
此外,由本申请所提供的一种高速缓存电路10可以方便、快速地获取一列或多列数据,以代入上述公式完成对质心计算,相比于现有高速缓存电路10结构效率更高。
本实施例通过运算变换模块30的多级扩展以及与索引变换模块20的组合使用,可用于实现部分复杂的运算,例如图像处理领域中的邻域滤波运算和求质心运算,可简化后端数据处理电路的设计难度,并且由于存储结构的优化,使得本实施例在读取待处理数据时可以实现更快的效率且无需遍历循环,从数据处理电路的设计难度上和整体数据处理效率上都得到了较好的优化效果。
在另一种可能的实施方式中,为更充分地利用SRAM的存储空间,对于待缓存的数据位宽较低时(小于组成数据缓存模块的Block RAM的最小单位),本实施例提供一种优选的实施方案:
写控制模块12还用于将接收到数据进行拼接,以将位宽与数据缓冲模块11最小位宽相同的数据写入至数据缓冲模块11。
为实现上述的数据拼接功能,写控制模块12中应至少存在两个缓存块(容量可以稍小,适应待拼接的数据位宽即可),用以拼接小位宽数据,以适应SRAM的存储空间大小,进而将拼接后的数据写入SRAM中进行缓存。进一步与之对应的,读控制模块13也应具有相逆的位宽转换功能,将拼接后的数据拆分回原形式的数据。
示例性的,例如在某一特定的应用场景下,Block RAM的最小存储单位是32bit,而输入的数据单位在8bit,则可通过写控制模块12将4个单位的输入数据进行拼接,得到32bit的数据后再写入到Block RAM中,以保证Block RAM的存储空间被充分利用,待取出数据时再由读控制模块13对拼接后的数据进行拆分,以得到原本输入的数据。
此外,常见的芯片在工作时,如图17所示,其时钟信号会不停地翻转,这就使得其功耗比较大,本实施例基于此提供一种优选的实施方案:当高速缓存电路10不工作时(无数据写入且无数据读出时),关闭时钟信号,并在检测到有数据写入或有数据读出时打开时钟使能,以进一步降低高速缓存电路10的功耗。
本实施例通过额外的控制方法使得在输入数据位宽小于数据缓冲模块11的最小存储单位时进行数据拼接,以最大化利用数据缓冲模块11的存储空间,避免资源浪费。同时,在高速缓存电路10无读/写任务时,关闭其时钟信号,避免由于时钟信号不断翻转所带来的不必要的功耗,从而进一步减少资源的浪费,更好地贴合了实际应用的需要。
以上对本申请所提供的一种高速缓存电路进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (10)
1.一种高速缓存电路,其特征在于,包括:多个数据缓冲模块(11)、写控制模块(12)、读控制模块(13)、输入多路选择模块(14)、输出多路选择模块(15)和索引变换模块(20);
所述数据缓冲模块(11)由静态随机存取存储器组成,用于缓存数据;
所述输入多路选择模块(14)分别与多个所述数据缓冲模块(11)的输入端连接;
所述输出多路选择模块(15)分别与多个所述数据缓冲模块(11)的输出端连接;
所述写控制模块(12)与所述输入多路选择模块(14)连接,用于控制所述输入多路选择模块(14)对应的选通以向对应的所述数据缓冲模块(11)写入数据;
所述读控制模块(13)与所述输出多路选择模块(15)连接,用于控制所述输出多路选择模块(15)对应的选通以从对应的所述数据缓冲模块(11)读出数据;
所述索引变换模块(20)串联于所述高速缓存电路中;其中,所述索引变换模块的前级电路为所述输出多路选择模块(15),包括:索引数据缓冲模块(21)、索引读控制模块和索引模式寄存器(22);
所述索引数据缓冲模块(21)由所述静态随机存取存储器组成,用于缓存数据;
所述索引读控制模块与所述索引数据缓冲模块(21)连接,用于控制所述索引数据缓冲模块(21)从前级电路中存储的数据的指定位置读取数据;
所述索引模式寄存器中存储有第一标识,与所述索引读控制模块连接,用于基于对应所述第一标识的索引模式、通过所述索引读控制模块控制所述索引数据缓冲模块(21)的数据读取。
2.根据权利要求1所述的高速缓存电路,其特征在于,还包括:串联于所述高速缓存电路中的运算变换模块(30);
其中,所述运算变换模块(30)的前级电路为所述输出多路选择模块(15)或所述索引变换模块(20),包括:运算数据缓冲模块(31)、运算模块(32)、运算模式寄存器(33)和运算数存储模块(34);
所述运算数据缓冲模块(31)由所述静态随机存取存储器组成,用于缓存数据;
所述运算模块(32)设置于前级电路和所述运算数据缓冲模块(31)之间连接,用于对前级电路输出的数据进行处理,并写入所述运算数据缓冲模块(31);
所述运算模式寄存器(33)中存储有第二标识,与所述运算模块(32)连接,用于控制所述运算模块(32)基于对应于所述第二标识的运算模式对前级电路输出的数据进行处理;
所述运算数存储模块(34)中存储有运算数据,与所述运算模块(32)连接,用于为所述运算模块(32)提供计算用的所述运算数据。
3.根据权利要求2所述的高速缓存电路,其特征在于,所述运算数存储模块(34)为运算数值寄存器,其中存储有以数值形式存在的所述运算数据。
4.根据权利要求2所述的高速缓存电路,其特征在于,所述运算数存储模块(34)为运算数阵列存储模块;
所述运算数阵列存储模块由所述静态随机存取存储器组成,其中存储有以阵列形式存在的所述运算数据。
5.根据权利要求1至4任意一项所述的高速缓存电路,其特征在于,所述索引变换模块(20)还包括:行索引阵列存储模块(23)和列索引阵列存储模块(24);
所述行索引阵列存储模块(23)和所述列索引阵列存储模块(24)由所述静态随机存取存储器组成,分别存储有行索引阵列和列索引阵列;其中,所述行索引阵列和所述列索引阵列的大小相同;
所述行索引阵列存储模块(23)和所述列索引阵列存储模块(24)分别与所述索引读控制模块连接,以配合对应于所述第一标识的索引模式,通过所述索引读控制模块控制所述索引数据缓冲模块(21)的数据读取。
6.根据权利要求2至4任意一项所述的高速缓存电路,其特征在于,所述运算变换模块(30)为多个,且彼此之间串联连接。
7.根据权利要求5所述的高速缓存电路,其特征在于,所述静态随机存取存储器为块随机存储器。
8.根据权利要求7所述的高速缓存电路,其特征在于,各所述块随机存储器之间为并行结构。
9.根据权利要求1所述的高速缓存电路,其特征在于,所述写控制模块(12)和所述读控制模块(13)之间存在通信连接,用于进行信息交互以协同控制所述数据缓冲模块(11)的数据写入/读出。
10.根据权利要求1所述的高速缓存电路,其特征在于,所述写控制模块(12)还用于将接收到数据进行拼接,以将位宽与所述数据缓冲模块(11)最小位宽相同的数据写入至所述数据缓冲模块(11)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310430252.7A CN116150046B (zh) | 2023-04-21 | 2023-04-21 | 一种高速缓存电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310430252.7A CN116150046B (zh) | 2023-04-21 | 2023-04-21 | 一种高速缓存电路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116150046A true CN116150046A (zh) | 2023-05-23 |
CN116150046B CN116150046B (zh) | 2023-07-14 |
Family
ID=86354697
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310430252.7A Active CN116150046B (zh) | 2023-04-21 | 2023-04-21 | 一种高速缓存电路 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116150046B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662868A (zh) * | 2012-05-02 | 2012-09-12 | 中国科学院计算技术研究所 | 用于处理器的动态组相联高速缓存装置及其访问方法 |
CN109032966A (zh) * | 2018-07-26 | 2018-12-18 | 郑州云海信息技术有限公司 | 一种高速缓存装置及数据高速读写终端 |
CN109710547A (zh) * | 2018-12-29 | 2019-05-03 | 浙江理工大学 | 一种工业物联网中的缓冲内存管理设计与实现方法 |
CN111338983A (zh) * | 2020-02-18 | 2020-06-26 | 东南大学 | 一种高速数据缓存结构及方法 |
WO2021209051A1 (zh) * | 2020-04-17 | 2021-10-21 | 深圳市中兴微电子技术有限公司 | 片上缓存装置、片上缓存读写方法、计算机可读介质 |
-
2023
- 2023-04-21 CN CN202310430252.7A patent/CN116150046B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662868A (zh) * | 2012-05-02 | 2012-09-12 | 中国科学院计算技术研究所 | 用于处理器的动态组相联高速缓存装置及其访问方法 |
CN109032966A (zh) * | 2018-07-26 | 2018-12-18 | 郑州云海信息技术有限公司 | 一种高速缓存装置及数据高速读写终端 |
CN109710547A (zh) * | 2018-12-29 | 2019-05-03 | 浙江理工大学 | 一种工业物联网中的缓冲内存管理设计与实现方法 |
CN111338983A (zh) * | 2020-02-18 | 2020-06-26 | 东南大学 | 一种高速数据缓存结构及方法 |
WO2021209051A1 (zh) * | 2020-04-17 | 2021-10-21 | 深圳市中兴微电子技术有限公司 | 片上缓存装置、片上缓存读写方法、计算机可读介质 |
CN113535633A (zh) * | 2020-04-17 | 2021-10-22 | 深圳市中兴微电子技术有限公司 | 一种片上缓存装置和读写方法 |
Also Published As
Publication number | Publication date |
---|---|
CN116150046B (zh) | 2023-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPS6162980A (ja) | 画像メモリ周辺lsi | |
CN101236774B (zh) | 单端口存储器实现多端口存储功能的装置和方法 | |
US7596679B2 (en) | Interconnections in SIMD processor architectures | |
CN102279818A (zh) | 支持有限共享的向量数据访存控制方法及向量存储器 | |
CN111737638A (zh) | 基于傅里叶变换的数据处理方法及相关装置 | |
US8825729B1 (en) | Power and bandwidth efficient FFT for DDR memory | |
CN116150046B (zh) | 一种高速缓存电路 | |
US10452356B2 (en) | Arithmetic processing apparatus and control method for arithmetic processing apparatus | |
JPH09198862A (ja) | 半導体メモリ | |
JP3917582B2 (ja) | 範囲選択可能なアドレスデコーダと、これを用いる高速グラフィック処理用フレームメモリー装置 | |
CN115145842A (zh) | 数据缓存处理器及方法 | |
CN111241007B (zh) | 数据读写方法及装置、动态随机存储器 | |
CN113448624A (zh) | 数据存取方法及装置、系统、ai加速器 | |
CN102622318B (zh) | 一种存储器控制电路及其控制的向量数据寻址方法 | |
JP3288327B2 (ja) | 映像メモリ回路 | |
CN101218604A (zh) | 具有块可访问缓冲存储器的图像处理电路 | |
US20230307036A1 (en) | Storage and Accessing Methods for Parameters in Streaming AI Accelerator Chip | |
CN112184565B (zh) | 一种多窗口串行的图像锐化方法 | |
CN215576588U (zh) | 数据缓存处理器 | |
JPS63292494A (ja) | 半導体メモリ | |
JPH07110786A (ja) | 半導体記憶装置 | |
CN117710188A (zh) | 图像处理的硬件电路实现方法、设备及集成电路 | |
JP2824976B2 (ja) | 2次元配列データ回転装置 | |
GB2617190A (en) | Memory architecture | |
CN118197250A (zh) | 背光扩散运算电路、系统、方法、设备、介质及产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |