具体实施方式
参考图1A,示出了根据本发明非限制性实施例的存储器系统10。存储器系统10包括存储器控制器12、多个非易失性存储器设备141-144和半导体设备。在特定示例中,该半导体设备是布置在存储器控制器12和非易失性存储器设备141-144之间的桥接设备16。应该理解,虽然在图1A中示出了4个非易失性存储器设备141-144,但是其仅为示例目的,该存储器系统10并不限制非易失性存储器设备的特定数目。实际上,在一些实施例中,可能只存在单个非易失性存储器设备。
非易失性存储器设备141-144
在一些情况中,非易失性存储器设备141-144可以是如今天市场上许多供应商所供给的常规可获得的NAND闪速设备。例如,非易失性存储器设备141-144可以是NAND闪存、NOR闪存、NROM等,这里仅列举了少数非限制性可能。在其它情况中,非易失性存储器设备141-144中的一些或者全部可以是商业上难以获得的非标准设备。应该理解,无需使所有的非易失性存储器设备141-144都是相同类型或者由同一制造商制造。
非易失性存储器设备141-144中的每个包括设备控制逻辑块18、存储器核心20和设备页面缓冲器22。存储器核心20包括数据单元24的排列,数据单元24可在设备控制逻辑块18的控制下被写入或者读出。设备控制逻辑块18接收通用命令和来自外部实体的“写数据”并且将“读数据”提供给外部实体。如此处所使用的,“逻辑块”(在这里,例如为“设备控制逻辑块18”的表达方式)包括执行所需逻辑功能的电路和/或软件。但在附图中,省略了字“块”,以使附图不乱。
在非限制性实施例中,存储器核心20中的数据单元24可被组织为多个“平面”,每个平面包括多个“块”,每个块包括多个“页面”,每个页面包括多个“字”。例如,在所示实施例中,存储器核心20具有2(=21)个平面(A和B),每个平面包括32768(=215)个块,每个块具有32(=25)个页面,每个页面包括2048(=211)个8位字,结果每个非易失性存储器设备总为共4千兆字节(=232个8位字)。可以增加另外的字用于纠错和其它目的,其可以使一些设备中每个平面的每个页面总共有2112个字。但是,应该理解,可以使用其它尺寸和配置,包括仅使用单个平面的配置。
设备页面缓冲器22包括数据单元的排列。在从外部实体接收的数据被写入存储器核心20的指定页面之前,使用设备页面缓冲器22来暂时存储一个页面的数据,或者替代地,在处理用于读数据的通用命令的最后阶段,在从存储器核心20提取的数据返回到外部实体之前,使用设备页面缓冲器22来暂时存储一个页面的数据。这样,在本示例中,设备页面缓冲器22在2个平面(A和B)的每个中保持2112个字。在其它实施例中,设备页面缓冲器22可具有不同大小且可保持多于一个页面值的数据。
可被非易失性存储器设备141-144中的一个或几个处理的通用命令具有以第一命令周期开始的通用命令结构。根据实际命令自身,地址周期、数据周期、和第二命令周期均有可能。在下面的表1中提供了可由第一命令周期传送的位的各种组合来编码的可能的通用命令选择、以及这样的通用命令的可能定义。
表1:与非易失性存储器设备141-144一起使用的所选通用命令的定义
应该理解,各个制造商可使与特定通用命令相关的第一(和第二,如果适用的话)命令周期具有不同的特定数值。还应该理解,各个制造商可支持不同形式的上述通用命令,且可具有总共较大或较小数量的通用命令。但是,对于这里感兴趣的那些非易失性存储器设备普遍的一个方面涉及页面编程通用命令,总的来说,其等价形式假设至少包括初始命令周期(以发出页面编程通用命令开始的信号)、一个或多个地址周期(以识别指定页面以及被写入存储器核心20的数据的-指定页面内的-起点)、一个或多个数据周期(以允许被写入存储器核心20的实际数据的输入)和确定命令周期(以触发将设备页面缓冲器22的内容传输到存储器核心20)。
存储器控制器12
存储器控制器12可以是被设计为通过使用符合专用命令结构的专用命令、在专门适用的非易失性存储器设备上执行存储器操作(例如读和写)的专用存储器控制器。
作为示例,专门适用的非易失性存储器设备可以是串行互连在链中的时钟同步的NAND闪速设备,例如在2008年11月13日作为美国专利申请公开的公开号为2008/0279003、名称为“Multiple Independent Serial LinkMemory”的美国专利申请No.12/179,835中所示出和描述的,该申请通过引用全部包含于此。
作为示例,存储器控制器12可采用闪速控制器的形式,如在2008年2月28日公开的公开号为WO/2008/022434的国际PCT申请No.PCT/CA2007/001428的图6A中所示,该申请通过引用全部包含于此。
存储器控制器12通过调整沿一组控制线26和一组下游的数据线28的信号的行为来发出各种专用命令(目的在于链中互连的单独的时钟同步NAND闪速设备)。还构想了提供一组上游数据线,但由于重点在于数据写操作,所以在此没有描述该特征。
存储器控制器12所发出的专用命令可以被构建为与表1所列出的有稍许不同,尤其当在链中连接有时钟同步NAND闪速设备时。在下面的表2中示出了存储器控制器12所发出的专用命令所遵从的专用命令结构示例:
设备地址 |
OP码 |
RA |
CA |
数据 |
1字节 |
1字节 |
3字节 |
2字节 |
1-2112字节 |
表2:专用命令结构
在上面的表2中,“设备地址”字段用于特指NAND闪速设备的链中的所谓NAND闪速设备,而“OP码”字段是专用命令的操作码唯一标识。剩余字段是可选的且根据该专用命令可包括RA(行地址字段)、CA(列地址字段)和数据(字段)。在非限制性示例实施例中,前面所述国际PCT申请PCT/CA2007/001428的表1、2和3更详细地示出专用命令结构的可能性。
在用于特定设备的存储器中对数据的一部分特定页面进行编程的命令的特定情况下,可发出一对专用命令。第一命令是突发数据装载开始专用命令,其以识别特定设备的设备地址字段开始,接下来是识别突发数据装载开始命令的“OP码”字段,接下来是指定特定页面内的起始地址的CA字段。再接下来是(经由特定设备上的页面缓冲器)将被写入特定页面的数据,以起始地址开始。
在编程特定页面的一部分的环境下发出的下一个专用命令是页面编程专用命令,其以识别特定设备的设备地址字段和识别页面编程专用命令的“OP码”字段开始。接下来是指定页面地址的RA字段,该页面地址将用写入特定设备的页面缓冲器中的数据来编程。
应该理解,在发出突发数据装载开始专用命令和发出页面编程专用命令之间,其它专用命令的数个实例即突发数据装载专用命令可一个接一个地发生。突发数据装载专用命令和突发数据装载开始专用命令之间的区别在于后者导致特定设备的页面缓冲器被初始化而前者不会。这允许要被写入的特定缓冲器有不连贯的部分,而无须为每个部分写整个页面。
虽然上面所述的存储器控制器12被设计为与串行互连的非易失性存储器设备一起运行,其中该非易失性存储器设备尤其适用于彼此通信以及与存储器控制器12通信,但是存储器控制器12可被制成以例如图1A中所示非易失性存储器设备141-144的传统非易失性存储器设备的布置而运行。具体地,这可以通过桥接设备16来实现,桥接设备16布置在存储器控制器12和非易失性存储器设备141-144之间。
桥接设备16
桥接设备16包括控制器接口控制逻辑块29、设备接口控制逻辑块30和用于每个非易失性存储器设备141-144的对应的管理存储器模块321-324。参考图1B,桥接设备16的主要功能是将从存储器控制器12接收的专用命令转换为用于非易失性存储器设备141-144的通用命令。
设备接口控制逻辑块30表示前述“外部实体”,设备接口控制逻辑块30被连接到非易失性存储器设备141-144的每一个的设备控制逻辑块18。更具体地,设备接口控制逻辑块30通过相应的一组控制线341-344和相应的一组下游数据线361-364连接到非易失性存储器设备141-144中每个的设备控制逻辑块18。该组控制线341-344和该组下游数据线361-364用于传送命令并将数据写到相应的非易失性存储器设备141-144。还可提供一组上游数据线用于传送从非易失性存储器设备141-144读取的数据,但由于重点在于数据写操作,所以在此没有描述该特征。
控制器接口控制逻辑块29通过该组控制线26和该组下游数据线28连接到存储器控制器12。因此应该注意,虽然从存储器控制器12的角度,其可发出目的地为与存储器控制器12兼容的目标非易失性存储器设备(例如,时钟同步NAND闪速设备)的专用命令,但是实际上,这些专用命令沿着该组控制线26和该组下游数据线28被桥接设备16的控制器接口控制逻辑块29截取。
现在参考图2,其提供了关于桥接设备16的内部结构的更详细细节。应该理解,在下文中,可以提供除了这里所述和所示以外的传递信号的信号线,以控制和/或便于桥接设备16的各种部件的操作;但是由于它们的作用是辅助的,且本领域普通技术人员可以理解它们的实现,所以为了简明,在此省略了对它们的描述。
基于沿该组控制线26和该组下游数据线从存储器控制器12接收的专用命令,控制器接口控制逻辑块29获得将提供给各个管理存储器模块321-324的各种地址、数据和读/写信号。具体地,控制器接口控制逻辑块29将由一组地址线2041传递的地址信号、由一组输入数据线2021传递的输入数据信号和由相应的读/写线2061传递的读/写信号提供给管理存储器模块321。类似地,控制器接口控制逻辑块29将由一组地址线2042传递的地址信号、由一组输入数据线2022传递的输入数据信号和由相应的读/写线2062传递的读/写信号提供给管理存储器模块322。类似地,控制器接口控制逻辑块29将由一组地址线2043传递的地址信号、由一组输入数据线2023传递的输入数据信号和由相应的读/写线2063传递的读/写信号提供给管理存储器模块323。最后,控制器接口控制逻辑块29将由一组地址线2044传递的地址信号、由一组输入数据线2024传递的输入数据信号和由相应的读/写线2064传递的读/写信号提供给管理存储器模块324。
每个所管理的存储器模块321-324将由相应的一组输出数据线2081-2084传递的相应输出数据信号SO1-SO4提供给设备接口控制逻辑块30。另外,控制器接口控制逻辑块29为设备接口控制逻辑块30提供由链路218传递的控制信号Sc。控制信号Sc向设备接口控制逻辑块30发出何时向非易失存储器设备141-144中对应的一个传输从特定一个管理存储器模块321-324接收到的输出数据信号的指示,该控制信号Sc是控制器接口控制逻辑块29基于从存储器控制器12接收的专用命令来确定的。
另外,设备接口控制逻辑块30沿着多个复位线2101-2104中相应的一个为每个管理存储器模块321-324提供相应的第一复位信号。在非限制性实施例中,设备接口控制逻辑块30被配置为在设备接口控制逻辑块30已经将页面编程通用命令的确认命令周期发送到对应的非易失性存储器设备后,在给定的一个复位线2101-2104上确立第一复位信号。(下面将详细描述导致设备接口控制逻辑块30递送页面编程通用命令的事件可能序列。)
电源监控电路212为每个管理存储器模块321-324提供由多个复位线2141-2144中相应的一个传递的相应第二复位信号。在一些实施例中,实际上,复位线2141-2144传递的各种第二复位信号可以是相同的电信号。电源监控单元212被配置为只要其检测到已为桥接设备16供电(或者重新供电),则确立由复位线2141-2144传递的第二复位信号。在替代实施例中,电源监控电路212可被集成到控制器接口控制逻辑块29中,由此基于检测特定引入信号(例如,复位、芯片使能和/或芯片选择,在这里仅列举了少数非限制性可能)上存在的逻辑数值的组合来确立第二复位信号,该组合发生在已经为桥接设备16供电(或者重新供电)的唯一事件中。
现在参考图3A,其提供了关于管理存储器模块321-324中特定一个存储器模块的结构的进一步细节,在该情况中是管理存储器模块321。应该理解,类似的描述可以应用于其它管理存储器模块322、323和324。如所示,管理存储器模块321包括虚拟页面缓冲器300和屏蔽缓冲器310。
在具体非限制性实施例中,虚拟页面缓冲器300和屏蔽缓冲器310由静态随机存取存储器(SRAM)构成,虽然这在本发明中并不是必须的。可在某一非限制性实施例中使用的适合的SRAM存储单元结构是图11中所示类型的双端口结构。可将其它存储器技术用于虚拟页面缓冲器300和屏蔽缓冲器310中的一个或者二者,包括但不限于动态随机存取存储器(DRAM)。
虚拟页面缓冲器300包括监控对应非易失性存储器设备的设备页面缓冲器22中数据单元的数据单元的排列,在该情况中该对应非易失性存储器设备是非易失性存储器设备141。虚拟页面缓冲器300暂时存储将最终被传输到非易失性存储器设备141中设备页面缓冲器22的数据。基于沿着该组地址线2041、该组输入数据线2021和读/写线2061从控制器接口控制逻辑块29接收的地址、数据和读/写信号,虚拟页面缓冲器300随时间被填充。
具体地,在写操作期间(即,当读/写线2061传递的读/写信号编码“写模式”时),该组地址线2041传递的地址信号指定该组输入数据线2021传递的输入数据信号将写入虚拟页面缓冲器300中的位置。另一方面,在读操作期间从虚拟页面缓冲器300传输出数据。具体地,当由读/写线2061传递的读/写信号编码“读模式”时,由该组地址线2041传递的地址信号指定要从其提取内容的虚拟页面缓冲器300内的地址。这些内容将被放入一组数据线302上。
应该理解,在非限制性实施例中,提供了两个平面(A和B),这样虚拟页面缓冲器300可被概念性地分为两部分,一部分与平面A相关,另一部分与平面B相关。在该非限制性示例中,每个平面的数据单元的长度是8位(一个字节)。可用占用特定数据的地址中预定位位置的位对与将被写入虚拟页面缓冲器300的特定数据相关的平面进行编码。类似地,可用占用特定数据的地址中预定位位置的位对与将从虚拟页面缓冲器300提取的特定数据相关的平面进行编码。
为了将与所选平面相关的数据沿该组输出数据线2081传到设备接口控制逻辑块30,提供了选择器320。在该情况下,采用了8位字和2个平面,选择器320具有宽度为16个数据位的输入324、宽度为8个数据位的输出326和1位的控制输入322。提供了控制输入322以允许在输出326处选择输入324的16位信号中第一群的8位或者第二群的8位。将由一个地址线2041传递的信号馈送到控制输入322,该地址线2041即对占用先前预定位位置的位进行编码的那个地址线。选择器320的输出326沿一组数据线328连接至屏蔽逻辑块340的第一输入342。
屏蔽逻辑块340的第二输入344从屏蔽缓冲器310的输出导出,现在将描述屏蔽缓冲器310。更具体地,屏蔽缓冲器310包括数据单元(例如SRAM存储单元)的排列,该数据单元对应于虚拟页面缓冲器300中的数据单元。因此,屏蔽缓冲器310中的每个数据单元在虚拟页面缓冲器300中具有对应数据单元。但是,屏蔽缓冲器310中的数据单元无需与虚拟页面缓冲器300中的数据单元编码相同数值。在所示实施例中,虚拟页面缓冲器300中的数据单元每个的长度是8位,而屏蔽缓冲器310中的数据单元每个的长度仅是单个位。当然,本领域普通技术人员可以理解,虚拟页面缓冲器300中数据单元的大小(从位上来说)与屏蔽缓冲器310中数据单元的大小(从位上来说)的其它比率可能但不限于包括1∶1、4∶1、16∶1和其它的。
两-输入逻辑OR模块346组合(沿复位线2101接收的)第一复位信号和(沿复位线2141接收的)第二复位信号,两输入逻辑OR模块346的输出被提供给屏蔽缓冲器控制逻辑块348。逻辑OR模块346的输出用作清零屏蔽缓冲器310的触发器。为了准确,如果已为桥接设备16供电(或者重新供电)或者如果设备接口控制逻辑块30已经将页面编程通用命令的确认命令周期发送给非易失性存储器设备141,则触发使屏蔽缓冲器310清零。在NAND闪速存储器的情况中,仅可将逻辑0编程到非易失性存储器设备141-144的存储单位,而逻辑1表示“禁止编程”。在这样的环境中,屏蔽缓冲器控制逻辑块348通过将屏蔽缓冲器310中所有数据单元强制设置为逻辑1来清零屏蔽缓冲器310。
根据本发明的一个实施例,在屏蔽缓冲器310被清零且其所有数据单元被设置为给定的逻辑状态(在该情况中,逻辑1)之后,当虚拟页面缓冲器300内的相应数据单元正在(或者已经)被写时,屏蔽缓冲器310中给定数据单元被用相反逻辑状态(在该情况中,逻辑0)编码。因此,在写操作(即当读/写线2061传递的读/写信号编码“写模式”时)期间(或者之后立即),屏蔽缓冲器控制逻辑块348使得逻辑0被写入屏蔽缓冲器310中的那些数据单元,其地址用该组地址线2041传递的地址信号来编码。
在读操作期间,从屏蔽缓冲器310传输出数据,这与上面所述的从虚拟页面缓冲器300传输出数据先后发生。具体地,当由读/写线2061传递的读/写信号编码“读模式”时,由该组地址线2041指定虚拟页面缓冲器310内要从其提取内容的位置。该地址的内容(回顾,其是逻辑0或逻辑1)经由屏蔽缓冲器310的输出被放置到屏蔽数据线312。屏蔽数据线312通向屏蔽逻辑块340的第二输入344,现在将参考图4更详细地描述。
具体地,屏蔽逻辑块340接收由屏蔽数据线312传递的屏蔽信号SM和由该组数据线328传递的数据信号SD。屏蔽逻辑块340包括一组两输入逻辑OR模块402,其中逻辑OR模块402的数目依赖于数据信号SD的宽度(从位上来说)。在该情况下,存在8个逻辑OR模块402,但是应该理解,这不是对本发明的限制。同样,逻辑OR模块402的引用仅示出屏蔽逻辑块340的功能。应该理解,实现这样功能性的各种方式对于本领域的普通技术人员变得清楚。
逻辑OR模块402的输出是沿该组输出数据线2081提供给设备接口控制逻辑块30的输出数据信号SO1。应该理解,当屏蔽信号SM被设置为逻辑1时,输出数据信号SO1将被设置为全部逻辑1,然而当屏蔽信号SM被设置为逻辑0时,其将表现数据信号SD。当然,回顾,从屏蔽缓冲器310被清零的最后时间开始,仅当由该组地址线2041传递的地址信号来编码的存储器位置处虚拟页面缓冲器300中的数据单元已经被写入时,屏蔽信号SM将被设置为逻辑0。
现在仅通过示例提供操作的实例。在此实例中,桥接设备16和管理存储器模块321的操作按照标记为阶段A至阶段E的时间序列进行。因此,现在将参考图5至图10,其中每一个仅通过示例示出在这些阶段中的各个阶段期间,设备页面缓冲器22、虚拟页面缓冲器300、屏蔽缓冲器310和给定设备页面502的一部分的可能内容。为了示例目的,设备页面502可被认为是非易失性存储器设备141的存储器核心20中块#123处的页面#456。同样,选择设备页面缓冲器22、虚拟页面缓冲器300、屏蔽缓冲器310和设备页面502的尺寸以便于描述而非限制。
阶段A
假设对桥接设备16供电(或者重新供电),但电监控单元212未检测到该情况。这样,电监控单元212尚未在复位线2141上发出第二复位信号。图5示出了在这一时间点上虚拟页面缓冲器300和屏蔽缓冲器310的内容。注意,虚拟页面缓冲器300和屏蔽缓冲器310中的各个数据单元的状态是未知的(表示为“u/k”)。这是由于SRAM存储单元的基本结构,从而给定存储单位在上电之后所获得的逻辑状态(0或者1)将是随机的,由于其依赖于上电期间(不可预测的)瞬态节点电压波动中的一定内容。图5还示出了设备页面缓冲器22的内容,其数据单元可具有在当前时间知道或者不知道的1和0的特定分布。另外,图5示出了设备页面502的内容,在当前时间用户或者系统可能知道或者依赖它。
阶段B
电源监控单元212在复位线2141上发出第二复位信号。第二复位信号还可在复位线2142、2143和2144上发出,但这对于本示例的目的是不重要的。第二复位信号经由逻辑OR模块346到达屏蔽缓冲器控制逻辑块348。作为响应,屏蔽缓冲器控制逻辑块348清零屏蔽缓冲器310,如上面所述,导致屏蔽缓冲器310中所有数据单元被设置为逻辑1。图6示出了在刚刚清零屏蔽缓冲器310之后虚拟页面缓冲器300、屏蔽缓冲器310、设备页面缓冲器22和设备页面502的内容。注意,虚拟页面缓冲器300、设备页面缓冲器22和设备页面502的内容和图5中的情形相比保持不变。
阶段C
现在假设存储器控制器12发出第一专用命令,包括下列信息:
设备地址=141
OP码=突发数据装载开始
RA/CA=块#123、页面#456、起始字555Fh
数据=00101101,10101001
注意,为了示出目的,已经选择设备地址来识别非易失性存储器设备141,同时已经选择了块和页面数值来识别上面参考图5和图6提到的完全相同的设备页面502。桥接设备16沿该组控制线26和该组下游数据线28接收第一专用命令。控制器接口控制逻辑块29处理第一专用命令,其基于在第一专用命令中编码的设备地址辨认出第一专用命令需要存取管理存储器模块321。因此,将数值555Fh编码到地址信号,将该地址信号沿该组地址线2041发送到管理存储器模块321。假设,如果可适用,地址信号还编码合适的平面(例如A或者B)。另外,将数值00101101编码到输入数据信号,将该输入数据信号沿该组输入数据线2021发送到管理存储器模块321。同样,基于在第一专用命令中编码的OP码,控制器接口控制逻辑块29将“写模式”编码到读/写信号,其沿读/写线2061被发送到管理存储器模块321。
接下来,在用“写模式”继续编码读/写信号时,地址增加到数值5560h,,其被编码到沿该组地址线2041发送到管理存储器模块321的地址信号。另外,将数值10101001编码到输入数据信号,将该输入数据信号沿该组输入数据线2021发送到管理存储器模块321。
同时,控制器接口控制逻辑块29将存储块和页面数值(在该情况下,块#123,页面#456)用于进一步使用,例如在存储器控制器12发出随后的突发数据装载专用命令以将另外的数据写到当前页面或者发出页面编程专用命令的情况下。
进一步地,用数值0101101写虚拟页面缓冲器300的存储器位置555Fh,用数值10101001写存储器位置5560h。另外,屏蔽缓冲器控制逻辑块348设置屏蔽缓冲器310的对应数据单元为逻辑0。
现在假设存储器控制器12随后发出第二专用命令,包括下列信息:
设备地址=141
OP码=突发数据装载
CA=起始字777Fh(未使用RA)
数据=11010000
在桥接设备16处沿该组控制线26和该组下游数据线28再接收第二专用命令。控制器接口控制逻辑块29处理第二专用命令,该控制器接口控制逻辑块29基于第二专用命令中编码的设备地址辨认出第二专用命令与突发数据装载开始专用命令一样需要存取相同的管理存储器模块321。这里,注意到,CA信息中省略了块和页面,其暗示数据将被写入与由于第一专用命令而写入的页面相同的页面。因此,将数值777Fh编码到地址信号,将该地址信号沿该组地址线2041发送到管理存储器模块321。再次,假设(如果可适用)地址信号还编码合适的平面(例如A或者B)。另外,将数值11010000编码到输入数据信号,将该输入数据信号沿该组输入数据线2021发送到管理存储器模块321。同样,基于在第二专用命令内编码的OP码,控制器接口控制逻辑块29再次将“写模式”编码到读/写信号,其沿读/写线2061被发送到管理存储器模块321。
进一步地,用数值11010000写虚拟页面缓冲器300的存储器位置777Fh。另外,屏蔽缓冲器控制逻辑块348设置屏蔽缓冲器310的对应数据单元为逻辑0。
应该注意,虽然非易失性存储器设备141似乎是第一和第二专用命令的目标接收者(基于设备地址),但其保持空闲,同时第一和第二专用命令由桥接设备16截取和处理。
图7示出了刚刚对第二专用命令的处理在虚拟页面缓冲器300上产生影响之后虚拟页面缓冲器300、屏蔽缓冲器310、设备页面缓冲器22和设备页面502的内容。可以看到,虚拟页面缓冲器300中一定数目的数据单元702仍是未知数值,该一定数目的数据单元702包括存储器位置5560h和777Fh之间的数据单元。但是,设备页面502中对应数据单元712具有不必须是未知并且因此没必要更改的数值。由于这个原因,如下面所示,设备页面缓冲器22中对应数据单元722将必须设置为逻辑1,由此禁止设备页面502中数据单元712上发生编程操作。
阶段D
现在考虑存储器控制器12发出第三专用命令,包括下列信息:
设备地址=141
OP码=页面编程
桥接设备16沿该组控制线26和该组下游数据线28接收第三专用命令。控制器接口控制逻辑块29处理第三专用命令,该控制器接口控制逻辑块29基于第三专用命令中编码的设备地址辨认出第三专用命令与第一和第二专用命令一样需要存取相同的管理存储器模块321。但是,基于不同OP码,控制器接口控制逻辑块29辨认出是数据从虚拟页面缓冲器300传输到非易失存储器设备141中设备页面缓冲器22的时间了。
为此,控制器接口控制逻辑块29将初始数值0000h编码到沿该组地址线2041发送到管理存储器模块321的地址信号。另外,控制器接口控制逻辑块29将“读模式”编码到读/写信号,其被沿读/写线2061发送到管理存储器模块321。作为响应,虚拟页面缓冲器300将其在地址0000h处的数据单元的内容放置到该组数据线302。另外,屏蔽缓冲器310将位于地址0000h处对应数据单元的内容经由屏蔽缓冲器310的输出放置到屏蔽数据线312。如先前所述,屏蔽数据线312和该组数据线302导向屏蔽逻辑块340(在该组数据线302的情况下经由选择器320),其沿该组输出数据线2081提供输出数据信号SO1给设备接口控制逻辑块30。在完成读操作所需的短暂时期后,控制器接口控制逻辑块29将下一个数值0001h编码到沿该组地址线2041发送到管理存储器模块321的地址信号,等等,直到虚拟页面缓冲器300(和屏蔽缓冲器310)中所有存储器位置都已经被读取。
同时,控制器接口控制逻辑块29沿链接218将控制信号Sc发送到设备接口控制逻辑块30。控制信号Sc提供必要的控制信息以允许设备接口控制逻辑块30发出非易失性存储器设备141可理解且使得数据写入非易失性存储器设备141的通用命令。因此,控制信号Sc可指定所需操作和其相关参数。在此非限制性示例中,所需操作是发出页面编程通用命令且其相关参数是非易失性存储器设备141的块#123内页面#456的标识。在多平面实施例中,还可指定合适的平面。
响应于从控制器接口控制逻辑块29接收控制信号Sc,设备接口控制逻辑块30使用该组控制线341和该组下游数据线361将页面编程通用命令传送到非易失性存储器设备141和向该非易失性存储器设备141写数据(其对应于沿该组输出数据线2081从管理存储器模块321接收的输出数据信号SO1)。这样,虚拟页面缓冲器300的全部内容将被传输到非易失性存储器设备141中的设备页面缓冲器22。
回顾,页面编程通用命令包括初始命令周期、和后续的地址和数据周期、以及确认命令周期。图8示出了一旦由于初始命令周期和随后的地址和数据周期使得设备页面缓冲器22已经被写入但是在页面缓冲器22的内容已经被传输到设备页面502之前,虚拟页面缓冲器300、屏蔽缓冲器310、设备页面缓冲器22和设备页面502的内容。当然,虚拟页面缓冲器300或屏蔽缓冲器310的内容没有变化。但是,可以看出,设备页面缓冲器22中的数据单元722已经被设置为逻辑1,同时设备页面缓冲器22中其它数据单元匹配虚拟页面缓冲器300中对应的数据单元。当设备页面缓冲器22转换为存储器核心20时,将产生保留(设备页面502中)数据单元712的当前数值的影响。
实际上,图9示出了一旦非易失性存储器设备141已经完全处理了页面编程通用命令中的确认命令周期时的虚拟页面缓冲器300、屏蔽缓冲器310、设备页面缓冲器22和设备页面502的内容。可以看到,仅设备页面502中数值已经从逻辑1改变为逻辑0的数据单元在设备页面缓冲器22中的对应数据单元具有逻辑0的数值。
阶段E
在已经传送了页面编程通用命令的确认命令周期之后,设备接口控制逻辑块30在复位线2101上发出第一复位信号。(同时,非易失性存储器设备141的设备控制逻辑块18可能正在处理页面编程通用命令的确认命令周期。)第二复位信号经由逻辑OR模块346到达屏蔽缓冲器控制逻辑块348。作为响应,屏蔽缓冲器控制逻辑块348清零屏蔽缓冲器310,如上面所述,导致屏蔽缓冲器310中所有数据单元被设置为逻辑1。图10示出了刚刚清零屏蔽缓冲器310之后,虚拟页面缓冲器300和屏蔽缓冲器310的内容。注意,虚拟页面缓冲器300、设备页面缓冲器22和设备页面502的内容保持不变。
鉴于前面所述,应该明了,当桥接设备用于暂时存储设备页面缓冲器的虚拟页面缓冲器时,以及当桥接设备运作以将整个虚拟页面缓冲器转换为设备页面缓冲器而不管实际写入目标页面的字的数目时(由此使得虚拟页面缓冲器中某些数据单元未被使用),此处所述系统的一些实施例可避免目标页面中数据的不期望的变化,否则由于在例如上电后的特定时间虚拟页面缓冲器中某些未使用的数据单元随机地获取与编程禁止状态相反的逻辑状态,而使得目标页面中的数据发生改变。
本领域普通技术人员可以理解,数个变化都在本发明的范围内。例如,虽然虚拟页面缓冲器300中的数据单元和屏蔽缓冲器310中的数据单元之间在大小上可能存在差别,但屏蔽缓冲器310可被配置为具有相同的输入/输出规格。可编程商业可获得的SRAM编译器(例如可从英国剑桥的ARM有限公司获得的品牌的SRAM编译器,这仅是个具体非限制性示例)来产生2个SRAM存储器块,这2个SRAM存储器块除大小外都是相同的。
图3B是屏蔽缓冲器310和虚拟页面缓冲器300被构建为除了大小外都相同的分开的存储器块的情况示意图,在此虚拟页面缓冲器300比屏蔽缓冲器310大8倍。在此特定示例中,虚拟页面缓冲器300和屏蔽缓冲器310中的数据单元仅能以整个字节的增量来写入和读取(为了本示例的目的,假设仅存在单个平面)。这样,由该组地址线2041编码的地址定义了虚拟页面缓冲器300的目标字节,该相同地址编码屏蔽缓冲器310的目标字节中的目标位置。因此,为了存取屏蔽缓冲器310的目的,地址线分为两个部件,称为第一地址部件370(其除了3个地址线2041之外包括所有的地址线而且其指定了屏蔽缓冲器310的目标字节)和第二地址部件372(其包括剩余的3个地址线且其指定了目标字节内目标位置)。
在涉及目标字节内目标位置的读操作期间,第一地址部件370被提供给屏蔽缓冲器310。屏蔽缓冲器控制逻辑块348还设置读/写线(未示)为“读模式”。作为响应,从屏蔽缓冲器310提取目标字节,且将该目标字节馈送到由第二地址部件372控制的位可寻址寄存器380。寄存器380的大小对应于可从屏蔽缓冲器310提取的数据的大小,在该情况下是1字节。基于第二地址部件372中编码的信息,寄存器380随后沿屏蔽数据线312以先前所述屏蔽信号SM的形式输出目标位。
另一方面,在涉及目标字节内目标位置的写操作期间执行二步骤处理,首先涉及读操作然后涉及写操作。具体地,第一地址部件370被提供给屏蔽缓冲器310,同时屏蔽缓冲器控制逻辑块348设置读/写线为“读模式”。作为响应,从屏蔽缓冲器310提取目标字节,且将该目标字节馈送到先前所述由第二地址部件372控制的位可寻址寄存器380。寄存器380的全部输出(即目标字节)被馈送回到屏蔽缓冲器控制逻辑块348,其随后基于在第二地址部件编码的信息仅修改目标位,而使目标字节的其它位保持原样。同时,第一地址部件370继续被提供到屏蔽缓冲器310。在这个阶段,屏蔽缓冲器控制逻辑块348设置读/写线为“写模式”,且沿一组数据线390提供被修改的目标字节(即,具有被修改的目标位的目标字节)。作为响应,将被修改的目标字节写到屏蔽缓冲器310。
但是,本领域普通技术人员将理解,对于访问屏蔽缓冲器310的粒度1110与访问虚拟页面缓冲器300的粒度1100相比是较细、相同还是较粗没有特定要求。
还应该理解,在一些实施例中,可以基于使用在计算设备上运行的逻辑综合工具而获得的低级硬件描述,来制造桥接设备16和/或管理存储器模块321-324的全部或者部分。逻辑综合工具被配置为读包括桥接设备16和/或管理存储器模块321-324的功能描述的源代码(例如,以HDL、VHDL或者Verilog语言,在此仅列举少数非限制性可能性)并且输出适用于执行相应功能的电路物理实现的定义。
现在参考图12,其根据本发明的特定非限制性实施例示出半导体存储器电路1200,包括:安置到(成行且成列的)存储器阵列1203内的存储单位1202;多个字线1204,每个都连接到相应的一行;多个字线驱动器1206,每个都用于驱动相应一个字线1204;至少一个行解码器1208(将在下面描述);多个位线1210,每个都连接到相应的一列;用于基于列地址选择一个或多个位线1210的列解码器1212;多个位线写驱动器1214,每一个都用于驱动相应的一个位线1210(在该情况下是写);多个位线感应放大器1216,每一个都用于放大和检测相应一个位线1210上的电平(在该情况下是读);以及用于控制该至少一个行解码器1208、列解码器1212、位线写驱动器1214和位线感应放大器1216的控制器1218。
现在参考图13A,示出了根据本发明第一特定非限制性实施例的至少一个行解码器1208的示例。在该实施例中,该至少一个行解码器1208包括单个行解码器1302。
行解码器1302能够基于由控制器1218(或者由居间的预解码器,未示,其将地址信号分到其部件,即行信号1304和列信号1305)发出的行信号1304选择字线1204中单独的一个。可通过启用连接到所选字线的特定一个字线驱动器1206来执行字线的选择。为此,该至少一个行解码器通过对应的字线选择信号1315连接到每个字线驱动器1206,确立或者不确立字线选择信号1315以指示对应的字线驱动器是否被启用。对应于所选字线驱动器的被启用的字线驱动器驱动连接到所选字线的存储单位行。
因此,行解码器1302能够通过启用连接到一群字线1306内字线的字线驱动器1206来选择该群字线1306。所启用的字线驱动器随后驱动连接到该群字线1306的存储单位行。在本说明书中,涉及到字线的“群”意指2个或更多个字线。还应该理解,一群字线中的字线虽然允许但无需与存储器阵列1203中的相邻行的存储单位相关联。
行解码器1302对该群字线1306的选择由预设控制信号1308来控制,该预设控制信号1308可以由控制器1218发送。预设控制信号1308有效地覆盖了前述行信号1304。实现该功能的一种可能方式如图13A所示,其将行解码电路1310的每一个输出(其中,确立单个输出来指示选择字线1204中对应一个)馈送到相应逻辑“OR”门1314的相应第一输入1312,且由当前控制信号1308馈送相应第二输入1316。这将使得当确立当前控制信号1308时,多个字线被选择(即,该群字线1306中的那些字线)。替代地,预设控制信号1308可被认为是行信号1304的另外元素,该预设控制信号1308(如果存在)将选择该群字线1306而不选择单个字线1204。对于本领域普通技术人员,还存在期望功能性的其它实现方式。
仍然参考图13A,在操作中,响应于确立预设控制信号1308,行解码器1302选择该群字线1306。一旦行解码器1302选择了该群字线1306,可以通过驱动位线1210中对应的一个来写连接到该群字线1306的行中的存储单位。具体地,控制位线写驱动器1214以将对应的位线设置到设置存储单位为期望逻辑状态所需的合适电平,该期望逻辑状态例如可以是逻辑“0”或逻辑“1”。由于选择了多行,因此控制给定一个位线1210使得同时写每个所选行中的存储单位,其可以产生使预设存储器阵列1203所需全部时间减小的效果。当然,可以理解,无需所有的位线1210自身都一起被同时驱动。在各种实施例中,可以一次驱动位线1210中的一个、一对等,而特定的字线群保持被选择。
现在参考图13B,示出了根据本发明第二特定非限制性实施例的至少一个行解码器1208的示例。除了存在由控制器1218提供的两个预设控制信号1308A和1308B之外,该实施例与图13A的相同。确立预设控制信号1308A和1308B中的每一个使得选择相应群的字线,这里涉及第一群字线1306A和第二群字线1306B。虽然示出了两个行预设控制信号1308A和1308B,但是应该理解,预设控制信号的数目(以及对应字线的群的数目)可以大于2。同样,假设该群字线1306A和1306B与存储器阵列1203的相邻行相关联是为了便于读者理解,但其无需相关联。
实现该功能的一种可能方式如图13B所示,其将行解码电路1310的每一个输出(属于第一群字线1306A)馈送到相应逻辑“OR”门1314A的相应第一输入1312A,且预设控制信号1308A馈送相应第二输入1316A。这将造成当确立预设控制信号1308A时,多个字线被选择(即,第一群字线1306B中的那些字线)。类似地,将行解码电路1310的每一个输出(属于第二群字线1306A)馈送到相应逻辑“OR”门1314B的相应第一输入1312B,且预设控制信号1308B馈送相应第二输入1316B。这将造成当确立预设控制信号1308B时,多个字线被选择(即,第二群字线1306B中的那些字线)。
替代地,预设控制信号1308A和预设控制信号1308B可被认为是行信号1304的另外元素,这些预设控制信号(如果存在)相应地选择一群字线1306A或者选择一群字线1306B。当然,可以构想确立预设控制信号1308A和预设控制信号1308B导致选择第一群字线1306A和第二群字线1306B中所有字线。对于本领域普通技术人员,还存在期望功能的其它实现方式。
现在参考图13C,其示出了根据本发明第三特定非限制性实施例的至少一个行解码器1208的示例。在该实施例中,至少一个行解码器1208包括多个行解码器,即第一行解码器1302A和第二行解码器1302B。虽然示出了两个行解码器1302A和1302B,但应该理解,行解码器的数目可以大于2,一般地为“N”。因此,应该理解,当前实施例应用于存储器阵列1203被分为共享相同位线但具有其自己单独字线组的N个物理分开的SRAM子阵列。
第一行解码器1302A能够基于由控制器1218(或者由居间的预解码器,未示出,其将地址信号分到其部件内,即行信号1304A和列信号1305)发送的行信号1304A来选择第一字线子集1380A内字线1204中单独的一个。类似地,第二行解码器1302B能够基于由控制器1218(或者由居间的预解码器,未示出,其将地址信号分到其部件内,即行信号1304B和列信号)发送的行信号1304B选择第二字线子集1380B内字线1204中单独的一个。第一和第二字线子集可以是相邻的或者它们可以交错。
另外,第一行解码器1302A能够通过启用连接到第一群字线中的字线的那些字线驱动器1206来选择第一字线子集1380A内的第一群字线。所启用的字线驱动器随后驱动连接到第一群字线的存储单位行。同样,第二行解码器1302B也能够通过启用连接到第二群字线中的字线的那些字线驱动器1206来选择第二字线子集1380B内的第二群字线。所启用的字线驱动器随后驱动连接到第二群字线的存储单位行。
第一行解码器1302A对第一群字线的选择由预设控制信号1308A来控制,预设控制信号1308A由控制器1218发送。类似地,第二行解码器1302B对第二群字线的选择由预设控制信号1308B来控制,预设控制信号1308A由控制器1218发送。
在操作中,控制器1218控制预设控制信号1308A和1308B的确立,其具有控制第一群和第二群字线被选择的顺序的效果。响应于确立预设控制信号(即1308A和1308B)中给定一个,对应的行解码器(即1302A和1302B)在其自己字线子集(即1380A和1380B)内选择其自己的特定群字线。一旦选择了特定群字线,可以通过驱动对应位线来写连接到该群字线的行中的存储单位。具体地,如已经描述的,控制位线写驱动器来将位线设置到设置存储单位为期望逻辑状态所需的合适电平,该期望逻辑状态例如可以是逻辑“0”或逻辑“1”。
现在参考图13D,其是与图13C中的实施例相同的实施例,除了多个行解码器被组合到单个、较大的行解码器1352之外,还提供了单个主预设控制信号1358。但是,连续提供两个行信号1304A和1304B以允许在第一字线子集1380A和第二字线子集1380B的每一个中选择单独字线。这样,图13C的实施例需要在控制器1218中附加智能来确立预设控制信号1308A和1308B用于控制第一行解码器1302A和第二行解码器1302B,但图13D的实施例通过提供用于处理主预设控制信号1358的控制逻辑,而用行解码器1352自身提供了该智能。结果,当确立主预设控制信号1358时,行解码器1352确定选择哪群字线(即第一字线子集1380A内的第一群字线或者第二字线子集1380B内的第二群字线),以及确定其顺序。
本领域普通技术人员可以理解,在上述实施例中,当控制器1218确定是预设存储器阵列1203的时候时,可确立预设控制信号(例如1308、1308A、1308B)。当各存储单位1202的内容未知,且将被设置为预定逻辑状态时,在半导体存储器电路1200的上电操作期间,该“预设操作”是期望或者需要的。替代地或者另外地,通过例如看门狗电路(未示)产生的软复位可启动预设操作。本领域普通技术人员显而易见的是预设操作是期望或者需要的其他实例。
应该理解,本发明没有对字线的群的数目、每个群内字线的数目或者同一群内有哪些字线进行任何特定限制。而且,希望本领域普通技术人员能够基于例如峰值电流(其与群数目成反比)和后台写时间(其与群数目成正比)之间权衡的各种工程标准来确定合适的群大小、数目和关系。
而且,在支持多群字线的实施例中,可以同时,或者一个接一个地,或者以重叠方式等选择这些群。
另外,在支持多个预设控制信号的实施例中,本发明没有对控制器确立的多个预设控制信号的方式或者顺序进行任意特定限制。
同样,本发明允许使用单端口和双端口存储单位。在采用单端口存储单位的特定示例中,用于给定列的位线写驱动器与两个位线1210相关。为了将连接到给定列的存储单位设置为期望状态,两个相关位线中的一个被设置为低态,而另一个用于将给定列中的存储单位设置为期望状态。
参考图14,根据本发明的特定非限制性实施例,半导体存储器电路1200可以被嵌入到系统1400中。该系统1400可以是例如ASIC(专用集成电路)或者SoC(片上系统),在此仅列举少数非限制性可能性。
现在参考图15,其示出根据特定非限制性实施例的半导体设备1500,包括主存储单元1512和辅存储单元1514。半导体设备1500还可包括未示的其他部件。参考图21A,根据本发明的特定非限制性实施例,半导体设备1500可以被嵌入到系统800中。该系统800可以是例如ASIC(专用集成电路)或者SoC(片上系统),在此仅列举少数非限制性可能性。
主存储单元1512包括多个存储单位1520。辅存储单元1514包括行和列的阵列形式的多个存储单位1540。主存储单元1512中的存储单位1520可以类似地以阵列形式安置。辅存储单元1514中的存储单位1540每一个与主存储单元1512中包括一个或多个存储单位1520的组相关。在仅为示例目的而提供的所示实施例中,主存储单元1512具有4行、6列存储单位1520,辅存储单元1514具有4行、2列存储单位1540,并且辅存储单元1514中的每个存储单位与主存储单元1512中包括3个存储单位的一组存储单位相关。在其他示例中,辅存储单元1514中的一位值信息表示主存储单元1512中一字节值信息的状态信息(例如有效性、新鲜性、屏蔽价值(mask-worthiness)等)。但是,应该理解,对于辅存储单元1514中行或列的数目或者与辅单元存储单位相关的组内主存储单元存储单位的数目没有特殊限制。
在具体非限制性实施例中,辅存储单元1514的存储单位1540可包括金属氧化物半导体(MOS)静态随机存取存储器(SRAM)存储单元。具体地,图16示出了具有6个MOS晶体管1630、1631、1632、1633、1634、1635、字线1602W和两个位线1602B+、1602B-的单端口SRAM存储单元1602。可通过控制字线1602W和位线1602B+、1602B-来读或写存储单位1602。对于读和写操作二者,字线1602W都被设置为高(即“被选”或者“被确立”)。对于读操作,在位线1602B+和1602B-已经被预充电到高电平后,其均被感应。位线1602B+、1602B-中的一个位线上的高值不改变存储单位1602内的值,相反,存储单位1602将位线1602B+、1602B-中的一个拉低。根据位线1602B+、1602B-中的哪一个被拉低,将被解释为逻辑“0”或逻辑“1”。对于写操作,位线1602B+、1602B-中的一个被强加为低,另一个被强加为高。该低值克服(overpower)连接到强制为低的位线的PMOS晶体管(1631或者1633),这导致写入存储单位1602。根据位线1602B+、1602B-中的哪一个被强制为低,将逻辑“0”或逻辑“1”写到存储单位1602。
主存储单元的存储单位1520可类似地为SRAM存储单元。应该理解,在主存储单元1512和辅存储单元1514中可采用其它类型的具有字线和位线结构的存储单位,而不脱离本发明特定实施例的范围。这种其它类型的存储器单位的示例包括动态随机存取存储器(DRAM)。
现在参考图15,半导体设备1500包括多个字线1542,每个字线连接到辅存储单元1514相应的一行存储单位1540。提供行解码器电路1546,用于控制字线1542。具体地,当特定辅存储单元存储单位(即,辅存储单元1514的特定一个存储单位1540)将被读或写时,行解码器电路1546选择连接到特定辅存储单元存储单位所位于的行的字线。行解码器电路1546可以常规操作模式和预设操作模式来操作。在常规操作模式中,行解码器电路1546在多个字线1542中选择单独字线。在预设操作模式中,行解码器电路1546连带地在多个字线1542内选择包括2个或更多个字线的群。对于关于选择多个字线的更多信息,读者可参考在2009年8月5日提交的美国临时专利申请No.61/213,990和2009年9月22日提交的美国专利申请No.12/564,492,在此通过引用全部包含于此。控制逻辑电路1570提供行解码器电路1546操作的特定模式以及对包含将被读或写的存储单位的一个或多个行识别。
半导体设备1500还包括多个位线1544,每个位线连接到辅存储单元1514的相应一列存储单位1540。注意到,当辅存储单元1514中使用图16所示类型的单端口存储单位时,每个辅存储单元存储单位连接到一对位线1544。提供位线控制电路1548(例如,包括驱动器和感应放大器),用于控制位线1544。根据正在执行读还是写操作,位线控制电路1548的操作不同。对于写操作,位线控制电路1548被配置为驱动连接到辅存储单元1514所选列的位线1544,使得连接到已选字线的列中的每个存储单位可被写入,即设置为期望的逻辑状态(例如逻辑“0”或逻辑“1”)。应该理解,可以同时或依次选择辅存储单元1514的多个列。控制逻辑电路1570提供对所选的一列或多列的识别以及要被写入的数据值。在读操作期间,控制逻辑电路1570类似地识别辅存储单元1514的一列或多列。
半导体设备1500还包括多个字线1522,每个字线连接到主存储单元1512的相应的一行存储单位1520的。提供行解码器电路1526,用于控制字线1522。具体地,当特定主存储单元存储单位(即,主存储单元1512的特定一个存储单位1520)被读或写时,行解码器电路1526选择连接到特定主存储单元存储单位所位于的行的字线。控制逻辑电路1570提供对包含将被读或写的存储单位的行的识别。
半导体设备1500还包括多个电路1524,每个电路连接到主存储单元1512相应的一列存储单位1520。注意到,当主存储单元1512中使用图16所示类型的单端口存储单位时,每个主存储单元存储单位连接到一对电路1524。提供位线控制电路1528,用于控制电路1524。根据正在执行读还是写操作,位线控制电路1528的操作不同。对于写操作,位线控制电路1528被配置为驱动连接到主存储单元1512所选列的电路1524,使得连接到已选字线的列中的每个存储单位可被写入,即设置为期望的逻辑状态(例如逻辑“0”或逻辑“1”)。应该理解,可以同时或依次选择主存储单元1512的多个列。控制逻辑电路1570提供对所选的一列或多列的识别以及要被写入的数据值。在读操作期间,控制逻辑电路1570类似地识别主存储单元1512的一列或多列。
在操作中,控制逻辑电路1570处理从例如片外控制器的外部实体(未示)接收的命令。这些命令可包括预设命令、写命令、读命令以及其他命令。在非限制性示例中,从外部实体接收的预设命令可指示主存储单元1512中的数据应被认为是“陈旧的”、“值得屏蔽”(即需要应用屏蔽)、“无效的”等。此后,从外部实体接收目的为向主存储单元1512中特定存储单位或特定群的存储单位写数据的写命令,该写数据开始于起始地址。为了跟踪主存储单元存储单位(即主存储单元1512中的存储单位1520)的状态(例如,有效或无效、新鲜的或陈旧的、值得屏蔽或者不值得屏蔽等),包括1个或多个主存储单元存储单位的组与辅存储单元1514中对应存储单位相关联。随后,辅存储单元存储单位每一个可表示单个信息位,来指示例如包括3个主存储单元存储单位的对应组的特定状态(例如,有效或无效,新鲜的或陈旧的,值得屏蔽或者不值得屏蔽等)。因此,应该理解,在给定时间点,通过读辅存储单元1514,外部实体可建立主存储单元1512中不同存储单位的状态。应该理解,由给定一个辅存储单元存储单位所表示的每个组中主存储单元1512的数目不限于3或任意其他特定数值。
响应于接收预设命令,控制逻辑电路1570在辅存储单元1514上执行预设操作。预设操作的目的在于使得辅存储单元1514中每个存储单位1540获得特定逻辑状态(例如,逻辑“1”),其是主存储单元1512中对应的一组存储单位具有第一特定状态(例如,“无效的”、“陈旧的”、“值得屏蔽”等)的指示。为此,控制逻辑电路1570向行解码器电路1546识别出一群包括2行或更多行辅存储单元1514并且将行解码器电路1546置于前述预设操作模式,由此导致选择对应于2个或更多个所识别行的一群字线。由于识别包括2行或更多行的群将由将行解码器电路1546置于预设操作模式的动作来暗示,所以如果行解码器电路1546被配置为在置于预设操作模式时自动选择所有字线1542,则无需明确地向行解码器电路1546识别出包括2行或更多行的群。
在已经将行解码器电路1546置于预设操作模式后,控制逻辑电路1570控制位线控制电路1548,以将每个辅存储单位1540最终设置为特定逻辑状态(在该情况下,为逻辑“1”)。在示例中,假设通过行解码器电路1546的动作已经连带地选择了字线1542的数目,控制逻辑电路1570可控制用于单列的位线1544,以将连接到已选字线的该列中的所有存储单位同时设置为逻辑“1”。随后,重复该过程用于下一列等等。在另一个示例中,可控制用于多列的位线1544,以将连接到已选字线的每列中的所有存储单位同时设置为逻辑“1”。
如果连带选择的字线的数目小于所有字线1542的数目,则对一组新字线重复前述位线控制过程。最后,辅存储单元1514中所有存储单位1540将获得特定逻辑状态(在该情况中,为逻辑“1”)来指示主存储单元1512中存储单位1520具有第一特定状态(例如,“无效的”、“陈旧的”、“值得屏蔽的”等),且称完成预设操作。
在这个阶段,可进行将输入数据写到主存储单元1512。为此,控制逻辑电路1570处理写命令,该写命令可识别主存储单元1512中的起始地址且可包含要自起始地址开始写入的数据。由位于主存储单元1512中特定行和特定列的特定存储单位来表示该起始地址,因此该起始地址与特定字线和特定位线对相关联。控制逻辑电路1570向行解码器电路1526识别出特定行。随后,控制逻辑电路1570控制位线控制电路1528,使得特定位线对将特定主存储单元存储单位设置为与正在写入该起始地址的输入数据的数值相对应的逻辑状态。执行电路1524和字线1522的另外控制,用于随后写入其它的存储单位1520。这将导致一定数目的主存储单元存储单位被写入具有第二特定状态(例如,“有效的”、“新鲜的”、“不值得屏蔽的”等)的数据。
为了记录这些主存储单元存储单位的状态变化,控制逻辑电路1570确保对应于被写入的主存储单元存储单位的辅存储单元存储单位的内容被转换为指示数据具有第二特定状态(而非先前所需的第一特定状态)的逻辑状态(例如,逻辑“0”)。为此,控制逻辑电路1570确定辅存储单元存储单位的特定行和特定列,其中该辅存储单元存储单位对应的一组主存储单元存储单位包括前述起始地址处的特定存储单位。控制逻辑电路1570向行解码器电路1546识别出该特定行,并且将行解码器电路1546置于常规操作模式,这导致在辅存储单元1514中选择特定一个字线1542。随后,控制逻辑电路1570控制位线控制电路1548,使得对应于该特定列的特定位线对将辅存储单元存储单位设置为逻辑“0”,该辅存储单元存储单位对应的一组主存储单元存储单位包括起始地址处的特定存储单位。由此记录该对应的一组主存储单元存储单位的状态变化,并且对其它辅存储单元存储单位重复该过程,主存储单元中对应的一组存储单位也被写入。
应该理解,控制逻辑电路1570可用任意期望的方式组合辅存储单元1514中存储单位1540和主存储单元1512中存储单位1520。例如,可执行屏蔽操作以单独地逻辑组合(例如AND操作、OR操作、XOR操作等)辅存储单元1514中每个存储单位1540的逻辑值和主存储单元1512中相关组的存储单位中每个存储单位1520的逻辑值,从而生成新的一组逻辑值。以这样的方式,辅存储单元1514中存储单位1540可被用作对主存储单元1512中多个组的存储单位1520的屏蔽。当向非易失性存储器设备中的虚拟页面缓冲器传输信息时,这样的屏蔽操作是有用的,以阻止对非易失性存储器设备中存储单元的不希望地写入。
随后的写操作将类似地影响主存储单元存储单位的其它组和它们在辅存储单元1514中的对应存储单位1540。在(由于辅存储单元1514中对应存储单位的逻辑值)认为主存储单元1512中给定存储单位是“有效”、“新鲜的”或“不值得屏蔽”的情况中,正如其用其它数据重写时仍可连续被认为是“有效”、“新鲜的”或“不值得屏蔽”,直到发生下一个预设操作。替代地,只要其被重写,状态就可变回第一特定状态(例如“无效”、“陈旧的”、“值得屏蔽”等)。
应该理解,主和辅存储单元1512和1514可被实现为在控制逻辑电路1570控制下的独立实体。这样,例如,可写单独的编译器程序,以自定义限定主存储单元1512和辅存储单元1514。这允许独立地选择主存储单元1512和辅存储单元1514的尺寸,而不考虑例如对应于辅单元存储单位的每个组中主存储单元存储单位的数目的参数。
在另一实施例中,可以定义包括主存储单元和辅存储单元的单个存储器结构为紧密互连部件,其可节约半导体芯片的有效面积(real estate)。为此,参考图17,其示出了具有前述主存储单元1512和辅存储单元1704的半导体设备1700,主存储单元1512和辅存储单元1704的每个的行数目都相同、列数目可以不同。参考图21B,根据本发明的特定非限制性实施例,半导体设备1700可以被嵌入到系统810中。该系统810可以是例如ASIC(专用集成电路)或者SoC(片上系统),在此仅列举少数非限制性可能性。
在仅为示例目的而提供的所示实施例中,主存储单元1512具有4行、6列存储单位,辅存储单元1704具有4行、2列存储单位,并且辅存储单元1704中的每个存储单位与主存储单元1512中包括3个存储单位的一组相关。在其他示例中,辅存储单元1704中的一位值信息表示主存储单元1512中一字节值信息的状态信息(例如有效性、新鲜性,屏蔽价值等)。但是,应该理解,对于行或列的数目或者与辅单元存储单位相关的组内主存储单元存储单位的数目没有特殊限制。
由于行数目相同的事实,提供了多个共享字线1712,字线1712在主存储单元1512和辅存储单元1704之间共享。也就是说,如果字线1712中给定的一个连接到包括特定辅存储单元存储单位的给定行的辅存储单元存储单位,其也连接到包括对应于该特定辅存储单元存储单位的一组主存储单元存储单位的该行主存储单元存储单位。
在图17的实施例中,提供行解码器电路1746,用于仅控制一组字线,即在主存储单元1512和辅存储单元1704之间共享的字线1712。具体地,当主存储单元1512或者辅存储单元存储单位1704的特定存储单位被读或写时,行解码器电路1746选择连接到该特定存储单位所位于行的字线。行解码器电路1746可以常规操作模式和预设操作模式来操作。在常规操作模式中,行解码器电路1746在多个字线1712中选择单独字线。在预设操作模式中,行解码器电路1746连带地在多个字线1712内选择包括2个或更多个字线的一群字线。控制逻辑电路1770控制行解码器电路1746操作的特定模式以及对包含被读或写的存储单位的一个或多个行的识别。
半导体设备1700还包括多个主位线1724和多个辅位线1744,每个主位线1724连接到主存储单元1512相应列的存储单位,每个辅位线1744连接到辅存储单元1704相应列的存储单位。注意到,当主存储单元1512(或辅存储单元1704)中使用图16所示类型的单端口存储单位时,每个主存储单元存储单位(或辅存储单元存储单位)连接到一对主位线1724(或辅位线1744)。提供位线控制电路1728用于控制主位线1724和辅位线1744。根据正在执行读还是写操作,位线控制电路1728的操作不同。对于写操作,位线控制电路1728被配置为驱动连接到主存储单元1512(或辅存储单元1704)所选列的主位线1724(或辅位线1744),使得连接到已选字线的列中的每个存储单位可被写入,即设置为期望的逻辑状态(例如逻辑“0”或逻辑“1”)。应该理解,可以同时或依次选择来自主存储单元1512和辅存储单元1704中的一个或二者的多个列。控制逻辑电路1770提供对所选的一列或多列的识别以及要被写入的数据值。在读操作期间,控制逻辑电路1770类似地识别辅存储单元1704的一列或多列。
在操作中,控制逻辑电路1770处理从例如片外控制器的外部实体(未示)接收的命令。这些命令可包括预设命令、写命令、读命令以及其他命令。在非限制性示例中,从外部实体接收的预设命令可指示主存储单元1512中的数据应被认为是“陈旧的”、“值得屏蔽的”(即需要应用屏蔽)、“无效的”等。此后,从外部实体接收目的为向主存储单元1512中特定存储单位或特定群的存储单位写数据的写命令,该写数据开始于起始地址。为了跟踪主存储单元存储单位(即主存储单元1512中的存储单位)的状态(例如,有效或无效,新鲜的或陈旧的,值得屏蔽或者不值得屏蔽等),包括1个或多个主存储单元存储单位的组与辅存储单元1704中对应的存储单位相关联。辅存储单元存储单位每一个可表示单个位的信息,来指示例如包括3个主存储单元存储单位的对应组的特定状态(例如,有效或无效,新鲜的或陈旧的,值得屏蔽或者不值得屏蔽等)。因此,应该理解,在给定时间点,通过读辅存储单元1704,外部实体可建立主存储单元1512中不同存储单位的状态。应该理解,由辅存储单元1704中的每个存储单位所表示的主存储单元1512的存储单位的数目不限于3或任意其他特定数值。
响应于接收预设命令,控制逻辑电路1770在辅存储单元1704上执行预设操作。预设操作的目的在于使得辅存储单元1704中每个存储单位获得特定逻辑状态(例如,逻辑“1”),其是主存储单元1512中对应存储单位组具有第一特定状态(例如,“无效”、“陈旧的”、“值得屏蔽”等)的指示。为此,控制逻辑电路1770向行解码器电路1746识别出包括2行或更多行辅存储单元1704的一群并且将行解码器电路1746置于前述预设操作模式,由此导致选择对应于2个或更多个所识别行的一群字线。由于识别出包括2行或更多行的一群将由将行解码器电路1746置于预设操作模式的动作来暗示,所以如果行解码器电路1546在置于预设操作模式时被配置为自动选择所有字线1712,则无需明确地向行解码器电路1746识别出包括2行或更多行的一群。
在已经将行解码器电路1746置于预设操作模式后,控制逻辑电路1770控制位线控制电路1728,以将每个辅存储单位最终设置为特定逻辑状态(在该情况下,为逻辑“1”)。在示例中,假设通过行解码器电路1746的动作已经连带地选择了字线1712的数目,控制逻辑电路1770可控制用于单列的辅位线1744,以将连接到已选字线的该列中所有存储单位同步地设置为逻辑“1”。随后,重复该过程用于下一列等等。在另一个示例中,可控制用于多列的辅位线1744,以将连接到已选字线的每列中所有存储单位同时设置为逻辑“1”。
如果连带选择的字线的数目小于所有字线1712,则对一组新字线重复前述位线控制过程。最后,辅存储单元1704中所有存储单位将获得特定逻辑状态(在该情况中,为逻辑“1”)来指示主存储单元1512中存储单位具有第一特定状态(例如,“无效”、“陈旧的”、“值得屏蔽”等),且称为完成预设操作。
在这个阶段,可进行将输入数据写到主存储单元1512。为此,控制逻辑电路1770处理写命令,该写命令可识别主存储单元1512中起始地址且可包含要自起始地址开始写入的数据。由位于主存储单元1512中特定行和特定列的特定主存储单元存储单位表示该起始地址,因此该起始地址与特定字线和特定主位线对相关联。控制逻辑电路1770向行解码器电路1746识别出特定行。控制逻辑电路1770将行解码器电路1746置于常规操作模式,由此导致选择上述特定字线。随后,控制逻辑电路1770控制位线控制电路1728,使得主位线1724的特定对将特定存储单位设置为对应于要写入该起始地址的输入数据的数值的逻辑状态。另外,控制逻辑电路1770确保对应于写入的特定主存储单元存储单位的辅存储单元存储单位的内容被转换为指示具有第二特定状态(例如“有效”、“新鲜的”、“不值得屏蔽”等)的数据的不同逻辑状态(例如,逻辑“0”)。通过确定对应于该特定主存储单元存储单位的特定列的辅位线对,同时保持选择相同字线来完成上述操作。随后,控制逻辑电路1770控制位线控制电路1728,使得将辅存储单元存储单位设置为逻辑“0”,其中该辅存储单元存储单位对应的主存储单元存储单位的组包括特定主存储单元存储单位。应该理解,由于保持选择相同字线,因此可以使位线控制电路1728同时(或大体同时)控制一对主位线1724和相关的一对辅位线1744,由此同时写主存储单元1512和辅存储单元1704,但这不是必须的。
随后对用于主存储单元1512中随后被写入的其他存储单位以及辅存储单元1704中其对应存储单位重复上述过程。
应该理解,控制逻辑电路1770可用任意期望的方式组合辅存储单元1704中的存储单位和主存储单元1512中的存储单位1520。例如,可执行屏蔽操作以单独地逻辑组合(例如AND操作、OR操作、XOR操作等)辅存储单元1704中每个存储单位的逻辑值和主存储单元1512中相关存储单位组中每个存储单位1520的逻辑值,从而生成新的一组逻辑值。以这样的方式,辅存储单元1704中的存储单位可被用作对主存储单元1512中存储单位1520的组的屏蔽。当向非易失性存储器设备中的虚拟页面缓冲器传输信息时这样的屏蔽操作是有用的,以阻止对非易失性存储器设备中存储单元的不希望地写入。
根据另一具体的非限制性实施例,辅存储单元和主存储单元相比具有较少的字线。特别地,参考图18,示出了具有前述主存储单元1512和辅存储单元1804的半导体设备1800。参考图21C,根据本发明的特定非限制性实施例,半导体设备1800可以被嵌入到系统820中。该系统820可以是例如ASIC(专用集成电路)或者SoC(片上系统),在此仅列举少数非限制性可能性。
该主存储单元1512具有4行、6列存储单位,辅存储单元1804具有2行、4列存储单位,并且辅存储单元1804中的每个存储单位与主存储单元1512中包括3个存储单位的一组存储单位相关。在其他示例中,辅存储单元1804中的一位值信息表示主存储单元1512中一字节值信息的状态信息(例如有效、新鲜、屏蔽价值等)。一般来说,在该实施例中,该主存储单元1512具有N1行、M1列存储单位,辅存储单元1804具有N2行、M2列存储单位,并且辅存储单元1804中的每个存储单位与主存储单元1512中包括Z个存储单位的一组存储单位相关,其中Z大于或者等于1。该具体非限制性实施例的特征在于N2小于N1,即辅存储单元1804和主存储单元1512相比具有较少的行,而辅存储单元1804中列的数目M2大于M1/Z。在其他方面,对于M1、N1、M2、N2或者Z的数值没有特定限制。
半导体设备1800还包括前述多个字线1522,每个字线连接到主存储单元1512相应行的存储单位。提供行解码器电路1526,用于控制字线1522。具体地,当特定主存储单元存储单位被读或写时,行解码器电路1526选择连接到该特定主单元存储单位所位于行的字线。控制逻辑电路1870提供对包含将被读或写的存储单位的行的识别。
半导体设备1800还包括前述多个电路1524,每个电路连接到主存储单元1512相应列的存储单位的。注意到,当主存储单元1512中使用图16所示类型的单端口存储单位时,每个主存储单元存储单位连接到一对电路1524。提供位线控制电路1528,用于控制电路1524。根据正在执行读还是写操作,位线控制电路1528的操作不同。对于写操作,位线控制电路1528被配置为驱动连接到主存储单元1512所选列的电路1524,使得连接到已选字线的该列中的每个存储单位可被写入,即设置为期望的逻辑状态(例如逻辑“0”或逻辑“1”)。应该理解,可以同时或依次选择主存储单元1512的多个列。控制逻辑电路1870提供对所选的一列或多列的识别以及要被写入的数据值。在读操作期间,控制逻辑电路1870类似地识别主存储单元1512的一列或多列。
半导体设备1800还包括多个字线1842,每个字线连接到辅存储单元1804相应行的存储单位。提供行解码器电路1846,用于控制字线1842。具体地,当特定辅存储单元存储单位被读或写时,行解码器电路1846选择连接到该特定辅单元存储单位所位于行的字线。行解码器电路1846可操作以在多个字线1842中选择单独字线。
半导体设备1800还包括多个位线1844,每个位线连接到辅存储单元1804相应列的存储单位。注意到,当辅存储单元1804中使用图16所示类型的单端口存储单位时,两个位线1844被连接到每个列。提供位线控制电路1848,用于控制位线1844。根据正在执行读还是写操作,位线控制电路1848的操作不同。对于写操作,位线控制电路1848被配置为驱动连接到辅存储单元1804所选列的位线1844,使得连接到已选字线的该列中的每个存储单位可被写入,即设置为期望的逻辑状态(例如逻辑“0”或逻辑“1”)。应该理解,可以同时或依次选择辅存储单元1804的多个列。控制逻辑电路1870提供对所选的一列或多列的识别以及要被写入的数据值。在读操作期间,控制逻辑电路1870类似地识别辅存储单元1804的一列或多列。
在操作中,控制逻辑电路1870处理从例如片外控制器的外部实体(未示)接收的命令。这些命令可包括预设命令、写命令、读命令以及其他命令。在非限制性示例中,从外部实体接收的预设命令可指示主存储单元1512中的数据应被认为是“陈旧的”、“值得屏蔽”(即需要应用屏蔽)、“无效”等。此后,从外部实体接收目的为向主存储单元1512中特定存储单位或特定群的存储单位写数据的写命令,该写数据开始于起始地址。为了跟踪主存储单元存储单位的状态(例如,有效或无效,新鲜的或陈旧的,值得屏蔽或者不值得屏蔽等),包括1个或多个主存储单元存储单位的组与辅存储单元1804中的对应存储单位相关联。随后,辅存储单元存储单位每一个可表示单个位的信息,来指示例如包括3个主存储单元存储单位的对应组的特定状态(例如,有效或无效,新鲜的或陈旧的,值得屏蔽或者不值得屏蔽等)。因此,应该理解,在给定时间点,通过读辅存储单元1804,外部实体可建立主存储单元1512中不同存储单位的状态。应该理解,由给定一个辅存储单元存储单位所表示的每个组中主存储单元1512的数目不限于3或任意其他特定数值。
响应于接收预设命令,控制逻辑电路1870在辅存储单元1804上执行预设操作。预设操作的目的在于使得辅存储单元1804中每个存储单位获得特定逻辑状态(例如,逻辑“1”),其是主存储单元1512中对应组的存储单位具有第一特定状态(例如,“无效”、“陈旧的”、“值得屏蔽”等)的指示。为此,控制逻辑电路1870向行解码器电路1846识别出辅存储单元1804的第一行,由此导致选择对应于所识别行的特定一个字线1842。随后控制逻辑电路1870控制位线控制电路1848,以将连接到特定字线的每个辅存储单元存储单位设置为特定逻辑状态(在该情况中,为逻辑“1”)。在示例中,控制逻辑电路1870可以逐列方式、一次数列方式、或者同时方式控制位线1844。随后对辅存储单元1804的所有行重复上述过程,直到辅存储单元1804中所有存储单位已获得特定逻辑状态(在该情况中,为逻辑“1”),来指示主存储单元1512中的存储单位具有第一特定状态(例如,“无效”、“陈旧的”、“值得屏蔽”等)。在这一点,称为完成了预设操作。注意到,由于N2<N1且M2>M1/Z,所以在预设操作期间有较少的辅存储单元1804的行参与,其可加速预设操作。
在这个阶段,可进行将输入数据写到主存储单元1512。为此,控制逻辑电路1870处理写命令,该写命令可识别主存储单元1512中的起始地址且可包含要自该起始地址开始写入的数据。位于主存储单元1512中特定行和特定列的特定存储单位表示该起始地址,且因此该起始地址与特定字线和特定位线对相关联。控制逻辑电路1870向行解码器电路1526识别出特定行。随后,控制逻辑电路1870控制位线控制电路1528,使得特定位线对将特定主存储单元存储单位设置为对应于要写入该起始地址的输入数据的数值的逻辑状态。执行电路1524和字线1522的另外控制,用于随后被写的其它主存储单元存储单位。
为了记录这些主存储单元存储单位的状态变化,控制逻辑电路1870确保对应于被写的主存储单元存储单位的辅存储单元存储单位的内容被转换为指示具有第二特定状态(而非先前所需的第一特定状态)的数据的逻辑状态(例如,逻辑“0”)。为此,控制逻辑电路1870确定辅存储单元存储单位的特定行和特定列,其中该辅存储单元存储单位对应的一组主存储单元存储单位包括前述起始地址处的特定存储单位。控制逻辑电路1870向行解码器电路1846识别出该特定行,这导致在辅存储单元1804中选择特定一个字线1842。随后,控制逻辑电路1870控制位线控制电路1848,使得对应于该特定列的特定位线对将辅存储单元存储单位设置为逻辑“0”,其中该辅存储单元存储单位对应的一组主存储单元存储单位包括前述起始地址处的特定存储单位。由此记录对应组的主存储单元存储单位的状态变化,并且对其它辅存储单元存储单位重复该过程,其它辅存储单元存储单位在主存储单元中的对应组存储单位也被写入。
应该理解,控制逻辑电路1870可用任意期望的方式组合辅存储单元1804中的存储单位和主存储单元1512中的存储单位1520。例如,可执行屏蔽操作以单独地逻辑组合(例如AND操作、OR操作、XOR操作等)辅存储单元1804中每个存储单位的逻辑值和主存储单元1512中相关组的存储单位中每个存储单位1520的逻辑值,从而生成新的一组逻辑值。以这样的方式,辅存储单元1804中存储单位1804可被用作主存储单元1512中存储单位1520的组的屏蔽。当向非易失性存储器设备中的虚拟页面缓冲器传输信息时这样的屏蔽操作是有用的,以阻止对非易失性存储器设备中存储单元的不希望的写入。
根据另一具体的非限制性实施例,辅存储单元包括多个可被独立控制的子单元。特别地,参考图19,示出了具有前述主存储单元1512和辅存储单元1904的半导体设备1900。参考图21D,根据本发明的特定非限制性实施例,半导体设备1900可以被嵌入到系统830中。该系统830可以是例如ASIC(专用集成电路)或者SoC(片上系统),在此仅列举少数非限制性可能性。
主存储单元1512具有4行、6列存储单位,而辅存储单元1904包括2个子单元1906A和1906B,每个子单元具有2行、2列存储单位。但应该理解,可以有更多数目的子单元,且它们无需都具有相同尺寸。同样为了示例目的,子单元1906A和1906B的每个中的每个存储单位与主存储单元1512中的包括3个存储单位的一组存储单位相关联。在其他示例中,辅存储单元1904中的一位值信息表示主存储单元1512中一字节值信息的状态信息(例如有效、新鲜的、值得屏蔽等)。但是,应该理解,对于行或列的数目或者与子单元1906A和1906B的各个存储单位相关的组中主存储单元存储单位的数目没有特殊限制。
半导体设备1900还包括前述多个字线1522,每个字线连接到主存储单元1512相应行的存储单位。提供行解码器电路1526,用于控制字线1522。具体地,当特定主存储单元存储单位被读或写时,行解码器电路1526选择连接到该特定主单元存储单位所位于行的字线。控制逻辑电路1970提供对包含将读或写的存储单位的行的识别。
半导体设备1900还包括前述多个电路1522,每个电路连接到主存储单元1512相应列的存储单位。注意到,当主存储单元1512中使用图16所示类型的单端口存储单位时,两个电路1524连接到每个列。提供位线控制电路1528,用于控制电路1524。根据正在执行读还是写操作,位线控制电路1528的操作不同。对于写操作,位线控制电路1528被配置为驱动连接到主存储单元1512所选列的电路1524,使得连接到已选字线的该列中的每个存储单位可被写入,即设置为期望的逻辑状态(例如逻辑“0”或逻辑“1”)。应该理解,可以同时或依次选择主存储单元1512的多个列。控制逻辑电路1970提供对所选的一列或多列的识别以及要被写入的数据值。在读操作期间,控制逻辑电路1970类似地识别主存储单元1512的一列或多列。
半导体设备1900还包括多个字线1942A,每个字线连接到子单元1906A相应行的存储单位。提供行解码器电路1946A,用于控制字线1942A。具体地,当子单元1906A中特定辅存储单元存储单位被读或写,行解码器电路1946A选择连接到该特定辅单元存储单位所位于行的字线。行解码器电路1946A可操作以在多个字线1942A中选择单独字线。
近似地,半导体设备1900还包括多个字线1942B,每个字线连接到子单元1906B相应行的存储单位。提供行解码器电路1946B,用于控制字线1942B。具体地,当子单元1906B中特定辅存储单元存储单位被读或写时,行解码器电路1946B选择连接到该特定辅单元存储单位所位于行的字线。行解码器电路1946B可操作以在多个字线1942B中选择单独字线。
半导体设备1900还包括多个位线1944,每个位线连接到子单元1906A相应列的存储单位。根据该非限制性实施例,每个位线1944也连接到子单元1906A相应列的存储单位。注意到,当辅存储单元1904中使用图16所示类型的单端口存储单位时,两个位线1944连接到两列存储单位的每个列,一列位于子单元1906A内而其对应列位于子单元1906B内。这样,可以说位线1944贯穿多个子单元。提供位线控制电路1948,用于控制位线1944。根据正在执行读还是写操作,位线控制电路1948的操作不同。对于写操作,位线控制电路1948被配置为驱动连接到子单元1906A所选列(和其在子单元1906B内的对应列)的位线1944,使得连接到已选字线的那些列中的每个存储单位可被写入,即设置为期望的逻辑状态(例如逻辑“0”或逻辑“1”)。应该理解,可以同时或依次选择子单元1906A的多个列,同时其在子单元1906B内的对应列也连带地被选择。控制逻辑电路1970提供对子单元1906A内所选的一列或多列(和其在子单元1906B内的对应一列或多列)的识别以及要被写入的数据值。在读操作期间,控制逻辑电路1970类似地识别子单元1906A内的一列或多列(和其在子单元1906B内的对应一列或多列)。
在操作中,控制逻辑电路1970处理从例如片外控制器的外部实体(未示)接收的命令。这些命令可包括预设命令、写命令、读命令以及其他命令。在非限制性示例中,从外部实体接收的预设命令可指示主存储单元1512中的数据应被认为是“陈旧的”、“值得屏蔽”(即需要应用屏蔽)、“无效”等。此后,从外部实体接收目的为向主存储单元1512中特定存储单位或特定群的存储单位写数据目的写命令,该写数据开始于起始地址。为了跟踪主存储单元存储单位的状态(例如,有效或无效,新鲜的或陈旧的,值得屏蔽或者不值得屏蔽等),包括1个或多个主存储单元存储单位的组与辅存储单元1904的子单元1906A、1906B的一个中对应存储单位相关联。随后,辅存储单元存储单位每一个可表示单个位的信息,来指示例如包括3个主存储单元存储单位的对应组的特定状态(例如,有效或无效,新鲜的或陈旧的,值得屏蔽或者不值得屏蔽等)。因此,应该理解,在给定时间点,通过读辅存储单元1904,外部实体可建立主存储单元1512中不同存储单位的状态。应该理解,由给定一个辅存储单元存储单位所表示的每个组中主存储单元1512的数目不限于3或任意其他特定数值。
响应于接收预设命令,控制逻辑电路1970在辅存储单元1904上执行预设操作。预设操作的目的在于使得子单元1906A、1906B中每个存储单位获得特定逻辑状态(例如,逻辑“1”),其是主存储单元1512中对应存储单位组具有第一特定状态(例如,“无效”、“陈旧的”、“值得屏蔽”等)的指示。为此,控制逻辑电路1970向行解码器电路1946A识别出第一行子单元1906A并且向行解码器电路1946B识别出第一行子单元1906B,由此导致选择一对字线,即在字线1942A和字线1942B中各选择一个字线。随后控制逻辑电路1970控制位线控制电路1948,以同时将连接到特定字线对的每个辅存储单元存储单位设置为特定逻辑状态(在该情况中,为逻辑“1”)。在示例中,控制逻辑电路1970可以逐列方式、一次数列方式、或者同时方式控制位线1944。随后对子单元1906A、1906B等等中的另一对行重复上述过程,直到辅存储单元1904中所有存储单位已获得特定逻辑状态(在该情况中,为逻辑“1”),该特定逻辑状态指示主存储单元1512中的存储单位具有第一特定状态(例如,“无效”、“陈旧的”、“值得屏蔽”等)。在这一点,称为完成了预设操作。
在这个阶段,可进行将输入数据写到主存储单元1512。为此,控制逻辑电路1970处理写命令,该写命令可识别主存储单元1512中起始地址且可包含要自起始地址开始写入的数据。位于主存储单元1512中特定行和特定列的特定存储单位表示该起始地址,因此该起始地址与特定字线和特定位线对相关联。控制逻辑电路1970向行解码器电路1526识别出特定行。随后,控制逻辑电路1970控制位线控制电路1528,使得特定位线对将特定主存储单元存储单位设置为对应于要写入该起始地址的输入数据的数值的逻辑状态。执行电路1524和字线1522的另外控制,用于随后被写的其它主存储单元存储单位。
为了记录这些主存储单元存储单位的状态变化,控制逻辑电路1970确保对应于被写入的主存储单元存储单位的辅存储单元存储单位的内容被转换为指示数据具有第二特定状态(而非先前所需的第一特定状态)的逻辑状态(例如,逻辑“0”)。为此,控制逻辑电路1970确定辅存储单元存储单位的特定子单元、特定行和特定列,其中该辅存储单元存储单位对应组的主存储单元存储单位包括前述起始地址处的特定存储单位。如果特定子单元是子单元1906A,则控制逻辑电路1970向行解码器电路1946A识别出该特定行,这导致在子单元1906A中选择特定一个字线1942A。近似地,如果特定子单元是子单元1906B,则控制逻辑电路1970向行解码器电路1946B识别出该特定行,这导致在子单元1906B中选择特定一个字线1942B。随后,控制逻辑电路1970控制位线控制电路1948,使得对应于该特定列的特定位线对将辅存储单元存储单位设置为逻辑“0”,该辅存储单元存储单位对应的一组主存储单元存储单位包括前述起始地址处的特定存储单位。由此记录对应组的主存储单元存储单位的状态变化,并且对其它辅存储单元存储单位重复该过程,其它辅存储单元存储单位在主存储单元中对应组的存储单位也被写入有效数据。
应该理解,控制逻辑电路1970可用任意期望的方式组合辅存储单元1904中的存储单位和主存储单元1512中的存储单位1520。例如,可执行屏蔽操作以单独地逻辑组合(例如AND操作、OR操作、XOR操作等)辅存储单元1904中每个存储单位的逻辑值和主存储单元1512中相关组存储单位中每个存储单位1520的逻辑值,从而生成新的一组逻辑值。以这样的方式,辅存储单元1904中的存储单位可被用作对主存储单元1512中存储单位1520的组的屏蔽。当向非易失性存储器设备中的虚拟页面缓冲器传输信息时这样的屏蔽操作是有用的,以阻止对非易失性存储器设备中存储单元不希望地写入。
根据另一具体的非限制性实施例,辅存储单元使用双端口SRAM存储单元,而主存储单元使用单端口SRAM存储单元。参考图11,示出双端口SRAM存储单元,其与图16的单端口SRAM存储单元具有一些类似性,但包括2个晶体管代替图16的晶体管1630,以及2个其他晶体管代替图16的晶体管1635。此外,双端口SRAM存储单元还包括2个字线,即A字线WL1和B字线WL2。另外,双端口SRAM存储单元包括2对位线,即A对位线BL1-、BL1+和B对位线BL2-、BL2+。
通过控制A字线WL1和A对位线BL1-、BL1+或者通过控制B字线WL2和B对位线BL2-、BL2+,可读或写该双端口SRAM存储单元。对于读和写操作二者,A字线WL1被设置为高(即“被选择”或者“被确立”)。对于读操作,在A对位线BL1+、BL1-已经被预充电到高电平后,其均被感应。A对位线BL1+、BL1-中的一个上的高值不改变存储单位内的值,相反,该存储单位将A对位线BL1+、BL1-中的一个拉低。根据A对位线BL1+、BL1-中的哪一个被拉低,将被解释为逻辑“0”或逻辑“1”。对于写操作,A对位线BL1+、BL1-中的一个被强加为低,另一个被强加为高。该低值克服(overpower)连接到强制为低的位线的PMOS晶体管,这导致该存储单位被写入。根据A对位线BL1+、BL1-中的哪一个被强制为低,将逻辑“0”或逻辑“1”写到该存储单位。
类似地,对于读和写操作二者,B字线WL2被设置为高(即“被选择”或者“被确立”)。对于读操作,在B对位线BL2+、BL2-已经被预充电到高电平后,其均被感应。B对位线BL2+、BL2-中的一个上的高值不改变存储单位内的值,相反,该存储单位将B对位线BL2+、BL2-中的一个拉低。根据B对位线BL2+、BL2-中的哪一个被拉低,将被解释为逻辑“0”或逻辑“1”。对于写操作,B对位线BL2+、BL2-中的一个被强制为低,另一个被强制为高。低值压制(overpower)连接到强制为低的位线的PMOS晶体管,这导致该存储单位被写入。根据B对位线BL2+、BL2-中的哪一个被强制为低,将逻辑“0”或逻辑“1”写到该存储单位。
现在参考图20,示出了具有前述主存储单元1512和使用双端口SRAM存储单元的辅存储单元2004的半导体设备2000。参考图21E,根据本发明的特定非限制性实施例,半导体设备2000可以被嵌入到系统840中。该系统840可以是例如ASIC(专用集成电路)或者SoC(片上系统),在此仅列举少数非限制性可能性。
该主存储单元1512具有4行、6列存储单位,辅存储单元2004具有4行、2列存储单位,并且辅存储单元2004中的每个存储单位与主存储单元1512中包括3个存储单位的一组存储单位相关。在其他示例中,辅存储单元2004中的一位值信息表示主存储单元1512中一字节值信息的状态信息(例如有效、新鲜、值得屏蔽等)。但是,应该理解,对于行或列的数目或者与辅存储单元2004的各个存储单位相关的组内主存储单元存储单位的数目没有特殊限制。
半导体设备2000还包括前述多个字线1522,每个字线连接到主存储单元1512相应行的存储单位。提供行解码器电路1526,用于控制字线1522。具体地,当特定主存储单元存储单位被读或写时,行解码器电路1526选择连接到该特定主单元存储单位所位于行的字线。控制逻辑电路2070提供对包含将被读或写的存储单位的行的识别。
半导体设备2000还包括前述多个电路1524,每个电路连接到主存储单元1512相应列的存储单位。注意到,当主存储单元1512中使用图16所示类型的单端口存储单位时,两个电路1524连接到每个列。提供位线控制电路1528,用于控制电路1524。根据正在执行读还是写操作,位线控制电路1528的操作不同。对于写操作,位线控制电路1528被配置为驱动连接到主存储单元1512所选列的电路1524,使得连接到已选字线的列中的每个存储单位可被写入,即设置为期望的逻辑状态(例如逻辑“0”或逻辑“1”)。应该理解,可以同时或依次选择主存储单元1512的多个列。控制逻辑电路2070提供对所选的一列或多列的识别以及要被写入的数据值。在读操作期间,控制逻辑电路2070类似地识别主存储单元1512的一列或多列。
半导体设备2000还包括多个字线2042。注意到,当辅存储单元2004中使用图11所示类型的双端口存储单位时,字线2042成对地连接到辅存储单元2004相应行的存储单位。这样,第一对字线2042连接到辅存储单元2004的第一行存储单位,第二对字线2042连接到第二行等等。在每对字线中,可以识别A字线和B字线。提供行解码器电路2046,用于控制字线2042,每一行包括A字线和B字线。具体地,当特定辅存储单元存储单位被读或写时,行解码器电路2046选择用于该特定辅单元存储单位所位于行的A字线或B字线。行解码器电路2046可操作,以选择一个A字线和一个B字线,其可以在同一行,但这不是必须的。这样,行解码器电路2046可有效地选择2个不同行,这允许读或者写2个分开的行内的存储单位,或者允许读一行内的存储单位但写另一行内的存储单位。
半导体设备2000还包括多个位线2044,每个位线连接到辅存储单元2004相应列的存储单位。注意到,当辅存储单元2004中使用图11所示类型的双端口存储单位时,每个辅存储单元存储单位连接到两对位线2044,包括A对位线和B对位线。提供位线控制电路2048,用于控制位线2044,包括A对位线和B对位线。连接到给定存储单位的A对位线与用于该给定存储单位所位于的行的A字线相关。近似地,连接到给定存储单位的B对位线与用于该给定存储单位所位于的行的B字线相关。当选择A字线时,位线控制电路2048对用于给定存储单位的A对位线的控制允许读或者写该给定存储单位。近似地,当选择B字线时,位线控制电路2048对用于给定存储单位的B对位线的控制允许读或者写该给定存储单位。
这样,可选择两行,一个经由A字线,一个经由B字线,而且分别使用A对位线和B对位线独立地读或者写这些行中的存储单位。具体地,给出不同行中的两个所选存储单位,第一所选存储单位可被读或写而不影响相同行内且恰巧与第二所选存储单位位于相同列的其他存储单位,其中该第二所选存储单位与该其他存储单位位于不同行。这允许不同行内的存储单位被独立地写入,例如在一行内的存储单位可从左到右地写入,而同时另一行内的存储单位可从右到左地写入。虽然此示例假设每一行中仅一个存储单位被同时写入,但是应该理解,位线2048的控制允许每一行中多个存储单位被同时写入。因此,例如,一行内的一群存储单位可被从左到右地写入,但同时,另一行内的一群存储单位可被从右到左地写入。
控制逻辑电路2070为位线控制电路2048提供对包含要被写入的存储单位的列的识别以及要被写入的实际数据的数值。在涉及辅存储单元2004的一个或多个列的读操作期间,控制逻辑电路2070类似地识别该辅存储单元2004的一列或多列。
在操作中,控制逻辑电路2070处理从例如片外控制器的外部实体(未示)接收的命令。这些命令可包括预设命令、写命令、读命令以及其他命令。在非限制性示例中,从外部实体接收的预设命令可指示主存储单元1512中的数据应被认为是“陈旧的”、“值得屏蔽”(即需要应用屏蔽)、“无效”等。此后,从外部实体接收目的为向主存储单元1512中特定存储单位或特定群的存储单位写数据的写命令,该写数据开始于起始地址。为了跟踪主存储单元存储单位的状态(例如,有效或无效,新鲜的或陈旧的,值得屏蔽或者不值得屏蔽等),包括1个或多个主存储单元存储单位的组与辅存储单元2004中对应存储单位相关联。随后,辅存储单元存储单位每一个可表示单个位信息,来指示包括例如3个主存储单元存储单位的对应组的特定状态(例如,有效或无效,新鲜的或陈旧的,值得屏蔽或者不值得屏蔽等)。因此,应该理解,在给定时间点,通过读辅存储单元2004,外部实体可建立主存储单元1512中不同存储单位的状态。应该理解,给定一个辅存储单元存储单位所表示的每个组中主存储单元1512的数目不限于3或任意其他特定数值。
响应于接收预设命令,控制逻辑电路2070在辅存储单元2004上执行预设操作。预设操作的目的在于使得辅存储单元2004中每个存储单位获得特定逻辑状态(例如,逻辑“1”),该逻辑状态是主存储单元1512中对应组的存储单位具有第一特定状态(例如,“无效”、“陈旧的”、“值得屏蔽”等)的指示。为此,控制逻辑电路2070向行解码器电路2046识别出辅存储单元2004的第一行和第二行,由此导致选择第一行的A字线和第二行的B字线。随后控制逻辑电路2070控制位线控制电路2048,以将连接到所选A字线和所选B字线的辅存储单元存储单位设置为特定逻辑状态(在该情况中,为逻辑“1”)。具体地,位线控制电路2048控制A对位线以写第一行内的存储单位并且还控制B对位线以写第二行内的存储单位。一旦辅存储单元2004中所有存储单位已经获得特定逻辑状态(在该情况中,为逻辑“1”)来指示主存储单元1512中存储单位具有第一特定状态(例如,“无效”、“陈旧的”、“值得屏蔽”等),则称完成预设操作。
在这个阶段,可进行将输入数据写到主存储单元1512。为此,控制逻辑电路2070处理写命令,该写命令可识别主存储单元1512中的起始地址且可包含要自该起始地址开始写入的数据。由位于主存储单元1512中特定行和特定列的特定存储单位表示该起始地址,因此该起始地址与特定字线和特定位线对相关联。控制逻辑电路2070向行解码器电路1526识别出特定行。随后,控制逻辑电路2070控制位线控制电路1528,使得特定位线对将特定主存储单元存储单位设置为对应于写入该起始地址的输入数据的数值的逻辑状态。执行电路1524和字线1522的另外控制,用于随后被写入的其它主存储单元存储单位。
为了记录这些主存储单元存储单位的状态变化,控制逻辑电路2070确保对应于被写入的主存储单元存储单位的辅存储单元存储单位的内容被转换为指示数据具有第二特定状态(而非先前所需的第一特定状态)的逻辑状态(例如,逻辑“0”)。为此,控制逻辑电路2070确定辅存储单元存储单位的特定行和特定列,其中该辅存储单元存储单位对应的一组主存储单元存储单位包括前述起始地址处的特定存储单位。控制逻辑电路2070随后行解码器电路2046识别出该特定行,导致选择该行的A字线(或B字线)。随后,控制逻辑电路2070控制位线控制电路2048,使得对应于该特定列的A对(或B对)位线将辅存储单元存储单位设置为逻辑“0”,其中该辅存储单元存储单位对应的一组主存储单元存储单位包括前述起始地址处的特定存储单位。由此记录主存储单元存储单位的对应组的状态变化,并且对其它辅存储单元存储单位重复该过程,其它辅存储单元存储单位在主存储单元中的对应组存储单位也被写入。
应该理解,控制逻辑电路2070可用任意期望的方式组合辅存储单元2004中存储单位和主存储单元1512中存储单位1520。例如,可执行屏蔽操作以单独地逻辑组合(例如AND操作、OR操作、XOR操作等)辅存储单元2004中每个存储单位的逻辑值和主存储单元1512中相关存储单位组中每个存储单位1520的逻辑值,从而生成新的一组逻辑值。以这样的方式,辅存储单元2004中的存储单位可被用作对主存储单元1512中存储单位1520的组的屏蔽。当向非易失性存储器设备中的虚拟页面缓冲器传输信息时这样的屏蔽操作是有用的,以阻止对非易失性存储器设备中存储单元的不希望地写入。
还应该理解,在一些实施例中,可以基于使用在计算设备上运行的逻辑综合工具获得的低级硬件描述来制造每个实施例中主存储单元和/或辅存储单元的全部或者部分。逻辑综合工具被配置为读包括主存储单元和/或辅存储单元的功能描述的源代码(例如,以HDL、VHDL或者Verilog语言)并且输出适用于执行相应功能的电路物理实现的定义。
上述示例中,简化起见,装置、元件和电路如图所示彼此连接。在本发明的实际应用中,元件、电路等彼此可以直接地连接。同样,如果对于设备或者装置的操作有必要,则元件、电路等彼此可以通过其它元件、电路等间接地连接。这样,在实际配置中,设备、元件和电路彼此直接或者间接地耦合或者连接。
能够对所描述的实施例进行一定的适应性改变和修改。因此,上面所讨论的实施例应被认为是说明性的而非限制性的。