存储器控制器、包括存储器控制器的存储器系统和应用处理器的制作方法

文档序号:16972026发布日期:2019-02-26 18:38阅读:154来源:国知局
存储器控制器、包括存储器控制器的存储器系统和应用处理器的制作方法

本申请要求于2017年8月10日向韩国知识产权局提交的韩国专利申请第10-2017-0101705号的优先权,其公开内容通过引用整体并入本文。

发明构思涉及存储器控制器,并且更具体地,涉及控制存储纠错码(ecc)数据的存储器设备的存储器控制器和/或方法。



背景技术:

随着技术的发展,半导体存储器设备在容量和速度方面不断地提高。作为半导体存储器设备的一个示例,诸如dram设备的易失性存储器设备可以通过存储在电容器中的电荷来确定数据,并且当电源被关闭时擦除所存储的数据。

随着半导体存储器设备的操作速度的增加,存储数据的出错概率也增加。为了防止或减少由于增加错误发生而导致的性能退化的可能性,提出了各种校正错误的措施。



技术实现要素:

发明构思提供了用于存储器控制器、存储器系统和应用处理器的设备和/或方法。在一个实施例中,存储器控制器划分带内(in-band)ecc存储器设备的区域并且对被设置为ecc启用(enable)区域的存储页面(memorypage)的数据执行ecc操作。

根据发明构思的示例实施例,提供一种存储器控制器,被配置为控制包括多个存储页面的存储器设备,存储器控制器包括:纠错码(ecc)区域管理器,被配置为通过将多个存储页面划分为ecc启用区域和ecc禁用(disable)区域来管理多个存储页面;以及ecc引擎,被配置为对包括在ecc启用区域中的数据执行ecc操作。

根据发明构思的示例实施例,提供一种存储器系统,包括:存储器设备,被配置为包括多个存储页面;以及存储器控制器,被配置为控制存储器设备。存储器控制器被配置为通过将多个存储页面划分为ecc启用区域和ecc禁用区域来管理多个存储页面,并且被配置为将ecc数据和正常数据存储在ecc启用区域中。

根据发明构思的示例实施例,提供一种应用处理器,包括:存储器控制器,被配置为控制包括多个存储页面的外部存储器设备;以及处理器,被配置为向存储器控制器发送数据地址。存储器控制器被配置为从外部存储器设备或处理器接收数据,并且被配置为基于数据地址确定是否对接收到的数据执行ecc操作。

附图说明

从以下结合附图进行的详细描述中将更清楚地理解发明构思的实施例,在附图中:

图1示出根据发明构思的示例实施例的包括存储器系统的电子系统;

图2示出根据发明构思的示例实施例的存储器设备;

图3示出根据发明构思的示例实施例的存储页面;

图4a和图4b示出根据发明构思的示例实施例的存储器控制器和存储器设备;

图5示出根据发明构思的示例实施例的存储器模块;

图6示出根据发明构思的示例实施例的存储器控制器;

图7示出根据发明构思的示例实施例的存储器控制器;

图8示出根据发明构思的示例实施例的存储器控制器;

图9示出根据发明构思的示例实施例的存储器控制器的操作流程图;

图10示出根据发明构思的示例实施例的ecc高速缓存;

图11示出根据发明构思的示例实施例的ecc启用区域中包括的存储页面;

图12示出从图11的存储页面读取数据的时间流程图;

图13示出根据发明构思的示例实施例的ecc高速缓存的操作流程图;

图14示出根据发明构思的示例实施例的ecc高速缓存;

图15示出根据发明构思的示例实施例的向外部存储器模块发送数据以及从外部存储器模块接收数据的应用处理器;

图16示出根据发明构思的示例实施例的移动系统;以及

图17示出根据发明构思的示例实施例的计算系统。

具体实施方式

在以下描述中,可以参考可被实现为程序模块或功能过程(包括例程、程序、对象、组件、数据结构等)的执行特定任务或实现特定抽象数据类型的操作的行为和符号表示(例如,以流程图、流程示图、数据流程图、结构图、框图等形式)来描述说明性实施例。操作可以使用现有电子系统中的现有硬件来实现,诸如,一个或多个微处理器、中央处理单元(cpu)、数字信号处理器(dsp)、专用集成电路(asic)、片上系统(soc)、现场可编程门阵列(fpga)、计算机等。

如本文所使用的,诸如“管理器”、“单元”、“控制器”、“引擎”等的术语可以是或可以包括硬件、固件、运行软件的硬件、或其任何组合。这样的硬件可以包括一个或多个微处理器、cpu、soc、dsp、asic、fpga、计算机等,其被配置为用于执行本文描述的功能以及这些元件的任何其他公知功能的专用机器。在至少一些情况下,cpu、soc、dsp、asic和fpga一般可以被称为控制器、处理电路、处理器、和/或微处理器。

虽然可以关于顺序操作描述过程(process),但是许多操作可以并行地、并发地(concurrently)或同时地(simultaneously)执行。此外,可以重新安排操作的顺序。过程可以在其操作完成时被终止,但是也可以具有未包含在图中的附加步骤。过程可以对应于方法、函数、过程(procedure)、子例程、子程序等。当过程对应于函数时,其终止可以对应于将函数返回到调用函数或主函数。

如本文所公开的,术语“存储介质”、“计算机可读存储介质”或“非暂时性计算机可读存储介质”可以表示用于存储数据的一个或多个设备,包括只读存储器(rom)、随机存储器(ram)、磁ram、磁芯存储器、磁盘存储介质、光存储介质、闪存设备、和/或用于存储信息的其他有形机器可读介质。术语“计算机可读介质”可以包括但不限于便携式或固定存储设备,光存储设备,以及能够存储、包含或携带指令、和/或数据的各种其他介质。

图1示出根据发明构思的示例实施例的包括存储器系统100的电子系统10。

