使数据处理设备中的至少两个处理装置同步化的数据处理设备和方法制造方法及图纸

技术编号:2856926 阅读:166 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供了一种数据处理设备和使这类数据处理设备中的至少两个处理装置同步化的方法,它们允许多个读者共享相同的队列。多个读者同时访问队列管理信息不需要任何锁或特殊指令。在写入过程期间不复制数据。此外,本发明专利技术允许应用动态地重新配置单写者多读者队列,例如在运行时添加或删除读者。根据本发明专利技术,这是通过提供分支记录装置来实现的,所述分支记录装置包括用于生产者任务与第一消费者任务之间的主分支的主分支记录和用于所述生产者任务与其它消费者任务之间的次分支的次分支记录,所述分支记录存储指向存储装置的相同位置的指针和对下一个分支的引用以便获得分支记录的链表。(*该技术在2023年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及一种数据处理设备,包括至少一个处理装置,能够提供用于进一步由相同的装置或其它处理装置进行处理的数据,队列结构,包括由第一处理装置执行的生产者任务与由至少第二处理装置执行的多个消费者任务之间的至少两个分支,存储装置,用于存储将由所述消费者任务访问的数据,在所述至少两个分支之间共享所述存储装置。此外,本专利技术涉及一种使数据处理设备中的至少两个处理装置同步化的方法,至少其中一个数据处理设备能够提供用于进一步由其它处理装置处理的数据,所述方法包括以下步骤定义队列结构,所述队列结构包括由第一处理装置执行的生产者任务与由至少第二处理装置执行的消费者任务之间的至少两个分支,在所述至少两个分支之间共享用于存储待由所述消费者任务访问的数据的存储装置。目前存在用于循环队列的许多种实施方式。这些队列充当高度并行处理系统中所需的通信缓冲器。通常,在诸如共享存储器之类的存储媒体上映射这类队列。这类队列的管理信息往往包括引用存储器中的队列元素的地址位置和与队列满度有关的一些其它信息的一些读者指针和写者指针。于是,存在几种机制以确保使队列的读和写同步,也就是说读者无法从空队列中读取,而当队列满时写者无法向该队列中写入。然而,大部分所提出的队列结构以及管理和同步机制都适用于只带有单一读者和单一写者的队列。并没有很多用于单写者多读者的队列的解决方案。如果数据的确定的生产者具有多个消费者,那么一种选择是构造独立的队列(为每个消费者构造一个队列)并且为生产者将其数据复制到队列中。然而,这种复制是人们所不希望的,因为这会导致更多的存储器和带宽使用。另一种选择是遵守队列数据的一个单副本并扩展队列结构以掌握队列的不同读者的进展情况。在美国6,304,924号中,公开了一种单写者多读者形式的队列结构,其中队列具有多个读指针和相关的读者以及一个单写指针和相关的写者。此外,对于每一个读者还备份读指针的方向(向前或向后)。使用这种结构的问题就在于读者数量是固定的,也就是说当使单写者多读者队列实例化时,读者数量和读指针和方向的副本数量都是已知的且固定的。然而,出现了越来越复杂的应用,这些应用要求来自于循环队列的更大灵活性,例如能够动态地添加或删除读者。这对于已知的队列结构而言是不可能的。因此,具备基本队列结构的扩展形式没有提供未来的应用所需的灵活性。解决前述的固定读者数量的问题的一种选择就是以线性阵列来为潜在最大数量的读者在队列结构中存储管理字段,例如读指针,然后添加计数器以标明实际的读者数量。这种选择具有这样的缺点必须颇为保守地选择这个最大值,以便队列结构比当在运行时期间实际读者数量低于这个最大值时绝对所需的存储空间占用更大的存储空间。此外,用这种方法动态添加读者是很简单的,不过删除读者要花费非常多的精力。在这种情况下,首先必须通过执行线性搜索来在阵列中识别要删除的读者。接下来,必须将这个位置后面的阵列中的元素向前移动一个地方。最后,可以递减读者计数器。因此,本专利技术的一个目的是,提供一种数据处理设备,该数据处理设备提供更大的灵活性和更简单的处理,对于对循环队列结构的读者的添加和删除而言更是如此。此外,应该提供一种相应的使数据处理设备中的至少两个处理装置同步化的灵活而简单的方法。根据本专利技术,这些目的是利用如上所述的数据处理设备来实现的,进一步包括分支记录装置,包括用于所述生产者任务与第一消费者任务之间的主分支的主分支记录和用于所述生产者任务与别的消费者任务之间的次分支的次分支记录,所述分支记录存储指向所述存储装置的相同位置的指针和对下一个分支的引用,以便获得分支记录的链表。根据本专利技术,这些目的还是利用如上所述的方法来实现的,进一步包括以下步骤定义分支记录装置,其包括用于所述生产者任务与第一消费者任务之间的主分支的主分支记录和用于所述生产者任务与别的消费者任务之间的次分支的次分支记录,所述分支记录存储指向所述存储装置的相同位置的指针和对下一个分支的引用,以便获得分支记录的链表。本专利技术是以将单写者多读者循环队列表示为分支的集合的构思为基础的。如果生产者任务把相同的数据传送到几个消费者任务那里,那么在对应每个消费者任务的进程中不将所述数据复制若干次。生产者任务访问主分支的结构,所述主分支的结构是最初创建的用来与主消费者相通信的队列。这也是由主消费者任务访问的结构。尔后创建连接于别的次消费者任务的次分支,并且仅由这些消费者任务访问所述次分支。照此,生产者任务不知道消费者任务的数量,而且消费者任务彼此不了解。与上述已知解决方案相反,在所述已知解决方案当中消费者任务需要在访问队列时标识它自身,因为否则的话该队列就不知道阵列中的哪个读指针和方向属于这一特定的消费者任务,具有用于每个消费者任务的独立队列结构确保了每个消费者任务都能够访问该队列,就好象它是该队列的唯一的读者一样。照此,队列结构和访问机制不管它是单读者还是多读者都能保持同类别的。此外,因为每个消费者都看到其自己的队列结构的副本,因而对于保护任何共享数据而言任何锁或特殊保护机制都不是必须的。根据本专利技术,随着将更多消费者任务添加到队列中,备份队列结构。然而,所有它们的读指针和写指针都指向存储器中的相同位置,因此不需要数据的复制。根据本专利技术,由于每个分支都具有独立的队列结构,因而需要一种机制来链接队列结构以形成单写者多读者的队列结构。为此目的,定义包括主次分支记录的分支记录装置,每个分支记录都具有“nextbranch”字段,该字段是对下一个次分支的引用或指针。由此,获得分支的链表。现在可以通过向主分支添加分支来把读者添加到队列中。如权利要求10中所述的那样,遍历链表直到到达链表尾部,然后将新的分支队列结构追加到链表中。照此,能够添加潜在数量不受限的读者。在从属权利要求中限定了本专利技术的优选实施例。为了能分别从单写者多读者队列中动态地删除读者或分支,一种选择就是每当检查分支结构指针时从主分支开始并再次遍历列表。当遇到将要删除的分支时,只须来通过用到后继分支的引用替换先趋分支的“nextbranch(下一分支)”字段来更新列表。然而,如根据权利要求2的优选实施例所述的那样,如果它应该能够直接地删除分支,就好象它是正常队列(单写者单读者)一样而不必遍历列表,然后在所述队列结构中还需要“prevbranch(前一分支)”字段,以标明列表中的在前分支。因此,获得分支的双链表。当删除确定的分支时,如根据权利要求11的优选实施例所述的那样,可以通过以下步骤来更新列表查找在前分支并用已删除分支的后继分支替换“nextbranch”字段,以及查找下一个分支并用已删除分支的先趋分支来替换其“prebranch”字段。在权利要求12中限定了用于从队列结构中删除主分支的优选实施例。在权利要求3和4中限定了使用用于标示队列中生产者任务的位置和生产者任务的位置的写者指针和读者指针或写者计数器和读者计数器的数据处理设备的优选实施例。在权利要求6到9中描述了使至少两个处理装置同步化的方法的优选实施例,所述优选实施例分别描述了由生产者任务进行的向队列中写入数据项和由特定消费者任务进行的从队列中读取数据项及其对指针或计数器的影响以及对队列满度的影响,其中可以将队列满度发信号通知给消费者任务和生产者任务。现在将参照附图本文档来自技高网...

【技术保护点】
一种数据处理设备,包括:-至少一个处理装置,能够提供由相同的或其它的处理装置进一步处理的数据,-队列结构,包括由第一处理装置执行的生产者任务与由至少第二处理装置执行的多个消费者任务之间的至少两个分支,-存储装置,用于 存储由所述消费者任务访问的数据,所述存储装置在所述至少两个分支之间共享,-分支记录装置,包括用于所述生产者任务与第一消费者任务之间的主分支的主分支记录和用于所述生产者任务与其它消费者任务之间的次分支的次分支记录,所述分支记录存储指向 所述存储装置的相同位置的指针和对下一个分支的引用以便获得分支记录的链表。

【技术特征摘要】
EP 2002-10-15 02079296.61.一种数据处理设备,包括-至少一个处理装置,能够提供由相同的或其它的处理装置进一步处理的数据,-队列结构,包括由第一处理装置执行的生产者任务与由至少第二处理装置执行的多个消费者任务之间的至少两个分支,-存储装置,用于存储由所述消费者任务访问的数据,所述存储装置在所述至少两个分支之间共享,-分支记录装置,包括用于所述生产者任务与第一消费者任务之间的主分支的主分支记录和用于所述生产者任务与其它消费者任务之间的次分支的次分支记录,所述分支记录存储指向所述存储装置的相同位置的指针和对下一个分支的引用以便获得分支记录的链表。2.如权利要求1所述的数据处理设备,其中所述次分支记录还存储对在前分支的引用以便获得分支记录的双链表。3.如权利要求1所述的数据处理设备,其中每个所述分支记录都包括标示生产者任务在队列中的位置的写者指针和标示消费者任务在队列中的位置的读者指针,所述写者指针对于所有分支记录都是相同的。4.如权利要求1所述的数据处理设备,其中每个所述分支记录都包括标示生产者任务在队列中的位置的写者计数器和标示消费者任务在队列中的位置的读者计数器,所述写者计数器对于所有分支记录都是相同的。5.一种使数据处理设备中的至少两个处理装置同步化的方法,至少其中一个数据处理设备能够提供由其它处理装置进一步处理的数据,所述方法包括以下步骤-定义队列结构,所述队列结构包括由第一处理装置执行的生产者任务与由至少第二处理装置执行的消费者任务之间的至少两个分支,-共享存储装置,所述存储装置用于存储由所述至少两个分支之间的所述消费者任务访问的数据,-定义分支记录装置,所述分支记录装置包括用于所述生产者任务与第一消费者任务之间的主分支的主分支记录和用于所述生产者任务与其它消费者任务之间的次分支的次分支记录,所述分支记录存储指向所述存储装置的相同位置的指针和对下一个分支的引用以便获得分支记录的链表。6.如权利要求5所述的方法,还包括以下步骤-从所述主分支记录中读取写者指针或写者计...

【专利技术属性】
技术研发人员:IC康
申请(专利权)人:皇家飞利浦电子股份有限公司
类型:发明
国别省市:NL[荷兰]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利