Question Pourquoi utilisons-nous toujours des processeurs au lieu de GPU?


Il me semble que ces jours-ci beaucoup de calculs sont faits sur le GPU. De toute évidence, les graphismes sont faits là-bas, mais en utilisant CUDA et similaire, l'IA, les algorithmes de hachage (pensez aux bitcoins) et autres sont également effectués sur le GPU. Pourquoi ne pouvons-nous pas simplement nous débarrasser du processeur et utiliser le GPU seul? Qu'est-ce qui rend le GPU beaucoup plus rapide que le processeur?


352
2017-07-10 13:31


origine


Comment savoir quelles réponses contiennent des informations correctes? Dois-je attendre que les autres réponses de vote haut / bas? Je pense que j'étais trop pressé d'accepter une réponse: O - ell
Il y a quelques réponses récentes @ell maintenant, qui ne contiennent pas de "désinformation". Ils sont en train de grimper au sommet avec les votes en raison du mécanisme de marché efficace de StackExchange merveilleusement conçu ;-) Je suggère d'attendre un peu plus longtemps avant d'accepter une réponse. On dirait que vous faites très prudemment cela. C'est une bonne question, en passant. Cela peut sembler évident, mais ce n'est pas du tout. Merci de l'avoir demandé! - Ellie Kesselman
Un peu comme demander "Si Boeing 747 est plus rapide et plus économique, pourquoi conduisons-nous encore des voitures"? - vartec
Non, car ce n'est pas RISC par opposition à CISC. C'est l'un des principes fondamentaux de l'informatique, légèrement déguisé. Ses "Pourquoi déchargeons-nous le travail du processeur central sur les processeurs d’E / S?". - JdeBP
@vartec: Je pense qu'une meilleure analogie pourrait être entre les bus et les taxis. S'il y a quarante personnes qui veulent toutes aller du même endroit au même endroit, un bus sera beaucoup plus efficace. S'il y a une quarantaine de personnes dont les origines et les destinations souhaitées sont très dispersées, même un seul taxi peut être aussi bon qu'un bus, et pour le coût du bus, on peut avoir plusieurs taxis. - supercat


Réponses:


TL; DR répond: Les processeurs graphiques ont beaucoup plus de cœurs de processeurs que les processeurs, mais comme chaque cœur de processeur graphique est beaucoup plus lent qu'un cœur de processeur et n’a pas les fonctionnalités requises pour les systèmes d’exploitation modernes, ils ne sont pas adaptés au traitement quotidien. Ils sont particulièrement adaptés aux opérations de calcul intensif telles que le traitement vidéo et les simulations physiques.


GPGPU est encore un concept relativement nouveau. Les GPU étaient initialement utilisés pour le rendu des graphiques uniquement; À mesure que la technologie évoluait, le grand nombre de cœurs des GPU par rapport aux processeurs était exploité en développant des capacités de calcul pour les GPU afin qu'ils puissent traiter simultanément de nombreux flux de données parallèles, quelles que soient les données. Alors que les GPU peuvent avoir des centaines, voire des milliers de processeurs de flux, ils s'exécutent chacun plus lentement qu'un cœur de processeur et ont moins de fonctionnalités (même s'ils sont Turing complète et peut être programmé pour exécuter n'importe quel programme qu'un processeur peut exécuter). Les fonctions manquantes dans les GPU incluent les interruptions et la mémoire virtuelle, nécessaires pour implémenter un système d'exploitation moderne.

En d'autres termes, les processeurs et les processeurs graphiques ont des architectures très différentes qui les rendent plus adaptés à différentes tâches. Un GPU peut gérer de grandes quantités de données dans de nombreux flux, en effectuant des opérations relativement simples, mais il est mal adapté au traitement lourd ou complexe sur un ou plusieurs flux de données. Un processeur est beaucoup plus rapide sur une base par cœur (en termes d'instructions par seconde) et peut effectuer des opérations complexes sur un ou plusieurs flux de données plus facilement, mais ne peut pas gérer efficacement de nombreux flux simultanément.

Par conséquent, les GPU ne sont pas adaptés aux tâches qui ne bénéficient pas de manière significative ou ne peuvent pas être parallélisées, y compris de nombreuses applications grand public courantes telles que les traitements de texte. De plus, les GPU utilisent une architecture fondamentalement différente. il faudrait programmer une application spécifique pour un GPU pour que cela fonctionne, et des techniques très différentes sont nécessaires pour programmer les GPU. Ces différentes techniques incluent de nouveaux langages de programmation, des modifications de langages existants et de nouveaux paradigmes de programmation mieux adaptés à l’expression d’un calcul comme opération parallèle à exécuter par de nombreux processeurs de flux. Pour plus d'informations sur les techniques nécessaires pour programmer les GPU, consultez les articles de Wikipedia sur traitement de flux et traitement en parallèle.

Les GPU modernes sont capables d'effectuer des opérations vectorielles et de l'arithmétique à virgule flottante, avec les dernières cartes capables de manipuler des nombres à virgule flottante en double précision. Les frameworks tels que CUDA et OpenCL permettent d'écrire des programmes pour les GPU, et la nature des GPU les rend plus adaptés aux opérations hautement parallélisables, comme dans le calcul scientifique, où une série de cartes de calcul GPU spécialisées peut remplacer un petit calculer le cluster comme dans Supercalculateurs personnels NVIDIA Tesla. Les consommateurs avec des GPU modernes expérimentés avec Folding @ home peuvent les utiliser pour contribuer avec Clients GPU, qui peut réaliser des simulations de repliement de protéines à très grande vitesse et contribuer davantage au projet (assurez-vous de lire le FAQ en premier lieu, en particulier ceux liés aux GPU). Les GPU peuvent également permettre une meilleure simulation physique dans les jeux vidéo à l'aide de PhysX, accélérer le codage et le décodage vidéo et effectuer d'autres tâches gourmandes en calcul. Ce sont ces types de tâches que les GPU sont les plus aptes à effectuer.

AMD est à l’avant-garde d’une conception de processeur appelée Unité de traitement accéléré (APU) qui combine des cœurs de processeurs x86 conventionnels avec des GPU. Cette approche permet des performances graphiques largement supérieures aux solutions graphiques intégrées à la carte mère (bien qu’elles ne correspondent pas aux GPU discrets les plus coûteux) et permet un système compact et peu coûteux avec de bonnes performances multimédia sans avoir besoin d’un GPU distinct. Les derniers processeurs Intel offrent également des graphiques intégrés sur puce, bien que les performances intégrées du GPU soient actuellement limitées aux quelques puces avec Intel Iris Pro Graphics. Au fur et à mesure que la technologie avance, nous verrons un degré croissant de convergence de ces parties autrefois distinctes. AMD envisage un avenir où le CPU et le GPU ne font qu'un, capables de travailler ensemble de manière transparente sur la même tâche.

Néanmoins, de nombreuses tâches exécutées par les systèmes d'exploitation et les applications PC sont encore mieux adaptées aux processeurs, et beaucoup de travail est nécessaire pour accélérer un programme en utilisant un GPU. Étant donné que de nombreux logiciels existants utilisent l'architecture x86 et que les GPU nécessitent des techniques de programmation différentes et que plusieurs fonctionnalités importantes manquent pour les systèmes d'exploitation, il est très difficile de passer du processeur au processeur graphique.


373
2017-07-10 14:00



Comme cette réponse, je pense que la raison principale est que nous n’avons pas de bons langages de programmation pour traiter les architectures parallèles comme celle-ci. Pendant des décennies, nous avons lutté pour faire avancer la programmation multi-thread, et les gens appellent encore, le multi-thread "mal". Malgré le fait que les processeurs multi-cœurs et les GPU soient une réalité, nous devrons trouver de nouveaux paradigmes de programmation pour y faire face. - Soren
À noter qu'Intel a travaillé sur Larrabee une architecture (trop longue) qui est essentiellement une puce avec un nombre important de cœurs x86. - Chris S
Excellente réponse pour discuter des raisons matérielles et discuter des APU et de la manière dont ils vont changer cela. Cependant, @Soren donne un très bon point du côté du logiciel. En réalité, il s'agit d'une combinaison de problèmes matériels, de problèmes logiciels et du fait que les processeurs fonctionnent et que lorsque quelque chose fonctionne, il est difficile d'inciter les utilisateurs à le remplacer. - Nich Del
"Nous n’avons pas de bons langages de programmation pour gérer des architectures parallèles comme celle-ci." - Haskell, OCaml, Scheme, F #, Erlang et à peu près tous les langages de programmation fonctionnelle traitent très bien le multithreading. Tous ceux que j'ai mentionnés sont traditionnels. - BlueRaja - Danny Pflughoeft
@BlueRaja - nous connaissons ces langages, votre définition du flux principal doit être différente de la mienne :-) - Soren


