首先我最关心CPU和显卡交互部分,显卡内部原理并不是很在乎。
一、我大概知道早期DOS时代的VGA卡的原理:首先系统将高端的128K物理地址映射到VGA卡,然后CPU就可以直接操作VGA卡的显存了。同时VGA卡根据显存的内容以一定的频率刷新显示器。(如果有理解错误的地方也请指正,谢谢!)
二、我对当代的PCI显卡了解如下:在现在经典的南北桥+各种PCI总线架构下,首先系统将一部分物理地址空间(大概256M)映射到显存,然后就不知道了,而且这仅有的一点理解也不一定准确。
三、问题来了(主要针对当代经典的显卡):
1.请看下图的三个范围,我算了下分别是256M, 128K,256B,它们都是什么?
我的猜测是映射到物理地址的部分显存,控制寄存器和端口。
2.CPU是如何访问显存的(拿写为例子),是通过物理地址直接访问(如果上面256M是映射的显存的话);还是通过控制寄存器间接访问,即先把要写的数据放到寄存器,再发出命令让显卡取走,最后显卡把来自寄存器的数据写入显存。
3.很多人说显存的地址和内存的地址是统一编址的,那么CPU就可以直接访问显存,而不是通过控制器接口间接访问。我认为这是不对的,原因如下:我的显卡是1G的,但是下图显示只有256M地址空间分配给了显卡。
4.我的显卡是1G的为什么只分配了256M的地址空间给它?
5.要了解这方面的知识要看什么书或哪方面知识,求推荐。。。