# Лекция 13. Виды и классификация архитектур

## Содержание

- [Лекция 13. Виды и классификация архитектур](#лекция-13-виды-и-классификация-архитектур)
  - [Содержание](#содержание)
  - [Архитектура](#архитектура)
  - [Классификация архитектур](#классификация-архитектур)
    - [Классификация архитектур по способу хранения операндов](#классификация-архитектур-по-способу-хранения-операндов)
    - [Классификация архитектур по составу и сложности команд](#классификация-архитектур-по-составу-и-сложности-команд)
    - [Классификация архитектур по способу реализации условных переходов](#классификация-архитектур-по-способу-реализации-условных-переходов)
  - [Классификация инструкций](#классификация-инструкций)
    - [Классификация инструкций по функциональному назначению](#классификация-инструкций-по-функциональному-назначению)
    - [Классификация инструкций по способу адресации операндов](#классификация-инструкций-по-способу-адресации-операндов)
    - [Классификация инструкций по количеству операндов в инструкции](#классификация-инструкций-по-количеству-операндов-в-инструкции)
    - [Основные материалы лекции](#основные-материалы-лекции)

## Архитектура

**Архитектура** - абстрактная модель функциональных возможностей процессора (средства, которыми может пользоваться программист)

_Строгое определение:_

**Архитектура набора команд** (Instruction set architecture) включает в себя два понятия:

- Система команд (инструкции аппаратно реализуемые в процессоре)
- Средства для выполнения команд:
  - форматы данных
  - системы регистров
  - способы адресации
  - модели памяти

## Классификация архитектур

### Классификация архитектур по способу хранения операндов

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

- **Регистровая архитектура**  
  В машинах данного типа процессор включает в себя массив регистров (регистровый файл), известных как регистры общего назначения. Эти регистры можно рассматривать как явно управляемый кэш для хранения недавно использовавшихся данных.
  Регистровая архитектура допускает расположение операндов в одной из двух запоминающих сред: основной памяти или регистрах.

- **Load/store архитектура**  
  Load/store архитектура представляет собой архитектуру набора команд, которая делит инструкции на две категории: доступ к памяти (загрузка и сохранение между памятью и регистрами) и операции ALU (которые происходят только между регистрами).

- **Стековая архитектура**  
  В вычислительных машинах, где реализована архитектура на базе стека, операнды выбираются из двух верхних ячеек стековой памяти. Результат операции заносится в вершину стека.

### Классификация архитектур по составу и сложности команд

**CISC** (complex instruction set computer)
Архитектура с полным набором команд (относится к регистровой архитектуре набора команд)

**Особенности**:

- Имеет большое количество различных команд, каждая из которых выполняется несколько тактов
- Устройство управления с программируемой логикой
- Небольшое количество регистров общего назначения
- Различные форматы команд с разной длиной
- Преобладание двухадресной адресации
- Развитый механизм адресации операндов, включающий различный методы косвенной адресации

---

**RISC** (reduced instruction set computer)
Архитектура с сокращенным набором команд (относится к load/store архитектуре набора команд).

**Особенности**:

- Большая часть команд выполняется за один такт
- Стандартная однословная длина всех команд, равная естественной длине слова и ширине шины данных и допускающая унифицированную конвейерную обработку всех команд
- Малое число стандартных команд (не более 128)
- Малое количество форматов команд (не около 4)
- Малое число способов адресации (не более 4)
- Доступ к памяти только посредством команд чтения и записи (load/store)
- Все команды, кроме чтения и записи, используют внутрипроцессорные межрегистровые пересылки
- Устройство управления с аппаратной (жесткой) логикой

---

![../.pic/Lectures/13.%20Processor%20architecture%20classification/fig_01.png](../.pic/Lectures/13.%20Processor%20architecture%20classification/fig_01.png)

---

**VLIW** (very long instruction word)

![../.pic/Lectures/13.%20Processor%20architecture%20classification/fig_02.png](../.pic/Lectures/13.%20Processor%20architecture%20classification/fig_02.png)

Архитектура с длинным командным словом (грубо говоря, объединение нескольких RISC процессоров работающих параллельно).

**Особенности**:

- Сложный регистровый файл, усложненные связи с вычислительными устройствами
- Большой объем программного кода
- Невозможность миграции программ, написанных под другие архитектуры
- Сложность отладки

---

### Классификация архитектур по способу реализации условных переходов

- Переход происходит или не происходит исходя из значений _флагов_, формируемых операционными устройствами

- Специальные операции меняют содержимое _регистра состояний_ (state register). Команда условного перехода происходит, если содержимое регистра состояний соответствует выполняемой инструкции

## Классификация инструкций

### Классификация инструкций по функциональному назначению

- **Инструкции работы с данными**
  - Перемещение данных
  - Модификация данных
    - Арифметические
    - Логические
    - Сдвига
    - Сравнения

- **Инструкции управления**
  - Управление программой
    - Условный переход
    - Безусловный переход
  - Управления процессором

### Классификация инструкций по способу адресации операндов

- Непосредственная (операнд содержится внутри инструкции)
- Прямая (указывается адрес операнда в основной памяти)
- Регистровая (указывается адрес регистра в регистровом файле)
- Косвенно-регистровая (указывается адрес регистра, в кортом лежит адрес операнда в основной памяти)
- Косвенно-регистровая со смещением (указывается адрес регистра, в котором лежит базовый адрес, к которому прибавляется константа из инструкции, полученное число является адресом операнда в основной памяти)
- Относительная (является суммой регистра специального назначения и константы)

### Классификация инструкций по количеству операндов в инструкции

- 0 - Нет операндов
- 0 - Подразумеваемый операнд
- 1 - один операнд
- 2 - два операнда

### Основные материалы лекции

1. [Ссылка](https://www.youtube.com/watch?v=w4KbkQSDJLU) на видеозапись лекции
