автореферат диссертации по информатике, вычислительной технике и управлению, 05.13.15, диссертация на тему:Функциональное тестирование управляющего оборудования RISC-микропроцессоров, применительно к архитектуре SPARC V9

кандидата технических наук
Кузнецов, Олег Юрьевич
город
Владивосток
год
2002
специальность ВАК РФ
05.13.15
цена
450 рублей
Диссертация по информатике, вычислительной технике и управлению на тему «Функциональное тестирование управляющего оборудования RISC-микропроцессоров, применительно к архитектуре SPARC V9»

Оглавление автор диссертации — кандидата технических наук Кузнецов, Олег Юрьевич

Содержание.

Введение.

1 Функциональное тестирование микропроцессора.

1.1 Основные направления развития функционального тестирования.

1.1.1 Модульный подход.

1.1.2 Микрооперационный подход.

1.1.3 Модель регистровых передач.

1.1.4 Функциональная декомпозиция.

1.2 Функциональное тестирование RISC-микропроцессоров.

1.3 Проблемы проверки управляющего оборудования.

1.4 Задачи, решаемые в последующих разделах.

2 Архитектура SPARC V9.

2.1 Структура микропроцессора.

2.1.1 Устройство предварительной выборки и диспетчеризации команд.

2.1.2 Кэш-память команд.

2.1.3 Организация конвейера.

2.1.4 Целочисленное исполнительное устройство.

2.1.5 Устройство загрузки/записи.

2.1.6 Устройство работы с вещественными числами.

2.1.7 Графическое устройство.

2.1.8 Устройство управления памятью.

2.1.9 Управление интерфейсом памяти.

2.1.10 Кэш-память данных.

2.1.11 Управление внешней кэш-памятью.

2.2 Форматы данных.

2.3 Организация регистровых файлов.

2.3.1 Целочисленные регистры общего назначения.

2.3.2 Регистры вещественных данных.

2.3.3 Регистры управления и состояния.

2.4 Форматы команд и способы адресации.

2.5 Архитектурная модель микропроцессора.

3 Диагностические модели микропроцессора.

3.1 Граф - модель.

3.2 Проверка механизмов обработки данных.

3.3 Механизмы хранения данных.

3.4 Механизмы передачи данных.

4 Проверка работоспособности управляющего оборудования RISC-микропроцессора.

5 Практические результаты.

5.1 Определение требований к программному комплексу.

5.2 Архитектура программы самотестирования.

5.2.1 Выбор языка программирования для интерфейсной программы

5.3 Автоматизированное построение проверяющих процедур.

Введение 2002 год, диссертация по информатике, вычислительной технике и управлению, Кузнецов, Олег Юрьевич

Актуальность темы. Проведенный анализ современного рынка микропроцессоров показал, что лидирующее положение на рынке вычислительных систем в настоящее время занимают персональные компьютеры, рабочие станции и сервера, вытеснившие во многих областях традиционные мэйнфреймы [49, 50]. Это стало возможным благодаря широкому применению принципов RISC архитектуры (RISC-Reduced Instruction Set Computer - архитектура микропроцессора с сокращенным набором команд) при создании современных микропроцессорных систем [12, 33]. Высокая производительность процессоров на базе этой архитектуры по сравнению с процессорами, основанными на традиционной CISC архитектуре (CISC- Complex Instruction Set Computer - архитектура с полным набором команд), позволила им занять ведущие роли на рынке серверов и рабочих станций высшего ценового класса. Более того, развитие традиционных CISC-архитектур часто идет по пути вовлечения принципов RISC на микроархитектурном уровне [37, 86].

В связи с этим весьма актуальна проблема синтеза тестов и процедур тестирования RISC-микропроцессоров [18, 45].

Масштабируемая процессорная архитектура компании Sun Microsystems (SPARC - Scalable Processor Architecture) является наиболее широко распространенной RISC-архитектурой, отражающей доминирующее положение компании на рынке UNIX-рабочих станций и серверов. Учитывая это, представляется целесообразным выбор в качестве объекта исследования и тестирования, RISC-процессора, построенного на архитектуре Sparc.

Анализ последних тенденций в тестировании МП показал, что большинство производителей процессоров отходят от методов построения тестов, основанных на структуре объекта, отдавая предпочтение методам 5 проверки правильного функционирования объекта тестирования. Это позволяет говорить о том, что применение функционального подхода является едва ли не единственно возможным способом проверки работоспособности таких устройств.

Таким образом, актуальность данной темы обусловлена с одной стороны практическим применением и дальнейшим развитием функционального подхода для решения задачи тестирования современного, широко распространенного микропроцессора, а с другой стороны разработкой методики функционального тестирования управляющего оборудования микропроцессоров с RISC архитектурой.

Цель и основные задачи работы. Целью диссертационной работы является развитие методики функционального тестирования применительно к современному RISC - микропроцессору для последующего распространения полученных результатов на целый класс подобных устройств.

Для достижения указанной цели были поставлены и решены следующие задачи: построение архитектурной модели исследуемого микропроцессора; построение диагностических моделей микропроцессора, включающих в себя общую граф-модель и модели механизмов микропроцессора; разработка проверяющих процедур; разработка методики функционального тестирования управляющего оборудования RISC-микропроцессора; построение процедур проверки управляющего оборудования микропроцессора с архитектурой SPARC V9; разработка практических рекомендаций по созданию программных средств для автоматического синтеза тестовых процедур 6 проверки управляющего оборудования.

Методы исследования базируются на основных положениях технической диагностики, теории множеств, математической логики и теории графов.

Научная новизна работы заключается в применении методики функционального тестирования к современному RISC-микропроцессору и разработке процедур тестирования его основных механизмов, а также в разработке, обосновании и использовании методики построения тестов для проверки управляющего оборудования RISC-микропроцессоров. В работе были получены следующие основные научные результаты: разработана общая диагностическая модель микропроцессора с архитектурой SPARC V9 - граф-модель, являющаяся основой для построения функционального теста; построены диагностические модели основных механизмов микропроцессора SPARC V9 и разработаны процедуры проверки их работоспособности; разработана методика проверки работоспособности управляющего оборудования микропроцессора через, по предположению, работоспособное оборудование обработки, хранения и передачи данных; на основе методики проверки работоспособности управляющего оборудования разработаны тестовые процедуры; определена архитектура тестовой программы как совокупности тестовых процедур для основных механизмов и функциональных модулей микропроцессора; разработаны программные средства для автоматической генерации тестовых процедур.

Практическая ценность работы. Все исследования носят прикладной характер и выполнялись с учетом последующей практической реализации разработок. Результаты работы позволяют обоснованно говорить о том, что в 7 настоящее время практически отсутствует альтернатива функциональному методу проверки работоспособности микропроцессоров.

Использование в качестве объекта исследования широко распространенного микропроцессора позволяют распространить полученные результаты на целый класс подобных устройств.

Разработанная методика проверки управляющего оборудования предусматривает применение достаточно простых алгоритмов, достоверность которых подробно аргументирована в диссертационной работе.

Разработанный на основе данной методики программный комплекс позволяет строить тестовые процедуры, основываясь на доступных данных об исследуемой архитектуре, таких как список команд микропроцессора и сведения об организации регистровых файлов.

Достоверность научных положений, выводов и практических рекомендаций подтверждена корректным обоснованием предлагаемых моделей и доказательностью тестовых процедур.

Реализация результатов работы. Материалы диссертационной работы используются в учебном процессе на кафедре электронной и компьютерной техники Дальневосточного государственного технического университета, обеспечивая дисциплины: "Автоматизация инженерного труда", "Основы технической диагностики" и "Средства технического обслуживания ВТ".

Накопление практических результатов по исследованию подобных объектов может быть использовано в дальнейшем для проведения анализа в области количественной оценки тестопригодности конкретной архитектуры.

Разработанный метод и его практическая реализация может использоваться при тестировании различных микропроцессорных систем. Разработанные программные средства использовались в диссертационной работе для построения тестовых процедур исследуемого микропроцессора. 8

Заключение диссертация на тему "Функциональное тестирование управляющего оборудования RISC-микропроцессоров, применительно к архитектуре SPARC V9"

3) Результаты работы программы выдаются в основной поток (STDOUT) и могут быть перенаправлены в файл.

4) Работа программы заключается в последовательной проверке механизмов МП с помощью алгоритмов, описанных в главах 3 и 4.

К проектным ограничениям следует отнести ограничения, вносимые операционной системой в области реализации защищенного режима. Для обхода данных ограничений данную систему предлагается построить в виде двух модулей - пользовательского интерфейса, реализованного на языке С или Java и вызываемых функций тестирования механизмов, реализованного на языке ассемблер данного МП.

5.2 Архитектура программы самотестирования

Как уже было отмечено выше, программа самотестирования состоит из двух частей - интерфейса и функционального ядра (рисунок 5.3)

Интерфейс служит для обеспечения связи между внешней средой и функциональным ядром и может быть написан на кросс-платформенном языке высокого уровня. Это обеспечит независимость программы тестирования от платформы в операциях ввода-вывода и возложит их выполнение на ОС. В качестве такого языка программирования можно использовать широкораспространенный язык С или Java, которые имеют

71 поддержку на большинстве платформ и позволяют использовать модули, написанные на других языках, в частности на языке ассемблера.

Рисунок 5.3 - Архитектура программы самотестирования

Интерфейсная программа реализует алгоритм тестирования путем последовательного вызова функций ядра, тестирующих тот или иной механизм, и анализа возвращаемых данных. Кроме того, при тестировании механизма хранения и передачи данных, интерфейсная программа может интерпретироваться как вершина IN/OUT, потому что является точкой соприкосновения между микропроцессором и внешней средой - ОС.

5.2.1 Выбор языка программирования для интерфейсной программы

Упоминание в качестве одного из возможных языков интерфейса языка Java неслучайно. Изначальной причиной создания этого языка послужила необходимость в платформенно-независимом языке программирования, позволяющем создавать программы, которые не приходилось бы компилировать отдельно для каждой архитектуры и можно было бы использовать на различных процессорах под различными операционными системами [2, 7, 13, 25, 26, 39]. К основным особенностям этого языка можно отнести следующее:

72

Java позволяет в полной мере использовать преимущества объектно-ориентированной разработки приложений.

Кроме того, Java предоставляет программисту богатый набор классов объектов для ясного абстрагирования многих системных функций, используемых при работе с графикой, сетью и для ввода-вывода. Ключевая черта этих классов заключается в том, что они обеспечивают создание независимых от используемой платформы абстракций для широкого спектра системных интерфейсов.

Таким образом, это единственный язык, имеющий единый стандарт, независимый от архитектуры МП, операционной системы или компилятора. Необычайная способность Java исполнять свой код на любой из поддерживаемых платформ достигается тем, что ее программы транслируются в некое промежуточное представление, называемое байт-кодом (bytecode). Байт-код, в свою очередь, может интерпретироваться в любой системе, в которой есть среда выполнения Java. Большинство ранних систем, в которых пытались обеспечить независимость от платформы, обладало огромным недостатком - потерей производительности (Basic, Perl). Несмотря на то, что в Java используется интерпретатор, байт-код легко переводится непосредственно в "родные" машинные коды (Just In Time compilers) "на лету". При этом достигается очень высокая производительность (Symantec JIT встроен в Netscape Navigator). Кроме того, в последнее время многие производители операционных систем все чаще заявляют о встроенной поддержке языка Java [26], что существенно может повлиять на его производительность.

Функциональное ядро должно быть написано на языке ассемблера, исследуемого МП и иметь в своем составе процедуры тестирования различных механизмов. Каждая функция, реализующая проверку некоторого механизма, возвращает два состояния - "О", что соответствует нормальному состоянию и любое "ненулевое" число, соответствующее ошибке. Для этого

73 возможно использование некоторой контрольной суммы, которая накапливается в процессе выполнения процедуры. Процедура проверки механизма передачи данных подразумевает передачу из IN в OUT данных, задействуя все возможные пути ГРП. В этом случае, как было отмечено выше, в роли вершин IN и OUT выступает интерфейсная программа, а функция проверки реализует передачу данных.

5.3 Автоматизированное построение проверяющих процедур

Рассмотренная выше архитектура программы позволяет адоптировать ее под другой МП с подобной архитектурой путем замены функционального ядра. В связи с этим актуальной становится задача автоматизированного построения функций ядра. Для решения этой задачи был разработан и реализован следующий алгоритм (рисунок 5.4).

Архитектурная модель файл

Рисунок 5.4 - Построение тестовых процедур

На вход программного комплекса подается некоторое формальное

74 описание архитектуры МП, которое переводится во внутреннее представление. Подобное решение позволяет использовать на входе практически любое описание архитектуры за счет изменения или добавления преобразователя описания в удобный вид. В данном случае под описанием архитектуры мы понимаем данные, существенные для построения функциональных тестов в рамках рассматриваемого нами функционального подхода.

Такие данные, как это было показано в предыдущих главах, должны содержать сведения о командах и методах адресации, а также сведения о регистрах и путях передачи данных (ГРП). Используя эти данные и приведенные выше простые процедуры, легко построить тестовые последовательности для проверки механизмов МП (тест-индикаторы).

Для создания компилируемого файла на основе полученной тестовой последовательности предлагается использование широкораспространенной технологии XSLT (extensible stylesheet language transformation). Данная технология предполагает отображение некоторых данных представленных в виде XML (extensible markup language) [7, 8, 51] с помощью языка стилей XSL (extensible stylesheet language). Использование этой технологии для хранения и представления данных позволит абстрагироваться при создании тест-индикаторов от синтаксиса команд конкретного МП и вынести этот синтаксис в xsl описание, которое легко модифицируется, что, в свою очередь, повышает универсальность и переносимость такой системы.

Представленная архитектура программного комплекса для автоматизированного построения тестовых процедур была апробирована в программе для генерации тест-индикаторов проверки управляющего оборудования.

Заключение

В диссертационной работе получены следующие основные результаты:

