CN1813248A - 可重寻址的虚拟dma控制和状况寄存器 - Google Patents

可重寻址的虚拟dma控制和状况寄存器 Download PDF

Info

Publication number
CN1813248A
CN1813248A CNA2004800183276A CN200480018327A CN1813248A CN 1813248 A CN1813248 A CN 1813248A CN A2004800183276 A CNA2004800183276 A CN A2004800183276A CN 200480018327 A CN200480018327 A CN 200480018327A CN 1813248 A CN1813248 A CN 1813248A
Authority
CN
China
Prior art keywords
transmission
parameter
data
base address
dma controller
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
Application number
CNA2004800183276A
Other languages
English (en)
Other versions
CN100421097C (zh
Inventor
J·倪
W·福特罗
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN1813248A publication Critical patent/CN1813248A/zh
Application granted granted Critical
Publication of CN100421097C publication Critical patent/CN100421097C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)
  • Time-Division Multiplex Systems (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

一种用于实施DMA传输的装置和方法,其中将地址写入DMA控制器的DMA寄存器,指定提供数据块传输参数或者DMA控制器要写入数据块的传输状况的存储器装置内的存储器位置。

Description

可重寻址的虚拟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控制器能“循环回到”第一个。
已结合较佳实施例描述了本发明。显然,根据以上描述,大量可选方案、修改、变型和使用是本领域熟练技术人员显而易见的。本领域的熟练技术人员可以理解,本发明可实施来支持计算机系统之外的电子装置,诸如音频/视频娱乐装置、车载控制器装置、电子线路控制的电气设备等。

Claims (15)

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所述的方法,其特征在于,还包括访问第一传输参数位置以获得具有用于第二数据块传输的第二参数组的第二传输参数位置的基地址。
CNB2004800183276A 2003-06-30 2004-06-23 可重寻址的虚拟dma控制和状况寄存器 Expired - Fee Related CN100421097C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/610,660 2003-06-30
US10/610,660 US7120708B2 (en) 2003-06-30 2003-06-30 Readdressable virtual DMA control and status registers

Publications (2)

Publication Number Publication Date
CN1813248A true CN1813248A (zh) 2006-08-02
CN100421097C CN100421097C (zh) 2008-09-24

Family

ID=33541181

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004800183276A Expired - Fee Related CN100421097C (zh) 2003-06-30 2004-06-23 可重寻址的虚拟dma控制和状况寄存器

Country Status (9)

Country Link
US (1) US7120708B2 (zh)
EP (1) EP1639481B1 (zh)
JP (2) JP4800207B2 (zh)
KR (1) KR100868395B1 (zh)
CN (1) CN100421097C (zh)
AT (1) ATE379812T1 (zh)
DE (1) DE602004010399T2 (zh)
TW (1) TWI296762B (zh)
WO (1) WO2005006201A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107544928A (zh) * 2016-06-29 2018-01-05 罗伯特·博世有限公司 直接存储器访问控制装置和对此的运行方法
CN111797046A (zh) * 2017-09-27 2020-10-20 成都忆芯科技有限公司 PCIe控制器及其数据传输方法
CN113032300A (zh) * 2021-03-23 2021-06-25 安谋科技(中国)有限公司 数据的传输控制方法

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI258077B (en) * 2004-05-11 2006-07-11 Winbond Electronics Corp Method of DMA and program DMA controller for card reader
US7579683B1 (en) 2004-06-29 2009-08-25 National Semiconductor Corporation Memory interface optimized for stacked configurations
EP1617335A1 (fr) * 2004-07-12 2006-01-18 Stmicroelectronics SA Procédé de programmation d'un contrôleur de DMA dans un système sur puce et système sur puce associé
GB2433611A (en) * 2005-12-21 2007-06-27 Advanced Risc Mach Ltd DMA controller with virtual channels
US20080082715A1 (en) * 2006-09-29 2008-04-03 Honeywell International Inc. Data transfers over multiple data buses
KR100891508B1 (ko) * 2007-03-16 2009-04-06 삼성전자주식회사 가상 디엠에이를 포함하는 시스템
DE102007029833B4 (de) * 2007-06-28 2019-03-28 Texas Instruments Deutschland Gmbh Mikrocontroller mit Datenmodifikationsmodul und System umfassend ein Datenmodifikationsmodul
US7822885B2 (en) * 2007-10-16 2010-10-26 Applied Micro Circuits Corporation Channel-less multithreaded DMA controller
JP5268841B2 (ja) * 2009-09-11 2013-08-21 三菱電機株式会社 情報処理装置
JP5527512B2 (ja) * 2009-09-28 2014-06-18 ソニー株式会社 バスプロトコル変換装置及びバスプロトコル変換方法
JP5351339B2 (ja) * 2010-06-07 2013-11-27 株式会社日立製作所 データ転送装置及びデータ転送方法
TWI465905B (zh) 2010-09-22 2014-12-21 Toshiba Kk 記憶體系統、主機控制器、及直接記憶體存取之控制方法
US8959278B2 (en) * 2011-05-12 2015-02-17 Freescale Semiconductor, Inc. System and method for scalable movement and replication of data
CN109739805B (zh) * 2018-12-27 2023-06-23 北京中星微电子有限公司 配置模块的参数的方法和配置模块的参数的装置

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04177445A (ja) * 1990-11-08 1992-06-24 Nec Corp ディスクリプタ制御方式
JPH04324561A (ja) * 1991-04-25 1992-11-13 Shikoku Nippon Denki Software Kk Dma情報のポーリング制御装置
EP0544083A3 (en) * 1991-11-26 1994-09-14 Ibm Interleaved risc-type parallel processor and processing methods
JPH0696007A (ja) * 1992-09-17 1994-04-08 Fujitsu Ltd Dma転送方式
US5828903A (en) * 1994-09-30 1998-10-27 Intel Corporation System for performing DMA transfer with a pipeline control switching such that the first storage area contains location of a buffer for subsequent transfer
US5687395A (en) * 1994-10-28 1997-11-11 Hewlett-Packard Company Main memory buffer for low cost / high performance input/output of data in a computer system
US5828901A (en) * 1995-12-21 1998-10-27 Cirrus Logic, Inc. Method and apparatus for placing multiple frames of data in a buffer in a direct memory access transfer
KR0160193B1 (ko) * 1995-12-30 1998-12-15 김광호 직접메모리접근 제어장치
US6049842A (en) * 1997-05-01 2000-04-11 International Business Machines Corporation Efficient data transfer mechanism for input/output devices
US6065071A (en) 1998-03-26 2000-05-16 Nvidia Corporation Method and apparatus for trapping unimplemented operations in input/output devices
US6023738A (en) 1998-03-30 2000-02-08 Nvidia Corporation Method and apparatus for accelerating the transfer of graphical images
US6134607A (en) * 1998-04-03 2000-10-17 Avid Technology, Inc. Method and apparatus for controlling data flow between devices connected by a memory
US6202106B1 (en) 1998-09-09 2001-03-13 Xilinx, Inc. Method for providing specific knowledge of a structure of parameter blocks to an intelligent direct memory access controller
JP3206568B2 (ja) * 1998-10-28 2001-09-10 日本電気株式会社 Dma制御方法及び装置
US6314478B1 (en) * 1998-12-29 2001-11-06 Nec America, Inc. System for accessing a space appended to a circular queue after traversing an end of the queue and upon completion copying data back to the queue
GB2371641B (en) * 2001-01-27 2004-10-06 Mitel Semiconductor Ltd Direct memory access controller for circular buffers
US7287101B2 (en) 2003-08-05 2007-10-23 Intel Corporation Direct memory access using memory descriptor list

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107544928A (zh) * 2016-06-29 2018-01-05 罗伯特·博世有限公司 直接存储器访问控制装置和对此的运行方法
CN107544928B (zh) * 2016-06-29 2024-03-29 罗伯特·博世有限公司 直接存储器访问控制装置和对此的运行方法
CN111797046A (zh) * 2017-09-27 2020-10-20 成都忆芯科技有限公司 PCIe控制器及其数据传输方法
CN111797046B (zh) * 2017-09-27 2022-04-08 成都忆芯科技有限公司 PCIe控制器及其数据传输方法
CN113032300A (zh) * 2021-03-23 2021-06-25 安谋科技(中国)有限公司 数据的传输控制方法

Also Published As

Publication number Publication date
JP2007520770A (ja) 2007-07-26
ATE379812T1 (de) 2007-12-15
TW200508876A (en) 2005-03-01
US20040267979A1 (en) 2004-12-30
DE602004010399T2 (de) 2008-10-09
WO2005006201A1 (en) 2005-01-20
KR20060028705A (ko) 2006-03-31
KR100868395B1 (ko) 2008-11-11
JP5275414B2 (ja) 2013-08-28
EP1639481B1 (en) 2007-11-28
CN100421097C (zh) 2008-09-24
EP1639481A1 (en) 2006-03-29
DE602004010399D1 (de) 2008-01-10
JP4800207B2 (ja) 2011-10-26
JP2011204269A (ja) 2011-10-13
TWI296762B (en) 2008-05-11
US7120708B2 (en) 2006-10-10

Similar Documents

Publication Publication Date Title
CN1813248A (zh) 可重寻址的虚拟dma控制和状况寄存器
US7975120B2 (en) Dynamic allocation of message buffers
CN1082210C (zh) 存储器直接存取控制设备
US7287101B2 (en) Direct memory access using memory descriptor list
EP1709543B1 (en) A multiple address two channel bus structure
CN101930412B (zh) 存储器微块化请求重排序
CN1570896A (zh) 直接存储器存取控制器
CN1088215C (zh) 不按顺序执行读写指令的存储器控制器
CN1855026A (zh) 用于选择命令发送到存储器的方法、存储器控制器和系统
CN101034384A (zh) 一种能同时进行读写操作的dma控制器及传输方法
CN1637256A (zh) 数据通信装置及使用该装置的控制器
CN1615474A (zh) 统一存储器结构中仲裁的方法与设备
CN1159657C (zh) 总线系统和其数据传输方法
CN1633128A (zh) 一种通讯传输控制装置及实现通讯协议控制的方法
CN1659533A (zh) 总线系统、在总线系统中使用站和总线接口
CN101421705A (zh) 具有高储存容量的多媒体卡
JP2012521588A (ja) 回路構成におけるデータ交換を制御するための回路構成、および方法
CN1109301C (zh) 显示存储器控制设备
US6327636B1 (en) Ordering for pipelined read transfers
CN1792068A (zh) 用于通信协议的消息存储器和方法
US20090094397A1 (en) Host controller device and data transfer control method
KR101034514B1 (ko) 전자 데이터 프로세싱 회로 및 데이터 프로세싱 방법
CN1783044A (zh) 一种片上系统
CN1046040C (zh) 与总线位数相匹配的存贮器直接存取结构
CN1874268A (zh) 实现网络媒体存取控制的方法与相关装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20080924

Termination date: 20100623