CN111506264B - 支持灵活分块存取的虚拟多通道sdram访问方法 - Google Patents
支持灵活分块存取的虚拟多通道sdram访问方法 Download PDFInfo
- Publication number
- CN111506264B CN111506264B CN202010279292.2A CN202010279292A CN111506264B CN 111506264 B CN111506264 B CN 111506264B CN 202010279292 A CN202010279292 A CN 202010279292A CN 111506264 B CN111506264 B CN 111506264B
- Authority
- CN
- China
- Prior art keywords
- read
- write
- data
- sdram
- channel
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Dram (AREA)
Abstract
本发明属于存储技术领域,公开了一种支持灵活分块存取的虚拟多通道SDRAM访问方法,用FIFO隔离不同时钟域,进行跨时钟域处理、数据拼接、数据缓存,因此支持在不同通道不同时钟域下进行数据读写;在顺序存取和分块存取SDRAM的时候进行顺序写地址计算、顺序读地址计算、分块读地址计算;调度多个通道的切换,进行多通道之间的仲裁并控制每次读写的数据量;SDRAM控制器联接用户层接口和SDRAM;并将读写的地址、命令、数据转化为正确时序关系送到SDRAM总线上。本发明能够减少FPGA的逻辑资源占用量,合理利用SDRAM有限的总线带宽,提高SDRAM总线带宽的利用率和提高带宽能力。
Description
技术领域
本发明属于存储技术领域,尤其涉及一种支持灵活分块存取的虚拟多通道SDRAM访问方法。
背景技术
目前,随着航天事业的迅猛发展,北斗系列等卫星的不断发展更新,中继卫星网络已经可以覆盖到全球的区域,但是尚没有在全球范围内建立地面接收站的能力,因此发送的卫星很难全部通过地面接收站接收数据,需要依靠中继网络接力传输,中继网络的带宽是有限的,为了能够在有限的带宽下实现大量的数据的传输,在星载平台中开始使用大量的大容量存储器来完成星上数据的收集、存储、实时处理,它们在航天系统中起到越来越重要的的作用。
星上存储器的种类繁多,从最开始的磁盘,到SRAM、DRAM等固态存储器,再到NANDFLASH等非易失性存储器,其中SDRAM以其较高的集成度和较低的成本在星载系统中受到广泛的应用。然而,随着星上任务增多,需要进行存储的数据类型越来越多,为大容量SDRAM的设计带来了极大的挑战,目前星上的大容量SDRAM缓存主要面临的难题包括:
1、星上的硬件资源匮乏,无论是计算资源还是缓存资源都很宝贵,设计中需要尽可能减少资源消耗;
2、星上缓存用户众多,且各个用户之间在时钟域、带宽、存取方式上存在较大差别,因此需要有效的虚拟多通道仲裁手段保证多通道之间的切换和平滑过渡,从而提高带宽的利用率;
3、关于SDRAM控制的设计在很大程度上决定了SDRAM能够达到的带宽能力,如何在控制器的设计上尽可能提高总线带宽也是主要面临的一个难题。
在分块地址计算方面,常用的方法如专利CN104657285A所述,通过设置分块的起始地址和偏移地址进行分块寻址和映射,这种方法通用性强,但是控制比较复杂,FPGA实现的时候资源消耗量较大,因此在有限的星上逻辑资源条件下实用性不强,希望能有一种资源消耗较少,更加精简的地址分块方法。
关于多通道读写仲裁的方法,专利CN206946471U提出一种多通道共享读写SDRAM的方法,结合各通道缓存的空满情况和按照通道号从小到大进行轮询来仲裁不同通道间的优先级。然而单纯从通道的空满情况来进行仲裁对于通道的缓存水位信息利用不足,在复杂的、不同带宽的多通道读写中仍然存在数据溢出的风险。
SDRAM控制器的设计中,专利CN109766285A提出一种突发模式的SDRAM存取控制系统及控制方法,采用请求-应答的方式对刷新请求、读请求、写请求等操作进行控制。但是在处理刷新和突发读写操作之间的冲突时,对于如何应对读写操作进行中需要进行刷新的情况,没有充分的考虑,使用更加合理的方式处理两者冲突有助于进一步提高带宽利用率。
通过上述分析,现有技术存在的问题及缺陷为:星上资源占用严重,且SDRAM读写带宽能力不强,带宽利用率不充分。(缺陷主要就体现在上面和三个专利的对比上)。
解决以上问题及缺陷的难度为:1、分块地址计算时,随着图像幅面的不同以及分块大小的不同,地址计算方式也会发生变化,因此计算比较复杂,相应的逻辑资源消耗也比较大,如何设计简单又有效的地址分块方式是一大难点;
2、多条件仲裁设计时难点在于仲裁条件的判断,不同通道之间在位宽、带宽、频率、数据重要程度上表现特点差异性大,选择合适条件来进行通道优先级的仲裁和切换极大影响了仲裁效果。
3、而在控制器刷新方面的难度主要体现在刷新操作和突发读写操作之间的矛盾处理,一方面由于SDRAM的存储结构中要求需要有间隔的对存储单元进行刷新以保持数据,另一方面由于读写都属于突发操作,突发操作的时候是无法再进行其他操作的,当出现正在进行突发操作的时候,接收到刷新请求的情况,就会激发这个冲突:
如果不进行刷新,那么可能会出现数据丢失,但是如果刷新了,又会导致当前的突发过程中断,影响当前的读写操作,因此怎么协调这方面的矛盾是一大难点。
解决以上问题及缺陷的意义为:本发明针设计的方案,在减少硬件实现过程中的逻辑资源消耗和提高接口的带宽方面有显著的效果,其中降低逻辑资源消耗可减轻星上有限资源的压力,因此在星载系统设计中具有重要的意义,而提高接口带宽意味着能够传输更多数据到地面,尤其是针对星载多通道任务上数据在频率、带宽、位宽复杂多变的情况下,多条件中仲裁充分利用了带宽在星载相机帧频、图像规模日益增大的现代航天研究中发挥了重要作用。
发明内容
针对现有技术存在的问题,本发明提供了一种支持灵活分块存取的虚拟多通道SDRAM 访问方法。
本发明是这样实现的,一种支持灵活分块存取的虚拟多通道SDRAM访问方法包括:
步骤一,利用FIFO隔离不同时钟域,进行跨时钟域处理、数据拼接、数据缓存;在不同通道不同时钟域下进行数据读写;
步骤二,在顺序存取和分块存取SDRAM的时候进行顺序写地址计算、顺序读地址计算、分块读地址计算;
步骤三,调度多个通道的切换,进行多通道之间的仲裁并控制每次读写的数据量;
步骤四,SDRAM控制器联接用户层接口和SDRAM;并将读写的地址、命令、数据转化为正确时序关系送到SDRAM总线上。
进一步,步骤一中,为了应对输入输出数据的时钟域、传输速度、位宽的不同,需要使用FIFO对数据进行跨时钟域处理,在FPGA中可用IP核为每个通道的接口处配置一个异步FIFO,FIFO内部以block_ram缓存单元为主体可对数据进行缓存,一方面缓存可以在一定程度上使得不同时钟域的数据传输更加平滑,另一方面通过控制输入和输出的位宽,可将高频率、低位宽的的数据转换为低频率、高位宽的数据进行传输,例如将100Mx8bit的传输通道转换为50Mx16bit的传输方式,在不降低带宽的情况下,降低了时钟频率,有利于硬件实现。
进一步,步骤二中,所述顺序写地址计算、顺序读地址计算、分块读地址计算方法包括:
(1)对待写入的数据进行SDRAM内地址的分配:待写入数据的二维数组阵列为n1*n2;数据量为n1*n2其中n1和n2均为2的次幂,每个数据占用一个存储单元,对数据按照从左到右,从上到下的顺序进行地址编号,并利用二进制数据表示所述地址,所述地址编号为 A=Am~A0,其中m=log2(n1*n2)-1;
(2)顺序写地址计算:定义一个(m+1)bit的计数器WR_CNT,按照数据输入的使能信号进行叠加(从0计数到n1*n2-1),进行存储单元的遍历和顺序写入;
(3)顺序读地址计算:定义一个(m+1)bit的计数器RD_CNT,按照数据输出的使能信号进行叠加(从0计数到n1*n2-1,进行存储单元的遍历和顺序读出;
(4)分块读地址计算:将二维数组阵列划分为ixj大小的分块(i、j均为2的次幂),每个分块内按照从左到右,从上到下的顺序输出,分块之间按照从左到右,从上到下的顺序输出。
进一步,步骤(4)中,所述分块读地址计算方法包括:
(4.1)定义m1=log2(j)-1,m2=log2(i)-1,m3=log2(n2/j)-1按照分块输出顺序,Bm1~B0为一个分块内一行内的列计数,每输出一个数据,Bm1~B0加1;Bm2~Bm1+1为一个分块内的行计数,每输出一行,Bm2~Bm1+1加1;Bm~Bm2+1为分块计数,每输出完一个分块, Bm~Bm2+1加1;
(4.2)将Bm~B0映射到Am~A0中,对应关系如下:
Am1~A0=Bm1~B0;
Am2~Am1+1=Bm3~Bm2+1;
Am3~Am2+1=Bm2~Bm1+1;
Am~Am3+1=Bm~Bm3+1;
(4.3)从结果来看,其分块地址的计算方式就是将Bm~B0中的行计数Bm2~Bm1+1和分块计数Bm~Bm2+1中属于同一行的计数Bm3~Bm2+1进行位置的调换,如下所示;
Am~Am3+1,Am3~Am2+1,Am2~Am1+1,Am1~A0=Bm~Bm3+1,Bm2~Bm1+1,Bm3~Bm2+1,Bm1~B0。
进一步,步骤三中,所述调度多个通道的切换,进行多通道之间的仲裁并控制每次读写的数据量包括:
(一)统计各个通道的水位情况,将水位情况为分为高、中、低三挡,其中:
对于写通道,其水位情况表示的是输入FIFO中缓存的数据量和SDRAM中给该通道分配的存储区域中当前的空闲空间,FIFO中数据量和SDRAM中的空闲空间越多,水位的档位越高;
对于读通道,其水位情况表示的是输出FIFO中空闲的空间和SDRAM中可被读出的数据量,FIFO中空闲空间和SDRAM中数据量越多,水位的档位越高;
(二)第一轮仲裁对比各个通道的水位情况来判断,水位的档位越高,则优先级越高,如果各个通道中只有一个通道的水位最高,则该通道获得本次通道的使用权,若有多个通道同时处于高水位则需要进行第二轮仲裁;
(三)第二轮仲裁根据通道本身固定优先级来决定,优先级越高的获得本次通道的使用权,根据通道的带宽情况和数据重要程度决定固定优先级,带宽越高,数据本身越重要的通道优先级越高;
(四)确定优先级之后本轮仲裁结束,将获得调度权的通道接入总线中,开启突发传输。
进一步,步骤四中,所述将读写的地址、命令、数据转化为正确时序关系送到SDRAM总线上包括:
1)通电并进行初始化,获取待发送指令;所述待发送指令包括模式配置、刷新、预充电及其他相关指令;
2)进入闲置状态,等待读请求、写请求或者刷新请求,并作出应答;
3)当处于刷新操作状态时,执行相应刷新操作,并根据是否保存有未执行指令进行下一步状态跳转;
4)当处于写突发状态时,根据需要发送相应的写操作指令和写数据,操作结束之后,并根据是否保存有未执行指令进行下一步状态跳转;
5)当读突发状态时,根据需要发送相应的读操作指令和接收相应的读数据,操作结束之后,根据是否保存有未执行指令进行下一步状态跳转。
进一步,步骤2)中,所述进入闲置状态,等待读请求、写请求或者刷新请求,并作出应答包括:
2.1)若收到刷新请求,则进入刷新操作状态;
2.2)若同时收到刷新请求和读、写请求,则优先进入刷新状态,并记录其他状态;
2.3)若收到写请求,则判断在写突发过程中,是否会接收到刷新命令;若在写突发过程中,不会接收到刷新指令,则进入写操作状态;若在写突发过程中,会接收到刷新指令,则进入刷新操作状态,并记录写指令,用于刷新之后的状态跳转;
2.4)若收到读请求,则判断在读突发过程中,是否会接收到刷新命令;若在读突发过程中,不会接收到刷新指令,则进入到读操作状态;若在读突发过程中,会接收到刷新指令,则进入到刷新操作状态,并记录读指令,用于刷新之后的状态跳转;
2.5)若同时收到写请求和读请求,则判断在写突发过程中,是否会接收到刷新命令;若在写突发过程中,不会接收到刷新指令,则进入到写操作状态并记录读指令,用于写操作之后的状态跳转;若在写突发过程中,会接收到刷新指令,则进入到刷新操作状态,并记录写指令和读指令,用于刷新之后的状态跳转。
进一步,步骤3)中,所述当处于刷新操作状态时,执行相应刷新操作,并根据是否保存有未执行指令进行下一步状态跳转包括:
3.1)发送相应的刷新指令,若发送指令过程中,有读请求或者写请求,则先将请求记录下来,但是暂时不响应;
3.2)刷新操作结束之后,根据记录的未响应的请求进行状态跳转如下:
3.2.1)若有写请求未响应则跳转到写突发状态;
3.2.2)若有读请求未响应则跳转到读突发状态;
3.2.3)若同时有写请求和读请求未响应则优先响应写请求;
3.2.4)若无未响应的请求则返回闲置状态。
进一步,步骤4)中,所述当处于写突发状态时,根据需要发送相应的写操作指令和写数据,操作结束之后,并根据是否保存有未执行指令进行下一步状态跳转包括:
4.1)根据地址计算模块产生的写地址发送行激活和写操作指令;
4.2)将用户接口输入的写数据按照SDRAM要求的时序发送到总线上;
4.3)数据连续传输结束之后,发送预充电命令,完成此次突发操作;
4.4)根据记录的未响应的请求进行状态跳转,如下:
4.4.1)若有读请求未响应则跳转到读突发状态;
4.4.2)若无未响应的请求则返回闲置状态。
进一步,步骤5)中,所述当读突发状态时,根据需要发送相应的读操作指令和接收相应的读数据,操作结束之后,根据是否保存有未执行指令进行下一步状态跳转包括:
5.1)根据地址计算模块产生的读地址发送行激活和读操作指令;
5.2)在一定潜伏期之后,将从SDRAM中读出的数据按照相应的时序接收并传输到用户层;
5.3)数据连续传输结束之后,发送预充电命令,完成此次突发操作;
5.4)根据记录的未响应的请求进行状态跳转,如下:
5.4.2)若有写请求未响应则跳转写突发状态;
5.4.2)若无未响应的请求则返回闲置状态。
本发明的另一目的在于提供一种实施所述支持灵活分块存取的虚拟多通道SDRAM访问方法的支持灵活分块存取的虚拟多通道高效SDRAM访问系统,所述支持灵活分块存取的虚拟多通道高效SDRAM访问系统包括:
FIFO模块,用于隔离不同时钟域,进行跨时钟域处理、数据拼接、数据缓存;同时用于在不同通道不同时钟域下进行读写;
地址计算模块,用于在顺序存取和分块存取SDRAM的时候进行寻址计算;所述寻址计算包括顺序写地址计算、顺序读地址计算、分块读地址计算;
多条件仲裁模块,用于调度多个通道的切换,进行多通道之间的仲裁以及控制每次读写的数据量;
控制模块,用于利用SDRAM控制器联接用户层接口和SDRAM;并将读写的地址、命令、数据转化为正确时序关系送到总线上。
本发明的另一目的在于提供一种接收用户输入程序存储介质,所存储的计算机程序使电子设备执行所述支持灵活分块存取的虚拟多通道SDRAM访问方法。
本发明的另一目的在于提供一种存储在计算机可读介质上的计算机程序产品,包括计算机可读程序,供于电子装置上执行时,提供用户输入接口以实施所述支持灵活分块存取的虚拟多通道SDRAM访问方法。
本发明的另一目的在于提供一种执行所述支持灵活分块存取的虚拟多通道SDRAM访问方法的星上存储器。
结合上述的所有技术方案,本发明所具备的优点及积极效果为:
本发明针对多通道顺序存取和分块存取的不同需求,设计了一种资源消耗极小的分块地址计算方法,通过位交换操作就可以实现分块地址的计算,与顺序读写的地址计算相比,几乎不需要增加资源占用量;针对多通道之间多时钟域,多带宽特点,设计了多条件仲裁方案,通过引入接口FIFO和SDRAM内部水位信息辅助判断通道的优先级,能够更加合理利用 SDRAM有限的总线带宽;在控制器设计上,本发明提出了先预测刷新,后决定突发读写的方案,在不需要牺牲刷新间隔时间的基础上,解决了对于由于突发操作和刷新操作之间的冲突,从而在一定程度上提高了SDRAM总线带宽的利用率。
本发明使用异步FIFO对输入的数据或者要输出的数据进行缓存,异步FIFO有利于跨时钟域处理,缓存有利于各个通道之间数据交互更加平滑,同时是进行虚拟多通道设计必不可少的功能模块;由于FIFO对外是一个标准接口,因此可以提高架构的通用性和可移植性,用户使用的时候直接在FIFO接口上读写数据,不需要关注架构内部的仲裁、地址产生等操作,使用更简单。
本发明提出的这种精简的分块地址计算方法无需复杂的状态机判断和其他的计算,和顺序输出一样只需要一个计数器,然后映射到具体地址的时候进行位交换操作,能以极少的计算资源(和顺序写顺序读的模式几乎占用同等的计算资源)实现任意大小的分块地址计算,大大减少了硬件实现时的资源占用;
本发明提出的多条件仲裁方法,通过增加水位的条件辅助判断通道的优先级,将通道实时带宽利用情况考虑进去,能够有效避免固定优先级较高的通道长期占据总线通道,导致其他通道不能访问而溢出的情况。提高了多通道操作的灵活性和带宽利用率;
本发明提出的先预判突发操作过程中是否会与刷新冲突的方式,直接避免了在突发操作中遇到刷新指令的矛盾,且不需要牺牲刷新间隔的时间,在一定程度上提高了SDRAM的总线带宽;
本发明通过实验,获得相关数据如下:
精简分块寻址的主要作用是减少逻辑资源消耗,因此实验结果为对比以往专利的分块方案和本方案实现后的资源消耗情况,可以发现本方案的资源消耗都比较小。
表1-1编码器各模块资源占比
仲裁方案的主要作用是提高带宽利用率,控制器刷新的预判断方法主要是提高带宽能力,因此实验结果为对比传统方法和本方法中的带宽利用率和节省带宽情况如下表,可以发现带宽利用率提升了11%,而刷新所占的带宽情况减少了0.056%,换算实施例1中的100M时钟, 40bit位宽的SDRAM,每秒可多传输2.19Mb的数据,在高带宽的数据缓存中是非常可观的数据量。
表2-1SDRAM模块优化前后对比
对比指标 | 带宽利用率 | 刷新所占带宽情况 |
优化前 | 63% | 1.464% |
优化后 | 74% | 1.408% |
附图说明
图1是本发明实施例提供的支持灵活分块存取的虚拟多通道SDRAM访问方法原理图。
图2是本发明实施例提供的支持灵活分块存取的虚拟多通道SDRAM访问方法流程图。
图3是本发明实施例提供的仲裁方法流程图。
图4是本发明实施例提供的SDRAM控制器状态图。
图5是本发明实施例提供的支持灵活分块存取的虚拟多通道高效SDRAM访问系统结构示意图。
图中:1、FIFO模块;2、地址计算模块;3、多条件仲裁模块;4、控制模块。
图6是本发明实施例提供的存取32x32二维数组的阵列示意图。
图7是本发明实施例提供的按8x8分块读取的顺序示意图。
图8是本发明实施例提供的8x8分块地址分布示意图。
图9是本发明实施例提供的刷新冲突示意图。
图10是本发明实施例提供的先到先处理方案示意图。
图11是本发明实施例提供的刷新操作预判断方案示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
现有SDRAM访问无法满足分块或不分块的存取需求,星上资源占用严重,且SDRAM读写带宽能力不强,带宽利用率不高。
针对现有技术存在的问题,本发明提供了一种支持灵活分块存取的虚拟多通道SDRAM 访问方法,下面结合附图对本发明作详细的描述。
如图1-图2所示,本发明实施例提供的支持灵活分块存取的虚拟多通道SDRAM访问方法包括:
S101,利用FIFO隔离不同时钟域,进行跨时钟域处理、数据拼接、数据缓存;在不同通道不同时钟域下进行数据读写。
S102,在顺序存取和分块存取SDRAM的时候进行顺序写地址计算、顺序读地址计算、分块读地址计算。
S103,调度多个通道的切换,进行多通道之间的仲裁并控制每次读写的数据量。
S104,SDRAM控制器联接用户层接口和SDRAM;并将读写的地址、命令、数据转化为正确时序关系送到SDRAM总线上。
步骤S101中,为了应对输入输出数据的时钟域、传输速度、位宽的不同,需要使用FIFO 对数据进行跨时钟域处理,在FPGA中可用IP核为每个通道的接口处配置一个异步FIFO, FIFO内部以block_ram缓存单元为主体可对数据进行缓存,一方面缓存可以在一定程度上使得不同时钟域的数据传输更加平滑,另一方面通过控制输入和输出的位宽,可将高频率、低位宽的的数据转换为低频率、高位宽的数据进行传输,例如将100Mx8bit的传输通道转换为 50Mx16bit的传输方式,在不降低带宽的情况下,降低了时钟频率,有利于硬件实现。
步骤S102中,本发明实施例提供的顺序写地址计算、顺序读地址计算、分块读地址计算方法包括:
(1)对待写入的数据进行SDRAM内地址的分配:待写入数据的二维数组阵列为n1*n2;数据量为n1*n2其中n1和n2均为2的次幂,每个数据占用一个存储单元,对数据按照从左到右,从上到下的顺序进行地址编号,并利用二进制数据表示所述地址,所述地址编号为 A=Am~A0,其中m=log2(n1*n2)-1;
(2)顺序写地址计算:定义一个(m+1)bit的计数器WR_CNT,按照数据输入的使能信号进行叠加(从0计数到n1*n2-1),进行存储单元的遍历和顺序写入;
(3)顺序读地址计算:定义一个(m+1)bit的计数器RD_CNT,按照数据输出的使能信号进行叠加(从0计数到n1*n2-1,进行存储单元的遍历和顺序读出;
(4)分块读地址计算:将二维数组阵列划分为ixj大小的分块(i、j均为2的次幂),每个分块内按照从左到右,从上到下的顺序输出,分块之间按照从左到右,从上到下的顺序输出。
进一步,步骤(4)中,所述分块读地址计算方法包括:
(4.1)定义m1=log2(j)-1,m2=log2(i)-1,m3=log2(n2/j)-1按照分块输出顺序,Bm1~B0为一个分块内一行内的列计数,每输出一个数据,Bm1~B0加1;Bm2~Bm1+1为一个分块内的行计数,每输出一行,Bm2~Bm1+1加1;Bm~Bm2+1为分块计数,每输出完一个分块, Bm~Bm2+1加1;
(4.2)将Bm~B0映射到Am~A0中,对应关系如下:
Am1~A0=Bm1~B0;
Am2~Am1+1=Bm3~Bm2+1;
Am3~Am2+1=Bm2~Bm1+1;
Am~Am3+1=Bm~Bm3+1;
(4.3)从结果来看,其分块地址的计算方式就是将Bm~B0中的行计数Bm2~Bm1+1和分块计数Bm~Bm2+1中属于同一行的计数Bm3~Bm2+1进行位置的调换,如下所示;
Am~Am3+1,Am3~Am2+1,Am2~Am1+1,Am1~A0=Bm~Bm3+1,Bm2~Bm1+1,Bm3~Bm2+1,Bm1~B0。
如图3所示,步骤S103中,本发明实施例提供的调度多个通道的切换,进行多通道之间的仲裁并控制每次读写的数据量包括:
(一)统计各个通道的水位情况,将水位情况为分为高、中、低三挡,其中:
对于写通道,其水位情况表示的是输入FIFO中缓存的数据量和SDRAM中给该通道分配的存储区域中当前的空闲空间,FIFO中数据量和SDRAM中的空闲空间越多,水位的档位越高。
对于读通道,其水位情况表示的是输出FIFO中空闲的空间和SDRAM中可被读出的数据量,FIFO中空闲空间和SDRAM中数据量越多,水位的档位越高。
(二)第一轮仲裁对比各个通道的水位情况来判断,水位的档位越高,则优先级越高,如果各个通道中只有一个通道的水位最高,则该通道获得本次通道的使用权,若有多个通道同时处于高水位则需要进行第二轮仲裁。
(三)第二轮仲裁根据通道本身固定优先级来决定,优先级越高的获得本次通道的使用权,根据通道的带宽情况和数据重要程度决定固定优先级,带宽越高,数据本身越重要的通道优先级越高。
(四)确定优先级之后本轮仲裁结束,将获得调度权的通道接入总线中,开启突发传输。
如图4所示,步骤S104中,本发明实施例提供的将读写的地址、命令、数据转化为正确时序关系送到SDRAM总线上包括:
1)通电并进行初始化,获取待发送指令;所述待发送指令包括模式配置、刷新、预充电及其他相关指令。
2)进入闲置状态,等待读请求、写请求或者刷新请求,并作出应答。
3)当处于刷新操作状态时,执行相应刷新操作,并根据是否保存有未执行指令进行下一步状态跳转。
4)当处于写突发状态时,根据需要发送相应的写操作指令和写数据,操作结束之后,并根据是否保存有未执行指令进行下一步状态跳转。
5)当读突发状态时,根据需要发送相应的读操作指令和接收相应的读数据,操作结束之后,根据是否保存有未执行指令进行下一步状态跳转。
步骤2)中,本发明实施例提供的进入闲置状态,等待读请求、写请求或者刷新请求,并作出应答包括:
2.1)若收到刷新请求,则进入刷新操作状态。
2.2)若同时收到刷新请求和读、写请求,则优先进入刷新状态,并记录其他状态。
2.3)若收到写请求,则判断在写突发过程中,是否会接收到刷新命令;若在写突发过程中,不会接收到刷新指令,则进入写操作状态;若在写突发过程中,会接收到刷新指令,则进入刷新操作状态,并记录写指令,用于刷新之后的状态跳转。
2.4)若收到读请求,则判断在读突发过程中,是否会接收到刷新命令;若在读突发过程中,不会接收到刷新指令,则进入到读操作状态;若在读突发过程中,会接收到刷新指令,则进入到刷新操作状态,并记录读指令,用于刷新之后的状态跳转。
2.5)若同时收到写请求和读请求,则判断在写突发过程中,是否会接收到刷新命令;若在写突发过程中,不会接收到刷新指令,则进入到写操作状态并记录读指令,用于写操作之后的状态跳转;若在写突发过程中,会接收到刷新指令,则进入到刷新操作状态,并记录写指令和读指令,用于刷新之后的状态跳转。
步骤3)中,本发明实施例提供的当处于刷新操作状态时,执行相应刷新操作,并根据是否保存有未执行指令进行下一步状态跳转包括:
3.1)发送相应的刷新指令,若发送指令过程中,有读请求或者写请求,则先将请求记录下来,但是暂时不响应。
3.2)刷新操作结束之后,根据记录的未响应的请求进行状态跳转如下:
3.2.1)若有写请求未响应则跳转到写突发状态;
3.2.2)若有读请求未响应则跳转到读突发状态;
3.2.3)若同时有写请求和读请求未响应则优先响应写请求;
3.2.4)若无未响应的请求则返回闲置状态。
步骤4)中,本发明实施例提供的当处于写突发状态时,根据需要发送相应的写操作指令和写数据,操作结束之后,并根据是否保存有未执行指令进行下一步状态跳转包括:
4.1)根据地址计算模块产生的写地址发送行激活和写操作指令。
4.2)将用户接口输入的写数据按照SDRAM要求的时序发送到总线上。
4.3)数据连续传输结束之后,发送预充电命令,完成此次突发操作。
4.4)根据记录的未响应的请求进行状态跳转,如下:
4.4.1)若有读请求未响应则跳转到读突发状态;
4.4.2)若无未响应的请求则返回闲置状态。
步骤5)中,本发明实施例提供的当读突发状态时,根据需要发送相应的读操作指令和接收相应的读数据,操作结束之后,根据是否保存有未执行指令进行下一步状态跳转包括:
5.1)根据地址计算模块产生的读地址发送行激活和读操作指令。
5.2)在一定潜伏期之后,将从SDRAM中读出的数据按照相应的时序接收并传输到用户层。
5.3)数据连续传输结束之后,发送预充电命令,完成此次突发操作。
5.4)根据记录的未响应的请求进行状态跳转,如下:
5.4.2)若有写请求未响应则跳转写突发状态;
5.4.2)若无未响应的请求则返回闲置状态。
如图5所示,本发明实施例提供的支持灵活分块存取的虚拟多通道高效SDRAM访问系统包括:
FIFO模块1,用于隔离不同时钟域,进行跨时钟域处理、数据拼接、数据缓存;同时用于在不同通道不同时钟域下进行读写。
地址计算模块2,用于在顺序存取和分块存取SDRAM的时候进行寻址计算;所述寻址计算包括顺序写地址计算、顺序读地址计算、分块读地址计算。
多条件仲裁模块3,用于调度多个通道的切换,进行多通道之间的仲裁以及控制每次读写的数据量。
控制模块4,用于利用SDRAM控制器联接用户层接口和SDRAM;并将读写的地址、命令、数据转化为正确时序关系送到总线上。
下面结合具体实施例对本发明的技术方案作进一步说明。
实施例1:
分块地址计算方法
由于SDRAM的主要作用是缓存,所以最常见的操作就是顺序写顺序读,然而随着星上任务越来越复杂,对于SDRAM的存取提出了不同的要求,例如要求对顺序写入的数据按照一定的大小分块读出。分块读取操作的主要难点在于地址计算,因为顺序操作只需要一个地递增的计数器就可以完成寻址,而分块操作随着存储空间规模的不同,大小的不同,地址计算方式势必要发生变化,复杂的地址计算会额外消耗星上有限的计算资源;
本发明详细分析了一定条件下分块地址映射的规律,从而提出一种极其简单的分块地址计算方法,分析过程如下:
对要写入的数据进行SDRAM内地址的分配,假设二维数组的阵列为32x32,如图6所示,则共有1024个数据,要将这些数据存入SDRAM中,共需要1024个存储单元,对数据按照从左到右,从上到下的顺序进行地址编号,则1024个地址共需要10bit的二进制数据才能表示,将编号表示为A9~A0,例如左上角的数据地址为A9~A0=0000000000;右上角的数据的地址为A9~A0=0000011111;
假设要将32x32阵列分为8x8的分块,如图7所示,共可以产生16个分块,每个分块内按照从左到右,从上到下的顺序输出,分块之间也按照从左到右,从上到下的顺序输出,即编号0~15的顺序输出,读出顺序示意图入图7所示,从图中可以看出分块输出的顺序与输入SDRAM顺序是不同的,因此寻址的计算也不再是简单的一个计数器从0计数到1023;
由于分块每行是8个数据,将二维数组按照每个分块中的一行作为一个单元,得到如图 8所示示意图,按照分块输出的顺序,可以发现如下规律:
1、每个分块内属于同一行的8地址变化均为A2~A0从000~111;
2、每个分块内属于同一列的8行之间的地址变化均为A7~A5从000~111;
3、属于同一行的4分块与分块之间(如分块0、1、2、3为同一行,分块4、5、6、7为另一行)的同一位置的地址变化均为A4~A3从00~11;
4、属于同一列的4分块与分块之间(如分块0、4、8、12为同一列,分块1、5、9、13 为另一列)的同一位置的地址变化均为A9~A8从00~11;
根据该规律提炼出基于二进制位交换的精简分块地址寻址方法描述如下:
1、定义一个计数器block_cnt,用于记录块输出,即每输出一个块数据,该计数器就加1,由于总数据量为1024,因为计数器也是10bit,表示为B9~B0;
2、按照分块输出顺序,B2~B0为一个分块内一行内的列计数,每输出一个数据,B2~B0 加1;B5~B3为一个分块内的行计数,每输出一行,B5~B3加1;B9~B6为分块计数,每输出完一个分块,B9~B6加1;
3、与前面的规律分析,将B9~B0映射到A9~A0中,可以得到:
A2~A0=B2~B0;
A4~A3=B7~B6;
A7~A5=B5~B3;
A9~A8=B9~B8;
4、从结果来看,其分块地址的计算方式就是将B9~B0中的行计数B5~B3和分块计数 B9~B6中属于同一行的计数B7~B6进行位置的调换,如下所示;
A9,A8,A7,A6,A5,A4,A3,A2,A1,A0=B9,B8,B5,B4,B3,B7,B6,B2,B1,B0。
在FPGA中实现顺序的寻址方法以及两种分块寻址的方法,统计其资源利用情况,如下表所示,可以发现,相比于最简单的顺序寻址方法,专利CN104657285A所提出的利用起始地址和偏移地址进行分块寻址的方法需要的资源远大于顺序寻址的方法,然而本发明的分块寻址方法在资源上增加很少。
表1-1编码器各模块资源占比
当然,这种分块方法存在一定的使用条件,由于是采用位交换操作,因此对于数据量和分块大小都有一定的要求,即原始数据的行列和分块数据的行列值都必须是2的次幂,只需满足这个条件就可以灵活进行任意分块的地址计算。
多条件仲裁方法
通常多通道仲裁要么采用轮询方式,即各个通道之间地位平等,逐一进行访问;要么采用固定优先级。然而这两种方法都存在缺陷,轮询方式没有考虑到不同通道之间的带宽情况不同,因此带宽较高的通道有发生溢出的风险;而固定优先级的方式会使得通道的分配严重不均,低优先级的通道很难拥有被访问的机会,也加剧了溢出的风险;基于以上分析提出了,多条件仲裁方式,如图5所示。
其主要思想在于,各个通道之间的优先级是可变的,在优先级调度之前,增加了一轮查询仲裁的过程。具体来说就是先根据各个通道当前水位情况给出当前各个通道传输的紧急情况,对水位设置了三个档位来表示水位情况,水位越高的表示该通道进行数据传输的需求越迫切,给予较高的优先级,若存在通道间档位相同的情况,再根据通道本身的固定优先级来决定最终的响应通道。
通过增加水位的条件辅助判断通道的优先级,将通道实时带宽利用情况考虑进去,能够有效应对通道带宽发生波动的情况。
控制器刷新预判断方法
关于控制器的设计主要包括:SDRAM初始化、刷新、行激活、预充电、突发写、突发读等操作;
其中主要难点在于刷新指令和读写操作之间的冲突,刷新指令由一个固定的计数器产生,假设SDRAM的一个bank的行数为8192行,从SDRAM的手册中可以知道存储单元数据能够保持的时间为64ms,由于每次刷新是以行为单位刷新,因此可以算出每隔 64ms/8192=7.8125us就要产生一个刷新指令,所以刷新指令何时会到达是可预测的。至于刷新哪一行是由器件本身自动计数,控制器中只需要输出刷新指令即可;
而SDRAM的读写操作属于突发连续操作,也就是每响应一次读/写指令,都会连续读/ 写一定的数据量;
两者的矛盾主要体现在一方面由于SDRAM的存储结构中要求需要有间隔的对存储单元进行刷新以保持数据,另一方面由于读写都属于突发操作,突发操作的时候是无法再进行其他操作的,当出现正在进行突发操作的时候,接收到刷新请求的情况,就会激发这个冲突:
如果不进行刷新,那么可能会出现数据丢失,但是如果刷新了,又会导致当前的突发过程中断,影响当前的读写操作,因此怎么协调这方面的矛盾是设计控制器的一个重点;
目前常用的方法是按照哪个指令先到就先处理为原则,指令处理过程中暂时屏蔽其他指令,如图9所示,列举了几种刷新指令和读/写之间关系的示意图,其中蓝色表示刷新指令到达和处理过程,黄色表示读/写指令的到达和处理过程,则编号1~5分别表示:读/写指令先于刷新指令(时间不重叠)、读/写指令与刷新指令同时到达、读/写指令先于刷新指令(时间有重叠)、刷新指令先于读/写指令(时间有重叠)、刷新指令先于读/写指令(时间不重叠),根据先到先处理原则,可得到如图10所示的处理顺序;
编号4的情况下,刷新指令先到,则先处理刷新指令,处理过程中有其他指令到达,则先将其他指令记录,待刷新指令处理完后在处理其他指令,这种情况下会使得读/写操作产生一定的延时,但是不会影响功能;
而编号3情况下,读/写指令先到,则先处理读/写指令,此时若有刷新指令到达,必须等待读/写结束之后才能处理刷新指令,而这种情况下,刷新指令会产生延时,不及时的刷新带来后果就是该行的数据可能会丢失,因此为了避免数据的丢失,在两次刷新的时间间隔上必须留有一定的裕量。
按照器件手册描述,每次刷新占用11个时钟周期,每次突发操作需要30周期左右,假设此时的时钟为100M,按照7.8125us需要执行一次刷新指令,那么相当于至少每计数781个时钟周期就要执行11个周期的刷新操作,并且在执行刷新操作的时候是无法执行突发操作的,因此这种情况下,SDRAM的有效带宽必须扣除(11/781)=1.408%;
然而因为可能在突发的30周期内产生了刷新指令,根据上述的先到先处理原则,需要留有余量,所以应当选择781-30=751周期输出一次刷新指令,则SDRAM的有效带宽扣除百分比变为(11/751)=1.464%,可见这种方式会让刷新占用更多宝贵的带宽资源;
为此,本发明提出了突发操作前预判刷新的思路,因为刷新指令由控制器中的固定计数器产生,因此何时会产生刷新指令是可以提前知道的,在即将进入一次突发操作之前可以先判断在接下来的30个周期内是否会接受到刷新指令,具体的就是判断刷新计数器是否会在 30周期达到刷新计数值;
若不会达到,则按照先突发操作后刷新操作的顺序执行;
若会达到说明本次操作会出现突发过程遭遇刷新请求的情况,为了避免这种情况产生,则先提前响应刷新指令,之后再进行突发操作,如图11编号3的情况所示,如此一来在突发过程中即使接收到刷新指令,由于已经提前对该行刷新了,因此不需要再对该刷新指令响应,同时也不会影响下一次刷新操作。
这种方案只会出现提前刷新,不会出现延迟刷新,因此不需要对刷新指令的时间间隔留于有裕量,所以有效带宽扣除的百分比仍为1.408%,相比于先到先处理的方法可以降低刷新操作对带宽的占用,以100M时钟,40bit位宽的SDRAM为例,该方法可提升带宽为100M ×40bit×(1.464%-1.408%)=2.19Mb,即每秒可多传输2.19Mb的数据,在高带宽的数据缓存中是非常可观的数据量。
实施例2:
下述“SDRAM存储器”表示外挂的SDRAM存储器件,“多路并行数据”为用户层接口数据;“数据仲裁调度”为本发明的访问方法的主体部分。
主要包括以下步骤:
S1.FIFO隔离模块:用于进行跨时钟域处理和数据的拼接、缓存,以适应不同通道不同时钟域同时进行读写,增加了架构使用的灵活性,便于移植;
S2.读写地址计算:用于在顺序和分块存取SDRAM的时候进行寻址的计算,包括顺序写地址计算、顺序读地址计算、分块读地址计算;
步骤S2包括以下子步骤:
S21.对要写入的数据进行SDRAM内地址的分配,假设二维数组的阵列为32x32,如图2 所示,则共有1024个数据,要将这些数据存入SDRAM中,共需要1024个存储单元,对数据按照从左到右,从上到下的顺序进行地址编号,则1024个地址共需要10bit的二进制数据才能表示,将编号表示为A9~A0,例如左上角的数据地址为A9~A0=0000000000;右上角的数据的地址为A9~A0=0000011111;
S22.顺序写地址计算,由于数据写入均为顺序写入,因此写入比较简单,定义一个10bit 的计数器WR_CNT,按照数据输入的使能信号进行叠加(从0计数到1023)即可完成存储单元的遍历和顺序写入;
S23.顺序读地址计算,顺序读出和顺序写入的原理类似,定义一个10bit的计数器RD_CNT,按照数据输出的使能信号进行叠加(从0计数到1023)即可完成存储单元的遍历和顺序读出;
S24.分块读地址计算,假设要将32x32阵列分为8x8的分块,如图3所示,共可以产生 16个分块,每个分块内按照从左到右,从上到下的顺序输出,分块之间也按照从左到右,从上到下的顺序输出,即编号0~15的顺序输出,读出顺序示意图入图7所示;
S241.定义一个计数器block_cnt,用于记录块输出,即每输出一个块数据,该计数器就加1,由于总数据量为1024,因为计数器也是10bit,表示为B9~B0;
S242.按照分块输出顺序,B2~B0为一个分块内一行内的列计数,每输出一个数据,B2~B0 加1;B5~B3为一个分块内的行计数,每输出一行,B5~B3加1;B9~B6为分块计数,每输出完一个分块,B9~B6加1;
S243.将B9~B0映射到A9~A0中,对应关系如下:
A2~A0=B2~B0;
A4~A3=B7~B6;
A7~A5=B5~B3;
A9~A8=B9~B8;
S244.从结果来看,其分块地址的计算方式就是将B9~B0中的行计数B5~B3和分块计数 B9~B6中属于同一行的计数B7~B6进行位置的调换,如下所示;
A9,A8,A7,A6,A5,A4,A3,A2,A1,A0=B9,B8,B5,B4,B3,B7,B6,B2,B1,B0;
S3.多通道仲裁:由于需要同时支持多个通道进行读写操作,然而针对SDRAM的总线接口只有一套,所以需要在接口进行缓存以及进行不同通道之间的仲裁和切换,接口的缓存由 FIFO来实现,该部分用于对多通道之间进行仲裁和切换并控制每次读写的数据量;
步骤S3包括以下子步骤:
S31.统计各个通道的水位情况,将水位情况为分为高、中、低三挡,其中:
对于写通道,其水位情况表示的是输入FIFO中缓存的数据量和SDRAM中给该通道分配的存储区域中当前的空闲空间,FIFO中数据量和SDRAM中的空闲空间越多,则水位的档位越高;
对于读通道,其水位情况表示的是输出FIFO中空闲的空间和SDRAM中可以被读出的数据量,FIFO中空闲空间和SDRAM中数据量越多,水位的档位越高;
S32.第一轮仲裁对比各个通道的水位情况来判断,水位的档位越高,则优先级越高,如果各个通道中只有一个通道的水位最高,那么该通道获得本次通道的使用权,若有多个通道同时处于高水位则需要进行第二轮仲裁;
S33.第二轮仲裁根据该通道本身固定优先级来决定,优先级越高的获得本次通道的使用权,固定优先级的决定则根据通道的带宽情况和数据重要程度来决定,带宽越高,数据本身越重要的通道优先级越高;
S34.确定优先级之后本轮仲裁结束,将获得调度权的通道接入总线中,开启突发传输,仲裁过程流程图如图3所示。
S4.SDRAM控制器操作:通道仲裁之后,选择了某一个通道接入SDRAM接口中,然而要真正实现和SDRAM之间进行数据交换,就要在接口上按照SDRAM器件要求的时序关系进行通信,因此这部分主要作用为将读写的地址、命令、数据转化为正确时序关系送到总线上,保证与SDRAM器件建立有效的通信。
如图4所示,步骤S4包括以下子步骤:
S41.上电之后首先进行初始化操作,需要发送的指令包括模式配置、刷新、预充电等指令;
S42.初始化结束之后,进入闲置状态,等待读请求、写请求或者刷新请求,并作出相应的应答,应答方式如下;
S421.若收到刷新请求,则进入刷新操作状态;
S422.若同时收到刷新请求和其他请求(读、写请求),则优先进入刷新状态,并把其他状态记录下来;
S423.若收到写请求,需要进行判断如下:
(1)若在写突发过程中,不会接收到刷新指令,则进入写操作状态;
(2)若在写突发过程中,会接收到刷新指令,则进入刷新操作状态,并记录写指令,用于刷新之后的状态跳转;
S424.若收到读请求,需要进行判断如下:
(1)若在读突发过程中,不会接收到刷新指令,则进入到读操作状态;
(2)若在读突发过程中,会接收到刷新指令,则进入到刷新操作状态,并记录读指令,用于刷新之后的状态跳转;
S425.若同时收到写请求和读请求,需要进行判断如下:
(1)若在写突发过程中,不会接收到刷新指令,则进入到写操作状态并记录读指令,用于写操作之后的状态跳转;
(2)若在写突发过程中,会接收到刷新指令,则进入到刷新操作状态,并记录写指令和读指令,用于刷新之后的状态跳转。
S43.刷新操作状态下,需要执行相应刷新操作,之后根据是否保存有未执行指令进行下一步状态跳转,具体如下;
S431.发送相应的刷新指令,在这个过程中,若有其他请求读请求或者写请求),则先将请求记录下来,但是暂时不响应;
S432.刷新操作结束之后,根据记录的未响应的请求进行状态跳转如下:
(1)若有写请求未响应则跳转到写突发状态;
(2)若有读请求未响应则跳转到读突发状态;
(3)若同时有写请求和读请求未响应则优先响应写请求;
(4)若无未响应的请求则返回闲置状态;
S44.写突发状态下根据需要发送相应的写操作指令和写数据,操作结束之后根据是否保存有未执行指令进行下一步状态跳转,具体如下;
S441.根据地址计算模块产生的写地址发送行激活和写操作指令;
S442.将用户接口输入的写数据按照SDRAM要求的时序发送到总线上;
S443.数据连续传输结束之后,发送预充电命令,完成此次突发操作;
S444.根据记录的未响应的请求进行状态跳转,如下:
(1)若有读请求未响应则跳转到读突发状态;
(2)由于步骤S42的操作,这里面不会有未响应的刷新请求;
(3)若无未响应的请求则返回闲置状态;
S45.读突发状态下根据需要发送相应的读操作指令和接收相应的读数据,操作结束之后根据是否保存有未执行指令进行下一步状态跳转,具体如下;
S451.根据地址计算模块产生的读地址发送行激活和读操作指令;
S452.在一定潜伏期之后,将从SDRAM中读出的数据按照相应的时序接收并传输到用户层;
S453.数据连续传输结束之后,发送预充电命令,完成此次突发操作;
S454.根据记录的未响应的请求进行状态跳转,如下:
(1)若有写请求未响应则跳转写突发状态;
(2)由于步骤S42的操作,这里面不会有未响应的刷新请求;
(3)若无未响应的请求则返回闲置状态。
下面结合具体实验对本发明作进一步描述。
精简分块寻址的主要作用是减少逻辑资源消耗,因此实验结果为对比以往专利的分块方案和本方案实现后的资源消耗情况,可以发现本方案的资源消耗都比较小。
表1-1编码器各模块资源占比
仲裁方案的主要作用是提高带宽利用率,控制器刷新的预判断方法主要是提高带宽能力,因此实验结果为对比传统方法和本方法中的带宽利用率和节省带宽情况如下表,可以发现带宽利用率提升了11%,而刷新所占的带宽情况减少了0.056%,换算实施例1中的100M时钟,40bit位宽的SDRAM,每秒可多传输2.19Mb的数据,在高带宽的数据缓存中是非常可观的数据量。
表2-1SDRAM模块优化前后对比
对比指标 | 带宽利用率 | 刷新所占带宽情况 |
优化前 | 63% | 1.464% |
优化后 | 74% | 1.408% |
应当注意,本发明的实施方式可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的普通技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或 DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本发明的设备及其模块可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合例如固件来实现。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,都应涵盖在本发明的保护范围之内。
Claims (8)
1.一种支持灵活分块存取的虚拟多通道SDRAM访问方法,其特征在于,所述支持灵活分块存取的虚拟多通道SDRAM访问方法包括:
步骤一,利用FIFO隔离不同时钟域,进行跨时钟域处理、数据拼接、数据缓存,支持在不同通道不同时钟域下进行数据读写;
步骤二,在顺序存取和分块存取SDRAM的时候进行顺序写地址计算、顺序读地址计算、分块读地址计算;
步骤三,调度多个通道的切换,进行多通道之间的仲裁并控制每次读写的数据量;包括:
(一)统计各个通道的水位情况,将水位情况为分为高、中、低三挡,对于写通道,水位情况表示输入FIFO中缓存的数据量和SDRAM中给该通道分配的存储区域中当前的空闲空间,FIFO中数据量和SDRAM中的空闲空间越多,水位的档位越高;
对于读通道,水位情况表示输出FIFO中空闲的空间和SDRAM中被读出的数据量,FIFO中空闲空间和SDRAM中数据量越多,水位的档位越高;
(二)第一轮仲裁对比各个通道的水位情况来判断,水位的档位越高,则优先级越高,如果各个通道中只有一个通道的水位最高,则该通道获得本次通道的使用权,若有多个通道同时处于高水位则需要进行第二轮仲裁;
(三)第二轮仲裁根据通道本身固定优先级来决定,优先级越高的获得本次通道的使用权,根据通道的带宽情况和数据重要程度决定固定优先级,带宽越高,数据本身越重要的通道优先级越高;
(四)确定优先级之后本轮仲裁结束,将获得调度权的通道接入总线中,开启突发传输;
步骤四,SDRAM控制器联接用户层接口和SDRAM;并将读写的地址、命令、数据转化为正确时序关系送到SDRAM总线上包括:
1)通电并进行初始化,获取待发送指令;所述待发送指令包括模式配置、刷新、预充电及其他相关指令;
2)进入闲置状态,等待读请求、写请求或者刷新请求,并作出应答;
包括:
2.1)若收到刷新请求,则进入刷新操作状态;
2.2)若同时收到刷新请求和读、写请求,则优先进入刷新状态,并记录其他状态;
2.3)若收到写请求,则判断在写突发过程中,是否会接收到刷新命令;若在写突发过程中,不会接收到刷新指令,则进入写操作状态;若在写突发过程中,会接收到刷新指令,则进入刷新操作状态,并记录写指令,用于刷新之后的状态跳转;
2.4)若收到读请求,则判断在读突发过程中,是否会接收到刷新命令;若在读突发过程中,不会接收到刷新指令,则进入到读操作状态;若在读突发过程中,会接收到刷新指令,则进入到刷新操作状态,并记录读指令,用于刷新之后的状态跳转;
2.5)若同时收到写请求和读请求,则判断在写突发过程中,是否会接收到刷新命令;若在写突发过程中,不会接收到刷新指令,则进入到写操作状态并记录读指令,用于写操作之后的状态跳转;若在写突发过程中,会接收到刷新指令,则进入到刷新操作状态,并记录写指令和读指令,用于刷新之后的状态跳转;
3)当处于刷新操作状态时,执行相应刷新操作,并根据是否保存有未执行指令进行下一步状态跳转;
4)当处于写突发状态时,根据需要发送相应的写操作指令和写数据,操作结束之后,并根据是否保存有未执行指令进行下一步状态跳转;
5)当读突发状态时,根据需要发送相应的读操作指令和接收相应的读数据,操作结束之后,根据是否保存有未执行指令进行下一步状态跳转。
2.如权利要求1所述支持灵活分块存取的虚拟多通道SDRAM访问方法,其特征在于,步骤二中,所述顺序写地址计算、顺序读地址计算、分块读地址计算方法包括:
(1)对待写入的数据进行SDRAM内地址的分配:待写入数据的二维数组阵列为n1*n2;数据量为n1*n2其中n1和n2均为2的次幂,每个数据占用一个存储单元,对数据按照从左到右,从上到下的顺序进行地址编号,并利用二进制数据表示所述地址,所述地址编号为A=Am~A0,其中m=log2(n1*n2)-1;
(2)顺序写地址计算:定义一个(m+1)bit的计数器WR_CNT,按照数据输入的使能信号进行叠加,从0计数到n1*n2-1,进行存储单元的遍历和顺序写入;
(3)顺序读地址计算:定义一个(m+1)bit的计数器RD_CNT,按照数据输出的使能信号进行叠加,从0计数到n1*n2-1,进行存储单元的遍历和顺序读出;
(4)分块读地址计算:将二维数组阵列划分为ixj大小的分块,i、j均为2的次幂,每个分块内按照从左到右,从上到下的顺序输出,分块之间按照从左到右,从上到下的顺序输出;
进一步,步骤(4)中,所述分块读地址计算方法包括:
(4.1)定义m1=log2(j)-1,m2=log2(i)-1,m3=log2(n2/j)-1按照分块输出顺序,Bm1~B0为一个分块内一行内的列计数,每输出一个数据,Bm1~B0加1;Bm2~Bm1+1为一个分块内的行计数,每输出一行,Bm2~Bm1+1加1;Bm~Bm2+1为分块计数,每输出完一个分块,Bm~Bm2+1加1;
(4.2)将Bm~B0映射到Am~A0中,对应关系如下:
Am1~A0=Bm1~B0;
Am2~Am1+1=Bm3~Bm2+1;
Am3~Am2+1=Bm2~Bm1+1;
Am~Am3+1=Bm~Bm3+1;
(4.3)分块地址的计算方式为:将Bm~B0中的行计数Bm2~Bm1+1和分块计数Bm~Bm2+1中属于同一行的计数Bm3~Bm2+1进行位置的调换,具体包括:
Am~Am3+1,Am3~Am2+1,Am2~Am1+1,Am1~A0=Bm~Bm3+1,Bm2~Bm1+1,Bm3~Bm2+1,Bm1~B0。
3.如权利要求1所述支持灵活分块存取的虚拟多通道SDRAM访问方法,其特征在于,步骤3)中,所述当处于刷新操作状态时,执行相应刷新操作,并根据是否保存有未执行指令进行下一步状态跳转包括:
3.1)发送相应的刷新指令,若发送指令过程中,有读请求或者写请求,则先将请求记录下来,但是暂时不响应;
3.2)刷新操作结束之后,根据记录的未响应的请求进行状态跳转如下:
3.2.1)若有写请求未响应则跳转到写突发状态;
3.2.2)若有读请求未响应则跳转到读突发状态;
3.2.3)若同时有写请求和读请求未响应则优先响应写请求;
3.2.4)若无未响应的请求则返回闲置状态;
步骤4)中,所述当处于写突发状态时,根据需要发送相应的写操作指令和写数据,操作结束之后,并根据是否保存有未执行指令进行下一步状态跳转包括:
4.1)根据地址计算模块产生的写地址发送行激活和写操作指令;
4.2)将用户接口输入的写数据按照SDRAM要求的时序发送到总线上;
4.3)数据连续传输结束之后,发送预充电命令,完成此次突发操作;
4.4)根据记录的未响应的请求进行状态跳转,如下:
4.4.1)若有读请求未响应则跳转到读突发状态;
4.4.2)若无未响应的请求则返回闲置状态。
4.如权利要求1所述支持灵活分块存取的虚拟多通道SDRAM访问方法,其特征在于,步骤5)中,所述当读突发状态时,根据需要发送相应的读操作指令和接收相应的读数据,操作结束之后,根据是否保存有未执行指令进行下一步状态跳转包括:
5.1)根据地址计算模块产生的读地址发送行激活和读操作指令;
5.2)在一定潜伏期之后,将从SDRAM中读出的数据按照相应的时序接收并传输到用户层;
5.3)数据连续传输结束之后,发送预充电命令,完成此次突发操作;
5.4)根据记录的未响应的请求进行状态跳转,如下:
5.4.2)若有写请求未响应则跳转写突发状态;
5.4.2)若无未响应的请求则返回闲置状态。
5.一种实施如权利要求1-4任意一项所述支持灵活分块存取的虚拟多通道SDRAM访问方法的支持灵活分块存取的虚拟多通道高效SDRAM访问系统,其特征在于,所述支持灵活分块存取的虚拟多通道高效SDRAM访问系统包括:
FIFO模块,用于隔离不同时钟域,进行跨时钟域处理、数据拼接、数据缓存;同时用于在不同通道不同时钟域下进行读写;
地址计算模块,用于在顺序存取和分块存取SDRAM的时候进行寻址计算;所述寻址计算包括顺序写地址计算、顺序读地址计算、分块读地址计算;
多条件仲裁模块,用于调度多个通道的切换,进行多通道之间的仲裁以及控制每次读写的数据量;
控制模块,用于利用SDRAM控制器联接用户层接口和SDRAM;并将读写的地址、命令、数据转化为正确时序关系送到总线上。
6.一种接收用户输入程序存储介质,所存储的计算机程序使电子设备执行权利要求1-4任意一项所述支持灵活分块存取的虚拟多通道SDRAM访问方法。
7.一种存储在计算机可读介质上的计算机程序产品,包括计算机可读程序,供于电子装置上执行时,提供用户输入接口以实施权利要求1-4任意一项所述支持灵活分块存取的虚拟多通道SDRAM访问方法。
8.一种执行权利要求1-4任意一项所述支持灵活分块存取的虚拟多通道SDRAM访问方法的星上存储器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010279292.2A CN111506264B (zh) | 2020-04-10 | 2020-04-10 | 支持灵活分块存取的虚拟多通道sdram访问方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010279292.2A CN111506264B (zh) | 2020-04-10 | 2020-04-10 | 支持灵活分块存取的虚拟多通道sdram访问方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111506264A CN111506264A (zh) | 2020-08-07 |
CN111506264B true CN111506264B (zh) | 2021-07-06 |
Family
ID=71876062
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010279292.2A Active CN111506264B (zh) | 2020-04-10 | 2020-04-10 | 支持灵活分块存取的虚拟多通道sdram访问方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111506264B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463668B (zh) * | 2020-11-20 | 2021-10-22 | 华中科技大学 | 一种基于stt-mram的多通道高速数据访存结构 |
CN112463415B (zh) * | 2020-12-17 | 2024-02-06 | 苏州盛科通信股份有限公司 | 基于随机地址的多端口共享内存管理系统及方法 |
CN114741341B (zh) * | 2022-03-01 | 2024-06-21 | 西安电子科技大学 | 一种实现Crossbar结构仲裁的方法、系统及存储介质 |
CN117130957A (zh) * | 2023-08-31 | 2023-11-28 | 成都奥瑞科电子科技有限公司 | 一种基于信号处理的多通道高速缓存系统及装置 |
CN117440273B (zh) * | 2023-12-18 | 2024-03-22 | 厦门鹏芯半导体有限公司 | 一种xgspon olt上行数据拼包的系统及方法 |
CN117891758B (zh) * | 2024-03-12 | 2024-05-17 | 成都登临科技有限公司 | 一种基于仲裁的存储访问系统、处理器及计算设备 |
CN118072807A (zh) * | 2024-04-18 | 2024-05-24 | 杭州长川科技股份有限公司 | 一种多通道仲裁方法、系统及介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005006195A2 (en) * | 2003-06-30 | 2005-01-20 | Raytheon Company | System and method for selectively affecting data flow to or from a memory device |
CN1588552A (zh) * | 2004-09-16 | 2005-03-02 | 联合信源数字音视频技术(北京)有限公司 | 有异步缓存的双倍速动态随机存取存储器控制装置及方法 |
CN102097122A (zh) * | 2009-12-10 | 2011-06-15 | 上海华虹集成电路有限责任公司 | 一种多通道共享数据缓存区的NAND flash控制器电路 |
CN103198856A (zh) * | 2013-03-22 | 2013-07-10 | 烽火通信科技股份有限公司 | 一种ddr控制器及请求调度方法 |
CN104484214A (zh) * | 2014-12-30 | 2015-04-01 | 华中科技大学 | 一种sram型fpga的配置、刷新与程序上注一体化系统 |
CN108959656A (zh) * | 2018-08-13 | 2018-12-07 | 电子科技大学 | 一种多fpga多通道采集系统的三维映射同步方法 |
CN110188012A (zh) * | 2019-04-26 | 2019-08-30 | 华中科技大学 | 一种fpga寄存器级单粒子翻转故障模拟方法和系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7266254B2 (en) * | 2002-02-13 | 2007-09-04 | Canon Kabushiki Kaisha | Data processing apparatus, image processing apparatus, and method therefor |
US10628910B2 (en) * | 2018-09-24 | 2020-04-21 | Intel Corporation | Vertex shader with primitive replication |
US10853989B2 (en) * | 2018-09-26 | 2020-12-01 | Intel Corporation | Coarse compute shading |
-
2020
- 2020-04-10 CN CN202010279292.2A patent/CN111506264B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005006195A2 (en) * | 2003-06-30 | 2005-01-20 | Raytheon Company | System and method for selectively affecting data flow to or from a memory device |
CN1588552A (zh) * | 2004-09-16 | 2005-03-02 | 联合信源数字音视频技术(北京)有限公司 | 有异步缓存的双倍速动态随机存取存储器控制装置及方法 |
CN102097122A (zh) * | 2009-12-10 | 2011-06-15 | 上海华虹集成电路有限责任公司 | 一种多通道共享数据缓存区的NAND flash控制器电路 |
CN103198856A (zh) * | 2013-03-22 | 2013-07-10 | 烽火通信科技股份有限公司 | 一种ddr控制器及请求调度方法 |
CN104484214A (zh) * | 2014-12-30 | 2015-04-01 | 华中科技大学 | 一种sram型fpga的配置、刷新与程序上注一体化系统 |
CN108959656A (zh) * | 2018-08-13 | 2018-12-07 | 电子科技大学 | 一种多fpga多通道采集系统的三维映射同步方法 |
CN110188012A (zh) * | 2019-04-26 | 2019-08-30 | 华中科技大学 | 一种fpga寄存器级单粒子翻转故障模拟方法和系统 |
Non-Patent Citations (2)
Title |
---|
Design of Fiber-Optic Strain Array Multi-Channel High Speed Signal Acquisition Based on DSP;Xueguang Wang et.al;《 2009 5th International Conference on Wireless Communications, Networking and Mobile Computing》;20091030;全文 * |
星载数据处理虚拟多通道大容量存储技术研究;李庆安;《中国优秀硕士学位论文全文数据库 信息科技辑》;20200315;第1-63页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111506264A (zh) | 2020-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111506264B (zh) | 支持灵活分块存取的虚拟多通道sdram访问方法 | |
US9477617B2 (en) | Memory buffering system that improves read/write performance and provides low latency for mobile systems | |
US7617356B2 (en) | Refresh port for a dynamic memory | |
CN100538882C (zh) | 一种同步动态存储器控制器的设计方法 | |
US9411757B2 (en) | Memory interface | |
CN102270444B (zh) | 视频处理芯片数据流控制及帧缓存装置 | |
CN104699631A (zh) | Gpdsp中多层次协同与共享的存储装置和访存方法 | |
JP2002041445A (ja) | 高性能dmaコントローラ | |
CN102982505A (zh) | 虚拟gpu | |
CN103780506A (zh) | 一种用于以太网设备的数据缓存系统及方法 | |
US20120144104A1 (en) | Partitioning of Memory Device for Multi-Client Computing System | |
CN103543954A (zh) | 一种数据存储管理方法和装置 | |
CN112382321B (zh) | 动态随机存取存储器的刷新方法及内存控制器、电子装置 | |
CN102750257A (zh) | 基于访问信息调度的片上多核共享存储控制器 | |
US10031884B2 (en) | Storage apparatus and method for processing plurality of pieces of client data | |
CN109145397B (zh) | 一种支持并行流水访问的外存仲裁系统 | |
US6993637B1 (en) | Unified memory system for multiple processors and method for controlling the same | |
US20110314197A1 (en) | Data processing system | |
CN109271333B (zh) | 一种sram控制方法及控制器、控制系统 | |
CN102833541B (zh) | 用于mpeg-2视频解码的sdram控制系统 | |
US20070047372A1 (en) | Semiconductor memory system and semiconductor memory chip | |
US11379388B1 (en) | Credit scheme for multi-queue memory controllers | |
CN102591814A (zh) | 支持多bank访问模式的dram访问控制装置和控制方法 | |
CN102073604B (zh) | 一种同步动态存储器读写控制方法、装置和系统 | |
CN112259141B (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 |