Тарифы Услуги Сим-карты

Сравнение синхронных и асинхронных систем связи. Компонентные технологии и разработка распределенного по

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

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

Если копии сообщения не создается, то любые изменения сообщения, производимые передающим процессом уже после обращения к примитиву Send, но до отправки сообщения, являются рискованными.

Аналогично, после обращения к асинхронному примитиву Receive процесс продолжает работу. Когда сообщение прибывает, процесс информируется об этом событии путем прерывания или периодического опроса.

Асинхронные примитивы обеспечивают эффективное и гибкое обращение процессов к системе передачи сообщений.

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

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

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

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

Блокирующий примитив Receive не возвратит управление, пока сообщение не окажется в выделенном для него буфере.

Уделенные вызовы процедур

Уделенный вызов процедуры (Remote Procedure Call, RPC) представляет собой вариант базовой модели передачи сообщения.

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

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

Популярность этого подхода связана со следующими преимуществами:

Вызов процедуры представляет собой широко распространенную и понятную абстракцию.

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

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

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

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

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

Например: CALL P(X. Y)

Здесь ♦ Р - имя процедуры;

♦ X - передаваемые аргументы;

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

Стаб создает сообщение, идентифицирующее вызываемую процедуру и содержащее ее параметры. Затем он посылает это сообщение удаленной системе и ждет ответа.

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

Когда приходит сообщение, стаб исследует его и на основе полученных имени процедуры и параметров формирует обычное локальное обращение CALL P(X, Y).

То есть удаленная процедура вызывается локально, при этом выполняется стандартная передача параметров через стек.

Рис. 17.13. Механизм удаленного вызова процедур

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

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

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

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

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

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

В этом случае постоянная привязка позволяет делать вызовы и получать их результаты через одно и то же логическое соединение.

2.4.3. Асинхронная передача

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

Выбранная первоначально скорость передачи задает частоту опроса (за исключением систем "Autobaud"). Частота опроса канала на приемнике высока, обычно в 16 раз выше скорости передачи бит (bit rate), для точного определения центра синхронизирующей комбинации (стартового бита) и его длительности.

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

2.4.4. Синхронная передача

Здесь передатчик и приемник устанавливают начальную синхронизацию, затем непрерывно передают данные, поддерживая ее на протяжении всего сеанса передачи. Достигается это посредством специальных схем кодирования данных, таких, как манчестерское кодирование (Manchester Encoding), которые обеспечивают непрерывную запись в передаваемый поток данных тактовых сигналов передатчика. Таким способом можно поддерживать синхронизацию приемника вплоть до последнего бита сообщения, которое может достигать длины 4500 байтов (36000 битов). Это позволяет эффективно передавать большие кадры данных на больших скоростях. Синхронная система упаковывает вместе множество символов и посылает их непрерывным потоком, который называется блоком. У каждого блока есть заголовок, содержащий стартовый ограничитель для начальной синхронизации и информацию о блоке, и завершающая ччасть, для проверки " ошибок и т. п. Пример блока синхронной передачи показан на рис. 2.16.

44. Интерфейсные узлы сопряжения с объектом микропроцессорных систем управления. Назначения и типы.

45. Отличительные особенности 32-разрядных мп. Стандартная архитектура 32-разрядного мп. Приведите примеры известных Вам 32 - разрядных мп.

Все 32-разрядные процессоры могут работать в двух режимах: реальном и защищенном. Основные архитектурные особенности микропроцессора:

1. в архитектуре применено RISC-ядро, позволяющее наиболее часто встречающиеся инструкции выполнять за 1 такт;

2. наличие встроенного арифметического сопроцессора;

3. наличие внутренней кэш-памяти и предусмотрены все необходимые средства для построения памяти с двухуровневым кэшированием;

4. увеличена очередь команд до 16 байт;

5. ускорено выполнение операций как в целочисленном АЛУ, так и в блоке арифметического сопроцессора;

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

Концепция RISC-микропроцессора сводится к следующим положениям:

· выполнение всех (или, по крайней мере, 75% команд) за один цикл;

· стандартная длина всех команд;

· малое число команд;

· малое количество форматов команд;

· малое число способов адресации (преимущественно регистровая и непосредственная);

· все команды, за исключением «Чтения» и «Записи», используют внутрипроцессорные межрегистровые пересылки;

· относительно большой процессорный файл РОН.

В состав структурной схемы микропроцессора входят

1. целочисленное устройство,

2. устройство с плавающей точкой,

3. устройство управления,

4. диспетчер памяти,

5. устройство команд,

6. кэш-память,

7. шинное устройство.