电子系统10可以包括存储器系统100和主机600。存储器系统100可以包括存储器控制器200和存储器模块400。存储器控制器200和主机600可以交换各种数据、数据地址信息等。存储器控制器200和存储器模块400可以通过bus2(总线2)和bus3(总线3)交换各种信号(dq、dqs、clk等)。可以在需要或利用存储器的各种电子设备(诸如,服务器、台式计算机、膝上型计算机、智能电话、平板电脑、打印机、扫描仪、监视器、数码相机、数字音乐播放器、数字媒体记录器、和/或便携式游戏机)中使用电子系统10,但是发明构思不限于此。

存储器模块400可以暂时或临时保存处理器已处理或将要处理的数据,并且可以用作计算系统中的操作存储器、工作存储器、和/或缓冲存储器。存储器模块400可以包括一个或多个存储器区块(rank)。存储器模块400可以被具体化为单列直插式存储器模块(simm)、双列直插式存储器模块(dimm)、小外形dimm(so-dimm)、无缓冲dimm(udimm)、全缓冲dimm(fbdimm)、区块缓冲dimm(rbdimm)、迷你型dimm和微型dimm,并且也可以被具体化为通常在服务器中使用的注册dimm(rdimm)或低负载dimm(lrdimm)。

存储器模块400可以包括多个存储器设备420_1至420_k(k是自然数)。存储器设备420_1至420_k中的每一个可以是或可以包括易失性存储器,诸如,动态随机存取存储器(dram)、同步dram(sdram)、双倍数据速率sdram(ddrsdram)、低功率双倍数据速率sdram(lpddrsdram)、图形双倍数据速率sdram(gddrsdram)、rambusdram(rdram)、和/或静态ram(sram),并且可以是或可以包括非易失性存储器,诸如,相变ram(pcram)、磁阻ram(mram)、reram、铁电ram(fram)、和/或闪存。而且,存储器设备420_1至420_k中的每一个可以是或可以包括根据各种标准的任何dra芯片,诸如ddr、ddr2、ddr3、ddr4、ddr5、lpddr1、lpddr2、lpddr3、和/或lpddr4。

在下文中,将提供描述,使得存储器设备420_1至420_k中的每一个是dram芯片。然而,存储器设备420_1至420_k的类型不限于此,并且它们可以包括不同类型的芯片。

存储器模块400可以是或可以包括包含纠错码(ecc)数据的ecc存储器模块。ecc存储器模块可以是或可以包括将ecc数据存储在与正常数据分开的芯片上的边带(side-band)存储器模块,并且可以是将ecc数据存储在与正常数据相同的芯片上的带内存储器模块。正常数据可以被称为实际数据。在边带存储器模块的情况下,需要单独的芯片来存储ecc数据,这会产生成本。在下文中,存储器模块400将被描述为带内存储器模块,并且存储器设备420_1至420_k中的至少一个存储正常数据和ecc数据两者。

存储器控制器200可以提供到存储器模块400的接口以管理去往或来自存储器模块400的数据流。存储器控制器200可以连接到存储器系统100外部的主机600,诸如处理器,并且可以通过各种接口协议(诸如,usb、mmc、pcie、高级技术附件(ata)、串行ata、并行ata、scsi、esdi和集成驱动电子器件(ide))中的至少一种与主机600进行通信,并且可以通过诸如bus1的bus(总线)与主机600进行通信。存储器控制器200可以被具体化为单独的芯片,可以与存储器模块400集成,或可以被具体化为单个芯片,诸如主机600中的片上系统(soc)。存储器控制器200可以在母板上被具体化并且也可以被具体化为包括在微处理器中的集成存储器控制器(imc)。而且,存储器控制器200可以位于输入和输出集线器中,并且包括存储器控制器200的输入和输出集线器可以被称为存储器控制器集线器(mch)。

存储器控制器200可以包括ecc高速缓存220,使得临时存储ecc数据,从而减少由于执行ecc操作引起的开销。存储器控制器200可以包括ecc区域(region)管理器240以管理存储器设备420_1至420_k。将参考下面的附图提供ecc高速缓存220和ecc区域管理器240的描述。

存储器控制器200可以包括ecc引擎260以执行ecc操作。ecc操作可以包括错误检测操作和错误校正操作。ecc引擎260可以包括在数据写入模式下生成写入数据的ecc数据的ecc编码器、以及在数据读取模式下执行错误校正操作的ecc解码器。ecc可以包括但不限于奇偶性、循环冗余码(crc)、校验和、和/或汉明码。

bus2可以包括数据总线,并且bus3可以包括各种总线,诸如控制总线、和/或命令/地址总线。存储器控制器200可以通过bus2和bus3向存储器模块400发送命令/地址信号cmd/addr、控制信号ctrl、数据dq和数据选通信号dqs,以及从存储器模块400接收命令/地址信号cmd/addr、控制信号ctrl、数据dq和数据选通信号dqs。存储器控制器200可以控制从存储器模块400读取数据dq以及向存储器模块400写入数据dq。存储器控制器200可以将命令/地址信号cmd/addr和控制信号ctrl提供给存储器模块400;并且可以在根据命令/地址信号cmd/addr设置的写入或读取模式下,基于控制信号ctrl控制向存储器设备420_1至420_k中的要访问的存储器设备发送数据dq以及从该要访问的存储器设备接收数据dq。

主机600可以将数据和输入信息发送到存储器系统100。例如,主机600可以向存储器系统100输出各种输入信息,诸如,读取请求、写入请求、和/或擦除请求。主机600可以被具体化为包括中央处理单元(cpu)或图形处理单元(gpu)的片上系统(soc)和/或存储器控制器200。输入信息可以包括命令、地址、优先级信息等。主机600和存储器控制器200可以通过bus1彼此发送各种数据和输入信息,并且输入信息的类型不限于上述示例。例如,主机600和存储器控制器200可以基于各种接口协议(诸如,通用串行总线(usb)协议、多媒体卡(mmc)协议、串行ata协议、并行-ata协议、小型计算机小接口(scsi)协议、增强型小磁盘接口(esdi)协议和ide协议)中的至少一种交换数据。

