一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

桥接模块、数据传输系统和数据传输方法与流程

2022-02-19 15:45:01 来源:中国专利 TAG:


1.本发明涉及一种数据传输技术,尤其涉及一种桥接模块、数据传输系统和数据传输方法。


背景技术:

2.高级可扩展接口(advanced extensible interface,axi)协议是基于突发(burst)的传输协议。axi协议定义了5个独立的传输通道(读地址通道、读数据通道、写地址通道、写数据通道和写响应通道),以完成主装置(master)与从装置(slave)之间的数据传输。如图1所示,当主装置120从从装置130读取数据时,主装置120可以通过读地址通道(read address channel)将读请求req1(包含要读取的数据的地址和控制信息)发送给从装置130,然后从装置130根据读请求req1生成返回数据rd1,并将返回数据rd1通过读数据通道(read data channel)发送给主装置120。主装置120对从装置130每一次的数据读取过程称为一个事务(transaction),每一个事务以一个事务识别码(identifier,id)标识。在读取数据的流程中,主装置120生成一个事务id,并将事务id写入读请求req1、通过读地址通道发送给从装置130;从装置130会将事务id写入生成的返回数据rd1中、通过读数据通道一起发送给主装置120,以完成本次数据传输(读取数据)。
3.axi协议支持未完成(outstanding)传输和乱序(out

of

order)传输,但axi协议要求具有相同id的事务必须有序完成,而具有不同id的事务则可以乱序完成。举例来说,如图1所示,当主装置120要从从装置130读取第一数据和第二数据时,会先将读请求req1(包含第一数据的地址和控制信息)通过读地址通道发送给从装置130(对应事务t1);主装置120接收到返回数据rd1(对应第一数据)之前,就可以将读请求req2(包含第二数据的地址和控制信息)通过读地址通道发送给从装置130(对应事务t2),这称为未完成传输(即不需要等之前发送的读请求的返回数据返回,就可以发送下一笔读请求给从装置)。当事务t1、t2的事务id不相同时,从装置可以以任意次序将返回数据rd1、rd2(对应第二数据)发送给主装置120(比如,以rd2、rd1的顺序);这样从装置130可以优化数据读取顺序(比如虽然从装置接收到的数据读取请求顺序是req1、req2,但从装置根据自身的特性和当前状态,如果判断出以req2、req1的顺序读取数据用时会最短,则会改为以req2、req1的顺序读取数据),从而可以提高从装置130的处理效率,这称为乱序传输。但是,当事务t1、t2具有相同的事务id时,如果从装置130以rd2、rd1的顺序将返回数据发送给主装置120,将违反axi协议的要求;如果从装置以rd1、rd2的顺序将返回数据发送给主装置120,则会降低从装置130的处理效率。


技术实现要素:

4.为了解决上述问题,本发明提出一种桥接模块、数据传输系统和数据传输方法。
5.本发明提出一种桥接模块,耦接在主装置和从装置之间,所述桥接模块获得第一读请求,其中,所述第一读请求包含第一主事务识别码;所述桥接模块根据所述第一主事务
识别码为与所述第一读请求对应的第一返回数据分配第一数据存储空间,将所述第一主事务识别码和所述第一数据存储空间的地址连接,作为所述第一读请求的第一从事务识别码。所述桥接模块将所述第一读请求发送给所述从装置。所述桥接模块获得第二读请求,其中,所述第二读请求包含所述第一主事务识别码。所述桥接模块根据所述第一主事务识别码为与所述第二读请求对应的第二返回数据分配第二数据存储空间,将所述第一主事务识别码和所述第二数据存储空间的地址连接,作为所述第二读请求的第二从事务识别码,其中,所述第一数据存储空间与所述第二数据存储空间相邻、且所述第一数据存储空间在所述第二数据存储空间的前面。所述桥接模块将所述第二读请求发送给所述从装置。
6.本发明提出一种数据传输系统,包括主装置、从装置以及桥接模块,所述桥接模块耦接在所述主装置和所述从装置之间,所述桥接模块获得第一读请求,其中,所述第一读请求包含第一主事务识别码;所述桥接模块根据所述第一主事务识别码为与所述第一读请求对应的第一返回数据分配第一数据存储空间,将所述第一主事务识别码和所述第一数据存储空间的地址连接,作为所述第一读请求的第一从事务识别码。所述桥接模块将所述第一读请求发送给所述从装置。所述桥接模块获得第二读请求,其中,所述第二读请求包含所述第一主事务识别码。所述桥接模块根据所述第一主事务识别码为与所述第二读请求对应的第二返回数据分配第二数据存储空间,将所述第一主事务识别码和所述第二数据存储空间的地址连接,作为所述第二读请求的第二从事务识别码,其中,所述第一数据存储空间与所述第二数据存储空间相邻、且所述第一数据存储空间在所述第二数据存储空间的前面。所述桥接模块将所述第二读请求发送给所述从装置。
7.本发明提出一种数据传输方法,包含:获得第一读请求,其中,所述第一读请求包含第一主事务识别码;根据所述第一主事务识别码为与所述第一读请求对应的第一返回数据分配第一数据存储空间,将所述第一主事务识别码和所述第一数据存储空间的地址连接,作为所述第一读请求的第一从事务识别码;将所述第一读请求发送给从装置;获得第二读请求,其中,所述第二读请求包含所述第一主事务识别码;根据所述第一主事务识别码为与所述第二读请求对应的第二返回数据分配第二数据存储空间,将所述第一主事务识别码和所述第二数据存储空间的地址连接,作为所述第二读请求的第二从事务识别码,其中,所述第一数据存储空间与所述第二数据存储空间相邻、且所述第一数据存储空间在所述第二数据存储空间的前面;将所述第二读请求发送给所述从装置。
8.根据本发明提出的桥接模块、数据传输系统和数据传输方法,对于具有相同事务识别码的读请求,由于桥接模块已预先为与读请求对应的返回数据按读请求的接收顺序分配了数据存储空间,从而实现了对与读请求对应的返回数据的预先排序。由于对返回数据做了预先排序,从装置就可以以任意顺序把返回数据发送给桥接模块了,这样,既能提高从装置的处理效率,又能满足axi协议的规定。
附图说明
9.图1是现有技术中主装置从从装置读取数据的示意图;
10.图2是本发明一实施例的系统结构的示意图;
11.图3a~3c是本发明一实施例的系统结构的示意图;
12.图4a~4c是本发明另一实施例的系统结构的示意图;
13.符号说明
14.120:主装置
15.130:从装置
16.req1、req2、req3:读请求
17.rd1、rd2、rd3:返回数据
18.a1、a2、a3:地址
19.d1、d2、d3:数据
20.e1、e2、l1、l2:地址
21.210、310、410:桥接模块
22.id_1、id_2:主事务识别码
23.322、342、362、422、442、462:从事务识别码
24.324、344、364、424、444、464:数据地址
25.334、354、374、434、454、474:数据
26.320、340、360、420、440、460:读请求结构图
27.330、350、370、430、450、470:返回数据结构图
28.312_1、312_2、412:数据存储表
29.414_1、414_2:位置存储表
30.326、328、336、338、346、348、356、358、426、428、436、438、446、448、456、458、416、417、418:虚线箭头
具体实施方式
31.现将详细地参考本发明的示范性实施例,示范性实施例的实例说明于附图中。只要有可能,相同组件符号在附图和描述中用来表示相同或相似部分。
32.权利要求书中用以修饰组件的“第一”、“第二”、“第三”等序数词的使用本身未暗示任何优先权、优先次序、各组件之间的先后次序、或方法所执行的步骤的次序,而仅用作标识来区分具有相同名称(具有不同序数词)的不同组件。
33.在本发明中,在图1所示的主装置120和从装置130之间增加一个桥接模块。当主装置120采用未完成传输方式从从装置130读取数据时,对于具有相同事务识别码的读请求,桥接模块会按读请求的接收顺序预先为与其对应的返回数据分配数据存储空间,并将返回数据按其在数据存储空间中顺序发送给主装置120。下面将详细描述本发明。
34.为了便于阅读,在此先将后文中用到的一些名词定义如下:
35.主事务:是指由主装置发起的事务。当主装置发送读请求给桥接模块时,表示启动了一个主事务。当主装置接收到与读请求对应的返回数据后,就表示这个主事务结束了。
36.主事务id:是指由主装置生成的、包含在发送给桥接模块的读请求中、用于与其它主事务进行区分的事务id。
37.从事务:是指由桥接模块根据主事务生成的事务。为了将返回数据存入预先为其分配的数据存储空间,桥接模块把主事务id和与为其对应的数据存储空间的信息链接,作为从事务id。当桥接模块发送包含从事务id的读请求给从装置时,表示启动了一个从事务。
38.从事务id:是指由桥接模块生成的、包含在发送给从装置的读请求中、用于与其它
从事务进行区分的事务id。
39.连接:表示将信息拼接在一起,在本发明中以加号“ ”表示连接。例如,msg1 msg2表示将信息msg1和msg2拼接在一起,当msg1的值为“123”、msg2的值为“321”时,msg1 msg2的值为“123321”。
40.图2是本发明一实施例的系统结构的示意图。如图2所示,系统200可为一种应用高级可扩展接口(advanced extensible interface,axi)总线进行数据传输的系统。系统200包含桥接模块210、主装置120以及从装置130。桥接模块210耦接主装置120以及从装置130,并通过axi总线与主装置120以及从装置130进行通信。桥接模块210为一种由硬件电路实现的桥接电路,并且可例如包括由相关控制电路、多个缓冲存储器(buffer)以及数据传输接口等构成。在一实施例中,主装置120可例如是中央处理器,从装置130可例如是随机存取存储器(random access memory,ram)。
41.请参考图2,当桥接模块210从主装置120接收到多个具体相同主事务id的读请求时,会先为每个读请求对应的返回数据按读请求的顺序分配数据存储空间,并将读请求中的主事务id与所分配的数据存储空间的信息连接,作为从事务id。桥接模块210根据来自主装置120的读请求生成新的读请求,并将从事务id作为新生成的读请求的从事务id。然后,桥接模块210将新生成的读请求发送给从装置130。从装置130接收到新生成的读请求后,生成对应的返回数据(包含从事务id),并将返回数据发送给桥接模块210。桥接模块210接收返回数据后,根据返回数据中的从事务id中包含的数据存储空间的信息,将返回数据存入预先为其分配的数据存储空间。下面分别结合图3a、3b、3c和图4a、4b、4c,具体描述本发明中的桥接模块是如何重排序返回数据的。
42.图3a~3c为本发明一实施例的系统结构的示意图。如图3a所示,系统300包含桥接模块310、主装置120和从装置130,桥接模块310耦接在主装置120从装置130之间。桥接模块310包含数据存储表312_1、数据存储表312_2

,等等,每个数据存储表包含多个数据存储空间,用于存放具有相同主事务识别码的读请求的返回数据。为了便于描述,我们将数据存储表312_1、数据存储表312_2

