Пятница, 22.11.2024, 14:33
Приветствую Вас Гость | RSS | PDA

Всё для студента информата

Полезная информация

Материалы для студента

Всё для студента IT » Материалы для студента » Теория языков программирования

Лекция 2: Языки программирования и программно-машинная архитектура

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

Ранние языки программирования. Основной критерий – эффективный машинный код, т.е. экономия дорогостоящего машинного времени, хотя само написание программы на ЯП занимало достаточно много времени и труда программиста, что было позволительно при невысокой стоимости труда программистов. Это, например, программы на языке FORTRAN для численных расчетов.
Языки программирования настоящего времени. Затраты на программирования значительно возросли и основной критерий ЯП – эффективность процесса написания программ и минимизация вероятности допустить ошибки более значим, чем затраты машинного времени при реализации программы. Это проистекает из-за возможности определения пользовательских типов данных (язык ML), объектов класса (язык C++) и спецификации пакета ( язык Ada).
Влияние архитектуры программного обеспечения на идеологию создаваемого языка через возможности: (1) – реального компьютера, на котором выполняется программа; (2) – модели выполнения или виртуального компьютера, который поддерживает язык на реальном компьютере.

Структура и принципы работы компьютера

Компьютер представляет собой интегрированный набор алгоритмов и структур данных, способный хранить и выполнять программы. Варианты построения компьютера предполагают создание компьютера:

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

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

  1. Данные. Компьютер должен обрабатывать различные типы простейших элементов данных и структур данных.
  2. Элементарные операции. Компьютер должен иметь набор элементарных операций для работы с данными.
  3. Управление последовательностью действий. Компьютер должен обеспечивать управление последовательностью выполнения элементарных операций.
  4. Доступ к данным. Компьютер должен предоставлять механизмы управления данными, необходимыми для выполнения любой операции.
  5. Управления памятью. Компьютер должен предоставлять механизмы управления распределением памяти для программ и данных.
  6. Операционная среда. Компьютер должен предоставлять механизмы связи с внешней средой, содержащей программы и данные, подлежащие обработке.

Эти задачи определяют особенности разработки языка программирования.

Аппаратные средства компьютера

Типичная архитектура компьютера представлена на рис. 2.1.

Организация традиционного компьютера

Данные. На схеме изображены три основных компонента для хранения данных: оперативная память, быстрые регистры и внешние файлы
Оперативная память – линейная последовательность битов с выделением слов фиксированной длины (16, 32 или 64 бита).
Быстрые регистры – слова фиксированной длины с подполями, к которым  имеется прямой доступ. Содержимое регистра – данные и адреса ссылки, по которым можно обращаться за данными или следующей командой.
Кэш – быстродействующая буферная память, располагается  между оперативной памятью  и быстрыми регистрами. Позволяет ускорить доступ к данным, хранящимся в оперативной памяти.
Внешние файлы – данные, хранимые на жестком диске и других носителях информации. Файл состоит из набора записей в виде последовательности битов или байтов.
Компьютер обладает набором встроенных типами данных, которые могут обрабатываться с помощью простейших операций. Набор встроенных типов обычно включает: целые числа, числа с плавающей запятой, символьные строки фиксированной длины и строки битов фиксированной длины.
Помимо этих типов данных сама программа является тоже данными, т.е. имеет некоторое встроенное представление. Представление программы на машинном языке – это последовательность ячеек памяти, в которой содержится одна или более команд. Каждая команда имеет структуру битов, состоящую из кода операции и указателей на операнды.

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

  • CISC – компьютеры или компьютеры с полным набором команд (complex instructions set computers);
  • RISC – компьютеры или компьютеры с сокращенным набором команд (reduced instructions set computers).

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

Интерпретатор выполняет простой циклический алгоритм, показанный на рис.2.2. Цикл включает в себя следующие действия:

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

Алгоритм интерпретации и выполнения программы

