CN1585924B - 使用信号量进行fifo通信的方法和设备及计算机系统 - Google Patents

使用信号量进行fifo通信的方法和设备及计算机系统 Download PDF

Info

Publication number
CN1585924B
CN1585924B CN02822479.5A CN02822479A CN1585924B CN 1585924 B CN1585924 B CN 1585924B CN 02822479 A CN02822479 A CN 02822479A CN 1585924 B CN1585924 B CN 1585924B
Authority
CN
China
Prior art keywords
fifo buffer
data element
counting
read
counter
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.)
Expired - Fee Related
Application number
CN02822479.5A
Other languages
English (en)
Other versions
CN1585924A (zh
Inventor
J·胡格布鲁格
P·斯特拉维斯
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.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of CN1585924A publication Critical patent/CN1585924A/zh
Application granted granted Critical
Publication of CN1585924B publication Critical patent/CN1585924B/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2205/00Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F2205/10Indexing scheme relating to groups G06F5/10 - G06F5/14
    • G06F2205/108Reading or writing the data blockwise, e.g. using an extra end-of-block pointer

Abstract

本发明涉及向FIFO缓冲区写入或从其读取数据元素的方法和设备,其中信号通知:FIFO缓冲区中有可用的数据元素或有可用的用于数据元素的存储空间,即执行V-操作,只有在所述FIFO缓冲区中有数据元素或有用于数据元素的存储空间变为可用,不被原子执行,而是等到在所述FIFO缓冲区中有L个数据元素或有用于L个数据元素的L个存储空间变为可用时,才执行一次信号通知,通知L个数据元素或用于L个数据元素的L个存储空间的可用性。在某种意义上,信号通知:数据元素或用于数据元素的存储空间的可用性,即执行V-操作,被缓冲起来,直到收集了一定量的V-操作才输出对可用性的信号通知。

Description

使用信号量进行FIFO通信的方法和设备及计算机系统
技术领域
本发明涉及把数据元素写入到共享FIFO缓冲区中的方法和设备、从共享FIFO缓冲区读取数据元素的方法和设备、计算机系统以及对应的计算机程序产品。
背景技术
在计算机系统中,处理器的协调是一个重要的问题。在集中式系统中通常用信号量来解决许多进程协调例如互斥和管理可重用的消耗性资源之类的问题。
互斥问题在并发处理中是一个重要的问题。多个进程经常在一个或多个处理器上并发执行。这些处理器通常共享像存储设备、输入/输出设备和存储器这样的资源。当两个或多个进程需要对相同的数据和存储器进行操作时,就有必要提供一种机制来强制实施对资源的互斥访问。要求这种机制允许在任一时刻只有一个进程有权访问一个源。
通常信号量被用作调解对共享资源的访问的同步机制。信号量可以有相关联的值,这个值通常被设置为该信号量所约束的资源的数量。每当有进程获得该信号量时,信号量的值被减1。在信号量的值达到0之后,获取该信号量的新尝试都会被阻塞住,直到该信号量被一个处理器释放并且该信号量的值被加1为止。
信号量是非负整型变量,对其只允许进行P-和V-操作。V-操作由生产者进程用来指示已经产生了供消费者进程所用的信息。P-操作由消费者进程在其请求由生产者进程所产生的信息时使用。P-操作用来进入互斥,V-操作用来退出互斥。在US4,928,222中可以找到对信号量和P-、V-操作的非常图形化的解释。
通常,所谓的生产者-消费者问题出现在并发处理中。生产者-消费者问题的基础是数据的生产者必须具有这样的装置,该装置用于把数据存储着直至消费者就绪为止,并且消费者禁止试图消费不在那里的数据。看来生产者仅在消费者准备消费时才产生数据是不切实际的。如果这些进程中的任一个提早到达了,它都被要求去等待。但是,如果消费者或生产者的数据速率在程序执行期间有变化,或者如果生产者或消费者的数据速率不同,那么缓冲数据就成为必然。缓冲区是一段内存,生产者和消费者都可以对其进行访问。如果缓冲区大到足以处理高峰时产生的数据,那么生产者和消费者就都维持用于数据传输的稳定的高平均速率,而不必担心由于突发的高峰而导致的故障。
当并发进程以生产者-消费者对加以链接并共享一个有限的缓冲区-缓冲区中的每个部分对于各个进程都是可访问
Figure G028224795D00021
较慢的消费者可能大大延迟整个系统。在一些消费者被阻塞的情形中,由相关的生产者所产生的消息将挤满整个缓冲区并将因此而阻塞整个系统。为了避免这种行为,已知的方法是为每个生产者-消费者对保留足够数量的、用于通常工作的部分,并把缓冲区的其余部分专门用来吸收各个对的生产高峰。
图3A和3B示出了向有界FIFO缓冲区写入或从其读出数据的标准方法,该有界FIFO缓冲区被实现在两个处理器之间高速缓存的共享存储器中,其中使用信号量进行同步。该方法的从有界FIFO缓冲区读取或向其写入数据的操作基于两个信号量:信号量″data″用来防止从空FIFO缓冲区中读取,信号量″room″用来防止向满的FIFO缓冲区写入数据。信号量″data″的值对应于FIFO缓冲区中有效数据条目的数量,而信号量″room″的值对应于FIFO缓冲区中空闲位置的数量。
图3A示出了基于信号量″room″向所述有界FIFO缓冲区写入数据的方法。对FIFO缓冲区内的空间执行P操作(P(room)),即执行对用于FIFO缓冲区中的数据元素的空间或空位(room)的请求。如果在FIFO缓冲区中没有可用的空间或空位,写进程就必须等待。但是,如果FIFO缓冲区中有空位,就把一个数据元素输入到队列中并执行V-操作(V(data)),即信号通知FIFO缓冲区中有新数据元素可用。
图3B示出了基于信号量″data″从所述有界FIFO缓冲区读取数据的方法。如果在FIFO缓冲区中的数据元素可用,就对FIFO缓冲区中的数据元素执行P-操作(P(data)),即请求。如果在FIFO缓冲区中没有可用的数据元素,读进程就必须等待。但是,如果FIFO缓冲区中有数据元素,就要从队列中输出数据元素并执行V-操作(V(data)),即执行信号通知,通知FIFO缓冲区中有可用的新空间。
特别地,在消费者进程-即读者进程和生产者进程-即写者进程基于不同的处理速率的情形中,两个信号量″room″和″data″被重复地在两个进程高速缓存之间传送,导致高速缓存一致性通信量增加。
发明内容
因此,本发明的目的是提供在信号量操作的基础上用于读/写共享FIFO缓冲区的方法和对应的设备,该信号量操作能够减少高速缓存一致性通信量并提高处理速度,在写者进程和读者进程具有不同速度的情况下尤其如此。
这个目的是由一种用于把数据写入到共享FIFO缓冲区中的方法、一种从共享FIFO缓冲区读取数据的方法、一种把数据写入到共享FIFO缓冲区中的设备、以及一种从共享FIFO缓冲区读取数据的设备解决的。
本发明基于这样思想,即执行信号通知,通知在所述FIFO缓冲区中有可用的数据元素或有可用的用于数据元素的存储空间,即执行V-操作,只有在所述FIFO缓冲区中有数据元素或用于数据元素的存储空间变为可用时并不被原子地进行,而是要等到所述FIFO缓冲区中有L个数据元素或用于L个数据元素的L个存储空间变为可用时才发信号通知L个数据元素或用于L个数据元素的L个存储空间的可用性。在某种意义上,对数据元素或用于数据元素的存储空间的可用性的信号通知-即执行V-操作被缓冲起来,直到收集了一定量的V-操作时才输出对可用性的信号通知。
依照本发明,当要把数据元素写入到共享FIFO缓冲区中时,首先要判断在所述FIFO中是否有存储空间可用于在其中存储数据元素。当所述FIFO 缓冲区中没有可用的存储空间时,就阻塞所述FIFO缓冲区的输入,而在所述FIFO缓冲区中有可用的存储空间时,就把数据元素写入到所述FIFO缓冲区中。当数据元素被输入到所述FIFO缓冲区中时,递增写计数器的计数,其中所述计数代表已经输入所述FIFO缓冲区的数据元素的数量。在该计数达到值L之后,即已经有L个数据元素被输入所述FIFO缓冲区时,就执行第一个信号通知操作。
从共享FIFO缓冲区读取数据元素是和把数据元素写入到所述共享FIFO缓冲区中对称执行的:首先,判断在所述FIFO缓冲区中是否有数据元素可用于被从所述FIFO缓冲区读出。当在所述FIFO缓冲区中没有可用的数据元素时,就阻塞所述FIFO缓冲区的输出,而在所述FIFO缓冲区中有可用的数据元素时,就从所述FIFO缓冲区输出数据元素。当从所述FIFO缓冲区输出数据元素时,递增读计数器的计数,其中该计数代表已经从所述FIFO缓冲区输出的数据元素的数量。在该计数达到值L之后,即已经从所述FIFO缓冲区输出了L个数据元素时,执行第二个信号通知操作。
本发明基于下列认识:问题发生在如下的情形中,即在读者进程和写者进程正运行在不同的处理器上,并且FIFO缓冲区在共享存储器中实现,共享存储器被两个处理器缓存并且由高速缓存一致性协议保持一致。对有不同速度的读者和写者来说,较快的进程会重复地通过P-操作阻塞它自己(信号量计数器=0),P-操作是对信号量计数器递减,即对数据元素或用于数据元素的存储空间的请求。较快的进程在能够恢复它的通常操作之前,必须由来自较慢进程的V-操作解除阻塞(信号量计数器>0),V-操作是对信号量计数器递增,即对数据元素或用于数据元素的存储空间的释放。但是,在较慢进程除了通常操作之外还被迫执行V-操作,即释放操作的情形中,由此该慢进程就变得更慢。
由本发明通过如下来解决这个特定问题,即缓冲V-操作直到已收集了L个V-操作,并输出用于指示在共享FIFO缓冲区中有L个数据元素或用于L个数据元素的L个存储空间可用的单一V-操作。这样,在通常操作之外,进程只需执行较少的V-操作即可。
当应用程序以高速率执行对共享FIFO缓冲区的读写操作时,象视频流的像素,像素被从FIFO直接读取或被直接写入FIFO,因为收集了L个V-操作,所以其它进程(在写时是读者,在读时是写者)收到或“看到”L个像素突发中的像素。因此,其它进程的信号通知速率就降低了L倍。这就实现了对生产者和消费者进程之间的同步-通知其它进程数据元素或用于数据元素的存储空间是可用的和通信-向FIFO缓冲区写入或从其读出数据的去耦合。
本发明进一步的优点是降低高速缓存一致性通信量,因为与L次指示一个数据元素可用的信号通知操作相比,本发明使用了一个指示L个数据元素可用的信号通知操作。
本发明更进一步的优点在于以比通信粗的粒度来同步读者和写者。这就使得使用具有更少机器指令的更少信号量操作、更少数据通信量来保持高速缓存一致、以及由线程调度器/操作系统进行的更少的进程阻塞和解除阻塞操作。
依照本发明的优选实施例,当把数据元素写入到共享FIFO缓冲区中时,所述第一个信号通知操作指示已经输入所述FIFO缓冲区的L个数据元素现在可以用于从所述FIFO缓冲区中输出。对于从共享FIFO缓冲区读取数据元素的情况来说,所述第二个信号通知操作指示现有用于L个数据元素的L个存储空间可用,这样就能够把L个数据元素输入到所述FIFO缓冲区中。
依照本发明进一步的实施例,从预定的起始计数向上递增写计数器和/或读计数器。判断所述写计数器的计数和/或所述读计数器的计数是否已经达到预定的第一限值L,在达到预定的第一限值L时,当把数据元素写入到所述FIFO缓冲区中时,执行第一个信号通知操作或当从所述FIFO缓冲区读取数据元素时,执行第二个信号通知操作。当所述写计数器的计数和/或所述读计数器的计数已经达到所述预定的第一限值L时,把所述写计数器和/或所述读计数器重置为所述预定的起点。
依照本发明更进一步的实施例,预定的起始计数是0,预定的第一限值L是大于1的整数。
本发明的目的还可由与把数据元素写入到共享FIFO缓冲区中的所述方法相对应的、用于把数据元素写入到共享FIFO缓冲区中的设备,以及与从共享FIFO缓冲区读取数据元素的所述方法相对应的、用于从共享FIFO缓冲区读取数据元素的设备来解决。
依照本发明还提供了一种计算机系统。
附图说明
下面将参考附图更详细地阐述本发明,附图中:
图1示出了依照第一实施例的把数据元素写入到共享FIFO缓冲区中的设备的框图,
图2示出了依照第二实施例的从共享FIFO缓冲区读取数据元素的设备的框图,
图3A示出了依照现有技术把数据元素写入到FIFO缓冲区中的方法的流程图,
图3B示出了依照现有技术从FIFO缓冲区读取数据元素的方法的流程图。
具体实施方式
在第一和第二实施例中,所述FIFO缓冲区100被实现在由计算机系统中的至少两个处理器所缓存的、井通过缓存一致性协议保持一致的、所述计算机系统中的共享存储器中。读者进程和写者进程运行在不同的处理器上但都访问所述共享FIFO缓冲区100。
图1示出了依照第一实施例的、用于把数据元素写入到共享FIFO缓冲区中的设备的框图。所述设备包括输入阻塞装置10、输入装置11、第一判断装置14、写计数器12、第一信号通知装置13、第二判断装置17和第一重置装置18。
输入阻塞装置10接收对FIFO缓冲区100的输入作为输入信号,并且与输入装置11相连,输入装置11又被连接到共享FIFO缓冲区100的输入上。输入阻塞装置10还与第一判断装置14连接,第一判断装置14接收共享FIFO缓冲区100的状态作为输入信号。与输入阻塞装置10和共享FIFO缓冲区100的输入相连的输入装置11还与写计数器12相连。写计数器12还与第一重置装置18和第二判断装置17相连。第二判断装置17还与第一信号通知装置13相连。
第一判断装置14判断在FIFO缓冲区100中是否有可用的存储空间(room),可以向这些存储空间写入数据元素,并向第一阻塞装置10输出判断结果。当第一判断装置已经判断在FIFO缓冲区100中没有可用的存储空间(room)时,输入阻塞装置10阻塞到FIFO缓冲区100的输入。但是,如果第一判断装置14已经判断在所述FIFO缓冲区100中有可用的存储空间(room)时,该输入装置就把数据元素输入到FIFO缓冲区100中。此后,输入装置11通知写计数器12:已经有一个数据元素被输入到所述FIFO缓冲区100中。如果输入装置11已经通知写计数器12:已有一个数据元素被输入到所述FIFO缓冲区100中,则写计数器12递增它的计数。因此,写计数器12的计数指示已经输入到FIFO缓冲器100中的数据元素的数量。
第二判断装置17判断写计数器12的计数是否已经达到第一限值L。当写计数器12的计数已经达到第一限值L时,第二判断装置17就通知第一信号通知装置13和第一重置装置18:写计数器12的计数已经达到了第一限值L。当第一信号通知装置13已经被第二判断装置17通知:写计数器12的计数已经达到第一限值L时,它就执行第一信号通知操作。第一信号通知操作指示:现在有L个数据元素可用于被从所述FIFO缓冲区输出,即,第一信号通知操作表示与可用的L个数据元素有关的一个V-操作。
当第一重置装置18被第二判断装置通知:写计数器12的计数已经达到第一限值L时-并且优选地在第一信号通知操作执行完毕之后,第一重置装置18将写计数器12的计数重置为0。因此,在写计数器12的计数达到第一限值L之后,再次启动对第一信号通知操作的缓冲。
图2示出了依照第二实施例的、从所述共享FIFO缓冲区100读取数据元素的设备的框图。所述设备包括输出阻塞装置26、输出装置25、第三判断装置24、读计数器22、第二信号通知装置23、第四判断装置27和第二重置装置28。
输出阻塞装置26接收对FIFO缓冲区的输出请求或读请求作为输入信号,并且与输出装置25相连,输出装置25又被连接到共享FIFO缓冲区100的输出上。输出阻塞装置26还与第三判断装置24连接,第三判断装置24接收共享FIFO缓冲区100的状态作为输入信号。与输出阻塞装置26和共享FIFO缓冲区100的输出相连的输出装置25还与读计数器22相连。读计数器22还与第二重置装置28和第四判断装置27相连。第四判断装置27还与第二信号通知装置23相连。
第三判断装置24判断在FIFO缓冲区100中是否有数据元素可用于被从FIFO缓冲100读出,并向输出阻塞装置26输出判断结果。当第三判断装置24已经判断在所述FIFO缓冲区100中无可用的数据元素时,输出阻塞装置26阻塞从所述FIFO缓冲区100的输出。但是,如果第三判断装置24已经判断在所述FIFO缓冲区100中有可用的数据元素时,输出装置25从所述FIFO缓冲区100输出或提取数据元素。输出装置25通知读计数器22:已经有一个数据元素被从所述FIFO缓冲区100输出。如果输出装置25已经通知读计数器22:已有一个数据元素被从所述FIFO缓冲区100输出,则读计数器22递增其计数。因此,读计数器22的计数指示从所述FIFO缓冲器100输出的数据元素的数量,并因而指示了FIFO缓冲区100内的用于数据元素的可用存储空间的数量。
第四判断装置27判断读计数器22的计数是否已经达到第一限值L。当读计数器22的计数已经达到第一限值L时,第四判断装置27就通知第二信号通知装置23和第二重置装置28:读计数器22的计数已经达到了第一限值L。当第二信号通知装置23已经被第四判断装置27通知:读计数器22的计数已经达到第一限值L时,它就执行第二信号通知操作。第二信号通知操作指示:已经由输出装置25从FIFO缓冲区100输出了L个数据元素,并且指示:FIFO缓冲区100中现有L个存储空间可用于被填充另外的L个数据元素,即,第二信号通知操作表示对可用的L个存储空间的一个V-操作。
当第二重置装置28被第四判断装置通知:读计数器22的计数已经达到第一限值L时-并且优选地在第二信号通知操作执行完毕之后,第二重置装置28将读计数器22的计数重置为0。因此,在读计数器22的计数达到第一限值L之后,再次启动对第二信号通知操作的缓冲。
可以在基于并发处理的计算机系统或基于多任务处理的计算机系统中实现向共享FIFO缓冲区100写入数据元素的设备和从其读出数据元素的设备。
当象本发明的第一实施例所建议的那样缓冲对FIFO缓冲区100中可用的数据元素的V-操作时,由于会发生死锁,因此必须注意。例如,如果进程A向另一进程B发送令牌并随即开始等待来自进程B的回应,如果进程B由于对可用数据元素的V-操作被缓冲着直到有L个数据元素可用于从FIFO缓冲区100输出而没有得到进程A所发出的令牌的通知,则就有可能发生死锁。通过为每个进程实现一个阻塞处理器可以避免这种情况。在一个进程被阻塞(例如,因为信号量计数器为0)之后,阻塞处理器由总的进程调度器立即执行。阻塞处理器是通过执行所述第一信号通知操作来实现的,即对于它正在写入的所有FIFO缓冲区,通知FIFO缓冲区中有可用的数据元素可被读者进程读取。
现在可以进行总结,由两个处理器运行进程,它们通过存储在共享存储器内的FIFO彼此通信。互连方式通常是总线。通常,处理器包括必须通过高速缓存一致性协议保持一致的高速缓存,缓存一致性协议由处理器及互连来实现。软件通信也意味着同步:读者进程在数据可用之前不应该读,写者进程在没有空闲空间之前不应该写。本发明的目标是按比通信更粗的粒度同步读者和写者。这会导致用更少的信号量操作、更少的数据通信量来保持高速缓存一致性,并且线程调度器/操作系统对进程进行更少的阻塞和解除阻塞。

Claims (11)

1.一种基于信号量操作把数据元素写入到共享FIFO缓冲区(100)中的方法,包括以下步骤:
a)判断FIFO缓冲区(100)中是否有存储空间可以用于在其中存储数据元素;
b)如果在步骤a)中已经判断出在所述FIFO缓冲区(100)中没有可用的存储空间,就阻塞所述FIFO缓冲区(100)的输入;
c)如果在步骤a)中已经判断出在所述FIFO缓冲区(100)中存在有可用的存储空间,就把数据元素输入到FIFO缓冲区(100)中;
d)当在步骤c)中输入了一个数据元素时,递增写计数器(12)的计数,该计数指示在所述FIFO缓冲区(100)中输入的数据元素的数量;
e)当所述写计数器(12)的计数已经被增加L时,执行第一信号通知操作,其中
步骤e)中的所述第一信号通知操作指示:在步骤c)中输入到所述FIFO缓冲区(100)的L个数据元素可以用于被从所述FIFO缓冲区(100)中输出。
2.如权利要求1所述的方法,其中
所述步骤d)包括如下步骤:从预定的起始计数递增所述写计数器(12)的计数;
所述方法还包括下列步骤:
f)判断所述写计数器(12)的计数是否已经达到了预定的第一限值L,
g)在f)步骤之后,将所述写计数器(12)的计数重置到所述预定的起始点。
3.如权利要求2所述的方法,其中所述预定的起始计数是0。
4.如权利要求2或3所述的方法,其中第一限值L是大于1的整数。
5.一种基于信号量操作从共享FIFO缓冲区(100)中读取数据元素的方法,包括下列步骤:
a)判断在所述FIFO缓冲区(100)中是否有数据元素可用于被从FIFO缓冲区(100)读取;
b)如果在步骤a)中已经判断出在所述FIFO缓冲区(100)中没有数据元素可用于被从FIFO缓冲区(100)读取,就阻塞从所述FIFO缓冲区(100)的输出;
c)如果在步骤a)中已经判断出在所述FIFO缓冲区(100)中有数据元素可用于被从FIFO缓冲区(100)中读取,就从FIFO缓冲区(100)输出数据元素;
d)当在步骤c)中从所述FIFO缓冲区(100)输出一个数据元素时,就递增读计数器(22)的计数,所述计数指示已经从所述FIFO缓冲区(100)中输出的数据元素的数量;
e)当所述读计数器(22)的计数已经被增加L时,执行第二信号通知操作,其中
在步骤e)中的所述第二信号通知操作指示:在所述FIFO缓冲区(100)中有L个存储空间可用于存储L个数据元素。
6.如权利要求5所述的方法,其中
所述步骤d)还包括如下步骤:从预定的起始计数递增所述读计数器(22)的计数;
所述方法还包括下列步骤:
f)判断所述读计数器(22)的计数是否已经达到预定的第一限值L;
g)在步骤f)之后,把所述读计数器(22)的计数重置到所述预定的起始点。
7.如权利要求6所述的方法,其中所述预定的起始计数是0。
8.如权利要求6或7所述的方法,其中第一限值L是大于1的整数。
9.一种基于信号量操作把数据元素写入到共享FIFO缓冲区(100)中的设备,包括:
第一判断装置(14),用于判断在所述FIFO缓冲区(100)中是否有存储空间可用于在其中存储数据元素;
输入阻塞装置(10),用于在所述第一判断装置(14)已经判断出在所述FIFO缓冲区(100)中没有可用的存储空间时,阻塞所述FIFO缓冲区(100)的输入;
输入装置(11),用于在所述第一判断装置(14)已经判断出在所述FIFO缓冲区(100)中有可用的存储空间时,把数据元素输入到FIFO缓冲区(100)中;
写计数器(12),用于当在步骤c)中输入数据元素时,递增其计数,所述计数指示在所述FIFO缓冲区(100)中输入的数据元素的数量;
第一信号发送装置(13),用于在所述写计数器(12)的计数已经被增加了L时,执行第一信号通知操作,所述第一信号通知操作指示:输入到所述FIFO缓冲区(100)的L个数据元素可以用于被从所述FIFO缓冲区(100)中输出。
10.一种基于信号量操作从共享FIFO缓冲区(100)中读取数据元素的设备,包括:
第三判断装置(24),用于判断在所述FIFO缓冲区(100)中是否有数据元素可用于被从所述FIFO缓冲区(100)中读取;
输出阻塞装置(25),用于在所述第三判断装置(24)已经判断出在所述FIFO缓冲区(100)中没有可用的数据元素时,阻塞所述FIFO缓冲区(100)的输出;
输出装置(25),用于在所述第三判断装置(24)已经判断出在所述FIFO缓冲区(100)中有可用的数据元素时,从所述FIFO缓冲区(100)中输出数据元素;
读计数器(22),用于当所述输出装置(25)从所述FIFO缓冲区(100)输出数据元素时,递增其计数,所述计数指示从所述FIFO缓冲区(100)中输出的数据元素的数量;
第二信号通知装置(23),用于在所述读计数器(22)的计数已经被增加了L时,执行第二信号通知操作,所述第二信号通知操作指示:在所述FIFO缓冲区(100)中有L个存储空间可用于存储L个数据元素。
11.一种用于并发处理的计算机系统,包括:
依照权利要求9的、使用信号量操作把数据元素写入到共享FIFO缓冲区(100)中的设备,和/或
依照权利要求10的、使用信号量操作从共享FIFO缓冲区(100)中读取数据元素的设备。
CN02822479.5A 2001-11-13 2002-10-25 使用信号量进行fifo通信的方法和设备及计算机系统 Expired - Fee Related CN1585924B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP01204332 2001-11-13
EP01204332.9 2001-11-13
PCT/IB2002/004510 WO2003042811A1 (en) 2001-11-13 2002-10-25 Efficient fifo communication using semaphores

Publications (2)

Publication Number Publication Date
CN1585924A CN1585924A (zh) 2005-02-23
CN1585924B true CN1585924B (zh) 2010-05-26

Family

ID=8181226

Family Applications (1)

Application Number Title Priority Date Filing Date
CN02822479.5A Expired - Fee Related CN1585924B (zh) 2001-11-13 2002-10-25 使用信号量进行fifo通信的方法和设备及计算机系统

Country Status (5)

Country Link
US (1) US20040260888A1 (zh)
EP (1) EP1449061A1 (zh)
JP (1) JP2005509943A (zh)
CN (1) CN1585924B (zh)
WO (1) WO2003042811A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050097558A1 (en) * 2003-10-31 2005-05-05 De Bonet Jeremy S. System and method for a symmetric architecture for multimedia players
US8429661B1 (en) * 2005-12-14 2013-04-23 Nvidia Corporation Managing multi-threaded FIFO memory by determining whether issued credit count for dedicated class of threads is less than limit
US7913048B2 (en) * 2006-07-26 2011-03-22 International Business Machines Corporation Data subscribe-and-publish mechanisms and methods for producer-consumer pre-fetch communications
JP5381919B2 (ja) * 2010-07-09 2014-01-08 株式会社デンソー Fifoデータ読出装置
CN102799415A (zh) * 2012-06-13 2012-11-28 天津大学 一种结合信号量的文件读写并行处理方法
CN107135200A (zh) * 2017-03-29 2017-09-05 中国航空无线电电子研究所 基于fpga的高速串行总线数据发送方法
CN109830249B (zh) * 2018-12-29 2021-07-06 百度在线网络技术(北京)有限公司 数据处理方法、装置和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4623997A (en) * 1984-12-13 1986-11-18 United Technologies Corporation Coherent interface with wraparound receive and transmit memories
GB2291230A (en) * 1992-10-15 1996-01-17 Fujitsu Ltd FIFO memory device for variable length data items
EP0768600A1 (en) * 1995-10-13 1997-04-16 Compaq Computer Corporation Locked exchange Fifo
CN1154511A (zh) * 1995-11-04 1997-07-16 三星电子株式会社 输入/输出数据的规模相异的先入先出存贮器件及其方法

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US592673A (en) * 1897-10-26 tonee
US4486854A (en) * 1981-10-15 1984-12-04 Codex Corporation First-in, first-out memory system
US4725946A (en) * 1985-06-27 1988-02-16 Honeywell Information Systems Inc. P and V instructions for semaphore architecture in a multiprogramming/multiprocessing environment
JPS62172840A (ja) * 1986-01-27 1987-07-29 Hitachi Ltd デ−タの転送方式
DE3689151D1 (de) * 1986-12-30 1993-11-11 Ibm Nicht-sperrender Warteschlangenmechanismus.
CA1286421C (en) * 1987-10-14 1991-07-16 Martin Claude Lefebvre Message fifo buffer controller
JPH02300939A (ja) * 1989-05-16 1990-12-13 Toshiba Corp セマフォオペレーション方式
JPH07191944A (ja) * 1991-09-11 1995-07-28 Internatl Business Mach Corp <Ibm> 多重プロセッサによる多数の資源への命令におけるデッドロックを防止するためのシステムおよび方法
US5450546A (en) * 1992-01-31 1995-09-12 Adaptec, Inc. Intelligent hardware for automatically controlling buffer memory storage space in a disk drive
JPH064314A (ja) * 1992-06-18 1994-01-14 Nec Home Electron Ltd タスク間同期通信装置
US5365485A (en) * 1993-11-22 1994-11-15 Texas Instruments Incorporated Fifo with fast retransmit mode
US5664223A (en) * 1994-04-05 1997-09-02 International Business Machines Corporation System for independently transferring data using two independently controlled DMA engines coupled between a FIFO buffer and two separate buses respectively
US5872980A (en) * 1996-01-25 1999-02-16 International Business Machines Corporation Semaphore access control buffer and method for accelerated semaphore operations
JPH1049381A (ja) * 1996-07-04 1998-02-20 Internatl Business Mach Corp <Ibm> 複数のデータ処理要求の処理方法及び処理システム、プログラムの実行方法及びシステム
JP3733695B2 (ja) * 1997-02-05 2006-01-11 富士ゼロックス株式会社 データベース管理システム
JP3545906B2 (ja) * 1997-05-29 2004-07-21 富士通株式会社 ファイルシステム制御方法,パラレルファイルシステムおよびプログラム記憶媒体
JPH1131080A (ja) * 1997-07-11 1999-02-02 Nec Corp 動的ロックのデッドロック検出方法及び方式
JP2000293387A (ja) * 1999-04-05 2000-10-20 Nec Corp イベント通知システム
US6401149B1 (en) * 1999-05-05 2002-06-04 Qlogic Corporation Methods for context switching within a disk controller
DE60022186T2 (de) * 2000-08-17 2006-06-08 Texas Instruments Inc., Dallas Unterhaltung einer entfernten Warteschlange unter Benutzung von zwei Zählern in der Verschiebesteuerung mit Hubs und Ports
JP4477210B2 (ja) * 2000-09-27 2010-06-09 インテレクチュアル ベンチャーズ ホールディング 56 エルエルシー 情報提供システムおよび記録媒体
US20020146023A1 (en) * 2001-01-09 2002-10-10 Regan Myers Transport stream multiplexer utilizing smart FIFO-meters
US6877049B1 (en) * 2002-05-30 2005-04-05 Finisar Corporation Integrated FIFO memory management control system using a credit value

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4623997A (en) * 1984-12-13 1986-11-18 United Technologies Corporation Coherent interface with wraparound receive and transmit memories
GB2291230A (en) * 1992-10-15 1996-01-17 Fujitsu Ltd FIFO memory device for variable length data items
EP0768600A1 (en) * 1995-10-13 1997-04-16 Compaq Computer Corporation Locked exchange Fifo
CN1154511A (zh) * 1995-11-04 1997-07-16 三星电子株式会社 输入/输出数据的规模相异的先入先出存贮器件及其方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
图3-6.

Also Published As

Publication number Publication date
CN1585924A (zh) 2005-02-23
US20040260888A1 (en) 2004-12-23
WO2003042811A1 (en) 2003-05-22
JP2005509943A (ja) 2005-04-14
EP1449061A1 (en) 2004-08-25

Similar Documents

Publication Publication Date Title
CN101996147A (zh) 一种双口ram互斥访问的实现方法
CN113778785A (zh) 分布式硬件跟踪
EP0239937A2 (en) Serial communications controller
CN104978321B (zh) 构造数据队列的方法、装置及从其插入和消费对象的方法
CN1585924B (zh) 使用信号量进行fifo通信的方法和设备及计算机系统
CN106557497A (zh) 一种数据同步方法和装置
US7634610B2 (en) Reconstructing transaction order using clump tags
CN103279309A (zh) 基于fpga的ddr控制装置及方法
CN103077132A (zh) 一种高速缓存处理方法及协议处理器高速缓存控制单元
Sha et al. Real-time computing with IEEE futurebus+
TW410294B (en) Fast arbiter with decision storage
CN100470524C (zh) 一种小容量fifo存储器的数据搬移触发装置和方法
CN113791892A (zh) 数据通路仲裁方法、数据通路仲裁装置及芯片
CN103995789A (zh) 一种直接内存存取的实现系统及方法
CN101634956B (zh) 多核处理器消息调度方法及调度器
CN1258362A (zh) 通信dma装置
US20180011804A1 (en) Inter-Process Signaling Mechanism
JPS593614A (ja) 優先順位制御方式
CN101446820B (zh) 运动控制器数据通讯及其中断调度的方法和装置
JP2005509942A (ja) P及びvセマフォ操作
US6507609B1 (en) Mechanism for capturing and reporting interrupt events of different clock domains
CN1125565C (zh) 发送mpeg压缩数据的方法及装置
EP0286907B1 (en) Pulse code modulation decommutator interfacing system
Yakovlev et al. A fifo buffer with non-blocking interface
JP2856150B2 (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
ASS Succession or assignment of patent right

Owner name: NXP CO., LTD.

Free format text: FORMER OWNER: KONINKLIJKE PHILIPS ELECTRONICS N.V.

Effective date: 20070824

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20070824

Address after: Holland Ian Deho Finn

Applicant after: Koninkl Philips Electronics NV

Address before: Holland Ian Deho Finn

Applicant before: Koninklijke Philips Electronics N.V.

C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100526

Termination date: 20111025