Архитектура современных ЭВМ.

Структура курса

  • 7 лекций
  • 7 лабораторных работ (ассемблер).
  • Зачет: сданы все лабы.

Компьютерная система

  • Программное обеспечение + аппаратная часть
  • Программы + компьютер
  • [Приложения + операционная система] + компьютер
  • Язык программирования + операционная система + архитектура компьютера

Сборка приложений (на примере C программы)

Абстракции операционной системы

  • Абстракция 1: процессы
    • приложения: приложение
    • операционная система: процесс
    • аппаратная часть: компьютер
  • Абстракция 2: виртуальная память
    • приложения: адресное пространство.
    • операционная система: виртуальная память
    • аппаратная часть: физические планки памяти

Абстракции операционной системы

  • Абстракция 3: файловая система
    • приложения: файлы, директории
    • операционная система: файловая система
    • аппаратная часть: диск
  • Абстракция 4: связь
    • приложения: сокеты
    • операционная система: TCP/IP протокол
    • аппаратная часть: сетевой интерфейс

Что такое компьютер?

Классическая модель вычислений фон Нейман.

Классическая модель вычислений фон Нейман.

  • Память компьютера состоит из ячеек, каждой из которых присвоен номер — адрес. Любая из ячеек доступна компьютеру в любой момент времени, и он может обратиться к её содержимому по адресу.
  • Память компьютера используется как для хранения данных, так и для хранения программы. Команды и числа кодируются в двоичной системе счисления. Над командами можно производить те же операции, что и над числами. На этом принципе основана трансляция — перевод текста программы с языка высокого уровня на язык конкретной ЭВМ.

Классическая модель вычислений фон Нейман.

  • Компьютером управляет программа, которая состоит из команд, хранящихся в последовательных ячейках памяти. Каждая команда выполняет операцию из набора операций, доступных компьютеру.
  • Компьютер выполняет команды последовательно — от первой к последней, согласно порядку следования в программе. Этот порядок может быть изменён с помощью специальных команд в зависимости от результатов вычислений.

Что такое компьютер?

  • Один CPU: один вычислительный узел
  • Шина данных: данные из области памяти должны передаваться в вычислительный узел и обратно.
  • Монолитная память: хранит данные и инструкции
  • Инструкции из заданного набора.

Классический компьютер сегодня

Организация памяти

Чтение hello с клавиатуры

Загрузка программы в память

Отображение hello

Многопроцессрность

Инженерная работа

  • Спецификация: описание того, что должна делать?
  • Синтез: поиск решения, нахождение наилучшего решения.
  • Реализация: описание как должно быть это построено?
  • Анализ: проверка того, что получилось с тем что должно было получиться.

Архитектура набора команд (ISA)

  • Количество инструкций, которые понимает процессор, ограничено.
  • Невозможно определить собственную инструкцию.
  • Существует фиксированное количество команд, которые понимает процессор.

Архитектура набора команд (ISA)

  • Одна архитектура микропроцессора трактует число 501012 как add r10, r12
  • другая архитектура — как load r10, 12
  • Комбинация инструкций, которые понимает процессор, и регистров, которые ему доступны, называется архитектурой набора команды (Instruction Set Architecture, ISA).

Примеры

  • Intel и AMD, используют архитектуру набора команд x86.
  • A12, A13, A14, M1 от Apple, понимают набор команд ARM.
  • Программа компилируется под определенный набор команд.

Архитектура набора команд (ISA)

  • Архитектура набора команд сильно влияет на архитектуру процессора.
  • Использование определенной архитектуры набора команд может усложнить или упростить задачу по созданию высокопроизводительного или энергоэффективного процессора.

Лицензирование

  • x86 - Это часть интеллектуальной собственности Intel.
  • компания ARM не производит собственных микропроцессоров
  • ARM занимаются проектированием архитектуры набора команд и предоставляют эталонные образцы микропроцессоров, которые ее реализуют.
  • ARM делает то, что вы хотите.
  • Если вы используете x86, то вам придется делать это на внешних чипах.

CISC, RISC

  • x86 — это то, что называется архитектурой CISC (complex instruction set computing).
  • ARM - архитектура RISC (reduced instruction set computer).
  • Сейчас границы размыты, идеи заимствованы друг от друга.

CISC

  • Раньше: память была очень дорогой. Компиляторы были плохие, а люди писали на ассемблере.
  • Так как память была дорогой, люди искали способ минимизировать использование памяти.
  • Одно из таких решений — использовать сложные инструкции процессора, которые делают много действий.
  • Помогло программистам на ассемблере, так как они смогли писать более простые программы, ведь всегда найдется инструкция, которая выполняет то, что нужно.

CISC

  • Через некоторое время это стало сложным.
  • Проектирование декодеров для таких команд стало существенной проблемой.
  • Изначально ее решили с помощью микрокода.

Микрокод

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

Микрокод

  • Таким образом, процессор содержит небольшой набор простых инструкций. На их основе можно создать множество сложных инструкций из набора команд с помощью добавления подпрограмм в микрокод.
  • Микрокод хранится в ROM-памяти (Read-Only Memory, только для чтения), которая значительно дешевле оперативной памяти.

Микрокод

  • со временем начались проблемы, связанные с подпрограммами в микрокоде.
  • В них появились ошибки.
  • Исправление ошибки в микрокоде в разы сложнее, чем в обычной программе.
  • Нельзя получить доступ к этому коду и протестировать его как обычную программу.

RISC

  • Оперативная память стала дешеветь, компиляторы стали лучше, а большинство разработчиков перестало писать на ассемблере.
  • большинство сложных инструкций CISC не используются большинством программистов.
  • Разработчики компиляторов затруднялись в выборе правильной сложной инструкции.
  • Вместо этого они предпочли использовать комбинацию нескольких простых инструкций для решения проблемы.

RISC

  • Идея RISC заключается в замене сложных инструкций на комбинацию простых.
  • Так не придется заниматься сложной отладкой микрокода.
  • Вместо этого разработчики компилятора будут решать возникающие проблемы.
  • RISC-код может быть непростым для человека.
  • Архитектура RISC оптимизирована для компиляторов, но не для людей.

RISC, CISC