Тестирование памяти в многопроцессорных системах

Программные продукты и системы / Software & Systems

№ 1 (109), 2015

УДК 519.68 Дата подачи статьи: 26.06.14

DOI: 10.15827/0236-235X.109.068-071

ТЕСТИРОВАНИЕ ПАМЯТИ В МНОГОПРОЦЕССОРНЫХ СИСТЕМАХ

Г.А. Лавринов, зав. сектором, lavrinov@ps.niisi.ras.ru

Одним из основных элементов вычислительной системы является память. В зависимости от сферы применения многопроцессорных систем к памяти предъявляются различные требования: по информационной емкости, по быстродействию и т.д. При построении таких систем тестирование памяти является одним из важнейших этапов тестирования системы в целом. Тестирование памяти разделяется на тестирование шины адреса, шины данных и проверку ячеек памяти тестируемого устройства. По способу тестирования ОЗУ в вычислительной машине можно разделить на локальное, непосредственно доступное с процессорного элемента, и удаленное, с доступом на запись и чтение памяти через коммуникационную среду для систем с распределенной памятью. В статье рассматривается подход удаленного тестирования ОЗУ в многопроцессорной системе с коммуникационной средой RapidIO. Приведена процедура тестирования на примере процессоров 1890ВМ6Я. На основе базовых тестов ОЗУ (проверка собственного адреса, бегающая единица (или ноль) и проверка случайных значений) приведены результаты сравнения времени тестирования в зависимости от устройства исполнения тестов. Производится оценка эффективности использования данного подхода. Данный подход позволяет обходиться минимальным набором аппаратных средств.

Ключевые слова: RapidIO, многопроцессорная система, тестирование памяти, способ тестирования, трансляция памяти, ОЗУ, система с распределенной памятью.

В вычислительной технике под памятью понимают оперативные запоминающие устройства (ОЗУ) и постоянные запоминающие устройства (ПЗУ). На сегодняшний день ни одна вычислительная машина (ВМ) не может обойтись без памяти. В зависимости от сферы применения многопроцессорных систем к памяти предъявляются различные требования: по информационной емкости, по быстродействию и т.д. Построение таких систем трудоемко и занимает много времени.

Особое место в процессе создания многопроцессорных систем занимает тестирование как отдельных входящих в нее узлов, так и их совокупности [1]. Тестирование памяти включает тестирование шины адреса, шины данных и проверку ячеек памяти тестируемого устройства. Принцип проверки памяти заключается в сравнении считанных данных из тестируемой памяти с эталонными, которые ранее были записаны в эту память. Наиболее известными методами тестирования памяти [2] являются:

- проверка собственного адреса (own address); эталонные данные для заполнения памяти представляют собой адреса, по которым они прописываются;

- бегающая единица (нуль) (walking one (zero)); эталонные данные представляют собой нули (единицы), причем в один из разрядов записывается единица (нуль); проверка памяти проходит в несколько итераций в зависимости от длины записываемых данных, после каждой итерации производятся проверка данных, а затем сдвиг эталонных данных на единицу;

- проверка случайных значений (random pattern); эталонные данные представляют собой случайное значение.

Тесты могут размещаться и исполняться из ОЗУ (кэшируемое, некэшируемое) и встроенного ПЗУ (системное, пользовательское). По способу тестирования ОЗУ в ВМ можно разделить на локальное, непосредственно доступное с процессорного элемента, и удаленное, с доступом на запись и чтение памяти через коммуникационную среду для систем с распределенной памятью.

При включении питания ВМ (или снятии сигнала сброса) управление передается программе ПЗУ. После успешного запуска программы ПЗУ загружается операционная система (ОС). При возникновении ошибок в памяти программа ПЗУ или ОС может не загрузиться. В некоторых процессорных системах реализована аппаратная поддержка коррекции ошибок по коду Хэмминга, Рида-Соломона и др. Она позволяет снизить вероятность возникновения ошибок, но не избавиться от них полностью.

Предлагается рассмотреть новый подход к тестированию ОЗУ в многопроцессорной системе c распределенной памятью и коммуникационной средой RapidIO [3]. В настоящий момент создание высокопроизводительных ВМ на основе интерфейса RapidIO является перспективным направлением в электронике. По своим функциональным характеристикам, таким как пропускная способность, задержки при передаче пакетов в сети, масштабируемость и надежность, интерфейс RapidIO не только не уступает, но и превосходит другие коммуникационные интерфейсы [4, 5].

В RapidIO, помимо служебных операций, обеспечивающих доступ к регистрам контроллеров RapidIO, предусмотрены операции ввода-вывода логического уровня: запись без подтверждения (NWRITE), запись с подтверждением

68

Программные продукты и системы / Software & Systems

№ 1 (109), 2015

(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-разрядными словами. Тесты ОЗУ

69

Программные продукты и системы / Software & Systems

№ 1 (109), 2015

для удаленного тестирования запускались из-под тест-мониторной системы «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 превышает локальное тестирование из-под регистрового монитора программы ПЗУ.

12000 - 1 ct

S' 0) 8000 -к S X Ж У*

о Q.

О 0) н

| 2000— 0) о.

