Способ, устройство и система для управления потреблением энергии неиспользуемым аппаратным средством канального интерфейса

Иллюстрации

Показать все

Группа изобретений относится к средствам администрирования питания. Технический результат – создание энергосберегающих канальных интерфейсов. Для этого предложено устройство управления питанием канальных интерфейсов, включающее в себя: множество аппаратных буферов, каждый из которых содержит информацию, ассоциированную с виртуальными каналами; логическую схему конфигурации для определения идентификатора, соответствующего максимальному количеству виртуальных каналов, которые обычно поддерживаются первым устройством и вторым устройством, и для получения значения управления и вентильную логическую схему для подачи напряжения в аппаратные буферы, в котором вентильная логическая схема выполнена с возможностью предотвращения подачи рабочего напряжения по меньшей мере в один из множества аппаратных буферов, когда максимальное количество виртуальных каналов меньше, чем количество аппаратных буферов. 4 н. и 23 з.п. ф-лы, 11 ил.

Реферат

Область техники, к которой относится изобретение

Данное раскрытие относится к компьютерным системам, и, в частности, (но не исключительно) к администрированию питанием канальных интерфейсов в таких системах.

Краткое описание чертежей

На фиг. 1 представлен вариант осуществления блок-схемы для вычислительной системы, включающей в себя многоядерный процессор.

На фиг. 2 представлен вариант осуществления структуры, состоящей из соединений из точки-в-точку, которые взаимно соединяют наборы компонентов.

На фиг. 3 представлен вариант осуществления стека многоуровневого протокола.

На фиг. 4 представлен вариант осуществления дескриптора транзакции PCIe.

На фиг. 5 представлен вариант осуществления последовательной структуры соединений из точки-в-точку PCIe.

На фиг. 6 показана блок-схема конструкции SoC в соответствии с вариантом осуществления.

На фиг. 7 показана блок-схема системы в соответствии с вариантом осуществления настоящего изобретения.

На фиг. 8 показана блок-схема последовательности операций способа конфигурации в соответствии с вариантом осуществления настоящего изобретения.

На фиг. 9A показана блок-схема накопителя конфигурации в соответствии с вариантом осуществления.

На фиг. 9B показана блок-схема части схемы регулирования напряжения в соответствии с вариантом осуществления.

На фиг. 10 показана блок-схема части системы в соответствии с вариантом осуществления.

Подробное описание изобретения

В следующем описании представлено множество конкретных деталей, таких как примеры конкретных типов конфигураций процессоров и конфигураций систем, конкретных структур аппаратных средств, конкретных деталей архитектуры и микроархитектуры, конкретных конфигураций регистров, конкретных типов инструкций, конкретных компонентов системы, конкретных результатов измерений/значений высоты, конкретных этапов конвейерной обработки процессора и операций, и т.д., для того, чтобы обеспечить полное понимание настоящего изобретения. Однако для специалиста в данной области техники должно быть понятно, что данные конкретные детали не обязательно используются на практике настоящего изобретения. В других случаях хорошо известные компоненты или способы, такие как конкретная и альтернативная архитектура процессора, конкретные логические схемы/коды для описанных алгоритмов, конкретный код встроенного программного обеспечения, конкретная операция взаимного соединения, конкретные логические конфигурации, конкретные технологии изготовления и материалы, конкретные варианты воплощения компилятора, конкретное выражение алгоритмов в коде, конкретная технология/логика отключения питания и управление отпиранием, и другие конкретные детали операций компьютерной системы не были подробно описаны для того, чтобы исключить излишнее загромождение настоящего изобретения.

