Строительный блокнот  Развитие полупроводниковой электроники 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 [ 25 ] 26 27 28 29 30 31 32 33 34 35 36 37

Программирование для микропроцессорных комплектов и мнкропроцессор-вых систем, за исключением некоторых малосущественных деталей, ничем не отличается от программирования для ЭВМ. Это одна из весьма примечательных отличительных особенностей современного состояния микропроцессорной техники. Хорошо это или плохо? Ведь мы не раз говорили на страницах этой книга ш будем еще говорить об этом не раз в дальнейшем, что если современная тех-вика БИС с программно перестраиваемой логикой или, как мы стали теперь говорить короче, микропроцессорная техника и имеет какое-то отношение к технике ЭВМ, то отношение, не более тесное, чем, скажем, отношение металлургии к автомобилестроению. Как при изготовлении автомобиля используются различные металлические конструкции, прн изготовлении ЭВМ могут быть использованы БИС и, в частности, БИС, взятые из микропроцессорных комплектов, ио НВ более того. Все это верно, и все это подтверждается современной мировой практикой. Но вот программирование для микропроцессоров, представляющее еобой одни из важнейших технологических процессов при создании любой дей-втвующей системы на основе микропроцессорного комплекта, практически не отличается от программирования для ЭВМ

Так хорошо это или плохо? Вряд ли сейчас можно получить однозначный ответ на такой вопрос. С одной стороны, сейчас во всем мире накоплен поистя-не колоссальный опыт по всем аспектам программирования. Количество языков программирования исчисляется сотнями. Накоплены огромные фонды программ. Вряд ли было бы разумно игнорировать все это. Но существует и другая сторона дела. За все время существования ЭВМ, т. е. примерно за последние 46 лет, нх основные технические параметры, такие, как быстродействие, объем памяти, количество потребляемой энергии и в конечном итоге стоимость, улучшились в среднем в несколько десятков тысяч раз. А вот с программированием дело обстоит существенно иначе. Если средняя стоимость написания одной команды и уменьшилась за тот же период, то лишь в несколько раз.

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

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



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

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

4.2. Система команд

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

В любой реальной системе полное возможное количество микрокоманд значительно меньше полного возможного числа состояний. Микрокоманда в современной системе состоит максимум из нескольких сотен управляющих сигналов. Полное число различных микрокоманд имеет порядок 2°°. Число же различных возможных состояний имеет порядок 2- , где N-общее число транзисторов. Мы уже отмечали, что это астрономическая величина. Различие между чивлон состояний и числом микрокоманд объясняется тем, что каждый управляющий сигнал в микрокоманде обусловливает состояния сразу нескольких транзисторов

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

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



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

Каким образом происходит переход с языка команд на язык микрокоманд? Дли этого используются словари (в полном смысле этого слова), хранимые в ПЗУ, или программируемые логические матрицы (ПЛМ). Такие средства перевода могут входить в состав БИС процессора или представлять собой самостоятельные БИС многокристального процессора. В первом случае получается про-оемор о фиксированным набором команд, например процессор КР580ИК80А. Во втором - процессор, набор команд которого можно изменить, заменяя соответствующую БИС, например процессор КР588ВС2.

Ответ на вопрос: что лучше? - кажется, начал вырисовываться. Наблюда-етеи явная тенденция в сторону второго решения. Рассмотрим в качестве примера еистему команд процессора КР580ИК80А, т. е. процессора с фиксирован-вым набором команд. Во-первых, этот процессор один нз самых распространенных [2, 5]. Во-вторых, именно фиксированный набор команд в наибольшей степени отражает собственно микропроцессорную специфику. Наконец, в-третьих, хоти многокристальный процессор я может иметь любой набор команд, но те наборы команд, которые используются в настоящее время, очень мало отлнчают-8я от набора команд микропроцессора КР580ИК80А.

Конкретная структура процессора на том уровне рассмотрения, который необходим для описания набора команд, практически ничем не отличаетсн от обобщенной структуры, показанной на рис. 2.7. Сделаем лишь некоторые уточнения. В частности, блок регистров общего назначения {РОН) на рис. 2.7 в данном случае содержит шесть 8-разрядных регистров - В, С, D, Е, Н и L. Регистры ВиС, DhE, HhL могут объединяться в пары и рассматриваться прн этом как один 16-разрядный регистр.

Нам понадобится еще несколько уточнений, которые мы будем вносить по ходу изложения. Команды, так же как и микрокоманды, имеют свой фиксированный формат, В частности, команды рассматриваемого набора (в дальнейшем мы будем говорить только о них, если не будет оговорено обратное) по формату подразделяются на трн основные группы: однобайтные, двухбайтные и трехбайтные. Байт - это двоичное слово, состоящее из 8 символов. Следовательно, в зависимости от формата команда может иметь длину 8, 16 нли 24 двоичных символа.

Стандартная ячейка памяти в микропроцессорном комплекте КР580 имеет емкость 8 двоичных символов, или 1 байт. Это значит, что простое хранение, скажем, трехбайтной команды требует трех ячеек памяти с тремя различными адреса.мн. Требуются специальные средства, которые позаботились бы о том, чтобы трехбайтная команда рассматривалась как единое целое. Иными словами, адреса всех трех ячеек памяти должны быть как-то взаимосвязаны. В простейшем случае они представляют собой три последовательных целых числа. Для извлечения нли записи трехбайтной команды требуются трн последовательных цикла обращения к памяти. Следует позаботиться также и о том, как поместить трехбайтную команду в процессоре. Например, первый байт можно разместить в регистре команд РК, а два остальных - в любой паре РОН.

Формат однобайтной команды показан на рис. 4.1,а. Однобайтная команда целиком состоит из одного кода операции КО. Насколько точно выдерживается это условие, мы увидим нз дальнейшего. Формат двухбайтной команды показан аа рнс. 4.1,6. Двухбайтная команда состоит из кода операцнн и 8-разрядного



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 [ 25 ] 26 27 28 29 30 31 32 33 34 35 36 37