it-swarm.com.de

Was versteht man unter dem Begriff „Software kann Hardware ersetzen“?

Beim Studium des Anfängerkurses über Hardware-/Softwareschnittstellen und Betriebssysteme wird häufig die Frage aufgeworfen, ob es besser ist, einige Hardwareteile durch Software zu ersetzen und umgekehrt. Ich kann die Verbindung nicht herstellen.

91

Ich denke, die grundlegende Verbindung, dass andere Antworten fehlen, ist folgende:

Bei einem Allzweckcomputer (z. B. einer CPU) kann man ihn so programmieren, dass er so ziemlich jede von uns definierte Berechnung durchführt. Spezielle Hardware kann jedoch eine bessere Leistung erbringen oder keinen Wert liefern.

(Diese Antwort konzentriert sich auf die Desktop-Verarbeitung und verwendet Beispiele aus dieser Domäne.)

Software durch Hardware ersetzen

Wenn Sie alt genug sind, um sich an PC-Spiele Mitte bis Ende der neunziger Jahre zu erinnern, erinnern Sie sich wahrscheinlich an FPS-Spiele wie Quake . Es begann mit "Software gerendert", was bedeutet, dass die CPU die zum Rendern der Grafiken erforderlichen Berechnungen durchführte. In der Zwischenzeit musste die CPU auch Eingabeverarbeitung, Audioverarbeitung, AI-Verarbeitung usw. durchführen. Dies war sehr anstrengend für die CPU-Ressourcen. Darüber hinaus ist die Grafikverarbeitung für eine Mainstream-CPU (damals oder heute) nicht gut geeignet. Dies ist in der Regel eine sehr parallele Aufgabe, die viel mehr Kerne erfordert als selbst eine moderne High-End-CPU (8).

Wir haben die Grafikverarbeitung von Software auf Hardware verschoben: Geben Sie dfx Voodoo und Nvidia TNT (jetzt GeForce ) ein. Dies waren spezialisierte Grafikkarten, die die Verarbeitung von der CPU auf die GPU verlagerten. Dies verteilte nicht nur die Arbeitslast und stellte mehr Rechenressourcen zur Verfügung, um die gleiche Menge an Arbeit zu erledigen. Die Grafikkarten waren spezialisierte Hardware , die 3D-Grafiken stark rendern konnte schneller und mit mehr Funktionen als die CPU könnte.

Schneller Vorlauf in die Moderne, und auf dem Desktop sind Nicht-CPU-Grafiken (== --- ==) erforderlich . Auch das Betriebssystem kann ohne GPU nicht funktionieren. Es ist so wichtig, dass CPUs jetzt tatsächlich GPUs integrieren.1

Hardware durch Software ersetzen

Als die DVD noch brandneu war, konnten Sie ein DVD-Laufwerk auf Ihrem Desktop-Computer installieren. Die CPUs des Tages waren jedoch nicht leistungsfähig genug, um die DVD-Video- und Audiostreams ohne Ruckeln zu dekodieren. Für die Dekodierung war zunächst eine spezielle PCI-Karte erforderlich. Dies war spezielle Hardware, die speziell zum Dekodieren des DVD-Formats und sonst nichts entwickelt wurde. Ähnlich wie bei 3D-Grafiken wurden nicht nur mehr Computerressourcen bereitgestellt, sondern es wurde speziell für diese Aufgabe entwickelt, um die DVD-Wiedergabe reibungslos zu gestalten.

Als die CPUs viel leistungsfähiger wurden, wurde es möglich, DVDs "in Software" zu dekodieren, was "auf einem Allzweckcomputer" bedeutet. Selbst mit einem weniger effizienten Prozessor verfügte er über genügend Geschwindigkeits- und Pipeline-Optimierungen, damit die DVD-Wiedergabe den Erwartungen der Benutzer entspricht.

Wir haben jetzt CPUs, die hunderte oder sogar tausende Male so leistungsfähig sind2 wie wir es hatten, als DVDs eingeführt wurden. Als Blu-ray auf den Markt kam, brauchten wir nie spezielle Hardware, da Allzweckhardware mehr als leistungsfähig genug war, um die Aufgabe zu bewältigen.

Beides tun

Moderne Intel-CPUs haben spezielle Anweisungen für H.264 Codierung und Decodierung. Dies ist Teil eines Trends, bei dem Allzweck-CPUs spezielle Funktionen auf demselben Chip erhalten. Wir benötigen keine separate PCI Express-Karte, um H.264 wie bei DVDs frühzeitig effizient zu dekodieren, da CPUs ähnliche Schaltkreise enthalten.


1 GPU bezieht sich auf einen Prozessor, der speziell für die Durchführung grafischer Berechnungen entwickelt wurde. Ältere 2D-Grafikkarten waren keine GPUs: Sie waren einfach Framebuffer mit DACs, um mit dem Monitor zu sprechen. Der Unterschied besteht darin, dass GPUs spezialisierte Prozessoren enthalten, die Excel bei bestimmten Arten von Berechnungen und im Laufe der Zeit tatsächlich selbst programmierbar sind (Shader). Grafikhardware enthielt immer die spezielle Schaltung, die erforderlich ist, um die Daten in einem Framebuffer in ein Format zu konvertieren, das über ein Kabel (VGA, DVI, HDMI, DisplayPort) ausgegeben und von einem Monitor verstanden werden kann. Dies ist für die Diskussion über das Auslagern der Berechnungen auf spezielle Hardware irrelevant.

2 DVD-Video wurde 1997 veröffentlicht, zu einer Zeit, als der Pentium 2 ebenfalls neu veröffentlicht wurde. Dies war eine Zeit, in der die Leistung von CPUs rapide zunahm: Man könnte einen neuen P2-Computer mit DVD-Decoder in Betracht ziehen oder einen in einem etwas älteren P1 installieren. Vergleichen Sie das mit einem modernen 6 Core i7 der Generation mit Wikipedia's Liste der MIPS , und eine moderne CPU ist zwischen 590 und 1.690 Mal schneller. Dies ist zum Teil auf die Taktrate zurückzuführen, aber auch auf die standardmäßige Umstellung auf mehrere Kerne sowie auf moderne CPUs, die pro Kern und Takt viel mehr Arbeit leisten. Ebenfalls relevant ist, dass Intel (der den Desktop- und x86-Servermarkt dominiert) mit fortschreitender Technologie spezielle Anweisungen hinzufügt, um die von Desktop-Benutzern gewünschten Vorgänge zu beschleunigen (z. B. Videodecodierung).

176
user22815

Ich bin überrascht, dass noch niemand eines der eklatantesten Beispiele erwähnt hat: Software-definiertes Radio.

Wenn Sie ein heutiges Smartphone in der Zeit von etwa 50 Jahren nehmen und es ab Mitte der 1960er Jahre einem kompetenten Ingenieur zeigen würden, könnte er das meiste davon verstehen. Dass ein Supercomputer auf etwas reduziert werden kann, das in Ihre Tasche passt? Prüfen. Dass Sie das Äquivalent eines hochqualitativen Farbfernsehers im Paket haben können? Prüfen. Dass es so viel schneller ist, so viel mehr Speicherplatz usw. hat als Computer der damaligen Zeit? Prüfen. Diese Software wurde geschrieben, die so komplexe Funktionen ausführen kann? Prüfen.

Aber sagen Sie diesem kompetenten Ingenieur, dass dieses Paket übrigens eine Reihe äußerst effizienter Sender und empfindlicher Empfänger enthält: einen digitalen Spreizspektrum-Transceiver, der gleichzeitig auf mehreren Kanälen senden und empfangen kann und mit einem Infrastrukturmast kommuniziert, der möglicherweise kilometerweit entfernt ist ;; ein weiterer digitaler Transceiver, der Hochgeschwindigkeitsdaten mit einer Basisstation irgendwo im Gebäude kommuniziert; ein weiterer digitaler Transceiver, der mit tragbaren Geräten mit geringem Stromverbrauch kommuniziert; und ein anderer Empfänger, der ein schwaches Signal von einem Satelliten im Zwischenorbit aufnimmt ... er würde Sie einen Lügner nennen.

Er würde Sie als Lügner bezeichnen, weil er weiß, dass Empfänger mit einer derart hohen Empfindlichkeit nicht ohne eine Vielzahl von abgestimmten Schaltkreisen konstruiert werden können, die benachbarte Stationen herausfiltern und das interessierende Signal auswählen. Und dass solche Schaltungen Teile mit Größen erfordern, die eher von der Physik als von der Technologie bestimmt werden, wie Kondensatoren und Induktivitäten.

Sie müssten dann erklären, dass in einem modernen Radio das meiste davon in Software erledigt wird. Nachdem das von der Antenne eingehende Signal in eine Zwischenfrequenz umgewandelt und ein wenig verstärkt wurde, wird es von einem Analog-Digital-Wandler abgetastet. und die anschließende Verarbeitung erfolgt in einem digitalen Signalprozessor. All diese Abstimmung, diese Filterung, die früher Tonnen von Hardware in einem High-End-Radio der alten Schule erforderte, kann in Form von mathematischen Gleichungen beschrieben werden. und wenn dies möglich ist, können diese Gleichungen vom DSP in Echtzeit ausgeführt werden.

Ich denke, dies ist eines der eklatantesten Beispiele für Software, die Hardware ersetzt. Aus diesem Grund haben wir Smartphones in der Tasche, die selbst für einen kompetenten Ingenieur der 1960er Jahre einem Zaubertrick ähneln würden.

Im Vergleich dazu scheint die Idee, dass die einfache Logik eines Garagentoröffners, einer elektronischen Personenwaage oder einer TV-Fernbedienung heutzutage mit einem Allzweck-Mikrocontroller und einer Software anstelle von kundenspezifischer Hardware umgesetzt wird, fast trivial (und sicherlich viel für unseren hypothetischen Ingenieur der 1960er Jahre verständlicher als softwaredefiniertes Radio.)

127
Viktor Toth

Betrachten Sie diese Schaltung:

(enter image description here

Es ist ein Flip Flop, auch bekannt als Bistable Multivibrator. Es kann durch diesen Code ersetzt werden:

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;
42
Robert Harvey

Es bedeutet genau, wie es sich anhört.

Ein besonders berühmtes Beispiel ist das Disk II Drive , das von Steve Wozniak für das Apple II:

Die Hauptinnovation bestand darin, den Controller mithilfe von Software kompakt zu machen, während sich die Wettbewerber auf Hardware stützten. Bill Fernandez, damals Elektroniker bei Apple, erinnert sich daran: "Der Hauptvorteil von [Wozniaks] Design [war], dass nur sechs Chips anstelle der üblichen 60 bis 70 verwendet wurden

Ein weiteres Beispiel, mit dem Sie wahrscheinlich besser vertraut sind: Emulatoren. Sie ersetzen ganze Hardwaresätze (und Software) vollständig in Software. CPUs, verschiedene Steuerchips, sogar Speichergeräte.

Jetzt können Sie nicht die gesamte Hardware entfernen. Schließlich benötigen Sie etwas , um die Software auszuführen. Im Allgemeinen kann jede Logikaufgabe, die Sie in Hardware implementieren können, auch in Software implementiert werden (die Leistung ist möglicherweise nicht identisch, sie kann langsamer, schneller oder in unterschiedlichen Situationen sein, abhängig von der zugrunde liegenden Hardware und der Implementierung).

28
8bittree

Ein weiteres Gebiet, in dem dies zutrifft, sind Synthesizer.

Frühe Synthesizer waren 100% analoge Hardware , die Wellenformen direkt erzeugten und diese dann über Schaltungen (Filter, Verstärker usw.) modifizierten. Es war möglich, Sound digital zu synthetisieren, aber es erforderte Rechenressourcen , die sich die durchschnittliche Person nicht leisten konnte (ein tatsächlicher Mainframe und eine benutzerdefinierte Digital-Analog-Wandler-Hardware).

Als sich die Chipherstellung verbesserte, wechselten die Synthesizer von rein analog zu Synthesizer-Chips gesteuert durch digitale Signale, erzeugten aber immer noch analoge Signale, und dann zu rein digitaler Synthese (Sample-Wiedergabe, FM-Synthese , echte additive Synthese und so weiter).

Heutzutage sind Prozessoren so billig und schnell genug, dass Programmierer Computerversionen klassischer analoger Synthesizer erstellen können, die das Verhalten der ursprünglichen Schaltkreise exakt duplizieren, indem sie ihr Verhalten in Echtzeit simulieren. Tatsächlich können Telefone und Tablets jetzt schnell genug ausgeführt werden Führen Sie diese Neukreationen aus. Das Korg iMS-2 ist ein Beispiel.

Sowohl klassische als auch neue Synthesizer sind als VST- oder AU-Plugins für digitale Audioprogramme wie Ableton Live, Logic oder Cubase verfügbar. Diese bieten den Zugriff auf Synthesizer für Personen, die sonst keinen Platz oder Geld hätten, um sie nutzen zu können Sie.

Edit: Ich sollte an dieser Stelle auch VCVRack erwähnen, das die analoge modulare Synthese in Echtzeit simuliert. Ein ziemlicher Schritt vorwärts von mehrstündigen Renderzeiten für ein paar Sekunden Musik.

11
Joe McMahon

Früher war der Schnitt ziemlich klar. Die meisten Dinge, die eine schnelle Ausführung erforderten, mussten in Hardware implementiert werden. Nehmen Sie zum Beispiel einen Multivibrator, der eine Frequenz erzeugt. Vor nicht allzu langer Zeit brauchten Sie ein paar Transistoren, Kondensatoren und schließlich einen Quarz, um eine (feste) Frequenz zu erzeugen. Jetzt gibt es billige Mikrocontroller, die nur ein paar Cent kosten. Da sie so schnell sind, können Sie sie einfach verwenden, um einen Multivibrator zu erstellen. Darüber hinaus können Sie einfach per Software steuern, welche Frequenz wo früher erzeugt werden muss, um verschiedene Hardware zu löten. Wenn Sie jedoch eine bestimmte (aber jetzt ziemlich hohe) Frequenz überschreiten, benötigen Sie immer noch reine Hardware. Sie sehen, es gibt eine Grenze zwischen beiden, aber der Teil, den Sie mit Software lösen können, wächst (exponentiell).

Bearbeiten Eigentlich ist "Software kann Hardware ersetzen" nicht wirklich korrekt. Es ist nur die Tatsache, dass die Hardware so mächtig geworden ist, dass Sie damit Software ausführen können, die Hardware emuliert. Anstelle einiger einfacher, aber statisch gelöteter Transistoren verwenden Sie Millionen von Transistoren, die Software verstehen. Der Begriff sollte also stattdessen "Hardware kann jetzt Software verstehen" lauten.

7
qwerty_so

Ein Vergleich zwischen dem Arcade-Spiel Tank (circa 1976) und dem Heimkonsolenspiel Combat (1977) liefert ein schönes Beispiel dafür, wie Software Hardware noch vor 40 Jahren ersetzen konnte.

Das Arcade-Spiel Tank (circa 1976) erlaubte zwei Spielern, um Panzer herumzufahren und aufeinander zu schießen. Es enthielt keine Art von Prozessor, sondern Hardware-Zähler, um die horizontalen und vertikalen Positionen des Elektronenstrahls, der Panzer und Schüsse sowie die Punktzahlen, Drehwinkel und die verstrichene Zeit des Spielers zu verfolgen. Es gab eine festverdrahtete Logik, um die Bitmap-Daten auszugeben, die mit den Punktzahlen, den Panzerformen der Spieler und dem Hintergrund verbunden waren.

Das Atari 2600 Video Computer System (eine Heimspielkonsole um 1977) enthielt Hardware zum Verfolgen der horizontalen (aber nicht vertikalen!) Positionen von zwei Bitmap-Objekten und vier Impulsgeneratoren mit variabler Breite, um ein 20-Bit-Tief zu halten und zu takten -auflösendes Spielfeld-Grafikmuster sowie zwei hochauflösende 8-Bit-Muster, Latch-Farben für Spieler, Hintergrund und Spielfeld sowie Erkennung von Kollisionen zwischen den verschiedenen Objekten. Es enthielt auch einen programmierbaren Allzweck-Timer, aber die Hardware hatte nur wenig anderes als das oben Genannte. Obwohl die Hardware viel einfacher als die des Panzers ist, ermöglicht der 2K ROM Cartridge Combat) dem 2600, dasselbe Basisspiel zu spielen, jedoch mit vielen anderen Funktionen (einer Vielzahl von Fahrzeugen und Hintergründe, Bouncing-Shots usw.), da es den größten Teil der Hardware des Arcade-Automaten durch Software ersetzen kann. Interessanterweise ist der Atari 2600 wahrscheinlich die zweiteinfachste Hardwareplattform eines kommerziell verkauften mikroprozessorbasierten Heimvideospielsystems ist so gut konzipiert, um das Ersetzen von Hardware durch Software zu erleichtern, dass es bei korrekter Programmierung viele seiner Konkurrenten umkreisen kann.

5
supercat

Die Nuance wurde gut angegangen, aber ich denke, es ist möglich, dass der Stolperstein für OP darin besteht, dass Hardware durch Software kaum ersetzt werden kann. Die "Hardware" beinhaltet ausnahmslos deutlich weniger "Hardware" als die "Software" -Lösung.

Der Unterschied besteht darin, dass das Logik eines Prozesses/Algorithmus/einer Berechnung zwischen Hardware und Software verschoben werden kann. Es wurden viele Beispiele gegeben, daher werde ich nicht näher darauf eingehen.

1
ANone

Der Ausdruck "Software kann Hardware ersetzen" ist eine Warnung, Probleme mit Hardware nicht zu lösen, es sei denn, es gibt ganz klare Vorteile. Software ist 10x-50x billiger zu entwickeln und fast unendlich billiger pro Einheit zu produzieren als Hardware. X in Hardware auszuführen ist keine erfolgreiche Lösung, es sei denn, X kann in Software nicht effizient ausgeführt werden.

1
DepressedDaniel