“软件可以代替硬件”是什么意思?


90

在学习有关硬件/软件接口和操作系统的初学者课程时,经常会遇到这样的话题:用软件代替某些硬件部件是否更好,反之亦然。我无法建立连接。


7
通用CPU的指令集允许它们执行任意逻辑运算。软件被编译为由CPU指令集执行的命令流。这是“在软件中”做事的示例。相反,通过在硅中创建逻辑门的专用阵列,可以直接在“硬件中”执行软件算法。
Chimera

12
“连接”是软件和硬件都以不同的方式执行逻辑语句。
Chimera

14
这就是说的意思。软件和硬件负责。有时您可以使用软件或硬件来完成工作,因此选择其中之一。然后,您想知道与其他人一起做是否更好。
immibis

4
显然,您不能用软件替换所有硬件-试图制作软件监视器,鼠标或键盘是没有意义的。(除非他们是虚拟的)
immibis

2
考虑我们使用(软件)操作系统,因为:1)直接在硬件中编写OS会需要非常复杂的芯片,这会花费很多成本2)无法轻易更新硬件,因此硬件OS将无法接收更新。如果安全问题被发现,它不能等等,等等修补
Bakuriu

Answers:


176

我认为其他答案缺少的基本联系是:

给定一台通用计算机(例如CPU),就可以对其进行编程以执行我们定义的几乎所有计算。但是,专用硬件的性能可能更好,或者可能没有任何价值。

(此答案侧重于桌面处理,并使用该领域的示例)

用硬件代替软件

如果您的年龄足以记住1990年代中后期的PC游戏,那么您可能还记得Quake之类的FPS游戏。它最初是“软件渲染”的,这意味着CPU执行了渲染图形所需的计算。同时,CPU还必须执行输入处理,音频处理,AI处理等。这非常占用CPU资源。另外,图形处理不适合主流CPU(当时或现在)。它往往是一个非常高度并行的任务,甚至比现代高端CPU(8)还需要更多的内核。

我们将图形处理从软件转移到硬件:输入3dfx VoodooNvidia TNT(现为GeForce)。这些是专用的图形卡,可将处理任务从CPU转移到GPU。这不仅分散了工作量,提供了更多的计算资源来完成相同的工作量,而且图形卡是专用硬件,可以比CPU更快地渲染3D图形,并具有更多的功能。

快进到现代时代,台式机需要非CPU图形。没有GPU,甚至操作系统也无法运行。重要的是,CPU现在必须实际集成GPU。1个

用软件替换硬件

当DVD是全新的时,您可以在台式计算机中安装DVD驱动器。但是,当今的CPU功能不足以解码DVD视频和音频流而不会停顿。首先,需要专门的PCI板来执行解码。这是专门为解码DVD格式而构建的专用硬件。与3D图形非常相似,它不仅提供了更多的计算资源,而且是根据任务定制的,从而使DVD播放流畅。

随着CPU的功能越来越强大,“在软件中”解码DVD变得可行,这意味着“在通用计算机上”。即使使用效率较低的处理器,它也具有足够的原始速度和流水线优化,可以使DVD播放工作达到用户的期望。

现在,我们拥有的CPU的性能是DVD引入时的200倍甚至数百倍。蓝光技术问世时,我们不再需要专用硬件,因为通用硬件的功能足以应付任务。

两者都做

现代的Intel CPU具有用于H.264编码和解码的专门指令。这是通用CPU都在同一芯片上获得专门功能的趋势的一部分。我们不需要像早期的DVD一样使用单独的PCI Express板来高效地解码H.264,因为CPU包含相似的电路。


1 GPU是指专门设计用于执行图形计算的处理器。较旧的2D图形卡不是 GPU:它们只是带有DAC以便与显示器通信的帧缓冲区。不同之处在于GPU包含专门的处理器,这些处理器在某些类型的计算上表现出色,并且随着时间的流逝,它们现在实际上已经可以自己编程(着色器)。图形硬件始终包含将帧缓冲区中的数据转换为可通过电缆(VGA,DVI,HDMI,DisplayPort)输出并可由监视器理解的格式所需的专用电路。这与将计算分流到专用硬件的讨论无关。

