web-dev-qa-db-fra.com

Est-ce qu'avoir 4 états par "bit" au lieu de 2 signifierait le double de l'espace de stockage?

Question fondamentale assez simple, quoique naïve:

Est-ce qu'avoir 4 états par "bit" au lieu de 2 signifierait le double de l'espace de stockage? Dans le cas où cela n'est pas clair, je veux dire comme si chaque "structure de stockage", plutôt que de représenter seulement 2 valeurs, (base 2: 0, 1), pouvait représenter 4 valeurs (base 4: 0, 1, 2, 3 ).

35
Viziionary

Le mot que vous recherchez n'est pas "bit" mais "symbole". "Symbole" est le mot utilisé pour décrire le processus de mappage des signaux matériels (tels que les tensions ou les modèles magnétiques) en bits logiques. Si un symbole peut avoir 4 états, il peut coder pour 2 bits d'informations.

Bien sûr, nous ne disons rien sur l'utilisation des ressources du symbole dans cet argument. Si vous envoyez des symboles le long d'un fil sous forme de tensions, les différents symboles se ressemblent de plus en plus lorsque vous augmentez le nombre d'états par symbole. Si j'ai un fil 0-5V et 2 états par symbole (1 bit), mes deux états sont 0V et 5V, avec 5V entre chaque symbole. Si j'ai le même fil, mais que j'encode 4 états par symbole (2 bits), mes états sont 0V, 1,66V, 3,33V et 5V. C'est 1,66 V entre chaque symbole. Il est désormais plus facile pour le bruit de corrompre mon signal.

Il existe une loi qui les relie, connue sous le nom de loi de Shannon qui relie la bande passante (en bits) au taux d'erreurs qui se produisent en raison du bruit sur la ligne. Il s'avère qu'il y a une limite au nombre de bits que vous pouvez entasser sur un fil. L'utilisation de plus de symboles entraîne plus d'erreurs, nécessitant plus de correction d'erreurs.

Nous utilisons cette technique dans la vraie vie. La télévision numérique utilise QAM-64, avec 64 états (et donc 6 bits par symbole). Ethernet utilise 4 niveaux de tension, donc 2 bits par symbole.

Edit: J'ai utilisé des taux de transmission de bits plutôt que de stockage, car il est plus courant de voir des symboles avec plus d'états en transmission, afin que je puisse rendre l'histoire plus claire. Si l'on souhaite examiner spécifiquement le stockage et le stockage seul, on pourrait regarder Cellules à plusieurs niveaux dans la mémoire flash, comme Quelqu'un Quelque Part mentionné dans les commentaires. Cette mémoire utilise exactement la même approche, stockant 3 bits comme 16 niveaux de charge différents d'un condensateur. (ou plus!)

105
Cort Ammon

Une cellule mémoire quaternaire peut stocker exactement autant d'informations que 2 cellules mémoire binaires:

Quaternary Binary
0          00
1          01
2          10
3          11

Donc, si vous avez le même nombre de cellules de mémoire, mais qu'elles sont quaternaires, vous avez alors deux fois plus de mémoire. Mais si cette cellule quadruple prend deux fois plus d'espace sur une puce, il n'y a aucun avantage.

Ou d'une autre manière, si vous aviez 1 gigaquad de stockage quartaire, il pourrait stocker autant d'informations que 2 gigabits de mémoire binaire normale, car chaque quadruple pourrait être exprimé avec deux bits.


D'une certaine manière, cette ligne de réflexion n'a qu'un intérêt académique. Vous pouvez déjà penser que les puces de mémoire stockent par exemple 2 ^ 32 cellules d'état, car vous ne pouvez pas en extraire 1 bit, vous obtenez toujours un mot complet. Et si à l'avenir quelqu'un venait à trouver un moyen de stocker ce mot dans des cellules physiques à 4 états plus efficacement que dans des cellules à 2 états, alors cela serait utilisé, mais il ne serait pas visible en dehors de la puce de mémoire, il gérerait toujours mots de mémoire pleine uniquement, qui peuvent avoir par exemple 2 ^ 32 états différents.

21
hyde

En théorie de base, oui. En réalité, non - parce que nous ne stockons pas les données en bits de toute façon (sur les disques durs). Cort Ammon couvre très bien les problèmes de transmission de données. La RAM, le cache et les SSD stockent les données sous forme de bits, mais les disques durs sont différents en raison de la nature de leur matériel physique et de nos efforts pour y stocker plus de données. La plupart des données sont toujours stockées sur les disques durs, je vais donc me concentrer sur ceux-ci. Je vais bien au-delà de l'explication que vous trouverez dans la plupart des sources, mais j'essaierai de citer les sources où je peux. Ces sources doivent être déterrées des profondeurs anciennes d'Internet, car il s'agit - dans une large mesure - de connaissances vraiment oubliées.

Premièrement, les disques durs stockent des informations avec des champs magnétiques sur la surface des plateaux de disques. La tête d'entraînement les lit en détectant le flux du changement dans ce champ - c'est beaucoup plus facile à mesurer que la direction et la force réelles du champ magnétique. mais si le champ est composé des 50 mêmes segments consécutifs, il ne peut pas réellement compter qu'il y en avait 50 - il lit un pic de flux lors de la lecture du premier segment, puis aucun flux pendant un certain temps après cela, et il ne peut pas suivre le temps suffisamment précis pour être certain que le champ était inchangé pour 50 segments.

Ainsi, le modèle de base (simplifié à l'extrême) consiste à stocker un bit sous la forme d'une paire de champs magnétiques. Le premier serait toujours un commutateur du segment précédent, et le second serait un flip pour représenter 1 ou aucun flip pour représenter 0. Ainsi, un 0 est FN (flip-null) et un 1 est FF (flip-flip). Le timing du variateur est suffisamment précis pour reconnaître la différence entre un pic de flux et deux pic de flux dans un segment. Ce format est appelé modulation de fréquence. Cela donne donc des signaux clairs, MAIS cela signifie que chaque bit de mémoire nécessite deux espaces sur le lecteur - ce qui est très inefficace. Aucun disque dur ne possédait donc cette forme d'encodage la plus élémentaire; il a utilisé des astuces de compression simples à la place. La plus simple est la modulation de fréquence modifiée, qui modifie le modèle de sorte que le basculement magnétique supplémentaire n'est utilisé que si un 0 est précédé d'un autre 0. Cela permet aux ingénieurs de regrouper près de deux fois plus de données dans le même espace, et a donc été utilisé sur le premiers disques durs, et est le format sur les disquettes. Après cela, un système plus avancé appelé Run Length Limited a été développé avec une idée générale similaire, dans laquelle je n'entrerai pas car il devient beaucoup plus compliqué et il existe plusieurs implémentations.

Mais nous n'utilisons aucun système comme celui-ci aujourd'hui. Au lieu de cela, nous utilisons un système appelé réponse partielle, maximum de vraisemblance (PRML). PRML exige que la tête lise une longueur et recueille l'échantillon magnétique, puis la compare à un ensemble de référence d'échantillons stockés pour déterminer celui auquel elle correspond le mieux. Il renonce à tout le concept de pics de flux et utilise à la place la correspondance de motifs (je simplifie trop, mais la simplification excessive en vaut la peine), et le motif correspond à un ensemble de bits. Il utilise des filtres de bruit et d'autres technologies pour éliminer les erreurs potentielles. Il est préférable de le considérer comme une forme d'onde complexe, et le disque dur sait comment traduire chaque forme d'onde en un ensemble de bits. En ce sens, les données sont en fait stockées davantage dans un format analogique que numérique, car le matériel physique peut mieux supporter les variations progressives de l'analogue que les sauts brusques du numérique.

Le meilleur guide pour cela est à http://www.pcguide.com/ref/hdd/geom/data.htm (appuyez sur le bouton Suivant plusieurs fois pour tout lire) et il y a quelques autres sources - principalement des personnes qui ont créé d'énormes dépôts de connaissances informatiques que personne n'a aucune raison de connaître. Une source supplémentaire décente (qui est bonne mais pas tout à fait parfaite à 100% pour autant que je sache) est à http://www.tomshardware.com/reviews/hard-drive-magnetic-storage-hdd,3005 -6.html

TL; DR: Les disques durs ne stockent pas les données dans un format quelque chose comme 1 et 0; ils utilisent à la place un traitement de signal complexe pour entasser les signaux dans le plus petit espace possible et le décoder lors de la lecture. Donc, ils sont vraiment indépendants de la base.

Je ne serais pas surpris que le stockage en base 4 ait été tenté sur des SSD ou RAM à un moment donné. Tout dépend de la physique et de la chimie des matériaux. Les ingénieurs et les scientifiques vont pousser ces matériaux dans la mesure du possible, et suivra toute voie donnant les meilleurs résultats.

9
user3685427

Oui, avoir plus d'états permettra à chaque "cellule" de stockage ou à chaque symbole sur une ligne de transmission de données de transporter plus d'informations.

Mais il n'y a pas de déjeuner gratuit, nous devons réellement pouvoir distinguer ces États. Il s'avère qu'il est facile de construire des portes logiques binaires et beaucoup plus difficile à construire des portes qui distinguent, traitent et régénèrent plus de deux niveaux logiques.

Et puis il y a la question des signaux atténués. Sur un système à deux niveaux, vous pouvez simplement concevoir votre seuil pour qu'il fonctionne avec l'atténuation la plus défavorable, sur un système à quatre états où une atténuation significative est attendue, vous devez adapter vos seuils à l'atténuation particulière de votre système, pas seulement au pire -atténuation du boîtier. En pratique, cela signifie que vous devez ajouter un système de mesure d'atténuation à votre système de communication.

Cela dit, il existe des situations où la complexité supplémentaire FAIT logique. De nombreux SSD utilisent désormais plus de deux niveaux par cellule flash (appelés MLC ou TLC), les protocoles de communication modernes à grande vitesse utilisent également presque toujours des codages à plusieurs niveaux.

6
Peter Green

Si un bit avait 4 états au lieu de deux dans un symbole (bit), alors oui, vous auriez deux fois plus de mémoire. Cela peut ou non prendre deux fois plus d'espace, selon la technologie utilisée.

Il y a un exemple concret que vous avez tous les jours devant vos yeux: Ethernet (qui n'est pas de la mémoire, mais c'est similaire dans la mesure où il transmet des données), vous avez, entre autres, l'ordinaire "Fast Ethernet" à 100 MBit 100BASE -TX, et vous avez un Ethernet 1GbE.

De toute évidence, 1GbE nécessite des fréquences 10 fois plus élevées que 100 MBit (comme 100 MBit nécessite une fréquence 10 fois plus élevée que 10 MBit), c'est pourquoi vous avez également besoin de câbles plus chers. Évidemment.

Oups ... ce n'est pas vrai du tout.

100 MBit ethernet transmet sur deux paires de câbles à 100 MHz tandis que GbE transmet à 125 MHz sur 4 paires de câbles.

Attendez, donc le GbE n'est vraiment que 2 1/2 fois plus rapide que l'Ethernet à 100 Mbit? Je reçois seulement 250 Mbits/s?

Non, il utilise également le codage 5-PAM, qui peut coder 2,32 bits par impulsion par paire de câbles, dont 2 bits sont utilisés comme informations réelles, et le reste rend le signal plus résistant au bruit. Grâce à ces bits fractionnaires, 1000BASE-T peut également supprimer le codage 8B10B.

Vous avez donc doublé le nombre de fils et légèrement augmenté la fréquence, mais vous obtenez 10 fois plus de débit!

Maintenant, si vous pensiez que c'était de la pure magie, regardez comment la télévision numérique par câble fonctionne , et si vous n'êtes toujours pas convaincu, examinez l'ADSL, qui utilise 32768-QAM pour coder 15 bits dans un symbole.
Même vieux fil de cuivre, même bande de fréquence, 15 fois plus de trucs qui passent.

MODIFIER:
Un autre exemple très évident de la vie réelle que j'ai complètement oublié (car il est tout simplement trop évident, apparemment!) Que vous avez sous les yeux tous les jours est: les clés USB.
Ceux qui utilisent couramment MLC mémoire flash. Qu'est-ce que c'est? Il s'agit d'un type de cellule mémoire qui stocke l'un des quatre niveaux de charge différents. C'est la plus petite unité à laquelle vous pouvez accéder au niveau matériel. Donc, vous pourriez dire que vos "bits" ont en effet 4 états (ils ne le faites pas, vous sortez vraiment deux bits au lieu d'un, et vous ne pouvez lire que des secteurs complets de l'appareil de toute façon. .. mais vous pourriez sans doute le voir de cette façon).
Même nombre de cellules, mais double la mémoire. Moins cher, plus petit, un peu moins fiable, mais ... avant tout, moins cher.

2
Damon

Vous serez peut-être intéressé de savoir que les Russes ont développé une puce qui était ternaire , au lieu de binaire. Cela signifie que chaque symbole peut avoir les valeurs de -1, 0, ou 1. Ainsi, chaque porte physique pourrait stocker "trois" valeurs, au lieu de "deux".

Futures applications potentielles

Avec l'avènement des composants binaires produits en masse pour les ordinateurs, les ordinateurs ternaires ont perdu de leur importance. Cependant, Donald Knuth fait valoir qu'ils seront réintégrés dans le développement à l'avenir pour profiter de l'élégance et de l'efficacité de la logique ternaire.

Comme vous commencez à soupçonner, il peut y avoir un moyen plus efficace de mettre en œuvre un système de numérotation de base. (Bien que cette capacité à exprimer cela plus efficacement dépend de notre capacité à fabriquer physiquement sur du matériel.) Il s'avère que la constante e , la base de le logarithme naturel (~ 2,71828) a la meilleure économie radix, suivi de 3, puis 2, puis 4.

L'économie radix est le nombre que vous pouvez représenter par rapport au nombre de symboles dont vous avez besoin pour le faire.

Par exemple, le nombre mathématique trois est représenté par 3 en base 10, mais comme 11 en base 2 (binaire). La base 10 peut exprimer des nombres plus grands avec moins de symboles que les binaires, mais la table des symboles de la base 10 est 5 fois plus grande (0 ... 9) que la table des symboles de la base 2 (0, 1). La comparaison de la puissance expressive à la taille de l'ensemble de symboles est appelée "économie radix" (radix étant le numéro de la base, par exemple, 2 en binaire, ou "base 2"). La question naturelle qui suit est: où est-ce que je veux être en termes de compromis? Quel numéro dois-je adopter comme radix? Puis-je optimiser le compromis entre la puissance expressive et la taille du jeu de symboles?

Si vous regardez le graphique dans l'article économie radix dans wikipedia, vous pouvez comparer les économies de différentes bases. Dans notre exemple, la base 2 a une économie radix de 1,0615, tandis que la base 10 a une économie de 1,5977. Plus le nombre est bas, mieux c'est, donc la base 2 est plus efficace que la base 10.

Votre question de base 4 a une efficacité de 1,0615, qui est de la même taille que la base 2 (ou binaire), donc l'adopter sur la base 2 ne vous donne que la même taille exacte de stockage par numéro, en moyenne.

Si vous vous demandez, alors y a-t-il un nombre idéal à adopter comme base, ce graphique vous montre que ce n'est pas un nombre entier, mais la constante mathématique e (~ 2,71828) qui est la meilleure, ayant une économie de 1.0. Cela signifie que c'est aussi efficace que possible. Pour tout ensemble de nombres, en moyenne, la base e vous donnera la meilleure taille de représentation de celle-ci, compte tenu de sa table de symboles. C'est le meilleur "coup pour votre argent".

Ainsi, bien que vous pensiez que votre question est peut-être simple et basique, elle est en fait subtilement complexe et un problème très utile à considérer lors de la conception d'ordinateurs. Si vous pouviez concevoir un ordinateur discret idéal, l'utilisation de la base 4 offre le même accord - le même espace de coût - que le binaire (base 2); l'utilisation de la base 3, ou ternaire, offre une meilleure offre que le binaire (et les Russes ont construit un ordinateur physique fonctionnel avec une représentation de la base 3 dans les transistors); mais idéalement, vous utiliseriez la base e. Je ne sais pas si quelqu'un a construit un ordinateur physique fonctionnel avec la base e, mais mathématiquement, cela offrirait une meilleure quantité d'espace sur les binaires et les ternaires - en fait, la meilleure affaire de tous les nombres réels.

2
user1936

Croiriez-vous que je peux encoder la somme totale des connaissances humaines avec une seule correspondance?

Si j'encode un peu en une seule correspondance, les symboles pourraient ressembler à ceci:

enter image description hereenter image description here

Avec suffisamment de matchs, je peux tout dire. Mais je peux en dire deux fois plus avec la même correspondance si j'ajoute deux symboles supplémentaires. Cela pourrait ressembler à ceci:

enter image description hereenter image description here

Deux fois plus d'informations avec le même match! Eh bien pourquoi pas? Et bien pourquoi arrêter? Faites pivoter chaque symbole de 45 degrés et nous doublons à nouveau. 30, 15, indéfiniment. Bientôt, j'ai assez de symboles pour pouvoir dire tout et n'importe quoi avec une seule correspondance! Une fois que je fais cela, nous avons un problème. Que dit ce match?

enter image description here

Comment pouvez-vous être sûr du symbole qui est maintenant? De combien de temps avez-vous besoin pour être sûr? Voilà le hic. Plus j'ajoute de symboles, plus il vous faut d'efforts pour les distinguer.

Est-ce qu'avoir 4 états par "bit" au lieu de 2 signifierait le double de l'espace de stockage?

Si nous parlons par match, alors bien sûr. Mais, même si cela n'a pas ralenti notre vitesse de lecture des correspondances, nous occupons maintenant plus d'espace sur le comptoir de ma cuisine. C'est toujours quelque chose.

2
candied_orange