LINUX.ORG.RU
ФорумTalks

Продолжение статей про обзор и тестирование ПЭВМ Эльбрус 401‑PC

 ,


0

2

Сотрудник МЦСТ отвечает на насущные вопросы https://geektimes.ru/post/271974/

Линукс тут при том что в статье рассказывают и про ОС Эльбрус и про планы вовсе слиться с пакетной базой дебиан.

Так же в статье есть и про двоичный транслятор, как он работает и немного устных рекомендаций про написание кода под архитектуры с широким коммандным словом:

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

И есть вот такой вот пример: До / После

В сваязи с чем у меня тогда есть вопрос - если у меня на каждой итерации цыкла парсится текст, то есть строка разбивается на несколько частей и обрабатывается, например:

var textMatches = {
   lines: [],
   words: [],
   chars: {}
}

for (var i = 0, lm = someText.match(/.+/g); i < lm.length; i++) {
    textMatches.lines.push(lm[i])
    for (var j = 0, wm = lm[i].match(/[A-zА-я]+/g); j < wm.length; j++) {
        textMatches.words.push(wm[j]);
        for (var y = 0, cm = wm[j]; y < cm.length; y++) {
            if (cm[y] in textMatches.chars) {
               textMatches.chars[cm[y]] += 1;
            } else {
               textMatches.chars[cm[y]] = 1;
            }
        }
    }
}

Как это вот оптимизовать что бы то же в один цикл уместить? Просто частенько такое вот писать приходится, а это даже наверно для штеуда дико не оптимально с его то векторными инструкциями которые к каждому поколению процессоров новые (зачем то) приделывают.

★★★

ЛОР - это такое место...

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

lgbt
()
Ответ на: комментарий от lgbt

Ты ебанутый? Ты еще jQuery плагином парсить предложи, а математику вот этим считать.

SMD
Ну да, старые бинарии транслируют в коды новой/обновленной, естественно будет пройгрышь в скорости, но ведь и новая архитектура не старая.

uin ★★★
() автор топика
Ответ на: комментарий от uin

Тогда в системе, обеспечивающей трансляцию, придется каким-то образом сохранять информацию о старых формах хранения команд. Штеуд для итаника смог обойти эту проблему. Не помню уже ису эльбруса, поэтому не скажу, есть ли у них такая фича.
Твой подход возможен, но гонять транслятор и джит - то еще веселье с точки зрения оверхеда. Если ты на одну исходную инструкцию для трансляции будешь тратить 100 новых, то сам прикинь во сколько раз ты замедлишься.

Deleted
()
Ответ на: комментарий от uin

Поциент в формальных языках - как свинья в бриллиантах.

А потом парсерлох или скрипт инжектится в страничку.

lgbt
()
Ответ на: комментарий от Deleted

Это не мой подход, это подход инженеров придумывавших Эльбрус 3, им надо было с одной стороны сделать новую машину которая будет на порядки превосходить старую (Эльбрус 2) но при этом каким то макаром сохранить совместимость с Автокодом старой машины программами и вот этим вот всем.

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

Ничего не понял, ты вообще видел как у них транслятор запускается? http://www.youtube.com/watch?v=LScf7GPhQSQ

то еще веселье с точки зрения оверхеда. Если ты на одну исходную инструкцию для трансляции будешь тратить 100 новых, то сам прикинь во сколько раз ты замедлишься.

А может получится и вот так https://www.opennet.ru/opennews/art.shtml?num=34554 только это конечно все статичный подход, а есть еще динамический как был у трансметы когда все транслируется прямо на лету (к вопросу о интерпритируемых языках и прочего чего у вас там вроде как нельзя на vliw) и вот он действительно может очень сильно затормозить и это минус динамического подхода, однако у эльбруса подход гибридный - часть выполняется прямо на лету а часть хранится в кэше уже оттранслированная.

uin ★★★
() автор топика
Ответ на: комментарий от uin

Прости, я очень стеснен коммерческой тайной и не могу рассказать, как оно работает на самом деле(
Поищи презенташку Томаса Кислера «lessons we learnt from transmeta», если интересно.

Deleted
()
Ответ на: комментарий от Deleted

От коллег, которые потратили на эльбрус по 10-15 лет жизни.

А второй вопрос? Что из аппаратных возможностей не поддержано в ОС/библиотеках/компиляторе?

alman ★★★
()
26 мая 2016 г.
Ответ на: комментарий от robot12

Презенташку я нашел, но там ведь описаны проблемы с которыми им пришлось столкнуться при написании транслятора и как они их решали, и только в конце описана проблема внеочередного исполнения команд предполагаемое решение в виде необходимости добавления многопоточности. Ну и что не так?

И что там с рантаймом и собиранием потоков? cast robot12
В чем проблема то? Объясните на пальцах что имеется в виду.

uin ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.