0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

PCI总线地址空间与系统地址空间的关系

FPGA设计论坛 来源:未知 2023-01-06 08:30 次阅读

1、PCI地址空间

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

3f58cd06-8d59-11ed-bfe3-dac502259ad0.png

2、系统地址空间

如果处理器具有32位的地址总线,其理论可寻址空间为2的32次方=4GB。但这并不意味着内存就可以4GB大小,其实XP系统最大内存大约为2GB,这与CPU访问系统中其它设备的存储器方式有关(比如CPU访问PCI总线上的存储器)。

计算机系统中在不同的物理位置上存在着不同设备,不同的设备又各自具有存储器,那么CPU如何访问这些存储器呢?CPU把系统中各个设备的存储空间映射到一个统一的存储空间上,称为系统存储空间共4GB,这样CPU就可以访问到所有的存储器。比如PCI存储器映射到从0xFFF80000开始的地址空间,显卡映射到0XFFF00000,再加上操作系统会占用一些空间,就只剩下不到2G能真正分配给物理内存了。(具体数值是为解释需要取的任意值,不代表真实情况)

系统地址空间对应于计算机系统结构中的前端总线(FSB)。

3f5e88ea-8d59-11ed-bfe3-dac502259ad0.png3、PCI总线地址与系统存储空间转换映射

我们假设在一个32位处理器中,其存储器域的0xF000-0000~0xF7FF-FFFF(128MB)这段物理地址空间与PCI总线的地址空间存在映射关系。

当处理器访问这段存储器地址空间时,HOST主桥将会认领这个存储器访问,并将这个存储器访问使用的物理地址空间转换为PCI总线地址空间,并与0x7000-0000~0x77FF-FFFF这段PCI总线地址空间对应。

为简化起见,我们假定在存储器域中只映射了PCI设备的存储器地址空间,而不映射PCI设备的I/O地址空间。而PCI设备的BAR空间使用0x7000-0000~0x77FF-FFFF这段PCI总线域的存储器地址空间。

3f6e0e1e-8d59-11ed-bfe3-dac502259ad0.png

PCI桥的Base、Limit寄存器保存“该桥所管理的PCI子树”的存储器或者I/O空间的基地址和长度。值得注意的是,PCI桥也是PCI总线上的一个设备,在其配置空间中也有BAR寄存器,本节不对PCI桥BAR寄存器进行说明,因为在多数情况下透明桥并不使用其内部的BAR寄存器。下文以图3‑2所示的处理器系统为例说明上述寄存器的初始化过程,该处理器系统使用的存储器域与PCI总线域的映射关系如图3‑1所示。

3f8071b2-8d59-11ed-bfe3-dac502259ad0.png

注意观察上图中PCI设备的BAR0寄存器值,如果PCI设备向下级联了(相当于PCI桥),BAR0是不变的,而且LIMIT寄存器受PCI未继续级联(而是直接接了PCI设备)的BAR0影响。

PCI设备的BAR寄存器中,包含该设备使用的PCI总线域的地址范围。在PCI设备的配置空间中共有6BAR寄存器,因此一个PCI设备最多可以使用632位的PCI总线地址空间,或者364位的PCI总线地址空间。这些BAR空间可以保存PCI总线域的存储器地址空间或者I/O地址空间,目前多数PCI设备仅使用存储器地址空间。而在通常情况下,一个PCI设备使用23BAR寄存器就足够了。

为简化起见,我们首先假定在图3‑2中所示的PCI总线树中,所有PCI Agent设备只使用了BAR0寄存器,其申请的数据空间大小为16M字节(即0x1000000字节)而且不可预读,而且PCI桥不占用PCI总线地址空间,即PCI桥不含有BAR空间。并且假定当前HOST主桥已经完成了对PCI总线树的编号。

根据以上假设,系统软件该PCI总线树的遍历过程如下所示。

(1)系统软件根据DFS算法,系统软件率先寻找到第一组PCI设备,分别为PCI设备31和PCI设备32[1],并根据这两个PCI设备需要的PCI空间大小,从PCI总线地址空间中(0x7000-0000~0x77FF-FFFF)为这两个PCI设备的BAR0寄存器分配基地址,分别为0x7000-0000和0x7100-0000。

(2)当系统软件完成PCI总线3下所有设备的BAR空间的分配后,将初始化PCI桥3的配置空间。这个桥片的Memory Base寄存器保存其下所有PCI设备使用的“PCI总线域地址空间的基地址”,而Memory Limit寄存器保存其下PCI设备使用的“PCI总线域地址空间的大小”。系统软件将Memory Base寄存器赋值为0x7000-0000,而将Memory Limit寄存器赋值为0x200-0000。

(3)系统软件回朔到PCI总线2,并找到PCI总线2上的PCI设备21,并将PCI设备21的BAR0寄存器赋值为0x7200-0000。

(4)完成PCI总线2的遍历后,系统软件初始化PCI桥2的配置寄存器,将Memory Base寄存器赋值为0x7000-0000,Memory Limit寄存器赋值为0x300-0000。

(5)系统软件回朔到PCI总线1,并找到PCI设备11,并将这个设备的BAR0寄存器赋值为0x7300-0000。并将PCI桥1的Memory Base寄存器赋值为0x7000-0000,Memory Limit寄存器赋值为0x400-0000。

(6)系统软件回朔到PCI总线0,并在这条总线上发现另外一个PCI桥,即PCI桥4。并使用DFS算法继续遍历PCI桥4。首先系统软件将遍历PCI总线4,并发现PCI设备41和PCI设备42,并将这两个PCI设备的BAR0寄存器分别赋值为0x7400-0000和0x7500-0000。

(7)系统软件初始化PCI桥4的配置寄存器,将Memory Base寄存器赋值为0x7400-0000,Memory Limit寄存器赋值为0x200-0000。系统软件再次回到PCI总线0,这一次系统软件没有发现新的PCI桥,于是将初始化这条总线上的所有PCI设备。

(8) PCI总线0上只有一个PCI设备,PCI设备01。系统软件将这个设备的BAR0寄存器赋值为0x7600-0000,并结束整个DFS遍历过程。

3f947338-8d59-11ed-bfe3-dac502259ad0.jpg

精彩推荐 至芯科技12年不忘初心、再度起航12月17日北京中心FPGA工程师就业班开课、线上线下多维教学、欢迎咨询! 至芯科技精品寒假班来袭,1月7号线上授课,欢迎广大学子,电子爱好者前来学习! FPGA学习-IO延迟的约束方法 关于数字信号处理中的降采样扫码加微信邀请您加入FPGA学习交流群

3f9a7490-8d59-11ed-bfe3-dac502259ad0.jpg3fa1d74e-8d59-11ed-bfe3-dac502259ad0.png

欢迎加入至芯科技FPGA微信学习交流群,这里有一群优秀的FPGA工程师、学生、老师、这里FPGA技术交流学习氛围浓厚、相互分享、相互帮助、叫上小伙伴一起加入吧!

点个在看你最好看


原文标题:PCI总线地址空间与系统地址空间的关系

文章出处:【微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1631

    文章

    21806

    浏览量

    606688

