Представление фильтрации наблюдения, ассоциированной с буфером данных
Иллюстрации
Показать всеИзобретение относится к области вычислительных систем. Техническим результатом является обеспечение соединения множества устройств с запоминающим устройством. Система на кристалле (SoC) для соединения множества устройств с запоминающим устройством содержит фабрикат для взаимного соединения множества агентов SoC, фабрикат, содержащий: буфер данных, включающий в себя множество входов, каждый из которых предназначен для сохранения данных, которые должны быть переданы в и из множества агентов и в и из запоминающего устройства, соединенного с SoC; и средство арбитража, предназначенное для обеспечения приема множества запросов запоминающего устройства, ассоциированных с данными в одном из множества входов, после того, как фабрикат сделал недействительными данные по меньшей мере в одном запоминающем устройстве кэша первого агента среди множества агентов. 8 з.п. ф-лы, 9 ил.
Реферат
Область техники, к которой относится изобретение
Настоящее изобретение относится к вычислительным системам, и в частности (но не исключительно) к таким системам, которые включают в себя коммутирующую матрицу для соединения множества устройств с запоминающим устройством.
Краткое описание чертежей
На фиг. 1 иллюстрируется вариант осуществления блок-схемы для вычислительной системы, включающей в себя многоядерный процессор.
На фиг. 2 показана блок-схема в виде на высоком уровне системы на кристалле (SoC) в соответствии с вариантом осуществления настоящего изобретения.
На фиг 3 показана блок-схема части коммутирующей матрицы (фабриката) совместно используемого запоминающего устройства в соответствии с вариантом осуществления настоящего изобретения.
На фиг. 4 показана блок-схема дополнительных деталей допуска арбитра в соответствии с вариантом осуществления настоящего изобретения.
На фиг. 5 показана блок-схема, представляющая дополнительные детали коммутирующей матрицы совместно используемого запоминающего устройства в соответствии с вариантом осуществления настоящего изобретения.
На фиг. 6 показана блок-схема последовательности операций способа в соответствии с вариантом осуществления настоящего изобретения.
На фиг. 7 показана блок-схема последовательности операций способа обработки входящих запросов запоминающего устройства, используя логику фильтра наблюдения в соответствии с вариантом осуществления настоящего изобретения.
На фиг. 8 показана блок-схема SoC в соответствии с вариантом осуществления настоящего изобретения.
На фиг. 9 показана блок-схема компонентов, присутствующих в вычислительной системе, в соответствии с вариантом осуществления настоящего изобретения.
Подробное описание изобретения
В следующем описании представлены различные конкретные детали, такие как примеры конкретных типов процессоров и конфигураций системы, конкретные структуры аппаратных средств, специфичные архитектурные и микроархитектурные детали, специфичные конфигурации регистра, конкретные типы инструкций, специфичные компоненты системы, специфичные результаты измерений/высоты, конкретные каскады конвейера процессора и операции и т.д., для предоставления полного понимания настоящего изобретения. Однако для специалиста в данной области техники следует понимать, что эти конкретные детали не обязательно должны использоваться на практике настоящего изобретения. В других случаях известные компоненты или способы, такие как конкретная и альтернативная архитектура процессора, конкретные логические схемы/код для описанных алгоритмов, конкретные коды встроенного программного обеспечения, конкретные операции взаимного соединения, конкретные логические конфигурации, конкретные технологии изготовления и материалы, конкретные варианты осуществления компилятора, конкретные выражения алгоритмов в коде, конкретные технологии отключения питания/логика стробирования и другие конкретные операционные детали вычислительной системы, не были подробно описаны для исключения ненужного усложнения настоящего изобретения.
Хотя следующие варианты осуществления могут быть описаны со ссылкой на сохранение энергии и эффективность потребления энергии в конкретных интегральных схемах, таких как вычислительные платформы или микропроцессоры, другие варианты осуществления применимы для других типов интегральных схем и логических устройств. Аналогичные технологии и описания представленных здесь вариантов осуществления могут применяться для других типов схем или полупроводниковых устройств, в которых также может обеспечиваться лучшая эффективность потребления энергии и сохранение энергии. Например, раскрытые варианты осуществления не ограничены настольными вычислительными системами или системой Ультрабук™. И также могут использоваться в других устройствах, таких как портативные устройства, планшеты, другие тонкие ноутбуки, устройства с системами на кристалле (SoC) и встраиваемыми приложениями. Некоторые примеры портативных устройств включают в себя сотовые телефоны, устройства, работающие с протоколом Интернета, цифровые камеры, карманные персональные компьютеры (PDA) и портативные ПК. Встраиваемые приложения обычно включают в себя микроконтроллер, цифровой сигнальный процессор (DSP), систему на микросхеме, сетевые компьютеры (NetPC), телевизионные приставки, сетевые концентраторы, переключатели глобальных вычислительных сетей (WAN) или любую другую систему, которая может выполнять функции и операции, описанные ниже. Кроме того, устройство, способы и системы, описанные здесь, не ограничены физическими вычислительными устройствами, но также могут относиться к программным оптимизациям для сохранения и эффективного использования энергии. Как будет понятно из представленного ниже описания, описанные здесь варианты осуществления способов, устройств и системы (как со ссылкой на аппаратные средства, встроенное программное обеспечение, на программное обеспечение или их комбинацию) являются применимыми для будущей "зеленой технологии", сбалансированной с обеспечением рабочих характеристик.
Помимо развития вычислительных систем их компоненты становятся все более сложными. В результате архитектура соединения для соединения и обеспечения обмена данными между компонентами также усложняется для обеспечения требований по полосе пропускания для оптимальной работы компонента. Кроме того, разные сегменты на рынке требуют применения различных аспектов архитектур взаимного соединения для удовлетворения потребностей рынка. Например, для серверов требуются более высокие рабочие характеристики, в то время как для мобильных экосистем иногда можно пожертвовать общими рабочими характеристиками в пользу сбережения энергии. Таким образом, исключительное назначение большинства коммутирующих матриц (фабрикатов) состоит в том, чтобы обеспечить наивысшие возможные рабочие характеристики при максимальной экономии энергии. Ниже описано множество взаимных соединений, которые потенциально могли бы получить пользу из описанного здесь изобретения.
На фиг. 1 представлен вариант осуществления блок-схемы вычислительной системы, включающей в себя многоядерный процессор. Процессор 100 включает в себя любой процессор или процессорное устройство, такое как микропроцессор, встроенный процессор, цифровой сигнальный процессор (DSP), сетевой процессор, портативный процессор, процессор приложения, копроцессор, систему на кристалле (SoC) или другое устройство для выполнения кода. Процессор 100 в одном варианте осуществления включает в себя по меньшей мере два ядра - 101 и 102, которые могут включать в себя асимметричные ядра или симметричные ядра (представленный вариант осуществления). Однако процессор 100 может включать в себя любое количество элементарных процессоров, которые могут быть симметричными или асимметричными.
В одном варианте осуществления элементарный процессор относится к аппаратным средствам или логическим устройствам для поддержки программного потока. Примеры аппаратных элементарных процессоров включают в себя: модуль потока обработки, гнездо потока обработки, обработку, модуль процесса, контекст, модуль контекста, логический процессор, аппаратный поток, ядро и/или любой другой элемент, который выполнен с возможностью поддержания состояния процессора, такого как состояние исполнения или архитектурное состояние. Другими словами, элемент процессора в одном варианте осуществления относится к любым аппаратным средствам, выполненным с возможностью независимого ассоциирования с кодом, таким как программный поток, рабочая система, приложение или другой код. Физический процессор (или гнездо процессора) обычно относится к интегральной схеме, которая потенциально включает в себя любое количество других процессоров обработки, таких как ядра или аппаратные потоки.
Ядро часто относится к логической схеме, расположенной на интегральной схеме, выполненной с возможностью поддержания независимого архитектурного состояния, в которой каждое независимо поддерживаемое архитектурное состояние ассоциировано по меньшей мере с некоторыми специализированными исполнительными ресурсами. В отличие от ядер, аппаратный поток обычно относится к любой логической схеме, расположенной на интегральной схеме, выполненной с возможностью поддержания независимого архитектурного состояния, в котором независимо поддерживаемые архитектурные состояния обеспечивают совместный доступ к исполнительным ресурсам. Как можно видеть, когда некоторые ресурсы совместно используются и другие предназначены для архитектурного состояния, линии между номенклатурой аппаратного потока и ядра обработки накладываются друг на друга. Также часто поток ядра и аппаратных средств рассматриваются операционной системой как индивидуальные логические процессоры, где операционная система выполнена с возможностью индивидуального планирования операций каждого логического процессора.
Физический процессор 100, как представлено на фиг. 1, включает в себя два ядра: ядра 101 и 102. Здесь ядра 101 и 102 рассматриваются как симметричные ядра, то есть ядра с одинаковыми конфигурациями, функциональными модулями и/или логикой. В другом варианте осуществления ядро 101 включает в себя нерабочее ядро процессора, в то время как ядро 102 включает в себя рабочее ядро процессора. Однако ядра 101 и 102 могут быть индивидуально выбраны из любого типа ядра, такого как собственное ядро, ядро программного управления, ядро, выполненное с возможностью исполнения собственной архитектуры системы инструкций (ISA), ядро, выполненное с возможностью исполнения транслируемой архитектуры набора инструкций (ISA), одновременно разработанное ядро или другое известное ядро. В гетерогенной среде ядра (то есть асимметричные ядра) некоторая форма трансляции, такая бинарная трансляция, может использоваться для планирования или исполнения кода в одном или обоих ядрах. Также, в следующем описании, функциональные модули, представленные в ядре 101, описаны более подробно ниже как модули в ядре 102, работающие аналогично представленному варианту осуществления.
Как представлено, ядро 101 включает в себя два аппаратных потока 101a и 101b, которые также могут называться как разъемами 101a и 101b аппаратных потоков. Поэтому программные объекты, такие как операционная система, в одном варианте осуществления потенциально рассматривают процессор 100 как четыре отдельных процессора, то есть четыре логических процессора или элементов обработки, выполненных с возможностью исполнения четырех программных потоков одновременно. Как упомянуто выше, первый поток ассоциирован с регистрами 101a состояния архитектуры, второй поток ассоциирован с регистрами 101b состояния архитектуры, третий поток может быть ассоциирован с регистрами 102a состояния архитектуры и четвертый поток может быть ассоциирован с регистрами 102b состояния архитектуры. Здесь каждый из регистров (101a, 101b, 102a, и 102b) состояния архитектуры может называться элементом обработки, гнездом потока или модулем потока, как описано выше. Как представлено, регистры 101a состояния архитектуры дублированы в регистрах 101b состояния архитектуры таким образом, что индивидуальные состояния/контексты архитектуры могут быть сохранены для логического процессора 101a и логического процессора 101b. В ядре 101 другие меньшие ресурсы, такие как указатели инструкций и логика изменения наименования в блоке 130 выделения и изменения наименования, также могут быть дублированы для потоков 101a и 101b. Некоторые ресурсы, такие как буферы изменения порядка в модуле 135 изменения порядка/вывода, I-TLB 120, буферы нагрузки и хранения, и очереди могут использоваться путем разделения их на части. Другие ресурсы, такие как внутренние регистры общего назначения, регистр (регистры) основания страницы - таблица, данные кэша низкого уровня и данные-TLB 115, модуль (модули) 140 исполнения и части неисправного модуля 135, потенциально полностью собственно используются.
Процессор 100 часто включает в себя другие ресурсы, которые могут полностью собственно использоваться путем собственного использования путем разделения на части или специализированного выделения элементами обработки или для элемента обработки. На фиг. 1 представлен вариант осуществления простого примерного процессора с иллюстративными логическими модулями/ресурсами процессора. Следует отметить, что процессор может включать в себя или исключать любой из этих функциональных модулей, а также может включать в себя любые другие известные функциональные модули, логическую схему или встроенное программное обеспечение, которое не представлено. Как показано выше, ядро 101 включает в себя упрощенное, представительное неисправное ядро (OOO) процессора. Но исправный процессор может использоваться в других вариантах осуществления. Ядро OOO включает в себя буфер 120 целей ответвления для прогнозирования ответвлений, которые могут быть выполнены/предприняты, и буфер (I-TLB) 120 трансляции инструкции для сохранения входа трансляции адресов для инструкций.
Ядро 101 дополнительно включает в себя модуль 125 декодирования, соединенный с модулем 120 выборки для декодирования выбранных элементов. Логическая схема выборки, в одном варианте осуществления, включает в себя индивидуальные последовательности, ассоциированные с гнездами 101a, 101b потока соответственно. Обычно ядро 101 ассоциировано с первой ISA, которая определяет/устанавливает инструкции, выполняемые в процессоре 100. Часто инструкции машинного кода, которые представляют собой часть первой ISA, включают в себя часть инструкции (называемую кодом операции), которая выполняет ссылку/устанавливает инструкцию или операцию для выполнения. Логическая схема 125 декодирования включает в себя схему, которая распознает эти инструкции по их кодам операций и передает декодируемые инструкции в конвейер для обработки, как определено первой ISA. Например, как более подробно описано ниже, декодеры 125 в одном варианте осуществления включают в себя логическую схему, разработанную или выполненную с возможностью распознавания конкретных инструкций, таких как инструкция транзакции. В результате распознавания декодерами 125 архитектура или ядро 101 предпринимают специфичные, заданные действия для выполнения задач, ассоциированных с соответствующей инструкцией. Важно отметить, что любая из задач, блоков, операций и способов, описанных здесь, может быть выполнена в ответ на одиночные или множественные инструкции; некоторые из которых могут быть новыми или старыми инструкциями. Следует отметить, что декодеры 126 в одном варианте осуществления распознают одну и ту же ISA (или их поднабор). В качестве альтернативы, в гетерогенной среде ядра декодеры 126 распознают вторую ISA (или поднабор первой ISA, или отдельную ISA).
В одном примере блок 130 выделения и изменения наименования включает в себя блок выделения для резервирования ресурсов, таких как файлы регистра, для сохранения результатов обработки инструкции. Однако потоки 101a и 101b потенциально могут выполнять обработку не по порядку, где блок 130 выделения и изменения наименования также резервирует другие ресурсы, такие как буферы изменения порядка, для наблюдения результатов инструкций. Блок 130 также может включать в себя блок изменения наименования регистра для изменения наименования регистров ссылки на программы/инструкции на другие регистры внутри процессора 100. Модуль 135 изменения порядка/вывода инструкции включает в себя компоненты, такие как упомянутые выше буферы изменения порядка, буфер загрузки и буфер сохранения, для поддержки и исполнения не по порядку и с последующим извлечением по порядку инструкции инструкций, исполняемых не по порядку.
Блок 140 модуля (модулей) планировщика и исполнения в одном варианте осуществления включает в себя модуль планировщика для планирования инструкции/операции модулей исполнения. Например, инструкция с плавающей точкой планирует для порта модуля исполнения, который имеет доступный модуль исполнения с плавающей точкой. Файлы регистра, ассоциированные с модулями исполнения, также включены для сохранения результатов обработки информационной инструкции. Примерные модули исполнения включают в себя модуль исполнения с плавающей точкой, модуль целочисленного исполнения, модуль исполнения с переходом, модуль исполнения нагрузки, модуль исполнения сохранения и другие известные модули исполнения.
Буфер 150 трансляции данных (D-TLB) также соединен с модулем (модулями) 140 исполнения и соединены со 140. Кэш данных предназначен для сохранения использовавшихся в последнее время/оперируемых данных для элементов, таких как операнды данных, которые потенциально поддерживаются в когерентных состояниях запоминающего устройства. D-TLB предназначен для сохранения последних виртуальных/линейных трансляций для физического адреса. В качестве конкретного примера процессор может включать в себя структуру таблицы страниц для разбиения физического запоминающего устройства на множество виртуальных страниц.
Здесь ядра 101 и 102 собственно используют доступ акции до более высокого уровня к внешнему кэшу, такому как второго уровня, ассоциированного с интерфейсом ПО на микросхеме. Следует отметить, что более высокий уровень или внешний уровень относится к уровням кэша, увеличивающих или отдаленных от модуля (модулей) исполнения. В одном варианте осуществления кэш более высокого уровня представляет собой кэш данных последнего уровня - последний кэш в иерархии запоминающего устройства в процессоре 100 - такой как кэш данных второго или третьего уровня. Однако кэш более высокого уровня не ограничен этим, поскольку он может быть ассоциирован с кэшем инструкции или может включать в себя кэш инструкции. Тип наблюдения - тип кэша - инструкции - вместо этого может быть подключен после декодера 125 для сохранения последних декодированных результатов наблюдения. Здесь инструкция потенциально относится к макроинструкции (то есть общей инструкции, распознанной декодерами), которая может быть декодирована на множество макроинструкций (микроопераций).
В представленной конфигурации процессор 100 также включает в себя модуль 110 интерфейса на микросхеме. Исторически контроллер запоминающего устройства, который описан более подробно ниже, был включен в вычислительную систему, которая является внешней для процессора 100. В этом сценарии интерфейс 11 на микросхеме должен сообщаться с устройствами, внешними для процессора 100, такими как оперативное запоминающее устройство 175, набор микросхем (часто включающий в себя концентратор контроллера запоминающего устройства для подключения к запоминающему устройству 175 и концентратор контроллера I/O для подключения периферийных устройств), концентратор контроллера запоминающего устройства, северный мост или другую интегральную схему. И в этом сценарии шина 105 может включать в себя любое известное взаимное соединение, такое как многоточечная шина, взаимное соединение из точки в точку, последовательное взаимное соединение, параллельная шина, когерентная (например, когерентный кэш) шина, архитектура многоуровневого протокола, дифференциальная шина и шина GTL.
Запоминающее устройство 175 может быть специализированным для процессора 100 или может собственно использоваться с другими устройствами в системе. Общие примеры типов запоминающего устройства 175 включают в себя DRAM, SRAM, энергонезависимое запоминающее устройство (запоминающее устройство NV) и другие известные устройства-накопители. Следует отметить, что устройство 180 может включать в себя графический ускоритель, процессор или карту, соединенную с концентратором контроллера запоминающего устройства, накопителем данных, соединенным с концентратором контроллера I/O, беспроводным приемопередатчиком, устройством запоминающего устройства типа флеш, аудиоконтроллером, сетевым контроллером или другим известным устройством.
В последнее время, однако, по мере того как все большее количество логических схем и устройств интегрируют на одном кристалле, таком как SoC, каждое из этих устройств может быть встроено в процессор 100. Например, в одном варианте осуществления концентратор контроллера запоминающего устройства находится в том же пакете и/или на кристалле с процессором 100. Здесь часть ядра 110 (участок на ядре) включает в себя один или больше контроллера (контроллеров), формирования интерфейса с другими устройствами, такими как запоминающее устройство 175 или графическое устройство 180. Конфигурация, включающая в себя взаимное соединение и контроллеры для формирования интерфейса с такими устройствами, часто называется конфигурацией на ядре (или конфигурацией вспомогательного устройства для ядра). В качестве примера интерфейс 110 на кристалле включает в себя кольцевое взаимное соединение для обмена данными на кристалле и высокоскоростное последовательное соединение 105 из точки в точку для обмена данными за пределами кристалла. Также в окружающей среде SoC даже большее количество устройств, таких как сетевой интерфейс, сопроцессоры, запоминающее устройство 175, графический процессор 180 и любые другие известные вычислительные устройства/интерфейсы, могут быть интегрированы на одном кристалле или интегральной схеме для обеспечения малого размера при высокой функциональности и малом потреблении энергии.
В одном варианте осуществления процессор 100 выполнен с возможностью исполнения кода оптимизации компилятора и/или ядра 177 транслятора, для компилирования, трансляции и/или оптимизации кода 176 программы, для поддержки устройства и способов, описанных здесь, или для формирования интерфейса с ними. Компилятор часто включает в себя программу или набор программ для трансляции текста/кода источника в целевой текст/код. Обычно компиляция программы/кода программы с компилятором выполняется на множестве фаз и переходов для преобразования кода языка высокого уровня программирования в низкоуровневый машинный код или код языка ассемблера. Также однопроходные компиляторы все еще могут использоваться для простых компиляций. Компилятор может использовать любые известные технологии компиляции и может выполнять любые известные операции компилятора, такие как лексический анализ, предварительная обработка, синтаксический анализ, семантический анализ, генерирование кода, преобразование кода и оптимизация кода.
Более крупные компиляторы часто включают в себя множество фаз, но чаще всего эти фазы включены в пределах двух общих фаз: (1) внешнее устройство, то есть, в общем случае, где может происходить синтаксическая обработка, семантическая обработка и некоторое преобразование/оптимизация; (2) внутренне устройство, то есть, в общем случае, где происходят анализ, преобразование, оптимизация и генерирования кода. Некоторые компиляторы относятся к среднему устройству, которое приводит к размыванию границ между внешним устройством и внутренним устройством компилятора. В результате ссылка на вставку, ассоциацию, генерирование или другую операцию компилятора может происходить на любой из упомянутых выше фаз или переходах, а также как и любые другие известные фазы или переходы компилятора. В качестве иллюстративного примера компилятор потенциально вставляет операции, вызовы, функции и т.д. в одну или больше фаз компиляции, таких как вставка вызовов/операций на фазе внешнего устройства или компиляция с последующим преобразованием вызовов/операций в виде кода более низкого уровня во время фазы преобразования. Следует отметить, что во время динамической компиляции код компилятора или динамический код оптимизации могут вставлять такие операции/вызовы, а также оптимизировать код для исполнения во время работы. В качестве конкретного иллюстративного примера двоичный код (уже компилированный код) может быть динамически оптимизирован во время работы. Здесь программный код может включать в себя код динамической оптимизации, двоичный код или их комбинацию.
Аналогично компилятору транслятор, такой как двоичный транслятор, транслирует код либо статически, либо динамически для оптимизации и/или трансляции кода. Поэтому ссылка на исполнение кода, кода приложения, программного кода или другой программной среды может относиться к: (1) исполнению программы (программ) компилятора, оптимизатора кода оптимизации или транслятора, либо динамически, либо статически для компиляции программного кода, для поддержания структуры программных средств, для выполнения других операций, оптимизации кода или для трансляции кода; (2) исполнению основного программного кода, включающего в себя операции/вызовы, такие как программный код, который был оптимизирован/компилирован; (3) исполнению другого программного кода, такого как библиотеки, ассоциированные с основным программным кодом, для поддержания программных структур, для выполнения других операций, относящихся к программным средствам, или для оптимизации кода; или (4) их комбинациям.
В разных вариантах осуществления процессор может быть сконфигурирован как система на кристалле (SoC). Такой SoC может использоваться в большом разнообразии вычислительных устройств от портативных вычислительных устройств с малым потреблением энергии, таких как смартфоны, планшетные компьютеры, Ультрабуки™ и т.д., до более традиционных вычислительных систем, таких как ноутбуки, настольные компьютеры, серверы и другие. В современных SoC обычно множество различных агентов присутствуют на одном полупроводниковом кристалле. Эти агенты включают в себя один или больше модулей вычисления. В варианте осуществления SoC может включать в себя множество центральных процессорных устройств (CPU), каждое из которых включает в себя одно или больше ядер, ассоциированные запоминающие устройства кэша, интерфейсы и т.д. Кроме того, SoC включает в себя другие агенты, такие как фабрикат когерентности, который взаимно соединяет агенты на кристалле и выполняет обработку когерентности. В некоторых вариантах осуществления такой фабрикат когерентности называется системным агентом, который непосредственно сформирован из различных составляющих компонентов, включающих в себя схему контроллера запоминающего устройства, схему совместно используемой памяти фабриката помимо других схем и логических схем. Термины "когерентный фабрикат", "фабрикат когерентности" и "системный агент" используются здесь взаимозаменяемо.
Индикатор наблюдения может быть ассоциирован с запросом запоминающего устройства для обозначения того, что запрос должен поддерживаться когерентно с агентами кэширования в системе, такими как центральные процессорные устройства (CPU). Агенты, не выполняющие кэширование SoC, могут вырабатывать запросы, наблюдения и без наблюдения запоминающего устройства. Когерентный фабрикат или другой агент используют протокол шины для разрешения права собственности наблюдаемого запроса запоминающего устройства по всем агентам кэширования. Эти протоколы когерентности могут принимать множество циклов обмена сообщениями для разрешения права собственности для линии кэша. Один алгоритм с низким потреблением энергии/области наблюдения работает для обработки одного когерентного запроса на адрес одновременно. При этом два или больше когерентных доступа к одному и тому же адресу (например, линии кэша) преобразуют в последовательную форму, что обеспечивает то, что права собственности будут ясно установлены для каждого когерентного запроса. Такое преобразование в последовательную форму, однако, может уменьшить рабочие характеристики и повысить потребляемую энергию из-за ненужного наблюдения. Другие варианты осуществления включают в себя инклюзивный фильтр наблюдения внутри фабриката когерентности для быстрого решения права собственности всех линий кэша в системе. Также для измерения стоимости собственности/электроэнергии в здании такой большой фильтр наблюдения может быть нежелательным для процессоров с малым потреблением энергии, таких как SoC.
Варианты осуществления обеспечивают алгоритм и микроархитектуру для обеспечения временного фильтра наблюдения с очень малыми затратами, используя структуру управления данными фабриката когерентности. Варианты осуществления могут быть оптимизированы для фильтрации наблюдения агентов, не выполняющих кэширование, которые вырабатывают множество одинаковых доступов к линии кэша близко по времени. В варианте осуществления в качестве части процесса конфигурации загрузки SoC обеспечение возможности и отключения возможности фильтра временного наблюдения представлено в выполненном с возможностью перезаписи регистре управления BIOS.
Далее, обращаясь к фиг. 2, можно видеть блок-схему вида высокого уровня SoC в соответствии с вариантом осуществления настоящего изобретения. Как показано на фиг. 2, SoC 200 включает в себя различные агенты и другие компоненты. С целью взаимного соединения различных агентов и обеспечения некоторых технологий управления системного уровня также предусмотрен когерентный фабрикат 210, называемый здесь системным агентом. Как будет более подробно описано ниже, системный агент 210 включает в себя логику фильтра временного наблюдения в соответствии с вариантом осуществления настоящего изобретения, а также различные другие компоненты, такие как очереди, буферы, средства наблюдения, логика управления и т.д.
Как можно видеть, когерентный фабрикат 210 действует как первичное взаимное соединение на микросхеме между множеством разных агентов и другими компонентами. На стороне вверх по потоку предусмотрено множество кэширующих агентов 2201-220n. Хотя объем настоящего изобретения не ограничен в этом отношении, такие кэширующие агенты могут соответствовать центральным процессорным устройствам (CPU), которые, в общем, включают в себя одно или больше ядер процессора и один или больше уровней памяти кэша. Таким образом, эти агенты представляют собой кэширующие агенты в том, что они выполнены с возможностью содержания данных когерентно через внутренние кэширующие агенты. Хотя они описаны как CPU, следует понимать, что другие типы кэширующих агентов, такие как ядра, графические механизмы или другие специализированные процессорные логические схемы с ассоциированной памятью кэша, могут действовать как кэширующие агенты в некоторых вариантах осуществления. Также следует понимать, что те агенты, которые передают записи входа-выхода, отображенные на память (MMIO), не ограничены кэширующими агентами, и другие агенты, такие как некэширующие агенты, также передают транзакции MMIO.
В отличие от этого, другие агенты SoC 200 могут быть выполнены как некэширующие агенты. Различные типы некэширующих агентов могут присутствовать, такие как агенты IO, которые могут принимать множество форм, такие как устройства захвата, устройства предоставления, периферийные устройства и т.д. Некоторые из этих некэширующих агентов, такие как некэширующие агенты 2301 и 2302 IO, непосредственно соединены с системным агентом 210 через взаимное соединение в микросхеме, которое компилирует с правилами упорядочения, в ассоциации с протоколом передачи данных экспресс-соединения периферийного компонента (PCIe™). Некэширующие агенты вырабатывают расположенные вверх по потоку наблюдаемые и не наблюдаемые запросы памяти по первичному интерфейсу такого взаимного соединения в микросхеме. Агенты IO могут вырабатывать запросы памяти по любому виртуальному каналу (VC), который поддерживает SoC (следует отметить, что некоторые SoC поддерживают 1 VC, некоторые поддерживают 2 VC, некоторые поддерживают 3 VC и т.д.).
Запросы и данные записи поступают в системный агент 210 по каналу прибывания. Данные о завершении считывания возвращаются в агент по каналу убывания. Кэширующие агенты вырабатывают расположенные далее по потоку запросы в IO устройства, используя порт IO, порт OIO или отображенные на память считывание/запись. Эти запросы перемещаются по первому виртуальному каналу (а именно VC0) в варианте осуществления. Каждый запрос из кэширующего агента 220 получает обозначение из системного агента 210, когда он глобально упорядочен. Записи MMIO из кэширующего агента 220 являются глобально упорядоченными, когда они проходят в упорядоченную область системного агента 210. Такая передача называется почтовой отправкой записи, расположенной далее по потоку, в исходящий канал. После того как завершение исходящего считывания пересечет упорядоченную область, оно не может быть пропущено прежде, чем MMIO выполнит запись того же VC, который был передан по почте в упорядоченную область.
В свою очередь, другие некэширующие агенты 2303-230z 10 соединяются через переключающий фабрикат 235 с первичным интерфейсом взаимного соединения на микросхеме или мостом с другим протоколом. В представленном примере каждый из этих некэширующих агентов (и переключающий фабрикат) может соединяться с когерентным фабрикатом 210 через первичный интерфейс взаимного соединения на микросхеме. В варианте осуществления первичный интерфейс включает в себя один или больше VC, без требований упорядочивания между разными VC. Кроме того, SoC 200 дополнительно включает в себя множество интегрированных некэширующих агентов, 2401-240x, которые могут непосредственно соединяться с когерентным фабрикатом 210 через интерфейс запрашивающего устройства с другой технологией взаимного соединения. Кроме того, множество контроллеров 2501-250n памяти также могут соединяться с когерентным фабрикатом 210 для обеспечения функции взаимного соединения и управления для запоминающего устройства (не показаны для простоты иллюстрации на фиг. 2), соединенного с SoC, который в варианте осуществления может быть воплощен как динамическое оперативное запоминающее устройство (DRAM).
Когерентный фабрикат 210 включает в себя фабрикат со схемой совместно используемой памятидля соединения агентов к совместно используемой памяти (например, через промежуточный контроллер памяти). Фабрикат совместно используемой памяти выполнен с возможностью обеспечения соответствия с требованиями качества услуги (QoS) для критичных по времени изохронных устройств, также обеспечивая пропорционирование полосы пропускания при доступах к памяти для неизохронных устройств, также называемых здесь устройствами лучших усилий обслуживания, в варианте осуществления. Хотя это показано в данном примере, в варианте осуществления на фиг. 2, следует понимать, что объем настоящего изобретения не ограничен в этом отношении, и множество разных типов SoC и других полупроводниковых устройств могут использовать преимущество логической схемы временного фильтра наблюдения в соответствии с вариантом осуществления настоящего изобретения.
Класс категории услуги назначают для каждого устройства, соединенного с фабрикатом совместно используемой памяти. Множество классов услуги могут поддерживаться этим фабрикатом. Хотя объем настоящего изобретения не ограничен в этом отношении, в устройствах одного варианта осуществления могут присутствовать два класса категории услуги, включающих в себя изохронный класс категории услуги, используемой для устройств, чувствительных к латентности, и класс лучших усилий для категории услуги, используемой для устройств, которые могут выдерживать длительную латентность в отношении услуги, которую они запрашивают в запоминающем устройстве. Хотя объем настоящего изобретения не ограничен в этом отношении, в некоторых вариантах осуществления устройства, чувствительные к латентности, включают в себя устройства, предоставляющие содержание, такие как аудио- и видеопроигрыватели, устройства камеры и т.д., в то время как устройства с более низким приоритетом включают в себя ядра процессора, графические процессорные модули и т.д.
Время, в форме предельного срока запроса, передают из изохронных устройств в фабрикат для обозначения для фабриката запрашиваемой латентности для завершения запроса в запоминающее устройство. Для обеспечения синхронизации фабрикат выполняет широковещательную рассылку глобального таймера во все изохронные запрашивающие агенты. Глобальный таймер непрерывно управляется и в