将不可预取存储单元映射到存储器映射输入/输出空间中 |
|||||||
申请号 | CN200980161621.5 | 申请日 | 2009-09-25 | 公开(公告)号 | CN102511039A | 公开(公告)日 | 2012-06-20 |
申请人 | 惠普发展公司; 有限责任合伙企业; | 发明人 | J.P.科万; K.H.凯辛; | ||||
摘要 | 一种系统,该系统包括主机和设备。所述设备具有至少一个不可预取存储单元。所述主机和所述设备被配置成将所述至少一个不可预取存储单元映射到 存储器 映射输入/输出空间中,所述存储器映射输入/输出空间是经由大于32地址位寻址的。 | ||||||
权利要求 | 1.一种系统,包括: |
||||||
说明书全文 | 将不可预取存储单元映射到存储器映射输入/输出空间中 背景技术[0001] 通常,计算机系统包括多个与彼此进行通信以执行系统应用的集成电路。往往,计算机系统包括一个或多个主机控制器以及一个或多个电子子系统组件。为了执行系统功能,(一个或多个)主机控制器和子系统组件经由通信链路进行通信,所述通信链路诸如并行通信链路和串行通信链路。并行通信链路包括实现传统外设部件互连(PCI)的链路,其是PCI eXtended (PCI-X)和PCI Local Bus标准的一部分。串行通信链路包括实现PCI Express (PCIe)标准的链路。 [0002] 传统的PCI是用于附连计算机中的硬件设备的总线。所述设备可以采取装配到母板上的集成电路或装配到插槽中的扩充卡的形式。典型的PCI卡包括:网卡、声卡、调制解调器、额外端口、电视调谐器卡、以及盘控制器。 [0003] PCI-X是总线和扩充卡标准,其增强了用于服务器所要求的更高带宽的PCI Local Bus标准。PCI-X通过使最大时钟速度从66MHz加倍到133MHz来修改传统PCI标准。与采用标准PCI的133MB/s相比,在采用PCI-X的处理器和外设之间交换的数据的理论最大量是1.06 GB/s。传统PCI和PCI-X已经在很大程度上被以不同的逻辑设计为特征的PCIe代替。 [0004] PCIe在用户、服务器以及工业应用中被用作母板级互连以链接母板安装的外设以及用作用于加入板(add-in board)的扩充卡接口。PCIe与早期总线之间的差异是基于点到点串行链路的拓扑结构,而不是共享的并行总线。PCIe是经由差分信号对传送数据的高速串行链路。围绕被称为通道(lane)的双向串行点到点连接建立PCIe链路。在该电平处,每个通道利用两个单向的低电压差分信令对、发送对和接收对,以达到每通道四条数据线的总数。任何两个PCIe设备之间的连接被称为链路,并且其是从一个或多个通道的集合建立的。所有的PCIe设备最低限度地支持单通道(x1)链路。PCIe设备可以可选地支持由x2、x4、x8、x12、x16、x32或更多通道组成的更宽的链路。 [0005] 通常,PCIe设备使诸如寄存器和存储器单元之类的存储单元映射到PCIe存储空间中,所述PCIe存储空间也被称为存储器映射输入/输出(MMIO)空间。往往,MMIO空间包括可经由32位地址寻址的部分和可经由64位地址寻址的部分。对小于四千兆字节(GB)的存储空间进行寻址的可经由32位地址寻址的部分被称为LMMIO。对大于四GB的存储空间进行寻址的可经由64位地址寻址的部分被称为GMMIO。在桥接器和切换器中的映射资源被定义成将LMMIO空间与不可预取语义相关联,并且将GMMIO空间与可预取语义相关联。 [0006] PCIe设备正要求越来越大量的不可预取MMIO空间。在支持大量的PCIe设备的高度可缩放平台上,这会导致LMMIO空间的短缺,其限制了能够被支持的设备的数量。 [0008] 图1是图示了包括PCIe链路的系统的一个实施例的图。 [0009] 图2是图示了下述系统的一个实施例的图,所述系统包括PCIe链路和耦合至切换器、桥接器、以及多个设备和多功能设备(MFD) 的主机。 [0010] 图3是图示了用于将设备存储单元映射到PCIe存储空间中的方法的一个实施例的图。 具体实施方式[0011] 在以下详细描述中,对形成于此的一部分的附图进行参考,并且在附图中通过说明的方式示出了特定实施例,可以以该特定实施例来实现本发明。在这方面,参考正被描述的(一个或多个)图的方位来使用方向术语,诸如“顶部”、“底部”、“前面”、“后面”、“前端”、“尾部”等。因为本发明的实施例的部件能够被定位在多个不同的方位上,所以所述方向术语是用于说明的目的而决不是限制的。应当理解的是,在不偏离本发明的范围的情况下,可以利用其它实施例并且可以进行结构或逻辑上的改变。因此,以下详细描述不被从限制的意义上来理解,并且本发明的范围由随附权利要求来限定。 [0012] 图1是图示了包括PCIe链路22的系统20的一个实施例的图。系统20包括主机24和输入/输出(I/O)设备26,所述输入/输出(I/O)设备26包括至少一个不可预取存储单元28。主机24和I/O设备26被配置成将所述至少一个不可预取存储单元28映射到经由大于32地址位寻址的存储空间中, 其在GMMIO空间中并且在历史上仅用于可预取存储单元。在一个实施例中,主机24包括一个或多个微处理器,所述微处理器执行软件、固件、和/或操作系统指令以提供这些系统功能。在一个实施例中,I/O设备26包括一个或多个微处理器,所述微处理器执行软件、固件、和/或操作系统指令以提供这些系统功能。 [0013] 主机24经由PCIe链路22电耦合至I/O设备26。在一个实施例中,主机24经由PCIe链路22直接地电耦合至I/O设备26,即,没有任何中间的PCIe到PCIe切换器(在本文中被称为切换器),并且没有任何PCIe到PCI/PCI-X桥接器(在本文中被称为桥接器)。在一个实施例中,主机24经由PCIe链路22和一个或多个切换器电耦合至I/O设备26,其中主机24被耦合至切换器的一侧,而I/O设备26被耦合至该切换器的另一侧。在一个实施例中,主机24经由一个或多个桥接器电耦合至I/O设备26,其中主机24被耦合至桥接器的一侧,而I/O设备26被耦合至该桥接器的另一侧。 [0014] 在PCIe协议中,与传统PCI协议相对比,所有的存储器读取请求包括报头中的明确的有效载荷字节计数值。因此,只要从请求者到完成者的整条路径在PCIe之上,PCIe存储器读取就将不预取数据。这个特征以及PCIe切换器的某些其它特征使得将不可预取存储单元映射到GMMIO空间中是安全的,而采用传统PCI协议和传统PCI桥接器这样做将不会是安全的。PCI-X协议在其存储器读取请求的某些而不是全部中包括明确的有效载荷字节计数,并且PCI-X桥接器缺乏这样的某些特征,该特征使得将不可预取存储单元映射到GMMIO空间中是安全的。 [0015] 采用PCIe主机系统,为了安全地将至少一个不可预取存储单元28映射到GMMIO中,两个条件是足够的。用于映射的一个条件是主机24和I/O设备26不经由一个或多个中间的PCI或PCI-X桥接器耦合到彼此。用于映射的另一个条件是在桥接器下方的PCI或PCI-X 设备被禁止向被映射到PCIe I/O设备的GMMIO空间中的不可预取存储单元进行对等请求。 [0016] 所述第一条件减少或消除了与桥接器(即,在该桥接器的至少一侧上实行PCI或PCI-X的桥接器)和在该桥接器下方的桥接器相关联的问题。经由第一条件减少或消除的问题包括:桥接器进行存储器写入的字节合并(这可能破坏GMMIO中的不可预取存储单元),在不具有明确的字节计数的PCI或PCI-X读取中进行预取,由于在PCI模式下放弃延迟的完成而导致引起无记载数据破坏(silent data corruption),以及相对于零长度存储器读取是不定的(ill-defined)桥接器行为。 [0017] 第二条件减少或消除了与对等请求相关联的问题,诸如针对存储器读取的盲预取。 [0018] 如果在系统20中不存在PCI或PCI-X设备,则这两个条件都会被满足。在一个实施例中,系统策略规定禁止I/O设备经由桥接器耦合至PCIe链路22。在一个实施例中,主机24确定在系统20中没有桥接器,因此主机24可以将至少一个不可预取存储单元28映射到GMMIO空间中。 [0019] 还可以单独地满足这两个条件。其中,关于第一条件,主机24确定I/O设备26是否被经由一个或多个中间的桥接器耦合至主机24。如果主机24被经由一个或多个中间的桥接器耦合至I/O设备26,则主机24不将至少一个不可预取存储单元映射到GMMIO空间中,即,禁止所述至少一个不可预取存储单元到GMMIO中的映射。如果主机24被直接耦合至I/O设备26或者如果主机24被经由一个或多个切换器耦合至I/O设备26,则满足了第一条件。关于第二条件,在一个实施例中,系统策略规定禁止在桥接器下方的I/O设备进行对等请求。 [0020] 系统20可以将一个或多个不可预取存储单元映射到经由大于32地址位寻址的存储空间(即,GMMIO空间)中。将不可预取存储单元映射到GMMIO中减轻了LMMIO上的负荷并且增加了能够被附连到PCIe系统的设备的数量。 [0021] 图2是图示了包括在102处的PCIe链路的系统100的一个实施例的图。系统100包括主机104,所述主机104被耦合至切换器106、桥接器108、以及多个设备和多功能设备(MFD)。如先前所描述的,切换器106指的是PCIe到PCIe切换器,而桥接器108指的是PCIe到PCI/PCI-X桥接器。同样地,在一个方面,主机104类似于主机24并且设备和MFD中的每一个都类似于I/O设备26。 [0022] 主机104包括根联合体110(root complex),所述根联合体110在主机104与切换器106之间、在主机104与桥接器108之间、以及在主机104和在112处的MFD X之间进行对接。根联合体110包括在114处的根端口A、在116处的根端口B、以及在118处的根端口C。根联合体110经由在114处的根端口A和在102a处的PCIe链路电耦合至切换器106,根联合体110经由在116处的根端口B和在102b处的PCIe链路电耦合至在112处的MFD X,并且根联合体110经由在118处的根端口C和在102c处的PCIe链路电耦合至桥接器108。 [0023] 系统100包括在120处的设备V、在122处的MFD W、在124处的设备Y、以及在126处的MFD Z。主机104经由切换器106耦合至在120处的设备V和在122处的MFD W。其中,切换器106的一侧经由PCIe链路102a电耦合至在114处的根端口A,而切换器106的另一侧经由链路128电耦合至在120处的设备V并且经由链路130电耦合至在122处的 MFD W。主机104经由桥接器108耦合至在124处的设备Y和在126处的MFD Z。其中,桥接器108的一侧经由PCIe链路102c电耦合至在118处的根端口C,而桥接器108的另一侧经由总线132电耦合至在124处的设备Y并且经由总线132电耦合至在126处的MFD Z。 [0024] 在120处的设备V、在122处的MFD W、在112处的MFD X、在124处的设备Y、以及在126处的MFD Z中的每个都包括基地址寄存器、可预取存储单元、以及不可预取存储单元。在120处的设备V包括基地址寄存器136、可预取存储单元138、以及不可预取存储单元140。在122处的MFD W包括基地址寄存器142、可预取存储单元144、以及不可预取存储单元146。在112处的MFD X包括基地址寄存器148、可预取存储单元150、以及不可预取存储单元152。在124处的设备Y包括基地址寄存器154、可预取存储单元156、以及不可预取存储单元158。在126处的MFD Z包括基地址寄存器160、可预取存储单元162、以及不可预取存储单元164。 [0025] 主机104和根联合体110将可预取存储单元138、144、150、156和162以及不可预取存储单元140、146、152、158和164映射到被称为MMIO空间的PCIe存储空间中。该MMIO空间包括:可经由32位地址寻址的部分,其寻址小于四千兆字节(GB)的存储空间并且被称为LMMIO空间;以及可经由64位地址寻址的部分,其寻址大于四GB的存储空间并且被称为GMMIO空间。 [0026] 主机104和根联合体110将可预取存储单元138、144、150、156和162映射到GMMIO 中,并且将不可预取存储单元140、146和152映射到LMMIO 或GMMIO中。主机104和根联合体110将不可预取存储单元158和164映射到LMMIO中。 [0027] 为了安全地将不可预取存储单元映射到GMMIO中,先前所描述的两个条件是足够的。首先,主机104和具有待映射到GMMIO中的(一个或多个)不可预取存储单元的MFD或设备不能够经由诸如桥接器108之类的一个或多个中间桥接器耦合到彼此。其次,禁止诸如在桥接器108下方的在124处的设备Y以及在126处的MFD Z之类的在桥接器下方的设备和MFD向GMMIO空间中的不可预取存储单元进行对等请求。 [0028] 第一条件减少或消除了与桥接器(即,在一侧上实行PCI或PCI-X的桥接器)和在桥接器下方的桥接器相关联的潜在问题。减少或消除的潜在问题包括:桥接器进行存储器写入的字节合并(这可能破坏GMMIO中的不可预取存储单元),在不具有明确的字节计数的PCI或PCI-X读取中进行预取,由于在PCI模式下放弃延迟的完成而导致引起无记载数据破坏,以及相对于零长度存储器读取是不定的桥接器行为。第二条件减少或消除了与对等请求相关联的潜在问题,诸如针对存储器读取的盲预取。如果满足这两个条件,则主机104和根联合体110可以安全地将不可预取存储单元映射到作为GMMIO空间的经由大于32地址位寻址的存储空间中。 [0029] 在一个实施例中,主机104和根联合体110包括一个或多个微处理器,所述微处理器执行软件、固件、和/或操作系统指令以提供这些系统功能。在一个实施例中,包括在120处的设备V、在122处的MFD W、在112处的MFD X、在124处的设备Y、以及在126处的MFD Z的设备和MFD中的一个或多个包括一个或多个微处理器,所述微处理器执行软件、固件、和/或操作系统指令以提供这些系统功能。 [0030] 在一个实施例中,为了满足两个条件,禁止设备和MFD经由诸如桥接器108之类的桥接器耦合至PCIe链路102。在一个实施例中,为了满足两个条件,禁止诸如桥接器108之类的桥接器耦合至PCIe链路102。在一个实施例中,为了满足两个条件,主机104确定诸如桥接器108之类的桥接器是否在系统100中,并且如果没有桥接器在系统100中,则主机104能够安全地将一个或多个不可预取存储单元映射到GMMIO中。 [0031] 为了满足第一条件,主机104确定诸如在120处的设备V、在122处的MFD W、在112处的MFD X、在124处的设备Y、以及在126处的MFD Z之类的设备或MFD是否经由一个或多个中间桥接器耦合至主机104。如果主机104经由一个或多个中间桥接器耦合至正被讨论的MFD或设备,则主机104不将来自该设备或MFD的不可预取存储单元映射到GMMIO中,即,禁止来自该设备或MFD的不可预取存储单元到GMMIO中的映射。如果主机104被直接地耦合至设备或MFD,或者如果主机104经由一个或多个切换器耦合至设备或MFD,则满足了第一条件。 [0032] 在系统100中,主机104确定在120处的设备V和在122处的MFD W经由切换器106耦合至主机104,并且在112处的MFD X被直接地耦合至主机104,即,没有中间切换器或桥接器。同样地,主机104确定在124处的设备Y和在126处的MFD Z中的每一个经由中间桥接器108耦合至主机104。因此,关于在120处的设备V、在122处的MFD W、以及在 112处的MFD X,满足第一条件并且不可预取存储单元140、146和152到GMMIO中的映射取决于第二条件被满足。关于在124处的设备Y和在126处的MFD Z,不满足第一条件并且主机104不将不可预取存储单元158和164映射到GMMIO中。 [0033] 关于第二条件,在系统100中系统策略规定禁止诸如在桥接器108下方的在124处的设备Y和在126处的MFD Z之类的在桥接器下方的设备或MFD进行对等请求。因此,满足第二条件并且主机104能够将不可预取存储单元140、146和152映射到GMMIO中。 [0034] 为了将可预取存储单元和不可预取存储单元映射到LMMIO和GMMIO中,主机104对基地址寄存器136、142、148、154和160进行编程。用于映射LMMIO的基地址寄存器在长度方面是32位的,而用于映射GMMIO的基地址寄存器在长度方面是64位的。为了将不可预取存储单元140、146和152映射到GMMIO中,主机104提供被编程到64位基地址寄存器中的64位地址。 [0035] 图3是图示了用于将设备存储单元映射到系统100中的PCIe存储空间中的方法200的一个实施例的图。在202处,主机104检测PCIe链路102a、102b以及102c上的设备、切换器、以及桥接器。主机104检测在120处的设备V、在122处的MFD W、在112处的MFD X、在124处的设备Y、以及在126处的MFD Z。同样地,主机104检测切换器106和桥接器108。 [0036] 在204处,主机104收集关于待映射到PCIe存储空间中的不可预取和可预取存储单元的信息。在120处的设备V向主机104提供可预取存储单元138和不可预取存储单元140。在122处的MFD W向主机104提供可预取存储单元144和不可预取存储单元146。在 112处的MFD X向主机104提供可预取存储单元150和不可预取存储单元152。在124处 的设备Y向主机104提供可预取存储单元156和不可预取存储单元158,而在126处的MFD Z向主机104提供可预取存储单元162和不可预取存储单元164。 [0037] 在206处,主机104确定是否包括在120处的设备V、在122处的MFD W、在112处的MFD X、在124处的设备Y,以及在126处的MFD Z的设备中的每一个经由诸如桥接器108之类的中间桥接器耦合至主机104。这是将针对将不可预取存储单元映射到GMMIO中而满足的一个条件。在系统100中,主机104确定在124处的设备Y和在126处的MFD Z中的每个经由中间桥接器108耦合至主机104。结果,主机104不将不可预取存储单元158和 164映射到GMMIO。主机104还确定在120处的设备V、在122处的MFD W、以及在112处的MFD X不经由中间桥接器耦合至主机104。 [0038] 在208处,系统100禁止来自在124处的设备Y和在126处的MFD Z的对等请求。在系统100中系统策略规定禁止诸如在桥接器108下方的在124处的设备Y和在126处的MFD Z之类的在桥接器下方的设备或MFD进行对等请求。因此,满足第二条件并且主机104能够将不可预取存储单元140、146和152映射到GMMIO中。 [0039] 在210处,主机104将不可预取存储单元158和164映射到LMMIO中并且将不可预取存储单元140、146和152映射到LMMIO或GMMIO 中。在212处,主机104将可预取存储单元138、144、150、156和162映射到GMMIO中。在214处,系统100继续其它的系统功能。 [0040] 系统20和系统100能够将一个或多个不可预取存储单元映射到经由大于32地址位寻址的存储空间(即,GMMIO空间)中。将不可预取存储单元映射到GMMIO中减轻了LMMIO空间上的负荷并且增加了能够被映射到PCIe存储空间的设备的数量。 [0041] 虽然本文中已经说明并且描述了特定实施例,但是本领域的普通技术人员将了解的是,在不偏离本发明的范围的情况下,各种替代和/或等同实施方式可以取代所示出的和所描述的特定实施例。本申请旨在涵盖本文中所讨论的特定实施例的任何修改或变化。因此,意图是本发明仅由权利要求及其等同物来限制。 |