CN104407997B - 带有指令动态调度功能的与非型闪存单通道同步控制器 - Google Patents
带有指令动态调度功能的与非型闪存单通道同步控制器 Download PDFInfo
- Publication number
- CN104407997B CN104407997B CN201410786218.4A CN201410786218A CN104407997B CN 104407997 B CN104407997 B CN 104407997B CN 201410786218 A CN201410786218 A CN 201410786218A CN 104407997 B CN104407997 B CN 104407997B
- Authority
- CN
- China
- Prior art keywords
- instruction
- data
- module
- chip
- user
- 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
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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1636—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement using refresh
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)
- Read Only Memory (AREA)
Abstract
本发明涉及一种带有指令动态调度功能的与非型闪存单通道同步控制器。由用户接口层、指令动态调度层、控制层、物理层、数据缓存模块五个部分组成。将对与非型闪存芯片复杂的操作转换为用户端简单的指令,并最大限度地提高指令执行效率,开发对不同基片操作的并行度,提高数据读写的吞吐率,就用户而言,对底层存储阵列各种操作的控制和优化都是透明的。利用同步模式读写数据,在单通道内控制四块闪存芯片内的八个基片,采用指令动态调度功能、流水线技术,有效提高了对闪存的读写吞吐率和可扩展性。此外,本发明支持读、写、擦除、搬移四种指令,带有ECC校验模块,满足用户层的各种操作需求。
Description
技术领域
本发明涉及与非型闪存(NAND Flash)固态硬盘中一种带有指令动态调度功能的与非型闪存单通道同步控制器。
背景技术
固态硬盘(SSD)具有速度快、功耗低、体积小、掉电后数据可保护、抗震性强、工作无噪音等优点。但是和传统磁盘相比较,固态硬盘价格高和容量小的缺点,限制了其在存储领域的普及。近年来,随着闪存制造工艺水平地不断进步,与非型闪存芯片的颗粒越来越小,存储容量却变得越来越大,这直接导致了制造固态硬盘的成本不断下跌,正越来越受到市场的青睐,大有取代传统磁盘存储的趋势。
目前市场上的固态硬盘产品泛滥,种类繁多,性能上也有较大差异,而固态硬盘中的与非型闪存控制器的设计与实现是影响其读写性能的重要因素。为了适应高速大容量的存储需求,提高闪存的数据吞吐率,与非型闪存接口标准(ONFI标准)在原来异步数据传输模式的基础上,从2.0版本开始增加了同步数据传输模式,将原来异步模式下50MB/s的传输速度提高到了133MB/s。之后发布的版本中,同步模式下可支持的数据传输速度不断提高,目前最新的ONFI4.0标准,提供NV-DDR3接口,数据传输速度达到800MT/s。
但是,目前市场上主流的闪存控制器并没有针对闪存芯片颗粒容量和接口标准的变化而进行优化设计,这极大地限制了固态硬盘的读写性能。传统的控制器有顺序访存型控制器和解耦访存型控制器。顺序访存型控制器以一块芯片为单元进行操作,它按照访存操作到达的先后顺序来访问存储芯片中的基片(Target)。这种设计方式硬件逻辑简单,但发送给闪存芯片内部不同基片的访存操作只能在时间上串行执行,数据吞吐率较低。解耦访存型控制器将每个操作分解为操控阶段和忙等待阶段,允许对不同基片的访存操作的忙等待时间部分重叠。但一旦出现相邻访存操作之间有依赖相关,便会阻塞后续访存操作的正常执行。
对此,国防科技大学的陈博等人提出了一种支持操作“乱序”执行的与非型闪存控制器。这一方法对解耦访存型控制器进行了改进,允许有依赖关系的操作在等待期间,后边无依赖关系的操作能提前执行,而不无需被前者阻塞。这就使得操作的执行顺序与操作的流出顺序可能不一致,但是能保证数据读写的正确性,并提高了对一个闪存芯片内各个基片操作的并行度,从而有效提高了对闪存芯片读写吞吐率。但是这种控制器仍存在以下不足:
1、数据传输方式扔采用异步模式,这极大地限制了闪存的数据传输速度;
2、可扩展性不足。由于这种控制器只针对一个闪存芯片内部的不同基片提高并行度,而没有涉及芯片间的并行度。在实际应用中,固态硬盘普遍采用闪存阵列来扩展容量,如果使用这种控制器,闪存阵列中的芯片数每增加一倍,控制器的个数也得翻倍。而系统的物理资源比如主控芯片的引脚数,将极大的限制存储容量的扩展;
3、功能简单,可用性不足。这种控制器没有ECC校验模块,不能保证读写数据的可靠性;不支持闪存的坏块管理;在闪存转换层(FTL)中经常有的垃圾回收操作中,涉及将源物理地址的一块数据搬移到目的物理地址中,这种控制器也没有提供直接的支持。
综上所述,在固态存储容量不断变大,数据吞吐率不断提升的浪潮中,如何进一步提高控制器的可扩展性、可靠性、功能完整性和对闪存的读写吞吐率是本领域技术人员关注的热点。
发明内容
本发明所要解决的技术问题是:针对现有的与非型闪存控制器可扩展性差、可靠性不足、功能单一、对闪存的读写吞吐率低的缺点,实现了一种带有指令动态调度功能的与非型闪存单通道同步控制器(以下简称控制器)。
本发明利用同步模式读写数据,在单通道内控制四块闪存芯片内的八个基片,采用指令动态调度功能、流水线技术,有效提高了对闪存的读写吞吐率和可扩展性。此外,本发明支持读、写、擦除、搬移四种指令,带有ECC校验模块,满足用户层(比如闪存转换层)的各种操作需求。
本发明控制器位于与用户端和单通道与非型闪存存储阵列之间。用户端可以是处理器或者直接是闪存转换层,单通道与非型闪存存储阵列包括四块与非型闪存芯片中的八个基片,这八块基片共用数据总线和控制总线,片选信号和忙闲信号各自独立。本发明的作用是将对与非型闪存芯片复杂的操作转换为用户端简单的指令,并最大限度地提高指令执行效率,开发对不同基片操作的并行度,提高数据读写的吞吐率,就用户而言,对底层存储阵列各种操作的控制和优化都是透明的。本发明由用户接口层、指令动态调度层、控制层、物理层、数据缓存模块五个部分组成。用户接口层是控制器的窗口,直接用于和用户的交互,用户对控制器的操作必须符合规定的接口规范。指令动态调度层负责对用户操作指令的动态调度,实现对指令的乱序流出、乱序执行、乱序提交功能。控制层负责解析和执行指令动态调度层流出的指令,然后执行指令,将其转换为对与非型闪存芯片的相应操作。物理层负责和与非型闪存存储阵列交互,产生符合ONFI标准的与非型闪存芯片接口信号时序。数据缓存模块包括六个缓存部件,其中缓存部件一到缓存部件四为四个搬移操作专用RAM,用于对用户搬移指令从与非型闪存芯片中读出的数据进行缓存;缓存部件五为用户读操作专用RAM,负责对用户读指令从与非型闪存芯片中读出的数据进行缓存;缓存部件六为用户写操作专用FIFO,用于对用户写指令在写入闪存之前在控制器中缓存。
用户接口层是本发明提供给用户交互的窗口。用户将读、写、擦除、搬移指令发送给本发明时,必须符合规定的指令格式和接口规范。在内部,用户接口层将用户端发送的指令传递给指令动态调度层,将用户端发送的数据传递给数据缓存模块。当指令执行完成后,用户发起读回完成指令和数据,用户接口层又从反方向从指令动态调度层返回执行完的指令给用户,从数据缓存模块中取出一页(4KB)的数据返回给用户。用户接口层操作说明如下:
1、读操作:首先,用户端监听Cmd_Available信号,只有当该信号为高电平时,用户端才能给控制器发送指令,否则给出的指令将被控制器忽略。当用户监听到Cmd_Available信号拉高之后,表示控制器可以接收指令,这时,用户端给出一个时钟周期的Cmd_In_En信号,高电平有效,在这个时钟周期内同时在Cmd_In数据总线上给出128位的读指令,这时读指令就可以被控制器捕获到。
2、写操作:首先,用户端监听Cmd_Available信号,只有当该信号为高电平时,用户端才能给控制器发送指令,否则给出的指令将被控制器忽略。当用户监听到Cmd_Available信号拉高之后,表示控制器可以接收指令,这时,用户端给出一个时钟的Cmd_In_En信号,高电平有效,在这个时钟周期内同时在Cmd_In数据总线上给出128位的写指令,这时写指令就可以被控制器捕获到。此外,对于写指令,用户端还需要给控制器发送一页(4KB)的数据。发送数据时,必须在Cmd_In_En信号的下降沿到来之后再等待2个时钟周期之后,拉高Data_In_En信号,传完一页(4KB)数据之后拉低Data_In_En信号即可。在传送数据的过程中,Cmd_Available信号一直为低电平。
3、擦除操作:首先,用户端监听Cmd_Available信号,只有当该信号为高电平时,用户端才能给控制器发送指令,否则给出的指令将被控制器忽略。当用户监听到Cmd_Available信号拉高之后,表示控制器可以接收指令,这时,用户端给出一个时钟周期的Cmd_In_En信号,高电平有效,在这个时钟周期内同时在Cmd_In数据总线上给出128位的擦除指令,这时擦除指令就可以被控制器捕获到。
4、搬移操作:首先,用户端监听Cmd_Available信号,只有当该信号为高电平时,用户端才能给控制器发送指令,否则给出的指令将被控制器忽略。当用户监听到Cmd_Available信号拉高之后,表示控制器可以接收指令,这时,用户端给出一个时钟的Cmd_In_En信号,高电平有效,在这个时钟周期内同时在Cmd_In数据总线上给出128位的搬移指令,这时搬移指令就可以被控制器捕获到。
5、完成指令读回操作:对于用户的读、写指令,控制器会在执行完之后保存在完成指令队列中,用户可以取回已经执行完的读指令和写指令。当有指令执行完之后,Finished_Cmd_FIFO_Empty从高电平变为低电平,此时用户可以读回完成指令。用户读回执行完的指令的方式,和读FWFT型FIFO的方式一致。如果完成指令是读指令,则还需读回一页(4KB)数据,读数据的方式也是采用读FWFT型FIFO的方式。
指令动态调度层负责对用户操作指令的动态调度,实现对指令的乱序流出、乱序执行、乱序提交功能。该层处于用户接口层和控制层之间,对控制器的性能提升起了至关重要的作用。主要包括保留站、指令是否可接收判别模块、搬移指令管理模块、指令状态记录模块、指令依赖关系判别模块、芯片忙闲监测模块、指令流出控制模块七部分。保留站是指令动态调度层的核心部件,总共有4个条目,每个条目可以记录一条指令的相关信息。每个条目包括条目号(RS_ID)、命令类型(Cmd)、地址(Addr)、芯片号(Chip_ID)、依赖关系(Dependency)、芯片忙闲状态(Chip_State)、条目是否有效(Valid)七个域。
指令是否可接收判别模块时刻监测保留站的状态,当保留站中有空闲条目时,该模块就会告知用户接口层控制器可接收指令,同时给出保留站中准备接收用户指令的条目的条目号,如果同时有多个条目空闲,则条目号最小的优先接收指令,条目号越小,优先级越高。
搬移指令管理模块专门负责对搬移指令进行特殊处理。当用户接口层向指令动态调度层投送的指令为搬移指令时,搬移指令就会首先进入搬移指令管理模块。在该模块中,搬移指令会被分解为一个假读指令和一个假写指令。假读指令的指令标识符为100,操作地址为搬移指令中的原物理地址;假写指令的指令标识符为101,操作地址为搬移指令中的目标物理地址。在此之后,假读指令将首先进入由指令是否可接收判别模块给出的保留站中准备接收指令的条目,与此同时,搬移指令管理模块将保存假读指令进入保留站的条目号以及假写指令。当搬移指令管理模块检测到假读指令从保留站中流出之后,就会将假写指令优先送入保留站中流出的假读指令所在的条目。值得注意的是,保留站中流出的假读指令所在的条目,只能优先接收暂存在搬移指令管理模块中的假写指令。
指令状态记录模块只用于记录真读指令和真写指令的状态。由于擦除指令和搬移指令都不涉及和用户的数据交互,因此,本发明中只记录了真读指令和真写指令的状态,在执行完之后供用户读回作为后续处理。指令状态记录模块由未流出指令记录表、流出指令记录表、完成指令队列三部分组成。分别用于记录未流出的指令,流出的指令、执行完的指令。未流出指令记录表和流出指令记录表都有4个条目,和保留站中的条目一一对应,区别是,保留站中的条目通过不同的域记录指令的各种信息,而指令状态记录模块中记录的都是用户发送给控制器的原始指令副本。也就是说,未流出指令记录表和流出指令记录表中的表项都是128位,用于存放一条原始指令。完成指令队列负责缓存执行完的指令,最多可以保存16条执行完的指令,也就是说,如果用户一直不读走执行完的指令,当完成指令队列溢出之后,再有指令执行完就不能进入队列缓存了。
指令依赖关系判别模块负责确定保留站中的指令之间的依赖关系。当有新指令要进入保留站时,指令依赖关系判别模块解析出指令的目标芯片号,然后与保留站中的其他有效条目的Chip_ID域进行对比。如果相同,说明本条指令和保留站中的具有相同目标芯片号的指令都是针对同一目标芯片。由于本条指令后进入保留站,所以本条指令依赖于其他先进入保留站又具有相同目标芯片号的指令。依赖关系的记录方式是设置本条目的Dependency域,如果本条目依赖于条目N(N=1,2,3,4)中的指令,就将本条目的Dependency域的Dependency[N-1]设为1,否则设为0。当有指令流出保留站时,所有条目的Dependency域都会被刷新,依赖于流出指令的对应位都清零。值得注意的是:只有当该条指令的Dependency[3:0]=0时,该指令才可以流出。
芯片忙闲监测模块的功能是根据指令中的地址,确定对应的目标芯片的芯片号,然后将目标芯片的忙闲状态写入该指令进入的保留站条目的Chip State域。当目标芯片空闲时,该位置为1,当目标芯片忙时,该位置为0。初始化默认值为0。
指令流出控制模块负责实时监测保留站,当发现有指令满足流出条件之后就将其流出到控制层执行。流出条件有三个:条目记录有效、目标芯片空闲、指令无依赖关系,即Valid=0,且Dependency=0,且Chip_State=1。保留站的指令流出的优先级顺序是:条目1>条目2>条目3>条目4。当有指令满足流出条件,且具有能流出指令的最高优先级时,则该指令就会被流出到控制层。
控制层的作用是接收指令动态调度层流出的指令,并解析和执行指令,将其转换为对与非型闪存芯片的具体操作时序。控制层主要由四个控制单元、一个仲裁器、一个缓存选通模块、一个时钟域同步模块四部分组成。其中,每一个控制单元由指令解析执行模块、时钟域同步模块和同步控制模块、ECC校验模块四部分组成。所有的同步控制模块和ECC校验模块都工作在83M的时钟域,其余模块都工作在200M时钟域。控制单元的任务是向仲裁器申请总线控制权,当获得总线控制权后,执行相应的指令,完成对目标芯片的操作。由于四个控制单元复用数据总线和控制总线,因此仲裁器负责分配总线控制权。时钟域同步模块则用于同步200M时钟域和83M时钟域的交互信号。缓存选通模块根据仲裁器的仲裁结果,选通一个缓存与数据总线相连。
为了提高单通道内8个基片间的并行度,本发明中采用了流水线技术。由于对与非型闪存芯片的三种操作都可以划分为三个阶段。对于读操作,阶段一完成命令、地址载入,阶段二为芯片内忙等待时间,阶段三为数据载出。对于写操作,阶段一完成命令、地址和数据载入,阶段二为芯片内忙等待时间,阶段三检查操作状态。对于擦除操作,阶段一完成命令、地址载入,阶段二为芯片内忙等待时间,阶段三检查操作状态。这三种操作相同的是:阶段二都占了大部分的指令执行时间,特别是写入操作和擦除操作;此外,这部分时间纯粹是芯片内操作,无需占用数据总线和控制信号。因此,由于本架构的一个通道内有四块与非型闪存芯片,这四块闪存芯片复用数据总线和控制总线,片选信号和芯片忙闲信号独立。这种架构可以采用流水线技术,将每个操作的三个阶段解耦出来,重叠每块芯片操作的芯片内忙等待时间,利用这部分时间来腾出数据总线和控制信号给其他芯片使用,利用这种流水线技术能够大大提高总线的利用率,减小每个芯片操作的平均耗用时间,使得单通道内的数据读写速度得到极大提升。
控制单元完成了对指令解析、执行,对数据进行ECC校验的全过程。控制层中包含4个控制单元,每个控制单元对应一个目标芯片,控制单元的编号和目标芯片的编号一致。每个控制单元由指令解析执行模块、时钟域同步模块、同步控制模块、ECC校验模块四部分组成。
指令解析执行模块处于控制单元的前端,负责接收指令,并解析指令信息,向仲裁器申请总线控制权,监控指令的执行过程,在指令执行的各个阶段向同步控制模块发送控制信号。该模块主要由一个大的指令执行控制状态机构成。该指令执行控制状态机由芯片初始化过程、指令执行准备过程、读指令执行控制过程、写指令执行控制过程、擦除指令执行控制过程5个部分组成。
时钟域同步模块的作用是同步200M和83M两个时钟域之间的交互信号。任何跨时钟域信号都必须进行必要的同步处理,否则将极有可能产生亚问题而导致系统不能正常工作。亚稳态是由于寄存器的信号变化违反了建立时间(Tsu)和保持时间(Th),从而导致了寄存器的输出会在高电平和低电平之间盘旋一段时间。因此为了尽可能减少异步信号传输中由于亚稳态而导致的问题,常用的一种简单方法是在目的时钟域中采用同步寄存器链的方式将信号同步到目的时钟域,这是一种以牺牲时钟周期数来换取稳定输出的一种方法。本模块使用的是一个两级的同步寄存器链。无论是信号从200M时钟域进入83M时钟域还是从83M时钟域进入200M时钟域,本模块都在目标时钟加入了这样一个两级的同步寄存器链。
同步控制模块受到指令解析执行模块的控制,负责将提取出的指令信息翻译成对芯片具体操作的控制流。由于本设计中采用ONFI 标准的同步4模式传输数据,速度为83M/s,而同步控制模块的性能受限于数据传输的速度,为了简化操作时序的设计,将整个同步控制模块都放在了83M的时钟域中。同步控制模块主要由两对状态机组成,其中一对异步状态机为异步操作控制状态机和异步操作时序生成状态机,另一对为同步状态机,包括同步操作控制状态机和同步时序生成状态机。前一对异步状态机负责在系统上电复位后(芯片初始化后默认为异步接口),对所属控制单元对应的芯片进行复位操作,并激活同步模式4。另一对同步状态机负责控制同步模式下的操作,包括读操作、写操作和擦除操作。
ECC(Error correction code)校验模块负责对从存储阵列中读出的数据进行检错和纠错,提高数据读写的可靠性。该模块中采用了汉明码作为校验码,以512个字节为一块,生成24位(3个字节)的校验码,能够纠1位错误,检2位错误。因此对于一页4KB的数据,共有24个字节的校验码。校验码生成之后也需要和数据一起存在存储阵列中。虽然本设计中选用的与非型闪存芯片的每一页为4KB,但是从芯片的数据手册上可以发现,每一页实际上除了4KB的存储单元还预留了224个字节备用。因此,校验码的存储就正好可以利用这部分备用空间,在本设计中,将24个字节的校验信息存储在第4097个字节到第4120个字节中。
仲裁器的作用是根据循环优先级的方式分配总线占有权。任何一个控制单元要对所属的芯片进行操作,都必须先获得总线的占有权。为了最大限度地提高控制器的性能,就得保证总线的合理分配。
缓存选通模块由多个多路选择器构成,可根据仲裁器的仲裁结果,得知目前正在占用总线的控制单元,然后接收正在控制总线的控制单元发出的缓存部件号。再根据此编号选通数据缓存模块中的一个缓存部件与正在占用总线的控制单元中的同步控制模块相连。缓存选通模块中的控制信号进入同步控制模块(83M时钟域)前,先经过一个时钟同步模块进行同步处理。
数据缓存模块专门用于管理需要缓存的数据。对于真写指令,需要将用户端的一页(4KB)数据写入存储阵列的目标物理地址中,这一页(4KB)的数据在进入闪存芯片之前首先要经过数据缓存模块,在该模块里的WR_FIFO队列中先缓存起来。对于真读指令,需要将存储阵列的目标物理地址中的一页数据读到用户端,在读数据的过程中,需要将从芯片中读出的一页数据先在数据缓存模块的RD_RAM中缓存,待EEC校验和纠正之后,才能传送到用户端。对于搬移指令,数据需要从原物理地址读出,然后存入目标物理地址中,中间也需要在数据缓存模块中缓存。如果搬移指令分解出的假读指令和假写指令是从保留站的条目t中被流出的,那么搬移的一页数据将被缓存在MV_RAMt中。对于擦除指令,无需数据传递,因此也就不需要数据缓存了。该模块主要由五个4KB的RAM和一个4KB的FIFO构成。由于从存储阵列中读出的数据都要进过ECC校验模块,如果有数据出错,还需要进行纠错,这就要求缓存部件支持字节寻址,因此对于读数据的缓存本设计中采用的是RAM,而从用户端写入存储阵列的数据不需要进行纠错,因此为了操作方便,FIFO更为合适。MV_RAM1—MV_RAM4这四个RAM专门用于对搬移指令搬移的数据进行缓存。RD_RAM用于对真读指令从存储阵列中读出的一页数据进行缓存。此外,WR_FIFO用于对真写指令从用户端发送下来的一页数据进行缓存。由于控制层接口的数据是以166M/s的速度,位宽为8位的形式传输,而用户接口层的数据是以200M/s的速度,位宽为256位的形式传输。为了匹配这两种不同时钟域且不同位宽的数据传输。本设计中利用了异步FIFO来完成同步工作。
物理层是提供和外部与非型闪存存储阵列交互的物理接口。主要功能是调整控制层产生的对与非型闪存芯片操作的信号时序、根据仲裁器的结果选通一个控制模块。被选通的控制模块处于激活状态,产生的操作可以直接通过物理层转换为相应的时序和外部的存储阵列交互。物理层由选通模块和源同步数据处理模块组成。前者负责选通一个控制模块和外部非型闪存芯片交互。后者的作用包括产生符合非型闪存芯片操作的时序、处理源同步数据传输中DQS和DQX的对齐关系、在读数据时,将DQX数据总线上的DDR数据转换为两路上升沿的数据。在写操作中,参考芯片手册可以发现,DQS和DQX是中心对齐的(center-aligned)。但是选通模块出来的DQS和DQX是边沿对齐的(Edge-aligned)。因此,需要对DQS或者DQX做一定相移,使其满足芯片要求的时序。在这里,我们选择对DQS做90度的相移。在读操作中,由于闪存芯片出来的DQS 和DQX是边沿对齐的。因此,为了能精确地锁存DQX总线上的数据,同样也需要对DQS进行偏移操作,使其与DQX中心对齐。利用偏移90度后的DQS_DELAYED 对DQX上的数据进行采样就能保证正确可靠了。但是,由于DQX是DDR数据,即在DQS的上升沿和下降沿都会出数据。这里,我们还需将其分离成单边沿的两路数据Q1和Q2,分别对应DQS上升沿出的数据和下降沿出的数据。通过以上处理,Q1和Q2的数据就可以直接进入队列进行缓存了。
本发明中各个模块的组成、工作原理和流程详见附图说明。
使用本发明可以达到以下技术效果:
1、具有可靠的扩展性,在扩展容量同时仍支持最小粒度为4KB的操作。每个控制器对应一个通道,通道间具有完全的并行性。因此,可以由用户根据需要,拓展成2M(M为正整数)个通道,形成4X2M-1 的与非型闪存芯片存储阵列。
2、支持用户的读、写、擦除、搬移四种指令,除了擦除指令以块为单位,其他指令都是以页为单位。其中读指令根据特定的物理地址从相应的与非型闪存芯片中读取一页(4KB)的数据,写指令实现将用户端的4KB数据写入到特定物理地址的与非型闪存芯片中。擦除指令可以擦除给定物理地址的一个块数据。搬移操作可以将源物理地址的一页数据搬移到目的物理地址中。
3、采用流水线技术,利用各条指令执行期间在芯片忙的时间段内腾出总线给其他指令执行,来提高并行效率。因此,大大提高了指令的执行效率,提高了数据读写的吞吐率。
4、带有指令动态调度功能,支持指令乱序流出、乱序执行、乱序提交。进一步提高了通道内指令执行的并行度。
5、支持ONFI2.1标准,工作方式为同步模式4,数据传输为DDR方式,单片读写速度为166MB/s。
6 、支持SLC和MLC两种类型的与非型闪存芯片。
附图说明
图 1是本发明的总体架构图;
图2是本发明的M维扩展图;
图3是本发明所定义的针对MLC型闪存的指令格式;
图4是本发明所定义的针对SLC型闪存的指令格式;
图5是本发明中指令动态调度层的内部结构图;
图6是本发明中控制层的内部结构图;
图7是本发明中采用的芯片操作流水线技术;
图8是本发明中控制层的指令执行控制状态机;
图9是本发明中数据缓存模块的内部结构图;
图10是本发明中物理层的内部结构及外围连接图;
图11是本发明中的保留站内容;
图12是本发明中的保留站内指令操作符定义;
图13是本发明中的芯片地址与芯片号的对应关系;
图14是本发明中保留站内Dependency域中每一位对应的条目号。
具体实施方式
图 1是本发明的总体架构图,本发明位于用户端与单通道内与非型闪存芯片存储阵列之间。本发明选用的与非型闪存芯片中有四个基片,基片1和基片3共用数据总线DQX[7:0]-1和控制信号ALE-1,CLE-1,DQS-1,W/R#-1,CLK-1,WP#-1,基片2和基片4共用数据总线DQX[7:0]-2和控制信号ALE-2,CLE-2,DQS-2,W/R#-2,CLK-2,WP#-2,每一个基片都有独立的片选信号CE#和忙闲信号R/B#。本发明中,将4块芯片中的奇数位或者偶数位的8个基片作为一个存储阵列。
图2是本发明的M维扩展图。由于单通道间具有完全的并行性,因此,只要物理资源足够,用户可根据需要对本发明进行扩展,来提高存储容量和I/O吞吐率。此外,针对小文件,扩展后的系统仍然支持最小粒度为4KB的I/O操作。
图3是本发明所定义的针对MLC型闪存的指令格式。本发明支持读、写、擦除、搬移四种指令。高两位决定指令的类型,物理地址为24位。对于搬移指令,可以将源物理地址中的一页(4KB)数据搬移到目标物理地址中。完成指令只面向读写指令,如果ECC模块发现读指令所操作的目标物理地址是坏块的话,那么控制器就将原读指令的第122位设为1,表示坏块,然后再送入完成队列中等待用户读回。
图4是本发明所定义的针对SLC型闪存的指令格式。SLC型闪存的指令格式与MLC型闪存的指令格式的区别仅在于物理地址的位数少一位,为23位。其它部分相同。
图5是本发明中的指令动态调度层内部结构图。当保留站中有空闲条目时,指令是否可接收判别模块就会做出判断,给出指令可接收标志,用户监测到控制器可接收指令后,可以发送指令到控制器。指令经过用户接口层后,如果是真读或者真写指令就会被保存在未流出指令记录表中,然后提取指令中的有用信息,保存到保留站的相应条目中;如果是擦除指令,就直接提取有用信息保存在保留站的相应条目中,而无需记录在未流出指令记录表中;如果是搬移指令,则搬移指令就会在搬移指令管理模块中被分解为假读指令和假写指令,假读指令会直接进入保留站的相应条目中。假写指令会协同假读指令的条目号被暂时保存在搬移指令管理模块中,一旦假读指令流出,搬移指令管理模块中相应的假写指令就会被优先发送到保留站的同一条目中。当保留站中某个条目满足流出条件(条目记录有效、目标芯片空闲、指令无依赖关系)后,就会被指令流出控制模块流出到控制层执行。
(1)如果流出的指令为真读指令时,保留站中相应条目将被清空,处在未流出指令记录表中的指令副本就会被送入流出指令记录表中。
(2)如果流出的指令为真写指令时,保留站中的记录将暂不被清空,直到用户发送到数据缓存模块中的一页数据被控制层读走之后,保留站中真写指令相关记录才会被清空,同时,处在未流出指令记录表中的指令副本就会被送入流出指令记录表中。
(3)如果流出的指令为假读和假写指令,保留站中的相应条目将被清空。
(4)如果流出的指令为擦除指令,保留站中的相应条目将被清空。
只有,真读、真写指令才会被指令状态记录模块记录,并提供给用户读回操作。当某条真读或者真写指令执行完之后,指令动态调度层就会从指令记录模块中的流出指令记录表中取出指令副本,送入完成指令队列中去。特别地,针对真读指令,如果目标地址是坏块的话,还需置位真读指令中的坏块标志位,然后送入完成队列中去。完成指令队列中的指令都可以被用户读回。
图6是本发明中控制层的内部结构图。当指令动态调度层有指令流出到控制层后,根据流出指令的目标芯片号M(M=1,2,3,4),进入同一编号的控制单元。目标芯片号、控制单元号始终保持一致。当控制单元中的指令解析执行模块收到指令后,就对指令进行解析,同时向仲裁器申请总线控制权。仲裁器根据循环优先级的方式分配总线的控制权。当提出总线控制权的控制单元收到仲裁器的应答信号之后,开始执行指令。指令的执行采用流水线技术,大大提高了总线的利用率,和数据的吞吐率。对闪存的三种操作的执行过程都可划分为三个阶段。重要的是:阶段一和阶段三都需要占用数据总线和控制信号,阶段二纯粹是芯片内操作,无需占用数据总线和控制信号,控制单元只能等待。因此,当控制单元执行完某条指令的阶段一之后,将主动释放总线控制权,供其他控制单元使用,当阶段二的等待时间过去之后,控制单元将再次向仲裁器申请总线控制权,得到应答之后,完成阶段三的过程。至此,对于写指令和擦除指令,就已经执行结束了,控制层通知指令动态调度层该条指令已经执行完毕。但是对于读指令,还需对ECC校验的结果进行查询,如果发现没有错误位,则直接通知指令动态调度层该条指令已经执行完毕,目标地址非坏块。如果发现错了一位,就对错误位进行纠正,然后通知指令动态调度层该条指令已经执行完毕,目标地址非坏块。如果发现错误位数大于1位,就重新再读一次数据,如果还是错误位数大于1位,就通知指令动态调度层该条指令已经执行完毕,目标地址为坏块,如果错误位数变成了小于等于1位,就按前两种情况进行处理。
图8是本发明中控制层的指令执行控制状态机。该模块主要由一个大的指令执行控制状态机构成。该指令执行控制状态机由芯片初始化过程、指令执行准备过程、读指令执行控制过程、写指令执行控制过程、擦除指令执行控制过程5个部分组成。
(1)芯片初始化过程
芯片初始化过程负责在系统上电后,给本控制单元所属的与非型芯片复位并激活同步模式4,然后进入IDLE状态,等待指令进入该控制单元。在芯片初始化过程中,该模块所在的控制单元不能接收指令,直到初始化过程结束。
初始化过程的第一个状态是POWER_UP状态,也是系统上电后默认进入的初始状态。在这个状态下,指令解析执行模块向仲裁器申请总线控制权。当获得仲裁器的应答信号之后,状态机跳变到RESET状态。在这个状态下,指令解析执行模块向控制模块发送给开始复位信号。当后者完成对附属芯片的复位,并激活同步模式4后,向前者发送完成信号controller_rb_l。指令解析执行模块收到完成信号之后就释放总线控制权,并进入IDLE状态。
(2)指令执行准备过程
指令执行准备过程负责等待指令进入,在有指令进入该模块所在的控制单元后,向仲裁器申请总线控制权,并解析指令类型,根据指令的类型选择后续的处理过程,并向缓存选通模块发送需要选通的缓存编号。
3)读指令执行控制过程
读指令执行控制部分负责控制读指令的执行过程。当芯片初始化过程完成之后,或者指令执行完之后,指令解析执行模块进入IDLE状态。此时如果有读指令进入指令解析执行模块所属的控制单元,将首先被该模块捕获。然后该模块进入REQ_BUS_OCCUPATION状态,立即向仲裁器提出占用总线请求。当得到仲裁器的应答信号之后,该模块就开始解析指令,然后进入读指令执行控制过程。
读指令执行控制过程的第一个状态是RD_SNOOPING_CONTROLLER_RB,这个状态用于等待同步控制模块空闲。当同步控制模块空闲之后,状态机跳变到RD_START状态,这个状态用于向同步控制模块发送启动读操作信号。之后,状态机跳变到RD_RELEASE_BUS状态,在这个状态下,指令解析执行模块等待同步控制模块完成读操作的阶段一过程,直到同步控制模块向指令解析执行模块发送阶段一完成信号。后者收到这一信号之后就立即释放总线控制权,进入RD_SUSPEND状态,在该状态下等待同步控制模块完成读操作的阶段二过程,直到同步控制模块向指令解析执行模块发送阶段二完成信号。后者收到这一信号之后,进入RD_REQ_BUS状态,再次向仲裁器申请总线控制权。当收到仲裁器的应答信号之后,状态机进入RD_DATA_OUT状态,并向同步控制模块发送启动读操作阶段三信号,当后者完成读操作阶段三之后向同步控制模块发送完成信号,当指令解析执行模块收到该信号之后,状态机进入RD_END状态,标志着读指令执行完毕,这时还需向指令动态调度层发送读指令执行完信号。之后状态机跳转到IDLE状态,等待下一条指令进入。
(4)写指令执行控制过程
写指令执行控制部分负责控制写指令的执行过程。当芯片初始化过程完成之后,或者指令执行完之后,指令解析执行模块进入IDLE状态。此时如果有写指令进入指令解析执行模块所属的控制单元,将首先被该模块捕获。然后该模块进入REQ_BUS_OCCUPATION状态,立即向仲裁器提出占用总线请求。当得到仲裁器的应答信号之后,该模块就开始解析指令,然后进入写指令执行控制过程。
写指令执行控制过程的第一个状态是WR_SNOOPING_CONTROLLER_RB,这个状态用于等待同步控制模块空闲。当同步控制模块空闲之后,状态机跳变到WR_START状态,这个状态用于向同步控制模块发送启动写操作信号。之后,状态机进入WR_WAIT4RELEASE状态。指令解析执行模块在该状态下等待同步控制模块完成写操作阶段一过程,直到后者完成之后向前者发送完成信号。指令解析执行模块进入WR_RELEASE_BUS状态,释放总线控制权,并进入WR_SUSPEND状态,在这一状态下等待同步控制模块完成写操作阶段二过程,直到后者完成之后向前者发送完成信号。指令解析执行模块收到完成信号之后,进入WR_END状态。在这个状态下,指令解析执行模块跳过了写操作的阶段三,直接向指令动态调度层发送写指令执行完信号。因为,对于写操作,阶段三是可选的,用于检查写操作的状态,并不影响写操作的正确性,因此这里直接忽略了这一阶段。之后状态机跳转到IDLE状态,等待下一条指令进入。
(5)擦除指令执行控制过程
擦除指令执行控制部分负责控制擦除指令的执行过程。当芯片初始化过程完成之后,或者指令执行完之后,指令解析执行模块进入IDLE状态。此时如果有擦除指令进入指令解析执行模块所属的控制单元,将首先被该模块捕获。然后该模块进入REQ_BUS_OCCUPATION状态,立即向仲裁器提出占用总线请求。当得到仲裁器的应答信号之后,该模块就开始解析指令,然后进入擦除指令执行控制过程。
擦除指令执行控制过程的第一个状态是ES_SNOOPING_CONTROLLER_RB,这个状态用于等待同步控制模块空闲。当同步控制模块空闲之后,状态机跳变到ES_START状态,这个状态用于向同步控制模块发送启动擦除操作信号。之后,状态机进入ES_RELEASE_BUS状态。指令解析执行模块在该状态下等待同步控制模块完成擦除操作阶段一过程,直到后者完成之后向前者发送完成信号。指令解析执行模块进入ES_SUSPEND状态,释放总线控制权,在这一状态下等待同步控制模块完成擦除操作阶段二过程,直到后者完成之后向前者发送完成信号。指令解析执行模块收到完成信号之后,进入ES_END状态。在这个状态下,擦除指令已经执行完毕,之后状态机跳转到IDLE状态,等待下一条指令进入。
附图11是本发明中的保留站内容。保留站是指令动态调度层的核心部件,总共有4个条目。每个条目可以记录一条指令的相关信息。每个条目包括条目号(RS_ID)、命令类型(Cmd)、地址(Addr)、芯片号(Chip_ID)、依赖关系(Dependency)、芯片忙闲状态(Chip_State)、条目是否有效(Valid)七个域。RS_ID域是保留站中的记录的条目号,共有4条,分别为1-4。Cmd域记录指令的操作符,总共为3位,最高位定义为是否为搬移指令分解出来的假指令,1表示是,0表示否。真读指令指的是从用户层发起的读指令,假读指令指的是由用户层发起的搬移指令分解出的读指令。同样,真写指令是指从用户层发起的写指令,假写指令是指由用户层发起的搬移指令分解出的写指令,具体定义如附图12所示。Addr域记录目标芯片内的物理地址,即用户指令中地址字段除高两位之外的部分。如果与非型闪存芯片为MLC型,则这个域为22位,如果为SLC型,则这个域为21位。Chip_ID域记录目标芯片的芯片号,芯片号由用户指令中地址字段的高两位芯片地址决定,芯片地址与芯片号的对应关系如附图13所示。Dependency域记录本条指令在保留站中的依赖关系。该域由4位组成,每一位对应保留站中的一条记录,对应关系如附图14所示。根据本条目中的Chip_ID和保留站中其他有效条目的Chip_ID进行对比,如果有相同的,则置为1,不同则置为0,本条指令的对应位置置为0。只有当4位都为0时,表示该条指令无依赖关系,方可流出执行。例如:条目2的Dependency域为1001,则说明条目2中的指令依赖于条目1和条目4中的指令,只有当条目1和条目4的指令都流出之后,条目2中的指令才能被流出执行。每一条指令流出之后,保留站中各个条目的Dependency域都会被刷新。
Claims (8)
1.带有指令动态调度功能的与非型闪存单通道同步控制器,利用同步模式读写数据,在单通道内控制四块闪存芯片内的八个基片,其特征在于,控制器位于与用户端和单通道与非型闪存存储阵列之间,将对与非型闪存芯片复杂的操作转换为用户端简单的指令,包括用户接口层、指令动态调度层、控制层、物理层、数据缓存模块五个部分,
所述用户接口层是控制器的窗口,直接用于和用户的交互,
所述指令动态调度层负责对用户操作指令的动态调度,实现对指令的乱序流出、乱序执行、乱序提交功能,
所述控制层负责解析和执行指令动态调度层流出的指令,然后执行指令,将其转换为对与非型闪存芯片的相应操作,
所述物理层负责和与非型闪存存储阵列交互,产生符合ONFI标准的与非型闪存芯片接口信号时序,
所述数据缓存模块包括六个缓存部件,其中缓存部件一到缓存部件四为四个搬移操作专用RAM,用于对用户搬移指令从与非型闪存芯片中读出的数据进行缓存;缓存部件五为用户读操作专用RAM,负责对用户读指令从与非型闪存芯片中读出的数据进行缓存;缓存部件六为用户写操作专用FIFO,用于对用户写指令在写入闪存之前在控制器中缓存。
2.根据权利要求1所述的带有指令动态调度功能的与非型闪存单通道同步控制器,其特征在于,所述用户接口层将用户端发送的指令传递给指令动态调度层,将用户端发送的数据传递给数据缓存模块,当指令执行完成后,用户发起读回完成指令和数据,用户接口层又从反方向从指令动态调度层返回执行完的指令给用户,从数据缓存模块中取出一页的数据返回给用户,用户接口层操作说明如下:
(2.1)、读操作:首先,用户端监听Cmd_Available信号,只有当该信号为高电平时,用户端才能给控制器发送指令,否则给出的指令将被控制器忽略,当用户监听到Cmd_Available信号拉高之后,表示控制器可以接收指令,这时,用户端给出一个时钟周期的Cmd_In_En信号,高电平有效,在这个时钟周期内同时在Cmd_In数据总线上给出128位的读指令,这时读指令就可以被控制器捕获到;
(2.2)、写操作:首先,用户端监听Cmd_Available信号,只有当该信号为高电平时,用户端才能给控制器发送指令,否则给出的指令将被控制器忽略,当用户监听到Cmd_Available信号拉高之后,表示控制器可以接收指令,这时,用户端给出一个时钟的Cmd_In_En信号,高电平有效,在这个时钟周期内同时在Cmd_In数据总线上给出128位的写指令,这时写指令就可以被控制器捕获到,此外,对于写指令,用户端还需要给控制器发送一页的数据,发送数据时,必须在Cmd_In_En信号的下降沿到来之后再等待2个时钟周期之后,拉高Data_In_En信号,传完一页数据之后拉低Data_In_En信号即可,在传送数据的过程中,Cmd_Available信号一直为低电平;
(2.3)、擦除操作:首先,用户端监听Cmd_Available信号,只有当该信号为高电平时,用户端才能给控制器发送指令,否则给出的指令将被控制器忽略,当用户监听到Cmd_Available信号拉高之后,表示控制器可以接收指令,这时,用户端给出一个时钟周期的Cmd_In_En信号,高电平有效,在这个时钟周期内同时在Cmd_In数据总线上给出128位的擦除指令,这时擦除指令就可以被控制器捕获到;
(2.4)、搬移操作:首先,用户端监听Cmd_Available信号,只有当该信号为高电平时,用户端才能给控制器发送指令,否则给出的指令将被控制器忽略,当用户监听到Cmd_Available信号拉高之后,表示控制器可以接收指令,这时,用户端给出一个时钟的Cmd_In_En信号,高电平有效,在这个时钟周期内同时在Cmd_In数据总线上给出128位的搬移指令,这时搬移指令就可以被控制器捕获到;
(2.5)、完成指令读回操作:对于用户的读、写指令,控制器会在执行完之后保存在完成指令队列中,用户可以取回已经执行完的读指令和写指令,当有指令执行完之后,Finished_Cmd_FIFO_Empty从高电平变为低电平,此时用户可以读回完成指令,用户读回执行完的指令的方式,和读FWFT型FIFO的方式一致,如果完成指令是读指令,则还需读回一页数据,读数据的方式是采用读FWFT型FIFO的方式。
3.根据权利要求1所述的带有指令动态调度功能的与非型闪存单通道同步控制器,其特征在于,所述指令动态调度层处于用户接口层和控制层之间,包括保留站、指令是否可接收判别模块、搬移指令管理模块、指令状态记录模块、指令依赖关系判别模块、芯片忙闲监测模块、指令流出控制模块七部分;
所述保留站是指令动态调度层的核心部件,总共有4个条目,每个条目可以记录一条指令的相关信息,每个条目包括条目号RS_ID、命令类型Cmd、地址Addr、芯片号Chip_ID、依赖关系Dependency、芯片忙闲状态Chip_State、条目是否有效Valid七个域;
所述指令是否可接收判别模块时刻监测保留站的状态,当保留站中有空闲条目时,该模块就会告知用户接口层控制器可接收指令,同时给出保留站中准备接收用户指令的条目的条目号,如果同时有多个条目空闲,则条目号最小的优先接收指令,条目号越小,优先级越高;
所述搬移指令管理模块专门负责对搬移指令进行特殊处理,当用户接口层向指令动态调度层投送的指令为搬移指令时,搬移指令就会首先进入搬移指令管理模块,在该模块中,搬移指令被分解为一个假读指令和一个假写指令,假读指令的指令标识符为100,操作地址为搬移指令中的原物理地址;假写指令的指令标识符为101,操作地址为搬移指令中的目标物理地址,在此之后,假读指令将首先进入由指令是否可接收判别模块给出的保留站中准备接收指令的条目,与此同时,搬移指令管理模块将保存假读指令进入保留站的条目号以及假写指令,当搬移指令管理模块检测到假读指令从保留站中流出之后,就会将假写指令优先送入保留站中流出的假读指令所在的条目,值得注意的是,保留站中流出的假读指令所在的条目,只能优先接收暂存在搬移指令管理模块中的假写指令;
所述指令状态记录模块只用于记录真读指令和真写指令的状态,在执行完之后供用户读回作为后续处理,指令状态记录模块由未流出指令记录表、流出指令记录表、完成指令队列三部分组成,分别用于记录未流出的指令,流出的指令、执行完的指令,未流出指令记录表和流出指令记录表都有4个条目,和保留站中的条目一一对应,区别是,保留站中的条目通过不同的域记录指令的各种信息,而指令状态记录模块中记录的都是用户发送给控制器的原始指令副本,也就是说,未流出指令记录表和流出指令记录表中的表项都是128位,用于存放一条原始指令,完成指令队列负责缓存执行完的指令,最多可以保存16条执行完的指令,也就是说,如果用户一直不读走执行完的指令,当完成指令队列溢出之后,再有指令执行完就不能进入队列缓存了;
所述指令依赖关系判别模块负责确定保留站中的指令之间的依赖关系,当有新指令要进入保留站时,指令依赖关系判别模块解析出指令的目标芯片号,然后与保留站中的其他有效条目的Chip_ID域进行对比,如果相同,说明本条指令和保留站中的具有相同目标芯片号的指令都是针对同一目标芯片,由于本条指令后进入保留站,所以本条指令依赖于其他先进入保留站又具有相同目标芯片号的指令,依赖关系的记录方式是设置本条目的Dependency域,如果本条目依赖于条目N,N=1,2,3,4中的指令,就将本条目的Dependency域的Dependency[N-1]设为1,否则设为0,当有指令流出保留站时,所有条目的Dependency域都会被刷新,依赖于流出指令的对应位都清零,只有当该条指令的Dependency[3:0]=0时,该指令才可以流出;
所述芯片忙闲监测模块的功能是根据指令中的地址,确定对应的目标芯片的芯片号,然后将目标芯片的忙闲状态写入该指令进入的保留站条目的Chip State域,当目标芯片空闲时,该位置为1,当目标芯片忙时,该位置为0,初始化默认值为0;
所述指令流出控制模块负责实时监测保留站,当发现有指令满足流出条件之后就将其流出到控制层执行,流出条件有三个:条目记录有效、目标芯片空闲、指令无依赖关系,即Valid=0,且Dependency=0,且Chip_State=1,保留站的指令流出的优先级顺序是:条目1>条目2>条目3>条目4,当有指令满足流出条件,且具有能流出指令的最高优先级时,则该指令就会被流出到控制层。
4.根据权利要求1所述的带有指令动态调度功能的与非型闪存单通道同步控制器,其特征在于,所述控制层由四个控制单元、一个仲裁器、一个缓存选通模块、一个时钟域同步模块四部分组成,其中,每一个控制单元由指令解析执行模块、时钟域同步模块和同步控制模块、ECC校验模块四部分组成,所有的同步控制模块和ECC校验模块都工作在83M的时钟域,其余模块都工作在200M时钟域;控制单元的任务是向仲裁器申请总线控制权,当获得总线控制权后,执行相应的指令,完成对目标芯片的操作,仲裁器负责分配总线控制权,时钟域同步模块则用于同步200M时钟域和83M时钟域的交互信号,缓存选通模块根据仲裁器的仲裁结果,选通一个缓存与数据总线相连。
5.根据权利要求4所述的带有指令动态调度功能的与非型闪存单通道同步控制器,其特征在于,所述指令解析执行模块处于控制单元的前端,负责接收指令,并解析指令信息,向仲裁器申请总线控制权,监控指令的执行过程,在指令执行的各个阶段向同步控制模块发送控制信号;
所述时钟域同步模块使用一个两级的同步寄存器链,无论是信号从200M时钟域进入83M时钟域还是从83M时钟域进入200M时钟域,该模块都在目标时钟加入了这样一个两级的同步寄存器链;
所述同步控制模块受到指令解析执行模块的控制,负责将提取出的指令信息翻译成对芯片具体操作的控制流,整个同步控制模块都放在83M的时钟域中,同步控制模块由两对状态机组成,其中一对异步状态机为异步操作控制状态机和异步操作时序生成状态机,另一对为同步状态机,包括同步操作控制状态机和同步时序生成状态机,前一对异步状态机负责在系统上电复位后,对所属控制单元对应的芯片进行复位操作,另一对同步状态机负责控制同步模式下的操作,包括读操作、写操作和擦除操作;
所述ECC校验模块负责对从存储阵列中读出的数据进行检错和纠错,采用汉明码作为校验码,以512个字节为一块,生成24位的校验码,纠1位错误,检2位错误。
6.根据权利要求4所述的带有指令动态调度功能的与非型闪存单通道同步控制器,其特征在于,所述仲裁器的作用是根据循环优先级的方式分配总线占有权;
所述缓存选通模块由多个多路选择器构成,根据仲裁器的仲裁结果,得知目前正在占用总线的控制单元,然后接收正在控制总线的控制单元发出的缓存部件号,再根据此编号选通数据缓存模块中的一个缓存部件与正在占用总线的控制单元中的同步控制模块相连,缓存选通模块中的控制信号进入同步控制模块前,先经过一个时钟同步模块进行同步处理。
7.根据权利要求1所述的带有指令动态调度功能的与非型闪存单通道同步控制器,其特征在于,所述物理层是提供和外部与非型闪存存储阵列交互的物理接口,主要功能是调整控制层产生的对与非型闪存芯片操作的信号时序、根据仲裁器的结果选通一个控制模块,被选通的控制模块处于激活状态,产生的操作直接通过物理层转换为相应的时序和外部的存储阵列交互,物理层由选通模块和源同步数据处理模块组成,前者负责选通一个控制模块和外部非型闪存芯片交互,后者的作用包括产生符合非型闪存芯片操作的时序、处理源同步数据传输中DQS和DQX的对齐关系、在读数据时,将DQX数据总线上的DDR数据转换为两路上升沿的数据,在写操作中,选择对DQS做90度的相移,在读操作中,由于闪存芯片出来的DQS和DQX是边沿对齐的,为锁存DQX总线上的数据,需要对DQS进行偏移操作,使其与DQX中心对齐,利用偏移90度后的DQS_DELAYED对DQX上的数据进行采样,但是,由于DQX是DDR数据,即在DQS的上升沿和下降沿都会出数据,还需将DQX分离成单边沿的两路数据Q1和Q2,分别对应DQS上升沿出的数据和下降沿出的数据,通过以上处理,Q1和Q2的数据就直接进入队列进行缓存。
8.根据权利要求1所述的带有指令动态调度功能的与非型闪存单通道同步控制器,其特征在于,所述数据缓存模块管理需要缓存的数据,对于真写指令,需要将用户端的一页数据写入存储阵列的目标物理地址中,这一页的数据在进入闪存芯片之前首先要经过数据缓存模块,在该模块里的WR_FIFO队列中先缓存起来,对于真读指令,将存储阵列的目标物理地址中的一页数据读到用户端,在读数据的过程中,将从芯片中读出的一页数据先在数据缓存模块的RD_RAM中缓存,待EEC校验和纠正之后,才能传送到用户端,对于搬移指令,数据从原物理地址读出,然后存入目标物理地址中,中间要在数据缓存模块中缓存,如果搬移指令分解出的假读指令和假写指令是从保留站的条目t中被流出的,那么搬移的一页数据将被缓存在MV_RAMt中,对于擦除指令,无需数据缓存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410786218.4A CN104407997B (zh) | 2014-12-18 | 2014-12-18 | 带有指令动态调度功能的与非型闪存单通道同步控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410786218.4A CN104407997B (zh) | 2014-12-18 | 2014-12-18 | 带有指令动态调度功能的与非型闪存单通道同步控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104407997A CN104407997A (zh) | 2015-03-11 |
CN104407997B true CN104407997B (zh) | 2017-09-19 |
Family
ID=52645630
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410786218.4A Active CN104407997B (zh) | 2014-12-18 | 2014-12-18 | 带有指令动态调度功能的与非型闪存单通道同步控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104407997B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2539410B (en) * | 2015-06-15 | 2017-12-06 | Bluwireless Tech Ltd | Data processing |
CN105892944B (zh) * | 2016-03-30 | 2019-11-12 | 深圳忆联信息系统有限公司 | 一种信息处理方法及电子设备 |
CN111651203B (zh) | 2016-04-26 | 2024-05-07 | 中科寒武纪科技股份有限公司 | 一种用于执行向量四则运算的装置和方法 |
CN111651204B (zh) * | 2016-04-26 | 2024-04-05 | 中科寒武纪科技股份有限公司 | 一种用于执行向量最大值最小值运算的装置和方法 |
WO2017201693A1 (zh) * | 2016-05-25 | 2017-11-30 | 华为技术有限公司 | 内存访问指令的调度方法、装置及计算机系统 |
CN108139993B (zh) * | 2016-08-29 | 2020-06-16 | 华为技术有限公司 | 内存装置、内存控制器、数据缓存装置及计算机系统 |
CN108156823B (zh) * | 2016-08-31 | 2020-04-14 | 华为技术有限公司 | 一种闪存介质的访问方法及控制器 |
CN108009101A (zh) * | 2017-11-30 | 2018-05-08 | 郑州云海信息技术有限公司 | 一种固态硬盘异常掉电处理方法、系统、介质及设备 |
CN108182158A (zh) * | 2018-01-12 | 2018-06-19 | 江苏华存电子科技有限公司 | 一种应用在存储系统中的任务调度优化方法 |
CN109144420B (zh) * | 2018-08-22 | 2021-07-13 | 深圳忆联信息系统有限公司 | 多颗粒自适应初始化方法、装置、计算机设备及存储介质 |
CN109614046A (zh) * | 2018-12-09 | 2019-04-12 | 江苏华存电子科技有限公司 | 一种用以连续快速产生闪存接口讯号序列的方法 |
CN110109509B (zh) * | 2019-03-27 | 2021-03-02 | 北京比特大陆科技有限公司 | 延迟校正方法、电路、装置、设备及计算机可读存储介质 |
CN112800000B (zh) * | 2019-11-14 | 2023-07-18 | 海思光电子有限公司 | 一种电路以及电子设备 |
US11269555B2 (en) | 2020-06-22 | 2022-03-08 | Sandisk Technologies Llc | System idle time reduction methods and apparatus |
CN112948322B (zh) * | 2021-02-26 | 2023-05-16 | 西安微电子技术研究所 | 一种基于弹性缓存的虚通道及实现方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7036064B1 (en) * | 2000-11-13 | 2006-04-25 | Omar Kebichi | Synchronization point across different memory BIST controllers |
CN102567246A (zh) * | 2011-12-29 | 2012-07-11 | 中国人民解放军国防科学技术大学 | 一种支持操作乱序执行的与非型快闪存储控制器 |
CN103455283A (zh) * | 2013-08-19 | 2013-12-18 | 华中科技大学 | 一种混合存储系统 |
CN103778013A (zh) * | 2014-01-24 | 2014-05-07 | 中国科学院空间应用工程与技术中心 | 一种多通道Nand Flash控制器及其控制方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8005995B2 (en) * | 2007-08-16 | 2011-08-23 | Micron Technology, Inc. | Command interface systems and methods |
-
2014
- 2014-12-18 CN CN201410786218.4A patent/CN104407997B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7036064B1 (en) * | 2000-11-13 | 2006-04-25 | Omar Kebichi | Synchronization point across different memory BIST controllers |
CN102567246A (zh) * | 2011-12-29 | 2012-07-11 | 中国人民解放军国防科学技术大学 | 一种支持操作乱序执行的与非型快闪存储控制器 |
CN103455283A (zh) * | 2013-08-19 | 2013-12-18 | 华中科技大学 | 一种混合存储系统 |
CN103778013A (zh) * | 2014-01-24 | 2014-05-07 | 中国科学院空间应用工程与技术中心 | 一种多通道Nand Flash控制器及其控制方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104407997A (zh) | 2015-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104407997B (zh) | 带有指令动态调度功能的与非型闪存单通道同步控制器 | |
US10297340B2 (en) | Switched interface stacked-die memory architecture | |
CN103593306A (zh) | 一种协议处理器Cache控制单元的设计方法 | |
US20060294295A1 (en) | DRAM chip device well-communicated with flash memory chip and multi-chip package comprising such a device | |
JP2016520233A (ja) | メモリシステム、メモリアクセス要求を処理するための方法、およびコンピュータシステム | |
CN102446159B (zh) | 多核处理器的数据管理方法及装置 | |
CN103246625B (zh) | 一种数据与地址共用引脚自适应调整访存粒度的方法 | |
CN101770817A (zh) | 基于fpga的多接口存储器验证系统 | |
CN101740102A (zh) | 一种多通道闪存芯片阵列结构及其写入和读出方法 | |
CN106951488A (zh) | 一种日志记录方法和装置 | |
CN101706760B (zh) | 矩阵转置自动控制电路系统及矩阵转置方法 | |
CN113641603A (zh) | 一种基于axi协议的ddr仲裁与调度方法及系统 | |
CN101887753A (zh) | 异构存储系统及其使用的高速缓存优化方法 | |
CN108701085A (zh) | 用于固态装置的多个地址寄存器的设备及方法 | |
KR20110066526A (ko) | 다중포트 메모리 콘트롤러 및 다중포트 캐시 | |
US8374040B2 (en) | Write bandwidth in a memory characterized by a variable write time | |
US11379388B1 (en) | Credit scheme for multi-queue memory controllers | |
JP2004310749A (ja) | 分散型メモリを有するデータ処理システムにおいてバストレーシングを行うための方法および装置 | |
CN102591814A (zh) | 支持多bank访问模式的dram访问控制装置和控制方法 | |
CN111143260B (zh) | 一种ssd主控中的raid通路切换装置 | |
Babaie et al. | TDRAM: Tag-enhanced DRAM for Efficient Caching | |
Jin et al. | Prototype implementation and evaluation of a multibank embedded memory architecture in programmable logic | |
Zheng et al. | Design of a dynamic memory access scheduler | |
CN118051191A (zh) | 一种支持参数化和并行访问的非易失存储器电路、装置 | |
CN115328832A (zh) | 一种基于pcie dma的数据调度系统与方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |