CN102804158B - 总线架构及从至少一从设备向多个主路径发送数据的方法 - Google Patents

总线架构及从至少一从设备向多个主路径发送数据的方法 Download PDF

Info

Publication number
CN102804158B
CN102804158B CN201180014825.3A CN201180014825A CN102804158B CN 102804158 B CN102804158 B CN 102804158B CN 201180014825 A CN201180014825 A CN 201180014825A CN 102804158 B CN102804158 B CN 102804158B
Authority
CN
China
Prior art keywords
equipment
data
optimizer
main
bus
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.)
Active
Application number
CN201180014825.3A
Other languages
English (en)
Other versions
CN102804158A (zh
Inventor
J·梅雷迪思
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.)
Imagination Technologies Ltd
Original Assignee
Imagination Technologies Ltd
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 Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Priority to CN201510184505.2A priority Critical patent/CN104834614B/zh
Priority to CN201510184516.0A priority patent/CN104794076B/zh
Publication of CN102804158A publication Critical patent/CN102804158A/zh
Application granted granted Critical
Publication of CN102804158B publication Critical patent/CN102804158B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1621Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by maintaining request order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/18Handling requests for interconnection or transfer for access to memory bus based on priority control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • G06F13/364Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using independent requests or grants, e.g. using separated request and grant lines

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Small-Scale Networks (AREA)

Abstract

本发明涉及用于在总线架构中处理请求和发送数据的改进方法。本发明进一步涉及用于处理请求和数据的改进的总线架构。提供了一种用于在总线架构中经由总线从至少一个从设备向多个主路径发送数据的方法,所述架构包括用于对来自所述至少一个从设备的数据进行缓冲的缓冲器,其中所述总线的时钟频率高于每个主路径的时钟频率,所述方法包括以下步骤:a)在所述缓冲器中维护用于从所述从设备接收到的数据的每个主路径的数据队列;b)以循环的方式选择在所述缓冲器中每个主路径队列的前端的数据包;以及c)经由所述总线发送所选择的数据包到所述所选择的数据包所指向的主路径。

Description

总线架构及从至少一从设备向多个主路径发送数据的方法
技术领域
本发明涉及用于总线架构中处理请求和发送数据的改进方法。本发明还涉及用于处理请求和数据的改进的总线架构。
背景技术
众所周知,许多计算系统采用经由总线将一个或多个主设备连接至一个或多个从设备的架构。主设备和从设备可以包括通用处理器、内存控制器、接口芯片、输入输出设备和其它处理数据请求的集成电路。越来越多的这种总线结构被集成在片上系统(SoC(SystemonChip))设备中。
这种总线结构的示例如图1所示。多个主设备101经由总线103连接至多个从设备105a、105b。在图1中,从设备105a是内部从装置而从设备105b是外部从装置。图1中的结构还包括仲裁器107、分配器109和优化器111a、111b。仲裁器允许两个或更多主设备被连接至一个从设备。由仲裁器执行总线使用权的优先级的仲裁。分配器允许一个主设备被连接至两个或更多从设备。至相关从设备的总线业务的路由通过地址译码而执行。如果目标从设备不可用(例如,断电或无法操作),则可以通知分配器并且从设备的业务可以在分配器中被处理。优化器允许从设备的业务被缓冲和重新分配以提高对从设备的访问的效率。它们充当特定从设备的智能缓冲器。在图1中,优化器111a是用于内部从设备105a的内部优化器而优化器111b是用于外部从设备105b的外部优化器。图1中的优化器在总线的外部示出。但是,由于优化器是总线和从设备之间的链接,可以认为它们作为总线的一部分或作为从设备的一部分。通常,优化器的输入端支持总线请求和总线协议,而优化器的输入端支持总线请求和总线协议,而优化器的输出端支持从请求。总线结构的特定架构可以具有多种形式而图1是相对简单的示例。主设备和从设备之间的通道可以非常有利地被实施以用于主设备的访问模式和请求。
在图1中,将具有输入请求的缓冲器功能的优化器111a、111b分别就近提供至从装置105a、105b。这具有多个优点。当目标从装置具有无法回应的时期时,输入请求可以被收集至优化器中。当访问被允许时,这允许请求被排序以提高从设备访问的效率。当用于特定主设备的缓冲将要满时,附加的信号传输还从优化器提供至主设备以发出警告。这使优化器能够停止特定主设备的请求业务,在优化器缓冲器满时阻止了在优化器外等待的请求。在优化器外等待的请求可能阻塞到目标从设备的所有其它访问(尽管缓冲可以被单独提供至每个主设备),并且可能导致连接总线结构阻止任何请求移动直到情况解决。当缓冲器将要变满且优化器请求主设备停止发送业务时,在总线架构中可能仍旧存在相关于该主设备的请求业务。另外,主设备可以在请求停止业务后继续发送预定数量的请求。这意味着来自优化器的停止指示必须在缓冲器填满之前被激活,以确保一直存在足够的缓冲空间来接收正在进行的业务。
在如图1所示的总线架构中,主设备不需要具有从设备目标访问的任何特殊知识。这导致由主设备预期的排序需求的请求在总线架构中被处理。存在由主设备发出的请求在一系列问题中将被操作的预期。对于写入请求,在当前的实施中,没有反馈至请求写入的主设备,所以排序需求被支持以用于每个特定从设备目标。但是,对于读取取请求,返回数据必须以预期的顺序到达,所以需要控制以确保其正确地发生。随着集成在SoC装置中的总线架构的数量的增加,更复杂的总线结构被要求以允许每个总线在请求的执行级别操作其业务。
发明内容
根据本发明的第一方面,提供了一种用于处理总线架构中的读取请求的方法,该总线架构包括经由总线连接到至少两个从设备的至少一个主设备,该结构体系包括用于每个从设备的优化器,每个优化器用于对各自的从设备的输入请求进行缓冲,该方法包括以下步骤:a)主设备向总线发送对第一从设备的读取请求;b)生成与读取请求相关联的优先级指示符;c)生成与读取请求相关联的当前状态指示符,该当前状态指示符具有初始值;d)发送读取请求、优先级指示符和当前状态指示符至第一从设备的优化器;e)第一从设备的优化器接收读取请求、优先级指示符和当前状态指示符;以及i)如果当前状态指示符的初始值等于优先级指示符的值,则处理读取请求;或者ii)如果当前状态指示符的初始值不等于优先级指示符的值,则暂时推迟读取请求的处理。
通过生成优先级指示符和具有特定初始值的当前状态指示符,读取请求将仅在其适于被处理时才被处理。因此,从读取请求返回的数据可以以与发出读取请求相同的顺序被返回。如果读取请求依赖于一个或多个已经完成的较早的请求,则这可能是重要。如果某些读取路径具有不同于其他读取路径的延迟,则这也可能是重要的。另外,这通常是主设备在总线上传送请求的基本要求。所生成的当前状态指示符示出了与正在考虑的待处理的读取请求相关的任何时间的总线业务的当前状态。当前状态指示符的初始值可以根据读取请求是否依赖于总线架构中已经完成的其他请求以及那些请求的任何一个请求是否已经完成来进行选择。当然,如果读取请求不依赖于已经完成的任何其他请求,则当前状态指示符的初始值可以被简单地设置成等于优先级指示符的值。优先级指示符的值可以根据读取请求是否依赖于总线架构中已经完成的其他请求来进行选择。
优选地,该架构包括用于分配从主设备至目标从设备的输入请求的分配器。在那种情况下,分配器可以执行生成与读取请求相关联的优先级指示符的步骤b)。分配器可以执行生成与读取请求相关联的当前状态指示符的步骤c)。分配器可以执行发送读取请求、优先级指示符和当前状态指示符至第一从设备的优化器的步骤d)。分配器可以如上文所述选择当前状态指示符的初始值。可替换地,主设备可以执行生成与读取请求相关联的优先级指示符的步骤b)。主设备可以执行生成与读取请求相关联的当前状态指示符的步骤c)。
每个从设备的优化器充当从设备的智能缓冲器。其一方面满足总线需求而另一方面满足从设备需求。优化器可以作为总线的一部分或从设备的一部分被实施。优选地,第一从设备的优化器维护输入请求的队列。优选地,仅当读取请求到达优化器队列的前端时执行步骤i)或ii)。在这种情况下,暂时推迟读取请求的处理的步骤可以包括将读取请求移动至队列的较低位置。
优先级指示符可以采取任何合适的格式。在优选实施方式中,优先级指示符包括添加到读取请求并与读取请求一起被传送的一个或多个比特的数据。在可替代的实施方式中,优化器指示符包括分别在读取请求之前或跟随读取请求来自读取请求所传送的一个或多个比特的数据或数据信号。类似地,当前状态指示符可以采取任何合适的格式。在优选实施方式中,当前状态指示符包括分别在读取请求之前或者跟随读取请求来自读取请求所传送的一个或多个比特的数据或数据信号。在可替代的实施方式中,当前状态指示符包括添加到读取请求并与读取请求一起被传送的一个或多个比特的数据。
在优选实施方式中,该方法进一步包括以下步骤:发送当前状态指示符的更新值至第一从设备的优化器;以及如果当前状态指示符的更新值等于优先级指示符的值,则处理读取请求。
另外,如果当前状态指示符的更新值不等于优先级指示符的值,则读取请求的处理可以被推迟,例如,被暂时暂停。暂时推迟读取请求的处理的步骤可以包括将读取请求移动至由优化器维护的队列的较低位置。
如果该架构包括分配器,则分配器可以执行发送当前状态指示符的更新值至第一从设备的优化器的步骤。
该方法可以包括不止一次地发送当前状态指示符至第一从设备的优化器。这可以由分配器执行。例如,分配器可以反复地发送当前状态指示符的初始值至第一从设备的优化器。类似地,该方法可以包括不止一次地发送当前状态指示符的更新值至第一从设备的优化器。这可以由分配器执行。例如,分配器可以重复发送当前状态指示符的更新值至第一从设备的优化器。该方法可以包括重复发送当前状态指示符的(不同的)更新值至第一从设备优化器,直到当前状态指示符的值等于优化器指示符的值,以便读取请求可以被处理。这可以由分配器执行。那些不同的更新值的每一个更新值可以不止一次地被发送。
在具体的优选实施方式中,读取请求依赖于一个或多个已经完成的较早的读取请求,并且该方法进一步包括:监测一个或多个较早的读取请求的数据的返回;以及响应于一个或多个较早的读取请求的数据的接收来发送当前状态指示符的更新值至第一从设备的优化器。
如果该架构包括分配器,该分配器可以执行监测一个或多个较早的读取请求的数据返回的步骤。分配器可以执行响应于一个或多个较早的读取请求的数据的接收来发送当前状态指示符的更新值至第一从设备的优化器的步骤。
该方法可以包括重复发送当前状态指示符的更新值至第一从设备的优化器,每次响应于一个或多个较早的读取请求的数据的接收进行发送,直到当前状态指示符的值等于优先级指示符的值,以便读取请求可以被处理。这可以由分配器执行。
该总线架构可以包括不止一个的分配器。在那种情况下,当前状态指示符的初始值可以由特定分配器根据另一分配器选择的优先级指示符的值或当前状态指示符的值进行选择。类似地,当前状态指示符的更新值可以由特定分配器根据另一分配器选择的优先级指示符的值或当前状态指示符的值进行选择。类似地,优先级指示符的值可以由特定分配器根据由另一分配器选择的优先级指示符的值或当前状态指示符的值进行选择。指示符的值之间的精确关系将依赖于总线架构的特性以及特定读取请求所依赖的较早的一个或多个请求。
在一种实施方式中,优先级指示符的值等于读取请求所依赖的较早的读取请求的数量并且当前状态指示符的初始值为0,以及该方法进一步包括:当接收到一个较早的读取请求的数据时,将当前状态指示符的值增加一以形成更新值。这可以由分配器执行。
在那种配置中,当一个较早读取请求已经完成时,增加当前状态指示符的值。因此,当所有的较早的读取请求已经被处理时,当前状态的指示符的值将已经被足够地增加以便当前状态指示符的值和优先级指示符的值相等。随着增加当前状态指示符的值,每当存在更新值时,该更新值可以被发送至优化器。可替换地,组件,例如分配器可以简单地追踪内部增量,并仅发送某些更新值至优化器,例如仅发送等于优化器指示符的值的更新值。
可替换地,优化器指示符的值可以等于零并且当前状态指示符的初始值可以等于读取请求所依赖的较早的读取请求的数量,以及该方法可以进一步包括:当接收到一个较早的读取请求的数据时,将当前状态指示符的值减少一以形成更新值。这可以由分配器执行。
在那种配置中,当一个较早的读取请求已经完成时,当前状态指示符的值被减少。因此,当所有较早的读取请求已经被处理时,当前状态指示符的值将被减少至零并将等于优先级指示符的值,以便读取请求可以被处理。随着当前状态指示符的值的减少,每个和各个更新值可以被发送至优化器。可替换地,组件,例如分配器可以简单地追踪内部减量,并仅发送某些更新值至优化器,例如,仅发送等于优化器指示符的值的更新值。
根据本发明的第一方面,还提供了总线架构,该总线架构包括:用于将至少一个主设备与至少两个从设备连接的总线;以及用于每个从设备的优化器,每个优化器用于对各自的从设备的输入请求进行缓冲;其中总线被配置成接收来自主设备的对从设备的读取请求;其中架构被配置成生成与每个读取请求相关联的优先级指示符并生成与每个读取请求相关联的当前状态指示符;以及其中每个优化器被配置成在当前状态指示符的当前值等于优先级指示符的值时处理读取请求并在当前状态指示符的当前值不等于优先级指示符的值时暂时推迟读取请求的处理。
在优选的配置中,该架构包括用于将来自主设备的输入请求分配至目标从设备的分配器。在那种情况下,优选地,分配器被配置成生成优先级指示符或当前状态指示符或二者。
优选地,该架构进一步被配置成设置当前状态指示符的初始值并随后设置当前状态指示符的一个或多个更新值。这可以由分配器执行。
在一个实施方式中,由主设备发送的读取请求依赖于已经完成的一个或多个较早的读取请求,并且该架构进一步被配置成监测一个或多个较早的读取请求的数据的返回并响应于一个或多个较早的读取请求的数据的接收而设置当前状态指示符的更新值。这可以由分配器执行。
描述的关于本发明该方面的方法的特征还可以应用于本发明该方面的架构,以及描述的关于本发明该方面的架构的特征还可以应用于本发明该方面的方法。
根据本发明的第二个方面,提供了一种用于处理总线架构中的请求的方法,该总线架构包括经由总线连接到至少一个从设备的至少两个主设备,该架构包括用于所述或每个从设备的优化器,每个优化器用于对各自的从设备的输入请求进行缓冲,该方法包括以下步骤:a)至少两个主设备的第一主设备向总线发送对从设备的写入请求;b)生成与写入请求相关联的栅栏指示符(fenceindicator),该栅栏指示符指示至从设备的写入请求应该在随后从主设备的至少第一主设备向任何从设备发出的请求开始之前完成;c)发送栅栏指示符至所述或每个优化器;d)每个优化器处理在栅栏指示符所关联的写入请求之前发出的所有优化器的请求,并且写入请求指向的从设备的优化器还处理写入请求自身,并且每个优化器推迟对在栅栏指示符所关联的写入请求之后从至少第一主设备发出的任何请求的处理;以及e)一旦在栅栏指示符所关联的写入请求之前发出的所有优化器的请求已经被处理,以及在优化器是写入请求指向的从设备的优化器的情况下,一旦在栅栏指示符所关联的写入请求之前发出的所有优化器的请求和写入请求自身已经被处理,则每个优化器输出完成指示符。
因为写入请求通常不需要任何返回数据以指示何时写入操作已经被完成,所以对于总线组件不可能知道何时数据已经被写入。通过生成栅栏指示符,能够确保在随后发出的请求上读取取正确的数据,其中,栅栏指示符指示对从设备的写入请求应该在随后从主设备发出的请求开始之前被完成。也就是说,请求可以按正确的顺序被执行。一旦所有考虑的写入请求之前的所有请求和该写请求自身已经被处理,则这由完成指示符进行指示。
优选地,该架构包括用于分配从主设备至目标从设备的输入请求的分配器。在这种情况中,分配器可以执行生成栅栏指示符的步骤b)。该分配器可以执行发送写入请求和栅栏指示符至所述或每个优化器的步骤c)。这可以通过在所有分配器输出端口上简单地发出写入请求和栅栏指示符。可替换地,发送写入请求的主设备可以执行生成栅栏指示符的步骤b)。
所述或每个从设备的优化器充当从设备的智能缓冲器。其一方面满足总线需求而另一方面满足从设备需求。每个优化器可以作为总线的一部分或从设备的一部分被实施。优选地,优化器维护其从设备的输入请求的队列。
在一个实施方式中,栅栏指示符指示对从设备的写入请求应该在随后仅从第一主设备发出的对任何从设备的请求开始之前完成。当架构包括允许从一个主设备至另一个主设备的访问时,该操作可以是有效的。在那种配置中,仅在经由访问从设备接收到来自第一主设备的请求之后第二主设备可以开始读取请求。第一主设备可以发出栅栏指示符所关联的写入请求之后的请求。
可替换地,栅栏指示符可以指示对从设备的写入请求应该在随后从某些或所有主设备发出的对任何从设备的请求开始之前完成。当主设备在未给其他主设备提示或未与其他主设备通信的情况下而发出各种读取和写入请求时,该操作可以是有效的。
栅栏指示符可以采用任何合适的格式。在一个实施方式中,栅栏指示符包括添加至写入请求并与写入请求一起被传送的一个或多个比特的数据。在那种情况中,栅栏指示符可以代替写入请求中的地址信息。在可替代的实施方式中,栅栏指示符包括一个或多个比特的数据,或者数据信号,其分别在写入请求之前或者在写入请求之后被根据写入请求传送。
完成指示符也可以采用任何合适的格式,在一个实施方式中,完成指示符包括从优化器被传送的一个或多个比特的数据,或者数据信号。实际上,正如当写入请求是读取请求,完成指示符充当返回数据。与普通的写入请求相比其不需要返回数据。
优选地,该方法进一步包括,一旦来自所有优化器的完成指示符已经被输出,则指示每个优化器继续处理在栅栏指示符所关联的写入请求之后发出的在步骤d)被推迟处理的任何请求。
如上文所述,优选地,架构包括用于分配从主设备到目标从设备的输入请求的分配器。在那种情况中,优选地,当完成指示符被输出时通过分配器接收完成指示符分配器可以监测完成指示符的输出。另外,一旦分配器已经接收到来自所有优化器的完成指示符,则分配器可以指示每个优化器继续处理任何被推迟的请求。
在特定的优选实施方式中,架构包括用于分配从主设备至目标从设备的输入请求的分配器,以及该方法进一步包括:分配器监测完成指示符的输出;且一旦分配器已经接收到来自所有优化器的完成指示符,则分配器指示每个优化器继续处理在栅栏指示符所关联的写入请求之后发出的在步骤d)被推迟处理的任何请求。
优选地,指示每个优化器继续处理在栅栏指示符所关联的写入请求之后发出的已经在步骤d)被推迟处理的任何请求的步骤包括发送指示符到每个优化器。该指示符可以采用任何合适的格式。在一个实施方式中,指示符包括添加至写入请求并与写入请求一起被传送的一个或多个比特的数据。在该实施方式中,数据位的状态优选地指示优化器是否应该继续处理。例如,第一状态可以指示优化器应该推迟在栅栏指示符所关联的写入请求之后从至少第一主设备发出的任何请求。第二状态可以指示优化器应该继续处理在栅栏指示符所关联的写入请求之后发出的已经被推迟处理的任何请求。
在可替换地实施方式中,指示符包括分别来自写入请求所传送的一个或多个比特的数据,或数据信号。在那种实施方式中,仅当完成指示符已经被输出时,指示符可以被发送。在那种情况下,数据位或数据信号的存在指示优化器应该继续处理。
在一个实施方式中,栅栏指示符的值等于优化器的数量并且进行指示符的初始值为零。该方法可以进一步包括:如果栅栏指示符的值不等于进行指示符的值,则优化器推迟对在栅栏指示符所关联的写入请求之后发出的任何请求的处理,但是如果栅栏指示符的值等于进行指示符的值,则重新进行对在栅栏指示符所关联的写入请求之后发出的任何请求的处理。该方法可以进一步包括每当从优化器接收到完成指示符时,分配器将进行指示符的值增加一以形成更新值。然后,当所有完成指示符已经被接收到后,进行指示符的更新值等于栅栏指示符的值。
在可替代的实施方式中,进行指示符的初始值等于优化器的数量并且栅栏指示符的值为零。该方法可以进一步包括:如果栅栏指示符的值不等于进行指示符的值,则优化器推迟对在栅栏指示符所关联的写入请求之后发出的任何请求的处理,但是如果栅栏指示符的值等于进行指示符的值,则重新进行对在栅栏指示符所关联的写入请求之后发出的任何请求的处理。该方法可以进一步包括每当从优化器接收到完成指示符时,分配器将进行指示符的值增加一以形成更新值。然后,当所有完成指示符已经被接收到时,进行指示符的更新值等于零并等于栅栏指示符的值。
优选地,总线架构包括至少两个从设备,至少一个从设备是用于一个主设备的路由器以访问另一主设备。
根据本发明的第二方面,还提供了一种总线架构,该总线架构包括:用于将至少两个主设备与至少一个从设备连接的总线;以及用于所述或每个从设备的优化器,每个优化器用于对各自的从设备的输入请求进行缓冲;其中总线被配置成接收来自主设备的对从设备的写入请求;其中架构被配置成生成与至少某些写入请求相关联的栅栏指示符,该栅栏指示符指示对于从设备的写入请求应该在随后从主设备的至少第一主设备发出的请求开始之前完成;其中每个优化器被配置成在接收到栅栏指示符之后处理在栅栏指示符所关联的写入请求之前发出的所有优化器的请求,并推迟对在栅栏指示符所关联的写入请求之后发出的任何请求的处理,以及,一旦在栅栏指示符所关联的写入请求之前发出的所有优化器的请求已经被处理,则输出完成指示符;其中写入请求指向的从设备的优化器还被配置成在接收到栅栏指示符之后处理写入请求自身,并且一旦在栅栏指示符所关联的写入请求之前发出的所有优化器的请求和写入请求自身已经被处理,则输出完成指示符。
在优选的配置中,架构包括用于分配从主设备到从设备的输入请求的分配器。在那种情况中,优选地,分配器被配置成生成栅栏指示符。
优选地,该架构被配置成监测完成指示符的输出并在接收到来自所有优化器的完成指示符后指示每个优化器继续处理在栅栏指示符所关联的写入请求之后发出的已经被推迟处理的任何请求。这可以由分配器执行。
上述与本发明该方面的方法相关的特征也可以被应用于本发明该方面的架构,以及上述与本发明该方面的架构相关的特征也可以被应用于本发明该方面的方法。
根据本发明的第三个方面,提供了一种用于在总线架构中经由总线从至少一个从设备发送数据到多个主路径的方法,该架构包括用于对来自至少一个从设备的数据进行缓冲的缓冲器,其中总线的时钟频率比每个主路径的时钟频率更高,该方法包括以下步骤:a)在缓冲器中维护用于从从设备接收到的数据的每个主路径的数据队列;b)以循环方式选择在缓冲器中每个主路径队列的前端的数据包;以及c)经由总线发送所选择的数据包到该数据包所指向的主路径。
因为数据被以循环方式从主路径队列中选择,而不是作为多组数据被一起发送至单个主路径,所以对每个主路径的访问尽可能地接近最大容量。因此数据传输受每个主路径较低时钟频率限制的机会被减少。循环方式意味着每个队列被轮流选择以用于其在第一个数据包的发送。如果在特定数据队列中没有数据,则下一个队列被选择。
每个主路径可以通向单个主设备或多个主设备。如果每个路径通向单个主设备,则该方法包括用于在总线架构中经由总线从至少一个从设备发送数据到多个主设备的方法,该架构包括用于对来自至少一个从设备的数据进行缓冲的缓冲器,其中总线的时钟频率高于每个主设备的时钟频率,该方法包括以下步骤:a)在缓冲器中维护用于从从设备接收的数据的每个主设备的数据队列;b)以循环方式选择在缓冲器中的每个主设备队列的前端的数据包;以及c)经由总线发送所选择的数据包到其指向的主设备。优选地,每个主设备具有用于从总线发送数据到主设备的单通路。
优选地,总线包括用于仲裁总线使用权的优先级的仲裁器。优选地,总线架构包括用于至少一个从设备的至少一个优化器,该优化器用于对来自各自从设备的数据进行缓冲。优选地,缓冲器在优化器中。优选地,缓冲器形成优化器RAM的一部分。
优选地,从至少一个从设备发送到主路径的数据响应于在该主路径上来自主设备的读取请求而被发送。也就是说,该方法优选地用于响应于多个主设备发出的读取请求在总线架构中从至少一个从设备发送数据到多个主设备。
在那种情况下,优选地该架构包括用于对来自主设备的对至少一个从设备的请求进行缓冲的缓冲器。该缓冲器可以与用于对来自至少一个从设备的数据进行缓冲的缓冲器分开或与其集成。优选地,总系架构包括优化器以及在优化器中的所述或每个缓冲器。
根据特定的优选实施方式,该方法进一步包括以下步骤:对从多个主路径上的多个主设备到至少一个从设备的读取请求进行缓冲;以及根据缓冲器中维护的主路径的数据队列的长度选择读取请求发送到至少一个从设备。
优选地,该选择由用于至少一个从设备的至少一个优化器完成。优选地,根据缓冲器中维护的主路径的数据队列的长度选择读取请求送到至少一个从设备的步骤包括优先来自那些具有缓冲器中维护的最短数据队列的路径的主设备的读取请求。该目的是为了保持缓冲器中维护的数据队列对于所有主路径近似平等。这允许对每个主路径尽可能接近最大容量的访问。
在优选的配置中,总线的时钟频率比主路径的时钟频率大一个倍数,该倍数等于或小于主路径的数量。这允许每个主路径能够使用最大频率。
如果总线的时钟频率比主路径的时钟频率大一个倍数,该倍数等于主路径的数量,则在所有数据队列满的情况下将可达到最大频率。也就是说,如果在每个主路径队列中一直存在数据包且总线的时钟频率比主路径的时钟频率大一个倍数,且该倍数等于主路径的数量,则较低时钟频率的使用将被最大化。因此,这可以被优选地配置,如果有可能在各个队列中一直存在用于所有主路径的数据。
但是,如果总线的时钟频率比主路径的时钟频率大一个倍数,且该倍数小于主路径的数量,在所有数据队列满的情况下,则最大容量将不能使用。但是,如果一个或多个数据队列不具有数据包传送,访问将变得较接近最大容量。因此,这可以被优选地配置,如果队列长度中可能存在本质的不同,例如如果某些主设备可能发送到从设备的请求大大地多于其他主设备,而因此某些主路径将接收来自从设备的数据大大地多于其他的主路径。
根据本发明的第三方面,还提供了一种总线架构,该总线架构包括:用于将多个主路径与至少一个从设备连接的总线,所述总线的时钟频率高于在每个主路径的时钟频率;以及用于对来自至少一个从设备的数据进行缓冲的缓冲器;其中总线被配置成维护缓冲器中用于从从设备接收到的数据的每个主路径的数据队列;以循环方式选择在缓冲器中每个主路径队列的前端的数据包;以及发送所选择的数据包到其指向的主路径。
优选地,响应于来自主路径上的主设备的读取请求从从设备接收到的数据被从从设备发送。
优选地,总线架构进一步包括用于至少一个从设备的优化器,该优化器被配置成根据缓冲器中维护的主路径的数据队列的长度选择读取请求发送到至少一个从设备。
描述的关于本发明该方面的方法的特征也可以被应用于本发明该方面的架构,而描述的关于本发明该方面的架构的特征也可以被应用于本发明该方面的方法。
描述的本发明的一个方面的特征也可以被应用于本发明的其他方面。
附图说明
图1示出了已经描述的已知的总线架构的示例。现在本发明的示例性实施方式将参照图2a、2b、3a、3b、4a、4b和4c进行描述,其中:
图2a是可能发生读取取延迟问题的示例性总线架构的示图;
图2b是示出了根据本发明第一方面的实施方式的在图2a的架构中的组件之间进行数据发送的原理图;
图3a是可能发生数据一致性问题的示例性总线架构的示图;
图3b是示出了根据本发明第二方面的实施方式的在图3a的架构中的组件之间进行数据发送的原理图;
图4a是由于不同的时钟频率可能发生瓶颈问题的示例性总线架构的示图;
图4b是示例性总线架构的示图,还示出了组件之间的数据发送,该架构是图4a的架构的改进;以及
图4c是示出了根据本发明第三方面的实施方式的在图4a或4b的架构中的组件之间进行数据发送的原理图。
具体实施方式
图2a示出了可能发生读取取延迟问题的示例性总线架构的示例。该架构包括主设备201,该主设备201经由分配器209和分别用于从设备205a、205b的优化器211a、211b连接至两个从设备205a、205b。从主设备201到优化器211a和从设备205a的读取取路径是低延迟读取取路径,而从主设备201到优化器211b和从设备205b的读取取路径是高延迟读取取路径。也就是说,以从设备205b为目标的读取请求将比以从设备205a为目标的读取请求承受更长的延时。
参照图2a,如果主设备201向从设备205b发出读取请求B,并向从设备205a发出随后的读取请求A,则两个请求将同时在系统中被挂起。总线架构必须允许主设备发出的所有请求在没有阻塞的情况下传递至优化器,所以该架构没有能力通过阻塞主设备发出的读取请求传递至优化器而控制读取顺序。对于图2a中所示的配置,其中从主设备201到优化器211a的读取路径具有比到优化器211b更低的延迟,读取的数据可能以读取请求的顺序的倒序方式返回。这可能导致主设备201不能正确地进行操作。
此类问题可能在任何数量的架构中发生,例如,其中不同的读取路径承受不同的延迟。将经常存在这种情况,例如,在一个从设备为片上设备,即内部从属,而另一个从设备为片外设备,即外部从属的时候。图2a是相对简单的示例。
根据本发明的实施方式,通过在读取请求从主设备传递至优化器时分配器添加指示符至该读取请求来解决该问题。这被示意性地示出在图2b中。首先,读取请求220被从主设备201发送到分配器209。在图2b中,读取请求220以24比特的请求示出,但是对于读取请求任何合适的格式都可以被采用。读取请求应该包括地址信息和任何其他的请求信息。然后,在该实施方式中,分配器209将指示符添加至读取请求220。在该实施方式中,该指示符被称为“保持信号(holdsignal)”222。在图2b中,保持信号222作为附加至读取请求220的2比特示出,但是对于指示符和对于读取请求和指示符的结合的任何合适的形式都可以被采用。实际上,保持信号可以不添加到读取请求而可以单独被传送。另外,尽管图2b示出了生成保持信号的分配器209,实际上保持信号可以由架构中的任何组件生成,包括由最初发送读取请求的主设备生成。保持信号222指示读取请求的校验或优先级。因为保持信号有效地指示了读取请求的属性,所以优选的配置是保持信号被添加至读取请求并与读取请求一起被传送,如图2b所示。
另外,在该实施方式中,和传送被添加保持信号222的读取请求220一样,分配器209发送另一个指示符至优化器211。在该实施方式中,第二指示符被称为“保持/进行信号(held/gosignal)”224。在图2b中,保持/进行信号224作为与读取请求220和保持信号222分离的发送的信号显示。实际上,这是优选的配置。在这种情况中,保持/进行信号224可以在读取请求220和保持信号222之前、之后或同时被发送。可替换地,保持/进行信号224可以以与保持信号相同的方式被实施,例如作为读取请求220的附加。但是,如下所述,可以要求保持/进行信号的更新值在稍后的时间从分配器发送。所以,保持/进行信号必须具有允许其独立于读取请求存在的形式,因此允许保持/进行信号的更新值独立于读取请求而被发送。保持/进行信号指示读取请求必须具有的保持信号的值以便其对于目标从设备的优化器221a、221b是可用的。分配器209将读取请求220与保持信号222和保持/进行信号224一起发送至目标从设备优化器221a或221b。
当读取请求到达优化器中队列的前面时,如果保持信号的值等于保持/进行信号指示的值,则优化器将处理读取请求。但是,如果保持信号的值不等于保持/进行信号指示的值,则优化器将推迟对读取请求的处理。被推迟的读取请求可以被发送至优化器队列的后面或可以被发送至优化器队列中的第二位置,或者可以根据优化器的设置以任何合适方式对优化器进行处理。
在该实施方式中,分配器209监测来自读取请求的返回的业务,以及在适当的时候更新保持/进行信号的值并将更新的保持/进行信号发送至相关的优化器。然后,当读取请求再次到达优化器中的队列的前面时,如果保持信号的值等于更新的保持/进行信号指示的值,则优化器将处理该读取请求。反之,该读取请求的处理将再次被推迟直到后面的更新的保持/进行信号的值与保持信号的值匹配。应当注意的是读取请求的保持信号具有一个且仅有一个值,该值表示保持/进行信号的值,该保持/进行信号的值必须是匹配的以便其对优化器来说是可用的。另一方面,保持/进行信号具有初始值且然后可以具有一个或多个被分配器更新的更新值。应当注意的是在组件传送保持信号和保持/进行信号的值时,组件保持他们的值,以便保持信号和保持/进行信号可以通过多个链接在一起的组件(例如,分配器和仲裁器)被传递并仍保持在适当的值。
在示例中,仅显示了一个信号分配器。但是,这是相当简单的示例,而在总线架构中将可能包括多个分配器。在那种情况中,每个分配器可以独立地生成用于各种读取请求的保持信号和保持/进行信号。在那种情况中,保持信号的值、保持/进行信号的初始值和保持/进行信号的任何更新值都可以依赖于另一分配器发出的保持信号或保持/进行信号的值。
在一种实施方式中,保持/进行信号随着从分配器到优化器的通信以针每个优化器的每个状态的形式而实施。或者,保持/进行信号可以通过单独的总线被发送,以便保持/进行信号的值可以从读取请求自身被周期性地并且独立地被发送。
参照图2a和上述示例,读取延迟的问题可以通过如下的本发明被解决。主设备201向从设备205b发出读取请求B。然后,主设备201向从设备205a发出读取请求A。在分配器209中,生成了保持信号B的值=x。另外,生成了保持/进行信号B的值=x。读取请求B、保持信号B的值=x和保持/进行信号B的值=x被从分配器209发送至优化器21b。类似地,在分配器209中,生成了保持信号A的值=y,而生成保持/进行信号A的值≠y。读取请求A、保持信号A的值=y和保持/进行信号A的值≠y从分配器209发送至优化器211a。
在优化器211b中,当读取请求B到达队列的前面时,因为保持信号B的值=保持/进行信号B的值=x,所以读取请求被处理。在优化器211a中,当读取请求A到达队列前面时,因为保持信号A的值=y,而保持/进行信号A的值≠y,所以读取请求被暂停。读取请求A可以被发送至队列中的第二位置或被发送至队列的后面或根据优化器211b的设置以另外的方式被处理。
然后来自读取请求B的数据经由分配器209被返回至主设备201。分配器209监测来自读取请求B的数据的接收,并且当接收到数据时,将保持/进行信号A的更新值=y发送至优化器211a。在优化器211a中,当读取请求A再次到达队列的前面时,因为保持信号A的值=保持/进行信号A的更新值=y,所以读取请求现在被处理。因此,按照与主设备201发出的相同的顺序来读取数据以确保返回。
在以上给出的示例中,读取请求A仅依赖于读取请求B。但是,读取请求A可以依赖于多个读取请求是可能的,在这种情况中当所有较早的读取请求已经完成时,分配器可以仅将保持/进行信号值设置为等于保持信号值。分配器可以不止一次地发送初始保持/进行信号,例如重复地发送。另外,分配器可以不止一次地发送更新的保持/进行信号。随着读取请求每次完成,分配器可以设置保持/进行信号值为初始值和匹配保持信号的值之间的中间值。该中间值也可以不止一次地被分配器发送。
保持信号和保持/进行信号的格式可以采用任何合适的形式。但是,在一种实施方式中,保持/进行信号作为计数器被实施。如果读取请求依赖于已经完成的一个或多个较早的读取请求,在其可以被正确处理之前,保持信号的值可以被设置成等于较早请求的数量。保持/进行信号初始时被设置为零。随着每个较早请求的完成,分配器将保持/进行信号计数器增加1。然后,当所有的较早请求完成时,保持/进行信号的值必须等于读取请求的保持信号的值。这不仅仅使返回数据能够以正确的顺序返回,而且还可以向分配器提供简单的方式以记录多少较早的读取请求已经被处理。可替换地,保持信号可以被设置为零,同时保持/进行信号初始时被设置为较早请求的数量。然后,随着每个较早请求的完成,分配器将保持/进行信号计数器减少1而不是增加1。每个保持/进行信号的更新值都可以被传送。或者,分配器可以简单地保持计数器的内部跟踪,并在其等于保持信号值时传送更新的保持/进行信号。
图3a示出了在其中可能发生数据一致性问题的示例性总线架构。该架构示出了经由仲裁器307和分配器309连接至优化器311a和经由仲裁器307、分配器309和优化器311b连接至从设备305b的两个主设备301a、301b。优化器311b和从设备305b之间的接口是慢接口,这可能导致优化器311b内大量的缓冲。但是,优化器311a指向主设备301b的接口是快内部接口。
参照图3a,假设主设备301a发出数据,也就是说,写入请求指向从设备305b。由于优化器311b和从设备305b之间的慢接口,所以数据可能被保留在优化器311b的缓冲器中,等待向从设备305的传输。一旦主设备301a发出指向从设备305b的数据,其经由数据写入请求向主设备301b发出通信。数据写入请求通过优化器311a进行路由。一旦通信被主设备301b接收到,则这允许主设备301b开始向从设备305b发出数据请求。因为优化器311a和主设备301b之间的接口是快路径,所以当由主设备301a发出的初始数据仍旧等待在优化器311b中时,来自主设备301b的数据请求可以到达优化器311b。优化器311b仅仅根据优先级和效率来选择缓冲器的请求的顺序。因此,在主设备301a的请求之前,优化器选择来自主设备301b的请求是一个合理的可能性。这可能意味着从读取请求返回至主设备301b的数据具有错误的值,因为来自主设备301a的请求还未到达从设备305b。
这样的问题在任何数量的架构中都可能发生,其中多于一个的主设备正向单个从设备发出请求,尤其其中不同的接口承受不同的延迟。这将经常是这种情况,例如,当一个接口是外部、片外、较慢的接口而另一接口是内部、片上、较快的接口时。图3a是相对简单的示例。
根据本发明的实施方式,通过与正被发出的写入请求相关联的特定的总线请求来解决这种问题。该特定的总线请求可以由主设备或由分配器或由任何其它组件发出。这被示意性地在图3b中示出。该总线请求确保由至少在总线请求之前发出写入请求的主设备发出的所有请求被保证在总线请求后发出的任何请求之间离开它们的优化器。请求的格式被示意性地在图3b中示出。在这种实施方式中,总线请求被称为“系统栅栏”。
首先,写入请求320被从主设备301发送至分配器309(图3a的情况中经由仲裁器307)。在图3b中,写入请求以24位数据指令示出,但是可以采用写入请求的任何合适的格式。在这种实施方式中,分配器309然后将指示符添加至写入请求320。在该实施方式中,指示符被称为“系统栅栏”指示符322。在图3b中,示出了将系统栅栏指示符添加至写入请求的分配器。但是,栅栏指示符的生成和添加可以由任何组件执行或者可以甚至在主设备自身执行。另外,在图3b中,系统栅栏指示符以附加至写入请求的2比特示出,但是可以采用指示符和写入请求与指示符组合的任何合适的格式。实际上,系统栅栏指示符可以不被添加至写入请求并可以被单独地传送。在该实施方式中,系统栅栏指示符322指示添加至的写入请求及在写入请求前由主设备301向任何从设备发出的任何请求应该在开始处理写入请求后发出的任何请求之前被完成。但是,系统栅栏指示符指示添加至的写入请求及在写入请求前由任何主设备向任何从设备发出的任何请求应该在开始处理写入请求后发出的任何请求之前被完成,是可能的。
分配器向所有输出端传送写请求320和系统栅栏指示符332。也就是说,写请求和系统栅栏指示符被发送至所有的优化器311。只要优化器具有单独来自系统栅栏指示符的充分的信息,仅系统栅栏指示符322(即没有写入请求自身)被发送至所有的优化器以执行随后的功能是可能的。明显地,写入请求自身必须一直被发送到指向的从设备的优化器。
每个优化器缓冲并重新分类从设备的输入请求。当优化器311接收写入请求320和系统栅栏指示符322时,这表示写入请求之前发出的在优化器中缓冲的任何请求应该被处理,但是写入请求之后发出的任何请求应该被推迟直至具有继续进行的确认。也就是说,写入请求之前发出的那些请求可以被处理并可以离开优化器。写入请求之后发出的那些请求应该被推迟,例如,保留在优化器缓冲器中。对于写入请求自身地址指向的从设备的优化器,应该处理写入请求自身。
一旦优化器已经处理了写入请求之前发出的所有请求(以及如果合适的话已经处理了写入请求自身),则写入请求向分配器309发出完成指示符。这在图3b中的324处示意性地示出。在图3b中,来自每个优化器311的完成指示符以2比特的数据段被示出,但是可以采用每个完成指示符的任何合适的格式,而且对于各个或每个优化器来说该格式不必相同。实际上,系统栅栏指示符通知优化器一旦写入请求(以及所有的在先请求)完成,则数据应该被返回,这不同于数据不必返回的不具有系统栅栏指示符的标准写入请求。该返回数据包括完成指示符。
在该实施方式中,分配器309监测来自优化器311的完成指示符的接收。但是,任何总线组件都可以监测接收。一旦来自所有优化器311的完成指示符都已经被接收到,分配器309(或其他组件)知道附有系统栅栏指示符的写入请求之前发出的所有请求都已经被完成。此时,写入请求处理之后发出的请求是安全的,因为之后确保其访问正确的数据。然后分配器309(或其他组件)向每个优化器传送进一步的指示符。在图3b中,这被示为进行指示符326。进行指示符指示优化器可以重新开始包括处理写入请求之后发出的那些请求的正常处理。
在图3b中,进行指示符显示为与写入请求分开发送的信号,但是进行指示符可以具有任何合适的格式。另外,具有第一状态的进行指示符可以与写入请求和系统栅栏指示符一起被发送。第一状态可能指示写入请求之后发出的请求也应该不被处理。然后,在接收到所有完成指示符之后,具有第二状态的进行指示符可以被发送至优化器。这将提出进行指示符的状态以指示优化器正常处理可以被重新开始。也就是,进行指示符的存在可以被用于指示优化器继续进行,或者进行指示符的状态可以被用于指示优化器是否应该继续进行正常处理。
在一种实施方式中,写入请求的地址字段可以被用于提供系统栅栏指示符和/或进行指示符。这是可能的,因为写入请求和系统栅栏被发送至所有优化器,所以实际上地址字段变成是多余的。
在该示例中,仅示出了信号分配器。但是,这是相当简单的示例,而多个分配器将包括在总线架构中是可能的。在那种情况中,发出进行指示符的事件可以依赖于来自其他分配器以及优化器的数据的接收。
参照上述示例,可以通过下文所述的本发明解决数据一致性的问题。在主设备301a已经发出指向从设备305b的写入请求之后,“系统栅栏”指示被发出。然后主设备301a经由数据写入请求向主设备301b发出通信。在该示例中,“系统栅栏”传至优化器311a和优化器311b。“系统栅栏”指示由从主设备301a至主设备301b的数据写入请求引起的从主设备301a至从设备305b的数据请求必须在由主设备301a向从设备305b发出的写入请求之后离开优化器311b。所以,优化器311b处理至从设备305b的写入请求。优化器311b还处理在该写入请求之前发出的优化器311b中的任何其他请求。优化器311a还处理在该写入请求之前发出的优化器311a中的任何其他请求。(注意,“所处理的”请求实际上仍旧可以存在于优化器中。然而,重要的是请求位于优化器中其他请求不可能到达前端的位置处。所以所处理的请求在从设备处是有效的。)然后,优化器311a将完成指示符发送回分配器309。并且优化器311b将完成指示符发送回分配器309。一旦分配器309接收到来自优化器311a和优化器311b二者(因为该示例中仅存在两个优化器)的完成指示符,分配器将进行指示符发送至两个优化器311a、311b。这指示优化器可以继续正常处理。在这种情况中,优化器311a现在处理从主设备301a至主设备301b的写入请求,这导致从主设备301b至从设备305b的数据请求的处理。这确保了那些数据请求获得了正确的数据。
这将确保主设备301b不试图访问数据直到其是真正是可用的。这将确保来自读取请求的返回至主设备301b的数据是正确的数据。因此,主设备301b是因为能保证接收到正确信息而受益。而且,主设备301a因为能够利用常规的总线架构而受益,而不需要进行特殊措施以确保在访问目标从设备之前数据到达目标从设备,这对另一主设备是有效的。
图4示出了因为不同的时钟频率可能发生瓶颈问题的示例性总线架构。该架构包括经由仲裁器409和优化器411连接至从设备405的两个主设备401a、401b。在图4a中,主设备401a、401b以慢时钟频率运行,而仲裁器409和优化器以快时钟频率运行。从设备405以另一未知的时钟频率运行。在包括图4a中示出的多个架构中,时钟频率通过部分总线架构或整个总线架构影响整体性能的可实现性。在不同时钟频率之间的接口处可能发生瓶颈。例如,在图4a的配置中,在主设备401a、401b和仲裁器409之间的接口处可能发生瓶颈。或许更为严重的,如果从设备405以比主总线架构(即仲裁器409)更快的时钟频率运行,则总线架构和高时钟频率从设备之间的单路径人为地限制了对较慢组件的访问速率。这种问题可能发生在任何数量的架构中而图4a示出了相对简单的配置。不同的时钟频率及因此导致的瓶颈可能发生在外部接口处,但是也可能发生在内部接口处,这取决于架构的细节。
图4a的示例性架构的典型请求情景示意性地示出在图4b中。图4b还示出了对简单的图4a配置的改善。图4b示出了两个针对将从目标从设备405返回的数据发送请求的主设备401a、401b。在图4b中,来自主设备401a的请求和至主设备401a的返回数据以矩形块的方式被示意性地示出并且来自主设备401b的请求和至主设备401b的返回数据以圆形块的形式被示意性地示出。在该示例中,从设备405具有比主设备401a、401b更高的时钟频率。仲裁器409也具有比主设备401更高的时钟频率,但是不必等于从设备405的时钟频率。在图4b中,对于图4a中示出的配置的改进已经通过在较快频率的组件中增加较慢路径的数量来进行。也就是说,通过允许较快组件接受比单端口可以提供的业务更多的业务,可以达到更好的性能。
在图4b的示例中,在仲裁器409处的较快时钟频率是在主设备401a、401b处较慢时钟频率的两倍。这允许仲裁器409在较慢域中在每个时钟周期选择来自主设备401a、401b二者(如果请求是实际可用的)的一个请求。然后每个主设备将能够使用可能100%的慢频率连接,无论其他主设备是否也正在发送请求。这在图4b中显示为至仲裁器409的两个输入——一个来自主设备401a而一个来自主设备401b,以及来自仲裁器409的两个输出——一个至主设备401a而一个至主设备401b。所以,在图4b中,仲裁器409用传送从主设备401a、401b至从设备405的请求的“向外”部分409a及传送从从设备405至相关的主设备401a、401b的返回数据的“返回”部分409b示出。向外部分409a具有来自每个主设备401a、401b的输入。如上所述,在该示例中这是可能的,因为仲裁器409处的时钟频率是主设备401a、401b处的两倍。向外部分409a还具有至优化器411和从设备405的输出。返回部分409具有来自优化器411和从设备405的输入。返回部分还具有至每个主设备401a、401b的输出。在该示例中这是可能的,因为仲裁器409处的时钟频率是主设备401a、401b处的两倍。
在图4b的示例中,每个主设备401a、401b已经发出了三个请求。第四个请求正等待发送。这些请求被缓冲在优化器411中且被重新分类并作为请求群被发送至从设备405。来自主设备401a的所有三个请求被第一个发送,来自主设备401b的所有三个请求跟随其后。从从设备405返回的数据具有不可预知的返回顺序。返回数据在优化器411中被重新分类并作为返回数据群被发送回仲裁器409。来自主设备401a的所有三个请求的数据被第一个发送。来自主设备401b的所有三个请求的数据被第二个发送。在返回数据离开仲裁器409之后,数据在主设备401a、401b处被同步到较慢的时钟域。
图4a和4b二者中示出的配置的首要问题是标准优化器设计和标准访问模式导致返回数据块试图在从仲裁器至主设备的单一慢速率路径上输出。另一问题是怎样达到最大返回数据效率。现在系统的瓶颈是通过仲裁器409的返回路径。由于来自从设备的达到最大效率的请求的分组,存在返回至单个主设备的排队的多组返回数据。对于主设备401a、401b以比仲裁器409的时钟频率更低时钟频率进行操作,仲裁器409将被要求将其传输放慢至主设备能够承受的频率。
根据本发明的实施方式,通过在优化器缓冲器中采用单一RAM存储来解决该问题。如图4b所示,优化器已经被用于重新排序从从设备接收到的数据。优化器允许每个主设备的请求被认为是来自单一RAM缓冲器的独立队列。根据图4c中示出的本发明的实施方式,优化器维持用于每个主设备的分开队列。然后优化器通过循环的方法选择主设备队列以用于传输。也就是说,优化器轮流选择主设备队列并发送位于选择的数据队列的前端的数据包。这允许数据通过交替地发送至不同的较低频率的路径而在每个较快时钟周期上被发送(当数据为可用时)。
这在图4c中示意性地示出了,图4c仅示出了简易的返回数据路径。在图4c中,具有经由仲裁器409和优化器411连接至从设备405的四个主设备401a、401b、401c、401d。在图4c中,至主设备401a的返回数据示意性地显示为矩形块,至主设备401b的返回数据示意性地显示为圆形块,至主设备401c的返回数据示意性地显示为三角形块,以及至主设备401d的返回数据示意性地显示为六边形块。在图4c中,主设备401a、401b、401c、401d以慢时钟频率运行,而仲裁器409和优化器411以快时钟频率运行。如图4b中,从从设备405返回的数据具有不可预知的返回顺序。
优化器接收返回数据并维护用于每个主设备的单独队列。用于主设备401a的队列显示为A。用于主设备401b的队列显示为B。用于主设备401c的队列显示为C。用于主设备401d的队列显示为D。优化器轮流选择每个队列以用于在该队列中的第一个数据包向仲裁器并向适当的主设备的传输。也就是说,优化器以循环的方式选择队列。如果主设备在其队列中没有数据,则优化器移动至下一个队列。在该实施方式中,优化器被显示以选择来自队列A的数据包1、来自队列B的数据包1、来自队列C的数据包1、来自队列D的数据包1、来自队列A的数据包2、来自队列B的数据包2、来自队列C的数据包2、来自队列D的数据包2及来自队列A的数据包3。此时,队列B中不再有数据,所以来自队列C的数据包3被选择,来自队列D的数据包3跟随其后。此时,队列A或队列B中不再有数据,所以来自队列C的数据包4被选择。此时,队列D或队列A或队列B中不再有数据所以来自队列C的数据包5被选择。图4c是人为参与的示例,正如数据正被传输至仲裁器,主设备队列正接收更多的来自从设备405的输入数据。
另外,应当注意的是,在图4c中,每个主设备401a、401b、401c、401d被显示为与单一主返回路径相对应。但是每个返回路径可以包括不止一个的主设备。也就是说,409b的每个端口可以被连接至不止一个的主设备。在那种情况中,配置以精确相同的方式利用与不止一个主设备相对应的某些或所有返回路径运作,其中队列被维护以用于每个返回路径。
参照图4c,考虑当总线处的时钟频率是主设备处的时钟频率的四倍的情况。如可以在图4中看到的,在传输开始的时侯,主设备使用达到主设备能够被使用的100%的最大限度。随着传输过程的进行,传输变得依赖于主设备401c和401d处的较低时钟频率,并基本上仅依赖于主设备401c处的较低时钟频率。
再次参照图4c,考虑当总线处的时钟频率是主设备处的时钟频率的两倍的情况。如图4中可以看到的,在传输开始的时候,因为具有都包含数据的四个队列,所以仅每个主设备能力的50%正被使用。但是,随着传输过程的进行,每个主设备的能力的较高百分比被使用,直到传输速度基本上依赖于主设备401c处较低的时钟频率,因为这是最长的队列。
因此,主设备的使用在特殊的时间将依赖于两个时钟频率之间的关系、主返回路径的数量和主队列的长度。一般,对于主设备或主返回路径的每一个数据队列被保持大致相等可能是最好的,这可以由优化器在一定程度上达到,如将在下文进一步描述的。一般,当较快时钟频率是较慢时钟频率的x倍时,至少x条路径被需要以允许通过返回路径完成最大频率。例如,当较快时钟频率是慢时钟的频率的两倍时,需要两个或更多的路径。更多的来自仲裁器的返回路径将允许返回数据可利用于不同路径及提高效率具有较高的机会。
如已经提到的,优选地,在某些实施方式中,因为用于主返回路径的数据队列被保持大致相等,所以主设备习惯于最大能力。这可以由优化器通过从主设备至从设备发出的请求的选择的偏向而至少部分地完成。例如,如果一个主返回路径具有比其他主路径明显更短的队列,则优化器可以给予来自该主设备发出请求的优先级,因为这将引起该主设备的返回数据,所以用于该主设备的队列将变的更长。这将被用于试图使数据有效地返回至多条路径。如果仅有一条路径具有返回数据,则可以建立数据队列并使数据速率被慢时钟频率限制。被请求该系统的一般要求优先级的请求在所有时间都满足,但是该特征可以允许结构被实施以实现特殊应用的最佳结果。

