使用端口对端口环回来提供DRAM系统的存储器训练以及相关方法、系统和装置与流程

文档序号:17899297发布日期:2019-06-13 16:13阅读:202来源:国知局
使用端口对端口环回来提供DRAM系统的存储器训练以及相关方法、系统和装置与流程

优先权要求

本申请要求于2014年1月24日提交且题为“systemsandmethodsfortrainingmemory(用于训练存储器的系统和方法)”的美国临时专利申请s/n.61/930,980的优先权,该申请通过援引全部纳入于此。

本申请还要求于2015年1月5日提交且题为“providingmemorytrainingofdynamicrandomaccessmemory(dram)systemsusingport-to-portloopbacks,andrelatedmethods,systems,andapparatuses(使用端口对端口环回来提供动态随机存取存储器(dram)系统的存储器训练以及相关方法、系统和装置)”的美国专利申请s/n.14/589,145的优先权,该申请通过援引全部纳入于此。

背景

i.公开领域

本公开的技术一般涉及存储器系统。

ii.

背景技术:

计算系统依赖于存储器来进行存储和操作两者。计算系统用于操作的一种常见存储器类型是随机存取存储器(ram)。ram有两种不同类型——静态ram(sram)和动态ram(dram)。dram依赖于存储器阵列中的电容器上存在或不存在电荷来指示位值。例如,如果电容器被充电,则位值被认为是逻辑一(1)。如果电容器未被充电,则位值被认为是逻辑零(0)。由于电容器缓慢地丢失电荷,因此应用周期性刷新。当供电终止时,所有电容器放电,并且存储器丢失dram中存在的任何数据。

制造工艺的变动可能导致产生不完美dram的变动,因为并非dram模块中的每个元件都可按预期工作。然而,当提供关于此类变动的知识时,计算系统可以容易地补偿这些变动。例如,计算系统可生成更大或更小的电压来对电容器进行充电,可提供对等待时间的补偿,或者甚至可避免向/从完全缺陷位单元写入/读取的任何尝试。但是,在计算系统可采取此类补救步骤之前,计算系统需要确定哪些dram存储器阵列元件(例如,个体位单元)是可操作的、以及哪些特质可能与特定dram存储器阵列元件和/或与用于与这些dram存储器阵列元件通信的路径相关联。相应地,作为非限定性示例,计算系统可执行训练操作以针对定时和性能来优化至dram存储器阵列元件的链路。

常规训练方法依赖于对dram存储器阵列元件的串行测试。例如,在常规写测试中,发起至dram存储器阵列元件的写命令,向该dram存储器阵列元件写入数据,并且随后从该dram存储器阵列元件读取数据。训练状态机(或软件)随后可将写数据与读数据作比较,并且确定是否修改(例如,递增或递减)正在训练的参数。虽然此过程是有效的,但此过程可能需要大量的引导存储器来实现,并且因在可作出比较之前必须发出dram存储器访问写命令和读命令而可能是耗时的。而且,该比较步骤在可确定最终的最优值之前可能被迭代多次。由此,用于训练存储器的改进的技术可能是期望的。

公开概述

本文所公开的诸方面实现了使用端口对端口环回来提供动态随机存取存储器(dram)系统的存储器训练。还公开了相关方法、系统和装置。在一示例性方面,dram系统内的第一端口经由环回连接耦合至第二端口。训练信号从片上系统(soc)被发送给第一端口,并且通过该环回连接被传递给第二端口而无需被写入dram系统的存储器阵列或从dram系统的存储器阵列读取。该训练信号随后被返回给soc,在此可由soc的闭环训练引擎检查。可记录对应于硬件参数的训练结果,并且可重复该过程直至在该闭环训练引擎处达成该硬件参数的最优结果。通过使用端口对端口环回配置,可较快速地且以较低的引导存储器使用来训练关于定时、功率的dram系统参数以及与dram系统相关联的其他参数。

在另一方面,提供了一种用于提供dram系统的存储器训练的方法。该方法包括由dram系统的第一端口从soc接收训练信号。该方法进一步包括由该dram系统的第一端口经由环回连接向该dram系统的第二端口提供该训练信号。该方法还包括由该dram系统的第二端口向该soc提供该训练信号。

在另一方面,提供了一种用于提供dram系统的存储器训练的系统。该系统包括通信地耦合至dram系统的soc。该dram系统包括经由环回连接通信地耦合的第一端口和第二端口。该dram系统被配置成由该dram系统的第一端口从该soc接收训练信号。该dram系统被进一步配置成由该dram系统的第一端口经由该环回连接向该dram系统的第二端口提供该训练信号。该dram系统还被配置成由该dram系统的第二端口向该soc提供该训练信号。

