可重寻址的虚拟dma控制和状况寄存器的制作方法

文档序号:6487325阅读:299来源:国知局
专利名称:可重寻址的虚拟dma控制和状况寄存器的制作方法
技术领域
本发明涉及在存储器地址空间中定义虚拟DMA寄存器,以控制和监控DMA传输的状况。
背景技术
各种计算机系统架构已采用许多方法来尝试在计算机系统内跨总线和在装置(包括存储器装置、I/O装置等等)之间有效地传输数据块。一种最简单的方法允许CPU(中央处理单元)从一个装置读取数据块,随后将该数据块写到另一装置。但是,该任务常被认为更适合委派给其它可选机制,从而CPU能更完全地专用于执行更复杂的计算和其它计算任务。
一种广泛使用的可选机制是向这种计算机系统添加DMA(直接存储器存取)控制器,以接管计算机系统的系统存储器和其它装置之间的数据块移动。通常,这种DMA控制器被编程为通过CPU将传输参数直接写入DMA控制器内的寄存器以执行数据块的特定传输。随后,在执行数据块的传输时,CPU通常被编程为轮询DMA控制器内的一个或更多寄存器以查询传输状况。
但是,这种DMA控制器的使用具有一些缺点。虽然CPU摆脱了实际执行数据块传输的负担,但使CPU轮询DMA控制器内的寄存器以查询传输状况仍常被认为是低效的。此外,在计算机系统的许多实现中,由CPU执行用于编程DMA控制器内的寄存器的写操作以及由CPU执行用于查询DMA控制器内的寄存器的状态的读操作会花费超过期望的时间。
另一广泛使用的可选机制是将总线主控性能加入计算机系统内的各种I/0装置,以使这些装置本身能自主地执行数据块的传输。通常,那样的传输被编程为通过CPU将传输参数直接写入这种总线主控装置内的寄存器来进行。接着,在执行数据块传输时,CPU轮询总线主控装置内的一个或更多寄存器,查询传输状况。
但使用这样的总线主控装置具有一些缺点。虽然CPU摆脱了实际执行数据块传输的负担,但由CPU执行以编程DMA控制器内的寄存器的写操作以及由CPU执行以查询DMA控制器内寄存器的状态的读操作会花费超过预期的时间。此外,总线主控装置执行的读操作,特别是从系统存储器中读取数据块,也会花费超过预期的时间。


