关闭

浅谈双缓冲技术和页交换技术及其区别

860人阅读 评论(0) 收藏 举报

    从速度上来讲页交换操作更快一点。

    我最先接触页交换是在学DirectX的时候。出现页交换技术是因为SVGA卡的视频缓存已经足够的大了,一般都是8M以上,现在主流显示卡则能达到128M。这样大的显存除了用于可见屏幕的显示,还有大量的剩余,这剩余的显存则可以用于存储暂时不显示在屏幕上的位图。VGA/SVGA系统的结构下,视频缓存所分配到的地址(十六位下)都是0xA000:0000-0xA000:FFFF的64K和0xB000:0000-0xB000:FFFF的64K。其中前一个称为A窗口用于图形模式,后一个称为B窗口用于文本模式。VGA/SVGA系统的另一个特点就是通过寄存器编程或BIOS调用可以改变可见视频缓存区在视频缓存中的起始位置,这个就是页交换技术实现的硬件基础。

    所谓的页交换,就是改变了可见视频缓存区在视频缓存中的起始位置。假如一个视频模式,需要256K的视频缓存,而视频缓存为8M。在初始化视频模式,一般都会把可见视频缓存区的位置设置为视频缓存的零偏移处,这样显存中 0-256k的数据将被显示到屏幕上面。而8M的显存总共可以有32个256K,几可以有32个虚拟的或者说不可见的屏幕,在这些区域内写如数据是不会被显示到屏幕上的。

    由于可以改变可见视频缓存区的起始位置,我们就可以将显示卡中多余的视频缓存当作虚拟屏幕来使用。将希望在下一帧显示的位图直接绘制在虚拟屏幕上面,当要显示的时候,直接改变可见视频缓存区的起始位置到虚拟屏幕的起始地址就可以了。也就是通常所说的页交换(Page Clip)。在DirectX里面就是这样实现的。

    双缓冲则是另外一个不同的方法。它不改变可见视频缓存区起始地址,而是在内存或显存中开辟一块与屏幕一样大小的存储区域,作为缓冲屏幕,这和页交换是类似的。同样也是将下一帧要显示的图象绘制到这个缓冲屏幕上面,不同的是在显示的时候不是改变可见视频缓存区起始地址,而是将缓冲屏幕中的数据直接复制到可见视频缓存区里面去。由于图形绘制过程是在不可见的缓冲屏幕中进行,所以可以消除绘制图形时屏幕的闪烁。但由于要复制大量的数据,速度可能就会馒一些。不过双缓冲也有其优点,就是它可以保证实际屏幕与缓冲屏幕数据的一致性。而页交换技术则不行。

    双缓冲中的缓冲屏幕一般都建立在内存中,而不是在视频缓存中。如果硬件提供显存到显存的读写操作,速度绝对比建立在内存中快,因为内存到显存的读写要经过系统总先,而显存到显存的读写(如果硬件支持的话)则不需要通过系统总线。然而这种显存到显存的读写并没有写进VESA文挡,并不是一个标准的办法,所以并不是所有的显卡都能提供这种显存到显存的读写。如果硬件不支持显存到显存的读写操作,则可以先将显存中某一块区域的数据复制到内存,再从内存复制到显存中的另一块区域,就需要两次复制,两次经过系统总线,所以,将缓冲屏幕建立在显存中的麻烦是可想而知的。由于显存到显存的读写操作不是标准的操作,所以通常不将缓冲屏幕建立在显存中。在DirectX中也曾经提到,DirectDraw会尽量获取硬件加速,某些特性如果硬件不支持,则DirectDraw会对其采用软件模拟的办法,我想大概说的就是这个吧。

    当然,由于存储容量越来越大,就可以定义实现多页面的页交换技术和多缓冲技术。在双缓冲或多缓冲中,由于可以保证数据的一致性,如果再实现了一个高效率的Blt,则可以进一步实现更加高效率的脏矩形技术(Dirty Rectangle),从而实现只对改变了的区域进行绘制,效率会更高。

    在存储器的使用方面,也不难知道,页交换技术使用的主要是显存,而不能使用内存做页交换;双缓冲技术通常使用的是内存,但也可以使用显存,并且,如果硬件支持显存到显存的读写,使用显存作缓冲屏幕,速度会很快,但是如果硬件不支持,则速度会很慢,并且实现起来会很麻烦。


    如果仔细研究过VGA/SVGA系统的话应该能够理解双缓冲、页交换等概念。DirectX里面的一些技术的内部细节也能够想的清楚。DirectX中的DirectX实际上并不神秘,其内部细节也能够想清楚。

0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:34470次
    • 积分:492
    • 等级:
    • 排名:千里之外
    • 原创:11篇
    • 转载:21篇
    • 译文:1篇
    • 评论:3条
    最新评论
    优秀网站
    有用的网站