Не могу молчать.

Jan 13, 2015 17:16

Итак, как конфигурируется память в FPGA. Память в FPGA двухпортовая, то есть, в неё можно читать и писать одновременно. Что прикольней, у неё можно конфигурировать ширину входов (на запись) и выходов (на чтение). То есть, я могу записывать, допустим, два байта, а читать четыре. При этом на запись есть маски, чтобы можно было записать один из байтов ( Read more... )

процессоры, risc, стековые машины, идеи

Leave a comment

Comments 7

dr_klm January 13 2015, 15:52:58 UTC
Насколько я понимаю, Dalvik сделан в виде регистровой VM по патентным соображениям, не по техническим.

К.Л.М.

Reply

thesz January 14 2015, 11:03:14 UTC
Кстати, у меня ошибка.

У Дальвика размер файла с кодом заметно меньше, чем jar.

http://davidehringer.com/software/android/The_Dalvik_Virtual_Machine.pdf

А вот размер кода примерно на четверть больше, если не применять фортовские приемчики (которые для стекового кода возможны, а для регистрового нет).

Reply

dr_klm January 14 2015, 11:20:39 UTC
Это да. Меньший размер кода в Dalvik определяется не архитектурой, а более эффективным хранением констант. С другой стороны, class файлы предназначены для хранения в jar. В сжатом виде разница объемов между dex и class будет меньше. В памяти же (когда class файл уже загружен), эти избыточные названия классов всё равно должны быть заменены указателями, поэтому там тоже разница за счёт экономии в хранении констант будет несущественной.

К.Л.М.

Reply


kincajou August 11 2015, 19:39:35 UTC
а зачем нужен регистр с нулём?

Reply

thesz August 12 2015, 10:14:25 UTC
Многое упрощается в реализации и увеличивается плотность команд (процента на два-три, такого плана).

Не могу отыскать статью со сравнением возможностей разных архитектур и влиянием на плотность кода. Точно помню, что регистр с нулём чуток её увеличивал, заметно увеличивала плотность кода возможность иметь большие непосредственные операнды.

Reply

kincajou August 12 2015, 13:22:47 UTC
т.е. если бы была команда обнуления любого регистра, типа
ZERO EAX
это было бы менее плотно, чем
MOV EAX, ZEROREG
?

Reply

thesz August 12 2015, 14:44:41 UTC
Нет.

Речь идёт, большей частью, про RISC. У них формат команд фиксирован и пространство кодов команд ограничено.

В результате у процессоров, у которых нет нулевого регистра, есть команды NOP и MOV, у MIPS это ADD R0,R0,R0 и ADD dst, src, R0. Команды перехода по условию "a < b" и "a < 0" имеют один и тот же код. Помещение константы из непосредственного операнда в верхнюю часть регистра это LDH dst,R0,imm (могу наврать с именем команды), и так далее. То есть, он пригождается, этот нулевой регистр.

Reply


Leave a comment

Up