Хотя следующие варианты осуществления могут быть описаны со ссылкой на энергосбережение и эффективность использования энергии в конкретных интегральных схемах, таких как компьютерные платформы или микропроцессоры, другие варианты осуществления применимы для других типов интегральных схем и логических устройств. Аналогичные представленные здесь технологии и описания вариантов осуществления могут применяться для других типов схем или полупроводниковых устройств, которые также могут получать пользу, благодаря лучшей эффективности использования энергии и энергосбережения. Например, раскрытые варианты осуществления не ограничены настольными компьютерными системами или компьютерами Ультрабук™. И могут также использоваться в других устройствах, таких как переносные устройства, планшетные устройства, другие тонкие ноутбуки, устройства типа системы на кристалле (SOC) и во встроенном программном обеспечении. Некоторые примеры переносных устройств включают в себя сотовые телефоны, устройства протокола Интернет, цифровые камеры, карманные персональные компьютеры (PDA) и переносные PC. Встраиваемые приложения обычно включают в себя микроконтроллер, цифровой сигнальный процессор (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 изменения порядка/вывода из работы, ILTB 120, буферы загрузки и сохранения, и очереди, могут совместно использоваться путем разделения на части. Другие ресурсы, такие как внутренние регистры общего назначения, регистр (регистры) на основе страничной таблицы, кэш данных низкого уровня и данные-TLB 115, исполнительный модуль (модули) 140, и части модуля 135, работающего не по порядку, потенциально совместно используются полностью.

Процессор 100 часто включает в себя другие ресурсы, которые могут полностью совместно использоваться, могут распределяться путем разделения на части, или могут быть специально выделены элементами обработки или для элементов обработки. На фиг. 1 представлен вариант осуществления исключительно примерного процессора с иллюстративными логическими модулями/ресурсами процессора. Следует отметить, что процессор может включать в себя или может исключать любой из этих функциональных модулей, а также может включать в себя любые другие известные функциональные модули, логику или встроенное программное обеспечение, которое не представлено. Как показано, ядро 101 включает в себя упрощенное, репрезентативное ядро процессора, работающее не по порядку (OOO). Но процессор, работающий по порядку, может использоваться в других вариантах осуществления. Ядро OOO включает в себя целевой буфер 120 ответвления для прогнозирования ответвлений, которые должны исполняться/которые требуется принимать, и буфер 120 инструкции-трансляции (I-TLB), для сохранения входов трансляции адресов для инструкций.

Ядро 101 дополнительно включает в себя модуль 125 декодирования, соединенный с модулем 120 выборки, для декодирования выбранных элементов. Логика выборки, в одном варианте осуществления, включает в себя индивидуальные секвенсоры, ассоциированные с интервалами 101a, 101b потока, соответственно. Обычно ядро 101 ассоциировано с первой ISA, которая определяет/устанавливает инструкции, исполняемые в процессоре 100. Часто инструкции машинного кода, которые представляют собой часть первой ISA, включают в себя часть инструкции (называется opp-кодом), которая ссылается на/устанавливает инструкцию или операцию для выполнения. Логика 125 декодирования включает в себя схему, которая распознает эти инструкции по их opp-кодам и передает декодированные инструкции в конвейер для обработки, как определено первой ISA. Например, как более подробно описано ниже, декодеры 125, в одном варианте осуществления, включают в себя логику, разработанную или адаптированную для распознавания конкретных инструкций, таких как инструкции транзакций. В результате распознавания декодерами 125, архитектура или ядро 101 предпринимает определенные, заданные действия для выполнения задач, ассоциированных с соответствующей инструкцией. Важно отметить, что любая из задач, блоков, операций и способов, описанных здесь, могут быть выполнены в ответ на одну или множество инструкций, некоторые из которых могут быть новыми или старыми инструкциями. Следует отметить, что декодеры 126, в одном варианте осуществления, распознают ту же ISA (или ее поднабор). В качестве альтернативы, в среде с гетерогенными ядрами, декодеры 126 распознают вторую ISA (либо поднабор из первой ISA, или отдельную ISA).

В одном примере блок 130 распределителя и переименования включает в себя распределитель для резервирования ресурсов, таких как файлы регистров, для сохранения результатов обработки инструкций. Однако потоки 101a и 101b потенциально могут выполняться не по порядку, при этом блок 130 распределителя и переименования также резервирует другие ресурсы, такие как буферы изменения порядка, для отслеживания результатов инструкций. Модуль 130 также может включать в себя блок переименования регистра для переименования регистров ссылки на программы/инструкции на другие регистры, внутренние для процессора 100. Модуль 135 изменения порядка/вывода из работы включает в себя компоненты, такие как упомянутые выше буферы изменения порядка, буферы загрузки и буферы сохранения, для поддержки исполнения не по порядку с последующим выводом из работы по порядку инструкций, выполненных не по порядку.

Блок 140 планировщика и исполнительного модуля (модулей), в одном варианте осуществления, включают в себя модуль планировщика для планирования инструкции/операции для исполнительных модулей. Например, инструкцию с плавающей точкой планируют по порту исполнительного модуля, который имеет доступный исполнительный модуль для операций с плавающей точкой. Файлы регистров, ассоциированные с исполнительными модулями, также включены для сохранения информации с результатами обработки инструкции. Примерные исполнительные модули включают в себя исполнительный модуль для операций с плавающей точкой, исполнительный модуль, работающий с целыми числами, исполнительный модуль перехода, исполнительный модуль загрузки, исполнительный модуль сохранения и другие известные исполнительные модули.

Кэш данных более низкого уровня и буфер 150 трансляции данных (D-TLB) соединены с исполнительным модулем (модулями) 140. Кэш данных предназначен для сохранения используемых/оперируемых в последнее время элементов, таких как операнды данных, которые потенциально содержаться в состояниях когерентности памяти. D-TLB предназначен для сохранения последних виртуальных/линейных трансляций в физический адрес.

В качестве конкретного примера, процессор может включать в себя структуру страничной таблицы, для разбивки физической памяти на множество виртуальных страниц.

Здесь ядра 101 и 102 совместно используют доступ к более высокому уровню или еще более дальний кэш, такой, как кэш второго уровня, ассоциированный с интерфейсом 110 на кристалле. Следует отметить, что более высокий уровень или более дальний относятся к уровням кэш, увеличивающимся или отдаляющимся дальше относительно исполнительного модуля (модулей). В одном варианте осуществления кэш более высокого уровня представляет собой кэш данных последнего уровня (последний кэш в иерархии памяти в процессоре 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) их комбинации.

Одна архитектура структуры взаимного соединения включает в себя архитектуру PCIe. Основная цель PCIe состоит в том, чтобы обеспечить возможность взаимодействия компонентов и устройств разных производителей в открытой архитектуре, охвата множества сегментов рынка; клиентов (настольных и мобильных), серверов (стандартных и промышленных) и встроенных устройств, и устройств передачи данных. PCI Express представляет собой взаимные соединения I/O высокой эффективности общего назначения, пригодные для большого разнообразия будущих вычислительных платформ и платформ передачи данных. Некоторые атрибуты PCI, такие как его модель использования, архитектура нагрузки и сохранения, и программные интерфейсы, поддерживались в течение его повторных изданий, тогда как предыдущие варианты воплощения параллельной шины были заменены высокомасштабируемым, полностью последовательным интерфейсом. В более поздних версиях PCI Express используются преимущества взаимных соединений из точки-в-точку, технологии на основе переключения и пакетированного протокола, для предоставления новых уровней рабочих характеристик и свойств. Администрирование питанием, качество услуги (QoS), поддержка установки во время работы/замена во время работы, целостности данных, и обработки ошибок находятся среди некоторых из усовершенствованных свойств, поддерживаемых PCI Express.

На фиг. 2 представлен вариант осуществления структуры, состоящей из соединений из точки-в-точку, которые соединяют наборы компонентов. Система 200 включает в себя процессор 205 и системную память 210, соединенную с концентратором 215 контроллера. Процессор 205 включает в себя любой элемент обработки, такой как микропроцессор, хост-процессор, встроенный процессор, сопроцессор или другой процессор. Процессор 205 соединен с концентратором 215 контроллера через системную шину (FSB) 206. В одном варианте осуществления FSB 206 представляет собой последовательное взаимное соединение из точки-в-точку, как описано ниже. В другом варианте осуществления, соединение 206 включает в себя последовательную архитектуру для дифференциального взаимного соединения, которая соответствует стандарту дифференциального взаимного соединения.

Системная память 210 включает в себя любое запоминающее устройство, такое как оперативное запоминающее устройство (RAM), энергонезависимое (NV) запоминающее устройство или другое запоминающее устройство, доступ к которому может осуществляться устройствами в системе 200. Системная память 210 соединена с концентратором 215 контроллера через интерфейс 216 памяти. Примеры интерфейса памяти включают в себя интерфейс памяти с двойной скоростью передачи данных (DDR), интерфейс памяти DDR с двойным каналом, и интерфейс памяти динамической RAM (DRAM).

В одном варианте осуществления концентратор 215 контроллера представляет собой корневой концентратор, корневой комплекс или корневой контроллер в иерархии взаимного соединения в последовательной шине периферийных компонентов PCI Express (PCIe или PCIE). Примеры концентратора 215 контроллера включают в себя набор микросхем, концентратор контроллера памяти (MCH), северный мост, взаимно соединенный концентратор контроллера (ICH), южный мост и корневой контроллер/концентратор. Часто термин набор микросхем относится к двум физически отдельным концентраторам контроллера, то есть, концентратору контроллера памяти (MCH), который соединен с концентратором контроллера взаимного соединения (ICH). Следует отметить, что современные системы часто включают в себя MCH, интегрированные с процессором 205, в то время как контроллер 215 предназначен для связи с устройствами I/O, аналогичным образом, как описано ниже. В некоторых вариантах осуществления, в случае необходимости, поддерживается "одноранговая" маршрутизация через корневой комплекс 215.

Здесь, концентратор 215 контроллера соединен с переключателем/мостом 220 через последовательное соединение 219. Модули 217 и 221 ввода/вывода, которые также могут называться интерфейсами/портами 217 и 221, включают в себя/воплощают многоуровневый стек протокола для обеспечения возможности обмена данными между концентратором 215 контроллера и переключателем 220. В одном варианте осуществления множество устройств выполнены с возможностью их соединения с переключателем 220.

Переключатель/мост 220 направляет пакеты/сообщения из устройства 225 вверх по потоку, то есть, вверх по иерархии в направлении корневого комплекса, в концентратор 215 контроллера, и вниз по потоку, то есть, вниз по иерархии от корневого контроллера из процессора 205 или системной памяти 210 в устройство 225. Переключатель 220, в одном варианте осуществления, называется логической сборкой множества виртуальных устройств моста PCI-в-PCI. Устройство 225 включает в себя любое внутреннее или внешнее устройство или компонент, который может соединяться с электронной системой, такой как устройство I/O, контроллер сетевого интерфейса (NIC), добавляемая карта, аудиопроцессор, сетевой процессор, привод жесткого диска, устройство накопитель, CD/DVD ROM, монитор, принтер, мышь, клавиатура, маршрутизатор, портативное устройство накопитель, устройство Firewire, устройство универсальной последовательной шины (USB), сканер и другие устройства ввода-вывода. Часто характерное для PCIe устройство называется конечной точкой. Хотя это специально не показано, устройство 225 может включать в себя мост из PCIe в PCI/PCI-X, для поддержки традиционной или другой версии устройства PCI. Конечные устройства в PCIe часто классифицируются, как традиционные PCIe или конечные точки, интегрированные с корневым комплексом.

Графический ускоритель 230 также соединен с концентратором 215 контроллера через последовательное соединение 232. В одном варианте осуществления графический ускоритель 230 соединен с MCH, который соединен с ICH. Переключатель 220 и, соответственно, устройство 225 I/O затем соединены с ICH. I/O модули 231 и 218 также должны воплощать многоуровневый стек протокола для обмена данными между графическим ускорителем 230 и концентратором 215 контроллера. Аналогично, представленное выше описание MCH, графический контроллер или графический ускоритель 230 сами по себе могут быть интегрированы в процессоре 205.

Возвращаясь к фиг. 3, здесь представлен вариант осуществления многоуровневого стека протокола. Многоуровневый стек 300 протокола включает в себя любую форму многоуровневого стека передачи данных, такого как стек быстрого пути взаимного соединения (QPI), стек PCIe, стек взаимного соединения для следующего поколения вычислительной техники с высокими рабочими характеристиками или другой многоуровневый стек. Хотя представленное ниже описание со ссылкой на фиг. 2-5, относится к стеку PCIe, те же концепции могут применяться в других стеках взаимного соединения. В одном варианте осуществления стек 300 протокола представляет собой стек протокола PCIe, включающий в себя уровень 305 транзакции, уровень 310 соединения и физический уровень 320. Интерфейс может быть представлен, как стек протокола 300 передачи данных. Представление в виде стека протокола передачи данных также может относиться к модулю или интерфейсу, воплощающему/включающему в себя стек протокола.

В PCI Express используются пакеты, для обмена информацией между компонентами. Пакеты формируют на уровне 305 транзакции и на уровне 310 соединения данных, для переноса информации из компонента передачи в компонент приема. По мере того, как передаваемые пакеты протекают через другие уровни, они расширяются дополнительной информацией, необходимой для обработки пакетов на этих уровнях. На стороне приема выполняется обратная обработка, и пакеты преобразуют из их представления физического уровня 320 в представление уровня 310 соединения данных и, в конечном итоге (для пакетов уровня транзакции) в форму, которая может обрабатываться уровнем 305 транзакции приемного устройства.

В одном варианте осуществления уровень 305 транзакции предназначен для обеспечения интерфейса между ядром обработки устройства и архитектурой взаимного соединения, такой как уровень 310 соединения данных и физический уровень 320. В этом отношении, основная ответственность уровня 305 транзакции состоит в сборке и разборке пакетов (то есть, пакетов уровня транзакции, или TLP). Уровень 305 трансляции обычно администрирует управлением потока на основе кредита для TLP. PCIe воплощает разделенные транзакции, то есть транзакции с запросом и ответом, разделенными по времени, что позволяют передавать по соединению другой трафик, в то время как целевое устройство собирает данные для ответа.

Кроме того, PCIe использует управление потоком на основе кредита. В этой схеме устройство объявляет исходную величину кредита для каждого из приемных буферов на уровне 305 транзакции. Внешнее устройство на противоположном конце соединения, такое как концентратор контроллера, подсчитывает величину кредита, расходуемую каждым TLP. Транзакция может быть передана, если транзакция не превышает предел кредита. При приеме отклика величину кредита восстанавливается. Преимущество кредитной схемы состоит в том, что задержка с возвратом кредита не влияет на рабочие характеристики, при условии, что предел кредита не будет превышен.

В одном варианте осуществления четыре области адреса транзакции включают в себя область адреса конфигурации, область адреса памяти, область адреса ввода/вывода и область адреса сообщения. Транзакции области памяти включают в себя один или больше запросов считывания и запросов записи для передачи данных в/из местоположения, отображенного в памяти. В одном варианте осуществления транзакции области памяти позволяют использовать два разных формата адреса, например, короткий формат адреса, такой как 32-битный адрес, или длинный формат адреса, такой как 64-битный адрес. Транзакции области конфигураций используются для области конфигураций доступа устройств PCIe. Транзакции для области конфигураций включают в себя запросы считывания и запросы записи. Транзакции области сообщения (или, просто сообщения) определены для поддержки передачи в полосе между агентами PCIe.

Поэтому, в одном варианте осуществления, уровень 805 транзакции собирает заголовок/полезную нагрузку 806 пакета. Формат для современных заголовков/полезных нагрузок пакета можно найти в спецификации PCIe на веб-сайте спецификации PCIe.

Вкратце, на фиг. 4 представлен вариант осуществления дескриптора транзакции PCIe. В одном варианте осуществления дескриптор 400 транзакции представляет собой механизм для переноса информации о транзакции. В этом отношении, дескриптор 400 транзакции поддерживает идентификацию транзакций в системе. Другое потенциальное использование включает в себя модификации отслеживания принятого по умолчанию упорядочивания транзакции и ассоциацию транзакции с каналами.

Дескриптор 400 транзакции включает в себя поле 402 глобального идентификатора, поле 404 атрибутов и поле 406 идентификатора канала. В представленном примере, поле 402 глобального идентификатора показано, как содержащее поле 408 локального идентификатора транзакции и поле 410 идентификатора источника. В одном варианте осуществления идентификатор 402 глобальной транзакции является уникальным для всех неотправленных запросов.

В соответствии с одним вариантом осуществления, поле 408 локального идентификатора транзакции представляет собой поле, генерируемое запрашивающим агентом, и оно является уникальным для всех неотправленных запросов, которые требуют завершения для этого запрашивающего агента. Кроме того, в этом примере, идентификатор 410 источника уникально идентифицирует агента запрашивающего устройства в пределах иерархии PCIe. В соответствии с этим, вместе с ID 410 источника, поле 408 локального идентификатора транзакции обеспечивает глобальную идентификацию транзакции в пределах области иерархии.

Поле 404 атрибутов устанавливает характеристики и