不是我不对,是你理解不到位——从认识误区理解鼠标性能
硬派学堂
说起鼠标,比比还记得当年疯狂地在各大电脑城中寻找某款鼠标的情形。在那个光电鼠标极其稀少的年代,这款鼠标足足要用300大洋,作为学生的我省吃俭用,等攒够了钱去买的时候,却被告知它停产了……
和键盘比起来,鼠标可以算是一个技术含量很高的产品,但我们要清楚地认清它的本质也并非想像的那样难。今天比比就和大家一起来深入理解鼠标的性能。
每个拥有电脑的朋友除了希望电脑本身拥有不俗的性能外,更重要的是想让自己的电脑用起来舒服。作为普通用户来说,自Windows诞生以来,使用鼠标的频率已经远远超过了键盘。从早期的机械式鼠标到现在已经普及的光电式再到未来即将普及的激光鼠标,人们追求的不外乎就两个字——性能。各个硬件厂家当然也很会抓消费者的心理,今天抛出一个“我的鼠标分辨率达到了800CPI”,明天又宣称“这款鼠标采用了XX光学引擎,性能就一个字,强!”。这样的宣称无疑会忽悠住很多朋友。我们对鼠标的性能理解不深刻才会造成这样的认识误区,才会被这些“真实的谎言”所蒙蔽。
认识鼠标:从“芯”开始
要了解鼠标的性能,我们先得要了解它的基本结构,下图中的发光二极管、光学引擎、控制芯片和光学透镜组件都决定了鼠标性能的优劣。表面上,光电鼠标的工作原理比较简单(激光鼠标也类似),就是发光二极管发出光线把桌面照亮,然后有部分光线反射回来,并通过光学透镜组件在光学引擎中的CMOS上成像(当鼠标移动时,它的移动路线就被“拍摄”下来,形成一组连贯的图像)。CMOS就会将这些图像转化为矩阵电信号传输给DSP(数字信号处理器),DSP会将此图像与上一采样周期的影像进行比较,寻找相似点,通过对比判断出位移,再将移动信号送到SPI系统(即接口系统),没有差异则不发送信号。这样就能使鼠标在屏幕上移动。

CPI值 :高,不等于性能就高
误区1:“你看,这鼠标不错,800CPI,还便宜。”
以前,我们选择鼠标的习惯是“一看品牌,二看CPI”。但听多了JS的忽悠后,很容易就将这个习惯转变为“一看CPI,二看品牌”,把鼠标CPI的值作为鼠标的首要购买标准。CPI为何会受到有如此高的“礼遇”,下面我们就来慢慢分析。
CPI是每英寸测量次数(count per inch),现在鼠标常见的分辨率为400CPI和800CPI。它表示了鼠标移动的最小距离。比如,一款400CPI的鼠标,如果要让光标在屏幕上移动一个像素的位置,我们的手就需要移动1/400英寸,而800CPI的鼠标仅需要移动1/800英寸就能在屏幕上移动一个像素。当我们使用大屏幕显示器的时候(19英寸以上),想将鼠标从屏幕的一端移到另一端,400CPI的鼠标无疑会让我们的手在桌面上多移动一段距离。
看到这里,或许你已经想出了“解决办法”,就是在鼠标驱动中选择“鼠标加速”,让它和800CPI的光标移动速度相同不就行了?此时问题也出现了,经过调整后,400CPI的鼠标速度是加快了,但在屏幕上最小移动距离却变成了2个像素,而不是此前的1个像素。两款鼠标的精度差异就此显现出来。这无疑给我们传达了一个信息——CPI高的鼠标,精度就高,性能就好。
为了弄清真相,你可能开始对鼠标的CPI感兴趣了,想知道是什么在影响着CPI的值。答案就是CPI是由CMOS矩阵大小和透镜倍数决定的(如图)。以400CPI的鼠标和像素为20×20的CMOS矩阵为例(CMOS矩阵存在于光学引擎中,光学引擎就是透镜上面的那块大芯片),该鼠标的光标在屏幕上移动一个像素,鼠标本身就要移动0.0025英寸(1/400=0.0025),而20×20的CMOS矩阵边长为0.1英寸时,CMOS的一个像素边长就为0.005英寸。

