CN106104698B - 用于产生具有可编程延迟的动态随机存取存储器(dram)命令的存储器物理层接口逻辑 - Google Patents
用于产生具有可编程延迟的动态随机存取存储器(dram)命令的存储器物理层接口逻辑 Download PDFInfo
- Publication number
- CN106104698B CN106104698B CN201580015602.7A CN201580015602A CN106104698B CN 106104698 B CN106104698 B CN 106104698B CN 201580015602 A CN201580015602 A CN 201580015602A CN 106104698 B CN106104698 B CN 106104698B
- Authority
- CN
- China
- Prior art keywords
- command
- training
- memory
- delay
- programmable
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000012549 training Methods 0.000 claims abstract description 178
- 230000004044 response Effects 0.000 claims description 39
- 238000000034 method Methods 0.000 claims description 32
- 238000012545 processing Methods 0.000 claims description 27
- 238000013461 design Methods 0.000 claims description 18
- 230000011664 signaling Effects 0.000 claims description 12
- 238000005192 partition Methods 0.000 claims description 5
- 230000003111 delayed effect Effects 0.000 claims description 3
- 230000008878 coupling Effects 0.000 claims description 2
- 238000010168 coupling process Methods 0.000 claims description 2
- 238000005859 coupling reaction Methods 0.000 claims description 2
- 230000001934 delay Effects 0.000 abstract description 13
- 238000010586 diagram Methods 0.000 description 19
- 238000004519 manufacturing process Methods 0.000 description 14
- 230000008901 benefit Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 8
- 239000000872 buffer Substances 0.000 description 7
- 230000000694 effects Effects 0.000 description 5
- 238000012360 testing method Methods 0.000 description 5
- 230000015572 biosynthetic process Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000011960 computer-aided design Methods 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 101150071746 Pbsn gene Proteins 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000012942 design verification Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000010899 nucleation Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4234—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1689—Synchronisation and timing concerns
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Dram (AREA)
Abstract
与存储器物理层接口(PHY)(140、205)联合实施的多个寄存器(222)可用于存储指示一个或多个命令和一个或多个延迟(415、515、535、540)的一个或多个指令字(300)。实施于所述存储器PHY中的训练引擎(220)可产生全速可编程命令(410、420、430、510、520、525)序列,以便递送到外部存储器(210),且基于所述一个或多个延迟来延迟所述命令。可基于所述一个或多个指令字而产生所述全速可编程命令序列。
Description
技术领域
本公开大体上涉及处理系统,且更特定来说,涉及处理系统中的存储器物理层接口。
背景技术
例如系统芯片(SOC)等处理系统使用存储器来存储数据或指令以供稍后使用。举例来说,SOC可包括处理单元,例如中央处理单元(CPU)、图形处理单元(GPU),且加速处理单元(APU)可从存储器读取指令或数据、使用所述指令或数据执行操作,且随后将结果写回到存储器中。处理系统可包括存储器物理层接口以便控制对例如动态随机存取存储器(DRAM)等存储器模块的存取,所述存储器模块可用于存储信息,使得所存储的信息可由处理单元在处理系统的操作期间存取。处理系统中的存储器物理层接口常规上被称作“存储器PHY”。存储器控制器通常用于控制存储器PHY的操作。
在可从DRAM准确地读取数据或将数据准确地写入到DRAM之前,通常使用在存储器PHY与DRAM之间的接口上交换的序列来训练存储器PHY。训练序列可包括多个命令,例如读取命令、写入命令、激活命令,或用于执行其它操作的其它命令。存储器PHY或DRAM可需要训练序列中的命令相隔指定延迟时间间隔。举例来说,当写入命令后面跟着读取命令时,DRAM可需要写入命令与读取命令之间8个周期的延迟。延迟时间间隔对于不同类型的命令可不同。举例来说,两个写入命令之间的延迟时间间隔可不同于写入命令与读取命令之间的延迟时间间隔。延迟时间间隔对于不同类型的DRAM也可不同,且可能会在引入新的DRAM设计或时序标准时改变。
发明内容
本发明提供了一种加速处理设备,其包括:存储器物理层接口,其用于耦合到具有基于外部存储器的设计的针对命令的时序要求的外部存储器;多个寄存器,其与所述存储器物理层接口联合实施,所述多个寄存器用于存储指示至少一个命令和至少一个可编程延迟的至少一个指令字,其中基于所述外部存储器的所述时序要求来对所述至少一个可编程延迟编程并且所述至少一个可编程延迟是在执行所述命令之前要流逝的时间间隔;以及第一可编程训练引擎,其实施于所述存储器物理层接口中以:响应于控制器写入开始位,读取至少一个指令字;基于所述至少一个指令字而产生全速可编程训练命令序列以便递送到所述外部存储器;基于所述至少一个可编程延迟来延迟所述命令;执行所述命令;响应于所述可编程训练命令序列接收所述外部存储器产生的信号;基于所接收到的信号调整所述存储器物理层接口的读取/写参数;和响应于确定要终止所述可编程训练命令序列而将所述开始位复位。
本发明还提供了一种执行命令序列方法,其包括:响应于控制器写入开始位,在实施于存储器物理层接口中的第一训练引擎处读取至少一个指令字,所述至少一个指令字指示至少一个命令和至少一个可编程延迟,其中基于外部存储器的时序要求来对所述至少一个可编程延迟编程并且所述至少一个可编程延迟是在执行所述至少一个命令之前要流逝的时间间隔;基于所述至少一个指令字而使用所述第一训练引擎产生全速可编程训练命令序列以便递送到所述外部存储器,其中将基于所述至少一个可编程延迟来延迟所述命令,并且其中所述至少一个命令包括第一、第二和第三命令,并且还包括:执行所述第一命令;在相对于执行所述第一命令的第一延迟之后执行所述第二命令;和在相对于执行所述第二命令的第二延迟之后执行所述第三命令,且其中所述第一延迟和所述第二延迟的和满足所述第一命令和所述第三命令的等待时间要求;和响应于确定要终止所述可编程训练命令序列而将所述开始位复位;在所述第一训练引擎处,响应于命令的所述可编程训练命令序列接收所述外部存储器产生的信号;和在所述第一训练引擎处,基于所接收的信号调整所述存储器物理层接口的读/写参数。
附图说明
通过参考附图,可更好地理解本公开,且使其众多特征和优势对于本领域技术人员显而易见。在不同图式中使用相同的参考符号会指示类似或等同的项目。
图1是根据一些实施方案的包括一个或多个中央处理单元(CPU)处理器核心和图形处理单元(GPU)的加速处理单元(APU)的框图。
图2是根据一些实施方案的包括存储器物理层接口(PHY)和动态随机存取存储器(DRAM)的处理单元的一部分的框图。
图3是根据一些实施方案的可存储于寄存器中的指令字的实例的框图。
图4是示出根据一些实施方案的可由训练引擎发出的命令序列的图。
图5是示出根据一些实施方案的可由训练引擎发出的命令序列的图。
图6是根据一些实施方案的执行命令序列的方法的流程图。
图7是根据一些实施方案的可在例如图1中所示的APU等处理单元中实施的训练存储器PHY的方法的流程图。
图8是示出根据一些实施方案的用于设计和制造实施处理系统的组件的至少一部分的集成电路装置的方法的流程图。
具体实施方式
常规的训练序列使用通过预定延迟时间间隔分隔的预定命令序列。因此,无法修改常规的训练序列(例如)以便考虑到不同DRAM设计的不同时序要求。然而,如本文论述,发出到DRAM的命令之间的延迟时间间隔对于不同类型的命令可不同,且延迟时间间隔对于不同类型的DRAM也可不同,且可能会在引入新的DRAM设计时改变。为了考虑不同存储器PHY或DRAM设计的时序要求,可通过实施于存储器PHY中的可编程训练引擎来灵活地界定训练序列。可使用指令字对训练引擎进行编程,所述指令字包括用于指示命令的第一字段和用于指示将在执行命令之前流逝的延迟时间间隔的第二字段。指令字的一些实施方案还可包括指示以下各者的其它字段:命令所使用的DRAM地址、命令所使用的DRAM的分区、命令的重复计数,和类似者。存储器PHY的一些实施方案包括寄存器,以便保持指令字和可被写入来起始存储在寄存器中的指令字的执行的开始位。
将延迟时间间隔并入到指令字中会允许程序员创建训练序列,所述训练序列满足不同类型的DRAM的要求,并且支持开发可满足未来的DRAM设计的尚未知晓的要求的未来训练序列。此外,虽然两个命令可需要相隔特定延迟时间间隔,但存储器PHY或DRAM的一些实施方案可允许在两个命令之间执行另一种类型的命令。可因此将命令的指令字中所指示的延迟时间间隔设定为多个值,所述多个值允许在执行中间命令的同时仍满足另外两个命令的延迟时间间隔要求。
图1是根据一些实施方案的包括一个或多个中央处理单元(CPU)105、110处理器核心和图形处理单元(GPU)115的加速处理单元(APU)100的框图。APU 100可实施为系统芯片(SOC)。CPU处理器核心105、110可独立地、同时地或并行地执行指令。虽然图1中所示的APU100包括两个CPU处理器核心105、110,但受益于本公开的本领域普通技术人员应了解,APU100中的处理器核心的数目与设计选择有关。APU 100的一些实施方案可包括多于或少于图1中所示的两个CPU处理器核心105、110。GPU 115用于创建既定用于输出到显示器的视觉图像。GPU 115的一些实施方案还可包括多个处理核心(未示出)。
CPU处理器核心105包括基本输入/输出系统(BIOS)120,其可实施于硬件、固件、软件或其组合中。BIOS 120的一些实施方案用于(例如)响应于包括APU 100的系统被通电或启动而初始化或测试APU100的组件。BIOS 120还可用于加载操作系统。可使用一个或多个数据管道(图1中未示出)将由BIOS 120产生的指令或命令传达到APU100中的其它位置。BIOS 120可替代地实施于CPU处理器核心110或APU 100内的其它位置中。
图1中所示的APU 100还包括其它SOC逻辑125。其它SOC逻辑125的一些实施方案可包括DMA引擎(未示出),以便产生地址且初始化存储器读取或写入循环、以便执行存储器间的数据传递,或以便在CPU处理器核心105、110或GPU 115之间传递数据。其它SOC逻辑125还可包括路由逻辑、相干逻辑,或用于实施其它功能性的逻辑。其它SOC逻辑125的一些实施方案包括存储器控制器(MC)130来协调APU 100与其它存储器(例如,外部动态随机存取存储器(DRAM)135)之间的数据流。存储器控制器130包括用于控制从外部存储器读取信息以及将信息写入到外部存储器的逻辑。存储器控制器130还可包括刷新逻辑,其用于将信息周期性地重新写入到DRAM,使得保持DRAM的存储器单元中的信息。
存储器控制器130可使用经由存储器物理层接口140(其可被称作存储器PHY 140)传输的信号来控制例如DRAM 135等其它存储器模块的操作。存储器PHY 140包括用于驱动信号的电路,所述信号操纵可耦合到APU 100的其它存储器模块的操作。举例来说,存储器PHY 140可提供控制例如DRAM 135等存储器模块的读取、写入、刷新或擦除部分的信号。存储器PHY 140可能够在不同操作点处操作,所述操作点可由存储器PHY 140的操作频率和/或操作电压确定。举例来说,其它SOC逻辑125可包括时钟145,其提供用于操纵存储器PHY140和/或存储器控制器130和参考电压(VDD)150中的同步的时钟信号,所述参考电压操纵由存储器PHY 140和/或存储器控制器130使用的电压。
应该训练存储器PHY 140以便提高存储器PHY 140与DRAM135之间的通信期间的读取或写入性能。存储器PHY 140因此包括集成的训练控制逻辑155,其用于:产生训练序列或命令;将训练序列或命令传输到DRAM 135;响应于传输的训练或命令而接收由DRAM135产生的信号;以及基于来自DRAM 135的响应而调节存储器PHY140的读取/写入参数。将训练控制逻辑155集成到存储器PHY 140中与使用BIOS 120中实施的算法来训练存储器PHY 140的常规实践相比具有若干优势。由于不需要在BIOS 120与存储器PHY 140之间的数据管道上传输训练序列,所以可减少或消除对由训练控制逻辑155使用的训练算法的后处理和/或播种。
训练控制逻辑155的一些实施方案包括微控制器和一个或多个训练引擎,以便产生训练序列且使用所述训练序列来配置存储器PHY140的操作。举例来说,训练控制逻辑155可包括训练引擎,所述训练引擎产生全速可编程命令序列以便递送到DRAM 135。训练控制逻辑155还可包括一个或多个寄存器(或具有其存取权)来存储指令字,所述指令字包括识别可用于形成全速可编程序列的一个或多个命令的信息。所述指令字还可包括指示与命令相关联的延迟的信息,以及其它信息。训练控制逻辑155随后可将所指示的延迟插入在命令序列中的命令与其它命令之间,如本文论述。
图2是根据一些实施方案的包括存储器PHY 205和DRAM210(例如,图1中所示的存储器PHY 140和DRAM 135)的处理单元的一部分200的框图。存储器PHY 205包括控制器215,所述控制器用于基于训练算法来控制存储器PHY 205的读取训练和写入训练以便与DRAM210通信。控制器215的一些实施方案可实施于硬件、固件、软件或其组合中。在一些实施方案中,控制器215还可被称作微控制器215。由于控制器215被集成到存储器PHY 205中且因此未通过数据管道与存储器PHY 205分开,所以由控制器215实施的训练算法可为无种训练算法。如本文论述,不需要使用表征由训练算法产生的训练序列或命令通过的信号路径或数据管道的信息来配置无种训练算法(例如,用于对所返回的信号的后处理)。控制器215可响应于上电、垂直回扫频率变化、功率状态转变(例如,在闲置与活动状态之间)、以预定频率周期性地,或响应于其它事件或信号,而起始训练。
控制器215可与BIOS(例如,图1中所示的BIOS 120)交互。在一些实施方案中,BIOS可通过加载存储器阵列(例如,本地静态随机存取存储器(SRAM))而配置控制器215,从而提供与DRAM 210相关联的配置信息,或响应于系统启动而指令控制器215起始训练序列。然而,一旦已经配置控制器215,控制器215的一些实施方案可基本上与BIOS独立地且基本上在没有来自BIOS的输入的情况下控制存储器PHY 205的训练。举例来说,控制器215实施训练算法,所述训练算法与BIOS独立地操作且可在不接收来自BIOS的训练命令或训练序列的情况下训练存储器PHY 205。由于控制器215可在没有来自BIOS的输入(其将必须在数据管道上从BIOS传输到控制器215)的情况下控制存储器PHY 205的训练,所以可将训练算法实施为无种训练算法。
控制器215耦合到第一训练引擎220,其还可被称作地址命令状态机(ACSM)220。ACSM 220产生命令,所述命令可在存储器PHY205的训练期间提供给DRAM 210。对于实施于硬件中以作为存储器PHY 205的集成部分的第一训练引擎220的实施方案,可“全速地”产生可编程命令。由ACSM 220产生的命令可包括用于从DRAM 210中的指定位置读取信息的读取命令,用于将信息写入到DRAM 210中的指定位置的写入命令,和例如激活命令等其它命令。ACSM 220的一些实施方案可产生将并发的读取命令和写入命令进行组合的环回命令,其将信号驱动到存储器PHY 205的物理引脚,所述信号随后沿着穿过存储器PHY 205的路径返回。环回命令因此可用于测试存储器PHY 205,而不需要DRAM 210连接到存储器PHY 205的物理引脚。ACSM 220的一些实施方案可产生循环命令,所述循环命令在命令之间的指定延迟下反复地执行一个或多个命令,从而在执行期间循环或重复单个指令、以序列循环经过多个命令,和类似者。
一个或多个寄存器222是可存取的,例如,它们可由ACSM 220读取或写入。图2中所示的寄存器222在ACSM 220外部。然而,在一些实施方案中,寄存器222或存储器位置224可在ACSM 220内或在其它位置处实施。寄存器222的一些实施方案可包括用于存储用于配置或控制ACSM 220的信息的物理寄存器,和用于存储指令字223的其它物理寄存器。举例来说,寄存器222可包括用于ACSM控制的第一预定数目的物理寄存器,和用于存储与预定数目的指令字223相关联的信息的第二预定数目的寄存器。寄存器的所述第二预定数目可大于寄存器的所述第一预定数目。每个寄存器可为16位寄存器或其它大小的寄存器。
寄存器222用于存储多个指令字223,所述多个指令字各自包括指示命令和与命令相关联的时序延迟的信息。可通过控制器215将指令字223写入到寄存器222中。时序延迟指示将插入在指令字中的命令与其它命令(例如,其它指令字223中的命令)之间的延迟。可在执行对应命令之前或在执行对应命令之后插入时序延迟。在一些实施方案中,指令字223还可包括其它信息,例如指示指令字中所指示的命令的重复的数目的命令重复计数、例如DRAM 210等外部存储器中的地址、可用于产生用于存取DRAM 210的地址的算法地址产生控制信息、外部存储器中的分区,和类似者。所述算法地址产生控制信息可包括用于界定对地址的随机选择的多项式的信息、用于递增地址、地址偏移或跨步的信息、用于旋转地址的信息,和类似者。
寄存器222的一些实施方案还可包括用于存储可用于指示例如开始地址、序列循环地址和类似者等信息的一个或多个控制位的存储器位置224。ACSM 220可响应于控制器215将开始位的预定值写入到存储器位置224而起始一个或多个命令或命令序列的执行。存储于寄存器222中的指令字223的一些实施方案可包括终止位,所述终止位可用于通过将终止位的特定值写入到指令字中而终止命令序列的执行。
控制器215还耦合到第二训练引擎225,其可被称作PRBS模式产生器检查器(PPGC)225。PPGC 225的一些实施方案是可编程的,且可产生用作用于训练存储器PHY 205的训练序列的数据流。举例来说,PPGC 225可响应于由控制器215提供的信令而产生用于任何16位或更少位的多项式的数据流。PPGC 225的一些实施方案包括用于产生训练序列的单独产生器235,和用于检查在存储器PHY 205与DRAM 210之间流动的包括训练序列的读取流或写入流的同步的检查器230。PPGC 225的操作可由从ACSM 220接收的信令控制。举例来说,ACSM220可提供对操作(例如,在产生器235处产生训练序列)的执行进行定序的信令。
控制器215还耦合到第三训练引擎,其可被称作数据训练状态机(DTSM)240。DTSM240将从DRAM 210接收的业务与提供给DRAM210的训练序列进行比较,以便确定是否调节由存储器PHY 205使用的时序参数或电压偏移参数。举例来说,PPGC 225可将训练序列的表示提供给DTSM 240以便与在存储器PHY 205的读取训练或写入训练期间从DRAM 210返回的序列进行比较。在开始训练循环之前,控制器215可配置DTSM 240来控制由存储器PHY 205使用的时序参数或电压偏移参数。控制器215随后可对ACSM 220和PPGC 225进行编程来驱动一个或多个训练序列。DTSM 240随后可将由PPGC225产生的训练序列与已经从DRAM 210接收的序列进行比较。举例来说,DTSM 240可使训练序列与处于多个不同延迟的接收序列相关。基于所述比较,DTSM 240决定是否例如通过递增或递减这些参数中的一或多者而调节时序参数或电压偏移参数。举例来说,可基于根据训练序列与接收序列的相关度而确定的延迟来增加或减小时序偏移。DTSM 240的一些实施方案还可实施具有上限阈值或下限阈值比较逻辑的数据过滤器或二进制加法器以便训练到数据轮廓眼位置。
可使用多组先入先出(FIFO)缓冲器以在将训练序列提供给DRAM 210之前对训练序列进行缓冲,且在从DRAM 210接收到所接收的序列之后对所接收的序列进行缓冲。举例来说,可使用一组出站FIFO缓冲器245对出站业务进行缓冲,且可使用一组入站FIFO缓冲器250对入站业务进行缓冲。可使用一个或多个接收器255在通道上将信号接收到DRAM 210,且将它们提供给入站FIFO缓冲器250。可使用一个或多个驱动器260、265在所述通道上将来自出站FIFO缓冲器245的信号传输到DRAM 210。举例来说,可使用驱动器260将数据(DQ)或时序(DQS)信号驱动到通道270上,且接收器255可在通道270上接收数据(DQ)或时序(DQS)信号。对于另一实例,可使用驱动器265在通道275上将地址(ADDR)或命令(CMD)驱动到DRAM210。可调节由接收器255或驱动器260、265使用的时序延迟和电压偏移。
存储器PHY 205包括时序/电压控制逻辑280。DTSM 240可将信号提供给时序/电压控制逻辑280来指示对时序参数的调节。举例来说,DTSM 240可基于提供给DRAM 210的训练序列与从DRAM 210接收的序列的比较而指令时序/电压控制逻辑280递增或递减时序延迟或电压偏移。时序/电压控制逻辑280随后可将控制信号提供给接收器255或驱动器260、265来调节由接收器255或驱动器260、265使用的时序延迟或电压偏移。时序/电压控制逻辑280的一些实施方案可用于调节多个级中的时序延迟或电压偏移,所述多个级例如为接收启用级、写入平衡级、读取训练级、写入训练级,和用于确定存储器PHY 205与DRAM 210之间的接口的数据眼轮廓的电压电平的级。
图3是根据一些实施方案的指令字300的实例的框图。指令字300的一些实施方案可存储在寄存器中,例如图2中所示的存储在寄存器222中的指令字223。指令字300包括用于存储指示命令类型的信息的字段305,所述命令类型例如为读取命令、写入命令、激活命令,或可作为存储器PHY(例如,图2中所示的存储器PHY 205)的训练序列的部分而执行的其它命令。指令字300还包括用于存储指示与字段305中所指示的命令相关联的命令延迟的信息的字段310。字段310的一些实施方案可包括指示在执行字段305中所指示的命令之前或之后应流逝的周期数目的信息。
指令字300的一些实施方案还包括用于存储指示命令重复计数的信息的字段315,所述命令重复计数指示字段305中所指示的命令应重复的次数。字段310中所指示的命令延迟可应用于命令的每个重复。字段320可包括与字段305中所指示的命令相关联的地址。所述地址可指示在命令的执行期间可从其读取或对其写入的外部存储器(例如,图2中所示的DRAM 210)中的位置。指令字300的一些实施方案还可包括:用于存储其它信息的一个或多个字段325,所述其它信息例如为可用于产生用于存取外部存储器的地址的算法地址产生控制信息;外部存储器中的分区;终止位,所述终止位可用于通过将终止位的特定值写入到指令字300中而终止命令序列的执行;和类似者。
图4是示出根据一些实施方案的可由例如图2中所示的ACSM220等训练引擎发出的命令序列400的图。水平轴指示时钟周期中的时间且从左到右(如箭头方向指示)增加。序列400开始于框405处。举例来说,可响应于例如图2中所示的控制器215等控制器通过将信息写入到与训练引擎相关联的存储器来配置训练引擎而起始序列400。所述控制器随后可在405处将开始位写入到例如图2中所示的位置224等特定位置来开始序列400。训练引擎随后可从寄存器读取指令字。举例来说,训练引擎可在由开始地址指针指示的寄存器处读取指令字。所述指令字包括识别将由训练引擎执行的命令以及与所述命令相关联的命令延迟的信息。命令的实例包括用于将信息写入到例如DRAM等外部存储器的写入命令、用于从外部存储器读取信息的读取命令、激活命令,和类似者。
由训练引擎读取的第一命令是写入命令410,其在延迟415之后执行,所述延迟至少与由指令字中的命令延迟指示的预定时间间隔一样长。训练引擎随后可从寄存器读取下一指令字。所述下一指令字包括指示下一命令是读取命令420的信息。在一些实施方案中,在执行将信息写入到外部存储器的写入命令与执行从外部存储器读取信息的读取命令之间可需要流逝预定量的时间。所需要的等待时间可取决于连接到实施训练引擎的存储器PHY的外部存储器的特性,例如DRAM的类型。程序员因此可在指令字的命令延迟字段中指示写入命令410与后续读取命令420之间的适当命令延迟。训练引擎因此可将读取命令420的执行延迟时间间隔425,所述时间间隔至少与由指令字中的命令延迟指示的预定时间间隔一样长。
训练引擎可从寄存器读取后续指令字。在一些实施方案中,所述后续指令字包括识别在前一读取命令420之后的用于从外部存储器读取信息的读取命令430的信息。在执行两个连续读取命令420、430之间可需要流逝预定时间间隔,且可在指令字中的命令延迟字段中指示此时间间隔。训练引擎因此可将读取命令430的执行延迟时间间隔435,所述时间间隔至少与由指令字中的命令延迟指示的预定时间间隔一样长。在两个连续读取命令420、430之间应该流逝的预定时间间隔可不同于在写入命令410与读取命令420之间应该流逝的预定时间间隔。
一般来说,在不同类型的命令之间应该流逝的时间间隔可取决于命令的类型、执行命令的次序,或命令的其它特性、存储器PHY,或包括不同双列直插式存储器模块(DIMM)的外部存储器。举例来说,不同的DIMM可位于相对于存储器PHY的不同距离处,且因此存储器PHY与不同的DIMM之间的通信可能会经历不同的输送延迟。指令字中所指示的延迟可用于考虑不同的输送延迟,例如,以便防止响应于发出到最远的DIMM的读取命令而返回的信息与响应于发出到较靠近存储器PHY的DIMM的后续读取命令而返回的信息冲突(或在所述信息之后到达存储器PHY)。在指令字中包括命令延迟字段会向程序员提供根据特定实施方案的要求来调适命令序列400的灵活性。
图5是示出根据一些实施方案的可由例如图2中所示的ACSM200等训练引擎发出的命令序列500的图。水平轴指示时钟周期中的时间且从左到右(如箭头方向指示)增加。序列500开始于框505处。举例来说,可响应于控制器将开始位写入到例如图2中所示的位置224等特定位置而起始序列500。训练引擎随后可从寄存器(例如,由开始指针指示的寄存器)读取指令字。所述指令字包括识别将由训练引擎执行的写入命令510以及与所述写入命令510相关联的命令延迟的信息。在延迟515之后执行写入命令510,所述延迟至少与由指令字中的命令延迟指示的预定时间间隔一样长。
接下来的两个命令包括读取命令520和一个或多个其它命令525。读取命令520应在相对于写入命令510的等待时间530下执行。可在没有相对于写入命令510或读取命令520的任何特定等待时间,或在相对于等待时间530的相对小的等待时间下执行其它命令525。与读取命令520和其它命令525相关联的指令字中的延迟535、540可因此被配置成使得所述两个延迟535、540的和至少与等待时间530一样长。训练引擎因此可在延迟535之后执行其它命令525,且随后在延迟540之后执行读取命令520,这也满足以下要求:在相对于写入命令510的等待时间530下执行读取命令520。
图6是根据一些实施方案的执行命令序列的方法600的流程图。方法600可在训练引擎(例如,图2中所示的ACSM 220)中实施。在框605处,方法600响应于训练引擎写入开始位而开始。在框610处,训练引擎从例如由训练引擎维持的开始指针所指示的寄存器等寄存器读取指令字。在决策框615处,训练引擎确定所述指令字是否包括指示与由所述指令字指示的命令相关联的命令延迟的信息。如果否,那么训练引擎可在没有约束的情况下发出所述命令,且可在框620处执行所述命令。如果是,那么约束训练引擎以便在至少与所指示的延迟一样长的时间间隔之后发出所述命令。在框625处,训练引擎因此可等待至少所指示的延迟。训练引擎随后可发出可在框620处执行的所述命令。
指令字的一些实施方案可包括命令重复字段,所述命令重复字段指示指令字中的命令的重复的数目。在决策框630处,训练引擎确定所述命令是否已经重复少于命令重复字段中所指示的命令重复计数的重复数目。如果重复数目少于命令重复计数,从而指示命令应该至少再重复一次,那么训练引擎在决策框615处确定适当的延迟,且有可能在框625处等待所指示的延迟之后在框620处执行命令。一旦重复数目大于或等于命令重复计数,方法600便可流动到决策框630。训练引擎的一些实施方案可维持计数器来跟踪命令的重复数目。
在决策框635处,训练引擎确定是否使用当前指令字终止命令序列。在一些实施方案中,可响应于在当前指令字中设定终止位而终止命令序列。如果训练引擎确定将不终止命令序列,那么训练引擎可例如通过使开始指针前进到下一寄存器而前进到下一指令字(在框640处)。方法600随后可流动到框610,其中从寄存器读取下一指令字。如果训练引擎确定将终止命令序列,那么可终止命令序列,方法600可通过在框645处将开始位复位而结束。
图7是根据一些实施方案的可在例如图1中所示的加速处理单元100等处理单元中实施的训练存储器PHY的方法700的流程图。方法700的实施方案可实施于训练控制逻辑中,例如图1中所示的训练控制逻辑155、或图2中所示的控制器215、ACSM 220、PPGC 225、DTSM240和时序/电压控制逻辑280。
在框705处,所述训练控制逻辑执行接收启用训练来确定何时启用存储器PHY在与DRAM的接口上接收数据。一些实施方案通过传输用于从DRAM读取选定地址的读取命令而执行接收启用训练。使用气泡序列穿插所述读取命令,所述气泡在从DRAM接收的信号中产生气泡的对应序列。训练控制逻辑随后监视从DRAM接收的信号,以便使存储器PHY中的命令产生的时间与来自DRAM的命令响应返回到存储器PHY的时间对准。将气泡间距时间间隔范围的大小设定成大于最差情况往返等待时间加上路径中的任何内部存储器PHY和DRAM等待时间。这避免了命令响应关联与较早或较晚响应的任何潜在混叠。存储器PHY可被配置成在接收启用训练级期间保持在连续读取状态中。举例来说,控制器215可配置ACSM 220、PPGC225和DTSM 240且随后起始训练级。ACSM 220可发出命令/地址以便将训练序列写入到DRAM210,且随后发出命令/地址以便从DRAM 210读取回训练序列。在一些实施方案中,实际上响应于所发出的命令没有将信息写入到DRAM 210,且忽视了DQ总线。仅监视返回的DQS。所发出的命令因此类似于读取命令,但DTSM 240不关心响应于所述命令返回了何种数据。DTSM240仅关注于调节从DRAM 210回来的DQS选通的时序。训练序列可由PPGC 225产生且提供给DRAM 210。DTSM 240随后可使来自DRAM 210的接收数据与训练序列相关以便识别往返延迟,且指令时序/电压控制逻辑280调谐适当的接收器/驱动器(例如,接收器255和驱动器260、265)的参数,以便清除检测到的往返延迟。
在框710处,训练逻辑执行写入平衡以将存储器PHY所使用的时钟信号对准到DRAM所使用的时钟信号。训练逻辑的一些实施方案因此可传输存储器PHY时钟信号和时序(DQS)信号,其用于对DRAM处的时钟的值进行取样。训练逻辑随后可使用在DQ总线上返回的DRAM时钟的取样值(例如)通过引入延迟来使DQS信号与DRAM内部的存储器时钟相位对准,而使存储器PHY时钟与DRAM时钟对准。举例来说,响应于来自控制器215的信令,ACSM 220可产生写入命令,所述写入命令致使包括上升沿的存储器PHY时钟信号与提供给DRAM 210的DQS信号对DRAM中的存储器时钟进行取样。可基于从寄存器222读取的信息而产生写入命令,如本文论述。DRAM时钟的取样值随后可返回到存储器PHY 205。PPGC 225中的检查器230产生内部比较值且将此值提供给DTSM 240。DTSM 240随后可将所述内部比较值与从DRAM 210接收的取样时钟信号值进行比较,且基于所述比较而产生调节信号以使写入DQS对准到DRAM210中的时钟。DTSM 240随后可指令时序/电压控制逻辑280调谐接收器255和驱动器260、265的时序参数以便使存储器PHY时钟和DRAM时钟同步。举例来说,如果内部比较值是“0”且DRAM时钟的取样值是“1”,那么DTSM 240可指令时序/电压控制逻辑280将存储器PHY 205的时序提前预定时间量。如果内部比较值是“1”且DRAM时钟的取样值是“1”,那么DTSM 240可指令时序/电压控制逻辑282将存储器PHY 205的时序延迟预定时间量。此过程可迭代以便将存储器PHY时钟和DRAM时钟的同步调谐到预定容限内。
在框715处,训练逻辑执行读取/写入相位训练以便基于存储器PHY与DRAM之间的读取/写入数据路径来确定数据眼轮廓的一维时间边界。训练逻辑的一些实施方案可因此传输一连串命令以便将训练序列写入到DRAM中的地址中,且随后以不同延迟循环读取DRAM的所寻址的序列之外的训练序列,以便确定数据眼轮廓的一维时间边界。举例来说,响应于来自控制器215的信令,ACSM 220可发出命令以便将由PPGC 225产生的一个或多个序列写入到DRAM 210中的一个或多个地址。ACSM 220随后可将一连串读取命令发出到以不同的延迟值循环的DRAM 210中的地址。可由ACSM 220基于从寄存器222中的指令字读取的信息而产生命令序列的一些实施方案,如本文论述。DTSM 240随后可将所循环的读取命令中的每一者的所接收的序列与所提供的训练序列进行比较以便确定数据眼轮廓的左边缘和右边缘。DTSM 240随后可指令时序/电压控制逻辑280调谐接收器255的时序参数(例如,相位),从而对应于数据眼轮廓中的预定位置,例如左边缘与右边缘之间的中点。
在框720处,训练逻辑执行二维(2D)读取/写入相位训练以便基于存储器PHY与DRAM之间的读取/写入数据路径来确定数据眼轮廓的电压电平。训练逻辑的一些实施方案因此可传输一连串读取/写入命令以便读取和写入去往和来自DRAM的训练序列。可使用不同的时序延迟和不同的电压偏移执行所述一连串读取/写入命令以便确定数据眼轮廓中的电压电平。举例来说,响应于来自控制器215的信令,ACSM 220可发出命令以便使用初始时序延迟将由PPGC 225产生的一个或多个序列写入到DRAM 210中的一个或多个地址。ACSM220随后可将一连串循环读取命令发出到DRAM 210中的地址。可与将不同的电压偏移值提供给接收器255或驱动器260、265同时地发出读取/写入命令。可由ACSM 220基于从寄存器222中的指令字读取的信息而产生命令序列的一些实施方案,如本文论述。DTSM 240随后可将所循环的读取命令中的每一者的所接收的序列与所提供的训练序列进行比较以便针对初始时序延迟确定数据眼轮廓的左边缘与右边缘之间的电压电平。可改变(例如,递增或递减)所述时序延迟且可重复确定电压电平的过程。可迭代此过程以便确定时序延迟和电压电平范围上的二维数据眼轮廓。一些实施方案可替代地迭代地选择电压电平且循环经过选定电压电平的时序延迟来确定二维数据眼轮廓。
DTSM 240指令时序/电压控制逻辑280调谐接收器255或驱动器260、265的时序延迟和电压偏移,以便对应于数据眼轮廓中的提供最佳电压电平和时序延迟的位置。可基于取样训练数据中的正确样本和不正确样本的数目来确定对时序延迟或电压偏移的调节。DTSM240的一些实施方案可基于取样训练数据中的正确样本与不正确样本的预定比率来确定最佳的时序延迟和电压偏移。举例来说,DTSM 240可调谐时序延迟和电压偏移,直到由存储器PHY 205接收的正确样本与不正确样本的数目的比率处于或低于预定比率为止。DTSM240的一些实施方案可在可确定更好的最佳训练位置的预期下使用所述预定比率来更改数据眼轮廓的形状。举例来说,可基于预定比率来扩大或收缩2D眼轮廓。对2-D数据眼轮廓的形状的其它更改也是可能的。
在一些实施方案中,上文所描述的设备和技术实施于包括一个或多个集成电路(IC)装置(还被称作集成电路封装或微芯片)(例如,上文参考图1到7所描述的存储器PHY)的系统中。可在这些IC装置的设计和制造中使用电子设计自动化(EDA)和计算机辅助设计(CAD)软件工具。这些设计工具通常表示为一个或多个软件程序。所述一个或多个软件程序包括可由计算机系统执行以进行以下操作的代码:操纵计算机系统对表示一个或多个IC装置的电路的代码进行操作,以便执行用于设计或调适制造系统来制造电路的过程的至少一部分。此代码可包括指令、数据或指令与数据的组合。表示设计工具或制造工具的软件指令通常存储在计算系统可存取的计算机可读存储媒体中。同样,表示IC装置的设计或制造的一个或多个阶段的代码可存储在同一计算机可读存储媒体或不同计算机可读存储媒体中且从所述计算机可读存储媒体进行存取。
计算机可读存储媒体可包括可由计算机系统在使用期间存取以便将指令和/或数据提供给计算机系统的任何存储媒体,或存储媒体的组合。此类存储媒体可包括(但不限于)光学媒体(例如,压缩光盘(CD)、数字多功能光盘(DVD)、蓝光光盘)、磁性媒体(例如,软盘、磁带或磁性硬盘驱动器)、易失性存储器(例如,随机存取存储器(RAM)或高速缓冲存储器)、非易失性存储器(例如,只读存储器(ROM)或快闪存储器),或基于微机电系统(MEMS)的存储媒体。计算机可读存储媒体可嵌入计算系统(例如,系统RAM或ROM)中、固定地附接到计算系统(例如,磁性硬盘驱动器)、可移除地附接到计算系统(例如,光盘或基于通用串行总线(USB)的快闪存储器),或经由有线或无线网络耦合到计算机系统(例如,网络可存取存储装置(NAS))。
图8是示出用于设计和制造实施根据一些实施方案的一个或多个方面的IC装置的示例性方法800的流程图。如上文所述,针对以下过程中的每一者所产生的代码存储在或以其它方式体现在非暂时性计算机可读存储媒体中以供对应的设计工具或制造工具存取和使用。
在框802处,产生IC装置的功能规范。可通过多种编程语言或建模语言(包括C、C++、SystemC、Simulink或MATLAB)中的任一者来表示所述功能规范(常常被称作微型架构规范(MAS))。
在框804处,使用所述功能规范来产生表示IC装置的硬件的硬件描述代码。在一些实施方案中,使用至少一种硬件描述语言(HDL)来表示所述硬件描述代码,所述硬件描述语言包括多种计算机语言、规范语言,或用于IC装置的电路的规范化描述和设计的建模语言中的任一者。所产生的HDL代码通常表示IC装置的电路的操作、电路的设计和组织,以及用于通过模拟来验证IC装置的正确操作的测试。HDL的实例包括模拟HDL(AHDL)、VerilogHDL、SystemVerilog HDL和VHDL。对于实施同步数字电路的IC装置,硬件描述符代码可包括寄存器传递级(RTL)代码来提供对同步数字电路的操作的抽象表示。对于其它类型的电路,硬件描述符代码可包括行为级代码来提供电路操作的抽象表示。由硬件描述代码表示的HDL模型通常经受一轮或多轮的模拟和调试来通过设计验证。
在验证由硬件描述代码表示的设计之后,在框806处,使用合成工具来合成硬件描述代码以便产生表示或界定IC装置的电路的初始物理实现方式的代码。在一些实施方案中,所述合成工具产生一个或多个网表,其包括电路装置例子(例如,门、晶体管、电阻器、电容器、电感器、二极管等)以及电路装置例子之间的网或连接。替代地,可在不使用合成工具的情况下手动地产生网表的全部或一部分。与硬件描述代码一样,网表可经受一个或多个测试和验证过程,之后产生最终的一组一个或多个网表。
替代地,可使用示意性编辑器工具起草IC装置的电路的示意图,且随后可使用示意性捕获工具捕获所得的电路图,且产生表示电路图的组件和连接性的一个或多个网表(存储在计算机可读媒体上)。所捕获的电路图随后可经受一轮或多轮模拟来进行测试和验证。
在框808处,一个或多个EDA工具使用在框806处产生的网表来产生表示IC装置的电路的物理布局的代码。此过程可包括(例如)放置工具,其使用网表来确定或固定IC装置的电路的每个元件的位置。此外,布线工具依赖放置过程而添加并布线根据网表连接电路元件所需的电线。所得的代码表示IC装置的三维模型。可以数据库文件格式(例如,图形数据库系统II(GDSII)格式)表示所述代码。呈此格式的数据通常表示几何形状、文本标记,和关于呈分层形式的电路布局的其它信息。
在框810处,将物理布局代码(例如,GDSII代码)提供给制造设施,所述制造设施使用物理布局代码来配置或以其它方式调适制造设施的制造工具(例如,通过掩模工具)来制造IC装置。也就是说,可将物理布局代码编程到一个或多个计算机系统中,所述一个或多个计算机系统随后可完全地或部分地控制制造设施的工具的操作,或其中执行的制造操作。
在一些实施方案中,上文所描述的技术的某些方面可由执行软件的处理系统的一个或多个处理器实施。所述软件包括存储在或另外有形地体现在非暂时性计算机可读存储媒体上的一组或多组可执行命令。所述软件可包括命令和某些数据,其当由一个或多个处理器执行时会操纵所述一个或多个处理器执行上文所描述的技术的一个或多个方面。所述非暂时性计算机可读存储媒体可包括(例如)磁盘或光盘存储装置、固态存储装置,例如快闪存储器、高速缓冲存储器、随机存取存储器(RAM),或其它非易失性存储器装置,和类似者。存储在非暂时性计算机可读存储媒体上的可执行命令可呈由一个或多个处理器解译或可以其它方式执行的源代码、汇编语言代码、目标代码,或其它命令格式。
应注意,不需要上文在一般描述中所描述的所有活动或要素、可能不需要特定活动或装置的一部分,且可执行一个或多个其它活动,或包括除了所描述的要素之外的要素。此外,列举活动的次序不一定是执行活动的次序。而且,已经参考特定实施方案描述了概念。然而,本领域技术人员应了解,可在不脱离所附权利要求书中所陈述的本公开的范围的情况下作出各种修改和改变。因此,可在说明性意义而不是限制性意义上对待说明书和图,且希望所有此类修改包括在本公开的范围内。
上文已关于特定实施方案描述了益处、其它优势和问题的解决方案。然而,这些益处、优势、问题的解决方案以及可导致任何益处、优势或解决方案发生或变得更加突出的任何特征不应被解释为任何或所有权利要求的关键、所需或实质特征。另外,上文公开的特定实施方案仅是说明性的,因为所公开的标的可以按受益于本文教示的益处的本领域技术人员显而易见的不同但等效的方式加以修改和实践。除了所附权利要求书中所描述的内容之外,不希望对本文示出的构造或设计的细节进行限制。因此显然的是,可更改或修改上文所公开的特定实施方案,且所有此类变化都被视为在所公开的标的的范围内。因此,本文寻求的保护在所附权利要求书中予以陈述。
Claims (16)
1.一种加速处理设备,其包括:
存储器物理层接口(140、205),其用于耦合到具有基于外部存储器的设计的针对命令的时序要求的外部存储器(210);
多个寄存器(222),其与所述存储器物理层接口联合实施,所述多个寄存器用于存储指示至少一个命令(410、420、430、510、520、525)和至少一个可编程延迟(415、515、535、540)的至少一个指令字(300),其中基于所述外部存储器的所述时序要求来对所述至少一个可编程延迟编程并且所述至少一个可编程延迟是在执行所述命令之前要流逝的时间间隔;以及
第一可编程训练引擎(220),其实施于所述存储器物理层接口中以:
响应于控制器写入开始位,读取至少一个指令字;
基于所述至少一个指令字而产生全速可编程训练命令(420、430、525)序列以便递送到所述外部存储器;
基于所述至少一个可编程延迟来延迟所述命令;
执行所述命令;
响应于所述可编程训练命令序列接收所述外部存储器产生的信号;
基于所接收到的信号调整所述存储器物理层接口的读取/写参数;和
响应于确定要终止所述可编程训练命令序列而将所述开始位复位。
2.如权利要求1所述的设备,其进一步包括:
存储器位置(224),其与所述存储器物理层接口联合实施,其中所述第一可编程训练引擎响应于所述控制器将所述开始位写入到所述存储器位置而起始所述至少一个命令的执行。
3.如权利要求2所述的设备,其中所述第一可编程训练引擎将基于所述至少一个命令来确定所述至少一个可编程延迟,且其中所述控制器将所述至少一个指令字写入到所述多个寄存器。
4.如权利要求3所述的设备,其中所述至少一个命令包括第一命令、第二命令和第三命令,且其中所述第一可编程训练引擎将执行所述第一命令,在相对于执行所述第一命令的第一延迟之后执行所述第二命令,且在相对于执行所述第二命令的第二延迟之后执行所述第三命令,且其中所述第一延迟和所述第二延迟的和满足所述第一命令和所述第三命令的等待时间要求。
5.如权利要求1所述的设备,其中所述至少一个指令字指示至少一个命令重复计数,所述至少一个命令重复计数指示所述至少一个命令的重复数目。
6.如权利要求1所述的设备,其中所述至少一个指令字指示以下各者中的至少一者:所述外部存储器中的地址、算法地址产生控制、终止位和所述外部存储器中的分区。
7.如权利要求1所述的设备,其进一步包括:
控制器(215),其集成于所述存储器物理层接口中,其中所述控制器将基于无种训练算法来控制所述存储器物理层接口的训练以便与所述外部存储器通信。
8.如权利要求1所述的设备,其进一步包括:
第二训练引擎(225),其用于响应于由所述第一可编程训练引擎(220)产生的控制信令而产生训练序列以便递送到所述外部存储器;以及
第三训练引擎,其用于将从所述外部存储器接收的序列与由所述第二训练引擎(225)产生的所述训练序列进行比较。
9.一种执行命令序列方法(600),其包括:
响应于控制器写入开始位,在实施于存储器物理层接口中的第一训练引擎处读取至少一个指令字,所述至少一个指令字指示至少一个命令和至少一个可编程延迟,其中基于外部存储器的时序要求来对所述至少一个可编程延迟编程并且所述至少一个可编程延迟是在执行所述至少一个命令之前要流逝的时间间隔;
基于所述至少一个指令字而使用所述第一训练引擎(220)产生全速可编程训练命令(420、430、525)序列以便递送到所述外部存储器,其中将基于所述至少一个可编程延迟来延迟所述命令,并且其中所述至少一个命令包括第一、第二和第三命令,并且还包括:
执行所述第一命令;
在相对于执行所述第一命令的第一延迟之后执行所述第二命令;和
在相对于执行所述第二命令的第二延迟之后执行所述第三命令,且其中所述第一延迟和所述第二延迟的和满足所述第一命令和所述第三命令的等待时间要求;和
响应于确定要终止所述可编程训练命令序列而将所述开始位复位;
在所述第一训练引擎处,响应于命令的所述可编程训练命令序列接收所述外部存储器产生的信号;和
在所述第一训练引擎处,基于所接收的信号调整所述存储器物理层接口的读/写参数。
10.如权利要求9所述的方法,其进一步包括:
所述控制器将所述开始位写入到实施于所述存储器物理层接口中的存储器位置(224)。
11.如权利要求9所述的方法,其进一步包括:
基于所述至少一个命令来确定所述至少一个可编程延迟;以及
将所述至少一个指令字写入到多个寄存器(222)。
12.如权利要求9所述的方法,其进一步包括将所述至少一个命令执行由所述至少一个指令字中的至少一个命令重复计数指示的重复数目,其中通过所述至少一个可编程延迟来延迟所述至少一个命令的重复。
13.如权利要求9所述的方法,其中访问所述至少一个指令字包括存取指示以下各者中的至少一者的所述至少一个指令字:所述外部存储器中的地址、算法地址产生模式、终止位和所述外部存储器中的分区。
14.如权利要求9所述的方法,其进一步包括:
响应于检测到所述至少一个指令字中的终止位的预定值而终止所述至少一个命令的执行。
15.如权利要求9所述的方法,其进一步包括:
在集成于所述存储器物理层接口中的控制器(215)处基于无种训练算法而产生控制信令以便训练所述存储器物理层接口以便与所述外部存储器通信。
16.如权利要求15所述的方法,其进一步包括:
将第二控制信令从所述第一训练引擎提供给第二训练引擎(225),其中所述第二训练引擎将响应于来自所述第一训练引擎的所述第二控制信令而产生训练序列以便递送到所述外部存储器;以及
将第三控制信令从所述第一训练引擎提供给第三训练引擎,其中所述第三训练引擎将响应于所述第三控制信令而将从所述外部存储器接收的序列与由所述第二训练引擎产生的所述训练序列进行比较。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/318,065 | 2014-06-27 | ||
US14/318,065 US10275386B2 (en) | 2014-06-27 | 2014-06-27 | Memory physical layer interface logic for generating dynamic random access memory (DRAM) commands with programmable delays |
PCT/US2015/037172 WO2015200318A1 (en) | 2014-06-27 | 2015-06-23 | Memory physical layer interface logic for generating dynamic random access memory (dram) commands with programmable delays |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106104698A CN106104698A (zh) | 2016-11-09 |
CN106104698B true CN106104698B (zh) | 2021-04-20 |
Family
ID=54930682
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580015602.7A Active CN106104698B (zh) | 2014-06-27 | 2015-06-23 | 用于产生具有可编程延迟的动态随机存取存储器(dram)命令的存储器物理层接口逻辑 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10275386B2 (zh) |
EP (1) | EP3105761B1 (zh) |
JP (1) | JP6741585B2 (zh) |
KR (1) | KR102011092B1 (zh) |
CN (1) | CN106104698B (zh) |
WO (1) | WO2015200318A1 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9767868B2 (en) | 2014-01-24 | 2017-09-19 | Qualcomm Incorporated | Providing memory training of dynamic random access memory (DRAM) systems using port-to-port loopbacks, and related methods, systems, and apparatuses |
US10613995B2 (en) * | 2015-03-16 | 2020-04-07 | Rambus Inc. | Training and operations with a double buffered memory topology |
US10503523B2 (en) * | 2017-06-30 | 2019-12-10 | Intel Corporation | Technologies to improve system boot performance and reliability |
KR102368966B1 (ko) * | 2017-10-23 | 2022-03-03 | 삼성전자주식회사 | 불휘발성 메모리 장치, 불휘발성 메모리 장치들을 포함하는 스토리지 장치, 그리고 제어기와 불휘발성 메모리 장치들 사이에서 데이터 입력 및 출력 라인들을 트레이닝하는 방법 |
GB2572664B (en) * | 2018-04-05 | 2020-07-08 | Imagination Tech Ltd | Verification of hardware design for data transformation pipeline |
CN109840878B (zh) * | 2018-12-12 | 2023-05-23 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于SystemC的面向GPU参数管理方法 |
KR20200100951A (ko) * | 2019-02-19 | 2020-08-27 | 에스케이하이닉스 주식회사 | 메모리 장치 및 이를 포함하는 데이터 처리 시스템 |
US11093244B2 (en) * | 2019-08-28 | 2021-08-17 | Micron Technology, Inc. | Command delay |
US11567557B2 (en) * | 2019-12-30 | 2023-01-31 | Advanced Micro Devices, Inc. | Electrical power operating states for core logic in a memory physical layer |
US11789620B2 (en) | 2021-12-23 | 2023-10-17 | Advanced Micro Devices, Inc. | Dynamic random-access memory (DRAM) phase training update |
EP4258267A4 (en) * | 2022-02-24 | 2024-04-24 | Changxin Memory Technologies, Inc. | DATA TRANSMISSION CIRCUIT, DATA TRANSMISSION METHODS AND STORAGE |
TWI803211B (zh) * | 2022-02-25 | 2023-05-21 | 南亞科技股份有限公司 | 隨機指令產生系統及隨機指令產生方法 |
US11693600B1 (en) * | 2022-02-28 | 2023-07-04 | Dell Products L.P. | Latency-based detection of storage volume type |
CN115344215A (zh) * | 2022-08-29 | 2022-11-15 | 深圳市紫光同创电子有限公司 | 存储器训练方法及系统 |
CN117894354A (zh) * | 2022-10-08 | 2024-04-16 | 长鑫存储技术有限公司 | 一种延时控制电路、方法和存储器 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5940876A (en) * | 1997-04-02 | 1999-08-17 | Advanced Micro Devices, Inc. | Stride instruction for fetching data separated by a stride amount |
US20050228915A1 (en) * | 2004-04-12 | 2005-10-13 | Texas Instruments Incorporated | Pipelined stop, start, address byte, and data byte technique and circuit for I2C logic system |
CN101661799A (zh) * | 2008-08-27 | 2010-03-03 | 台湾积体电路制造股份有限公司 | 用于随机存取存储器的可编程自检测 |
US20100100711A1 (en) * | 2008-10-17 | 2010-04-22 | Advanced Micro Devices, Inc. | Data processor device and methods thereof |
US20130124904A1 (en) * | 2008-06-23 | 2013-05-16 | Google Inc. | Memory subsystem and method |
US20130151796A1 (en) * | 2011-12-09 | 2013-06-13 | Nvidia Corporation | System and method for calibration of serial links using a serial-to-parallel loopback |
US20140063991A1 (en) * | 2012-08-31 | 2014-03-06 | SK Hynix Inc. | Semiconductor device and operation method thereof |
US20140114887A1 (en) * | 2012-10-22 | 2014-04-24 | Venkatraman Iyer | High performance interconnect physical layer |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW559694B (en) * | 2002-06-21 | 2003-11-01 | Via Tech Inc | Method and system of calibrating the control delay time |
US8166221B2 (en) | 2004-03-17 | 2012-04-24 | Super Talent Electronics, Inc. | Low-power USB superspeed device with 8-bit payload and 9-bit frame NRZI encoding for replacing 8/10-bit encoding |
JP2006260071A (ja) | 2005-03-16 | 2006-09-28 | Oki Data Corp | メモリ制御装置および情報処理装置 |
US7336551B2 (en) * | 2005-11-30 | 2008-02-26 | Intel Corporation | Semiconductor memory devices and systems, and methods of using having reduced timers and registers |
US7647467B1 (en) | 2006-05-25 | 2010-01-12 | Nvidia Corporation | Tuning DRAM I/O parameters on the fly |
US7865660B2 (en) * | 2007-04-16 | 2011-01-04 | Montage Technology Group Ltd. | Calibration of read/write memory access via advanced memory buffer |
US8819474B2 (en) * | 2009-04-03 | 2014-08-26 | Intel Corporation | Active training of memory command timing |
US8356155B2 (en) | 2010-09-13 | 2013-01-15 | Advanced Micro Devices, Inc. | Dynamic RAM Phy interface with configurable power states |
US8645743B2 (en) | 2010-11-22 | 2014-02-04 | Apple Inc. | Mechanism for an efficient DLL training protocol during a frequency change |
KR101217937B1 (ko) | 2010-12-30 | 2013-01-02 | (주)인디링스 | 고속의 외부 메모리 인터페이스를 위한 적응적 디지털 phy |
US8760945B2 (en) * | 2011-03-28 | 2014-06-24 | Samsung Electronics Co., Ltd. | Memory devices, systems and methods employing command/address calibration |
US20120284576A1 (en) | 2011-05-06 | 2012-11-08 | Housty Oswin E | Hardware stimulus engine for memory receive and transmit signals |
US8422319B2 (en) * | 2011-05-30 | 2013-04-16 | Lsi Corporation | System and method for gate training in a memory system |
US8605539B2 (en) * | 2011-08-16 | 2013-12-10 | Lsi Corporation | Hardware-based data eye training for high speed links |
US8634221B2 (en) | 2011-11-01 | 2014-01-21 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Memory system that utilizes a wide input/output (I/O) interface to interface memory storage with an interposer and that utilizes a SerDes interface to interface a memory controller with an integrated circuit, and a method |
US8850155B2 (en) | 2011-12-19 | 2014-09-30 | Advanced Micro Devices, Inc. | DDR 2D Vref training |
US20130318285A1 (en) | 2012-05-23 | 2013-11-28 | Violin Memory Inc | Flash memory controller |
CN203017908U (zh) | 2012-06-26 | 2013-06-26 | 维克斯滤清器有限责任公司 | 过滤器组件 |
US8856573B2 (en) | 2012-06-27 | 2014-10-07 | Intel Corporation | Setting a number (N) of fast training sequences (FTS) automatically to an optimal value |
KR101385605B1 (ko) | 2012-07-16 | 2014-04-16 | 옵티시스 주식회사 | 영상 매트릭스 장치 |
US8842480B2 (en) | 2012-08-08 | 2014-09-23 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Automated control of opening and closing of synchronous dynamic random access memory rows |
US9253554B2 (en) | 2012-09-17 | 2016-02-02 | Broadcom Corporation | Time to time-frequency mapping and demapping for ethernet passive optical network over coax (EPoC) |
-
2014
- 2014-06-27 US US14/318,065 patent/US10275386B2/en active Active
-
2015
- 2015-06-23 KR KR1020167026427A patent/KR102011092B1/ko active IP Right Grant
- 2015-06-23 WO PCT/US2015/037172 patent/WO2015200318A1/en active Application Filing
- 2015-06-23 EP EP15811645.9A patent/EP3105761B1/en active Active
- 2015-06-23 CN CN201580015602.7A patent/CN106104698B/zh active Active
- 2015-06-23 JP JP2016558773A patent/JP6741585B2/ja active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5940876A (en) * | 1997-04-02 | 1999-08-17 | Advanced Micro Devices, Inc. | Stride instruction for fetching data separated by a stride amount |
US20050228915A1 (en) * | 2004-04-12 | 2005-10-13 | Texas Instruments Incorporated | Pipelined stop, start, address byte, and data byte technique and circuit for I2C logic system |
US20130124904A1 (en) * | 2008-06-23 | 2013-05-16 | Google Inc. | Memory subsystem and method |
CN101661799A (zh) * | 2008-08-27 | 2010-03-03 | 台湾积体电路制造股份有限公司 | 用于随机存取存储器的可编程自检测 |
US20100100711A1 (en) * | 2008-10-17 | 2010-04-22 | Advanced Micro Devices, Inc. | Data processor device and methods thereof |
US20130151796A1 (en) * | 2011-12-09 | 2013-06-13 | Nvidia Corporation | System and method for calibration of serial links using a serial-to-parallel loopback |
US20140063991A1 (en) * | 2012-08-31 | 2014-03-06 | SK Hynix Inc. | Semiconductor device and operation method thereof |
US20140114887A1 (en) * | 2012-10-22 | 2014-04-24 | Venkatraman Iyer | High performance interconnect physical layer |
Also Published As
Publication number | Publication date |
---|---|
KR102011092B1 (ko) | 2019-08-14 |
KR20170027696A (ko) | 2017-03-10 |
JP6741585B2 (ja) | 2020-08-19 |
CN106104698A (zh) | 2016-11-09 |
US20150378956A1 (en) | 2015-12-31 |
US10275386B2 (en) | 2019-04-30 |
JP2017523489A (ja) | 2017-08-17 |
EP3105761B1 (en) | 2021-04-21 |
EP3105761A4 (en) | 2017-09-27 |
EP3105761A1 (en) | 2016-12-21 |
WO2015200318A1 (en) | 2015-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106104698B (zh) | 用于产生具有可编程延迟的动态随机存取存储器(dram)命令的存储器物理层接口逻辑 | |
US9639495B2 (en) | Integrated controller for training memory physical layer interface | |
US9607120B2 (en) | Implementing system irritator accelerator FPGA unit (AFU) residing behind a coherent attached processors interface (CAPI) unit | |
US7269754B2 (en) | Method and apparatus for flexible and programmable clock crossing control with dynamic compensation | |
US11029852B2 (en) | Dedicated interface for coupling flash memory and dynamic random access memory | |
US9032274B2 (en) | Method and apparatus for clock and data recovery | |
Gaikwad et al. | Verification of AMBA AXI on-chip communication protocol | |
US9183125B2 (en) | DDR receiver enable cycle training | |
US20120110400A1 (en) | Method and Apparatus for Performing Memory Interface Calibration | |
TWI695176B (zh) | 基於協定之自動化測試器刺激產生器 | |
CN106709116B (zh) | 一种生成rtl级ip核方法及装置 | |
CN104866638B (zh) | 用于dram系统的验证方法 | |
US11430496B2 (en) | Phase-aware DDR command dynamic scheduling | |
EP1650687A1 (en) | Method and apparatus to access modeled memory in a hardware emulator | |
EP2735927A2 (en) | Data processing apparatus and method in PLC system | |
US10007489B1 (en) | Automated method identifying physical memories within a core or macro integrated circuit design | |
US10509877B1 (en) | Systems and methods for reducing latency when transferring I/O between an emulator and target device | |
CN105260545B (zh) | 一种可编程电路系统的验证方法 | |
US12056394B2 (en) | Memory interface training | |
US10885952B1 (en) | Memory data transfer and switching sequence | |
WO2023244473A1 (en) | Control signal training | |
Dedeepya et al. | Memory Controller using Functional Coverage Driven Functional Verification using SV and UVM |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |