Project

General

Profile

Рекомендации по программированию процессора MultiClet P1 » History » Version 36

y.chemodanov, 12/11/2014 11:13 AM

1 34 y.chemodanov
h1. Краткое описание организации исполнения параграфов для процессора MultiClet P1.
2 1 krufter_multiclet
3 34 y.chemodanov
Выполнение параграфа процессором P1 включает в себя следующие параллельные процессы:
4 34 y.chemodanov
* Выборка команд.
5 34 y.chemodanov
* Исполнение команд клетками.
6 29 krufter_multiclet
7 34 y.chemodanov
Процесс выборки команд начинается сразу после того, как стал известен адрес начала очередного параграфа и выполнены все команды записи в текущем параграфе. Он протекает независимо от процесса исполнения команд клетками до тех пор, пока весь параграф не будет выбран. Память программ организована таким образом, что команды каждого параграфа последовательно распределяются между клетками на этапе компиляции. Таким образом первая команда каждого параграфа всегда выполняется первой клеткой, вторая команда — второй клеткой, пятая команда — снова 1 клеткой и тд. На каждом такте все клетки одновременно выбирают по одной команде. Выбранные команды размещаются в буферах команд клеток.
8 34 y.chemodanov
Исполнение команд клетками происходит по мере готовности их аргументов и исполнительных устройств. Т.е. команда будет извлечена из буфера и отправлена в исполнительное устройство, если готовы аргументы команды и выбраны все команды, которые используют результат исполняемой команды.  После того, как клеткой достигнут конец параграфа, она не может приступить к исполнению следующего до тех пор, пока не будет закончена запись в регистры, а также в память, если опция контроля очередности чтения — записи не отключена.
9 35 y.chemodanov
10 34 y.chemodanov
h1. Рекомендации по структурной организации параграфов.
11 35 y.chemodanov
12 36 y.chemodanov
# В начале параграфа следует собирать команды, аргументы которых не содержат ссылок в коммутатор.
13 34 y.chemodanov
# Соседние команды не должны зависеть друг от друга, в противном случае велика вероятность того, что соответствующие клетки перейдут к исполнению этих команд одновременно, однако одна из клеток будет вынуждена ожидать результата от другой клетки. Рекомендуется по возможности избегать ссылок, длиной менее четырёх.
14 34 y.chemodanov
# Команды перехода размещать в параграфе как можно раньше, что позволит производить выборку команд с максимальным опережением. Таким образом исключается задержка в исполнении команд клетками по причине ожидания выборки команд, потребляющих результат текущей операции.
15 34 y.chemodanov
# Размещать команды записи в регистр как можно раньше наряду с командами перехода, поскольку невыполненные команды записи в регистр препятствуют выборке очередного параграфа. Избегать неоправданно частой записи в регистры.
16 34 y.chemodanov
# Писать как можно большими параграфами, что позволит минимизировать простои, связанные с ожиданием записей в регистры по окончанию параграфа, и контролем очередности чтения записи в память.
17 34 y.chemodanov
# Организовывать доступ к памяти с учётом особенностей её организации. Одновременная работа клеток с памятью допускается, только если выполняются обращения производятся к различным блокам памяти данных (см. «Руководство пользователя. Программное обеспечение мультиклеточного процессора MultiClet P1», раздел 4.1.2). В противном случае доступ к памяти будет осуществляться поочередно, что приведет к дополнительным задержкам.
18 34 y.chemodanov
# Избегать чрезмерно длинных ссылок. Использование таких ссылок приведет к простоям в работе клеток при выполнении команды, на которую указывает ссылка, если команды будут выбираться с недостаточным опережением.