Claims (7)

1.一种用于在总线架构中经由总线从至少一个从设备向多个主路径发送数据的方法,所述架构包括用于对来自所述至少一个从设备的数据进行缓冲的缓冲器,其中所述总线的时钟频率高于每个主路径的时钟频率,所述方法包括以下步骤:
a)在所述缓冲器中维护用于从所述从设备接收到的数据的每个主路径的数据队列;
b)以循环的方式选择在所述缓冲器中每个主路径队列的前端的数据包;以及
c)经由所述总线发送所选择的数据包到所述所选择的数据包所指向的主路径。
2.根据权利要求1所述的方法,其中从所述至少一个从设备发送到主路径的数据响应于来自该主路径上的主设备的读取请求而从所述从设备被发送。
3.根据权利要求2所述的方法,该方法进一步包括以下步骤:
缓冲从所述多个主路径上的多个主设备到所述至少一个从设备的读取请求;以及
根据用于所述缓冲器中维护的所述主路径的所述数据队列的长度选择读取请求以发送到所述至少一个从设备。
4.根据权利要求1-3中的任一项权利要求所述的方法,其中所述总线的时钟频率比所述主路径的时钟频率大一个倍数,该倍数等于或小于主路径的数量。
5.一种总线架构,该总线架构包括:
用于将多个主路径与至少一个从设备连接的总线,所述总线的时钟频率高于每个主路径处的时钟频率;以及
用于对来自所述至少一个从设备的数据进行缓冲的缓冲器;
其中所述总线被配置成:在所述缓冲器中维护用于从所述从设备接收到的数据的每个主路径的数据队列;以循环的方式选择所述缓冲器中每个主路径队列的前端的数据包;以及发送所选择的数据包至该所选择的数据包所指向的主路径。
6.根据权利要求5所述的总线架构,其中从所述从设备接收的数据响应于来自主路径上的主设备的读取请求而从所述从设备被发送。
7.根据权利要求6所述的总线架构,该总线架构进一步包括用于所述至少一个从设备的优化器,该优化器被配置成根据用于所述缓冲器中维护的所述主路径的所述数据队列的长度选择读取请求以发送至所述至少一个从设备。
CN201180014825.3A 2010-03-19 2011-03-03 总线架构及从至少一从设备向多个主路径发送数据的方法 Active CN102804158B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201510184505.2A CN104834614B (zh) 2010-03-19 2011-03-03 处理总线架构中的读取请求的方法及总线架构
CN201510184516.0A CN104794076B (zh) 2010-03-19 2011-03-03 处理总线架构中的请求的方法及总线架构

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1004678.7 2010-03-19
GB1004678.7A GB2478795B (en) 2010-03-19 2010-03-19 Requests and data handling in a bus architecture
PCT/GB2011/000291 WO2011114090A2 (en) 2010-03-19 2011-03-03 Requests and data handling in a bus architecture

Related Child Applications (2)

Application Number Title Priority Date Filing Date
CN201510184516.0A Division CN104794076B (zh) 2010-03-19 2011-03-03 处理总线架构中的请求的方法及总线架构
CN201510184505.2A Division CN104834614B (zh) 2010-03-19 2011-03-03 处理总线架构中的读取请求的方法及总线架构

Publications (2)

Publication Number Publication Date
CN102804158A CN102804158A (zh) 2012-11-28
CN102804158B true CN102804158B (zh) 2016-05-04

Family

ID=42228052

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201180014825.3A Active CN102804158B (zh) 2010-03-19 2011-03-03 总线架构及从至少一从设备向多个主路径发送数据的方法
CN201510184505.2A Active CN104834614B (zh) 2010-03-19 2011-03-03 处理总线架构中的读取请求的方法及总线架构
CN201510184516.0A Active CN104794076B (zh) 2010-03-19 2011-03-03 处理总线架构中的请求的方法及总线架构

Family Applications After (2)

Application Number Title Priority Date Filing Date
CN201510184505.2A Active CN104834614B (zh) 2010-03-19 2011-03-03 处理总线架构中的读取请求的方法及总线架构
CN201510184516.0A Active CN104794076B (zh) 2010-03-19 2011-03-03 处理总线架构中的请求的方法及总线架构