在另一方面,提供了一种包括dram系统的装置。该dram系统被配置成由dram系统的第一端口从soc接收训练信号。该dram系统被进一步配置成由该dram系统的第一端口经由该环回连接向第二端口提供该训练信号。该dram系统还被配置成由该dram系统的第二端口向该soc提供该训练信号。

附图简述

图1是通信地耦合至片上系统(soc)的常规动态随机存取存储器(dram)系统的框图,这在本领域中是公知的;

图2是与图1的dram系统和soc相关联的示例性训练过程的简化流程图;

图3是本文所公开的用于使用端口对端口环回连接来提供存储器训练的示例性soc和dram系统的框图;

图4是图3的soc和dram系统的示例性实现的详细电路图;

图5是解说用于使用端口对端口环回连接来提供存储器训练的示例性操作的流程图;以及

图6是用于使用端口对端口环回连接来提供存储器训练的可包括图3和4的soc和/或dram系统的示例性的基于处理器的系统的框图。

详细描述

现在参照附图,描述了本公开的若干示例性方面。措辞“示例性”在本文中用于表示“用作示例、实例或解说”。本文中描述为“示例性”的任何方面不必被解释为优于或胜过其他方面。

本文所公开的诸方面实现了使用端口对端口环回来提供动态随机存取存储器(dram)系统的存储器训练。还公开了相关方法、系统和装置。在一示例性方面,dram系统内的第一端口经由环回连接耦合至第二端口。训练信号从片上系统(soc)被发送给第一端口,并且通过该环回连接被传递给第二端口而无需被写入dram系统的存储器阵列或从dram系统的存储器阵列读取。该训练信号随后被返回给soc,在此可由soc的闭环训练引擎检查。可记录对应于硬件参数的训练结果,并且可重复该过程直至在该闭环训练引擎处达成该硬件参数的最优结果。通过使用端口对端口环回配置,可较快速地且以较低的引导存储器使用来训练关于定时、功率的dram系统参数以及与dram系统相关联的其他参数。

在叙述本文所公开的用于使用端口对端口环回来提供dram系统的存储器训练的方法、系统和装置的示例性方面之前,参照图1和2提供常规训练技术的概述。以下参照图3开始讨论与用于使用端口对端口环回来训练dram系统的方法、系统和装置相关联的示例性硬件和操作。

就此,图1是通信地耦合至soc102的dram系统100的常规训练方案的框图,这在本领域中是公知的。如所解说的,soc102提供端口104(0)-104(x),其中每个端口耦合至由dram系统100提供的相应端口106(0)-106(x)。如本文所使用的,“端口”是指可使用接收机(例如,dram系统100)处的共用选通脉冲或时钟(未示出)来重定时的自定时单元。在一些方面,端口104(0)-104(x)和106(0)-106(x)中的每个端口被配置成每次传递特定位数的信息。作为非限定性示例,端口104(0)-104(x)和106(0)-106(x)可被配置成每次传递八(8)位信息,在此情形中,端口104(0)-104(x)和106(0)-106(x)中的每个端口可被称为“字节通道”。

soc102和dram系统100进一步由分别连接命令和时钟(“ca/ck”)元件110和112的ca/ck线108耦合。ca/ck线108可被用于在soc102与dram系统100之间传达命令和处理器时钟信号。dram系统100中的端口106(0)-106(x)通信地耦合至dram系统100内的存储器阵列114。在一些方面,存储器阵列114可包括用于指示逻辑值的电容器(未示出)或其他元件。将理解,如本文所提供的一些方面可提供更多或更少端口104(0)-104(x)和/或106(0)-106(x)。在一些方面,soc102和/或dram系统100可包括为清楚起见而未在图1中示出的附加元件。

如上所述,soc102可能需要在启动时确定在访问dram系统100的元件时是否需要因例如制造偏差或特质而采取任何纠正或补偿动作。例如,soc102可能需要确定是否有任何定时或性能问题与dram系统100的端口106(0)-106(x)或至端口106(0)-106(x)的通信路径相关联。相应地,作为非限定性示例,soc102可执行训练操作来优化dram系统100的端口106(0)-106(x)以优化定时和/或性能。

