忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT HPC论坛 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 1520 | 回复: 5

[内存管理] 一个地址转换的问题? [复制链接]

论坛徽章:
0
发表于 2017-09-24 15:42 |显示全部楼层
在 Intel 系统结构下,PCI地址和处理器地址在数值方面是相同的,但是这两个地址仍然属于两个不同的地址域。MMU 如何判断把某个物理地址发给 DRAM 还是 PCI 总线?
因为我看了ioremap只是映射了一下页表,就可以用mov指令访问外设了。那么既然CPU可以使用mov指令访问页表中的所有虚拟地址,但某个虚拟地址对应的物理地址发给 DRAM 还是 PCI 总线,这个具体是怎么做的?
过去,i/o port是使用特殊的 in/out指令来访问独立编址的io port地址空间的。现在访问所有设备都可以用mov,既然在指令上没有办法区分,那到底根据什么判断把某个物理地址发给 DRAM 还是 PCI 总线?
========
我这两天看了一些 pci 的资料,就卡在这里了,我找到的所有的资料都没有谈清楚这个问题。

论坛徽章:
0
发表于 2017-09-24 17:14 |显示全部楼层
估计你没仔细看, IO 地址映射有两种方式  io port/MMIO,       你应该仔细看看pci-e 的configure 章节.  mindshare 那本书  最新版  chapter 3/4

论坛徽章:
0
发表于 2017-09-25 10:23 |显示全部楼层
回复 2# superwiles

谢谢回复。
但我的问题是mmio之后,Intel中的mov指令既可以访问内存条的内存,又可以访问外设的寄存器,mmu是靠什么识别的? 和io port 没有关系

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:17
发表于 2017-09-25 13:35 |显示全部楼层
mmu不识别, 它只负责把va翻译成pa。 至于这个翻译出来的pa是什么,代表了什么资源,甚至是否合法,它一概不管。

过了mmu、拿到pa之后,这个pa就直接被丢到了host bridge上 —— 至于它是mmio还是DRAM,host bridge是知道的。它会决定接下来怎么走:是扔给DRAM controller,还是发起一个PCIe MMIO transaction。

论坛徽章:
0
发表于 2017-09-28 06:07 |显示全部楼层
回复 3# erazy0

具体的判断是由memory controller 来做的,  给MMIO 设备分配的地址范围 可以由 /proc/iomem来查看.

论坛徽章:
18
程序设计版块每日发帖之星
日期:2015-08-17 06:20:0015-16赛季CBA联赛之上海
日期:2017-07-21 18:12:5015-16赛季CBA联赛之江苏
日期:2017-06-26 11:05:56黑曼巴
日期:2016-12-26 16:00:32每日论坛发贴之星
日期:2016-07-18 06:20:00程序设计版块每日发帖之星
日期:2016-07-18 06:20:00程序设计版块每日发帖之星
日期:2016-07-16 06:20:00程序设计版块每日发帖之星
日期:2016-07-15 06:20:0015-16赛季CBA联赛之江苏
日期:2016-07-07 18:37:51程序设计版块每日发帖之星
日期:2016-06-03 06:20:00程序设计版块每日发帖之星
日期:2016-06-02 06:20:00程序设计版块每日发帖之星
日期:2016-05-30 06:20:00
发表于 2017-09-30 15:41 |显示全部楼层
mindshare,学习了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP