ビリャチピスデツナフイ Войти !bnw Сегодня Клубы
?

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

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

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

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

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

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

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