Доступ  к данным. Любая машинная команда помимо кода операции содержит указатели к тем операндам, к которым применима операция. Средства указания операндов, средства извлечения значений операндов и записи результата операции. Все эти средства называются средствами управления доступом к данным.
Управление памятью. Эффективная работа компьютера заключается в сведении к минимуму времени бездействия каждой из составных частей: оперативной памяти, центрального процессора, внешних устройств. Основная проблема при этом заключается в  согласовании скоростей работы данных устройств при обработке потока разнородных задач, так как время обращения к оперативной памяти (50 – 70 нс), время выполнения инструкции процессора (5 – 10 нс), время обращение к внешней памяти (10-15 мс)  разнятся в тысячи раз.
Для дешевых  домашних компьютеров используются простейшие средства управления памятью, встроенные в аппаратную часть компьютера. Программы и данные остаются в памяти в течении всего времени выполнения программы и часто выполняется только одна единственная программа. Хотя процессор чаще всего простаивает, но с позиции общей стоимости обработки такой режим является наиболее дешевым и никаких дополнительных аппаратных средств не используется.
В мощных компьютерах применяется так называемый режим мультипрограммирования, в основе которого положен принцип страничной организация памяти или динамического перемещения программ. С тем, чтобы решить проблему согласования высокой скорости процессора и относительно более медленной внешней памяти, программа, находящаяся в ожидании считывания своих страниц, переходит в пассивное состояние и процессор переключается на выполнение другой программы. Такой режим прогонки множества задач в одном процессоре становится возможным благодаря страничной организации памяти или динамического перемещения программ непосредственно в аппаратную часть. Алгоритм страничной организации памяти построен на методах вероятностного предсказания оптимальной подкачки программ и данных с тем, чтобы обеспечить процессору возможность быстрого доступа к ним. При отсутствии необходимых данных для некоторой программы у процессора всегда имеется возможность быстрого выбора другой ожидающей  программы.
Использование кэш-памяти (быстродействующая буферная память небольшого объема – от 1 Кбайт до 512 Кбайт),  как аппаратного средства согласования скорости  доступа к основной памяти и скоростью работы процессора. Кэш-память находится между процессором и оперативной памятью и  содержит данные и инструкции, которые используются сейчас или с большой вероятностью будут использованы в ближайшее время. Данные, находящиеся в кэш-памяти, поддерживают более быстрый доступ процессора к операндам и инструкциям,  чем в случае непосредственного обращения к ячейкам оперативной памяти. Кэш позволяет компьютеру работать в более быстром режиме, компенсируя медленную скорость доступа к оперативной памяти.
Операционная среда. Представляет собой набор внешних запоминающих устройств (дисковая память, ленты, флеш-память) и устройств ввода – вывода, обеспечивающих связь компьютера с внешним миром.
Альтернативная архитектура компьютера. Существует несколько  способов организации аппаратной части компьютера. Рассмотренная выше архитектура называется архитектурой фон Неймана (в честь математика Джона фон Неймана). Модель фон Неймана базируется на центральном процессоре, который выполняет простейшие операции обработки данных, и взаимодействует с оперативной памятью и внешними устройствами. На сегодня мы имеет и другие архитектуры компьютера. Например, мультипроцессорная модель компьютера, когда несколько процессоров обрабатывают собственные программы и взаимодействуют между собой через общую оперативную память. Можно сказать, что эти усовершенствования архитектуры в большой степени не влияют на разработку языка программирования. И в тоже время альтернативные варианты архитектуры типа «облако вычислений», «мировая паутина» уже сегодня влияют на разработку языков программирования.
Состояния компьютера. Рассмотрение процесса выполнения программы как последовательное прохождение компьютера через ряд состояний. В процессе выполнения программы каждое состояние компьютера характеризуется содержимым оперативной памяти, регистров и внешней памяти. Статическое представление компьютера как совокупность данных, операций, управляющих структур и т.д. – это только часть общей картины описания компьютер. Для контроля изменений состояния компьютера  во времени требуется описание динамики изменений состояния каждого из компонентов компьютера. И поэтому выполнение программы можно рассматривать как последовательное во времени изменение состояний компонентов компьютера.

И напоследок пример жизненной цитаты: "Только одно делает исполнение мечты невозможным — это страх неудачи."

Похожие статьи:

Не нашли то, что Вам нужно?.. Найдите ответ на форуме!
Категория: Теория языков программирования | Добавил: admin (03.04.2011)
Просмотров: 1330 | Теги: лекция, Тяп
Сообщество
Помощь
Форма входа
Поиск

Студенческий помощник по информатике © 2024
При цитировании материалов данного сайта, обязательна ссылка на источник: ITstudents.ru



>