专利名称:使用分离事务处理来实现无缓冲器dma控制器的制作方法
技术领域:
本发明的实施例通常涉及输入/输出(I/O)处理器,更具体地,涉及直接存储器存取(DMA)控制器。
背景技术:
许多存储、网络和嵌入式应用为了获得最佳的性能需要快速的输入/输出(I/O)吞吐能力。I/O处理器允许服务器、工作站和存储子系统更快地传输数据,减小通信瓶颈,并通过从主中央处理单元(CPU)卸下I/O处理功能来改进系统的总体性能。
通常,I/O处理器中的CPU对直接存储器存取(DMA)控制器编程,以在指定的源和目的地之间移动数据,例如在局部存储器与主存储器之间。一旦DMA控制器被编程,它就会生成针对源的接口或控制器的读命令。该控制器或接口将生成对源的读命令,一旦其获得所读的数据,就将该数据放在到DMA控制器的总线上。典型的DMA控制器包括缓冲器,当数据在源与目的地之间传送时,例如在主存储器和局部存储器之间传送时,所述缓冲器暂时存储数据。DMA控制器将接收所读的数据并将其存储在DMA控制器数据缓冲器中。此时,DMA控制器将产生针对目的地的接口或控制器的写命令。目的地接口或控制器将接收该写命令。最后,DMA控制器向目的地接口或控制器提供存储在DMA控制器数据缓冲器中的写数据,以便将其写入到目的地。
使用DMA控制器数据缓冲器会导致对于I/O处理器的增大的面积需求,增大的功率需求,并且增大I/O处理器的复杂性。使用DMA控制器数据缓冲器还降低了I/O处理器的性能并增加了它的成本。
根据下面给出的详细说明和本发明各个实施例的附图,将更充分地理解本发明。然而,附图不应用于将本发明限制于特定实施例,而仅是为了说明和帮助理解。
图1示出了计算机系统的一个实施例的框图;图2示出了用于实现无缓冲器DMA控制器的一个实施例的流程图;图3示出了用于实现无缓冲器DMA控制器的另一个实施例的流程图;图4示出了用于实现无缓冲器DMA控制器的另一个实施例的流程图;以及图5示出了用于实现无缓冲器DMA控制器的另一个实施例的流程图。
具体实施例方式
描述了使用分离事务处理来实现无缓冲器直接存储器存取(DMA)控制器的方法和设备。在说明书中所提及的“一个实施例”意味着与该实施例相联系而描述的特定特征、结构或特性包括在本发明的至少一个实施例中。在本说明书中多处出现的短语“在一个实施例中”不必都指相同的实施例。
在以下说明中,阐述了大量细节。然而,对于本领域技术人员来讲,可以在无需这些特定细节的情况下实现本发明的实施例是显而易见的。在其它实例中,以框图的形式示出公知的结构和装置,而不必详细示出,以避免影响对本发明的理解。
图1是使用分离事务处理来实现无缓冲器DMA控制器的计算机系统100的一个实施例的框图。系统100包括局部存储器110、I/O处理器120、外部总线132、主机系统140和主存储器145。本发明的实施例不限于利用本地和主存储器来实现,通常可以在由I/O处理器访问的任何源和目的单元之间实现。
I/O处理器120还包括存储器控制器122、分离事务处理总线124、CPU 126、DMA控制器128和外部总线接口130。尽管本发明的实施例涉及DMA控制器的使用,但是可选的,可以使用其它盘控制器。I/O处理器120借助于连接到分离事务处理总线124的CPU 126和存储器控制器122来提供智能化的I/O。在一个实施例中,CPU 126是Pentium(奔腾)系列处理器,包括PentiumII(奔腾II)处理器系列,PentiumIII(奔腾III)处理器以及PentiumIV(奔腾IV)处理器,其可从位于California的Santa Clara的Intel公司获得。或者,可以使用其它CPU。
存储器控制器连接局部存储器110,局部存储器110可以包括随机存取存储器(RAM),例如同步动态RAM(SDRAM)。局部存储器154包括指令和数据,用于被CPU 126执行和使用。
分离事务总线124是能够支持读和写命令的明确的分离事务处理的总线。在一个实施例中,分离事务处理总线124是XSI片上总线。或者,可以使用其它能够进行分离事务处理的总线。
通常,分离事务处理将数据传输的地址阶段和数据信息阶段分离。通过使用标识符,例如序列ID,来实现分离这些阶段。使用标识符来关联分离事务处理的地址和数据阶段。在地址阶段期间,请求单元给命令和属性生提供标识符。
在数据传输阶段期间,提供数据的单元使用相同的标识符,以便在每个单元将命令关联在一起。在读取期间,提出读命令要求的代理将提供数据,而在写入期间,产生写命令的代理提供数据。另外,可以与标识符一起使用字节计数,以关联分离事务处理的地址和数据阶段。
在一个实施例中,DMA控制器128将数据从局部存储器110传送到主存储器145,或者,从主存储器145传送到局部存储器110。可以在不使用DMA控制器中的数据缓冲器的情况下进行数据传输。
例如,为了执行从主存储器145到局部存储器110的数据传输,CPU 126首先对DMA控制器128编程,以执行数据传输。DMA控制器128随后将生成针对存储器控制器122的写命令。该写命令包括标识符(ID),并且在一些实施例中还包括字节计数。然后DMA控制器128使用相同的ID和字节计数信息生成针对外部接口130的读命令。
然后,外部接口130将提出读命令要求,并在外部总线132上生成读命令。一旦外部接口130从主机系统140接收到所读取的数据,它就将所读取的数据以及相应的ID和字节计数放在分离事务处理总线124上。最后,由于所读取的数据的ID和字节计数与存储器控制器122之前从DMA控制器128接收到的写命令的ID和字节计数相匹配,所以存储器控制器122将接受所读取的数据。
在另一个实施例中,为了执行从局部存储器110到主存储器145的数据传输,CPU 126首先对DMA控制器128编程,以执行数据传输。然后,DMA控制器128将生成针对外部总线接口130的写命令。该写命令包括标识符(ID),并且在一些实施例中包括字节计数。然后,DMA控制器128使用相同的ID和字节计数信息生成针对存储器控制器122的读命令。
存储器控制器122随后将提出读命令的要求,并将从局部存储器110读取的数据以及相应的ID和字节计数放到分离事务处理总线124上。最后,由于ID和字节计数与外部总线接口130之前从DMA控制器128接收的写命令的ID和字节计数相匹配,所以外部总线接口130接受在分离事务处理总线124上的所读取的数据。
在另一个实施例中,为了执行从一个局部存储器位置110到另一个局部存储器位置110的数据传输,CPU 126首先对DMA控制器128编程,以执行数据传输。DMA控制器128随后将生成针对存储器控制器122的写命令。该写命令包括标识符(ID),并且在一些实施例中包括字节计数。然后,DMA控制器128使用相同的ID和字节计数信息生成针对存储器控制器122的读命令。
存储器控制器122随后将提出读命令要求,并将从局部存储器110读取的数据以及相应的ID和字节计数放到分离事务处理总线124上。最后,由于ID和字节计数与存储器控制器122预先从DMA控制器128接收的写命令的ID和字节计数相匹配,所以存储器控制器122接受在分离事务处理总线124上的所读取的数据。
在另一个实施例中,执行从一个主存储器位置145到另一个主存储器位置145的数据传输,CPU 126首先对DMA控制器128编程,以执行数据传输。DMA控制器128随后将生成针对外部总线接口130的写命令。该写命令包括标识符(ID),并且在一些实施例中还包括字节计数。然后,DMA控制器128使用相同的ID和字节计数信息生成针对外部总线接口130的读命令。
外部接口130随后将提出读命令要求,并在外部总线132上生成读命令。一旦外部接口130从主机系统140接收到所读取的数据,它就将所读取的数据以及相应的ID和字节计数放置到分离事务处理总线124上。最后,由于ID和字节计数与外部总线接口130之前从DMA控制器128接收的写命令的ID和字节计数相匹配,所以外部总线接口130接受在分离事务处理总线124上的所读取的数据。
图2示出了使用分离事务处理来实现无缓冲器DMA控制器的一个实施例的流程图。更具体地,该流程图描述了根据本发明的一个实施例,从主存储器到局部存储器的数据传输。在处理框210,CPU对DMA控制器编程,以执行数据传输。在处理框220,使用总线的分离事务处理功能,DMA控制器使用唯一的ID和字节计数生成针对存储器控制器的写命令。
在处理框230,DMA控制器使用与之前给予存储器控制器的写命令相同的ID和字节计数,生成针对外部接口的读命令(使用源地址)。在处理框240,外部接口提出读命令的要求,并在处理框250,在外部总线上生成读命令。在处理框260,一旦外部接口从主机系统接收到所读取的数据,那么它就在处理框270,将该数据放到分离事务处理总线上。最后,在处理框280,存储器控制器接受在分离事务处理总线上发现的、与早先由DMA处理器给予它的写命令的ID和字节计数相匹配的所读取的数据。
图3示出了使用分离事务处理来实现无缓冲器DMA控制器的一个实施例的流程图。更具体地,该流程图示出了根据本发明的一个实施例,从局部存储器到主存储器的数据传输。在处理框310,CPU对DMA控制器编程,以执行数据传输。然后在处理框320,DMA使用唯一的ID和字节计数生成针对外部接口的写命令(使用目的地址)。
在处理框330,DMA控制器使用在写命令中找到的相同的ID和字节计数,生成针对存储器控制器的读命令(使用源地址)。在处理框340,存储器控制器提出读命令的要求,并在处理框350,将所读取的数据返回到分离事务处理总线上。在处理框360,外部接口接受在分离事务处理总线上得到的所读取的数据,其与它之前接受的写命令的ID和字节计数相匹配。
图4示出了使用分离事务处理来实现无缓冲器DMA控制器的一个实施例的流程图。更具体地,该流程图示出了根据本发明的一个实施例,从局部存储器中的一个位置到局部存储器中的另一个位置的数据传输。在处理框410,CPU对DMA控制器编程,以执行数据传输。在处理框420,使用总线的分离事务处理功能,DMA控制器以唯一的ID和字节计数产生针对存储器控制器的写命令。
在处理框430,DMA控制器随后使用与在写命令中得到的相同的ID和字节计数,生成针对存储器控制器的读命令。在处理框440,存储器控制器提出读命令的要求,并且在处理框450,将所读取的数据返回到分离事务处理总线上。在处理框460,存储器控制器接受在分离事务处理总线上得到的、与它之前接受的写命令的ID和字节计数相匹配的所读取的数据。
图5示出了使用分离事务处理来实现无缓冲器DMA控制器的一个实施例的流程图。更具体地,该流程图示出了根据本发明的一个实施例,从主存储器中的一个位置到主存储器中的另一个位置的数据传输。在处理框510,CPU对DMA控制器编程,以执行数据传输。在处理框520,使用总线的分离事务处理功能,DMA控制器使用唯一的ID和字节计数生成针对外部接口的写命令。
在处理框530,DMA控制器使用与之前给予外部接口的写命令相同的ID和字节计数,生成针对外部接口的读命令。在处理框540,外部接口提出读命令的要求,并在处理框550在外部总线上生成读命令。在处理框560,一旦外部接口从主机系统接收到所读取的数据,它就在处理框570,将该数据放置到分离事务处理总线上。最后,在处理框580,外部接口接受在分离事务处理总线上得到的、与早先由DMA控制器给予它的写命令的ID和字节计数相匹配的所读取的数据。
尽管图2到5介绍了在主机和局部存储器之间和之中的数据传输的环境中,使用分离事务处理来实现无缓冲器DMA控制器,但是也可以实现其它的实施例,例如在外围设备和主存储器之间传输数据。通常,所提出的设备和方法能够在I/O处理器在其间传输数据的任何源与目的单元之间实现。
本发明的实施例使用由能够进行分离事务处理的总线提供的分离事务处理功能,来实现无需数据缓冲器的DMA控制器。由于数据被从一个存储器直接传输到另一个存储器,而不是在中间过程中存储在DMA数据缓冲器中,所以从DMA控制器去除数据缓冲器可以导致性能的提高及成本的降低。
对于本领域的技术人员来说,在阅读了上述说明之后,本发明的许多变化和修改无疑将变得显而易见,应理解,通过举例说明来示出并描述的任何特定实施例不应被认为是限制性的。因此,对各个实施例细节的提及不是要限制权利要求的范围,只有那些在权利要求自身的叙述中的特征被认为是限制本发明的。
权利要求
1.一种方法,包括从盘控制器生成针对目的单元的写命令,所述写命令包括标识符;从所述盘控制器生成针对源单元的读命令,所述读命令包括与所述写命令中的标识符相匹配的标识符;所述源单元在分离事务处理总线上发送所读取的数据,所述读取的数据包括所述读命令的标识符;以及如果所述读取的数据的标识符与所述写命令的标识符相匹配,则在目的单元通过所述分离事务处理总线接收所述读取的数据。
2.如权利要求1所述的方法,其中,所述盘控制器不包括缓冲器。
3.如权利要求1所述的方法,其中,所述写命令还包括字节计数,并且所述读命令还包括与所述写命令的字节计数相匹配的字节计数。
4.如权利要求3所述的方法,其中,接收所述读取的数据还包括,如果所述读取的数据的字节计数与所述写命令的字节计数相匹配,则接收所述读取的数据。
5.如权利要求1所述的方法,其中,所述目的单元是局部存储器,所述源单元是主存储器。
6.如权利要求1所述的方法,其中,所述目的单元是主存储器,所述源单元是局部存储器。
7.如权利要求1所述的方法,其中,所述目的单元是局部存储器中的一个位置,所述源单元是局部存储器中的另一个位置。
8.如权利要求1所述的方法,其中,所述目的单元是主存储器中的一个位置,所述源单元是主存储器中的另一个位置。
9.一种设备,包括盘控制器,其生成写命令并生成针对源单元的读命令,所述写命令包括写命令标识符,所述读命令包括与所述写命令标识符相匹配的读命令标识符;分离事务处理总线,其传输所读取的数据,所述读取的数据由所述源单元响应于所述读命令在所述总线上传输,并且所述读取的数据包括所述读命令标识符;以及目的单元,其接收所述写命令,并且如果所述写命令标识符与所述读命令标识符相匹配,则从所述分离事务处理总线移走所述读取的数据。
10.如权利要求9所述的设备,其中,所述DMA控制器不包括缓冲器。
11.如权利要求9所述的设备,其中,所述写命令还包括字节计数,所述读命令还包括与所述写命令的字节计数相匹配的字节计数。
12.如权利要求11所述的设备,其中,所述目的单元从所述分离事务处理总线移走所述读取的数据还包括,如果所述读取的数据的字节计数与所述写命令的字节计数相匹配,则从所述分离事务处理总线移走所述读取的数据。
13.如权利要求9所述的设备,其中,所述目的单元是局部存储器,所述源单元是主存储器。
14.如权利要求9所述的设备,其中,所述目的单元是主存储器,所述源单元是局部存储器。
15.如权利要求9所述的设备,其中,所述目的单元是局部存储器中的一个位置,所述源单元是局部存储器中的另一个位置。
16.如权利要求9所述的设备,其中,所述目的单元是主存储器中的一个位置,所述源单元是主存储器中的另一个位置。
17.一种系统,包括局部存储器;以及输入/输出处理器,其具有盘控制器,其生成写命令,并生成针对源单元的读命令,所述写命令包括写命令标识符,所述读命令包括与所述写命令标识符相匹配的读命令标识符;分离事务处理总线,其传输所读取的数据,所述读取的数据由所述源单元响应于所述读命令在所述总线上传输,并且所述读取的数据包括所述读命令标识符;以及目的单元,其接收所述写命令,并且如果所述写命令标识符与所述读命令标识符相匹配,则从所述分离事务处理总线移走所述读取的数据。
18.如权利要求17所述的系统,其中,所述DMA控制器不包括缓冲器。
19.如权利要求17所述的系统,其中,所述输入/输出处理器还包括中央处理单元,其连接到所述分离事务处理总线;存储器控制器,其连接到所述分离事务处理总线;以及外部总线接口,其连接到所述分离事务处理总线。
20.如权利要求17所述的系统,其中,所述写命令还包括字节计数,所述读命令还包括与所述写命令的字节计数相匹配的字节计数。
21.如权利要求20所述的系统,其中,所述目的单元从所述分离事务处理总线移走所述读取的数据还包括,如果所述读取的数据的字节计数与所述写命令的字节计数相匹配,则从所述分离事务处理总线移走所述读取的数据。
全文摘要
根据一个实施例,提出了一种方法,用于使用分离事务处理功能来实现无缓冲器DMA控制器。该方法的一个实施例包括从盘控制器生成针对目的单元的写命令,所述写命令包括标识符,从盘控制器生成针对源单元的读命令,所述读命令包括与所述写命令中的标识符相匹配的标识符,所述源单元在分离事务处理总线上传输所读取的数据,所述读取的数据包括读命令的标识符,并且如果所述读取的数据的标识符与所述写命令的标识符相匹配,则在目的单元通过分离事务处理总线接收所读取的数据。
文档编号G06F13/28GK101031898SQ200580033165
公开日2007年9月5日 申请日期2005年10月27日 优先权日2004年10月28日
发明者萨曼沙·埃迪里苏里亚 申请人:英特尔公司