- •230100 «Информатика и вычислительная техника»
- •1 Общие положения
- •1.1 Цели и задачи дисциплины
- •2 Лекция №1 схемы алгоритмов
- •2.1 Ключевые (основные) вопросы (моменты)
- •2.2 Текст лекции
- •2.2.1 Схемы Ляпунова-Янова
- •2.2.2 Программы
- •2.2.3 Микропрограммирование
- •3 Лекция №2 программирование
- •3.1 Ключевые (основные) вопросы (моменты)
- •3.2 Текст лекции
- •3.2.1 Парадигмы программирования
- •3.2.2 Функциональное программирование
- •4 Лекция №3
- •4.1 Ключевые (основные) вопросы (моменты)
- •4.2 Текст лекции
- •4.2.1 Продукционные системы
- •4.2.2 Императивное и объектно-ориентированное программирование
- •5 Лекция №4
- •5.1 Ключевые (основные) вопросы (моменты)
- •5.2 Текст лекции
- •5.2.1 Информационный граф
- •6 Лекция №5
- •6.1 Ключевые (основные) вопросы (моменты)
- •6.2 Текст лекции
- •6.2.1 Управление вычислительным процессом
- •6.2.2 Управление последовательностью команд
- •7 Лекция №6
- •7.1 Ключевые (основные) вопросы (моменты)
- •7.2 Текст лекции
- •7.2.1 Управление по потоку данных
- •8 Лекция №7
- •8.1 Ключевые (основные) вопросы (моменты)
- •8.2 Текст лекции
- •8.2.1 Механизм управления по запросу
- •8.2.2 Механизмы передачи данных
- •9 Лекция №8
- •9.1 Ключевые (основные) вопросы (моменты)
- •9.2 Текст лекции
- •9.2.1 Организация процессора пересылок
- •9.2.2 Пример программы
- •10 Лекция №9
- •10.1 Ключевые (основные) вопросы (моменты)
- •10.2 Текст лекции
- •10.2.1 Теговые машины
- •10.2.2 Ассоциативный процессор
- •11 Лекция №10
- •11.1 Ключевые (основные) вопросы (моменты)
- •11.2 Текст лекции
- •11.2.1 Вычисления с использованием стека
- •12 Лекция №11
- •12.1 Ключевые (основные) вопросы (моменты)
- •12.2 Текст лекции
- •12.2.1 Принципы организации параллельныхвычислений
- •13 Лекция №12
- •13.1 Ключевые (основные) вопросы (моменты)
- •13.2 Текст лекции
- •13.2.1 Квантовые вычисления
8.2.2 Механизмы передачи данных
Для выполнения программы, формально описывающей алгоритм, кроме способа реализации последовательности выполнения команд необходимо также задать способ передачи исходных данных и промежуточных результатов между операторами. Если операнд представлен в виде литерала, то передачи информации между операторами не происходит, так как литерал становится известным в момент компиляции, и в каждую команду в процессе компиляции помещается отдельная его копия. Для передачи операндов в процессе выполнения программы используются два механизма:
вызов операндов по ссылке (по имени), при котором обращение к данным происходит путем ссылки на их адрес (в языках высокого уровня адресу соответствует имя);
вызов по значению (дублирование данных), при котором копии данных передаются операторам, использующим их для вычислений.
Пусть в процессе выполнения программы, соответствующей информационному графу изображенному на рис.4.1, получен промежуточный результат R2, который в дальнейшем будет использован для выполнения последующих операций. При использовании механизма вызова операнда по ссылке операторы обмениваются информацией посредством общей памяти, которая в нашем случае представляет собой отдельную ячейку, хранящую значение R2. Таким образом, передача операндов между операторами осуществляется с использованием взаимных ссылок к одной области памяти, расстановка которых производится на этапе программирования и компиляции. Механизм ссылок просто реализуется, но ограничивает возможность параллельных вычислений из-за конфликтов, возникающих при одновременном обращении к разделяемой памяти нескольких операторов.
В случае передачи промежуточного результата по значению, отдельные копии R2 в качестве входных операндов D7 и D8 непосредственно передаются во все операторы, использующие значение этого результата. Таким образом, происходит копирование значений результата и пересылка этих копий по адресам назначения, содержащимся либо в команде, породившей результат R2, либо в специальном операторе копирования. Во втором случае оператор передает полученный результат только оператору копирования, который рассылает копии по содержащимся в его списке адресам назначения.
Рассылка операндов при реализации механизма вызова по значению осуществляется в виде сообщений, каждое из которых имеет явное или неявное указание начала и конца, адрес процесса получателя и собственно результат операции. Прием и передача сообщения каким-либо процессом знаменует собой некоторое событие, которое может служить для синхронизации параллельно протекающих процессов. В вычислительных системах, ориентированных на обмен сообщениями, не используется совместно используемая память, что приводит к упрощению синхронизации процессов и уменьшению числа ошибок при программировании, однако для реализации обмена сообщениями требуются специальные аппаратные или программные средства, что приводит к дополнительным затратам аппаратуры и времени.
9 Лекция №8
ПРОЦЕССОР ПЕРЕСЫЛОК