Qu'est-ce qui rend le GPU beaucoup plus rapide que le processeur?

Le GPU est ne pas plus rapide que le CPU. CPU et GPU sont conçus avec deux objectifs différents, avec des compromis différents, de sorte qu'ils ont différent caractéristique de performance. Certaines tâches sont plus rapides dans un processeur alors que d'autres tâches sont plus rapides calculées dans un processeur graphique. Le processeur excelle à faire des manipulations complexes sur un petit ensemble de données, le GPU excelle à faire des manipulations simples sur un grand ensemble de données.

Le GPU est un processeur spécial, conçu pour qu'une seule instruction fonctionne sur un grand bloc de données (SIMD / Single Instruction Multiple Data), toutes appliquant la même opération. Travailler dans des blocs de données est certainement plus efficace que de travailler avec une seule cellule à la fois, car le décodage des instructions est beaucoup plus réduit, mais travailler avec de gros blocs signifie qu'il y a plus d'unités de travail parallèles. mettre en œuvre une seule instruction GPU (provoquant une contrainte de taille physique, utilisant plus d'énergie et produisant plus de chaleur).

La CPU est conçue pour exécuter une seule instruction sur une seule donnée aussi rapidement que possible. Comme il suffit de travailler avec un seul datum, le nombre de transistors requis pour implémenter une seule instruction est beaucoup moins élevé, de sorte qu'un processeur peut se permettre d'avoir un jeu d'instructions plus large, une ALU plus complexe, une meilleure prédiction de branche une architecture et des schémas de cache / pipeline plus sophistiqués. Ses cycles d'instruction sont également plus rapides.

La raison pour laquelle nous utilisons toujours le processeur est ne pas Parce que x86 est le roi de l'architecture du processeur et que Windows est écrit pour x86, la raison pour laquelle nous utilisons toujours le processeur est que le type de tâches qu'un système d'exploitation doit effectuer, c'est-à-dire prendre des décisions, Un système d'exploitation doit examiner des centaines de types de données différents et prendre diverses décisions qui dépendent les unes des autres. Ce type de travail ne se met pas facilement en parallèle, du moins pas dans une architecture SIMD.

À l'avenir, nous verrons une convergence entre l'architecture du processeur et celle du processeur graphique, car le processeur acquiert la capacité de traiter des blocs de données, par ex. SSE. En outre, à mesure que la technologie de fabrication s’améliore et que les puces deviennent plus petites, le GPU peut se permettre de mettre en œuvre des instructions plus complexes.


245
2017-07-10 20:22



C'est probablement la meilleure réponse ici. Il est important de comprendre les différences fondamentales entre les deux paradigmes. Pour que les GPU dépassent les CPU, compte tenu des charges de travail actuelles, cela signifie essentiellement qu'un GPU doit se transformer en processeur. Et donc la question est la réponse. - surfasb
+1 pour ce qui est la meilleure réponse. Tant cette réponse que la réponse acceptée sont correctes, mais celle-ci l'explique beaucoup plus clairement.
Je suis surpris que personne dans ce fil n'ait mentionné la surcharge de l'envoi de données vers le GPU - une bande passante limitée par rapport aux bus PCI-Express rend certaines opérations parallèles sur un GPU beaucoup plus lentes que celles effectuées sur le processeur. Un cas simple peut être vu où la variation de la taille d'une FFT fait une différence significative dans les performances sur GPU vs CPU en raison de la surcharge de l'envoi de données, la configuration d'un contexte, la lecture des résultats: stackoverflow.com/a/8687732/303612 Des opérations plus petites peuvent être effectuées dans le cache sur les processeurs, et la bande passante mémoire est largement supérieure à l'architecture PCI-E actuelle - Dr. Andrew Burnett-Thompson
@ Dr.AndrewBurnett-Thompson: c'est parce que cela n'a rien à voir avec la question. Actuellement, le GPU est considéré comme une unité de traitement auxiliaire, c'est pourquoi il est nécessaire et coûteux de déplacer des données depuis / vers un GPU. Si nous traitons le GPU comme unité de traitement de première classe, il ne sera pas nécessaire de regrouper les données entre la mémoire principale et la mémoire GPU. - Lie Ryan
Pas optimiste, ce n'est pas une surcharge de bande passante nulle. Si un processeur avec une architecture GPU exécute l'intégralité de l'émission, il n'y a rien à déplacer, la mémoire GPU est la mémoire principale. Il n'y a pas de frais généraux de transfert à discuter, car il n'y a pas de transferts. Cela n’est pas une hypothèse, les APU d’AMD utilisent l’architecture hétérogène (HSA) avec une mémoire principale unifiée qui permet une copie nulle entre le processeur et le GPU. - Lie Ryan


Les GPU manquent:

  1. Mémoire virtuelle (!!!)
  2. Moyens d'adressage de périphériques autres que la mémoire (par exemple, claviers, imprimantes, stockage secondaire, etc.)
  3. Les interruptions

Vous en avez besoin pour pouvoir implémenter un système d'exploitation moderne.

Ils sont également (relativement) lents en arithmétique à double précision (comparés à leurs performances arithmétiques en simple précision) *, et sont beaucoup plus grands (en termes de taille de silicium). Les architectures GPU plus anciennes ne prennent pas en charge les appels indirects (via des pointeurs de fonction) nécessaires à la plupart des programmes généraux et les architectures plus récentes qui le font lentement. Enfin, (comme d’autres réponses l’ont noté), pour les tâches qui ne peuvent pas être parallélisées, les GPU perdent par rapport aux processeurs ayant la même charge de travail.

MODIFIER: S'il vous plaît noter que cette réponse a été écrite en 2011 - GPU tech est un domaine en constante évolution. Les choses pourraient être très différentes selon le moment où vous lisez ceci: P

* Certains GPU ne sont pas lents en arithmétique à double précision, tels que les lignes Quadro ou Tesla de NVidia (génération Fermi ou plus récente) ou la ligne FirePro d'AMD (génération GCN ou plus récente). Mais ce ne sont pas dans la plupart des machines des consommateurs.


75
2017-07-10 21:17



@Cicada: Avez-vous une référence pour cela? Dans tous les cas, même si cela est vrai, même le matériel récent ne fonctionnera pas bien dans ce cas. (par exemple, il n’aurait pas trop d’avantage par rapport à une unité centrale - et un avantage en termes de consommation d’énergie) - Billy ONeal
Oui, les périphériques Fermi comme vous l'avez dit (avec CUDA 4.0 et sm_20), supportent les sauts indirects (et donc les méthodes virtuelles C ++, l'héritage, etc.). - Angry Lettuce
544 GigaFLOPS à partir d'un GPU de 2 ans de 300 $ est lent? - Ben Voigt
@Ben: Vous obtenez uniquement ce type de performance dans les applications parallèles aux données. Les opérations séquentielles générales sont un jeu de balle complètement différent. (C’est seulement avec tous les 1600 cœurs de cette puce fonctionnant en parallèle, exécutant essentiellement les mêmes instructions encore et encore… et même les performances théoriques plutôt que réelles) - Billy ONeal
@Billy: Mais c'est une lenteur sur une classe particulière d'algorithmes, pas de lenteur sur l'arithmétique à double précision (ce que vous avez affirmé). (Et les processeurs n'atteignent généralement pas les performances de référence) - Ben Voigt


Un processeur est comme un travailleur qui va très vite. Un GPU est comme un groupe de clone travaillant rapidement, mais qui doivent faire exactement la même chose à l'unisson (sauf que certains clones peuvent rester inactifs si vous voulez)

Que préférez-vous comme développeur, un gars super rapide, ou 100 clones rapides qui ne sont pas aussi rapides, mais tous doivent effectuer les mêmes actions simultanément?

Pour certaines actions, les clones sont très bons, par ex. balayer le sol - ils peuvent chacun en balayer une partie.

Pour certaines actions, les clones piquent, par ex. écrivez le rapport hebdomadaire - tous les clones sauf un restent inactifs pendant qu'un clone écrit le rapport (sinon vous obtenez juste 100 copies du même rapport).


37
2017-07-11 15:39



