直接存储器存取控制器及直接存储器存取的控制方法

文档序号:6582743阅读:285来源:国知局
专利名称:直接存储器存取控制器及直接存储器存取的控制方法
技术领域
本发明涉及一种直接存储器存取的控制方法以及一种存取控制器,尤指一种在直接存储器存取模式下检测所欲转移数据的地址的方法以及一种直接存储器存取控制器。
请参见

图1(a),其是使用直接存储器存取(DMA)传输模式的计算机结构示意图,当操作系统(Operating System)欲将一档案传送至网络卡(Network Interface Card)时,需先由微处理器10将该档案以封包的形式通过芯片组13传送至主存储器11暂存,之后微处理器10则返回继续执行其未完成的任务,而网络卡12内的DMA控制器121则在接收一档案数据的第一启始地址后,直接通过芯片组13至主存储器11中读取组成该档案的数据,并将数据存储至DMA控制器121中的先进先出(FIFO)缓冲器122。
请参见图1(b),其是主存储器内存储数据封包的格式示意图,主存储器11内存储数据封包可分为两个部分,第一部份为描述符(Descriptor),而第二部分则是用来存放封包数据的缓冲区(DataBuffer),至于第一部份的描述符(Descriptor)主要用来记录1.第二部分数据缓冲区的存放地址;2.数据长度(Length);3.数据状态(Status);4.下一个封包的描述符地址。
DMA控制器121的接收方式为先至主存储器11中读取第一封包的描述符(Descriptor)后,根据存放地址至缓冲区内将第一封包数据取走并存储至DMA控制器121内的先进先出(FIFO)缓冲器122,且网络卡会产生一响应信号至封包的描述符中将封包状态进行改写,并根据第一封包的描述符中所记录的第二封包的描述符地址来接收第二封包的数据,由网络卡12接收后,微处理器10则检视描述符中封包状态的内容,以判断封包传输是否有误。
但是采用上述的方式可能发生如下所述的两种情形1.硬件内部发生错误而导致传输错误(如正确时应读取第二个描述符,但是因为网络卡内部发生错误而传输信息告知DMA控制器应读取第四个描述符)。
2.DMA控制器于读取的过程中发生失误(如DMA控制器原本应该根据第二个描述符所记录的内容至其所对应的数据缓冲区内取走数据,但是却发生失误至其它描述符所对应的数据缓冲区内取走错误的数据)。
如果发生上述情形,将会导致DMA控制器于错误发生以后所接收的封包数据完全错误,甚至会使DMA控制器至一无效的区域存取封包数据,而这种情况必须到应用程序发现档案并没有传送成功或是所传送的档案错误时,才会察觉错误的发生,这时驱动程序才会发出一网络卡重置信号(reset)至该网络卡以重新接收封包数据,故使用上述的方法并无法实时察觉错误的发生,而等到操作系统发现往往已经经过很久一段时间。
为了达到上述目的,本发明提供一种在直接存储器存取模式下检测所欲转移数据的地址的方法,应用于连接一芯片组的一直接存储器存取控制器上,且该芯片组与一存储器及一处理器相连接,该直接存储器存取控制器置于一网络装置中,该方法包含下列步骤读取存储于该存储器中的一数据封包的一描述符地址;判断该描述符地址是否符合处于一第一预定地址与一第二预定地址的区间内;当该描述符地址不符合时,该网络装置发出一中断信号至该处理器,该处理器因应该中断信号而进行一相对应的中断服务,进而使该直接存储器存取控制器重新读取关于该数据封包的描述符地址。
根据上述构想,本发明在直接存储器存取模式下检测所欲转移数据的地址的方法中,该第一预定地址与第二预定地址分别存放于一第一缓存器及一第二缓存器内,至于该第一预定地址与第二预定地址是当一计算机主机于初始运作状态时,该网络装置的驱动程序向操作系统(于该计算机主机中运作)于该存储器中要求一区间,用以存放数据封包的描述符,其中该第一预定地址为该区间的启始地址,该第二预定地址为该区间的终止地址。
根据上述构想,本发明在直接存储器存取模式下检测所欲转移数据的地址的方法中,该存储器为一个人计算机的主存储器(Main Memory)。
根据上述构想,本发明在直接存储器存取模式下检测所欲转移数据的地址的方法中,当该描述符地址符合时,则至该地址处读取关于该数据封包的一描述符,再根据该描述符中所记录的一数据存放地址来接收该封包的数据,进而将暂存于该存储器中的该数据封包转移至该硬件装置中。
根据上述构想,本发明在直接存储器存取模式下检测所欲转移数据的地址的方法中,描述符是用以记录该数据的一存放地址、该数据的一长度、该数据的一状态以及下一个欲进行转移的数据封包的一描述符地址。
根据上述构想,本发明在直接存储器存取模式下检测所欲转移数据的地址的方法中,该数据封包是转移至该网络装置的该直接存储器存取控制器的存储器中。
为了达到上述目的,本发明还提供一种在直接存储器存取模式下检测所欲转移数据的地址的方法,应用于连接一芯片组的一直接存储器存取控制器上,且该芯片组与一存储器及一处理器相连接,该直接存储器存取控制器整合于一硬件装置中,该方法包含下列步骤读取存储于该存储器中的一数据封包的一描述符地址;判断该描述符地址是否符合处于一特定区域;当该描述符地址不符合时,该硬件装置发出一中断信号至该处理器,该处理器因应该中断信号而进行一相对应的中断服务,进而使该直接存储器存取控制器重新接收关于该数据封包的描述符地址。
根据上述构想,本发明在直接存储器存取模式下检测所欲转移数据的地址的方法中,该存储器为一个人计算机的主存储器(Main Memory)。
根据上述构想,本发明在直接存储器存取模式下检测所欲转移数据的地址的方法中,该硬件装置为一网络卡、一硬式磁盘、一声卡或一数据卡。
根据上述构想,本发明在直接存储器存取模式下检测所欲转移数据的地址的方法中,当该描述符地址符合时,则至该地址处读取关于该数据封包的描述符,再根据该描述符中所记录的一数据存放地址来接收该封包的数据,进而将暂存于该存储器中的该数据封包转移至该硬件装置中。
根据上述构想,本发明在直接存储器存取模式下检测所欲转移数据的地址的方法中,该描述符用以记录该数据的一存放地址、该数据的一长度、该数据的一状态以及下一个欲进行转移的数据封包的一描述符地址。
根据上述构想,本发明在直接存储器存取模式下检测所欲转移数据的地址的方法中,数据封包是转移至该硬件装置的该直接存储器存取控制器的存储器中。
根据上述构想,本发明在直接存储器存取模式下检测所欲转移数据的地址的方法中,该特定区域为置于一第一预定地址与一第二预定地址间的区域。
根据上述构想,本发明在直接存储器存取模式下检测所欲转移数据的地址的方法中,该特定区域为该描述符地址符合一特定表达式的区域。
根据上述构想,本发明在直接存储器存取模式下检测所欲转移数据的地址的方法中,该处理器为一个人计算机的微处理器(microprocessor)。
为了达到上述目的,本发明又提供一种直接存储器存取控制器,整合于一硬件装置中,用以直接存取一存储器,该控制器读取存储于该存储器中的一数据的一描述符地址,该控制器的特征在于具有一判断器,该判断器判断该描述符地址是否符合处于一特定区域,而于该描述符地址不符合时,该硬件装置则发出一中断信号至该处理器,使该处理器因应该中断信号而进行一相对应的中断服务,进而重新读取相关于该数据封包的描述符地址。
根据上述构想,本发明的直接存储器存取控制器中,该特定区域为置于一第一预定地址与一第二预定地址间的区域。
根据上述构想,本发明的直接存储器存取控制器中,该第一预定地址与该第二预定地址分别存放于该判断器的一第一缓存器及一第二缓存器内。
根据上述构想,本发明的直接存储器存取控制器中,该特定区域为该描述符地址符合一特定表达式的区域。
根据上述构想,本发明的直接存储器存取控制器中,该特定表达式是由设置于于该判断器中的一逻辑运算电路所完成。
根据上述构想,本发明的直接存储器存取控制器中,描述符用以记录该数据的一存放地址、该数据的一长度、该数据的一状态以及下个欲进行转移的数据封包的一描述符地址。
根据上述构想,本发明的直接存储器存取控制器中,该硬件装置为一网络卡、一硬式磁盘、一声卡或一数据卡。
根据上述构想,本发明的直接存储器存取控制器中,该存储器为一个人计算机的主存储器(Main Memory)。
根据上述构想,本发明的直接存储器存取控制器中,该处理器为一个人计算机的微处理器(microprocessor)。
综上所述,本发明借由检测该数据封包的描述符地址是否处于一特定区域的判断方式,确实能够于失误发生时立即产生中断信号,而提升数据传输的效能,并使得系统整体效能能够正常运作。
图1(b)是已知主存储器内存储数据封包的格式示意图。
图2(a)是本发明在直接存储器存取模式下检测所欲转移数据的地址的步骤流程图。
图2(b)是使用图2(a)的方法而主存储器内存储数据封包的格式示意图。
图3(a)是本发明直接存储器存取控制器的第一较佳实施例的结构示意图。
图3(b)是本发明直接存储器存取控制器的第二较佳实施例的结构示意图。
具体实施例方式
请参见图2(a),是本发明所发展的在直接存储器存取模式下检测所欲转移数据的地址的较佳实施例流程图,其主要应用在于一芯片组(chipset)连接的一直接存储器存取控制器(DMA Controller)上,该芯片组也与一主存储器(Main Memory)及一微处理器相连接,且该直接存储器存取控制器可包含于一网络卡中,该方法包含下列步骤首先,接收存储于个人计算机的主存储器(Main Memory)中的第一数据封包的描述符地址,接着比对该第一描述符地址是否处于一第一预定地址与一第二预定地址间的特定区域内。
当该描述符地址不符合时,则由网络卡发出一中断信号至微处理器,使该微处理器因应该中断信号而进行一相对应的中断服务,并根据不同情况的失误施行不同的解决方式,如果发现是整个网络卡内部硬件发生失误那么就重新驱动整个网络卡;或是,只有直接存储器存取控制器的传送端(Tx)或是接收端(Rx)的控制器出现失误则只要将发生错误的部分重新驱动就可以,进而使得该直接存储器存取控制器可重新接收关于该第一数据封包的描述符地址。
当该描述符地址符合时,该直接存储器存取控制器就先到该地址处去读取该数据封包的描述符(descriptor),然后再到描述符中所记录的一数据存放地址处取走暂存于数据缓冲区内的封包数据,并将该数据封包转移至直接存储器控制器内的先进先出(FIFO)缓冲器中(可参阅图2(b)),接着由第一封包的描述符中读取其所记录的第二封包的描述符地址,并判断该第二描述符地址是否处于第一预定地址与第二预定地址间的特定区域内,以达到立即检测第二封包的描述符地址是否有误,至于后续封包的描述符地址也采用上述的方式检测。
至于该第一预定地址与一第二预定地址的来源为,当计算机主机于初始运作状态时,网络卡的驱动程序会向操作系统于主存储器中要求一区间来固定存放数据封包的描述符,该第一预定地址可以是该区间的启始地址,该第二预定地址可以是该区间的终止地址。且网络卡将该第一预定地址与一第二预定地址分别存放于直接存储器存取控制器内的第一缓存器与第二缓存器中,因此直接存储器存取控制器就可根据第一缓存器与第二缓存器中的设定地址来立即判断所欲进行读取的数据封包的描述符地址是否有失误的情形发生。
其中该描述符主要用来记录该数据的存放地址、该数据的长度、该数据的状态以及下一个欲进行转移的数据封包的描述符地址(如图2(b)所示)。本发明的方法及控制器也可适用于硬式磁盘、声卡、数据卡或是其它能够进行直接存储器存取模式的硬件装置上。
另外,特定区域也可为符合一特定表达式的所有区域,即计算机主机于初始运作状态时,硬件装置向操作系统要求在主存储器中符合该特定表达式的所有地址来存放数据封包的描述符,且该特定表达式是由直接存储器存取控制器中的一逻辑运算电路所完成,借由判断该描述符地址的运算结果是否正确就可判断有无失误的发生,因此,本发明可在直接存储器存取模式下借由一特定区域来判断所欲存取的数据封包的描述符地址是否有失误发生。
请参阅图3(a),其是本发明直接存储器存取控制器的第一较佳实施例的结构示意图。由图中可清楚得知,直接存储器存取控制器32(置于网络卡31内)是与一芯片组35相连接,且该芯片组35另外连接于个人计算机的主存储器30及个人计算机的微处理器36,其主要的特征在于具有一判断器33,而该判断器33包含一第一缓存器331及一第二缓存器332,可用以存放一第一预定地址及一第二预定地址,其主要用以判断该描述符地址是否处于第一预定地址与第二预定地址间的区域就可判断有无失误的发生,至于该先进先出缓冲器34则是用来暂存该直接存储器存取控制器所读取的封包数据。
请参阅图3(b),其是本发明直接存储器存取控制器的第二较佳实施例的结构示意图。其与图3(b)的差异点在于判断器33包含由一逻辑运算电路333所完成的一特定表达式,其主要借由逻辑运算电路333来检测该描述符地址的运算结果是否正确以判断有无失误的发生。
本发明得由熟习此技术的人士任施匠思诸般修饰,皆不脱如权利要求书的保护范围。
权利要求
1.一种在直接存储器存取模式下检测所欲转移数据的地址的方法,其特征是应用于连接一芯片组的一直接存储器存取控制器上,且该芯片组与一存储器及一处理器相连接,该直接存储器存取控制器整合于一网络装置中,该方法包含下列步骤读取存储于该存储器中的一数据封包的一描述符地址;判断该描述符地址是否处于一第一预定地址与一第二预定地址的区间内;当该描述符地址不符合时,该网络装置发出一中断信号至该处理器,该处理器因应该中断信号而进行一相对应的中断服务,进而使该直接存储器存取控制器重新读取关于该数据封包的描述符地址。
2.如权利要求1所述的在直接存储器存取模式下检测所欲转移数据的地址的方法,其特征在于该第一预定地址与第二预定地址分别存放于一第一缓存器及一第二缓存器内,而该第一预定地址与第二预定地址是当一计算机主机于初始运作状态时,该网络装置的一驱动程序向该计算机主机的一操作系统于该存储器中要求一区间,用以存放该数据封包的描述符,该第一预定地址是该区间的启始地址,该第二预定地址是该区间的终止地址。
3.如权利要求1所述的在直接存储器存取模式下检测所欲转移数据的地址的方法,其特征在于该存储器为一个人计算机的主存储器,而当该描述符地址符合时,则至该地址处读取关于该数据封包的描述符,再根据该描述符中所记录的一数据存放地址来存取该封包的数据,该描述符用以记录该数据封包的一存放地址、一长度、一状态以及下一个欲进行转移的数据封包的一描述符地址,而该数据封包是转移至该网络装置的该直接存储器存取控制器的一先进先出缓冲器中。
4.一种在直接存储器存取模式下检测所欲转移数据的地址的方法,其特征是应用于连接一芯片组的一直接存储器存取控制器上,且该芯片组与一存储器及一处理器相连接,该直接存储器存取控制器整合于一硬件装置中,该方法包含下列步骤读取存储于该存储器中的一数据的一描述符地址;判断该描述符地址是否符合处于一特定区域;当该描述符地址不符合时,该硬件装置发出一中断信号至该处理器,该处理器因应该中断信号而进行一相对应的中断服务,进而使该直接存储器存取控制器重新读取关于该数据的描述符地址。
5.如权利要求4所述的在直接存储器存取模式下检测所欲转移数据的地址的方法,其特征在于该存储器为一个人计算机的主存储器,而该硬件装置为一网络卡、一硬式磁盘、一声卡或一数据卡,而当该描述符地址符合时,则至该地址处读取关于该数据的描述符,再根据该描述符中所记录的一数据存放地址来存取该封包的数据,该描述符是用以记录该数据封包的一存放地址、一长度、一状态以及下一个欲进行转移的数据的一描述符地址。
6.如权利要求4所述的在直接存储器存取模式下检测所欲转移数据的地址的方法,其特征在于该数据封包是转移至该硬件装置的该直接存储器存取控制器的一先进先出缓冲器中,而该特定区域为置于一第一预定地址与一第二预定地址间的区域,或该特定区域为该描述符地址符合一特定表达式的区域,该处理器为一个人计算机的微处理器。
7.一种直接存储器存取控制器,其特征是与一芯片组相连接且整合于一硬件装置中,用以直接存取一存储器的数据,且该芯片组与一处理器相连接,该控制器读取存储于该存储器中的一数据的一描述符地址,该控制器具有一判断器,该判断器判断该描述符地址是否符合处于一特定区域,而于该描述符地址不符合时,该硬件装置则发出一中断信号至该处理器,使该处理器因应该中断信号而进行一相对应的中断服务,进而重新读取相关于该数据的描述符地址。
8.如权利要求7所述的直接存储器存取控制器,其特征在于该特定区域是置于一第一预定地址与一第二预定地址间的区域,而该第一预定地址与该第二预定地址分别存放于该判断器的一第一缓存器及一第二缓存器内。
9.如权利要求7所述的直接存储器存取控制器,其特征在于该特定区域是该描述符地址符合一特定表达式的区域,而该特定表达式由设置于该判断器中的一逻辑运算电路所完成。
10.如权利要求7所述的直接存储器存取控制器,其特征在于该描述符用以记录该数据的一存放地址、该数据的一长度、该数据的一状态以及下一个欲进行转移的数据的一描述符地址,而该硬件装置为一网络卡、一硬式磁盘、一声卡或一数据卡,该存储器为一个人计算机的主存储器,而该处理器为一个人计算机的微处理器。
全文摘要
本发明公开一种直接存储器存取控制器及直接存储器存取的控制方法,该直接存储器存取控制器整合于一硬件装置中,用以直接存取一存储器的数据,该控制器包含一进行判断该描述符地址是否符合处于一特定区域的动作的判断器,而该方法包含下列步骤读取存储于该存储器中的一数据封包的一描述符地址;判断该描述符地址是否处于一特定区域;当该描述符地址不符合时,该硬件装置则发出一中断信号至该处理器,使该处理器因应该中断信号而进行一相对应的中断服务,进而使该直接存储器存取控制器重新接收关于数据封包的描述符,从而可及时发现和纠正存取错误。
文档编号G06F12/00GK1397885SQ0212440
公开日2003年2月19日 申请日期2002年6月27日 优先权日2002年6月27日
发明者石健毅 申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1