CN1488105A - 控制数据处理系统间经由存储器的数据流的方法和装置 - Google Patents

控制数据处理系统间经由存储器的数据流的方法和装置 Download PDF

Info

Publication number
CN1488105A
CN1488105A CNA018224148A CN01822414A CN1488105A CN 1488105 A CN1488105 A CN 1488105A CN A018224148 A CNA018224148 A CN A018224148A CN 01822414 A CN01822414 A CN 01822414A CN 1488105 A CN1488105 A CN 1488105A
Authority
CN
China
Prior art keywords
descriptor
data
lcp
adapter
logic
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
CNA018224148A
Other languages
English (en)
Other versions
CN1307570C (zh
Inventor
乔拉·比兰
̩ķ˹���������޹�˾
塔尔·索斯泰姆
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1488105A publication Critical patent/CN1488105A/zh
Application granted granted Critical
Publication of CN1307570C publication Critical patent/CN1307570C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network

Abstract

描述了一种用于控制第一和第二数据处理系统之间经由存储器的数据流的装置。该装置包括描述符逻辑,用于产生多个描述符,其中描述符包括:帧描述符,用于定义要在存储器中的位置和第二数据处理系统之间传递的数据分组;和指针描述符,用于识别存储器中的位置。该装置还包括描述符表,用于存储由描述符逻辑产生的描述符,以由第一和第二数据处理系统访问。

Description

控制数据处理系统间经由存储器的 数据流的方法和装置
本发明涉及用于控制诸如主计算机系统和数据通信接口的第一和第二数据处理系统之间经由存储器的数据流的方法和装置,其中数据通信接口用于在主计算机系统和数据通信网络间传递数据。
传统数据处理网络包括多个主计算机系统和多个附加器件,所有附加器件通过诸如以太网体系结构的居间(intervening)网络体系结构而互相连接。网络体系结构通常包括一个或多个数据通信交换机。主计算机系统和附加器件各自形成数据处理网络中的节点。每个主计算机系统通常包括通过诸如PCI总线体系结构的总线体系结构互相连接的多个中央处理单元和数据存储器件。网络适配器也连接到总线体系结构,其用于在主计算机系统和数据处理网络中其它节点之间经由网络体系结构传递数据。希望尽可能有效地使主计算机系统和网络体系结构之间的数据传输和信息控制变得容易。
根据本发明,提供一种用于控制第一和第二数据处理系统之间经由存储器的数据流的装置,该装置包括:描述符逻辑,用于产生多个描述符;以及描述符表,用于存储由描述符逻辑产生的描述符,以由第一和第二数据处理系统访问,其中描述符包括:帧描述符,用于定义要在存储器中的位置和第二数据处理系统之间通信的数据分组;和指针描述符,用于识别存储器中的位置。
描述符逻辑和描述符表改善了诸如主计算机系统和数据通信接口的第一和第二数据处理系统之间的数据流控制的效率,其中所述数据通信接口用于在主计算机系统和数据通信网络之间传递数据。
由描述逻辑产生的描述符可以包括:帧描述符,用于定义要在存储器中的位置和第二数据处理系统之间通信的数据分组;以及指针描述符,用于识别存储器中的位置。描述符表可以存储在第一数据处理系统的存储器中。或者,描述符表可以存储在第二数据处理系统的存储器中。描述符表可以包括多个经由其中的分支描述符依次链接在一起的描述符列表。或者描述符表包括循环描述符列表。
本发明扩展为这样的数据处理系统,其包括具有存储器的主处理系统、用于在主计算机系统和数据通信网络之间传递数据的数据通信接口、如前所述用于控制主计算机系统的存储器和数据通信接口之间的数据流的装置。
从另一方面看本发明,提供了一种控制第一和第二数据处理系统之间经由存储器的数据流的方法,该方法包括:由描述符逻辑产生多个描述符;以及在描述符表中存储多个由描述符逻辑产生的描述符,用于由第一和第二数据处理系统访问,其中描述符包括:帧描述符,用于定义要在存储器中的位置和第二数据处理系统之间通信的数据分组;和指针描述符,用于识别存储器中的位置。
下面将参考附图,只作为示例,描述本发明的优选实施例,其中:
图1是数据处理网络的例子的方框图;
图2是数据处理网络的网络接口适配器卡的方框图;
图3是数据网络的主计算机系统的例子的方框图;
图4是网络适配器卡的芯片上集成系统(ISOC)的例子的方框图;
图5是ISOC的另一个方框图;
图6是表明经ISOC的信息流的ISOC的方框图;
图7是经ISOC的逻辑发送路径的方框图;
图8是经ISOC的逻辑接收路径的方框图;
图9A是循环描述符表的方框图;
图9B是已链接的描述符表集合的方框图;
图10是虚拟缓冲器及其物理对应缓冲器的方框图;
图11是完成队列的方框图;
图12是从主机向网络发送数据流的方框图;
图13是从主机向网络发送数据流的另一个方框图;
图14是从网络向主机接收数据流的方框图;以及
图15是从网络向主机接收数据流的另一个方框图。
首先参考图1,体现本发明的数据处理网络的例子包括通过诸如InfiniBand网络体系结构(InfiniBand是InfiniBand贸易联合会的商标)的居间网络结构30互相连接的多个主计算机系统10和多个附加器件20。网络体系结构30通常包括多个数据通信交换机40。主计算机系统10和附加器件20各自形成数据处理网络中的节点。每个计算机系统10包括通过诸如PCI总线体系结构的总线体系结构70互相连接的多个中央处理单元(CPU)50和存储器60。网络适配器80也连接到总线体系结构,用于在主计算机系统10和数据处理网络中其它节点间经由网络体系结构30传递数据。
现在参考图2,在本发明的具体的优选实施例中,网络适配器80包括可插入的选项卡,该卡具有诸如边缘连接器的连接器,用于可移动的插入主计算机系统10的总线体系结构70中。选项卡携带可经由连接器170连接到总线体系结构70的专用集成电路(ASIC)或芯片上集成系统(ISOC)120,一个或多个第三级存储模块250连接到ISOC 120,而内插器260连接到ISOC120,用于在网络体系结构30和ISOC 120的介质之间传递数据。内插器260提供到网络的物理连接。在本发明的一些实施例中,内插器260可以实现在单个ASIC中。然而,在本发明的其它实施例中,内插器260可以由多个元件实现。例如,如果网络30包括光学网络,内插器260可以包括驱动分离的光学收发信机的重新定时器。存储器250可以由SRAM、SDRAM或其组合实现。在存储器250的实现中也可以采用其它形式的存储器。ISOC 120包括第一和第二存储器。下面简短地描述适配器80的存储器子系统。正如从下面的描述中可以清楚地看到,该配置提供:在数据处理网络上操作的分布式应用程序的改善了的性能;改善了的系统可缩放性;与一定范围的通信协议的兼容性;以及主计算机系统中的减少了的处理要求。更具体地说,该配置允许适配器80与主机系统10之间不同种类的通信协议共存。这些协议可以适应各种应用程序,使用相同的适配器80,并使用预定的数据结构集合,从而增强主机和适配器80之间的数据传输。可以并行打开的应用程序信道的数量由分配给适配器80的存储器资源的量确定,并且与嵌入适配器的处理功率无关。从下面的描述可以明白,将多个元件集成到单个集成电路芯片元件中的ISOC 120概念有利地最小化了制造成本,并提供可重复使用的系统构件块。然而,还应该明白,在本发明的其它实施例中,ISOC 120的部件可以由离散的元件实现。
在下面的描述中,术语帧(Frame)指在主计算机系统10和适配器80上运行的软件之间传输的数据单元或消息。每个帧包括帧首标和数据有效负载(data payload)。数据有效负载可以包含用户数据、高级协议首标数据、确认、流控制或其任何组合。下面将简短而又详细地描述帧首标的内容。适配器80只处理帧首标。适配器80可以将帧分割为较小的分组,其在网络体系结构30中更有效地传送。然而,这样的分割一般并不变换数据有效负载。
在本发明的具体实施例中,数据在网络体系结构30中以下面称其为分组(Packet)的基本单位传送。每个分组包括路由信息,其后跟随着硬件首标数据和有效负载数据。在本发明的典型例子中,采用至多1024字节的分组大小。将更大尺寸的帧分割为1024字节的分组。应该明白,在本发明的其它实施例中,可以采用不同的分组大小。
在本发明的优选实施例中,经由逻辑通信端口体系结构(LCP)激活适配器80和主计算机系统10上运行的多个应用程序之间的通信。适配器80包括存储器分级结构,其使得能够最优化对不同内部数据结构的访问延迟时间。下面简短地描述存储器分级结构。在本发明的优选实施例中,适配器80为去往网络体系结构30的出站(TX)数据和去往主计算机系统10的入站(RX)数据提供分离的路径。每个路径包括起自身的数据传输引擎、首标处理逻辑以及网络体系结构接口。也将简短而又详细地描述这些路径。
下面参考图3,LCP体系结构为在主计算机系统10和适配器80上运行的局部消费装置之间的接口定义架构。这样的消费装置的例子包括应用程序和线程。可以将计算机系统10细分为用户应用程序空间90和内核空间110。LCP体系结构为每个消费装置提供进入网络体系结构30的逻辑端口。可以直接从用户空间90访问该端口。在本发明的具体实施例中,硬件保护机制处理访问许可。由内核空间110在数据帧传输之前进行LCP注册。LCP体系结构不需要定义通信协议。相反,其定义应用程序和适配器80之间的接口,以传输数据和控制信息。改为可以由适配器80中执行的应用程序和程序代码设置通信协议细节。可以在适配器80上使用的信道的数量只受对LCP相关信息可用的适配器卡80上的存储量的限制。每个LCP端口可以是可编程的,以具有特定的特征集合。根据特定的协议选择特征集合,以最好地支持主计算机系统中的存储器60和适配器80之间的数据传输。可以同时支持各种通信协议,每个协议使用不同的LCP端口。
LCP体系结构包括LCP客户(Client)100、驻留在内核空间110中的LCP管理器130、以及一个或多个驻留在适配器80中的LCP上下文(Context)140。
每个LCP客户100是连接到LCP端口的单向应用程序端点。LCP客户100可以位于用户应用程序空间90或内核空间110中。在操作中,每个LCP客户100产生要从存储器60读取并由适配器80经由TX LCP信道传输的命令和数据,或消费由适配器80经由RX LCP信道向存储器60传输的数据。
LCP管理器130是受托(trusted)元件,其为每个信道的LCP信道分配和重新分配(deallocation)以及其在存储器60中的读/写区的注册的请求服务。LCP管理器130准许用户空间应用程序使用适配器80的资源,而不损害其它通信操作、应用程序、或主计算机系统70的操作系统。
每个LCP上下文140是适配器80服务特定LCP客户100所需要的控制信息的集合。LCP上下文140可以包括诸如可能命令、指针结构、以及缓冲器描述符定义的LCP信道属性,其在信道的全部存在中不变。LCP上下文140也可以包括对LCP信道的特定LCP服务信息,例如服务等待数据量和相关LCP信道的下一访问地址。LCP上下文140存储在位于适配器80中的存储器中,以在适配器80停止对一个信道的服务,并起动对另一个信道的服务时,启动快速LCP上下文。
需要初始化LCP端口的LCP客户100转向LCP管理器130,并请求分配LCP信道。此时确定LCP信道属性,并规定LCP端口的行为和授权LCP客户100联合LCP端口进行的操作。给LCP客户100授予地址,其将用于以唯一而且安全的方式访问适配器80。该地址公知为门铃地址(DoorbellAddress)。
LCP管理器130还负责注册主机存储器60的区域,以使得能够由适配器从虚拟向物理地址转换,并且准许用户空间客户访问这些主机存储器区域,而不需窜改其它程序。
在运行时间中,每个LCP客户100都可以请求新缓冲器的注册和先前缓冲器的撤销注册。这样的改变需要一系列LCP客户100、LCP管理器130、以及适配器80之间的信息交换。
每个LCP客户100和端口与LCP上下文140关联,所述LCP上下文140提供适配器80为执行命令而对LCP端口发送的未决请求服务所需要的所有信息。
为了初始化LCP客户100和适配器80之间的存储器传输,并初始化帧的发送,LCP客户100准备持有特定操作的信息的描述符。然后,LCP客户100对映射到适配器80的门铃地址进行I/O写。对门铃地址的写更新适配器80上的LCP上下文140,添加要执行的新的请求。
适配器80在各种具有未决请求的传输LCP端口之间仲裁,并选择下一个要服务的端口。
一旦接收到数据,识别接收到的分组的帧和LCP。产生描述符以定义接收LCP所需要的操作。由适配器80的LCP引擎对这些描述符的执行在主计算机系统10的存储器60中分配给LCP信道的适当数据缓冲器中存储到来数据。
对于已服务的每个LCP信道,适配器装载相关的LCP上下文信息,并使用该信息进行想要的数据传输的集合。然后,适配器80继续处理所选择的下一LCP上下文140。
下面参考图3,如前所述,ISOC 120包括第一存储空间220和230以及第二存储空间240,而适配器80还包括第三级存储器250。第一、第二、以及第三存储空间是适配器80的存储器子系统的部分。在本发明的优选实施例中,ISOC 120包括专用于数据发送操作的TX处理器(TX MPC)150和专用于数据接收操作的RX处理器(RX MPC)160。在本发明的具体的优选实施例中,由诸如IBM PowerPC 405 RISC微处理器的精简指令集计算(RISC)微处理器实现处理器150和160。在存储器子系统210中,除了第一和第二存储空间,ISOC 120包括与TX处理器150关联的数据超高速缓存(cache)180和指令超高速缓存170,以及与RX处理器160相关的第二数据超高速缓存190和第二指令超高速缓存190。三级之间的差异在于存储器的尺寸和相关的访问时间。通过简短的描述可以明白,存储器子系统210有利于:TX处理器150和RX处理器160对指令和数据的方便的访问;可扩展性;为了降低制造成本而在TX处理器150和RX处理器160之间的资源共享。
第一级存储空间(M1)220和230包括TX-M1存储空间220和RX-M1存储空间230。TX-M1存储空间220只能由TX处理器150访问,而RX-M1存储空间230只能由RX处理器160访问。在操作中,使用第一级存储空间220和230以保存临时数据结构、首标模板(template)、堆栈等。第一级存储空间220和230都对零等待状态做出反应。第一级存储空间220和230中每一个都只连接到处理器150和160中对应的一个的数据接口,而不连接到指令接口。这一配置使得能够在保持对第一级存储空间230和240中的数据的有效访问的同时,可超高速缓存的和不可超高速缓存的第一级存储区都可用。
第二级存储空间(M2)240是对处理器150和160、适配器80的其它元件、以及主计算机系统10都可用的共享存储器。因为第二级存储空间240由更多代理经由共享内部总线而使用,所以对第二级存储空间240的访问要慢于对第一级存储区220和230的访问。第三级存储空间250也是共享资源。在本发明的具体实施例中,适配器80包括计算机外围电路卡,在其上,第一级存储空间220和230以及第二级存储空间240都集成在与处理器150和160相同的ASIC上。共享存储空间240和250一般用于不需要快速和高频访问周期的数据类型。这样的数据类型包括LCP上下文140和虚拟地址转换表。共享存储空间240和250对处理器150和160的指令和数据接口都可访问。
适配器80分离地处理数据流的发送和接收。用于发送和接收路径的分离的处理器150和160避免了在任务间切换的开销,在一个路径中与其它路径隔离了临时处理负荷,并且能更便利地使用两个嵌入式处理器来处理到来和外出的数据流。下面参考图5,ISOC 120包括发送路径逻辑280和接收路径逻辑290、以及共享逻辑300。发送路径逻辑280包括:LCP TX引擎310,用于对每个LCP信道的细节解码,并取出要执行的LCP相关命令;TX逻辑320,用于控制帧向适配器80的传输,前述TX处理器150用于管理TX帧和分组处理;前述第一级TX存储器220,用于保存指令和临时数据结构;链接逻辑330;以及用于辅助TX处理器150来管理数据流和分组处理(例如将帧分割为数据分组的路由处理)的逻辑。TX处理器150基于其中处理器只对意外和错误中断的只轮询方案(polling only scheme)连续地处理任务。处理器150采用第一级TX存储器220来与TX逻辑320通信。接收路径逻辑290包括:链接逻辑340;用于在对到来分组的首标的处理和将该分组变换或组装成帧时,辅助前述RX处理器160的硬件;前述RX处理器160,用于RX帧和分组处理;前述第一级RX存储器,用于保存指令;RX逻辑350,用于控制帧从网络体系结构30的传输;以及LCP RX引擎360,用于对每个LCP信道的细节解码,在主计算机系统的存储器60中的相关LCP数据结构中存储到来数据,并且在LCP客户100提供指向空帧缓冲器的指针时,接收和注册该指针,以备适配器80使用。RX处理器160使用其中RX处理器160只对意外和错误中断的只轮询方案连续地处理任务。RX处理器160使用第一级RX存储器230来与RX逻辑350通信。
如前所述,ISOC方案允许减少与适配器80及其中诸如电路板和其它支持模块的其它元件相关联的制造成本。ISOC方案也提高适配器80的简单性,从而提高可靠性。有效地使ISOC 120的元件间的连接数不受限制。所以可以实现多个宽的相互连接的路径。为了减少主计算机系统10中的数据处理开销,向和从主机存储器60的数据传输操作绝大多数由ISOC 120执行。ISOC120也对到来和外出分组的首标进行处理。在发送期间,ISOC 120建立首标,并将其发往网络体系结构30。在接收期间,适配器80处理首标,以便确定其在系统存储器中的位置。第一级存储器220和230是零等待状态存储器,其提供诸如堆栈、模板、表、以及临时存储位置的处理器数据空间。在本发明的具体优选实施例中,从被称为内核(core)的较小的逻辑元件建立发送路径逻辑280、接收路径逻辑290、以及共享逻辑300。使用内核一词是因为元件被设计为独立片段的逻辑,其具有独立属性,使其用于不同应用程序。
如前文中已指出,传输路径逻辑280负责处理发送或输出帧。由诸如主计算机系统10的CPU 50的CPU经由总线体系结构70初始化帧传输。ISOC120包括总线接口逻辑370,用于与总线体系结构70通信。ISOC 120还包括总线桥接逻辑390,其将总线接口逻辑370连接到ISOC 120的处理器逻辑总线(PLB)390。TX LCP引擎310从主机存储器60中取回命令和帧。TX处理器150将每个帧的首标处理为适于在网络体系结构30上作为分组发送的格式。TX逻辑320不作修改的传输帧数据。链接逻辑330将每个要发送的分组处理为在网络体系结构30上发送的最终形式。链接逻辑330可以包括一个多个端口,每一个都可连接到网络体系结构30。
如前文中已指出,接收路径逻辑290负责处理到来分组。起初,由链接逻辑340处理从网络体系结构30接收到的分组。链接逻辑340以首标和有效负载格式来再造分组。为了确定分组格式及其在主机存储器60中的目的地,由RX处理器230处理首标。链接逻辑340可以包括一个或多个端口,每一个都可连接到网络体系结构30。RX LCP引擎负责经由总线体系结构70向主机存储器60传输数据。
发送路径逻辑280包括TX LCP引擎310和TX处理器220之间的HeaderIn(首标入)先入先出存储器(FIFO)400。接收路径逻辑包括RX处理器230和RX LCP引擎360之间的HeaderOut(首标出)FIFO 410。在TX逻辑320和RX逻辑350中提供了附加的FIFO和队列。下面将简短地描述这些FIFO和队列。
共享逻辑300包括由发送路径逻辑280和接收路径逻辑290共享的所有逻辑元件。这些元件包括前述总线接口逻辑370、总线桥接逻辑380、PLB390、第二级存储器240以及用于提供对远程第三级存储器250的访问的控制器420。总线接口逻辑370在总线体系结构70中既作为主设备又作为从设备。作为从设备,总线接口逻辑准许CPU 50经由控制器420访问第二级存储器240、第三级存储器250、并访问ISOC 120的结构寄存器和状态寄存器。通常可以由CPU 50、TX处理器150以及RX处理器160来访问这样的寄存器。作为主设备,总线接口逻辑准许TX LCP引擎310和RX LCP引擎360访问主计算机系统10的存储器60。在图5中,“M”表示主设备连接,而“S”表示从设备连接。
现在参考图6,经ISOC 120的分组流通常是对称的。换句话说,在发送和接收方向上,流的一般结构都相似。可以认为ISOC 120包括第一接口440、第一控制逻辑460、处理器逻辑480、第二控制逻辑470、以及第二接口逻辑450。以下述方式处理分组:
A.在发送方向上,将信息从总线体系结构70经第一接口逻辑引入ISOC120。在接收方向上,将信息从网络体系结构30经第二接口逻辑450引入ISOC 120。
B.在发送方向上,由第一控制逻辑460处理经第一接口逻辑440引入ISOC120的信息。在接收方向上,由第二控制逻辑470处理经第二接口逻辑450引入ISOC的信息。
C.在发送方向上,在第一控制逻辑460对外出帧提取帧首标,并由处理器逻辑480处理该帧首标。处理器逻辑480基于帧首标产生对第二控制逻辑470的指令。将外出帧的有效负载传到第二接口逻辑470。在接收方向上,在第二控制逻辑470从到来中帧提取帧首标,并由处理器逻辑480处理该帧首标。处理器逻辑480基于帧首标产生对第一控制逻辑460的指令。将到来帧的有效负载传到第一控制逻辑460。在两个方向上,处理器480都不直接处理有效负载数据。
D.在发送方向上,第二控制逻辑470根据从处理器逻辑480接收到的指令对外出有效负载数据打包。在接收方向上,第一控制逻辑460根据从处理器逻辑480接收到的指令对到来有效负载数据打包。
E.在发送方向上,将信息通过第二接口逻辑450经由网络体系结构30转移到其目的地。在接收方向上,将信息通过第一接口逻辑经由总线体系结构70转移到其目的地。
430展示了对操作在主计算机系统10上的软件的接口。相似地,490和500展示了对操作在处理器输入和输出的微码的接口。
参考图7,下面将更详细地描述经ISOC 120发送的数据帧的流的一个例子。可以基于ISOC 120内信息的各种格式,将ISOC 120划分为LCP上下文域510、帧域520以及网络域530。TX LCP引擎310包括LCP请求FIFO550、直接存储器存取(DMA)逻辑560、帧逻辑580、以及前述LCP上下文逻辑140。LCP请求FIFO 550、DMA逻辑560、以及LCP TX上下文逻辑590位于LCP上下文域510中。帧逻辑580位于帧域520中。TX逻辑320、第一级TX存储空间220、以及TX处理器150跨在帧域520和网络域530之间的边界上。TX链接逻辑330位于网络域530中。在本发明的具体实施例中,HeaderIn FIFO 400与第一级TX存储空间220成一整体。一般而言,在主计算机系统10上执行的应用程序创建帧。然后使用适配器80上的TX LCP信道发送帧。应用程序和适配器80之间的信息交换假定了由LCP管理器130进行了在先初始化。为了添加LCP服务请求,LCP客户100向适配器80通知,预备执行一个或多个附加发送帧。这通过将控制字写入门铃(Doorbell)中而进行。使用唯一地与LCP端口关联、并被保护不被其它处理访问的地址,以这样的方式分配门铃地址,即将写操作转换为在总线体系结构70上的物理写周期。适配器80检测写操作,并通过增加对特定LCP客户100的先前请求的条目(entry)而将新的请求写入日志。这是相关LCP上下文140的部分。同样更新适配器80的存储器子系统210中保留的仲裁列表。在简单的例子中,使用所有具有未决请求的发送LCP信道之间的前述FIFO方案550仲裁。在为一个LCP信道服务的同时,选择下一个LCP信道。当把对应的LCP上下文装载到TX LCP引擎310中时,服务周期开始。然后,访问LCP上下文140,以获得用于服务LCP信道的原子(atomic)操作,确定这些操作的参数。例如,这样的原子操作可以基于LCP上下文140中记录的LCP信道属性。完整的服务周期通常包括一组由适配器80进行的活动,用于取回并执行多个由LCP客户100创建的原子描述符。在TX LCP信道的情况下,服务周期一般包括将多个帧从主机存储器60读取到适配器80的存储器子空间210中。一旦结束,在适配器80的存储器子系统210中更新所有需要修改的LCP上下文信息(换句话说,LCP服务信息)。一般说来,适配器80在LCP服务周期内进行的第一个动作是取出下一个要处理的描述符。
由ISOC 120处理发送帧通常包括下述步骤:
A.取出后续LCP端口帧描述符。
要取出的下一描述符的地址作为LCP信道的上下文140的部分存储。适配器80从主机存储器60读取描述符,并基于LCP信道属性对描述符解码。描述符定义新帧首标的大小、数据有效负载的大小、以及这些项目的位置。
B.将虚拟地址转换为物理地址。
如果在应用程序中通过虚拟存储地址引用数据缓冲器,地址需要经过地址转换的附加处理。在这种情况下,将应用程序使用的虚拟地址转换为适配器80在其访问主机存储器60时可使用的物理地址。这通过监控页面边界交叉,并使用由LCP管理器130写入适配器80的存储子系统210的物理页面位置信息而完成。从虚拟到物理的转换处理在由未受托的LCP客户100创建描述符表的情况下,还起到安全措施的作用。这避免了对主机存储器60的不相关区域的未授权访问。
C.读取帧首标。
使用物理寻址,从主机存储器60的缓冲器中读取TX帧的首标和有效负载数据。然后,将首标存储在TX HeaderIn FIFO 400中。当完成首标取出时,适配器80设置内部标记,其指示可以由TX处理器150初始化对首标的处理。
D.读取帧数据。
从主机存储器60读取有效负载数据,并由适配器80将其存储在数据FIFO 570中。图7所示数据FIFO 570位于TX逻辑320中。然而,数据FIFO 570也可以与第一级TX存储空间320为一整体。继续数据读取事务,直到所有要发送的数据都已存储在适配器80的存储器子系统210中。在完成读操作之后,将状态指示返回LCP客户100。注意,一旦将首标读入HeaderIn FIFO 400,就可以开始对首标的处理。不需要等待读取全部数据。
E.处理帧首标。由TX处理器150进行首标处理。首标处理与协议相关,并涉及LCP体系结构外部的协议信息。TX处理器150运行TX协议首标微码,并访问已在协议和路由初始化序列期间存储到适配器80的存储器子系统210中的路由表和其它相关信息。当TX处理器150接收到指示,表明有新首标在HeaderIn FIFO 400中等待时,其开始首标处理。首标处理产生一个或多个分组首标,其为用于在网络体系结构30上递送分组的格式,并且其包括路由信息。如果有效负载大小大于网络体系结构30所准许的最大分组尺寸,则通过产生几个分组首标来分割有效负载,所述每个分组首标各自连同原始有效负载数据的连续数据段使用,以形成要在网络体系结构30上通信的分组。
F.排列要发送的分组首标。
由TX处理器150将为分组定义首标字的数量和数据字的数量的命令和分组首标本身写到第一级存储空间220的TX HeaderOut FIFO 540中。
G.合并要发送的分组首标和分组数据。
只要命令在HeaderOut FIFO 540中就绪,就触发分组在网络体系结构30上的发送,而数据FIFO 570包含足够的数据来完成相关分组的发送。
可以向每个分组的首标和数据添加循环冗余校验(CRC)。将每个完成的分组经由TX链接逻辑330传输到网络体系结构30。
当在网络体系结构30上发送了所有帧数据时,借助于一个或多个分组完成了对每个帧的发送处理。对于每个由适配器80处理的帧,可以经由第二LCP客户100向应用程序返回状态。该状态指示从主机存储器60到适配器80的帧数据传输的完成,帧传输自身的完成,或传输状态的其它级。
在任何时候,适配器80可以同时执行下述一些或全部动作:选择要服务的下一个LCP;初始化对LCP信道A的服务;为LCP信道B的最后一帧执行数据的DMA取回;为LCP信道C处理帧首标和分段;以及由LCP信道D创建发送分组。
现在,参考图8,只作为示例描述由使用RX LCP端口的应用程序进行的数据帧接收。ISOC 120的操作可以根据LCP支持的协议的类型而改变。应用程序和适配器80之间的信息交换假定由LCP管理器130进行的在先初始化。RX LCP引擎360包括LCP分配逻辑620、LCP上下文逻辑610以及DMA逻辑630,其全都位于LCP域520中。RX处理器160、第一级RX存储空间230以及RX逻辑350都跨在帧域520和网络域530的边界上。RX链接逻辑340和分组辅助逻辑600位于网络域530中。在本发明的具体实施例中,HeaderOut FIFO 410位于第一级RX存储空间230。由ISOC 120从网络体系结构30接收到的帧被写到主机存储器60的LCP客户缓冲器中。由LCPRX确定存储缓冲器的可用性,并指示到适配器80以插入到来数据帧。与前述向发送路径逻辑280通知准备好要发送的新帧的方式相似,LCP客户100通过写入ISOC 120上的接收门铃提供缓冲器。分配门铃寄存器地址,以便将写操作转换为在总线体系结构70上的物理写周期。适配器80检测写操作,并通过增加特定LCP RX客户100的可用字条目的数量而将新提供空白存储区写入日志。可用字计数是相关LCP上下文140的部分。只要应用程序完成对缓冲器内的接收到的帧的处理,其写入门铃。写周期指示新近可用存储空间中的字数。将LCP上下文内的计数增加该数量。从网络体系结构30接收到的分组可以是将由适配器80组装到主机存储器60中相连的空间中的较大的帧的部分。ISOC 120对接收到的帧的处理一般包括下述步骤:
A.分离分组首标和数据
RX链接逻辑340将来自网络体系结构30的信息转换为分组流。由RX链接逻辑340处理每个接收到的分组,以分离分组首标和有效负载数据。将首标推进到第一级RX存储空间230中的RX HeaderIn FIFO 640中。将有效负载数据推进到RX逻辑350中的RX数据FIFO 650中。也可以在第一级RX存储空间230中实现RX数据FIFO 650。
B.将分组首标解码,并产生LCP帧首标
将分组首标解码,以提供指示分组所属帧的ID、有效负载大小以及帧数据大小的字段。一旦为RX HeaderIn FIFO 640读取了分组首标,就向RX处理器160发送指示。RX处理器处理分组首标信息,并产生与LCP相关的命令,其包括传输分组数据所需信息。这样的信息包括分组地址和长度。在首标处理的末尾,将一个描述符或一组描述符写入LCP RXHeaderOut FIFO 410,并触发指示。
C.在RX LCP上下文内传输数据
由RX LCP引擎360从RX HeaderOut FIFO 410取出描述符,然后解码。描述符包括适配器80的存储子系统210中要传输的数据的LCP号、分组地址、分组数据长度以及源地址。RX LCP引擎340使用LCP上下文信息创建要写入主机存储器60中的目标物理地址(或者,如果页面被交叉则是多个地址),并初始化DMA传输,以写数据。
D.ISOC DMA事务
ISOC 120的目的在于通过选择适当的总线命令并进行可能的最长脉冲,最优化总线体系结构70上的事务。
在任何时候,适配器80可以同时执行下述一些或全部动作:处理LCP信道X的缓冲器分配;初始化LCP信道A的入站数据写服务;执行LCP信道B的数据的DMA存储;处理朝向LCP信道C的分组的帧组装;以及接收LCP信道D的分组。
为了最小化有关RX处理器160和TX处理器150的帧处理开销,分组辅助逻辑600包括帧分割逻辑、CRC与校验和计算逻辑、以及组播处理逻辑。
现在详细描述TX及RX LCP引擎310及360与主机10之间的数据流。TX和RX LCP端口都使用存储缓冲器来传输数据和指向这样的存储缓冲器的描述符结构。描述符结构用于管理数据提供装置和数据消费装置之间的数据缓冲器,并返回由数据提供装置使用的空存储缓冲器。描述符基于物理或虚拟地址指向存储缓冲器。
TX LCP信道负责从主机存储器60到ISOC 120的缓冲器的数据传输。逻辑的其它层负责将来自ISOC 120的缓冲器的数据传输到网络30。RX LCP信道负责将从网络30接收到的数据传输到主机存储器60。
TX和RX LCP引擎310和360能够处理相对大量的LCP信道。每个LCP信道具有一组包含对其特定的全部信息的参数。该信息包括信道构造、当前情况和状态。在信道初始化期间由LCP管理器130设置与信道关联的LCP上下文140。在信道操作期间,只由ISOC 120更新LCP上下文140的内容。在适配器80的存储器子系统210内的上下文表中保存LCP上下文140。根据LCP号进行对LCP信道的LCP上下文140的访问。LCP RX和TX信道使用不同的LCP上下文结构。
数据缓冲器是主机10的存储器60中的钉住(pinned)区域。发送缓冲器保持要发送的数据。TX LCP引擎310将位于这些缓冲器中的数据移动到ISOC120的内部缓冲器中。由RX LCP引擎360将从网络30接收到的到来数据移动到主机10的存储器60中的缓冲器中。缓冲器的所有权在主机10的软件和ISOC 120中之间变换。有关LCP TX信道的事件的顺序如下:
A.主机10中的软件在主机10的存储器60中准备具有要发送的数据的缓冲器;
B.软件通知ISOC 120缓冲器中的数据已发送准备就绪;
C.ISOC 120从缓冲器读取数据;以及
D.ISOC 120对主机10中的软件识别已被读取并可以由主机10中的软件重新使用的缓冲器,以传输新的数据。
有关LCP RX信道的事件的顺序如下:
A.主机10中的软件准备ISOC 120可向其中写入接收到的数据的缓冲器;
B.软件通知ISOC 120在主机的存储器60中空缓冲器已准备就绪;
C.ISOC 120向缓冲器写数据;以及
D.ISOC 120对主机10中的软件识别已填满接收数据并可以由软件处理的缓冲器。
当软件准备将由ISOC 120使用的缓冲器时,经由门铃寄存器跟踪缓冲器信息。使用状态更新或经完成队列向软件返回涉及ISOC 120所使用的缓冲器的信息。对于TX LCP信道,缓冲器包括由TX LCP引擎310传输到ISOC120中、并被处理以变为一个或多个要在网络30上发送的分组的数据和首标信息。由ISOC 120的TX处理器150使用首标,来产生要在网络30上发送的分组的首标。对于RX LCP信道,由主机10中的软件对适配器80分配空缓冲器。适配器80用接收到的分组填满该缓冲器。
描述符已定义对ISOC 120和主机10中的软件都已知的数据结构。软件使用描述符向ISOC 120传输控制信息。根据希望的功能,控制信息可以是帧描述符、指针描述符、或分支描述符的形式。软件中和ISOC 120中的描述符逻辑根据要采取的控制措施(control measure)产生并修改描述符。将简短地描述这样的措施。帧描述符包括对分组的描述(例如:数据长度、首标长度等)。指针描述符包括对数据位置的描述。分支描述符包括对描述符位置的描述(例如:描述符的链接列表)。描述符中的信息用于由主机10中的软件控制由TX和RX LCP引擎310和360进行的数据移动操作。用于处理帧以产生TX分组首标的信息位于帧的首标中。参考图9A,可以以单一表700提供描述符,而LCP上下文140指向表700的头部。参考图9B,也可以以已链接的描述符表720-740的结构布置描述符。在LCP信道初始化之后,LCP上下文140指向该结构中第一描述符表720的头部。使用分支描述符750-770产生表720-740的链接列表,其中描述符表720-740的末尾的分支描述符750-770指向另一表720-740的起点。返回参考图9A,也可以使用分支描述符产生循环缓冲器,其中表700的末端的分支描述符710指向同一表700的起点。在接收路径中也可以使用循环缓冲器。在这种情况下,初始化LCP 140上下文以指向缓冲器的头部。当ISOC 120到达其末尾时,缓冲器被绕回。主机10中的软件可以将描述符写到主机10中的存储器60中(对于接收和发送路径)或写到适配器80的存储器250中(只对于发送路径)。将描述符写入适配器80的存储器子系统210的涉及主机10中的软件的I/O操作,并占用适配器80的存储器子系统210。将描述符写入主机80的存储器60需要适配器80访问主机10的存储器60,只要其读新的描述符。由LCP管理器130为每个LCP信道单独定义软件描述符的位置。根据系统性能最优化来定义描述符的位置。描述符提供了队列结构的灵活性。
RX和TX LCP引擎310和360使用地址来访问描述符表中的描述符,并访问数据缓冲器。地址既可以是物理地址,也可以是虚拟地址。物理地址一词描述ISOC 120可以,照现在的样子,为总线70驱动的地址。术语虚拟地址描述非物理的地址,并由软件或微码使用。虚拟地址必须经历映射,以便产生物理地址。TX和RX LCP引擎3 10和360使用的地址可以具有如下不同的来源:LCP信道上下文140中的指针;由在主机10上运行的软件准备的描述符中的指针;由RX处理器160准备的描述符中的指针;以及由TX处理器150准备的描述符中的指针(用于返回完成消息)。指针可以指向描述符或数据缓冲器。可以将TX和RX LCP引擎310和360使用的每个地址任意地映射到在总线70上作为物理地址使用的新地址。由TX和RX LCP引擎310和360进行地址映射。ISOC 120使用本地存储器210保持转换表。在存储器注册期间,LCP管理器130将转换表写入适配器80。地址映射使得能够对缓冲器或描述符表使用虚拟寻址。虚拟寻址使得能够管理物理上位于多于一个物理页面中的虚拟缓冲器。地址映射也使得主机10能够直接与使用虚拟地址的应用程序工作,而不需要对软件的转换处理器。
参考图10,其中展示了缓冲器880的映像800,其出现在主机10的软件中。还展示了地址的物理映射810,其用于访问主机10中的存储器60。虚拟指针820指向缓冲器中的位置。该例子中的缓冲器是占用主机10的存储器60中几个不连续页面840-870的虚拟缓冲器。LCP引擎310和360通过经由转换表830转换地址来进行映射。转换表保持指向每个从虚拟缓冲器880映射的物理缓冲器840-870的头部的物理地址指针。适配器80中的地址映射允许了当映射主机10中存储器60中的描述符和数据缓冲器时的灵活性。适配器80中的地址映射还使得能够直接连接到使用虚拟地址的软件缓冲器,而不需要主机10中的软件来将地址转换为物理地址。
适配器80写到主机的存储器60中的每个分组具有与其关联的状态。该状态使得适配器80和主机10中的软件之间能够同步。该状态可用于指示分组的不同可靠等级。ISOC 120提供下述状态写回(write back):发送DMA完成(Transmit DMA Completion)指示已将TX分组中的数据读入适配器80中;可靠发送(Reliable Transmission)被返回,以指示网络30中数据发送已完成;接收DMA完成(Receive DMA Completion)指示接收数据向存储器60的传输已完成;以及可靠接收(Reliable Reception)指示网络30中的目标节点接收到了发送分组。
TX帧描述符包括2字节状态字段。状态写回意味着事务状态被回写到描述符中。该状态包括可以由主机10中的软件查询的完成比特。当主机10中的软件发现一组完成比特时,其重新使用与帧描述符定义的帧关联的缓冲器。
由RX LCP信道实现完成队列。完成队列使用的LCP信道具有可以由任何RX LCP信道实现的所有灵活性和属性。TX和RX处理器150和160产生状态写回,以指示可靠发送、可靠接收、接收DMA完成、或发送DMA完成。在不同的情况下使用不同的涉及帧的指示。例如,在可靠发送的情况下,是TX处理器150。读取指示分组发送状态的内部寄存器。在可靠接收的情况下,RX处理器160获得完成指示,作为包括确认的接收分组。在接收DMA完成的情况下,RX处理器160使用帧完成信息。在发送DMA完成的情况下,TX处理器150指示适配器80中接收到了要发送的帧。可以由单个TX或RX LCP信道使用完成队列,或由多个信道共享完成队列。适配器80中的微码通过将帧描述符初始化为RX LCP引擎360的命令队列来更新状态队列。参考图11,经由包括完成队列920的完成状态LCP 900,将状态传输到主机10的存储器60。完成队列900是连续的(要么是物理的要么是虚拟的),并且位于主机10的存储器60中。例如可以在连续缓冲器中保存完成队列。完成队列中的条目930最好具有固定大小。每个条目拥有指针940,其指向与接收LCP 910关联的缓冲器950的头部。缓冲器950中充满了与完成状态关联的分组960。
TX软件/适配器信号交换包括TX LCP端口和完成RX LCP端口。每个LCP发送信道使用下述数据结构:
门铃条目,作为存储映射地址实现,通知适配器80增加处理描述符和数据的请求。每项处理具有为门铃访问使用的进入单页面存储映射地址的唯一的访问权。
适配器存储空间210中的LCP上下文条目,包含LCP属性和状态字段。
发送描述符的结构。该结构可以跨越主机10的存储器60中的多个物理页面。如果为描述符使用了虚拟寻址,则使用转换表来将一个页面移动到下一个页面。如果为描述符使用了物理寻址,则使用分支描述符来将一个页面移动到下一个页面。发送描述符包含状态字段,其可以在向适配器80传输所有与描述符相关的数据之后更新。
发送数据缓冲器,钉在主机10的存储器60中,由指针描述符指向其。如果为数据缓冲器使用虚拟寻址,则转换表将指针转换为适配器80使用的物理地址,以访问主机10中的存储器60。
适配器存储空间210中的转换表和保护块,用于地址映射。
参考图12,发送分组流程包括,在步骤1000,主机10中的软件1020用要发送的数据填充缓冲器1030。在步骤1010,软件1020更新描述符1040。描述符1040可以在主机10的存储器60中,或在适配器80的存储空间210中。在步骤1050,软件1020呼叫(ring)门铃,以通知适配器80新数据发送准备就绪。在步骤1060,适配器80管理来自不同LCP信道的请求之间的仲裁。当一信道在仲裁中获胜时,则适配器80读取新的描述符1040。在步骤1070,适配器80读取数据。在步骤1080,向网络30发送数据。在步骤1090,在描述符1040或在完成队列中更新状态。
当访问数据缓冲器时,TX LCP信道可以使用地址转换。在这种情况下,数据缓冲器由多个存储页面组成。就该处理而言,这些存储页面在连续的虚拟存储空间中。然而,就适配器80而言,这些存储页面可以在不连续的物理存储空间中。完成状态结构包含指示已发送的帧的状态的信息。这作为单独的LCP信道而实现。作为每个帧的第一个描述符的帧描述符具有任选状态字段,其可以在向适配器80传输帧之后更新。
参考图13,在发送LCP信道流程的例子中,描述符1100位于主机10的存储器60中。访问描述符1110和存储分组1120的缓冲器1110需要经过位于适配器80中的转换表1130的地址转换。缓冲器1110使用主机10中的软件的虚拟地址空间中的连续空间。由两类描述符描述每个帧1120:帧描述符1140,提供涉及分组的信息;和指针描述符1150,其指向保持数据1120的缓冲器1110。每个分组包括数据有效负载1170,在同一缓冲器1180中,其前面是首标1160。
对门铃的写事务1190更新适配器80可用的字1200的数量。这一信息存储在LCP上下文140中。发送LCP上下文140包括指针1210,其指向拥有要发送的数据的缓冲器1110的头部。当LCP信道赢得了ISOC 120的内部信道仲裁时,ISOC 120根据LCP上下文140中的指针1210读取LCP信道的描述符。对LCP信道的缓冲器1110和描述符1100,使用位于适配器80的存储器子系统210中的转换表1130,将虚拟地址转换成物理地址。在存储缓冲器的注册期间,由LCP管理器140更新转换表1130。ISOC 120从缓冲器1110向适配器80读取数据和帧首标。然后,在ISOC 1320上,由用于网络30的首标替换帧首标1160。然后,将分组首标和对应的数据发送的网络30。
RX LCP端口用于从ISOC 120向由主机10上运行的软件应用程序使用的存储器60传输到来数据。TX LCP信道完全通过由主机10上的软件初始化的描述符控制。RX LCP信道使用来自主机10上的软件和ISOC 120两者描述符。由ISOC 120初始化的描述符用于控制LCP信道操作,以定义接收到的帧在主机10的存储器60中的目的地。由主机10中的软件初始化的描述符可以用于定义未通过转换表中的映射定义缓冲器的缓冲器位置。为了实现主机10的软件和适配器80之间的信息交换,最好使用两个LCP信道:RXLCP信道,用于处理接收到的到来数据结构;和RX LCP信道,用于处理完成状态队列。适配器80使用完成状态来发信号通知主机10中的软件向主机10的存储器60的帧传输已完成。向顺序地址中的完成队列结构中插入条目。每个完成状态条目包含由适配器80标记,并由主机10中的软件集中(pool)的字段,以检验已从适配器80向主机10中的软件传输条目所有权。一个或多个RX LCP信道可以使用相同的完成状态队列。由ISOC 120执行RX LCP信道对完成状态队列的共享。
RX LCP信道需要指示到来分组的目的地址的信息。ISOC 120具有两种用于寻找空缓冲器位置的寻址方法:
直接寻址模式,参考不使用指针描述符来指出缓冲器的LCP信道。由ISOC 120中的微码定义或从上下文140中读取目的地址。
间接寻址模式,参考维护描述符结构中指向数据缓冲器的指针的LCP信道。描述符最好位于主机10的存储器60中。
直接寻址大大减少了到来分组通过适配器80的处理的延迟时间。然而,其需要由LCP管理器130注册存储缓冲器,包括存储有关适配器80的虚拟向物理转换信息。主机10中的软件向信道门铃写入,以指示添加到可以由该信道使用的空缓冲器的字的数量。在直接模式中,使用下述步骤来确定目的缓冲器的地址:
A.驱动地址A作为对LCP引擎的命令。
B.(可选的)将地址A映射到地址A’。
C.地址A’(如果执行了步骤B)或A(如果没有执行步骤B)是目的缓冲器的基地址。
在间接模式中,适配器80使用描述符来发现数据缓冲器的地址。描述符由主机10中的软件来管理。描述符最好位于主机10的存储器60中。术语“间接”用于强调适配器80读取附加信息来定义目的地址。适配器80在运行时期访问该信息。间接寻址减少了存储转换表所需的适配器80中的存储量n。通常,描述符位于主机10的存储器60中。在间接模式中,使用下述步骤来确定目的缓冲器的地址:
A.驱动地址A作为对LCP引擎的命令。
B.(可选的)将地址A映射到地址A’。
C.地址A’(如果执行了步骤B)或A(如果没有执行步骤B)是指针描述符的地址。
D.从描述符中读取指向缓冲器的指针,地址B。
E.(可选的)将地址B映射到地址B’。
F.地址B’(如果执行了步骤E)或B(如果没有执行步骤E)是目的缓冲器的基地址。
每个RX LCP信道使用下述数据结构:
门铃入口,作为存储映射地址实现,通知适配器80有附加数据或描述符可用于适配器80写分组数据。
适配器80的存储空间210中的LCP上下文条目,包含LCP属性、情形、结构和状态字段。
指向存储器的描述符,用于在间接模式下使用。
主机10的存储器60中连续虚拟地址中的缓冲器。
适配器80的存储空间210中的转换表和保护块,用于地址映射。
接收分组的流程取决于下述特性:
直接还是间接寻址模式。
对于间接模式,描述符位于主机10的存储器60中。
对于直接模式,在访问描述符期间可以或不可以使用地址映射。
在访问缓冲器期间可以或不可以使用地址映射。
对于间接模式,在访问描述符期间可以或不可以使用地址保护。
在访问缓冲器期间可以或不可以使用地址保护。
在LCP信道初始化期间,为每个LCP信道设置这些特性,作为信道的上下文140的部分。
参考图14,接收分组的流程包括,在步骤1300,由主机10中的软件1310为接收到的数据准备空缓冲器1320。在步骤1330,在直接模式下,主机10中的软件1310更新描述符1340。描述符1340位于主机10的存储器60中。在步骤1350,主机10中的软件呼叫门铃,以向适配器80通知空缓冲器空间。对于间接模式,门铃提供指示新描述符1340的信息。对于直接模式,门铃提供指示附加的自由缓冲空间的信息。在这一级,适配器80已准备好从网络30向主机10的存储器60传输接收数据。只要主机10中的软件1310给RX LCP信道添加空缓冲器1320,就重复步骤1300、1330以及1350。ISOC120为每个接收到的分组重复下述步骤。在步骤1360,适配器80接收数据。在步骤1370,在间接模式下,适配器80读取指向空数据缓冲器1320的位置的描述符1340。在步骤1380,将数据和首标写入数据缓冲器1340中。在步骤1390,在完成队列中更新状态。
参考图15,在接收LCP信道流程的例子中,没有使用指针描述符。此外,没有使用转换表。数据缓冲器1400使用利用缓冲器1400的主机10中的软件的物理地址空间中的连续空间。将首标和数据有效负载都写到缓冲器1400中。对门铃的写事务1410更新可由适配器80使用的数据空间。该信息存储在LCP上下文140中。接收/完成LCP上下文140包括指向缓冲器1400的指针1420和用于写新的数据/完成条目的到下一个/当前的地址的偏移1430。当适配器980接收到分组时,其将偏移1430增加到下一个分组的位置,并更新可用数据空间。一旦完成帧接收、一旦帧超时、或对于其它任何需要从LCP客户100了解的帧事件,就将完成条目1440添加到完成LCP1450。完成条目1440包含LCP客户100在LCP数据缓冲器1400中给帧定位所需要的所有信息。主机10中的软件使用完成条目1440中的字段来识别其已被授予对完成条目1440的所有权。
ISOC 120准许LCP信道用于在适配器80的存储器子系统210和主机10的存储器60之间移动数据。为了从主机10的存储器60向适配器80传输数据,使用了发送信道。为了从适配器80向主机10的存储器60传输数据,使用了接收信道。当要从主机10的存储器60向适配器80传输数据时,帧描述符包括ISOC 120的总线340上的目的地址。该地址定义帧数据有效负载的目的地。分组首标以平常的方式传输。这使得能够将表和代码装载到ISOC 120的存储空间中。为了使用接收信道从ISOC 120的存储空间向主机10的存储器60传输数据,由RX处理器160初始化描述符。该描述符包括既指示主机10的存储器60中的目的地址又指示源地址的信息。
在前面描述的本发明的优选实施例中,适配器80经由总线体系结构70连接到主计算机系统10的存储器60和CPU 50。然而,在本发明的其它实施例中,可以将适配器80集成到主计算机系统10中,而不需依靠总线体系结构70。例如,在本发明的其它实施例中,适配器80可以经由连接到主机存储器60的存储控制器来集成到主计算机系统中。
此外,在前面描述的本发明的优选实施例中,以可插适配器卡的形式实现适配器80,以插入主计算机系统10。然而,应该明白,在本发明的其它实施例中,适配器80的不同实现也是可能的。例如,适配器80可以与CPU 50和存储器60一起位于主计算机系统的主板上。

Claims (16)

1.一种用于控制第一和第二数据处理系统之间经由存储器的数据流的装置,该装置包括:
描述符逻辑,用于产生多个描述符;以及
描述符表,用于存储由描述符逻辑产生的描述符,以由第一和第二数据处理系统访问,
其中描述符包括:
帧描述符,用于定义要在存储器中的位置和第二数据处理系统之间通信的数据分组;和
指针描述符,用于识别存储器中的位置。
2.如权利要求1所述的装置,其特征在于:描述符表存储在第一数据处理系统中。
3.如权利要求1所述的装置,其特征在于:描述符表存储在第二数据处理系统中。
4.如前述任何一个权利要求所述的装置,其特征在于:描述符逻辑产生分支描述符,而分支描述符包括到描述符表中另一个描述符的链接。
5.如权利要求4所述的装置,其特征在于:描述符表包括多个经由其中的分支描述符依次链接在一起的描述符列表。
6.如权利要求4所述的装置,其特征在于:描述符表包括循环描述符列表。
7.如前述任何一个权利要求所述的装置,其特征在于:第一数据处理系统包括主计算机系统。
8.如前述任何一个权利要求所述的装置,其特征在于:第二数据处理系统包括用于在主计算机系统和数据通信网络之间进行数据通信的数据通信接口。
9.一种数据处理系统,包括:
主机处理系统,其具有存储器;
数据通信接口,用于在主计算机系统和数据通信网络之间进行数据通信;
如前述任何权利要求所述的装置,用于控制主计算机系统的存储器和数据通信接口之间的数据流。
10.一种控制第一和第二数据处理系统之间经由存储器的数据流的方法,该方法包括:
由描述符逻辑产生多个描述符;以及
在描述符表中存储由多个由描述符逻辑产生的描述符,以由第一和第二数据处理系统访问,
其中描述符包括:
帧描述符,用于定义要在存储器中的位置和第二数据处理系统之间传递的数据分组;和
指针描述符,用于识别存储器中的位置。
11.如权利要求10所述的方法,包括在第一数据处理系统中存储描述符表。
12.如权利要求10所述的方法,包括在第二数据处理系统中存储描述符表。
13.如权利要求10至12中任何一个所述的方法,包括由描述符逻辑产生分支描述符,而分支描述符包括到描述符表中另一个描述符的链接。
14.如权利要求13所述的方法,包括经由分支描述符将多个描述符列表依次链接在一起,以形成描述符表。
15.如权利要求10至14中任何一个所述的方法,其特征在于:第一数据处理系统包括主计算机系统。
16.如权利要求10至15中任何一个所述的方法,其特征在于:第二数据处理系统包括用于在主计算机系统和数据通信网络之间进行数据通信的数据通信接口。
CNB018224148A 2001-01-31 2001-01-31 控制数据处理系统间经由存储器的数据流的方法和装置 Expired - Lifetime CN1307570C (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/IB2001/000122 WO2002061592A1 (en) 2001-01-31 2001-01-31 Method and apparatus for controlling flow of data between data processing systems via a memory

Publications (2)

Publication Number Publication Date
CN1488105A true CN1488105A (zh) 2004-04-07
CN1307570C CN1307570C (zh) 2007-03-28

Family

ID=11004037

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB018224148A Expired - Lifetime CN1307570C (zh) 2001-01-31 2001-01-31 控制数据处理系统间经由存储器的数据流的方法和装置

Country Status (10)

Country Link
US (1) US7320041B2 (zh)
EP (1) EP1358562B8 (zh)
JP (1) JP4755390B2 (zh)
KR (1) KR100773013B1 (zh)
CN (1) CN1307570C (zh)
CA (1) CA2432387A1 (zh)
CZ (1) CZ20032078A3 (zh)
HU (1) HUP0302879A3 (zh)
PL (1) PL362792A1 (zh)
WO (1) WO2002061592A1 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102195874A (zh) * 2010-03-02 2011-09-21 马维尔以色列(M.I.S.L.)有限公司 数据分组的预提取
CN102404247A (zh) * 2010-09-10 2012-04-04 夏普株式会社 服务器装置、邮件服务器装置和传真服务器装置
WO2012164420A1 (en) * 2011-06-01 2012-12-06 International Business Machines Corporation Re-programming programmable hardware devices without system downtime
US8495265B2 (en) 2011-06-01 2013-07-23 International Business Machines Corporation Avoiding non-posted request deadlocks in devices by holding the sending of requests
CN104052676A (zh) * 2014-06-13 2014-09-17 华为技术有限公司 一种发送通路及发送通路的数据处理方法
CN110083550A (zh) * 2014-03-27 2019-08-02 意法半导体(R&D)有限公司 用于存储内容的方法和装置
CN112347003A (zh) * 2020-11-26 2021-02-09 北京泽石科技有限公司 一种高效的闪存颗粒微码控制方法

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4755390B2 (ja) 2001-01-31 2011-08-24 インターナショナル・ビジネス・マシーンズ・コーポレーション メモリを介してデータ処理システムの間でデータのフローを制御する方法および装置
KR20030071856A (ko) 2001-01-31 2003-09-06 인터내셔널 비지네스 머신즈 코포레이션 메모리를 통해 데이터 처리 시스템들간의 데이터 흐름을제어하기 위한 방법 및 장치
US20050078704A1 (en) * 2003-10-14 2005-04-14 International Business Machines Corporation Method and apparatus for translating data packets from one network protocol to another
US20060106853A1 (en) * 2004-11-17 2006-05-18 International Business Machines Corporation Allocation and Scaling of Descriptor Lists.
US7831749B2 (en) * 2005-02-03 2010-11-09 Solarflare Communications, Inc. Including descriptor queue empty events in completion events
US7414975B2 (en) * 2005-03-24 2008-08-19 Ixia Protocol stack
US7586936B2 (en) * 2005-04-01 2009-09-08 International Business Machines Corporation Host Ethernet adapter for networking offload in server environment
US7865624B1 (en) 2005-04-04 2011-01-04 Oracle America, Inc. Lookup mechanism based on link layer semantics
US7843926B1 (en) * 2005-04-05 2010-11-30 Oracle America, Inc. System for providing virtualization of network interfaces at various layers
US7561531B2 (en) * 2005-04-19 2009-07-14 Intel Corporation Apparatus and method having a virtual bridge to route data frames
US7710969B2 (en) * 2005-05-13 2010-05-04 Texas Instruments Incorporated Rapid I/O traffic system
US7639715B1 (en) * 2005-09-09 2009-12-29 Qlogic, Corporation Dedicated application interface for network systems
US7773630B2 (en) * 2005-11-12 2010-08-10 Liquid Computing Corportation High performance memory based communications interface
US7676192B1 (en) * 2005-12-21 2010-03-09 Radio Shack, Corp. Radio scanner programmed from frequency database and method
US7735099B1 (en) 2005-12-23 2010-06-08 Qlogic, Corporation Method and system for processing network data
US7764676B1 (en) * 2006-07-31 2010-07-27 Qlogic, Corporation Method and system for processing network information
US20080126600A1 (en) * 2006-08-31 2008-05-29 Freescale Semiconductor, Inc. Direct memory access device and methods
US7613887B1 (en) 2006-09-18 2009-11-03 Marvell International Ltd. System and method for managing a memory storage device
US8127113B1 (en) 2006-12-01 2012-02-28 Synopsys, Inc. Generating hardware accelerators and processor offloads
US8706987B1 (en) 2006-12-01 2014-04-22 Synopsys, Inc. Structured block transfer module, system architecture, and method for transferring
US8289966B1 (en) * 2006-12-01 2012-10-16 Synopsys, Inc. Packet ingress/egress block and system and method for receiving, transmitting, and managing packetized data
US8325633B2 (en) * 2007-04-26 2012-12-04 International Business Machines Corporation Remote direct memory access
US7948999B2 (en) * 2007-05-04 2011-05-24 International Business Machines Corporation Signaling completion of a message transfer from an origin compute node to a target compute node
US7889657B2 (en) * 2007-05-04 2011-02-15 International Business Machines Corporation Signaling completion of a message transfer from an origin compute node to a target compute node
US7890670B2 (en) * 2007-05-09 2011-02-15 International Business Machines Corporation Direct memory access transfer completion notification
US7779173B2 (en) * 2007-05-29 2010-08-17 International Business Machines Corporation Direct memory access transfer completion notification
US8037213B2 (en) 2007-05-30 2011-10-11 International Business Machines Corporation Replenishing data descriptors in a DMA injection FIFO buffer
US7765337B2 (en) * 2007-06-05 2010-07-27 International Business Machines Corporation Direct memory access transfer completion notification
US8478834B2 (en) * 2007-07-12 2013-07-02 International Business Machines Corporation Low latency, high bandwidth data communications between compute nodes in a parallel computer
US8018951B2 (en) 2007-07-12 2011-09-13 International Business Machines Corporation Pacing a data transfer operation between compute nodes on a parallel computer
US7890597B2 (en) * 2007-07-27 2011-02-15 International Business Machines Corporation Direct memory access transfer completion notification
US8959172B2 (en) * 2007-07-27 2015-02-17 International Business Machines Corporation Self-pacing direct memory access data transfer operations for compute nodes in a parallel computer
US20090031001A1 (en) * 2007-07-27 2009-01-29 Archer Charles J Repeating Direct Memory Access Data Transfer Operations for Compute Nodes in a Parallel Computer
GB2455347B (en) * 2007-12-07 2012-04-11 Virtensys Ltd Control path I/O virtualisation
US9009350B2 (en) * 2008-04-01 2015-04-14 International Business Machines Corporation Determining a path for network traffic between nodes in a parallel computer
US9225545B2 (en) * 2008-04-01 2015-12-29 International Business Machines Corporation Determining a path for network traffic between nodes in a parallel computer
US8214614B2 (en) * 2008-10-24 2012-07-03 Microsoft Corporation Avoiding information disclosure when direct mapping non-page aligned buffers
US8811411B2 (en) * 2008-12-24 2014-08-19 Entropic Communications, Inc. Packet aggregation and fragmentation at layer-2 over a managed network
US9444757B2 (en) 2009-04-27 2016-09-13 Intel Corporation Dynamic configuration of processing modules in a network communications processor architecture
US8943507B2 (en) * 2009-04-27 2015-01-27 Deepak Mital Packet assembly module for multi-core, multi-thread network processors
US9461930B2 (en) 2009-04-27 2016-10-04 Intel Corporation Modifying data streams without reordering in a multi-thread, multi-flow network processor
US8544026B2 (en) * 2010-02-09 2013-09-24 International Business Machines Corporation Processing data communications messages with input/output control blocks
US8949453B2 (en) 2010-11-30 2015-02-03 International Business Machines Corporation Data communications in a parallel active messaging interface of a parallel computer
US8949328B2 (en) 2011-07-13 2015-02-03 International Business Machines Corporation Performing collective operations in a distributed processing system
US8930962B2 (en) 2012-02-22 2015-01-06 International Business Machines Corporation Processing unexpected messages at a compute node of a parallel computer
US8880756B1 (en) 2013-07-01 2014-11-04 Atmel Corporation Direct memory access controller
US9817776B2 (en) * 2015-01-19 2017-11-14 Microsoft Technology Licensing, Llc Memory descriptor list caching and pipeline processing
US11630668B1 (en) * 2021-11-18 2023-04-18 Nxp B.V. Processor with smart cache in place of register file for providing operands
TWI779938B (zh) 2021-11-29 2022-10-01 瑞昱半導體股份有限公司 存取系統記憶體的方法及設置於網路卡上的處理電路

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0175398A3 (en) * 1984-08-17 1989-08-30 Koninklijke Philips Electronics N.V. Data processing system comprising a memory access controller which is provided for combining descriptor bits of different descriptors associated with virtual addresses
FR2665040B1 (fr) 1990-07-20 1994-08-05 Thomson Csf Procede et dispositif de pontage entre reseaux locaux.
US5359730A (en) 1992-12-04 1994-10-25 International Business Machines Corporation Method of operating a data processing system having a dynamic software update facility
US5448702A (en) 1993-03-02 1995-09-05 International Business Machines Corporation Adapters with descriptor queue management capability
EP0712220A1 (en) * 1994-11-08 1996-05-15 International Business Machines Corporation Hop-by-hop flow control in an ATM network
US5867663A (en) * 1995-07-19 1999-02-02 Fujitsu Network Communications, Inc. Method and system for controlling network service parameters in a cell based communications network
US5751951A (en) * 1995-10-30 1998-05-12 Mitsubishi Electric Information Technology Center America, Inc. Network interface
US5933632A (en) 1995-12-21 1999-08-03 Intel Corporation Ring transitions for data chunks
US5805844A (en) 1996-10-07 1998-09-08 Gustin; Jay W. Control circuit for an interface between a PCI bus and a module bus
US6028843A (en) 1997-03-25 2000-02-22 International Business Machines Corporation Earliest deadline first communications cell scheduler and scheduling method for transmitting earliest deadline cells first
JP4086345B2 (ja) * 1997-09-09 2008-05-14 キヤノン株式会社 通信制御方法及び装置及び通信システム
US6226267B1 (en) * 1998-04-10 2001-05-01 Top Layer Networks, Inc. System and process for application-level flow connection of data processing networks
US6522188B1 (en) * 1998-04-10 2003-02-18 Top Layer Networks, Inc. High-speed data bus for network switching
US6570850B1 (en) * 1998-04-23 2003-05-27 Giganet, Inc. System and method for regulating message flow in a digital data network
US6466581B1 (en) * 1998-08-03 2002-10-15 Ati Technologies, Inc. Multistream data packet transfer apparatus and method
US6327615B1 (en) * 1998-09-30 2001-12-04 Stmicroelectronics, Inc. Method and system of controlling transfer of data by updating descriptors in descriptor rings
US6202107B1 (en) * 1998-11-19 2001-03-13 Sun Microsystems, Inc. Host controller interface descriptor fetching unit
JP3107077B2 (ja) * 1999-02-22 2000-11-06 住友電気工業株式会社 通信方法及び通信装置
US6324595B1 (en) * 1999-03-15 2001-11-27 Advanced Micro Devices, Inc. Dedication of space in descriptor for minimizing data processing during communications between a peripheral device and a host system
JP2000295281A (ja) * 1999-04-05 2000-10-20 Sumitomo Electric Ind Ltd マルチキャストパケットのフロー制御装置および方法
US6697330B1 (en) * 1999-11-26 2004-02-24 Hewlett-Packard Development Company L.P. Method and system for output flow control in network multiplexers
US6832273B2 (en) * 2000-12-21 2004-12-14 Microsoft Corporation System and method to specify extended configuration descriptor information in USB devices
US7058978B2 (en) * 2000-12-27 2006-06-06 Microsoft Corporation Security component for a computing device
KR20030071856A (ko) * 2001-01-31 2003-09-06 인터내셔널 비지네스 머신즈 코포레이션 메모리를 통해 데이터 처리 시스템들간의 데이터 흐름을제어하기 위한 방법 및 장치
JP4755390B2 (ja) 2001-01-31 2011-08-24 インターナショナル・ビジネス・マシーンズ・コーポレーション メモリを介してデータ処理システムの間でデータのフローを制御する方法および装置

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102195874A (zh) * 2010-03-02 2011-09-21 马维尔以色列(M.I.S.L.)有限公司 数据分组的预提取
CN102195874B (zh) * 2010-03-02 2016-06-08 马维尔以色列(M.I.S.L.)有限公司 数据分组的预提取
CN102404247A (zh) * 2010-09-10 2012-04-04 夏普株式会社 服务器装置、邮件服务器装置和传真服务器装置
CN102404247B (zh) * 2010-09-10 2016-01-20 夏普株式会社 服务器装置、邮件服务器装置和传真服务器装置
US8516177B2 (en) 2011-06-01 2013-08-20 International Business Machines Corporation Avoiding non-posted request deadlocks in devices by holding the sending of requests
US8495265B2 (en) 2011-06-01 2013-07-23 International Business Machines Corporation Avoiding non-posted request deadlocks in devices by holding the sending of requests
CN103562865A (zh) * 2011-06-01 2014-02-05 国际商业机器公司 重新编程可编程硬件设备而不需要系统停机时间
CN103562865B (zh) * 2011-06-01 2017-07-28 国际商业机器公司 用于重新编程可编程硬件设备的方法和系统
US8903966B2 (en) 2011-06-01 2014-12-02 International Business Machines Corporation Re-programming programmable hardware devices without system downtime
US8909745B2 (en) 2011-06-01 2014-12-09 International Business Machines Corporation Re-programming programmable hardware devices without system downtime
WO2012164420A1 (en) * 2011-06-01 2012-12-06 International Business Machines Corporation Re-programming programmable hardware devices without system downtime
GB2504040A (en) * 2011-06-01 2014-01-15 Ibm Re-programming programmable hardware devices without system downtime
CN110083550A (zh) * 2014-03-27 2019-08-02 意法半导体(R&D)有限公司 用于存储内容的方法和装置
WO2015188770A1 (zh) * 2014-06-13 2015-12-17 华为技术有限公司 一种发送通路及发送通路的数据处理方法
CN104052676A (zh) * 2014-06-13 2014-09-17 华为技术有限公司 一种发送通路及发送通路的数据处理方法
US9813349B2 (en) 2014-06-13 2017-11-07 Huawei Technologies Co., Ltd. Transmission path and data processing method for transmission path
CN104052676B (zh) * 2014-06-13 2017-12-05 华为技术有限公司 一种发送通路装置及发送通路的数据处理方法
CN112347003A (zh) * 2020-11-26 2021-02-09 北京泽石科技有限公司 一种高效的闪存颗粒微码控制方法

Also Published As

Publication number Publication date
EP1358562B1 (en) 2011-11-16
CA2432387A1 (en) 2002-08-08
HUP0302879A2 (hu) 2003-12-29
KR20030071857A (ko) 2003-09-06
CN1307570C (zh) 2007-03-28
HUP0302879A3 (en) 2004-08-30
PL362792A1 (en) 2004-11-02
CZ20032078A3 (cs) 2003-11-12
US20040057380A1 (en) 2004-03-25
JP2004523035A (ja) 2004-07-29
WO2002061592A1 (en) 2002-08-08
US7320041B2 (en) 2008-01-15
EP1358562B8 (en) 2012-03-28
EP1358562A1 (en) 2003-11-05
JP4755390B2 (ja) 2011-08-24
KR100773013B1 (ko) 2007-11-05

Similar Documents

Publication Publication Date Title
CN1488105A (zh) 控制数据处理系统间经由存储器的数据流的方法和装置
CN1488104A (zh) 控制数据处理系统间经由存储器的数据流的方法和装置
CN1256681C (zh) 从外围设备向主计算机系统传输中断的方法和装置
CN1253802C (zh) 计算机组件间直接传输数据的集线器链路
US6611883B1 (en) Method and apparatus for implementing PCI DMA speculative prefetching in a message passing queue oriented bus system
CN108337910B (zh) 用于软件定义的互连交换机的架构
CN1149806C (zh) 高性能通信控制器
US6622193B1 (en) Method and apparatus for synchronizing interrupts in a message passing queue oriented bus system
CN1310475C (zh) 用于根据使用类来控制对设施的访问的装置和方法
CN1239999C (zh) 处理iSCSI命令的方法和系统
CN1150460C (zh) 计算机总线系统、通信系统和通过总线通信的方法
US7287114B2 (en) Simulating multiple virtual channels in switched fabric networks
CN1279469C (zh) 一种处理器中处理数据的方法和处理数据的系统
CN1640089A (zh) 用于NGIO/InfiniBandTM应用的远程密钥验证的方法和机制
CN1910571A (zh) 单芯片协议转换器
CN101990002A (zh) 控制器集成
WO2002041157A2 (en) Method and apparatus for converting address information between pci bus protocol and a message passing queue-oriented bus protocol
CN1633130A (zh) 基于硬件支持的虚拟接口结构用户层网络通信系统
US10061707B2 (en) Speculative enumeration of bus-device-function address space
CN1487418A (zh) 远端直接存储器存取启用网络适配器的存储器管理卸载
CN1330782A (zh) 非均匀存储器存取(numa)数据处理系统的中断体系结构
CN1617526A (zh) 在物理端口上模拟多个逻辑端口的方法和装置
CN1494690A (zh) 用于宽带网络的计算机体系结构和软件单元
CN113868173A (zh) 扁平化端口桥
US9471521B2 (en) Communication system for interfacing a plurality of transmission circuits with an interconnection network, and corresponding integrated circuit

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
CX01 Expiry of patent term

Granted publication date: 20070328

CX01 Expiry of patent term