图2提供了与图1的soc102和dram系统100相关联的常规训练过程的简化流程图。为清楚起见,在描述图2的操作时引用了图1的元件。本文所描述的训练过程可被用于设置与例如由与dram系统100处于通信的soc102使用的定时和/或电压相关联的硬件参数(未示出)。

可作为“伪开环”过程使用从dram系统100到soc102的读回来执行常规训练过程。如图2中所见,设立命令(cmd)200可从soc102传达给dram系统100的端口106(0)-106(x)中所选定的一个端口。随后向dram系统100提供写命令(写cmd)202以向端口106(0)-106(x)中所选定的这个端口发送训练信号(未示出)。接着,向dram系统100提供读命令(读cmd)204,并且随着该训练信号从dram系统100的端口106(0)-106(x)中所选定的这个端口被读回到soc102而发生读回206。soc102的训练模块(未示出)随后评估已从端口106(0)-106(x)中所选定的这个端口读回的训练信号。基于该评估,该训练信号可被递增(inc)或递减(dec)(如训练inc/dec208所指示的)或者以其他方式被修改,并且该过程迭代直至达成最优结果。随后可基于该最优结果来设置端口106(0)-106(x)中所选定的这个端口的硬件参数以供将来使用端口106(0)-106(x)中所选定的这个端口。

虽然图1和2所解说的诸方面可提供dram系统100的有效训练,但训练过程可能较慢,因为训练信号必须由dram系统100接收,写入存储器阵列114,并且随后从存储器阵列114读取并由dram系统100传送。而且,由于图2的训练过程一般在soc102启动期间发生,该过程可能需要大量的引导存储器,这可能使得软件招致附加开销。

就此,图3解说了本文公开的用于使用端口对端口环回连接来提供存储器训练的示例性soc300和dram系统302,由此避免在训练期间访问图1的dram系统100的存储器阵列114的需要。如图3中所见,soc300和dram系统302提供与图1的soc102和dram系统100的元件相对应的元件,包括soc300的端口304(0)-304(x)以及dram系统302的端口306(0)-306(x)和存储器阵列308。dram系统302进一步提供环回连接310(0)-310(1),其分别耦合毗邻端口306(0)-306(1)和306(2)-306(x)。soc300还包括闭环训练引擎312,其在一些方面可向dram系统302发送训练信号314并评估接收自dram系统302的训练信号314,如以下参照图5更详细讨论的。

在一些方面,使用图3的soc300和dram系统302的训练包括向dram系统302的第一端口(例如,端口306(0))发送训练信号314。训练信号314随后经由环回连接(例如,环回连接310(0))被中继给dram系统302的第二端口(例如,端口306(1)),并且被发送回soc300。随后将接收自第二端口306(1)的训练信号314与发送给第一端口306(0)的训练信号314作比较以用于训练评估。由于训练信号314无需被写入存储器阵列308,因此与图2的常规训练过程形成对比,图3的端口对端口训练可被认为是“闭环”的。在一些方面,环回连接310(0)-310(1)可以是双向的。例如,在第一训练阶段,训练信号314可从soc300发送给端口306(0)并从端口306(1)接收,而在第二训练阶段,训练信号314可被发送给端口306(1)并从端口306(0)接收。

图4中解说了图3的环回连接310(0)-310(1)的示例性实现。在图4中,soc402的端口400(0)-400(1)连接至dram系统406的端口404(0)-404(1)。dram系统406的端口404(0)和404(1)中的每个端口分别包括复用器408(0)和408(1)。soc402的闭环训练引擎410可将dram系统406置于环回模式中,其中复用器408(0)-408(1)选择来自毗邻端口404(0)、404(1)的数据,而不是从dram系统406的存储器阵列412检索数据。以此方式,soc402可经由环回来接收训练信号(未示出)而不是接收来自存储器阵列412的数据。在一示例性方面且如所解说的,可针对从端口404(1)到端口404(0)的环回将复用器408(0)设置成值“1”,并且可针对从端口404(0)到端口404(1)的环回将复用器408(1)设置成值“1”。将理解,在一些方面可提供其他电路系统来实现环回连接而不脱离本公开的范围。

图5是解说图3的soc300和dram系统302的用于使用端口对端口环回连接来提供存储器训练的示例性操作的流程图。在描述图5时,为清楚起见而引述图3的元件。在图5中,操作始于soc300可任选地禁用第一端口306(0)和第二端口306(1)上的存储器操作(未示出)(框500)。soc300随后可配置dram系统302的第一端口306(0)和第二端口306(1)以经由环回连接310(0)来通信(框502)。以此方式,第一和第二端口306(0)和306(1)可被用于训练,而端口306(2)-306(x)可继续被用于soc300与dram系统302之间的任务模式通信。

soc300随后可递增或递减由闭环训练引擎312提供的训练信号314(框504)。在一些方面,训练信号314可初始表示一定范围的一个或多个增量训练信号314值中的较低值或较高值。作为非限定性示例,训练信号314可对应于定时训练参数或电压训练参数中的一者或多者。第一端口306(0)随后从soc300(例如,闭环训练引擎312)接收训练信号314(框506)。第一端口306(0)进而经由环回连接310(0)向第二端口306(1)提供训练信号314(框508)。第二端口306(1)随后向soc300(例如,向闭环训练引擎312)提供训练信号314(框510)。以此方式,闭环训练引擎312在一些方面可经由环回来传送训练信号314同时测量dram系统302性能的属性。在一些方面,训练信号314可由第二端口306(1)接收,经由环回连接310(0)提供给第一端口306(0),并且由第一端口306(0)提供给soc300。可采用此替换环回路径作为以上所描述的环回路径的替代或补充。

一旦从第二端口306(1)接收到训练信号314,闭环训练引擎312就可确定对应于训练信号314的一个或多个训练结果(框512)。作为非限制性示例,(诸)训练结果可包括在闭环训练引擎312对训练信号314的传送和接收期间流逝的时钟循环数目和/或检测到的错误数目。soc300随后可确定是否应当进一步递增或递减训练信号314(框514)。例如,soc300可能在执行“参数扫掠”的过程中,其中一系列可能训练信号314被迭代地测试。由此,如果soc300在判定框514确定应当进一步递增或递减训练信号314(即,参数扫掠未完成),则处理返回到框504,并且该过程对于训练信号314的递增或递减值的重复。以此方式,训练信号314可从初始较低值被迭代地修改成越来越高的值或者反之,并且可针对每个训练信号314记录训练结果。

然而,如果soc300在判定框514确定不应当进一步递增或递减训练信号314,则soc300可基于这一个或多个训练结果来确定dram系统302的硬件参数(框516)。在一些方面,确定dram系统302的硬件参数可包括soc300标识一系列的一个或多个递增训练信号中第一个返回定时异常或错误消息的训练信号314(即,第一个失败的递增训练信号)。soc300可进一步标识一系列的一个或多个递增训练信号中最后一个返回定时异常或错误消息的训练信号314(即,最后一个失败的递增训练信号)。在一些方面,soc300随后可基于第一个失败的递增训练信号与最后一个失败的递增训练信号之间的中值或中点来确定硬件参数。

将理解,以上关于图5所描述的操作可针对端口306(0)-306(x)的全部或子集重复。将进一步理解,在已针对端口306(0)-306(x)中的一个端口确定硬件参数(即,作为非限制性示例,定时参数或电压参数)之后,可针对端口306(0)-306(x)中的同一端口关于不同硬件参数重复以上所描述的操作。

根据本文所公开的诸方面使用端口对端口环回来提供dram系统的存储器训练可在任何基于处理器的设备中提供或集成到任何基于处理器的设备中。不作为限定的示例包括机顶盒、娱乐单元、导航设备、通信设备、固定位置数据单元、移动位置数据单元、移动电话、蜂窝电话、计算机、便携式计算机、台式计算机、个人数字助理(pda)、监视器、计算机监视器、电视机、调谐器、无线电、卫星无线电、音乐播放器、数字音乐播放器、便携式音乐播放器、数字视频播放器、视频播放器、数字视频碟(dvd)播放器、以及便携式数字视频播放器。

就此,图6解说了根据图3中的诸方面的可提供soc300和/或dram系统302的基于处理器的系统600的示例。在一些方面,基于处理器的系统600可包括图3的soc300。在图6的示例中,基于处理器的系统600包括一个或多个中央处理单元(cpu)602,其各自包括一个或多个处理器604。(诸)cpu602可具有耦合至(诸)处理器604以用于对临时存储的数据进行快速访问的高速缓存存储器606。(诸)cpu602被耦合到系统总线608,且可将基于处理器的系统600中所包括的诸设备互耦。如众所周知的,(诸)cpu602通过在系统总线608上交换地址、控制、和数据信息来与这些其他设备通信。

