多区块系统中的可编程的片上端接定时的制作方法

文档序号:14204330阅读:233来源:国知局
多区块系统中的可编程的片上端接定时的制作方法

本发明的实施例总体上涉及存储器设备,并且更具体地涉及动态地选择性地控制用于具有多区块(multi-rank)存储器架构的系统中的存储器存取操作的片上端接(on-dietermination)。

版权公告/许可

本专利文档的公开内容的部分可以包含受到版权保护的材料。版权所有者不反对任何人复制出现在专利和商标局专利文件或记录中的专利文档或专利公开,但在其他方面无论如何保留所有版权权利。版权声明适用于以下所描述的和本文的附图中的所有数据以及以下描述的任何软件:2015,英特尔公司,保留所有权利。



背景技术:

存储器设备在计算设备中无处不在,以用于存储用于处理器的数据和代码从而执行操作和完成计算设备的功能。即使随着对计算设备的需求在增长,也存在趋向以较小功率运行的较小的计算设备的趋势,尤其是在移动设备中。随着移动计算设备在计算性能方面提高了,它们包括越来越多的存储装置和存储器以满足在设备上执行的越来越多的处理和执行。在移动计算设备中,控制功耗是关键的设计重点。存储器设备和存储器子系统消耗了低功率和其他移动设备中的显著大量的总功率。

附图说明

以下描述包括对具有通过本发明实施例的实现的示例给出的图示的附图的讨论。附图应当通过示例而不是通过限制的方式来理解。如本文中所使用的,对一个或多个“实施例”的引用将被理解为描述被包括在本发明的至少一个实现中的特定特征、结构、和/或特性。因此,出现在本文中的短语,例如“在一个实施例中”或“在替代实施例中”描述了本发明的各种实施例和实现,并且不一定所有都指代相同的实施例。然而,他们也不一定相互排斥。

图1是应用了包括片上端接(odt)定时控制的odt的选择性控制的系统的实施例的框图。

图2是利用定时控制来对存储器系统中的存储器设备应用odt的系统的实施例的框图。

图3a是已知的八管芯封装的实施例的框图。

图3b是安装在其中系统提供选择性片上端接控制的四管芯封装中的存储器设备的实施例的框图。

图3c是其中系统提供选择性片上端接控制的具有菊花链拓扑的存储器系统的实施例的框图。

图4a是用于控制针对存储器存取的片上端接的命令编码的实施例的表示。

图4b是用于控制针对存储器存取的片上端接值的表的实施例的表示。

图4c是用于控制针对存储器存取的片上端接定时的存储器存取命令编码的实施例的表示。

图4d是用于控制针对存储器存取的片上端接定时的表的实施例的表示。

图5a是用于针对写入操作选择性地应用片上端接的过程的实施例的流程图。

图5b是用于针对读取操作选择性地应用片上端接的过程的实施例的流程图。

图5c是用于针对写入操作选择性地占用片上端接的过程的实施例的流程图。

图5d是用于针对读取操作选择性地占用片上端接的过程的实施例的流程图。

图6是其中可以实现片上端接控制的计算系统的实施例的框图。

图7是其中可以实现片上端接控制的移动设备的实施例的框图。

描述了某些细节和实现流程,包括对附图的描述,其可以描绘下面所述的实施例中的一些或所有,以及讨论本文中呈现的发明的概念的其他潜在的实施例或实现。

具体实施方式

当前的存储器子系统可以通过在写入操作期间消除片上端接(odt)来控制存储器系统功耗。尽管信号质量会由于缺乏odt而劣化,但是如果存储器设备之间的距离足够小以致信号反射不会显着地影响期望的信号,则这种权衡是可以容忍的。这样的假设在当前的系统中并不总是成立的。尽管存在一些封装解决方案增加了移动设备中的存储器密度同时将设备之间的距离维持得较小,但是这样的解决方案往往更加昂贵且是非标准的。更多的标准封装解决方案是不昂贵的,但随着密度的增加,存储器总线上的存储器设备之间的距离会增加。因此,由于信号反射在标准封装解决方案中没有odt,存储器设备之间的距离可以导致信号劣化。另外,信号反射可以在非对称封装中增加和/或随着不对称负载而增加。

当前的odt解决方案使用odt引脚,这增加了制造成本,并随着增加了引脚计数而消耗更多的空间。存在不使用独立的odt引脚的一些odt解决方案,但是这样的解决方案被限于在一个区块中提供端接,例如通过硬编码端接方案。单区块odt对于多区块存储器系统而言不是一个充分有效的解决方案。

当前的odt解决方案还提供了针对odt接通和关断定时的固定值,其是存储器设备从配置设置中导出以用于读取和写入延迟的。当拓扑路由不匹配或者负载不匹配时,使用固定的odt接通和关断定时可以使信号质量劣化。

如本文所述,片上端接(odt)控制实现了可编程odt延迟设置。存储器设备可以经由由组织成存储器区块的多个存储器设备共享的一个或多个总线耦合到相关联的存储器控制器。存储器控制器生成针对目标区块的存储器存取命令。响应于该命令,存储器设备可以基于是在目标区块还是非目标区块中并且基于存取命令包括读取还是写入,而选择性地占用odt以用于存储器存取操作。存储器设备可以根据可编程odt延迟设置来占用odt。可编程odt延迟设置可以针对读取和写入事务来设置不同的odt定时值。

存储器区块指代所有接收来自相关联的存储器控制器或类似的控制单元的常用命令并对其作出响应的多个存储器设备或管芯。存储器区块包括并联连接的一个或多个存储器设备。区块中的存储器设备通常共享数据总线、c/a(命令/地址)总线,并且通常共享时钟信号。区块中的独立的设备可以接收专用时钟使能(cke)、芯片选择(cs)和片上端接(odt)信号。存储器控制器指代控制对存储器设备的存取的电路和/或设备。

存储器控制器同时将存储器存取命令发送到存储器区块中的一些或所有。存储器控制器可以选择性地触发存储器区块来改变片上端接(odt)设置,例如占用odt以用于写入操作、占用odt以用于读取操作、和/或改变用于读取或写入操作的odt的值。更具体而言,在一个实施例中,存储器控制器选择性地触发一个或多个非目标区块以占用odt。存储器设备可以根据一个或多个定时设置来占用odt,该定时设置控制何时接通和关断odt。利用可编程odt定时设置,存储器设备可以只根据需要来占用odt,通过对odt的接通和关断进行定时来专门地只在需要时占用odt。将会理解的是,odt指代在电源轨和接收机侧的信号线之间的连接阻抗。在一个实施例中,电源轨是vdd或高电压电源。在一个实施例中,存储器设备可以从信号线端接到vss或地或低电压电源。在一个实施例中,存储器设备可以将信号线端接到vdd和vss两者。在任何情况下,选择区块中的一个来执行存储器存取命令,该区块可以被称为存储器存取命令的目标。目标区块执行命令,而其他触发的区块维持针对存储器存取操作的改变的odt设置。被寻址但未被选择作为目标区块的区块可以被称为非目标区块。

一些odt实现(例如传统的lpddr4实现)定义了针对odt接通和关断定时的固定值,其是dram或存储器设备从模式寄存器设置中导出的以用于读取和写入延迟。一些odt实现(例如ddr3、lpddr3和ddr4)使用特殊的odt控制信号来控制延迟。利用针对接通和关断定时的固定值,存储器设备的布局的拓扑必须与设备之间的迹线路由以及设备的存取的负载两者完美匹配。本文描述的可编程定时设置或多个设置通过实现odt定时的编程而允许拓扑中的不匹配。定时中的不匹配可以包括具有不平衡的负载的平衡的拓扑、不平衡的拓扑和/或菊花链拓扑。在一个实施例中,通过提供可编程定时设置允许odt调节以补偿不平衡的负载。

在一个实施例中,系统经由存储器设备的一个或多个寄存器(例如,模式寄存器)中或单个寄存器的一个或多个存储位置中的可编程延迟值来提供可编程定时设置。在一个实施例中,寄存器可以存储指示用于调整接通或关断的定时的偏移的值。在一个实施例中,存储器控制器可以经由模式寄存器组(mrs)命令或类似机制来对偏移配置进行编程以写入配置设置。在一个实施例中,系统经由存储器存取命令编码来提供可编程定时设置。在一个实施例中,存储器设备可以基于存储器存取命令中的指示,针对一个或多个设置进行配置。因此,存储器控制器可以通过在存储器存取命令内编码来触发odt定时设置的应用,并且存储器设备将对寄存器或其他配置存储装置进行存取以存取配置设置。

对存储器设备的引用可以应用于不同的存储器类型。存储器设备通常指代易失性存储器技术。易失性存储器是如果到设备的电力被中断则其状态(并因此存储在其上的数据)是不确定的处理器。非易失性存储器指代即使到设备的电力被中断其状态也是确定的存储器。动态易失性存储器需要刷新存储在设备中的数据以维持状态。动态易失性存储器的一个示例包括dram(动态随机存取存储器)、或一些变型,例如同步dram(sdram)。如本文中所述的存储器子系统可以与以下多个存储器技术兼容:例如,ddr3(双数据速率版本3,最初由jedec(联合电子设备工程委员会)于2007年6月27日发布,当前在发布21)、ddr4(ddr版本4,由jedec于2012年9月公布的初始规范)、lpddr3(低功率ddr版本3,jesd209-3b,由jedec于2013年8月发布)、lpddr4(低功率双数据速率(lpddr)版本4,jes,209-4,最初由jedec于2014年8月发布)、wio2(宽i/o2(宽io2),jesd229-2,最初由jedec于2014年8月发布)、hbm(高带宽存储器,jesd235,最初由jedec于2013年10月发布)、ddr5(ddr版本5,当前由jedec讨论中)、lpddr5(当前由jedec讨论中)、hbm2(hmb版本2),当前有jedec讨论中)、和/或其他、以及基于这样的规范的衍生物或扩展的技术。

