CN115391257A - 数据总线通信 - Google Patents
数据总线通信 Download PDFInfo
- Publication number
- CN115391257A CN115391257A CN202210570428.4A CN202210570428A CN115391257A CN 115391257 A CN115391257 A CN 115391257A CN 202210570428 A CN202210570428 A CN 202210570428A CN 115391257 A CN115391257 A CN 115391257A
- Authority
- CN
- China
- Prior art keywords
- transaction
- data
- list
- sub
- transactions
- 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.)
- Pending
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/40—Bus structure
- G06F13/4004—Coupling between buses
-
- 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/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4009—Coupling between buses with data restructuring
- G06F13/4018—Coupling between buses with data restructuring with data-width conversion
-
- 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/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1678—Details of memory controller using bus width
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种电子设备和调解从具有第一总线宽度的事务源域到具有第二总线宽度的事务目标域的读取事务的方法。方法包括从事务源域接收第一读取事务和第二读取事务,分别与第一事务ID和第二事务ID关联并指示事务目标域的第一地址和第二地址,将每个读取事务分成多个子事务,多个子事务具有第二总线宽度。方法还包括:响应于接收到与第一事务ID关联的第一数据和与第二事务ID关联的第二数据,将多个子事务的每个发送到事务目标域;将第一数据存储在第一存储单元的数据寄存器中并将第一存储单元分配给第一列表;将第二数据存储在第二存储单元的数据寄存器中并将第二存储单元分配给第二列表;以及将数据相互独立地从第一列表和第二列表读出到事务源域。
Description
技术领域
本发明涉及电子设备中的模块和用于调解从主设备到从设备的读取事务的方法。
背景技术
许多现代电子设备包括很多总线,以允许不同的片上设备相互通信。通常,这些总线将至少一个“主”设备连接到至少一个“从”设备,并允许主设备向从设备发出命令和/或与从设备交换数据。
一种通常用于片上通信的总线是高级可扩展接口(AXI)总线,它在高级微控制器总线架构规范(例如,“AXI3”、“AXI4”和“AXI5”规范的)中定义。这种分组交换总线提供了多主机到多从机的高性能通信接口。
本领域本身已知的另一种总线是AXI-Lite总线(例如,AXI5-Lite总线),它提供更“轻量级”总线来支持每个主机的单个事务线程。AXI-Lite协议通常用于需要同时与单个主设备进行通信的设备(例如,从设备)。
AXI规范概述了五个事务通道,它们是:读取地址通道(AR);读取数据通道(R);写地址通道(AW);写数据通道(W);和写响应通道(B)。
本领域技术人员将理解某些数据总线协议(例如,AXI协议)是基于突发的协议,即它们支持单个请求的多个传送,其中这些传送被称为“拍”。使用的协议可以指定事务突发长度的限制。例如,根据AXI4规范,最大允许事务突发长度为256拍。相反,AXI-Lite仅允许单个数据传送,即突发长度限制为1拍。
还将理解,总线可以被划分为不同的总线分区或域,并且这些分区或域中的每一个都可以使用不同的总线宽度,即每个总线分区为数据的同时传送提供的“通道”的数量可以各不相同。模块(也称为“桥”)可以用于连接总线宽度不同的这种总线分区。
本发明寻求提供这种模块中对读取事务的改进处理。
发明内容
从第一方面,本发明提供一种包括模块的电子设备,所述模块被配置为将数据总线事务从具有第一总线宽度的事务源域传送到具有小于第一总线宽度的第二总线宽度的事务目标域,
模块被配置为执行以下步骤:
从事务源域接收第一读取事务,与第一事务ID相关联并指示事务目标域的第一地址;
将第一读取事务分成第一多个子事务,其中第一多个子事务具有第二总线宽度;
将第一多个子事务发送到事务目标域;
从事务源域接收第二读取事务,与第二事务ID相关联并指示事务目标域的第二地址;
将第二读取事务分成第二多个子事务,其中第二多个子事务具有第二总线宽度;和
将第二多个子事务发送到事务目标域;
所述模块还包括:
多个存储单元,包括至少一个数据寄存器,用于存储从事务目标域接收的数据;
模块还被配置为执行以下步骤:
响应于将第一多个子事务中的子事务发送到事务目标域,接收与第一事务ID相关联的第一数据;
将第一数据存储在第一存储单元的数据寄存器中,并将第一存储单元分配给第一列表;和
响应于将第二多个子事务中的子事务发送到事务目标域,接收与第二事务ID相关联的第二数据;
将第二数据存储在第二存储单元的数据寄存器中,并将第二存储单元分配给第二列表;
使得数据可以相互独立地从第一列表和第二列表读出到事务源域。
本发明的第一方面延伸到一种调解从具有第一总线宽度的事务源域到具有小于第一总线宽度的第二总线宽度的事务目标域的读取事务的方法,所述方法包括:
从事务源域接收第一读取事务,与第一事务ID相关联并指示事务目标域的第一地址;
将第一读取事务分成第一多个子事务,其中第一多个子事务具有第二总线宽度;
将第一多个子事务发送到事务目标域;
响应于将第一多个子事务中的子事务发送到事务目标域,接收与第一事务ID相关联的第一数据;
将第一数据存储在第一存储单元的数据寄存器中,并将第一存储单元分配给第一列表;
从事务源域接收第二读取事务,与第二事务ID相关联并指示事务目标域的第二地址;
将第二读取事务分成第二多个子事务,其中第二多个子事务具有第二总线宽度;
将第二多个子事务发送到事务目标域;
响应于将第二多个子事务中的子事务发送到事务目标域,接收与第二事务ID相关联的第二数据;
将第二数据存储在第二存储单元的数据寄存器中,并将第二存储单元分配给第二列表;和
将数据相互独立地从第一列表和第二列表读出到事务源域。
本发明的第一方面还扩展到包括指令的非暂时性计算机可读介质,所述指令在由处理器执行时使处理器执行如上所描述的方法。
本发明的第一方面还扩展到包括指令的计算机软件产品,所述指令在由处理器执行时使处理器执行如上所描述的方法。
应当理解,尽管这些方法步骤是按顺序排列的,但除非指定,否则方法步骤不要求按照它们排列的特定顺序执行。
因此可以看出,根据本发明,通过存储接收到的数据,模块能够在准备好返回时从事务目标域接收数据,而不是将数据直接转发到事务源域,在这种情况下,来自事务源域的任何背压都将传播到事务目标域。
根据本发明,将与不同事务ID相关联的数据存储在不同的列表中,使得数据可以相互独立地从第一列表和第二列表读出到事务目标域中。由此可以理解,可以将存储在其中一个列表中的数据转发到事务源域,而不管存储在其他列表中的数据的状态如何,即无需等待来自其他列表的数据收到或转发。因此,数据可以按照与从事务目标域接收的顺序不同的顺序转发到事务源域。由于可以从每个列表中独立地读取数据,因此从一个地址快速返回的数据不需要因为等待来自另一个地址的未完成数据的模块而延迟。与同一事务ID相关联的所有读取数据通常必须按照请求的顺序从目标域返回,但为不同事务ID返回的数据可能以相对于彼此的任何顺序返回。因此有利的是,根据本发明,可以独立处理与不同事务ID相关联的子事务,从而一组子事务不会“阻塞”另一组子事务,例如,如果模块具有在它可以开始接收与第二事务ID相关联的数据之前接收第一事务ID的所有数据。
在一些实施方案中,电子设备包括主设备,其中来自主设备的事务在事务源域中被接收。在一些实施方案中,电子设备包括从设备,其中来自从设备的事务在事务目标域中被接收。事务源域可以由AXI总线提供,例如根据“AXI3”、“AXI4”和“AXI5”规范。事务目标域可以由AXI总线(例如,AXI-Lite总线,例如AXI5-Lite总线)提供。
在接收到的事务从较宽的第一(即,源)总线宽度分(即,缩小尺寸)成较窄的(即,目标)总线宽度时,它的长度必然增长,以使数据得以保存。这可能导致在缩小尺寸操作之后得到的事务突发长度大于最大事务突发长度限制。在一些实施方案中,第一和/或第二读取事务具有第一事务突发长度,并且方法包括将第一和/或第二读取事务分成多个子事务,其中多个子事务各自具有小于第一事务突发长度的相应第二事务突发长度,即,突发长度也被缩短。第二事务突发长度优选地等于或小于目标域的最大事务突发长度限制。
模块可以被配置为执行这些方法步骤。在这种实施方案中,模块可以布置为使得传入事务从较宽的总线宽度转换为较窄的总线宽度(即,事务被“缩小尺寸”),并且使得事务也被分解成多个较小的事务。因此,模块可以提供事务的二维尺寸重新调整(即,“宽度”和“长度”)以使其适合下游组件。
除了减少读取事务的宽度(和可选地,突发长度)之外,在将它们转发到目标域之前,模块本身可以在拆分突发时重新排序读取事务的发出,以改善小突发的延迟。因此,在一些实施方案中,方法还包括在接收到第一读取事务之后,从与与第一读取事务不同的事务ID相关联的事务源域接收第三读取事务,其中第三读取事务比第一读取事务短,并允许第三读取事务旁通第一读取事务。模块可以被配置为执行这些方法步骤。通过“旁通”可以理解,事务以与模块接收它们的顺序不同的顺序被转发到目标域,即,第三读取事务在第一读取事务之前被转发到目标域。在一些实施方案中,旁通可以以第三读取事务满足某些条件为条件,例如第三读取事务比第二总线宽度窄或等于第二总线宽度(即,它不需要被分离/缩小尺寸),和/或第三读取事务小于或等于旁通阈值参数(即,突发尺寸小于或等于旁通阈值参数)。
在从事务目标域接收到事务响应时,这个响应通常将具有第二总线宽度,并且可以提供为多个事务响应(例如,响应于通过第二接口发送的多个第二事务中的每一个的大量突发)。模块可以被布置为组合多个事务响应以生成一个或多个具有第一总线宽度的第二事务响应,其中第二事务响应可以适合于提供给事务源域。
因此,在一些实施方案中,方法还包括:
响应于将第一多个子事务中的另外子事务发送到事务目标域,接收与第一事务ID相关联的另外的数据;
检查第一存储单元的数据寄存器是否完成;和
如果第一存储单元的数据寄存器未完成,那么将另外的数据添加到存储在第一存储单元的数据寄存器中的数据中;和
如果第一存储单元完成,那么将另外的数据存储在第三存储单元的数据寄存器中,并将第三存储单元分配给第一列表。类似地,模块可以被配置为附加地执行这些步骤。
应当理解,通过将数据“添加”到数据寄存器意味着新接收的数据被附加到已经存储在存储单元的数据寄存器中的现有数据。
数据寄存器可以包括数据值(即,存储的信息内容),并且还可以包括“状态”值和/或“最后”值,例如由一个或多个位提供。
从事务目标域接收的数据可以包括“状态”值,其可以指示与数据相关联的读取子事务的状态,例如地址无效或事务正常。在一些实施方案中,将数据添加到数据寄存器可以包括重新计算数据寄存器的状态值。各种“状态”值可以具有分配的顺序,并且数据寄存器的状态值可以计算为与存储在所述数据值中的任何数据相关联的最低顺序值。例如,如果数据寄存器中任何数据的最低阶状态值为“事务正常”,那么数据寄存器的全部内容具有状态值“事务正常”。这有助于保持与接收到的数据相关的有用状态信息,即使它被一起分组到存储单元中以发送到事务源域。
数据寄存器可以补充地或替代地包括“最后”值。这个值可以指示这是否是与给定事务ID相关联的最后数据,即来自所述事务的最后子事务。在一些实施方案中,如果存储在数据寄存器中的接收数据是与事务ID相关联的最后数据,那么将数据添加到数据寄存器可以包括改变“最后”值。
还将理解,数据寄存器“完成”意味着存储单元不再适合用于存储任何附加数据,即它不可用。这可能是因为数据寄存器已满,即所述数据寄存器的全部容量,例如所有位,都用于存储数据。或者整个数据寄存器可能是“完成”,即使接收到的数据没有填满寄存器的所有容量,例如,如果已经存储在数据寄存器中的数据的某些属性使其不适合存储任何另外的数据。例如,在先前存储在数据寄存器中的接收数据是“窄的”或“未对齐的”的情况下,数据寄存器可以是完成。
数据寄存器的尺寸可以有利地对应于源域中的单拍数据,即,作为每单位时间(例如,一个或定义数目个时钟周期)的单个数据传送可以传送到源域上的主设备的数据量。这可以对应于从目标域接收到的若干拍数据,因为目标域具有小于源域的第一总线宽度的第二总线宽度。
通过将数据添加到存储单元的数据寄存器中直到完成(通常意味着数据寄存器已满),由于不会浪费存储单元内的空间,因此可以更有效地存储数据,并且以这种方式收集与特定的事务ID相关联的数据,以便它可以如上所描述在单拍中转发到事务源域。
还应当理解,在一些实例中,虽然第一存储单元的数据寄存器未满(且数据寄存器未完成,因此可用于存储数据),但另外的数据可能大于在第一存储单元的数据寄存器中的可用空间,即,使得不是所有另外的数据都能够存储在第一存储单元中。在这种情况下,方法还可以包括:
将另外的数据的第一部分添加到存储在第一存储单元中的数据,使得第一存储单元是满的;和
将另外的数据的第二部分存储在第三存储单元的数据寄存器中,并将第三存储单元分配给第一列表。第一部分和第二部分可以一起提供另外的数据。这允许即使在其数据寄存器中的可用空间不足以容纳从目标域接收的数据的情况下,也可以使用存储单元,然后将数据的剩余部分存储在另一个存储单元中,从而最有效地使用模块部分中的可用空间。
类似地,在一些实施方案中,方法还包括:
接收与第二事务ID相关联的另外的数据;
检查第二存储单元的数据寄存器是否完成;和
如果第二存储单元的数据寄存器未完成,那么将另外的数据添加到存储在第二存储单元的数据寄存器中的数据中;和
如果第二存储单元完成,那么将另外的数据存储在另外的(例如,第三或第四)存储单元的数据寄存器中,并且将另外的存储单元分配给第二列表。类似地,模块可以被配置为附加地执行这些步骤。
此外,在一些实施方案中,方法还可以包括:
将另外的数据的第一部分添加到存储在第二存储单元中的数据,使得第二存储单元是满的;和
将另外的数据的第二部分存储在另外的存储单元的数据寄存器中,并将另外的存储单元分配给第二列表。
在一些实施方案中,方法包括检查多个存储单元中的每一个当前是否正在存储数据;和
如果所有的存储单元当前都正在存储数据,那么不再存储数据,直到至少一个存储单元(即,可用,例如直到数据已经从模块转发到目标域)。模块可以被配置为执行这些方法步骤。因此,模块有利地检查在新事务发送到目标域之前,有足够的可用存储单元(即,不包含数据)来存储新事务请求的数据。
在一些实施方案中,方法包括在从源域接收到读取事务时检查跨多个存储单元可用的存储空间的总量;和
如果可用存储空间的总量低于最小阈值参数,那么不向目标域发送子事务,直到数据从模块转发到目标域。模块可以被配置为执行这些方法步骤。这可确保所述部分不会因超出存储单元中存储的数据量而溢出,同时还通过确保在每个子事务中总是请求超过最小数量的数据。
补充地或替代地,方法可以包括基于存储单元中可用的存储空间量来调整子事务。因此,在一些实施方案中,方法包括在接收到来自源域的读取事务时检查跨多个存储单元可用的存储空间的总量;和
如果可用存储空间总量低于目标域的最大事务突发长度限制,那么将下一子事务的尺寸限制为可用存储空间的总量。模块可以被配置为执行这些方法步骤。即使在(目标域的)第二总线宽度足够大以允许在单个突发中传送更多数据的情况下,这也可以确保存储单元不会被比可存储在存储单元中更多的数据溢出。
在一些实施方案中,模块定义多个存储单元可以被分配到的列表的总数,并且方法包括在从源域接收到另外的读取事务时检查列表是否已经对应于与读取事务相关联的事务ID;和
如果没有列表对应事务ID,那么检查正在使用的列表数量是否等于列表总数;和
如果正在使用的列表的总数等于列表的总数,那么不发送与另外的读取事务相关联的子事务到目标域,直到列表可用为止。模块可以被配置为执行这些方法步骤。因此,在这种布置中,模块在发出另外的子事务之前检查所有可用列表或通道是否已经用于未完成的读取事务,即等待从目标域返回的数据。可以理解,“使用中”列表中存在至少一个存储单元被分配给列表。还将理解,一旦与所述列表相关联的所有存储单元中包含的数据已被转发到源域,那么列表将因此不再“使用中”。
在一些实施方案中,每个存储单元还包括链接寄存器,用于将存储单元中的另一个引用为分配给同一列表的后续存储单元。例如,链接寄存器可以被配置为存储另一个存储单元的地址,例如存储单元被分配到的列表中的下一存储单元。
例如,与第一事务ID相关联的数据存储在第一存储单元和第三存储单元中,并且都被分配给第一列表(如上所描述),第一存储单元的链接寄存器存储第三存储单元的引用(例如,地址)。因此,在读取第一存储单元的内容时,链接寄存器的内容指示第三存储单元是第一列表中的(即,属于)下一存储单元。类似地,在与第二事务ID相关联的数据存储在第二存储单元和另外的(第三/第四)存储单元中,并且两者都被分配给第二列表(如上所描述)时,第二存储的链接寄存器存储另一个存储单元的引用(例如,地址)。因此,方法可以包括,在(即,作为同一过程的部分,之前、同时或之后)将数据存储在存储单元中时,并且更新前一存储单元(例如,先前是尾部存储单元的存储单元)的链接寄存器的相应列表来引用存储单元。
在一些实施方案中,除了第一列表和第二列表之外,模块还包括可用性列表,指示可用于数据存储的多个存储单元的子集。在一些实施方案中,可用性列表由一对寄存器提供,其中所述寄存器的第一寄存器指示第一可用存储单元,并且其中所述对寄存器的第二寄存器指示最后可用存储单元。每个可用存储单元可以包括链接寄存器,其引用可用性列表中的下一可用存储单元。
在一些实施方案中,方法还包括在将存储单元分配给相应列表之后,从可用性列表中移除所述存储单元。例如,方法还可以包括,在将第一数据存储在第一存储单元的数据寄存器中并将第一存储单元分配给第一列表之后,从可用性列表中移除第一存储单元。应当理解,这同样适用于将第二数据存储在第二存储单元等中的情况。类似地,模块可以被配置为执行这个步骤。
在一些实施方案中,模块还包括至少两组寄存器,其中每组寄存器对应于相应的列表。因此,在一些实施方案中,寄存器组的数量定义了多个存储单元可以被分配到的列表的总数,即它们相等,因为每组寄存器对应于一个列表。因此,这定义了可以处理多少未完成的读取事务。在一些实施方案中,每组寄存器包括指示所述列表是否在使用中的使用寄存器和指示与存储在所述列表的存储单元中的数据相关联的事务ID的ID寄存器。在一些实施方案中,每组寄存器包括头部寄存器,指定所述列表开头的存储单元;和尾部寄存器,指定所述列表尾部的存储单元的。通过“指定”将理解寄存器可以包括特定存储单元的地址或数组索引。
因此,在一些实施方案中,第一数据存储在第一存储单元中,方法还包括更新对应于第一列表的第一组寄存器的使用寄存器,以表明第一列表正在使用中。补充地或替代地,方法可以包括更新第一组寄存器的ID寄存器以包含第一事务ID。
补充地或替代地(甚至包括在对应于第一事务ID的列表已经存在的情况下),方法可以包括更新头部寄存器以指定第一存储单元作为第一列表的开始,和/或更新尾部列表以指定第一存储单元,或者更一般地说是新添加的单元,作为第一列表的尾部。在与第一事务ID相关联的数据还存储在第三存储单元中的情况下,方法还可以包括更新第一组寄存器的尾部寄存器以指定第三存储单元是第一列表的尾部。
应当理解,因此模块可以被配置为执行这些步骤。还将理解,这些步骤同样可以在与在第二存储单元中存储与第二事务ID相关联的数据有关。
在一些实施方案中,方法包括一旦满足发送条件,就将数据从首先指定(例如,由头部寄存器)指定的存储单元的数据寄存器转发到源域。发送条件可以要求存储单元的数据寄存器完成(例如,满的),也可以更一般地取决于模块的条件,例如处于“准备发送”状态。模块可以被配置为执行这些方法步骤。
在这样的实施方案中,方法还可以包括从对应的(例如,第一或第二)列表中移除存储单元,例如通过更新第一列表的头部寄存器以将第一列表中的下一存储单元指定为第一列表的开始列表,和/或更新可用性列表的尾部寄存器以指定刚刚从其转发数据的存储单元作为可用性列表的尾部。
如果从中转发数据的存储单元是对应列表的尾部单元,即,所述事务ID的最后数据,那么方法还可以包括更新列表的使用寄存器以表明所述列表不再使用,和/或将列表的ID寄存器更新为空。
在一些实施方案中,存储在每个存储单元的数据寄存器中的数据在单独的事务中被传送到源域,例如每个存储单元传送一拍数据。
模块还可以被布置为仲裁,即,决定将数据从列表发送回源域的顺序,例如,在满足发送条件时。方法还可以包括这种仲裁步骤。因此,在一些实施方案中,在第一列表中的存储单元和第二列表中的存储单元可用于发送到源域的一些实施方案中,方法包括检查与第一列表或第二列表的事务ID相关联的数据是否已经发送到源域;和
如果与第一列表的事务ID相关联的数据已经发送到源域(例如,在前一事务中),那么转发在第一列表中的第一存储单元;和
如果与第一列表的事务ID或第二列表的事务ID相关联的数据没有被转发到存储单元,那么检查第一列表还是第二列表包含较少数量的存储单元,并将数据从包含较少数量的存储单元的所述列表从来自存储单元的数据寄存器的数据转发到所述源域。这可以提供一种特别有效的方式来决定转发哪个存储单元。
本文中所描述的任何方面或实施方案的特征可在适当时应用于本文中所描述的任何其他方面或实施方案。在参考不同实施方案或实施方案集合的情况下,应当理解,这些实施方案未必是不同的,而是可重叠的。此外将理解,对包括步骤的方法的引用相应地扩展到“配置为”执行步骤的模块,反之亦然。
附图说明
现将仅借助于实例参考附图描述本发明的实施方案,在这些附图中:
图1是显示根据本发明实施方案的模块的示意图;
图2是显示图1模块的子模块的寄存器在存储单元中没有存储数据的情况下的示意图;
图3是显示图2寄存器的替代表示的示意图;
图4是显示图2子模块的寄存器示意图,其中数据存储在第一单元中,所述第一单元已分配给第一列表;
图5是显示图4子模块的寄存器的示意图,其中另外的数据存储在第二单元中,所述第二单元也已分配给第一列表;
图6是显示图5子模块的寄存器的示意图,其中另外的数据存储在第三单元中,所述第三单元已分配给第二列表;
图7是显示图6子模块的寄存器的示意图,其中另外的数据存储在第四单元中,所述第四单元也已分配给第一列表;
图8是显示图7子模块的寄存器示意图,其中来自第一列表的第一单元的数据已被转发到主控器;
图9是显示图8子模块的寄存器示意图,其中来自第二列表的第一单元的数据已转发到主控器;和
图10是图示根据本发明实施方案的方法的流程图。
具体实施方式
图1是图示根据本发明实施方案的包括模块2的电子设备1的框图。模块2被布置为“分解”AXI数据总线上源自第一事务“源”域4(即,“主侧”)的读取事务,以使它们适合于提供给第二事务“目标”域6(即,“从侧”)。源域4的总线宽度大于目标域6的总线宽度。
模块2从源域4中的设备(例如,主设备)接收读取事务,其中包含对读取地址(AR)通道的请求。模块2的转换器逻辑8通过将读取事务的宽度从源域4的较宽总线宽度减小到目标域6的较窄总线宽度并将每个事务拆分为适当数量的较小事务以供供应到目标域6,来分解读取事务。然后,读取(R)通道上的读取数据由模块2的部分(称为“READ FIFO”(先进先出)10)重新组合,其功能将在下文中详细描述。
转换器逻辑8根据通过源域4侧接收到的事务的突发长度,连同每个域4、6的相应总线宽度的先验知识,确定需要多少宽度和突发长度减小的事务。然后,可以由转换器逻辑8同时执行宽度和突发长度的减小。
除了减小读取事务的宽度和突发长度之外,在将它们转发到目标域之前,模块2(可选地,转换器逻辑8)可以允许不同的读取事务彼此旁通。具体地,在模块2接收到需要分解为多个子事务的第一读取事务,然后接收到比第一读取事务更短(即,突发长度更短)的第二读取事务时,在某些情况下可以允许第二事务旁通第一事务。这些特定情况是第二事务足够短以至于它不会被转换器逻辑8分解,它比旁通阈值参数短,并且它与不同于第一读取事务的事务ID相关联。
READ FIFO 10重新组合读取数据以利用源域4允许的宽度和突发长度。参考图2到图9更详细地描述READ FIFO 10的功能,其中图2到图9是表示READ FIFO 10的操作中各个阶段的示意图。
如图2所示,READ FIFO 10包括多个存储单元20a-20h,每个存储单元包括各自的数据寄存器22a-h和各自的链接寄存器24a-h。在图示的实例中,有八个这种存储单元20a-20h。尽管为了清楚起见图示八个存储单元,但实际上可以采用更多或更少的存储单元。
READ FIFO 10还包括三个列表,空闲列表26、“A”列表28和“B”列表30,其中“A”和“B”只是被选择来引用这些列表的任意标签。如下所描述,每个存储单元20a-20h在任何给定时间可以仅属于列表中的一个。空闲列表26由指定第一可用存储单元的Free Head(空闲头部)寄存器27a和指定最后可用存储单元的Free Tail(空闲尾部)寄存器27b定义,即,这些单元的数组索引。“A”列表由A Head寄存器29a和B Tail寄存器29b定义,其中A Head寄存器29a指定A列表中的第一存储单元(即,列表头部的存储单元的数组索引),而B Tail寄存器29b指定A列表中的最后存储单元(即,列表尾部的存储单元的数组索引)。“B”列表由BHead寄存器31a和B Tail寄存器31b定义,其中B Head寄存器31a指定B列表28中的第一存储单元,而B Tail寄存器31b指定B列表中的最后存储单元。READ FIFO 10还包括A USE寄存器32和B USE寄存器34,分别指示第一和第二列表是否在使用中,以及A ID寄存器36和B ID寄存器38,分别指示与数据相关联的事务ID存储在A列表和B列表中。
因此,Read FIFO 10定义了两个可用的“列表”或“通道”,它们可用于定义两个虚拟的先进先出通道,从中可以独立读取数据并且每个通道都可以以如下所描述的方式动态调整尺寸。尽管为了清楚起见仅图示了两个列表,但实际上可以采用更多列表。
在图2所示的配置中,没有数据存储在READ FIFO 10的任何存储单元20a-20h中,因此所有存储单元都在空闲列表中,所有数据寄存器22a-h为空。设置链接寄存器24a-24h中的值,使得每个存储单元的链接寄存器指向数组中具有以下索引的存储单元,即,单元20a指向单元20b,单元20b指向单元20c,依此类推。在一个单元指向另一个单元时,第一单元的链接寄存器的值被设置为第二单元的索引。空闲列表26在具有最高索引的单元22h处回绕,使得其链接寄存器24h指回单元20a。USE寄存器32、34指示列表A和B都不在使用中,并且它们各自的Head寄存器29a、31a和Tail寄存器29b、31b都指向单元20a。
图3显示图2的READ FIFO 10的替代表示。三个列表及其关联的寄存器都以相同的方式表示。不同之处在于,每个存储单元的寄存器没有显示,而是每个存储单元20a-20h用圆圈表示,并且存储单元中的每一个的链接寄存器的内容用箭头表示,链接到链接寄存器指向的存储单元20a-20h。
如上所描述,在图2和图3所示的配置中,没有数据存储在READ FIFO 10的任何存储单元20a-20h中。仅在模块2向目标域6发出子事务或发出事务之后才在READ FIFO 10处接收到数据,其中不需要缩小尺寸。
READ FIFO 10可能会影响这些事务或子事务的发出。具体而言,在向目标域6发出新的读取事务,即与新事务ID相关联的事务之前,模块2可检查有多少读取事务未完成,即,等待来自目标域6的从设备的数据返回。在这个实例中,有两个可用的“通道”A和B,因此如果有两个事务ID仍需要来自目标域6的数据(即,两个通道都在使用中),那么模块2将不再发送读取事务到目标域6,直到其中一个读取事务不再未完成,即与所述事务ID相关联的所有数据都已由READ FIFO 10接收并转发到源域4。
除了检查其中一个列表是否可用于容纳新事务之外,模块2还将在发送所述事务之前检查是否有足够的存储单元20a-20h可用,即不包含数据,以存储新事务所请求的数据。在没有足够数量的可用存储单元20a-20h的情况下,阻止模块2向目标域6发送新地址,直到已经存储在READ FIFO 10中的数据已经被转发到源域4,从而释放READ FIFO 10中的存储单元。
在确定事务(或一系列子事务)将被发送到目标域6的情况下,所述事务的属性还可以取决于READ FIFO 10的属性。具体来说,除了受目标域的最大事务突发长度限制外,子事务的尺寸还受FIFO中可用空间量的限制。模块2计算空闲列表26中所有存储单元的数据存储总量。如果子事务与现有列表的事务ID相关联(即,它不是所述事务ID的第一子事务),模块2将所述列表的任何部分-完整存储单元(未完成,即可用)包括在所述计算中。如果可用的数据存储量低于最大事务突发长度限制,那么在给定子事务中请求的读取数据量将限制为FIFO中可用的数据存储总量。此外,如果这个数量低于最小阈值参数,那么模块2将等待,直到在数据已转发到源域4时有更多空间可用,然后再将另一个子事务发送到目标域6,即,使得在每个子事务中总是请求超过最少数量的数据。
在检查给定子事务可以请求多少数据时,模块2必须考虑到某些数据可能“使用”整个数据寄存器,使得所讨论的寄存器是完成的,即使在接收到的数据没有填满寄存器的所有容量的情况下,例如在接收到的数据“窄”或“未对齐”的情况下,如下所描述。
图4显示在接收到事务ID为5的数据之后READ FIFO 10的状态。下文描述接收这个数据并将其存储在存储单元中的过程。这里,响应于模块6发送的子事务存储单元20a已用于存储从目标域6接收到的数据。
每个存储单元20a-20h是寄存器数组条目,其保存一拍数据,即,可在单个数据传送中发送到源域4的数据量,尽管每个单个数据传送可能需要多个时钟周期。这个数据可以被视为三个单独的值(每个可能包括多个位):“数据”值,包含数据内容;“最后”值,指示这是否是与给定事务ID相关联的最后数据;和“状态值”。
“状态值”可以指示四种不同的情况:
a)目标域6的从设备无法执行请求的操作
b)子事务地址无效
c)事务正常
d)独占事务正常
其中“独占事务”(或独占访问事务)是已知类型的事务,可在AXI总线布置中使用,如本特定实例中描述。
首先,READ FIFO 10针对接收到的数据检查与相同事务ID相关联的列表28、30是否已经在使用中,即是否已经存在用于所述ID的虚拟FIFO。如果已经存在与相同事务ID相关联的列表,那么READ FIFO 10检查已经存储在这个列表尾部的存储单元的数据寄存器中的“数据”值是否完成,即,是否由于已经存储在数据寄存器中的数据不再适合存储另外的数据,即,其数据存储能力此时“完成”。
数据寄存器可以完成,因为已经从目标域6接收到足够的数据并存储在所述数据寄存器中以填充数据寄存器的容量。在某些情况下,即使数据寄存器中的所有数据存储空间都没有被占用,存储单元的数据寄存器也可以被认为是“完成的”。例如,接收到的数据是“narrow(窄)”,表示事务的宽度比源域中数据的宽度窄,即,事务的尺寸字段小于源域数据的字节宽度的log2。这导致来自源域的具有无效部分(即,选通值0)的事务,在所述无效部分被分解时,可能会产生一个或多个完全无效的子事务,并且这种子事务可能会被过滤。这也可能是数据“未对齐”的情况,即,事务的地址以某种方式未对齐,使得有效数据开始超过(目标域的)第二总线宽度进入事务。同样,这可能会导致源域侧的一些无效字节被过滤,不会被转发到目标域6。在这些情况下,在READ FIFO 10从目标域接收到的数据的一部分被转发回源域4,即主域时,只有一部分数据是有效的。在这种情况下,在已从目标域6接收到有效数据时,存储这种接收到的数据的存储单元被认为已完成。
一旦数据寄存器完成,存储单元的内容就可以在一拍中被转发到源域。从目标域接收到的数据通常需要几拍才能填满存储单元。
如果相关联列表的Tail单元还没有被填满(并且由于某些其他原因没有完成),那么将接收到的数据添加到这个单元中。将接收到的数据“添加”到现有存储单元意味着将接收到的“数据值”附加到已经存储在数据寄存器中的“数据值”。这还意味着如果接收到的数据来自所述事务ID的最后子事务,那么“最后”值可能会更改,并且根据新接收到的数据的“状态”值重新计算“状态”值。
在上述条件中,a)条件是最高阶条件,直到d)条件是最低阶条件。如果将新数据添加到现有存储单元,那么重新计算存储单元的状态信息,以便存储单元的整体“状态”值是与存储单元中的任何数据相关联的最高阶条件,即,如果任何子事务都返回a)条件,存储单元的条件总体上将是a),反之亦然,对于将是d)的存储单元来说,与存储单元中的所有数据相关联的条件必须是对于状态值的d)。
如果列表28、30还没有与接收到的数据的事务ID相关联,或者如果列表尾部已与事务ID相关联的存储单元是完成的,那么将接收到的数据存储在新的存储单元中,特别是位于空闲列表26头部的存储单元,即,第一可用存储单元,在图3的实例中是存储单元20a。
通过与上文所描述类似的过程,将数据添加到存储单元20a。接收到的“数据值”被复制到存储单元20a的数据寄存器中,“状态”值也是如此,不需要重新计算,因为这是存储单元20a接收到的第一状态值。如果接收到的数据来自与事务ID相关联的最后子事务,那么也设置“Last(最后)”字段。
如果与接收到的数据的事务ID相关联的列表28、30不存在,那么为它分配当前未使用的列表28、30,在图3的实例中,它可以是列表A 28或列表B 30。在这个实例中,使用了List A 28。因此,A Use寄存器位32设置为1,并且A ID寄存器36设置为接收到的数据的ID,在这个实例中Transaction ID=5。这些变化如图4所示。
在任一情况下,无论对于事务ID列表是否已经在使用,由于存储单元20a现在已被用于存储数据,它被添加到对应于数据的事务ID的列表中,因此相应地从空闲列表26移除。这样一来,意味着存储单元20a从空闲列表26的头部移除,使得Free Head寄存器27a现在引用或“指向”单元20b,同时A列表的Tail寄存器29b引用存储单元20a,偶然地,图3的配置中已经是这种情况。
图5显示图4的READ FIFO 10,其中现在已接收到具有相同事务ID(ID=5)的附加数据。通过使用上述过程,存储单元20b现在已用于存储附加读取数据。从箭头可以看出,ATail寄存器29b现在指向存储单元20b,它现在是A列表28中的最后单元,而空闲列表26(也称为可用性列表)的Head寄存器27a指向存储单元20c。存储单元20a的链接寄存器24a不需要更新为指向存储单元20a,因为它已经指向所述存储单元,如图3所见。空闲列表26现在保存单元20c-20d-20e-20f-20g-20h,同时A列表28保存单元20a和20b。B列表30列表仍然为空。
图6显示图5的READ FIFO 10,其中与新事务ID、事务ID=8相关联的数据已被接收并存储在存储单元20c中。
作为这个存储的结果,B Use寄存器34已更新以显示B列表30现在正在使用中,并且B ID寄存器38也已更新为包含与现在存储在B列表30中的数据相关联的事务ID=8。BHead寄存器31a和B Tail寄存器31b都指向新添加的存储单元20c,存储单元20c已从空闲列表26中移除,Head寄存器27a现在指向存储单元20d(第一可用存储单元)。因此,空闲列表26现在保存单元20d-20e-20f-20g-20h。A列表28保存存储单元20a和20b,并且B列表30现在保存单元20c。
图7显示图6的READ FIFO 10,其中与事务ID=5(即,通道A)相关联的附加数据已被接收并添加到A列表28。为了存储这个附加数据,新的存储单元20d被添加到A列表中。为此,A Tail寄存器29b已经改变为指向存储单元20d,这指示它是A列表中的最后单元,并且A列表28的前一存储单元20b的链接寄存器24b已更新为指向存储单元20d,如图7中连接存储单元20b和20d的箭头所示。相应地,空闲列表26的Free Head寄存器27a已被更新为指向第一可用存储单元20e,即,未用于存储数据的第一存储单元。此后,空闲列表26保存单元20e-20f-20g-20h,A列表28保存单元20a-20b-20d,并且B列表30保存单元20c。
与从目标域6接收数据同时和/或穿插地,READ FIFO 10还可以将接收到的数据从每个存储单元发送到源域4。这个过程的结果如图8所图示,其中存储在列表A 28的单元20a中的数据现在已被转发到源域4。
在从目标域6接收到足够的数据时,READ FIFO 10的存储单元20a-20h被称为准备好发送,从而可以将一拍数据转发到源域4。
在从存储单元20a-20h向目标域发送数据时,与所选ID相关联的特定列表头部的存储单元的内容(例如,由A Head寄存器29a或B Head寄存器指示的存储单元31a)在一拍内被转发给主设备。然后,将数据已从其发送到源域6的存储单元移动到空闲列表26。如果此后的列表变为空,那么将所述列表的Use寄存器32、34和ID寄存器36、38设置为0,从而再次指示列表28、30可以使用。
在这个实例中,A列表28的第一存储单元20a准备好发送到源域4。为此,A列表头部的存储单元的数据寄存器22a的内容,如A Head寄存器29a所指示,即存储单元20a,在单拍中被发送到源域6,从而再次将存储单元20a留空。因此,存储单元20a移动到空闲列表26的尾部,如Free Tail寄存器27b所指示,即,Free Tail寄存器27b被更新为指向存储单元20a。A列表的新头部现在是单元20b,如A Head寄存器29a所指向的。空闲列表26现在保存单元20e-20f-20g-20h-20a,A列表28保存单元20b-20d,并且B列表30保存单元20c。
B列表30的存储单元20c也可以被转发到源域4,其结果如图9所图示。因此,FreeTail寄存器27b再次改变为指向新添加到空闲列表26的存储单元20c。此后,空闲列表26保存单元20e-20f-20g-20h-20a-20c。A列表28保存单元20b-20d,并且B列表30为空且不再使用。B Head寄存器31a不需要更新为指向B列表30中的下一存储单元,因为存储单元20c是B列表30中的最后(也是唯一的)存储单元,因此B列表30不再使用。因此,B Head寄存器31a和B Tail寄存器31b可以保持不变,直到B列表30用于新的事务ID。B USE寄存器34和B ID寄存器38都设置为0以反映B列表30不再使用。
在将头部单元20a、20c的内容转发到源域4时,模块2有时必须仲裁,即决定先从哪个列表转发数据分组。在这个特定实例中,在来自列表之一的某些单元的数据已经发送到源域4的情况下,模块2将决定继续从这个列表中的单元的数据寄存器发送数据。例如,根据图8的配置,如果模块2必须在发送(列表A的)存储单元20b和(列表B的)存储单元20c之间进行选择,它将发送存储单元20b(的数据内容),因为它属于列表A,并且来自先前属于列表A的存储单元20a的寄存器中的数据已经被发送到源域4,即,来自所述事务ID的数据已经被转发到源域4。这个仲裁可由READ FIFO 10完成,或可由模块2的另一部分完成。
如果数据存储在与两个不同事务ID相关联的READ FIFO 10中,但与任一事务ID相关联的数据尚未发送到源域4,例如如图7所图示,并且模块2需要仲裁发送哪个数据,它将从较短列表(即包含较少数量存储单元的列表)的第一单元发送数据,在这种情况下是存储单元20c(因为B列表30只包含这个存储单元,而A列表28包含三个存储单元)。
上述方法100的步骤也在图10的流程图中可见。在第一步骤102中,从事务源域接收读取事务,并将其分成多个子事务。在下一步骤104中,将这多个子事务中的第一子事务发送到事务目标域6。
接着,在步骤106,响应于将第一多个子事务中的子事务发送到事务目标域,READFIFO 10接收与第一事务ID相关联的第一数据。然后,在步骤108,将这个第一数据存储在第一存储单元的数据寄存器中,并且将第一存储单元分配给第一列表,如上所描述。
然后,针对与第二事务ID相关联的第二事务重复这个过程,以将与这个第二事务ID相关联的数据存储在READ FIFO 10的单独列表中,以便可独立访问,如上所描述。
具体地,方法还包括在步骤110,从事务源域接收与第二事务ID相关联的第二读取事务,并将这个事务分成多个子事务。在下一步骤112中,将这多个子事务中的第一(即,总体上是第二子事务)发送到事务目标域6。
接着,在步骤114,响应于将第二多个子事务中的子事务发送到事务目标域,READFIFO 10接收与第二事务ID相关联的第二数据。然后,在步骤116,将这个第二数据存储在第二存储单元的数据寄存器中,并且将第二存储单元分配给第二列表,如上所描述。
尽管未图示,但这种方法还可以包括以上参考图1到图9描述的任何或所有附加方法步骤。
本领域的技术人员将理解的是,已经通过描述本发明的一个或多个具体实施方案来说明本发明,但不限于这些实施方案;在所附权利要求的范围内,许多变化和修改是可能的。
Claims (23)
1.一种包括模块的电子设备,所述模块被配置为将数据总线事务从具有第一总线宽度的事务源域传送到具有小于所述第一总线宽度的第二总线宽度的事务目标域,
所述模块被配置为执行以下步骤:
从所述事务源域接收第一读取事务,与第一事务ID相关联并指示所述事务目标域的第一地址;
将所述第一读取事务分成第一多个子事务,其中所述第一多个子事务具有所述第二总线宽度;
将所述第一多个子事务发送到所述事务目标域;
从所述事务源域接收第二读取事务,与第二事务ID相关联并指示所述事务目标域的第二地址;
将所述第二读取事务分成第二多个子事务,其中所述第二多个子事务具有所述第二总线宽度;和
将所述第二多个子事务发送到所述事务目标域;
所述模块还包括:
多个存储单元,包括至少一个数据寄存器,用于存储从事务目标域接收的数据;
所述模块还被配置为执行以下步骤:
响应于将所述第一多个子事务中的子事务发送到所述事务目标域,接收与所述第一事务ID相关联的第一数据;
将所述第一数据存储在第一存储单元的所述数据寄存器中,并将所述第一存储单元分配给第一列表;和
响应于将所述第二多个子事务中的子事务发送到所述事务目标域,接收与所述第二事务ID相关联的第二数据;
将所述第二数据存储在第二存储单元的所述数据寄存器中,并将所述第二存储单元分配给第二列表;
使得所述数据可以相互独立地从所述第一列表和所述第二列表读出到所述事务源域。
2.根据权利要求1所述的电子设备,其中所述第一读取事务具有第一事务突发长度,并且其中所述模块被配置为执行以下步骤:
将所述第一读取事务分成所述第一多个子事务,其中所述第一多个子事务各自具有小于所述第一事务突发长度的相应第二事务突发长度。
3.根据权利要求1或2所述的电子设备,其中所述模块还被配置为执行以下步骤:
响应于将所述第一多个子事务中的另外子事务发送到所述事务目标域,接收与所述第一事务ID相关联的另外数据;
检查所述第一存储单元的所述数据寄存器是否完成;和
如果所述第一存储单元的所述数据寄存器未完成,那么将所述另外的数据添加到存储在所述第一存储单元的所述数据寄存器中的所述数据中;和
如果所述第一存储单元完成,那么将所述另外的数据存储在第三存储单元的所述数据寄存器中,并将所述第三存储单元分配给所述第一列表。
4.根据权利要求1或2所述的电子设备,其中所述模块还被配置为执行以下步骤:
检查所述多个存储单元中的每一个当前是否正在存储数据;和
如果所有所述存储单元当前都正在存储数据,那么不向所述目标域发送子事务,直到至少一个存储单元不再存储数据。
5.根据权利要求1或2所述的电子设备,其中所述模块还被配置为执行以下步骤:
在接收到来自所述源域的读取事务时,检查跨所述多个存储单元可用的存储空间的总量;和
如果可用存储空间的所述总量低于最小阈值参数,那么不向目标域发送子事务,直到数据从所述模块转发到所述目标域。
6.根据权利要求1或2所述的电子设备,其中所述模块还被配置为执行以下步骤:
在接收到来自所述源域的读取事务时,检查跨所述多个存储单元可用的存储空间的所述总量;和
如果可用存储空间的所述总量低于所述目标域的所述最大事务突发长度限制,那么将下一子事务的尺寸限制为可用存储空间的所述总量。
7.根据权利要求1或2所述的电子设备,其中所述模块定义了可分配所述多个存储单元的列表的总量,并且其中所述模块还被配置为执行以下步骤:
在从所述源域接收到另外的读取事务时,检查列表是否已经对应于与所述另外的读取事务相关联的所述事务ID;和
如果没有列表对应于所述事务ID,那么检查正在使用的列表数量是否等于列表的总数;和
如果正在使用的列表的总数等于列表的所述总数,那么不发送与所述另外的读取事务相关联的子事务到所述目标域,直到列表可用为止。
8.根据权利要求1或2所述的电子设备,其中每个存储单元还包括链接寄存器,用于引用所述存储单元中的另一个作为分配给所述同一列表的后续存储单元。
9.根据权利要求1或2所述的电子设备,其中所述模块还包括可用性列表,指示所述多个存储单元中可用于数据存储的子集。
10.根据权利要求1或2所述的电子设备,其中所述模块还被配置为执行以下步骤:
一旦满足发送条件,将所述数据从所述第一列表和/或所述第二列表中首先指定的所述存储单元的所述数据寄存器转发到所述源域,其中所述发送条件要求所述存储单元的所述数据寄存器完成。
11.根据权利要求1或2所述的电子设备,其中所述模块还被配置为执行以下步骤:
当所述第一列表中的存储单元和所述第二列表中的存储单元都可以发送到所述源域时,检查与所述第一列表或所述第二列表的事务ID相关联的数据是否已经发送到所述源域;和
如果与所述第一列表的所述事务ID相关联的数据已经发送到所述源域,那么转发所述第一列表中的所述第一存储单元;和
如果与第一列表的事务ID或第二列表的所述事务ID相关联的数据没有被转发到所述存储单元,那么检查所述第一列表还是所述第二列表包含较少数量的存储单元,并将数据从包含较少数量的存储单元的所述列表从来自存储单元的数据寄存器的数据转发到所述源域。
12.一种调解从具有第一总线宽度的事务源域到具有小于所述第一总线宽度的第二总线宽度的事务目标域的读取事务的方法,所述方法包括:
从所述事务源域接收第一读取事务,与第一事务ID相关联并指示所述事务目标域的第一地址;
将所述第一读取事务分成第一多个子事务,其中所述第一多个子事务具有所述第二总线宽度;
将所述第一多个子事务发送到所述事务目标域;
响应于将所述第一多个子事务中的子事务发送到所述事务目标域,接收与所述第一事务ID相关联的第一数据;
将所述第一数据存储在第一存储单元的所述数据寄存器中,并将所述第一存储单元分配给第一列表;
从所述事务源域接收第二读取事务,与第二事务ID相关联并指示所述事务目标域的第二地址;
将所述第二读取事务分成第二多个子事务,其中所述第二多个子事务具有所述第二总线宽度;
将所述第二多个子事务发送到所述事务目标域;
响应于将所述第二多个子事务中的子事务发送到所述事务目标域,接收与所述第二事务ID相关联的第二数据;
将所述第二数据存储在第二存储单元的所述数据寄存器中,并将所述第二存储单元分配给第二列表;和
将数据相互独立地从所述第一列表和所述第二列表读出到所述事务源域。
13.根据权利要求12所述的方法,其中所述第一读取事务具有第一事务突发长度,并且所述方法包括将所述第一读取事务分成所述第一多个子事务,其中所述第一多个子事务各自具有小于所述第一事务突发长度的相应第二子事务突发长度。
14.根据权利要求12或13所述的方法,其中所述方法还包括:
响应于将所述第一多个子事务中的另外子事务发送到所述事务目标域,接收与所述第一事务ID相关联的另外数据;
检查所述第一存储单元的所述数据寄存器是否完成;和
如果所述第一存储单元的所述数据寄存器未完成,那么将所述另外的数据添加到存储在所述第一存储单元的所述数据寄存器中的所述数据中;和
如果所述第一存储单元完成,那么将所述另外的数据存储在第三存储单元的所述数据寄存器中,并将所述第三存储单元分配给所述第一列表。
15.根据权利要求12或13所述的方法,其中所述方法还包括:检查所述多个存储单元中的每一个当前是否正在存储数据;和
如果所有所述存储单元当前都正在存储数据,那么不向所述目标域发送子事务,直到至少一个存储单元不再存储数据。
16.根据权利要求12或13所述的方法,其中所述方法还包括:在接收到来自所述源域的读取事务时,检查跨所述多个存储单元的可用存储空间的总量;和
如果可用存储空间的所述总量低于最小阈值参数,那么不向所述目标域发送子事务,直到数据从所述模块转发到所述目标域。
17.根据权利要求12或13所述的方法,其中所述方法还包括在接收到来所述自源域的读取事务时,检查跨所述多个存储单元的可用存储空间的所述总量;和
如果可用存储空间的所述总量低于所述目标域的所述最大事务突发长度限制,那么将所述下一子事务的尺寸限制为可用存储空间的所述总量。
18.根据权利要求12或13所述的方法,其中所述模块定义可以分配所述多个存储单元的列表的总数,并且所述方法还包括:在接收到来自所述源域的另外读取事务时,检查是否列表已经对应于与所述另外读取的事务相关联的所述事务ID;和
如果没有列表对应于所述事务ID,那么检查正在使用的列表数量是否等于列表的总数;和
如果正在使用的列表的总数等于列表的所述总数,那么不发送与所述另外的读取事务相关联的子事务到所述目标域,直到列表可用为止。
19.根据权利要求12或13所述的方法,其中每个存储单元还包括链接寄存器,用于引用所述存储单元中的另一个作为分配给所述同一列表的后续存储单元。
20.根据权利要求12或13所述的方法,其中所述模块还包括可用性列表,指示所述多个存储单元中可用于数据存储的子集。
21.根据权利要求12或13所述的方法,其中所述方法还包括:一旦满足发送条件,就将所述数据从所述第一列表和/或所述第二列表中首先指定的所述存储单元的所述数据寄存器转发到所述源域,其中所述发送条件要求所述存储单元的所述数据寄存器完成。
22.根据权利要求12或13所述的方法,其中所述方法还包括:当所述第一列表中的存储单元和所述第二列表中的存储单元都可以发送到所述源域时,检查与所述第一列表或所述第二列表的事务ID相关联的数据是否已经发送到所述源域;和
如果与所述第一列表的所述事务ID相关联的数据已经发送到所述源域,那么转发所述第一列表中的所述第一存储单元;和
如果与第一列表的事务ID或第二列表的所述事务ID相关联的数据没有被转发到所述存储单元,那么检查所述第一列表还是所述第二列表包含较少数量的存储单元,并将数据从包含较少数量的存储单元的所述列表从来自存储单元的数据寄存器的数据转发到所述源域。
23.一种非暂时性计算机可读介质,包括指令,所述指令在由处理器执行时使所述处理器执行根据权利要求12或13所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB2107393.7A GB202107393D0 (en) | 2021-05-24 | 2021-05-24 | Data bus communications |
GB2107393.7 | 2021-05-24 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115391257A true CN115391257A (zh) | 2022-11-25 |
Family
ID=76637645
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210570428.4A Pending CN115391257A (zh) | 2021-05-24 | 2022-05-24 | 数据总线通信 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220374369A1 (zh) |
EP (1) | EP4095706A1 (zh) |
CN (1) | CN115391257A (zh) |
GB (1) | GB202107393D0 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB202107392D0 (en) | 2021-05-24 | 2021-07-07 | Nordic Semiconductor Asa | Data bus bridge |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4198376B2 (ja) * | 2002-04-02 | 2008-12-17 | Necエレクトロニクス株式会社 | バスシステム及びバスシステムを含む情報処理システム |
US7543088B2 (en) * | 2004-03-11 | 2009-06-02 | Sonics, Inc. | Various methods and apparatuses for width and burst conversion |
US7457905B2 (en) * | 2005-08-29 | 2008-11-25 | Lsi Corporation | Method for request transaction ordering in OCP bus to AXI bus bridge design |
US7730244B1 (en) * | 2008-03-27 | 2010-06-01 | Xilinx, Inc. | Translation of commands in an interconnection of an embedded processor block core in an integrated circuit |
CN102004709B (zh) * | 2009-08-31 | 2013-09-25 | 国际商业机器公司 | 处理器局部总线到高级可扩展接口之间的总线桥及映射方法 |
KR101077900B1 (ko) * | 2010-04-09 | 2011-10-31 | 숭실대학교산학협력단 | 네트워크 효율성을 고려한 SoC 기반 시스템 네트워크에서의 인터페이스 장치의 통신방법 및 그에 의해 통신하는 인터페이스 장치 |
KR101733203B1 (ko) * | 2010-10-13 | 2017-05-08 | 삼성전자주식회사 | 아이디 컨버터를 포함하는 버스 시스템 및 그것의 변환 방법 |
JP6094321B2 (ja) * | 2013-03-28 | 2017-03-15 | 株式会社ソシオネクスト | バッファ回路及び半導体集積回路 |
US10764455B2 (en) * | 2018-12-31 | 2020-09-01 | Kyocera Document Solutions Inc. | Memory control method, memory control apparatus, and image forming method that uses memory control method |
US11782865B1 (en) * | 2021-06-02 | 2023-10-10 | Amazon Technologies, Inc. | Flexible data handling |
US12039192B2 (en) * | 2021-08-27 | 2024-07-16 | Micron Technology, Inc. | Efficient buffer management for media management commands in memory devices |
-
2021
- 2021-05-24 GB GBGB2107393.7A patent/GB202107393D0/en not_active Ceased
-
2022
- 2022-05-20 US US17/750,144 patent/US20220374369A1/en not_active Abandoned
- 2022-05-24 CN CN202210570428.4A patent/CN115391257A/zh active Pending
- 2022-05-24 EP EP22174984.9A patent/EP4095706A1/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
EP4095706A1 (en) | 2022-11-30 |
GB202107393D0 (en) | 2021-07-07 |
US20220374369A1 (en) | 2022-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7412571B2 (en) | Memory arbitration system and method having an arbitration packet protocol | |
US7320056B2 (en) | Multi-processor system | |
US5828901A (en) | Method and apparatus for placing multiple frames of data in a buffer in a direct memory access transfer | |
US6397316B2 (en) | System for reducing bus overhead for communication with a network interface | |
JP5872560B2 (ja) | 高速メモリ・システム | |
US7308523B1 (en) | Flow-splitting and buffering PCI express switch to reduce head-of-line blocking | |
CN110188059B (zh) | 数据有效位统一配置的流控式fifo缓存装置及方法 | |
CN115391257A (zh) | 数据总线通信 | |
US9665519B2 (en) | Using a credits available value in determining whether to issue a PPI allocation request to a packet engine | |
US9804959B2 (en) | In-flight packet processing | |
CN115964316A (zh) | 用于自动直接存储器访问数据格式化的硬件系统 | |
EP2096551A1 (en) | Channel device, information processing system and data transfer method | |
KR20220132333A (ko) | PCIe 인터페이스 장치 및 그 동작 방법 | |
JPH08212178A (ja) | 並列計算機 | |
JP4431492B2 (ja) | 複数のコヒーレンシー・グラニュールをサポートするデータ転送ユニット | |
US9548947B2 (en) | PPI de-allocate CPP bus command | |
WO2024174122A1 (zh) | 一种缓存路由结构、方法和芯片 | |
JP2003085125A (ja) | メモリ制御器及びメモリ制御方法 | |
US9559988B2 (en) | PPI allocation request and response for accessing a memory system | |
US9699107B2 (en) | Packet engine that uses PPI addressing | |
US9413665B2 (en) | CPP bus transaction value having a PAM/LAM selection code field | |
CN115658566A (zh) | 一种实现多通道数据流均衡的方法和系统 | |
CN118550857A (zh) | 一种数据传输方法、装置、电子设备以及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |