使用推测技术的处理器到基于消息的网络的接口的制作方法

文档序号:7860274阅读:274来源:国知局
专利名称:使用推测技术的处理器到基于消息的网络的接口的制作方法
技术领域
本发明涉及集成电路设备,并且具体涉及具有用于高速消息传递的消息网络接口单元的这种设备。
背景技术
随着数据密集型电子设备和应用的增加,数据速率持续提高。为了促进诸如可编程逻辑设备在某些数据密集型的实时应用中的使用,包括低级专用处理块和消息传递通信结构的分级专用处理块越来越多地得到使用。诸如知识产权(IP)块的专用处理块是可以与它在其上实施的设备的通用可编程逻辑分隔开来的块电路,其至少部分地被硬线设置为执行具体功能。在设备通信结构方面,作为比其它专用处理块或电路更低分级等级的专用处理块(例如,IP块)可以被称作较低等级的专用处理块(例如,较低等级的IP块)。较低等级的专用处理块使用处理器上运行的软件进行最佳协调,该处理器使用消息网络与这些专用处理块进行通信。例如,处理器可以使用存储器映射协议读取和写入消息,并且消息可以使用基于流分组的协议传送到或传送至较低等级的专用处理块。可以在处理器和消息网络之间使用非常高效的接口以便在数据密集的实时应用中使用。消息传递网络已经被普遍使用。许多现有的消息传递网络允许处理器或处理块(例如,IP核)发送和接收消息以便相互进行通信。例如,片上网络(NoC)设计已经被创建并用于系统中的IP核 和片上系统(SoC)之间的通信。还存在多种现有接口设计,用于在处理器和被处理器用来与专用处理块进行通信的消息传递网络之间使用。作为这样的接口设计的示例,PicaRISC、DPX使用基于FIFO的消息传递机制。作为接口设计的另一个示例,嵌入在可编程设备中的处理器能够通过在总线写周期期间将消息直接写入网络来发送消息。然而,这些接口设计都具有缺陷。具体而言,PicaRISC, DPX由于FIFO要求而趋于不灵活,并且涉及直接向网络写入消息的设计则由于需要对消息连续分组而趋于不灵活。

发明内容
由于现有消息传递网络的不灵活性,所以需要和处理器和消息传递网络之间快速且高效的接口。为了解决领域内的以上和其它缺陷,本公开提供了一种用于在处理器和消息传递网络之间提供快速且高效的接口的方法和系统。该接口减小了从处理器发送消息的延时(即,提高了消息吞吐量)以及作用于从硬件单元所接收的消息上的延时(即,减小了消息响应延时)。该消息接口通过在传送寄存器内的暂存存储器中推测性地创建消息,在一个或多个队列中对所创建消息推测性地进行排队,以及随后作出是否发送任意消息和/或消息队列的决策来减小这些延时。特别地,该接口减少了发送消息所需的处理器时钟周期的数量,这是因为消息能够在处理器将在空闲时的时间段期间、并且恰好在它们将要被发送之前被创建。传送寄存器和暂存存储器可以被用作模板以允许处理器创建样板(boiler-plate)消息并且对它们进行定制。应用编程接口(API)被提供以允许接近于消息创建的处理器时钟周期的最优消耗(即,消息的创建接近于每个处理器周期I个消息字的速率)。一个或多个队列被用来对所创建的消息进行推测性地排队。此外,这里所描述的接口通过令一个或多个单独寻址的队列对传入的消息进行排队而减小了接收消息以及作用于所接收消息上的延时。队列可以与优先级等级相关联。优先级等级可以被用来确定以哪种顺序在不同队列的消息之间对消息进行处理。例如,来自具有最高优先级等级的队列的消息可以在来自具有较低优先级等级的队列的消息之前进行处理。这里所描述的消息网络接口可以允许实施数据密集的实时应用,其要求大体上低的消息响应延时以及大体上高的消息吞吐量。提供了用于耦合至处理器的用于允许处理器向硬件单元发送消息的消息网络接口单元(即,消息接口单元)的方法和系统。在实施例中,消息接口单元包括传送寄存器。包括暂存存储器的传送寄存器存储至少一个消息的参数(argument),该参数由处理器推测性创建。一个或多个队列耦合至传送寄存器。一个或多个队列可以被用来对消息进行排队。可以响应于在消息接口单元接收到指示要采取动作的消息而对一个或多个队列采取动作。可以对一个或多个队列采取的动作包括响应于接收到指示发生异常的消息而丢弃队列之一中的所有内容。可以对一个或多个队列采取的动作包括发送队列之一中所存储的每条消息。在一些实施例中,消息接口单元和处理器位于相同设备上。设备的示例包括可编程逻辑设备、集成电路设备或其它设备。在一些实施例中,消息接口单元被视频定标器所使用。还提供了用于耦合到处理器并且被用于允许处理器从硬件单元接收消息的消息接口单元的方法和系统。在实施例中,消息接口单元包括可以被用来对消息进行排队的一个或多个队列。一个或多个队列中的每一个可以被指定以指示该队列的优先级等级的唯一地址。该唯一地址在硬件单元向处理器或消息接口单元所发送的消息中被用作目的地地址。接收寄存器耦合到一个或多个队列。接收寄存器被用来存储一个或多个消息的参数。在一些实施例中,接收寄存器被用来存储当前具有最高优先级等级的队列中的消息的参数,并且该消息由处理器在例如具有较低优先级等级的队列的其它队列中的消息之前进行处理。在一些实施例中,消息接口单元和处理器位于诸如可编程逻辑设备之类的相同设备上。