2 DVD-Video于1997年发行,当时Pentium 2也被重新发行。这是CPU功率迅速增加的时期:人们可以考虑使用一台新的带有DVD解码器的P2计算机,或者在稍旧的P1中安装一台计算机。与使用Wikipedia的MIPS列表的现代第六代Core i7进行比较,现代CPU的速度要快590到1,690倍。这部分归因于时钟速度,也归因于标准移动到多个内核,以及现代CPU每个时钟周期每个内核要完成更多工作。同样重要的是,随着技术的发展,英特尔(在台式机和x86服务器市场上独占minate头)增加了专门的说明,以帮助加快台式机用户想要执行的操作(例如,视频解码)。


从今天的意义上讲,较旧的2d图形卡不是GPU,但用于图形功能的专用硬件却非常多。阻击器可以快速地将大量内存从一个位置复制到另一个位置,可能使用一些简单的逻辑操作将其与目标位置的数据组合在一起。这是在VGA / SVGA时代的典型2d卡中出现的。其他计算机具有其他专用的2d硬件,例如80年代和90年代的家用计算机和游戏机中的硬件精灵。
塞巴斯蒂安·雷德尔

127

令我惊讶的是,没有人提到最明显的例子之一:软件无线电。

如果您将现在的智能手机带回大约50年的时间,并将其展示给1960年代中期的合格工程师,他将能够理解其中的大部分内容。超级计算机可以简化为适合您口袋的东西吗?校验。您可以在包装中拥有相当于超高质量彩色电视机的东西吗?校验。它比那个时代的计算机快得多,拥有更多的存储空间等吗?校验。该软件可以执行如此复杂的功能吗?校验。

但是请告诉这位称职的工程师,哦,对了,这个软件包包含一组非常高效的发射器和灵敏的接收器:一个数字扩频收发器,可以同时在多个通道上进行发送和接收,并与可能在数英里之外的基础架构塔进行通信; 另一个数字收发器,用于与建筑物中某处的基站通信高速数据;与低功耗可穿戴设备通信的又一个数字收发器;还有另一个接收器从中轨卫星接收微弱的信号...他会称您为骗子。

他之所以称您为骗子,是因为他知道没有这么多调谐电路就无法构造出如此高灵敏度的接收器,这些电路会滤除相邻站并选择感兴趣的信号。而且,此类电路需要的零件尺寸由物理定义而不是技术定义,例如电容器和电感器。

然后,您将不得不说明,在现代收音机中,大多数操作都是通过软件完成的。从天线输入的信号转换为中频并稍加放大后,再由模数转换器采样;随后的处理将在数字信号处理器中进行。以前需要在老式高端无线电设备中使用大量硬件的所有调整和滤波,都可以用数学方程式来描述。如果可以做到的话,这些方程可以由DSP实时执行。

我认为,这是软件替代硬件的最明显例子。结果,我们将智能手机放在口袋里,即使对1960年代称职的工程师来说,也就像魔术一样。

与此相比,使用通用微控制器和软件而不是定制硬件来实现当今车库门开启器,电子浴室秤或电视遥控器的简单逻辑的想法似乎微不足道(这肯定是很多的)对于1960年代的假设工程师而言,比软件无线电更容易理解。)


16
被低估的答案被低估了。尽管我在电子领域只有很小的背景,并且本人已经构造了一些无线电设备,但是我从来不知道如今信号调谐是由软件完成的。我的头脑是香蕉,试图确切地想象这是如何完成的。
马查多

5
@Machado如果您曾经做过认真的电子设计,您很快就会意识到这基本上是所有数学方程式。物理电子设备可以进行加,减,除,乘,微分,积分等操作。这只是用物理代码代替物理电容器来滤除所有低频噪声,而是通过代码完成。物理信号通过称为模数转换器的专用硬件“加载”到软件中。
CHendrix '16

6
@Machado dspguide.com/pdfbook.htm这本教科书中有很多伪代码示例。这是一颗宝石。
brian_o

4
@Machado不要忘了拿起软件定义的收音机(大约20美元)并开始玩
迈克尔·汉普顿

