免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: new_learner
打印 上一主题 下一主题

<系统虚拟化>一书中的两个疑问:(1)总线地址(2)APIC [复制链接]

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
1 [报告]
发表于 2010-01-14 15:14 |显示全部楼层
关于第一点,如果了解PCI就清楚了.
起源得从更早的ISA说起:
CPU看到只有内存空间和IO空间,CPU的寻址丢到北桥,被北桥转到总线上.局部总线的含义就是,总线地址继承(也可能就是等于)了CPU所寻的地址.
ISA各个设备在一次寻址中可能为主设备,可能为从设备也可能都不是,这就有个地址映射的问题.
假设主设备在总线上放了个地址来寻址,一个从设备怎么知道是找自己的呢?原理在ISA体系结构 一书总说了:用手动跳线来"编程"设备的地址译码器. 这就是"总线"的含义,一个寻址在总线上,每个设备都能看到, 到底如何识别这个地址是不是找自己的,就在于这个地址译码器.

那PCI总线比ISA进步的一大特点就是不用手动设置地址译码器.而是程序自动来配置地址译码器,就是所说的写 PCI BAR. 通过写BAR就能改变地址译码器, 那么就是相当于分配了"物理地址",其实应该叫总线地址,但是从CPU来看就无所谓什么地址了.


然后就是鸡和蛋的问题, 写BAR是访问的PCI配置空间,这不同于访问PCI的内存空间或IO空间,因为后面的2个空间地址都是分配的,那么配置空间的访问,更早的由硬件来决定,具体可以看<PCI系统结构> 大致上说PCI总线地址线在做pci设备的配置寻址时不同与内存寻址和IO寻址.另外有根线idsel线,来帮助定位设备.

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
2 [报告]
发表于 2010-01-17 15:29 |显示全部楼层

回复 #17 new_learner 的帖子

NB是可编程的么?
---也许吧,至少书里提到的IOMMU是可编程的.
只因zx_wing和各位高人没来.胡乱说了2句.

从你的回复看,对配置空间的理解还可加一步.
再明确点说,PCI32位地址-数据线,在地址周期,上面的地址定义就是总线地址,在X86下,总线地址等于物理地址,所以上面就是确确实实的物理地址,当然为了区别mem和IO,同CPU引出了地址线一样,也包含一根MEM/IO线来区分.

当然这里的有些区别的就是有些地址不会从CPU出来直接放在PCI地址线上,比如那个IO里面的0CF8,CPU对这个地址的访问被北桥处理了.
已经知道这个地址是用来配置PCI的.
那么CPU访问这个地址,北桥会转为访问PCI配置空间.已经知道PCI配置空间的寄存器是放到PCI设备上的,就是说一次配置动作的寻址要跨越PCI那数十根槽线,那么这次地址线定义就不同了,具体看看<  PCI体系结构> 或者规范,每个PCI设备上有个IDSEL接线,就是片选线,不同的设备的这个线接在不同的地址线上,,那一次对配置空间的寻址被转化为用地址线片选设备,当然这个逻辑是在NB上做的.

PCI体系结构 书说上说如何用地址线对应设备的片选有比较灵活的定义,这个可能有厂商自己决定.

多说2句废话:从PCI设备的角度看,北桥是个PCI设备,在网卡设备做DMA的时候,北桥表现为一个从设备.也就是MEM/IO寻址的角度,北桥和其他设备是无差别的(或许吧...)
回到对书上第一个问题的疑问上来就是,寻址是CPU和总线的事情, 设备上有个PCI接口,他拿到地址怎么使用,比如怎么转为访问设备上的内存或者寄存器都是它自己的逻辑.当然在访问时间上要符合PCI规范的要求. 有些访问也经历千辛万苦,比如设备上有如果有个EEPROM,是串行接口,而且规范和访问方式都和PCI千差万别,那么如果上面存了PCI设备配置空间信息,那对它的访问就要经历 配置空间寻址-本设备主处理器寻址(或者一个简单点的配置线转换逻辑寻址)-EEPROM上串行设备寻址.

在做配置的时候,北桥是个独一无2的设备,应该叫" PCI主控器"(不知道有没有这么一说)

[ 本帖最后由 smalloc 于 2010-1-17 15:51 编辑 ]

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
3 [报告]
发表于 2010-01-17 20:08 |显示全部楼层

回复 #20 new_learner 的帖子

IOMMU在2楼.
http://linux.chinaunix.net/bbs/viewthread.php?tid=985872
系统虚拟化 后面也讲到了,老实说我都没认真看过.没记错的话是在北桥上...
.
>另外我问一下,X86的地址总线和数据总线是公用的,通过周期来区分的?
至少8086是的,< 微机原理>有讲解,至于后续是不是就不太清楚了...可能486之后 有很大变化.
然后就是PCI确实是地址-数据线公用,并不代表处理器上的地址数据线公用,处理器的总线现在叫前端总线.

计算机组成原理的书,教科书基本该讲的都讲了,只不过不够观点鲜明,不适合自学,(大学大家都在自学吧...),我后来发现了2本不错,< 计算机组成 结构化方法> 作者是minix之父,还有本< 数字设计与计算机体系结构> 作为CPU和总线的数字设计书比较值得一看,不过惭愧的我都没怎么看,还有就是这2本书竟然只是大学本科课程!让我无比惭愧!

单纯针对X86的想来没遇到过,可能自己所见范围太短,只知道mindshare的 < ISA系统体系> < 80486系统体系> < pentium处理器系统体系>,前2本有英文电子版,后一本干净的连毛都没看到.


>我的理解对吗?
你的理解是对的,我想说的是,对于一些地址寻址(MEM或IO)北桥把地址丢到PCI地址线上,对于配置空间访问,处理器做的当然是IO,但是经过北桥就全部变了,变成配置空间的地址方式,地址线的定义也跟着变了.

还有楼上各位说的那些表可能都是强行定的给设备分地址的规范,最后可能都要由操作系统或BIOS去执行,仅仅猜测下.

[ 本帖最后由 smalloc 于 2010-1-17 20:38 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP