当前位置: 首页 > article >正文

【PCIe 总线及设备入门学习专栏 4.1 -- PCI 总线的地址空间分配】

文章目录

  • Overview

本文转自:https://blog.chinaaet.com/justlxy/p/5100053219

Overview

PCI 总线具有32位数据/地址复用总线,所以其存储地址空间为 232=4GB。也就是PCI上的所有设备共同映射到这4GB上,每个PCI设备占用唯一的一段PCI地址,以便于PCI总线统一寻址。每个PCI设备通过PCI寄存器中的基地址寄存器来指定映射的首地址。

如下图所示
在这里插入图片描述

注:需要注意的是PCI的地址空间和x86系统中的FSB并不是对等的,而是具有一定的映射关系。

PCI 体系结构中,一共支持三种地址空间:

  • Memory Address Space
  • I/O Address Space
  • Configuration Address Space。

其中x86处理器可以直接访问的只有 Memory Address Space 和 I/O Address Space。而访问 Configuration Address Space 则需要通过索引 IO 寄存器来完成。

注:在PCIe中,则引入了一种新的 Configuration Address Space 访问方式:将其直接映射到了 Memory Address Space 当中。

在这里插入图片描述
如上图所示:

  • 最左边的即为 Memory Address Space,其中包括了多个 PCI Memory、AGP Video(显卡)Memory以及Extended Memory、Boot ROM等。
  • 中间的为 I/O Address Space,需要注意的是,虽然PCI支持32位的地址,但是由于x86的CPU只支持16位的I/O空间,这就限制了PCI的I/O Address Space最大只有64KB。
  • 最右边的则为Configuration Address Space,由于每一个PCI设备最多支持8种功能(Function),每一条PCI总线最多支持32个设备,而每一个PCI总线系统最多又支持 256 个子总线(通过PCI桥)。因此,总的 Configuration Address Space 的大小为:256 Bytes/function x 8 functions/device x 32 devices/bus x 256 buses/system = 16MB

如图中所示,Configuration Address Space 所使用的 IO 寄存器范围为 0xCF8-0xCFF 。其中 0xCF8-0xCFB 为端口地址,0xCFC-0xCFF 为配置数据。


http://www.kler.cn/a/464295.html

相关文章:

  • 以往博客的复习补充——part1
  • 《GICv3_Software_Overview_Official_Release_B》学习笔记
  • 【Python学习(六)——While、for、循环控制、指数爆炸】
  • Uncaught ReferenceError: __VUE_HMR_RUNTIME__ is not defined
  • 使用 httputils + chronicle-bytes 实现金融级 java rpc
  • HarmonyOS鸿蒙开发 应用开发常见问题总结(持续更新...)
  • 福建科立讯通信有限公司指挥调度send_fax.php存在任意文件上传漏洞
  • Fabric环境部-Git和Node安装
  • 《计算机网络》(B)复习
  • MB31零收货处理批次物料:M7425 不能设置货物移动的最后交货标志
  • 【第二部分--Python之基础】03 容器类型的数据
  • 计算机的错误计算(一百九十九)
  • 腾讯视频Python爬虫项目实战
  • Dubbo 核心知识全解析:原理、流程与关键机制
  • leetcode hot 小偷
  • 汽车基础软件AutoSAR自学攻略(二)-AutoSAR CP分层架构(1)
  • Redis的生态系统和社区支持
  • Android 系统 `android.app.Fragment` 类的深度定制与常见问题解析
  • iOS 修改图片颜色
  • PyInstaller打包工具,使用以及pyinstaller权限问题,bash: pyinstaller: 未找到命令
  • 【Golang 面试题】每日 3 题(十四)
  • IJCNN2025 投稿准备
  • python中的assert和if的区别
  • ‌新手小白TikTok美区无货源:适合与否?
  • python代做/tensorflow代做/pytorch代做/keras/图像/目标检测/
  • df.groupby(‘team‘).agg({...}) 是 Pandas 中一个非常常用的聚合操作