web-dev-qa-db-fra.com

Que signifie l'expression «le logiciel peut remplacer le matériel»?

L'étude du cours pour débutants sur l'interface matérielle/logicielle et les systèmes d'exploitation revient souvent à la question de savoir s'il serait préférable de remplacer certaines pièces matérielles par des logiciels et vice-versa. Je ne peux pas établir la connexion.

91
Gabriele Scarlatti

Je pense que le lien fondamental qui manque d'autres réponses est le suivant:

Étant donné un ordinateur à usage général (par exemple un processeur), on peut le programmer pour effectuer à peu près n'importe quel calcul que nous avons défini. Cependant, le matériel spécialisé peut être plus performant ou ne fournir aucune valeur.

(cette réponse se concentre sur le traitement de bureau et utilise des exemples de ce domaine)

Remplacement du logiciel par du matériel

Si vous êtes assez vieux pour vous souvenir des jeux sur PC du milieu à la fin des années 1990, vous vous souvenez probablement des jeux FPS comme Quake . Il a commencé par être "rendu logiciel", ce qui signifie que le processeur a effectué les calculs nécessaires pour rendre les graphiques. Pendant ce temps, le processeur devait également effectuer le traitement d'entrée, le traitement audio, le traitement de l'IA, etc. C'était très éprouvant pour les ressources du processeur. De plus, le traitement graphique n'est pas bien adapté à un processeur grand public (à l'époque ou maintenant). Il s'agit généralement d'une tâche très parallèle, nécessitant beaucoup plus de cœurs que même un processeur haut de gamme moderne (8).

Nous avons déplacé le traitement graphique du logiciel vers le matériel: entrez le dfx Voodoo et Nvidia TNT (maintenant GeForce ). Il s'agissait de cartes graphiques spécialisées qui déchargeaient le traitement du CPU vers le GPU. Non seulement cela a réparti la charge de travail, fournissant plus de ressources informatiques pour effectuer la même quantité de travail, mais les cartes graphiques étaient du matériel spécialisé qui pouvait rendre beaucoup de graphiques 3D plus rapide et avec plus de fonctionnalités que le CPU pourrait.

Avance rapide vers l'ère moderne et les graphiques sans processeur sont requis sur le bureau. Même le système d'exploitation ne peut pas fonctionner sans GPU. Il est si important que les processeurs intègrent actuellement les GPU.1

Remplacement du matériel par un logiciel

À l'époque où le DVD était tout neuf, vous pouviez installer un lecteur de DVD sur votre ordinateur de bureau. Cependant, les processeurs de l'époque n'étaient pas assez puissants pour décoder les flux vidéo et audio DVD sans bégayer. Au début, une carte PCI spécialisée était nécessaire pour effectuer le décodage. Il s'agissait d'un matériel spécialisé conçu spécialement pour décoder le format DVD et rien d'autre. Tout comme avec les graphiques 3D, il a non seulement fourni plus de ressources informatiques, mais a été conçu sur mesure pour la tâche, ce qui rend la lecture de DVD fluide.

Comme les processeurs sont devenus beaucoup plus puissants, il est devenu possible de décoder les DVD "dans un logiciel", ce qui signifie "sur un ordinateur à usage général". Même avec un processeur moins efficace, il avait suffisamment de vitesse brute et d'optimisations de pipeline pour faire fonctionner la lecture de DVD selon les attentes des utilisateurs.

Nous avons maintenant des processeurs des centaines voire des milliers de fois plus puissants2 comme nous l'avions lors de l'introduction des DVD. Lorsque le Blu-ray est arrivé, nous n'avons jamais eu besoin de matériel spécialisé, car le matériel à usage général était plus que suffisamment puissant pour gérer la tâche.

Faire les deux

Les processeurs Intel modernes ont des instructions spécialisées pour H.264 encodage et décodage. Cela fait partie d'une tendance où les processeurs à usage général gagnent des fonctions spécialisées, le tout dans la même puce. Nous n'avons pas besoin d'une carte PCI Express séparée pour décoder H.264 efficacement comme avec les DVD dès le début, car les processeurs contiennent des circuits similaires.


1 GPU fait référence à un processeur spécialement conçu pour effectuer des calculs graphiques. Les anciennes cartes graphiques 2D n'étaient pas pas GPU: elles étaient simplement des tampons d'images avec DAC pour parler au moniteur. La différence est que les GPU contiennent des processeurs spécialisés qui Excel à certains types de calculs, et avec le temps, sont désormais eux-mêmes programmables (shaders). Le matériel graphique a toujours contenu les circuits spécialisés nécessaires pour convertir les données d'un framebuffer dans un format qui peut être transmis via un câble (VGA, DVI, HDMI, DisplayPort) et compris par un moniteur. Cela n'est pas pertinent pour la discussion sur le déchargement des calculs vers du matériel spécialisé.

2 Le DVD-Vidéo est sorti en 1997, à une époque où le Pentium 2 était également nouvellement sorti. C'était une époque où les CPU augmentaient rapidement en puissance: on pouvait envisager un nouvel ordinateur P2 avec un décodeur DVD, ou en installer un dans un P1 légèrement plus ancien. Comparez cela à un Core i7 moderne de 6e génération utilisant liste Wikipedia de MIPS , et un processeur moderne est entre 590 et 1 690 fois plus rapide. Cela est dû en partie à la vitesse d'horloge, mais aussi au passage à plusieurs cœurs en tant que standard ainsi qu'aux processeurs modernes faisant beaucoup plus de travail par cœur par tick d'horloge. Il est également pertinent de noter que, à mesure que la technologie progresse, Intel (qui domine le marché des ordinateurs de bureau et des serveurs x86) ajoute des instructions spécialisées pour accélérer les opérations que les utilisateurs de bureau souhaitent effectuer (par exemple, le décodage vidéo).

176
user22815

Je suis surpris que personne n'ait encore cité l'un des exemples les plus flagrants: la radio définie par logiciel.

Si vous preniez un smartphone actuel dans le passé il y a environ 50 ans et que vous le montriez à un ingénieur compétent du milieu des années 1960, il serait capable d'en comprendre la plupart. Qu'un superordinateur peut être réduit à quelque chose qui tient dans votre poche? Vérifier. Que vous pouvez avoir l'équivalent d'un téléviseur couleur de très haute qualité dans le package? Vérifier. Que c'est beaucoup plus rapide, a beaucoup plus de stockage, etc., que les ordinateurs de l'époque? Vérifier. Ce logiciel a été écrit qui peut effectuer des fonctions aussi complexes? Vérifier.

Mais dites à cet ingénieur compétent que, au fait, ce paquet contient un ensemble d'émetteurs et de récepteurs sensibles extrêmement efficaces: un émetteur-récepteur numérique à spectre étalé qui peut simultanément transmettre et recevoir sur plusieurs canaux, communiquant avec une tour d'infrastructure qui peut être à des kilomètres de distance ; un autre émetteur-récepteur numérique qui communique des données à haute vitesse avec une station de base quelque part dans le bâtiment; encore un autre émetteur-récepteur numérique qui communique avec des appareils portables de faible puissance; et un autre récepteur qui capte un signal faible d'un satellite en orbite intermédiaire ... il vous traiterait de menteur.

Il vous traiterait de menteur parce qu'il sait que des récepteurs d'une telle sensibilité ne peuvent pas être construits sans une multitude de circuits accordés, qui filtrent les stations voisines et sélectionnent le signal d'intérêt. Et que ces circuits nécessitent des pièces dont la taille est davantage définie par la physique que par la technologie, comme les condensateurs et les inductances.

Il faudrait alors expliquer que dans une radio moderne, la plupart du temps, cela se fait par logiciel. Qu'après que le signal entrant de l'antenne ait été converti en fréquence intermédiaire et légèrement amplifié, il soit ensuite échantillonné par un convertisseur analogique-numérique; et le traitement ultérieur a lieu dans un processeur de signal numérique. Tout ce réglage, ce filtrage, qui nécessitait auparavant des tonnes de matériel dans une radio haut de gamme à l'ancienne, peut être décrit sous la forme d'équations mathématiques; et si cela peut être fait, ces équations peuvent être exécutées en temps réel par le DSP.

C'est, je pense, l'un des exemples les plus flagrants de remplacement de logiciel par du matériel. En conséquence, nous portons des smartphones dans nos poches qui, même pour un ingénieur compétent des années 1960, s'apparenteraient à un tour de magie.

Par rapport à cela, l'idée que la logique simple d'un ouvre-porte de garage, d'une balance de salle de bains électronique ou d'une télécommande de télévision est aujourd'hui implémentée à l'aide d'un microcontrôleur et d'un logiciel à usage général au lieu de matériel personnalisé semble presque triviale (et ce serait certainement beaucoup plus compréhensible pour notre ingénieur hypothétique des années 1960 que la radio définie par logiciel.)

127
Viktor Toth

Considérez ce circuit:

enter image description here

Il s'agit d'un Flip Flop, alias un multivibrateur bistable. Il peut être remplacé par ce code:

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

Cela signifie exactement à quoi cela ressemble.

Un exemple particulièrement célèbre est le Disk II Drive conçu par Steve Wozniak pour le Apple II:

L'innovation principale consistait à rendre le contrôleur compact en utilisant des logiciels tandis que les concurrents comptaient sur le matériel. Comme le rappelle Bill Fernandez, alors technicien en électronique chez Apple, "le principal avantage de la conception [de Wozniak] [était] qu'il n'utilisait que six puces au lieu des 60 à 70 habituelles.

Un autre exemple que vous connaissez probablement mieux: les émulateurs. Ils remplacent des ensembles entiers de matériel (et de logiciels) entièrement dans des logiciels. CPU, diverses puces de contrôle, même des périphériques de stockage.

Maintenant, vous ne pouvez pas éliminer tout le matériel, vous avez finalement besoin de quelque chose pour exécuter le logiciel. Mais en général, toute tâche logique que vous pouvez implémenter dans le matériel peut également être implémentée dans le logiciel (les performances peuvent ne pas être identiques, elles peuvent être plus lentes, plus rapides ou dans des situations différentes, selon le matériel sous-jacent et l'implémentation).

28
8bittree

Un autre domaine dans lequel cela est vrai est celui des synthétiseurs.

Les premiers synthétiseurs étaient matériel 100% analogique qui générait directement des formes d'onde puis les modifiait via des circuits (filtres, amplificateurs, etc.). Il était possible de synthétiser numériquement le son, mais cela nécessitait ressources informatiques que la personne moyenne ne pouvait pas se permettre (un ordinateur central réel et un matériel de conversion numérique-analogique personnalisé).

Au fur et à mesure que la fabrication des puces s'améliorait, les synthétiseurs sont passés de l'analogique pur à puces de synthétiseur contrôlées par des signaux numériques mais toujours générant des signaux analogiques, puis à une synthèse numérique pure (lecture d'échantillon, synthèse FM , véritable synthèse additive, etc.).

Aujourd'hui, les processeurs sont assez bon marché et assez rapides pour permettre aux programmeurs de créer des versions informatiques de synthétiseurs analogiques classiques qui reproduisent exactement le comportement des circuits d'origine en simulant leur comportement en temps réel - en fait, les téléphones et les tablettes sont désormais capables de fonctionner assez rapidement pour exécuter ces recréations; le Korg iMS-2 est un exemple.

Les synthétiseurs classiques et les nouveaux sont disponibles en tant que plugins VST ou AU pour les programmes audio numériques tels que Ableton Live, Logic ou Cubase, et ceux-ci donnent accès aux synthétiseurs à des personnes qui n'auraient autrement pas d'espace ou d'argent pour pouvoir utiliser leur.

Edit: Je devrais également mentionner à ce stade VCVRack , qui simule la synthèse modulaire analogique en temps réel. Un pas en avant par rapport aux temps de rendu de plusieurs heures pour quelques secondes de musique.

11
Joe McMahon

Autrefois, la coupe était assez claire. La plupart des choses qui nécessitaient une exécution rapide devaient être implémentées dans le matériel. Prenons par exemple un multivibrateur qui génère une fréquence. Il n'y a pas si longtemps, vous aviez besoin de deux transistors, de condensateurs et éventuellement d'un quartz pour générer une fréquence (fixe). Il existe maintenant des microcontrôleurs bon marché qui ne coûtent que quelques centimes. Comme ils sont si rapides, vous pouvez les utiliser facilement pour créer un multivibrateur. De plus, vous pouvez facilement contrôler via un logiciel la fréquence à générer à l'endroit où vous deviez auparavant souder différents matériels. Cependant, en passant par une certaine fréquence (mais maintenant plutôt élevée), vous auriez toujours besoin de matériel pur. Donc, vous voyez, il y a une ligne entre les deux, mais la partie que vous pouvez résoudre avec un logiciel est en croissance (exponentielle).

Edit En fait, "Le logiciel peut remplacer le matériel" n'est pas vraiment correct. C'est juste le fait que le matériel est devenu si puissant que vous pouvez l'utiliser pour exécuter un logiciel qui émule le matériel. Ainsi, au lieu de quelques transistors simples mais statiquement soudés, vous utilisez des millions de transistors qui comprennent les logiciels. Le terme devrait donc être "Le matériel peut désormais comprendre le logiciel" à la place.

7
qwerty_so

Une comparaison entre le jeu d'arcade Tank (vers 1976) et le jeu de console domestique Combat (1977) donne un bel exemple de la façon dont un logiciel pouvait remplacer du matériel il y a 40 ans.

Le jeu d'arcade Tank (circa 1976) a permis à deux joueurs de contourner les tanks et de se tirer dessus. Il n'incluait aucune sorte de processeur, mais disposait à la place de compteurs matériels pour suivre les positions horizontale et verticale du faisceau d'électrons, des réservoirs et des tirs, ainsi que les scores du joueur, les angles de rotation, le temps écoulé. Il avait une logique câblée pour produire les données bitmap associées aux scores, aux formes des réservoirs des joueurs et à l'arrière-plan.

Le système informatique vidéo Atari 2600 (une console de jeu à domicile vers 1977) comprenait du matériel pour suivre les positions horizontales (mais pas verticales!) De deux objets bitmap et de quatre générateurs d'impulsions à largeur variable, maintenez et synchronisez un minimum de 20 bits -modèle graphique de champ de jeu de résolution ainsi que deux motifs 8 bits haute résolution, couleurs de verrouillage pour les joueurs, l'arrière-plan et le champ de jeu, et détection des collisions entre les divers objets. Il comprenait également une minuterie programmable à usage général, mais le matériel n'avait rien d'autre que ce qui précède. Néanmoins, même si le matériel est beaucoup plus simple que celui du jeu Tank, le 2K ROM cartouche Combat permet au 2600 de jouer le même jeu de base mais avec de nombreuses autres fonctionnalités (une variété de véhicules et arrière-plans, plans rebondissants, etc.) car il peut remplacer la plupart du matériel de la machine d'arcade par un logiciel. Fait intéressant, même si l'Atari 2600 est probablement la deuxième plate-forme matérielle la plus simple de tout système de jeu vidéo domestique à microprocesseur vendu dans le est si bien conçu pour faciliter le remplacement du matériel par un logiciel que lorsqu'il est correctement programmé, il peut faire le tour de bon nombre de ses concurrents.

5
supercat

La nuance a été bien abordée, mais je pense qu'il est possible que la pierre d'achoppement pour OP soit qu'il ne soit pas possible de remplacer le matériel par un logiciel. Le "matériel" implique invariablement beaucoup moins de "matériel" que la solution "logicielle".

La différence est que la logique d'un processus/algorithme/calcul peut être déplacée entre le matériel et le logiciel. De nombreux exemples ont été donnés, je ne développerai donc pas.

1
ANone

L'expression "le logiciel peut remplacer le matériel" est un avertissement pour ne pas essayer de résoudre les problèmes de matériel à moins qu'il y ait des avantages très clairs. Le logiciel est 10x à 50x moins cher à développer et presque infiniment moins cher à produire par unité que le matériel. Faire X dans le matériel ne sera pas une solution gagnante à moins que X ne puisse vraiment pas être fait efficacement dans le logiciel.

1
DepressedDaniel