Software-Experten ignorierten die Wirtschaftlichkeit der Hardware
... oder "Moore hatte Recht und beide lagen falsch"
Die größte Sache, die in dieser Debatte übersehen wurde, war die Auswirkung der CPU-Herstellungstechnologie und -ökonomie, die durch die Verkleinerung der Transistorgrößen gemäß Moores Gesetz verursacht wurde (nicht überraschend, als ob sie viel über CPU-Hardware wüssten, diese Leute untersuchten und diskutierten Software, nicht CPU-Fertigung oder Wirtschaftlichkeit). Feste Herstellungskosten, die über die CPU amortisiert werden (z. B. ISA-Design, CPU-Design und CPU-Produktionsanlagen), sind schnell gestiegen, wodurch sich der Wert von Skaleneffekten erhöht. Da die CPU-Kosten pro Einheit (in Form von "Bang for the Buck" und "Bang for the Watt") sinken, müssen die Kosten einer CPU nicht über eine so breite Auswahl an Funktionen amortisiert werden, um einen Mehrwert zu erzielen mit fester Funktion ist explodiert; Das Budget für CPU-Transistoren ist exponentiell gewachsen.
1. CPU-Skalierung gewinnt über die CPU-Vielfalt
Die Bedeutung von Skaleneffekten hat dazu geführt, dass die Vorteile eines ISA / CPU, der auf einen größeren (daher breiteren) Markt abzielt, die potenziellen Vorteile von Entwurfsentscheidungen überwiegen, die den Markt für einen ISA / CPU einschränken. Betriebssysteme können immer größere Teile des Marktes pro unterstütztem ISA / CPU adressieren, sodass Portierungsübungen kaum (oder gar nicht erforderlich) sind, damit ein Betriebssystem gedeihen kann. Die Zielbereiche von ISA und CPU sind in der Regel so weit gefasst, dass sie sich größtenteils überschneiden. Daher hat sich für jede Software außerhalb eines Compilers der Umfang der Portierungsübungen ebenfalls verringert. Wohl beide, Torvalds & TanenbaumDer Teil des Kernel-Designs und der Implementierung, der jetzt ISA- oder sogar CPU-spezifisch sein muss, wurde überschätzt. Wie Tanenbaum beschrieben hat, abstrahieren moderne Betriebssystemkerne die Unterschiede zwischen CPUs und ISAs. Der CPU / ISA-spezifische Code in modernen Betriebssystemen ist jedoch viel kleiner als ein Mikrokernel. Anstatt Interrupt-Handling / Scheduling, Speicherverwaltung, Kommunikation und E / A zu implementieren, adressieren diese nicht portierbaren Bits nur einen winzigen Bruchteil der Implementierung dieser Dienste, wobei die überwiegende Mehrheit der Architektur selbst dieser Kernbetriebssystemfunktionen portierbar ist.
2. Open Source hat die Schlacht gewonnen, aber den Krieg verloren
Mehr Aufwand bedeutet, dass ein größerer Anteil der Datenverarbeitung von Produkten mit fester Funktion ausgeführt wird, bei denen die Fähigkeit, das Produkt zu modifizieren, nicht Teil des Wertversprechens für den Kunden ist. Ironischerweise hat Open Source in diesen Geräten mit festen Funktionen eine Blütezeit erlebt, aber meistens werden die Vorteile dieser Freiheiten eher von den Herstellern der Produkte als von den Endbenutzern genutzt (was auf dem damaligen Softwaremarkt tatsächlich zutrifft: Microsoft war ein großer Verbraucher von Open-Source-Software, aber ihre Kunden waren nicht). In ähnlicher Weise könnte man argumentieren, dass Open Source im allgemeinen Desktop-Bereich mehr Probleme hat als anderswo, aber mit zunehmendem Web- und Cloud-Computing wurde Desktop-Computing zunehmend zu einem engeren Zweck eingesetzt (hauptsächlich zum Ausführen eines Browsers). Die restlichen Funktionen laufen in der Cloud (ironischerweise hauptsächlich auf Open-Source-Plattformen). Kurz gesagt: Open Source besitzt tatsächlich den Allzweck-Computerraum, aber der Markt ist komplexer geworden. Die Produktverpackung hört seltener bei der Allzweckfunktion auf, fährt aber mit dem Produkt fort, das für feste Funktionen vorgesehen ist, bei denen ein Großteil des Vorteils von Open Source Computing im Widerspruch zu den Produktzielen steht.
3. 2 n Wachstumsmittel fest k Einsparungen sind nicht wichtig
Das exponentielle Wachstum der Transistorbudgets hat die Erkenntnis gebracht, dass die Transistorbudgetkosten einer CISC-Architektur fast vollständig festgelegt sind. Der strategische Vorteil von RISC bestand darin, dass die Komplexität aus dem Befehlssatz der CPU in den Compiler verlagert wurde (zweifellos teilweise begründet durch die Tatsache, dass Compiler-Autoren weit weniger von komplexen ISAs profitierten als menschliche Entwickler, die in Assembler codieren, aber Compiler viel einfacher argumentieren konnten mathematisch über eine einfachere ISA (und daher ausnutzen); Die daraus resultierenden Transistoreinsparungen könnten dann zur Verbesserung der CPU-Leistung eingesetzt werden. Die Einschränkung bestand darin, dass die Einsparungen beim Transistorbudget durch eine einfachere ISA größtenteils behoben wurden (und der Overhead beim Compilerdesign wurde größtenteils ebenfalls behoben). Während diese festen Auswirkungen früher einen großen Teil des Budgets ausmachten, Wie man sich vorstellen kann, dauert es nur ein paar Runden exponentiellen Wachstums, bis der Einfluss trivial wird. Diese rapide abnehmenden Auswirkungen in Verbindung mit der bereits erwähnten rapide zunehmenden Bedeutung der CPU-Monokultur boten jedem neuen ISA eine sehr kleine Chance, sich zu etablieren. Selbst wenn neue ISAs erfolgreich waren, sind moderne "RISC" -ISAs nicht die in der RISC-Strategie beschriebenen orthogonalen ISAs, da ein kontinuierliches Wachstum der Transistorbudgets und eine breitere Anwendbarkeit der SIMD-Verarbeitung insbesondere die Annahme neuer, auf bestimmte Funktionen abgestimmter Anweisungen ermutigt hat. Diese rapide abnehmenden Auswirkungen in Verbindung mit der bereits erwähnten rapide zunehmenden Bedeutung der CPU-Monokultur boten jedem neuen ISA eine sehr kleine Chance, sich zu etablieren. Selbst wenn neue ISAs erfolgreich waren, sind moderne "RISC" -ISAs nicht die in der RISC-Strategie beschriebenen orthogonalen ISAs, da ein kontinuierliches Wachstum der Transistorbudgets und eine breitere Anwendbarkeit der SIMD-Verarbeitung insbesondere die Annahme neuer, auf bestimmte Funktionen abgestimmter Anweisungen ermutigt hat. Diese rapide abnehmenden Auswirkungen in Verbindung mit der bereits erwähnten rapide zunehmenden Bedeutung der CPU-Monokultur boten jedem neuen ISA eine sehr kleine Chance, sich zu etablieren. Selbst wenn neue ISAs erfolgreich waren, sind moderne "RISC" -ISAs nicht die in der RISC-Strategie beschriebenen orthogonalen ISAs, da ein kontinuierliches Wachstum der Transistorbudgets und eine breitere Anwendbarkeit der SIMD-Verarbeitung insbesondere die Annahme neuer, auf bestimmte Funktionen abgestimmter Anweisungen ermutigt hat.
4. Einfach: Trennung von Bedenken. Komplex: Trennung des Adressraums.
Der moderne Linux-Kernel passt (wie die meisten anderen Kernel) zur eher losen Definition eines Makrokerns und nicht zur eher engen Definition eines Mikrokerns. Mit seiner Treiberarchitektur, dynamisch geladenen Modulen und Multiprozessor-Optimierungen, die die Kernel-Space-Kommunikation immer mehr an das Message-Passing eines Mikrokerns erinnern, ähnelt seine Struktur jedoch eher einem Mikrokernel-Design (wie es in Minix enthalten ist) als dem Makrokernel-Design (wie es in Linux enthalten ist) zum Zeitpunkt der Diskussion). Wie ein Mikrokernel-Design bietet der Linux-Kernel eine allgemeine Kommunikation, Zeitplanung, Interrupt-Behandlung und Speicherverwaltung für alle anderen Betriebssystemkomponenten. Seine Komponenten haben in der Regel unterschiedliche Code- und Datenstrukturen. Während Module dynamisch geladen werden, Locker gekoppelte Teile von portablem Code, die über feste Schnittstellen kommunizieren, nutzen keine verbleibende Eigenschaft von Mikrokernen: Sie sind keine User-Space-Prozesse. Am Ende sorgte Moores Gesetz dafür, dass Probleme, die durch Hardwareprobleme wie Portabilität (ein Anliegen von Tanenbaum) und Leistung (ein Anliegen von Torvalds) motiviert waren, abnahmen, aber Fragen der Softwareentwicklung wurden von größter Bedeutung. Die verbleibenden nicht realisierten Vorteile, die eine Trennung von Adressräumen bieten könnte, werden durch das zusätzliche Gepäck aufgewogen, das der Betriebssystemsoftware aufgrund von Designbeschränkungen und einer erhöhten Komplexität der Komponentenschnittstellen auferlegt wird. Das Gesetz sorgte dafür, dass Probleme, die durch Hardwareprobleme wie Portabilität (ein Anliegen von Tanenbaum) und Leistung (ein Anliegen von Torvalds) motiviert waren, abnahmen, während Probleme bei der Softwareentwicklung von größter Bedeutung wurden. Die verbleibenden nicht realisierten Vorteile, die eine Trennung von Adressräumen bieten könnte, werden durch das zusätzliche Gepäck aufgewogen, das der Betriebssystemsoftware aufgrund von Designbeschränkungen und einer erhöhten Komplexität der Komponentenschnittstellen auferlegt wird. Das Gesetz sorgte dafür, dass Probleme, die durch Hardwareprobleme wie Portabilität (ein Anliegen von Tanenbaum) und Leistung (ein Anliegen von Torvalds) motiviert waren, abnahmen, während Fragen der Softwareentwicklung von größter Bedeutung wurden. Die verbleibenden nicht realisierten Vorteile, die eine Trennung von Adressräumen bieten könnte, werden durch das zusätzliche Gepäck aufgewogen, das der Betriebssystemsoftware aufgrund von Designbeschränkungen und einer erhöhten Komplexität der Komponentenschnittstellen auferlegt wird.
Interessanterweise , was hat sich ein starker Trend ist die Entstehung des Hypervisors, die ähnlich wie Mikrokerne, die Hardware abstrahiert werden. Einige behaupten, Hypervisoren seien Mikrokerne. Die Hypervisor-Architektur ist jedoch anders, da die Zuständigkeiten der Mikrokerne von den "Gast" -Kernen übernommen werden, die sich über mehrere Hypervisoren befinden, und die Hypervisor-Abstraktion kein generischer Messaging- und Speicheradressraum ist, sondern vorwiegend die tatsächliche Hardware-Emulation.
Fazit: Die Zukunft bevorzugt diejenigen, die die strengste Semantik anwenden
* .. oder "Nitpicker saugen an der Vorhersage der Zukunft"
In der Praxis ist ein Großteil der Richtigkeit / Falschheit in der Debatte eine Frage der Semantik (und das war ein Teil dessen, was Torvalds argumentierte und IMHO Tanenbaum nicht in vollem Umfang einschätzte). Es ist schwierig, genaue Definitionen für die Zukunft zu erstellen, da es außerhalb des Arguments so viele Faktoren gibt, die eine Rolle spielen können. Eine lockerere Semantik bedeutet, dass Ihre Vorhersagen ein größeres Ziel auf der Dartscheibe sind als die der anderen, wodurch Sie bessere Chancen haben. Wenn Sie die Semantik ignorieren, waren die von Torvalds und Tanenbaum vorgebrachten Argumente in Bezug auf viele Dinge richtig und in Bezug auf sehr wenig falsch.
tl; dr
Die meisten ISAs passen nicht zur semantischen Definition von RISC, sondern nutzen die meisten Designvorteile, die zu dieser Zeit für RISC-CPUs typisch waren. Die Anzahl der prozessorspezifischen Betriebssysteme ist geringer als von Tanenbaum erwartet, geschweige denn von Torvalds. Open Source dominiert das Allzweck-Computing, aber die Konsumenten dieses Marktes sind heute in erster Linie diejenigen, die Computing in Produkte mit fester Funktion einbinden, bei denen ein Großteil des Nutzens von Open Source-Software nicht realisiert wird. Die Aufteilung der Betriebssystemfunktionen auf Adressräume erwies sich nicht als vorteilhaft, die Aufteilung der Betriebssystemfunktionen auf "virtuelle" Hardware jedoch als hilfreich. Wenn Sie behaupten möchten, Ihre Vorhersagen hätten sich als richtig erwiesen, lassen Sie sich wie Mr. Torvalds so viel semantischen Spielraum wie möglich.
PS Eine letzte ironische Beobachtung: Linus Torvalds ist einer der stärksten Befürworter, so viele neue Funktionen wie möglich im Benutzerraum und außerhalb des Linux-Kernels zu belassen.