0 —•—У ——Л —*—Л 0 дале окаль окаль 5 иное ное т ное т 10 тести ести ести 15 рова рован рован 20 ние о ие и ие и 25 Комм пера ПЗУ ОЗУ 30 1утап диям 35 орь и NW 40 RIO RITE 45 шту и NR 50 к EAD

Рис. 3. График зависимости времени тестирования ОЗУ от количества коммутаторов RapidIO

Fig. 3. RAM testing time depending on the quantity of RapidIO switchboards

На время тестирования ОЗУ, помимо коммутаторов в системе, влияют и другие факторы, как программные (объем тестов, размер тестируемой памяти), так и аппаратные (частоты процессора, ОЗУ, ПЗУ). Но в целом можно сделать выводы, что данный подход эффективно использовать в случае возникновения ошибок ОЗУ при начальной загрузке системы с относительно небольшим количеством коммутаторов (менее 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. Бакулин А.А. Взаимодействие компонентов высокопроизводительных параллельных систем с помощью техноло-

70

Программные продукты и системы / Software & Systems

№ 1 (109), 2015

гии 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.

DOI: 10.15827/0236-235X.109.068-071 Received 06.10.14

MULTIPROCESSOR SYSTEMS MEMORY TESTING Lavrinov G.A., Head of Sector, lavrinov@cs.niisi.ras.ru (Scientific Research Institute of System Analysis of RAS,

Nakhimovsky Av. 36, Moscow, 117218, Russian Federation)

Abstract. Memory is one of the basic elements of a computer system. Depending on the application sphere of multiprocessor systems there are different memory requirements: information capacity, memory speed, etc. Memory test is one of the most important stages of system testing in general when creating such systems. A memory test includes testing address bus, data bus, and memory cells verifying of a device under the test. Depending on the method of testing RAM in an automatic data processing machine is divided into: local that is accessible directly from the processor element and remote that is accessible to read/write memory via communicative interface for distributed memory systems. This article considers the method of RAM remote testing in a multiprocessor system with RapidIO communicative interface. There is a testing procedure on the example of 1890VM6IA processors. Based on RAM tests (checking own address, walking one (or zero) and random values checking) the paper shows a comparison results of testing time depending on the test execution device. The author presents an assessment of this method efficiency. The approach allows using a minimum hardware set.

Keywords: RapidIO, multiprocessor system, memory testing, method of testing, memory translation, RAM, distributed memory system.

References

1. Bobkov S.G. The microcircuits testing method for “Baget” computers family. Programmnye produkty i sistemy [Software & Systems]. 2007, no. 3, pp. 2-5 (in Russ.).

2. Adams R.D. High Performance Memory Testing: Design Principles, Fault Modeling, and Self-Test. Kluwer Acad. Publ., 2002, 262 p.

3. Fuller S. RapidIO. The Embedded Systems Interconnect. John Wiley & Sons Publ. Inc., 2005, 380 p.

4. Bobkov S.G., Zadyabin S.O. Promising high performance computing systems for industrial application based on RapidIO standard. Elektronika, mikro- i nanoelektronika. Sbornik nauchnykh trudov [Electronics, Micro- and Nanoelectronics. Collection of Papers]. Moscow, MEPhI Publ., 2009, pp. 114-121 (in Russ.).

5. Bobkov S.G., Kosarev I.M. Methods of computer systems performance increasing. Informatsionnye tekhnologii [Information Technologies]. Journ. application. 2012, no. 10, 32 p. (in Russ.).

6. RapidIO Interconnect Specification. Part 1: Input/Output Logical Specification. Revision 3.0. RapidIO Trade Association, 2013. Available at: http://www.rapidio.org/specs/current/2013-oct23.zip (accessed September 26, 2014).

7. Bakulin A.A. The interaction of high-performance parallel systems components using RapidIO technology. Modelirovanie i vizualizatsiya. Mnogoprotsessornye sistemy. Instrumentalnye sredstva razrabotki PO [Modeling and Visualization. Multiprocessor Systems. Software Development Tools]. Moscow, SRISA RAS Publ., 2009, pp. 77-89 (in Russ.).

8. RapidIO Interconnect Specification. Annex 1: Software/System Bring Up Specification. Revision 3.0. RapidIO Trade Association, 2013. Available at: http://www.rapidio.org/specs/current/2013-oct23.zip (accessed September 26, 2014).

9. Lavrinov G.A. Methods of multiprocessor system initialization. Programmnye produkty i sistemy [Software & Systems]. 2014, no. 4, pp. 37-40 (in Russ.).

10. Serdin O.V., Bobkov S.G., Kondratyeva N.V., Eremin A.A. Design of high reliability multiprocessor modules based on high-performance rapidio interconnect architecture. Programmnye produkty i sistemy [Software & systems]. 2013, no. 4, pp. 49-55 (in Russ.).

11. Bakulin A.A. Validation of routing scheme in rapidio system. Programmnye produkty i sistemy [Software & systems]. 2011, no. 4, pp. 20-23 (in Russ.).

12. Lavrinov G.A. Methods of efficiency increasing of debugging and testing for multiprocessor systems. Programmnye produkty i sistemy [Software & Systems]. 2012, no. 3, pp. 86-89 (in Russ.).

71