免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4613 | 回复: 10
打印 上一主题 下一主题

关于大显存显卡的疑问 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-04-23 17:08 |只看该作者 |倒序浏览
本帖最后由 garyv 于 2013-04-23 17:08 编辑

现在已经出现了4GB显存的显卡,而在32bit XP系统下,CPU可以管理的物理和虚拟内存都是4GB,而有一部分地址空间被保留(固定外设占用等),所以即使装有4GB的RAM,可识别到的物理内存也只有3.xx GB,如果在PCI-E槽上安装了一块4GB显存的显卡的话,那么这么大的显存怎么map到CPU的寻址空间里面呢?还是说只需要map很小的一部分区域?

论坛徽章:
0
2 [报告]
发表于 2013-04-23 17:13 |只看该作者
补充:
基于可移植性的考虑,32bit Win XP是没有开启x86的PAE mode的,所以寻址空间不可能超过4GB,所以大家不要提及PAE之类的话题。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2013-04-23 17:19 |只看该作者
回复 1# garyv


   
显卡的地址空间和主机有关么?
举个例子,32位内存地址空间只有4G,那500G硬盘又是如何访问的呢?
既然能访问500G硬盘,一样能访问4G显存

论坛徽章:
0
4 [报告]
发表于 2013-04-23 17:28 |只看该作者
本帖最后由 garyv 于 2013-04-23 17:31 编辑

回复 3# safedead


    如果你写过PCI设备驱动就知道为什么会有这种疑问了。因为CPU要想访问PCI设备的memory的话,首先必须透过PCI桥将其map到CPU自己的寻址空间里面才行。当然这里讨论的是PCI-E设备,但二者的基本原理是相同的只是数据传输接口从并行转串行了,而且关键的是PCI设备驱动程序使用的内核API是可以毫不修改的在PCI-E设备上使用的。

你提到的硬盘访问方式完全不同,CPU不需要将硬盘空间map过来,而且通常使用UDMA,提供访问起始地址和长度等信息就行了,当然还有低效率的PIO方式。

论坛徽章:
0
5 [报告]
发表于 2013-04-24 09:54 |只看该作者
这个完全映射过来是不可能的了。

不过好像是可以通过窗口进行切换,或者采用类似非透明桥的思想不行吗?

瞎猜的。。。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2013-04-24 10:15 |只看该作者
garyv 发表于 2013-04-23 17:28
回复 3# safedead


我用FPGA开发的PCI-E设备,BAR0只有32KB寻址范围,板载8MB内存,输入输出都是靠DMA,这个时候BAR上面有多大空间与目标寻址毫无关系
mmap-io相比DMA来讲非常低效,还侵占主机系统非常稀缺的4G以下内存寻址空间,一般来讲,传输大量数据通过DMA,而设置寄存器一类的事情
用mmap-io

现在做的卡BAR0占用了32KB,下一版本准备削减BAR0到256字节,反正全部数据都是DMA,PCI BAR映射64字节就足够用于64bit DMA传输了,
目标寻址范围别说4G, 4T都不是问题
你可以观察下常用显卡的PCI设备信息,PCI BAR映射的地址范围都不大,远比显存要小





论坛徽章:
0
7 [报告]
发表于 2013-04-25 10:39 |只看该作者
回复 6# safedead


    这个解释比较合理。不过我认为在64bit OS下,寻址空间已经不是个问题的情况下,还是可以全部被CPU map过来的也许没有必要。

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:53:17
8 [报告]
发表于 2013-04-27 10:38 |只看该作者
我理解 CPU 并不知晓那边是4G的。
可以用“别有洞天”这个词解释

论坛徽章:
0
9 [报告]
发表于 2013-04-27 11:34 |只看该作者
回复 7# garyv

在我们开发的过程中这样做过,不过发现完全映射过来是没什么问题的,不过性能完全跟不上。

现在的方案基本都是EP处理完数据后自己送过来,多数都是DMA,所以BAR大小基本也没什么用的。

   

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:17
10 [报告]
发表于 2013-05-02 13:14 |只看该作者
显卡比较特殊, 一般都会有自己的mmu。 cpu想读写那块ram,即是有那个能力(当然有能力了), 也应该通过显卡的mmu进行。 否则会出现问题。

看这个:

http://en.wikipedia.org/wiki/Aperture_(computer_memory)

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP