首页> 中国专利> 一种支持操作乱序执行的与非型快闪存储控制器

一种支持操作乱序执行的与非型快闪存储控制器

摘要

本发明公开了一种支持操作乱序执行的与非型快闪存储控制器,目的是提高提高访存数据吞吐率。本发明由预处理模块、保留站模块、动态调度模块和后处理模块组成,预处理模块由地址识别单元、三个多路选择器、第一数据队列组和第一逻辑或门组成;保留站模块由二个多路选择器、表项编号寄存器、有效性监听单元、相关性判断单元、基片状态设置单元、输出判断单元、控制逻辑单元和保留站表组成;动态调度模块由五个多路选择器、M个状态机、仲裁器和第二逻辑或门组成;后处理模块由比较器、第二数据队列组、一个多路选择器组成。采用本发明可以并行执行对存储芯片不同基片的访存操作,提高基片工作的并行度,有效提高访存数据吞吐率。

著录项

  • 公开/公告号CN102567246A

    专利类型发明专利

  • 公开/公告日2012-07-11

    原文格式PDF

  • 申请/专利权人 中国人民解放军国防科学技术大学;

    申请/专利号CN201110452301.4

  • 发明设计人 肖侬;赖明澈;黄立波;陈博;

    申请日2011-12-29

  • 分类号G06F13/16;

  • 代理机构国防科技大学专利服务中心;

  • 代理人郭敏

  • 地址 410073 湖南省长沙市开福区德雅路109号

  • 入库时间 2023-12-18 05:55:46

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-08-13

    授权

    授权

  • 2012-09-12

    实质审查的生效 IPC(主分类):G06F13/16 申请日:20111229

    实质审查的生效

  • 2012-07-11

    公开

    公开

说明书

技术领域

本发明涉及与非型快闪(即NAND Flash)存储芯片颗粒的存储控制器,尤其指一种支持操作乱序执行的存储控制器。 

背景技术

随着集成电路工艺的不断发展,NAND Flash存储芯片颗粒的体积每年减小40%~50%,而芯片颗粒容量每年翻一番。与此同时,NAND Flash集成电路工艺的进步,使得芯片颗粒内部组织结构从传统的单体、单基片逐步发展成为多体、多基片。例如,Micron公司的MT29H32G08GCAH2存储芯片颗粒,容量为32Gb,内部包含四个基片。四个基片之间共用I/O总线以及五根控制信号线:地址锁存信号(ALE)、命令锁存信号(CLE)、写使能信号(WE#)、读使能信号(RE#)和写保护信号(WP),但却拥有自己独立的片选信号(CE#)和忙闲信号(R/B#),利用CE#信号线可以独立选择颗粒内部的特定基片,利用R/B#信号线可以反映出颗粒内部特定基片的当前状态。 

针对NAND Flash存储芯片颗粒大容量、多体化的发展趋势,当前工业界主流的NAND Flash存储控制器并没有主动适应芯片颗粒容量和内部结构的变化进行重新设计,容易造成广大嵌入式设备、高性能I/O存储外设较低的数据吞吐率。目前工业界的NAND Flash存储控制器主要有两种结构:顺序存储控制器和解耦存储控制器。 

1.[顺序存储控制器] 

大多数NAND Flash存储控制器都是采用顺序结构,由主机寄存器、数据缓冲区,NAND控制模块组成,顺序存储控制器把芯片当成一个整体进行操作,它按照访存操作到达的先后顺序来访问存储芯片颗粒。该结构硬件逻辑简单,但发送给芯片颗粒内部不同基片的访存操作只能在时间上串行执行,无法实现颗粒内部多个基片上的访存操作并行,数据吞吐率较低。 

2.[解耦存储控制器] 

解耦存储控制器由解耦器、数据缓冲区、NAND控制模块组成,特点在于将每个访存操作的执行过程分为两个阶段(如开始阶段与结束阶段),允许针对不同基片的两个访存操作的执行时间部分重叠。如果下一个访存操作所访问的基片处于空闲状态,解耦控制器在完成当前操作开始阶段之后立刻启动下一个操作的开始阶段;否则,需要等到下一个访存操作所访问的基片状态空闲之后才开始启动下一个操作的开始阶段。解耦存储 控制器可以支持不同访存操作之间的并发执行,但一旦出现相邻访存操作之间的数据相关,便会阻塞后续访存操作的正常执行,导致了存储控制器的数据吞吐率仍然较低。 

综合上述两种NAND Flash存储控制器结构,它们数据吞吐率有限的根本原因都在于没有充分开发NAND Flash芯片颗粒内部多个基片之间的并行性。在顺序结构中,某一时刻只能有单个基片处于忙状态,最多只能发挥单基片存储芯片颗粒的访存性能;在解耦结构中,虽然多个基片可以在时间上重叠工作,但允许进入开始阶段的访存操作数量仍然有限。如何提高颗粒内部基片工作的并行度,有效提高访存数据吞吐率是本领域技术人员极为关注的技术问题。 

发明内容

本发明要解决的技术问题是针对现有NAND Flash存储控制器访问NAND Flash芯片颗粒时数据传输率较低,提出一种支持操作乱序执行的高吞吐率NAND Flash存储控制器结构,提高芯片内部基片工作的并行度,有效提高访存数据吞吐率。 

本发明放在处理器CPU和低层闪存控制模块之间,低层闪存控制模块与芯片相连,芯片为NAND Flash芯片,内部包含M个基片,M为2的正整数次幂,一般为4。本发明由预处理模块、保留站模块、动态调度模块和后处理模块组成。与本发明相连的低层闪存控制模块由背景技术中提到的M个顺序存储控制器并联而成,分别控制芯片中的M个基片。 

预处理模块与处理器、保留站模块、动态调度模块相连,内含第一数据队列组,主要功能是识别处理器发送的访存操作,访存操作包括读访存操作和写访存操作。预处理模块从处理器接收控制指令和地址指令,将控制指令、地址指令发送给保留站模块,从保留站模块接收表项编号。控制指令包含一个命令域、一个标识域和一个地址域,命令域宽度为C,C为正整数,一般为3,指明控制指令的类型,包括读指令和写指令;标识域宽度为T,T为正整数,一般为16,指明当前指令的编号;地址域宽度为32-C-T,一般为13,指明指令操作的高位物理地址。地址指令包含一个地址域,宽度为32,指明指令操作的低位物理地址。预处理模块从处理器接收写数据指令,缓存写数据指令中的数据到第一数据队列组。写数据指令包含一个数据域,宽度为32,指明要写入基片的数据。预处理模块从动态调度模块接收队列编号与读队列信号,读取第一数据队列组中的写数据,发送写数据到动态调度模块。 

保留站模块与预处理模块、动态调度模块相连,内有保留站表,保留站表由M个表项组成,每个表项由八个域构成:表项编号、控制指令、地址指令、标识、基片编号、命令相关性、基片状态、有效性。表项编号域宽度为log2M,从0开始编号。控制指令域宽度为C,指明控制指令的类型。地址指令域宽度为64-C-T,指明控制指令访存的物理 地址。标识域宽度为T,指明控制指令的编号。基片编号域宽度为log2M,指明控制指令所操作的基片。命令相关性域宽度为M,指明该表项中的控制指令与其他表项中的控制指令之间的相关性,若命令相关性域的第i位有效,i为正整数,1≤i≤M,表示当前表项中的控制指令与第i表项中的控制指令之间存在命令相关,若无效,表示不存在命令相关。基片状态域宽度为1,指明当前控制指令所操作的目标基片状态。有效性域宽度为1,指明当前表项的内容是否有效。 

保留站模块接收预处理模块发送的控制指令,将控制指令的命令域、标识域和地址域分离,命令域信息写入保留站表的控制指令域,标识域信息写入保留站表的标识域,地址域信息写入保留站表中地址指令域的高32-C-T位,发送表项编号给预处理模块。地址域的高log2M位表示控制指令操作的目标基片编号,保留站模块将地址域的高log2M位写入保留站表的基片编号域。保留站模块接收预处理模块发送的地址指令,写入保留站表中与命令域同一表项的地址指令域的低32位,接收动态调度模块发送的基片状态,写入保留站表的基片状态域。如果当前写入保留站表项的基片编号与另一(设为第i(i不等于当写表项编号))个表项的基片编号相等,则表示当前控制指令与第i个表项的控制指令具有相关性,将第i个表项的表项编号写入当前表项的命令相关性域的第i位,否则,命令相关性域为零。当保留站表项中的基片状态空闲且命令相关性为零时,保留站模块向动态调度模块发送该保留站表项中的控制指令、地址指令、标识、基片编号、表项编号。 

动态调度模块与预处理模块、保留站模块、后处理模块、低层闪存控制模块相连。动态调度模块接收并缓存保留站模块发送的控制指令、地址指令、标识、基片编号和表项编号,产生基片状态信号并发送给保留站模块,并把控制指令转换成NAND Flash芯片所识别的时序,根据控制指令的类型产生访存信号,并将访存信号发送给低层闪存控制模块。如果控制指令是写指令,动态调度模块发送读队列信号给预处理模块,将表项编号作为队列编号发送给预处理模块,读取第一数据队列组中的写数据发送给低层闪存控制模块。如果控制指令是读指令,动态调度模块从低层闪存控制模块读取从基片读出的数据发送给后处理模块,同时发送写队列信号和标识给后处理模块。 

后处理模块内含第二数据队列组,与处理器、动态调度模块相连,主要功能是缓存从基片读出的数据,将读出的数据按照读访存操作发出的顺序输出到处理器。后处理模块从动态调度模块接收M路写队列信号和读数据,将读数据写入第二数据队列组,从动态调度模块接收M路标识,从处理器接收一路标识,将从处理器接收的标识与从动态调度模块接收的M路标识一一进行比较,将相等的标识对应的第二数据队列组中的数据输出给处理器。 

预处理模块由地址识别单元、第一多路选择器、第二多路选择器、第三多路选择器、 第一数据队列组和第一逻辑或门组成。地址识别单元对外与处理器、动态调度模块相连,对内与第一多路选择器相连,第一多路选择器对外与保留站模块、对内与地址识别单元、第一数据队列组相连,第二多路选择器对外与动态调度模块相连,对内与第一数据队列组和第一逻辑或门相连,第三多路选择器对外与动态调度模块相连,对内与第一数据队列组和第一逻辑或门相连,第一数据队列组与第一多路选择器、第二多路选择器、第三多路选择器相连,第一逻辑或门对外与动态调度模块相连,对内与第二多路选择器、第三多路选择器相连。 

地址识别单元通过数据线从处理器接收控制指令、地址指令、写数据指令,通过地址线从处理器接收地址,根据地址的值识别各个指令,如果是控制指令,则将控制指令发送给命令寄存器,如果是地址指令,则将地址指令发送给地址寄存器,如果是写数据指令,则将写数据指令中的数据发送给第一多路选择器。 

第一逻辑或门接收动态调度模块发送的M路队列编号,如果某一路队列编号没有值,则该路队列编号为零,每次只有一路队列编号值不为零,对这些编号进行逻辑或运算,取出不为零的一路队列编号,发送给第二多路选择器和第三多路选择器。 

第一多路选择器是1:M多路选择器,它接收地址识别单元发送的写数据,根据从保留站模块接收的表项编号将写数据发送给第一数据队列组中编号与表项编号相同的数据队列。 

第二多路选择器是M:1多路选择器,它从动态调度模块接收M个读队列信号,从第一逻辑或门接收队列编号,根据队列编号的值i将读队列信号i(i=1,2,……M)输出到第一数据队列组中的数据队列i。 

第三多路选择器是M:1多路选择器,它接收第一数据队列组发送的M路数据和第一逻辑或门发送的队列编号,根据队列编号的值i将第i路写数据输出到动态调度模块。 

第一数据队列组由M个相同的数据队列组成,每个数据队列大小等于芯片内页面的大小。第一数据队列组一方面将第一多路选择器发送的写数据写入第一多路选择器选中的数据队列,一方面根据第二多路选择器发送的读队列信号将数据队列中的写数据发送给第三多路选择器。保留站模块由第四多路选择器、第五多路选择器、表项编号寄存器、有效性监听单元、相关性判断单元、基片状态设置单元、输出判断单元、控制逻辑单元和保留站表组成。第四多路选择器对外与预处理模块相连,对内与有效性监听单元、控制逻辑单元相连,第五多路选择器对外与预处理模块相连,对内与表项编号寄存器、控制逻辑单元相连,表项编号寄存器对外与预处理模块相连,对内与有效性监听单元、第五多路选择器相连,有效性监听单元与第四多路选择器、表项编号寄存器、控制逻辑单元相连,相关性判断单元与控制逻辑单元相连,基片状态设置单元对外与动态调度模块 相连,对内与控制逻辑单元相连,输出判断单元对外与动态调度模块相连,对内与控制逻辑单元相连,控制逻辑单元与第四多路选择器、第五多路选择器、有效性监听单元、相关性判断单元、基片状态设置单元、输出判断单元、保留站表相连,保留站表与控制逻辑单元相连。 

有效性监听单元接收控制逻辑单元发送的各个表项的有效性域值,根据有效性域的值产生保留站表中第一个空表项的表项编号,把第一个空表项的表项编号发送给第四多路选择器。控制指令写入保留站表的表项后,表项的有效性域发生由0到1的变化,有效性监听单元通过边沿检测,检测到该变化,将变化的表项编号输出到表项编号寄存器。表项编号寄存器是宽度为log2M位的寄存器,它存储有效性监听单元发来的控制指令写入的表项编号,将表项编号发送给第五多路选择器和预处理模块的第一多路选择器。 

第四多路选择器接收预处理模块发送的控制指令,根据有效性监听单元发来的保留站表第一个空表项的表项编号将控制指令发送给控制逻辑单元。第五多路选择器接收预处理模块发送的地址指令,根据表项编号寄存器中的值将地址指令发送给控制逻辑单元。 

控制逻辑单元从第四多路选择器接收控制指令,将控制指令的命令域、标识域和地址域分离,命令域信息写入保留站表中第一个空表项的控制指令域,标识域信息写入表项的标识域,地址域信息写入表项中地址指令域的高32-C-T位。地址域的高log2M位表示控制指令操作的目标基片编号,控制逻辑单元将地址域的高log2M位写入表项的基片编号域;从第五多路选择器接收地址指令,写入与控制指令同一个表项的地址指令域的低32位。控制逻辑单元将基片编号发送到相关性判断单元和基片状态设置单元,从相关性判断单元接收相关性信息,写入与控制指令同一个表项的命令相关性域,从基片状态设置单元接收基片状态信息,写入与控制指令同一个表项的基片状态域。当控制逻辑单元将基片状态写入保留站表后,发送该保留站表项的内容到输出判断单元,发送完毕后等待从输出判断单元接收表项清零信号,以将保留站表中信息已输出的表项清零。 

相关性判断单元产生各保留站表项之间的命令相关信息,将相关性信息发送给控制逻辑单元。相关性判断单元接收控制逻辑单元发送的各个表项的基片编号,判断最近写入表项j(j为正整数,1≤j≤M)的基片编号与其他表项的基片编号是否相等,如果表项k(k为正整数,1≤k≤M)的基片编号与表项j的基片编号相等,则表项j中的控制指令与表项k中的控制指令具有相关性,将表项编号k发送给控制逻辑单元,由控制逻辑单元在表项j的相关性域写入表项编号k。 

基片状态设置单元由M个寄存器组成,从动态调度模块接收M个基片的基片状态信号,缓存在M个寄存器中,从控制逻辑单元接收保留站中M个表项的基片编号,将各个基片编号分别与1、……M比较,如果相等,则将对应基片编号的基片状态信号发送给控制逻辑单元,由控制逻辑单元写入保留站表的基片状态域。 

输出判断单元是一个比较器,它接收控制逻辑单元发送的某一保留站表项的信息,判断表项的相关性域和基片状态域的值是否为零,判断表项的有效性域的值是否为一。如果保留站表项中的相关性域和基片状态域为零,且有效性域为一,输出判断单元发送该保留站表项中的控制指令、地址指令、标识、基片编号、表项编号信息给动态调度模块。信息输出后,输出判断单元发送表项清零信号给控制逻辑单元。动态调度模块由第六多路选择器、第七多路选择器、第八多路选择器、第九多路选择器、第十多路选择器、M个状态机、仲裁器和第二逻辑或门组成,状态机编号为状态机1,……状态机k,……状态机M,第六多路选择器、第七多路选择器、第八多路选择器、第九多路选择器、第十多路选择器都是1:M多路选择器,第六多路选择器、第七多路选择器、第八多路选择器、第九多路选择器对外与保留站模块相连,对内与所有的状态机相连,第十多路选择器对外与预处理模块相连,对内与所有的状态机相连,每个状态机对外与预处理模块、保留站模块、后处理模块相连,对内与第六多路选择器、第七多路选择器、第八多路选择器、第九多路选择器、第十多路选择器、仲裁器、第二逻辑或门相连,仲裁器与所有状态机相连,第二逻辑或门对外与低层闪存控制模块相连,对内与所有状态机相连。 

第六多路选择器接收保留站模块发送的控制指令和基片编号,根据基片编号的值,将控制指令发送给编号与基片编号相等的状态机。第七多路选择器接收保留站模块发送的地址指令和基片编号,将地址指令发送给编号与基片编号相等的状态机。第八多路选择器接收保留站模块发送的标识和基片编号,将标识发送给编号与基片编号相等的状态机。第九多路选择器接收保留站模块发送的表项编号和基片编号,将表项编号发送给编号与基片编号相等的状态机。第十多路选择器接收预处理模块发送的写数据和保留站模块发送的基片编号,将写数据发送给编号与基片编号相等的状态机。 

状态机k(k=1,2……,M)由7个状态组成,“000”状态表示状态机空闲,“001”状态表示等待仲裁器的应答信号,“010”状态表示分析控制指令,“011”状态表示等待数据从基片读出并写入低层闪存控制模块,“100”状态表示等待数据从低层闪存控制模块读出并写入后处理模块,“101”状态表示等待数据从预处理模块写入低层闪存控制模块,“110”状态表示等待数据从低层闪存控制模块写入基片。上电复位时,状态机处于“000”状态,从第六多路选择器、第七多路选择器、第八多路选择器、第九多路选择器接收保留站表的信息后,转移到“001”状态。状态机处于“001”状态时,向仲裁器发送请求信号,等待仲裁器分配访存信号线的使用,状态机接收到仲裁器应答信号后转移到“010”状态。状态机处于“010”状态时,向保留站模块发送基片忙状态信号,分析控制指令,生成访存信号,将访存信号输出到第二逻辑或门。分析控制指令后,如果是读指令,则转移到“011”状态,如果是写指令,则转移到“101”状态。状态机处于“011”状态时,状态机等待低层闪存控制模块将数据从基片读出并缓存在低层闪存控制模块,当数据读出完毕后,转移到“100”状态。状态机处于“100”状态时,向保留站 模块发送基片空闲状态信号,向后处理模块发送写队列信号和从保留站模块接收的标识,等待数据从低层闪存控制模块读出并写入后处理模块,当数据从低层闪存控制模块读出完毕后,状态机转移到“000”状态。状态机处于“101”状态时,等待数据从预处理模块写入低层闪存控制模块,写入完毕后,转移到“110”状态。状态机处于“110”状态时,等待数据从低层闪存控制模块写入基片,写入完毕后转移到“000”状态。 

仲裁器接收所有状态机发送的请求信号,初始情况下,从第一个状态机(即状态机1)的请求信号开始检测,如果请求信号有效,则发送应答信号给状态机1,否则,检测下一个状态机的请求信号,直到找到有效的请求信号。响应某一个状态机的请求信号后,记录状态机编号,此后再检测请求信号时,根据记录的上次使用访存信号线的状态机编号,从下一个状态机的请求信号开始检测。如果某一个状态机的请求信号一直为高,表示状态机一直占用访存信号线,此时不响应其他的请求信号,直到请求信号为低。 

第二逻辑或门接收M个状态机发送的M路访存信号,如果某一路访存信号没有值,则该路访存信号为零,由于每次仲裁器只给一个状态机分配访存信号线的使用,所以只有一路访存信号有效,对这些访存信号进行逻辑或运算,得到其中有效的一路访存信号,发送到低层闪存控制模块。 

后处理模块由比较器、第二数据队列组、第十一多路选择器组成。比较器对外与动态调度模块、处理器相连,对内与第二数据队列组、第十一多路选择器相连,第二数据队列组对外与动态调度模块相连,对内与比较器、第十一多路选择器相连,第十一多路选择器对外与处理器相连,对内与比较器、第二数据队列组相连。 

第二数据队列组的参数与组成和第一数据队列组相同,它接收动态调度模块发送的M路写队列信号和读数据,将读数据写入写队列信号有效的数据队列中,接收比较器发送的M路读队列信号,将读队列信号有效的数据队列中的数据读出发送到第十一多路选择器。 

比较器从动态调度模块接收M路标识,从处理器接收一路标识,对从处理器接收的标识与从动态调度模块接收的标识一一比较,如果第i路标识(i=1,2,……M)与从处理器接收的标识相等,则发送读队列信号i到第二数据队列组中的数据队列i,发送值为i的队列编号到第十一多路选择器。 

第十一多路选择器是M:1多路选择器,它接收第二数据队列组发送的M路读数据,接收比较器发送的值为i的队列编号,将第i路读数据发送到处理器。 

采用本发明从芯片读数据的过程是:预处理模块接收处理器发送的读访存操作,即控制指令和地址指令,并发送到保留站模块。保留站模块接收预处理模块发送的控制指令和地址指令,写入保留站表中第一个空表项,然后产生标识、命令相关性、基片编号 信息,并写入保留站表;保留站模块接收动态调度模块发送的基片状态,写入表项的基片状态域。如果表项中的信息满足输出条件,则将表项中的控制指令、地址指令、标识、表项编号、基片编号发送到动态调度模块。 

动态调度模块接收到保留站模块发送的信息,根据基片编号的值选择一个状态机接收信息,状态机向仲裁器申请使用访存信号线,得到应答后,状态机产生访存信号,发送到低层闪存控制模块,低层闪存控制模块读出基片中的数据,发送给动态调度模块,动态调度模块将读数据和标识发送给后处理模块。后处理模块接收到读数据后,缓存在第二数据队列组,然后接收处理器发送的标识,将此标识和从动态调度模块接收的标识一一比较,读出相等的标识对应的第二数据队列组中的数据。 

采用本发明对芯片进行写数据的过程是:预处理模块接收处理器发送的写访存操作,即控制指令和地址指令,并发送到保留站模块,接收处理器发送的写数据指令,将写数据缓存在第一数据队列组。保留站模块接收预处理模块发送的控制指令和地址指令,写入保留站表中第一个空表项,然后产生标识、命令相关性、基片编号信息,并写入保留站表;保留站模块接收动态调度模块发送的基片状态,写入表项的基片状态域。如果表项中的信息满足输出条件,则将表项中的控制指令、地址指令、标识、表项编号、基片编号发送到动态调度模块。动态调度模块接收到保留站模块发送的信息,根据基片编号的值选择一个状态机接收信息,状态机向仲裁器申请使用访存信号线,得到应答后,状态机产生访存信号,发送到低层闪存控制模块;状态机从预处理模块的第一数据队列组读出写数据,发送到低层闪存控制模块,由低层闪存控制模块控制将数据写入到基片。 

采用本发明可以达到以下技术效果: 

1.由于在同一时间,针对不同基片的访存操作可以并行执行,如果访存操作的目标基片处于忙状态,缓存该操作,后续到达的针对不同基片的访存操作可以继续执行,这样就使得不同基片可以并行工作,有效提高访存数据吞吐率。 

2.本发明由预处理模块负责识别指令和缓存写入基片的数据,保留站模块负责缓存指令,如果指令操作的目标基片处于忙状态,则缓存该指令,直到目标基片变成空闲状态,在此期间,后续的操作如果针对其他的基片,且该基片空闲,则该后续操作能正常执行,从而实现了操作的“乱序”执行,进一步提高了访存数据吞吐率。 

附图说明

图1是本发明的总体结构框图。 

图2是本发明中预处理模块结构示意图。 

图3是本发明中保留站模块结构示意图。 

图4是本发明中保留站内保留站表示意图。 

图5是本发明中动态调度模块结构示意图。 

图6是本发明中动态调度模块内状态机示意图。 

图7是本发明中后处理模块结构示意图。 

具体实施方式

图1是本发明的总体结构框图。 

本发明放在处理器CPU和低层闪存控制模块之间,低层闪存控制模块与芯片相连,芯片为NAND Flash芯片,内部包含M个基片,M为2的正整数次幂,一般为4。本发明由预处理模块、保留站模块、动态调度模块和后处理模块组成。与本发明相连的低层闪存控制模块由背景技术中提到的M个顺序存储控制器并联而成,分别控制芯片中的M个基片。 

预处理模块与处理器、保留站模块、动态调度模块相连,内含第一数据队列组,预处理模块从处理器接收控制指令和地址指令,将控制指令、地址指令发送给保留站模块,从保留站模块接收表项编号。预处理模块从处理器接收写数据指令,缓存写数据指令中的数据到第一数据队列组。预处理模块从动态调度模块接收队列编号与读队列信号,读取第一数据队列组中的写数据,发送写数据到动态调度模块。 

保留站模块与预处理模块、动态调度模块相连,内有保留站表。保留站模块接收预处理模块发送的控制指令,将控制指令的命令域、标识域和地址域分离,命令域信息写入保留站表的控制指令域,标识域信息写入保留站表的标识域,地址域信息写入保留站表中地址指令域的高32-C-T位,发送表项编号给预处理模块。保留站模块将地址域的高log2M位写入保留站表的基片编号域。保留站模块接收预处理模块发送的地址指令,写入保留站表中与命令域同一表项的地址指令域的低32位,接收动态调度模块发送的基片状态,写入保留站表的基片状态域。如果当前写入保留站表项的基片编号与另一(设为第i(i不等于当写表项编号))个表项的基片编号相等,则表示当前控制指令与第i个表项的控制指令具有相关性,将第i个表项的表项编号写入当前表项的命令相关性域的第i位,否则,命令相关性域为零。当保留站表项中的基片状态空闲且命令相关性为零时,保留站模块向动态调度模块发送该保留站表项中的控制指令、地址指令、标识、基片编号、表项编号。 

动态调度模块与预处理模块、保留站模块、后处理模块、低层闪存控制模块相连。动态调度模块接收并缓存保留站模块发送的控制指令、地址指令、标识、基片编号和表项编号,产生基片状态信号并发送给保留站模块,并把控制指令转换成NAND Flash芯片 所识别的时序,根据控制指令的类型产生访存信号,并将访存信号发送给低层闪存控制模块。如果控制指令是写指令,动态调度模块发送读队列信号给预处理模块,将表项编号作为队列编号发送给预处理模块,读取第一数据队列组中的写数据发送给低层闪存控制模块。如果控制指令是读指令,动态调度模块从低层闪存控制模块读取从基片读出的数据发送给后处理模块,同时发送写队列信号和标识给后处理模块。 

后处理模块内含第二数据队列组,与处理器、动态调度模块相连,主要功能是缓存从基片读出的数据,将读出的数据按照读访存操作发出的顺序输出到处理器。后处理模块从动态调度模块接收M路写队列信号和读数据,将读数据写入第二数据队列组,从动态调度模块接收M路标识,从处理器接收一路标识,将从处理器接收的标识与从动态调度模块接收的M路标识一一进行比较,将相等的标识对应的第二数据队列组中的数据输出给处理器。 

图2是本发明中预处理模块结构示意图。 

预处理模块由地址识别单元、第一多路选择器、第二多路选择器、第三多路选择器、第一数据队列组和第一逻辑或门组成。地址识别单元对外与处理器、动态调度模块相连,对内与第一多路选择器相连,第一多路选择器对外与保留站模块、对内与地址识别单元、第一数据队列组相连,第二多路选择器对外与动态调度模块相连,对内与第一数据队列组和第一逻辑或门相连,第三多路选择器对外与动态调度模块相连,对内与第一数据队列组和第一逻辑或门相连,第一数据队列组与第一多路选择器、第二多路选择器、第三多路选择器相连,第一逻辑或门对外与动态调度模块相连,对内与第二多路选择器、第三多路选择器相连。 

地址识别单元通过数据线从处理器接收控制指令、地址指令、写数据指令,通过地址线从处理器接收地址,根据地址的值识别各个指令,如果是控制指令,则将控制指令发送给命令寄存器,如果是地址指令,则将地址指令发送给地址寄存器,如果是写数据指令,则将写数据指令中的数据发送给第一多路选择器。 

第一逻辑或门接收动态调度模块发送的M路队列编号,如果某一路队列编号没有值,则该路队列编号为零,每次只有一路队列编号值不为零,对这些编号进行逻辑或运算,取出不为零的一路队列编号,发送给第二多路选择器和第三多路选择器。 

第一多路选择器是1:M多路选择器,它接收地址识别单元发送的写数据,根据从保留站模块接收的表项编号将写数据发送给第一数据队列组中编号与表项编号相同的数据队列。 

第二多路选择器是M:1多路选择器,它从动态调度模块接收M个读队列信号,从第一逻辑或门接收队列编号,根据队列编号的值i将读队列信号i(i=1,2,……M)输出 到第一数据队列组中的数据队列i。 

第三多路选择器是M:1多路选择器,它接收第一数据队列组发送的M路数据和第一逻辑或门发送的队列编号,根据队列编号的值i将第i路写数据输出到动态调度模块。 

第一数据队列组由M个相同的数据队列组成,每个数据队列大小等于芯片内页面的大小。第一数据队列组一方面将第一多路选择器发送的写数据写入第一多路选择器选中的数据队列,一方面根据第二多路选择器发送的读队列信号将数据队列中的写数据发送给第三多路选择器。 

图3是本发明中保留站模块结构示意图。 

保留站模块由第四多路选择器、第五多路选择器、表项编号寄存器、有效性监听单元、相关性判断单元、基片状态设置单元、输出判断单元、控制逻辑单元和保留站表组成。第四多路选择器对外与预处理模块相连,对内与有效性监听单元、控制逻辑单元相连,第五多路选择器对外与预处理模块相连,对内与表项编号寄存器、控制逻辑单元相连,表项编号寄存器对外与预处理模块相连,对内与有效性监听单元、第五多路选择器相连,有效性监听单元与第四多路选择器、表项编号寄存器、控制逻辑单元相连,相关性判断单元与控制逻辑单元相连,基片状态设置单元对外与动态调度模块相连,对内与控制逻辑单元相连,输出判断单元对外与动态调度模块相连,对内与控制逻辑单元相连,控制逻辑单元与第四多路选择器、第五多路选择器、有效性监听单元、相关性判断单元、基片状态设置单元、输出判断单元、保留站表相连,保留站表与控制逻辑单元相连。 

有效性监听单元接收控制逻辑单元发送的各个表项的有效性域值,根据有效性域的值产生保留站表中第一个空表项的表项编号,把第一个空表项的表项编号发送给第四多路选择器。控制指令写入保留站表的表项后,表项的有效性域发生由0到1的变化,有效性监听单元通过边沿检测,检测到该变化,将变化的表项编号输出到表项编号寄存器。表项编号寄存器是宽度为log2M位的寄存器,它存储有效性监听单元发来的控制指令写入的表项编号,将表项编号发送给第五多路选择器和预处理模块的第一多路选择器。 

第四多路选择器接收预处理模块发送的控制指令,根据有效性监听单元发来的保留站表第一个空表项的表项编号将控制指令发送给控制逻辑单元。第五多路选择器接收预处理模块发送的地址指令,根据表项编号寄存器中的值将地址指令发送给控制逻辑单元。 

控制逻辑单元从第四多路选择器接收控制指令,将控制指令的命令域、标识域和地址域分离,命令域信息写入保留站表中第一个空表项的控制指令域,标识域信息写入表项的标识域,地址域信息写入表项中地址指令域的高32-C-T位。地址域的高log2M位表示控制指令操作的目标基片编号,控制逻辑单元将地址域的高log2M位写入表项的基片编号域;从第五多路选择器接收地址指令,写入与控制指令同一个表项的地址指令域的 低32位。控制逻辑单元将基片编号发送到相关性判断单元和基片状态设置单元,从相关性判断单元接收相关性信息,写入与控制指令同一个表项的命令相关性域,从基片状态设置单元接收基片状态信息,写入与控制指令同一个表项的基片状态域。当控制逻辑单元将基片状态写入保留站表后,发送该保留站表项的内容到输出判断单元,发送完毕后等待从输出判断单元接收表项清零信号,以将保留站表中信息已输出的表项清零。 

相关性判断单元产生各保留站表项之间的命令相关信息,将相关性信息发送给控制逻辑单元。相关性判断单元接收控制逻辑单元发送的各个表项的基片编号,判断最近写入表项j(j为正整数,1≤j≤M)的基片编号与其他表项的基片编号是否相等,如果表项k(k为正整数,1≤k≤M)的基片编号与表项j的基片编号相等,则表项j中的控制指令与表项k中的控制指令具有相关性,将表项编号k发送给控制逻辑单元,由控制逻辑单元在表项j的相关性域写入表项编号k。 

基片状态设置单元由M个寄存器组成,从动态调度模块接收M个基片的基片状态信号,缓存在M个寄存器中,从控制逻辑单元接收保留站中M个表项的基片编号,将各个基片编号分别与1、……M比较,如果相等,则将对应基片编号的基片状态信号发送给控制逻辑单元,由控制逻辑单元写入保留站表的基片状态域。 

输出判断单元是一个比较器,它接收控制逻辑单元发送的某一保留站表项的信息,判断表项的相关性域和基片状态域的值是否为零,判断表项的有效性域的值是否为一。如果保留站表项中的相关性域和基片状态域为零,且有效性域为一,输出判断单元发送该保留站表项中的控制指令、地址指令、标识、基片编号、表项编号信息给动态调度模块。信息输出后,输出判断单元发送表项清零信号给控制逻辑单元。 

图4是本发明中保留站内保留站表示意图。 

保留站表由M个表项组成,每个表项由八个域构成:表项编号、控制指令、地址指令、标识、基片编号、命令相关性、基片状态、有效性。表项编号域宽度为log2M,从0开始编号。控制指令域宽度为C,指明控制指令的类型。地址指令域宽度为64-C-T,指明控制指令访存的物理地址。标识域宽度为T,指明控制指令的编号。基片编号域宽度为log2M,指明控制指令所操作的基片。命令相关性域宽度为M,指明该表项中的控制指令与其他表项中的控制指令之间的相关性,若命令相关性域的第i位有效,i为正整数,1≤i≤M,表示当前表项中的控制指令与第i表项中的控制指令之间存在命令相关,若无效,表示不存在命令相关。基片状态域宽度为1,指明当前控制指令所操作的目标基片状态。有效性域宽度为1,指明当前表项的内容是否有效。 

图5是本发明中动态调度模块结构示意图。 

动态调度模块由第六多路选择器、第七多路选择器、第八多路选择器、第九多路选 择器、第十多路选择器、M个状态机、仲裁器和第二逻辑或门组成,状态机编号为状态机1,……状态机k,……状态机M,第六多路选择器、第七多路选择器、第八多路选择器、第九多路选择器、第十多路选择器都是1:M多路选择器,第六多路选择器、第七多路选择器、第八多路选择器、第九多路选择器对外与保留站模块相连,对内与所有的状态机相连,第十多路选择器对外与预处理模块相连,对内与所有的状态机相连,每个状态机对外与预处理模块、保留站模块、后处理模块相连,对内与第六多路选择器、第七多路选择器、第八多路选择器、第九多路选择器、第十多路选择器、仲裁器、第二逻辑或门相连,仲裁器与所有状态机相连,第二逻辑或门对外与低层闪存控制模块相连,对内与所有状态机相连。 

第六多路选择器接收保留站模块发送的控制指令和基片编号,根据基片编号的值,将控制指令发送给编号与基片编号相等的状态机。第七多路选择器接收保留站模块发送的地址指令和基片编号,将地址指令发送给编号与基片编号相等的状态机。第八多路选择器接收保留站模块发送的标识和基片编号,将标识发送给编号与基片编号相等的状态机。第九多路选择器接收保留站模块发送的表项编号和基片编号,将表项编号发送给编号与基片编号相等的状态机。第十多路选择器接收预处理模块发送的写数据和保留站模块发送的基片编号,将写数据发送给编号与基片编号相等的状态机。 

仲裁器接收所有状态机发送的请求信号,初始情况下,从第一个状态机(即状态机1)的请求信号开始检测,如果请求信号有效,则发送应答信号给状态机1,否则,检测下一个状态机的请求信号,直到找到有效的请求信号。响应某一个状态机的请求信号后,记录状态机编号,此后再检测请求信号时,根据记录的上次使用访存信号线的状态机编号,从下一个状态机的请求信号开始检测。如果某一个状态机的请求信号一直为高,表示状态机一直占用访存信号线,此时不响应其他的请求信号,直到请求信号为低。 

第二逻辑或门接收M个状态机发送的M路访存信号,如果某一路访存信号没有值,则该路访存信号为零,由于每次仲裁器只给一个状态机分配访存信号线的使用,所以只有一路访存信号有效,对这些访存信号进行逻辑或运算,得到其中有效的一路访存信号,发送到低层闪存控制模块。 

图6是本发明中动态调度模块内状态机示意图。 

状态机k(k=1,2……,M)均由7个状态组成,“000”状态表示状态机空闲,“001”状态表示等待仲裁器的应答信号,“010”状态表示分析控制指令,“011”状态表示等待数据从基片读出并写入低层闪存控制模块,“100”状态表示等待数据从低层闪存控制模块读出并写入后处理模块,“101”状态表示等待数据从预处理模块写入低层闪存控制模块,“110”状态表示等待数据从低层闪存控制模块写入基片。上电复位时,状态机处于“000”状态,从第六多路选择器、第七多路选择器、第八多路选择器、第九多路选择 器接收保留站表的信息后,转移到“001”状态。状态机处于“001”状态时,向仲裁器发送请求信号,等待仲裁器分配访存信号线的使用,状态机接收到仲裁器应答信号后转移到“010”状态。状态机处于“010”状态时,向保留站模块发送基片忙状态信号,分析控制指令,生成访存信号,将访存信号输出到第二逻辑或门。分析控制指令后,如果是读指令,则转移到“011”状态,如果是写指令,则转移到“101”状态。状态机处于“011”状态时,状态机等待低层闪存控制模块将数据从基片读出并缓存在低层闪存控制模块,当数据读出完毕后,转移到“100”状态。状态机处于“100”状态时,向保留站模块发送基片空闲状态信号,向后处理模块发送写队列信号和从保留站模块接收的标识,等待数据从低层闪存控制模块读出并写入后处理模块,当数据从低层闪存控制模块读出完毕后,状态机转移到“000”状态。状态机处于“101”状态时,等待数据从预处理模块写入低层闪存控制模块,写入完毕后,转移到“110”状态。状态机处于“110”状态时,等待数据从低层闪存控制模块写入基片,写入完毕后转移到“000”状态。 

图7是本发明中后处理模块结构示意图。 

后处理模块由比较器、第二数据队列组、第十一多路选择器组成。比较器对外与动态调度模块、处理器相连,对内与第二数据队列组、第十一多路选择器相连,第二数据队列组对外与动态调度模块相连,对内与比较器、第十一多路选择器相连,第十一多路选择器对外与处理器相连,对内与比较器、第二数据队列组相连。 

第二数据队列组的参数与组成和第一数据队列组相同,它接收动态调度模块发送的M路写队列信号和读数据,将读数据写入写队列信号有效的数据队列中,接收比较器发送的M路读队列信号,将读队列信号有效的数据队列中的数据读出发送到第十一多路选择器。 

比较器从动态调度模块接收M路标识,从处理器接收一路标识,对从处理器接收的标识与从动态调度模块接收的标识一一比较,如果第i路标识(i=1,2,……M)与从处理器接收的标识相等,则发送读队列信号i到第二数据队列组中的数据队列i,发送值为i的队列编号到第十一多路选择器。 

第十一多路选择器是M:1多路选择器,它接收第二数据队列组发送的M路读数据,接收比较器发送的值为i的队列编号,将第i路读数据发送到处理器。 

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号