Почему x86 немного порядковый? - PullRequest
42 голосов
/ 03 марта 2011

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

Ответы [ 3 ]

61 голосов
/ 11 марта 2011

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

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

42 голосов
/ 28 марта 2016

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

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

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

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

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

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

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

Стэн Мазор из Intel, работавший над проектами 4004 и 8008, подробно останавливается на «откате» в Устная история панели на Intel8008 Микропроцессор :

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

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

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

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

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

3 голосов
/ 03 марта 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...