摘要:以Montevina平台为例,说明在x86处理器系统中,PCIe体系结构的实现机制

第 5 章  Montevina 的 MCH 和 ICH

GMCH ( Graphics and Memory Controller Hub):图形和内存控制器集线器

GMCH 和 ICH 之间使用 DMI(Direct Management Interface)接口相连,MCH集成了一些对带宽要求较高的虚拟 PCI 设备, 如 DDR 控 制器、 显卡等。 而在 ICH 中集成了一些低速 PCIe 端口, 和一些速度相对较低的外部设备, 如 PCI⁃to⁃USB 桥、 LPC 总线控制器等。

5. 1  PCI 总线 0 的 Device 0 设备

我觉得这一节简单浏览一下就可以,需要看的时候再回头来看

Device0除了要管理存储器域地址还要管理DDR SDRAM。

5. 2  Montevina 平台的存储器空间的组成结构

在 Montevina 平台中包含一个 Mobile 处理器、 MCH、 ICH 和一个无线网卡 适配器组成。

Montevina 平台使用的地址空间由存储器域地址空间和 PCI 总线域地址空间组成。

Montivina 平台除了具有存储器域、 PCI 总线域之外, 还存在一个 DRAM 域。

在 Montevina 平台中, DRAM 域地址空间并不能与存储器域地址空间完全对应。

Legacy地址空间是x86一直都有的,大小1MB

GFX (显卡控制器) 借用的空间:1-64MB,CPU不能访问这段空间

TSEG 空间:这段空间的大小为 1 MB ~ 8 MB。 这段空间仅在 CPU 进入 SMM 模式时, 才 能够被 CPU 访问。

小于 4 GB 的操作系统可用内存空间:在 Montevina 平台中, 如果主存储器的大小超过 4 GB, 那么这段物理空间将被分为三段 供操作系统使用, 分别是小于 4 GB 的空间、 大于 4 GB 的空间和 Reclaim 空间。 如图 5-2 所示, 这几段空间在存储器域中的地址并不连续。

.OS Invisible Reclaim 空间:这段地址存储器域的地址相同,当处理器使能 Reclaim 机制 (也称为 Remapping 机制) 后, CPU 才能访问这段地址空间。

大于 4 GB 的操作系统可用空间:这段空间在存储器域和 DRAM 域中的地址相等, 只有实际的物理内存大于 4 GB 时, 存 储器域和 DRAM 域中才有这段空间。

ME (Manageability Engine) ⁃UMA 借用的空间:其大小为 1 ~ 64 MB。 其基地址为 TOM 寄存器中的值减去 ME⁃UMA 借用空间的大小。 由 于 TOM 寄存器中的值需要 64 MB 对界, 因此有时在其下会出现一个 0 ~ 63 MB 大小的空洞。 这段空洞是被浪费的空间, 除了 DRAM 控制器可以访问这段空间外, 在处理器系统中的其 他部件均不能访问这段空间。

在 x86 处理器系统中, 除了具有 DRAM 域地址空间外, 还具有 PCI 地址空间。 CPU 访 问这些地址空间时, 需要进行地址转换, CPU 访问 DRAM 域时, 需要进行存储器域地址空间到 DRAM 域地址空间的转换;

5. 3  存储器域的 PCI 总线地址空间

由图 5-2 可知, Montevina 平台中存储器域的 PCI 总线地址空间分为 TOLUD ~ 4 GB 和 TOUUD ~ 64 GB 这两段空间。

5. 3. 1  PCI 设备使用的地址空间

5. 3. 2  PCIe 总线的配置空间

x86 处理器使用了两种机制访问 PCIe 设备的扩展配置空间。 首先 x86 处理器提供了两个 I / O 端口寄存器, CONFIG_ADDRESS 和 CONFIG_DATA 寄存器, 使用这两个寄存器访问 EP 配置空间的方法与访问 PCI 设备类似, 详见第 2. 2. 4 节。 然而这两个寄存器只能访问 PCI 设 备的基本配置空间, 即 PCIe 设备配置空间的前 256 个字节, 而之后的扩展配置空间需要通过 ECAM 方式进行访问。

使用 ECAM 机制与使用 CONFIG_ADDRESS 和 CONFIG_DATA 这对寄存器, 间接访问 PCIe 设备的配置空间有较大的不同。 ECAM 机制是一种直接寻址方式, 在 x86 处理器系统 中, 只有使用 ECAM 方式才可以访问 PCIe 设备的扩展配置空间。

Montevina 平台使用 256 MB 物理空间映射 PCI 设备的配置寄存器, 因为在 Montevina 平 台中有一棵 PCI 总线树, 因此最多具有 256 条 PCI 总线, 每一条 PCI 总线最多可以挂接 32 个 PCI 设备, 每一个设备最多有 8 个 Function, 而在每一个 Function 中最大的 PCI 总线配置 寄存器空间为 4 KB。

虽然采用 ECAM 方式可以访问之前使用 CONFIG_DATA 和 CONFIG_ADDRESS 寄存器不 能访问的 PCI 扩展配置寄存器空间, 但是也带来了一些问题。 在一个处理器系统中, 同一条 PCI 总线上的 Device Number 不一定连续, 而且在多数 PCI 设备中也不会有 8 个 Function, 这 将造成 PCIEXBAR 空间会留有许多空洞。 虽然 Montevina 平台提供了 256 MB 的 PCIe 设备使 用的配置空间, 但是这些空间的实际利用率较低。 PowerPC 处理器也可以使用 ECAM 方式映射 PCI 配置空间, 如 MPC8548 处理器可以使 用 PCIe 桥中的 Outbound 寄存器 ( PEXOWARn) 将 PCI 配置空间映射到存储器域。 此外 PowerPC 处理器还可以使用 PEX _CFG _DATA 和 PEX _CFG _ADDR 这两个寄存器访问

总结

简单的理解一下Montevina平台

参考文章:

PCI_Express_体系结构导读——王齐

PCIE——第5章——Montevina 的 MCH 和 ICH相关推荐

  1. PCIE——第 10 章—— MSI 和 MSI⁃X 中断机制

    摘要:PCIE--第 10 章--MSI 和 MSI⁃X 中断机制 目录 第 10 章  MSI 和 MSI⁃X 中断机制 10. 1 MSI / MSI⁃X Capability 结构 10. 1. ...

  2. PCIE——第 8 章——PCIe 总线的链路训练与电源管理

    摘要:PCIE--第 8 章--PCIe 总线的链路训练与电源管理 目录 第 8 章 PCIe 总线的链路训练与电源管理 8. 1 PCIe 链路训练简介 8. 1. 1 链路训练使用的字符序列 8. ...

  3. PCIE——第6章——PCIe总线的事务层

    摘要:PCIE--第6章--PCIe总线的事务层 目录 第 6 章 PCIe 总线的事务层 6. 1 TLP 的格式 6. 1. 1 通用 TLP 头的 Fmt 字段和 Type 字段 6. 1. 2 ...

  4. PCIE——第 9 章——流量控制

    摘要:PCIE--第 9 章--流量控制 目录 第 9 章  流量控制 9. 1 流量控制的基本原理 9. 1. 1 Rate⁃Based 流量控制 9. 1. 2 Credit⁃Based 流量控制 ...

  5. PCIE——第7章——PCIe 总线的数据链路层与物理层

    摘要:PCIE--第7章--PCIe 总线的数据链路层与物理层 目录 第 7 章 PCIe 总线的数据链路层与物理层 7. 1 数据链路层的组成结构 7. 1. 1 数据链路层的状态 7. 1. 2 ...

  6. PCIe体系结构介绍

    PCI总线作为处理器系统的局部总线,主要目的是为了连接外部设备,而不是作为处理器的系统总线连接Cache和主存储器 PXI 规范是CompactPCI规范的扩展 , 面向仪器系统的PCI扩展 PCI ...

  7. 【VS开发】PCIe体系结构的组成部件

    PCIe总线作为处理器系统的局部总线,其作用与PCI总线类似,主要目的是为了连接处理器系统中的外部设备,当然PCIe总线也可以连接其他处理器系统.在不同的处理器系统中,PCIe体系结构的实现方法略有不 ...

  8. PCIe体系结构的组成部件

    PCIe体系结构的组成部件 PCIe总线作为处理器系统的局部总线,其作用与PCI总线类似,主要目的是为了连接处理器系统中的外部设备,当然PCIe总线也可以连接其他处理器系统.在不同的处理器系统中,PC ...

  9. 4.2nbsp;PCIe体系结构的组成部件

    PCIe总线作为处理器系统的局部总线,其作用与PCI总线类似,主要目的是为了连接处理器系统中的外部设备,当然PCIe总线也可以连接其他处理器系统.在不同的处理器系统中,PCIe体系结构的实现方法略有不 ...

最新文章

  1. MVC实现简单的上传功能
  2. vb mysql 查询_vb中用sql语句查询数据库
  3. 如何用python画爱心型线_python怎么画爱心
  4. 【Flutter】插件包选择 ( 查看文档是否全面 | 查看插件包的更新版本次数 | 查看使用示例 | 查看 GitHub 项目的 Star Fork Issues )
  5. java怎么不增加临时变量交换值
  6. 如何修改Fiori Launchpad里Tile count 调用的时间间隔
  7. Go语言学习资料整理
  8. 技术论坛 | CCF YOCSEF上海即将在 CNCC 举办“知识图谱遇见社交媒体”专题论坛
  9. 洛谷 P2921 在农场万圣节Trick or Treat on the Farm题解
  10. php把数据生成mxl,php如何生成加密公钥以及加密私钥的代码案例分享
  11. android onitemclicklistener 按钮代码,在listview Android的setOnItemClickListener上设置项目单击事件...
  12. 不可错过!斯坦福课程3D数据的机器学习方法(Machine Learning for 3D Data)第一部分
  13. git 小乌龟 配置_git 小乌龟安装教程
  14. 固高GTS运动控制卡,C#语言三轴点胶机样本程序源代码
  15. 汉字、图形,Zebra打印机完全解决方案
  16. 百旺如何看是否清卡_​百旺如何看是否清卡
  17. 2021农行研发中心面试题总结
  18. ModuleNotFoundError: No module named ‘views‘
  19. 嵌入式怎么入门,嵌入式应该先学习什么
  20. 为女性发声!百度超级链联合时尚COSMO限量推出公益藏品

热门文章

  1. Python处理Excel求取某列固定间隔数的平均值
  2. 20210429 ---- 浅谈 视口
  3. Python批量复制文件夹及其内容、并按Excel表格遍历重命名文件夹
  4. 天耀18期 –12.数据结构 ArrayList【作业】-计算机管理
  5. 【TDA2x学习】资源汇总
  6. 已知平面三点坐标求其中两条边之间的夹脚
  7. php上传图片到七牛云,PHP拖拽上传图片到七牛云
  8. 【9018:1458】征兵
  9. 1、misa统计SRR结果
  10. 程序员必备的5个工作技能