除了易失性存储器以外,或替代于易失性存储器,在一个实施例中,对存储器设备的引用可以指代即使到设备的电力被中断其状态也是确定的非易失性存储器设备。在一个实施例中,非易失性存储器设备是可成组寻址的存储器设备,例如,nand或nor技术。因此,存储器设备还可以包括下一代非易失性设备,例如,三维交叉存储器设备、或其他字节可寻址非易失性存储器设备。在一个实施例中,存储器设备可以是或包括多阈值级别nand闪存存储器、nor闪存存储器、单个或多级相变存储器(pcm)、电阻式存储器、纳米线存储器、铁电晶体管随机存取存储器(fetram)、并入忆阻器技术的磁阻式随机存取存储器(mram)、或自旋转移矩(stt)-mram、或以上中的任何的组合、或其他存储器。

本文中指代“dram”的描述可以应用于允许随机存取的任何存储器设备,无论是易失性还是非易失性的。存储器设备或dram可以指代管芯本身,和/或指代封装的存储器产品。

低功率双数据速率4(lpddr4)是针对现代计算系统设计的存储器技术的一个示例。尽管一些存储器技术实现了较宽的i/o(输入/输出)接口,但是一些技术(如lpddr4)被设计为具有较窄的接口,但仍允许增加的存储器密度。多设备封装可以用于寻求增加密度同时保持窄i/o接口的技术。尽管具体地引用了存储器设备,以及lpddr4存储器的某些示例,但是将会理解,在现代计算系统中,所有类型的芯片间通信都是重要的。因此,本文中的描述可以同样适用于没有明确标识的存储器技术,并且也可以应用于与多设备封装中的设备共享公共总线的任何类型的设备的设备间通信。

lpddr4示出了其中可以使用多周期命令的系统的示例。对于lpddr4,写入命令包括两个周期的write-1,随后是两个周期的cas-2。多周期命令背后的基本原理是通过在初始命令上声明芯片选择(cs)信号来将命令(例如,write-1命令)广播到多个区块。在一个实施例中,接收write-1命令的存储器设备(例如,利用cs信号选择的那些)在写入事务的持续时间内接通odt。存储器控制器只将cas-2命令发送给接收数据的区块或目标区块。因此,目标区块接收write-1和cas-2信号,而非目标区块接收write-1而没有cas-2信号。通过将read-1和cas-2一起发送给目标区块,以及将read-1没有cas-2发送给非目标区块,可以将类似的方法应用于读取事务。

图1是应用了包括片上端接(odt)定时控制的odt的选择性控制的系统的实施例的框图。系统100包括计算设备中的存储器子系统的元件。处理器110表示执行操作系统(os)和应用的主机计算平台的处理单元,其可以统称为存储器的“主机”。os和应用执行引起存储器存取的操作。处理器110可以包括一个或多个独立的处理器。每个独立的处理器可以包括单核和/或多核处理单元。处理单元可以是诸如cpu(中央处理单元)之类的主处理器和/或诸如gpu(图形处理单元)之类的外围处理器。系统100可以被实现为soc,或者可以用独立组件来实现。

存储器控制器120表示用于系统100的一个或多个存储器控制器电路或设备。存储器控制器120表示控制逻辑,其响应于由处理器100执行操作来生成存储器存取命令。存储器控制器120存取一个或多个存储器设备140。在一个实施例中,存储器设备140被组织并且管理为不同的通道,其中每个通道与并行地耦合到多个存储器设备的总线和信号线耦合。每个通道是独立可操作的。因此,每个通道是独立存取和控制的,并且对于每个通道,定时、数据传输、命令和地址交换以及其他操作是独立的。在一个实施例中,针对每个通道的设置是由独立的模式寄存器或其他寄存器设置来控制的。在一个实施例中,每个存储器控制器120管理独立的存储器通道,尽管系统100可以被配置为具有由单个控制器管理的多个通道,或者被配置为具有在单个通道上的多个控制器。在一个实施例中,存储器控制器120是主机处理器110的部分,例如,在与处理器相同的管芯上被实现的逻辑,或在与处理器相同的封装空间中被实现的逻辑。

存储器控制器120包括耦合到系统总线的i/o接口逻辑122。i/o接口逻辑122(以及存储器设备140的i/o142)可以包括引脚、连接器、信号线和/或其他硬件以用于连接设备。i/o接口逻辑122可以包括硬件接口。通常,集成电路内的导线与焊盘或连接器接合,以与设备之间的信号线或迹线结合。i/o接口逻辑122可以包括驱动器、接收机、收发机、端接、和/或其他电路以在设备之间的信号线上发送和/或接收信号。系统总线可以被实现为将存储器控制器120耦合到存储器设备140的多个信号线。系统总线至少包括时钟(clk)132、命令/地址(cmd)134、数据(dq)136以及其他信号线138。cmd134的信号线可以被称为“c/a总线”(或者add/cmd总线、或指示命令和地址信息的传输的一些其他标注),而dq136的信号线可以被称为“数据总线”。在一个实施例中,独立的通道具有不同的时钟信号、c/a总线、数据总线和其他信号线。因此,系统100可以被认为具有多个“系统总线”,从某种意义上而言,独立的接口路径可以被认为是独立的系统总线。应该理解的是,除了明确示出的线以外,系统总线可以包括选通信令线、警告*线、辅助线以及其他信号线。

应该理解的是,系统总线包括被配置为在带宽上操作的数据总线(dq136)。基于系统100的设计和/或实现,dq136可以具有每存储器设备140更多或更少的带宽。例如,dq136可以支持具有x32接口、x16接口、x8接口或其他接口的存储器设备。在习语“xn”中,n是二进制整数指代存储器设备140的接口大小,其表示与存储器控制器120交换数据的信号线dq136的数量。存储器设备的接口大小是关于在系统100中每通道同时可以使用多少存储器设备或可以将多少存储器设备并行地与相同的信号线耦合的控制因素。

存储器设备140表示系统100的存储器资源。在一个实施例中,每个存储器设备140是独立的存储器管芯,其可以包括每管芯多个(例如2个)通道。每个存储器设备140包括i/o接口逻辑142,其具有由设备的实现确定的带宽(例如,x16或x8或一些其他接口带宽),并且使得存储器设备能够与存储器控制器120接合。i/o接口逻辑142可以包括硬件接口,并且可以与存储器控制器的i/o122一致但在存储器设备端。在一个实施例中,多个存储器设备140并联连接到相同的数据总线。例如,系统100可以被配置有并行耦合的多个存储器设备140,每个存储器设备响应于命令并且对每个存储器设备内部的存储器资源160进行存取。对于写入操作,单独的存储器设备140可以写入整个数据字的一部分,并且对于读取操作,单独的存储器设备140可以提取整个数据字的一部分。

在一个实施例中,存储器设备140直接被设置在计算设备的母板或主机系统平台(例如,其上设置有处理器110的pcb(印刷电路板))上。在一个实施例中,存储器设备140可以被组织成存储器模块130。在一个实施例中,存储器模块130表示双列直插式存储器模块(dimm)。在一个实施例中,存储器模块130表示用于分享存取或控制电路的至少一部分的多个存储器设备的其他组织,其可以是与主机系统平台分开的电路、分开的设备或分开的板。存储器模块130可以包括多个存储器设备140,并且存储器模块可以包括对设置在存储器设备上的到被包括的存储器设备的多个独立的通道的支持。

存储器设备140各自包括存储器资源160。存储器资源160表示用于数据的存储器位置或存储位置的单独的阵列。通常,存储器资源160被管理为数据的行,经由高速缓存线(行)和位线(行内单独的比特)控件来进行存取。存储器资源160可以被组织成存储器的独立的通道(channel)、区块(rank)以及组块(bank)。通道是到存储器设备140内的存储位置的独立的控制路径。区块指代跨多个存储器设备的共同的位置(例如,不同设备内的相同的行地址)。组块指代存储器设备140内的存储器位置的阵列。在一个实施例中,存储器的组块被划分为子组块,其具有针对该子组块共享的电路的至少一部分。

在一个实施例中,存储器设备140包括一个或多个寄存器144。寄存器144表示提供用于存储器设备的操作的配置或设置的存储器设备或存储位置。在一个实施例中,寄存器144可以提供用于存储器设备140的存储位置以存储由存储器控制器120进行存取的数据,作为控制或管理操作的部分。在一个实施例中,寄存器144包括模式寄存器。在一个实施例中,寄存器144包括多用途寄存器。寄存器144内的位置的配置可以对存储器设备140进行配置从而以不同的“模式”进行操作,其中命令和/或地址信息或信号线可以取决于模式来触发存储器设备140内的不同的操作。寄存器144的设置可以指示i/o设置的配置(例如,定时、端接或odt(片上端接))、驱动器配置、和/或其他i/o设置。

在一个实施例中,存储器设备140包括odt146,作为与i/o142相关联的接口硬件的部分。odt146可以如上所提到来进行配置,并且提供针对将被应用于到特定信号线的接口的阻抗的设置。odt设置可以基于存储器设备是存取操作所选定的目标还是非目标设备来进行改变。odt146设置可以影响端接线上的信令的定时和反射。通过odt146的小心的控制可以实现较高速的操作。

存储器设备140包括控制器150,其表示存储器设备内的用于控制存储器设备内的内部操作的控制逻辑。例如,控制器150对由存储器控制器120发送的命令进行解码,并且生成内部操作以执行或满足命令。控制器150可以确定基于寄存器144选择了什么模式,并且基于所选定的模式对针对存储器资源160的操作的存取和/或执行进行配置。控制器150生成控制信号来控制存储器设备140内的比特的路由以提供用于所选定的模式的适当的接口,并且将命令指向适当的存储器位置或地址。

再次参考存储器控制器120,存储器控制器120包括命令(cmd)逻辑124,其表示用于生成命令以发送到存储器设备140的逻辑或电路。通常,存储器子系统中的信令包括命令内的或伴随命令的地址信息以用于指示或选择其中存储器设备应该执行命令的一个或多个存储器位置。在一个实施例中,控制器150包括命令逻辑152以用于接收并且对经由i/o142从存储器控制器120接收到的命令和地址信息进行解码。基于接收到的命令和地址信息,控制器150可以控制存储器设备140内的逻辑和电路的操作的定时以用于执行命令。控制器150负责遵守标准或规范。

在一个实施例中,存储器控制器120包括刷新(ref)逻辑126。可以使用刷新逻辑126,其中存储器设备140是易失性的并且需要被刷新来保持确定的状态。在一个实施例中,刷新逻辑126指示要执行的用于刷新的位置和刷新的类型。刷新逻辑126可以触发存储器设备140内的自刷新,和/或通过发送刷新指令来执行外部刷新。来自存储器控制器的外部刷新可以包括所有组块刷新和/或每组块刷新。所有组块刷新引起并行地耦合的所有存储器设备140内的所选择的组块的刷新。每组块刷新引起指定存储器设备140内的指定组块的刷新。在一个实施例中,存储器设备140内的控制器150包括刷新逻辑154以应用存储器设备140内的刷新。在一个实施例中,刷新逻辑154生成内部操作,以根据从存储器控制器120接收到的外部刷新来执行刷新。刷新逻辑154可以确定刷新是否是指向存储器设备140的,并且响应于该命令要刷新什么存储器资源160。

在一个实施例中,存储器控制器120包括odt逻辑128,以用于控制应用于被发送到存储器设备140的存储器存取事务的odt。在一个实施例中,odt逻辑128使得存储器控制器120能够基于事务类型(例如,写入或读取)对针对由存储器设备140应用的odt值的一个或多个配置设置进行设置。在一个实施例中,odt逻辑128使得存储器控制器120能够对针对由存储器设备140应用的odt定时或延迟的一个或多个配置设置进行设置。定时或延迟参数可以影响存储器设备140何时接通odt(占用odt)以及何时关断odt(解除占用odt)。

在一个实施例中,延迟参数对于存储器设备的目标和非目标区块可以是不同的。在一个实施例中,延迟参数对于写入和读取事务可以是不同的。在一个实施例中,odt定时对于总线的不同比特单元或区段(例如,总线的不同字节、半字节或其他部分)可以是不同的。在一个实施例中,odt定时对于不同的dram或不同的存储器设备芯片或管芯可以是不同的。因此,例如,在相同的总线、通道和/或区块上的不同的dram可以具有不同的odt定时。这样的定时基于互连的布局可以是不同的,这可以导致信号传播中的稍微不同的延迟。因此,在一个实施例中,总线的每个部分和/或到总线的每个连接可以利用独立的odt定时来控制。例如,其中每dram存取(pda)被启用的存储器子系统可以分别定义针对每个dram的odt定时。这种控制可以关于一个或多个pda命令来执行,和/或关于pda命令的使用来执行。根据可编程的odt定时,可以只根据需要并且根据其被需要的时间来应用odt,这样可以节省系统功率。如果存储器设备可以延迟何时接通和/或何时关断odt,则它们可以防止在odt不被需要时占用odt。

在一个实施例中,存储器设备140的控制器150包括odt逻辑156,以用于基于从存储器控制器120接收的命令来选择性地应用odt。例如,存储器控制器120可以发送命令逻辑152解码的存储器存取命令。基于对命令进行解码,odt逻辑156可以针对i/o142的一个或多个部分选择性地占用和/或解除占用odt146。在一个实施例中,一个或多个寄存器144存储用于odt146的odt定时参数。在一个实施例中,一个或多个寄存器144(不一定是相同的寄存器,但可能是相同的寄存器)存储用于odt146的odt值参数。odt值参数指示占用多少量的阻抗,而定时参数可以指示何时接通和关断odt。根据存储在寄存器144中的一个或多个odt设置,odt逻辑156可以基于接收到的命令来应用odt146。在一个实施例中,odt逻辑156针对读取事务与写入事务应用不同的定时参数。在一个实施例中,取决于存储器设备是目标区块还是非目标区块的部分,odt逻辑156应用不同的定时参数。

在一个实施例中,存储器设备140可以根据lpddr4的实现或其变体或衍生物来进行操作。如上所述,lpddr4使用多周期命令。在一个实施例中,存储器设备140当接收到write-1命令时,在写入事务的持续时间内接通odt146。定时可以与参数wl有关,wl在这里指代写入延迟。写入事务的持续时间包括命令本身的一段时间,包括其中存储器控制器提供要写入的数据的数据总线上的周期,以及用于写入的前同步信号值和后同步信号值。前同步信号包括写入数据的第一个边沿之前的一段时间。后同步信号包括写入数据的最后一个下降沿之后的一段时间。通常,前同步信号在写入突发(例如8比特数据)之前,并且后同步信号在写入突发之后。在一个实施例中,可编程odt定时参数使得存储器设备140能够控制何时占用与前同步信号有关的odt(例如,在接收数据之前在一定时间内决定阻抗)以及何时解除占用与后同步信号有关的odt(例如,允许足够的时间以用于对数据进行适当采样)。

针对写入描述的内容也可以以类似的方式应用于读取。在一个实施例中,目标和非目标区块的存储器设备140接收read-1,并且只有目标区块接收cas-2命令。在一个实施例中,目标区块禁用其关于read的odt,并且仅接收read-1命令的非目标区块的存储器设备将基于cl或与读取事务相关联的延迟(例如,cas延迟)提供odt端接。读取事务的持续时间包括由存储器设备将提取的数据提供给存储器控制器的一段时间,以及被编程在寄存器中的读取前同步信号值和读取后同步信号值。

传统存储器子系统可以通过在写入期间消除odt的使用来控制存储器系统功耗。应该理解的是,完全消除odt区别于如本文所述的选择性应用odt。虽然在传统写入情况中由于缺少odt,信号质量可能会劣化,但是如果存储器设备之间的距离足够小以致信号反射不会显着影响期望的信号,则这种权衡是可以容忍的。这样的假设在当前的系统中并不总是有效的,特别是在使用多设备封装的情况下。尽管存在一些传统的封装解决方案来增加移动设备中的存储器密度,同时维持设备之间足够小的距离以维护假设,但是随着存储器密度的增加,这样的解决方案趋于更昂贵和不标准。还存在更多标准和不昂贵的封装解决方案,但是随着密度增加,存储器总线上的存储器设备之间的距离也增加了,这不能维护该假设。因此,标准封装解决方案中的存储器设备之间的距离可以导致信号劣化,这是由于没有odt的信号反射。然而,通过对写入选择性地应用odt(或者类似地,选择性地对读取不应用odt),即使具有增加的存储器密度,也可以使用这种标准封装解决方案。通过对接通和关断odt的定时参数进行编程,系统可以进一步控制选择性odt的有效性。

图2是利用定时控制来对存储器系统中的存储器设备应用odt的系统的实施例的框图。系统200示出了计算设备的存储器子系统的部分,并且提供了图1的系统100的实施例的一个示例。主机210表示将会管理对系统存储器的存取的逻辑。主机210可以包括存储器控制器、或处理器或soc上的其他电路、或与处理器集成的其他电路以控制存储器存取。

存储器设备220表示存储用于主机系统来执行操作的代码和/或数据的多个设备。存储器设备220可以被组织为区块240,以促进对较大数量比特的同时存取。区块包括并行的多个存储器设备。在一个实施例中,区块240共享数据引脚、命令/地址(c/a)引脚和时钟引脚。每个区块240包括特定的一个或多个使能信号以用于在不同的区块之间进行选择。如图所示,系统200包括n个区块240。信号线的特定分组不一定物理地通过区块来进行分组。在一个实施例中,某些信号线在区块240之间被重新使用。在一个实施例中,所有存储器设备220共享相同的数据总线、命令/地址(c/a)总线,并且共享时钟或选通信号(其可以包括一个或多个信号线)。系统200可以使用使能信号(例如cke(时钟使能)和芯片选择(cs))和/或cs和其他使能信号来彼此区分是一个区块还是设备分组。因此,作为相同的区块240的部分的存储器设备220可共享相同的使能/选择信号。在涉及除了存储器子系统之外的一些东西之间的i/o接口的实现中,区块240可以通过公共总线来表示设备的一些其他分组。

存储器设备220可以被分散在多个多芯片封装(mcp)或包括多个设备的其它封装中。虽然封装内的设备可以间隔得足够近以致由于反射而导致的信号劣化的风险是可以容忍的,但是当存在多个设备封装时,由于封装之间的区块的间隔而导致信号劣化的可能性很高。在一个实施例中,相同区块240中的存储器设备220共享odt信令。

主机210包括命令逻辑212以生成对存储器设备220的命令。在一个实施例中,odt控件214表示用于控制存储器设备220内的odt的选择性操作的逻辑,并且可以是与系统100的odt逻辑类似的odt逻辑。odt控件214可以对由存储器设备220应用的定时设置进行配置以用于odt的应用。在一个实施例中,主机210例如通过查询组件的类型和/或对存储在bios(基本输入/输出系统)中的信息或提供配置信息的其他系统控件进行存取来识别用于存储器设备220的系统配置。基于配置(例如,每封装多少设备、每封装如何分配区块)和所选的目标区块(例如,确定目标区块位于哪个封装中),odt控件214可以确定选择性地改变用于除目标区块之外的一个或多个存储器区块240的odt设置。odt设置可以包括odt值,以及一个或多个可编程延迟设置。

存储器设备220包括解码器222,其表示用于接收和解码来自主机210的命令的逻辑。解码可以确定命令是否应用于存储器设备。在一个实施例中,存储器设备220基于解码器222来确定要应用odt阻抗的什么值,以及要向odt应用什么定时参数。存储器设备220将设置应用于odt226,其控制与主机210的i/o接口。在一个实施例中,存储器设备220包括寄存器224以用于设置用于odt定时的一个或多个配置参数。通过在寄存器224中提供一个或多个可写设置,odt定时设置在存储器设备220内是可编程的。

在一个实施例中,接收存储器存取命令的所有区块240改变odt设置。接收存储器存取命令的多个区块240可以是系统200中的区块的子集或全部区块。在一个实施例中,将命令发送给区块240将触发一个或多个区块来改变用于存储器事务的odt设置。存储器设备220可以被配置为将用于一段时间的odt设置改变为等于存储器存取事务的预期持续时间。存储器事务可以指代针对读取或写入存储器存取操作的交换数据的完整数量的周期。例如,读取事务可以持续足够长的时间以供每个存储器设备进行存取并且在一个或多个执行周期(时钟周期)内将信息的一个或多个比特提供给存储器控制器,标称持续时间为tcl。类似地,写入事务可以持续足够长的时间,以供存储器控制器将所有数据比特传送到所选目标存储器设备的接收缓冲器中,标称持续时间为twl。事务可以是突发长度(burstlength)(用于通过数据总线传送与存储器存取命令相关联的数据的多个周期)。

