Портирование ядра операционной системы Linux

 

Аннотация


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

Характеристики дипломного проекта:

·Объем составляет 70 страниц.

·Количество графических материалов составляет 9 листов

·Количество литературных источников составляет 10 позиций.

Введение


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

Портируемость (переносимость, англ. portability) обычно относится к одной из двух вещей:

1.Портируемость - как возможность единожды откомпилировав код (обычно в некоторый промежуточный код, который затем компилируется во время исполнения, «на лету», англ. Just-In-Time), затем запускать его на множестве платформ без каких-либо изменений.

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

Международные стандарты (в частности, продвигаемые международной организацией по стандартизации ISO) значительно упрощают портирование, благодаря тому что они описывают среду исполнения программ таким образом, что различия между платформами становятся минимальными. Часто портирование программ между платформами, реализующими один и тот же стандарт (такой как POSIX.1) сводятся к перекомпиляции программы на новой платформе.

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

Некоторые языки программирования высокого уровня (Eiffel, Esterel) достигают портируемости путем трансляции исходного кода в промежуточный язык, имеющий компиляторы для многих процессоров и операционных систем.

1. Специальная часть


.1 Постановка задачи


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

На базе ядра Linux может быть создана необходимая конфигурация операционной системы и, поэтому данная операционная система может быть использована в качестве средства для управления процессорами MIPS-архитектуры.

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

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


1.2 Обзор предметной области


Термин "архитектура системы" часто употребляется как в узком, так и в широком смысле этого слова. В узком смысле под архитектурой понимается архитектура набора команд. Архитектура набора команд служит границей между аппаратурой и программным обеспечением и представляет ту часть системы, которая видна программисту или разработчику компиляторов. Следует отметить, что это наиболее частое употребление этого термина. В широком смысле архитектура охватывает понятие организации системы, включающее такие высокоуровневые аспекты разработки компьютера как систему памяти, структуру системной шины, организацию ввода/вывода и т.п.

Двумя основными архитектурами набора команд, используемыми компьютерной промышленностью на современном этапе развития вычислительной техники являются архитектуры CISC и RISC. (англ. Reduced Instruction Set Computing) - вычисления с сокращённым набором команд.

Это концепция проектирования процессоров, которая во главу ставит следующий принцип: более компактные и простые инструкции выполняются быстрее. Простая архитектура позволяет удешевить процессор, поднять тактовую частоту, а также распараллелить исполнение команд между несколькими блоками исполнения (т.н. суперскалярные архитектуры процессоров). Многие ранние RISC-процессоры даже не имеют команд умножения и деления. Идея создания RISC процессоров пришла после того, как в 1970-х годах ученые из IBM обнаружили, что многие из функциональных особенностей традиционных ЦПУ игнорировались программистами. Отчасти это был побочный эффект сложности компиляторов. В то время компиляторы могли использовать лишь часть из набора команд процессора. Следующее открытие заключалось в том, что, поскольку некоторые сложные операции использовались редко, они как правило были медленнее, чем те же действия, выполняемые набором простых команд. Это происходило из-за того, что создатели процессоров тратили гораздо меньше времени на улучшение сложных команд, чем на улучшение простых.

Первые RISC-процессоры выполняли небольшой (50?100) набор команд, тогда как обычные CISC (Complex Instruction Set computer) выполняли 100-200.

Характерные особенности RISC-процессоров:

·Фиксированная длина машинных инструкций (например, 32 бита) и простой формат команды.

·Специализированные команды для операций с памятью - чтения или записи. Операции вида «прочитать-изменить-записать» отсутствуют. Любые операции "изменить" выполняются только над содержимым регистров (т.н. load-and-store архитектура).

·Большое количество регистров общего назначения (32 и более).

·Отсутствие поддержки операций вида "изменить" над укороченными типами данных - байт, 16-битное слово. Так, например, система команд DEC Alpha содержала только операции над 64-битными словами, и требовала разработки и последующего вызова процедур для выполнения операций над байтами, 16- и 32-битными словами.

·Отсутствие микропрограмм внутри самого процессора. То, что в CISC процессоре исполняется микропрограммами, в RISC процессоре исполняется как обыкновенный (хотя и помещенный в специальное хранилище) машинный код, не отличающийся принципиально от кода ядра ОС и приложений. Так, например, обработка отказов страниц в DEC Alpha и интерпретация таблиц страниц содержалась в так называемом PALCode (Privileged Architecture Library), помещенном в ПЗУ. Заменой PALCode можно было превратить процессор Alpha из 64битного в 32битный, а также изменить порядок байт в слове и формат входов таблиц страниц виртуальной памяти.

Основой архитектуры современных рабочих станций и серверов является архитектура компьютера с сокращенным набором команд. Зачатки RISC-архитектуры уходят своими корнями к компьютерам CDC6600, разработчики которых (Торнтон, Крэй и др.) осознали важность упрощения набора команд для построения быстрых вычислительных машин. Эту традицию упрощения архитектуры С. Крэй с успехом применил при создании широко известной серии суперкомпьютеров компании Cray Research. Однако окончательно понятие RISC в современном его понимании сформировалось на базе трех исследовательских проектов компьютеров: процессора 801 компании IBM, процессора RISC университета Беркли и процессора MIPS Стенфордского университета.

Разработка экспериментального проекта компании IBM началась еще в конце 70-х годов, но его результаты никогда не публиковались и компьютер на его основе в промышленных масштабах не изготавливался. В 1980 году Д.Паттерсон со своими коллегами из Беркли начали свой проект и изготовили две машины, которые получили названия RISC-I и RISC-II. Главными идеями этих машин было отделение медленной памяти от высокоскоростных регистров и использование регистровых окон.

В 1981 году Дж. Хеннесси со своими коллегами опубликовал описание стенфордской машины MIPS, основным аспектом разработки которой была эффективная реализация конвейерной обработки посредством тщательного планирования компилятором его загрузки.

Эти три машины имели много общего. Все они придерживались архитектуры, отделяющей команды обработки от команд работы с памятью, и делали упор на эффективную конвейерную обработку. Система команд разрабатывалась таким образом, чтобы выполнение любой команды занимало небольшое количество машинных тактов (предпочтительно один машинный такт). Сама логика выполнения команд с целью повышения производительности ориентировалась на аппаратную, а не на микропрограммную реализацию. Чтобы упростить логику декодирования команд использовались команды фиксированной длины и фиксированного формата.

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

Первое время RISC-архитектуры с трудом принимались рынком из-за отсутствие программного обеспечения для них. Эта проблема была быстро решена переносом UNIX-подобных операционных систем на RISC архитектуры.


1.3 Анализ аналогичных разработок


1.3.1 Особенности архитектуры MIPS компании MIPS Technology

MIPS (англ. Microprocessor without Interlocked Pipeline Stages - «микропроцессор без блокировок в конвейере») - семейство RISC-микропроцессоров, разработаное компанией MIPS Technologies. Архитектура MIPS использовалась в старых компьютерах SGI, а также во встроенных системах и в игровых консолях Nintendo 64, Sony PlayStation, Sony PlayStation 2 и Sony PSP.

Первые процессоры MIPS были 32-битными, позже была разработана 64-битная архитектура.

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

В настоящий момент процессоры архитектуры MIPS широко используются во встраиваемых устройствах с критичной производительностью.

Семейство процессоров с архитектурой MIPS:

·R1000 (не выпускался: лабораторный образец). У него отсутствовало умножение и деление (они выполнялись программно)

·R2000

·R3000

·R4000

·R5000

·RM7000

·RM9000

·R8000

·R10000 (последний созданный MIPS); его дальнейшие модификации с увеличенным кэшем <#"justify">oR12000

oR14000

oR16000

·существуют различные модификации других фирм.

Архитектура MIPS была одной из первых RISC-архитектур, получившей признание со стороны промышленности. Она была анонсирована в 1986 году. Первоначально это была полностью 32-битовая архитектура, которая включала 32 регистра общего назначения, 16 регистров плавающей точки и специальную пару регистров для хранения результатов выполнения операций целочисленного умножения и деления. Размер команд составлял 32 бит, в ней поддерживался всего один метод адресации, и пользовательское адресное пространство также определялось 32 битами. Выполнение арифметических операций регламентировалось стандартом IEEE 754. В компьютерной промышленности широкую популярность приобрели 32-битовые процессоры R2000 и R3000, которые в течение достаточно длительного времени служили основой для построения рабочих станций и серверов компаний Silicon Graphics, Digital, Siemens Nixdorf и др. Процессоры R3000/R3010 работали на тактовой частоте 33 или 40 МГц и обеспечивали производительность на уровне 20 SPECint92 и 23 SPECfp92.

Затем на смену микропроцессорам семейства R3000 пришли новые 64-битовые микропроцессоры R4000 и R4400. (MIPS Technology была первой компанией выпустившей процессоры с 64-битовой архитектурой). Набор команд этих процессоров (спецификация MIPS II) был расширен командами загрузки и записи 64-разрядных чисел с плавающей точкой, командами вычисления квадратного корня с одинарной и двойной точностью, командами условных прерываний, а также атомарными операциями, необходимыми для поддержки мультипроцессорных конфигураций. В процессорах R4000 и R4400 реализованы 64-битовые шины данных и 64-битовые регистры. В этих процессорах применяется метод удвоения внутренней тактовой частоты.

Процессоры R2000 и R3000 имели стандартные пятиступенчатые конвейеры команд. В процессорах R4000 и R4400 применяются более длинные конвейеры (иногда их называют суперконвейерами). Количество ступеней в процессорах R4000 и R4400 увеличилось до восьми, что объясняется прежде всего увеличением тактовой частоты и необходимостью распределения логики для обеспечения заданной пропускной способности конвейера. Процессор R4000 может работать с тактовой частотой 50/100 МГц и обеспечивает уровень производительности в 58 SPECint92 и 61 SPECfp92. Процессор R4400 может работать на частоте 50/100 МГц, или 75/150 МГц, показывая уровень производительности 94 SPECint92 и 105 SPECfp92.

