主题 : 硬件缺陷真能用软件补?盘点软件填过的硬件坑
千山同一月 万户尽皆春 千江有水千江月 万里无云万里天
级别: 总版主

UID: 998
精华: 0
发帖: 604963
威望: 528524 点
无痕币: 3089 WHB
贡献值: 0 点
在线时间: 61676(时)
注册时间: 2008-12-25
最后登录: 2024-03-29

0 硬件缺陷真能用软件补?盘点软件填过的硬件坑

硬件挖的坑真的可以通过软件来填吗?实际上不少硬件产品,都存在一些不尽如人意的地方,这可能是某项技术天生的短板,也有可能是设计不当带来的问题。为了对付这些硬件方面的不足,业界最常用的填坑大法可能就是软件了!不少厂商会通过一些特定的软件程序,试图修复或者缓解一些硬件方面的问题。这真的有效吗?今天,就一起来盘点一下有什么著名的为硬件填坑的软件方案吧!
1、软件续命SSD/软件减LCD拖影
固态硬盘寿命短?平衡算法来续命
SSD现在已经被广泛使用了,如果你现在装机不用SSD,甚至会被部分DIY玩家嘲笑说不懂电脑。不过,SSD获得如此高的认同度,也并非是常态,起码在早些年,就有很多人对SSD的寿命心存芥蒂。

▲SSD由闪存组成,但要解决闪存的寿命问题,需要特殊的软件算法
SSD由闪存构成,而闪存是有擦写寿命限制的,例如MLC闪存只能够擦写数千次,TLC闪存只能够擦写数百次等等。如果就这样拿闪存组装成为SSD,那么实际的寿命表现可能令人非常失望——读写数据时,会集中读写SSD的其中一部分闪存,这部分的闪存寿命就会损耗得特别快。一旦这部分闪存挂了,那么整块SSD也就挂了。

▲闪存擦写次数有限,因此要让整块SSD的闪存磨损平衡
这种磨损不平衡的情况,可能会导致一块100G容量的SSD,只因有数M的闪存耗损,而整块废掉。而让数M的闪存寿命走向完结,就算是MLC,可能也只需要擦写数十G的数据。然而我们都知道,现在不存在什么SSD会如此轻易得挂掉,这就和SSD的特殊软件算法有关系了。
为了弥补SSD闪存的寿命缺陷、最大程度延续SSD的寿命,业界为SSD引入了磨损平衡(Wear Leveling)算法,令所有闪存磨损度尽可能保持一致。SSD的磨损平衡算法大致分为动态和静态两种。动态的算法就是当写入新数据的时候,会自动往比较新的Block中去写,老的闪存就放在一旁歇歇;而静态的算法就更加先进,就算没有数据写入,SSD监测到某些闪存Block比较老,会自动进行数据分配,让比较老的闪存Block承担不需要写数据的储存任务,同时让较新的闪存Block腾出空间,平日的数据读写就在比较新的Block中进行——如此一来,各个Block的寿命损耗,就都差不多了。
有了这种软件算法加持,就算是TLC闪存的SSD,寿命也比较可观了。例如256G的TLC闪存SSD,寿命是500次擦写(P/E)的话,那么就需要写入125TB的数据,闪存才寿终正寝——就算你每天写入10G数据,也需要用三十多年才能把闪存给写挂,更何况很少人每天往SSD中写10G数据。

▲某些山寨SSD用U盘的方案,而某些U盘方案是不提供磨损平衡算法的
不过,磨损平衡算法需要主控芯片负责运算,现在还是有一些闪存产品不带有这个算法,导致寿命特别短——例如一些低端U盘。在早些年,有不良商家用不带磨损平衡算法的山寨U盘冒充SSD,导致这所谓的“SSD”寿命特别短。SSD不可靠的坏口碑,或许和这有很大关系。
液晶屏幕拖影多?插黑算法来帮忙
现在液晶屏幕LCD已经成为了绝对的主流,不过在早年,液晶是一项不怎么被看好的技术。无论是和CRT,还是和等离子相比,液晶的显示效果都明显处于下风,其中比较令人诟病的一项,就是拖影了。
由于硬件原理,LCD在显示动态画面的时候,需要不断对液晶分子进行偏转。液晶分子偏转是一个持续、稳态的过程,并不是一瞬间完成的。人们可以观察到,无论液晶分子偏转速度有多快,LCD还是会比CRT和等离子有更明显的拖影。当画面显示高速运动物体,例如飞快驶过的火车、体育比赛中的运动员之类的时候,拖影会更加明显。