5
只是不要告诉1960年代的那个人,您主要使用的是所有计算机功能和功能。是张贴食物的图片,流猫录像和狩猎神奇宝贝……
Baard Kopperud 2016年

42

考虑以下电路:

在此处输入图片说明

它是触发器,又称双稳态多谐振荡器。可以用以下代码替换:

static bool toggle;

if (toggle == true) 
{
    lblTop.BackColor = Color.Black;
    lblBottom.back Color = Color.Red;
}
else
{
    lblTop.BackColor = Color.Red;
    lblBottom.BackColor = Color.Black;
}
toggle = !toggle;

1
非常感谢您的回答和更正帖子!您是否有任何书籍建议您进一步了解它?加布里埃莱
加布里埃莱丝·斯卡拉蒂

11
检查代码:计算机硬件和软件的隐藏语言。它涵盖了从硬件到软件的完美过渡
Igor Milla

4
@igormilla我可以保证您的建议。我目前正在阅读这本书,这是迄今为止我读过的关于计算机体系结构的最好的书。它做得很出色,可以清晰,简洁地解释每个概念,而不会在您的喉咙上塞满太多技术术语。我强烈建议将其推荐给任何希望对硬件和软件之间的关系有更深入了解的人。
Christian Dean

1
@igormilla,很高兴找到!对我来说很高兴,它可以作为Safari Books Online(一部分)提供,因此我现在就可以开始阅读。:)(在发布之前再次阅读我的评论:听起来像是广告,但我只是一个满意的客户。去年我没有找到任何推荐的技术书籍,我无法立即浏览甚至无法完整阅读在线)。
通配符

29

它的确切含义是。

一个特别著名的例子是Steve Wozniak为Apple II设计的Disk II驱动器

主要的创新是通过使用软件使控制器紧凑,而竞争对手则依靠硬件。正如当时苹果公司的电子技术员比尔·费尔南德斯(Bill Fernandez)记住的那样,“ [沃兹尼亚克]设计的主要优势是,它只使用了六个芯片,而不是通常的60到70个芯片。

您可能更熟悉的另一个示例:仿真器。它们完全用软件代替了整套硬件(和软件)。CPU,各种控制芯片,甚至存储设备。

现在您无法消除所有硬件,最终需要一些东西来运行软件。但是通常,您可以在硬件中实现的任何逻辑任务也可以在软件中实现(性能可能不相同,可能会更慢,更快,或者在不同情况下,具体取决于底层硬件和实现)。


因此,您始终唯一需要的就是至少一个处理器?
加布里埃尔·斯卡莱蒂

3
@GabrieleScarlatti您还需要更多,特别是I / O设备必须是硬件(但控制器可以是软件!),而内存需要是硬件。它们之间的连接必须是硬件,但是必要的逻辑是有限的。简单的线,如果你有足够的引脚,少简单的移位寄存器或类似的设备,如果你没有足够的引脚。
8bittree '16

啊哈,是的,我有点过于近似了,您能推荐一些好书来了解更多吗?非常感谢您的回答!
加布里埃尔·斯卡莱蒂

1
到目前为止,该主题中最好的答案是“仿真器”。
马查多

1
不提沃兹就不能谈论这个话题!
James R.

11

合成器是另一个正确的领域。

早期的合成器是100%模拟硬件,可以直接生成波形,然后通过电路(滤波器,放大器等)对其进行修改。可以对声音进行数字合成,但是它需要普通人无法承受的计算资源(实际的大型机和定制的数模转换器硬件)。

随着芯片制造工艺的改进,合成器从纯模拟转换为受数字信号控制但仍生成模拟信号的合成器芯片,然后转向纯数字合成(样本回放,FM合成,真加法合成等)。

如今,处理器已经足够便宜和快速,可以让程序员创建经典模拟合成器的计算机版本,通过实时模拟它们的行为来精确复制原始电路的行为-实际上,电话和平板电脑现在已经能够运行得足够快,可以运行这些重新创建;的Korg的IMS-20就是一个例子。

经典的合成器和新的合成器都可以作为VST或AU插件用于数字音频程序(例如Ableton Live,Logic或Cubase),并且为那些本来没有空间或金钱来使用的人提供了使用合成器的权限。他们。

编辑:在这一点上,我还应该提到VCVRack,它可以实时模拟模拟模块综合。从数小时的渲染时间向前迈进了几秒钟的音乐,这是一个很大的进步。


1
1977年的Atari 2600具有足够的CPU能力,可以产生五倍频程的四声音乐,即使剩下39%以上的CPU时间可用于显示。必要的查找表将占用4K盒带的一半以上(约2300字节),但是盒带当然可以大于4K。播放音乐时,可能不会有非常复杂的游戏玩法,但是一定会出现漂亮的带有滚动文本的标题屏幕>:*3
supercat

是的,我遗漏了大约10个?20吗 多年的发展,所以我的回答不会变成小说。很好点!我以前在Mac 512K上有一个名为(Musicworks)[ thinkclassic.org/viewtopic.php?id=550]的东西,几乎无法处理4种声音。
乔·麦克马洪

与6502相比,68000执行每个指令需要更多的周期,但是通过适当的编码,四声波表综合应该相当有效。我将使用每个音量设置的256字节表来估计大约240个周期/样本的幅度缩放;消除幅度比例缩放将使该时间减少56个周期/样本。
超级猫

7

在过去,削减是非常明确的。大多数需要快速执行的事情必须在硬件中实现。以产生频率的多谐振荡器为例。不久前,您需要几个晶体管,电容器和一个石英来产生(固定)频率。现在有便宜的微控制器,仅花费几美分左右。由于它们是如此之快,因此您可以轻松地使用它们来创建多谐振荡器。而且,您可以轻松地通过软件控制在以前焊接不同硬件所需的频率。虽然,要超过某个特定频率(但现在是相当高的频率),您仍然需要纯硬件。如此看来,两者之间是有界线的,但是您可以用软件解决的部分正在增长(呈指数增长)。

编辑实际上,“软件可以代替硬件”并不是真的正确。事实是,硬件非常强大,您可以使用它来运行模拟硬件的软件。因此,您可以使用了解软件的数百万个晶体管来代替一些简单但静态焊接的晶体管。因此,该术语应改为“硬件现在可以理解软件”。


公平地说,几乎所有微控制器都具有(至少一个)通用PWM模块,以硬件实现。因此,很少使用适当的CPU上运行的软件来位频输出。
林登·怀特

@LyndonWhite PWM不是通用的多谐振荡器。它调制了作为频率发生器子集的脉冲宽度。
qwerty_so

1
确实是这样。我的意思是,尽管PWM是迄今为止人们想要生成的最常见的信号类型(在一定的占空比范围内),这就是为什么微处理器具有特殊的硬件。我可能会把PWM vs bitbanging作为相反的“硬件可以代替软件”的例子。
Lyndon White

@LyndonWhite我对我的答案进行了编辑。
qwerty_so

5

将街机游戏《坦克》(1976年左右)和家用游戏机《战斗》(1977年)进行比较,就可以很好地说明软件在40年前如何取代硬件。

街机游戏《坦克》(大约在1976年)允许两名玩家在坦克周围行驶并互相射击。它不包括任何类型的处理器,而是具有硬件计数器来跟踪电子束,坦克和射击的水平和垂直位置,以及玩家的得分,旋转角度和经过的时间。它具有硬连线逻辑,可以输出与比分,玩家的战车形状和背景相关的位图数据。

Atari 2600视频计算机系统(大约在1977年成为家用游戏机)包括用于跟踪两个位图对象和四个可变宽度脉冲发生器的水平(但不是垂直!)位置的硬件,保持并输出20位宽的低电平分辨率的运动场图形模式以及两个高分辨率的8位模式,为播放器,背景和运动场锁定颜色,并检测各种对象之间的碰撞。它还包括一个通用的可编程计时器,但是硬件除了上述功能外几乎没有其他功能。尽管如此,即使硬件比游戏坦克的硬件简单得多,2K ROM弹药筒Combat仍使2600可以玩相同的基本游戏,但具有许多其他功能(各种载具和背景,弹跳等),因为它可以取代大多数街机 带软件的硬件。有趣的是,尽管Atari 2600可能是任何以微处理器为基础的商用家庭视频游戏系统中第二简单的硬件平台,但它的设计如此出色,可以方便地用软件替换硬件,因此,如果编程正确,它就可以在许多软件上运行。它的竞争对手。


我花了很多时间和时间来玩Tank。我的一个朋友还原了那些旧的游戏机,得知这全是硬件,我感到非常惊讶。有人花了很多时间制作卡诺地图,以使其易于管理。用软件复制它要容易得多,并且所需的维护较少。与小行星相同。但是除非您完全复制它(包括控制台控件),否则它们都不会具有相同的感觉。另外,IMO在栅格显示上的外观也不尽相同。
SDsolar '16

@SDsolar:我记得读过一份Atari认为发表的表格,其中包含一些拥有者可以用来调整游戏玩法各个方面的mod,我认为涉及到两个mod的握持功能为玩家的射击角度提供了闩锁(增加了“制导导弹” ”功能),并且可能添加了类似“隐形坦克”功能。更换固件将需要更复杂的设备,而某些在硬件上容易实现的修改将在固件中是不可能的(例如,如果播放器位置使用二进制计数器,则使播放器每条扫描线出现两次是不重要的)。
超级猫

1

除非有非常明显的优势,否则“软件可以代替硬件”是一个警告,请不要尝试解决硬件问题。与硬件相比,软件的开发成本便宜10到50倍,而单位生产成本几乎无限便宜。除非在软件中不能真正有效地完成X,否则在硬件中执行X不会是成功的解决方案。


我没有投票,但是我很确定这是不正确的。
J. Allan

@杰夫·N 那只是购买硬件而不是开发它。
DepressedDaniel

你是对的; 我误解了这个问题的意图。您是否有引用或链接来支持“软件比硬件便宜10到50倍的开发……”的主张?我想知道这是一个粗略的数字还是一个[普遍接受/验证的]陈述。(很抱歉,您难过,顺便说一句; D)
J. Allan

我没有投票,但我不能投票,因为软件便宜并不总是如此。通常它可能会更昂贵。另外,请考虑ASIC和FPGA的概念,其中使用软件创建等效的硬件,然后可以更快地运行。就像可执行文件与解释程序之间的最终区别一样,但更多。
SDsolar '16

1
@SDsolar我还没有听说过相同功能在硬件中比软件更便宜地实现的情况。如果在软件中可行,那么在软件中普遍便宜。当然,例如,与图形卡相比,软件渲染器将更早遇到性能问题。但这更多的是实现某种性能基准的软件实现的可行性。
DepressedDaniel

1

细微差别已得到很好解决,但是我认为OP的绊脚石是可能的,因为用软件代替硬件几乎是不可能的。与“软件”解决方案相比,“硬件”始终涉及更少的“硬件”。

区别在于,可以在硬件和软件之间移动过程/算法/计算的逻辑。举了很多例子,所以我不再赘述。


-1

在具有虚拟内存的早期计算机中,您必须在TLB未命中时进行任务切换才能加载新页面条目。一款OS软件将找到正确的过程,并遍历页表,找到正确的条目并将其写回到TLB。切换回原始过程之前,要继续。

现在,大多数CPU都使用硬件来执行此过程,读取页表,遍历页表并更新TLB。

两种方法都需要使用软件来处理页面错误,但是由于TLB丢失数量轻而易举地超过了页面错误,因此硬件遍历仍然胜过软件。

通常,如果您有一个简单的过程需要重复处理,则可以找到硬件替代品。如果您拥有具有复杂控制流程的复杂硬件解决方案,则可以使用软件来简化硬件。


-2

在许多情况下,软件可以代替硬件,反之亦然。

一个典型的例子是数学查找表。它们不是每次都将结果计算为公共表达式,而是将它们内部存储在您的数学协处理器中,并在需要时进行引用。

大多数人可能已经熟悉音频滤波器和可以模仿真实乐器和设备(如踏板或放大器)的软件。

如果比物理等效物更快和/或更便宜,则可以使用可以虚拟创建的任何硬件。


-2

在会计方面,现在可以以电子方式发送发票(例如)的纸质副本,并且软件开始处理这种文书工作的收据及其处理工作越来越多。这是用软件代替硬件的一个很好的例子。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.