Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЦСРС_1 / Grebeshkov_Tehnika_mikroproz_sistem_v_kommutazii_uchebnik_dlya_vuzov_2011

.pdf
Скачиваний:
133
Добавлен:
05.05.2015
Размер:
4.74 Mб
Скачать

Техника микропроцессорных систем в коммутации

(заполнен) буфер приѐма. Примитив CAST, используемый вместо SEND, позволяет активизировать асинхронный обмен сообщениями, при котором передающий процесс не информирован о том, насколько доступен (заполнен) буфер приѐма. Особенностью CAST является использование как в пределах одной системы так и при межсистемном обмене. Примитив RECEIVE – используется для выборки сообщения из любого буфера или получения сигнала от любого процесса. Примитив RECEIVE_CASE – используется для выборки сообщения из заданного буфера или из группы буферов или для получения заданного сингнала. Рассмотрим также процессы на рис. 3.13.

Процесс S1: передающий процесс помещает передаваемое сообщение в буфер передачи.

Процесс S2: передающий процесс вызывает процедуру операционной системы SEND и далее передаѐт управление обменом данной процедуре операционной системы.

Процесс B1: операционная система передаѐт сообщение от буфера передачи к буферу приѐма.

Процесс E1: принимающий процесс для управления приѐмом вызывает процедуру операционной системы RECEIVE и тем самым передаѐт управление приѐмом операционной системе.

Процесс B2: операционная система передаѐт сообщение из буфера приѐма в область приѐма, после чего сообщение становится доступным для принимающего процесса.

Рассматриваемая схема является упрощѐнной и не учитывает приоритета процессов, а также переключения между процессами в случае вовлечения в обмен более чем двух процессов. Кроме того, процессы могут непосредственно обмениваться сигналами, не сохраняя их в буфере. Это вариант будет рассмотрен в разделе 3.7. Удалѐнный вызов процедуры предполагает синхронный обмен сообщениями без ограничений на место расположения вызываемой процедуры. Вызываемая процедура может находиться в том же самом узле коммутации, что и вызывающий (передающий) процесс или вызываемая процедура может находиться в другом узле коммутации. Использование разделѐнных данных предполагает, что обмен

251

Техника микропроцессорных систем в коммутации

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

3.7Язык программирования высокого уровня CHILL

Языки программирования, в том числе используемые для создания программного обеспечения узлов коммутации имеют определенные лексику, синтаксис и семантику. Лексика – это определенный состав символов языка например A,B,C,…,Z; 0,…9; @,$,#. Синтаксис

– это правило сочетания символов в слова и предложения, например GO TO, MOV, ADD. Семантика – правило предписывающие смысловое значение сочетания символов, например GO TO означает <идти к …> или <переход к …>, обозначение MOV означает <перенос данных>, обозначение ADD предполагает действие <сложение>. Лексика определяется системой счисления; синтаксис определяется форматом команд и данных; семантика определяется смысловым содержанием команд.

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

252

Техника микропроцессорных систем в коммутации

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

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

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

Машинный язык включает систему команд и метод кодирования информации. В команде машинного языка всегда указывается тип выполняемой операции и местонахождение операндов. Типовыми символами машинного языка для кодирования команд являются двоичные символы, «0» и «1», которые задают адреса в командах, коды операций и признаки команд. При исполнении программ, «0» и «1» в виде физических сигналов поступают на входы микросхем и приводят к исполнению аппаратными средствами МПр заданных операций. Из последовательности команд составляются программы, реализующие алгоритмы задач управления системой коммутации.

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

253

Техника микропроцессорных систем в коммутации

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

Достоинства машинного языка следующие:

компактность и высокая скорость выполнения программ;

возможность непосредственного обращения к аппаратным ресурсам МПр;

предсказуемость размера объектного кода и распределение памяти.

Недостатки машинного языка следующие:

привязка к системе микрокоманд и особенностям микроархитектуры конкретного типа МПр;

трудоемкость процесса составления программ;

низкая скорость программирования;

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

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

Дополнительно здесь могут использоваться макрокоманды, которые рассматривались в разделе 1.1. Примером такого языка программирования является язык ассемблера – представляет собой символьную форму машинного языка с рядом возможностей, характерных для языка высокого уровня, включая макрокоманды (см. ГОСТ 19781-90). Ассемблер облегчает процесс программирования

254

Техника микропроцессорных систем в коммутации

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

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

В целом использования машинных языков и, в частности, ассемблера для разработки программного обеспечения узла коммутации позволяет существенно упростить процедуру трансляции или ассемблирования. Ассемблирование – процесс трансляции программы с языка ассемблера в машинный код. К недостаткам ассемблера можно отнести привязку этого языка к конкретным типам процессоров. В частности, ассемблер в лабораторной работе [28] отличается от ассемблера процессора Intel Pentium. Поэтом у программы на машинных языках обладают ограниченной переносимостью.

Вторая группа языков программирования, используемых для разработки ПО узлов коммутации, включает языки программирования высокого уровня. Это машинно-независимые языки, которые согласно ГОСТ 19781-90, используют понятия и структуры удобные для восприятия человеком. «Высокий уровень», применительно к языку программирования означает, что это язык, кроме интуитивно понятных операторов, свойством переносимости. В результате программы на языках высокого уровня могут исполняться на различных типах микропроцессоров. Однако при этом существенно усложняются компиляторы, которые, в том числе, обеспечивают переносимость и эффективность ПО. Например, назначение регистров в языках вы-

255

Техника микропроцессорных систем в коммутации

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

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

Язык программирования Cи иногда относится к языкам общего назначения, который с одной стороны по своим возможностям иногда превосходит ассемблер, с другой стороны – программы на Си могут запускаться на различных типах МПр. Язык Си поддерживает процедуры т.е. аппарат подпрограмм, используемый для решения той или иной задачи. Подпрограмма – часть программы для ЭВМ, реализующая определенный алгоритм и оформленная таким образом, что допускает гибкую настройку на входные и выходные данные, называемые параметрами подпрограммы. Отличительной особенностью языка программирования Си является большой набор операций, многие из которых соответствуют машинным командам, и поэтому допускают прямую трансляцию в машинный код. В результате программы, написанные на Си, сравнимы по скорости исполнения с программами, написанными на языке ассемблера при сохранении однозначного описания алгоритма работы узла коммутации.

256

Техника микропроцессорных систем в коммутации

С учѐтом вышеизложенного, можно перечислить следующие достоинства языков высокого уровня:

близость к естественному человеческому языку;

развитые средства автоматизации программирования и отладки программ, отсюда – высокая скорость разработки ПО;

возможность непосредственного использования программ, составленных на определенном языке, на МПр разных типов.

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

недостаточная компактность и сравнительно меньшая скорость выполнения программ, чем у языков программирования низкого уровня;

для запуска на МПр требуется трансляция или компиляция в язык низкого уровня (в машинный код);

невозможность непосредственного обращения и использования требуемых аппаратных ресурсов МПр.

Язык программирования CHILL относится к языкам программирования высокого уровня. Этот язык программирования предложен Международным союзом электросвязи и принят в качестве международного стандарта для программирования автоматизированных комплексов в коммуникационных сетях. Язык предназначен для описания поведения систем реального времени и имеет общие функции с языком программирования Ada [75]. Язык программирования CHILL детально описан в рекомендации МСЭ-Т Z.200 «CHILL – язык программирования МСЭ–Т», выпуск ноября 1999 года, описание CHILL для учебных целей содержится в пособии [9], полезны для ознакомления сведения о применении языка CHILL в публикации [89]. Язык программирования CHILL разрабатывался начиная с 1975 года, первая официальная рекомендация Z.200 МСЭ–Т с описанием языка CHILL была одобрена в ноябре 1980 года, рекомендация по CHILL последовательно пересматривалась в 1988 году и в 1999 году В 1989 году CHILL стандартизован МОС в виде стандарта ISO/IEC Standard 9496. С помощью CHILL было разработано программное обеспече-

257

Техника микропроцессорных систем в коммутации

ния таких АТСЭ как EWSD (Siemens, Германия), System12 (Alcatel,

Бельгия/Германия), Linea UT (Italtel, Италия).

Язык программирования CHILL был разработан для внедрения сложных систем и обладает следующими особенностями:

повышение надежности и сокращение времени выполнения программ за счет использования средств всесторонней проверки во время компиляции ПО;

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

возможности для поддержки разработки крупных программных систем по частям и по модулям;

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

генерация высокоэффективного объектного кода;

простота изучения и применения.

Язык CHILL допускает разработку переносимого программного обеспечения, не зависящего от конкретного типа микропроцессора.

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

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

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

258

Техника микропроцессорных систем в коммутации

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

дискретные – целые величины, характеристические величины, булевы значения;

ссылочные в том числе строки используемые как ссылки на место расположения операндов;

процедурные – обосновывающие возможность обработки данных;

сущностные – идентифицирующие процессы;

ввод-вывод – описывают доступ, связи для процедур вводавывода;

временные – указывают длительность и абсолютное значение для контроля времени.

Для всех перечисленных видов величин язык CHILL предоставляет способ записи для этих видов. Для того, чтобы ознакомиться с особенностями языка программирования CHILL, рассмотрим образец записи программы на рис. 3.14 [89].

Программный модуль на рисунке 3.14 имеет название «line_allocator» – «Распределитель линии». Задача этого модуля – работа процессов узла коммутации с общим линейным ресурсом. Общим линейным ресурсом является линия связи. Модуль реализует занятие линии, если она свободна, и освобождение занятой линии. Рассмотрим фрагмент данной программы по строкам сверху вниз.

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

259

Техника микропроцессорных систем в коммутации

1line_allocator:

2MODULE

3SEIZE line_process, line, occupied, unoccupied,

4

search,connect, accepted;

5GRANT line_allocator_process;

6line_allocator_process:

7PROCESS ();

8

NEWMODE states = SET(free, busy);

9

DCL next_state states := free, lno INT := 0;

10

line(lno) := START line_process(lno);

11

DO FOR EVER;

12

CASE next_state OF

13

(free): RECEIVE CASE SET sender;

14

(occupied):

15

next_state := busy;

16

(search):

17

SEND connect(sender) TO line(lno);

18

SEND accepted TO sender;

19

next_state := busy;

20

(else): -- Consume any other signal

21

ESAC;

22

(busy): RECEIVE CASE SET sender;

23

(unoccupied):

24

next_state := free;

25

(search):

26

SEND rejected TO sender;

27

(else): -- Consume any other signal

28

ESAC;

29

ESAC;

30

OD;

31END

32line_allocator_process; 33END

34line_allocator;

Рис. 3.14 – Фрагмент записи программного кода CHILL

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

260