一种面向写穿透cache的SDRAM读写方法

文档序号:6471377阅读:255来源:国知局

专利名称::一种面向写穿透cache的SDRAM读写方法
技术领域
:本发明涉及一种SDRAM读写方法,特别涉及一种面向写穿透cache的SDRAM读写方法。
背景技术
:SDRAM(SynchronousDynamicRandomAccessMemory),艮卩同步动态随机存储器,它与系统时钟同步,支持高速总线时钟频率,在大容量数据存储中得到了广泛的应用,性价比高。它采用了多体(Bank)存储器结构和突发模式,能传输一整块而不只是一个单元的数据。每一个Bank通过行列来寻址,Bank的数量以及行列地址的位数主要取决于SDRAM存储器的容量。现在的SDRAM分为SDRSDRAM和DDRSDRAM,其中SDR为SingleDataRate的縮写,而DDR为DoubleDataRate的縮写。在现有的SDRAM中,初始化SDRAM时要设置SDRAM的工作模式,在工作模式中对写方式的设置一般有两种,即单个操作方式(Single方式)和多个连续操作方式(Burst方式)。Single方式允许地址在SDRAM—行内任意跳变,其写行为如图1所示。在执行写穿透策略的Cache中,CPU的Cache对SDRAM内存的写操作是单个数据的访问,而且写地址遵循局部性原理,符合图1所描述的单个写操作方式(SingleWrite方式)中对地址的要求。对SDRAM某一字单元(WORD)的访问需要经过行开启才能读写数据,时间延迟较大,如果在行开启之后,仅仅读写一个WORD数据,SDRAM的效率是很低的。在执行写穿透策略的Cache中,处理器执行一条写内存(Store)指令,必然引发对内存的写操作,如果内存为SDRAM,则为对SDRAM低效率的单个数据的写访问。现有的公开文献的主要侧重于利用Cache缓存来减少CPU读写内存(如SDRAM)的时间,而并没有与物理存储器SDRAM的特性结合起来以提高存储器访问效率。
发明内容本发明的目的在于提供一种面向写穿透Cache的SDRAM读写方法,用于SDRAM的Single方式,它能减少CPU访问内存时间,提高SDRAM的访问效率。为了达到上述目的,本发明采用以下技术方案予以实现一种面向写穿透Cache的SDRAM读写方法,用于SDRAM的Single方式,其特征在于,首先建立缓冲区,选择性的执行以下操作(1)单个数据写操作-a)当一个SDRAM写数据到来时,解析它的行地址记为k(k为大于0的自然数),在缓冲区中查看是否有一行与该行地址k相同,如果有,则直接在缓冲区相应行中写入该数据,同时查看这一行是否已满,如果已满,则将这一行写入SDRAM的第k行中;如果数据缓冲区中没有一行与该行地址k相同,则转b);b)查看缓冲区中是否有空行,如果有,则写入该空行,同时更新其行地址信息;如果没有,转c);c)根据替换算法,将缓冲区中的一行数据全部写入SDRAM中,空出一行供当前的写数据使用;(2)单个数据的读操作读取一个数据时,先查看缓冲区,如果该读数据在缓冲区中,则读取缓冲区中的相应数据;如果不在缓冲区中,从SDRAM中读取相应数据;(3)连续数据的读操作当读取连续数据时,首先从SDRAM中读取,同时査看缓冲区,如果有该数据的拷贝,将缓冲区中相应数据作为读取结果,否则,将SDRAM中的相应数据作为读取结果;(4)连续数据的写操作当连续数据到来时,直接写入SDRAM中,同时查看缓冲区,如果有该数据的拷贝,同时将所述连续数据写入缓冲区中,即可。本发明的进一步改进在于-所述替换算法为最久未被使用算法LRU。所述缓冲区的大小优选3行8列。本发明在SDRAM前端设置缓冲区,采用写合并机制,首先使用Single方式对SDRAM同一行数据的多次写操作,在缓冲区中凑齐多个数据,然后开启SDRAM,在这一行内写入多个数据,改进Cache对SDRAM的写效率,提高SDRAM的访问效率。适用于对存储器访频繁问的多媒体领域。下面结合和具体实施方式对本发明作进一步详细说明。图1为SDRAM在传统SingleWrite模式下的写行为时序图2为本发明的缓冲区数据存储结构图3为基于本发明SDRAM读写方式的硬件结构图4为LRU算法替换示意图;图5为SDRAM读写效率计算示意图。具体实施例方式图1为SDRAM在传统SingleWrite方式写时序图。由图可见,该方式在一行开启后,以连续的方式对该行内的地址不连续内容进行写入,可以达到Burst方式的写入效率。但是,传统SingleWrite方式相比于Burst方式,在总线上会产生更多的功耗消耗;原因在于,传统SingleWrite方式地址的变换范围会扩展到行内,而Burst方式的地址变换范围仅在地址数据线的低4位或3位。本发明面向写穿透Cache的SDRAM读写方法,采用合并写机制,使用SDRAM的Single方式,首先建立缓冲区,然后选择性地执行以下操作(1)单个数据写操作-a)当一个SDRAM写数据到来时,解析它的行地址记为k,在缓冲区中查看是否有一行与该行地址k相同,如果有,则直接在缓冲区相应行中写入该数据,同时查看这一行是否己满,如果已满,则将这一行写入SDRAM的第k行中;如果数据缓冲区中没有一行与该行地址k相同,则转b);b)査看缓冲区中是否有空行,如果有,则写入该空行,同时更新其行地址信息;如果没有,转c);c)根据替换算法,将缓冲区中的一行数据全部写入SDRAM中,空出一行供当前的写数据使用;(2)单个数据的读操作当读取一个数据时,先査看缓冲区,如果该读数据在缓冲区中,则读取缓冲区中的相应数据;如果不在缓冲区中,从SDRAM中读取相应数据;(3)连续数据的读操作当读取连续数据时,首先从SDRAM中读取,同时査看缓冲区,如果有该数据的拷贝,将缓冲区中相应数据作为读取结果,否则,将SDRAM中的相应数据作为读取结果;(4)连续数据的写操作当连续数据到来时,直接写入SDRAM中,同时査看缓冲区,如果有该数据的拷贝,同时将所述连续数据写入缓冲区中,即可。参照图2,说明本发明的缓冲区数据存储结构。本发明的面向写穿透Cache的SDRAM读写方法,采用写合并机制,使用SDRAM的SingleWrite方式,首先在于建立缓冲区。设缓冲区可以缓冲M(M>0)行和N列(N>0)数据,每个缓冲区的存储单元(UNIT)由32位数据和列地址(位数等同于SDRAM的列地址位宽)构成。行地址信息由ROWx(x=l,......,m)及标志信号构成,标志信号标识缓冲区中该行存储单元的信息,它由以下4个信号构成FULL(1位)表示该行是否为满,EMPTY(1位)表示该行是否为空,Bank号(2位)对应SDRAM的Bank地址,行地址对应所使用的SDRAM的第k行的行地址。参照图3,说明基于本发明SDRAM读写方式的硬件结构。AHB总线的主设备CPU或其他的存储访问(例如媒体加速器单元、显示模块),通过AHB总线访问外部存储器(SDRAM)时,采用本发明的写合并策略编写SDRAM控制器和AHB总线的中间接口控制程序,对AHB总线发出的单个数据读或写命令由写合并模块处理。具体为单个数据读或写命令由缓冲写控制或缓冲读控制模块处理,以查看缓冲区(即缓冲寄存器堆)中是否有同一地址的存储单元;如果对于单个数据读写,缓冲区并没有命中,则通过连续读写、缓冲不命中处理与总线交互模块(以下简称"控制主状态机")进行处理,具体状态转换和控制电路依据本发明对SDRAM的读写方法设计。当数据被存入缓冲区之后,数据可能存在多份拷贝,因此需要确保数据一致性。图3说明了写合并模块作为总线的从设备(Slave)接受总线传过来的各种读写请求。由于Cache作为总线的主设备,因此Cache的写数据会通过总线传给写合并模块,将写合并模块作为片上总线的从设备实现。在图3所示的结构中,只需对从设备写合并模块设置一些SDRAM访问规则(包含在本发明的方法中)即可实现数据的一致性,而不需要在各主设备之间用各种数据一致性协议来保证数据的一致。参照图3,写合并模块对SDRAM的访问具体按以下方式进行(1)对于单个数据读操作先查看该数据是否已在缓冲区中,如果已在缓冲区中,则读取缓冲区中的数据,在这种情况下,不需要访问SDRAM,由缓冲读控制电路实现;如果不在缓冲区中,从SDRAM中读取数据,由控制主状态机电路实现。(2)对于单个数据写操作如果该数据已在缓冲区中,则更新它,这种情况下,不需要访问SDRAM,由缓冲写控制电路实现;如果不在缓冲中,査看缓冲区中是否有空行,如果有,则写入该空行,同时更新这一行的行地址信息;如果没有空行,则发出空行请求,等待空行出现再写入。(3)对于连续数据读操作考虑到在大部分情况下从缓冲区中获得全部读数据的可能性较低,因此一开始就开启SDRAM读取SDRAM中的数据。从SDRAM中读到数据后,并不能直接返回该数据,还要查看缓冲区中有没有该数据的拷贝,如果有,则该拷贝必定为最新的拷贝,因此,将缓冲区中数据作为结果返回,如果没有,则将SDRAM中的数据作为结果返回。即读缓冲区与SDRAM读是同时进行。(4)对于连续数据写操作由于数据本身具有连续性,因此没有必要将写数据放入缓冲区中,而是一开始就开启SDRAM将数据写入SDRAM中。在写入的过程中,同时查看缓冲区中有没有该数据的拷贝,如果有,则不仅要将数据写入SDRAM,同时也要写入缓冲区中;如果没有,则将数据写入SDRAM即可。(5)检查缓冲区中的行信息状态,如果出现行满或空行请求,则根据替换算法将某一行的数据全部写入SDRAM中,空出来的这一行供当前的写数据使用,以保证缓冲区中的数据始终为最新的数据。综上,写合并模块的设计需要保证缓冲区中的数据始终是最新的,而允许内存中的数据拷贝过时,写合并机制的存在对系统的其他部分而言是透明的,不会因为写合并机制的弓I入而增加其他部分的设计复杂性。结合图2所示的数据缓冲区,每一行对应SDRAM的一行,但缓冲区一行的数据个数小于SDRAM—行的数据个数,因此缓冲区中的同一行的数据在写入SDRAM时只需要发一次行开启命令就可完成,缓冲区中的每一行的公共数据项行地址,规定了缓冲区中的这一行对应到SDRAM中的哪一行。对缓冲区的数据读写的査询可以通过对AHB发出的地址总线通过行地址和列地址的解析,在缓冲中査看M行中是否有一行与该行地址相同,以及对列地址的比较查询。替换算法可以选择先进先出(FIFO)置换算法,LRU置换算法,最少使用(LFU:LeastFrequentlyUsed)算法等。LRU算法的描述为由于无法预测缓冲区将来的使用情况,只能利用"最近的过去"作为"最近的将来"的近似,因此,LRU置换算法是选择最近最久未使用的缓冲区予以淘汰。该算法赋予缓冲区每个行一个访问字段,用来记录缓冲区一个行自上次被访问以来所经历的时间t,当须淘汰一行时,选择现有缓冲区行访问字段的t值最大的,即最近最久未使用的行予以淘汰。本实施例使用的LRU替换算法,具体实现方法如图4所示,该算法首先将每一行的编号存入栈中,如果某一行(如图4所示的第0行和第1行)有数据被写入,则将该行置入栈底,其他行依次往栈顶移动。每次替换时,总是取栈顶的那一行被替换。通过试验对本发明的SDRAM读写效率进行了验证,具体方法如下首先,禾lj用仿真的方法考察CPW(countperwrite)指标。编写仿真程序,它接受外部输入的数据流,每当一个写数据到来,都要按照本发明的合并写策略执行,最后统计出数据流中一共有多少个写数据请求,经历了多少次写SDRAM,最后算出平均每一次写SDRAM时写入数据的平均个数,即CPW指标。具体统计所用的数据流来自于mp3解码程序,该数据流是通过仿真软件Modelsim对整个的芯片SoC系统仿真得到的。下表为数据缓冲区为M行、N列不同组合情况下的CPW指标。<table>tableseeoriginaldocumentpage11</column></row><table>在考虑实现所需资源的情况下,M=3,N-8为最佳组合。在这种情况下,CPW为7.8,也就是在每次SDRAM行开启进行写操作时,平均有7.8words写入该行,在很大程度上提高了效率。其次,用EDA综合工具DesignCompiler对写合并模块综合,使用TSMC0.18^工艺库,综合面积报告如下-组合电路面积148231.859375,2非组合电路面积114640.570312戶2写合并模块综合后总面积262875.406250^2最后,在实际的FPGA系统中,设M-3,N=8,采用的FPGA为AlteraStratixIIEP2S卯,工作频率为lOOMHz。单就统计Cache模块对SDRAM的访问而言,在采用写合并机制之后,SDRAM的读写效率由原来(为采用写合并机制)的12%提高到19%。其中,SDRAM读写效率(也称为SDRAM利用率)Effi的计算公式如下Effi-传送的数据个数/SDRAM处于非空闲状态的周期数非空闲状态的时钟周期数(Cycle)除了包括用于传送数据的时钟周期(Cycle)之外,还包括tRCD,tCL,tRP等延迟。E迅的计算方法具体参照图5,传输了8个数据,包括tRCD,TC1,tRP在内,总共用了14个Cycle,因此,这次传输的效率为57%。权利要求1、一种面向写穿透cache的SDRAM读写方法,使用SDRAM的single方式,其特征在于,首先建立缓冲区,选择性的执行以下操作(1)单个数据写操作a)当一个SDRAM写数据到来时,解析它的行地址记为k,在缓冲区中查看是否有一行与该行地址k相同,如果有,则直接在缓冲区相应行中写入该数据,同时查看这一行是否已满,如果已满,则将这一行写入SDRAM的第k行中;如果数据缓冲区中没有一行与该行地址k相同,则转b);b)查看缓冲区中是否有空行,如果有,则写入该空行,同时更新其行地址信息;如果没有,转c);c)根据替换算法,将缓冲区中的一行数据全部写入SDRAM中,空出一行供当前的写数据使用;(2)单个数据的读操作当读取一个数据时,先查看缓冲区中,如果该读数据在缓冲区中,则读取缓冲区中的相应数据;如果不在缓冲区中,从SDRAM中读取相应数据;(3)连续数据的读操作当读取连续数据时,首先从SDRAM中读取,同时查看缓冲区,如果有该数据的拷贝,将缓冲区中相应数据作为读取结果,否则,将SDRAM中的相应数据作为读取结果;(4)连续数据的写操作当连续数据到来时,直接写入SDRAM中,同时查看缓冲区,如果有该数据的拷贝,同时将所述连续数据写入缓冲区中,即可。2、根据权利要求1所述的一种面向写穿透cache的SDRAM读写方法,其特征在于,所述替换算法为最久未被使用算法LRU。3、根据权利要求1所述的一种面向写穿透cache的SDRAM读写方法,其特征在于,所述缓冲区的大小优选值为3行8列。全文摘要本发明涉及一种SDRAM读写方法,公开了一种面向写穿透cache的SDRAM读写方法。本发明主要是利用物理存储器SDRAM的singlewrite特性,提出写合并机制,在减少CPU访问内存数据时间的同时,以提高SDRAM访问效率,该方法适合应用于对存储器访频繁问的使用多核SoC设计的多媒体处理芯片领域。文档编号G06F12/08GK101425044SQ20081023213公开日2009年5月6日申请日期2008年11月6日优先权日2008年11月6日发明者李国辉,李宇海,梅魁志,晨赵,青郭,浩雷申请人:西安交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1