Внутренняя кэш-память процессора R4000 имеет емкость 16 Кбайт. Она разделена на 8-Кб кэш команд и 8-Кб кэш данных. С точки зрения реализации кэш-памяти процессор R4400 имеет более развитые возможности. Он выпускается в трех модификациях: PC (Primary Cashe) - имеет внутренние кэши команд и данных емкостью по 16 Кбайт. Процессор в такой конфигурации предназначен главным образом для дешевых моделей рабочих станций. SC (Secondary Cashe) содержит логику управления кэш-памятью второго уровня. MC (Multiprocessor Cashe) - использует специальные алгоритмы обеспечения когерентности и согласованного состояния памяти для многопроцессорных конфигураций.

В середине 1994 года компания MIPS анонсировала процессор R8000, который прежде всего был ориентирован на научные прикладные задачи с интенсивным использованием операций с плавающей точкой. Этот процессор построен на двух кристаллах (выпускается в виде многокристальной сборки) и представляет собой первую суперскалярную реализацию архитектуры MIPS. Теоретическая пиковая производительность процессора для тактовой частоты 75 МГц составляет 300 MFLOPs (до четырех команд и шести операций с плавающей точкой в каждом такте). Реализация большой кэш-памяти данных емкостью 16 Мбайт, высокой пропускной способности доступа к данным (до 1.2 Гбайт/с) в сочетании с высокой скоростью выполнения операций позволяет R8000 достигать 75% теоретической производительности даже при решении больших задач типа LINPACK с размерами матриц 1000x1000 элементов. Аппаратные средства поддержки когерентного состояния кэш-памяти вместе со средствами распараллеливания компиляторов обеспечивают возможность построения высокопроизводительных симметричных многопроцессорных систем. Например, процессоры R8000 используются в системе Power Challenge компании Silicon Graphics, которая вполне может сравниться по производительности с известными суперкомпьютерами Cray Y-MP, имеет на порядок меньшую стоимость и предъявляет значительно меньшие требования к подсистемам питания и охлаждения. В однопроцессорном исполнении эта система обеспечивает производительность на уровне 310 SPECfp92 и 265 MFLOPs на пакете LINPACK (1000x1000).

В 1994 году MIPS Technology объявила также о создании своего нового суперскалярного процессора R10000, начало массовых поставок которого ожидалось в конце 1995 года. По заявлениям представителей MIPS Technology R10000 обеспечивает пиковую производительность в 800 MIPS при работе с внутренней тактовой частотой 200 МГц за счет обеспечения выдачи для выполнения четырех команд в каждом такте синхронизации. При этом он обеспечивает обмен данными с кэш-памятью второго уровня со скоростью 3.2 Гбайт/с.

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


Рис. 1. Блок-схема микропроцессора R10000

1.3.2 Иерархия памяти

При разработке процессора R10000 большое внимание было уделено эффективной реализации иерархии памяти. В нем обеспечиваются раннее обнаружение промахов кэш-памяти и параллельная перезагрузка строк с выполнением другой полезной работой. Реализованные на кристалле кэши поддерживают одновременную выборку команд, выполнение команд загрузки и записи данных в память, а также операций перезагрузки строк кэш-памяти. Заполнение строк кэш-памяти выполняется по принципу "запрошенное слово первым", что позволяет существенно сократить простои процессора из-за ожидания требуемой информации. Все кэши имеют двухканальную множественно-ассоциативную организацию с алгоритмом замещения LRU.


.3.3 Кэш память данных первого уровня

Кэш-память данных первого уровня процессора R10000 имеет емкость 32 Кбайт и организована в виде двух одинаковых банков емкостью по 16 Кбайт, что обеспечивает двухкратное расслоение при выполнении обращений к этой кэш-памяти. Каждый банк представляет собой двухканальную множественно-ассоциативную кэш-память с размером строки (блока) в 32 байта. Кэш данных индексируется с помощью виртуального адреса и хранит теги физических адресов памяти. Такой метод индексации позволяет выбрать подмножество кэш-памяти в том же такте, в котором формируется виртуальный адрес. Однако для того, чтобы поддерживать когерентность с кэш-памятью второго уровня, в кэше первого уровня хранятся теги физических адресов памяти.

Массивы данных и тегов в каждом банке являются независимыми. Эти четыре массива работают под общим управлением очереди формирования адресов памяти и схем внешнего интерфейса кристалла. В очереди адресов могут одновременно находиться до 16 команд загрузки и записи, которые обрабатываются в четырех отдельных конвейерах. Команды из этой очереди динамически выдаются для выполнения в специальный конвейер, который обеспечивает вычисление исполнительного виртуального адреса и преобразование этого адреса в физический. Три других параллельно работающих конвейера могут одновременно выполнять проверку тегов, осуществлять пересылку данных для команд загрузки и завершать выполнение команд записи в память. Хотя команды выполняются в строгом порядке их расположения в памяти, вычисление адресов и пересылка данных для команд загрузки могут происходить неупорядоченно. Схемы внешнего интерфейса кристалла могут выполнять заполнение или обратное копирование строк кэш-памяти, либо операции просмотра тегов. Такая параллельная работа большинства устройств процессора позволяет R10000 эффективно выполнять реальные многопроцессорные приложения.

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

При обнаружении промаха при обращении к кэш-памяти данных ее работа не блокируется, т.е. она может продолжать обслуживание следующих запросов. Это особенно полезно для уменьшения такого важного показателя качества реализованной архитектуры как среднее число тактов на команду (CPI - clock cycles per instruction). На Рис. 2 представлены результаты моделирования работы R10000 на нескольких программах тестового пакета SPEC. Для каждого теста даны два результата: с блокировкой кэш-памяти данных при обнаружении промаха (вверху) и действительное значение CPI R10000 (внизу). Выделенная более темным цветом правая область соответствует времени, потерянному из-за промахов кэш-памяти. Верхний результат отражает полную задержку в случае, если бы все операции по перезагрузке кэш-памяти выполнялись строго последовательно. Таким образом, стрелка представляет потери времени, которые возникают в блокируемом кэше. Эффект применения неблокируемой кэш-памяти сильно зависит характеристик самих программ. Для небольших тестов, рабочие наборы которых полностью помещаются в кэш-памяти первого уровня, этот эффект не велик. Однако для более реальных программ, подобных тесту tomcatv или тяжелому для кэш-памяти тесту compress, выигрыш оказывается существенным.


Рис. 2. Моделирование работы R10000 на нескольких компонентах пакета SPEC

1.3.4 Кэш память данных второго уровня

Интерфейс кэш-памяти второго уровня процессора R10000 поддерживает 128-битовую магистраль данных, которая может работать с тактовой частотой до 200 МГц, обеспечивая скорость обмена до 3.2 Гбайт/с (для снижения требований к быстродействию микросхем памяти предусмотрена также возможность деления частоты с коэффициентами 1.5, 2, 2.5 и 3). Все стандартные синхронные сигналы управления статической памятью вырабатываются внутри процессора. Не требуется никаких внешних интерфейсных схем. Минимальный объем кэш-памяти второго уровня составляет 512 Кбайт, максимальный размер - 16 Мбайт. Размер строки этой кэш-памяти программируется и может составлять 64 или 128 байт.

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

При этом возможны три случая. Если происходит попадание по первому каналу, то данные доступны немедленно. Если происходит попадание по альтернативному каналу, происходит повторное чтение вторичного кэша. Если отсутствует попадание по обоим каналам, вторичный кэш должен перезаполняться из основной памяти.

Для обеспечения целостности данных в кэш-памяти большой емкости обычной практикой является использование кодов исправляющих одиночные ошибки (ECC-кодов). В R10000 с каждой четырехсловной строкой хранится 9-битовый ECC-код и бит четности. Дополнительный бит четности позволяет сократить задержку, поскольку проверка на четность может быть выполнена очень быстро, чтобы предотвратить использование некорректных данных. При этом, если обнаруживается корректируемая ошибка, то чтение повторяется через специальный двухтактный конвейер коррекции ошибок.


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

Объем внутренней двухканальной множественно-ассоциативной кэш-памяти команд составляет 32 Кбайт. В процессе ее загрузки команды частично декодируются. При этом к каждой команде добавляются 4 дополнительных бит, которые указывают исполнительное устройство, в котором она будет выполняться. Таким образом, в кэш-памяти команды хранятся в 36-битовом формате. Размер строки кэш-памяти команд составляет 64 байта.


.3.6 Обработка команд перехода

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

Конфликты по управлению могут вызывать даже большие потери производительности суперскалярного процессора, чем конфликты по данным. По статистике среди команд управления, меняющих значение счетчика команд, преобладают команды условного перехода. Таким образом, снижение потерь от условных переходов становится критически важным вопросом. Имеется несколько методов сокращения приостановок конвейера, возникающих из-за задержек выполнения условных переходов. В процессоре R10000 используются два наиболее мощных метода динамической оптимизации выполнения условных переходов: аппаратное прогнозирование направления условных переходов и "выполнение по предположению" (speculation).

Устройство переходов процессора R10000 может декодировать и выполнять только по одной команде перехода в каждом такте. Поскольку за каждой командой перехода следует слот задержки, максимально могут быть одновременно выбраны две команды перехода, но только одна более ранняя команда перехода может декодироваться в данный момент времени. Во время декодирования команд к каждой команде добавляется бит признака перехода. Эти биты используются для пометки команд перехода в конвейере выборки команд.

Направление условного перехода прогнозируется с помощью специальной памяти (branch history table) емкостью 512 строк, которая хранит историю выполнения переходов в прошлом. Обращение к этой таблице осуществляется с помощью адреса команды во время ее выборки. Двухбитовый код прогноза в этой памяти обновляется каждый раз, когда принято окончательное решение о направлении перехода. Моделирование показало, что точность двухбитовой схемы прогнозирования для тестового пакета программ SPEC составляет 87%.

Все команды, выбранные вслед за командой условного перехода, считаются выполняемыми по предположению (условно). Это означает, что в момент их выборки заранее не известно, будет ли завершено их выполнение. Процессор допускает предварительную обработку и прогнозирование направления четырех команд условного перехода, которые могут разрешаться в произвольном порядке. При этом для каждой выполняемой по предположению команды условного перехода в специальный стек переходов записывается информация, необходимая для восстановления состояния процессора в случае, если направление перехода было предсказано неверно. Стек переходов имеет глубину в 4 элемента и позволяет в случае необходимости быстро и эффективно (за один такт) восстановить конвейер.

сборка ядро perl операционный

1.3.7 Структура очередей команд

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


.3.8 Очередь целочисленных команд

Очередь целочисленных команд содержит 16 строк и выдает команды в два арифметико-логических устройства. Целочисленные команды поступают в свободные строки этой очереди, причем в каждом такте в нее могут записываться до 4 команд. Целочисленные команды остаются в очереди до тех пор, пока они не будут выданы в одно из АЛУ.

1.3.9 Очередь команд плавающей точки

Очередь команд плавающей точки также содержит 16 строк и выдает команды в исполнительные устройства сложения и умножения с плавающей точкой. Команды плавающей точки поступают в свободные строки очереди, причем в каждом такте в нее могут записываться до 4 команд. Команды остаются в очереди до тех пор, пока они не будут выданы в одно из исполнительных устройств. Очередь команд плавающей точки содержит также логику управления команд типа "умножить-сложить". Эта команда сначала направляется в устройство умножения, а затем прямо в устройство сложения.


.3.10 Адресная очередь

Очередь адресных команд выдает команды в устройство загрузки/записи и содержит 16 строк. Очередь организована в виде циклического буфера FIFO (first-in first-out). Команды могут выдаваться в произвольном порядке, но должны записываться в очередь и изыматься из нее строго последовательно. В каждом такте в очередь могут поступать до 4 команд. Буфер FIFO поддерживает первоначальную последовательность команд, что упрощает обнаружение зависимостей по адресам. Выполнение выданной команды может не закончиться при обнаружении зависимости по адресам, кэш-промаха или конфликта по ресурсам. В этих случаях адресная очередь должна заново повторять выдачу команды до тех пор, пока ее выполнение не завершится.


.3.11 Переименование регистров

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

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

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

Таким образом, аппаратный метод переименования регистров, используемый в процессоре R10000, имеет три основных достоинства. Во-первых, результаты "выполняемых по предположению" команд могут прямо записываться в регистровый файл. Во-вторых, этот метод устраняет все конфликты типа "запись после чтения" и "запись после записи", которые часто возникают при неупорядоченном выполнении команд. И, наконец, метод переименования регистров упрощает контроль зависимостей по данным. Поскольку процессор обеспечивает выдачу для выполнения до четырех команд в каждом такте, в процессе переименования регистров их логические номера сравниваются для определения зависимостей между четырьмя командами, декодированными в одном и том же такте.

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

Микропроцессор R10000 содержит по 64 физических регистра (целочисленных и плавающей точки). В любой момент времени значение физического регистра содержится в одном из указанных выше списков. На Рис. 3 показана упрощенная блок-схема отображения целочисленных команд.

Команды выбираются из кэша команд и помещаются в таблицу отображения. В любой момент времени каждый из 64 номеров физических регистров находится в одном из трех указанных на рисунке блоков.

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

Рис. 3. Упрощенная блок-схема отображения целочисленных команд


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

Когда в процессе переименования из списка свободных регистров выбирается очередной номер физического регистра, он передается в таблицу отображения, которая обновляется. При этом старый номер регистра, соответствующий определенному в команде логическому регистру результата, помещается из таблицы отображения в список активных команд. Этот номер остается в списке активных команд до тех пор, пока соответствующая команда не "выпустится" (graduate), т.е. завершится в заданном программой порядке. Команда может "выпуститься" только после того, как успешно завершится выполнение всех предыдущих команд.

Микропроцессор R10000 содержит 64 физических и 32 логических целочисленных регистра. Список активных команд может содержать максимально 32 элемента. Список свободных регистров также может максимально содержать 32 значения. Если список активных команд полон, то могут быть 32 "зафиксированных" и 32 временных значения. Отсюда потребность в 64 регистрах.


.3.12 Исполнительные устройства

В процессоре R10000 имеются пять полностью независимых исполнительных устройств: два целочисленных АЛУ, два основных устройства плавающей точки с двумя вторичными устройствами плавающей точки, которые работают с длинными операциями деления и вычисления квадратного корня, а также устройство загрузки/записи.


.3.13 Целочисленный АЛУ

В микропроцессоре R10000 имеются два целочисленных АЛУ: АЛУ1 и АЛУ2. Время выполнения всех целочисленных операций АЛУ (за исключением операций умножения и деления) и частота повторений составляют один такт.

Оба АЛУ выполняют стандартные операции сложения, вычитания и логические операции. Эти операции завершаются за один такт. АЛУ1 обрабатывает все команды перехода, а также операции сдвига, а АЛУ2 - все операции умножения и деления с использованием итерационных алгоритмов. Целочисленные операции умножения и деления помещают свои результаты в регистры EntryHi и EntryLo.

Во время выполнения операций умножения в АЛУ2 могут выполняться другие однотактные команды, но сам умножитель оказывается занятым. Однако когда умножитель заканчивает свою работу, АЛУ2 оказывается занятым на два такта, чтобы обеспечить запись результата в два регистра. Во время выполнения операций деления, которые имеют очень большую задержку, АЛУ2 занято на все время выполнения операции.

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


.3.14 Устройства плавающей точки

В микропроцессоре R10000 реализованы два основных устройства плавающей точки. Устройство сложения обрабатывает операции сложения, а устройство умножения - операции умножения. Кроме того, существуют два вторичных устройства плавающей точки, которые обрабатывают длинные операции деления и вычисления квадратного корня.

Время выполнения команд сложения, вычитания и преобразования типов равно двум тактам, а скорость их поступления в устройство составляет 1 команда/такт. Эти команды обрабатываются в устройстве сложения. Команды преобразования целочисленных значений в значения с плавающей точкой с однократной точностью имеют задержку в 4 такта, поскольку они должны пройти через устройство сложения дважды.

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

Операция с плавающей точкой "умножить-сложить", которая в вычислительных программах возникает достаточно часто, выполняется с использованием двух отдельных операций: операции умножения и операции сложения. Команда "умножить-сложить" (MADD) имеет задержку 4 такта и скорость повторения 1 команда/ такт. Эта составная команда увеличивает производительность за счет устранения выборки и декодирования дополнительной команды.

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


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

Устройство загрузки/записи содержит очередь адресов, устройство вычисления адреса, устройство преобразования виртуальных адресов в физические (TLB), стек адресов, буфер записи и кэш-память данных первого уровня. Устройство загрузки/записи выполняет команды загрузки, записи, предварительной выборки, а также команды работы с кэш-памятью.

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

В случае промаха, или в случае занятости разделяемого порта регистрового файла, обращение к кэшу данных и к тегу должно быть повторено после получения данных либо из кэш-памяти второго уровня, либо из основной памяти. содержит 64 строки и выполняет преобразование виртуального адреса в физический. Виртуальный адрес для преобразования поступает либо из устройства вычисления адреса, либо из счетчика команд.


.3.16 Интерфейс кэш-памяти второго уровня

Внешняя кэш-память второго уровня управляется с помощью внутреннего контроллера, который имеет специальный порт для подсоединения кэш-памяти. Специальная магистраль данных шириной в 128 бит осуществляет пересылки данных на внутренней тактовой частоте процессора 200 МГц, обеспечивая максимальную скорость передачи данных кэш-памяти второго уровня 3.2 Гбайт/с. В процессоре имеется также 64-битовая шина данных системного интерфейса.

Кэш-память второго уровня имеет двухканальную множественно-ассоциативную организацию. Максимальный размер этой кэш-памяти - 16 Мбайт. Минимальный размер - 512 Кбайт. Пересылки осуществляются 128-битовыми порциями (4 32-битовых слова). Для пересылки больших блоков данных используются последовательные циклы шины:

·Четырехсловные обращения (128 бит) используются для команд кэш-памяти (CASHE);

·Восьмисловные обращения (256 бит) используются для перезагрузки первичного кэша данных;

·Шестнадцатисловные обращения (512 бит) используются для перезагрузки первичного кэша команд;

·Тридцатидвухсловные обращения (1024 бит) используются для перезагрузки кэш-памяти второго уровня.


.3.17 Системный интерфейс

Системный интерфейс процессора R10000 работает в качестве шлюза между самим процессором, связанным с ним кэшем второго уровня и остальной системой. Системный интерфейс работает с тактовой частотой внешней синхронизации (SysClk). Возможно программирование работы системного интерфейса на тактовой частоте 200, 133, 100, 80, 67, 57 и 50 МГц. Все выходы и входы системного интерфейса синхронизируются нарастающим фронтом сигнала SysClk, позволяя ему работать на максимально возможной тактовой частоте.

В большинстве микропроцессорных систем в каждый момент времени может происходить только одна системная транзакция.

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


.4 Обоснование выбора операционной системы

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