等等,合称为多个数据存储表312(图示中未标号)。如图所示,数据存储表312_1包含多个数据存储空间,其第一个数据存储空间的地址为e1,其第二个数据存储空间的地址为e2。在一实施例中,所有数据存储表312存放在静态随机存储器(sram)中,其中,每个数据存储表为一个先进先出的队列。
43.下面同时参照图3a、3b、3c,以处理第一读请求req1、第二读请求req2和第三读请求req3为例,描述系统300是如何对返回数据(包含第一返回数据rd1、第二返回数据rd2和第三返回数据rd3)进行处理的。
44.请参考图3a,桥接模块310从主装置120接收第一读请求req1,其中,第一读请求req1包含第一主事务识别码id_1。然后,桥接模块310根据第一主事务识别码id_1为与第一读请求req1对应的第一返回数据rd1分配地址为e1的第一数据存储空间。具体而言,桥接模块310根据第一主事务识别码id_1从多个数据存储表312中选择第一数据存储表312_1,并在第一数据存储表312_1中为第一返回数据rd1分配地址为e1的第一数据存储空间(具体如何分配下文会详述)。然后,桥接模块310将第一主事务识别码id_1和第一数据存储空间的地址e1连接(id_1 e1),作为第一读请求req1的第一从事务识别码322。举例来说,图3a中的320说明第一读请求req1的结构,经过桥接模块310处理的第一读请求req1包含第一从事务
识别码322和第一数据地址324。第一从事务识别码322包含第一主事务识别码id_1和第一数据存储空间的地址e1。桥接模块310根据第一主事务识别码id_1从多个数据存储表312中选择第一数据存储表312_1(如虚线箭头328所示);桥接模块310在第一数据存储表312_1中为第一返回数据rd1分配地址为e1的第一数据存储空间(如虚线箭头326所示)。第一数据地址324为返回数据在从装置130中的存储空间的起始地址a1。
45.在一实施例中,桥接模块310根据第一主事务识别码id_1选择数据存储表、分配数据存储空间的步骤为:先判断是否已经为第一主事务识别码id_1分配了数据存储表,如果没有分配(判断结果为“否”),则为第一主事务识别码id_1分配一个数据存储表(比如第一数据存储表312_1);如果已分配(判断结果为“是”),则再判断为第一主事务识别码id_1分配的数据存储表(比如第一数据存储表312_1)中是否还有足够的空闲空间保存与第一读请求req1对应的返回数据rd1。本领域技术人员皆知,与第一主事务识别码id_1对应的返回数据rd1的尺寸可以根据第一读请求req1中的突发式读长度(arlen)和突发式读尺寸(arsize)计算出来,此处就不赘述了。如果为第一主事务识别码id_1分配的数据存储表的空闲空间尺寸大于或等于与第一读请求req1对应的返回数据rd1的尺寸,表示为第一主事务识别码id_1分配的数据存储表中有足够的空闲空间保存与第一读请求req1对应的返回数据rd1,桥接模块310为第一返回数据rd1分配第一数据存储空间;否则,表示为第一主事务识别码id_1分配的数据存储表中已经没有足够的空闲空间保存与第一读请求req1对应的返回数据rd1,桥接模块310会暂停处理第一读请求req1;直到为第一主事务识别码id_1分配的数据存储表有足够的空闲空间保存与第一读请求req1对应的返回数据rd1时,桥接模块310会才会继续处理第一读请求req1。
46.然后,桥接模块310将第一读请求req1发送给从装置130。接着,桥接模块310从主装置120接收第二读请求req2,其中,第二读请求req2也包含第一主事务识别码id_1(即第二读请求req2与第一读请求req1的主事务识别码相同)。请参照图3b,图3b中的340说明第二读请求req2的结构,由于第二读请求req2与第一读请求req1的主事务识别码相同,桥接模块310从多个数据存储表312中选择第一数据存储表312_1(如虚线箭头348所示),并在第一数据存储表312_1中为第二返回数据rd2分配地址为e2的第二数据存储空间(如虚线箭头346所示)。然后,桥接模块310将第一主事务识别码id_1和第二数据存储空间的地址e2连接(id_1 e2),作为第二读请求req2的第二从事务识别码。经过桥接模块310处理的第二读请求req2包含第二从事务识别码342和第二数据地址344。第二从事务识别码342包含第一主事务识别码id_1和第二数据存储空间的地址e2。第二数据地址344为返回数据rd2在从装置130中的存储空间的起始地址a2。然后,桥接模块310将第二读请求req2发送给从装置130。
47.需要注意的一点是,由于第一读请求req1和第二读请求req2具有相同的主事务识别码、且第一读请求req1在第二读请求req2的前面,为第一读请求req1分配的第一数据存储空间(地址为e1)和为第二读请求req2分配的第二数据存储空间(地址为e2)都位于第一数据存储表312_1、且相邻,其中第一数据存储空间在第二数据存储空间的前面。也就是说,具有相同主事务识别码的读请求的返回数据是按读请求的接收顺序存放在同一个数据存储表中的,不管返回数据是何时返回的,都需要被存放在为其预先分配好的存储空间中。所以,桥接模块310只需按数据存储表中的存储顺序将返回数据发送给主装置120,就可以满足axi协议要求。桥接模块310将一个返回数据发送给主装置120之后,如果下一个要发送的
返回数据还没被存入数据存储表中(即从装置130还没把相应的返回数据发送给桥接模块310),桥接模块310会暂停向主装置120发送返回数据的操作;直到下一个要发送的返回数据被存入数据存储表之后,再将其发送给主装置120。通过这种方式,桥接模块310实现了对返回数据的处理,并把返回数据按与其对应的读请求的接收顺序发送给了主装置120。
48.从装置130接收到第二读请求req2时,对第一读请求req1的处理情况可能存在多种状态:已处理完、正在处理或尚未处理第一读请求req1。下面以从装置130尚未处理第一读请求req1为例,描述从装置130处理第二读请求req2的过程。假定从装置130经判断后,决定先处理第二读请求req2、再处理第一读请求req1。
49.从装置130根据第二读请求req2从地址a2处开始读取数据d2,根据读取到的数据d2生成第二返回数据rd2,并将第二返回数据rd2发送给桥接模块310。接收到第二返回数据rd2后,桥接模块310根据第二返回数据rd2中包含的第二从事务识别码中的第二数据存储空间的地址e2,将第二返回数据rd2存入第二数据存储空间。请参照图3b,图3b中的350说明第二返回数据rd2的结构,第二返回数据rd2包含第二从事务识别码342和第二数据(d2)354。第二从事务识别码342中包含第一主事务识别码id_1和第二数据存储空间的地址e2,第二数据354值为d2。桥接模块310根据第一主事务识别码id_1选择第一数据存储表312_1(如虚线箭头358所示),根据第二数据存储空间的地址e2,将第二返回数据rd2中的数据d2存入第一数据存储表312_1中地址为e2的第二数据存储空间(如虚线箭头356所示)。后文会以第一读请求req1为例,详细描述从装置130生成返回数据、以及桥接模块310处理返回数据的过程。此时,由于还没接收到第一返回数据rd1,桥接模块310还不能把第二返回数据rd2发送给主装置120。
50.请参照图3a,从装置130根据第一读请求req1从地址a1处开始读取数据d1,根据读取到的数据d1生成第一返回数据rd1,并将第一返回数据rd1发送给桥接模块310。接收到第一返回数据rd1后,桥接模块310根据第一返回数据rd1中包含的第一从事务识别码322中的第一主事务识别码id_1和第一数据存储空间的地址e1,将第一返回数据rd1中的数据d1存入第一数据存储空间(后文会详细描述)。然后,桥接模块310会先从第一数据存储表312_1中地址为e1的第一数据存储空间读取第一返回数据rd1中的数据d1,将其发送给主装置120并将地址为e1的第一数据存储空间设置为空闲状态(即释放地址为e1的第一数据存储空间);然后再从第一数据存储表312_1中地址为e2的第二数据存储空间读取第二返回数据rd2中的数据d2,将其发送给主装置120并将地址为e2的第二数据存储空间设置为空闲状态(即释放地址为e2的第二数据存储空间)。
51.下面参照图3a、以第一返回数据rd1为例,详细描述从装置130如何根据读请求生成返回数据、如何将生成的返回数据发送给桥接模块310、以及桥接模块310如何存储接收到的返回数据。
52.从装置130从第一读请求req1的第一数据地址324取得数据地址a1,并根据第一读请求req1中的突发式读长度(arlen,未示出)和突发式读尺寸(arsize,图示中未示出)计算出要读取的数据长度len(图示中未示出,单位为字节)。从装置130从地址a1处开始,连续读取len字节的数据d1,然后,将第一从事务识别码(id_1 e1)和读取到的数据d1组合,生成第一返回数据rd1。图3a中的330说明第一返回数据rd1的结构,返回数据rd1包含第一从事务识别码322和第一数据334,第一从事务识别码322包含第一主事务识别码id_1和第一数据
存储空间的地址e1,第一数据334中包含数据d1。
53.接收到第一返回数据rd1后,桥接模块310根据第一从事务识别码322中的第一主事务识别码id_1选择第一数据存储表312_1(如虚线箭头338所示),然后根据第一从事务识别码322中的第一数据存储空间的地址e1,将第一返回数据rd1中的数据d1存入第一数据存储表312_1中地址为e1的第一数据存储空间(如虚线箭头336所示)。
54.值得注意的是,由于与第一返回数据rd1对应的第一读请求req1和与第二返回数据rd1对应的第二读请求req2具有相同的主事务识别码id_1,桥接模块310将第二返回数据rd2存入第二数据存储空间后,如果还没接收到第一返回数据rd1,桥接模块310就不会把第二返回数据rd2发送给主装置120,因为这样做会违反axi协议。为了满足axi协议,当桥接模块310接收到第一返回数据rd1,并将其发送给主装置120后,才可以把第二返回数据rd2发送给主装置120。
55.在另一实施例中,桥接模块310从主装置120接收读请求,并将接收到的读请求分割为第一读请求req1和第二读请求req2。具体来说,在主装置120发出的读请求所请求的数据长度大于从装置130返回的返回数据所能存放的数据的长度时,桥接模块310就需要将接收自主装置120的读请求分割为多个读请求来进行处理了。举例来说,如果一个来自主装置120的读请求要读取的数据的起始地址为a,请求的数据长度为100字节。在从装置130的返回数据中只能存放50个字节的数据的情况下,可以把读请求分割为第一读请求req1和第二读请求req2,其中第一读请求req1要读取的数据的起始地址为a、读取的数据长度为50字节,第二读请求req2要读取的数据的起始地址为a 50、读取的数据长度为50字节。
56.在一实施例中,为了标识分割后读请求的顺序,桥接模块310为每一分割后生成的读请求设置一个顺序号。例如,桥接模块310将需要分割的读请求分割后得到的分割后读请求的顺序号设置为大于0的值,比如,如果读请求被分割为2个分割后读请求(即分割条数为2),则将第一个分割后读请求的顺序号设置为1,将第二个分割后读请求的顺序号设置为2,以此类推;特别的,桥接模块310将不需要分割的读请求的顺序号设置为0。这样,桥接模块310在接收到返回数据时,就可以根据顺序号判断所接收到的返回数据所对应的读请求是否是分割后读请求;如果是分割后读请求(即顺序号大于0)对应的返回数据,接着可以利用顺序号将所接收到的返回数据合并为分割前读请求所对应的返回数据;如果不是分割后读请求(即顺序号为0)对应的返回数据,则无须对返回数据做合并处理。详细描述如下:
57.桥接模块310将第一读请求req1的顺序号设置为第一顺序号1,将第一主事务识别码id_1、第一数据存储空间的地址e1、第一顺序号1和分割条数2连接(id_1 e1 1 2),作为第一读请求req1的第一从事务识别码。桥接模块310将第二读请求req2的顺序号设置为第二顺序号2,将第一主事务识别码id_1、第二数据存储空间的地址e2、第二顺序号2和分割条数为2连接(id_1 e2 2 2),作为第二读请求req2的第二从事务识别码。然后,按照前文所述的处理流程,桥接模块310将第一读请求req1和第二读请求req2发送给从装置130;从装置130处理第一读请求req1和第二读请求req2,分别生成第一返回数据rd1和第二返回数据rd2,并将第一返回数据rd1和第二返回数据rd2发送给桥接模块310。
58.接收到第一返回数据rd1和第二返回数据rd2后,桥接模块310根据第一顺序号1、第二顺序号2和分割条数2将第一返回数据rd1和第二返回数据rd2合并为返回数据(即将第一返回数据rd1和第二返回数据rd2作为同一个主事务的返回数据),并将返回数据发送给
主装置120。举例来说,桥接模块310接收到第一返回数据rd1和第二返回数据rd2后,会将他们分别存入第一数据存储表312_1中预先为其分配好的地址为e1的第一数据存储空间和地址为e2的第二数据存储空间。桥接模块310从第一数据存储表312_1中读取一个返回数据(即第一返回数据rd1)后,根据其中的第一顺序号1和分割条数2就可以判断出第一返回数据rd1是一个读请求的第1个分割后读请求、且分割条数为2;然后桥接模块310会继续从第一数据存储表312_1中读取下一个返回数据(即第二返回数据rd2),根据其中的第二顺序号2和分割条数2就可以判断出第二返回数据是上述读请求的第2个分割后读请求、且上述读请求的所有分割后读请求的返回数据都返回了;然后,桥接模块310将第一返回数据rd1和第二返回数据rd2合并为返回数据,并将返回数据发送给主装置120。在另一实施例中,与接收自主装置120的读请求对应的分割条数会被存放在桥接模块310内部的一个分割表(图示中未示出)中,而不把分割条数写入从事务识别码中,以减小从事务识别码的长度;处理返回数据时,桥接模块310通过查询分割表获得每个读请求的分割条数,然后再根据从事务识别码中保存的分割顺序和分割条数对返回数据做合并处理。
59.请参考图3c,在另一实施例中,在还没有把第一读请求req1和第二读请求req2对应的第一返回数据rd1和第二返回数据rd2发送给主装置时,桥接模块310从主装置120接收第三读请求req3,其中第三读请求req3包含第二主事务识别码id_2,其中,第一主事务识别码id_1与第二主事务识别码id_2不同。图3c中的360说明第三读请求req3的结构,经过桥接模块310的第三读请求req3包含第三从事务识别码362和第三数据地址364。第三从事务识别码362包含第二主事务识别码id_2和第三数据存储空间的地址e3。桥接模块310先根据第二主事务识别码id_2选择第二数据存储表312_2(如虚线箭头368所示),再在第二数据存储表312_2中为与第三读请求req3对应的第三返回数据rd3分配地址为e3的第三数据存储空间(如虚线箭头366所示)。然后,桥接模块310将第二主事务识别码id_2和第三数据存储空间的地址e3连接(id_2 e3),作为第三读请求req3的第三从事务识别码362。需要注意的是,由于桥接模块310已经把数据存储表312_1分配给了第一主事务识别码id_1,此处就不能再把数据存储表312_1分配给第二主事务识别码id_2了。此时数据存储表312_2还没被分配给任何主事务识别码,所以可以把数据存储表312_2分配给第二主事务识别码id_2,并在数据存储表312_2中为与第三读请求req3对应的第三返回数据rd3分配地址为e3的第三数据存储空间。第三数据地址364为返回数据rd3在从装置130中的存储空间的起始地址a3。
60.然后,桥接模块310将第三读请求req3发送给从装置130。接收到第三读请求req3后,从装置130根据第三读请求req3从地址a3开始读取数据d3,根据读取到的数据d3生成第三返回数据rd3,然后将第三返回数据rd3发送给桥接模块310,其中,第三返回数据rd3中包含第三从事务识别码462。图3c中的370说明第三返回数据rd3的结构,第三返回数据rd3包含第三从事务识别码362和第三数据(d3)374。第三从事务识别码362包含第二主事务识别码id_2和第三数据存储空间的地址e3,第三数据374包含数据d3。桥接模块310根据第三返回数据rd3中包含的第三从事务识别码362中的第二主事务识别码id_2选择第二数据存储表312_2(如虚线箭头378所示),并将第三返回数据rd3中的数据d3存入第二数据存储表312_2中地址为e3的第三数据存储空间(如虚线箭头376所示)。至于从装置130如何根据第三读请求req3从地址a3处开始读取数据d3,根据读取到的数据d3生成第三返回数据rd3、如何将第三返回数据rd3发送给桥接模块310、以及桥接模块310如何存储第三返回数据rd3,
与处理第一读请求req1/第二读请求req2的步骤相同,此处就不赘述了。
61.保存好第三返回数据rd3后,桥接模块310在未接收到第一返回数据rd1或第二返回数据rd2时,就可以直接把第三返回数据rd3发送给主装置120。具体来说,由于第三返回数据rd3和第一返回数据rd1/第二返回数据rd2的主事务识别码不同,根据axi协议,桥接模块310可以不管是否已经把第一返回数据rd1/第二返回数据rd2发送给主装置120,而直接把第三返回数据rd3发送给主装置120。
62.图4a~4c为本发明另一实施例的系统结构的示意图。与图3a~3c所示的系统300不同,在图4所示的系统400中,桥接模块410只包含一个数据存储表412,而包含位置存储表414_1、位置存储表414_2