Pourrais-je même avoir les deux? - Kevin Panko
@Kevin: Oui, mais vous auriez besoin d'un ordinateur avec tous les deux un processeur et un GPU! Si seulement il y avait une telle chose! - Joachim Sauer
Grande analogie Je m'en souviendrai. - Mayo


Parce que les GPU sont conçus pour faire beaucoup de petites choses à la fois, et que les processeurs sont conçus pour faire une chose à la fois. Si votre processus peut être mis en parallèle, comme le hachage, le GPU est beaucoup plus rapide, sinon ce ne sera pas le cas.

Votre processeur peut calculer un hash beaucoup plus rapidement que votre processeur graphique - mais le temps nécessaire à votre processeur pour le faire, votre GPU peut être en train de passer par plusieurs centaines de hachages. Les GPU sont conçus pour faire beaucoup de choses en même temps, et les processeurs sont conçus pour faire une chose à la fois, mais très rapidement.

Le problème est que les processeurs et les GPU sont des solutions très différentes à des problèmes très différents, il y a un peu de chevauchement mais généralement, ce qui reste dans leur domaine reste dans leur domaine. Nous ne pouvons pas remplacer le processeur par un processeur graphique car le processeur est bien plus performant qu’un GPU, simplement parce qu’un processeur graphique n’est pas conçu pour faire le travail et qu’un processeur est en place.

Une petite note secondaire, cependant, s’il était possible de supprimer le processeur et de n’avoir qu’un GPU, ne pensez-vous pas que nous allons le renommer? :)


23
2017-07-10 17:51



Je pense que la plupart des processeurs modernes sont conçus pour faire 2, 4 ou 8 choses à la fois. - danielcg
@ danielcg25: Et la plupart des GPU modernes sont conçus pour faire 256, 512, 1024 choses à la fois (la GTX 680 a 1536 Noyaux CUDA). Chaque cœur de processeur individuel est une entité distincte conceptuellement, mais ce n’est pas le cas pour un processeur graphique. - Phoshi
@ danielcg25: Je sais, mais un commentaire avec une incompréhension fondamentale (bien que intentionnelle) de la réponse pourrait être néfaste si quelqu'un le lisait sans connaître le sujet. "Être un âne" dans ce sens n'est pas vraiment apprécié sur SE, car il réduit le rapport signal / bruit. - Phoshi
Je viens de fournir des informations. De nos jours, la plupart des ordinateurs sont capables de traiter 2 à 8 choses à la fois. Certains processeurs peuvent faire encore plus que cela. Il ne se rapproche toujours pas des GPU qui font des centaines de choses à la fois. - danielcg
@ danielcg25: C'est un autre type de traitement, cependant, c'est la question. Chaque cœur de processeur est effectivement séparé, fonctionnant avec ses propres blocs de données et ses propres processus. Chaque cœur de processeur exécute une tâche différente et distincte les uns des autres, et ils n'augmentent pas de manière linéaire - un octo-cœur n'est pas deux fois plus utile qu'un quad-core n'est pas deux fois plus utile qu'un dual-core. Les coeurs GPU, quant à eux, effectuent la même tâche sur différentes données et évoluent linéairement. Il est évident que des processeurs multi-core existent, mais Ce n'est pas la même chose. - Phoshi


Est-ce que vous demandez vraiment Pourquoi n'utilisons-nous pas des architectures de type GPU dans le CPU?

Le GPU est juste un processeur spécialisé d'une carte graphique. Nous prêtons des calculs non graphiques au GPU, car les processeurs à usage général ne sont pas à la hauteur dans l'exécution parallèle et en virgule flottante.

Nous utilisons actuellement différentes architectures CPU (plus de GPU-ish). Par exemple. Niagara les processeurs sont assez multitâches. SPARC T3 exécutera 512 threads simultanés.


14
2017-07-10 17:57



Pourquoi une descente? - jkj
Je suppose que la dernière ligne est simplement fausse. En fait, je ne peux penser qu’à un système d’exploitation général x86 uniquement; et même celui-ci a été porté sur des processeurs alpha et ARM, tout simplement pas commercialisés pour le moment. - Javier
D'accord. Supprimé la dernière section qui était mon opinion sur la prise en charge du système d'exploitation grand public empêchant le changement vers de nouvelles architectures. Ne pourrait pas être dans la portée de la réponse. - jkj


