Pourquoi avons-nous besoin de tant de transistors?


34

Les transistors remplissent plusieurs fonctions dans un circuit électrique, à savoir des commutateurs, pour amplifier les signaux électroniques, ce qui vous permet de contrôler le courant, etc.

Cependant, j'ai récemment lu au sujet de la loi de Moore, parmi d'autres articles Internet aléatoires, que les appareils électroniques modernes contiennent un nombre énorme de transistors, avec une quantité de transistors qui est dans l'électronique moderne avoisinant les millions, voire les milliards.

Cependant, pourquoi exactement aurait-il besoin de tant de transistors? Si les transistors fonctionnent comme des interrupteurs, etc., pourquoi en aurions-nous besoin dans nos appareils électroniques modernes? Ne pouvons-nous pas rendre les choses plus efficaces de manière à utiliser moins de transistors beaucoup plus volumineux que ce que nous utilisons actuellement?


7
Je suggérerais de déterminer en quoi votre puce est faite. Addeurs, Multiplicateurs, Multiplexeurs, Mémoire, Plus de mémoire ... Et pensez au nombre de ces choses qui doivent être présentes là-bas ...
Dzarda


1
De plus, l'utilisation continue de transistors en remplacement de la plupart des dispositifs mécaniques a plus que tout contribué à façonner l'électronique grand public moderne. L'image de votre téléphone cliquetant chaque fois qu'il allume ou éteint le rétroéclairage (tout en étant la taille et le poids d'une voiture)
Mark

7
Vous demandez pourquoi nous ne pouvons pas "rendre les choses plus efficaces" en utilisant moins de transistors; vous supposez que nous cherchons à minimiser le nombre de transistors. Mais que se passe-t-il si l'efficacité énergétique est améliorée en ajoutant davantage de contrôle? Ou plus particulièrement le gain de temps dans le calcul? "Efficacité" n'est pas une chose.
OJFord

2
Ce n'est pas que de nombreux transistors soient nécessaires à la construction d'un processeur, mais puisque nous pouvons fabriquer tous ces transistors, nous pourrions aussi bien les utiliser de manière à rendre le processeur plus rapide.
user253751

Réponses:


46

Les transistors sont des commutateurs, certes, mais les commutateurs ne servent pas uniquement à allumer et à éteindre les lumières.

Les commutateurs sont regroupés dans des portes logiques. Les portes logiques sont regroupées dans des blocs logiques. Les blocs logiques sont regroupés en fonctions logiques. Les fonctions logiques sont regroupées dans des puces.

Par exemple, une porte NAND TTL utilise généralement 2 transistors (les portes NAND sont considérées comme l'un des éléments fondamentaux de la logique, avec NOR):

schématique

simuler ce circuit - Schéma créé à l'aide de CircuitLab

Lorsque la technologie est passée de TTL à CMOS (qui est maintenant la norme de facto), les transistors ont doublé instantanément. Par exemple, la porte NAND est passée de 2 transistors à 4:

schématique

simuler ce circuit

Une bascule (telle qu'un SR) peut être réalisée à l'aide de 2 portes CMOS NAND, soit 8 transistors. Un registre de 32 bits pourrait donc être créé en utilisant 32 bascules, donc 64 portes NAND ou 256 transistors. Une ALU peut avoir plusieurs registres, ainsi que de nombreuses autres portes, de sorte que le nombre de transistors augmente rapidement.

Plus les fonctions de la puce sont complexes, plus le nombre de portes nécessaires est important et, par conséquent, plus le nombre de transistors est élevé.

De nos jours, votre processeur moyen est considérablement plus complexe qu’une puce Z80 d’il ya 30 ans. Il utilise non seulement des registres 8 fois plus larges, mais les opérations qu’il effectue (transformations 3D complexes, traitement vectoriel, etc.) sont bien plus complexes que ne le permettent les anciennes puces. Une seule instruction dans une CPU moderne peut prendre plusieurs secondes (voire plusieurs minutes) de calcul dans un ancien 8-amer, et tout cela se fait, finalement, avec plus de transistors.


NAND = 4 et non pas 2 transistors et FF sont plus que 2 NOR
placeholder

2
Oh mon! vous devez vraiment repenser cela. Montrez même UN design qui a des millions de transistors qui est fait en bipolaire !! Tous ces modèles sont CMOS,
espace réservé

2
Bon point. Ajout d'un deuxième schéma pour mettre en évidence la différence et le doublement ultérieur des transistors à partir de là.
Majenko

3
Le pullup faible vs fort est un problème complètement différent de TTL vs CMOS. Les BJT viennent en PNP, après tout. La CMOS n’implique pas le "doublement des transistors". L'intégration à grande échelle est un atout, car les transistors sont beaucoup plus petits que les résistances de rappel dans tous les processus ASIC.
Ben Voigt

1
Ce n'est pas une porte TTL NAND. C'est une porte logique RTL.
Fuzzyhair2

16

J'ai vérifié sur le fournisseur local de divers dispositifs à semi-conducteurs et la plus grande puce SRAM qu'ils avaient était 32Mbits. C'est 32 millions de zones individuelles où un 1 ou un 0 peut être stocké. Étant donné qu’il faut au moins 1 transistor pour stocker 1 bit d’information, il faut 32 millions de transistors au minimum absolu.

Qu'est-ce que 32 Mbits vous procure? C'est 4 Mo ou environ la taille d'un fichier MP3 de 4 minutes de qualité médiocre.


EDIT - une cellule de mémoire SRAM selon mon googling ressemble à ceci: -

entrez la description de l'image ici

Donc, cela fait 6 transistors par bit et plus, comme 192 millions de transistors sur la puce que j'ai mentionnée.


... et imaginez maintenant 8 Go de mémoire avec 68719476736 bits d'information
Kamil

1
... sauf qu'ils n'utilisent pas de transistors en DRAM.
Majenko

1
@Majenko: Du moins, pas autant que pour les autres technologies. 1 transistor + 1 condensateur (sur un microscope évidemment) pour 1 bit - si je me souviens bien.
Rev1.0

28
Chaque bit de mémoire SRAM est constitué d’au moins 4 et souvent de 6 transistors, soit 128 millions de transistors ou plus. La mémoire DRAM n’utilise pas de transistors pour le stockage , mais chaque bit (stocké sur un condensateur) possède son propre commutateur à transistor pour charger le capuchon.
Brian Drummond

6
Maintenant, imaginez les transistors dans un SSD 1T (3 bits / cellule et plus sur une puce), mais cela reste 2 700 milliards de transistors juste pour le stockage - sans compter l'adressage, le contrôle et la tolérance pour les mauvais bits et l'usure).
Spehro Pefhany

7

Je pense que le PO peut être dérouté par les appareils électroniques ayant autant de transistors. La loi de Moore concerne principalement les ordinateurs (processeurs, mémoires SRAM / DRAM / associées, GPU, FPGA, etc.). Quelque chose comme une radio transistor peut être ( la plupart du temps) sur une seule puce, mais ne peut pas faire usage de tous que de nombreux transistors. Les appareils informatiques, en revanche, ont un appétit insatiable pour les transistors pour des fonctions supplémentaires et des largeurs de données plus larges.


3
Les radios de nos jours sont des appareils informatiques, ou à tout le moins en contiennent. Synthèse numérique des fréquences FM, traitement du signal DSP de l’audio (un gros problème), contrôle de supervision numérique de la commutation de station, etc. Par exemple, le TAS3208 ti.com/lit/ds/symlink/tas3208.pdf
Spehro Pefhany

1
Vous ne verrez toujours pas des dizaines, des centaines de millions, et encore moins des milliards de transistors utilisés pour une radio. Bien sûr, ils sont en train de devenir de petits ordinateurs spéciaux dotés de toutes ces fonctions numériques, mais rien à l'échelle d'un processeur multicœur 64 bits.
Phil Perry

@PhilPerry sûrement une radio numérique a quelque chose comme un bras en elle? Pas des milliards de transistors, mais bien dans les dizaines de millions.

Eh bien, si vous avez traversé "la ligne" de la radio analogique à un ordinateur qui (entre autres choses) reçoit des signaux radio, vous utiliserez beaucoup de transistors. Mon argument est toujours valable: la question du PO concernant les appareils électroniques sonne comme une confusion entre les radios analogiques classiques, etc. et les appareils informatiques. Oui, ils jouent de manières très différentes même si ce sont deux boîtes noires tirant la musique de l'air.
Phil Perry

4

Comme indiqué précédemment, la mémoire SRAM nécessite 6 transistors par bit. Lorsque nous élargissons nos caches (à des fins d'efficacité), nous avons besoin de plus en plus de transistors. En regardant une plaquette de processeur , vous pouvez voir que le cache est plus grand qu'un seul noyau de processeur, et si vous regardez de plus près les cœurs, vous verrez des parties bien organisées dans celle-ci, qui sont aussi en cache (probablement des données et des instructions L1). caches). Avec 6 Mo de cache, vous avez besoin de 300 millions de transistors (plus la logique d'adressage).

Mais, comme indiqué précédemment, les transistors ne sont pas la seule raison d’augmenter le nombre de transistors. Sur un Core i7 moderne, vous avez plus de 7 instructions exécutées par période d'horloge et par cœur (à l'aide du test bien connu de dhrystone). Cela signifie une chose: les processeurs de pointe font beaucoup d’informatique parallèle. Faire plus d'opérations en même temps nécessite d'avoir plus d'unités pour le faire et une logique plus astucieuse pour le planifier. Une logique plus intelligente nécessite des équations logiques beaucoup plus complexes et beaucoup plus de transistors pour la mettre en œuvre.


La SRAM n’a pas eu besoin de 6 transistors depuis quelques années. En fait, 6T Sram est plutôt inutile lorsque vous utilisez des srams 1T, 2T ou 4T, qui remplacent essentiellement les remplacements.
cb88

2

S'éloignant un peu des détails:

Les ordinateurs sont des dispositifs de commutation numériques complexes. Ils ont couche après couche couche après couche. Le niveau le plus simple est celui des portes logiques telles que les portes NAND, comme indiqué, puis vous obtenez des additionneurs, des registres à décalage, des verrous, etc. . (Sans parler de la mémoire, qui nécessite plusieurs transistors par bit de données stockées)

Chacun de ces niveaux utilise de nombreuses pièces du niveau de complexité précédent, toutes basées sur de nombreuses bases logiques de base.

Ensuite, vous ajoutez la concurrence. Pour obtenir des performances de plus en plus rapides, les ordinateurs modernes sont conçus pour faire beaucoup de choses en même temps. Dans un même cœur, le décodeur d'adresses, l'unité arithmétique, le processeur vectoriel, le gestionnaire de cache et divers autres sous-systèmes fonctionnent tous en même temps, tous avec leurs propres systèmes de contrôle et de synchronisation.

Les ordinateurs modernes ont également un nombre de plus en plus grand de cœurs séparés (plusieurs processeurs sur une puce).

Chaque fois que vous montez une couche d'abstraction, vous obtenez une complexité de plusieurs ordres de grandeur. Même le plus bas niveau de complexité a des milliers de transistors. Montez à des sous-systèmes de haut niveau comme un processeur et vous parlez au moins des millions de transistors.

Ensuite, il y a les GPU (Graphics Processing Units). Un processeur graphique peut comporter MILLE processeurs à virgule flottante distincts optimisés pour la modélisation vectorielle, et chaque sous-processeur comportera plusieurs millions de transistors.


1

Sans tenter de déterminer le nombre de transistors nécessaires pour des éléments spécifiques, les CPU utilisent davantage de transistors pour des capacités accrues, notamment:

  • Ensembles d'instructions plus complexes
  • Plus de cache sur puce, de sorte qu'il faut moins d'extraits de la RAM
  • Plus de registres
  • Plus de cœurs de processeur

1

Outre l’augmentation des capacités de stockage brutes de la RAM, du cache, des registres et l’ajout de cœurs de calcul et de largeurs de bus plus larges (32 vs 64 bits, etc.), c’est parce que le processeur est de plus en plus complexe.

Les CPU sont des unités de calcul composées d'autres unités de calcul. Une instruction de la CPU passe par plusieurs étapes. Autrefois, il n'y avait qu'un étage et le signal d'horloge était aussi long que le pire des cas pour que toutes les portes logiques (fabriquées à partir de transistors) soient installées. Nous avons ensuite inventé le revêtement interne, dans lequel le processeur était divisé en étapes: extraction, décodage, traitement et résultat des instructions. Ce simple processeur à 4 étages pourrait alors fonctionner à une vitesse d'horloge de 4x celle d'origine. Chaque étape est séparée des autres étapes. Cela signifie non seulement que votre vitesse d'horloge peut atteindre 4x (gain 4x), mais vous pouvez désormais avoir 4 instructions superposées (ou "en pipeline") dans la CPU, pour une performance 4x. Cependant, maintenant, les "dangers" sont créés, car une instruction entrant peut dépendre du résultat de l'instruction précédente, mais parce qu'elle ' s Pipelined, il ne l’aura pas tant qu’il entrera dans l’étape du processus, l’autre sortant de l’étape du processus. Par conséquent, vous devez ajouter un circuit pour transmettre ce résultat à l'instruction entrant dans l'étape de processus. L'alternative consiste à bloquer le pipeline, ce qui diminue les performances.

Chaque étape du pipeline, et en particulier la partie processus, peut être subdivisée en plusieurs étapes. En conséquence, vous créez une grande quantité de circuits pour gérer toutes les interdépendances (dangers) du pipeline.

D'autres circuits peuvent également être améliorés. Un additionneur numérique trivial appelé "additionneur à transfert" est le plus facile, le plus petit, mais le plus lent. L'additionneur le plus rapide est un additionneur "carry look-ahead" et nécessite une quantité exponentielle de circuits. Au cours de mon cours d’ingénierie informatique, le simulateur d’un additionneur de transfert séquentiel à 32 bits n’a plus de mémoire disponible; je l’ai donc coupé en deux, 2 additionneurs de CLA 16 bits dans une configuration à report déporté. (Ajouter et soustraire est très difficile pour les ordinateurs, il est facile de se multiplier, la division est très difficile)

Un effet secondaire de tout cela est que nous réduisons la taille des transistors et subdivisons les étages, les fréquences d'horloge peuvent augmenter. Cela permet au processeur de faire plus de travail pour qu'il soit plus chaud. De plus, à mesure que les fréquences augmentent, les retards de propagation deviennent plus apparents (le temps nécessaire à la réalisation d'un étage de pipeline et à la disponibilité du signal de l'autre côté). En raison de l'impédance, la vitesse de propagation effective est d'environ 1 pied par nanoseconde. (1 Ghz). À mesure que votre vitesse d'horloge augmente, la configuration de la puce devient de plus en plus importante, car une puce de 4 Ghz a une taille maximale de 3 pouces. Alors maintenant, vous devez commencer à inclure des bus et des circuits supplémentaires pour gérer toutes les données circulant sur la puce.

Nous ajoutons également des instructions aux puces tout le temps. SIMD (Single Instruction Multiple Data), économie d'énergie, etc., ils nécessitent tous un circuit.

Enfin, nous ajoutons plus de fonctionnalités aux puces. Autrefois, votre CPU et votre ALU (unité de logique arithmétique) étaient séparés. Nous les avons combinées. La FPU (unité à virgule flottante) était séparée, elle aussi combinée. De nos jours, nous ajoutons USB 3.0, accélération vidéo, décodage MPEG, etc. Nous passons de plus en plus de calculs de logiciels en matériels.


1

Majenko a une excellente réponse sur la façon dont les transistors sont utilisés. Alors, laissez-moi plutôt partir d’un vecteur d’approche différent et traiter de l’efficacité.

Est-il efficace d'utiliser aussi peu de transistors que possible lors de la conception?

Cela revient essentiellement à l’efficacité dont vous parlez. Peut-être êtes-vous membre d'une religion qui soutient qu'il est nécessaire d'utiliser le moins de transistors possible - dans ce cas, la réponse est à peu près donnée. Ou peut-être que vous êtes une entreprise qui construit un produit. Du coup, une simple question d’efficacité devient une question très compliquée de rapport coûts-avantages.

Et voici le kicker - les transistors dans les circuits intégrés sont extrêmement bon marché et deviennent de moins en moins chers avec le temps (les disques SSD sont un excellent exemple de la réduction du coût des transistors). Le travail, en revanche, est extrêmement coûteux.

À l'époque où les circuits intégrés commençaient à peine, il y avait une certaine volonté de garder la quantité de composants requis aussi faible que possible. C'est simplement parce qu'ils ont eu un impact significatif sur le coût d'un produit final (en fait, ils représentaient souvent la majeure partie du coût du produit), et lorsque vous construisez un produit fini, "en boîte", le coût de la main-d'œuvre est réparties sur toutes les pièces que vous faites. Les premiers ordinateurs basés sur des circuits intégrés (pensez aux salles de jeux vidéo) ont été poussés à un coût par pièce aussi faible que possible. Cependant, les coûts fixes (par opposition aux coûts à la pièce) sont fortement influencés par le montant que vous êtes en mesure de vendre. Si vous ne vendiez qu'un couple, cela ne valait probablement pas la peine de perdre trop de temps à réduire les coûts à la pièce. Si vous essayez de construire un marché énorme, d'autre part,

Remarquez un élément important: il est logique d'investir beaucoup de temps dans l'amélioration de "l'efficacité" lorsque vous concevez quelque chose pour la production en série. C’est en gros ce qu’est «l’industrie» - chez les artisans, le coût de la main-d’œuvre qualifiée est souvent le principal coût du produit fini; dans une usine, une plus grande partie du coût revient aux matériaux et à la main-d’œuvre (relativement) non qualifiée.

Passons rapidement à la révolution PC. Lorsque les ordinateurs de type IBM sont apparus, ils étaient très stupides. Extrêmement stupide. Ils étaient des ordinateurs à usage général. Pour pratiquement n'importe quelle tâche, vous pouvez concevoir un appareil capable de le faire mieux, plus rapidement et à moindre coût. En d'autres termes, dans la perspective de l'efficacité simpliste, ils étaient très inefficaces. Les calculatrices étaient beaucoup moins chères, tiennent dans votre poche et fonctionnent longtemps avec une pile. Les consoles de jeux vidéo avaient un matériel spécial pour les rendre très bonnes pour créer des jeux. Le problème était qu'ils ne pouvaient rien faire d'autre. PC pouvait tout faire - son rapport prix / sortie était bien pire, mais vous n'étiez pas obligé de faire une calculatrice, ni une console de jeu sprite 2D. Pourquoi Wolfenstein et Doom (et sur Apple PC, Marathon) apparaissent sur des ordinateurs à usage général et non sur des consoles de jeux? Parce que les consoles étaient très douées pour les jeux 2D à base de sprites (imaginez le JRPG typique ou des jeux comme Contra), mais lorsque vous vouliez vous écarter du matériel efficace, vous avez découvert qu'il n'y avait pas assez de puissance de traitement pour faire autre chose!

L’approche apparemment moins efficace vous offre donc des options très intéressantes:

  • Cela vous donne plus de liberté. Contrastez les anciennes consoles 2D avec les anciens PC IBM et les anciens accélérateurs graphiques 3D avec les GPU modernes, qui deviennent peu à peu des ordinateurs polyvalents.
  • Cela permet d'augmenter l'efficacité de la production en masse même si les produits finaux (logiciels) sont "artisanaux" à certains égards. Ainsi, des entreprises comme Intel peuvent réduire le coût de l’unité de travail de manière beaucoup plus efficace que tous les développeurs du monde entier.
  • Il laisse plus de place à plus d'abstractions dans le développement, permettant ainsi une meilleure réutilisation des solutions prêtes, ce qui permet de réduire les coûts de développement et de test, pour un meilleur rendement. C'est essentiellement la raison pour laquelle chaque écolier peut écrire une application à part entière basée sur une interface graphique avec accès à la base de données et connexion Internet, ainsi que tout ce qui serait extrêmement difficile à développer si vous deviez toujours recommencer à zéro.
  • Dans les PC, cela signifiait autrefois que vos applications devenaient plus rapides avec le temps sans votre contribution. La pause-repas est pratiquement terminée, car il devient de plus en plus difficile d'améliorer la vitesse brute des ordinateurs, mais elle a façonné la majeure partie de la vie du PC.

Tout cela est synonyme de "gaspillage" de transistors, mais ce n'est pas un gaspillage réel, car les coûts totaux réels sont inférieurs à ce qu'ils seraient si l'on cherchait à obtenir le simple "aussi peu de transistors que possible".


1

Un autre aspect de l’histoire "tant de transistors" est que ces transistors ne sont pas conçus individuellement par un humain. Un cœur de processeur moderne a environ 0,1 milliard de transistors, et aucun humain ne les conçoit directement. Ce ne serait pas possible. Une durée de vie de 75 ans ne représente que 2,3 milliards de secondes.

Ainsi, pour rendre de telles conceptions réalisables, les humains sont impliqués dans la définition de la fonctionnalité du dispositif à un niveau d'abstraction bien supérieur aux transistors individuels. La transformation en transistors individuels est connue sous le nom de synthèse de circuit. Elle est réalisée à l'aide d'outils propriétaires très coûteux, dont le développement collectif coûte environ un milliard de dollars au fil des ans et qui se cumulent entre les principaux fabricants de processeurs et les fonderies.

Les outils de synthèse de circuit ne génèrent pas de conceptions avec le moins de transistors possible. Ceci est fait pour une multitude de raisons.

Commençons par le cas le plus élémentaire: tout circuit complexe peut être simulé par un processeur beaucoup plus simple, peut-être en série, avec suffisamment de mémoire. Vous pouvez certainement simuler une puce i7, avec une précision parfaite, si vous connectiez suffisamment de RAM série à un Arduino. Une telle solution aura beaucoup moins de transistors que le processeur réel et fonctionnera très lentement, avec une fréquence d'horloge effective de 1 kHz ou moins. Nous ne voulons clairement pas que la réduction du nombre de transistors aille aussi loin. .

Nous devons donc nous limiter à une certaine classe de transformations de conception à transistors: celles qui conservent la capacité parallèle intégrée à la conception d'origine.

Même dans ce cas, l'optimisation pour un nombre minimal de transistors produira probablement des conceptions impossibles à fabriquer à l'aide d'un processus de semi-conducteur existant. Pourquoi? Parce que les puces que vous pouvez réellement fabriquer sont des structures 2D et nécessitent une redondance de circuit simplement afin que vous puissiez interconnecter ces transistors sans qu'un kilogramme de métal ne soit nécessaire. L'entrée et la sortie des transistors et des portes qui en résultent importent.

Enfin, les outils ne sont pas théoriquement parfaits: il faudrait généralement beaucoup plus de temps processeur et de mémoire pour générer des solutions globalement minimales en nombre de transistors, compte tenu de la contrainte d'une puce pouvant être fabriquée.


0

Je pense que ce que l'OP doit savoir, c'est qu'un "simple commutateur" nécessite souvent plusieurs transistors? Pourquoi? Eh bien, pour plusieurs raisons. Parfois, des transistors supplémentaires sont nécessaires pour que la consommation d'énergie soit faible pour les états "activé" ou "désactivé". Parfois, des transistors sont nécessaires pour gérer les incertitudes liées aux entrées de tension ou aux spécifications des composants. Beaucoup de raisons. Mais j'apprécie le point. Regardez le schéma de circuit d'un OP-AMP et vous verrez quelques dizaines de transistors! Mais ils ne seraient pas là s'ils ne servaient à rien dans le circuit.


0

Fondamentalement, tout ce que l’ordinateur comprend est 0 et 1 .. ce qui est décidé par ces commutateurs. Oui, les fonctions des transistors sont plus nombreuses que celles des commutateurs. Donc, si un commutateur est capable de décider si la sortie doit être un 0 ou un 1 (en supposant que ce soit une simple opération bi), plus le nombre de bits est important. plus il y a de transistors .. il n’est donc pas étonnant que nous devions intégrer des millions de transistors dans un seul microprocesseur .. :)


0

À l'ère de la technologie, nous avons besoin de dispositifs intelligents (petits, rapides et efficaces). Ces dispositifs sont constitués de circuits intégrés (CI) contenant un no. des transistors. Nous avons besoin de plus en plus de transistors pour rendre les circuits intégrés plus intelligents et plus rapides, car chaque circuit d'un circuit intégré est constitué d'un additionneur, sous-tracteur, multiplicateur, diviseur, portes logiques, registres, multiplexeurs, bascules, compteurs, décaleurs, mémoires microprocesseurs, etc., pour mettre en œuvre toute logique dans les dispositifs, qui ne sont composés que de transistors (MOSFET). Avec l'aide de transistors, nous pouvons mettre en œuvre n'importe quelle logique. Nous avons donc besoin de plus en plus de transistors .....

entrez la description de l'image ici

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.