一种高效读取的串行Flash缓冲器控制电路制造技术

技术编号:7485595 阅读:253 留言:0更新日期:2012-07-09 11:20
一种高效读取的串行Flash缓冲器控制电路,包括缓冲器模块,用于Flash数据的预读取和缓存,所述控制电路还包括:地址命中算法逻辑模块,用于判断处理器访问的数据是否存在于缓冲器模块内;数据有效算法逻辑模块,用于判断缓冲器模块中数据是否有效。采用本发明专利技术的技术方案后,解决传统串行Flash访问效率不高,难以直接运行代码的问题,且节省了RAM和Pad额外的开销,从而降低了芯片设计成本。

【技术实现步骤摘要】

本专利技术涉及于一种闪存控制技术,尤其是一种用于高速读取数据或直接运行代码的串行Flash缓冲器控制电路。
技术介绍
在现有系统设计中,存储控制方案是必须考虑的部分。传统的SRAM技术访问速度可以达到非常高的水平,但问题是数据没办法保存下来,一旦断电所有数据都将丢失。对于一个稳定成熟的系统来说,数据(代码)的保存是必须的。解决这个问题的技术目前基本有两种,一种是ROM技术,一种是Flash技术。ROM能很好的保存代码,而且访问速率也很高,但存在一个缺点,对于那些只能烧写一次的ROM,代码一旦烧写就不能再修改。另一种是 Flash技术,它很好的解决了在线擦写的需求,而且并行Flash的访问速率相当快了,但随着现代芯片工艺尺寸的急速减小,65nm、40nm已经变得很常见了,20nm、15nm也开始面市, 而Flash制造工艺却跟不上芯片小尺寸工艺的需求,导致Flash没法随晶片集成在一起。如果采用片外并行Flash,那将导致芯片必须提供大量用于访问并行Flash的I^ad,对于低功耗小面积的设计,往往其Pad数量会超过芯片所有其它Pad之和,这是系统设计者难以接受的;如果采用片外串行Flash,虽然Pad的数量可以减下来,但访问速率遇到了瓶颈,因为一般这种串行接口(经常是SPI)受其本身协议限制和串行的原因,通讯效率非常低,不适合代码的直接运行。
技术实现思路
本专利技术的目的是提供一种能够在串行Flash上直接运行代码的高效率的缓存器控制电路,解决传统串行Flash访问效率不高,难以直接运行代码的问题。本专利技术提供一种高效读取的串行Flash缓冲器控制电路包括缓冲器模块,用于 Flash数据的预读取和缓存,所述控制电路还包括地址命中算法逻辑模块,用于判断处理器访问的数据是否存在于缓冲器模块内;数据有效算法逻辑模块,用于判断缓冲器模块中数据是否有效。更进一步,所述缓冲器控制电路,还有一个用于对串行Flash进行连续读操作的访问控制电路模块。更进一步,所述缓冲器模块中每个字节单元具有相应的数据有效标志位。更进一步,所述地址命中算法逻辑模块包括地址实命中算法和地址虚命中算法。更进一步,所述数据有效算法逻辑模块用于计算数据是否有效,并写入所述数据有效标志位。更进一步,所述串行Flash缓冲器控制电路所在地址被所述处理器设为Cache工作区。更进一步,所述缓冲器模块从所述串行Flash连续预读取和缓存数据后,所述处理器向所述串行Flash缓冲器控制电路发起读操作,首先由所述地址命中算法逻辑模块中所述地址实命中算法判断所述读操作需要的数据是否实命中,是则直接从所述缓冲器模块读取数据,完成所述读操作;否则,继续由所述地址虚命中算法判断所述读操作需要的数据是否虚命中,是则等待数据有效后即返回,否则由所述缓冲器模块从所述串行Flash连续读取并返回所述处理器,由所述数据有效算法逻辑模块对所述缓冲器模块中数据进行有效性判断和标记。采用本专利技术的技术方案后,解决传统串行Flash访问效率不高,难以直接运行代码的问题,且节省了 RAM和Pad额外的开销,从而降低了芯片设计成本。附图说明图1是本专利技术实施例的结构示意图;图2是本专利技术实施例中缓冲器模块结构示意图; 图3是本专利技术实施例读取操作流程图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。图1是本专利技术实施例的结构示意图,在本实施中,串行Flash缓冲器控制电路包括,地址命中算法逻辑模块101,用于判断处理器访问的数据是否存在于缓冲器模块内; 数据有效算法逻辑模块102,用于判断缓冲器模块中数据是否有效;缓冲器模块103,用于 Flash数据的预读取和缓存;缓冲器模块到串行Flash的访问控制电路104,用于对串行 Flash进行连续读操作。图2是本专利技术实施例中缓冲器模块结构示意图,在本实施中,缓冲器模块103除存储数据的字节单元201外,每个字节单元还配备了一个数据有效标志位202。目前的系统大部分的地址空间是按字节来计算的,为了方便起见,这里假设最小系统中所用的处理器使用了大小为N (2的整数次幂)字节一行的Cache,则对应的缓冲器模块大小是N字节,也就最多拥有N个字节地址。最简单的情况是,缓冲器模块103内的N个地址都是连续的,那缓冲器模块103需要记录的初始地址就只有一个;而最极端的情况,缓冲器模块103内的N 个地址都是随机的,这样就需要记录N个初始地址。地址命中算法逻辑模块包括地址实命中算法和地址虚命中算法两部分,前者是以缓冲器模块的N个字节地址为依据判断当前总线访问索取的数据是否存在于缓冲器模块内的,后者是以已经发起的串行Flash访问操作的地址范围与当前总线访问地址相比较而进行命中判断。地址实命中算法的具体实现是如果总线所发地址与其长度所确定的地址范围(例如按字对齐的总线访问实际有4个连续的字节地址)可以被包括在这N个字节地址内,则称为地址全实命中;如果只有部分被包括,则称为地址部分实命中;如果全部不被包括,则称为地址未实命中。虚命中算法是在地址部分实命中和地址未实命中两种情况下对未实命中现象的补充判断,如果地址全实命中,则不触发虚命中算法,否则启动虚命中算法。虚命中算法的具体实现是如果当前总线访问地址或一个地址范围虽然不能被包括在缓冲器模块内,但如果可以被全部包括在已经发起的串行Flash读操作的地址范围内,则称为地址全虚命中;如果部分被包括,则称为地址部分虚命中;如果全部不被包括,则称为地址未虚命中。根据地址命中算法逻辑模块给出的判断结果,Flash控制器会以相应的方式工作。 如果把实命中和虚命中判断结果组合起来,当前总线访问地址范围就可以分成实命中部分、虚命中部分和未命中部分。对于实命中部分,则不需要访问串行Flash,数据从缓冲器模块中直接获取,可以达到很快的速度;对于虚命中部分,只需要等待相应数据有效(数据有效算法将在后面详述)后即可返回;对于未命中部分,数据需要从串行Flash中读取,所花费时间跟SPI读操作周期数相关。如果当前总线访问前有已经发起但未完成的串行Flash 访问操作,则根据是否影响当前访问来选择终止与否。终止该串行Flash访问操作的充分条件是,虚命中部分访问已经完成且该操作会覆盖实命中部分缓存区的数据。由于SPI从串行Flash读取单个字节的数据需要较多的周期数,因此为了提高访问效率,应当尽可能的减少这种只取单个字节的SPI操作。基于这种思路,本串行Flash缓冲器控制电路结合处理器的行缓存工作特性,实现了一个从缓冲器模块到串行Flash的访问控制电路,让每次发起的对串行Flash的操作转变成某一长度的连续读操作,具体长度根据具体需求和当前缓存状况来定。这样通过连续读操作就提高了 SPI访问的平均速率, 同时预取的数据缓存在缓冲器模块内,可以为下次的总线读操作提供无需等待即时返回的数据。特别的,这种已发起的连续预取操作是可以在数据返回阶段被终止的,即,如果当前的预取操作的返回数据阶段还没有完成时,再次发生了地址未命中,则当前预取操作将会被立即终止,并发起访问新地址的下一轮操作。由于本串行Flash本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:吴加兴
申请(专利权)人:东莞市泰斗微电子科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术