专利名称:用于媒体数据卸载处理的系统、设备和方法
技术领域:
在此公开的主题涉及计算平台。尤其是,在此公开的主题涉及用于通过一通信网络传输数据或接收数据的计算平台。
背景技术:
计算平台一般包含使得驻留(hosted)在一主处理系统上的过程能够与一通信网络中的节点进行通信的外围设备,诸如网络接口控制器(NIC)。计算平台还典型地包含能够在驻留在一主处理系统上的设备驱动程序的控制下生成声音或图像的设备,诸如音频或视频解码器。
现有技术图1显示了处理平台10,所述处理平台10包含有耦合到一个中央处理单元(CPU)14的系统存储器12,用于提供一个主处理系统。NIC 20、视频输出设备22和音频输出设备24通过一条设备总线16耦合到所述主处理系统。典型地,设备总线16和前端总线18可以被提供到几个核心逻辑主板芯片组中的任何一个中,所述核心逻辑主板芯片组诸如是包含由Intel公司出售的存储器控制器集线器(MCH)和输入/输出控制器集线器(ICH)设备的核心逻辑芯片组。
发明内容
典型的,NIC20从一个通信网络中接收被封装在数据帧中的数据包。典型地,NIC20把接收的数据包传输到在系统存储器12中的预定义缓冲区单元中,以由主处理系统进一步进行处理。为了生成声音或图像,驻留在主处理系统上的设备驱动程序,典型地把数据从在系统存储器12中的预定义缓冲区单元中传输到视频输出设备22或者音频输出设备。当从这些驱动程序中接收了数据后,视频输出设备22或音频输出设备24典型地把接收的数据解码成为用于驱动诸如显示器或音频扬声器的媒体输出设备的信号。
将参考下列图对本发明的非限制性的和非穷举的实施例加以描述,在贯穿各种图中,除非另作说明,否则相似的参考数字指示相似的部件。
图1表示了一个现有技术处理平台的示意图。
图2表示了一个依据本发明一个实施例的、用于从一个通信网络向一个处理平台传输媒体数据的系统。
图3表示了依据如图2所示系统的实施例的一个处理平台的示意图,其中所述处理平台包含一个网络接口控制器(NIC),用于独立于主处理系统地把媒体数据传输到一个或多个媒体解码设备。
图4表示依据如图3所示的处理平台的一个实施例的处理平台的示意图,其中所述处理平台包含一个转换器,用于将数据从NIC转发到一个或多个媒体解码设备。
图5表示依据如图3所示处理平台的一个实施例说明如下过程的流程图,所述过程响应于媒体事件启动从NIC到一个或多个媒体解码设备的数据传送。
图6表示依据如图3所示的处理平台的一个实施例说明如下过程的流程图,所述过程将在NIC处接收的数据包转发到一个或多个媒体解码设备。
具体实施例方式
在整个说明书中对“一个实施例”或者“一实施例”的引用是指结合所述实施例描述的一个特定特征、结构、或者特点被包含在本发明的至少一个实施例中。因此,短语“在一个实施例”或“一个实施例”在整个说明书的各个位置的出现不一定都是指同一个实施例。此外,特定特征、结构、或特点可以组合在一个或多个实施例中。
在此提到的“机器可读指令”是可以被一个或多个机器在执行一个或多个逻辑操作时所理解的语句。例如,机器可读指令可以包含在对一个或多个数据对象执行一个或多个操作时可被一个处理器编译器解释的指令。然而,这仅仅是机器可读指令的一个例子,而且本发明中的实施例并不局限于这个方面的含义。
在此提到的“存储介质”涉及能够保持可由一个或多个机器理解的语句的介质。例如,存储介质可以包含用于存储机器可读指令或者数据的一个或多个存储设备。此种存储设备可以包含诸如光学、磁或者半导体存储介质之类的存储介质。然而,这仅仅是存储介质的一个例子,而且本发明中的实施例并不局限于这个方面的含义。
在此提到的“逻辑”涉及用于执行一个或多个逻辑操作的结构。例如,逻辑可以包含根据一个或多个输入信号提供一个或多个输出信号的电路。这种电路可以包含一接收数字输入并且提供数字输出的有限状态机,或是响应于一个或多个模拟输入信号提供一个或多个模拟输出信号的电路。可以在专用集成电路(ASIC)或者现场可编程门阵列(FPGA)中提供这种电路。此外,逻辑也可以包括保存在存储器中的机器可读的指令,其中所述逻辑与处理电路协同执行这种机器可读指令。然而,这些仅仅是可以提供逻辑的结构的例子,而且本发明中的实施例并不局限于这个方面的含义。
在此讨论的“处理系统”涉及用于实现计算任务的硬件和软件资源的组合。然而,这仅仅是处理系统的一个例子,而且本发明中的实施例并不局限于这个方面的含义。“主处理系统”涉及一种适于和“外围设备”通信的处理系统。例如,外围设备可以向驻留在主处理系统上的一个应用程序提供输入或是从其中接收输出。然而,这些仅仅是主处理系统和外围设备的例子,而且本发明中的实施例并不局限于这个方面。
在此提到的“数据总线”涉及用于在设备之间传输数据的电路。例如,数据总线可以在主处理系统和外围设备之间传输数据。然而,这仅仅是数据总线的一个例子,而且本发明中的实施例并不局限于这个方面。在此提到的“总线事务”涉及在一个总线结构中相耦合的设备之间的交互,其中,一个设备通过总线结构传输寻址到其它设备的数据。
在此提到的“网络接口控制器”(NIC)涉及一种向通信网络传输数据或是从其中接收数据的设备。NIC可以包含适于耦合到通信网络中的传输介质的“网络接口”。例如,网络接口可以包含向特定传输介质传输数据或是从其中接收数据的一种或多个物理通信电路,还包括用于采用介质无关格式传输或接收数据的介质无关接口。然而,这些仅仅是NIC和网络接口的例子,而且本发明中的实施例并不局限于这个方面。
NIC还可以包含一种与其它设备通信的“输入/输出(I/O)接口”。例如,I/O接口可以将NIC耦合到如下设备,所述设备与一条数据总线或一个转换器相耦合,以便依据一种协议来传输数据或是接收数据。然而,这仅仅是I/O接口的一个例子,而且本发明中的实施例并不局限于这个方面。
在此提到的“数据包”涉及将从源传输到目的地的一些数据。数据包可以包含一个“有效负载”部分,它包含了将要在目的地接收的一条消息或一条消息的一部分。数据包还可以包含一个“首部”部分,它包含诸如与包的目的地相关联的“目的地地址”之类的信息。可以依据网络通信协议定义这样的目的地地址。然而,这些仅仅是数据包、有效负载、首部和目的地地址的例子,而且本发明中的实施例并不局限于这些方面。
在此提到的“媒体数据”涉及表示语句的已编码数据。例如,媒体数据可以包含表示音频信号或视觉图像的已编码数据。媒体数据可以以几种媒体编码格式中的任何一种被编码,以便在源和目的地之间进行传输。然而,这些仅仅是媒体数据和媒体编码格式的例子,而且本发明中的实施例并不局限于这些方面。
在此提到的“媒体解码设备”涉及用于处理媒体数据的设备。例如,媒体解码设备可以处理已编码的媒体数据以生成音频信号或视频信号。然而,这仅仅是媒体解码设备的一个例子,而且本发明中的实施例并不局限于这个方面。
在此提到的“媒体事件”涉及将呈现一个或多个媒体语句的时间周期。例如,媒体事件可以表示在响应媒体数据生成声音或图像期间的周期。然而,这仅仅是媒体事件的一个例子,而且本发明中的实施例并不局限于这个方面。
在此提到的“转发引擎”涉及根据目的地信息向目的地转发数据的逻辑。例如,转发引擎可以根据所接收的数据包的首部中的信息,向目的地转发接收的数据包或是接收的数据包的一部分。然而,这仅仅是转发引擎的一个例子,而且本发明中的实施例并不局限于这个方面。
在此提到的“会话信息”涉及把数据包与媒体事件的一个或多个方面相关联的信息。例如,可以把会话信息与数据包的一部分进行比较,以确定所述数据包是否与媒体事件相关联。此外,会话信息可以包含使数据包与媒体事件的诸如音频部分或视频部分的组成部分相关联的信息。然而,这仅仅是会话信息的例子,而且本发明中的实施例并不局限于这个方面。
简要来说,本发明中的实施例涉及一种从NIC向一个或多个媒体解码设备转发数据包的系统和方法。NIC可以和任一主处理系统和一个或多个媒体解码设备进行通信。NIC可以独立于主处理系统地向一个或多个媒体解码设备转发所接收的数据包中的媒体数据。然而,这仅仅是本发明的一个实施例例子,而且其它实施例并不局限于这个方面。
图2显示了一个依据本发明一个实施例的用于将媒体数据104从一个通信网络102传输到一个处理平台106的系统100。通信网络102可以包含一个源节点,它依据与NIC 112相关联的一个网络地址向NIC 112传输数据。例如,与网络102相关联的因特网服务供应商(ISP)(未显示)可以依据诸如传输控制协议/网际协议(TCP/IP)或用户数据报协议(UDP)的几种网络通信协议中的任何一种向NIC 112传输媒体数据104。然而,这些仅仅是可以被用来在一个通信网络中的节点之间传输媒体数据的一种网络协议的例子,并且可以使用其它通信协议。在NIC 112处接收的数据包可以包含用于标识作为接收数据包的一个目的地的NIC 112、视频控制器114或音频控制器116的目的地信息(例如,在包首部中)。所述数据包还可以包含如下信息(例如,在TCP/IP包首部中的会话标识符或端口号),所述信息使该数据包与在一个会话中的数据包流的一部分相关联。
NIC 112可以适于利用包含例如双绞线电缆、同轴电缆或光纤电缆的几种类型的数据传输介质中的任何一种与通信网络102相耦合。可选地,NIC 112可以通过无线数据链路耦合到通信网络102。然而,这些仅仅是可以被用来从一个通信网络向NIC传输数据的数据传输介质的例子,并且本发明的实施例并不局限于这些方面。NIC 112还可以适于根据诸如IEEE Std.802.3的Ethernet协议版本或依据IEEE Std.802.11的无线局域网(WLAN)协议版本的数据链路协议接收数据。然而,这些仅仅是可以被用来从一个通信网络向NIC传输数据的数据链路协议的例子,并且本发明的实施例并不局限于这些方面。
依据一个实施例,媒体数据104可以包含可用来生成声音或图像的已编码的音频数据或视频数据。然而,这些仅仅是媒体数据类型的例子,而且本发明中的实施例并不局限于这些方面。可以使用几种媒体编码或压缩技术中的任何一种来编码媒体数据104,这些编码或压缩技术包含基于标准的编码技术,诸如MPEG、JPEG、AVI、MP3、WMA、RealAudio、RealVideo、Divx、Ogg Vorbis和H.263。然而,这些仅仅是编码和/或压缩媒体数据的技术的例子,并且其它技术(包含有产权的编码和压缩技术)也可以使用。
在接收到包含媒体数据104的数据包时,NIC 112根据数据包中的信息把接收的媒体数据转发到视频控制器114或者音频控制器116。从NIC 116接收到音频数据时,音频控制器116可以依据压缩格式解码和/或解压缩音频数据,用以向扬声器110提供一个信号以便生成声音。类似地,从NIC 116接收到视频数据时,视频控制器可以解码和/或解压缩视频数据,用以向显示器108提供一个信号以便生成图像。
图3显示了依据如图2所示的系统的一个实施例的处理平台200的示意图,其中所述处理平台200包含NIC 220,用于独立于主处理系统地把数据传输到一个或多个媒体解码设备。中央处理单元(CPU)214和系统存储器212可以被通过一条前端总线218耦合以形成一个主处理系统,所述主处理系统用于驻留操作系统、应用程序和与外围设备进行通信的设备驱动程序。设备总线216可以把NIC220和诸如音频输出设备224和视频输出设备222的媒体解码设备耦合到主处理系统。设备总线216和前端总线218可以被形成在母板芯片组的核心逻辑中。在一个实施例中,视频输出设备222可以通过一个高级图形端口(AdvancedGraphics Port,AGP)(未显示)被耦合到设备总线216,其中所述AGP耦合到母板芯片组的一个存储器控制器集线器中或是被形成在其中。然而,这仅仅是视频输出设备如何耦合到一条设备总线的一个例子,而且本发明中的实施例并不局限于这些方面。
CPU 212可以包含市场上买得到的几种CPU中的任何一个,诸如由Intel公司出售的Celeron、Pentium、Xeon、或Itanium系列的处理器。然而,这些仅仅是可以用在主处理系统中的CPU的例子,而且本发明中的实施例并不局限于这些方面。系统存储器212可以包含几种类型存储介质中的任何一种,这些存储介质包括诸如动态随机存取存储器(DRAM)、同步DRAM或双速率DRAM。然而,这些仅仅是可以用于形成一个系统存储器的存储介质的例子,而且本发明中的实施例并不局限于这些方面。驻留在主处理系统上的操作系统可以包含来自以下几种市场上买得到的操作系统中的任何一个的操作系统模块,诸如微软公司出售的Windows系列、Sun微系统公司出售的Solaris或在开放源代码团体中可得到的Linux系列。然而,这些仅仅是可以驻留在主处理系统上的操作系统的例子,而且本发明中的实施例并不局限于这些方面。
依据一个实施例,NIC 220可以独立于主处理系统地把数据传输到视频输出设备222或者音频输出设备224。在从通信网络中接收数据包时,NIC 220可以通过设备总线216将接收到的数据包中的媒体数据转发到一个目的地媒体解码设备,而不必在系统存储器212中存储数据包或媒体数据。
依据一个实施例,NIC 220可以包含如下逻辑,所述逻辑用于依据一种数据链路协议接收从一通信网络接收的数据帧中的数据包。例如,NIC 220可以包含一物理层设备和一媒体访问控制器(MAC),用以从一个数据传输介质中接收数据帧。NIC 220还可以包含一卸载引擎,它依据一个网络协议处理所接收的数据包,用以为接收的数据包确定一个目的地。在依据TCP/IP协议而格式化数据包一个实施例中,例如,NIC 220可以包含一TCP/IP卸载引擎(TOE)(未显示),用于执行TCP/IP处理。TOE可以包含如下微控制器或ASIC,所述微控制器或ASIC形成在NIC 220中或与其相耦合。然而,这些仅仅是TOE如何提供在一个NIC中的例子,而且本发明中的实施例并不局限于这些方面。
依据一个实施例,一个被标识为TCP/IP包的接收的数据包可以包含首部信息,它可以被提供给TOE用来进行TCP/IP处理,以便确定例如用于所述数据包的目的地。TOE还可以根据例如源或目的地端口号或包序列号的、在TCP/IP首部中的会话标识符和/或信息,把接收的数据包与在一会话中的特定数据流相关联。数据包然后可以被与一个特定媒体事件或特定介质解码设备相关联,以便接收数据包中的媒体数据。除了将目的地与一个媒体会话相关联之外,NIC 220还可以检测与数据包的有效负载中的媒体数据相关联的一种特定媒体数据类型(例如视频数据或者音频数据)和/或媒体编码格式,用以确定对应于所检测到的媒体数据类型和/或媒体编码格式的特定目的地媒体解码设备。
根据一个实施例,可以根据几种加密格式诸如IP安全(IPSec)或者安全套接字层(SSL)中的任何一种的加密格式,将所接收的数据包中的全部或者部分媒体数据加密。然而,这些仅仅是可以用于加密已分包的媒体数据的加密格式的例子,而且本发明中的实施例并不局限于这些方面。除了执行包级处理(例如TCP/IP处理)之外,NIC 220可以包含在向目的地媒体解码设备转发媒体数据之前解密媒体数据的逻辑。可选地,媒体解码设备可以包含如下解密逻辑,所述解密逻辑用于对由NIC 220转发的媒体数据进行解密。然而,这些仅仅是媒体数据如何被解密的例子,而且本发明中的实施例并不局限于这些方面。
在图3所示的处理平台200的另一个替换实施例中,NIC 220可以包含将所接收数据包中的媒体数据解码并且提供解码后的媒体信号(例如,以NTSC格式解码了的视频信号)以驱动一个输出设备的逻辑。在其它替换方案中,NIC 220可以至少部分地将所接收的数据包中的媒体数据解码,并且部分地把解码后的媒体数据转发到媒体解码设备,用以补充解码成为用以驱动一个输出设备的媒体信号。然而,这些仅仅是NIC如何在转发到目的地之前执行媒体数据解码的例子,并且本发明中的实施例并不局限于这些方面。
依据一个实施例,NIC 220可以利用包含直接存储器访问(DMA)写事务的数据总线事务转发来自所接收数据包中的媒体数据,在直接存储器访问(DMA)写事务中NIC 220充当总线主方。视频输出设备222和音频输出设备224都可以包含如下存储器(例如缓冲存储器),所述存储器可通过在设备总线216上的、寻址到接收者媒体解码设备的总线事务进行寻址。使用本领域公知的普通技术,视频输出设备222和音频输出设备224都可以被配置(例如在总线枚举过程期间)为要求寻址到一个或多个预定地址的总线事务。例如,由主处理系统控制的枚举程序可以设置与在数据总线上的媒体解码设备相关联的基地址寄存器(BAR),以确定媒体解码设备要求哪些总线事务。因此,NIC 220可以通过启动寻址到媒体解码设备的DMA写事务,独立于主处理系统地把来自所接收的数据包的媒体数据转发到一个媒体解码设备(例如,视频输出设备222或者音频输出设备224)。
图4显示了依据如图3所示的处理平台200的一个实施例的处理平台300的示意图,其中所述处理平台包含转换器316,用于从NIC 320向一个或多个媒体解码设备转发数据。CPU 312可以通过一个根组件(root complex)318耦合到系统存储器314以提供一个主处理系统。根组件318和转换器316可以被包含在如下核心逻辑主板芯片组中,所述核心逻辑主板芯片组依据在2002年7月16日制定的PCI Express Base Specification.(PCI投递基本规格)Rev.1.0中描述的外设部件互连(Peripheral Components Interconnect,PCI)投递(Express)I/O体系结构而形成。转换器316可以包含多个端口,其中包含耦合到根组件318的上行端口326以及耦合到NIC 320、视频输出设备322和音频输出设备324的下行端口328。NIC 320、视频输出设备322和音频输出设备324可以被配置为如在PCI Express Base Specification(PCI投递基本规格)第一章中提供的“端点”设备。
依据一个实施例,NIC 320可以在独立于驻留在主处理系统上的过程的情况下,通过转换器316把在接收的数据包中的媒体数据转发到视频输出设备322或者音频输出设备325。在从一个通信系统中接收到一个数据包时,NIC 320可以依据一种网络协议(例如TCP/IP)处理所接收的数据包以确定一个目的地。根据此目的地,NIC 320然后利用例如启动一个寻址到媒体解码设备的DMA写事务,通过转换器316,将来自数据包的媒体数据转发到与一个下行端口328相耦合的媒体解码设备。
应当理解,NIC 320可以使用端点到端点的路由协议来依据PCI Express BaseSpecification(PCI投递基本规格)把媒体数据转发到视频输出设备322或者音频输出设备324。虽然图4显示了耦合到共用转换器316的下行端口328的音频输出设备324、NIC 320和视频输出设备322,但是应当理解可以使用一个以上的转换器来通过一个根节点耦合这些设备。另外,一个或多个NIC 320、视频输出设备322和音频输出设备324可以直接耦合到一个根组件,而其它设备耦合到一个转换器的下行端口。然而,这些仅仅是NIC如何可以独立于主处理系统地向终点设备转发媒体数据的例子,并且本发明中的实施例并不局限于这些方面。
图5显示依据如图3所示的处理平台200的一个实施例说明如下过程400的流程图,过程400响应于媒体事件而启动从NIC到一个或多个媒体解码设备的数据传送。过程400可以在存储介质(例如系统存储器212)中存储的机器可读指令的控制下,由主处理系统加以执行。在块402,在主处理系统上的过程可以检测一个媒体事件的启动。媒体事件的启动可以由一个应用程序通过例如检测“播放”命令或者排列媒体的标题(例如排列歌曲或者视频的剪辑)来进行检测。可选地,通过媒体服务器依据“握手”协议检测如下一个或多个数据包的接收,可以检测一个媒体事件,其中所述一个或多个数据包作为对由主处理系统传输的请求的确认的一部分。然而,这些仅仅是可以检测媒体事件如何启动的例子,而且本发明中的实施例并不局限于这些方面。
媒体事件(在块402处检测到的)可以被表征为“会话”,在所述会话期间,可以从一个媒体服务器中接收数据包并且对其进行处理(例如,用于驱动媒体输出设备)。可以依据几种媒体编码格式或媒体类型(例如,MPEG、AVI、MP3、JPEG、WMA;H.263、RealAudio或RealVideo)中的任何一种,格式化在媒体事件中接收的数据包中的媒体数据。可以在块402检测媒体事件时检测媒体类型。菱形块404确定媒体卸载系统是否能够根据相关联的媒体类型处理数据包中的媒体数据。
菱形块408可以根据与媒体数据相关联的媒体类型,确定用于处理(将在媒体事件期间接收的在数据包中的)媒体数据的媒体解码设备的可用性。例如,菱形块408可以确定耦合到一条数据总线的如下媒体解码设备的可用性,所述媒体解码设备能够根据一种特殊的媒体编码格式来解码媒体数据。菱形块408还可以确定这些媒体解码设备中的任何设备是否能够请求数据总线上的DMA写事务(例如,任何媒体解码设备是否包含足够的可由所述数据总线访问的可寻址存储器)。依据一个实施例,菱形块408可以在数据总线枚举和/或试图将媒体数据转发到一个或多个媒体解码设备期间,根据由主处理系统形成的配置表确定这种媒体解码设备的可用性。然而,这些仅仅是确定用于解码以一种特定格式编码的媒体数据的媒体解码设备的可用性的例子,而且本发明中的实施例并不局限于这些方面。
如果在菱形块404和408确定支持媒体卸载,则块410可以向NIC 220传输会话信息,并且块412可以向一个或多个媒体解码设备传输输出信息。这种会话信息可以使NIC 220能够将一个接收的数据包与一个媒体事件相关联,并且将媒体数据转发到一个媒体解码设备。这种用于使一个输入的数据包与所述媒体事件相关联的会话信息可以包含如下信息,所述信息将与数据包中的诸如TCP/IP首部(例如,源或目的地端口号或包序列号)的信息进行比较。可选地,这种会话信息可以与封装在所述数据包的有效负载部分中的会话标识符进行比较。然而,这些仅仅是在一个接收数据包中的、与媒体事件相关联的信息的例子,而且本发明中的实施例并不局限于这些方面。
在块410传输到NIC 220的会话信息还可以包含例如与每个媒体解码设备相关联的地址信息(例如,DMA总线事务可以寻址到的地址)、解密格式或密钥以及用于使输入的数据包与媒体事件相关联的信息。然而,这些仅仅是可以提供给NIC以执行卸载处理的会话信息的例子,并且本发明的实施例并不局限于这些方面。
所述会话信息可以使NIC 220能够将每个数据包中的媒体数据与一个能够处理媒体数据的目的地媒体解码设备相关联。例如,NIC 220可以在存储器(未显示)中构造一个查找表,用以将所接收的数据包中的信息与每个目的地媒体解码设备的地址信息相关联(其中所接收的数据包中的信息例如是会话标识符和/或诸如源或目的地端口号或包序列号的在TCP/IP首部中的信息)。NIC 220随后可以根据与在数据包中的信息相关联的地址信息,把来自一个接收的数据包中的媒体数据转发到一个目的地媒体解码设备。
在块412传输到媒体解码设备的输出信息可以包含例如用于标识数据编码的信息、压缩或加密格式、或用于处理从NIC 220接收的媒体数据的加密密钥。输出信息还可以包含任何数据格式,媒体解码设备将采用这种数据格式接收从NIC转发的媒体数据。然而,这些仅仅是可以提供给一个处理媒体数据的媒体解码设备的输出信息的例子,并且本发明的实施例并不局限于这些方面。块414通知NIC 220开始向媒体解码设备转发媒体数据。
尽管依据过程400的实施例,块412表示了从主处理系统向媒体解码设备提供输出信息,但是在替换实施例中,NIC 220继块414之后相对于主处理系统来说透明地把输出信息提供给媒体解码设备。在一个实施例中,主处理系统可以把输出信息提供给NIC 220,并且NIC 220随后把输出信息转发给媒体解码设备。可选地,NIC 220可以独立于主处理系统地从一个存储器设备(未显示)向媒体解码设备提供输出信息。
图6显示了依据如图3所示的处理平台的一个实施例说明如下过程500的流程图,过程500用于将NIC 220接收的数据包转发到一个或多个媒体解码设备。在一个实施例中,可以继在图5中说明的过程400之后或是响应于所述过程,执行过程500。过程500还可以由NIC 220中的诸如嵌入式微控制器之类的如下逻辑来执行,所述逻辑用于执行在嵌入式存储设备中所存储的机器可读指令。可选地,过程500可以受到嵌入到NIC 220中或与其相耦合的ASIC或FPGA中的逻辑的控制。然而,这些仅仅是与NIC相结合一起实现以便处理以及独立于主处理系统地向设备转发媒体数据的逻辑的例子,并且本发明中的实施例并不局限于这些方面。
在块502,NIC 220可以从一个通信网络中接收源于例如一个耦合到通信网络的媒体服务器的数据包。菱形块504可以确定在所接收的数据包中的信息(例如,会话标识符和/或在TCP/IP首部中的诸如包序列号或者源或目的地端口号的信息)是否和一个与媒体事件相关联的会话信息(例如在块410处提供给NIC220的会话信息)相匹配。例如,菱形块504可以通过访问一个TCP/IP卸载高速缓存表来关联接收的数据包中的信息,以获得与媒体事件相关联的会话信息。如果在所接收数据包中的信息与媒体事件相关联,则块512可以执行卸载处理,所述卸载处理包含例如依据一种网络通信协议处理包的首部信息以便关联目的地媒体解码设备的地址(例如依据查找表处理TCP/IP首部),以及有效负载内容的任意解密。然而,这仅仅是卸载处理的例子,而且本发明中的实施例并不局限于这些方面。
在块512,NIC 220可以另外把来自所接收数据包中的媒体数据处理为处于如下的格式,所述格式能够被要接收所述数据包的媒体解码设备处理。例如,对于要被转发到一个特定的媒体解码设备的数据包,块512可以从所述数据包中分离出首部信息,并且把有效负载媒体数据与来自其它数据包的媒体数据组合成将要转发的重组数据结构。另外,NIC 220还可以将数据包的有效负载中的全部或者部分媒体数据解码,并且把解码了的媒体数据转发给一个目的地媒体解码设备。媒体解码设备然后可以在解码了的媒体数据上执行某些补充解码或者不执行补充解码,以产生驱动媒体输出设备的信号。对于能够接收在网络协议数据包(例如,TCP/IP数据包)中的媒体数据的另一个特定媒体解码设备而言,块512可以仅仅按原样转发所接收的数据包。然而,这些仅仅是NIC如何根据一个特定目的地设备处理数据包的例子,而且本发明中的实施例并不局限于这些方面。。
在块514,NIC 220可以根据在块510处确定的目的地信息,独立于主处理系统地把来自所接收的数据包的媒体数据(在块510和512被处理)转发到一个目的地媒体解码设备(例如,视频输出设备222或者音频输出设备224)。例如,NIC 220可以启动一个寻址到目的地媒体解码设备的DMA写事务(例如,寻址到由所述目的地媒体解码设备要求的地址的DMA写事务)。块516然后可以向在主处理系统的过程提供一状态更新消息。
虽然已经说明和描述了目前被认为是本发明实施例的例子,但是本领域技术人员将会理解在不背离本发明的真正范围的情况下,可以进行其它各种修改,并且可以用等效物替代。另外,在不背离在此描述的主要发明构思的情况下,可以进行许多修改以使本发明的示范适应于特定情况。因此,本发明不局限于这些公开的特定实施例,而是包含落入附加权利要求范围之内的所有实施例。
权利要求
1.一种系统,包含一主处理系统;一个或多个媒体解码设备;以及一网络接口控制器,所述网络接口控制器包含一网络接口,用于从一数据传输介质中接收数据包;一I/O接口,用于和所述主处理系统以及所述一个或多个媒体解码设备相通信;以及一转发引擎,用于独立于所述主处理系统地向所述一个或多个媒体解码设备转发所接收的数据包中的媒体数据。
2.如权利要求1所述的系统,其特征在于所述系统还包括一具有多个端口的转换器,其中至少一个端口耦合到所述I/O接口,而且至少一个端口耦合到所述一个或多个媒体解码设备。
3.如权利要求1所述的系统,其特征在于所述网络接口控制器还包括一耦合到所述网络接口的物理层设备,用以从一双绞线传输介质中接收所述数据包。
4.如权利要求1所述的系统,其特征在于所述网络接口控制器还包括一耦合到所述网络接口的物理层设备,用以从一光传输介质中接收所述数据包。
5.如权利要求1所述的系统,其特征在于所述网络接口控制器还包括一耦合到所述网络接口的物理层设备,用以从一无线传输介质中接收所述数据包。
6.一种网络接口控制器,包含一网络接口,用于从一数据传输介质中接收数据包;一转发引擎,用于进行如下操作从一主处理系统接收与一媒体事件相关联的会话信息;以及独立于所述主处理系统地向一目的地媒体解码设备转发数据包中的、与所述会话信息相关联的媒体数据。
7.如权利要求6所述的网络接口控制器,其特征在于所述数据转发引擎还包括如下逻辑,所述逻辑根据所述会话信息,将一接收的数据包与多个媒体解码设备当中的所述目的地媒体解码设备相关联。
8.如权利要求7所述的网络接口控制器,其特征在于所述网络接口控制器还包括如下逻辑,所述逻辑启动一直接存储器访问事务用以向所述目的地媒体解码设备转发媒体数据。
9.如权利要求6所述的网络接口控制器,其特征在于所述网络接口控制器包含如下逻辑,所述逻辑解密数据包中的、与所述会话信息相关联的至少一部分媒体数据。
10.如权利要求6所述的网络接口控制器,其特征在于所述数据转发引擎还包括根据所述会话信息使多个数据包与一目的地媒体解码设备相关联的逻辑;把所述多个数据包中的媒体数据部分组合成为一数据结构的逻辑;以及独立于所述主处理系统地把所述数据结构转发到所述目的地媒体解码设备的逻辑。
11.如权利要求6所述的网络接口控制器,其特征在于所述转发引擎还包括如下逻辑,所述逻辑根据所述会话信息的至少一部分与所述接收的数据包中的一部分信息的比较,使所述接收的数据包与所述媒体事件相关联。
12.如权利要求11所述的网络接口控制器,其特征在于所述接收的数据包中的所述部分信息包含一会话标识符。
13.如权利要求11所述的网络接口控制器,其特征在于所述接收的数据包中的所述部分信息包含一TCP/IP首部。
14.一种方法,包含检测一媒体事件;以及把与所述媒体事件相关联的会话信息传输到一网络接口控制器,所述会话信息使在所述网络接口控制器处接收的至少一些数据包与一个或多个目的地媒体解码设备相关联。
15.如权利要求14所述的方法,所述方法还包括使所述媒体事件与一种或多种媒体编码格式相关联;以及检测能够处理以所述一种或多种媒体编码格式编码的媒体数据的一个或多个媒体解码设备的存在。
16.如权利要求14所述的方法,其特征在于所述会话信息包含如下信息,所述信息使接收的数据包中的媒体数据与一目的地媒体解码设备的地址相关联。
17.如权利要求14所述的方法,所述方法还包括向所述目的地媒体解码设备中的至少一个传输输出信息,所述输出信息用于标识与数据包中的、将要转发所述目的地媒体解码设备的媒体数据相关联的一种媒体编码格式。
18.一个物品,包括在上面存储了机器可读的如下指令的存储介质,所述指令用于进行如下操作检测一媒体事件;以及启动与所述媒体事件相关联的会话信息到一网络接口控制器的传输,所述会话信息使在所述网络接口控制器处接收的至少一些数据包与一个或多个目的地媒体解码设备相关联。
19.如权利要求18所述的物品,其特征在于所述存储介质还包括在上面存储的机器可读的如下指令,所述指令用于进行如下操作使所述媒体事件与一种或多种媒体编码格式相关联;以及检测能够处理以所述一种或多种媒体编码格式编码的媒体数据的一个或多个媒体解码设备的存在。
20.如权利要求18所述的物品,其特征在于所述会话信息包含如下信息,所述信息使所述接收的数据包中的媒体数据与一目的地媒体解码设备的地址相关联。
21.如权利要求18所述的物品,其特征在于所述存储介质还包括在上面存储的机器可读的如下指令,所述指令用于进行如下操作启动输出信息到至少一个所述目的地媒体解码设备的传输,所述输出信息用于标识与数据包中的、将要转发到所述目的地媒体解码设备的媒体数据相关联的一种媒体编码格式。
22.一种方法,包含从一主处理系统接收会话信息;从一传输介质中接收数据包;使至少一些所述接收的数据包与所述会话信息相关联;以及独立于所述主处理系统地把所述相关联的数据包的部分转发到一个或多个目的地媒体解码设备。
23.如权利要求22所述的方法,所述方法还包括在将所述相关联数据包的所述部分转发到所述一个或多个目的地媒体解码设备之前,对其进行解密。
24.如权利要求22所述的方法,所述方法还包括至少部分地根据在所述接收的数据包中的TCP/IP信息,使至少一些所述接收的数据包与所述会话信息相关联。
25.如权利要求22所述的方法,其特征在于所述数据转发引擎还包括如下逻辑,所述逻辑根据所述会话信息,将一接收的数据包与多个媒体解码设备当中的所述目的地媒体解码设备相关联。
26.如权利要求22所述的方法,其特征在于转发与一目的地媒体解码设备相关联的一接收数据包的部分还包括启动一直接存储器访问事务以把所述接收的数据包中的媒体数据转发到所述目的地媒体解码设备。
27.如权利要求22所述的方法,所述方法还包括根据所述会话信息,使多个接收的数据包与一目的地媒体解码设备相关联;把所述多个数据包中的媒体数据部分组合成为一数据结构;以及独立于所述主处理系统地把所述数据结构转发到所述目的地媒体解码设备。
28.一种物品,包括在上面存储了机器可读的如下指令的存储介质,所述指令用于进行如下操作从一主处理系统中接收会话信息;使至少一些接收的数据包与所述会话信息相关联;以及独立于所述主处理系统地启动所述相关联数据包的部分到一个或多个目的地媒体解码设备的转发。
29.如权利要求28所述的物品,其特征在于所述存储介质还包括在上面存储的机器可读的如下指令,所述指令进行如下操作解密所述相关联数据包的所述部分。
30.如权利要求28所述的物品,其特征在于所述存储介质还包括在上面存储的机器可读的如下指令,所述指令用于进行如下操作至少部分地根据所述接收的数据包中的TCP/IP信息,使至少一些所述接收的数据包与所述会话信息相关联。
31.如权利要求28所述的物品,其特征在于所述存储介质还包括在上面存储的机器可读的如下指令,所述指令用于进行如下操作根据所述会话信息,使一接收的数据包与多个媒体解码设备当中的一目的地媒体解码设备相关联。
32.如权利要求31所述的物品,其特征在于存储介质还包括在上面存储的机器可读的如下指令,所述指令用于进行如下操作启动一直接存储器访问事务以把所述接收的数据包中的媒体数据转发到所述目的地媒体解码设备。
33.如权利要求28所述的物品,其特征在于所述存储介质还包括在上面存储的机器可读的如下指令,所述指令用于进行如下操作根据所述会话信息,使多个接收的数据包与一目的地媒体解码设备相关联;把所述多个数据包中的媒体数据部分组合成为一数据结构;以及独立于所述主处理系统地把所述数据结构转发到所述目的地媒体解码设备。
全文摘要
描述了一种将数据包从一网络接口控制器(NIC)转发到一个或多个媒体解码设备的系统和方法。所述NIC可以包含一用于传输的I/O接口,用以和一主处理系统或者所述的一个或多个媒体解码设备相通信。在所述NIC处接收的数据包可以被独立于所述主处理系统地转发到所述的一个或多个媒体解码设备。
文档编号H04L29/06GK1503528SQ20031011984
公开日2004年6月9日 申请日期2003年10月14日 优先权日2002年10月14日
发明者D·D·波姆, P·L·康诺尔, M·V·蒙特卡尔沃, S·P·杜巴尔, D D 波姆, 康诺尔, 杜巴尔, 蒙特卡尔沃 申请人:英特尔公司