Способ и устройство для блокировки сигнала синхронизации в многопоточном процессоре
Реферат
Изобретение относится к многопоточным процессорам, а именно к способу и устройству блокировки сигнала синхронизации в многопоточном процессоре. Технический результат заключается в увеличении использования совместно используемых ресурсов в зависимости от изменения в состоянии потоков, обслуживаемых в многопоточном процессоре. Способ включает в себя осуществление индикации ожидания обработки события для каждого из множества потоков, поддерживаемых в многопоточном процессоре, установление индикации активного или неактивного состояний для каждого из множества потоков, обнаружение условия блокировки синхронизации, которое может быть индицировано отсутствием ожидающих обработки событий для каждого из множества потоков и неактивного состояния для каждого из множества потоков. Сигнал синхронизации, если он разрешен, затем блокируется для по меньшей мере одного функционального блока в многопоточном процессоре в зависимости от обнаружения условия блокировки синхронизации. 3 с. и 21 з.п. ф-лы, 19 ил.
Область техники Настоящее изобретение в целом относится к области многопоточных процессоров, а более конкретно к способу и устройству блокировки сигнала синхронизации в многопоточном (МП) процессоре. Предшествующий уровень техники Многопоточный (МП) проект процессора недавно рассматривался как все более и более привлекательная возможность увеличения производительности процессоров. Многопоточность в процессоре, помимо прочего, обеспечивает возможность более эффективного использования различных ресурсов процессора и особенно более эффективного использования исполнительных схем в процессоре. А именно, подавая множественные потоки к схемам исполнения процессора, тактовые циклы, которые бы иначе не использовались из-за останова или другой задержки обработки конкретного потока, могут использоваться, чтобы обслужить дополнительный поток. Останов в обработке конкретного потока может быть результатом множества событий в конвейере процессора. Например, неудачное обращение в кэш или ошибка предсказания перехода (т.е. операции с длительной задержкой) для команды, включенной в поток, обычно приводят к остановке обработки соответствующего потока. Отрицательное влияние операций с длительной задержкой на эффективность исполнительных схем усилено недавним увеличением производительности исполнительных схем, которые имеют опережающие достижения в уменьшении времени доступа к памяти и среднего времени выборки. Многопоточные компьютерные приложения также становятся все более и более обычными ввиду поддержки, обеспеченной таким многопоточным приложением множеством популярных операционных систем, таких как операционные системы Windows NT и Unix. Многопоточные компьютерные приложения особенно эффективны в области мультимедиа. Многопоточные процессоры могут быть в общих чертах классифицированы на две категории (т.е. точные или грубые модели проектов) в зависимости от схемы чередования или переключения потоков, используемой в соответствующем процессоре. Точные многопоточные проекты поддерживают множество активных потоков в процессоре и обычно чередуют два различных потока на основе принципа цикл за циклом. Грубые модели многопоточных проектов обычно чередуют команды различных потоков при возникновении некоторого события с длительной задержкой, такого как неудачное обращение в кэш. Грубые модели многопоточных проектов обсуждаются в книге Eickemayer, R.; Johnson, R.; et al, “Evaluation of Multithreaded Uniprocessors for Commercial Application Environments”, The 23rd Annual International Symposium on Computer Architecture, pp.203-212, May 1996. Различия между точными и грубыми моделями проектов дополнительно обсуждаются в книге Laudon, J; Gupta, A, “Architectural and Implementation Tradeoffs in the Design of Multiple-Context Processors”, Multithreaded Computer Architectures: A Summary of the State of the Art. edited by R.A. Iannuci et al, pp.167-200, Kluwer Academic Publishers, Norwell, Massachusetts, 1994. В работе Laudon дополнительно предлагает схему чередования, которая объединяет переключение по принципу цикл за циклом точной модели проекта с полной взаимной блокировкой конвейеров грубой модели проекта (или блокированную схему). Для этой цели в работе Laudon предлагается команда “возврат”, которая делает определенный поток (или контекст) недоступным в течение определенного числа циклов. Такая команда “возврат” может быть выдана после возникновения предопределенных событий, таких как неудачное обращение в кэш. Таким образом Laudon избегает необходимости фактически переключать поток, просто делая один из потоков недоступным. Многопоточная архитектура для процессора представляет множество дополнительных сложных проблем в контексте архитектуры процессора с исполнением команд с изменением последовательности и спекулятивного исполнения (исполнения по предположению). Более конкретно обработка событий (например, команд перехода, исключений или прерываний), которые могут приводить к неожиданному изменению в потоке команд, усложняется при рассмотрении множества потоков. В процессоре, где осуществляется разделение ресурсов между множеством потоков (т.е. существует ограничение или отсутствие дублирования функциональных блоков для каждого потока, поддерживаемого процессором), обработка возникновения событий, имеющих отношение к определенному потоку, усложняется тем, что при обработке таких событий должны рассматриваться дополнительные потоки. Когда осуществляется совместное использование ресурсов в многопоточном процессоре, дополнительно желательно попытаться увеличить использование совместно используемых ресурсов в зависимости от изменений в состоянии потоков, обслуживаемых в многопоточном процессоре. Сущность изобретения Согласно одному аспекту настоящего изобретения обеспечивается способ, который включает в себя осуществление индикации ожидающего обработки события для каждого из множества потоков, поддерживаемых в многопоточном процессоре. Индикация активного или неактивного состояния выполняется для каждого из множества потоков, поддерживаемых в многопоточном процессоре. Обнаруживается условие блокировки синхронизации, указанное индикацией отсутствия ожидающего обработки событий, относящихся к каждому из множества потоков, и неактивным состоянием для каждого из потоков. Сигнал синхронизации, если он разрешен, блокируется для по меньшей мере одного функционального блока в многопоточном процессоре в зависимости от обнаружения условия блокировки синхронизации. Способ может включать в себя обнаружение условия разрешения синхронизации, на которое указывает индикация ожидающего обработки события, для, по меньшей мере, одного потока из множества потоков, поддерживаемых в многопоточном процессоре, или индикация активного состояния для, по меньшей мере, одного потока из множества потоков, поддерживаемых в многопоточном процессоре, и разрешение сигнала синхронизации, если он заблокирован, для, по меньшей мере, одного функционального блока в многопоточном процессоре в ответ на обнаружение условия разрешения синхронизации. Способ может дополнительно включать в себя обеспечение индикации операции доступа к шине и обнаружение условия блокировки синхронизации только в отсутствие индикации операции доступа к шине. В некоторых вариантах осуществления операция доступа к шине содержит операцию отслеживания, и индикация операции доступа к шине обеспечивается, когда операция доступа к шине активна в течение предопределенной продолжительности отслеживания. Способ может дополнительно включать в себя поддержание индикации запрещения события для, по меньшей мере, первого потока из множества потоков, поддерживаемых многопоточным процессором, причем индикация запрещения события идентифицирует, по меньшей мере, одно событие для первого потока, которое не является событием, которое вызывает переключение первого потока между неактивным и активным состояниями. В варианте осуществления настоящего изобретения обнаружение условия блокировки синхронизации и условия разрешения синхронизации зависит от индикации запрещения события для первого потока, и условие блокировки синхронизации является обнаруженным или условие разрешения синхронизации является необнаруженным, если ожидающее обработки событие обозначено индикацией запрещения события для первого потока как запрещенное. В некоторых вариантах осуществления поддержание индикации активности потока для каждого из множества потоков содержит поддержание работы конечного автомата активного потока, который выдает сигнал для каждого из множества поддерживаемых потоков для того, чтобы указать, находится ли соответствующий поток в активном или неактивном состоянии. В примерном варианте осуществления изобретения блокировка сигнала синхронизации для, по меньшей мере, одного функционального блока может включать в себя операции логической обработки сигнала синхронизации, блокировки распространения сигнала синхронизации процессора по магистрали синхронизации процессора, блокировки контура фазовой автоподстройки частоты, который генерирует сигнал синхронизации процессора, или поддержание подачи сигнала синхронизации к входам шины многопоточного процессора для того, чтобы разрешить обнаружение операции или события доступа к шине, когда сигнал синхронизации заблокирован. В соответствии с другим аспектом настоящего изобретения обеспечивается устройство, содержащее индикатор ожидающего обработки события, который поддерживает индикацию ожидающего обработки события для каждого из множества потоков, поддерживаемых в многопоточном процессоре, индикатор активного потока, который осуществляет индикацию активного или неактивного состояния для каждого из множества потоков, поддерживаемых в многопоточном процессоре, и логическую схему управления синхронизацией для обнаружения условия блокировки синхронизации, обозначенного индикацией отсутствия ожидающих обработки событий для каждого из множества потоков, и неактивного состояния для каждого из множества потоков, и отключения сигнала синхронизации для, по меньшей мере, одного функционального блока в многопоточном процессоре в ответ на обнаружение условия блокировки синхронизации. В примерном варианте осуществления изобретения логическая схема управления синхронизацией обнаруживает условие разрешения синхронизации, обозначенное индикацией ожидающего обработки события или активного состояния для, по меньшей мере, одного потока из множества потоков, поддерживаемых в многопоточном процессоре, и разрешает сигнал синхронизации, если он заблокирован, для, по меньшей мере, одного функционального блока в многопоточном процессоре в ответ на обнаружение условия разрешения синхронизации. В некоторых вариантах осуществления устройство может включать в себя логическую схему слежения за шиной, которая обеспечивает индикацию операции доступа к шине. В этом варианте осуществления логическая схема управления синхронизацией обнаруживает условие блокировки синхронизации только в отсутствие индикации операции доступа к шине от логической схемы слежения за шиной. Операция доступа к шине может включать в себя операцию слежения, причем логическая схема слежения за шиной может обеспечивать индикацию операции доступа к шине, когда операция доступа к шине активна в течение предопределенной продолжительности слежения. В одном из вариантов осуществления настоящего изобретения устройство может включать в себя индикатор запрещения события, поддерживающий индикацию запрещения события для, по меньшей мере, первого потока из множества потоков, поддерживаемых многопоточным процессором. Такая индикация запрещения события идентифицирует, по меньшей мере, одно событие для первого потока, которое не является событием, которое вызывает переход первого потока между неактивным и активным состоянием. Логическая схема управления синхронизацией обнаруживает условие блокировки синхронизации и условие разрешения синхронизации в зависимости от индикации запрещения события для первого потока. Условие блокировки синхронизации обнаруживается или условие разрешения синхронизации не обнаруживается логической схемой управления синхронизацией, если обозначенное ожидающее обработки событие указано как запрещенное индикацией запрещения события для первого потока. В варианте осуществления информации устройство обнаруживает условие разрешения синхронизации, обозначенное индикацией активного состояния для, по меньшей мере, одного потока из множества потоков, поддерживаемых в многопоточном процессоре, и разрешает сигнал синхронизации, если он заблокирован, для, по меньшей мере, одного функционального блока в многопоточном процессоре в ответ на обнаружение условия разрешения синхронизации. В некоторых вариантах осуществления устройство может включать в себя конечный автомат активного потока, который выводит сигнал для каждого из множества поддерживаемых потоков для того, чтобы указать, находится ли соответствующий поток в активном состоянии или неактивном состоянии. Логическая схема управления синхронизацией может блокировать сигнал синхронизации для, по меньшей мере, одного функционального блока с помощью логической обработки сигнала синхронизации или блокируя распространение сигнала синхронизации процессора по магистрали синхронизации процессора. Логическая схема управления синхронизацией может блокировать сигнал синхронизации для, по меньшей мере, одного функционального блока, блокируя контур фазовой автоподстройки частоты, который генерирует сигнал синхронизации процессора. Она может, в одном из вариантов осуществления, поддерживать подачу сигнала синхронизации к входам шины многопоточного процессора для того, чтобы разрешить обнаружение операции или события доступа к шине, когда сигнал синхронизации заблокирован. В соответствии с еще одним аспектом настоящего изобретения обеспечивается устройство, содержащее средство для поддержания индикации ожидающего обработки события для каждого из множества потоков, поддерживаемых в многопоточном процессоре, средство для поддержания индикации активного или неактивного состояния для каждого из множества потоков, поддерживаемых в многопоточном процессоре, и средство для обнаружения условия блокировки синхронизации, обозначенного индикацией отсутствия ожидающих обработки событий, для каждого из множества потоков и неактивного состояния для каждого из множества потоков, и для отключения сигнала синхронизации для, по меньшей мере, одного функционального блока в многопоточном процессоре в ответ на обнаружение условия блокировки синхронизации. Другие признаки настоящего изобретения будут очевидны из сопроводительных чертежей и из подробного описания, которое следует далее. Краткое описание чертежей Настоящее изобретение иллюстрировано с помощью примеров и не ограничено фигурами сопроводительных чертежей, в которых соответствующие ссылки указывают на подобные элементы и в которых: Фиг.1 - структурная схема, показывающая один из вариантов осуществления конвейера процессора с многопоточной поддержкой. Фиг.2 - структурная схема, показывающая примерный вариант осуществления процессора в форме универсального многопоточного микропроцессора. Фиг.3 - структурная схема, показывающая выбранные компоненты типичного многопоточного микропроцессора, и конкретно изображает различные функциональные блоки, которые обеспечивают возможность буферизации (или хранения), будучи логически разделенными для того, чтобы адаптировать множество потоков. Фиг.4 - структурная схема, показывающая кластер обработки с изменением последовательности согласно одному из вариантов осуществления. Фиг.5 - схематическое представление таблицы псевдонимов регистров и файла регистров, используемых в одном из вариантов осуществления. Фиг.6А - схема, показывающая подробности, относящиеся к буферу переупорядочивания, который логически разделен для того, чтобы обслуживать множество потоков в многопоточном процессоре согласно одному из вариантов осуществления. Фиг.6В - схематическое представление регистра ожидающего обработки события и регистра запрещения события согласно одному из вариантов осуществления. Фиг.7А - последовательность операций, показывающая способ обработки события в многопоточном процессоре согласно одному из вариантов осуществления. Фиг.7В - последовательность операций, показывающая способ обработки события “виртуальное удаление” в многопоточном процессоре согласно одному из вариантов осуществления. Фиг.8 - схематическое представление множества примеров событий, которые могут быть обнаружены блоком обнаружения событий, осуществленным в многопоточном процессоре согласно одному из вариантов осуществления. Фиг.9 и 10 - соответствующие схемы, показывающие примерное содержимое таблицы переупорядочивания в типичном буфере переупорядочивания, таком как показанный на фиг.6А. Фиг.11А - последовательность операций, показывающая способ выполнения операции очистки (или удаления) в многопоточном процессоре, поддерживающем по меньшей мере первый и второй потоки согласно примеру варианта осуществления. Фиг.11В - структурная схема, показывающая схему конфигурирования, которая работает таким образом, чтобы сконфигурировать функциональный блок в соответствии с выходным сигналом конечного автомата активного потока согласно одному варианту осуществления. Фиг.12 - временная диаграмма, показывающая формирование сигнала удаления согласно одному из вариантов осуществления. Фиг.13 - последовательность операций, показывающая способ обеспечения монопольного доступа к блоку обработки событий в многопоточном процессоре согласно одному из вариантов осуществления. Фиг.14 - диаграмма состояний, показывающая работу конечного автомата монопольного доступа, осуществленного в многопоточном процессоре согласно одному из вариантов осуществления. Фиг.15 - диаграмма состояний, показывающая состояния, которые могут быть приняты конечным автоматом активного потока, осуществленным в многопоточном процессоре согласно одному из вариантов осуществления. Фиг.16А - последовательность операций, показывающая способ выхода активного потока при обнаружении события неактивного состояния (состояния “сна”) для активного потока в многопоточном процессоре согласно одному из вариантов осуществления. Фиг.16В - схематическое представление сохранения состояния и обратного распределения регистров после выхода из потока согласно одному из вариантов осуществления. Фиг.17 - последовательность операций, показывающая способ перехода потока из неактивного в активное состояние после обнаружения события перезагрузки конвейера для неактивного потока согласно одному из вариантов осуществления. Фиг.18 - последовательность операций, показывающая способ управления разрешением и блокировкой сигнала синхронизации для, по меньшей мере, одного функционального блока в многопоточном процессоре согласно одному из вариантов осуществления. Фиг.19А - структурная схема, показывающая схему управления синхронизацией для разрешения и блокировки сигнала синхронизации в многопоточном процессоре согласно одному из вариантов осуществления. Фиг.19В - схематическая диаграмма, показывающая один из вариантов осуществления схемы управления синхронизацией, показанной на фиг.19А. Подробное описание Описываются способ и устройство для управления сигналом синхронизации в многопоточном процессоре. В нижеследующем описании сформулированы многочисленные конкретные подробности с целью объяснения и для того, чтобы обеспечить полное понимание настоящего изобретения. Однако специалисту очевидно, что настоящее изобретение может быть осуществлено без этих конкретных подробностей. Для целей настоящего описания термин “событие” следует понимать таким образом, чтобы он включал в себя любое событие, внутреннее или внешнее для процессора, которое вызывает изменение или прерывание в обслуживании потока команд (макро- или микрокоманд) в процессоре. Соответственно, термин “событие” должен включать в себя обработку команд перехода, исключения и прерывания, которые могут быть сгенерированы в процессоре или вне процессора, но не ограничивался ими. Для целей настоящего описания термин “процессор” следует понимать таким образом, чтобы он относился к любому устройству, которое способно выполнять последовательности команд (например, макро- или микрокоманд), и чтобы он включал в себя универсальные микропроцессоры, специальные микропроцессоры, графические контроллеры, звуковые контроллеры, контроллеры мультимедиа, микроконтроллеры или сетевые контроллеры, но не ограничивался ими. Дополнительно термин “процессор” следует использовать по отношению, помимо прочего, к процессорам с полной системой команд (CISC), с сокращенным набором команд (RISC) или с системой команд сверхбольшой разрядности (VLIW). Дополнительно термин “точка очистки” следует понимать таким образом, чтобы он включал в себя любую команду в потоке команд (который может включать в себя микрокоманду или поток макрокоманд), определение местоположения которой в потоке команд обеспечивается посредством маркера потока или другой команды, в которой событие может быть обработано или выполнено. Термин “команда” следует понимать таким образом, чтобы он включал в себя макрокоманду или микрокоманду, но не ограничивался ими. Описываются некоторые примерные варианты осуществления настоящего изобретения, которые осуществлены прежде всего или в аппаратных средствах, или в программном обеспечении. Тем не менее специалисты должны признать, что многие признаки могут легко быть осуществлены в аппаратных средствах, программном обеспечении или комбинации аппаратных средств и программного обеспечения. Программное обеспечение (например, микрокоманды или макрокоманды) для реализации вариантов осуществления изобретения может находиться, полностью или по меньшей мере частично, в оперативной памяти, доступной процессору и/или в процессоре непосредственно (например, в кэше или блоке упорядочивания микропрограммы). Например, блок обработки событий и конечные автоматы могут быть осуществлены в микропрограмме, отправленной блоком упорядочивания микропрограммы. Программное обеспечение может дополнительно передаваться или приниматься через сетевое интерфейсное устройство. Для целей настоящего описания термин “машинно-считываемый носитель” следует понимать таким образом, чтобы он включал в себя любой носитель, на котором возможно сохранение или кодирование последовательности команд для исполнения устройством, что приводило бы к выполнению устройством любой команды согласно способам настоящего изобретения. Термин “машинно-считываемый носитель” следует соответственно понимать так, чтобы он включал в себя полупроводниковую память, оптические и магнитные диски и волновой канал передачи, но не ограничивался ими. Конвейер процессора Фиг.1 - укрупненная структурная схема, показывающая один из вариантов осуществления конвейера 10 процессора. Конвейер 10 включает в себя множество ступеней конвейера, начинающихся со ступени 12 выборки, на которой команды (например, макрокоманды) выбираются и подаются на конвейер 10. Например, макрокоманда может быть выбрана из кэш-памяти, которая интегрирована с процессором, или непосредственно соединена с ним, или может быть выбрана из внешней оперативной памяти через шину процессора. От ступени 12 выборки макрокоманды передаются к ступени 14 декодирования, где макрокоманды транслируются в микрокоманды (также называют “микропрограммой”), пригодные для выполнения в процессоре. Затем микрокоманды передаются по “течению” потока к ступени 16 распределения, где ресурсы процессора распределяются различным микрокомандам согласно доступности и потребности. Затем микрокоманды выполняются на ступени 18 выполнения до выполнения завершения или “обратной записи” (например, перехода в архитектурное состояние) на ступени 20 сброса. Архитектура микропроцессора Фиг.2 - структурная схема, показывающая примерный вариант осуществления процессора 30 в форме универсального микропроцессора. Описанный ниже процессор 30 является многопоточным (МП) процессором и соответственно способен обрабатывать множественные потоки команд (или контексты). Однако множество описаний, обеспеченных ниже в описании, не являются специфическими для многопоточного процессора и могут найти применение в однопоточном процессоре. В примере варианта осуществления процессор 30 может содержать микропроцессор архитектуры фирмы Intel (IA), который способен выполнять систему команд архитектуры фирмы Intel. Примером такого микропроцессора архитектуры фирмы Intel является микропроцессор Пентиум Про или микропроцессор Пентиум III, изготовленные корпорацией Intel, расположенной в г. Санта-Клара, Калифорния. В одном из вариантов осуществления процессор 30 содержит входной блок упорядоченной обработки и внутренний блок обработки с изменением последовательности. Входной блок упорядоченной обработки включает в себя блок 32 интерфейсной шины, который функционирует как средство передачи между процессором 30 и другими компонентами (например, оперативной памятью) компьютерной системы, в которой процессор 30 может использоваться. Для этой цели блок 32 интерфейсной шины соединяет процессор 30 с шиной процессора (не показана), через которую данные и информация управления могут приниматься и передаваться в/из процессора 30. Блок 32 интерфейсной шины включает в себя схему 34 входной (системной) шины (ССШ), которая управляет передачей по шине процессора. Блок 32 интерфейсной шины дополнительно включает в себя блок 36 шинной очереди, который обеспечивает функцию буферизации при передаче по шине процессора. Показанный блок 32 интерфейсной шины принимает запросы 38 к шине и посылает результаты слежения или ответы шины к исполнительному блоку 42 памяти, который обеспечивает функцию местной памяти в процессоре 30. Исполнительный блок 42 памяти включает в себя объединенный кэш 44 данных и команд, буфер 46 быстрого преобразования адреса (ББПА) данных и буфер 48 упорядочивания памяти. Исполнительный блок 42 памяти принимает запросы 50 на выборку команды из механизма 54 трансляции и доставляет необработанные команды 52 (т.е. кодированные макрокоманды) к механизму 54 трансляции микрокоманды, который транслирует принятые макрокоманды в соответствующий набор микрокоманд. Механизм 54 трансляции микрокоманды эффективно работает как “блок обработки промахов” кэша трасс, доставляя микрокоманды кэшу 62 трасс в случае неудачного обращения в кэш трасс. Для этой цели механизм 54 трансляции микрокоманды функционирует таким образом, чтобы обеспечить выполнение ступеней 12 и 14 выборки и декодирования конвейера в случае неудачного обращения в кэш трасс. Показанный механизм 54 трансляции микрокоманды включает в себя блок 100 указания следующей команды (УСК), буфер 102 быстрого преобразования адреса (ББПА) команды, блок 104 прогнозирования перехода, буфер 106 потока команд, предварительный декодер 108 команды, схему 110 направления команды, декодер 112 команды и блок 114 вычисления адреса перехода. Блок 100 указания следующей команды, ББПА 102, блок прогнозирования 104 перехода и буфер 106 потока команды вместе составляют блок 99 предсказания ветвлений (БПВ). Декодер 112 команды и блок 114 вычисления адреса перехода вместе составляют блок 113 трансляции команды (IX). Блок 100 указания следующей команды выдает запрос на следующую команду к объединенному кэшу 44. В примере варианта осуществления, когда процессор 30 содержит многопоточный микропроцессор, способный к обработке двух потоков, блок 100 указания следующей команды может включать в себя мультиплексор (МПЛ) (не показан), который выбирает между указателями команды, связанными или с первым, или со вторым потоком, для включения в следующий запрос на команду, выданный оттуда. В одном из вариантов осуществления блок 100 указания следующей команды чередует запросы на следующую команду для первого и второго потоков способом цикл-за-циклом (“пинг-понг”, попеременно), принимая команды, которые были запрошены, для обоих потоков до тех пор, пока ресурсы буфера 106 потока команд для обоих потоков не будут исчерпаны. Запросы блока указания следующей команды могут быть по 16, 32 или 64 байтов в зависимости от того, находится ли начальный адрес запроса в верхней половине строки, выровненной по границе 32-байт или 64-байт. Блок 100 указания следующей команды может быть переадресован блоком 104 прогнозирования перехода, блоком 114 вычисления адреса перехода или кэшем 62 трасс, причем запрос неудачного обращения в кэш трасс является запросом на переадресацию с самым высоким приоритетом. Когда блок 100 указания следующей команды осуществляет запрос за командой к объединенному кэшу 44, он генерирует два бита “идентификатора запроса”, который связан с запросом команды и функционирует как “тэг” для соответствующего запроса команды. При возвращении данных, соответствующих запросу команды, объединенный кэш 44 возвращает следующие тэги или идентификаторы вместе с данными: 1. “Идентификатор запроса”, переданный блоком 100 указания следующей команды; 2. Трехбитный “идентификатор порции”, который идентифицирует возвращенную порцию; и 3. “Идентификатор потока”, который идентифицирует поток, которому принадлежат возвращенные данные. Запросы следующей команды передаются от блока 100 указания следующей команды к ББПА 102 команды, который выполняет операцию поиска адреса и доставляет физический адрес объединенному кэшу 44. Объединенный кэш 44 доставляет соответствующую макрокоманду к буферу 106 потока команд. Каждый следующий запрос команды также передается непосредственно от блока 100 указания следующей команды к буферу 106 потока команд, чтобы позволить буферу 106 потока команд идентифицировать поток, которому принадлежит макрокоманда, принятая из объединенного кэша 44. Затем макрокоманды первого и второго потоков выдаются буфером потока 106 потока команд на предварительный декодер 108 команды, который выполняет множество вычислений длины и операций маркировки байта в соответствии с принятым потоком команд (макрокомандами). А именно, предварительный декодер 108 команды генерирует ряд векторов маркировки байта, которые служат, помимо прочего, для разграничения макрокоманд в потоке команд, переданных к схеме 110 направления команд. Затем схема 110 направления команд использует векторы маркировки байта, чтобы направлять дискретные макрокоманды на декодер 112 команды с целью декодирования. Макрокоманды также передаются из схемы 110 направления команд на блок 114 вычисления адреса перехода с целью вычисления адреса перехода. Затем микрокоманды доставляются из декодера 112 команды на механизм 60 трассировки доставки. Во время декодирования маркеры потока связываются с каждой микрокомандой, в которую транслируется макрокоманда. Маркер потока указывает на характеристику связанной микрокоманды и может, например, обозначать соответствующую микрокоманду как первую или последнюю микрокоманду в последовательности микропрограммы, представляющей макрокоманду. Маркеры потока включают в себя маркеры потока “начало макрокоманды” (НМК) и “конец макрокоманды” (КМК). Согласно настоящему изобретению, декодер 112 может дополнительно декодировать микрокоманды, которые имеют маркеры потока совместного использования ресурса (мультипроцессорной системы) (СИРМП) и маркеры потока синхронизации (СИНХ), связанные с ними. А именно, маркер потока совместного использования ресурса идентифицирует микрокоманду как место в конкретном потоке, в котором поток может быть прерван (например, перезапущен или приостановлен) с меньшим количеством отрицательных последствий, чем в другом месте в потоке. Декодер 112 в примере варианта осуществления настоящего изобретения сконструирован для того, чтобы отметить микрокоманды, которые содержат конец или начало родительской макрокоманды, маркером потока совместного использования ресурса, а также неустойчивые точки в более длинных последовательностях микропрограммы. Маркер потока синхронизации идентифицирует микрокоманду как место в конкретном потоке, в котором поток может быть синхронизирован с другим потоком, в зависимости от, например, команды синхронизации в другом потоке. Для целей настоящего описания термин “синхронизирует” следует понимать таким образом, чтобы он относился к идентификации по меньшей мере первой точки в, по меньшей мере, одном потоке, в которой состояние процессора может изменяться относительно того потока и/или по меньшей мере одного дополнительного потока, с уменьшенным или более низким нарушением работы процессора, по сравнению со второй точкой в том же потоке или в другом потоке. Декодер 112 в примерном варианте осуществления настоящего изобретения сконструирован для того, чтобы отметить микрокоманды, которые расположены в выбранных границах макрокоманды, где состояние, разделенное потоками, сосуществующими в одном и том же процессоре, может быть изменено одним потоком без неблагоприятного влияния на выполнение других потоков. Из механизма 54 трансляции микрокоманды декодированные команды (т.е. микрокоманды) посылаются механизму 60 трассировки доставки. Механизм 60 трассировки доставки включает в себя кэш 62 трасс, блок 64 прогнозирования перехода (БПП) трасс, блок 66 упорядочения микропрограмм и блок 68 очереди микропрограмм (микроопераций). Механизм 60 трассировки доставки функционирует как кэш микрокоманд и является первичным источником микрокоманд для находящегося “ниже по потоку” блока 70 исполнения. Обеспечивая функцию кэширования микрокоманды в конвейере процессора, механизм 60 трассировки доставки, и особенно кэш 62 трасс, позволяет улучшить работу по трансляции, сделанную механизмом 54 трансляции микрокоманды, чтобы обеспечить увеличенную полосу пропускания микрокоманды. В одном типичном варианте осуществления кэш 62 трасс может содержать 256 наборов ассоциированной памяти с 8 путями. Термин “трасса” в настоящем примерном варианте осуществления может относиться к последовательности микрокоманд, сохраненных в записях кэша 62 трасс, причем каждая запись включает в себя указатели на предшествующие и действующие микрокоманды, составляющие трассу. Таким образом, кэш 62 трасс облегчает высокоэффективное упорядочивание тем, что адрес следующей записи, к которой нужно обратиться с целью получения последующей микрокоманды, известен прежде, чем закончится текущий доступ. Трассы, в одном из вариантов осуществления, могут рассматриваться как “блоки” команд, которые различаются друг от друга заголовками трассы, и завершаются после достижения косвенного перехода или при достижении одного из многих существующих пороговых состояний, таких как число условных переходов, которые могут быть размещены в одной трассе, или максимальное число микрокоманд, которые может содержать трасса. Блок 64 прогнозирования перехода кэша трассы обеспечивает локальные предсказания ветвлений, имеющие отношение к трассам в кэше 62 трасс. Кэш 62 трасс и блок 66 упорядочения микропрограммы обеспечивают передачу микрокоманд к блоку 68 очереди микропрограммы, откуда микрокоманды затем подаются к кластеру (группе) выполнения с изменением последовательности. Показанный блок 66 упорядочения микропрограммы, кроме того, включает в себя множество блоков 67 обработки событий, воплощенных в микропрограмме, которые выполняют множество операций в процессоре 30 в ответ на возникновение события, такого как исключение или прерывание. Блоки 67 обработки событий, как будет описано ниже более подробно, вызываются блоком 188 обнаружения событий, который включен в блок 74 переименования регистров во внутренней части процессора 30. Рассматриваемый процессор 30 имеет входной блок упорядоченной обработки, содержащий блок 32 интерфейса шины, исполнительный блок 42 памяти, механизм 54 трансляции микрокоманды и механизм 60 трассировки доставки, и внутренний блок обработки с изменением послед