借助以下详细描述,将使本发明的目的、特点和优点对于本领域的熟练技术人员来说显而易见,其中图1是采用计算机系统的实施例的框图。
图2是采用计算机系统的另一实施例的另一框图。
图3是参与传输数据块的装置之间的交互作用的实施例的框图。
图4是参与传输多个数据块的装置之间的交互作用的实施例的框图。
图5是参与传输多个数据块的装置之间的交互作用的实施例的另一框图。
图6是参与传输多个数据块的装置之间的交互作用的实施例的另一框图。
图7是采用计算机系统的其它实施例的又一框图。
图8是一个实施例的流程图。
图9是另一实施例的流程图。
图10是又一实施例的流程图。
具体实施例方式
附图中,出于说明目的,阐述了许多细节以提供本发明的透彻理解。但,本领域的熟练技术人员显见的是这些特定细节不是实施这里所要求的本发明所必要的。
如以下所要求的本发明涉及结合对维持计算机系统或其它类似电子系统的其它装置内的存储位置中DMA控制器的虚拟寄存器的支持。虽然以下讨论以计算机系统内的DMA控制器为中心,但本领域的熟练技术人员将理解,以下要求的本发明可在具有DMA控制器的电子系统或者用于在装置之间移动数据块的其它类似的专用逻辑的支持下实施。
图1是采用计算机系统的实施例的框图。计算机系统100至少部分由CPU(中央处理单元)110、总线119、逻辑120、总线149、系统存储器140、总线159和装置150构成。CPU110、总线119、逻辑120、总线149和系统存储器140构成能执行系统存储器140内和/或计算机系统100的其它装置内存储的机器可读指令的计算机系统100的核心形式。但本领域的熟练技术人员易于理解这仅仅是计算机系统100的核心的许多可能形式的一个示例,计算机系统100也可进一步由未示出的其它总线和装置构成。
在各种实施例中,CPU110可以是各种类型的CPU中的任一种,包括至少能执行部分地公知和使用的Intel Corporation,Santa Clara,California始创的“x86”指令集的CPU。此外,在各种可能的实施例中,可能存在超过一个CPU连同提供对超过一个CPU的支持的附加总线和/或装置(未示出)。逻辑120经由总线119耦合到CPU110,并实现支持CPU110的指令执行的各种功能,包括控制和向CPU110提供对逻辑120经由总线149进一步耦合的系统存储器140的访问。逻辑120还提供了对构成计算机系统100的其它装置的访问,诸如逻辑120经由总线159耦合的装置150。
在与总线119、149和159耦合并向CPU110提供对系统存储器140和装置150的每一个的访问以启动传输地址、命令和数据的事务时,逻辑120用作这些总线之间通常所称的“桥路”。在用作桥路时,逻辑120还向计算机系统100提供存储器控制器122,以帮助实现总线149上的事务,并提供总线接口127,以帮助实现总线159上的事务。为了使CPU110摆脱实施数据块的某些传输的负荷,逻辑120进一步提供DMA控制器130。
在各种实施例中,系统存储器140可以是各种类型的随机存取存储器(RAM)中的任一种,其中包括快速页面模式(FPM)、扩充数据输出(EDO)、单倍数据率(SDR)或双倍数据率(DDR)形式的同步动态RAM(SDRAM)或者采用RAMBUSTM接口或其它接口的RAM。存储器控制器122和总线149被配置成支持一种或多种类型的存储器和/或存储器接口的定时和/或协议要求。
在各种实施例中,可构成计算机系统100的总线159和/或其它总线可以被设计成符合已成为计算机设计领域中“标准化”的各种公知形式总线中的任一种的特征和/或规范,诸如扩展工业标准架构(EISA)、Micro ChannelTM架构(MCA)、外围组件互连(PCI)、PCI-X、PCI Express等。总线接口127和157被配置成支持总线159的定时和/或协议要求。
在一个实施例中,CPU110执行一系列指令,这使得CPU110编程DMA控制器130以实现系统存储器140内的数据存储位置146和148之间的数据块传输。CPU110用指定所发生的传输的各种参数的值写入一个或多个参数寄存器133,这些参数包括但不限于数据存储位置146和148的起始地址、指示要传输的数据量的值(即,数据块大小)、指示在系统存储器140内分配的状况存储位置144处提供的传输状况的值以及进入一个或多个控制比特以使得传输发生的值。DMA控制器130随后执行该传输。在该传输的执行期间,CPU110能读取状况存储位置144一次或多次,以确定DMA控制器130是否已将值写入状态存储位置144,指示该传输已完成。假定在诸如计算机系统100的计算机系统的设计中常在CPU和系统存储器之间创建低等待时间路径,CPU110将很可能能够通过读取系统存储器140内的状况存储位置144来重复检查传输状况,这比从DMA控制器130内的寄存器读取的现有技术方法快速得多。
在另一实施例中,CPU110执行一系列指令,这使得CPU110通过将所发生的传输的各种参数写入系统存储器140内分配的可选参数存储位置143来编程DMA控制器130以实现系统存储器140内的数据存储位置146和148之间的数据块传输。这些参数可包括,但不限于,数据存储位置146和148的起始地址、指示要传输的数据量的值以及指示状况存储位置144处提供的传输状况的值。还使得CPU110用指示可选参数存储位置143的起始地址的值以及进入一个或多个控制比特作为使传输发生的触发器的值写入一个或多个参数寄存器133。响应于该触发器,DMA控制器130随后执行该传输。在传输执行期间,CPU110能读取状况存储位置144一次或多次,以确定DMA控制器130是否已将一值写入状态存储位置144,指示该传输已完成。
在本实施例的一个变型中,状态存储位置144是可选参数存储位置143的任一部分或者被分配于处于离开可选参数存储位置143的基地址有预定偏移处的系统存储器140内的地址。在本实施例的另一变型中,DMA控制器130用状况存储位置144的地址分别编程(经由参数寄存器133或可选参数存储位置143)。
在本实施例的又一变型中,传输的状况被写入装置150的装置存储160内的可选状况存储位置164,且DMA控制器130用可选状况存储位置164的地址编程(经由参数寄存器133或可选参数存储位置143)。可选状况存储位置164由装置存储160内分配的一个或多个存储器位置构成,该装置存储160即根据装置150的性质可用于任何数量的可能用途的装置150内的存储器缓冲器,如本领域的熟练技术人员易于理解的。将传输状况写入装置150的装置存储160内的可选状况存储位置164的优点在于装置150会等待这种状况,作为实施某些其它任务的条件,且通过不将状况写入系统存储器140内的状况存储位置144,可以避免由于状况随后必须从该状况存储位置144传输给装置150引起的不期望的延迟。如果从状况存储位置144到可选状况存储位置164的状况的后续传输将要求装置150采用装置150可能具有用于读取状况存储位置144的总线主控性能,该优点会更大。如本领域的熟练技术人员将理解的,实施跨诸如总线159的总线的读取操作会比写入操作花费更长的时间来完成,并且还会瞬间锁定总线。这是由于读取操作首先要求进行跨总线的数据请求来读取诸如传输状况的一段数据,随后在请求的数据被提供之前,需要一段等待时期。根据总线159的设计,读取和写入操作的一致性和排序规则会要求在接收到所述状况之前不使用总线159或者至少装置150不实施跨总线159的其它传输的至少一个子集。因此,根据开始读取操作时的情况,在应答和完成读取操作以便从状况存储位置144读取状况的状态下,系统存储器140和装置150两者以及总线149和159两者可能被瞬间独占。相反,如果状况由DMA控制器130直接写到装置150,为了维持一致性和排序就可以利用通常作用于写入操作上的较少的严格要求,从而可以允许写入操作在总线接口127的写入缓冲器128中记入,随后在可能的时候在总线159锁定的可能性较低的情况下通过总线159传输给装置150。
图2是采用计算机系统的实施例的另一框图。图2中的标号项意味着一般地对应于图1中的标号项,且按与图1的计算机系统100相似的方式,计算机200至少部分由CPU210、总线219、逻辑220、总线249、系统存储器240、总线259和装置250构成。在采用计算机系统100的情况下,本领域的熟练技术人员将易于理解这仅仅是计算机系统200的核心的许多可能形式中的一个示例,而计算机系统200也可以进一步由未示出的其它总线和装置构成。逻辑220经由总线219耦合到CPU210,并实现支持CPU210的指令执行的各种功能,包括控制和向CPU210提供对系统存储器240的访问,其中逻辑220还经由逻辑220内的存储器控制器222和总线249与该系统存储器240耦合。逻辑220还提供对构成计算机系统200的其它装置(诸如装置250)的访问,其中逻辑220经由逻辑220内的总线接口227和总线259与所述其它装置耦合。
在一个实施例中,CPU210执行一系列指令(可能存储于系统存储器240内),这使得CPU210编程DMA控制器230以实施在系统存储器240内的数据存储位置246和装置250内的数据存储位置266之间的数据块传输。CPU210将所发生的传输的各种参数写入系统存储器240内分配的参数存储位置243内的存储器位置。这些参数可包括,但不限于,数据存储位置246和266的起始地址、指示要传输的数据量的值以及指示系统存储器240内分配的状况存储位置244处提供的传输状况的值。还使得CPU210向装置250内的一个或多个参数寄存器233写入指示参数存储位置243的起始地址的值以及进入一个或多个控制比特作为使传输发生的触发器的值。DMA控制器230随后响应于触发器执行该传输。在传输执行期间,CPU210能读取状况存储位置244一次或多次,以确定DMA控制器230是否已将一值写入状况存储位置244,指示传输已完成。
在该实施例的一个变型中,状况存储位置244是参数存储位置243的一部分或者被分配于位于离开参数存储位置243的基地址有预定偏移处的系统存储器240内的地址处。在该实施例的另一变型中,DMA控制器230用状况存储位置244的地址分别编程(在参数寄存器233或参数存储位置243内)。在本实施例的又一变型中,如需要,传输状况被写入装置250的装置存储260内的可选状况存储位置264,且DMA控制器230用可选状况存储位置264的地址编程,从而允许更迅速地向装置250提供传输状况。
在另一实施例中,CPU210执行一系列指令,这使得CPU210通过将所发生的传输的各种参数写入装置250的装置存储260内分配的可选参数存储位置263编程DMA控制器230以实施在数据存储位置246和266之间的数据块传输。如前所述,这些参数可以包括,但不限于,数据存储位置246和266的起始地址、指示要传输的数据量的值以及指示可选状况存储位置264处要提供的传输状况的值。还使得CPU210用指示可选参数存储位置263的起始地址的值以及进入一个或多个控制别作为使传输发生的触发器的值写入一个或多个参数寄存器233。DMA控制器230随后响应于触发器执行该传输。在该传输执行期间,装置250或CPU210能读取状况存储位置264一次或多次,以确定DMA控制器230是否已将值写入状况存储位置264,指示传输已完成。
图3是参与传输数据块的装置之间的交互作用的实施例的框图。特别是,图3描绘了在实施从源数据存储位置346到目标数据存储位置348的数据块传输过程中控制装置310、DMA控制器330和一个或多个存储器装置和/或提供存储的装置之间的交互作用。控制装置310可以是CPU(计算机系统或其它电子系统中的任一个)、微控制器、定序器等,它们能执行指令312以通过使控制装置310编程与控制装置310耦合的DMA控制器330内的寄存器而使数据块传输发生。可寻址空间340是对控制装置310和DMA控制器330可访问的地址位置的映射。
在一些实施例中,可寻址空间340可整体由与控制装置310和DMA控制器330两者耦合的单系统存储器装置(未示出)构成。这种实施例可基本上类似于图1的实施例,其中源数据存储位置346和目标数据存储位置348两者按与数据存储位置146和148相似的方式位于诸如系统存储器140的系统存储器装置内。在其它实施例中,可寻址空间340可由与控制装置310和DMA控制器330耦合的其它装置内的存储器装置和/或缓冲器的组合构成。这种实施例可基本上类似于图2的实施例,其中源数据存储位置346和目标数据存储位置348按与系统存储器240内分配的数据存储位置246以及装置250的装置存储260内分配的数据存储位置266相似的方式在不同装置内被分配。更准确地,例如,源数据存储位置346可位于系统存储器内而目标数据存储位置348可位于另一装置内的缓冲器内。
通过将源数据存储位置346和目标数据存储位置348的基地址以及要传输的数据量和状况存储位置344的地址写入参数存储位置343,(作为执行指令312的结果)使得控制装置310准备从源数据存储位置346到目标数据存储位置348的数据块传输的执行。控制装置310还将参数存储位置343的基地址写入DMA控制器330内的参数寄存器333,而一个或多个比特触发DMA控制器330以实施数据传输。
响应于该触发,DMA控制器330访问被编程入参数寄存器333的基地址处的参数存储位置343,以获得源数据存储位置346和目标数据存储位置348的基地址、要传输的数据量以及状况存储位置344的基地址。DMA控制器330完成从源数据存储位置346到目标数据存储位置348的数据块传输,并将传输状况写到状况存储位置344。控制装置310从状况存储位置344读取传输状况,以确定DMA控制器330是否已将一值写入状况存储位置344,指示数据传输已完成。
图4是参与传输多个数据块的装置之间的交互作用的实施例的框图。特别是,图4描绘了实施从源数据存储位置446a到目标数据存储位置448a的数据块传输以及随后从源数据存储位置446b到目标数据存储位置448b的另一数据块传输的过程中控制装置410、DMA控制器430和一个或多个存储装置和/或提供存储的装置之间的交互作用。图4中的标号项表示一般地对应于图3中的标号项,且与图3的控制装置310相似,控制装置410可以是CPU(计算机系统或其它电子系统中的任一个的)、微控制器、定序器等,它们能执行指令412以通过编程与控制装置410耦合的DMA控制器430内的寄存器而使数据块传输发生。可寻址空间440是对控制装置410和DMA控制器430可寻址的地址位置的映射。
在一些实施例中,可寻址空间440可整体由与控制装置410和DMA控制器430两者耦合的单系统存储器装置(未示出)构成。在其它实施例中,可寻址空间440可由与控制装置410和DMA控制器430耦合的其它装置内的存储器装置和/或缓冲器的组合构成。作为示例,源数据存储位置446a和目标数据存储位置448b可均位于系统存储器内,而源数据存储位置446b和目标数据存储位置448a可均位于另一装置内的缓冲器内。
通过将源数据存储位置446a和446b以及目标数据存储位置448a和448b的基地址连同要传输的对应数据量和状况存储位置444a和444b的相应地址读入相应的参数存储位置443a和443b,(作为执行指令412的结果)使得控制装置410准备执行从源数据多个数据块传输。控制装置410还将参数存储位置443a的基地址写入DMA控制器430内的参数寄存器433,而一个或多个比特触发DMA控制器430以开始数据块传输。
响应于该触发,DMA控制器430访问被编程入参数寄存器433的基地址处的参数存储位置443a,以获得源数据存储位置446a和目标数据存储位置448a的基地址、要传输的数据量以及状况存储位置444a的基地址。DMA控制器430实施从源数据存储位置446a到目标数据存储位置448a的数据块传输,并将传输状况写到状况存储位置444a。DMA控制器430随后访问参数存储位置443b以获得源数据存储位置446b和目标数据存储位置448b的基地址、要传输的数据量和状况存储位置444b的基地址。DMA控制器430随后实施从源数据存储位置446b到目标数据存储位置448b的数据块传输,并将传输状况写到状况存储位置444b。控制装置410从状况存储位置444a和444b读取传输状况,以确定DMA控制器430是否已将一值写入状况存储位置444a和444b,指示数据传输已完成。
在一个实施例中,被写入参数寄存器433的参数存储位置443a的基地址用作指向在链中以预定间隔(被编程或硬连线入DMA控制器430的间隔长度)设置的一个或多个参数存储位置(诸如参数存储位置443a)的基地址的指针,使得DMA控制器430仅需要链中的第一个这种参数存储位置的基地址,且DMA控制器430能通过迭代该链直到遇到具有传输数据块的参数的最后一个这种参数存储位置。在这种实施例中,控制装置410也可将一值写入参数寄存器433,指示这种链中参数存储位置的量。但在另一实施例中,每个参数存储位置都可提供参数存储位置链中的下一个参数存储位置的基地址,从而不需要参数存储位置链中的每个参数存储位置在可寻址空间440内按预定间隔定位置。在这种实施例中,这种链中的最后一个参数存储位置可提供一值代替基地址,它指示已到达链中的最后一个参数存储位置。
图5是参与多个数据块传输的装置之间的交互作用实施例的另一框图。特别是,图5描绘了在执行多个数据块传输(为了清晰而未实际示出数据块)的过程中DMA控制器和一个或多个存储器装置和/或提供存储的装置之间的交互作用。图5中的标号项表示一般地对应于图4中的标号项,且按与图4相似的方式,可寻址空间540是对控制装置(未示出)和DMA控制器530可访问的地址位置的映射。
按与图4类似的方式,多个参数存储位置(543a到543d)已在可寻址空间540内被分配,且类似于关于图4所详细讨论的,DMA控制器530访问参数存储位置543a到543d中的每一个以获得源数据和目标数据存储位置的基地址连同要传输的数据量和要将指示每个传输状况的值写入的状况存储位置的相应基地址。但与针对图4所讨论的实施例不同,图5描绘了其中从参数存储位置543a到543d指向作为单个共用位置的同一位置(即状况存储位置544)的实施例,其中每个传输的状况都将由DMA控制器530写入到该位置中。这种单个状况存储位置的使用将允许控制装置通过仅对可寻址空间540内的一个位置的重复访问来监控多个传输的状况。在这种实施例中,由DMA控制器530写入状况存储位置544的值可附加地结合一些形式的标识值,这将允许控制器区分哪些传输已完成和/或哪个传输当前正进行中。
图5还描绘了参数寄存器533的使用以提供第一和最后一个参数存储位置的基地址,作为一种方式来触发一个或多个数据块传输的开始以及传输链中存在多少传输的计数。如前所述,一些实施例可采用可寻址空间540内设置的每个参数存储位置处的基地址之间的地址空间的预定间隔,且其它实施例可采用提供参数存储位置链中下一个参数存储位置的基地址的每个参数存储位置内的指针,用于实施相应的多个传输。
图6是参与传输多个数据块的装置之间的交互作用实施例的又一框图。特别是,图6描绘了在实施多个数据块传输(为了清楚而未实际示出数据块)的过程中DMA控制器和一个或多个存储器装置和/或提供存储的装置之间的交互作用。图6中的标号项表示一般地对应于图5中的标号项,并按与图5相似的方式,可寻址空间640是对控制装置(未示出)和DMA控制器630可访问的地址位置的映射。按与图5相类似的方式,多个参数存储位置(643a到643c)已在可寻址空间640内被分配,且类似于针对图5详细讨论的,DMA控制器630访问参数存储位置643a到643c中的每一个以获得源数据和目标数据存储位置的基地址连同要传输的数据量以及要写入指示每个传输状况的值的状况存储位置的相应基地址。但与针对图5所讨论的实施例不同的是,图6描述了可寻址空间640内不按规则间隔的方式分配的参数存储位置643a到643c,其中在每个参数存储位置内提供用于下一个参数存储位置的指针。在实施每个传输时,DMA控制器630访问指向下一个参数存储位置的指针,以获得下一个参数存储位置的基地址,直到访问参数存储位置643c内的指针以获得另一参数存储位置的基地址的步骤提供一指示不再存在具有用于数据块传输的参数的参数存储位置的指针,在这点处DMA控制器630停止实施数据块的传输。
图6还示出了使用指向状况存储位置的指针以便将与参数存储位置643a和643c相对应的数据传输状况提供给共用状况存储位置(即,状况存储位置644ac),并将与参数存储位置643b相对应的数据传输状况提供给不同的状况存储位置(即,状况存储位置644b)。分开和共用状况存储位置的这种使用证明是有利的,其中多个传输与通过DMA控制器630是其一部分的计算机系统的一个功能的实现有关,而其它传输与同一计算机系统内的不同功能的实现有关。更具体地,状况存储位置644ac和644b可分配于不同的存储器装置和/或具有存储器缓冲器的装置内。作为示例,状况存储位置644ac可分配于系统存储器内,使得CPU能有效地监控相应的传输状况,而状况存储位置644b可分配于另一装置提供的存储器缓冲器内,使得其它装置能有效地监控相应的传输状况。
图7是采用计算机系统的实施例的另一框图。图7中的标号项表示一般地对应于图2中的标号项,且按与图2的计算机系统200相似的方式,计算机系统700至少部分由CPU710、总线719、逻辑720、总线749、系统存储器740、总线759和装置750构成。在具有计算机系统200的情况下,本领域的熟练技术人员将易于理解这仅仅是计算机系统200核心的许多可能形式的一个示例,且计算机系统200还可进一步由未示出的其它总线和装置构成。逻辑720经由总线719与CPU710耦合并执行支持CPU710的各种功能,包括控制和向CPU710提供对系统存储器740的访问,其中该系统存储器740经由逻辑720内的存储器控制器722和总线749与逻辑720耦合。逻辑720还提供对构成计算机系统700的其它装置的访问,诸如经由逻辑720内的总线接口727和总线759以及装置750内的总线接口757与逻辑720耦合的装置750。
CPU710执行系统存储器740内存储的一系列指令712,这使得CPU710编程DMA控制器730以实施从系统存储器740内分配的数据存储位置746到装置750的装置存储760内分配的数据存储位置766的数据块传输。CPU710将所发生的传输的各种参数写入系统存储器740内分配的DMA传输参数存储位置743内的存储器位置。这些参数可包括,但不限于,数据存储位置746和766的起始地址、指示要传输的数据量的值、以及指示传输状况将在装置存储760内分配的DMA传输状况存储位置764处提供的值。还使得CPU710用指定DMA传输参数存储位置743的起始地址的值以及进入一个或多个控制比特作为使得传输发生的触发器的值写入DMA控制器730内的一个或多个参数寄存器733。DMA控制器730随后执行该传输。在该传输的执行期间,CPU710和/或装置750能读取DMA传输状况存储位置764一次或多次,以确定DMA控制器730是否已将一值写入指示传输已完成的DMA传输状况存储位置764。
CPU710还执行更多系列的指令712,使得CPU710编程装置750以实施从装置750内的装置存储760内分配的数据存储位置768到系统存储器740内分配的数据存储位置748的数据块传输。CPU710将所发生的传输的各种参数写入装置传输参数寄存器768。这些参数可包括,但不限于,数据存储位置768和748的起始地址以及指示要传输的数据量的值。随后,装置750执行该传输。
与单独利用DMA控制器730或装置750执行这两种传输相比,利用DMA控制器730将数据从系统存储器740传输到装置750以及利用装置750的主控功能将数据从装置750传输到系统存储器740可以在移动数据块方面提供更高的效率。这样,每个传输都作为跨总线759的一个或多个写入操作而实施,利用了相应的总线接口727和757可提供的写入缓冲器728和758的优点。写入缓冲器728的使用将允许由DMA控制器730通过总线759将数据写到装置存储760被缓冲或“记入(posted)”,使得一部分数据从写入缓冲器728通过总线759向装置存储760传播,DMA控制器730能从系统存储器740中读取另一部分数据。相应地,装置750的总线主控功能对系统缓冲器758的使用将允许装置750将数据通过总线759写到系统存储器740,以便也被“记入”,从而一部分数据从写入缓冲器758通过总线759向系统存储器740传播,装置750能从装置存储760中读取另一部分数据。
在一些实施例中,DMA730和装置750的总线主控功能的该组合使用可借助执行由与装置750相对应的装置驱动器提供的一系列指令的CPU710引起。在计算机700的正常操作过程中,这种装置驱动器可与也由CPU710执行的操作系统交互,以通过避免使用装置750的总线主控功能从系统存储器740读取数据并避免使用DMA控制器730从装置存储760读取数据来提升装置750内的装置存储760和系统存储器740之间的数据传输效率。
图8是一实施例的流程图。在810处,要传输数据的源和目标位置的基地址、要传输的数据量和要写入传输状况的状况位置的基地址都经由DMA寄存器或其它机制提供给DMA控制器。DMA控制器接收开始DMA传输的执行的信号,且这在820处进行。在830处,在执行传输时,CUP或其它装置从DMA控制器写入状况的状况位置读取传输状况。在840处,如果DMA控制器还未将一值写入要写入状况的状况位置,指示传输已完成,则在830处产生另一状况读取。否则,如果DMA控制器已将一值写入将指示传输已完成的状况写入的状况位置,则过程结束。
图9是数据块传输的另一实施例的流程图。910处,包括但不限于要传输数据的数据源和目标位置的基地址、要传输的数据量以及要写入传输状况的状况位置的基地址的传输参数都被写入系统存储器或其它存储器装置或具有可寻址存储器(诸如缓冲器)的装置的参数位置。在920处,要在910处写入传输参数的参数位置的基地址经由DMA寄存器或其它机制提供给DMA控制器。DMA控制器接收信号以开始传输的执行,这在930处进行。在940处,随着传输被执行,CPU或其它装置从DMA控制器写入状况的可寻址状况位置读取DMA传输的状况。950处,如果DMA控制器仍未将一值写入要写入指示DMA传输已完成的状况的状况位置,则940处发生另一状况读取。否则,如果DMA控制器已将一值写入要写入指示传输已完成的状况的状况位置,则过程结束。
图10是一实施例的流程图。1010处,诸如数据源和目标位置的基地址、数据量和状况位置的基地址的参数组被写入用于多个传输的多个参数位置,其中多个传输位置中的每一个都对应于要执行的多个传输中的每一个。1020处,要写入传输参数的多个参数位置中的第一个的基地址经由DMA寄存器或其它机制提供给DMA控制器。DMA控制器接收信号以开始DMA传输的执行,并在1030处进行,且当完成1030处执行的DMA传输时,在1040处,指示DMA传输完成的状况被写入与该传输相对应的状况位置。如果在750处存在还要实施的另一传输的参数的另一参数位置的指示,则在1030处执行该传输。否则,如果不再存在与还要执行的传输相对应的参数位置,则过程结束。
在其中支持实施多个传输的情况下分配多个传输参数位置的每个前述实施例中,可以存在这些实施例的变型,其中传输参数位置可按循环或“FIFO类”方式使用,其中参数位置被用作环以便为新传输重复地重新使用。在传输参数位置采用指针将DMA控制器引导到可找到下一个传输参数位置的基地址的情况下,可使用这些指针使得在其它情况可能是“最后一个”传输参数位置的指针将指向可能是“第一个”传输参数位置的那个。在传输参数位置不采用指针的情况而依赖于以预定间隔设置于存储器装置(或提供存储位置的其它装置)的可寻址空间内的情况下,可以向DMA控制器提供哪个传输参数位置是传输参数位置链中的最后一个的指示,使得DMA控制器能“循环回到”第一个。
已结合较佳实施例描述了本发明。显然,根据以上描述,大量可选方案、修改、变型和使用是本领域熟练技术人员显而易见的。本领域的熟练技术人员可以理解,本发明可实施来支持计算机系统之外的电子装置,诸如音频/视频娱乐装置、车载控制器装置、电子线路控制的电气设备等。
权利要求
1.一种装置,包括第一存储器装置,其中分配具有要传输的数据块的源数据位置;第二存储器装置,其中分配了用于要传输的数据块的目标数据位置;控制装置,它与第一和第二存储器装置两者耦合并能执行机器可读的指令;DMA控制器,它与所述控制装置以及第一和第二装置耦合,并具有控制装置将指定状况位置的基地址的值写入其中的至少一个传输状况位置基地址寄存器,在该状况位置的基地址处DMA控制器写入一表示从源数据位置到目标数据位置的数据块传输状况的值。
2.如权利要求1所述的装置,其特征在于,所述DMA控制器具有参数寄存器,控制装置至少将源数据位置的基地址、目标数据位置的基地址以及构成要传输的数据块的数据量写入其中。
3.如权利要求1所述的装置,其特征在于,DMA控制器具有其中控制装置将指定参数位置的基地址的值写入其中的至少一个传输参数位置基地址寄存器,DMA控制器从该参数位置的基地址获得数据块传输的参数。
4.如权利要求3所述的装置,其特征在于,DMA控制器从其中获得传输参数的参数位置至少存储源数据位置的基地址、目标数据位置的基地址以及构成要传输的数据块的数据量。
5.一种装置,包括第一存储器装置,其中分配了具有第一传输中要传输的数据块的源数据位置;第二存储器装置,其中分配了用于第一传输中要传输的数据块的目标数据位置;控制装置,它与第一和第二存储器装置两者耦合并能执行机器可读的指令;DMA控制器,它与控制装置以及第一和第二装置两者耦合,并具有控制装置将指定第一参数的基地址的值写入其中的传输参数位置基地址寄存器,其中DMA控制器从该第一参数位置的基地址获得第一传输的参数。
6.如权利要求5所述的装置,其特征在于,所述DMA控制器从其中获得第一传输参数的第一参数位置至少存储源数据位置的基地址、目标数据位置的基地址以及构成第一传输中要传输的数据块的数据量。
7.如权利要求6所述的装置,其特征在于,DMA控制器从其中获得第一传输参数的第一参数位置还存储第一传输状况位置的基地址,其中控制装置将指示第一传输状况的值写入该第一传输状况位置的基地址中。
8.如权利要求6所述的装置,其特征在于,DMA控制器从其中获得第一传输参数的第一参数位置还存储第二参数位置的基地址,其中DMA控制器从该第二参数位置的基地址获得第二传输的参数。
9.如权利要求8所述的装置,其特征在于,DMA控制器从其中获得第二传输参数的第二参数位置还存储第二传输状况位置的基地址,其中控制装置将指示第二传输状况的值写入该第二传输状况位置的基地址。
10.一种方法,包括将用于由DMA控制器实施的第一数据块的传输的第一组参数写到存储器装置内分配的第一传输参数位置,其中用于第一数据块传输的参数由第一传输状况位置的基地址构成;将第一传输参数位置的基地址写入DMA控制器的寄存器;通过访问第一传输参数位置以获得要实施的数据块的传输参数来触发DMA控制器以开始实施第一数据块的传输;以及访问第一传输状况位置以确定DMA控制器是否已将一值写入第一传输状况位置,指示第一数据块的传输已完成。
11.如权利要求10所述的方法,其特征在于,触发DMA控制器以开始实施第一数据块的传输还包括从第一传输参数位置获得第一数据源位置的基地址,在第一数据块的传输期间从该第一数据源位置读取第一数据块,其中第一数据源位置分配于第一存储器装置内;从第一传输参数位置获得第一数据目标位置的基地址,在第一数据块的传输期间将第一数据块写入该第一数据目标位置,其中第一数据目标位置分配于第二存储器装置内;以及从第一传输参数位置获得指定要传输的第一数据块所包含的数据量的值。
12.如权利要求10所述的方法,其特征在于,还包括访问第一传输参数位置以获得具有用于第二数据块传输的第二参数组的第二传输参数位置的基地址。
13.一种包括代码的机器可访问介质,所述代码在由电子装置内的处理器执行时使得该电子装置将用于由DMA控制器实施的第一数据块的传输的第一组参数写到存储器装置内分配的第一传输参数位置,其中用于第一数据块传输的参数由第一传输状况位置的基地址构成;将第一传输参数位置的基地址写入DMA控制器的寄存器;通过访问第一传输参数位置以获得要实施的数据块的传输参数来触发DMA控制器以开始实施第一数据块的传输;以及访问第一传输状况位置以确定DMA控制器是否已将一值写入第一传输状况位置,指示第一数据块的传输已完成。
14.如权利要求13所述的机器可访问介质,其特征在于,进一步使得该电子装置从第一传输参数位置获得第一数据源位置的基地址,在第一数据块的传输期间从该第一数据源位置读取第一数据块,其中第一数据源位置分配于第一存储器装置内;从第一传输参数位置获得第一数据目标位置的基地址,在第一数据块的传输期间将第一数据块写入该第一数据目标位置,其中第一数据目标位置分配于第二存储器装置内;以及从第一传输参数位置获得指定要传输的第一数据块所包含的数据量的值。
15.如权利要求13所述的方法,其特征在于,还包括访问第一传输参数位置以获得具有用于第二数据块传输的第二参数组的第二传输参数位置的基地址。
全文摘要
一种用于实施DMA传输的装置和方法,其中将地址写入DMA控制器的DMA寄存器,指定提供数据块传输参数或者DMA控制器要写入数据块的传输状况的存储器装置内的存储器位置。
文档编号G06F13/20GK1813248SQ200480018327
公开日2006年8月2日 申请日期2004年6月23日 优先权日2003年6月30日
发明者J·倪, W·福特罗 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1