CN114356206A - 一种内存训练方法、内存控制器、处理器和电子设备 - Google Patents
一种内存训练方法、内存控制器、处理器和电子设备 Download PDFInfo
- Publication number
- CN114356206A CN114356206A CN202011063745.4A CN202011063745A CN114356206A CN 114356206 A CN114356206 A CN 114356206A CN 202011063745 A CN202011063745 A CN 202011063745A CN 114356206 A CN114356206 A CN 114356206A
- Authority
- CN
- China
- Prior art keywords
- dqs
- delay
- memory controller
- transmission delay
- transmission
- 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.)
- Pending
Links
- 238000012549 training Methods 0.000 title claims abstract description 146
- 238000000034 method Methods 0.000 title claims abstract description 133
- 230000005540 biological transmission Effects 0.000 claims abstract description 777
- 230000007423 decrease Effects 0.000 claims description 17
- 230000009467 reduction Effects 0.000 claims description 15
- 241001522296 Erithacus rubecula Species 0.000 claims description 9
- 238000012546 transfer Methods 0.000 claims description 5
- 230000001276 controlling effect Effects 0.000 claims 20
- 230000001105 regulatory effect Effects 0.000 claims 2
- 230000000644 propagated effect Effects 0.000 claims 1
- 230000008569 process Effects 0.000 abstract description 54
- 230000009286 beneficial effect Effects 0.000 abstract description 14
- 238000010586 diagram Methods 0.000 description 24
- 230000001934 delay Effects 0.000 description 17
- 230000014759 maintenance of location Effects 0.000 description 11
- 238000004590 computer program Methods 0.000 description 8
- 230000003111 delayed effect Effects 0.000 description 7
- 238000013459 approach Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000013473 artificial intelligence Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 238000000926 separation method Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000004904 shortening Methods 0.000 description 4
- 238000003860 storage Methods 0.000 description 4
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 3
- 101001096074 Homo sapiens Regenerating islet-derived protein 4 Proteins 0.000 description 3
- 108700012361 REG2 Proteins 0.000 description 3
- 101150108637 REG2 gene Proteins 0.000 description 3
- 101100120298 Rattus norvegicus Flot1 gene Proteins 0.000 description 3
- 101100412403 Rattus norvegicus Reg3b gene Proteins 0.000 description 3
- 102100037889 Regenerating islet-derived protein 4 Human genes 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 102100023882 Endoribonuclease ZC3H12A Human genes 0.000 description 2
- 101710112715 Endoribonuclease ZC3H12A Proteins 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 230000007613 environmental effect Effects 0.000 description 2
- 230000002349 favourable effect Effects 0.000 description 2
- QGVYYLZOAMMKAH-UHFFFAOYSA-N pegnivacogin Chemical compound COCCOC(=O)NCCCCC(NC(=O)OCCOC)C(=O)NCCCCCCOP(=O)(O)O QGVYYLZOAMMKAH-UHFFFAOYSA-N 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000737 periodic 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/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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- 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
-
- 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/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
- G06F13/4072—Drivers or receivers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/02—Detection or location of defective auxiliary circuits, e.g. defective refresh counters
- G11C29/028—Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/50—Marginal testing, e.g. race, voltage or current testing
- G11C29/50012—Marginal testing, e.g. race, voltage or current testing of timing
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/76—Masking faults in memories by using spares or by reconfiguring using address translation or modifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C2029/1204—Bit line control
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2207/00—Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
- G11C2207/22—Control and timing of internal memory operations
- G11C2207/2254—Calibration
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1078—Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
- G11C7/1093—Input synchronization
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Memory System (AREA)
- Dram (AREA)
Abstract
本申请提供一种内存训练方法、内存控制器、处理器和电子设备,内存控制器保持N个DQ的传输时延不变,并调节DQS的传输时延,确定在N个DQ承载的数据全部传输正确时DQS的最大DQS传输时延和/或最小DQS传输时延。内存控制器将DQS的传输时延调节至位于最大DQS传输时延和最小DQS传输时延之间的目标DQS传输时延。该方法有利于快速对齐DQS与N个DQ之间的相对时序位置,因此可以在处理器工作过程中反复执行内存训练,使N个DQ保持足够的时序裕量。
Description
技术领域
本申请涉及内存训练技术领域,尤其涉及一种内存训练方法、内存控制器、处理器和电子设备。
背景技术
在目前的电子设备中,大多集成有处理器和内存芯片。其中,内存芯片是处理器进行运算的基础,处理器可以通过内存控制器与内存芯片耦合。内存控制器与内存芯片之间通过内存总线连接。其中,内存总线主要包括至少一条数据信号线和时序信号线。每条数据信号线皆可以传输数据信号(data signal),在本申请中用DQ代表数据信号,其中,DQ是双倍速率同步动态随机存储(double data rate synchronous dynamic random accessmemory,DDR SDRAM)协议,又称DDR协议,里面定义的数据信号的简称,而时序信号线则可以传输数据选通脉冲信号(data strobe signal),在本申请中用DQS代表数据选通脉冲信号,其中,DQS是DDR协议里面定义的数据选通脉冲信号的简称,DQ和DQS皆为周期性信号,二者一般具有相同的周期长度。
在大多数情况下,处理器既可以通过内存控制器从内存芯片读取数据,也可以通过内存控制器向内存芯片写入数据。在内存控制器从内存芯片读取数据的过程中,内存控制器可以指示内存芯片向内存控制器发送DQ和DQS,其中,该DQ可以承载内存芯片中内存控制器所要读取的数据,该DQS可以触发内存控制器识别上述DQ的电平状态,内存控制器进而可以根据DQ信号的电平状态获取DQ信号中承载的数据。
在内存控制器向内存芯片写入数据的过程中,内存控制器可以向内存芯片发送DQ和DQS,其中,该DQ可以承载内存控制器所要写入内存芯片的数据,该DQS可以触发内存芯片识别上述DQ的电平状态,进而可以将DQ中承载的数据写入内存芯片。
由以上内存控制器从内存芯片读取数据的过程,以及内存控制器向内存芯片写入数据的过程可见,内存控制器和内存芯片之间数据传输的准确性依赖于DQS与DQ之间的相对时序位置对齐,即只有在相对于DQS,DQ能够具有足够的时序裕量的情况下,才能使DQ的接收端具有较低的误码率,从而保证数据传输的准确性。
虽然大多数的电子设备在上电后会执行内存初始化,内存初始化包括了较为复杂的内存训练,可以精确对齐DQS与DQ之间的相对时序位置,但受限于环境温度、误差累积等客观因素,在电子设备执行完内存初始化之后,DQS与DQ之间的相对时序位置仍可能出现偏移。然而,目前内存训练所使用的方法用时过长,因此无法在电子设备工作过程中反复执行内存训练,随着电子设备工作时间的延长,DQS与DQ之间的相对时序位置的偏移逐渐扩大,电子设备中内存控制器与内存芯片之间数据传输的误码率逐渐提高,数据传输的准确性随之降低。
发明内容
有鉴于此,本申请提供一种内存训练方法,有利于在短时间内对齐同向传输的DQS与DQ之间的相对时序位置,因此可以在处理器工作过程中反复执行内存训练,使内存控制器和内存芯片之间传输的DQ保持足够的时序裕量。
第一方面,本申请实施例提供一种内存训练方法,该方法可以应用于内存控制器,主要包括以下步骤:内存控制器保持N个DQ的传输时延不变,并调节DQS的传输时延,确定在N个DQ承载的数据全部传输正确时DQS的最大DQS传输时延和/或最小DQS传输时延。内存控制器将DQS的传输时延调节至位于最大DQS传输时延和最小DQS传输时延之间的目标DQS传输时延。其中,目标DQS传输时延与最大DQS传输时延之间的间隔不小于接收端适用的目标保持时间,和/或,目标DQS传输时延与最小DQS传输时延之间的间隔不小于接收端适用的目标建立时间。
本申请实施例中,N个DQ和DQS为同向传输的信号,例如N个DQ和DQS均由内存控制器传输到内存芯片,或均由内存芯片传输到内存控制器。DQS可以触发N个DQ的接收端识别N个DQ的电平状态,其中,内存控制器对DQS传输时延的调节用于调节DQS的相位。
具体来说,在N个DQ和DQS由内存控制器传输到内存芯片时,N个DQ的接收端为内存芯片,DQS的传输时延为DQS的发送时延,则内存控制器将DQS的发送时延调节至位于最大DQS发送时延和最小DQS发送时延之间的目标DQS发送时延,目标DQS发送时延与最大DQS发送时延之间的间隔不小于内存芯片适用的目标保持时间,和/或,目标DQS发送时延与最小DQS发送时延之间的间隔不小于内存芯片适用的目标建立时间。在此情况下,N个DQ承载的数据全部传输正确可以理解为内存芯片能够正确识别N个DQ的电平状态,从而可以将N个DQ承载的数据全部正确写入内存芯片。
在N个DQ和DQS由内存芯片传输到内存控制器时,N个DQ的接收端为内存控制器,DQS的传输时延为DQS的接收时延,则内存控制器将DQS的接收时延调节至位于最大DQS接收时延和最小DQS接收时延之间的目标DQS接收时延,目标DQS接收时延与最大DQS接收时延之间的间隔不小于内存控制器适用的目标保持时间,和/或,目标DQS接收时延与最小DQS接收时延之间的间隔不小于内存控制器适用的目标建立时间。在此情况下,N个DQ承载的数据全部传输正确可以理解为内存控制器能够正确识别N个DQ的电平状态,从而可以正确读取N个DQ承载的数据。
在本申请实施例所提供的技术方案中,内存控制器通过调节DQS的传输时延便可以对齐N个DQ和DQS之间的相对时序位置,使N个DQ具有足够的时序裕量。相较于分别调节DQS和N个DQ传输时延的内存训练方案,本申请实施例减少了调节传输时延的步骤,有利于快速对齐DQS与N个DQ之间的相对时序位置,因此可以在处理器工作过程中反复执行内存训练,使N个DQ保持足够的时序裕量。
接下来,对内存控制器确定最小DQS传输时延的具体实现方式作进一步的示例性说明:
在一种可能的实现方式中,内存控制器可以从初始DQS传输时延开始,逐渐缩小DQS的传输时延,直至出现至少一个DQ所承载的数据传输错误。此时,DQS的传输时延便可以作为最小DQS传输时延。
在另一种可能的实现方式中,内存控制器可以先将DQS的传输时延缩小至第一DQS传输时延,该第一DQS传输时延与缩小前的DQS的传输时延之间间隔接收端所适用的目标建立时间;当存在至少一个DQ承载的数据传输错误时,内存控制器逐渐增大DQS的传输时延,直至N个DQ承载的数据全部传输正确时,确定对应的DQS的传输时延为DQS的最小DQS传输时延。
其中,缩小前的DQS的传输时延可以是初始DQS传输时延,例如可以是内存控制器开始执行本次内存训练之前或开始执行本次内存训练时DQS的传输时延。
由于接收端所适用的目标建立时间往往小于DQ的半周期的时长,因此缩小后的DQS的传输时延与最小传输时延之间的距离不会超过接收端所适用的目标建立时间。采用该实现方式,可以减少调节DQS传输时延的步骤,快速确定最小DQS传输时延。
示例性的,内存控制器在逐渐增大DQS的传输时延时,可以按照每次增大第一DQS调节幅度的方式,逐渐增大DQS的传输时延。其中,第一DQS调节幅度小于接收端适用的目标建立时间。例如,第一DQS调节幅度可以是内存控制器对DQS的传输时延的最小调节幅度。
接下来,对内存控制器确定最大DQS传输时延的具体实现方式作进一步的示例性说明:
在一种可能的实现方式中,内存控制器可以从初始DQS传输时延开始,逐渐增大DQS的传输时延,直至出现至少一个DQ所承载的数据传输错误。此时,DQS的传输时延便可以作为最大DQS传输时延。
在另一种可能的实现方式中,内存控制器可以将DQS的传输时延增大至第二DQS传输时延,该第二DQS传输时延与增大前的DQS的传输时延之间间隔接收端适用的目标保持时间;当存在至少一个DQ承载的数据传输错误时,内存控制器逐渐缩小对DQS的传输时延,直至N个DQ承载的数据全部传输正确时,确定对应的DQS的传输时延为DQS的最大DQS传输时延。
其中,增大前的DQS的传输时延可以是初始DQS传输时延,例如可以是内存控制器开始执行本次内存训练之前或开始执行本次内存训练时DQS的传输时延。
采用该实现方式,有利于减小调节DQS传输时延的次数,从而有利于快速确定最大DQS传输时延。具体分析与前述确定最小DQS传输时延类似,对此不再赘述。
示例性的,内存控制器在逐渐缩小DQS的传输时延时,可以按照每次缩小第二DQS调节幅度的方式,逐步缩小DQS的传输时延。其中,第二DQS调节幅度小于接收端适用的目标保持时间。例如,第二DQS调节幅度可以是内存控制器对DQS的传输时延的最小调节幅度。
第二方面,本申请实施例提供一种内存训练方法,该方法可以应用于内存控制器,主要包括以下步骤:内存控制器保持DQS的传输时延不变,并调节第一DQ的传输时延,从而确定在第一DQ承载的数据传输正确时第一DQ的最大DQ传输时延和/或最小DQ传输时延。内存控制器将第一DQ的传输时延调节至位于最大DQ传输时延和最小DQ传输时延之间的目标DQ传输时延,目标DQ传输时延与最大DQ传输时延之间的间隔不小于接收端适用的目标建立时间,和/或,目标DQ传输时延与最小DQ传输时延之间的间隔不小于接收端适用的目标保持时间。
本申请实施例中,DQS和第一DQ为同向传输的信号。例如,DQS与第一DQ可以均由内存控制器传输到内存芯片,或均由内存芯片传输到内存控制器,DQS可以触发第一DQ的接收端识别第一DQ的电平状态,其中,内存控制器对第一DQ的传输时延的调节用于调节第一DQ的相位。
具体来说,在第一DQ和DQS由内存控制器传输到内存芯片时,第一DQ的接收端为内存芯片,第一DQ的传输时延为第一DQ的发送时延,则内存控制器将第一DQ的发送时延调节至位于最大DQ发送时延和最小DQ发送时延之间的目标DQ发送时延。目标DQ发送时延与最大DQ发送时延之间的间隔不小于内存芯片适用的目标建立时间,和/或,目标DQ发送时延与最小DQ发送时延之间的间隔不小于目标芯片适用的目标建立时间。
在第一DQ和DQS由内存芯片传输到内存控制器时,第一DQ的接收端为内存控制器,第一DQ的传输时延为第一DQ的接收时延,则内存控制器将第一DQ的接收时延调节至位于最大DQ接收时延和最小DQ接收时延之间的目标DQ接收时延。目标DQ接收时延与最大DQ接收时延之间的间隔不小于内存控制器适用的目标建立时间,和/或,目标DQ接收时延与最小DQ接收时延之间的间隔不小于内存控制器适用的目标保持时间。
本申请实施例中,DQS可以与N个DQ对应,即该DQS可以触发N个DQ的接收端识别该N个DQ的电平状态。本申请实施例中,第一DQ位于N个DQ内,可以是其中的一个DQ。在此情况下,内存控制器在调节第一DQ的传输时延之前,还可以按照轮循规则,确定N个DQ中前一次完成内存训练的DQ的下一个DQ为第一DQ。
在本申请实施例中,内存控制器在每次内存训练过程中只调节一个DQ(第一DQ)的传输时延,相较于分别调节DQS和DQ传输时延的内存训练方案,本申请实施例减少了调节传输时延的步骤,有利于快速对齐DQS与第一DQ之间的相对时序位置。而且,在调节其中一个DQ的传输时延时,处理器仍可以通过其它DQ访问内存芯片,从而有利于进一步降低内存训练对处理器工作的影响。因此可以在处理器工作过程中反复执行内存训练,使N个DQ保持足够的时序裕量。
接下来,对控制电路确定最小DQ传输时延的方式作进一步说明:
在一种可能的实现方式中,内存控制器可以从初始DQ传输时延开始,逐渐缩小第一DQ的传输时延,直至第一DQ所承载的数据传输错误。此时,第一DQ的传输时延便可以作为最小DQ传输时延。
在另一种可能的实现方式中,内存控制器可以将第一DQ的传输时延缩小至第一DQ传输时延,该第一DQ传输时延与缩小前的第一DQ的传输时延之间间隔接收端所适用的目标保持时间;当第一DQ承载的数据传输错误时,内存控制器可以逐渐增大对第一DQ的传输时延,直至第一DQ承载的数据传输正确时,确定对应的第一DQ的传输时延为最小DQ传输时延。
其中,缩小前的第一DQ的传输时延可以是初始DQ传输时延,例如可以是内存控制器可以开始执行本次内存训练之前或开始执行本次内存训练时第一DQ的传输时延。
由于接收端所适用的目标保持时间往往小于第一DQ的半周期,而缩小后的第一DQ的传输时延与最小DQ传输时延之间又不会超过接收端所适用的目标保持时间,因此本实现方式有利于减少调节第一DQ传输时延的次数,从而可以快速确定最小DQ传输时延。
示例性的,内存控制器在逐渐增大第一DQ的传输时延时,可以按照每次增大第一DQ调节幅度的方式,逐渐增大第一DQ的传输时延。其中,第一DQ调节幅度小于接收端适用的目标保持时间。示例性的,第一DQ调节幅度为时延电路对第一DQ的传输时延的最小调节幅度。
接下来,对内存控制器确定最大DQ传输时延的方式作进一步说明:
在一种可能的实现方式中,内存控制器可以从初始DQ传输时延开始,逐渐增大第一DQ的传输时延,直至第一DQ所承载的数据传输错误。此时,第一DQ的传输时延便可以作为最大DQ传输时延。
在另一种可能的实现方式中,内存控制器可以将第一DQ的传输时延增大至第二DQ传输时延,该第二DQ传输时延与增大前的第一DQ的传输时延之间间隔接收端适用的目标建立时间;当第一DQ承载的数据传输错误时,控制电路可以控制时延电路逐渐缩小第一DQ的传输时延,直至第一DQ承载的数据传输正确时,确定对应的第一DQ的传输时延为最大DQ传输时延。
其中,增大前的第一DQ的传输时延可以是初始DQ传输时延,例如可以是控制电路开始执行本次内存训练之前或开始执行本次内存训练时第一DQ的传输时延。
采用该实现方式,有利于减小调节第一DQ传输时延的次数,从而有利于快速确定最大DQ传输时延。具体分析与前述确定最小DQ传输时延类似,对此不再赘述。
示例性的,控制电路可以控制时延电路按照每次缩小第二DQ调节幅度的方式,逐渐缩小第一DQ的传输时延。其中,第二DQ调节幅度小于接收端适用的目标建立时间,例如,第二DQ调节幅度可以是时延电路对第一DQ的传输时延的最小调节幅度。
第三方面,本申请实施例提供一种内存控制器,该内存控制器可以实现上述第一方面中任一项所提供的内存训练方法。第三方面中相应方案的技术效果可以参照第一方面中对应方案可以得到的技术效果,重复之处不予详述。示例性的:
内存控制器主要包括时延电路和控制电路。时延电路可以在控制电路的控制下产生DQS的传输时延。时延电路调节DQS的传输时延,可以调节DQS的相位。控制电路可以控制时延电路保持N个DQ的传输时延不变,并控制时延电路调节DQS的传输时延,从而确定在N个DQ承载的数据全部传输正确时DQS的最大DQS传输时延和/或最小DQS传输时延。其中,上述N个DQ和DQS均由内存控制器传输到内存芯片,或均由内存芯片传输到内存控制器,DQS可以触发N个DQ的接收端识别N个DQ的电平状态。在N个DQ和DQS由内存控制器传输到内存芯片时,N个DQ的接收端为内存芯片,在N个DQ和DQS由内存芯片传输到内存控制器时,N个DQ的接收端为内存控制器。控制电路控制时延电路将DQS的传输时延调节至位于最大DQS传输时延和最小DQS传输时延之间的目标DQS传输时延,目标DQS传输时延与最大DQS传输时延之间的间隔不小于接收端适用的目标保持时间,和/或,目标DQS传输时延与最小DQS传输时延之间的间隔不小于接收端适用的目标建立时间。
具体来说,N个DQ和DQS可以由内存控制器传输到内存芯片,DQS的传输时延为DQS的发送时延。在此情况下,控制电路可以控制时延电路将DQS的发送时延调节至位于最大DQS发送时延和最小DQS发送时延之间的目标DQS发送时延。
N个DQ和DQS也可以由内存芯片传输到内存控制器,DQS的传输时延为DQS的接收时延。在此情况下,控制电路可以控制时延电路将DQS的接收时延调节至位于最大DQS接收时延和最小DQS接收时延之间的目标DQS接收时延。
接下来,对控制电路确定最小DQS传输时延的方式作进一步说明:
在一种可能的实现方式中,控制电路可以控制时延电路从初始DQS传输时延开始,逐渐缩小DQS的传输时延,直至出现至少一个DQ所承载的数据传输错误。此时,DQS的传输时延便可以作为最小DQS传输时延。
在另一种可能的实现方式中,控制电路可以控制时延电路将DQS的传输时延缩小至第一DQS传输时延,该第一DQS传输时延与缩小前的DQS的传输时延之间间隔接收端所适用的目标建立时间;当存在至少一个DQ承载的数据传输错误时,控制电路控制时延电路逐渐增大DQS的传输时延,直至N个DQ承载的数据全部传输正确时,确定对应的DQS的传输时延为DQS的最小DQS传输时延。
其中,缩小前的DQS的传输时延可以是初始DQS传输时延,例如可以是控制电路开始执行本次内存训练之前或开始执行本次内存训练时DQS的传输时延。
示例性的,控制电路在控制时延电路逐渐增大DQS的传输时延时,可以控制时延电路按照每次增大第一DQS调节幅度的方式,逐渐增大DQS的传输时延。其中,第一DQS调节幅度小于接收端适用的目标建立时间。例如,第一DQS调节幅度可以是时延电路对DQS的传输时延的最小调节幅度。
接下来,对控制电路确定最大DQS传输时延的方式作进一步说明:
在一种可能的实现方式中,控制电路可以控制时延电路从初始DQS传输时延开始,逐渐增大DQS的传输时延,直至出现至少一个DQ所承载的数据传输错误。此时,DQS的传输时延便可以作为最大DQS传输时延。
在另一种可能的实现方式中,控制电路可以控制时延电路将DQS的传输时延增大至第二DQS传输时延,该第二DQS传输时延与增大前的DQS的传输时延之间间隔接收端适用的目标保持时间;当存在至少一个DQ承载的数据传输错误时,控制电路控制时延电路逐渐缩小对DQS的传输时延,直至N个DQ承载的数据全部传输正确时,确定对应的DQS的传输时延为DQS的最大DQS传输时延。
其中,增大前的DQS的传输时延可以是初始DQS传输时延,例如可以是控制电路开始执行本次内存训练之前或开始执行本次内存训练时DQS的传输时延。
示例性的,控制电路在控制时延电路逐渐缩小DQS的传输时延时,可以控制时延电路按照每次缩小第二DQS调节幅度的方式,逐步缩小DQS的传输时延。其中,第二DQS调节幅度小于接收端适用的目标保持时间。例如,第二DQS调节幅度可以是时延电路对DQS的传输时延的最小调节幅度。
第四方面,本申请实施例提供一种内存控制器,该内存控制器可以实现上述第二方面中任一项所提供的内存训练方法。第四方面中相应方案的技术效果可以参照第二方面中对应方案可以得到的技术效果,重复之处不予详述。示例性的:
时延电路可以在控制电路的控制下产生第一DQ的传输时延。时延电路调节第一DQ的传输时延,可以调节第一DQ的相位。控制电路可以控制时延电路保持DQS的传输时延不变,并控制时延电路调节第一DQ的传输时延,从而确定在第一DQ承载的数据传输正确时第一DQ的最大DQ传输时延和/或最小DQ传输时延。其中,上述DQS与第一DQ均由内存控制器传输到内存芯片,或均由内存芯片传输到内存控制器,DQS可以触发第一DQ的接收端识别第一DQ的电平状态,其中在第一DQ和DQS由内存控制器传输到内存芯片时,第一DQ的接收端为内存芯片,在第一DQ和DQS由内存芯片传输到内存控制器时,第一DQ的接收端为内存控制器;控制电路控制时延电路将第一DQ的传输时延调节至位于最大DQ传输时延和最小DQ传输时延之间的目标DQ传输时延,目标DQ传输时延与最大DQ传输时延之间的间隔不小于接收端适用的目标建立时间,和/或,目标DQ传输时延与最小DQ传输时延之间的间隔不小于接收端适用的目标保持时间。
其中,上述DQS可以与N个DQ相对应,第一DQ位于该N个DQ内。控制电路在控制时延电路保持DQS的传输时延不变,并控制时延电路调节第一DQ的传输时延之前,还可以先按照轮循规则,确定N个DQ中前一次完成内存训练的DQ的下一个DQ为上述第一DQ。
具体来说,第一DQ和DQS可以均由内存控制器传输到内存芯片,第一DQ的传输时延为第一DQ的发送时延。在此情况下,控制电路可以控制时延电路将第一DQ的发送时延调节至位于最大DQ发送时延和最小DQ发送时延之间的目标DQ发送时延。
第一DQ和DQS也可以均由内存芯片传输到内存控制器,第一DQ的传输时延为第一DQ的接收时延。在此情况下,控制电路可以控制时延电路将第一DQ的接收时延调节至位于最大DQ接收时延和最小DQ接收时延之间的目标DQ接收时延。
接下来,对控制电路确定最小DQ传输时延的方式作进一步说明:
在一种可能的实现方式中,控制电路可以控制时延电路从初始DQ传输时延开始,逐渐缩小第一DQ的传输时延,直至第一DQ所承载的数据传输错误。此时,第一DQ的传输时延便可以作为最小DQ传输时延。
在另一种可能的实现方式中,控制电路可以控制时延电路将第一DQ的传输时延缩小至第一DQ传输时延,该第一DQ传输时延与缩小前的第一DQ的传输时延之间间隔接收端所适用的目标保持时间;当第一DQ承载的数据传输错误时,控制电路可以控制时延电路逐渐增大对第一DQ的传输时延,直至第一DQ承载的数据传输正确时,确定对应的第一DQ的传输时延为最小DQ传输时延。
其中,缩小前的第一DQ的传输时延可以是初始DQ传输时延,例如可以是控制电路开始执行本次内存训练之前或开始执行本次内存训练时第一DQ的传输时延。
示例性的,控制电路在控制时延电路逐渐增大第一DQ的传输时延时,可以控制时延电路按照每次增大第一DQ调节幅度的方式,逐渐增大第一DQ的传输时延。其中,第一DQ调节幅度小于接收端适用的目标保持时间。示例性的,第一DQ调节幅度为时延电路对第一DQ的传输时延的最小调节幅度。
接下来,对控制电路确定最大DQ传输时延的方式作进一步说明:
在一种可能的实现方式中,控制电路可以控制时延电路从初始DQ传输时延开始,逐渐增大第一DQ的传输时延,直至第一DQ所承载的数据传输错误。此时,第一DQ的传输时延便可以作为最大DQ传输时延。
在另一种可能的实现方式中,控制电路可以控制时延电路将第一DQ的传输时延增大至第二DQ传输时延,该第二DQ传输时延与增大前的第一DQ的传输时延之间间隔接收端适用的目标建立时间;当第一DQ承载的数据传输错误时,控制电路可以控制时延电路逐渐缩小第一DQ的传输时延,直至第一DQ承载的数据传输正确时,确定对应的第一DQ的传输时延为最大DQ传输时延。
其中,增大前的第一DQ的传输时延可以是初始DQ传输时延,例如可以是控制电路开始执行本次内存训练之前或开始执行本次内存训练时第一DQ的传输时延。
示例性的,控制电路可以控制时延电路按照每次缩小第二DQ调节幅度的方式,逐渐缩小第一DQ的传输时延。其中,第二DQ调节幅度小于接收端适用的目标建立时间,例如,第二DQ调节幅度可以是时延电路对第一DQ的传输时延的最小调节幅度。
第五方面,本申请实施例提供一种内存训练装置,该内存训练装置可以是内存控制器。示例性的,该内存训练装置可以执行上述第一方面或第二中任一项所提供的内存训练方法。具体地,所述第二通信装置可以包括用于执行第二方面或任一可能的实施方式中的方法的模块,例如包括控制单元和时延单元。
示例性地,时延单元可以为DQS或第一DQ施加传输时延,控制单元可以通过控制时延单元调节DQS或第一DQ传输时延,使内存训练装置能够执行上述第一方面或第二方面中任一项所提供的内存训练方法。
第六方面,本申请实施例还提供一种处理器,该处理器可以包括处理器核和上述第三方面和第四方面中任一项所提供的内存控制器。处理器核可以向内存控制器发送触发指令;内存控制器可以在接收到所述触发指令后执行内存训练。
示例性的,处理器核可以在确定当前环境温度与历史环境温度之间的差值超过温度波动阈值时,向内存控制器发送触发指令,其中,历史环境温度为处理器核前一次发送触发指令时的环境温度。
示例性的,处理器核可以在确定当前时间点与处理器核前一次执行完内存训练的时间点之间的时间间隔超过时间阈值时,向内存控制器发送所述触发指令。
第七方面,本申请提供一种电子设备,该电子设备可以包括如第六方面所提供的处理器和内存芯片,内存芯片与处理器中的内存控制器连接。
第八方面,本申请实施例提供一种电子设备,该电子设备主要包括处理器、内存芯片和内存控制器,该内存控制器可以是如上述第三方面和第四方面中任一项所提供的内存控制器。内存控制器分别与处理器和内存芯片连接;
处理器可以向内存控制器发送触发指令;内存控制器可以在接收到该触发指令后执行内存训练。
例如,处理器可以在确定当前环境温度与历史环境温度之间的差值超过温度波动阈值时,向内存控制器发送触发指令,其中,历史环境温度为处理器前一次发送触发指令时的环境温度。
又例如,处理器可以在确定当前时间点与前一次发送触发指令的时间点之间的时间间隔超过时间阈值时,向内存控制器发送触发指令。
第九方面,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在内存控制器上运行时,使得内存控制器执行上述各方面所述的方法。
第十方面,本申请实施例还提供一种包括指令的计算机程序产品,当其在内存控制器上运行时,使得内存控制器执行上述各方面所述的方法。
本申请的这些方面或其它方面在以下实施例的描述中会更加简明易懂。
附图说明
图1为一种电子设备结构示意图;
图2为一种DQ和DQS对应关系示意图;
图3为一种内存控制器中的寄存器示意图;
图4a至图4e为一种内存训练过程中DQ和DQS的传输时延调节示意图;
图5为一种内存初始化流程示意图;
图6为本申请实施例提供的一种内存训练方法流程示意图;
图7为本申请实施例提供的一种DQ与DQS之间相对时序位置关系示意图;
图8为本申请实施例提供的一种确定最大DQS发送时延和/或最小DQS发送时延方法流程示意图;
图9a和图9b为本申请实施例提供的一种内存训练过程中DQS的传输时延调节示意图;
图10为本申请实施例提供的一种内存训练方法流程示意图;
图11a至图11d为本申请实施例提供的一种内存训练过程中DQ和DQS的传输时延调节示意图;
图12为本申请实施例提供的一种内存训练方法流程示意图;
图13为本申请实施例提供的一种最大DQ发送时延和最小DQ发送时延示意图;
图14为本申请实施例提供的一种确定最大DQ发送时延和/或最小DQ发送时延方法流程示意图;
图15为本申请实施例提供的一种内存训练过程中DQ的传输时延调节示意图;
图16为本申请实施例提供的一种内存训练过程中DQ的传输时延调节示意图;
图17为本申请实施例提供的一种内存训练方法流程示意图;
图18为本申请实施例提供的一种内存训练过程中DQ的传输时延调节示意图;
图19为本申请实施例提供的一种内存训练过程中DQ的传输时延调节示意图;
图20为本申请实施例提供的一种轮循规则示意图;
图21为本申请实施例提供的一种内存控制器结构示意图;
图22为本申请实施例提供的一种电子设备结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述。方法实施例中的具体操作方法也可以应用于装置实施例或系统实施例中。需要说明的是,在本申请的描述中“至少一个”是指一个或多个,其中,多个是指两个或两个以上。鉴于此,本发明实施例中也可以将“多个”理解为“至少两个”。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。另外,需要理解的是,在本申请的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
在电子设备(如智能手机、平板电脑、基站、智能摄像机、自动驾驶车辆等)中,内存芯片是处理器进行运算的基础,处理器可以通过内存控制器与内存芯片耦合。其中,内存控制器可以与处理器连接,也可以集成在处理器内部。
示例性的,如图1所示,电子设备10主要包括处理器11和内存芯片12,处理器11包括处理器核112和内存控制器111。在另一种可能的架构中,内存控制器111位于处理器11外部,对此不再赘述。
本申请实施例中,处理器核112可以是具备逻辑运算能力的逻辑电路,内存芯片12可以是支持双倍速率同步动态随机存储(double data rate synchronous dynamicrandom access memory,DDR SDRAM)的内存芯片,其中,DDR SDRAM通常简称为DDR,例如,内存芯片12可以支持第5代DDR(5th DDR,DDR5),具体如低功耗DDR5(low power DDR5,LPDDR5)。内存芯片12也可以支持第4代DDR(4th DDR,DDR4),具体如低功耗DDR4(low powerDDR4,LPDDR4)。
图1中,内存控制器111和内存芯片12之间通过内存总线13连接。其中,内存总线13主要包括多条数据信号线(如图1中的数据信号线L0至L7),和多条时序信号线(如图1中的时序信号线LS-P和LS-N)。
数据信号线L0至数据信号线L7可以并行传输8个数据信号(data signal,DQ)。例如,数据信号线L0可以传输DQ0,数据信号线L1可以传输DQ1,……,数据信号线L7可以传输DQ7。应理解,DQ为周期性的数字信号,因此能够承载数据。例如,DQ在一个周期内可以传输1bit数据,其中,在一个低电平的周期内,可以传输1bit数据“0”,在一个高电平的周期内,可以传输1bit数据“1”。由于数据信号线L0至数据信号线L7可以并行传输8个DQ,因此在一个周期内,数据信号线L0至数据信号线L7共传输8bit数据。
可以理解,由于DQ为数字信号,DQ的接收端需要借助于与DQ同周期的时钟信号才能正确区分DQ的周期,从而正确识别DQ的电平状态,进而正确获取DQ所承载的数据。有鉴于此,内存总线13中还可以包括时序信号线LS-N和时序信号线LS-P,时序信号线LS-N和时序信号线LS-P可以传输数据选通脉冲信号(data strobe signal,DQS)。
具体来说,时序信号线LS-N可以传输DQS-N,时序信号线LS-P可以传输DQS-P。其中,DQS-N和DQS-P为反相信号,示例性的,DQS-N和DQS-P可以如图2所示。DQS包括DQS-N和DQS-P,DQS可以作为与DQ对应的时钟信号,与DQ具有相同的发送端和接收端,可以触发DQ的接收端识别DQ的电平状态。为了便于表述,本申请实施例接下来以DQS代指DQS-N和DQS-P。
需要指出的是,通过内存总线13能够实现内存控制器111与内存芯片12之间双向的数据传输。例如,在内存控制器111向内存芯片12写入数据的过程中,可以由内存控制器111作为DQS和DQ的发送端,由内存芯片12作为DQS和DQ的接收端。在内存控制器111从内存芯片12读取数据的过程中,可以由内存芯片12作为DQS和DQ的发送端,由内存控制器111作为DQS和DQ的接收端。
为了便于表述,本申请实施例接下来以写DQ和写DQS分别表示内存控制器111向内存芯片12写入数据的过程中,内存控制器111向内存芯片12发送的DQ和DQS;以及,以读DQ和读DQS分别表示内存控制器111从内存芯片12读取数据的过程中,内存芯片12向内存控制器111发送的DQ和DQS。其中,写DQ包括写DQ0至写DQ7,读DQ包括读DQ0至读DQ7。
接下来,分别对写入数据和读取数据的具体实现进行说明:
场景一:内存控制器111向内存芯片12写入数据
在处理器11运行过程中,处理器核112可以调用内存控制器111向内存芯片12中写入数据。处理器核112调用内存控制器111的具体实现可以参考现有技术,本申请实施例对此并不多作限制。
内存控制器111在处理器112的调用下,可以向内存芯片12写入数据。具体来说,内存控制器111可以通过数据信号线L0至数据信号线L7向内存芯片12发送写DQ0至写DQ7,其中,内存控制器111所发送的写DQ0至写DQ7可以承载需要写入内存芯片12的目标写入数据。
在内存控制器111向内存芯片12写入数据的过程中,内存控制器111还会向内存芯片12发送写DQS,写DQS可以触发内存芯片12识别写DQ0至写DQ7的电平状态,内存芯片12进而可以根据识别到的电平状态存储写DQ0至写DQ7所承载的数据,从而实现了向内存芯片12写入数据。
一般来说,在内存控制器111向内存芯片12发送的写DQS中,写DQS-N与写DQS-P之间的交叉点(如图2所示)可以作为触发内存芯片12识别写DQ的电平状态的触发点。也就是说,当内存芯片12确定接收到的写DQS处于交叉点时,内存芯片12可以识别当前写DQ0至写DQ7的电平状态,从而可以将写DQ0至写DQ7所承载的目标写入数据写入内存芯片12。
例如,目标写入数据为11010011,则对应于写DQS中的同一个交叉点,此时的写DQ0至写DQ7分别承载的数据为:写DQ0可以承载“1”,写DQ1可以承载“1”,写DQ2可以承载“0”,写DQ3可以承载“1”,写DQ4可以承载“0”,写DQ5可以承载“0”,写DQ6可以承载“1”,写DQ7可以承载“1”。
内存芯片12在确定接收到的写DQS处于交叉点时,可以识别接收到的写DQ0至写DQ7的电平状态。如上例中,写DQ0为高电平(承载“1”),写DQ1为高电平(承载“1”),写DQ2为低电平(承载“0”),写DQ3为高电平(承载“1”),写DQ4为低电平(承载“0”),写DQ5为低电平(承载“0”),写DQ6为高电平(承载“1”),写DQ7为高电平(承载“1”)。内存芯片12进而可以根据识别到的写DQ0至写DQ7的电平状态,存储目标写入数据“11010011”。
场景二:内存控制器111从内存芯片12读取数据
在处理器11运行过程中,处理器核112可以调用内存控制器111从内存芯片12中读取数据。处理器核112调用内存控制器111的具体实现可以参考现有技术,本申请实施例对此并不多作限制。
内存控制器111在处理器核112的调用下,可以指示内存芯片12向内存控制器111发送目标读取数据,从而使内存控制器111读取内存芯片12中的目标读取数据。其中,内存控制器111指示内存芯片12的具体实现可以参考现有技术,本申请实施例对此并不多作限制。
内存芯片12可以通过数据信号线L0至数据信号线L7向内存控制器111发送读DQ0至读DQ7,该读DQ0至读DQ7可以承载发送给内存控制器111的目标读取数据。内存芯片12在向内存控制器111发送读DQ0至读DQ7时,内存芯片12还会向内存控制器111发送读DQS。内存控制器111可以根据读DQS识别读DQ0至读DQ7的电平状态,并根据识别到的电平状态获取读DQ0至读DQ7所承载的目标读取数据,从而实现了从内存芯片12读取数据。
读DQS以及读DQ0至读DQ7的具体实现类似于上述场景一,对此不再赘述。区别在于,在内存芯片12向内存控制器111发送的读DQS中,通常可以由相邻的两个交叉点之间的中间点作为触发内存控制器111识别读DQ0至读DQ7的电平状态的触发点。也就是说,当内存芯片12确定接收到的读DQS处于中间点时,内存控制器111可以识别当前读DQ0至读DQ7的电平状态,以获取读DQ0至读DQ7所承载的目标读取数据。
由以上场景一和场景二可见,内存控制器111与内存芯片12之间是否能够准确传输数据,与同向传输的DQS和DQ之间的相对时序位置是否对齐息息相关。其中,同向传输的DQS和DQ可以理解为读DQS和读DQ,也可以理解为写DQS和写DQ。
以图2所示的写DQS和写DQ为例,该写DQ可以是写DQ0至写DQ7中的任一写DQ。写DQS的交叉点作为触发点,该交叉点对应的写DQ的周期是指该交叉点发生的时刻所落在的那个写DQ周期。由图2可见,写DQS的触发点(交叉点)可以将与该触发点对应的写DQ的周期分为两部分,在触发点之前的部分为建立(setup)时间,触发点之后的部分为保持(hold)时间。假设内存芯片12接收到的任一个写DQ周期的起始时间点为t1,该写DQ周期的结束时间点为t2,在t1与t2之间,内存芯片12接收到的写DQS处于触发点的时间点为t0。在此情况下,t1至t0之间的时间段可以称为建立时间,t0至t2之间的时间段可以称为保持时间。
写DQ的建立时间充足,有利于提高数据传输的准确性。具体来说,由于写DQ为数字信号,因此写DQ的电平状态往往是变化的,即在任一周期内写DQ既可能是低电平,也可能是高电平。在相邻的两个周期之间,写DQ的电平状态既可能保持不变,也可能由低电平变为高电平,还可能由高电平变为低电平。
通常,高电平和低电平是相对于参考电平而言的,即若写DQ的电平低于参考电平,则写DQ为低电平,若写DQ的电平高于参考电平,则写DQ为高电平。当写DQ的电平状态发生变化时,往往需要一定的时延才能完成电平状态切换。示例性的,如图2所示,写DQ的电平在tmin和tmax时到达参考电平。
以前一周期的低电平切换为当前周期的高电平为例,若建立时间不足,如t0位于t1与tmin之间,则在t0时写DQ的电平有可能尚未完全升至大于参考电平的高电平,此时内存芯片12便有可能误以为是写DQ在当前周期为低电平。也即,当前周期的写DQ本应该是高电平,却因为t0位于t1与tmin之间且电平没有完全上升至大于参考电平而被误识别为低电平,进而使写入内存芯片12的数据出现错误。因此,为了保证内存控制器111与内存芯片12之间数据传输的准确性,需要确保建立时间足够长。
写DQ的保持时间充足,也有利于提高数据传输的准确性。具体来说,内存芯片12需要一定的时延才能识别出写DQ的电平状态。以当前周期的高电平切换为下一周期的低电平为例,在t0时内存芯片12开始识别写DQ的电平状态。若保持时间不足,如t0位于tmax与t2之间,则在内存芯片12识别写DQ的电平状态期间,写DQ的电平有可能下降至低于参考电平(写DQ在下一周期为低电平),使内存芯片12误将当前周期的电平识别为低电平,进而使写入内存芯片12的数据出现错误。也就是说,写DQ在当前周期的电平本应当是高电平,却因为t0位于tmax与t2之间且电平下降至低于参考电平而被误以为是低电平。因此,为了保证内存控制器111与内存芯片12之间数据传输的准确性,需要确保保持时间足够长。
综上,为了提高内存控制器111与内存芯片12之间数据传输的准确性,需要写DQ的保持时间和建立时间皆具有较长的时长。当写DQ的保持时间或建立时间的时长不足时,便会使内存控制器111与内存芯片12之间的数据传输的准确性降低,误码率提高。
一般来说,内存控制器111和内存芯片12中参考电压的大小相同。也就是说,对于图2所示的写DQS与写DQ,tmin与t1之间的时间间隔也可以称为内存芯片12所适用的最小建立时间,tmax与t2之间的时间间隔也可以称为内存芯片t2所适用的最小保持时间。
在一个写DQ的周期内,写DQS的建立时间与内存芯片12所适用的最小建立时间之间的差值可以称为写DQ的建立时间的时序裕量,写DQS的保持时间与内存芯片12所适用的最小保持时间之间的差值可以称为写DQ的保持时间的时序裕量。写DQ的建立时间的时序裕量与保持时间的时序裕量中的最小值可以理解为写DQ的时序裕量。例如图2中,写DQ的时序裕量为t0与tmin之间的差值,以及tmax与t0之间的差值之间的最小值。
一般来说,tmin和tmax之间的时间间隔主要由内存芯片12的性能决定。也就是说,对于内存控制器111而言,写DQ的建立时间的时序裕量和保持时间的时序裕量之和是不可调的。在此情况下,内存控制器111可以将写DQS的交叉点对应的时间点t0调节至tmin和tmax的中间位置,即写DQ的建立时间的时序裕量与保持时间的时序裕量相等,因此可以使写DQ的时序裕量达到最大值,从而可以从时序裕量的角度最优化内存控制器111向内存芯片12传输数据的准确性。
基于相同的道理,在内存控制器111从内存芯片12读取数据的过程中,内存芯片12向内存控制器111发送的读DQ的保持时间与内存控制器111所适用的最小保持时间之间的差值也可以称为读DQ的保持时间的时序裕量。读DQ的建立时间与内存控制器111所适用的最小建立时间之间的差值也可以称为读DQ的建立时间的时序裕量。读DQ的时序裕量可以理解为读DQ的保持时间的时序裕量和建立时间的时序裕量的最小值。当内存芯片12向内存控制器111发送的读DQ中保持时间的时序裕量和建立时间的时序裕量相等时可以使读DQ的时序裕量达到最大值。在此情况下,可以从时序裕量的角度最优化内存芯片12向内存控制器111传输数据的准确性。
为了提高读DQ和写DQ的时序裕量,从而提高内存控制器111和内存芯片12之间数据传输的准确性,往往需要将同向传输的DQ和DQS的相对时序位置对齐,该过程也常被称为内存训练。
本申请实施例中,“对齐”可以理解为同向传输的DQS和DQ中,DQ的保持时间的时序裕量和建立时间的时序裕量相等,或DQ的保持时间的时序裕量和建立时间的时序裕量相差不大,使DQ具有较为充足的保持时间的时序裕量和建立时间的时序裕量。DQ的建立时间的时序裕量是相对于接收端所适用的最小建立时间而言的,DQ的保持时间的时序裕量也是相对于接收端所适用的最小保持时间而言的,也就是说,“对齐”可以使DQ的建立时间不小于接收端所适用的最小建立时间,使DQ的保持时间不小于接收端所适用的最小保持时间。
其中,接收端既可以是内存芯片12,也可以是内存控制器111。接收端所适用的最小建立时间和最小保持时间可以是根据接收端的结构、性能等因素得到的。若DQ的建立时间小于接收端所适用的最小建立时间,或者DQ的保持时间小于接收端所适用的最小保持时间,则会导致接收端无法正确识别DQ承载的数据。
有鉴于此,在电子设备10开机期间,处理器11上电后的初始化期间可以执行内存训练,以对齐同向传输的DQ和DQS之间的相对时序位置。目前出现了诸多复杂的内存训练方案,在大多数的内存训练方案中,主要由内存控制器111调节DQ和DQS的传输时延,从而改变DQ和DQS的相位,使同向传输的DQ和DQS的相对时序位置对齐。
具体来说,写DQ和写DQS的传输时延可以称为发送时延,内存控制器111调节写DQ和写DQS的发送时延,使写DQ和写DQS的相对时序位置对齐。读DQ和读DQS的传输时延可以称为接收时延,内存控制器111调节读DQ和读DQS的接收时延,使读DQ和读DQS的相对时序位置对齐。
其中,写DQ和写DQS的发送时延,可以理解为内存控制器111对写DQ和写DQS的施加相位调节幅度。具体来说,内存控制器111中设置有与多个写DQ和写DQS分别对应的多个相位调节器。以写DQS为例,内存控制器111生成的写DQS信号可以输入与写DQS对应的相位调节器,相位调节器可以为写DQS施加一定的时延,即写DQS的发送时延,从而可以改变输出的写DQS的相位。写DQS经对应的相位调节器传输后,才会从内存控制器111输出。
类似的,读DQ和读DQS的接收时延,可以理解为内存控制器111对读DQ和读DQS施加的相位调节幅度。具体来说,内存控制器111中设置有与多个读DQ和读DQS分别对应的多个相位调节器。以读DQS为例,内存控制器111接收到的的读DQS信号可以输入与读DQS对应的相位调节器,相位调节器可以为读DQS施加一定的时延,即读DQS的接收时延,从而可以改变接收到的读DQS的相位。读DQS经对应的相位调节器调节后,内存控制器111进而识别该读DQS的触发点,并根据识别到的触发点识别读DQ的电平状态。
示例性的,如图3所示的内存控制器111主要包括8个寄存器(register,REG)1,具体为REG1-0至REG1-7,该8个REG1分别与写DQ0至写DQ7的相位调节器一一对应(例如REG1-0与DQ0的相位调节器相对应,REG1-1与DQ1的相位调节器相对应,依次类推),可以分别用于调节写DQ0至写DQ7的发送时延。示例性的,每个REG1可以是先入先出(first input firstoutput,FIFO)寄存器。
每个REG1可以包括32位,该32位对应32种发送延迟。例如,写DQ1的发送时延存在32个可能的取值,从第一1个取值至第32个取值依次增大,且任意两个相邻取值之间的间隔为固定值。该固定值也可以称为1步进(step)发送时延,该1step的发送时延也可以理解为内存控制器111能够对写DQ的发送时延进行调节的最小调节幅度。
从REG1-1的第1位至第32位,分别与写DQ1的发送时延所存在的32个可能的取值一一对应。REG1-1中每增加1位,对应的发送时延便增加1步进(step)发送延迟。示例性的,内存控制器111可以将REG1-1中的任一位置为高电平,其它位保持低电平,从而可以将写DQ1的发送时延调节至高电平的位所对应的发送时延。
内存控制器111还包括REG2,该REG2与写DQS的相位调节器对应,可以用于调节写DQS的发送时延。内存控制器111还包括8个REG3,具体为REG3-0至REG3-7,该8个REG3别与读DQ0至读DQ7的相位调节器对应,可以分别用于调节读DQ0至读DQ7的接收时延。内存控制器111还包括REG4,该REG4与读DQS的相位调节器对应,可以用于调节读DQS的接收时延。
需要指出的是,内存控制器111通过REG1-0至REG1-7调节写DQ0至写DQ7的发送时延的具体实现方式、内存控制器111通过REG2调节写DQS的发送时延的具体实现方式、内存控制器111通过REG3-0至REG3-7调节读DQ0至读DQ7的接收时延的具体实现方式,以及内存控制器111通过REG4调节读DQS的接收时延的具体实现方式皆可以参考现有技术,对此不再赘述。
基于图3所示的内存控制器111,目前常见的时序位置对齐方式主要包括以下过程:
1、写DQ与写DQS之间相对时序位置对齐。
在内存控制器111开始对齐写DQ与写DQS之间的相对时序位置之前,内存控制器111可以先将写DQ0至写DQ7,以及写DQS的发送时延配置为默认发送时延或缺省发送时延。内存控制器111继而可以在默认发送时延的基础上调节DQS以及各个DQ的发送时延。其中,写DQ0至写DQ7,以及写DQS的默认发送时延可以相同,也可以不同,本申请实施例对此并不多作限制。
示例性的,基于内存控制器111所配置的默认发送时延,写DQ0至写DQ7分别与写DQS之间的相对时序位置可以如图4a所示,写DQ0至写DQ7之间,以及写DQS与多个写DQ之间的相对时序位置偏移较大。
需要指出的是,图4a中仅示出了写DQ0的一个周期至写DQ7的一个周期分别与写DQS中交叉点之间的相对时序位置。由于写DQ0至写DQ7中每个写DQ皆与写DQS同周期,因此在内存控制器111不改变对写DQ0至写DQ7,以及写DQS的发送时延的情况下,其它周期中写DQS的交叉点与对应的写DQ周期之间的相对时序位置皆可以如图4a所示。也就是说,假设周期时长为T,则位于t00+MT的写DQS的交叉点与对应的写DQ的周期之间的相对时序位置也可以如图4a所示,其中M取大于或等于0的整数。
对图4a所示内存控制器111所发送的写DQ和写DQS之间的时序位置对齐过程主要包括以下步骤:
步骤一:如图4b所示,内存控制器111逐渐缩小写DQS的发送时延,直至出现至少一个写DQ所承载的数据无法被正确写入内存芯片12。此时,内存控制器111所发送的写DQS的交叉点可以如图4b所示。
可以理解,图4b所示的为内存控制器111的写DQ0至写DQ7分别与写DQS的交叉点之间的相对时序位置。在不考虑内存总线13传输误差的情况下,内存芯片12所接收到的写DQ0至写DQ7分别与写DQS的交叉点之间的相对时序位置也可以如图4b所示。
由于内存控制器111缩小了写DQS的发送时延,而保持写DQ0至写DQ7的发送时延不变,因此相较内存控制器111发送写DQ0的至写DQ7的任一写DQ周期的时间点,内存控制器111发送与该任一写DQ周期对应的写DQS的交叉点的时间点被提前。也就是说,基于图4b所示的时间增大方向,写DQS的交叉点将沿箭头所示方向的相反方向移动。
如图4b所示,此时写DQ3的建立时间过短,使内存芯片12无法正确识别写DQ3的电平状态,因此写DQ3所承载的数据无法被正确写入内存芯片12。至此,内存控制器111便可以停止缩小写DQS的发送时延。此时,写DQ3当前的建立时间约等于(略小于)内存芯片12适用的最小建立时间。
步骤二:内存控制器111保持当前写DQS的发送时延(假设当前写DQS的发送时延为D1),内存控制器111分别逐渐增大写DQ0至写DQ2,以及写DQ4至写DQ7的发送时延,直至写DQ0至写DQ7所承载的数据皆无法正确写入内存芯片12。此时,任一个写DQ周期与写DQS之间的相对时序位置可以如图4c所示。
具体来说,在上述步骤一中内存控制器111将写DQS的发送时延调节至发送时延D1后,仍存在部分写DQ(如图4b中写DQ0至写DQ2,以及写DQ4至写DQ7)所承载的数据可以正确写入内存芯片12。
在此情况下,内存控制器111可以依次增大写DQ0至写DQ2,以及写DQ4至写DQ7的发送时延。以写DQ0为例,在内存控制器111保持写DQS的发送时延不变的情况下,内存控制器111增大写DQ0的发送时延,使得相较于内存控制器111发送写DQS的交叉点的时间点,内存控制器111发送与该交叉点对应的写DQ0的周期时间点被推迟。也就是说,基于图4c所示的时间增大方向,内存控制器111增大写DQ0的发送时延,可以使写DQ0的一个周期沿图中箭头所示方向移动。
由此可见,内存控制器111分别逐渐增大写DQ0至写DQ7的发送时延,直至写DQ0至写DQ7所承载的数据皆无法正确写入内存芯片12,将会使写DQ0的建立时间至写DQ7的建立时间相等,且趋近于(略小于)内存芯片12所适用的最小建立时间。
经过步骤二完成了写DQ0至写DQ7之间的时序对齐,也可以理解为,经过步骤二,使写DQ0至写DQ7可以保持相位同步。
步骤三:内存控制器111保持步骤二后写DQ0至写DQ7的发送时延,并继续增大写DQS的发送时延。基于图4d所示的时间增大方向,内存控制器111增大写DQS的发送时延,则相较于内存控制器111发送写DQ0至写DQ7的任一DQ周期的时间点,内存控制器111发送与该DQ周期对应的DQS的交叉点的时间点将会被推迟。也就是说,相对于写DQ的时序位置,内存控制器111增大写DQS的发送时延,会使写DQS的交叉点沿图4d中箭头所示的方向移动。
内存控制器111逐渐增大写DQS的发送时延,直至出现至少一个写DQ所承载的数据无法被正确写入内存芯片12。此时,存在至少一个写DQ的保持时间过小,趋近于(略小于)内存芯片12适用的最小保持时间。
示例性的,写DQ0至写DQ7分别与写DQS的交叉点之间的相对时序位置可以如图4d所示。一般来讲,写DQ0至写DQ7具有相同的写DQ周期,且写DQ0至写DQ7的相位同步,因此写DQ0至写DQ7可以具有相同的保持时间。也就是说,经过步骤三调节写DQS的发送时延后,写DQ0至写DQ7的保持时间皆趋近于(略小于)内存芯片12适用的最小保持时间。
假设图4c中写DQS的发送时延为D1,图4d中写DQS的发送时延为D2,则内存控制器111可以在步骤三之后,将写DQS的发送时延由D2缩小至(D1+D2)/2,从而可以使写DQ0至写DQ7的时序裕量达到最大值。至此,便完成了写DQ0至写DQ7分别与写DQS之间相对时序位置的对齐。
2、读DQ与读DQS之间相对时序位置对齐。
与写DQ与写DQS类似,读DQ与读DQS之间也需要对齐,具体实现过程可以参考上述写DQ与写DQS之间相对时序位置的对齐。区别在于,在读DQ与读DQS之间相对时序位置对齐的具体实现过程中,由内存芯片12向内存控制器111发送读DQ和读DQS,由DQS的中间点触发内存控制器111识别读DQ的电平状态,由内存控制器111调节读DQ和读DQS的接收时延,以实现读DQ与读DQS在内存控制器111侧相对时序位置对齐,对此不再赘述。
由以上对目前时序位置对齐方式的说明可见,在目前的时序位置对齐方式中不仅需要调节写DQS的发送时延和读DQS的接收时延,还需要调节写DQ0至写DQ7的发送时延和读DQ0至读DQ7的接收时延。在该实现方式中调节步骤繁多,致使该实现方式用时较长。
又由于在内存控制器111对同向传输的DQS和DQ进行时序位置对齐时,处理器11无法正常访问内存芯片12,因此,上述内存训练方式通常只能应用于电子设备10开机过程中的内存初始化。若在电子设备10工作过程中进行内存再训练,则会因处理器11长时间无法访问内存芯片12,而使电子设备10中断工作。
然而,随着电子设备10中处理器11的运算能力提升,处理器核112、内存控制器111和内存芯片12的工作频率也逐渐升高。内存控制器111的工作频率升高,将导致内存控制器111向内存芯片12发送的写DQ和写DQS的周期缩短。在此情况下,即使将写DQ和写DQS的相对时序位置对齐,但内存芯片12的时序裕量较小,进而导致内存控制器111向内存芯片12传输数据的误码率不稳定。
加之目前电子设备10的工作场景越发复杂,越来越多的环境因素有可能影响内存控制器111和内存芯片12的时序裕量。例如,在自动驾驶车辆(电子设备10的具体实现之一)中常设置有人工智能(artificial intelligence,AI)芯片(处理器11的具体实现之一),该AI芯片既可以是自动驾驶中控平台内的芯片,也可以是汽车智能座舱中的芯片。
自动驾驶车辆的工作环境复杂多变,承载AI芯片的单板温度一般在-40~125℃的宽温范围内变化,而温度变化范围较大会对内存控制器111和内存芯片12的时序裕量带来较大的影响,对于高频工作的AI芯片和与该AI芯片耦合的内存芯片,便非常有可能出现时序裕量不足的问题。
有鉴于此,本申请实施例提供一种内存训练方法,该内存训练方法可以快速对齐内存控制器111和内存芯片12之间同向传输的DQS和DQ的相对时序位置。由于本申请实施例所提供的内存训练方法用时较短,因此在电子设备10工作过程中可以重复执行,因此本申请实施例所提供的内存训练方法也可以称为内存再训练(retraining)方法,可以使电子设备10中内存控制器111和内存芯片12始终保持较为充足的时序裕量,进而有利于提高内存控制器111和内存芯片12之间数据传输的准确性。
示例性的,在电子设备10工作过程中,处理器核112可以向内存控制器111发送触发指令,以触发内存控制器111执行本申请实施例所提供的内存训练方法。内存控制器111在执行完本申请实施例所提供的内存训练方法后,还可以向处理器核112反馈执行结果,使得在内存控制器111完成对齐同向传输的DQS和DQ之间的相对时序位置之后,处理器核112可以通过内存控制器111继续访问内存芯片12。
在一种可能的实现方式中,处理器核112可以按照配置的内存训练周期,周期性触发内存控制器111本申请实施例提供的内存训练方法。
具体来说,处理器核112可以每隔一个内存训练周期,便向内存控制器111发送一次触发指令。示例性的,在电子设备10开机过程中完成内存初始化后开始计时,在计时时长达到内存训练周期后,向内存控制器111发送触发指令。内存控制器111接收到该触发指令后,便可以启动执行本申请实施例所提供的内存训练方法。在内存控制器111完成对齐同向传输的DQS和DQ之间的相对时序位置之后,处理器核112可以将上述计时时长请零,并继续计时。在计时时长再次到达上述内存训练周期后,处理器核112可以再次向内存控制器111发送触发指令,使内存控制器111可以再次执行本申请实施例所提供的内存训练方法。
在另一种可能的实现方式中,如图1所示,电子设备10中还可以包括温度传感器14。示例性的,温度传感器14可以与处理器11和/或内存芯片12承载于同一个印刷电路板(print circle board,PCB)。处理器核112可以通过温度传感器14检测环境温度。在确定当前环境温度与历史环境温度之间的差值超过温度波动阈值时,处理器核112可以向内存控制器111发送上述触发指令,使内存控制器111执行本申请实施例所提供的内存训练方法。其中,上述历史环境温度可以理解为处理器核112前一次发送触发指令时的环境温度。
具体来说,假设历史环境温度为25℃,温度波动阈值为±20℃。则,在当前环境温度高于45℃,或低于5℃时,处理器核112将向内存控制器111发送上述触发指令。例如,当前环境温度为47℃,当前环境温度与历史环境温度之间的差值超过了温度波动阈值,因此处理器核112可以向内存控制器111发送触发指令。以及,在内存控制器111完成对齐同向传输的DQS和DQ之间的相对时序位置之后,处理器核112还可以将历史环境温度更新为47℃。
可以理解,由于环境温度变化有可能导致同向传输的DQS和DQ之间的相对时序位置出现偏移,进而导致内存控制器111和内存芯片12的时序裕量不足。本申请实施例将环境温度作为触发内存控制器111执行内存训练方法的触发条件,可以使内存控制器111在环境温度变化较大时及时校准同向传输的DQS和DQ之间的相对时序位置,有利于维持内存控制器111和内存芯片12具有较为充足的时序裕量。
示例性的,在上述过程中内存控制器111主要执行了如图5所示的工作流程。如图5所示,主要包括以下步骤:
S501:内存控制器111上电。一般来说,在电子设备10或处理器11上电后,内存控制器111便可以上电。
S502:内存控制器111上电后,执行ZQ校准(ZQ calibration)。ZQ校准的具体实现可以参考现有技术,对此不再赘述。
S503:内存控制器111接收处理器核112的调用,从而完成内存训练。在一种可能的实现方式中,内存控制器111可以按照目前常规的内存训练方法,如图4a至图4e所示的内存训练方法,完成内存训练。
这是因为内存控制器111在执行S503时是首次进行内存训练,此时同向传输的DQ与DQS之间的相对时序位置偏差较大,采用目前常规的内存训练方法可以精确对齐同向传输的DQ与DQS之间的相对时序位置。在此情况下,即使后续同向传输的DQ与DQS之间的相对时序位置出现偏移,其偏移程度也会较小,从而有利于缩短后续内存训练用时。
S504:内存控制器111在完成内存训练后,便可以正常工作。内存控制器111可以基于处理器核112的调用访问内存芯片12。例如,内存控制器111可以从内存芯片12读取数据,也可以内存芯片12写入数据等等。
S505:内存控制器111在正常工作过程中,若接收到处理器核112发送的触发指令,则继续执行S506。若未接收到处理器核112发送的触发指令,则继续保持正常工作。
S506:内存控制器111执行本申请实施例所提供的内存训练方法。
具体来说,内存训练包括了写DQ与写DQS之间相对时序位置对齐(S5061)和读DQ与读DQS之间相对时序位置对齐(S5062)。应理解,本申请实施例并不严格限制S5061与S5062之间的先后顺序。内存控制器111既可以先执行S5061再执行S5062,也可以先执行S5062再执行S5061。
在本申请实施例所提供的内存训练方法中。内存控制器111通过调整写DQS或写DQ的发送时延既可以完成写DQ与写DQS之间相对时序位置对齐,通过调整读DQS或读DQ的接收时延既可以完成读DQ与读DQS之间相对时序位置对齐。相较于图4a至图4e所示的内存训练过程,本申请实施例可以显著减少调节传输时延的步骤,从而有利于短时间内对齐同向传输的DQS与DQ之间的相对时序位置。
接下来,通过以下实施例一至实施例四对本申请实施例所提供的内存训练方法作进一步的示例性说明。应理解,同向传输的DQS和N个DQ对应,N为大于或等于1的整数,DQS可以触发接收端识别该N个DQ的电平状态。例如基于图1所示的内存总线13,同向传输的DQS和8个DQ(即DQ0至DQ7)对应。为了便于理解,本申请实施例接下来以同向传输的DQS和DQ0至DQ7为例进行说明。
实施例一:调节写DQS的发送时延,以对齐写DQ与写DQS之间的相对时序位置。
示例性的,如图6所示,实施例一主要包括以下步骤:
S601:内存控制器111确定N个写DQ承载的数据全部写入正确时,写DQS的最大DQS发送时延和/或最小DQS发送时延。
示例性的,假设N个写DQ包括写DQ0至写DQ7,写DQ0至写DQ7分别与写DQS之间的相对时序位置如图7所示。可以理解,写DQS的发送时延过大或过小皆可能造成写DQ0至写DQ7所承载的数据写入错误。例如图7中,在写DQ0至DQ7所承载的数据全部写入正确的情况下,写DQS的发送时延为最小DQS发送时延时写DQS的交叉点可以由交叉点1a表示,交叉点1a对应的直线代表该交叉点1a所在的时间点,写DQS的发送时延为最大DQS发送时延时写DQS的交叉点可以由交叉点1b表示,交叉点1b对应的直线代表该交叉点1b所在的时间点,后续附图中交叉点(或中间点)对应的直线均可以表示交叉点(或中间点)所在的时间点,对此不再赘述。
若写DQS的发送时延小于最小DQS发送时延,则会使一个或多个写DQ的建立时间不足,从而出现数据写入错误。若写DQS的发送时延大于最大DQS发送时延,则会使一个或多个写DQ的保持时间不足,从而也会出现数据写入错误。
S602:内存控制器111保持N个写DQ的发送时延,将写DQS的发送时延调节至位于最大DQS发送时延和最小DQS发送时延之间的目标DQS发送时延,该目标DQS发送时延与最大DQS发送时延之间的间隔不小于内存芯片12适用的目标保持时间H1,该目标DQS发送时延与最小DQS发送时延之间的间隔不小于内存芯片12适用的目标建立时间S1。
其中,内存芯片12适用的目标保持时间H1既可以等于内存芯片12所适用的最小保持时间,也可以大于内存芯片12适用的最小保持时间。内存芯片12适用的目标建立时间S1既可以等于内存芯片12所适用的最小建立时间,也可以大于内存芯片12适用的最小建立时间。目标保持时间H1和目标建立时间S1的具体实现可以根据对内存控制器111和内存芯片12之间数据传输的性能要求而定,本申请实施例对此并不多作限制。
需要指出的是,由于在S601中内存控制器111会确定写DQS的最大DQS发送时延和最小DQS发送时延中的一个或两个,因此在S602中的目标DQS发送时延也需要分情况说明。
情况一:内存控制器111确定写DQS的最大DQS发送时延,未确定写DQS的最小DQS发送时延。在此情况下,目标DQS发送时延可以与最大DQS发送时延之间间隔内存芯片12所适用的目标保持时间H1。
其中,由于本申请实施例可以是在内存初始化之后进行的内存训练,也就是内存再训练(retraining),因此写DQ之间的偏移往往较小,也就是说,上述最大DQS发送时延和最小DQS发送时延之间的时间间隔较大,趋近于写DQ的周期时长。又由于写DQ的周期往往远大于内存芯片12所适用的目标保持时间H1,因此在目标DQS发送时延与最大DQS发送时延之间间隔内存芯片12所适用的目标保持时间H1时,目标DQS发送时延与最小DQS发送时延之间的间隔通常会大于内存芯片12所适用的目标建立时间S1。
情况二:内存控制器111确定写DQS的最小DQS发送时延,未确定写DQS的最大DQS发送时延。在此情况下,目标DQS发送时延可以与最小DQS发送时延之间间隔内存芯片12所适用的目标建立时间S1。
如前所述,最大DQS发送时延和最小DQS发送时延之间的时间间隔较大,趋近于写DQ的周期时长。又由于写DQ的周期往往远大于内存芯片12所适用的目标建立时间S1,因此在目标DQS发送时延与最小DQS发送时延之间间隔内存芯片12所适用的目标建立时间S1时,目标DQS发送时延与最大DQS发送时延之间的间隔通常会大于内存芯片12所适用的目标保持时间H1。
情况三:内存控制器111确定写DQS的最小DQS发送时延和最大DQS发送时延。在此情况下,目标DQS发送时延可以与最大DQS发送时延之间间隔内存芯片12所适用的目标保持时间H1,或者目标DQS发送时延可以与最小DQS发送时延之间间隔内存芯片12所适用的目标建立时间S1,或者目标DQS发送时延可以位于最大DQS发送时延和最小DQS发送时延的中间位置。
如前所述,最大DQS发送时延和最小DQS发送时延之间的时间间隔较大,趋近于写DQ的周期时长。目标DQS发送时延位于最大DQS发送时延和最小DQS发送时延的中间位置,使得目标DQS发送时延与最小DQS发送时延之间的时间间隔可以大于内存芯片12所适用的目标建立时间S1,以及使得目标DQS发送时延与最大DQS发送时延之间的时间间隔可以大于内存芯片12所适用的目标保持时间H1。
由于本申请实施例中内存控制器111通过调节写DQS的发送时延便可以对齐写DQ0至写DQ7分别与写DQS之间的相对时序位置,相较于如图4a至图4e所示的内存训练过程,本申请实施例中内存控制器111无需调节写DQ0至写DQ7的发送时延,因此有利于缩短内存训练用时。
需要指出的是,内存控制器111在执行S601时,内存控制器111可以分别确定写DQS的最大DQS发送时延和最小DQS发送时延。当写DQS的初始DQS发送时延与最小DQS发送时延偏移较大时,说明在初始DQS发送时延下,各个写DQ皆具有足够的建立时间,此时也可以只确定最大DQS发送时延。类似的,当写DQS的初始DQS发送时延与最大DQS发送时延偏移较大时,说明当前的各个写DQ皆具有足够的保持时间,此时也可以只确定最小DQS发送时延。
其中,写DQS的初始DQS发送时延可以理解为内存控制器111开始执行本次内存训练之前或开始执行本次内存训练时写DQS的发送时延。也可以理解为,内存控制器111接收到上述触发指令之前写DQS的发送时延。示例性的,写DQS的发送时延为初始DQS发送时延时,写DQS的交叉点可以如图7中的交叉点0所示。
在一种可能的实现方式中,内存控制器111可以从初始DQS发送时延开始,逐渐缩小写DQS的发送时延,直至出现至少一个写DQ所承载的数据写入错误。此时,写DQS的发送时延便可以作为最小DQS发送时延。
内存控制器111还可以从初始DQS发送时延开始,逐渐增大写DQS的发送时延,直至出现至少一个写DQ所承载的数据写入错误。此时,写DQS的发送时延便可以作为最大DQS发送时延。
在另一种可能的实现方式中,内存控制器111还可以采用如图8所示的方法确定最大DQS发送时延和/或最小DQS发送时延,主要包括以下步骤:
S801:内存控制器111在初始DQS发送时延的基础上,按照内存芯片12适用的目标建立时间S1缩小写DQS的发送时延。也就是说,内存控制器111可以将写DQS的发送时延由初始DQS发送时延缩小至第一DQS发送时延,该第一DQS发送时延与初始DQS发送时延之间间隔内存芯片12适用的目标建立时间。
示例性的,如图9a所示,当写DQS的发送时延为初始DQS发送时延时,写DQS的交叉点可以如图9a中的交叉点0所示。内存控制器111保持写DQ0至写DQ7的发送时延,使各个写DQ的周期传输至内存芯片12的时间保持稳定。内存控制器111缩小写DQS的发送时延,相较于与写DQS的交叉点对应的写DQ的周期,写DQS的交叉点传输至内存芯片12的时间提前,即如图9a所示,写DQS的交叉点沿与图9a中箭头所示方向的相反方向移动。
当写DQS的发送时延为第一DQS发送时延时,写DQS的交叉点可以如图9a中的交叉点1所示。其中,交叉点1与交叉点0之间的时间间隔,即为第一DQS发送时延与初始DQS发送时延之间的时间间隔,也就是内存芯片12适用的目标建立时间S1。
S802:若存在至少一个写DQ承载的数据写入错误,则内存控制器111继续执行S803。若写DQ0至写DQ7承载的数据全部写入正确,则内存控制器111继续执行S805。
可以理解,若写DQ0至写DQ7承载的数据全部写入正确,说明初始DQS发送时延与最小DQS发送时延之间的时间间隔较大,在初始DQS发送时延下,写DQ0至写DQ7的建立时间充足,无需进行校准。因此内存控制器111无需确定最小DQS发送时延便可以继续执行S805,增大写DQS的发送时延,以确定写DQS的最大DQS发送时延。
若存在至少一个写DQ承载的数据写入错误,则说明在初始DQS发送时延下至少一个写DQ的建立时间不足以满足对传输性能(稳定性)的要求,需要进行校准。示例性的,假设写DQS的发送时延为第一DQS发送时延时,写DQS的交叉点可以如图9a中的交叉点1所示。由图9a可见,写DQ3和写DQ6的建立时间不足,此时写DQ3和写DQ6所承载的数据写入错误,内存控制器111继续执行S803。
S803:内存控制器111按照第一调节幅度增大写DQS的发送时延。需要指出的是,第一调节幅度小于内存芯片12适用的目标建立时间S1。一般来说,第一调节幅度可以是内存控制器111能够对写DQS发送时延进行调节的最小调节幅度,该最小调节幅度也可以称为步进(step)。
S804:若存在至少一个写DQ承载的数据写入错误,则内存控制器111返回继续执行S803。
内存控制器111一次或多次执行S803和S804,逐渐增大写DQS的发送时延,直至写DQ0至写DQ7承载的数据全部写入正确。此时,写DQS的发送时延便可以作为最小DQS发送时延,写DQS的交叉点可以如图7中的交叉点1a所示。
可以理解,在电子设备10工作过程中即使写DQS的交叉点相较于对应的写DQ周期的中间位置出现偏移,写DQS的交叉点仍会位于对应的写DQ周期的偏中间位置。在此情况下,若内存控制器111从初始DQS发送时延逐渐缩小写DQS的发送时延,则内存控制器111需要多次调节写DQS发送时延,及校验写DQ0至写DQ7所承载的数据是否写入正确,才能确定最小DQS发送时延。
在本申请实施例所提供S801至S804中,由于内存芯片12所适用的目标建立时间S1往往小于写DQ的半周期的时长,而从第一DQS发送时延调节至最小DQS发送时延的调节幅度又不会超过内存芯片12所适用的目标建立时间S1,因此执行S803的次数较少,从而可以快速确定最小DQS发送时延。
S805:内存控制器111在初始DQS发送时延的基础上,按照内存芯片12适用的目标保持时间H1增大写DQS的发送时延。也就是说,内存控制器111可以将写DQS的发送时延由初始DQS发送时延增大至第二DQS发送时延,该第二DQS发送时延与初始DQS发送时延之间间隔内存芯片12适用的目标保持时间H1。
示例性的,如图9b所示,当写DQS的发送时延为初始DQS发送时延时,写DQS的交叉点可以如图9b中的交叉点0所示。内存控制器111保持写DQ0至写DQ7的发送时延,使各个写DQ的周期传输至内存芯片12的时间保持稳定。内存控制器111增大写DQS的发送时延,相较于与写DQS的交叉点对应的写DQ的周期,写DQS的交叉点传输至内存芯片12的时间推迟,即如图9b所示,写DQS的交叉点沿图9b中箭头所示方向移动。
当写DQS的发送时延为第二DQS发送时延时,写DQS的交叉点可以如图9b中的交叉点2所示。其中,交叉点2与交叉点0之间的时间间隔,即为第二DQS发送时延与初始DQS发送时延之间的时间间隔,也就是内存芯片12适用的目标保持时间H1。
S806:若存在至少一个写DQ承载的数据写入错误,则内存控制器111继续执行S807。若写DQ0至写DQ7承载的数据全部写入正确,则内存控制器111继续执行S808。
可以理解,若写DQ0至写DQ7承载的数据全部写入正确,说明初始DQS发送时延与最大DQS发送时延之间的时间间隔较大,写DQ0至写DQ7的保持时间充足,无需进行校准。因此内存控制器111无需确认最大DQS发送时延,可以继续执行S602。
在一些场景下,也可能出现S802和S806中写DQ0至写DQ7所承载的数据皆写入正确的情况。也就是说,在初始DQS发送时延的基础上,按照内存芯片12适用的目标建立时间S1缩小写DQS的发送时延后,写DQ0至写DQ7所承载的数据皆写入正确,即在初始DQS发送时延下写DQ0至写DQ7具有足够的建立时间。在初始DQS发送时延的基础上,按照内存芯片12适用的目标保持时间H1增大写DQS的发送时延后,写DQ0至写DQ7所承载的数据皆写入正确,即在初始DQS发送时延下写DQ0至写DQ7具有足够的保持时间。在此情况下,内存控制器111可以直接将初始DQS发送时延作为目标DQS发送时延。
若存在至少一个写DQ承载的数据写入错误,则说明至少一个写DQ的保持时间不足,需要进行校准,此时写DQS的交叉点可以如图9b中的交叉点2所示。因此,内存控制器111可以继续执行S807。
S807:内存控制器111按照第二调节幅度缩小写DQS的发送时延。需要指出的是,第二调节幅度小于内存芯片12适用的目标保持时间H1。一般来说,第二调节幅度也可以是内存控制器111能够对写DQS的发送时延进行调节的最小调节幅度,也就是1个step的幅度。
S808:若存在至少一个写DQ承载的数据写入错误,则内存控制器111返回继续执行S807。
内存控制器111一次或多次执行S807和S808,逐渐缩小写DQS的发送时延,直至写DQ0至写DQ7承载的数据全部写入正确。此时,写DQS的发送时延便可以作为最大DQS发送时延,写DQS的交叉点可以如图7中的交叉点1b所示。
内存控制器111通过执行如图8所示的方法,便可以确定写DQS的最大DQS发送时延和/或最小DQS发送时延。继而,内存控制器111可以基于最大DQS发送时延和/或最小DQS发送时延继续执行S602。
可以理解,内存控制器111在确定写DQS的最大DQS发送时延和/或最小DQS发送时延的过程中,内存控制器111也可以先在初始DQS发送时延的基础上,按照内存芯片12适用的目标保持时间H1增大写DQS的发送时延,以确定写DQS的最大DQS发送时延,再在初始DQS发送时延的基础上,按照内存芯片12适用的目标建立时间S1缩小写DQS的发送时延,以确定写DQS的最小DQS发送时延。以上过程也应包含于本申请实施例中,具体实现不再赘述。
实施例二:调节读DQS的接收时延,以对齐读DQ与读DQS之间的相对时序位置
基于与实施例一类似的技术构思,本申请实施例所提供的实施例二可以对齐读DQ与读DQS之间的相对时序位置。
具体来说,如图10所示,实施例二主要包括以下步骤:
S1001:内存控制器111确定N个读DQ承载的数据全部读取正确时,读DQS的最大DQS接收时延和/或最小DQS接收时延。
该过程与S602类似,区别在于,内存芯片12输出N个读DQ,和与该N个读DQ对应的读DQS,内存控制器111接收N个读DQ和与该N个读DQ对应的读DQS,通常,由读DQS中交叉点之间的中间点作为触发点,触发内存控制器111识别N个读DQ的电平状态。
具体来说,在一种可能的实现方式中,内存控制器111可以从初始DQS接收时延开始,逐渐缩小读DQS的接收时延,直至出现至少一个读DQ所承载的数据读取错误。此时,读DQS的接收时延便可以作为最小DQS接收时延。内存控制器111还可以从初始DQS接收时延开始,逐渐增大读DQS的接收时延,直至出现至少一个读DQ所承载的数据读取错误。此时,读DQS的接收时延便可以作为最大DQS接收时延。
其中,读DQS的初始DQS接收时延可以理解为内存控制器111开始调节读DQS的接收时延之前读DQS的接收时延。也可以理解为,内存控制器111接收到上述触发指令之前读DQS的接收时延。
在另一种可能的实现方式中,内存控制器111还可以采用与图8类似的过程确定读DQS的最大DQS接收时延和最小DQS接收时延。具体来说,内存控制器111可以分别确定最大DQS接收时延和/或最小DQS接收时延:
1、确定最小DQS接收时延
在初始DQS接收时延的基础上,内存控制器111按照内存控制器111适用的目标建立时间S2缩小读DQS的接收时延。也就是说,内存控制器111将读DQS的接收时延由初始DQS接收时延缩小至第一DQS接收时延,且第一DQS接收时延与初始DQS接收时延之间间隔内存控制器111适用的目标建立时间S2。
其中,内存控制器111适用的目标建立时间S2既可以等于内存控制器111所适用的最小建立时间,也可以大于内存控制器111适用的最小建立时间。目标建立时间S2的具体实现可以根据对内存控制器111和内存芯片12之间数据传输的性能要求而定,本申请实施例对此并不多作限制。
示例性的,如图11a所示,当读DQS的接收时延为初始DQS接收时延时,读DQS的中间点可以如图11a中的中间点0所示。内存控制器111保持读DQ0至读DQ7的接收时延,缩小读DQS的接收时延,相较于与读DQS的中间点对应的读DQ的周期,内存控制器111识别到读DQS的中间点的时间提前,即如图11a所示,读DQS的中间点沿与图11a中箭头所示方向的相反方向移动。
当读DQS的接收时延为第一DQS接收时延时,读DQS的中间点可以如图11a中的中间点1所示。其中,中间点1与中间点0之间的时间间隔,即为第一DQS接收时延与初始DQS接收时延之间的时间间隔,也就是内存控制器111适用的目标建立时间S2。
在第一DQS接收时延下,若读DQ0至读DQ7承载的数据皆读取正确,说明初始接收时延与最小接收时延之间的时间间隔较大,在初始DQS接收时延下,读DQ0至读DQ7之间的建立时间充足,无需进行校准。在此情况下,无需确定最小DQS接收时延,便可以继续确定最大DQS接收时延。若存在至少一个读DQ承载的数据读取错误,则说明在初始DQS接收时延下至少一个读DQ的建立时间不足以满足对传输性能(稳定性)的要求,需要进行校准,此时读DQS的中间点可以如图11a所示。
在第一DQS接收时延下,若存在至少一个读DQ承载的数据读取错误,内存控制器111可以逐渐增大读DQS的接收时延,使读DQS的中间点沿图11a箭头所示方向移动,直至读DQ0至读DQ7承载的数据全部被正确读取。此时,读DQS的接收时延便是最小DQS接收时延,在最小DQS接收时延下,读DQS的交叉点可以如图11b所示。
应理解,以上过程仅为简述,具体实现可以参考图8中S801至S804所示的内存控制器111确定写DQS的最小DQS发送时延的过程,对此不再赘述。
2、确定最大DQS接收时延
在初始DQS接收时延的基础上,内存控制器111按照内存控制器111适用的目标保持时间H2增大读DQS的接收时延。也就是说,内存控制器111将读DQS的接收时延由初始DQS接收时延增大至第二DQS接收时延,且第二DQS接收时延与初始DQS接收时延之间间隔内存控制器111适用的目标保持时间H2。
其中,内存控制器111适用的目标保持时间H2既可以等于内存控制器111所适用的最小保持时间,也可以大于内存控制器111适用的最小保持时间。目标保持时间H2的具体实现可以根据对内存控制器111和内存芯片12之间数据传输的性能要求而定,本申请实施例对此并不多作限制。
示例性的,如图11c所示,当读DQS的接收时延为初始DQS接收时延时,读DQS的中间点可以如图9a中的中间点0所示。内存控制器111保持读DQ0至读DQ7的接收时延,增大读DQS的接收时延,相较于与读DQS的中间点对应的读DQ的周期,内存控制器111识别到读DQS的中间点的时间推迟,即如图11c所示,读DQS的中间点沿图11c中箭头所示方向移动。
当读DQS的接收时延为第二DQS接收时延时,读DQS的中间点可以如图11c中的中间点2所示。其中,中间点2与中间点0之间的时间间隔,即为第二DQS接收时延与初始DQS接收时延之间的时间间隔,也就是内存控制器111适用的目标保持时间H2。
在第二DQS接收时延下,若读DQ0至读DQ7承载的数据皆读取正确,说明初始DQS接收时延与最大DQS接收时延之间的时间间隔较大,读DQ0至读DQ7之间的保持时间充足,无需进行校准。在此情况下,无需确定最大DQS接收时延,便可以继续执行S1002。
可以理解,也可能出现初始DQS接收时延分别与最大DQS接收时延和最小DQS接收时延之间的时间间隔皆较大的情况。也就是说,在初始DQS接收时延的基础上,按照内存控制器111适用的目标建立时间S2缩小读DQS的接收时延后,读DQ0至读DQ7所承载的数据皆读取正确,即在初始DQS接收时延下读DQ0至读DQ7具有足够的建立时间。在初始DQS接收时延的基础上,按照内存控制器111适用的目标保持时间H2增大读DQS的接收时延后,读DQ0至读DQ7所承载的数据皆读取正确,即在初始DQS接收时延下读DQ0至读DQ7具有足够的保持时间。在此情况下,内存控制器111可以直接将初始DQS接收时延作为目标DQS接收时延。
在第二DQS接收时延下,若存在至少一个读DQ承载的数据读取错误,则说明在初始DQS接收时延下至少一个读DQ的保持时间不足以满足对传输性能(稳定性)的要求,需要进行校准,此时读DQS的中间点可以如图11c中的中间点2所示。
若存在至少一个读DQ承载的数据读取错误,内存控制器111可以逐渐缩小读DQS的接收时延,使读DQS的中间点沿图11c箭头所示方向的相反方向移动,直至读DQ0至读DQ7承载的数据全部被正确读取。此时,读DQS的接收时延便是最大DQS接收时延,在最大DQS接收时延下,读DQS的中间点可以如图11d所示。
应理解,以上过程仅为简述,具体实现可以参考图8中S805至S808所示的内存控制器111确定写DQS的最大DQS发送时延的过程,对此不再赘述。
S1002:内存控制器111保持N个读DQ的接收时延,将读DQS的接收时延调节至位于最大DQS接收时延和最小DQS接收时延之间的目标DQS接收时延,该目标DQS接收时延与最大DQS接收时延之间的间隔不小于内存控制器111适用的目标保持时间H2,该目标DQS接收时延与最小DQS接收时延之间的间隔不小于内存控制器111适用的目标建立时间S2。
需要指出的是,由于在S1001中内存控制器111会确定最大DQS接收时延和最小DQS接收时延中的一个或两个,因此在S1002中的目标DQS接收时延也需要分情况说明。
情况一:内存控制器111确定最大DQS接收时延,未确定最小DQS接收时延。在此情况下,目标DQS接收时延可以与最大DQS接收时延之间间隔内存控制器111适用的目标保持时间H2。
其中,由于本申请实施例可以是在内存初始化之后进行的内存训练,因此读DQ之间的偏移往往较小,也就是说,上述最大DQS接收时延和最小DQS接收时延之间的时间间隔较大,趋近于读DQ的周期时长。又由于读DQ的周期往往远大于内存控制器111适用的目标保持时间H2,因此在目标DQS接收时延与最大DQS接收时延之间间隔内存控制器111适用的目标保持时间H2时,目标DQS接收时延与最小DQS接收时延之间的间隔通常会大于内存控制器111适用的目标建立时间S2。
情况二:内存控制器111确定最小DQS接收时延,未确定最大DQS接收时延。在此情况下,目标DQS接收时延可以与最小DQS接收时延之间间隔内存控制器111适用的目标建立时间S2。
如前所述,最大DQS接收时延和最小DQS接收时延之间的时间间隔较大,趋近于读DQ的周期时长。又由于读DQ的周期往往远大于内存控制器111适用的目标建立时间S2,因此在目标DQS接收时延与最小DQS接收时延之间间隔内存控制器111适用的目标建立时间时,目标DQS接收时延与最大DQS接收时延之间的间隔通常会大于内存控制器111适用的目标保持时间H2。
情况三:内存控制器111确定最小DQS接收时延和最大DQS接收时延。在此情况下,目标DQS接收时延可以与最大DQS接收时延之间间隔内存控制器111适用的目标保持时间H2,或者目标DQS接收时延可以与最小DQS接收时延之间间隔内存控制器111适用的目标建立时间S2,或者目标DQS接收时延可以位于最大DQS接收时延和最小DQS接收时延的中间位置。
如前所述,最大DQS接收时延和最小DQS接收时延之间的时间间隔较大,趋近于读DQ的周期时长。目标DQS接收时延位于最大DQS接收时延和最小DQS接收时延的中间位置,使得目标DQS接收时延与最小DQS接收时延之间的时间间隔可以大于内存控制器111适用的目标建立时间S2,以及使得目标DQS接收时延与最大DQS接收时延之间的时间间隔可以大于内存控制器111适用的目标保持时间H2。
由于本申请实施例中内存控制器111通过调节读DQS的接收时延便可以对齐读DQ0至读DQ7分别与读DQS之间的相对时序位置,相较于如图4a至图4e所示的内存训练过程,本申请实施例中内存控制器111无需调节读DQ0至读DQ7的接收时延,因此有利于缩短内存训练用时。
实施例三:调节写DQ的接收时延,以对齐写DQ与写DQS之间的相对时序位置
在以上实施例一和实施例二中皆是通过调节DQS的接收时延或发送时延实现内存训练。可以理解,由于DQ与DQS之间是对应的时序位置关系,因此DQ与DQS之间的相对时序位置也可以通过调节DQ的接收时延或发送时延实现对齐。
在实施例三中内存控制器111可以保持写DQS的发送时延,并分别调节写DQ0至写DQ7的发送时延,使每个写DQ与写DQS的相对时序位置对齐。示例性的,针对任一个写DQ,实施例三主要包括如图12所示的以下步骤:
S1201:内存控制器111确定在第一写DQ所承载的数据写入正确的情况下,对第一写DQ的最大DQ发送时延和/或最小DQ发送时延。
其中,第一写DQ可以是DQ0至DQ7中的任一写DQ。可以理解,在内存控制器111保持写DQS的发送时延不变的情况下,写DQS的交叉点传输至内存芯片12的时间点稳定。相对于内存控制器111发送写DQS的交叉点的时间点,增大第一写DQ的发送时延,会推迟内存控制器111发送与该写DQS的交叉点对应的第一写DQ的周期的时间点,使第一写DQ的建立时间缩小,保持时间增大。反之,缩小第一写DQ的发送时延,会提前内存控制器111发送与该写DQS的交叉点对应的第一写DQ的周期的时间点,使第一写DQ的保持时间缩小,建立时间增大。
实施例三中,如图13所示,当第一写DQ的发送时延大于最大DQ发送时延时,内存芯片12便会因第一写DQ的建立时间过短而无法正确识别第一写DQ的电平状态,进而使得第一写DQ所承载的数据无法正确写入内存芯片12。当第一写DQ的发送时延小于最小DQ发送时延时,内存芯片12便会因第一写DQ的保持时间过短而无法正确识别第一写DQ的电平状态,进而使得第一写DQ所承载的数据无法正确写入内存芯片12。
S1202:内存控制器111保持写DQS的发送时延,将第一写DQ的发送时延调节至位于最大DQ发送时延和最小DQ发送时延之间的目标DQ发送时延,该目标DQ发送时延与最小DQ发送时延之间的间隔不小于内存芯片12适用的目标保持时间H1,该目标DQ发送时延与最大DQ发送时延之间的间隔不小于内存芯片12适用的目标建立时间S1。
其中,内存芯片12适用的目标保持时间H1和目标建立时间S1皆可以参考以上实施例一,对此不再赘述。需要指出的是,由于在S1201中内存控制器111会确定第一写DQ的最大DQ发送时延和最小DQ发送时延中的一个或两个,因此在S1202中的目标DQ发送时延也需要分情况说明。
情况一:内存控制器111确定第一写DQ的最大DQ发送时延,未确定第一写DQ最小DQ发送时延。在此情况下,目标DQ发送时延可以与最大DQ发送时延之间间隔内存芯片12所适用的目标建立时间S1。
其中,如图13所示,由于最大DQ发送时延和最小DQ发送时延之间的时间间隔Δt趋近于第一写DQ的周期时长,而第一写DQ的周期往往远大于内存芯片12所适用的目标建立时间S1,因此在目标DQ发送时延与最大DQ发送时延之间间隔内存芯片12所适用的目标建立时间S1时,目标DQ发送时延与最小DQ发送时延之间的间隔通常会大于内存芯片12所适用的目标保持时间H1。
情况二:内存控制器111确定第一写DQ的最小DQ发送时延,未确定第一写DQ的最大DQ发送时延。在此情况下,目标DQ发送时延可以与最小DQ发送时延之间间隔内存芯片12所适用的目标保持时间H1。
如前所述,最大DQ发送时延和最小DQ发送时延之间的时间间隔Δt趋近于第一写DQ的周期时长,又由于第一写DQ的周期往往远大于内存芯片12所适用的目标保持时间H1,因此在目标DQ发送时延与最小DQ发送时延之间间隔内存芯片12所适用的目标保持时间H1时,目标DQ发送时延与最大DQ发送时延之间的间隔通常会大于内存芯片12所适用的目标建立时间S1。
情况三:内存控制器111确定最小DQ发送时延和最大DQ发送时延。在此情况下,目标DQ发送时延可以与最大DQ发送时延之间间隔内存芯片12所适用的目标建立时间S1,或者目标DQ发送时延可以与最小DQ发送时延之间间隔内存芯片12所适用的目标保持时间H1,或者目标DQ发送时延可以位于最大DQ发送时延和最小DQ发送时延的中间位置。
如前所述,最大DQ发送时延和最小DQ发送时延之间的时间间隔Δt趋近于第一写DQ的周期时长。目标DQ发送时延位于最大DQ发送时延和最小DQ发送时延的中间位置,使得目标DQ发送时延与最小DQ发送时延之间的时间间隔可以大于内存芯片12所适用的目标保持时间H1,以及使得目标DQ发送时延与最大DQ发送时延之间的时间间隔可以大于内存芯片12所适用的目标建立时间H1。
在实施例三中内存控制器111通过调节第一写DQ的发送时延便可以使第一写DQ与写DQS之间的相对时序位置对齐。内存控制器111可以采用图12所示的方法依次调节写DQ0至写DQ7的发送时延,从而分别对齐写DQ0至写DQ7与写DQS之间的相对时序位置。
在实施例三中,内存控制器111在每次内存训练过程中只调节一个写DQ(第一写DQ)的发送时延,相较于如图4a至图4e所示的内存训练过程,实施例三中内存控制器111无需调节其它写DQ和写DQS的发送时延,因此有利于缩短内存训练用时。
需要指出的是,假设第一写DQ为图1中数据信号线L0所传输的写DQ0。则,内存控制器111在调节写DQ0的发送时延期间,内存控制器111仍可以通过数据信号线L1至数据信号线L7访问内存芯片12。也就是说,实施例三在对齐写DQ0至写DQ7分别与写DQS之间的相对时序位置的同时,还可以并行访问内存芯片12,从而有利于进一步降低内存训练对处理器核112持续运行产生的影响。
需要指出的是,内存控制器111在执行S1201时,内存控制器111可以分别确定第一写DQ的最大DQ发送时延和最小DQ发送时延。当第一写DQ的初始DQ发送时延与最小DQ发送时延偏移较大时,说明在初始DQ发送时延下,第一写DQ皆具有足够的保持时间,此时也可以只确定最大DQ发送时延。类似的,当第一写DQ的初始DQ发送时延与最大DQ发送时延偏移较大时,说明在初始DQ发送时延下,第一写DQ具有足够的建立时间,此时也可以只确定最小DQ发送时延。
其中,第一写DQ的初始DQ发送时延可以理解为内存控制器111开始执行内存训练之前或开始执行内存训练时第一写DQ的发送时延。也可以理解为,内存控制器111接收到上述触发指令之前第一写DQ的发送时延。
在一种可能的实现方式中,内存控制器111可以从初始DQ发送时延开始,逐渐缩小第一写DQ的发送时延,直至第一写DQ所承载的数据写入错误。此时,第一写DQ的发送时延便可以作为最小DQ发送时延。内存控制器111还可以从初始DQ发送时延开始,逐渐增大第一写DQ的发送时延,直至第一写DQ所承载的数据写入错误。此时,第一写DQ的发送时延便可以作为最大DQ发送时延。
在另一种可能的实现方式中,内存控制器111还可以采用如图14所示的方法确定最大DQ发送时延和/或最小DQ发送时延,主要包括以下步骤:
S1401:内存控制器111在初始DQ发送时延的基础上,按照内存芯片12适用的目标保持时间H1缩小第一写DQ的发送时延。也就是说,内存控制器111可以将第一写DQ的发送时延由初始DQ发送时延缩小至第一DQ发送时延,该第一DQ发送时延与初始DQ发送时延之间间隔内存芯片12适用的目标保持时间。
S1402:若第一写DQ承载的数据写入错误,则内存控制器111继续执行S1403。若第一写DQ承载的数据写入正确,则内存控制器111继续执行S1405。
可以理解,若第一写DQ承载的数据写入正确,说明初始DQ发送时延与最小DQ发送时延之间的时间间隔较大,在初始DQ发送时延下,第一写DQ的保持时间充足,无需进行校准。因此内存控制器111无需确定最小DQ发送时延便可以继续执行S1405,增大第一写DQ的发送时延,以确定第一写DQ的最大DQ发送时延。
若第一写DQ承载的数据写入错误,则说明在初始DQ发送时延下第一写DQ的保持时间不足以满足对传输性能(稳定性)的要求,需要进行校准。示例性的,如图15所示,在初始DQ发送时延下写DQS的交叉点位于第一写DQ的周期的较晚位置,即在初始DQ发送时延下,第一写DQ的保持时间较短。
内存控制器111在初始DQ发送时延的基础上,按照内存芯片12适用的目标保持时间H1将第一DQ的发送时延由初始DQ发送时延缩小到第一DQ发送时延。由于内存控制器111保持了写DQS的发送时延,因此相对于写DQS的交叉点,对应的第一写DQ的周期传输至内存芯片12的时间被提前,且提前的时间幅度即为内存芯片12适用的目标保持时间H1。
由图15可见,在第一DQ发送时延下第一写DQ的保持时间不足,进而导致第一写DQ所承载的数据写入错误。
S1403:内存控制器111按照第三调节幅度增大第一写DQ的发送时延。需要指出的是,第三调节幅度小于内存芯片12适用的目标保持时间H1。一般来说,第三调节幅度可以是内存控制器111能够对第一写DQ的发送时延进行调节的最小调节幅度。
S1404:若第一写DQ承载的数据写入错误,则内存控制器111返回继续执行1403。
内存控制器111一次或多次执行S1403和S1404,逐渐增大第一写DQ的发送时延,直至第一写DQ承载的数据写入正确。此时,第一写DQ的发送时延便可以作为最小DQ发送时延,如图15所示。
可以理解,在电子设备10工作过程中即使写DQS的交叉点相较于对应的第一写DQ周期的中间位置出现偏移,写DQS的交叉点仍会位于对应的写DQ周期的偏中间位置。在此情况下,若内存控制器111从初始DQ时间点逐渐缩小第一写DQ的发送时延,则内存控制器111需要多次调节第一写DQ的发送时延,及校验第一写DQ所承载的数据是否写入正确,才能确定最小DQ发送时延。
在本申请实施例所提供S1401至S1404中,由于内存芯片12所适用的目标保持时间H1往往小于第一写DQ的半周期,而从第一DQ发送时延调节至最小DQ发送时延的调节幅度又不会超过内存芯片12所适用的目标保持时间H1,因此执行S1403的次数较少,从而可以快速确定最小DQ发送时延。
S1405:内存控制器111在初始DQ发送时延的基础上,按照内存芯片12适用的目标建立时间S1增大第一写DQ的发送时延。也就是说,如图16所示,内存控制器111可以将第一写DQ的发送时延由初始DQ发送时延增大至第二DQ发送时延,该第二DQ发送时延与初始DQ发送时延之间间隔内存芯片12适用的目标建立时间S1。
由于内存控制器111保持写DQS的发送时延,同时增大了第一写DQ的发送时延,因此相较于写DQS的交叉点,对应的第一写DQ的周期传输至内存芯片12的时间被推迟,即第一写DQ的周期沿图16中箭头所示的方向移动。且,移动距离为内存芯片12适用的目标建立时间S1。
S1406:若第一写DQ承载的数据写入错误,则内存控制器111继续执行S1407。若第一写DQ承载的数据写入正确,则内存控制器111继续执行S1408。
可以理解,若在第二DQ发送时延下第一写DQ的数据写入正确,说明初始DQ发送时延与最大DQ发送时延之间的时间间隔较大,在初始DQ发送时延下,第一写DQ的保持时间充足,无需进行校准。如图16所示,在初始DQ发送时延下,写DQS的交叉点位于对应的第一写DQ周期的偏晚位置,也就是说,在初始DQ发送时延下,第一写DQ的建立时间较长。
当内存控制器111将第一写DQ的发送时延增大至第二DQ发送时延后,第一写DQ仍具有较大的建立时间,第一写DQ所承载的数据仍可以正确写入内存芯片12。因此内存控制器111无需确认最大DQ发送时延,可以继续执行S1202。
在一些场景下,也可能出现S1402和S1406中第一写DQ所承载的数据皆写入正确的情况。也就是说,在初始DQ发送时延的基础上,按照内存芯片12适用的目标保持时间H1缩小第一写DQ的发送时延后,第一写DQ所承载的数据写入正确,即在初始DQ发送时延下第一写DQ具有足够的保持时间。在初始DQ发送时延的基础上,按照内存芯片12适用的目标建立时间S1增大第一写DQ的发送时延后,第一写DQ所承载的数据也写入正确,即在初始DQ发送时延下第一写DQ具有足够的建立时间。在此情况下,内存控制器111可以直接将初始DQ发送时延作为目标DQ发送时延。
在第二DQ发送时延下,若第一写DQ承载的数据写入错误,则说明第一写DQ的建立时间不足以维持对传输性能(稳定性)的要求,需要进行校准。
一般来说,内存芯片12的目标建立时间S1和目标保持时间H1皆不大于第一写DQ的半周期的时长。也就是说,若内存控制器111确定了第一写DQ的最小DQ发送时延,则内存控制器111便无需确定第一写DQ的最大DQ发送时延。若内存控制器111确定了第一写DQ的最大DQ发送时延,则内存控制器111便无需确定第一写DQ的最小DQ发送时延。
S1407:内存控制器111按照第四调节幅度缩小第一写DQ的发送时延。需要指出的是,第四调节幅度小于内存芯片12适用的目标建立时间。一般来说,第四调节幅度也可以是内存控制器111能够对第一写DQ发送时延进行调节的最小调节幅度。
S1408:若第一写DQ承载的数据写入错误,则内存控制器111返回继续执行S1407。
内存控制器111一次或多次执行S1407和S1408,逐渐缩小第一写DQ的发送时延,直至第一写DQ承载的数据写入正确。此时,第一写DQ的发送时延便可以作为最大DQ发送时延。
内存控制器111通过执行如图14所示的方法,便可以确定第一写DQ的最大DQ发送时延和/或最小DQ发送时延。继而,内存控制器111可以基于最大DQ发送时延和/或最小DQ发送时延继续执行S1202。
可以理解,内存控制器111在确定第一写DQ的最大DQ发送时延和/或最小DQ发送时延的过程中,内存控制器111也可以先在初始DQ发送时延的基础上,按照内存芯片12适用的目标建立时间S1增大第一写DQ的发送时延,以确定第一写DQ的最大DQ发送时延,再在初始DQ发送时延的基础上,按照内存芯片12适用的目标保持时间H1缩小第一写DQ的发送时延,以确定第一写DQ的最小DQ发送时延。以上过程也应包含于本申请实施例中,具体实现不再赘述。
实施例四:调节读DQ的接收时延,以对齐读DQ与读DQS之间的相对时序位置
基于与实施例三类似的技术构思,本申请实施例所提供的实施例四可以对齐读DQ与读DQS之间的相对时序位置。
具体来说,如图17所示,实施例四主要包括以下步骤:
S1701:内存控制器111确定第一读DQ承载的数据读取正确时,第一读DQ的最大DQ接收时延和/或最小DQ接收时延。
该过程与S1202类似,区别在于,内存芯片12输出第一读DQ和读DQS,内存控制器111接收第一读DQ和该读DQS。通常,由读DQS中相邻交叉点之间的中间点作为触发点,触发内存控制器111识别第一读DQ的电平状态。
具体来说,在一种可能的实现方式中,内存控制器111可以从初始DQ接收时延开始,逐渐缩小第一读DQ的接收时延,直至第一读DQ所承载的数据读取错误。此时,第一读DQ的接收时延便可以作为最小DQ接收时延。内存控制器111还可以从初始DQ接收时延开始,逐渐增大第一读DQ的接收时延,直至第一读DQ所承载的数据读取错误。此时,第一读DQ的接收时延便可以作为最大DQ接收时延。
在另一种可能的实现方式中,内存控制器111还可以采用与图14类似的过程确定第一读DQ的最大DQ接收时延和最小DQ接收时延。具体来说,内存控制器111可以分别确定最大DQ接收时延和/或最小DQ接收时延:
1、确定最小DQ接收时延
在初始DQ接收时延的基础上,内存控制器111按照内存控制器111适用的目标保持时间缩小第一读DQ的接收时延。如图18所示,内存控制器111将第一读DQ的接收时延由初始DQ接收时延缩小至第一DQ接收时延,且第一DQ接收时延与初始DQ接收时延间隔内存控制器111适用的目标保持时间H2。
其中,内存控制器111适用的目标建立时间H2的具体实现可以参数上述实施例二,对此不再赘述。
在第一DQ接收时延下,若第一读DQ承载的数据读取正确,说明初始DQ接收时延与最小DQ接收时延之间的时间间隔较大,在初始DQ接收时延下,第一读DQ的建立时间充足,无需进行校准。在此情况下,无需确定最小DQ接收时延,便可以继续确定最大DQ接收时延。若第一读DQ承载的数据读取错误,则说明在初始DQ接收时延下第一读DQ的保持时间不足以满足对传输性能(稳定性)的要求,需要进行校准,如图18所示。
在第一DQ接收时延下,若第一读DQ承载的数据读取错误,内存控制器111可以逐渐增大第一读DQ的接收时延,使第一读DQ相对于读DQS的中间点沿图18中箭头所示方向移动,直至第一读DQ承载的数据被正确读取。此时,第一读DQ的接收时延便是最小DQ接收时延,如图18所示。
应理解,以上过程仅为简述,具体实现可以参考图14中S1401至S1404所示的内存控制器111确定第一写DQ的最小DQ发送时延的过程,对此不再赘述。
2、确定最大DQ接收时延
在初始DQ接收时延的基础上,内存控制器111按照内存控制器111适用的目标建立时间S2增大第一读DQ的接收时延。如图19所示,内存控制器111将第一读DQ的接收时延由初始DQ接收时延增大至第二DQ接收时延,且第二DQ接收时延与初始DQ接收时延之间间隔内存控制器111适用的目标建立时间S2。其中,内存控制器111适用的目标建立时间S2的具体实现可以参考上述实施例二,对此不再赘述。
在第二DQ接收时延下,若第一读DQ的数据读取正确,如图19所示,说明在初始DQ接收时延与最大DQ接收时延之间的时间间隔较大,在初始DQ接收时延下,第一读DQ的建立时间充足,无需进行校准。在此情况下,无需确定最大DQ接收时延,便可以继续执行S1702。
可以理解,也可能出现初始DQ接收时延分别与最大DQ接收时延和最小DQ接收时延之间的时间间隔皆较大的情况。也就是说,在初始DQ接收时延的基础上,按照内存控制器111适用的目标建立时间S2增大第一读DQ的接收时延后,第一读DQ所承载的数据读取正确,即在初始DQ接收时延下第一读DQ具有足够的建立时间。在初始DQ接收时延的基础上,按照内存控制器111适用的目标保持时间H2缩小第一读DQ的接收时延后,第一读DQ所承载的数据也读取正确,即在初始DQ接收时延下第一读DQ有足够的保持时间。在此情况下,内存控制器111可以直接将初始DQ接收时延作为目标DQ接收时延。
在第二DQ接收时延下,若第一读DQ承载的数据读取错误,则说明在初始DQ接收时延下,第一读DQ的建立时间不足以维持传输性能(稳定性),需要进行校准。内存控制器111可以从第二DQ接收时延开始,逐渐缩小第一读DQ的接收时延,直至第一读DQ承载的数据被正确读取。此时,第一读DQ的接收时延便是最大DQ接收时延。
应理解,以上过程仅为简述,具体实现可以参考图8中S1405至S1408所示的内存控制器111确定第一写DQ的最大DQ发送时延的过程,对此不再赘述。
一般来说,内存控制器111的目标建立时间S2和目标保持时间H2皆不大于第一读DQ的半周期的时长。也就是说,若内存控制器111确定了第一读DQ的最小DQ接收时延,则内存控制器111便无需确定第一读DQ的最大DQ接收时延。若内存控制器111确定了第一读DQ的最大DQ接收时延,则内存控制器111便无需确定第一读DQ的最小DQ接收时延。
S1702:内存控制器111保持读DQS的接收时延,将第一读DQ的接收时延调节至位于最大DQ接收时延和最小DQ接收时延之间的目标DQ接收时延,该目标DQ接收时延与最大DQ接收时延之间的间隔不小于内存控制器111适用的目标建立时间,该目标DQ接收时延与最小接收时延之间的间隔不小于内存控制器111适用的目标保持时间。
需要指出的是,由于在S1701中内存控制器111会确定最大DQ接收时延和最小DQ接收时延中的一个或两个,因此在S1702中的目标DQ接收时延也需要分情况说明。
情况一:内存控制器111确定最大DQ接收时延,未确定最小DQ接收时延。在此情况下,目标DQ接收时延可以与最大DQ接收时延之间间隔内存控制器111适用的目标建立时间S2。其中,由于上述最大DQ接收时延和最小DQ接收时延之间的时间间隔较大,趋近于第一读DQ的周期时长。又由于第一读DQ的周期往往远大于内存控制器111适用的目标建立时间S2,因此在目标DQ接收时延与最大DQ接收时延之间间隔内存控制器111适用的目标建立时间时,目标DQ接收时延与最小DQ接收时延之间的间隔通常会大于内存控制器111适用的目标保持时间H2。
情况二:内存控制器111确定最小DQ接收时延,未确定最大DQ接收时延。在此情况下,目标DQ接收时延可以与最小DQ接收时延之间间隔内存控制器111适用的目标保持时间H2。如前所述,最大DQ接收时延和最小DQ接收时延之间的时间间隔较大,趋近于第一读DQ的周期时长。又由于第一读DQ的周期往往远大于内存控制器111适用的目标保持时间H2,因此在目标DQ接收时延与最小DQ接收时延之间间隔内存控制器111适用的目标保持时间H2时,目标DQ接收时延与最大DQ接收时延之间的间隔通常会大于内存控制器111适用的目标建立时间S2。
情况三:内存控制器111确定最小DQ接收时延和最大DQ接收时延。在此情况下,目标DQ接收时延可以与最大DQ接收时延之间间隔内存控制器111适用的目标建立时间S2,或者目标DQ接收时延可以与最小DQ接收时延之间间隔内存控制器111适用的目标保持时间H2,或者目标DQ接收时延可以位于最大DQ接收时延和最小DQ接收时延的中间位置。
如前所述,最大DQ接收时延和最小DQ接收时延之间的时间间隔较大,趋近于读DQ的周期时长。目标DQ接收时延位于最大DQ接收时延和最小DQ接收时延的中间位置,使得目标DQ接收时延与最小DQ接收时延之间的时间间隔可以大于内存控制器111适用的目标保持时间H2,以及使得目标DQ接收时延与最大DQ接收时延之间的时间间隔可以大于内存控制器111适用的目标建立时间H2。
在实施例四中,内存控制器111在每次内存训练过程中只调节一个读DQ(第一读DQ)的接收时延,相较于如图4a至图4e所示的内存训练过程,实施例四中内存控制器111无需调节其它读DQ和读DQS的接收时延,因此有利于缩短内存训练用时。
需要指出的是,假设第一读DQ为图1中数据信号线L0所传输的读DQ0。则,内存控制器111在调节写DQ0的接收时延期间,内存控制器111仍可以通过数据信号线L1至数据信号线L7访问内存芯片12。也就是说,实施例四在对齐读DQ0至读DQ7分别与读DQS之间的相对时序位置的同时,还可以并行访问内存芯片12,从而有利于进一步降低内存训练对处理器核112持续运行产生的影响。
需要指出的是,在实施例三和实施例四中,内存控制器111每次内存训练可以只对齐一个数据传输线上写DQ与写DQS之间的相对时序位置,以及该数据传输线上读DQ与读DQS之间的相对时序位置。内存控制器111采用轮循规则,依次完成写DQ0至写DQ7与写DQS之间的对齐,以及读DQ0至读DQ7与读DQS之间的对齐。示例性的,内存控制器111所采用的轮循规则可以如图20所示,主要包括以下步骤:
S2001:内存控制器111接收到触发指令。
S2002:内存控制器111根据轮循规则,确定接下来需要调节写DQ0的发送时延和读DQ0的接收时延。内存控制器111进而调节写DQ0的发送时延,使写DQ0与写DQS之间的相对时序位置对齐。以及,内存控制器111调节读DQ0的接收时延,使读DQ0与读DQS之间的相对时序位置对齐。
S2003:内存控制器111完成内存训练。
S2004:内存控制器111接收到触发指令。
S2005:内存控制器111根据轮循规则,确定接下来需要调节写DQ1的发送时延和读DQ1的接收时延。内存控制器111进而调节写DQ1的发送时延,使写DQ1与写DQS之间的相对时序位置对齐。以及,内存控制器111调节读DQ1的接收时延,使读DQ1与读DQS之间的相对时序位置对齐。
S2006:内存控制器111完成内存训练。
依次类推,内存控制器111按照上述规则,依次完成调节写DQ2至写DQ7的发送时延,以及读DQ2至读DQ7的接收时延。
S2007:内存控制器111接收到触发指令。
S2008:内存控制器111根据轮循规则,确定接下来需要调节写DQ7的发送时延和读DQ7的接收时延。内存控制器111进而调节写DQ7的发送时延,使写DQ7与写DQS之间的相对时序位置对齐。以及,内存控制器111调节读DQ7的接收时延,使读DQ7与读DQS之间的相对时序位置对齐。
S2009:内存控制器111完成内存训练。
在下一次接收到触发指令(即图20所示的由S2009返回S2001)后,内存控制器111根据轮循规则将确定接下来需要调节写DQ0的发送时延和读DQ0的接收时延,进而调节写DQ0的发送时延,使写DQ0与写DQS之间的相对时序位置对齐,以及,内存控制器111调节读DQ0的接收时延,使读DQ0与读DQS之间的相对时序位置对齐(S2002)。
以上从方法实施例的角度对本申请提供的内存训练方法进行了介绍。可以理解的是,为了实现上述功能,内存控制器可以包括执行各个功能相应的硬件电路和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
示例性的,本申请实施例提供一种内存控制器,该内存控制器可以实现上述任一实施例所提供的内存训练方法。如图21所示,内存控制器2100主要包括时延电路2101和控制电路2102。内存控制器2100可以作为图1所示的内存控制器111。
在一种可能的实现方式中,时延电路2101可以在控制电路2102的控制下产生DQS的传输时延。时延电路2101调节DQS的传输时延,可以调节DQS的相位。
例如,时延电路2101可以包括寄存器和相位调节器,相位调节器可以产生DQS的传输时延,寄存器可以作为控制电路2102控制时延电路2101的控制接口,使得控制电路2102可以通过寄存器控制时延电路2101调节DQS的传输时延。
控制电路2102可以是具备一定逻辑运算能力的逻辑电路,可以控制时延电路2101调节DQS的传输时延,从而使内存控制器2100能够执行本申请实施例中通过调节DQS的传输时延进行内存训练的方法。
在一个具体的示例中,控制电路2102可以控制时延电路2101保持N个DQ的传输时延不变,并控制时延电路2101调节DQS的传输时延,从而确定在N个DQ承载的数据全部传输正确时DQS的最大DQS传输时延和/或最小DQS传输时延。其中,上述N个DQ和DQS均由内存控制器2100传输到内存芯片,或均由内存芯片传输到内存控制器2100,DQS可以触发N个DQ的接收端识别N个DQ的电平状态。在N个DQ和DQS由内存控制器2100传输到内存芯片时,N个DQ的接收端为内存芯片,在N个DQ和DQS由内存芯片传输到内存控制器2100时,N个DQ的接收端为内存控制器2100。控制电路2102控制时延电路2101将DQS的传输时延调节至位于最大DQS传输时延和最小DQS传输时延之间的目标DQS传输时延,目标DQS传输时延与最大DQS传输时延之间的间隔不小于接收端适用的目标保持时间,和/或,目标DQS传输时延与最小DQS传输时延之间的间隔不小于接收端适用的目标建立时间。
具体来说,N个DQ和DQS可以由内存控制器2100传输到内存芯片,DQS的传输时延为DQS的发送时延。在此情况下,控制电路2102可以控制时延电路2101将DQS的发送时延调节至位于最大DQS发送时延和最小DQS发送时延之间的目标DQS发送时延。
N个DQ和DQS也可以由内存芯片传输到内存控制器2100,DQS的传输时延为DQS的接收时延。在此情况下,控制电路2102可以控制时延电路2101将DQS的接收时延调节至位于最大DQS接收时延和最小DQS接收时延之间的目标DQS接收时延。
接下来,对控制电路2102确定最小DQS传输时延的方式作进一步说明:
在一种可能的实现方式中,控制电路2102可以控制时延电路2101从初始DQS传输时延开始,逐渐缩小DQS的传输时延,直至出现至少一个DQ所承载的数据传输错误。此时,DQS的传输时延便可以作为最小DQS传输时延。
在另一种可能的实现方式中,控制电路2102可以控制时延电路2101将DQS的传输时延缩小至第一DQS传输时延,该第一DQS传输时延与缩小前的DQS的传输时延之间间隔接收端所适用的目标建立时间;当存在至少一个DQ承载的数据传输错误时,控制电路2102控制时延电路2101逐渐增大DQS的传输时延,直至N个DQ承载的数据全部传输正确时,确定对应的DQS的传输时延为DQS的最小DQS传输时延。
其中,缩小前的DQS的传输时延可以是初始DQS传输时延,例如可以是控制电路2102开始执行本次内存训练之前或开始执行本次内存训练时DQS的传输时延。
示例性的,控制电路2102在控制时延电路2101逐渐增大DQS的传输时延时,可以控制时延电路2101按照每次增大第一DQS调节幅度的方式,逐渐增大DQS的传输时延。其中,第一DQS调节幅度小于接收端适用的目标建立时间。例如,第一DQS调节幅度可以是时延电路2101对DQS的传输时延的最小调节幅度。
接下来,对控制电路2102确定最大DQS传输时延的方式作进一步说明:
在一种可能的实现方式中,控制电路2102可以控制时延电路2101从初始DQS传输时延开始,逐渐增大DQS的传输时延,直至出现至少一个DQ所承载的数据传输错误。此时,DQS的传输时延便可以作为最大DQS传输时延。
在另一种可能的实现方式中,控制电路2102可以控制时延电路2101将DQS的传输时延增大至第二DQS传输时延,该第二DQS传输时延与增大前的DQS的传输时延之间间隔接收端适用的目标保持时间;当存在至少一个DQ承载的数据传输错误时,控制电路2102控制时延电路2101逐渐缩小对DQS的传输时延,直至N个DQ承载的数据全部传输正确时,确定对应的DQS的传输时延为DQS的最大DQS传输时延。
其中,增大前的DQS的传输时延可以是初始DQS传输时延,例如可以是控制电路2102开始执行本次内存训练之前或开始执行本次内存训练时DQS的传输时延。
示例性的,控制电路2102在控制时延电路2101逐渐缩小DQS的传输时延时,可以控制时延电路2101按照每次缩小第二DQS调节幅度的方式,逐步缩小DQS的传输时延。其中,第二DQS调节幅度小于接收端适用的目标保持时间。例如,第二DQS调节幅度可以是时延电路2101对DQS的传输时延的最小调节幅度。
在另一种可能的实现方式中,时延电路2101可以在控制电路2102的控制下产生第一DQ的传输时延。时延电路2101调节第一DQ的传输时延,可以调节第一DQ的相位。
例如,时延电路2101可以包括寄存器和相位调节器,相位调节器可以产生第一DQ的传输时延,寄存器可以作为控制电路2102控制时延电路2101的控制接口,使得控制电路2102可以通过寄存器控制时延电路2101调节第一DQ的传输时延。
控制电路2102可以是具备一定逻辑运算能力的逻辑电路,可以控制时延电路2101调节第一DQ的传输时延,从而使内存控制器2100能够执行本申请实施例中通过调节第一DQ的传输时延进行内存训练的方法。
在一个具体的示例中,控制电路2102可以控制时延电路2101保持DQS的传输时延不变,并控制时延电路2101调节第一DQ的传输时延,从而确定在第一DQ承载的数据传输正确时第一DQ的最大DQ传输时延和/或最小DQ传输时延。其中,上述DQS与第一DQ均由内存控制器2100传输到内存芯片,或均由内存芯片传输到内存控制器2100,DQS可以触发第一DQ的接收端识别第一DQ的电平状态,其中在第一DQ和DQS由内存控制器2100传输到内存芯片时,第一DQ的接收端为内存芯片,在第一DQ和DQS由内存芯片传输到内存控制器2100时,第一DQ的接收端为内存控制器2100;控制电路2102控制时延电路2101将第一DQ的传输时延调节至位于最大DQ传输时延和最小DQ传输时延之间的目标DQ传输时延,目标DQ传输时延与最大DQ传输时延之间的间隔不小于接收端适用的目标建立时间,和/或,目标DQ传输时延与最小DQ传输时延之间的间隔不小于接收端适用的目标保持时间。
其中,上述DQS可以与N个DQ相对应,第一DQ位于该N个DQ内。控制电路2102在控制时延电路2101保持DQS的传输时延不变,并控制时延电路2101调节第一DQ的传输时延之前,还可以先按照轮循规则,确定N个DQ中前一次完成内存训练的DQ的下一个DQ为上述第一DQ。
具体来说,第一DQ和DQS可以均由内存控制器2100传输到内存芯片,第一DQ的传输时延为第一DQ的发送时延。在此情况下,控制电路2102可以控制时延电路2101将第一DQ的发送时延调节至位于最大DQ发送时延和最小DQ发送时延之间的目标DQ发送时延。
第一DQ和DQS也可以均由内存芯片传输到内存控制器2100,第一DQ的传输时延为第一DQ的接收时延。在此情况下,控制电路2102可以控制时延电路2101将第一DQ的接收时延调节至位于最大DQ接收时延和最小DQ接收时延之间的目标DQ接收时延。
接下来,对控制电路2102确定最小DQ传输时延的方式作进一步说明:
在一种可能的实现方式中,控制电路2102可以控制时延电路2101从初始DQ传输时延开始,逐渐缩小第一DQ的传输时延,直至第一DQ所承载的数据传输错误。此时,第一DQ的传输时延便可以作为最小DQ传输时延。
在另一种可能的实现方式中,控制电路2102可以控制时延电路2101将第一DQ的传输时延缩小至第一DQ传输时延,该第一DQ传输时延与缩小前的第一DQ的传输时延之间间隔接收端所适用的目标保持时间;当第一DQ承载的数据传输错误时,控制电路2102可以控制时延电路2101逐渐增大对第一DQ的传输时延,直至第一DQ承载的数据传输正确时,确定对应的第一DQ的传输时延为最小DQ传输时延。
其中,缩小前的第一DQ的传输时延可以是初始DQ传输时延,例如可以是控制电路2102开始执行本次内存训练之前或开始执行本次内存训练时第一DQ的传输时延。
示例性的,控制电路2102在逐渐增大第一DQ的传输时延时,可以控制时延电路2101按照每次增大第一DQ调节幅度的方式,逐渐增大第一DQ的传输时延。其中,第一DQ调节幅度小于接收端适用的目标保持时间。示例性的,第一DQ调节幅度为时延电路2101对第一DQ的传输时延的最小调节幅度。
接下来,对控制电路2102确定最大DQ传输时延的方式作进一步说明:
在一种可能的实现方式中,控制电路2102可以控制时延电路2101从初始DQ传输时延开始,逐渐增大第一DQ的传输时延,直至第一DQ所承载的数据传输错误。此时,第一DQ的传输时延便可以作为最大DQ传输时延。
在另一种可能的实现方式中,控制电路2102可以控制时延电路2101将第一DQ的传输时延增大至第二DQ传输时延,该第二DQ传输时延与增大前的第一DQ的传输时延之间间隔接收端适用的目标建立时间;当第一DQ承载的数据传输错误时,控制电路2102可以控制时延电路2101逐渐缩小第一DQ的传输时延,直至第一DQ承载的数据传输正确时,确定对应的第一DQ的传输时延为最大DQ传输时延。
其中,增大前的第一DQ的传输时延可以是初始DQ传输时延,例如可以是控制电路2102开始执行本次内存训练之前或开始执行本次内存训练时第一DQ的传输时延。
示例性的,控制电路2102可以控制时延电路2101按照每次缩小第二DQ调节幅度的方式,逐渐缩小第一DQ的传输时延。其中,第二DQ调节幅度小于接收端适用的目标建立时间,例如,第二DQ调节幅度可以是时延电路2101对第一DQ的传输时延的最小调节幅度。
基于相同的技术构思,本申请实施例还提供一种处理器,该处理器可以是图1中所示的处理器11。示例性的,该处理器11包括处理器核112和内存控制器111。处理器核112和内存控制器111的具体实现可以参考上述实施例,对此不再赘述。
基于相同的技术构思,本申请实施例还提供一种电子设备,该电子设备可以是如图1所示的电子设备10,包括处理器11和内存芯片12,内存芯片12与处理器11中的内存控制器111连接。电子设备的具体实现可以参考上述实施例,对此不再赘述。
基于相同的技术构思,本申请实施例还提供一种电子设备,如图22所示,该电子设备2200主要包括处理器11、内存芯片12和内存控制器111,该内存控制器111可以是如上述任一实施例所提供的内存控制器。内存控制器111分别与处理器11和内存芯片12连接;
处理器11可以向内存控制器111发送触发指令;内存控制器111可以在接收到该触发指令后执行本申请实施例所提供的内存训练方法。
例如,处理器11可以在确定当前环境温度与历史环境温度之间的差值超过温度波动阈值时,向内存控制器111发送触发指令,其中,历史环境温度为处理器前一次发送触发指令时的环境温度。
又例如,处理器可以在确定当前时间点与前一次发送触发指令的时间点之间的时间间隔超过时间阈值时,向内存控制器111发送触发指令。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (45)
1.一种内存训练方法,其特征在于,应用于内存控制器,所述方法包括:
所述内存控制器保持N个DQ的传输时延不变,并调节DQS的传输时延,确定在N个DQ承载的数据全部传输正确时所述DQS的最大DQS传输时延和/或最小DQS传输时延,所述N个DQ和所述DQS均由所述内存控制器传输到内存芯片,或均由内存芯片传输到所述内存控制器,所述DQS用于触发所述N个DQ的接收端识别所述N个DQ的电平状态,在所述N个DQ和所述DQS由所述内存控制器传输到所述内存芯片时,所述N个DQ的接收端为所述内存芯片,在所述N个DQ和所述DQS由所述内存芯片传输到所述内存控制器时,所述N个DQ的接收端为所述内存控制器;
所述内存控制器将所述DQS的传输时延调节至位于所述最大DQS传输时延和所述最小DQS传输时延之间的目标DQS传输时延,所述目标DQS传输时延与所述最大DQS传输时延之间的间隔不小于所述接收端适用的目标保持时间,和/或,所述目标DQS传输时延与所述最小DQS传输时延之间的间隔不小于所述接收端适用的目标建立时间。
2.根据权利要求1所述的内存训练方法,其特征在于:
在所述N个DQ和所述DQS由所述内存控制器传输到所述内存芯片时,所述DQS的传输时延为所述DQS的发送时延,则所述内存控制器将所述DQS的发送时延调节至位于最大DQS发送时延和最小DQS发送时延之间的目标DQS发送时延。
3.根据权利要求1所述的内存训练方法,其特征在于:
在所述N个DQ和所述DQS由所述内存芯片传输到所述内存控制器时,所述DQS的传输时延为所述DQS的接收时延,则所述内存控制器将所述DQS的接收时延调节至位于最大DQS接收时延和最小DQS接收时延之间的目标DQS接收时延。
4.根据权利要求1至3中任一项所述的内存训练方法,其特征在于,所述内存控制器确定在N个DQ承载的数据全部传输正确时所述DQS的最小DQS传输时延,具体包括:
所述内存控制器将所述DQS的传输时延缩小至第一DQS传输时延,所述第一DQS传输时延与缩小前的所述DQS的传输时延之间间隔所述接收端所适用的目标建立时间;
当存在至少一个DQ承载的数据传输错误时,所述内存控制器逐渐增大所述DQS的传输时延,直至所述N个DQ承载的数据全部传输正确时,确定对应的所述DQS的传输时延为所述DQS的最小DQS传输时延。
5.根据权利要求4所述的内存训练方法,其特征在于,所述内存控制器逐渐增大所述DQS的传输时延,具体包括:
所述内存控制器按照每次增大第一DQS调节幅度的方式,逐渐增大所述DQS的传输时延,所述第一DQS调节幅度小于所述接收端适用的目标建立时间。
6.根据权利要求5所述的内存训练方法,其特征在于,所述第一DQS调节幅度为所述内存控制器对所述DQS的传输时延的最小调节幅度。
7.根据权利要求1至3中任一项所述的内存训练方法,其特征在于,所述内存控制器确定在N个DQ承载的数据全部传输正确时所述DQS的最大DQS传输时延,具体包括:
所述内存控制器将所述DQS的传输时延增大至第二DQS传输时延,所述第二DQS传输时延与增大前的所述DQS的传输时延之间间隔所述接收端适用的目标保持时间;
当存在至少一个DQ承载的数据传输错误时,所述内存控制器逐渐缩小对所述DQS的传输时延,直至所述N个DQ承载的数据全部传输正确时,确定对应的所述DQS的传输时延为所述DQS的最大DQS传输时延。
8.根据权利要求7所述的内存训练方法,其特征在于,所述内存控制器逐渐缩小对所述DQS的传输时延,具体包括:
所述内存控制器按照每次缩小第二DQS调节幅度的方式,逐步缩小所述DQS的传输时延,所述第二DQS调节幅度小于所述接收端适用的目标保持时间。
9.根据权利要求8所述的内存训练方法,其特征在于,所述第二DQS调节幅度为所述内存控制器对所述DQS的传输时延的最小调节幅度。
10.一种内存训练方法,其特征在于,应用于内存控制器,所述方法包括:
所述内存控制器保持DQS的传输时延不变,并调节第一DQ的传输时延,确定在所述第一DQ承载的数据传输正确时所述第一DQ的最大DQ传输时延和/或最小DQ传输时延,所述DQS与所述第一DQ均由所述内存控制器传输到内存芯片,或均由内存芯片传输到所述内存控制器,所述DQS用于触发所述第一DQ的接收端识别所述第一DQ的电平状态,在所述第一DQ和所述DQS由所述内存控制器传输到所述内存芯片时,所述第一DQ的接收端为所述内存芯片,在所述第一DQ和所述DQS由所述内存芯片传输到所述内存控制器时,所述第一DQ的接收端为所述内存控制器;
所述内存控制器将所述第一DQ的传输时延调节至位于所述最大DQ传输时延和所述最小DQ传输时延之间的目标DQ传输时延,所述目标DQ传输时延与所述最大DQ传输时延之间的间隔不小于所述接收端适用的目标建立时间,和/或,所述目标DQ传输时延与所述最小DQ传输时延之间的间隔不小于所述接收端适用的目标保持时间。
11.根据权利要求10所述的方法,其特征在于,N个DQ与所述DQS相对应,所述第一DQ位于所述N个DQ内,
所述内存控制器调节第一DQ的传输时延之前,还包括:
所述内存控制器按照轮循规则,确定所述N个DQ中前一次完成内存训练的DQ的下一个DQ为所述第一DQ。
12.根据权利要求10或11所述的方法,其特征在于:
在所述第一DQ和所述DQS均由所述内存控制器传输到所述内存芯片时,所述第一DQ的传输时延为所述第一DQ的发送时延,则所述内存控制器将所述第一DQ的发送时延调节至位于最大DQ发送时延和最小DQ发送时延之间的目标DQ发送时延。
13.根据权利要求10或11所述的方法,其特征在于:
在所述第一DQ和所述DQS均由所述内存芯片传输到所述内存控制器时,所述第一DQ的传输时延为所述第一DQ的接收时延,则所述内存控制器将所述第一DQ的接收时延调节至位于最大DQ接收时延和最小DQ接收时延之间的目标DQ接收时延。
14.根据权利要求10至13中任一项所述的方法,其特征在于,所述内存控制器确定在所述第一DQ承载的数据传输正确时所述第一DQ的最小DQ传输时延,具体包括:
所述内存控制器将所述第一DQ的传输时延缩小至第一DQ传输时延,所述第一DQ传输时延与缩小前的所述第一DQ的传输时延之间间隔所述接收端所适用的目标保持时间;
当所述第一DQ承载的数据传输错误时,所述内存控制器逐渐增大对所述第一DQ的传输时延,直至所述第一DQ承载的数据传输正确时,确定对应的所述第一DQ的传输时延为所述最小DQ传输时延。
15.根据权利要求14所述的方法,其特征在于,所述内存控制器逐渐增大对所述第一DQ的传输时延,具体包括:
所述内存控制器按照每次增大第一DQ调节幅度的方式,逐渐增大所述第一DQ的传输时延,所述第一DQ调节幅度小于所述接收端适用的目标保持时间。
16.根据权利要求15所述的方法,其特征在于,所述第一DQ调节幅度为所述内存控制器对所述第一DQ的传输时延的最小调节幅度。
17.根据权利要求10至13中任一项所述的方法,其特征在于,所述内存控制器确定在所述第一DQ承载的数据传输正确时所述第一DQ的最大DQ传输时延,具体包括:
所述内存控制器将所述第一DQ的传输时延增大至第二DQ传输时延,所述第二DQ传输时延与增大前的所述第一DQ的传输时延之间间隔所述接收端适用的目标建立时间;
当所述第一DQ承载的数据传输错误时,所述内存控制器逐渐缩小所述第一DQ的传输时延,直至所述第一DQ承载的数据传输正确时,确定对应的所述第一DQ的传输时延为所述最大DQ传输时延。
18.根据权利要求17所述的方法,其特征在于,所述内存控制器逐渐缩小所述第一DQ的传输时延,具体包括:
所述内存控制器按照每次缩小第二DQ调节幅度的方式,逐渐缩小所述第一DQ的传输时延,所述第二DQ调节幅度小于所述接收端适用的目标建立时间。
19.根据权利要求18所述的方法,其特征在于,所述第二DQ调节幅度为所述内存控制器对所述第一DQ的传输时延的最小调节幅度。
20.一种内存控制器,其特征在于,包括时延电路和控制电路;
所述时延电路用于在所述控制电路的控制下产生DQS的传输时延;
所述控制电路用于:
控制所述时延电路保持N个DQ的传输时延不变,并控制所述时延电路调节所述DQS的传输时延,确定在N个DQ承载的数据全部传输正确时所述DQS的最大DQS传输时延和/或最小DQS传输时延,所述N个DQ和所述DQS均由所述内存控制器传输到内存芯片,或均由内存芯片传输到所述内存控制器,所述DQS用于触发所述N个DQ的接收端识别所述N个DQ的电平状态,其中,在所述N个DQ和所述DQS由所述内存控制器传输到所述内存芯片时,所述N个DQ的接收端为所述内存芯片,在所述N个DQ和所述DQS由所述内存芯片传输到所述内存控制器时,所述N个DQ的接收端为所述内存控制器;
控制所述时延电路将所述DQS的传输时延调节至位于所述最大DQS传输时延和所述最小DQS传输时延之间的目标DQS传输时延,所述目标DQS传输时延与所述最大DQS传输时延之间的间隔不小于所述接收端适用的目标保持时间,和/或,所述目标DQS传输时延与所述最小DQS传输时延之间的间隔不小于所述接收端适用的目标建立时间。
21.根据权利要求20所述的内存控制器,其特征在于:
在所述N个DQ和所述DQS由所述内存控制器传输到所述内存芯片时,所述DQS的传输时延为所述DQS的发送时延,则所述控制电路具体用于:
控制所述时延电路将所述DQS的发送时延调节至位于最大DQS发送时延和最小DQS发送时延之间的目标DQS发送时延。
22.根据权利要求20所述的内存控制器,其特征在于:
在所述N个DQ和所述DQS由所述内存芯片传输到所述内存控制器时,所述DQS的传输时延为所述DQS的接收时延,则所述控制电路具体用于:
控制所述时延电路将所述DQS的接收时延调节至位于最大DQS接收时延和最小DQS接收时延之间的目标DQS接收时延。
23.根据权利要求20至22中任一项所述的内存控制器,其特征在于,所述控制电路具体用于:
控制所述时延电路将所述DQS的传输时延缩小至第一DQS传输时延,所述第一DQS传输时延与缩小前的所述DQS的传输时延之间间隔所述接收端所适用的目标建立时间;
当存在至少一个DQ承载的数据传输错误时,控制所述时延电路逐渐增大所述DQS的传输时延,直至所述N个DQ承载的数据全部传输正确时,确定对应的所述DQS的传输时延为所述DQS的最小DQS传输时延。
24.根据权利要求23所述的内存控制器,其特征在于,所述控制电路具体用于:
控制所述时延电路按照每次增大第一DQS调节幅度的方式,逐渐增大所述DQS的传输时延,所述第一DQS调节幅度小于所述接收端适用的目标建立时间。
25.根据权利要求24所述的内存控制器,其特征在于,所述第一DQS调节幅度为所述时延电路对所述DQS的传输时延的最小调节幅度。
26.根据权利要求20至22中任一项所述的内存控制器,其特征在于,所述控制电路具体用于:
控制所述时延电路将所述DQS的传输时延增大至第二DQS传输时延,所述第二DQS传输时延与增大前的所述DQS的传输时延之间间隔所述接收端适用的目标保持时间;
当存在至少一个DQ承载的数据传输错误时,控制所述时延电路逐渐缩小对所述DQS的传输时延,直至所述N个DQ承载的数据全部传输正确时,确定对应的所述DQS的传输时延为所述DQS的最大DQS传输时延。
27.根据权利要求26所述的内存控制器,其特征在于,所述控制电路具体用于:
控制所述时延电路按照每次缩小第二DQS调节幅度的方式,逐步缩小所述DQS的传输时延,所述第二DQS调节幅度小于所述接收端适用的目标保持时间。
28.根据权利要求27所述的内存控制器,其特征在于,所述第二DQS调节幅度为所述时延电路对所述DQS的传输时延的最小调节幅度。
29.一种内存控制器,其特征在于,包括时延电路和控制电路;
所述时延电路用于在所述控制电路的控制下产生第一DQ的传输时延;
所述控制电路用于:
控制所述时延电路保持DQS的传输时延不变,并控制所述时延电路调节所述第一DQ的传输时延,确定在所述第一DQ承载的数据传输正确时所述第一DQ的最大DQ传输时延和/或最小DQ传输时延,所述DQS与所述第一DQ均由所述内存控制器传输到内存芯片,或均由内存芯片传输到所述内存控制器,所述DQS用于触发所述第一DQ的接收端识别所述第一DQ的电平状态,其中在所述第一DQ和所述DQS由所述内存控制器传输到所述内存芯片时,所述第一DQ的接收端为所述内存芯片,在所述第一DQ和所述DQS由所述内存芯片传输到所述内存控制器时,所述第一DQ的接收端为所述内存控制器;
控制所述时延电路将所述第一DQ的传输时延调节至位于所述最大DQ传输时延和所述最小DQ传输时延之间的目标DQ传输时延,所述目标DQ传输时延与所述最大DQ传输时延之间的间隔不小于所述接收端适用的目标建立时间,和/或,所述目标DQ传输时延与所述最小DQ传输时延之间的间隔不小于所述接收端适用的目标保持时间。
30.根据权利要求29所述的内存控制器,其特征在于,N个DQ与所述DQS相对应,所述第一DQ位于所述N个DQ内,
所述控制电路还用于:
按照轮循规则,确定所述N个DQ中前一次完成内存训练的DQ的下一个DQ为所述第一DQ。
31.根据权利要求29或30所述的内存控制器,其特征在于:
在所述第一DQ和所述DQS均由所述内存控制器传输到所述内存芯片时,所述第一DQ的传输时延为所述第一DQ的发送时延,则所述控制电路具体用于:
控制所述时延电路将所述第一DQ的发送时延调节至位于最大DQ发送时延和最小DQ发送时延之间的目标DQ发送时延。
32.根据权利要求29或30所述的内存控制器,其特征在于:
在所述第一DQ和所述DQS均由所述内存芯片传输到所述内存控制器时,所述第一DQ的传输时延为所述第一DQ的接收时延,则所述控制电路具体用于:
控制所述时延电路将所述第一DQ的接收时延调节至位于最大DQ接收时延和最小DQ接收时延之间的目标DQ接收时延。
33.根据权利要求29至32中任一项所述的内存控制器,其特征在于,所述控制电路具体用于:
控制所述时延电路将所述第一DQ的传输时延缩小至第一DQ传输时延,所述第一DQ传输时延与缩小前的所述第一DQ的传输时延之间间隔所述接收端所适用的目标保持时间;
当所述第一DQ承载的数据传输错误时,控制所述时延电路逐渐增大对所述第一DQ的传输时延,直至所述第一DQ承载的数据传输正确时,确定对应的所述第一DQ的传输时延为所述最小DQ传输时延。
34.根据权利要求33所述的内存控制器,其特征在于,所述控制电路具体用于:
控制所述时延电路按照每次增大第一DQ调节幅度的方式,逐渐增大所述第一DQ的传输时延,所述第一DQ调节幅度小于所述接收端适用的目标保持时间。
35.根据权利要求34所述的内存控制器,其特征在于,所述第一DQ调节幅度为所述时延电路对所述第一DQ的传输时延的最小调节幅度。
36.根据权利要求29至32中任一项所述的内存控制器,其特征在于,所述控制电路具体用于:
控制所述时延电路将所述第一DQ的传输时延增大至第二DQ传输时延,所述第二DQ传输时延与增大前的所述第一DQ的传输时延之间间隔所述接收端适用的目标建立时间;
当所述第一DQ承载的数据传输错误时,控制所述时延电路逐渐缩小所述第一DQ的传输时延,直至所述第一DQ承载的数据传输正确时,确定对应的所述第一DQ的传输时延为所述最大DQ传输时延。
37.根据权利要求36所述的内存控制器,其特征在于,所述控制电路具体用于:
控制所述时延电路按照每次缩小第二DQ调节幅度的方式,逐渐缩小所述第一DQ的传输时延,所述第二DQ调节幅度小于所述接收端适用的目标建立时间。
38.根据权利要求37所述的内存控制器,其特征在于,所述第二DQ调节幅度为所述时延电路对所述第一DQ的传输时延的最小调节幅度。
39.一种处理器,其特征在于,包括处理器核和如权利要求20至38所述的内存控制器;
所述处理器核,用于向所述内存控制器发送触发指令;
所述内存控制器,用于在接收到所述触发指令后执行内存训练。
40.根据权利要求39所述的处理器,其特征在于,所述处理器核,具体用于:
在确定当前环境温度与历史环境温度之间的差值超过温度波动阈值时,向所述内存控制器发送所述触发指令,所述历史环境温度为所述处理器核前一次发送所述触发指令时的环境温度。
41.根据权利要求39或40所述的处理器,其特征在于,所述处理器核,具体用于:
在确定当前时间点与所述处理器核前一次执行完所述内存训练的时间点之间的时间间隔超过时间阈值时,向所述内存控制器发送所述触发指令。
42.一种电子设备,其特征在于,包括如权利要求39至41中任一项所述的处理器和内存芯片,所述内存芯片与所述处理器中的内存控制器连接。
43.一种电子设备,其特征在于,包括处理器、内存芯片和如权利要求20至38所述的内存控制器,所述内存控制器分别与所述处理器和所述内存芯片连接;
所述处理器,用于向所述内存控制器发送触发指令;
所述内存控制器,用于在接收到所述触发指令后执行内存训练。
44.根据权利要求43所述的电子设备,其特征在于,所述处理器,具体用于:
在确定当前环境温度与历史环境温度之间的差值超过温度波动阈值时,向所述内存控制器发送所述触发指令,所述历史环境温度为所述处理器前一次发送所述触发指令时的环境温度。
45.根据权利要求43或44所述的电子设备,其特征在于,所述处理器,具体用于:
在确定当前时间点与前一次发送所述触发指令的时间点之间的时间间隔超过时间阈值时,向所述内存控制器发送所述触发指令。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011063745.4A CN114356206A (zh) | 2020-09-30 | 2020-09-30 | 一种内存训练方法、内存控制器、处理器和电子设备 |
PCT/CN2021/116509 WO2022068524A1 (zh) | 2020-09-30 | 2021-09-03 | 一种内存训练方法、内存控制器、处理器和电子设备 |
EP21874185.8A EP4206893A4 (en) | 2020-09-30 | 2021-09-03 | MEMORY TRAINING METHOD, MEMORY CONTROLLER, PROCESSOR AND ELECTRONIC DEVICE |
JP2023519763A JP2023543479A (ja) | 2020-09-30 | 2021-09-03 | メモリ訓練方法、メモリコントローラ、プロセッサおよび電子デバイス |
KR1020237014261A KR20230073326A (ko) | 2020-09-30 | 2021-09-03 | 메모리 트레이닝 방법, 메모리 제어기, 프로세서 및 전자 장치 |
US18/192,019 US20230244617A1 (en) | 2020-09-30 | 2023-03-29 | Memory training method, memory controller, processor, and electronic device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011063745.4A CN114356206A (zh) | 2020-09-30 | 2020-09-30 | 一种内存训练方法、内存控制器、处理器和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114356206A true CN114356206A (zh) | 2022-04-15 |
Family
ID=80951144
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011063745.4A Pending CN114356206A (zh) | 2020-09-30 | 2020-09-30 | 一种内存训练方法、内存控制器、处理器和电子设备 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20230244617A1 (zh) |
EP (1) | EP4206893A4 (zh) |
JP (1) | JP2023543479A (zh) |
KR (1) | KR20230073326A (zh) |
CN (1) | CN114356206A (zh) |
WO (1) | WO2022068524A1 (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108646984A (zh) * | 2018-05-16 | 2018-10-12 | 华为技术有限公司 | 一种dqs位置调整方法和装置 |
CN108899057A (zh) * | 2018-06-12 | 2018-11-27 | 豪威科技(上海)有限公司 | 读dqs信号门选通训练方法、装置以及数据传输系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7036053B2 (en) * | 2002-12-19 | 2006-04-25 | Intel Corporation | Two dimensional data eye centering for source synchronous data transfers |
US7698589B2 (en) * | 2006-03-21 | 2010-04-13 | Mediatek Inc. | Memory controller and device with data strobe calibration |
CN108874686B (zh) * | 2017-05-08 | 2021-08-03 | 龙芯中科技术股份有限公司 | 内存参数调节方法、装置及设备 |
CN107248416A (zh) * | 2017-06-07 | 2017-10-13 | 晶晨半导体(上海)股份有限公司 | 一种用于双速率数据存储系统的数据传输的时序控制方法 |
KR102368966B1 (ko) * | 2017-10-23 | 2022-03-03 | 삼성전자주식회사 | 불휘발성 메모리 장치, 불휘발성 메모리 장치들을 포함하는 스토리지 장치, 그리고 제어기와 불휘발성 메모리 장치들 사이에서 데이터 입력 및 출력 라인들을 트레이닝하는 방법 |
US10991403B2 (en) * | 2019-02-15 | 2021-04-27 | Apple Inc. | Memory calibration with end point replay |
-
2020
- 2020-09-30 CN CN202011063745.4A patent/CN114356206A/zh active Pending
-
2021
- 2021-09-03 WO PCT/CN2021/116509 patent/WO2022068524A1/zh unknown
- 2021-09-03 JP JP2023519763A patent/JP2023543479A/ja active Pending
- 2021-09-03 KR KR1020237014261A patent/KR20230073326A/ko active Search and Examination
- 2021-09-03 EP EP21874185.8A patent/EP4206893A4/en active Pending
-
2023
- 2023-03-29 US US18/192,019 patent/US20230244617A1/en active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108646984A (zh) * | 2018-05-16 | 2018-10-12 | 华为技术有限公司 | 一种dqs位置调整方法和装置 |
CN108899057A (zh) * | 2018-06-12 | 2018-11-27 | 豪威科技(上海)有限公司 | 读dqs信号门选通训练方法、装置以及数据传输系统 |
Also Published As
Publication number | Publication date |
---|---|
KR20230073326A (ko) | 2023-05-25 |
EP4206893A4 (en) | 2024-03-06 |
EP4206893A1 (en) | 2023-07-05 |
JP2023543479A (ja) | 2023-10-16 |
WO2022068524A1 (zh) | 2022-04-07 |
US20230244617A1 (en) | 2023-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105723351B (zh) | 对存储器控制器进行读训练 | |
KR101733483B1 (ko) | 메모리 시스템 내에서 쓰기 레벨링을 위한 시작 값들을 조정하는 방법 | |
KR101093000B1 (ko) | 반도체 메모리 장치 및 그 동작 방법 | |
JP5341503B2 (ja) | メモリデバイス、ホストデバイスおよびサンプリングクロックの調整方法 | |
US6480946B1 (en) | Memory system for synchronized and high speed data transfer | |
US7827431B2 (en) | Memory card having memory device and host apparatus accessing memory card | |
US11550653B2 (en) | Memory system, operation method of the same, and memory controller | |
CN107844445B (zh) | 用于非源同步系统的调谐电路系统和操作 | |
JP2002182974A (ja) | データ・ストローブ・プロトコルを使用した主記憶装置 | |
US10270445B2 (en) | Half-frequency command path | |
US8737161B1 (en) | Write-leveling system and method | |
US20090249110A1 (en) | Memory controller device, control method for memory controller device and data reception device | |
US7411862B2 (en) | Control signal training | |
US10664173B2 (en) | Write level initialization synchronization | |
CN114356206A (zh) | 一种内存训练方法、内存控制器、处理器和电子设备 | |
KR102173881B1 (ko) | 스큐 제거 동작을 수행하는 반도체 장치 | |
US9300282B2 (en) | Semiconductor device and semiconductor system including the same | |
CN114627918A (zh) | 使用写入dll电路系统对存储器装置进行写入调平 | |
CN109243506B (zh) | 半导体器件 | |
KR100399895B1 (ko) | 고속의 데이터 라이트를 위한 디디알 메모리 | |
US20110156784A1 (en) | Clock delay correcting device and semiconductor device having the same | |
US20170323672A1 (en) | Memory controller with phase adjusted clock for performing memory operations | |
CN115240727A (zh) | 与执行终端操作相关的电子设备和电子系统 | |
KR20240019004A (ko) | 랭크간 타이밍을 조정하는 메모리 모듈, 메모리 시스템, 그리고 그것의 트레이닝 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |