Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 2.docx
Скачиваний:
1
Добавлен:
25.11.2019
Размер:
28.09 Кб
Скачать

Лекция 2

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

( Принстонской) и Гарвардской архитектур.

Понятие алгоритма

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

Алгоритм является одним из фундаментальных понятий математики и вычислительной техники [3,5]. В соответствии с формулировкой ISO (International Organization for Standardization) алгоритм (Algorithm) понимается как конечный упорядоченный набор чётко определённых правил решения проблемы. Имеются и другие определения [3], суть которых фактически сводится к формулировке ISO. Например, алгоритмом считается набор правил, определяющих эффективную процедуру решения любой задачи из некоторого заданного класса задач. Считают, что слово алгоритм (были синонимы: алгоризм, алгорифм и др.) произошло от имени персидского (узбекского) математика IX века Абу—Джафара Мохамеда ибн—Мусы аль—Хорезми, разработавшего правила выполнения 4—х арифметических действий в десятичной системе счисления.

Основные свойства алгоритма - это дискретность, определённость, массовость и результативность.

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

Однозначность действия исполнителя при выполнении команды называется определённостью алгоритма.

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

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

Результативность - это возможность получения результата за конечное число шагов.

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

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

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

Приведённые выше свойства алгоритмов определяют их реализуемость на ВМ в виде вычислительного процесса.

Многоступенчатость обработки

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

Рис 2.1 Многоступенчатая обработка: 1-концептуальный уровень 2-программирование пользователем, 3-уровень высокоуровневых языков, 4- системный программист (компилятор), 5-уровень машинных команд, 6-системный разработчик аппаратной части, программист (микропрограммирование), 7 уровень регистровых передач, 8 разработчик логических схем, логическое программирование, 9 уровень вентилей

Каждый уровень это степень абстрагирования представления

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

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

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

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

На уровне регистровых передач производится разработка аппаратных средств компьютера, удовлетворяющих спецификации машинных команд, требованиям по производительности, стоимости и другим заданным условиям. Конструкции высокоуровневых языков преобразуются компиляторами в машинные команды, которые расшифровываются и затем выполняются, управляя исполнительными функциональными модулями типа АЛУ, блоками регистров и соединяющими их связями (шинами). На этом уровне простые команды реализуются аппаратно, а сложные - в виде микропрограмм, т. е. последовательности микроопераций, управляющих аппаратурой компьютера на вентильном уровне. Микропрограммы записываются в постоянное запоминающее устройство (ПЗУ) и называются аппаратно — программным обеспечением (Firmware). Недостаток микропрограммного управления - снижение производительности, достоинство - гибкость, меньшая стоимость и простота внесения изменений (апгрейд). Компромисс между аппаратным и микропрограммным управлением в смысле их доли в проекте компьютера определяется оптимизацией критерия « стоимость - производительность».

На вентильном уровне функциональные блоки реализуются в виде совокупности схем вентилей (И, ИЛИ, НЕ и других), объединённых связями для выполнения заданных функций. С ростом функциональных возможностей перед исполнителем логического проектирования вентильного уровня функциональных модулей встают всё более сложные задачи. При применении СБИС с большим числом вентилей на кристалле не обойтись без мощных средств автоматизированного проектирования и моделирования для проверки адекватности функционирования разрабатываемых модулей и корректировки обнаруженных ошибок.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]