СЕТЕВОЙ ИНТЕРФЕЙС
NETWORK INTERFACE

ОБЛАСТЬ ИЗОБРЕТЕНИЯ
Настоящее изобретение относится к сетевому интерфейсу для вычислительной системы и способам управления передачей данных.
ПРЕДПОСЫЛКИ ИЗОБРЕТЕНИЯ
Сетевой интерфейс облегчает передачу данных между вычислительной системой и сетью данных. Типичные сетевые интерфейсы имеют выделенное аппаратное обеспечение, которое устанавливает канал связи с внешней сетью. Это аппаратное обеспечение может быть интегрировано с другими компонентами главной вычислительной системы. Выделенное программно-аппаратное обеспечение и/или программное обеспечение могут также быть объединены в сетевой интерфейс. Обычные названия сетевых интерфейсов включают сетевую интерфейсную карту (NIC), контроллер сетевого интерфейса, адаптер сетевого интерфейса и блок сетевого интерфейса.
Вычислительные системы, выполненные с возможностью объединения в сеть, обычно имеют по меньшей мере один выделенный сетевой интерфейс. Сетевой интерфейс создает мост между внутренней системной шиной главной вычислительной системы (например, PCI (интерфейс периферийных устройств) или PCI Express (последовательный интерфейс периферийных устройств)) и внешней сетью данных (например, Ethernet сеть). Сетевые интерфейсы могут быть интегрированы с другими системными компонентами (например, «встроенными» сетевыми контроллерами, которые интегрированы с системной материнской платой) или поставлены, как модульные компоненты (например, PCI-e карты).
Обычные сетевые интерфейсы имеют две основные функции: получение данных из внешней сети и передачу данных от главной вычислительной системы во внешнюю сеть. Сетевой интерфейс взаимодействует с системной шиной главной вычислительной системы во время этих двух операций для управления обменом данными. Эти взаимодействия подчиняются протоколам (обычно устанавливаются сетевым интерфейсом и реализуются драйвером сетевого интерфейса), которые обеспечивают взаимодействие с сетевым интерфейсом программных приложений, выполняемых главной вычислительной системой.
Обычные протоколы интерфейсного драйвера, в основном, устанавливают приоритет минимизации ресурсов за счет задержки связи. Транзакции данных между сетевым интерфейсом и главной вычислительной системой, использующей обычные протоколы драйвера, обычно включают обмен управляющими сообщениями для координации передачи данных (например, обмен данными об указателях распределения и подтверждениях считывания). Это может обеспечивать существенную задержку, которая замедлит передачу сетевых данных между системами.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
В первом аспекте настоящее изобретение обеспечивает способ получения данных, включающий получение данных из внешней сети через сетевой интерфейс и передачу данных в память главной вычислительной системы через внутреннюю системную шину. Сетевой интерфейс задает распределение данных в памяти главной вычислительной системы без вмешательства со стороны главной вычислительной системы.
Во втором аспекте способ получения данных включает:
получение нескольких кадров данных из внешней сети через сетевой интерфейс, и
передачу каждого из кадров данных из сетевого интерфейса в приемный буфер, выделенный в памяти главной вычислительной системы через внутреннюю системную шину,
при этом сетевой интерфейс задает распределение кадров данных в приемном буфере без вмешательства со стороны главной вычислительной системы.
В варианте осуществления способ включает передачу каждого из полученных кадров данных из сетевого интерфейса в приемный буфер с использованием протокола записи без обратной связи.
В варианте осуществления способ включает запись полученных кадров данных последовательно в диапазон непрерывной памяти в приемном буфере.
В варианте осуществления способ включает распределение приемного буфера в непрерывной памяти с объемом памяти для нескольких кадров данных.
В варианте осуществления способ включает разделение выделенной памяти на несколько последовательных индивидуально адресуемых страниц равнозначного объема.
В варианте осуществления способ включает запись полученных кадров данных последовательно в каждую из страниц в приемном буфере.
В варианте осуществления способ включает рекурсивную перезапись приемного буфера без подтверждения считывания со стороны главной вычислительной системы.
В варианте осуществления способ включает фрагментацию полученных кадров данных, которые превысили объем памяти страниц, и распределение фрагментов кадра для нескольких последовательных страниц в приемном буфере.
В варианте осуществления способ включает генерирование управляющих данных, которые облегчают восстановление фрагментированных кадров данных путем определения взаимосвязи данных кадра в последовательных страницах.
В варианте осуществления способ включает добавление управляющих данных в конец каждого фрагмента кадра, так чтобы управляющие данные записывались в конце соответствующей страницы в той же шинной транзакции, как и фрагмент кадра.
В варианте осуществления управляющие данные также определяют длину фрагмента кадра, распределяемого для соответствующей страницы.
В третьем аспекте настоящее изобретение предлагает сетевой интерфейс, содержащий сетевую сторону, которая получает данные из внешней сети данных, хост-сторону, которая передает данные в память главной вычислительной системы через внутреннюю системную шину, и систему управления, которая задает распределение данных в памяти главной вычислительной системы без вмешательства со стороны главной вычислительной системы.
В четвертом аспекте сетевой интерфейс содержит:
сетевую сторону, которая получает несколько кадров данных из внешней сети данных,
хост-сторону, которая передает кадры данных в приемный буфер, распределенный в памяти главной вычислительной системы, через внутреннюю системную шину хоста, и
систему управления, которая задает распределение кадров данных в приемном буфере без вмешательства со стороны главной вычислительной системы.
В варианте осуществления сетевой интерфейс содержит контроллер записи, который передает каждый из полученных кадров данных в приемный буфер с использованием протокола записи без обратной связи.
В варианте осуществления контроллер записи сконфигурирован так, чтобы записывать кадры данных последовательно в диапазон непрерывной памяти в приемном буфере.
В варианте осуществления сетевой интерфейс содержит модуль управления буфером, который распределяет несколько последовательных индивидуально адресуемых страниц с равнозначным объемом памяти в непрерывной памяти, распределенной для приемного буфера.
В варианте осуществления сетевой интерфейс содержит контроллер записи, который передает полученные кадры данных последовательно в каждую из страниц в приемном буфере.
В варианте осуществления контроллер записи рекурсивно перезаписывает приемный буфер без подтверждения считывания со стороны главной вычислительной системы.
В варианте осуществления сетевой интерфейс содержит модуль управления кадром, который фрагментирует полученные кадры данных, которые превысили объем памяти страниц, и распределяет фрагменты кадра в нескольких последовательных страницах в приемном буфере.
В варианте осуществления модуль управления кадром генерирует управляющие данные, которые облегчают восстановление фрагментированных кадров данных путем определения взаимосвязи данных кадра в последовательных страницах.
В варианте осуществления контроллер записи добавляет управляющие данные в конец каждого фрагмента кадра, так чтобы управляющие данные записывались в конце соответствующей страницы в той же шинной транзакции, как и фрагмент кадра.
В варианте осуществления управляющие данные также определяют длину фрагмента кадра, распределенного для соответствующей страницы.
В пятом аспекте настоящее изобретение предлагает протокол доступа к буферу, включающий:
считывание значения счетчика итераций записи из нескольких страниц в буфере памяти, при этом счетчик итераций записи определяет, когда данные были последний раз записаны в соответствующую страницу,
определение адреса записи, который определяет следующую страницу для получения данных, при этом адрес записи определяется исходя из значений счетчиков итераций записи, и
рекуррентный опрос адреса записи для обнаружения обновления записи для соответствующей страницы.
В шестом аспекте протокол доступа к буферу включает:
обращение к нескольким страницам данных в циклическом буфере и считывание значения счетчика итераций записи из каждой из доступных страниц, при этом счетчик итераций записи определяет итерацию записи, когда данные были последний раз записаны в соответствующую страницу,
определение адреса записи для циклического буфера, который определяет следующую страницу для перезаписи данными, при этом адрес записи определяется путем перехода в счетчик итераций записи, закрепленный за соседними страницами, и
рекуррентный опрос адреса записи для обнаружения обновления записи, при этом обновление записи определяется исходя из изменений в счетчике итераций записи соответствующей страницы.
В варианте осуществления протокол включает:
копирование значения счетчика итераций записи из выделенной страницы в циклическом буфере и формирование значения счетчика итераций считывания из скопированного значения счетчика итераций записи, и
сравнение значения счетчика итераций считывания с несколькими значениями счетчиков итераций записи, закрепленных за последовательными страницами в циклическом буфере, для идентификации адреса записи.
В варианте осуществления протокол включает:
инициацию указателя отсчета в выделенной странице в циклическом буфере,
сравнение значения счетчика итераций записи, закрепленного за выделенной страницей, со значением счетчика итераций считывания, и
приращение значений указателя отсчета для приведения в соответствие с последующими страницами в циклическом буфере до тех пор, пока значение указателя отсчета не совпадет с адресом записи.
В варианте осуществления протокол включает приращение значений указателя отсчета для приведения в соответствие с последующей страницей после обнаружения обновления записи.
В варианте осуществления протокол включает сохранение значения счетчика цикла для циклического буфера, который определяет текущую итерацию записи, при этом счетчик цикла приращает значение в завершении каждой итерации записи.
В варианте осуществления протокол включает запись значения счетчика цикла в каждую страницу в циклическом буфере с каждой транзакцией записи в соответствующие страницы, при этом счетчик цикла обеспечивает счетчику итераций записи синхронизацию считывания.
В варианте осуществления протокол включает:
извлечение данных из страницы, соответствующей адресу записи, когда обнаружено обновление записи,
проверку значения счетчика итераций записи вслед за извлечением данных для проверки правильности процесса извлечения и
генерирование ошибки считывания, если счетчик итераций записи изменил значение после обнаружения обновления записи.
В варианте осуществления протокол включает:
считывание индекса длины из текущей страницы, соответствующей адресу записи, после обновления записи, и
объединение данных из текущей страницы с данными из следующей страницы, когда индекс длины указывает, что текущая страница содержит фрагмент кадра.
В седьмом аспекте настоящее изобретение предлагает систему доступа к буферу, содержащую:
модуль индексов, который считывает значение счетчика итераций записи из нескольких страниц данных в буфере памяти, при этом счетчик итераций записи определяет, когда данные были последний раз записаны в соответствующую страницу,
модуль синхронизации, который определяет адрес записи, определяя следующую страницу для получения данных, при этом адрес записи определяется исходя из значений счетчиков итераций записи, и
устройство контроля записи, которое рекуррентно опрашивает адрес записи для обнаружения обновления записи для соответствующей страницы.
В восьмом аспекте система доступа к буферу содержит:
модуль индексов, который обращается к нескольким страницам данных в циклическом буфере и оценивает значение счетчика итераций записи каждой доступной страницы; счетчик итераций записи определяющий итерацию записи, когда данные были последний раз записаны в соответствующую страницу,
модуль синхронизации, который определяет адрес записи для циклического буфера, при этом адрес записи определяет следующую страницу для перезаписи данными, и
устройство контроля записи, которое рекуррентно опрашивает адрес записи для обнаружения обновления записи, при этом обновление записи определяется исходя из изменения значения счетчика итераций записи для соответствующей страницы.
В варианте осуществления модуль индексов копирует значение счетчика итераций записи из выделенной страницы в циклическом буфере и устанавливает значение счетчика итераций считывания из скопированного значения счетчика итераций записи, а модуль синхронизации сравнивает значение счетчика итераций считывания с несколькими значениями счетчиков итераций записи, закрепленными за последовательными страницами в циклическом буфере, для идентификации адреса записи.
В варианте осуществления модуль синхронизации инициирует указатель отсчета в выделенной странице в циклическом буфере, сравнивает значение счетчика итераций записи, закрепленное за выделенной страницей, со значением счетчика итераций считывания и приращает значение указателя отсчета для приведения в соответствие с последующими страницами в циклическом буфере, пока указатель отсчета не совпадет с адресом записи.
В варианте осуществления модуль синхронизации приращает значение указателя отсчета для приведения в соответствие с последующей страницей в буфере, когда устройство контроля записи обнаруживает обновление записи.
В варианте осуществления система содержит модуль извлечения, который извлекает данные из страниц, соответствующих адресу записи,при обнаружении обновление записи, проверяет значение счетчика итераций записи после извлечения данных для проверки правильности процесса извлечения и генерирует ошибку считывания, если счетчик итераций записи изменил значение после обнаружения обновления записи.
В варианте осуществления система содержит модуль восстановления кадра, который считывает индекс длины из текущей страницы, соответствующей адресу записи, после обновления записи и объединяет данные из текущей страницы с данными из следующей страницы, когда индекс длины указывает, что соответствующие страницы содержат данные из общего кадра.
В девятом аспекте настоящее изобретение предлагает способ передачи данных, включающий буферизацию исходящих сетевых данных в процессоре главной вычислительной системы и запись буферизированных исходящих сетевых данных непосредственно в выделенную память в сетевом интерфейсе, которая распределяется в иерархию локальной памяти в главной вычислительной системе.
В десятом аспекте способ передачи данных включает:
распределение выделенной памяти из сетевого интерфейса в иерархию локальной памяти в главной вычислительной системе,
буферизацию исходящих сетевых данных в буфере записи-объединения процессора главной вычислительной системы,
запись исходящих сетевых данных из буфера записи-объединения в выделенную память и
передачу данных из сетевого интерфейса во внешнюю сеть.
В варианте осуществления способ включает запись индекса кадра в отдельный управляющий регистр в сетевом интерфейсе для инициации передачи кадра данных во внешнюю сеть, при этом индекс кадра определяет местоположение соответствующего кадра в выделенной памяти.
В варианте осуществления способ включает распределение отдельного управляющего регистра в нулевой регистр базового адреса главной вычислительной системы.
В варианте осуществления способ включает
распределение выделенной памяти сетевого интерфейса во второй регистр базового адреса главной вычислительной системы и обеспечение возможности записи-объединения для распределенной памяти.
В варианте осуществления способ включает извлечение индивидуального кадра данных из выделенной памяти для передачи во внешнюю сеть, при этом кадр данных определяется по индексу кадра, записанному в отдельный управляющий регистр, и длине кадра, записанной с кадром данных в выделенной памяти.
В варианте осуществления способ включает запись управляющих данных в выделенную память с исходящими сетевыми данными, при этом управляющие данные содержат длину кадра, которая определяет размер соответствующего кадра данных.
В варианте осуществления способ включает введение дескрипторов обратной связи в управляющие данные, записываемые в выделенную память с исходящими сетевыми данными, при этом дескрипторы обратной связи облегчают передачу подтверждающих сообщений из сетевого интерфейса в главную вычислительную систему.
В варианте осуществления способ включает запись идентификатора кадра из выделенной памяти в распределенный регистр с обратной связью в памяти главной вычислительной системы для отчета о передаче соответствующего кадра данных из сетевого интерфейса во внешнюю сеть.
В варианте осуществления способ включает
извлечение идентификатора кадра и исходного адреса, определяющего регистр с обратной связью главной вычислительной системы из выделенной памяти во время транзакции доступа к консолидированной памяти, которая включает извлечение соответствующего кадра данных.
В одиннадцатом аспекте настоящее изобретение предлагает систему передачи данных, содержащую модуль управления памятью, который распределяет память из сетевого интерфейса в иерархию локальной памяти в главной вычислительной системе, и контроллер записи, который буферизирует исходящие сетевые данные в процессоре главной вычислительной системы перед записью исходящих сетевых данных непосредственно в распределенную память.
В двенадцатом аспекте система передачи данных содержит:
модуль управления памятью, который распределяет выделенную память из сетевого интерфейса в иерархию локальной памяти в главной вычислительной системе, и
контроллер записи, который буферизирует исходящие сетевые данные в буфере записи-объединения перед записью исходящих сетевых данных в выделенную память сетевого интерфейса.
В варианте осуществления система содержит управляющий модуль, который записывает индексы кадра в отдельный управляющий регистр в сетевом интерфейсе для инициации передачи кадров данных из сетевого интерфейса во внешнюю сеть, при этом индексы кадра определяют местоположение соответствующего кадра в выделенной памяти.
В варианте осуществления модуль управления памятью распределяет отдельный управляющий регистр в нулевой регистр базового адреса главной вычислительной системы.
В варианте осуществления модуль управления памятью распределяет выделенную память сетевого интерфейса во второй регистр базового адреса главной вычислительной системы и обеспечивает возможность записи-объединения для распределенной памяти.
В варианте осуществления система содержит устройство для передачи, которое извлекает индивидуальные кадры данных из выделенной памяти для передачи во внешнюю сеть, при этом кадры данных определяются по соответствующему индексу кадра, записанному в отдельный управляющий регистр, и длине кадра, записанной в выделенную память с кадром данных.
В варианте осуществления система содержит управляющий модуль, который объединяет управляющие данные с исходящими сетевыми данными перед тем, как контроллер записи запишет сетевые данные в выделенную память, при этом управляющие данные содержат длину кадра, которая определяет размер соответствующего кадра данных.
В варианте осуществления управляющий модуль вводит дескрипторы обратной связи в управляющие данные, объединенные с исходящими сетевыми данными, при этом дескрипторы обратной связи облегчают передачу подтверждающих сообщений из сетевого интерфейса в главную вычислительную систему.
В варианте осуществления система содержит устройство для оповещений, которое записывает идентификатор кадра из выделенной памяти в распределенный регистр с обратной связью в памяти главной вычислительной системы для отчета о передаче соответствующего кадра данных из сетевого интерфейса во внешнюю сеть.
В варианте осуществления устройство для оповещений извлекает идентификатор кадра и исходный адрес, определяющий регистр с обратной связью главной вычислительной системы из выделенной памяти во время транзакции доступа к консолидированной памяти, которая включает извлечение соответствующего кадра данных.
В тринадцатом аспекте настоящее изобретение предлагает сетевой интерфейс, содержащий несколько портов данных, которые соединены с внешней сетью данных, и систему управления, которая управляет обменом данными между портами данных и внутренней системной шиной главной вычислительной системы,
при этом система управления содержит регистрационный модуль, который реплицирует данные обмена между системной шиной и индивидуальными портами данных и передает реплицированные данные в выделенный регистрационный порт.
В четырнадцатом аспекте сетевой интерфейс содержит:
сетевую сторону, которая соединена с внешней сетью данных для облегчения обмена данными, при этом сетевая сторона имеет несколько портов данных, каждый из которых определяет канал данных для передачи данных,
хост-сторону, которая соединена с внутренней системной шиной главной вычислительной системы для облегчения обмена данными между сетевым интерфейсом и главной вычислительной системой, и
систему управления, которая управляет обменом данными между сетевой стороной и хост-стороной сетевого интерфейса, при этом система управления содержит регистрационный модуль, который реплицирует данные из индивидуальных каналов данных и передает реплицированные данные в выделенный регистрационный порт.
В варианте осуществления сетевой интерфейс содержит регистрационный интерфейс, который облегчает конфигурацию регистрационного модуля, при этом регистрационный интерфейс имеет несколько управляющих регистров, которые определяют каналы данных, реплицированные регистрационным модулем.
В варианте осуществления сетевой интерфейс содержит регистрационный контроллер, который разделяет данные из каждого канала данных на принимаемый поток и отправляемый поток, при этом регистрационный интерфейс имеет несколько управляющих регистров, которые определяют потоки данных, реплицированные регистрационным модулем.
В варианте осуществления сетевой интерфейс содержит регистрационный блок, который объединяет данные из нескольких портов данных, при этом регистрационный блок имеет выделенный регистрационный порт, который передает объединенные данные во внешнюю сеть.
В пятнадцатом аспекте настоящее изобретение предлагает способ регистрации данных, включающий автономную репликацию сетевых данных в сетевом интерфейсе вычислительной системы и передачу реплицированных данных в выделенный регистрационный порт сетевого интерфейса для передачи во внешнюю систему регистрации.
В шестнадцатом аспекте способ регистрации данных включает:
обмен данными между главной вычислительной системой и внешней сетью данных с использованием сетевого интерфейса, имеющего несколько портов данных, при этом сетевой интерфейс соединяют с внутренней системной шиной главной вычислительной системы, и
репликацию данных из индивидуальных портов данных и передачу реплицированных данных в выделенный регистрационный порт, интегрированный с сетевым интерфейсом.
В варианте осуществления способ включает выбор индивидуальных портов данных для регистрации, при этом порты данных выбирают с использованием выделенных управляющих регистров, распределенных в сетевом интерфейсе.
В варианте осуществления способ включает:
разделение данных, полученных от каждого из портов данных на принимаемый поток и отправляемый поток, и
выбор индивидуальных потоков данных для регистрации, при этом потоки выбирают с использованием выделенных управляющих регистров, распределенных в сетевом интерфейсе.
В варианте осуществления способ включает объединение данных из нескольких портов данных и передачу объединенных данных из главной вычислительной системы во внешнюю сеть.
В семнадцатом аспекте настоящее изобретение предлагает сетевой интерфейс, содержащий несколько портов данных и систему управления, которая управляет обменом данными между портами данных и внутренней системной шиной главной вычислительной системы, при этом система управления содержит модуль продвижения, который передает данные непосредственно между отдельными портами данных без вмешательства со стороны главной вычислительной системы.
В восемнадцатом аспекте сетевой интерфейс содержит:
сетевую сторону, которая соединена с внешней сетью данных для облегчения обмена данными, при этом сетевая сторона имеет несколько портов данных,
хост-сторону, которая соединена с внутренней системной шиной главной вычислительной системы для облегчения обмена данными между сетевым интерфейсом и главной вычислительной системой, и
систему управления, которая управляет обменом данными между сетевой стороной и хост-стороной сетевого интерфейса, при этом система управления содержит модуль продвижения, который получает данные непосредственно из выделенного порта данных сетевого интерфейса и передает полученные данные во внешнюю сеть данных через другой порт данных сетевого интерфейса без вмешательства со стороны главной вычислительной системы.
В варианте осуществления сетевой интерфейс содержит интерфейс продвижения, который облегчает конфигурацию модуля продвижения, при этом интерфейс продвижения имеет управляющий регистр, который блокирует продвижение данных между двумя портами.
В варианте осуществления сетевой интерфейс содержит устройство фильтрации, которое считывает адреса назначения из данных, полученных модулем продвижения, и предотвращает продвижение данных с адресом назначения, который совпадает с адресом, связанным с главной вычислительной системой.
В девятнадцатом аспекте настоящее изобретение предлагает способ продвижения данных, включающий получение сетевых данных в выделенный порт данных вычислительной системы и передачу полученных данных во внешнюю сеть данных через другой порт сетевого интерфейса без вмешательства со стороны главной вычислительной системы.
В двадцатом аспекте способ продвижения данных включает:
получение данных из внешней сети данных с использованием сетевого интерфейса, имеющего несколько портов данных, при этом сетевой интерфейс соединяют с внутренней системной шиной главной вычислительной системы, и
продвижение данных, полученных через выделенный порт сетевого интерфейса в другой порт сетевого интерфейса без вмешательства со стороны главной вычислительной системы.
В варианте осуществления способ включает блокирование продвижения между двумя портами сетевого интерфейса посредством записи в управляющий регистр в сетевом интерфейсе.
В варианте осуществления способ включает считывание адресов назначения из данных, полученных модулем продвижения, и предотвращение продвижения данных с адресом назначения, который совпадает с адресом, связанным с главной вычислительной системой.
КРАТКОЕ ОПИСАНИЕ ГРАФИЧЕСКИХ МАТЕРИАЛОВ
Характеристики и преимущества настоящего изобретения станут понятны из следующего далее описания вариантов осуществления, только в качестве примера, с ссылкой на прилагаемые графические материалы, на которых:
на фиг. 1 изображено схематическое представление сети, содержащей несколько взаимосвязанных вычислительных систем;
на фиг. 2 изображено схематическое представление сетевого интерфейса с показанными различными функциональными модулями;
на фиг. 3 изображена структурная схема с показанным распределением памяти в приемном буфере;
на фиг. 4 изображено схематическое представление главной вычислительной системы с показанными различными функциональными модулями, которые координируют обмен данными с сетевым интерфейсом;
на фиг. 5 изображена структурная схема с показанным распределением памяти в сетевом интерфейсе;
на фиг. 6 изображена блок-схема алгоритма способа передачи для передачи данных из вычислительной системы в сетевой интерфейс;
на фиг. 7 изображена структурная схема принципа работы функции регистрации сетевого интерфейса;
на фиг. 8 изображена структурная схема принципа работы функции продвижения с порта сетевого интерфейса.
ПОДРОБНОЕ ОПИСАНИЕ
Вариант осуществления сетевого интерфейса с низкой задержкой и протоколами управления комплементарными данными описаны в данном документе. Протоколы управления данными сокращают обмен выделенными управляющими данными между сетевым интерфейсом и соответствующей главной вычислительной системой путем консолидации управляющих данных с сетевыми данными.
Сокращение задержки при передаче обычно улучшает время обработки сетевых интенсивных взаимодействий, поскольку сетевые задержки часто оказывают существенное влияние на общую эффективность обработки данных. В вариантах осуществления протоколы отправления и получения, описанные в следующих далее разделах, ограничивают обмен между сетевым интерфейсом и главной вычислительной системой для сокращения задержки обработки данных. Сокращение общей задержки на доли секунды может иметь существенные последствия в высокопроизводительных компьютерных приложениях (таких как он-лайн игры и финансовый трейдинг).
Сетевые данные в основном передаются между вычислительными системами с использованием «кадров» дискретных данных в обычных сетевых приложениях. Кадры данных определяются системой «отправителя» и могут включают управляющие данные (например, адрес назначения), которые используются в процессе передачи. Варианты осуществления сетевого интерфейса, описанные в данном документе, главным образом взаимодействуют с «кадром» на основе реализации сети (где данные передаются в кадрах). Однако, обычные протоколы могут также быть реализованы с другими сетевыми стандартами.
Задержка представляет собой количество времени, затраченное на передачу данных через систему. «Задержка приема» для сетевого интерфейса означает время между приемом кадра данных из внешней сети и кадром, ставшим доступным для программного приложения, выполняемого на соответствующей главной вычислительной системе. «Задержка передачи» для сетевого интерфейса означает время между обеспечением доступности кадра из программного приложения, выполняемого на главной вычислительной системе, и началом передачи кадра во внешнюю сеть. Оба вида задержек в первую очередь приходятся на сетевой интерфейс.
Указанные варианты осуществления протоколов управления данными и характеристики интерфейса относятся к дискретным функциональным блокам в данном документе (обычно к «модулям» и «устройствам»). Эти функциональные блоки наглядно показывают работу и взаимодействия различных элементов интерфейса, которые они реализуют (и в аппаратном обеспечении, и в программном обеспечении). Они не представляют собой строгие функциональные разделения или специальные реализации аппаратного/программного обеспечения. Операции, свойственные множеству функциональных блоков, могут быть выполнены посредством единого аппаратного компонента (такого как микропроцессор или программируемая логическая матрица) или программного приложения (такого как драйвер или встроенное программное обеспечение), или любого количества аппаратных компонентов или любой конфигурации аппаратного обеспечения и программного обеспечения.
Получение данных из внешней сети
Обычные протоколы сетевого интерфейса координируются драйвером программного обеспечения, выполняемым главной вычислительной системой. Драйвер обычно распределяет память хоста на индивидуальные кадры данных и сохраняет указатели массива (известные как «дескрипторы получения») в памяти хоста как запись. Сетевой интерфейс обращается к массиву «дескрипторов получения», когда получен новый кадр, и копирует кадр в адрес памяти, определенный соответствующим указателем. Интерфейс генерирует системное прерывание при завершении копирования для оповещения главной системы о том, что новый кадр был передан. Драйвер программного освобождает указатель от дальнейшего использования, как только завершается обработка кадра.
Варианты осуществления сетевого интерфейса и протокола получения, описанных в этой части, сокращают время задержки при получении, относящейся к сетевому интерфейсу, путем исключения нескольких взаимодействий с главной вычислительной системой. Описанный сетевой интерфейс обменивается полученными сетевыми данными с главной вычислительной системой с использованием приемного буфера (или небольшого количества приемных буферов), распределенного в памяти главной вычислительной системы. Каждый приемный буфер имеет емкость для хранения нескольких кадров данных, полученных из внешней сети.
Сетевой интерфейс автономно задает распределение данных в приемном буфере без вмешательства со стороны главной вычислительной системы (включая драйвер сетевого интерфейса). Интерфейс обычно распределяет полученные кадры данных последовательно в приемном буфере с использованием кольцевого протокола инструкций с простой очередностью (FIFO). Главная вычислительная система не присваивает адреса записи или выделенные буферы для индивидуальных кадров, полученных сетевым интерфейсом.
Сетевой интерфейс рекурсивно записывает кадры данных в приемный буфер с использованием протокола записи без обратной связи от главной вычислительной системы (например, подтверждений считывания, которые указывают на завершение извлечения кадра). Это облегчает некоординированный доступ к данным в приемном буфере для множества программных приложений, выполняемых на главной вычислительной системе. Сетевой интерфейс постоянно записывает новые кадры в приемный буфер во время запротоколированных итераций записи. Имеющиеся данные в буфере перезаписываются во время успешных итераций записи. Сетевой интерфейс обычно добавляет стандартные управляющие данные (включая текущие итерации записи) к полученным кадрам, как только они запишутся в приемный буфер. управляющие данные используются главной вычислительной системой для извлечения кадров из приемного буфера.
Главная вычислительная система реализует протокол приема, который обеспечивает доступ к кадрам данных из приемного буфера для программных приложений, выполняемых на главной вычислительной системе. Протокол получения облегчает извлечение и восстановление кадров данных, сохраненных в приемном буфере, с использованием управляющих данных, сгенерированных сетевым интерфейсом.
Вычислительная сеть 10 изображена на фиг. 1. Сеть 10 содержит несколько взаимосвязанных вычислительных систем. Вычислительные системы соединены общей сетью 11 данных (такой как Интернет или локальная вычислительная сеть).
Изображенная сеть 11 данных облегчает передачу данных между главной вычислительной системой 15 и несколькими удаленными вычислительными системами 12. Главная вычислительная система 15 объединяет сетевой интерфейс, который управляет обменом данными с сетью 11 данных.
Функциональное представление сетевого интерфейса 20 изображено на фиг. 2. Интерфейс 20 содержит сетевую сторону 21, которая получает данные из внешней сети 11 данных, и системную сторону 22, которая передает полученные данные в память, распределенную в главной вычислительной системе 15, через внутреннюю системную шину.
Сетевая сторона 21 сетевого интерфейса 20, изображенная на фиг. 2, содержит несколько портов данных 19. Каждый порт 19 данных определяет канал данных для обмена сетевыми данными между сетевым интерфейсом системы 25 управления и внешней сетью данных. Порты 19 данных могут быть интегрированы с физическими коннекторами (такими, как модули малого форм-фактора, изображенными на фиг. 2) или определять беспроводной канал данных для связи с внешней сетью.
Системная сторона 22 сетевого интерфейса обычно устанавливает функциональный переход между сетевым интерфейсом и внутренней системной шиной (например, функциональное разделение в общем микроконтроллере для интегрированных приложений). Функциональный переход, установленный системной стороной 22 интерфейса, может совпадать с физическим переходом (таким как шинный коннектор или проводной интерфейс на печатной плате). Системная сторона 22 сетевого интерфейса 20, изображенная на фиг. 2, может совпадать со слотом 23 PCI шины материнской платы 24 главной вычислительной системы. Система 25 управления интерфейсом управляет передачей данных из сетевой стороны 21 в системную сторону 22 сетевого интерфейса 20.
Интерфейс 20 получает данные из сети 11 в «кадрах». Типичные Ethernet кадры имеют размер от 64 байт до 1518 байт. Пакеты данных, которые больше максимального размера кадра, разделяются на несколько кадров перед передачей в сеть 11 данных. Сетевой интерфейс передает кадры, полученные из сети, в общую память в главной вычислительной системе. Этим процессом управляет главная вычислительная система с помощью обычных протоколов получения.
Сетевой интерфейс 20, изображенный на фиг. 2, передает полученные кадры в консолидированный буфер в памяти хоста без вмешательства со стороны главной вычислительной системы. Это уменьшает затраты ресурсов на приемные транзакции путем исключения нескольких требующих много времени системных взаимодействий (включая распределение указателей и обмен системными сообщениями с подтверждением о считывании с главной вычислительной системой).
Система 25 управления интерфейсом управляет передачей кадра из сетевой стороны 21 интерфейса 20 в системную шину в главной вычислительной системе 15 (например, PCI или PCI Express шину). Системная шина переносит кадры в приемный буфер, где данные становятся доступными программным приложениям, выполняемым процессором главной вычислительной системы.
Драйвер сетевого интерфейса распределяет память в главной вычислительной системе 15 для сетевого интерфейса 20. Выделенная память консолидируется в буфер для передачи кадра из сетевого интерфейса 20 («приемный буфер»). Адреса выделенной памяти обычно определяют диапазон непрерывной памяти с необходимым объемом памяти для нескольких кадров данных (приемный буфер должен быть по меньшей мере на порядок больше, чем размер ожидаемых из сети кадров данных). Главная вычислительная система 15 распределяет приемный буфер в памяти, которая эффективно доступна системному процессору для оптимизации извлечения данных.
Главная вычислительная система 15 может распределять память для нескольких приемных буферов, каждый из которых выполнен с возможностью получения нескольких кадров данных. Однако, общее количество приемных буферов, распределенных главной вычислительной системой 15, остается меньшим относительно количества кадров данных, которое система предполагает обработать. Независимые приемные буферы обычно распределяются для индивидуальных портов в многопортовом сетевом интерфейсе. Единый порт сетевого интерфейса может распределять кадры к более чем одному приемному буферу, используя программируемые фильтры. Индивидуальные приемные буферы могут не быть непрерывными в памяти хоста (несмотря на то, что память в каждом буфере обычно непрерывная).
Приемные буферы сетевого интерфейса обычно распределяются с помощью выделенного аппаратного драйвера во время инициации системы (т.е. во время запуска системы или после команды об инициализации). Схематическое представление данных, распределенных в приводимом в качестве примера приемном буфере 30, представлено на фиг. 3.
Сетевой интерфейс 20 разделяет выделенную память каждого приемного буфера для нескольких последовательных страниц 31. Интегрированный модуль 27 управления буфером координирует разделение выделенной памяти. Модуль 27 управления буфером создает несколько последовательных, индивидуально адресуемых страниц 31 в каждом приемном буфере. Страницы 31, сгенерированные модулем 27 управления буфером, обычно являются однородными, с одинаковым объемом памяти и стандартным смещением адресов памяти. Объем памяти страниц 31 составляет обычно от 32 до 512 байт.
Страницы 31 позволяют сетевому интерфейсу 20 эффективно координировать операции записи в консолидированный приемный буфер 30 без вмешательства со стороны главной вычислительной системы. Изображенный сетевой интерфейс 20 использует выделенную память в качестве циклического буфера, последовательно записывая в каждую из выделенных страниц 31 перед повторной инициацией последовательности записи в выделенный адрес памяти (обычно совпадающий с первой страницей). Система 25 управления интерфейсом автономно задает распределение кадров данных в приемном буфере 30 без вмешательства со стороны главной вычислительной системы (включая драйвер интерфейса, выполняемый главной вычислительной системой).
Изображенная система 25 управления интерфейсом задействует контроллер 26 записи, который записывает полученные кадры данных в приемный буфер 30 с использованием протокола записи без обратной связи. Контроллер 26 записи рекурсивную перезаписывает страницы 31 в приемном буфере 30 после завершения цикла записи. Данные в приемном буфере 30 перезаписываются без подтверждения о считывании(сигнала обратной связи, который соответствует уже обработанным данным) от главной вычислительной системы. Устранение обратной связи от главной системы обеспечивает сетевому интерфейсу 20 последовательную запись кадров данных в непрерывную память без разрыва, увеличивая эффективность этих перемещений.
Сетевой интерфейс 20 объединяет управляющие данные 33 с сетевыми данными 32, записанными в каждой странице 31 в приемном буфере 30. Управляющие данные 33 используются главной вычислительной системой для управления извлечением данных из приемного буфера 30. Изображенная система 25 управления содержит модуль 28 управления кадром, который генерирует управляющие данные 33 для сетевого интерфейса 20. Управляющие данные 33, сгенерированные модулем 28 управления кадром, содержат:
метку (34) времени
: 32 бита
статус (35) кадра
: 8 бит
длину (36)
: 8 бит
неиспользованный объем (37)
: 8 бит
счетчик (38) итераций записи
: 8 бит
Модуль 28 управления кадром пакует управляющие данные 33 вместе с сетевыми данными 32 перед операциями записи в буфер. Это позволяет контроллеру 26 записи перемещать управляющие данные 33 в приемный буфер 30 в той же шинной транзакции, как и сетевые данные. Объединенные пакеты данных передаются из сетевого интерфейса 20 в приемный буфер 30 в дискретных «страницах».
Изображенный сетевой интерфейс формирует 8 байт (64 бита) управляющих данных 33 для каждой страницы 31 приемного буфера 30. Один байт (восемь бит) управляющих данных 33 распределяется для размещения (в поле 37 данных с «неиспользованным объемом»).
Управляющие данные 33 записываются в индивидуальные страницы 31 в приемном буфере 30 в транзакции консолидированной памяти, которая содержит соответствующие сетевые данные. Это уменьшает эффективный объем страниц 31 (память, доступную для сетевых данных). Для примера, 128 байт страницы могут вместить 120 байт сетевых данных 32 и 8 байт управляющих данных 33. Соотношение управляющих данных 33 к сетевым данным 32 в странице 31 увеличивается для распределений меньших страниц.
Распределение управляющих данных 33 в той же странице, как и соответствующие сетевые данные 32, позволяет избежать дополнительных операций считывания/записи, которые обычно проводятся, когда управляющие данные 33 записываются в отдельный регистр. Контроллер 26 записи обычно записывает управляющие данные 33 в получающую страницу в той же шинной транзакции, как и сетевые данные. Это уменьшает количество операций записи, необходимых для передачи кадра в главную вычислительную систему. Изображенный контроллер 26 записи добавляет управляющие данные 33 к сетевым данным 32, так чтобы управляющие данные 33 записывались в конце соответствующей страницы в буфере. Это обеспечивает главной вычислительной системе возможность проверять правильность операции записи в буфер путем выполнения проверки управляющих данных 33.
Модуль 28 управления кадром распределяет 4 байта (32 бита) управляющих данных 33 для системной метки 34 времени. Поле 34 «метка времени» фиксирует время получения кадра сетевым интерфейсом 20 (обычно используется для сетевой аналитики и диагностики). Система 25 управления восстанавливает поле 34 метки времени из внутреннего счетчика.
Изображенный модуль 28 управления кадром копирует значение внутреннего счетчика в поле 34 метки времени, когда первый байт кадра получен из внешней сети. Такая же метка 34 времени используется для каждого фрагмента кадра, когда кадр разделяется между несколькими страницами 31 в буфере (т.е. когда кадр данных больше, чем размер буфера страницы).
Поле 35 статуса кадра содержит общую статусную информацию для полученных кадров. Модуль 28 управления кадром фиксирует обнаруженные ошибки при получении кадра в поле 35 «статус кадра». Коды статуса кадра, сгенерированные изображенной управляющей системой 25, включают:
0 - успешное получение,
1 - удаленный отправитель преждевременно завершил передачу полукадра,
2 - проверка целостности кадра не выполнена, и
3 - внутренняя память переполнена во время получения кадра.
Полученные кадры, которые превысили объем памяти страниц 31 буфера, разделяются на фрагменты кадра и распределяются по нескольким страницам 31. Модуль 28 управления кадром координирует разделение и распределение кадров с большим объемом данных в буфере. Фрагменты обычно распределяются в последовательных страницах 31 в приемном буфере 30.
Модуль 28 управления кадром фиксирует распределение индивидуальных кадров в буфере, используя управляющие данные поля 35 «длина». Поле 36 длины определяет взаимосвязь между последовательными страницами 31 в буфере. Нулевые составляющие поля 36 длины 36 определяют границу кадра, которая совпадает с разделением страницы. «Нулевые» составляющие в поле 36 «длины» указывают на то, что соседние страницы 31 содержат фрагменты того же кадра данных. Главная вычислительная система использует поле 36 длины для восстановления фрагментированных кадров данных.
Поле 36 длины для кадра, содержащегося в одной странице 31, определяет «размер» кадра (обычно в байтах). Начальные или промежуточные фрагменты кадра представляются «нулевыми» составляющими в поле 36 длины. Это означает, что дополнительный фрагмент, восстановленный из того же кадра, сохраняется в следующей (последующей) странице. «Конечному» фрагменту кадра присваивается составляющая длины, соответствующая размеру фрагмента (т.е. пространству, занимаемому фрагментом в странице). Нулевая составляющая длины сообщает главной вычислительной системе о том, что все фрагменты кадра уже извлечены из буфера и следующая страница содержит отличный от других кадр.
Модуль 27 управления буфером сохраняет значение счетчика «генерирования» для приемного буфера 30 в выделенном регистре в сетевом интерфейсе 20. Счетчик генерирования фиксирует текущую итерацию записи для циклического приемного буфера 30. Модуль 27 управления буфером однообразно приращает значение счетчика генерирования каждый раз, когда цикл записи завершен (т.е. каждый раз контроллер 26 записи записывает данные в конец страницы в циклическом буфере).
Модуль 28 управления кадром копирует текущее значение счетчика генерирования буфера в поле 38 «счетчик итераций записи» управляющих данных во время операций записи. Программное обеспечение, выполняемое на главной вычислительной системе, использует счетчик 38 итераций записи для синхронизации операций считывания из приемного буфера 30.
Протокол доступа к буферу
Главная вычислительная система отслеживает обновление записей приемного буфера 30 из сетевого интерфейса и извлекает новые кадры по мере того, как они становятся доступными. Это способ не зависит от операций записи сетевого интерфейса в приложениях, чувствительных к задержкам. Извлечение сетевых данных из приемного буфера без вмешательства со стороны сетевого интерфейса устраняет несколько интенсивных системных взаимодействий, требующих много времени (использующихся в обычных протоколах сетевого интерфейса для координации внутреннего обмена данными). Это позволяет сетевому интерфейсу передавать кадры данных в главную вычислительную систему с меньшими затратами.
Главная вычислительная система использует систему доступа к буферу, которая координирует извлечение данных из приемного буфера 30. Функциональное представление системы 40 доступа к буферу изображено на фиг. 4. Изображенная система 40 доступа к буферу содержит несколько функциональных модулей. Соответствующие модули могут быть реализованы с помощью программного обеспечения выделенных драйверов или независимых программных приложений, выполняемых на главной вычислительной системе 15.
Система 40 доступа к буферу, изображенная на фиг. 4, использует модуль 41 индексов, который оценивает статус приемного буфера 30, когда инициирован способ извлечения данных. Модуль 41 индексов использует поле 38 счетчика итераций записи из индивидуальных страниц 31 в буфере для определения статуса буфера. Счетчик 38 итераций записи, распределенный в управляющих данных 33 каждой страницы 31, определяет итерацию записи, когда данные были последний раз записаны в страницу. Модуль 41 индексов обращается к нескольким страницам 31 данных в циклическом приемном буфере 30 и оценивает значения счетчиков 38 итераций записи, содержащихся в соответствующих управляющих данных 33. Система 40 доступа к буферу использует значения счетчиков 38 итераций записи из последовательных страниц 31 для идентификации границы между текущими и предыдущими итерациями записи.
Модуль 42 синхронизации определяет текущий адрес записи для циклического буфера, используя значения счетчиков 38 итераций записи, обнаруженных модулем 41 индексов. Адрес записи определяет следующую страницу 31 в приемном буфере 30 для перезаписи данными с помощью сетевого интерфейса 20. Способ, реализуемый модулем 42 синхронизации для идентификации адреса записи буфера, зависит от формата поля 38 счетчика итераций записи, используемого сетевым интерфейсом. Процедуры идентификации для бинарных и целых форматов счетчиков 38 итераций записи кратко изложены далее в данном документе.
Модуль 42 синхронизации передает адрес записи в устройство 43 контроля записи. Устройство 43 контроля записи рекуррентно опрашивает адрес записи для проверки обновлений записи из сетевого интерфейса. Обновления записи определяются, когда обнаруживаются изменения в управляющих данных 33 в странице 31 буфера, определенной посредством адреса записи. Сетевой интерфейс перезаписывает и сетевые данные 32, и управляющие данные 33 во время каждого обновления записи. Устройство 43 контроля записи определяет, что страница 31 уже получила обновление записи при изменении поля 38 счетчика итераций записи для отслеженной страницы.
Модуль 44 извлечения возвращает обратно данные из страницы 31, соответствующей адресу записи, когда устройство 43 контроля записи обнаруживает обновление записи. Модуль 44 извлечения выполняет несколько проверок достоверности данных после извлечения данных из страницы 31. Проверки достоверности включают получение подтверждения (выводимого из поля 35 статуса кадра управляющих данных 33), оценку целостности данных (выводимой из целостности управляющих данных 33, добавленных в конец каждой страницы 31 во время обновления записи) и извлечение оценочных данных.
Модуль 44 извлечения проверяет поле 38 счетчика итераций записи страниц 31 буфера после извлечения данных для проверки правильности процесса извлечения. Если поле 38 счетчика итераций записи изменило значение сразу после обнаружения обновления исходной записи, идентифицированного устройством контроля 43 записи, то модуль 44 извлечения генерирует ошибку считывания. Ошибка считывания означает, что страница 31 возможно была перезаписана сетевым интерфейсом перед тем, как данные были извлечены, и извлеченные данные недостоверны. Приемное программное приложение обычно управляет ошибками считывания посредством подачи вспомогательного запроса на предоставление кадра потерянных данных.
Фрагментированные кадры данных компилируются модулем 45 восстановления кадра после извлечения из приемного буфера 30. Модуль 45 восстановления кадра считывает поле 36 индекса длины из извлеченных управляющих данных 33 после обновления записи и определяет статус соответствующих сетевых данных. Статус данных различает фрагменты кадра от полных кадров данных и идентифицирует взаимосвязи между фрагментами этого же кадра данных. Модуль 45 восстановления кадра объединяет сетевые данные 32 из последовательных страниц 31, когда поле 36 индекса длины указывает, что соответствующие страницы 31 содержат данные из общего кадра. Сетевой интерфейс сохраняет порядок фрагментов кадра, записанных в приемный буфер 30, так чтобы модуль восстановления кадра мог скомпилировать последующие фрагменты непосредственно из буфера.
Сетевой интерфейс может использовать бинарные или целые значения счетчиков итераций записи для фиксирования успешных итераций записи. Бинарные значения счетчиков итераций записи различают успешные итерации записи с минимальным потреблением памяти. Целые значения счетчиков итераций записи (такие как 8-битное значение счетчика итераций записи, закрепленное за модулем 28 управления кадром) способны сохранять абсолютное значение счетчика итераций записи. Тип данных, используемых для счетчика 38 итераций записи, оказывают влияние на способ оценивания, реализуемый модулем 42 синхронизации.
Адрес записи: бинарное значение счетчика итераций записи
Значение счетчика итераций записи с бинарным значением периодически изменяется следующими друг за другом циклами записи буфера. Это позволяет модулю 42 синхронизации различать успешные итерации записи, но может негативно повлиять на проверки достоверности данных, выполняемые модулем 44 извлечения.
Модуль 42 синхронизации может определить адрес записи для буфера путем рекурсивного сравнения бинарных значений счетчиков итераций записи из последовательных страниц 31 в буфере. Адрес записи буфера локализуется посредством идентификации неодинаковых значений счетчиков итераций записи, распределенных в соседних страницах 31 буфера.
Адрес записи: Целое значение счетчика итераций записи
Целые значения счетчиков итераций записи записывают накопленное значение итерации записи. Это улучшает точность проверок достоверности данных, реализуемых модулем 44 извлечения за счет использования памяти большего объема. Сетевой интерфейс 20, изображенный на фиг. 2, содержит счетчик генерирования, значения которого копируются в поле счетчика итераций записи индивидуальных страниц 31 во время операций записи данных.
Система 40 доступа к буферу предоставляет целые значения счетчиков итераций записи посредством формирования дополнительного значения счетчика итераций считывания. Значение счетчика итераций считывания сравнивается с управляющими данными 33 в последовательных страницах буфера 31 для идентификации текущего адреса записи для приемного буфера 30.
Модуль 41 индексов, изображенный на фиг. 4, устанавливает значение счетчика итераций считывания для модуля 42 синхронизации. Счетчик итераций считывания реплицирует значение счетчика генерирования буфера, сохраненного в модуле 27 управления буфером. Модуль 41 индексов образует счетчик итераций считывания из управляющих данных 33, записанных в выделенную страницу 31 в приемном буфере 30. Это позволяет избежать сброса счетчика генерирования непосредственно из сетевого интерфейса.
Изображенный модуль 41 индексов использует значение счетчика итераций считывания со значением счетчика итераций записи из окончательной страницы приемного буфера 30. Значение счетчика итераций считывания обычно выводится из конечной страницы буфера. Значение счетчика итераций записи в каждой конечной странице остается неизменным на протяжении каждого цикла записи, в то время как значение счетчика генерирования только приращается в завершении каждого цикла записи (после операции записи в окончательную страницу буфера).
Модуль 41 индексов передает значение счетчика итераций считывания в модуль 42 синхронизации. Модуль 42 синхронизации сравнивает значение счетчика итераций считывания с несколькими значениями счетчиков итераций записи, закрепленными за последовательными страницами 31 в циклическом буфере. Адрес записи для буфера совпадает со страницей 31, ближайшей к началу буфера со счетчиком итераций записи, который соответствует счетчику итераций считывания.
Способ сравнения координируется с использованием указателя отсчета, который циклически повторяется вслед за последующими страницами 31 в приемном буфере 30. Система 40 доступа к буферу обычно инициирует указатель отсчета в первой странице в приемном буфере 30. Модуль 42 синхронизации приращает значение указателя отсчета посредством определения смещения (соразмерного с размером страниц буфера) до тех пор, пока значение счетчика итераций записи в странице, идентифицированной указателем отсчета, не совпадет со значением счетчика итераций считывания. Приращения смещения сопоставляются с размером страниц 31 буфера, выделяемых модулем 27 управления буфером. Модуль 42 синхронизации приращает указатель отсчета для приведения в соответствие с последующими страницами 31 после обнаружения обновлений записи.
Протокол предупреждения для получения данных, нечувствительных к задержке
Сетевой интерфейс 20, изображенный на фиг. 2, может реализовывать протокол предупреждения для получения данных, нечувствительных к задержке. Протокол предупреждения для получения уменьшает затраты ресурсов на мониторинг главной вычислительной системы.
Протокол предупреждения инициируется модулем резервирования (не показан на графических материалах), который сопрягается с программными приложениями, выполняемыми на главной вычислительной системе. Программные приложения идентифицируют сетевые взаимодействия, которые чувствительны к задержкам, и передают обозначения сетевых данных в модуль резервирования. Модуль резервирования временно отключает функцию опроса устройства 43 контроля записи для сетевых данных, связанных с этими обменами, и инициирует протокол предупреждения сетевого интерфейса. Это уменьшает нагрузку на процессор главной вычислительной системы.
Модуль резервирования может также сохранять обозначения с настраиваемой задержкой для индивидуальных программных приложений, которые обеспечивают глобальный приоритет важному программному обеспечению с задержками при обмене данными. Интерфейс программного обеспечения (обычно предоставленный драйвером сетевого интерфейса) облегчает настройку обозначений задержки для индивидуальных программных приложений. Модуль резервирования инициализирует генератор отчетов, интегрированный с системой 25 управления сетевого интерфейса одновременно с деактивацией устройства 43 контроля записи. Генератор отчетов генерирует системное прерывание, когда данные записываются в приемный буфер. Прерывание оповещает модуль резервирования о том, что новые данные доступны в приемном буфере.
Сетевые интерфейсы, совместимые с предупреждением для получения данных, содержат выделенный регистр порогового значения, который модуль резервирования использует для инициации протокола предупреждения. Модуль резервирования записывает адрес страницы в регистр порогового значения для активации генератора отчетов. Адрес страницы идентифицирует страницу в приемном буфере для мониторинга генератором отчетов (обычно страницы определены текущим адресом записи в буфере). Генератор отчетов сопрягается с контроллером 26 записи и генерирует прерывание оповещений в момент, когда страница, идентифицированная по адресу страницы, получает обновление записи.
Адрес страницы, записанный в регистр порогового значения, обычно является индексом с целым значением, который идентифицирует смещение страницы в приемном буфере. Устройство отчетов сравнивает адрес страницы в регистре порогового значения с адресом записи, сохраненным контроллером 26 записи, и генерирует системное прерывание в том случае, если адрес записи эквивалентен или превышает адрес страницы.
Запись индекса страницы с абсолютным значением (например, адрес страницы) в регистр порогового значения компенсирует потери при выполнении контроллером 26 записи и модулем резервирования совпадающих операций записи. Совпадающие операции записи происходят, когда модуль резервирования записывает в регистр порогового значения одновременно с (или частично после) обновлением записи в текущий адрес записи. Генератор отчетов обнаруживает совпадающее обновление записи по идентификации, при которой порядковый номер контроллера записи превышает адрес страницы, записываемой в регистр порогового значения. Это невозможно с бинарной активацией генератора отчетов.
Передача данных во внешнюю сеть
Большинство сетевых интерфейсов используют мастеринг шины (передача данных по шине без участия процессора) или протоколы ввода-вывода с программным управлением для координации передачи внутренних данных с помощью главной вычислительной системы. Оба протокола реализуются с использованием стандартизированной внутренней системной шины.
Прежние сетевые интерфейсы реализовывали протоколы ввода-вывода с программным управлением для обмена данными с процессорами главной вычислительной системы. Протокол ввода-вывода с программным управлением облегчает контролируемый обмен данными с хоста с низкой пропускной способностью через внутреннюю системную шину (например, шину параллельного интерфейса АТА). Исходящие сетевые данные «проталкиваются» к сетевому интерфейсу в маленьких пакетах (обычно по 16 бит или 32 бит) посредством записи в пространстве адреса ввода-вывода в главной вычислительной системе. Процессор главной вычислительной системы выполняет записи ввода/вывода на высоких частотах. Это создает существенную нагрузку на главную вычислительную систему, включая чрезмерное использование пропускной способности системной шины и непропорциональной нагрузки процессора. Эти недостатки в значительной мере связанные с протоколами мастеринга шины.
Большая часть обычных сетевых интерфейсов использует протоколы мастеринга шины для координации исходящих сетевых данных (данные отсылаются из главной вычислительной системы во внешнюю сеть). Мастеринг шины позволяет сетевому интерфейсу управлять шинными транзакциями и перемещать исходящие сетевые данные в главной вычислительной системе с минимальными затратами ресурсов для процессора главной вычислительной системы.
Программное обеспечение, выполняемое на главной вычислительной системе, инициирует процесс передачи данных посредством оповещения сетевого интерфейса о новых исходящих сетевых данных. Уведомления посылаются из процессора в сетевой интерфейс с использованием внутренней системной шины. Сетевой интерфейс затем автономно возвращает обратно соответствующие данные из памяти хоста. В это входит подача запроса о считывании памяти хоста и получение исходящих сетевых данных (обе операции используют системную шину).
В вариантах осуществления протокол передачи, описанный в этой части, позволяет процессору главной вычислительной системы записывать исходящие сетевые данные непосредственно в буфер передачи в памяти сетевого интерфейса. Это обеспечивается распределением буфера передачи в иерархию памяти главной вычислительной системы. Записи в буфер передачи выполняются по частям для избежания различных потерь производительности, связанных с протоколами ввода-вывода с программным управлением. Это обеспечивается сбором исходящих сетевых данных в буфере записи-объединения (обычно распределенным в процессоре главной вычислительной системы) перед выдачей данных непосредственно в адресуемую память в сетевом интерфейсе (буфер передачи).
Описанный протокол передачи устраняет несколько обменов данными при управлении между процессором хоста и сетевым интерфейсом, которые используются в мастеринге шины для координации передачи внутренних данных. К устраненным обменам данными относятся:
• считывание запросов из сетевого интерфейса к памяти хоста, возвращающего новые данные, и
• передачу новых данных из памяти главной вычислительной системы в сетевой интерфейс.
Это улучшает характеристики задержки описанного сетевого интерфейса, поскольку устраненные обмены данными должны выполнятся перед перемещением данных в сетевой интерфейс, использующего протоколы мастеринга шины.
Функциональное представление системы 50 передачи данных изображено на фиг. 4. Изображенная система 50 передачи данных содержит модуль 51 управления памятью, который контролирует буфер 29 передачи в выделенной памяти сетевого интерфейса. Буфер передачи обычно имеет объем памяти от 4 килобайт до 2 мегабайт (хотя могут использоваться большие объемы памяти). Сетевой интерфейс 20, изображенный на фиг. 2, может быть снабжен 16-килобайтным, 32-килобайтным или 64-килобайтным буфером 29 передачи.
Модуль 51 управления памятью распределяет выделенную память сетевого интерфейса в иерархию локальной памяти 61 в главной вычислительной системе 15. Это делает распределенную память (соответствующую буферу 29 передачи) непосредственно адресуемой процессором главной вычислительной системы. Модуль 51 управления памятью также обеспечивает запись-объединение для распределенной памяти (это достигается посредством установки параметра «имеющего возможность выборки с упреждением» в приложениях, использующих PCI шину). Схематическое представление данных, распределенных в распределенной памяти 61, представлено на фиг. 5.
Система 50 передачи также содержит контроллер 52 записи, который координирует запись данных в сетевой интерфейс 20. Контроллер 52 записи записывает исходящие сетевые данные 74 в распределенную память 55 (буфер 29 передачи), используя внутреннюю системную шину. Исходящие сетевые данные 74 записываются в буфер 29 передачи без вмешательства со стороны сетевого интерфейса 20. Контроллер записи собирает исходящие сетевые данные 74 в буфере записи-объединения, распределенного в процессоре главной вычислительной системы перед записью в сетевой интерфейс. Это позволяет исходящим сетевым данным 74 записываться в буфер 29 передачи по частям (вместо пакетов с маленькими битами).
Контроллер 52 записи обычно записывает исходящие сетевые данные 74 в буфер 29 передачи в кадрах данных, которые пакуются для передачи во внешнюю сеть. Это позволяет сетевому интерфейсу 20 извлекать исходящие сетевые данные 74 из буфера 20 передачи и передавать данные с минимальной дополнительной обработкой. Кадры данных могут быть объединены с управляющими данными 73, которые облегчают извлечение индивидуальных кадров из буфера 29 передачи.
Система 50 передачи, изображенная на фиг. 4, содержит управляющий модуль 53, который объединяет управляющие данные 73 с кадрами данных, записываемых в буфер 29 передачи. Управляющий модуль 53 добавляет управляющие данные 73 к каждому кадру данных перед тем, как соответствующие кадры перемещаются в сетевой интерфейс 20 посредством контроллера 52 записи. Контроллер 52 записи записывает управляющие данные 73 в буфер 29 передачи в той же транзакции, как и соответствующие кадры данных. Управляющие данные 73 обычно ставятся в начале соответствующего кадра данных и сохраняются рядом с исходящими сетевыми данными 74 в буфере передачи. Управляющие данные 73, сгенерированные управляющим модулем 53 и изображенные на фиг. 4, содержат:
идентификатор (76) кадра
: 16 бит
смещение (77) при обратной связи
: 16 бит
длину (78) кадра
: 16 бит
неиспользованный объем (79)
: 16 бит
Управляющий модуль 53 генерирует 8 байт (64 бита) управляющих данных для каждого кадра данных. Два байта (шестнадцать битов) управляющих данных распределяются для размещения (в « поле 79 данных с неиспользованном объемом»).
Управляющие данные 73, сгенерированные управляющим модулем 53, содержат дескрипторы обратной связи, которые обеспечивают сетевому интерфейсу отчет о передаче кадра, и поле длины, которое определяет размер соответствующего кадра данных в буфере 29 передачи. Добавление к началу каждого кадра управляющих данных 73 является стандартной операцией.
Управляющий модуль 53 инициирует передачу кадров данных во внешнюю сетью посредством записи индексов кадра в отдельный управляющий регистр 62 в сетевом интерфейсе 20. Индексы кадра определяют местоположение соответствующих кадров данных в выделенной памяти буфера. Управляющий модуль 53 обычно задает индексы кадра, такие как смещение в выделенной памяти буфера 29.
Устройство для передачи(не показанное на графических материалах), интегрированное с сетевым интерфейсом, извлекает индивидуальные кадры данных из буфера 29 для передачи во внешнюю сеть. Поля индекса кадра и длины 78 кадра определяют границы соответствующих кадров данных в буфере выделенной памяти. Устройство для передачи использует эти поля для извлечения кадра из буфера 29 передачи.
Устройство для передачи инициирует способ извлечения путем установления в начальное положение указателя кадра с адресом памяти буфера, определяемым по индексу кадра. Указатель кадра обычно совпадает с управляющими данными 73, расположенными в начале соответствующего кадра данных. Устройство для передачи считывает длину 78 кадра, содержащуюся в управляющих данных 7, для кадра, и определяет конечный адрес для кадра.
Сетевой интерфейс 20 передает кадры, извлеченные из буфера 29 передачи, во внешнюю сеть. Подтверждающее сообщение может быть отправлено в главную вычислительную систему после передачи, если было запрошено первичным программным приложением. Устройство для оповещений (не показано на графических материалах) управляет рассылкой подтверждающих сообщений с использованием дескрипторов обратной связи, содержащихся в управляющих данных 73 соответствующего кадра. Устройство для оповещений извлекает дескрипторы обратной связи из выделенной памяти сетевого интерфейса в той же транзакции, как и соответствующий кадр данных. Дескрипторы обратной связи определяются соответствующем программным приложением в начале генерирования кадра.
Устройство для оповещений записывает «идентификатор 76 кадра», извлеченный из выделенной памяти сетевого интерфейса, в регистр с обратной связью, распределенный в памяти главной вычислительной системы, для отчета о передаче кадра. Регистр с обратной связью определяется полем 77 «смещение при обратной связи», включенным в структуру управляющих данных 73. Это обычно означает смещение в массиве 54 обратной связи (сохраненного в памяти главной вычислительной системы), которое программное приложение отслеживает для подтверждения записи. Программное приложение может отклонить подтверждающие сообщения посредством установки определенных битов в поле 77 «индекс смещения». В приводимом в качестве примера варианте осуществления протокол передачи (содержит способ обратной связи) изображен на блок-схеме, представленной на фиг. 6.
Определенные протоколы, используемые контроллером 52 записи и модулем 51 управления памятью для реализации способа передачи зависят от системной шины, которая транспортирует данные между процессором хоста и сетевым интерфейсом. Реализация с использованием стандарта шины PCI кратко поясняется в этом разделе. Способ передачи может также быть реализован с использованием других стандартов системной шиной.
Модуль 51 управления памятью распределяет выделенную память интерфейса для буфера передачи в выделенный регистр базового адреса (BAR) в иерархии 61 памяти главной вычислительной системы (например, второй регистр базового адреса 72 для реализаций PCI шины). Это позволяет контроллеру 52 записи использовать запись-объединение для распределенной памяти 55. Модуль 51 управления памятью также позволяет выполнять запись-объединение для распределенной памяти 55. Управляющие регистры 62, используемые для инициации передачи кадра, распределяются отдельно по отношению к пространству ввода/вывода (обычно нулевой регистр 60 базового адреса) посредством модуля 51 управления памятью.
Продвижение сетевых данных в сетевом интерфейсе
Сетевой интерфейс 20, изображенный на фиг. 2, выполнен с возможностью реализации нескольких функций продвижения данных, которые обычно выполняются специализированным сетевым коммутационным оборудованием. Сетевой интерфейс 20 способствует дополнительным функциям продвижения путем передачи сетевых данных внутри между портами. Это позволяет избежать задержки, которая проявляется в обычных приложениях по причине продвижения сетевых данных на промежуточный коммутатор.
Сетевая сторона 21 сетевого интерфейса 20 содержит несколько портов данных. Порты данных могут быть интегрированы с аппаратными коннекторами, которые образуют физическое соединение с совместимыми физическими носителями (например, подключаемые модули малого форм-фактора), как показано на фиг. 2. Каждый порт данных определяет канал данных для обмена сетевыми данными между системой 25 управления сетевым интерфейсом и внешней сетью данных. Сетевой интерфейс 20 может также содержать беспроводные порты данных (не изображены), которые определяет беспроводное соединение канала данных с внешней сетью.
Система 25 управления сетевым интерфейсом может облегчать регистрацию данных путем копирования сетевых данных, переданных с помощью индивидуальных портов данных в порт регистрации. Скопированные сетевые данные могут затем быть упакованы в консолидированный поток данных для передачи во внешнюю систему регистрации. Система управления сетевым интерфейсом облегчает процесс регистрации без вмешательства со стороны главной вычислительной системы.
Варианты осуществления с возможностью регистрации системы 25 управления сетевым интерфейсом, содержат регистрационный модуль 85, который координирует регистрацию данных в сетевом интерфейсе 20. Регистрационный модуль 85 реплицирует сетевые данные из индивидуальных каналов данных (определенных портами сетевого интерфейса) и передает реплицированные данные в выделенный регистрационный порт. Регистрационный блок объединяет реплицированные данные от нескольких портов данных для передачи во внешнюю систему регистрации. Регистрационный блок генерирует консолидированный регистрационный поток данных, который передается во внешнюю сеть данных через регистрационный порт.
Регистрационный модуль 85 содержит регистрационный интерфейс, который облегчает динамическую реконфигурацию регистрации. Регистрационный интерфейс имеет несколько управляющих регистров, которые определяют каналы данных, реплицированные модулем регистрации, для передачи на удаленный сервер регистрации. Эти управляющие регистры могут быть динамически установлены системным администратором для включения/отключения регистрации для индивидуальных портов.
Регистрационный модуль может облегчать независимую регистрацию для индивидуальных потоков данных в индивидуальном канале данных. Независимая регистрация потока данных обычно координируется контроллером регистрации. Контроллер регистрации разделяет индивидуальные потоки данных из одного канала передачи данных и передает выделенные потоки независимо друг от друга в блок регистрации. Регистрационный интерфейс может облегчать регистрацию потока данных путем распределения выделенных управляющих регистров для индивидуальных потоков в канале данных.
Структурная схема 80, изображающая независимую регистрацию для отправления и получения потоков данных нескольких каналов данных, изображена на фиг. 7. Каждый порт данных представляет собой устройство 81 для получения и устройство 82 для отправки, которые распространяют полученные 87 и отправленные 88 потоки данных соответственно. Каждый поток данных реплицируется и копируется в регистрационный модуль 85.
Выделенный регистрационный блок (не показан на графических материалах) объединяет индивидуальные потоки данных в консолидированный регистрационный поток 90 для передачи из сетевого интерфейса (через устройство для передачи порта 83 регистрации). Индивидуальные потоки данных, объединенные в консолидированный регистрационный поток 90, выбираются модулем 85 продвижения, использующим динамически настраиваемые управляющие регистры.
Регистрационный порт, изображенный на фиг. 7, управляет обычными сетевыми передачами в добавление к регистрационному потоку 90, сгенерированному регистрационным модулем 85. Мультиплексор 84 передает исходящие сетевые данные из отправляемого потока 89 регистрационного порта и регистрационного потока 90 к устройству 83 для отправки регистрационного порта. Мультиплексор 84 может быть интегрирован с регистрационным блоком в нескольких вариантах осуществления.
Отправляемый поток 89 и принимаемый поток 86 регистрационного порта реплицируются и перемещаются в регистрационный модуль 85 для включения в регистрационный поток 90 с потоком данных из других портов данных.
Система 25 управления сетевым интерфейсом может также облегчать перенаправление данных между портами сетевого интерфейса 20. Продвижение данных облегчается путем передачи полученных данных из выделенного порта («порт «) к другому порту сетевого интерфейса («порт назначения»). Изображенный сетевой интерфейс 20 автономно перенаправляет данные, полученные в порту продвижения, без вмешательства со стороны главной вычислительной системы. Это позволяет передавать данные между портами в сетевом интерфейсе 20.
Системы управления сетевым интерфейсом с возможностью продвижения включают модуль продвижения, который получает данные непосредственно из порта продвижения и передает полученные данные во внешнюю сеть данных через другой порт данных (порт назначения). Модуль продвижения передает полученные сетевые данные автономно, без вмешательства со стороны главной вычислительной системы. Это позволяет избежать задержки, связанной с передачей данных в операционную систему главной вычислительной системы.
Модуль фильтрации может фильтровать сетевые данные, полученные в порту продвижения, и выборочно продвигать данные, которые не адресованы главной вычислительной системе. Устройство фильтрации (интегрированное с модулем продвижения в этом варианте осуществления) считывает адрес назначения данных, полученных в порту продвижения, и предотвращает продвижение данных с адресом назначения, который совпадает с адресом главной вычислительной системы.
Интерфейс продвижения облегчает конфигурацию модуля продвижения (включая активацию устройства фильтрации). Интерфейс продвижения имеет управляющий регистр, который блокирует продвижение данных между двумя портами в тех случаях, когда его устанавливает системный администратор.
Функция продвижения сетевого интерфейса позволяет вычислительным системам совместно использовать общее сетевое соединение без использования внешнего сетевого коммутатора или оптического разветвителя.
Приведенная в качестве примера реализация 91 продвижения данных с портов изображена на фиг. 8. Изображенная реализация 91 имеет симметричную конфигурацию продвижения данных с портов с взаимосвязанными портами данных, которые взаимно обмениваются полученными данными. Оба порта данных содержат выделенные устройство 92 для получения и устройство 93 для передачи, которые облегчают обмен данными с внешними сетями.
Входящие кадры сетевых данных получают устройства 92 для получения. Соответствующие порты передают все полученные кадры от устройств 92 для получения в устройство 97 фильтрации. Каждое устройство 92 для получения имеет выделенное устройство 96 фильтрации в изображенном варианте осуществления.
Устройства 97 фильтрации считывают адрес назначения из каждого из полученных кадров данных. Кадры данных с адресом назначения, который совпадает с адресом главной вычислительной системы, перенаправляются в систему управления сетевым интерфейсом для передачи в приемный буфер. Кадры данных с адресом назначения, который не совпадает с адресом главной вычислительной системы, предназначаются для ретрансляции во внешнюю сеть.
Устройство фильтрации может распределять кадры данных из порта продвижения к нескольким адресам (обычно к порту назначения и главной вычислительной системе). Это позволяет устройству фильтрации перенаправлять кадры данных к системе 25 управления сетевого интерфейса в том случае, когда адрес назначения не совпадает с адресом главной вычислительной системы. Критерии распределения данных, применяемые устройством фильтрации, обычно определяются с помощью интерфейса продвижения.
Устройство фильтрации может выбрать только часть кадров данных, полученных в порту продвижения, для распределения по нескольким адресам. Это особенно относится к незатребованным данным (например, широковещательным и многоадресным кадрам). Устройство фильтрации может также распределять все без исключения кадры данных, полученные в порту продвижения, в случае установки режима приема всех сетевых пакетов.
Устройство 97 фильтрации передает поток отфильтрованных данных (кадры с адресами, которые отличаются от адреса главной вычислительной системы) в устройство 95 для отправки, соединенное с портом назначения данных. Мультиплексор 96 объединяет поток отфильтрованных данных с исходящими сетевыми данными из главной вычислительной системы.
Реализация продвижения данных с портов, изображенная на фиг. 8, обеспечивает «ведущей» вычислительной системе совместно использовать сетевое соединение с «ведомой» вычислительной системой без дополнительного сетевого коммутатора. Изображенная реализация определяет конфигурацию порта продвижения данных для «ведущей» вычислительной системы (вычислительная система с прямым соединением с внешней сетью).
В пунктах формулы изобретения, которая следует далее и в предыдущем описании настоящего изобретения за исключением случаев, когда контекст требует иного из-за выражения языка или необходимого смысла, слово "содержать" или его вариации, такие как "содержит" или "содержащий" используется в общем смысле, то есть для определения наличия указанных признаков, но не исключения наличия или добавление дополнительных элементов в различных вариантах осуществления настоящего изобретения.
Специалистам в данной области техники очевидно, что многие модификации могут быть сделаны без отступления от сущности и объема настоящего изобретения.