加速存储器数据更新增加网络数据 传输效率的方法及电路 【技术领域】
本发明涉及一种增加一网络接口电路网络数据传输效率的方法及相关电路,特别是涉及一种增加网络接口电路中数据暂存存储器数据更新速度以增加网络数据传输效率的方法及相关电路。
背景技术
网络能连接不同地点的伺服器、终端机及计算机,使资料、数据、影音讯号能以电子讯号的形式在网络中传输、交换,使得知识、技术与信息得以突破地域的限制而自由交流、传播。因此,网络的建设也成为当前信息社会最重要的基础建设之一,而各信息业者也致力于网络数据传输配备的研发。尤其是网络数据传输效率的提升,更是增加网络服务效能重要的课题之一。
一般来说,网络使用者都是使用装备有一网络界面卡的计算机来存取网络服务的资源。请参考图1。图1为一计算机10配合一已知网络接口电路20的功能方块图。除了网络接口电路20外,计算机10中还设有一中央处理器14、一北桥电路16A、一南桥电路16B、一显示卡18B、一显示器18A、一系统存储器22与周边装置24。中央处理器14用来主控计算机10的运作,系统存储器22通常为一随机存取存储器,用来暂存中央处理器14运作期间必要的资料、数据及程序码等等,显示卡18B能处理影像数据,以将计算机10运作的情形以图形影像的方式显示在显示器187A上;而北桥电路16A即用来管理中央处理器14与显示卡18B、系统存储器22之间的数据交换。网络接口电路20可以是一网络接口卡(network interface card,NIC),用来使计算机10得以存取一网络12的数据;周边装置24则可以包括键盘、鼠标等的输入装置,硬盘机、光盘机等的非易失性存储装置以及音效卡等的讯号处理电路;而南桥电路16B即通过一总线来管理周边装置24、网络接口电路20与中央处理器14间的数据交换。
在网络接口电路20中,设有一存储存取电路26、一暂存存储器28、一介质控制模块30;介质控制模块30中则设有一缓冲存储器(buffer)32、一介质存取电路34以及一传输电路36。存储存取电路26可以是一直接存储存取(direct memory access,DMA)的实施机构,以直接存取暂存于系统存储器22中的数据;存储存取电路26由系统存储器22存取到的数据则可暂存至暂存存储器28中。暂存存储器28中的多个存储单元38,即可分别提供一定地存储容量;各存储单元38的存储容量可以是4字节(byte)。暂存存储器28可以是一先进先出(first-ion first-out)存储器,也就是说,先被存入暂存存储器28的数据,也会先被读出暂存存储器28。同样地,在介质控制模块30中的缓冲存储器32,也设有多个存储单元40,分别提供一定的存储容量,像是与存储单元38一样的存储容量。介质存取电路34可将暂存于缓冲存储器32中的数据通过传输电路36的讯号处理及调制,实际传输至网络12(譬如说是一集线器或另一计算机)。
如本领域的技术人员所知,要传输于网络上的数据会被划分为多个数据包,以数据包为单位来进行数据传输的管理。举例来说,数据包中会设有标头(head),可指示该数据包由是由那个网络接口电路发出,又是要传输至那一个网络接口电路等等。数据包也会设有检查码,以使接收数据包的远端计算机可以检查数据包在网络传输过程中是否发生了数据误传等情形。若是某个数据包在传输中发生了数据误传或是没有被正确地接收,也是以数据包为单位进行重传。数据包的标头、检查码等等,通常即由介质存取电路34来管理。
请参考图2(并一并参考图1)。当已知的网络接口电路20要将一数据包传输至网络12时,就会进行图2中的流程100。流程100中设有下列步骤:步骤102:开始。当中央处理器14要将数据以数据包形式传输至网络12时,
就可控制网络接口电路20开始进行流程100。步骤104:存储存取电路26取得对应到该数据包的数据包数据(在本文中用
数据包数据代表对应到某一数据包的所有数据,用以在讨论本发
明的如何处理暂存存储器等的特征时,与要在网络进行传输的数
据包发生混淆),将其暂存至暂存存储器28中。存储存取电路26
可经由南桥电路16B管理的总线,由系统存储器22中取得中央
处理器14要传输至网络12的数据包数据。步骤106:依照先进先出的原则,介质控制模块30将暂存在存储器28中的
数据包数据读至缓冲存储器32中,再由介质存取电路34将暂存
在缓冲存储器32中的数据包数据通过传输电路36实际传输至网
络12上。介质控制模块30中之所以要设置缓冲存储器32,是为
了协调存储存取电路26数据存取速度及介质存取电路34将讯号
传输至网络12时的传输速度。由于存储存取电路26是通过计算
机10中的总线取得数据,再依序暂存至暂存存储器28的各个存
储单元38中,故存储存取电路26将数据存入暂存存储器28的速
度(也就是存储存取电路26在单位时间内能取得的数据容量)大致
上就相当于计算机10中总线数据传输的速度。另一方面,介质
存取电路34将数据传输至网络12的速度(也就是介质存取电路
34在单位时间内能传输至网络12的数据容量)则取决于网络12
上数据“交通”的情形(像是网络频宽等)。由于存储存取电路26
取得数据的速度与介质存取电路34传输数据的速度可能会不一
致,故介质控制模块30中就设置了缓冲存储器32。当存储存取
电路26由系统存储器22取得数据的速度大于介质存取电路34
将数据传输至网络12的速度时,介质控制模块30由暂存存储器
28读入的一些数据(如某数据包数据的一部分)就可以先暂存至缓
冲存储器32,等待介质存取34以较慢的速度将其传输至网络12。
若是暂存存储器28本身存储空间的数据已经有相当的部分暂存
了尚未传输的数据时,暂存存储器28就会发出讯号使存储存取
电路26暂时不要再将数据存入暂存存储器28中,以等待介质存
取电路34将暂存存储器28中的未传输的数据先传输至网络12。
而后暂存存储器28才能释放出存储空间,使存储存取电路26能
继续存取系统存储器22中后续要传输至网络12的数据,并将之
暂存于暂存存储器28。步骤108:等到介质存取电路34将一个数据包的所有数据皆完整传输至网
络12后,介质存取电路34就能向暂存存储器28发出一传输完成
(transmission done)讯号。步骤110:在已知技术中,暂存存储器28会在接收到介质存取电路34的传
输完成讯号后,向存储存取电路26发出一中断要求(interrupt
request)讯号。步骤112:存储存取电路26会依据中断要求讯号适当地向中央处理器14发
出一中断讯号,要求中央处理器14继续传输对应到另一新数据
包的另一个数据包数据。接下来流程100就会返回至步骤104,
由存储存取电路26根据中央处理器14的指示,继续由系统存储
器22中取得新的数据包数据,以重新进行步骤104至106,将新
数据包传输至网络12。
为进一步说明流程100进行的情形,请继续参考图3至图6。图3至图6为图1中的计算机10在进行流程100时,相关数据配置的示意图。如图3所示,假设网络接口电路20准备要将一数据包传输至网络12,存储存取电路26就会由系统存储器22中将对应的数据包数据读出,并暂存至暂存存储器28中(也就是步骤102至步骤104);而此处就假设该数据包数据依序由五个部分的数据Dp1至Dp5组成,各笔数据分别占用一个存储单元38的存储空间。依照先进先出的原则,该数据包数据的第一部分数据Dp1会先存入至暂存存储器28中,接下来数据Dp2至Dp5也就依序被存入暂存存储器28中。如图4所示,先被暂存至缓冲存储器32的数据Dp1也会先被输出至缓冲存储器32;接下来数据Dp2至Dp4也就依序被输出至缓冲存储器32,此时流程100也就进行至步骤106。
如图5所示,介质存取电路34会依照数据Dp1至Dp4的顺序,依序将各数据连续地传输至网络12上,同时数据Dp5也会继续由暂存存储器28读出至缓冲存储器32,再由介质存取电路34将其传输至网络12上,让数据Dp1至Dp5形成完整的数据包。如图6所示,当介质存取电路34将对应到此数据包的数据Dp1至Dp5完全传输至网络12后,流程100也就完成了步骤106而进行至步骤108,由介质存取电路34向暂存存储器28发出一传输完成讯号42。接下来在步骤110中,暂存存储器28会根据传输完成讯号42向存储存取电路26发出一中断要求讯号44。到了步骤112,存储存取电路26就会根据中断要求讯号44,在适当时机发出一中断讯号46,要求中央处理器14指示如何取得另一新数据包的数据包数据,以便将一新的数据包的数据再度经由存储存取电路26、暂存存储器28、缓冲存储器32、介质存取电路34及传输电路36传输至网络12。就像图7所示,假设此一新的数据包数据中依序有部分数据Dp6、Dp7、Dp8、Dp9、Dp10等等的数据,就会被依序存入暂存存储器28中。而原来暂存于暂存存储器28中的数据Dp1至Dp5就能被释放(release),以暂存新的数据包的数据。举例来说,像是在图7中,原来用来暂存数据Dp1、Dp2的存储单元就在环式(ring)存储单元运用的情形下,分别被覆写而存入了新数据包的部分数据Dp9、Dp10;此时流程100也就回到步骤104,以开始传输新的数据包。
上述已知技术的缺点之一,就是网络数据传输的效率较低。由前述对已知技术的描述可知,已知的网络接口电路20要等到一数据包中的所有数据皆由介质存取电路34传输至网络12后,才会经由介质存取电路34传输完成讯号的触发,开始由存储存取电路26继续取得次一数据包的数据包数据。换句话说,在介质存取电路34结束一数据包的传输后,还要等待一段时间,让存储存取电路26由系统存储器22取得对应到次一数据包的数据包数据,再经由暂存存储器28、缓冲存储器32陆续传输至介质控制电路30,介质存取电路34才能开始传输另一数据包至网络12。由于一数据包传输完毕到次一数据包开始传输时还有一段时间,故已知网络接口电路20在网络上传输数据的效率较低,无法连续、顺畅地进行网络数据传输,也连带影响使用者存取网络资源的效率。
【发明内容】
因此,本发明的主要目的,在于提供一种加速网络数据传输效率的方法及相关电路,以克服已知技术的缺点,增进使用者存取网络资源的效率。
在已知技术中,由于存储存取电路是在介质存取电路将一数据包传输完毕后,才会根据传输完成讯号的触发将次一数据包的数据开始暂存至暂存存储器中,故在一数据包传输完成后,到次一数据包开始传输时,还有相当的时差,这也使得已知技术的网络接口电路无法有效提升网络数据传输的效率。
在本发明的网络接口电路中,基本上,暂存存储器只要将一数据包数据皆传输至(或传输经过)介质控制模块的缓冲存储器后(或说是一数据包数据已完全被此介质控制模块所处理过后),即可以发出中断要求讯号触发存储存取电路,让存储存取电路能开始将次一数据包数据存入暂存存储器中。换句话说,即使一数据包数据还有部分是存在介质控制模块的缓冲存储本中而尚未传输至网络,存储存取电路也已经开始将次一数据包数据存入至暂存存储器中。这样一来,在一数据包传输完毕到次一数据包开始传输,其间的时差就得以有效减少(因为不用再如已知技术般花一段时间,只专门让存储存取电路将数据包数据存入暂存存储器中,而是在介质控制模块进行将数据包数据传输至网络的同时,也让存储存取电路进行将数据包数据存入暂存存储器中的动作),使得本发明能顺利、连续地进行网络数据传输,进而增加网络数据传输的效率,让使用者能更便捷地存取网络资源。
【附图说明】
图1为一典型计算机配备一已知网络接口电路的功能方块示意图。
图2为图1中网络接口电路进行网络数据传输时的流程图。
图3至图7为图1中计算机进行图2中流程时在不同阶段数据存取的示意图。
图8为本发明网络接口电路配备在一计算机中的功能方块示意图。
图9为图8中网络接口电路进行网络数据传输时的流程示意图。
图10至图13为图8中计算机进行图9中流程时在不同阶段数据存取的示意图。
附图标号说明
10、50计算机 12、52网络
14、54中央处理器 16A、56A北桥电路
16B、56B南桥电路 18A、58A显示器
18B、58B显示卡 20、60网络接口电路
22、62系统存储器 24、64周边装置
26、66存储存取电路 28、68暂存存储器
30、70介质控制模块 32、72缓冲存储器
34、74介质存取电路 36、76传输电路
38、40、78、80存储单元 42、82传输完成讯号
44、84中断要求讯号 46、86中断讯号
88检查电路
Dp1-Dp10、D1-D10数据
200流程 202-208步骤
【具体实施方式】
请参考图8。图8为本发明中一网络接口电路60配备于一计算机50的功能方块示意图。除了网络接口电路60,计算机50中设有一中央处理器54、一北桥电路56A、一南桥电路56B、一显示器58A、一显示卡58B、一系统存储器62及周边装置64。中央处理器54用来主控计算机50的运作,显示卡58B用来处理影像数据,以将计算机50运作的情形以影像画面的方式显示于显示器58A上。系统存储器62可以是易失性的随机存取存储器,用来暂存中央处理器54运作期间所需的资料、数据及程序码;北桥电路56A则用来管理显示卡58B、系统存储器62与中央处理器54间的数据交换。网络接口电路60用来使计算机50能存取一网络52的资源,周边装置64则可包括键盘、鼠标等的输入装置,硬盘机、光盘机等的非易失性存储装置或是音效卡等的讯号处理电路;而南桥电路58B则通过一总线管理周边装置64、网络接口电路60与中央处理器54之间的数据交换。
在网络接口电路60中,则设有一存储存取电路66、一暂存存储器68、一检查电路88及一介质控制模块70。介质控制模块70中则设有一缓冲存储器72、一介质存取电路74及一传输电路76。存储存取电路66可以是一直接存储存取(direct memory access,DMA)装置,能由系统存储器62中取得计算机50要传输至网络52的数据,并将其暂存至暂存存储器68中。暂存存储器68可以是一先进先出(FIFO)的易失性存储器,其中的多个固定存储容量(像是4字节)的存储单元78,就是用来暂存存储存取电路66取得的数据。同样地,暂存存储器72中也设有多个存储单元80,用来存储一定容量的数据。而介质控制模块70则能将暂存存储器68中的数据以先进先出的原则读至缓冲存储器72中,再藉着介质存取电路74的控制,将缓冲存储器72中的数据依序经由传输电路76的处理、调制后、传输至网络52。在本发明中,检查电路88(通常是暂存存储器68的一部分),则能检查属于同一数据包的所有数据是否都已经由暂存存储器68传输至缓冲存储器72;当一数据包的所有数据都已经由暂存存储器68传输至缓冲存储器72后,检查电路88即可触发暂存存储器68向存储存取电路66发出一中断要求讯号。存储存取电路66则可根据暂存存储器68的中断要求讯号,以适当的时机通过南桥电路56B管理的总线向中央处理器54发出一中断讯号,要求中央处理器54让存储存取电路66取得下一个要传输至网络52的数据包。
请参考图9(并一并参考图8)。图9中的流程200即为图8中网络接口电路60与网络52之间数据传输进行的过程。流程200中有下列步骤:步骤202:开始。当计算机50要将数据以数据包的形式传输至网络52时,
即可开始进行流程200。步骤204:存储存取电路66由系统存储器62取得对应到一数据包的一数据
包数据,并将其暂存至暂存存储器68中。步骤206:依照先进先出的原则,先由存储存取电路66存入暂存存储器68
的部分数据包数据,也会先被传输至缓冲存储器72。同时介质存
取电路74也会开始将缓冲存储器72的数据包数据依序传输至网
络52。一旦暂存存储器68的检查电路88发现一数据包数据皆已
经由暂存存储器68传输至介质控制模块70后,暂存存储器68
就会向存储存取电路66发出一中断要求讯号。请注意,在已知
技术中,已知技术中的暂存存储器要等待介质控制模块将一数据
包数据完全传输至网络后,才会以传输完成讯号触发暂存存储器
发出中断要求讯号。但在本发明中,只要暂存存储器68确定一
数据包数据皆已经由暂存存储器68中完全传输至(或传输经过)
介质控制模块70的缓冲存储器72后,不管该数据包数据是否已
经被介质存取电路74完全传输到网络52上,暂存存储器68皆会
向存储存取电路66发出中断要求讯号。步骤208:根据暂存存储器68传来的中断要求讯号,存储存取电路即可在
适当的时机通过南桥电路56B管理的总线,向中央处理器54发
出一中断讯号,要求中央处理器54能让存储存取电路66取得另
一要传输至网络52的数据包的数据包数据。在存储存取电路66
取得次一数据包的数据包数据后,流程200也就回到步骤204中,
由存储存取电路66将次一数据包数据存入暂存存储器68中,准
备要将其传输至网络52上。
为进一步说明本发明上述流程200进行的情形,请继续参考图10至图13(并一并参考图9)。图10至图13为图8中网络接口电路60在以流程200进行网络数据传输时,在不同步骤中数据流动情形的示意图。假设现在有一数据包数据,依序由多个部分的数据D1至D5组成;而在流程200的步骤204中,存储存取电路66就会依序将数据D1至D5暂存至暂存存储器68中,如图10所示。暂存存储器68中的数据D1等也会依照先进先出的原则,以D1至D4的顺序,依序由介质控制模块70将其读入至缓冲存储器72中,如图11所示。此时介质存取电路74也会开始将缓冲存储器72中的数据经由传输电路76传输至网络52上。
如图12所示,等到暂存存储器68将属于同一数据包的数据D1至D5完全传输至(或传输经过)介质控制模块70后(即D1至D5已完全被介质控制模块70所处理过后),本发明的流程200就进行至步骤206。当数据D1至D5完全由暂存存储器68传输至缓冲存储器72之后,暂存存储器68就会发出一中断要求讯号84至存储存取电路66。而存储存取电路66收到中断要求讯号84后,就能在适当的时机经由南桥电路56B管理的总线发出中断讯号86(即步骤208),要求中央处理器54指示存储存取电路66取得次一数据包。请注意,如图12中所示,当本发明网络接口电路60回传中断讯号86时,前一数据包的数据包数据很可能还有部分仍未传输至网络52上,而仍暂存于介质控制模块70的缓冲存储器72中。不过,既然暂存存储器68中原本暂存的数据D1至D5已经完全传输至缓冲存储器72中,不管数据D1至D5是否全部都被传输到网络52上,暂存存储器68中原本用来暂存数据D1至D5的各个存储单元78所存储的暂存数据D1至D5已经不重要,也都可以释放出来供次一数据包的数据包数据的暂存使用。而本发明就是利用暂存存储器68已将一数据包数据完全传输至介质控制模块70后的时机,让暂存存储器68马上可以被存储存取电路66利用以暂存次一数据包数据。就像图12中的示意例所显示的,此时很可能前一数据包数据还有一大部分仍暂存于缓冲存储器72中,未传输至网络52上。相较之下,前述已知技术则是要等前一数据包数据皆传输至网络之后,才会经由介质存取电路的传输完成讯号触发存储存取电路,以开始将次一数据包数据暂存入暂存存储器中。
如图13所示,此处即假设次一数据包数据有D6、D7、D8、D9及D10等部分数据,而这些数据即使在前一数据包数据(如数据D1至D5)尚未被传输至网络52时,也可以由存储存取电路66先行取得,暂存至暂存存储器68。如图13的图示示意例所示,在属于前一数据包的数据D1至D5中,仍有数据D3至D5尚未传输至网络52;但属于次一数据包的数据D6至D10已经可以被读入至暂存存储器68中。既然暂存存储器68已将前一数据包的数据D1至D5完全传输至介质控制模块70,暂存存储器68中原本用来暂存数据D1至D5的存储单元就可以被释放,而用来暂存次一数据包的数据包数据。举例来说,像在图13中,数据D9、D10就在环式(ring)存储单元运用的情形下,被暂存至原来分别暂存数据D1、D2的两存储单元78。此时流程200相当于已经回到步骤204,准备进行对次一数据包的传输。由于次一数据包的数据(如数据D6至D10)可以在前一数据包的数据(数据D1至D5)未完全传输至网络前即已先被暂存于缓冲存储器72中,一旦等前一数据包的数据完全被传输至网络52后,介质存取电路74就可以马上跟着将次一数据包的数据继续传输至网络52。换句话说,在本发明中,由前一数据包的数据传输完毕到次一数据包开始传输之间的时差就能有效缩短,以有效增加网络数据传输的效率。甚至,更进一步地,只要介质存取电路74的设计可以精确控制,本发明还可以让介质存取电路74在原本存储于缓冲存储器72中的数据已部分被传输至网络52后,便自暂存存储器68输入新的数据来取代已被传输的数据。
总结来说,在已知技术中,要等到介质存取电路完全将一数据包的所有数据皆传输至网络后,才会在传输完成讯号的触发下,由存储存取电路开始取得属于次一数据包的数据包数据,再经由暂存存储器、缓冲存储器陆续将次一数据包的数据传输至介质控制模块,再由介质存取电路开始将次一数据包传输至网络。如此一来,在前一数据包传输完成后到次一数据包开始传输之间,就会有相当的时差,导致已知技术网络数据传输的效率较差,无法有效提升计算机对网络资源存取的效能。相较之下,本发明的技术则是在暂存存储器将一数据包的数据完全传输至(或传输经过)缓冲存储器后,暂存存储器即以中断要求讯号提示存储存取电路,让存储存取电路可以开始使用暂存存储器来暂存次一数据包的数据包数据。换句话说,即使属于前一数据包的数据还暂存于缓冲存储器而未由介质存取电路传输至网络,属于次一数据包的数据都已经开始暂存于暂存存储器中;一旦前一数据包的数据完全传输至网络,次一数据包的数据包数据就可立即由暂存存储器传输至缓冲存储器,马上由介质存取电路传输至网络。这样一来,在本发明中,前一数据包传输完成到次一数据包开始传输之间的时差就能大幅缩减,让介质存取电路能较已知技术更顺畅连续地传输各个数据包的数据,进而提升网络数据传输的效率,让使用者能快捷地存取网络资源。
当然,在实际实施本发明时,存储存取电路66可以在接收到预设数目次数(可以是一次或复数次)的中断要求时,才实际向中央处理器54发出一个中断要求,以避免太频繁的中断要求减低中央处理器54运作的效能。当然,如果不考虑中断要求次数对中央处理器54运作效能的影响,或是可以用别的技术克服此方面的问题,或是将数据传送到网络的速率比中央处理器的运作效能重要时,本发明(例如上述各实施例)可以只要原本存储在暂存存储器中的数据包数据有部分被传输至(或传输经过)介质控制模块,便发出中断要求,藉以将部分的另一数据包数据输入至暂存存储器中以取代已被传输过的部分数据包数据。举例来说,虽然在现行的技术,要传输至网络52的数据是以数据包数据(一位至多位)为一个完整单位的形式被传输,但如果未来的技术演变到在计算机50内部中,要传输到网络52的数据可以不以整个数据包数据为单位来传输,特别是在要传输到网络接口电路60时可以不以整个数据包数据为单位来传输,本发明便可以每有多少单位的数据(属于前一数据包)自暂存存储器68被传输到介质存取电路74,便自计算机50输入多少单位的新数据(属于后一数据包)并存储至暂存存储器68中以取代已被传输至介质存取电路74中的部分数据。当然,本发明的架构也可兼容已知技术的架构,当介质存取电路74将一数据包的数据完全传输至网络后,以一传输完成讯号触发暂存存储器68向存储存取电路66发出一中断要求讯号。本发明的精神特别适用于双多工(full duplex)的网络接口电路,因为在双多工的网络接口电路中,数据包讯号的传输、接收是在两条不同的实体传输线上进行,故在网络接口电路将讯号向网络传输出去时,不会刚好碰到由网络传向网络接口电路的讯号;由于传输、接收的讯号不会发生讯号碰撞,介质存取电路也就不会因为讯号碰撞而要重新传输一数据包。这样一来,即使前一数据包的数据尚未传输至网络而只是暂存于缓冲存储器,暂存存储器原先用来暂存前一数据包的存储单元也可以被释放、覆写而用来暂存次一数据包的相关数据。
以上所述仅为本发明的较佳实施例,凡依本发明权利要求书所做的均等变化与修饰,皆应属本发明专利的涵盖范围。