В состав целочисленного устройства входят АЛУ, 32-разрядные РОН и многоразрядный сдвигатель, используемый при арифметических и циклических сдвигах, операциях умножения и деления. Команды сложения, вычитания, сдвига и логические операции выполняются за один такт. Содержимое РОН используется устройством сегментации для формирования адресов.

Устройство с плавающей точкой по структуре и программному обеспечению соответствует математическому сопроцессору.

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

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

Схемы управления имеют два типа выводов:

1. сигналы управления циклами магистрали,

2. сигналы управления состоянием микропроцессора и взаимодействием микропроцессора с другими активными устройствами магистрали.

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

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

Общий обзор структур, характеристик и архитектур 32-разрядных микропроцессоров. Cтруктуры различных типов МП могут существенно различаться, однако с точки зрения пользователя наиболее важными параметрами являются архитектура, адресное пространство памяти, разрядность шины данных, быстродействие. Архитектуру МП определяет разрядность слова и внутренней шины данных МП. Первые МП основывались на 4-разрядной архитектуре. Первые ПЭВМ использовали МП с 8- разрядной архитектурой, а современные МП основаны на МП с 16 и 32- разрядной архитектурой. Микропроцессоры с 4- и 8-разрядной архитектурой использовали последовательный принцип выполнения команд, при котором очередная операция начинается только после выполнения предыдущей. В некоторых МП с 16-разрядной архитектурой используются принципы параллельной работы, при которой одновременно с выполнением текущей команды производятся предварительная выборка и хранение последующих команд. В МП с 32-разрядной архитектурой используется конвейерный метод выполнения команд, при котором несколько внутренних устройств МП работают параллельно, производя одновременно обработку нескольких последовательных команд программы. Адресное пространство памяти определяется разрядностью адресных регистров и адресной шины МП. В 8-разрядных МП адресные регистры обычно составляются из двух 8-разрядных регистров, образуя 16-разрядную шину, адресующую 68 Кбайт памяти. В 16-разрядные МП, как правило, используются 20-разрядные адресные регистры, адресующие 1 Мбайт памяти. В 32-разрядных МП используются 24- и 32-разрядные адресные регистры, адресующие от 16 Мбайт до 4 Гбайт памяти. Для выборки команд и обмена данными с памятью МП имеют шину данных , разрядность которой, как правило, совпадает с разрядностью внутренней шины данных, определяемой архитектурой МП. Однако для упрощения связи с внешней аппаратурой внешняя шина данных может иметь разрядность меньшую, чем внутренняя шина и регистры данных. Например, некоторые МП с 16-разрядной архитектурой имеют 8-разрядную внешнюю шину данных. Они представляют собой специальные модификации обычных 16 разрядных МП и обладают практически той же вычислительной мощностью. Одним из важных параметров МП является быстродействие определяемое тактовой частотой его работы, которая обычно задается внешними синхросигналами. Для разных МП эта частота имеет пределы 0,4...33 МГц. Выполнение простейших команд (например, сложение двух операндов из регистров или пересылка операндов в регистрах МП) требует минимально двух периодов тактовых импульсов (для выборки команды и её выполнения). Более сложные команды требуют для выполнения до 10 - 20 периодов тактовых импульсов. Если операнды находятся не в регистрах, а в памяти, дополнительное время расходуется на выборки операндов в регистры и записи результата в память. Скорость работы МП определяется не только тактовой частотой, но и набором его команд, их гибкостью, развитой системой прерываний. Структуры, характеристики и архитектуры некоторых микропроцессоров. Микропроцессоры Alpha. Технологическое решение способствующее повышению производительности процессора АХР 21064 , Являются две раздельные кэш - памяти для команд и данных по 8 Кбайт каждая. Кроме того, в этом чипе применён метод предсказания ветвления (Branch Prediction), который позволяет предсказывать возможные разветвления потоков конвейерной линии. Основным преимуществом этого процессора является его высокая тактовая частота, обеспечиваемая особой структурой процессора. Микропроцессоры ARM. МП содержит АЛУ, сдвигатель, умножитель, двадцать семь 32- разрядных регистров. В МП реализован трехступенчатый конвейер (одна инструкция выполняется, вторая -декодируется третья - считывается в памяти). Обращение к памяти осуществляется только командами загрузки и запоминания регистров, обеспечивающими адресацию байта или 32-разрядного слова. МП может работать в четырех режимах (О - пользователя, 1 - прерывания. 2 - быстрого прерывания. 3 - супервизора), каждый из которых может использовать свои собственные 32-разрядные регистры.

Номера регистров

Все команды МП имеют длину 32 разряда. Микропроцессор АМ 29000 фирмы АМD. МП содержит три устройства: предварительной выборки, исполнительное, управления памятью. Исполнительное устройство включает в себя регистровый файл, содержащий 64 регистра с фиксированным адресом (глобальные регистры) и 128 регистров с переменным адресом (локальные регистры). Глобальные регистры назначаются статически компилятором или программистом. Они могут быть использованы для размещения данных ОС, таких, как базовых адресов страниц. Локальные регистры выполняют функции регистров стека для хранения параметров процедуры обращения к подпрограмме. Все команды имеют фиксированный 32-разрядный формат, обеспечивающий упрощение организации конвейера, схемы выборки и обработки команды и др. Микропроцессоры фирмы Intel. В процессорах применяются расширенные микроканалы, характеризующиеся следующими преимуществами: поддержка параллельной многопроцессорной многозадачной работы; до 15 каналов прямого доступа; одновременная обработка и выборка данных; усовершенствованный доступ к данным; усовершенствованная диагностика и локализация ошибок; управление конфликтами при прерываниях ввода - вывода; автоматическое расширение; идентификация и интеграция. Микропроцессор i80386. В 80386 имеется 32 регистра, разделяемых на следующие группы: регистры общего назначения, сегментные, указатель команд и флаги, управления. Шесть программно доступных регистров отладки реализуют поддержку процесса отладки программ: четыре указывают четыре точки останова, управляющий используется для установки контрольных точек, а статусный показывает текущее состояние точек останова. Эти регистры обеспечивают задание контрольных точек останова по командам и данным, а также пошаговый режим выполнения программы. Микропроцессор 80386 содержит шесть блоков, обеспечивающих управление выполнением команд, сегментацию, страничную организацию памяти, сопряжение с шинами, декодирование и упреждающую выборку команд. Все эти устройства работают в виде конвейера, причем каждое из них может выполнять свою конкретную функцию параллельно с другими. Таким образом, во время выполнения одной команды производится декодирование второй, а третья выбирается из памяти. Дополнительным средством повышения производительности служит специальный блок быстрого умножения (деления). Устройство управления памятью содержит блок сегментации и блок страничной организации. Сегментация позволяет управлять логическим адресным пространством, обеспечивая переместимость программ и данных и эффективное разделение памяти между задачами. Страничный механизм работает на более низком уровне я прозрачен для сегментации, позволяя управлять физическим адресным пространством. Каждый сегмент разделяется на одну или несколько страниц размером 4 Кбайта. Память организована в виде одного или нескольких сегментов переменной длины. Максимальная длина сегмента 4 Гбайта. Каждая область адресного пространства может иметь связанные с ней атрибуты, определяющие ее расположение, размер, тип (стек, программа или данные) характеристики зашиты. Устройство сегментации обеспечивает четырехуровневую защиту для изоляции прикладных задач и операционной системы друг от друга. Микропроцессор i486. По сравнению с 80386 процессором, почти все усовершенствования сделаны на аппаратном уровне, и у нового процессора гораздо больше. На кристалле, кроме центрального процессора, были размещены: математический сопроцессор, кэш и устройство управления памятью, которое позволяло физически адресовать до 4 Гбайт ОЗУ. Микропроцессор 80486 на частоте 25 - Мгц работал в 3 - 4 раза быстрее чем микропроцессор 80386, рассчитанный на такую же частоту. В микропроцессоре используются раздельные 32 - разрядные шины адреса и данных, обеспечивающие в монопольном режиме скорость передачи данных до 106 М байт\с (при тактовой частоте 33 Мгц), а также 8 Кбайт встроенной кэш - памяти, играющей роль буфера между относительно медленной основной памятью и высокоскоростным процессором. Процессор i80486 в своё время являлся незаменимым при работе в такой многопользовательской системе как UNIX

Мне любопытно, что async ожидает встроенные функции потоковой передачи.

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

Но рассмотрим этот сценарий.

У меня есть async methodA, выполняющий операцию async в базе данных. Api базы данных предоставляет функцию BeginQuery и событие QueryCompleted. Я завернул их в задачу (с использованием TaskCompletionSource).

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

Я имею в виду - не нужно ли создавать какого-то рабочего, чтобы запустить это событие? На очень низком уровне должен быть некоторый синхронный цикл, который блокирует результат чтения нити с db.

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

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

При вызове асинхронного метода всегда создается новый рабочий поток?

Может ли кто-нибудь подтвердить мое понимание?

4 ответов

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

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

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

Нет. На уровне ОС все операции ввода/вывода являются асинхронными. Это синхронные API-интерфейсы, которые блокируют поток, в то время как основной асинхронный ввод-вывод выполняется. Я недавно написал это в сообщении в блоге: .

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

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

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

Даже когда вам действительно нужно ждать объекта ядра (например, ручное событие reset), вы все равно можете превратить блокирующий синхронный код в асинхронный и освободить поток от блокировки (обновлено: реальный сценарий).

Например, синхронный код:

Void Consume() { var completedMre = new ManualResetEvent(false); producer.StartOperation(completedMre); completedMre.WaitOne(); // blocking wait Console.WriteLine(producer.DequeueResult()); }

Асинхронный аналог:

Async Task ConsumeAsync() { var completedMre = new ManualResetEvent(false); producer.StartOperation(completedMre); var tcs = new TaskCompletionSource(); ThreadPool.RegisterWaitForSingleObject(completedMre, (s, t) => tcs.SetResult(producer.DequeueResult()), null, Timeout.Infinite, true); var result = await tcs.Task; Console.WriteLine(result); }

Асинхронная версия масштабируется более чем в 64 раза (MAXIMUM_WAIT_OBJECTS), что максимальное количество объектов ядра, которое может быть агрегировано RegisterWaitForSingleObject для ожидания в одном потоке). Таким образом, вы можете вызвать Consume() в 64 раза параллельно, и он будет блокировать 64 потока. Или вы можете вызвать ConsumeAsync в 64 раза и заблокировать только один поток.

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

1. Синхронные вычисления

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

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

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

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

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

2. Безадресные асинхронные вычисления

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

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

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

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

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

2.1 Коммутаторы

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

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

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

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

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

2.2 Память

Чтобы блоки памяти выполняли свои функции, они должны поддерживать два основных типа операций:

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

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

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

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

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

2.3 Периферийные устройства

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

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

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

2.4 Вычислительные блоки

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

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

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

Заключение

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

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

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

4.4 Сравнение синхронных и асинхронных систем связи

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

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

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

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

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

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

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

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

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

Для цифровой связи компромиссы между производительностью и сложностью приемника часто рассматриваются при выборе модуляции. В число простейших цифровых приемников входят приемники, разработанные для использования с бинарной схемой FSK с некогерентным обнаружением. Единственное требование – битовая синхронизация и сопровождение частоты. Впрочем, если в качестве модуляции выбрать когерентную схему BPSK, то можно получить ту же вероятность битовой ошибки, но при меньшем отношении сигнал/шум (приблизительно на 4 дБ). Недостатком модуляции BPSK является то, что приемник требует точного отслеживания фазы, что может представлять сложную конструктивную проблему, если сигналы обладают высокими доплеровскими скоростями или для них характерно замирание.

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

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


Заключение

В первом разделе моей работы описаны принципы построения беспроводных телекоммуникационных систем связи: приведена схема построения системы сотовой связи, указаны методы разделения абонентов в сотовой связи и отмечены преимущества (конфиденциальность и помехоустойчивость) кодового разделения по сравнению с временным и частотным, а также рассмотрены распространенные стандарты беспроводной связи DECT, Bluetooth и Wi-Fi (802.11, 802.16).

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

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

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


Список литературы:

1. Ратынский М.В. Основы сотовой связи / Под ред. Д. Б. Зимина – М.: Радио и связь, 1998. – 248 с.

2. Скляр Б. Цифровая связь. Теоретические основы и практическое применение, 2-е издание.: Пер. с англ. – М.: Издательский дом “Вильямс”, 2003. – 1104 с.

3. Шахнович И. Современные технологии беспроводной связи. Москва: Техносфера, 2004. – 168 с.

4. Баскаков С.И. Радиотехнические цепи и сигналы: Учеб. для вузов по спец. «Радиотехника». – 3-е изд., перераб. и доп. – М.: Высш. шк., 2000. – 462 с.

5. Шумоподобные сигналы в системах передачи информации. Под ред. проф. В.Б. Пестрякова. М., «Сов. радио», 1973. – 424 с.

6. Варакин Л.Е. Системы связи с шумоподобными сигналами. – М.: Радио и связь, 1985. – 384 с.

7. Вишневский В.М., Ляхов А.И., Портной С.Л., Шахнович И.В. Широкополосные беспроводные сети передачи информации. Москва: Техносфера, 2005. – 592 с.

8. Радченко Ю.С., Радченко Т.А. Эффективность кодового разделения сигналов с неизвестным временем прихода. Труды 5 междунар. конф. «Радиолокация, навигация, связь» - RLNC-99, Воронеж, 1999, т.1, с. 507-514.

9. Радиотехнические системы: Учеб. для вузов по спец. «Радиотехника» / Ю.П. Гришин, В.П. Ипатов, Ю.М. Казаринов и др.; Под ред. Ю.М. Казаринова. – М.: Высш. шк., 1990. – 469 с.