Автор |
Сообщение |
|
|
Заголовок сообщения: |
Re: Мультизадачный форт-процессор: Предпосылки, идеи, обсужд |
|
|
Для такого удвоения и незачем инверсный клок на второй порт использовать. Будет просто обычное удвоение на двух портах. Но удвоение рамдомного доступа не получится, потому что те же два такта будут нужны для выборки данных. А в пересчете на удвоенную частоту - понадобится четыре такта.
Для такого удвоения и незачем инверсный клок на второй порт использовать. Будет просто обычное удвоение на двух портах. Но удвоение рамдомного доступа не получится, потому что те же два такта будут нужны для выборки данных. А в пересчете на удвоенную частоту - понадобится четыре такта.
|
|
|
|
Добавлено: Вс янв 08, 2012 14:38 |
|
|
|
|
|
Заголовок сообщения: |
Re: Мультизадачный форт-процессор: Предпосылки, идеи, обсужд |
|
|
Если память оказывается медленнее, но при этом она двупортовая, можно попробовать такой эксперимент: берем тактовый генератор и вытаскиваем из него обычный и инверсный сигналы. Прямой подаем на первый порт, инверсный - на второй, получаем удвоенное количество операций.
Если память оказывается медленнее, но при этом она двупортовая, можно попробовать такой эксперимент: берем тактовый генератор и вытаскиваем из него обычный и инверсный сигналы. Прямой подаем на первый порт, инверсный - на второй, получаем удвоенное количество операций.
|
|
|
|
Добавлено: Вс янв 08, 2012 14:19 |
|
|
|
|
|
Заголовок сообщения: |
Re: Мультизадачный форт-процессор: Предпосылки, идеи, обсужд |
|
|
Предельного быстродействия достичь можно, и я даже делал такую попытку, но она увязла в мелких неувязках схемы и была заброшена, поэтому пока делаю все на предельной частоте внутренней памяти (стараюсь делать, но не всегда выходит).
И в любом случае, схема будет тактироваться одним клоком, а значит формально будет однотактовой, хотя памяти и потребуется несколько тактов на выборку данных.
Поэтому мчаться и гнать схему на предельную скорость, не отработав ее хотя бы на какой-либо частоте пониже, большого смысла нет, так как время будет убито в гонках за блохами вместо решения более глобальных общих вопросов. За блохами погоняться можно и потом, когда будет ясно с главными алгоритмами.
Предельного быстродействия достичь можно, и я даже делал такую попытку, но она увязла в мелких неувязках схемы и была заброшена, поэтому пока делаю все на предельной частоте внутренней памяти (стараюсь делать, но не всегда выходит).
И в любом случае, схема будет тактироваться одним клоком, а значит формально будет однотактовой, хотя памяти и потребуется несколько тактов на выборку данных.
Поэтому мчаться и гнать схему на предельную скорость, не отработав ее хотя бы на какой-либо частоте пониже, большого смысла нет, так как время будет убито в гонках за блохами вместо решения более глобальных общих вопросов. За блохами погоняться можно и потом, когда будет ясно с главными алгоритмами.
|
|
|
|
Добавлено: Вс янв 08, 2012 13:33 |
|
|
|
|
|
Заголовок сообщения: |
Re: Мультизадачный форт-процессор: Предпосылки, идеи, обсужд |
|
|
вопрос писал(а): В общем, можно даже так описать - есть некие комманды, которые не может микросхема выполнить за такт - подряд и потому нужно сделать очередь (замкнутую) таких комманд, чтобы такты не простаивали (не были пустыми)
и ведь такие комманды могут быть не только обращением с памятью Проще всё - есть набор команд процессора, которые выполняются за один такт. Кроме них никаких команд у процессора нет. Необходимо эмулировать систему команд определенной виртуальной машины(например фортВМ). Часть команд для этой ВМ будут из набора команд процессора(то есть однотактные), а часть будут последовательностью команд процессора. Все как обычно - ничего нового.
[quote="вопрос"]В общем, можно даже так описать - есть некие комманды, которые не может микросхема выполнить за такт - подряд и потому нужно сделать очередь (замкнутую) таких комманд, чтобы такты не простаивали (не были пустыми)
и ведь такие комманды могут быть не только обращением с памятью[/quote] Проще всё - есть набор команд процессора, которые выполняются за один такт. Кроме них никаких команд у процессора нет. Необходимо эмулировать систему команд определенной виртуальной машины(например фортВМ). Часть команд для этой ВМ будут из набора команд процессора(то есть однотактные), а часть будут последовательностью команд процессора. Все как обычно - ничего нового.
|
|
|
|
Добавлено: Пт дек 02, 2011 13:19 |
|
|
|
|
|
Заголовок сообщения: |
Re: Мультизадачный форт-процессор: Предпосылки, идеи, обсужд |
|
|
Цитата: Надеюсь, что-то прояснил такой сумбурной информацией. В общем, можно даже так описать - есть некие комманды, которые не может микросхема выполнить за такт - подряд и потому нужно сделать очередь (замкнутую) таких комманд, чтобы такты не простаивали (не были пустыми) и ведь такие комманды могут быть не только обращением с памятьюЭта очередь не может быть способом исполнения одной задачи (понятно, тогда именно пустые такты) значит - многозадачность поневоле даже не многозадачность - а особенное соотношение многозадачности с многоядерностью. Но зато при этом многое автоматизируется и экономятся многие затраты, которые имеют место при обычной многозадачности вследствие 1. предсказуемости перехода 2. отсутствия необходимости перезагружать регистры (они у кажого ядра свои) 3. экономии на автоматизации и железной реализации процессов, связанных с очередью
[quote]Надеюсь, что-то прояснил такой сумбурной информацией.[/quote] В общем, можно даже так описать - есть некие комманды, которые не может микросхема выполнить за такт - подряд и потому нужно сделать очередь (замкнутую) таких комманд, чтобы такты не простаивали (не были пустыми)
[b]и ведь такие комманды могут быть не только обращением с памятью[/b]
Эта очередь не может быть способом исполнения одной задачи (понятно, тогда именно пустые такты) значит - многозадачность поневоле даже не многозадачность - [b]а особенное соотношение многозадачности с многоядерностью[/b].
Но зато при этом многое автоматизируется и экономятся многие затраты, которые имеют место при обычной многозадачности вследствие 1. предсказуемости перехода 2. отсутствия необходимости перезагружать регистры (они у кажого ядра свои) 3. экономии на автоматизации и железной реализации процессов, связанных с очередью
|
|
|
|
Добавлено: Чт дек 01, 2011 19:53 |
|
|
|
|
|
Заголовок сообщения: |
Re: Мультизадачный форт-процессор: Предпосылки, идеи, обсужд |
|
|
По поводу скорости, имеет место следующие соотношения (для Альтеры).
Скорость работы чистых триггеров примерно в 2 раза выше, чем частота работы памяти. Когда к триггерам добавляется логическое ядро процессора, скорость падает в эти самые 2 раза, поэтому скорость работы ядра процессора сравнима с рабочей частотой (но не скоростью!) работы памяти. Загнать процессор на двойную частоту памяти и подать сразу несколько команд - возможно, но сложно (не получилось с одного наскока).
Поэтому пока такой вариант откладывается в долгий ящик.
Частота памяти - это частота, с которой она выдает данные на выходе и принимает адреса на входе (синхронная память). Данные из конкретного адреса появляются через 2 такта, поэтому процессор с такой памятью требует 3 такта на один цикл (2 на память + 1 на ядро). Мультиплексировать доступ к памяти можно на ее предельной частоте, поэтому и возможна организация нескольких процессов на одном блоке памяти.
Надеюсь, что-то прояснил такой сумбурной информацией.
Память для процессоров - необходима потому что ячеек ПЛИС на все не хватит. Я планирую для начала, что количество задач будет порядка 256. При условии, что на одноядерный вариант процессора надо порядка 300 ячеек (при нахождении стека в этих же ячейках), то на 256 процессов надо уже почти 750000 LCELL, а это уже дорого. Поэтому состояния процессов хранятся во внутренней памяти ПЛИС. Перевод их в логические ячейки нецелесообразен, или количество процессов надо серьезно ограничить.
По поводу скорости, имеет место следующие соотношения (для Альтеры).
Скорость работы чистых триггеров примерно в 2 раза выше, чем частота работы памяти. Когда к триггерам добавляется логическое ядро процессора, скорость падает в эти самые 2 раза, поэтому скорость работы ядра процессора сравнима с рабочей частотой (но не скоростью!) работы памяти. Загнать процессор на двойную частоту памяти и подать сразу несколько команд - возможно, но сложно (не получилось с одного наскока).
Поэтому пока такой вариант откладывается в долгий ящик.
Частота памяти - это частота, с которой она выдает данные на выходе и принимает адреса на входе (синхронная память). Данные из конкретного адреса появляются через 2 такта, поэтому процессор с такой памятью требует 3 такта на один цикл (2 на память + 1 на ядро). Мультиплексировать доступ к памяти можно на ее предельной частоте, поэтому и возможна организация нескольких процессов на одном блоке памяти.
Надеюсь, что-то прояснил такой сумбурной информацией.
Память для процессоров - необходима потому что ячеек ПЛИС на все не хватит. Я планирую для начала, что количество задач будет порядка 256. При условии, что на одноядерный вариант процессора надо порядка 300 ячеек (при нахождении стека в этих же ячейках), то на 256 процессов надо уже почти 750000 LCELL, а это уже дорого. Поэтому состояния процессов хранятся во внутренней памяти ПЛИС. Перевод их в логические ячейки нецелесообразен, или количество процессов надо серьезно ограничить.
|
|
|
|
Добавлено: Ср ноя 30, 2011 18:52 |
|
|
|
|
|
Заголовок сообщения: |
Re: Мультизадачный форт-процессор: Предпосылки, идеи, обсужд |
|
|
dynamic-wind писал(а): На "виртуальных" ядрах можно сделать аппаратный обмен сообщениями. Например в Форте сообщением будут несколько верхних уровней стека. Одно ядро выполняет команду ПОСЛАТЬ, диаграмма выглядит как ( n --). Второе ядро выполняет ПРИНЯТЬ, диаграмма выглядит как ( -- n). Так пара команд мгновенно передает n слов от потока к потоку и обеспечивает синхронизацию. Только нужно ещё как-то указать адресата. Технически это реализуется обобщенной периферией. Ничего особенного делать не нужно, просто один процессор пишет в регистр, который читается другим процессором. К стеку можно тоже не привязываться.
[quote="dynamic-wind"]На "виртуальных" ядрах можно сделать аппаратный обмен сообщениями. Например в Форте сообщением будут несколько верхних уровней стека. Одно ядро выполняет команду ПОСЛАТЬ, диаграмма выглядит как ( n --). Второе ядро выполняет ПРИНЯТЬ, диаграмма выглядит как ( -- n). Так пара команд мгновенно передает n слов от потока к потоку и обеспечивает синхронизацию. Только нужно ещё как-то указать адресата.[/quote] Технически это реализуется обобщенной периферией. Ничего особенного делать не нужно, просто один процессор пишет в регистр, который читается другим процессором. К стеку можно тоже не привязываться.
|
|
|
|
Добавлено: Ср ноя 30, 2011 16:55 |
|
|
|
|
|
Заголовок сообщения: |
Re: Мультизадачный форт-процессор: Предпосылки, идеи, обсужд |
|
|
На "виртуальных" ядрах можно сделать аппаратный обмен сообщениями. Например в Форте сообщением будут несколько верхних уровней стека. Одно ядро выполняет команду ПОСЛАТЬ, диаграмма выглядит как ( n --). Второе ядро выполняет ПРИНЯТЬ, диаграмма выглядит как ( -- n). Так пара команд мгновенно передает n слов от потока к потоку и обеспечивает синхронизацию. Только нужно ещё как-то указать адресата.
На "виртуальных" ядрах можно сделать аппаратный обмен сообщениями. Например в Форте сообщением будут несколько верхних уровней стека. Одно ядро выполняет команду ПОСЛАТЬ, диаграмма выглядит как ( n --). Второе ядро выполняет ПРИНЯТЬ, диаграмма выглядит как ( -- n). Так пара команд мгновенно передает n слов от потока к потоку и обеспечивает синхронизацию. Только нужно ещё как-то указать адресата.
|
|
|
|
Добавлено: Ср ноя 30, 2011 16:05 |
|
|
|
|
|
Заголовок сообщения: |
Re: Мультизадачный форт-процессор: Предпосылки, идеи, обсужд |
|
|
WingLion писал(а): Мультизадачный форт-процессор: Предпосылки, идеи, обсуждение. Непонятно почему из-за медленной памяти в альтеровских плис нельзя достичь предельного быстродействия на одном ядре. Если брать из медленной памяти сразу много команд в широкий регистр, а затем брать команды одну за другой если они зависят друг от друга по результатам или разделяют одно АЛУ(а это в основном так при последовательном алгоритме). Имеется ввиду, что эти команды могут быть выполнены параллельно что-ли(алгоритм параллельный)? Но при этом и процессор должен иметь сразу несколько АЛУ.
[quote="WingLion"]Мультизадачный форт-процессор: Предпосылки, идеи, обсуждение.[/quote] Непонятно почему из-за медленной памяти в альтеровских плис нельзя достичь предельного быстродействия на одном ядре. Если брать из медленной памяти сразу много команд в широкий регистр, а затем брать команды одну за другой если они зависят друг от друга по результатам или разделяют одно АЛУ(а это в основном так при последовательном алгоритме). Имеется ввиду, что эти команды могут быть выполнены параллельно что-ли(алгоритм параллельный)? Но при этом и процессор должен иметь сразу несколько АЛУ.
|
|
|
|
Добавлено: Ср ноя 30, 2011 16:02 |
|
|
|
|
|
Заголовок сообщения: |
Re: Мультизадачный форт-процессор: Предпосылки, идеи, обсужд |
|
|
dynamic-wind писал(а): Так Пень4 выбирал из трейс-кеша 6 микроопераций за 2 такта, умея отставлять 3 мопа за такт. Еще надо учесть, что архитектура оптимизируется под конкретную элементную базу. В Пентиуме ситуация совершенно иная, быстродействие компонентов можно регулировать индивидуально при проектировании. В ПЛИС нельзя заставить какой-то компонент работать быстрее, чем задала фирма-производитель, поэтому задача сводится не просто к выжиманию предела, а к выжиманию на регулярной структуре однотипных компонентов.
[quote="dynamic-wind"]Так Пень4 выбирал из трейс-кеша 6 микроопераций за 2 такта, умея отставлять 3 мопа за такт.[/quote] Еще надо учесть, что архитектура оптимизируется под конкретную элементную базу. В Пентиуме ситуация совершенно иная, быстродействие компонентов можно регулировать индивидуально при проектировании. В ПЛИС нельзя заставить какой-то компонент работать быстрее, чем задала фирма-производитель, поэтому задача сводится не просто к выжиманию предела, а к выжиманию на регулярной структуре однотипных компонентов.
|
|
|
|
Добавлено: Ср ноя 30, 2011 15:43 |
|
|
|
|
|
Заголовок сообщения: |
Re: Мультизадачный форт-процессор: Предпосылки, идеи, обсужд |
|
|
Хищник писал(а): dynamic-wind писал(а): Там стандартная логика настолько быстрее стандартных триггеров? Так почему не сделать быстрые регистры самому на той логике, которая там такая быстрая? Неужели банк регистров 16x16 не впишется по числу ячеек? "Логика" и "триггер" - это элементы программируемой логической ячейки, для которой специфицируется "системная тактовая частота". Быстрее триггера уже некуда. У Xilinx накристальная память успевает выдавать команды на частоте, обеспечиваемой схемой на ячейках, у Altera - нет. Понял, что пропускной способности памяти не хватает для выборки команд. Понял, что регистры делаются на быстрых ячейках (хотя WingLion пишет, что они тоже в памяти--зачем же так запутывать). По-моему это, будет работать, если слово, выбираемое из памяти за Т тактов, будет содержать N команд, если считать, что количество ядер N/T и команда выполняется за такт. Так Пень4 выбирал из трейс-кеша 6 микроопераций за 2 такта, умея отставлять 3 мопа за такт.
[quote="Хищник"][quote="dynamic-wind"]Там стандартная логика настолько быстрее стандартных триггеров? Так почему не сделать быстрые регистры самому на той логике, которая там такая быстрая? Неужели банк регистров 16x16 не впишется по числу ячеек?[/quote] "Логика" и "триггер" - это элементы программируемой логической ячейки, для которой специфицируется "системная тактовая частота". Быстрее триггера уже некуда. У Xilinx накристальная память успевает выдавать команды на частоте, обеспечиваемой схемой на ячейках, у Altera - нет.[/quote] Понял, что пропускной способности памяти не хватает для выборки команд. Понял, что регистры делаются на быстрых ячейках (хотя WingLion пишет, что они тоже в памяти--зачем же так запутывать). По-моему это, будет работать, если слово, выбираемое из памяти за Т тактов, будет содержать N команд, если считать, что количество ядер N/T и команда выполняется за такт. Так Пень4 выбирал из трейс-кеша 6 микроопераций за 2 такта, умея отставлять 3 мопа за такт.
|
|
|
|
Добавлено: Ср ноя 30, 2011 15:30 |
|
|
|
|
|
Заголовок сообщения: |
Re: Мультизадачный форт-процессор: Предпосылки, идеи, обсужд |
|
|
Еще возникло соображение, что предлагаемую архитектуру можно рассматривать в виде нескольких ядер с мультиплексируемым АЛУ. Получается, что АЛУ, как устройство, не определяющее состояние процессора (т.е. не хранящее в себе ничего специфичного для какого-то определенного ядра), может быть обобщено между несколькими ядрами, при условии, что они разберутся, в каком порядке к нему обращаться.
Еще возникло соображение, что предлагаемую архитектуру можно рассматривать в виде нескольких ядер с мультиплексируемым АЛУ. Получается, что АЛУ, как устройство, не определяющее состояние процессора (т.е. не хранящее в себе ничего специфичного для какого-то определенного ядра), может быть обобщено между несколькими ядрами, при условии, что они разберутся, в каком порядке к нему обращаться.
|
|
|
|
Добавлено: Ср ноя 30, 2011 14:18 |
|
|
|
|
|
Заголовок сообщения: |
Re: Мультизадачный форт-процессор: Предпосылки, идеи, обсужд |
|
|
dynamic-wind писал(а): Там стандартная логика настолько быстрее стандартных триггеров? Так почему не сделать быстрые регистры самому на той логике, которая там такая быстрая? Неужели банк регистров 16x16 не впишется по числу ячеек? "Логика" и "триггер" - это элементы программируемой логической ячейки, для которой специфицируется "системная тактовая частота". Быстрее триггера уже некуда. У Xilinx накристальная память успевает выдавать команды на частоте, обеспечиваемой схемой на ячейках, у Altera - нет.
[quote="dynamic-wind"]Там стандартная логика настолько быстрее стандартных триггеров? Так почему не сделать быстрые регистры самому на той логике, которая там такая быстрая? Неужели банк регистров 16x16 не впишется по числу ячеек?[/quote] "Логика" и "триггер" - это элементы программируемой логической ячейки, для которой специфицируется "системная тактовая частота". Быстрее триггера уже некуда. У Xilinx накристальная память успевает выдавать команды на частоте, обеспечиваемой схемой на ячейках, у Altera - нет.
|
|
|
|
Добавлено: Ср ноя 30, 2011 13:35 |
|
|
|
|
|
Заголовок сообщения: |
Re: Мультизадачный форт-процессор: Предпосылки, идеи, обсужд |
|
|
Там стандартная логика настолько быстрее стандартных триггеров? Так почему не сделать быстрые регистры самому на той логике, которая там такая быстрая? Неужели банк регистров 16x16 не впишется по числу ячеек?
Там стандартная логика настолько быстрее стандартных триггеров? Так почему не сделать [i]быстрые[/i] регистры самому на той логике, [i]которая там такая быстрая[/i]? Неужели банк регистров 16x16 не впишется по числу ячеек?
|
|
|
|
Добавлено: Ср ноя 30, 2011 13:24 |
|
|
|
|
|
Заголовок сообщения: |
Re: Мультизадачный форт-процессор: Предпосылки, идеи, обсужд |
|
|
dynamic-wind писал(а): 2. разрабатывать простые алгоритмы и компилировать их для машины с регистровым банком (или кэшем вершины стека и т.п.). В FPGA нет понятия "кэш вершины стека". Стек, реализованный на регистрах, уже является наиболее скоростной реализацией. Проблема в том, что память в Altera требует дополнительной конвейеризации, чтобы работать на нужной частоте.
[quote="dynamic-wind"]2. разрабатывать простые алгоритмы и компилировать их для машины с регистровым банком (или кэшем вершины стека и т.п.).[/quote] В FPGA нет понятия "кэш вершины стека". Стек, реализованный на регистрах, уже является наиболее скоростной реализацией. Проблема в том, что память в Altera требует дополнительной конвейеризации, чтобы работать на нужной частоте.
|
|
|
|
Добавлено: Ср ноя 30, 2011 12:57 |
|
|
|
|