Системное программное обеспечение Лекция № 1 «Введение. Архитектура ПК на основе INTEL процессоров» Список литературы 1. Assembler. Учебник для вузов. 2–е изд. / В. И. Юров — СПб.: Питер, 2003. — 637 с. 2. Язык ассемблера для процессоров Intel, 4–е издание.: Пер. с англ./ Ирвин, Кип — М.: Издательский дом "Вильяме", 2005. — 912 с. 3. Освоение Turbo Assembler: Пер. с англ./Сван, Том. — 2–еизд—К.; М.; СПб.: Диалектика, 1996.— 544 с. 4. Операционные системы: разработка и реализация (+CD). Классика CS./Таненбаум Э., Вудхалл А. — СПб.: Питер, 2006. — 576 с. 5. Ассемблер для процессоров Intel Pentium./ Магда Ю.С. — СПб.: Питер, 2006. — 410 с. 6. Абашеев А. А., Жуков И. Ю., Иванов М. А., Метлицкий Ю.В., Тетерин И. И. Ассемблер в задачах защиты информации — М.: КУДИЦ–ОБРАЗ, 2004. – 544 с. 7. Крупник А.Б. Изучаем Ассемблер — СПб.: Питер, 2005 — 249 с. 8. Зубков С.В. Assembler. Язык неограниченных возможностей — Издательство «ДМК Пресс», 1999. 9. Рудаков П. И., Финогенов К. Г. Язык ассемблера: уроки программирования. — М.: ДИАЛОГ–МИФИ, 2001 — 640 с. 10. Искусство программирования на Ассемблере. Лекции и упражнения: Голубь Н.Г. – 2–е изд., испр. и доп. – СПб.: ООО «ДиаСофтЮП», 2002 – 656с. Введение Структуру вычислительной системы в рамках данного курса можно представить в виде пирамиды: Прикладные программы Системы программирования Управление логическими устройствами Управление физическими устройствами Аппаратные средства Операционная система — программа, обеспечивающая функционирование и взаимодействие пользователя с вычислительной системой, а также управляющая ее ресурсами (логическими и физическими). К операционной системе относится второй и третий уровень пирамиды. Введение Системное программное обеспечение (СПО) – комплекс программ, реализующий функциональность вычислительной системы и имеющий целью повышение ее производительности и эффективность взаимодействия с пользователем. Компоненты СПО называют системными программами. Язык системного программирования должен удовлетворять следующим требованиям: • возможность создания программ, эффективно использующих ресурсы вычислительной системы (например, память, время процессора, дисковое пространство и т.д.); • оптимальное использование аппаратных особенностей компьютера (например доступ ко всей имеющейся оперативной памяти, работу в защищенном режиме, использование и управление кэш – памятью и т.д.); • некоторые программы, например драйверы для управления периферийным оборудованием, имеют специальную структуру. Язык должен обеспечить возможность создания программ произвольной структуры; • удобство отладки системных программ и минимизация ошибок. Введение В настоящее время нет языка, полностью удовлетворяющего этим требованиям. Всем требованиям, кроме последнего, удовлетворяет машинный язык и близкий к нему язык Ассемблера. Последнему требованию удовлетворяют языки высокого уровня, но они не удовлетворяют первым трем требованиям. Поэтому при создании системных программ используют и язык Ассемблер и язык высокого уровня (обычно С и С++). Ассемблер особенно эффективен для решения проблем, связанных с аппаратурой (или даже, более того, зависящих от аппаратуры как, к примеру, повышение быстродействия программы и минимизация используемой памяти). Введение Язык ассемблера — это символическое представление машинного языка, системы команд процессора. Отсюда понятно, что, несмотря на общее название, язык ассемблера для каждого типа компьютера свой. Это касается и внешнего вида программ, написанных на ассемблере, и идей, отражением которых этот язык является. Целью курса является: 1. изучение языка Ассемблера для микропроцессоров фирмы Intel (семейства 80х86) как средства разработки системного программного обеспечения; 2. применение языка Ассемблера для создания системных программ. Введение Микропроцессоры корпорации Intel и персональные компьютеры на их основе прошли не очень длинный во времени, но значительный по существу путь развития, в котором можно выделить следующие основные тенденции: 1. кардинальное изменение возможностей и даже самих принципов архитектуры процессоров от поколения к поколению; 2. неуклонное соблюдение принципа обеспечения совместимости новых моделей со старыми, чтобы не отпугивать потенциального потребителя перспективой полной замены разработанного им программного обеспечения. освоенного или Введение Сегодня в семействе 80x86 принято выделять семь поколений процессоров. Первое поколение (процессоры 8086 и 8088, математический сопроцессор 8087) задало архитектурную основу – базовую систему команд, систему основных 16– разрядных регистров, сегментную систему адресации в пределах 1 Мб с большим разнообразием режимов адресации, систему прерываний. В процессорах применялась «малая» конвейеризация: пока одни узлы выполняли текущую команду, блок предварительной выборки выбирал из памяти следующую. Введение Втрое поколение (80286 и сопроцессор 80287) добавило в семейство так называемый «защищённый режим», позволяющий для каждой задачи использовать виртуальную память размером до 1Гб на основе адресуемой физической памяти в пределах 16 Мб. Защищённый режим является основой для построения многозадачных операционных систем, в которых система привилегий жестко регламентирует взаимоотношения задач с памятью, операционной системой и друг с другом. Производительность процессоров 80286 возросла не только в связи с ростом тактовой частоты, но и за счет значительного усовершенствования конвейера. Введение Третье поколение (80386/80387 с «суффиксами» DX и SX, определяющими разрядность внешней шины) ознаменовалось переходом к 32–разрядной архитектуре. Кроме расширения диапазона представляемых величин также увеличилась ёмкость адресуемой памяти. На этих процессорах начала широко использоваться система Microsoft Windows. Четвертое поколение (80486 также DX и SX) не внесло существенных изменений в архитектуру, зато был принят ряд мер для повышения производительности. В этих процессорах значительно усложнен исполнительный конвейер. В данном поколении отказались от внешнего сопроцессора – он стал размещаться на одном кристалле с центральным (либо его нет совсем). Введение Пятое поколение (процессор Pentium) дало суперскалярную архитектуру. Для быстрого снабжения конвейеров командами и данными из памяти шина данных этих процессоров сделана 64– разрядной, из–за чего их первое время иногда ошибочно называли 64– разрядными процессорами. «На закате» этого поколения появилось расширение ММХ (Multimedia Extension) для ускорения выполнения мультимедиа программ. Но применять его можно не только к задачам, прямо связанным с технологией мультимедиа. В ММХ появился и новый тип арифметики – с насыщением: если результат операции не помещается в разрядной сетке, то переполнения (или «антипереполнения») не происходит, а устанавливается максимально (или минимально) возможное значение числа. Введение Шестое поколение процессоров началось с Pentium Pro и продолжилось в процессорах Pentium III, Celeron и Xeon. Ключевым здесь является динамическое исполнение, под которым понимается исполнение команд не в том порядке, как это предполагается программным кодом, а в том, как «удобно» процессору. Как пятое поколение по ходу развития было дополнено расширением ММХ, так шестое поколение получило расширение, увеличивающие возможности ММХ, SSE (Streaming SIMD Extensions) – потоковое SIMD–расширение процессора. SIMD (Single Instruction, Multiple Data) в переводе «одна инструкция — множество данных» – набор инструкций, который позволяет произвести одну и ту же последовательность действий параллельно над разными данными. Введение Седьмое поколение началось процессора Pentium 4. Принципиально новый процессор с гиперконвейеризацией — с конвейером, состоящим из 20 ступеней. Данный шаг позволял значительно легче наращивать тактовую частоту, кроме того, в перспективе это позволяло значительно повысить быстродействие. На практике же, первые модели работали даже медленнее, чем Pentium III. Далее общепринятой классификации нет. Современные 64–битные процессоры часто обозначаются как x86_64. Этой архитектуре соответствуют, например, следующие процессоры: Pentium 4 EE (Extreme Edition), Pentium D, Intel Xeon, Xeon MP. Правда, есть публикации, где восьмым поколением как раз называют 64–битные процессоры (начиная с Itanium и Itanium 2) и двухъядерные процессоры (процессоры Intel Pentium D и Intel Pentium Extreme Edition). Введение Хотя каждое следующее поколение была значительно совершеннее предыдущего, однако с точки зрения программиста все эти процессоры весьма схожи. Наиболее наличие двух существенным режимов при работы этом – является реального и защищенного. Строго говоря, в современных процессорах реализован еще и третий режим – виртуального 86–го процессора, или V86, однако в плане использования языка ассемблера этот режим не отличается от обычного режима 86–го процессора, он рассматриваться не будет. Введение Реальный и защищенный режимы прежде всего принципиально различаются способом обращения к оперативной памяти компьютера. Метод адресации памяти, используемый в реальном режиме, позволяет адресовать память лишь в пределах 1 Мбайт. В защищенном режиме используется другой механизм (из–за чего, в частности, эти режимы и оказались полностью несовместимыми), позволяющий обращаться к памяти объемом до 4 Гбайт. Другое важное отличие защищенного режима заключается в аппаратной поддержке многозадачности с аппаратной же (т.е. реализованной в самом микропроцессоре) защитой задач друг от друга. Реальный и защищенный режимы имеют прямое отношение к работе операционной системы, установленной на компьютере. Введение В рамках данного курса будут рассматриваться два класса операционных систем (оба – разработки корпорации Microsoft): 1. однозадачная текстовая система MS DOS; 2. многозадачная графическая система Windows. Операционная система MS DOS является системой реального режима; другими словами, она использует только средства процессора 8086 даже при наличии самого современного процессора. Система Windows – это система защищенного режима; она значительно более полно использует возможности современных процессоров, в частности, многозадачность и расширенное адресное пространство. Разумеется, система Windows не могла бы работать с процессором 8086, так как в нем не был реализован защищенный режим. Введение Соответственно двум типам операционных систем, и все программное обеспечение персональных компьютеров можно подразделить на два класса: 1. программы, предназначенные для работы под управлением MS DOS (их часто называют приложениями DOS); 2. программы, предназначенные для системы Windows (приложения Windows). Естественно, приложения DOS могут работать только в реальном режиме, а приложения Windows – только в защищенном. Деление программ на приложения DOS и приложения Windows исчерпывают вопрос о возможных типах программ в рамках данного курса. Введение Таким образом, выражения "программирование в системе MS DOS", "программирование в реальном режиме" и "программирование 86–го процессора" фактически являются синонимами. При этом следует подчеркнуть, что хотя процессор 8086, как микросхема, уже давно не используется, его архитектура и система команд целиком вошли в современные процессоры. Лишь относительно небольшое число команд современных организации процессоров защищенного специально режима предназначены и для распознаются процессором, только когда он работает в защищенном режиме. Архитектура компьютеров на основе INTEL процессоров Структурная схема типичного компьютера представлена на рисунке. Она не претендует на безусловную точность и имеет целью лишь показать назначение, взаимосвязь и типовой состав элементов современного персонального компьютера. Архитектура компьютеров на основе INTEL процессоров Совместимые с 80х86 микросхемы выпускают ряд фирм, например: AMD, IBM, Cyrix. В управления, процессоре когда реализуется выполнение принцип каждой микропрограммного машинной команды осуществляется микропрограммой, работающей на уровне сигналов, подаваемых на те или иные логические схемы компьютера, тем самым обеспечивая управление вычислительной системой. Возможности компьютера в большей степени зависят от типа установленного процессора и его тактовой частоты. Тактовая частота в значительной степени определяет быстродействие компьютера. Но это не единственный фактор. Архитектура компьютеров на основе INTEL процессоров Для увеличения быстродействия процессоров используются следующие способы: 1. Конвейерная обработка, которая состоит в том, что команда делится на некоторое количество однотипных операций. Каждую из этих операций сопоставляют одной ступени конвейера. После освобождения ступени конвейера она сразу приступает к работе над следующей командой. Если предположить, что каждая ступень конвейера тратит единицу времени на свою работу, то выполнение команды на конвейере длиной в n ступеней займёт n единиц времени, однако в самом оптимистичном случае результат выполнения каждой следующей команды будет получаться через каждую единицу времени. Архитектура компьютеров на основе INTEL процессоров 2. Суперскалярная архитектура, т.е. способность выполнения нескольких машинных инструкций за один такт процессора параллельно несколькими исполнительными устройствами. Так как не все команды можно «спаривать», дополнительные исполнительные устройства могут выполнять только простые команды. 3. Модуль предсказания переходов (ветвлений). Схемы предсказания современных процессоров позволяют прогнозировать правильность перехода с вероятностью до 95 %. 4. Многоядерные процессоры (INTEL процессоры последнего поколения), которые содержат несколько процессорных ядер в одном корпусе (на одном или нескольких кристаллах) обеспечивают реализацию мультипроцессорных систем. и Архитектура компьютеров на основе INTEL процессоров Арифметико–логическое устройство — блок процессора, который служит для выполнения арифметических и логических преобразований. Команды и данные находятся в памяти. Быстродействие оперативной памяти (время доступа, в среднем, равно несколько десятков наносекунд) в значительной степени уступает быстродействию процессора. Для решения задачи выравнивания быстродействия между процессором и памятью используются: • регистровая память; • кэширование (начиная с 486 процессора). Архитектура компьютеров на основе INTEL процессоров Регистровая память входит в структуру любого процессора. Самая быстродействующая память, но имеет ограниченный размер. Кэширование — это использование дополнительной быстродействующей памяти (кэш–памяти) для хранения копий блоков информации из основной (оперативной) памяти, вероятность обращения к которым в ближайшее время велика. Различают кэши 1–, 2– и 3–го уровней. Кэш 1–го уровня расположена внутри процессора, имеет наименьшую латентность (время доступа), но малый размер. Кэш 2–го уровня обычно имеет значительно большие латентности доступа, но его можно сделать значительно больше по размеру. Кэш 3–го уровня самый большой по объёму и довольно медленный, но всё же он гораздо быстрее, чем оперативная память. Архитектура компьютеров на основе INTEL процессоров С остальными устройствами компьютера, и в первую очередь с оперативной памятью, процессор связан несколькими группами проводников, называемых шинами. Основных шин три: • шина данных; • адресная шина; • командная шина (шина управления).