Studiando il corso per principianti sull'interfaccia hardware / software e sui sistemi operativi, spesso emerge l'argomento se sarebbe meglio sostituire alcune parti hardware con software e viceversa. Non riesco a stabilire la connessione.
Studiando il corso per principianti sull'interfaccia hardware / software e sui sistemi operativi, spesso emerge l'argomento se sarebbe meglio sostituire alcune parti hardware con software e viceversa. Non riesco a stabilire la connessione.
Risposte:
Penso che la connessione fondamentale che mancano altre risposte sia questa:
Dato un computer generico (ad esempio una CPU), è possibile programmarlo per eseguire praticamente qualsiasi calcolo che abbiamo definito. Tuttavia, hardware specializzato può offrire prestazioni migliori o non fornire alcun valore.
(questa risposta è focalizzata sull'elaborazione desktop e utilizza esempi di quel dominio)
Se sei abbastanza grande da ricordare i giochi per PC dalla metà alla fine degli anni '90, probabilmente ricordi i giochi FPS come Quake . È iniziato con il "rendering del software", il che significa che la CPU ha eseguito i calcoli necessari per eseguire il rendering della grafica. Nel frattempo, la CPU doveva anche eseguire l'elaborazione di input, elaborazione audio, elaborazione AI, ecc. Era molto faticoso per le risorse della CPU. Inoltre, l'elaborazione grafica non è adatta a una CPU tradizionale (allora o adesso). Tende ad essere un'attività molto parallela, che richiede molti più core di persino una moderna CPU di fascia alta (8).
Abbiamo spostato l'elaborazione grafica dal software all'hardware: inserisci 3dfx Voodoo e Nvidia TNT (ora GeForce ). Queste erano schede grafiche specializzate che scaricavano l'elaborazione dalla CPU alla GPU. Questo non solo ha diffuso il carico di lavoro, fornendo più risorse di elaborazione per fare la stessa quantità di lavoro, ma le schede grafiche erano hardware specializzato che poteva rendere la grafica 3D molto più veloce e con più funzionalità di quante ne potesse fare la CPU.
Avanzamento veloce verso l'era moderna e sul desktop sono richiesti elementi grafici senza CPU . Anche il sistema operativo non può funzionare senza una GPU. È così importante che ora le CPU integrino effettivamente le GPU. 1
Quando il DVD era nuovo di zecca, era possibile installare un'unità DVD sul computer desktop. Tuttavia, le CPU del giorno non erano abbastanza potenti per decodificare i flussi video e audio del DVD senza balbettare. Inizialmente, era necessaria una scheda PCI specializzata per eseguire la decodifica. Si trattava di un hardware specializzato creato appositamente per decodificare il formato DVD e nient'altro. Proprio come con la grafica 3D, non solo ha fornito più risorse di elaborazione, ma è stato creato su misura per l'attività, rendendo la riproduzione del DVD fluida.
Man mano che le CPU diventavano molto più potenti, divenne possibile decodificare i DVD "nel software", che significa "su un computer generico". Anche con un processore meno efficiente, aveva abbastanza velocità raw e ottimizzazioni della pipeline per far funzionare la riproduzione DVD secondo le aspettative degli utenti.
Ora abbiamo CPU centinaia o addirittura migliaia di volte più potenti 2 , come abbiamo avuto quando sono stati introdotti i DVD. Quando è arrivato il Blu-ray, non abbiamo mai avuto bisogno di hardware specializzato, perché l'hardware generico era più che abbastanza potente da gestire l'attività.
Le moderne CPU Intel hanno istruzioni specializzate per la codifica e decodifica H.264 . Questo fa parte di una tendenza in cui le CPU per scopi generici stanno guadagnando funzioni specializzate, tutte nello stesso chip. Non abbiamo bisogno di una scheda PCI Express separata per decodificare H.264 in modo efficiente come con i DVD, poiché le CPU contengono circuiti simili.
1 GPU si riferisce a un processore appositamente progettato per eseguire calcoli grafici. Le vecchie schede grafiche 2D non erano GPU: erano semplicemente framebuffer con DAC per parlare al monitor. La differenza è che le GPU contengono processori specializzati che eccellono in alcuni tipi di calcoli e, con il passare del tempo, ora sono effettivamente programmabili (shader). L'hardware grafico ha sempre contenuto i circuiti specializzati necessari per convertire i dati in un framebuffer in un formato che può essere emesso attraverso un cavo (VGA, DVI, HDMI, DisplayPort) e compreso da un monitor. Ciò è irrilevante per la discussione sull'offload dei calcoli su hardware specializzato.
2 DVD-Video è stato rilasciato nel 1997, in un momento in cui anche il Pentium 2 è stato appena rilasciato. Questo era un momento in cui le CPU aumentavano rapidamente di potenza: si poteva prendere in considerazione un nuovo computer P2 con un decodificatore DVD o installarne uno in un P1 leggermente più vecchio. Confrontalo con un Core i7 di nuova generazione 6 utilizzando l'elenco di MIPS di Wikipedia e una CPU moderna è ovunque tra 590 e 1.690 volte più veloce. Ciò è dovuto in parte alla velocità di clock, ma anche al passaggio a più core come standard e alle moderne CPU che fanno molto più lavoro per core per clock tick. Altrettanto rilevante è che mentre la tecnologia avanza, Intel (che domina il mercato dei server desktop e x86) aggiunge istruzioni specializzate per accelerare le operazioni che gli utenti desktop vogliono fare (ad es. Decodifica video).
Sono sorpreso che nessuno abbia menzionato ancora uno degli esempi più eclatanti: la radio definita dal software.
Se riprendessi uno smartphone attuale indietro nel tempo di circa 50 anni e lo mostrassi a un ingegnere competente dalla metà degli anni '60, sarebbe in grado di comprenderne la maggior parte. Che un supercomputer può essere ridotto a qualcosa che sta in tasca? Dai un'occhiata. Che puoi avere l'equivalente di un televisore a colori di altissima qualità nella confezione? Dai un'occhiata. Che è molto più veloce, ha molto più spazio di archiviazione, ecc. Rispetto ai computer dell'epoca? Dai un'occhiata. Quel software è stato scritto in grado di svolgere funzioni così complesse? Dai un'occhiata.
Ma dì a quell'ingegnere competente che oh, a proposito, questo pacchetto contiene una serie di trasmettitori e ricevitori sensibili estremamente efficienti: un ricetrasmettitore digitale a spettro diffuso che può trasmettere e ricevere simultaneamente su più canali, comunicando con una torre di infrastruttura che potrebbe essere a miglia di distanza ; un altro ricetrasmettitore digitale che comunica dati ad alta velocità con una stazione base da qualche parte nell'edificio; ancora un altro ricetrasmettitore digitale che comunica con dispositivi indossabili a bassa potenza; e un altro ricevitore che riceve un segnale debole da un satellite in orbita intermedia ... ti chiamerebbe bugiardo.
Ti chiamerebbe bugiardo perché sa che i ricevitori di così alta sensibilità non possono essere costruiti senza una moltitudine di circuiti sintonizzati, che filtrano le stazioni vicine e selezionano il segnale di interesse. E che tali circuiti richiedono parti con dimensioni definite più dalla fisica che dalla tecnologia, come condensatori e induttori.
Dovresti quindi spiegare che in una radio moderna, la maggior parte di ciò viene fatta tramite software. Che dopo che il segnale in arrivo dall'antenna viene convertito in una frequenza intermedia e amplificato un po ', viene quindi campionato da un convertitore analogico-digitale; e la successiva elaborazione avviene in un processore di segnale digitale. Tutto quel tuning, quel filtro, che in passato richiedeva tonnellate di hardware in una radio di fascia alta della vecchia scuola, può essere descritto sotto forma di equazioni matematiche; e se ciò può essere fatto, tali equazioni possono essere eseguite in tempo reale dal DSP.
Questo, penso, è uno degli esempi più eclatanti di software che sostituisce l'hardware. Di conseguenza, abbiamo in tasca degli smartphone che, anche per un ingegnere competente degli anni '60, sarebbero simili a un trucco magico.
Rispetto a questo, l'idea che la semplice logica di un apriporta da garage, una bilancia pesapersone elettronica o un telecomando TV al giorno d'oggi è implementata usando un microcontrollore e un software per uso generico invece di hardware personalizzato sembra quasi banale (e sarebbe sicuramente molto più comprensibile per il nostro ipotetico ingegnere degli anni '60 rispetto alla radio definita dal software.)
Considera questo circuito:
È un Flip Flop, noto anche come Multivibratore Bistabile. Può essere sostituito con questo codice:
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;
Significa esattamente come suona.
Un esempio particolarmente famoso è il Disk II Drive progettato da Steve Wozniak per Apple II:
La principale innovazione consisteva nel rendere compatto il controller utilizzando il software mentre i concorrenti si affidavano all'hardware. Come ricorda Bill Fernandez, allora tecnico elettronico della Apple, "il vantaggio principale del design di [Wozniak] [era] che utilizzava solo sei chip invece dei soliti 60-70
Un altro esempio con cui probabilmente hai più familiarità: gli emulatori. Sostituiscono interi set di hardware (e software) interamente in software. CPU, vari chip di controllo, persino dispositivi di archiviazione.
Ora non puoi eliminare tutto l'hardware, alla fine hai bisogno di qualcosa su cui eseguire il software. Ma in generale, qualsiasi attività logica che è possibile implementare nell'hardware può anche essere implementata nel software (le prestazioni potrebbero non essere identiche, potrebbe essere più lenta, più veloce o in diverse situazioni, a seconda dell'hardware sottostante e dell'implementazione).
Un altro campo in cui questo è vero sono i sintetizzatori.
I primi sintetizzatori erano hardware analogico al 100% che generava direttamente forme d'onda e poi le modificava tramite circuiti (filtri, amplificatori, ecc.). Era possibile sintetizzare digitalmente il suono, ma richiedeva risorse di elaborazione che la persona media non poteva permettersi (un vero mainframe e un hardware convertitore digitale-analogico personalizzato).
Man mano che la fabbricazione dei chip migliorava, i sintetizzatori si spostavano dai chip analogici a quelli sintetizzatori controllati da segnali digitali ma generando comunque segnali analogici, e quindi alla sintesi digitale pura (riproduzione del campione, sintesi FM , sintesi additiva reale e così via).
Oggi, i processori sono abbastanza economici e abbastanza veloci da consentire ai programmatori di creare versioni per computer dei classici sintetizzatori analogici che duplicano esattamente il comportamento dei circuiti originali simulandone il comportamento in tempo reale - infatti, telefoni e tablet sono ora in grado di funzionare abbastanza velocemente da eseguire queste ricreazioni; il Korg IMS-20 è un esempio.
Entrambi i sintetizzatori classici e quelli nuovi sono disponibili come plug-in VST o AU per programmi audio digitali come Ableton Live, Logic o Cubase, e questi forniscono l'accesso ai sintetizzatori a persone che altrimenti non avrebbero spazio o denaro per poter usare loro.
Modifica: a questo punto dovrei menzionare anche VCVRack , che simula la sintesi modulare analogica in tempo reale. Abbastanza un passo avanti rispetto ai tempi di rendering di più ore per alcuni secondi di musica.
>:*3
.
In passato, il taglio era abbastanza chiaro. La maggior parte delle cose che necessitavano di una rapida esecuzione dovevano essere implementate nell'hardware. Prendiamo ad esempio un multivibratore che genera una frequenza. Non molto tempo fa avevi bisogno di un paio di transistor, condensatori ed eventualmente un quarzo per generare una frequenza (fissa). Ora ci sono microcontroller economici che costano solo pochi centesimi circa. Dal momento che sono così veloci, puoi usarli facilmente per creare un multivibratore. Inoltre, puoi facilmente controllare tramite software quale frequenza generare dove in passato era necessario saldare hardware diverso. Tuttavia, andando oltre una certa frequenza (ma ora piuttosto alta) avresti ancora bisogno di hardware puro. Quindi vedi, c'è una linea tra entrambi, ma la parte che puoi risolvere con il software sta crescendo (in modo esponenziale).
Modifica In realtà "Il software può sostituire l'hardware" non è proprio corretto. È solo il fatto che l'hardware è diventato così potente che puoi usarlo per eseguire software che emula l'hardware. Quindi invece di alcuni transistor semplici ma saldati staticamente usi milioni di transistor che comprendono il software. Quindi il termine dovrebbe essere "Hardware ora può capire il software" invece.
Un confronto tra il gioco arcade Tank (circa 1976) e il gioco console console Combat (1977) fornisce un bell'esempio di come il software potrebbe sostituire l'hardware anche 40 anni fa.
Il gioco arcade Tank (circa 1976) ha permesso a due giocatori di guidare carri armati e spararsi l'un l'altro. Non includeva alcun tipo di processore, ma aveva contatori hardware per tenere traccia delle posizioni orizzontale e verticale del fascio di elettroni, carri armati e colpi, nonché i punteggi del giocatore, gli angoli di rotazione, il tempo trascorso. Aveva una logica cablata per produrre i dati bitmap associati ai punteggi, alle forme dei carri armati dei giocatori e allo sfondo.
Il sistema video-computer Atari 2600 (una console di gioco domestica intorno al 1977) includeva l'hardware per tracciare le posizioni orizzontali (ma non verticali!) Di due oggetti bitmap e quattro generatori di impulsi a larghezza variabile, tenere premuto e far fuoriuscire un minimo di 20 bit risoluzione grafica del campo di gioco, nonché due motivi ad alta risoluzione a 8 bit, colori di aggancio per i giocatori, sfondo e campo di gioco e rilevamento delle collisioni tra i vari oggetti. Comprendeva anche un timer programmabile per scopi generici, ma l'hardware aveva ben altro che quanto sopra. Tuttavia, anche se l'hardware è molto più semplice di quello del gioco Tank, la cartuccia 2K ROM Combat consente al 2600 di giocare lo stesso gioco di base ma con molte altre funzionalità (una varietà di veicoli e sfondi, tiri che rimbalzano, ecc.) Perché può sostituire la maggior parte della macchina arcade ' s hardware con software. È interessante notare che, sebbene Atari 2600 sia probabilmente la seconda piattaforma hardware più semplice di qualsiasi sistema di videogioco basato su microprocessore venduto commercialmente, è così ben progettato per facilitare la sostituzione dell'hardware con software che, se programmato correttamente, può far girare molti dei i suoi concorrenti.
La frase "il software può sostituire l'hardware" è un avvertimento per non tentare di risolvere i problemi con l'hardware a meno che non ci siano vantaggi molto chiari. Il software è 10x-50x più economico da sviluppare e quasi infinitamente più economico da produrre per unità rispetto all'hardware. Fare X nell'hardware non sarà una soluzione vincente a meno che X non possa davvero essere fatto in modo efficiente nel software.
La sfumatura è stata ben affrontata, ma penso che sia possibile il ostacolo per OP, è che non è possibile sostituire l'hardware con il software. L '"hardware" comporta inevitabilmente un "hardware" significativamente inferiore rispetto alla soluzione "software".
La differenza è che la logica di un processo / algoritmo / calcolo può essere spostata tra hardware e software. Sono stati dati molti esempi, quindi non elaborerò.
Nei primi computer con memoria virtuale, per caricare una nuova voce di pagina è stato necessario commutare un task su una mancanza TLB. Un software OS troverebbe il processo corretto e scorrerebbe le tabelle delle pagine, trovando la voce corretta e riscrivendola nel TLB. Prima di tornare al processo originale per continuare.
Ora la maggior parte delle CPU usa l'hardware per eseguire il processo, leggere la tabella delle pagine, percorrere le tabelle delle pagine e aggiornare TLB.
Entrambi i metodi devono utilizzare il software per gestire gli errori di pagina, ma poiché TLB non supera in modo semplice gli errori di pagina, l'hardware supera comunque il software.
In generel se hai una semplice procedura che devi gestire ripetutamente trovi una sostituzione hardware. Se si dispone di una soluzione hardware complessa con un flusso di controllo complicato, è possibile semplificare l'hardware utilizzando il software.
Ci sono molti casi in cui il software può sostituire l'hardware e viceversa.
Un classico esempio di ciò è una tabella di ricerca matematica. Invece di calcolare i risultati in espressioni comuni ogni volta, vengono archiviati internamente nel coprocessore matematico e semplicemente citati quando necessario.
Molti probabilmente hanno già familiarità con filtri audio e software in grado di imitare strumenti e dispositivi reali come pedali o amplificatori.
Qualsiasi hardware che può essere creato virtualmente verrà utilizzato, se è più veloce e / o più economico dell'equivalente fisico.
In contabilità, una copia cartacea di una fattura (ad esempio) ora può essere inviata elettronicamente e il software sta iniziando a gestire la ricezione di questo tipo di documenti e la sua elaborazione sempre più. È un eccellente esempio di hardware sostituito dal software.