原文标题:PCI总线地址空间与系统地址空间的关系

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    I2C总线设备地址设置方法

    I2C总线是一种广泛使用的串行通信协议,它允许多个设备在两条线上(数据线SDA和时钟线SCL)进行通信。每个设备都有一个唯一的地址,以确保数据能够正确地发送到目标设备。 I2C地址概述 I2C
    的头像 发表于 01-17 15:17 440次阅读

    MAC地址的作用范围,MAC地址怎么申请?

    MAC地址(MediaAccessControlAddress),也称为局域网地址(LANAddress)、以太网地址(EthernetAddress)、硬件地址(HardwareAd
    的头像 发表于 12-19 17:44 690次阅读
    MAC<b class='flag-5'>地址</b>的作用范围,MAC<b class='flag-5'>地址</b>怎么申请?

    一文分清IP地址、子网和子网掩码的关系

    大家在进行IPv4地址配置时都看到过“子网掩码”这样的参数名,许多小伙伴都会疑惑这是个啥?有什么用呢? 下面带领大家认识认识子网掩码以及跟其密不可分的子网! 1 IP地址、子网和子网掩码的关系
    的头像 发表于 12-07 10:20 1650次阅读
    一文分清IP<b class='flag-5'>地址</b>、子网和子网掩码的<b class='flag-5'>关系</b>

    怎么绑定IP地址和MAC地址

    本篇文章主要说一说怎么在本地计算机上绑定IP和MAC地址以及通过路由器绑定IP和MAC地址,并且这两者绑定可以解决什么问题。   先来说说怎么去绑定 本地计算上绑定IP和MAC地址: 首先获取IP
    的头像 发表于 12-01 22:48 478次阅读

    电压空间矢量与磁链矢量的关系是什么

    电压空间矢量与磁链矢量的关系在电机控制和变频调速系统中具有重要地位。以下是对这两者关系的介绍: 一、基本概念 电压空间矢量 : 又名“
    的头像 发表于 10-12 15:12 1083次阅读

    数据总线地址总线的区别

    数据总线地址总线是计算机系统中至关重要的两种总线,它们在数据传输和地址指定方面发挥着不同的作用。
    的头像 发表于 09-10 11:40 2855次阅读

    IP地址与子网划分

    子网的划分,实际上就是设计子网掩码的过程,它指的是指将一个给定的IP网络地址空间划分为更小的子网络。 在子网掩码中用1和0来分别网络号和主机号,其中是1的表示是网络部分,0表示的是主机部分,所有
    的头像 发表于 09-06 09:46 441次阅读

    IP 地址管理与无类域间路由

    地划分 IP 地址空间。CIDR 通过在 IP 地址后面加上一个斜杠和一个数字来表示网络前缀的长度,假设 190.131.1.0/24,表示前 24 位为网络前缀,剩余的 8 位为主机地址
    的头像 发表于 08-29 16:33 332次阅读
    IP <b class='flag-5'>地址</b>管理与无类域间路由

    购买海外虚拟IP地址可以通过以下几种方式#虚拟IP地址

    ip地址
    jf_62215197
    发布于 :2024年08月16日 07:16:04

    IP地址与DNS的关系

    IP地址和DNS是网络架构中的重要组成部分。IP地址是计算机网络中用于标识设备的唯一地址,而DNS则是负责将域名解析为IP地址系统。记下来
    的头像 发表于 08-12 17:40 570次阅读

    控制总线传输的信号大致有几种

    计算机系统中,内存地址是用于标识内存单元的编号。地址总线的数量决定了计算机系统可以访问的内存空间大小。例如,如果
    的头像 发表于 07-30 15:28 767次阅读

    网关和ip地址关系

    网关和IP地址是网络通信中两个重要的概念。它们之间的关系如下: 1. IP地址:IP(Internet Protocol,互联网协议)是一种用于在互联网上寻址和路由数据包的协议。每个连接到互联网
    的头像 发表于 04-25 13:59 1842次阅读

    PCIE的BAR空间介绍

    PCIE是一种高速串行总线接口标准,用于连接计算机内部的各种外设和组件。在PCIe架构中,BAR(Base Address Register)空间是用于映射I/O端口或内存地址空间的一
    的头像 发表于 04-22 11:00 4774次阅读

    app擦除非自己flash空间地址死机的原因?怎么解决?

    我的app1程序运行在0x8000000开始地址,size为0x3FFFF的空间. 我的app2程序运行在0x8040000开始地址,size为0x3FFFF的空间. app1接收命令
    发表于 04-01 07:49

    STM32初运行如何确定为.BSS段分配多大的空间及其空间地址信息?

    我们知道,程序运行须具备 .text段 .data 段 .bss段等,其中.bss段内容并不会存储在 flash,而是在上电后系统运行动态分配,但分配的前提是系统知道 从哪个地址开始,分配空间
    发表于 03-25 07:40