一种控制两种不同速度总线间数据传送的方法技术

技术编号:2843952 阅读:288 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种控制两种不同速度总线间数据传送的方法。该方法包含:传送不同方向数据用的读FIFO和写FIFO、用于从写FIFO中收集写数据的写缓冲区0和写缓冲区1、用于在另外一条总线的数据进入读FIFO前缓冲数据的读缓冲区。本发明专利技术的优点有:1)读、写FIFO的控制逻辑相对简单;2)以较小的写FIFO深度就可以在发起方总线上获得理想的效率;3)写数据在写FIFO中停留的时间短,可以尽早地在目标方总线上发起写操作;4)以流水的方式处理读数据地传送;5)通过目标方总线接口地读写缓冲区处理发起方总线和目标方总线宽度不一致地情况。本发明专利技术可应用于控制两种不同速度总线间数据传送的桥接芯片的设计中。

【技术实现步骤摘要】

本专利技术涉及控制总线间数据传送的方法,特别涉及。
技术介绍
计算机系统中通常使用一种叫桥的芯片将不同的总线相互隔离。当一条总线上的设备要请求其它总线上的资源时,由桥负责将这条总线上的操作转换为其所请求资源所在总线上的操作。由于总线在物理和结构上的限制,每条总线上只能挂载数量有限的设备。因此很多计算机系统在结构上使用多条相互隔离的总线来提供系统功能的扩展。这些相互隔离的总线可以使用相同协议,也可以使用不同协议。不同总线间的协议转换由用来隔离这些总线的桥负责完成。经过桥的转换,一条总线上的设备就可以和其它总线上的设备相互交换数据。通常,桥对于与之相连的总线上的设备来说是透明的。在一条总线上的设备看来,桥也是这条总线上的设备。总线上的设备就是通过向桥发送读写请求来和与桥相连的其它总线上的设备交换数据的。目前,已知的控制两种不同速度总线间数据传送的方法,比如文献1Low costdata streaming mechanism(美国专利号6,460,108)中公开的方法,该方法的主要方案是在写传送中,发起方总线的接口将数据写入写FIFO(先入先出队列,FIFO是以first in first out方式组织的队列,以下简称FIFO),目标方总线接口通过写FIFO的控制信号判断写FIFO中是否有足够的数据在目标方总线上发起一次写操作,如果写FIFO中有足够的数据就在目标方总线发起写操作;在读传送中,发起方总线接口向目标方总线接口提交请求后,目标方总线接口在目标方总线上发起操作并将接收到的数据写入读FIFO,在读FIFO中数据长度达到阈值时发起方总线接口开始在发起方总线上返回数据,当读FIFO满或者已经在发起方总线上返回了足够的数据时目标方总线接口终止在目标方总线上的读操作。但是,文献1中方法的不足在于读FIFO和写FIFO需要比较复杂的控制逻辑表明FIFO中的有效数据的长度,写数据需要在写FIFO中停留较长的时间,为了提高发起方总线在写传送时的效率需要较大深度的写FIFO。当发起方总线和目标方总线的宽度不一致时文献1中的方法就不适用了,并且文献1并没有提及在读传送过程中,当目标方总线接口在向读FIFO中写入数据时发起方终止读操作的情况如何处理。
技术实现思路
本专利技术的目的是克服已知技术的不足,提供,该方法通过流水的方式处理总线设备间的读写请求,能够快速高效地完成访问。为了达到上述目的,本专利技术采取的技术方案如下,包括对于写数据过程,包括如下步骤a)桥设备第一总线侧的接口发现该第一总线上的设备要将数据发送给第二总线;b)桥设备接收第一总线上设备的写请求并把所写的地址和数据依次写入写FIFO;c)桥设备第二总线侧的接口只要发现写FIFO非空就将写FIFO中的数据读入第一写缓冲区中直至第一写缓冲区被写满或读入第一总线设备写入的最后一个数据;d)桥设备第二总线侧的接口将第一写缓冲区中准备好的数据读取到第二总线上直至读完第一写缓冲区中的数据,在将第一写缓冲区的数据读取到第二总线上的同时桥设备第二总线侧的接口继续将写FIFO中的数据写入第二写缓冲区中直至第一写缓冲区中的数据全部在第二总线上传送完或者第二写缓冲区满或者第一总线1侧设备写入的最后一个数据进入第二写缓冲区;e)判断第二写缓冲区是否准备好?(第二写缓冲区准备好是指第二写缓冲区满或者第一总线设备写入的最后一个数据进入第二写缓冲区),如果是,执行下一步骤f);如果否,继续从写FIFO中读取数据到第二写缓冲区中直至第二写缓冲区准备好,然后执行步骤f);f)交换第二写缓冲区和第一写缓冲区的位置;g)重复步骤f)-e)直到第一总线设备的最后一个写数据传送到第二总线上。在上述技术方案中,所述第一总线指PCI总线、LPC总线或者其它接收方在地址周期时不知道传送数据长度的总线,所述第二总线指DDR总线或者桥片内部与内存控制器相连的内部总线。在上述技术方案中,所述第二总线有比第一总线更宽的数据宽度和更高的频率;通常PCI总线是32位宽33MHZ的总线,DDR是64位宽100MHZ以上的频率。在上述技术方案中,所述的每个写缓区的长度被设为桥片所处系统的cacheline长度或者DDR内存使用的burst长度。在上述技术方案中,所述的每个写缓区的每个字节都有自己的位选表明这个字节的数据是否有效。在上述技术方案中,所述的每个写缓区的最低字节的地址是和桥设备所处系统的cache line对齐的。在上述技术方案中,所述的写FIFO的每一项包含数据、位选、标识位,该标识位标识该项数据的类型,如写地址、读地址、普通写数据或一次写的最后一个写数据等;其中数据的宽度和第一总线的数据宽度相同,位选的宽度和第一总线的位选宽度相同。对于读数据过程,包括如下步骤1)桥设备第一总线侧的接口发现第一总线上的设备要请求第二总线一侧的数据;2)桥设备接收第一总线上设备的读请求并把所请求的地址和相应的数据标识写入写FIFO;3)桥设备第二总线侧的接口将从写FIFO中读到的读请求转换为第二总线上的读请求;4)当第二总线上的第一个数据返回时,如果第一总线侧设备读请求的地址和在第二总线上发送的请求的地址不对齐,则第二总线侧的接口先将第一总线侧设备请求的数据直接写入读FIFO;5)第二总线侧的接口继续在向第二总线上请求随后的数据并将得到的数据放入读缓冲区直至读缓冲区满或者第一总线侧的设备已经读到其期望的最后一个数据或者已经读到的数据量达到了阈值;6)当读缓冲区满时,暂停在第二总线上的请求直到读缓冲区空闲的项数达到半满;7)第二总线侧的接口在读缓冲区中有数据并且第一总线侧的数据还未读到其期望的最后一个数据时将读缓冲区中的数据导入读FIFO中;8)当第一总线侧的设备在请求数据时,如果第一总线侧的接口看到读FIFO非空就将读FIFO中的数据返回给请求第一总线侧请求数据的设备直到读FIFO变空或者设备读到其期望的最后一个数据或者返回的数据已经达到阈值;9)重复步骤5)-8)直到第一总线侧的设备已经读到其期望的最后一个数据或者返回给设备的数据长度已经达到阈值。在上述技术方案中,所述第一总线指PCI总线、LPC总线或者其它接收方在地址周期时不知道传送数据长度的总线。在上述技术方案中,所述第二总线指DDR总线或者桥芯片内部与内存控制器相连的内部总线。在上述技术方案中,所述阈值通常设为读FIFO的深度或者一次允许总线一侧设备传送数据长度的最大值。在上述技术方案中,所述“第一总线侧的设备已经读到其期望的最后一个数据”是指PCI总线上的设备在最后一个数据周期时桥设备有效。在上述技术方案中,所述读FIFO每一项包含数据和标识此项数据是否为达到阈值的数据。与现有技术相比,本专利技术的优点在于1)读、写FIFO的控制逻辑相对简单;2)以较小的写FIFO深度就可以在发起方总线上获得理想的效率;3)写数据在写FIFO中停留的时间短,可以尽早地在目标方总线上发起写操作;4)以流水的方式处理读数据地传送;5)通过目标方总线接口地读写缓冲区处理发起方总线和目标方总线宽度不一致地情况。附图说明图1表示一实施例用于连接PCI总线和DDR总线的桥芯片中控制PCI设备访问DDR内存的数据传送方法的逻辑结构。具体实施例方式PCI(Peripheral Compon本文档来自技高网
...

【技术保护点】
一种控制两种不同速度总线间数据传送的方法,    对于写数据过程,包括如下步骤:    a)桥设备第一总线侧的接口发现该第一总线上的设备要将数据发送给第二总线;    b)桥设备接收第一总线上设备的写请求并把所写的地址和数据依次写入写FIFO;    c)桥设备第二总线侧的接口只要发现写FIFO非空就将写FIFO中的数据读入第一写缓冲区中直至第一写缓冲区被写满或读入第一总线设备写入的最后一个数据;    d)桥设备第二总线侧的接口将第一写缓冲区中准备好的数据读取到第二总线上直至读完第一写缓冲区中的数据,在将第一写缓冲区的数据读取到第二总线上的同时桥设备第二总线侧的接口继续将写FIFO中的数据写入第二写缓冲区中直至第一写缓冲区中的数据全部在第二总线上传送完或者第二写缓冲区满或者第一总线1侧设备写入的最后一个数据进入第二写缓冲区;    e)判断第二写缓冲区是否准备好?如果是,执行下一步骤f);如果否,继续从写FIFO中读取数据到第二写缓冲区中直至第二写缓冲区准备好,然后执行步骤f);    f)交换第二写缓冲区和第一写缓冲区的位置;    g)重复步骤f)-e)直到第一总线设备的最后一个写数据传送到第二总线上;    对于读数据过程,包括如下步骤:    1)桥设备第一总线侧的接口发现第一总线上的设备要请求第二总线一侧的数据;    2)桥设备接收第一总线上设备的读请求并把所请求的地址和相应的数据标识写入写FIFO;    3)桥设备第二总线侧的接口将从写FIFO中读到的读请求转换为第二总线上的读请求;    4)当第二总线上的第一个数据返回时,如果第一总线侧设备读请求的地址和在第二总线上发送的请求的地址不对齐,则第二总线侧的接口先将第一总线侧设备请求的数据直接写入读FIFO;    5)第二总线侧的接口继续在向第二总线上请求随后的数据并将得到的数据放入读缓冲区直至读缓冲区满或者第一总线侧的设备已经读到其期望的最后一个数据或者已经读到的数据量达到了阈值;    6)当读缓冲区满时,暂停在第二总线上的请求直到读缓冲区空闲的项数达到半满;    7)第二总线侧的接口在读缓冲区中有数据并且第一总线侧的数据还未读到其期望的最后一个数据时将读缓冲区中的数据导入读FIFO中;    8)当第一总线侧的设备在请求数据时,如果第一总线侧的接口看到读FIFO非空就将读FIFO中的数据返回给请求第一总线侧请求数据的设备直到读FIFO...

【技术特征摘要】
1.一种控制两种不同速度总线间数据传送的方法,对于写数据过程,包括如下步骤a)桥设备第一总线侧的接口发现该第一总线上的设备要将数据发送给第二总线;b)桥设备接收第一总线上设备的写请求并把所写的地址和数据依次写入写FIFO;c)桥设备第二总线侧的接口只要发现写FIFO非空就将写FIFO中的数据读入第一写缓冲区中直至第一写缓冲区被写满或读入第一总线设备写入的最后一个数据;d)桥设备第二总线侧的接口将第一写缓冲区中准备好的数据读取到第二总线上直至读完第一写缓冲区中的数据,在将第一写缓冲区的数据读取到第二总线上的同时桥设备第二总线侧的接口继续将写FIFO中的数据写入第二写缓冲区中直至第一写缓冲区中的数据全部在第二总线上传送完或者第二写缓冲区满或者第一总线1侧设备写入的最后一个数据进入第二写缓冲区;e)判断第二写缓冲区是否准备好?如果是,执行下一步骤f);如果否,继续从写FIFO中读取数据到第二写缓冲区中直至第二写缓冲区准备好,然后执行步骤f);f)交换第二写缓冲区和第一写缓冲区的位置;g)重复步骤f)-e)直到第一总线设备的最后一个写数据传送到第二总线上;对于读数据过程,包括如下步骤1)桥设备第一总线侧的接口发现第一总线上的设备要请求第二总线一侧的数据;2)桥设备接收第一总线上设备的读请求并把所请求的地址和相应的数据标识写入写FIFO;3)桥设备第二总线侧的接口将从写FIFO中读到的读请求转换为第二总线上的读请求;4)当第二总线上的第一个数据返回时,如果第一总线侧设备读请求的地址和在第二总线上发送的请求的地址不对齐,则第二总线侧的接口先将第一总线侧设备请求的数据直接写入读FIFO;5)第二总线侧的接口继续在向第二总线上请求随后的数据并将得到的数据放入读缓冲区直至读缓冲区满或者第一总线侧的设备已经读到其期望的最后一个数据或者已经读到的数据量达到了阈值;6)当读缓冲区满时,暂停在第二总线上的请求直到读缓冲区空闲的项数达到半满;7)第二总线侧的接口在读缓冲区中有数据并且第一总线侧的数据还未读到其期望的最后一个数据时将读缓冲区中的数据导入读FIFO中;8)当第一总线侧的设...

【专利技术属性】
技术研发人员:蔡飞胡明昌曾洪博唐志敏
申请(专利权)人:中国科学院计算技术研究所
类型:发明
国别省市:11[中国|北京]

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

1