
- •Министерство образования и науки Российской Федерации
- •Цель лекции
- •План лекции
- •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-ресурсы
Контрольные вопросы
1. Что включает понятие «архитектура ЭВМ»?
2. Назовите основные принципы «фон-неймановской архитектуры»
3. Какие существуют другие архитектуры ЭВМ?
4. Укажите достоинства и недостатки известных архитектур.
5. Каким образом можно повысить производительность ЭВМ
Лекция № 8 Машинный язык
Цель лекции
Изучить историю развития и основные понятия машинного языка.
План лекции
1. Машинный язык.
2. Пример машинного языка.
1 Машинный язык
Для того чтобы можно было применять принцип хранимой программы, центральный процессор должен уметь распознавать инструкции, представленные в двоичном коде. Этот набор указаний вместе с системой кодирования называется машинным языком (machine language). Инструкции, написанные на этом языке, называются машинными командами (machine instruction).
Система команд. Список команд, которые должен уметь декодировать и выполнять центральный процессор, очень короткий. На самом деле одна из замечательных сторон вычислительной техники состоит в том, что если машина может выполнять определенные простые, но тщательно подобранные задания, то добавление каких-либо еще возможностей не обязательно улучшит базовые характеристики машины. Другими словами, дополнительные возможности могут сделать машину более удобной в использовании, но они ничего не добавят к основным способностям машины.
Различают два подхода к тому, каким должен быть центральный процессор. При первом подходе считается, что центральный процессор должен выполнять минимальный набор машинных команд. Результатом такого подхода является вычислительная машина с сокращенным набором команд (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-процессор.
Все машинные команды можно разделить на три группы:
♦ команды передачи данных,
♦ арифметико-логические команды,
♦ команды управления.
Команды передачи данных. В эту группу входят команды, которые предписывают перемещение данных из одного места в другое.
Сложение двух чисел, хранящихся в оперативной памяти
Шаг 1. Взять значений из ячейки памяти и поместить его в регистр.
Шаг 2. Взять значение из другой ячейки памяти и поместить его в другой регистр.
Шаг 3. Активировать схему сложения, на входе которой будут данные из регистров, описанных в шагах 1 и 2 и задав еще один регистр в качестве выходного, предназначенного для размещения результата.
Шаг 4. Сохранить результат операции в основной памяти.
Шаг 5. Стоп.
Шаги 1, 2 и 4 алгоритма сложения значений, хранящихся в оперативной памяти относятся к командам передачи данных. Как и в случае оперативной памяти, данные при перемещении из одной ячейки в другую не удаляются из исходной ячейки. Процесс передачи данных больше похож на копирование данных, а не на их перемещение. В этом смысле общепринятые термины «передавать» (transfer) и «перемещать» (move) употребляются неправильно, поскольку термины «копировать» (сору) и «клонировать» (clone) являются более строгими.
Говоря о терминологии, следует упомянуть, что для передачи данных между центральным процессором и оперативной памятью существуют специальные термины. Требование заполнить регистр общего назначения содержимым ячейки памяти обычно называется командой загрузки, и наоборот, требование переместить содержимое регистра в ячейку памяти называется командой сохранения. Шаги 1 и 2 являются командами загрузки, а шаг 4 — командой сохранения.
Важная группа команд, входящая в команды передачи данных, включает в себя инструкции для связи с внешними устройствами центрального процессора (принтерами, клавиатурой, монитором, дисководами и т. д.). Так как с помощью этих команд осуществляются процессы ввода-вывода из него, они называются командами ввода-вывода. Их иногда выделяют в отдельный класс, но мы ранее рассмотрели, как процесс ввода-вывода может быть осуществлен с помощью тех же команд, которые производят передачу данных между центральным процессором и оперативной памятью. Поэтому мы будем рассматривать команды ввода-вывода как часть команд передачи данных.
Арифметико-логические команды. В эту группу входят команды, которые предписывают устройству управления активизировать арифметико-логическое устройство. К этой категории команд относится шаг 3. Как можно понять из его названия, арифметико-логическое устройство выполняет не только простые арифметические операции. К некоторым дополнительным операциям относятся логические операции AND, OR и XOR, которые мы обсуждали ранее и вскоре вновь будем их рассматривать, но уже более подробно. Эти операции часто используются для того, чтобы манипулировать отдельными битами регистра, не затрагивая остальных. Другие операции, доступные в большинстве арифметико-логических устройств, позволяют сдвигать содержимое регистра вправо или влево. Они называются операциями сдвига (SHIFT) или вращения (циклического сдвига) (ROTATE) в зависимости от того, удаляются ли биты, находящиеся на конце регистра, в направлении которого происходит сдвиг, или используются для заполнения пространства на другом его конце.
Команды управления. В эту группу входят команды, которые управляют выполнением программы, а не манипулируют данными. К этой категории команд относится шаг 5, хотя он и является слишком простым примером. Эта группа включает наиболее интересные машинные команды, такие как команды перехода (JUMP) или ветвления (BRANCH), которые предписывают устройству управления выполнять не следующую инструкцию, а какую-нибудь другую. Команды перехода разделяются на команды безусловного и условного перехода. Примером первых может быть инструкция «перейти к шагу 5», примером второй — «если полученное значение равно 0, тогда перейти к шагу 5». Различие заключается в том, что условный переход осуществляется только тогда, когда выполняется условие. Рассмотрим в качестве примера алгоритм деления двух чисел, в котором шаг 3 является условным переходом, исключающим возможность деления на ноль. Деление двух значений, хранящихся в памяти
Шаг 1. Загрузить в регистр значение из памяти.
Шаг 2. Загрузить в другой регистр другое значение из памяти.
Шаг 3. Если второе значение равно нулю, перейти к шагу 6.
Шаг 4. Разделить содержание первого регистра на содержание второго регистра и поместить результат в третий регистр.
Шаг 5. Сохранить содержание третьего регистра в памяти.
Шаг 6. Стоп.