Тут не исправить уже ничего, Господь, жги! Войти !bnw Сегодня Клубы
?

Задолбался гуглить, прошу помощи хайвмайнда.

Ключевые слова: динамический конвеер, микопроцессор.

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

Вопрос: как это по-человечески называется, что гуглить, чтобы узнать больше?

Рекомендовали: @je @j123123
#MOHUTB / @minoru / 4014 дней назад

ГРИБНОЙ ПРОЦЕССОР
#MOHUTB/Q1Z / @l29ah / 4014 дней назад
instruction scheduling ?
#MOHUTB/C6E / @ninesigns / 4014 дней назад
@l29ah Щито? Ты имеешь в виду, что описана какая-то НЕХ?
#MOHUTB/RD4 / @minoru --> #MOHUTB/Q1Z / 4014 дней назад
@4da Внезапно, так я не гуглил. Сейчас попробую, хоть и сомневаюсь в результатах.
#MOHUTB/RU4 / @minoru --> #MOHUTB/C6E / 4014 дней назад
@minoru Это не то. Это оптимизация, а мне нужна какая-то штука, которой сам процессор занимается, по ходу, в процессе выполнения программы.
#MOHUTB/5CE / @minoru --> #MOHUTB/RU4 / 4014 дней назад
@minoru почему? google://dynamic instruction scheduling during runtime reordering
#MOHUTB/ISX / @ninesigns --> #MOHUTB/5CE / 4014 дней назад
@4da Потому что нет вот этой составляющей, где длина такта меняется в зависимости от того, какие инструкции сейчас выполняются. Reordering — это совсем-совсем не то.
#MOHUTB/605 / @minoru --> #MOHUTB/ISX / 4014 дней назад
@minoru а что есть калькуляторы, где длина такта как-то меняется в зависимости от instruction stream?
#MOHUTB/UYP / @ninesigns --> #MOHUTB/605 / 4014 дней назад
длина такта не меняется, используется просто больше тактов. возможно ты путаешь такты с шагами конвейера или ещё чем там
#MOHUTB/HMU / @stiletto / 4014 дней назад
@4da Именно это меня и интересует :) Задачу собственно планирования я решу, она простая (потому что нет условия построить оптимальное расписание).
#MOHUTB/F87 / @minoru --> #MOHUTB/UYP / 4014 дней назад
@stiletto Шаг конвеера — это кол-во тактов, после чего операция переходит на следующий этап конвеера? Звучит весьма похоже! Что гуглить? Бывают ЦПУ с динамическим шагом конвеера?
#MOHUTB/DHH / @minoru --> #MOHUTB/HMU / 4014 дней назад
Что-то типа такого: http://www.plantation-productions.com/Webster/www.artofasm.com/Linux/HTML/CPUArchitecturea3.html ? Ищи «микрокод», «конвеер» и т. п.
#MOHUTB/L90 / @ceyt / 4014 дней назад
@minoru Твой хуй86-калькулятор - хороший пример процессора, для которого угадать продолжительность исполнения той или иной инструкций довольно трудно.
#MOHUTB/USC / @l29ah --> #MOHUTB/DHH / 4014 дней назад
@ceyt Недавно я видел на русском довольно подробно, но что-то не вспомню.
#MOHUTB/3A6 / @ceyt --> #MOHUTB/L90 / 4014 дней назад
@l29ah Выходит, все x86 процессоры делают так, как написано в /0 — ждут, пока все этапы конвеера закончат выполнять свои части инструкции, потом результаты проталкиваются по конвееру дальше?
#MOHUTB/JXC / @minoru --> #MOHUTB/USC / 4014 дней назад
Нихуя тебя не понял. https://en.wikipedia.org/wiki/Superscalar
#MOHUTB/5IB / @l29ah / 4014 дней назад
in-order execution /thread
#MOHUTB/JRQ / @anonymous / 4014 дней назад
@ceyt Пролистал, в разделе про пайплайны все равно ничего похожего не нашёл :(
#MOHUTB/8IN / @minoru --> #MOHUTB/3A6 / 4014 дней назад
@l29ah Суперскалярность-то здесь каким боком? Нет, это не то, потому что процессор из /0 просто как-то странно устроен и меняет шаг конвеера (Стилетто пока что ближе всего к разгадке, как мне кажется)
#MOHUTB/9CD / @minoru --> #MOHUTB/5IB / 4014 дней назад
@minoru Чо за шаг конвеера? Есть последовательность поступающих на исполнение инструкций, каждая задействует разные куски вычислителя; если следующая инструкция зависит от результатов текущей, то тормозим; если текущей инструкции нужно сходить по-большому, то тоже тормозим, or something. Под торможением имеется в виду такт без зохавывания новой инструкции на исполнение.
#MOHUTB/94H / @l29ah --> #MOHUTB/9CD / 4014 дней назад
@minoru Зайдём с другой стороны. Что за программа?
#MOHUTB/XN2 / @ceyt --> #MOHUTB/8IN / 4014 дней назад
@l29ah Это принцип работы процессора с обычным конвеером. В /0 же я описываю процессор, работающий несколько иначе: каждая инструкция проводит на каждом этапе конвеера не один, а несколько тактов, и сдвигаются они все одновременно, в ногу с самой длинной инструкцией. Пример: ты запихнул на четерёхшаговый конвеер деление, занимающее на каждом шаге по четыре такта. Это значит, что мы четыре такта ждём, пока освободится первый шаг конвеера. Потом это событие наступает, и ты, в принципе, мог бы запланировать два сложения (по два такта каждое), но не тут-то было — пихать инструкции на конвеер можно только в момент, когда он сдвигает инструкции между шагами, следовательно, второму сложению придётся ждать два такта, в течение которых первая ступень простаивает. То есть наличие в конвеере четырёхтактового умножения заставляет нас пихать инструкции не когда попало, а раз в четыре такта. Как только умножение закончится, можно будет пихать раз в два такта (потому что там ещё выполняется сложение). На пустой можно раз в такт пихать. Про шаг конвеера @stiletto в #MOHUTB/HMU писал.
#MOHUTB/XBR / @minoru --> #MOHUTB/94H / 4014 дней назад
@ceyt Спросил, жду ответа.
#MOHUTB/VEK / @minoru --> #MOHUTB/XN2 / 4014 дней назад
@stiletto Программу выдавал препод, написана на Java, называется Эвкалитус. На логотипе панда. Похоже на внутрекафедральную раздработку, или что-то в этом роде. Сейчас пришлют, выложу куда-нибудь.
#MOHUTB/8EG / @minoru --> #MOHUTB/HMU / 4014 дней назад
Хуясе лоулевел, плотно знаком с ядрами микроконтроллеров, там такой хуйни нет, обычно просто описано в instruction set какие инструкции сколько тактов проходят.
#MOHUTB/0BH / @je / 4014 дней назад
Это называется CPU simulator. http://www.edumips.org/ например http://www.mr.inf.tu-dresden.de/studium/winter/infet1/docs/mips64/mips_pipe.html (тут на немецком)
#MOHUTB/XN9 / @j123123 / 4014 дней назад
@minoru > в /0 же > процессор, работающий несколько иначе я так и не понял, чем отличается твой конвеер от того, что описывает лях // и все остальные
#MOHUTB/W69 / @ulidtko --> #MOHUTB/XBR / 4014 дней назад
@j123123 Хотя фиг вообще знает, в ОП-посте все описано слишком по-наркомански, чтобы понять
#MOHUTB/V97 / @j123123 --> #MOHUTB/XN9 / 4014 дней назад
@minoru И правда кафедральная разработка: https://www.assembla.com/code/Eucalyptus/subversion/nodes
#MOHUTB/J5M / @minoru --> #MOHUTB/8EG / 4014 дней назад
> нужно запланировать выполнение арифметических операций процессором ОП, ну-ка раскрой (формализируй) вот здеся «запланировать». Что это «планирование» из себя представляет, какой структуры получается «план»? Ты можешь изменять длительности нахождения инструкций в разных стадиях пайплайна? Ты можешь переставлять инструкции местами? Или тебе надо просто просимулировать проц и найти сколько тактов он потратит на данный поток инструкций? Что в данном случае будет «планом»? Какой тип имеет выхлоп твоего алгоритма планирования?
#MOHUTB/BO4 / @ulidtko / 4014 дней назад
@ulidtko Вангую, что ему нужно найти так расставить инструкции, чтобы конвейер максимально эффективно использовался, не простаивал и не было https://en.wikipedia.org/wiki/Hazard_%28computer_architecture%29
#MOHUTB/7WG / @j123123 --> #MOHUTB/BO4 / 4014 дней назад
@ulidtko Задачей лабы является составить последовательность, в которой арифметические операции загружаются на конвейер, и посчитать, сколько тактов будет потрачено на вычисление. У меня есть арифметическое выражение, менять его *уже* не нужно, только «запланировать». Изменять длительность нахождения инструкций не могу, я их задаю как константы в начале лабы. Инструкции местами переставлять можно свободно, главное в итоге посчитать-таки выражение. Но спрашиваю я не о планировании, а о собственно процессорах, которые таким вот странным образом меняют длительность тика (или шага конвейера, если использовать терминологию @stiletto, которая мне кажется наиболее подходящей).
#MOHUTB/JWE / @minoru --> #MOHUTB/BO4 / 4014 дней назад
@minoru иными словами, это твоё «планирование» — это просто симуляция работы пайплайна? так хули ты тут блядь мозг ебёшь. > Но спрашиваю я не о планировании да любые блджад хоть сколько-нибудь сложные процессоры не имеют предсказуемых дедлайнов на инструкции // хотя бы потому что конкурентный доступ к шине (фетч из памяти, если игнорировать (зачем?) кеши) [может](http://en.wikipedia.org/wiki/Arbiter_%28electronics%29) занять произвольное время (с быстро исчезающей вероятностью) тебе же сказали уже: в той микроволновке, с которой ты пишешь, скорее всего, в пайплайне происходит неведомый ёбаный ад, и дунно, имеет ли там вообще смысл говорить о длительности шага даже
#MOHUTB/LU4 / @ulidtko --> #MOHUTB/JWE / 4014 дней назад
@ulidtko Окей, спасибо.
#MOHUTB/1IY / @minoru --> #MOHUTB/LU4 / 4014 дней назад
Нарисовал в этом их Эвкалиптусе картинку, чтобы пояснить описываемую особенность процессора: http://rghost.net/55610059.view Внимание на девятый такт: он свободен, но планировать на него сложение (четвёртую ноду) нелья, потому что «шаг конвейера» приходится на границу между девятым и десятым тактами, и в течение одного шага где операции запланировать нельзя. В данном случае шаг равен четырём, потому что в конвейере находится умножение, занимающее четыре такта. Если даже после этого никто из вас не может мне сказать, как такая архитектура называется и что мне гуглить, чтобы узнать больше, будем считать, что это просто какая-то древняя идея, о которой нынче рассказывают только не слушающим лектора студентам. Просто если такое действительно используется в том же x86, то получается, что выполнять дешёвые операции вперемешку с дорогими (сложение с делением, например) невыгодно, потому что дорогие как бы «сдерживают» поток дешёвых, не давая процессору выложиться на полную.
#MOHUTB/P37 / @minoru / 4014 дней назад
@minoru s/где//
#MOHUTB/EGW / @minoru --> #MOHUTB/P37 / 4014 дней назад
@minoru КОКОЙ НАХУЙ «шаг конвейера»? У тебя инструкция [3] закончила, предположим, декодироваться за 3 такта в первом слое и ждёт, когда освободится следующий слой — предположим, исполнения. (На каждом шаге задержки одинаковые? Видимо, «для простоты».) Всё стандартно, архитектура задана, параметры заданы, надо соптимизировать порядок вычисления на минимальное время. // спизди решение из gcc
#MOHUTB/GTC / @ceyt --> #MOHUTB/P37 / 4014 дней назад
Поклацал статический конвейер, где следующую операцию можно загружать только когда предыдущая прошла все слои, и *все понял*. Спасибо, ребят, ещё раз!
#MOHUTB/QHM / @minoru / 4014 дней назад
@minoru Спасибо за интересную статью!
#MOHUTB/BUX / @anonymous --> #MOHUTB/QHM / 4014 дней назад
@minoru У тебя в документации пример этому описанию противоречит.
#MOHUTB/JKW / @ceyt --> #MOHUTB/QHM / 4014 дней назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.