ПРЕДСТАВЛЕНИЕ ФИЛЬТРАЦИИ НАБЛЮДЕНИЯ, АССОЦИИРОВАННОЙ С БУФЕРОМ ДАННЫХ
PROVIDING SNOOP FILTERING ASSOCIATED WITH DATA BUFFER

Область техники, к которой относится изобретение
Настоящее изобретение относится к вычислительным системам, и в частности (но не исключительно) к таким системам, которые включают в себя коммутирующую матрицу для соединения множества устройств с запоминающим устройством.
Краткое описание чертежей
На фиг. 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 включает в себя логику фильтра временного наблюдения в соответствии с вариантом осуществления настоящего изобретения, а также различные другие компоненты, такие как очереди, буферы, средства наблюдения, логика управления и т.д.
1
n
Как можно видеть, когерентный фабрикат 210 действует как первичное взаимное соединение на микросхеме между множеством разных агентов и другими компонентами. На стороне вверх по потоку предусмотрено множество кэширующих агентов 220-220.Хотя объем настоящего изобретения не ограничен в этом отношении, такие кэширующие агенты могут соответствовать центральным процессорным устройствам (CPU), которые, в общем, включают в себя одно или больше ядер процессора и один или больше уровней памяти кэша. Таким образом, эти агенты представляют собой кэширующие агенты в том, что они выполнены с возможностью содержания данных когерентно через внутренние кэширующие агенты. Хотя они описаны как CPU, следует понимать, что другие типы кэширующих агентов, такие как ядра, графические механизмы или другие специализированные процессорные логические схемы с ассоциированной памятью кэша, могут действовать как кэширующие агенты в некоторых вариантах осуществления. Также следует понимать, что те агенты, которые передают записи входа-выхода, отображенные на память (MMIO), не ограничены кэширующими агентами, и другие агенты, такие как некэширующие агенты, также передают транзакции MMIO.
1
2
В отличие от этого, другие агенты SoC 200 могут быть выполнены как некэширующие агенты. Различные типы некэширующих агентов могут присутствовать, такие как агенты IO, которые могут принимать множество форм, такие как устройства захвата, устройства предоставления, периферийные устройства и т.д. Некоторые из этих некэширующих агентов, такие как некэширующие агенты 230 и 230 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, который был передан по почте в упорядоченную область.
3
z
1
x
1
n
В свою очередь, другие некэширующие агенты 230-230 10 соединяются через переключающий фабрикат 235 с первичным интерфейсом взаимного соединения на микросхеме или мостом с другим протоколом. В представленном примере каждый из этих некэширующих агентов (и переключающий фабрикат) может соединяться с когерентным фабрикатом 210 через первичный интерфейс взаимного соединения на микросхеме. В варианте осуществления первичный интерфейс включает в себя один или больше VC, без требований упорядочивания между разными VC. Кроме того, SoC 200 дополнительно включает в себя множество интегрированных некэширующих агентов, 240-240, которые могут непосредственно соединяться с когерентным фабрикатом 210 через интерфейс запрашивающего устройства с другой технологией взаимного соединения. Кроме того, множество контроллеров 250-250 памяти также могут соединяться с когерентным фабрикатом 210 для обеспечения функции взаимного соединения и управления для запоминающего устройства (не показаны для простоты иллюстрации на фиг. 2), соединенного с SoC, который в варианте осуществления может быть воплощен как динамическое оперативное запоминающее устройство (DRAM).
Когерентный фабрикат 210 включает в себя фабрикат со схемой совместно используемой памятидля соединения агентов к совместно используемой памяти (например, через промежуточный контроллер памяти). Фабрикат совместно используемой памяти выполнен с возможностью обеспечения соответствия с требованиями качества услуги (QoS) для критичных по времени изохронных устройств, также обеспечивая пропорционирование полосы пропускания при доступах к памяти для неизохронных устройств, также называемых здесь устройствами лучших усилий обслуживания, в варианте осуществления. Хотя это показано в данном примере, в варианте осуществления на фиг. 2, следует понимать, что объем настоящего изобретения не ограничен в этом отношении, и множество разных типов SoC и других полупроводниковых устройств могут использовать преимущество логической схемы временного фильтра наблюдения в соответствии с вариантом осуществления настоящего изобретения.
Класс категории услуги назначают для каждого устройства, соединенного с фабрикатом совместно используемой памяти. Множество классов услуги могут поддерживаться этим фабрикатом. Хотя объем настоящего изобретения не ограничен в этом отношении, в устройствах одного варианта осуществления могут присутствовать два класса категории услуги, включающих в себя изохронный класс категории услуги, используемой для устройств, чувствительных к латентности, и класс лучших усилий для категории услуги, используемой для устройств, которые могут выдерживать длительную латентность в отношении услуги, которую они запрашивают в запоминающем устройстве. Хотя объем настоящего изобретения не ограничен в этом отношении, в некоторых вариантах осуществления устройства, чувствительные к латентности, включают в себя устройства, предоставляющие содержание, такие как аудио- и видеопроигрыватели, устройства камеры и т.д., в то время как устройства с более низким приоритетом включают в себя ядра процессора, графические процессорные модули и т.д.
Время, в форме предельного срока запроса, передают из изохронных устройств в фабрикат для обозначения для фабриката запрашиваемой латентности для завершения запроса в запоминающее устройство. Для обеспечения синхронизации фабрикат выполняет широковещательную рассылку глобального таймера во все изохронные запрашивающие агенты. Глобальный таймер непрерывно управляется и выводит сигналы из фабриката таким образом, что он является доступным для выборки, осуществляемой изохронными устройствами. В соответствии с этим значением времени агенты определяют требования латентности для завершения запроса и добавляют это значение латентности к значению глобального таймера для формирования конечного срока для запроса. Разные подходы при определении латентности возникают в разных вариантах осуществления. На основе этой переданной латентности или значения предельного срока фабрикат может принимать лучшее решение планирования на основе знания текущего состояния энергии в запоминающих устройствах и запрашиваемых латентностях для других внеплановых запросов запоминающего устройства, ожидающего обработки в фабрикате. Такая передача предельного срока может улучшить полосу пропускания запоминающего устройства и также может сэкономить электроэнергию в системе. Использование запрашиваемых предельных сроков обеспечивает для фабриката информацию о латентности для каждого запроса из изохронного устройства.
Варианты осуществления также могут обеспечивать эффективность для полосы пропускания запоминающего устройства, обеспечивая возможность планирования запросов памяти не по порядку; однако это может привести к длительным латентностям планирования для некоторых запросов. Для разрешения такой проблемы фабрикат назначает уровень приоритета для каждого изохронного запроса памяти, например высокий или низкий приоритет. При планировании изохронных запросов с высоким приоритетом количество разрешенного планирования по порядку является меньшим, чем у допустимого при планировании запросов с наилучшими усилиями или изохронных запросов с низким приоритетом. Ограничение количества планирования не по порядку для запросов с высоким приоритетом выполняют для того, чтобы обеспечить то, что будет удовлетворяться требование по латентности запроса. Поскольку приоритет запроса определяют по предельному сроку запроса, фабрикат может сразу определять после планирования запроса, что уровни приоритета других ожидающих запросов установлены для изохронного устройства. При использовании способа предельного срока уровень приоритета всех ожидающих запросов изменяется только при последовательном приращении показаний глобального таймера.
В варианте осуществления фабрикат со схемой совместно используемой памяти включает в себя две точки арбитража, которые используются для планирования запросов, передаваемых в контроллер памяти. Первая точка арбитража используется для допуска запросов из устройств в фабрикат со схемой совместно используемой памяти и называется арбитром допуска. Вторая точка арбитража используется для планирования запросов, передаваемых в контроллер памяти из фабриката в схему совместно используемой памяти, и называется арбитром планирования.
Каждое устройство, соединенное с фабрикатом со схемой совместно используемой памяти, имеет интерфейс запроса, который соединен между устройством и фабрикатом. Интерфейс запроса передает информацию о запросе, которая может использоваться для планирования памяти QoS. В одном варианте осуществления эта информация включает в себя адрес памяти, поле ID порядка и поле кода операции. Для изохронных устройств дополнительное поле, называемое полем конечного срока запроса, предусмотрено для обозначения требуемой латентности, необходимой для завершения запроса. Следует отметить, что в некоторых вариантах осуществления SoC интерфейса фабриката памяти могут быть подключены к другим фабрикатам или переключателям, которые позволяют другим устройствам собственно использовать интерфейс общего запроса.
0
3
Обращаясь теперь к фиг. 3, здесь в виде блок-схемы представлена часть фабриката со схемой совместно используемой памяти в соответствии с вариантом осуществления настоящего изобретения. Как показано на фиг. 3, фабрикат 300 со схемой совместно используемой памяти включен между множеством агентов 315-315 (в общем, агентом 315) и контроллером 370 памяти. Следует отметить, что в некоторых вариантах осуществления присутствует больше чем один контроллер памяти. Конечно, хотя это и не показано для простоты иллюстрации, следует понимать, что контроллер памяти подключен к системной памяти, такой как динамическое оперативное запоминающее устройство (DRAM), или другой системной памяти.
1
3
В варианте осуществления, показанном на фиг. 3, разные типы агентов подключены к фабрикату 300 совместно используемой памяти. В частности, разные агенты включают в себя тип агента первого класса услуги (COS), а именно так называемые изохронные агенты, и тип агента второго класса службы, а именно так называемые агенты наилучшего усилия COS. Как можно видеть, каждый из агентов 315 может передавать информацию запроса в арбитр 320 допуска. В свою очередь, арбитр 220 допуска может передавать соответствующую информацию типа управления обратно в агенты. Кроме того, изохронные агенты (а именно агенты 315 и 315 в варианте осуществления на фиг. 3) дополнительно включают в себя дополнительное соединение для передачи информации о конечном сроке запроса в арбитр 320 допуска. С этой целью эти агенты дополнительно выполнены с возможностью приема информации глобального времени из глобального таймера 350, также подключенного как к арбитру 320 допуска, так и к арбитру 330 планирования.
В варианте осуществления, показанном на фиг. 3, арбитр 320 допуска может быть выполнен с возможностью приема входящих запросов из агентов 315 (и запроса информации о конечном сроке от изохронных агентов) и для выбора соответствующих запросов для допуска к арбитру 330 планирования. Для помощи в этом процессе арбитража арбитр 320 допуска принимает информацию конфигурации из набора регистров 360 конфигурации, дополнительно соединенных с арбитром 330 планирования. Кроме того, следящее устройство 340 запроса и когерентности может быть соединено с арбитрами 320 и 330. В общем, следящее устройство 340 может включать в себя множество табло 342, буфер 344 данных и соответствующих хранилищ 345 метки адреса, очереди 346 управления и другие ресурсы, такие как различные буферы, логические схемы, такие как логическая схема 248 выделения ресурсов, и т.д. В некоторых вариантах осуществлении массив меток и буфер данных могут быть расположены в другом порядке, чем следящее устройство. Хотя в варианте осуществления на фиг. 3 это показано на высоком уровне, следует понимать, что объем настоящего изобретения не ограничен в этом отношении.
Фабрикат со схемой совместно используемой памяти может включать в себя определенные конечные ресурсы, которые вначале выделяют прежде, чем запрос из агента запроса может быть подан арбитром допуска. Эти ресурсы включают в себя доступные входы в буфере внутренних данных и накопителе метки адреса. Другие конечные ресурсы включают в себя доступные входы в планировщик запоминающего устройства и в табло наблюдения запроса. Буфер внутренних данных фабриката, табло массива метки и планировщик запоминающего устройства находятся во взаимно-однозначном соответствии по ресурсам. В варианте осуществления эти ресурсы выделяют для заданной области (например, ширины линии кэша, такой как 64 байта) запоминающего устройства. Для каждого активного запроса также выделяют свой собственный вход в запрос, в когерентном следящем устройстве, но множество запросов к той же области в запоминающем устройстве собственно используют один вход в буфер данных, массив меток и вход в табло планировщика памяти. Хотя возможно выполнять размещение для более чем 1 запроса для одного буфера данных, массива меток и входа в табло планировщика, только 1 запрос считывания является запланированным для контроллера памяти для всех просроченных запросов на считывание в запросе и когерентном следящем устройстве.
Интерфейс запроса для всех устройств подключен к арбитру допуска фабриката. Изохронные устройства используют поле конечного срока шины запроса для обозначения для фабриката необходимой латентности для окончания запроса. Фабрикат передает значение глобального таймера для всех изохронных устройств, которые прикреплены к фабрикату. Для каждого запроса, который должен быть передан в фабрикат, изохронное устройство, например, в логической схеме конечного значения определяет требуемую латентность, необходимую для окончания запроса, и добавляет это значение к текущему значению глобального таймера для создания конечного значения запроса. Разные способы можно использовать для разных изохронных устройств для определения требуемой задержки для запроса, но все изохронные устройства обозначают для фабриката запрос латентности, используя поле конечного срока запрашиваемого интерфейса.
В варианте осуществления арбитр допуска имеет два уровня приоритета. Они представляют собой путь высокого приоритета в арбитре, который используется для срочных изохронных запросов. Запрос считается срочным, если агент запроса выполнен как изохронный агент и когда поле конечного срока запроса меньше, чем значение, сохраненное в регистре конфигурации, определяющем пороговое значение, которое называется срочным пороговым значением. Арбитр допуска также использует путь низкого приоритета, используемый для запросов наилучших усилий и для изохронных запросов, которые не рассматриваются срочными. Конечный уровень арбитража осуществляется с использованием селектора приоритета, который выбирает между выигравшим арбитраж высокого приоритета и выигравшим арбитраж низкого приоритета.
В одном варианте осуществления оконечный селектор арбитра допуска имеет два режима, которые могут быть выбраны, используя регистр конфигурации. Первый режим представляет собой режим фиксированного приоритета, в котором, предполагая, что по меньшей мере один из запросов высокого приоритета присутствует как ввод арбитра допуска, селектор выбирает выигравшего путь арбитража высокого приоритета перед выбором выигравшего путь арбитража низкого приоритета. Второй режим конечного селектора представляет собой взвешенный режим в соответствии с циклической организацией, при которой конечный селектор переключается между предоставлением пути высокого приоритета для предоставления пути низкого приоритета после числа N предоставлений запросов высокого приоритета. Селектор затем предоставляет M запросов низкого приоритета от выигравшего путь низкого приоритета прежде, чем переключится обратно на предоставление запроса на путь высокого приоритета. В варианте осуществления значения для N и M установлены, используя регистры конфигурации.
0
1
2
3
Обратимся теперь к фиг. 4, на которой представлена блок-схема дополнительных деталей арбитров допуска в соответствии с вариантом осуществления настоящего изобретения. Как показано на фиг. 4, арбитр 320 принимает входящие запросы из запрашивающих агентов. На этой иллюстрации запрашивающие агенты 315 и 315 не являются изохронными или агентами наилучшего усилия, в то время как агенты 315 и 315 являются изохронными агентами. Следует отметить, что изохронные агенты могут включать в себя или могут быть воплощены как логическая схема 318 определения оконечного срока, которая используется для расчета требуемой латентности для запросов. В варианте осуществления, в котором по меньшей мере некоторые из агентов представляют собой IP блоки третьей стороны, эта логическая схема может быть воплощена в виде оберточной схемы или логической схемы интерфейса, которая соединяет агенты с фабрикатом совместно используемой памяти.
2
3
0
n
В представленном варианте осуществления арбитр 320 допуска включает в себя первый арбитр 322 на основе возраста и второй арбитр 324 на основе возраста, которые соответствуют низкому приоритету и высокому приоритету арбитров на основе возраста соответственно. Таким образом, как можно видеть, запросы от всех агентов 315 предоставляются в первый арбитр 322, в то время как только запросы от изохронных агентов 315 и 315 предоставляются во второй арбитр 324. Для определения, имеет ли срочный статус конкретный запрос от одного из изохронных агентов, каждое из пары логических устройств 321 и 321 подключено для приема запросов из соответствующего одного из этих изохронных агентов, проверяет конечный срок исполнения, а также информацию о глобальном времени из глобального таймера 350. На основе сравнения информации о крайнем сроке, предоставляемой агентом, и информации глобального времени может быть предоставлено обозначение срочного статуса для соответствующего запроса для второго арбитра 324.
Во время выполнения операции арбитры 322 и 324 во время работы выбирают выигравшего арбитраж из набора входящих запросов. В представленном варианте осуществления такое определение основано частично на информации от сохранения 326 возраста, который сохраняет значение возраста для каждого из агентов. Соответствующие выигравшие из каждого из арбитров могут быть подключены к селектору 325 арбитра приоритета, который выбирает на основе одной операции соответствующий запрос для предоставления в арбитр 330 планирования (не представлен для простоты иллюстрации на фиг. 4). С этой целью селектор 325 может выбрать запрос допуска к арбитру планировщика на основе по меньшей мере частично информации в накопителе 329 приоритета.
Алгоритм на основе возраста, воплощенный арбитром допуска, выполнен таким образом, что для запрашивающего агента, который прождал дольше всего после последнего предоставления арбитром, будет предоставлен наивысший уровень приоритета. Как только агент принял наивысший уровень приоритета, уровень приоритета для этого агента не меняется, если только агенту не был предоставлен этот приоритет другим арбитром. Таким образом, проблемы неопределенного блокирования ресурсов, обычно возникающие при использовании циклического арбитража, могут быть исключены в результате обеспечения того, что уровень приоритета для запрашивающего агента может только увеличиваться на уровне приоритета до тех пор, пока запрашивающий агент не будет обеспечен арбитром.
Арбитр допуска также обеспечивает назначение весовых значений для агента для всех запрашивающих агентов. Весовые значения используются для выделения процента, запрашивающего полосы пропускания для каждого запрашивающего агента. В варианте осуществления весовые значения определены для каждого агента через значение, сохраненное в регистре конфигурации веса агента. Процент от запрашиваемой полосы пропускания, которая выделена агенту, равен значению веса агента, разделенному на сумму весов всех агентов, в варианте осуществления.
Алгоритм на основе взвешенного возраста арбитра допуска основан на относительном возрасте, когда запрашивающий агент в последнее время был запрошен арбитром. Для каждого запрашивающего агента, который соединяется с арбитром допуска, имеется один счетчик возраста, который установлен, и один счетчик веса, который установлен. Как пути высокого приоритета, так и пути низкого приоритета арбитража в арбитре допуска обеспечивают общее использование возраста и подсчета веса для всех агентов, подключенных к арбитру допуска. Обновление возраста запрашивающего агента и регистров веса определено конечным селектором (а именно селектором 325 арбитра приоритета) после выбора конечного выигравшего арбитраж.
Регистры возраста (например, накопитель 326 возраста) для всех запрашивающих агентов вначале инициализируют в соответствии с приемом сброса в арбитр допуска. Когда выбирают допуск, регистры возраста инициализируют в уникальные значения в диапазоне, начинающемся от 0, до значения, оканчивающегося значением N-1, где значение N равно количеству интерфейсов запроса, подключенных арбитром допуска.
Перед тем как любые запросы будут поданы агентами запроса, значения веса подсчета агента (например, в накопителе 328 веса) инициализируют из запрограммированных значений в регистрах конфигурации веса агента фабриката. Как только счетчики веса будут инициализированы, величина подсчета для агента постепенно уменьшается на один для каждого запроса, предоставленного для этого агента. После того как значение счетчика веса агента достигнет нуля, и если агенту снова будет предоставлено значение арбитра допуска, счетчик будет перезагружен со значением, запрограммированным в регистре конфигурации для этого веса агента.
В одном варианте осуществления способ арбитража на основе возраста выполняют в первом и втором арбитрах 322 и 324, используя вектор запроса бита (каждый арбитр имеет свой собственный вектор) для определения выигравшего в арбитраже. Когда запрос утвержден для агента, арбитр использует значение возраста для запроса агента как уровень приоритета запроса. Уровни приоритета для арбитра и, таким образом, диапазон ширины вектора бита находятся от 0 до N-1. Алгоритм на основе возраста гарантирует то, что значения возраста для всех запрашивающих агентов всегда являются уникальными и поэтому всегда имеют только одного выигравшего в арбитраже.
Арбитр обновляет регистры возраста для всех агентов, когда значение счетчика веса для выигравшего арбитража запроса достигло нуля. В одном варианте осуществления регистры возраста для всех агентов обновляются в соответствии со следующими правилами, которые гарантируют, что значения возраста для всех агентов всегда представляют собой единственное значение.
Правило 1: когда возраст агента равен возрасту выигравшего арбитраж, регистр возраста для этого агента устанавливают равным нулю для обозначения самого младшего возраста запроса или самого низкого приоритета.
Правило 2: когда возраст агента меньше, чем у выигравшего арбитраж, регистр возраста агента последовательно увеличивают на 1.
Правило 3: когда возраст агента больше, чем у выигравшего арбитраж, регистр возраста агента не изменяется.
Как, кроме того, показано на фиг. 4, после того как данный запрос будет выбран в селекторе 325 приоритета арбитра, для детектора 332 конфликта предоставляют, который выполняет детектирование конфликта в различных поступающих запросах, для предотвращения различных источников конфликтов, таких как конфликты для выделения буфера и конфликты адреса, в котором к запрашиваемым данным в настоящее время получает доступ другой запрашивающий. Кроме того, детектор 332 конфликта может также обрабатывать случаи конфликта наблюдения, в которых линия кэша, например, в буфере 344 данных, в процессе выполнения запроса наблюдения, выполняется для одного или больше запоминающих устройств кэша SoC. Для более быстрого определения таких случаев конфликта наблюдения детектор 332 конфликта может дополнительно включать в себя логическую схему фильтра 334 наблюдения, как описано здесь. В общем случае, логическая схема 334 фильтра наблюдения, при минимальной сложности и при малых затратах энергии, может предотвращать по меньшей мере некоторые из этих случаев конфликта наблюдения путем преобразования или ухудшения входящих запросов запоминающего устройства наблюдения из агентов, не выполняющих кэширование до запросов запоминающего устройства без наблюдения, которые могут обрабатываться без задержки, и, таким образом, без разрешения противоречий наблюдения. Хотя на данном высоком уровне варианта осуществления по фиг. 4 представляется понимание того, что объем настоящего изобретения не ограничен в этом отношении.
Следует отметить, что, когда конфликт будет детектирован в детекторе 332 конфликта, информацию обратной связи передают в арбитры 322 и 324. Таким образом, эти арбитры могут маскировать соответствующий запрашивающий агент в последующих раундах арбитража до тех пор, пока конфликт не будет разрешен. Таким образом, такой сигнал обратной связи действует, как маска, уменьшая количество запрашивающих агентов, доступных для выполнения арбитража в одном или больше раундах арбитража. Следует отметить, что, когда данный конфликт был разрешен, такой сигнал маски удаляют, обеспечивая для запрашивающего агента возможность участвовать в раундах арбитража. Следует отметить, что в некоторых вариантах осуществления такие запросы, остановленные из-за конфликта, затем могут быть повторно введены в арбитры 322 и 324 с более высоким приоритетом.
Теперь, на фиг. 5, показана блок-схема, представляющая более подробно фабрикат совместно используемого запоминающего устройства, в соответствии с вариантом осуществления настоящего изобретения. Как показано на фиг. 5, логическая схема 332 детектирования конфликта, выполненная с возможностью приема решенного арбитражем запроса из одного из множества портов запроса (например, каждая соответствующая запрашивающему агенту SoC). Более конкретно, поступающий запрос может быть принят с выхода селектора 325 арбитра приоритета по фиг. 4. Таким образом, когда селектор 325 арбитра приоритета подает запрос, который был в конечном итоге выбран на выход, он предоставляется по соответствующей линии, ассоциированной с заданным запрашивающим агентом.
Как можно видеть на фиг. 5, логическая схема 332 детектирования конфликта включает в себя логическую схему 334 фильтра наблюдения, которая может уменьшить количество случаев конфликта наблюдения путем преобразования по меньшей мере некоторых поступающих запросов запоминающего устройства, находящихся под наблюдением, из некэширующих агентов в запросы, не подлежащие наблюдению, получая их прием на выходе, в качестве следующих принятых запросов вместо остановки запроса и, в свою очередь, потенциально прекращая прямой прогресс самого запрашивающего агента. Следует отметить, что, если логическая схема 332 детектирования конфликта не может принять запрос из-за конфликта при выделении буфера, тогда запрашивающее устройство может быть блокировано до тех пор, пока конфликт не будет разрешен и когда буфер данных может быть выделен. Другой случай конфликта возникает, когда линия в настоящее время все еще находится под наблюдением кэширующего агента. Без варианта осуществления настоящего изобретения протокол когерентности потребовал бы, чтобы право собственности линии кэширования было бы полностью разрешено перед повторным наблюдением той же линии кэша. Используя вариант осуществления настоящего изобретения, по меньшей мере некоторые запросы под наблюдением могут быть преобразованы в запросы, не находящиеся под наблюдением, и им было бы разрешено входить в когерентный фабрикат (дополнительные части системного агента) раньше по времени. Варианты осуществления могут выполнять фильтрацию наблюдения, используя малую мощность и минимальные структуры SoC. Также дополнительные варианты осуществления могут улучшить рабочие характеристики множества запросов памяти под наблюдением в тех же линиях кэша, которые могут быть общими из некэширующих агентов.
Для выполнения операции детектирования конфликта и снижения/преобразования запроса в памяти наблюдения в соответствии с вариантом осуществления настоящего изобретения логическую схему 332 детектирования конфликта подключают для приема определенной информации, ассоциированной с буфером 344 данных. Более конкретно, логическая схема 334 детектирования конфликта выполнена с возможностью приема информации статуса и информации управления из накопителя 343 метки. В других вариантах осуществления накопитель 343 метки может представлять собой часть буфера данных или он может представлять собой отдельный накопительный массив, ассоциированный с буфером данных (например, имеющий такое же количество линий или входов, что и буфер 344 данных). В одном варианте осуществления буфер 344 данных и накопитель 343 метки каждый может включать в себя 64 входа. В одном таком варианте осуществления буфер 344 данных обеспечивает сохранение шириной 64B.
a
Также на фиг. 5 показан накопитель 343 метки, который включает в себя множество составляющих компонентов. Накопитель 343 метки включает принадлежащий индикатор 343. В варианте осуществления этот индикатор может представлять собой один бит для обозначения того, что соответствующий вход или линия в буфере 344 данных принадлежит системному агенту. Хотя он описан как "принадлежащий", следует отметить, что в данном случае это означает, что системный агент ранее сделал недействительной эту соответствующую линию кэша в любом кэше SoC, и таким образом этот принадлежащий индикатор первого состояния (например, логически высокий уровень) обозначает, что действительная копия данных в этой линии кэша не присутствует ни в каком запоминающем устройстве кэша SoC таким образом, что нет необходимости выполнять наблюдаемый запрос (хотя следует отметить, что данные могут присутствовать на соответствующем входе буфера 344 данных). Другими словами, контроллер памяти фабриката обнаружил линию, и агент без кэширования запросил эту линию, поскольку было выполнено наблюдение. Следовательно, контроллер памяти гарантированно имеет одну копию линии в системе.
b
d
e
Дополнительные индикаторы контроля и статуса в пределах накопителя 343 метки включают в себя индикатор 343 статуса нижнего участка памяти и индикатор 343c статуса верхнего участка памяти, каждый из которых может включать в себя индикаторы, представляющие, что в настоящее время к заданному участку памяти выполняется доступ (статус считывания или записи), и опорную величину подсчета, которая может обеспечить множественный доступ к тому же участку памяти линии кэша. Используя такие индикаторы статуса, могут быть разрешены новые независимые доступы для считывания и записи (из того же запрашивающего устройства) к разным участкам памяти по одной линии кэша. В свою очередь, индикатор 343 статуса линии может в первом состоянии обозначать, что линия включает в себя модифицированные данные, которые должны быть сброшены в памяти. В конечном итоге, в поле 343 адреса содержится адрес, например, в пределах физического адреса (или на участке адреса) системной памяти, ассоциированной с соответствующим входом буфера данных. Хотя в варианте осуществления, показанном на фиг. 5, они представлены на высоком уровне, следует понимать, что дополнительная и/или другая информация может присутствовать в других вариантах осуществления.
Следует отметить, что логика фильтра наблюдения является временной. Таким образом, вместо предоставления полной директории или фильтра наблюдения, который является инклюзивным с памятью кэша SoC, вместо этого предусмотрена очень ограниченная логика фильтра наблюдения. В конкретных вариантах осуществления фильтрация наблюдения может быть выполнена только по запросам в памяти, с которыми обращаются в буфер данных фабриката совместно используемой памяти. Таким образом, при воплощении, при котором такой буфер данных включает в себя 64 входа, логика фильтра наблюдения может обеспечивать соответствующие возможности фильтра наблюдения только для этих 64 входов. Таким образом, фильтрация наблюдения, обеспечиваемая при использовании варианта осуществления настоящего изобретения, является временной в том смысле, что фильтрация наблюдения выполняется для этих входов, только когда они присутствуют. Когда данные входа удаляют, возможность выполнения фильтрации наблюдения по запросам в памяти, ассоциированным с этими данными, теряется.
Таким образом, используя логику 334 фильтра наблюдения, может быть принято множество запросов по одному и тому же адресу и предоставлено для обработки в пределах фабриката совместно используемой памяти без необходимости остановки или содержания последующих запросов в памяти, когда индикатор принадлежности обозначает, что соответствующие данные принадлежат системному агенту.
Следует отметить, что при преобразовании запроса наблюдаемой памяти в запрос ненаблюдаемой памяти такой запрос памяти после этого обрабатывается как ненаблюдаемый запрос памяти. Другими словами, во время обработки такого запроса памяти не выполняется никакая обработка наблюдения.
Далее, на фиг. 6, показана блок-схема последовательности операций способа, в соответствии с вариантом осуществления настоящего изобретения. Как показано на фиг. 6, способ 500 может быть воплощен по меньшей мере частично с использованием логической схемы фильтра наблюдения фабриката. В различных вариантах осуществления комбинации аппаратных средств встроенное программное обеспечение и/или программное обеспечения можно использовать для выполнения операций для более эффективной обработки входящих запросов памяти из некэширующих агентов, подключенных к фабрикату. В варианте осуществления на фиг. 6 выполняется упрощенная обработка таким образом, что определенные запросы памяти понижены, когда ранее полученный запрос памяти под наблюдением по тому же адресу был завершен и системный агент является владельцем адреса. Хотя это упрощает воплощение, в других вариантах осуществления, как описано ниже, может быть даже реализовано большее уменьшение латентности благодаря разрешению приема последующих запросов, даже перед тем, как системный агент становится владельцем.
Способ 500 начинается в результате приема первого запроса памяти с наблюдением в системном агенте из некэширующего агента (блок 510). Этот системный агент может составлять фабрикат, которое включает в себя логику фильтра наблюдения. Управление далее переходит к ромбу 520, где определяют, принадлежит ли вход буферу данных, который ассоциирован с адресом этого запроса памяти под наблюдением системного агента. В варианте осуществления такое определение может быть основано на индикаторе собственности соответствующего входа буфера данных. Когда он установлен или имеет высокое логическое состояние, такой индикатор обозначает, что вход принадлежит системному агенту. Другими словами, такой установленный индикатор собственности обозначает, что никакой агент кэширования не включает в себя действительную копию данных для ассоциированного входа (и адреса запроса).
Если вход принадлежит системному агенту, управление переходит в блок 530, где запрос наблюдаемой памяти может быть понижен до запроса ненаблюдаемой памяти. В варианте осуществления логическая схема преобразует этот принятый запрос памяти с наблюдением в запрос памяти без наблюдения. Кроме того, поскольку устанавливается, что отсутствует какая-либо действительная копия данных для соответствующего входа в любом кэше SoC, запрос может быть принят без кэширования запроса с последующей остановкой. Конечно, следует понимать, что в различных вариантах осуществления, в этот момент, запрос может быть подвергнут арбитражу среди других таких запросов и может не быть принят до тех пор, пока не пройдут один или больше раундов арбитража. И любые последующие запросы памяти из того же запрашивающего устройства по этому входу также могут быть приняты без задержки (блок 540).
После приема запроса он обрабатывается в различных логических схемах системного агента, таких как фабрикат совместно используемой памяти. Например, для запроса считывания без наблюдения, если данные присутствуют в буфере данных фабриката, запрашиваемые данные могут быть возвращены в запрашивающий фабрикат. И если его там нет, запрос памяти может быть выработан через контроллер памяти для памяти, включающей в себя данные. Вместо запроса записи данные, ассоциированные с запросом записи, могут быть записаны в соответствующий вход буфера данных. Затем, в более позднее время, например в ответ на удаление из буфера данных, эти данные могут быть записаны обратно в память.
Следует отметить, что в варианте осуществления для запроса считывания под наблюдением, когда собственность обозначена как принадлежащая системному агенту, может быть выполнена дополнительная обработка. Более конкретно, когда ожидают решения о признании недействительными предыдущих наблюдений из того же запрашивающего порта, что и данный запрос памяти под наблюдением, результаты запросов считывания под наблюдением (которые были понижены до запроса без наблюдения) могут оставаться на рассмотрении до завершения предыдущих операций наблюдения того же запрашивающего порта. Таким образом, данные, считанные из памяти и сохраненные в буфере данных системного агента, могут поддерживаться здесь, пока не будут получены результаты предыдущих решений о признании недействительными наблюдений (например, записей). Когда все предыдущие транзакции наблюдения из запрашивающего агента будет закончены, данные, полученные для пониженных запросов считывания под наблюдением, возвращаются в запрашивающее устройство.
Также, обращаясь к фиг. 6, если, вместо этого, в ромбе 520 будет определено, что вход в буфер данных не принадлежит системному агенту, управление переходит в ромб 550, где определяют, рассматривается ли возможность входа для активного запроса. Если это так, управление переходит в блок 555, где запрос останавливают до тех пор, пока активный запрос не будет закончен и больше не будет находиться на рассмотрении.
В противном случае, если не рассматривается вход ни для одного из запросов, управление переходит в блок 560, где запрос принимают. Как часть обработки такого запроса типичный поток наблюдения может быть выполнен таким образом, что запрос по отмене наблюдения будет передан в один или больше кэширующих агентов, например в одно или больше ядер SoC, имеющих ассоциированную память кэша. В результате такой отмены запросов на наблюдение может быть получена самая последняя копия данных. Кроме того, копии данных, присутствующих в этом одном или больше запоминающем устройстве кэша, могут быть сделаны недействительными.
Далее управление переходит в ромб 570, где может быть определено, был ли закончен запрос на память с наблюдением. В одном варианте осуществления определение в ромбе 570 основано на том, был ли отставлен запрос в памяти. Если это так, управление переходит в блок 580. Здесь индикатор собственности для входа может быть установлен для обозначения собственности системного агента. Другими словами, такой индикатор собственности может быть обновлен в установленное состояние или логически высокое состояние. В результате такого обновления системный агент обозначается как владелец, поскольку все копии данных в любых кэшах SoC были сделаны недействительными. Также, при поступлении запросов памяти с наблюдением из некэширующих агентов на соответствующий вход они могут быть преобразованы в запросы памяти без наблюдения и будут обработаны в соответствии с потоком запроса без наблюдения, поскольку гарантируется, что ни одна действительная копия данных не будет присутствовать ни в каком кэше SoC. Таким образом, как можно видеть на фиг. 6, управление переходит из блока 580 в блок 540, описанный выше.
Кроме того, для улучшения обработки случай, когда множество поступающих запросов памяти по одному и тому же адресу будут приняты из одного и того же запрашивающего устройства, все запросы могут быть приняты и могут быть обработаны без остановки, что улучшает рабочие характеристики. Хотя в варианте осуществления на фиг. 6 они показаны на высоком уровне, следует понимать, что объем настоящего изобретения не ограничен в этом отношении. Таким образом, в различных вариантах осуществления, другие правила упорядочения или другие требования могут быть вовлечены в обработку поступающих запросов запоминающего устройства, используя логику фильтра наблюдения в соответствии с вариантом осуществления настоящего изобретения. Кроме того, для определенных типов запросов может быть реализована дополнительно уменьшенная латентность путем снижения и приема запросов памяти с наблюдением еще до собственности соответствующей линии кэша системным агентом.
Далее, на фиг. 7, показана блок-схема последовательности операций способа для обработки поступающих запросов запоминающего устройства, используя логику фильтра наблюдения в соответствии с вариантом осуществления настоящего изобретения. Как показано на фиг. 7, способ 600 может быть выполнен разными аппаратными средствами, программными средствами и/или встроенным программным средством SoC. В варианте осуществления по меньшей мере части способа могут быть воплощены в логической схеме 332 детектирования конфликта и в логической схеме 334 фильтра наблюдения по фиг. 5. Способ 600 начинается при сбросе или когда новый адрес выделяют для линии кэша в пределах буфера данных SoC (блок 605). В ответ на такое инициирование способа принадлежащий индикатор, ассоциированный с этой линией кэша, может быть очищен (блок 610). В результате очистки принадлежащего индикатора не обеспечивается никакая гарантия, принадлежат ли данные этой линии или по-другому ассоциированы с кэширующим агентом SoC (например, когда данные присутствуют в линии кэша или в оптирующем агенте SoC).
Также, как показано на фиг. 7, затем может определяться, поступил ли входящий запрос памяти из кэширующего агента (ромб 615). Если это так, управление переходит к блоку 620, где запрос может быть принят в случае отсутствия конфликта. Более конкретно, в варианте осуществления запрос в линию кэша принимают, только когда в линии отсутствуют активные запросы. Когда такой запрос принят, принадлежащий индикатор для линии помещают во второе состояние, например сброшен. После приема такого запроса не разрешается принимать другой запрос в линии кэша в системный агент до тех пор, пока этот запрос не был удален. Следует отметить, что запросы на запись не требуется сбрасывать в DRAM, и, вместо этого, они могут быть помечены и переведены в загрязненное состояние в буфере.
Затем в ромбе 625 может быть определено, является ли входящий запрос запросом считывания или записи без наблюдения. Если это так, управление переходит в блок 630, где могут быть приняты множество запросов из одного и того же запрашивающего устройства. Более конкретно, в одном варианте осуществления разрешено принимать множество запросов в системный агент в одной и той же линии, если только они будут приняты из одного и того же запрашивающего устройства и при этом отсутствуют конфликты считывания-записи для участка 32B данных. Для этих запросов без наблюдения принадлежащий индикатор может поддерживаться в его текущем состоянии.
Также, обращаясь к фиг. 7, далее, в ромбе 635, может быть определено, является ли входящий запрос запросом считывания под наблюдением, и принадлежащий индикатор находится во втором, сброшенном состоянии. Если это так, управление переходит в ромб 640, где может быть определено, принимает ли агент, инициирующий запрос, только данные в порядке запроса. Если это так, управление переходит в блок 645, где считывание под наблюдением может быть принято при отсутствии конфликтов. Кроме того, при успешном удалении такого запроса на считывание под наблюдением принадлежащий индикатор может быть обновлен до первого состояния.
Если вместо этого в ромбе 640 определяют, что агенту не требуется принимать данные, считанные в порядке запроса, управление переходит в блок 648. Здесь считывание под наблюдением может быть принято при отсутствии конфликтов. Кроме того, при успешном удалении такого запроса считывания под наблюдением принадлежащий индикатор может быть обновлен. Более конкретно, в варианте осуществления запрос считывания под наблюдением принимается, только когда отсутствуют активные запросы в этой линии. Принадлежащий индикатор может поддерживаться во втором состоянии до тех пор, пока не будет выполнено удаление считывания под наблюдением. В то время как принадлежащий индикатор находится во втором состоянии и первое считывание под наблюдением все еще активно, запросы на считывание и считывание без наблюдения по одной и той же линии могут быть приняты только из того же порта запрашивающего устройства. После приема первого запроса считывания под наблюдением все последующие считывания под наблюдением понижают до запросов считывания без наблюдения. Следует отметить, что эти запросы могут быть приняты и понижены до завершения обработки наблюдения для первого запроса считывания под наблюдением. Когда первый запрос считывания под наблюдением будет удален, принадлежащий индикатор устанавливают в первое состояние.
Также, как показано на фиг. 7, если поступающий запрос памяти не является запросом считывания под наблюдением с принадлежащим индикатором второго состояния, управление переходит в ромб 650 для определения, является ли входящий запрос запросом считывания под наблюдением с принадлежащим индикатором первого состояния. Если это так, управление переходит в блок 655, где запрос может быть понижен до запроса считывания без наблюдения и соответствующим образом обработан. В варианте осуществления следует отметить, что множество запросов разрешено принимать по той же линии, пока все они поступают из одного и того же запрашивающего устройства, и при этом отсутствуют конфликты считывания-записи для участка памяти 32B. Также следует отметить, что принадлежащий индикатор поддерживается в первом состоянии.
В противном случае управление переходит из ромба 65 в ромб 660 для определения, является ли входящий запрос запросом на запись под наблюдением и принадлежащий индикатор находится во втором состоянии. Если это так, управление переходит в блок 665, где запрос на запись под наблюдением может быть принят, если отсутствуют конфликты. Кроме того, когда происходит удаление такого запроса на запись под наблюдением, принадлежащий индикатор может быть обновлен. Более конкретно, в варианте осуществления запрос на запись под наблюдением может быть принят, только когда отсутствуют активные запросы для линии кэширования. Принадлежащий индикатор для линии кэширования поддерживается во втором состоянии до тех пор, пока не будет удален первый запрос на запись под наблюдением. В то время как принадлежащий индикатор находится во втором состоянии и первый запрос на запись под наблюдением все еще активен, разрешено принимать множество запросов на запись под наблюдением и запросов на запись без наблюдения по одной и той же линии кэша, только из того же запрашивающего устройства. Когда первый запрос на запись под наблюдением удаляется, принадлежащий индикатор устанавливается в первое состояние.
Как показано на фиг. 7, управление, в противном случае, переходит из ромба 660 в ромб 670 для определения, является ли входящий запрос записью под наблюдением и принадлежащий индикатор находится в первом состоянии. Если это так, управление переходит в блок 675, где запрос может быть понижен до запроса на запись без наблюдения. В варианте осуществления множество запросов разрешено принять по той же линии кэша, если только они приходят из одного и того же запрашивающего устройства и при этом отсутствуют конфликты считывания-записи для участка памяти 32B. Принадлежащий индикатор может поддерживаться в первом состоянии. Хотя в варианте осуществления, показанном на фиг. 7, он показан как находящийся на высоком уровне, следует понимать, что объем настоящего изобретения не ограничен в этом отношении.
0
n
0
n
На фиг. 8 представлена блок-схема SoC в соответствии с вариантом осуществления настоящего изобретения. Как показано на фиг. 8, SoC 1000 представляет собой полупроводниковое устройство на отдельном кристалле, включающее в себя множество блоков IP, с арбитром совместно используемого запоминающего устройства, как описано выше. В варианте осуществления на фиг. 8 предусмотрено множество ядер 1010-1010, каждое из которых может независимо исполнять инструкции. В одном варианте осуществления все эти ядра имеют одну конструкцию, такую как конструкция ядра, используемого по порядку, например, в соответствии с Intel Architecture™, такие как ядра на основе Atom™. В других вариантах осуществления ядра могут представлять собой процессоры, работающие не по порядку, такие как ядро Intel Architecture™ (IA) 32, такие, которые соответствуют конструкции Intel Core™. В других вариантах осуществления может быть предусмотрено соединение различных ядер. Кроме того, множество графических механизмов, а именно независимых графических модулей 1020-1020, могут быть предусмотрены, каждый, для независимого исполнения графических операций. Как можно видеть, множество ядер соединены в схему с совместно используемой памятью 1015 кэша, такой как кэш уровня 2 (L2), и аналогично, графические механизмы соединены с другой схемой совместно используемой памятью 1025 кэша.
Системный агент 1030 соединен с этими ядрами и графическими механизмами через соответствующие взаимные соединения 1028 и 1029 на кристалле. Как можно видеть, системный агент 1030 включает в себя фабрикат 1035 совместно используемой памяти, которая может быть выполнена, как описано здесь. Конечно, различные другие логические схемы, контроллеры и другие модули, такие как модуль управления мощностью, могут присутствовать в системном агенте 1030. Как можно видеть, фабрикат 1035 совместно используемой памяти связывается с контроллером 1040 памяти, который, в свою очередь, соединен с памятью, расположенной за пределами микросхемы, такой как системная память, выполненная в виде DRAM. Кроме того, системный агент 1030 соединен через набор взаимных соединений 1044 с одним или больше внутренними агентами 1050, такими как различные периферийные устройства. В варианте осуществления взаимное соединение 1044 может включать в себя взаимное соединение приоритета канала, взаимное соединение канала боковой полосы и взаимное соединение канала памяти. Аналогично выполненное взаимное соединение 1046 обеспечивает обмен данными между системным агентом 1030 и одним или больше агентами за пределами микросхемы (не показаны для простоты иллюстрации в варианте осуществления на фиг. 8). Хотя они показаны на этом высоком уровне на фиг. 8, следует понимать, что объем настоящего изобретения не ограничен в этом отношении.
На фиг. 9 показана блок-схема компонентов, присутствующих в компьютерной системе, в соответствии с вариантом осуществления настоящего изобретения. Как показано на фиг. 9, система 1100 может включать в себя множество разных компонентов. В одном варианте осуществления система 1100 представляет собой оборудование пользователя, устройство с сенсорным управлением, в которое встроена SoC, как описано здесь. Следует отметить, что компоненты системы 1100 могут быть воплощены как IC, их части, дискретные электронные устройства или другие модули, выполненные как печатная плата, такая как материнская плата или добавляемая карта в компьютерной системе, или как компоненты, другим образом встроенные в шасси компьютерной системы. Также следует отметить, что блок-схема на фиг. 9 предназначена для представления вида на высоком уровне множества компонентов вычислительной системы. Однако следует понимать, что дополнительные компоненты могут присутствовать в определенных вариантах осуществления и, кроме того, другие компоновки представленных компонентов могут возникать в других вариантах осуществления.
Как можно видеть на фиг. 9, процессор 1110, который может представлять собой гнездо многоядерного процессора с низким потреблением мощности, такой процессор ультранизкого напряжения может действовать как основной модуль обработки и центральный концентратор для обмена данными с различными компонентами системы. Такой процессор может быть воплощен как SoC, как описано здесь. В одном варианте осуществления процессор 1110 может быть основан на процессоре типа Intel Architecture Core™, таком как i3, i5, i7, или другой такой процессор, поставляемый компанией Intel Corporation, Santa Clara, CA, такой как процессор, в котором скомбинировано одно или больше ядер на основе Core™ и одно или больше ядер на основе Intel АТОМ™, для реализации, таким образом, ядер с высокой мощностью и низкой мощностью в одном SoC. Однако следует понимать, что другие процессоры с малой мощностью, такие, что поставляются компанией Advanced Micro Devices, Inc. (AMD) Sunnyvale, CA, и конструкции на основе ARM, поставляемые компанией ARM Holdings, Ltd., или конструкции на основе MIPS, поставляемые компанией MIPS Technologies, Inc. из Sunnyvale, CA, или компаниями, которые являются их лицензиатами или последователями, могут, вместо этого, присутствовать в других вариантах осуществления, такие как процессоры Apple A5 или A6.
Процессор 1110 может связываться с системной памятью 1115, которая в варианте осуществления может быть воплощена через множество запоминающих устройств для предоставления заданного объема системной памяти. Для предоставления возможности постоянного сохранения информации, такой как данные, приложения, одной или больше из операционных систем и т.д. постоянное запоминающее устройство 1120 большой емкости также может быть подключено к процессору 1110. Также на фиг. 9 показано, что устройство 1122 флеш может быть подключено к процессору 1110, например, через последовательный периферийный интерфейс (SPI). Устройство флеш может предоставлять возможность энергонезависимого сохранения системного программного обеспечения, включая в себя базовую систему ввода-вывода (BIOS), а также другое встроенное программное обеспечение системы.
Различные устройства (10) ввода-вывода могут присутствовать в системе 1100. В частности, в варианте осуществления на фиг. 9 показан дисплей 1124, который может представлять собой жидкокристаллический дисплей с высоким разрешением или панелью LED, выполненной в части представления крышки шасси. Такая панель дисплея также может представлять собой сенсорный экран 112, например, выполненный как отдельная часть для панели дисплея, такая как используемая через взаимодействие пользователя с сенсорным экраном, и с помощью которой входные команды пользователя могут быть предоставлены в систему для включения требуемых операций, например, в отношении передачи информации в дисплей, доступа к информации и т.д. В одном варианте осуществления дисплей 1124 может быть соединен с процессором 1110 через взаимное соединение дисплея, которое может быть воплощено как графическое высокопроизводительное взаимное соединение. Сенсорный экран 1125 может быть соединен с процессором 1110 через другое взаимное соединение, которое в варианте осуществления может представлять собой взаимное соединение I2C. Как дополнительно представлено на фиг. 9, в дополнение к сенсорному экрану 1125, ввод данных пользователем может также быть выполнен путем прикосновения через сенсорную панель 1130, которая может быть выполнена в пределах шасси и также может быть соединена с тем же взаимным соединением I2C, как и сенсорный экран 1125.
Для перцептуального зрительного восприятия и других назначений различные датчики могут присутствовать в пределах системы и могут быть соединены с процессором 1110 различными способами. Определенные инерционные датчики и датчики, относящиеся к окружающей среде, могут быть подключены к процессору 1110 через концентратор 1140 датчика, например, через взаимное соединение I2C. В варианте осуществления, показанном на фиг. 9, эти датчики могут включать в себя акселерометр 1141, датчик (ALS) 1142 внешнего света, компас 1143 и гироскоп 1144. Другие датчики окружающей среды могут включать в себя один или больше тепловых датчиков 1146, которые могут быть подключены к процессору 1110 через шину системного администрирования (SMBus) в одном варианте осуществления.
Также, как показано на фиг. 9, различные периферийные устройства могут быть подключены к процессору 1110 через взаимное соединение с малым количеством выводов (LPC). В представленном варианте осуществления различные компоненты могут быть подключены через встроенный контроллер 1135. Такие компоненты могут включать в себя клавиатуру 1136 (например, подключенную через интерфейс PS2), вентилятор 1137 и тепловой датчик 1139. В некоторых вариантах осуществления сенсорная панель 1130 также может быть подключена к EC 1135 через интерфейс PS2. Кроме того, процессор безопасности, такой как модуль 1138 защищенной платформы (TPM), в соответствии с Группой защищенных вычислений Версия 1.2 спецификации TPM (TCG) от 2 октября 2003 г., также может быть подключен к процессору 1110 через такое взаимное соединение LPC.
Система 1100 может связываться с внешними устройствами, используя множество подходов, включая в себя беспроводный подход. В варианте осуществления, показанном на фиг. 9, присутствуют различные беспроводные модули, каждый из которых может соответствовать радиоустройству, выполненному с возможностью конкретного протокола беспроводного соединения. Один способ беспроводного соединения на коротком расстоянии, таком как соединение в близком поле, может представлять собой модуль 1145 соединения на коротком расстоянии (NFC), который может обеспечивать связь в одном варианте осуществления с процессором 1110 через SMBus. Следует отметить, что, используя такой модуль 1145 NFC, устройства, находящиеся в непосредственной близости друг с другом, могут выполнять обмен данными. Например, пользователь может обеспечивать возможность обмена данными для системы 1100 друг с другом (например) с портативным устройством, таким как смартфон пользователя, путем адаптации двух устройств в порядке на коротком расстоянии и обеспечивать обмен информацией, такой как информация об оплате, в качестве информации идентификации данных, таких как данные изображения, или так далее. Беспроводная передача электроэнергии также может быть выполнена, используя систему NFC.
Как, кроме того, показано на фиг. 9, дополнительные модули беспроводной передачи данных могут включать в себя другие механизмы беспроводной передачи данных, включающие в себя модуль 1150 WLAN и модуль 1152 Bluetooth. Используя модуль 1150 WLAN, может быть реализована передача данных Wi-Fi™ в соответствии с заданным стандартом Института инженеров по электротехнике и радиоэлектронике (IEEE) 802.11 через модуль Bluetooth 1152, используя обмен данными на коротком расстоянии через протокол Bluetooth. Такие модули могут выполнить обмен данными с процессором 1110 через, например, соединение USB или универсальное соединение асинхронного приемопередатчика (UART). Или эти модули могут соединяться с процессором 1110 через взаимное соединение через протокол разъема взаимодействия периферийных компонентов™ (PCIe™) в соответствии со спецификацией PCI ExpressTM версия 3.0 (опубликована 17 января 2007 г.), или другим таким протоколом, таким как стандарт последовательного ввода/вывода данных (SDIO). Конечно, фактическое физическое соединение между этими периферийными устройствами, которые могут быть сконфигурированы в соответствии с одной или больше дополнительных карт, может представлять собой следующий способ коэффициента формирования следующего поколения (NGFF) разъемов, выполненных в соответствии с материнской платой.
Кроме того, соединения для беспроводной передачи данных в широком диапазоне передачи, например в соответствии с сотовым или другим беспроводным протоколом передачи данных, может выполняться через модуль 1156 WWAN, который, в свою очередь, может соединяться с модулем (SIM) 1157 идентичности абонента. Кроме того, для обеспечения возможности приема и использования информации о положении также может присутствовать модуль 1155 GPS. Следует отметить, что в варианте осуществления, показанном на фиг. 9, модуль 1156 WWAN и интегрированное устройство съема, такое как модуль 1154 камеры, могут связываться через данный протокол USB, такой как соединения USB 2.0 или 3.0, или UART, или протокол I2C. И снова, фактическое физическое соединение этих модулей может осуществляться через адаптацию дополнительной карты NGFF с разъемом NGFF, выполненным в соответствии с материнской платой.
Для обеспечения ввода и вывода аудиоданных аудиопроцессор может быть воплощен через цифровой сигнальный процессор (DSP) 1160, который может соединяться с процессором 1110 через соединение аудиоданных (HDA) высокой четкости. Аналогично DSP 1160 может связываться с интегрированным кодером/декодером (CODEC) и усилителем 1162, который, в свою очередь, может соединяться с выходными громкоговорителями 1163, которые могут быть воплощены в пределах шасси. Аналогично, усилитель и CODEC 1162 могут быть соединены с входами аудиоданных через микрофон 1165, который в данном варианте осуществления может быть воплощен через микрофоны двойного массива для обеспечения высококачественных входных аудиоданных для обеспечения управления активируемой речью различных операций в системе. Следует также отметить, что входные команды аудиоданных могут быть предоставлены через усилитель/CODEC 1162 в разъем 1164 головных телефонов. Также в этих конкретных компонентах в варианте осуществления на фиг. 9 следует понимать, что объем настоящего изобретения не ограничен в этом отношении.
Следующие примеры относятся к следующим вариантам осуществления.
В одном примере SoC содержит фабрикат для взаимного соединения множества агентов SoC, фабрикат, включающий в себя буфер данных, включающий в себя множество входов, каждый из которых содержит данные, которые должны быть переданы в и из множества агентов и в и из запоминающего устройства, соединенного с SoC, и логическую схему арбитража, выполненную с возможностью обеспечения множества запросов памяти, ассоциированных с данными в одном из множества входов, которые должны быть приняты после того, как фабрикат отключил данные по меньшей мере в одном запоминающем устройстве кэша для первого агента среди множества агентов.
В примере SoC дополнительно содержит индикатор собственности, ассоциированный с каждым из множества входов буфера данных, в котором индикатор собственности находится в первом состоянии для обозначения, что соответствующие данные на входе были отключены в агентах кэширования для множества агентов.
В одном примере логическая схема арбитража предназначена для обновления индикатора собственности для первого состояния, когда первый запрос памяти с наблюдением, ассоциированный с данными первого входа буфера данных, отключают.
В качестве примера логическая схема арбитража предназначена для приема одного или больше последующих запросов памяти, ассоциированных с данными первого входа прежде, чем первый запрос памяти с наблюдением будет отключен.
В одном примере один или больше последующих запросов памяти поступает из того же устройства запроса, что и первый запрос памяти с наблюдением.
В одном примере логика арбитража должна быть уменьшена до одного или больше последующих запросов из памяти из запросов памяти с наблюдением до запросов памяти без наблюдения.
В примере первый агент содержит агент кэширования, и множество запросов памяти принимают из агента без кэширования среди множества агентов.
В примере логическая схема арбитража должна быть понижена до запроса памяти без наблюдения из агента без кэширования до запроса памяти без наблюдения, и для передачи данных, ассоциированных с запросом памяти с наблюдением до агента памяти без кэширования, без выработки запроса наблюдения для агентов кэширования среди множества агентов.
В примере логическая схема арбитража содержит временный фильтр наблюдения, временный фильтр наблюдения является включающим в себя в отношении буфера данных и не включающим в себя в отношении одного или больше запоминающих устройств кэша в SoC.
В другом примере способ содержит: принимают первый запрос запоминающего устройства с наблюдением, запрашивающий первый адрес в когерентном фабрикате процессора из некэширующего агента процессора, детектирующий, принадлежит вход буфера данных когерентного фабриката, ассоциированного с первым адресом, когерентному фабрикату, и если так, понижают первый запрос памяти с наблюдением до запроса памяти без наблюдения.
В одном примере способ содержит дополнительно, если вход не принадлежит когерентному фабрикату: принимают и понижают первый запрос памяти с наблюдением, если первый запрос памяти с наблюдением представляет собой определенную форму того же запроса, что и находящийся на рассмотрении запрос на память с наблюдением для первого адреса.
В примере способ дополнительно содержит: принимают и понижают первый запрос памяти с наблюдением прежде, чем находящийся под наблюдением запрос памяти с наблюдением будет выполнен.
В примере, в то время как на рассмотрении находится запрос памяти без наблюдения, один или больше последующих запросов на выделение памяти по адресу будет принят из того же регистра, что и первый запрашиваемый запрос памяти с наблюдением.
В одном примере понижение первого запроса памяти с наблюдением содержит преобразование первого запроса памяти с наблюдением для запроса памяти без наблюдения.
В одном примере способ содержит дополнительно, если вход в буфер данных не принадлежит когерентному фабрикату: определяют, выполняется ли активный запрос памяти для входа, и если активный запрос памяти не выполняется для входа, принимают запрос на первую память с наблюдением и выполняют отмену запроса на наблюдение одного или больше кэширующих агентов процессора.
В одном примере способ дополнительно содержит, если осуществляется ожидание активного запроса памяти для входа: выполняют остановку первого запроса для наблюдения в памяти.
В одном примере способ дополнительно содержит установку индикатора принадлежности для входа для обозначения того, что когерентный фабрикат принадлежит входу, отвечающему за отключение первого запроса памяти для наблюдения и сброс индикатора принадлежности для входа, отвечающего за выделение входа в буфере данных.
В одном примере способ дополнительно содержит хранящиеся данные возврата, ассоциированные с запросом памяти без наблюдения в буфере данных, до тех пор, пока не будет закончена отмена без наблюдения из регистра первого запроса памяти с наблюдением.
В другом примере среда, считываемая компьютером, включающая в себя инструкции, выполняет способ по любому из упомянутых выше примеров.
В другом примере устройство содержит средство для выполнения способа по любому из упомянутых выше примеров.
В другом примере система содержит SoC, включающая в себя первое ядро и первое запоминающее устройство кэша, по меньшей мере один из контроллеров памяти для соединения с DRAM, первый агент, не являющийся кэшем, фабрикат для соединения с первым ядром, первый агент, который не является кэширующим агентом, и по меньшей мере один контроллер памяти, фабрикат, включающий в себя буфер данных и временное логическое устройство фильтра наблюдения, которое включает в себя буфер данных и не включает в себя первое запоминающее устройство кэша, временная логика фильтра наблюдения, которая обеспечивает возможность принимать без остановки множество запросов памяти без наблюдения по первому адресу из первого агента без кэширования, когда индикатор, ассоциированный с первым адресом, обозначает, что фабрикат осуществляет управление по первому адресу и DRAM соединено с SoC.
В примере временная логическая схема фильтра наблюдения должна работать в соответствии с встроенным программным обеспечением или другим программным обеспечением в базовую систему ввода-вывода (BIOS).
В качестве примера временный фильтр наблюдения предназначен для обеспечения доступа множества запросов в памяти с наблюдением после того, как фабрикат сделал недействительными данные, ассоциированные с первым адресом, в первом запоминающем устройстве кэша.
В примере индикатор предназначен для обозначения того, что фабрикат осуществляет управление для первого адреса после того, как данные, ассоциированные с первым адресом, были сделаны недействительными.
В одном примере временная логическая схема фильтра наблюдения предназначена для обновления индикатора, когда первый запрос памяти с наблюдением, ассоциированный с первым адресом, становится недействительным, и в котором временная логическая схема фильтра с наблюдением должна принимать один или больше последующих запросов памяти, ассоциированных с первым адресом, прежде, чем первый запрос памяти с наблюдением будет удален.
В примере временная логическая схема фильтра наблюдения должна быть понижена по одному или больше последующим запросам памяти из запросов памяти под наблюдением с тем, чтобы получить запросы памяти без наблюдения.
В другом примере устройство содержит логическую схему детектирования конфликта для приема множества запросов из памяти от арбитра когерентного фабриката системы на кристалле (SoC), логическая схема детектирования конфликта, включающая в себя логическую схему фильтра наблюдения для понижения первого запроса памяти наблюдения для первого адреса до запроса памяти без наблюдения, когда индикатор, ассоциированный с первым адресом, обозначает, что когерентный фабрикат осуществляет управление в соответствии с первым адресом.
В примере логическая схема фильтра наблюдения включает в себя буфер когерентного фабриката и является неинклюзивной в отношении одного или больше запоминающих устройств кэша в SoC.
В данном примере логическая схема фильтра наблюдения должна обеспечивать множество запросов памяти, ассоциированных с первым адресом, которые должны быть приняты после того, как когерентный фабрикат сделал недействительными данные во множестве запоминающих устройств кэша первого агента SoC, и прежде, чем будет удален запрос запоминающего устройства без наблюдения.
В качестве примера логическая схема фильтра наблюдения должна обновлять индикатор для обозначения того, что когерентный фабрикат обладает управлением по первому адресу, в ответ на удаление запроса на запоминающее устройство с наблюдением по первому адресу.
В примере логическая схема фильтра наблюдения содержит временный фильтр наблюдения.
В качестве примера временный фильтр наблюдения является инклюзивным, при этом буфер данных когерентного фабриката является не инклюзивным в отношении одного или больше запоминающих устройств кэша для SoC.
Следует понимать, что возможны различные комбинации упомянутых выше примеров.
Варианты осуществления могут использоваться во множестве разных типов систем. Например, в одном варианте осуществления устройство передачи данных может быть выполнено с возможностью выполнения описанных здесь различных способов и технологий. Конечно, объем настоящего изобретения не ограничен устройством передачи данных, и, вместо этого, другие варианты осуществления могут быть направлены на другие типы устройства для инструкций обработки данных или один или больше считываемых устройством носителей информации, включающих в себя инструкции, которые, в ответ на их исполнение в вычислительном устройстве, обеспечивают выполнение устройством одного или больше способов и технологий, описанных здесь.
Варианты осуществления могут быть воплощены в виде кода и могут быть сохранены на постоянном носителе данных, в котором сохранены инструкции, которые могут использоваться для программирования системы для выполнения инструкций. Носитель данных может включать в себя, но без ограничения, любой тип диска, включающий в себя гибкие диски, оптические диски, твердотельные приводы (SSD), постоянное запоминающее устройство на компактных дисках (CD-ROM), компакт-диск с возможностью перезаписи (CD-RW) и магнитооптические диски, полупроводниковые устройства, такие как запоминающие устройства, предназначенные только для считывания (ROM), оперативные запоминающее устройства (RAM), такие как динамические оперативные запоминающие устройства (DRAM), статическое оперативное запоминающее устройство (SRAM), стираемые программируемые постоянные запоминающие устройства (EPROM), запоминающие устройства флеш, электрически стираемые программируемые, предназначенные для считывания постоянные запоминающие устройства (EEPROM), магнитные или оптические карты или любые другие типы носителей, пригодные для сохранения электронных инструкций.
В то время как настоящее изобретение было описано в отношении ограниченного количества вариантов осуществления, для специалиста в данной области техники будут понятны различные модификации и их вариации. Предполагается, что приложенная формула изобретения охватывает все такие модификации и вариации, которые попадают в пределы истинной сущности и объема настоящего изобретения.