
- •Вопрос 10-12
- •13. Конфигурация пк, определение производительности мп
- •Вопрос 53.
- •Вопрос 54.
- •2. Непозиционные системы счисления
- •Вопрос 55.
- •В цифровых устройствах
- •Вопрос 56.
- •В математике
- •[Править] в языках программирования
- •Пользовательские регистры
- •Регистры общего назначения
- •Сегментные регистры
- •Регистры состояния и управления
- •Системные регистры микропроцессора
- •Регистры управления
- •Регистры системных адресов
- •Регистры отладки
- •Вопрос 74
- •Вопрос 75.
- •Вопрос 76
- •Вопрос 77
- •78. Архитектура компьютерной системы
- •79. Режимы работы микропроцессора
- •80. Архитектура и вычислительных систем
Регистры системных адресов
Эти регистры еще называют регистрами управления памятью. Они предназначены для защиты программ и данных в мультизадачном режиме работы микропроцессора.
При работе в защищенном режиме микропроцессора адресное пространство делится на:
глобальное — общее для всех задач;
локальное — отдельное для каждой задачи.
Этим разделением и объясняется присутствие в архитектуре микропроцессора следующих системных регистров:
регистра таблицы глобальных дескрипторов gdtr (Global Descriptor Table Register) имеющего размер 48 бит и содержащего 32-битовый (биты 16—47) базовый адрес глобальной дескрипторной таблицы GDT и 16-битовое (биты 0—15) значение предела, представляющее собой размер в байтах таблицы GDT;
регистра таблицы локальных дескрипторов ldtr (Local Descriptor Table Register) имеющего размер 16 бит и содержащего так называемый селектор дескриптора локальной дескрипторной таблицы LDT. Этот селектор является указателем в таблице GDT, который и описывает сегмент, содержащий локальную дескрипторную таблицу LDT;
регистра таблицы дескрипторов прерываний idtr (Interrupt Descriptor Table Register) имеющего размер 48 бит и содержащего 32-битовый (биты 16–47) базовый адрес дескрипторной таблицы прерываний IDT и 16-битовое (биты 0—15) значение предела, представляющее собой размер в байтах таблицы IDT;
16-битового регистра задачи tr (Task Register), который подобно регистру ldtr, содержит селектор, то есть указатель на дескриптор в таблице GDT. Этот дескриптор описывает текущий сегмент состояния задачи (TSS — Task Segment Status). Этот сегмент создается для каждой задачи в системе, имеет жестко регламентированную структуру и содержит контекст (текущее состояние) задачи. Основное назначение сегментов TSS — сохранять текущее состояние задачи в момент переключения на другую задачу.
Регистры отладки
Это очень интересная группа регистров, предназначенных для аппаратной отладки. Средства аппаратной отладки впервые появились в микропроцессоре i486. Аппаратно микропроцессор содержит восемь регистров отладки, но реально из них используются только 6.
Регистры dr0, dr1, dr2, dr3 имеют разрядность 32 бит и предназначены для задания линейных адресов четырех точек прерывания. Используемый при этом механизм следующий: любой формируемый текущей программой адрес сравнивается с адресами в регистрах dr0...dr3, и при совпадении генерируется исключение отладки с номером 1.
Регистр dr6 называется регистром состояния отладки. Биты этого регистра устанавливаются в соответствии с причинами, которые вызвали возникновение последнего исключения с номером 1.
Перечислим эти биты и их назначение:
b0 — если этот бит установлен в 1, то последнее исключение (прерывание) возникло в результате достижения контрольной точки, определенной в регистре dr0;
b1 — аналогично b0, но для контрольной точки в регистре dr1;
b2 — аналогично b0, но для контрольной точки в регистре dr2;
b3 — аналогично b0, но для контрольной точки в регистре dr3;
bd (бит 13) — служит для защиты регистров отладки;
bs (бит 14) — устанавливается в 1, если исключение 1 было вызвано состоянием флага tf = 1 в регистре eflags;
bt (бит 15) устанавливается в 1, если исключение 1 было вызвано переключением на задачу с установленным битом ловушки в TSS t = 1.
Все остальные биты в этом регистре заполняются нулями. Обработчик исключения 1 по содержимому dr6должен определить причину, по которой произошло исключение, и выполнить необходимые действия.
Регистр dr7 называется регистром управления отладкой. В нем для каждого из четырех регистров контрольных точек отладки имеются поля, с помощью которых можно уточнить следующие условия, при которых следует сгенерировать прерывание:
место регистрации контрольной точки — только в текущей задаче или в любой задаче. Эти биты занимают младшие восемь бит регистра dr7 (по два бита на каждую контрольную точку (фактически точку прерывания), задаваемую регистрами dr0, dr1, dr2, dr3 соответственно). Первый бит из каждой пары — это так называемое локальное разрешение; его установка говорит о том, что точка прерывания действует если она находится в пределах адресного пространства текущей задачи. Второй бит в каждой паре определяет глобальное разрешение, которое говорит о том, что данная контрольная точка действует в пределах адресных пространств всех задач, находящихся в системе;
тип доступа, по которому инициируется прерывание: только при выборке команды, при записи или при записи/чтении данных. Биты, определяющие подобную природу возникновения прерывания, локализуются в старшей части данного регистра.
Большинство из системных регистров программно доступны. Не все из них понадобятся в нашем дальнейшем изложении, но, тем не менее, я коротко рассмотрел их с тем, чтобы возбудить у читателя интерес к дальнейшему исследованию архитектуры микропроцессора.
N66 Причины возникновения многоядерных МП
Первый (естественно, одноядерный!) микропроцессор Intel 4004 был представлен 15 ноября 1971 г. корпорацией Intel. Он содержал 2300 транзисторов, работал на тактовой частоте 108 кГц и стоил $300.
Требования к вычислительной мощности центрального микропроцессора постоянно росли и продолжают расти. Но если раньше производителям процессоров приходилось постоянно подстраиваться под текущие насущные (вечно растущие!) запросы пользователей ПК, то теперь чипмейкеры идут с бо-о-о-льшим опережением!
Долгое время повышение производительности традиционных одноядерных процессоров в основном происходило за счет последовательного увеличения тактовой частоты (около 80% производительности процессора определяла именно тактовая частота) с одновременным увеличением количества транзисторов на одном кристалле. Однако дальнейшее повышение тактовой частоты (при тактовой частоте более 3,8 ГГц чипы попросту перегреваются!) упирается в ряд фундаментальных физических барьеров (поскольку технологический процесс почти вплотную приблизился к размерам атома: сегодня процессоры выпускаются по 45-нм технологии, а размеры атома кремния – приблизительно 0,543 нм):
• во-первых, с уменьшением размеров кристалла и с повышением тактовой частоты возрастает ток утечки транзисторов. Это ведет к повышению потребляемой мощности и увеличению выброса тепла;
• во-вторых, преимущества более высокой тактовой частоты частично сводятся на нет из-за задержек при обращении к памяти, так как время доступа к памяти не соответствует возрастающим тактовым частотам;
• в-третьих, для некоторых приложений традиционные последовательные архитектуры становятся неэффективными с возрастанием тактовой частоты из-за так называемого «фон-неймановского узкого места» – ограничения производительности в результате последовательного потока вычислений. При этом возрастают резистивно-емкостные задержки передачи сигналов, что является дополнительным узким местом, связанным с повышением тактовой частоты.
Применение многопроцессорных систем также не получило широкого распространения, так как требует сложных и дорогостоящих многопроцессорных материнских плат. Поэтому было решено добиваться дальнейшего повышения производительности микропроцессоров другими средствами. Самым эффективным направлением была признана концепция многопоточности, зародившаяся в мире суперкомпьютеров, – это одновременная параллельная обработка нескольких потоков команд.
Так в недрах компании Intel родилась Hyper-Threading Technology (HTT) – технология сверхпоточной обработки данных, которая позволяет процессору выполнять в одноядерном процессоре параллельно до четырех программных потоков одновременно. Hyper-threadingзначительно повышает эффективность выполнения ресурсоемких приложений (например, связанных с аудио- и видеоредактированием,3D-моделированием), а также работу ОС в многозадачном режиме.
Процессор Pentium 4 с включенным Hyper-threading имеет одно физическое ядро, которое разделено на два логических, поэтому операционная система определяет его, как два разных процессора (вместо одного).
Hyper-threading фактически стала трамплином к созданию процессоров с двумя физическими ядрами на одном кристалле. В 2-ядерном чипе параллельно работают два ядра (два процессора!), которые при меньшей тактовой частоте обеспечивают большую производительность, поскольку параллельно (одновременно!) выполняются два независимых потока инструкций.
Способность процессора выполнять одновременно несколько программных потоков называется параллелизмом на уровне потоков (TLP –thread-level parallelism). Необходимость в TLP зависит от конкретной ситуации (в некоторых случаях она просто бесполезна!).
Основные проблемы создания многоядерных процессоров
• каждое ядро процессора должно быть независимым, – с независимым энергопотреблением и управляемой мощностью;
• рынок программного обеспечения должен быть обеспечен программами, способными эффективно разбивать алгоритм ветвления команд на четное (для процессоров с четным количеством ядер) или на нечетное (для процессоров с нечетным количеством ядер) количество потоков;
• …
Преимущества многоядерных процессоров
• возможность распределять работу программ, например, основных задач приложений и фоновых задач операционной системы, по нескольким ядрам;
• увеличение скорости работы программ;
• процессы, требующие интенсивных вычислений, протекают намного быстрее;
• более эффективное использование требовательных к вычислительным ресурсам мультимедийных приложений (например, видеоредакторов);
• снижение энергопотребления;
• работа пользователя ПК становится более комфортной;
• …
Недостатки многоядерных процессоров
• возросшая себестоимость производства многоядерных процессоров (по сравнению с одноядерными) заставляет чипмейкеров увеличивать их стоимость, а это отчасти сдерживает спрос;
• так как с оперативной памятью одновременно работают сразу два и более ядра, необходимо «научить» их работать без конфликтов;
• возросшее энергопотребление требует применения мощных схем питания;
• требуется более мощная система охлаждения;
• количество оптимизированного под многоядерность программного обеспечения ничтожно мало (большинство программ рассчитаны на работу в классическом одноядерном режиме, поэтому они просто не могут задействовать вычислительную мощь дополнительных ядер);
• операционные системы, поддерживающие многоядерные процессоры (например, Windows XP SP2 и выше) используют вычислительные ресурсы дополнительных ядер для собственных системных нужд;
• …
Следует признать, что в настоящее время многоядерные процессоры используются крайне неэффективно. Кроме того, на практике n-ядерные процессоры не производят вычисления в n раз быстрее одноядерных: хотя прирост быстродействия и оказывается значительным, но при этом он во многом зависит от типа приложения. У программ, которые не рассчитаны на работу с многоядерными процессорами, быстродействие увеличивается всего на 5%. А вот оптимизированные под многоядерные процессоры программы работают быстрее уже на 50%.
Ядер, как и памяти, много не бывает!..
Лидеры процессоростроения, компании Intel и AMD, считают, что будущее за параллельными вычислениями и продолжают последовательно наращивать количество ядер в процессорах.
Появление многоядерных процессоров стимулирует появление операционных систем и прикладного программного обеспечения, поддерживающего многоядерность.
N67 Роны
Регистры общего назначения
Перечислим регистры, относящиеся к группе регистров общего назначения.
eax/ax/ah/al (Accumulator register) — аккумулятор. Применяется для хранения промежуточных данных.
ebx/bx/bh/bl (Base register) — базовый регистр. Применяется для хранения базового адреса некоторого объекта в памяти;
ecx/cx/ch/cl (Count register) — регистр-счетчик. Применяется в командах, производящих некоторые повторяющиеся действия. Его использование зачастую неявно и скрыто в алгоритме работы соответствующей команды. К примеру, команда организации цикла loop кроме передачи управления команде, находящейся по некоторому адресу, анализирует и уменьшает на единицу значение регистра ecx/cx;
edx/dx/dh/dl (Data register) — регистр данных. Так же, как и регистр eax/ax/ah/al, он хранит промежуточные данные. В некоторых командах его использование обязательно; для некоторых команд это происходит неявно.
N68 Причины появления и развития вычислительных систем
Исторически первыми появились цифровые вычислительные устройства, например счёты и их многочисленные предшественники. В 17 в. французским учёным Б. Паскалем, а позднее немецким математиком Г. В. Лейбницем были построены первые ЦВМ. Первой пригодной для практического применения В. м. стал арифмометр Томаса де Кольмара (1820). В 1874 был создан получивший широкое распространение арифмометр В. Т. Однера. В начале 20 в. Появились счётно-аналитические машины для выполнения различных статистических, бухгалтерских и финансово-банковских операций.
Развитие теории релейно-контактных схем, а также опыт эксплуатации телефонной аппаратуры и счётно-перфорационных машин позволили в 30-х гг. 20 в. приступить к разработке В. м. с программным управлением первоначально на электромагнитных реле. Первая такая машина "МАРК-1" была построена в США в 1944. Первая электронная ЦВМ "ЭНИАК" (электронный цифровой интегратор и вычислитель) была построена также в США в 1946.
Развитие электронных В. м. (ЭВМ) тесно связано с достижениями в области электронной техники. Первые ЭВМ создавались на вакуумных радиоприборах; эти В. м. принято называть машинами первого поколения. Развитие полупроводниковой радиоэлектроники позволило перейти к конструированию В. м. второго и третьего поколения; для них характерно усложнение логической схемы и наличие программного обеспечения, являющегося программным продолжением аппаратной части В. м. Технология изготовления В. м. второго поколения мало отличалась от технологии изготовления В. м. первого поколения: на смену вакуумным радиолампам пришли полупроводниковые триоды (транзисторы) и диоды. В. м. третьего поколения выполняются на интегральных схемах, содержащих в одном модуле десятки транзисторов, резисторов и диодов. Переход к производству В. м. на интегральных схемах потребовал почти полного пересмотра технологии производства ЭВМ.
N69 Сегментация памяти
Сегментация памяти
Другой подход к организации памяти опирается на тот факт, что программы обычно разделяются на отдельные области-сегменты. Каждый сегмент представляет собой отдельную логическую единицу информации, содержащую совокупность данных или программ и расположенную в адресном пространстве пользователя. Сегменты создаются пользователями, которые могут обращаться к ним по символическому имени. В каждом сегменте устанавливается своя собственная нумерация слов, начиная с нуля.
Обычно в подобных системах обмен информацией между пользователями строится на базе сегментов. Поэтому сегменты являются отдельными логическими единицами информации, которые необходимо защищать, и именно на этом уровне вводятся различные режимы доступа к сегментам. Можно выделить два основных типа сегментов: программные сегменты и сегменты данных (сегменты стека являются частным случаем сегментов данных). Поскольку общие программы должны обладать свойством повторной входимости, то из программных сегментов допускается только выборка команд и чтение констант. Запись в программные сегменты может рассматриваться как незаконная и запрещаться системой. Выборка команд из сегментов данных также может считаться незаконной и любой сегмент данных может быть защищен от обращений по записи или по чтению.
Для реализации сегментации было предложено несколько схем, которые отличаются деталями реализации, но основаны на одних и тех же принципах.
В системах с сегментацией памяти каждое слово в адресном пространстве пользователя определяется виртуальным адресом, состоящим из двух частей: старшие разряды адреса рассматриваются как номер сегмента, а младшие - как номер слова внутри сегмента. Наряду с сегментацией может также использоваться страничная организация памяти. В этом случае виртуальный адрес слова состоит из трех частей: старшие разряды адреса определяют номер сегмента, средние - номер страницы внутри сегмента, а младшие - номер слова внутри страницы.
Как и в случае страничной организации, необходимо обеспечить преобразование виртуального адреса в реальный физический адрес основной памяти. С этой целью для каждого пользователя операционная система должна сформировать таблицу сегментов. Каждый элемент таблицы сегментов содержит описатель (дескриптор) сегмента (поля базы, границы и индикаторов режима доступа). При отсутствии страничной организации поле базы определяет адрес начала сегмента в основной памяти, а граница - длину сегмента. При наличии страничной организации поле базы определяет адрес начала таблицы страниц данного сегмента, а граница - число страниц в сегменте. Поле индикаторов режима доступа представляет собой некоторую комбинацию признаков блокировки чтения, записи и выполнения.
Таблицы сегментов различных пользователей операционная система хранит в основной памяти. Для определения расположения таблицы сегментов выполняющейся программы используется специальный регистр защиты, который загружается операционной системой перед началом ее выполнения. Этот регистр содержит дескриптор таблицы сегментов (базу и границу), причем база содержит адрес начала таблицы сегментов выполняющейся программы, а граница - длину этой таблицы сегментов. Разряды номера сегмента виртуального адреса используются в качестве индекса для поиска в таблице сегментов. Таким образом, наличие базово-граничных пар в дескрипторе таблицы сегментов и элементах таблицы сегментов предотвращает возможность обращения программы пользователя к таблицам сегментов и страниц, с которыми она не связана. Наличие в элементах таблицы сегментов индикаторов режима доступа позволяет осуществить необходимый режим доступа к сегменту со стороны данной программы. Для повышения эффективности схемы используется ассоциативная кэш-память.
Отметим, что в описанной схеме сегментации таблица сегментов с индикаторами доступа предоставляет всем программам, являющимся частями некоторой задачи, одинаковые возможности доступа, т. е. она определяет единственную область (домен) защиты. Однако для создания защищенных подсистем в рамках одной задачи для того, чтобы изменять возможности доступа, когда точка выполнения переходит через различные программы, управляющие ее решением, необходимо связать с каждой задачей множество доменов защиты. Реализация защищенных подсистем требует разработки некоторых специальных аппаратных средств. Рассмотрение таких систем, которые включают в себя кольцевые схемы защиты, а также различного рода мандатные схемы защиты, выходит за рамки данного обзора.
N70-73
N70 Debug — Программа-отладчик, которую используют для проверки и отладки выполняемых файлов. Использовалась при операционной системе MS-DOS. Под более поздние версии операционных систем работает через эмулятор MS-DOS и имеет ограниченные возможности.
Данная программа является консольным приложением и предназначена для создания или изменения кода файлов. С помощью неё можно создавать простые приложение под MS-DOS и отслеживать их работу. Обладает неплохими возможностями такими как просмотр, изменение памяти и получение состояния регистров.
N71
N72
N73
Прерывание — сигнал, генерируемый электрическим оборудованием компьютера или поступающий из программ. Сигнал на прерывание предупреждает процессор о необходимости функции, требуемой в данный момент.
Нажатие любой клавиши генерирует сигнал прерывания от клавиатуры, предупреждающий процессор о введение символа с клавиатуры.
Прерывание – временный останов выполнения одной программы в целях оперативного выполнения другой, более приоритетной.
Прерывание возникает в работе компьютера постоянно. Все процедуры ввода-вывода в ЭВМ выполняются по прерыванию.
Существует система прерываний – режим функционирования процессора, когда он во время выполнения своей работы имеет возможность реагировать на другие события, происходящие в компьютерных системах асинхронно. Причём события могут происходить не только непредсказуемо, но и внезапно.
Поддерживается до 256 типов прерывания, каждое со своим кодом (номером)
Система прерываний – управляющее аппаратное средство, ориентированное на поддержку ПО через настойку взаимодействующей программы с внешними устройствами.
3 вида прерывания :
Внутренний – вырабатываются самим МП. Генерируются при возникновение особых, ненормальных внутренних условий выполнения текущей команды.
Внешние – возникают вне МП и в свою очередь делятся на :
А) Немаскируемые – должны быть обработаны всегда. Обрабатываются процессором независимо от флага разрешения прерывания.
Б) Маскируемые – могут быть заблокированы на какое-то время. Обеспечивают реакцию процессора на события, происходящие в отношение исполнительного кода.
Программно-вызываемая
Осуществляются через команду МП int_xx (хх – номер прерывания)
Прерывание – запрос на обработку процессором возникшего в компьютерной системе события.
Каждое событие, требующее прерывания, сопровождается специальным сигналом – запросом прерывания. Получив самый приоритетный сигнал, процессор приостанавливает выполнение текущей программы и переходит к выполнению специальной программы.
Запросы на прерывание возникают при :
Случае выхода за установленные для этой программы области памяти
Деление на нуль
Необходимости операций ввода-вывода для переферийного устройства
Сбое в аппаратуре
N74-77