Los diversos términos "endianos" pueden sonar un poco extraños, pero el concepto subyacente es sencillo. Si aún no eres un experto en endian, ¡sigue leyendo!
Big endian, little endian, endianness. ¿Qué significan estos términos y cómo afectan a los ingenieros?
Resulta que esta no es la pregunta correcta. Un "endian" no es un término independiente cuando se discuten datos. Más bien, los términos "big-endian" y "little-endian" se refieren a formatos de disposición de bytes.
Los términos se originan de Johnathan Swift Viajes de Gulliver, En la que se desata una guerra civil entre quienes favorecen romper huevos hervidos en el extremo grande ("big-endians") y quienes favorecen romperlos en el extremo pequeño ("little-endians").
En 1980, el científico informático israelí Danny Cohen escribió un artículo ("Sobre guerras santas y una súplica de paz") en el que presentaba una explicación irónica de una "guerra" similarmente insignificante causada por una sola pregunta:
"¿Cuál es el orden de bytes apropiado en los mensajes?"
Para explicar este problema, tomó prestados los términos big endian y little endian de Swift para describir los dos lados opuestos del debate en torno a lo que llamó "endianness".
Cuando Swift estaba escribiendo Viajes de Gulliver En algún momento del primer cuarto del siglo XVIII, ciertamente no tenía idea de que su trabajo algún día serviría de inspiración para los neologismos del siglo XX que especifican la disposición de los datos digitales en la memoria y los sistemas de comunicación. Pero tal es la vida, a menudo extraña, y siempre impredecible.
A pesar del tratamiento satírico de Cohen de los grandes endios frente a los pequeños endios, la cuestión del endianismo es realmente muy importante para la forma en que manejamos los datos.
Una unidad de información digital es una secuencia de unos y ceros. Estos y ceros comienzan en el bit menos significativo (LSb: observe la “b” en minúscula) y finalizan en el bit más significativo (MSb).
Esto parece bastante simple; Consideremos el siguiente escenario hipotético:
Un procesador de 32 bits está listo para almacenar datos y, en consecuencia, transfiere 32 bits de datos a 32 unidades de memoria correspondientes. A estas 32 unidades de memoria se les asigna colectivamente una dirección, por ejemplo, 0x01. El bus de datos en el sistema está diseñado de tal manera que no hay posibilidad de mezclar el LSb con el MSb, y todas las operaciones usan datos de 32 bits, incluso si los números involucrados podrían representarse fácilmente por 16 o incluso 8 bits. Cuando el procesador necesita acceder a los datos almacenados, simplemente lee 32 bits de la dirección de memoria 0x01. Este sistema es robusto y no es necesario introducir el concepto de endianidad.
Es posible que haya notado que la palabra "byte" nunca se mencionó en ninguna parte de la descripción de este hipotético procesador. Todo se basa en datos de 32 bits. ¿Por qué es necesario dividir estos datos en porciones de 8 bits, si todo el hardware está diseñado para procesar datos de 32 bits? Bueno, aquí es donde la teoría y la realidad divergen. Los sistemas digitales reales, incluso aquellos que pueden procesar directamente datos de 32 o 64 bits, hacen un uso extensivo del segmento de datos de 8 bits conocido como byte.
El proceso de almacenar datos digitales es un medio conveniente para demostrar el endianismo en acción, y para explicar la diferencia entre big endian y little endian. Imagina que estamos usando un microcontrolador de 8 bits. Todo el hardware en este dispositivo está diseñado para datos de 8 bits, incluidas las ubicaciones de memoria. Por lo tanto, la dirección de memoria 0x00 puede almacenar un byte, la dirección 0x01 almacena un byte, etc.
Digamos que decidimos programar este microcontrolador utilizando un compilador de C que nos permite definir variables de 32 bits (es decir, de 4 bytes). El compilador necesita almacenar estas variables en la memoria. Tiene sentido almacenarlos en ubicaciones de memoria contiguas, pero lo que no está tan claro es si el byte más significativo (MSB, tenga en cuenta la "B" mayúscula) o el byte menos significativo (LSB) debe almacenarse en la dirección de memoria más baja.
En otras palabras, ¿debería el sistema utilizar una disposición de memoria big-endian o una disposición de memoria little-endian?
Realmente no hay una respuesta correcta o incorrecta aquí; cualquiera de los dos arreglos puede ser perfectamente efectivo. La decisión entre big endian y little endian podría basarse, por ejemplo, en mantener la compatibilidad con versiones anteriores de un procesador dado, lo que, por supuesto, plantea la cuestión de cómo los ingenieros tomaron la decisión del primer procesador en esa familia de productos. No lo sé; tal vez el CEO lanzó una moneda.
Big endian indica una organización de datos digitales que comienza en el extremo "grande" de la palabra de datos y continúa hacia el extremo "pequeño", donde "grande" y "pequeño" corresponden a los bits más significativos y los bits menos significativos , respectivamente.
Little endian indica una organización que comienza en el "pequeño" final y continúa hacia el "gran" final.
La decisión entre el formato big-endian y el formato little-endian va más allá de los arreglos de memoria y los procesadores de 8 bits. El byte es una unidad universal en sistemas digitales. Solo piense en las computadoras personales: el espacio en el disco duro se mide en bytes, la RAM se mide en bytes, las velocidades de transferencia de USB se reportan en bytes por segundo (o bits por segundo), a pesar del hecho de que la computación personal de 8 bits es completamente obsoleta. La cuestión del endianness entra en juego cuando un sistema digital combina el almacenamiento basado en bytes o la transferencia de datos con valores numéricos que son más largos que 8 bits.
Los ingenieros deben conocer el endianismo cuando se almacenan, transfieren o interpretan los datos. La comunicación en serie es especialmente susceptible a problemas de endian, porque es inevitable que los bytes contenidos en una palabra de datos de múltiples bytes se transfieran secuencialmente, generalmente de MSB a LSB o de LSB a MSB.
Sin embargo, los buses paralelos no son inmunes a la confusión endiana, ya que el ancho del bus puede ser más corto que el ancho de los datos, en cuyo caso se tendrá que elegir una orden big endian o little endian para el paralelo de un byte a la vez transferencias de datos
Un ejemplo de endian-based interpretación es cuando los bytes de datos se transfieren desde un módulo sensor a una PC a través del "puerto serie" (lo que en la actualidad es casi seguro que se utiliza una conexión USB como puerto serie). Digamos que todo lo que necesita hacer es trazar estos datos usando algún código MATLAB. Cuando incorpora los bytes en su entorno MATLAB y los convierte en variables normales, debe interpretar los valores de los bytes individuales de acuerdo con el orden en que se almacenan los bytes en la memoria.
Realmente es muy malo que no se haya establecido un esquema endian universal desde el comienzo de la era digital. Ni siquiera quiero saber cuántas horas colectivas de vidas humanas se han dedicado a resolver los problemas causados por la falta de coincidencia entre los endians.
En cualquier caso, no podemos cambiar el pasado, y tampoco es probable que convencamos a todas las compañías de software y semiconductores de la Tierra para que revisen sus líneas de productos con el fin de lograr una endianidad uniforme. Lo que nosotros puede Hacer es buscar la coherencia en nuestros propios diseños y proporcionar documentación clara si existe la posibilidad de conflicto entre dos partes de un sistema.
ga('create', 'UA-1454132-1', 'auto'); ga('require', 'GTM-MMWSMVL'); ga('require', 'displayfeatures'); ga('set',{'dimension1':'computing,memory,computers-peripherals,digital-ics,embedded-software,memory,computers-peripherals'}); ga('set',{'contentGroup1':'computing,memory,computers-peripherals,digital-ics,embedded-software,memory,computers-peripherals'}); ga('send', 'pageview');
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n; n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '1808435332737507'); // Insert your pixel ID here. fbq('track', 'PageView'); fbq('track', 'ViewContent', { content_ids: ['computing','memory','computers-peripherals','digital-ics','embedded-software','memory','computers-peripherals'], content_type: 'category'});
_linkedin_data_partner_id = "353081"; (function(){var s = document.getElementsByTagName("script")[0]; var b = document.createElement("script"); b.type = "text/javascript";b.async = true; b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js"; s.parentNode.insertBefore(b, s);})(); } if(jstz.determine().name().indexOf("Europe") === -1) { showSocialCode(); // NOT EU } else { showSocialCode(); window.addEventListener("load", function () { window.cookieconsent.initialise({ "palette": { "popup": { "background": "#252e39" }, "button": { "background": "#14a7d0" } }, "type": "opt-out", "content": { "message": "This website uses tracking cookies to ensure you get the best experience on our website.", "href": "https://www.allaboutcircuits.com/privacy-policy/", "dismiss": "OK, GOT IT" }, onInitialise: function (status) { var type = this.options.type; var didConsent = this.hasConsented(); if (type == 'opt-out' && didConsent) { console.log("eu"); //showSocialCode(); } },
onStatusChange: function (status, chosenBefore) { var type = this.options.type; var didConsent = this.hasConsented(); if (type == 'opt-out' && didConsent) { console.log("eu"); //showSocialCode(); } },
onRevokeChoice: function () { var type = this.options.type; if (type == 'opt-out') { console.log("eu"); //showSocialCode(); } },
}) }); }
Los días felices de la PDA y Blackberry han quedado definitivamente atrás, pero el factor…
Tutorial sobre cómo pronosticar usando un modelo autorregresivo en PythonFoto de Aron Visuals en UnsplashForecasting…
Si tienes un iPhone, los AirPods Pro son la opción obvia para escuchar música, ¡aunque…
Ilustración de Alex Castro / The Verge Plus nuevos rumores sobre el quinto Galaxy Fold.…
Se rumorea que los auriculares premium de próxima generación de Apple, los AirPods Max 2,…
El desarrollador Motive Studio y el editor EA han lanzado un nuevo tráiler de la…