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

Почему x86 маленький endian?

Реальный вопрос, который я задавал себе в последнее время, заключается в том, какие варианты дизайна привели к тому, что x86 представляет собой небольшую архитектуру endian вместо большой архитектуры endian?

4b9b3361

Ответ 1

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

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

Ответ 2

Это довольно археологически, но, скорее всего, это был не выбор Intel. Разработанные Intel процессоры с обратной совместимостью являются главной задачей, упрощая механический перевод ассемблерного кода со старой архитектуры на новую. Это переводит тактовую частоту с 8086 до 8080 на первый микропроцессор, в котором имеет значение порядок байтов, Intel 8008.

Этот процессор был запущен, когда CTC (позже названный DataPoint) пришел в Intel, чтобы попросить помощи с их продуктом терминала данных. Первоначально разработанный Виктором Пуром и Гарри Пайлом, он имел логический дизайн процессора в MSI (много чипов). Они попросили Intel предоставить им решение для хранения данных с использованием 512-битных сдвиговых регистров.

Это был не любимый продукт Intel, они выполняли такие заказные работы, чтобы выдержать время разгона 1024-битного чипа ОЗУ. Тедд Хофф, Стэн Мазор и Ларри Поттер рассмотрели проект и предложили процессор LSI с RAM.instead. Это в конечном итоге стало 8008. Бедным и Пайлу приписывают разработку набора инструкций.

То, что они выбрали little-endian, достоверно из этого интервью с Poor. Он пропускает это довольно быстро, и интервью довольно скандально, но соответствующая часть на странице 24:

Shustek: Так, например, сначала запоминается младший значащий байт чисел, потому что он был последовательным, и вам нужно было сначала обработать младшие биты.
Бедный: Вы должны были сделать это таким образом. У тебя не было выбора.

Замечание "не было выбора" является странным, которое, по-видимому, применимо только к последовательному дизайну процессора MSI. Также причина, по которой они покупали сменные регистры вместо оперативной памяти. Это снова появляется на странице 34:

Хендри: Ты помнишь какие-то отстранения от них по поводу дизайна или каких-либо из этих деталей...
Плохо: один из них был один бит против 8 бит. Они хотели 8-битную широкую часть и, в конечном счете, так, как они ее построили.
Бедный: Но это все еще циркулировало. Но, вы видите, есть интересные моменты, будь то большой конец или небольшая конечная часть могла быть изменена в этот момент, но мы этого не сделали. Мы просто оставили это...
Хендри: Даже после того, как вы пошли на восемь бит?
Плохо: верно. Именно поэтому линейка продуктов Intel такова сегодня

Стэн Мазор из Intel, работавший над проектами 4004 и 8008, подробно рассказывает об "отступлении" в панели устной истории на микропроцессоре Intel 8008:

И, наконец, оригинальный дизайн для Datapoint... что они хотели, это [бит] серийный компьютер. И если вы думаете о последовательном компьютере, вы должны обрабатывать все адреса и данные по одному разу, и рациональный способ сделать это: low- от бита к старшему, потому что это способ передачи будет распространяться, Таким образом, это означает, что [в] самой инструкции перехода, способ, которым 14-битный адрес будет помещен в последовательный компьютер, является битовым задом наперед, как вы смотрите на это, потому что это способ, которым вы хотите обработать его. Что ж, мы собирались построить параллельную байтовую машину, а не битовую серию и наш компромисс (в духе клиента и только для него), мы поставили байты в обратном направлении. Сначала мы ставим байт low-, а затем старший байт. С тех пор этот формат был назван "Little Endian", и это противоречит тому, что вы считаете естественным. Ну, мы сделали это для Datapoint. Как вы видите, они никогда не использовали микросхему [8008], и поэтому это было в некотором смысле "ошибкой", но этот [формат Little Endian] дожил до 8080 и 8086 и является одним из признаков этого семьи.

Итак, Intel хотела построить параллельный байтовый процессор с 8 отдельными контактами для доступа к шине данных. Причина, по которой Intel настаивала на компромиссе, объясняется в "Микропроцессорах Intel: 8008–8086" Стивена П. Морса и др.:

Это инвертированное хранилище, которое должно было преследовать все процессоры, появившиеся в 8008 году, было результатом совместимости с последовательным битовым процессором Datapoint, который обрабатывает адреса от младшего к старшему. Это инвертированное хранилище действительно имело преимущество в те первые годы, когда чипы памяти 256 на 8 были популярны: оно позволяло всем чипам памяти выбирать байт и фиксировать его для вывода, ожидая шести старших битов, которые выбрали чип. Это ускорило доступ к памяти.

В конечном счете, CTC не использовал 8008, он был закончен на год позже, и к тому времени они уже внедрили процессор MSI. Дизайн микропроцессора, безусловно, был интеллектуальной собственностью CTC, однако они обменяли права на него с Intel за стоимость разработки. Немного ошибки :) Судебные иски о патентных правах последовали позже.

Так что, как и было сказано, Intel оказалась с прямым порядком байтов из-за работы последовательных портов.

Ответ 3

Он отражает разницу между тем, что память всегда должна быть организована по байтам за раз в сравнении с тем, что она должна быть организована единицу за раз, где размер единицы может варьироваться (байт, слово, слово и т.д.)