Недавно читал статью про декодеры в процессорах Pentium P6, в результате возникло несколько вопросов. Как было написано, в устройстве декодирования имеется три декодера: два простых и один сложный. Первые два декодируют простые команды с регистровыми операндами, а третий с операндами в памяти. На выходе получается поток из 1+1+4 микроопераций. Поэтому рекомендуется располагать команды так, чтобы давать оптимальный поток микроопераций. Про сложные команды типа умножения, деления и т.д. было сказано, что для них поток микроопераций берется из устройста микропрограммного управления, а именно из ПЗУ микропрограмм. Возникают следующие вопросы: Предполагаю, что для сложных инструкций количество микроопераций куда больше, чем 4. Есть ли инфа по количеству микроопераций на команду ? Могут ли такие команды быть декодированы за один такт ? При декодировании таких команд стандартные декодеры принимают участие, или этим занимается только блок микропрограммного управления ? И как, в таком случае, расположить команды для оптимального потока микроопераций для уменьшения задержек выборки/декодирования ? Спасибо за внимание
_Explorer Читай Агнера Фога, у него все расписано в деталях и с примерами: 1) оригинал: Agner Fog "How to optimize for the Pentium® microprocessors" (pentopt.pdf) 2) перевод предыдущего издания Агнера by Aquila (wasm.ru): Оптимизация для процессоров семейства Pentium В качестве упражнения см.тему 4-1-1 µop sequence
x86 инструкции разбиваются на risc подобные "элементарные" микрооперации, далее со служебной информацией они пускаются в несколько потоков и при прохождении определенных контролирующих микро устройств выбираются их оптимальные варианты обработки, т.е. последовательности выполнения и прочее. Серьезного материала на эту тему немного, да и тот оставляет желать лучшего.