1. Построена архитектурная модель М8С-микропроцессора, сочетающего в себе основные черты широкого класса современных МП. Модель включает в себя основные блоки МП, их информационное взаимодействие и может рассматриваться в качестве концептуальной для используемого функционального подхода.

2. Разработана граф-модель, включающая модель регистровых передач и управляющие функции, которая позволяет получить более полное представление об обработке и передаче данных в случае конвейерного управления, а также определить основные механизмы МП, подлежащие последующей проверке.

3. Разработаны процедуры тестирования механизмов МП, позволяющие строить тестовые последовательности для проверки функциональных модулей и регистровых передач.

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

5. Разработаны и реализованы в виде программных модулей процедуры тестирования, составляющие наиболее важную часть предложенной методики проверки управляющего оборудования.

78

6. Разработаны и реализованы в виде программного комплекса алгоритмы автоматизированного построения программ для тестирования различных МП, архитектура которых укладывается в рамки разработанной архитектурной модели. Программный комплекс позволяет автоматически синтезировать тестирующие программы, что позволяет существенно снизить затраты, связанные с переходом на новое оборудование.

79

Библиография Кузнецов, Олег Юрьевич, диссертация по теме Вычислительные машины и системы

1. Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов. // М.: Мир, 1979.

2. Волш А. Основы программирования на Java для World Wide Web. // IDG Books Worldwide,Inc., 1996, Издательство "Диалектика", 1996

3. Глушков В.M. Теория автоматов и формальные преобразования микропрограмм // Кибернетика, №5, 1965, с. 1-9.

4. Гончаровский О. В. Микрооперационный подход к диагностированию дискретных устройств // Электронное моделирование. 1980 г. № 4, с. 89-91

5. Грис Д. Конструирование компиляторов для цифровых вычислительных машин // М.: Мир, 1975.

6. Гуляев В. А. Синтез функциональных тестов для проверки блоков вычислительных машин//Автоматика и вычислительная техника. 1971. № 1

7. Даконта. М., Саганич А. XML и Java 2 Спб. Питер пресс, 2001.

8. Дейтел X. М., Дейтел П. Дж., Нието Т. Р., Лиин Т. М., Садху П. Как программировать на XML // M.: Бином, 2001

9. Дубова Т. А., Первов В. В. Построение полного теста для п-разрядного суматора // Автоматика и телемеханика. 1979 № 1, с. 161-169

10. Евстигнеев В.А. Применение теории графов в программировании. // М.: Наука, 1985.

11. Зубков C.B.Assembler. Для DOS, Windows и Unix // M.: ДМК Пресс, 1999

12. К вопросу о RISC // Computerworld, №09, 2002

13. Картузов А. В., Николенко Д. В. Программируем на языке JAVA. Краткий курс // Издательство Наука и техника, 2001 г.

14. Касперски К. RISK vs. CISC // Компьютерра №36, 1999г.80

15. Касьянов В.Н., Поттоснн И.В. Методы построения трансляторов. // Новосибирск: Наука, 1986.

16. Коровинский В.В., Жаков В.И., Фильчаков В.В. Синтаксический анализ и генерация кода // СПб.: ГААП, 1993.

17. Корсакова Н.В., Пятлина Е.О. Фильчаков В.В. Структуры данных // Л.: ЛИАП, 1986.

18. Креймер И. П., Шаршунов С. Г., Янкин А. В. О выборе исходного множества операндов для проверки механизма дешифрации операций микропроцессоров // Анализ и диагностирование электронных устройств. Владивосток: ДВНЦ АН СССР. 1986. с. 20-31

19. Кузнецов О. Ю., Шаршунов С. Г. Подход к проблеме функционального тестирования управляющих блоков RISC микропроцессоров // Научная конференция "Вологдинские чтения", ДВГТУ, г. Владивосток, 2001 г., материалы конференции, с .20-24.

20. Кузнецов О. Ю., Шаршунов С. Г. Функциональное тестирование управляющих блоков RISC-микропроцессоров // Международная конференция "Компьютерные науки и информационные технологии" г. Саратов, апрель 2002г., тез. докл. с. 37-38.81

21. Кузнецов О. Ю., Шаршунов С. Г. Функциональный подход к тестированию процессора с архитектурой SPARC-V9 // Международная конференция "Автоматизация проектирования дискретных систем" CAD-DD'2001 г. Минск, ноябрь 2001г., материалы конференции, с. 14-20.

22. Кузнецов О. Ю., Шаршунов С. Г., Функциональное тестирования управляющих блоков RISC-микропроцессоров // Региональная научная конференция студентов, аспирантов, молодых ученых г. Новосибирск, декабрь 2001 г., тез. докл. ч.2 с. 20-21.

23. Кузьминский М. За явным преимуществом // ComputerWorld №29, 1997г.

24. Лунев A. Sun и Java-технологии // Computerra №33, 1997 г.

25. Льюис Ф. Теоретические основы построения компиляторов // М.: Мир, 1979.

26. Нечепуренко М.И., Попков В.К., Майнагашев С.М. Алгоритмы и программы решения задач на графах и сетях // Новосибирск: Наука, 1990

27. Новиков Ф.А. Дискретная математика для программистов // Спб. Питер пресс, 2000

28. Орлов С. А. Технологии разработки программного обеспечения // Спб. Питер пресс, 2002

29. Петрова Ю. Rise-процессоры третьего поколения // Computer weekly Moscow, № 22, 1995, с. 1, 34 -38, 52

30. Плитман А. Д., Тюрин А. В. Построение программ проверки операций ЭВМ // Электронное моделирование. 1980 г. № 4 с. 76-82

31. Поляков В. Микропроцессоры: между прошлым и будущим // Компьютер-Пресс, №4, 1996.

32. Рейнгольд Э., Нивергельт Ю., Део Н. Комбинаторные алгоритмы. Теория и практика. // М.: Мир, 1980.

33. Робачевский А. Операционная система UNIX // Спб.: BHV, 200082

34. Саадян Г. А. Аракелян А. А., Алексанян Н. А. К вопросу автоматизации синтеза функциональных тестов для блоков микроЭВМ // Автоматика и вычислительная техника 1981 г. с. 29-33

35. Стам Н. Внутри микропроцессоров // PC Magazine, №5,1995, С.125-134.

36. Технические характеристики аппаратных платформ // материалы центра информационных технологий

37. Флэнэген Д. Java in a Nutshell. // O'Reilly & Associates, Inc., 1997, Издательская группа BHV, Киев, 1998

38. Хэвиленд К., Грэй Д., Салама Б. Системное программирование в UNIX. // М.:ДМК Пресс, 2000

39. Чанг А. С. Л., Маккаскил Р. Два новых способа упрощения тестовой проверки микропроцессоров // Электроника. 1976 г. № 2, с. 42-52

40. Чипулис В.П., Шаршунов С.Г. Анализ и построение тестов цифровых программно-управляемых устройств//М.: Энергоатомиздат, 1992.

41. Шаршунов С. Г. Анализ и построение тестов БИС и микропроцессоров на основе функциональных и структурно-функциональных моделей // Автореф. диссертации докт. технических наук Владивосток, 1986 г.

42. Шаршунов С. Г. Построение функциональных тестов микропроцессоров // Владивосток ДВНЦ АН СССР, 1983, с. 60 (Препринт института автоматики и процессов управления)

43. Шаршунов С. Г., Кошевенко A.B. Функциональное тестирование RISC-микропроцессоров // Автоматика и Телемеханика, №10, 1998 с. 20-25

44. Шаршунов С.Г. Построение тестов микропроцессоров. Общая модель. Проверка обработки данных // Автоматика и Телемеханика, №11, 1985, С.145-155.

45. Шашков A. SMP на домашнем компьютере // 3DNews Daily Digital Digest 16.01.2000г.

46. Шнитман В.// Архитектура процессоров UltraSPARC // ОТКРЫТЫЕ СИСТЕМЫ №2 1996г.83

47. Шнитман В.З. Современные высокопроизводительные компьютеры // информационно-аналитические материалы Центра Информационных Технологий,1996 год

48. Шнитман В.З., Кузнецов С.Д. Серверы корпоративных баз данных // информационно-аналитические материалы Центра Информационных Технологий

49. Эллиот Р. Г., Скотт В. М. XML. Справочник // М.: Символ Плюс, 2001

50. Abadir M.S., Reghbati Н.К. Functional Test Generation for LSI Circuits De scribez / by Binary Decision Diagrams // International Test Conference 1985, pp.483-492.

51. Abramovichi M., Breuer M., Friedman A. Digital Systems Testing and Testable Design // Computer Science Press, 1990

52. Agrawal V.D., Built-in self-test for digital integrated circuits, // AT&T Technical J., Mar. 1994, pp. 30.

53. Aharon A., Goodman D., Levinger M., Lichtenstein Y., Malka Y. Test Program Generation for Functional Verification of PowerPC Processors in IBM // 32nd Design Automation Conference, San Francisco, June 1995, pp. 279-285.

54. Bass M., Blanchard T.W., Josephson D.D., Weir D., Halperin D.L. // Design Methodologies for the PA 7100LC Micro-processor.Hewlett-PackardJoumal, 46(2):23-35, April 1995.

55. Batcher K., Papachristou C. Instruction randomization self test for processor cores // Proceedings of the 17 th IEEE VLSI Test Symposium, Dana Point, California, April 1999,pp. 34 40.

56. Battelini J., Isukapalli S. A special purpose finite element architecture // Proceedings of the 28th annual conference on Southeast regional conference April 1990 pp. 267-273.

57. Bellon C., Velazco R. Hardware and Software Tools for Microprocessor Functional Test // IEEE International Test Conference, 1984, pp.804-810.84

58. Brahme D. and Abraham j.A. Functional Testing of Microprocessors // IEEE Trans, on Computers, 1984, C-33(6), pp. 475-485.

59. Casaubieilh F. Functional Verification Methodology of Chameleon Processor // 33rd Design Automation Conference, LasVegas, June 1996, pp. 421426.

60. Chandra A. AVPGEN -ATest Generator for Architecture Verification // IEEE Transactions on Very Large Scale Integration (VLSI) Systems, 3(2): 188200, June 1995.

61. Clarke B. SPARC V9 Instruction Set Specification // TR-CS-00-03, Australian national university, 2000

62. David A. Patterson. Microprocessors in 2020 // Scientific American, September 1995, pp. 88-91

63. Dias E. Y. O. Truth-table Verification of Iterative Logic Array // IEEE Trans. On Comput., 1976. Vol. C-25 № 6, pp. 605-613

64. Fenton B. (International Test Technologies). Using microprocessor and DSP debug interfaces for manufacturing functional test and diagnosis // eTronix Conference February 25 March 1 2001 at Anaheim, CA

65. Friedman A. D., Menon P. R. Fault Detection in Digital Circuits. Englewood Cliffs, NJ.: Prentice-Hall, 1971.

66. Fujiwara H. Logic Testing and Design for Testability // Cambr. Lond.: Mit.Press, 1985.

67. Ganapathy G., Narayan R., Jorden G., Fernandez D. Flardware Emulation for Functional Verification of K5 // 33rd Design Automation Conference, pp. 315318.

68. Holzner S. Inside XSLT // News Riders Publishing, 2001 r.

69. Kantrowitz M., Noack L.M. Functional Verification of a Multi-issue, Pipelined, Superscalar Alpha-Processor the Alpha 21164 CPU Chip // Digital Technical Journal, 7(1): 136-144, August 1995.85

70. Kautz W. H. Testing for faults in Cellular Logic Arrays // Proc. 8th Annu. Symp. Switching, Automata Theory, 1967. pp. 161-174

71. Kuznetsov O. Y., Sharshunov S. G. A Functional Approach to Testing SPARC V9 // Pacific Science Review, 2000, Vol. 2., pp. 51-58.

72. Lewin D., Foumier L., Levinger M., Roytman E., Shurek G. Constraint Satisfaction for Test Program Generation // IEEE 14th Phoenix Conference on Computers and Communications, 1995.

73. Lichtenstein Y., Malka Y., Aharon A., Model-Based Test Generation For Processor Design Verification // Innovative Applications of Artificial Intelligence (IAAI), AAAI Press, 1994.

74. Monaco J., Holloway D., Raina R. Functional Verification Methodology for the PowerPC 604 Microprocessor // 33rd. Design Automation Conference, pp. 319-324.

75. Robach, C. and Saucier, G. Dynamic Testing of Control Units // IEEE Trans, on Computers, 1978, C-27(7), pp. 617-623.

76. Sangiovanni-Vincentelli A. L., McGeer P. C., Saldanha A. Verification of Electronic Systems // 33rd Design Automation Conference, pp. 106-111.

77. Santoro A., Park W, Lukham D. Sparc-V9 architecture specification with rapid // Technical Report CSL-TR-95-667, Program Analysis and Verification Group Report No. 71, 1995

78. Sengupta S., Kundu S. Defect-Based Test: A Key Enabler for Successful Migration to Structural Test // Intel technology journal, 1 st quarter 1999

79. Shen J., Abraham J. A., Native mode functional test generation for processors with applications to self test and design validation // Proceedings of the International Test Conference 1998, Washington, DC, Oct. 1998, pp. 990-999.

80. Shen, T. and Su, S.Y.H. A Functional Testing Method for Microprocessors // IEEE Trans, on Computers, 1988, C-37(10), pp. 1288-1293.

81. Sridhar T., Hayes J. P. A Functional Approach to Testing Bitsliced Microprocessors // IEEE Trans. On Computers. C-30(8), pp. 563-571. 198086

82. Stam N. Microprocessor Architectures // PC Magazine August 4, 2000, zdnet reviews

83. Suk, D.S. and Reddy S.M. A March Test for Functional Faults in Semiconductor Random Access Memories // IEEE Trans, on Computers, 1981, C-29(6), pp. 982-985.

84. Sun Microsystems, от замысла до SPARC // Computerworld, №46/2001