▲插黑帧是改善LCD拖影的典型方案
怎么办?为了解决液晶拖影,插黑算法应运而生。所谓的插黑算法,其实就是在一帧帧的画面之间,插入黑帧,让LCD的稳态式显示转变成近似CRT、等离子那样的脉冲式显示,让每帧之间有时间差,这可以大大减少残影的出现。当然,这也带来了闪烁偏暗之类的副作用,不过LCD提升刷新率和亮度总比提升液晶分子的偏转速度来得简单,因此插黑算法还是有实用价值的。
2、软件防烧屏/软件修CPU
OLED会烧屏?偏移算法来缓解
作为面向未来的显示技术,OLED相比液晶有很多优点,例如轻薄、省电、对比度高、色域高等等,但也带来了一个不容忽视的问题——烧屏。就算是现在大红大火的iPhone X,使用OLED屏幕后也带来了烧屏问题,这点是苹果官方都予以承认的。

▲iPhoneX使用了OLED屏幕,在说明页面中也提到了烧屏现象
烧屏的确是OLED最为令人头疼的问题之一,它和OLED的显示原理息息相关。和传统的LCD屏幕不同,OLED并不通过背光模组照亮液晶像素点发光,OLED的每一个像素点都可以自发光。这样带来了很多优点,例如避免漏光、堆高对比度等等,但存在的一个问题就是,不同的像素点发光时间不一样,某些经常发光/不常发光的像素点会衰减得更快/更慢,亮度对比其他像素点明显不同。我们观察到这些亮度衰减更快/更慢的像素点,直接的观感就是某地方暗了/亮了一块,这就是“图像残留”或者说“烧屏”。

▲这就是典型的烧屏,除了OLED,等离子屏幕也很容易出现
如何对付烧屏?要么是提高OLED发光像素点的寿命,让用户在使用期间不出现亮度衰减——但这是很难做到的,成本太高。于是,防止烧屏的偏移算法就诞生了。
用软件解决OLED烧屏的一个思路,就是减少显示固定的图像。三星使用OLED屏经验丰富,它就有自己的一套软件算法来防止OLED烧屏。在很多OLED屏的三星手机中,经常固定显示图像的位置例如虚拟按钮,会定期位移,避免相同的像素点长时间发光/不发光,这样可以一定程度上避免烧屏。

▲三星的一些手机会通过偏移算法移动虚拟按键位置,防止烧屏
在iPhone X上,也存在类似的机制。之前有人解包过iOS11的固件,发现苹果也针对OLED设置了防烧屏的程序。此外,iOS上并不存在安卓那样的虚拟按钮,iPhone X使用手势操作,这无疑也大大降低了烧屏出现的概率。
不过,防止OLED烧屏的软件算法,并不能彻底保证OLED就一定不会烧屏,苹果自己也不敢这么说。受限于硬件,OLED屏幕烧屏仍会是难以完全避免的问题。不过通过软件优化以及正确的使用习惯,烧屏的情况还是可以大大减轻甚至不会出现的,希望有更多使用OLED屏的厂商加入防烧屏算法吧。
CPU设计有Bug?补丁BIOS来解决
在很多人的印象中,正常使用的话,CPU应该是电脑最不容易出现问题的部件了。但是,如果CPU本身设计不完善,那也是相当令人头疼的。实际上,还真出现过CPU设计有Bug、但CPU依然进入了消费市场的情况,例如AMD就干过这样的事。

▲AMD的phenom处理器存在TLB Bug
AMD的第一代Phenom(羿龙)处理器被赋予了迎击Intel酷睿处理器的重任,首次使用了三级缓存的设计,一度让A饭们寄予厚望。然而不幸的是,率先登场的B2步进的Phenom竟然存在TLB的Bug。TLB是用来连接内存和CPU缓存的桥梁,在有Bug的Phenom处理器中,TLB会导致CPU读取页表出现错误,出现死机等情况。出了Bug就得修,CPU是难以返厂回炉的了,怎么办?于是AMD就用软件来解决问题。

▲AMD通过系统补丁及BIOS的方法避开了这个硬件Bug,但会造成性能下降
AMD发布了一个新BIOS,也为Win系统提供了一个补丁,无论是哪种方法,其作用都是屏蔽某段页表乃至CPU缓存。这当然可以避免Bug的出现,不过也会造成性能降低。可以说,这个软件修复的方案只是权宜之计,其实并不完美。此后AMD推出了B3步进的Phenom处理器,从硬件上修改,才彻底解决了问题,步进改动后的CPU还从9X00改名为9X50,可见此次修补之重要。
总结
可以看到,软件的确可以弥补很多硬件方面的缺陷,但也不是此次都能完美填坑,例如AMD的Phenom就必须靠修改硬件才彻底解决问题,OLED的偏移显示算法也并不能根治烧屏毛病。新技术固然会拥有独到的优点,但某些新型硬件也会带来新的问题,希望厂商们能够真正为用户体验着想,带来更出色的产品吧。
Total 0.035151(s) query 4, Time now is:03-29 03:42, Gzip enabled 粤ICP备07514325号-1
Powered by PHPWind v7.3.2 Certificate Code © 2003-13 秋无痕论坛