Функционирование программируемого процессора
Основой работы любого компьютера является последовательность «выборка – декодирование - исполнение». Особенности в функционировании процессора определяется используемой системой команд. Первоначально команда содержала следующую информацию: 1. КОП – код операции, которую должен выполнить процессор (сложение, вычитание и т.д.); 2. адреса двух операндов – аргументов операции; 3. адрес ячейки памяти, в которую должен быть помещен результат операции; 4. адрес следующей команды. Такая команда, состоящая из пяти полей имеет следующий вид в двухбайтовом формате:
15 12 11 9 8 6 5 3 2 0
Структура процессора, отвечающая этой системе команд, может иметь следующий вид:
Y4 ОП Y3
Y1
Y7 Y5 Y6 Регистр команд
Y10 АЛУ Y11 Y8 Y12
Запись
Y9 Простой процессор, работающий с четырехадресной командой Алгоритм работы Рассмотрим алгоритм работы этого устройства на примере выполнения операции «Вычитание» после того, как в его регистр команд была переписана из ОП выполняемая команда: · поле «КОП» регистра команд связано с УУ, поэтому последнее получит приказ на выполнение операции «Вычитание» и перейдет в режим генерации управляющих импульсов;
· одновременно подачей сигналов Y1, Y5, Y10 и Y8 обеспечивается пересылка из памяти численного значения уменьшаемого, прохождения его через АЛУ (сигнал Y10) и запись в аккумулятор; · следующий тактовый импульс инициирует сигналы Y2, Y5, Y6, и Y11, что приводит к пересылке из памяти численного значения вычитаемого, к выполнению операции вычитания (сигнал Y11), т.е. из содержимого аккумулятора (уменьшаемое) вычитается значение вычитаемого, по сигналу Y8 производится запись полученной разности в аккумулятор вместо уменьшаемого; · следующий тактовый импульс инициирует сигналы Y3, Y9 которые обеспечат пересылку результата операции в требуемую ячейку памяти, на которую указывает предпоследнее поле команды: · наконец в следующем такте с помощью сигналов Y4 и Y7 будет произведена перепись в регистр команд следующей команды программы. Рассмотренная архитектура процессора и реализованная им четырехадресная команда кажутся вполне естественными, более того, очевидными. Действительно, без усложнения доступа к содержимому ячеек памяти нельзя одновременно получить из нее оба операнда и, следовательно, первый операнд приходится сохранять в буферном регистре – аккумуляторе (он может аккумулировать, накапливать слагаемые в процессе получения некоторой суммы). Нужен и регистр для хранения исполняемой команды. Поясним этот момент. Когда команда хранится в одной ячейке памяти, то не существует возможности считывания из памяти отдельных полей команды и, следовательно, необходим буфер для временного хранения исполняемой команды – регистр команд. Ну а появление трех шин: шины адреса, шины чтения(данных и команд), шины записи – кажутся нам вполне естественным. Все так, но подобная архитектура обладает массой недостатков, более того - она просто не работоспособна.
Задание Приведите временную диаграмму управляющих импульсов для приведенного случая. Подсчитайте объем памяти (адресное пространство) нашего процессора.
Семинар 5. Микропроцессор – дальнейшее развитие Введение Что такое микропроцессор? Ядром любой микропроцессорной системы является микропроцессор или просто процессор (от английского processor). Перевести на русский язык это слово правильнее всего как «обработчик», так как именно микропроцессор — это тот узел, блок, который производит всю обработку информации внутри микропроцессорной системы. Остальные узлы выполняют всего лишь вспомогательные функции: хранение информации (в том числе и управляющей информации, то есть программы), связи с внешними устройствами, связи с пользователем и т.д. Процессор заменяет практически всю «жесткую логику», которая понадобилась бы в случае традиционной цифровой системы. Он выполняет арифметические функции (сложение, умножение и т.д.), логические функции (сдвиг, сравнение, маскирование кодов и т.д.), временное хранение кодов (во внутренних регистрах), пересылку кодов между узлами микропроцессорной системы и многое другое. Количество таких элементарных операций, выполняемых процессором, может достигать нескольких сотен. Процессор можно сравнить с мозгом системы. Но при этом надо учитывать, что все свои операции процессор выполняет последовательно, то есть одну за другой, по очереди. Конечно, существуют процессоры с параллельным выполнением некоторых операций, встречаются также микропроцессорные системы, в которых несколько процессоров работают над одной задачей параллельно, но это редкие исключения. С одной стороны, последовательное выполнение операций — несомненное достоинство, так как позволяет с помощью всего одного процессора выполнять любые, самые сложные алгоритмы обработки информации. Но, с другой стороны, последовательное выполнение операций приводит к тому, что время выполнения алгоритма зависит от его сложности. Простые алгоритмы выполняются быстрее сложных. То есть микропроцессорная система способна сделать все, но работает она не слишком быстро, ведь все информационные потоки приходится пропускать через один-единственный узел — микропроцессор (рис. 5.3). В традиционной цифровой системе можно легко организовать параллельную обработку всех потоков информации, правда, ценой усложнения схемы.
Информационные потоки в микропроцессорной системе
Итак, микропроцессор способен выполнять множество операций. Но откуда он узнает, какую операцию ему надо выполнять в данный момент? Именно это определяется управляющей информацией, программой. Программа представляет собой набор команд (инструкций), то есть цифровых кодов, расшифровав которые, процессор узнает, что ему надо делать. Программа от начала и до конца составляется человеком, программистом, а процессор выступает в роли послушного исполнителя этой программы, никакой инициативы он не проявляет (если, конечно, исправен). Поэтому сравнение процессора с мозгом не слишком корректно. Он всего лишь исполнитель того алгоритма, который заранее составил для него человек. Любое отклонение от этого алгоритма может быть вызвано только неисправностью процессора или каких-нибудь других узлов микропроцессорной системы. Все команды, выполняемые процессором, образуют систему команд процессора. Структура и объем системы команд процессора определяют его быстродействие, гибкость, удобство использования. Всего команд у процессора может быть от нескольких десятков до нескольких сотен. Система команд может быть рассчитана на узкий круг решаемых задач (у специализированных процессоров) или на максимально широкий круг задач (у универсальных процессоров). Коды команд могут иметь различное количество разрядов (занимать от одного до нескольких байт). Каждая команда имеет свое время выполнения, поэтому время выполнения всей программы зависит не только от количества команд в программе, но и от того, какие именно команды используются. Для выполнения команд в структуру процессора входят внутренние регистры, арифметико-логическое устройство (АЛУ, ALU — Arithmetic Logic Unit), мультиплексоры, буферы, регистры и другие узлы. Работа всех узлов синхронизируется общим внешним тактовым сигналом процессора. То есть процессор представляет собой довольно сложное цифровое устройство.
Пример структуры простейшего процессора.
Впрочем, для разработчика микропроцессорных систем информация о тонкостях внутренней структуры процессора не слишком важна. Разработчик должен рассматривать процессор как «черный ящик», который в ответ на входные и управляющие коды производит ту или иную операцию и выдает выходные сигналы. Разработчику необходимо знать систему команд, режимы работы процессора, а также правила взаимодействия процессора с внешним миром или, как их еще называют, протоколы обмена информацией. О внутренней структуре процессора надо знать только то, что необходимо для выбора той или иной команды, того или иного режима работы. Модернизация Если наш процессор обладает 16-ти битовой ячейкой памяти, то четырехадресная команда может адресовать только 23=8 ячеек памяти. Это безнадежно мало. Современные процессоры адресуются к 232, 264 и больше ячеек. Если оставить четырехадресный формат команды, то появится необходимость отводить на всю команду 160 бит и более, а это, как вы понимаете, невозможно. Следовательно, необходимо что-то делать. Попробуем выработать ряд мер, которые могли бы усовершенствовать нашу структуру процессора. Первое что приходит в голову – целесообразно ли хранить в регистре команд одновременно все поля команды, если они все равно используются последовательно?!!! Может быть четырехадресную команду хранить в ячейках памяти в виде отдельных ее полей.. В этом случае команды и данные хранятся в 16 битовых ячейках памяти. Каждый операнд (результат) и адрес целиком занимает 16 битовую ячейку. Давайте вспомним, что в предыдущей модели при опросе последнего адресного поля исполняемой команды (Y4) в память пересылался адрес той ячейки, где размещались все поля следующей, новой команды. И она целиком переписывалась в регистр команд (Y7) и процессор получал всю необходимую информацию для ее выполнения. Теперь структура ОП и основных регистров процессора примет следующий вид. ОП Адресное Поле данных (и команд) поле
Распределив поля команды по разным ячейкам памяти, мы усложняем алгоритм исполнения команды (ничто не дается даром). Теперь в последнем адресном поле предыдущей команды будет храниться адрес не всей следующей команды, а лишь ее первого поля. А где же взять адреса следующих полей?
Обратим внимание на то, что адрес каждого следующего поля отличается от предыдущего на единицу. Это наводит на мысль введения в состав процессора специального регистра, содержимое которого будет наращиваться (инкрементироваться) на 1 после выборки из памяти очередного поля команды (его можно назвать указатель поля или счетчик команд). Содержимое этого регистра послужит для последовательного получения и хранения этих адресов. Но получив на шине «Чтение» адрес первого операнда, мы не можем в этом же такте получить его содержимое. Нам не удастся одновременно получить на выходе памяти и адрес операнда и его содержимое. Поэтому адрес операнда надо сохранить в каком либо буфере (назовем его регистр адреса), отключить адресную шину от счетчика команд, а уж затем (например через такт) подключить ее к регистру адреса для получения значения первого операнда. Одновременно с получением значения первого операнда можно инкрементировать счетчик команд и создать тем самым адрес второго операнда и т.д. и т.п. Еще одно замечание, в последнем поле выполняемой команды храниться адрес первого поля следующей и совсем не обязательно это номер 126 как в нашем примере, а, например, 345. Поэтому этот адрес следует временно записать в регистр адреса, а затем переписать его в указатель поля. И последнее, время доступа к ячейке памяти много больше чем время доступа к регистру, поэтому уменьшаемое появляется на входе АЛУ раньше вычитаемого. Для того что бы не снижать быстродействие процессора целесообразно включить дополнительный буфер, назовем его регистр данных. Вот теперь мы определили все начальные условия и дополнительные требования. Задание Разработайте структуру процессора, которая реализует данный алгоритм работы на примере вычисления разности двух чисел.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|