2009-05-27 12 views
11

Pourquoi certains manifacturers processeur décident d'utiliserQuels sont les avantages des différentes endiannesses?

  • peu endian
  • Big Endian
  • moyen endian
  • Tous les autres?

? J'ai entendu dire qu'avec big endian on peut trouver plus vite, si un nombre est négatif ou positif, parce que ce bit est le premier. (Cela n'a pas d'importance sur les processeurs modernes, car les bits individuels ne sont plus accessibles.)

+5

Est-ce que l'end médian est là où vous avez votre œuf sur le côté et le brisez au milieu? – workmad3

+0

L'endoyen moyen est le schéma utilisé par le PDP-11: Bits 15..8, puis 7..0, 31..24, 23..16. – finnw

+0

Donc, l'endian moyen est juste 16 bit little endian –

Répondre

15

L'avantage de peu d'endianness est qu'une variable peut être lue n'importe quelle longueur en utilisant la même adresse. Par exemple, une variable de 32 bits peut être lue comme une variable de 8 bits ou de 16 bits sans changer l'adresse. Cela peut avoir un intérêt limité ces jours-ci, mais dans les jours d'assembleur et de la mémoire limitée, il pourrait être un avantage significatif

+1

Qu'en est-il du gros boutiste? –

+0

Je ne suis pas sûr qu'il y ait un avantage réel pour big endian, autre que la compatibilité avec d'autres systèmes. Dans la plupart des langages de haut niveau, l'endianisme n'est pas pertinent de toute façon. –

+8

L'un des avantages de big-endian est que vous pouvez lire les valeurs 16 bits et 32 ​​bits comme le font la plupart des humains; de gauche à droite. Un vidage de mémoire de 4 octets qui dit 'ffaa8800' est en fait' 0xffaa8800' pas '0x0088aaff' comme little-endian serait. – PeyloW

1

L'utilisation de l'endianness de la CPU (peu importe ou peu) vous donne l'avantage de vitesse sur l'arithmétique: vous pouvez ajouter, soustraire les entiers multi-octets directement dans la mémoire. L'utilisation d'un endianness prédéfini et prescrit (peu importe ou petit) dans un format de fichier vous donne l'avantage de pouvoir lire le fichier sur n'importe quel système, peu importe l'endianness du CPU de l'autre système. Les systèmes avec la bonne endianness peuvent lire le fichier plus rapidement (si la routine de lecture est écrite et optimisée correctement), mais même les systèmes avec la mauvaise endianness peuvent le lire. Habituellement, la différence de vitesse est négligeable (sauf pour les très gros fichiers avec beaucoup d'entiers), donc c'est une bonne idée de mesurer d'abord le gain de vitesse maximum possible de l'optimisation de la routine de lecture.

Certains formats de fichiers (par exemple TIFF) prennent en charge les deux extrémités. Dans ce cas, il est recommandé de générer le fichier avec l'endianness du processeur, en supposant que le fichier sera post-traité sur la même machine ou sur une machine similaire.

+2

En fait, pour un gros fichier, même si seulement des entiers, vous allez être limité par la vitesse à laquelle vous pouvez le lire à partir du disque ou du réseau si le seul traitement dont vous avez besoin faire est l'échange se termine. En fait, sur les processeurs modernes, vous pouvez faire beaucoup plus de travail avant d'être plus lent que vos E/S, c'est pourquoi souvent stocker des fichiers sur un disque compressé et les décompresser à la volée est plus rapide que juste traiter un fichier non compressé. –

+0

Pouvez-vous expliquer comment Endianness est important pour la lecture des fichiers. Comment est-ce important si je lis un fichier texte? – Geek

+2

Eh bien, si par exemple vous lisez un fichier qui est un fichier texte stockant des caractères UTF16LE (petit boutiste), alors si votre format natif était UTF16BE (grand), vous deviez inverser le sens des caractères tels qu'ils étaient lus. Cependant, comme le fait remarquer Curt Samson, cela ne fait probablement pas grande différence puisque la vitesse du processeur et de la mémoire principale est beaucoup plus élevée que celle du disque. –

3

Il n'y a aucun avantage particulier du gros ou petit endian en tant que tel, à l'exception de l'endianness native du processeur ou de la gestion de l'endianness des fichiers spécifiés.

La raison pour laquelle coexistent grand et petit endian réside dans le fait que différents fabricants d'UC utilisent des conventions différentes pour représenter les données multioctets, et aucune norme n'est apparue à ce moment.

+0

ayant étudié l'électronique, je suis familier avec l'ordre des bits, mais l'ordre des octets semble vraiment exotique. – user2284570

0

En peu endian vous ne prenez pas la peine de changer l'adresse, mais dans le grand endian vous devez: http://www.noveltheory.com/techpapers/endian.asp

Je ne sais pas si le petit boutiste a un avantage sur le gros boutiste dans les processeurs modernes. Je -naïd- pense que changer l'adresse coûte le picowatts de puissance du CPU :)

0

Certaines opérations bénéficient d'avoir des parties d'une valeur disponible avant une autre partie. Lors de l'addition de deux nombres non signés ou complémentaires de deux qui sont trop grands pour être lus en une seule fois, les bits inférieurs du résultat peuvent être calculés avant que les bits supérieurs soient disponibles, mais pas vice versa, impliquant que l'ordre little-endian y est avantageux. Lors de l'accès à une puce flash série, le décodage des lignes ne peut commencer que lorsque tous les bits qui définissent la ligne (généralement tous les 8-12 bits sauf les plus significatifs, selon la puce) deviennent disponibles, ce qui implique un ordre big-endian Là.

+0

La RAM moderne, le décodage et la logique d'exécution ont le plus souvent une largeur supérieure à 8 bits. Cela n'a de sens que sur les PICs série/bus anciens ou étroits. – Barry

+0

@Barry: Les cas que je connais où le little-endian est avantageux proviennent de la possibilité de commencer les opérations sur les bits inférieurs d'un nombre avant que tous les bits supérieurs soient disponibles. De tels cas se posent beaucoup moins souvent aujourd'hui que dans les années passées, mais le fait que le matériel utilisé pour bénéficier de ces capacités est presque certainement la raison pour laquelle le petit-boutiste est commun aujourd'hui. – supercat

Questions connexes