Область изобретения
Данное изобретение относится к блокированию исходных регистров в устройстве обработки данных.
Описание известного уровня техники
Известно обеспечение процессоров, которые включают в себя один или несколько конвейеров для выполнения команд. Из-за конвейерной природы таких процессоров, множественные команды могут находиться в процессе выполнения в любой момент времени, и это привело к необходимости обеспечения соответствующих функций проверки риска и ресурсов для конвейерного процессора. Следовательно, каждая команда обычно оценивается прежде, чем выдать ее в конвейер выполнения для определения того, возникнет ли условие риска или конфликт ресурса, если она будет выдана в конвейер выполнения. Условие риска будет обнаружено, если эта команда запрашивает элемент данных, который еще не является доступным из-за того, что он все еще вычисляется (например, командой, уже выполняемой в конвейере), или если эта команда требует доступа к регистру, который все еще запрашивается другой командой, уже находящейся в конвейере, и который не должен быть переписан, пока он не считывается другой командой уже в конвейере. Конфликт ресурса будет обнаружен, если есть требование для процессора, который не является доступным из-за того, что он уже используется для другой выполняющейся команды.
Можно не выполнять проверку риска и ресурса, а вместо этого оставить работу по избежанию условий риска и конфликтов ресурсов устройству записи компилятора/кода. Однако это обычно приводит к очень сложному коду, и соответственно, обычно такие процедуры проверки риска и ресурса реализуются.
Функции проверки риска и ресурса требуют способности останавливать соответствующий процессор и все зависимые процессоры. Например, сопроцессор, который детектирует условие риска, должен сигнализировать обнаружение этого условия риска главному процессору, и главный процессор в большинстве случаев остановится для поддержания координации потока команд с сопроцессором. Подобным же образом главный процессор, детектирующий условие риска или конфликт ресурса, должен сообщать всем сопроцессорам остановить их конвейеры соответственно. Понятно, что остановка вводит неопределенность в определение времени для запуска раздела кода.
Известные процессоры используют разнообразные сложные способы для детектирования условий риска и конфликтов ресурсов и для уменьшения воздействия таких условий риска и конфликтов ресурсов на производительность. Переименование регистров является одним из таких способов, которые могут использоваться, причем этот способ включает в себя использование дополнительных регистров для устранения условий риска, относящихся к записи рассматриваемого регистра как исходного регистра для уже выполняемой команды. В высокопроизводительных процессорах команды могут вызываться не по порядку программы, что дает возможность командам, которые не имеют риска или конфликтов ресурсов, выполняться перед командами с риском или конфликтами ресурсов. Обычным способом, используемым с таким подходом, является поддержание таблиц команд, находящихся в данный момент в некотором состоянии выполнения, и затем, для конкретной команды, проведение определения как доступности функционального блока для обработки команды, так и доступности операндов, запрашиваемых командой. Это может быть выполнено в известном способе путем использования, например, позиций резервирования, или в централизованном способе путем использования, например, способа буфера переупорядочения.
Оба вышеупомянутых способа хорошо известны в технике. Как понятно специалистам в данной области техники, стоимость таких способов, в терминах пространства и мощности, и в сложности, относительно высока.
Другие известные способы, которые снижают бульшую часть стоимости и уменьшают сложность вышеописанных способов, включают в себя использование табло. Табло отслеживает доступность регистров либо как исходные операнды, либо как пункты назначения для операций сохранения. Табло может быть разделено на отдельные части: одна - для исходных операндов и одна - для целевых операндов, или единое табло может поддерживаться как для исходных, так и для целевых операндов. Запись в табло очищается, когда регистр, связанный с этим входом, доступен для использования последующей командой. Следовательно, команды, подлежащие выдаче в конвейер выполнения, который потребует регистры, которые показаны как блокированные в табло, заставляют ждать или остановиться, пока регистры не станут доступными. Табло обычно проще и дешевле в смысле пространства, мощности и стоимости разработки, чем ранее описанные способы, но обычно предлагают более низкую производительность.
Соответственно, область приложения для устройства обработки данных обычно диктует то, какие из вышеупомянутых подходов используются. Для высокопроизводительных приложений, таких как приложение для настольной системы или научное приложение, или бизнес-приложение, более сложные способы часто требуются для распространения необходимой производительности. Машины, такие как CDC6600, IBM360/91, и недавние процессоры IBM, Intel x86 и Sun SPARC используют эти более сложные способы. Однако для встроенных приложений производительность обычно не является столь критической, а вместо этого участок кристалла процессора и потребляемая мощность имеют большую важность, с производительностью, просто необходимой, чтобы быть достаточной для выполнения цели приложения. В таких случаях, использование выдачи команды в порядке следования в программе и вышеописанного способа табло обычно является наиболее подходящим способом для проверки условий риска, в то время как использование ограниченного количества конвейеров, обычно одного или двух, помогает уменьшить сложность управления ресурсами.
Во многих приложениях выполняемые арифметические действия могут быть охарактеризованы таким образом, что диапазон операндов и результатов хорошо известен. Однако, когда это невозможно, арифметический блок должен быть способным обрабатывать непротиворечивым и разумным способом условия, в которых результат операции находится вне границ диапазона поддерживаемого типа данных, или операция включает в себя операнды, для которых результат не определен (например, сложение положительной бесконечности с отрицательной бесконечностью).
Рассматривая пример арифметики с плавающей точкой, «IEEE Standard for Binary Floating-Point Arithmetic», ANSI/IEE Std 754-1985, The Institute of Electrical and Electronic Engineers, Inc., New York, 10017 (далее называемый стандартом IEEE 754) определяет поведение команд, когда результаты находятся вне диапазона поддерживаемого типа данных или когда результат операции не определен. Для полной реализации технических условий IEEE 754 охват всех возможных случаев, которых может потребовать арифметика, приводит к дополнительному использованию аппаратного обеспечения/пространства и мощности, и/или сниженной тактовой частоте. Технические условия IEEE 754 определяют количество исключений, причем такие исключения являются случаями, в которых результат не является тем, что было бы возвращено, если бы арифметические действия выполнялись с неограниченной точностью, или если результат не определен. Пять типов исключения определены в технических условиях IEEE 754, а именно, недопустимость, переполнение, антипереполнение (потеря значимости), деление на ноль и неточность.
В наиболее встроенных приложениях арифметические действия могут характеризоваться как хорошо известные, и полные особенности технических условий IEEE 754 обычно не требуются. Например, такие особенности, как субнормальная поддержка и поддержка для обработки Nan (не является числом) может не требоваться. Однако способность обрабатывать условия переполнения и операции, включающие в себя бесконечности, обычно являются преимущественными.
При детектировании таких исключительных ситуаций во время выполнения команды в конвейерном процессоре, механизмы обработки исключительных ситуаций часто запускаются для обработки этих исключительных ситуаций. Такие механизмы обработки исключительных ситуаций при запуске могут нуждаться в доступе к исходным операндам для исключительной команды для того, чтобы иметь дело с исключительной ситуацией. Соответственно, при блокировании регистров для избежания условий риска, как это делается при использовании описанного ранее способа табло, в таких случаях необходимо блокировать эти исходные регистры, пока команда не дойдет до точки в конвейере выполнения, в которой исключительная ситуация будет детектирована.
В одном процессоре известного уровня техники, описанном более подробно в GB-A-2339312, процессор приспособлен для детектирования и обработки некоторых из исключительных случаев пессимистично, что означает, что определение наличия исключительного состояния основывается на информации, доступной прежде, чем команда обработана полностью. Для обеспечения того, что все возможные исключительные случаи обработаны, некоторые случаи, которые могут не привести к исключительному состоянию, рассматриваются как таковые, пока операция не обработана полностью и окончательное определение не сделано. В процессоре, описанном в GB-A-2339312, детектирование выполняется в первой стадии (каскаде) выполнения в конвейере процессора для минимизации количества информации, требуемой для сохранения текущего состояния процессора. Так как детектирование исключительной ситуации выполняется без завершения команды, требуется, чтобы исходные операнды были предварительно сохранены для механизма обработки исключительной ситуации, и не могут быть разблокированы в табло, пока связанная команда не пройдет точку детектирования исключительной ситуации (здесь стадия 1 выполнения конвейера). Системная программа затем используется для определения точного положения команды, генерирования правильного ответа, включая специальную обработку для исключительных случаев IEEE 754, и либо возврата к программе, либо запуска заданного пользователем обработчика исключительных ситуаций.
Следовательно, в заключение, системная программа, используемая для обработки исключительных ситуаций, требует доступа к исходным регистрам команды. Кроме того, она не будет выполняться, пока не пройдет некоторое количество циклов (тактов) после исключительной команды. Соответственно, команда, которая может нуждаться в доступе к исходным регистрам исключительной команды, может быть вызвана между выполнением исключительной команды и выполнением системной программы для того, чтобы иметь дело с идентифицированным исключительным состоянием.
Таким образом, любая команда, которая нуждается в доступе к исходным регистрам выполняющейся команды, для считывания их как операндов, сохранения их в памяти или загрузки их с новым значением, обычно должна ожидать, пока выполняемая команда не пройдет точку определения исключительной ситуации, и исходные регистры затем разблокируются в табло (либо потому, что не детектировано никакой исключительной ситуации, либо после того, как соответствующая системная программа выполнила необходимую обработку исключительной ситуации).
Следовательно, можно видеть, что это требование блокирования регистров в то время, когда осуществляется определение наличия исключительного состояния в соответствующей команде, может значительно повлиять на эффективность конвейерной схемы обработки посредством остановки последовательных команд, если они нуждаются в доступе к таким блокированным регистрам.
Краткое изложение существа изобретения
Согласно первому аспекту данное изобретение обеспечивает устройство обработки данных, содержащее: процессор, содержащий конвейер для выполнения последовательности команд; множество исходных регистров для сохранения исходных данных, запрашиваемых процессором при выполнении команд в последовательности; механизм блокировки для блокирования исходных регистров в зависимости от настраиваемых критериев, причем эти настраиваемые критерии выбираются для обеспечения того, что исходные регистры, все еще запрашиваемые для завершения выполнения команды в конвейере, были блокированы для предотвращения заданных типов доступа последующей командой, причем последующая команда способна только войти в конвейер, если исходные регистры, уместные для этой инструкции, могут быть доступны, как требуется этой командой; причем процессор имеет первый и второй режимы работы; в первом режиме работы процессор приспособлен, после определения одного или нескольких исключительных состояний во время выполнения команды, для запуска процесса, внешнего по отношению к блоку конвейерного выполнения, для того, чтобы сделать возможным выполнение команды, подлежащей завершению; во втором режиме работы процессор приспособлен для завершения выполнения команды в конвейере, даже если наличие указанного одного или нескольких исключительных состояний определено; причем механизм блокировки приспособлен для изменения настраиваемых критериев в зависимости от режима работы процессора таким образом, что уменьшение в количестве блокируемых исходных регистров может быть достигнуто во втором режиме работы.
В соответствии с данным изобретением процессор имеет два режима работы, причем первый режим работы является режимом, в котором процесс, внешний по отношению к конвейерному блоку выполнения, запускается после определения одного или нескольких исключительных состояний для того, чтобы сделать возможным выполнение команды, подлежащей завершению, тогда как во втором режиме работы процессор приспособлен для завершения выполнения команды в конвейере, даже если присутствуют одно или несколько исключительных состояний. Механизм блокировки используется для блокирования исходных регистров в зависимости от настраиваемых критериев, и механизм блокировки приспособлен для изменения настраиваемых критериев в зависимости от режима работы процессора, для того, чтобы сделать возможным уменьшение количества исходных регистров, блокируемых во втором режиме работы.
Поскольку вероятно, что процесс, внешний по отношению к блоку конвейерного выполнения, нуждается в доступе к исходным регистрам команды, для которой было детектировано исключительное состояние, ясно, что в первом режиме работы эти исходные регистры должны быть блокированы механизмом блокировки, пока не будет определено, что для этой команды не существует исключительных состояний, или пока эти исходные регистры не будут считаны процессом, внешним по отношению к блоку конвейерного выполнения, следующим за детектированием одного из этих исключительных условий. Во втором режиме работы процессор приспособлен таким образом, что он не нуждается в запуске какого-либо процесса, внешнего по отношению к блоку конвейерного выполнения, при рассмотрении любого из этих исключительных состояний, и соответственно, это позволяет избежать необходимости блокировать исходные регистры, пока не детектировано наличие этих одного или нескольких исключительных состояний.
Авторы данного изобретения понимают, что имеется два основных требования для защиты значения исходного регистра от перезаписи. Во-первых, это должно быть сделано, если в данных в исходном регистре нуждается команда, которая еще не считала регистр. Во-вторых, это должно быть сделано, если в данных в исходном регистре может нуждаться программа, которая еще не выполнялась, например, внешний процесс, используемый для обработки исключительных состояний. Во многих случаях наблюдалось, что первое требование было значительно менее затруднительным, чем второе требование. Исходные регистры, блокируемые для их сохранения для использования внешними процессами в случае детектируемого исключительного состояния, вызвали остановку последовательных команд вне того, что требуется для защиты исходных регистров, в то время как они еще не были считаны командой, определяющей их.
Данное изобретение значительно смягчает эту проблему посредством обеспечения второго режима работы, который устраняет необходимость в запуске процессов, внешних по отношению к блоку конвейерного выполнения для рассмотрения одного или нескольких исключительных состояний, и затем дает возможность механизму блокировки изменять настраиваемый критерий таким образом, что он просто больше не блокирует исходный регистр, так что они могут быть доступны таким внешним процессам.
В предпочтительных вариантах устройство обработки данных дополнительно содержит множество целевых регистров для сохранения целевых данных, являющихся результатом выполнения команд в последовательности, причем механизм блокировки дополнительно приспособлен для блокировки целевых регистров, зависящих от заданных критериев.
Когда команда определяет целевой регистр, ясно, что важно обеспечить то, что этот регистр блокирован, пока результат, генерируемый выполнением этой команды, не записан обратно в целевой регистр, для обеспечения того, что этот целевой регистр не считан или не записан, пока результат не будет сохранен в целевом регистре. Такое требование необходимо как в первом, так и во втором режиме работы, и соответственно, в предпочтительных вариантах заданные критерии, используемые для определения блокировки целевых регистров, являются одинаковыми как для первого, так и для второго режимов работы.
В предпочтительных вариантах механизм блокировки содержит: запись блокированных регистров; логические схемы проверки для определения со ссылкой на запись блокированных регистров, может ли последующая команда войти в конвейер; и логические схемы определения для определения для последующей команды, должны ли какие-либо из исходных регистров этой команды быть блокированы в записи, причем логические схемы определения чувствительны к настраиваемым критериям.
Соответственно, проверочные логические схемы определяют, указаны ли уже исходные и, необязательно, целевые регистры, определенные последующей командой, как блокированные в записи блокированных регистров, причем обычно последующей команде не разрешено войти в конвейер, если какой-либо из его исходных и целевых регистров указан как уже блокированный. Логические схемы определения определяют, должны ли какие-либо из исходных регистров и, необязательно, целевых регистров, определенных последующей командой, быть блокированными в записи, и поскольку логические схемы определения чувствительны к настраиваемым критериям, они обычно потребуют блокирования меньшего количества исходных регистров, когда схема обработки работает во втором режиме работы.
Понятно, что настраиваемые критерии могут быть определены большим количеством способов. Однако в предпочтительных вариантах настраиваемый критерий приспособлен в первом режиме работы таким образом, что, когда команда должна выполняться конвейером, механизм блокировки блокирует исходные регистры, требуемые этой командой, тогда как эти исходные регистры могут быть все еще перезаписаны перед тем, как они были считаны этой командой в конвейере или пока они могут быть все еще затребованы процессом, внешним по отношению к конвейеру, тогда как во втором режиме работы настраиваемый критерий приспособлен таким образом, что механизм блокировки блокирует исходные регистры, требуемые этой командой, только пока эти исходные регистры могут все еще быть перезаписаны перед тем, как они были считаны этой командой в конвейере.
Следовательно, во втором режиме работы исходные регистры блокированы для предотвращения возможности состояния риска «запись после считывания». Следовательно, желаемой ситуацией является такая, когда запись в исходный регистр должна происходить только после того, как считывание этого исходного регистра имеет место («запись после считывания»), и риск записи после считывания имеет место, когда эта ситуация нарушается. Соответственно, во втором режиме работы исходный регистр блокирован в течение любого периода времени, когда возможно, что этот исходный регистр может быть перезаписан перед тем, как он будет считан командой, определяющей этот исходный регистр. В первом режиме работы исходные регистры также блокированы для предотвращения таких рисков записи после считывания, но они дополнительно блокированы, тогда как они могут быть запрошены процессом, внешним по отношению к конвейеру.
С учетом вышеприведенного требования во втором режиме работы настраиваемый критерий обеспечен в предпочтительных вариантах данного изобретения таким образом, что механизм блокировки не блокирует какие-либо исходные регистры для скалярных команд или для векторных команд, имеющих количество итераций, меньшее или равное заданной величине. В реализациях в соответствии с предпочтительными вариантами осуществления данного изобретения было понятно, что нет возможности риска записи после считывания в связи с исходными регистрами скалярных команд или относительно коротких векторных команд (то есть векторных команд, имеющих количество итераций, меньшее или равное заданной величине).
В предпочтительных вариантах осуществления заданной величиной является четыре для векторных команд одинарной точности или для векторных команд двойной точности с производительностью в один такт и два для векторных команд двойной точности с производительностью в два такта.
Для простоты в предпочтительных вариантах данного изобретения настраиваемый критерий таков, что во втором режиме работы механизм блокировки рассматривает любую векторную команду двойной точности как имеющую производительность в два такта.
Процесс, внешний к конвейеру, который запускается в первом режиме работы после детектирования одной или нескольких исключительных ситуаций, может принимать разнообразные формы. Однако, предпочтительно, чтобы процессом, внешним к конвейеру, была либо служебная программа, либо запускаемая пользователем программа обработки исключительных ситуаций (ошибок).
Служебная программа выполняет три основных функции в предпочтительных вариантах данного изобретения. Во-первых, служебная программа может использоваться для обработки команд и типов данных, не поддерживаемых аппаратным обеспечением. Например, в предпочтительных вариантах осуществления оставшаяся команда не обеспечена в технических условиях архитектуры процессора, а требуется стандартом IEEE 754. Подобным же образом тип десятичных данных также не включен в технические условия архитектуры процессора, но требуется стандартом IEEE 754. В предпочтительных вариантах осуществления обработка, требуемая для обоих, существует в виде библиотечных функций, доступных для прикладной программы, выполняемой процессором.
Второй функцией, выполняемой служебной программой предпочтительных вариантов осуществления, является обработка команд со специфическими данными, для которых аппаратное обеспечение не способно полностью обрабатывать инструкцию, задавшей эти специфические данные, например, потенциальные состояния потери значимости или неправильные операнды. Некоторые из этих случаев могут также приводить к исключительным ситуациям, тогда как другие могут приводить к неисключительным результатам. Если команда приводит к исключительным ситуациям, для этой команды запускается запускаемая пользователем программа обработки исключительных ситуаций, затем служебная программа выполняет некоторую предварительную обработку, описанную ниже как третья основная функция служебной программы. Если команда не генерирует исключительное состояние или если все генерируемые исключительные состояния не имеют соответствующего набора битов, разрешающего исключительные ситуации, то служебная программа приспособлена для записи вычисленного результата в целевой регистр команды, а затем для возврата к прикладной программе, выполняемой процессором.
Третьей основной функцией служебной программы предпочтительных вариантов осуществления является предварительная обработка исключительных ситуаций, для которых установлен бит разрешения исключительной ситуации. Служебная программа является затем первой точкой входа для возвращенной команды. Команды могут быть возвращены для разрешения выполнения второй основной функции служебной программы, описанной выше, или из-за того, что истинное исключительное состояние было детектировано и установлен бит разрешения исключительной ситуации для этой исключительной ситуации. Если данные требуют проверки предусловия для запускаемой пользователем программы обработки исключительных ситуаций, служебная программа выполнит эту проверку предусловия. Запускаемая пользователем программа обработки исключительных ситуаций, если она выбирает возврат к прикладной программе, сделает это через служебную программу.
Вышеприведенные три функции служебной программы соответствуют первому режиму работы предпочтительных вариантов осуществления. Во втором режиме работы необходимость в использовании служебной программы устраняется посредством разрешения завершения выполнения команд в конвейере, даже если определено наличие одного или нескольких исключительных состояний.
Ясно, что первый и второй режимы работы процессора могут быть выполнены разнообразными способами в зависимости от реализации. Однако в предпочтительных вариантах осуществления первым режимом работы является соответствующий IEEE 754 режим работы, а вторым режимом работы является не соответствующий IEEE 754 режим работы, который избегает необходимости в системных программах для обработки указанного одного или нескольких исключительных состояний. В предпочтительных вариантах осуществления первым режимом работы процессора является соответствующий IEEE 754 режим работы посредством обеспечения служебной программы, причем служебная программа вызывается, когда аппаратное обеспечение процессора не способно обработать команду со специфическими операндами. Во втором режиме работы некоторые из особенностей стандарта IEEE 754, которые не требуются в некоторых приложениях, не обрабатываются согласно техническим условиям IEEE 754, а вместо этого обрабатываются не соответствующим способом для того, чтобы устранить необходимость в использовании процесса, внешнего к блоку конвейерного выполнения.
Специалистам в данной области техники понятно, что при поддержании записи как исходных, так и целевых регистров, существуют разнообразные способы, которыми может быть скомпонован механизм блокировки. В предпочтительных вариантах осуществления, для простоты, механизм блокировки поддерживает единственную запись как для исходных, так и для целевых регистров, и следовательно, не делает различия между этими двумя типами регистров. Однако в альтернативном варианте осуществления механизм блокировки содержит первую запись для записи блокированных целевых регистров и вторую запись для записи блокированных исходных регистров.
Хотя этот альтернативный подход некоторым образом повышает сложность, он разрешает некоторую вариацию в заданных типах доступа, которые ограничены блокированным регистром, в зависимости от того, является ли этот регистр целевым регистром или исходным регистром. Более конкретно, с этой альтернативной реализацией, если последующей команде необходимо выполнить какой-либо тип доступа к целевому регистру, указанному как блокированный в первой записи, она будет остановлена от входа в конвейер, пока блокировка не будет очищена из первой записи, тогда как если последующей команде только необходимо выполнить доступ считывания одного или нескольких исходных ресурсов, блокированных во второй записи, ей будет разрешено войти в конвейер без необходимости ожидать очищения соответствующих блокировок из второй записи. Если конкретный регистр не определен как целевой регистр, то ясно, что данные, сохраняемые в этом регистре, не будут изменяться любой из команд, уже находящихся в конвейере. Соответственно, безопасно позволить последующей команде считать такой регистр, и так как акт считывания регистра не изменяет значение, сохраняемое в регистре, допустимо считывать исходный регистр, даже когда он был блокирован командой, уже находящейся в конвейере.
Специалистам в данной области техники понятно, что существует разнообразие способов, в которых процессор может быть скомпонован для завершения выполнения команды в конвейере даже в присутствии одного или нескольких исключительных состояний. В предпочтительных вариантах осуществления во втором режиме работы процессор приспособлен для применения режима сброса на нуль для замены любых исходных данных или результирующих данных в неправильном (ненормальном) диапазоне с положительным нулем. Было обнаружено, что этот режим работы устраняет сложность и аппаратное обеспечение, которое в ином случае потребовалось бы для обработки неправильных значений данных, с никаким или очень небольшим арифметическим влиянием на хорошо понятные алгоритмы.
Кроме того, во втором режиме работы предпочтительных вариантов осуществления процессор приспособлен для применения режима по умолчанию Nan (не является числом) для получения в качестве результирующих данных Nan по умолчанию, если какое-либо из исходных данных является Nan. Этот подход обрабатывает Nan согласно техническим условиям IEEE 754, но не совместим с обычной практикой. Тем не менее, он все еще обеспечивает обработку Nan как указания неопределенной арифметической операции.
Кроме того, во втором режиме работы предпочтительных вариантов осуществления процессор приспособлен обрабатывать в аппаратном обеспечении процессора любые исключительные состояния переполнения, неточности, деления на ноль или недопустимости. Более конкретно, в предпочтительных вариантах осуществления полная обработка по умолчанию обеспечена для исключительных ситуаций переполнения, неточности и деления на ноль в аппаратном обеспечении, и почти полная обработка по умолчанию обеспечена для исключительных ситуаций недопустимости в аппаратном обеспечении. Было обнаружено, что этот подход обеспечивает близкое соответствие IEEE 754 и является подходящим для большинства встроенных приложений, которые используют переполнение для насыщения и бесконечность для особых ситуаций обработки.
С точки зрения второго аспекта, данное изобретение обеспечивает способ управления устройством обработки данных, имеющим процессор, содержащий конвейер для выполнения последовательности команд, и набор исходных регистров для сохранения исходных данных, требуемых процессором при выполнении команд в этой последовательности, причем этот способ предусматривает стадии: (i) использования механизма блокировки для блокирования исходных регистров в зависимости от настраиваемого критерия, причем настраиваемый критерий выбирается для того, чтобы гарантировать то, что исходные регистры, все еще требуемые для завершения выполнения команды в конвейере, блокированы для того, чтобы воспрепятствовать заданным типам доступа последующей командой, причем последующая команда способна только войти в конвейер, если исходные регистры, соответствующие для этой команды, могут быть доступны по требованию команды; (ii) выбора первого или второго режима работы для процессора, причем в первом режиме работы конвейерный процессор приспособлен, после определения одного или нескольких исключительных состояний во время выполнения команды, запускать процесс, внешний по отношению к блоку конвейерного выполнения, для того, чтобы дать возможность завершиться выполнению команды, во втором режиме работы конвейерный процессор приспособлен для завершения выполнения команды в конвейере, даже если определено наличие указанного одного или нескольких исключительных состояний; и (iii) изменения механизмом блокировки настраиваемого критерия в зависимости от режима работы процессора таким образом, что уменьшение в количестве блокированных исходных регистров может быть достигнуто во втором режиме работы.
Краткое описание чертежей
Данное изобретение будет описано далее только посредством примера со ссылкой на его предпочтительный вариант осуществления, проиллюстрированный на сопроводительных чертежах, в которых:
фиг.1 является блок-схемой, показывающей элементы устройства обработки данных в соответствии с предпочтительными вариантами осуществления данного изобретения;
фиг.2А является блок-схемой, показывающей элементы сопроцессора согласно фиг.1, в соответствии с предпочтительными вариантами осуществления данного изобретения;
фиг.2В является блок-схемой, показывающей более подробно элементы, обеспеченные в управляющих логических схемах сопроцессора в соответствии с предпочтительными вариантами осуществления данного изобретения;
фиг.3 является схемой, схематически показывающей работу логических схем табло в соответствии с предпочтительными вариантами осуществления данного изобретения;
фиг.4 является блок-схемой, показывающей основной поток конвейеров в пределах ядра процессора и сопроцессора в соответствии с предпочтительными вариантами осуществления данного изобретения;
фиг.5А и 5В являются схемами, показывающими последовательность выполнения каскадных арифметических операций в первом режиме работы и втором режиме работы, соответственно, где вторая команда имеет в качестве целевого регистра исходный регистр первой команды;
фиг.6А и 6В являются диаграммами, показывающими последовательность выполнения арифметической команды, за которой следует команда загрузки в первом режиме работы и втором режиме работы, соответственно, в которой команда загрузки осуществляет запись в один или несколько исходных регистров арифметической команды;
фиг.7А - 7С показывают последовательность выполнения векторной команды, за которой следует команда загрузки, причем первый режим работы показан на фиг.7А, а второй режим работы показан на фиг.7В и 7С;
фиг.8А и 8В показывают последовательность выполнения векторной команды одинарной точности и векторной команды удвоенной точности, соответственно, в обоих случаях за командой следует команда загрузки, и показывают условия, которые делают необходимым блокирование исходных регистров; и
фиг.9А - 9F являются таблицами, показывающими, как исходные регистры блокируются и очищаются как для команд одинарной точности, так и для команд двойной точности как для первого режима работы, так и для второго режима работы.
Описание предпочтительного варианта осуществления
Фиг.1 показывает систему 22 обработки данных, содержащую основной процессор 24, сопроцессор 26 с плавающей точкой (FPU), кэш-память 28, основную память 30 и систему 32 ввода/вывода. Основной процессор 24, кэш-память 28, основная память 30 и система 32 ввода/вывода соединены через основную шину 34. Шина 36 сопроцессора связывает основной процессор 24 с сопроцессором 26 с плавающей точкой.
При работе основной процессор 24 (также называемый ядром ARM) выполняет поток команд обработки данных, которые управляют операциями обработки данных общего типа, включая взаимодействия с кэш-памятью 28, основной памятью 30 и системой 32 ввода/вывода. Команды сопроцессора встроены в поток команд обработки данных. Основной процессор 24 распознает эти команды сопроцессора как имеющие тип, который должен выполняться присоединенным сопроцессором. Соответственно, основной процессор 24 выдает эти команды сопроцессора на шину сопроцессора 36, откуда они принимаются любыми присоединенными сопроцессорами. В этом случае сопроцессор 26 FPU будет принимать и выполнять любые принятые команды сопроцессора, которые, как он обнаруживает, предназначены для него. Это обнаружение происходит через поле номера сопроцессора в команде сопроцессора.
Фиг.2А является блок-схемой, показывающей более подробно элементы, обеспеченные в сопроцессоре 26 в соответствии с предпочтительными вариантами осуществления данного изобретения. Сопроцессор 26 включает в себя арифметический конвейерный блок 230 для выполнения арифметических операций. Регистровый файл 220 обеспечен состоящим из нескольких регистров, которые могут быть определены либо как исходные, либо как целевые регистры для команд, выполняемых арифметическим конвейерным блоком 230. Конвейерный блок 210 загрузки/сохранения также обеспечен для выполнения команд загрузки и/или сохранения для загрузки значений данных, принимаемых по шине 212 загрузки данных в регистровый файл 220, или для выдачи из регистрового файла 220 на шину 214 сохранения данных значений данных для сохранения где бы то ни было в пределах системы обработки данных, например, в кэше 28 или в памяти 30. В предпочтительных вариантах осуществления продвигаемый путь 216 также обеспечен для того, чтобы дать возможность значениям данных продвигаться непосредственно от конвейерного блока 210 загрузки/сохранения к арифметическому конвейерному блоку 230 в обход регистрового файла 220.
В предпочтительных вариантах осуществления конвейерный блок 210 загрузки/сохранения, регистровый файл 220 и арифметический конвейерный блок 230, все управляются управляющими логическими схемами 200, причем эти управляющие логические схемы 200 приспособлены для приема команд от ядра 24 по шине 218 команд и для выдачи этих команд к конвейерному блоку 210 загрузки/сохранения или арифметическому конвейерному блоку 230 соответствующим образом. Управляющие логические схемы 200 также указывают регистровому файлу 220, в какие регистры помещать значения данных, принятые от конвейерного блока 210 загрузки/сохранения во время выполнения команды загрузки, и при выполнении команды сохранения идентифицируют регистр, содержимое которого должно быть выдано к конвейерному блоку 210 загрузки/сохранения. Как описано более подробно ниже, управляющие логические схемы 200 также приспособлены для выдачи сигналов остановки и возврата к ядру 24, как и когда это требуется, и дополнительно чувствительны к сигналу остановки ядра, принимаемого от ядра 24 для остановки сопроцессора 26.
Более подробно управляющие логические схемы 200 предпочтительных вариантов осуществления показаны на фиг.2В. Управляющие логические схемы 200 включают в себя интерфейс 275 сопроцессора для приема сигналов от ядра 24 и выдачи сигналов к ядру 24. При приеме новой команды интерфейсом 275 сопроцессора она передается к регистру 250 команд. Отсюда команда передается к блоку 260 декодера команд и логическим схемам 255 табло. Декодер 260 команд декодирует команду и затем передает ее к конвейерному блоку 265 управления, который сопряжен с конвейерами 210, 230 для управления их выполнением.
Логические схемы 255 табло предпочтительных вариантов осуществления будут описаны более подробно со ссылкой на фиг.3, но, в основном, приспособлены для определения на основе принятой команды того, блокированы ли уже в табло какие-либо регистры, определенные этой командой, и какие регистры, если они есть, должны быть блокированы в табло после того, как команда была выдана в конвейер для того, чтобы гарантировать, что они не используются последующей командой. Если определено, что любые регистры, определенные командой, уже блокированы в табло, то логические схемы 270 табло приспособлены для выдачи сигнала остановки к логическим схемам 270 остановки. Логические схемы 270 остановки принимают сигнал остановки вместе с любыми другими сигналами состояния остановки, например, остановки ресурса, и будут генерировать сигнал окончательной остановки, если какие-либо такие сигналы остановки принимаются на их входе. Сигнал окончательной остановки в предпочтительных вариантах выдается через интерфейс 275 сопроцессора к ядру процессора для того, чтобы сообщить ядру процессора о том, что сопроцессор должен был остановить выполнение команды. После того, как команда окончательно вошла в конвейер выполнения (т.е. вслед за очисткой любых блокированных регистров вызывается остановка команды), табло обновляется в логических схемах 255 табло для блокирования любых регистров, подлежащих блокированию для использования этой командой.
Фиг.3 является блок-схемой, показывающей более подробно логические схемы 255 табло предпочтительных вариантов осуществления данного изобретения. В предпочтительных вариантах осуществления логические схемы табло используются во время прохождения стадии выпуска конвейера сопроцессора, причем различные стадии конвейера сопроцессора обсуждаются более подробно позже со ссылкой на фиг.4. При посылке команды от ядра к сопроцессору она принимается в стадии (каскаде) выборки сопроцессора по шине 218 команд сопроцессора и помещается в регистр 300. Сопроцессор приспособлен для оценки команды в каскаде выпуска, и этот процесс вместе с последующей обработкой команды будет описан более подробно позже со ссылкой на фиг.4. Однако, если рассматривать специфически выпуск обработки табло, команда, сохраняемая в регистре 300, проходит по линии 305 к логическим элементам 320 и 330. Логические схемы 330 приспособлены для определения регистров, которые нуждаются в проверке по сравнению с блокированными регистрами в табло 310 для определения того, может ли команда быть выдана в конвейер для выполнения. Как пример, если командой является FADDS S0, S1, S2, где S1 и S2 являются исходными регистрами, а S0 является целевым регистром, то логические схемы 330 определят, что следует проверить регистры 0, 1 и 2.
В предпочтительных вариантах осуществления регистровый файл 220, показанный на фиг.2А, будет содержать 32 регистра, и логические схемы 330 приспособлены для выдачи 32-битового значения, называемого далее «контрольным числом» или CV (КЧ) для краткости, с каждым битом, используемым для идентификации того, должен ли соответствующий регистр быть проверен для определения того, блокирован ли этот регистр в табло. В предыдущем примере, где заданы регистры S0, S1 и S2, по меньшей мере, три старших бита КЧ будут установлены с не установленными оставшимися битами для указания, что только регистры 0, 1 и 2 нуждаются в проверке.
32-битовое КЧ, генерируемое логическими схемами 330, будет выдано по линии 335 к логическим схемам 340 остановки, которые также приспособлены для приема по линии 315 от табло 310 подобного 32-битового значения, идентифицирующего эти регистры, которые блокированы в табло 310. Если сравнение этих двух величин логическими схемами 340 указывает, что любые из этих регистров, подлежащих проверке, блокированы в табло, то логические схемы 340 сгенерируют сигнал остановки по линии 345, который, как описано выше, будет затем выдан к логическим схемам 270 остановки для использования в генерировании сигнала окончательной остановки, вызванного к интерфейсу 275 сопроцессора. Если сигнал остановки установлен, то текущая команда не может перейти к каскаду декодирования конвейера и перейдет в стадию декодирования только после того, как сигнал остановки будет снят (сброшен).
Логические схемы 320 приспособлены для определения из команды, хранимой в регистре 300, тех регистров, если таковые имеются, которые должны быть блокированы в табло 310, после того, как команда перешла на стадию декодирования конвейера. Эти логические схемы 320 используют настраиваемый (конфигурируемый) критерий для определения того, какие регистры, если таковые имеются, должны быть блокированы, и этот настраиваемый критерий изменяется в зависимости от режима работы процессора. В предпочтительных вариантах осуществления процессор имеет два режима работы, в первом режиме работы процессор приспособлен для детектирования одного или нескольких исключительных состояний для запуска процессов, внешних по отношению к блоку конвейерного выполнения для включения выполнения команды, подлежащей завершению, тогда как во втором режиме работы, процессор приспособлен для завершения выполнения таких команд в конвейере, даже если определено наличие таких одного или нескольких исключительных состояний.
Критерии, применяющиеся в двух режимах работы, более подробно описаны позже. Однако на некоторое время следует отметить, что в первом режиме работы все исходные регистры и целевые регистры должны быть блокированы в табло, тогда как во втором режиме работы исходный регистр или регистры не блокированы для скалярных команд или для любых векторных команд, которые достаточно коротки для обеспечения того, что нет возможности того, чтобы исходный регистр(ы) мог быть перезаписан прежде, чем они считаны командой. В предпочтительных вариантах осуществления это приравнивается к тому, что нет исходных регистров, блокированных для векторных команд одинарной точности четырех или менее итераций или для векторных команд двойной точности, имеющих не более двух итераций (в предпочтительных вариантах предполагается, что все векторные команды двойной точности имеют производительность в два такта).
Следовательно, со ссылкой на более ранний пример команды сложения, определяющей S0 как целевой регистр и S1 и S2 как исходные регистры, в первом режиме работы все регистры 0, 1 и 2 будут идентифицированы логическими схемами 320 для блокирования в табло 310. Этот первый режим работы будет также называться здесь небыстрым режимом работы. Однако во втором режиме работы (который также называется здесь быстрым режимом работы) только целевой регистр S0 идентифицируется логическими схемами 320 для блокирования в табло 310. Как и с логическими схемами 330, логические схемы 320 в предпочтительных вариантах осуществления приспособлены для выдачи 32-битовой величины, называемой далее значением табло, или ЗТ для краткости, идентифицирующей эти регистры для добавления в табло 310, после того как команда перешла на стадию (каскад) декодирования, причем это 32-битовое ЗТ выдается на линию 325 к регистру 350. После того, как команда вошла на стадию декодирования, содержимое регистра 350 выдается на линию 355 для добавления в табло 310.
Если за командой FADDS, упомянутой ранее, последовала команда FADDS S5, S1, S6, произойдут следующие различия в работе в зависимости от того, функционирует ли процессор в небыстром или быстром режиме. В небыстром режиме сигнал ЗТ, выданный логическими схемами 320, будет иметь установленными биты 1, 5 и 6, тогда как если процессор данных работает в быстром режиме, то только бит 5 будет установлен для определения целевого регистра S5. Независимо от того, какой режим работы используется, сигнал КЧ, выданный по линии 335 логическими схемами 330, будет иметь установленными биты 1, 5 и 6. Однако регистры, блокированные в табло 310 в результате работы команды FADDS S0, S1, S2, будут различными в зависимости от того, является ли режим работы небыстрым или быстрым режимом, и соответственно, сигнал табло, принятый логическими схемами 340 остановки по линии 315, будет различным в зависимости от режима работы. Более конкретно, в небыстром режиме регистр S1 будет блокирован в табло 310, и соответственно, логические схемы 340 будут теперь генерировать остановку во время прохождения стадии выпуска (выдачи) команд FADDS S5, S1, S6. Однако если процессор данных работает в быстром режиме, то только целевой регистр S0 будет добавлен в табло 310 как результат выполнения команды FADDS S0, S1, S2, и соответственно, если предположить, что ни один из регистров S5, S1 или S6 не был блокирован в табло 310 из-за выполнения каких-либо других команд, то логическими схемами 340 остановки не будет сгенерирована остановка, а вместо этого команда FADDS S5, S1, S6 может перейти непосредственно в стадию декодирования, тем самым, уменьшая время, требуемое для обработки команд.
Фиг.4 показывает взаимодействие между конвейером ядра процессора и двумя конвейерами сопроцессора в предпочтительных вариантах осуществления данного изобретения. Следует отметить, что нет требования только двух конвейеров сопроцессора, и в альтернативных вариантах осуществления могло бы быть добавлено больше конвейеров для обработки различных наборов команд или для обеспечения перекрытия между этими наборами команд.
Сопроцессор 26 имеет конвейер с семью стадиями (каскадами), работающий на одну стадию позади (позже) конвейера ядра. Команды посылаются от стадии 400 выборки ядра к стадии 405 выборки сопроцессора по шине 402 команд сопроцессора. Сопроцессор оценивает команду на стадии 415 выдачи. Если сопроцессор 26 обработал исключительную команду в небыстром режиме работы, но еще не сигнализировал ядру 24 об этом факте, то сигнал возвращения устанавливается для ядра на стадии 415 выдачи по линии 419. Ядро затем начинает обработку исключительных ситуаций исключительной команды и делает повторную попытку выполнить команду, которая вызвала возвращение после возврата от обработки исключительных ситуаций.
На стадии 400 выборки ядра команды считываются из буфера команд, и, если это команда сопроцессора, она выдается на шину 402 команд сопроцессора к такту 405 выборки сопроцессора.
На стадии 410 выдачи ядра ядро ничего не делает с командой сопроцессора. На стадии 420 декодирования ядра ядро обрабатывает остановки к сопроцессору для относящихся к ядру состояний остановки. Например, если ядро детектирует состояние остановки на предшествующей команде ядра, оно может нуждаться в инструктировании сопроцессора, соответственно, остановиться. Такой сигнал, выданный ядром от такта 420 декодирования ядра, будет пропущен к каскадам декодирования, выдачи и выборки соответствующего конвейера сопроцессора. Для ясности этот сигнал не показан на фиг.4.
На стадии 430 выполнения ядра ядро принимает сигналы возвращения и остановки от сопроцессора по линиям 419, 417, соответственно, и, если сигнал возвращения установлен для допустимой команды сопроцессора, начинает обработку исключительных ситуаций.
В такте 440 оперативной памяти ядро принимает от стадии 425 декодирования конвейера 490 загрузки/сохранения сопроцессора сохраняемые данные по шине 427 сохраняемых данных сопроцессора. На стадии 450 отложенной перезаписи ядра ядро выдает данные загрузки на стадию 455 отложенной перезаписи конвейера 490 загрузки/сохранения сопроцессора по шине 452 данных загрузки сопроцессора.
На стадии 405 выборки сопроцессора сопроцессор принимает команду по шине 402 команд сопроцессора и начинает декодирование команд.
На стадии 415 выдачи сопроцессора сопроцессор оценивает команду и текущее состояние табло и определяет, может ли быть выдана команда. Если табло указывает, что регистр недоступен, или если конвейер занят и текущая команда не может перейти к стадии декодирования, сигнал остановки CP устанавливается на линии 417 и удерживается, пока команда не сможет продолжать или не будет отменена ядром.
В небыстром режиме работы, если предшествующая команда завершила стадию 465 выполнения «1» сопроцессора арифметического конвейера 495 и была определена как исключительная, говорят, что сопроцессор находится в «исключительном состоянии». Команда сопроцессора, которая не обращается к контрольным регистрам, которая остановлена, когда выполнено определение, или выдана к сопроцессору, после того как выполнено определение, будет командой «запуска» и вызовет установку сигнала «возвращения CP» от стадии 415 выдачи на линии 419. После установки этого сигнала возвращения ядро начнет обработку исключительных ситуаций и попытается повторно выполнить команду запуска при возобновлении обработки после обработки исключительных ситуаций.
Если остановки не существует, и сопроцессор не находится в исключительном состоянии, табло обновляется целевым регистром (регистрами) и каким-либо исходным регистром (регистрами), которые требуют блокирования, и команда продвигается на стадию декодирования сопроцессора соответствующего конвейера 490, 495 сопроцессора.
На стадии декодирования сопроцессора сопроцессор пропускает арифметическую команду с ее операндами к конвейеру или функциональному блоку, который будет обрабатывать команду. Если команда является командой загрузки или сохранения, она проходит к конвейеру 490 загрузки/сохранения. Если операция является сохранением данных от сопроцессора к ядру, сопроцессор на стадии декодирования будет считывать сохраняемые данные из регистрового файла и управлять шиной 427 сохраняемых данных «ср» данными, где она затем принимается стадией 440 памяти ядра. Если команда является операцией загрузки, стадия 425 декодирования сопроцессора пропускает команду через стадии выполнения 435 и стадии 445 памяти конвейера 490 загрузки/сохранения.
На стадии 445 памяти сопроцессора сопроцессор пропускает операцию загрузки к стадии 455 отложенной перезаписи. На стадии 455 отложенной перезаписи данные загрузки, принятые от стадии 450 отложенной перезаписи ядра по линии 452, записываются в регистровый файл сопроцессора.
Рассмотрим теперь арифметический конвейер 495 сопроцессора, на стадии 465 выполнения 1 сопроцессора арифметическая команда начинает обрабатываться посредством оценки знаков, показателей степени и того, равны ли дроби нулю для определения того, имеет ли команда потенциальную исключительную ситуацию. Если это так и сопроцессор не находится в быстром режиме, то сигнал детектирования исключительных ситуаций выдается на стадию 415 выпуска сопроцессора по линии 467. Если исключительных ситуаций не обнаружено, то команда проходит на стадию 2 выполнения. Стадии 2 и 3 выполнения сопроцессора далее обрабатывают команду. Стадия выполнения 4 сопроцессора завершает команду, устанавливает какие-либо биты кода состояния или исключительного состояния и записывает результат в регистровый файл или продвигает результат к другому функциональному блоку.
Для того чтобы дать возможность регистрам, блокированным в небыстром режиме, быть очищенными с табло, когда не определено исключительных ситуаций, шина 469 очистки исходных регистров обеспечена для того, чтобы дать возможность информации о регистрах, более не нуждающихся в блокировании, быть переданной от стадии 465 Е1 обратно к стадии 415 выпуска.
После описания взаимодействия между различными конвейерами предпочтительного варианта осуществления данного изобретения примеры последовательности выполнения, сравнивающие небыстрый и быстрый режимы работы, будут описаны со ссылкой на фиг.5А - 8В.
Фиг.5А и 5В показывают выполнение каскадных арифметических операций, в которых вторая команда имеет в качестве целевого исходный регистр первой команды, причем фиг.5А показывает случай риска в небыстром режиме.
На фиг.5А команда FCDP1 обработки данных сопроцессором с плавающей точкой (FCDP) выдается в сопроцессор в такте 1 и требует S1 и S2 в качестве исходных регистров и S0 в качестве целевого регистра. В такте 2 сопроцессор блокирует регистры S0, S1 и S2, и ядро выдает FCDP2 к сопроцессору. FCDP2 требует S3 и S4 в качестве исходных регистров и S1 в качестве целевого регистра. В такте 3 табло проверяется на наличие FCDP2 в стадии выдачи и обнаруживается блокировка на S1. FCDP2, следовательно, останавливается на стадии выдачи, пока не будет устранена блокировка на S1.
Блокировка должна оставаться на S1 для защиты содержимого от перезаписи в случае, если FCDP1 является исключительной и требует обработки исключительной ситуации системными программами. Проверка исключительной ситуации осуществляется для FCDP1 в такте 4 (т.е. стадия выполнения 1). В этом примере FCDP1 не является исключительной, и в конце такта 4 блокировка устраняется в табло для S1 и S2, и сигнал детектирования исключительной ситуации не устанавливается. В следующем такте, такте 5, FCDP2, следовательно, разрешается войти в стадию декодирования, тогда как сопроцессор блокирует S1, S3 и S4 для их защиты для использования FCDP2. Можно видеть, что однотактовая остановка требуется для гарантии того, что S1 защищен от перезаписи.
В случае, когда FCDP1 не является исключительной, FCDP2 могла бы продвинуться немедленно в стадию декодирования. Поскольку FCDP1 считала бы S1 перед тем, как FCDP2 могла бы перезаписать регистр результатом FCDP2, не существовало бы, следовательно, состояния риска. Таким образом, необходимость блокировать исходные регистры, пока не произойдет определение исключительной ситуации, неблагоприятно влияет на скорость обработки в тех случаях, когда исключительных ситуаций фактически не существует.
Фиг.5В показывает случай риска в быстром режиме для повторного использования исходных регистров. На фиг.5В ситуация фиг.5А повторяется, но в быстром режиме. Исходные регистры больше не должны быть защищены для использования программным обеспечением от перезаписи, и S1 и S2 не блокированы в стадии выдачи FCDP1. FCDP2 не остановлена при условии, что никакого риска регистра не детектировано на стадии выдачи FCDP2, и однотактовая остановка устранена из времени обработки FCDP2.
Фиг.6А и 6В показывают выполнение арифметической команды, за которой следует команда загрузки, в которой загрузка записывает один или несколько исходных регистров первой команды, причем фиг.6А показывает случай риска в небыстром режиме для загрузки предшествующих исходных регистров.
На фиг.6 загрузка, следующая за командой FCDP, запишет новые данные в S1. Текущие данные в S1 должны быть защищены для использования командой FCDP и системными программами, если команда FCDP является исключительной. Команда FCDP вызовет установку блокировок табло на S0, S1 и S2 на стадии выдачи FCDP в такте 2. Команда загрузки остановится на один такт, пока блокировка не будет очищена после такта выполнения 1 команды FCDP. Команда загрузки запишет затем новые данные в S1 в начале стадии отложенной перезаписи в такте 8.
Фиг.6В показывает случай риска в быстром режиме для загрузки предшествующих исходных регистров. На фиг.6В исходные регистры не блокированы для команды FCDP, и команда загрузки не останавливается на стадии выдачи в такте 3, а переходит на стадию декодирования в такте 4. Данные записываются в S1 командой загрузки в такте 7, через 4 такта позже они считываются командой FCDP на стадии декодирования.
Фиг.7А-7С показывают последовательность выполнения векторной командой одинарной точности с длиной 4, за которой следует команда загрузки. На фиг.7А за векторной командой следует загрузка исходного регистра в небыстром режиме.
На фиг.7А командой FCDP является векторная операция с 4 итерациями. Эти 4 итерации таковы:
FCDP S8, S16, S24
FCDP S9, S17, S25
FCDP S10, S18, S26
FCDP S11, S19, S27
выдаваемые по одной на такт последовательным образом.
Команда FLDMS (множественная загрузка с последним S, обозначающим одинарную точность) загрузит S24 и S25 в единственном такте по 64-битовой шине и S26 и S27 в следующем такте. Команда FCDP, заданная в небыстром режиме, блокирует следующие регистры на стадии выдачи в такте 2:
S8 - S11
S16 - S19
S24 - S27
Команда FCDP очистит табло для S16 и S24 в такте 4 (стадия выполнения 1 для первой итерации), S17 и S25 в такте 5 (стадия выполнения 1 для второй итерации), S18 и S26 в такте 6 (стадия выполнения 1 для третьей итерации), S19 и S27 в такте 7 (стадия выполнения 1 для последней итерации). Команда FLDMS остановится, пока S24 - S27 не будут очищены в табло, что происходит в такте 7, что дает в итоге 4 такта остановки.
Фиг.7В показывает ту же самую векторную команду, за которой следует та же самая загрузка исходных регистров всех регистров, но на этот раз в быстром режиме. На фиг.7В на стадии выдачи для команды FCDP блокированы только целевые регистры (S8 - S11). Команде FLDMS, следовательно, разрешено проходить без остановки, так что она загружает первые два регистра (S24 и S25) в такте 7 и вторые два регистра (S26 и S27) в такте 8. Команда FCDP считает S24 на стадии декодирования в такте 3, S25 в такте 4, S26 в такте 5 и S27 в такте 6. Следовательно, не происходит никакого риска, несмотря на тот факт, что команда FLDMS не была установлена.
Фиг.7С показывает ту же самую векторную команду, за которой следует загрузка исходного регистра последнего регистра в быстром режиме. На фиг.7С команда загрузки, следовательно, заменяется загрузкой единственного значения последнего исходного регистра, S27. Отметим, что запись новых загрузочных данных осуществляется в такте 7, что на один такт позже, чем такт декодирования для итерации 4 (которая считывает S27), и следовательно, опять никакого риска не происходит, даже хотя команда FLDS не остановлена.
Фиг.8А и 8В иллюстрируют условия, которые делают необходимым блокирование исходных регистров для команд одинарной точности (SP) и двойной точности (DP), даже при использовании быстрого режима работы.
Два случая, в которых необходимо блокировать исходные регистры в быстром режиме, таковы:
- векторные команды одинарной точности (или векторные команды двойной точности с производительностью в один такт) длины, большей чем 4 итерации; и
- векторные команды двойной точности, которые включают в себя кратность (т.е. имеют производительность в два такта), когда команды имеют длину, большую чем 2 итерации.
В предпочтительных вариантах осуществления не обязательно блокировать любые векторные команды двойной точности, которые не включают в себя кратность (т.е. имеют производительность в один такт), так как в предпочтительных вариантах осуществления такие векторные команды могут только иметь максимальную длину 4 итерации. Однако в одном варианте все векторные команды двойной точности рассматриваются как имеющие производительность в два такта, и таким образом, исходные регистры блокируются, когда бы ни наблюдалась векторная команда двойной точности длины, большей чем 2 итерации. Это осуществляется для упрощения обработки.
Фиг.8А показывает векторную команду одинарной точности длины 7, за которой следует команда загрузки. Векторная команда будет выполнять, опять последовательным образом, следующие операции:
На фиг.8А векторная команда одинарной точности длины 7 требует S30 как регистр исходного операнда для 7-й итерации. Следующая загрузка S30 требуется для остановки, пока не будет очищена блокировка для S30. В быстром режиме блокировки устанавливаются для исходных регистров, используемых в итерациях после 4-й итерации для операций одинарной точности, и после 2-й итерации для операций двойной точности (в предпочтительных вариантах осуществления все операции двойной точности рассматриваются как имеющие производительность в два такта, независимо от того, включают ли они в себя умножение).
Фиг.8А показывает векторную команду одинарной точности, и в таких случаях блокировки очищаются в такте выполнения 1 для итерации с номером 4, большим чем текущая итерация. Это показано следующей таблицей (где «0» указывает, что блокировка очищена, а «1» указывает, что блокировка установлена) (см. табл.1).
Как показано в таблице 1, блокированы только исходные регистры, требуемые 5-й, 6-й и 7-й итерациями. Следовательно, в такте 2 блокировки установлены для регистров S20, S21, S22, S28, S29 и S30. Блокировки для S20 и S28 очищены в такте 4 (стадия выполнения 1 для исходной итерации 1), блокировки для S21 и S29 очищены в такте 5 (стадия выполнения 1 для итерации 2), и блокировки S22 и S30 очищены в такте 6 (стадия выполнения 1 для итерации 3). Команда FLDS, следовательно, остановлена на 3 такта, пока табло не будет очищено для S30 в такте 6. Команде FLDS затем дается возможность перейти к стадии декодирования в такте 7, и она осуществляет запись в регистровый файл в такте 10. В такте 9 7-я итерация команды FCDP считывает S30, что позволяет избежать разрушения исходных данных для 7-й итерации.
Фиг.8В показывает векторную команду двойной точности, которая включает в себя кратность и имеет 3 итерации.
Векторная команда будет выполнять, опять последовательным образом, следующие операции:
На фиг.8В вектор двойной точности включает в себя умножение и будет иметь производительность одной операции на 2 такта. Таким образом, стадия выполнения 1 занимает 2 такта для завершения. Следующая таблица 2 показывает блокирование исходных регистров:
Как показано в таблице 2, блокируются только исходные регистры, требуемые для 3-й итерации. Следовательно, блокировки устанавливаются на D10 и D14 в такте 2 и очищаются в такте 4 (блокировки двойной точности для операций, включающих в себя умножение, очищаются для итерации под номером 2, большим чем текущая итерация на стадии выполнения 1). Команде FLDD (где последнее D обозначает двойную точность) позволено перейти на стадию декодирования в такте 5, и она записывает в D14 в такте 8. Операция двойной точности считывает исходные данные на второй стадии декодирования, и следовательно, D14 считывается в такте 7, что позволяет избежать повреждения исходных данных для 3-й итерации.
После описания посредством примера того, как регистры блокируются и очищаются либо в небыстром режиме, либо в быстром режиме, рассматриваются фиг.9А-9F, которые обеспечивают дополнительные специфические подробности регистров, блокируемых и очищаемых в конкретных режимах работы.
Фиг.9А показывает блокирование и очищение исходного регистра одинарной точности в небыстром режиме работы. В предпочтительных вариантах осуществления максимальным числом итераций для векторной команды одинарной точности является 8, в небыстром режиме исходные регистры для всех итераций блокируются на стадии выдачи конвейера. Это показано путем использования буквы «Х» в левой части фиг.9А. Следовательно, ряды вдоль верха фиг.9А идентифицируют номером итерации исходные регистры, включенные в эту итерацию. Например, если числом итераций является 5, то регистры, связанные с итерациями 1-5, будут блокированы и обозначены через «Х» в ряду, идентифицируемом как итерация 5, и столбцах в левой части фиг.9А, идентифицируемых как итерации 1-5.
Как описывалось ранее со ссылкой на фиг.7А-7С, исходные регистры для конкретной итерации очищаются на стадии выполнения 1 конвейера. Следовательно, исходные регистры для первой итерации будут очищены в такте 4, исходные регистры для второй итерации будут очищены в такте 5 и т.д., причем это иллюстрируется правой частью фиг.9А.
Фиг.9В является таблицей того же формата, что и на фиг.9А, но показывает блокировку и очистку исходных регистров одинарной точности в быстром режиме. Как упоминалось ранее, если векторная команда составляет четыре итерации или меньше, то нет необходимости в блокировании исходных регистров. Это можно увидеть из левой части на фиг.9В, где исходные регистры только начинают блокироваться, если число итераций равно пяти или более. Как и прежде, правая сторона таблицы указывает такт, в котором исходные регистры для конкретной итерации очищаются. Соответственно, если взять пример векторной команды с семью итерациями, блокировки на исходных регистрах для итерации 5 очищаются в такте 4 (т.е. стадия выполнения 1 для итерации 1), блокировки на исходных регистрах итерации 6 очищаются в такте 5, и блокировки на исходных регистрах итерации 7 очищаются в такте 6.
Фиг.9С и 9D являются таблицами, показывающими блокировку и очистку исходных регистров двойной точности в небыстром режиме, причем фиг.9С относится к векторным командам двойной точности с производительностью в один такт, тогда как фиг.9D относится к векторным командам двойной точности с производительностью два такта (т.е. векторные команды включают в себя кратность). Как показано на этих чертежах, все исходные регистры блокированы в небыстром режиме. С производительностью в один такт блокировки на исходных регистрах для конкретной итерации очищаются, когда эта итерация достигает стадии Е1 конвейера, и соответственно, блокировки на исходных регистрах для итерации 1 очищаются в такте 4, блокировки на исходных регистрах для итерации 2 очищаются в такте 5 и т.д. Однако с производительностью в два такта каждая итерация проводит два такта в стадии Е1, и соответственно, хотя блокировки для исходных регистров итерации 1 очищаются в такте 4, как с производительностью в один такт, блокировки для исходных регистров итерации 2 очищаются в такте 6, блокировки для исходных регистров итерации 3 очищаются в такте 8 и т.д.
Фиг.9Е и 9F являются таблицами, подобными фиг.9С и 9D, соответственно, но показывают блокировку и очистку исходных регистров двойной точности в быстром режиме. Как упоминалось ранее, когда число итераций равно двум или меньше двух, исходные регистры не блокируются. Соответственно, как можно видеть из фиг.9Е и 9F, исходные регистры блокируются, только когда число итераций равно трем или четырем, и в этих случаях блокируются только исходные регистры для третьей и четвертой итераций. Блокировки на исходных регистрах для третьей итерации очищаются, когда первая итерация осуществляется на стадии Е1, и соответственно, блокировки для третьей итерации очищаются в такте 4. Для векторных команд с производительностью один такт блокировки на исходных регистрах для итерации 4 затем очищаются в пятом такте. Однако, если векторная команда имеет производительность в два такта, и соответственно, каждая итерация в течение двух тактов находится в стадии Е1, то блокировки для исходных регистров итерации 4 не очищаются, пока не наступит такт 6, причем это показано в правой части таблицы на фиг.9F.
Соответственно, можно видеть, что предпочтительные варианты осуществления данного изобретения позволяют получить значительные усовершенствования в скорости обработки в таких средах, где полное соответствие всем аспектам стандарта IEEE 754 не требуется, путем возможности переключения режима работы в быстрый режим в таких случаях, причем это позволяет уменьшить число блокируемых исходных регистров, что уменьшает число случаев, в которых команды должны быть остановлены перед входом в конвейер выполнения.
Хотя описан конкретный вариант изобретения, очевидно, что изобретение не ограничено им и что много модификаций и добавлений может быть сделано в пределах объема изобретения. Например, хотя предпочтительный вариант осуществления был описан в связи с ЦП с физически отдельным сопроцессором, это не обязательно имеет место. Например, блок с плавающей точкой может быть обеспечен в пределах основного процессора. Кроме того, как отмечено ранее, хотя сопроцессор показан имеющим два конвейера в предпочтительном варианте осуществления, может быть обеспечено больше конвейеров, причем каждый отвечает на различные наборы команд, или обеспечивается перекрывание между наборами команд. Кроме того, различные комбинации особенностей зависимых пунктов с особенностями независимых пунктов следующей формулы изобретения могли бы быть осуществлены, не выходя за рамки объема данного изобретения.
Изобретение относится к блокированию исходных регистров в устройстве обработки данных. Техническим результатом является повышение эффективности конвейерной обработки данных. Устройство содержит процессор, имеющий конвейер для выполнения последовательности команд, и набор исходных регистров для сохранения исходных данных, запрашиваемых процессором при выполнении команд в последовательности. Механизм блокировки используют для блокирования исходных регистров, зависящих от настраиваемого критерия. Процессор работает в двух режимах работы. В первом режиме работы процессор после определения одного или нескольких исключительных состояний во время выполнения команды запускает процесс, внешний по отношению к конвейеру. Во втором режиме процессор завершает выполнение команды в конвейере, даже если определено наличие одного или нескольких исключительных состояний. 2 н. и 14 з.п. ф-лы, 9 ил., 2 табл.
(а) используют механизм блокировки для блокировки исходных регистров в зависимости от настраиваемого критерия, причем этот настраиваемый критерий выбирается для обеспечения того, что исходные регистры, все еще запрашиваемые для завершения выполнения команды в конвейере, блокируются для предотвращения заданных типов доступа последующей командой, причем последующая команда способна только войти в конвейер, только если исходные регистры, соответствующие этой команде, могут быть доступны как запрашиваемые этой командой;
(b) выбирают первый или второй режим работы для процессора, в первом режиме работы конвейер выполнен с возможностью после определения одного или нескольких исключительных состояний во время выполнения команды запустить процесс, внешний по отношению к конвейеру, для того чтобы дать возможность выполнению команды завершиться; во втором режиме работы конвейер выполнен с возможностью завершать выполнение команды в упомянутом конвейере, даже если определено наличие указанного одного или нескольких исключительных состояний; и
(c) изменяют механизмом блокировки настраиваемый критерий в зависимости от режима работы процессора таким образом, что во втором режиме работы может быть достигнуто уменьшение в числе блокируемых исходных регистров.
УСТРОЙСТВО И СПОСОБ ОБРАБОТКИ ДАННЫХ С ИСПОЛЬЗОВАНИЕМ НАБОРОВ КОМАНД | 1995 |
|
RU2137183C1 |
СПОСОБ ЦИФРОВОЙ ОБРАБОТКИ СИГНАЛОВ И УСТРОЙСТВО ДЛЯ ЕГО ОСУЩЕСТВЛЕНИЯ | 2000 |
|
RU2163391C1 |
EP 1093053 A1, 18.04.2001 | |||
СПОСОБ ПОЛУЧЕНИЯ НИТРОПРОИЗВОДНЫХ 2-ГАЛОГЕН-9,10-ДИГИДРО-9-АКРИДИНОНОВ ИЗ 5-ГАЛОГЕН-3-АРИЛ-2,1-БЕНЗИЗОКСАЗОЛОВ | 2007 |
|
RU2339623C1 |
Авторы
Даты
2006-08-20—Публикация
2002-02-11—Подача