Строго говоря, Linux - это только ядро ОС, находящее в свободном публичном доступе. Системные библиотеки и утилиты разрабатываются сообществом GNU (#"justify">Говоря о Linux, невозможно не упомянуть о социальном феномене разработки Linux. GPL, лицензия, под которой распространяется ядро Linux, предусматривает свободное внесение изменений и их распространение. Дополнительные возможности такого программного обеспечения привлекают новых пользователей, некоторые из них оказываются достаточно активными, чтобы выявлять ошибки, и компетентными, чтобы их исправлять. Этот простой и понятный способ сотрудничества дает фантастические результаты, особенно в разработке драйверов и исправлении ошибок.

Первоначально портирование Linux на платформы, отличные от i386, не предполагалось, однако через три года после начала разработки ОС появился порт Linux на аппаратную архитектуру DEC Alpha (эту работу спонсировала компания Digital Equipment). На сегодняшний день Linux поддерживает целый ряд 32- и 64-разрядных архитектур и процессоров: Sun SPARC и UltraSPARC, Motorola 68000, PowerPC, PowerPC64, ARM, Hitachi SuperH, IBM S/390, MIPS, HP PA-RISC, Intel IA-64, DEC VAX, AMD x86-64 и CRIS. Такое разнообразие архитектур не ведет к распылению усилий разработчиков, а, наоборот, заставляет строить ядро системы с высоким уровнем абстракций и модульности, повышать качество его кода. Множество поддерживаемых архитектур подтверждает и масштабируемость Linux - от мобильных телефонов и КПК до мейнфреймов./ MIPS является портом широко распространенного UNIX клона Linux для архитектуры MIPS. Linux / MIPS может работает с большим количеством технически весьма различных систем, начиная от небольших встроенных систем до больших настольных машин и серверов.

Благодаря общему происхождению и одинаковому API, современные ядра Unix имеют много общих черт. За некоторым исключением это монолитные статические бинарные файлы. Они существуют в виде больших исполняемых образов, которые выполняются один раз и используют одну копию адресного пространства. Для работы Unix обычно требуется система с контроллером управления страничной адресацией памяти (MMU, Memory Management Unit); эта система позволяет обеспечить защиту памяти в системе и предоставить каждому процессу виртуальное адресное пространство. Ядро Linux не базируется на какой-то версии Unix, оно является монолитным, однако поддерживает некоторые свойства микроядерной архитектуры. Отличия Linux от других разновидностей Unix:

Поддержка динамически загружаемых модулей ядра. Хотя ядро Linux является монолитным оно дополнительно поддерживает динамическую загрузку и выгрузку кода по мере необходимости. Эта возможность впервые появилась в версии 0.99 благодаря Питеру Мак-Дональду. Часто в виде модулей поставляются драйверы устройств.

Ядро Linux поддерживает симметричную многопроцессорную обработку (SMP). Большинство коммерческих вариантов Unix поддерживают SMP, но большинство традиционных реализаций этой поддержки не имеет.

Ядро Linux является преемптивным. Ядро в состоянии вытеснить выполняющееся задание, даже если оно работает в режиме ядра. Среди коммерческих реализаций Unix преемптивное ядро имеют только Solaris, IRIX, и сам Unix.

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

В ядре Linux отсутствуют некоторые функции Unix, которые считаются плохо реализованными (например, STREAMS).

Ядро Linux создается с использованием компилятора GNU C. Причем разработчики ядра используют расширение C ISO C99, поддерживающее функции с подстановкой тела (объявляются с помощью ключевых слов static inline), ассемблерные вставки (используется директива компилятора asm()), аннотацию ветвлений (макросы likely() и unlikely() - более вероятное и менее вероятное события; используются для оптимизации кода) и другие возможности.

Ядро Linux полностью открыто. Заметим, что сборки ОС GNU/Linux (дистрибутивы) от разных производителей зачастую основываются на ядре, отличном от оригинального (канонического) ядра, выпускаемого разработчиками.


.5 Разработка


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

·Ядро не имеет доступа к стандартным библиотекам языка C. Причина этого - скорость выполнения и объем кода. Даже самая необходимая часть библиотеки - очень большая и неэффективная для ядра. Часть функций, однако, реализованы в ядре. Например, обычные функции работы со строками описаны в файле lib/string.c.

·Отсутствие защиты памяти. Если обычная программа предпринимает попытку некорректного обращения к памяти, ядро может аварийно завершить процесс. Если ядро предпримет попытку некорректного обращения к памяти, результаты могут быть менее контролируемыми. К тому же ядро не использует замещение страниц: каждый байт, используемый в ядре - это один байт физической памяти.

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

·Фиксированный стек. Стеком называют область адресного пространства, в которой выделяются локальные переменные. Локальные переменные - это все переменные, объявленные внутри левой открывающей фигурной скобки тела функции (или любой другой левой фигурной скобки) и не имеющие ключевого слова static. Стек в режиме ядра ни большой, ни изменяющийся. Поэтому в коде ядра не рекомендуется использоватьрекурсию. Обычно стек равен двум страницам памяти, что соответствует 8 Кбайт для 32-разрядных систем и 16 Кбайт для 64 -разрядных.

·Переносимость. Платформо-независимый код, написанный на языке C, должен компилироваться без ошибок на максимально возможном количестве систем.


.5.1 Perl-эмулятор

Отличительными особенностями MIPS 64 реализации фирмы KEDAH являются:


·Отсутствие операций с плавающей точкой (программная эмуляция FPU математического сопроцессора).

·TLB - 32 входное

·Раздельный кэш данных и кэш команд - по 32 КБайт

·Шина адреса - 32-разрядная

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

В силу особенностей реализации процессора фирмой KEDAH, в качестве средства кросс-отладки операционной системы использовался собственный эмулятор kem-2.0.2, написанный на языке Perl.

Использование эмулятора позволяет провести отладку выполнения программ до физической реализации микропроцессорной системы, что является менее трудоемким и сокращает финансовые затраты на предварительную аппаратную реализаци. В эмулятор заложены возможности:

·просмотра памяти

·установки точек остановок в ходе отладки

·пошагового выполнения команд

·просмотра содержимого регистров процессора в интерактивном режиме.


1.5.2 Вывод в порт

Следующим шагом отладки был запуск программы «Hello, world!». Для получения сообщений в ходе отладки ядра в драйвер консоли был включен модуль printf для вывода сообщений в последовательный порт. Результатом послужил успешный запуск на эмуляторе kem-2.0.2 программы «Hello, World!»


.5.3 Сборка ядра

Процесс сборки ядра состоял из следующих этапов:

1)Приобретение исходников ядра.

Исходный код ядра версии 2.6.28 с #"justify">После получения исходных кодов ядра в архиве linux-2.6.28.tar.bz2, его нужно распаковать (обычно распаковывают в каталог /usr/src/) с помощью утилиты tar от имени суперпользователя.

2)Подготовка каталогов с исходниками ядра.

Дерево исходных кодов ядра содержит подкаталоги, описание которых приведено в Табл. 1. В корне дерева также содержится ряд файлов: COPYING - лицензия, CREDITS - список основных разработчиков, MAINTAINERS - список разработчиков, занимающихся поддержкой подсистем и драйверов ядра, Makefile - основной сборочный файл ядра.

Таблица 1

Каталог ОписаниеArch Специфичный для аппаратной платформы кодblock Подсистема блочного ввода/выводаcrypto Криптографический APIDocumentation Документация исходного кодаdrivers Драйверы устройствfs Подсистема VFS и отдельные файловые системыinclude Заголовочные файлы ядраinit Загрузка и инициализация ядраipc Код межпроцессорного взаимодействияkernel Основные подсистемы (планировщик и др.)lib Вспомогательные подпрограммыmm Подсистема управления памятью и поддержка виртуальной памятиnet Сетевая подсистемаscripts Сценарии компиляции кодаsecurity Модуль безопасности Linuxsound Звуковая подсистемаusr Начальный код пространства пользователя

3)Конфигурирование ядра (config.mips64r2):

4)Сборка ядра осуществляется командой make. Ускорить процесс можно, запустив команду make -j2. Параметр -j2 означает запуск двух потоков выполнения (обычно используют два потока на процессор):

# make -j 2 ARCH=mips CROSS_COMPILE=mipsel-linux- menuconfig

Сборка ядра:

# make -j 2 ARCH=mips CROSS_COMPILE=mipsel-linux- vmlinux.bin

5)Компиляция ядра и установка модулей:

Также загружен патч с кросс-компилятором MIPS (#"justify">Получение патча. Все изменения исходного кода ядра распространяются в виде заплат (patch). Заплаты - это результат вывода утилиты diff в формате, который подается на вход утилиты patch.

# diff -uprN -X linux-2.6.28.orig/Documentation/dontdiff linux-2.6.28.orig linux-2.6.28.dev > linux-2.6.28-kem-mips64r2.le.001.patch

6)Перемещение ядра

Перенос ядра в рабочую директорию:

# mv ~/vmlinux.bin ./vmlinux.kem.mips64.r2.le.001.bin

Доступ к серверу:

# ssh [email protected] (xxxxxx)

# ssh server (xxxxxx)

# cd project ng

7)Копирование ядра на удаленный сервер с эмулятором kem:

# scp arch/mips/boot/vmlinux.bin [email protected]:

8)Запуск эмулятора

# perl ../kem-2.0.2.pl -i vmlinux.kem.mips64.r2.le.001.bin -l 0xffffffff80100000

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

В частности были изменены участки кода, в которых присутствовали обращения к нереализованным в эмуляторе регистрам памяти.

Также бы отключен режим предварительного выбора команд (Prefetch).


.6 Анализ результатов


)Поставлена задача портирования операционной системы Linux на процессор MIPS64 Release 2 реализации фирмы KEDAH.

2)Рассмотрены различные походы к решению данной задачи.

)Изучены особенности загрузки операционной системы Linux, эмулятор kem-2.0.2 фирмы KEDAH.

)Проведена настройка конфигурации операционной системы Linux для работы с эмулятором kem-2.0.2 фирмы KEDAH.

)Проведены отладка конфигурации операционной системы.

)Проведены тестовые запуски операционной системы и анализ возникших ошибок.

)Проведена успешная загрузка операционной системы Linux на эмуляторе kem-2.0.2 фирмы KEDAH.

В ходе дипломного проектирования были изучены спецификация архитектуры процессора MIPS64, технологии сборки, компиляции и портирования ядра операционной системы ОС Linux.

В процессе конфигурирования и компиляции дистрибутива ОС Linux на Perl-эмуляторе kem-2.0.2 процессора, аналогичного MIPS64 Release 2, был получен устойчивый порт ОС Linux на данную платформу.

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

2. Экологическая часть


.1 Исследование воздействия опасных и вредных факторов при эксплуатации ЭВМ и их воздействие на организм человека


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

Перечислим основные нарушения, допускаемые со стороны администрации:

·практически нигде не проводится аттестация рабочих мест по условиям труда, а это значит, что существующие нарушения требований безопасно не выявляются и не устраняются;

·большинство операторов и пользователей ПК не знают, какие опасные и вредные производственные факторы действуют на них на компьютеризированном рабочем месте;

·пользователи, работающие на ПЭВМ не знают фактических величин параметров опасных и вредных производственных факторов, действующих на рабочем месте;

·операторы (и другие пользователи) не знакомы с основами трудового законодательства об охране труда, со своими правами, с обязанностями администрации по обеспечению нормальных условий труда;

·на предприятиях отсутствуют нормативные документы по охране труда и безопасности ПК;

·практически повсеместно не проводится обучение безопасным приемам и методам труда на ПК, а также инструктирования операторов, программистов, техников и других пользователей, тогда как работы на ПК нередко относятся к категории работ с опасными и вредными условиями труда (на основании документа Р 2.2.755-99);

·находящиеся в эксплуатации и приобретаемые вновь мониторы практически нигде не имеют сертификатов безопасности и гигиенических сертификатов (согласно требованиям СанПиН 2.2.2.542-96), причем торгующие организации зачастую вручают малограмотным покупателям фальсифицированные гигиенические сертификаты и сертификаты безопасности;