等等多个位置存储表,并且从事务识别码中包含的是位置存储空间的地址(而不是数据存储空间的地址)。为了便于后文的描述,我们把位置存储表414_1、位置存储表414_2

等等,合称为多个位置存储表414(图示中未标号)。
63.下面参照图4a~4c,以处理第一读请求req1、第二读请求req2和第三读请求req3为例,描述系统400是如何对返回数据(包含第一返回数据rd1、第二返回数据rd2和第三返回数据rd3)进行处理的。
64.如图4a所示,桥接模块410从主装置120接收第一读请求req1,其中,第一读请求req1包含第一主事务识别码id_1。桥接模块410根据第一主事务识别码id_1,为与第一读请求req1对应的第一返回数据rd1分配地址为l1的第一位置存储空间,并为第一返回数据rd1分配地址为e2的第一数据存储空间;然后,将第一数据存储空间的地址e2存入第一位置存储空间,将第一主事务识别码id_1和第一位置存储空间的地址l1连接(id_1 l1),作为第一读请求req1的第一从事务识别码。具体而言,图4a中的420说明第一读请求req1的结构,经桥接模块410处理的第一读请求req1包含第一从事务识别码422和第一数据地址424,其中第一从事务识别码422包含第一主事务识别码id_1和第一位置存储空间的地址l1。桥接模块410根据第一主事务识别码id_1选择第一位置存储表414_1(如虚线箭头428所示),在第一位置存储表414_1中为第一返回数据rd1分配地址为l1的第一位置存储空间(如虚线箭头426所示)。然后,桥接模块410为第一返回数据rd1在数据存储表412中分配地址为e2的第一数据存储空间,并将第一数据存储空间的地址e2存入地址为l1的第一位置存储空间(如虚线箭头416所示)。
65.在一实施例中,桥接模块410根据第一主事务识别码id_1选择位置存储表、分配位置存储空间的步骤为:先判断是否已经为第一主事务识别码id_1分配了位置存储表,如果没有分配(判断结果为“否”),则为第一主事务识别码id_1分配一个位置存储表(比如第一位置存储表414_1);如果已分配(判断结果为“是”),则再判断为第一主事务识别码id_1分配的位置存储表中是否还有足够的空闲空间保存与第一主事务识别码id_1对应的返回数据的数据存储空间的地址、以及数据存储表412中是否还有足够的空闲空间保存与第一主事务识别码id_1对应的返回数据。如果判断结果为“是”,桥接模块410为第一返回数据rd1分配第一位置存储空间、以及第一数据存储空间,然后将分配的第一数据存储空间的地址写入为其分配的第一位置存储空间;否则,桥接模块410会暂停处理第一读请求req1,直到为第一主事务识别码id_1分配的第一位置存储表中有足够的空闲空间保存与第一主事务识别码id_1对应的返回数据rd1的数据存储空间的地址、以及数据存储表412中还有足够的空闲空间保存与第一主事务识别码id_1对应的返回数据时,桥接模块410才会继续处理第
一读请求req1。
66.然后,桥接模块410将第一读请求req1发送给从装置130。接着,桥接模块410从主装置120接收第二读请求req2,其中,第二读请求req2也包含第一主事务识别码id_1(即第二读请求req2与第一读请求req1的主事务识别码相同)。图4b中的440说明第二读请求req2的结构,经过桥接模块410处理的第二读请求req2包含第二从事务识别码442和第二数据地址444。第二从事务识别码442包含第一主事务识别码id_1和第二位置存储空间的地址l2。由于第二读请求req2与第一读请求req1的主事务识别码相同,桥接模块410从多个位置存储表414中选择第一位置存储表414_1(如虚线箭头448所示),并在第一数据存储表414_1中为第二返回数据rd2分配地址为l2的第二位置存储空间(如虚线箭头446所示);然后,桥接模块410在数据存储表412中为第二返回数据rd2分配地址为e1的第二数据存储空间,并将所分配的第二数据存储空间的地址e1写入地址为l2的第二位置存储空间中(如虚线箭头417所示)。然后,桥接模块410将第一主事务识别码id_1和第二位置存储空间的地址l2连接(id_1 l2),作为第二读请求req2的第二从事务识别码442。第二数据地址444为返回数据rd2在从装置130中的存储空间的起始地址a2。然后,桥接模块410将第二读请求req2发送给从装置130。
67.需要注意的一点是,由于第一读请求req1和第二读请求req2具有相同的主事务识别码、且第一读请求req1在第二读请求req2的前面,为第一读请求req1分配的第一位置存储空间(地址为l1)与为第二读请求req2分配的第二位置存储空间(地址为l2)相邻、且第一位置存储空间在第二位置存储空间的前面。也就是说,具有相同主事务识别码的读请求的返回数据的存储位置信息是按读请求的接收顺序存放在同一个位置存储表中的,不管返回数据是何时返回的,其位置信息在位置存储表中的存放顺序都不会变化。所以,桥接模块410只需按位置存储表中的存储顺序将返回数据发送给主装置120,就可以满足axi协议要求。桥接模块410将一个返回数据发送给主装置120之后,如果下一个要发送的返回数据还没被存入数据存储表中(即从装置130还没把相应的返回数据发送给桥接模块410),桥接模块410会暂停向主装置120发送返回数据的操作,直到下一个要发送的返回数据被存入数据存储表之后,再将其发送给主装置120。通过这种方式,桥接模块410实现了对返回数据的处理,并把返回数据按与其对应的读请求的接收顺序发送给了主装置120。
68.与图3a~3c所示的实施例相同,图4a~4c所示的实施例也假定从装置130经判断后,决定先处理第二读请求req2、再处理第一读请求req1。
69.从装置130根据第二读请求req2生成第二返回数据rd2,然后将第二返回数据rd2发送给桥接模块410。接收到第二返回数据rd2后,桥接模块410根据第二返回数据rd2中包含的第二从事务识别码442中的第二位置存储空间的地址l2,将第二返回数据rd2存入第二数据存储空间。请参照图4b,图4b中的450说明第二返回数据rd2的结构,第二返回数据rd2包含第二从事务识别码442和第二数据454。第二从事务识别码442中包含第一主事务识别码id_1和第二位置存储空间的地址l2,第二数据454为d2。桥接模块410根据第一主事务识别码id_1选择第一位置存储表414_1(如虚线箭头458所示),根据第二位置存储空间的地址l2从第一位置存储表414_1中读取地址e1(如虚线箭头456所示),再将第二返回数据rd2存入数据存储表412中地址为e1的第二数据存储空间(如虚线箭头417所示)。后文会以第一读请求req1为例,详细描述从装置130生成返回数据、以及桥接模块410处理返回数据的过程。
此时,由于还没接收到第一返回数据rd1,桥接模块410还不能把第二返回数据rd2发送给主装置120。
70.从装置130根据第一读请求req1从地址a1处开始读取数据d1,根据读取到的数据d1生成第一返回数据rd1,然后将第一返回数据rd1发送给桥接模块410。接收到第一返回数据rd1后,桥接模块410根据第一返回数据rd1中包含的第一从事务识别码422中的第一主事务识别码id_1和第一位置存储空间的地址l1,将第一返回数据rd1存入第一数据存储空间(后文会详细描述)。然后,桥接模块410会先从第一数据存储空间读取第一返回数据rd1中的数据d1,将其发送给主装置120并将相应的第一数据存储空间、第一位置存储空间设置为空闲状态(即释放相应的第一数据存储空间、第一位置存储空间);然后再从第二数据存储空间读取第二返回数据rd2,将其发送给主装置120并将相应的第二数据存储空间、第二位置存储空间设置为空闲状态(即释放相应的第二数据存储空间、第二位置存储空间)。
71.下面参照图4a、以第一返回数据rd1为例,详细描述从装置130如何根据读请求生成返回数据、如何将生成的返回数据发送给桥接模块410、以及桥接模块410如何存储接收到的返回数据。
72.从装置130从第一读请求req1的第一数据地址424得到数据地址a1,并根据第一读请求req1中的突发式读长度(arlen,图示中未示出)字段和突发式读尺寸(arsize,图示中未示出)字段计算出要读取的数据长度len(图示中未示出,单位为字节)。从装置130从地址a1处开始,连续读取len字节的数据d1,然后,将第一从事务识别码(id_1 l1)和读取到的数据d1组合,生成第一返回数据rd1。图4a中的430说明第一返回数据rd1的结构,返回数据rd1包含第一从事务识别码字段422和第一数据434,第一从事务识别码字段422包含第一主事务识别码id_1和第一位置存储空间的地址l1,第一数据434中包含数据d1。
73.接收到第一返回数据rd1后,桥接模块410根据第一主事务识别码id_1选择第一位置存储表414_1(如虚线箭头438所示),然后根据第一从事务识别码422中的第一位置存储空间的地址l1从第一位置存储表414_1中读取第一数据存储空间的地址e2如虚线箭头436所示),并将第一返回数据rd1中的数据d1存入地址为e2的第一数据存储空间(如虚线箭头416所示)。
74.值得注意的是,由于与第一返回数据rd1对应的第一读请求req1和与第二返回数据rd2对应的第二读请求req2具有相同的主事务识别码id_1,桥接模块410将第二返回数据rd2存入第二数据存储空间后,如果还没接收到第一返回数据rd1,桥接模块410就不会把第二返回数据rd2发送给主装置120,因为这样做会违反axi协议。为了满足axi协议,当桥接模块410接收到第一返回数据rd1,并将其发送给主装置120后,才可以把第二返回数据rd2发送给主装置120。
75.在另一实施例中,桥接模块410从主装置120接收读请求,并将接收到的读请求分割为第一读请求req1和第二读请求req2。具体来说,在主装置120发出的读请求所请求的数据长度大于从装置130返回的返回数据所能存放的数据的长度时,桥接模块410就需要将接收自主装置的读请求分割为多个请求来进行数据的传输了。至于具体如何分割读请求,前文已经结合图3a~3c做了描述,此处就不赘述了。
76.为了标识分割后读请求的顺序,桥接模块410为每一分割后生成的读请求设置一个顺序号。例如,桥接模块410将第一读请求req1的顺序号设置为第一顺序号1,将第一主事
务识别码id_1、第一位置存储空间的地址l1、第一顺序号1和分割条数2连接(id_1 l1 1 2),作为第一读请求req1的第一从事务识别码。桥接模块410将第二读请求req2的顺序号设置为第二顺序号2,将第一主事务识别码、第二位置存储空间的地址l2、所述第二顺序号2和分割条数2连接(id_1 l2 2 2),作为第二读请求req2的第二从事务识别码。然后,按照前文所述的处理流程,桥接模块410将第一读请求req1和第二读请求req2发送给从装置130。从装置130处理第一读请求req1和第二读请求req2,分别生成第一返回数据rd1和第二返回数据rd2,并将第一返回数据rd1和第二返回数据rd2发送给桥接模块410。
77.接收到第一返回数据rd1和第二返回数据rd2后,桥接模块410根据第一顺序号1、第二顺序号1和分割条数2将第一返回数据rd1和第二返回数据rd2合并为返回数据(即将第一返回数据rd1和第二返回数据rd2作为同一个主事务的返回数据),并将返回数据发送给主装置120。至于如何合并第一返回数据rd1和第二返回数据rd2,前文已经结合图3a做了详细描述,此处就不赘述了。
78.请参照4c,在另一实施例中,在还没有把第一读请求req1和第二读请求req2对应的第一返回数据rd1和第二返回数据rd2发送给主装置时,桥接模块410从主装置120接收第三读请求req3,其中第三读请求req3包含第二主事务识别码id_2,其中,第一主事务识别码id_1与第二主事务识别码id_2不同。图4c中的460说明第三读请求req3的结构,经过桥接模块410的第三读请求req3包含第三从事务识别码462和第三数据地址464。第三从事务识别码462包含第二主事务识别码id_2和第三位置存储空间的地址l3。桥接模块410先根据第二主事务识别码id_2选择第二位置存储表414_2(如虚线箭头468所示),再在第二位置存储表414_2中为与第三读请求req3对应的第三返回数据rd3分配地址为l3的第三位置存储空间(如虚线箭头466所示),在数据存储表412中为第三返回数据rd3分配地址为e3的第三数据存储空间,将第三数据存储空间的地址e3存入第三位置存储空间(如虚线箭头418所示)。然后,桥接模块410将第二主事务识别码id_2和第三位置存储空间的地址l3连接(id_2 l3),作为第三读请求req3的第三从事务识别码462。需要注意的是,由于已经把位置存储表414_1分配给了第一主事务识别码id_1,此处就不能再把位置存储表414_1分配给第二主事务识别码id_2了。此时位置存储表414_2还没被分配给任何主事务识别码,所以可以把位置存储表414_2分配给第二主事务识别码id_2,并在位置存储表414_2为第三读请求req3分配地址为l3的第三位置存储空间。然后,桥接模块410在数据存储表412中为第三读请求req3分配地址为e3的第三数据存储空间,并把第三数据存储空间的地址e3写入地址为l3的第三位置存储空间。第三数据地址364为返回数据rd3在从装置130中的存储空间的起始地址a3。
79.然后,桥接模块410将第三读请求req3发送给从装置130。接收到第三读请求req3后,从装置130根据第三读请求req3生成第三返回数据rd3,然后将第三返回数据rd3发送给桥接模块410,其中,第三返回数据rd3中包含第三从事务识别码462。图4c中的470说明第三返回数据rd3的结构,第三返回数据rd3包含第三从事务识别码462和第三数据474。第三从事务识别码462包含第二主事务识别码id_2和第三位置存储空间的地址l3,第三数据474包含数据d3。桥接模块410根据第三返回数据rd3中包含的第三从事务识别码462中的第二主事务识别码id_2选择第二位置存储表414_2(如虚线箭头478所示),从第二位置存储表414_2中读取第三数据存储空间的地址e3,再将第三返回数据rd3中的数据d3存入地址为e3的第三数据存储空间(如虚线箭头476所示)。至于从装置130如何根据第三读请求req3从地址a3
处开始读取数据d3,根据读取到的数据d3生成第三返回数据rd3、如何将第三返回数据rd3发送给桥接模块410、以及桥接模块410如何存储第三返回数据rd3,与处理第一读请求req1/第二读请求req2的步骤相同,此处就不赘述了。
80.保存好第三返回数据rd3后,桥接模块410在未接收到第一返回数据rd1或第二返回数据rd2时,就可以直接把第三返回数据rd3发送给主装置120。具体来说,由于第三返回数据rd3和第一返回数据rd1/第二返回数据rd2的主事务识别码不同,根据axi协议,桥接模块410可以不管是否已经把第一返回数据rd1/第二返回数据rd2发送给主装置120,而直接把第三返回数据rd3发送给主装置120。
81.根据本发明提出的桥接模块可知,当桥接模块从主装置接收到多个具体相同主事务id的读请求时,可以为与每个读请求对应的返回数据按读请求的接收顺序预先分配数据存储空间,从而实现了对返回数据的预先排序。由于对返回数据做了预先排序,从装置就可以以任意顺序把返回数据发送给桥接模块了,这样,既能提高从装置的处效率,又能满足axi协议的规定。
82.根据本发明提出的桥接模块、数据传输系统和数据传输方法,对于具有相同事务识别码的读请求,桥接模块按读请求的接收顺序为每个读请求的返回数据预先分配数据存储空间,然后将读请求发送给从装置。从装置可以以任意顺序将读请求对应的返回数据发送给桥接模块。然后,桥接模块将返回数据存入预先为其分配号的数据存储空间,再将返回数据按其在数据存储空间中的顺序发送给主装置。这样,既能提高从装置的处理效率,又能满足axi协议的规定。
83.虽然本公开已以实施范例公开如上,然其并非用以限定本技术,本领域技术人员在不脱离本公开的精神和范围内,当可做些许更动与润饰,因此本技术的保护范围当视所附权利要求书界定范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献