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

评论

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

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

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

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

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

#1 楼

我认为其他答案缺少的基本联系是:
鉴于一台通用计算机(例如CPU),人们可以对其进行编程以执行我们定义的几乎所有计算。但是,专用硬件的性能可能更好,或者可能没有任何价值。
(此答案侧重于桌面处理,并使用该领域的示例)
用硬件代替软件
足以记住1990年代中后期的PC游戏,您可能还记得Quake等FPS游戏。它最初是“软件渲染”的,这意味着CPU执行了渲染图形所需的计算。同时,CPU还必须执行输入处理,音频处理,AI处理等。这非常占用CPU资源。此外,图形处理还不适合主流CPU(当时或现在)。它往往是一个非常高度并行的任务,甚至比现代高端CPU(8)还需要更多的内核。
我们将图形处理从软件转移到了硬件:输入3dfx Voodoo和Nvidia TNT(现在称为GeForce) 。这些是专用的图形卡,可将处理任务从CPU转移到GPU。这不仅分散了工作量,提供了更多的计算资源来完成相同的工作量,而且图形卡是专用硬件,可以比CPU更快地渲染3D图形,并具有比CPU更多的功能。
现代时代,台式机上需要非CPU图形。没有GPU,甚至操作系统也无法运行。 CPU现在真正集成GPU非常重要。1
用软件代替硬件
当DVD是全新的时,您可以在台式计算机中安装DVD驱动器。但是,当今的CPU功能不足以解码DVD视频和音频流而不会停顿。首先,需要专门的PCI板来执行解码。这是专门为解码DVD格式而构建的专用硬件。与3D图形非常相似,它不仅提供了更多的计算资源,而且是为任务定制的,从而使DVD播放顺畅。
随着CPU的功能越来越强大,“在软件中”解码DVD变得可行。 “在通用计算机上。”即使使用效率较低的处理器,它也具有足够的原始速度和流水线优化,可以使DVD播放达到用户的期望。
我们现在拥有的CPU的性能是DVD推出时的数百甚至数千倍。蓝光技术问世时,我们不再需要专门的硬件,因为通用硬件的功能足以应付任务。
同时做到这两个
现代英特尔CPU具有针对H.264编码和解码。这是通用CPU都在同一芯片上获得专门功能的趋势的一部分。由于CPU包含类似的电路,因此我们不需要像早期DVD一样使用单独的PCI Express板来有效地解码H.264。

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服务器市场上独占do头)增加了专门的说明,以帮助加快台式机用户想要执行的操作(例如,视频解码)。

评论


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

–塞巴斯蒂安·雷德尔(Sebastian Redl)
19 Mar 5 '19在7:13

#2 楼

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

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

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

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

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

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

与之相比,车库门开启器的简单逻辑,如今使用通用微控制器和软件而不是定制硬件来实现电子浴室秤或电视遥控器几乎显得微不足道了(对于我们假设的1960年代的工程师来说,肯定比软件无线电更容易理解。)

评论


被低估的答案被低估了。尽管我在电子领域的背景很小,而且本人已经构造了一些无线电设备,但我从来不知道如今这些信号是由软件完成的。我的主意是香蕉,试图想象到底是怎么做到的。

–马查多
16 Dec 8'在11:18

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

– CHendrix
16 Dec 8'在13:03

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

–brian_o
16年12月8日在16:00

@Machado不要忘了拿起软件定义的收音机(大约20美元)并开始玩!

–迈克尔·汉普顿
16 Dec 9'在5:47

只是不要告诉1960年代的那个人,您主要将所有计算机功能和功能用于什么?是要张贴食物图片,串流猫视频和狩猎口袋妖怪...

–巴德·科珀罗德(Baard Kopperud)
16 Dec 10'在15:31

#3 楼

考虑以下电路:



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

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;


评论


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

–加布里埃尔·斯卡拉蒂(Gabriele Scarlatti)
16 Dec 7'在16:17

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

–伊戈尔·米拉(Igor Milla)
16年7月7日在18:27

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

–基督教教务长
16 Dec 7'在21:15



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

–通配符
16 Dec 9'1:30



#4 楼



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


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


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

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

评论


因此,您始终唯一需要的是至少一个处理器?

–加布里埃尔·斯卡拉蒂(Gabriele Scarlatti)
16 Dec 7'在15:49

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

– 8bittree
16 Dec 7'在15:55

啊哈哈,是的,我有点过于近似了,您能推荐一些好书来学习更多吗?非常感谢您的回答!

–加布里埃尔·斯卡拉蒂(Gabriele Scarlatti)
16 Dec 7'在15:58

到目前为止,此主题中最好的答案是“仿真器”。

–马查多
16 Dec 8'在11:21

不提沃兹就不能谈论这个话题!

–詹姆斯·R。
16 Dec 8'在19:33

#5 楼

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

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

随着芯片制造的改进,合成器转移了从纯模拟到由数字信号控制但仍生成模拟信号的合成器芯片,再到纯数字合成(样本回放,FM合成,真加法合成等)。

如今,处理器成为足够便宜且足够快,以允许程序员创建计算机版本的经典模拟合成器,通过实时模拟其行为来精确复制原始电路的行为-实际上,电话和平板电脑现在能够以足够快的速度运行以重新运行这些电路。创作;例如Korg iMS-20。

经典的合成器和新的合成器都可以作为VST或AU插件用于数字音频程序(例如Ableton Live,Logic或Cubase),并且可以通过它们访问合成器,那些原本就没有空间或金钱来使用它们的人。

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

评论


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

–超级猫
16 Dec 9'在16:08

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

–乔·麦克马洪(Joe McMahon)
16 Dec 9'在21:35



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

–超级猫
16 Dec 9'在22:49

#6 楼

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

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

评论


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

–林登·怀特(Lyndon White)
16 Dec 9'在23:32

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

– qwerty_so
16 Dec 10'在8:33

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

–林登·怀特(Lyndon White)
16 Dec 10'在8:45

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

– qwerty_so
16 Dec 14'在11:04

#7 楼

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

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

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

评论


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

– SDsolar
2016年12月11日在21:12



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

–超级猫
16年12月11日在21:19

#8 楼

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

评论


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

– J.艾伦
16 Dec 10'在16:25

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

–沮丧的丹尼尔
16年10月10日在18:21

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

– J.艾伦
16 Dec 10 '18:30



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

– SDsolar
16-12-11在20:59



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

–沮丧的丹尼尔
16 Dec 11'在22:25

#9 楼

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

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

#10 楼

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

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

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

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

#11 楼

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

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

大多数人可能已经熟悉音频过滤器和可以模仿真实的乐器和设备,例如踏板或放大器。

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

#12 楼

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