СПОСОБ ОБЕСПЕЧЕНИЯ РАЗЛИЧНОЙ ДЛИНЫ ПАКЕТОВ В ПРОТОКОЛЕ ПЕРЕДАЧИ ДАННЫХ
METHOD OF PROVIDING DIFFERENT PACKET LENGTH IN DATA TRANSFER PROTOCOL

Уровень техники, предшествующий изобретению
Компьютерные системы состоят из различных деталей и компонентов, которые обычно сопряжены через шину или межкомпонентное соединение. Ранее, устройства ввода-вывода сопрягались по стандартной многоточечной архитектуре с параллельной шиной, т.н. межкомпонентному соединению периферийных компонентов (шине PCI). Недавно появились шины ввода-вывода нового поколения, т.н. шины PCI-Express (PCIe), обеспечивающие более быстрое межкомпонентное соединение устройств, использующие последовательный протокол физического уровня передачи данных.
Архитектура шины PCIe включает в себя многоуровневый протокол для передачи данных между устройствами. Например, стек протоколов PCIe образован из физического уровня, уровня канала связи и уровня транзакций. Канал связи PCIe построен вокруг выделенных односторонних пар последовательных двухточечных соединений, называемых дорожками. Канал связи между устройствами включает в себя несколько дорожек, например одну, две, шестнадцать, тридцать две и т.д. Текущая спецификация PCIe, PCI Express™ Базовая спецификация версии 2.0 (опубликованная 17 января 2007 года) доступна на http://www.pcisig.com/specifications/pciexpress/.
В протоколе PCIe для передачи пакетов по каналу связи используется механизм управления потоками на основе кредитов доверия. Принимающее устройство выдает кредиты доверия на основе объема буферной памяти, имеющейся у принимающего устройства. Передающему устройству запрещено начинать транзакции, для которых может потребоваться больше кредитов доверия, чем их заявило принимающее устройство. Для осуществления транзакции длина полезных данных, указываемая в заголовке запроса передающего устройства, должна точно совпадать с объемом передаваемых полезных данных и быть меньше или равна количеству кредитов доверия, имеющихся у принимающего устройства. Это может неоправданно ограничивать гибкость при передаче данных.
Краткое описание чертежей
На фиг.1 показана блок-схема системы по одному из вариантов осуществления настоящего изобретения.
На фиг.2А показан пример передачи пакетов данных по одному из вариантов осуществления настоящего изобретения.
На фиг.2В показан пример трех пакетов, являющихся частью потока данных по одному из вариантов осуществления настоящего изобретения.
На фиг.3 показана блок-схема способа по одному из вариантов осуществления настоящего изобретения.
Подробное описание изобретения
На фиг.1 показана блок-схема системы по одному из вариантов осуществления настоящего изобретения, включая устройства, сопряженные с контроллером-концентратором через последовательный канал связи. Система 100 включает в себя процессор 105 и системную память 110, сопряженную с контроллером-концентратором 115. Процессор 105 включает в себя любое процессорное устройство, такое как микропроцессор, главный процессор, встроенный процессор, сопроцессор или иной процессор. Процессор 105 сопряжен с контроллером-концентратором 115 по внешней шине 106. В одном из вариантов осуществления внешняя шина 106 является последовательным двухточечным межкомпонентным соединением, описанным ниже.
Системная память 110 включает в себя любое запоминающее устройство, такое как оперативное запоминающее устройство (ОЗУ), энергонезависимую память или другой тип памяти, доступный для устройств, находящихся в системе 100. Системная память 110 сопряжена с контроллером-концентратором 115 через интерфейс 116 памяти.
В одном из вариантов осуществления контроллер-концентратор 115 является корневым хабом или корневым контроллером в иерархии межкомпонентных соединений PCIe. Примерами контроллера-концентратора 115 являются чипсет, контроллер-концентратор памяти (МСН), северный мост, контроллер-концентратор ввода/вывода (ICH), южный мост и корневой контроллер/хаб. В данном случае контроллер-концентратор 115 сопряжен с коммутатором/мостом 120 через последовательный канал 119 связи. Модули 117 и 121 ввода/вывода, которые также называются интерфейсами/портами 117 и 121, включают в себя/реализуют многоуровневый набор протоколов для обеспечения передачи данных между контроллером-концентратором 115 и коммутатором 120. В одном из вариантов осуществления к коммутатору 120 могут подключаться различные устройства. Также имеют право на существование варианты осуществления, в которых процессор и чипсет интегрированы в одном устройстве. Кроме этого, подобная технология не требует нового пересмотра протокола PCIe и может быть реализована, в том числе, с использованием устройств, совместимых с PCIe 2.0, 1.1. Таким образом, варианты осуществления могут использоваться везде, где для передачи данных используется межкомпонентное соединение PCIe.
Коммутатор 120 маршрутизирует пакеты/сообщения из устройства 125 вперед, т.е. вверх по иерархии в направлении контроллера-концентратора 115 и назад, т.е. вниз по иерархии, от контроллера-концентратора 115 к устройству 125. Модули ввода/вывода 122 и 126 реализуют многоуровневый стек протоколов для передачи данных между коммутатором 120 и устройством 125. Устройство 125 включает в себя любые внутренние и внешние устройства или компоненты, сопрягаемые с электронной системой, такие как устройство ввода/вывода, контроллер сетевого интерфейса (NIC), карта расширения, звуковой процессор, сетевой процессор, жесткий диск, устройство памяти, монитор, принтер, мышь, клавиатуру, маршрутизатор, съемное устройство памяти, устройство последовательной шины сверхбыстрой передачи данных, устройство универсальной последовательной шины (USB), сканер, а также другие устройства ввода/вывода.
Графический ускоритель 130 также сопряжен с контроллером-концентратором 115 через последовательный канал 132 связи. В одном из вариантов осуществления графический ускоритель 130 сопряжен с контроллером-концентратором памяти, который сопряжен с контроллером-концентратором ввода/вывода. Коммутатор 120, а соответственно и устройство 125 ввода/вывода также сопряжены с контроллером-концентратором ввода/вывода. Модули ввода/вывода 131 и 118 также должны реализовывать многоуровневый стек протоколов для передачи данных между графическим ускорителем 130 и контроллером-концентратором 115.
В одном из вариантов осуществления стек протоколов PCIe может включать в себя уровень транзакций, уровень канала связи и физический уровень. В одном из вариантов осуществления уровень транзакций должен обеспечивать интерфейс между процессорным ядром устройства и архитектурой межкомпонентных соединений, например, уровень канала связи и физический уровень. В этой связи, главная задача уровня транзакций заключается в ассемблировании и дизассемблировании пакетов (т.е. пакетов уровня транзакций или TLP). PCIe реализует раздельные транзакции, т.е. транзакции, в которых запрос и ответ разделены по времени, позволяя каналу связи осуществлять другой график, пока целевое устройство собирает данные для ответа.
Кроме этого, в PCIe используется управление потоками данных на основе кредитов доверия. В данной схеме устройство заявляет начальное количество кредитов доверия для каждого из принимающих буферов на уровне транзакций. Внешнее устройство, на противоположном конце канала связи, такое как контроллер-концентратор 115 по фиг.1, подсчитывает количество кредитов доверия, использованных каждым из пакетов уровня транзакций. Транзакция может быть осуществлена, если объем транзакции не превышает количество кредитов доверия. После получения ответа количество кредитов доверия возобновляется. Преимущество схемы с выдачей кредитов доверия заключается в том, что латентность возобновления кредита доверия не влияет на производительность при условии, что не достигается лимит по количеству кредитов.
Уровень канала связи выступает в качестве промежуточного этапа между уровнем транзакций и физическим уровнем. В одном из вариантов осуществления задача уровня канала связи заключается в том, чтобы обеспечивать надежный механизм обмена пакетами уровня транзакций между двумя компонентами по каналу связи. Одна сторона канала связи принимает пакеты уровня транзакций, ассемблированные уровнем транзакций, добавляет идентификаторы, рассчитывает и добавляет код контроля ошибок, т.е. контрольные суммы (CRC) и передает измененные пакеты TLP на физический уровень для передачи через физический канал связи на внешнее устройство.
В одном из вариантов осуществления физический уровень физически передает пакет на внешнее устройство. Физический уровень включает в себя секцию передачи для подготовки исходящей информации к передаче и секцию приема для идентификации и подготовки принимаемой информации перед ее передачей на уровень канала связи. Физический уровень включает в себя передающее и принимающее устройства. В передающем устройстве имеются символы, которые передающее устройство упорядочивает и передает на внешнее устройство. В принимающем устройстве имеются упорядоченные символы, полученные от внешнего устройства, и он преобразует принятые сигналы в поток бит. Поток бит разупорядочивается и передается на логический подблок. В одном из вариантов осуществления используется код передачи 8b/10b, при котором передаются/принимаются десятибитные символы. Кроме этого, в одном из примеров принимающее устройство также синхронизирует символы, получаемые из входящего потока последовательных данных. Как отмечалось выше, хотя уровень транзакций, уровень канала связи и физический уровень рассматривались со ссылкой на конкретный вариант осуществления стека протоколов PCIe, многоуровневый стек протоколов этим не ограничивается. В принципе, может быть включен/реализован любой многоуровневый протокол.
Согласно протоколу PCIe для передающего устройства, собирающегося инициировать транзакцию с данными, действуют следующие правила: (1) передающее устройство должно подавать запросы, длина данных которых равна или меньше, чем у сконфигурированных полезных данных максимального размера; (2) передающее устройство должно гарантировать, что длина запроса будет меньше или равна количеству кредитов доверия, имеющихся у принимающего устройства, для обработки запроса; (3) передающее устройство должно гарантировать, что после того как начнется передача пакета, оно сможет обеспечить передачу/поток данных в соответствии с информацией, указанной в поле длины запроса, другими словами, передающее устройство не может остановить передачу пакета, поэтому передающее устройство должно буферизовать данные или гарантировать, что оно сможет обеспечить передачу потока данных с пакетной скоростью; и (4) передача любых пакетов с высоким приоритетом должна осуществляться после завершения передачи текущего пакета. Однако в некоторых случаях передача пакета может быть завершена с символом «аварийное завершение», в этом случае все пересланные данные принимающим устройством удаляются.
Для обеспечения большей гибкости данного протокола в вариантах осуществления может устанавливаться допустимая граница разъединения пакета. Таким образом, передающему устройству разрешается аннулировать запрос у допустимой границы разъединения пакета. Хотя объем настоящего изобретения этим не ограничивается, допустимая граница разъединения пакета может быть установлена в 64 байта (В) или кратно 64 В либо иному объему. Некоторые варианты осуществления также могут включать в себя управлением потоком данных и расширение протокола по длине с целью обеспечения подобных изменений переменной длины. Передающее устройство может завершить передачу пакета в соответствии с правилами завершения передачи пакетов по шине PCIe, поставив контрольную сумму и символ нормального завершения пакета для прекращения передачи пакета.
В некоторых вариантах осуществления правила по длине могут быть расширены таким образом, чтобы в поле длины указывался размер полезных данных, которые передающее устройство собирается передавать, однако передача пакета может быть завершена по достижении допустимой границы разъединения пакета. Например, передающее устройство может инициировать передачу пакета с длиной, указывающей размер передачи в 256 В, но завершить передачу пакета после первых 128 В полезных данных. Если передача прошла успешно, т.е. при передаче не возникло никаких ошибок, то принанимающее устройство потребляет первые 128 В пакета, которые были успешно переданы, вместо удаления данных в соответствии с процессом «аварийного завершения». Передающее устройство может переслать оставшиеся полезные данные как новую отдельную транзакцию; принимающее устройство не обязано хранить историю ранее принятых транзакций. Передающее устройство может инициировать новую транзакцию для завершения передачи первоначально планировавшихся полезных данных с длиной, равной 128 В, и отправить оставшиеся полезные данные, либо передающее устройство может начать новый пакет другой длины, начиная с ранее разъединенной границы пакета или начать новый пакет с высоким приоритетом.
В некоторых вариантах осуществления правила управления потоком данных могут быть расширены таким образом, чтобы передающему устройству было разрешено инициировать транзакцию, если у него будет достаточно кредитов доверия до допустимой границы разъединения и если оно сможет гарантировать потоковый режим. Если принимающее устройство выдает кредиты доверия до следующей допустимой границы разъединения, то передающему устройству разрешается продолжить передачу за текущую допустимую границу разъединения, до следующей допустимой границы разъединения при условии, что имеется достаточное количество кредитов доверия и данные могут быть переданы без остановок.
Таким образом, варианты осуществления обеспечивают расширение протокола, разрешая передающему устройству указывать длину полезных данных, которая может превышать фактический объем информации, передаваемой в полезных данных. Объем информации, передаваемой в полезных данных, не должен превышать количество кредитов доверия, предоставленных принимающим устройством. Передача пакета может быть завершена/приостановлена у указанной границы разъединения. При подобной схеме разрешается завершать передачу больших пакетов с данными, например по 4 килобайта (KB) (длина = 4KB), у границы разъединения для разделения пакетов с высоким приоритетом.
Варианты осуществления могут дополнительно расширять данный протокол для: (1) оптимизации принимающих буферов при потоковой передаче данных из памяти; (2) более эффективного использования канала передачи за счет использования кредитов доверия; и (3) оптимизации механизмов хранения и передачи передающего устройства, обеспечивая, таким образом, потоковую передачу данных через межкомпонентное соединение PCIe. Соответственно, передающее устройство может инициировать передачу большого пакета, как только оно накопит объем данных, соответствующий границе разъединения, или если оно сможет гарантировать передачу потока данных без остановок, по меньшей мере, до границы разъединения и если у него будет достаточное количество кредитов доверия от принимающего устройства. По достижении границы разъединения передающее устройство может продолжить передачу полезных данных, если объема данных, имеющихся у него в памяти, достаточно для передачи до следующей границы разъединения или если оно может гарантировать, что поток данных будет передаваться без остановок до следующей границы разъединения и ему было выделено достаточное количество заголовочных кредитов доверия. Если объема данных в памяти не хватает до границы разъединения, либо передачу потока данных до границы разъединения гарантировать невозможно, либо количество кредитов доверия недостаточно, то передающее устройство завершает передачу пакета.
Таким образом, варианты осуществления позволяют при реализации оптимизировать буферную память принимающего устройства, улучшить использование канала передачи данных и оптимизировать буферную память передающего устройства. Обычные механизмы PCIe, наоборот, не столь гибкие и требуют, чтобы запрашивающее устройство не начинало передачу запросов до тех пор, пока не будет получено достаточное количество кредитов доверия на весь объем полезных данных, и не допускают оптимизацию «на лету». Варианты осуществления настоящего изобретения позволяют осуществлять потоковую передачу данных из контроллера памяти через межкомпонентное соединение PCIe. Завершения (например, считывания памяти устройством ввода/вывода) могут свидетельствовать о завершении подготовки полезных данных в объеме, равном максимальному объему полезных данных, и оптимизировать завершение полезных данных. Это позволяет осуществлять завершение, по меньшей мере, на уровне 64 В и выше, вплоть до максимального размера полезных данных, улучшая, таким образом, использование канала передачи при завершении считываний.
На фиг.2А показан пример передачи пакетов 200 с данными по одному из вариантов осуществления настоящего изобретения. Как показано на фиг.2, передающее устройство может переслать пакет 205, длина полезных данных в котором первоначально предполагалась в 256 байт, как это указано в заголовке пакета 205, с досрочным завершением. Точнее, передача пакета 205 завершается после достижения первой допустимой границы разъединения в 64 байт. Таким образом, как показано на фиг.2А, пакет 205 включает в себя начальный сегмент, сегмент с заголовком длины, сегмент с полезными данными (соответствующий по длине допустимой границе разъединения), за которыми следует сквозная контрольная сумма CRC (ECRC), затем, в свою очередь, последовательность завершения, которая включает в себя сегмент контрольной суммы канала связи и сегмент завершения. Следует отметить, что могут использоваться два протокола CRC, CRC канала связи, который используется для всех пакетов, и дополнительный ECRC, который используется для защиты сквозной передачи пакетов. Отличия заключаются в следующем: протокол CRC канала связи используется каналом связи для защиты пакета при передаче от передающего на принимающее устройство по каналу связи, а дополнительный ECRC (если поддерживается) используется для защиты пакета на уровне транзакций и проверяется лишь в пункте конечного назначения, который может находиться за несколькими транзитными участками. Проверка также осуществляется на уровне транзакций в пункте конечного назначения. После завершения передачи данного пакета 205 передается другой пакет 210, который включает в себя оставшиеся части данных завершенного пакета 205. Точнее, пакет 210 маркируется как пакет с полезными данными длиной 192 байта (что соответствует длине остатка завершенного пакета 205). Таким образом, как показано на фиг.2А, пакет 210 передает 192 В полезных данных, за которыми идет сегмент ECRC и завершающий сегмент.
За счет использования передающего устройства, способного завершать передачу пакета, варианты осуществления могут позволить разделять пакеты с высоким приоритетом после завершения пакета, после чего может досылаться остаток разъединенного пакета. Как показано на фиг.2В, поток 250 данных состоит из трех пакетов, а именно завершенного пакета 255, пакета 260 с высоким приоритетом и пакета 265 с остатком. После завершения передачи завершенного пакета 255 пакет 260 с высоким приоритетом в варианте осуществления, показанном на фиг.2В, включает в себя только начальный сегмент, сегмент заголовка, ECRC и завершающий сегмент (т.е. пакет с высоким приоритетом, без данных). После передачи подобного пакета с высоким приоритетом передающее устройство может отправить пакет 265 с остатком, являющийся остатком разъединенного пакета. Таким образом, как показано на фиг.2В, в остатке 265 передаются оставшиеся 192В полезных данных. Несмотря на то что варианты осуществления показаны на конкретных примерах, приведенных на фигурах 2А и 2В, объем настоящего изобретения этим не ограничивается.
На фиг.3 показана блок-схема способа по одному из вариантов осуществления настоящего изобретения. Как показано на фиг.3, способ 300 может использоваться для передачи пакета с передающего на принимающее устройство. В частности, как показано на фиг.3, способ 300 может начинаться с передачи первого пакета с передающего на принимающее устройство (ячейка 310). Подобный пакет, в одном из вариантов осуществления, может включать в себя заголовок, в котором указывается длина пакета, который может состоять из нескольких сегментов с данными, каждый из которых соответствует по длине допустимой границе разъединения. Например, длина в заголовке может быть указана для полезных данных относительно большой длины, например 4 KB, тогда как допустимая граница разъединения в протоколе связи межкомпонентного соединения, связывающего передающее и принимающее устройства, может быть установлена в 64 байта.
Во время передачи первого пакета передающее устройство, а именно уровень транзакций передающего устройства или внутренняя конструкция устройства могут завершить передачу, например, для разделения пакета с высоким приоритетом. Таким образом, как показано на фиг.3, в ячейке 320, передача первого пакета может быть завершена у допустимой границы разъединения. При завершении передачи первого пакета передающее устройство может отправить сегмент кода с ошибкой, например ECRC, а также сигнал о завершении, сообщающий о завершении передачи первого пакета. После этого передающее устройство может переслать второй пакет (ячейка 330) с передающего на принимающее устройство. В одном из вариантов осуществления второй пакет может быть пакетом с высоким приоритетом, который может включать или не включать в себя полезные данные.
Возвратимся вновь к фиг.3; после передачи второго пакета может быть начата передача третьего пакета с передающего на принимающее устройство. В различных вариантах осуществления подобный третий пакет может включать в себя остаток полезных данных из первого пакета (ячейка 340). Например, предположим, что передача первого пакета была завершена у допустимой границы разъединения после передачи 2 KB сегмента с полезными данными из первого пакета. В этом случае третий пакет может включать в себя заголовок, указывающий длину в 2 KB, а в соответствующих полезных данных может содержаться остаток в 2 KB из полезных данных, которые первоначально предполагалось передать в первом пакете. Несмотря на реализацию в подобном варианте осуществления по фиг.3, объем настоящего изобретения этим не ограничивается.
Варианты осуществления могут уменьшить количество кремния (число логических элементов), используемого в чипсетах и периферийных устройствах, и улучшить использование полосы пропускания каналов связи, что обеспечит дополнительную пропускную способность данных и максимально возможную полосу пропускания и производительность.
Варианты осуществления могут быть реализованы в кодированном виде и находиться на устройстве хранения вместе с командами, которые могут использоваться для программирования системы по выполнению данных команд. Устройства хранения могут включать в себя, но не ограничиваться, любые виды дисковых носителей, включая дискеты, оптические диски, компакт диски с однократной записью (CD-ROM), компакт диски с многократной записью (CD-RW), магнитооптические диски, полупроводниковые устройства, такие как постоянные запоминающие устройства (ROM), оперативные запоминающие устройства (RAM), такие как динамические оперативные запоминающие устройства (DRAM), статические оперативные запоминающие устройства с произвольной выборкой (SRAM), стираемые программируемые постоянные запоминающие устройства (EPROM), флеш-память, электрически стираемые программируемые постоянные запоминающие устройства (EEPROM), магнитные или оптически карты или любые другие виды носителей, пригодные для хранения электронных команд.
Хотя настоящее изобретение было описано с использованием ограниченного количества вариантов осуществления, специалистам в данной области техники будет очевидно, что в нем возможны различные изменения и модификации. Предполагается, что прилагаемая формула изобретения охватывает любые подобные изменения и модификации, составляющие объем и сущность настоящего изобретения.