Country Status (5)

Country Link
US (3) US8285903B2 (zh)
EP (3) EP2975530B1 (zh)
CN (3) CN102804158B (zh)
GB (1) GB2478795B (zh)
WO (1) WO2011114090A2 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101611157B1 (ko) * 2009-11-24 2016-04-11 삼성전자 주식회사 공기조화기 및 그 통신방법
GB2478795B (en) * 2010-03-19 2013-03-13 Imagination Tech Ltd Requests and data handling in a bus architecture
KR101699784B1 (ko) 2010-10-19 2017-01-25 삼성전자주식회사 버스 시스템 및 그것의 동작 방법
US8514700B2 (en) * 2010-10-29 2013-08-20 Alcatel Lucent MLPPP occupancy based round robin
US8490107B2 (en) 2011-08-08 2013-07-16 Arm Limited Processing resource allocation within an integrated circuit supporting transaction requests of different priority levels
EP2856690B1 (en) 2012-06-01 2020-12-02 BlackBerry Limited Universal synchronization engine based on probabilistic methods for guarantee of lock in multiformat audio systems
US9479275B2 (en) 2012-06-01 2016-10-25 Blackberry Limited Multiformat digital audio interface
US9712353B2 (en) * 2012-10-01 2017-07-18 Advanced Micro Devices, Inc. Data transmission between asynchronous environments
US9229896B2 (en) * 2012-12-21 2016-01-05 Apple Inc. Systems and methods for maintaining an order of read and write transactions in a computing system
CN104423982B (zh) * 2013-08-27 2018-03-06 阿里巴巴集团控股有限公司 请求的处理方法和处理设备
CN105610532B (zh) * 2014-11-11 2019-05-24 中兴通讯股份有限公司 信号的传输处理方法及装置、设备
US9775035B2 (en) * 2015-09-14 2017-09-26 GM Global Technology Operations LLC Architecture and apparatus for controller secure message processing

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1567279A (zh) * 2003-06-20 2005-01-19 上海奇码数字信息有限公司 数据传送方法和数据传送系统
US6853382B1 (en) * 2000-10-13 2005-02-08 Nvidia Corporation Controller for a memory system having multiple partitions
CN101127020A (zh) * 2006-08-18 2008-02-20 富士通株式会社 仲裁器、交叉开关、请求选择方法以及信息处理设备
CN101556569A (zh) * 2008-04-10 2009-10-14 联发科技股份有限公司 在主装置以及从装置之间传送数据的方法及从装置
CN101604302A (zh) * 2009-07-20 2009-12-16 威盛电子股份有限公司 高级外围总线桥及其控制方法

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07200386A (ja) 1993-12-28 1995-08-04 Toshiba Corp 共有メモリのアクセス制御装置および画像形成装置
US5996036A (en) * 1997-01-07 1999-11-30 Apple Computers, Inc. Bus transaction reordering in a computer system having unordered slaves
US6138176A (en) * 1997-11-14 2000-10-24 3Ware Disk array controller with automated processor which routes I/O data according to addresses and commands received from disk drive controllers
EP0924621A3 (en) 1997-12-22 2000-06-28 Compaq Computer Corporation Computer system including bridge logic having a fair arbitration mechanism to support isochronous devices
US6073210A (en) * 1998-03-31 2000-06-06 Intel Corporation Synchronization of weakly ordered write combining operations using a fencing mechanism
US6275914B1 (en) 1999-10-15 2001-08-14 Micron Technology, Inc Apparatus for preserving memory request ordering across multiple memory controllers
US6697904B1 (en) * 2000-03-28 2004-02-24 Intel Corporation Preventing starvation of agents on a bus bridge
US6772254B2 (en) * 2000-06-21 2004-08-03 International Business Machines Corporation Multi-master computer system with overlapped read and write operations and scalable address pipelining
US6449701B1 (en) 2000-09-20 2002-09-10 Broadcom Corporation Out of order associative queue in two clock domains
US7035958B2 (en) * 2002-10-03 2006-04-25 International Business Machines Corporation Re-ordering a first request within a FIFO request queue to a different queue position when the first request receives a retry response from the target
US7181556B2 (en) * 2003-12-23 2007-02-20 Arm Limited Transaction request servicing mechanism
US7213095B2 (en) 2004-06-08 2007-05-01 Arm Limited Bus transaction management within data processing systems
US7143221B2 (en) * 2004-06-08 2006-11-28 Arm Limited Method of arbitrating between a plurality of transfers to be routed over a corresponding plurality of paths provided by an interconnect circuit of a data processing apparatus
US7219178B2 (en) * 2004-09-30 2007-05-15 Arm Limited Bus deadlock avoidance
US20060101178A1 (en) 2004-11-08 2006-05-11 Zhong Tina C Arbitration in a multi-protocol environment
US7263566B2 (en) * 2004-12-30 2007-08-28 Qualcomm Incorporated Method and apparatus of reducing transfer latency in an SOC interconnect
CN101341474B (zh) * 2005-12-22 2012-02-08 Arm有限公司 用于对事务重排序来确保每个事务所规定的服务质量的仲裁方法
KR100839494B1 (ko) * 2006-02-28 2008-06-19 삼성전자주식회사 버스 중재 시스템 및 버스 중재 방법
US7917676B2 (en) * 2006-03-10 2011-03-29 Qualcomm, Incorporated Efficient execution of memory barrier bus commands with order constrained memory accesses
TW200736920A (en) 2006-03-16 2007-10-01 Realtek Semiconductor Corp Arbiter and arbitrating method
GB2440758B (en) * 2006-08-08 2011-03-30 Advanced Risc Mach Ltd Interconnect logic for a data processing apparatus
KR100888597B1 (ko) * 2006-09-20 2009-03-16 삼성전자주식회사 메모리 인터페이스 제어 장치 및 제어 방법
US7865647B2 (en) 2006-12-27 2011-01-04 Mips Technologies, Inc. Efficient resource arbitration
US8156273B2 (en) * 2007-05-10 2012-04-10 Freescale Semiconductor, Inc. Method and system for controlling transmission and execution of commands in an integrated circuit device
US7984202B2 (en) * 2007-06-01 2011-07-19 Qualcomm Incorporated Device directed memory barriers
US8478950B2 (en) * 2008-07-29 2013-07-02 Synopsys, Inc. Data processing circuit with arbitration between a plurality of queues
CN101478798A (zh) * 2009-01-23 2009-07-08 深圳华为通信技术有限公司 通信方法、装置和系统
GB2478795B (en) * 2010-03-19 2013-03-13 Imagination Tech Ltd Requests and data handling in a bus architecture
US8356119B2 (en) * 2010-04-26 2013-01-15 Arm Limited Performance by reducing transaction request ordering requirements
KR101699781B1 (ko) * 2010-10-19 2017-01-26 삼성전자주식회사 시스템 온 칩 및 그것의 데이터 중재 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6853382B1 (en) * 2000-10-13 2005-02-08 Nvidia Corporation Controller for a memory system having multiple partitions
CN1567279A (zh) * 2003-06-20 2005-01-19 上海奇码数字信息有限公司 数据传送方法和数据传送系统
CN101127020A (zh) * 2006-08-18 2008-02-20 富士通株式会社 仲裁器、交叉开关、请求选择方法以及信息处理设备
CN101556569A (zh) * 2008-04-10 2009-10-14 联发科技股份有限公司 在主装置以及从装置之间传送数据的方法及从装置
CN101604302A (zh) * 2009-07-20 2009-12-16 威盛电子股份有限公司 高级外围总线桥及其控制方法

