在学习有关硬件/软件接口和操作系统的初学者课程时,经常会遇到这样的话题:用软件代替某些硬件部件是否更好,反之亦然。我无法建立连接。
在学习有关硬件/软件接口和操作系统的初学者课程时,经常会遇到这样的话题:用软件代替某些硬件部件是否更好,反之亦然。我无法建立连接。
Answers:
我认为其他答案缺少的基本联系是:
给定一台通用计算机(例如CPU),就可以对其进行编程以执行我们定义的几乎所有计算。但是,专用硬件的性能可能更好,或者可能没有任何价值。
(此答案侧重于桌面处理,并使用该领域的示例)
如果您的年龄足以记住1990年代中后期的PC游戏,那么您可能还记得Quake之类的FPS游戏。它最初是“软件渲染”的,这意味着CPU执行了渲染图形所需的计算。同时,CPU还必须执行输入处理,音频处理,AI处理等。这非常占用CPU资源。另外,图形处理不适合主流CPU(当时或现在)。它往往是一个非常高度并行的任务,甚至比现代高端CPU(8)还需要更多的内核。
我们将图形处理从软件转移到硬件:输入3dfx Voodoo和Nvidia 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头)增加了专门的说明,以帮助加快台式机用户想要执行的操作(例如,视频解码)。
令我惊讶的是,没有人提到最明显的例子之一:软件无线电。
如果您将现在的智能手机带回大约50年的时间,并将其展示给1960年代中期的合格工程师,他将能够理解其中的大部分内容。超级计算机可以简化为适合您口袋的东西吗?校验。您可以在包装中拥有相当于超高质量彩色电视机的东西吗?校验。它比那个时代的计算机快得多,拥有更多的存储空间等吗?校验。该软件可以执行如此复杂的功能吗?校验。
但是请告诉这位称职的工程师,哦,对了,这个软件包包含一组非常高效的发射器和灵敏的接收器:一个数字扩频收发器,可以同时在多个通道上进行发送和接收,并与可能在数英里之外的基础架构塔进行通信; 另一个数字收发器,用于与建筑物中某处的基站通信高速数据;与低功耗可穿戴设备通信的又一个数字收发器;还有另一个接收器从中轨卫星接收微弱的信号...他会称您为骗子。
他之所以称您为骗子,是因为他知道没有这么多调谐电路就无法构造出如此高灵敏度的接收器,这些电路会滤除相邻站并选择感兴趣的信号。而且,此类电路需要的零件尺寸由物理定义而不是技术定义,例如电容器和电感器。
然后,您将不得不说明,在现代收音机中,大多数操作都是通过软件完成的。从天线输入的信号转换为中频并稍加放大后,再由模数转换器采样;随后的处理将在数字信号处理器中进行。以前需要在老式高端无线电设备中使用大量硬件的所有调整和滤波,都可以用数学方程式来描述。如果可以做到的话,这些方程可以由DSP实时执行。
我认为,这是软件替代硬件的最明显例子。结果,我们将智能手机放在口袋里,即使对1960年代称职的工程师来说,也就像魔术一样。
与此相比,使用通用微控制器和软件而不是定制硬件来实现当今车库门开启器,电子浴室秤或电视遥控器的简单逻辑的想法似乎微不足道(这肯定是很多的)对于1960年代的假设工程师而言,比软件无线电更容易理解。)
考虑以下电路:
它是触发器,又称双稳态多谐振荡器。可以用以下代码替换:
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;
它的确切含义是。
一个特别著名的例子是Steve Wozniak为Apple II设计的Disk II驱动器:
主要的创新是通过使用软件使控制器紧凑,而竞争对手则依靠硬件。正如当时苹果公司的电子技术员比尔·费尔南德斯(Bill Fernandez)记住的那样,“ [沃兹尼亚克]设计的主要优势是,它只使用了六个芯片,而不是通常的60到70个芯片。
您可能更熟悉的另一个示例:仿真器。它们完全用软件代替了整套硬件(和软件)。CPU,各种控制芯片,甚至存储设备。
现在您无法消除所有硬件,最终需要一些东西来运行软件。但是通常,您可以在硬件中实现的任何逻辑任务也可以在软件中实现(性能可能不相同,可能会更慢,更快,或者在不同情况下,具体取决于底层硬件和实现)。
合成器是另一个正确的领域。
早期的合成器是100%模拟硬件,可以直接生成波形,然后通过电路(滤波器,放大器等)对其进行修改。可以对声音进行数字合成,但是它需要普通人无法承受的计算资源(实际的大型机和定制的数模转换器硬件)。
随着芯片制造工艺的改进,合成器从纯模拟转换为受数字信号控制但仍生成模拟信号的合成器芯片,然后转向纯数字合成(样本回放,FM合成,真加法合成等)。
如今,处理器已经足够便宜和快速,可以让程序员创建经典模拟合成器的计算机版本,通过实时模拟它们的行为来精确复制原始电路的行为-实际上,电话和平板电脑现在已经能够运行得足够快,可以运行这些重新创建;的Korg的IMS-20就是一个例子。
经典的合成器和新的合成器都可以作为VST或AU插件用于数字音频程序(例如Ableton Live,Logic或Cubase),并且为那些本来没有空间或金钱来使用的人提供了使用合成器的权限。他们。
编辑:在这一点上,我还应该提到VCVRack,它可以实时模拟模拟模块综合。从数小时的渲染时间向前迈进了几秒钟的音乐,这是一个很大的进步。
>:*3
。
在过去,削减是非常明确的。大多数需要快速执行的事情必须在硬件中实现。以产生频率的多谐振荡器为例。不久前,您需要几个晶体管,电容器和一个石英来产生(固定)频率。现在有便宜的微控制器,仅花费几美分左右。由于它们是如此之快,因此您可以轻松地使用它们来创建多谐振荡器。而且,您可以轻松地通过软件控制在以前焊接不同硬件所需的频率。虽然,要超过某个特定频率(但现在是相当高的频率),您仍然需要纯硬件。如此看来,两者之间是有界线的,但是您可以用软件解决的部分正在增长(呈指数增长)。
编辑实际上,“软件可以代替硬件”并不是真的正确。事实是,硬件非常强大,您可以使用它来运行模拟硬件的软件。因此,您可以使用了解软件的数百万个晶体管来代替一些简单但静态焊接的晶体管。因此,该术语应改为“硬件现在可以理解软件”。
将街机游戏《坦克》(1976年左右)和家用游戏机《战斗》(1977年)进行比较,就可以很好地说明软件在40年前如何取代硬件。
街机游戏《坦克》(大约在1976年)允许两名玩家在坦克周围行驶并互相射击。它不包括任何类型的处理器,而是具有硬件计数器来跟踪电子束,坦克和射击的水平和垂直位置,以及玩家的得分,旋转角度和经过的时间。它具有硬连线逻辑,可以输出与比分,玩家的战车形状和背景相关的位图数据。
Atari 2600视频计算机系统(大约在1977年成为家用游戏机)包括用于跟踪两个位图对象和四个可变宽度脉冲发生器的水平(但不是垂直!)位置的硬件,保持并输出20位宽的低电平分辨率的运动场图形模式以及两个高分辨率的8位模式,为播放器,背景和运动场锁定颜色,并检测各种对象之间的碰撞。它还包括一个通用的可编程计时器,但是硬件除了上述功能外几乎没有其他功能。尽管如此,即使硬件比游戏坦克的硬件简单得多,2K ROM弹药筒Combat仍使2600可以玩相同的基本游戏,但具有许多其他功能(各种载具和背景,弹跳等),因为它可以取代大多数街机 带软件的硬件。有趣的是,尽管Atari 2600可能是任何以微处理器为基础的商用家庭视频游戏系统中第二简单的硬件平台,但它的设计如此出色,可以方便地用软件替换硬件,因此,如果编程正确,它就可以在许多软件上运行。它的竞争对手。
除非有非常明显的优势,否则“软件可以代替硬件”是一个警告,请不要尝试解决硬件问题。与硬件相比,软件的开发成本便宜10到50倍,而单位生产成本几乎无限便宜。除非在软件中不能真正有效地完成X,否则在硬件中执行X不会是成功的解决方案。
在许多情况下,软件可以代替硬件,反之亦然。
一个典型的例子是数学查找表。它们不是每次都将结果计算为公共表达式,而是将它们内部存储在您的数学协处理器中,并在需要时进行引用。
大多数人可能已经熟悉音频滤波器和可以模仿真实乐器和设备(如踏板或放大器)的软件。
如果比物理等效物更快和/或更便宜,则可以使用可以虚拟创建的任何硬件。