В вычислительной технике под памятью понимают оперативные запоминающие устройства (ОЗУ) и постоянные запоминающие устройства (ПЗУ). На сегодняшний день ни одна вычислительная машина (ВМ) не может обойтись без памяти. В зависимости от сферы применения многопроцессорных систем к памяти предъявляются различные требования: по информационной емкости, по быстродействию и т.д. Построение таких систем трудоемко и занимает много времени.
Особое место в процессе создания многопроцессорных систем занимает тестирование как отдельных входящих в нее узлов, так и их совокупности [1]. Тестирование памяти включает тестирование шины адреса, шины данных и проверку ячеек памяти тестируемого устройства. Принцип проверки памяти заключается в сравнении считанных данных из тестируемой памяти с эталонными, которые ранее были записаны в эту память. Наиболее известными методами тестирования памяти [2] являются:
– проверка собственного адреса (own address); эталонные данные для заполнения памяти представляют собой адреса, по которым они прописываются;
– бегающая единица (нуль) (walking one (zero)); эталонные данные представляют собой нули (единицы), причем в один из разрядов записывается единица (нуль); проверка памяти проходит в несколько итераций в зависимости от длины записываемых данных, после каждой итерации производятся проверка данных, а затем сдвиг эталонных данных на единицу;
– проверка случайных значений (random pattern); эталонные данные представляют собой случайное значение.
Тесты могут размещаться и исполняться из ОЗУ (кэшируемое, некэшируемое) и встроенного ПЗУ (системное, пользовательское). По способу тестирования ОЗУ в ВМ можно разделить на локальное, непосредственно доступное с процессорного элемента, и удаленное, с доступом на запись и чтение памяти через коммуникационную среду для систем с распределенной памятью.
При включении питания ВМ (или снятии сигнала сброса) управление передается программе ПЗУ. После успешного запуска программы ПЗУ загружается операционная система (ОС). При возникновении ошибок в памяти программа ПЗУ или ОС может не загрузиться. В некоторых процессорных системах реализована аппаратная поддержка коррекции ошибок по коду Хэмминга, Рида–Соломона и др. Она позволяет снизить вероятность возникновения ошибок, но не избавиться от них полностью.
Предлагается рассмотреть новый подход к тестированию ОЗУ в многопроцессорной системе c распределенной памятью и коммуникационной средой RapidIO [3]. В настоящий момент создание высокопроизводительных ВМ на основе интерфейса RapidIO является перспективным направлением в электронике. По своим функциональным характеристикам, таким как пропускная способность, задержки при передаче пакетов в сети, масштабируемость и надежность, интерфейс RapidIO не только не уступает, но и превосходит другие коммуникационные интерфейсы [4, 5].
В RapidIO, помимо служебных операций, обеспечивающих доступ к регистрам контроллеров RapidIO, предусмотрены операции ввода-вывода логического уровня: запись без подтверждения (NWRITE), запись с подтверждением (NWRITE_R) и чтение (NREAD) (см. рис. 1) [6, 7]. Данные операции позволяют производить записи и чтение непосредственно по адресам ОЗУ и регистрам RapidIO удаленного оконечного устройства (ОУ). Для этого требуется определенная инициализация контроллеров RapidIO у ведущего процессорного элемента и удаленного ОУ. В зависимости от реализации аппаратуры пакет RapidIO можно сформировать в «ручном», описывая каждое поле пакета программно, в полуавтоматическом, описывая программно часть пакета, или в автоматическом режиме, то есть автоматически переводя обращения по адресам, отображенным на адреса из адресного пространства удаленного ОУ в операции NWRITE (NWRITE_R)/NREAD.
Для тестирования ОЗУ удаленного ОУ RapidIO предлагается использовать вышеперечисленные операции. Рассматривается многопроцессорная система, состоящая из процессорных элементов, на примере 1890ВМ6Я и коммутаторов 1890КП3Я. Особенностью микросхем 1890ВМ6Я является возможность обращения к ОЗУ ОУ по RapidIO, используя регистры RapidIO, реализующие механизм трансляции адресного пространства RapidIO в ОЗУ. Доступ к данным регистрам RapidIO процессорного элемента может осуществляться как локально, так и по интерфейсу RapidIO. Следовательно, удаленное устройство можно настроить для тестирования определенного участка ОЗУ по RapidIO. В процессоре 1890ВМ6Я реализованы отправка пакетов NWRITE, NWRITE_R и NREAD, а также прием пакетов ответов в автоматическом режиме.
Процедура тестирования приведена на рисунке 2. Тестирование включает в себя этап инициализации процессорного элемента, после чего настраиваются маршруты к ОУ и присваиваются идентификационные номера (ID). Причем для инициализации RapidIO системы достаточно воспользоваться механизмом или динамической инициализации системы, согласно спецификации [8], или статической инициализации с использованием конфигуратора на основе базовых блоков RapidIO [9]. Далее следует этап настройки автоматического режима формирования пакетов и трансляции памяти RapidIO в тестируемую память ОУ для доступа операций RapidIO к памяти удаленного устройства. Затем производится удаленное тестирование ОЗУ.
В таблице приведено время удаленного и локального тестирования ОЗУ. Измерения проводились на процессорном модуле ЦП-РИО-64А, включающем в себя два 200 МГц процессора 1890ВМ6Я и коммутатор параллельных каналов RapidIO 1890КП3Я, соединяющий процессоры [10]. Размер ОЗУ процессорного элемента, работающего на частоте 100 МГц, составляет 512 Мбайт. Размер тестируемой памяти выбран относительно небольшой – 32 Мбайта. Тесты ОЗУ включают в себя адресный тест, тест шины данных и тест самого устройства, запись и чтение происходят 32-разрядными словами. Тесты ОЗУ для удаленного тестирования запускались из-под тест-мониторной системы «TestMS», запись тестовых данных производилась операциями NWRITE и NWRITE_R, а чтение – операциями NREAD. Те же тесты ОЗУ для локального тестирования запускались из-под регистрового монитора (использовалось системное ПЗУ) и интерактивного монитора (использовалось ОЗУ), входящих в состав программы ПЗУ.
Время тестирования ОЗУ
RAM testing time
Устройство исполнения тестов, ОЗУ
|
Тестирование ОЗУ
|
Локальное
|
Удаленное
|
NWRITE, NREAD
|
NWRITE_R, NREAD
|
Некэшируемое
|
2 мин. 9 сек.
|
12 мин. 13 сек.
|
12 мин. 29 сек.
|
Кэшируемое
|
1 мин. 15 сек.
|
11 мин. 59 сек.
|
12 мин. 15 сек.
|
В случае ошибочной загрузки программы ПЗУ, в основном из-за ошибок в ОЗУ, управление передается регистровому монитору, находящемуся в системном ПЗУ, и под его управлением производится тестирование. Если программа ПЗУ загрузилась, а ОС нет, то тестирование осуществляется из ОЗУ. Для использования подхода удаленного тестирования необходимо определить в системе ОУ с неработающим ОЗУ. В системе предусмотрен сигнал READY, который оповещает все ОУ о корректной загрузке программы ПЗУ. После того как на одном из ОУ программа не загрузилась, определяется ID этого ОУ на RapidIO и проводится удаленное тестирование ОЗУ. Из таблицы видно, что удаленное тестирование ОЗУ требует больше временных затрат по сравнению с локальным тестированием из ОЗУ (приблизительно в 6 раз больше для некэшируемой памяти и в 10 раз для кэшируемой). В то же время локальное тестирование из системного ПЗУ, которое составляет 2 часа 12 минут, превышает по времени удаленное тестирование более чем в 10 раз. Операция NWRITE_R является операцией с подтверждением, поэтому требует на выполнение больше времени, чем операция NWRITE.
Одним из факторов, влияющих на время удаленного тестирования, является количество коммутаторов в системе, посредством которых производится удаленный доступ к ОЗУ ОУ, при этом в маршруте не должно быть более 256 коммутаторов [11]. Каждый коммутатор увеличивает время удаленного тестирования приблизительно на 188 секунд. Построен график зависимости времени тестирования ОЗУ от количества коммутаторов в системе RapidIO (см. рис. 3). На графике видно, что при наличии более 40 коммутаторов время удаленного тестирования операциями NWRITE и NREAD превышает локальное тестирование из-под регистрового монитора программы ПЗУ.
На время тестирования ОЗУ, помимо коммутаторов в системе, влияют и другие факторы, как программные (объем тестов, размер тестируемой памяти), так и аппаратные (частоты процессора, ОЗУ, ПЗУ). Но в целом можно сделать выводы, что данный подход эффективно использовать в случае возникновения ошибок ОЗУ при начальной загрузке системы с относительно небольшим количеством коммутаторов (менее 40). Сегодня реально используются многопроцессорные системы на базе процессоров 1890ВМ6Я с более, чем 20 коммутаторами RapidIO. Преимуществом подхода является и отсутствие аппаратных затрат для подключения к процессору с неработающим ОЗУ. В случае загрузки программы ПЗУ на всех ОУ в системе можно осуществить тестирование ОЗУ, как локальное, так и удаленное, с использованием встроенной RapidIO-консоли [12].
Литература
1. Бобков С.Г. Методика тестирования микросхем для компьютеров серии «Багет» // Программные продукты и системы. 2007. № 3. С. 2–5.
2. Adams R.D. High Performance memory testing: design principles, fault modeling, and self-test. Netherlands, Kluwer Acad. Publ., 2002, 262 p.
3. Fuller S. RapidIO. The Embedded Systems Interconnect. Wiley Publ. Inc., 2005, 380 p.
4. Бобков С.Г., Задябин С.О. Перспективные высокопроизводительные вычислительные системы промышленного применения на базе стандарта RapidIO // Электроника, микро- и наноэлектроника: сб. науч. тр. М.: Изд-во МИФИ, 2009. С. 114–121.
5. Бобков С.Г., Косарев И.М. Методы повышения производительности вычислительных систем // Прилож. к журн. «Информационные технологии». 2012. № 10. 32 с.
6. RapidIO Interconnect Specification. Part 1: Input/Output Logical Specification. Revision 3.0. RapidIO Trade Association, 2013, URL: http://www.rapidio.org/specs/current/2013-oct23.zip (дата обращения: 26.09.2014).
7. Бакулин А.А. Взаимодействие компонентов высокопроизводительных параллельных систем с помощью технологии RapidIO // Моделирование и визуализация. Многопроцессорные системы. Инструментальные средства разработки ПО. М.: Изд-во НИИСИ РАН, 2009. С. 77–89.
8. RapidIO Interconnect Specification. Annex 1: Software/ System Bring Up Specification. Revision 3.0. RapidIO Trade Association, 2013, URL: http://www.rapidio.org/specs/current/ 2013-oct23.zip (дата обращения: 26.09.2014).
9. Лавринов Г.А. Способы инициализации многопроцессорной системы // Программные продукты и системы. 2014. № 4. С. 37–40.
10. Сердин О.В., Бобков С.Г., Кондратьева Н.В., Ере- мин А.А. Разработка высоконадежных многопроцессорных модулей на базе высокоскоростных каналов RapidIO // Программные продукты и системы. 2013. № 4. С. 49–55.
11. Бакулин А.А. Проверка допустимости схемы маршрутизации в системе RapidIO // Программные продукты и системы. 2011. № 4. С. 20–23.
12. Лавринов Г.А. Способы повышения эффективности отладки и тестирования многопроцессорных систем // Программные продукты и системы. 2012. № 3. С. 86–89.