CN102184151B - Pci-e转pci桥装置及其主动预取数据的方法 - Google Patents
Pci-e转pci桥装置及其主动预取数据的方法 Download PDFInfo
- Publication number
- CN102184151B CN102184151B CN2011101117042A CN201110111704A CN102184151B CN 102184151 B CN102184151 B CN 102184151B CN 2011101117042 A CN2011101117042 A CN 2011101117042A CN 201110111704 A CN201110111704 A CN 201110111704A CN 102184151 B CN102184151 B CN 102184151B
- Authority
- CN
- China
- Prior art keywords
- pci
- data
- sent
- cpu
- active prefetching
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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/4027—Coupling between buses using bus bridges
-
- 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/42—Bus transfer protocol, e.g. handshake; Synchronisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Bus Control (AREA)
- Communication Control (AREA)
Abstract
本发明提供了一种PCI-E转PCI桥装置及其主动预取数据的方法。本发明PCI-E转PCI桥装置设置有主动预取配置接口和主动预取PCI-E读交易生成模块,在CPU准备好待发送数据之后,并在设置Buffer描述符之前,该主动预取配置接口用于从CPU接收待发送数据在缓存中的起始地址和长度;该主动预取PCI-E读交易生成模块用于从主动预取配置接口获取待发送数据的起始地址和长度,并向CPU主动预取待发送数据到PCI-E转PCI桥的内部缓存中;PCI-E转PCI桥直接响应PCI通信模块发出的读系统内存中待发送数据的请求,并向PCI通信模块返回预取得到的待发送数据。应用本发明能够实现数据主动预取,并且,预取数据在缓存中的起始地址和长度可以动态设置。
Description
技术领域
本发明涉及数据通讯技术,特别涉及PCI-E转PCI桥装置以及该装置主动预取数据的方法。
背景技术
PCI(Peripheral Component Interconnect,外围部件互连总线)总线自从1992年问世以来,就成为了迄今为止最成功的总线规范之一,广泛用于PC/Server平台,如声卡、显示卡、网络设备(包括以太网、Modem)及I/O接口等。在嵌入式应用领域,如通讯、工业控制等方面,PCI总线也通过CompactPCI平台获得了大量的应用。最初,PCI总线采用的是33MHz工作频率、32位数据/地址复用的总线方式,这种情况下总线的理论最大带宽为1.056Gbps。随着PCI V2.2标准的推出,允许PCI总线工作在66MHz频率、64位数据/地址复用的总线,这时的PCI总线理论最大带宽有4.224Gbps。
作为PCI总线标准的制定和推动者,PCI SIG组织在1999年提出了PCI-X(PCI Express,PCI快速总线)总线标准。PCI-X 1.0总线既可使用32位宽度也可使用64位宽度的总线,工作频率提升到133MHz,允许的最大理论带宽达8.512Gbps。后来,该总线进一步发展为PCI-X 2.0。为了进一步提高总线带宽,PCI-X 2.0总线技术在133MHz时钟频率的基础上使用了DDR(Double Date Rate,双倍数据倍率)和QDR(Quad Date Rate,四倍数据倍率)技术,使得总线的最大带宽达到了4.256GByte/S。PCI-X总线继承了PCI2.2标准的许多技术特色,在原有技术的基础上增加了许多新的技术特征。这些新特性中除了工作频率的提升,还有更为先进的接收和传送数据的方式,使得总线效率进一步提高。但是即便如此,随着外围设备性能的提升速度远远超过了总线本身发展的速度,PCI-X总线本身频率难以进一步提高、工作电压难以降低、性能不足的问题也日益凸现出来;而且,PCI-X 2.0总线也没有获得较广泛的应用,尤其是在通讯类的嵌入式领域。
对于通讯类的嵌入式应用,随着处理器技术的发展和性能的不断提高,原来受限于处理器处理能力的系统整体性能转变为PCI/PCI-X总线的带宽成为瓶颈。而应用需求导致对于性能的要求是越来越高,PCI/PCI-X总线的并行传输架构已经不再适应业界产品发展的要求。PCI/PCI-X总线必须由带宽更高、适应性更广、发展潜力更深的新一带总线取而代之。
PCI-E总线是由Intel在2001年春季的IDF上正式公布的,是面向取代PCI/PCI-X总线的第三代I/O技术。该总线的标准由Intel支持的AWG(Arapahoe Working Group)负责制定。在2002年4月17日,AWG正式宣布标准草稿制定完毕,并命名为3GIO 1.0。3GIO 1.0主要采用串行SerDes技术进行数据传输,取代了PCI/PCI-X总线的并行传输方式,并在软件上做到了和PCI/PCI-X总线的兼容。在这个标准提出之后,业界还存在Motorola主导的在嵌入式处理器上主推的Serial RapidIO以及基于Ethernet进行传输的串行总线。但是随着3GIO标准最后通过PCI SIG组织的审核,被确定为PCI总线的下一代升级标准,并命名为PCI Express。2002年7月23日,PCI SIG组织正式公布了PCI Express 1.0标准。在2006年底,又正式推出了PCIExpress 2.0标准。
PCI Express总线采用串行总线进行点对点传输,每个传输通道独享带宽。PCI Express总线支持双向传输模式和数据分通道传输模式。其中,数据分通道传输模式即PCI Express总线的X1、X2、X4、X8、X16和X32多通道连接。PCI Express1.0X1单向数据传输有效带宽即可达到2Gbps,双向传输有效带宽更能够达到4Gbps,这已经不是普通PCI/PCI-X总线所能够相比的了。PCI、PCI-X、PCI Express1.0总线的理论带宽对比示意图如图1所示。
随着PCI SIG组织不断完善PCI Express总线的标准,该总线首先在PC/Server平台上获得了大量的使用。随着技术的不断成熟,PCI Express总线在通讯类的嵌入式领域应用已经成为很多器件厂家和系统方案设计的选择。由于数据通讯类应用中产品生命周期较长,早期的PCI模块较多,新的PCI Express平台兼容老的PCI模块是一种基本的要求,PCI Express兼容老的PCI模块,普遍采用PCI-E转PCI桥的方法。
数据通讯领域中传统PCI应用的数据流图如图2所示。需要说明的是,图2中的PCI扩展桥不是必要器件,但是,嵌入式CPU通过PCI扩展桥可以连接多个PCI通信模块。图2所示传统PCI应用中,典型的数据流是由PCI通信模块发起的写数据到系统内存和PCI模块从系统内存读数据。所有数据都保存在系统内存中,其存放格式如图3所示。所有数据必须有CPU参与处理,不同PCI通信模块使用的BD(Buffer Descriptor,缓存描述符)是不同的,但本质上是类似的。以发送数据为例,即PCI通信模块先从系统内存中读取一个小块数据(Buffer描述符),获知CPU已经准备好数据,以及数据存放的起始地址和数据长度;PCI通信模块再从系统内存中读取数据,并发送。
图2所示PCI应用中,PCI通信模块批量发送数据的详细流程如下:
(1)CPU把要发送的数据依次保存在Buffer1-BufferN中;
(2)CPU判断Buffer描述符1-N发送完成标志已设置,就开始依次更新Buffer描述符1-N,令Buffer描述符1-N指向Buffer1-BufferN,最后设置Buffer描述符对应的发送Buffer数据准备好标志;
(3)PCI通信模块DMA轮询读系统内存中的Buffer描述符1,如果发现Buffer描述符1的发送Buffer数据准备好标志已设置,PCI通信模块从Buffer描述符1中获取数据Buffer1地址和数据长度;
(4)PCI通信模块获取发送数据Buffer1地址和数据长度后,从Buffer1地址读取指定数据长度的数据,并把数据发送出去;
(5)PCI通信模块设置Buffer描述符1发送完成标志;
(6)PCI通信模块DMA轮询读系统内存中的Buffer描述符2,依次类推,直到把CPU准备好的数据都发送出去。
在PCI总线上看,PCI通信模块读Buffer描述符或者读数据,PCI通信模块都是PCI读交易的发起者,发送PCI读交易请求给其上游的CPU。PCI通信模块读Buffer描述符和读数据分别是两次不同的PCI读交易。对于数据通讯应用来说,读Buffer描述符,数据量小,一般在32Bytes之内;读Buffer数据,数据量大,一般在64Bytes-1500Bytes之间。
数据通讯领域升级到PCI Express后,PCI-E转PCI桥的应用方案如图4所示。PCI-E转PCI桥不同于PCI扩展桥,PCI-E转PCI桥是一个必须使用的器件,只有使用PCI-E转PCI桥,才能兼容老的PCI设备。图4所示PCIExpress应用中,典型的数据流是由PCI通信模块发起的写数据到系统内存和PCI模块从系统内存读数据。与PCI应用相同,所有数据也都保存在系统内存中,所有数据必须有CPU参与处理。与PCI应用不同的是,PCI-E转PCI桥代替了PCI扩展桥。
PCI-E转PCI桥与传统的PCI扩展桥相比,数据经过PCI-E转PCI桥的延迟时间是数据经过PCI扩展桥的10倍以上,这是由于PCI-E转PCI桥要实现两种完全不同的I/O总线协议报文的转换,而PCI扩展桥仅需要扩展PCI电气特性,不涉及报文转换。
PCI-E转PCI桥这种大延迟的缺陷,对PCI通信模块写数据到系统内存影响不大,这是因为PCI写交易是一种Post操作,PCI通信模块把数据写给PCI-E转PCI桥之后,PCI通信模块就认为PCI写交易结束了,而PCI-E转PCI桥会代理该写交易,负责把数据真正写到系统内存中。
PCI-E转PCI桥这种大延迟的缺陷,对PCI通信模块从系统内存读数据的影响较大,这是因为PCI读交易是一种Non-Post操作,即PCI通信模块发起读交易请求后,PCI-E转PCI桥会一直Retry该读交易,直到PCI-E转PCI桥从系统内存中读数据到PCI-E转PCI桥内部缓存中,PCI-E转PCI桥才会响应PCI通信模块的读交易请求。PCI-E转PCI桥的大延迟,导致PCI通信设备从系统内存读数据的等待时间增大,降低了PCI通信模块的数据发送性能。
PCI总线本身还有一个缺陷,就是PCI读写交易都没有指定数据传输的长度,PCI-X和PCI Express都改正了这个缺陷,在数据传输前,会指定数据传输的长度。
PCI总线没有指定数据传输长度的缺陷,对PCI通信模块写数据到系统内存影响不大,PCI-E转PCI桥内部有足够的缓存,可以接收PCI通信模块发出的大包数据。
PCI总线没有指定数据传输长度的缺陷,对PCI通信模块从系统内存读数据影响较大。例如:PCI通信模块要从系统内存读取1500Bytes的数据,PCI通信模块向PCI-E转PCI桥发起一个PCI MemoryMulLine读交易请求,PCI-E转PCI桥Retry该读交易请求,同时PCI-E转PCI桥从系统内存获取32Bytes的数据,在PCI通信模块再次发起读交易请求后,发送给PCI通信模块。由于数据不满足PCI通信模块的要求,PCI通信模块仍保持读交易状态,PCI-E转PCI桥只能再次Retry该读交易请求,PCI-E转PCI桥再次从系统内存获取32Bytes的数据,依次类推,PCI通信模块的一次大数据读交易,被串行分割成多次小交易,才得以完成。PCI总线的这个缺陷,相当于把PCI-E转PCI桥大延迟缺陷进一步放大。
综上,目前数据通讯领域应用PCI Express存在以下问题:新的数据通讯产品通过PCI-E转PCI桥兼容老的PCI通信模块,由于PCI-E转PCI桥延迟较大以及PCI总线数据交易不指定数据传输长度,导致PCI通信模块发送性能大幅下降。
为解决上述技术问题,现有PCI-E转PCI桥都增强了预取的设计。所谓预取操作,就是PCI-E转PCI桥在接收到PCI通信模块读系统内存的交易请求后,采用预取读的方式,从系统内存中读出一定数量的数据,以满足PCI通信模块可能的大数据读需求。PCI-E转PCI桥装置内部实现如图5所示。
图5所示PCI-E转PCI桥装置内部设置有PCI-E预取处理模块,预取长度可通过配置寄存器设置。预取长度设置成功后,PCI-E转PCI桥对PCI通信模块发起的系统内存读交易请求,都将采用该预取长度进行预取操作。这就导致PCI-E转PCI桥预取长度只能折中固定设置,不能动态调整。
如果只考虑PCI通信模块大包数据传输,PCI-E转PCI桥预取长度设置为2048Bytes,但实际应用中PCI通信模块可能是64Bytes小包数据发送,这就会导致PCI-E转PCI桥预取的数据绝大部分都是无效的,且占用了PCIExpress总线资源,又会增大PCI通信模块下一次读交易请求等待时间(因为PCI读交易数据少,很快就会结束,而PCI Express大数据量的预取还没有完成,PCI Express总线被占用,PCI通信模块下一次读交易请求被PCI-E转PCI桥延迟处理)。
如果只考虑PCI通信模块小包数据传输,PCI-E转PCI桥预取长度设置较小,PCI通信模块大包传输预取效果无法体现。
如果CPU根据每个Buffer描述符指定的数据长度,动态设置PCI-E转PCI桥预取长度,就会导致PCI通信模块发送数据必须与CPU串行同步操作,无法并行批量操作,降低发送效率。例如:CPU要求PCI通信模块连续发送64Bytes、1500Bytes、64Bytes、1500Bytes四个数据报文,PCI-E转PCI桥预取长度就无法提前设置。
下面简单分析现有PCI-E转PCI桥在数据通讯应用中的数据流。以PCI通信模块发送一个大包(1024Bytes)数据为例,PCI-Express转PCI桥的预取长度固定折中设置为512Bytes,完整数据流如图6所示。从图6所示数据流中,可以看出现有PCI-E转PCI桥存在以下缺点:
1)只有PCI通信模块发起读数据交易请求,才能触发PCI-E转PCI桥预取动作。从总线利用率角度看,高速的PCI Express总线总是处于空闲的,PCI Express总线利用率较低;低速的PCI总线总是被PCI通信模块反复读请求占用,PCI总线浪费率较大。
2)PCI-E转PCI桥预取长度只能固定折中设置,对于数据通讯中的大包传输,总线利用率较低,对于小包传输,总线浪费率则较大。
发明内容
本发明提供了一种PCI-E转PCI桥装置以及用于该装置的主动预取数据的方法,旨在解决数据通讯领域中PCI-E转PCI桥兼容老PCI通信模块,PCI通信模块发送性能大幅下降的问题。
本发明实施例提供的一种PCI-E转PCI桥装置,包括:主动预取配置接口、主动预取PCI-E读交易生成模块、PCI-E收发模块和读数据缓存;其中:
所述主动预取配置接口,用于在CPU准备好待发送数据之后,并在设置缓存描述符之前,从CPU接收所述待发送数据在缓存中的起始地址和长度;
所述主动预取PCI-E读交易生成模块,用于从所述主动预取配置接口获取待发送数据的起始地址和长度,并生成相应的PCI-E总线读交易请求发送给CPU以预取所述待发送数据;
PCI-E收发模块,用于将预取得到的待发送数据存储到所述读数据缓存;
所述读数据缓存,用于存储所述预取得到的待发送数据,以便PCI通信模块发出的PCI读交易请求命中所述预取得到的待发送数据时,将命中的所述预取得到的待发送数据发送给PCI通信模块。
较佳地,所述装置中还可以包括发送选择模块和PCI-E读交易生成模块;
所述主动预取PCI-E读交易生成模块,用于将所生成的PCI-E总线读交易请求通过所述发送选择模块发送给CPU;
PCI-E读交易生成模块,用于将接收自PCI通信模块的PCI读交易请求转换成PCI-E总线读交易请求,并将转换得到的PCI-E总线读交易请求发送给所述发送选择模块;
所述发送选择模块,用于分别接收主动预取PCI-E读交易生成模块和PCI-E读交易生成模块生成的PCI-E总线读交易请求,并按照时间片分别选择其中的一个PCI-E总线读交易请求通过PCI-E收发模块发送给CPU。
较佳地,所述主动预取配置接口可以包括:预取长度区、标识区和预取起始地址区;
所述主动预取配置接口,用于在所述标识区未被设置时,将接收自CPU的待发送数据的起始地址设置到所述预取起始地址区,将接收自CPU的待发送数据的长度设置到所述预取长度区。
进一步地,所述装置还可以包括主动预取操作队列;
所述主动预取操作队列中的每一项用于存储一个起始地址和长度,每次在主动预取配置接口从CPU接收待发送数据在缓存中的起始地址和长度之后,所述待发送数据在缓存中的起始地址和长度作为一项进入主动预取操作队列;
所述主动预取PCI-E读交易生成模块,还用于按照先入先出的原则从所述主动预取操作队列中获取一项待发送数据的起始地址和长度,并生成相应的PCI-E总线读交易请求。
较佳地,当主动预取操作队列满时,所述主动预取操作队列还用于通知主动预取配置接口,所述主动预取配置接口还用于根据主动预取操作队列的通知设置所述标识区;
当主动预取操作队列存在空闲项时,所述主动预取操作队列还用于通知主动预取配置接口,所述主动预取配置接口还用于根据主动预取操作队列的通知清除所述标识区的设置。
较佳地,所述发送选择模块,用于按照1∶1的时间片比例,从接收自主动预取PCI-E读交易生成模块和PCI-E读交易生成模块的PCI-E总线读交易请求中选择一个通过PCI-E收发模块发送给CPU。
本发明实施例提供的一种主动预取数据的方法,应用于PCI-E转PCI桥装置,包括:
CPU准备好待发送数据之后,在设置缓存描述符之前,将所述待发送数据在缓存中的起始地址和长度设置到PCI-E转PCI桥;
PCI-E转PCI桥根据CPU所设置的起始地址和长度向CPU发送PCI-E总线读交易请求,预取所述待发送数据,并将预取得到的所述待发送数据存储到PCI-E转PCI桥的读数据缓存中;
当接收到PCI通信模块的PCI读交易请求命中读数据缓存中所述预取得到的待发送数据时,PCI-E转PCI桥将命中的所述预取得到的待发送数据发送给PCI通信模块。
该方法可以进一步包括:在PCI-E转PCI桥中设置主动预取操作队列,所述主动预取操作队列中的每一项用于存储CPU设置到PCI-E转PCI桥的一个待发送数据的起始地址和长度;
PCI-E转PCI桥按照先入先出的原则从所述主动预取操作队列中获取一项待发送数据的起始地址和长度,向CPU预取相应的待发送数据。
该方法还可以进一步包括:当接收到PCI通信模块的需要发送给CPU的PCI读交易请求时,PCI-E转PCI桥将该请求转换为PCI-E总线读交易请求,并按照时间片从用于预取待发送数据的PCI-E总线读交易请求和转换的PCI-E总线读交易请求中选择一个发送给CPU。
较佳地,所述PCI-E转PCI桥可以按照1∶1的时间片比例,从用于预取待发送数据的PCI-E总线读交易请求和转换的PCI-E总线读交易请求中选择一个发送给CPU。
由上述技术方案可见,本发明提供的PCI-E转PCI桥装置及其相应的主动预取数据的方法能够获得以下有益效果:
(1)实现了PCI-E转PCI桥的主动预取,把原有PCI通信模块读取BD描述符、读数据、设置BD描述符发送完成标志的串行动作,改为并行执行,提高了PCI-E总线的利用率,大幅提高了PCI通信模块的发送性能,抵消了PCI-E转PCI桥引入的大延迟。
(2)实现了PCI-E转PCI桥的预取长度动态设置,保证了每次发送的最优预取,降低了PCI总线浪费率。
(3)针对数据通讯应用的特殊性进行设计,针对性强。
附图说明
图1为PCI、PCI-X、PCI Express1.0总线的理论带宽对比示意图;
图2为数据通讯领域中传统PCI应用的数据流图;
图3为传统PCI应用的报文处理流程示意图;
图4为现有数据通讯领域中PCI Express应用的数据流图;
图5为现有PCI-E转PCI桥装置的内部实现框图;
图6为现有PCI-E转PCI桥大包数据预取的数据流图;
图7为本发明一实施例中PCI-E转PCI桥的结构示意图;
图8为本发明一较佳主动预取数据的方法的数据流图;
图9为本发明一较佳实施例中批量数据处理的示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步详细说明。
由于现有PCI-E转PCI桥无法预知CPU发送数据的长度和数据在缓存中的起始地址,所以现有PCI-E转PCI桥只能被动等待PCI通信模块发起读交易请求,才能触发预取动作。
在数据通讯领域中,PCI通信模块向外发送的数据都是由CPU准备的,PCI通信模块发送数据的起始地址和长度是先由CPU采用Buffer描述符的方式通知给PCI通信模块,再由PCI通信模块从系统内存中读取发送数据的。根据这一基本特点,本发明提出了一种具备主动预取功能的PCI-E转PCI桥装置,该装置提供主动预取配置接口给CPU,允许CPU在准备好待发送数据之后,并在设置Buffer描述符之前,将待发送数据在缓存中的起始地址和长度设置到PCI-E转PCI桥的主动预取配置接口中;CPU对PCI-E转PCI桥中主动预取配置接口的设置,触发PCI-E转PCI桥中的主动预取PCI-E读交易生成模块向CPU主动预取待发送数据到PCI-E转PCI桥的内部缓存中;PCI通信模块发出的读系统内存中待发送数据的请求命中PCI-E转PCI桥的内部缓存中的主动预取的待发送数据,PCI-E转PCI桥直接响应该PCI读交易请求,并向PCI通信模块返回该命中预取得到的待发送数据,从而实现了根据CPU的发送需求动态设置预取长度,完成预取工作,以解决数据通讯领域中PCI-E转PCI桥兼容老PCI通信模块,PCI通信模块发送性能大幅下降的问题。
为适应CPU和PCI通信模块批量数据发送的应用,在本发明的一较佳实施例PCI-E转PCI桥中还引入主动预取操作队列,可保存多个主动预取的目标数据在缓存中的起始地址和长度,从而可以根据CPU的发送需求动态设置多个预取长度。
本发明设计的装置,实现在PCI Express转PCI桥上,如图7所示。图7所示装置包括以下模块:PCI收发模块701、写数据缓存702、读数据缓存703、PCI读请求处理模块704、PCI-E预取处理模块705、PCI-E读交易生成模块706、PCI-E收发模块707、主动预取配置接口708、主动预取操作队列709、主动预取PCI-E读交易生成模块710和发送选择模块711。其中,虚线框示出的模块是本专利与现有PCI Express转PCI桥区别的创新设计,具体包括:主动预取配置接口708、主动预取操作队列709、主动预取PCI-E读交易生成模块710和发送选择模块711。下面对本发明新增的模块进行详细说明:
(1)主动预取配置接口708
本发明在PCI Express转PCI桥的配置空间增加一个主动预取配置接口708,该主动预取配置接口,用于在CPU准备好待发送数据之后,并在设置缓存描述符之前,从CPU接收所述待发送数据在缓存中的起始地址和长度。该接口可以包括以下区域:预取长度区、标识区和预取起始地址区。
较佳地,主动预取配置接口708可以占用12字节空间,格式如表1所示:
表1
其中,预取长度区和标识区占用4字节,预取起始地址区占用8字节。
预取长度区中的预取长度要求CacheLine对齐,取值范围在64字节-4K字节之间。CacheLine长度设置是PCI Express规范要求的,根据应用可设置为8字节、16字节、32字节或64字节。
标识区占用二进制1位空间。该标识区被设置,表示CPU不能再对主动预取配置接口进行配置;该标识区被清空,允许CPU写预取起始地址和预取长度。CPU对该标识区只读,写无效。CPU设置主动预取配置接口前,要先读取该标识区,根据标识状态决定是否可以设置主动预取配置接口。在设置有主动预取操作队列时,该标识区也可称为预取操作队列满标识。
预取起始地址是指预取数据在缓存中的起始地址,占用8字节,用于支持64位的寻址空间。
(2)主动预取操作队列709
本发明在PCI Express转PCI桥内部增加一个主动预取操作队列709,该队列的每一项用于存储CPU设置到PCI Express转PCI桥的一个起始地址和长度。主动预取操作队列越长,支持CPU批量发送的能力就越强。CPU写主动预取配置接口708后,CPU设置的预取起始地址和预取长度自动进入主动预取操作队列709。如果主动预取操作队列709满,主动预取操作队列709通知主动预取配置接口708,则主动预取配置接口708设置预取操作队列满标识,暂时不接收CPU新的主动预取设置;主动预取操作队列709空出一项后,主动预取操作队列709通知主动预取配置接口708,让主动预取配置接口708清除预取操作队列满标识。主动预取操作队列709采用FIFO(先入先出)策略。
(3)主动预取PCI-E读交易生成模块710
在没有设置主动预取操作队列709的情况下,主动预取PCI-E读交易生成模块710,用于从主动预取配置接口708获取待发送数据的起始地址和长度,并生成相应的PCI-E总线读交易请求发送给CPU以预取待发送数据,并由PCI-E收发模块707将预取得到的待发送数据存储到读数据缓存703,以便在PCI通信模块发出的读系统内存中待发送数据的请求命中PCI-E转PCI桥的读数据缓存中的该主动预取的待发送数据时,能够直接从PCI-E转PCI桥的读数据缓存中将该待发送数据发送给PCI通信模块;
在设置有主动预取操作队列709的情况下,主动预取PCI-E读交易生成模块710,用于按照先入先出的原则从主动预取操作队列709获取一项待发送数据的起始地址和长度,并生成相应的PCI Express读交易请求发送给CPU以预取待发送数据,并由PCI-E收发模块707将预取得到的待发送数据存储到读数据缓存703,以便在PCI通信模块发出的读系统内存中待发送数据的请求命中PCI-E转PCI桥的读数据缓存中的主动预取的该待发送数据时,能够直接从PCI-E转PCI桥的读数据缓存中将该待发送数据发送给PCI通信模块。
(4)发送选择模块711
有时,现有PCI-E转PCI桥需要将接收自PCI通信模块的PCI读交易请求通过其内部的PCI-E读交易生成模块706转换成PCI Express读交易请求发送给CPU,本发明实施例改进之后的PCI-E转PCI桥中的主动预取PCI-E读交易生成模块需要向CPU发送PCI-E读交易请求以预取待发送数据,因此,PCI-E转PCI桥需要处理两种PCI-E读交易请求,分别由主动预取PCI-E读交易生成模块710和PCI-E读交易生成模块706生成。
为此,本发明实施例在PCI-E转PCI桥中设置发送选择模块711,该发送选择模块711分别接收主动预取PCI-E读交易生成模块710和PCI-E读交易生成模块706生成的PCI Express读交易请求,并按照时间片选择其中一个PCI Express读交易请求,通过PCI-E收发模块707发送给CPU。为了使主动预取PCI-E读交易生成模块710和PCI-E读交易生成模块706生成的PCIExpress读交易请求得到机会均等的响应,较佳地,发送选择模块711可以按照1∶1的时间片比例进行选择,当然,也可以根据实际应用的需要设置其他的时间片比例。
对应于上述装置,本发明提供了一种主动预取数据的方法,应用于PCI-E转PCI桥装置,针对的是数据通讯中PCI Express兼容PCI通信模块应用,PCI通信模块无任何修改,PCI Express转PCI桥进行了创新性设计,同时,CPU参与PCI Express转PCI桥的主动预取动作。
本发明方法的主要工作原理是:CPU准备好待发送数据之后,在设置缓存描述符之前,将待发送数据在缓存中的起始地址和长度设置到PCI-E转PCI桥;PCI-E转PCI桥根据CPU所设置的起始地址和长度向CPU发送PCI-E总线读交易请求,主动预取待发送数据,并将预取得到的待发送数据存储到PCI-E转PCI桥的读数据缓存中;当接收到PCI通信模块的读交易请求时,PCI-E转PCI桥将读数据缓存中存储的预取得到的待发送数据发送给PCI通信模块。
在上述方法的基础上,可以进一步在PCI-E转PCI桥中设置主动预取操作队列,主动预取操作队列中的每一项用于存储CPU设置到PCI-E转PCI桥的一个待发送数据的起始地址和长度;PCI-E转PCI桥按照先入先出的原则从主动预取操作队列中获取一项待发送数据的起始地址和长度,向CPU预取相应的待发送数据。
进一步地,有时,现有PCI-E转PCI桥需要将接收自PCI通信模块的PCI读交易请求通过其内部的PCI-E读交易生成模块706转换成PCI Express读交易请求发送给CPU,如,当接收到PCI通信模块的读缓存描述符请求或以现有方式读数据时,PCI-E转PCI桥可以将该请求转换为PCI-E总线读交易请求,并按照时间片从用于主动预取待发送数据的PCI-E总线读交易请求和转换的PCI-E总线读交易请求中选择一个发送给CPU;CPU分别响应所述请求,向PCI-E转PCI桥返回预取的待发送数据和缓存描述符。较佳地,时间片是按照1∶1的比例。下面,以接收到PCI通信模块的读缓存描述符请求为例进行说明。
本发明一较佳方法的数据流如图8所示,以PCI通信模块发送一个大包数据为例。本发明PCI Express转PCI桥主动预取实现如下:
第1步:CPU软件准备好发送数据。
第2步:CPU在设置发送BD描述符前,把发送数据在Buffer中的起始地址和数据长度保存到PCI Express转PCI桥的主动预取配置接口中,PCIExpress转PCI桥向CPU发起PCI Express读发送数据的主动预取请求。
第3步:CPU软件设置发送BD描述符,与此同时,PCI通信模块向PCIExpress转PCI桥发起读BD描述符的请求。
PCI通信模块一般分为两类:一类是PCI通信模块主动轮询读取系统内存中的BD,并判断CPU是否准备好发送数据;另一类是PCI通信模块不轮询读取系统内存中的BD,而是等待CPU主动通知PCI通信模块数据已经准备好,PCI通信模块再去读取系统内存中的BD。本发明提供的技术方案对以上两类PCI通信模块都适用。
第4步:PCI Express转PCI桥Retry PCI通信模块读BD描述符的请求,同时将该请求转换为PCI Express读BD描述符请求发送给CPU。
第5步:CPU集成的PCI Express RC(PCI Express Root Complex,PCIExpress根复用器)分别响应PCI Express转PCI桥发起的PCI Express读发送数据的主动预取请求和PCI Express读BD描述符请求,从系统内存中获取发送数据和BD描述符数据,并依次通过PCI Express总线发送给PCI Express转PCI桥。
第6步:PCI通信模块重新发起PCI读BD请求。
第7步:PCI Express转PCI桥响应PCI读BD请求,发出BD描述符数据。
第8步:PCI通信模块根据BD描述符信息,发起读发送数据的PCI读请求。
第9步:PCI Express转PCI桥收到PCI通信模块读发送数据的PCI读请求(即接收到读交易请求),且PCI通信模块发出的请求命中PCI-E转PCI桥的内部缓存中的该主动预取的待发送数据时,此时待发送数据已被PCIExpress转PCI桥主动预取到桥内部缓存,PCI Express转PCI桥直接响应PCI通信模块读发送数据的PCI读交易请求,向PCI通讯模块发出该待发送数据。
上述方法中,PCI Express转PCI桥发起PCI Express读发送数据的主动预取请求和PCI Express转PCI桥转发读BD的请求顺序不是固定的,而是取决于PCI Express转PCI桥先收到CPU主动预取设置还是先收到PCI通信模块读BD请求。如果PCI Express转PCI桥先收到PCI通信模块读BD请求,就会先转发读BD请求,也就会先收到CPU发出的BD数据。在PCI Express转PCI桥等待PCI通信模块重新发起PCI读BD请求,并响应该读BD请求的过程中,PCI Express转PCI桥也会同时收到主动预取的数据到片内Buffer中,满足接下来的PCI通信模块读数据的需要。
通过图8可以明显看出,采用本发明方法,大幅提高了PCI Express总线的利用率,降低了PCI总线的浪费率。
本发明处理批量数据发送的流程如图9所示。由于PCI总线速率较低,PCI Express转PCI桥主动预取发送数据会明显超前于PCI通信模块的发送速度,只要PCI Express转PCI桥内部缓存设计足够大,就可以保证批量发送时,PCI通信模块直接从PCI Express转PCI桥内部缓存获取数据,从而大大提高PCI通信模块的发送效率。
由上述实施例可见,本发明提供的PCI-E转PCI桥装置及其相应的主动预取数据的方法能够获得以下有益效果:
(1)实现了PCI-E转PCI桥的主动预取,把原有PCI通信模块读取BD描述符、读数据、设置BD描述符发送完成标志的串行动作,改为并行执行,提高了PCI-E总线的利用率,大幅提高了PCI通信模块的发送性能,抵消了PCI-E转PCI桥引入的大延迟。
(2)实现了PCI-E转PCI桥的预取长度动态设置,保证了每次发送的最优预取,降低了PCI总线浪费率。
(3)针对数据通讯应用的特殊性进行设计,针对性强。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (10)
1.一种PCI-E转PCI桥装置,其特征在于,包括:主动预取配置接口、主动预取PCI-E读交易生成模块、PCI-E收发模块和读数据缓存;其中:
所述主动预取配置接口,用于在CPU准备好待发送数据之后,并在设置缓存描述符之前,从CPU接收所述待发送数据在缓存中的起始地址和长度;
所述主动预取PCI-E读交易生成模块,用于从所述主动预取配置接口获取待发送数据的起始地址和长度,并生成相应的PCI-E总线读交易请求发送给CPU以预取所述待发送数据;
PCI-E收发模块,用于将预取得到的待发送数据存储到所述读数据缓存;
所述读数据缓存,用于存储所述预取得到的待发送数据,以便PCI通信模块发出的PCI读交易请求命中所述预取得到的待发送数据时,将命中的所述预取得到的待发送数据发送给PCI通信模块。
2.根据权利要求1所述的装置,其特征在于,所述装置中还包括发送选择模块和PCI-E读交易生成模块;
所述主动预取PCI-E读交易生成模块,用于将所生成的PCI-E总线读交易请求通过所述发送选择模块发送给CPU;
PCI-E读交易生成模块,用于将接收自PCI通信模块的PCI读交易请求转换成PCI-E总线读交易请求,并将转换得到的PCI-E总线读交易请求发送给所述发送选择模块;
所述发送选择模块,用于分别接收主动预取PCI-E读交易生成模块和PCI-E读交易生成模块生成的PCI-E总线读交易请求,并按照时间片分别选择其中的一个PCI-E总线读交易请求通过PCI-E收发模块发送给CPU。
3.根据权利要求1或2所述的装置,其特征在于:
所述主动预取配置接口包括:预取长度区、标识区和预取起始地址区;
所述主动预取配置接口,用于在所述标识区未被设置时,将接收自CPU的待发送数据的起始地址设置到所述预取起始地址区,将接收自CPU的待发送数据的长度设置到所述预取长度区。
4.根据权利要求3所述的装置,其特征在于,所述装置还包括主动预取操作队列;
所述主动预取操作队列中的每一项用于存储一个起始地址和长度,每次在主动预取配置接口从CPU接收待发送数据在缓存中的起始地址和长度之后,所述待发送数据在缓存中的起始地址和长度作为一项进入主动预取操作队列;
所述主动预取PCI-E读交易生成模块,还用于按照先入先出的原则从所述主动预取操作队列中获取一项待发送数据的起始地址和长度,并生成相应的PCI-E总线读交易请求。
5.根据权利要求4所述的装置,其特征在于:
当主动预取操作队列满时,所述主动预取操作队列还用于通知主动预取配置接口,所述主动预取配置接口还用于根据主动预取操作队列的通知设置所述标识区;
当主动预取操作队列存在空闲项时,所述主动预取操作队列还用于通知主动预取配置接口,所述主动预取配置接口还用于根据主动预取操作队列的通知清除所述标识区的设置。
6.根据权利要求2所述的装置,其特征在于:
所述发送选择模块,用于按照1∶1的时间片比例,从接收自主动预取PCI-E读交易生成模块和PCI-E读交易生成模块的PCI-E总线读交易请求中选择一个通过PCI-E收发模块发送给CPU。
7.一种主动预取数据的方法,应用于PCI-E转PCI桥装置,其特征在于,包括:
CPU准备好待发送数据之后,在设置缓存描述符之前,将所述待发送数据在缓存中的起始地址和长度设置到PCI-E转PCI桥;
PCI-E转PCI桥根据CPU所设置的起始地址和长度向CPU发送PCI-E总线读交易请求,预取所述待发送数据,并将预取得到的所述待发送数据存储到PCI-E转PCI桥的读数据缓存中;
当接收到PCI通信模块的PCI读交易请求命中读数据缓存中所述预取得到的待发送数据时,PCI-E转PCI桥将命中的所述预取得到的待发送数据发送给PCI通信模块。
8.根据权利要求7所述的方法,其特征在于,该方法进一步包括:
在PCI-E转PCI桥中设置主动预取操作队列,所述主动预取操作队列中的每一项用于存储CPU设置到PCI-E转PCI桥的一个待发送数据的起始地址和长度;
PCI-E转PCI桥按照先入先出的原则从所述主动预取操作队列中获取一项待发送数据的起始地址和长度,向CPU预取相应的待发送数据。
9.根据权利要求7或8所述的方法,其特征在于,该方法进一步包括:
当接收到PCI通信模块的需要发送给CPU的PCI读交易请求时,PCI-E转PCI桥将该请求转换为PCI-E总线读交易请求,并按照时间片从用于预取待发送数据的PCI-E总线读交易请求和转换的PCI-E总线读交易请求中选择一个发送给CPU。
10.根据权利要求9所述的方法,其特征在于:
所述PCI-E转PCI桥按照1∶1的时间片比例,从用于预取待发送数据的PCI-E总线读交易请求和转换的PCI-E总线读交易请求中选择一个发送给CPU。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011101117042A CN102184151B (zh) | 2011-04-29 | 2011-04-29 | Pci-e转pci桥装置及其主动预取数据的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011101117042A CN102184151B (zh) | 2011-04-29 | 2011-04-29 | Pci-e转pci桥装置及其主动预取数据的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102184151A CN102184151A (zh) | 2011-09-14 |
CN102184151B true CN102184151B (zh) | 2013-06-26 |
Family
ID=44570329
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011101117042A Active CN102184151B (zh) | 2011-04-29 | 2011-04-29 | Pci-e转pci桥装置及其主动预取数据的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102184151B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103729142B (zh) * | 2012-10-10 | 2016-12-21 | 华为技术有限公司 | 内存数据的推送方法及装置 |
CN105389275B (zh) * | 2015-11-17 | 2018-02-06 | 无锡江南计算技术研究所 | 基于AMBA架构的虚拟PCIe‑PCI桥接系统 |
CN107453999B (zh) * | 2016-05-31 | 2020-10-02 | 新华三技术有限公司 | 一种网络设备和网络报文转发方法 |
CN107066407A (zh) * | 2016-11-28 | 2017-08-18 | 天津光电通信技术有限公司 | 一种基于PCIe总线的主从交互式通信平台及方法 |
US10657059B2 (en) | 2017-09-12 | 2020-05-19 | International Business Machines Corporation | Controlling a rate of prefetching based on bus bandwidth |
CN112181887B (zh) * | 2019-07-05 | 2023-05-26 | 迈普通信技术股份有限公司 | 数据传输方法及装置 |
CN115344522B (zh) * | 2022-10-14 | 2023-01-03 | 井芯微电子技术(天津)有限公司 | 消息转换通道、消息转换装置、电子设备和交换设备 |
CN115905046B (zh) * | 2022-12-23 | 2023-07-07 | 科东(广州)软件科技有限公司 | 网卡驱动数据包处理方法、装置、电子设备及存储介质 |
CN116991593B (zh) * | 2023-09-26 | 2024-02-02 | 芯来智融半导体科技(上海)有限公司 | 操作指令处理方法、装置、设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101710270A (zh) * | 2009-11-27 | 2010-05-19 | 西安奇维测控科技有限公司 | 一种基于闪存的高速大容量存储器及芯片数据管理方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7424562B2 (en) * | 2004-03-01 | 2008-09-09 | Cisco Technology, Inc. | Intelligent PCI bridging consisting of prefetching data based upon descriptor data |
TW200910103A (en) * | 2007-08-29 | 2009-03-01 | Inventec Corp | Method for dynamically allocating link width of riser card |
-
2011
- 2011-04-29 CN CN2011101117042A patent/CN102184151B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101710270A (zh) * | 2009-11-27 | 2010-05-19 | 西安奇维测控科技有限公司 | 一种基于闪存的高速大容量存储器及芯片数据管理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102184151A (zh) | 2011-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102184151B (zh) | Pci-e转pci桥装置及其主动预取数据的方法 | |
US7441064B2 (en) | Flexible width data protocol | |
TWI229259B (en) | A method and related apparatus and computer program product for distributed memory control and bandwidth optimization | |
US8046505B2 (en) | Systems for implementing SDRAM controllers, and buses adapted to include advanced high performance bus features | |
TWI633442B (zh) | 用以啓用透過週邊構件互連快速匯流排的身份識別式串流之方法與裝置(二) | |
CN105224482A (zh) | 一种fpga加速卡高速存储系统 | |
CN101916236A (zh) | 为邮递性中断事务提供留存机构 | |
WO2005071557A2 (en) | A multiple address two channel bus structure | |
TWI469048B (zh) | 緩衝器、運算系統、電腦可讀取的媒體以及媒體及管線式處理元件中的緩衝方法 | |
CN108228498A (zh) | 一种dma控制装置和图像处理器 | |
WO2024077890A1 (zh) | 一种异步fifo读写控制方法、系统及电子设备 | |
US20150160720A1 (en) | Multiple-queue multiple-resource entry sleep and wakeup for power savings and bandwidth conservation in a retry based pipeline | |
TW200846912A (en) | Control system and data fetching method for a memory | |
EP1226504A1 (en) | Method and apparatus for supporting multi-clock propagation in a computer system having a point to point half duplex interconnect | |
EP1746497B1 (en) | Apparatus and method for sparse line write transactions | |
CN103885900B (zh) | 数据访问处理方法、PCIe设备和用户设备 | |
TWI336439B (en) | System and method to reduce memory latency in microprocessor systems connected with a bus | |
CN100343778C (zh) | 数据传送方法和数据传送桥接器 | |
EP1742147B1 (en) | Microprocessor apparatus and method for enabling variable width data transfers | |
US11334402B2 (en) | SDIO chip-to-chip interconnect protocol extension for slow devices and power savings | |
EP0829095B1 (en) | Method and apparatus for reducing latency time on an interface by overlapping transmitted packets | |
KR100218625B1 (ko) | 정보 처리 시스템 및 그의 데이타 전송 방법 | |
CN109558076A (zh) | 一种可配置的虚拟spi-flash | |
JP2008282200A (ja) | 割り込み処理装置及び割り込み処理方法 | |
JPH11242651A (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 | ||
CP03 | Change of name, title or address |
Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Patentee after: Xinhua three Technology Co., Ltd. Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base Patentee before: Huasan Communication Technology Co., Ltd. |
|
CP03 | Change of name, title or address |