Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
целом, влияние конфликтов по ресурсам на производительность конвейера по сравнению с другими конфликтами других типов невелико.
Конфликты по ресурсам могут возникать при выполнении команд, между которыми нет зависимостей по данным, из-за ограниченного числа программно доступных регистров. Для разрешения подобных конфликтов в современных процессорах используют расширенный блок внутренних регистров, с помощью которого осуществляется «размножение» и переименование ограниченного числа архитектурных регистров. Благодаря наличию расширенного блока регистров, одновременно могут выполняться несколько команд, ссылающихся на одно и то же имя регистра. Особенности реализации блока переименования регистров рассматривается ниже
Конфликты по данным – это ситуации, когда или исходный операнд, или результат операции не доступны в положенное время. Например, конфликт по данным возникает при выполнении i+1 команды, этап исполнения ЕХ которой требует не один, а большее число тактов. Работу конвейера при наличии конфликта указанного типа иллюстрирует рис.4.11.
Такты работы процессора
1 2 3 4 5 6 7 8 9 10 11
Команда i IF ID RD EX WB
Команда i+1 IF ID RD EX EX EX WB
Команда i+2 IF ID RD - - EX WB
Команда i+3 IF ID - - RD EX WB
Команда i+4 IF - - ID RD EX WB
Рис.4.11. Работа конвейера при выполнении операции длительностью более одного такта
В рассматриваемом примере этап исполнения ЕХ команды i+1 реализуется за три такта. Соответственно пока не завершена операция ЕХ этой команды содержимое буфера блока RD (рис.4.10,а) должно оставаться постоянным. Это значит, что ступень 3 конвейера, а вместе с ней и ступени 1 и 2, блокируются до конца операции и не могут принимать новые команды, поскольку информацию в буферах блоков IF и ID нельзя обновлять прежде, чем ранее записанная в них информация будет использована. Нормальное функционирование конвейера возобновляется только после завершения этапа исполнения ЕХ i+1 команды, т.е. после устранения конфликта по данным.
Другим примером конфликта по данным является ситуация, когда последовательно выполняются команды, зависящие друг от друга по данным. В частности, если результат i-й команды используется в качестве операнда (i+1)-ой команды, то нельзя выполнять этап RD чтение операнда (i+1)-ой команды до завершения записи результата i-й команды. Рассмотренный тип зависимости по данным называют «чтение после записи» RAW (read after write). При наличии RAW-зависимости (i+1)-я команда ошибочно получит старое значение операнда вместо нового.
Зависимости по данным, характерные для рассмотренных примеров, достаточно очевидны и сравнительно легко выявляются. Сложнее обнаруживать зависимости, определяемые командами, при выполнении которых изменяется не только содержимое приемника результата, но и некоторого другого ресурса, не явно задаваемого в команде, например адресного регистра в командах с автоинкрементной или автодекрементной адресацией. Для таких команд все действия, которые производятся при обнаружении зависимости от результирующих данных, должны выполняться и по отношению к адресным регистрам, обеспечивающим автоинкрементацию или автодекрементацию.
RAW - «чтение после записи» - команда j читает значение переменной x до того, как команда i записывает новое (истинное) значение x;
WAR- «запись после чтения» - команда j записывает новое значение x до того, как команда i успела прочитать старое (истинное) значение x;
WAW - «запись после записи» - команда j записывает новое значение x до того, как команда i записывает свое значение x (x ошибочно содержит i-е значение вместо j-го);
RAR - «чтение после чтения»
Зависимость между командами типа RAR к конфликту не приводит, так как последовательные чтения одного и того же операнда всегда дают правильный результат, и порядок выполнения команд значения не имеет.
Оставшиеся три зависимости не равнозначны, и не все являются источниками конфликтов по данным. Действительной взаимозависимостью команд по данным является только зависимость типа RAW (чтение после записи), возникающая в случае, если выполняется чтение еще не обновленных данных.. Она определена структурой конвейера, и поскольку ступень конвейера RD (чтение операнда) в типовом конвейере всегда предшествует ступени WB (запись результата), устранить действительные взаимозависимости команд невозможно.
По этой же причине (из-за структуры конвейера) зависимости типа WAR (запись после чтения) и WAW (запись после записи) в обычном конвейере при упорядоченном выполнении команд фактически являются «ложными» взаимозависимостями, так как они не приводят к конфликтным ситуациям. Проблемы появляются, если структура конвейера допускает выполнение операции запись перед операцией чтение или в конвейере осуществляется выполнение команд в порядке, отличном от определенного программой. В частности, конфликты WAR или WAW могут возникнуть, если в конвейере происходит приостановка исполнения одной из команд и продолжается выполнение последующих команд, т.е., если нарушается естественный порядок исполнения команд программы
Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.