Выпуск #9/2018
Билялетдинов Илья Евгеньевич, Ометов Александр Евгеньевич, Тимин Леонид Сергеевич
Оптимизация параметров высокоскоростных каналов процессора с целью повышения отказоустойчивости вычислительного модуля
Оптимизация параметров высокоскоростных каналов процессора с целью повышения отказоустойчивости вычислительного модуля
Просмотры: 2188
УДК 004.052.3
DOI: 10.22184/1993-8578.2018.82.75.78
DOI: 10.22184/1993-8578.2018.82.75.78
ВВЕДЕНИЕ
В современных процессорах «Эльбрус» используются высокоскоростные каналы передачи данных — это каналы памяти DDR3/DDR4 и каналы межпроцессорных связей и ввода-вывода, реализованные на базе физического уровня PCI Express.
Оперативная память является крайне важным элементом современных вычислительных комплексов, и от работоспособности каналов памяти зачастую может зависеть работоспособность всей системы.
Физический уровень каналов памяти имеет большое число настроек и параметров: это и различные сопротивления (например, выходные сопротивления сигналов), и различные настройки временных характеристик, параметры внутренних блоков и механизмов. Ввиду этого возникает вопрос: как определить оптимальные настройки?
Известны несколько способов это выяснить, например, можно из каких-то соображений придумать несколько настроек и запустить длительный прогон на нескольких вычислительных комплексах, но у этого способа есть проблемы: во-первых, можно промахнуться с настройками (все не удастся проверить из-за их огромного количества); во-вторых, этот процесс может занять огромное количество времени; в-третьих, при обнаружении некоторых ошибок не всегда можно точно определить, из-за чего она произошла (ошибка процессора, памяти или платы). Другой способ — используя очень точный осциллограф, следить за изменениями сигналов и их параметрами. Проблемы у этого метода почти такие же, как у предыдущего, за исключением последнего пункта. К тому же не следует забывать, что в процессе производства печатных плат, кристаллов и корпусов процессоров неизбежно получаются неидеальные результаты. Процессоры могут иметь различные характеристики выходных уровней сигналов, печатные платы могут иметь различные сопротивления в каналах, комплексы могут иметь различное качество пайки. Помимо этого, исследование настроек памяти следует проводить для всех различных конфигураций вычислительных комплексов.
Если не проводить данные исследования, а поставить настройки наобум, то с большой вероятностью вычислительный комплекс может потерять в надежности (неоптимальная настройка увеличивает вероятность сбоя в работе) или скорости работы (для обеспечения надежности снижается частота).
Для решения задачи следует обзавестись численной характеристикой настройки, которая будет отражать работоспособность канала, и которую можно получить быстро.
ГЛАЗКОВЫЕ ДИАГРАММЫ СИГНАЛОВ
Глазковая диаграмма — это суммарный вид всех битовых периодов измеряемого сигнала, наложенных друг на друга [6]. В теории она должна выглядеть как правильный многоугольник (рис. 1а), однако в реальности его границы размываются (рис. 1б).
Размытие возникает из-за нестабильности задающего генератора, изменений параметров линий (например, температуры), различной скорости распространения частотных составляющих одного и того же сигнала, различных отражений и помех на линии. Все эти нестабильности называют джиттером или фазовым дрожанием цифрового сигнала.
Глазковая диаграмма позволяет быстро и наглядно оценить качество сигнала и выявить ошибки, связанные с помехами и искажениями сигналов. При правильном подборе параметров выходных сопротивлений и терминирующих резисторов величина фазового дрожания сигнала уменьшается (рис. 2б), в сравнении с другими вариантами настроек (рис. 2a).
Одной из характеристик глазковой диаграммы является ширина глаза — ширина области диаграммы с наибольшим отношением величины амплитуды сигнала к величине амплитуды шума (рис. 3).
Для определения ширины глаза данных DDR3/DDR4 без помощи осциллографа авторами предлагается перемещать точку запоминания (decision point на рис. 3). При сдвиге за границы глаза система окажется неработоспособной, что позволит найти эту границу. Захват данных в системе памяти DDR происходит по фронту строба DQS. Соответственно, границы глаза можно найти, сдвигая синхросигнал относительно данных. Внутри физического уровня канала памяти есть несколько управляемых блоков задержек BDL и LCDL сигналов строба DQS. Начальные значения задержек выставляются во время процедуры инициализации физического уровня памяти внутренними механизмами подстройки [4, 5], однако они доступны для чтения и записи пользователю. При этом, управлять задержками можно отдельно для каждого байта и отдельно для режимов чтения и записи (при процессорном чтении данными и стробом управляет модуль памяти, а при записи — процессор). Алгоритм определения окна работоспособности следующий:
Запоминаем начальную задержку.
Увеличиваем задержку.
Запускаем «тест на работоспособность».
Если тест прошел успешно, то продолжаем увеличивать задержку и запускать тест.
Если тест завершился с ошибкой и строб вышел из зоны работоспособности, запоминаем последнюю рабочую задержку — правая граница окна работоспособности.
Выставляем начальную задержку, уменьшаем ее.
Запускаем «тест на работоспособность».
Если тест прошел успешно, то продолжаем уменьшать задержку и запускаем тест.
Если тест завершился с ошибкой и строб вышел из зоны работоспособности, запоминаем последнюю рабочую задержку — левая граница окна работоспособности.
Выставляем начальную задержку.
Отдельное управление задержкой позволяет определять окна работоспособности для каждого байта и каждого режима отдельно, что, в свою очередь, позволяет оценить возможный технологический разброс характеристик каналов памяти.
«ТЕСТ НА РАБОТОСПОСОБНОСТЬ»
В качестве теста на работоспособность может выступать широкий набор тестов, однако для уменьшения времени исполнения разумно использовать внутренние механизмы физического уровня памяти. Таких механизмов два: встроенное самотестирование (BIST) и встроенный модуль управления (DCU) [4]. Рассмотрим характеристики данных механизмов подробнее.
Механизм встроенного самотестирования был разработан фирмой Synopsys для тестирования каналов памяти. Он позволяет записывать псевдослучайный код в память по программируемым адресам. Однако у этого механизма есть недостаток: одновременно возможно тестировать только один байт памяти. С одной стороны, это не так плохо, так как это позволит снимать характеристики для каждого байта; с другой стороны, исключается влияние соседних байтов друг на друга и уменьшаются шумы на питании, которые могут повлиять на работоспособность вычислительного комплекса в дальнейшем.
Внутри физического уровня памяти также находился внутренний командный модуль, который позволяет управлять памятью в обход контроллера памяти. Он может исполнять все внутренние команды памяти, в том числе команды управления и настройки модуля памяти, однако есть ограничения, обусловленные размерами кэшей управления: всего можно исполнить 16 команд. Также к минусам можно отнести относительно длительное заполнение кэшей и трудность программирования на языке памяти (например, простая запись одного значения занимает 4 команды из 16 доступных). Преимущество командного модуля относительно встроенного механизма самотестирования только одно — возможность управлять всеми байтами одновременно.
РЕЗУЛЬТАТЫ
Были сняты характеристики окон работоспособности для разумных вариантов настроек вычислительных комплексов на базе различных микропроцессоров семейства «Эльбрус». По итогам исследований было отмечено большее влияние настроек памяти на комплексы с несколькими слотами памяти на один канал, а также большая зависимость относительных значений задержек (в единицах отсчетов LCDL) от величины напряжения питания физического уровня памяти и температуры. В связи с этим, в физическом уровне памяти был включен механизм внутренней подстройки по напряжению и температуре VT_drift. Результаты исследований для одного из каналов вычислительного комплекса «Эльбрус 4.4» (однослотовая конфигурация памяти, двухранковые модули памяти) представлены на рис. 4. По оси абсцисс отложены номера настроек в списке настроек, а по оси ординат — граница окна работоспособности в пикосекундах. Границы области работоспособности оценивались для каждого байта отдельно.
КАНАЛ PCI EXPRESS
Связи в вычислительных комплексах на базе микропроцессоров Эльбрус реализованы на основе физического уровня PCI Express. Каждый микропроцессор соединен с каждыми четырьмя соединениями (link), которые состоят из 4 двунаправленных линий (lane). Они соединяют передатчики (Transmitters, Tx) с одной стороны и приемники (Receivers, Rx) с другой. Пропускная способность этих линий достигает 6 Гб/с, поэтому очень важно правильно подобрать настройки физуровня так, чтобы сигнал не затухал (линии на серверной плате достаточно длинные) и не искажался.
Межпроцессорные связи имеют следующий настраиваемый набор параметров:
Выходная амплитуда передатчика.
Величина pre-emphasis и equalization.
Пропускная способность канала.
Правильная настройка этих параметров необходима для обеспечения повышенной отказоустойчивости комплекса.
Для проверки работоспособности набора параметров необходимо провести тестирование линий. Одним из известных решений является стандарт IEEE 1149.6, который позволяет тестировать высокоскоростные интерфейсы с помощью JTAG интерфейса. Однако у него есть существенные недостатки. Во-первых, этот стандарт необходимо внедрить и поддерживать в дополнениe к распространенному стандарту IEEE 1149.1. Во-вторых, этот метод не позволяет протестировать интерфейс на рабочей частоте, так как частота JTAG не превосходит 10–30 МГц. Поэтому для проверки набора параметров следует использовать встроенный механизм самотестирования PCIe.
Он состоит из двух частей: генератора тестовых данных и механизма сравнения. Первый встроен в передатчик и может посылать кодовые последовательности типа PRBS7, PRBS15, PRBS23 и PRBS31, а также пользовательские данные. Механизм сравнения размещен в приемнике и может синхронизоваться с генератором, принимать значения и подсчитывать количество ошибок.
Управление этим механизмом, изменение параметров связей, их инициализация и переинициализация производятся с помощью управляющих регистров, которые доступны с помощью JTAG [3] интерфейса.
Порядок тестирования набора параметров следующий:
Выбор набора настроек и инициализация физуровня передатчика и приемника с этими настройками.
Выбор режима работы генератора на передатчике и включение компаратора на приемнике в аналогичном режиме.
Синхронизация механизма сравнения с генератором. После этого сбрасывается значение счетчика ошибок и начинается тестирование.
Чтение значения счетчика ошибок каждой линии.
Выключение генератора и механизма сравнения.
Анализ полученных данных. Вывод о работоспособности настроек.
И так для каждого набора. В результате, на основании данных счетчика ошибок, можно определить окно работоспособности межпроцессорной связи, проанализировать работу каждой линии и выбрать наилучшую точку для повышения отказоустойчивости системы.
На рис. 6 представлены результаты подбора настроек для вычислительного модуля на базе процессора Эльбрус-8С. По оси абсцисс отложены номера настроек в списке настроек, а по оси ординат — десятичный логарифм числа ошибок при данной настройке. Для большей наглядности для различных настроек equalization построены отдельные графики.
НОВИЗНА РЕЗУЛЬТАТОВ
В данной работе представлены разработанные и исследованные авторами методы, позволяющие оценить качество настроек и подобрать оптимальные за короткое время с использованием минимального количества дополнительного оборудования. Было проведено большое число экспериментов с различными вариантами настроек высокоскоростных каналов процессора для различных вычислительных комплексов, в ходе которых выяснилось, что для повышения отказоустойчивости подбор параметров следует проводить для каждого вычислительного комплекса. Это связано с разбросом характеристик плат при производстве и монтаже, а также с условиями эксплуатации. В связи с этим, быстрый и простой в использовании способ оценки настроек чрезвычайно важен и имеет реальные перспективы применения.
1. Laung-Tern Wang, Charles E. Stroud, Nur A. Touba. System-on-Chip Test Architectures: Nanometer Design for Testability. — Burlington: Morgan KaufmannPublishers, 2008. — 856 p.
2. Laung-Terng Wang, Cheng-Wen Wu, Xiaoqing Wen. VLSI Test Principles and Architectures: Design for Testability. — San Francisco: Morgan Kaufmann Publishers, 2006. — 777 p.
3. IEEE Std 1149.1-2001: IEEE Standard Test Access Port and Boundary-Scan Architecture. — New York: Institute of Electrical and Electronics Engineers, 2001. — 208 p.
4. DesignWare Cores DDR3/2 SDRAM PHY Utility Block (PUB) Data¬book. — Mountain View: Synopsys, Inc., 2011. — 354 p.
5. DesignWare Cores DDR3/2 SDRAM PHY Databook for TSMC65GP25. — Mountain View: Synopsys, Inc., 2011. — 162 p.
6. Guy Foster. Anatomy of an Eye Diagram — A Primer. — SyntheSys Research, Inc., — 2004. — 9 p.
7. Бычков И. Н., Воробушков В. В., Перекатов В. И., Рябцев Ю. С. Система обеспечения целостности сигналов в вычислительных комплексах разработки ЗАО «МЦСТ» // Вопросы радиоэлектроники / Выпуск 3. Серия ЭВТ. — М. 2012 г. — С. 142–151.
В современных процессорах «Эльбрус» используются высокоскоростные каналы передачи данных — это каналы памяти DDR3/DDR4 и каналы межпроцессорных связей и ввода-вывода, реализованные на базе физического уровня PCI Express.
Оперативная память является крайне важным элементом современных вычислительных комплексов, и от работоспособности каналов памяти зачастую может зависеть работоспособность всей системы.
Физический уровень каналов памяти имеет большое число настроек и параметров: это и различные сопротивления (например, выходные сопротивления сигналов), и различные настройки временных характеристик, параметры внутренних блоков и механизмов. Ввиду этого возникает вопрос: как определить оптимальные настройки?
Известны несколько способов это выяснить, например, можно из каких-то соображений придумать несколько настроек и запустить длительный прогон на нескольких вычислительных комплексах, но у этого способа есть проблемы: во-первых, можно промахнуться с настройками (все не удастся проверить из-за их огромного количества); во-вторых, этот процесс может занять огромное количество времени; в-третьих, при обнаружении некоторых ошибок не всегда можно точно определить, из-за чего она произошла (ошибка процессора, памяти или платы). Другой способ — используя очень точный осциллограф, следить за изменениями сигналов и их параметрами. Проблемы у этого метода почти такие же, как у предыдущего, за исключением последнего пункта. К тому же не следует забывать, что в процессе производства печатных плат, кристаллов и корпусов процессоров неизбежно получаются неидеальные результаты. Процессоры могут иметь различные характеристики выходных уровней сигналов, печатные платы могут иметь различные сопротивления в каналах, комплексы могут иметь различное качество пайки. Помимо этого, исследование настроек памяти следует проводить для всех различных конфигураций вычислительных комплексов.
Если не проводить данные исследования, а поставить настройки наобум, то с большой вероятностью вычислительный комплекс может потерять в надежности (неоптимальная настройка увеличивает вероятность сбоя в работе) или скорости работы (для обеспечения надежности снижается частота).
Для решения задачи следует обзавестись численной характеристикой настройки, которая будет отражать работоспособность канала, и которую можно получить быстро.
ГЛАЗКОВЫЕ ДИАГРАММЫ СИГНАЛОВ
Глазковая диаграмма — это суммарный вид всех битовых периодов измеряемого сигнала, наложенных друг на друга [6]. В теории она должна выглядеть как правильный многоугольник (рис. 1а), однако в реальности его границы размываются (рис. 1б).
Размытие возникает из-за нестабильности задающего генератора, изменений параметров линий (например, температуры), различной скорости распространения частотных составляющих одного и того же сигнала, различных отражений и помех на линии. Все эти нестабильности называют джиттером или фазовым дрожанием цифрового сигнала.
Глазковая диаграмма позволяет быстро и наглядно оценить качество сигнала и выявить ошибки, связанные с помехами и искажениями сигналов. При правильном подборе параметров выходных сопротивлений и терминирующих резисторов величина фазового дрожания сигнала уменьшается (рис. 2б), в сравнении с другими вариантами настроек (рис. 2a).
Одной из характеристик глазковой диаграммы является ширина глаза — ширина области диаграммы с наибольшим отношением величины амплитуды сигнала к величине амплитуды шума (рис. 3).
Для определения ширины глаза данных DDR3/DDR4 без помощи осциллографа авторами предлагается перемещать точку запоминания (decision point на рис. 3). При сдвиге за границы глаза система окажется неработоспособной, что позволит найти эту границу. Захват данных в системе памяти DDR происходит по фронту строба DQS. Соответственно, границы глаза можно найти, сдвигая синхросигнал относительно данных. Внутри физического уровня канала памяти есть несколько управляемых блоков задержек BDL и LCDL сигналов строба DQS. Начальные значения задержек выставляются во время процедуры инициализации физического уровня памяти внутренними механизмами подстройки [4, 5], однако они доступны для чтения и записи пользователю. При этом, управлять задержками можно отдельно для каждого байта и отдельно для режимов чтения и записи (при процессорном чтении данными и стробом управляет модуль памяти, а при записи — процессор). Алгоритм определения окна работоспособности следующий:
Запоминаем начальную задержку.
Увеличиваем задержку.
Запускаем «тест на работоспособность».
Если тест прошел успешно, то продолжаем увеличивать задержку и запускать тест.
Если тест завершился с ошибкой и строб вышел из зоны работоспособности, запоминаем последнюю рабочую задержку — правая граница окна работоспособности.
Выставляем начальную задержку, уменьшаем ее.
Запускаем «тест на работоспособность».
Если тест прошел успешно, то продолжаем уменьшать задержку и запускаем тест.
Если тест завершился с ошибкой и строб вышел из зоны работоспособности, запоминаем последнюю рабочую задержку — левая граница окна работоспособности.
Выставляем начальную задержку.
Отдельное управление задержкой позволяет определять окна работоспособности для каждого байта и каждого режима отдельно, что, в свою очередь, позволяет оценить возможный технологический разброс характеристик каналов памяти.
«ТЕСТ НА РАБОТОСПОСОБНОСТЬ»
В качестве теста на работоспособность может выступать широкий набор тестов, однако для уменьшения времени исполнения разумно использовать внутренние механизмы физического уровня памяти. Таких механизмов два: встроенное самотестирование (BIST) и встроенный модуль управления (DCU) [4]. Рассмотрим характеристики данных механизмов подробнее.
Механизм встроенного самотестирования был разработан фирмой Synopsys для тестирования каналов памяти. Он позволяет записывать псевдослучайный код в память по программируемым адресам. Однако у этого механизма есть недостаток: одновременно возможно тестировать только один байт памяти. С одной стороны, это не так плохо, так как это позволит снимать характеристики для каждого байта; с другой стороны, исключается влияние соседних байтов друг на друга и уменьшаются шумы на питании, которые могут повлиять на работоспособность вычислительного комплекса в дальнейшем.
Внутри физического уровня памяти также находился внутренний командный модуль, который позволяет управлять памятью в обход контроллера памяти. Он может исполнять все внутренние команды памяти, в том числе команды управления и настройки модуля памяти, однако есть ограничения, обусловленные размерами кэшей управления: всего можно исполнить 16 команд. Также к минусам можно отнести относительно длительное заполнение кэшей и трудность программирования на языке памяти (например, простая запись одного значения занимает 4 команды из 16 доступных). Преимущество командного модуля относительно встроенного механизма самотестирования только одно — возможность управлять всеми байтами одновременно.
РЕЗУЛЬТАТЫ
Были сняты характеристики окон работоспособности для разумных вариантов настроек вычислительных комплексов на базе различных микропроцессоров семейства «Эльбрус». По итогам исследований было отмечено большее влияние настроек памяти на комплексы с несколькими слотами памяти на один канал, а также большая зависимость относительных значений задержек (в единицах отсчетов LCDL) от величины напряжения питания физического уровня памяти и температуры. В связи с этим, в физическом уровне памяти был включен механизм внутренней подстройки по напряжению и температуре VT_drift. Результаты исследований для одного из каналов вычислительного комплекса «Эльбрус 4.4» (однослотовая конфигурация памяти, двухранковые модули памяти) представлены на рис. 4. По оси абсцисс отложены номера настроек в списке настроек, а по оси ординат — граница окна работоспособности в пикосекундах. Границы области работоспособности оценивались для каждого байта отдельно.
КАНАЛ PCI EXPRESS
Связи в вычислительных комплексах на базе микропроцессоров Эльбрус реализованы на основе физического уровня PCI Express. Каждый микропроцессор соединен с каждыми четырьмя соединениями (link), которые состоят из 4 двунаправленных линий (lane). Они соединяют передатчики (Transmitters, Tx) с одной стороны и приемники (Receivers, Rx) с другой. Пропускная способность этих линий достигает 6 Гб/с, поэтому очень важно правильно подобрать настройки физуровня так, чтобы сигнал не затухал (линии на серверной плате достаточно длинные) и не искажался.
Межпроцессорные связи имеют следующий настраиваемый набор параметров:
Выходная амплитуда передатчика.
Величина pre-emphasis и equalization.
Пропускная способность канала.
Правильная настройка этих параметров необходима для обеспечения повышенной отказоустойчивости комплекса.
Для проверки работоспособности набора параметров необходимо провести тестирование линий. Одним из известных решений является стандарт IEEE 1149.6, который позволяет тестировать высокоскоростные интерфейсы с помощью JTAG интерфейса. Однако у него есть существенные недостатки. Во-первых, этот стандарт необходимо внедрить и поддерживать в дополнениe к распространенному стандарту IEEE 1149.1. Во-вторых, этот метод не позволяет протестировать интерфейс на рабочей частоте, так как частота JTAG не превосходит 10–30 МГц. Поэтому для проверки набора параметров следует использовать встроенный механизм самотестирования PCIe.
Он состоит из двух частей: генератора тестовых данных и механизма сравнения. Первый встроен в передатчик и может посылать кодовые последовательности типа PRBS7, PRBS15, PRBS23 и PRBS31, а также пользовательские данные. Механизм сравнения размещен в приемнике и может синхронизоваться с генератором, принимать значения и подсчитывать количество ошибок.
Управление этим механизмом, изменение параметров связей, их инициализация и переинициализация производятся с помощью управляющих регистров, которые доступны с помощью JTAG [3] интерфейса.
Порядок тестирования набора параметров следующий:
Выбор набора настроек и инициализация физуровня передатчика и приемника с этими настройками.
Выбор режима работы генератора на передатчике и включение компаратора на приемнике в аналогичном режиме.
Синхронизация механизма сравнения с генератором. После этого сбрасывается значение счетчика ошибок и начинается тестирование.
Чтение значения счетчика ошибок каждой линии.
Выключение генератора и механизма сравнения.
Анализ полученных данных. Вывод о работоспособности настроек.
И так для каждого набора. В результате, на основании данных счетчика ошибок, можно определить окно работоспособности межпроцессорной связи, проанализировать работу каждой линии и выбрать наилучшую точку для повышения отказоустойчивости системы.
На рис. 6 представлены результаты подбора настроек для вычислительного модуля на базе процессора Эльбрус-8С. По оси абсцисс отложены номера настроек в списке настроек, а по оси ординат — десятичный логарифм числа ошибок при данной настройке. Для большей наглядности для различных настроек equalization построены отдельные графики.
НОВИЗНА РЕЗУЛЬТАТОВ
В данной работе представлены разработанные и исследованные авторами методы, позволяющие оценить качество настроек и подобрать оптимальные за короткое время с использованием минимального количества дополнительного оборудования. Было проведено большое число экспериментов с различными вариантами настроек высокоскоростных каналов процессора для различных вычислительных комплексов, в ходе которых выяснилось, что для повышения отказоустойчивости подбор параметров следует проводить для каждого вычислительного комплекса. Это связано с разбросом характеристик плат при производстве и монтаже, а также с условиями эксплуатации. В связи с этим, быстрый и простой в использовании способ оценки настроек чрезвычайно важен и имеет реальные перспективы применения.
1. Laung-Tern Wang, Charles E. Stroud, Nur A. Touba. System-on-Chip Test Architectures: Nanometer Design for Testability. — Burlington: Morgan KaufmannPublishers, 2008. — 856 p.
2. Laung-Terng Wang, Cheng-Wen Wu, Xiaoqing Wen. VLSI Test Principles and Architectures: Design for Testability. — San Francisco: Morgan Kaufmann Publishers, 2006. — 777 p.
3. IEEE Std 1149.1-2001: IEEE Standard Test Access Port and Boundary-Scan Architecture. — New York: Institute of Electrical and Electronics Engineers, 2001. — 208 p.
4. DesignWare Cores DDR3/2 SDRAM PHY Utility Block (PUB) Data¬book. — Mountain View: Synopsys, Inc., 2011. — 354 p.
5. DesignWare Cores DDR3/2 SDRAM PHY Databook for TSMC65GP25. — Mountain View: Synopsys, Inc., 2011. — 162 p.
6. Guy Foster. Anatomy of an Eye Diagram — A Primer. — SyntheSys Research, Inc., — 2004. — 9 p.
7. Бычков И. Н., Воробушков В. В., Перекатов В. И., Рябцев Ю. С. Система обеспечения целостности сигналов в вычислительных комплексах разработки ЗАО «МЦСТ» // Вопросы радиоэлектроники / Выпуск 3. Серия ЭВТ. — М. 2012 г. — С. 142–151.
Отзывы читателей