为了鼠标移动的那边长为0.0025英寸的像素能“落”到CMOS的那个像素上,就需要一个2倍的透镜来放大。公式为CPI=透镜倍数/一个CMOS像素边长。
所以,要提高CPI的值,一个方法就是提高CMOS的矩阵密度,假设由20×20提高到40×40,这时CMOS的一个像素边长就由0.005英寸缩短到0.0025英寸,在透镜倍数为2不变的情况下,此时CPI的值就提高到了800(CPI=2/0.0025)。不过能做到这一点的只有生产光学引擎的厂家(如著名的安捷伦)。
如果采用了只支持400CPI的光学引擎,却想把它改装成800CPI的鼠标,也好办。通过上面的公式,就知道如果更改透镜倍数,把本来放大倍数为2的透镜改为放大倍数为4,也可以得到分辨率为800CPI的鼠标。这个方法说起来简单,不过在透镜曲率提升的同时其图像变形和像差也就越严重,最终变为废图。这样做虽然CPI提高了,但鼠标的实际性能却降低了。
采样率:1500!5000!9000!
误区2:“为了游戏不丢帧,我非9000次/秒采样率的鼠标不买。”
以前用的杂牌光电鼠标,在高速运动的时候,如玩CS等FPS游戏时,经常出现丢帧的情况。后来才知道,这是因为鼠标的采样率不够造成的。说通俗点,采样率就是光学引擎(如图)中的CMOS每秒内对桌面“拍照”的次数和DSP相应的处理能力。

想解决丢帧的问题,用现在流行的说法就是要提高像素处理能力,而不是单纯提高采样率。证据就是当年罗技的MX光电引擎的采样率为5300次/秒,比微软的第二代Intellieye引擎6000次/秒的采样率低,但最大位移速度却比后者快。这是因为罗技的MX光电引擎的CMOS尺寸比以前增加了,DSP能获得更多的“特征点”信息,所以在快速移动的时候,CMOS少“拍”几张,对它的定位也不会有影响。当然,这是以采样率的次数足够高,能保证DSP能准确获得“特征点”为前提的。
至于像素处理能力与采样率的关系,我们可以用像素处理能力=采样率×CMOS像素来换算。比如,我们知道微软第二代Intellieye的CMOS像素为22×22,采样率为6000次/秒,可以算出它的像素处理能力为290.4万像素/秒(22×22×6000)。比罗技MX光学引擎的470万像素/秒的处理能力还有一定差距。而罗技MX光学引擎的采样率为4700000/(30×30)=5222.22次/秒。
可见,采样率并不是唯一,当扫描频率超过最大位移需要的时候,它将变得没有意义,而且还会增加DSP的运算负担。像素处理能力才是衡量鼠标性能的一个比较科学的标准。
光学引擎:牌子,安捷伦的
误区3:“鼠标采用了优秀的光学引擎,效果自然棒!棒!棒!”
有了上面的教训,那我们就选支持高分辨率的名牌光学引擎——安捷伦,就可以不再采用增加透镜放大倍数这种“为了CPI而CPI”的手段来提高CPI了。怎么样?这下我的鼠标该无敌了吧。
不过事实是就算鼠标采用了安捷伦的光学引擎,杂牌厂家和品牌厂家所做出来的鼠标的性能仍然有不可逾越的鸿沟。这又是为什么呢?比如常见的安捷伦2051光学引擎+赛普拉斯的CY7C63743控制芯片组合(如图),名牌大厂用它做出来的鼠标用起来一点问题都没有,而不知名的厂家用它做出来的鼠标却会出现丢帧等现象。

你知道吗:控制芯片可以看成是鼠标中的管家,它负责协调光电鼠标中各元器件的工作和与主机之间进行连接的I/O职能。
答案就是CY7C63743并不是普通的控制芯片,而是一个单片机,厂家给它编制的程序直接决定了鼠标的整体性能。安捷伦2051中的程序被编译好后,被固化在芯片中。当我们移动鼠标的速度过快时,超过了安捷伦2051光学引擎所能处理的极限,鼠标指针就飞不见了。如果鼠标厂家给控制芯片编制的程序“兼容性”够好的话,就可以把该次读取的数据丢弃,或是进行补偿算法,推算出鼠标正确的移动轨迹。这对程序的要求非常高,显然不是一般小厂家能做到的。
比比点评
听完今天的课,相信大家不仅对光电鼠标的结构有了相当深刻的认识,还对影响它性能的因素有了相当程度的“理解”吧。衡量鼠标的性能就如同水桶原理,能装多少水,纯粹取决于最低的那块木板。高性能的鼠标,并不是在某一方面的参数比较高,而是一种整体的高参数,才决定了鼠标的高性能。