一种数据处理方法、内存控制器、处理器及电子设备
文献发布时间:2023-06-19 10:32:14
技术领域
本申请属于计算机技术领域,具体涉及一种数据处理方法、内存控制器、处理器及电子设备。
背景技术
双倍数据速率(Double Data Rate,DDR)存储器(如双倍数据速率动态随机存取存储器(Double Data Rate Dynamic Random Access Memory,DDRDRAM))是片上系统(System-on-a-Chip,SOC)中重要的数据存储模块。为了满足对内存速度、带宽和容量的需求,存储器历经数代的演进,从DDR1,DDR2,DDR3再到目前市场上主流的DDR4。随着人工智能(Artificial Intelligence,AI)深度学习以及5G的广泛应用,DDR4的速度和带宽已难以满足市场的需求。为了应对市场的需求,2020年7月电子工程设计发展联合协会(JointElectron Device Engineering Council,JEDEC)组织正式发布DDR5协议标准,其传输速度、带宽及容量相对于DDR4都得到了大幅度的提升。然而随着内存传输速度的加快和带宽的提升,对数据传输的完整性、可靠性和延时也提出了更高的要求。DDR5将突发长度(BurstLength)从DDR4的8提高到了16,同时也新增加了读循环冗余检验(Read CyclicRedundancy Check,RCRC)的新功能。
从数据互联结构(Data Fabric)向内存控制器(Memory Controller,MC)发起读请求,到MC返回动态随机存取存储器的数据会存在一定的延时,如果等数据都返回后再进行相关的预处理操作,需要花费一定的等待时间。如果内存控制器在发起读请求后到数据返回期间提前进行相关的预处理操作,然后等数据都返回的时候就可以马上对该数据进行后续处理,这样便可以缩短数据的延时,从而提高系统的传输效率。
由于DDR5中默认的Burst Length是16,但如果要使能Read CRC的功能,BurstLength会变为18。由于Burst Length不再是4的整数倍,会导致返回的有效读数据的相位(phase)不固定。内存控制器在发读使能时,无法确定多少个时钟周期后数据会返回,所以内存控制器的提前响应功能就无法使用,进而不能在发起读请求后到数据返回期间提前对数据做一些预处理,进而会降低数据的传输效率。
发明内容
鉴于此,本申请的目的在于提供一种数据处理方法、内存控制器、处理器及电子设备,以改善现有提前响应功能无法与读循环冗余检验功能同时使用的问题。
本申请的实施例是这样实现的:
第一方面,本申请实施例提供了一种数据处理方法,所述方法包括:内存控制器向存储器发送读命令以及向数据互联结构发送提前响应信号,并接收所述存储器响应所述读命令返回的原始读数据;所述内存控制器判断所述原始读数据的相位是否需要调整;在所述原始读数据的相位需要调整时,所述内存控制器对所述原始读数据的相位进行调整,使得每次从发送所述提前响应信号到接收到所述原始读数据中的第一数据所需的相位是固定的。
本申请实施例中,通过内存控制器对返回的原始读数据的相位判断,若原始读数据的相位需要调整,则对原始读数据的相位进行调整,使得每次从发送提前响应信号到接收到原始读数据中的第一数据所需的相位是固定的,从而解决提前响应功能无法与读循环冗余检验功能同时使用的问题,使得数据互联结构可以在有效读数据返回前提前进行相关的预处理操作,这样可以减少数据的延迟,从而提高数据的传输效率。
结合第一方面实施例的一种可能的实施方式,所述内存控制器判断所述原始读数据的相位是否需要调整,包括:所述内存控制器通过判断从发送所述提前响应信号到接收到所述原始读数据中的第一数据所需的时长是否小于预设阈值来判断所述原始读数据的相位是否需要调整;其中,若从发送所述提前响应信号到接收到所述原始读数据中的第一数据所需的时长小于所述预设阈值,则所述原始读数据的相位需要调整。本申请实施例中,通过判断从发送所述提前响应信号到接收到所述原始读数据中的第一数据所需的时长是否小于预设阈值来判断所述原始读数据的相位是否需要调整,从而可以通过计时的方式快速判断原始读数据的相位是否需要调整。
结合第一方面实施例的一种可能的实施方式,所述方法还包括:所述内存控制器向所述存储器发送偶相位读使能信号以及奇相位读使能信号,并接收所述存储器响应所述偶相位读使能信号返回的偶相位有效读数据信号,以及响应所述奇相位读使能信号返回的奇相位有效读数据信号;相应地,所述内存控制器判断所述原始读数据的相位是否需要调整,包括:通过比较所述偶相位有效读数据信号的有效电平与所述奇相位有效读数据信号的有效电平是否在同一时刻来判断所述原始读数据的相位是否需要调整;其中,若所述偶相位有效读数据信号的有效电平与所述奇相位有效读数据信号的有效电平在同一时刻,则所述原始读数据的相位需要调整。本申请实施例中,通过比较所述偶相位有效读数据信号的有效电平与所述奇相位有效读数据信号的有效电平是否在同一时刻来判断所述原始读数据的相位是否需要调整,可以更高效地判断原始读数据的相位是否需要调整,此外,相比于通过计时的方式,还进一步丰富了方案的多样性。
结合第一方面实施例的一种可能的实施方式,对所述原始读数据的相位进行调整,包括:将所述偶相位有效读数据信号的有效电平对应的原始读数据赋值给所述奇相位有效读数据信号的有效电平对应的读数据,将所述奇相位有效读数据信号的有效电平对应的原始读数据延迟一个时钟单元后,再赋值给所述偶相位有效读数据信号的有效电平对应的读数据。本申请实施例中,通过将所述偶相位有效读数据信号的有效电平对应的原始读数据赋值给所述奇相位有效读数据信号的有效电平对应的读数据,将所述奇相位有效读数据信号的有效电平对应的原始读数据延迟一个时钟单元后,再赋值给所述偶相位有效读数据信号的有效电平对应的读数据,使得数据互联结构可以正确获取到与预处理对应的有效读数据,保证了提前响应的可行性及可靠性。
结合第一方面实施例的一种可能的实施方式,所述方法还包括:若所述原始读数据的相位不需要调整,所述内存控制器直接按照正常时序向所述数据互联结构返回所述原始读数据。本申请实施例中,若原始读数据的相位不需要调整,所述内存控制器直接按照正常时序向所述数据互联结构返回所述原始读数据,使得该方法也可以支持不使用读循环冗余检验,仅使用提前响应的功能。
第二方面,本申请实施例还提供了一种内存控制器,所述内存控制器分别与存储器和数据互联结构连接,,所述内存控制器包括:前端接口以及后端处理单元;前端接口,用于接收所述数据互联结构发送的读命令;后端处理单元,用于向所述存储器发送读命令以及通过所述前端接口向所述数据互联结构发送提前响应信号,并接收所述存储器响应所述读命令返回的原始读数据,以及判断所述原始读数据的相位是否需要调整,在所述原始读数据的相位需要调整时,还用于对所述原始读数据的相位进行调整,使得每次从发送所述提前响应信号到接收到所述原始读数据中的第一数据所需的相位是固定的。
结合第二方面实施例的一种可能的实施方式,所述后端处理单元,用于通过判断从发送所述提前响应信号到接收到所述原始读数据中的第一数据所需的时长是否小于预设阈值来判断所述原始读数据的相位是否需要调整;其中,若从发送所述提前响应信号到接收到所述原始读数据中的第一数据所需的时长小于所述预设阈值,则所述原始读数据的相位需要调整。
结合第二方面实施例的一种可能的实施方式,所述后端处理单元,还用于向所述存储器发送偶相位读使能信号以及奇相位读使能信号,并接收所述存储器响应所述偶相位读使能信号返回的偶相位有效读数据信号,以及响应所述奇相位读使能信号返回的奇相位有效读数据信号;相应地,所述后端处理单元,用于通过比较所述偶相位有效读数据信号的有效电平与所述奇相位有效读数据信号的有效电平是否在同一时刻来判断所述原始读数据的相位是否需要调整;其中,若所述偶相位有效读数据信号的有效电平与所述奇相位有效读数据信号的有效电平在同一时刻,则所述原始读数据的相位需要调整。
结合第二方面实施例的一种可能的实施方式,所述后端处理单元,用于将所述偶相位有效读数据信号的有效电平对应的原始读数据赋值给所述奇相位有效读数据信号的有效电平对应的读数据,将所述奇相位有效读数据信号的有效电平对应的原始读数据延迟一个时钟单元后,再赋值给所述偶相位有效读数据信号的有效电平对应的读数据。
结合第二方面实施例的一种可能的实施方式,若所述原始读数据的相位不需要调整,所述后端处理单元,还用于直接按照正常时序向所述数据互联结构返回所述原始读数据。
第三方面,本申请实施例还提供了一种处理器,所述处理器与存储器连接,所述处理器包括:数据互联结构和如上述第二方面实施例和/或结合第二方面实施例的任一种可能的实施方式提供的内存控制器,所述内存控制器与所述数据互联结构连接。
第四方面,本申请实施例还提供了一种电子设备,包括:本体和上述第三方面实施例提供的处理器。
本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例而了解。本申请的目的和其他优点可通过在所写的说明书以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本申请的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本申请的主旨。
图1示出了本申请实施例提供的一种集成芯片的结构示意图。
图2示出了本申请实施例提供的一种内存控制器的结构示意图。
图3示出了本申请实施例提供的一种对原始读数据的相位是否需要调整的原理及过程进行说明的原理示意图。
图4示出了本申请实施例提供的一种数据处理方法的流程示意图。
图5示出了本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中诸如“第一”、“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
再者,本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
内存控制器的提前响应(early response)特性可以让数据互联结构(DataFabric)在有效读数据返回前提前进行相关的预处理操作,这样可以减少数据的延迟,从而提高数据的传输效率。由于DDR5新增加的读循环冗余检验(Read CRC)特性,使得突发长度(Burst Length,为数据读写时的突发长度,突发长度*数据位宽就是每次读写操作完成的数据传输量)不再是4的整数倍,会导致返回的有效读数据的相位(phase)不固定,无法保证预处理后的信息和收到的读数据时序对齐,从而使得提前响应功能与读循环冗余检验功能不能同时使用。鉴于此,本申请实施例提供了一种数据处理方法,通过在内存控制器的输入端对返回的原始读数据先进行phase判断,若原始读数据的相位需要调整,则对原始读数据的相位进行调整,使得每次从发送提前响应信号到接收到原始读数据中的第一数据所需的相位是固定的,从而解决DDR5的提前响应功能无法与读循环冗余检验功能同时使用的问题。
为了便于理解,下面将结合图1所示的集成芯片(如片上系统(System-on-a-Chip,SOC))对该过程进行说明。该集成芯片包括处理器和存储器。处理器与存储器连接。其中,需要说明的是,本申请实施例提供的数据处理方法的适用场景并不限于图1所述的集成芯片。也即一种实施方式下,处理器和存储器可以不用集成在同一个芯片内,而是两个相互独立的芯片。
其中,处理器包括:内核(如CPU)、数据互联结构(Data Fabric)、内存控制器(Memory Controller,MC)、双倍数据速率端口物理层(Double Data Rate Port PhysicalLayer,DDR PHY)。内核为处理器的控制核心,用于向数据互联结构发送读写命令。数据互联结构,连接内核和各个接口模块,起到桥接器的作用。内存控制器,根据DRAM协议完成对数据的读写操作。
处理器可以是一种集成芯片,具有信号的处理能力。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器,用于存储数据,其可以是,但不限于,随机存取存储器(Random AccessMemory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(ProgrammableRead-Only Memory,PROM),可擦除只读存储器(Erasable Programmable Read-OnlyMemory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-OnlyMemory,EEPROM)等。
为了便于更好地理解,下面简单介绍一下内存数据的读写流程:数据互联结构(Data Fabric)通过SDP(Scalable Data Port)接口向内存控制器发送读写命令,MC接收到该读写命令后,按照双倍速率协议转换成存储器(如DRAM)相应的读写命令,然后通过DFI接口(为内存控制器标准接口,用于连接MC和PHY)把命令传给双倍数据速率端口物理层(Double Data Rate Port Physical Layer,DDR PHY),物理层的DDR PHY通过DRAM接口将命令传输给DRAM颗粒,完成数据的读写功能。Data Fabric会通过MC将大量的数据写入存储器中,当有需求时再从存储器中读取相应的数据。其中,需要说明的是,图1中示出的DRAM仅是众多存储器中的一种,因此不能将图1示出的DRAM存储器理解成是对本申请存储器的限制。
内存控制器,用于通过DDR PHY向存储器发送读命令,并在间隔一定时钟延时(即Tearly_wait,表示发送读命令到发送提前响应信号之间的时间延时)后向数据互联结构发送提前响应信号(early_response_vld),数据互联结构可以利用先返回的early_response_vld和后续返回的读有效数据之间的时间间隙(即Tearly_rtn,表示发送提前响应信号到接收到原始读数据中的第一数据(Dat0)的时钟延时),提前进行相关的预处理操作,例如,把之前存放在队列中的与这个读相关的信息如地址,识别码(ID),标签(Tag)先取出来,等返回有效读数据时可以马上把这些预处理得到的信息和读数据内容组成一个完整的传输包返回给上一级,这样可以提高数据的传输效率。
内存控制器,用于接收存储器响应读命令返回的原始读数据,判断原始读数据的相位是否需要调整,在原始读数据的相位需要调整时,内存控制器还用于对原始读数据的相位进行调整,使得从每次发送提前响应信号到接收到原始读数据中的第一数据所需的相位是固定的(也即每次发送提前响应信号到接收到原始读数据中的第一数据所需的相位都是相同的,如均为相同的预设阈值),保证预处理后的信息和收到的读数据时序对齐,之后向数据互联结构返回相位调整后原始读数据;在原始读数据的相位不需要调整时,内存控制器直接按照正常时序向数据互联结构返回原始读数据。也即直接按照p0-p1-p0-p1或者p1-p0-p1-p0这样的顺序采集数据并返回。其中p0为phase0的简写,p1为phase1的简写。phase0为偶相位,phase1为奇相位。
作为一种实施方式,可以通过判断从发送提前响应信号到接收到原始读数据中的第一数据所需的时长是否小于预设阈值(例如为N)来判断原始读数据的相位是否需要调整。其中,若从发送提前响应信号到接收到原始读数据中的第一数据所需的时长(如为N-1)小于预设阈值(N),则原始读数据的相位需要调整;若从发送提前响应信号到接收到原始读数据中的第一数据所需的时长等于预设阈值,则原始读数据的相位不需要调整。例如,MC在发送读命令后,启动内部计数器开始计时,当接收到原始读数据中的第一数据时,通过判断计数器所统计的时长是否小于预设阈值(即N)判断原始读数据的相位是否需要调整。其中,N为正整数,其通常的取值范围在4~12之间。
此外,内存控制器通过DDR PHY向存储器发送读命令后,间隔一定的时间延时(即Trddata_en,表示发送读命令到发送读使能信号的时钟延时)后,还会向存储器发送偶相位读使能信号(dfi_rddata_en_p0)以及奇相位读使能信号(dfi_rddata_en_p1),并接收存储器响应偶相位读使能信号返回的偶相位有效读数据信号(dfi_rddata_valid_p0),以及响应奇相位读使能信号返回的奇相位有效读数据信号(dfi_rddata_valid_p1)。作为又一种实施方式,通过比较偶相位有效读数据信号的有效电平与奇相位有效读数据信号的有效电平是否在同一时刻来判断原始读数据的相位是否需要调整;其中,若偶相位有效读数据信号的有效电平与奇相位有效读数据信号的有效电平在同一时刻,则原始读数据的相位需要调整;若偶相位有效读数据信号的有效电平晚于奇相位有效读数据信号的有效电平,则原始读数据的相位不需要调整。
其中,需要说明的是,除了通过判断计数器所统计的时长是否小于预设阈值(即N)来判断原始读数据的相位是否需要调整外,通过比较偶相位有效读数据信号的有效电平与奇相位有效读数据信号的有效电平是否在同一时刻也可以用于判断从发送提前响应信号到接收到原始读数据中的第一数据所需的时长是否小于预设阈值。若偶相位有效读数据信号的有效电平与奇相位有效读数据信号的有效电平在同一时刻,则从发送提前响应信号到接收到原始读数据中的第一数据所需的时长小于预设阈值;若偶相位有效读数据信号的有效电平晚于奇相位有效读数据信号的有效电平,则从发送提前响应信号到接收到原始读数据中的第一数据所需的时长等于预设阈值。
由于在该集成芯片中,存储器的时钟(Clock)的频率是DFI Clock的频率的两倍,所以使得MC和DDR PHY互连的DFI接口的命令和数据通路有两个相位(偶相位(phase0)和奇相位(phase1)),这样才能匹配DRAM接口的带宽。如果原始读数据中的第一数据(Dat0)是从延时长的那个相位(phase1)也即奇相位先返回的,则表征原始读数据不需要调整,保持数据和时序不变,直接返回给数据互联结构;如果原始读数据中的第一数据(Dat0)是从延时长的那个相位(phase0)也即偶相位先返回的,则需要对原始读数据的相位进行调整,例如,将偶相位有效读数据信号的有效电平对应的原始读数据赋值给奇相位有效读数据信号的有效电平对应的读数据,将奇相位有效读数据信号的有效电平对应的原始读数据延迟一个时钟单元后,再赋值给偶相位有效读数据信号的有效电平对应的读数据,使得交替延时后的数据的时序与第一种情况保持一致。这样就能保证每次从发送提前响应信号到接收到原始读数据中的第一数据所需的相位是固定的,以保证预处理后的信息和收到的读数据时序对齐。
其中,需要说明的是,无论是通过判断从发送提前响应信号到接收到原始读数据中的第一数据所需的时长是否小于预设阈值(例如为N)来判断原始读数据的相位是否需要调整,还是通过比较偶相位有效读数据信号的有效电平与奇相位有效读数据信号的有效电平是否在同一时刻来判断原始读数据的相位是否需要调整,在对原始数据的相位进行调整时,均可以是:将偶相位有效读数据信号的有效电平对应的原始读数据赋值给奇相位有效读数据信号的有效电平对应的读数据,将奇相位有效读数据信号的有效电平对应的原始读数据延迟一个时钟单元后,再赋值给偶相位有效读数据信号的有效电平对应的读数据。
其中,需要说明的是,若启用了Read CRC功能,其存储器的突发长度为18,不再是4的整数倍,此时返回的原始读数据的相位需要调整;若尚未启用Read CRC功能,其存储器的突发长度为16,说明此时原始读数据的相位不需要调整。
下面将结合图2对内存控制器的结构进行说明,该内存控制器包括:前端接口(Front End Interface,FEI)和后端处理单元(Back End Unit,BEU),前端接口用于与数据互联结构连接,后端处理单元,用于与存储器连接。前端接口负责处理和上层Data Fabric之间的命令和数据交互,例如,用于接收数据互联结构发送的读命令。后端处理单元负责将前端接口发送的读写命令经DDR PHY发送给存储器,以及负责处理与DDR PHY之间的命令和数据,例如,后端处理单元用于向存储器发送读命令以及通过前端接口向数据互联结构发送提前响应信号,并接收存储器响应读命令返回的原始读数据;以及还用于判断原始读数据的相位是否需要调整,在原始读数据的相位需要调整时,对原始读数据的相位进行调整,并使得每次从发送提前响应信号到接收到原始读数据中的第一数据所需的相位是固定的,以及将时序调整后的原始读数据经前端接口返回给数据互联结构。
可选地,所述后端处理单元,用于通过判断从发送所述提前响应信号到接收到所述原始读数据中的第一数据所需的时长是否小于预设阈值来判断所述原始读数据的相位是否需要调整;其中,若从发送所述提前响应信号到接收到所述原始读数据中的第一数据所需的时长小于所述预设阈值,则所述原始读数据的相位需要调整。
可选地,所述后端处理单元,还用于向所述存储器发送偶相位读使能信号以及奇相位读使能信号,并接收所述存储器响应所述偶相位读使能信号返回的偶相位有效读数据信号,以及响应所述奇相位读使能信号返回的奇相位有效读数据信号;相应地,所述后端处理单元,用于通过比较所述偶相位有效读数据信号的有效电平与所述奇相位有效读数据信号的有效电平是否在同一时刻来判断所述原始读数据的相位是否需要调整;其中,若所述偶相位有效读数据信号的有效电平与所述奇相位有效读数据信号的有效电平在同一时刻,则所述原始读数据的相位需要调整。
可选地,所述后端处理单元,用于将所述偶相位有效读数据信号的有效电平对应的原始读数据赋值给所述奇相位有效读数据信号的有效电平对应的读数据,将所述奇相位有效读数据信号的有效电平对应的原始读数据延迟一个时钟单元后,再赋值给所述偶相位有效读数据信号的有效电平对应的读数据。
若所述原始读数据的相位不需要调整,所述后端处理单元,还用于直接按照正常时序向所述数据互联结构返回所述原始读数据。
其中,该内存控制器还包括:内存命令队列(DRAM Command Queue,DCQ)和仲裁单元(Arbiter)。内存命令队列负责将上层Data Fabric经前端接口传输的读写命令中的地址解析成DRAM对应的地址,同时将收到的命令存储在相关队列中,以及将仲裁单元发送的数据发送给前端接口。仲裁单元负责对DCQ中的命令进行仲裁,按照优先级等级,先选择优先级高的命令发给DRAM,使内存控制器对DRAM的访问效率达到最优。此外,仲裁单元还用于将后端处理单元返回的数据发送给内存命令队列,内存命令队列再将该数据发送给前端接口,前端接口将其发送给数据互联结构。
其中,后端处理单元判断原始读数据的相位是否需要调整的具体过程,以及如何调整的具体过程请参阅上述的记载,在次不再介绍。其中,需要说明的是,一种实施方式下,本申请实施例提供的内存控制器可以是一个单独的产品,并没有集成在处理器中。
下面将结合图3进一步对原始读数据的相位是否需要调整的原理及过程进行说明。先对其中涉及到的几个时序参数(时序参数指的是从起点A到终点B之间的时钟延时单元,比如A到B需要延时3个时钟单元,则它们之间的时序参数T=3)进行介绍:
Tearly_wait(图3中①到②之间的延时)代表MC发送read命令到发送提前响应信号(early_response_vld)的时钟延时;
Tearly_rtn(图3中②到④,或②到⑤,或②到⑥之间的延时)代表MC发送提前响应信号(early_response_vld)到接收到原始读数据中的第一数据(Dat0)的时钟延时;
Trddata_en(图3中①到③之间的延时)代表MC发送read命令到发送读数据使能信号(dfi_rddata_en)的时钟延时;
Tphy_rdlat(图3中③到④,或③到⑤之间的延时)代表MC发送读数据使能信号(dfi_rddata_en)到接收到原始读数据中的第一数据(Dat0)的时钟延时。
如图3所示,MC经DFI接口从phase0(偶相位)向存储器发出读命令(如read1),经Trddata_en的固定时钟周期后,MC向存储器读使能信号(dfi_rddata_en),然后等Tphy_rdlat时钟周期后DDR PHY返回有效读数据。为了支持提前响应的特性,MC需要在read命令发完后的Tearly_wait时钟周期向数据互联结构发送提前响应信号(early_response_vld),让其提前进行相关的预处理操作,但MC必须在固定时钟周期后返回有效的读数据,以保证预处理后的信息和收到的读数据时序对齐,以保证读数据包的完整。但由于DDR5新增加了Read CRC特性,Burst Length不再是4的整数倍,使得DDR PHY处理的复杂度增加,其返回的读数据等待参数Tphy_rdlat(MC发送read命令到发送读数据使能信号(dfi_rddata_en)的时钟延时)有可能是M,也有可能是M-1,这就导致了参数Tearly_rtn(MC发送提前响应信号(early_response_vld)到接收到原始读数据中的第一数据(Dat0)的时钟延时)变为不固定,有可能是N,也有可能是N-1,如图3中read2所示。这时就需要MC对DDR PHY返回的有效信号和读数据在端口处进行phase交换,调整时序,使其时钟间隔周期从N-1变为N,这样使得每次从发送提前响应信号到接收到原始有效读数据中的第一数据的Tearly_rtn参数值是固定的,满足其特性要求。其中,N和M为正整数,例如,M取值范围可以是8~30,N的取值范围可以是4~12。
下面结合图3分别对原始读数据的相位进行调整和不进行调整两种情况进行说明。内存控制器在接收存储器响应读命令返回的原始读数据后,判断原始读数据的相位是否需要调整;若Tearly_rtn=N,也即从发送提前响应信号到接收到述原始读数据中的第一数据所需的时长等于N,或者,若偶相位有效读数据信号的有效电平晚于奇相位有效读数据信号的有效电平,则不需要调整,此为返回1的情况。若Tearly_rtn=N-1,也即从发送提前响应信号到接收到述原始读数据中的第一数据所需的时长小于预设阈值N,或者,若偶相位有效读数据信号的有效电平与奇相位有效读数据信号的有效电平在同一时刻,则需要调整,此为返回2的情况。
其中,dfi_rddata_valid_p0、dfi_rddata_valid_p1与Tearly_rtn以及Tphy_rdlat三种之间存在着关联关系;若dfi_rddata_valid_p0的有效电平晚于dfi_rddata_valid_p1的有效电平,则Tearly_rtn=N,Tphy_rdlat=M;若dfi_rddata_valid_p0的有效电平与dfi_rddata_valid_p1的有效电平在同一时刻,则Tearly_rtn=N-1,Tphy_rdlat=M-1;反之亦然,如Tearly_rtn=N,Tphy_rdlat=M,则dfi_rddata_valid_p0的有效电平晚于dfi_rddata_valid_p1的有效电平;若Tearly_rtn=N-1,Tphy_rdlat=M-1,则dfi_rddata_valid_p0的有效电平与dfi_rddata_valid_p1的有效电平在同一时刻。
其中,在进行原始数据调整时,把phase0的原始数据dfi_rddata_vld_p0所对应的Dat0和Dat2赋值给dfi_rddata_vld_p1;把phase1的原始数据dfi_rddata_vld_p1所对应的Dat1和Dat3先延时一个时钟单元,然后再赋值给dfi_rddata_vld_p0;这样使得返回2的情况和返回1的情况一致。其中,内存控制器在向数据互联结构发送返回读数据时,是按照p0-p1-p0-p1或者p1-p0-p1-p0这样的顺序采集信息。结合图3也即向数据互联结构发送的数据的顺序为Dat0、Dat1、Dat2、Dat3。此外,需要说明的是,对应返回2未调整之前的情况,若是按照p0-p1-p0-p1的顺序采集信息,仅能采集到Dat0、Dat3,若是按照p1-p0-p1-p0的顺序采集信息,仅能采集到Dat1、Dat2,并不能得到完整的数据,也即Dat0、Dat1、Dat2、Dat3。因此若不对原始读数据的相位进行调整,将不能得到完整的数据。
其中,需要说明的是,图3仅示出了从phase0发送读命令的情况,其也可以从phase1发送读命令,从phase1发送读命令的原理与从phase0发送读命令的情况类似,在此不再赘述,因此不能将从phase0发送读命令的情况理解成是对本申请的限制。
下面将结合图4,对本申请实施例提供的数据处理方法进行说明。该数据处理方法包括以下步骤:
步骤S101:内存控制器向存储器发送读命令以及向数据互联结构发送提前响应信号,并接收所述存储器响应所述读命令返回的原始读数据。
步骤S102:所述内存控制器判断所述原始读数据的相位是否需要调整。
内存控制器判断所述原始读数据的相位是否需要调整,若需要调整则执行步骤S103,反之则执行步骤S104。
一种实施方式下,判断所述原始读数据的相位是否需要调整的过程可以是:通过判断从发送所述提前响应信号到接收到所述原始读数据中的第一数据所需的时长是否小于预设阈值来判断所述原始读数据的相位是否需要调整;其中,若从发送所述提前响应信号到接收到所述原始读数据中的第一数据所需的时长小于所述预设阈值,则所述原始读数据的相位需要调整;若从发送所述提前响应信号到接收到所述原始读数据中的第一数据所需的时长等于所述预设阈值,则所述原始读数据的相位不需要调整。
此外,所述方法还包括:所述内存控制器向所述存储器发送偶相位读使能信号以及奇相位读使能信号,并接收所述存储器响应所述偶相位读使能信号返回的偶相位有效读数据信号,以及响应所述奇相位读使能信号返回的奇相位有效读数据信号。
又一种实施方式下,判断所述原始读数据的相位是否需要调整的过程可以是:通过比较所述偶相位有效读数据信号的有效电平与所述奇相位有效读数据信号的有效电平是否在同一时刻来判断所述原始读数据的相位是否需要调整;其中,若所述偶相位有效读数据信号的有效电平与所述奇相位有效读数据信号的有效电平在同一时刻,则所述原始读数据的相位需要调整;若所述偶相位有效读数据信号的有效电平晚于所述奇相位有效读数据信号的有效电平,则所述原始读数据的相位不需要调整。
步骤S103:在所述原始读数据的相位需要调整时,所述内存控制器对所述原始读数据的相位进行调整,使得每次从发送所述提前响应信号到接收到所述原始读数据中的第一数据所需的相位是固定的。
其中,可选地,在进行调整时,可以是将所述偶相位有效读数据信号的有效电平对应的原始读数据赋值给所述奇相位有效读数据信号的有效电平对应的读数据,将所述奇相位有效读数据信号的有效电平对应的原始读数据延迟一个时钟单元后,再赋值给所述偶相位有效读数据信号的有效电平对应的读数据。
其中,需要说明的是,无论是通过判断从发送提前响应信号到接收到原始读数据中的第一数据所需的时长是否小于预设阈值(例如为N)来判断原始读数据的相位是否需要调整,还是通过比较偶相位有效读数据信号的有效电平与奇相位有效读数据信号的有效电平是否在同一时刻来判断原始读数据的相位是否需要调整,在对原始数据的相位进行调整时的过程是一样的。
步骤S104:所述内存控制器直接按照正常时序向所述数据互联结构返回所述原始读数据。
本申请实施例所提供的数据处理方法,其实现原理及产生的技术效果和集成芯片实施例相同,为简要描述,方法实施例部分未提及之处,可参考前述集成芯片实施例中相应内容。
如图5所示,图5示出了本申请实施例提供的一种电子设备的结构框图。所述电子设备包括:本体和上述的处理器。其中,本体可以包括但不限于收发器、通讯总线、存储器等。
所述收发器、所述存储器、处理器各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。其中,收发器用于收发数据。存储器用于存储计算机程序,该计算机程序包括至少一个可以软件或固件(firmware)的形式存储于所述存储器中或固化在所述电子设备的操作系统(operating system,OS)中的软件功能模块。
处理器用于执行存储器中存储的可执行模块,例如执行数据处理方法所包括的软件功能模块或计算机程序。例如,处理器中的内存控制器,用于向存储器发送读命令以及向数据互联结构发送提前响应信号,并接收所述存储器响应所述读命令返回的原始读数据;以及判断所述原始读数据的相位是否需要调整;在所述原始读数据的相位需要调整时,所述内存控制器还用于对所述原始读数据的相位进行调整,使得每次从发送所述提前响应信号到接收到所述原始读数据中的第一数据所需的相位是固定的。
其中,上述的电子设备,包括但不限于计算机、服务器等。
本申请实施例还提供了一种非易失性计算机可读取存储介质(以下简称存储介质),该存储介质上存储有计算机程序,该计算机程序被计算机如上述的电子设备运行时,执行上述所示的数据处理。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,笔记本电脑,服务器,或者电子设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
- 一种数据处理方法、内存控制器、处理器及电子设备
- 一种数据处理装置、方法、内存控制器、处理器、电子设备