主机600可以将区域判定控制信号rdcs发送到存储器控制器200以区分ecc启用区域。另外,主机600可以取决于数据的类型来确定数据是否要经受ecc操作,并且可以基于确定的结果分配存储数据的地址。下面将参考附图提供其详细描述。

图2示出根据发明构思的示例实施例的存储器设备420。

存储器设备420可以包括多个存储体(bank),并且存储体可以包括存储块(block)。例如,存储器设备420可以包括多个存储块blk_0至blk_n-1(n是自然数)。存储块blk_0至blk_n-1中的每一个可以包括多个存储页面pag_0至pag_k-1(k是自然数)。存储页面pag_0至pag_k-1中的每一个可以包括由一个行地址访问的存储器,并且这些存储器可以被包括在一个字线中。

参考图2,正常数据及其ecc数据可以存储在同一存储页面上。在存储页面pag_0至pag_k-1中的每一个中存储正常数据的区域可以被称为数据区(zone),并且在存储页面pag_0至pag_k-1中的每一个中存储ecc数据的区域可以被称为ecc区。例如,存储页面pag_0至pag_k-1中的每一个可以包括ecc区和数据区。正常数据和ecc数据存储在同一页面中的存储器设备可以被称为直插式(in-line)ecc存储器设备。

当存储器控制器从存储器设备420读取数据或向存储器设备420写入数据时,做出执行激活存在数据的行的操作。由于存储正常数据的数据区和存储ecc数据的ecc区位于同一存储页面上,所以存储器控制器可以通过一次激活操作从存储器设备420读取正常数据和ecc数据两者。

在存储页面pag_0至pag_k-1中的每一个中的ecc区的容量与数据区的容量的比率可以取决于所使用的ecc数据的特性而变化。当使用64/72汉明码作为ecc时,对于64位的每条正常数据,包括8位的ecc数据,因此ecc区的容量与数据区的容量的比率可以是1:8。然而,ecc的类型以及ecc区的容量与数据区的容量的比率不限于此。例如,在1位错误检测的情况下,对于128位的每条正常数据,需要8位的ecc数据,因此ecc区的容量与数据区的容量的比率可以是1:16。

图3示出根据发明构思的示例实施例的存储页面。

如参考图2所述,存储器设备可以包括多个存储页面,并且直插式ecc存储器设备中的每个存储页面可以包括存储ecc数据的ecc区和存储正常数据的数据区。参考图3,存储页面可以进一步包括作为消耗区域(consumedregion)的死区。例如,存储页面可以包括死区、ecc区和数据区。死区可以是在调整ecc区的容量与数据区的容量的比率过程中不可避免地产生的浪费区。

作为一个示例实施例,可以假设存储页面具有2kb(2048个字节)的容量并且ecc是64/72汉明码,来描述存储页面的构造。当ecc是64/72汉明码时,对于64位的每条正常数据,包括8位的ecc数据,因此以64:8的比率划分2kb以形成数据区和ecc区。因此,数据区占用的容量可以为1792个字节,并且ecc区占用的容量可以为224个字节。这里,会存在不可避免的消耗区域,并且死区的容量可以为32个字节。结果,为了保存ecc数据,会消耗2kb中的被ecc区和死区占用的256个字节。

在另一示例实施例中,可以假设存储页面具有1kb(1024个字节)的容量并且ecc是64/72汉明码,来描述存储页面的构造。当ecc是64/72汉明码时,对于64位的每条正常数据,需要8位的ecc数据,因此1kb被划分为64:8以形成数据区和ecc区。因此,数据区的容量可以为896个字节,并且ecc区的容量可以为112个字节。这里,会存在不可避免的消耗区域,并且死区的容量可以为16个字节。结果,为了保存ecc数据,会消耗1kb中的被ecc区和死区占用的128个字节。

然而,发明构思不限于上述两个实施例,并且取决于在存储页面中使用的ecc的类型,存储页面的配置可以根据上述各种方法而变化。

图4a和图4b示出根据示例实施例的存储器控制器200a和200b以及存储器设备420a和420b。

存储器控制器200a和200b可以控制包括多个存储页面的存储器设备420a和420b。存储器控制器200a和200b可以控制多个存储器设备420a和420b,但是为了方便起见,存储器控制器200a和200b将分别被描述为操作存储器设备420a和420b。

存储器控制器200a和200b可以分别包括ecc区域管理器240a和240b。ecc区域管理器240a和240b可以通过将存储器设备420a和420b的多个存储页面划分成ecc启用区域和ecc禁用区域来管理存储器设备420a和420b的多个存储页面。包括在ecc启用区域中的存储页面可以被称为ecc存储页面。如参考图2和图3所述,正常数据和ecc数据两者可以存储在ecc存储页面中。例如,ecc存储页面可以包括存储正常数据的数据区、存储ecc数据的ecc区、以及要消耗的死区。同时,包括在ecc禁用区域中的存储页面是不需要保存ecc数据的区域,因此可以仅保存正常数据。

ecc区域管理器240a和240b可以从存储器控制器200a和200b的外部(例如,主机)接收用于识别ecc启用区域的区域判定控制信号rdcs。区域判定控制信号rdcs可以包括指示包括在存储器设备420a和420b中的哪些存储区域被分配给ecc启用区域的信息。基于区域判定控制信号rdcs,ecc区域管理器240a和240b可以通过将存储器设备420a和420b中的每一个划分为ecc启用区域和ecc禁用区域来管理存储器设备420a和420b中的每一个。因此,关于存储器设备420a和420b中的ecc启用区域的信息可以作为区域数据被存储。

参考图4a,区域数据可以包括ecc启用区域的地址信息。例如,区域数据可以包括ecc启用区域开始的存储页面的行地址和ecc启用区域结束的存储页面的行地址。这里,假定存储器设备420a中的m个ecc启用区域(m是自然数)由ecc区域管理器240a管理。ecc区域管理器240a可以存储作为第一ecc启用区域432a开始的存储页面的行地址的ecc_start_0和作为第一ecc启用区域432a结束的存储页面的行地址的ecc_end_0。另外,ecc区域管理器240a可以存储作为第m个ecc启用区域430a开始的存储页面的行地址的ecc_start_m-1和作为第m个ecc启用区域430a结束的存储页面的行地址的ecc_end_m-1。ecc区域管理器240a可以基于关于所存储的ecc启用区域的行地址的信息来识别存储器设备420a的ecc启用区域和ecc禁用区域。

区域数据存储关于ecc启用区域的地址信息的方法不限于此。作为另一示例,区域数据可以存储ecc启用区域开始的存储页面的行地址和ecc启用区域的大小。ecc区域管理器240a可以存储作为第一ecc启用区域432a开始的存储页面的行地址的ecc_start_0和作为第一ecc启用区域432a的大小的ecc_size_0。另外,ecc区域管理器240a可以存储作为第m个ecc启用区域430a开始的存储页面的行地址的ecc_start_m-1和作为第m个ecc启用区域430a的大小的ecc_size_m-1。作为另一示例,区域数据可以存储ecc启用区域结束的存储页面的行地址和ecc启用区域的大小。

参考图4b,ecc区域管理器240b可以将存储器设备420b划分为第一存储区域memoryregion_1至第n存储区域memoryregion_n(n是自然数),使得可以通过将存储器设备420b的多个存储页面划分为ecc启用区域和ecc禁用区域来管理存储器设备420b的多个存储页面。每个存储区域可以包括多个存储页面。区域数据可以包括指示每个存储器区域是ecc启用区域还是ecc禁用区域的信息。

假定存储区域中的第一存储区域、第二存储区域、第k存储区域、第n存储区域等包括在ecc启用区域中,来描述区域数据。区域数据可以包括示出存储区域之中的包括在ecc启用区域中的存储区域的表格。尽管未示出,但是ecc区域管理器240b可以存储每个存储区域的表格和地址信息。

区域数据存储关于ecc启用区域的信息的方法不限于此。作为另一示例,区域数据可以包括示出存储区域之中的包括在ecc禁用区域中的存储区域的表格。

包括在ecc启用区域中的ecc存储页面的一些容量被用作ecc区和死区,并且因此可以不存在容量浪费或减少容量浪费。如参考图4a和图4b所述,存储器设备420a和420b中的存储不需要ecc操作的数据的一些区域被识别为ecc禁用区域,因此防止或减少容量浪费,并且因此可以降低成本。

图5示出根据发明构思的示例实施例的存储器模块400。

存储器模块400可以包括多个存储器设备,并且多个存储器设备可以是或可以包括dramchip_1(芯片_1)420_1至dramchip_n(芯片_n)420_n(n是自然数)。存储器模块400可以不具有用于存储ecc数据的单独的存储器设备,并且存储器模块400可以是将正常数据和ecc数据存储在同一存储器设备上的带内ecc模块。dramchip_1420_1至dramchip_n420_n中的每一个可以存储正常数据和ecc数据两者。而且,dramchip_1420_1至dramchip_n420_n中的每一个可以是直插式ecc存储器设备,其中正常数据和ecc数据存储在存储页面中。包括在dramchip_1420_1至dramchip_n420_n中的每一个中的存储页面可以包括数据区和ecc区,并且还可以包括死区。

如参考图4所述,dramchip_1420_1至dramchip_n420_n中的每一个可以由存储器控制器划分为多个存储区域,并且存储器控制器的ecc区域管理器可以通过将dramchip_1420_1至dramchip_n420_n至少划分为ecc启用区域和ecc禁用区域来管理dramchip_1420_1至dramchip_n420_n中的每一个的存储区域。参考图5,包括在存储器模块400中的dramchip_1420_1至dramchip_n420_n中的每一个可以以芯片为单位(inchipunit)被划分为ecc启用区域和ecc禁用区域。例如,dramchip_1420_1和dramchip_n420_n可以全部被分类为ecc禁用区域,并且不需要ecc操作的数据可以被存储在dramchip_1420_1和dramchip_n420_n中。因此,dramchip_1420_1和dramchip_n420_n可以仅存储正常数据。作为整体分类为ecc启用区域的存储器设备可以被称为全ecc(full-ecc)存储器设备。另外,例如,dramchip_2420_2和dramchip_n-1420_n-1可以全部被分类为ecc启用区域,并且dramchip_2420_2和dramchip_n-1420_n-1可以存储需要ecc操作的数据。因此,dramchip_2420_2和dramchip_n-1420_n-1可以存储正常数据和ecc数据。其中所有存储页面被设置为ecc启用区域的存储器芯片(例如,dramchip_2420_2和dramchip_n-1420_n-1)中包括的存储页面可以包括数据区和ecc区,并且可以还包括死区。作为整体分类为ecc禁用区域的存储器设备可以被称为全非ecc(full-nonecc)存储器设备。

图6示出根据发明构思的示例实施例的存储器控制器200。

存储器控制器200可以包括ecc区域管理器240、ecc判定器或ecc判定单元250、以及ecc引擎260。

ecc区域管理器240可以通过将存储器设备的多个存储页面划分为ecc启用区域和ecc禁用区域来管理存储器设备的多个存储页面。ecc区域管理器240可以存储区域数据rgn_dat以将存储页面划分为ecc启用区域和ecc禁用区域。另外,ecc区域管理器240可以将区域数据rgn_dat发送到ecc判定单元250。参考图4a和图4b提供ecc区域管理器240和区域数据rgn_dat的详细描述。

