Подтвердить что ты не робот

Причина эндиантности?

Итак, мне было интересно, почему в некоторых архитектурах используются малоэтажные и другие big-endian. Я помню, что я где-то читал, что это связано с производительностью, однако я не понимаю, как на это может повлиять утверждение. Также я знаю, что:

The little-endian system has the property that the same value can be read from memory at different lengths without using different addresses.

Что кажется приятной особенностью, но, несмотря на это, многие системы используют big-endian, что, вероятно, означает, что у big-endian есть и некоторые преимущества (если это так?).

Я уверен, что там больше, скорее всего, перейдет на уровень аппаратного обеспечения. Хотелось бы узнать подробности.

4b9b3361

Ответ 1

Я немного искал сеть, чтобы получить дополнительную информацию по этому вопросу, и есть довольно много ответов и рассуждений, чтобы объяснить, почему предпочтительнее использовать большой или маленький порядок. Я сделаю все возможное, чтобы объяснить здесь, что я нашел:

Little-младший

Очевидным преимуществом для малозначности является то, о чем вы уже упоминали в своем вопросе... факт, что данный номер может быть прочитан как число разного количества бит из одного и того же адреса памяти. Как говорится в статье в Википедии по теме:

Хотя это свойство little-endian редко используется непосредственно высокоуровневыми программистами, оно часто используется оптимизаторами кода, а также программистами на языке ассемблера.

Из-за этого математические функции, содержащие множественные исправления, легче писать, потому что значение байта всегда будет соответствовать адресу памяти, тогда как с большими номерами это не так. Это, по-видимому, аргумент для малозначимости, который цитируется снова и снова... из-за его распространенности я должен был бы предположить, что преимущества этого упорядочения относительно значительны.

Еще одно интересное объяснение, которое я нашел, касается сложения и вычитания. При добавлении или вычитании многобайтовых чисел младший значащий байт сначала должен быть извлечен, чтобы увидеть, есть ли перенос в более значимые байты. Поскольку младший байт сначала считывается в числах с маленькими номерами, система может распараллеливать и начинать вычисление по этому байту при извлечении следующих байтов.

тупоконечника

Возвращаясь к статье в Википедии, заявленное преимущество чисел с большими номерами состоит в том, что размер числа можно более легко оценить, потому что наиболее значительная цифра на первом месте. Связанный с этим факт состоит в том, что просто сказать, является ли число положительным или отрицательным, просто изучив бит в смещении 0 в младшем байте.

То, что также указано при обсуждении преимуществ big-endianness, заключается в том, что двоичные цифры упорядочены, так как большинство людей заказывают базовые цифры 10. Это выгодно по производительности при преобразовании из двоичного в десятичное.


Хотя все эти аргументы интересны (по крайней мере, я так думаю), их применимость к современным процессорам - другое дело. В частности, аргумент сложения/вычитания наиболее важен для 8-битных систем...

Для моих денег малозначительность, кажется, имеет наибольший смысл и, безусловно, наиболее распространена при просмотре всех устройств, которые ее используют. Я думаю, что причина, по которой big-endianness по-прежнему используется, больше по причинам наследия, чем производительности. Возможно, когда-то дизайнеры данной архитектуры решили, что big-endianness предпочтительнее, и, поскольку архитектура развивалась на протяжении многих лет, континент остался прежним.

Параллелью, которую я рисую здесь, является JPEG (что является big-endian). JPEG имеет формат большой буквы, несмотря на то, что практически все машины, которые его потребляют, малодушны. В то время как можно спросить, какие преимущества для JPEG являются большими, я бы рискнул и сказал, что для всех целей и целей аргументы производительности, упомянутые выше, не делают разницы. Дело в том, что JPEG был спроектирован таким образом, и пока он остается в использовании, таким образом он должен оставаться.

Ответ 2

Я бы предположил, что когда-то были разработчики аппаратного обеспечения первых процессоров, которые решили, какая консистенция лучше всего интегрируется с их предпочтительной/существующей/запланированной микроархитектурой для чипов, которые они разрабатывали с нуля.

После установления и для соображений совместимости континент более или менее переносится на более поздние поколения аппаратных средств; который будет поддерживать аргумент "legacy" для того, почему все еще существуют оба вида сегодня.