在一个实施例中,odt控件214可以基于存储器设备220与主机210之间的i/o训练来利用定时设置对odt226进行配置。例如,在一个实施例中,在引导阶段(bootphase)期间,主机210可以利用存储器设备220执行i/o的测试,以确定什么设置提供最高的信号质量。测试可以包括由存储器设备220进行的对odt226的不同的接通和关断时间的测试。基于对测试的分析,主机210可以针对每个存储器设备220对以下中的一个或多个设置进行编程。在一个实施例中,主机210对读取odt接通时间或延迟参数进行编程。在一个实施例中,主机210对读取odt关断时间或延迟参数进行编程。在一个实施例中,主机210对写入odt接通时间或延迟参数进行编程。在一个实施例中,主机210对写入odt关断时间或延迟参数进行编程。在一个实施例中,主机210经由模式寄存器组(mrs)命令对一个或多个参数进行编程以设置一个或多个模式寄存器设置。

图3a是已知的八管芯封装的实施例的框图。设备302和304都表示使用x16设备的四区块系统的已知示例。应该理解的是,x16指代具有16比特宽数据i/o总线的设备。因此,x8设备具有8比特宽的数据i/o总线,x32设备具有32比特宽的数据i/o总线,等等。作为设备302的部分的封装312以及作为设备304的部分的封装314包括八管芯封装(odp)中的存储器设备。设备302和304可以是被加工在主机系统基板或板上的存储器模块和/或部件。

如图所示,封装312包括八个彼此堆叠的管芯或存储器设备,并且被组织为四个区块(r0...r3)。设备302将存储器设备组织成从最靠近信号线的设备到距离信号线最远的设备,如:r0、r1、r2、r3、r0、r1、r2和r3。由于这些设备是xl6的,它们应该分别连接到16个dq信号线。设备302配置有连接到dq[8:23]的较低的四个设备,以及连接到dq[0:7]和dq[24:31]的较高的四个设备。设备304将存储器设备组织成从最靠近信号线的设备到距离信号线最远的设备,如:r0、r0、r1、r1、r2、r2、r3和r3。设备304配置有连接到dq[8:23]的第零、第二、第四以及第六设备,以及连接到dq[0:7]和dq[24:31]的第一、第三、第五和第七设备。

odp示出了已知的用于封装方法,其维护了不允许在多个区块上应用odt的相邻假设。因为这些设备共享封装,所以信号线到每个存储器设备的距离消除了除用于写入的目标或所选的设备之外的任何设备的端接的需要。因此,只有目标设备或目标区块需要在写入时提供端接。应该理解的是,封装312将是设备302的部分,其将包括与封装312类似的多个封装。设备304的封装314也是如此。因此,所示的区块将包括在设备的其他封装中类似定位的设备。虽然封装312和314可以消除端接的需要,但是当前的工艺技术导致了例如所示的八高堆叠(eight-highstack)的非常低的良率。低良率增加了成本,并减少了封装的采用。

图3b是安装在其中系统提供选择性片上端接控制的四管芯封装中的存储器设备的实施例的框图。在一个实施例中,存储器设备可以处于多设备封装中,其通常包括在相同封装中的不同区块的存储器设备。与图3a中所示的类似,不是具有拥有64比特宽接口(或更大)或甚至32比特宽接口的单个管芯,存储器子系统可以由所示的x16设备或x8设备制成。在一个实施例中,存储器架构使用两个独立的四设备或管芯的封装,每个都用于提供四区块x16存储器。设备306和设备308表示包含这种存储器架构的设备。设备306和308可以是存储器模块,或者可以是主机系统板本身。设备306和308示出了数据总线上的“t”拓扑,其中信号线连接器从信号线连接器分支出到两个独立的封装。与存储器区块相关联的存储器控制器可以选择性地使odt能够在“t”的两个分支上选择性地提供端接以使在写入时反射最小化。因此,系统可以在除了所选或目标设备之外(或者除了所选或目标设备之外)的设备中在每个事务的基础上来提供端接。在一个实施例中,系统不必在所有设备上提供端接,而是可以在写入时选择设备的子集来应用odt。

在一个实施例中,设备306包括封装322和324,每个封装包括被组织为总共四个区块中的两个区块的四个设备。具体而言,封装322包括区块r0和r1,而封装324包括区块r2和r3。如所示的封装322包括被组织成从距离信号线最近的设备到距离信号线最远的设备的存储器设备,如:r0、r1、r0和r1。封装322被配置有连接到dq[8:23]的较近的r0和r1设备,以及连接到dq[0:7]和dq[24:31]的较远的r0和r1设备。如所示的封装324包括被组织成从距离信号线最近的设备到距离信号线最远的设备的存储器设备,如:r3、r2、r3和r2。封装322被配置有连接到dq[8:23]的较近的r3和r2设备,以及连接到dq[0:7]和dq[24:31]的较远的r3和r2设备。

在一个实施例中,设备308包括封装326和328,每个封装包括被组织为总共四个区块中的两个区块的四个设备。具体而言,封装326包括区块r0和r1,而封装328包括区块r2和r3。如所示的封装326包括被组织成从距离信号线最近的设备到距离信号线最远的设备的存储器设备,如:r0、r0、r1和r1。封装326被配置有连接到dq[8:23]的较近的r0和r1设备,以及连接到dq[0:7]和dq[24:31]的较远的r0和r1设备。如所示的封装328包括被组织成从距离信号线最近的设备到距离信号线最远的设备的存储器设备,如r3、r3、r2和r2。封装328被配置有连接到dq[8:23]的较远的r3和r2设备,以及连接到dq[0:7]和dq[24:31]的较近的r3和r2设备。

应该理解的是,在设备306或308的情况下,可以修改存储器设备的其他配置、区块组织以及到信号线的连接。因此,这些示例是说明性的,而不是限制性的。设备306和308都采用四管芯封装(qdp)技术,其通常提供比odp好得多的良率。虽然将八个存储器芯片分成两个独立的封装防止了完全关断odt,但系统可选择性地应用odt。

考虑设备306中的odt的选择性应用的示例。考虑写入到区块r1的写入命令。在一个实施例中,r1将端接信号,因为它是目标区块,并且将吸收进入封装322的信号能量。在一个实施例中,系统还可以触发区块r3和/或区块r2来占用odt以吸收封装324中的信号能量从而通过减少反射来保持信号质量。被触发以应用odt的不同设备可以在存储器存取事务的一段时间内保持占用odt。

在一个实施例中,即使具有设备306和308的t拓扑的平衡的路由,操作条件也可以导致区块之间的负载不平衡,这可以导致odt的阻抗不匹配。在一个实施例中,相关联的存储器控制器(未具体示出)将根据本文描述的任何实施例对用于存储器设备的一个或多个odt定时或延迟设置进行配置。因此,除了基于接收的命令来选择性地应用端接之外,存储器设备可以基于配置来应用不同的odt延迟。即使在存储器设备与存储器控制器之间没有用于控制信号的外部odt引脚,存储器设备也可以提供具有可编程odt接通和关断定时的odt端接。在一个实施例中,每个存储器设备存储一个偏移,以应用于默认的写入延迟、读取延迟、写入前同步信号值或后同步信号值、和/或读取前同步信号值或后同步信号值。

图3c是其中系统提供选择性片上端接控制的具有菊花链拓扑的存储器系统的实施例的框图。将会理解的是,利用可编程的odt定时参数,区块的拓扑不限于t分支。例如,考虑菊花链拓扑的表示(这只是说明性的,不一定是生产布局)。其他配置也是可能的。

系统设计者可以基于其中将包括存储器的系统来提供不同的存储器布局。通过不同的读取odt和写入odt定时的可编程性实现了不同的布局。因此,通常可以将odt的定时定义为默认值,能够在任一方向上调整多个时钟周期,这是基于哪个定时将接通和关断每个存储器设备,从而改进设备332内的信号质量。因此,每个区块r[3:0]可以针对读取和写入定时设置而被不同地进行配置。取决于区块何时是目标区块或非目标区块,定时设置可以不同。例如,目标区块可以遵循默认值,当它是非目标区块时默认值可以被调整。

图4a是用于控制针对存储器存取的片上端接的命令编码的实施例的表示。命令表400可以更具体地是在lpddr4系统中使用的命令的实施例的示例,并且可以应用于本文描述的支持odt定时控制的存储器子系统的实施例。存储器控制器生成列出的命令以生成期望的操作。lpddr4使用多周期命令。例如,写入命令由两个周期的write-1随后是两个周期的cas-2组成(请参阅表400)。soc或者存储器控制器或者等价物(统称为“存储器控制器”)连续地或顺序地没有间隙地发送每个周期。

在一个实施例中,存储器控制器将write-1命令广播或多播到多个区块。存储器控制器可以在发送写入命令时声明芯片选择(cs)信号或其他使能信号,以确保期望的区块接收命令。该命令不一定被发送到每个区块或每个dram设备,但它可以。在一个实施例中,存储器控制器将命令发送给每封装至少一个区块。在一个实施例中,接收write-1命令的dram设备被配置为自动接通odt。dram可以使odt在写入事务的持续时间内保持为被占用,写入事务的持续时间包括用于实现操作的所有命令的所有周期。在一个实施例中,存储器控制器只将cas-2发送给接收数据的区块。因此,dram可以接收write-1命令并且占用odt,但不接收随后的cas-2命令。因此,dram将不执行该命令,但仍然可以被配置为将odt维持为被占用。

可以将类似的方法应用于读取事务。例如,存储器控制器可以将read-1命令广播或多播到两个或更多个区块。然后,存储器控制器可以将提出的cas-2命令只发送到目标区块,而另一个非目标区块不接收cas-2命令。存储器控制器可以选择目标区块和一个或多个其他区块来解除占用用于读取事务的odt。

因此,存储器控制器使得目标区块执行命令或存储器存取操作(例如,读取或写入),而一个或多个其他区块通过改变用于存储器存取事务或操作的持续时间内的odt设置来选择性地应用odt。在一个实施例中,存储器存取事务的持续时间还可以覆盖存储器存取类型(例如,读取或写入)的编程的前同步信号值和后同步信号值。

在一个实施例中,存储器子系统默认所有区块应用odt用于写入。例如,当端接到vss时存储器子系统可以默认所有区块应用odt。因此,如果总线处于三态或vss状态,则将不会有功耗。rtt_park指代连接到端接的高值电阻,其可以消除除了目标区块以外的激活odt的需要。目标区块可以使用较低的电阻值(例如,rtt_wr)。尽管这样的实现不需要在非目标区块处选择性地控制odt,但高值电阻可能降低信号完整性并增加功耗。在一个实施例中,存储器设备支持odt的不同的值。在一个实施例中,系统可以在t的每个分支上选择一个区块,并且对odt使用较高值的电阻(例如,将会被用于rtt_park的值)。在一个实施例中,系统可以使用相同的rtt_park值以用于非目标区块上的读取和写入。然而,对于对非目标区块的读取命令,将odt设置为rtt_park值可能导致非最佳解决方案。因此,存储器控制器可以发送read-1广播命令以使存储器设备在非目标区块上将rtt_park改变为rtt_nom。在一个实施例中,存储器控制器可以发送read-1命令来在非目标区块上根据需要来选择性地启用odt。

考虑根据表400的lpddr4中的写入命令的具体示例。在lpddr4中,系统使用两个命令,每个命令使用两个周期来进行写入或读取操作。因此,写入操作通过发送两个周期的write-1命令随后是两个周期的cas-2,而采用了四个周期。在一个实施例中,当存储器设备看到写入命令(write-1)(或者当其接收到针对其选择的命令)时,其启用odt。存储器控制器可以通过在该命令时触发cs信号(write-1的周期1上,cs=h)来启用多个区块上的odt。在一个实施例中,设备将在突发长度内占用或启用odt,并且然后关断odt。

因此,系统可以在共享的c/a总线上发送write-1并同时将cs发送到多个区块。接收到伴随着cs的write-1命令的设备可以激活或占用odt。然后,系统将cas-2发送到所选的或目标区块。如果区块在write-1命令时接收到的cs(write-1的第一周期上,cs=h)但没有接收到cas-2cs信号(cas-2的第一周期上,cs=l),则存储器设备将使odt保持被激活,但不执行命令或操作。在一个实施例中,只有在cas-2命令的第二周期上cs=h的所选的存储器设备才执行存储器存取操作。因此,在一个实施例中,未被选择用于odt的区块接收用于write-1的csl-l,以及用于cas-2的csl-l。选择用于odt但不是目标区块的区块接收用于write-1的csh-l,以及用于cas-2的csl-l。目标区块接收用于write-1的csh-l,以及用于cas-2的csh-l。存储器控制器可以选择性地生成这些信号中的所有信号以选择性地触发期望的odt。在一个实施例中,存储器控制器激活用于每封装至少一个区块的odt。

将会理解的是,系统可以类似地选择性地启用用于读取操作的odt。例如,存储器控制器可以选择性地启用用于read-1和cas-2命令的cs信号以触发由某些区块(例如,一个或多个非目标区块)启用以及识别目标区块以执行读命令的odt。在一个实施例中,存储器设备最初不使得odt被占用。在一个实施例中,接收read-1命令的存储器设备将基于cas-2命令来确定是否占用odt。例如,在一个实施例中,存储器设备期望在read-1命令之后立即接收cas-2命令。因此,如果存储器设备接收具有选择信号设置为真的read-1命令,随后接收具有选择信号设置为假的cas-2命令,则存储器设备可以占用odt。接收具有选择信号设置为真的read-1命令随后接收具有选择信号设置为真的cas-2命令的存储器设备将解除占用odt,或留置odt以使之解除占用,并执行命令。在一个实施例中,对于写入操作,接收具有选择信号设置为真的write-1随后接收具有选择信号设置为假的cas-2的区块将占用odt并且使其被占用而不执行命令。接收具有选择信号设置为真的write-1随后接收具有选择信号设置为真的cas-2的区块将占用odt并执行该命令。因此,在一个实施例中,对于读取而言,缺少cas-2命令可以触发区块来占用odt,而对于写入而言,接收write-1命令可以触发区块占用odt。存储器设备的注册(即,存储器设备所属的区块接收cs信号以及在c/a总线上发送的命令)或缺乏注册可以用于确定存储器设备应该应用odt的哪种状态。

图4b是用于控制针对存储器存取的片上端接值的表的实施例的表示。寄存器410表示本地寄存器或存储区域,例如用于存储器设备的模式寄存器,其可被用于编程期望的odt值以便在给定区块上进行写入。在一个实施例中,寄存器410可以指示用于每个设备的端接的阻抗的值。寄存器410基于op[0:2]的设置显示不同的值。基于op[2:0]的设置,odt可以被禁用[000]、具有固有值[001]、或者被除以某个倍数(除以2、3、4、5或6,分别从[010]至[110])。在一个实施例中,可以由设置寄存器410来选择各种不同的端接电阻值。

在一个实施例中,rtt_park值可以是大约240欧姆,并且rtt_nom值可以是大约40欧姆(其可以与寄存器410中的不同的值相对应,取决于rzq的固有值)。可以基于预期的阻抗匹配对rtt_nom进行设置以提供到信号的端接。rtt_park的值可以被设置得足够低以抑制大部分噪声(并因此不被认为是高阻抗状态),但是不会像rtt_nom值一样进行端接。将rtt_park设置为高于rtt_nom的好处是,较高的值将得到较少的电流。应该理解的是,基于接收到的命令或者是否接收到命令,可以将不同的区块和/或dram设置为不同的电阻值。

图4c是用于控制针对存储器存取的片上端接定时的存储器存取命令编码的实施例的表示。命令表420示出了根据图4a的命令表400的write-1和read-1命令的一个实施例。在命令表400和命令表420中的相对应的命令之间存在的差异被强调。更具体地,虽然命令表400中的write-1和read-1两者的第二时钟沿上的ca3具有“v”或“don’tcare”的值,但是命令表420中的第二时钟沿上的ca3可以指示存取命令的类型。不同类型的命令可以用信号通知存储器设备为odt使用不同的定时或偏移。

例如,取决于ca3的逻辑值(其中h选择一个写入类型并且l选择另一个),write-1可以被分别地解释为write-1a和write-1b。类似地,取决于ca3的逻辑值(其中h选择一种写入类型,l选择另一种),read-1可以被分别解释为read-1a和read-1b。因此,ca3的逻辑值可以是关于如何占用odt的命令编码(例如,odt定时类型)中的标识符或指示。在一个实施例中,对于非目标区块,write-1a可以指示将偏移a用于odt定时,并且write-1b可以指示将偏移b用于odt定时。类似地,read-1a可以指示将偏移a用于odt定时,并且read-1b可以指示将偏移b用于odt定时。因此,当非目标区块接收没有伴随的cas-2命令的存取命令时,存储器设备可以根据发送1a命令还是1b命令来应用odt定时的所指示的类型。

图4d是用于控制针对存储器存取的片上端接定时的表的实施例的表示。在一个实施例中,读取odt的值可以被定义为与用于写入的odt的值是相同的,其可以是存储在寄存器(例如,模式寄存器11)中的值。如果所存储的值不是最佳的,则在一个实施例中,可以定义另一个寄存器来对用于非目标区块的读取odt值进行编程。使用相同的值可以很好地处理具有平衡负载的t拓扑。如果拓扑是菊花链或其他非t拓扑结构,或者负载是不平衡的,则不同的值将是最佳的。也可以将非目标区块中的odt接通时间的持续时间设置为与目标区块不同大小的窗口。在一个实施例中,系统支持基于用于写入的wl的可编程偏移和基于用于读取的cl的可编程偏移。在一个实施例中,偏移关于延迟时间段(例如,wl或cl)在负方向和正方向两个方向上覆盖了至少若干(例如2、4、8或其他数目)附加的周期。

寄存器430表示可以存储指示odt定时的一个或多个值的寄存器的一个实施例。在一个实施例中,通过识别指示寄存器中的条目的地址(例如432、434、436和438)或用于存取定时值的寄存器,来存取寄存器430。在一个实施例中,条目432识别具有偏移442的值的写入odton定时。偏移442可以更具体地识别wl之前用于启用odt的时钟周期的数量。在一个实施例中,条目434识别具有偏移444的值的写入odtoff定时。偏移444可以更具体地识别wl之后用于禁用odt的时钟周期的数量。在一个实施例中,条目436识别具有偏移446的值的读取odton定时。偏移446可以更具体地识别cl之前用于启用odt的时钟周期的数量。在一个实施例中,条目438识别具有偏移448的值的读取odtoff定时。偏移448可以更具体地识别cl之后用于禁用odt的时钟周期的数量。

在一个实施例中,针对具有值的范围的偏移,可以定义四个模式寄存器或模式寄存器设置(其中每个条目432、434、436和438代表不同的模式寄存器或模式寄存器设置)。在一个实施例中,偏移442、444、446和448的值可以是从1tck到ntck,其中n可以是例如8、12、16或一些其他数字。在一个实施例中,odtoff定时可以被应用为除了wl/cl+bl(突发长度)之外的附加的偏移。可编程odt设置可以使排序(例如,非目标区块)能够控制odt的接通和/或关断定时,以防止在不需要时应用odt。因此,可以只根据需要提供可编程的odt定时以用于odt。例如,存储器设备可以应用odt足够的时间以减少信号反射,并以足够的精度接通和/或关断odt,另外不使用应用odt所需的功率。

在一个实施例中,取决于要应用的odt定时的类型,寄存器430包括两个或更多个端接偏移,如由命令编码所指示的。例如,寄存器430可以包括a和b条目以用于每个odt定时类型(写入ona和写入onb、写入offa、写入offb等等)。odt定时类型的这种选择可以根据图4c的命令表420。

图5a是用于针对写入操作选择性地应用片上端接的过程的实施例的流程图。存储器子系统可以包括存储数据的多个存储器设备或dram,以及将存储器存取命令提供给存储器设备的存储器控制器。存储器设备被组织成存储器区块,一起响应于存储器存取命令的多个设备形成区块。在一个实施例中,区块以影响端接的对称性的方式被分离,例如使用不同的多设备封装、不平衡负载、非对称拓扑或其他对称不匹配。

过程510的操作发生在存储器子系统中。在一个实施例中,存储器控制器从主机系统处理器接收请求,该请求包括写入存储器的操作512。在一个实施例中,存储器控制器将系统中的多个存储器区块中的一个识别为用于写入命令的目标区块,514。存储器控制器将基于数据是如何映射到存储器设备的存储器阵列,来识别目标存储器区块。

在一个实施例中,存储器控制器基于被识别为目标区块的区块来确定什么区块应该占用odt,516。例如,存储器控制器可以遵循指导或规则来确保每存储器设备封装至少一个区块占用odt以用于写入操作。在一个实施例中,存储器控制器进一步确定每个区块应该占用(engage)odt的什么值,518。在某些实现中,非目标存储器设备可以通过应用与目标区块所应用的值不同的odt的值来提供足够的端接。例如,在一个实施例中,作为目标区块的部分的存储器设备可以驱动rtt_wr,而如果其不是目标区块的部分,则其可以驱动rtt_nom(电阻的标称值)。

在一个实施例中,存储器控制器确定区块应当应用的odt定时的值,并且选择性地对针对区块的odt的定时设置进行编程,520。odt定时的编程可以是根据本文描述的可编程odt定时的任何实施例的。在一个实施例中,定时设置是基于事务的类型以及区块是目标区块还是非目标区块的。在一个实施例中,定时设置的值是基于确定针对写入事务的较高信号完整性的训练。

基于确定哪些区块应当占用odt,存储器控制器触发多个区块以占用odt,522。如上所述,存储器控制器可以通过使能或芯片选择信号来触发存储器设备以占用odt。在一个实施例中,存储器控制器可以发出独立的命令以使存储器设备占用odt。目标区块将执行写入命令,而被选择以占用odt的所有区块使odt被占用,524。根据可编程定时参数,区块将选择性地占用odt以用于写入事务。可为写入和读取事务使用不同的定时参数。

图5b是用于针对读取操作选择性地应用片上端接的过程的实施例的流程图。存储器子系统可以包括存储数据的多个存储器设备或dram,以及将存储器存取命令提供给存储器设备的存储器控制器。存储器设备被组织成存储器区块,一起响应于存储器存取命令的多个设备形成区块。在一个实施例中,区块以影响端接的对称性的方式被分离,例如使用不同的多设备封装、不平衡负载、非对称拓扑或其他对称不匹配。

过程530的操作发生在存储器子系统中。在一个实施例中,存储器控制器从主机系统处理器接收请求,该请求包括用于从存储器中读取的操作,532。在一个实施例中,存储器控制器将系统中的多个存储器区块中的一个识别为用于读取命令的目标区块,534。存储器控制器将基于数据如何映射到存储器设备的存储器阵列来识别目标存储器区块。在一个实施例中,存储器控制器基于被识别为目标区块的区块来确定什么区块应该占用odt和/或改变odt设置。在一个实施例中,存储器控制器进一步确定将应用odt的每个区块应该应用odt的什么值,538。

在一个实施例中,存储器控制器确定区块应当应用的odt定时的值,并且选择性地对针对区块的odt的定时设置进行编程,540。odt定时的编程可以是根据本文描述的可编程odt定时的任何实施例的。在一个实施例中,定时设置是基于事务的类型以及区块是目标区块还是非目标区块的。在一个实施例中,定时设置的值是基于确定针对读取事务的较高信号完整性的训练。

在一个实施例中,基于作出的决定,存储器控制器触发一个或多个非驱动或非目标区块来占用和/或改变odt。因此,存储器控制器可以选择一个或多个区块在目标区块将数据发送到存储器控制器时来占用端接以减少反射。如上所述,存储器控制器可以通过使用使能或芯片选择信号来选择性地触发特定的存储器设备以占用odt或者改变odt设置。在一个实施例中,存储器控制器可以发出独立的命令以使存储器设备占用odt。目标区块将执行读取命令,而被选择以占用odt的任何区块使odt被占用,544。根据可编程定时参数,区块将选择性地占用odt以用于读取事务。可为写入和读取事务使用不同的定时参数。

图5c是用于针对写入操作选择性地占用片上端接的过程的实施例的流程图。存储器子系统可以包括存储数据的多个存储器设备或dram,以及将存储器存取命令提供给存储器设备的存储器控制器。存储器设备被组织成存储器区块,一起响应于存储器存取命令的多个设备形成区块。在一个实施例中,区块以影响端接的对称性的方式被分离,例如使用不同的多设备封装、不平衡负载、非对称拓扑或其他对称不匹配。

过程550的操作发生在存储器子系统中。在一个实施例中,作为存储器子系统中的多个区块中的一个中的多个存储器设备中的一个的存储器设备从存储器控制器接收写入命令,552。上面的许多讨论指代执行操作的“存储器区块”。这样的表达将被理解为简写,指代区块内的每个存储器设备执行响应于该命令的操作这一事实。如上所述,在一个实施例中,当存储器控制器选择要接收命令的设备时,存储器设备接收存储器存取命令。在一个实施例中,基于解码接收到什么类型的命令,存储器设备响应于接收到命令来执行对odt设置的改变。

因此,存储器设备对输入的存储器存取命令进行解码并确定是写入命令,并且被选择以用于接收命令。响应于解码,存储器设备可以确定要占用odt的什么值,554。在一个实施例中,存储器设备对用于存储器设备的模式寄存器(mr)进行存取以确定mr设置中选择了odt的什么值。

在一个实施例中,存储器设备确定要应用odt定时的什么值,556。odt定时的应用可以是根据本文描述的可编程odt定时的任何实施例的。在一个实施例中,定时设置是基于事务的类型以及区块是目标区块还是非目标区块的。在一个实施例中,定时设置的值是基于确定针对写入事务的较高信号完整性的训练。在一个实施例中,odt定时是基于存储在一个或多个寄存器中的一个或多个定时参数,并且可由存储器控制器来设置。

在一个实施例中,响应于接收到写入命令,存储器设备根据所指示的odt值来占用odt,558。在一个实施例中,作为目标区块的部分的存储器设备可以驱动rtt_wr,而如果其不是目标区块的部分,则其可以驱动rtt_nom。因此,并不是应用odt的所有区块都会驱动相同量的电阻。

在一个实施例中,存储器设备确定其是否是用于写入命令的目标区块的部分,560。在一个实施例中,存储器设备基于其是否在随后的存储器存取命令(例如,在如上所述的cas-2命令中)中被选择来做出决定。在一个实施例中,存储器设备可以从存储器控制器接收指示目标区块的另一个命令。如果存储器设备是目标区块的部分,则562“是”分支,存储器设备将odt维持为被占用并执行命令564。如果存储器设备不是目标区块的部分,则562“否”分支,存储器设备将odt维持为被占用,但是不执行命令,566。存储器设备将根据可编程定时参数选择性地占用用于写入事务的odt。可为写入和读取事务使用不同的定时参数。

图5d是用于针对读取操作选择性地占用片上端接的过程的实施例的流程图。存储器子系统可以包括存储数据的多个存储器设备或dram,以及用于将存储器存取命令提供给存储器设备的存储器控制器。存储器设备被组织成存储器区块,一起响应于存储器存取命令的多个设备形成区块。在一个实施例中,区块以影响端接的对称性的方式被分离,例如使用不同的多设备封装、不平衡负载、非对称拓扑或其他对称不匹配。

过程570的操作发生在存储器子系统中。在一个实施例中,作为存储器子系统中的多个区块中的一个中的多个存储器设备中的一个的存储器设备从存储器控制器接收读取命令,572。如上所述,在一个实施例中,当存储器控制器选择要接收命令的设备时,存储器设备接收存储器存取命令。在一个实施例中,存储器设备对输入的存储器存取命令进行解码并确定其是读取命令,并且其被选择用于接收命令。响应于接收到读取命令并且对命令进行解码,存储器设备可以应用默认odt设置,574。在一个实施例中,默认设置是用于禁用用于读取事务的odt。在一个实施例中,存储器设备在接收到读取命令时使odt被解除占用,并且如果其在读取命令之后直接接收到的cas-2命令中没有被注册或选择,则占用odt。

在一个实施例中,存储器设备确定要应用odt定时的什么值,576。odt定时的应用可以是根据本文描述的可编程odt定时的任何实施例的。在一个实施例中,定时设置是基于事务是什么类型以及区块是目标区块还是非目标区块的。在一个实施例中,定时设置的值是基于确定针对读取事务的较高信号完整性的训练的。在一个实施例中,odt定时是基于存储在一个或多个寄存器中的一个或多个定时参数的,并且可由存储器控制器来设置。

在一个实施例中,存储器设备确定其是否是用于读取命令的目标区块的部分,578。在一个实施例中,存储器设备做出该确定是基于其是否在随后的存储器存取命令(例如,在如上所述的cas-2命令中)中被选择。在一个实施例中,存储器设备可以从存储器控制器接收指示目标区块的另一个命令。如果存储器设备是目标区块的部分,则580“是”分支,存储器设备禁用odt,582,并且维持odt被解除占用并执行读取命令584。如果存储器设备不是目标区块的部分,则580“否”分支,存储器设备确定是否占用odt或改变odt设置,586。在一个实施例中,存储器子系统中的其它区块将不被选择,并因此不接收读取命令。这样的区块将维持默认的odt设置,例如禁用。在一个实施例中,如果默认值是电阻的某个值,则被选择接收读命令但不是目标区块的区块将占用odt或增加odt值。非目标区块将odt维持为被占用以用于读取事务,但不执行读取命令588。存储器设备将根据可编程定时参数选择性地占用用于读取事务的odt。可为写入和读取事务使用不同的定时参数。

图6是其中可以实现片上端接控制的计算系统的实施例的框图。系统600表示根据本文描述的任何实施例的计算设备,并且可以是膝上型计算机、台式计算机、服务器、游戏或娱乐控制系统、扫描仪、复印机、打印机、路由或交换设备、或其他电子设备。系统600包括处理器620,其提供用于系统600的处理、操作管理和指令的执行。处理器620可以包括任何类型的微处理器、中央处理单元(cpu)、处理核心或提供用于系统600的处理的其他处理硬件。处理器620控制系统600的整体操作,并且可以是或包括一个或多个可编程通用或专用微处理器、数字信号处理器(dsp)、可编程控制器、专用集成电路(asic)、可编程逻辑设备(pld)等,或这些设备的组合。

存储器子系统630表示系统600的主存储器,并且提供由处理器620执行的代码或者用于执行例程的数据值的临时存储。存储器子系统630可以包括以下一个或多个存储器设备:例如只读存储器(rom)、闪存、一种或多种随机存取存储器(ram)、或其他存储器设备、或这些设备的组合。存储器子系统630此外还存储和托管操作系统(os)636以提供用于执行系统600中的指令的软件平台。另外,从存储器子系统630存储并执行其他指令638以提供系统600的逻辑和处理。os636和指令638由处理器620执行。存储器子系统630包括存储器设备632,存储器设备632存储数据、指令、程序或其他项。在一个实施例中,存储器子系统包括存储器控制器634,其是用于生成命令并将其发布到存储器设备632的存储器控制器。应该理解的是,存储器控制器634可以是处理器620的物理部分。

处理器620和存储器子系统630耦合到总线/总线系统610。总线610是表示通过适当的桥、适配器和/或控制器连接的任何一个或多个独立的物理总线、通信线/接口、和/或点对点连接的抽象。因此,总线610可以包括例如以下中的一个或多个:系统总线、外围组件互连(pci)总线、超传输或工业标准架构(isa)总线、小型计算机系统接口(scsi)总线、通用串行总线(usb)、或电气和电子工程师协会(ieee)标准1394总线(通常称为“火线”)。总线610的总线也可以与网络接口650中的接口相对应。

系统600还包括耦合到总线610的一个或多个输入/输出(i/o)接口640、网络接口650、一个或多个内部大容量存储设备660、以及外围接口670。i/o接口640可以包括一个或多个接口组件,通过该组件用户与系统600进行交互(例如,视频、音频和/或字母数字接口)。网络接口650向系统600提供用于通过一个或多个网络与远程设备(例如,服务器、其他计算设备)进行通信的能力。网络接口650可以包括以太网适配器、无线互连组件、usb(通用串行总线)、或其他基于有线或无线标准的接口或专用接口。

存储装置660可以是或包括用于以非易失性方式存储大量数据的任何常规介质,例如一个或多个磁性、固态或基于光学的光盘、或其组合。存储装置660将代码或指令和数据662保持在持续状态(即,尽管系统600的电力中断,该值仍被保留)。通常,存储器660可以被认为是“存储器”,尽管存储器630是将指令提供给处理器620的执行或操作存储器。虽然存储装置660是非易失性的,但是存储器630可以包括易失性存储器(即,如果系统600的电力中断,数据的值或状态是不确定的)。

外围接口670可以包括上面没有具体提到的任何硬件接口。外围设备通常指代从属地连接到系统600的设备。从属连接是其中系统600提供在其上执行操作的以及用户与其进行交互的软件和/或硬件平台的连接。

在一个实施例中,存储器子系统630是多区块存储器系统。在一个实施例中,系统600包括odt控制680,其使系统能够根据本文描述的任何实施例选择性地控制在不同区块处的odt的激活。odt的选择性应用可以包括针对命令类型以及区块是否是目标区块的每个区块特定的odt值和odt定时设置。odt控制680可以根据本文讨论的odt定时的任何实施例来执行odt定时控制。

图7是其中可以实现片上端接控制的移动设备的实施例的框图。设备700表示移动计算设备,例如,计算平板计算机、移动电话或智能手机、无线使能的电子阅读器、可穿戴计算设备或其他移动设备。应该理解的是,通常示出了组件中的某些组件,并且在设备700中并未示出这样的设备的全部组件。

设备700包括处理器710,其执行设备700的主处理操作。处理器710可以包括一个或多个物理设备,例如,微处理器、应用处理器、微控制器、可编程逻辑设备、或其他处理单元。由处理器710执行的处理操作包括在其上执行应用和/或设备功能的操作平台或操作系统的执行。处理操作包括与和人类用户或和其它设备的i/o(输入/输出)相关的操作、与功率管理相关的操作、和/或与将设备700连接到其他设备相关的操作。处理操作还可以包括与音频i/o、和/或显示i/o相关的操作。

在一个实施例中,设备700包括音频子系统720,其表示与将音频功能提供给计算设备相关联的硬件(例如,音频硬件和音频电路)和软件(例如,驱动、编码解码器)组件。音频功能可以包括扬声器和/或头戴式耳机输出、以及麦克风输入。用于这样的功能的设备可以被集成到设备700中,或连接到设备700。在一个实施例中,用户通过提供由处理器710接收和处理的音频命令来与设备700进行交互。

显示子系统730表示提供用于用户与计算设备进行交互的视觉和/或触觉显示的硬件(例如,显示器设备)和软件(例如,驱动)组件。显示子系统730包括显示接口732,其包括用于将显示提供给用户的特定的屏幕或硬件设备。在一个实施例中,显示接口732包括与处理器710分开的逻辑以用于执行与显示相关的至少一些处理。在一个实施例中,显示子系统730包括将输出和输入两者提供给用户的触摸屏设备。在一个实施例中,显示子系统730包括将输出提供给用户的高清(hd)显示器。高清可以指代具有大约100ppi(每英寸像素)或更高的像素密度的显示器,并且可以包括例如全高清(例如,1080p)、视网膜显示、4k(超高清或uhd)或其他等的格式。

i/o控制器740表示与和用户的交互相关的硬件设备和软件组件。i/o控制器940可以用于管理作为音频子系统720和/或显示子系统730的部分的硬件。另外,i/o控制器740示出了用于连接到设备700的附加设备的连接点,通过该连接点用户可以与系统进行交互。例如,可以被附接到设备700的设备可以包括麦克风设备、扬声器或立体声系统、视频系统或其他显示设备、键盘或小键盘设备、或与特定应用(例如,读卡器或其他设备)一起使用的其他i/o设备。

如上提到的,i/o控制器740可以与音频子系统720和/或显示子系统730进行交互。例如,通过麦克风或其他音频设备的输入可以提供输入或命令以用于设备700的一个或多个应用或功能。另外,可以提供音频输出而不是视频输出,或除了视屏输出以外可以提供音频输出。在另一示例中,如果显示子系统包括触摸屏,则显示设备也用作输入设备,其可以至少部分地由i/o控制器740来管理。在设备700上还可以有附加按钮或开关以提供由i/o控制器740管理的i/o功能。

在一个实施例中,i/o控制器740管理以下设备:例如,加速度计、摄像机、光传感器或其他环境传感器、陀螺仪、全球定位系统(gps)、或可以被包括在设备700中的其他硬件。输入可以是直接用户交互的部分,以及将环境输入提供给系统以用于影响其操作(例如,过滤噪声、调节显示以用于亮度检测、将闪光灯应用于摄像机、或其它特征)。在一个实施例中,设备700包括功率管理750,其管理电池功率使用、电池的充电以及与省电操作相关的特征。

存储器子系统760包括用于将信息存储在设备700中的存储器设备762。存储器子系统760可以包括非易失性(如果到存储器设备的电力被中断,则状态不改变)或易失性(如果到存储器设备的电力被中断,则状态是不确定的)存储器设备。存储器760可以存储应用数据、用户数据、音乐、图片、文档、或其他数据、以及与系统700的应用和功能的执行相关的系统数据(无论是长期的还是暂时性的)。在一个实施例中,存储器子系统760包括存储器控制器764(其还可以被认为是系统700的控制的部分,并且可以潜在地被认为是处理器710的部分)。存储器控制器764包括调度器以生成和发出命令来控制存储器设备762。

连接770包括使设备700能够与外部设备进行通信的硬件设备(例如,无线和/或有线连接器和通信硬件)和软件组件(例如,驱动、协议栈)。外部设备可以是独立的设备,例如,其他计算设备、无线接入点或基站、以及外围设备(例如,头戴式耳机、打印机)或其他设备。

连接770可以包括多个不同类型的连接。概括而言,设备700被示出为具有蜂窝连接772和无线连接774。蜂窝连接772通常指代由无线运营商提供的蜂窝网络连接,例如经由gsm(全球移动通信系统)或变型或衍生物、cdma(码分多址)或变型或衍生物、tdm(时分复用)或变型或衍生物、lte(长期演进-也称为“4g”)、或其他蜂窝服务标准。无线连接774指代不是蜂窝的无线连接,并且可以包括个域网(例如,蓝牙)、局域网(例如,wifi)、和/或广域网(例如,wimax)或其他无线连接。无线通信指代通过使用调制的电磁辐射通过非固态介质的数据的传输。有线通信通过固态通信介质而发生。

外围连接780包括用于进行外围连接的硬件接口和连接器以及软件组件(例如,驱动、协议栈)。应该理解的是,设备700可以是到其他计算设备的外围设备(“去向”782),以及具有连接到设备700的外围设备(“来自”784)。设备700通常具有“对接(docking)”连接器以用于连接到其他计算设备,出于例如在设备700上管理(例如,下载和/或上传、改变、同步)内容的目的。另外,对接连接器可以允许设备700连接到允许设备700控制例如到视听或其他系统的内容输出的某些外围设备。

除了专属对接连接器或其他专属连接硬件以外,设备700可以经由常用或基于标准的连接器来进行外围连接780。常用类型可以包括通用串行总线(usb)连接器(其可以包括任何数量的不同的硬件接口)、包括迷你显示端口(mdp)的显示端口、高清多媒体接口(hdmi)、火线、或其他类型。

在一个实施例中,存储器子系统760是多区块存储器系统。在一个实施例中,系统700包括odt控制766,其使系统能够根据本文描述的任何实施例选择性地控制在不同区块处的odt的激活。odt的选择性应用针对命令类型以及区块是否是目标区块,可以包括每个区块特定的odt值和odt定时设置。odt控制766可以根据本文讨论的odt定时的任何实施例来执行odt定时控制。

