Архитектура современных ЭВМ.
Структура курса
- 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