
- •Семестр 2. Раздел 1. Архитектура эвм
- •Тема 6. Сетевые устройства: сетевые платы, сетевое оборудование 124
- •Тема 7. Параллельные архитектуры, графические процессоры. Языки cuda и OpenCl. Квантовые вычисления, днк-компьютеры, нанопроцессоры. 132
- •Тема 1. Архитектуры эвм. Принципы фон Неймана. Конвейеры. Тактовый генератор и резонаторы. Архитектура компьютера
- •Архитектура фон Неймана
- •Принципы фон Неймана
- •Гарвардская архитектура
- •Скалярный процессор
- •Векторный процессор
- •Вычислительный конвейер
- •[Править] Пузырек
- •Генератор тактовых импульсов
- •Кварцевый резонатор
- •Тема 2. Схема цпу, регистры, шины, мосты, чипсеты, слоты расширения, порты
- •Типовые структуры операционного блока микропроцессора
- •Системная шина микропроцессора
- •Принципы построения параллельного порта
- •Принципы построения последовательного порта
- •Синхронные последовательные порты
- •Асинхронные последовательные порты
- •Принципы построения микропроцессорных таймеров
- •Чипсеты современных компьютеров
- •Компоненты южного моста
- •Тема 3. Пзу, озу и способы их организации. Ассоциативная память (кэш). Пзу
- •Статические оперативные запоминающие устройства - озу (ram)
- •Кэширование, выполняемое операционной системой
- •Алгоритм работы кэша с отложенной записью
- •Алгоритм вытеснения
- •Политика записи при кэшировании
- •Кэширование интернет-страниц
- •Кэширование результатов работы
- •Тема 4. Накопители данных: накопители на жестких магнитных дисках, накопители на гибких магнитных дисках, накопители на магнитных лентах, оптические накопители, flash-память Жёсткий диск
- •Устройство
- •Гермозона
- •Устройство позиционирования
- •Блок электроники
- •Низкоуровневое форматирование
- •Геометрия магнитного диска
- •Адресация данных
- •Технологии записи данных
- •Метод продольной записи
- •Метод перпендикулярной записи
- •Метод тепловой магнитной записи
- •Накопитель на гибких дисках
- •Конструкция
- •Оптический диск
- •[Править] Некоторые параметры оптических дисков
- •Флеш-память
- •Принцип действия[1]
- •Nor и nand приборы
- •Slc и mlc приборы
- •[Править] Аудиопамять
- •[Править] Технологические ограничения
- •[Править] Специальные файловые системы
- •[Править] nand
- •Твердотельный накопитель
- •[Править] nand ssd
- •[Править] ram ssd
- •Тема 5. Устройства ввода и вывода данных: принтеры, сканеры, факс-модемы, мыши, клавиатуры, мониторы, электронная бумага Принтер
- •[Править] Классификация
- •[Править] Матричные принтеры
- •[Править] Сравнение с другими типами
- •[Править] Струйные принтеры
- •[Править] Классификация
- •[Править] Сублимационные принтеры
- •[Править] Сравнение с другими типами
- •[Править] Лазерные принтеры
- •[Править] Сравнение с другими типами
- •[Править] Другие принтеры
- •[Править] Интернет-принтеры
- •[Править] История и принципы работы
- •[Править] Обзор современных технологий цифровой печати
- •[Править] Картридж принтера
- •[Править] Печатающая головка
- •Копировальный аппарат
- •История
- •Модуляция
- •[Править] Виды модуляции
- •[Править] Аналоговая модуляция
- •[Править] Цифровая модуляция
- •[Править] Импульсная модуляция
- •[Править] Развёртка
- •[Править] Модуляция
- •[Править] Каналы связи
- •[Править] Приём сигнала
- •[Править] Свёртка
- •[Править] Запись изображения
- •[Править] Запись информации
- •Компьютерная мышь
- •[Править]Трекболы
- •[Править]Сенсорные полоски и панели
- •Компьютерная клавиатура
- •Монитор (устройство)
- •Жк-дисплей
- •Электронная бумага
- •Тема 6. Сетевые устройства: сетевые платы, сетевое оборудование
- •Активное сетевое оборудование
- •Пассивное сетевое оборудование
- •[Править] Принцип работы
- •[Править] Таблица маршрутизации
- •[Править] Применение
- •Сетевой коммутатор
- •Сетевой концентратор
- •[Править] Упрощённое описание принципа работы
- •[Править] Характеристики сетевых концентраторов
- •Межсетевой экран
- •Другие названия
- •Разновидности сетевых экранов
- •[Править] Типичные возможности
- •Тема 7. Параллельные архитектуры, графические процессоры. Языки cuda и OpenCl. Квантовые вычисления, днк-компьютеры, нанопроцессоры. Квантовый компьютер
- •Теория [править] Кубиты
- •[Править] Вычисление
- •[Править] Алгоритмы
- •[Править] Квантовая телепортация
- •[Править] Применение квантовых компьютеров [править] Специфика применения
- •[Править] Приложения к криптографии
- •[Править] Физические реализации квантовых компьютеров
- •Транзисторы на нанотрубках
- •Графический процессор
- •Массово-параллельная архитектура
- •Многоядерный процессор
- •Hyper-threading
Скалярный процессор
Скалярный процессор — это простейший класс микропроцессоров. [1] Скалярный процессор обрабатывает один элемент данных за одну инструкцию (SISD, Single Instruction Single Data), типичными элементами данных могут быть целые или числа с плавающей запятой. В векторных процессорах (SIMD, Single Instruction Multiple Data), в отличие от скалярных, одна инструкция работает с несколькими элементами данных.
Векторный процессор
Векторный процессор — это процессор, в котором операндами некоторых команд могут выступать упорядоченные массивы данных — векторы. Отличается от скалярных процессоров, которые могут работать только с одним операндом в единицу времени. Абсолютное большинство процессоров являются скалярными или близкими к ним. Векторные процессоры были распространены в сфере научных вычислений, где они являлись основой большинства суперкомпьютеров начиная с 1980-х до 1990-х. Но резкое увеличение производительности и активная разработка новых процессоров привели к вытеснению векторных процессоров из сферы повседневных процессоров.
В большинстве современных микропроцессоров имеются векторные расширения (см. SSE). Кроме того, современные видеокарты и физические ускорители можно рассматривать как векторные сопроцессоры.
Иллюстрация работы
Для иллюстрации разницы в работе векторного и скалярного процессора, рассмотрим простой пример попарного сложения двух наборов по 10 чисел. При "обычном" программировании используется цикл, который берёт пары чисел последовательно, и складывает их:
повторить цикл 10 раз
прочитать следующую инструкцию и декодировать
получить первое слагаемое
получить второе слагаемое
сложить
сохранить результат
конец цикла
Для векторного процессора алгоритм будет значительно отличаться:
прочитать следующую инструкцию и декодировать
получить 10 первых слагаемых
получить 10 вторых слагаемых
сложить
сохранить результат
Реализация Cray (en:Cray) расширила возможности вычислений, позволяя выполнять несколько различных операций сразу. Для примера, рассмотрим код складывающий 2 набора чисел и умножающий на третий, в Cray эти операции осуществились бы так:
прочитать следующую инструкцию и декодировать
получить 10 чисел
получить 10 чисел
получить 10 чисел
сложить и умножить их
сохранить результат
Таким образом, математические операции выполняются гораздо быстрее, основным ограничивающим фактором становится время, необходимое для извлечения данных из памяти.
Вычислительный конвейер
Простой пятиуровневый конвейер в RISC-процессорах (IF (англ. Instruction Fetch) — получение инструкции, ID (англ. Instruction Decode) — раскодирование инструкции, EX (англ. Execute) — выполнение, MEM (англ. Memory access) — доступ к памяти, WB (англ. Register write back) — запись в регистр. Вертикальная ось — это последовательные независимые инструкции, горизонтальная — время. Соответственно, в зеленой колонке, которая описывает состояние процессора в один момент времени, самая ранняя, верхняя инструкция уже находится в состоянии записи в регистр, а самая последняя, нижняя инструкция только в процессе чтения.
Конве́йер
Идея заключается в разделении обработки компьютерной инструкции на последовательность независимых стадий с сохранением результатов в конце каждой стадии. Это позволяет управляющим цепям процессора получать инструкции со скоростью самой медленной стадии обработки, однако при этом намного быстрее, чем при выполнении эксклюзивной полной обработки каждой инструкции от начала до конца.
Сам термин «конвейер» пришёл из промышленности, где используется аналогичный принцип работы — материал автоматически подтягивается по ленте конвейера к рабочему, который осуществляет с ним необходимые действия, следующий за ним рабочий выполняет свои функции над получившейся заготовкой, следующий делает еще что-то, таким образом, к концу конвейера цепочка рабочих полностью выполняет все поставленные задачи, не срывая, однако, темпов производства. Например, если на самую медлительную операцию затрачивается одна минута, то каждая деталь будет сходить с конвейера через одну минуту.
Считается, что впервые конвейерные вычисления были использованы либо в проекте ILLIAC II (англ. en:ILLIAC II), либо в проекте IBM Stretch (англ. en:IBM Stretch). Проект IBM Stretch предложил термины «получение» (англ. «Fetch»), «расшифровка» (англ. «Decode») и «выполнение» (англ. «Execute»), которые затем стали общеупотребимыми.
Многие современные процессоры управляются тактовым генератором. Процессор внутри состоит из логических элементов и ячеек памяти — триггеров. Когда приходит сигнал от тактового генератора, триггеры приобретают своё новое значение и логике требуется некоторое время для декодирования новых значений. Затем приходит следующий сигнал от тактового генератора, триггеры принимают новые значения, и так далее. Разбивая последовательности логических элементов на более короткие и помещая триггеры между этими короткими последовательностями уменьшают время, необходимое логике для обработки сигналов. В этом случае длительность одного такта процессора может быть соответственно уменьшена.
Например, простейший конвейер RISC-процессоров можно представить пятью стадиями с наборами триггеров между стадиями:
получение инструкции (англ. Instruction Fetch);
декодирование инструкции (англ. Instruction Decode) и чтение регистров (англ. Register fetch);
выполнение (англ. Execute);
доступ к памяти (англ. Memory access);
запись в регистр (англ. Register write back);
При написании ассемблерного кода (либо разработке компилятора, генерирующего последовательность инструкций) делается предположение, что результат выполнения инструкций будет точно таким, как если бы каждая инструкция заканчивала выполняться до начала выполнения следующей за ней. Использование конвейера сохраняет справедливость этого предположения, однако не обязательно сохраняет порядок выполнения инструкций. Ситуация, когда одновременное выполнение нескольких инструкций может привести к логически некорректной работе конвейера, известна как «конфликт конвейера» (англ. Pipeline hazard). Существуют различные методы устранения конфликтов (форвардинг и другие).
Бесконвейерная архитектура значительно менее эффективна из-за меньшей загрузки функциональных модулей процессора в то время, пока один или небольшое число модулей выполняет свою роль во время обработки инструкций. Конвейер не убирает полностью время простоя модулей в процессорах как таковое и не уменьшает время выполнения каждой конкретной инструкции, но заставляет модули процессора работать параллельно над разными инструкциями, увеличивая тем самым количество инструкций, выполняемых за единицу времени, а значит и общую производительность программ.
Процессоры с конвейером внутри устроены так, что обработка инструкций разделена на последовательность стадий, предполагая одновременную обработку нескольких инструкций на разных стадиях. Результаты работы каждой из стадий передаются через ячейки памяти на следующую стадию, и так — до тех пор, пока инструкция не будет выполнена. Подобная организация процессора, при некотором увеличении среднего времени выполнения каждой инструкции, тем не менее обеспечивает значительный рост производительности за счёт высокой частоты завершения выполнения инструкций.
Не все инструкции являются независимыми. В простейшем конвейере, где обработка инструкции представлена пятью стадиями, для обеспечения полной загрузки, в то время пока заканчивается обработка первой инструкции, должно обрабатываться параллельно ещё четыре последовательных независимых инструкции. Если последовательность содержит инструкции, зависимые от выполняемых в данный момент, то управляющая логика простейшего конвейера приостанавливает несколько начальных стадий конвейера, помещая этим самым в конвейер пустую инструкцию («пузырёк»), иногда неоднократно, — до тех пор, пока зависимость не будет разрешена. Существует ряд приёмов, таких как форвардинг, значительно снижающих необходимость приостанавливать в таких случаях часть конвейера. Однако зависимость между инструкциями, одновременно обрабатываемыми процессором, не позволяет добиться увеличения производительности кратно количеству стадий конвейера в сравнении с бесконвейерным процессором.
Преимущества и недостатки
Конвейер помогает не во всех случаях. Существует несколько возможных минусов. Конвейер инструкций можно назвать «полностью конвейерным», если он может принимать новую инструкцию каждый машинный цикл (англ. en:clock cycle). Иначе в конвейер должны быть вынужденно вставлены задержки, которые выравнивают конвейер, при этом ухудшат его производительность.
Преимущества конвейера:
Время цикла процессора уменьшается, таким образом увеличивая скорость обработки инструкций в большинстве случаев.
Некоторые комбинационные логические элементы, такие как сумматоры (англ. adders) или умножители (англ. multipliers) могут быть ускорены путем увеличения количества логических элементов. Использование конвейера может предотвратить ненужное наращивание количества элементов.
Недостатки конвейера:
Беcконвейерный процессор исполняет только одну инструкцию за раз. Это предотвращает задержки веток инструкций (фактически, каждая ветка задерживается), и проблемы, связанные с последовательными инструкциями, которые исполняются параллельно. Следовательно, схема такого процессора проще и он дешевле для изготовления.
Задержка инструкций в беcконвейерном процессоре слегка ниже, чем в конвейерном эквиваленте. Это происходит из-за того, что в конвейерный процессор должны быть добавлены дополнительные триггеры.
У беcконвейерного процессора скорость обработки инструкций стабильна. Производительность конвейерного процессора предсказать намного сложнее, и она может значительно различаться в разных программах.
Общий четырехуровневых конвейер; цветные квадраты символизируют независимые друг от друга инструкции
Справа изображен общий конвейер с четырьмя стадиями работы:
Получение (англ. Fetch)
Раскодирование (англ. Decode)
Выполнение (англ. Execute)
Запись результата (англ. Write-back)
Верхняя серая область — список инструкций, которые предстоит выполнить. Нижняя серая область — список инструкций, которые уже были выполнены. И средняя белая область является самим конвейером.
Выполнение происходит следующим образом:
Цикл |
Действия |
0 |
Четыре инструкции ожидают исполнения |
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
Все инструкции были выполнены |