CN116185310A - 一种存储器数据读写调度方法及装置 - Google Patents
一种存储器数据读写调度方法及装置 Download PDFInfo
- Publication number
- CN116185310A CN116185310A CN202310465467.2A CN202310465467A CN116185310A CN 116185310 A CN116185310 A CN 116185310A CN 202310465467 A CN202310465467 A CN 202310465467A CN 116185310 A CN116185310 A CN 116185310A
- Authority
- CN
- China
- Prior art keywords
- read
- type
- request
- executed
- requests
- 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.)
- Granted
Links
Images
Classifications
-
- 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/0625—Power saving in storage systems
-
- 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
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Memory System (AREA)
Abstract
本申请提出一种存储器数据读写调度方法及装置,包括:在执行第一类读请求的进程中,若接收到第二类读请求,确定是否满足第一预设条件;其中,第一预设条件表示目标读请求的数量大于0且小于第一预设数值,目标读请求为读取对象属于存储器的当前页未执行的第一类读请求,第二类读请求的执行优先级高于第一类读请求的执行优先级;若满足第一预设条件,则继续执行目标读请求,在目标读请求执行完成后,执行第二类读请求,综合考量切换耗时带来的效率损耗和执行优先级,在尽量降低对第二类读请求的执行优先级的影响的前提下,降低切换耗时带来的效率损耗。
Description
技术领域
本申请涉及芯片领域,具体而言,涉及一种存储器数据读写调度方法及装置。
背景技术
双倍数据率同步动态随机存取存储器(Double Data Rate SynchronousDynamicRandom Access Memory,简称DDR SDRAM)为具有双倍数据传输率的存储器,即DDR存储器的数据传输速度为系统时钟频率的两倍,由于速度增加,其传输性能优于传统的SDRAM。DDR存储器在系统时钟的上升沿和下降沿都可以进行数据传输。 在应用DDR存储器时,为提高DDR存储器的数据读写效率,需要对DDR存储器的读写操作进行调度,以提高信息系统(例如SoC系统)的运行效率,此为本领域持续关注的课题。
发明内容
本申请的目的在于提供一种存储器数据读写调度方法及装置,以至少部分改善上述问题。
为了实现上述目的,本申请实施例采用的技术方案如下:
第一方面,本申请实施例提供一种存储器数据读写调度方法,应用于存储控制器,所述方法包括:
在执行第一类读请求的进程中,若接收到第二类读请求,确定是否满足第一预设条件;
其中,所述第一预设条件表示目标读请求的数量大于0且小于第一预设数值,所述目标读请求为读取对象属于存储器的当前页未执行的第一类读请求,所述第二类读请求的执行优先级高于所述第一类读请求的执行优先级;
若满足第一预设条件,则继续执行所述目标读请求,在所述目标读请求执行完成后,执行所述第二类读请求。
第二方面,本申请实施例提供一种存储器数据读写调度装置,所述存储器数据读写调度装置包括存储控制器,所述存储控制器包括命令单元和第一子控制单元;
在执行第一类读请求的进程中,若所述命令单元接收到第二类读请求,所述第一子控制单元用于确定是否满足第一预设条件;其中,所述第一预设条件表示目标读请求的数量大于0且小于第一预设数值,所述目标读请求为读取对象属于存储器的当前页未执行的第一类读请求,所述第二类读请求的执行优先级高于所述第一类读请求的执行优先级;若满足第一预设条件,则继续执行所述目标读请求,在所述目标读请求执行完成后,执行所述第二类读请求。
相对于现有技术,本申请所提供的一种存储器数据读写调度方法及装置,综合考量切换耗时带来的效率损耗和执行优先级,在尽量降低对第二类读请求的执行优先级的影响的前提下,降低切换耗时带来的效率损耗。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它相关的附图。
图1为本申请实施例提供的第一种的存储器数据读写调度装置的硬件模块示意图;
图2为本申请实施例提供的gather类型的地址变化示意图;
图3为本申请实施例提供的第二种的存储器数据读写调度装置的硬件模块示意图;
图4为本申请实施例提供的第一种的存储器数据读写调度方法的流程示意图;
图5为本申请实施例提供的第二种的存储器数据读写调度方法的流程示意图。
图中:100-第一控制器;200-第二控制器;300-存储控制器;310-命令单元;320-读单元;330-任务管理单元;331-配置寄存器组;332-计数寄存器;333-目标寄存器;334-比较寄存器;340-第一子控制单元;350-第二子控制单元;360-读缓存单元;370-写单元;380-第三子控制单元;390-写缓存单元;400-存储器;410-逻辑控制单元;420-锁存器。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
在本申请的描述中,需要说明的是,术语“上”、“下”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该申请产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。
在本申请的描述中,还需要说明的是,除非另有明确的规定和限定,术语“设置”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
请参考图1,图1为本申请实施例提供的第一种的存储器数据读写调度装置的硬件模块示意图。存储器数据读写调度装置可以但不限定为片上系统(SoC)或存储系统。
如图1所示,片上系统包括第一控制器100、第二控制器200、存储控制器300以及存储器400。第一控制器100和第二控制器200可以但不限定为中央处理器CPU、图像图像处理器GPU、直接内存访问控制器DMAC以及Gigabit Ethernet控制器GMAC中的任意一种。第二控制器200对应的读指令执行优先级高于第一控制器100对应的读指令执行优先级,例如,第一控制器100为直接内存访问控制器DMAC,第二控制器200为中央处理器CPU。
存储控制器300(又称为DDR controller)包括命令单元310、读单元320、任务管理单元330、第一子控制单元340、第二子控制单元350以及读缓存单元360。
任务管理单元330分别与第一控制器100、第一子控制单元340以及第二子控制单元350连接,命令单元310分别与第一控制器100、第二控制器200以及第一子控制单元340连接,读单元320分别与第一控制器100、第二控制器200以及第二子控制单元350连接,第二子控制单元350还与读缓存单元360连接。命令单元310设置有多个命名队列或一个统一的命名队列,读单元320设置有多个读队列或一个统一的读队列。
存储器400可以但不限定为动态随机存储器(dynamic ram,简称DDR)。存储器400包括逻辑控制单元410和锁存器420,逻辑控制单元410与锁存器420连接,逻辑控制单元410还与第一子控制单元340和读缓存单元360连接。
在第一种可能的实现方式中,第一控制器100(例如DMAC)需要读取64KB的数据,需要拆分为多笔第一类读请求,例如多笔AXI BURST。AXI为高性能微系统互连总线协议,此处以AXI为例,但通信协议不限定于此。通信协议还可以为ARM公司开发的总线协议(AMBA)和开放系统互连总线协议(OCP)。第一控制器100可以通过总线(Bus)将拆分后的第一类读请求传输给存储控制器300,具体地,可以将拆分后的第一类读请求逐笔写入其对应的命名队列cmdQ1。其中,第一类读请求包括对应的目标数据的读地址信息,读地址信息包括行地址信息和列地址信息。
第一子控制单元340会读取命名队列cmdQ1中的第一类读请求,并将第一类读请求传输给存储器400中的逻辑控制单元410。逻辑控制单元410在接收到第一个第一类读请求时,会将其中的行地址信息对应的数据搬移至锁存器420中,并从锁存器420中读取列地址信息对应的目标数据,并将目标数据写入读缓存单元360,第二子控制单元350从读缓存单元360读取目标数据,并将目标数据写入第一控制器100对应的读队列readQ1,第一控制器100从读队列readQ1中读取目标数据。逻辑控制单元410在接收到后续的第一类读请求时,判断其对应的行地址信息是否发生变化,若没有变化,则可以直接从锁存器420中读取列地址信息对应的目标数据,重复上述步骤。若行地址信息发生变化,就需要进行页(page)切换。下面对页切换举例说明,假设原行地址信息为A1,新的行地址信息为A2,需要先预充电(precharge),即将锁存器420中的内容搬移至A1对应的存储空间,再激活(active),即将A2对应的内容搬移至锁存器420。应理解,在存储器400进行页切换时将产生必要的耗时,也可以理解为延迟(简称Tp)。
如前文所述,第二控制器200对应的读指令执行优先级高于第一控制器100对应的读指令执行优先级,即第二类读请求的执行优先级高于第一类读请求的执行优先级。在第一种可能的实现方式中,在执行第一类读请求的进程中,若接收到第二类读请求,且该第二类读请求对应的行地址信息(A3)与锁存器420中当前缓存的内容的行地址信息(A4)不同,表示该第二类读请求不属于存储器400的当前页。此时因为优先级的设定,需要先执行该第二类读请求。则存储器400需要进行页切换,对锁存器420中的内容进行更换,更换为行地址信息(A3)对应的内容,从而产生一次延迟(Tp)。并在第二类读请求执行完成后,需要将锁存器420重新更换为行地址信息(A4)对应的内容,又需要产生一次延迟(Tp)。如此,反复进行页切换,则会导致耗时增加,降低整体的读写效率。
为了克服该读写效率降低的问题,本申请实施例还提供了第二种可能的实现方式,请参考下文。
第一控制器100(例如DMAC)在启动前,可以由DMAC、CPU以及外部连接端口对第一控制器100对应的任务管理单元330进行配置。其中,任务管理单元330包括配置寄存器组331、计数寄存器332、目标寄存器333以及比较寄存器334。
任务管理单元330进行配置的过程如下:
类型配置,将第一控制器100本次读请求的类型写入该配置寄存器组331,类型包括地址连续递增类型(incremental)、散发式发送类型(Scatter)、散发式收集类型(Gather)以及链接脚本类型(link script)。
Scatter:散发式发送,地址连续增加或减少一定数量后,跳转一个offset,再继续的方式。
Gather:散发式收集,地址连续增加或减少一定数量后,跳转一个offset,再继续的方式。
link script :将需要存取的地址,数量等信息,提前按照链表方式存于内存中,让DMAC读取后再根据读取到的地址数量开始正式传输的方式。
具体地,类型type占3位,标志为type[2:0];000表示incremental;001表示scatter/gather;010表示link list。
读取数量配置,将本次进程所涉及的每一行对应的第一类读请求的目标读取数量按照预设顺序写入该配置寄存器组331。并将第一组目标读取数量写入目标寄存器333。
在配置完成后,表示进入执行第一类读请求的进程中,第一控制器100(例如DMAC)启动,用于向存储控制器300发送第一类读请求,具体地,逐笔地将第一类读请求写入命令单元310,具体地写入命令队列cmdQ1。存储控制器300重复第一种可能的实现方式所述的步骤,将目标数据写入第一控制器100对应的读队列readQ1,便于第一控制器100从读队列readQ1中读取目标数据。
在此过程中,第二子控制单元350用于每将一笔目标数据写入第一控制器100对应的读队列readQ1时,对计数寄存器332中的值进行更新,计数寄存器332中的值表示已执行数量,已执行数量为读取对象属于存储器400的当前页已执行的第一类读请求的数量。
比较寄存器334用于会对计数寄存器332和目标寄存器333中的值进行比较,并将比较结果提供给第一子控制单元340,以使第一子控制单元340获取目标读请求的数量,目标读请求为读取对象属于存储器的当前页未执行的第一类读请求。即已执行数量和目标读取数量的差值为目标读请求的数量。
第一子控制单元340还用于在存储器400进行页切换后,将计数寄存器332归零,并将页切换后的行地址信息对应的目标读取数量写入目标寄存器333。
在第二种可能的实现方式中,在执行第一类读请求的进程中,若接收到第二类读请求,且该第二类读请求对应的行地址信息(A3)与锁存器420中当前缓存的内容的行地址信息(A4)不同,表示该第二类读请求不属于存储器400的当前页。其中,第二类读请求为第二控制器200写入命令队列cmdQ2中的命令请求。此时,不仅仅需要考虑执行优先级,还需要综合考虑切换耗时带来的效率损耗。具体地,第一子控制单元340用于确定是否满足第一预设条件;其中,第一预设条件表示目标读请求的数量大于0且小于第一预设数值。若满足第一预设条件,说明继续执行目标读请求的耗时较短,则继续执行目标读请求,在目标读请求执行完成后,执行第二类读请求,减少一次页切换,综合考量切换耗时带来的效率损耗和执行优先级,在尽量降低对第二类读请求的执行优先级的影响的前提下,降低切换耗时带来的效率损耗。若不满足第一预设条件,则直接执行第二类读请求,以保障第二类读请求的执行优先级。
可选地,第一子控制单元340中配置有确定模块和执行模块。确定模块用于确定是否满足第一预设条件,具体地,确定目标读请求的数量是否大于0且小于第一预设数值;若是,则确定满足第一预设条件。执行模块用于执行命令单元310中的读请求(包括第一类读请求和第二类读请求)。
在第二控制器200对应的任务管理单元330配置完成后,进入执行第二类读请求的进程中,第二控制器200(例如CPU)用于向存储控制器300发送第二类读请求,具体地,逐笔地将第二类读请求写入命令单元310,具体地写入命令队列cmdQ2。
在执行该第二类读请求的进程中,若命令单元310接收到第一类读请求。若只考虑优先级,则可以忽略第一类读请求,在执行该第二类读请求的进程结束后,重新进入执行第一类读请求的进程。但是可能有部分的第一类读请求对应的行地址信息与部分第二类读请求的对应的行地址信息重合,在此场景下,在重复执行第一类读请求时,又需要进行页切换,导致耗时增加,降低了读写效率。
为了克服该读写效率降低的问题,本申请实施例还提供了第三种可能的实现方式,请参考下文。
在执行第二类读请求的进程中,若接收到第一类读请求,第一子控制单元340用于确定是否满足第二预设条件;其中,第二预设条件表示待执行的第一类请求的读取对象属于存储器400的当前页,且待执行的第一类请求的数量小于第一预设数值。
具体地,第一子控制单元340读取命令单元310中的命令队列cmdQ1中的第一类读请求的具体信息,进而确定读取对象属于存储器400的当前页的第一类请求的数量。具体地,基于第一类读请求的读地址信息确定待执行的第一类请求的读取对象是否属于存储器400的当前页;若属于,则确定待执行的第一类请求的数量是否小于第一预设数值;若小于,则确定满足第二预设条件。待执行的第一类请求为命令队列cmdQ1中前N个请求。
为了兼顾第二类读请求执行优先级和总体的读写效率,设置了第二预设条件,若满足第二预设条件,则第一子控制单元340用于在读取对象属于当前页的第二类读请求执行完成后,执行待执行的第一类请求;在待执行的第一类请求执行完成后,继续执行剩余的第二类读请求,进而再后续执行第一类读请求时,可以不再切换至当前页,减少一次页切换,提升整体效率。若不满足第二预设条件,则第一子控制单元340用于在读取对象属于当前页的第二类读请求执行完成后,执行剩余的第二类读请求。
一种可能的场景为,在执行第三类读请求的进程中,当第三类读请求对应的命令单元310的命令队列cmdQ3(图中未示出)空闲(IDLE)时,表示未及时收到控制器对应的第三类读请求(read cmd),则需要等待,执行收到新的第三类读请求,等待所产生的耗时会降低整体地读写效率。其中,第三类读请求可以为第三控制器所发出的读请求,第三控制器可以但不限定为中央处理器CPU、图像图像处理器GPU、直接内存访问控制器DMAC以及GigabitEthernet控制器GMAC中的任意一种。
为了克服该读写效率降低的问题,本申请实施例还提供了第四种可能的实现方式,请参考下文。
在执行第三类读请求的进程中,若超过预设时长未接收到新的第三类读请求,表示第三类读请求对应的命令单元310的命令队列cmdQ3(图中未示出)空闲(IDLE),第一子控制单元340基于本批次需要执行的第三类读请求的总数量和已执行数量确定是否还需要继续执行第三类读请求。若是,则基于已执行的第三类读请求的读地址信息生成预读请求;执行预读请求进行预取。
可选地,任务管理单元330还包括总计数寄存器、总数寄存器以及总比较寄存器。在进行配置时,可以将总数寄存器配置为本批次需要执行的第三类读请求的总数量,第二子控制单元350用于基于已执行完成的第三类读请求的数量更新总计数寄存器的值,总比较寄存器用于对总计数寄存器和总数寄存器中的值进行比较,将该比较结果提供给第一子控制单元340,第一子控制单元340用于在比较结果大于0时,确定还需要继续执行第三类读请求。
应理解,第三类读请求对应的读取地址往往是连续的,所以可以基于已执行的第三类读请求的读地址信息和/或配置寄存器组331中的配置信息生成预读请求,预读请求包括预读取地址信息。通过执行预读请求进行预取,完成数据预取(prefecth),从而可以减少等待的时长,提升整体的读写效率。
应理解,在预读取地址信息没有不属于存储器400的当前页时,即未page hit时,可以提前打开需要预读取地址信息中行地址信息对应的内容,从而在等待的过程中完成页切换。
请参考图2,图2为本申请实施例提供的gather类型的地址变化示意图。可选地,在gather类型或者其他地址回归方式(auto-reload)下,在一段连续的地址后,跳转一个固定的偏移地址(offset),再开始读,如果存储控制器300已预知下一笔即将跳转,就可以做到预先确定正确的地址进行预取prefetch。其中,Gather Increment是表示地址在抓取一些数据后跳转的offset偏移量;Gather Boundary是指每次抓取数据的边界。
如图2所示,Source Gather when SGR.SGI=0X1;
CTLx.SRC_TR_WIDTH=3’b010(32bit/8=4bytes);SGR.SGI=1;SGR.SGC=4;SGR.SGI*4=0X4(Gather Increment in bytes)。
可选地,在link script方式下,存储控制器300可以提前将链表信息从存储器400里面取出计算出下次地址并进行预取prefetch。
请参考图3,图3为本申请实施例提供的第二种的存储器数据读写调度装置的硬件模块示意图。如图3所示,存储控制器300还包括写单元370、第三子控制单元380以及写缓存单元390,第三子控制单元380分别与写单元370、写缓存单元390连接。
一种可能的场景为,在执行写请求时,写入控制器可以但不限定为中央处理器CPU、图像图像处理器GPU、直接内存访问控制器DMAC以及Gigabit Ethernet控制器GMAC中的任意一种。写入控制器将第一类写请求写入命令单元310,将第一类写请求对应的目标内容写入到写单元370,具体地,写入写队列writeQ1或写队列writeQ2。
第一类写请求包括写地址信息,具体地,写地址信息包括行地址信息和列地址信息。第一子控制单元340用于读取第一类写请求,并将第一类写请求传输给逻辑控制单元410。第三子控制单元380用于读取写单元370中的目标内容,并将目标内容写入写缓存单元390。逻辑控制单元410从写缓存单元390读取的目标内容,并将写请求的写地址信息中的行地址信息对应的数据内容搬移至锁存器420,将目标内容写入锁存器420中,并在当前页写入完成后,将锁存器420中的内容搬移至写地址信息中的行地址信息。然后,重复写入下一行。
在执行写请求的进程中,会被执行优先级更高的读请求(high priority readcmd)打断,在high priority read cmd执行完成后,再返回继续执行写请求,导致需要多次进行页切换和读/写(read/write)切换,增加了耗时,降低了整体读写效率。
为了克服该读写效率降低的问题,本申请实施例还提供了第五种可能的实现方式,请参考下文。
在执行第一类写请求的进程中,若接收到第四类读请求,第一子控制单元340或第三子控制单元380确定是否满足第三预设条件;其中,第三预设条件表示目标写请求的数量大于0且小于第二预设数值,目标写请求为写入对象属于存储器的当前页未执行的第一类写请求,第四类读请求的执行优先级高于第一类写请求的执行优先级。第四类读请求可以为任意一个控制器的读请求。若满足第三预设条件,则第三子控制单元380用于继续执行目标读请求,在目标写请求执行完成后,第一子控制单元340用于执行第四类读请求。若不满足第三预设条件,则第一子控制单元340用于直接执行第四类读请求。
下面对任务管理单元330可能的配置方式进行说明,具体如下。
第一种配置方式,以DMAC作为第一控制器为例,可以透过CPU在设定完DMAC后,随即设定DDRC的任务管理单元330,相同的目标读取数量(block size)和类型等,再启动DMAC,该方式不需要DMAC及其他IP或者BUS的改动。
第二种配置方式,如果DMAC或者其他IP有支援透过通信协议,以AXI为例,可以透过AXI用户信号(AXI USER signal),如 ARUSER来通知DDRC需要的目标读取数量,类型;DDRC可以在第一笔AXI command来的时候,把USER signal记录下来,存入该端口对应的寄存器中,用于后续判断。例子如下:
假设block size(以一定宽度) 占24位,标志为blk[23:0];
宽度width 3位,标志为width[2:0];
000表示byte,001表示16bit,010表示32bit,011表示64bit,100表示128bit等;
Gather/Link 占24位;
当类型是gather时标志为gat[11:0](表示读取多少笔再跳转)以及intval[11:0](表示跳转的offset);
当类型是Link script时,标志为link[23:0]表示linker scripter的地址;
可能的一种组合方式如下:
ARUSER[63:0]={intval[11:0],gat[11:0],width[2:0],type[2:0],blk[23:0]}。
第三种配置方式,如果DMAC或者其他IP可以透过一些user signal(不是透过AXI这种protocol传过来,而是qusi-static的信号),直接拉到DDRC的端口(port)上,来通知DDRC需要的block size,类型;DDRC可以在第一笔AXI command来的时候,把USER signal记录下来,存入这个port的register中,用于后续判断。Qusi-static的意思是在开始传输的时候,会是静态的,不会随着传输而变化。信号的内容可以跟第二种方式类似,也可以参考第一种方式,直接拉给DDRC的register,不一定要存起来,直接当变量使用也可以。
下面结合图4,详细说明可以提升整体读写效率的存储器数据读写调度方法,该方法包括如下步骤。
步骤S511,在执行第一类读请求的进程中,若接收到第二类读请求,确定是否满足第一预设条件。若是,则执行步骤S512,若否,则执行步骤S513。
其中,第一预设条件表示目标读请求的数量大于0且小于第一预设数值,目标读请求为读取对象属于存储器的当前页未执行的第一类读请求,第二类读请求的执行优先级高于第一类读请求的执行优先级。
步骤S512,继续执行目标读请求,在目标读请求执行完成后,执行第二类读请求。
步骤S513,直接执行第二类读请求。
步骤S511~步骤S513可以由上述的第一子控制单元340执行。
关于步骤S511,本申请实施例还提供了一种可能的实现方式,请参考下文,步骤S511的子步骤如下。
步骤S511A,第一子控制单元340获取目标读请求的数量。
具体地,第一子控制单元340获取比较寄存器334中的比较结果,即目标读请求的数量。
步骤S511B,第一子控制单元340确定目标读请求的数量是否大于0且小于第一预设数值。若是,则执行步骤S511C,若否,则执行步骤S511D。
步骤S511C,第一子控制单元340确定满足第一预设条件。
步骤S511D,第一子控制单元340确定不满足第一预设条件。
在一种可能的实现方式中,存储器数据读写调度方法还包括如下步骤。
步骤S521,当每次执行完成一笔第一类读请求时,更新已执行数量。
步骤S522,在存储器进行页切换后,更新当前页对应的目标读取数量和已执行数量。
步骤S521和步骤S522可以由上述的第一子控制单元340执行。
请参考图5,本申请实施例还提供了一种存储器数据读写调度方法,该方法包括如下步骤。
步骤S531,在执行第二类读请求的进程中,若接收到第一类读请求,确定是否满足第二预设条件。若是,则执行步骤S532,若否,则执行步骤S533。
其中,第二预设条件表示待执行的第一类请求的读取对象属于存储器的当前页,且待执行的第一类请求的数量小于第一预设数值。
步骤S532,在读取对象属于当前页的第二类读请求执行完成后,执行待执行的第一类请求。
在待执行的第一类请求执行完成后,执行步骤S533。
步骤S533,继续执行剩余的第二类读请求。
步骤S531~步骤S533可以由上述的第一子控制单元340执行。
关于步骤S531,本申请实施例还提供了一种可能的实现方式,请参考下文,步骤S531的子步骤如下。
步骤S531A,第一子控制单元340基于第一类读请求的读地址信息确定待执行的第一类请求的读取对象是否属于存储器的当前页。若是,则执行步骤S531B;如否,则执行步骤S531D。
步骤S531B,第一子控制单元340确定待执行的第一类请求的数量是否小于第一预设数值。若是,则执行步骤S531C;如否,则执行步骤S531D。
步骤S531C,第一子控制单元340确定满足第二预设条件。
步骤S531D,第一子控制单元340确定不满足第二预设条件。
可选地,本申请实施例还提供了一种存储器数据读写调度方法,该方法包括如下步骤。
步骤S541,在执行第三类读请求的进程中,若超过预设时长未接收到新的第三类读请求,基于本批次需要执行的第三类读请求的总数量和已执行数量确定是否还需要继续执行第三类读请求。若是,则执行步骤S542;若否,则结束。
步骤S542,基于已执行的第三类读请求的读地址信息生成预读请求。
步骤S543,执行预读请求进行预取。
步骤S541~步骤S543可以由上述的第一子控制单元340执行。
可选地,本申请实施例还提供了一种存储器数据读写调度方法,该方法包括如下步骤。
步骤S551,在执行第一类写请求的进程中,若接收到第四类读请求,确定是否满足第三预设条件。若是,则执行步骤S552,若否,则执行步骤S553。
其中,第三预设条件表示目标写请求的数量大于0且小于第二预设数值,目标写请求为写入对象属于存储器的当前页未执行的第一类写请求,第四类读请求的执行优先级高于第一类写请求的执行优先级。
步骤S552,若满足第三预设条件,则继续执行目标读请求,在目标写请求执行完成后,执行第四类读请求。
步骤S553,直接执行第四类读请求。
步骤S551~步骤S553可以由上述的第一子控制单元340执行。
综上所述,本申请实施例提供的存储器数据读写调度方法及装置综合考量切换耗时带来的效率损耗和执行优先级,在尽量降低对第二类读请求的执行优先级的影响的前提下,降低切换耗时带来的效率损耗。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其它的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
Claims (10)
1.一种存储器数据读写调度方法,其特征在于,应用于存储控制器,所述方法包括:
在执行第一类读请求的进程中,若接收到第二类读请求,确定是否满足第一预设条件;
其中,所述第一预设条件表示目标读请求的数量大于0且小于第一预设数值,所述目标读请求为读取对象属于存储器的当前页未执行的第一类读请求,所述第二类读请求的执行优先级高于所述第一类读请求的执行优先级;
若满足第一预设条件,则继续执行所述目标读请求,在所述目标读请求执行完成后,执行所述第二类读请求。
2.如权利要求1所述的存储器数据读写调度方法,其特征在于,所述确定是否满足第一预设条件的步骤,包括:
获取所述目标读请求的数量;
确定所述目标读请求的数量是否大于0且小于第一预设数值;
若是,则确定满足第一预设条件。
3.如权利要求2所述的存储器数据读写调度方法,其特征在于,所述方法还包括:
当每次执行完成一笔所述第一类读请求时,更新已执行数量;
在所述存储器进行页切换后,更新所述当前页对应的目标读取数量和所述已执行数量;
其中,所述已执行数量和所述目标读取数量的差值为所述目标读请求的数量。
4.如权利要求1所述的存储器数据读写调度方法,其特征在于,所述方法还包括:
在执行所述第二类读请求的进程中,若接收到所述第一类读请求,确定是否满足第二预设条件;
其中,所述第二预设条件表示待执行的第一类请求的读取对象属于所述存储器的当前页,且所述待执行的第一类请求的数量小于所述第一预设数值;
若满足所述第二预设条件,则在读取对象属于所述当前页的第二类读请求执行完成后,执行所述待执行的第一类请求;
在所述待执行的第一类请求执行完成后,继续执行剩余的所述第二类读请求。
5.如权利要求4所述的存储器数据读写调度方法,其特征在于,所述确定是否满足第二预设条件的步骤,包括:
基于所述第一类读请求的读地址信息确定待执行的第一类请求的读取对象是否属于所述存储器的当前页;
若属于,则确定所述待执行的第一类请求的数量是否小于所述第一预设数值;
若小于,则确定满足第二预设条件。
6.如权利要求1所述的存储器数据读写调度方法,其特征在于,所述方法还包括:
在执行第三类读请求的进程中,若超过预设时长未接收到新的第三类读请求,基于本批次需要执行的第三类读请求的总数量和已执行数量确定是否还需要继续执行第三类读请求;
若是,则基于已执行的第三类读请求的读地址信息生成预读请求;
执行所述预读请求进行预取。
7.如权利要求1所述的存储器数据读写调度方法,其特征在于,所述方法还包括:
在执行第一类写请求的进程中,若接收到第四类读请求,确定是否满足第三预设条件;
其中,所述第三预设条件表示目标写请求的数量大于0且小于第二预设数值,所述目标写请求为写入对象属于存储器的当前页未执行的第一类写请求,所述第四类读请求的执行优先级高于所述第一类写请求的执行优先级;
若满足第三预设条件,则继续执行所述目标读请求,在所述目标写请求执行完成后,执行所述第四类读请求。
8.一种存储器数据读写调度装置,其特征在于,所述存储器数据读写调度装置包括存储控制器,所述存储控制器包括命令单元和第一子控制单元;
在执行第一类读请求的进程中,若所述命令单元接收到第二类读请求,所述第一子控制单元用于确定是否满足第一预设条件;其中,所述第一预设条件表示目标读请求的数量大于0且小于第一预设数值,所述目标读请求为读取对象属于存储器的当前页未执行的第一类读请求,所述第二类读请求的执行优先级高于所述第一类读请求的执行优先级;若满足第一预设条件,则继续执行所述目标读请求,在所述目标读请求执行完成后,执行所述第二类读请求。
9.如权利要求8所述的存储器数据读写调度装置,其特征在于,所述第一子控制单元还用于在执行所述第二类读请求的进程中,若所述命令单元接收到所述第一类读请求,确定是否满足第二预设条件;其中,所述第二预设条件表示待执行的第一类请求的读取对象属于所述存储器的当前页,且所述待执行的第一类请求的数量小于所述第一预设数值;若满足所述第二预设条件,则在读取对象属于所述当前页的第二类读请求执行完成后,执行所述待执行的第一类请求;在所述待执行的第一类请求执行完成后,继续执行剩余的所述第二类读请求。
10.如权利要求8所述的存储器数据读写调度装置,其特征在于,所述第一子控制单元还用于在执行第三类读请求的进程中,若超过预设时长未接收到新的第三类读请求,基于本批次需要执行的第三类读请求的总数量和已执行数量确定是否还需要继续执行第三类读请求;若是,则基于已执行的第三类读请求的读地址信息生成预读请求;执行所述预读请求进行预取。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310465467.2A CN116185310B (zh) | 2023-04-27 | 2023-04-27 | 一种存储器数据读写调度方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310465467.2A CN116185310B (zh) | 2023-04-27 | 2023-04-27 | 一种存储器数据读写调度方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116185310A true CN116185310A (zh) | 2023-05-30 |
CN116185310B CN116185310B (zh) | 2023-07-14 |
Family
ID=86434850
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310465467.2A Active CN116185310B (zh) | 2023-04-27 | 2023-04-27 | 一种存储器数据读写调度方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116185310B (zh) |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101488117A (zh) * | 2009-02-27 | 2009-07-22 | 北京中星微电子有限公司 | 一种预充电数据访问控制装置和方法 |
CN101557419A (zh) * | 2009-05-06 | 2009-10-14 | 成都市华为赛门铁克科技有限公司 | 一种数据读写系统和数据管理方法 |
CN105373429A (zh) * | 2014-08-20 | 2016-03-02 | 腾讯科技(深圳)有限公司 | 任务调度方法、装置及系统 |
CN107733684A (zh) * | 2017-08-31 | 2018-02-23 | 北京宇航系统工程研究所 | 一种基于龙芯处理器的多控制器计算冗余集群 |
CN108733616A (zh) * | 2017-04-24 | 2018-11-02 | 爱思开海力士有限公司 | 包括多处理器的控制器及其操作方法 |
CN109298936A (zh) * | 2018-09-11 | 2019-02-01 | 华为技术有限公司 | 一种资源调度方法及装置 |
CN109388333A (zh) * | 2017-08-08 | 2019-02-26 | 北京忆恒创源科技有限公司 | 降低读命令处理延迟的方法与装置 |
CN109558348A (zh) * | 2018-12-19 | 2019-04-02 | 深圳开立生物医疗科技股份有限公司 | 数据搬移方法、装置及系统 |
CN109992535A (zh) * | 2017-12-29 | 2019-07-09 | 华为技术有限公司 | 一种存储控制方法、装置和系统 |
US20190361627A1 (en) * | 2018-05-24 | 2019-11-28 | SK Hynix Inc. | Memory device, control method thereof and recording medium |
CN113918216A (zh) * | 2020-07-10 | 2022-01-11 | 富泰华工业(深圳)有限公司 | 数据读/写处理方法、装置及计算机可读存储介质 |
CN114115717A (zh) * | 2020-08-31 | 2022-03-01 | 美光科技公司 | 多存储器系统中改进的存储器间移动 |
CN114902225A (zh) * | 2020-02-13 | 2022-08-12 | 英特尔公司 | 多租户环境中的密码计算 |
CN115858175A (zh) * | 2023-01-29 | 2023-03-28 | 北京卡普拉科技有限公司 | 异步i/o请求优先级的调度方法、装置、介质及控制设备 |
-
2023
- 2023-04-27 CN CN202310465467.2A patent/CN116185310B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101488117A (zh) * | 2009-02-27 | 2009-07-22 | 北京中星微电子有限公司 | 一种预充电数据访问控制装置和方法 |
CN101557419A (zh) * | 2009-05-06 | 2009-10-14 | 成都市华为赛门铁克科技有限公司 | 一种数据读写系统和数据管理方法 |
CN105373429A (zh) * | 2014-08-20 | 2016-03-02 | 腾讯科技(深圳)有限公司 | 任务调度方法、装置及系统 |
CN108733616A (zh) * | 2017-04-24 | 2018-11-02 | 爱思开海力士有限公司 | 包括多处理器的控制器及其操作方法 |
CN109388333A (zh) * | 2017-08-08 | 2019-02-26 | 北京忆恒创源科技有限公司 | 降低读命令处理延迟的方法与装置 |
CN107733684A (zh) * | 2017-08-31 | 2018-02-23 | 北京宇航系统工程研究所 | 一种基于龙芯处理器的多控制器计算冗余集群 |
CN109992535A (zh) * | 2017-12-29 | 2019-07-09 | 华为技术有限公司 | 一种存储控制方法、装置和系统 |
US20190361627A1 (en) * | 2018-05-24 | 2019-11-28 | SK Hynix Inc. | Memory device, control method thereof and recording medium |
CN109298936A (zh) * | 2018-09-11 | 2019-02-01 | 华为技术有限公司 | 一种资源调度方法及装置 |
CN109558348A (zh) * | 2018-12-19 | 2019-04-02 | 深圳开立生物医疗科技股份有限公司 | 数据搬移方法、装置及系统 |
CN114902225A (zh) * | 2020-02-13 | 2022-08-12 | 英特尔公司 | 多租户环境中的密码计算 |
CN113918216A (zh) * | 2020-07-10 | 2022-01-11 | 富泰华工业(深圳)有限公司 | 数据读/写处理方法、装置及计算机可读存储介质 |
CN114115717A (zh) * | 2020-08-31 | 2022-03-01 | 美光科技公司 | 多存储器系统中改进的存储器间移动 |
CN115858175A (zh) * | 2023-01-29 | 2023-03-28 | 北京卡普拉科技有限公司 | 异步i/o请求优先级的调度方法、装置、介质及控制设备 |
Also Published As
Publication number | Publication date |
---|---|
CN116185310B (zh) | 2023-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7844760B2 (en) | Schedule and data caching for wireless transmission | |
US8127081B2 (en) | Memory hub and access method having internal prefetch buffers | |
JP4517237B2 (ja) | 内部ロウキャッシングを有するメモリハブおよびアクセス方法。 | |
US6681302B2 (en) | Page open hint in transactions | |
KR101554294B1 (ko) | 추론적 프리챠지의 검출 | |
US20130318285A1 (en) | Flash memory controller | |
US20050114559A1 (en) | Method for efficiently processing DMA transactions | |
US11500797B2 (en) | Computer memory expansion device and method of operation | |
JP2007073052A (ja) | 集積回路から外部メモリへのアクセス | |
CN108139994B (zh) | 内存访问方法及内存控制器 | |
CN109669888A (zh) | 一种可配置且高效的嵌入式Nor-Flash控制器及控制方法 | |
KR20220116041A (ko) | 이기종 메모리 시스템용 시그널링 | |
US6412039B1 (en) | Cross-bank, cross-page data accessing and controlling system | |
US20080126600A1 (en) | Direct memory access device and methods | |
CN116893991B (zh) | 一种axi协议下的存储模块转换接口及其转换方法 | |
JP2023530642A (ja) | Dramコマンドストリーク管理 | |
JPH1196072A (ja) | メモリアクセス制御回路 | |
KR100282118B1 (ko) | 하이스루풋단일포트다중갱신유니트태그제어기 | |
CN116185310B (zh) | 一种存储器数据读写调度方法及装置 | |
WO2021231076A1 (en) | Efficient memory bus management | |
JP2004240616A (ja) | メモリコントローラ及びメモリアクセス制御方法 | |
US20010002481A1 (en) | Data access unit and method therefor | |
JPH09319657A (ja) | 命令読み込み用バッファを備えたプロセッサ | |
JP4804803B2 (ja) | メモリアクセス制御装置及びコンピュータプログラム | |
CN116627335A (zh) | 一种低功耗eFlash的读取加速系统 |
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 |