Project

General

Profile

Рекомендации по программированию процессора 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). В противном случае доступ к памяти будет осуществляться поочередно, что приведет к дополнительным задержкам.
# Избегать чрезмерно длинных ссылок. Использование таких ссылок приведет к простоям в работе клеток при выполнении команды, на которую указывает ссылка, если команды будут выбираться с недостаточным опережением.
разделе "Команды отладчика".