CN115586974B - 内存控制器、系统、装置及电子设备 - Google Patents

内存控制器、系统、装置及电子设备 Download PDF

Info

Publication number
CN115586974B
CN115586974B CN202211587656.9A CN202211587656A CN115586974B CN 115586974 B CN115586974 B CN 115586974B CN 202211587656 A CN202211587656 A CN 202211587656A CN 115586974 B CN115586974 B CN 115586974B
Authority
CN
China
Prior art keywords
data
read
memory
module
buffer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202211587656.9A
Other languages
English (en)
Other versions
CN115586974A (zh
Inventor
王克行
周锋
冯辉宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xiangdixian Computing Technology Chongqing Co ltd
Original Assignee
Beijing Xiangdixian Computing Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Xiangdixian Computing Technology Co Ltd filed Critical Beijing Xiangdixian Computing Technology Co Ltd
Priority to CN202211587656.9A priority Critical patent/CN115586974B/zh
Publication of CN115586974A publication Critical patent/CN115586974A/zh
Application granted granted Critical
Publication of CN115586974B publication Critical patent/CN115586974B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本公开提供一种内存控制器、系统、装置及电子设备。该内存控制器包括先进先出的第一缓存模块和命令调度模块,通过命令调度模块监测上游设备的读状态和第一缓存模块的相关参数,并在上游设备的读状态和/或第一缓存模块的相关参数符合预设条件时,根据接收到的读请求向待访问内存发出对应的读命令,以触发待访问内存输出一组数据并存入第一缓存模块中;第一缓存模块的相关参数包括未完成的读命令的个数和第一缓存模块的剩余空间的大小。这种内存控制器,可以有效利用第一缓存模块(读缓存模块)读写两侧的延时差,提前进行读命令的调度,以提升内存的访问效率,还可以降低第一缓存模块的存储容量(深度),减少内存控制器的面积开销。

Description

内存控制器、系统、装置及电子设备
技术领域
本公开涉及内存技术领域,尤其涉及一种内存控制器、系统、装置及电子设备。
背景技术
随着科学技术的发展,片上系统(System on a Chip,SOC)芯片对于内存的存取速度有着更高的要求。其中,图形双倍速率同步动态随机存储器(Graphics Double DataRate Synchronous Dynamic Random Access Memory,GDDR SDRAM)是一种可实现更高的数据带宽的内存新设计,数据吞吐速率大幅提高。目前GDDR被广泛的应用于图形处理器(Graphics Processing Unit,GPU)、人工智能(Artificial Intelligence,AI)、增强现实(Augmented Reality,AR)/虚拟现实(Virtual Reality,VR)设备中。
为了实现对GDDR的访问进行准确的控制和访问效率的提升,往往需要GDDR内存控制器来对发往GDDR颗粒的指令进行控制,并对写入GDDR的数据和从GDDR中读出的数据分别进行缓存。特别是对于针对GDDR的读操作,要避免从GDDR中读出的数据在读缓存模块中溢出,常规方式是对读缓存模块的剩余空间进行监控,判断读缓存模块是否还有能力存储数据,由此决定是否发送读命令。但是,这样发送读命令的时机并不是最优的,造成了较低的读访问效率以及读缓存模块的面积浪费。
发明内容
本公开的目的是提供一种内存控制器、系统、装置及电子设备,解决了现有技术中内存读访问效率低以及读缓存模块的面积浪费的技术问题。
根据本公开的一个方面,提供一种内存控制器,连接于上游设备与待访问内存之间,包括先进先出的第一缓存模块和命令调度模块;
命令调度模块,被配置为监测上游设备的读状态和第一缓存模块的相关参数,并在上游设备的读状态和/或第一缓存模块的相关参数符合预设条件时,根据接收到的读请求向待访问内存发出对应的读命令,以触发待访问内存输出一组数据并存入第一缓存模块中;
其中,第一缓存模块的相关参数包括未完成的读命令的个数和第一缓存模块的剩余空间的大小。
在一些实施例中,上述内存控制器中,每个读命令触发待访问内存输出一组大小为R1的数据并存入第一缓存模块中;
预设条件包括以下至少一种:
上游设备的读状态为发出读就绪信号;
第一缓存模块中剩余空间的大小除以R1得到的商,与未完成的读命令的个数的差值大于等于1。
在一些实施例中,未完成的读命令为命令调度模块已经发出但对应的数据还未存入第一缓存模块中的读命令。
在一些实施例中,命令调度模块内设置有计数器,以指示未完成的读命令的个数;
其中,计数器被配置为,当命令调度模块向待访问内存发出一个读命令时,计数器的计数值加1,当有读命令触发待访问内存输出一组数据存入第一缓存模块中时,计数器的计数值减1。
在一些实施例中,第一缓存模块包括第一异步FIFO,被配置为响应于接收到上游设备发出的读就绪信号且第一异步FIFO中当前最先存入的一组数据已完成跨时钟域处理,将该组数据输出至上游设备。
在一些实施例中,第一异步FIFO进行跨时钟域处理的最短时长为n个时钟周期;
第一异步FIFO的深度至少为2n。
在一些实施例中,第一缓存模块还包括缓存单元,被配置为对待访问内存输出的数据进行缓存,并在第一异步FIFO为非满状态时,将缓存单元中当前最先存入的一组数据输出至第一异步FIFO。
在一些实施例中,从命令调度模块向待访问内存发出对应的读命令开始,至该读命令对应的数据存入第一缓存模块中所需的最短时长为第一延时;
第一异步FIFO开始输出一组数据,至缓存单元输出对应的另一组数据所需的最短时长为第二延时;其中,从第一异步FIFO输出的该组数据输出之前在第一异步FIFO中的存储位置与缓存单元输出的对应的另一组数据在第一异步FIFO中的存入位置相同;第一延时大于第二延时;
缓存单元连续输出两组数据的最短时间间隔为第三延时;
缓存单元的容量CBuffer至少为:CBuffer=(T1-T2)/T3 ×R2,其中,T1、T2和T3分别为第一延时、第二延时和第三延时,R2为缓存单元输出的每一组数据的大小。
在一些实施例中,第二延时包括:第一异步FIFO输出一组数据所需的最短时长,第一异步FIFO进行跨时钟域处理所需的最短时长,以及缓存单元输出一组数据所需的最短时长。
在一些实施例中,内存控制器通过AXI接口与上游设备连接;
从AXI接口接收到读就绪信号开始,至该读就绪信号对应的数据存入第一缓存模块中所需的最短时长为第一延时;
从AXI接口接收到读就绪信号开始,至缓存单元输出与该读就绪信号对应的一组数据所需的最短时长为第二延时;其中,第一延时大于第二延时;
缓存单元连续输出两组数据的最短时间间隔为第三延时;
缓存单元的容量CBuffer至少为:CBuffer=(T1-T2)/T3 ×R2,其中,T1、T2和T3分别为第一延时、第二延时和第三延时,R2为缓存单元输出的每一组数据的大小。
在一些实施例中,第二延时包括:读就绪信号从AXI接口传输至第一异步FIFO所需的最短时长,该读就绪信号触发第一异步FIFO输出一组数据所需的最短时长,第一异步FIFO进行跨时钟域处理所需的最短时长,以及缓存单元输出一组数据所需的最短时长。
在一些实施例中,命令调度模块被配置为监测第一缓存模块的相关参数,包括:
命令调度模块被配置为监测未完成的读命令的个数和缓存单元中剩余空间的大小。
在一些实施例中,还包括:
先进先出的第二缓存模块,被配置为接收上游设备发出的数据并进行缓存;
其中,命令调度模块,还被配置为根据接收到的写请求,从第二缓存模块中读取一组数据并发送至待访问内存。
在一些实施例中,还包括:
先进先出的第三缓存模块,被配置为接收上游设备发出的写请求和读请求并进行缓存,以及将缓存的写请求和读请求按照预设时序发送至命令调度模块。
在一些实施例中,还包括:先进先出的第四缓存模块;
命令调度模块,还被配置为接收待访问内存发出的写响应信息,并将接收到的写响应信息发送至第四缓存模块;其中,写响应信息为待访问内存在接收到命令调度模块发出的数据并将该数据写入待访问内存后反馈的;
第四缓存模块,被配置为接收命令调度模块发出的写响应信息并进行缓存,以及将缓存的写响应信息按照预设时序发送至上游设备。
根据本公开的另一方面,提供一种内存访问系统,包括上游设备和待访问内存,以及上述任一实施例的内存控制器。
在一些实施例中,上述内存访问系统中,还包括:端口物理层芯片,其连接于待访问内存与内存控制器之间,被配置为将内存控制器传输过来的命令的数字信号转换为待访问内存的接口物理信号。
根据本公开的另一方面,提供一种电子装置,包括上述任一实施例的内存访问系统。
根据本公开的另一方面,提供一种电子设备,包括上述任一实施例的电子装置。
附图说明
图1为本公开一个实施例提供的内存控制器的结构示意图;
图2为本公开一个实施例提供的另一种内存控制器的结构示意图;
图3为本公开一个实施例提供的内存访问系统的结构示意图;
图4为本公开一个实施例提供的内存访问系统的结构示意图。
具体实施方式
在介绍本公开实施例之前,应当说明的是:
本公开部分实施例被描述为处理流程,虽然流程的各个操作步骤可能被冠以顺序的步骤编号,但是其中的操作步骤可以被并行地、并发地或者同时实施。
本公开实施例中可能使用了术语“第一”、“第二”等等来描述各个特征,但是这些特征不应当受这些术语限制。使用这些术语仅仅是为了将一个特征与另一个特征进行区分。
本公开实施例中可能使用了术语“和/或”,“和/或”包括其中一个或更多所列出的相关联特征的任意和所有组合。
应当理解的是,当描述两个部件的连接关系或通信关系时,除非明确指明两个部件之间直接连接或直接通信,否则,两个部件的连接或通信可以理解为直接连接或通信,也可以理解为通过中间部件间接连接或通信。
为了使本公开实施例中的技术方案及优点更加清楚明白,以下结合附图对本公开的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本公开的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
本公开的目的是提供一种内存控制器、系统、装置及电子设备,旨在通过命令调度模块监测上游设备的读状态和第一缓存模块的相关参数,并在上游设备的读状态和/或第一缓存模块的相关参数符合预设条件时,根据接收到的读请求向待访问内存发出对应的读命令,以触发待访问内存输出一组的数据并存入第一缓存模块中。这种内存控制器,可以有效利用第一缓存模块(读缓存模块)读写两侧的延时差,提前进行读命令的调度,以提升内存的访问效率,还可以降低第一缓存模块的存储容量(深度),减少内存控制器的面积开销。
本公开的一个实施例提供一种内存控制器,连接于上游设备与待访问内存之间,如图1所示,该内存控制器包括:
命令调度模块,被配置为监测上游设备的读状态和第一缓存模块的相关参数,并在上游设备的读状态和/或第一缓存模块的相关参数符合预设条件时,根据接收到的读请求向待访问内存发出对应的读命令,以触发待访问内存输出一组数据并存入第一缓存模块中;
其中,第一缓存模块的相关参数包括未完成的读命令的个数和第一缓存模块的剩余空间的大小。
其中,在上游设备的读状态包括发出读就绪信号(Rready信号)或未发出读就绪信号(Rready信号)。
可以理解为,命令调度模块不仅监测第一缓存模块中剩余空间的大小,还监测上游设备有没有发出读就绪信号(Rready信号),以及未完成的读命令的个数,可以在第一缓存模块中剩余空间不足时,也能根据上游设备有没有发出读就绪信号(Rready信号),提前发出读命令访问待访问内存(待访问内存开始响应读命令到输出数据的过程中,第一缓存模块中一组数据已经开始输出或已经完成输出至上游设备了),尽快使得待访问内存输出数据填补第一缓存模块中新出现的存储空位。因此,可以提升内存的访问效率,且对第一缓存模块中剩余空间的需求降低,所以在一定程度上实现了第一缓存模块的存储容量(深度)的降低,减少内存控制器的面积开销。
在一些实施例中,上述待访问内存包括不限于同步动态随机存储器(SynchronousDynamic Random Access Memory,SDRAM),SDRAM包括但不限于双倍速率同步动态随机存储器(Double Data Rate SDRAM,DDR SDRAM)、GDDR和低功耗双倍速率同步动态随机存储器(Low Power Double Data Rate SDRAM,LPDDR SDRAM)。
第一缓存模块,被配置为响应于接收到上游设备发出的读就绪信号,将第一缓存模块中当前最先存入的一组数据输出至上游设备。
需要说明的是,读请求是上游设备先于其对应的读就绪信号发送给内存控制器的,读请求用于指示内存控制器,上游设备想要从待访问内存中读取的数据的地址和大小。而读就绪信号(Rready信号)用于指示内存控制器当前上游设备可以接收数据了(已经准备好了),以触发内存控制器向上游设备输出数据。
在一些实施例中,当读请求为突发读请求时,读请求中携带了起始地址、访问数据位宽、突发长度和突发类型等信息。当命令调度模块根据接收到的读请求向待访问内存发出对应的读命令,以触发待访问内存输出数据并存入第一缓存模块之后,上游设备发出的读就绪信号才能读取该部分数据。
在一些实施例中,每个读命令触发待访问内存输出一组大小为R1的数据并存入第一缓存模块(即第一缓存模块的写入数据位宽为R1)中,第一缓存模块中输出的每一组数据的大小为R2(即第一缓存模块的输出数据位宽为R2)。
在一些实施例中,R1等于R2,即第一缓存模块的写入数据位宽等于输出数据位宽(读出数据位宽);或,
R1不等于R2,即第一缓存模块的写入数据位宽不等于输出数据位宽(读出数据位宽)。
其中,R1和R2的具体大小,可根据实际需求进行设置,优选的,R1是R2的整数倍或R2是R1的整数倍。更优选的,R2是R1的整数倍,也即,第一缓存模块的输出数据位宽等于写入数据位宽的整数倍,第一缓存模块每输出一组大小为R2的数据,得到的存储空位可以存储至少一组大小为R1的数据。
在一些实施例中,R2为64B。
在一些实施例中,预设条件包括以下至少一种:
上游设备的读状态为发出的读就绪信号;
第一缓存模块中剩余空间的大小除以R1得到的商,与未完成的读命令的个数的差值大于等于1。
也就是说,一种情况下,当上游设备的读状态为发出的读就绪信号(Rready信号)时,由于读就绪信号代表了第一缓存模块马上会输出一组大小为R2的数据至上游设备,即第一缓存模块中即将出现新的存储空位,所以当第一缓存模块在收到读就绪信号时,无论第一缓存模块中剩余空间的是否充足,命令调度模块也能在上游设备发出的读就绪信号的触发下,提前发出读命令访问待访问内存,尽快使得待访问内存输出数据填补第一缓存模块中新出现的存储空位(由于待访问内存开始响应读命令到输出数据的过程中,第一缓存模块中一组大小为R2的数据已经开始输出或已经完成输出至上游设备了)。
另一种情况下,当第一缓存模块中剩余空间大小除以R1得到的商,与未完成的读命令的个数的差值大于等于1时,说明除了未完成的读命令对应的数据外,第一缓存模块还可以再容纳至少一组大小为R1的数据,所以此时,无论上游设备有没有发出的读就绪信号,命令调度模块都可以继续发出一个读命令。
对应的,当上游设备的读状态为未发出读就绪信号,且第一缓存模块中剩余空间的大小除以R1得到的商与未完成的读命令的个数的差值小于1时,命令调度模块会停止发出读命令。
其中,未完成的读命令为命令调度模块已经发出但对应的数据还未存入第一缓存模块中的读命令。
在一些实施例中,命令调度模块内设置有计数器,以指示未完成的读命令的个数,计数器被配置为,当命令调度模块向待访问内存发出一个读命令时,计数器的计数值加1,当有读命令触发待访问内存输出一组数据存入第一缓存模块中时,计数器的计数值减1。
即命令调度模块向待访问内存每发出一个读命令,该计数器的值都加1,当第一缓存模块内每存入一组数据,该计数器的值都减1。
在一些实施例中,上游设备与内存控制器之间通过AXI总线连接,通过AXI协议实现数据传输。
在一些实施例中,第一缓存模块包括第一异步FIFO,被配置为响应于接收到上游设备发出的读就绪信号且第一异步FIFO中当前最先存入的一组数据已完成跨时钟域处理,将该组数据输出至上游设备。
在一些实施例中,第一异步FIFO进行跨时钟域处理的最短时长为n个时钟周期。
其中,上述跨时钟域处理是指AXI时钟域和内存控制器时钟域之间的跨异步处理,第一异步FIFO(包括多个缓存块)进行跨时钟域处理的最短时长是指其读指针每次更新后(每读走或输出一个缓存块内的数据),读指针的更新值需要n个时钟周期才能到达写时钟域,以及写指针每次更新后(每向一个缓存块写入或存入数据),写指针的更新值需要n个时钟周期才能到达读时钟域。
可以理解为,第一异步FIFO中的第一个缓存块(读指针为0时指向的缓存块)中的数据输出(或被读走)之后,读指针加1(读指针从0变为1),写时钟域在n个时钟周期之后才知道第一个缓存块中的数据已经输出(或被读走)了,才可以向第一个缓存块中存入(或写入)数据,以此类推。而当第一异步FIFO中的第一个缓存块(写指针为0时指向的缓存块)中存入(或写入)数据之后,写指针加1(写指针从0变为1),读时钟域在n个时钟周期之后才知道第一个缓存块中已经存入(或写入)数据了,才可以将第一个缓存块中的数据输出(或读走),以此类推。
对应的,在一些实施例中,为了避免第一异步FIFO在连续读操作中被读空,读操作被中断,第一异步FIFO的深度需要至少为2n,原因如下:
由于命令调度模块会同时对在上游设备的读状态和第一缓存模块的相关参数(未完成的读命令的个数和第一缓存模块中剩余空间的大小)进行监控,所以上游设备针对第一缓存模块的连续读操作,可以触发针对第一缓存模块的连续写操作。而当第一缓存模块中有数据但是不满时(尤指其剩余空间的大小除以R1得到的商,与未完成的读命令的个数的差值大于等于1),读命令的发出不受上游设备读状态(是否发出读就绪信号)的影响,命令调度模块在每个时钟周期(每一拍)都会发出读命令,直至第一缓存模块中被填满时(尤指其剩余空间的大小除以R1得到的商,与未完成的读命令的个数的差值等于0),所以在第一组大小为R1的数据写入第一缓存模块之后的每个时钟周期(每一拍)都有数据存入(或写入)第一缓存模块中,在此过程中上游设备针对第一缓存模块的连续的读(输出数据)操作不会出现第一缓存模块被读空的问题,而当上游设备针对第一缓存模块的连续读操作是在第一缓存模块被填满(读命令暂停发出)之后进行的,在第一缓存模块的容量不够时,可能会出现第一缓存模块被读空(没有数据可读)的问题。所以为了避免在触发的连续写操作的第一笔写操作从触发到数据(大小为R1的数据)写入(存入)第一缓存模块,再到该组数据可以被读走(输出)的过程中,第一缓存模块内的数据被读空(没有数据可读),导致第一缓存模块的连续读操作被中断,第一缓存模块(包括第一异步FIFO)的深度需要至少能满足第一异步FIFO的跨时钟域处理延时,假设第一异步FIFO的深度为DFIFO,当满状态的第一异步FIFO的第一组大小为R2的数据输出之后,其留下的存储空位在n个时钟周期之后才可以再次存入(或写入)数据,而再次存入的数据又需要另外n个时钟周期之后才可以再次被读取,在此期间,需要保证第一异步FIFO不被读空(保证有数据可读),即DFIFO需要大于等于2n。
在一些实施例中,n为整数,可选的,n为3。
在一些实施例中,除了第一异步FIFO之外,第一缓存模块还包括缓存单元,被配置为对待访问内存输出的数据进行缓存,并在第一异步FIFO为非满状态时,将缓存单元中当前最先存入的一组的数据输出至第一异步FIFO。
在一些实施例中,缓存单元向第一异步FIFO输出的每一组数据的大小等于第一异步FIFO输出的每一组数据的大小,也即第一缓存模块输出的每一组数据的大小,也就是R2(即第一异步FIFO的写入数据位宽和输出数据位宽均为R2)。其中,R2也可以看作是第一异步FIFO中每个缓存块的位宽。
其中,缓存单元用于对还未存入(或写入)第一异步FIFO的数据进行缓存,缓存单元的设置可以在R1(第一缓存模块的写入数据位宽)和R2(第一缓存模块的输出数据位宽)不相等时,对第一缓存模块输出的数据进行预整理,以使得缓存单元每次输出都将一组大小为R2的数据输出至第一异步FIFO。
在一些实施例中,从命令调度模块向待访问内存发出对应的读命令开始,至该读命令对应的数据存入第一缓存模块中所需的最短时长为第一延时;
第一异步FIFO开始输出一组数据,至缓存单元输出对应的另一组数据所需的最短时长为第二延时;其中,从第一异步FIFO输出的该组数据输出之前在第一异步FIFO中的存储位置与缓存单元输出的对应的另一组数据在第一异步FIFO中的存入位置相同;其中,第一延时大于第二延时;
缓存单元连续输出两组数据的最短时间间隔为第三延时。
对应的,单元的容量CBuffer至少为:CBuffer=(T1-T2)/T3 ×R2,其中,T1、T2和T3分别为第一延时、第二延时和第三延时,R2为缓存单元输出的每一组数据的大小(也是第一异步FIFO的写入数据位宽和输出数据位宽)。
可以理解为,当内存控制器接收到读就绪信号时,命令调度模块在该读就绪信号的触发下发出读命令,以触发待访问内存输出一组数据并存入缓存单元中;第一异步FIFO在该读就绪信号的触发下开始输出数据,第一异步FIFO输出数据(如第一个缓存块的数据)之后,读指针加1,写时钟域在n个时钟周期之后才知道第一异步FIFO中的一组数据(如第一个缓存块的数据)已经输出(或被读走)了,才可以通知缓存单元输出数据以存入(或写入)第一异步FIFO中对应的新出现的存储空位(如上述第一个缓存块)中。所以,第一延时可以看作是读就绪信号触发下缓存单元的数据写入延时,第二延时可以看作是读就绪信号触发下缓存单元输出对应数据的数据读取延时。
其中,第一延时包括读命令从命令调度模块传输至待访问内存所需的最短时长,该读命令触发待访问内存输出对应的一组数据的最短时长,以及该组数据从待访问内存中输出之后至该组数据存入缓存单元的最短时长,第二延时主要是第一异步FIFO进行跨时钟域处理的时长,所以第一延时是大于第二延时的。
在一些实施例中,待访问内存与内存控制器之间需要进行协议转换,而缓存单元和第一异步FIFO的数据输出和交互,都是在内存控制器内进行的,不涉及协议转换的问题,这也是造成第一延时大于第二延时的原因之一。
同上述在第一异步FIFO的深度计算实施例中,当上游设备针对第一缓存模块的连续读操作是在第一缓存模块被填满(读命令暂停发出)之后进行的情况下,在缓存单元的容量不够时,缓存单元容易会出现缓存单元被读空的问题。结合缓存单元的数据写入延时(第一延时)大于缓存单元的数据读取延时(第二延时),为了避免在针对第一缓存模块的连续读操作下触发的针对第一缓存模块的连续写操作的第一笔写操作从触发到数据(大小为R1的数据)写入(存入)缓存单元之前,缓存单元被读空,导致第一异步FIFO中的数据时序接续不上,使得针对第一缓存模块的连续读操作被中断,缓存单元的深度需要至少能抵消第一延时与第二延时的时间差内被读走(输出)的数据,也即所以缓存单元的容量至少为:CBuffer=(T1-T2)/T3 ×R2。
对应的,在一些实施例中,第二延时包括:第一异步FIFO输出一组数据所需的最短时长,第一异步FIFO进行跨时钟域处理所需的最短时长,以及缓存单元输出一组数据所需的最短时长。
优选的,为了进一步实现针对第一缓存模块的连续读操作不会被中断,R1等于R2,对应的,上述缓存单元的容量CBuffer还可以至少为:CBuffer=(T1-T2)/T3 ×R1。
在一些实施例中,第三延时T3为一个时钟周期也即一拍。
在另一些实施例中,内存控制器通过AXI接口与上游设备连接;
从AXI接口接收到读就绪信号开始,至该读就绪信号对应的数据存入第一缓存模块中所需的最短时长为第一延时;
从AXI接口接收到读就绪信号开始,至缓存单元输出与该读就绪信号对应的一组数据所需的最短时长为第二延时;其中,第一延时大于第二延时;
缓存单元连续输出两组数据的最短时间间隔为第三延时;
缓存单元的容量CBuffer至少为:CBuffer=(T1-T2)/T3 ×R2,其中,T1、T2和T3分别为第一延时、第二延时和第三延时,R2为缓存单元输出的每一组数据的大小(也是第一异步FIFO的写入数据位宽和输出数据位宽)。
可以理解为,由于在内存控制器接收到读就绪信号时,命令调度模块在该读就绪信号的触发下发出读命令,以触发待访问内存输出一组数据并存入缓存单元中;第一异步FIFO在该读就绪信号的触发下开始输出数据,所以可以将第一延时和第二延时的起点设置为AXI接口接收到读就绪信号开始。此时对应的缓存单元的计算原理同上,此处不再赘述。
其中,第一延时包括读就绪信号从AXI接口传输至命令调度模块所需的最短时长,读命令从命令调度模块传输至待访问内存所需的最短时长,该读命令触发待访问内存输出对应的一组数据的最短时长,以及该组数据从待访问内存中输出之后至该组数据存入缓存单元的最短时长。
对应的,在一些实施例中,第二延时包括:读就绪信号从AXI接口传输至第一异步FIFO所需的最短时长,该读就绪信号触发第一异步FIFO输出一组数据所需的最短时长,第一异步FIFO进行跨时钟域处理所需的最短时长,以及缓存单元输出一组数据所需的最短时长。
优选的,为了进一步实现针对第一缓存模块的连续读操作不会被中断,R1等于R2,对应的,上述缓存单元的容量CBuffer还可以至少为:CBuffer=(T1-T2)/T3 ×R1。
在一些实施例中,第三延时T3为一个时钟周期也即一拍。
在一些实施例中,上述缓存单元为先进先出的缓存单元(先进先出Buffer)。
在一些实施例中,由于待访问内存输出的数据是先存入缓存单元中,所以命令调度模块在监测第一缓存模块能不能存入数据时,可以主要监测换成单元中剩余空间的大小。也即命令调度模块被配置为监测第一缓存模块的相关参数,包括:
命令调度模块被配置为监测未完成的读命令的个数和缓存单元中剩余空间的大小。
在一些实施例中,由于上游设备对待访问内存的访问请求,可以为读请求(请求从待访问内存中读出数据),也可以为写请求(请求向待访问内存中写入数据),对应的,如图2所示,上述内存控制器还包括先进先出的第二缓存模块;
第二缓存模块,被配置为接收上游设备发出的数据并进行缓存;
其中,命令调度模块,还被配置为根据接收到的写请求,从第二缓存模块中读取一组数据并发送至待访问内存。
在一些实施例中,上述内存控制器还包括第三缓存模块,被配置为接收上游设备发出的写请求和读请求并进行缓存,以及将缓存的写请求和读请求按照预设时序发送至命令调度模块;
也就是说,第二缓存模块为写缓存模块,第三缓存模块为读写请求缓存模块,上游模块将想要写入待访问内存的数据按照顺序发给内存控制器中的第二缓存模块,另外将写请求按照顺序发给第三缓存模块。
在一些实施例中,第二缓存模块包括第二异步FIFO,第三缓存模块包括第三异步FIFO,可以理解为,上游设备发出的数据和写请求分别在第二异步FIFO和第三异步FIFO进行跨时钟域处理之后,再发给命令调度模块,命令调度模块根据接收到的写请求,进行地址映射等操作之后,生成写命令,以将来自第二异步FIFO的数据写入到待访问内存对应的物理地址上。
在一些实施例中,上述内存控制器还包括:先进先出的第四缓存模块;
命令调度模块,还被配置为接收待访问内存发出的写响应信息,并将接收到的写响应信息发送至第四缓存模块;其中,写响应信息为待访问内存在接收到命令调度模块发出的数据并将该数据写入待访问内存后反馈的;
第四缓存模块,被配置为接收命令调度模块发出的写响应信息并进行缓存,以及将缓存的写响应信息按照预设时序发送至上游设备。
在一些实施例中,第四缓存模块包括第四异步FIFO,可以理解为,待访问内存在写入数据之后,会反馈一个写响应信息给命令调度模块并通过命令调度模块发给第四缓存模块,该写响应信息在第四异步FIFO进行跨时钟域处理之后,再发给上游设备。
如图2所示,内存控制器可以分为两个部分,一部分(点划线左侧部分)为与上游设备的接口(接口协议为AXI协议)逻辑部分,主要完成AXI时钟域和内存控制器时钟域之间的跨异步处理。另一部分(点划线右侧部分)主要完成命令的拆分、调度地址映射等操作。
如图3所示,本公开实施例还提供一种内存访问系统,包括上游设备、待访问内存和上述任一实施例的内存控制器。
上游设备通过内存控制器连接待访问内存,以通过内存控制器访问待访问内存。
在一些实施例中,上述待访问内存包括SDRAM,SDRAM包括但不限于DDR、GDDR和LPDDR。
在一些实施例中,上述系统还包括:非易失性存储器(图中未示出),其与内存控制器连接,被配置为对读请求、写请求的地址与待访问内存的内存物理地址之间的地址映射关系进行存储。
非易失性存储器可以为闪存(flash)、只读存储器(Read Only Memory,ROM)等存储器。
在一些实施例中,上述系统还包括:端口物理层芯片(Physical ,PHY),其连接于待访问内存与内存控制器之间,被配置为将内存控制器传输过来的突发访问的数字信号转换为待访问内存的接口物理信号。
在一些实施例中,内存控制器与端口物理层之间通过DFI(DDR PHY Interface)协议连接。
上游设备的读写请求在内存控制器的命令调度模块转化为可以访问上述待访问内存的DFI读写操作或命令。端口物理层芯片PHY将DFI命令转换为与待访问内存直接通信的命令。
在一些使用场景下,内存访问系统的产品形式为GPU SOC系统。
GPU SOC系统包括GPU核(GPU core)及其它上游设备(如编码器、解码器等),待访问内存(如GDDR),以及CPU核(CPU core)和flash芯片(非易失性存储器)。
在一些实施例中,当内存控制器还包括先进先出的第二缓存模块、第三缓存模块和第四缓存模块时,内存访问系统的结构,如图4所示。
基于相同的发明构思,本公开实施例还提供一种电子装置,该电子装置包括上述任一实施例中的内存访问系统。在一些使用场景下,该电子装置的产品形式体现为显卡;在另一些使用场景下,该电子装置的产品形式体现为CPU主板。
基于相同的发明构思,本公开实施例还提供一种电子设备,该电子设备包括上述的电子装置。在一些使用场景下,该电子设备的产品形式是便携式电子设备,例如智能手机、平板电脑、VR设备等;在一些使用场景下,该电子设备的产品形式是个人电脑、游戏主机等。

Claims (17)

1.一种内存控制器,其中,连接于上游设备与待访问内存之间,包括先进先出的第一缓存模块和命令调度模块;
所述命令调度模块,被配置为监测所述上游设备的读状态和所述第一缓存模块的相关参数,并在所述上游设备的读状态和/或所述第一缓存模块的相关参数符合预设条件时,根据接收到的读请求向所述待访问内存发出对应的读命令,以触发所述待访问内存输出一组数据并存入所述第一缓存模块中;
所述第一缓存模块包括第一异步FIFO和缓存单元,所述缓存单元被配置为对所述待访问内存输出的数据进行缓存,并在所述第一异步FIFO为非满状态时,将所述缓存单元中当前最先存入的一组数据输出至所述第一异步FIFO,所述第一异步FIFO被配置为响应于接收到所述上游设备发出的读就绪信号且所述第一异步FIFO中当前最先存入的一组数据已完成跨时钟域处理,将该组数据输出至所述上游设备;所述缓存单元的容量CBuffer至少为:CBuffer=(T1-T2)/T3 ×R2,其中,T1、T2和T3分别为第一延时、第二延时和第三延时,R2为所述缓存单元输出的每一组数据的大小;所述第一延时为读就绪信号触发下缓存单元的数据写入延时,所述第二延时为读就绪信号触发下缓存单元输出对应数据的数据读取延时;所述第三延时为所述缓存单元连续输出两组数据的最短时间间隔;
其中,所述第一缓存模块的相关参数包括未完成的读命令的个数和所述第一缓存模块的剩余空间的大小。
2.根据权利要求1所述的内存控制器,其中,每个读命令触发所述待访问内存输出一组大小为R1的数据并存入所述第一缓存模块中;
所述预设条件包括以下至少一种:
所述上游设备的读状态为发出读就绪信号;
所述第一缓存模块中剩余空间的大小除以R1得到的商,与所述未完成的读命令的个数的差值大于等于1。
3.根据权利要求1所述的内存控制器,其中,所述未完成的读命令为所述命令调度模块已经发出但对应的数据还未存入所述第一缓存模块中的读命令。
4.根据权利要求1所述的内存控制器,其中,所述命令调度模块内设置有计数器,以指示所述未完成的读命令的个数;
其中,所述计数器被配置为,当所述命令调度模块向所述待访问内存发出一个读命令时,所述计数器的计数值加1,当有读命令触发所述待访问内存输出一组数据存入所述第一缓存模块中时,所述计数器的计数值减1。
5.根据权利要求1所述的内存控制器,其中,所述第一异步FIFO进行跨时钟域处理的最短时长为n个时钟周期;
所述第一异步FIFO的深度至少为2n。
6.根据权利要求1所述的内存控制器,其中,所述第一延时为从所述命令调度模块向所述待访问内存发出对应的读命令开始,至该读命令对应的数据存入所述第一缓存模块中所需的最短时长;
所述第二延时为所述第一异步FIFO开始输出一组数据,至所述缓存单元输出对应的另一组数据所需的最短时长;其中,从所述第一异步FIFO输出的该组数据输出之前在所述第一异步FIFO中的存储位置与所述缓存单元输出的对应的另一组数据在所述第一异步FIFO中的存入位置相同;所述第一延时大于所述第二延时。
7.根据权利要求6所述的内存控制器,其中,第二延时包括:所述第一异步FIFO输出一组数据所需的最短时长,所述第一异步FIFO进行跨时钟域处理所需的最短时长,以及所述缓存单元输出一组数据所需的最短时长。
8.根据权利要求1所述的内存控制器,其中,所述内存控制器通过AXI接口与所述上游设备连接;
所述第一延时为从所述AXI接口接收到读就绪信号开始,至该读就绪信号对应的数据存入所述第一缓存模块中所需的最短时长;
所述第二延时为从所述AXI接口接收到读就绪信号开始,至所述缓存单元输出与该读就绪信号对应的一组数据所需的最短时长;其中,所述第一延时大于所述第二延时。
9.根据权利要求8所述的内存控制器,其中,所述第二延时包括:读就绪信号从所述AXI接口传输至所述第一异步FIFO所需的最短时长,该读就绪信号触发所述第一异步FIFO输出一组数据所需的最短时长,所述第一异步FIFO进行跨时钟域处理所需的最短时长,以及所述缓存单元输出一组数据所需的最短时长。
10.根据权利要求1所述的内存控制器,其中,所述命令调度模块被配置为监测所述第一缓存模块的相关参数,包括:
所述命令调度模块被配置为监测所述未完成的读命令的个数和所述缓存单元中剩余空间的大小。
11.根据权利要求1所述的内存控制器,其中,还包括:
先进先出的第二缓存模块,被配置为接收所述上游设备发出的数据并进行缓存;
其中,所述命令调度模块,还被配置为根据接收到的写请求,从所述第二缓存模块中读取一组数据并发送至所述待访问内存。
12.根据权利要求1所述的内存控制器,其中,还包括:
先进先出的第三缓存模块,被配置为接收所述上游设备发出的写请求和读请求并进行缓存,以及将缓存的写请求和读请求按照预设时序发送至所述命令调度模块。
13.根据权利要求1所述的内存控制器,其中,还包括:先进先出的第四缓存模块;
所述命令调度模块,还被配置为接收所述待访问内存发出的写响应信息,并将接收到的写响应信息发送至所述第四缓存模块;其中,所述写响应信息为所述待访问内存在接收到所述命令调度模块发出的数据并将该数据写入所述待访问内存后反馈的;
所述第四缓存模块,被配置为接收所述命令调度模块发出的写响应信息并进行缓存,以及将缓存的写响应信息按照预设时序发送至所述上游设备。
14.一种内存访问系统,其中,包括上游设备和待访问内存,以及如权利要求1至13中任意一项所述的内存控制器。
15.根据权利要求14所述的系统,其中,还包括:端口物理层芯片,其连接于所述内存控制器与所述待访问内存之间,被配置为将所述内存控制器传输过来的命令的数字信号转换为所述待访问内存的接口物理信号。
16.一种电子装置,其中,包括如权利要求14或15中任意一项所述的内存访问系统。
17.一种电子设备,其中,包括如权利要求16中所述的电子装置。
CN202211587656.9A 2022-12-12 2022-12-12 内存控制器、系统、装置及电子设备 Active CN115586974B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211587656.9A CN115586974B (zh) 2022-12-12 2022-12-12 内存控制器、系统、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211587656.9A CN115586974B (zh) 2022-12-12 2022-12-12 内存控制器、系统、装置及电子设备

Publications (2)

Publication Number Publication Date
CN115586974A CN115586974A (zh) 2023-01-10
CN115586974B true CN115586974B (zh) 2023-10-20

Family

ID=84783516

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211587656.9A Active CN115586974B (zh) 2022-12-12 2022-12-12 内存控制器、系统、装置及电子设备

Country Status (1)

Country Link
CN (1) CN115586974B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU1640501A (en) * 2000-02-11 2001-08-16 Canon Kabushiki Kaisha FIFO overflow management
CN102831077A (zh) * 2012-07-10 2012-12-19 中兴通讯股份有限公司 一种节约缓存资源的流量管理装置和方法
WO2016202114A1 (zh) * 2015-06-16 2016-12-22 深圳市中兴微电子技术有限公司 一种数据传输方法、装置及存储介质
CN107783727A (zh) * 2016-08-31 2018-03-09 华为技术有限公司 一种内存设备的访问方法、装置和系统
CN111008157A (zh) * 2019-11-29 2020-04-14 北京浪潮数据技术有限公司 存储系统写缓存数据下发方法及相关组件
WO2022155970A1 (zh) * 2021-01-25 2022-07-28 华为技术有限公司 一种内存控制方法及内存控制装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU1640501A (en) * 2000-02-11 2001-08-16 Canon Kabushiki Kaisha FIFO overflow management
CN102831077A (zh) * 2012-07-10 2012-12-19 中兴通讯股份有限公司 一种节约缓存资源的流量管理装置和方法
WO2016202114A1 (zh) * 2015-06-16 2016-12-22 深圳市中兴微电子技术有限公司 一种数据传输方法、装置及存储介质
CN107783727A (zh) * 2016-08-31 2018-03-09 华为技术有限公司 一种内存设备的访问方法、装置和系统
CN111008157A (zh) * 2019-11-29 2020-04-14 北京浪潮数据技术有限公司 存储系统写缓存数据下发方法及相关组件
WO2022155970A1 (zh) * 2021-01-25 2022-07-28 华为技术有限公司 一种内存控制方法及内存控制装置

Also Published As

Publication number Publication date
CN115586974A (zh) 2023-01-10

Similar Documents

Publication Publication Date Title
US5289584A (en) Memory system with FIFO data input
CA2018065C (en) Data processing system with means to convert burst operations into pipelined operations
CN101324869B (zh) 一种基于axi总线的多路复用器
CN103077132B (zh) 一种高速缓存处理方法及协议处理器高速缓存控制单元
CN103077123A (zh) 一种数据写入和读取方法及装置
JP5428687B2 (ja) メモリ制御装置
CN101303685B (zh) 可提升通用序列总线储存设备的读写数据速率的方法
JP3444154B2 (ja) メモリアクセス制御回路
CN115586974B (zh) 内存控制器、系统、装置及电子设备
WO2022095439A1 (zh) 一种用于数据处理的硬件加速系统及芯片
US20070043910A1 (en) Memory control apparatus executing prefetch instruction
KR20150095139A (ko) 채널 버퍼로의 직접 접근이 가능한 직접 메모리 접근 컨트롤러 및 시스템.
CN108984148B (zh) 一种基于同步fifo存储器的数据存储的方法及存储器
JP2005267148A (ja) メモリ制御装置
CN115237349A (zh) 数据读写控制方法、控制装置、计算机存储介质和电子设备
JP4346506B2 (ja) 先入れ先出しメモリ及びそれを用いた記憶媒体制御装置
CN111694777B (zh) 基于PCIe接口的DMA传输方法
CN117806833B (zh) 一种数据处理系统、方法及介质
US6651114B1 (en) DMA controller which optimizes transfer rate of data and method therefor
WO2023115319A1 (zh) 一种数据存储方法、存储装置及设备
EP1067555B1 (en) Memory controller and an information processing apparatus having such a memory controller
CN116755606A (zh) 控制突发长度以访问电子系统的存储装置的系统和方法
KR100186318B1 (ko) 범용 입출력 인터페이스의 선입선출 장치
JP2806405B2 (ja) マイクロプロセッサ
CN115878532A (zh) 数据传输系统及数据传输方法

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
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20240111

Address after: 401135 No. 618 Liangjiang Avenue, Longxing Town, Yubei District, Chongqing

Patentee after: Xiangdixian Computing Technology (Chongqing) Co.,Ltd.

Address before: Room 901, 901, floor 9 (09), building 1, yard 5, Anding Road, Chaoyang District, Beijing 100029

Patentee before: Beijing xiangdixian Computing Technology Co.,Ltd.

TR01 Transfer of patent right