CN103227755A - 使用推测技术的处理器到基于消息的网络的接口 - Google Patents
使用推测技术的处理器到基于消息的网络的接口 Download PDFInfo
- Publication number
- CN103227755A CN103227755A CN2012103376760A CN201210337676A CN103227755A CN 103227755 A CN103227755 A CN 103227755A CN 2012103376760 A CN2012103376760 A CN 2012103376760A CN 201210337676 A CN201210337676 A CN 201210337676A CN 103227755 A CN103227755 A CN 103227755A
- Authority
- CN
- China
- Prior art keywords
- message
- processor
- interface unit
- network interface
- formation
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/38—Universal adapter
- G06F2213/3808—Network interface controller
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multi Processors (AREA)
- Information Transfer Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及使用推测技术的处理器到基于消息的网络的接口。其提供了用于耦合至处理器的、被用于允许处理器向硬件单元发送消息的消息网络接口单元(消息接口单元)的方法和系统。还提供了用于耦合到处理器的、被用于允许处理器从硬件单元接收消息的消息接口单元的方法和系统。这里所描述的消息网络接口单元可以允许实施数据密集的实时应用,其需要大体上低的消息响应延时以及大体上高的消息吞吐量。
Description
相关申请的交叉引用
本申请要求于2011年9月7日提交的共同未决的、共同受让人的第61/531950号美国临时专利申请的权益和优先权,其全文因此通过引用结合于此。
技术领域
本发明涉及集成电路设备,并且具体涉及具有用于高速消息传递的消息网络接口单元的这种设备。
背景技术
随着数据密集型电子设备和应用的增加,数据速率持续提高。为了促进诸如可编程逻辑设备在某些数据密集型的实时应用中的使用,包括低级专用处理块和消息传递通信结构的分级专用处理块越来越多地得到使用。诸如知识产权(IP)块的专用处理块是可以与它在其上实施的设备的通用可编程逻辑分隔开来的块电路,其至少部分地被硬线设置为执行具体功能。在设备通信结构方面,作为比其它专用处理块或电路更低分级等级的专用处理块(例如,IP块)可以被称作较低等级的专用处理块(例如,较低等级的IP块)。较低等级的专用处理块使用处理器上运行的软件进行最佳协调,该处理器使用消息网络与这些专用处理块进行通信。例如,处理器可以使用存储器映射协议读取和写入消息,并且消息可以使用基于流分组的协议传送到或传送至较低等级的专用处理块。可以在处理器和消息网络之间使用非常高效的接口以便在数据密集的实时应用中使用。
消息传递网络已经被普遍使用。许多现有的消息传递网络允许处理器或处理块(例如,IP核)发送和接收消息以便相互进行通信。例如,片上网络(NoC)设计已经被创建并用于系统中的IP核和片上系统(SoC)之间的通信。还存在多种现有接口设计,用于在处理器和被处理器用来与专用处理块进行通信的消息传递网络之间使用。作为这样的接口设计的示例,PicaRISC、DPX使用基于FIFO的消息传递机制。作为接口设计的另一个示例,嵌入在可编程设备中的处理器能够通过在总线写周期期间将消息直接写入网络来发送消息。然而,这些接口设计都具有缺陷。具体而言,PicaRISC、DPX由于FIFO要求而趋于不灵活,并且涉及直接向网络写入消息的设计则由于需要对消息连续分组而趋于不灵活。
发明内容
由于现有消息传递网络的不灵活性,所以需要和处理器和消息传递网络之间快速且高效的接口。
为了解决领域内的以上和其它缺陷,本公开提供了一种用于在处理器和消息传递网络之间提供快速且高效的接口的方法和系统。该接口减小了从处理器发送消息的延时(即,提高了消息吞吐量)以及作用于从硬件单元所接收的消息上的延时(即,减小了消息响应延时)。
该消息接口通过在传送寄存器内的暂存存储器中推测性地创建消息,在一个或多个队列中对所创建消息推测性地进行排队,以及随后作出是否发送任意消息和/或消息队列的决策来减小这些延时。
特别地,该接口减少了发送消息所需的处理器时钟周期的数量,这是因为消息能够在处理器将在空闲时的时间段期间、并且恰好在它们将要被发送之前被创建。传送寄存器和暂存存储器可以被用作模板以允许处理器创建样板(boiler-plate)消息并且对它们进行定制。应用编程接口(API)被提供以允许接近于消息创建的处理器时钟周期的最优消耗(即,消息的创建接近于每个处理器周期1个消息字的速率)。一个或多个队列被用来对所创建的消息进行推测性地排队。
此外,这里所描述的接口通过令一个或多个单独寻址的队列对传入的消息进行排队而减小了接收消息以及作用于所接收消息上的延时。队列可以与优先级等级相关联。优先级等级可以被用来确定以哪种顺序在不同队列的消息之间对消息进行处理。例如,来自具有最高优先级等级的队列的消息可以在来自具有较低优先级等级的队列的消息之前进行处理。这里所描述的消息网络接口可以允许实施数据密集的实时应用,其要求大体上低的消息响应延时以及大体上高的消息吞吐量。
提供了用于耦合至处理器的用于允许处理器向硬件单元发送消息的消息网络接口单元(即,消息接口单元)的方法和系统。在实施例中,消息接口单元包括传送寄存器。包括暂存存储器的传送寄存器存储至少一个消息的参数(argument),该参数由处理器推测性创建。一个或多个队列耦合至传送寄存器。一个或多个队列可以被用来对消息进行排队。可以响应于在消息接口单元接收到指示要采取动作的消息而对一个或多个队列采取动作。可以对一个或多个队列采取的动作包括响应于接收到指示发生异常的消息而丢弃队列之一中的所有内容。可以对一个或多个队列采取的动作包括发送队列之一中所存储的每条消息。在一些实施例中,消息接口单元和处理器位于相同设备上。设备的示例包括可编程逻辑设备、集成电路设备或其它设备。在一些实施例中,消息接口单元被视频定标器所使用。
还提供了用于耦合到处理器并且被用于允许处理器从硬件单元接收消息的消息接口单元的方法和系统。在实施例中,消息接口单元包括可以被用来对消息进行排队的一个或多个队列。一个或多个队列中的每一个可以被指定以指示该队列的优先级等级的唯一地址。该唯一地址在硬件单元向处理器或消息接口单元所发送的消息中被用作目的地地址。接收寄存器耦合到一个或多个队列。接收寄存器被用来存储一个或多个消息的参数。在一些实施例中,接收寄存器被用来存储当前具有最高优先级等级的队列中的消息的参数,并且该消息由处理器在例如具有较低优先级等级的队列的其它队列中的消息之前进行处理。在一些实施例中,消息接口单元和处理器位于诸如可编程逻辑设备之类的相同设备上。
附图说明
通过结合附图考虑以下详细描述,本公开进一步的特征、其性质以及各种优势将是明显的,其中相同的附图标记始终指代相同部分,并且其中:
图1是根据说明性实施例的对应于消息以及消息格式的简化信号图;
图2A和2B是根据说明性实施例的使用消息接口单元的视频定标器的简化框图;
图3是根据说明性实施例的用于提供消息接口单元的直接存储器访问解决方案;
图4是根据说明性实施例的用于提供消息接口单元的解决方案的简化框图;
图5图示了包括在这里被描述为处于数据处理系统之内的消息接口单元的实施例的集成电路或其它设备(例如,PLD、ASSP、ASIC、全定制芯片、专用芯片、可编程逻辑设备或FPGA)。
具体实施方式
为了提供对本发明的全面理解,现在将对某些说明性实施例进行描述。然而,本领域普通技术人员将要理解的是,这里所描述的系统和方法可以被适配和修改为适用于所针对的应用,并且这里所描述的系统和方法可以在其它适当应用中采用,并且这样其它的添加和修改将并不背离这里的范围。
图1是根据说明性实施例的对应于消息和消息格式的信号的简化示图。如这里所使用的,消息可以类似于软件编程中的函数调用。特别地,消息可以是封装了函数调用的包。例如,消息可以封装并传达执行函数调用void fOO(int argument 1,...,int argument N)所必要的信息。在该函数调用中,要执行的任务是fOO,并且向任务提供输入的参数是argument 1至argument N。在包化的消息格式中,函数fOO对应于Task ID所标识的任务,并且参数argument 1至argument N均对应于包中的参数数据字。当硬件单元(例如,处理器或专用处理块)接收到该消息时,该消息指示硬件单元使用相关联的输入argument 1至argument N(即,使用包中所接收的参数数据字)执行任务fOO(即与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中的CPU。在一些实施例中,处理器可以是任意类型的通用处理器或处理核。视频升标是使用这里所描述的消息接口单元的一个示例性实施例,然而,可以类似地使用这些消息接口单元来实施例如视频处理器、数据存储或通信中的其它功能。
可以使用系统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中的CPU。在一些实施例中,处理器可以是任意类型的通用处理器或处理核。处理器可以位于与消息接口单元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对这些寄存器中的每一个进行写入或从中读取时发生什么的描述在表1中示出。
表1
处理器400可以实现充分高的吞吐量以便使用消息接口单元450发送用于数据密集的实时应用的消息。特别地,参数寄存器412(即,暂存存储器)可以被处理器400访问以推测性低创建随后可能发送的消息。处理器400可以通过使用暂存存储器而能够以高速率创建和发送消息。消息接口单元450可以控制针对暂存存储器的任意访问并且在处理器400尝试对当前正在发送的参数寄存器(例如,作为之前消息的一部分)进行写入时使其停止。否则,消息接口单元450可以允许处理器在准备发送消息的每个时钟周期期间对参数寄存器进行写入。处理器可以高效地发送相同或相似的消息,原因在于仅对应于有所变化的参数数值的参数寄存器在消息被发送之前需要进行写入。一旦处理器400对报头寄存器410进行写入,包括暂存存储器中的参数的消息可以在队列480中被发送或排队。以这种方式,处理器400连同消息接口单元450一起可以推测性地创建要在消息接口单元450和/或处理器400接收特定消息的情况下进行发送的消息并对其进行排队。将在以下更为详细地对推测性消息创建和排队进行讨论。
以下示出了能够由诸如处理器400的处理器用来发送消息或者丢弃队列的任意内容的软件代码示例。在该示例代码中,所使用的宏在结合于此的附录A中有所描述。
处理器400可以使用消息接口单元450中的参数寄存器412(即,暂存存储器)来推测性地创建消息。处理器400可以对报头寄存器410进行写入以(向设备或者向队列480之一)发送处理器所创建的消息。处理器400可以使用最小数量的时钟周期来发送消息。特别地,用来发送消息的时钟周期的数目可以等于N次写入(用于对N个参数寄存器412进行写入,其中N是参数的数目)+1次写入(用于对报头寄存器410进行写入)。此外,可以在不中断处理器400的情况下发送消息(即,在没有处理器400介入的情况下由消息接口单元450自动发送)。在一些实施例中,参数寄存器412可以保留其数值,从而能够仅利用对报头寄存器410的一次写入来发送后续相同的消息。处理器400可以对报头寄存器410执行重复写入以重复发送同样的消息。
当发送消息时,存储在参数寄存器412中的参数可以被读取并且随后被发送/转发以允许处理器400针对已经被发送/转发的参数对参数寄存器412进行更新(写入)。为了快速创建新的消息,处理器400可以在紧跟该寄存器中的参数在其问已经被发送/转发的时钟周期的时钟周期期间对参数寄存器412中的任意一个进行写入。因此,在对报头寄存器410进行写入之后的时钟周期开始时,消息接口单元450可以允许处理器400(在之前所存储的参数arg0参数已经被发送/转发之后)对arg0参数寄存器进行写入。在后续的时钟周期期间,消息接口单元450可以允许处理器400对arg1参数寄存器进行写入,在随后的时钟周期中对arg2参数寄存器进行写入,等等。
被用来从传送寄存器460向队列480或其它设备发送/转发消息的传输数据总线可以是多个一个参数宽度的多倍。这可以允许在数据总线上一次发送多个参数,并且还可以允许创建消息并且将其发送/转发到系统或队列中而并不停止处理器400。这可以带来改进处理器400的效率。
如以上所讨论的,消息可以被置于队列480中的一个中而不是被发送到系统中或者直接发送到硬件单元。队列480中的任何一个队列的所有消息都可以通过处理器400对释放队列寄存器408的单个写入而被丢弃。队列480中的任意一个队列的所有消息都可以通过处理器400对发送队列寄存器406的单个写入而被发送。特别地,处理器400可以推测性地创建消息并将其排队到队列480之一中。这样的推测性消息创建和排队可以由处理器以对可能发生预期事件(例如,具有要被升标的新视频行的传入消息将在未来到达的预期)的预测来执行。消息可以在处理器在其间空闲的时钟周期被预测性地被创建(如以上所描述的)并排队(例如,要由处理器响应于接收到新视频行而发送的消息可以使用传送寄存器460推测性地创建并且使用队列480进行排队)。这种类型的推测性消息创建和排队可以允许消息接口单元450实现高的消息吞吐量,原因在于可以响应于所预期消息的到达而对若干消息进行推测性排队并且快速发送。此外,这种类型的推测性消息创建和排队通过避免使用附加周期来响应于预期消息到达来创建消息而可以允许消息接口单元450实现低的消息响应延时。为了进一步减小延时,消息接口单元450可以被配置为在被特定消息(也被称作触发消息)所触发时自动发送或丢弃队列480中一个队列中的任意或所有消息,由此释放来自处理器400的附加时钟周期以潜在地执行其它任务。
如以上所描述的,一个或多个队列480可以被用来对消息进行推测性地排队。代表处理器400或独立工作的消息接口单元450可以响应于特定消息被消息接口单元450或处理器400所接收而采取动作。消息接口单元450所采取的动作允许其响应于特定消息被消息接口单元450或处理器400所接收而发送或丢弃队列中的一个队列的任意消息或者包含在一个或多个队列480内的所有消息。例如,处理器400和/或消息接口单元450可以在其接收到指示预期发生的消息时丢弃队列480中的一个队列中的所有消息。消息接口单元450可以包括可配置触发器(未示出),其允许包含在队列480中的任意队列内的任意或所有消息在接收到消息(即,触发消息)时被自动发送或丢弃。这些触发器可以有效地允许消息接口单元450在没有处理器400介入的情况下就消息(触发消息)的接收采取动作,由此减轻处理器400上的负担。在一些实施例中,可配置触发器可以在消息接口单元450内的硬件单元中进行硬线设置或编程。在一些实施例中,可配置触发器在软件操作上可以基于消息接口单元450。
消息接口单元450可以包括接收寄存器470,该接收寄存器470包括若干保留寄存器(未示出)、选择队列寄存器420、填充水平寄存器422、获得消息寄存器424、报头寄存器426和参数寄存器428。处理器400可以经由消息接口单元450从传送寄存器470进行读取或者对其进行写入。在一个实施例中,接收寄存器470的地址以及关于在处理器400对这些寄存器中的每一个进行写入或读取时发生什么的描述在表2中示出。
表2
以下示出了可以由诸如处理器400的处理器用来接收消息的软件代码的示例。在该示例代码中,所使用的宏在结合于此的附录B中有所描述。
当处理器400对得到消息寄存器424执行写操作时,消息可以从一个或多个队列490被加载到参数寄存器428。处理器400可以使用最小数量的时钟周期来加载/接收消息。特别地,用来加载/接收消息的时钟周期的数目可以等于1次写入(用于对得到消息寄存器424进行写入)+1次读取(用于从报头寄存器426进行读取)+N次读取(用于从N个参数寄存器428进行读取,其中N为参数数量)。此外,在一些实施例中,可以在不中断处理器400的情况下加载/接收消息(即,由消息接口单元450自动加载/接收)。
在加载/接收消息时,参数寄存器428可以被写入并随后被读取以允许处理器400从参数寄存器428读取已经被写入(例如,经由队列490中的一个)并且最近变为可用的参数。为了快速加载新的参数,处理器400可以在紧跟该寄存器中的参数在其间例如经由队列490之一而被写入的时钟周期的时钟周期期间,从任意一个参数寄存器428进行读取。因此,在对得到消息寄存器424进行写入之后的时钟周期开始时,消息接口单元450可以允许处理器400读取arg0参数寄存器(在参数arg0例如已经经由队列490中的一个队列被写入之后的一个时钟周期)。在后续的时钟周期期间,消息接口单元450可以允许处理器400从arg1参数寄存器进行读取,在随后的时钟周期从arg2参数寄存器进行读取,等等。
被用来从队列490向接收寄存器470加载/接收消息的接收数据总线可以是一个参数宽度的多倍。这可以允许在数据总线上一次加载/接收多个参数,并且还可以允许消息在不停止处理器400的情况下被加载/接收以及读取。这可以带来改进处理器400的效率。
发送至处理器400或消息接口单元450的消息可以被置于队列490之一中。一个或多个队列490中的每一个可以具有不同的唯一目的地地址以允许每个硬件单元能够向适当队列发送其消息。由于处理器400能够从队列490中的队列中的任意一个接收消息,所以这种专用队列的使用允许特定消息“抢先”并且早于其它消息得到处理。此外,这种专用队列的使用允许系统根据不同优先级对消息进行排队。这可以通过为每个队列490指定不同的优先级等级来完成。在这样的方案中,对每个队列所分配的地址可以指示特定优先级等级和/或与之相关联。
图5图示了数据处理系统500,其使用集成电路(IC)560或另一设备(例如,ASSP、ASIC、全定制芯片、专用芯片、可编程逻辑设备或FPGA)。系统500包括这里所描述的消息接口单元的实施例。在实施例中,IC 560实质上可以类似于图2A和2B的系统200。数据处理器500可以包括以下的一个或多个组件:处理器570、存储器580、I/O电路550和外围设备540。这些组件通过系统总线或其它互连530耦合在一起并且组装在终端用户系统510中所包含的电路板520上。
系统500可以在广泛应用中得以使用,诸如计算机网络、数据网络、仪器、视频处理、数字信号处理,或者需要使用可编程或可重复编程逻辑的优势的任意其它应用。IC 560可以被用来执行各种不同的逻辑功能。例如,IC 560可以被配置为与处理器570协同工作的处理器或控制器。IC 560还可以被用作用于对针对系统500中的共享资源进行仲裁的仲裁器。在又另一个示例中,IC 560可以被配置为处理器570和系统500中的其它组件之一或者系统500之外的另一个设备或硬件单元之间的接口。应当注意的是,系统500仅是示例性的,并且本发明的实际范围和精神应当由以下权利要求所指示。
将要理解的是,上文仅是本发明原理的说明,并且本领域技术人员能够进行各种修改而并不背离本发明的范围和精神。例如,图2B的消息接口单元220可以类似于图4的消息接口单元450。此外,消息接口单元220可以与消息接口单元450互换使用。本领域技术人员将会意识到的是,本发明可以通过所描述之外的实施例来实践,所描述实施例仅是出于说明而非限制的目的所给出,并且本发明仅由以下权利要求来限定。
附录A-传送API
TX_SELECT_QUEUE(queue_id)
●选择TX_QUEUE_SPACE命令返回其可用空间的队列
●如果仅使用一个队列,则这仅需要在启动时完成一次
●对MIU的单个写入
words_available=TX_QUEUE_SPACE();
●得到TX_SELECT_QUEUE所选择队列中的可用空间(按字)
●从MIU的单个读取
TX_ARG(n,value);
●设置当前消息的第n个参数
●对MIU的单个写入
TX_SEND_MSG(queue_id,dst_addr,eid,no_of_arguments);
●设置当前消息的eid和dst_addr字段
●使得MIU将当前消息写入指定队列
●对MIU的单个写入
●队列0可以被配置为直接发送
○这将消息直接发送到系统中,而无需随后发送
TX_SEND_QUEUE消息
TX_SEND_MSG1(queue_id,dst_addr,eid,arg0)
●发送单个参数消息的简洁方式
○对MIU的2次写入,1次针对arg0而1次针对报头
●TX_SEND_MSG2至TX_SEND_MSG8能够被用来发送多参数消息
○对MIU的相应的3至9次写入
TX_SEND_QUEUE(queue_id);
●将队列中的所有消息案它们在队列中的顺序发送出至系统中
●对MIU的单个写入
TX_QUEUE_FREE(queue_id);
●删除队列中的所有消息
●对MIU的单个写入
附录B-接收API
RX_SELECT_QUEUE(queue_id)
●选择RX_QUEUE_FILL_LEVEL命令返回其填充水平的队列
●如果仅使用一个队列,则这仅需要在启动时完成一次
●对MIU的单个写入
no_of_messages=RX_QUEUE_FILL_LEVEL();
●得到RX_SELECT_QUEUE所选择的队列中的消息数目
●对MIU的单个读取
header=RX_HEADER
●得到当前消息的消息报头
●检查比特24以查看消息是否有效(0表示还没有消息可用)
arg0=RX_ARG0;
●得到当前消息的第一个参数
●从MIU的单个读取
●RX_ARG(0至N)能够被用来得到第1至第N+1个参数
RX_RECV_MSG(queue_id);
●使得MIU利用来自队列的下一个消息对当前消息进行更新
●对MIU的单个读取
Claims (20)
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的消息网络接口单元,其中所述消息网络接口单元和所述处理器位于可编程逻辑设备上。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161531950P | 2011-09-07 | 2011-09-07 | |
US61/531,950 | 2011-09-07 | ||
US13/369,727 | 2012-02-09 | ||
US13/369,727 US9176912B2 (en) | 2011-09-07 | 2012-02-09 | Processor to message-based network interface using speculative techniques |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103227755A true CN103227755A (zh) | 2013-07-31 |
CN103227755B CN103227755B (zh) | 2017-06-16 |
Family
ID=46801351
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210337676.0A Active CN103227755B (zh) | 2011-09-07 | 2012-09-06 | 使用推测技术的处理器到基于消息的网络的接口 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9176912B2 (zh) |
EP (1) | EP2568388B1 (zh) |
JP (1) | JP6176904B2 (zh) |
CN (1) | CN103227755B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109815020A (zh) * | 2017-11-21 | 2019-05-28 | 波音公司 | 指令处理对准系统 |
CN111201516A (zh) * | 2017-10-12 | 2020-05-26 | Arm有限公司 | 数据处理系统中的消息传递 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2801907A4 (en) * | 2012-02-01 | 2014-12-03 | Huawei Tech Co Ltd | MULTICOVER PROCESSOR SYSTEM |
JP2015203953A (ja) * | 2014-04-14 | 2015-11-16 | Necプラットフォームズ株式会社 | 自己診断回路、装置、自己診断方法およびプログラム |
US10194972B2 (en) | 2014-08-26 | 2019-02-05 | Ethicon Llc | Managing tissue treatment |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050132408A1 (en) * | 2003-05-30 | 2005-06-16 | Andrew Dahley | System for controlling a video display |
CN101311894A (zh) * | 2007-03-30 | 2008-11-26 | 英特尔公司 | 多处理器/多内核消息传递机中的推测预取方法和装置 |
US20100191862A1 (en) * | 2007-08-28 | 2010-07-29 | Forbes Jr Joseph W | System and method for priority delivery of load management messages on ip-based networks |
US20110066538A1 (en) * | 2009-09-15 | 2011-03-17 | Chicago Mercantile Exchange, Inc. | Accelerated Trade Matching Using Speculative Parallel Processing |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5548796A (en) * | 1993-11-02 | 1996-08-20 | National Semiconductor Corporation | Method of automatic retransmission of frames in a local area network |
JP2009043275A (ja) * | 2001-03-05 | 2009-02-26 | Pact Xpp Technologies Ag | シーケンスの形成方法 |
US6912610B2 (en) * | 2003-03-28 | 2005-06-28 | Emulex Design & Manufacturing Corporation | Hardware assisted firmware task scheduling and management |
KR100926007B1 (ko) * | 2005-10-07 | 2009-11-11 | 에이저 시스템즈 인크 | 스트리밍 및 제어 처리를 위한 별도의 구성을 이용한미디어 데이터 프로세싱 |
US20080082756A1 (en) * | 2006-10-02 | 2008-04-03 | Xiaowei Shen | Mechanisms and methods of using self-reconciled data to reduce cache coherence overhead in multiprocessor systems |
US7949830B2 (en) * | 2007-12-10 | 2011-05-24 | International Business Machines Corporation | System and method for handling data requests |
US7855954B2 (en) * | 2008-07-21 | 2010-12-21 | International Business Machines Corporation | Speculative credit data flow control |
US20110007754A1 (en) | 2009-07-10 | 2011-01-13 | Gerald Pepper | Flexible Hardware Checksum Generator |
US9880848B2 (en) * | 2010-06-11 | 2018-01-30 | Advanced Micro Devices, Inc. | Processor support for hardware transactional memory |
-
2012
- 2012-02-09 US US13/369,727 patent/US9176912B2/en active Active
- 2012-09-05 EP EP12183040.0A patent/EP2568388B1/en active Active
- 2012-09-06 CN CN201210337676.0A patent/CN103227755B/zh active Active
- 2012-09-06 JP JP2012195916A patent/JP6176904B2/ja not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050132408A1 (en) * | 2003-05-30 | 2005-06-16 | Andrew Dahley | System for controlling a video display |
CN101311894A (zh) * | 2007-03-30 | 2008-11-26 | 英特尔公司 | 多处理器/多内核消息传递机中的推测预取方法和装置 |
US20100191862A1 (en) * | 2007-08-28 | 2010-07-29 | Forbes Jr Joseph W | System and method for priority delivery of load management messages on ip-based networks |
US20110066538A1 (en) * | 2009-09-15 | 2011-03-17 | Chicago Mercantile Exchange, Inc. | Accelerated Trade Matching Using Speculative Parallel Processing |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111201516A (zh) * | 2017-10-12 | 2020-05-26 | Arm有限公司 | 数据处理系统中的消息传递 |
CN109815020A (zh) * | 2017-11-21 | 2019-05-28 | 波音公司 | 指令处理对准系统 |
CN109815020B (zh) * | 2017-11-21 | 2024-05-14 | 波音公司 | 指令处理对准系统 |
Also Published As
Publication number | Publication date |
---|---|
US20130061247A1 (en) | 2013-03-07 |
JP6176904B2 (ja) | 2017-08-09 |
EP2568388B1 (en) | 2017-03-15 |
EP2568388A3 (en) | 2014-06-11 |
US9176912B2 (en) | 2015-11-03 |
EP2568388A2 (en) | 2013-03-13 |
CN103227755B (zh) | 2017-06-16 |
JP2013058200A (ja) | 2013-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11954055B2 (en) | Mapping high-speed, point-to-point interface channels to packet virtual channels | |
US11539623B2 (en) | Single field for encoding multiple elements | |
US11418455B2 (en) | Transparent packet splitting and recombining | |
US11966345B2 (en) | Network credit return mechanisms | |
CN103227755A (zh) | 使用推测技术的处理器到基于消息的网络的接口 | |
US11403023B2 (en) | Method of organizing a programmable atomic unit instruction memory | |
US11989556B2 (en) | Detecting infinite loops in a programmable atomic transaction | |
US11362939B2 (en) | Flow control for a multiple flow control unit interface | |
US11985078B2 (en) | Packet arbitration for buffered packets in a network device | |
US11953989B2 (en) | Low-latency register error correction | |
CN114385236A (zh) | 传递可编程原子操作符到存储器控制器 | |
CN116685943A (zh) | 可编程原子单元中的自调度线程 | |
CN114385326A (zh) | 桶式处理器中的线程重放到保留状态 | |
US20220121483A1 (en) | Thread execution control in a barrel processor | |
US20220121487A1 (en) | Thread scheduling control and memory splitting in a barrel processor | |
WO2022115165A2 (en) | Identifying memory hotspots |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |