УСТРОЙСТВО ОБРАБОТКИ ДАННЫХ И СПОСОБ ПЕРЕНОСА РАБОЧЕЙ НАГРУЗКИ МЕЖДУ ИСХОДНОЙ И ЦЕЛЕВОЙ КОМПОНОВКОЙ СХЕМ ОБРАБОТКИ
DATA PROCESSING DEVICE AND METHOD OF TRANSFERRING WORKLOAD BETWEEN SOURCE AND TARGET LAYOUT OF PROCESSING CIRCUITS

Область техники, к которой относится изобретение
Настоящее изобретение относится к устройству обработки данных и способу переключения рабочей нагрузки между первой и второй компоновкой схем обработки, и, в частности, к способу повышения производительности обработки рабочей нагрузки после указанного переключения.
Предшествующий уровень техники
В современных системах обработки данных, различие в требовании к производительности между задачами, требующими большой производительности, например, функционирование игр, и задачами, требующими малой производительности, например, воспроизведение MP3-файлов, может превышать отношение 100:1. В случае использования одного процессора для всех задач, этот процессор должен иметь высокую производительность, но для микроархитектуры процессоров существует аксиома, что высокопроизводительные процессоры менее эффективно используют энергию, чем малопроизводительные процессоры. Известно, что для повышения эффективности использования энергии на уровне процессора (используются) такие способы, как Динамическое масштабирование напряжения и частоты (Dynamic Voltage and Frequency Scaling, DVFS) или выборочная подача питания для обеспечения процессора диапазоном уровней производительности и соответствующими характеристиками потребления энергии. Однако обычно указанных способов становится недостаточно для обеспечения возможности одному процессору брать на себя задачи с указанным расхождением в требованиях к производительности.
Соответственно, предложено использование многоядерной архитектуры для обеспечения системы с эффективным использованием энергии для выполнения таких различных задач. В то время как, с обеспечением возможности разным ядрам параллельно выполнять разные задачи для увеличения пропускной способности, многоядерные системы уже в течение некоторого времени используются для повышения производительности, исследование того, как такие системы могут использоваться для повышения эффективности использования энергии, является последним достижением техники.
В статье "Towards Better Performance Per Watt in Virtual Environments on Asymmetric Single-ISA Multi-Core Systems", V Kumar и др., ACM SIGOPS Operating Systems Review, Volume 43, Issue 3 (July 2009), обсуждаются многоядерные системы с Асимметричной единой архитектурой набора команд (Asymmetric Single Instruction Set Architecture, ASISA), состоящие из нескольких ядер, использующих идентичную архитектуру набора команд (ISA), но отличающихся особенностями, сложностью, потреблением энергии и производительностью. В этой статье исследуются свойства виртуализированных рабочих нагрузок для понимания того, как эти рабочие нагрузки должны планироваться в системах ASISA, чтобы повысить производительность и потребление энергии. В этой статье указывается, что определенные задачи больше подходят для микроархитектур с высокой частотой/производительностью (обычно задачи, требующие большого объема вычислений), в то время как другие больше подходят для микроархитектур с меньшей частотой/производительностью, и, как побочный эффект, потребляют меньше энергии (обычно задачи, требующие производительности ввода/вывода). Несмотря на то, что эти исследования показывают то, как можно использовать системы ASISA для выполнения различных задач при эффективном использовании энергии, по-прежнему существует потребность в обеспечении механизма для планирования отдельных задач для более подходящих процессоров. Такое управление планированием обычно является существенной нагрузкой на операционную систему.
В статье "Single-ISA Heterogeneous Multi-Core Architectures: The Potential for Processor Power Reduction", R Kumar и др., Proceedings of the 36th International Symposium of Microarchitecture (MICRO-36'03), обсуждается многоядерная архитектура, в которой все ядра исполняют идентичный набор команд, но имеют разные возможности и уровни производительности. Во время выполнения, системное программное обеспечение оценивает требования к ресурсам приложения и выбирает ядро, которое лучше других удовлетворяет этим требованиям наряду с тем, что минимизирует потребление энергии. Как обсуждается в разделе 2 этой статьи, во время исполнения приложения, программное обеспечение операционной системы сопоставляет это приложение с разными ядрами, чтобы подобрать ядро, удовлетворяющее определенному критерию выбора, например, конкретному требованию к производительности. В разделе 2.3 отмечается, что существуют затраты на переключение ядер, которые неизбежно влекут за собой ограничение степени разбиения переключения. Далее обсуждается конкретный пример, в котором, если операционная система на основе логики принимает решение о переключении, то она включает питание нового ядра, запускает сброс кэша и сохраняет все измененные данные кэша в совместно используемой структуре памяти, и после этого подает сигнал в новое ядро для запуска в предопределенной точке входа в операционной системе. Питание старого ядра может после этого быть выключено, в то время как новое ядро осуществляет выборку данных из памяти. Такой подход описывается в разделе 2.3 как обеспечивающий возможность переключения приложения между ядрами операционной системой. В остальной части статьи обсуждается то, как динамически можно выполнять указанное переключение в условиях многоядерной окружающей среды с целью сокращения потребления энергии.
Несмотря на то, что в вышеупомянутой статье обсуждается потенциальная возможность обеспечения сокращения потребления энергии посредством неоднородных многоядерных архитектур с единой ISA, по-прежнему требуется обеспечить операционную систему с достаточной функциональностью для обеспечения возможности принятия решений по планированию отдельных приложений. При переключении между экземплярами процессоров с разными архитектурными особенностями, Функция операционной системы в этом отношении становится более сложной. В связи с этим следует отметить, что ядра Alpha EV4-EV8 рассматриваются в этой статье как не полностью совместимые с ISA, как обсуждается, например, в пятом параграфе раздела 2.2.
Кроме того, в этой статье не решается проблема существования значительных затрат, связанных с переключением приложений между ядрами, которые могут значительно уменьшить преимущества, которые получают от указанного переключения. Упомянутые затраты включают в себя не только время, требуемое для выполнения переключения, в течение которого ни один процессор не выполняет перенос рабочей нагрузки, но также и потери, вызываемые промахом кэша после переключения. Когда целевое ядро начинает выполнение перенесенной обработки, любой кэш, обеспеченный в целевом ядре начинает работу при отсутствии каких-либо действительных данных, и поэтому целевое ядро испытывает промахи кэша, существующие при холодном пуске. Это означает, что данные еще не были выбраны из памяти, что замедляет выполнение обработки и приводит к использованию значительного количества энергии. Производительность и эффективность использования энергии восстанавливаются только после "разогрева" целевого кэша посредством кэширования некоторого количества значений данных, сохраненных в памяти. Несмотря на то, что в вышеупомянутой статье авторов R. Kumar и др. признается существование проблемы промахов кэша, существующих при холодном пуске, автор не дает решения этой проблемы. Целью настоящего способа является повышение производительности обработки после переключения на целевой процессор.
Сущность изобретения
С точки зрения первого аспекта, настоящее изобретение обеспечивает устройство обработки данных, содержащее:
первую компоновку схем обработки и вторую компоновку схем обработки, сконфигурированные с возможностью выполнения рабочей нагрузки по обработке так, что эта рабочая нагрузка по обработке выполняется одной из первой компоновки схем обработки и второй компоновки схем обработки в каждый момент времени,
компоновку схем управления питанием для независимого управления подачей питания в первую компоновку схем обработки и вторую компоновку схем обработки,
контроллер переноса рабочей нагрузки, реагирующий на управляющее воздействие для переноса, для управления переносом выполнения рабочей нагрузки по обработке из исходной компоновки схем обработки на целевую компоновку схем обработки до перевода исходной компоновки схем обработки в режим экономии энергии компоновкой схем управления питанием, причем исходной компоновкой схем обработки является одна из первой и второй компоновки схем обработки, а целевой компоновкой схем обработки является другая из первой и второй компоновки схем обработки, в котором:
по меньшей мере, исходная компоновка схем обработки имеет кэш,
компоновка схем управления питанием сконфигурирована с возможностью, после упомянутого переноса, поддержания, по меньшей мере, кэша исходной компоновки схем обработки в режиме с включенным питанием в течение периода просмотра после начала выполнения перенесенной рабочей нагрузки по обработке целевой компоновкой схем обработки,
причем это устройство обработки данных содержит компоновку схем просмотра кэша, сконфигурированную с возможностью просмотра значений данных в кэше исходной компоновки схем обработки в течение периода просмотра, и извлечения значений данных, выявленных в результате просмотра, для целевой компоновки схем обработки, и
компоновка схем управления питанием сконфигурирована с возможностью перевода упомянутого, по меньшей мере, кэша исходной компоновки схем обработки в режим экономии энергии после окончания периода просмотра.
Устройство обработки данных согласно настоящему изобретению содержит первую и вторую компоновку схем обработки, и в любой момент времени в течение обработки, одна из этих первой и второй компоновки схем обработки выполняет рабочую нагрузку по обработке. Когда осуществляется управляющее воздействие для переноса, выполнение рабочей нагрузки по обработке переносится из исходной компоновки схем обработки (та, из первой и второй компоновки схем обработки, которая в настоящий момент выполняет рабочую нагрузку, в момент приема управляющего воздействия для переноса) в целевую компоновку схем обработки (другая из первой и второй компоновки схем обработки), при подготовке к переводу исходной компоновки схем обработки в режим экономии энергии. Независимо от того, как достигается сам перенос, посредством настоящего способа повышается уровень производительности целевой компоновки схем после переноса рабочей нагрузки по обработке на целевую компоновку схем.
В настоящем способе учитывается, что после переноса, целевой компоновке схем обработки могут потребоваться значения данных, которые сохранены в кэше исходной компоновки схем обработки перед переносом. По меньшей мере, кэш исходной компоновки схем обработки поддерживается в режиме с включенным питанием в течение ограниченного периода (периода просмотра) после начала выполнения перенесенной рабочей нагрузки по обработке целевой компоновкой схем обработки. Компоновка схем просмотра кэша просматривает данные в исходном кэше в течение периода просмотра и извлекает данные для целевой компоновки схем обработки. При поддержании питания для исходного кэша в течение периода просмотра, целевая компоновка схем обработки имеет доступ к данным в исходном кэше в течение начального периода обработки, соответственно, устраняется необходимость выборки данных из памяти. Так как доступы к исходному кэшу являются более быстрыми, и при этом используется меньше энергии, чем в случае доступов к памяти, то посредством настоящего способа повышается уровень производительности целевой компоновки схем обработки и эффективность использования энергии всего упомянутого устройства после переноса рабочей нагрузки по обработке.
В настоящем способе также учитывается то, что просмотр данных в этом исходном кэше является полезным только в течение ограниченного периода после начала выполнения рабочей нагрузки по обработке целевой компоновкой схем обработки. Со временем, данные в исходном кэше уже не относятся к обработке, выполняемой целевой компоновкой схем обработки. Например, целевая компоновка схем обработки может начать обработку другого приложения, которому не требуются данные из исходного кэша, или целевая компоновка схем обработки может обработать упомянутые данные, так что в настоящее время используется обновленное значение, отличное от значения, сохраненного в исходном кэше. Следовательно, в конце периода просмотра, компоновка схем просмотра кэша прекращает просмотр значений данных в исходном кэше, и компоновка схем управления питанием сконфигурирована с возможностью перевода, по меньшей мере, кэша исходной компоновки схем обработки в режим экономии энергии для экономии энергии.
Подводя итог вышесказанному, вместо выключения питания исходного кэша сразу после переноса рабочей нагрузки по обработке на целевую компоновку схем обработки, исходный кэш поддерживается в состоянии с включенным питанием в течение периода просмотра, во время которого компоновка схем просмотра кэша может просматривать значения данных в исходном кэше и извлекать значения данных просмотра для целевой компоновки схем обработки. С сокращением количества выборок данных из памяти повышается уровень производительности и эффективность использования энергии.
Несмотря на то, что в настоящей заявке настоящий способ в целом описан для случая, когда существуют две схемы обработки (первая и вторая компоновки схем обработки), устройство обработки данных может содержать дополнительные схемы обработки, и упомянутый способ может быть применен для переноса рабочей нагрузки между любыми двумя из этих схем обработки. Кроме того, каждая компоновка схем обработки может включать в себя одно ядро процессора или множество ядер процессора.
Рабочая нагрузка по обработке может включать в себя, по меньшей мере, одно приложение для обработки и, по меньшей мере, одну операционную систему для выполнения упомянутого, по меньшей мере, одного приложения для обработки. При рассмотрении всей рабочей нагрузки как макроскопического объекта, который выполняется только на одной из первой и второй схем обработки в любой конкретный момент времени, рабочая нагрузка может быстро переключаться между первой и второй схемами обработки способом, прозрачным для операционной системы. Такой подход решает ранее упомянутые проблемы, которые возникают в результате использования операционной системы для управления планированием приложений для конкретных схем обработки.
Контроллер переноса рабочей нагрузки может быть сконфигурирован с возможностью маскирования во время переноса информации о предопределенной конкретной конфигурации процессора от упомянутой, по меньшей мере, одной операционной системы, так что перенос рабочей нагрузки является прозрачным для упомянутой, по меньшей мере, одной операционной системы. Это означает, что конфигурация операционной системы упрощается, так как она не должна знать о различиях между конкретной для процессора информацией о конфигурации, ассоциированной с первой компоновкой схем обработки, и конкретной для процессора информацией о конфигурации, ассоциированной со второй компоновкой схем обработки, так как различия, конкретные для процессора, первой и второй компоновки схем обработки маскируются от операционной системы, то с точки зрения операционной системы (и с точки зрения приложений, выполняющихся под ее управлением) рабочая нагрузка выполняется на одной аппаратной платформе. Независимо от того, выполняется ли рабочая нагрузка на первой компоновке схем обработки или на второй компоновке схем обработки, представление операционной системы об аппаратной платформе является идентичным. Это облегчает конфигурирование операционной системы и приложений.
Контроллер переноса рабочей нагрузки может содержать, по меньшей мере, программное обеспечение виртуализации, логически отделяющее, по меньшей мере, одну операционную систему от первой компоновки схем обработки и второй компоновки схем обработки. Программное обеспечение виртуализации обеспечивает некоторый уровень абстракции для сокрытия конфигурации аппаратного обеспечения соответствующих компоновок схем обработки от операционной системы для того, чтобы операционной системе было не известно, какая компоновка схем обработки выполняет рабочую нагрузку. Соответственно, конфигурация операционной системы может быть упрощена. Программное обеспечение виртуализации может управлять размещением рабочей нагрузки для обработки либо на первой компоновке схем обработки или на второй компоновке схем обработки.
Первая компоновка схем обработки может быть архитектурно совместимой со второй компоновкой схем обработки, так что рабочая нагрузка по обработке, которая должна выполняться устройством обработки данных, может выполняться или на первой компоновке схем обработки, или на второй компоновке схем обработки. Это означает, что, с точки зрения приложения, единственным различием между выполнением приложения на первой компоновке схем обработки и выполнением приложения на второй компоновке схем обработки является достигаемая эффективность использования энергии или уровень производительности. Отсутствует потребность в преобразовании набора команд между первой и второй компоновкой схем обработки. Вся рабочая нагрузка по обработке, включающая в себя операционную систему и приложения, выполняющиеся под управлением операционной системы, может легко переносится туда и обратно между первой и второй компоновкой схем обработки.
Первая компоновка схем обработки может отличаться с точки зрения микроархитектуры от второй компоновки схем обработки, так что производительность первой компоновки схем обработки отличается от производительности второй компоновки схем обработки. Одна из первой и второй компоновки схем обработки, имеющая более высокий уровень производительности, в основном потребляет больше энергии, чем другая из первой и второй компоновки схем обработки. Это означает, что рабочая нагрузка может быть переключена на компоновку схем обработки с большей производительностью, если требуется высокопроизводительная обработка (например, когда выполняется игровое приложение). Напротив, если выполняется малопроизводительная обработка, например, воспроизведение MP3-файлов, то вся рабочая нагрузка по обработке может быть переключена на малопроизводительную компоновку схем обработки для повышения эффективности использования энергии. Соответственно, с обеспечением различных с точки зрения микроархитектуры схем обработки выполнение рабочей нагрузки по обработке может быть оптимизировано по производительности или потреблению энергии, в зависимости от характера выполняемой рабочей нагрузки.
Микроархитектурные различия между компоновками схем обработки могут включать в себя, например, разные длины исполнительного конвейера или разные исполнительные ресурсы. Различия в длине конвейера обычно в результате приводят к различиям в рабочей частоте, которые, в свою очередь, оказывают влияние на производительность. Аналогично, различия в исполнительных ресурсах оказывают влияние на пропускную способность обработки и, следовательно, на производительность. Например, схема обработки, имеющая более значительные исполнительные ресурсы, обеспечивает возможность обработки большей информации в любой конкретный момент времени, при этом повышает пропускную способность. Дополнительно, или в качестве альтернативы, одна схема обработки может иметь больше исполнительных ресурсов, чем другая, например, большее количество арифметико-логических устройств (АЛУ, ALU), которые также повышают пропускную способность. В качестве другого примера разных исполнительных ресурсов, схема обработки с эффективным использованием энергии может быть обеспечена простым конвейером с последовательностью исполнения команд по порядку, в то время как схема обработки с более высокой производительностью может быть обеспечена суперскалярным конвейером с переупорядочением последовательности команд. Кроме того, схема обработки с более высокой производительностью может иметь возможность предсказания ветвлений, что ускоряет обработку посредством опережающей выборки адресатов предсказанного ветвления до того, как это ветвление будет разрешено, в то время как схема обработки с большей эффективностью использования энергии может не иметь предсказателя ветвлений. Такие микроархитектурные различия не влияют на способность каждой архитектурно совместимой схемы обработки выполнять идентичную рабочую нагрузку по обработке, но в результате приводят к различным уровням производительности и потребления энергии, когда соответствующие схемы обработки выполняют рабочую нагрузку по обработке.
Настоящий способ может быть использован, когда кэш существует только в исходной компоновке схем обработки. В этом случае, можно избежать некоторых доступов к памяти посредством использования целевой компоновкой схем обработки компоновки схем просмотра кэша для просмотра исходного кэша в течение периода просмотра. После окончания периода просмотра, все данные должны выбираться из памяти.
Однако обычно целевая компоновка схем обработки также содержит кэш, так что как первая, так и вторая компоновка схем обработки содержат кэш. В этом случае, значения данных, просмотренных компоновкой схем просмотра кэша и извлеченных для целевой компоновки схем обработки компоновкой схем просмотра кэша, могут быть сохранены в кэше целевой компоновки схем обработки для ускорения будущих обращений к этим данным.
В одном варианте осуществления, компоновка схем управления питанием может быть сконфигурирована с возможностью перевода исходной компоновки схем обработки, за исключением кэша, в режим экономии энергии в течение периода просмотра, и перевода кэша исходной компоновки схем обработки в режим экономии энергии после окончания периода просмотра. Это сокращает потребление энергии устройством обработки данных, так как питание большей части исходной компоновки схем обработки может быть выключено после передачи рабочей нагрузки в целевой процессор. В течение периода просмотра только кэш исходной компоновки схем обработки продолжает снабжаться энергией для обеспечения возможности компоновке схем просмотра кэша извлекать значения, сохраненные в исходном кэше, для целевой компоновки схем просмотра кэша.
В одном варианте осуществления, когда кэш является частью иерархии кэшей в исходной компоновке схем обработки, просматриваемый исходный кэш может поддерживаться в режиме с включенным питанием в течение периода просмотра, в то время как, по меньшей мере, один другой кэш в этой иерархии кэшей находится в режиме экономии энергии.
Примером этого является случай, когда исходным кэшем, который должен просматриваться, является инклюзивный кэш второго уровня, который сконфигурирован с возможностью сохранения всех данных, хранящихся в любом(ых) кэше(ах) первого уровня иерархии кэшей. В этом случае, упомянутый кэш второго уровня может оставаться в состоянии с включенным питанием в течение периода просмотра для обеспечения возможности просмотра из компоновки схем просмотра кэша для целевой компоновки схем обработки, в то время как питание кэша(ей) первого уровня может быть выключено вместе с остальной частью исходной компоновки схем обработки.
В качестве альтернативы, компоновка схем управления питанием может быть сконфигурирована с возможностью поддержания исходной компоновки схем обработки в режиме с включенным питанием в течение периода просмотра, и перевода всей исходной компоновки схем обработки, в том числе кэша, в режим экономии энергии после окончания периода просмотра. Несмотря на то, что продолжение снабжения энергией исходной компоновки схем обработки в течение периода просмотра увеличивает потребление энергии, оно уменьшает сложность устройства обработки данных, так как независимое управление питанием и для исходного кэша, и для оставшейся части исходной компоновки схем обработки не требуется.
Примером ситуации, в которой может потребоваться совместное снабжение энергией исходного кэша и исходной компоновки схем обработки, является случай, когда кэш исходной компоновки схем обработки, который должен просматриваться компоновкой схем просмотра кэша, является кэшем первого уровня. Кэш первого уровня может быть слишком интегрирован с ядром процессора в исходной компоновке схем обработки, и не существует возможности обеспечения отдельного управления питанием для кэша и исходной компоновки схем обработки. В этом случае, можно продолжать снабжать энергией всю исходную компоновку схем обработки, в том числе кэш, в течение периода просмотра, и выключать питание после окончания периода просмотра.
Исходная компоновка схем обработки может быть сконфигурирована с возможностью выполнения операции по очистке исходного кэша и обратной записи всех измененных данных из кэша в совместно используемую память после окончания периода просмотра и перед тем, как компоновка схем управления питанием переведет кэш исходной компоновки схем обработки в режим экономии энергии. Посредством очистки исходного кэша перед выключением его питания, обеспечивается то, что все измененные данные, последнее значение которых еще не было записано обратно в память, не будут потеряны.
Для экономии энергии, может быть полезно поддержание компоновки схем обработки в режиме экономии энергии компоновкой схем управления питанием до осуществления управляющего воздействия для переноса. В этом случае, компоновка схем управления питанием может включать питание целевой компоновки схем обработки в ответ на управляющее воздействие для переноса.
Целевая компоновка схем обработки может быть сконфигурирована с возможностью объявления недействительным целевого кэша до того, как она начнет выполнение перенесенной рабочей нагрузки по обработке. Например, если целевая компоновка схем обработки находилась в режиме экономии энергии до переноса выполнения рабочей нагрузки по обработке, то после включения питания целевой компоновки схем обработки целевой кэш может содержать ошибочные данные. С объявлением недействительным целевого кэша до того, как целевая компоновка схем обработки начнет выполнение перенесенной рабочей нагрузки по обработке, можно избежать ошибок при обработке.
Для повышения производительности обработки, исходная компоновка схем обработки может быть сконфигурирована с возможностью продолжения выполнения рабочей нагрузки по обработке, когда кэш целевой компоновки схем обработки объявляется недействительным, а контроллер переноса рабочей нагрузки может быть сконфигурирован с возможностью переноса выполнения рабочей нагрузки по обработке на целевую компоновку схем обработки после того, как кэш целевой компоновки схем обработки объявлен недействительным. С обеспечением возможности исходной компоновке схем обработки продолжать выполнение рабочей нагрузки по обработке до тех пор, пока целевая компоновка схем обработки не будет готова начать выполнение этой рабочей нагрузки по обработке, сокращается период времени, в течение которого ни одна компоновка схем обработки не выполняет рабочую нагрузку по обработке, и поэтому уровень производительности (при выполнении) рабочей нагрузки по обработке увеличивается.
В одном варианте осуществления, период просмотра может начинаться, когда целевая компоновка схем обработки начинает выполнение рабочей нагрузки по обработке.
Период просмотра может заканчиваться при наступлении любого одного из набора событий прекращения просмотра, содержащего, по меньшей мере, одно событие прекращения просмотра. Одно или несколько событий прекращения просмотра, указывающих на то, что поддержание исходного кэша в состоянии с включенным питанием больше не целесообразно, могут запускать завершение компоновкой схем просмотра кэша периода просмотра. Обычно эти события включают в себя то, что целевой компоновке схем обработки больше не требуются данные в исходном кэше.
Компоновка схем просмотра кэша может быть сконфигурирована с возможностью текущего контроля того, наступило ли какое-либо из набора событий прекращения просмотра. Например, компоновка схем просмотра кэша может содержать счетчики производительности для текущего контроля обработки целевой компоновки схем обработки и доступов к данным, выполняемым целевой компоновкой схем обработки. С использованием счетчиков производительности, компоновка схем просмотра кэша может анализировать то, по-прежнему ли данные в исходном кэше относятся к обработке, выполняемой целевой компоновкой схем обработки. При конфигурации компоновки схем просмотра кэша, а не целевой компоновки схем обработки, с возможностью текущего контроля того, произошло ли какое-либо из событий прекращения просмотра, целевая компоновка схем обработки может оставаться в неведении относительно того, просматривается ли все еще кэш. Это упрощает конфигурацию целевой компоновки схем обработки.
По меньшей мере, одно событие прекращения просмотра может включать в себя событие, которое наступает тогда, когда доля в процентах просмотров, выполняемых компоновкой схем просмотра кэша, которые в результате приводят к кэш-попаданиям в кэше исходной компоновки схем обработки, падает ниже предопределенного порогового уровня. Если доля в процентах кэш-попаданий в исходном кэше становится меньше, чем та, которая указывает на то, что много значений данных, которые пытается найти целевая компоновка схем обработки, отсутствуют в исходном кэше, и поэтому данные в исходном кэше не относятся к целевой компоновке схем обработки. Следовательно, выход по энергии может быть повышен при завершении периода просмотра и выключении кэша после того, как доля в процентах кэш-попаданий упадет ниже предопределенного порогового уровня.
По меньшей мере, одно событие прекращения просмотра может также включать в себя событие, которое наступает тогда, когда целевая компоновка схем обработки завершает предопределенное количество транзакций по обработке предопределенного типа после переноса рабочей нагрузки по обработке. Несмотря на то, что целевая компоновка схем обработки может получать доступ к данным, сохраненным в исходном кэше, посредством компоновки схем просмотра кэша, она обычно не может обновлять значения в исходном кэше. Можно ожидать, что после завершения предопределенного количества транзакций целевая компоновка схем обработки генерирует новые значения для некоторых данных, первоначально сохраненных в исходном кэше. Так как целевая компоновка схем обработки не может записывать данные в исходный кэш, то новые значения данных сохраняются в памяти и/или в целевом кэше, что означает, что первоначальные значения данных в исходном кэше больше не относятся к целевой компоновке схем обработки. Следовательно, завершение предопределенного количества транзакций по обработке предопределенного типа может указывать на то, что исходный кэш больше не требуется, и поэтому может быть запущено завершение периода просмотра. Предопределенный тип транзакций по обработке может содержать, например, все транзакции, выполняемые целевой компоновкой схем обработки, или может содержать только кэшируемые транзакции.
Еще одним типом события прекращения просмотра может быть событие, которое наступает тогда, когда истекает предопределенное количество циклов обработки после того, как целевая компоновка схем обработки начнет выполнение перенесенной рабочей нагрузки по обработке. Как упоминалось выше, целевая обработка обычно не может обновлять значения в исходном кэше. Следовательно, после выполнения обработки целевой компоновкой схем обработки в течение определенного количества циклов обработки, маловероятно, что данные, используемые компоновкой схем обработки данных (например, данные, сохраненные в памяти или в целевом кэше) являются идентичными данным, все еще хранящимся в исходном кэше. Это означает то, что количество циклов обработки, которое истекло с момента начала выполнения рабочей нагрузки по обработке целевой компоновкой схем обработки, может являться индикатором того, что исходный кэш больше не является полезным для целевой компоновки схем обработки, и его питание может быть выключено.
Когда упомянутое устройство содержит совместно используемую память, разделяемую между первой и второй компоновкой схем обработки, по меньшей мере, одно событие прекращения просмотра может включать в себя событие, которое наступает тогда, когда к конкретной области памяти целевой компоновкой схем обработки осуществлен доступ в первый раз после начала выполнения рабочей нагрузки по обработке. Первый доступ к конкретной области памяти может включать в себя, например, то, что целевая компоновка схем обработки начала новое приложение, ассоциированное с определенной областью памяти, отличное от приложения, ранее обрабатываемого целевой компоновкой схем обработки. Это может указывать на то, что данные в исходном кэше, которые не являются ассоциированными с новым приложением, больше не относятся к целевой компоновке схем обработки. Следовательно, первый доступ к конкретной области памяти может запускать завершение периода просмотра.
По аналогичным причинам событие прекращения просмотра может также включать в себя событие, которое наступает тогда, когда к конкретной области памяти совместно используемой памяти, к которой осуществляла доступ целевая компоновка схем обработки в течение начального периода после начала выполнения перенесенной рабочей нагрузки по обработке, целевая компоновка схем обработки больше не осуществляет доступ в течение предопределенного периода. Когда целевая компоновка схем обработки начинает обработку приложения, отличного от того, которое первоначально обрабатывалось исходной компоновкой схем обработки, то к области памяти, ассоциируемой с первоначальным приложением, может не осуществляться доступ в течение некоторого периода времени. Это может указывать на то, что данные в исходном кэше больше не используются целевой компоновкой схем обработки, и поэтому может быть запущено завершение периода просмотра.
Еще одним типом события прекращения просмотра является событие, которое наступает тогда, когда целевая компоновка схем обработки записывает в предопределенную ячейку памяти совместно используемой памяти в первый раз после начала выполнения перенесенной рабочей нагрузки по обработке. Это обеспечивает возможность целевой компоновке схем обработки подавать сигнал в компоновку схем просмотра кэша о том, что ей больше не требуются данные в исходном кэше, посредством записи в предопределенную ячейку памяти.
Набор событий прекращения просмотра может включать в себя любое одно или множество вышеупомянутых событий прекращения просмотра, а также другие типы событий прекращения просмотра.
Как используется в этом описании, термин "совместно используемая память" относится к памяти, к которой может получить прямой доступ как первая компоновка схем обработки, так и вторая компоновка схем обработки, например, основной памяти, соединенной как с первой, так и со второй компоновкой схем обработки через межсоединение.
Упомянутое устройство может содержать контроллер отмены просмотра, реагирующий на условия отмены просмотра, для отмены просмотра кэша исходной компоновки схем обработки компоновкой схем просмотра кэша и для управления компоновкой схем управления питанием для перевода исходной компоновки схем обработки, в том числе кэша, в состояние экономии энергии после переноса выполнения рабочей нагрузки по обработке без ожидания окончания периода просмотра. В определенных ситуациях, просмотр исходного кэша может быть бесполезным для целевой компоновки схем обработки. В таких ситуациях, контроллер отмены просмотра может замещать компоновку схем просмотра кэша посредством предотвращения просмотра исходного кэша и управления компоновкой схем управления питанием для перевода исходной компоновки схем обработки, в том числе кэша, в состояние экономии энергии без ожидания окончания периода просмотра. Контроллер отмены просмотра может быть обеспечен, например, как программно-аппаратное обеспечение, исполняемое на исходной компоновке схем обработки, или как часть программного обеспечения виртуализации, которое маскирует информацию о конкретном аппаратном обеспечении компоновки схем обработки от операционной системы.
Например, может быть известно до переноса выполнения рабочей нагрузки по обработке о том, что данные в исходном кэше не потребуются для обработки, которая готова к выполнению целевой компоновкой схем обработки, после переноса. Например, если исходная компоновка схем обработки только что закончила выполнение игрового приложения, то данные, используемые игровым приложением, могут быть бесполезны для целевой компоновки схем обработки после того, как она начнет обработку другого приложения. В этом случае, контроллер отмены просмотра может подавать сигнал в компоновку схем просмотра кэша и компоновку схем управления питанием о том, что просмотр кэша не требуется.
Компоновка схем просмотра кэша может содержать когерентное межсоединение, связанное с первой и второй компоновкой схем обработки. Из когерентного межсоединения виден и исходный кэш, и любая совместно используемая память, существующая в устройстве обработки данных. Целевая компоновка схем обработки может просто запрашивать данные из когерентного межсоединения, а когерентное межсоединение может управлять тем, просматриваются ли данные в исходном кэше или выбираются для памяти (в зависимости от того, закончился ли уже период просмотра, и того, произошло ли попадание в результате запроса на доступ к данным). Когерентное межсоединение управляет доступами к данным так, что не требуется, чтобы целевой компоновке схем обработки было известно о точном адресе ячейки требуемых данных. Целевой компоновке схем обработки может быть не известно о просмотре данных в исходном кэше. Когерентное межсоединение также может, в некоторых вариантах осуществления, обеспечивать подходящий механизм переноса данных состояния архитектуры из исходной компоновки схем обработки в целевую компоновку схем обработки в течение передачи обслуживания рабочей нагрузки по обработке.
С точки зрения еще одного аспекта, настоящее изобретение обеспечивает устройство обработки данных, содержащее:
первое средство обработки для выполнения обработки и второе средство обработки для выполнения обработки, причем первое средство обработки и второе средство обработки сконфигурированы с возможностью выполнения рабочей нагрузки по обработке так, что рабочая нагрузка по обработке выполняется одним из первого средства обработки и второго средства обработки в каждый момент времени,
средство управления питанием для независимого управления подачей питания в первое средство обработки и второе средство обработки,
средство управления переносом рабочей нагрузки для, в ответ на управляющее воздействие для переноса, управления переносом выполнения рабочей нагрузки по обработке из исходного средства обработки в целевое средство обработки до перевода исходного средства обработки в режим экономии энергии средством управления питанием, причем исходное средство обработки является одним из первого и второго средства обработки, а целевым средством обработки является другое из первого и второго средства обработки, в котором:
по меньшей мере, исходное средство обработки имеет средство кэша для сохранения кэшируемых значений данных,
средство управления питанием сконфигурировано с возможностью, после упомянутого переноса, поддержания, по меньшей мере, средства кэша исходного средства обработки в режиме с включенным питанием в течение периода просмотра после начала выполнения перенесенной рабочей нагрузки по обработке целевым средством обработки,
устройство обработки данных содержит средство просмотра кэша для просмотра значений данных в средстве кэша исходного средства обработки в течение периода просмотра и извлечения значений данных, выявленных в результате просмотра, для целевого средства обработки, и
средство управления питанием сконфигурировано с возможностью перевода упомянутого, по меньшей мере, средства кэша исходного средства обработки в режим экономии энергии после окончания периода просмотра.
С точки зрения еще одного аспекта, настоящее изобретение обеспечивает способ обработки данных для устройства, содержащего первую компоновку схем обработки и вторую компоновку схем обработки, сконфигурированные с возможностью выполнения рабочей нагрузки по обработке так, что рабочая нагрузка по обработке выполняется одной из первой компоновки схем обработки и второй компоновки схем обработки в каждый момент времени, причем этот способ содержит этапы, на которых:
выполняют рабочую нагрузку по обработке посредством исходной компоновки схем обработки, причем эта компоновка схем обработки является одной из первой и второй компоновки схем обработки и содержит кэш, а другая из первой и второй компоновки схем обработки является целевой компоновкой схем обработки,
в ответ на управляющее воздействие для переноса, переносят выполнение рабочей нагрузки по обработке из исходной компоновки схем обработки на целевую компоновку схем обработки до того, как исходная компоновка схем обработки будет переведена в режим экономии энергии,
после переноса рабочей нагрузки по обработке на целевую компоновку схем обработки, поддерживают, по меньшей мере, кэш исходной компоновки схем обработки в режиме с включенным питанием в течение периода просмотра после начала выполнения перенесенной рабочей нагрузки по обработке целевой компоновкой схем обработки,
в течение периода просмотра, выполняют просмотр значений данных в кэше исходной компоновки схем обработки и извлекают значения данных, выявленных в результате просмотра, для целевой компоновки схем обработки, и
переводят упомянутый, по меньшей мере, кэш исходной компоновки схем обработки в режим экономии энергии после окончания периода просмотра.
В одном варианте осуществления, производительность обработки может быть дополнительно повышена посредством обеспечения возможности исходной компоновке схем обработки продолжать обработку рабочей нагрузки по обработке в течение некоторого периода после приема управляющего воздействия по переносу, в то время как кэш целевой компоновки схем обработки объявляется недействительным. Только с переносом выполнения рабочей нагрузки по обработке на целевую компоновку схем обработки после того, как кэш целевой компоновки схем обработки объявлен недействительным, время, в течение которого ни одна компоновка схем обработки не выполняет рабочую нагрузку, может быть сокращено. Следовательно, рабочая нагрузка по обработке выполняется быстрее и более эффективно.
Краткое описание чертежей
Далее настоящее изобретение описывается, только для примера, со ссылкой на его варианты осуществления, иллюстрированные на прилагаемых чертежах, в которых:
Фиг. 1 - блок-схема системы обработки данных в соответствии с одним вариантом осуществления.
На фиг. 2 схематически изображено обеспечение дискретного контроллера (в этом описании также называемого контроллером переноса рабочей нагрузки) в соответствии с одним вариантом осуществления для логического отделения рабочей нагрузки, выполняемой устройством обработки данных, от конкретной аппаратной платформы внутри устройства обработки данных, используемого для выполнения этой рабочей нагрузки.
Фиг. 3 - схема, на которой схематически изображены шаги, выполняемые как исходным процессором, так и целевым процессором, в ответ на управляющее воздействие для переключения для переноса рабочей нагрузки с исходного процессора на целевой процессор, в соответствии с одним вариантом осуществления.
На фиг. 4A схематически изображено сохранение текущего состояния архитектуры исходной компоновки схем обработки в ассоциированном с ней кэше в течение операции сохранения по фиг. 3.
На фиг. 4B схематически изображено использование блока управления просмотром для управления переносом текущего состояния архитектуры исходной схемы обработки в целевую схему обработки во время операции восстановления по фиг. 3.
На фиг. 5 изображена альтернативная структура для обеспечения ускоренного механизма для переноса текущего состояния архитектуры исходной компоновки схем обработки на целевую компоновку схем обработки во время операции переноса, в соответствии с одним вариантом осуществления.
На фиг. 6A-6I схематически изображены шаги выполнения переноса рабочей нагрузки с исходной схемы обработки на целевую схему обработки в соответствии с одним вариантом осуществления.
Фиг. 7 - график, на котором представлено изменение эффективности использования энергии в зависимости от производительности, и на котором иллюстрируется то, как различные ядра процессора, изображенные на фиг. 1, используются в различных точках вдоль этой кривой, в соответствии с одним вариантом осуществления.
На фиг. 8A-8B схематически изображены малопроизводительный процессорный конвейер и высокопроизводительный процессорный конвейер, соответственно, используемые в одном варианте осуществления.
Фиг. 9 - график, на котором представлено изменение в энергии, потребляемой системой обработки данных, когда выполнение рабочей нагрузки по обработке переключается между малопроизводительной схемой обработки с высокой эффективностью использования энергии и высокопроизводительной схемой обработки с малой эффективностью использования энергии.
Описание вариантов осуществления
Фиг. 1 является блок-схемой, на которой схематически иллюстрируется система обработки данных в соответствии с одним вариантом осуществления. Как представлено на фиг. 1, система содержит два архитектурно совместимых экземпляра схем обработки (компоновка 0 10 схем обработки и компоновка 1 50 схем обработки), но при этом эти разные экземпляры схем обработки имеют разную микроархитектуру. В частности, компоновка 10 схем обработки выполнена с возможностью функционирования с более высокой производительностью, чем компоновка 50 схем обработки, но с компромиссным решением в отношении того, что компоновка 10 схем обработки менее эффективно использует энергию, чем компоновка 50 схем обработки. Примеры микроархитектурных различий более подробно описаны ниже со ссылкой на фиг. 8A-8B.
Каждая схема обработки может включать в себя один блок обработки (в этом описании также называемый ядром процессора), или, в качестве альтернативы, по меньшей мере, один из экземпляров схем обработки может сам содержать группу блоков обработки с идентичной микроархитектурой.
В примере, изображенном на фиг. 1, схема 10 обработки включает в себя два ядра 15, 20 процессора, которые являются идентичными как по архитектуре, так и по микроархитектуре. Напротив, схема 50 обработки содержит только одно ядро 55 процессора. В нижеследующем описании, ядра 15, 20 процессора называются "большими" ядрами, в то время как ядро 55 процессора называется "маленьким" ядром, так как ядра 15, 20 процессора обычно являются более сложными, чем ядро 55 процессора, вследствие того, что эти ядра разрабатываются с учетом (высокой) производительности, тогда как ядро 55 процессора, напротив, обычно является менее сложным вследствие разработки с учетом эффективности использования энергии.
На фиг. 1, предполагается, что каждое из ядер 15, 20, 55 имеет свой собственный ассоциированный с ним кэш 25, 30, 60 уровня 1, соответственно, который может быть выполнен как объединенный кэш для хранения как команд, так и данных, для обращения (к нему) ассоциированного ядра, или может быть выполнен с гарвардской архитектурой, обеспечивающей отдельные кэши уровня 1 команд и данных. Несмотря на то, что представлено, что каждое из ядер имеет свой собственный ассоциированный с ним кэш уровня 1, это не является необходимым условием, и, в альтернативных вариантах осуществления, одно или несколько ядер могут не иметь локального кэша.
В варианте осуществления, представленном на фиг. 1, компоновка 10 схем обработки также включает в себя кэш 35 уровня 2, совместно используемый между ядром 15 и ядром 20, причем используется блок 40 управления просмотром для обеспечения когерентности кэша между двумя кэшами 25, 30 уровня 1 и кэшем 35 уровня 2. В одном варианте осуществления, кэш уровня 2 выполнен как инклюзивный кэш, и, следовательно, любые данные, хранящиеся в любом из кэшей 25, 30 уровня 1, также находятся в кэше 35 уровня 2. Как очевидно специалистам в данной области техники, целью блока 40 управления просмотром является обеспечение когерентности кэша между различными кэшами, так что любому ядру 15, 20 всегда может быть обеспечен доступ к самой последней версии любых данных, когда оно выдает запрос на доступ. Следовательно, только в качестве примера, если ядро 15 выдает запрос на доступ к данным, которых нет в ассоциированном кэше 25 уровня 1, то блок 40 управления просмотром перехватывает этот запрос как транслируемый далее из кэша 25 уровня 1, и устанавливает с обращением к кэшу 30 уровня 1 и/или кэшу 35 уровня 2, может ли этот запрос на доступ быть обслужен исходя из частей содержимого одного из этих других кэшей. Только если данные отсутствуют во всех упомянутых кэшах, запрос на доступ транслируется далее через межсоединение 70 в основную память 80, причем основная память 80 является памятью, которая совместно используется компоновкой 10 схем обработки и компоновкой 50 схем обработки.
Блок 75 управления просмотром, обеспеченный в межсоединении 70, функционирует аналогично блоку 40 управления просмотром, но в этом случае целью является поддержка когерентности между структурой кэша, обеспеченной в компоновке 10 схем обработки, и структурой кэша, обеспеченной в компоновке 50 схем обработки. В примерах, в которых кэш 35 уровня 2 является инклюзивным кэшем, блок управления просмотром поддерживает когерентность аппаратного кэша между кэшем 35 уровня 2 компоновки 10 схем обработки и кэшем 60 уровня 1 компоновки 50 схем обработки. Однако, если кэш 35 уровня 2 выполнен как эксклюзивный кэш уровня 2, то блок 75 управления просмотром также просматривает данные, содержащиеся в кэшах 25, 30 уровня 1, для обеспечения когерентности кэша между кэшами компоновки 10 схем обработки и кэшем 60 компоновки 50 схем обработки.
Согласно одному варианту осуществления, только одна из компоновки 10 схем обработки и компоновки 50 схем обработки активно обрабатывает рабочую нагрузку в любой момент времени. Для целей настоящей заявки, можно предполагать, что рабочая нагрузка содержит, по меньшей мере, одно приложение и, по меньшей мере, одну операционную систему для выполнения этого, по меньшей мере, одного приложения, как схематически изображено по ссылочной позиции 100 на фиг. 2. В этом примере, приложения 105, 110 выполняются под управлением операционной системы 115, и в совокупности приложения 105, 110 и операционная система 115 формируют рабочую нагрузку 100. Можно предполагать, что приложения расположены на уровне пользователя, в то время как операционная система расположена на привилегированном уровне, и в совокупности рабочая нагрузка, формируемая приложениями и операционной системой, выполняется на аппаратной платформе 125 (представляющей вид аппаратного уровня). В любой момент времени эта аппаратная платформа обеспечивается либо компоновкой 10 схем обработки или компоновкой 50 схем обработки.
Как изображено на фиг. 1, компоновка 65 схем управления питанием обеспечивается для выборочного и независимого обеспечения питанием компоновки 10 схем обработки и компоновки 50 схем обработки. До переноса рабочей нагрузки с одной схемы обработки на другую, обычно только одна из упомянутых схем обработки в полной мере снабжается энергией, т.е. схема обработки, которая в настоящее время выполняет рабочую нагрузку (исходная компоновка схем обработки), а другая схема обработки (целевая компоновка схем обработки) обычно находится в режиме экономии энергии. Когда установлено, что рабочая нагрузка должна быть перенесена с одной схемы обработки на другую, во время операции переноса существует период времени, когда обе схемы обработки находятся в состоянии с включенным питанием "включено", но в некоторый момент времени после операции переноса, исходная схема обработки, с которой перенесена рабочая нагрузка, переводится в режим экономии энергии.
Режим экономии энергии может принимать различные формы, в зависимости от реализации, и, следовательно, например, может являться одним из режима с отключенным питанием, режима частичного/полного сохранения данных, спящего режима или режима ожидания. Для специалиста в данной области техники такие режимы являются очевидными, и, соответственно, в данном описании более подробно не обсуждаются.
Целью описанных вариантов осуществления является выполнение переключения рабочей нагрузки между схемами обработки в зависимости от требуемого уровня энергии/производительности рабочей нагрузки. Соответственно, когда рабочая нагрузка включает в себя исполнение одной или нескольких задач, требующих большой производительности, например, исполнение приложений-игр, то эта рабочая нагрузка может исполняться на высокопроизводительной схеме 10 обработки с использованием одного или обоих больших ядер 15, 20. Однако, напротив, когда рабочая нагрузка является выполнением только задач, требующих малой производительности, например, воспроизведение MP3-файлов, то вся рабочая нагрузка может быть перенесена на схему 50 обработки для получения преимущества от эффективности использования энергии, которое может быть реализовано посредством использования схемы 50 обработки.
Для лучшего использования указанных возможностей переключения, необходимо обеспечить механизм, который обеспечивает возможность осуществления переключения простым и эффективным способом, так что при выполнении переноса рабочей нагрузки не потребляется такое количество энергии, которое сводит на нет преимущества, полученные от переключения, а также обеспечить то, что процесс переключения является достаточно быстрым, чтобы сам он сколько-нибудь существенно не ухудшал производительность.
В одном варианте осуществления, указанные преимущества получены, по меньшей мере, частично посредством выполнения компоновки 10 схем обработки так, что она является архитектурно совместимой с компоновкой 50 схем обработки. Это обеспечивает возможность перемещения рабочей нагрузки с одной компоновки схем обработки на другую при обеспечении правильного функционирования. В качестве абсолютного минимума, указанная архитектурная совместимость требует совместного использования обеими схемами 10 и 50 обработки идентичной архитектуры набора команд. Однако, в одном варианте осуществления, указанная архитектурная совместимость также влечет за собой более высокие требования к совместимости для обеспечения того, что эти два экземпляра схем обработки воспринимаются программистом как идентичные. В одном варианте осуществления, это подразумевает использование идентичных регистров архитектуры и одного или нескольких специальных регистров, в которых хранятся данные, используемые операционной системой во время исполнения приложений. С указанным уровнем совместимости архитектуры, возможно маскирование от операционной системы 115 переноса рабочей нагрузки между схемами обработки, так что операционной системе абсолютно не известно то, исполняется ли рабочая нагрузка на компоновке 10 схем обработки или на компоновке 50 схем обработки.
В одном варианте осуществления, обслуживанием переноса с одной схемы обработки на другую управляет дискретный контроллер 120, изображенный на фиг. 2 (также называемый там виртуализатором, а в других местах этого описания - контроллером переноса рабочей нагрузки). Дискретный контроллер может быть осуществлен комбинацией аппаратных, программно-аппаратных и/или программных компонентов, но в одном варианте осуществления включает в себя программное обеспечение, аналогичное по своему характеру программному обеспечению гипервизора, которое обеспечивается в виртуальных машинах, для обеспечения возможности исполнения приложений, написанных в пределах одного набора собственных команд, на аппаратной платформе, на которой внедрен другой набор собственных команд. Вследствие архитектурной совместимости между двумя схемами 10, 50 обработки, дискретный контроллер 120 может маскировать перенос от операционной системы 115 только посредством маскирования одного или нескольких элементов предопределенной конкретной для процессора информации о конфигурации от операционной системы. Например, конкретная для процессора информация о конфигурации может включать в себя части содержимого регистра ID процессора CP15 и регистра типа кэша CP15.
В указанном варианте осуществления, дискретному контроллеру тогда только необходимо обеспечить возможность того, что текущее состояние архитектуры, фиксируемое исходной схемой обработки в момент переноса, и которое не является (состоянием) в момент, когда перенос инициируется уже как доступный из совместно используемой памяти 80, является доступным для целевой схемы обработки, чтобы обеспечить возможность этой целевой схеме успешно принять на себя выполнение рабочей нагрузки. С использованием ранее описанного примера, указанное состояние архитектуры обычно содержит текущие значения, сохраненные в архитектурном регистровом файле исходной компоновки схем обработки, вместе с текущими значениями одного или нескольких специальных регистров исходной компоновки схем обработки. Вследствие архитектурной совместимости схем 10, 50 обработки, если это текущее состояние архитектуры может быть перенесено из исходной схемы обработки в целевую схему обработки, то целевая схема обработки может успешно принять на себя выполнение рабочей нагрузки из исходной схемы обработки.
В то время как архитектурная совместимость схем 10, 50 обработки способствует переносу всей рабочей нагрузки между этими двумя схемами обработки, в одном варианте осуществления схемы 10, 50 обработки отличаются друг от друга с точки зрения микроархитектуры, так что существуют различные характеристики производительности и, следовательно, характеристики потребления энергии, ассоциированные с этими двумя схемами обработки. Как обсуждалось ранее, в одном варианте осуществления, схема 10 обработки является высокопроизводительной схемой обработки с высоким потреблением энергии, в то время как схема 50 обработки является схемой обработки с меньшей производительностью и с меньшим потреблением энергии. Эти две схемы обработки могут отличаться друг от друга с точки зрения микроархитектуры во многих отношениях, но обычно имеют, по меньшей мере, одно из разных длин исполнительного конвейера и/или разных исполнительных ресурсов. Различия в длине конвейера обычно в результате приводят к различиям в рабочей частоте, которые, в свою очередь, оказывают влияние на производительность. Аналогично, различия в исполнительных ресурсах оказывают влияние на пропускную способность и, следовательно, на производительность. Следовательно, например, компоновка 10 схем обработки может иметь более значительные исполнительные ресурсы и/или больше исполнительных ресурсов, чтобы повысить пропускную способность. Кроме того, конвейеры в ядрах 15, 20 процессора могут быть выполнены с возможностью суперскалярной обработки с переупорядочением последовательности команд, в то время как более простое ядро 55 в схеме 50 обработки с эффективным использованием энергии может быть выполнено в виде конвейера с последовательностью исполнения команд по порядку. Дальнейшее обсуждение микроархитектурных различий обеспечено ниже со ссылкой на фиг. 8A и фиг. 8B.
Генерация управляющего воздействия для переноса, чтобы вызвать инициирование дискретным контроллером 120 операции передачи обслуживания для переноса рабочей нагрузки с одной схемы обработки на другую, может быть запущена по множеству причин. Например, в одном варианте осуществления, может быть задан профиль приложений, и они могут быть помечены как "большой", "маленький" или "большой/маленький", в результате чего операционная система может служить интерфейсом с дискретным контроллером для перемещения рабочей нагрузки соответственно. Следовательно, при таком подходе, генерация управляющего воздействия для переноса может отображаться в конкретные комбинации исполняемых приложений для обеспечения того, что когда требуется высокая производительность, рабочая нагрузка исполняется на высокопроизводительной схеме 10 обработки, тогда как, когда такая производительность не требуется, вместо нее используется схема 50 обработки с эффективным использованием энергии. В одном варианте осуществления, могут исполняться алгоритмы для динамического определения того, когда запускать перенос рабочей нагрузки с одной схемы обработки на другую, на основе одного или нескольких входных значений. Например, могут быть установлены счетчики производительности для подсчета событий, чувствительных к производительности (например, количество исполнимых команд или количество операций загрузки/сохранения). По сравнению со счетчиком циклов или системным таймером, это обеспечивает возможность идентификации того, что исполняется приложение, требующее очень большой вычислительной мощности, которое может лучше обслуживаться при переключении на компоновку схем обработки с большей производительностью, или идентификации большого количества операций загрузки/сохранения, указывающие на приложение, требующее производительности IO (ввода/вывода), которые могут лучше обслуживаться на компоновке схем обработки с эффективным использованием энергии, и т.д.
В качестве еще одного примера того, когда может генерироваться управляющее воздействие для переноса, система обработки данных может включать в себя один или несколько термочувствительных датчиков 90 для текущего контроля температуры этой системы обработки данных во время функционирования. Это может быть в случае, когда современные высокопроизводительные схемы обработки, например, функционирующие с частотами (измеряемыми в гигагерцах) (ГГц), иногда приближаются к пределам по нагреву, для функционирования в которых они предназначены, или превышают их. С использованием указанных термочувствительных датчиков 90, можно обнаруживать приближение к указанным пределам по нагреву, и в этих условиях может генерироваться управляющее воздействие для переноса для запуска переноса рабочей нагрузки на схему обработки с более эффективным использованием энергии, чтобы вызвать полное охлаждение системы обработки данных. Следовательно, при рассмотрении примера по фиг. 1, в котором схема 10 обработки является высокопроизводительной схемой обработки, а схема 50 обработки является схемой обработки с меньшей производительностью, потребляющей меньше энергии, перемещение рабочей нагрузки из схема 10 обработки на схему 50 обработки при приближении к пределам по нагреву устройства вызывает последующее охлаждение этого устройства, наряду с обеспечением возможности продолжения исполнения программ, хотя и с меньшей пропускной способностью.
Несмотря на то, что на фиг. 1 представлены две схемы 10, 50 обработки, очевидно, что способы вышеописанных вариантов осуществления также могут быть применены к системам, содержащим более двух разных схем обработки, с обеспечением возможности охвата системой обработки данных большего диапазона уровней энергии/производительности. В указанных вариантах осуществления, все упомянутые разные схемы обработки выполнены архитектурно совместимыми друг с другом для обеспечения возможности быстрого перемещения всей рабочей нагрузки между этими схемами обработки, но они отличается друг от друга с точки зрения микроархитектуры для обеспечения возможности выбора использования этих схем обработки в зависимости от требуемых уровней энергии/производительности.
Фиг. 3 является схемой последовательности операций, иллюстрирующей последовательность шагов, выполняемых как на исходном процессоре, так и на целевом процессоре при переносе рабочей нагрузки из исходного процессора на целевой процессор после приема управляющего воздействия. Такое управляющее воздействие для переноса может генерироваться операционной системой 115 или виртуализатором 120 через системный программно-аппаратный интерфейс, что в результате приводит к обнаружению переключательного управляющего воздействия на шаге 200 исходным процессором (который выполняет не только рабочую нагрузку, но также и программное обеспечение виртуализатора, формирующее, по меньшей мере, часть дискретного контроллера 120). Прием управляющего воздействия для переноса (в этом описании также называемого переключательным управляющим воздействием) на шаге 200 вызывает инициирование контроллером 65 управления питанием операции 205 включения питания и сброса на целевом процессоре. После указанного включения питания и сброса, на шаге 210 целевой процессор объявляет недействительным свой локальный кэш и далее на шаге 215 обеспечивает возможность просмотра. В этот момент, целевой процессор подает сигнал в исходный процессор о том, что он готов для переноса рабочей нагрузки, при этом этот сигнал вызывает исполнение исходным процессором операции сохранения состояния на шаге 225. Эта операция сохранения состояния более подробно обсуждается ниже со ссылкой на фиг. 4A, но в одном варианте осуществления подразумевает, что исходная компоновка схем обработки сохраняет в своем локальном кэше свое любое текущее состояние, которое не является доступным из совместно используемой памяти во время инициирования операции передачи обслуживания, и которое является необходимым для того, чтобы целевой процессор успешно принял на себя выполнение рабочей нагрузки.
После операции 225 сохранения состояния, в целевой процессор выдается сигнал переключения состояния 230, указывающий целевому процессору на то, что он должен в данный момент начать просмотр исходного процессора для извлечения требуемого состояния архитектуры. Этот процесс происходит посредством операции 230 восстановления состояния, которая более подробно обсуждается ниже со ссылкой на фиг. 4B, но которая в одном варианте осуществления подразумевает, что целевая компоновка схем обработки инициирует последовательность доступов, которые перехватываются блоком 75 управления просмотром в пределах межсоединения 70, и которая вызывает извлечение кэшированной копии состояния архитектуры в локальном кэше исходного процессора и возвращения ее в целевой процессор.
После шага 230, целевой процессор может принять на себя обработку рабочей нагрузки, и, соответственно, на шаге 235 начинается обычное функционирование.
В одном варианте осуществления, после начала обычного функционирования в целевом процессоре, кэш исходного процессора может быть очищен, как указано на шаге 250, со сбросом всех измененных данных в совместно используемую память 80, и после этого питание исходного процессора может быть выключено на шаге 255. Однако, в одном варианте осуществления, для дополнительного повышения эффективности целевого процессора, исходный процессор выполнен с возможностью оставаться включенным в течение некоторого периода времени, на фиг. 3 обозначенного как период просмотра. В течение этого времени, по меньшей мере, один из кэшей исходной схемы остается включенным, так что его части содержимого могут просматриваться схемой 75 управления просмотром в ответ на запрос на доступ, выдаваемый целевым процессором. После переноса всей рабочей нагрузки с использованием процесса, описанного на фиг. 3, предполагается, что, по меньшей мере, в начальный период времени, после которого целевой процессор начнет оперативное управление рабочей нагрузкой, некоторые данные, требуемые во время выполнения рабочей нагрузки, остаются в кэше исходного процессора. Если исходный процессор сбросил части своего содержимого в память, и его питание выключено, то целевой процессор на этих ранних этапах будет функционировать относительно неэффективно, так как будет много промахов кэша в его локальном кэше, и много выборок данных из совместно используемой памяти, что в результате существенно повлияет на производительность во время "разогрева" кэша целевого процессора, т.е. заполнения значениями данных, требуемых схеме целевого процессора для выполнения операций, задаваемых рабочей нагрузкой. Однако, в результате того, что кэш исходного процессора остается включенным в течение периода просмотра, схема 75 управления просмотром может обслуживать множество этих запросов промаха кэша со ссылкой на кэш исходной схемы, что дает существенные преимущества по производительности по сравнению с извлечением этих данных из совместно используемой памяти 80.
Однако, как предполагается, что это преимущество по производительности длится только в течение определенного периода времени после переключения, после которого содержимое кэша исходного процессора становится устаревшим. Соответственно, в некоторый момент времени, на шаге 245, генерируется событие прекращения просмотра для блокировки просмотра, после чего, на шаге 250, очищается кэш исходного процессора, и после этого, на шаге 255, питание исходного процессора выключается. Различные сценарии, по которым может генерироваться событие прекращения просмотра, более подробно обсуждаются ниже со ссылкой на фиг. 6G.
На фиг. 4A схематически изображена операция сохранения, выполняемая на шаге 225 по фиг. 3, в соответствии с одним вариантом осуществления. В частности, в одном варианте осуществления, состояние архитектуры, которое должно быть сохранено из исходной компоновки 300 схем обработки в локальном кэше 330, состоит из частей содержимого регистрового файла 310, к которому обращается арифметико-логическое устройство 305 (ALU, АЛУ) во время выполнения операций обработки данных, а также частей содержимого различных специальных регистров 320, идентифицирующих различные порции информации, требуемые рабочей нагрузкой для обеспечения возможности целевой схеме обработки успешно принять на себя эту рабочую нагрузку. Части содержимого специальных регистров 320 включают в себя, например, значение счетчика команд, идентифицирующего текущую исполняемую команду, а также различную другую информацию. Например, другие специальные регистры включают в себя регистры состояния процессора (например, CPSR и SPSR в архитектуре ARM), которые содержат в себе управляющие биты для режима процессора, маскирования прерываний, рабочего состояния и флагов. Другие специальные регистры включают в себя архитектурный надзор (регистр управления системой CP15 в архитектуре ARM), который содержит биты для изменения порядка следования байтов данных, включения или выключения MMU, включения или выключения кэшей данных/команд и т.д. В других специальных регистрах в CP15 хранится информация о состоянии и адресе исключения.
Как схематически изображено на фиг. 4A, исходная схема 300 обработки также обычно содержит некоторую конкретную для процессора информацию 315 о конфигурации, но эту информацию не требуется сохранять в кэше 330, так как она не относится к целевой схеме обработки. Конкретная для процессора информация 315 о конфигурации обычно является жестко закодированной в исходной схеме 300 обработки с использованием логических констант, и может включать в себя, например, регистр ID процессора CP15 (который отличается для каждой схемы обработки) или части содержимого регистра типа кэша CP15 (который зависит от конфигурации кэшей 25, 30, 60, например, с указанием того, что эти кэши имеют разную длину строки). Когда операционная система 115 требует порцию конкретной для процессора информации 315 о конфигурации, то, если только процессор уже не находится в режиме гипервизора, происходит системное прерывание исполнения (и переход) в режим гипервизора. В ответ, виртуализатор 120 в одном варианте осуществления может включать в себя значение требуемой информации, а в другом варианте осуществления возвращает "виртуальное" значение. В случае значения ID процессора, это виртуальное значение может выбираться идентичным как для "большого", так и для "маленького" процессоров, тем самым вызывая сокрытие фактической конфигурации аппаратного обеспечения от операционной системы 115 посредством виртуализатора 120.
Как схематически изображено на фиг. 4A, во время операции сохранения, части содержимого регистрового файла 310 специальных регистров 320 сохраняются исходной компоновкой схем обработки в кэше 330 для формирования кэшированной копии. Эта кэшированная копия после этого помечается как совместно используемая, что обеспечивает возможность просмотра этого состояния целевым процессором посредством блока 75 управления просмотром.
Операция восстановления, впоследствии выполняемая на целевом процессоре, схематически изображена на фиг. 4B. В частности, целевая компоновка 350 схем обработки, в которой может существовать или отсутствовать свой собственный локальный кэш, выдает запрос на конкретный элемент состояния архитектуры, причем этот запрос перехватывается блоком 75 управления просмотром. Блок управления просмотром после этого выдает запрос на просмотр в локальный кэш 330 исходной схемы обработки для определения того, существует ли этот элемент состояния архитектуры в кэше этого источника. Вследствие шагов, выполняемых во время операции сохранения, изображенной на фиг. 4A, будет обнаружено "попадание" в кэше 330 источника, что в результате приводит к возвращению этого кэшированного состояния архитектуры посредством блока 75 управления просмотром в целевую схему 350 обработки. Этот процесс может повторяться итеративно до тех пор, пока все элементы состояния архитектуры не будут извлечены посредством просмотра кэша исходной схемы обработки. Как ранее обсуждалось, любая конкретная для процессора информация о конфигурации, относящаяся к целевой схеме 350 обработки, обычно является жестко закодированной в этой целевой схеме 350 обработки. Соответственно, после завершения операции восстановления, в целевой компоновке схем обработки существует вся информация, требуемая для обеспечения ей возможности успешно принять на себя обслуживание рабочей нагрузки.
Кроме того, в одном варианте осуществления, вне зависимости от того, выполняется ли рабочая нагрузка 100 "большой" схемой 10 обработки "маленькой" схемой 50 обработки, виртуализатор 120 предоставляет операционной системе 115 информацию о виртуальной конфигурации, содержащую идентичные значения, и поэтому различия в аппаратном обеспечении между "большой" и "маленькой" схемами 10, 50 обработки маскируются от операционной системы 115 виртуализатором 120. Это означает, что операционной системе 115 не известно о переносе выполнения рабочей нагрузки 100 на другую аппаратную платформу.
Согласно операциям сохранения и восстановления, описанным со ссылкой на фиг. 4A и фиг. 4B, различные экземпляры 10, 50 процессоров выполнены с когерентностью аппаратных кэшей друг другу для сокращения количества времени, энергии и сложности аппаратного обеспечения, связанных с переносом состояния архитектуры с исходного процессора на целевой процессор. В упомянутом способе используется локальный кэш исходного процессора для сохранения всего состояния, которое должно быть перенесено с исходного процессора на целевой процессор, и которое не является доступным из совместно используемой памяти во время выполнения операции переноса. Так как упомянутое состояние помечается как совместно используемое в пределах кэша исходного процессора, это обеспечивает возможность целевому процессору с когерентным аппаратным кэшем просматривать это состояние в течение операции переноса. С использованием такого способа можно переносить упомянутое состояние между экземплярами процессоров без необходимости сохранения этого состояния в основной памяти или в запоминающем элементе, отображенном в локальную память. Это, следовательно, дает существенные преимущества по производительности и потреблению энергии с увеличением множества ситуаций, в которых целесообразно переключать рабочую нагрузку с целью реализации преимуществ по потреблению энергии.
Однако, несмотря на то, что вышеописанный способ использования когерентности кэша обеспечивает один ускоренный механизм предоставления текущего состояния архитектуры целевому процессору без передачи текущего состояния архитектуры через совместно используемую память, он не является единственным способом, которым такой ускоренный механизм может быть реализован. Например, на фиг. 5 изображен альтернативный механизм, в котором обеспечивается выделенная шина 380 между исходной компоновкой 300 схем обработки и целевой компоновкой 350 схем обработки для обеспечения возможности переноса состояния архитектуры во время операции передачи обслуживания. Следовательно, в таких вариантах осуществления, операции 225, 230 сохранения и восстановления по фиг. 3 заменяются альтернативным механизмом переноса с использованием выделенной шины 380. Несмотря на то, что при таком подходе обычно существуют большие затраты на аппаратное обеспечение, чем при подходе когерентности кэша (причем подход когерентности кэша, обычно использует аппаратное обеспечение уже установленное в системе обработки данных), он обеспечивает еще более быстрый способ выполнения переноса, от которого можно получить преимущества в определенных реализациях.
На фиг. 6A-6I изображена последовательность шагов, которые выполняются для выполнения переноса рабочей нагрузки из исходной компоновки 300 схем обработки в целевую компоновку 350 схем обработки. Исходная компоновка 300 схем обработки является той из схем 10, 50 обработки, которая выполняет рабочую нагрузку до переноса, при этом целевая компоновка схем обработки является другой из схем 10, 50 обработки.
На фиг. 6A представлена система в начальном состоянии, в котором исходная компоновка 300 схем обработки снабжается энергией контроллером 65 управления питанием и выполняет рабочую нагрузку 100 по обработке, в то время как целевая компоновка 350 схем обработки находится в режиме экономии энергии. В этом варианте осуществления, режим экономии энергии является режимом с отключением питания, но, как упомянуто выше, также могут быть использованы другие типы режима экономии энергии. Рабочая нагрузка 100, включающая в себя приложения 105, 110 и операционную систему 115 для выполнения приложений 105, 110, абстрагируется от аппаратной платформы исходной компоновки 300 схем обработки посредством виртуализатора 120. Во время выполнения рабочей нагрузки 100, исходная компоновка 300 схем обработки поддерживает состояние 400 архитектуры, которое может содержать, например, части содержимого регистрового файла 310 и специальных регистров 320, как изображено на фиг. 4A.
На фиг. 6B виртуализатор 120 обнаруживает управляющее воздействие 430 для переноса. Несмотря на то, что на фиг. 6B управляющее воздействие 430 для переноса представлено как внешнее событие (например, обнаружение ухода нагрева термочувствительным датчиком 90), управляющее воздействие 430 также может являться событием, запускаемым самим виртуализатором 120 или операционной системой 115 (например, операционная система 115 может быть сконфигурирована для сообщения виртуализатору 120 о том, когда должен обрабатываться конкретный тип приложения). В ответ на управляющее воздействие 430 виртуализатор 120 осуществляет управление контроллером 65 управления питанием для подачи питания в целевую компоновку 350 схем обработки для перевода ее в состояние с включенным питанием.
На фиг. 6C целевая компоновка 350 схем обработки начинает исполнение виртуализатора 120. Виртуализатор 120 осуществляет управление целевой компоновкой 350 схем обработки для объявления своего кэша 420 недействительным для предотвращения ошибок при обработке, вызываемых ошибочными значениями данных, которые могут существовать в кэше 420 при включении целевой компоновки 350 схем обработки., в то время как целевой кэш 420 объявляется недействительным, исходная компоновка 350 схем обработки продолжает выполнять рабочую нагрузку 100. Когда объявление целевого кэша 420 недействительным завершается, виртуализатор 120 осуществляет управление целевой компоновкой 350 схем обработки для подачи сигнала в исходную компоновку 300 схем обработки о том, что оно готово для передачи обслуживания рабочей нагрузки 100. С продолжением обработки рабочей нагрузки 100 на исходной компоновке 300 схем обработки до тех пор, пока целевая компоновка 350 схем обработки не будет готова к операции передачи обслуживания, влияние на производительность передачи обслуживания может быть сокращено.
На следующем этапе, представленном на фиг. 6D, исходная компоновка 300 схем обработки прекращает выполнение рабочей нагрузки 100. В течение этого этапа, ни исходная компоновка 300 схем обработки, ни целевая компоновка 350 схем обработки не выполняет рабочую нагрузку 100. Из исходной компоновки 300 схем обработки в целевую компоновку 350 схем обработки переносится копия состояния 400 архитектуры. Например, состояние 400 архитектуры может быть сохранено в исходном кэше 410 и восстановлено в целевой компоновке 350 схем обработки, как представлено на фиг. 4A и фиг. 4B, или может быть перенесено по выделенной шине, как представлено на фиг. 5. Состояние 400 архитектуры содержит всю информацию, требуемую для выполнения рабочей нагрузки 100 целевой компоновкой 350 схем обработки, за исключением информации, которая уже существует в совместно используемой памяти 80.
После переноса состояния 400 архитектуры в целевую компоновку 350 схем обработки, исходная компоновка 300 схем обработки переводится в состояние экономии энергии компоновкой 65 схем управления питанием (см. Фиг. 6E), за исключением того, что исходный кэш 410 продолжает снабжаться энергией. При этом целевая компоновка 350 схем обработки начинает выполнение рабочей нагрузки 100 с использованием перенесенного состояния 400 архитектуры.
Когда целевая компоновка 350 схем обработки начинает обработку рабочей нагрузки 100, начинается период просмотра (см. фиг. 6F). В течение периода просмотра, блок 75 управления просмотром может просматривать данные, сохраняемые в исходном кэше 410 и извлекать эти данные для целевой компоновки 350 схем обработки. Когда целевая компоновка 350 схем обработки запрашивает данные, которые отсутствуют в целевом кэше 420, эта целевая компоновка 350 схем обработки запрашивает данные у блока 75 управления просмотром. После этого блок 75 управления просмотром просматривает исходный кэш 410, и если результатом этого просмотра является кэш-попадание, то блок 75 управления просмотром извлекает эти данные, выявленные в результате просмотра, из исходного кэша 410 и возвращает их в целевую компоновку 350 схем обработки, в которой эти данные, выявленные в результате просмотра, могут быть сохранены в целевом кэше 420. Напротив, если результатом этого просмотра является промах кэша в исходном кэше 410, то запрашиваемые данные выбираются из совместно используемой памяти 80 и возвращаются в целевую компоновку 350 схем обработки. Так как доступы к данным в исходном кэше 410 осуществляются быстрее и требует меньше энергии, чем доступы к совместно используемой памяти 80, то просмотр исходного кэша 410 за некоторый период повышает производительность обработки и сокращает потребление энергии в течение начального периода после передачи обслуживания рабочей нагрузки 100 в целевую компоновку 350 схем обработки.
На шаге, представленном на фиг. 6G, блок 75 управления просмотром обнаруживает событие прекращения просмотра, которое указывает на то, что поддержание исходного кэша 410 в состоянии с включенным питанием больше не является целесообразным. Событие прекращения просмотра вызывает окончание периода просмотра. Событие прекращения просмотра может быть любым из набора событий прекращения просмотра, контролируемых компоновкой 75 схем управления просмотром. Например, набор событий прекращения просмотра может включать в себя любое одно или большее количество из следующих событий:
a) когда доля в процентах или доля попаданий при просмотре, которые в результате приводят к кэш-попаданиям в исходном кэше 410, (т.е. количество, пропорциональное "количество попаданий при просмотре"/"общее количество просмотров") падает ниже предопределенного порогового уровня после начала выполнения рабочей нагрузки 100 целевой компоновкой 350 схем обработки, b) когда количество транзакций или количество транзакций предопределенного типа (например, кэшируемых транзакций), выполненных с момента, когда целевая компоновка 350 схем обработки начала выполнение рабочей нагрузки 100, превысит предопределенный порог,
c) когда количество циклов обработки, прошедших с момента, когда целевая компоновка 350 схем обработки начала выполнение рабочей нагрузки 100, превысит предопределенный порог,
d) когда к конкретной области совместно используемой памяти 80 осуществлен доступ в первый раз с момента, когда целевая компоновка 350 схем обработки начала выполнение рабочей нагрузки 100,
e) когда к конкретной области совместно используемой памяти 80, к которой осуществлялся доступ в течение начального периода после того, когда целевая компоновка 350 схем обработки начала выполнение рабочей нагрузки 100, не осуществляется доступ в течение предопределенного количества циклов или предопределенного периода времени,
f) когда целевая компоновка 350 схем обработки записывает в предопределенную ячейку памяти в первый раз с момента начала выполнения перенесенной рабочей нагрузки 100.
Эти события прекращения просмотра могут быть определены с использованием программируемых счетчиков в когерентном межсоединении 70, которое включает в себя блок 75 управления просмотром. В набор событий прекращения просмотра также могут быть включены другие типы события прекращения просмотра.
При обнаружении события прекращения просмотра, блок 75 управления просмотром отправляет сигнал 440 прекращения просмотра в исходный процессор 300. Блок 75 управления просмотром прекращает просмотр исходного кэша 410 и с этого момента и далее в ответ на запросы на доступ к данным из целевой компоновки 350 схем обработки осуществляет выборку запрашиваемых данных из совместно используемой памяти 80 и возвращает выбранные данные в целевую компоновку 350 схем обработки, в которой выбранные данные могут быть помещены в кэш.
На фиг. 6H, схема управления исходного кэша в ответ на сигнал 440 прекращения просмотра очищает кэш 410 для сохранения в совместно используемой памяти 80 всех действительных и измененных значений данных (то есть кэшируемое значение которых является более новым, чем соответствующее значение в совместно используемой памяти 80).
На фиг. 6I, питание исходного кэша 410 после этого выключается контроллером 65 управления питанием для полного перевода исходной компоновки 300 схем обработки в состояние экономии энергии. Целевая компоновка 350 схем обработки продолжает выполнять рабочую нагрузку 100. С точки зрения операционной системы 115, текущая ситуация является идентичной ситуации по фиг. 6A. Операционной системе 115 не известно, что исполнение рабочей нагрузки перенесено из одной схемы обработки на другую схему обработки. Когда осуществляется еще одно управляющее воздействие для переноса, можно использовать идентичные шаги по фиг. 6A-6I для переключения выполнения рабочей нагрузки обратно в первый процессор (в этом случае та из схем 10, 50 обработки, которая была "исходной компоновкой схем обработки", станет "целевой компоновкой схем обработки" и наоборот).
В варианте осуществления по фиг. 6A-6I, независимое управление питанием для кэша 410 и исходной компоновки 300 схем обработки является доступным, чтобы питание исходной компоновки 300 схем обработки, за исключением исходного кэша 410, могло быть выключено после того, как целевая компоновки 350 схем обработки начнет выполнение рабочей нагрузки (см. фиг. 6E), в то время как только кэш 410 исходной компоновки 350 схем обработки остается в состоянии с включенным питанием (см. фиг. 6F-6H). Далее на фиг. 6I питание исходного кэша 410 выключается. Этот подход может быть полезным для экономии энергии, особенно тогда, когда исходная компоновка 300 схем обработки является "большой" схемой 10 обработки.
Однако также можно продолжать снабжать энергией всю компоновку 300 схем обработки в течение периода просмотра, и далее на фиг. 6I переводить исходную компоновку 300 схем обработки в целом в состояние экономии энергии, после окончания периода просмотра и очистки исходного кэша 410. Это может быть полезным в случае, когда исходный кэш 410 является глубоко встроенным в ядро исходного процессора, и не может снабжаться независимо от ядра исходного процессора. Этот подход также может являться более целесообразным, когда исходный процессор является "маленькой" схемой 50 обработки, потребление энергии которой является незначительным по сравнению с "большой" схемой 10 обработки, так как после того, как "большая" схема 10 обработки начнет обработку перенесенной рабочей нагрузки 100, то переключение "маленькой" схемы 50 обработки, отличной от кэша 60, в состояние экономии энергии в течение периода просмотра может незначительно влиять на общее потребление энергии системой. Это может означать, что дополнительная сложность аппаратного обеспечения при обеспечении отдельного управления питанием для "маленькой" схемы 50 обработки и кэша 60 "маленького" ядра может быть неоправданным.
В некоторых случаях, о том, что данные, сохраненные в исходном кэше 410, не потребуются целевой компоновке 350 схем обработки, когда она начнет выполнение рабочей нагрузки 100, может быть известно до переноса этой рабочей нагрузки. Например, исходная компоновка 300 схем обработки может только что завершить приложение, когда произойдет перенос, и, следовательно, данные, находящиеся в исходном кэше 410 во время переноса, относятся к завершенному приложению, а не к приложению, которое должно выполняться целевой компоновкой 350 схем обработки после переноса. В этом случае, контроллер отмены просмотра может запустить виртуализатор 120 и компоновку 75 схем управления просмотром для отмены просмотра исходного кэша 410 и для управления исходной схемой 300 обработки для очистки и выключения питания исходного кэша 410 без ожидания события прекращения просмотра для подачи сигнала окончания периода просмотра. В этом случае, способ по фиг. 6A-6I выполняет переход от шага по фиг. 6E сразу к шагу по фиг. 6G без шага по фиг. 6F, на котором данные просматриваются (и выбираются) из исходного кэша 410. Соответственно, если заранее известно, что данные в исходном кэше 410 не будут использоваться целевой компоновкой 350 схем обработки, то можно сэкономить энергию посредством перевода исходного кэша 410 и исходной компоновки 300 схем обработки в режим экономии энергии без ожидания события прекращения просмотра. Контроллер отмены просмотра может быть частью виртуализатора 120, или может быть реализован как программно-аппаратное обеспечение, исполняемое в компоновке 300 схем обработки. Контроллер отмены просмотра также может быть реализован как комбинация элементов, например, операционная система 115 может сообщать в виртуализатор 120 о том, когда заканчивается приложение, и виртуализатор 120 тогда может отменять просмотр исходного кэша 410, если перенос происходит тогда, когда приложение закончено.
Фиг. 7 является графиком, на котором линия 600 иллюстрирует то, как изменяется потребление энергии в зависимости от производительности. Для различных участков этого графика, система обработки данных может быть выполнена с возможностью использования разных комбинаций ядер 15, 20, 55 процессора, изображенных на фиг. 1, с целью получения подходящего оптимального соотношения между производительностью и потреблением энергии. Следовательно, например, когда должно исполняться множество очень высокопроизводительных задач, можно задействовать оба больших ядра 15, 20 схемы 10 обработки для достижения требуемой производительности. Дополнительно можно использовать способы изменения напряжения источника питания для обеспечения возможности некоторого изменения в производительности и потреблении энергии при использовании этих двух ядер.
Когда требования к производительности падают до уровня, на котором требуемая производительность может быть достигнута с использованием только одного из больших ядер, то задачи могут быть перемещены только на одно из больших ядер 15, 20, при этом питание другого ядра выключается, или оно переводится в некоторый другой режим экономии энергии. И опять же, можно использовать изменение напряжения источника питания для обеспечения возможности некоторого изменения между производительностью и потреблением энергии при использовании этого одного большого ядра. Следует отметить, что переход с двух больших ядер на одно большое ядро не требует генерации управляющего воздействия для переноса или использования вышеописанных способов переноса рабочей нагрузки, так как во всех случаях используется схема 10 обработки, а схема 50 обработки будет находиться в режиме экономии энергии. Однако, как указано пунктирной линией на фиг. 7, когда производительность падает до уровня, на котором посредством небольшого ядра может быть достигнута требуемая производительность, то может генерироваться управляющее воздействие для переноса, чтобы запустить ранее описанный механизм для переноса всей рабочей нагрузки из схемы 10 обработки на схему 50 обработки, так что вся рабочая нагрузка после этого выполняется на небольшом ядре 55, при этом схема 10 обработки переводится в режим экономии энергии. И опять же, можно использовать изменение напряжения источника питания для обеспечения возможности некоторого изменения в производительности и потреблении энергии небольшого ядра 55.
На фиг. 8A-8B соответственно изображены микроархитектурные различия между малопроизводительным процессорным конвейером 800 и высокопроизводительным процессорным конвейером 850 согласно одному варианту осуществления. Малопроизводительный процессорный конвейер 800 по фиг. 8A подходит для маленького ядра 55 обработки данных по фиг. 1, тогда как высокопроизводительный процессорный конвейер 850 по фиг. 8B подходит для больших ядер 15, 20.
Малопроизводительный процессорный конвейер 800 по фиг. 8A содержит этап 810 выборки для выборки команд из памяти 80, этап 820 декодирования для декодирования выбранных команд, этап 830 выдачи для выдачи команд на исполнение и множество конвейеров исполнения, включающих в себя целочисленный конвейер 840 для выполнения целочисленных операций, конвейер 842 MAC для выполнения операций умножения с накоплением и конвейер 844 SIMD/FPU для выполнения операций SIMD (один поток команд-много потоков данных) или операций с плавающей запятой. В малопроизводительном процессорном конвейере 800, на этапе 830 выдается одна команда за раз, и команды выдаются в порядке, в котором они выбираются.
Высокопроизводительный процессорный конвейер 850 по фиг. 8B содержит этап 860 выборки для выборки команд из памяти 80, этап 870 декодирования для декодирования выбранных команд, этап 875 переименования для переименования регистров, заданных в декодированных командах, этап диспетчеризации для диспетчеризации команд для исполнения и множество конвейеров исполнения, включающих в себя два целочисленных конвейера 890, 892, конвейер 894 MAC и два конвейера 896, 898 SIMD/FPU. В высокопроизводительном процессорном конвейере 850, этап 880 диспетчеризации является параллельным этапу выдачи, на котором может выдаваться множество команд в различные конвейеры 890, 892, 894, 896, 898 одновременно. На этапе 880 диспетчеризации команды также могут выдаваться с изменением порядка следования. В отличие от малопроизводительного процессорного конвейера 800, длина конвейеров 896, 898 SIMD/FPU может изменяться, это означает то, что можно управлять обработкой операций, выполняемых посредством конвейеров 896, 898 SIMD/FPU, для пропуска определенных этапов. Преимущество такого подхода состоит в том, что если все из множества конвейеров исполнения имеют разные ресурсы, то нет необходимости искусственно удлинять самый короткий конвейер для того, чтобы его длина стала идентичной длине самого длинного конвейера, а вместо этого требуется логика для того, чтобы справиться с беспорядочной сущностью результатов, выводимых разными конвейерами (например, заново все упорядочить, если произойдет исключительная ситуация при обработке).
Этап 875 переименования обеспечен для отображения спецификаторов регистра, которые включены в команды программы, и идентификации конкретных регистров архитектуры, если смотреть с точки зрения модели устройства программного управления, в физические регистры, которые являются фактическими регистрами аппаратной платформы. Этап 875 переименования обеспечивает возможность обеспечения микропроцессором большего пула физических регистров, чем существует с точки зрения модели устройства программного управления на микропроцессор. Этот больший пул физических регистров является полезным в течение исполнения с изменением порядка следования команд, так как он обеспечивает возможность избегать конвейерных конфликтов, например, конвейерных конфликтов запись-после-записи (WAW, посредством отображения одного регистра архитектуры, заданного в двух или нескольких разных командах, в два или несколько физических регистров, чтобы можно было параллельно исполнять разные команды. За более подробной информацией о способах переименования регистров читателю следует обратиться к заявке на патент США того же заявителя US 2008/114966 и патенту США 7590826.
Малопроизводительный конвейер 800 и высокопроизводительный конвейер 850 отличаются с точки зрения микроархитектуры по нескольким направлениям: Отличия с точки зрения микроархитектуры могут включать в себя:
a) то, что конвейеры содержат разные этапы. Например, высокопроизводительный конвейер содержит этап 875 переименования, который отсутствует в малопроизводительном конвейере 800.
b) то, что этапы конвейеров имеют разные возможности. Например, на этапе 830 выдачи малопроизводительного конвейера 800 команды могут выдаваться только по одной, тогда как на этапе 880 диспетчеризации высокопроизводительного конвейера 850 команды могут выдаваться параллельно. Параллельная выдача команд повышает пропускную способность обработки конвейера и, следовательно, повышает производительность.
c) то, что этапы конвейеров имеют разные длины. Например, этап 870 декодирования высокопроизводительного конвейера 850 может включать в себя три подэтапа, тогда как этап 820 декодирования малопроизводительного конвейера 800 может включать в себя один подэтап. Чем длиннее этап конвейера (большее количество подэтапов), тем больше количество команд, которые одновременно могут находиться "в полете" (в процессе обработки), и, соответственно, больше рабочая частота, с которой конвейер может функционировать, что в результате приводит к более высокому уровню производительности.
d) разное количество конвейеров исполнения (например, высокопроизводительный конвейер 850 содержит больше конвейеров исполнения, чем малопроизводительный конвейер 800). С обеспечением большего количества конвейеров исполнения, может быть обработано параллельно большее количество команд, и, соответственно, производительность увеличивается.
e) обеспечение исполнения команд по порядку (как в конвейере 800) или исполнения с изменением порядка следования команд (как в конвейере 850). Когда команды могут исполняться с изменением порядка следования, тогда производительность повышается, так как исполнение команд может планироваться динамически для оптимизации производительности. Например, в малопроизводительном конвейере 800 с последовательностью исполнения команд по порядку последовательность команд MAC должны быть исполнены конвейером 842 MAC поочередно до того, как одним из целочисленного конвейера 840 и конвейера 844 SIMD/с плавающей запятой может быть исполнена последующая команда. Напротив, в высокопроизводительном конвейере 850 команды MAC могут исполняться конвейером 894 MAC, в то время как (за исключением любых конвейерных конфликтов данных, которые не могут быть разрешены посредством переименования) последующая команда, использующая другой конвейер 890, 892, 896, 898 исполнения, может исполняться параллельно с командами MAC. Это означает, что исполнение с изменением порядка следования команд может повысить производительность обработки.
Эти и другие примеры отличия микроархитектур в результате приводят к тому, что конвейер 850 обеспечивает более высокую производительность обработки, чем конвейер 800. С другой стороны, упомянутые отличия микроархитектур также вызывают большее потребление энергии конвейером 850, чем конвейером 800. Соответственно, обеспечение конвейеров 800, 850 с разными микроархитектурами дает возможность оптимизировать обработку рабочей нагрузки либо для высокой производительности (посредством использования "большой" схемы 10 обработки, содержащей высокопроизводительный конвейер 850) или для эффективности использования энергии (посредством использования "маленькой" схемы 50 обработки, содержащей малопроизводительный конвейер 800).
На фиг. 9 изображен график, иллюстрирующий изменение потребления энергии системой обработки данных, когда выполнение рабочей нагрузки 100 переключается между большой схемой 10 обработки и маленькой схемой 50 обработки.
В точке A фиг. 9, рабочая нагрузка 100 выполняется на маленькой компоновке 50 схем обработки, и поэтому потребление энергии является низким. В точке B, осуществляется управляющее воздействие для переноса, указывающее на то, что должна выполняться обработка, требующая большой производительности, и поэтому выполнение рабочей нагрузки передается в большую компоновку 10 схем обработки. Тогда потребление энергии возрастает и остается высоким в точке C, пока большая компоновка 10 схем обработки выполняет упомянутую рабочую нагрузку. В точке D предполагается, что функционируют оба больших ядра в комбинации для обработки упомянутой рабочей нагрузки. Если, однако, требования к производительности падают до уровня, когда рабочая нагрузка может обслуживаться только одним из больших ядер, то рабочая нагрузка переносится только на одно из больших ядер, а питание другого выключается, как указано падением энергии до уровня, близкого к точке E. Однако в точке E осуществляется еще одно управляющее воздействие для переноса (указывающее на то, что требуется возврат к обработке, требующей малой производительности) для запуска переноса выполнения рабочей нагрузки обратно на маленькую компоновку 50 схем обработки.
Когда маленькая компоновка 50 схем обработки начинает обработку рабочей нагрузки по обработке, большая часть большой компоновки схем обработки находится в состоянии экономии энергии, но кэш большой компоновки 10 схем обработки продолжает снабжаться энергией в течение период просмотра (точка F на фиг. 9) для обеспечения возможности извлечения данных, находящихся в кэше, для маленькой компоновки 50 схем обработки. Следовательно, кэш большой компоновки 10 схем обработки вызывает большее потребление энергии в точке F, чем в точке A, в которой снабжается энергией только маленькая компоновка 50 схем обработки. В конце периода просмотра, питание кэша большой компоновки 10 схем обработки выключается, и в точке G потребление энергии возвращается на низкий уровень, когда только маленькая компоновка 50 схем обработки является активной.
Как упоминалось выше, на фиг. 9 в течение периода просмотра в тачке F энергии потребляется больше, чем в точке G, вследствие того, что в течение периода просмотра кэш большой компоновки схем обработки снабжается энергией. Несмотря на то, что увеличение потребления энергии указывается только после перехода большой-маленький, период просмотра также может существовать после перехода маленький-большой, в течение которого, данные, находящиеся в кэше маленькой компоновки 50 схем обработки, могут просматриваться для большой компоновки 10 схем обработки блоком 75 управления просмотром. Период просмотра для перехода маленький-большой не указан на фиг. 9, так как энергия, потребляемая в результате того, что кэш маленькой компоновки 50 схем обработки находится в состоянии с включенным питанием в течение периода просмотра, является незначительным по сравнению с энергией, потребляемой большой схемой 10 обработки при выполнении рабочей нагрузки по обработке, и поэтому очень маленькое увеличение потребления энергии вследствие снабжения энергией кэша маленькой компоновки 50 схем обработки не заметно на графике по фиг. 9.
В вышеописанных вариантах осуществления описывается система, содержащая два или несколько архитектурно совместимых экземпляра процессоров с микроархитектурами, оптимизированными по эффективности использования энергии или производительности. Состояние архитектуры, требуемое операционной системой и приложениями может переключаться между экземплярами процессоров, в зависимости от требуемого уровня энергии/производительности, для обеспечения возможности переключения всей рабочей нагрузки между экземплярами процессоров. В одном варианте осуществления, только один из экземпляров процессоров выполняет рабочую нагрузку в любой данный момент времени, при этом другой экземпляр (процессора) находится в режиме экономии энергии или в процессе перехода в режим экономии энергии/выхода из него.
В одном варианте осуществления, экземпляры процессоров могут быть выполнены в виде аппаратных кэшей, когерентных друг с другом, для сокращения количества времени, энергии и сложности аппаратного обеспечения, связанных с переключением состояния архитектуры с исходного процессора на целевой процессор. Это сокращает время выполнения операции переключения, что увеличивает возможности использования способов вариантов осуществления.
Такие системы могут быть использованы во многих ситуациях, в которых эффективность использования энергии является важной для времени работы батареи и/или управления нагревом, и диапазон производительности является таким, что процессор с более эффективным использованием энергии может использоваться для меньших рабочих нагрузок по обработке, в то время как более высокопроизводительный процессор может использоваться для больших рабочих нагрузок по обработке.
Так как упомянутые два или несколько экземпляров (процессоров) являются архитектурно совместимыми, то с точки зрения приложения единственным различием между двумя процессорами является имеющаяся в распоряжении производительность. Посредством способов одного варианта осуществления, все требуемое состояние архитектуры может перемещаться между процессорами без необходимости обращения к операционной системе, так что тогда то, на каком процессоре операционная система и приложения выполняются, является прозрачным для этой операционной системы и приложений, выполняющихся под ее управлением.
При использовании архитектурно совместимых экземпляров процессора, как описано в вышеупомянутых вариантах осуществления, общий объем состояние архитектуры, который должен быть перенесен, легко может поместиться в пределах кэша данных, и, так как в современных системах обработки данных часто реализуется когерентность кэша, то при сохранении состояния архитектуры, которое должно быть переключено, внутри кэша данных, целевой процессор может быстро просмотреть это состояние при эффективном использовании энергии с использованием структур существующих схем.
В одном варианте осуществления, используется механизм переключения для обеспечения пределов по нагреву, чтобы система обработки данных не была нарушена. В частности, при приближении к пределам по нагреву, вся рабочая нагрузка может быть переключена на процессор с более эффективным использованием энергии с обеспечением возможности охлаждения всей системы, в то время как продолжается исполнение программы, хотя и с более низкой пропускной способностью.
Несмотря на то, что в данном документе описывается конкретный вариант осуществления, очевидно, что изобретение не ограничивается им, и что может быть сделано множество его модификаций и дополнений к нему в рамках объема изобретения. Например, могут быть осуществлены различные комбинации признаков нижеследующих зависимых пунктов многозвенной формулы изобретения с признаками независимых пунктов формулы изобретения, не выходя за пределы объема настоящего изобретения.