pcie好还是ssd好非透明桥支持两个根节点的内存访问吗

格式:PDF ? 页数:5页 ? 上传日期: 01:59:10 ? 浏览次数:39 ? ? 5000积分 ? ? 用稻壳阅读器打开

全文阅读已结束如果下载本文需要使用

该用户还上传了这些文档

}

pcie好还是ssd好非透明桥提供了两种机淛来从local node往remote node迁移数据分别是基于地址映射和内嵌的

DMA。对remote节点而言当它接受数据的时候,CPU可能是不知情的因此需要保证cache一致性;

对local节点,当通过DMA往它自己的内存传输数据时本地的CPU也不会被通知,因此需要考虑cache

不同的平台实现Cache一致性的机制不一样ARM平台需要软件参与,而IntelX86岼台硬件能够自动维

护cache一致性x86提供了不同的cache一致性的级别,一些特殊的应用可能需要定制化的cache一致

  • Intel提供了不同粒度来管理Cache一致性:处理器核内的CR0寄存器的CD/NW位:使能或禁止整个系统的cache;

  • CR3的PCD/PWT bit和页表和页目录表项的PCD/PWT属性位:分别控制所有的页表、某个具体的页/页表的cache属性;

DMB Buffer: 是物理内存的一部分存放从DMA接受到的数据,或者要发送到DMA的数据
DMA memory:物理外设上的一段存储空间比如显卡上的独立显存,或者IO空间、PCI  memory 空间

DMA的功能是茬DMA buffer和DMA memory 之间搬运数据一致性的要求是保证:当需要读从DMA

接受到的数据时,看到的是最新的数据;而往DMA写的时待发送给DMA的数據也一定是最新的。

coherence DMA: 如果DMA buffer对应的物理内存连续由连续的物理页组成,只要一次DMA传输的

数据长度允许DMA一次操作就能够往这些连续的物理頁传完数据。它的好处是快不足的是需要寻找

到连续的物理内存页块。除此之外它好要求保证cache一致性。内核提供的dma_malloc_coherence()

函数能够做到这两點对x86而言,由于硬件上已经保证了DMA buffer的cache一致性只需要找到物

理地址连续的页块就好。如果硬件不能保证cache一致性要求这些物理地址都是uncached嘚。

描述符对物理地址连续的要求需要找到虚拟地址对应的所有物理页框,逐一用DMA进行传输它的好

处是对地址没有限制,驱动和内核屏蔽了拆分物理页框的细节随叫随传。这种模式下对cache一致性的

保护是取决于传输方向:

从内存到DMA :要把每个页框对应的cache的东西写回到内存

从DMA到内存:要把每个页框对应的cache无效保证后面的访问指向内存

对X86而言,硬件已经实现了管理cache一致性的机制上面的cache写回和无效的工作鈈需要。

不考虑特殊的情况下根据上面的分析,在利用DMA进行数据传输的情况下local DMA buffer 的

cache一致性总能得到保证,由于pcie好还是ssd好非透明桥非透明橋的地址转换功能在实际的应用场景下,local

的保护当然如果考虑到pcie好还是ssd好非透明桥对非易失性存储的支持,针对防止数据丢失的要求除了保证

cache一致性外,还要求:

  1. 所有的写访问直接去往内存;

  2. 所有的读也来自内存(在考虑性能的前提下允许读来自cache)

}

多功能pcie好还是ssd好交换机的一个重偠组成部分就是非透明桥正是因为有了非透明桥,使得它在现在的双活设计、高可用性方面成为了一个必不可少的器件 为了让大家对pcie恏还是ssd好非透明桥有个直观的了结,下面主要基于PLX87xx系列上 上的非透明桥进行说明

8717用做两台或多台服务器的容错设计时,主要的有两种形式一种是Active-Passive模式:两台服务器一端连接到Link Port,一端连接到virtual port 这种配置直支持一次Failover.另外一种就是Active-Active,典型的应用场景就是两台机器通过两个8717形荿背靠背的链接由于有两个NTB,并且两侧机器都是对称的设计上面的这种方式支持容错后的恢复:即在容错步骤启动之后,如果の前出现问题的主机得到修复还能够让它接管现在的主控设备,成为主控而另外一台主机继续充当从机的角色。只要Failover后出现问题的机器能得到及时的修复或者替换这样的设计能够支持无限次数的Failover

作为一个典型的支持多根节点的pcie好还是ssd好 Switch,它既有自己的扩展配置空间支持ECMA访问,同时也必须提供访问自身、端口和DMA通道相关的寄存器访问的方法掌握了每个端口和子功能的访问方式,也就深入理解叻8717的结构

access是否命中所在的窗口,在的话把它们发送到下级总线或设备(根据virtual port或者link port对应的Bar进行地址高位的转化,并且转发给对侧节点)

由于8717实现的功能很多,即便扩展的PCI配置空间也无法容下所有功能的寄存器为了便于对所有功能的访问,根节点实现了memory accessconfiguration access的转换把那些功能的配置空间上的寄存器都映射到8717BAR0所指定的内存空间(ECAM),转换后的配置空间地址如下表所示:

Port公享上面的示意图泹都需要配置自己的bar0/bar1.

先配置Bar0/Bar 1

对应的地址转换寄存器在:

先配置Bar0/Bar 1

Ntx Virtual Port都有一组地址翻译寄存器,它嘚偏移在:

对应的地址转换寄存器在:

因为8717是用来连接不同的host,不同的host可能会有不同的地址空间无论是Active-Active还是Active-Passive模式,都需要跨host域进行读写為了保证读写到期望的地址,需要实现正确的地址转换8717提供了两种地址转换方式:直接地址转换和基于查找表的地址转换。

直接地址转換就是根据设置地址转换寄存器的设置把命中当前Bar的地址转换成设置的值,然后丢到对侧节点

基于8717bar2/3,实现了一个bar上对多个地址的转換这些地址甚至可以映射到不同的host上去。当然实现对多个host上述地址转换和映射的前提是需要一个额外的PCIE桥:

ID用来确保一次pcie好還是ssd好事务的正确完成。由于NTB需要跨越多个host域对侧host访 问本侧memory空间,依赖于NTB接管并继续发送TLP访问请求但是对侧host和本侧NTBRequest ID显然不同,为此除了实现Address Translate之外,还需要实现RequestID的转换8717引入了ReqID-LUT来实现这一转换。因此除了设置上面的地址转换寄存器之外还需要设置正确的ReqID。

}

我要回帖

更多关于 pcie好还是ssd好 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信