其它设备可被连接到系统总线608。如图6中所解说的,作为示例,这些设备可包括存储器系统610、一个或多个输入设备612、一个或多个输出设备614、一个或多个网络接口设备616、以及一个或多个显示器控制器618。(诸)输入设备612可包括任何类型的输入设备,包括但不限于输入键、开关、语音处理器等。(诸)输出设备614可包括任何类型的输出设备,包括但不限于音频、视频、其他视觉指示器等。(诸)网络接口设备616可以是被配置成允许往来于网络620的数据交换的任何设备。网络620可以是任何类型的网络,包括但不限于:有线或无线网络、私有或公共网络、局域网(lan)、广域网(wlan)、或因特网。(诸)网络接口设备616可被配置成支持所期望的任何类型的通信协议。存储器系统610可包括存储器控制器622以及一个或多个存储器单元624(0)-624(n)。在一些方面,存储器系统610可包括根据图3的示例性方面的dram系统302。

(诸)cpu602还可被配置成通过系统总线608访问(诸)显示器控制器618以控制发送给一个或多个显示器626的信息。(诸)显示器控制器618经由一个或多个视频处理器628向(诸)显示器626发送要显示的信息,视频处理器628将要显示的信息处理成适于(诸)显示器626的格式。(诸)显示器626可包括任何类型的显示器,包括但不限于:阴极射线管(crt)、液晶显示器(lcd)、等离子显示器等。

本领域技术人员将进一步领会,结合本文所公开的诸方面描述的各种解说性逻辑块、模块、电路和算法可被实现为电子硬件、存储在存储器中或另一计算机可读介质中并由处理器或其它处理设备执行的指令、或这两者的组合。作为示例,本文中描述的设备可用在任何电路、硬件组件、集成电路(ic)、或ic芯片中。本文所公开的存储器可以是任何类型和大小的存储器,且可被配置成存储所需的任何类型的信息。为清楚地解说这种可互换性,以上已经以其功能性的形式一般地描述了各种解说性组件、框、模块、电路和步骤。此类功能性如何被实现取决于具体应用、设计选择和/或加诸于整体系统上的设计约束。技术人员可针对每种特定应用以不同方式来实现所描述的功能性,但此类实现决策不应被解读为致使脱离本发明的范围。

结合本文中公开的诸方面描述的各种解说性逻辑块、模块、以及电路可用设计成执行本文中描述的功能的处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或其他可编程逻辑器件、分立的门或晶体管逻辑、分立的硬件组件、或其任何组合来实现或执行。处理器可以是微处理器,但在替代方案中,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器还可以被实现为计算设备的组合,例如dsp与微处理器的组合、多个微处理器、与dsp核心协同的一个或多个微处理器、或任何其它此类配置。

本文所公开的各方面可被体现为硬件和存储在硬件中的指令,并且可驻留在例如随机存取存储器(ram)、闪存、只读存储器(rom)、电可编程rom(eprom)、电可擦可编程rom(eeprom)、寄存器、硬盘、可移动盘、cd-rom、或本领域中所知的任何其它形式的计算机可读介质中。示例性存储介质被耦合到处理器,以使得处理器能从/向该存储介质读取/写入信息。在替换方案中,存储介质可以被整合到处理器。处理器和存储介质可驻留在asic中。asic可驻留在远程站中。在替换方案中,处理器和存储介质可作为分立组件驻留在远程站、基站或服务器中。

还注意到,本文任何示例性方面中描述的操作步骤是为了提供示例和讨论而被描述的。所描述的操作可按除了所解说的顺序以外的众多不同顺序来执行。而且,在单个操作步骤中描述的操作实际上可在多个不同步骤中执行。另外,在示例性方面中讨论的一个或多个操作步骤可被组合。应理解,如对本领域技术人员显而易见地,在流程图中解说的操作步骤可进行众多不同的修改。本领域技术人员还将理解,可使用各种不同技艺和技术中的任何一种来表示信息和信号。例如,贯穿上面描述始终可能被述及的数据、指令、命令、信息、信号、位(比特)、码元、和码片可由电压、电流、电磁波、磁场或磁粒子、光场或光粒子、或其任何组合来表示。

提供对本公开的先前描述是为使得本领域任何技术人员皆能够制作或使用本公开。对本公开的各种修改对本领域技术人员而言将容易是显而易见的,并且本文中所定义的普适原理可被应用到其他变型而不会脱离本公开的精神或范围。由此,本公开并非旨在被限定于本文中所描述的示例和设计,而是应被授予与本文中所公开的原理和新颖特征一致的最广义的范围。

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