Я прочитал статью о позиционном кодировании (one-hot), которое работает быстрее для конечных автоматов. Я сделал генераторы всех базовых арифметических и логических команд для любой разрядности, но оказалось, что я получу преимущество только если буду использовать логические элементы с транзисторами, спроектированные на другой уровень FO(Fan Out, не FO-4).   Но получил самый быстрый способ реализовать любую 2-4-битную функцию. (последовательный сумматор, работающий так же быстро, как сумматор с опережением переноса). Так что я создал селектор :) Ну, это разочаровывает. Вся информация о дешифраторах адресов памяти выглядит так: Ссылка 1 (Демультиплексор NOR с N транзисторами на строку на N бит адреса, FanOut - M/2, где M - количество линий) Ссылка 2 (Демультиплексор NAND с N транзисторами на строку на N бит адреса, FanOut - M/2, где M - количество линий) Ссылка 3 (Что называется Еще хуже, "мы сделали предекодинг и уменьшили нагрузку до 64 затворов на линию")    И все в таком духе.  По сути, более 4–10 затворов на одной линии — плохая практика. Затворы ячеек DRAM, "Висящие в воздухе" и затворы транзисторов, подключенных к питанию\земле очень сильно различаются по уровню емкостной нагрузки на линию (в общем, при переходе от FO-4 к FO-64 задержку нужно увеличить в 16 раз, или уже 16 задержек FO-4 и это только на 256 линий (не 65536)). Так же следует учесть что некоторые транзисторы могут просто не поддерживать высокие емкостные нагрузки (из-за дополнительно выделяемого тепла при переходных процессах). Поэтому я ограничился двумя транзисторами на строку для любой разрядности адреса.  Все просто: бинарное дерево с разветвлением 4 или 16, где каждый селектор включает только один селектор после себя и транслирует оставшийся адрес к нему.  Но прежде всего нам нужно преобразовать наш бинарный адрес в One-hot(унарную позиционную) кодировку.  После этого мы просто пишем дерево селекторов. Вместо энкодеров строк NOR и NAND мы получаем постоянный коэффициент ветвления (4 или 16) и низкую емкостную нагрузку.  Также мы получаем низкую логическую глубину в селекторе.  И в результате мы получаем возмутительно высокую скорость (сравнимую со скоростью сумматора со сквозным переносом с той же разрядностью). И низкое энергопотребление (около 40 переключений транзисторов для 16 бит)  Кроме того, мы получаем только 1–2 транзистора на строку для любой разрядности адреса (!).  Задержка в 13 FO-4 для 16-тибитного селектора(65536 линий), или меньше чем в ucdavis 16 FO-4 (256 линий).   Это около 20 ps на 7 nm для 16 bit (65k lanes) или около 40 ps для селектора строк и столбцов (32-битное адресное пространство). Или более 5 ГГц. Плюс переходные процессы в линиях и так далее.  В любом случае, это намного быстрее, чем селекторы NOR/NAND, и потребляет меньше энергии (переключение около 40 транзисторов; чтобы получить 1 Вт, нужно переключать около 5 миллионов транзисторов на частоте 1 ГГц на 32 nm).  Добавил сравнение с самым быстрым селектором 8-bit из ucdavis. В случае с равной скоростью получаю на 20% меньшую площадь, что само по себе различимый результат. Забавный пример — на хранение результата сложения может уйти больше энергии, чем на сложение. Вот почему каждый институт из топ-50 имеет свою собственную исследовательскую программу топологической сортировки и маппинга операций для FPGA). (С «выдающимися результатами, которые лучше, чем у любого ОБОРУДОВАНИЯ СЕГОДНЯ», конечно). И почти полное отсутствие арифметических блоков «AddMulJmpe» на частоте 1–2 ГГц. (За исключением MantiCore(ethz) и некоторых команд ARM, но, согласно публикациям, это скорее Волшебство (также известное как дерево шин 8 Тбит/с), чем парадигма Compute More Store Less)   Как и в случае с методом глобальной оптимизации, который лучше, чем в Matlab, результаты синтеза можно посмотреть здесь. Результаты включает в себя синтез на 130 nm, обзор характеристик для различных параметров синтеза, а так же общие сводки с результатами. 1) MantiCore - ethz 2) Изображение - https://www.elprocus.com/different-types-of-demultiplexers/ 3) Синтез - OpenLane