什么是声卡的硬件缓冲

2024-11-13 08:46:19
推荐回答(1个)
回答1:

您好!根据I/O控制方式的不同,缓冲的实现方法有两种,一种是采用专用的硬件缓冲区,例如I/O控制器中的数据缓冲寄存器.另一种方法是在内存划出一个具有n个单元的专用缓冲区,以便存放输入/输出的数据.内存缓冲区又称'软件缓冲'.硬件缓冲区配置在设备中,具有专门的用途,对处理机透明,不需要操作系统的直接管理.大部分输入输出设备都有自己的硬件缓冲(键盘,显卡,声卡).软件缓冲区是为了弥补硬件缓冲区的不足.其中很重要的是输入输出缓冲,用来改善处理器和输入输出设备之间速度不匹配的矛盾.具体的实现有单缓冲(输入输出设备共用一个缓冲区,只能串行工作),双缓冲(可实现输入输出的并行),多缓冲及缓冲池等技术.字符设备和块设备常常设立不同的缓冲区.这些缓冲区由操作系统的缓冲区管理负责设置,调度使用和保护访问.
  另查找了微软的Direct应用手册,声卡应用硬件缓冲并非一定是声卡自带存储器(当然高端声卡带有存储器),而是在内存中划出特定的区域,并由声卡直接操作,并不要通过操作系统。实际上这也说明了为什么我们可以看到很多板载声卡也支持硬件缓冲。
  在初始化DirectSound时,它会自动地为你的程序创建一主缓冲,这个主缓冲的作用就是混音并送到输出设备。除了主缓冲外,程序至少还应该创建一个辅助缓冲,辅助缓冲的作用是储存将要使用的声音,它可以在不使用的时候释放掉(不过这也就是暗示我们主缓冲是不可释放的)。
  在应用程序里,辅助缓冲可以有两种——静态缓冲(一段内存空间一段完整的声音;好处在于可以一次将全部的声音存入缓冲)和流缓冲(并不将全部的数据一次读入缓冲,而是在播放声音时动态的读入;其好处在于占用空间较小),它们可以分别适应不同的程序需求。
一般的说,如果声音是需要再三播放的,而且容量有限(好比游戏 音效),那么使用静态缓冲就更有助于提高程序的效率,相反,如果是很冗长的音乐,还是使用流缓冲的好。
  看来我们还是需要声卡支持硬件缓冲为好,尤其是在游戏中,另外3D特效是很耗缓冲的,所有的特效都要在缓冲区中完成,这也导致很多时候声卡对CPU的占用率居高不下。
本文由 来思利 编写。
希望我的解答对您有所帮助,祝您生活愉快!