Also Published As

Publication number Publication date
EP2975530B1 (en) 2020-11-25
US20110231588A1 (en) 2011-09-22
GB2478795A (en) 2011-09-21
EP2975530A1 (en) 2016-01-20
US8631180B2 (en) 2014-01-14
GB2478795B (en) 2013-03-13
CN104794076B (zh) 2018-01-26
CN102804158A (zh) 2012-11-28
GB201004678D0 (en) 2010-05-05
US20130007321A1 (en) 2013-01-03
US8285903B2 (en) 2012-10-09
EP2548127A2 (en) 2013-01-23
EP2975529A1 (en) 2016-01-20
EP2548127B1 (en) 2016-06-15
EP2975529B1 (en) 2020-12-16
US9529751B2 (en) 2016-12-27
WO2011114090A2 (en) 2011-09-22
WO2011114090A3 (en) 2011-11-24
US20140229643A1 (en) 2014-08-14
CN104834614B (zh) 2018-01-16
CN104834614A (zh) 2015-08-12
CN104794076A (zh) 2015-07-22

Similar Documents

Publication Publication Date Title
CN102804158B (zh) 总线架构及从至少一从设备向多个主路径发送数据的方法
CN101263465B (zh) 用于总线仲裁的方法和系统
CN100595744C (zh) 芯片上系统集成电路、电子系统及在其内传送数据的方法
CN101341474B (zh) 用于对事务重排序来确保每个事务所规定的服务质量的仲裁方法
CN103729329A (zh) 核间通信装置及方法
CN103297456A (zh) 一种分布式系统下共享资源的访问方法及分布式系统
US20160062930A1 (en) Bus master, bus system, and bus control method
CN100430847C (zh) 在总线系统中确定时间的方法和装置以及总线系统
CN1335563A (zh) 总线系统和其数据传输方法
CN102122273A (zh) 基于硬件的具有内置定时器的连接状态机
CN202815824U (zh) 微控制器系统
CN100356355C (zh) 仲裁器和仲裁方法
KR101419558B1 (ko) Plc 시스템의 모니터링 시스템 및 그를 이용한 모니터링 방법
JP2734246B2 (ja) パイプラインバス
EP0355856A1 (en) Daisy chain interrupt processing system
CN106371966A (zh) 收集与数据处理系统的操作相关的监视数据
US7047284B1 (en) Transfer request bus node for transfer controller with hub and ports
GB2488681A (en) A method and bus architecture for sending data in a bus architecture from a slave device to master pathways via a bus
GB2488680A (en) A method/architecture for processing requests in a bus architecture that includes at least two master devices an at least one slave device
JP2660609B2 (ja) 共通バス送信権保持方式
JPS6266360A (ja) 優先度制御方式
WO2013097397A1 (zh) 一种端到端硬件消息传输的实现方法和装置
JPS5975331A (ja) バス転送方式
JPH09200292A (ja) データ伝送方法及びその装置
JPS63244253A (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