Je pourrais être horriblement trompé ici, et je ne parle que de peu ou pas d'autorité sur le sujet, mais voici:

  • Je crois que chaque unité d'exécution GPU ("core") a un espace d'adressage très limité par rapport à un CPU.

  • Les unités d'exécution GPU ne peuvent pas gérer efficacement les branchements.

  • Les unités d'exécution GPU ne prennent pas en charge les interruptions matérielles de la même manière que les unités centrales.

J'ai toujours pensé que la façon dont les unités d’exécution GPU étaient censées être est quelque chose comme les «SPE» de Playstation 3, qu’elles veulent recevoir un bloc de données, exécuter un certain nombre d’opérations séquentielles, puis cracher un autre bloc de données. données, rincer, répéter. Ils n'ont pas autant de mémoire adressable que le principal "CPE", mais l'idée est de dédier chaque "SPE" à une tâche séquentielle spécifique. La sortie d'une unité peut alimenter l'entrée d'une autre unité.

Les unités d'exécution ne fonctionnent pas correctement si elles tentent "d'analyser" les données et de prendre un grand nombre de décisions en fonction de ces données.

Ces "blocs de données" peuvent faire partie d'un flux, comme une liste de sommets d'une table d'état d'un jeu, des données MPEG d'un disque, etc.

Si quelque chose ne correspond pas à ce modèle de "streaming", alors vous avez une tâche qui ne peut pas être efficacement paralellisée et le GPU n'est pas nécessairement la meilleure solution pour cela. Un bon exemple est le traitement d'éléments basés sur des «événements externes» tels que le clavier, le joystick ou l'entrée réseau. Il n'y a pas beaucoup de choses qui ne correspondent pas à ce modèle, mais il y en aura toujours quelques-unes.


11
2017-07-10 15:55



Bon point sur l'optimisation de la prédiction de branche - je n'aurais jamais pensé à cela, mais vous avez raison. - Jimmy Breck-McKye


C'est rien sur la vitesse d'horloge ou de but. Ils sont tous deux également capables de réaliser la plupart des tâches, sinon toutes. Cependant, certains sont légèrement mieux adaptés à certaines tâches que d'autres.

Il y a eu un très vieux argument sur la question de savoir s'il est préférable d'avoir beaucoup de noyaux stupides ou un petit groupe de cœurs très intelligents. Cela remonte facilement dans les années 80.

Dans un processeur, de nombreux calculs peuvent être effectués. Les cœurs plus intelligents sont capables de réaliser de nombreux calculs différents en même temps (un peu comme le multi-core mais pas, c’est compliqué) Parallélisme d'instruction). Un noyau intelligent pourrait effectuer plusieurs calculs en même temps (ajouter, soustraire, multiplier, diviser, opération mémoire), mais un seul à la fois; à cause de cela, ils sont physiquement plus gros (et donc beaucoup plus chers) que les noyaux plus bêtes.

Un noyau muet est beaucoup plus petit et peut donc être ajouté à une seule puce, mais ne peut pas effectuer autant de calculs simultanés. Il existe un bel équilibre entre de nombreux noyaux stupides et quelques cœurs intelligents.

Les architectures multi-cœurs fonctionnent bien avec les graphiques car les calculs peuvent facilement être répartis sur des centaines de cœurs, mais ils dépendent également de la qualité du code et de la fiabilité des autres codes.

C'est un beaucoup question plus compliquée que cela peut paraître. Pour plus d'informations, lisez cet article sur la conception du processeur:

Microprocesseurs modernes - Un guide de 90 minutes

http://www.lighterra.com/papers/modernmicroprocessors/


6
2017-07-12 04:36



veuillez excuser la mauvaise grammaire et, en général, le style d'écriture sous-utilisé utilisé ci-dessus, je n'ai pas pris mon café. C'est un concept assez compliqué et le lien inclus est l'endroit où vous devriez aller si vous voulez mieux comprendre. pas ma mauvaise explication - Silverfire
Je l'ai corrigé pour vous et j'ai ajouté un lien. - bwDraco


Je voudrais aborder un point syntaxique: Les termes CPU et GPU sont des noms fonctionnels et non des noms architecturaux.

Si un ordinateur utilisait un processeur graphique comme processeur principal, il deviendrait alors une "unité centrale de traitement" (CPU) indépendamment de l'architecture et du design.


5
2017-07-15 11:44