百科问答小站 logo
百科问答小站 font logo



操作系统里面经常说的一个功能用「软件实现」还是用「硬件实现」,其本质区别是什么? 第1页

  

user avatar   bei-ji-85 网友的相关建议: 
      

本质区别就是字面意思。

软件实现:就是用操作系统驱动等软件代码,以CPU操纵的方式去实现某个功能。
硬件实现:就是用操作系统直接访问硬件寄存器的方式去实现某个功能。

举例:

1、IP包的校验值:可以用软件实现,软件算好了以后,填充到报文的指定位置;也可以用硬件实现,网卡的内置电路负责填充校验值。不仅仅是计算,校验的过程也同样可以由软件或者硬件实现。

2、闪存存储:硬件实现,就是我们看到的U盘,SSD这类存储设备,flash的块重映射,写平衡,缓存等,都是由硬件的主控来实现的。软件实现,这种普通人用的就比较少了,一般在嵌入式的开发板上比较常见,某些板子为了解决成本,会把裸片(SPI/NAND)直接焊在板子上,这种情况下,就需要软件自己编写代码完成块重映射、写平衡等功能。当然如果懒得做,直接操作裸片也是可以的,就是寿命会短一些。

以上是两种比较典型的软件实现和硬件实现的区别。

但是,多数情况下,软件和硬件都需要互相辅助才能完成相应的工作。比如,对于IP报文校验,即使使用硬件实现,软件也需要设置相关的寄存器;对于闪存存储来说,确实不用直接操作闪存了,但还是要发送SCSI/SATA命令才行。

区别就是字面意思,没啥本质不本质的,软件和硬件,脱离了对方都无法工作。


user avatar   feng-dong 网友的相关建议: 
      

当我们讨论一个功能是用软件实现还是用硬件实现时,我们究竟关注的是什么?

先举一个极端的例子。我们都知道「加法」和「乘法」肯定是用硬件实现的。这不废话么?可是你平时听到过有人强调这点吗?没有。因为「加法」和「乘法」的应用非常普遍。普遍应用的东西,你做 CPU 的不去直接实现是不是傻?分分钟被竞争对手干屁。
有了「加法」和「乘法」你就可以组合了。比如说 a * a + b。咦,你突然说了,做硬件的,能不能给我的 a * a + b 做个硬件电路,肯定快啊。做硬件的说,你 tm 谁啊?要我给你的破公式做硬件电路。
可是有没有做硬件的同意的时候呢?有啊,比如
a * b + c * d + e * f,
数学家说了这个东西用处多,叫 dot product of (a, c, e) and (b, d, f)。做硬件的就在「加法」和「乘法」之外单独做一套更快电路。可是和「加法」和「乘法」不同,还是很多人用不到 dot product,所以做硬件的就没能和做语言的商量好,没能把 dot product 做成 higher level language 的一部分那么好用。
有一部分人不好好学习,该用 dot product 的时候就用「加法」和「乘法」凑合一下。
还有一部分人,知道怎么用 dot product。可是自己写算法的时候,不知道把本来可以写成 dot product 的部分写出来,而是把算法写成了根本没用 dot product 的形式。
结果那些会把算法写成 dot product,又会调用硬件 dot product 的人就跳出来说了,我这个算法是「硬件实现」的。

user avatar   pansz 网友的相关建议: 
      

开局一张图,剩下全靠猜?这个没法评价。

从软件的角度虽然我能想出两三种导致这个现象的原因,但非正式发布的产品出现任何问题都是常见现象。盲人摸象的评价没有必要。

跟11代没差别,这个肯定是违背常识的,要知道11代i9只有16线程,12代i9有24线程,24线程超越16线程并不需要多么高超的优化技巧。

调度优化的主要难题是当我们只需要少量线程运作的时候究竟把这个线程安排在哪个核心。

然而,对于全核心全线程同时计算的场景来说,反正都是全核心上场,根本不需要什么优化,谁来都是全核心工作。

如果这个软件能把所有核心用满的话,没道理性能不变。所以肯定有某个环节出了问题。正式版本再说吧。




  

相关话题

  windows要求已数字签名的驱动程序? 
  进入内核态究竟是什么意思? 
  为什么知乎用户 vczh 不建议初学编程的人把 C 作为入门语言? 
  一个模块(比如文件系统)在内核中实现(宏内核),跟它在内核外实现(微内核),主要区别是什么? 
  C 与 C++ 谁的效率高,为什么? 
  想问一下,各大视频博主用的剪辑软件软件是正版的吗? 
  哪些 APP 的流氓操作让你忍无可忍? 
  linux更新后无法启动时你的心情怎样、第一步怎么做? 
  第2个孩子不是应该在第4个孩子之前完成任务吗? 
  如何看待华为2021年4月升级鸿蒙系统? 

前一个讨论
如果有一个月球那么大的天体撞击地球,地球人有什么解决方案?
下一个讨论
C++ 中,std::atomic 是真正的「原子」吗?





© 2024-06-02 - tinynew.org. All Rights Reserved.
© 2024-06-02 - tinynew.org. 保留所有权利