85. Tchipulis V.P., Sharshunov S.G. On Generating Tests for Microprocessors // Measurement, 1986, Vol.4.1, pp. 28-38.

86. Thatte S.M., Abraham J.A. A methodology for functional level testing of microprocessors // 8th annual int. conf. fault-tolerant comput. Syst.: digest of papers Toulouse 1978, pp. 28-38

87. Thatte S.M., Abraham J.A. Test Generation for Microprocessors // IEEE Trans, on Computers, 1980, C-29(6), pp.429-441.

88. Timoc C., Stott F., Wickman K., Hess E., Adaptive selftest for a microprocessor // IEEE International Test Conference, 1983, pp.701-703.

89. Tupuri R., Abraham J. A. A novel functional test generation method for processors using commercial ATPG // Proceedings of the International Test Conference 1997, Washington, DC, Nov. 1997, pp. 743 752.

90. Tupuri R., Krishnamachary A., Abraham J. A. Test generation for gigahertz processors using an automatic functional constraint extractor // Proceedings of the 36 th Design Automation Conference, New Orleans, Louisiana, June 1999, pp. 647 652.

91. Turcat C., Verdillon A. Recursion and Testing of Combinational Circuits// IEEE Trans, on Comput., 1976, C-25(6).87

92. Turumella B. Design Verification of a Super-Scalar RISC Processor 11 In Twenty fifth International Symposium on Fault Tolerant Computing, pages 472477, June 1995.

93. UltraSPARC . The Visual Instruction Set (VIS): On-Chip Support for New-Media Processing // Whitepaper №95-022, SPARC Technology Business, 1995.

94. UltraSPARC User's Manual // SUN Microsystems 1997

95. UltraSPARC(TM). Universal Port Architecture: The New MediaSystem Architecture // White paper №95-023, SPARC Technology Business, 1995.

96. UltraSPARC-1. High-Performance 64-Bit RISC Processor // SPARCTechnology Business, May 1995.

97. Van de Goor A.J. and Verhallen Th.J.W. A Functional Testing of Current Microprocessors (applied to the Intel i860) // In Proc. IEEE Int. Test Conference, 1992, pp. 684-695.

98. William N. Joy. Reduced Instruction Set Computers (RISC): Academic/Industrial Interplay Drives Computer Performance Forward // Computing Research Association

99. Wirth N. Program development by stepwise refinement // Communications of the ACM, Vol. 14, N 4, pp. 221-227, 19711. Сложение

100. Сложение с модификацией сравнительных признаков Логическое «И»

101. Логическое «И» с модификацией сравнительных признаков Логическое «И-НЕТ»

102. Регистровая, Непосредственная

103. Регистровая, Непосредственная

104. Регистровая, Непосредствен пая

105. Регистровая, Непосредственная

106. Регистровая, Непосредственная

107. Регистровая, Непосредственная

108. Регистровая, Непосредственная

109. Регистровая, Непосредственная

110. Регистровая, Непосредственная

111. Регистровая, Непосредственная

112. Регистровая, Непосредственная

113. Регистровая, Непосредственная

114. Регистровая, Непосредственная1. Регистровая1. Регистровая1. Регистровая1. Регистровая

115. Регистровая, Непосредственная

116. Регистровая, Непосредственная

117. Пересылка целочисленных данных при выполнении условия Пересылка целочисленных данных по значению регистра Возведение в степень с модификацией сравнительных признаков Умножение 64-хразрядных целых Нет операций Логическое ИЛИ

118. Логическое ИЛИ» с модификацией сравнительных признаков Логическое ИЛИ-НЕТ1. Логическое ИЛИ-НЕТ» смодификацией сравнительных признаков

119. Чтение регистра сравнительных признаков Чтение регистра состояния вещественных данных Чтение счетчика комнад

120. Регистровая, Непосредственная

121. Регистровая, Непосредственная

122. Регистровая, Непосредственная

123. Регистровая, Непосредственная

124. Регистровая, Непосредственная

125. Регистровая. Непосредственная

126. Регистровая, Непосредственная

127. Регистровая, Непосредственная

128. Регистровая. Непосредственная

129. Регистровая, Непосредственная

130. Регистровая, Непосредственная

131. Регистровая, Непосредственная

132. Регистровая, Непосредственная

133. Регистровая, Непосредственная

134. Регистровая, Непосредственная

135. Регистровая, Непосредственная1. Регистровая1. Регистровая1. Регистровая

136. Регистровая, непосредственная

137. Регистровая, непосредственная

138. Регистровая, непосредственная Непосредственная1. Регистровая Регистровая

139. Регистровая, Непосредственная

140. Регистровая, Непосредственная

141. Регистровая, Непосредственная

142. Регистровая, Неп осредственн ая

143. Регистровая, Непосредственная

144. Регистровая, Непосредственная

