AXT>> Вообще-то, если так можно сказать, "RISC-ядро" появилось в 486. Kernel3> Нельзя. "RISC-ядро" - это и есть "декодирование в микрокод".
Не, так не годится. 8086 тоже декодировал команды в микрокод. "RISC-ядро" - это декодирование в выполняемый на конвейере микрокод.
А ещё лучше так: "RISC-ядро" - это декодирование в выполняемый на конвейере микрокод, при том, что одновременно может выполняться микрокод нескольких команд программы.
Почему? А потому, что пока в процессоре в один момент времени исполняется одна команда, то всю обработку особых ситуаций, конфликтов доступа к ресурсам и т.п. можно переложить на плечи разработчика микрокода. Обычно так и делают. Соответственно, железо можно делать тупое, а потому простое.
Если же мы хотим исполнять на конвейере микрокод от нескольких команд, то блоку исполнения микрокоманд нужно будет распознавать конфликты между командами (и задерживать исполнение соответствующих микрокоманд), синхронизировать доступ к памяти и уметь производить откат в случае неправильно предсказанных переходов.
То есть, блок исполнения микрокоманд будет выполнять все те же функции, что выполняет ядро RISC-процессора, и его вполне справедливо можно называть "RISC-ядром".
В 80486 всё работает именно так.
AXT>> А П1 - скорее расшитый 486, чем разработка "с нуля". Kernel3> Я как бы в курсе.
А некоторые писатели в эту тему - нет
Kernel3> Upd: ан нет, таки есть проблема. Ну, ублюдочный V-pipe, чё с него взять.
Э, тут смешнее. Ведь пара mov [esp+10],eax/mov [esp+14],ebx таки исполняется за один такт. Я намекал на то, что и в 486, и в П1 команды такого типа разворачиваются в микрокод (в 486 - три команды, в П1 может быть и две), а разработчики не стали делать логику для проверки конфликтов параллельного доступа в память для таких вот пачек в несколько микрокоманд.
У 486 этих проблем не может быть в принципе, там же одна кишка.
Мне кажется, это достаточно убедительный пример перетаскивания целых блоков из 486 в П1. Если бы П1 делали с нуля, этот момент могли бы решить иначе.
Kernel3> В чём RISCовость конвейера-то заключалась? В выполнении некоторых инструкций за такт?
См. выше. Инструкция за такт - это просто дополнительная плюшка.
Раз у нас большинство часто используемых команд можно декодировать в одну микрокоманду, а одну микрокоманду исполнить на конвейере за такт - так почему бы не сделать декодер, обрабатывающий такую команду за такт?
и получить в результате одну CISC команду за такт?
... так пускай наступает на нас холодным рассветом новый день ...