通过结合附图考虑以下详细描述,本公开进一步的特征、其性质以及各种优势将是明显的,其中相同的附图标记始终指代相同部分,并且其中:图1是根据说明性实施例的对应于消息以及消息格式的简化信号图;图2A和2B是根据说明性实施例的使用消息接口单元的视频定标器的简化框
图3是根据说明性实施例的用于提供消息接口单元的直接存储器访问解决方案;
图4是根据说明性实施例的用于提供消息接口单元的解决方案的简化框图;图5图示了包括在这里被描述为处于数据处理系统之内的消息接口单元的实施例的集成电路或其它设备(例如,PLD、ASSP、ASIC、全定制芯片、专用芯片、可编程逻辑设备或 FPGA)。
具体实施例方式为了提供对本发明的全面理解,现在将对某些说明性实施例进行描述。然而,本领域普通技术人员将要理解的是,这里所描述的系统和方法可以被适配和修改为适用于所针对的应用,并且这里所描述的系统和方法可以在其它适当应用中采用,并且这样其它的添加和修改将并不背离这里的范围。图1是根据说明性实施例的对应于消息和消息格式的信号的简化示图。如这里所使用的,消息可以类似于软件编程中的函数调用。特别地,消息可以是封装了函数调用的包。例如,消息可以封装并传达执行函数调用void f00(int argument I,..., int argumentN)所必要的信息。在该函数调用中,要执行的任务是&,并且向任务提供输入的参数是argument I至argument N。在包化的消息格式中,函数对应于Task ID所标识的任务,并且参数argument I至argument N均对应于包中的参数数据字。当硬件单元(例如,处理器或专用处理块)接收到该消息时,该消息指示硬件单元使用相关联的输入argument I至argument N(即,使用包中所接收的参数数据字)执行任务fro(即与Task ID相关联的任务)。图1示出了被用来确定能够在其间发送或接收消息的时间段的时钟信号102。图1还示出了包开始(sop)信号104和包结束(eop)信号106。sop指示包以及消息的开始,而eop则指示包以及消息的结束。图1还示出了消息110的一般格式。如110中所示,能够在消息的最高有效位(MSB)中找到包括上下文ID(CID) 112、任务ID(TID) 114、源ID(SID) 116和目的地ID(DID) 118的控制报头。能够在110中的消息的最低有效位(LSB)中找到每个参数数据字120。任务ID 114指示所要执行的任务。源ID 116标识消息的发送方。目的地ID 118标识消息的接收方并且可以`允许消息被路由到例如消息的正确接收方或正确队列。图2A和2B是根据说明性实施例的使用消息接口单元220的视频定标器200的简化框图。视频定标器200包括带时钟视频输入(CVI)单元202、VIB单元204、包开关206、硬件管线208、包写入器210、DDR3存储器块212、帧读取器214、带时钟视频输出(CVO)单元216、包开关218、消息接口单元220、内核创建器222以及处理器224 (也被称作调度器224)。视频定标器200可以被用于视频处理,例如将1080p60视频(每帧包含1080个活动视频行并且每秒60帧)升标(upscaling)为4K视频(即,1080p60视频的4x分辨率)。在一些实施例中,处理器224可以位于定标器200外部。在一些实施例中,处理器224可以是嵌入在可从加利福尼亚San Jose的Altera公司所获得的FPGA中的NIOS CPU0在一些实施例中,处理器可以是任意类型的通用处理器或处理核。视频升标是使用这里所描述的消息接口单元的一个示例性实施例,然而,可以类似地使用这些消息接口单元来实施例如视频处理器、数据存储或通信中的其它功能。可以使用系统200的四个硬件管线208来执行视频升标。每个硬件管线可以包括四个硬件单元(按顺序为裁剪器、线路缓冲器、定标器和另一个裁剪器),并且每个管线可以对传入视频的四分之一进行操作。在处理器224上运行的软件可以通过使用消息接口单元220发送消息来控制每个硬件管线208以对传入的视频进行处理。特别地,处理器224可以指示消息接口单元220向硬件管线208中的一个或多个硬件单元发送消息。在处理器224上运行的软件能够通过改变经由消息接口单元220向硬件管线208中的硬件单元发送的消息类型而针对任意特定类型的传入视频流动态适用任意硬件管线。这种动态适用硬件管线208的方式可以允许管线在没有复杂硬件控制的情况下支持多种配置以及输入和输出视频格式的类型。例如,硬件管线208能够支持一个4K视频流、四个1080p60视频流或者四个720p60视频流的输出。在操作中,可以向CVI单元202输入1080p60视频,每次输入帧的一行,该CVI单元202可以对该 信息进行处理并且将其发送至VIB单元204。VIB单元204可以对该信息进行包化,并且将其输出至包开关218,其可以将该信息输出至消息接口单元220和内核创建器222。消息接口单元220可以通过向处理器224发送一个或多个消息来通知处理器224传入的视频帧的行。处理器224也可以被通知以传入的视频帧的行。处理器224可以接收对应于传入的行以及视频帧的消息并且可以对这些消息中的每一个进行处理。特别地,对于1080p60视频而言,每秒钟60个传入巾贞中的每一个实际上使得处理器224接收指示帧的宽度和高度的一个消息。到来的1080个活动行中的每个输入的活动视频行实际上可以使得处理器224接收两个消息:一个消息指示行的开始,另一个消息指示行的结束。每个输入的活动视频行实际上还可以使得处理器224经由包开关218从内核创建器222接收两个附加消息,其包含内核创建器为了对输入的活动视频行进行升标以便生成两个输出视频行而计算的所需系数。在前的每个消息可以被处理器224经由与处理器进行通信的消息接口单元220进行接收。使用消息接口单元220,处理器224还可以基于所要升标的传入视频的帧和行来发送消息。每个输入帧可以使得处理器224发送六个消息:两个消息针对内核创建器222,而四个消息针对硬件管线208中的每个行缓冲器。此外,每个输入的活动视频行可以使得处理器224例如经由包开关218向四个硬件管线208的每一个中的各个组件发送52个消息。消息接口单元220可以代表处理器224来发送这些消息中的每一个。VIB单元204可以经由包开关218接收消息接口单元220和/或内核创建器222所发送的消息。VIB单元204可以复制这些消息中的视频数据并且将消息转发至包开关206,其可以将该消息转发至硬件管线208的各种组件。对传入视频的活动行和帧进行操作的每个硬件管线208包含可以对其所接收的每个活动视频行的一部分进行裁剪的裁剪器,用于缓冲多个传入的经裁剪的活动视频行的行缓冲器,对来自缓冲器的经缓冲和裁剪的活动视频行进行定标的定标器,以及用于对经定标、缓冲和裁剪的视频进行裁剪的裁剪器。如以上所讨论的,硬件管线208中的这些硬件单元中的每一个可以使用处理器224和/或消息接口单元220所发送/转发的控制消息进行控制。在被硬件管线208处理之后,所产生的视频可以被发送至包写入器210以便被写入DDR3存储器块212。对DDR3存储器块212的使用是示例性的,并且并不旨在限制本发明的范围。可以替代或者与DDR3存储器块212相结合地使用其它类型的存储器,例如任意类型的随机访问存储器、只读存储器或闪存。所产生的视频可以在随后某时被帧读取器214从DDR3存储器块212读出,该帧读取器214均可以将其所读取的视频转发至一个CVO单元216以便从定标器200输出。帧读取器214均可以使用由处理器224和/或消息接口单元220所发送/转发的控制消息单独进行控制。为了将1080p60视频升标为4K视频,处理器每秒可以接收总共(60x1)+ (1080x60x4) = 259260 个消息,并且每秒可以发送总共(60x6) + (1080x60x52)=3369960个消息。因此,在该示例性实施例中,每秒钟可以将接收或发送总共259260+3369960 = 360万个消息。因此,在该实施例中,升标可以要求每秒钟360万个消息的吞吐量。消息响应延时可以被定义为处理器接收到消息直至处理器已经完成采取适当动作之间所流逝的时间,该适当动作例如包括发送出(多个)适当消息作为响应。将1080p60视频升标为4K视频会要求低的消息响应延时。对于例如将1080p60视频升标为4K视频的实时应用而言,消息响应延时可以是任务完成中的整体延时中的实质性因素。因此,对视频进行升标不仅要求每秒将要发送或将要接收360万个消息的合并吞吐量,而且还要求实质上低的消息响应延时。图3是根据说明性实施例的用于提供消息接口单元的基于直接存储器访问的解决方案。在图3中,共享存储器310、直接存储器访问(DMA)控制器312和映射至消息格式桥的存储器314(共同作为消息接口单元350)均经由数据总线320耦合至处理器300并且互相耦合。DMA控制器312可以被处理器300用来发送和接收消息。处理器300可以创建消息并且将这些消息存储在共享存储器310中。例如,图3示出了有处理器300所创建并且存储在共享存储器310中的七个消息。处理器300可以创建DAM传输描述,其指代共享存储器310中处理器300所希望传送的消息。处理器300随后可以指示DMA控制器312通过使用映射至消息格式桥的存储器314向一个或多个硬件单元传输消息来发送这些消息。映射到消息格式桥的存储器314可以对消息进行包化并且将消息传输至(多个)适当硬件单元。虽然图3中所示出的消息接口单元350解决方案是全功能的消息接口单元解决方案,但是其可能无法满足某些数据密集的实时应用的实质性高吞吐量的要求。特别 地,在图3所示的解决方案中,处理器300可能需要管理针对共享存储器310的访问以避免对正在发送/传输的消息进行重写,避免导致处理器的低效使用。此夕卜,该解决方案可以要求处理器300针对每次存储器传输为DMA控制器312创建DMA传输描述,这导致处理器的低效使用。此外,使用图3所示的解决方案多次或者利用针对消息的最小改变发送相同的消息对于处理器300可能是低效的,这是因为该解决方案要求处理器与DMA控制器312同步。对于处理器的这些低效率在使用图3所示的解决方案时会降低消息吞吐量。当消息被处理器所接收时,图3的消息接口单元350对于一些数据密集的实时应用的适当操作也会具有过高的消息响应延时。特别地,在该解决方案中,要求处理器300指示DMA控制器312将任意传入的消息复制到共享存储器310,这导致处理器300的时钟周期的低效使用。此外,在该解决方案中,DMA控制器312在控制器已经完成将任意传入的消息复制到共享存储器310时中断处理器300。随后要求处理器300读取消息并且采取适当动作。处理器对传入的消息采取适当动作所需的额外步骤由于处理器300浪费的时钟周期额导致了附加的低效率。因此,使用图3所示的解决方案的消息接口单元350接收消息导致了处理器的低效率,这会增加消息响应延时而超出某些数据密集的实时应用的要求。
图4是根据说明性实施例的用于提供消息接口单元450的解决方案的简化框图。图4示出了经由数据总线402耦合到消息接口单元450的处理器400。在一些实施例中,处理器400可以是任意类型的通用处理器。在一些实施例中,处理器400是诸如可编程逻辑设备(例如,FPGA)之类的可编程集成电路设备的嵌入式处理器。例如,处理器400可以是嵌入在可从加利福尼亚San Jose的Altera公司所获得的FPGA中的NI〇S CPU0在一些实施例中,处理器可以是任意类型的通用处理器或处理核。处理器可以位于与消息接口单元450相同的设备上或者位于独立于消息接口单元450或者其外围的设备上。消息接口单元450可以允许处理器400发送和接收消息。消息接口单元450可以允许处理器400以充分高的吞吐量以及充分低的响应延时来发送和接收消息以支持例如以上所描述的例如将1080p60视频升标至4K视频的数据密集的实时应用。在一些实施例中,消息接口单元450可以包括在与处理器400相同的设备上。在一些实施例中,消息接口单元450是独立于处理器400的设备(即,外设)。在一些实施例中,消息接口单元450是能够附接至处理器的存储器映射的外设。消息接口单元450可以与图2B的消息接口单元220相类似,并且可以随图2A和2B的视频定标器200使用。消息接口单元450可以包括传送寄存器460,其包括若干保留的寄存器(未示出)、可用空间寄存器404、发送队列寄存器406、释放队列寄存器408、报头寄存器410和参数寄存器412。参数寄存器412也可以被称作暂存存储器。处理器400可以通过与消息接口单元450进行通信而从传送寄存器460进行读取或者对其进行写入。在一些实施例中,传送寄存器460可以耦合到一个或多个队列480,该队列480均可以被用来对消息(例如,处理器所创建的消息)进行排队和发送。在一些实施例中,传送寄存器460可以被用来发送消息而并不首先对消息进行排队。在一个实施例中,传送寄存器460的地址以及关于在处理器400对这些寄存器中的每一个进行写入或从中读取时发生什么的描述在表I中示出。
权利要求
1.一种耦合到处理器的消息网络接口单元,用于允许所述处理器向硬件单元发送由所述处理器创建的多个消息,所述消息网络接口单元包括: 传送寄存器,其可操作用于存储由所述处理器创建的所述多个消息中的至少一个消息的参数,其中所述至少一个消息是推测性创建的;以及 耦合到所述传输寄存器的队列,其可操作用于对所述多个消息进行排队,其中响应于所述消息网络接口单元接收到触发消息,对所述队列采取动作。
2.根据权利要求1的消息网络接口单元,其中所述动作是丢弃所述队列的内容,并且其中所述触发消息指示发生异常。
3.根据权利要求1的消息网络接口单元,其中所述动作是发送所述队列中的所述多个消息。
4.根据权利要求1的消息网络接口单元,其中所述传送寄存器被用来在确定是否将发送所述多个消息中的任意消息之前,创建所述多个消息中的每个消息。
5.根据权利要求 1的消息网络接口单元,其中所述传送寄存器包括暂存存储器以存储所述至少一个消息的参数。
6.根据权利要求1的消息网络接口单元,其中所述消息网络接口单元和所述处理器位于相同设备上。
7.根据权利要求6的消息网络接口单元,其中所述设备是可编程逻辑设备。
8.一种视频定标器,其使用根据权利要求1的所述消息网络接口单元将视频从一种格式定标至另一种格式。
9.一种用于允许耦合至消息网络接口单元的处理器向硬件单元发送多个消息的方法,所述方法包括: 使用所述处理器推测性地创建所述多个消息,其中所述创建包括在传送寄存器中存储所述多个消息中的至少一个消息的参数; 在耦合至所述传送寄存器的队列中对所述多个消息进行排队; 在所述消息网络接口单元接收指示将要采取动作的消息;以及 响应于接收到所述指示将要采取动作的消息,对所述队列采取动作。
10.根据权利要求9的方法,其中所述采取动作包括丢弃所述队列的内容,并且其中所述指示将要采取动作的消息指示发生了异常。
11.根据权利要求9的方法,其中所述采取动作包括发送所述队列中的所述多个消息。
12.根据权利要求9的方法,其中所述推测性创建在确定是否将发送所述多个消息中的消息之前使用所述传送寄存器。
13.根据权利要求9的方法,其中存储所述多个消息中的所述至少一个消息的所述参数包括在暂存存储器中存储所述多个消息中的所述至少一个消息的所述参数。
14.根据权利要求9的方法,其中所述消息网络接口单元和所述处理器位于相同设备上。
15.根据权利要求14的方法,其中所述设备是可编程逻辑设备。
16.一种耦合到处理器的消息网络接口单元,用于允许所述处理器从硬件单元接收多个消息,所述消息网络接口单元包括: 多个队列,其可操作用于对所述多个消息进行排队,其中所述多个队列中的至少一个队列被分配以指示相关联的优先级等级的地址;以及 耦合至所述多个队列的接收寄存器,所述接收寄存器可操作用于存储所述多个消息中的至少一个消息的参数。
17.根据权利要求16的消息网络接口单元,其中所述接收寄存器可操作用于存储所述多个消息中来自所述多个队列中具有与指示当前最高优先级等级的地址相关联的队列的所述至少一个消息的所述参数。
18.根据权利要求17的消息网络接口单元,其中在对所述多个队列中的另一个队列中的其它消息进行处理之前,所述处理器对所述多个队列中与指示所述当前最高优先级等级的所述地址相关联的所述队列中的消息进行处理。
19.根据权利要求16的消息网络接口单元,其中所述地址是唯一的,并且其中所述地址被用作针对从所述硬件单元接收的所述多个消息的目的地地址。
20.根据权利要求16的消息网络接口单元,其中所述消息网络接口单元和所述处理器位于可编程逻辑设备上。
全文摘要
本发明涉及使用推测技术的处理器到基于消息的网络的接口。其提供了用于耦合至处理器的、被用于允许处理器向硬件单元发送消息的消息网络接口单元(消息接口单元)的方法和系统。还提供了用于耦合到处理器的、被用于允许处理器从硬件单元接收消息的消息接口单元的方法和系统。这里所描述的消息网络接口单元可以允许实施数据密集的实时应用,其需要大体上低的消息响应延时以及大体上高的消息吞吐量。
文档编号H04L12/861GK103227755SQ20121033767
公开日2013年7月31日 申请日期2012年9月6日 优先权日2011年9月7日
发明者S·佩里, G·杜肯 申请人:阿尔特拉公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1