Читал я тут про Cortex'ы, и мысль меня посетила. По поводу основного know-how ARM. Судя по обилию моделей и опций, никто руками код процессора там не пишет.
Вероятно, там сделали так.
Очень хорошо продумали логическую модель семейства. Некое базовое пространство блоков и опций. Единую систему команд (несколько уровней имплементации, совместимо снизу вверх)
Потом, вероятно, руками, написали описания блоков и опций как параметризуемые модели.
Далее, при запросе синтеза какого-то конкретного ядра:
* юзер ставит желаемые параметры
* параметры напрямую попадают в параметризируемые модели, часть параметров генерится автоматически за счет взаимозависимостей
* после того, как все параметры всех моделей заданы, идет синтез исходного кода
* далее синтез в пространство примитивов целевой технологии
* автоматически и одновременно синтезируется полный набор тест-бенчец
* проводится проверка как синтезированного кода, так и синтезированного дизайна в целевом простанстве примитивов.
И основное, за что ARM берет свои деньгм - это за то, что всяя эта бурная "синтезационно-параметрическая" деятельность приводит к работоспособному результату.
Вот бы такое для софта сделать...