Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Аппаратные средства встроенных систем



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

Рис.2. Структура аппаратных средств систем управления

Сигналы о состоянии объекта управления поступает во встроенную систему в общем случае через аналоговые датчики. Преобразование этих сигналов в цифровую форму выполняет узел аналого-цифрового преобразования (АЦП или ADC), в состав которого входит устройство выборки-хранения (УВХ). Узел обработки информации в соответствии с целевой функцией формирует сигналы для устройства отображения информации и для воздействия на объект управления через узел цифро-аналогового преобразования (ЦАП или DAC) и исполнительные механизмы (в общем случае аналоговые устройства).

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

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

Для реализации задач, требующих высокой производительности и большого рынка сбыта могут быть разработаны специализированные схемы (Application-Specific Circuits – ASICs) или по-другому полностью заказные СБИС. Однако стоимость разработки и изготовления таких кристаллов может быть очень большой. Например, стоимость комплекта масок для формирования топологии на кристалле может достигать 100000 – 1000000 долларов. Остается фактом экспоненциальный рост в последние годы стоимости комплекта масок. Кроме того этот подход имеет длительный период проектирования при отсутствии гибкости: корректировка ошибок проекта обычно требует нового комплекта масок и нового запуска производства.

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

1.1. Организация аппаратных средств встроенных

микропроцессорных систем

Под микропроцессорной системой (МПС или MPS) будем понимать функционально законченное изделие, содержащее хотя бы один процессор (часто говорят центральный процессорный узел ЦПУ или CPU), реализованный в виде БИС или СБИС. На рис.3 приведена структурная схема простой MPS. Эта схема является частью понятия организации MPS, которое включает состав программно-аппаратных средств, связи между ними и их функциональные характеристики. Кроме CPU простая MPS содержит основную память (ОП или Main Memory – MM) для хранения программ и данных, устройства ввода-вывода (УВВ или I/O), связывающие MPS с внешним миром и магистраль (М или System Bus – SB), объединяющую эти три компонента в единое целое. Основная память в общем случае включает в себя два типа устройств: оперативные запоминающие устройства (ОЗУ) и постоянные запоминающие устройства (ПЗУ).

Рис.3. Структурная схема простой микропроцессорной системы

CPU считывает из MM команды, образующие программу, декодирует их. Команда – это элементарное действие, которое определяется типом используемых данных, источником их получения, операцией над ними, приемником результата, а также источником получения следующей команды. По результату декодирования ПУ выполняет выборку данных из MM или I/O, выполняет их обработку и пересылает результат обратно в MM или I/O – программно-управляемый обмен. Передача данных между MM и I/O, минуя CPU, выполняется по каналу прямого доступа в память.

С точки зрения CPU MM и I/O представляют собой линейно упорядоченный набор байт со своими номерами (адресами). Диапазон значений адресов памяти, которые может сформировать CPU для передачи по магистрали, называют логическим (линейным или исполнительным) адресным пространством. Диапазон адресов, реализованных в MM и I/O, называют физическим адресным пространством.

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

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

На рис.4 приведена обобщенная структурная схема CPU. Узел интерфейса (УИ) обеспечивает доступ к магистрали MPS.

Рис.4. Структурная схема процессора

Кэш память предназначена для улучшения взаимодействия основной памяти и процессорного ядра.

Узел управления памятью (УУП или MMU) в общем случае предназначен для организации виртуального адресного пространства.

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

Арифметико-логическое устройство (АЛУ) выполняет операции целочисленной арифметики и логические операции над данными из внешней памяти или узла регистров (УР), а узел арифметики с плавающей запятой (УПЗ) выполняет операции над данными, представленными в одноименном формате.

Узел регистров предназначен для хранения данных и адресов внешней памяти процессора.

Среди регистров CPU выделяется счетчик команд (РС – Program Counter), находящийся в УВК и указывающий на адрес команды, которую необходимо выполнить. В УВК находится также регистр команд (IR – Instruction Register), содержащий команду, выполняемую в данный момент.

CPU выполняет каждую команду за несколько шагов:

1. Вызывает следующую команду из памяти и переносит ее в регистр команд.

2. Меняет содержимое счетчика команд, который теперь указывает на следующую команду.

3. Определяет тип выбранной команды.

4. Если команда использует слово из памяти, определяет, где находится это слово.

5. Передает слово, если это необходимо, в регистр CPU.

6. Выполняет команду.

7. Переходит к шагу 1 для выполнения следующей команды.

Такую последовательность шагов называют выборка-декодирование-исполнение.

1.2. Элементы архитектуры процессоров встроенных систем

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

Согласно [2] архитектура процессора определяется следующими элементами:

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

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

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

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

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

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

1.2.1. Множество команд

Команда состоит из кода операции и некоторой дополнительной информации, например, откуда поступают операнды и куда должны отправляться результаты - это формат команды.

Через код операции передается информация о выполняемых командой действиях.

Механизм определения, где находятся операнды (их адреса), называют адресацией. В команде может присутствовать ноль, один, два или три адреса.

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

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

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

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

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

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

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

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

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

1.2.2. Программная модель

1.2.2.1. Регистры

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

Регистры можно разделить на адресные регистры (АР или AR - Address Register), регистры данных (РД или DR – Data Register), регистры общего назначения (РОН или GPR – General Purpose Register) и специальные регистры (СР или DR – Dedicated Register).

Адресные регистры содержат адреса ММ. Регистры данных содержат промежуточные результаты вычислений и могут специализироваться на хранении различных типов данных (целых чисел или в формате с плавающей запятой).

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

Специальные регистры включают счетчик команд и другие регистры с особой функцией (регистры специальных функций). Некоторые СР доступны только в особом режиме работы CPU – привилегированном или супервизорном. Эти регистры используются только операционной системой (ОС) – специальной программой, управляющей выполнением пользовательских программ. Есть один специальный регистр, который представляет собой привилегированно-пользовательский гибрид. Это флажковый регистр или PSW (Program State Word – слово состояния программы). PSW содержит различные биты, которые нужны для работы CPU. Самые важные биты - это коды условий. Они устанавливаются в каждом цикле с участием АЛУ и отражают состояние результата выполненной операции. Биты кода условий включают:

N – результат отрицательный (Negative);

Z – результат равен 0 (Zero);

C – перенос из самого левого бита (Cary out);

V – результат вызвал переполнение (oVerflow);

AC – перенос из третьего бита (Auxiliary cary – служебный перенос);

P – результат четный (Parity).

Коды условий используются в командах условного перехода. Другие поля PSW указывают режим CPU (пользовательский или привилегированный), трассовый бит (используется для отладки), уровень приоритета процессора, а также статус разрешения прерываний.

Указатель стека (SP – Stack Pointer) содержит адрес вершины стека. Стек - это память магазинного типа с дисциплиной обслуживания LIFO, организованная в MM и содержащая данные и/или адреса возврата. Стек может содержать некоторую структуру данных, местоположение которой определяется двумя указателями SP и LV, где LV – нижняя граница расположения данных в стеке. Такую структуру называют фреймом (кадром) стека.

В некоторых процессорах только часть РОН «видны» программе в любой момент времени. Эта особенность, называемая регистровыми окнами. Она предназначена для повышения эффективности вызова подпрограмм. Регистровые окна имитируют стек. То есть существует несколько наборов регистров, точно также как и несколько фреймов в стеке. Специальный регистр CWP (Current Window Pointer – указатель текущего окна) содержит номер регистрового окна, доступного программе. Команда вызова подпрограммы такого процессора скрывает старый набор регистров и путем изменения CWP предоставляет новый набор, который может использовать вызванная подпрограмма. Однако некоторые регистры могут перекрываться, что обеспечивает эффективный способ передачи параметров между подпрограммами.

1.2.2.2. Типы данных

Процессоры поддерживают различные типы данных на уровне системы команд. Типы данных можно разделить на две категории: числовые и нечисловые.

Среди числовых типов данных главными являются целые числа различной длины (8,16,32 или 64 бита). Некоторые процессоры поддерживают целые числа и со знаком и без знака. Знаковый бит является старшим битом слова, а отрицательные числа представляются в дополнительном коде.

Нечисловые типы данных используются для представления символьной информации. Наиболее распространенными символьными кодами являются ASCII (7-битовый символ) и UNICODE (16-битоаые символы). На уровне команд часто имеются особые команды, предназначенные для операций с цепочками символов. Эти цепочки иногда разграничиваются специальными символами в конце. Вместо этого для определения конца цепочки может использоваться поле длины цепочки. Команды могут выполнять копирование, поиск, редактирование цепочек и другие действия.

