Während des Einsteigerkurses in Hardware / Software-Schnittstelle und Betriebssystemen wird häufig die Frage aufgeworfen, ob es besser ist, einige Hardwareteile durch Software zu ersetzen und umgekehrt. Ich kann die Verbindung nicht herstellen.
Während des Einsteigerkurses in Hardware / Software-Schnittstelle und Betriebssystemen wird häufig die Frage aufgeworfen, ob es besser ist, einige Hardwareteile durch Software zu ersetzen und umgekehrt. Ich kann die Verbindung nicht herstellen.
Antworten:
Ich denke, der grundlegende Zusammenhang, den andere Antworten vermissen, ist folgender:
Bei einem Allzweckcomputer (z. B. einer CPU) kann man ihn so programmieren, dass er so ziemlich jede von uns definierte Berechnung ausführt. Spezialisierte 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.)
Wenn Sie alt genug sind, um sich an PC-Spiele Mitte bis Ende der 90er Jahre zu erinnern, erinnern Sie sich wahrscheinlich an FPS-Spiele wie Quake . Zunächst wurde die Software gerendert, dh die CPU führte die zum Rendern der Grafiken erforderlichen Berechnungen durch. In der Zwischenzeit musste die CPU auch eine Eingangsverarbeitung, eine Audioverarbeitung, eine AI-Verarbeitung usw. ausführen. Es 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. Es handelt sich in der Regel um eine sehr parallele Aufgabe, die viel mehr Kerne erfordert als eine moderne High-End-CPU (8).
Wir haben die Grafikverarbeitung von der Software auf die Hardware verlagert: Geben Sie den 3dfx 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 für die gleiche Arbeitsmenge bereit. Die Grafikkarten waren auch spezielle Hardware , die 3D-Grafiken viel schneller und mit mehr Funktionen als die CPU rendern konnte.
Schneller Vorlauf in die Neuzeit, und auf dem Desktop sind Grafiken ohne CPU erforderlich . Auch das Betriebssystem kann ohne GPU nicht funktionieren. Es ist so wichtig, dass CPUs jetzt tatsächlich GPUs integrieren. 1
Damals, als DVD brandneu war, konnten Sie ein DVD-Laufwerk in Ihrem Desktop-Computer installieren. Die CPUs der damaligen Zeit waren jedoch nicht leistungsfähig genug, um die DVD-Video- und Audio-Streams ruckelfrei zu decodieren. Für die Dekodierung war zunächst eine spezielle PCI-Karte erforderlich. Hierbei handelt es sich um spezielle Hardware, die speziell zum Dekodieren des DVD-Formats und sonst nichts entwickelt wurde. Ähnlich wie bei 3D-Grafiken wurden nicht nur mehr Rechenressourcen bereitgestellt, sondern auch speziell für diese Aufgabe entwickelt, um die DVD-Wiedergabe reibungslos zu gestalten.
Da CPUs immer leistungsstärker wurden, wurde es möglich, DVDs "in Software" zu dekodieren, was "auf einem Allzweckcomputer" bedeutet. Selbst bei einem weniger effizienten Prozessor waren die Geschwindigkeit und die Pipeline-Optimierung ausreichend, um die DVD-Wiedergabe den Erwartungen der Benutzer anzupassen.
Wir haben jetzt CPUs Hunderte oder sogar Tausende Male so mächtig 2 wie wir hatten , als DVDs eingeführt wurden. Als Blu-ray auf den Markt kam, benötigten wir keine spezielle Hardware, da die Universalhardware mehr als leistungsfähig genug war, um diese Aufgabe zu bewältigen.
Moderne Intel-CPUs verfügen über spezielle Anweisungen für die H.264- Codierung und -Decodierung. Dies ist Teil eines Trends, bei dem Allzweck-CPUs spezialisierte Funktionen auf demselben Chip erhalten. Wir benötigen keine separate PCI Express-Karte, um H.264 effizient zu decodieren, wie dies bei DVDs der Fall war, da CPUs ähnliche Schaltkreise enthalten.
1 GPU bezieht sich auf einen Prozessor, der speziell für grafische Berechnungen entwickelt wurde. Ältere 2D-Grafikkarten waren keine GPUs: Sie waren lediglich Framebuffer mit DACs, um mit dem Monitor zu kommunizieren. Der Unterschied besteht darin, dass GPUs spezialisierte Prozessoren enthalten, die sich bei bestimmten Arten von Berechnungen auszeichnen und im Laufe der Zeit tatsächlich selbst programmierbar sind (Shader). Grafikhardware enthielt immer die spezielle Schaltung, die erforderlich war, 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, die Berechnungen auf spezielle Hardware zu verlagern, irrelevant .
2 DVD-Video wurde 1997 veröffentlicht, zu einer Zeit, als der Pentium 2 auch neu auf den Markt kam. Dies war eine Zeit, in der die Leistung von CPUs rapide zunahm: Man könnte einen neuen P2-Computer mit einem DVD-Decoder in Betracht ziehen oder einen in einen etwas älteren P1 einbauen. Vergleichen Sie das mit einem modernen Core i7 der Generation 6, der die MIPS-Liste von Wikipedia verwendet , und eine moderne CPU ist zwischen 590 und 1.690 Mal schneller. Dies liegt zum Teil an der Taktrate, aber auch an der Verlagerung auf mehrere Kerne als Standard sowie an modernen CPUs, die pro Kern und Takt viel mehr Arbeit leisten. Ebenfalls relevant ist, dass Intel (das den Desktop- und den x86-Servermarkt beherrscht) im Zuge des technischen Fortschritts spezielle Anweisungen hinzufügt, um die von Desktop-Benutzern gewünschten Vorgänge (z. B. Videodekodierung) zu beschleunigen.
Ich bin überrascht, dass noch niemand eines der eklatantesten Beispiele erwähnt hat: softwaredefiniertes Radio.
Wenn Sie ein heutiges Smartphone etwa 50 Jahre zurücknehmen und es einem kompetenten Ingenieur ab Mitte der 1960er Jahre zeigen würden, wäre er in der Lage, das meiste davon zu 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 Speicher usw. als Computer der damaligen Zeit? Prüfen. Wurde eine Software geschrieben, die so komplexe Funktionen ausführen kann? Prüfen.
Aber sagen Sie dem kompetenten Ingenieur, dass dieses Paket im Übrigen eine Reihe äußerst effizienter Sender und empfindlicher Empfänger enthält: einen digitalen Streuspektrum-Transceiver, der auf mehreren Kanälen gleichzeitig senden und empfangen kann und mit einem möglicherweise kilometerweit entfernten Infrastrukturturm kommuniziert ; ein weiterer digitaler Transceiver, der Hochgeschwindigkeitsdaten mit einer Basisstation irgendwo im Gebäude überträgt; 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 einen Lügner nennen, weil er weiß, dass Empfänger mit einer derart hohen Empfindlichkeit nicht ohne eine Vielzahl von abgestimmten Schaltkreisen aufgebaut werden können, die benachbarte Sender herausfiltern und das interessierende Signal auswählen. Und dass solche Schaltungen Teile mit Größen erfordern, die mehr von der Physik als von der Technologie bestimmt werden, wie Kondensatoren und Induktivitäten.
Dann müsste man erklären, dass in einem modernen Radio das meiste in Software gemacht 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 nachfolgende Verarbeitung findet in einem digitalen Signalprozessor statt. All diese Abstimmung, diese Filterung, die früher eine Menge 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.
Dies ist meines Erachtens eines der eklatantesten Beispiele dafür, wie Software Hardware ersetzt. Aus diesem Grund haben wir Smartphones in der Tasche, die selbst für einen kompetenten Ingenieur aus den 1960er Jahren wie ein Zaubertrick wären.
Im Vergleich dazu erscheint die Idee, dass die einfache Logik eines Garagentoröffners, einer elektronischen Personenwaage oder einer TV-Fernbedienung heutzutage mit einem universellen Mikrocontroller und Software anstelle von kundenspezifischer Hardware umgesetzt wird, fast trivial (und es wäre sicherlich viel verständlicher für unseren hypothetischen Ingenieur aus den 1960er Jahren als softwaredefiniertes Radio.)
Betrachten Sie diese Schaltung:
Es ist ein Flip Flop, auch bekannt als bistabiler 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;
Es bedeutet genau, wie es sich anhört.
Ein besonders bekanntes Beispiel ist das von Steve Wozniak für den Apple II entwickelte Disk II-Laufwerk :
Die Hauptinnovation bestand darin, die Steuerung durch den Einsatz von Software kompakt zu machen, während sich die Wettbewerber auf Hardware verlassen mussten. Bill Fernandez, damals Elektroniker bei Apple, erinnert sich daran: "Der Hauptvorteil von [Wozniaks] Design war, dass es nur sechs statt der üblichen 60 bis 70 Chips verwendete
Ein weiteres Beispiel, mit dem Sie wahrscheinlich besser vertraut sind: Emulatoren. Sie ersetzen ganze Sätze von Hardware (und Software) vollständig in Software. CPUs, verschiedene Steuerchips, sogar Speichergeräte.
Jetzt können Sie nicht mehr die gesamte Hardware eliminieren, sondern benötigen irgendwann etwas, auf dem Sie die Software ausführen können. Im Allgemeinen kann jede Logikaufgabe, die Sie in Hardware implementieren können, auch in Software implementiert werden (die Leistung ist möglicherweise nicht identisch, langsamer, schneller oder in verschiedenen Situationen, abhängig von der zugrunde liegenden Hardware und der Implementierung).
Ein weiteres Gebiet, auf dem dies zutrifft, sind Synthesizer.
Frühe Synthesizer waren zu 100% analoge Hardware , die Wellenformen direkt generierten und dann über Schaltkreise (Filter, Verstärker usw.) modifizierten. Es war möglich, Ton digital zu synthetisieren, aber es erforderte Rechenressourcen , die sich der Durchschnittsbürger nicht leisten konnte (ein tatsächlicher Mainframe und kundenspezifische Digital-Analog-Wandler-Hardware).
Mit der Verbesserung der Chipherstellung wechselten die Synthesizer von reinen analogen zu Synthesizerchips, die von digitalen Signalen gesteuert werden, aber immer noch analoge Signale erzeugen, und dann zu reinen digitalen Synthesen (Sample-Wiedergabe, FM-Synthese , echte additive Synthese usw.).
Heutzutage sind Prozessoren so billig und schnell, dass Programmierer Computerversionen von klassischen analogen Synthesizern erstellen können, die das Verhalten der ursprünglichen Schaltkreise exakt nachbilden, indem sie ihr Verhalten in Echtzeit simulieren. Tatsächlich können Telefone und Tablets jetzt schnell genug ausgeführt werden führe diese Nachbildungen aus; Das Korg iMS-20 ist ein Beispiel.
Sowohl klassische als auch neue Synthesizer sind als VST- oder AU-Plug-Ins für digitale Audioprogramme wie Ableton Live, Logic oder Cubase verfügbar. Diese ermöglichen den Zugriff auf Synthesizer für Benutzer, die sonst keinen Platz und kein Geld zur Verfügung hätten Sie.
Edit: Ich sollte an dieser Stelle auch VCVRack erwähnen , das eine analoge modulare Synthese in Echtzeit simuliert. Ein ganzer Schritt vorwärts von mehrstündigen Renderzeiten für einige Sekunden Musik.
>:*3
.
Früher war der Schnitt ganz klar. Die meisten Dinge, die eine schnelle Ausführung erforderten, mussten in Hardware implementiert werden. Nehmen wir zum Beispiel einen Multivibrator, der eine Frequenz erzeugt. Vor nicht allzu langer Zeit brauchten Sie ein paar Transistoren, Kondensatoren und eventuell einen Quarz, um eine (feste) Frequenz zu erzeugen. Jetzt gibt es billige Mikrocontroller, die nur ein paar Cent oder so kosten. Da sie so schnell sind, können Sie sie leicht verwenden, um einen Multivibrator zu erstellen. Darüber hinaus können Sie per Software einfach steuern, welche Frequenz an welcher Stelle früher unterschiedliche Hardware gelötet werden musste. 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 Tatsächlich ist "Software kann Hardware ersetzen" nicht richtig. 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. Daher sollte der Begriff "Hardware kann jetzt Software verstehen" lauten.
Ein Vergleich zwischen dem Arcade-Spiel Tank (um 1976) und dem Heimkonsolenspiel Combat (1977) liefert ein schönes Beispiel dafür, wie Software bereits vor 40 Jahren Hardware ersetzen konnte.
Das Arcade-Spiel Tank (um 1976) ermöglichte es zwei Spielern, Panzer zu umrunden und aufeinander zu schießen. Es enthielt keinen Prozessor, sondern Hardware-Zähler, mit denen die horizontale und vertikale Position des Elektronenstrahls, der Panzer und Schüsse sowie die Punktzahlen, Drehwinkel und die verstrichene Zeit des Spielers verfolgt werden konnten. Es gab eine festverdrahtete Logik, um die Bitmap-Daten auszugeben, die den Punktzahlen, den Panzerformen der Spieler und dem Hintergrund zugeordnet 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 breites Tief zu halten und auszutakten Grafikmuster für das Spielfeld sowie zwei hochauflösende 8-Bit-Muster, Latch-Farben für die Player, den Hintergrund und das Spielfeld und Erkennung von Kollisionen zwischen den verschiedenen Objekten. Es enthielt auch einen programmierbaren Allzweck-Timer, aber die Hardware hatte nur wenig anderes als die oben genannten. Obwohl die Hardware viel einfacher ist als die des Panzerspiels, ermöglicht es der 2K ROM Cartridge Combat dem 2600, dasselbe Grundspiel zu spielen, jedoch mit vielen anderen Funktionen (verschiedene Fahrzeuge und Hintergründe, Bouncing Shots usw.), weil es kann den größten Teil des Arcade-Automaten ersetzen s Hardware mit Software. Interessanterweise ist der Atari 2600, obwohl er wahrscheinlich die zweiteinfachste Hardwareplattform aller im Handel erhältlichen Heimvideospielsysteme auf Mikroprozessorbasis ist, so gut konzipiert, dass er das Ersetzen von Hardware durch Software erleichtert und bei korrekter Programmierung viele Kreise umlaufen kann seine Konkurrenten.
Der Ausdruck "Software kann Hardware ersetzen" warnt davor, Probleme mit Hardware zu lösen, es sei denn, es gibt eindeutige Vorteile. Die Entwicklung von Software ist 10- bis 50-mal billiger und die Produktion pro Einheit fast unendlich billiger als die von Hardware. X in Hardware zu machen, wird keine gewinnbringende Lösung sein, es sei denn, X kann in Software nicht wirklich effizient durchgeführt werden.
Die Nuance wurde gut angegangen, aber ich denke, es ist möglich, dass der Stolperstein für OP ist, dass es so gut wie nicht möglich ist, Hardware durch Software zu ersetzen. Bei der "Hardware" handelt es sich ausnahmslos um erheblich weniger "Hardware" als bei der "Software" -Lösung.
Der Unterschied besteht darin, dass die Logik eines Prozesses / Algorithmus / einer Berechnung zwischen Hardware und Software verschoben werden kann. Es wurden viele Beispiele angeführt, daher werde ich nicht näher darauf eingehen.
In früheren Computern mit virtuellem Speicher mussten Sie bei einem TLB-Fehler einen Taskwechsel durchführen, um einen neuen Seiteneintrag zu laden. Ein Teil der Betriebssystemsoftware findet den richtigen Prozess, durchsucht die Seitentabellen, findet den richtigen Eintrag und schreibt ihn in den TLB zurück. Bevor Sie zum ursprünglichen Vorgang zurückkehren, fahren Sie fort.
Jetzt verwenden die meisten CPUs Hardware, um den Prozess durchzuführen, die Seitentabelle zu lesen, die Seitentabellen zu durchsuchen und den TLB zu aktualisieren.
Bei beiden Methoden muss Software zum Behandeln von Seitenfehlern verwendet werden, aber da TLB-Fehler die Anzahl der Seitenfehler deutlich übersteigen, übertrifft die Hardware die Software immer noch.
Wenn Sie eine einfache Prozedur haben, die Sie wiederholt ausführen müssen, finden Sie im Allgemeinen einen Hardware-Ersatz. Wenn Sie eine komplexe Hardwarelösung mit einem komplizierten Steuerungsablauf haben, können Sie die Hardware mithilfe von Software vereinfachen.
Es gibt viele Fälle, in denen Software Hardware ersetzen kann und umgekehrt.
Ein klassisches Beispiel hierfür ist eine Mathe-Nachschlagetabelle. Anstatt die Ergebnisse jedes Mal in gebräuchlichen Ausdrücken zu berechnen, werden sie intern in Ihrem Mathe-Co-Prozessor gespeichert und bei Bedarf einfach referenziert.
Die meisten kennen wahrscheinlich bereits Audiofilter und Software, die echte Instrumente und Geräte wie Pedale oder Verstärker imitieren kann.
Jede Hardware, die virtuell erstellt werden kann, wird verwendet, wenn sie schneller und / oder billiger ist als die physische Entsprechung.
In der Buchhaltung kann jetzt beispielsweise eine gedruckte Rechnungskopie elektronisch verschickt werden, und die Software beginnt zunehmend, den Eingang derartiger Papiere und deren Verarbeitung zu verwalten. Es ist ein hervorragendes Beispiel dafür, wie Hardware durch Software ersetzt wird.