Сообщение от tempora
|
Из чего это следует?
|
Сам спросил, сам отвечу...
Похоже, ни из чего это не следует. Более того - есть основания предположить, что это попросту невозможно... однако, по порядку...
Сообщение от omercury
|
сразу 5 байт обрабатывается
|
Вы не указали, что означает Ваше "
обрабатывается" - то ли выборка/декодирование, то ли исполнение. Поскольку мои рассуждения о выборке ("
при правильном выравнивании, может оба этих адреса прочитать за один присест") Вы не остановили, дескать - '
речь о другой стадии', то получается, что речь шла о выборке/декодировании, однако, Вы повторно ссылаетесь на время исполнения (повидимому), длительностью в один такт, тогда получается - речь идет о фазе исполнения...?
Как бы там ни было, а прямых оснований предположить, что все пять байт (в первом случае - два указателя16 и байт опкода, во втором - два указателя16 и байт данных) обрабатываются
одновременно - в документации я пока не нашел. Зато там есть аргумент в пользу того, что это попросту невозможно: шина адреса флеши-то - 24-битная.
Насчет фазы выборки/декодирования, дока прямо сообщает, что инструкции длиной более 4 байт читаются за два обращения. Так что, оставим эту фазу, с ней, вроде бы, всё ясно.
Что касается фазы исполнения, то, в силу того, что шина адреса флеши 24-битная, а не 32-ух,
одновременная обработка этих двух адресов, повидимому, невозможна, и она-таки разделена по времени. Остается только гадать - как именно? Можно предположить, что ядро PLL-нуто так, что может за один клок тактового генератора осуществить два обращения к памяти, но тогда возникает вопрос - почему эта возможность не используется на стадии извлечения? (
это только предположение - в доке прямого указания на отсутствие такой возможност нет, однако, все примеры извлечения - не более 32 бит за один такт). Тогда как..? Вообще, документация обходит молчанием некоторые моменты. Например, ничего не известно о длительности "Decoding and addressing stage", и сама работа этой стадии как-то очень коротенько "описана", в отличие от фазы извлечения - одному конвейеру уделено несколько страниц.
Так вот, что если на стадии декодирования и вычисления адресов читается байт по указателю16 и к фазе execution задача сводится к "mov longmem,immediate"? (
Так сказать, повторное использование микрокода. ) Почему нет? Читает же он именно в этой фазе адрес из памяти в indirect-режиме, причем, бывает, что несколько раз читает (
"The number of cycles during which the CPU is stalled depends on the pointer size (short, long or extended addressing mode).")...