Какая прелесть. ARM
тихой сапой добавил явовские байткоды в качестве еще одной ISA. (у них уже и так было две) Поскольку ARM просто везде, можно с уверенностью говорить, что никакой Явовской виртуальной машины вне пределов совсем "взрослых" писюков и рабочих станций уже нет - нелепая архитектура явовской машины канонизорована "в железе"! Фу
(
Read more... )
JITу сложные адресации не нужны. Он переводит стековый код в нормальный трехадресный, а потом его компилирует.
Аппаратная Java хороша для систем с маленькой памятью. Каковыми являются все встраиваемые системы :-).
Reply
Reply
Сценарий 1: Мы читаем N независимых бит. Чтобы это проделать, нам надо загнать N независимых адресов в контроллер памяти.
Сценарий 2: Мы читаем N бит, адреса которых получаются из одного числа применением какой-то простой функции (например, "прибавить номер бита"). Теперь в контроллер памяти надо загнать только одно число + сослаться на функцию (если она не имплицитна).
Мне кажется, что сценарий 1 требует больше времени, чем 2. Где я неправ?
Reply
Reply
Reply
С чего ты взял, что у адреса должна быть фиксированная длина N? Он тоже может быть переменным. У тебе нету больше никакой параллельной шины длиной N, а есть N совершенно независимых серийных интерфейсов. Сколько-то из них не нужны - не пользуйся. Именно поэтому серийные интерфейсы типа PCI-e так сильно пошустрели - синхронизировать сигнал в уйме параллельных проводов больше не надо, для каждого бита свой собтвенный умный контроллер.
В контексте памяти это дело пионировал Rambus. Сначала сделай грамотную передачу одного бита с однобитным оффсетом, а потом мультиплексай себе на здоровье, сколько надо. Таким образом, число N зашито не на уровне архитектуры, а лишь ее какой-то конкретной имплементации.
Reply
Хотя тут возникает проблема синхронизации всё равно: для многобитного значения мне надо дождаться прибытия всех бит. Но это нетрудно, и это не большая плата за произвольность числа бит. Для всяких потоковых алгоритмов, типа аудио, видео и крипто, это прямой бонус.
Reply
Reply
Reply
Что значит "нормальный трехадресный"? Это нормально при наличии 32-битного опкода, примерно 32 регистров общего назначения и сравнительно медленной памяти. Кстати, вторая ISA ARM, Thumb, 16-битная двухадресная и добавлена именно ради возможности получения более компактного кода на встраемывых системах, хотя в целом ARM 32-битная архитектура.
Зачем добавили аппаратную Явы СЕЙЧАС, очевидно. Технически грамотнее было бы ехать с обратной стороны - придумать стандартное встроенное железо. (Коим сейчас де-факто является как раз АRМ)
Reply
Reply
Reply
"Операции на стеке" выполняются на этапе компиляции - потом стек для вычислений не нужен.
Компиляция дорога, но выполняется только один раз. В этом то и прелесть JIT.
Reply
Reply
Более того, все декомпиляторы (не Java), которые я видел, бинарный код сначала переводили в трехадресный, а потом после упрощающих преобразований, транслировали в язык высокого уровня.
Reply
Leave a comment