Forth http://fforum.winglion.ru/ |
|
И снова - 16 Minimal instructions. http://fforum.winglion.ru/viewtopic.php?f=3&t=2564 |
Страница 2 из 3 |
Автор: | mOleg [ Пт апр 09, 2010 14:37 ] |
Заголовок сообщения: | |
Хищник писал(а): Проверим в нем несколько программ, мы выяснили, что обычные команды (т.е. не переходы и не литералы) составляют 25-30% от общего количества команд, компилируемых в программу.
очень хотелось бы увидеть результирующую статистику (в смысле, по примитивам) |
Автор: | chess [ Пт апр 09, 2010 15:05 ] |
Заголовок сообщения: | |
Хищник писал(а): (т.е. не переходы и не литералы)
Непонятно почему переходы и литералы тут объединили. |
Автор: | Hishnik [ Пт апр 09, 2010 15:24 ] |
Заголовок сообщения: | |
mOleg писал(а): очень хотелось бы увидеть результирующую статистику (в смысле, по примитивам)
"Тиграаааааааааа!"..... |
Автор: | Hishnik [ Пт апр 09, 2010 15:25 ] |
Заголовок сообщения: | |
chess писал(а): Непонятно почему переходы и литералы тут объединили.
Потому что переход тоже требует литерала - загрузки адреса, на который переходить. |
Автор: | chess [ Пт апр 09, 2010 15:39 ] |
Заголовок сообщения: | |
Хищник писал(а): Потому что переход тоже требует литерала - загрузки адреса, на который переходить.
Понятно. Только переходы не обязательно требуют полноразрядного литерала(если они, например, относительные). |
Автор: | Hishnik [ Пт апр 09, 2010 15:41 ] |
Заголовок сообщения: | |
chess писал(а): Понятно. Только переходы не обязательно требуют полноразрядного литерала(если они, например, относительные).
Но в приведенной системе команд нет отдельной команды для загрузки неполного литерала. Кстати, результаты профилирования - повод ее ввести. Тогда будут команды "положить на стек данные" и "положить на стек число сокращенной разрядности, достаточное для представления адреса". |
Автор: | chess [ Пт апр 09, 2010 15:53 ] |
Заголовок сообщения: | |
Хищник писал(а): Тогда будут команды "положить на стек данные" и "положить на стек число сокращенной разрядности, достаточное для представления адреса".
Я к тому же. После введения доп. команды быстродействие кода увеличится при сокращении разрядности шины по сравнению с вариантом без доп. команд. |
Автор: | WingLion [ Пт апр 09, 2010 17:32 ] |
Заголовок сообщения: | |
Хищник писал(а): При этом число тактов растет, потому что загнать 32-битный литерал по 16-разрядной шине можно за 2 такта,
За то, по 16(32)-хбитной шине можно хапнуть сразу 4(8 ) команд и исполнять их на повышенной тактовой частоте по сравнению с частотой выборки из памяти, не забывая при этом, что литералы можно читать наперед, а тогда скорость скорее повысится, чем понизится. (Задача экономии памяти-то как бы и не стоит.) |
Автор: | WingLion [ Пт апр 09, 2010 17:47 ] |
Заголовок сообщения: | |
Хищник писал(а): Но в приведенной системе команд нет отдельной команды для загрузки неполного литерала. Кстати, результаты профилирования - повод ее ввести. Тогда будут команды "положить на стек данные" и "положить на стек число сокращенной разрядности, достаточное для представления адреса".
Кстати, интересная мысль, ввести инструкцию BLOAD подгрузки короткого литерала из потока команд, т.е. из потока 4-битных полубайтов выдирать, например по два элемента (ровно байт), следующие сразу за этой командой, и использовать его в первой встреченной команде LIT, CALL или ?BRANCH. Тогда, загрузка короткого литерала будет выглядеть так: BLOAD immediate-byte LIT - короткий литерал загрузка байта со знаком, т.е. byte=-1 превратится в cell=-1 BLOAD immediate-byte CALL - короткий CALL \ переход по addr=byte*16 для реализации кучи маленьких подпрограмм BLOAD immediate-byte ?BRANCH - короткий относительный переход Но, это еще вопрос, надо ли так делать?.. И даст ли оно реальный выигрыш? |
Автор: | Hishnik [ Сб апр 10, 2010 00:04 ] |
Заголовок сообщения: | |
WingLion писал(а): Но, это еще вопрос, надо ли так делать?.. И даст ли оно реальный выигрыш?
Я тут на днях именно так и сделал. То есть JMP по сути есть EXECUTE, и все команды перехода (jmp/if/call) берут адрес со стека. Хотя можно адрес и после команды тянуть, тоже вариант. |
Автор: | mOleg [ Сб апр 10, 2010 10:34 ] |
Заголовок сообщения: | |
Хищник писал(а): mOleg писал(а): очень хотелось бы увидеть результирующую статистику (в смысле, по примитивам) "Тиграаааааааааа!"..... вот статистика по частоте использования слов в ядре форка, т.е. речь не о примитивах, а вообще о любом слове, которое искалось и компилировалось во время сборки ядра: 117 DUP |
Автор: | Hishnik [ Сб апр 10, 2010 11:34 ] |
Заголовок сообщения: | |
mOleg писал(а): вот статистика по частоте использования слов в ядре форка, т.е. речь не о примитивах, а вообще о любом слове, которое искалось и компилировалось во время сборки ядра:
Где форк и где ПЛИС? |
Автор: | mOleg [ Сб апр 10, 2010 11:43 ] |
Заголовок сообщения: | |
Хищник писал(а): Где форк и где ПЛИС?
всеравно картина по частоте использования есть. видно, что чаще всего литералы встречаются, потом DUP DROP SWAP @ + OVER ! и удивительно часто NOOP |
Автор: | WingLion [ Сб апр 10, 2010 12:45 ] |
Заголовок сообщения: | |
Хищник писал(а): rupor "Тиграаааааааааа!".....
хм, а он сюда заглядывает? |
Автор: | вопрос [ Сб апр 10, 2010 13:23 ] |
Заголовок сообщения: | |
mOleg писал(а): Хищник писал(а): Где форк и где ПЛИС? всеравно картина по частоте использования есть. видно, что чаще всего литералы встречаются это плохо для призводительности, если не сделать какую-либо более хитрую оптимизацию |
Страница 2 из 3 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |