一种访问PCI存储空间的方法和装置制造方法及图纸

技术编号:3855061 阅读:248 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供了一种访问外围器件互连(PCI)存储空间的方法和装置,其中方法包括:确定目标地址对应的基地址和偏移地址;利用确定的基地址配置要访问存储器的基地址寄存器(BAR);通过所述BAR对应的PCI窗口按照确定的偏移地址对所述存储器进行访问。本发明专利技术通过对BAR进行灵活的配置,实现PCI窗口的移动,从而实现对存储器存储空间的全域访问,解决存储空间访问范围受限的问题。

【技术实现步骤摘要】

本专利技术涉及计算机通信
,特别涉及一种访问PCI存储空间的方法和装置
技术介绍
随着电子信息和半导体产业的飞速发展,存储器共享技术逐渐被广泛应用。在中央处理器(CPU)系统中,外围器件互连(PCI)是普遍采用的总 线结构,CPU通过PCI总线实现对存储器中各存储空间的访问。现有技术中PCI存储空间访问系统可以如图1所示,CPU采用多个PCI 窗口对该PCI窗口对应的存储空间进行访问,其中,每个PCI窗口对应不同 的基地址寄存器(BAR),每个BAR对应固定地址范围的存储空间,也就 是说,PCI窗口和存储空间一对一进行映射。 一旦PCI窗口和存储空间的映 射关系确定,BAR中的基地址内容也就相应的确定,BAR中的基地址就是 对应PCI窗口所映射的存储空间的基地址,是预先配置好的,在访问过程中 不会发生变化。当CPU确定访问存储器中某个目标地址时,确定该目标地 址对应的基地址,通过配置了该基地址的BAR对应的PCI窗口访问对应的 存储空间。然而,现有技术中CPU仅能实现固定数量的PCI窗口对应的存储空间 访问,例如图1中仅能够实现6个PCI窗口对应的存储空间的访问,如果每 个PCI窗口的访问范围是8M,那么最多仅能够实现48M存储空间的访问, 且访问地址范围也受限,当在某些情况下需要扩大存储空间时,则不能够满 足需求。如果通过扩大PCI窗口大小的方式来扩大存储空间访问范围,由于 CPU的地址空间有限,可能会造成PCI窗口无法扩大到存储需求的状况。
技术实现思路
有鉴于此,本专利技术提供了一种访问PCI存储空间的方法和装置,以便于解决存储空间访问范围受限的问题。一种访问PCI存4诸空间的方法,该方法包括A、 确定目才示i也址对应的基地址和偏移地址;B、 利用确定的基地址配置要访问存储器的基地址寄存器BAR;C、 通过所述BAR对应的PCI窗口按照确定的偏移地址对所述存储器 进行访问。一种访问PCI存储空间的装置,该装置包括地址确定单元、配置单元和 访问单元;所述地址确定单元,用于确定目标地址对应的基地址和偏移地址; 所述配置单元,用于利用所述地址确定单元确定的基地址配置要访问的存 储器的BAR;所述访问单元,用于通过所述BAR对应的PCI窗口按照所述地址确定单元 确定的偏移地址对所述存储器进行访问。由以上技术方案可以看出,本专利技术提供的方法和装置,在访问时确定目 标地址对应的基地址后,利用该基地址对存储器的BAR进行配置,从而实 现PCI窗口的移动。也就是说,本专利技术能够根据实际的存储器访问需求对 BAR进行灵活设置,打破了 PCI窗口与存储空间的固定——映射关系,利 用PCI窗口的移动来实现对存储器存储空间的全域访问,解决了存储空间访 问范围受限的问题。另外,通过本专利技术在CPU中使用一个PCI窗口即可实 现对存储器整个存储空间的访问,因此,相比较现有技术占用CPU的地址 较少,不会受到CPU地址空间的限制。附图说明图1为现有技术中的PCI存储空间访问示意图2为本专利技术实施例提供的PCI存储空间访问示意3为本专利技术实施例提供的详细方法流程图4为本专利技术实施例提供的访问多个存储器的实例图5为本专利技术实施例提供的装置结构图。具体实施例方式为了使本专利技术的目的、技术方案和优点更加清楚,下面结合附图和具体 实施例对本专利技术进行详细描述。本专利技术提供的方法主要包括确定目标地址对应的基地址和偏移地址; CPU利用确定的基地址配置要访问存储器的BAR,通过该BAR对应的PCI 窗口按照确定的偏移地址对该存储器进行访问。下面列举具体实施例对上述方法进4亍详细描述。在本专利技术中PCI窗口对 应的BAR并不是预先配置好,而是根据实际访问需求灵活配置,使得PCI 窗口不再与固定的存储空间——映射,而是可以通过改变BAR的配置映射到任意存储空间。采用这种方式时,CPU仅需要一个PCI窗口就可以实现 对存储器所有存储空间的访问,同时在存储器也仅需要设置一个BAR。如 图2所示。下面以图2所示的情况为例说明本专利技术的具体实现,假设PCI窗口大小 配置为8M, BAR的初始默i人值为0x00000000,则初始状态时,CPU能够 对目标地址为0x00000000至0x007fffff范围内的8M存储空间进行访问;如 果此时要访问的目标地址为0x01300000,则具体实现方法流程如图3所示, 该方法可以包括以下步骤DstAdder步骤301:计算窗口值WinNum,该WinNum =WinSize,其中,DstAddr为要访问的目标地址,WinSize为PCI窗口大小。由于PCI总线的M^范要求,在进行PCI存储空间访问时,BAR的基址 必须以PCI窗口大小为单位进行变化,也就是说,PCI窗口必须以自身窗口 大小为单位进行移动,在此计算窗口值WinNum是为了确定当前窗口位置是否需要变化,以及后续确定需要配置的基地址。在本实施例中,确定WinNum = 0x01300000/8M = 2。步骤302:判断确定的窗口值是否与当前窗口值相同,如果否,执行步骤303;如果是,执行步骤305。步骤303:确定该目标地址对应的基地址BaseAddr和偏移地址OffsetAddr,该BaseAddr = WinSize x WinNum , OffsetAddr = DstAddr %WinSize。由于当前PCI窗口在起始位置,默认起始位置的窗口值为0,则本专利技术 实施例中确定的窗口值与当前窗口值是不相同的,因此执行该步骤303 。本专利技术中,BaseAddr=8Mx 2 = 0x01000000。 OffsetAddr = 0x01300000 %8M = 0x00300000。步骤304:利用确定的基地址BaseAddr配置BAR,并将确定的窗口值 记录为当前窗口值,CPU通过PCI窗口按照确定的偏移地址对存储空间进 行访问,结束流程。在本实施例中,将计算出的基地址0x01000000配置在BAR中,则BAR 自动指向基地址0x01000000,当CPU通过PCI窗口^^安照确定的偏移地址对 存储空间进行访问时,在地址为0x01000000的存储空间基础上偏移 0x00300000,在该偏移对应的存储空间进行访问。步骤305:确定目标地址对应的偏移地址,CPU直接通过PCI窗口按照 确定的偏移地址对存储空间进行访问,结束流程。本步骤中,确定偏移地址的方式可以与步骤303中相同,釆用OffsetAddr =DstAddr%WinSize的方式。当然,需要说明的是,本专利技术中提供的计算基 地址和偏移地址的方式仅是其中的一个例子,也可以釆用其它计算方式,例 如OffsetAddr = DstAddr-BaseAddr的方式,在此不再——赘述。如果确定的窗口值与当前窗口值相同,说明PCI窗口不需要移动,即不 需要重新设置BAR中的基地址,直接进行偏移地址的计算后,按照偏移地址在当前PCI窗口的位置进行访问即可。另外,也可以在CPU中设置多个PCI窗口用于访问多个存储器,每个 PCI窗口与一个存储器的BAR对应,且每个PCI窗口可以通过灵活设置BAR 对各存储器中所有的存储空间进行访问。如图4所示,假设PCI窗口 l用于 访问存储器1, PCI窗口 2用于访问存本文档来自技高网...

【技术保护点】
一种访问PCI存储空间的方法,其特征在于,该方法包括: A、确定目标地址对应的基地址和偏移地址; B、利用确定的基地址配置要访问存储器的基地址寄存器BAR; C、通过所述BAR对应的PCI窗口按照确定的偏移地址对所述存储器 进行访问。

【技术特征摘要】

【专利技术属性】
技术研发人员:张海飞
申请(专利权)人:杭州华三通信技术有限公司
类型:发明
国别省市:86[中国|杭州]

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

1