Главная страница
Навигация по странице:

  • Лекция 2.5. Переходные процессы в логических схемах. Гонки.

  • Лекции по дисциплине системы реального времени тема аппаратнопрограммные средства и комплексы реального времени


    Скачать 1.67 Mb.
    НазваниеЛекции по дисциплине системы реального времени тема аппаратнопрограммные средства и комплексы реального времени
    Дата31.03.2022
    Размер1.67 Mb.
    Формат файлаpdf
    Имя файла62_ZVH.pdf
    ТипЛекции
    #431172
    страница5 из 16
    1   2   3   4   5   6   7   8   9   ...   16
    Лекция 2.4. Управление оперативной памятью
    1. Отображение адресного пространства программы на основную па- мять.
    2. Функции операционной системы по управлению памятью.
    1. Отображение адресного пространства программы на основную па- мять.
    Наиболее важным ресурсом после процессора является оперативная память. В отличие от памяти жесткого диска, которую называют внешней памятью, оперативной памяти для сохранения информации требуется постоянное электропитание. Память является важнейшим ресурсом, требующим тщательного управления со стороны мультипрограммной операционной системы. Особая роль памяти объясняется тем, что процессор может выполнять инструкции программы только в том случае, если они находятся в памяти. Память распределяется как между модулями прикладных программ, так и между модулями самой операционной системы.
    В ранних ОС управление памятью сводилось к загрузке программы и ее данных из некоторого внешнего накопителя (перфоленты, магнитной ленты или магнитного диска) в память.
    С появлением мультипрограммирования перед ОС были поставлены новые задачи, связанные с распределением имеющейся памяти между несколькими

    47 одновременно выполняющимися программами. Функциями ОС по управлению памятью в мультипрограммной системе являются:
    отслеживание свободной и занятой памяти;
    выделение памяти процессам и освобождение памяти по завершении процессов;
    вытеснение кодов и данных процессов из оперативной памяти на диск
    (полное или частичное), когда размеры основной памяти не достаточны для размещения в ней всех процессов, и возвращение их в оперативную память, когда в ней освобождается место;
    настройка адресов программы на конкретную область физической па- мяти.
    Алгоритмы распределения, использования, освобождения ресурсов и представления к ним доступа предназначены для наиболее эффективной организации работы всего комплекса устройств ЭВМ. Рассмотрим их на примере управления основной памятью.
    Для выполнения программы при ее загрузке в основную память ей выделяется часть машинных ресурсов - они необходимы для размещения команд, данных, управляющих таблиц и областей ввода-вывода, то есть, производится трансляция адресного пространства откомпилированной программы в местоположение в реальной памяти.
    Выделение ресурсов может быть осуществлено самим программистом
    (если он работает на языке, близком машинному), но может производиться и операционной системой.
    Если выделение ресурсов производится перед выполнением про- граммы, такой процесс называется статическим перемещением, в ре- зультате которого программа «привязывается» к определенному месту в памяти вычислительной машины. Если же ресурсы выделяются в процессе выполнении программы, это называется динамическим перемещением, и в этом случае программа не привязана к определенному месту в реальной памяти. Динамический режим можно реализовать только с помощью опе- рационной системы.
    При статическом перемещении могут встретиться два случая:
    1. Реальная память больше требуемого адресного пространства про- граммы. В этом случае загрузка программы в реальную память производится, начиная с 0-го адреса.
    Загружаемая программа А является абсолютной программой, так как никакого изменения адресов в адресном пространстве, подготовлен- ном компилятором, при загрузке в основную память не происходит - программа располагается с 0-го адреса реальной памяти;
    2. Реальная память меньше требуемого адресного пространства про- граммы. В этом случае программист (или операционная система) вынужден решать проблему, как организовать выполнение программы. Методов решения проблемы существует несколько: можно создать оверлейную структуру (то есть разбить программу на части, вызываемые в ОП по мере необходимости), сделать модули программы реентерабельными (то есть

    48 допускающими одновременную работу модуля по нескольким обращениям из разных частей программы или из различных программ).
    В некоторых операционных системах адреса откомпилированной (с 0- го адреса) программы могут быть преобразованы в адреса реальной памяти, отличные от 0. При этом создается абсолютный модуль, который требует раз- мещения его в памяти всегда с одного и того же адреса.
    При мультипрограммном режиме, если имеем программы А, В и С, для которых известно, что программа А выполняется при размещении в памяти с адреса 60 Кбайт до 90 Кбайт, В - с 60 Кбайт до 90 Кбайт, С - с 50
    Кбайт до 120 Кбайт, организовать их совместное выполнение невозможно, так как им необходим один и тот же участок реальной памяти. Эти программы будут ждать друг друга либо их нужно заново редактировать с другого адреса.
    В системах с динамическим перемещением программ перемещающий загрузчик размещает программу в свободной части памяти и допускает использование ее несмежных участков. В этом случае имеется больше возможностей для организации мультипрограммной работы, а, следовательно, и для более эффективного использования временных ресурсов ЭВМ.
    2. Функции операционной системы по управлению памятью Помимо первоначального выделения памяти процессам при их создании ОС должна также заниматься динамическим распределением памяти, то есть выполнять запросы приложений на выделение им дополнительной памяти во время выполнения. После того как приложение перестает нуждаться в дополнительной памяти, оно может возвратить ее системе. Выделение па- мяти случайной длины в случайные моменты времени из общего пула памяти приводит к фрагментации и, вследствие этого, к неэффективному ее ис- пользованию. Оно характерно для систем со статическим перемещением.
    Дефрагментация памяти тоже является функцией операционной системы.
    Во время работы операционной системы ей часто приходится создавать новые служебные информационные структуры, такие как описатели процессов и потоков, различные таблицы распределения ресурсов, буферы, используемые процессами для обмена данными, синхронизирующие объекты. Все эти системные объекты требуют памяти. В некоторых ОС заранее (во время установки) резервируется некоторый фиксированный объем памяти для системных нужд. В других же ОС используется более гибкий подход, при котором память для системных целей выделяется динамически. В таком случае разные подсистемы ОС при создании своих таблиц, объектов, структур обращаются к подсистеме управления памятью с запросами.
    Защита памяти - это еще одна важная задача операционной системы, которая состоит в том, чтобы не позволить выполняемому процессу записы- вать или читать данные из памяти, назначенной другому процессу. Эта функ- ция, как правило, реализуется программными модулями ОС в тесном взаимо- действии с аппаратными средствами.

    49
    Для идентификации переменных и команд на разных этапах жизненного цикла программы используются символьные имена (метки), виртуальные адреса и физические адреса.
    Символьные имена присваивает пользователь при написании программы на алгоритмическом языке или ассемблере.
    Виртуальные адреса, называемые иногда математическими, или логическими адресами, вырабатывает транслятор, переводящий программу на машинный язык. Поскольку во время трансляции в общем случае не известно, в какое место оперативной памяти будет загружена программа, то транслятор присваивает переменным и командам виртуальные (условные) адреса, обычно считая по умолчанию, что начальным адресом программы будет нулевой адрес.
    Физические адреса соответствуют номерам ячеек оперативной памяти, где в действительности расположены или будут расположены переменные и команды.
    Совокупность виртуальных адресов процесса называется виртуальным адресным пространством. Диапазон возможных адресов виртуального пространства у всех процессов является одним и тем же.
    Совпадение виртуальных адресов переменных и команд различных процессов не приводит к конфликтам, так как в том случае, когда эти переменные одновременно присутствуют в памяти, операционная система отображает их на разные физические адреса. В том случае, когда необходимо, чтобы несколько процессов разделяли общие данные или коды, операционная система отображает соответствующие участки виртуального адресного пространства этих процессов на один и тот же участок физической памяти.
    В разных операционных системах используются разные способы структуризации виртуального адресного пространства. В одних ОС виртуальное адресное пространство процесса подобно физической памяти представлено в виде непрерывной линейной последовательности виртуальных адресов. Такую структуру адресного пространства называют плоской. При этом виртуальным адресом является единственное число, представляющее собой смещение относительно начала (обычно это значение
    000...000) виртуального адресного пространства. Адрес такого типа называют линейным виртуальным адресом.
    Рисунок 1. – Интерпретация виртуального адреса
    В других ОС виртуальное адресное пространство делится на части, называемые сегментами (или секциями, или областями). Б этом случае

    50 помимо линейного адреса может быть использован виртуальный адрес
    (рис.1), представляющий собой пару чисел (п, т), где п определяет сегмент, а m - смещение внутри сегмента.
    Существуют и более сложные способы структуризации виртуального адресного пространства, когда виртуальный адрес образуется тремя или даже более числами.
    Задачей операционной системы является отображение индивидуальных виртуальных адресных пространств, всех одновременно выполняющихся процессов, на общую физическую память. При этом ОС отображает либо все виртуальное адресное пространство, либо только определенную его часть. Процедура преобразования виртуальных адресов в физические должна быть максимально прозрачна для пользователя и программиста.
    Существуют два принципиально отличающихся подхода к преобразованию виртуальных адресов в физические. В первом случае замена виртуальных адресов на физические выполняется один раз для каждого процесса во время начальной загрузки программы в память. Специальная системная программа -перемещающий загрузчик-на основании имеющихся у нее исходных данных о начальном адресе физической памяти, в которую предстоит загружать программу, а также информации, предоставленной транслятором об адресно-зависимых элементах программы, выполняет загрузку программы, совмещая ее с заменой виртуальных адресов физическими.
    Второй способ заключается в том, что программа загружается в память в неизмененном виде в виртуальных адресах, то есть операнды инструкций, и адреса переходов имеют те значения, которые выработал транслятор. В наиболее простом случае, когда виртуальная и физическая память процесса представляют собой единые непрерывные области адресов, операционная система выполняет преобразование виртуальных адресов в физические по следующей схеме. При загрузке операционная система фиксирует смещение действительного расположения программного кода относительно виртуального адресного пространства. Во время выполнения программы при каждом обращении к оперативной памяти выполняется преобразование виртуального адреса в физический.
    Последний способ является более гибким: в то время как перемещаю- щий загрузчик жестко привязывает программу к первоначально выделенному ей участку памяти, динамическое преобразование виртуальных адресов позволяет перемещать программный код процесса в течение всего периода его выполнения. Но использование перемещающего загрузчика более эко- номично, так как в этом случае преобразование каждого виртуального адреса происходит только один раз во время загрузки, а при динамическом преобра- зовании - при каждом обращении по данному адресу.
    В СРВ, когда заранее точно известно, в какой области оперативной памяти будет выполняться программа, транслятор выдает исполняемый код сразу в физических адресах.

    51
    Необходимо различать максимально возможное виртуальное адресное пространство процесса и назначенное (выделенное) процессу виртуальное адресное пространство. В первом случае речь идет о максимальном размере виртуального адресного пространства, определяемом архитектурой компью- тера, на котором работает ОС, и, в частности, разрядностью его схем адреса- ции (32-битная, 64-битная и т. п.). Например, при работе на компьютерах с
    32-разряднымии процессорами Intel Реntium операционная система может предоставить каждому процессу виртуальное адресное пространство до 4
    Гбайт (2 32
    ). Однако это значение представляет собой только потенциально возможный размер виртуального адресного пространства, который редко на практике необходим процессу. Процесс использует только часть доступного ему виртуального адресного пространства.
    Назначенное виртуальное адресное пространство представляет собой набор виртуальных адресов, действительно нужных процессу для работы.
    Эти адреса первоначально назначает программе транслятор на основании текста программы, когда создает кодовый (текстовый) сегмент, а также сегмент или сегменты данных, с которыми программа работает. Затем при создании процесса ОС фиксирует назначенное виртуальное адресное пространство в своих системных таблицах. В ходе своего выполнения процесс может увеличить размер первоначального назначенного ему виртуального адресного пространства, запросив у ОС создания дополнительных сегментов или увеличения размера существующих. В любом случае операционная система следит за корректностью использования процессом виртуальных адресов - процессу не разрешается оперировать с виртуальным адресом, выходящим за пределы назначенных ему сегментов.
    Максимальный размер виртуального адресного пространства ограничивается только разрядностью адреса, присущей данной архитектуре компьютера, и, как правило, не совпадает с объемом физической памяти, имеющимся в компьютере.
    Необходимо подчеркнуть, что виртуальное адресное пространство и виртуальная память - это различные механизмы, и они не обязательно реа- лизуются в операционной системе одновременно. Можно представить себе
    ОС, в которой поддерживаются виртуальные адресные пространства для про- цессов, но отсутствует механизм виртуальной памяти. Это возможно только в том случае, если размер виртуального адресного пространства каждого процесса меньше объема физической памяти.
    Содержимое назначенного процессу виртуального адресного пространства, то есть коды команд, исходные и промежуточные данные, а также результаты вычислений, представляет собой образ процесса.
    Во время работы процесса постоянно выполняются переходы от при- кладных кодов к кодам ОС, которые либо явно вызываются из прикладных процессов как системные функции, либо вызываются как реакция па внеш- ние события или на исключительные ситуации, возникающие при некор- ректном поведении прикладных кодов. Для того чтобы упростить передачу управления от прикладного кода к коду ОС, а также для легкого доступа мо-

    52 дулей ОС к прикладным данным (например, для вывода их на внешнее уст- ройство), в большинстве ОС ее сегменты разделяют виртуальное адресное пространство с прикладными сегментами активного процесса. То есть, сег- менты ОС и сегменты активного процесса, образуют единое виртуальное ад- ресное пространство.
    Обычно виртуальное адресное пространство процесса делится на две непрерывные части; системную и пользовательскую. В некоторых ОС (на- пример, Windows NT, ОS/2) эти части имеют одинаковый размер - по 2
    Гбайт, хотя в принципе деление может быть и другим, например 1 Гбайт - для ОС, и 2 Гбайт - для прикладных программ. Часть виртуального адресного пространства каждого процесса, отводимая под сегменты ОС, является идентичной для всех процессов. Поэтому при смене активного процесса заменяется только вторая часть виртуального адресного пространства, содержащая его индивидуальные сегменты, как правило, - коды и данные прикладной программы. Архитектура современных процессоров отражает эту особенность структуры виртуального адресного пространства. Например, в процессорах Intel Реntium существует два типа системных таблиц: одна - для описания сегментов, общих для всех процессов, а другая - для описания индивидуальных сегментов данного процесса. При смене процесса первая таблица остается неизменной, а вторая заменяется новой.
    Описанное выше назначение двух частей виртуального адресного про- странства - для сегментов ОС и для сегментов прикладной программы - явля- ется типичным, но не абсолютным. Имеются и исключения из общего прави- ла. В некоторых ОС существуют системные процессы, порожденные для ре- шения внутренних задач ОС. В этих процессах отсутствуют сегменты прикладной программы части, обычно предназначенной для прикладных сегментов. И, наоборот, в общей, системной части виртуального адресного пространства размещаются сегменты прикладного кода, предназначенные для совместного использования несколькими прикладными процессами.
    Механизм страничной памяти в большинстве универсальных операционных сиcтем применяется ко всем сегментам пользовательской части виртуального адресного пространства процесса. Исключения составляют ОС реального времени, в которых некоторые сегменты жестко фиксируются в оперативной памяти и соответственно никогда не выгружаются на диск - это обеспечивает быструю реакцию определенных приложений на внешние события.
    Системная часть виртуальной памяти в ОС любого типа включает область, подвергаемую страничному вытеснению, и область, на которую страничное вытеснение не распространяется. В не вытесняемой области размещаются модули ОС, требующие быстрой реакции и/или постоянного присутствия в памяти, например диспетчер потоков или код, который управляет заменой страниц памяти. Остальные модули ОС подвергаются страничному вытеснению, как и пользовательские сегменты. Обычно аппаратура накладывает свои ограничения на порядок использования виртуального адресного пространства. Некоторые процессоры (например, МIРS) предусматривают для определенной области системной части адресного

    53 пространства особые правила отображения на физическую память. При этом виртуальный адрес прямо отображается на физический адрес (последний либо полностью соответствует виртуальному адресу, либо равен его части).
    Такая особая область памяти не подвергается страничному вытеснению, и поскольку достаточно трудоемкая процедура преобразования адресов исключается, то доступ к располагаемым здесь кодам и данным осуществляется очень быстро.
    Методы управления, используемые в системах реального времени, обычно проще, чем в многопользовательских системах с разделением време- ни. В крупных вычислительных системах с множеством пользователей большинство программ и данных хранятся во вторичной (внешней) памяти - на жестком диске - и загружаются в оперативную память только при необхо- димости. Это приемлемо для систем разделения времени и пакетной обра- ботки, в которых несущественно, начнется задание минутой раньше или позже. Однако в системах реального времени задержек исполнения быть не должно, поэтому все необходимые модули предварительно загружаются в оперативную память. Тем не менее, в системах реального времени может возникнуть необходимость в выгрузке содержимого части оперативной па- мяти на диск.
    Работа виртуальной памяти основана на предположении, что объем памяти, требуемый для процессов, превосходит размер доступной оперативной памяти. Устройства массовой памяти, например жесткий диск, используемые для реализации этого механизма, должны обладать как достаточной емкостью, так и значительным быстродействием. Операционная система копирует с диска в оперативную память только те части процесса и области его данных, называемые страницами
    (pages), которые непосредственно используются в данный момент, оставляя остальную часть во внешней памяти. Для загрузки наиболее часто используемых страниц и для уменьшения числа обращений к диску применяются различные стратегии оптимизации. Механизм виртуальной памяти позволяет процессу иметь адресное пространство больше, чем размер выделенной ему реальной оперативной памяти. С другой стороны, применение виртуальной памяти существенно увеличивает накладные расходы и замедляет работу системы из-за многократных обращений к диску.
    Применение виртуальной памяти в системах реального времени вызвано в основном экономическими причинами. Стоимость хранения единицы информации в оперативной памяти выше, чем во вторичной памяти.
    Еще одной важной причиной является надежность работы. В случае системного сбоя можно восстановить работу процесса. Если сбой или перерыв в электропитании происходит, когда вся система находится только в оперативной памяти, все процессы и их данные будут потеряны, и восстановить их будет невозможно.
    В системах реального времени представляет интерес только быстрая и эффективная виртуальная память. Чтобы быстро реагировать на внешние cигналы, соответствующие служебные процедуры должны постоянно хра-

    54 ниться в оперативной памяти. Другим важным соображением, относящимся к использованию вторичной памяти в задачах реального времени, является ее работоспособность в производственной среде - жесткие диски и дискеты нельзя использовать в условиях сильных вибраций, ударов или интенсивных магнитных полей.
    Одно из существенных различий между многопользовательскими опе- рационными системами и системами реального времени касается управления файлами. В многопользовательских системах наиболее важными проблемами является структура каталогов и защита файлов. Управление и защита катало- гов с соответствующим контролем прав доступа при каждом обращении тре- буют таких накладных расходов, которые обычно неприемлемы для систем реального времени. Однако, как правило, в системах реального времени эти меры не нужны, поскольку дисковая память используется в основном для протоколов и отчетов, а все процессы принадлежат одному "пользователю".
    Поэтому применение сложных механизмов управления файлами в системах реального времени обычно не оправдано.
    Наиболее сложные операционные системы для достижения оптималь- ных характеристик позволяют настраивать параметры управления процессо- ром и памятью. Необходимо должным образом подобрать приоритеты про- цессов, продолжительность квантов времени, размер страницы виртуальной памяти и другие параметры операционной системы.
    Лекция 2.5. Переходные процессы в логических схемах. Гонки.
    1. Переходные процессы в логических схемах.
    2. Гонки.
    3. Гонки по входу.
    1. Переходные процессы в логических схемах
    Задержка логической схемы слагается из задержек срабатывания логических элементов и задержек распространения сигналов по цепям связи между ними. Трудоемкость учета задержек зависит от соотношения значений задержек самих логических элементов и задержек в цепях связи. Если эти значения близки, то задержки различных трактов схемы можно определить только после размещения элементов на поверхности платы или кристалла большой интегральной схемы (БИС), когда станут, известны фактические длины связей. Если при этом задержки некоторых цепей не соответствуют требуемым, то нужно или переставлять элементы, или вносить изменения в функциональную схему, снова трассировать связи и снова определять задержки в них. Процесс становится итерационным, длительным. Именно в таком положении оказываются разработчики аппаратуры на быстрых элементах ЭСЛ, устанавливаемых на платах в виде микросхем или изго- тавливаемых прямо на поверхности кристаллов БИС. Сложность учета задержек -одна из причин, препятствующих широкому распространению элементов ЭСЛ в схемах цифровой автоматики.
    В цифровой автоматике в основном используются элементы с временем переключения не менее 20 нc, что примерно на порядок превышает

    55 задержку распространения сигнала в любом проводе монтажной платы типового размера. Паразитная емкость монтажа при использовании типовых плат также не настолько велика, чтобы существенно изменить задержку элемента. В этих случаях задержку внутриплатного и близкого межплатного монтажа рационально не учитывать отдельно, а, оценив худший случай, включить ее в состав задержки логического элемента. Небольшая потеря потенциально достижимого быстродействия окупается упрощением разработки схем, поскольку задержки могут быть учтены без каких-либо итераций, сразу, и притом уже на этапе логического проектирования.
    Технические этапы проектирования - размещение элементов и трассировка связей - выполняются только один раз и не вызывают необходимости корректировать функциональные схемы. Будем предполагать, что задержки в цепях связи включены в состав задержек логических элементов.
    Ситуации, когда задержки в связях превышают задержки в элементах, возникают и при использовании не очень быстродействующих элементов - когда сигналы передаются между блоками на достаточно большое расстояние. Однако доля подобных связей невелика, поэтому их можно выделить особо и учесть задержку в кабеле. Задержки различных экземпляров элементов какого-то определенного типа имеют технологический разброс, который обычно описывают некоторым статистическим законом. Задержка каждого конкретного элемента зависит от его температуры, длительности фронта входного сигнала, от того, насколько элементов, и притом каких он нагружен, от паразитной емкости монтажа, числа лет с момента выпуска и ряда других факторов. В паспортах элементов некоторых серий влияние части этих факторов учитывается дифференцированно в виде графиков, таблиц, линеаризованных зависимостей, но чаще это влияние просто оценивается по максимуму. При этом паспортные значения задержек и фронтов приводятся для худшего случая, который может встретиться при соблюдении указанных в паспорте ограничений. В первом случае удается полнее использовать возможности элемента, во втором - упрощается проектирование.
    Рисунок 1. – Плотность вероятности распределения задержки элемента в условиях налаженного производства 1 и в период освоения 2
    На рис. 1 показан возможный вид кривой технологического разброса задержки элементов при испытаниях на предприятии-изготовителе.
    Выходной контроль отсекает хвост кривой в соответствии с техническими

    56 условиями (ТУ) на элемент с учетом необходимого запаса на старение, допуски и т. п. Если правильно налажены производство и контроль, то потребитель всегда имеет дело с элементами, задержка которых не превышает паспортную.
    Однако, разработчику весьма полезно знать кроме максимальной и минимально возможную задержку. Однако, для большинства серийно выпускаемых микросхем значение минимальной задержки в ТУ не указано и, следовательно, изготовителем не гарантируется. Опыт работы схемотехника с данными элементами здесь бесполезен, поскольку кривая технологического разброса у разных изготовителей различна и к тому же чувствительна к перестройкам производства, что и иллюстрируют две кривые на рис.1.
    Поэтому если разработчик аппаратуры использует микросхемы, в паспорте которых не оговорено минимальное значение задержки, то он вынужден полагать минимальное время задержки равным нулю. Никаких юридических оснований считать, что это значение больше нуля, у него нет.
    Уровень выхода элемента в течение отрезка времени от минимально возможного до максимально возможного значения задержки, когда фактическое состояние выхода элемента разработчику не известно, называют состоянием неопределенности и обозначают символом х. Состояние х, поступая на входы других логических элементов, может в зависимости от типа элемента порождать на их выходе или определенные состояния 1 или 0, или также неопределенное, обозначаемое X. Поведение логических элементов задается при этом законами уже не двоичной, а одного из видов троичной логики. Соотношения, расширяющие основные функции на третью переменную х, достаточно очевидны:
    где х, x
    1
    x
    2
    - неопределенные значения сигналов на входах элементов.
    Эффективным средством анализа переходных процессов в схемах являются временные диаграммы. При их построении состояние неопределенности изображают одним из двух способов, которые показаны для элемента И (рис. 2а). Изображение на рис. 2б строже, но менее наглядно; изображение на рис. 2в нагляднее, но может быть спутано с состоянием высокого импеданса элемента, имеющего три состояния выхода.
    Рисунок 2.- Способы изображения состояния неопределенности логического элемента

    57
    Линии со стрелками обозначают причинно-следственные отношения в цепочке переключений. Линия начинается на фронте, который непосредственно вызывает переключение рассматриваемого элемента и оканчивается стрелкой на фронте выходного сигнала этого элемента.
    Наличие таких указателей заметно облегчает понимание работы сложных схем.
    На рис. 3а показан фрагмент схемы и варианты начертания временных диаграмм переходных процессов. Здесь и в дальнейшем для обозначения выходного сигнала элемента используется номер самого элемента.
    Диаграмма на рис.3б игнорирует переходные процессы в элементах и схеме.
    Такие диаграммы применяют, когда основной целью является иллюстрация логических и причинно-следственных отношений, а длительностью переходных процессов по сравнению с интервалами между поступлением сигналов можно пренебречь.
    Диаграмма на рис. 3а построена в предположении, что все элементы имеют максимально возможные значения задержки. Эта диаграмма наглядна, поэтому удобна для первого знакомства с поведением сложной схемы. Но она годится лишь для оценки максимальной длительности переходного процесса. Делать по такой диаграмме выводы о состояниях элементов во время переходного процесса нельзя: это лишь один частный случай из множества возможных процессов.
    Рисунок 3. - Временные диаграммы переходных процессов:
    а - фрагмент схемы; б, в, г - изображение переходных процессов; б - без учета задержек элементов, в - в предположении, что задержки максимальны; г - с использованием состояния неопределенности
    Диаграмма рис. 3г учитывает состояния неопределенности элементов в соответствии с (1). Она достаточно строго моделирует поведение схемы при любых комбинациях задержек, допускаемых паспортами элементов.
    Полезно сравнить диаграммы на рис. 3 в и г, обращая внимание на их

    58 расхождения, причиной которых является общность диаграммы г и частность диаграммы в.
    Быстрое чтение и особенно построение временных диаграмм требуют некоторой тренировки. Полезно самостоятельно построить несколько вариантов диаграмм, изменяя моменты поступления входных сигналов и соотношения задержек элементов схемы на рис. 3а. Построение диаграммы нужно начинать с тех элементов, для которых известны все входные сигналы, в данном примере - с элемента 1. После определения выхода элемента 1 известными становятся все входы элемента 2 и т. д. Если построение диаграммы с учетом состояния неопределенности вызывает затруднение, можно рекомендовать сначала построить диаграмму с нулевыми задержками, показанной на рис. 3б, затем на том же чертеже наложить на нее диаграмму с максимальными задержками, после чего интервалы состояний неопределенности выделяются намного легче.
    В организациях, специализирующихся на разработке логических схем, построение и анализ временных диаграмм выполняются на ЭВМ с помощью специальных моделирующих программ. Для выявления некоторых тонких случаев неопределенности используют не только троичные, но и пятеричные, и более сложные формы представления ситуаций во время переходных процессов. Введение состояния неопределенности позволяет выявить важный, хотя и не очевидный с первого взгляда эффект, который всегда нужно учитывать.
    На рис. 4 показана цепочка из двух элементов, на вход которой поступает сигнал в виде единичного импульса длительностью Т. У выходного сигнала в его начале и конце будут зоны неопределенности длительностью по 2Т каждая. Если задержки включения и выключения равны и максимальны, то полученный сигнал Y2, будет сдвинут относительно выходного на 2Т. В результате может оказаться, что один и тот же сигнал, переданный по двум цепочкам на два блока устройства, запустит их не одновременно. Понятие одновременности расплывается и становится относительным.
    Если задержки включения существенно отличаются от задержек выключения, получится укороченный на 2Т (Y3) или удлиненный на 2Т (Y4) сигнал. В случае Y4 укороченной окажется пауза между последовательными импульсами. Могут получиться и любые промежуточные формы рассмотренных частных случаев, причем предугадать характер эффекта заранее невозможно. Если цепочка содержит k элементов, то во всех рассмотренных случаях вместо двойки в качестве множителя при Т войдет k.
    У разработчика нет никаких официальных документов, позволяющих проигнорировать любой из возможных эффектов, и он вынужден проектировать схему так, чтобы ни один из них не привел к сбою в работе.
    Если на выходе цепочки требуется получить импульс с минимальной дли- тельностью, то длительность импульса на входе цепочки должна быть на k% больше. Аналогично нужно обеспечивать на выходе цепочки и минимальную

    59 длительность паузы, и максимальную длительность импульса, если это требуется.
    Рисунок 4. – Изменение задержки и длительности импульса при прохождении его по цепочке элементов
    2. Гонки
    В логических схемах встречаются участки, где сигнал разветвляется, получившиеся два сигнала распространяются по двум независимым цепочкам элементов, а затем оба сигнала снова встречаются на входах одного элемента. Подобная ситуация показана на рис. 5а, где в рассматриваемый момент времени в представленном фрагменте схемы два тракта оказались прозрачными для входного сигнала благодаря тому, что все конъюнкторы фрагмента в этот момент открыты сигналами единичного уровня. Пусть в тракте чет четное число инверторов, а в тракте нечет - нечетное. Анализ подобной схемы методами алгебры Буля без учета задержек даст на ее выходе 0 при любом значении входного сигнала (рис. 5б). Но реальные элементы имеют конечную задержку срабатывания, и если обозначить задержки в трактах чет и нечет через Т
    чет и Т
    нечет
    , то в зависимости от соотношения этих величин получится один из процессов, изображенных на рис. 5 в и г. В обоих случаях в выходном сигнале появится помеха, не предусмотренная булевыми выражениями. Легко проверить, что замена последнего элемента И на элемент ИЛИ не ликвидирует помеху, а лишь проинвертирует ее и изменит момент появления.

    60
    Рисунок 5. - Варианты временных диаграмм (б, в, г), иллюстрирующие гонки в логической схеме (а)
    Существенно, что полученная помеха - это не пренебрежимо короткий всплеск напряжения малой амплитуды. При достаточно большой разности
    Т
    чет и Т
    нечет помеха будет иметь длительность, во много раз превышающую время переключения элемента, и амплитуду, равную номинальному сигналу.
    Это уже полноценный логический сигнал, на который могут реагировать последующие элементы. Если выход схемы подключен к запоминающему элементу (триггеру), то помеха может запомниться, и будет влиять на последующие процессы в устройстве. Если выход схемы подан в качестве обратной связи на вход, там появится непредвиденный сигнал, который может вызвать непредвиденное повторное срабатывание этой же схемы.
    Описанное явление называют гонками или состязаниями (races). Два сигнала идут разными путями, и схема может реагировать на них по-разному
    (верно или неверно) в зависимости от того, какой сигнал выиграет гонку.
    Основная проблема в том, что разработчик, как правило, не знает, в каком тракте задержка окажется меньше. Изготовитель элементов гарантирует лишь максимальное время задержки элемента данного типа и ничего не говорит ни о конкретной задержке конкретного элемента, ни о минимально возможном времени задержки. Поэтому разработчик логических схем не может воспользоваться тем фактом, что число элементов в цепочке чет, скажем, больше, чем в цепочке нечет. При массовом производстве схем из произвольно взятых элементов найдется достаточно большое число таких узлов, в которых в цепочку чет попадут более быстрые элементы, а в цепочку нечет - более медленные и, вопреки ожидаемому, будет выполняться

    61 неравенство Т
    чет

    нечет
    . Даже если в цепочке нечет один элемент, а в цепочке чет - два, то в последнюю вполне могут попасть элементы, имеющие время задержки втрое меньшее, чем элемент цепочки нечет.
    Специальный подбор элементов по задержке в условиях современного автоматизированного массового производства недопустим, проверка реально получившегося соотношения задержек обычно неприемлема, так как сильно удорожает наладку аппаратуры. Кроме того, при изменении температуры и старении задержки различных элементов изменяются с разной скоростью, и по этому поводу изготовитель, как правило, никаких гарантий не дает.
    Единственное, что гарантирует изготовитель элементов и на что может опереться разработчик схем (фактически или хотя бы юридически), это то, что задержка не выйдет за пределы, указанные в ТУ на элемент, и если в борьбе с гонками разработчик хочет одержать победу, то он должен основывать свои расчеты лишь на этих данных.
    Распространены три метода борьбы с гонками: введение тактирования, построение противогоночных схем и учет минимального времени задержки. Наиболее универсальным, эффективным и поэтому широко используемым методом борьбы с гонками является тактирование.
    Основная суть его заключается в следующем. По всему цифровому устройству разводится единая система тактирующих (синхронизирующих) сигналов. В широко распространенной двухтактной или двухфазной системе синхронизации используются две периодические последовательности синхросигналов - синхросигнал С1 и синхросигнал С2. Взаимное расположение этих сигналов во времени показано на рис. 6б.
    Схема (рис. 6а) разделена штриховой линией на две части. Левая принимает и обрабатывает сигнал ВХОД: ее выходной сигнал Y1 является входным для схемы правой части, которая запоминает результат в триггере
    Тг.
    Рис. 5.6. Исключение помех, порожденных гонками, за счет тактирования

    62
    Если сигнал ВХОД каким-либо образом «привязан» к одной из синхросе-рий, например к С1, то этот сигнал будет изменяться только в момент поступления синхроимпульсов С1, а в промежутках между ними будет оставаться постоянным. Схема, показанная в левой части рис. 6а, имеет параллельные пути, в ней существуют гонки и возможно появление на выходе Y1 ложных сигналов. На рис. 6б эту ситуацию в общем виде отражают интервалы неопределенности трактов чет и нечет. На входной конъюнктор С правой части схемы подается сигнал син-хросерий С2.
    Обязательным условием является такой временной сдвиг С2 по отношению к
    С1, который превышает самый длинный интервал неопределенности, т. е. самую большую задержку из всех параллельных трактов схемы. Это значит, что сигнал С2 откроет конъюнктор С заведомо после окончания всех переходных процессов в схеме и пропустит логически правильное, не искаженное гонками установившееся значение функции Y1. Как правило, конъюнктор С вводят в состав триггера, что делает триггер синхронным.
    Такой триггер переключается только по команде синхросигнала и не воспринимает информацию при его отсутствии. Конъюнктор С применяют и без триггера - в тех случаях, когда запоминать выходной сигнал схемы не требуется, а нужно лишь очистить его от помех, порожденных гонками.
    Тогда сигнал, открывающий конъюнктор С, обычно называют не синхросигналом, а стробом, а сам процесс отсечки помех - стробированием.
    Система синхронизации едина для всего цифрового устройства, и интервал между синхросигналами задается в начале разработки.
    Схемотехник, разрабатывая каждый фрагмент логической схемы, так подбирает число последовательно включаемых в нее элементов и их типы, чтобы все переходные процессы в этом фрагменте с гарантией закончились к моменту поступления очередного синхросигнала.
    Достоинство синхронизации как средства борьбы с гонками в том, что разработчику не требуется вникать в специфику протекания переходных процессов, в характер возникающих гоночных ситуаций, не нужно знать минимального значения задержки и т. д. Все, что должен знать разработчик - это максимально возможную задержку самого длинного тракта логической схемы, а это легко вычисляется по паспортным данным используемых элементов.
    Противогоночные схемы - это схемы, построенные так, что в них если и возникают, то только неопасные гонки, то есть такие, при которых отсутствует риск появления на выходе сигналов, не предусмотренных логическим выражением. Примером неопасной гонки может служить гонка фронта по двум трактам, в каждом из которых содержится четное (или в каждом нечетное) число инверторов и которые объединяются на выходах элементом ИЛИ: кто бы ни выиграл гонку, результат все равно будет верный, изменится лишь задержка его получения. Для исключения опасных гонок можно вводить в схему дополнительные связи и элементы так, чтобы нежелательные параллельные пути запирались самим входным сигналом еще

    63 до достижения им опасной развилки тракта. Есть целый ряд других приемов, используемых при построении противогоночных схем.
    Полезным свойством противогоночных схем оказывается их способность обрабатывать данные по мере поступления, асинхронно, то есть без привязки к тактирующим сигналам и связанным с этим потерям времени.
    Однако процедура построения таких схем очень сложна, она требует скрупулезного изучения характера протекания переходных процессов, выявления всех возможных гоночных путей, отделения опасных состязании от неопасных. С ростом числа элементов схемы разработчик очень скоро оказывается в плену невыполнимого по объему перебора вариантов.
    Специалистами разработан ряд удачных, остроумных асинхронных противогоночных схем, в основном - сложных типов триггеров с числом элементов в пределах десятка. Они широко применяются, в том числе и в тактируемых устройствах, для быстрого выполнения операций внутри самого такта.
    Учет минимального времени задержки. Если известно минимально возможное время задержки элемента, то во многих практически важных случаях можно постулировать отсутствие гонок. Пусть в схеме на рис. 5а глубина цепочки Чет настолько больше глубины цепочки Нечет, что задержка в длинной цепочке, даже если последняя состоит только из самых быстрых элементов, будет все равно больше задержки сигнала в короткой цепочке, даже если в нее попадут только самые медленные элементы. Схема со столь большой разницей в длине путей всегда будет вести себя так, как показано на рис. 5в. То есть, пока входной сигнал равен единице, помеха на выходе не появится. Помеху после выключения входного сигнала можно ликвидировать введением дополнительной блокирующей связи. Можно, например, взять в качестве выходного элемента трехвходовой элемент и на его третий вход подать сам входной сигнал. В этом случае выход будет заперт сразу после перехода входного сигнала в нуль. Несложно предложить и другие формы использования для борьбы с гонками сведений о минимально возможной задержке или о наибольшей возможной кратности максимального и минимального значений задержки.
    По возможностям применения этого метода борьбы с гонками разработчики, использующие различную элементную базу, находятся в неодинаковых условиях, В лучшем положении обычно находятся разработчики схем, предназначенных для реализации на поверхности кристалла. Результирующая задержка элементов на кристалле определяется длиной и шириной проводников межэлементных связей и временем переключения транзисторов, которое в свою очередь зависит от геометрических размеров элементов его маски. На все эти размеры разра- ботчик схемы кристалла в может влиять, что позволяет ему в случаях, когда это важно, делать задержку одной группы элементов гарантированно больше задержки другой группы. Правда, по мере роста числа элементов, размещаемых на одном кристалле, разработчик логических схем все реже допускается к воздействию на геометрические размеры элементов маски.

    64
    Технология автоматизированного проектирования схем на перспективных матричных кристаллах разрешает схемотехнику лишь соединять между собой проводниками стандартной ширины уже размещенные на кристалле стандартные транзисторы или логические элементы. Однако и здесь положение разработчика все-таки лучше, чем того, который использует отдельные микросхемы, поскольку задержки однотипных элементов, расположенных на одном кристалле, существенно между собой коррелируют, чего нельзя сказать о микросхемах даже одной закупочной партии, одного изготовителя. Эта корреляция позволяет изготовителю кристаллов после проведения соответствующих исследований постулировать для схемотехника максимально возможную кратность задержек элементов, расположенных на одном кристалле данного типа. С точки зрения борьбы с гонками это во многих случаях не хуже, чем знание минимально возможной задержки. Поэтому внутри интегральных схем метод борьбы с гонками за счет назначения параллельными путями таких соотношений задержек, при которых опасные гонки невозможны, используется, особенно при построении небольших узлов - типа триггеров, счетчиков и т. п.
    В худшем положении находится разработчик, использующий готовые микросхемы, поскольку юридического документа о минимальном значении задержки он чаще всего не имеет. Правда, и тут опытный инженер может утверждать, что при использовании любой современной серии элементов и при любом их сочетании пробег сигнала по цепочке из, скажем, 64 элементов длится «наверняка» дольше, чем пробег сигнала по параллельной ветви из одного элемента. На сегодня нет серий, задержка элементов внутри которых отличалась бы в 64 раза. И в 32 раза тоже нет. И в 16, пожалуй, не найдется.
    Относительно восьми можно задуматься, в защиту четырех большинство специалистов серьезно спорить уже не станут, а отклонение времени задержки вдвое встретится в большинстве серий. Таким образом, если отсутствие гонок обосновывается большой кратностью числа элементов параллельных путей, то нужно отдавать себе отчет в том, что есть зоны явно допустимых решений (например, кратность 64) и зоны явно недопустимых
    (кратность 2), а граница между ними не определена. Каждый разработчик определяет ее для себя индивидуально в зависимости от опыта, соотношения поощрения за экономичную схему и наказания за сбои в ней из-за гонок.
    Проблема из технической становится психологической, организационной. В инженерной практике пользуются этим приемом и строят схемы, в которых в принципе, юридически, гонки возможны, но по утверждению разработчика их «наверняка» не будет.
    В последние годы растет интерес к еще одному методу борьбы с гонками -построению самосинхронизирующихся схем. Рабочие узлы в этом случае строятся непротивогоночными, но они дополняются специальными схемами, которые обнаруживают факт окончания переходных процессов и вырабатывают разрешающий сигнал для следующих схем, играющий в каком-то смысле роль «асинхронного синхросигнала». Это направление рассматривается как весьма перспективное для построения БИС и особенно

    65 сверхБИС, где применение обычной синхронизации встречает ряд трудностей. Однако в схемах и микросхемах обычного размера и технологии это направление пока не находит применения ввиду как сложности построения такого рода схем, так и, приблизительно, удвоения их ап- паратурных затрат
    Проблема гонок в цифровой схемотехнике является очень серьезной.
    Большинство трудно обнаруживаемых и удивительно разнообразно проявляющихся ошибок в функциональных схемах связано с гонками, возможности появления которых разработчик не заметил. Основная причина
    - ограниченность поля внимания человека. При разработке сложной схемы все внимание поглощается конструированию главного пути распространения сигнала, непосредственно решающего поставленную задачу. При этом побочные, не нужные для дела пути выпадают из поля зрения, а в них и
    «таится погибель».
    Гонки во вновь разработанной схеме нужно искать специально. Если есть такая возможность, то наиболее надежным и простым методом является моделирование работы схемы с помощью специальных программ. При поиске гонок «вручную» сначала нужно выявить все подозрительные места и затем методически их исследовать. Обнаружению таких мест способствуют специально предпринимаемые просмотры схемы, нацеленные на выявление всех возможных параллельных путей распространения сигнала. Полезен анализ временных диаграмм, в которых зоны неопределенности указывают на возможность появления ложных сигналов.
    В борьбе с гонками наряду с излагаемым подходом, ориентированным на гарантированную работу даже при наиболее неблагоприятном сочетании задержек, существуют менее строгие походы, в основе которых лежит утверждение, что худший случай встречается редко, поэтому для оценки задержки схемы можно брать некоторое вероятностное значение, меньшее, чем максимально возможное время задержки. Подобные подходы, против которых в принципе возражать нельзя, для цифровой техники оказываются плодотворными, только если есть возможность провести абсолютно полное тестирование готового устройства во всех возможных режимах и условиях окружающей среды.
    Если же надежность работы устройства основывается лишь на ста- тистической правильности работы отдельных его цепей, то, когда цепей много, что типично для цифровой техники, даже небольшое уменьшение надежности срабатывания элементов приводит к резкому снижению надежности всего устройства. Можно подсчитать, что если в каждой цепочке допустить вероятность помехи из-за гонок всего в I %, то вероятность работоспособности устройства, содержащего 100 таких цепочек, будет около
    37 %. В среднем из каждых трех устройств, два будут неработоспособны.
    Поэтому приемами, приносящими в жертву надежность срабатывания отдельных цепочек, в цифровой технике пользоваться не следует.
    3. Гонки по входу Гонки по входу возникают, когда ветвящийся сигнал поступает на элементы, имеющие разброс по уровню срабатывания

    66
    (рис. 7а), а фронт этого сигнала излишне пологий (рис. 7б). Если длительность фронта входного сигнала заметно больше времени срабатывания элементов, то где-то в середине фронта будет существовать отрезок времени, когда с точки зрения одного элемента входной сигнал уже равен 1, а с точки зрения другого - еще равен 0. Элементы будут реагировать на один и тот же сигнал как на два различных, а такая ситуация при проекти- ровании схемы ее алгоритмом не предусматривается. В результате схема в течение этого времени может выработать ложные сигналы. Это явление и называют «гонки по входу». Гонки по входу не наблюдаются, если логическая схема собрана на элементах одной серии микросхем.
    Потенциально опасны схемы, собранные из элементов различных серий, имеющих одинаковый уровень сигналов, но существенно различные времена задержек и фронтов. Гонки по входу возникают в схемах некоторых БИС, если их межэлементные связи сильно заваливают фронты. Опасностью возникновения гонок по входу объясняются ограничения на максимальную длительность фронтов входных сигналов, приводимые в паспортах многих микросхем.
    Рисунок 7. - Гонки по входу: иллюстрация условий их возникновения
    Если нет возможности увеличить крутизну фронта, то единственным средством борьбы с гонками по входу остается тактирование, поскольку в тактированном устройстве выходной сигнал схемы не используется до тех пор, пока в этой схеме не окончатся абсолютно все переходные процессы независимо от их физической природы. Однако тактирование не спасает от гонок по самому тактирующему входу. Поэтому, если крутизна фронтов синхросигналов мала, то нужно применять такие синхронные триггеры, в которых гонки по входу не возникают.
    1   2   3   4   5   6   7   8   9   ...   16


    написать администратору сайта