专利名称:直接存储器存取控制方法、直接存储器存取控制器、信息处理系统及程序的制作方法
技术领域:
本发明涉及一种直接存储器存取控制技术,信息处理技术和程序,更加具体地,涉及一种可应用于在需要高速数据传送的信息处理系统中的直接存储器存取(DMA)技术等的有效技术。
背景技术:
在计算机系统中,为了提高计算机系统的性能而在存储器与存储器之间或存储器与输入/输出装置(I/O装置)之间高效地实现数据传送是一项很重要的课题。已知DMA是解决这一课题的方法。(例如,参见专利文献1)输入/输出(I/O)装置向存储器传送数据或者接收从存储器传送过来的数据,并且在I/O装置中包含有存储装置和接口装置。DMA是这样一种机制其中,被称为DMA控制电路的专用硬件根据来自中央处理单元(CPU)的指令控制数据传送,取代CPU来控制计算机系统中的数据传送。
在这样的情况下,CPU、存储器和DMA控制电路是通过例如存储器处理中心(memory hub)相互连接起来的,并假定CPU、存储器和DMA控制电路通过该存储器处理中心发送和接收数据。
从CPU下达到DMA控制电路的指令称为描述符(descriptor),并且在CPU在存储器中准备了描述符之后,DMA电路从存储器中自主地读取描述符并且引用该描述符的方法已经得到了广泛地使用。
换句话说,在传统的方法中,在由DMA向CPU控制下的本地存储器传送的数据之外,还开发出了一种包含DMA的控制信息(传送源的地址、传送目的地的地址、传送大小等)的描述符。
当由CPU启动了DMA时,DMA电路读取描述符并分析控制信息,并且按照由描述符指定的数据大小将由传送目的地(本地存储器)的地址指定的数据传送到I/O装置。
从上述操作过程可知,在CPU准备好了描述符并启动了DMA控制电路之后,CPU能够在实现数据传送的同时实现任何其它的处理,直到通过中断将DMA完成通知提供给CPU为止。这样,将CPU从相对简单的数据传送处理中解脱出来,用于更加复杂的处理,从而可以改善系统的性能。
不过,在传统的DMA控制技术中,如上所述,必须在存储器中分开地准备将描述符和数据,因此会有下述技术问题。
在上述传统技术中,在“描述符提取”(DMA控制电路读取描述符)和“数据提取”(DMA控制电路读取作为DMA传送目标的数据)中,存储器读取发生两次,并且当经由存储器处理中心在任何接口中执行通常由DMA传送实现的读取非常长的数据传送时,因为要在存储器处理中心中进行数据的预提取,所以数据传送所伴随的开销会变大。
专利文献1中公开了这样一种技术,这种技术能够借助程序通过下述方式来改变DMA处理装置的功能将DMA处理装置的各项功能与指令字关联起来、从外部将包括指令字的传送处理进程输入到DMA处理装置的程序存储区域中,并且依照与所输入的指令字相应的功能执行传送处理,不过,前述的技术问题在这一技术中没有受到重视。
专利文献1Kokai(未审查专利公开)No.05-216808发明内容本发明的目的是提高信息处理系统中通过DMA传送数据的效率。
本发明的第一个方面是提供一种DMA控制方法,按照这种方法,DMA控制器依照由处理装置提供给DMA控制器的控制信息将存储器中的数据传送给输入/输出装置,该方法包括处理装置将包括控制信息和数据的信息块设定到存储器中的步骤;由处理装置将信息块的地址信息提供给DMA控制器的步骤;DMA控制器根据所述地址信息从存储器中读取信息块并且提取控制信息的步骤;和
DMA控制器根据控制信息将信息块中的数据传送给I/O装置的步骤。
本发明的第二个方面是提供一种DMA控制方法,其依照第一方面的DMA控制方法,其中控制信息包括数据的传送目的地的地址和数据的大小。
本发明的第三个方面是提供一种DMA控制器,该控制器依照由处理装置提供的控制信息将存储器中的数据传送给I/O装置,该DMA控制包括地址设定单元,由处理装置在该地址设定单元中设置包含控制信息和数据的信息块在存储器中的地址信息;缓存器,存储有从存储器中读取的信息块的包含控制信息的部分;和数据传送控制单元,用于从缓存器中的信息块中提取控制信息并且根据该控制信息将包含在信息块内的数据传送给I/O装置。
本发明的第四个方面是提供一种信息处理系统,该系统包括处理装置、存储器和DMA控制器,该DMA控制器根据由处理装置提供的控制信息将存储器中的数据传送给I/O装置,其中处理装置包括实现以下操作的控制逻辑在存储器中设置包含控制信息和数据的信息块的操作,和将该信息块的地址信息发送给DMA控制器的操作;和DMA控制器根据从处理装置发来的地址信息从存储器中读取信息块、提取包含在信息块中的控制信息、并且根据该控制信息将包含在信息块中的数据传送给I/O装置。
本发明的第五个方面是提供一种程序,该程序用于控制处理装置,该处理装置在进行从存储器到I/O装置的数据传送时,使DMA控制器实现传送处理,其中使得处理装置进行在存储器中设置包含传送处理所需的控制信息和数据的信息块的操作;和提供信息块的地址信息并且启动DMA控制器的操作。
按照本发明,DMA控制器能够在一次存储器访问中从存储器中获取作为一体的信息块的所要传送的数据和该数据的DMA传送处理所需的控制信息,从而能够使得存储器访问所需的时间比分开存取控制信息和数据的传统技术所需的时间短。因此,能够提高信息处理系统中通过DMA传送数据的效率。
图1是示出了本发明的实施例的信息处理系统的操作的示例的时序图。
图2是示出了用于本发明的实施例的信息处理系统内的DMA的信息块的结构示例的概念性图解说明。
图3是示出了按照本发明的实施例的信息处理系统的结构示例的框图。
图4是示出了包含在按照本发明的实施例的信息处理系统内的DMA控制器的结构示例的概念性图解说明。
图5是示出了按照本发明的实施例的DMA控制器的操作示例的流程图。
图6是示出了按照本发明的实施例的信息处理系统的操作示例的时序图。
图7是示出了按照本发明的实施例的信息处理系统内的CPU的操作示例的流程图。
具体实施例方式
下面将参照附图介绍本发明的实施例的详细内容。
图1是示出了本发明的实施例的信息处理系统的操作的示例的时序图。图2是示出了用于本发明的实施例的信息处理系统内的DMA的信息块的结构示例的概念性图解说明。图3是示出了本发明的实施例的信息处理系统的结构示例的框图。图4是示出了包含在按照本发明的实施例的信息处理系统内的DMA控制器的结构示例的概念性图解说明。图5是示出了本发明的实施例的DMA控制器的操作示例的流程图。图6是示出了本发明的实施例的信息处理系统的操作示例的时序图。图7是示出了本发明的实施例的信息处理系统内的CPU的操作示例的流程图。
如图3所示,本实施例中的信息处理系统10包括CPU(中央处理单元)11、存储器12、DMA控制器13和存储器处理中心14。
DMA控制器13经I/O接口15与I/O装置20相连接。
要由CPU 11执行的程序和数据保存在存储器12中,并且所需的信息处理是通过CPU运行该程序来实现的。
当存储器12与I/O装置20之间需要进行数据传送时,通过CPU控制DMA控制器13,由DMA控制器13代替CPU 11来处理数据传送,这将稍后进行介绍。
在下文中,将DMA控制器13代替CPU 11在存储器12与I/O装置之间进行的数据传送处理称为DMA(直接存储器存取)。
在本实施例中,用于使CPU 11控制DMA控制器13以使其实现DMA的控制程序12a(控制逻辑)存储在存储器12中。该控制程序12a使得CPU 11实现图6和图7中所示的处理。
按照本实施例,如图2所示,控制程序12a具有在存储器12中产生作为信息块的所要传送的数据32和描述符31(其为对数据32进行DMA传送控制所需的控制信息)的功能。
控制程序12a将该信息块30在存储器12内的存储区域中的顶端地址(下文中称为信息块地址30a)提供给DMA控制器13,并且使DMA控制器13执行DMA。
如图4所示,本实施例中的DMA控制器13包括存储器接口13a、I/O接口13b、描述符提取电路13c、描述符缓存器13d、状态机电路13e、DMA启动控制寄存器13f、数据传送控制块13g和DMA地址指针寄存器13k(地址设置单元)。
存储器接口13a与存储器处理中心14相连接。I/O接口13b经I/O/接口15与I/O装置20相连接。
由CPU 11在DMA启动控制寄存器13f中设置DMA启动命令。
指明信息块30在存储器12中的存储位置的信息块地址30a由CPU 11设置在DMA地址指针寄存器13k中。
状态机电路13e在由设置在DMA启动控制寄存器13f中的命令启动的情况下,控制整个的DMA控制器13,从而使信息块30可以从由设置在DMA地址指针寄存器13k中的信息块地址30a指定的存储器12的区域中读取出来。
描述符提取电路13c将经存储器处理中心14和存储器接口13a从存储器12中读取出来的信息块30的包括描述符31的顶端部分保存在描述符缓存器13d中。
状态机电路13e提取并分析包含在存储于描述符缓存器13d内的信息块30中的描述符31,并且指示数据传送控制块13g进行数据传送,在接收到来自状态机电路13e的指令的情况下,数据传送控制块13g在存储器接口13a(存储器12)与I/O接口13b(I/O装置20)之间进行数据传送。
数据传送控制块13g包括存储器传送控制电路13h、数据缓存器13i和I/O装置传送控制电路13j。
存储器传送控制电路13h由状态机电路13e启动,并且经存储器接口13a进行存储器12与数据缓存器13i之间的数据传送。
I/O装置传送控制电路13j由状态机电路13e启动,并且经I/O接口13b进行数据缓存器13i与I/O装置20之间的数据传送。
在本实施例中,描述符提取电路13c在描述符缓存器13d中存储信息块30(其经存储器处理中心14和存储器接口13a从存储器12读取到数据缓存器13i)的、包含描述符31的信息块30的顶端部分。
换句话说,当信息块30经存储器接口13a从存储器12读取到数据缓存器13i时,在描述符提取电路13c中并行地对包含描述符31的数据块30的顶端部分进行存储。
下面介绍本实施例的操作示例。
如图1所示,当借助DMA将存储器12中的数据传送到外部I/O装置20时,由控制程序12a控制的CPU 11产生包括描述符31和数据32的信息块30,并且将该信息块30存储到存储器12中(步骤201)。
然后,CPU 11在DMA地址指针寄存器13k中设置信息块地址30a(信息块30在存储器12中的存储区域的顶端地址),并且通过向DMA启动控制寄存器13f中写入写命令(从存储器12到I/O装置20的数据传送指令)来启动DMA控制器13(步骤202)。
由CPU 11启动的DMA控制器13访问存储器12并且根据设置在DMA地址指针寄存器13k中的信息块地址30a读取信息块30(步骤203)。
然后,DMA控制器13从所读取的信息块30中提取描述符31并且对其进行分析(步骤204),并且将数据32传送到由I/O地址31a指定的目标I/O装置20(步骤205)。
在该数据传送中,当完成了由传送数据大小31b指定的大小的数据32的传送处理时,(例如)通过中断通知CPU 11完成了DMA(步骤206)。
在图5中所示的流程图中,给出了这时的DMA控制器13的操作的详细解释说明。换句话说,DMA控制器13监测DMA启动控制寄存器13f,并且处于待机状态(步骤101),并且当写命令从CPU 11写入到DMA启动控制寄存器13f时,DMA控制器13从DMA地址指针寄存器13k中读取信息块地址30a(步骤102),并且根据该信息块地址30a从存储器12中读取信息块30(步骤103)。
此时,信息块30被读取到数据缓存器13i中,并且通过描述符提取电路13c并行地将信息块30的顶端部分中的描述符31读取到描述符缓存器13d中。
状态机电路13e对描述符缓存器13d中的描述符31进行分析、指定I/O地址31a和传送数据大小31b(M)的信息(步骤104)、根据I/O地址31a和传送数据大小31b将数据32从数据缓存器13i传送到由I/O地址31a指定的目标I/O装置20(步骤105,步骤106)并且检查传送大小(步骤107)。
当已经传送的数据的累计大小N等于由传送数据大小31b指定的数据大小M时,状态机电路13e通过中断等向CPU 11发送传送完成通知(步骤108)。
在从I/O装置20到存储器12的DMA的情况下,执行图6的下半部分所示的处理。
换句话说,CPU 11在取得了信息块30在存储器12中的存储区域(步骤211)之后,将指定传送源的I/O装置20的传送源地址和传送数据大小31b设置在信息块30的描述符中,并且在DMA地址指针寄存器13k中设置信息块地址30a,CPU 11在DMA启动控制寄存器13f中设置读取命令(从I/O装置20到存储器12的数据传送指令),从而启动DMA控制器13(步骤212)。
当将读取命令设置在DMA启动控制寄存器13f中时,DMA控制器13从存储器12中读取信息块30的描述符31(步骤213)、对描述符31进行分析(步骤214)、将传送数据从I/O装置20读取到数据缓存器13i(步骤215)并且将所传送的数据写入到存储器12中的数据32区域(步骤216)。
当传送完成时,DMA控制器13通过中断向CPU 11发送传送完成通知(步骤217)。
在图7的流程图中给出了上述的从存储器12到I/O装置20的数据传送(写传送)处理中CPU 11的操作过程,和从I/O装置20到存储器12的数据传送(读取传送)处理中CPU 11的操作过程。
首先,CPU 11判断数据传送是否为写传送(从存储器12到I/O装置20的数据传送)(步骤200),如果是写传送,CPU 11将信息块30存储到存储器12中(步骤201a)。然后CPU 11在信息块30内的描述符31的传送数据大小31b中设置传送字节长度(M)(步骤201b),并且将指定传送目的地的I/O装置20的I/O地址31a设置在I/O地址31a中(步骤201c)。
然后,在CPU 11通过将信息块地址30a设置在DMA地址指针寄存器13k中(步骤202a)并且将写命令设置在DMA启动控制寄存器13f中而启动了DMA控制器13(步骤202b)之后,CPU 11进行其它处理(步骤220)。
当CPU 11判定数据传送不是写传送(而是读取传送)时,CPU 11在存储器12中取得用于存储信息块30的区域(步骤211a)。然后,CPU 11将传送字节长度(M)设置在信息块30的存储区域内的描述符31区域中的传送数据大小区域31b里(步骤211b),并且此外还将指定传送目的地的I/O装置20的I/O地址31a设置在I/O地址31a区域中(步骤211c)。
接下来,在CPU 11通过将信息块地址30a设置在DMA地址指针寄存器13k中(步骤212a)并且将写入命令设置在DMA启动控制寄存器13f中(步骤202b)而启动了DMA控制器13之后,CPU 11进行到其它处理(步骤220)。
在正在进行前述的“其它处理”的同时,如前所述,CPU 11通过中断等从DMA控制器13接收到DMA完成通知。
按照本实施例,CPU 11将数据32和控制数据32的DMA处理所需的描述符31作为整体组保存在存储器12中的信息块30中,并且在一次读取访问中将该信息块从DMA控制器13读取到存储器12中,从而能够避免从存储器12中分别读取描述符31和数据32时出现的开销,并且可以在短时间内有效地实现从存储器12到I/O装置20的DMA处理。
可以将接口装置和存储装置(比如磁盘装置、光盘装置、磁光盘装置和磁带装置)之外的其它DMA控制器与信息处理系统中的DMA控制器13相连接,作为I/O装置20。
作为信息处理系统的示例,介绍一种存储装置。该存储装置包括由多个存取装置(比如主机)共享的存储器和控制存储器和存取装置之间的数据传送的存储控制装置。在这种情况下,存储器相当于I/O装置20,而存储控制装置相当于信息处理系统10。通过将本发明应用于该存储装置,能够提高从存储装置到存储器的数据传送的效率。
勿庸置疑,本发明可以在不超出其主旨的范围内加以改变,而并不局限于上述实施例中给出的结构。
按照本发明,能够提高借助信息处理系统中的DMA传送数据的效率。
权利要求
1.一种直接存储器存取(DMA)控制方法,DMA控制器依照由处理装置提供给所述DMA控制器的控制信息将存储器中的数据传送给输入/输出装置,该方法包括所述处理装置在存储器中设置包括控制信息和数据的信息块的步骤;由所述处理装置将所述信息块的地址信息提供给所述DMA控制器的步骤;所述DMA控制器根据所述地址信息从所述存储器中读取信息块并提取所述控制信息的步骤;和所述DMA控制器根据所述控制信息将信息块中的数据传送给I/O装置的步骤。
2.根据权利要求1所述的DMA控制方法,其中所述控制信息包括所述数据的传送目的地的地址和所述数据的大小。
3.根据权利要求1所述的DMA控制方法,其中所述处理装置、所述存储器和所述DMA控制器经由存储器处理中心相互发送和接收信息。
4.一种DMA控制器,该控制器依照由处理装置提供的控制信息将存储器中的数据传送给I/O装置,该DMA控制器包括地址设定单元,由所述处理装置在该地址设定单元中设置包含控制信息和数据的信息块在存储器中的地址信息;缓存器,将从存储器中读取的信息块的包含控制信息的部分保存到该缓存器中;以及数据传送控制单元,其从所述缓存器中提取所述信息块的控制信息并且根据该控制信息将包含在所述信息块内的数据传送给I/O装置。
5.根据权利要求4所述的DMA控制器,其中所述控制信息包括所述数据的传送目的地的地址和所述数据的大小。
6.根据权利要求4所述的DMA控制器,其中所述DMA控制器经存储器处理中心与所述处理装置和所述存储器相连接。
7.一种信息处理系统,该系统包括处理装置、存储器和DMA控制器,该DMA控制器根据由处理装置提供的控制信息将存储器中的数据传送给I/O装置,其中所述处理装置包括实现以下操作的控制逻辑在存储器中设置包含控制信息和数据的信息块的操作和将所述信息块的地址信息发送给DMA控制器的操作;和DMA控制器根据从所述处理装置发来的地址信息从存储器中读取所述信息块、提取包含在所述信息块中的控制信息,并且根据该控制信息将包含在信息块中的数据传送给I/O装置。
8.根据权利要求7所述的信息处理系统,其中所述控制信息包括所述数据的传送目的地的地址和所述数据的大小。
9.根据权利要求7所述的信息处理系统,还包括处理装置、存储器和DMA控制器都与之连接的存储器处理中心,其中处理装置、存储器和DMA控制器经由所述存储器处理中心相互发送和接收信息。
10.一种发送程序的信号,该程序用于控制处理装置,该处理装置在发生从存储器到I/O装置的数据传送时,使得DMA控制器实现传送处理,其中使得处理装置进行在存储器中设置包含传送处理所需的控制信息和数据的信息块的操作;和提供所述信息块的地址信息,并启动所述DMA控制器的操作。
11.根据权利要求10所述的发送程序的信号,其中所述控制信息包括所述数据的传送目的地的地址和所述数据的大小。
全文摘要
直接存储器存取控制方法、直接存储器存取控制器、信息处理系统及程序。在DMA控制方法中,DMA控制器依照由处理装置提供给DMA控制器的控制信息将存储器中的数据传送给输入/输出装置,处理装置实现该处理装置在存储器中设置包括控制信息和数据的信息块的步骤;由该处理装置将信息块的地址信息提供给DMA控制器的步骤;DMA控制器根据地址信息从存储器中读取信息块并提取控制信息的步骤;和DMA控制器根据控制信息将信息块中的数据传送给I/O装置的步骤。
文档编号G06F13/28GK1811741SQ200510072059
公开日2006年8月2日 申请日期2005年5月25日 优先权日2005年1月27日
发明者羽根田光正, 小川裕一 申请人:富士通株式会社