145. Регистровая, Непосредственная

146. Регистровая, Непосредственная

147. Регистровая, Непосредственная

148. Регистровая, Непосредственная1. Регистровая Регистровая1. Деление беззнаковых целых

149. Деление беззнаковых целых с модификацией сравнительных признаков Деление 64-хразрядпыхбеззнаковых целых Умножение беззнаковых целых

150. Умножение беззнаковых целых с модификацией сравнительных признаков Запись в регистр флагов

151. Запись в регистр состояниявещественных данных Исключающее ИЛИ-НЕТ1. Исключающее ИЛИ-НЕТ имодификация сравнительных признаков Исключающее ИЛИ

152. Исключающее ИЛИ и модификация сравнительных признаков

153. Регистровая, Непосредственная

154. Регистровая, Непосредственная

155. Регистровая, Непосредственная

156. Регистровая, Непосредственная

157. Регистровая, Непосредственная

158. Регистровая, Непосредственная

159. Регистровая, Непосредственная

160. Регистровая, Непосредственная

161. Регистровая, Непосредственная

162. Регистровая, Непосредственная

163. Регистровая, Непосредственная

164. Загрузка двойного слова Загрузка вещественного числа двойной точности Загрузка вещественного числа

165. Косвенная Косвенная Косвенная

166. Нахождение множеств Z0 и Z11. Z0:

167. Zl: and; andn; or; orn; sub; xnor; xor

168. StringBuffer buf = new StringBuffer();buf.append("<FUNCTION name=\"");buf.append(getName().toLowerCase());buf.append("\">");for (int i=0; i<tstArr.size();i++){

169. Vector. zFuncs = getZFunctions(nldx); TstMatrix resO = getMZOMatrix(nIdx, zFuncs[0]); TstMatrix resl = getMZlMatrix(nIdx, zFuncs[l]);resO ,addMatrix(res 1 ) ;return res0.getMinimalCover();// XML representation of TIOs105public String getTIO(){

170. StringBuffer buf = new StringBufferQ; buf.append("<TIO tst=\"");buf.append(integer.toString(TstFunction.POWERS2TstFunction.BITSCOUNT.-1))buf.append("\">");for (int i=0; i<objSet.size(); i++){

171. TstFunction func = getFunction(nldx); if (null == func){return null;s

172. Vector. vList = new Vector[2]; for (int i=0;i<2; i++){vList1. = new Vector();int nCnt = TstFunction.POWERS2 TstFunction. BITSCOUNT*2.; for (int i=0; i<objSet.size(); i++){ if (i==nldx){continue;

173. TstRow row = new TstRow("e"+Integer.toString(i));row.setlndex(i);for (intj = 0; j<vFuncs.size(); j++){ int nRes3 = 0;

174. TstFunction tstfiuic = (TstFunction)vFuncs.get(j); res. addHeader(tstfunc. getN ame());for (int i=0; i<nCnt; i++){intnResl = func.getResult(i); nRes 1 = nTst & nRes 1;

175. TstRow row = new TstRow("e"+Integer.toString(i)); row.setlndex(i);for (int j = 0; j<vFuncs.size(); j++){ int nRes3 = 0;

176. TstMatrix mres = new TstMatrix(); for (int k=0; k<objSet.size(); k++){

177. TstFunction func = getFunction(k); String sRes = func.getName(); mres.addHeader(sRes);int nCnt = TstFunction.POWERS2TstFunction.BITSCOUNT.; for (int i=0; i<nCnt; i++){for (int j=0; j <nCnt; j ++) {

178. String sOl = TstFunction.operandToString(i); String s02 = TstFunction.operandToString(j); TstRow row = new TstRow(s01+"|"+s02); for (int k=0; k<objSet.size(); k++){

179. TstFunction func = getFunction(k);

180. StringBuffer sOut = new StringBuffer();sOut.append(" 01| 02|");for (int k=0; k<objSet.size(); k++){

181. TstFunction func = getFunction(k); String sRes = func.getName(); sOut.append(sRes); sOut.append("|");sOut.append("\n");108int nCnt = TstFunction.POWERS2TstFunction.BITSCOUNT.; for (int i=0; i<nCnt; i++){for (intj=0;j<nCnt;j++){

182. String sO I = TstFunction.operandToString(i);

183. String s02 = TstFunction.operandToString(j);sOut.append("|");sOut.append(sOl);sOut.append("j");s0ut.append(s02);sOut.append("|");for (int k=0; k<objSet.size(); k++){

184. TstFunction func = getFunction(k); String sRes =

185. TstFunction.operandToString(func.getResvdt((i*nCnt)+j));for (int s=0; s<(func.getName().length()-2); s++){ sOut.append(" ");sOut.append(sRes); sOut.append("|");sOut.append("\n");