ecc判定单元250可以确定是否将对输入到存储器控制器200的数据执行ecc操作。ecc判定单元250可以从ecc区域管理器240接收区域数据rgn_dat,并且基于区域数据rgn_dat确定输入数据的类型。

在数据写入模式下,存储器控制器200可以从主机接收写入数据wdata和将要存储写入数据的地址addr。ecc判定单元250可以接收写入数据wdata和地址addr。ecc判定单元250可以将写入数据的地址addr与从ecc区域管理器240接收的区域数据rgn_dat进行比较,然后确定是否执行写入数据wdata的ecc操作。作为比较的结果,当写入数据wdata的地址addr包括在存储器设备的ecc启用区域中时,ecc判定单元250可以确定将对写入数据wdata执行ecc操作。然而,当写入数据wdata的地址addr包括在ecc禁用区域中时,ecc判定单元250可以确定写入数据wdata不需要ecc操作。

在数据读取模式下,存储器控制器200可以从主机接收存储数据的地址addr,并且可以从存储器设备接收读取数据rdata。ecc判定单元250可以将读取数据的地址addr与从ecc区域管理器240接收的区域数据rgn_dat进行比较,然后可以确定是否将执行读取数据rdata的ecc操作。作为比较的结果,当读取数据rdata的地址addr包括在存储器设备的ecc启用区域中时,ecc判定单元250可以确定将对读取数据rdata执行ecc操作。然而,当读取数据rdata的地址addr包括在存储器设备的ecc禁用区域中时,ecc判定单元250可以确定读取数据rdata不需要ecc操作。当读取数据需要ecc操作时,ecc判定单元250可以接收ecc数据recc以及读取数据以将它们发送到ecc引擎260。

ecc引擎260可以在数据写入模式下执行ecc编码,并且可以在数据读取模式下执行ecc解码。为此,ecc引擎260可以包括ecc编码器264和ecc解码器262。

ecc编码器264可以从ecc判定单元250接收需要ecc操作的写入数据wdata。ecc编码器264可以对写入数据wdata执行ecc编码。ecc编码器264可以生成用于校正64位的写入数据wdata的错误的ecc数据wecc[0:8]。例如,ecc编码器264可以关于以64位为单位输入的写入数据wdata[0:64]生成8位的汉明码。ecc编码器264可以将写入数据wdata和ecc数据wecc[0:8]发送到存储器设备。尽管64/72汉明码被描述为被使用,但是发明构思不限于此。还可以使用包括奇偶性或循环冗余码(crc)的ecc。

ecc解码器262可以从ecc判定单元250接收需要ecc操作的读取数据rdata和读取数据rdata的ecc数据recc。ecc解码器262可以对读取数据rdata执行ecc解码。例如,ecc解码器262可以执行错误校正功能。例如,ecc解码器262可以通过使用以64位为单位输入的读取数据rdata[0:64]和8位的汉明码recc[0:8]来执行数据校正功能。ecc解码器262可以将校正后的读取数据rdata_c发送到存储器设备。尽管64/72汉明码被描述为被使用,但是发明构思不限于此。还可以使用包括奇偶性或crc的ecc。

如上所述,存储器控制器200可以包括ecc区域管理器240和ecc判定单元250,并且因此确定输入的写入数据wdata和读取数据rdata的特性。仅当输入数据需要ecc操作时,执行这样的ecc操作,由此减少了由于ecc导致的开销。

图7示出根据发明构思的示例实施例的存储器控制器200。

在数据写入模式下,存储器控制器200可以从存储器控制器200的外部(例如,主机)接收写入数据wdata和将要存储写入数据wdata的地址addr。包括在存储器控制器200中的ecc判定单元250可以接收写入数据wdata和地址addr。ecc判定单元250可以从ecc区域管理器接收区域数据rgn_dat。ecc判定单元250可以将区域数据rgn_dat与地址addr进行比较以确定是否执行写入数据wdata的ecc操作。

在比较了将要存储写入数据wdata的地址addr与区域数据rgn_dat之后,当地址addr包括在ecc禁用区域中时,写入数据wdata可以通过路径①被输入到存储器设备。换句话说,当地址addr包括在ecc禁用区域中时,ecc判定单元250可以确定写入数据wdata不需要ecc操作,并且可以不对写入数据wdata执行ecc编码以将写入数据wdata发送到存储设备。

在比较了将要存储写入数据wdata的地址addr与区域数据rgn_dat之后,当地址addr包括在ecc启用区域中时,写入数据wdata可以通过路径②被输入到存储器设备。换句话说,当地址addr包括在ecc启用区域中时,ecc判定单元250可以确定写入数据wdata需要ecc操作,并且可以将写入数据wdata发送到ecc引擎260的ecc编码器264。ecc编码器264可以对写入数据wdata执行ecc编码。例如,ecc编码器264可以关于以64位为单位输入的写入数据wdata[0:64]生成8位的汉明码。例如,ecc编码器264可以生成用于校正64位的写入数据wdata的错误的ecc数据wecc[0:8]。ecc编码器264可以将写入数据wdata和ecc数据wecc[0:8]发送到存储器设备。尽管在示例实施例中64/72汉明码被描述为被使用,但是发明构思不限于此,并且可以使用诸如奇偶性和crc的ecc。

图8示出根据发明构思的示例实施例的存储器控制器200。

在数据读取模式下,存储器控制器200可以从主机接收存储读取数据rdata的地址addr,并且可以从存储器设备接收读取数据rdata。包括在存储器控制器200中的ecc判定单元250可以接收读取数据rdata和地址addr。ecc判定单元250可以从ecc区域管理器接收区域数据rgn_dat。ecc判定单元250可以将区域数据rgn_dat与地址addr进行比较,以确定是否执行读取数据rdata的ecc操作。

在比较了将要存储读取数据rdata的地址addr与区域数据rgn_dat之后,当地址addr包括在ecc禁用区域中时,读取数据rdata可以通过路径①输入到主机。换句话说,当地址addr包括在ecc禁用区域中时,ecc判定单元250可以确定读取数据rdata不需要ecc操作,并且可以不对读取数据rdata执行ecc解码以将读取数据rdata发送到主机。

在比较了存储读取数据rdata的地址addr与区域数据rgn_dat之后,当地址addr包括在ecc启用区域中时,读取数据rdata可以通过路径②输入到主机。换句话说,当地址addr包括在ecc启用区域中时,ecc判定单元250可以确定读取数据rdata需要ecc操作,并且可以将读取数据rdata发送到ecc引擎260的ecc解码器262。ecc解码器262可以对接收到的读取数据rdata执行ecc解码。换句话说,ecc解码器262可以执行错误校正功能。例如,ecc解码器262可以通过使用以64位为单位输入的读数据rdata[0:64]和8位的汉明码recc[0:8]来执行数据校正功能。ecc解码器262可以将校正后的读取数据rdata_c发送到主机。尽管在示例实施例中64/72汉明码被描述为被使用,但是发明构思不限于此,并且可以使用诸如奇偶性或crc的ecc。

图9示出根据发明构思的示例实施例的存储器控制器的操作流程图。

存储器控制器可以从主机接收地址addr,并且可以在数据写入模式下从主机接收数据data,或者在数据读取模式下从存储器设备接收数据data。例如,可以从外部向存储器控制器输入数据data和地址addr(s110)。参考图6,输入的数据data和地址addr可以被发送到ecc判定单元250,并且ecc判定单元250可以将地址addr与从ecc区域管理器240接收的区域数据rgn_dat进行比较(s120)。ecc判定单元250可以确定指示存储数据的位置的地址addr是否包括在ecc启用区域中(s130)。如果地址addr未包括在ecc启用区域中,则ecc判定单元250可以确定该数据不需要ecc操作,例如,ecc操作不合理(justified),并且可以不将数据发送到ecc引擎。如果地址addr包括在ecc启用区域中,则ecc判定单元250可以确定数据需要ecc操作,并且可以将数据发送到ecc引擎。ecc引擎可以对发送的数据执行ecc操作(ecc编码或ecc解码)(s140)。

如上所述,存储器控制器仅对已存储或将要存储在ecc启用区域中的数据执行ecc操作,并且因此可以减少由于ecc导致的开销。

图10示出根据发明构思的示例实施例的ecc高速缓存220。

存储器控制器可以包括用于临时存储ecc数据的ecc高速缓存220,ecc高速缓存220可以包括命中/未命中检测内容可寻址存储器(hit/missdetectioncam)222、ecc地址(eccaddr)以及用于存储ecc数据的多个存储器224_1至224_m(m是自然数)。为了描述ecc高速缓存220的操作,首先描述从存储器设备读取数据的方法。ecc高速缓存220可以临时存储ecc数据,使得ecc数据易于访问。

存储器控制器可以通过突发操作(burstoperation)从存储器设备接收数据。突发操作可以指通过从初始地址顺序地减少或增加地址来同时读取或写入数据的操作。突发操作的基本单位可以是突发长度bl。参考图10,突发长度bl可以是16。突发长度可以包括16位,即2个字节的数据。当执行前述突发操作时,可以读取32个字节的数据,例如,通过一次单个读取操作同时从存储器设备读取32个字节的数据。在下文中,突发长度被描述为16,但是突发长度不限于此。例如,突发长度可以是2、4、8或32,并且当突发长度是32时,可以通过一次单个读取操作从存储器设备同时读取64个字节的数据。

当突发长度为16时,可以通过一次单个读取操作从存储器设备同时读取32个字节的数据。当从存储器设备的ecc启用区域中包括的存储页面读取32个字节的正常数据(即,实际数据actualdata)时,可能需要依次读取ecc数据eccdata以执行ecc解码。对32个字节的actualdata执行ecc解码所需的ecc数据可以是4个字节。然而,由于32个字节的数据是通过一次单个读取操作同时接收的,所以下一个地址中的实际数据的ecc数据可以在剩余的28个字节中同时读取。因此,如果下一个地址中的ecc数据存储在存储器控制器中,则当读取对应于下一个地址的实际数据actualdata时,存储器控制器不需要或者没有理由从数据设备读取额外的ecc数据。

因此,ecc高速缓存220可以用ecc地址eccaddr将读取的ecc数据存储在多个存储器224_1至224_m中。ecc高速缓存220的命中/未命中检测内容可寻址存储器(contentaddressablememory,cam)222可以根据存储器控制器的数据读取命令来检测在要读取的数据的地址与存储在ecc高速缓存220中的地址之间是否存在命中。当要读取的数据的ecc数据被存储在ecc高速缓存220的多个存储器224_1至224_m中时,会发生命中。这里,存储器控制器可以不单独地(separately)读取ecc数据,并且可以通过使用存储在ecc高速缓存220中的ecc数据来执行ecc解码。

图11示出根据发明构思的示例实施例的包括在ecc启用区域中的存储页面pag_a。

包括在ecc启用区域中的存储页面pag_a可以包括ecc区和数据区,并且还可以包括死区。存储在数据区中的正常数据可以以32个字节的单位划分为多个存储扇区r0、r1、r2、r3……。当ecc使用64/72汉明码时,32个字节的正常数据的ecc数据可以是4个字节。因此,存储在ecc区中的ecc数据可以以4个字节为单位划分为多个ecc存储扇区e0、e1、e2、e3……。包括在第一存储扇区r0中的正常数据的ecc数据可以存储在第一ecc存储扇区e0中,包括在第二存储扇区r1中的正常数据的ecc数据可以存储在第二ecc存储扇区e1中,包括在第三存储扇区r2中的正常数据的ecc数据可以存储在第三ecc存储扇区e2中,和/或包括在第四存储扇区r3中的正常数据的ecc数据可以存储在第四ecc存储扇区e3中。

图12示出从图11的存储页面pag_a读取数据的时间流程图。

参考图11和图12,根据r0读取命令readr0,存储器控制器可以激活包括第一存储扇区r0的存储页面pag_a,并且可以从存储页面pag_a读取包括在第一存储扇区r0中的正常数据r0data。这里,包括第一存储扇区r0的存储页面pag_a是包括在ecc启用区域中的存储页面,并且因此存储器控制器可以从存储页面pag_a读取包括在第一ecc存储扇区e0中的ecc数据。当突发长度是16时,存储器控制器可以从存储器设备读取(例如,同时读取)32个字节的数据,并且由于包括在第一ecc存储扇区e0中的数据是4个字节,还可以同时读取包括在相邻地址的第二至第八ecc存储扇区e1至e7中的ecc数据。读取的ecc数据可以与地址信息一起存储在ecc高速缓存220中。

然后,根据r1读取命令readr1,存储器控制器可以从存储页面pag_a读取包括在第二存储扇区r1中的正常数据r1data。这里,ecc高速缓存220的命中/未命中检测cam222可以将第二存储扇区r1的地址与存储在其中的地址进行比较,然后检测关于所存储的第二ecc存储扇区e1的地址是否会发生命中。这里,发生的命中可以被称为ecc高速缓存命中。当发生ecc高速缓存命中时,ecc数据被存储在ecc高速缓存220中,并且因此存储器控制器可以不从存储器设备读取包括在第二ecc存储扇区e1中的ecc数据。

就此而言,根据r2读取命令readr2,存储器控制器可以不从存储页面pag_a读取包括在第三存储扇区r2中的正常数据r2data。这里,包括在第三ecc存储扇区e2中的ecc数据被存储在ecc高速缓存220中,并且因此,命中/未命中检测cam222可以检测ecc高速缓存命中。因此,存储器控制器可以不从存储器设备读取包括在第三ecc存储扇区e2中的ecc数据。

图13示出根据发明构思的示例实施例的ecc高速缓存的操作流程图。

首先,可以将数据读取命令输入到存储器控制器(s210)。这里,包括在存储器控制器中的ecc高速缓存可以通过比较指示其中存储的ecc数据的地址的ecc地址与读取数据的地址来确定是否发生高速缓存命中。当ecc高速缓存中已经存在要读取的ecc数据时,可以定义发生ecc高速缓存命中。换句话说,ecc高速缓存可以确定是否发生ecc高速缓存命中(s220)。如果发生了ecc高速缓存命中,则将从存储器设备读取的数据的ecc数据存储在ecc高速缓存中,并且因此,可以不从存储器设备读取ecc数据。如果没有发生ecc高速缓存命中(其可以被称为ecc高速缓存未命中),则存储器控制器可以从存储器设备读取ecc数据(s230)。

仅当没有发生ecc高速缓存命中时,存储器控制器从存储器设备读取ecc数据,并且因此,可以减少由于ecc导致的开销。

图14示出根据发明构思的示例实施例的ecc高速缓存220。

ecc高速缓存220可以包括命中/未命中检测cam222和用于存储地址信息和ecc数据的第一存储器223_1至第k存储器223_k(k是自然数)。ecc高速缓存220可以将ecc数据存储在存储器设备的每个存储体的不同存储器中。例如,在第一存储体bank0包括的存储页面中存储的ecc数据可以存储在第一存储器223_1中,并且在第k存储体bankk包括的存储页面中存储的ecc数据可以存储在第k存储器223_k中。

ecc高速缓存220将ecc数据存储在每个存储体的不同存储器中,并且因此,可以减少ecc高速缓存220的命中/未命中检测cam222检测ecc高速缓存命中所花费的时间。

图15示出根据发明构思的示例实施例的向存储器模块发送数据以及从存储器模块接收数据的应用处理器1000。

应用处理器1000可以包括处理器1600和存储器控制器1200。应理解,参考图1提供的电子系统的描述被应用于应用处理器1000和存储器模块1400。

存储器模块1400可以暂时存储处理器1600已处理或将要处理的数据。存储器模块1400可以包括一个或多个存储器区块,并且可以存储ecc数据。存储器模块1400可以是不具有用于ecc的单独存储器芯片的带内ecc存储器模块,并且存储器设备1420_1至1420_k(k是自然数)中的至少一个可以存储正常数据和ecc数据。具体而言,存储器设备1420_1至1420_k可以是将正常数据和ecc数据存储在同一存储页面上的直插式存储器设备。包括在存储器设备1420_1至1420_k中的存储页面可以包括用于存储正常数据的数据区和用于存储ecc数据的ecc区,并且还可以包括作为消耗区域的死区。图2和图3的存储器设备的描述可以应用于存储器模块1400中的存储器设备1420_1至1420_k。

存储器控制器1200可以包括用于临时存储ecc数据的ecc高速缓存1220、以及ecc区域管理器1240,该ecc区域管理器1240用于通过将包括在存储器设备1420_1至1420_k中的存储页面划分为ecc启用区域和ecc禁用区域来管理包括在存储器设备1420_1至1420_k中的存储页面。ecc区域管理器1240可以存储下述信息作为区域数据:该信息将包括在存储器设备1420_1至1420_k中的存储页面划分为ecc启用区域和ecc禁用区域。存储器控制器1200中的ecc判定单元(未示出)可以从ecc区域管理器1240接收区域数据,并确定是否执行从存储器控制器1200输入的数据的ecc操作。存储器控制器1200可以包括ecc引擎1260,以便对需要ecc操作的数据执行ecc编码或ecc解码。ecc引擎1260可以包括ecc编码器和ecc解码器。可以理解,存储器控制器1200的详细描述与参考图6至图13提供的那些相同。

处理器1600可以将数据和输入信息发送到存储器系统100。输入信息可以是诸如读取请求、写入请求和擦除请求的各种信息中的至少一个。输入信息可以包括命令、地址和优先级信息。处理器1600可以将区域判定控制信号rdcs发送到存储器控制器1200以识别ecc启用区域。

处理器1600可以确定是否对待存储在存储器模块1400中的数据执行ecc操作。例如,在由数据丢失引起的错误是致命的元数据或系统数据的情况下,这样的数据可能需要ecc操作。另外,例如,在由于数据丢失引起的错误不是致命的信息娱乐节目(infotainment)的情况下,这样的数据可能不需要ecc操作。处理器1600可以将包括在ecc启用区域中的地址分配给需要ecc操作的数据的地址,并且可以将包括在ecc禁用区域中的地址分配给不需要ecc操作的数据的地址。

图16示出根据发明构思的示例实施例的移动系统2000。

移动系统2000可以包括应用处理器2100、存储器(memory)设备2200、存储(storage)设备2300和多个功能模块。

应用处理器2100可以控制移动系统2000的所有操作。换句话说,应用处理器2100可以控制存储器设备2200、存储设备2300和多个功能模块。

存储器设备2200和存储设备2300可以存储用于移动系统2000的操作的数据。存储器设备2200可以包括易失性存储器和非易失性存储器中的至少一个。非易失性存储器可以包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)、闪存、pram、磁ram(mram)、rram、铁电ram(fram)等。易失性存储器可以包括诸如动态ram(dram)、sram、sdram、pram、mram、rram和fram的各种存储器中的至少一个。存储器设备2200可以是将ecc数据和正常数据存储在同一存储页面上的直插式ecc存储器设备。其详细描述可以参考图2和图3来理解。存储设备2300可以包括固态驱动器(ssd)、硬盘驱动器(hhd)、cd-rom等。

多个功能模块可以各自执行移动系统2000的各种功能。例如,移动系统2000可以包括用于执行通信功能的通信模块2400、用于执行相机功能的相机模块2500、用于执行显示功能的显示模块2600、用于执行触摸输入功能的触摸板模块2700等。然而,包括在移动系统2000中的多个功能模块不限于此。例如,移动系统2000可以进一步包括全球定位系统(gps)模块、麦克风模块、扬声器模块、陀螺仪模块等。

应用处理器2100可以包括存储器控制器2120。存储器控制器2120可以控制存储器设备2200。存储器控制器2120可以包括用于通过将存储器设备2200中的存储页面划分为ecc启用区域和ecc禁用区域来管理存储器设备2200中的存储页面的ecc区域管理器(eccregionmngr)、ecc引擎(eccengine)、以及用于暂时存储ecc数据的ecc高速缓存(cache)。参考图4a至图13可以理解控制存储器设备2200的存储器控制器2120的详细描述。

如上所述,存储器控制器2120控制存储器设备2200,并且包括ecc高速缓存,并且因此,可以减少由于带内ecc存储器设备的ecc存储导致的开销。

图17示出根据发明构思的示例实施例的计算系统3000。

计算系统3000可以包括处理器3100、i/o设备3200、存储器设备3300、存储器控制器3400和电源3500。计算系统3000可以与视频卡、声卡、存储器卡、usb设备等通信,并且还可以包括用于与其他电子设备进行通信的端口。计算系统3000可以被具体化为个人计算机,或者可以被具体化为便携式电子设备,诸如,笔记本计算机、移动电话、个人数字助理(pda)和相机。

处理器3100可以执行某些计算或任务。根据示例实施例,处理器3100可以是或可以包括微处理器或中央处理单元(cpu)。处理器3100可以通过诸如地址总线、控制总线、和/或数据总线的总线3600与i/o设备3200、存储器设备3300和存储器控制器3400通信。

i/o设备3200可以包括诸如键盘、键区或鼠标的输入装置,以及诸如打印机或显示器的输出装置。电源3500可以提供操作计算系统3000所需的操作电压。

存储器设备3300可以存储各种数据。存储器设备3300可以包括易失性存储器和非易失性存储器中的至少一个。非易失性存储器可以包括rom、prom、eprom、eeprom、闪存、pram、mram、rram、fram等。易失性存储器可以包括诸如dram、sram、sdram、pram、mram、rram和fram的各种存储器中的至少一个。存储器设备3300可以是或可以包括将ecc数据和正常数据存储在同一存储页面上的直插式ecc存储器设备。其详细描述可以参考图2和3来理解。

存储器控制器3400可以控制存储器设备3300。存储器控制器3400可以包括用于通过将存储器设备3300中的存储页面划分为ecc启用区域和ecc禁用区域来管理存储器设备3300中的存储页面的ecc区域管理器(eccregionmngr)、ecc引擎(eccengine)、以及用于暂时存储ecc数据的ecc高速缓存。参考图4a至图13可以理解控制存储器设备3300的存储器控制器3400的详细描述。

根据发明构思的实施例的存储器设备3300和存储器控制器3400可以通过使用各种类型的封装来安装。例如,存储器设备3300和存储器控制器3400可以通过使用各种封装来安装,所述各种封装诸如为堆叠式封装(pop)、球栅阵列(bga)、芯片级封装(csp)、塑料引线芯片载体(plcc)、塑料双列直插封装(pdip)、叠片包装中的裸片、晶片形式的裸片、板上芯片(cob)、陶瓷双列直插封装(cerdip)、塑料公制四方扁平封装(mqfp)、薄型四方扁平封装(tqfp)、系统级封装(sip)、多芯片封装(mcp)、晶片级制造封装(wfp)和晶片级处理堆叠封装(wsp)。

如上所述,存储器控制器3400控制存储器设备3300并且包括ecc高速缓存,并且因此可以减少由于带内ecc存储器设备的ecc存储导致的开销。

虽然发明构思已经参考其实施例被具体示出和描述,但是将理解,在不脱离所附权利要求的精神和范围的情况下,可以在其中进行形式和细节上的各种改变。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1