在一个方面中,一种具有片上端接(odt)的存储器设备包括:硬件接口,其耦合到由被组织成存储器区块的多个存储器设备共享的存储器总线;以及逻辑,其用于在所述存储器总线上接收存储器存取命令,所述存储器存取命令指向要执行该命令的目标区块,所述逻辑进一步用于,响应于接收所述存储器存取命令,根据odt延迟设置来选择性地占用odt以用于存储器存取操作;其中,所述odt延迟设置包括用于针对读取和写入事务来设置不同的odt定时值的可编程设置。

在一方面中,所述odt延迟设置包括定时偏移值。在一方面中,所述定时偏移值包括至少一个读取odt定时值,所述至少一个读取odt定时值包括用于对在列地址选择(cas)延迟之前的接通时间进行调整的偏移、用于对在cas延迟之后的关断时间进行调整的偏移、或两者。在一方面中,所述定时偏移值包括至少一个写入odt定时值,所述至少一个写入odt定时值包括用于对在写入延迟之前的接通时间进行调整的偏移、用于对在写入延迟之后的关断时间进行调整的偏移、或两者。在一方面中,所述定时偏移值包括除写入延迟加上突发长度延迟、或cas延迟加上突发长度延迟、或两者以外的写入延迟。在一方面中,所述定时偏移值包括1到8个时钟周期(tck)的偏移值。在一方面中,所述odt延迟设置包括基于所述存储器设备与相关联的存储器控制器之间的i/o训练而被编程的值。在一方面中,所述逻辑用于选择性地占用odt,包括用于针对不执行所述命令的非目标区块设置odt延迟设置。在一方面中,所述逻辑用于响应于在没有接收伴随的cas-2命令的前提下接收读取或写入命令,而根据可编程odt延迟设置来选择性地占用odt。在一方面中,所述逻辑用于基于所述存储器存取命令的命令编码中的标识符而选择性地占用odt。在一方面中,所述标识符用于识别odt定时类型。在一方面中,还包括:寄存器,其用于存储odt延迟设置。在一方面中,用于存储所述odt延迟设置的所述寄存器包括用于存储模式寄存器组(mrs)设置的模式寄存器。在一方面中,所述odt延迟设置包括用于针对不同的区块设置不同的定时值的可编程设置。在一方面中,所述odt延迟设置包括用于针对不同的dram(动态随机存取存储器)设备设置不同的定时值的可编程设置。在一方面中,所述odt延迟设置包括用于针对不同的通道设置不同的定时值的可编程设置。在一方面中,所述odt延迟设置包括用于针对不同的字节设置不同的定时值的可编程设置。在一方面中,所述odt延迟设置包括用于针对不同的半字节设置不同的定时值的可编程设置。

在一方面中,一种具有片上端接(odt)控制的系统包括:存储器控制器,其用于生成存储器存取命令;以及耦合到所述存储器控制器的多个存储器设备,所述存储器设备被组织成存储器区块,每个存储器设备包括用于从所述存储器控制器接收存储器存取命令的逻辑,所述存储器存取命令指向要执行该命令的目标区块,所述逻辑进一步用于,响应于接收所述存储器存取命令,根据odt延迟设置来选择性地占用odt(片上端接)以用于针对一个或多个非目标区块的存储器存取操作,其中,所述odt延迟设置包括用于针对读取和写入事务来设置不同的odt定时值的可编程设置。

在一方面中,一种用于控制片上端接(odt)的方法包括:在耦合到由被组织成存储器区块的多个存储器设备共享的存储器总线的存储器设备处接收存储器存取命令;在所述存储器设备处确定其是否是由所述存储器存取命令识别的目标区块的部分;以及响应于接收所述存储器存取命令,根据odt延迟设置来选择性地占用odt以用于针对一个或多个非目标区块的存储器存取操作;其中,所述odt延迟设置包括用于针对读取和写入事务来设置不同的odt定时值的可编程设置。

在所述系统的一方面中,所述系统将包括根据上面关于所述存储器设备所阐述的任何实施例的存储器设备。在所述方法的一方面中,所述方法将包括根据上面关于所述存储器设备所阐述的任何实施例的操作。在一方面中,一种制品包括计算机可读存储介质,所述计算机可读存储介质具有存储在其上的内容,所述内容在被存取时引起用于执行根据所述方法的任何实施例的用于控制odt的方法的操作的执行。在一方面中,一种装置包括用于执行操作以执行用于控制odt的方法的单元,根据所述方法的任何实施例。

在一方面中,一种用于控制片上端接(odt)的存储器控制器包括:硬件接口,其耦合到由被组织成存储器区块的多个存储器设备共享的存储器总线;以及逻辑,其用于在所述存储器总线上发送存储器存取命令,所述存储器存取命令指向要执行该命令的目标区块,所述存储器存取命令用于使存储器设备进一步根据odt延迟设置来选择性地占用odt以用于存储器存取操作;其中,所述odt延迟设置包括用于针对读取和写入事务来设置不同的odt定时值的可编程设置。

在一方面中,所述odt延迟设置包括定时偏移值。在一方面中,所述定时偏移值包括至少一个读取odt定时值,所述至少一个读取odt定时值包括用于对在列地址选择(cas)延迟之前的接通时间进行调整的偏移、用于对在cas延迟之后的关断时间进行调整的偏移、或两者。在一方面中,所述定时偏移值包括至少一个写入odt定时值,所述至少一个写入odt定时值包括用于对在写入延迟之前的接通时间进行调整的偏移、用于对在写入延迟之后的关断时间进行调整的偏移、或两者。在一方面中,所述定时偏移值包括除写入延迟加上突发长度延迟、或cas延迟加上突发长度延迟、或两者以外的写入延迟。在一方面中,所述定时偏移值包括1到8个时钟周期(tck)的偏移值。在一方面中,所述odt延迟设置包括基于所述存储器设备与相关联的存储器控制器之间的i/o训练而被编程的值。在一方面中,所述存储器设备用于选择性地占用odt,包括用于针对不执行所述命令的非目标区块设置odt延迟设置。在一方面中,所述存储器设备用于响应于在没有接收伴随的cas-2命令的前提下接收读取或写入命令,而根据可编程odt延迟设置来选择性地占用odt。在一方面中,所述存储器设备用于基于所述存储器存取命令的命令编码中的标识符而选择性地占用odt。在一方面中,所述标识符用于识别odt定时类型。在一方面中,所述存储器设备还包括:寄存器,其用于存储odt延迟设置。在一方面中,还包括用于经由针对所述存储器设备的模式寄存器的模式寄存器组(mrs)设置来提供odt延迟设置的逻辑。在一方面中,所述odt延迟设置包括用于针对不同的区块设置不同的定时值的可编程设置。在一方面中,所述odt延迟设置包括用于针对不同的dram(动态随机存取存储器)设备设置不同的定时值的可编程设置。在一方面中,所述odt延迟设置包括用于针对不同的通道设置不同的定时值的可编程设置。在一方面中,所述odt延迟设置包括用于针对不同的字节设置不同的定时值的可编程设置。在一方面中,所述odt延迟设置包括用于针对不同的半字节设置不同的定时值的可编程设置。

在一方面中,一种用于控制片上端接(odt)的方法,包括:选择针对存储器存取命令的目标区块;以及将所述存储器存取命令发送到耦合到由被组织成存储器区块的多个存储器设备共享的存储器总线的存储器设备,发送所述存储器存取命令用于使所述存储器设备确定其是否是所述目标区块的部分,并且根据odt延迟设置来选择性地占用odt以用于存储器存取操作;其中,所述odt延迟设置包括用于针对读取和写入事务来设置不同的odt定时值的可编程设置。

在第二方法的一方面中,所述方法包括根据以上关于所述存储器控制器阐述的任何实施例的操作。在一方面中,一种制品包括计算机可读存储介质,所述计算机可读存储介质具有存储在其上的内容,所述内容在被存取时引起操作的执行以执行根据所述第二方法的任何实施例的用于控制odt的方法。在一方面中,一种装置包括用于执行操作以执行根据所述第二方法的任何实施例的用于控制odt的方法的单元。

本文中示出的流程图提供了各种处理动作的序列的示例。流程图可以指示由软件或固件例程执行的操作,以及物理操作。在一个实施例中,流程图可以示出可以以硬件和/或软件实现的有限状态机(fsm)的状态。尽管以特定的序列或顺序示出,但是除非另有指示,否则动作的顺序可以被修改。因此,所示出的实施例应该只被理解为是示例,并且该过程可以以不同的顺序来执行,并且一些动作可以并行地来执行。另外,在各种实施例中,一个或多个动作可以被忽略;因此,并非所有的动作在每个实施例中都是必需的。其他过程流是可能的。

在本文中所描述的各种操作或功能的程度上,其可以被描述或定义为软件代码、指令、配置和/或数据。内容可以是直接可执行文件(“对象”或“可执行”形式)、源代码、或差异代码(“增量”或“补丁”代码)。本文中所描述的实施例的软件内容可以经由具有存储在其上的内容的制品来提供,或经由操作通信接口以经由该通信接口发送数据的方法来提供。机器可读存储介质可以使机器执行所描述的功能或操作,并且包括以由机器(例如,计算设备、电子系统等)可存取的形式存储信息的任何机制,例如,可记录/不可记录的介质(例如,只读存储器(rom)、随机存取存储器(ram)磁盘存储介质、光存储介质、闪存存储器设备等)。通信接口包括与硬连线、无线、光学等介质接合以与另一设备进行通信的任何机制,例如,存储器总线接口、处理器总线接口、互联网连接、盘控制器等。通信接口可以通过提供配置参数和/或发送用于准备通信接口的信号的方式来进行配置,所述通信接口提供描述软件内容的数据信号。通信接口可以经由一个或多个命令或发送到通信接口的信号来进行存取。

本文中所描述的各种组件可以是用于执行所描述的操作或功能的单元。本文中所描述的每个组件都包括软件、硬件或这些的组合。组件可以被实现为软件模块、硬件模块、专用硬件(例如,应用特定的硬件、专用集成电路(asic)、数字信号处理(dsp)等)、嵌入式控制器、硬连线电路等。

除了本文中所描述的内容之外,可以对本发明所公开的实施例和实现方式进行各种修改而不脱离本发明的范围。因此,本文中的说明和示例应当被解释为说明性的而不是限制性意义的。本发明的范围应该仅通过参考以上的权利要求来测量。

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