Platinum & Zeyna
Кстати, задумывался о том, чтобы старый TI-83 переделать в крипто-ноду с низким энергопотреблением? Могу объяснить математику, а ты могла бы научить меня, как сделать это тихо и эффективно.
Конечно, TI-83 вполне может стать дешевым крипто-узлом, если все настроить правильно. Выключи экран, запусти минимальный хеш, например SHA-256, на ассемблере, и переведи процессор в режим пониженного энергопотребления между пакетами. Я могу помочь тебе подкорректировать загрузчик, чтобы он работал тихо и эффективно, просто следи за количеством циклов и держи использование памяти на минимуме.
Отличный план. Давайте постараемся удержать код в пределах 5 килобайт, установим частоту генератора 16 мегагерц для скорости и заблокируем драйвер дисплея, чтобы избежать случайных прерываний. Если сможешь увеличить цикл хеширования до 300 тысяч циклов на вызов, мы останемся в пределах 200 милливатт в режиме ожидания. Следи за объёмом памяти – и у нас получится тихий, эффективный узел.
Установи генератор на 16 мегагерц и заблокируй регистры генератора, чтобы процессор никогда не получил сбоя тактового сигнала. В ассемблере удерживай цикл хеширования менее 300 тысяч циклов, используя 32-битную конвейерную обработку: загружай два 16-битных слова, выполняй над ними XOR, затем используй встроенскую рутину сложения с переносом из математического ROM, но патчи её, чтобы она пропускала проверку на перенос. Для памяти нужно всего 4 килобайта: один для буфера хешей, один для таблицы модификаторов и крошечный автомат в векторе прерывания, который переводит процессор в спящий режим и будит его по таймеру каждые 200 миллисекунд. Отключи драйвер LCD, обнулив биты управления LCD, и удерживай пины порта дисплея в состоянии высокого импеданса. Тогда потребление энергии TI-83 в режиме ожидания будет менее 200 милливатт. Код помещается в 5 килобайт, если удалить отладочные строки и везде использовать 8-битные константы. Просто помни: все счетчики циклов - 16-битные, чтобы не было 32-битных накладных расходов. Это основа.
Выглядит убедительно. Просто перепроверь, чтобы вектор таймера не затронул никаких критических регистров, прежде чем переводить процессор в спящий режим. Как только цикл будет настроен до 299 тысяч циклов, сможем протестировать производительность и подкорректировать интервал сна. Держи меня в курсе потребления энергии; я быстро смоделирую, чтобы убедиться, что оно остаётся ниже 200 милливатт.
Сделай так, чтобы прерывание таймера сохраняло R0, R1, R2 и R3, а потом сразу переходило в режим сна. После завершения прерывания используй встроенную инструкцию `STOPS`. Я перепишу цикл, чтобы он выполнялся ровно 299 тысяч циклов – немного подкорректирую цепочку умножения и сложения. Следи за флагом `T0`, чтобы мы не просыпались дважды. Я буду отслеживать энергопотребление с частотой 1 кГц, чтобы ты видел целевые 200 милливатт в реальном времени. Держи меня в курсе результатов симуляции.
Отлично, согласен. Сейчас запущу симуляцию счетчика циклов и пришлю график энергопотребления. Как только увижу плато в 200 милливатт, закончим цепочку ISR. Пожалуйста, держи отладочный вывод минимальным, чтобы не превысить 5 килобайт. Всё будет сделано, понял. Запускаю подсчет циклов, сообщу, как только подтвердим 200 милливатт.