CN101694646A - 一种不同速度总线间读传送的控制方法及系统 - Google Patents

一种不同速度总线间读传送的控制方法及系统 Download PDF

Info

Publication number
CN101694646A
CN101694646A CN200910235308A CN200910235308A CN101694646A CN 101694646 A CN101694646 A CN 101694646A CN 200910235308 A CN200910235308 A CN 200910235308A CN 200910235308 A CN200910235308 A CN 200910235308A CN 101694646 A CN101694646 A CN 101694646A
Authority
CN
China
Prior art keywords
category
bus
read
data
request
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.)
Granted
Application number
CN200910235308A
Other languages
English (en)
Other versions
CN101694646B (zh
Inventor
蔡飞
沈海华
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.)
Loongson Technology Corp Ltd
Original Assignee
Institute of Computing Technology of CAS
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 Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN2009102353083A priority Critical patent/CN101694646B/zh
Publication of CN101694646A publication Critical patent/CN101694646A/zh
Application granted granted Critical
Publication of CN101694646B publication Critical patent/CN101694646B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Bus Control (AREA)

Abstract

本发明公开了一种不同速度总线间读传送的控制方法,包括下列步骤:桥设备B类总线侧接口发出B类总线上的设备要请求A类总线一侧的数据的B类总线读请求,并将所述B类总线读请求的地址和数据标识送入请求FIFO,并从读FIFO中读取请求的数据并返回给B类总线上的设备;桥设备A类总线侧的接口从所述请求FIFO看到所述B类总线读请求后将所述B类总线读请求取出并开始在A类总线上发起A类总线读请求,对所述B类总线读请求所请求的读数据进行两个阶段的数据预取,并将A类总线上返回的读数据送入读FIFO。

Description

