d10. Нотация Дейкстры <–> d11. Типы данных <–> d12. Файлы, блоки <–> d13. Критика фон Неймана, рекурсия
d1. Раскладки клавиатур, кодировки <–> d6. Системы программирования <–> d9. Железки (1-12) <–> d14. Железки (13-35) <–> d15. Железки (36-74)
Рекомендую прочесть эти статьи, чтобы были понятны последующие вопросы и термины (1-12).
ЭВМ — электронная машина для вычислений.
Структурная схема:
Аппаратная реализация процессора фон Неймана — это машина.
Различают 3 принципа:
1) Принцип программного управления
Алгоритм работы программы представлен в виде последовательности команд.
2) Принцип адресности
Основная память состоит из пронумерованных ячеек, и процессору в любой момент доступна любая ячейка памяти. В этих ячейках информация хранится в виде двоичного кода. Содержимое ячейки называется машинным словом.
Архитектура узлов ЭВМ хорошо описывается с помощью булевских выражений (благодаря двоичной системе счисления).
3) Принцип однородности памяти (или принцип хранимой в памяти команды, первый по важности!)
Память компьютера универсальна. В ней неразличимо друг от друга хранятся данные и программы. В зависимости от способа обращения к ячейке памяти одно и то же значение может использоваться и как данные, и как команда.
Время чтения и записи в любой ячейке одинаково, но два этих времени могут не совпадать.
Канал — это специализированный процессор ввода/вывода. В канале есть процессор и память. Канал распараллеливает процессоры, фактически делая компьютер многопроцессорным.
В те времена (эпоха mainframe) связь шла через телефонные линии.
Шина компьютера — информационная магистраль, вокруг которой строится компьютер.
Шина — магистраль обмена данными. Это открытое устройство для соединения, аппаратного расширения, в отличие от замкнутой аппаратуры мэйнфрэймов.
Через адреса, которые есть в шине, можно обмениваться между устройствами.
Шина является к нам в форме материнской платы.
Но по факту все устройства втыкаются в шину
.
Северный и южный мосты — это чипы, которые обеспечивают работу материнской платы.
Северный мост
— работа процессора с оперативной памятью и GPU.Южный мост
— медленная периферия, мелочь всякая.До шины гибкости в компьютерах не было! Шину придумали для миникомпьютера, микропроцессора.
При этом она была быстрой!
pdp11
— 1976 год, 16-ти разрядные мини-ЭВМ фирмы DEC.Фирма DEC
— Digital Equipment Corporation, основана в 1957 году.Лучше шинной архитектуры ничего не придумали.
Далее вслед за DEC в эту сферу втянулась и фирма IBM со своим IBM PC, вышедшим в 1986 году.
Сначала шина была узким местом. Она начала тормозить. Тогда сделали отдельную шину процессора и отдельные шины для видеокарт.
Шине не позволили стать узким местом компьютера — поставили доп.шину и всё! Не надо менять ни программиста, ни драйвера!
Процессор — это главная центральная обрабатывающая часть компьютера. Это полупроводниковый чип (важное замечание!), который нанесён на кристалл, работающий в соответствие с нанесённой на него схемой.
Процессор работает на машинном языке — языке команд процессора!
Процессор состоит из:
(УУ)
(АЛУ)
АЛУ — это конкретная реализация всех программ. Процессор выполняет команды из АЛУ. Чтобы было понятнее: АЛУ — это 100 машин Тьюринга.
УУ — управляет процессом выполнения команд.
Регистр — служебная часть памяти внутри процессора.
При чтении копия машинного слова читается из ячейки памяти и записывается на регистр, а при записи копия машинного слова с регистра посылается в ячейку памяти.
РК, РАК, РД, РАД — лежат на ЦП.
РК — регистр команд, а РАК — регистр адреса команд. РД — регистр данных, а РАД — регистр адреса данных.
По принципу фон Неймана выполнение идёт команда за командой, при этом команда находится в оперативной памяти.
РАК указывает на команду в памяти и загружает команду в РК — на центральный процессор.
Вычисление адресов — непростая штука. Часто они формируются динамически. В этом процессе фигурируют регистры (их номера), где содержатся записи адресов.
Получается, что адреса регистра данных и команд лежат отдельно.
© мухи отдельно, котлеты отдельно
Чтобы данные стали командой, они должны попасть на спец.регистр. Поэтому мусор никогда не станет командой. Спец.регистр не пропустит.
© Машина фон Неймана
- это чаша для существования вирусов.
РАК накручивается на длину выполненной команды. Команды выполнятся одна за другой.
Команда перехода подменяет место, где будет совершён переход.
РАК и РК — активные данные.
И хотя программисту доступны лишь арифметические регистры, он при этом может химичить с памятью: подготовить зловредную версию программы и подменить её!
РАК, РК, РАОП, РДП — недоступны программисту.
Внутри процессора гарвардская архитектура!
Как видно, вопросы связаны. Наша задача на экзамене — составить лаконичный рассказ, затронув смежные темы.
- Каждый процессор внутри всегда
гарвардский
!- а снаружи?…..
Назначение регистра: процессор благодаря нему всегда знает, где идёт команда.
(всё идёт через регистровые адреса, так запоминаем)
Процессор выполняет свои железные, зашитые в ПЗУ команды.
(зашитые немками из фирмы Siemens)
Микропроцессор (1951) (Уилкс) — эта железка выполняет сдвиги, ссылки, но не вычисления.
Что представляют собой ядра?
Потоки — это недопроцессоры, они позволяют распараллелить выполнение команд. При этом потоки имеют функцию ожидания завершения процесса, поэтому они неполноценны.
Микропрограммная реализация обеспечивает гибкую настройку компьютера. За счёт неё компьютер железный (огромный, размером с комнату) упростился до уровня команд.
Микропрограммы подражают командам, разработанным на полноценном ПК.
CISC — Complex Instruction Set Computer — компьютер с набором сложных команд.
CISC читается как КИСК, а не циск.
Зачем нужен сложный набор команд? Чтобы работать с железным железом, когда программирование было на ассемблере. (На компьютерах, прошитых нитками немецких тружениц фирмы сименс.)
Дальше шло усовершенствование железок. Первым, что сделали — ввели косвенную адресацию.
Косвенная адресация нужна для сокращения длины машинных команд (адрес - машинное слово). Адреса в памяти заменялись короткими номерами регистров.
1 регистр — полбайта, значит, сокращение вышло в 8 раз.
Таким образом экономилось место на ОЗУ и на самом жёстком диске.
Таким образом обрабатываются массивы.
Благодаря косвенным схемам адресации вместо нескольких десятков команд получилось несколько сотен команд.
Косвенная адресация, индексация, базирование — это ищем!
Базирование позволяет хранить и запускать программу вне зависимости от настроек команд.
Индекс образуется на лету. Это было нужно, чтобы ускорить работу пк.
АЛУ — арифметико-логическое устройство
RISC
- А зачем нам ассемблер?
- Даже негры на нём не работают!
Тем более, зачем делать CISC, если на асемблере никто не работает и если есть язык C, который быстрее.
© И на котором даже пишутся драйвера видеокарт!
Тогда предложили новую архитектуру — RISC! Уже тогда перестали экономить на памяти. Дефицит памяти пропал, и многоуровневая косвенная адресация стала не нужна. При этом программистам на асемблере платят столько же, сколько и на C, но as-шников нужно больше на один проект, что невыгодно.
© Эра удобного вычисления полинома на асемблере уже прошла!
RISC предложена фирмой IBM. Эта архитектура разбухла в 3-4 раза в размерах программ (у нас плоская память и большой набор команд), процессор стал мощнее на порядок.
Плоская память — от нуля и до (большого числа). Косвенная адресация режется на кусочки и кладется друг на друга.
CISC у фирмы Intel имел высокое распространение и дешивизну, но как пропихуть RISC в массы?
RISC стал внутри, на уровне микропрограмм.
1) RISC-ядро
2) II поколение RISC (64 бита)
3) RISC-32 бита — простая архитектура, используемая в роутерах.
эту информацию стоит изучить подробнее
Остановимся на RISC II поколения (1991г.)
Это процессоры серверного типа, но на одном чипе.
Почему на это дело ушло почти 10 лет? (вспоминаем, что только в 1984 предложили сменить CISC)
Мы говорили о плоской памяти, о том, что адресация не содержит нелинейности. В то время были 32-битные процессоры.
32-битный процессор — тот, который за один такт обрабатывает 32 бита.
Если бы компьютеры не развивались, программы были бы рыхлые (за счёт командных слов).
Как появились 64-битные процессоры:
32 бит может адресовать 2 ГБ. Адрес памяти тоже должен быть 32-битным.
© 32-битный процессор — это
кухонный
процессор. Он нам не годится.
MIPS
MIPS
— Microprocessor without Interlocked Pipeline Stages (процессор R-10000).
RISC отличается большим количеством регистров.
Придумано переименование регистров на ленту. Переименование регистров позволяет быстро переключаться в контексте регистров (обмениваться).
DEC — ALPHA (64 бита). Хотели занять весь серверный рынок.
© Процессорные фирмы не делают процессоры! Они делают деньги!
VLIW
VLIW — Very Large Instruction Word (очень широкое командное слово).
Поищи провалы Intel.
VLIW — это тоже попытка серверного процессора, но не вышедшая в массовом тираже.
SISD — Single Instruction - Single Data.
Далеко не всегда удобно сводить к линейным системам (много памяти, большая погрешность при этом).
Когда 1 единица данных на 1 команду, линейная алгебра этого не терпит. Наша линейная алгебра хочет SIBD.
Векторно-конвейерная архитектура
Появилась векторизация (нужно было выяснить, как вектор представить в скалярном виде). Одна часть вектора на регистре, а другая считался в памяти.
Моделирование ядерных взрывов, нейтронных бомб, прогнозов погоды.
Крей - автор идеи внутреннего распараллеливания (операнды можме загружать параллельно, одновременно).
Процессор Alpha имел 10 конвейеров, т.е. он в 10 раз быстрее себя одного.
- Но Intel всё равно победил в бизнесе, в итоге заработано больше денег, и они сейчас на слуху.
Конвейер распараллеливает за счёт нового/дополнительного оборудования.
В настоящее время конвейеризация пошла в сторону thead’ов (потоков).
Транспьютеры. Транспьютер — способ сделать вычисления из простых процессорных элементов. С помощью них брали изображение, клали в радилокационные яипы, и при помощи компьютерного зрения устанавливали точность изображения (с самолётов).
Сейчас эти задачи осуществляются с помощью видеокарт.
DSP
DSP — Digital Signal Processing — цифровая обработка сигналов.
Это переменные данные, вещественная прямая континуального характера.
Сигналы — это как переменные токи. Переменные токи дискретно преобразуются в двоичные числа, которые можно обработать процессором.
DSP — это цифровая версия аналогового компьютера. Сейчас аналоговые компьютеры сохранены на уровне приборов.
DSP нам нужны, они никуда не уйдут. Взять хотя бы слух — он у нас аналоговый, не цифровой.
© Нормальные люди никогда не пишут на железной машине ассемблера.
- Это всё равно, что есть необработанную пищу или есть бесформенную одежду.
© Машина фон Неймана приходит к нам в виде ЯП
Чтобы программа была выполнена, компьютер должен иметь её в основной памяти (или безграмотно — в оперативной).
Память называется основной, потому что она главнейшая в компьютере. В ней одновременно хранятся данные о нескольких программах, готовых к выполнению.
Если машина в работоспособном состоянии, то в ней есть ОС, обрабатывающая внешние устройства.
А если компьютер выключен, то в его процессоре и в оперативной памяти ничего нет. И в момент включения нет ничего.
Тогда нужна какая-то программа, которая всё это дело запустит!
Здесь, по аналогии со шнурком, который при натяжении развяжет ботинки (вспоминаем технологию бутстрепинга), используется программа начальной загрузки IPL.
IPL
— Initial Program Load, или загрузка начальной программы.© Английским владеют даже тупые англичане!
Но мало включить компьютер. Надо подсунуть ему мелкую программу.
Если бы этого не было: надо было бы на тумблере с лампочками набрать нули и единицы, затем загрузить команду и отправить. Но это не автоматизм.
Нам нужна ОС, которая может откуда-то получать программы и автоматически выполнять их.
Пример выполнения программы включения: 1) Программа попала в пульт. Но пока что это мертвые данные.
2) ОС узнала адресочек команды. Чтобы адрес с данными РАД стал командой, надо загрузить её на РАК.
3) Процессор выполняет циклограмму (повтор итеративной программы).
4) Компьютер разменивает данные, и команда попадает на регистр команд.
5) На регистре УУ дешифрует адрес команды. Она выясняет, мусор ли это, проверяет правильность. В случае правильности дешифровка продолжается, иначе комп выдаст ошибку или остановит дешифровку.
6) У команды есть операнды, но на железе хранятся адреса.
7) Давным давно расшифровка попадала не на регистры команд, а на регистры данных.
8) УУ запускает микропрограммы, АЛУ выполняет уже то, что находится на регистре.
Пример:
C = a + b
1) Разыменовываем a
2) Разыменовываем b
3) Выполним микропрограмму сложения
4) Делаем запоминание/запись в С