CN115248791A - 基于地址监测实现内存管理的硬件设备和方法 - Google Patents
基于地址监测实现内存管理的硬件设备和方法 Download PDFInfo
- Publication number
- CN115248791A CN115248791A CN202210887338.8A CN202210887338A CN115248791A CN 115248791 A CN115248791 A CN 115248791A CN 202210887338 A CN202210887338 A CN 202210887338A CN 115248791 A CN115248791 A CN 115248791A
- Authority
- CN
- China
- Prior art keywords
- descriptor
- descriptors
- memory
- data
- address
- 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
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/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
Abstract
本申请提供一种基于地址监测实现内存管理的硬件设备和方法,CPU将预接收数据在存储器中的预设存放地址或已存数据的存放地址及其他数据信息封装到描述符中,并通过系统总线将描述符存入存储器中。系统总线可监控并记录存储器中描述符的写地址信号。DMA控制器可监控系统总线上记录的描述符的写地址信号,并基于监控到的写地址信号确定描述符数量,将描述符数量更新至寄存器组中。处理模块可基于更新的描述符数量,从存储器中取相应的描述符,并基于描述符进行数据的写入或数据的读取。本方案DMA控制器可通过系统总线监控存储器的描述符写地址,以得知准确的描述符的分配,确保描述符已被分配好后再更新寄存器组,触发取描述符的操作。
Description
技术领域
本发明涉及内存管理技术领域,具体而言,涉及一种基于地址监测实现内存管理的硬件设备和方法。
背景技术
随着通信技术和计算机技术的发展,对于数据的高速和实时性处理越来越重要。利用DMA控制器(Direct Memory Access)技术可以让内存和外设之间数据批量传输的控制绕过CPU(Central Processing Unit),直接由DMA控制器来实现和完成,而CPU只在传输的开始时进行配置,传输结束时读取描述符进行相应处理就可以了。这大大分担了CPU的压力,可以让CPU去处理其他事务,提高了系统的效率。对于高速设备而言,这不仅降低了CPU的利用率,还大大提高了硬件设备的吞吐率。
按照实现方式,DMA控制器可以分为基于寄存器的DMA控制器和基于描述符的DMA控制器。两者都需要提供一些基本信息,如传输数据的源地址、目的地址、传输长度等来让传输启动。在基于描述符的DMA控制器工作机制中,现有技术中的处理方式如图1中所示。CPU首先需要通过系统总线向存储器中的数据存储空间配置数据,如果DMA控制器是为了接收数据,则此步骤省略;接着CPU需要根据需求将接收数据的预设存储器存放地址,或已存数据在存储器的存放地址,和其他一些信息(目的地址,传输长度等)按已定义格式封装到描述符中,通过系统总线存入存储器中的描述符存储空间;描述符预分配完毕之后,CPU通过配置总线接口对DMA控制器中的寄存器进行写操作,告知已分配的描述符数量,由此触发DMA控制器的数据搬运传输操作;DMA控制器开始从存储器通过系统总线取描述符,并根据描述符的指示进行数据传输,可以是从存储器搬运数据,传送到外设;也可以是从外设获取数据存到存储器中;传输完成后,DMA控制器需要将描述符通过系统总线回写至存储器中的描述符存储空间,并产生中断信号送给中断系统控制器(General Interrupt Controller,GIC);CPU通过中断,得知数据的搬运情况,后续空闲出来可以去做相应的处理。
现有技术中的处理方式,逻辑上CPU是先配置描述符,再通过IO接口写DMA控制器中的寄存器,触发DMA控制器去存储器的描述符存储空间取描述符。但实际上因为软件每一步的操作在CPU的完成顺序是不可控的,写存储器和写寄存器是不同的操作,导致写寄存器完成先于预分配描述符。这会导致DMA控制器收到写寄存器的触发,从存储器取描述符时,描述符并未准备好,或部分准备好。这样取回来的描述符在进入到DMA控制器以后,也会发现是不能用的,得重新再去相同地址取描述符。这浪费了时间,浪费了带宽。
发明内容
本发明的目的包括,例如,提供了一种基于地址监测实现内存管理的硬件设备和方法,其能够节省总线带宽且提高系统效率。
本发明的实施例可以这样实现:
第一方面,本发明提供一种基于地址监测实现内存管理的硬件设备,包括CPU、DMA控制器、存储器以及系统总线,所述CPU、DMA控制器和存储器均连接在所述系统总线,所述DMA控制器包括寄存器组、监视模块和处理模块;
所述CPU用于将预接收数据在所述存储器的数据存储空间中的预设存放地址或所述存储器的数据存储空间中的已存数据的存放地址及其他数据信息封装到描述符中,并通过所述系统总线将所述描述符存入所述存储器的描述符存储空间中;
所述系统总线用于监控并记录所述存储器中描述符的写地址信号;
所述监视模块用于监控所述系统总线上记录的描述符的写地址信号,并基于监控到的写地址信号确定描述符数量,并将描述符数量更新至所述寄存器组中;
所述处理模块用于基于所述寄存器组中更新的描述符数量,从所述存储器中取相应的描述符,并基于取得的描述符将从外设设备接收到的数据写入到存储器中或从存储器中读取数据发送至外设设备。
在可选的实施方式中,所述DMA控制器具有多个通道,所述存储器中分配有与各个通道对应的基地址,所述存储器中的描述符的首次轮次的写入从各个基地址开始存储,并根据每次轮次的存储结束地址更新下一轮次的写入的开始地址,单次数据传输事件对应的描述符提取由所述DMA控制器的一个通道执行。
在可选的实施方式中,所述监视模块用于:
根据预设的最大传输数据量以及当前提取描述符的通道在所述存储器中对应的写入开始地址得到目标地址信息;
监控所述系统总线上记录的描述符的写地址信号并判断是否与所述目标地址信息匹配,根据判断结果确定描述符数量。
在可选的实施方式中,所述监视模块用于:
在监测周期内若监控到所述系统总线上记录的描述符的写地址信号未与所述目标地址信息匹配,则根据当前轮次的写入开始地址、写地址信号以及单个描述符大小,确定描述符数量;
在监测周期内若监控到所述系统总线上记录的描述符的写地址信号与所述目标地址信息匹配,则确定描述符数量为所述预设的最大传输数据量与单个描述符大小的商值。
在可选的实施方式中,所述处理模块还用于,在当前轮次提取的描述符对应的数据写入或发送完毕后,将提取的描述符通过所述系统总线回写至所述存储器的描述符存储空间中;
所述寄存器组还用于,将当前轮次更新的描述符数量进行清零。
在可选的实施方式中,所述其他数据信息包括目的地址、传输长度。
在可选的实施方式中,所述CPU还用于,在当前轮次提取的描述符对应的数据写入或发送完毕后,根据所述存储器的描述符存储空间内回写的描述符执行数据或空间处理。
第二方面,本发明提供一种基于地址监测实现内存管理的方法,应用于上述任意一项所述的基于地址监测实现内存管理的硬件设备,所述硬件设备包括CPU、DMA控制器、存储器以及系统总线,所述CPU、DMA控制器和存储器均连接在所述系统总线,所述DMA控制器包括寄存器组、监视模块和处理模块,所述方法包括:
所述CPU将预接收数据在所述存储器的数据存储空间中的预设存放地址或所述存储器的数据存储空间中的已存数据的存放地址及其他数据信息封装到描述符中,并通过所述系统总线将所述描述符存入所述存储器的描述符存储空间中;
所述系统总线监控并记录所述存储器中描述符的写地址信号;
所述监视模块监控所述系统总线上记录的描述符的写地址信号,并基于监控到的写地址信号确定描述符数量,并将描述符数量更新至所述寄存器组中;
所述处理模块基于所述寄存器组中更新的描述符数量,从所述存储器中取相应的描述符,并基于取得的描述符将从外设设备接收到的数据写入到存储器中或从存储器中读取数据发送至外设设备。
在可选的实施方式中,所述监视模块监控所述系统总线上记录的描述符的写地址信号,并基于监控到的写地址信号确定描述符数量的步骤,包括:
根据预设的最大传输数据量以及当前提取描述符的通道在所述存储器中对应的写入开始地址得到目标地址信息;
监控所述系统总线上记录的描述符的写地址信号并判断是否与所述目标地址信息匹配,根据判断结果确定描述符数量。
在可选的实施方式中,所述监控所述系统总线上记录的描述符的写地址信号并判断是否与所述目标地址信息匹配,根据判断结果确定描述符数量的步骤,包括:
在监测周期内若监控到所述系统总线上记录的描述符的写地址信号未与所述目标地址信息匹配,则根据当前轮次的写入开始地址、写地址信号以及单个描述符大小,确定描述符数量;
在监测周期内若监控到所述系统总线上记录的描述符的写地址信号与所述目标地址信息匹配,则确定描述符数量为所述预设的最大传输数据量与单个描述符大小的商值。
本发明实施例的有益效果包括,例如:
本申请提供一种基于地址监测实现内存管理的硬件设备和方法,CPU用于将预接收数据在存储器中的预设存放地址或已存数据的存放地址及其他数据信息封装到描述符中,并通过系统总线将描述符存入存储器中。系统总线可监控并记录存储器中描述符的写地址信号。DMA控制器的监视模块可监控系统总线上记录的描述符的写地址信号,并基于监控到的写地址信号确定描述符数量,将描述符数量更新至寄存器组中。处理模块可基于更新的描述符数量,从存储器中取相应的描述符,并基于描述符进行数据的写入或数据的读取。
本方案DMA控制器可通过系统总线监控存储器的描述符写地址,以得知准确的描述符的分配,确保描述符已被分配好后再更新寄存器组,触发取描述符的操作。避免了CPU在配置过程中可能发生的描述符配置和寄存器组配置的不同步而导致出错的可能,节省了总线带宽,提高系统效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为现有技术中硬件设备的结构示意图;
图2为本申请实施例提供的基于地址监测实现内存管理的硬件设备的结构示意图;
图3为本申请实施例提供的基于地址监测实现内存管理的方法的流程图;
图4为图3中步骤S103包含的子步骤的流程图。
具体实施方式
由前述可知,现有技术中由于CPU在配置描述符与写寄存器的操作的完成顺序不可控,导致写寄存器可能先于预分配描述符完成,从而导致DMA控制器收到写寄存器的触发,从存储器取描述符后可能出现不可用的情况,而要重新再去相同地址取描述符,从而浪费时间和带宽。
针对上述所存在的问题,在现有技术中也提出了一些解决方案。例如,第一种解决方案是,对于寄存器写值,可以触发DMA从DDR去取描述符,DMA收到描述符后会进行有效性检查。例如一次突发传输取了n个描述符,如果第i个(i∈[1,n])描述符出现了无效的情况,则这次突发传输从开始到第i-1个描述符是有效的,而从第i个描述符到第n个描述符都是无效的。等到这次突发传输的最后一个描述符接收完毕,DMA可以知道此次突发传输中有效的描述符的个数。之后DMA会再次取描述符,但是起始地址会在上次的基础上偏移此次突发传输中有效描述符所占的空间。以此类推,最终把预分配的描述符都取回来,且最终都是可用的。
这种方案优点是最终能取回可用的预分配的描述符,但是缺点也很明显,需要分多次才能取完,且一个突发传输中最后一个描述符取回之前,是不允许再次发起取请求的。如果未发生取回的描述符无效的情况,则此机制由于不能在上次取请求的数据全部返回前再次发出取请求,会大大降低取描述符的效率,最终影响DMA的性能。
此外,第二种解决方案是,寄存器被写值,触发DMA从DDR中取描述符,在DMA收到最后一个描述符前,就可以继续发起取描述符的请求。第二次的取请求的起始地址,是在第一次的基础上偏移第一次请求数据所占的空间,第三次、第四次同理。具体在有请求未完成时继续发出请求的最大数量跟系统总线的相关设置有关系,具体不做限制。出现第一个无效描述符,此时要查看还有多少个请求未完成,从这个无效的描述符到剩余未完成的请求的全部描述符,都认为是无效的。此时依然可以继续发出取描述符的请求,但是起始地址要在上一次的基础上偏移当前突发传输中有效描述符所占空间。
此方案优点是能取回预分配的有效描述符,且如果没取到无效描述符的时候,由于可以不用等待上次取请求的数据返回就能发起新的取请求,效率也得到了保证。但缺点是如果一旦出现无效描述符,中间发起的若干次取请求都算作无效,效率依然较低。
由此可见,现有技术中的解决方案均存在诸多缺点,均是在已经取到了无效描述符这个事件发生后,再通过技术手段,记录首个无效描述符的地址,在后续操作中重新从此地址开始取描述符,保证从每个描述符地址上最终都能取到有效的描述符。但这是以牺牲效率,总线部分带宽被无效数据占用为代价的,没有从根源上去解决会取到无效描述符的问题。
基于此,本申请提供一种基于地址监测实现内存管理的方案,DMA控制器可通过系统总线监控存储器的描述符写地址,以得到准确的描述符的分配,确保描述符已被分配好后再更新寄存器组,触发取描述符的操作。避免了CPU在配置过程中可能发生的描述符配置和数据配置不同步而导致出错的可能,且节省了总线带宽,提高了系统效率。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
需要说明的是,在不冲突的情况下,本发明的实施例中的特征可以相互结合。
请参阅图2,为本申请实施例提供的基于地址监测实现内存管理的硬件设备,该硬件设备可以是如计算机设备、系统芯片等设备。
硬件设备包括CPU、DMA控制器、存储器以及系统总线,CPU、DMA控制器和存储器均连接在系统总线,DMA控制器包括寄存器组、监视模块和处理模块。而存储器中具有数据存储空间和描述符存储空间。数据存储空间用于存放实际的数据,而描述符存储空间用于存放数据的描述符,例如数据的长度、数据写入地址等。
本实施例中,CPU用于将预接收数据在存储器的数据存储空间中的预设存放地址或存储器的数据存储空间中的已存数据的存放地址及其他数据信息封装到描述符中,并通过系统总线将描述符存入存储器的描述符存储空间中。
例如,在进行数据接收时,CPU可根据预接收数据的如数据长度等信息,并结合当前存储器的数据存储空间中可进行数据写入的地址信息等,确定预接收数据的预设存放地址。在确定预设存放地址后,CPU可将预设存放地址以及其他数据信息,如目的地址、传输长度等按照设定格式封装到描述符中,并通过系统总线将预接收数据的描述符存入到存储器的描述符存储空间中。
此外,若进行数据发送,则CPU首先可通过系统总线向存储器的数据存储空间中配置并存入数据。CPU可将存储器中已存数据的存放地址和其他数据信息,如目的地址、传输长度等按设定格式封装到描述符中,并通过系统总线将已存数据,即待发送数据的描述符存入到存储器的描述符存储空间中。
在CPU通过系统总线往存储器中存入描述符的过程中,系统总线可监控并记录存储器中描述符的写地址信号。描述符的写地址信号可以表明描述符存放在寄存器中的位置是否被成功写入。
而DMA控制器中的监视模块可用于监控系统总线上记录的描述符的写地址信号,并基于监控到的写地址信号确定描述符数量。例如,在获得描述符的大小、起始写地址以及写地址信号等的情况下,可以确定当前已明确写入到存储器中的描述符的数量。监视模块可将确定的描述符数量更新至DMA的寄存器组中,以触发取描述符的操作。
DMA控制器中的处理模块可用于基于寄存器组中更新的描述符数量,从存储器中取相应的描述符,并基于取得的描述符将从外设设备接收到的数据写入到存储器中或从存储器中读取数据发送至外设设备。
此时,寄存器组中更新的描述符数量是当前已明确成功写入至寄存器中的描述符的数量,也即,为有效的描述符。
在进行数据接收时,则可以根据预接收数据相关的有效的描述符,从外设设备将接收到的数据写入到存储器中。
而在进行数据发送时,则可以根据存储器中已存数据相关的有效的描述符,从存储器中读取待发送数据以发送至外设设备。
本实施例中,DMA的寄存器组中更新的描述符数量是通过系统总线监控CPU向寄存器中存入的描述符的写地址信号得到的,基于该写地址信号可以明确描述符存放在寄存器中的位置是否成功被写。通过这种硬件主动去更新的方式,当寄存器组被更新时,可以确保寄存器中描述符对应地址的值一定是被更新过的。DMA此时再去寄存器中取描述符,取回的描述符是有效、可用的。这种方式提高了预取描述符的效率,合理利用了总线的带宽。
本方案有效解决了CPU配置寄存器和配置描述符不同步而导致的取回的描述符不可用的问题。减少了无效数据对带宽的占用,让有限的带宽更多的用于系统中其他有效数据的传输,提高了系统整体的处理能力。精确识别CPU对描述符的分配过程,保障描述符在被读取前一定是有效的,提高了DMA从寄存器中取描述符的效率。
本实施例中,DMA控制器具有多个通道,而存储器中分配有与各个通道对应的基地址,此处所述的基地址为进行描述符写入的基地址。
存储器中描述符的首次轮次的写入即从各个基地址开始存储,并根据每次轮次的存储结束地址更新下一轮次的写入的开始地址。而单次数据传输事件对应的描述符提取由DMA控制器的一个通道执行。
也即,DMA控制器的多个通道中,每个通道按照顺序处理描述符的提取。而在一次数据传输事件对应的描述符的提取中仅由单个通道来执行。
本实施例中,可以根据所需的更新寄存器组的频率,相应地设置一预设的最大传输数据量,该预设的最大传输数据量指的是一次突发传输的描述符的最大长度。在基于该预设的最大传输数据量进行寄存器中描述符写地址信号的监控,以及寄存器组的更新时,可以通过以下方式实现。
监视模块用于根据预设的最大传输数据量以及当前提取描述符的通道在寄存器中对应的写入开始地址得到目标地址信息,监控系统总线上记录的描述符的写地址信号并判断是否与目标地址信息匹配,根据判断结果确定描述符数量。
本实施例中,目标地址信息可以基于预设的最大传输数据量和写入开始地址得到。例如,若当前轮次的写入开始地址为基地址baseDescAddr,预设的最大传输数据量为burstSize Byte。则目标地址为baseDescAddr+burstSize。
此外,若当前轮次的写入开始地址并非是基地址,则目标地址需利用当前轮次的写入开始地址加上预设的最大传输数据量得到。
监视模块可以通过监控系统总线上记录的描述符的写地址信号是否与目标地址信息匹配,从而来判断存储器中已写入的描述符的数据量是否达到预设的最大传输数据量。
具体地,本实施例中,监视模块可用于在监测周期内若监控到系统总线上记录的描述符的写地址信号未与目标地址信息匹配,则根据当前轮次的写入开始地址、写地址信号以及单个描述符大小,确定描述符数量。
在该种情形下,即在监测周期内一直未监测到描述符的写地址信号与目标地址信息匹配,则会利用超时逻辑结束此轮监测。由于超时而结束此轮监测,则存储器中写入的有效的描述符的数量是小于预设的最大传输数据量对应的描述符数量的。
具体地,可以利用当前的监测到的写地址信号减去写入开始地址,并除以单个描述符大小,得到当前存储器中有效的描述符的数量,并在得到的描述符数量更新到寄存器组中。以便于DMA可以基于该描述符数量相应地于存储器中提取该数量对应的有效的描述符。
此外,在另一种可能的情形下,监视模块可用于在监测周期内若监控到系统总线上记录的描述符的写地址信号与目标地,目标地址信息匹配,则确定描述符数量为预设的最大传输数据量与单个描述符大小的商值。
在此种情形下,DMA一直在系统总线监测描述符的写地址信号,如果写地址信号与目标地址信息未匹配,且未到达监测周期结束点,会继续监控,不断统计此轮新分配的描述符数量。如果监测到写地址信号与目标地址信息匹配,DMA会主动更新寄存器组。在地址匹配到而去更新寄存器组的情形下,更新到寄存器组中的描述符的数量是与预设的最大传输数据量对应的数量一致的。
具体地,若预设的最大传输数据量为burstSize Byte,单个描述符大小为descSize Byte,则当前轮次更新的描述符的数量为burstSize/descSize。
本实施例中,通过以上方式,通过设置监测周期来进行存储器中描述符的监测。并且,采用将描述符的写入地址信号和目标地址信息相匹配的方式,可以直接从地址信息角度来准确判断已写入的有效的描述符的数量,进而更新寄存器组。DMA中处理模块即可基于更新的描述符数量从寄存器中提取相应的描述符。
在上述基础上,本实施例中,DMA控制器中处理模块还用于在当前轮次提取的描述符对应的数据写入或发送完毕后,将提取的描述符通过系统总线回写至存储器的描述符存储空间中。
而寄存器组还用于将当前轮次更新的描述符数量进行清零。在当前轮次的描述符数量清零后,将再次进入上述监测存储器中描述符的写地址信号的步骤中,并在上一轮次的基础上推算出新一轮次的目标地址信号。再根据系统总线监控到的描述符的写地址信号统计新一轮次分配的描述符,为下一次更新寄存器组作好准备。
具体地,本实施例中,在处理模块基于寄存器组中更新的描述符数量从存储器中读取数据或者是将数据写入存储器中时,在一个描述符对应的数据读取或写入成功后,则可将更新数据对应的描述符并将该描述符回写至存储器的描述符存储空间中,同时更新寄存器组,以减去这次回写的描述符的数量。而在当前轮次更新的描述符数量对应的数据全部读取或写入成功后,则寄存器组中当前轮次更新的描述符数量清零。
在上述基础上,CPU还用于在当前轮次提取的描述符对应的数据写入或发送完毕后,根据存储器的描述符存储空间内回写的描述符执行数据或空间处理。
例如,在描述符对应的数据全部写入完毕后,CPU则可读取写入的数据执行数据再编辑等处理。而在描述符对应的数据全部发送完毕后,CPU可以将数据原本占用的存储单元进行释放处理等。
本实施例所提供的基于地址监测实现内存管理的方案,CPU可将预接收数据在存储器中的预设存放地址或已存数据的存放地址及其他数据信息封装到描述符中,并通过系统总线将描述符存入存储器中。系统总线可监控并记录存储器中描述符的写地址信号。DMA控制器的监视模块可监控系统总线上记录的描述符的写地址信号,并基于监控到的写地址信号确定描述符数量,将描述符数量更新至寄存器组中。处理模块可基于更新的描述符数量,从存储器中取相应的描述符,并基于描述符进行数据的写入或数据的读取。
本方案DMA控制器可通过系统总线监控存储器的描述符写地址,以得知准确的描述符的分配,确保描述符已被分配好后再更新寄存器组,触发去描述符的操作。避免了CPU在配置过程中可能发生的描述符配置和数据配置的不同步而导致出错的可能,节省了总线带宽,提高系统效率。
请参阅图3,为本申请实施例提供的基于地址监测实现内存管理的方法,该方法应用于上述任一实现方式中的硬件设备。该方法包括以下步骤:
S101,所述CPU将预接收数据在所述存储器的数据存储空间中的预设存放地址或所述存储器的数据存储空间中的已存数据的存放地址及其他数据信息封装到描述符中,并通过所述系统总线将所述描述符存入所述存储器的描述符存储空间中。
S102,所述系统总线监控并记录所述存储器中描述符的写地址信号。
S103,所述监视模块监控所述系统总线上记录的描述符的写地址信号,并基于监控到的写地址信号确定描述符数量,并将描述符数量更新至所述寄存器组中。
S104,所述处理模块基于所述寄存器组中更新的描述符数量,从所述存储器中取相应的描述符,并基于取得的描述符将从外设设备接收到的数据写入到存储器中或从存储器中读取数据发送至外设设备。
本实施例所提供的基于地址监测实现内存管理的方法,通过系统总线监控寄存器中描述符写地址,从而DMA控制器可准确获得描述符的分配情况,在确保描述符已被分配好后再更新寄存器组,并触发取描述符的操作。可以避免CPU在配置过程中可能发生的描述符配置和寄存器组配置不同步而导致出错的可能,节省了总线带宽,提高了系统效率。
具体地,本实施例所提供的方法的相关细节可参见上述实施例的相关描述,本实施例在此不作赘述。
在一种可能的实现上述中,请参阅图4,上述步骤S103中监视模块监控系统总线上记录的描述符的写地址信号,并基于监控到的写地址信号确定描述符数量的步骤可以通过以下方式实现:
S1031,根据预设的最大传输数据量以及当前提取描述符的通道在所述存储器中对应的写入开始地址得到目标地址信息;
S1032,监控所述系统总线上记录的描述符的写地址信号并判断是否与所述目标地址信息匹配,根据判断结果确定描述符数量。
在一种可能的实现上述中,上述根据判断结果确定描述符数量的步骤可以通过以下方式实现:
在监测周期内若监控到所述系统总线上记录的描述符的写地址信号未与所述目标地址信息匹配,则根据当前轮次的写入开始地址、写地址信号以及单个描述符大小,确定描述符数量;
在监测周期内若监控到所述系统总线上记录的描述符的写地址信号与所述目标地址信息匹配,则确定描述符数量为所述预设的最大传输数据量与单个描述符大小的商值。
综上所述,本申请实施例提供的基于地址监测实现内存管理的硬件设备和方法,CPU用于将预接收数据在存储器中的预设存放地址或已存数据的存放地址及其他数据信息封装到描述符中,并通过系统总线将描述符存入存储器中。系统总线可监控并记录存储器中描述符的写地址信号。DMA控制器的监视模块可监控系统总线上记录的描述符的写地址信号,并基于监控到的写地址信号确定描述符数量,将描述符数量更新至寄存器组中。处理模块可基于更新的描述符数量,从存储器中取相应的描述符,并基于描述符进行数据的写入或数据的读取。
本方案DMA控制器可通过系统总线监控存储器的描述符写地址,以得知准确的描述符的分配,确保描述符已被分配好后再更新寄存器组,触发取描述符的操作。避免了CPU在配置过程中可能发生的描述符配置和寄存器组配置的不同步而导致出错的可能,节省了总线带宽,提高系统效率。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种基于地址监测实现内存管理的硬件设备,其特征在于,包括CPU、DMA控制器、存储器以及系统总线,所述CPU、DMA控制器和存储器均连接在所述系统总线,所述DMA控制器包括寄存器组、监视模块和处理模块;
所述CPU用于将预接收数据在所述存储器的数据存储空间中的预设存放地址或所述存储器的数据存储空间中的已存数据的存放地址及其他数据信息封装到描述符中,并通过所述系统总线将所述描述符存入所述存储器的描述符存储空间中;
所述系统总线用于监控并记录所述存储器中描述符的写地址信号;
所述监视模块用于监控所述系统总线上记录的描述符的写地址信号,并基于监控到的写地址信号确定描述符数量,并将描述符数量更新至所述寄存器组中;
所述处理模块用于基于所述寄存器组中更新的描述符数量,从所述存储器中取相应的描述符,并基于取得的描述符将从外设设备接收到的数据写入到存储器中或从存储器中读取数据发送至外设设备。
2.根据权利要求1所述的基于地址监测实现内存管理的硬件设备,其特征在于,所述DMA控制器具有多个通道,所述存储器中分配有与各个通道对应的基地址,所述存储器中的描述符的首次轮次的写入从各个基地址开始存储,并根据每次轮次的存储结束地址更新下一轮次的写入的开始地址,单次数据传输事件对应的描述符提取由所述DMA控制器的一个通道执行。
3.根据权利要求2所述的基于地址监测实现内存管理的硬件设备,其特征在于,所述监视模块用于:
根据预设的最大传输数据量以及当前提取描述符的通道在所述存储器中对应的写入开始地址得到目标地址信息;
监控所述系统总线上记录的描述符的写地址信号并判断是否与所述目标地址信息匹配,根据判断结果确定描述符数量。
4.根据权利要求3所述的基于地址监测实现内存管理的硬件设备,其特征在于,所述监视模块用于:
在监测周期内若监控到所述系统总线上记录的描述符的写地址信号未与所述目标地址信息匹配,则根据当前轮次的写入开始地址、写地址信号以及单个描述符大小,确定描述符数量;
在监测周期内若监控到所述系统总线上记录的描述符的写地址信号与所述目标地址信息匹配,则确定描述符数量为所述预设的最大传输数据量与单个描述符大小的商值。
5.根据权利要求1所述的基于地址监测实现内存管理的硬件设备,其特征在于,所述处理模块还用于,在当前轮次提取的描述符对应的数据写入或发送完毕后,将提取的描述符通过所述系统总线回写至所述存储器的描述符存储空间中;
所述寄存器组还用于,将当前轮次更新的描述符数量进行清零。
6.根据权利要求1所述的基于地址监测实现内存管理的硬件设备,其特征在于,所述其他数据信息包括目的地址、传输长度。
7.根据权利要求1所述的基于地址监测实现内存管理的硬件设备,其特征在于,所述CPU还用于,在当前轮次提取的描述符对应的数据写入或发送完毕后,根据所述存储器的描述符存储空间内回写的描述符执行数据或空间处理。
8.一种基于地址监测实现内存管理的方法,其特征在于,应用于上述权利要求1-7任意一项所述的基于地址监测实现内存管理的硬件设备,所述硬件设备包括CPU、DMA控制器、存储器以及系统总线,所述CPU、DMA控制器和存储器均连接在所述系统总线,所述DMA控制器包括寄存器组、监视模块和处理模块,所述方法包括:
所述CPU将预接收数据在所述存储器的数据存储空间中的预设存放地址或所述存储器的数据存储空间中的已存数据的存放地址及其他数据信息封装到描述符中,并通过所述系统总线将所述描述符存入所述存储器的描述符存储空间中;
所述系统总线监控并记录所述存储器中描述符的写地址信号;
所述监视模块监控所述系统总线上记录的描述符的写地址信号,并基于监控到的写地址信号确定描述符数量,并将描述符数量更新至所述寄存器组中;
所述处理模块基于所述寄存器组中更新的描述符数量,从所述存储器中取相应的描述符,并基于取得的描述符将从外设设备接收到的数据写入到存储器中或从存储器中读取数据发送至外设设备。
9.根据权利要求8所述的基于地址监测实现内存管理的方法,其特征在于,所述监视模块监控所述系统总线上记录的描述符的写地址信号,并基于监控到的写地址信号确定描述符数量的步骤,包括:
根据预设的最大传输数据量以及当前提取描述符的通道在所述存储器中对应的写入开始地址得到目标地址信息;
监控所述系统总线上记录的描述符的写地址信号并判断是否与所述目标地址信息匹配,根据判断结果确定描述符数量。
10.根据权利要求9所述的基于地址监测实现内存管理的方法,其特征在于,所述监控所述系统总线上记录的描述符的写地址信号并判断是否与所述目标地址信息匹配,根据判断结果确定描述符数量的步骤,包括:
在监测周期内若监控到所述系统总线上记录的描述符的写地址信号未与所述目标地址信息匹配,则根据当前轮次的写入开始地址、写地址信号以及单个描述符大小,确定描述符数量;
在监测周期内若监控到所述系统总线上记录的描述符的写地址信号与所述目标地址信息匹配,则确定描述符数量为所述预设的最大传输数据量与单个描述符大小的商值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210887338.8A CN115248791A (zh) | 2022-07-26 | 2022-07-26 | 基于地址监测实现内存管理的硬件设备和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210887338.8A CN115248791A (zh) | 2022-07-26 | 2022-07-26 | 基于地址监测实现内存管理的硬件设备和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115248791A true CN115248791A (zh) | 2022-10-28 |
Family
ID=83700231
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210887338.8A Pending CN115248791A (zh) | 2022-07-26 | 2022-07-26 | 基于地址监测实现内存管理的硬件设备和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115248791A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115422101A (zh) * | 2022-11-04 | 2022-12-02 | 山东云海国创云计算装备产业创新中心有限公司 | 一种dma驱动系统、方法、设备及可读存储介质 |
CN116795442A (zh) * | 2023-08-22 | 2023-09-22 | 北京象帝先计算技术有限公司 | 一种寄存器配置方法、dma控制器及图形处理系统 |
CN117312201A (zh) * | 2023-11-29 | 2023-12-29 | 苏州元脑智能科技有限公司 | 一种数据传输方法、装置及加速器设备、主机和存储介质 |
-
2022
- 2022-07-26 CN CN202210887338.8A patent/CN115248791A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115422101A (zh) * | 2022-11-04 | 2022-12-02 | 山东云海国创云计算装备产业创新中心有限公司 | 一种dma驱动系统、方法、设备及可读存储介质 |
CN116795442A (zh) * | 2023-08-22 | 2023-09-22 | 北京象帝先计算技术有限公司 | 一种寄存器配置方法、dma控制器及图形处理系统 |
CN116795442B (zh) * | 2023-08-22 | 2023-12-19 | 北京象帝先计算技术有限公司 | 一种寄存器配置方法、dma控制器及图形处理系统 |
CN117312201A (zh) * | 2023-11-29 | 2023-12-29 | 苏州元脑智能科技有限公司 | 一种数据传输方法、装置及加速器设备、主机和存储介质 |
CN117312201B (zh) * | 2023-11-29 | 2024-02-13 | 苏州元脑智能科技有限公司 | 一种数据传输方法、装置及加速器设备、主机和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115248791A (zh) | 基于地址监测实现内存管理的硬件设备和方法 | |
US6772237B2 (en) | Host controller interface descriptor fetching unit | |
CN100481043C (zh) | 用于处理输入/输出命令的方法、系统和程序 | |
US7234004B2 (en) | Method, apparatus and program product for low latency I/O adapter queuing in a computer system | |
CN111290973B (zh) | 数据写入方法、装置、计算机设备及存储介质 | |
US10776042B2 (en) | Methods for garbage collection and apparatuses using the same | |
CN113468097B (zh) | 基于片上系统的数据交换方法 | |
US9594506B2 (en) | Data queue having an unlimited depth | |
US6732249B1 (en) | Host computer virtual memory within a network interface adapter | |
CN111538694B (zh) | 一种用于网络接口支持多链接和重传的数据缓存方法 | |
CN112214158A (zh) | 主机输出输入命令的执行装置及方法及计算机可读取存储介质 | |
US20080052423A1 (en) | Storage controller and methods for using the same | |
CN109213423B (zh) | 基于地址屏障无锁处理并发io命令 | |
EP1970815A1 (en) | Data transfering apparatus and information processing system | |
CN105681222A (zh) | 一种数据接收缓存方法、装置及通信系统 | |
CN1705929B (zh) | 用于将数据返回给通过总线接收的读请求的方法和系统 | |
CN116841458A (zh) | 存储器读写控制方法、系统、终端及存储介质 | |
US4388687A (en) | Memory unit | |
CN112732176B (zh) | 基于fpga的ssd访问方法及装置、存储系统及存储介质 | |
US20180196750A1 (en) | Aggregating messages for reducing cache invalidation rate | |
CN107729140B (zh) | 一种并行实现多个eMMC主机接口命令排队功能的装置及方法 | |
CN116185649A (zh) | 存储控制方法、存储控制器、存储芯片、网卡、可读介质 | |
CN109213424B (zh) | 并发io命令的无锁处理方法 | |
EA039007B1 (ru) | Устройство прямого отображения адресов данных, располагающихся во внешнем последовательном пзу, в адресное пространство микропроцессорного ядра, компьютерная система и способ передачи данных | |
US4979103A (en) | Data processing method and apparatus having plural bus interfaces |
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 |