一种不同速度总线间读传送的控制方法及系统
技术领域
本发明涉及计算机系统数据传输技术领域,特别是涉及一种不同速度总线间读传送的控制方法及系统。
背景技术
计算机系统中通常使用一种叫做桥的芯片将不同的总线相互隔离。当一条总线上的设备要请求其它总线上的资源时,由桥负责将这条总线上的操作转换为其所请求资源所在总线上的操作。由于总线在物理和结构上的限制,每条总线上只能挂载数量有限的设备。因此很多计算机系统在结构上使用多条相互隔离的总线来提供系统功能的扩展。这些相互隔离的总线可以使用相同协议,也可以使用不同协议。不同总线间的协议转换由用来隔离这些总线的桥负责完成。经过桥的转换,一条总线上的设备就可以和其它总线上的设备相互交换数据。通常,桥对于与之相连的总线上的设备来说是透明的。在一条总线上的设备看来,桥也是这条总线上的设备。总线上的设备是通过向桥发送读写请求来和与桥相连的其它总线上的设备交换数据的。
美国专利号为6,460,108的专利中公开的方法,该方法的主要方案是:在写传送中,发起方总线的接口将数据写入写FIFO,目标方总线接口通过写FIFO的控制信号判断写FIFO中是否有足够的数据在目标方总线上发起一次写操作,如果写FIFO中有足够的数据就在目标方总线发起写操作;在读传送中,发起方总线接口向目标方总线接口提交请求后,目标方总线接口在目标方总线上发起操作并将接收到的数据写入读FIFO,当读FIFO中的数据量达到FIFO容量的一半(64字节)时,发起方总线接口开始在发起方总线上返回数据;只要读FIFO未满,目标方总线接口就保持在目标方总线上得数据预取直到发起方总线上返回了足够的数据。该方法的不足在于:读FIFO和写FIFO需要比较复杂的控制逻辑表明FIFO中的有效数据的长度,写数据需要在写FIFO中停留较长的时间,为了提高发起方总线在数据传送时的总线效率需要较大深度的写FIFO和读FIFO。在处理长度较短的读传送时,在目标方总线过度预取数据,进而对目标方总线的带宽造成较大浪费的缺点。
另外,中国专利号为ZL200510086446.1的专利中公开的方法,该方法的主要方案是:在写传送中,发起方总线接口将写数据送入写FIFO进行时钟域的转换,目标方总线接口看到写FIFO中的数据后利用写缓冲对写FIFO中的数据进行收集和格式转换后在目标方总线提交写数据;在读传送中,发起方总线接口通过写FIFO向目标方总线接口提交读请求,目标方总线接口在看到读请求后开始在目标方总线上开始对请求的数据进行预取,预取的数据从目标方总线返回后经过读缓冲进行格式转换后进入读FIFO,发起方总线接口从读FIFO看到有效数据后开始在发起方总线上返回数据,当目标方总线接口预取的数据量达到设定值或者发起请求的设备结束取数时目标方总线接口停止在目标方总线上的读数操作并将不需要的数据丢弃。该方法可以有效的减少不同速度的总线间发起读操作时数据返回的延迟并降低不同速度的总线间发起写操作时达到相同总线效率时所需要的写FIFO的深度以及写数据在总线上完成提交的延迟。上述两项专利中均存在相同的缺陷:即不同速度的总线间发起读传送时存在过度预取数据的问题。此外,中国专利号为ZL200510086446.1的专利中公开的方法还存在:不同速度的总线间发起读请求传送时总线上能够出现的最长的单次数据传送的长度受限于读FIFO的深度的缺陷。
发明内容
本发明的目的在于提供一种不同速度总线间读传送的控制方法,其是一种自适应的控制B类总线向A类总线发起读传送的方法,其通过在A类总线上对读数据进行两个阶段的预取,可以使B类总线上单次读传送能够传送的数据长度摆脱读FIFO大小的限制的同时减少过度预取对目标方总线带宽的浪费,实现快速高效地完成对A类总线的访问。
为实现本发明的目的而提供的一种不同速度总线间读传送的控制方法,包括下列步骤:
步骤A.桥设备B类总线侧接口发出B类总线上的设备要请求A类总线一侧的数据的B类总线读请求,并将所述B类总线读请求的地址和数据标识送入请求FIFO,并从读FIFO中读取请求的数据并返回给B类总线上的设备;
步骤B.桥设备A类总线侧的接口从所述请求FIFO看到所述B类总线读请求后将所述B类总线读请求取出并开始在A类总线上发起A类总线读请求,对所述B类总线读请求所请求的读数据进行两个阶段的数据预取,并将A类总线上返回的读数据送入读FIFO。
所述步骤A,包括下列步骤:
步骤A1.桥设备B类总线侧接口等待B类总线上的设备提交读请求,在接收到B类总线上的设备的B类总线读请求时,桥设备B类总线侧的接口在其接口内部的读记录中,记录已经提交的B类总线读请求;
步骤A2.桥设备B类总线侧的接口发现B类总线上的设备要请求A类总线一侧的数据的B类总线读请求后,桥设备B类总线侧的接口检查所述读记录,判断所述读记录的标识位是否有效,若是,则执行步骤A4;否则,执行步骤A3;
步骤A3.判断所述请求FIFO是否已满,若是,则执行步骤A7;否则,执行步骤A5;
步骤A4.判断所述B类总线读请求的地址和所述读记录中记录的地址是否相符,若是,则执行步骤A6;否则,执行步骤A7;
步骤A5.所述桥设备B类总线侧的接口在所述读记录中记录当前B类总线读请求并将该B类总线读请求送入所述请求FIFO,然后执行步骤A7;
步骤A6.所述桥设备B类总线侧的接口等待读FIFO的非空信号,读FIFO的非空信号有效则执行步骤A8;否则,执行步骤A7;
步骤A7.所述桥设备B类总线侧的接口执行PCI协议的重试操作,返回步骤A1;
步骤A8.所述桥设备B类总线侧的接口从读FIFO中读取数据并在B类总线上为设备返回读数据。
所述读记录,用于记录所述已经提交的B类总线读请求的记录,包含一个用于记录B类总线读请求地址的32位寄存器和一个标识B类总线读记录是否有效的1位寄存器。
步骤A8中,所述桥设备B类总线侧的接口在B类总线上每返回一个数据周期的数据,就将读记录标识中32位的地址寄存器的值增加一个数据周期数据的长度。
所述桥设备B类总线侧接口每在B类总线上返回长度为v1的数据并且请求数据的B类总线上设备尚未读取其所需全部数据时,就向桥设备A类总线侧接口发送一次增加预取信号;如果B类总线上当前读取数据的设备获得了其全部所需的数据,桥设备B类总线侧接口在产生读传送终止信号的同时执行步骤A1。
所述步骤B,包括下列步骤:
步骤B1.第一阶段数据预取:桥设备A类总线侧的接口从所述请求FIFO的读端口看到B类总线读请求后,将B类总线读请求取出并开始在A类总线上对B类总线上设备所需的读数据进行长度最长为v0的读数据预取,并将返回的读数据送入读FIFO;
步骤B2.第二阶段数据预取:根据桥设备B类总线侧的接口对B类总线上已传送的读数据的计数,每传送长度为阈值v1的读数据并且B类总线上设备尚未完成当前B类总线读请求则桥设备B类总线侧的接口通知桥设备A类总线侧的接口增加预取长度为阈值v1的数据,同时将A类总线上返回的读数据送入读FIFO。
步骤B3.A类总线侧接口停止未完成的预取读数据操作并丢弃读数据通路上所有的读数据;随后返回步骤B1;
所述步骤B1,包括下列步骤:
步骤B11.桥设备A类总线侧接口检查所述请求FIFO中是否有B类总线侧接口提交的新的读请求,若是,则执行步骤B12,否则保持步骤B11;
步骤B12.桥设备A类总线侧的接口从所述请求FIFO中将B类总线读请求的地址载入所述桥设备A类总线侧的接口中的地址计数器,同时将所述桥设备A类总线侧的接口中的预取数据计数器的值设为阈值v0,随后执行步骤B13;
步骤B13.判断是否收到B类总线侧接口发送的读传送终止信号,若是,则执行步骤B3;否则,执行步骤B14;
步骤B14.判断是否满足预取数据计数器的值等于0或者收到B类总线侧接口发送的增加预取信号二者其一,若任何一个得到满足,则执行步骤B2,进行第二阶段数据预取;否则执行步骤B15;
步骤B15.A类总线侧接口在A类总线上每发送一个A类总线读请求,预取数据计数器的值减去这个A类总线读请求在A类总线上读取数据的长度值,A类总线侧的接口上的待返回数据计数器的值增加当前A类总线读请求所请求的读数据的长度值;同时当读数据返回时,将预取的数据送入所述读FIFO,A类总线侧的接口上的待返回数据计数器的值减去当前返回的读数据的长度值;A类则侧接口在A类总线上完成一次读请求的发送后,返回步骤B13;
所述步骤B2,包括下列步骤:
步骤B21.判断是否收到B类总线侧接口发送的读传送终止信号,若是,则执行步骤B3;否则判断是否收到B类总线侧接口发送的增加预取信号,若是,则执行步骤B22,否则,保持步骤B21;
步骤B22.桥设备A类总线侧接口收到桥设备B类总线侧接口的增加预取信号,将所述预取数据计数器的值增加v1,将预取数据长度增加v1,判断是否收到B类总线侧接口发送的读传送终止信号,若是,执行步骤B3;否则返回步骤B21。
在B类总线侧接口为B类总线上设备返回读数据的过程中,如果读FIFO变空则执行下列步骤:
所述桥设备B类总线侧接口执行PCI总线协议所定义的disconnect-without-data操作。
所述地址计数器,是一个32位的寄存器,用于记录B类总线读请求的地址,A类总线侧接口在A类总线上每发送一个A类总线读请求,这个地址计数器值的大小就增加所请求数据的长度。
所述预取数据计数器,用于记录A类总线侧接口在A类总线上预取数据的长度,A类总线侧接口在A类总线上进行读数据预取时,每在A类总线上发送一次读请求,预取数据计数器的值就减少这个A类总线上的读请求所预取的读数的长度;当预取数据计数器为零时,A类总线侧接口停止在A类总线上发送用于预取读数据的A类总线读请求。
所述预取数据计数器所占用的位数不小于记录v0所需的最小位数。
所述待返回数据计数器,用于根据A类总线侧接口发送的A类总线读请求,以及A类总线侧接口向读FIFO中写入读数据,记录待返回的读数据长度,A类总线侧接口每发送一个A类总线读请求就将所述A类总线侧的接口上的待返回数据计数器的值增加当前A类总线读请求所预取的读数据的长度值;同时,A类总线侧接口每向读FIFO中写入一个读数据就将待返回数据计数器的值减去读取写入读FIFO的数据的长度。
待返回数据计数器所占用的位数不小于记录v0所需的最小位数。
v0的大小为v1的两倍;v1的值不小于桥设备A类总线侧的接口在A类总线上发起A类总线读请求到所请求的第一个读数据返回的时间内B类总线能够传送数据的最大长度。
为实现本发明的目的还提供一种不同速度总线间读传送的控制系统,所述系统包括:桥设备B类总线侧接口、请求FIFO存储模块、桥设备A类总线侧接口和读FIFO存储模块,其中:
所述桥设备B类总线侧接口,与所述请求FIFO存储模块连接,用于发出B类总线上的设备要请求A类总线一侧的数据的B类总线读请求,并将所述B类总线读请求的地址和数据标识送入请求FIFO存储模块;
所述请求FIFO存储模块,用于存储所述B类总线读请求的地址和数据标识;
所述桥设备A类总线侧接口,与所述请求FIFO存储模块连接,用于根据所述请求FIFO收到所述B类总线读请求后将所述B类总线读请求取出并开始在A类总线上发起A类总线读请求,对所述B类总线读请求所请求的读数据进行两个阶段的数据预取,并将A类总线上返回的读数据送入所述读FIFO存储模块;
所述读FIFO存储模块,与所述桥设备B类总线侧接口和所述桥设备A类总线侧的接口连接,用于接收桥设备A类总线侧接口返回的读数据并向所述桥设备B类总线侧接口返回所述读数据。
所述桥设备B类总线侧接口,包括:
读记录模块,用于记录已经提交的B类总线读请求的地址和数据标识;
读记录监测模块,用于监测所述读记录模块中的数据标识是否有效;
读记录地址匹配模块,用于判断所述B类总线读请求的地址和所述读记录中记录的地址是否相符;
信号发射模块,用于根据读数据传输情况,发出增加预取信号或读传送终止信号。
所述请求FIFO存储模块,包括:
请求FIFO计数器,用于判断所述请求FIFO存储模块是否已满。
所述读FIFO存储模块,包括:
读FIFO计数器,用于为所述读FIFO存储模块的读数据计数,并发出有效或无效的读FIFO的非空信号。
所述桥设备A类总线侧接口,包括:
地址计数器,用于记录从所述请求FIFO中提取的B类总线读请求的地址;
预取数据计数器,用于记录将从桥设备A类总线中的预取的数据的值;
待返回数据计数器,用于记录当前A类总线所有未完成的读请求所请求的读数据的长度值;
A类总线侧接口监测模块,用于根据所述地址计数器的值、所述预取数据计数器的值、待返回数据计数器的值,以及收到的信号发出控制信号。
本发明的有益效果是:
1.本发明的一种不同速度总线间读请求传送的控制方法及系统,克服了现有技术中控制PCI总线上设备向A类总线发起读操作时单次读传送的最大数据传送长度受限于读FIFO的长度的缺点,不受读FIFO大小的限制,实现快速访问;
2.本发明的一种不同速度总线间读请求传送的控制方法及系统,能够避免因为预取了无用的数据而过多地浪费了目标方总线的带宽;
3.本发明的一种不同速度总线间读请求传送的控制方法及系统,能够实现仅用固定的读FIFO资源来满足PCI总线上设备发起任意长度的读传送对读FIFO存储资源的需求。
附图说明
图1是本发明一种不同速度总线间读传送的控制方法的流程图;
图2是本发明中桥设备B类总线侧接口发出B类总线读请求过程的流程图;
图3是本发明中A类总线侧接口发出A类总线读请求过程的流程图;
图4是本发明中实现第一阶段数据预取的流程图;
图5是本发明中实现第二阶段数据预取的流程图;
图6是本发明一种不同速度总线间读传送的控制系统的结构示意图;
图7是本发明不同速度总线间读传送的控制系统一实施例的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的一种不同速度总线间读请求传送的控制方法及系统进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明的一种不同速度总线间读请求传送的控制方法及系统,提出了一种自适应的控制B类总线向A类总线发起读传送的方法,其通过在A类总线上对读数据进行两个阶段的预取,可以使B类总线上单次读传送能够传送的数据长度摆脱读FIFO大小的限制的同时减少过度预取对目标方总线带宽的浪费,实现快速高效地完成对A类总线的访问。
为了更好地说明本发明,首先对下面出现的一些概念进行解释:
先入先出队列(First Input First Output,FIFO),是一种传统的按序执行方法,先进入的指令先完成并引退,跟着才执行第二条指令。
FIFO的深度,是指FIFO可以存储多少个N位的数据(如果宽度为N)。如一个8位的FIFO,若深度为8,它可以存储8个8位的数据,深度为12,就可以存储12个8位的数据,FIFO的深度可大可小。在FIFO实际工作中,其数据的满/空标志可以控制数据的继续写入或读出。在一个具体的应用中也不可能由一些参数算数精确的所需FIFO深度为多少,这在写速度大于读速度的理想状态下是可行的,但在实际中用到的FIFO深度往往要大于计算值。一般来说根据电路的具体情况,在兼顾系统性能和FIFO成本的情况下估算一个大概的宽度和深度就可以了。而对于写速度慢于读速度的应用,FIFO的深度要根据读出的数据结构和读出数据的由那些具体的要求来确定。
目前如果按照总线上设备在收到数据请求时是否知道当前数据请求传送数据的长度来区分,常见的总线协议可分为两类:接收方在接收到数据请求时知道当前数据请求传送数据长度的总线协议、接收方在接收到数据请求时不知道当前数据请求传送数据长度的总线协议。计算机系统中常见的总线接口中,DDR总线协议、PCIX总线协议、PCI Express总线协议就属于前者,PCI总线协议、LPC总线协议则属于后者。
如果按照读传送中读请求和读数据的关系来区分,常见的总线协议可以分为两类:读请求和读数据分离的协议、读请求和读数据不分离的协议。在常见的总线协议中,DDR总线协议、PCIX总线协议、PCI Express总线协议就属于前者,PCI总线协议、LPC总线协议则属于后者。读请求和读数据分离的协议在读传送的过程中发出一个读请求后不必等待对应读数据的返回就可以发送下一个读传送的读请求。
为了方便叙述,本发明中将采用接收方在接收到数据请求时知道当前数据请求传送数据长度并且读请求和读数据分离的总线协议的总线称为A类总线;将采用接收方在接收到数据请求时不知道当前数据请求传送数据长度并且读请求和读数据不分离的总线协议的总线称为B类总线。
本发明中,A类总线拥有比B类总线更高的运行频率和更大的总线带宽。
A类总线读请求,是指桥设备A类总线侧接口向A类总线发出的读请求,是一种请求与数据分离的读请求。
B类总线读请求,是指桥设备B类总线侧接口发出B类总线上的设备要请求A类总线一侧的数据的读请求,是一种请求与数据不分离的读请求。
下面结合上述目标详细介绍本发明的一种不同速度总线间读传送的控制方法,图1是本发明一种不同速度总线间读传送的控制方法的流程图,如图1所示,以下将从桥设备B类总线侧接口发出B类总线读请求,和A类总线侧接口发出A类总线读请求两个过程分别说明本发明的方法,包括:
步骤100.桥设备B类总线侧接口发出B类总线上的设备要请求A类总线一侧的数据的B类总线读请求,从读FIFO中读取请求的数据并返回给B类总线上的设备。图2是本发明中桥设备B类总线侧接口发出B类总线读请求过程的流程图,如图2所示,此种情况下,执行如下步骤:
步骤110.桥设备B类总线侧接口等待B类总线上的设备提交读请求,在接收到B类总线上的设备的B类总线读请求时,桥设备B类总线侧的接口在其接口内部的读记录中,记录已经提交的B类总线读请求;
所述读记录,用于记录所述已经提交的B类总线读请求的记录,包含一个用于记录B类总线读请求地址的32位寄存器和一个标识B类总线读记录是否有效的1位寄存器。
步骤120.桥设备B类总线侧的接口发现B类总线上的设备要请求A类总线一侧的数据的B类总线读请求后,桥设备B类总线侧的接口检查所述读记录,判断所述读记录的标识位是否有效,若是,则执行步骤140;否则,执行步骤130;
所述读记录的标识位有效,表示当前读记录被B类总线读请求占用;无效,表示空闲,即当前读记录没有被B类总线读请求占用。该寄存器的值为1表示有效;值为0表示无效。该寄存器上电/复位时的值为0。当该寄存器为0(无效)并且请求FIFO未满的时候,如果桥设备B类总线侧的接口发现B类总线上的设备要请求A类总线的B类总线读请求后,桥设备B类总线侧接口将此B类总线读请求的地址写入请求FIFO并将B类总线读请求的地址写入读记录标识的32位地址寄存器中并将读记录的标识位修改为有效。
步骤130.判断所述请求FIFO是否已满,若是,则执行步骤170;否则,执行步骤150;
所述读记录的标识位无效,并且请求FIFO已满,则执行步骤170;
所述读记录的标识位无效,并且请求FIFO未满,则桥设备B类总线侧接口将此B类总线读请求的地址写入请求FIFO并将B类总线读请求的地址写入读记录标识的32位地址寄存器中并将读记录的标识位修改为有效,即执行步骤150。
步骤140.判断所述B类总线读请求的地址和所述读记录中记录的地址是否相符,若是,则执行步骤160;否则,执行步骤170;
所述读记录的标识位有效,并且所述B类总线读请求的地址和所述读记录中记录的地址相符,则表示当前读FIFO中的数据就是当前B类总线读请求所请求的数据,因此执行步骤160。
步骤150.所述桥设备B类总线侧的接口在所述读记录中记录当前B类总线读请求并将该B类总线读请求送入所述请求FIFO,然后执行步骤170;
步骤160.所述桥设备B类总线侧的接口等待读FIFO的非空信号,读FIFO的非空信号有效则执行步骤180;否则,执行步骤170;
所述读FIFO的非空信号有效,则表示读FIFO中有数据,并且该数据就是当前B类总线读请求所要请求的数据,那么则执行步骤180;否则,表示当前读FIFO中没有数据那么则需要重新发送B类总线读请求,执行步骤170。
读FIFO中的数据是由桥设备A类总线侧接口写入的,桥设备A类总线侧接口从提交A类总线上的读请求到此请求对应的读数据返回之间存在一定的延迟。由于桥设备中通常会出现多个功能部件竞争访问相同资源的情况,在某些极端的情况下这个延迟足够B类总线上的设备执行多次对桥设备B类总线侧接口的访问。B类总线上的设备再次访问桥设备B类总线侧接口时,桥设备A类总线侧接口没有及时写入B类总线上设备需要的数据时,就会出现读记录的标识位是否有效、B类总线读请求的地址和所述读记录中记录的地址相符,但当前读FIFO中没有数据的情况。
所述等待,是指等待8个PCI时钟周期。因为PCI协议规定从设备超时延迟时间是8个PCI时钟周期。
步骤170.所述桥设备B类总线侧的接口执行PCI协议的重试(retry)操作,返回步骤110;
步骤180.所述桥设备B类总线侧的接口从读FIFO中读取数据并在B类总线上为设备返回读数据。
所述桥设备B类总线侧的接口在B类总线上每返回一个数据周期的数据,就将读记录标识中32位的地址寄存器的值增加一个数据周期数据的长度。所述桥设备B类总线侧接口每在B类总线上返回长度为v1的数据并且请求数据的B类总线上设备尚未读取其所需全部数据时,就向桥设备A类总线侧接口发送一次增加预取信号。如果B类总线上当前读取数据的设备获得了其全部所需的数据,桥设备B类总线侧接口在产生读传送终止信号的同时执行步骤110。
步骤200.桥设备A类总线侧的接口从所述请求FIFO看到所述B类总线读请求后将所述B类总线读请求取出并开始在A类总线上发起A类总线读请求,对所述B类总线读请求所请求的读数据进行两个阶段的数据预取,并将A类总线上返回的读数据送入读FIFO。
较佳地,本发明中桥设备A类总线侧的接口通过在A类总线上对读数据进行两个阶段的预取,实现在B类总线上单次B类总线读请求能够传送的数据长度摆脱读FIFO大小的限制并且在A类总线上减少由于预取过度带来的带宽浪费,使得B类总线上的设备能够快速高效地完成向A类总线发起读请求。图3是本发明中A类总线侧接口发出A类总线读请求过程的流程图,如图3所示,桥设备A类总线侧的接口进行两个阶段的数据预取,执行如下步骤:
步骤210.第一阶段数据预取。桥设备A类总线侧的接口从请求FIFO的读端口看到B类总线读请求后,将B类总线读请求取出并开始在A类总线上对B类总线上设备所需的读数据进行长度最长为v0的读数据预取,并将返回的读数据送入读FIFO。
其中,v0的值由v1决定,较佳地,本发明中,v0的大小为v1的两倍。
较佳地,v1的值不小于桥设备A类总线侧的接口在A类总线上发起A类总线读请求到所请求的第一个读数据返回的时间内B类总线能够传送数据的最大长度。
图4是本发明中实现第一阶段数据预取的流程图,如图4所示,所述步骤210,包括下列步骤:
步骤211.桥设备A类总线侧接口检查所述请求FIFO中是否有B类总线侧接口提交的新的读请求,若是,则执行步骤212,否则保持步骤211;
步骤212.桥设备A类总线侧的接口从所述请求FIFO中将B类总线读请求的地址载入所述桥设备A类总线侧的接口中的地址计数器,同时将所述桥设备A类总线侧的接口中的预取数据计数器的值设为阈值v0,随后执行步骤213;
所述地址计数器,是一个32位的寄存器,用于记录B类总线读请求的地址。A类总线侧接口在A类总线上每发送一个A类总线读请求,这个地址计数器值的大小就增加所请求数据的长度。
所述预取数据计数器,用于记录A类总线侧接口在A类总线上需要预取数据的长度。预取数据计数器的值是一个浮动的值。A类总线侧接口在A类总线上进行读数据预取时,每在A类总线上发送一次读请求,预取数据计数器的值就减少这个A类总线上的读请求所预取的读数的长度;而当收到B类总线侧接口的“读传送终止信号”时,预取数据计数器的值归零;每当A类总线侧接口收到来自B类总线侧接口的“增加预取信号”时,预取数据计数器的值增加v1。当预取数据计数器为零时,A类总线侧接口停止在A类总线上发送用于预取读数据的A类总线读请求。预取数据计数器所占用的位数不小于记录v0所需的最小位数。
步骤213.判断是否收到B类总线侧接口发送的“读传送终止信号”,若是,则执行步骤230;否则,执行步骤214;
步骤214.判断是否满足预取数据计数器的值等于0或者收到B类总线侧接口发送的增加预取信号二者其一,若任何一个得到满足,则执行步骤220,进行第二阶段数据预取;否则执行步骤215;
本步骤中预取数据计数的值等于0,说明A类总线侧接口已经进行预取数据为v0的数据预取,但仍没有收到B类总线侧接口发送的B类总线读请求终止信号,这时第一阶段的数据预取已经完成,还需要进行第二阶段的数据预取,即执行步骤220。
步骤215.A类总线侧接口在A类总线上发送一个A类总线读请求,预取数据计数器的值减去这个A类总线读请求在A类总线上读取数据的长度值,所述A类总线侧的接口上的待返回数据计数器的值增加当前A类总线读请求所请求的读数据的长度值;同时当读数据返回时,将预取的数据送入读FIFO,A类总线侧的接口上的待返回数据计数器的值减去当前返回的读数据的长度值;A类则侧接口在A类总线上完成一次读请求的发送后,返回步骤213;
所述待返回数据计数器,用于根据A类总线侧接口发送的A类总线读请求,以及A类总线侧接口向读FIFO中写入读数据,记录待返回的读数据长度。待返回数据计数器的值是一个浮动的值,A类总线侧接口每发送一个A类总线读请求就将所述A类总线侧的接口上的待返回数据计数器的值增加当前A类总线读请求所预取的读数据的长度值;同时,A类总线侧接口每向读FIFO中写入一个读数据就将待返回数据计数器的值减去读取写入读FIFO的数据的长度。待返回数据计数器所占用的位数不小于记录v0所需的最小位数。
作为一种可实施方式,在上述第一阶段数据预取过程中,假设B类总线读请求所请求的读数据为b,A类总线读请求一次可以预取的读数据为a,那么存在如下情况:
1.a<b<v0;
此种情况下,桥设备A类总线侧的接口收到桥设备B类总线侧的接口的读传送终止信号,但还没预取到v0的读数据;
2.b<v0,b<a,且a<v0;
此种情况下,是A类总线侧接口在A类总线上发送一个A类总线读请求所请求的读数据已经满足B类总线读请求所请求的读数据;同样也是桥设备A类总线侧的接口收到桥设备B类总线侧的接口的读传送终止信号,但还没预取到v0的读数据;
3.a<v0<b;
此种情况下,是A类总线侧接口在A类总线上发送多个A类总线读请求所请求的读数据已经到达阈值v0,但仍然没有收到桥设备B类总线侧的接口的读传送终止信号,说明第一阶段预取的读数据不够,则需要进行第二阶段的数据预取。
步骤220,第二阶段数据预取。根据桥设备B类总线侧的接口对B类总线上已传送的读数据的计数,每传送长度为阈值v1的读数据并且B类总线上设备尚未完成当前B类总线读请求则桥设备B类总线侧的接口通知桥设备A类总线侧的接口增加预取长度为阈值v1的数据,同时将A类总线上返回的读数据送入读FIFO。
图5是本发明中实现第二阶段数据预取的流程图,如图5所示,所述步骤220,包括下列步骤:
步骤221.判断是否收到B类总线侧接口发送的读传送终止信号,若是,则执行步骤230;否则,执行步骤222;
步骤222.判断是否收到B类总线侧接口发送的增加预取信号,若是,则执行步骤223,否则,返回步骤221;
在第二数据预取阶段,只要预取数据计数器的值不为0,A类总线侧接口就需要进行数据预取操作。A类总线侧接口在A类总线上每发送一个A类总线读请求,预取数据计数器的值减去这个A类总线读请求在A类总线上读取数据的长度值,所述A类总线侧的接口上的待返回数据计数器的值增加当前A类总线读请求所请求的读数据的长度值;当读数据返回时,将预取的数据送入读FIFO,A类总线侧的接口上的待返回数据计数器的值减去当前返回的读数据的长度值;
每当B类总线上返回长度为v1的数据并且请求数据的B类总线上设备还没有获取其所需全部数据时,桥设备B类总线侧接口就向A类总线侧接口发送“增加预取信号”。如果在读取长度为v1的B类总线上设备所请求的读数据后,收到桥设备B类总线侧接口的增加预取信号就执行步骤223。
步骤223.桥设备A类总线侧接口收到桥设备B类总线侧接口的增加预取信号,将预取数据计数器的值增加v1,将预取数据长度增加v1并将返回的读数据送入读FIFO,返回步骤221;
较佳地,本发明中读FIFO的大小被设定为可以容纳长度为v0的读数据。由于本发明中v0=2v1,因此,每当B类总线侧接口为B类总线上的设备返回的读数据到达v1时,B类总线侧的接口将通知A类总线侧的接口增加预取长度为阈值v1的数据,使得读FIFO中存储的数据量始终不小于v1,这样在读FIFO开销不变的情况下,可以不受读FIFO大小的限制,实现快速访问。
较佳地,v1的值不小于桥设备A类总线侧的接口在A类总线上发起A类总线读请求到所请求的第一个读数据返回的时间(没有竞争的情况下)内B类总线能够传送数据的最大长度。
步骤230.A类总线侧接口停止未完成的预取读数据操作并丢弃读数据通路上所有的读数据;随后返回步骤211;
A类总线是请求和数据分离的总线。A类总线侧接口在发出一个读请求后,此请求对应的数据要经过一定的延迟才会返回。这个已经发出的读请求对应的数据是否返回是不影响A类总线侧接口在发送完这个请求后发送下面的读请求的。当A类总线侧接口收到B类总线侧接口发送的“读传送终止信号”时,可能出现A类总线侧接口已经在A类总线上发送了若干个用于预取数据的A类总线读请求,而这些读请求对应的数据还未返回的情况。出现这种情况后,A类总线侧接口需要根据待返回数据计数器的值将这些还未返回的读数据丢弃,以免影响处理B类总线侧接口提交新的读请求。
当桥设备A类总线侧的接口收到桥设备B类总线侧的接口的读传送终止信号时,桥设备A类总线侧的接口停止在A类总线上预取读数据的操作并丢弃所有未使用的数据后,桥设备A类总线侧的接口的所有状态复位。
在整个读传送过程中,无论是在第一数据预取阶段还是在第二数据预取阶段,在B类总线侧接口为B类总线上设备返回读数据的过程中,如果读FIFO变空则执行下列步骤:
所述桥设备B类总线侧接口执行PCI总线协议所定义的disconnect-without-data操作。
虽然此时B类总线侧接口同样也是发现读FIFO变空,但由于此时状态不同于上述步骤160中判断读FIFO为空的状态,因此执行的操作并不相同。步骤160是B类总线上设备发出请求A类总线上设备数据后,由于桥设备中通常会出现多个功能部件竞争访问相同资源的情况,在某些极端的情况下这个延迟足够B类总线上的设备执行多次对桥设备B类总线侧接口的访问,B类总线上的设备再次访问桥设备B类总线侧接口时,桥设备A类总线侧接口没有及时写入B类总线上设备需要的数据,即B类总线侧接口首次从读FIFO中读取数据时,发现读FIFO中没有数据,那么就需要桥设备B类总线侧的接口执行PCI协议的retry操作,重新提交B类总线读请求。
当B类总线侧接口首次从读FIFO中读取到A类总线侧接口返回的读数据后,会继续读取读所请求的数据,同时监测读FIFO是否变空,由于本发明是主要应用在桥芯片之中。在桥芯片上通常存在多个功能部件同时访问同一项资源的情况(例如内存控制器)。当访问同一个资源的功能部件较多时,有可能存在某个功能部件发送的请求在一定时间内得不到处理得情况。如果读FIFO的非空信号由有效→无效,那么就是本步骤描述的情况,即B类总线侧接口从读FIFO中读取A类总线侧接口返回的读数据的过程中,发现读FIFO变空,而此时B类总线上的设备还没有获得其所请求的全部数据。此时就需要B类总线侧接口和设备执行PCI总线协议中的disconnect without data操作。这个操作执行完成后,B类总线上请求数据的设备会从新发送请求读取接下来的数据。
相应于本发明一种不同速度总线间读传送的控制方法,还提供一种不同速度总线间读传送的控制系统,图6是本发明一种不同速度总线间读传送的控制系统的结构示意图,如图6所示,所述系统包括:
桥设备B类总线侧接口1,与所述请求FIFO存储模块2连接,用于发出B类总线上的设备要请求A类总线一侧的数据的B类总线读请求,并将所述B类总线读请求的地址和数据标识送入请求FIFO存储模块2;
请求FIFO存储模块2,用于存储所述B类总线读请求的地址和数据标识;
桥设备A类总线侧接口3,与所述请求FIFO存储模块2连接,用于根据所述请求FIFO收到所述B类总线读请求后将所述B类总线读请求取出并开始在A类总线上发起A类总线读请求,对所述B类总线读请求所请求的读数据进行两个阶段的数据预取,并将A类总线上返回的读数据送入所述读FIFO存储模块4;
读FIFO存储模块4,与所述桥设备B类总线侧接口1和所述桥设备A类总线侧的接口3连接,用于接收桥设备A类总线侧接口3返回的读数据并向所述桥设备B类总线侧接口1返回所述读数据。
其中,所述桥设备B类总线侧接口1,包括:
读记录模块11,用于记录已经提交的B类总线读请求的地址和数据标识;
读记录监测模块12,用于监测所述读记录模块11中的数据标识是否有效;
读记录地址匹配模块13,用于判断所述B类总线读请求的地址和所述读记录中记录的地址是否相符;
信号发射模块14,用于根据读数据传输情况,发出增加预取信号或读传送终止信号。
桥设备B类总线侧接口为桥设备A类总线侧接口提供“增加预取信号”、“读传送终止信号”。其中“读传送终止信号”还被用来清空读FIFO。此外桥设备B类总线侧接口还通过请求FIFO将其接受的B类总线上设备提交的读请求经过必要的转换(地址转换)后通过请求FIFO向桥设备A类总线侧设备提交。
所述请求FIFO存储模块2,包括:
请求FIFO计数器21,用于判断所述请求FIFO存储模块2是否已满。
所述读FIFO存储模块4,包括:
读FIFO计数器41,用于为所述读FIFO存储模块4的读数据计数,并发出有效或无效的读FIFO的非空信号。
所述桥设备A类总线侧接口3,包括:
地址计数器31,用于记录从所述请求FIFO中提取的B类总线读请求的地址;
预取数据计数器32,用于记录将从桥设备A类总线中的预取的数据的值;
A类总线侧接口在A类总线上每发送一个A类总线读请求,预取数据计数器的值减去这个A类总线读请求在A类总线上读取数据的长度值。
待返回数据计数器33,用于记录当前A类总线所有未完成的读请求所请求的读数据的长度值;
A类总线侧的接口上的待返回数据计数器的值增加当前A类总线读请求所请求的读数据的长度值;同时,当预取的数据被送入所述读FIFO,A类总线侧的接口上的待返回数据计数器的值减去当前返回的读数据的长度值。
A类总线侧接口监测模块34,用于根据所述地址计数器31的值、所述预取数据计数器32的值、待返回数据计数器33的值,以及收到的信号发出控制信号。
作为一种可实施方式,下面以PCI总线通过系统桥芯片与DDR内存总线进行读传送为例,详细说明本发明不同速度总线间读传送的控制系统的工作方法,图7是本发明不同速度总线间读传送的控制系统一实施例的结构示意图,如图7所示。
一、处理读请求的过程:
PCI TARGET接口逻辑S101在向请求FIFOS102提交读请求时在接口内部需要同时记录下这个已经提交的读请求。用于记录这个已经提交的读请求的记录包含32位的读地址和记录是否有效的标识位。当PCI TARGET接口逻辑S101接收到PCI设备的读请求时,PCI TARGET接口逻辑S101检查读记录和请求FIFOS102的控制信号。如果读记录标识位无效并且请求FIFOS102未满,PCITARGET接口逻辑S101就在读记录中记录这次请求并将读请求送入请求FIFOS102并执行PCI协议的retry操作。如果读记录标识位有效并且读请求的地址和读记录中的不符或者请求FIFOS102满,PCI TARGET接口逻辑S101执行PCI协议的retry操作。当读记录标识位有效并且读请求的地址和读记录中的相符时,PCI TARGET接口逻辑S101等待读FIFOS103的非空信号。当读FIFOS103非空时PCI TARGET接口逻辑S101开始在PCI总线上返回读数据。如果PCI TARGET接口逻辑S101不能在PCI协议中的初始等待周期许可的时间内返回数据,PCI TARGET接口逻辑S101执行retry操作。每返回一项读数据,读记录中的地址就做相应的增加。PCI TARGET每返回长度为v1的读数据就向内部总线MASTER接口S105发送一次增加预取读数据的信号。当开始返回读数据时,读FIFOS103一旦变空,PCI TARGET接口逻辑S101就执行disconnectwithout data操作。当请求数据的设备读到了其请求的最后一个数据时,PCITARGET接口逻辑S101清除读记录的有效位。当请求数据的设备读到了其请求的最后一个数据时,PCI TARGET接口逻辑S101向内部总线MASTER接口S105和读FIFOS103发送一个停止读操作的信号。
内部总线MASTER接口S105逻辑负责将通过请求FIFOS102传送过来的读/写命令转换为内部总线上的读/写操作,并负责将请求FIFOS102中的数据导入写缓冲区S104和将内部总线上返回的有效读数据送入读FIFOS103。
二、内部总线MASTER接口S105处理读传送的流程如下:
a)当内部总线MASTER接口S105从请求FIFOS102的读端口看到有效的读命令后,内部总线MASTER接口S105从请求FIFOS102中将地址载入接口的地址计数器并将预取数据计数器的值设为阈值v0后开始在内部总线上进行第一阶段对读数据的预取。内部总线MASTER接口S105在内部总线上每提交一个读请求就将预取数据计数器的值减去当前所发请求对应的有效数据的长度值并为待返回数据计数器增加当前所发请求对应的有效数据的长度值。内部总线MASTER接口S105将内部总线上返回的有效读数据送入读FIFOS103的同时将待返回数据计数器的值减去当前送入读FIFOS103中的数据的长度。当内部总线MASTER接口S105的预取数据计数器归零或者内部总线MASTER接口S105收到PCI TARGET接口逻辑S101的增加预取数据的信号时,如果内部总线MASTER接口S105尚未收到来自PCI TARGET接口逻辑S101的停止读操作信号则内部总线MASTER接口S105进入对读数据的第二阶段预取。当内部总线MASTER接口S105收到来自PCI TARGET接口逻辑S101的停止读操作信号时,内部总线MASTER接口S105停止所有未完成的预取操作并丢弃所有无用数据后重新进入等待新请求从请求FIFOS102的读端口到来的状态。
b)内部总线MASTER接口S105在预取读数据的第二阶段,每收到一次来自PCI TARGET接口逻辑S101的增加预取数据的信号就将预取读数据计数器增加阈值v1。在预取读数据的第二阶段,内部总线MASTER接口S105在预取读数据计数器非零时在内部总线上进行预取操作。每提交一个读请求就将预取数据计数器的值减去当前所发请求对应的有效数据的长度值并为待返回数据计数器增加当前所发请求对应的有效数据的长度值。内部总线MASTER接口S105将内部总线上返回的有效读数据被送入读FIFOS103的同时将待返回数据计数器的值减去当前送入读FIFOS103中的数据的长度。当内部总线MASTER接口S105收到来自PCI TARGET接口逻辑S101的停止读操作信号时,内部总线MASTER接口S105停止所有未完成的预取操作并丢弃所有无用数据后重新进入等待新请求从请求FIFOS102的读端口到来的状态。内部总线MASTER接口S105在因为收到PCI TARGET接口逻辑S101的增加预取数据的信号进入对读数据预取的第二阶段时将预取读数据计数器的值增加阈值v1。
这里的阈值v1的值被设定为内部总线MASTER接口S105在内部总线上发起一个读请求到所请求的第一个有效读数据返回的时间内PCI总线能够传送数据的最大长度向上按照DDR控制器采用的最大burst长度读一次读取的数据长度取整后获得的值。阈值v0的值为阈值v1的两倍。
PCI TARGET接口逻辑S101发送的停止信号需要送给读FIFOS103和内部总线MASTER接口S105。读FIFOS103在收到停止信号时需要清空读FIFOS103(所有的地址指针归位)。内部总线MASTER接口S105收到停止信号后需要停止将数据写入读FIFOS103,撤消在内部总线上的操作并丢弃所有已提交请求但数据尚未返回的读请求对应的数据。
本实施例中PCI总线为32位33MHZ的PCI总线,内部总线为64位的AXI总线。本实施例中的AXI总线的运行频率高于PCI总线。
本发明的有益效果在于:
1.本发明的一种不同速度总线间读请求传送的控制方法及系统,克服了现有技术中控制PCI总线上设备向A类总线发起读操作时单次读传送的最大数据传送长度受限于读FIFO的长度的缺点,不受读FIFO大小的限制,实现快速访问;
2.本发明的一种不同速度总线间读请求传送的控制方法及系统,能够避免因为预取了无用的数据而过多地浪费了目标方总线的带宽;
3.本发明的一种不同速度总线间读请求传送的控制方法及系统,能够实现仅用固定的读FIFO资源来满足PCI总线上设备发起任意长度的读传送对读FIFO存储资源的需求。
通过结合附图对本发明具体实施例的描述,本发明的其它方面及特征对本领域的技术人员而言是显而易见的。
以上对本发明的具体实施例进行了描述和说明,这些实施例应被认为其只是示例性的,并不用于对本发明进行限制,本发明应根据所附的权利要求进行解释。

Claims (20)

1.一种不同速度总线间读传送的控制方法,其特征在于,所述方法,包括下列步骤:
步骤A.桥设备B类总线侧接口发出B类总线上的设备要请求A类总线一侧的数据的B类总线读请求,并将所述B类总线读请求的地址和数据标识送入请求FIFO,并从读FIFO中读取请求的数据并返回给B类总线上的设备;
步骤B.桥设备A类总线侧的接口从所述请求FIFO看到所述B类总线读请求后将所述B类总线读请求取出并开始在A类总线上发起A类总线读请求,对所述B类总线读请求所请求的读数据进行两个阶段的数据预取,并将A类总线上返回的读数据送入读FIFO。
2.根据权利要求1所述的不同速度总线间读传送的控制方法,其特征在于,所述步骤A,包括下列步骤:
步骤A1.桥设备B类总线侧接口等待B类总线上的设备提交读请求,在接收到B类总线上的设备的B类总线读请求时,桥设备B类总线侧的接口在其接口内部的读记录中,记录已经提交的B类总线读请求;
步骤A2.桥设备B类总线侧的接口发现B类总线上的设备要请求A类总线一侧的数据的B类总线读请求后,桥设备B类总线侧的接口检查所述读记录,判断所述读记录的标识位是否有效,若是,则执行步骤A4;否则,执行步骤A3;
步骤A3.判断所述请求FIFO是否已满,若是,则执行步骤A7;否则,执行步骤A5;
步骤A4.判断所述B类总线读请求的地址和所述读记录中记录的地址是否相符,若是,则执行步骤A6;否则,执行步骤A7;
步骤A5.所述桥设备B类总线侧的接口在所述读记录中记录当前B类总线读请求并将该B类总线读请求送入所述请求FIFO,然后执行步骤A7;
步骤A6.所述桥设备B类总线侧的接口等待读FIFO的非空信号,读FIFO的非空信号有效则执行步骤A8;否则,执行步骤A7;
步骤A7.所述桥设备B类总线侧的接口执行PCI协议的重试操作,返回步骤A1;
步骤A8.所述桥设备B类总线侧的接口从读FIFO中读取数据并在B类总线上为设备返回读数据。
3.根据权利要求2所述的不同速度总线间读传送的控制方法,其特征在于,所述读记录,用于记录所述已经提交的B类总线读请求的记录,包含一个用于记录B类总线读请求地址的32位寄存器和一个标识B类总线读记录是否有效的1位寄存器。
4.根据权利要求2所述的不同速度总线间读传送的控制方法,其特征在于,步骤A8中,所述桥设备B类总线侧的接口在B类总线上每返回一个数据周期的数据,就将读记录标识中32位的地址寄存器的值增加一个数据周期数据的长度。
5.根据权利要求2所述的不同速度总线间读传送的控制方法,其特征在于,所述桥设备B类总线侧接口每在B类总线上返回长度为v1的数据并且请求数据的B类总线上设备尚未读取其所需全部数据时,就向桥设备A类总线侧接口发送一次增加预取信号;如果B类总线上当前读取数据的设备获得了其全部所需的数据,桥设备B类总线侧接口在产生读传送终止信号的同时执行步骤A1。
6.根据权利要求2所述的不同速度总线间读传送的控制方法,其特征在于,所述步骤B,包括下列步骤:
步骤B1.第一阶段数据预取:桥设备A类总线侧的接口从所述请求FIFO的读端口看到B类总线读请求后,将B类总线读请求取出并开始在A类总线上对B类总线上设备所需的读数据进行长度最长为v0的读数据预取,并将返回的读数据送入读FIFO;
步骤B2.第二阶段数据预取:根据桥设备B类总线侧的接口对B类总线上已传送的读数据的计数,每传送长度为阈值v1的读数据并且B类总线上设备尚未完成当前B类总线读请求则桥设备B类总线侧的接口通知桥设备A类总线侧的接口增加预取长度为阈值v1的数据,同时将A类总线上返回的读数据送入读FIFO。
步骤B3.A类总线侧接口停止未完成的预取读数据操作并丢弃读数据通路上所有的读数据;随后返回步骤B1。
7.根据权利要求6所述的不同速度总线间读传送的控制方法,其特征在于,所述步骤B1,包括下列步骤:
步骤B11.桥设备A类总线侧接口检查所述请求FIFO中是否有B类总线侧接口提交的新的读请求,若是,则执行步骤B12,否则保持步骤B11;
步骤B12.桥设备A类总线侧的接口从所述请求FIFO中将B类总线读请求的地址载入所述桥设备A类总线侧的接口中的地址计数器,同时将所述桥设备A类总线侧的接口中的预取数据计数器的值设为阈值v0,随后执行步骤B13;
步骤B13.判断是否收到B类总线侧接口发送的读传送终止信号,若是,则执行步骤B3;否则,执行步骤B14;
步骤B14.判断是否满足预取数据计数器的值等于0或者收到B类总线侧接口发送的增加预取信号二者其一,若任何一个得到满足,则执行步骤B2,进行第二阶段数据预取;否则执行步骤B15;
步骤B15.A类总线侧接口在A类总线上每发送一个A类总线读请求,预取数据计数器的值减去这个A类总线读请求在A类总线上读取数据的长度值,A类总线侧的接口上的待返回数据计数器的值增加当前A类总线读请求所请求的读数据的长度值;同时当读数据返回时,将预取的数据送入所述读FIFO,A类总线侧的接口上的待返回数据计数器的值减去当前返回的读数据的长度值;A类总线侧接口在A类总线上完成一次读请求的发送后,返回步骤B13。
8.根据权利要求6所述的不同速度总线间读传送的控制方法,其特征在于,所述步骤B2,包括下列步骤:
步骤B21.判断是否收到B类总线侧接口发送的读传送终止信号,若是,则执行步骤B3;否则判断是否收到B类总线侧接口发送的增加预取信号,若是,则执行步骤B22,否则,保持步骤B21;
步骤B22.桥设备A类总线侧接口收到桥设备B类总线侧接口的增加预取信号,将所述预取数据计数器的值增加v1,将预取数据长度增加v1,判断是否收到B类总线侧接口发送的读传送终止信号,若是,执行步骤B3;否则返回步骤B21。
9.根据权利要求2所述的不同速度总线间读传送的控制方法,其特征在于,在B类总线侧接口为B类总线上设备返回读数据的过程中,如果读FIFO变空则执行下列步骤:
所述桥设备B类总线侧接口执行PCI总线协议所定义的disconnect-without-data操作。
10.根据权利要求8所述的不同速度总线间读传送的控制方法,其特征在于,所述地址计数器,是一个32位的寄存器,用于记录B类总线读请求的地址,A类总线侧接口在A类总线上每发送一个A类总线读请求,这个地址计数器值的大小就增加所请求数据的长度。
11.根据权利要求8所述的不同速度总线间读传送的控制方法,其特征在于,所述预取数据计数器,用于记录A类总线侧接口在A类总线上预取数据的长度,A类总线侧接口在A类总线上进行读数据预取时,每在A类总线上发送一次读请求,预取数据计数器的值就减少这个A类总线上的读请求所预取的读数的长度;当预取数据计数器为零时,A类总线侧接口停止在A类总线上发送用于预取读数据的A类总线读请求。
12.根据权利要求8所述的不同速度总线间读传送的控制方法,其特征在于,所述预取数据计数器所占用的位数不小于记录v0所需的最小位数。
13.根据权利要求8所述的不同速度总线间读传送的控制方法,其特征在于,所述待返回数据计数器,用于根据A类总线侧接口发送的A类总线读请求,以及A类总线侧接口向读FIFO中写入读数据,记录待返回的读数据长度,A类总线侧接口每发送一个A类总线读请求就将所述A类总线侧的接口上的待返回数据计数器的值增加当前A类总线读请求所预取的读数据的长度值;同时,A类总线侧接口每向读FIFO中写入一个读数据就将待返回数据计数器的值减去读取写入读FIFO的数据的长度。
14.根据权利要求8所述的不同速度总线间读传送的控制方法,其特征在于,待返回数据计数器所占用的位数不小于记录v0所需的最小位数。
15.根据权利要求5或8所述的不同速度总线间读传送的控制方法,其特征在于,v0的大小为v1的两倍;v1的值不小于桥设备A类总线侧的接口在A类总线上发起A类总线读请求到所请求的第一个读数据返回的时间内B类总线能够传送数据的最大长度。
16.一种不同速度总线间读传送的控制系统,其特征在于,所述系统包括:桥设备B类总线侧接口、请求FIFO存储模块、桥设备A类总线侧接口和读FIFO存储模块,其中:
所述桥设备B类总线侧接口,与所述请求FIFO存储模块连接,用于发出B类总线上的设备要请求A类总线一侧的数据的B类总线读请求,并将所述B类总线读请求的地址和数据标识送入请求FIFO存储模块;
所述请求FIFO存储模块,用于存储所述B类总线读请求的地址和数据标识;
所述桥设备A类总线侧接口,与所述请求FIFO存储模块连接,用于根据所述请求FIFO收到所述B类总线读请求后将所述B类总线读请求取出并开始在A类总线上发起A类总线读请求,对所述B类总线读请求所请求的读数据进行两个阶段的数据预取,并将A类总线上返回的读数据送入所述读FIFO存储模块;
所述读FIFO存储模块,与所述桥设备B类总线侧接口和所述桥设备A类总线侧的接口连接,用于接收桥设备A类总线侧接口返回的读数据并向所述桥设备B类总线侧接口返回所述读数据。
17.根据权利要求16所述的不同速度总线间读传送的控制系统,其特征在于,所述桥设备B类总线侧接口,包括:
读记录模块,用于记录已经提交的B类总线读请求的地址和数据标识;
读记录监测模块,用于监测所述读记录模块中的数据标识是否有效;
读记录地址匹配模块,用于判断所述B类总线读请求的地址和所述读记录中记录的地址是否相符;
信号发射模块,用于根据读数据传输情况,发出增加预取信号或读传送终止信号。
18.根据权利要求16所述的不同速度总线间读传送的控制系统,其特征在于,所述请求FIFO存储模块,包括:
请求FIFO计数器,用于判断所述请求FIFO存储模块是否已满。
19.根据权利要求16所述的不同速度总线间读传送的控制系统,其特征在于,所述读FIFO存储模块,包括:
读FIFO计数器,用于为所述读FIFO存储模块的读数据计数,并发出有效或无效的读FIFO的非空信号。
20.根据权利要求16所述的不同速度总线间读传送的控制系统,其特征在于,所述桥设备A类总线侧接口,包括:
地址计数器,用于记录从所述请求FIFO中提取的B类总线读请求的地址;
预取数据计数器,用于记录将从桥设备A类总线中的预取的数据的值;
待返回数据计数器,用于记录当前A类总线所有未完成的读请求所请求的读数据的长度值;
A类总线侧接口监测模块,用于根据所述地址计数器的值、所述预取数据计数器的值、待返回数据计数器的值,以及收到的信号发出控制信号。
CN2009102353083A 2009-09-30 2009-09-30 一种不同速度总线间读传送的控制方法及系统 Active CN101694646B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009102353083A CN101694646B (zh) 2009-09-30 2009-09-30 一种不同速度总线间读传送的控制方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009102353083A CN101694646B (zh) 2009-09-30 2009-09-30 一种不同速度总线间读传送的控制方法及系统

Publications (2)

Publication Number Publication Date
CN101694646A true CN101694646A (zh) 2010-04-14
CN101694646B CN101694646B (zh) 2012-04-18

Family

ID=42093618

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009102353083A Active CN101694646B (zh) 2009-09-30 2009-09-30 一种不同速度总线间读传送的控制方法及系统

Country Status (1)

Country Link
CN (1) CN101694646B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103914394B (zh) * 2014-04-18 2017-06-23 龙芯中科技术有限公司 内存数据预取方法和装置
CN108230222A (zh) * 2017-12-06 2018-06-29 中国航空工业集团公司西安航空计算技术研究所 一种OpenGL显示列表调用电路

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5881253A (en) * 1996-12-31 1999-03-09 Compaq Computer Corporation Computer system using posted memory write buffers in a bridge to implement system management mode
US6460108B1 (en) * 1999-03-31 2002-10-01 Intel Corporation Low cost data streaming mechanism
CN100414524C (zh) * 2005-09-20 2008-08-27 中国科学院计算技术研究所 一种控制两种不同速度总线间数据传送的方法
CN101453296B (zh) * 2007-11-29 2012-06-13 中兴通讯股份有限公司 卷积Turbo码译码器的等待队列控制方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103914394B (zh) * 2014-04-18 2017-06-23 龙芯中科技术有限公司 内存数据预取方法和装置
CN108230222A (zh) * 2017-12-06 2018-06-29 中国航空工业集团公司西安航空计算技术研究所 一种OpenGL显示列表调用电路

Also Published As

Publication number Publication date
CN101694646B (zh) 2012-04-18

Similar Documents

Publication Publication Date Title
US7155554B2 (en) Methods and apparatuses for generating a single request for block transactions over a communication fabric
US10783104B2 (en) Memory request management system
US7797467B2 (en) Systems for implementing SDRAM controllers, and buses adapted to include advanced high performance bus features
CN100414524C (zh) 一种控制两种不同速度总线间数据传送的方法
JP2002530744A (ja) 多重レベル接続識別を備えた通信のシステムおよび方法
US6820165B2 (en) System and method for increasing the count of outstanding split transactions
US7277975B2 (en) Methods and apparatuses for decoupling a request from one or more solicited responses
TWI469048B (zh) 緩衝器、運算系統、電腦可讀取的媒體以及媒體及管線式處理元件中的緩衝方法
CN105068951A (zh) 一种具有非等时传输结构的片上系统总线
EP1733309B1 (en) Integrated circuit and method for transaction retraction
JP2006293927A (ja) ダイレクトメモリアクセス制御装置及びダイレクトメモリアクセス制御装置を含むシステムlsi
US7328312B2 (en) Method and bus prefetching mechanism for implementing enhanced buffer control
US8667199B2 (en) Data processing apparatus and method for performing multi-cycle arbitration
TWI463325B (zh) 電腦、嵌入式控制器及共享記憶體的方法
CN101694646B (zh) 一种不同速度总线间读传送的控制方法及系统
US20120303848A1 (en) System and method for allocating transaction id in a system with a plurality of processing modules
CN116303169A (zh) Dma控制装置和方法及芯片
EP1089501A2 (en) Arbitration mechanism for packet transmission
US7206886B2 (en) Data ordering translation between linear and interleaved domains at a bus interface
US6327636B1 (en) Ordering for pipelined read transfers
KR100622800B1 (ko) 버스를 통한 데이터 전송을 제어하는 방법, 시스템 및 컴퓨터 시스템
JP4440181B2 (ja) ストリーミングidメソッドによるdmac発行メカニズム
JP2003316724A (ja) 制御チップセット間の信号送信デバイス
US6240474B1 (en) Pipelined read transfers
CN1171154C (zh) 控制芯片组与其间的数据事务方法

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
EC01 Cancellation of recordation of patent licensing contract

Assignee: Longxin Zhongke Technology Co., Ltd.

Assignor: Institute of Computing Technology, Chinese Academy of Sciences

Contract record no.: 2010990000062

Date of cancellation: 20141231

EM01 Change of recordation of patent licensing contract

Change date: 20141231

Contract record no.: 2010990000062

Assignee after: Longxin Zhongke Technology Co., Ltd.

Assignee before: Beijing Loongson Zhongke Technology Service Center Co., Ltd.

LICC Enforcement, change and cancellation of record of contracts on the licence for exploitation of a patent or utility model
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20100414

Assignee: Longxin Zhongke Technology Co., Ltd.

Assignor: Institute of Computing Technology, Chinese Academy of Sciences

Contract record no.: 2015990000066

Denomination of invention: Method and system for controlling reading transfer among buses with different speeds

Granted publication date: 20120418

License type: Common License

Record date: 20150211

TR01 Transfer of patent right

Effective date of registration: 20200819

Address after: 100095, Beijing, Zhongguancun Haidian District environmental science and technology demonstration park, Liuzhou Industrial Park, No. 2 building

Patentee after: LOONGSON TECHNOLOGY Corp.,Ltd.

Address before: 100080 Haidian District, Zhongguancun Academy of Sciences, South Road, No. 6, No.

Patentee before: Institute of Computing Technology, Chinese Academy of Sciences

TR01 Transfer of patent right
EC01 Cancellation of recordation of patent licensing contract

Assignee: LOONGSON TECHNOLOGY Corp.,Ltd.

Assignor: Institute of Computing Technology, Chinese Academy of Sciences

Contract record no.: 2015990000066

Date of cancellation: 20200928

EC01 Cancellation of recordation of patent licensing contract
CP01 Change in the name or title of a patent holder

Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing

Patentee after: Loongson Zhongke Technology Co.,Ltd.

Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing

Patentee before: LOONGSON TECHNOLOGY Corp.,Ltd.

CP01 Change in the name or title of a patent holder