·операторы и пользователи не проходят периодических медосмотров, как работающие во вредных условиях труда на основании приказа Минздрава РФ и департамента Госкомсанэпиднадзора РФ от 05.10.1995 № 280/88, а именно: п.п. 5.2.2 (электромагнитные поля радиочастот); п.п. 6.1.5 (работы, связанные с локальными мышечными напряжениями преимущественно мышц кисти и предплечья); п.п. 6.2 (зрительно-напряженные работы и наблюдение за экраном);

·далеко не всем операторам и пользователям выдаются положенные им средства индивидуальной защиты на основании п. 3.8 СанПиН 2.2.2.542-96;

·большинство работодателей не затрачивают достаточных средств на оборудование рабочих мест в соответствии с требованиями норм (в частности, по обеспечению освещенности, необходимого воздухообмена, аэроионного состава и микробиологической чистоты воздуха; по обеспечению эргономичной мебелью и т. п.);

·во многих офисных и производственных помещениях и мест место несоответствие санитарным нормам по площади и объему на одного работающего (нередко эти параметры оказывались меньше нормы в 2-2,5 раза).

На работающего пользователя на ПЭВМ постоянно или периодически действуют следующие опасные и вредные факторы:

·Загрязнение воздуха вредными веществами, пылью, микроорганизмами и положительными аэроионами.

·Несоответствие нормам параметров микроклимата.

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

·Повышенный уровень шума на рабочем месте.

·Повышенный уровень статистического электричества при неправильно запроектированной рабочей зоне.

·Опасный уровень напряжения в электрической цепи, замыкание которой может пройти через тело человека.

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

·Повышенный уровень электромагнитных излучений.

·Повышенный уровень ионизирующих излучений (мягкое рентгеновское, гамма-излучение).

·Отсутствие или недостаток естественного света.

·Недостаточная освещенность рабочей зоны.

·Повышенная яркость света.

·Пониженная контрастность.

·Прямая и обратная блёсткость.

·Повышенная пульсация светового потока (мерцание изображения).

·Длительное пребывание в одном и том же положении и повторение одних и тех же движений приводит к синдрому длительных статических нагрузок (СДСН).

·Нерациональная организация рабочего места.

·Несоответствие эргономических характеристик оборудования нормируемым величинам.

·Умственное перенапряжение, которое обусловлено характером решаемых задач приводит к синдрому длительных психологических нагрузок (СДПН).

·Большой объем перерабатываемой информации приводит к значительным нагрузкам на органы зрения.

·Монотонность труда.

·Нервно-психические нагрузки.

·Нервно-эмоциональные стрессовые нагрузки.

·Опасность возникновения пожара.

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

Причинами нарушения функционального состояния зрительного анализатора являются:

·постоянная переадаптация органов зрения в условиях наличия в поле зрения объекта различения и фона различной яркости;

·недостаточная четкость и контрастность изображения на экране;

·строчность воспринимаемой информации;

·постоянные яркостные мелькания;

·наличие ярких пятен на клавиатуре и экране за счет отражения светового потока;

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

·невысокое качество исходной информации на бумаге;

·неравномерная и недостаточная освещенность на рабочем месте.

Наряду с перечисленными общепринятыми особенностями работы пользователя на рабочем месте ПЭВМ существуют особенности восприятия информации с экрана монитора, среди которых выделяются следующие:

·экран монитора является источником света, на который в процессе работы непосредственно обращены органы зрения пользователя, что вводит оператора в другое психофизиологическое состояние;

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

·длительная и повышенная сосредоточенность органон зрения приводит к большим нагрузкам, а, следовательно, к утомлению органов зрения, способствует возникновению близорукости, головной боли и раздраженности, нервного напряжения и стресса;

·длительная привязанность внимания пользователя к экрану монитора создает дискомфортное восприятие информации, в отличие от чтения обычной печатной информации;

·экран монитора является источником падающего светового потока на органы зрения пользователя, в отличие от обычной печатной информации, которая считывается за счет отраженного светового потока;

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

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


.2 Способы защиты пользователей от опасных и вредных факторов


2.2.1 Электрическая безопасность

А) Анализ электрической опасности

Анализ электрической опасности целесообразно проводить на примере наиболее опасного двухфазного (двухполюсного) прикосновения. При этом сопротивление тела человека Rч для напряжения 5 В и выше переменного тока 50 Гц можно рассчитать по формуле:


кОм


где Uпр - напряжение прикосновения.

В нашей стране в качестве расчётных значений приняты Rч = 1000 Ом при Uпр= 50 В и выше, при этом продолжительность воздействия тока на человека считается менее 1 с, и Rч =6000 Ом при Uпр= 36 В и менее при длительности воздействия тока более 1с.

Следует учитывать что при Uпр около 200 В всегда происходит пробой рогового слоя кожи и Rч становится равным примерно 300 Ом.

В моём рабочем помещении используются питающие напряжения 220 В, 50 Гц. Для данных условий стандарт предусматривает следующие нормы для электроустановок.

Наибольшие допустимые значения:

·Нормальный режим работы. Uпр= 2 В, Iч = 0,3 мА.

·Аварийный режим работы производственных электроустановок.

Таблица аварийного режима работы производственных электроустановок.

Норм. Вели-чинаПродолжительность воздействия tс.0,01-0,080,10,20,40,50,81,0Более 1,0Uпр, В550340160120105756020Iч, мА.65040019014012575506

Таблица аварийного режима работы производственных электроустановок.

Нормируемая величинаПродолжительность воздействия tс.0,01-0,080,10,20,40,50,81,0Более 1,0Uпр, В2202001005550302512Iч, мА.220200100555030252

Б) Необходимые меры

Рабочее помещение сухое (50 %), нежаркое (25 0С), с токонепроводящим полом, без токопроводящей пыли, отсутствует возможность одновременного прикосновения человека к имеющим соединение с землёй металлоконструкциям зданий, технологическим аппаратам, механизмам и т. п. c одной стороны и к металлическим корпусам электрооборудования, которые при пробое изоляции могут оказаться под напряжением, - с другой.

Следовательно, помещение относится к помещениям без повышенной опасности. Согласно ГОСТ 12.1.030-81 в таких помещениях защитному заземлению и занулению подлежат металлические нетоковедущие части оборудования при напряжении 380 В переменного и ³ 440 В постоянного тока. Во взрывоопасных помещениях все установки обязательно заземляются независимо от величины питающих напряжений.

Поскольку помещение без повышенной опасности и U = 220В, то металлические нетоковедущие части оборудования в заземлении и занулении не нуждаются.

2.2.2 Пожарная безопасность

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

Наиболее широкое применение получили стеклянно- плавкие предохранители (СП) и малоинерционные предохранители (МП). Значение тока плавкой вставки определяют из соотношения:вст. = (1,21 . 1,37) Iном.

где Iном - номинальное значение тока в приборе.

Инерционно-плавкие предохранители (ИП), защищают электрические цепи с большими пусковыми токами и рассчитываются по номинальному току потребителя без учёта пусковых токов:вст. = (1,25 . 1,5) Iном.

Тугоплавкие предохранители (ТП) защищают электрические цепи только от коротких замыканий и не защищают от перегрузок:вст. = (1,4 . 1,5) Iном.

В моём рабочем помещении применяются сетевые фильтры Pilot GL c Iвст. = 10 А. Стены здания (силикатный кирпич) относятся к несгораемым материалам. Количество эвакуационных выходов должно быть не менее двух. Допускается использование одного эвакуационного выхода, если расстояние от наиболее удалённого рабочего места до этого выхода не превышает 25 м.

По правилам ГОСТ необходимо наличие углекислотного огнетушителя. Это требование выполнено.


.2.3 Предельно допустимые значения излучений

В настоящее время весь диапазон радиочастот разбит на 3 поддиапазона: высоких частот /ВЧ/ от 60 кГц до 30 МГц, ультравысоких частот /УВЧ/ от 30 МГц до 300 МГц и от 300 МГц до 300 ГГц. Стандартом (ГОСТ 12.1.006-84) ПДУ нормируются в диапазонах ВЧ и УВЧ предельно допустимые значения напряжённости электрического поля Е /В/м/ и магнитного поля Н /А/м/, а в диапазоне СВЧ - предельно допустимая плотность потока энергии /ППЭ, Вт/м2/. Установлены следующие предельно допустимые значения Е и Н:

Е /В/м/

·50 в диапазоне 60 кГц . 300 МГц,

·20 в диапазоне 3 МГц . 30 МГц,

·10 в диапазоне 30 МГц . 50 МГц,

·5 в диапазоне 50 МГц . 300 МГц,

Н /А/м/

·5 в диапазоне 60 кГц . 1,5 МГц,

·0,3 в диапазоне 30 кГц . 50МГц.

Предельно допустимую плотность потока энергии ЭМП в диапазоне частот 300 МГц . 300 ГГц на рабочих местах и в местах возможного нахождения персонала, связанного с воздействием ЭМП, устанавливают исходя из допустимого значения энергетической нагрузки на организм и времени пребывания в зоне облучения, однако во всех случаях она не должна превышать 10 Вт/м2 / 1000 мкВт/см2/, а при наличии рентгеновского излучения или высокой температуры воздуха в рабочих помещениях /выше 280С/ - 1 Вт/ м2 / 100 мкВт/см2 /.


.3 Эргономические требования к рабочему месту


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

·оптимальное размещение оборудования, входящего в состав рабочего места

·достаточное рабочее пространство, позволяющее осуществлять все необходимые движения и перемещения.

Эргономическими аспектами проектирования рабочих мест, в частности, являются:

·высота рабочей поверхности

·размеры пространства для ног

·требования к расположению документов на рабочем месте (наличие и размеры подставки для документов, возможность различного размещения документов, расстояние от глаз пользователя до экрана, документа, клавиатуры и т.д.)

·характеристики рабочего кресла

·требования к поверхности рабочего стола

·регулируемость элементов рабочего места

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

Для комфортной работы стол должен удовлетворять следующим условиям:

·высота стола должна быть выбрана с учетом возможности сидеть свободно, в удобной позе, при необходимости опираясь на подлокотники;

·нижняя часть стола должна быть сконструирована так, чтобы программист мог удобно сидеть, не был вынужден поджимать ноги;

·поверхность стола должна обладать свойствами, исключающими появление бликов в поле зрения программиста;

·конструкция стола должна предусматривать наличие выдвижных ящиков (не менее 3 для хранения документации, листингов, канцелярских принадлежностей).

·высота рабочей поверхности рекомендуется в пределах 680-760мм.

·высота поверхности, на которую устанавливается клавиатура, должна быть около 650мм.

Большое значение придается характеристикам рабочего кресла. Так, рекомендуемая высота сиденья над уровнем пола находится в пределах 420-550мм. Поверхность сиденья мягкая, передний край закругленный, а угол наклона спинки - регулируемый. Положение экрана определяется: - расстоянием считывания (0,6…0,7м); - углом считывания, направлением взгляда на 20 ниже горизонтали к центру экрана, причем экран перпендикулярен этому направлению. Должна также предусматриваться возможность регулирования экрана: - по высоте +3 см; - по наклону от -10 до +20 относительно вертикали; - в левом и правом направлениях. Большое значение также придается правильной рабочей позе пользователя. При неудобной рабочей позе могут появиться боли в мышцах, суставах и сухожилиях. Требования к рабочей позе пользователя видеотерминала следующие: - голова не должна быть наклонена более чем на 20, - плечи должны быть расслаблены, - локти - под углом 80…100, - предплечья и кисти рук - в горизонтальном положении. Причина неправильной позы пользователей обусловлена следующими факторами: нет хорошей подставки для документов, клавиатура находится слишком высоко, а документы - низко, некуда положить руки и кисти, недостаточно пространство для ног. В целях преодоления указанных недостатков даются общие рекомендации:

·лучше передвижная клавиатура;

·должны быть предусмотрены специальные приспособления для регулирования высоты стола, клавиатуры и экрана, а также подставка для рук.

Существенное значение для производительной и качественной работы на компьютере имеют размеры знаков, плотность их размещения, контраст и соотношение яркостей символов и фона экрана. Если расстояние от глаз оператора до экрана дисплея составляет 60…80 см, то высота знака должна быть не менее 3мм, оптимальное соотношение ширины и высоты знака составляет 3:4, а расстояние между знаками 15…20% их высоты. Соотношение яркости фона экрана и символов - от 1:2 до 1:15. Во время пользования компьютером медики советуют устанавливать монитор на расстоянии 50-60 см от глаз. Специалисты также считают, что верхняя часть видеодисплея должна быть на уровне глаз или чуть ниже. Когда человек смотрит прямо перед собой, его глаза открываются шире, чем когда он смотрит вниз. За счет этого площадь обзора значительно увеличивается, вызывая обезвоживание глаз. К тому же если экран установлен высоко, а глаза широко открыты, нарушается функция моргания. Это значит, что глаза не закрываются полностью, не омываются слезной жидкостью, не получают достаточного увлажнения, что приводит к их быстрой утомляемости. Создание благоприятных условий труда и правильное эстетическое оформление рабочих мест на производстве имеет большое значение, как для облегчения труда, так и для повышения его привлекательности, положительно влияющей на производительность труда.

Приложение 1. Конфигурационный файл ядра


#

# Automatically generated make config: don't edit

# Linux kernel version: 2.6.28

# Thu Feb 12 18:15:09 2009

#_MIPS=y

#

# Machine selection

#

# CONFIG_MACH_ALCHEMY is not set

# CONFIG_BASLER_EXCITE is not set

# CONFIG_BCM47XX is not set

# CONFIG_MIPS_COBALT is not set

# CONFIG_MACH_DECSTATION is not set

# CONFIG_MACH_JAZZ is not set

# CONFIG_LASAT is not set

# CONFIG_LEMOTE_FULONG is not set

# CONFIG_MIPS_MALTA is not set_MIPS_KEM=y (платформа - эмулятор)

# CONFIG_MIPS_SIM is not set

# CONFIG_MACH_EMMA is not set

# CONFIG_MACH_VR41XX is not set

# CONFIG_NXP_STB220 is not set

# CONFIG_NXP_STB225 is not set

# CONFIG_PNX8550_JBS is not set

# CONFIG_PNX8550_STB810 is not set

# CONFIG_PMC_MSP is not set

# CONFIG_PMC_YOSEMITE is not set

# CONFIG_SGI_IP22 is not set

# CONFIG_SGI_IP27 is not set

# CONFIG_SGI_IP28 is not set

# CONFIG_SGI_IP32 is not set

# CONFIG_SIBYTE_CRHINE is not set

# CONFIG_SIBYTE_CARMEL is not set

# CONFIG_SIBYTE_CRHONE is not set

# CONFIG_SIBYTE_RHONE is not set

# CONFIG_SIBYTE_SWARM is not set

# CONFIG_SIBYTE_LITTLESUR is not set

# CONFIG_SIBYTE_SENTOSA is not set

# CONFIG_SIBYTE_BIGSUR is not set

# CONFIG_SNI_RM is not set

# CONFIG_MACH_TX39XX is not set

# CONFIG_MACH_TX49XX is not set

# CONFIG_MIKROTIK_RB532 is not set

# CONFIG_WR_PPMC is not set_RWSEM_GENERIC_SPINLOCK=y

# CONFIG_ARCH_HAS_ILOG2_U32 is not set

# CONFIG_ARCH_HAS_ILOG2_U64 is not set_ARCH_SUPPORTS_OPROFILE=y_GENERIC_FIND_NEXT_BIT=y_GENERIC_HWEIGHT=y_GENERIC_CALIBRATE_DELAY=y_GENERIC_CLOCKEVENTS=y_GENERIC_TIME=y_GENERIC_CMOS_UPDATE=y_SCHED_NO_NO_OMIT_FRAME_POINTER=y

# CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ is not set_BOOT_RAW=y_CEVT_R4K=y_CSRC_R4K=y_DMA_NONCOHERENT=y_DMA_NEED_PCI_MAP_STATE=y_EARLY_PRINTK=y_SYS_HAS_EARLY_PRINTK=y (вывод сообщений на ранних стадиях ядра)

# CONFIG_HOTPLUG_CPU is not set

# CONFIG_NO_IOPORT is not set

# CONFIG_CPU_BIG_ENDIAN is not set_CPU_LITTLE_ENDIAN=y_SYS_SUPPORTS_LITTLE_ENDIAN=y (порядок байт)_IRQ_CPU=y_MIPS_L1_CACHE_SHIFT=5 (конфигурация первого уровня кэша)

#

# CPU selection

#

# CONFIG_CPU_LOONGSON2 is not set

# CONFIG_CPU_MIPS32_R1 is not set

# CONFIG_CPU_MIPS32_R2 is not set

# CONFIG_CPU_MIPS64_R1 is not set_CPU_MIPS64_R2=y (выбор системы команд)

# CONFIG_CPU_R3000 is not set

# CONFIG_CPU_TX39XX is not set

# CONFIG_CPU_VR41XX is not set

# CONFIG_CPU_R4300 is not set

# CONFIG_CPU_R4X00 is not set

# CONFIG_CPU_TX49XX is not set

# CONFIG_CPU_R5000 is not set

# CONFIG_CPU_R5432 is not set

# CONFIG_CPU_R5500 is not set

# CONFIG_CPU_R6000 is not set

# CONFIG_CPU_NEVADA is not set

# CONFIG_CPU_R8000 is not set

# CONFIG_CPU_R10000 is not set

# CONFIG_CPU_RM7000 is not set

# CONFIG_CPU_RM9000 is not set

# CONFIG_CPU_SB1 is not set_SYS_HAS_CPU_MIPS32_R1=y (совместимоcть с предыдущими)_SYS_HAS_CPU_MIPS32_R2=y_SYS_HAS_CPU_MIPS64_R1=y_SYS_HAS_CPU_MIPS64_R2=y_CPU_MIPS64=y_CPU_MIPSR2=y_SYS_SUPPORTS_32BIT_KERNEL=y_SYS_SUPPORTS_64BIT_KERNEL=y_CPU_SUPPORTS_32BIT_KERNEL=y_CPU_SUPPORTS_64BIT_KERNEL=y_HARDWARE_WATCHPOINTS=y

#

# Kernel type

#

# CONFIG_32BIT is not set_64BIT=y_PAGE_SIZE_4KB=y (размер виртуальной страницы)

# CONFIG_PAGE_SIZE_8KB is not set

# CONFIG_PAGE_SIZE_16KB is not set

# CONFIG_PAGE_SIZE_64KB is not set_MIPS_MT_DISABLED=y (отключение многозадачности)

# CONFIG_MIPS_MT_SMP is not set

# CONFIG_MIPS_MT_SMTC is not set_CPU_HAS_LLSC=y_CPU_HAS_SYNC=y_GENERIC_HARDIRQS=y_GENERIC_IRQ_PROBE=y_CPU_SUPPORTS_HIGHMEM=y_ARCH_FLATMEM_ENABLE=y_ARCH_POPULATES_NODE_MAP=y_SELECT_MEMORY_MODEL=y_FLATMEM_MANUAL=y

# CONFIG_DISCONTIGMEM_MANUAL is not set

# CONFIG_SPARSEMEM_MANUAL is not set_FLATMEM=y_FLAT_NODE_MEM_MAP=y (выбор модели памяти)_PAGEFLAGS_EXTENDED=y_SPLIT_PTLOCK_CPUS=4_RESOURCES_64BIT=y_PHYS_ADDR_T_64BIT=y (физический адрес 64 бита)_ZONE_DMA_FLAG=0_VIRT_TO_BUS=y_UNEVICTABLE_LRU=y

# CONFIG_NO_HZ is not set

# CONFIG_HIGH_RES_TIMERS is not set_GENERIC_CLOCKEVENTS_BUILD=y

# CONFIG_HZ_48 is not set

# CONFIG_HZ_100 is not set

# CONFIG_HZ_128 is not set

# CONFIG_HZ_250 is not set

# CONFIG_HZ_256 is not set_HZ_1000=y (частота работы шины)

# CONFIG_HZ_1024 is not set_SYS_SUPPORTS_ARBIT_HZ=y_HZ=1000

# CONFIG_PREEMPT_NONE is not set

# CONFIG_PREEMPT_VOLUNTARY is not set_PREEMPT=y

# CONFIG_PREEMPT_RCU is not set

# CONFIG_KEXEC is not set

# CONFIG_SECCOMP is not set_LOCKDEP_SUPPORT=y_STACKTRACE_SUPPORT=y_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"

#

# General setup

#_EXPERIMENTAL=y_BROKEN_ON_SMP=y_LOCK_KERNEL=y_INIT_ENV_ARG_LIMIT=32_LOCALVERSION=""

# CONFIG_LOCALVERSION_AUTO is not set_SWAP=y_SYSVIPC=y_SYSVIPC_SYSCTL=y

# CONFIG_BSD_PROCESS_ACCT is not set

# CONFIG_IKCONFIG is not set_LOG_BUF_SHIFT=17

# CONFIG_CGROUPS is not set_GROUP_SCHED=y_FAIR_GROUP_SCHED=y_RT_GROUP_SCHED=y_USER_SCHED=y

# CONFIG_CGROUP_SCHED is not set

# CONFIG_SYSFS_DEPRECATED_V2 is not set_RELAY=y

# CONFIG_NAMESPACES is not set_BLK_DEV_INITRD=y_INITRAMFS_SOURCE="usr/rootfs.list"_INITRAMFS_ROOT_UID=0_INITRAMFS_ROOT_GID=0_CC_OPTIMIZE_FOR_SIZE=y_SYSCTL=y_EMBEDDED=y_SYSCTL_SYSCALL=y_KALLSYMS=y_KALLSYMS_ALL=y_KALLSYMS_EXTRA_PASS=y

# CONFIG_HOTPLUG is not set_PRINTK=y _BUG=y_ELF_CORE=y

# CONFIG_PCSPKR_PLATFORM is not set

# CONFIG_COMPAT_BRK is not set_BASE_FULL=y_FUTEX=y_ANON_INODES=y_EPOLL=y_SIGNALFD=y_TIMERFD=y_EVENTFD=y_SHMEM=y_AIO=y_VM_EVENT_COUNTERS=y

# CONFIG_SLUB_DEBUG is not set

# CONFIG_SLAB is not set_SLUB=y

# CONFIG_SLOB is not set

# CONFIG_PROFILING is not set_TRACEPOINTS=y_MARKERS=y_HAVE_OPROFILE=y

# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set_RT_MUTEXES=y

# CONFIG_TINY_SHMEM is not set_BASE_SMALL=0

# CONFIG_MODULES is not set_BLOCK=y

# CONFIG_BLK_DEV_IO_TRACE is not set

# CONFIG_BLK_DEV_BSG is not set

# CONFIG_BLK_DEV_INTEGRITY is not set

#

# IO Schedulers

#_IOSCHED_NOOP=y

# CONFIG_IOSCHED_AS is not set

# CONFIG_IOSCHED_DEADLINE is not set_IOSCHED_CFQ=y

# CONFIG_DEFAULT_AS is not set

# CONFIG_DEFAULT_DEADLINE is not set_DEFAULT_CFQ=y

# CONFIG_DEFAULT_NOOP is not set_DEFAULT_IOSCHED="cfq"_CLASSIC_RCU=y

# CONFIG_PROBE_INITRD_HEADER is not set

# CONFIG_FREEZER is not set

#

# Bus options (PCI, PCMCIA, EISA, ISA, TC)

#

# CONFIG_ARCH_SUPPORTS_MSI is not set_MMU=y (подключение Memory Management Unit)

#

# Executable file formats

#_BINFMT_ELF=y

# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set

# CONFIG_HAVE_AOUT is not set_BINFMT_MISC=y

# CONFIG_MIPS32_COMPAT is not set

#

# Power management options

#_ARCH_SUSPEND_POSSIBLE=y

# CONFIG_PM is not set

# CONFIG_NET is not set

#

# Device Drivers

#

#

# Generic Driver Options

#_STANDALONE=y_PREVENT_FIRMWARE_BUILD=y

# CONFIG_DEBUG_DRIVER is not set_DEBUG_DEVRES=y

# CONFIG_SYS_HYPERVISOR is not set

# CONFIG_MTD is not set

# CONFIG_PARPORT is not set_BLK_DEV=y

# CONFIG_BLK_DEV_COW_COMMON is not set_BLK_DEV_LOOP=y

# CONFIG_BLK_DEV_CRYPTOLOOP is not set_BLK_DEV_RAM=y_BLK_DEV_RAM_COUNT=16_BLK_DEV_RAM_SIZE=16384

# CONFIG_BLK_DEV_XIP is not set

# CONFIG_CDROM_PKTCDVD is not set

# CONFIG_BLK_DEV_HD is not set

# CONFIG_MISC_DEVICES is not set_HAVE_IDE=y

# CONFIG_IDE is not set

#

# SCSI device support

#

# CONFIG_RAID_ATTRS is not set

# CONFIG_SCSI is not set

# CONFIG_SCSI_DMA is not set

# CONFIG_SCSI_NETLINK is not set

# CONFIG_ATA is not set

# CONFIG_MD is not set

# CONFIG_PHONE is not set

#

# Input device support

#_INPUT=y

# CONFIG_INPUT_FF_MEMLESS is not set

# CONFIG_INPUT_POLLDEV is not set

#

# Userland interfaces

#

# CONFIG_INPUT_MOUSEDEV is not set

# CONFIG_INPUT_JOYDEV is not set

# CONFIG_INPUT_EVDEV is not set

# CONFIG_INPUT_EVBUG is not set

#

# Input Device Drivers

#_INPUT_KEYBOARD=y_KEYBOARD_ATKBD=y

# CONFIG_KEYBOARD_SUNKBD is not set

# CONFIG_KEYBOARD_LKKBD is not set

# CONFIG_KEYBOARD_XTKBD is not set

# CONFIG_KEYBOARD_NEWTON is not set

# CONFIG_KEYBOARD_STOWAWAY is not set

# CONFIG_INPUT_MOUSE is not set

# CONFIG_INPUT_JOYSTICK is not set

# CONFIG_INPUT_TABLET is not set

# CONFIG_INPUT_TOUCHSCREEN is not set

# CONFIG_INPUT_MISC is not set

#

# Hardware I/O ports

#

CONFIG_SERIO=y (включение поддержка последовательных портов)

# CONFIG_SERIO_I8042 is not set_SERIO_SERPORT=y_SERIO_LIBPS2=y_SERIO_RAW=y

# CONFIG_GAMEPORT is not set

#

# Character devices

#_VT=y (конфигурация драйвера консоли)_CONSOLE_TRANSLATIONS=y_VT_CONSOLE=y_HW_CONSOLE=y_VT_HW_CONSOLE_BINDING=y

# CONFIG_DEVKMEM is not set_SERIAL_NONSTANDARD=y (использование нестандартного драйвера консоли)

# CONFIG_N_HDLC is not set

# CONFIG_RISCOM8 is not set

# CONFIG_SPECIALIX is not set

# CONFIG_RIO is not set

# CONFIG_STALDRV is not set

#

# Serial drivers

#

# CONFIG_SERIAL_8250 is not set

#

# Non-8250 serial port support

#_SERIAL_KEDAH_UART=y (добавлен драйвер последовательного порта)_SERIAL_CORE=y_SERIAL_CORE_CONSOLE=y_UNIX98_PTYS=y

# CONFIG_LEGACY_PTYS is not set

# CONFIG_IPMI_HANDLER is not set_HW_RANDOM=y

# CONFIG_R3964 is not set

# CONFIG_RAW_DRIVER is not set

# CONFIG_TCG_TPM is not set

# CONFIG_I2C is not set

# CONFIG_SPI is not set

# CONFIG_W1 is not set

# CONFIG_POWER_SUPPLY is not set

# CONFIG_HWMON is not set

# CONFIG_THERMAL is not set

# CONFIG_THERMAL_HWMON is not set

# CONFIG_WATCHDOG is not set_SSB_POSSIBLE=y

#

# Sonics Silicon Backplane

#

# CONFIG_SSB is not set

#

# Multifunction device drivers

#

# CONFIG_MFD_CORE is not set

# CONFIG_MFD_SM501 is not set

# CONFIG_HTC_PASIC3 is not set

# CONFIG_MFD_TMIO is not set

# CONFIG_REGULATOR is not set

#

# Multimedia devices

#

#

# Multimedia core support

#

# CONFIG_VIDEO_DEV is not set

# CONFIG_VIDEO_MEDIA is not set

#

# Multimedia drivers

#

# CONFIG_DAB is not set

#

# Graphics support

#

# CONFIG_VGASTATE is not set

# CONFIG_VIDEO_OUTPUT_CONTROL is not set

# CONFIG_FB is not set

# CONFIG_BACKLIGHT_LCD_SUPPORT is not set

#

# Display device support

#

# CONFIG_DISPLAY_SUPPORT is not set

#

# Console display driver support

#

# CONFIG_VGA_CONSOLE is not set_DUMMY_CONSOLE=y

# CONFIG_SOUND is not set

# CONFIG_HID_SUPPORT is not set

# CONFIG_USB_SUPPORT is not set

# CONFIG_MMC is not set

# CONFIG_MEMSTICK is not set

# CONFIG_NEW_LEDS is not set

# CONFIG_ACCESSIBILITY is not set_RTC_LIB=y

# CONFIG_RTC_CLASS is not set_DMADEVICES=y

#

# DMA Devices

#

# CONFIG_UIO is not set

# CONFIG_STAGING is not set

#

# File systems

#_EXT2_FS=y_EXT2_FS_XATTR=y_EXT2_FS_POSIX_ACL=y_EXT2_FS_SECURITY=y_EXT2_FS_XIP=y

# CONFIG_EXT3_FS is not set

# CONFIG_EXT4_FS is not set_FS_XIP=y_FS_MBCACHE=y

# CONFIG_REISERFS_FS is not set

# CONFIG_JFS_FS is not set_FS_POSIX_ACL=y

# CONFIG_FILE_LOCKING is not set

# CONFIG_XFS_FS is not set

# CONFIG_GFS2_FS is not set

# CONFIG_DNOTIFY is not set

# CONFIG_INOTIFY is not set

# CONFIG_QUOTA is not set

# CONFIG_AUTOFS_FS is not set_AUTOFS4_FS=y

# CONFIG_FUSE_FS is not set_GENERIC_ACL=y

#

# CD-ROM/DVD Filesystems

#

# CONFIG_ISO9660_FS is not set

# CONFIG_UDF_FS is not set

#

# DOS/FAT/NT Filesystems

#

# CONFIG_MSDOS_FS is not set

# CONFIG_VFAT_FS is not set

# CONFIG_NTFS_FS is not set

#

# Pseudo filesystems

#_PROC_FS=y

# CONFIG_PROC_KCORE is not set_PROC_SYSCTL=y_PROC_PAGE_MONITOR=y_SYSFS=y_TMPFS=y_TMPFS_POSIX_ACL=y

# CONFIG_HUGETLB_PAGE is not set_CONFIGFS_FS=y

#

# Miscellaneous filesystems

#

# CONFIG_ADFS_FS is not set

# CONFIG_AFFS_FS is not set

# CONFIG_HFS_FS is not set

# CONFIG_HFSPLUS_FS is not set

# CONFIG_BEFS_FS is not set

# CONFIG_BFS_FS is not set

# CONFIG_EFS_FS is not set_CRAMFS=y

# CONFIG_VXFS_FS is not set

# CONFIG_MINIX_FS is not set

# CONFIG_OMFS_FS is not set

# CONFIG_HPFS_FS is not set

# CONFIG_QNX4FS_FS is not set_ROMFS_FS=y

# CONFIG_SYSV_FS is not set

# CONFIG_UFS_FS is not set

#

# Partition Types

#

# CONFIG_PARTITION_ADVANCED is not set_MSDOS_PARTITION=y

# CONFIG_NLS is not set

#

# Kernel hacking

#_TRACE_IRQFLAGS_SUPPORT=y

# CONFIG_PRINTK_TIME is not set

# CONFIG_ENABLE_WARN_DEPRECATED is not set_ENABLE_MUST_CHECK=y_FRAME_WARN=1024_MAGIC_SYSRQ=y_UNUSED_SYMBOLS=y_DEBUG_FS=y_HEADERS_CHECK=y_DEBUG_KERNEL=y_DEBUG_SHIRQ=y_DETECT_SOFTLOCKUP=y

# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0_SCHED_DEBUG=y_SCHEDSTATS=y_TIMER_STATS=y

# CONFIG_DEBUG_OBJECTS is not set_DEBUG_PREEMPT=y

# CONFIG_DEBUG_RT_MUTEXES is not set

# CONFIG_RT_MUTEX_TESTER is not set

# CONFIG_DEBUG_SPINLOCK is not set

# CONFIG_DEBUG_MUTEXES is not set

# CONFIG_DEBUG_LOCK_ALLOC is not set

# CONFIG_PROVE_LOCKING is not set

# CONFIG_LOCK_STAT is not set_TRACE_IRQFLAGS=y_DEBUG_SPINLOCK_SLEEP=y

# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set_STACKTRACE=y

# CONFIG_DEBUG_KOBJECT is not set_DEBUG_INFO=y

# CONFIG_DEBUG_VM is not set

# CONFIG_DEBUG_WRITECOUNT is not set_DEBUG_MEMORY_INIT=y_DEBUG_LIST=y

# CONFIG_DEBUG_SG is not set_BOOT_PRINTK_DELAY=y

# CONFIG_RCU_TORTURE_TEST is not set

# CONFIG_RCU_CPU_STALL_DETECTOR is not set

# CONFIG_BACKTRACE_SELF_TEST is not set

# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set

# CONFIG_FAULT_INJECTION is not set

# CONFIG_SYSCTL_SYSCALL_CHECK is not set_NOP_TRACER=y_TRACER_MAX_TRACE=y_RING_BUFFER=y_TRACING=y

#

# Tracers

#_IRQSOFF_TRACER=y

# CONFIG_PREEMPT_TRACER is not set_SCHED_TRACER=y_CONTEXT_SWITCH_TRACER=y

# CONFIG_BOOT_TRACER is not set

# CONFIG_FTRACE_STARTUP_TEST is not set

# CONFIG_BUILD_DOCSRC is not set

# CONFIG_DYNAMIC_PRINTK_DEBUG is not set

# CONFIG_SAMPLES is not set_HAVE_ARCH_KGDB=y

# CONFIG_KGDB is not set_CMDLINE=""

# CONFIG_DEBUG_STACK_USAGE is not set

# CONFIG_RUNTIME_DEBUG is not set

#

# Security options

#

# CONFIG_KEYS is not set

# CONFIG_SECURITY is not set

# CONFIG_SECURITYFS is not set_SECURITY_FILE_CAPABILITIES=y

# CONFIG_CRYPTO is not set

#

# Library routines

#_BITREVERSE=y_CRC_CCITT=y_CRC16=y_CRC_T10DIF=y_CRC_ITU_T=y_CRC32=y

# CONFIG_CRC7 is not set_LIBCRC32C=y_ZLIB_INFLATE=y_PLIST=y_HAS_IOMEM=y_HAS_IOPORT=y_HAS_DMA=y

Приложение 2. Пример запуска ОС Linux


[alexey@server ng]$ ./run64.sh vmlinux.bin

--------------------------------------------- executing --------------version 2.6.28.1 (alexey@server) (gcc version 3.4.4 mipssde-6.05.00-20061023) #1 PREEMPT Fri Jun 19 11:51:37 MSD 2009started...- disableddefault memory size 0x02000000[early0] enabledrevision is: 00018100 (MIPS 5Kc)for the multiply/shift bug... no.for the daddiu bug... no.started...physical RAM map:: 0000000000001000 @ 0000000000000000 (reserved): 00000000000ff000 @ 0000000000001000 (usable): 0000000000294000 @ 0000000000100000 (reserved): 0000000001c6c000 @ 0000000000394000 (usable)goto disabled...56 bytes for tracking 1 unused pagesnot found or empty - disabling initrdPFN ranges:0x00000000 -> 0x00002000zone start PFN for each node_node_map[1] active PFN ranges

: 0x00000000 -> 0x00002000node 0 totalpages: 8192_area_init_node: node 0, pgdat ffffffff802e8360, node_mem_map 9800000001000000zone: 112 pages used for memmapzone: 0 pages reservedzone: 8080 pages, LIFO batch:0zone: 0 pages used for memmap1 zonelists in Zone order, mobility grouping on. Total pages: 8080command line: console=ttyS0 debuginstruction cache 0kB, VIPT, direct mapped, linesize 0 bytes.data cache 0kB, direct mapped, VIPT, no aliases, linesize 0 byteshash table entries: 128 (order: 7, 1024 bytes)frequency 12.00 MHz: colour dummy device 80x25

--> Register console: ttyShandover: boot [early0] -> real [ttyS0]cache hash table entries: 4096 (order: 3, 32768 bytes)cache hash table entries: 2048 (order: 2, 16384 bytes): 28596k/30124k available (1531k kernel code, 1528k reserved, 432k data, 192k init, 0k highmem): Genslabs=6, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1delay loop... 8.19 BogoMIPS (lpj=4096)cache hash table entries: 256for the daddi bug... no.has been set to 55scheduler noop registeredscheduler anticipatory registeredscheduler deadline registeredscheduler cfq registered (default): KEDAH MIPS driver $Revision: 0.1 $: Execure tiny_config_port()at MMIO 0xffffffffb0800000 (irq = 0) is a unknown: module loaded: module loaded: Cannot open root device "<NULL>" or unknown-block(0,0)append a correct "root=" boot option; here are the available partitions:panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)ftrace buffer:

(ftrace buffer empty)


Приложение 3. Список ключей эмулятора

MIPS эмулятор/генератор тестов/отладчик, версия 2.0.2

Аргумент командной строки - количество команд, которые нужно сгенерировать или выполнить, по умолчанию 100 или 4G

Ключи:

s <файл> - файл с множеством команд, соответствующий объединению массивов @i_set и @i_set_append (обычно instruction_set.dat)

r <число> - иницилизация случайного датчика - допустимо десятичное или шестнадцатиричное (с предшествующим 0x)

i <файл> - команды для эмуляции берутся из файла, вместо того, чтобы генерировать их случайно

l <адрес> - адрес загрузки файла, если он в двоичном формате (форматы .txt и .hex содержат адреса в себе). По умолчанию 0xFFFF_FF_BFC0_0000

t - формировать листинг при выполнении кода

b - исходные значения при генерации теста выбирать в основном экстремальные

e - тестировать команды обращения к памяти

a - длинный тест операций с памятью, с чередованием серий чтения/записи

m - прекращать генерацию теста после выборки последней команды загрузки из @load_pool

p - тестировать команды организации семафора (LL / SC)

v - тестировать арифметическое переполнение в командах DADD, DSUB, DADDI, ADD, SUB и ADDI

z - тестировать нуллификацию инструкций после арифметического переполнения

j <addr> - стартовый адрес программы при загрузке из файла. По умолчанию - метка start: или начальный адрес программы, если ее н

ет

- эквивалентно -j 0

x - эквивалентно -j 0xFFFF_FFFF_BFC0_0000 (адрес запуска по reset)

n - не вычислять хеша при генерации теста

d <число> - глубина вызова процедур, начиная с которой прекращается действие ключа -t; по умолчанию 222

- эквивалентно -d 2

g <диапазон адресов>[/<диапазон проходов>][+...] - выборочная трассировка. Диапазон - одно или пара (через ..) 10- или 16-чных чи

сел.

q <адрес> - выход в диалог при достижении этого адреса

>>>h<адрес> [<число>] - адрес следующей точки останова и входа в диалог и количество выполняемых тактов<адрес> [<число>] - вывод содержимого памяти (заданного числа 32-разрядных слов) по виртуальному адресу<номер> - вывод регистра общего назначенияR <номер> [<селект>] - вывод регистра нулевого сопроцессора- вывод значения программного счетчика (адреса последней выполненной команды)- вывод дампа текущего состояния TLB

<число> - количество тактов до следующего входа в диалог- включить/выключить режим трассировки- продолжить выполнение без указания следующей точки останова- показать версиюили quit kem - выход из эмулятора

Любое другое выражение транслируется и выполняется как оператор perl.


Аннотация Данный дипломный проект содержит в себе описание процесса портирования ядра операционной системы Linux, приводится аналитический обзор существ

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