1.2.3. Модели памяти

1.2.3.1. Адресное пространство

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

Байты обычно группируются в 4-байтовые или 8-байтовые слова. Некоторые процессоры требуют, чтобы слова были выровнены в своих естественных границах. Так, например, 4-байтовое слово может начинаться с адреса 0,4,8 и т.д., но не с адреса 1 или 2. Точно так же слово из 8 байтов может начинаться с адреса 0,8 или 16, но не с адреса 4 или 6. Выравнивание адресов требуется довольно часто, поскольку память работает более эффективно. Возможность считывать слова с произвольными адресами требует усложнения процессора и увеличивает времени доступа к памяти.

1.2.3.2. Порядок байт

Порядок байт важен для размещения в памяти числовых типов данных. Порядок, называемый обратным (big-endian), подразумевает, что старший значащий байт числа размещается по младшему адресу памяти. Порядок, называемый прямым (little-endian ), подразумевает, что старший значащий байт числа размещается по старшему адресу памяти. В качестве примера рассмотрим отображение структуры данных S, представленной на Си для 32-разрядного процессора:

В случае порядка big-endian в памяти будут следующие значения:

содержимое 11 12 13 14 (x) (x) (x) (x)

адрес 00 01 02 03 04 05 06 07

содержимое 21 22 23 24 25 26 27 28

адрес 08 09 0A 0B 0C 0D 0E 0F

содержимое 31 32 33 34 ‘L’ ‘M’ ‘N’ ‘O’

адрес 10 11 12 13 14 15 16 17

содержимое ‘P’ ‘Q’ ‘R’ (x) 51 52 (x) (x)

адрес 18 19 1A 1B 1C 1D 1E 1F

содержимое 61 62 63 64 (x) (x) (x) (x)

адрес 20 21 22 23 24 25 26 27

В случае порядка little-endian в памяти будут следующие значения:

содержимое 14 13 12 11 (x) (x) (x) (x)

адрес 00 01 02 03 04 05 06 07

содержимое 28 27 26 25 24 23 22 21

адрес 08 09 0A 0B 0C 0D 0E 0F

содержимое 34 33 32 31 ‘L’ ‘M’ ‘N’ ‘O’

адрес 10 11 12 13 14 15 16 17

содержимое ‘P’ ‘Q’ ‘R’ (x) 52 51 (x) (x)

адрес 18 19 1A 1B 1C 1D 1E 1F

содержимое 64 63 62 61 (x) (x) (x) (x)

адрес 20 21 22 23 24 25 26 27

1. 2.3.3. Когерентность памяти

Еще один аспект модели памяти – семантика памяти. Естественно ожидать, что команда чтения из памяти (Load), которая встречается после команды записи в память (Store) и которая обращается к тому же адресу, возвратит только что сохранное значение, т.е. действия с памятью согласованы (когерентны). Однако в процессорах с параллельным выполнением команд (конвейерные процессоры) преобразования переупорядочиваются. Таким образом, существует реальная опасность, что память не будет действовать так, как ожидалось. Ситуация осложняется в случае с мультипроцессором, когда каждый процессор посылает разделяемой памяти поток запросов на чтение и запись, которые тоже могут быть пере упорядочены.

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

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

Концепция выполнение инструкций по порядку.

1. Считывание инструкции.

2. Если все операнды инструкции доступны, то она передаётся на выполнение соответствующему исполнительному модулю, иначе процессор останавливается, ожидая готовности операндов.

3. Инструкция выполняется в соответствующем модуле.

4. Модуль записывает результат обратно в регистровый файл.

Концепция выполнение не по порядку.

1. Считывание инструкции.

2. Помещение инструкции в очередь.

3. Инструкция находится в очереди до тех пор, пока её операнды не станут доступны. Таким образом, инструкция может покинуть очередь прежде, чем инструкция попавшая туда раньше.

4. Выбранная из очереди инструкция выполняется в соответствующем модуле.

5. Результат помещается в очередь.

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

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

1. 2.3.4. Защита памяти

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

1. 2. 4. Модель прерываний

Прерывания – это изменения в потоке управления, вызванные какими-либо событиями. Эти события могут быть внешними по отношению к процессору (инициируются устройствами ввода-вывода) - асинхронные прерывания или вызваны результатами выполнения команд – синхронные прерывания (системные прерывания, исключения или ловушки). Прерывание останавливает работу программы и передает управление не содержащейся в явном виде в программе подпрограмме обработки прерывания (ISR – Interrupt Serves Routine или interrupt handler – обработчик прерывания) для выполнения особых действий. Адрес первой команды ISR определяется вектором прерывания, сопоставленным тому или иному прерыванию. После завершения ISR управление передается прерванной программе. В случае асинхронного прерывания программа должна продолжить процесс в том же самом состоянии, в котором находилась, когда произошло прерывание. Соответствующую ISR называют прозрачной.

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

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

Физический интерфейс простой системы прерываний может быть представлен единственной линией IRQ (Interrupt Request – запрос прерывания). Высокий уровень напряжения на линии IRQ, например, воспринимается как запрос на прерывание. На линию IRQ могут быть мультиплексированы запросы от нескольких источников. Однако в этом случае после принятия общего запроса к обслуживанию возникает задача идентификации источника, выставившего запрос, и передачи управления на соответствующую подпрограмму ISR. Эта задача решается только программным методом с помощью специальной процедуры, называемой полингом (polling). Функция полинга состоит в последовательном опросе состояния всех устройств (чтение регистров состояния) для выявления готовности к обслуживанию.

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

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

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

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

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

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

1.2. 5.Модель управления памятью

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

Виртуальная память основана на разделении понятий адресного пространства и адресов памяти (физические адреса). Виртуальное адресное пространство – это множество адресов, к которым может обращаться программа данного CPU, а реальные адреса MM MPS – физическим адресным пространством. Виртуальное адресное пространство CPU намного больше его адресного пространства, определяемого разрядностью его адресного регистра.

1.2.5.1. Страничная организация памяти

Пусть адресное пространство CPU равно 65536 байт, а физическое адресное пространство MPS содержит ячейки с 0 по 4095. Можно было бы настроить CPU MPS так, чтобы при обращении к адресу 4096 должно использоваться слово из памяти 0, а при обращении к адресу 4097 – слово из памяти с адресом 1, при обращении к адресу 8191 – слово из памяти с адресом 4095. Другими словами, определено отображение из адресного пространства в действительные адреса памяти – механизм трансляции адресов. Что произойдет, если CPU обратится к адресу 8192. В CPU без виртуальной памяти произойдет исключение по несуществующему адресу физической памяти. В CPU с виртуальной памятью будет иметь место следующая последовательность шагов:

1. Байты из MM будут отправлены во вторичную память.

2. Байты с 8192 по 12287 будут загружены из вторичной памяти в MM.

3. Отображение адресов изменится: теперь адреса с 8192 по 12287 соответствуют ячейкам физической памяти с 0 по 4095.

4. Выполнение программы продолжится, как ни в чем не бывало.

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

Виртуальное адресное пространство разбивается на ряд страниц равного размера, обычно от 512 до 64 Кбайт, хотя иногда встречается 4 Мбайт. Размер страницы всегда должен быть степенью двойки. Физическое адресное пространство тоже разбивается на части равного размера таким образом, чтобы каждая такая часть MM вмещала ровно одну страницу. Эти части MM называют страничными кадрами.

Рассмотрим для примера, как можно 32-разрядный логический адрес (пусть виртуальная память тоже 32 разряда, а размер страницы 4 Кбайт) отобразить на физический адрес MM объемом 32 Кбайт. В CPU это отображение выполняет MMU. Преобразование 32-битного логического адреса в 15-битный адрес MM (8 страничных кадров) выполняется следующим образом. Узел MMU разделяет логический адрес на 20-битный номер виртуальной страницы и 12-битовое смещение внутри страницы. Номер виртуальной страницы используется в качестве индекса в таблице страниц для нахождения нужной страницы. На рис.5 номер виртуальной страницы равен 5, поэтому из таблицы выбирается элемент 5 с номером страничного кадра 6.

Сначала MMU проверяет, находится ли нужная страница в текущий момент в MM, читая бит присутствия в данном элементе таблицы страниц. В примере этот бит равен 1, т.е. страница в памяти.

Рис.5. Формирования адреса MM

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

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

При обращении программы к странице, которая отсутствует в памяти ее нужно вызвать из вторичной памяти. Однако, чтобы освободить для не место, нужно во вторичную память отправить какую-нибудь страницу. По одному из алгоритмов удаляется та страница, которая использовалась наиболее давно, поскольку вероятность того, что она будет в текущем рабочем множестве, очень мала. Этот алгоритм называется LRU (Last Recently Used – наиболее давно использовавшиеся элементы). Иногда LRU приводит к патологическим ситуациям (например программа, цикл которой простирается на несколько страниц).

Другой алгоритм – FIFO (First-in First-out – первым поступил, первым выводится) удаляет ту страницу, которая раньше всех загружалась, независимо от того, когда в последний раз производилось обращение к этой странице. С каждым страничным кадром связан отдельный счетчик. Изначально все счетчики установлены на 0. После ошибки из-за отсутствия страниц счетчик каждой страницы, находящейся в памяти, увеличивается на 1, а счетчик только что вызванной страницы принимает значение 0. Когда нужно выбрать страницу для удаления, выбирается страница с самым большим значением счетчика.

Если размер рабочего множества больше, чем число допустимых страничных кадров, ни один алгоритм не дает хороших результатов, и ошибки из-за отсутствия страниц будут происходить часто. Если программа постоянно вызывает подобные ошибки, то говорят, что наблюдается пробуксовка (thrashing).

Если страница, которую нужно удалить не менялась, с тех пор как ее считали, то необязательно ее записывать обратно во вторичную память, поскольку точная копия уже существует. В MMU содержится бит для каждой страницы, который равен 0 при загрузке страницы и принимает значение 1, когда изменяются данные в этой странице. По этому биту ОС определяет необходимость перезаписи страницы.

1.2.5.2. Сегментация памяти

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

1. Таблица символов, которая содержит имена и атрибуты переменных.

2. Исходный текст, сохраняемый для листинга.

3. Таблица, содержащая все использующиеся целочисленные константы и константы с плавающей запятой.

4. Дерево, содержащее синтаксический анализ программы.

5. Стек, используемый для вызова процедур в компиляторе.

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

Что произойдет, если программа содержит очень большое число переменных? Адресное пространство, предназначенное для таблицы символов, может переполниться, даже если в других таблицах много свободного места.

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

Так как каждый сегмент основывает отдельное адресное пространство, разные сегменты могут изменяться независимо друг от друга.

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

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

Разные сегменты могут иметь разные виды защиты. Например, сегмент с процедурой можно определить “только для выполнения”, запретив тем самым считывание и запись в него. Для массива с плавающей запятой разрешается только чтение и запись, но не выполнение и т.д. Такая защита часто помогает обнаружить ошибки в программе.

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

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

1.3. Типы процессоров

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

Микроконтроллер (μC) представляет собой объединение на одном кристалле процессорного узла, постоянной памяти для хранения программ (десятки килобайт), оперативной памяти для хранения данных (несколько килобайт) и набора различных устройств ввода-вывода. μC широко применяются в недорогих встроенных системах реального времени.

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

Выделяют процессоры, основанные на SoC. Они содержат процессорное ядро и большое количество периферийных интерфейсов [3].

Системы на кристалле могут содержать несколько процессорных узлов в общем случае разнородных. Такие устройства называют мультипроцессорными системами на кристалле (MPSoC), например [4].

Цифровой сигнальный процессор (Digital signal processor - DSP) [5] — это специализированный микропроцессор, предназначенный для цифровой обработки сигналов в реальном масштабе времени. Задачи цифровой обработки сигналов имеют несколько общих моментов.

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

Во-вторых, обычно выполняются сложные математические операции, включающие фильтрацию, идентификацию, спектральный анализ, машинное обучение и другие. Это интенсивные операции, для поддержки которых и разработаны DSP, например, операция «умножение с накоплением» (MAC) А = A + X × B обычно исполняется за один такт, где А – аккумулятор, Х – входной отсчет, а В – некоторый постоянный коэффициент.

Коммуникационные микропроцессоры, например [6], разработаны для интеграции с сетевым и другим коммуникационным оборудованием и состоит из высокопроизводительного процессорного ядра, гибкого контроллера памяти и коммуникационного процессорного модуля (CPM). CPM содержит независимый специализированный RISC процессор (CP). Этот процессор разгружает центральный процессорный узел от задач взаимодействия с периферийным оборудованием.

CPM содержит:

– последовательные коммуникационные контроллеры (SCC), поддерживающие протоколы Ethernet, ATM, HDLC и другие;

– последовательные контроллеры администрирования (SMC);

– интерфейсы с временным разделением каналов;

– интерфейсы характерные для обычных микропроцессорных систем.

Графические процессоры (GPU) [7] специализированные процессоры, разработанные для выполнения вычислений требуемых для визуализации графики. Они поддерживают 3D графику, построение теней и цифровое видео. Доминируют в этой области Intel, NVIDIA иAMD.

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

Обычно GPU потребляют много энергии и поэтому не находят применения для встроенных приложений с жесткими требованиями к энергопотреблению.

1.4. Формы параллелизма в процессорах

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

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

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

Рассмотрим следующие операторы Си кода:

Последние два оператора являются независимыми и, следовательно, могут выполняться параллельно или в обратном порядке. Это не повлияет на результат.

Перепишем эту последовательность следующим образом, и она перестанет быть независимой:

В этом случае последний оператор зависит от предыдущего.

Компилятор может анализировать зависимости между операторами и формировать параллельный код, если целевая микропроцессорная система поддерживает параллельную работу. Такой анализ называют анализом потока данных. Сегодня многие микропроцессоры поддерживают параллельное выполнение, используя архитектуру с множественной выдачей потоков команд или VLIW (Very Large Instruction Word, очень длинный формат команды).

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

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

Также как императивные программы могут выполняться последовательно или параллельно, конкурентные программы могут выполняться последовательно или параллельно. Последовательное выполнение конкурентной программы сегодня обычно выполняется многозадачной операционной системой, которая чередует выполнения множества задач в простом последовательном потоке команд. Аппаратура может распараллелить это выполнение, если процессор поддерживает множественную выдачу или VLIW.

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

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

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

1.4.1. Конвейеризация

Большинство современных процессоров являются конвейерными. На рис. 6 [8] приведен простой пятиступенчатый конвейер для 32-разрядного

Рис. 6. Простой конвейер

процессора, где:

fetch – ступень выборки команды;

decode – ступень декодирования команды;

execute – ступень выполнения команды;

memory – ступень чтения или записи в память;

writeback – ступень обратной записи;

РС – счетчик команд;

Add –устройство сложения;

Mux – мультиплексор;

Instruction memory – память команды;

Decode – устройство декодирования;

Zero? – устройство определения равенства 0 операнда;

Register bank – банк регистров;

ALU – арифметико-логическое устройство;

Data memory – память данных;

data hazard (memory read or ALU result) - риск сбоя данных при чтении памяти или результата ALU;

data hazard (computed branch) - риск сбоя данных при безусловном переходе;

control hazard (conditional branch) - риск сбоя управления;

branch taken –переход по команде ветвления.

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

На ступени выборки команды РС задает адрес памяти команд, которая содержит кодированные 32-разрядные слова команд. На этой ступени РС увеличивается на 4 (байта), указывая на адрес следующей команды, за исключением команд условного перехода, которые сами обеспечивают установку нового адреса в РС.

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

На ступени выполнения, выбранные из банка регистров или из РС (для команд безусловного перехода) данные преобразуются с помощью ALU.

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

На ступени обратной записи выполняется запоминание результата в регистровом файле.

В случае DSP добавляется одна или две ступени для выполнения умножения и вычисления адресов двух портовой памяти с помощью отдельных ALU. Двух портовая память допускает одновременный доступ к двум операндам.

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

Слева на рисунке показаны одновременно используемые аппаратные

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

Таблица распределения показывает последовательность команд A, B, C, D, E программы. В цикле 5 выбирается Е в то время как D читает из банка регистров, С использует ALU, В читает или записывает в память данных, а А записывает результат в банк регистров. Запись А происходит в цикле 5, а чтение В в цикле 3. Таким образом значение прочитанное В не может быть значением, записываемым А. Это вызывает риск сбоя данных при чтении (на рис.6. отмечено пунктирной линией). Обычно программист предполагает А выполняется перед В и результат А доступен В, что в действительности не так.

Рис.7. Таблица распределения для конвейера на рис. 6

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

Более сложное решение основано на взаимоблокировке, когда аппаратура декодирует В и обнаруживает, что В читает регистр записываемый А (риск сбоя), то выполнение В задерживается на три такта пока А не завершит ступень обратной записи. Это иллюстрирует рис. 8.

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

«пузырей».

Еще более сложной техникой является выполнение с изменением последовательности, когда аппаратура обнаруживает риск сбоя и вместо задержки выполнения В продолжает выборку С и если С не читает регистры записываемые А или В и не записывает регистры читаемые В, тогда продолжается выполнение С перед В. Это уменьшает число «пузырей».

Рис.8. Таблица распределения для конвейера на рис. 6 с взаимоблокировкой когда В

читает регистр, записываемый А.

Другая разновидность рисков сбоя конвейера на рис. 6 – риск сбоя управления выборкой команд. Команда условного перехода изменяет РС, если определенный регистр равен 0. В этом случае, если А является командой условного перехода, она достигает ступени чтения или записи в память перед тем как изменяет РС. Следующие за А команды будут выбраны, декодированы, но в какой то момент времени выясняется что их не нужно было исполнять.

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

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

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

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

1.4.2. Параллелизм уровня команд

Процессоры, поддерживающие параллелизм уровня команд (ILP) способны выполнять несколько независимых операций в каждом цикле команды. Рассмотрим четыре основных типа ILP: процессоры CISC, параллелизм части слова, суперскалярные процессоры и процессоры VLIW.

Процессоры со сложными командами (точнее со специализированными) называют CISC (complex instruction set computer) процессорами в противоположность RISC (reduced instruction set computers) процессорам с сокращенным множеством команд.

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

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

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

Суперскалярные процессоры [ 10 ] используют обычное множество команд, но аппаратура может одновременно распределять несколько команд по индивидуальным узлам обработки, когда обнаруживается, что такое распределение не изменяет поведения программы. Такие процессоры поддерживаю изменение последовательности выполнения, когда поздняя команда потока выполняется перед ранней.

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

Процессоры с архитектурой VLIW [ 1 ] часто используются во встроенных системах вместо суперскалярных для получения высокой повторяемости и предсказуемости времени выполнения программ. Так же как суперскалярные процессоры, VLIW процессоры включают несколько функциональных узлов, но вместо динамического определения какие команды могут выполняться одновременно каждая команда определяет то что каждый функциональный узел должен делать в отдельном цикле. Таким образом, VLIW объединяет несколько независимых операций в отдельную команду. Как и в суперскалярных процессорах множество операций выполняется одновременно на различном оборудовании. Однако порядок и одновременность выполнения фиксирована в программе в противоположность принятия решений на лету у суперскалярных процессоров. Это требует от программиста или компилятора обеспечить, чтобы одновременные операции были действительно независимыми. В обмен на эти дополнительные сложности в программировании время выполнения становится высоко повторяемым и предсказуемым. Для приложений требующих еще увеличения производительности VLIW процессоры могут быть усложнены.

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

1.5.Технологии памяти

Выбор технологии памяти имеет важное последствие для разработчика встроенной системы. Например, программиста беспокоит изменяться или нет данные после выключения питания или вхождения в режим энергосбережения. Память, содержимое которой теряется после пропадания питания, называют энергозависимой памятью (volatile memory). Обычно с ней ассоциируют оперативную память или память с произвольным доступом (RAM).

Встроенные системы без исключения нуждаются в сохранении данных даже при выключенном питании. Для этого существует несколько опций. Резервное батарейное питание является одной из них при котором энергия не исчезает. Батареи, однако, срабатываются, следовательно, требуется более совершенная опция в собирательном смысле известная как энергонезависимая память (non-volatile memory). Обычно с ней ассоциируют постоянную память (ROM).

1.5.1. Оперативная память

RAM (Random Access Memory) – память, в которой единицы данных (байты или слова) могут быть записаны и считаны относительно быстро. Статическая память SRAM (Static RAM) работает быстрее динамической памяти DRAM (Dynamic RAM), но больше по размеру (каждый бит занимает большую площадь на кристалле).

1.5.1. 1. Статическое ОЗУ

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

MPS может содержать несколько микросхем SRAM. Поэтому в интерфейс нужен сигнал для выбора одной из них, такой чтобы только нужная микросхема реагировала на обращение. Сигнал /CS (Chip Select – выбор кристалла) используется для этой цели. “/” означает, что активное значение сигнала равно 0.





Дата публикования: 2014-11-03; Прочитано: 974 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.056 с)...