Рекомендации по программированию процессора MultiClet P1 » History » Version 34
Version 33 (krufter_multiclet, 07/17/2013 02:00 PM) → Version 34/36 (y.chemodanov, 12/10/2014 04:48 PM)
h1. Краткое описание организации исполнения параграфов для процессора MultiClet P1. Обзор работы с отладчиком
Выполнение параграфа процессором P1 включает в себя следующие параллельные процессы: 1) [[Команды отладчика]]
2) Описание работы отладчика:
Рассмотрим пример программы на ассемблере:
<pre>
* Выборка команд. .text
pre:
getl 4
setl #32, @1
getl 6
wrl @1, @3
jmp paragraph1
* Исполнение команд клетками. complete
Процесс выборки команд начинается сразу после того, как стал известен адрес начала очередного параграфа и выполнены все команды записи в текущем параграфе. Он протекает независимо от процесса исполнения команд клетками до тех пор, пока весь paragraph1:
getl 5
addl @1, #32
setl #32, @1
complete
</pre>
На основе данного примера кратко продемонстрируем работу отладчика.
*Для Windows:*
1. Запустите mc-dbg.exe
!mc-dbg_pic1.png!
2. Выберите режим 1 (введите цифру 1, затем нажмите клавишу enter)
!mc-dbg_pic2.png!
3. Введите путь к файлу с образом памяти image.bin
!mc-dbg_pic3.png!
4. Поставим точку останова на параграф не будет выбран. Память программ организована таким образом, что команды каждого параграфа последовательно распределяются между клетками "pre"
!mc-dbg_pic4.png!
5. Введём команду "go" для перехода на этапе компиляции. Таким образом первая команда каждого первую точку останова
!mc-dbg_pic5.png!
6. Получим содержимое 32-го регистра в параграфе "pre" (операции записи проходят после окончания параграфа всегда выполняется первой клеткой, вторая команда — второй клеткой, пятая команда — снова 1 клеткой и тд. На каждом такте все клетки одновременно выбирают по одной команде. Выбранные команды размещаются в буферах команд клеток.
Исполнение команд клетками происходит по мере готовности их аргументов complete)
!mc-dbg_pic6.png!
7. Поставим точку останова на параграф "paragraph1" и исполнительных устройств. Т.е. команда будет извлечена из буфера и отправлена в исполнительное устройство, если готовы аргументы команды и выбраны все команды, которые используют результат исполняемой команды. После того, как клеткой достигнут конец параграфа, она не может приступить к исполнению следующего до тех пор, пока не будет закончена запись в регистры, а также в память, если опция контроля очередности чтения — записи не отключена.
h1. Рекомендации перейдём на него по структурной организации параграфов.
# Соседние команды не должны зависеть друг от друга, команде "go"
!mc-dbg_pic7.png!
8. Получим содержимое 32-го регистра в противном случае велика вероятность того, что соответствующие клетки перейдут к исполнению этих команд одновременно, однако одна из клеток будет вынуждена ожидать результата от другой клетки. Рекомендуется по возможности избегать ссылок, длиной менее четырёх.
# Команды перехода размещать в параграфе как можно раньше, что позволит производить выборку команд "paragraph1"
!mc-dbg_pic8.png!
Завершить работу с максимальным опережением. Таким образом исключается задержка в исполнении команд клетками по причине ожидания выборки команд, потребляющих результат текущей операции.
# Размещать команды записи в регистр как отладчиком можно раньше наряду с командами перехода, поскольку невыполненные помощью команды записи в регистр препятствуют выборке очередного параграфа. Избегать неоправданно частой записи в регистры. "quit".
# Писать как Ознакомиться со списком команд, можно большими параграфами, что позволит минимизировать простои, связанные с ожиданием записей в регистры по окончанию параграфа, и контролем очередности чтения записи в память.
# Организовывать доступ к памяти с учётом особенностей её организации. Одновременная работа клеток с памятью допускается, только если выполняются обращения производятся к различным блокам памяти данных (см. «Руководство пользователя. Программное обеспечение мультиклеточного процессора MultiClet P1», раздел 4.1.2). В противном случае доступ к памяти будет осуществляться поочередно, что приведет к дополнительным задержкам.
# Избегать чрезмерно длинных ссылок. Использование таких ссылок приведет к простоям в работе клеток при выполнении команды, на которую указывает ссылка, если команды будут выбираться с недостаточным опережением. разделе "Команды отладчика".
Выполнение параграфа процессором P1 включает в себя следующие параллельные процессы: 1) [[Команды отладчика]]
2) Описание работы отладчика:
Рассмотрим пример программы на ассемблере:
<pre>
* Выборка команд. .text
pre:
getl 4
setl #32, @1
getl 6
wrl @1, @3
jmp paragraph1
* Исполнение команд клетками. complete
Процесс выборки команд начинается сразу после того, как стал известен адрес начала очередного параграфа и выполнены все команды записи в текущем параграфе. Он протекает независимо от процесса исполнения команд клетками до тех пор, пока весь paragraph1:
getl 5
addl @1, #32
setl #32, @1
complete
</pre>
На основе данного примера кратко продемонстрируем работу отладчика.
*Для Windows:*
1. Запустите mc-dbg.exe
!mc-dbg_pic1.png!
2. Выберите режим 1 (введите цифру 1, затем нажмите клавишу enter)
!mc-dbg_pic2.png!
3. Введите путь к файлу с образом памяти image.bin
!mc-dbg_pic3.png!
4. Поставим точку останова на параграф не будет выбран. Память программ организована таким образом, что команды каждого параграфа последовательно распределяются между клетками "pre"
!mc-dbg_pic4.png!
5. Введём команду "go" для перехода на этапе компиляции. Таким образом первая команда каждого первую точку останова
!mc-dbg_pic5.png!
6. Получим содержимое 32-го регистра в параграфе "pre" (операции записи проходят после окончания параграфа всегда выполняется первой клеткой, вторая команда — второй клеткой, пятая команда — снова 1 клеткой и тд. На каждом такте все клетки одновременно выбирают по одной команде. Выбранные команды размещаются в буферах команд клеток.
Исполнение команд клетками происходит по мере готовности их аргументов complete)
!mc-dbg_pic6.png!
7. Поставим точку останова на параграф "paragraph1" и исполнительных устройств. Т.е. команда будет извлечена из буфера и отправлена в исполнительное устройство, если готовы аргументы команды и выбраны все команды, которые используют результат исполняемой команды. После того, как клеткой достигнут конец параграфа, она не может приступить к исполнению следующего до тех пор, пока не будет закончена запись в регистры, а также в память, если опция контроля очередности чтения — записи не отключена.
h1. Рекомендации перейдём на него по структурной организации параграфов.
# Соседние команды не должны зависеть друг от друга, команде "go"
!mc-dbg_pic7.png!
8. Получим содержимое 32-го регистра в противном случае велика вероятность того, что соответствующие клетки перейдут к исполнению этих команд одновременно, однако одна из клеток будет вынуждена ожидать результата от другой клетки. Рекомендуется по возможности избегать ссылок, длиной менее четырёх.
# Команды перехода размещать в параграфе как можно раньше, что позволит производить выборку команд "paragraph1"
!mc-dbg_pic8.png!
Завершить работу с максимальным опережением. Таким образом исключается задержка в исполнении команд клетками по причине ожидания выборки команд, потребляющих результат текущей операции.
# Размещать команды записи в регистр как отладчиком можно раньше наряду с командами перехода, поскольку невыполненные помощью команды записи в регистр препятствуют выборке очередного параграфа. Избегать неоправданно частой записи в регистры. "quit".
# Писать как Ознакомиться со списком команд, можно большими параграфами, что позволит минимизировать простои, связанные с ожиданием записей в регистры по окончанию параграфа, и контролем очередности чтения записи в память.
# Организовывать доступ к памяти с учётом особенностей её организации. Одновременная работа клеток с памятью допускается, только если выполняются обращения производятся к различным блокам памяти данных (см. «Руководство пользователя. Программное обеспечение мультиклеточного процессора MultiClet P1», раздел 4.1.2). В противном случае доступ к памяти будет осуществляться поочередно, что приведет к дополнительным задержкам.
# Избегать чрезмерно длинных ссылок. Использование таких ссылок приведет к простоям в работе клеток при выполнении команды, на которую указывает ссылка, если команды будут выбираться с недостаточным опережением. разделе "Команды отладчика".