用于每存储体的多行高速缓存的方法和装置的制作方法

文档序号:6756118阅读:104来源:国知局
专利名称:用于每存储体的多行高速缓存的方法和装置的制作方法
背景技术
与包括最著名的静态随机存取存储器(SRAM)装置的其它存储器技术相比,动态随机存取存储器(DRAM)装置提供了高存储密度和低功耗的好处。但是,在规则间隔以及在紧邻从存储器单元读取数据或将数据写到存储器单元的每次访问之前和之后的时间周期中,这些好处以在访问构成DRAM装置的存储器单元时招致各种延迟为代价。
如本领域熟练技术人员公知的,这些无数的延迟源自数据存储的动态性质,其中DRAM装置正得名于此。每个存储器单元由晶体管构成,它们被配置成非常类似于存储将一数据位表示为一电荷的二进制0或1的电容器进行工作。与SRAM装置的存储器单元相比,晶体管的该电容器状配置需要较少的晶体管和较低的功率,使得DRAM装置的高密度和低功耗成为可能。但是,晶体管的该相同电容器状配置随时间泄漏电荷,允许电荷随时间衰减,并导致需要实施刷新操作以规则的时间间隔恢复电荷。当从存储器单元中读取表示二进制0或1的电荷时,相同的电容器状配置还完全损失其电荷(即,字面上的放电),因此需要实施后续操作以恢复刚被读取的表示二进制0或1的电荷。此外,由于在读取二进制0或1值时从存储器单元接收的放电电荷的微小幅度和瞬时寿命,需要读出放大器来放大和锁存从存储器单元接收的放电电荷。该同样的微小幅度还需要将放电电荷从存储器单元传送到相应读出放大器的导体被预充电到不会掩蔽或压制放电电荷的电压电平,从而阻止该读出放大器精确地接收并锁存从存储器单元读出的二进制0和1值。
用于维持每个存储器单元中存储的电荷的刷新操作,用于恢复读取操作的放电中损失的电荷的操作,用于预充电传送放电电荷的导体的操作,以及其它维护操作造成了由于使用DRAM技术而遭受的各种延迟。这些延迟限制了将数据写到DRAM器件或从其读取数据的速率,且尽管诸如处理器的组件已大幅变快,但在提升对这些电容器状存储器单元的读写数据速率方面进展相对较小。
已提出了各种技术来“隐藏”处理器和DRAM存储器装置之间的速度发展不均衡,包括将SRAM器件用作高速缓存以及交替对多个DRAM装置的分组中的不同DRAM装置进行的访问。但是,添加SRAM装置用作高速缓存常常增加更多组件(从而提升成本)以及可观地增加所使用的功率量。此外,交替对多个DRAM装置的访问可观地增加了复杂性且常需要到由DRAM装置构成的存储器系统的更宽的存储器总线。期望不经受这些缺陷的抵消处理器和DRAM装置之间的速度不均衡影响的一些其它方法。


