Gli esperti di software hanno ignorato l'economia dell'hardware
... o "Moore aveva ragione e avevano entrambi torto"
La cosa più grande che è stata trascurata in questo dibattito è stato l'impatto della tecnologia di produzione della CPU e dell'economia, guidata dalla riduzione delle dimensioni dei transistor come espresso nella Legge di Moore (non sorprende come se sapessero molto sull'hardware della CPU, questi ragazzi hanno studiato e discusso di software, non Produzione di CPU o economia). I costi di produzione fissi che sono ammortizzati sulla CPU (ad es. Progettazione ISA, progettazione della CPU e strutture di produzione della CPU) sono cresciuti rapidamente, aumentando così il valore delle economie di scala; con i costi della CPU per unità (in termini di "bang for the buck" e "bang for the watt"), il costo di una CPU non deve essere ammortizzato su una così ampia selezione di funzioni per fornire valore, quindi il calcolo dei prodotti con funzione fissa è esplosa; I budget dei transistor CPU sono cresciuti esponenzialmente,
1. La scala della CPU vince sulla diversità della CPU
L'importanza delle economie di scala ha reso i vantaggi di un ISA / CPU rivolto a un mercato più ampio (quindi più ampio) supera i potenziali benefici delle scelte di progettazione che restringono il mercato di un ISA / CPU. I sistemi operativi possono rivolgersi a porzioni sempre più grandi del mercato per ISA / CPU supportate, quindi non c'è bisogno (o addirittura non c'è bisogno) di esercizi di porting per consentire a un ecosistema di sistemi operativi di prosperare. I domini problematici Gli obiettivi di ISA e CPU tendono ad essere così ampi che si sovrappongono per lo più, quindi per qualsiasi software al di fuori di un compilatore, anche la dimensione degli esercizi di porting è diminuita. Probabilmente, sia Torvalds che Tanenbaumsopravvalutato la parte di progettazione e implementazione del kernel che ora deve essere ISA o specifica della CPU. Come descritto da Tanenbaum, i moderni kernel del sistema operativo eliminano le distinzioni tra CPU e ISA. Tuttavia, il codice specifico CPU / ISA nei moderni sistemi operativi è molto più piccolo di un microkernel. Invece di implementare la gestione / pianificazione degli interrupt, la gestione della memoria, la comunicazione e l'I / O, questi bit non portatili affrontano solo una piccola parte dell'implementazione di tali servizi, con la maggior parte dell'architettura anche di queste funzioni del sistema operativo principale portatili.
2. Open Source ha vinto la battaglia, ma ha perso la guerra
Un maggiore rapporto qualità-prezzo significa che una quota maggiore di elaborazione viene eseguita da prodotti a funzione fissa, in cui la capacità di modificare il prodotto non fa parte della proposta di valore per il cliente. Ironia della sorte, l'open source è fiorito in questi dispositivi a funzione fissa, ma il più delle volte, i benefici di quelle libertà sono stati realizzati più da coloro che producono i prodotti piuttosto che dagli utenti finali (che in realtà era vero anche per il mercato del software di allora: Microsoft era un grande consumatore di software open source, ma i loro clienti non lo erano). Allo stesso modo, si potrebbe sostenere che l'open source ha lottato più nello spazio desktop per scopi generici che in qualsiasi altro luogo, ma poiché il web e il cloud computing sono cresciuti, il desktop computing è stato sempre più utilizzato per uno scopo più ristretto (principalmente eseguendo un browser), con le restanti funzioni in esecuzione nel cloud (ironicamente, principalmente su piattaforme open source). In breve: l'open source possiede davvero lo spazio di elaborazione per scopi generici, ma il mercato è diventato più sofisticato; il confezionamento dei prodotti informatici si arresta meno spesso alla funzione generale, ma prosegue con il prodotto destinato a funzioni fisse, dove gran parte del vantaggio dell'elaborazione open source è in conflitto con gli obiettivi del prodotto.
3. 2 n Mezzi di crescita fissi k I risparmi non sono importanti
La crescita esponenziale dei budget dei transistor ha portato alla realizzazione che il costo del budget dei transistor di un'architettura CISC è quasi completamente fissato. Il vantaggio strategico di RISC era che spostava la complessità fuori dal set di istruzioni della CPU e nel compilatore (senza dubbio in parte motivato dal fatto che gli autori di compilatori beneficiavano molto meno di ISA complessi rispetto agli sviluppatori umani che codificavano in assembly, ma i compilatori potevano ragionare molto più facilmente matematicamente su, e quindi sfruttare, un ISA più semplice); il conseguente risparmio di transistor potrebbe quindi essere applicato per migliorare le prestazioni della CPU. L'avvertenza era che i risparmi sul budget dei transistor da un ISA più semplice erano per lo più corretti (e anche i costi generali nella progettazione del compilatore erano per lo più corretti). Mentre questo impatto fisso era un grosso pezzo del budget nel corso della giornata, come si può immaginare, bastano pochi round di crescita esponenziale affinché l'impatto diventi banale. Questo impatto in rapido declino combinato con la già menzionata importanza crescente della monocoltura della CPU ha significato una finestra molto piccola di opportunità per qualsiasi nuovo ISA di affermarsi. Anche laddove i nuovi ISA hanno avuto successo, i moderni ISA "RISC" non sono gli ISA ortogonali descritti dalla strategia RISC, poiché la continua crescita dei budget dei transistor e l'applicabilità più ampia dell'elaborazione SIMD in particolare hanno incoraggiato l'adozione di nuove istruzioni ottimizzate per funzioni specifiche. Questo impatto in rapido declino combinato con la già menzionata importanza crescente della monocoltura della CPU ha significato una finestra molto piccola di opportunità per qualsiasi nuovo ISA di affermarsi. Anche laddove i nuovi ISA hanno avuto successo, i moderni ISA "RISC" non sono gli ISA ortogonali descritti dalla strategia RISC, poiché la continua crescita dei budget dei transistor e l'applicabilità più ampia dell'elaborazione SIMD in particolare hanno incoraggiato l'adozione di nuove istruzioni ottimizzate per funzioni specifiche. Questo impatto in rapido declino combinato con la già menzionata importanza crescente della monocoltura della CPU ha significato una finestra molto piccola di opportunità per qualsiasi nuovo ISA di affermarsi. Anche laddove i nuovi ISA hanno avuto successo, i moderni ISA "RISC" non sono gli ISA ortogonali descritti dalla strategia RISC, poiché la continua crescita dei budget dei transistor e l'applicabilità più ampia dell'elaborazione SIMD in particolare hanno incoraggiato l'adozione di nuove istruzioni ottimizzate per funzioni specifiche.
4. Semplice: separazione delle preoccupazioni. Complesso: separazione dello spazio degli indirizzi.
Il moderno kernel Linux (insieme alla maggior parte degli altri kernel) si adatta alla definizione piuttosto libera di un macrokernel e non alla definizione piuttosto che stretta di un microkernel. Detto questo, con la sua architettura di driver, i moduli caricati dinamicamente e le ottimizzazioni multiprocessore che fanno sì che le comunicazioni nello spazio del kernel assomiglino sempre più al passaggio di un messaggio di microkernel, la sua struttura assomiglia più a un design di microkernel (come incarnato da Minix) rispetto al design di macrokernel (come incarnato dal design di Linux al momento della discussione). Come una progettazione di microkernel, il kernel Linux fornisce comunicazione, pianificazione, gestione degli interrupt e gestione della memoria generalizzati per tutti gli altri componenti del sistema operativo; i suoi componenti tendono ad avere codice e strutture dati distinti. Mentre i moduli vengono caricati dinamicamente, pezzi di codice portatile liberamente accoppiati, che comunicano attraverso interfacce fisse, non impiegano una proprietà rimanente di microkernel: non sono processi spaziali dell'utente. Alla fine, la legge di Moore ha assicurato che i problemi motivati da problemi hardware come la portabilità (una preoccupazione di Tanenbaum) e le prestazioni (una preoccupazione di Torvalds) sono diminuiti, ma i problemi di sviluppo del software sono diventati di fondamentale importanza. I rimanenti vantaggi non realizzati che una separazione degli spazi di indirizzi potrebbe fornire sono compensati dal bagaglio aggiuntivo imposto al software del sistema operativo a causa delle limitazioni di progettazione e della maggiore complessità delle interfacce dei componenti. La legge ha assicurato che i problemi motivati da problemi hardware come la portabilità (una preoccupazione di Tanenbaum) e le prestazioni (una preoccupazione di Torvalds) sono diminuiti, ma i problemi di sviluppo del software sono diventati di fondamentale importanza. I rimanenti vantaggi non realizzati che una separazione degli spazi di indirizzi potrebbe fornire sono compensati dal bagaglio aggiuntivo imposto al software del sistema operativo a causa delle limitazioni di progettazione e della maggiore complessità delle interfacce dei componenti. La legge ha assicurato che i problemi motivati da problemi hardware come la portabilità (una preoccupazione di Tanenbaum) e le prestazioni (una preoccupazione di Torvalds) sono diminuiti, ma i problemi di sviluppo del software sono diventati di fondamentale importanza. I rimanenti vantaggi non realizzati che una separazione degli spazi di indirizzi potrebbe fornire sono compensati dal bagaglio aggiuntivo imposto al software del sistema operativo a causa delle limitazioni di progettazione e della maggiore complessità delle interfacce dei componenti.
È interessante notare che ciò che è stato una tendenza forte è l'emergere dell'hypervisor, che molto simile ai microkernel, estrae l'hardware. Alcuni sostengono che gli hypervisor siano micro kernel. L'architettura dell'hypervisor è diversa, poiché le responsabilità che appartengono ai micro kernel sono gestite dai kernel "guest" posti in cima, con multiplex hypervisor tra loro, e l'astrazione dell'hypervisor non è la messaggistica generica e lo spazio degli indirizzi di memoria, ma l'emulazione hardware prevalentemente reale.
In conclusione: il futuro favorisce coloro che adottano la semantica meno rigorosa
* .. o "i nitpicker fanno schifo nel predire il futuro"
In pratica, molta della correttezza / erroneità nel dibattito è una questione di semantica (e questo faceva parte di ciò che Torvalds stava discutendo e l'IMHO Tanenbaum non ha pienamente apprezzato). È difficile fare definizioni precise sul futuro perché ci sono così tanti fattori al di fuori dell'argomento che possono entrare in gioco; semantica più libera significa che le tue previsioni sono un bersaglio più grande sul bersaglio rispetto a quello dell'altro ragazzo, dandoti probabilità migliori. Se si ignora la semantica, gli argomenti avanzati sia da Torvalds che da Tanenbaum avevano ragione su molte cose e sbagliato su molto poco.
tl; dr
La maggior parte degli ISA non si adatta alla definizione semantica di RISC, ma sfrutta la maggior parte dei vantaggi di progettazione che all'epoca erano distintivi delle CPU RISC; la quantità di SO specifica per CPU è inferiore a quanto previsto da Tanenbaum, figuriamoci Torvalds; l'open source domina il computing per scopi generici, ma i consumatori di quel mercato sono ora principalmente coloro che confezionano il computing in prodotti con funzioni più fisse in cui non viene realizzato gran parte del vantaggio del software open source; la separazione della funzione del sistema operativo attraverso gli spazi degli indirizzi non si è rivelata vantaggiosa, ma la separazione della funzione del sistema operativo attraverso l'hardware "virtuale" ha. Se vuoi affermare che le tue previsioni si sono rivelate giuste, lasciati il maggior spazio di manovra semantico possibile, proprio come il signor Torvalds.
PS Un'ultima ironica osservazione: Linus Torvalds è uno dei più forti sostenitori di mantenere quante più nuove funzionalità possibili nello spazio utente e fuori dal kernel di Linux.