Рубрика «i386»

Месяц назад я попытался сосчитать, сколько разных инструкций поддерживается современными процессорами, и насчитал 945 в Ice Lake. Комментаторы затронули интересный вопрос: какая часть всего этого разнообразия реально используется компиляторами? Например, некто Pepijn de Vos в 2016 подсчитал, сколько разных инструкций задействовано в бинарниках у него в /usr/bin, и насчитал 411 — т.е. примерно треть всех инструкций x86_64, существовавших на тот момент, не использовались ни в одной из стандартных программ в его ОС. Другая любопытная его находка — что код для x86_64 на треть состоит из инструкций mov. (В общем-то известно, что одних инструкций mov достаточно, чтобы написать любую программу.)

Я решил развить исследование de Vos, взяв в качестве «эталонного кода» компилятор LLVM/Clang. У него сразу несколько преимуществ перед содержимым /usr/bin неназванной версии неназванной ОС:

  1. С ним удобно работать: это один огромный бинарник, по размеру сопоставимый со всем содержимым /usr/bin среднестатистического линукса;
  2. Он позволяет сравнить разные ISA: на releases.llvm.org/download.html доступны официальные бинарники для x86, ARM, SPARC, MIPS и PowerPC;
  3. Он позволяет отследить исторические тренды: официальные бинарники доступны для всех релизов начиная с 2003;
  4. Наконец, в исследовании компиляторов логично использовать компилятор и в качестве подопытного объекта :-)

Начну со статистики по мартовскому релизу LLVM 10.0:

ISA Размер бинарника Размер секции .text Общее число инструкций Число разных инструкций
AArch64   97 МБ 74 МБ 13,814,975 195
ARMv7A 101 МБ 80 МБ 15,621,010 308
i386 106 МБ 88 МБ 20,138,657 122
PowerPC64LE 108 МБ 89 МБ 17,208,502 288
SPARCv9 129 МБ 105 МБ 19,993,362 122
x86_64 107 МБ 87 МБ 15,281,299 203

В прошлом топике комментаторы упомянули, что самый компактный код у них получается для SPARC. Здесь же видим, что бинарник для AArch64 оказывается на треть меньше что по размеру, что по общему числу инструкций.

А вот распределение по числу инструкций:
Сколько инструкций процессора использует компилятор? - 1 Сколько инструкций процессора использует компилятор? - 2 Сколько инструкций процессора использует компилятор? - 3 Сколько инструкций процессора использует компилятор? - 4 Сколько инструкций процессора использует компилятор? - 5 Сколько инструкций процессора использует компилятор? - 6Читать полностью »

Древности: Бенчмарк 386-го процессора и лихие девяностые - 1 Из 2019 года кажется, что компьютер начала девяностых не способен ни на что. Видео не играет. Музыку в MP3 не может, или может, но с таким качеством, что вам это не понравится. Crysis will not run. Но после того, как я собрал и запустил винтажную систему из запчастей почти 30-летней давности, мне стало интересно: а как именно он не способен? В каких единицах это выражается? И как это измерить?

С измерениями все непросто, если пытаться сравнивать древний компьютер с современным: на новых ПК старые бенчмарки запустить если и получится, то результаты будут странные. Более современный софт не взлетит на старом компьютере. Сегодня будет более-менее занудный технический пост, в котором я сравниваю вычислительную мощность 386-го процессора с ноутбуком на базе Pentium III и с десктопом на базе Intel Xeon X5690. Спойлер: производительность в девяностые росла куда быстрее, чем в нулевые.
Читать полностью »

Тот момент в самом начале сборки, когда кое-какие железки уже добыты, но еще ничего не работает, и единственное, чем можно заняться, это их рассматривать. И хорошо, это полезно. Персональные компьютеры развиваются настолько быстро, что даже устройства пятнадцатилетней давности воспринимаются, как нечто древнее, из разряда музейных ценностей. Материнской плате моего нового-старого компьютера на базе 386-го процессора 27 лет. Это уже не средневековые фолианты, скорее артефакты каменного века. Информации про железо эпохи «до веба» довольно мало, часто требуется реставрация разной степени сложности. В общем до того, как вы услышите приветственный писк, нужна подготовительная работа.

Древности: рассматриваем материнскую плату 386-го компьютера - 1

Начало девяностых в IT — время большого разнообразия, непрерывного прогресса и регулярной работы над ошибками. Современные компьютеры значительно больше ограничены различными промышленными стандартами, а тогда разработка в стиле «кто во что горазд» была нормой. Спустя три десятилетия на это накладывается проблема ограниченного выбора и высоких цен. Сегодня я расскажу об основном железе старого компьютера на 386-м процессоре (без которого не заработает), буднях коллекционера древностей, покажу первый запуск и погоняю винтажный бенчмарк.
Читать полностью »

Эволюция переключения контекста x86 в Linux - 1

В прошлые выходные, изучая интересные факты об аппаратном переключателе контекста 80386, я вдруг вспомнил, что первые версии ядра Linux полагались именно на него. И я погрузился в код, который не видел уже много лет. Сейчас я решил описать это чудесное путешествие по истории Linux. Я покажу все самородки и забавные артефакты, которые нашёл по пути.

Задача: проследить, как изменялось переключение контекста в ядре Linux от первой (0.01) до последней версии LTS (4.14.67), с особым акцентом на первую и последнюю версии.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js