一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

存储系统的制作方法

2022-03-16 02:31:05 来源:中国专利 TAG:

存储系统
1.关联申请
2.本技术享受以日本专利申请2020-153869号(申请日:2020年9月14日)作为在先申请的优先权。本技术通过参照该在先申请而包含在先申请的全部内容。
技术领域
3.本实施方式涉及存储系统。


背景技术:

4.已知具备存储单元阵列的存储芯片、和对存储芯片进行数据的输入输出的控制器的存储系统。在这样的存储系统中,期望能够尽可能加快从存储芯片向控制器的数据的传送速度。


技术实现要素:

5.一个实施方式提供一种能够提高从存储芯片向存储控制器的数据的传送速度的存储系统。
6.根据一个实施方式,具备存储芯片、多个缓冲器、以及控制器。存储芯片包含:第1面、和第2面。第1面包含:数据以第1大小为单位被读取的第1存储区域、和能够保存第1大小的数据的第1数据锁存器。第2面包含:数据以第1大小为单位被读取的第2存储区域、和能够保存第1大小的数据的第2数据锁存器。多个缓冲器各自能够保存第1大小的数据。控制器包含纠错电路。控制器,在比第1大小小的第2大小的第1数据跨第1存储区域和第2存储区域保存的情况下,使存储芯片将作为包含第1存储区域所保存的第1数据的第1片段的第1大小的数据的第2数据保存于第1数据锁存器。而且,控制器使存储芯片将作为包含第2存储区域所保存的第1数据的第2片段的第1大小的数据的第3数据保存于第2数据锁存器。而且,控制器使存储芯片输出第1数据锁存器所保存的第2数据,将从存储芯片输出的第2数据保存于作为多个缓冲器之中的1个缓冲器的第1缓冲器。而且,控制器使存储芯片输出第2数据锁存器所保存的第3数据,将从存储芯片输出的第3数据保存于作为多个缓冲器之中的与第1缓冲器不同的1个缓冲器的第2缓冲器。而且,控制器将第1缓冲器所保存的第2数据之中的第1片段、和第2缓冲器所保存的第3数据之中的第2片段结合而生成第4数据,将第4数据向纠错电路输入。
附图说明
7.图1是表示与主机连接的实施方式的存储系统的构成例的图。
8.图2是表示实施方式的存储芯片的构成的一例的示意图。
9.图3是表示实施方式的块的电路构成的图。
10.图4是表示实施方式的数据编码(coding)与阈值电压分布的一例的图。
11.图5是表示实施方式的读动作时在nandc与存储芯片之间收发的信号的一例的时
序图(时间图:timing chart)。
12.图6是用于说明在簇传送模式以及页传送模式的每一个中在实施方式的io信号线上传送的信号的不同的图。
13.图7是表示在采用了码率(code rate)可变的纠错码的实施方式的存储系统中,各面所保存的簇的位置的示意图。
14.图8是表示实施方式的ram所保存的信息的一例的示意图。
15.图9是表示实施方式的nandc的构成的一例的示意图。
16.图10是表示实施方式的存储系统的读动作的一例的流程图。
17.图11是表示执行在判定为保存了对象的簇的数据锁存器不存在的情况下所发行的第2读取指示的动作的一例的图。
18.图12是表示执行在判定为保存了对象的簇的数据锁存器存在的情况下所发行的第2读取指示的动作的一例的图。
19.图13是表示执行在判定为保存了对象的簇的数据锁存器存在的情况下所发行的第2读取指示的动作的其他一例的图。
20.图14是表示执行在判定为将对象的簇的读取模式设定为随机读取的情况下所发行的第2读取指示的动作的一例的图。
21.图15是用于说明实施方式的等候缓冲器组的管理方法的图。
22.图16是表示实施方式的等候缓冲器组以及随机缓冲器的动作的一例的流程图。
23.图17是用于说明在实施方式的1个存储芯片中使2个面并行进行动作的例子的图。
具体实施方式
24.以下,参照附图,详细说明实施方式的存储系统。此外,并不通过该实施方式来限定本发明。
25.(实施方式)
26.图1是表示与主机连接的实施方式的存储系统的构成例的图。如图1所示,存储系统1能够与主机2连接。主机2例如是服务器、个人计算机、或移动型终端的这样的信息处理装置。存储系统1作为主机2的外部存储装置发挥功能。主机2能够对存储系统1发送读请求或写请求等访问请求。
27.存储系统1具备1个以上的存储芯片21、以及存储控制器10。各存储芯片21例如是nand型闪存,能够非易失性地存储数据。根据图1所示的例子,存储系统1具备8个存储芯片21。有时将该8个存储芯片21的组标记为nand存储器20。此外,存储系统1所具备的存储芯片21的数并不限定为8个。
28.存储系统1具备1个以上的通道(channel)。根据图1所示的例子,存储系统1具备通道0(ch.0)以及通道1(ch.1)合计2个通道。而且,各通道的一端与存储控制器10连接。
29.另外,在通道0共同连接有4个存储芯片21。在通道1共同连接有与通道0所连接的4个存储芯片21不同的4个存储芯片21。存储控制器10能够对通道0所连接的4个存储芯片21、和通道1所连接的4个存储芯片21进行彼此独立地控制。
30.存储控制器10执行主机2与nand存储器20之间的数据传送。作为用于此目的的构成,存储控制器10具备:cpu(central processing unit)11、主机接口(主机i/f)12、ram
(random access memory)13、以及1个以上的nand控制器(nandc)14。在此作为一例,存储控制器10具备与通道数相同数量、也即是2个nandc14。
31.主机i/f12是经由遵循了例如sata(serial advanced technology attachment:串行高级技术附件)标准、sas(serial attached scsi:串行连接的scsi)标准、或pci(peripheral components interconnect:外围组件互连)express(注册商标)标准的总线与主机2连接的电路。主机i/f12掌管存储控制器10与主机2的通信。
32.ram13能够暂时存储各种信息。ram13能作为将cpu11为了管理存储系统1的控制而使用的各种管理信息以及固件程序进行加载(load)的区域而被使用。另外,ram13能够作为队列、缓冲器(buffer),或高速缓存(cache)而被使用。此外,ram13的种类并不限定于特定的种类。存储控制器10能具备dram(dynamic random access memory:动态随机访问存储器)、sram(static random access memory:静态随机访问存储器)、或它们的组合。另外,存储控制器10能取代ram13而具备任意的易失性存储器。关于ram13所保存的信息等稍后进行说明。
33.2个nandc14中的一个与通道0连接,2个nandc14中的另一个与通道1连接。
34.各通道是包含芯片使能(chip enable)信号线cen、命令锁存器使能(command latch enable)信号线cle、地址锁存器使能(address latch enable)信号线ale、写入使能信号线wen、一对读取使能信号线re/ren、一对选通(strobe)信号线dqs/dqsn、io信号线dq[7:0]、以及就绪/忙(ready/busy)信号线r/bn等的信号线组。芯片使能信号线cen是传送芯片使能信号cen的信号线。芯片使能信号cen是用于将成为访问对象的存储芯片cp设为使能状态的信号。io信号线dq[7:0]是传送命令、地址、数据等的信号线。在此,io信号线dq设为具有8比特的比特宽度,但是io信号线dq的比特宽度并不限定于此。命令锁存器使能信号线cle是传送命令锁存器使能信号cle的信号线。命令锁存器使能信号cle表示在io信号线dq[7:0]上传送的信号是命令这一情况。地址锁存器使能信号线ale是传送地址锁存器使能信号ale的信号线。地址锁存器使能信号ale表示在io信号线dq[7:0]上传送的信号是地址这一情况。写入使能信号线wen是传送写入使能信号wen的信号线。写入使能信号wen指示存储芯片cp引入由io信号线dq[7:0]发送的命令或地址。一对读取使能信号线re/ren是传送读取使能信号re/ren的信号线对。读取使能信号re/ren在存储控制器10从存储芯片21读出数据时指示数据的输出定时(timing)。一对选通(strobe)信号线dqs/dqsn是传送选通信号dqs/dqsn的信号线对。选通信号dqs/dqsn在存储芯片21向存储控制器10传送数据时,指示存储芯片21向存储控制器10引入数据的定时。就绪/忙信号线r/bn是用于传送就绪/忙信号r/bn的信号线。就绪/忙信号r/bn向存储控制器10表示:存储芯片21处于能够进行命令的输入的就绪状态还是处于无法进行命令的输入的忙状态。此外,构成各通道的信号线并不限定于此。
[0035]
各nandc14掌管经由自身所连接的通道而连接的4个存储芯片21与存储控制器10的通信。具体而言,各nandc能够对4个存储芯片21的每一个发送命令集、收发数据。各nandc14对4个存储芯片21的每一个发送的命令集的例子稍后说明。
[0036]
cpu11基于固件程序(firmware program),控制主机i/f12、ram13、以及nandc14,由此,执行包含主机2与nand存储器20之间的数据传送的存储系统1的控制。
[0037]
例如,固件程序预先保存于存储系统1内的预定位置,在一例中为任意的存储芯片
21。存储系统1启动(startup)时,cpu11将该固件程序从该存储芯片21向ram13加载(load)。而且,cpu11按照加载到ram13的该固件程序,执行存储系统1的控制。此外,固件程序被预先保存的位置并不限定于上述例子。另外,固件程序的加载目的地并不限定于上述例。
[0038]
此外,存储控制器10能构成为例如soc(system-on-a-chip:片上系统)。存储控制器10也可以构成为fpga(field-programmable gate array:现场可编程门阵列)和/或asic(application specific integrated circuit:专用集成电路)。存储控制器10也可以由多个芯片构成。存储控制器10的各功能能够通过软件、硬件、或它们的组合而实现。
[0039]
图2是表示实施方式的存储芯片21的构成的一例的示意图。根据本图所示的例子,存储芯片21具备:被分割为2个子阵列23的存储单元阵列22、2个访问电路24、以及2个数据锁存器25。各子阵列23与2个访问电路24之中的1个以及2个数据锁存器25之中的1个一同构成1个并行动作要素。也就是说,存储芯片21具备2个并行动作要素。2个并行动作要素能够彼此独立地进行动作。各并行动作要素被称为面(plane)。各存储芯片21内的各面由面编号识别。
[0040]
访问电路24以及数据锁存器25按每个面而被设置,由此在2个面的每一个中,写入、读取、以及擦除(erase)能够对各子阵列23独立地执行。
[0041]
在此,使用面编号0将各存储芯片21具备的2个面之中的1个标记为面#0(plane#0)。另外,使用面编号1将各存储芯片21具备的2个面之中的另一面标记为面#1(plane#1)。
[0042]
此外,各存储芯片21具备的面的数量并不限定于2个。
[0043]
各子阵列23具备多个块blk。块blk是执行擦除的最小单位的存储区域。也就是说,1个块blk所保存的全部数据被一并擦除。
[0044]
访问电路24包含:行解码器、列解码器、以及读出放大器(sense amplifier)等。访问电路24能够对与自身属于相同面的子阵列23执行写入、读取、以及擦除。
[0045]
此外,将访问电路24将从存储控制器10送来的数据向子阵列23写入的动作标记为写动作。另外,将访问电路24从子阵列23读取数据而向存储控制器10发送的动作标记为读动作。另外,将访问电路24擦除子阵列23内的数据的动作标记为擦除动作。
[0046]
数据锁存器25是暂时保存写入到与自身属于相同面的子阵列23的数据以及从与自身相同的子阵列23读取出的数据的存储元件组。在各面中,访问电路24将从存储控制器10发送来而保存到了数据锁存器25的写入对象的数据向子阵列23写入、将从子阵列23读取出的数据向数据锁存器25保存。数据锁存器25所保存的、从子阵列23读取出的数据按照之后从存储控制器10接收的预定的命令集(后述的数据输出命令集)传送至存储控制器10。
[0047]
将读动作之中的、从子阵列23向数据锁存器25读出数据的处理标记为读出(sense)处理。另外,将读动作之中的从数据锁存器25向存储控制器10传送数据的处理标记为数据输出(data out)处理。
[0048]
图3是表示实施方式的块blk的电路构成的图。此外,各块blk具有同一构成。块blk例如具有4个串单元su0~su3。各串单元su包含多个nand串26。
[0049]
nand串26的每一个例如包含14个存储单元晶体管mt(mt0~mt13)以及选择晶体管st1、st2。存储单元晶体管mt具备控制栅和电荷蓄积层,非易失性地保持数据。而且,14个存储单元晶体管mt(mt0~mt13)在选择晶体管st1的源极和选择晶体管st2的漏极之间串联连接。此外,存储单元晶体管mt既可以是在电荷蓄积层使用了绝缘膜的monos型,也可以是在
电荷蓄积层使用了导电膜的fg型。进而,nand串26内的存储单元晶体管mt的个数并不限定于14个。
[0050]
串单元su0~su3的每一个中的选择晶体管st1的栅极分别与选择栅线sgd0~sgd3连接。相对于此,串单元su0~su3的每一个中的选择晶体管st2的栅极例如共同连接于选择栅线sgs。串单元su0~su3的每一个中的选择晶体管st2的栅极也可以与按每个串单元su而不同的选择栅线sgs0~sgs3连接。位于同一块blk内的存储单元晶体管mt0~mt13的控制栅分别与字线wl0~wl13共同连接。
[0051]
位于串单元su内的各nand串26的选择晶体管st1的漏极与各自不同的比特线bl(bl0~bl(l-1),其中l是2以上的自然数)连接。另外,比特线bl在多个块blk间与位于各串单元su内的1个nand串26共同连接。进而,各选择晶体管st2的源极共同连接于源极线sl。
[0052]
也就是说,串单元su是与不同的比特线bl连接、且与同一选择栅线sgd连接的nand串26的集合。另外,块blk是共用字线wl的多个串单元su的集合。而且,存储单元阵列22是共用比特线bl的多个块blk的集合。
[0053]
如前所述,数据的擦除以块blk为单位执行。
[0054]
另外,写动作以及读动作(具体而言读出处理)对于1个串单元su中的1个字线wl所连接的存储单元晶体管mt,一并进行。以下,将写动作以及读动作(具体而言读出处理)时,一并选择的存储单元晶体管mt的组称为「存储单元组mcg」。而且,将写入到1个存储单元组mcg所包含的存储单元晶体管mt的每一个的、或者被读取(换言之,读出)的1比特的数据的集合称为「页」。
[0055]
有时构成为在各存储单元晶体管mt中能够保存多个比特的值。例如,在各存储单元晶体管mt能够保存n(n≧2)比特的值的情况下,每个字线wl(存储单元组mcg)的存储容量等于n页量的大小。在此作为一例,对各存储单元晶体管mt保存3比特的值的方式进行说明。根据该方式,在各字线保持3页量的数据。
[0056]
图4是表示实施方式的数据编码(data coding)和阈值电压分布的一例的图。横轴表示存储单元晶体管mt的阈值电压。图4所示的8个凸起(lobe)示意性表示阈值电压分布。8个阈值电压分布分别是阈值电压区域,也被标记为状态(state)。8个状态与3比特的数据值相对应。根据本图例,er状态对应于“111”的数据值,a状态对应于“110”的数据值,b状态对应于“100”的数据值,c状态对应于“000”的数据值,d状态对应于“010”的数据值,e状态对应于“011”的数据值,f状态对应于“001”的数据值,g状态对应于“101”的数据值。将各数据值的起始位设为msb(most significant bit,最高有效位)。另外,将各数据值的末尾位设为lsb(least significant bit,最低有效位)。此外,状态与数据值的对应关系并不限定于此。
[0057]
各存储单元晶体管mt的阈值电压被控制为属于8个状态之中的任一个。各存储单元晶体管mt的阈值电压通过擦除动作而被设定为er状态,通过写动作而被设定为a状态~g状态之中的数据值所对应的状态。
[0058]
另外,在读出处理中,通过阈值电压与几个判定电压的比较,能确定各存储单元晶体管mt的阈值电压所属的状态。而且,能读出与所确定出的状态对应的数据值。图4的vra、vrb、vrc、vrd、vre、vrf、以及vrg的组合是判定电压的一例。
[0059]
将1个字线wl(存储单元组mcg)所存储的3个页的数据之中的lsb的集合标记为快
页(lower page)。将3个页的数据之中的msb的集合标记为慢页(upper page)。将3个页的数据之中的、lsb与msb之间的比特的集合标记为中页(middle page)。
[0060]
此外,实施方式的数据编码并不限定于上述例。另外,各存储单元晶体管mt所保存的数据的大小并不限定于3比特。
[0061]
图5是表示实施方式的读动作时在nandc14和与该nandc14连接的存储芯片21之间收发的信号的一例的时序图(时间图,timing chart)。此外,在本图中,描画有构成将nandc14和存储芯片21连接的通道的信号线组之中的、一对读取使能信号线re/ren、一对选通信号dqs/dqsn、io信号线dq[7:0]、以及就绪/忙信号线r/bn的各信号线的状态。
[0062]
nandc14首先将页指定命令c0、读取命令c1、地址信息add、以及读出开始命令c2按该顺序经由io信号线dq[7:0]发送。由此,指示读出处理的对象的页、和读出处理的开始。将由页指定命令c0、读取命令c1、地址信息add、以及读出开始命令c2构成的集(set)标记为读出命令集(sense command set)。读出命令集在存储芯片21所连接的就绪/忙信号线r/bn为就绪状态的期间被发送。
[0063]
在读出命令集的发送时,nandc14将芯片使能信号cen维持为活性(active)状态(l电平)。在页指定命令c0、读取命令c1、以及读出开始命令c2的发送时,nandc14将命令锁存器使能信号cle维持为活性状态(h电平)。在地址信息add的发送时,nandc14将地址锁存器使能信号ale维持为活性状态(h电平)。在读出命令集的发送时,nandc14将写入使能信号wen进行翻转(toggle)。
[0064]
在读出命令集中,页指定命令c0是指定1个存储单元组mcg所保存的1个以上的页的数据之中的1个的命令。读取命令c1表示一系列命令的类别是用于进行读动作的类别。地址信息add包含:表示包含读出对象的页的存储单元组mcg的行地址。通过页指定命令c0与地址信息add所包含的行地址的组合,能唯一指定子阵列23提供的存储区域之中的读出对象的页。另外,地址信息add包含表示页内的位置、也即是比特线的位置的列地址。然而,该列地址在读出命令集中没有意义。读出开始命令c2是指示读出处理的开始的命令。
[0065]
存储芯片21在接收到读出开始命令c2时,开始读出处理。在读出处理中,访问电路24从由页指定命令c0以及行地址的组合唯一决定的页中读出1页量的数据。访问电路24将所读出的1页量的数据保存于数据锁存器25。
[0066]
在开始读出处理时,存储芯片21使就绪/忙信号线r/bn的状态从就绪状态转换为忙状态。存储芯片21在读出处理结束时,使就绪/忙信号线r/bn的状态从忙状态转换为就绪状态。也就是说,在图5所描画的时间tr中,执行读出处理。nandc14在发送了读出开始命令c2之后,通过监视就绪/忙信号线r/bn的状态,能够识别读出处理完成这一情况、也即是从读出处理的对象的页中将1页量的数据读出至数据锁存器25这一情况。
[0067]
在读出处理之后,nandc14能够使存储芯片21执行数据输出处理。nandc14为了使存储芯片21执行数据输出处理,将数据输出命令c3、地址信息add、以及准备命令c4经由io信号线dq[7:0]按该顺序发送。将数据输出命令c3、地址信息add、以及准备命令c4的集标记为数据输出命令集。
[0068]
在数据输出命令集的发送时,nandc14将芯片使能信号cen维持为活性状态(l电平)。在数据输出命令c3、以及准备命令c4的发送时,nandc14将命令锁存器使能信号cle维持为活性状态(h电平)。在地址信息add的发送时,nandc14将地址锁存器使能信号ale维持
为活性状态(h电平)。在数据输出命令集的发送时,nandc14将写入使能信号wen进行翻转(toggle)。
[0069]
数据输出命令c3是指示数据输出处理的命令。地址信息add包含:列地址、行地址。列地址表示数据锁存器25所保存的1页量的数据之中的数据输出处理的对象的数据的起始位置。作为行地址,使用与读出命令集所包含的行地址相等的值。
[0070]
准备命令c4是指示数据输出处理的准备的命令。数据输出处理的对象的数据从数据锁存器25按每8比特分割而作为8比特宽度的数据输出至nandc14。存储芯片21响应准备命令c4,准备由列地址指定的数据输出处理的对象的数据之中的起始的8比特的数据的输出。
[0071]
nandc14从发送准备命令c4起(更准确而言从与准备命令c4的发送相应的写入使能信号wen的翻转的定时起),在经过作为设计值而确定的时间t
whr2
时,开始一对读取使能信号re/ren的翻转。存储芯片21通过使一对读取使能信号re/ren延迟而生成一对选通信号dqs/dqsn。存储芯片21输出所生成的一对选通信号dqs/dqsn。存储芯片21将以由列地址指定的位置作为起始的数据输出对象的数据从数据锁存器25按每8比特与一对选通信号dqs/dqsn同步而向io信号线dq[7:0]输出。nandc14在与一对选通信号dqs/dqsn同步的定时获取从存储芯片21输出的数据。由此,数据输出处理的对象的数据从存储芯片21传送至nandc14。也就是说,执行数据输出处理。
[0072]
数据输出处理通常以簇(cluster)为单位执行。将以簇为单位执行的数据输出处理的模式标记为簇传送模式。
[0073]
簇是具有由存储控制器10管理的单位的大小的数据。管理在一例中,是逻辑地址和物理地址的对应(关系)的管理。
[0074]
存储系统1向主机2提供逻辑地址空间。主机2在对存储系统1执行访问对象的数据的位置时,使用逻辑地址空间内的位置信息。逻辑地址空间内的位置信息被称为逻辑地址。存储控制器10在逻辑地址空间映射(mapping)nand存储器20的存储区域。将由nand存储器20的存储区域构成的地址空间标记为物理地址空间。将表示物理地址空间中的1个位置的位置信息标记为物理地址。
[0075]
逻辑地址空间与nand存储器20的存储区域的关系作为翻译信息(后述的翻译信息131)而被管理。具体而言,逻辑地址空间被分割为具有均匀大小的多个单位区域。存储控制器10按逻辑地址空间内的每个单位区域将逻辑地址和物理地址进行关联而记录于翻译信息131。此外,在物理地址的一部分中包含行地址以及列地址。存储控制器10根据逻辑地址与物理地址的对应关系变化而更新翻译信息131。而且,簇称为1个单位区域量的数据。
[0076]
在簇传送模式中,在数据输出命令集中,发送表示数据输出处理的对象的簇的位置的列地址。在通过1次读出处理而保存于数据锁存器25的1页量的数据包含数据输出处理的对象的多个簇的情况下,为了读出数据输出处理的对象的多个簇中的每一个,按簇为单位执行数据输出命令集的发送、和一对读取使能信号re/ren的翻转。
[0077]
在此,例如,考虑在面#0保存有读取对象的簇的前半部分(first part),在面#1保存有读取对象的簇的后半部分(second part)的情况。在这样的情况下,在进行了包含读取对象的簇的前半部分的页、和包含读取对象的簇的后半部分的页的读出处理的基础上,需要将读取对象的簇的前半部分的数据输出处理、和读取对象的簇的后半部分的数据输出处
理按该顺序继续执行。将这样的、跨2个面保存的簇称为跨簇(straddling cluster)。
[0078]
在读取对象的簇是跨簇的情况下,需要将读取对象的簇的前半部分的数据输出处理、和读取对象的簇的后半部分的数据输出处理按该顺序继续执行这一限制,起因于在进行纠错的电路(后述的ecc(error-correcting code)电路145)中需要以ecc帧为单位输入数据。在本实施方式中,ecc帧的大小等于簇的大小。
[0079]
更具体而言,簇在被发送至存储芯片21之前通过ecc电路145(或其他构成要素)实施使用了纠错码的编码(encode)。对于编码后的簇,为了进行纠错,需要将编码后的簇从起始起按顺序向ecc电路145输入。若从编码后的簇起一部分数据不足、编码后的簇的一部分与其他一部分的顺序被调换,则无法在ecc电路145中执行所期待的纠错。在簇传送模式中,nandc14将从存储芯片21取得的数据按所取得的顺序向ecc电路145输入。因此,在读取对象的簇跨2个面被保存的情况下,若不将读取对象的簇的前半部分的数据输出处理、和读取对象的簇的后半部分的数据输出处理按该顺序进行,则无法将原簇从起始起按顺序复原而向ecc电路145输入。由此,产生前述的限制。
[0080]
也就是说,无法将读取对象的簇的前半部分的数据输出处理、和读取对象的簇的后半部分的数据输出处理按与上述顺序相反的顺序执行、或者在期间夹着其他处理(例如其他簇的数据输出处理)。另外,在直到读取对象的簇的前半部分的数据输出处理完成为止,面#0的数据锁存器25被包含读取对象的簇的前半部分的页占有。因此,在直到读取对象的簇的前半部分的数据输出处理完成为止在面#0中无法执行下一个读出处理。另外,在直到读取对象的簇的后半部分的数据输出处理完成为止面#1的数据锁存器25被包含读取对象的簇的后半部分的页占有。因此,在直到读取对象的簇的后半部分的数据输出处理完成为止在面#1中无法执行下一个读出处理。
[0081]
这样,在跨簇作为读取对象的情况下,需要对1个面中的簇的前半部分的数据输出处理、和其他面中的簇的后半部分的数据输出处理进行等候。也就是说,需要使本来各自能够独立动作的2个面在跨簇的数据输出处理时进行联合动作。由此,产生无法使2个面并行动作的期间,从存储芯片21向存储控制器10的数据传送的效率恶化。
[0082]
因此,在实施方式中,在nandc14设置能够保存1页量的数据的多个缓冲器(后述的等候缓冲器147)。nandc14构成为,能够将2个面的数据锁存器25所分别保存着的1页量的数据在多个等候缓冲器147之中的2个中进行缓冲(buffer)。
[0083]
这样,若将包含读取对象的簇的前半部分的页从面#0的数据锁存器25向等候缓冲器147之中的1个传送,则面#0无需等候读取对象的簇的后半部分的数据输出处理就能够进入下一个处理、例如其他页的读出处理。另外,若将包含读取对象的簇的后半部分的页从面#1的数据锁存器25向等候缓冲器147之中的另1个传送,则面#1无需等候读取对象的簇的前半部分的数据输出处理就能够进入下一个处理、例如其他页的读出处理。
[0084]
也就是说,即使在跨簇作为读取对象的情况下,也无需为了该跨簇的数据输出处理而对面#0中的数据输出处理和面#1中的数据输出处理进行等候,能够使面#0和面#1并行动作。由此,能够抑制从存储芯片21向存储控制器10的数据传送的效率的恶化。使面#0与面#1并行动作的例子稍后说明。
[0085]
此外,在实施方式中,从包含读取对象的簇的一部分的页的数据锁存器25向等候缓冲器147的传送通过以页为单位的数据输出处理而实现。将以页为单位执行的数据输出
处理的模式标记为页传送模式。
[0086]
此外,根据图5所示的时序图,nandc14通过一对读取使能信号re/ren的翻转的数量指定数据输出处理的对象的数据的大小。也就是说,nandc14在簇传送模式中,通过将一对读取使能信号re/ren翻转与簇的大小对应的数量(次数),实现以簇为单位的传送。另外,nandc14在页传送模式中,通过将一对读取使能信号re/ren翻转与页的大小对应的数量,实现以页为单位的传送。数据输出处理的对象的数据的大小的指定的方法并不仅限定于使用了一对读取使能信号re/ren的翻转的次数的方法。
[0087]
图6是用于说明在簇传送模式以及页传送模式的每一个中在实施方式的io信号线dq[7:0]上传送的信号的不同的图。在此作为一例,对将由4个簇cl0,cl1,cl2,cl3构成的页之中的4个簇cl0,cl1,cl2,cl3作为读取对象的情况进行说明。
[0088]
在簇传送模式中,在执行了上述页的读出处理之后,执行将簇cl0,cl1,cl2,cl3的每一个作为对象的4次数据输出处理。具体而言,nandc14发送将簇cl0作为数据输出处理的对象的数据输出命令集,之后,通过翻转一对读取使能信号re/ren从存储芯片21接收簇cl0。nandc14发送将簇cl1作为数据输出处理的对象的数据输出命令集,之后,通过翻转一对读取使能信号re/ren从存储芯片21接收簇cl1。nandc14发送将簇cl2作为数据输出处理的对象的数据输出命令集,之后,通过翻转一对读取使能信号re/ren从存储芯片21接收簇cl2。nandc14发送将簇cl3作为数据输出处理的对象的数据输出命令集,之后,通过翻转一对读取使能信号re/ren从存储芯片21接收簇cl3。
[0089]
相对于此,在页传送模式中,执行将由4个簇cl0,cl1,cl2,cl3构成的页作为对象的1次数据输出处理。具体而言,nandc14发送将上述页作为数据输出处理的对象的数据输出命令集,之后,通过将一对读取使能信号re/ren翻转而从存储芯片21接收上述页。
[0090]
在簇传送模式中,对1页之中的多个簇发送各个列地址不同的数据输出命令集。数据输出命令集的1次发送所需的时间不论传送模式如何而均匀。因此,与仅使用1次数据输出命令集的页传送模式相比,在簇传送模式中数据输出命令集的发送所需的时间变多。由此,在1页包含作为读取对象的多个簇的情况下,就命令集的发送所需的时间与数据的传送所需的时间的合计而言,与簇传送模式相比使用了页传送模式有可能更短。根据图6所示的例子可读取出:与以簇传送模式传送4个簇的情况相比,以页传送模式传送包含该4个簇的1个页的命令集的发送所需的时间与数据的传送所需的时间的合计更短这一情况。
[0091]
在实施方式中,根据1个页所包含的读取对象的簇的数量选择传送模式。传送模式的选择方法的具体例稍后说明。
[0092]
可以考虑各种事例(case)来作为发送跨簇的事例。在实施方式中,作为一例,对采用了码率(code rate)可变的纠错码来作为ecc电路145使用的纠错码的事例进行说明。码率是编码前的数据的大小除以编码后的数据的大小得到的信息。码率越小,则编码后的簇所包含的冗余数据的量越多,由此编码后的簇的大小越增大。另外,码率越小,则纠错的能力越提高。
[0093]
图7是表示在采用了码率可变的纠错码的实施方式的存储系统1中,面#0以及面#1所保存的各簇的位置的示意图。在本图所示的例子中由包含面#0的3个页(快页、中页、以及慢页)、和面#1的3个页(快页、中页、以及慢页)的6页量的存储区域构成逻辑存储区域,并描画有相对于该逻辑存储区域所保存的簇的位置。此外,将该逻辑存储区域标记为超级页
(super page)。
[0094]
在图7的左端所描画的n值表示超级页能保存的簇的最大数,与码率对应。码率越小,则编码后的簇的大小越大,因此,超级页能保存的簇的最大数、也即是n值越小。另外,在图7所示的例子中,对各簇赋予由clx(其中,x是从0到23的整数)表示的id。
[0095]
1个超级页所保存的n个簇具有由n值决定的均匀的大小。在此,由于超级页由6页量的存储区域构成,所以若n值是6的倍数,则不会发生跨簇。相反,若n值不是6的倍数,则会发生跨簇。
[0096]
作为n值例如设定了「24」的情况下,由于n值是6的倍数,所以不会发生跨簇。
[0097]
作为n值例如设定了「23」的情况下,由于n值不是6的倍数,所以会发生跨簇。在图7所示的例子中,簇cl3、簇cl7、簇cl11、簇cl15、以及簇cl19跨越2个面#0、#1而被保存。
[0098]
作为n值设定了「22」、「21」、「20」、或「19」的情况下,也会发生跨簇。作为n值设定了「18」的情况下,不会发生跨簇。
[0099]
n值的变更能在任意的定时(timing)实施。例如,有时因各种要因,存储单元阵列22的可靠性会降低。在存储单元阵列22的可靠性降低了的情况下,存储控制器10为了进一步提高纠错的能力,能够将编码时的码率变更为比目前的设定值小的值。码率的变更因在此n值的变更而被执行。在一例中,作为n值的初始值设定「24」。而且,能够根据存储单元阵列22的使用的状况、被纠错的比特数的增加、或其他指标,执行n值的变更。此外,n值的变更方法以及n值并不限定于上述所示的例子。
[0100]
图8是表示实施方式的ram13所保存的信息的一例的示意图。如本图所示,在ram13中保存翻译信息131、簇格式信息132、以及数据锁存器信息133。另外,在ram13中设置有入口队列(entry queue)134。
[0101]
翻译信息131如前所述,是表示逻辑地址与物理地址的对应关系的信息。
[0102]
簇格式信息132是按每个n值表示超级页所保存的各簇是否是跨簇的信息。簇格式信息132包含并非跨簇的簇的大小以及起始的列地址。另外,簇格式信息132包含:跨簇的前半部分的大小、跨簇的前半部分的起始的列地址、跨簇的后半部分的大小、以及跨簇的后半部分的起始的列地址(即零地址)。
[0103]
数据锁存器信息133是表示各存储芯片21的各数据锁存器25所保存的页的信息的组。数据锁存器信息133既可以具有表格形式的数据结构,也可以具有与表格形式不同的数据结构。数据锁存器信息133构成为,通过存储芯片21和面的指定,能够知晓属于所指定的存储芯片21的所指定的面的数据锁存器25所保存的页。数据锁存器信息133记录有表示页的物理地址(行地址)来作为表示页的信息。此外,表示页的信息并不限定于此。
[0104]
例如,表示页的信息在该页的读出处理的定时被记录于数据锁存器信息133。另外,数据锁存器信息133所记录的表示页的信息,在向保存了该页的数据锁存器25保存写入对象的数据的定时、和/或进行对与该数据锁存器25在相同存储芯片21且属于相同面的子阵列23的擦除动作的定时,被从数据锁存器信息133削除。通过该更新规则,数据锁存器信息133的内容反映了各数据锁存器25的最新的状况。此外,数据锁存器信息133的内容的更新规则并不限定于此。数据锁存器信息133的内容也可以根据最新的状况伴随若干滞后(lag)而被更新。
[0105]
在入口队列134中登记指示以簇为单位的读取的第1读取指示。例如,在从主机2接
收到读请求的情况下,存储控制器10(例如cpu11)将读请求所包含的逻辑地址值通过翻译信息131翻译为以簇为单位的物理地址值。在由读请求所请求的数据由多个簇构成的情况下,存储控制器10按每个簇取得物理地址值。而且,存储控制器10按通过翻译得到的每个物理地址值,也即是按每个簇生成第1读取指示,将所生成的全部第1读取指示向入口队列134登记。在各第1读取指示中记录有通过翻译得到的物理地址值。各第1读取指示所包含的物理地址值表示读取对象的簇的位置。
[0106]
cpu11基于入口队列134所保存的第1读取指示,以簇为单位生成第2读取指示。第2读取指示是向nandc14(发出)的对存储芯片21执行读动作的指示。第2读取指示包含表示读取对象的簇的位置的物理地址值。另外,第2读取指示附加有是否需要执行读出处理等的信息。更具体而言,第2读取指示具备表示读取对象的簇的位置的物理地址值、表示是否执行读出处理的标识、表示读取的对象的簇是否是跨簇的跨标识(straddle flag)、以及表示读取模式的读取模式标识。
[0107]
实施方式的读取模式作为一例,包含随机读取和顺序读取(sequential read)这2个模式。顺序读取是从1个页(换言之,1个面的1个页)中读出2个以上的簇的情况下所指定的读取模式。随机读取是不从1个页(换言之,1个面的1个页)中读出2个以上的簇的情况下所指定的读取模式。读取模式并不仅限定于随机读取以及顺序读取。
[0108]
在第2读取指示所包含的读取模式标识表示随机读取的情况下,nandc14以簇传送模式执行数据输出处理。在第2读取指示所包含的读取模式标识表示顺序读取的情况下,nandc14能以页传送模式执行数据输出处理。
[0109]
在入口队列134中不仅保存第1读取指示,还可以保存写入等其他处理的指示。或者,其他处理的指示也可以被保存于与入口队列134不同的其他队列。以后,关于入口队列134,仅言及第1读取指示,并不言及其他处理的指示。
[0110]
图9是表示实施方式的nandc14的又一详细构成例的示意图。nandc14具备:程序装置(sequencer)141、等候缓冲器组142、随机缓冲器143、等候缓冲管理器144、以及ecc电路145。
[0111]
程序装置141具备指示队列146。向指示队列146入队(enqueue)通过cpu11基于第1读取指示生成的第2读取指示。即,cpu11基于第1读取指示生成第2读取指示,将所生成的第2读取指示保存于2个nandc14之中的连接了保存有读取对象的簇的存储芯片21的nandc14的指示队列146。
[0112]
程序装置141从指示队列146所保存的1个以上的第2读取指示中,基于通道的空余状况、以及、与读取模式标识相应的等候缓冲器组142或随机缓冲器的空余状况选择1个第2读取指示。程序装置141根据所选择出的第2读取指示,能够发送对存储芯片21的命令集,将一对读取使能信号线re/ren进行翻转。
[0113]
一对读取使能信号线re/ren的翻转次数在簇传送模式和页传送模式下不同。在第2读取指示的读取模式标识表示顺序模式的情况下,程序装置141选择页传送模式,将一对读取使能信号线re/ren翻转页的大小所对应的次数。在第2读取指示的读取模式标识表示随机模式的情况下,程序装置141选择随机模式,将一对读取使能信号线re/ren翻转簇的大小所对应的次数。
[0114]
此外,簇的大小根据n值而不同。指示队列146所保存的第2读取指示以某种方法与
簇格式信息132所记载的信息进行关联。程序装置141基于从指示队列146读出的第2读取指示而参照簇格式信息132,由此能够知晓n值、簇的大小等。另外,在数据输出处理的对象的簇属于跨簇的情况下,程序装置141基于簇格式信息132,能够知晓该簇的前半部分的起始的列地址以及大小、和该簇的后半部分的起始的列地址以及大小。
[0115]
程序装置141确定n值、簇的大小等的方法并不限定于上述例。cpu11也可以在第2读取指示中记录n值、簇的大小等。另外,cpu11在数据输出处理的对象的簇属于跨簇的情况下,向第2读取指示记录该簇的前半部分的起始的列地址以及大小、和该簇的后半部分的起始的列地址以及大小。
[0116]
程序装置141能够向等候缓冲器组142或随机缓冲器143指定通过数据输出处理取得的数据的保存目的地、指示该数据的保存、指示向ecc电路145的数据输出。以后,将对通过数据输出处理取得的数据进行保存的指示标记为缓冲器保存指示。另外,将向ecc电路145的数据的输出的指示标记为缓冲器输出指示。
[0117]
nandc14具备未图示的缓冲管理器,控制相对于等候缓冲器组142的数据的输入输出以及相对于随机缓冲器143的数据的输入输出。程序装置141发行的、数据的保存目的地的指定、缓冲器保存指示、以及缓冲器输出指示被发送至该缓冲管理器。该缓冲管理器对数据的保存目的地的指定、缓冲器保存指示、以及缓冲器输出指示进行解释。由此,该缓冲管理器对多个等候缓冲器147以及随机缓冲器143之间的数据的保存目的地的切换、向数据的保存目的地的数据的保存、以及从数据的保存目的地的数据的输出进行控制。以后,为了便于说明,对等候缓冲器组142以及随机缓冲器143接收程序装置141发行的、数据的保存目的地的指定、缓冲器保存指示、以及缓冲器输出指示,执行基于接收到的这些信息的动作进行说明。
[0118]
等候缓冲器组142具备多个等候缓冲器147。等候缓冲器147例如由sram构成。在此作为一例,等候缓冲器组142具备8个等候缓冲器147。各等候缓冲器147具备至少1页量的容量。也就是说,各等候缓冲器147能保存读出到1个数据锁存器25的1页量的数据。在以页传送模式执行数据输出处理时,从存储芯片21取得的1页量的数据保存于8个等候缓冲器147之中的由程序装置141选择出的等候缓冲器147。此外,8个等候缓冲器147设为通过0号到7号的缓冲器编号而被识别。
[0119]
随机缓冲器143具备至少1簇的容量。随机缓冲器143配置在ecc电路145与通道之间。由于随机缓冲器143具备1簇以上的容量,所以通道的使用方法的自由度变大。随机缓冲器143例如由sram构成。在以簇传送模式执行数据输出处理时,从存储芯片21取得的1簇量的数据保存于随机缓冲器143。
[0120]
等候缓冲管理器144执行8个等候缓冲器147的空余状况的管理。更具体而言,等候缓冲管理器144具备各自与8个等候缓冲器147的任一个一一对应的8个计数器148,对8个计数器148的值进行操作。
[0121]
如前所述,在赋被予了表示顺序模式的读取模式标识的第2读取指示的执行时,能以页单位执行数据输出处理。更详细而言,在包含作为数据输出处理的对象的簇的页已经保存于8个等候缓冲器147中的任一个的情况下,省略数据输出处理,从保存了该页的等候缓冲器147中取得数据输出处理的对象的簇。在包含作为数据输出处理的对象的簇的页没有保存于8个等候缓冲器147中的任一个的情况下,该页通过以页为单位的数据输出处理从
存储芯片21中取得而保存于8个等候缓冲器147中的任一个。该情况下,8个等候缓冲器147之中的非使用中的等候缓冲器147作为该页的保存目的地而被选择。8个计数器148的每一个在对应的等候缓冲器147是使用中还是非使用中的判定中被使用。
[0122]
8个计数器148的初始值被设为0。某计数器148的值是0这一情况,意味着该计数器148所对应的等候缓冲器147是非使用中。在被赋予了表示顺序模式的读取模式标识的第2读取指示(执行)时,首先,选择1个非使用中的等候缓冲器147。而且,当开始该第2读取指示的执行时,等候缓冲管理器144将所选择出的等候缓冲器147所对应的计数器148的值增加1。由此,所选择出的等候缓冲器147成为被视作使用中的状态。而且,包含通过该第2读取指示而作为读取的对象的簇的页,被从存储芯片21取得,所取得的页保存于所选择出的等候缓冲器147。
[0123]
在从与被视作使用中的状态的等候缓冲器147所保存的页相同页取得其他簇、且被赋予了表示顺序模式的读取模式标识的第2读取指示的执行开始时,等候缓冲管理器144将该等候缓冲器147所对应的计数器148的值进一步增加1。而且,通过该第2读取指示而作为了读取的对象的簇,并非从存储芯片21通过数据输出处理而取得,而是从等候缓冲器147读出而发送至ecc电路145。
[0124]
另外,当等候缓冲管理器144从等候缓冲器147向ecc电路145的簇的输出完成时,使该等候缓冲器147所对应的计数器148的值减少1。
[0125]
通过上述那样的计数器148的操作,在等候缓冲器147所保存的页被推定为包含有稍后输出的簇的情况下,该等候缓冲器147所对应的计数器148的值设为非零,由此该等候缓冲器147成为使用中的状态。也就是说,该等候缓冲器147的内容被保护不会被其他页覆写。等候缓冲器147所保存的页在被推定为不包含稍后输出的簇的情况下,将该等候缓冲器147所对应的计数器148的值设为零,由此该等候缓冲器147成为非使用中的状态,也就是说,该等候缓冲器147成为能够被选择为用于保存其他页的缓冲器的状态。
[0126]
ecc电路145对从存储芯片21取得的簇、即通过纠错码进行了编码的簇,执行使用了该纠错码的纠错。将输入至ecc电路145的数据的单位标记为ecc帧。ecc帧既可以与簇相等,也可以与簇不相等。在ecc帧与簇不相等的情况下,ecc帧由多个簇构成。此外,在此作为一例,ecc帧设为与簇相等。
[0127]
如前所述,在执行了被赋予了顺序模式的读取模式标识的第2读取指示的情况下,包含该第2读取指示所指定的簇的页被从存储芯片21取得并保存于任一等候缓冲器147。之后,该等候缓冲器147根据来自程序装置141的缓冲器输出指示,将自身所保存的页之中的输出对象的簇向ecc电路145输出。程序装置141对等候缓冲器组142发送输出对象的簇的簇信息来作为缓冲器输出指示。簇信息包含输出对象的簇是否是跨簇。在输出对象的簇是跨簇的情况下,簇信息包含:跨簇的前半部分的大小、跨簇的前半部分的起始的列地址、跨簇的后半部分的大小、以及跨簇的后半部分的起始的列地址。
[0128]
在执行了被赋予了随机模式的读取模式标识的第2读取指示的情况下,该第2读取指示指定的簇被从存储芯片21取得而保存于随机缓冲器143。之后,该随机缓冲器143根据来自程序装置的缓冲器输出指示,将自身所保存的数据之中输出对象的簇向ecc电路145输出。
[0129]
ecc电路145在对所输入的簇执行了纠错之后,将该簇保存于预定位置、例如
ram13。cpu11在向ram13保存了纠错后的簇之后,能够使主机i/f12将该簇向主机2传送。
[0130]
此外,在由ecc电路145进行的纠错失败了的情况下,存储控制器10能执行任意的处理。例如,存储控制器10对纠错失败了的簇,能够进一步执行订正能力高的纠错、变更判定电压重试(retry)读动作。
[0131]
接着,对实施方式的存储系统1的动作进行说明。
[0132]
图10是表示实施方式的存储系统1的读动作的一例的流程图。本图所示的一系列动作按入口队列134所保存的每个第1读取指示而被执行。
[0133]
首先,cpu11从入口队列134读出1个第1读取指示(s101)。而且,cpu11通过所读出的第1模式指示判定作为读取对象的簇是否是跨簇(s102)。
[0134]
将通过s101的处理读出的第1读取指示在参照图10的说明中,标记为对象的第1读取指示。将通过对象的第1读取指示而作为读取对象的簇在参照图10的说明中标记为对象的簇。
[0135]
s102的判定的具体方法并不限定于特定的方法。例如,cpu11通过参照簇格式信息132,判定对象的簇是否是跨簇。
[0136]
在对象的簇是跨簇的情况下(s102:是),对对象的簇的前半部分、和对象的簇的后半部分中的每一个执行s103~s110的动作(s111),动作结束。
[0137]
在对象的簇不是跨簇的情况下(s102:否),cpu11判定是否将对象的簇的读取模式设定为顺序读取(s103)。
[0138]
s103的判定的具体方法并不限定于特定的方法。例如,cpu11通过参照在入口队列134于s103的判定的时间点保存着的全部第1读取指示所记录的物理地址值,判定将与对象的簇相同的页(换言之属于与对象的簇相同的面的、与对象的簇相同的页)所包含的簇作为读取对象的其他第1读取指示是否保存于入口队列134。在将与对象的簇相同的页所包含的簇作为读取对象的其他第1读取指示保存于入口队列134的情况下,cpu11将对象的簇的读取模式设定为顺序读取。进而,cpu11也可以决定将该其他第1读取指示作为读取对象的簇的读取模式为顺序读取。
[0139]
在将与对象的簇相同的页所包含的簇作为读取对象的其他第1读取指示没有保存于入口队列134的情况下,cpu11将对象的簇的读取模式设定为随机读取而非顺序读取。
[0140]
此外,在对象的簇是跨簇的情况下,将该簇的前半部分的读取模式以及后半部分的读取模式设定为彼此相等的模式。
[0141]
在没有将对象的簇的读取模式设定为顺序读取的情况下(s103:否),换言之,将对象的簇的读取模式设定为随机读取的情况下,cpu11将被赋予了表示执行读出处理之意的标识、和表示随机读取的读取模式标识的第2读取指示向nandc14的指示队列146入队。在对象的簇是跨簇的情况下,cpu11还向该第2读取指示赋予跨标识。nandc14基于该第2读取指示,执行读出处理(s104)和簇传送模式下的数据输出处理(s105),数据传送的动作结束。
[0142]
在对象的簇是跨簇、且设定有随机读取来作为对象的簇的前半部分以及后半部分的读取模式的情况下,存储控制器10需要将对象的簇的前半部分的数据输出处理、和对象的簇的后半部分的数据输出处理按该顺序执行。为了使nandc14守护该限制,cpu11也可以构成为,通过1个第2读取指示来指示对象的簇的前半部分的读取、和对象的簇的后半部分的读取。也就是说,在nandc14中,在程序装置141从指示队列146中选择了该第2读取指示的
情况下,将对象的簇的前半部分的数据输出处理、和对象的簇的后半部分的数据输出处理按该顺序执行。此外,只要nandc14守护前述的限制,也可以未必通过1个第2读取指示来指示对象的簇的前半部分的读取、和对象的簇的后半部分的读取。
[0143]
在将对象的簇的读取模式设定为顺序读取的情况下(s103:是),cpu11判定保存了对象的簇的数据锁存器25是否存在(s106)。s106的判定基于数据锁存器信息133而被执行。
[0144]
在保存了对象的簇的数据锁存器25不存在的情况下(s106:否),cpu11将被赋予了意味着读出处理的执行的标识(flag)、和表示顺序读取的读取模式标识的第2读取指示向nandc14的指示队列146入队。在对象的簇是跨簇的情况下,cpu11还向该第2读取指示赋予跨标识。nandc14基于该第2读取指示,执行读出处理(s107)、和页传送模式下的数据输出处理(s108),数据传送的动作结束。
[0145]
在对象的簇是跨簇、且设定有顺序读取来作为对象的簇的前半部分以及后半部分的读取模式的情况下,与对象的簇是跨簇、且设定有随机读取来作为对象的簇的前半部分以及后半部分的读取模式的情况不同,包含对象的簇的前半部分的页的数据输出处理、和包含对象的簇的后半部分的页的数据输出处理的执行的顺序是任意的。由此,cpu11能够通过各自不同的第2读取指示来指示对象的簇的前半部分的读取、和对象的簇的后半部分的读取。cpu11也可以通过1个第2读取指示来指示对象的簇的前半部分的读取、和对象的簇的后半部分的读取。
[0146]
在对象的簇保存于任一数据锁存器25的情况下(s106:是),cpu11将被赋予了表示不执行读出处理之意的标识、和表示顺序读取的读取模式标识的第2读取指示向nandc14的指示队列146入队。在对象的簇是跨簇的情况下,cpu11还向该第2读取指示赋予跨标识。
[0147]
nandc14在执行被赋予了表示不执行读出处理之意的标识、和表示顺序读取的读取模式标识的第2读取指示时,判定保存了对象的簇的等候缓冲器147是否存在(s109)。在保存了对象的簇的等候缓冲器147存在的情况下(s109:是),不执行数据输出处理而数据传送的动作结束。
[0148]
在保存了对象的簇的等候缓冲器147不存在的情况下(s109:否),nandc14执行页传送模式下的数据输出处理(s110),数据传送的动作结束。
[0149]
此外,在s104以及s107中执行了读出处理时,在属于进行了读出处理的面的数据锁存器25中保存通过读出处理从子阵列23读出的页。由此,根据s104以及s107的读出处理的执行,cpu11进行数据锁存器信息133的更新。另外,在执行了擦除动作或写动作的情况下,由于属于执行了擦除动作或写动作的面的数据锁存器25的内容被改写,所以cpu11根据擦除动作或写动作的执行,进行数据锁存器信息133的更新。由此,数据锁存器信息133反映了各数据锁存器25的最新的状况。
[0150]
另外,在图10所示的一系列动作中,将保存了对象的簇的数据锁存器25是否存在的判定(s106)、和保存了对象的簇的等候缓冲器147是否存在的判定(s109)按该顺序执行。这是因为以下的理由。即,由于数据锁存器信息133始终反映着各数据锁存器25的最新的状况,所以能够基于各数据锁存器25的最新的状况执行s106的判定。相对于此,就各等候缓冲器147的内容而言,即使进行擦除动作和/或写动作,改写也不被执行。也就是说,各等候缓冲器147不一定保存着最新的状态的页。通过使s106和s109按上述的顺序执行,存储系统1能够基于各数据锁存器25的最新的状况决定是否进行页传送模式下的数据输出处理。
[0151]
图11~图14是表示实施方式的nandc14的动作的详情的图。
[0152]
图11示出了在图10所示的s106的处理中判定为保存了对象的簇的数据锁存器25不存在的情况下执行由cpu11发行的第2读取指示的动作的一例。对该第2读取指示赋予有表示读出处理的执行的标识、和表示顺序读取的读取模式标识。另外,在对象的簇是跨簇的情况下,对该第2读取指示赋予了跨标识。将该第2读取指示在参照了图11的说明中,标记为对象的第2读取指示。另外,将通过对象的第2读取指示而作为读取对象的簇在参照了图11的说明中,标记为对象的簇。
[0153]
程序装置141在从指示队列146所保存的1个以上的第2读取指示之中选择了对象的第2读取指示的情况下(s201),首先,参照读取模式标识确认为是顺序读取,向等候缓冲管理器144查询保存了对象的簇的等候缓冲器147是否存在、和非使用中的等候缓冲器147是否存在(s202)。此外,程序装置141也可以省略保存了对象的簇的等候缓冲器147是否存在的查询。等候缓冲管理器144将对象的簇没有保存于任一个等候缓冲器147之意向程序装置141应答。另外,等候缓冲管理器144在存在值为零的计数器148的情况下,将该计数器148所对应的等候缓冲器147作为非使用中的等候缓冲器147向程序装置141应答(s203)。
[0154]
程序装置141在从等候缓冲管理器144接收非使用中的等候缓冲器147的应答时,开始对象的第2读取指示的执行。具体而言,程序装置141首先,将从等候缓冲管理器144应答的非使用中的等候缓冲器147选择为页的保存目的地,将该意思向等候缓冲管理器144通知,等候缓冲管理器144将所选择出的等候缓冲器147所对应的计数器148的值增加1(s204)。
[0155]
接着,程序装置141从簇格式信息132取得执行对象的第2读取指示所需的信息,将读出处理向存储芯片21指示(s205)。也就是说,程序装置141发送读出命令集。在存储芯片21中开始读出处理时,就绪/忙信号线r/bn从就绪状态向忙状态转换。在存储芯片21中读出处理完成时,就绪/忙信号线r/bn从忙状态向就绪状态转换。
[0156]
程序装置141监视着就绪/忙信号线r/bn。在就绪/忙信号线r/bn从忙状态转换为了就绪状态的情况下,程序装置141能够知晓存储芯片21中的读出处理的完成。程序装置141在知晓存储芯片21中的读出处理的完成时,向等候缓冲器组142发送页的保存目的地的等候缓冲器147的指定、向所指定出的等候缓冲器147保存页的缓冲器保存指示、以及向ecc电路145输出对象的簇的缓冲器输出指示(s206)。而且,程序装置141执行页传送模式下的数据输出处理(s207)。也就是说,程序装置141将包含列地址的数据输出命令集向存储芯片21发送,该列地址表示含有对象的簇的页的起始,之后,将一对读取使能信号re/ren翻转与页的大小对应的次数。
[0157]
在nandc14根据一对选通信号dqs/dqsn从存储芯片21接收到页时,等候缓冲器组142在通过s206从程序装置141接收到的指定的等候缓冲器147中,执行基于缓冲器保存指示、以及缓冲器输出指示的动作。即,从存储芯片21接收到的页保存于等候缓冲器组142之中的由程序装置141指定的等候缓冲器147(s208)。而且,该等候缓冲器147在ecc电路145变为了能够执行处理时,将自身所保存的页之中的对象的簇向ecc电路145输出(s209)。等候缓冲器组142在s209完成后,向等候缓冲管理器144通知输出了对象的簇的等候缓冲器147,等候缓冲管理器144根据该通知,使输出了对象的簇的等候缓冲器147所对应的计数器148的值减少1(s210)。
[0158]
ecc电路145执行对所输入的对象的簇的纠错,能够将执行了纠错之后的对象的簇例如保存于ram13。
[0159]
此外,在图11所示的例子中,已经存在非使用中的等候缓冲器147。在非使用中的等候缓冲器147不存在的情况下,也就是说,程序装置141向等候缓冲管理器144发送了查询时,在不存在值为零的计数器148的情况下,等候缓冲管理器144将非使用中的等候缓冲器147不存在之意进行应答。于是,程序装置141推迟(postpone)对象的第2读取指示的执行,选择指示队列146所保存的其他指示、具体而言,用于进行不需要非使用中的等候缓冲器147的动作的指示来作为新的执行对象。在一例中,若存在赋予了表示随机读取的读取模式标识的第2读取指示,则程序装置141能够选择该第2读取指示来作为新的执行对象。
[0160]
图12示出了在图10所示的s106的处理中判定为保存了对象的簇的数据锁存器25存在的情况下执行由cpu11发行的、第2读取指示的动作的一例。对该第2读取指示赋予了表示不执行读出处理之意的标识、和表示顺序读取的读取模式标识。另外,在对象的簇是跨簇的情况下,对该第2读取指示赋予跨标识。将该第2读取指示在参照图12的说明中标记为对象的第2读取指示。另外,将通过对象的第2读取指示而作为读取的对象的簇在参照了图12的说明中标记为对象的簇。
[0161]
程序装置141在从指示队列146所保存的1个以上的第2读取指示之中选择了对象的第2读取指示的情况下(s301),首先,参照读取模式标识确认为是顺序读取,向等候缓冲管理器144查询保存了对象的簇的等候缓冲器147是否存在、和非使用中的等候缓冲器147是否存在(s302)。等候缓冲管理器144在保存了对象的簇的等候缓冲器147存在的情况下,将保存了对象的簇的等候缓冲器147向程序装置141应答(s303)。
[0162]
程序装置141在从等候缓冲管理器144接收到保存了对象的簇的等候缓冲器147的应答时,开始对象的第2读取指示的执行。具体而言,程序装置141,首先,选择来自等候缓冲管理器144的应答表示的等候缓冲器147,将该等候缓冲器147向等候缓冲管理器144通知,等候缓冲管理器144将所选择出的等候缓冲器147所对应的计数器148的值增加1(s304)。
[0163]
接着,程序装置141从簇格式信息132取得执行对象的第2读取指示所需的信息(s305)。程序装置141将保存了对象的簇的等候缓冲器147的指定、和向ecc电路145输出对象的簇的缓冲器输出指示(包含簇信息)向等候缓冲器组142发送(s306)。
[0164]
等候缓冲器组142在通过s306从程序装置141接收到的指定的等候缓冲器147中,执行基于缓冲器输出指示的动作。即,在所指定了的等候缓冲器147在ecc电路145变为了能够执行处理时,将自身所保存的页之中的对象的簇向ecc电路145输入(s307)。等候缓冲器组142在s307的完成后,向等候缓冲管理器144通知输出了对象的簇的等候缓冲器147,等候缓冲管理器144根据该通知,将输出了对象的簇的等候缓冲器147所对应的计数器148的值减少1。
[0165]
ecc电路145能够执行对所输入的对象的簇的纠错,将执行了纠错后的对象的簇例如保存于ram13。
[0166]
在图12所示的例子中,已经存在保存了对象的簇的等候缓冲器147。使用图13说明在保存了对象的簇的等候缓冲器147不存在的情况下的动作。
[0167]
图13示出了,在图10所示的s106的处理中判定为保存了对象的簇的数据锁存器25存在的情况下执行由cpu11发行的第2读取指示的动作的其他一例。对该第2读取指示赋予
了表示不执行读出处理之意的标识、和表示顺序读取的读取模式标识。另外,在对象的簇是跨簇的情况下,对该第2读取指示赋予了跨标识。将该第2读取指示在参照图13的说明中标记为对象的第2读取指示。另外,将通过对象的第2读取指示而作为读取的对象的簇在参照图13的说明中标记为对象的簇。
[0168]
程序装置141在从指示队列146所保存的1个以上的第2读取指示之中选择了对象的第2读取指示的情况下(s401),首先,参照读取模式标识确认为是顺序读取,向等候缓冲管理器144查询保存了对象的簇的等候缓冲器147是否存在、和非使用中的等候缓冲器147是否存在(s402)。等候缓冲管理器144在保存了对象的簇的等候缓冲器147不存在的情况下,将保存了对象的簇的等候缓冲器147不存在之意进行应答。另外,在保存了对象的簇的等候缓冲器147不存在的情况下,等候缓冲管理器144判定非使用中的等候缓冲器147是否存在,在非使用中的等候缓冲器147存在的情况下,应答非使用中的等候缓冲器147。在此,将保存了对象的簇的等候缓冲器147不存在之意、和非使用中的等候缓冲器147向程序装置141应答(s403)。
[0169]
程序装置141在接收到表示保存了对象的簇的等候缓冲器147不存在之意、和非使用中的等候缓冲器147的应答时,开始对象的第2读取指示的执行。具体而言,程序装置141,首先,从等候缓冲管理器144选择所应答的非使用中的等候缓冲器147来作为页的保存目的地,将该意思向等候缓冲管理器144通知,等候缓冲管理器144将所选择出的等候缓冲器147所对应的计数器148的值增加1(s404)。
[0170]
接着,程序装置141从簇格式信息132取得对象的第2读取指示的执行所需的信息(s405)。程序装置141将页的保存目的地的等候缓冲器147的指定、向所指定了的等候缓冲器147保存页的缓冲器保存指示、以及向ecc电路145输出对象的簇的缓冲器输出指示向等候缓冲器组142发送(s406)。
[0171]
而且,程序装置141将页传送模式下的数据输出处理向存储芯片21指示(s407)。也就是说,程序装置141将包含表示页的起始的列地址的数据输出命令集向存储芯片21发送,之后,将一对读取使能信号re/ren翻转页的大小所对应的次数。
[0172]
nandc14根据一对选通信号dqs/dqsn从存储芯片21接收到页时,等候缓冲器组142在通过s406从程序装置141接收到的指定的等候缓冲器147中,执行基于缓冲器保存指示、以及缓冲器输出指示的动作。即,从存储芯片21接收到的页保存于从等候缓冲器组142之中的程序装置141指定了的等候缓冲器147(s408)。而且,该等候缓冲器147在ecc电路145变为了能够执行处理时,将自身所保存的页之中的对象的簇向ecc电路145输出(s409)。等候缓冲器组142在s409的完成后,向等候缓冲管理器144通知输出了对象的簇的等候缓冲器147,等候缓冲管理器144根据该通知,将输出了对象的簇的等候缓冲器147所对应的计数器148的值减少1(s410)。
[0173]
ecc电路145能够执行对所输入的对象的簇的纠错,将执行了纠错后的对象的簇例如保存于ram13。
[0174]
此外,在图13所示的例子中,已经存在非使用中的等候缓冲器147。在非使用中的等候缓冲器147不存在的情况下,也就是说,程序装置141向等候缓冲管理器144发送查询时,在值为零的计数器148不存在的情况下,等候缓冲管理器144应答非使用中的等候缓冲器147不存在之意。于是,程序装置141使对象的第2读取指示的执行推迟,选择指示队列146
所保存的其他指示,具体而言,用于进行无需非使用中的等候缓冲器147的动作的指示来作为新的执行对象。在一例中,若被赋予了表示随机读取的读取模式标识的第2读取指示存在,则程序装置141能够选择该第2读取指示来作为新的执行对象。
[0175]
图14示出了,在图10所示的s103的处理中判定为将对象的簇的读取模式设定为随机读取的情况下执行由cpu11发行的第2读取指示的动作的一例。对该第2读取指示赋予了表示执行读出处理之意的标识、和表示随机读取的读取模式标识。另外,在对象的簇是跨簇的情况下,对该第2读取指示赋予了跨标识。将该第2读取指示在参照图14的说明中标记为对象的第2读取指示。另外,将通过对象的第2读取指示而作为读取对象的簇在参照图14的说明中标记为对象的簇。
[0176]
程序装置141在从指示队列146所保存的1个以上的第2读取指示之中选择了对象的第2读取指示的情况下(s501),首先,判定随机缓冲器143是否有空余。随机缓冲器143是否有空余的判定的方法并不限定于特定的方法。在一例中,随机缓冲器143将表示自身有空余的信息始终向程序装置141发送,程序装置141基于从随机缓冲器143接收到的信息判定随机缓冲器143是否有空余。此外,随机缓冲器143有空余是指,在随机缓冲器143存在例如1簇量的空余。
[0177]
在随机缓冲器143有空余的情况下,程序装置141开始对象的第2读取指示的执行(s502)。具体而言,程序装置141首先,从簇格式信息132取得对象的第2读取指示的执行所需的信息,向存储芯片21指示读出处理(s503)。也就是说,程序装置141发送读出命令集。在存储芯片21中开始读出处理时,就绪/忙信号线r/bn从就绪状态向忙状态转换。在存储芯片21中读出处理完成时,就绪/忙信号线r/bn从忙状态向就绪状态转换。
[0178]
程序装置141在基于就绪/忙信号线r/bn知晓存储芯片21中的读出处理的完成时,向随机缓冲器143发送保存对象的簇的缓冲器保存指示、和向ecc电路145输出对象的簇的缓冲器输出指示(s504)。而且,程序装置141将簇传送模式下的数据输出处理向存储芯片21指示(s505)。也就是说,程序装置141将包含表示对象的簇的起始的列地址的数据输出命令集向存储芯片21发送,之后,将一对读取使能信号re/ren翻转与对象的簇的大小对应的次数。
[0179]
在nandc14接收到对象的簇时,随机缓冲器143执行基于通过s504从程序装置141接收到的缓冲器保存指示以及缓冲器输出指示的动作。即,从存储芯片21接收到的对象的簇保存于随机缓冲器143(s506)。而且,随机缓冲器143在ecc电路145变为了能够执行处理时,将自身所保存的对象的簇向ecc电路145输出(s507)。
[0180]
ecc电路145执行对所输入的对象的簇的纠错,能够将执行了纠错后的对象的簇例如保存于ram13。
[0181]
此外,关于跨簇,在顺序读取的情况下,例如,由cpu11生成在跨簇的前半部分和跨簇的后半部分中各自不同的第2读取指示,并保存于指示队列146。nandc14对与跨簇的前半部分相关的第2读取指示、和与跨簇的后半部分相关的第2读取指示的每一个,执行图11~图13所示的动作中的任一个动作。其中,在从等候缓冲器组142向ecc电路145输出对象的簇时,将对象的簇的前半部分的输出、和对象的簇的后半部分的输出按该顺序执行。对来自等候缓冲器组142的对象的簇的前半部分的输出与来自等候缓冲器组142的对象的簇的后半部分的输出进行等候而执行。
[0182]
关于跨簇,在随机读取的情况下,例如,由cpu11生成将跨簇的前半部分和跨簇的后半部分作为读取对象的1个第2读取指示,并保存于指示队列146。nandc14在执行该第2读取指示时,针对对象的簇的前半部分、和对象的簇的后半部分中的每一个执行图14所示的s503的处理。然后,s504的处理仅执行1次。然后,针对对象的簇的前半部分执行s505~s506的处理,之后,针对对象的簇的后半部分执行s505~s506的处理。由此,在随机缓冲器143中,将对象的簇的前半部分和对象的簇的后半部分结合。然后,执行s507的处理。
[0183]
图15是用于说明实施方式的等候缓冲器组142的管理方法的图。在此,对在图7所示的例子中,在n值是「23」的情况下,将簇cl1~簇cl6按该顺序通过第1读取指示而作为读取的对象的情况进行说明。簇cl3是跨簇,被分割为面#0的快页所保存的簇cl3的前半部分(标记为簇cl3a)、和面#1的快页所保存的簇cl3的后半部分(标记为簇cl3b)。
[0184]
另外,簇cl1~簇cl6各自的读取,通过将由图10所示的s103的判定处理被赋予了表示顺序读取的读取模式标识的第2读取指示,被指示给nandc14。而且,对将簇cl3作为读取的对象的第2读取指示赋予了跨标识。
[0185]
另外,在开始簇cl1~簇cl6的读取的时间点,将多个等候缓冲器147之中的等候缓冲器#0和等候缓冲器#1设为非使用中、也即是各自所对应的计数器148的值设为零。
[0186]
此外,簇cl1~簇cl6被分散为属于面#0的1个页、和属于面#1的1个页而保存。也就是说,在面#0以及面#1的每一个中需要执行读出处理。另外,读出处理需要比数据输出处理等更长的时间。因此,cpu11也可以控制向指示队列146的第2读取指示的入队的顺序,以使得在面#0以及面#1的每一个中优先执行读出处理。
[0187]
如图15所示,在此作为一例,cpu11将以簇cl1作为读取的对象的第2读取指示、以簇cl3b作为读取的对象的第2读取指示、以簇cl2作为读取的对象的第2读取指示、以簇cl3a作为读取的对象的第2读取指示、以簇cl4作为读取的对象的第2读取指示、以簇cl5作为读取的对象的第2读取指示、以及以簇cl6作为读取的对象的第2读取指示按该顺序向指示队列146进行了入队。
[0188]
首先,程序装置141开始以簇cl1作为读取的对象的第2读取指示的执行(s601)。在以簇cl1作为读取的对象的第2读取指示的执行中包含:读出处理、页传送模式下的数据输出处理、以及从等候缓冲器#0的簇cl1的输出。也就是说,选择非使用中的等候缓冲器#0,nandc14将包含通过页传送模式下的数据输出处理从存储芯片21接收到的簇cl1的页保存于所选择出的等候缓冲器#0。而且,将所选择出的等候缓冲器#0所保存的数据之中的簇cl1输出至ecc电路145。在以簇cl1作为读取的对象的第2读取指示的执行开始时,等候缓冲器#0所对应的计数器148的值增加1而变为1。
[0189]
接着,程序装置141开始以簇cl3b作为读取的对象的第2读取指示的执行(s602)。在以簇cl3b作为读取的对象的第2读取指示的执行中包含:读出处理、页传送模式下的数据输出处理、以及从等候缓冲器#1的簇cl3b的输出。也就是说,选择非使用中的等候缓冲器#1,nandc14将包含通过页传送模式下的数据输出处理从存储芯片21接收到的簇cl3b的页保存于所选择出的等候缓冲器#1。而且,所选择出的等候缓冲器#1所保存的数据之中的簇cl3b被输出至ecc电路145。在以簇cl3b作为读取的对象的第2读取指示的执行开始时,等候缓冲器#1所对应的计数器148的值增加1而变为1。
[0190]
接着,程序装置141开始以簇cl2作为读取的对象的第2读取指示的执行(s603)。以
簇cl2作为读取的对象的第2读取指示的执行包含从等候缓冲器#0的簇cl2的输出。在以簇cl2作为读取的对象的第2读取指示的执行的开始时,等候缓冲器#0所对应的计数器148的值增加1而变为2。
[0191]
接着,程序装置141开始以簇cl3a作为读取的对象的第2读取指示的执行(s604)。在以簇cl3a作为读取的对象的第2读取指示的执行中包含从等候缓冲器#0的簇cl3a的输出。在以簇cl3a为读取的对象的第2读取指示的执行的开始时,等候缓冲器#0所对应的计数器148的值增加1而变为3。
[0192]
接着,程序装置141开始以簇cl4作为读取的对象的第2读取指示的执行(s605)。以簇cl4作为读取的对象的第2读取指示的执行包含从等候缓冲器#1的簇cl4的输出。在以簇cl4作为读取的对象的第2读取指示的执行的开始时,等候缓冲器#1所对应的计数器148的值增加1而变为2。
[0193]
接着,程序装置141开始以簇cl5作为读取的对象的第2读取指示的执行(s606)。在以簇cl5作为读取的对象的第2读取指示的执行中包含从等候缓冲器#1的簇cl5的输出。在以簇cl5作为读取的对象的第2读取指示的执行的开始时,等候缓冲器#1所对应的计数器148的值增加1而变为3。
[0194]
接着,程序装置141开始以簇cl6作为读取的对象的第2读取指示的执行(s607)。在以簇cl6作为读取的对象的第2读取指示的执行中包含从等候缓冲器#1的簇cl6的输出。在以簇cl6作为读取的对象的第2读取指示的执行的开始时,等候缓冲器#1所对应的计数器148的值增加1而变为4。
[0195]
接着,完成从等候缓冲器#0向ecc电路145的簇cl1的输出(s608)。由此,等候缓冲器#0所对应的计数器148的值减少1而变为2。
[0196]
接着,完成从等候缓冲器#0向ecc电路145的簇cl2的输出(s609)。由此,等候缓冲器#0所对应的计数器148的值减少1而变为1。
[0197]
接着,完成从等候缓冲器#0向ecc电路145的簇cl3a的输出(s610)。由此,等候缓冲器#0所对应的计数器148的值减少1而变为0。
[0198]
接着,完成从等候缓冲器#1向ecc电路145的簇cl3b的输出(s611)。由此,等候缓冲器#1所对应的计数器148的值减少1而变为3。
[0199]
接着,完成从等候缓冲器#1向ecc电路145的簇cl4的输出(s612)。由此,等候缓冲器#1所对应的计数器148的值减少1而变为2。
[0200]
接着,完成从等候缓冲器#1向ecc电路145的簇cl5的输出(s613)。由此,等候缓冲器#1所对应的计数器148的值减少1而变为1。
[0201]
接着,完成从等候缓冲器#1向ecc电路145的簇cl6的输出(s614)。由此,等候缓冲器#1所对应的计数器148的值减少1而变为0。
[0202]
图16是表示实施方式的等候缓冲器组142以及随机缓冲器143的动作的一例的流程图。将等候缓冲器组142以及随机缓冲器143进行统称而标记为缓冲器。此外,本图所示的一系列动作由管理相对于等候缓冲器组142以及随机缓冲器143的数据的输入输出的未图示的缓冲管理器来管理。由此,在本图的说明中,将缓冲管理器作为动作的主体进行说明。
[0203]
首先,缓冲管理器判定是否从程序装置141接收到缓冲器输出指示(s701)。在没有接收到缓冲器输出指示的情况下(s701:否),再次执行s701的处理。
[0204]
在缓冲管理器接收到缓冲器输出指示的情况下(s701:是),输出对象的簇的读取模式是顺序模式(s702:是),在输出对象的簇是跨簇的情况下(s703:是),缓冲管理器判定是否满足输出对象的簇的前半部分在等候缓冲器组142中保存第1量以上、且从程序装置141接收完成对于输出对象的簇的后半部分的缓冲器保存指示以及缓冲器输出指示这样的条件(s704)。
[0205]
在输出对象的簇的读取模式是顺序模式的情况下,使用等候缓冲器组142。另外,在输出对象的簇是跨簇的情况下,包含输出对象的簇的前半部分的页、和包含输出对象的簇的后半部分的页保存于各自不同的等候缓冲器147。若确定了包含输出对象的簇的前半部分的页、和包含输出对象的簇的后半部分的页各自的保存目的地的等候缓冲器147、且指示了输出对象的簇的前半部分以及后半部分的输出、且输出对象的簇的前半部分在等候缓冲器147中积存了预定量(在此为第1量),则能够开始从输出对象的簇的等候缓冲器组142的输出。也就是说,在s704中,判定是否能够开始从输出对象的簇的等候缓冲器组142的输出。
[0206]
此外,第1量能被任意设定。在一例中,第1量根据将等候缓冲器组142以及随机缓冲器143、与ecc电路145连接的配线的总线宽而被决定。例如在将等候缓冲器组142以及随机缓冲器143、与ecc电路145连接的配线的总线宽为64比特的情况下,64比特能被设定为第1量。
[0207]
在不满足s704的条件的情况下(s704:否),再次执行s704的处理。
[0208]
在满足了s704的条件的情况下(s704:是),缓冲管理器将输出对象的簇的前半部分以及后半部分从等候缓冲器组142按该顺序输出(s705)。而且,控制向s701转换。
[0209]
此外,在s704的判定处理中判定为“是”的时间点,输出对象的簇之中、存在未保存于等候缓冲器组142的部分的情况下,该部分在正在执行s705的处理期间被保存于等候缓冲器组142。也就是说,在等候缓冲器组142中,同时执行输出对象的簇的输入、和输出对象的簇的输出。由此,与将输出对象的簇的前半部分的全部以及后半部分的全部保存于等候缓冲器组142起开始s705的处理的情况相比,能够使输出对象的簇的输出开始的定时(timing)提前。此外,缓冲管理器也可以等待输出对象的簇的前半部分的全部以及后半部分的全部保存于等候缓冲器组142为止才开始s705的处理。
[0210]
在输出对象的簇的读取模式是顺序模式(s702:是)、输出对象的簇并非跨簇的情况下(s703:否),缓冲管理器判定输出对象的簇是否以第1量以上保存于等候缓冲器组142(s706)。
[0211]
在输出对象的簇没有以第1量以上保存于等候缓冲器组142的情况下(s706:否),再次执行s706的处理。
[0212]
在输出对象的簇以第1量以上保存于等候缓冲器组142的情况下(s706:是),缓冲管理器从等候缓冲器组142将输出对象的簇输出(s707)。然后,控制向s701转换。
[0213]
此外,缓冲管理器也可以等待直到输出对象的簇的全部保存于等候缓冲器组142为止才开始s707的处理。
[0214]
在输出对象的簇的读取模式并非顺序模式的情况下(s702:否),也就是说,输出对象的簇的读取模式是随机模式的情况下,与输出对象的簇是否属于跨簇无关,将输出对象的簇保存于随机缓冲器143。缓冲管理器判定输出对象的簇是否以第1量以上保存于随机缓
冲器143(s708)。
[0215]
在输出对象的簇没有以第1量以上保存于随机缓冲器143的情况下(s708:否),再次执行s708的处理。
[0216]
在输出对象的簇以第1量以上保存于随机缓冲器143的情况下(s708:是),缓冲管理器将输出对象的簇从随机缓冲器143输出(s709)。然后,控制向s701转换。
[0217]
此外,缓冲管理器也可以等待直到输出对象的簇的全部保存于随机缓冲器143为止才开始s709的处理。
[0218]
这样,根据实施方式,在顺序读取的情况下,即使作为读取的对象的簇的组包含跨簇,也将包含作为读取的对象的簇的一部分的页直接地(保持原样地)从存储芯片21传送至nandc14,在nandc14中保存于等候缓冲器组142。作为读取的对象的2个以上的簇从等候缓冲器组142起依次输出至ecc电路145。在作为读取的对象的簇是跨簇的情况下,从保存了包含该跨簇的前半部分的页的1个等候缓冲器147将该前半部分输出至ecc电路145,接着,从保存了包含该跨簇的后半部分的页的其他等候缓冲器147将该后半部分输出至ecc电路145。
[0219]
也就是说,根据实施方式,在设定了顺序读取的读取模式的情况下,即使作为读取的对象的2个以上的簇想要包含跨簇,也无需对该跨簇的前半部分的数据输出处理、和跨簇的后半部分的数据输出处理进行等候。
[0220]
因此,根据实施方式,通过利用顺序读取的读取模式,能够使面#0和面#1并行动作。
[0221]
图17是用于说明在实施方式的1个存储芯片21中使2个面并行动作的例子的图。在此,对如下情况进行说明,即,对于n值是「23」的超级页,将23个第1读取指示保存于入口队列134,以使得将簇cl0~簇cl6、簇cl8、簇cl7、簇cl9~簇cl22按该顺序读取,之后,通过s103的判定处理,作为簇cl0~簇cl6、簇cl8、簇cl7、簇cl9~簇cl22各自的读取模式被设定了顺序读取。
[0222]
此外,簇cl3、簇cl7、簇cl11、簇cl15、以及簇cl19各自属于跨簇。将跨簇的前半部分标记为簇clya,将跨簇的后半部分标记为簇clyb。其中,y是3,7,11,15,或19。
[0223]
nandc14首先,使面#0的访问电路24执行将由簇cl0~cl3a构成的页保存于数据锁存器25的读出处理(时刻t0)。于是,在面#0中开始读出处理。
[0224]
接着,nandc14使面#1的访问电路24执行将由簇cl3b~cl7a构成的页保存于数据锁存器25的读出处理(时刻t1)。于是,在面#1中开始读出处理。
[0225]
在面#0中完成读出处理时,nandc14执行由簇cl0~cl3a构成的页的数据输出处理。也就是说,nandc14以页传送模式取得由面#0的数据锁存器25所保存的簇cl0~cl3a构成的页。
[0226]
接着,完成由簇cl3b~cl7a构成的页的读出处理(时刻t2)。在该图的说明中,完成由簇cl3b~cl7a构成的页的读出处理的时刻t2比完成由簇cl0~cl3a构成的页的数据输出处理的时刻早。在正在执行数据输出处理期间,通道被数据输出处理所占有。由此,由簇cl3b~cl7a构成的页的数据输出处理等待直到通道变得能够利用。
[0227]
在完成由簇cl0~cl3a构成的页的页传送模式下的数据输出处理时,nandc14使面#0的访问电路24执行了将由簇cl7b~cl11a构成的页保存于数据锁存器25的读出处理之
后,执行由面#1的数据锁存器25所保存的簇cl3b~cl7a构成的页的页传送模式下的数据输出处理(时刻t3)。
[0228]
在完成由簇cl3b~cl7a构成的页的页传送模式下的数据输出处理时,nandc14使面#1的访问电路24执行将由簇cl11b~cl15a构成的页保存于数据锁存器25的读出处理。
[0229]
在面#0中,在完成由簇cl7b~cl11a构成的页的读出处理时,nandc14开始由簇cl7b~cl11a构成的页的数据输出处理。
[0230]
由面#0中的簇cl7b~cl11a构成的页的数据输出处理、和由面#1中的簇cl11b~cl15a构成的页的读出处理在该图的说明中以大致相同定时完成。在由面#0中的簇cl7b~cl11a构成的页的数据输出处理、和由面#1中的簇cl11b~cl15a构成的页的读出处理完成时,nandc14在使面#0的访问电路24执行将由簇cl15b~cl19a构成的页保存于数据锁存器25的读出处理之后,执行由面#1的数据锁存器25所保存的簇cl11b~cl15a构成的页的页传送模式下的数据输出处理(时刻t4)。
[0231]
在面#1中,在完成由簇cl11b~cl15a构成的页的页传送模式下的数据输出处理时,nandc14使面#1的访问电路24执行将由簇cl19b~cl22构成的页保存于数据锁存器25的读出处理。省略以后的处理的说明。
[0232]
在nandc14中,在等候缓冲器组142中保存由簇cl0~cl3a构成的页、由簇cl3b~cl7a构成的页、由簇cl7b~cl11a构成的页、由簇cl11b~cl15a构成的页、由簇cl15b~cl19a构成的页、以及由簇cl19b~cl22构成的页。而且,从等候缓冲器组142将簇cl0~簇cl6、簇cl7、簇cl8、簇cl9~簇cl22按该顺序输出至ecc电路145。
[0233]
在顺序读取的读取模式中,即使作为读取的对象的多个簇想要包含跨簇,也无需对该跨簇的前半部分的数据输出处理、和跨簇的后半部分的数据输出处理进行等候。由此,如图17所示,能够进行在2个面的一个面正在执行读出处理时在2个面的另一个面执行数据输出处理,在该另一个面中正在执行读出处理时在该一个面中执行数据输出处理这样的交错(interleave)动作。
[0234]
如以上所述,根据实施方式,作为读取对象的簇在面#0的子阵列23保存了一部分(标记为第1片段),在面#1的子阵列保存了剩余的一部分(标记为第2片段),在作为跨簇的情况下,存储控制器10、尤其是nandc14能够执行以下动作。即,nandc14通过使面#0的访问电路24执行包含第1片段的页的读出处理,使包含第1片段的页保存于面#0的数据锁存器25,通过使面#1的访问电路24执行包含第2片段的页的读出处理,使包含第2片段的页保存于面#1的数据锁存器25。而且,nandc14使包含面#0的数据锁存器25所保存的第1片段的页从存储芯片21输出,使包含该第1片段的页保存于等候缓冲器147之中的1个(标记为第1缓冲器)。另外,nandc14使包含面#1的数据锁存器25所保存的第2片段的页从存储芯片21输出,将包含该第2片段的页保存于等候缓冲器147之中的另外1个(标记为第2缓冲器)。而且,nandc14从第1缓冲器所保存的页中读出第1片段,从第2缓冲器所保存的页中读出第2片段,将第1片段和第2片段结合而向ecc电路145输入。
[0235]
由此,无需对用于传送第1片段的数据输出处理、和用于传送第2片段的数据输出处理进行等候。其结果,由于能够使面#0和面#1进行交错动作,所以提高从存储芯片向存储控制器的数据的传送速度。
[0236]
根据实施方式,nandc14将指示包含第1片段的页的输出的数据输出命令集向存储
芯片21发送。存储芯片21在接收到该数据输出命令集时,将包含第1片段的页的输出以页为单位输出。换言之,存储芯片21直到完成包含第1片段的页的输出为止无需任何命令的输入地执行包含第1片段的页的输出。另外,nandc14将指示包含第2片段的页的输出的数据输出命令集向存储芯片21发送。存储芯片21在接收到该数据输出命令集时,将包含第2片段的页的输出以页为单位输出。换言之,存储芯片21直到完成包含第2片段的页的输出为止无需输入任何命令地执行包含第2片段的页的输出。
[0237]
由此,在与第1片段或第2片段相同的页包含与跨簇不同的其他读取对象的簇的情况下,nandc14能够从第1缓冲器或第2缓冲器取得该其他读取对象的簇。也就是说,无需为了该其他读取对象的簇、和跨簇的每一个而执行个別地数据输出处理。
[0238]
根据实施方式,nandc14能够在页传送模式和簇传送模式中的任一个传送模式下进行动作。从存储芯片21向nandc14的数据的传送模式也可以除了页传送模式、和簇传送模式以外包含任意的模式。
[0239]
根据实施方式,存储控制器10、尤其是cpu11判定其他读取对象的簇是否包含于包含第1片段的页、和包含第2片段的页之中的任一个。在该其他读取对象的簇包含于包含第1片段的页、和包含第2片段的页之中的任一个的情况下,cpu11选择顺序读取来作为读取模式。在选择了顺序读取的情况下,nandc14以页传送模式执行数据输出处理。在其他读取对象的簇不包含于包含第1片段的页、和包含第2片段的页之中的任一个的情况下,cpu11选择随机读取来作为读取模式。在选择了随机读取的读取模式的情况下,nandc14以簇传送模式执行数据输出处理。
[0240]
根据实施方式,在存储控制器10、尤其nandc14选择了随机读取的情况下,使面#0的数据锁存器25所保存的页之中的第1片段向存储芯片21输出,使面#1的数据锁存器25所保存的页之中的第2片段向存储芯片21输出。而且,nandc14将第1片段以及第2片段结合而向ecc电路145输入。
[0241]
对本发明的几个实施方式进行了说明,但是这些实施方式是作为例子进行的提示,并不意在限定发明的范围。这些新的实施方式能够以其他各种方式实施,在不脱离发明的要旨的范围内能够进行各种省略、替换、变更。这些实施方式及其变形包含在发明的范围和要旨中、并且包含在权利要求的范围所记载的发明和与之均等的范围中。
[0242]
标号说明
[0243]
1存储系统、2主机、10存储控制器、20nand存储器、21存储芯片、22存储单元阵列、23子阵列、24访问电路、25数据锁存器、26nand串、131翻译信息、132簇格式信息、133数据锁存器信息、134入口队列、141程序装置、142等候缓冲器组、143随机缓冲器、144等候缓冲管理器、145ecc电路、146指示队列、147等候缓冲器、148计数器。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献