通过阅读以下的详细描述,本发明的目的、特点和优点是本领域熟练技术人员显而易见的,其中图1是使用存储器单元块的实施例的框图。
图2是使用被排列成多个存储器单元块的存储器单元存储体的实施例的框图。
图3是使用存储器系统的实施例的框图。
图4是使用计算机系统的实施例的框图。
图5是一实施例的流程图。
图6是另一实施例的流程图。
具体实施例方式
在以下描述中,出于说明目的,阐述了大量细节以提供对本发明的透彻理解。但是,本领域熟练技术人员显见的是,这些特定细节是实施本发明所不需要的。
尽管以下讨论集中于DRAM装置,其中存储器单元被编成一个或多个行和列的二维阵列,但本领域的熟练技术人员可以理解,以下所声明的本发明可在支持具有按许多方法中的任一种编的存储器单元的任何类型的存储器装置的情况下实施,其中包括交错存储体、大于二维的阵列(即两个以上部分的地址)、内容可寻址等。此外,尽管至少一部分以下讨论集中于计算机系统内的存储器装置,但本领域的熟练技术人员可以理解,以下声明的本发明可联系具有存储器装置的其它电子装置实施。
图1是使用存储器块的一个实施例的简化框图。存储器块100至少部分由上子阵列110、上绝缘体行116、下子阵列120、下绝缘体行126和读出放大器行130构成。存储器块100是构成存储器装置内的存储器阵列的许多存储器块之一。接着,在各种实施例中,这种存储器装置可具有一个以上的这种阵列,使得这些阵列中的每一个变成存储器装置内的许多存储体之一。
上子阵列110和下子阵列120两者分别由存储器单元(诸如存储器单元113和123)的行112和122构成,且这些存储器单元中的每一个都存储表示数据的单个二进制0或1位值的电荷。上子阵列110的存储器单元113和下子阵列120的存储器单元123构成跨过上子阵列110的行112和下子阵列120的行122的存储器单元的许多列中的单独一个。上子阵列110中每列存储器单元内的每个存储器单元耦合到上子阵列110中该列的共用位线,诸如位线114,且相应地,下子阵列120中每列存储器单元内的每个存储器单元耦合到下子阵列120中该列的共用位线,诸如位线124。上子阵列110内的每个位线(诸如位线114)以及下子阵列120内的每个相应位线(诸如位线124)都选择性地耦合到读出放大器行130内的相应读出放大器(诸如读出放大器133)同时也分别通过绝缘体行116和126内的相应绝缘体(诸如绝缘体118和128)保持相互电绝缘。此外,读出放大器行130的每个读出放大器(诸如读出放大器133)经由相应的绝缘体(诸如绝缘体138)选择性地耦合到用于将相应的读出放大器和其它存储器块中的它们的配对物耦合在一起的全局I/O线(诸如全局I/O线164),这些其它存储器块也构成存储器块100作为其一部分的存储器阵列。
行112和122中的每一个经由字线144中的分开一个单独地耦合到行地址解码器140。通过字线144,行地址解码器可从要访问的行112和122中选出行中的单独一个。上绝缘体行116、下绝缘体行126和读出放大器行130内的绝缘体(诸如绝缘体118、128和138)分别经由绝缘体控制线154中的分开一些耦合到绝缘体控制逻辑150。当通过要访问的行地址解码器140选择上子阵列110或下子阵列120的一个或另一个中的存储器单元行时,绝缘体控制逻辑150调整上绝缘体行116和下绝缘体行126内的绝缘体的使用以选择性地将行130的读出放大器耦合到上子阵列110或下子阵列120内的存储器单元列的一个或另一个位线。其它时候,绝缘体控制逻辑调整上绝缘体行116和下绝缘体行126内的绝缘体的使用以使行130的读出放大器与上子阵列110和下子阵列120的位线之一或两者绝缘,从而确保当这些位线被预充电以准备访问另一存储器单元行时不改变来自一个被访问行的读出放大器内锁存的数据。绝缘体控制逻辑150还调整将读出放大器行130的读出放大器选择性地耦合到全局I/O线的绝缘体的使用。
在一些实施例中,行地址解码器140和绝缘体控制逻辑150两者进一步耦合到状态逻辑160。状态控制逻辑160存储关于行112和122中的哪个行是将其数据复制入读出放大器行130的读出放大器的行的信息,从而允许行地址解码器140和绝缘体控制逻辑150的使用之间的调整,以便在来自特定行的数据已被复制入读出放大器行130的读出放大器时利用机会加速对该数据的访问。绝缘体控制逻辑150控制各种绝缘体的性能、行地址解码器140选择和控制对任何给定行的访问的性能以及状态控制逻辑160跟踪什么数据已由读出放大器行130的读出放大器锁存的性能之间的调整可用于操作,并按一定方式选择性地绝缘/耦合读出放大器行130的读出放大器,以允许读出放大器行130的读出放大器用作从上子阵列110或下子阵列120内的存储器单元行之一读取的数据的一种形式的行宽高速缓存。行地址解码器140、绝缘体控制逻辑150和状态逻辑160的这各种性能也可用于尝试隐藏(从而避免招致)时间延迟,这些时间延迟是由于诸如预充电以关闭将其数据复制入读出放大器行130的读出放大器同时允许发生读出操作和/或涉及该数据的其它操作的操作所引起的。在按此方式使用构成具有读出放大器行的存储器装置内的阵列的每个存储器块(诸如存储器块100)的情况下,具有大量存储器块的大存储器装置可具备相当大小的一种行宽高速缓存系统。
在存储器读取操作中,其中请求来自上子阵列110或下子阵列120内的行的数据且其中该行的内容当前未锁存于读出放大器行130的读出放大器内(可能如状态逻辑160所指示的),行地址解码器140激活字线144中的合适一个以选择上子阵列110或下子阵列120内的要读取的行。从而,使得选定行的存储器单元将这些存储器单元内保持的电荷放电到将上子阵列110耦合到上绝缘体行116的位线(如果选定行在上子阵列110内),或者到将下子阵列120耦合到下绝缘体行126的位线(如果选定行在下子阵列120内)。此外,绝缘体控制逻辑150操作绝缘体控制线154中的合适一个以使得上绝缘体行116或下绝缘体行126内的绝缘体(再次,取决于所选行是在上子阵列110内还是在下子阵列120内)将读出放大器行130的读出放大器耦合到来自选定行的存储器单元的电荷被放电于其上的位线。在此期间,操作上绝缘体行116或下绝缘体行126中的另一个中的绝缘体以使读出放大器行130的读出放大器与上子阵列110或下子阵列120中的任何一个的位线绝缘,其中该上子阵列110或下子阵列120中的任何一个是其中选定行不在其中的子阵列,以避免使读出放大器不必要地经受与不用于来自选定行的存储器单元的电荷传递的位线耦合的额外电容性负载。读出放大器行130的读出放大器接收并锁存来自选定行的存储器单元的放电电荷,从而锁存被存入选定行的存储器单元的数据。绝缘体控制逻辑150进一步操作用于读出放大器行130内的绝缘体的绝缘体控制线154的合适一个,以将读出放大器行130的读出放大器耦合到相应的全局I/O线,从而允许存储器装置输出读出放大器行130的读出放大器中锁存的数据。
在存储器读取操作中,其中请求来自上子阵列110或下子阵列120内的行的数据且其中该行的内容当前已锁存入读出放大器行130的读出放大器内(可能如状态逻辑160所指示的),等待数据从请求行通过相应位线传递到读出放大器行130的读出放大器的延迟可以被完全避免。绝缘体控制逻辑150操作绝缘体控制线154中的合适一个以使读出放大器行130内的绝缘体将读出放大器行130的读出放大器耦合到相应的全局I/O线,从而允许存储器装置输出读出放大器行130的读出放大器中锁存的数据。
此外,在一存储器读取操作后,其中请求数据,该数据来自具有未锁存入读出放大器行130的读出放大器的内容的行以使该数据必须在可由存储器装置输出该数据前从该行传递到那些读出放大器,刚读取的行可用预充电操作关闭。在预充电操作期间,可通过上绝缘体行116或下绝缘体行126的绝缘体(取决于通过预充电操作关闭的行是在上子阵列110内还是在下子阵列120内)使用于将该行的存储器单元的内容传递到读出放大器的位线与那些读出放大器绝缘,从而不丢失这些读出放大器所锁存的数据。利用该性能在对来自读出放大器的数据的访问继续发生时且在选择存储器块100内的另一行用于访问(换句话说,实施优先预充电)之前实施与刚复制其数据的行耦合的位线的预充电(从而关闭该行)可能被认为是理想的,从而当稍后选择存储器块100内的新行时,将不需要等待在可以访问新行前要实施的预充电操作。这种在可以访问新行前必须造成预充电操作的延迟以关闭一行的状况通常称作“页不命中”,表示在将进行对新页的访问时使得“错误”行仍旧打开。换句话说,上述绝缘体的使用允许至少一些预充电操作和访问数据的操作并行发生,从而提供了避免造成一些页不命中时间代价的方法。通过使用这种优先预充电,源自激活新行的较小延迟常常会变成必须造成的最长剩余延迟(通常称作“页空”的情况,表示没有行仍是打开的)。
在对上子阵列110内的给定行的一示例存储器写操作中,其中该给定行是存储器块100作为其一部分的存储体的当前打开行且给定行的内容已被复制到读出放大器行130内的读出放大器(可能由状态逻辑160所指示的两个条件),写操作可实施而不会晚于行激活操作以打开给定行。绝缘体控制逻辑150可操作读出放大器行130内的绝缘体以将读出放大器行130的读出放大器耦合到全局I/O线164的相应一些以锁存从写操作接收的数据。绝缘体控制逻辑150也可操作上绝缘体行116内的绝缘体,以将上子阵列110内的位线(诸如位线114)耦合到读出放大器行130的读出放大器,且行地址解码器140可操作对应于给定行的字线144中的一条字线,以使得从写操作接收的数据也通过这些位线被写到给定行的存储器单元。在将从写操作接收的数据也复制到给定行的存储器单元以及由读出放大器行130内的读出放大器锁存的情况下,结果,那些存储器单元和那些读出放大器两者的内容都被保持相互一致。相反,在从写操作接收的数据也未被复制到给定行的存储器单元的情况下,那些存储器单元的内容和读出放大器行130内的读出放大器的内容不再是一致的,因为那些读出放大器的内容现在与那些存储器单元的内容相比是更新的。将来自写操作的数据仅存入那些读出放大器所提供的优点在于与还要将数据存入那些存储器单元内相比,数据需要较少的时间被单独存储于那些读出放大器内,即“迷你写”操作的形式的总计时短于包括将数据存入那些存储器单元的写操作所需的。但是,将数据仅存入那些读出放大器的缺点在于那些读出放大器执行的高速缓存状功能意味着那些读出放大器可仅提供临时存储以及那些读出放大器的更新的内容将最终必须从那些读出放大器复制入那些存储器单元以防止丢失那些读出放大器的更新的内容。
换句话说,在从读操作接收的数据仅存入读出放大器行130内的读出放大器而不在写操作被引导到的行的存储器单元内的情况下,由于与写操作被引导到的行的存储器单元的内容相比更新,该数据可描述为已在读出放大器中被“标出”并且使得读出放大器的内容可描述为“脏(dirty)”,且最终必须执行“反写”操作以将读出放大器内被标出的脏内容复制入写操作被引导到的行的存储器单元。相反,在这种数据从该写操作接收并被存入读出放大器和写操作被引导到的行的存储器单元内的情况下,这种行为导致读出放大器和存储器单元的内容的一致性,那些存储器单元的一种“直写”更新可说成已在写操作的实施期间发生。
在对上子阵列110内的给定行的另一示例存储器写操作中,其中给定行不是存储器块100作为其一部分的存储体的当前打开行但给定行的内容已被复制入读出放大器行130内的读出放大器(可能由状态逻辑160指示的两个条件),迷你行激活命令可先于写操作。该迷你行激活命令可用于改变行地址解码器140的设定,使得给定行现在是打开的行,而不必准备要访问的给定行的存储器单元,从而避免招致额外的延迟来允许发生这种存储器单元准备。绝缘体控制逻辑150可操作读出放大器行130内的绝缘体,以将读出放大器行130的读出放大器耦合到全局I/O线164的相应一些,从而锁存从写操作接收的数据。绝缘体控制逻辑150也可操作上绝缘体行116内的绝缘体,以将上子阵列110内的位线(诸如位线114)耦合到读出放大器行130的读出放大器,且行地址解码器140可操作与给定行相对应的字线144中的一个字线,以使得从写操作接收的数据也通过这些位线被写到给定行的存储器单元,从而维持那些读出放大器和那些存储器单元的内容之间的一致性。或者,如果实施迷你写操作,其中从写操作接收的数据仅被存入那些读出放大器而不存入那些存储器单元,则那些读出放大器的内容变脏且对那些存储器单元的反写操作最终是必要的以保存这些脏内容。
在对上子阵列110内的给定行的又一示例存储器写操作中,其中给定行不是存储器块100作为其一部分的存储体的当前打开行且给定行的内容未复制到读出放大器行130内的读出放大器(可能由状态逻辑160指示的两个条件),行激活命令可先于写操作。该行激活命令被用于改变行地址解码器140的设定以使给定行现在是打开的行,并用于准备要访问的给定行的存储器单元。绝缘体控制逻辑150可操作读出放大器行130内的绝缘体,以将读出放大器行130的读出放大器耦合到全局I/O线164的相应一些,从而锁存从写操作接收的数据。绝缘体控制逻辑150还可以操作上绝缘体行116内的绝缘体,以将上子阵列110内的位线耦合到读出放大器行130的读出放大器,且行地址解码器140可操作与给定行相对应的字线144中的一个字线,以使得从写操作接收的数据也按直写方式通过这些位线被写到给定行的存储器单元。或者,如果实施迷你写操作,则那些读出放大器的内容变脏且对那些存储器单元的反写操作最终是必要的以保存这些脏内容。
对于需要时要实施的反写操作,关于读出放大器行130的读出放大器的内容是否脏的当前信息必须保持,且在一些实施例中,该信息可保存于状态逻辑160内,可能与关于来自上子阵列110和下子阵列120的哪个行具有已被复制到读出放大器行130的读出放大器的信息并排。在一些实施例中,发生反写操作时的计时可由存储器块100作为其一部分的存储器装置内的逻辑控制,有可能基于一算法,它寻找以确定何时在足以实施反写操作的时间周期内不访问存储器块100。或者,反写操作的发生可由存储器装置外的逻辑控制,诸如存储器控制器。此外,可能偶尔需要反写操作,以从读出放大器行130的读出放大器中去除一个行的脏内容,以使得读出放大器可用于锁存另一个行的内容。
在读出放大器行130中提供绝缘体以选择性地将读出放大器行130的读出放大器耦合到全局I/O线允许使读出放大器行130的读出放大器与它们相应的全局I/O线绝缘同时存储器的另一块内的读出放大器耦合到该全局I/O线,且或者将那些读出放大器内锁存的数据发送到全局I/O线上或者将从全局I/O线接收到的数据锁存入那些读出放大器,所有这些都不会引起读出放大器行130的读出放大器内锁存的数据的丢失。选择性地耦合存储器块100和其它存储器块中的读出放大器的绝缘体的这种使用允许每个存储器块将最近读取的行内容的拷贝锁存入读出放大器行中的每个存储器块,从而提供对正由存储器装置读取和输出的数据的更快速的访问。
尽管图1中位线的讨论和描述会建议每列存储器单元仅使用单个位线,但本领域的熟练技术人员易于理解,位线的相同讨论和描述也可应用于其中将多对位线用于存储器单元列以支持差分信号发送的实施例,以使数据的位及其补码可在存储器单元和其它组件之间通过位线对传递。此外,为清楚起见,应注意存储器单元113和123、位线114和124、绝缘体118和128、读出放大器133和绝缘体138在图1中具体描绘以提供构成存储器块100内的上子阵列110和下子阵列120内的单个存储列的组件集合的一个实施例的示例。单列组件的该描述不应解释为建议存储器块100只有一个列,因为任何适当的实施例可以有多个列,因此组件集合示例将复制多次以提供许多列。
尽管存储器块100的讨论和描述集中于其中具有上和下子阵列的配置,但本领域的熟练技术人员将易于理解,存储器块的各种其它可能实施例可仅采用一个子阵列或者两个以上的子阵列。此外,为清楚起见,应说明,术语“上”和“下”的使用仅在承认本领域熟练技术人员之中常规使用术语“上”和“下”以在讨论有两个子阵列的存储器块的实现中区分两个子阵列的情况下进行。术语“上”和“下”不应认为标注图1所示的两个子阵列的任何形式的相对物理位置或定向。换句话说,术语“上”和“下”的使用意在实现与在两个子阵列之间进行区分时使用诸如“第一”和“第二”的术语的相同效果。
在各种可能的实施例中,上子阵列110可由数量256的行112构成,且下子阵列120由数量256的行122构成。在这种实施例中,诸如存储器块100的数量32的存储器块将构成存储器装置中的每个存储体,且存储器装置可由8个这种存储体构成。但是,如本领域熟练技术人员易于理解的,可以使用每个子阵列的行、每个存储器块的子阵列、每个存储体的存储器块以及每个存储器装置的存储体的各种不同数量,而不背离以下声明的本发明的精神和范围。
在各种可能的实施例中,诸如绝缘体138的读出放大器行130内的绝缘体可作为逻辑或门装置实现。但是,如本领域熟练技术人员易于理解的,耦合到读出放大器行130内的读出放大器的各种绝缘体可以用任意数量的可能的逻辑门电路或其它电子电路实现,而不背离以下声明的本发明的精神和范围。
图2是使用存储体的一个实施例的简化框图。存储体200是至少部分由具有相应的读出放大器230a-d和绝缘体216a-d的子阵列210a-d、绝缘体238a-d、全局I/O线264和列数据多路复用器268构成的存储体。存储体200是构成存储器装置的多个存储体之一。存储器装置设计领域的熟练技术人员将易于理解,图2描述了相对简单的存储体的一种形式,且其中减少、增加或另外改变额外的组件排列和配置而不背离以下声明的本发明的精神和范围的可选实施例也是可能的。例如,尽管为讨论简单起见,将存储体200描述为只有四个存储器子阵列且这些子阵列中的每一个都不与另一子阵列共享读出放大器行(如图1所示),但本领域的熟练技术人员可以理解,存储体200的其它可能实施例也可由不同数量的存储体构成和/或绝缘体行可由两个或更多个子阵列共享。
子阵列210a-d各自由被编为行和列的存储器单元构成。子阵列210a-d中的每列存储器单元都耦合到该列的位线,且这些位线中的每一个都可通过绝缘体216a-d中的相应一些选择性地耦合到读出放大器230a-d中的相应一些。此外,每个读出放大器230a-d经由绝缘体238a-d中的相应一些选择性地耦合到全局I/O线264中的相应一些。接着,读出放大器230a-d通过相应绝缘体238a-d和全局I/O线264的组合耦合到列数据多路复用器268。列数据多路复用器268用于选择全局I/O线264中的哪个或哪些选择性地耦合到存储体200作为其一部分的存储器装置之外的其它逻辑,以允许数据输入到选定的一些全局I/O线264或由其输出。
每个子阵列210a-d内的存储器单元的行经由字线个别地耦合到行地址解码器240,操作这些字线以选择要访问的每个子阵列210a-d内的单个行。绝缘体216a-d个别地耦合到绝缘体控制逻辑250,它在各种时间操作绝缘体216a-d以选择性地将读出放大器230a-d中的相应一些耦合到子阵列210a-d的相应一些的位线。在其它时候,绝缘体控制逻辑操作绝缘体216a-d中的一个或多个,以使在预充电那些位线时读出放大器230a-d中的相应一些与用于一个或多个子阵列210a-d内的存储器单元的每列的相应位线绝缘,以确保读出放大器216a-d内锁存的数据不由预充电操作改变。绝缘体控制逻辑250也操作绝缘体238a-d以选择性地将读出放大器230a-d耦合到全局I/O线264中的相应一些。
在一些实施例中,行地址解码器240和绝缘体控制逻辑250两者进一步耦合到状态逻辑260。状态控制逻辑260存储关于每个子阵列210a-d中的哪个行是将其数据复制到读出放大器230a-d中的相应一些的行的信息,从而允许行地址解码器240和绝缘体控制逻辑250的使用之间的协调,以使用来自每个子阵列210a-d中的特定行的数据已复制入读出放大器230a-d的时机加速对该数据的访问。绝缘体控制逻辑250控制各种绝缘体的性能、行地址解码器240选择和控制对任何给定行的访问的性能以及状态控制逻辑260跟踪什么数据已由每个读出放大器230a-d锁存的性能之间的协调可用于操作,以及按一定方式选择性地绝缘/耦合每个读出放大器230a-d,以允许每个读出放大器230a-d用作从每个子阵列210a-d内存储器单元行之一读取的数据的一种行宽高速缓存。行地址解码器240、绝缘体控制逻辑250和状态逻辑260的这各种性能也可用于尝试隐藏(从而避免招致)由于诸如预充电以关闭已将其数据复制到相应一个读出放大器230a-d的子阵列210a-d中的任一个中的行同时允许发生读操作和/或涉及该数据的其它操作的操作所引起的时间延迟。采用许多组读出放大器(在存储体200的情况下每一个都对应于单个子阵列),具有多个存储体200的较大存储装置可具有相当大小的行宽高速缓存系统的形式。
例如,在存储器读取操作中,其中请求来自子阵列210a内的行的数据且其中该行的内容当前未锁存于读出放大器230a内(可能如状态逻辑260所指示的),行地址解码器240选择子阵列210a内的期望行。在此期间,绝缘体控制逻辑250使得绝缘体216a将读出放大器230a耦合到与所选行的存储器单元耦合的位线。选定行的存储器单元将那些存储器单元内存储的电荷放电到那些位线上。读出放大器230a接收并锁存来自选定行的存储器单元的放电电荷,从而锁存选定行的存储器单元中存储的数据。绝缘体控制逻辑250进一步使得绝缘体238a将读出放大器230a耦合到全局I/O线264,从而允许读出放大器230a锁存的数据在全局I/O线264上发送到列数据多路复用器268,此处被发送到多路复用器268的数据的子集由存储器装置选择并输出。
例如,在从子阵列210a内的行的存储器读取操作中,其中行的内容当前已被锁存入读出放大器230a内(可能如状态逻辑260所指示的),可以完全避免等待数据从请求行传递到读出放大器230a的延迟。绝缘体控制逻辑250操作绝缘体238a,以将读出放大器230a耦合到全局I/O线264,从而允许读出放大器230a内锁存的数据在全局I/O线264上发送到列数据多路复用器268,此处被发送到多路复用器268的数据的子集由存储器装置选择并输出。
此外,在存储器读取操作后,例如其中请求来自具有未由读出放大器230a锁存的内容的子阵列210a内的行的数据,以使该数据必须在数据可由存储体200作为其一部分的存储器装置输出前从该行传递到读出放大器230a,刚被读取的行可用预充电操作关闭。在预充电操作期间,用于将该行的存储器单元的内容传递到读出放大器230a的位线可通过绝缘体216a与那些读出放大器绝缘,以不丢失刚由读出放大器216a锁存的数据。利用该能力在对来自读出放大器230a的数据的访问继续发生时且在选择子阵列210a内的另一行用于访问之前实施与刚复制其数据的行耦合的位线的优先预充电可能被认为是理想的,以避免造成与页不命中相关联的延迟。因此,预充电操作和访问数据的操作能并行发生,且页不命中的可能实例被转换为页空。
在对子阵列210a内的给定行的示例存储器写操作中,其中给定行是存储体200的当前打开行且给定行的内容已被复制到读出放大器230a(可能由状态逻辑260指示的两个条件),可以实施写操作而不晚于行激活操作以打开给定行。绝缘体控制逻辑250可操作绝缘体238a,将读出放大器230a耦合到全局I/O线264中的相应一些以锁存从写操作中接收的数据。绝缘体控制逻辑250也可操作绝缘体216a以将子阵列210a内的位线耦合到读出放大器230a,且行地址解码器240可操作与给定行相对应的字线,以使得从写操作接收的数据也通过位线被写到给定行的存储器单元以保持一致性。相反,在从写操作接收的数据也未复制到给定行的存储器单元的情况下,那些存储器单元的内容和读出放大器230a的内容不再是一致的,且反写操作将最终必须被实施以将读出放大器230a的内容复制到那些存储器单元,但可以减少写操作的总计时,提供了机会以实施具有更短总计时的迷你写操作。
在对子阵列210a内的给定行的另一示例存储器写操作中,其中给定行不是存储体200的当前打开行,但给定行的内容已被复制入读出放大器230a(可能由状态逻辑260所指示的两个条件),迷你行激活命令可先于写操作。该迷你行激活命令可用于改变行地址解码器240的设定。使得给定行变成打开的行,而不必准备要访问的给定行的存储器单元,从而避免招致额外的延迟来允许发生这种存储器单元准备。绝缘体逻辑250可操作绝缘体238a,以将读出放大器230a耦合到全局I/O线264中的相应一些,从而锁存从写操作接收的数据。绝缘体控制逻辑250也可操作绝缘体216a,以将子阵列210a内的位线耦合到读出放大器230a,且行地址解码器240可操作与给定行相对应的字线,以使得从写操作接收的数据也通过这些位线被写到给定行的存储器单元,从而维持读出放大器230a和那些存储器单元的内容之间的一致性。或者,如果实施迷你写操作,其中从写操作接收的数据仅被存入读出放大器230a而不存入那些存储器单元,则读出放大器230a的内容变脏且对那些存储器单元的反写操作最终是必要的以保存读出放大器230a的脏内容。
在对子阵列210a内的给定行的又一示例存储器写操作中,其中给定行不是存储体200的当前打开行且给定行的内容未复制到读出放大器230a(可能由状态逻辑260指示的两个条件),行激活命令可先于写操作。该行激活命令可用于改变行地址解码器240的设定以使给定行变成存储体200内的打开的行,并用于准备要访问的给定行的存储器单元。绝缘体逻辑250可操作绝缘体238a,以将读出放大器230a耦合到全局I/O线264中的相应一些,从而锁存从写操作接收的数据。绝缘体控制逻辑250还可以操作绝缘体216a,以将子阵列210a内的位线耦合到读出放大器230a,且行地址解码器240可操作与给定行相对应的字线,以使得从写操作接收的数据也按直写方式通过这些位线被写到给定行的存储器单元。或者,如果实施迷你写操作以使来自写操作的数据也不被存入那些存储器单元,则那些读出放大器的内容变脏且对那些存储器单元的反写操作最终是必要的以保存这些脏内容。
对于需要时要实施的反写操作,关于读出放大器230a-d的内容是否脏的当前信息必须保持,且在一些实施例中,该信息可保存于状态逻辑260内,可能与关于来自每个子阵列210a-d的哪个行具有已被复制到读出放大器230a-d的相应一些的信息并排。在一些实施例中,发生反写操作时的计时可由存储体200作为其一部分的存储器装置内的逻辑控制,有可能基于一算法,它寻找以确定何时在足以实施反写操作的时间周期内不访问全部存储体200或具有需要完成反写操作的行的无论哪个子阵列210a-d。或者,反写操作的发生可由存储器装置外的逻辑控制,诸如存储器控制器。此外,可能偶尔需要反写操作,以从读出放大器230a-d之一中去除一个行的脏内容,以使得那些读出放大器可用于锁存另一个行的内容。
图3是使用存储器系统的一个实施例的简化框图。存储器系统300至少部分由通过存储器总线380耦合在一起的存储器控制器370和存储器装置390构成。存储器系统设计领域内的熟练技术人员将易于理解,图3描述了相对简单的存储器系统的一种形式,且其中减少、增加或另外改变额外的组件排列和配置而不背离以下声明的本发明的精神和范围的可选实施例也是可能的。例如,尽管为以下讨论简单,将存储器系统300描述为只有一个存储器总线380和一个存储器装置390,但本领域的熟练技术人员可以理解,存储器系统300的其它可能实施例也可由多个存储器总线和/或装置构成。
作为向与存储器控制器370耦合的外部装置(未示出)提供对存储器装置390的访问的一部分,存储器控制器370控制存储器装置390所实施的功能。特别地,与存储器控制器370耦合的外部装置发送命令到存储器控制器370以将数据存入存储器装置390内,并从存储器装置390内检索所存储的数据。存储器控制器370接收这些命令并按具有与存储器总线380和/或构成存储器装置390和存储器总线380之间的接口的控制逻辑391和数据缓冲器397的组合兼容的计时和协议的格式将它们中继到存储器装置390。实际上,响应于来自外部装置的读取和写入命令,存储器控制器370协调对存储器装置390内的存储器单元进行的访问。在支持这些功能的情况下,在各种实施例中,存储器控制器370也协调必须执行的用于确保存储器装置390内存储的数据被保存的各种维护操作,包括常规刷新操作的启动和/或访问之间预充电操作的发生。
存储器总线380由将存储器控制器370和存储器装置390耦合在一起的各种控制、地址和数据信号线构成。构成存储器总线380的各种可能实施例的各种信号线的精确数量和特征可配置成可与许多可能的存储器接口中的任一种相互操作,包括与已知类型的存储器装置兼容的那些,其中有DRAM装置,诸如FPM(快速页模式)存储器装置,EDO(扩展数据输出)、双端口VRAM(视频RAM)、WRAM(窗口RAM)、SDR(单倍数据率)DRAM、DDR(双倍数据率)DRAM、RAMBUSTMDRAM等。在一些实施例中,在各种信号线上的活动打算与时钟信号协调的情况下,一个或多个信号线,可能是控制信号线,用于在存储器控制器370和存储器装置390之间传送时钟信号。在一些实施例中,一个或多个控制信号和地址信号可被多路复用到共用信号线上,以使控制信号和地址信号在共用导体上在不同时间被发送,以便在存储器控制器370和存储器装置390之间传送信号。此外,在一些实施例中,一个或多个地址信号和数据信号可被多路复用到共用信号线上。在其它实施例中,地址、命令和/或数据可在分组中被发送。
在各种实施例中,存储器装置390是DRAM存储器装置,它具有由被配置为与存储器总线380相互操作的控制逻辑391和数据缓冲器397构成的接口。在一些实施例中,存储器装置390是单个集成电路。在其它实施例中,存储器装置390由可拆卸存储器模块的多个集成电路构成,诸如SIMM(单列直插式存储器模块)、SIPP(单列直插式组件)、DIMM(双列直插式存储器模块)等。
存储器装置390的存储器单元被组成多个存储体,诸如存储体399a-399d,其中每个存储体都由多个子阵列构成,如先前关于图1和2详细描述的,其中每个子阵列内的存储器单元被编成行和列。在一些实施例中,控制逻辑391从存储器控制器370通过存储器总线380接收至少一些命令和地址,并通过存储体控制器393a-d、列地址解码器394和/或存储体选择逻辑392实施这些命令,以访问一个或多个存储体399a-399d的一个或多个特殊部分。一般,为获得对存储器装置390内的存储器单元的访问,存储器单元的地址由三部分构成,即给定存储器单元的存储体、行和列,它们由存储器控制器370通过存储器总线380发送到存储器装置390的控制逻辑391。存储体控制器393a-d中的至少一个由控制逻辑391提供行地址并解码该行地址以选择存储体399a-d中相应一个的合适子阵列和行。存储体控制器393a-d也控制每个存储体399a-d内的合适子阵列内的绝缘体和/或读出放大器,以实施对给定子阵列的合适行实施的无论什么形式的访问操作。按参考图1和2所讨论的方式相同的方式,作为实施访问操作的一部分,存储器单元的行和读出放大器的行之间的绝缘体用于选择性地将存储器单元耦合到读出放大器以促进存储器单元和读出放大器之间的数据传递,同时还用于在其它时间选择性地使那些相同的存储器单元与那些相同的读出放大器绝缘,以可以预充电将数据从存储器单元传递到绝缘体的位线而不丢失读出放大器所存储的数据。按同样与已参考图1和2讨论的方式相同的方式,那些读出放大器和全局I/O线之间的其它绝缘体最终引向I/O选择多路复用器395,那些读出放大器选择性地耦合到该I/O选择多路复用器395,以最终使能存储器装置390和存储器控制器370之间的数据传输。在其它时候,读出放大器和全局I/O线之间的那些绝缘体用于选择性地使那些读出放大器与那些全局I/O线绝缘,以在与另一子阵列相对应的读出放大器参与那些相同的全局I/O线上的数据传递时避免由来自一个子阵列的读出放大器存储的数据丢失。存储体选择逻辑392由控制逻辑391提供地址的存储体选择部分并指引存储体控制器393a-d中的合适一个以实施所述功能。列地址解码器394由控制逻辑391提供指示要访问的合适列的地址的列地址部分,且连同存储体选择逻辑393,列地址解码器操作I/O选择多路复用器395以选择合适的列。在支持各种数据传输计时的情况下,数据缓冲器397按需要锁存存储器控制器370和存储器装置390的I/O选择多路复用器395之间传递的数据。
在一些实施例中,存储器控制器370和/或控制逻辑391分别维护与存储器装置390的存储体399a-d相对应的存储体状态缓冲器379a-d和/或398a-d,其中存储了关于每个存储体内存储器单元的一个或多个行的状态的各种类型的信息。特别地,状态缓冲器379a-d和/或398a-d中的每一个都存储与存储体399a-d中的相应每一个的每个子阵列中的哪个行已由与该子阵列耦合的读出放大器读取和高速缓存的指示(即,该行的内容被复制到与该子阵列耦合的读出放大器)。虽然根据存储器总线380的各种特征(包括计时、协议、握手规定等)提供存储体状态缓冲器379a-d和398a-d被认为是冗余的,存储器控制器370和控制逻辑391各自保存哪些行由读出放大器高速缓存的本地指示等被认为是理想的。存储器控制器370和/或控制逻辑391可分别依靠存储体状态缓冲器379a-d和/或398a-d的内容来确定需要哪些命令和/或操作来检索给定的数据块,包括来自存储体399a-d之一中的给定行的数据是否能简单地从由读出放大器高速缓存的地方读出或者是否在可以发生给定行的数据访问操作前必须引起附加延迟,诸如允许预充电、行激活、迷你行激活等的时间的延迟。
在其中存储器控制器370确实在诸如存储体状态缓冲器379a-d的某种存储装置中维护关于存储器装置390内的打开行和高速缓存行的状态的数据但控制逻辑391没有相应的存储体状态缓冲器398a-d的实施例中,存储器控制器370可发送读、写、行激活和/或其它命令的不同变更到存储器装置390以更直接地控制在存储器装置390内实施各种操作的方式,作为补偿缺少存储器装置390内维护的状态信息的一种方法。例如,存储器控制器370发送不同版本的读命令以指示存储器装置390从读出放大器中代替直接从给定行的存储器单元中读取给定行的数据,因为存储器装置390缺少确定给定行的数据可用于从读出放大器的更快速访问所需的状态信息。作为另一示例,存储器控制器370发送不同版本的行访问命令以指示存储器装置390以简单地改变行地址解码器的设定,以使与给定行相对应的特定读出放大器中的数据变得可访问用于读和/或写,代替实际激活给定行的实际存储器单元以使得那些存储器单元可访问用于读和/或写。此外,如果控制逻辑391也不维护关于读出放大器的内容脏与否的信息,则存储器控制器370发送不同版本的写命令以指示存储器装置390仅将数据写到存储体399a-d之一内的读出放大器而不写到与那些读出放大器相耦合的行的存储器单元。存储器控制器370也发送明确的反写命令以直接控制何时出现反写操作以将读出放大器的脏内容复制到行的存储器单元。
作为各种实施例中实施读操作以从存储体399a内的行检索数据的一个示例,存储器控制器370可在存储体状态缓冲器379a的内容中检查关于存储体399a的信息,以确定存储体399a中要读取的给定行是否已是存储体399a内的打开行,以及该行的数据是否仍被高速缓存于与该行作为其一部分的存储体399a内的子阵列耦合的读出放大器内。如果给定行的确是存储体399a的打开行且来自给定行的数据确实被高速缓存于那些读出放大器内,则存储器控制器370仅需要通过存储器总线380将读命令发送到存储器装置390以从那些读出放大器中检索数据。在一些实施例中,与其中直接从存储器单元行检索数据的更常规的读命令可能的计时相比,这种读命令可以是总计时较短的“迷你读”命令,以利用从那些读出放大器读取所需的相对较短的时间量。在确定给定行已打开且仍由读出放大器高速缓存时存储器控制器370发送读命令而没有在先预充电或行激活命令的实施例中,控制逻辑391可以检查存储体状态缓冲器398a的内容,以同样确定给定行是否是存储体399a内的打开行且仍由读出放大器高速缓存。如果控制逻辑391确定给定行是打开行且被高速缓存,则控制逻辑391可接受仅接收读命令并从已高速缓存数据的读出放大器直接读取给定行的数据,代替直接从给定行的存储器单元读取数据,且存储器装置390将能把该数据更快速地提供给存储器控制器370,结果可能适应迷你读命令的更短的计时。
但是,如果要从存储体399a读取的给定行不是存储体399a的打开行但来自给定行的数据仍高速缓存于与给定行作为其一部分的子阵列相耦合的读出放大器内,则在一些实施例中,存储器控制器370可进一步检查存储体状态缓冲器379a的内容以确定存储体399a内的另一行是否是对于存储体399a的打开行。在这种实施例中,如果发现另一行是对于存储器399a的打开行,则在发送行激活命令以打开给定行之前存储器控制器370可发送预充电命令以关闭该行。或者,在其它实施例中,给定行的数据已被高速缓存在那些读出放大器内的事实会导致不进行关于存储体399a内的另一行是否打开的检查,因为给定行的数据被高速缓存入那些读出放大器中的事实被视作消除了实施预充电命令以关闭可能打开的另一行的需要。在其它实施例中,存储器控制器370可发送行激活命令以打开给定行,而不发送预充电命令,不管存储体399a内的另一行是否是打开的。无论是否发送预充电命令以关闭可能打开或关闭的另一行,在发送行激活命令以打开给定行后,存储器控制器370将读命令发送给存储器装置390以从那些读出放大器中检索所需数据。在一些实施例中,该读命令前的行激活命令可以是“迷你行激活”命令,其中与直接从给定行的存储器单元中检索所需数据所需的时间相比,在该行激活命令和从那些读出放大器中检索所需数据的读命令的传送之间传递需要经过较少的时间。在其中在确定给定行仍由读出放大器高速缓存虽然它不是存储体399a内的打开行时存储器控制器370发送行激活命令继之以读命令而没有在先预充电命令的实施例中,控制逻辑391可检查存储体状态缓冲器398a的内容以同样确定给定行是否是存储体399a内的打开行,它是否仍由读出放大器高速缓存和/或存储体399a内的另一行是否是打开行。如果控制逻辑391确定给定行被高速缓存但不是打开行,则控制逻辑391可接受接收行激活命令以打开该给定行而没有在先的预充电命令并通过改变行地址解码器的设定以使能对高速缓存该数据的读出放大器的访问来利用被高速缓存的给定行数据,可能适应迷你行激活命令的较短计时。控制逻辑391随后可以接受读命令并从那些读出放大器中直接读取给定行的数据,代替从给定行的存储器单元直接读取数据。
或者,如果来自给定行的数据未被高速缓存于与给定行作为其一部分的子阵列相耦合的读出放大器内,随后在一些实施例中,存储器控制器370可进一步检查存储体状态缓冲器379a的内容以确定给定行以外的存储体399a内的行是否是对于存储体399a的打开行。在这些实施例中,如果发现另一行是对于存储体399a的打开行,则存储器控制器可发送预充电命令以关闭该行。或者,是否发送预充电命令可取决于被发现是对于存储体399a的打开行的其它行是否在使用相同将必须被用于从给定行中读取数据的读出放大器的子阵列内。如果发现存在打开行和给定行使用读出放大器的这种冲突,则需要关闭打开行的预充电命令以关闭该打开行并使得那些读出放大器可用。在这些实施例中无论预充电命令是否需要和/或被发送,读取给定行中存储的数据将需要存储器控制器370发送一行激活命令以打开存储体399a中的给定行。在发送该行激活命令和经过充分的时间周期以使给定行的存储器单元准备用于读取后,存储器控制器370将发送一读命令,使得给定行的存储器单元将那些存储器单元内存储的电荷放电到将那些存储器单元耦合到绝缘体的位线上,这些绝缘体将那些位线进一步耦合到锁存来自给定行的放电电荷的读出放大器,以使给定行的存储器单元内存储的数据被传递到读出放大器同时该数据也响应于读命令由存储器装置390提供给存储器控制器370。在给定行以外的行是打开的且控制逻辑391从存储器控制器370接收行激活命令而没有在先预充电命令的情况下,控制逻辑391可检查存储体状态缓冲器398a的内容以确定当前打开的行和已接收到针对它的行激活命令的给定行是否共享相同的读出放大器。如果该检查表明这两个行之间没有这种冲突,则控制逻辑391可接受没有在先预充电命令的行激活命令,并可使用存储体状态缓冲器398a内指示要激活的给定行当前未高速缓存的状态信息以确定给定行的实际存储器单元必须响应于行激活命令准备被访问。类似地,如需要,控制逻辑39a随后可使用指示给定行内的数据仍未被高速缓存的相同的状态信息,以确定必须通过从给定行的存储器单元直接获得数据来响应于对该行的后续读操作。
在各种实施例中,存储器控制器370可实施各种操作,包括访问数据的其它操作之间的对一个或多个存储体399a-d内的行的预充电操作。在各种实施例中,存储器控制器370可使用一个或多个页关闭算法,它们尝试在预期数据需要从其它行读取时预测行应被优先关闭的时机。不管关闭特定行的理由,在存储器单元和读出放大器行的输入之间提供绝缘体(如以上详细讨论的)使能影响在存储器单元和放大器之间传送数据的位线的预充电操作的实施,同时隔离那些读出放大器以使那些读出放大器内存储的数据不会由于预充电操作而丢失,从而有助于允许读出放大器的这些行用作存储器单元的整行的高速缓存。实际上,读出放大器行内的数据保存可良好地使得存储器控制器370能使用页关闭算法,该算法中在将其数据锁存入读出放大器的行中后用预充电操作立刻关闭每个行。在考虑读操作的情况下,这会导致所有的读操作从未将其数据存入读出放大器行的行中检索数据(这可称作“高速缓存不命中”),以导致页空情况,其中不需要引起在发送行激活命令以打开另一个行用于访问前等待要实施的预充电操作的延迟。如果要采用在读取(也可能在写之后)行之后关闭每行的策略,则在这种实施例中,具有自动预充电命令的读和/或具有自动预充电命令的写可用于获得将另外分开的读(或写)和预充电命令组合成单个命令的好处。不管是否由于预测算法或其它不复杂算法发生访问行之后预充电这些行以关闭它们,在存储器装置390的存储体399a-d内的一些行上实施预充电操作而不丢失用于高速缓存来自其它行的数据的读出放大器中的数据的能力提供了在实施其它操作时引起较少或不引起延迟的背景下实施至少一些这种预充电操作的机会。
作为各种实施例中实施写操作以将数据存入存储体399a内的给定行的一示例,存储器控制器370可在存储体状态缓冲器379a的内容中检查关于存储器399a的信息以确定要写的给定行是否已经是存储体399a内的打开行,以及当前在该行中的数据是否仍高速缓存于与该行作为其一部分的存储体399a内的子阵列相耦合的读出放大器内。如果给定行的确是存储体399a的打开行且来自给定行的当前数据确实被高速缓存于那些读出放大器内,则存储器控制器370可以只需要通过存储器总线380将写命令发送到存储器装置390以将数据存入那些读出放大器。在一些实施例中,与将数据写入存储器单元(除了被写入读出放大器之外或代替之)的更常规的写命令所可能的计时相比,这种写命令可以是总计时较短的“迷你写”命令,以利用将数据写入那些读出放大器所需的相对较短的时间量。但是,将数据写入那些读出放大器仅造成那些读出放大器中存储的数据比那些存储器单元中的数据更新,进一步造成对后续实施反写操作的需要以将来自那些读出放大器的更新的数据复制入那些存储器单元,且这会需要保持存储体状态缓冲器379a内关于那些读出放大器的内容的脏状态的状态信息。在这种实施例中,其中在确定(通过检查存储体状态缓冲器379a)给定行已经是打开的并仍由读出放大器高速缓存时存储器控制器370发送写命令而没有在先预充电或行激活命令,控制逻辑391可检查存储体状态缓冲器398a的内容以同样确定给定行是否是存储体399a内的打开行且是否仍由读出放大器高速缓存。如果控制逻辑391也确定(如存储器控制器370所作的)给定行是打开的行并被高速缓存,则控制逻辑391可接受仅接收写命令并将给定行的数据单独写到已高速缓存数据的读出放大器,代替还将数据写到给定行的存储器单元,且存储器装置390将能更快地完成该写操作,虽然控制逻辑391也可以将那些读出放大器的内容的所获得的脏状态记入在存储体状态缓冲器398a中,准备实施后续反写操作。
或者,如果存储体399a中要被写的给定行不是存储体399a的打开行(给定行已通过预充电操作关闭)但来自给定行的当前数据仍高速缓存于与给定行作为其一部分的子阵列相耦合的读出放大器内,则在一些实施例中,存储器控制器370可进一步检查存储体状态缓冲器379a的内容以确定存储体399a内的另一个行是否是存储体399a的打开行。在这种实施例中,如果发现另一个行是存储体399a的打开行,则在发送行激活命令以打开给定行之前存储器控制器370可发送预充电命令以关闭该行。或者,在其它实施例中,给定行的数据已高速缓存于那些读出放大器内的事实会导致不进行关于存储体399a内的另一个行是否打开的检查,因为给定行的数据被高速缓存于那些读出放大器中的事实被视作消除了实施预充电命令以关闭可能打开的另一个行的需要。在这类其它实施例中,存储器控制器370可发送一行激活命令而不首先发送预充电命令,不管存储体399a内的另一行打开与否。不管是否发送预充电命令以关闭另一个行,在发送行激活命令以打开给定行后,存储器控制器370发送写命令到存储器装置390以存储正被写入至少那些读出放大器的数据。在一些实施例中,行激活和写命令可以是“迷你行激活”和“迷你写”命令,以简单地使得那些读出放大器可用于存储数据并随后将写操作的数据存入那些读出放大器,其时间少于实施实际准备要写的给定行的存储器单元的行激活命令和将写操作的数据实际地写入那些存储器单元的写命令两者所需的时间。此外,在这些实施例中,其中在确定虽然给定行不是存储体399a内的打开行但仍由读出放大器高速缓存时存储器控制器370发送行激活命令继之以写命令而没有在先的预充电命令,控制逻辑391可检查存储体状态缓冲器398a的内容以同样确定给定行是否是存储体399a内的打开行,它是否仍由读出放大器高速缓存和/或存储体399a内的另一个行是否是打开行。如果控制逻辑391确定(如存储器控制器370所作的)给定行被高速缓存但不是打开行,则控制逻辑391可接受接收一行激活命令以打开给定行而没有在先的预充电命令,并通过简单地改变行地址解码器的设定以使能对高速缓存该数据的读出放大器的访问来利用被高速缓存的给定行的数据,可能适应迷你行激活命令的较短计时。控制逻辑391随后可以接受写命令并将数据单独写入那些读出放大器,而不还将数据写入给定行的存储器单元,这可能适合于迷你写命令的较短计时。但是,如前所述,在实施迷你写命令以使那些读出放大器存储比给定行的数据更新的数据的情况下,则关于所获得的那些读出放大器的脏状态的信息可记录于存储体状态缓冲器379a和/或398a中。
在读出放大器和用于将数据从那些读出放大器发送到存储器装置的其它部分(诸如存储器装置390的I/O选择多路复用器395)的全局I/O线之间提供绝缘体在这种存储器装置的操作中提供了更大的灵活性。特别地,在存储器装置390的操作中常常可以忽略严格坚持在打开其它DRAM存储器装置中找到的另一行之前总是关闭存储体内任何打开行的要求的需要。只要要访问的新行不与已打开的另一个行共享一个或多个子阵列块中的相同读出放大器,就可以打开新的行而不引起等待传输和实施预充电命令的延迟发生。实质上,存储体内的多个行(达对于存储体内一个或多个子阵列的每个块1行)实际上可以被打开而不必随后被关闭以使能从另一个行读取数据。在读一个这样的打开行和读另一个这样的打开行之间进行切换将只不过需要“迷你行激活”命令的传输(如前所述)以只是利用下一个发送的读命令发送要读取的新行的行地址。
图4是使用计算机系统的一个实施例的简化框图。计算机系统400至少部分由CPU(中央处理单元)410、系统逻辑420和存储器装置490构成。系统逻辑420耦合到CPU410并执行支持CPU410的各种功能,包括向CPU410提供对也与系统逻辑420耦合的存储器装置490的访问,使用系统逻辑420内的存储器控制器470。CPU410、系统逻辑420和存储器装置490构成了计算机系统400的一种核心,它能支持CPU410对机器可读指令的执行以及存储器装置490内数据和指令的存储。
在各种实施例中,CPU410可以是各种类型的CPU中的任一种,包括能执行广泛了解和使用的“x86”指令集的至少一部分的CPU,且在其它各种实施例中,可以有一个以上的CPU。在各种实施例中,存储器装置490可以是多种动态随机存取存储器(RAM)中的任一种,包括快速页模式(FPM)、扩展数据输出(EDO)、单倍数据率(SDR)或双倍数据率(DDR)形式的同步动态RAM(SDRAM)、使用RAMBUSTM接口的各种技术的RAM等,且存储器控制器470提供具有用于存储器类型的合适接口的逻辑420。存储器装置490的至少一部分存储器单元被分成存储体499a-d,它们每一个都由在二维存储器阵列中被编成行和列的存储器单元构成。为访问存储器装置490内的存储器单元的一部分,该部分必须由存储器控制器470利用存储体、行和列地址的组合进行寻址。如本领域熟练技术人员将认识到的,具有存储器单元的四个存储体(即存储体499a-499d)的单个存储器装置490的描述仅仅是可成为计算机系统的一部分的存储器系统的一个示例,且可以使用更多数量的存储器装置和/或不同数量的存储器装置内的存储体而不背离以下所声明的本发明的精神和范围。
在一些实施例中,系统逻辑420耦合到CPU410并向其提供对存储装置460的访问,从而可以访问存储媒体461所承载的数据和/或指令。存储媒体461可以是本领域熟练技术人员理解的各种类型和技术中的任一种,包括CD或DVD ROM、磁或光盘、磁光盘、带、半导体存储器、纸张或其它材料上的字符或穿孔等等。在一些实施例中,非易失性存储器装置430耦合到系统逻辑420(或者计算机系统400的其它部分)并提供在“复位”或初始化计算机系统400时(例如,当“打开”或“通电”计算机系统400时)执行的初始指令系列的存储,以执行准备计算机系统400用于正常使用所需的任务。在这类实施例的一些变型中,在计算机系统400的初始化或复位时,CPU410访问非易失性存储器装置430以检索要执行的指令,以准备存储器控制器470用于正常使用以提供CPU410对存储器装置490的访问。这些相同的被检索的指令也可被执行以准备系统逻辑402用于正常使用,以提供对存储器装置460的访问且存储装置460可以使用无论什么形式的存储媒体461。
在一些实施例中,存储媒体461承载由CPU410执行的机器可访问指令,以使CPU410实施存储器装置490的一项或多项测试,从而确定存储器装置490会是什么类型的DRAM装置,和/或确定存储器装置490可支持什么功能。这些测试可包括一系列的对存储器装置490的一些部分的尝试访问以及接收到的应答的性质的观察。或者,这些测试可包括询问标识存储器装置类型或者标识一个或多个特征存在的代码,或者这些测试可需要读取存储器装置490内一部分非易失性存储器中存储的数据,它们标识了存储器装置的类型、各种参数和/或各种特征的存在与否。如果确定存储器装置490能支持读出放大器用作一种高速缓存和/或确定存储器装置490能支持在用作一种高速缓存的读出放大器内具有脏内容(如这里另外详细描述的),则可使得CPU410编程或另外配置存储器控制器470以使用这种高速缓存性能。在这样编程存储器控制器470的实施例中,存储器控制器470可访问存储装置或者结合了存储装置,诸如存储体状态缓冲器479,它维护关于构成存储器装置490的每个存储体499a-d的子阵列内的各行的状态的数据。无论是否存储在诸如存储体状态缓冲器479的特殊缓冲器中,这些数据可以提供每个存储体499a-d内的哪些行由与那些行中的每一个都驻留其中的子阵列耦合的读出放大器行高速缓存的指示。存储器控制器470可访问这些数据以确定给定的存储体499a-d之一中要访问的行是否由一行读出放大器高速缓存,该行读出放大器的内容是否脏,要访问的行是否已是打开的,和/或每个存储体内一个不同的行是否是打开的。
如前所述,如果要访问的行被确定为被高速缓存并已是打开的,则用作高速缓存的读出放大器中的数据可以用有或没有自动预充电的仅读命令(或迷你读命令)或仅写命令(或迷你写命令)的发送进行读或写。但是,如果要访问的行被确定为被高速缓存但已经不是打开的,则用作高速缓存的读出放大器中的数据可用行激活命令(可能是迷你行激活命令)和读或写命令(可能是有或没有自动预充电的迷你读或写命令)两者的发送来进行读或写。在这种实例中,如果存在被发现打开的另一个行,则行激活命令的发送在发送预充电命令以关闭另一行之后。或者,如果要访问的行被确定为未由行读出放大器高速缓存,则该行的存储器单元中的数据本身可以用行激活命令的发送继之以等待合适的时间用于完成行激活以及随后的读或写命令的发送进行读或写,所述读或写命令的发送使得该行的存储器单元内的数据被复制到随后从其中读取数据或者随后将数据写入其中的读出放大器的行。
图5是从存储器装置的给定存储体内的给定行读出数据的操作实施例的流程图。510处,判定给定行的内容是否已被复制到给定存储体内的相应读出放大器。在一些实施例中,该判定由存储器控制器进行,该存储器控制器检查关于哪些存储器块或子阵列的哪些行已被复制入读出放大器、每个存储体中的哪个行是打开的和/或从各行复制到读出放大器的内容是否是脏的的存储信息。在其它实施例中,该判定也可稍后由存储器装置内的逻辑进行,在接收到命令以可能地确定应采取哪些动作过程以使各项操作能在较少时间内完成时该逻辑也检查这些存储的信息。如果给定行的内容已被复制入读出放大器,随后在520处,判定给定行是否是给定存储体内的打开行。如果给定行是给定存储体的打开行,则执行迷你读操作,其中操作存储给定行的内容的读出放大器和全局I/O线之间的绝缘体以将那些读出放大器耦合到那些全局I/O线以使数据能在与将数据从给定行的存储器单元本身读出可能花费的时间更短的时间周期内从那些读出放大器读出。但是,如果给定行不是给定存储体的打开行,则在522处实施迷你行激活命令,改变给定存储体的行地址解码器的设定以使存储给定行内容的读出放大器可访问用于在524处用迷你读命令读出,如上所述。在一些实施例中,迷你行激活命令和迷你读命令可以是存储器控制器发送的分开的不同命令以信号表示需要较少时间实施的行激活和读命令的变体,而在可选实施例中,存储器装置内的逻辑自主地检查关于给定存储体内给定行的状态的存储信息,以确定是否可以实施迷你行激活或迷你读命令代替行激活或读命令的另一种形式。
或者,如果在510处确定给定行的内容未被复制入读出放大器,则在530处,判定与给定行相对应的读出放大器的当前内容是否是脏的。如果那些相应读出放大器的内容不是脏的,则在540处判定与给定行的存储器单元耦合的位线是否已被预充电。如果那些位线已被预充电,则在544处可能地预充电读出放大器以使这些读出放大器准备从给定行接收数据(如果读出放大器需要这种准备)并实施行激活操作以使给定行的存储器单元准备被访问。如果那些位线未被预充电,则在542处在544处实施读出放大器的可能预充电和行激活操作之前实施预充电操作以对那些位线进行预充电。但如果相应读出放大器的内容在530处被确定为是脏的,则就在542处预充电那些相同位线和在544处进行可能的读出放大器预充电和行激活操作之前在532处实施反写操作以将那些读出放大器的脏内容复制到脏内容所属的行。在该反写操作中,读出放大器和与脏内容所属的行耦合的位线(它们是同与给定行的存储器单元耦合的那些相同的位线)之间的绝缘体被操作用于将那些读出放大器和那些位线耦合在一起,以使脏内容可由读出放大器发送给脏内容所属行的存储器单元并当相应的字线操作用于引起锁存发生时由该行的存储器单元锁存。在一些实施例中,反写操作可由存储器控制器发送的命令启动,而在可选实施例中,由于接收到伴随使用当前存储脏内容的读出放大器的行激活命令,反写操作可由存储器装置内的逻辑自主引发。在544处读出放大器的可能预充电和给定行的激活之后,在546处实施读操作。
图6是将数据写到存储器装置的给定存储体内的给定行的操作实施例的流程图。在610处,判定给定行的内容是否已被复制到给定存储体内的相应读出放大器。在一些实施例中,该判定由检查关于哪些子阵列或存储器块的哪些行已被复制入读出放大器、每个存储体中的哪个行是打开的和/或从各行复制入读出放大器的内容是否是脏的的存储信息的存储器控制器进行。在其它实施例中,该判定也可稍后由存储器装置内的逻辑进行,在接收到命令以可能地确定应采取哪个动作过程以使各项操作能在较少时间内完成时该逻辑也检查这些存储的信息。如果给定行的内容已被复制入读出放大器,则在620处,判定给定行是否是给定存储体内的打开行。如果给定行是给定存储体的打开行,则执行迷你写操作,其中操作存储给定行的内容的读出放大器和全局I/O线之间的绝缘体以将那些读出放大器耦合到那些全局I/O线以使数据能在与将数据写入给定行的存储器单元本身可能花费的时间更短的时间周期内单独写入那些读出放大器。在624处也存储信息,它指示那些读出放大器现在具有脏内容,因为那些内容现在比给定行的存储器单元本身的内容更新,且在各种实施例中,该脏状态信息被维持于存储器装置内和/或操作存储器装置的存储器控制器内。但如果给定行不是给定存储体的打开行,则在622处实施迷你行激活命令,改变给定存储体的行地址解码器的设定以使存储给定行内容的读出放大器可访问用于在624处用迷你写命令写入,如上所述。在一些实施例中,迷你行激活命令和迷你写命令可以是存储器控制器发送的分开的不同命令用以信号表示需要较少时间实施的行激活和写命令的变体,而在可选实施例中,存储器装置内的逻辑自主地检查关于给定存储体内给定行的状态的存储信息,以确定是否可以实施迷你行激活或迷你写命令代替行激活或写命令的另一种形式。
或者,如果在610处确定给定行的内容未被复制入读出放大器,则在630处,判定与给定行相对应的读出放大器的当前内容是否是脏的。如果那些相应读出放大器的内容不是脏的,则在640处判定与给定行的存储器单元耦合的位线是否已被预充电。如果那些位线已被预充电,则在644处可能地预充电读出放大器以使这些读出放大器准备从给定行接收数据(如果读出放大器需要这种准备)并实施行激活操作以使给定行的存储器单元准备被访问。如果那些位线未被预充电,则在642处在644处实施可能的读出放大器预充电和行激活操作之前实施预充电操作以对那些位线进行预充电。但如果相应读出放大器的内容在630处被确定为是脏的,则就在642处预充电那些相同位线和在644处进行可能的读出放大器预充电和行激活操作之前在632处实施反写操作以将那些读出放大器的脏内容复制到那些内容所属的行,可能使用与给定行的存储器单元耦合的那些位线。在一些实施例中,反写操作可由存储器控制器发送的命令启动,而在可选实施例中,由于接收到伴随使用当前存储脏内容的读出放大器的行激活命令,反写操作可由存储器装置内的逻辑自主引发。在644处可能的读出放大器预充电和给定行的激活之后,在646处实施行复制操作,从而当与给定存储体内的给定行相对应的字线被操作以使得给定行的存储器单元将它们的内容放电到那些位线上时,与给定行的存储器单元耦合的位线和那些读出放大器之间的绝缘体用于允许存储器单元的内容通过那些位线被复制那些读出放大器。利用现在在读出放大器内包含的给定行的内容,可以如先前所示地进行624处的迷你写操作。
权利要求
1.一种存储器装置,包括被编成行和列的存储器单元的第一子阵列;第一多个位线,每一个都耦合到存储器单元的一列;第一组子阵列绝缘体,用于选择性地将所述第一多个位线耦合到第一行读出放大器;第一组共用绝缘体,用于选择性地将所述第一行读出放大器耦合到多个全局I/O线;以及绝缘体控制逻辑,用于协调所述第一组子阵列绝缘体的操作以允许第一子阵列内存储器单元行中的数据被复制到所述第一行读出放大器并由其锁存,协调所述第一组共用绝缘体的操作以允许所述第一行读出放大器锁存的数据被发送到所述多个全局I/O线,以及协调所述第一组子阵列绝缘体的操作以防止由于实施用于预充电所述第一多个位线的预充电操作所引起的所述第一行读出放大器锁存的数据的丢失。
2.如权利要求1所述的存储器装置,其特征在于,还包括被编成行和列的存储器单元的第二子阵列;第二多个位线,所述第二多个位线中的每一个耦合到存储器单元的一列;第二组子阵列绝缘体,用于选择性地将所述第二多个位线耦合到第二行读出放大器,其中所述第二组子阵列绝缘体可由所述绝缘体控制逻辑操作以允许所述第二子阵列内的行中的数据被复制到所述第二行读出放大器并由其锁存;以及第二组共用绝缘体,用于选择性地将所述第二行读出放大器耦合到所述多个全局I/O线,其中所述第二组共用绝缘体可由所述绝缘体控制逻辑操作以允许所述第二行读出放大器锁存的数据被发送到所述多个全局I/O线并当所述第一组共用绝缘体由绝缘体控制逻辑操作以允许第一行读出放大器中锁存的数据被发送到所述多个全局I/O线时防止所述第二行读出放大器锁存的数据丢失。
3.如权利要求1所述的存储器装置,其特征在于,还包括由所述第一和第二子阵列、所述第一和第二组子阵列绝缘体、所述第一和第二组读出放大器以及所述第一和第二组共用绝缘体构成的第一存储体;以及第二存储体。
4.如权利要求1所述的存储器装置,其特征在于,还包括被配置为接收读命令的控制逻辑,其中将数据从第一子阵列内的行通过所述第一多个位线和第一组子阵列绝缘体两者复制到锁存所述数据的第一行读出放大器,并将所述第一行读出放大器内锁存的数据通过第一组共用绝缘体发送到所述多个全局I/O线。
5.如权利要求4所述的存储器装置,其特征在于,所述控制逻辑还被配置为在数据已从第一子阵列内的行复制并由所述第一行读出放大器锁存的情况下接收迷你读命令,并用于通过操作所述第一组共用绝缘体以允许第一行读出放大器锁存的数据由第一行读出放大器通过第一组共用绝缘体发送到所述多个全局I/O线来进行响应。
6.如权利要求5所述的存储器装置,其特征在于,所述控制逻辑还被配置为接收迷你行激活命令,其中在接收到读命令时,标识第一子阵列内的一个行的行地址由控制逻辑接收以信号表示来自第一子阵列内的行并锁存于所述第一行读出放大器内的数据将通过第一组共用绝缘体发送到所述多个全局I/O线。
7.一种控制装置,包括第一存储位置,其中存储了关于存储器装置内的存储器单元的存储体内的行的状态的数据;与所述第一存储位置耦合的控制逻辑,用于检查第一存储位置内的数据以确定要从其中读取数据的特定行的内容是否已由一行读出放大器高速缓存并用于检查所述特定行是否是所述存储体内的打开行;以及将所述控制逻辑耦合到存储器装置的存储器总线,用于允许命令从控制逻辑发送到存储器装置。
8.如权利要求7所述的控制装置,其特征在于,如果所述特定行的内容已由一行读出放大器高速缓存且所述特定行是存储体内的打开行,所述控制逻辑发送一迷你读命令到存储器装置,以使所述一行读出放大器高速缓存的数据由存储器装置输出。
9.如权利要求7所述的控制装置,其特征在于,如果所述特定行的内容已由一行读出放大器高速缓存但所述特定行不是存储体内的打开行,所述控制逻辑发送迷你行激活命令和迷你读命令到所述存储器装置,以使得所述特定行变成存储体内的打开行并使得所述一行读出放大器高速缓存的数据由存储器装置输出。
10.如权利要求7所述的控制装置,其特征在于,如果所述特定行的内容未由一行读出放大器高速缓存但所述特定行是存储体内的打开行,所述控制逻辑发送一读命令到所述存储器装置,以使所述特定行的存储器单元的内容被复制到一行读出放大器以便由所述一行读出放大器高速缓存,并使得从所述特定行复制并由所述一行读出放大器高速缓存的数据由存储器装置输出。
11.如权利要求7所述的控制装置,其特征在于,如果所述特定行的内容未由一行读出放大器高速缓存且所述特定行不是所述存储体内的打开行,所述控制逻辑发送一行激活命令和读命令到所述存储器装置,以使所述特定行变成存储体的打开行并准备用于读操作,并使得所述特定行的存储器单元的内容被复制到一行读出放大器以便由所述一行读出放大器高速缓存,并使得从所述特定行复制并由所述一行读出放大器高速缓存的数据由所述存储器装置输出。
12.一种计算机系统,包括处理器;具有至少一个存储体的存储器装置,其中多个存储器单元被编成行;与所述处理器耦合的存储器控制器,它具有第一存储位置,所述存储器控制器访问该位置以响应于来自所述处理器的数据请求确定从其中读取数据的特定行的内容是否已经由一行读出放大器高速缓存,并检查所述特定行是否是所述存储体内的打开行;以及将所述控制逻辑耦合到存储器装置的存储器总线,用于允许命令从所述控制逻辑发送到存储器装置。
13.如权利要求12所述的计算机系统,其特征在于,如果所述处理器从其中请求数据的所述特定行的内容已由一行读出放大器高速缓存且所述特定行是存储体内的打开行,所述控制逻辑发送一迷你读命令到存储器装置,以使所述一行读出放大器高速缓存的数据由存储器装置输出。
14.如权利要求12所述的计算机系统,其特征在于,如果所述处理器从其中请求数据的所述特定行的内容已由一行读出放大器高速缓存但所述特定行不是存储体内的打开行,所述控制逻辑发送一迷你行激活命令和迷你读命令到所述存储器装置,以使得所述特定行变成存储体内的打开行并使得所述一行读出放大器高速缓存的数据由存储器装置输出。
15.如权利要求12所述的计算机系统,其特征在于,如果所述处理器从其中请求数据的所述特定行的内容未由一行读出放大器高速缓存且所述特定行不是所述存储体内的打开行,所述控制逻辑发送一行激活命令和读命令到所述存储器装置,以使所述特定行变成存储体的打开行并准备用于读操作,并使得所述特定行的存储器单元的内容被复制到一行读出放大器以便由所述一行读出放大器高速缓存,并使得从所述特定行复制并由所述一行读出放大器高速缓存的数据由所述存储器装置输出。
16.一种方法,包括;确定被编成多个行和列的存储器单元的子阵列内的存储器单元的特定行的内容是否已被高速缓存于一行读出放大器内;确定所述存储器单元的特定行是否是其中定位了所述子阵列的存储器装置的存储体的打开行;发送一迷你读命令到存储器装置,以便如果所述特定行的内容已被复制到所述一行读出放大器且所述特定行是存储器装置的存储体的打开行,从所述一行读出放大器中读取被复制到所述一行读出放大器的存储器的特定行的一部分内容;以及接收存储器的特定行的所述一部分内容。
17.如权利要求16所述的方法,其特征在于,还包括如果所述特定行的内容已被复制到所述一行读出放大器但所述特定行不是所述存储器装置的存储体的打开行,则发送一迷你行激活命令到存储器装置使得所述特定行变成所述存储器装置的存储体的打开行。
18.如权利要求16所述的方法,其特征在于,还包括发送一行激活命令到存储器装置以使得所述特定行成为存储器装置的存储体的打开行,等待所述行激活命令完成,发送一读命令到所述存储器装置以使得一组绝缘体允许将所述特定行的内容复制到所述一行读出放大器并从所述一行读出放大器中读取所述特定行的一部分内容。
19.一种方法,包括响应于接收到迷你读命令操作与第一行读出放大器耦合的第一组绝缘体以允许从第一子阵列的第一行存储器单元复制入第一行读出放大器的数据由第一行读出放大器通过所述第一组绝缘体输出到一组全局I/O线,它们将所述第一行读出放大器通过所述一组全局I/O线进一步耦合到所述子阵列作为其一部分的存储器装置的输出;以及响应于接收到预充电命令操作第一组位线和第一行读出放大器之间耦合的第二组绝缘体以使第一行读出放大器与第一组位线绝缘,同时实施一预充电操作以预充电所述第一组位线来防止所述第一行读出放大器高速缓存的数据丢失
20.如权利要求19所述的方法,其特征在于,还包括操作第一组绝缘体以使第一行读出放大器与所述一组全局I/O线绝缘,同时允许高速缓存从第二行存储器单元复制的数据的所述第二行读出放大器通过所述一组全局I/O线耦合到存储器装置的输出,并将数据从所述第二行读出放大器内发送到存储器装置的输出而不丢失第一行读出放大器内存储的数据。
21.一种包括代码的机器可访问媒介,所述代码在由电子装置内的处理器执行时使得所述电子装置检查存储器装置是否能高速缓存一行读出放大器内存储器单元的行的内容;编程存储器控制器以发送一迷你行激活命令以激活已确定其内容已高速缓存于一行读出放大器内的行,从而使得来自所述一行读出放大器的数据的后续读取成为可能;编程存储器控制器以发送一迷你读命令以读取所述一行读出放大器内高速缓存的数据代替直接从正由所述一行读出放大器高速缓存的存储器单元的行中读取数据。
22.如权利要求21所述的机器可访问媒介,其特征在于,还使得所述电子装置发送一预充电命令,它使得所述一行读出放大器与位线绝缘,所述位线另外地将所述一行读出放大器耦合到子阵列内的存储器单元的列同时实施预充电所述位线的预充电操作以防止丢失所述一行读出放大器内高速缓存的数据。
全文摘要
提供和使用绝缘体组以使能通过与子阵列相关联的一行读出放大器进行存储器装置的存储体子阵列内存储器单元的至少一行的内容的高速缓存,从而通过使得与数据直接从存储器单元行读取相比数据从读出放大器行读取的读操作来使能更快速的访问,以读取该至少一行的内容。
文档编号G11C11/4096GK1890753SQ200480036120
公开日2007年1月3日 申请日期2004年12月23日 优先权日2003年12月30日
发明者J·B·哈尔波特, R·M·艾利斯, K·S·贝恩斯, C·B·弗里曼 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1