Все идеи и алгоритмы, описываемые в данной статье, являются результатом моей независимой и полностью самостоятельной интеллектуальной деятельности. Как автор, разрешаю свободно использовать, изменять, дополнять все идеи и алгоритмы любому человеку или организации в любых типах проектов при обязательном указании моего авторства.
© Балыбердин Андрей Леонидович 2019 Rutel@Mail.ru
Синхронная Символьная Иерархия
Создание единого физического потока из нескольких параллельных
Особенности построения высокоскоростного коммутатора.
Высокоскоростным коммутатором будем считать такой коммутатор, для которого за один такт синхронизации принимается больше одного символа на физический канал. Тактовая частота ядра коммутатора 4ГГц, символ 100 бит : пропускная способность физического канала более 400G будет требовать обработки более одного символа за такт.
Появляется вопрос: Что делать если потребуются большие скорости физического канала, например 10Т. Логика диктует увеличение числа одновременно обрабатываемых символов, для скорости 10Т и частоты 4ГГц необходимо за один такт коммутировать по 2500 бит (25 символов). С точки зрения схемотехники шина данных шириной в 2500 бит не является чем то запредельным (для HBM ширина шины данных может достигать 4096 бит). Физический канал передачи данных с такими скоростями состоит из большого числа параллельных линий, каждая линия передает один символ за такт работы коммутатора. С помощью программируемых задержек можно выравнивать моменты приема символов на всех линиях и добиться одновременного приема одновременно отправленных символов. Остается объединить их в единый физический канал (25 линий для скорости 10Т), так что бы счетчик символов был один для всех линий. Наиболее простой способ, это создать один счетчик который инкрементируется на число равное числу линий составляющих физический канал.
Для ядра коммутатора такой подход выливается в необходимость увеличения ширины данных в число раз равное числу линий составляющих отдельный физический канал, но с некоторым дополнением. Единицей передачи данных, регулирования скорости передачи для виртуального канала является один символ и модуль виртуального канала может обрабатывать только один символ за такт. Для подключения к физическому каналу оперирующему большим числом символов за такт нужно или усложнять модуль виртуального канала, который должен выделять только символы предназначенные данному конкретному каналу или гарантировать что такой символ будет только один. Первый вариант не эффективен, большинство виртуальных каналов имеют скорость меньше скорости предоставляемой одной линии связи суммарного физического канала (в этом случае символ будет гарантированно один) и для них такой модуль будет избыточен. Выгоднее разбивать один большой виртуальный канал на несколько равных по скорости (меньшей чем скорость отдельной линии) и для каждой такой части назначить свой модуль виртуального канала. Выделение нужного слова из многих (из 25 слов для скорости 10Т) выполняется достаточно просто. Каждое слово в пачке имеет свой «адрес» (значение счетчика плюс номер символа в пачке), достаточно каждое из них сравнить с заданным диапазоном и результирующий бит использовать для открытия нужного буфера (управления мультиплексором). При таком подходе высокоскоростные каналы будут использовать больше одного модуля виртуального канала, но в сумме это более выгодно (по потреблению энергии и числу транзисторов) чем использование модулей умеющих обрабатывать больше чем один символ из пачки. Все остальные алгоритмы будут работать одинаково. Для пользователя такой виртуальный канал тоже выглядит как пачка символов, загружаемая за один такт. Но есть одна особенность, на приемной стороне символы могут появляться не одновременно и для однозначного понимания нужно передавать данные пачками с числом символов равным числу модулей виртуальных каналов задействованных для высокоскоростного виртуального канала (если все FIFO содержат данные значит пачка принята). Возможен и другой вариант: пользователь сам разбивает исходный поток на равные части и при приеме собирает назад, но думаю особого смысла нет.
Темы для НИР :
1.Необходимо проверить гипотезу, от том что если виртуальный канал с большой скоростью (заданный большим диапазоном состояний счетчика) разбить на несколько равных и меньших чем скорость отдельной линии, то в пачке суммарного канала будет встречаться не более одного слова принадлежащего одному конкретному модулю FIFO.
Комментарии
Ну что, оценивать будем?
Давайте )))
Придётся подождать. Сорри
Будут вопросы, пишите.
Естественно...
Если хотите оценить, то лучше делать это последовательно.
Например, сначала прочитать https://aftershock.news/?q=node/1096748
Понять, есть ли логические ошибки.
Далее читать следующий текст считая, что предыдущий "доказан".
Да, некоторые проблемы могут быть, но это спасает от превращения проекта целиком в неструктурированную "кашу".
Для понимания: Весь комплект текстов будет описывать суперкомпьютер и он будет соотноситься с современными компьютерами как они с деревянными счетами.
Не пытайтесь оценивать все и сразу.
Прочитайте https://aftershock.news/?q=node/1096748 и для себя ответьте на два вопроса :
1.Действительно ли канал построенный по таким принципам может проходить через любое число промежуточных коммутаторов с буферной памятью 3 символа на один виртуальный канал без потерь данных из-за переполнения буфера ?
2. Действительно ли в среднем в буфере каждого коммутатора будет ровно один символ, соответственно время коммутации в среднем стремится к половине периода передачи символа вкаждом конкретном виртуальном канале ?