CN101930416A - 硬件协助处理器间的沟通 - Google Patents
硬件协助处理器间的沟通 Download PDFInfo
- Publication number
- CN101930416A CN101930416A CN201010210903.4A CN201010210903A CN101930416A CN 101930416 A CN101930416 A CN 101930416A CN 201010210903 A CN201010210903 A CN 201010210903A CN 101930416 A CN101930416 A CN 101930416A
- Authority
- CN
- China
- Prior art keywords
- soon
- engine
- memory
- goes out
- external body
- 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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/17—Interprocessor communication using an input/output type connection, e.g. channel, I/O port
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Bus Control (AREA)
Abstract
一种外部记忆体快进快出(xFIFO)装置,耦接至外部记忆体及注册汇流排。xFIFO装置包含xFIFO引擎、读取式直接记忆体存取(rDMA)引擎、写入式直接记忆体存取(wDMA)引擎、第一虚拟FIFO模块及第二虚拟FIFO模块。xFIFO装置自注册汇流排接收快进快出指令并产生读取DMA指令及写入DMA指令。wDMA引擎自xFIFO引擎接收写入DMA指令并传送进来的资料至外部记忆体。rDMA引擎自xFIFO引擎接收读取DMA指令并自外部记忆体预取快进快出资料。wDMA引擎及rDMA引擎透过第一虚拟FIFO模块及第二虚拟FIFO模块达到彼此同步。
Description
技术领域
本发明是与处理器之间的沟通(inter-processor communication,IPC)有关,特别是关于一种透过外部记忆体的快进快出(external memory basedfirst-in-first-out,xFIFO)辅助处理器之间沟通的装置。
背景技术
一般而言,传统的基地台传输器是透过预设的沟通连结,例如T1或E1线路,连接至基地台控制器。这些基地台控制器彼此连接,并且亦连接至其他网路设备,例如整合分封无线服务(GPRS)网路中的GPRS服务节点(SGSN)或闸道GPRS支援节点(GGSN)。近来,具有较小尺寸并结合有无线电网络控制器(RNC)及节点功能的家用基地台透过网际网路连接至核心网路(CoreNetwork)。
家用基地台晶片系统包含复数个处理器核心、不同的硬件加速器及周边介面逻辑元件。这些处理器核心负责自装置驱动器、韧体、通讯协定执行许多不同的软体元件至使用者层级的应用。不同的软体绪需要周期地彼此沟通,例如交换控制权或信息,或是彼此同步以确保不同处理器核心所发生的事件是依照适当的顺序并产生正确的结果。随着同时至多有16个用户产生声音及资料的传输,这些软体元件之间的IPC必须能够快速而又有效率,才能满足家用基地台晶片系统的需求。
一般而言,典型使用于多核心嵌入式系统的IPC方案包含讯息递送(message passing)、分享记忆体(shared memory)、一对一同步比拟器(one-to-one synchronization metaphor,例如旗号semaphore及讯号signal)以及N对一同步比拟器(例如旋锁spin-lock或测试及设定test-and-set)。此处强调的是关于讯息递送的方法。于IPC讯息递送的范例中,某一软体绪并不会与欲沟通的其他软体绪分享任何记忆体空间。反而,它们会透过简单(一维)的快进快出队列(FIFO queue)彼此沟通,使得某一软体绪固定扮演制造者(producer)的角色,另一软体绪则固定扮演消费者(consumer)的角色。假设系统需要的是双工讯息递送介面,则只需采用两个上述的快进快出队列即可。
既然我们时常无法预先得知两个不同的软体绪之间究竟有多少资料需要交换或是交换频率为何,因此,两处理器核心之间的讯息快进快出装置必须具有较低的延迟(low latency),才不会使得处理器之间由于频繁地沟通而导致处理速度变慢。此外,两处理器核心之间的讯息快进快出装置亦需具有大面积,以避免由于快进快出装置的空或满而产生处理器之间不必要的耦合。为了能够达成低延迟的目标,系统通常采用设置于晶片上的记忆体(on-chip memory)来提供缓冲空间。至于设置于晶片外的记忆体(off-chipmemory),例如DRAM,则是能够提供大量的缓冲空间,通常作为储存资料之用。
虽然设置于晶片外的记忆体的成本远较设置于晶片上的记忆体来得低,但通常设置于晶片外的记忆体的存取延迟却比设置于晶片上的记忆体来得长。因此,欲同时具有较低存取延迟又提供较大的缓冲空间的要求其实是矛盾的,系统设计者很难在设置于晶片外的记忆体以及设置于晶片上的记忆体之间进行抉择。
因此,本发明提出一种能够辅助处理器之间沟通的装置,以解决上述问题。
发明内容
本发明的一范畴在于提出一种建构于多执行绪直接记忆体存取(Multi-Threaded Direct Memory Access,MT-DMA)引擎上的外部记忆体快进快出(external memory based FIFO,xFIFO)装置,通过硬件加速的方式使得家用基地台晶片系统中的讯息递送处理器之间沟通效率获得提升。
根据本发明的第一具体实施例为一种外部记忆体快进快出(xFIFO)装置。该外部记忆体快进快出装置分别耦接至一外部记忆体及一注册汇流排。该注册汇流排耦接至至少两个处理器。该外部记忆体快进快出装置包含一外部记忆体快进快出(xFIFO)引擎、一读取式直接记忆体存取(rDMA)引擎、一写入式直接记忆体存取(wDMA)引擎、一第一虚拟快进快出模块及一第二虚拟快进快出模块。该第一虚拟快进快出模块及该第二虚拟快进快出模块均耦接于该读取式直接记忆体存取引擎与该写入式直接记忆体存取引擎之间。
于此实施例中,该外部记忆体快进快出装置耦接至该注册汇流排,用以自该注册汇流排接收一快进快出指令并产生一读取DMA指令及一写入DMA指令。该wDMA引擎耦接至该xFIFO引擎及该外部记忆体,用以自该xFIFO引擎接收该写入DMA指令并传送一进来的资料至该外部记忆体。该rDMA引擎耦接至该xFIFO引擎及该外部记忆体,用以自该xFIFO引擎接收该读取DMA指令并自该外部记忆体预取(pre-fetch)一快进快出资料。该wDMA引擎及该rDMA引擎透过该第一虚拟快进快出模块及该第二虚拟快进快出模块达到彼此同步。
相较于先前技术,本发明的处理器间沟通辅助装置采用建构于多执行绪直接记忆体存取引擎上的外部记忆体快进快出装置,通过硬件加速的方式使得家用基地台晶片系统中的讯息递送处理器之间沟通效率获得提升。由于本发明的外部记忆体快进快出装置所具有设置于晶片上的on-chip记忆体已降至最少,故其存取延迟亦可明显降低。因此,本发明的处理器间沟通辅助装置能够同时提供较低的存取延迟,而又能够在家用基地台晶片系统中采用价格较为低廉的设置于晶片外的off-chip记忆体,以降低其生产成本,提升其市场竞争力。
此外,本发明的外部记忆体快进快出装置包含常见的逻辑电路,以确保扮演制造者的软体绪以及扮演消费者的软体绪之间的资料一致性,并且还支援可配置的缓冲址与尺寸大小以及错误复原等功能。
关于本发明的优点与精神可以通过以下的发明详述及所附图式得到进一步的了解。
附图说明
图1是绘示具有单一执行绪的xFIFO装置的功能方块图。
图2是绘示MT-xFIFO装置的功能方块图。
主要元件符号说明
1:xFIFO装置 2、8:第一中央处理单元
3、9:第二中央处理单元 4:外部记忆体
B:注册汇流排 10:xFIFO引擎
11:写入式直接记忆体存取(wDMA)引擎
12:读取式直接记忆体存取(rDMA)引擎
13:写入缓冲器 14:读取缓冲器
15:第一虚拟FIFO模块 16:第二虚拟FIFO模块
6:MT-xFIFO装置 7:汇流排介面单元
90:第三中央处理单元 60:MT-xFIFO引擎
61:内容SRAM 62:封包指令队列
63:DMA指令/资料队列 64:多执行绪DMA模块
B1:写入资料(wdat)汇流排
B2:指令(cmd)汇流排 B3:读取资料(rdat)汇流排
B4:封包指令(packet cmd)汇流排
B5:DMA写入指令(dma wcmd)汇流排
B6:DMA读取指令(dma rcmd)汇流排
62a~62d、63a~63p:队列
具体实施方式
本发明提出通过硬件加速来辅助处理器之间的沟通。根据本发明的第一具体实施例为一种具有单一执行绪的xFIFO装置。实际上,一个简单的xFIFO装置可通过一对读取DMA引擎及写入DMA引擎、复数个虚拟FIFO装置、复数个注册器连接埠及一简单的DMA指令产生器所组成。请参照图1,图1是绘示具有单一执行绪的xFIFO装置的功能方块图。
如图1所示,xFIFO装置1分别耦接至外部记忆体4及注册汇流排B,并且注册汇流排B耦接至第一中央处理单元(CPU)2及第二中央处理单元3。xFIFO装置1包含xFIFO引擎10、写入式直接记忆体存取(wDMA)引擎11、读取式直接记忆体存取(rDMA)引擎12、写入缓冲器13、读取缓冲器14、第一虚拟快进快出模块15及第二虚拟快进快出模块16。
于此实施例中,xFIFO引擎10耦接至wDMA引擎11及rDMA引擎12;注册汇流排B耦接至写入缓冲器13;写入缓冲器13耦接至wDMA引擎11;wDMA引擎11分别耦接至外部记忆体4、第一虚拟快进快出模块15及第二虚拟快进快出模块16;外部记忆体4、xFIFO引擎10、第一虚拟快进快出模块15及第二虚拟快进快出模块16均分别耦接至rDMA引擎12;rDMA引擎12耦接至读取缓冲器14;读取缓冲器14耦接至注册汇流排B。
首先,将就xFIFO装置1的设定进行介绍。起初,xFIFO装置1需先通过软体进行FIFO位址、FIFO尺寸及FIFO资料单位大小等信息的程式设定程序。FIFO位址通常位于off-chip记忆体位址空间内。通过外部记忆体的采用,xFIFO装置1可以最少的额外硬件成本支援非常深的资料快进快出。至于FIFO尺寸的参数则指出了可使用的缓冲器空间的总量。xFIFO装置1内的位址产生器将会使用FIFO尺寸以确保资料位址能够总是落于合法范围内。
就逻辑上而言,xFIFO包含多个具有相同大小的资料物件。FIFO制造者及FIFO消费者之间的同步处理是基于FIFO资料单位大小。惟有当一完整的资料单位被写入至xFIFO时,FIFO制造者的状态才会被更新。当xFIFO仅包含部分的资料单位时,FIFO消费者即把xFIFO视为空的。类似地,惟有当一完整的资料单位被读取自xFIFO时,FIFO消费者的状态才会被更新。唯一的例外是,当一资料封包达到其结尾时,即使累积的资料量尚未达到一完整的资料单位,FIFO制造者及FIFO消费者之间的同步处理仍将会被自动地启动。
xFIFO的设定只会将xFIFO硬件初始化至可以传输资料,至于可传输的资料量及同步方法等细节是透过封包注册所提供。封包注册包含封包大小信息、关于FIFO制造者是否应该在完整封包被写入xFIFO后中断传输、中断的识别、关于FIFO消费者是否应该在完整封包被写入xFIFO后中断传输等信息。
xFIFO引擎10将会根据封包注册的信息分别针对wDMA引擎11、rDMA引擎12产生命令。wDMA指令将会设定wDMA引擎11将进来的资料转送至外部记忆体4。rDMA指令将会设定rDMA引擎12自外部记忆体4预取FIFO资料。依照资料封包的大小,可能会产生不只一个wDMA指令或rDMA指令。因此,在xFIFO引擎10与wDMA引擎11/rDMA引擎12之间需有一些写入缓冲区及读取预取区存在,其数量应为设计的参数。
值得注意的是,wDMA引擎11与rDMA引擎12是透过两个虚拟FIFO模块(第一虚拟FIFO模块15及第二虚拟FIFO模块16)或两个分享的旗号来达成彼此同步的目的。其中,第一虚拟FIFO模块15及第二虚拟FIFO模块16的深度应该与FIFO总大小除以IFO资料单元大小的值一致。这等于根据资料单元的xFIFO容量,且与资料封包大小无关。至于第一虚拟FIFO模块15及第二虚拟FIFO模块16的操作介绍如下。
于此实施例中,xFIFO引擎10是以资料单元的粒度发出DMA指令给wDMA引擎11与rDMA引擎12。举例而言,假设每一资料单元包含四个字元,则xFIFO引擎10将会每隔四个字元产生一个DMA指令,只有在资料封包尾端的部分资料单元除外。
在每一个wDMA指令之前,wDMA引擎11将会尝试“写入”一单元至第一虚拟FIFO模块15,假设第一虚拟FIFO模块15没有可供写入的空间容纳该单元,此一写入动作即会停止。一旦上述写入动作结束,wDMA引擎11将会进行目前资料单元的实际传输动作。既然此实施例所采用的是虚拟FIFO模块,因此,上述写入动作仅会更新虚拟FIFO的状态,并不会有实际的资料被写入至第一虚拟FIFO模块15。在wDMA指令结束后,wDMA引擎11将会写入一单元至第二虚拟FIFO模块16以同样更新第二虚拟FIFO模块16的状态。
类似地,在每一个rDMA指令之前,rDMA引擎12将会尝试从第二虚拟FIFO模块16(并非从第一虚拟FIFO模块15)“读取”一资料单元,假设第二虚拟FIFO模块16没有任何资料单元可供读取,此一读取动作即会停止。一旦上述读取动作结束,rDMA引擎12将会进行目前资料单元的实际传输动作。既然此实施例所采用的是虚拟FIFO模块,因此,上述读取动作仅会更新虚拟FIFO的状态,并不会有实际的资料从第二虚拟FIFO模块16被读取。在rDMA指令结束后,rDMA引擎12将会自第一虚拟FIFO模块15读取一单元以同样更新第一虚拟FIFO模块15的状态。
也就是说,就wDMA引擎11或rDMA引擎12的其一而言,第一虚拟FIFO模块15及第二虚拟FIFO模块16之中的一个虚拟FIFO模块被用来在传输资料单元之前进行“保留”的动作,另一个虚拟FIFO模块则被用来在传输资料单元之后进行“递交”的动作。从rDMA引擎12的观点来看,只有当先前写入操作已结束并递交至第二虚拟FIFO模块16后,读取操作才会开始。结果,rDMA引擎12应该在从xFIFO引擎10读取资料单元之前先检查第二虚拟FIFO模块16,而非检查第一虚拟FIFO模块15。
至于从wDMA引擎11的观点来看,正好与上述rDMA引擎12的观点所看到的情况相反。xFIFO引擎10将会发出正确的DMA指令去指示wDMA引擎11及rDMA引擎12藉由DMA指令中的位元场相关的旗号执行必要的虚拟FIFO操作。换句话说,虚拟FIFO与DMA引擎之间的交互作用被完全遮蔽于软体或外部主要FIFO装置。
xFIFO引擎10的一种典型的使用方式是作为两个嵌入式中央处理单元(第一中央处理单元2与第二中央处理单元3)之间的讯息队列(messagequeue)。然而,xFIFO引擎10亦可用以提供两硬件模块之间的非常深的FIFO队列。经由xFIFO引擎10递送的实际信息对于xFIFO硬件而言并不重要。反而,第一中央处理单元2与第二中央处理单元3所执行的软体应该会藉由其他方式在尺寸大小及资料封包的意义上彼此沟通,例如,透过预先定义的协定或透过前置(prepended)于每一封包的封包字头(packet header)等方式。
于第一中央处理单元2与第二中央处理单元3之间递送的实际资料可能是由软体本身动态产生,抑或可能已储存于记忆体(例如设置于晶片上的SRAM或设置于晶片外的DRAM)的一单独片段中,还是上述两者的混合。为了维持处理器之间资料的先进先出的本性,xFIFO引擎10必须能够动态地自中央处理单元带资料进入,如同资料已经在记忆体内一样,并且以下述的无缝方式加以组合。
首先,定义一特殊注册连接埠cmd。被写入注册连接埠cmd的资料应该具有dmaCmd的型式。无论在任何时间,应该只有一个中央处理单元(制造者)控制xFIFO引擎10。假设是第一中央处理单元2控制xFIFO引擎10,第一中央处理单元2借着写入至封包注册连接埠或注册埠cmd驱动xFIFO操作。透过封包注册连接埠或注册埠cmd而来的参数将会被收集至单一的指令队列中。xFIFO引擎10需依序处理在指令队列中的该些指令。假设指令是透过封包注册连接埠而来,则xFIFO引擎10将会产生相对应的wDMA指令或rDMA指令,如同前述讨论的情形。假设指令是透过注册埠cmd而来,则xFIFO引擎10仅会简单地转送DMA指令至rDMA引擎12,rDMA引擎12将会自动地自缓冲器取得资料。
值得注意的是,FIFO资料控制值需要被更新以反映dmaCmd资料的大小。当xFIFO引擎10转送DMA指令至rDMA引擎12时,资料控制值应该增加DMA指令中所指示的资料大小。当扮演消费者的中央处理单元(第二中央处理单元3)自rdata连接埠读取资料时,资料控制值将减至正常值。对任何xFIFO所接收的dmaCmd资料而言,虚拟FIFO操作都应跳过不进行。xFIFO引擎10应该先将接收到的dmaCmd资料中特定的任何旗号操作均加以清除,再把dmaCmd资料转送至rDMA引擎12。
接着,将就xFIFO存取及错误处理进行说明。于此实施例中,FIFO制造者及消费者可以是基于软体或硬件。若软体欲写入至xFIFO或自xFIFO读取,应使用特殊的注册wdata及rdata。存取这两个注册wdata及rdata是不会被阻挡的(non-blocking)。当软体写入至注册wdata时,若FIFO的空间已满,则写入资料将会被弃置,在特殊错误注册中代表溢出的位元将会被设定。类似地,当软体自注册rdata读取时,若FIFO是空的,亦即没有任何资料可读取,则零将会回到中央处理单元,并且在错误注册中代表不足的位元将会被设定。为了避免上述溢出或不足的情事发生,在存取注册wdata/rdata之前,软体应该先周期性地检查在特殊状态注册中的资料控制值。
存取注册wdata/rdata不会被错误报告阻挡的原因在于:当采用一分享的注册时,阻挡操作将会导致系统锁死的情事发生,既然汇流排已被占据,需避免其他部分存取注册以清除此一错误状况。在另一方面,对硬件存取读取/写入资料连接埠而言,硬件操作将会如同一般的注册FIFO存取是会阻挡的(blocking)。
值得注意的是,非阻挡操作仅对于实际FIFO状态有意义,对于xFIFO中的区域写入收集缓冲器或读取预取缓冲器而言,并不相关。若xFIFO的状态为未满(non-full),但区域写入收集缓冲器由于DRAM交通回压而导致已满,则写入操作将会暂时停顿直至区域写入收集缓冲器被释放成未满为止。类似地,若xFIFO的状态为非空(non-empty),但区域读取预取缓冲器由于DRAM存取延迟而导致呈现空的状态,则读取操作将会暂时停顿直至区域读取预取缓冲器自外部记忆体取得资料而变成非空状态为止。为了避免导致系统锁死状态发生,注册汇流排与资料汇流排必须彼此分离,例如可透过系统中的交错杆连结构造将两者加以分离。
当xFIFO引擎10不作用时,若FIFO制造者欲进行写入,则写入动作将会以没有资料写入FIFO而完成。并且,溢出错误旗帜(overflow error flag)将会被设定。类似地,当xFIFO引擎10不作用时,若FIFO消费者欲进行读取,则读取动作将会以零为返回资料而完成,并且不足错误旗帜(underflowerror flag)将会被设定。
在任何xFIFO操作之前,需先由软体进行xFIFO设置的设定。xFIFO引擎10可透过特殊控制注册控制成正常运作/不作用及已清除等状态。xFIFO引擎10透过状态注册提供下列FIFO状态:已满、已清空及资料计数。xFIFO引擎10亦在状态注册中维持忙碌(busy)或闲置(idle)状态。忙碌或闲置状态的意义应与正常运作/不作用及已清除等状态一起讨论。当xFIFO引擎10被启动而处于正常运作状态下,在封包被接收之前,xFIFO引擎10将会处于闲置状态。一旦接收到封包指令,xFIFO引擎10将会进入忙碌模式,持续处理封包直至传输结束为止,接着,xFIFO引擎10又会回到闲置状态。
当xFIFO引擎10不作用时,状态机器将会进入特殊的清理模式,若有任何未决的汇流排处理程序均会被结束。接着,xFIFO引擎10将其状态改回闲置,以指示xFIFO状态机器停止运作,无论是否有任何未决的封包指令。在任何时间下,可重新启动xFIFO以使得状态机器进入自由执行模式,或软体可写入一清除位元,藉以清除两个虚拟FIFO、写入缓冲器及预取缓存器。值得注意的是,只有当xFIFO引擎10不作用或处于闲置状态时,FIFO指令才能被更新。
根据本发明的第二具体实施例为一种多执行绪外部记忆体FIFO(MT-xFIFO)装置。MT-xFIFO装置的功能是由三个不同的硬件模块:MT-xFIFO引擎、DMA指令/资料队列及多执行绪DMA引擎所提供。此仅为一设计模版,可以依照实际执行绪的数目进行设置。于MT-xFIFO装置中,每一执行绪均可向后相容至单一执行绪xFIFO装置,并且每一执行绪可独立于其他执行绪进行其工作。请参照图2,图2是绘示MT-xFIFO装置的功能方块图。
如图2所示,MT-xFIFO装置6是通过汇流排介面单元(Bus Interface Unit,BIU)7耦接至第一中央处理单元8、第二中央处理单元9及第三中央处理单元90。实际上,中央处理单元的数目并不以此例为限。MT-xFIFO装置6包含MT-xFIFO引擎60、内容SRAM 61、封包指令队列(Multi-Queue)62、DMA指令/资料队列(Multi-Queue)63、多执行绪DMA模块(dmaX)64、写入资料(wdat)汇流排B1、指令(cmd)汇流排B2、读取资料(rdat)汇流排B3、封包指令(packet cmd)汇流排B4、DMA写入指令(dma wcmd)汇流排B5及DMA读取指令(dma rcmd)汇流排B6。其中,封包指令队列62包含队列62a~62d,并且DMA指令/资料队列63包含队列63a~63p。MT-xFIFO引擎60是耦接至封包指令汇流排B4、DMA写入指令汇流排B5、DMA读取指令汇流排B6及内容SRAM 61。
于此实施例中,写入资料汇流排B1分别传送资料讯号Wdat 0、Wdat 1、Wdat 2及Wdat 3至DMA指令/资料队列63的队列63a、63e、63i及63m。指令汇流排B2分别传送BIU指令至队列62a、62b、62c及62d。读取资料汇流排B3自DMA指令/资料队列63的队列63d、63h、63l及63p读取资料讯号Rdat 0、Rdat 1、Rdat 2及Rdat 3。封包指令汇流排B4分别自队列62a、62b、62c及62d接收队列指令并传送封包指令至MT-xFIFO引擎60。DMA写入指令汇流排B5自MT-xFIFO引擎60接收FIFO写入讯号并分别传送写入指令Wcmd 0、Wcmd 1、Wcmd 2及Wcmd 3至DMA指令/资料队列63的队列63b、63f、63j及63n。DMA读取指令汇流排B6自MT-xFIFO引擎60接收FIFO读取讯号并分别传送读取指令Rcmd 0、Rcmd 1、Rcmd 2及Rcmd 3至DMA指令/资料队列63的队列63c、63g、63k及63o。多执行绪DMA模块64分别传送读取复数个资料讯号至队列63d、63h、63l及63p。多执行绪DMA模块64可以与一写入通道或一读取通道进行沟通。
MT-xFIFO装置6的输入端为汇流排介面单元7的一硬件介面,而MT-xFIFO装置6的输出端则为晶片系统中的资料汇流排。当多执行绪中的一执行绪被启动,MT-xFIFO引擎60即会一一检查所有执行绪的状态。藉由检查封包指令的状态及DMA指令队列,MT-xFIFO引擎60可从主机对每个封包指令产生一系列的写入/读取DMA指令。当MT-xFIFO引擎60发出写入/读取DMA指令至多执行绪DMA模块64之后,写入DMA引擎将资料由该些资料队列移动至内容SRAM 61,并且读取DMA引擎将资料由内容SRAM 61移动至该些资料队列。
同时,主机可不需MT-xFIFO引擎60的介面操作即可自资料队列读取新资料或写入新资料至资料队列。换句话说,主机可传送资料至资料队列或自资料队列接收资料,并且MT-xFIFO引擎60可同时对每一执行绪产生读取/写入DMA指令。值得注意的是,主机的运作与MT-xFIFO引擎60的运作彼此独立互不相关。因此,主机之间的沟通可以仅透过直接发出封包指令而实现,不必产生一连串的读取/写入DMA指令至多执行绪DMA模块64。MT-xFIFO引擎60可以只是自主机根据封包指令发出读取/写入DMA指令。
当MT-xFIFO装置6被启动时,MT-xFIFO引擎60将会一一对于执行绪执行一些操作,包含下列步骤:(1)MT-xFIFO引擎60检查目前的执行绪是否处于启动状态或清除状态;(2)若封包指令队列62中有新的封包指令且DMA指令/资料队列63是空的,则MT-xFIFO引擎60会产生一系列的读取/写入DMA指令;(3)若在MT-xFIFO引擎60中有任何未结束的封包指令且DMA指令/资料队列63是空的,则MT-xFIFO引擎60会产生一系列的读取/写入DMA指令;(4)当MT-xFIFO引擎60正进行执行绪切换时,MT-xFIFO引擎60重新将目前执行绪状态储存至内容SRAM 61或自内容SRAM 61储存目前执行绪状态。
假设符合下列情况之一,MT-xFIFO引擎60将会进行执行绪的切换:(1)目前执行绪并未被启动;(2)目前封包指令已完成或在指令队列中没有对应该执行绪的新的封包指令;(3)读取DMA指令队列及写入DMA指令队列中均没有空间。并且,内容SRAM 61是作为储存媒介,用来储存执行绪运作时所需的必要信息。
为了最大化系统设计的弹性并且最小化硬件资源的需求,多重队列(Multi-Queue)中的每一队列的深度以及MT-xFIFO引擎60中的最大支援执行绪的数目可透过重新配置MT-xFIFO引擎60、封包指令队列62、DMA指令/资料队列63、多执行绪DMA模块64而轻易地获得调整。因此,实际上并不需要重新设计整个系统及各模块即可完成调整。
相较于先前技术,本发明的处理器间沟通辅助装置是采用建构于多执行绪直接记忆体存取引擎上的外部记忆体快进快出装置,通过硬件加速的方式使得家用基地台晶片系统中的讯息递送处理器之间沟通效率获得提升。由于本发明的外部记忆体快进快出装置所具有设置于晶片上的on-chip记忆体已降至最少,故其存取延迟亦可明显降低。因此,本发明的处理器间沟通辅助装置能够同时提供较低的存取延迟,而又能够在家用基地台晶片是统中采用价格较为低廉的设置于晶片外的off-chip记忆体,以降低其生产成本,提升其市场竞争力。
此外,本发明的外部记忆体快进快出装置包含常见的逻辑电路,以确保扮演制造者的软体绪以及扮演消费者的软体绪之间的资料一致性,并且还支援可配置的缓冲址与尺寸大小以及错误复原等功能。
通过以上较佳具体实施例的详述,是希望能更加清楚描述本发明的特征与精神,而并非以上述所揭露的较佳具体实施例来对本发明的范畴加以限制。相反地,其目的是希望能涵盖各种改变及具相等性的安排于本发明所欲申请的专利范围的范畴内。
Claims (10)
1.一种外部记忆体快进快出(xFIFO)装置,分别耦接至一外部记忆体及一注册汇流排,该外部记忆体快进快出装置包含:
一外部记忆体快进快出引擎,耦接至该注册汇流排,用以自该注册汇流排接收一快进快出指令并且产生一写入直接记忆体存取(DMA)指令及一读取直接记忆体存取指令;
一写入式直接记忆体存取引擎,耦接至该外部记忆体快进快出引擎及该外部记忆体,用以自该外部记忆体快进快出引擎接收该写入直接记忆体存取指令并且将一进入的资料转送至该外部记忆体;
一读取式直接记忆体存取引擎,耦接至该外部记忆体快进快出引擎及该外部记忆体,用以该外部记忆体快进快出引擎接收该读取直接记忆体存取指令并自该外部记忆体预取一外进外出资料;
一第一虚拟快进快出模块,耦接于该写入式直接记忆体存取引擎与该读取式直接记忆体存取引擎的间;以及
一第二虚拟快进快出模块,耦接于该写入式直接记忆体存取引擎与该读取式直接记忆体存取引擎的间;
其中该写入式直接记忆体存取引擎与该读取式直接记忆体存取引擎是透过该第一虚拟快进快出模块与该第二虚拟快进快出模块达到彼此同步。
2.如权利要求1所述的外部记忆体快进快出装置,其中在发出该写入直接记忆体存取指令之前,该写入式直接记忆体存取引擎对该第一虚拟快进快出模块执行一虚拟快进快出写入操作。
3.如权利要求2所述的外部记忆体快进快出装置,其中一旦该虚拟快进快出写入操作结束,该写入式直接记忆体存取引擎将该进入的资料转送至该外部记忆体。
4.如权利要求1所述的外部记忆体快进快出装置,其中在该写入直接记忆体存取指令结束后,该写入式直接记忆体存取引擎对该第二虚拟快进快出模块执行一写入操作以更新该第二虚拟快进快出模块的状态。
5.如权利要求1所述的外部记忆体快进快出装置,其中在发出该读取直接记忆体存取指令之前,该读取式直接记忆体存取引擎对该第二虚拟快进快出模块执行一虚拟快进快出读取操作。
6.如权利要求5所述的外部记忆体快进快出装置,其中一旦该虚拟快进快出读取操作结束,该读取式直接记忆体存取引擎自该外部记忆体预取该快进快出资料。
7.如权利要求1所述的外部记忆体快进快出装置,其中在该读取直接记忆体存取指令结束后,该读取式直接记忆体存取引擎对该第一虚拟快进快出模块执行一读取操作以更新该第一虚拟快进快出模块的状态。
8.如权利要求1所述的外部记忆体快进快出装置,其中该外部记忆体快进快出装置是一多执行绪外部记忆体快进快出(MT-xFIFO)装置,其输入端为一汇流排介面单元的一硬件介面且其输出端为一系统晶片(SOC)汇流排介面。
9.如权利要求1所述的外部记忆体快进快出装置,进一步包含耦接至该外部记忆体快进快出引擎的一内容记忆体,其中在该外部记忆体快进快出引擎发出该写入直接记忆体存取指令或该读取直接记忆体存取指令至该写入式直接记忆体存取引擎或该读取式直接记忆体存取引擎之后,该外部记忆体快进快出引擎将目前执行绪的内容信息拷贝至该内容记忆体,并且自该内容记忆体取得下一执行绪的内容信息。
10.如权利要求1所述的外部记忆体快进快出装置,其中该注册汇流排耦接至少两处理器,并且该外部记忆体快进快出装置透过该注册汇流排增进该至少两处理器之间的沟通。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US21895309P | 2009-06-21 | 2009-06-21 | |
US61/218,953 | 2009-06-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101930416A true CN101930416A (zh) | 2010-12-29 |
CN101930416B CN101930416B (zh) | 2013-05-29 |
Family
ID=42790520
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010210903.4A Expired - Fee Related CN101930416B (zh) | 2009-06-21 | 2010-06-21 | 硬件协助处理器间的沟通 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8359420B2 (zh) |
EP (1) | EP2309396A3 (zh) |
CN (1) | CN101930416B (zh) |
TW (1) | TWI434182B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013189009A1 (en) * | 2012-06-18 | 2013-12-27 | Qualcomm Incorporated | Adaptive offset synchronization of data based on ring buffers |
CN106293999A (zh) * | 2015-06-25 | 2017-01-04 | 深圳市中兴微电子技术有限公司 | 一种微引擎处理报文中间数据快照功能的实现方法及装置 |
CN111930676A (zh) * | 2020-09-17 | 2020-11-13 | 湖北芯擎科技有限公司 | 多处理器间的通信方法、装置、系统及存储介质 |
TWI824847B (zh) * | 2022-11-24 | 2023-12-01 | 新唐科技股份有限公司 | 記憶體分享裝置、方法、可分享記憶體以及其使用之電子設備 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102171664B (zh) | 2008-08-06 | 2014-12-03 | 莫维克网络公司 | 无线电接入网(ran)中的内容高速缓存 |
CN102550006A (zh) * | 2010-02-12 | 2012-07-04 | 莫维克网络公司 | 移动网络中的无线接入网络缓存 |
WO2011115965A1 (en) | 2010-03-15 | 2011-09-22 | Movik Networks | Adaptive chunked and content-aware pacing of multi-media delivery over http transport and network controlled bit rate selection |
US8799480B2 (en) * | 2010-07-19 | 2014-08-05 | Movik Networks | Content pre-fetching and CDN assist methods in a wireless mobile network |
WO2012040608A2 (en) | 2010-09-24 | 2012-03-29 | Movik Networks | Destination learning and mobility detection in transit network device in lte & umts radio access networks |
US8755221B2 (en) * | 2010-10-18 | 2014-06-17 | Avalanche Technology, Inc. | Emulation of static random access memory (SRAM) by magnetic random access memory (MRAM) |
KR20120072211A (ko) * | 2010-12-23 | 2012-07-03 | 한국전자통신연구원 | 메모리 매핑장치 및 이를 구비한 멀티프로세서 시스템온칩 플랫폼 |
US9239607B2 (en) * | 2011-12-22 | 2016-01-19 | Intel Corporation | Storing data using a direct data path architecture to reduce energy consumption and improve performance |
CN107239420B (zh) * | 2012-11-21 | 2020-05-05 | 相干逻辑公司 | 具有散布处理器dma-fifo的处理系统 |
KR20150090621A (ko) * | 2014-01-29 | 2015-08-06 | 삼성전자주식회사 | 스토리지 장치 및 데이터 처리 방법 |
US9582463B2 (en) * | 2014-12-09 | 2017-02-28 | Intel Corporation | Heterogeneous input/output (I/O) using remote direct memory access (RDMA) and active message |
US9342384B1 (en) * | 2014-12-18 | 2016-05-17 | Intel Corporation | Function callback mechanism between a central processing unit (CPU) and an auxiliary processor |
US10331613B2 (en) | 2015-10-30 | 2019-06-25 | Netapp, Inc. | Methods for enabling direct memory access (DMA) capable devices for remote DMA (RDMA) usage and devices therof |
US11829237B1 (en) * | 2021-03-05 | 2023-11-28 | Apple Inc. | Error detection and recovery when streaming data |
US20230185694A1 (en) * | 2021-12-10 | 2023-06-15 | International Business Machines Corporation | Debugging communication among units on processor simulator |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6052751A (en) * | 1997-02-14 | 2000-04-18 | Advanced Micro Devices, I Nc. | Method and apparatus for changing the number of access slots into a memory |
US20060064516A1 (en) * | 2004-09-22 | 2006-03-23 | Ellis Jackson L | Instruction removal for context re-evaluation |
US20080301376A1 (en) * | 2007-05-31 | 2008-12-04 | Allison Brian D | Method, Apparatus, and System Supporting Improved DMA Writes |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3415755A1 (de) * | 1984-04-27 | 1985-10-31 | Kraftwerk Union AG, 4330 Mülheim | Schweisszange zum verbinden von zwei aneinanderstossenden rohrenden durch lichtbogenschweissung |
US5446843A (en) * | 1990-12-20 | 1995-08-29 | Alcatel Italia Spa | Interface unit for dynamically configuring a buffer in different modes to store data transfers based upon different connection details of connected processing units |
US5535340A (en) * | 1994-05-20 | 1996-07-09 | Intel Corporation | Method and apparatus for maintaining transaction ordering and supporting deferred replies in a bus bridge |
US5805930A (en) * | 1995-05-15 | 1998-09-08 | Nvidia Corporation | System for FIFO informing the availability of stages to store commands which include data and virtual address sent directly from application programs |
US5884100A (en) * | 1996-06-06 | 1999-03-16 | Sun Microsystems, Inc. | Low-latency, high-throughput, integrated cache coherent I/O system for a single-chip processor |
US5905876A (en) * | 1996-12-16 | 1999-05-18 | Intel Corporation | Queue ordering for memory and I/O transactions in a multiple concurrent transaction computer system |
US6425021B1 (en) * | 1998-11-16 | 2002-07-23 | Lsi Logic Corporation | System for transferring data packets of different context utilizing single interface and concurrently processing data packets of different contexts |
US20050223131A1 (en) * | 2004-04-02 | 2005-10-06 | Goekjian Kenneth S | Context-based direct memory access engine for use with a memory system shared by devices associated with multiple input and output ports |
US7366851B2 (en) * | 2004-08-19 | 2008-04-29 | International Business Machines Corporation | Processor, method, and data processing system employing a variable store gather window |
US7716387B2 (en) * | 2005-07-14 | 2010-05-11 | Canon Kabushiki Kaisha | Memory control apparatus and method |
US20080313363A1 (en) * | 2006-02-20 | 2008-12-18 | Freescale Semiconductor, Inc. | Method and Device for Exchanging Data Using a Virtual Fifo Data Structure |
US7831746B2 (en) * | 2007-03-13 | 2010-11-09 | Sgi International, Inc. | Direct memory access engine for data transfers |
US7673091B2 (en) * | 2007-04-24 | 2010-03-02 | Texas Instruments Incorporated | Method to hide or reduce access latency of a slow peripheral in a pipelined direct memory access system |
US8417842B2 (en) * | 2008-05-16 | 2013-04-09 | Freescale Semiconductor Inc. | Virtual direct memory access (DMA) channel technique with multiple engines for DMA controller |
-
2010
- 2010-06-21 US US12/819,451 patent/US8359420B2/en not_active Expired - Fee Related
- 2010-06-21 CN CN201010210903.4A patent/CN101930416B/zh not_active Expired - Fee Related
- 2010-06-21 EP EP10166715A patent/EP2309396A3/en not_active Withdrawn
- 2010-06-21 TW TW099120160A patent/TWI434182B/zh not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6052751A (en) * | 1997-02-14 | 2000-04-18 | Advanced Micro Devices, I Nc. | Method and apparatus for changing the number of access slots into a memory |
US20060064516A1 (en) * | 2004-09-22 | 2006-03-23 | Ellis Jackson L | Instruction removal for context re-evaluation |
US20080301376A1 (en) * | 2007-05-31 | 2008-12-04 | Allison Brian D | Method, Apparatus, and System Supporting Improved DMA Writes |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013189009A1 (en) * | 2012-06-18 | 2013-12-27 | Qualcomm Incorporated | Adaptive offset synchronization of data based on ring buffers |
CN104380273A (zh) * | 2012-06-18 | 2015-02-25 | 高通股份有限公司 | 基于环形缓冲器的数据的自适应偏移同步 |
US9621331B2 (en) | 2012-06-18 | 2017-04-11 | Qualcomm Incorporated | Adaptive offset synchronization of data based on ring buffers |
CN106293999A (zh) * | 2015-06-25 | 2017-01-04 | 深圳市中兴微电子技术有限公司 | 一种微引擎处理报文中间数据快照功能的实现方法及装置 |
CN106293999B (zh) * | 2015-06-25 | 2019-04-30 | 深圳市中兴微电子技术有限公司 | 一种微引擎处理报文中间数据快照功能的实现方法及装置 |
US11010277B2 (en) | 2015-06-25 | 2021-05-18 | Sanechips Technology Co., Ltd. | Method and device for realizing snapshot function of micro-engine processing packet intermediate data |
CN111930676A (zh) * | 2020-09-17 | 2020-11-13 | 湖北芯擎科技有限公司 | 多处理器间的通信方法、装置、系统及存储介质 |
CN111930676B (zh) * | 2020-09-17 | 2020-12-29 | 湖北芯擎科技有限公司 | 多处理器间的通信方法、装置、系统及存储介质 |
TWI824847B (zh) * | 2022-11-24 | 2023-12-01 | 新唐科技股份有限公司 | 記憶體分享裝置、方法、可分享記憶體以及其使用之電子設備 |
Also Published As
Publication number | Publication date |
---|---|
CN101930416B (zh) | 2013-05-29 |
US20100325334A1 (en) | 2010-12-23 |
US8359420B2 (en) | 2013-01-22 |
TW201102829A (en) | 2011-01-16 |
EP2309396A3 (en) | 2011-12-21 |
EP2309396A2 (en) | 2011-04-13 |
TWI434182B (zh) | 2014-04-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101930416B (zh) | 硬件协助处理器间的沟通 | |
US6925512B2 (en) | Communication between two embedded processors | |
US7526593B2 (en) | Packet combiner for a packetized bus with dynamic holdoff time | |
JP3340738B2 (ja) | 並行パケットバスに関する方法及び装置 | |
US6577542B2 (en) | Scratchpad memory | |
US7363396B2 (en) | Supercharge message exchanger | |
CN101901205A (zh) | 在PCIExpress上启用基于ID的流的方法和装置 | |
US6581113B1 (en) | Apparatus and method for transferring frame data between a host system memory and a network interface buffer memory employing transmit descriptors without transmit status information | |
US20070081414A1 (en) | System and method of on-circuit asynchronous communication, between synchronous subcircuits | |
KR20120040535A (ko) | 버스 시스템 및 그것의 동작 방법 | |
JP2009512259A (ja) | FlexRay通信モジュールとFlexRay加入者装置とを繋ぐ加入者インタフェース、およびFlexRay通信モジュールとFlexRay加入者装置とを繋ぐ加入者インタフェースを経由するメッセージの伝送方法 | |
JP2008159075A (ja) | 集積回路及びそれを用いた情報処理装置 | |
CN111611185A (zh) | 一种多pcie端口的msi中断过滤装置 | |
CN112445735A (zh) | 一种联邦学习数据传输方法、计算机设备、系统及存储介质 | |
US7162564B2 (en) | Configurable multi-port multi-protocol network interface to support packet processing | |
JP3444154B2 (ja) | メモリアクセス制御回路 | |
US7610415B2 (en) | System and method for processing data streams | |
JP2688171B2 (ja) | 通信アダプタ並びにデータ転送システムおよび方法 | |
GB2377138A (en) | Ring Bus Structure For System On Chip Integrated Circuits | |
CN102420749A (zh) | 一种网卡发包功能的实现装置和方法 | |
US7028124B2 (en) | Method and apparatus for dual queue head processing of interrupt endpoints | |
US6378017B1 (en) | Processor interconnection | |
US7047284B1 (en) | Transfer request bus node for transfer controller with hub and ports | |
CN113992470B (zh) | 数据发送方法和接收方法、主设备、从设备及电子设备 | |
JP2004054419A (ja) | ノード間トランザクション処理装置 |
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 | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20160321 Address after: Taipei City, Taiwan, China Patentee after: Source Yao Polytron Technologies Inc Address before: American California Patentee before: Ablaze Wireless Inc. |
|
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130529 Termination date: 20170621 |
|
CF01 | Termination of patent right due to non-payment of annual fee |