- •Министерство образования и науки Российской Федерации
- •Цель лекции
- •План лекции
- •1 Происхождение вычислительных машин
- •2 Изучение алгоритмов
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Биты и их хранение
- •2 Оперативная память
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Устройства внешней памяти
- •3 Хранение и поиск файлов
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Представление числовых значений
- •2 Хранение целых чисел
- •3 Хранение дробей
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Представление текста
- •2 Представление изображений
- •Достоинства пиксельной графики
- •Недостатки пиксельной графики
- •Достоинства векторной графики
- •Недостатки векторной графики
- •3 Представление звука
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Сжатие изображений
- •2 Ошибки передачи данных
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Архитектура эвм
- •2 Связь процессора с другими устройствами
- •3 Другие архитектуры
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Машинный язык
- •2 Пример машинного языка
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Выполнение программы
- •2 Пример выполнения программы
- •3 Программы и данные
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Логические операции
- •2 Операции сдвига
- •3 Арифметические операции
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Эволюция операционных систем
- •2 Архитектура операционных систем
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Понятие процесса
- •2 Управление процессами
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Классификация сетей
- •2 Сетевые протоколы*
- •3 Безопасность сетей
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Понятие алгоритма
- •2 Представление алгоритма
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Теория решения задач
- •2 Общие методы решения задач
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Алгоритм последовательного поиска
- •2 Управление циклами
- •3 Алгоритм сортировки методом вставки
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Алгоритмы поиска и сортировки
- •2 Управление рекурсией
- •3 Разработка рекурсивных процедур
- •План лекции
- •1 Эффективность алгоритмов
- •Контрольные вопросы
- •Цель лекции
- •2 Верификация программ
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Эволюция и классификация языков программирования
- •2 Концепции традиционного программирования
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Процедурные единицы
- •2 Реализация языка программирования
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Объектно-ориентированное программирование
- •2 Декларативное программирование
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Структуры данных
- •Integer Scores (2.9).
- •2 Статические и динамические структуры
- •3 Указатели
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Массивы
- •2 Списки
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Структура и функции стека
- •2 Реализация стека
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Очереди
- •2 Деревья
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Пользовательские типы данных
- •Int Age;
- •2 Классы
- •Int *StackEntries;
- •3 Стандартная библиотека шаблонов
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Роль операционной системы
- •2 Последовательные файлы
- •3 Вопросы программирования
- •0000000010000110
- •001100010011001100110100
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Основные положения индексации
- •2 Вопросы программирования
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Основные положения хеширования
- •2 Вопросы программирования
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Общие вопросы
- •2 Система управления базой данных
- •3 Поддержка целостности баз данных
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Модели баз данных
- •2 Реляционная модель баз данных
- •3 Объектно-ориентированные базы данных
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Интеллект и машины
- •2 Распознавание образов
- •3 Мышление
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Искусственные нейронные сети
- •2 Генетические алгоритмы
- •Контрольные вопросы
- •Невычислимые функции Цель лекции
- •План лекции
- •1 Основы машины Тьюринга
- •2 Невычислимая функция
- •3 Сложность задач
- •Листинг 1. Процедура MergeLists для объединения двух упорядоченных списков
- •Листинг 2. Алгоритм сортировки слиянием, реализованный в процедуре MergeSort
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Шифрование с открытым ключом
- •2 Модульная арифметика
- •Контрольные вопросы
- •Литература
- •Internet-ресурсы
3 Другие архитектуры
Рассмотрим архитектуры ЭВМ, отличающиеся от архитектур, обсуждавшихся ранее.
CISC и RISC архитектура. Вы, наверное, будете удивлены тем, что список команд, которые должен уметь декодировать и выполнять центральный процессор, очень короткий. На самом деле одна из замечательных сторон вычислительной техники состоит в том, что если машина может выполнять определенные простые, но тщательно подобранные задания, то добавление каких-либо еще возможностей не обязательно улучшит базовые характеристики машины. Другими словами, дополнительные возможности могут сделать машину более удобной в использовании, но они ничего не добавят к основным способностям машины.
Различают два подхода к тому, каким должен быть центральный процессор. При первом подходе считается, что центральный процессор должен выполнять минимальный набор машинных команд. Результатом такого подхода является вычислительная машина с сокращенным набором команд (Reduced Instruction Set Computer — RISC-машина). В защиту RISC-процессора приводится аргумент, что такой процессор является эффективным и быстродействующим. В то же время, есть сторонники центрального процессора, способного выполнять большое количество сложных команд, даже если многие из них избыточны. Результатом этого подхода является вычислительная машина со сложным набором команд (Complex Instruction Set Computer — CISC-машина). В защиту CISC-архитектуры приводят аргумент, что более сложный процессор легче программировать, так как можно обойтись одной командой для выполнения задачи, которая в RISC – процессоре потребовала бы длинной последовательности команд.
И CISC-процессоры, и RISC-процессоры выпускаются серийно. Процессор Pentium, разработанный компанией Intel, является примером CISC-архитектуры; процессор PowerPC, разработанный альянсом Apple Computer, IBM и Motorola, является примером RISC-архитектуры. Для простоты изложения мы будем рассматривать RISC-процессор.
Конвейерная обработка. Скорость прохождения электрических импульсов по проводнику меньше скорости света. Скорость света примерно равна 30 см в наносекунду (миллиардная доля секунды). Требуется по меньшей мере 2 нс, для того чтобы устройство управления центрального процессора извлекло команду из ячейки памяти, которая находится на расстоянии 30 см от него. (Одна наносекунда требуется для того, чтобы послать запрос чтения, а для получения команды нужно более одной наносекунды.) Следовательно, чтобы извлечь и выполнить команду, такой машине потребуется несколько наносекунд. Это означает, что скорость работы машины можно увеличить, лишь уменьшив ее размер. Пытаясь разрешить эту проблему, инженеры сосредоточили свое внимание на производительности машины (throughput), а не просто на скорости выполнения команд. Термин «производительность» обозначает общее количество работы, которое машина может выполнить за определенное время, а не то, как долго она выполняет одну задачу.
Примером того, как можно повысить производительность машины, не меняя скорости вычислений, является конвейерная обработка (pipelining), техника, которая позволяет перекрытие выполнения шагов машинного цикла во времени. В частности, пока выполняется одна команда, можно выбрать из памяти другую команду. Это означает, что несколько команд могут находиться на «конвейере» одновременно, каждая на различной стадии обработки. Поэтому общая производительность машины возрастает, даже если время, необходимое для выполнения каждой отдельной команды, остается прежним. (Конечно, если встречается команда перехода, то предварительно выбранная из памяти команда не будет выполняться.)
Понятие конвейерной обработки гораздо шире, чем в нашем простом примере. Компьютеры способны выбирать из памяти несколько команд одновременно и выполнять более одной команды единовременно, если эти команды не зависят друг от друга.
Многопроцессорная машина. Конвейерную обработку можно считать первым шагом к параллельной обработке (parallel processing), при которой несколько действий выполняются одновременно. Однако для настоящей параллельной обработки нужно несколько процессоров. Машины, обладающие этим свойством, называются многопроцессорными машинами.
По такому принципу построены многие современные компьютеры. Один метод — подключить несколько процессоров, каждый из которых напоминает центральный процессор в однопроцессорной машине, к одной оперативной памяти. В этой конфигурации процессоры выполняют работу независимо друг от друга, при этом они оставляют друг другу сообщения в общих ячейках памяти, координируя таким образом работу. Например, когда один из процессоров сталкивается со сложной задачей, он может сохранить программу, являющуюся частью этой задачи, в общей памяти и попросить другой процессор выполнить ее. Машина, в которой разные последовательности команд выполняются над разными наборами данных, называется MIMD-машиной (multiple-instruction stream, multiple-data stream — машина с множеством потоков команд и множеством потоков данных), в отличие от более традиционной SISD-машины (single-instruction stream, single-data stream — машина с одним потоком команд и одним потоком данных).
Разновидностью многопроцессорной архитектуры является машина, в которой процессоры соединены вместе так, что они выполняют ту же самую последовательность команд одновременно, каждый над своим набором данных; Такие машины называются машинами с SIMD-архитектурой (single-instruction stream, multiple-data stream — с одним потоком команд и множеством потоков данных). Эти машины используются, когда нужно применить одни и те же действия к отдельным наборам похожих элементов, входящих в один большой блок данных.
При другом подходе к конвейерной обработке строятся большие компьютеры, представляющие собой конгломераты машин меньшего размера, каждая из которых имеет свою память и центральный процессор. В такой архитектуре каждая небольшая машина связана с соседними машинами, поэтому задачи, поставленные перед всей системой, могут быть распределены между отдельными машинами. Таким образом, если задачу, назначенную одной из внутренних машин, можно разбить на независимые подзадачи, то машина может попросить соседние машины выполнять эти подзадачи одновременно. Следовательно, исходная задача будет выполнена за более короткий промежуток времени, чем тот, который потребовался бы на выполнение той же задачи в однопроцессорной машине.
В ходе изучения дисциплины мы также подробно обсудим другие многопроцессорные архитектуры: искусственные нейронные сети, в основании которых лежат теории строения мозга человека.
В заключение рассмотрения приведем основные характеристики информационной модели человека:
скорость передачи информации по каналам ввода — вывода — 30 бит/сек;
максимальное количество информации, накапливаемое к 50 годам, — 10 Мбит;
число мысленных сравнений в 1 с в процессе интеллектуальной деятельности — 18;
число адресов, которые можно одновременно хранить в краткосрочной памяти, — 7;
время доступа к адресуемому фрагменту информации в краткосрочной памяти — 2 с;
скорость передачи данных из долговременной памяти в кратковременную для последовательности двоичных символов фрагмента — 3 эл./с;
количество воспринимаемых глазом цветовых оттенков — около 10 миллионов.
Характеристики человеческого мозга, особенно в части скорости обработки информации, значительно уступают возможностям современных ЭВМ, но мыслительные процессы основаны на иных принципах, которые мы называем творческими, позволяющих более эффективно, чем ЭВМ, решать задачи творческого характера, несмотря на малое быстродействие и небольшой объем памяти.
