first lesson uniq Flashcards

1
Q

Что означает MIPS и к какому классу процессоров относится?

A

MIPS (Microprocessor without Interlocked Pipeline Stages) — это архитектура процессоров с набором команд RISC (Reduced Instruction Set Computing).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Назовите три ключевые характеристики архитектуры MIPS.

A
  1. RISC-архитектура (простые инструкции, ограниченный набор команд, много регистров). 2. Конвейерная обработка (5 стадий: Fetch, Decode, Execute, Memory, Write-back). 3. Режимы работы (User Mode – ограниченный, Kernel Mode – полный доступ).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Какие стадии выполняет команда в конвейере MIPS?

A
  1. Fetch – выборка инструкции. 2. Decode – декодирование. 3. Execute – выполнение. 4. Memory – работа с памятью. 5. Write-back – запись результата.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Сколько регистров общего назначения в MIPS и какая особенность у $0?

A

В MIPS 32 регистра общего назначения ($0 – $31). Регистр $0 всегда равен 0.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Какие три основных типа инструкций используются в MIPS?

A
  1. R-тип – операции с регистрами (арифметические, логические). 2. I-тип – операции с константами и памятью (загрузка, сохранение, ветвления). 3. J-тип – команды переходов (J, JAL).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Как сложить два числа в MIPS Assembly?

A

lw $t0, val1; lw $t1, val2; add $t2, $t0, $t1; sw $t2, result (Загрузка чисел, сложение, сохранение результата).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

В каких устройствах применялась архитектура MIPS?

A

Игровые консоли (PlayStation 1, PlayStation 2, Nintendo 64), сетевое оборудование (Cisco, Mikrotik), встраиваемые системы, обучение.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

В чем основные различия между MIPS, ARM и RISC-V?

A

MIPS – использовался в встраиваемых системах, но теряет популярность. ARM – доминирует в мобильных устройствах. RISC-V – открытая архитектура, быстро развивается.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Почему популярность MIPS снизилась?

A

Из-за роста ARM и RISC-V, но некоторые компании (например, Loongson) продолжают разработку процессоров на основе MIPS.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Что такое конвейерная обработка (pipelining) в MIPS?

A

Метод повышения производительности, при котором несколько инструкций обрабатываются одновременно на разных стадиях выполнения.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Сколько стадий у классического конвейера MIPS и какие они?

A

5 стадий: 1. IF (Instruction Fetch) – выборка команды. 2. ID (Instruction Decode) – декодирование. 3. EX (Execute) – выполнение. 4. MEM (Memory Access) – доступ к памяти. 5. WB (Write Back) – запись результата.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Что происходит на стадии IF (Instruction Fetch)?

A

Процессор загружает инструкцию из памяти по адресу Program Counter (PC) и увеличивает PC на 4.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Что происходит на стадии ID (Instruction Decode)?

A

Процессор расшифровывает инструкцию и извлекает регистры, которые потребуются для выполнения.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Какая функция у стадии EX (Execute)?

A

Выполнение арифметических и логических операций в ALU (Arithmetic Logic Unit). Для branch-инструкций вычисляется новый адрес.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Что делает стадия MEM (Memory Access)?

A

Осуществляет доступ к памяти для инструкций загрузки и сохранения (lw, sw). Остальные команды пропускают этот этап.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Что выполняет стадия WB (Write Back)?

A

Записывает результат вычислений или загруженные данные в регистры.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Как работает конвейер MIPS?

A

Каждая стадия выполняет свою часть работы, что позволяет обрабатывать несколько команд одновременно, повышая производительность.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Какие основные конфликты встречаются в конвейере?

A
  1. Структурные – два запроса к одному устройству. 2. По данным – инструкция требует результат предыдущей, но он ещё не записан. 3. По управлению – процессор не знает, какую инструкцию загружать после branch.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Какие методы используются для разрешения конфликтов в конвейере?

A

Пересылка данных (forwarding), предсказание переходов (branch prediction), задержка ветвления (branch delay slot).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Как таблица выполнения конвейера показывает параллельное выполнение инструкций?

A

В таблице видно, что пока первая инструкция завершает WB, вторая находится в MEM, а третья – в EX, что увеличивает скорость выполнения.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Почему конвейер MIPS ускоряет выполнение программ?

A

Конвейер позволяет выполнять несколько инструкций одновременно, распределяя их по разным стадиям выполнения.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Как Go управляет памятью?

A

Go использует автоматическое управление памятью с разделением на стек (локальные переменные) и кучу (динамически выделенная память).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Чем отличается стек от кучи в Go?

A

Стек – быстрый, используется для локальных переменных. Куча – медленнее, используется для глобальных объектов и передаваемых по указателю переменных.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Что такое escape analysis в Go?

A

Анализ, определяющий, нужно ли переменной ‘убегать’ в кучу или её можно оставить в стеке.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Как работает сборщик мусора (GC) в Go?
Использует алгоритм триколорной маркировки и работает параллельно с программой для минимизации задержек.
26
Какие методы оптимизации памяти в Go?
Использование `sync.Pool`, предварительное выделение `make([]T, n, cap)`, минимизация выделений в куче.
27
Что может вызвать утечки памяти в Go?
Горутины без завершения, глобальные структуры, удерживающие ненужные ссылки, плохо управляемые кэш-структуры.
28
Какие инструменты профилирования памяти в Go?
pprof (`net/http/pprof`), `go tool trace`, `memstats`, `benchmem`.
29
Как избежать утечек памяти при использовании горутин?
Закрывать каналы, следить за завершением горутин, использовать `context.Context` для управления временем жизни.
30
Что делает `sync.Pool`?
Позволяет повторно использовать объекты для уменьшения нагрузки на сборщик мусора.
31
Что показывает изображение конвейерной микроархитектуры MIPS?
График выполнения инструкций в 5-стадийном конвейере MIPS.
32
Какие стадии включает 5-стадийный конвейер MIPS?
1. IF (Instruction Fetch) – выборка инструкции. 2. ID (Instruction Decode) – декодирование. 3. EX (Execute) – выполнение в ALU. 4. MEM (Memory Access) – доступ к памяти. 5. WB (Write Back) – запись результата.
33
Как читать таблицу выполнения инструкций?
Каждая строка – выполнение одной инструкции. Инструкции накладываются друг на друга, новые загружаются каждый такт.
34
Что означают 'Data hazards' в конвейере?
Конфликты по данным – когда инструкция зависит от результата предыдущей. Решение: пересылка данных (forwarding).
35
Что такое 'Structural hazards'?
Структурные конфликты – когда две инструкции используют одно и то же устройство одновременно. Решение: разделение памяти или добавление буферов.
36
Что такое 'Control hazards'?
Конфликты управления – возникают при ветвлениях (branch), когда процессор не знает, какую команду загружать. Решение: предсказание переходов (branch prediction).
37
Как MIPS конвейер улучшает производительность?
Позволяет выполнять несколько команд одновременно, разделяя их по разным стадиям выполнения.
38
Как решаются конфликты управления в MIPS?
С помощью предсказания переходов (branch prediction) или задержки ветвления (branch delay slot).
39
Какие примеры команд могут вызвать конфликты в конвейере MIPS?
Команды ветвления (`beq`, `bne`, `jmp`), загрузки (`lw`), если их результат используется сразу.
40
Что такое VLIW (Very Long Instruction Word)?
Архитектура процессоров, в которой компилятор заранее объединяет несколько независимых операций в одну длинную инструкцию.
41
Какое ключевое отличие VLIW от Out-of-Order Execution?
VLIW использует компилятор для планирования инструкций, а OOO-процессоры изменяют порядок выполнения динамически.
42
Какие преимущества у VLIW?
Простая аппаратная реализация, высокая параллельность, эффективен для предсказуемых задач (мультимедиа, научные вычисления).
43
Какие недостатки у VLIW?
Проблемы с совместимостью программ, неэффективность при зависимых командах, невозможность динамического переупорядочивания.
44
Где используется VLIW?
GPU (AMD Radeon), цифровые сигнальные процессоры (DSP), мультимедийные процессоры, архитектура Intel Itanium (EPIC).
45
Что такое суперскалярный процессор?
Процессор, который выполняет несколько инструкций за такт, распределяя их по разным конвейерам.
46
Как суперскалярные процессоры обрабатывают команды?
Используют несколько ALU, FPU и блоков SIMD для параллельного выполнения инструкций.
47
Чем суперскалярные процессоры отличаются от VLIW?
VLIW управляется компилятором, а суперскалярные процессоры динамически распределяют команды во время выполнения.
48
Какие технологии используют суперскалярные процессоры?
Out-of-Order Execution, Branch Prediction, динамическое планирование инструкций.
49
Примеры суперскалярных процессоров?
Intel Core i7/i9, AMD Ryzen, Apple M-серия, ARM Cortex-A.
50
Что такое предсказание ветвлений (Branch Prediction)?
Техника, используемая процессорами для угадывания результата ветвления до его фактического выполнения, чтобы избежать простоя конвейера.
51
Почему ветвления создают проблему в конвейере?
Если процессор загружает неправильную инструкцию, конвейер очищается, что приводит к потере тактов.
52
Какие виды предсказания ветвлений существуют?
1. Статическое предсказание (предположение о фиксированном направлении). 2. Динамическое предсказание (анализ истории выполнения инструкций).
53
Как работает статическое предсказание ветвлений?
Процессор всегда предполагает, что ветвление пойдет в одном направлении, например, 'не будет выполнено'.
54
Что такое динамическое предсказание ветвлений?
Метод, использующий историю выполнения инструкций для точного предсказания будущих ветвлений.
55
Какие методы используются в динамическом предсказании?
One-bit predictor, Two-bit predictor, Branch Target Buffer (BTB), TAGE Predictor.
56
Почему точность предсказания ветвлений важна?
Высокая точность (~95%) уменьшает потери времени на очистку конвейера и ускоряет выполнение программ.
57
Что происходит при ошибке предсказания?
Процессор должен очистить конвейер и загрузить новую инструкцию, что замедляет выполнение программы.
58
Как предсказание ветвлений влияет на современные процессоры?
Процессоры с глубокими конвейерами (15+ стадий, например, Intel Skylake) сильно замедляются при ошибках в предсказаниях.
59
Что такое иерархия памяти?
Структура компьютерной памяти, организованная в виде уровней с разной скоростью, емкостью и стоимостью.
60
Каков порядок уровней памяти в иерархии?
1. Регистры CPU, 2. Кэш (L1, L2, L3), 3. Оперативная память (RAM), 4. Жесткие диски (HDD, SSD), 5. Оптические и архивные носители.
61
Почему процессоры используют иерархию памяти?
Чтобы ускорить доступ к данным, используя быстрые, но маленькие уровни (кэш, RAM) перед медленными (HDD, SSD).
62
Как работает механизм кэширования?
Если данные запрашиваются часто, они хранятся в быстром кэше процессора (L1, L2, L3) для быстрого доступа.
63
Что такое принцип локальности?
1. Временная локальность – недавно использованные данные, скорее всего, будут использованы снова. 2. Пространственная локальность – соседние данные также могут быть использованы.
64
Какие типы кэша существуют?
L1 (самый быстрый, но маленький), L2 (больше и медленнее), L3 (общий для всех ядер процессора).
65
Что такое swap-файл (виртуальная память)?
Место на диске, используемое ОС, когда RAM заполнена, но доступ к swap-файлу медленный.
66
Почему HDD и SSD медленнее RAM?
RAM использует DRAM, которая быстрее, а HDD и SSD требуют больше времени на доступ к данным.
67
Как процессор ищет данные в памяти?
Сначала проверяет регистры и кэш, затем RAM, затем диск, а в крайнем случае – архивные носители.
68
Что такое DRAM (Dynamic RAM)?
Оперативная память, использующая один транзистор и один конденсатор для хранения данных, требует периодического обновления (refresh cycle).
69
Как работает DRAM?
Каждая ячейка памяти хранит бит как заряд в конденсаторе. Со временем заряд теряется, поэтому данные необходимо обновлять.
70
Где используется DRAM?
В оперативной памяти компьютеров (RAM), графической памяти (VRAM), буферах SSD и HDD.
71
Какие преимущества у DRAM?
Высокая плотность хранения данных, дешевле, чем SRAM, проста в реализации.
72
Какие недостатки у DRAM?
Медленнее, требует постоянного обновления данных (refresh cycle), потребляет больше энергии.
73
Что такое SRAM (Static RAM)?
Память, использующая 6 транзисторов на ячейку и не требующая обновления, поэтому работает быстрее, чем DRAM.
74
Как работает SRAM?
Использует триггеры (Flip-Flop) для хранения данных, что делает её быстрой и энергосберегающей.
75
Где используется SRAM?
В кэш-памяти процессоров (L1, L2, L3), буферах процессоров, маршрутизаторах, FPGA.
76
Какие преимущества у SRAM?
Очень высокая скорость доступа, не требует обновления, энергосберегающая.
77
Какие недостатки у SRAM?
Дороже, чем DRAM, занимает больше места на кристалле, имеет низкую плотность хранения данных.
78
Чем DRAM отличается от SRAM?
DRAM медленнее и требует обновления, но дешевле и имеет большую плотность. SRAM быстрее и энергоэффективнее, но дороже.
79
Что такое регистры в x86?
Специальные ячейки процессора, используемые для хранения данных и управления вычислениями.
80
Какие основные разрядности регистров в x86?
8-бит (AL, AH), 16-бит (AX), 32-бит (EAX), 64-бит (RAX).
81
Как работают 8-битные регистры в x86?
AL – младшие 8 бит, AH – старшие 8 бит 16-битного регистра AX.
82
Что такое AX в архитектуре x86?
16-битный аккумуляторный регистр, объединяющий AH и AL.
83
Как появился 32-битный регистр EAX?
EAX – расширенная версия AX, добавляющая 16 старших бит в 32-битных процессорах.
84
Что такое RAX в x86-64?
64-битный регистр, расширяющий EAX для работы в x86-64 процессорах.
85
Почему x86 использует иерархию регистров?
Для совместимости со старыми программами, гибкости работы с данными и оптимизации кода.
86
Как записать значение в AL, AH, AX, EAX на ассемблере?
Пример: `mov al, 0x10; mov ah, 0x20; mov ax, 0x1234; mov eax, 0x12345678`.
87
Какие основные типы регистров существуют в x86?
Общие регистры (GPR), указатель стека (RSP), базовый указатель (RBP), дополнительные регистры (R8-R15 в x86-64).
88
Как устроена разрядность регистров x86?
8-бит (AL, AH), 16-бит (AX), 32-бит (EAX), 64-бит (RAX).
89
Что такое RAX и как он связан с EAX?
RAX – 64-битный регистр, включающий EAX (32-битный), AX (16-битный) и AL/AH (8-битные части).
90
Какие регистры отвечают за управление стеком?
RSP – указатель вершины стека, RBP – базовый указатель на стековую область.
91
Какие регистры используются в операциях со строками?
RSI (Source Index) – источник данных, RDI (Destination Index) – приемник данных.
92
Какие дополнительные регистры появились в x86-64?
Регистры R8 - R15, расширяющие количество доступных GPR-регистров.
93
Почему важно уметь работать с разными частями регистра?
Гибкость в использовании памяти, совместимость со старыми программами, оптимизация кода.
94
Как можно записать значение в AL, AX, EAX, RAX на ассемблере?
Пример: `mov al, 0x10; mov ax, 0x1234; mov eax, 0x12345678; mov rax, 0x1234567890abcdef`.
95
Что такое регистр флагов (FLAGS) в x86?
Регистр, содержащий флаги, указывающие на результат выполнения операций (переполнение, ноль, перенос и др.).
96
Какие основные флаги существуют в x86?
CF (перенос), PF (четность), AF (вспомогательный перенос), ZF (ноль), SF (знак), TF (трассировка), IF (прерывания), DF (направление), OF (переполнение).
97
Как работает Zero Flag (ZF)?
Устанавливается, если результат арифметической операции равен 0.
98
Как флаги используются в условных переходах?
Например, после `cmp eax, ebx`, команда `je` проверяет ZF для перехода, если значения равны.
99
Что такое программный счетчик (PC, RIP)?
Регистр, указывающий на следующую инструкцию, которую выполнит процессор.
100
Как PC изменяется при выполнении инструкций?
Автоматически увеличивается после каждой инструкции, а при `JMP` или `CALL` обновляется вручную.
101
Что такое виртуальная память?
Механизм, позволяющий программам работать с виртуальными адресами, которые операционная система сопоставляет с физической памятью.
102
Как работает страничная адресация?
Процессор использует таблицы страниц для преобразования виртуальных адресов в физические.
103
Что такое Page Fault?
Ошибка страницы, возникающая, когда требуемая виртуальная страница отсутствует в RAM, и ОС загружает ее с диска.
104
Что делает swap-файл?
Используется операционной системой для хранения редко используемых страниц памяти на диске.
105
Что такое Swiss Table?
Современная реализация хеш-таблицы, используемая в Google Abseil, Rust `hashbrown`, C++23 `std::unordered_map`, обеспечивающая высокую производительность и кэш-эффективность.
106
Как Swiss Table использует открытую адресацию?
Все элементы хранятся в одном массиве без указателей, что минимизирует фрагментацию памяти и улучшает кэш-локальность.
107
Как Swiss Table ускоряет поиск с помощью SIMD?
Использует 128-битные регистры x86, чтобы сканировать 16 ячеек одновременно, ускоряя процесс поиска.
108
Как работает метаданные (Control Byte) в Swiss Table?
Каждая ячейка имеет контрольный байт, который может быть EMPTY (0x80), DELETED (0xFE) или OCCUPIED (hash & 0x7F), позволяя быстро пропускать пустые слоты.
109
Что такое Робин Гуд хеширование?
Алгоритм, перераспределяющий элементы так, чтобы длинные пробирования забирали слоты у более коротких, предотвращая кластеризацию.
110
Как Swiss Table предотвращает коллизии?
Использует квадратичное пробирование и стратегию Робин Гуд хеширования для эффективного распределения элементов.
111
Как происходит увеличение размера Swiss Table?
При заполнении на 87.5% таблица удваивает размер и перераспределяет элементы, сохраняя O(1) среднюю сложность операций.
112
Почему Swiss Table более эффективна по памяти?
За счёт отсутствия указателей и высокой плотности хранения, достигая высокого коэффициента загрузки (~87.5%).
113
Что такое SIMD?
Архитектурный подход, при котором одна инструкция применяется сразу к нескольким данным, ускоряя вычисления.
114
Какие типы SIMD существуют?
AVX (Intel/AMD, до 256 бит), AVX-512 (Intel, 512 бит), NEON (ARM, 128 бит), Intel MIC (Xeon Phi, 512 бит).
115
Что такое AVX и где он используется?
Advanced Vector Extensions (AVX) – расширение SIMD в x86-процессорах для научных и ИИ-вычислений.
116
Чем AVX-512 отличается от AVX?
AVX-512 увеличивает размер векторных регистров до 512 бит, улучшая параллельные вычисления.
117
Что такое NEON и как он связан с ARM?
NEON – векторный модуль в ARM-процессорах, используемый для обработки изображений, видео и вычислений в мобильных устройствах.
118
Как SIMD ускоряет вычисления?
Позволяет обрабатывать несколько элементов данных одной инструкцией, уменьшая затраты на циклы процессора.
119
Какие задачи выигрывают от SIMD?
Мультимедийные операции, кодирование видео, научные вычисления, искусственный интеллект.
120
Где SIMD используется в современных процессорах?
В CPU (Intel, AMD, ARM), GPU (NVIDIA CUDA, AMD GCN), DSP (Qualcomm Hexagon).
121
Что такое GPGPU?
General-Purpose Computing on GPU – использование графических процессоров для общих вычислений.
122
Как GPU используют SIMD?
GPU выполняют одну инструкцию сразу на множестве потоков данных, используя параллельные ядра.
123
Какие основные компоненты архитектуры GPU?
CUDA-ядра, общая память, кэш L2, глобальная DRAM-память.
124
Почему GPU быстрее CPU в SIMD?
Больше потоков, высокая пропускная способность памяти, упрощённая обработка данных.
125
Как выглядит простой CUDA-код для векторного сложения?
Функция `__global__ void add(int *a, int *b, int *c) { c[threadIdx.x] = a[threadIdx.x] + b[threadIdx.x]; }`.
126
Где применяется GPGPU?
Машинное обучение, обработка видео, физические симуляции, криптография.
127
Что такое Tensor Cores?
Специализированные блоки в NVIDIA GPU для ускорения матричных операций в AI-обучении.
128
Как OpenCL отличается от CUDA?
CUDA – проприетарная платформа NVIDIA, OpenCL – открытый стандарт, работающий на разных GPU.
129
Что такое SMT (Simultaneous Multithreading)?
Технология, позволяющая одному физическому ядру процессора обрабатывать несколько потоков одновременно.
130
Что такое Hyper-Threading (HT)?
Маркетинговое название технологии SMT от Intel, увеличивающее пропускную способность процессора.
131
Как работает SMT?
Каждое физическое ядро разделяется на два логических, позволяя выполнять два потока одновременно.
132
Какие преимущества у SMT?
Лучшее использование ресурсов процессора, увеличение вычислительной пропускной способности.
133
Удваивает ли SMT производительность?
Нет, прирост обычно ~30% в зависимости от типа нагрузки.
134
В каких задачах SMT наиболее полезен?
Многопоточные задачи (рендеринг, компиляция), серверные нагрузки, базы данных, виртуализация.
135
Какие процессоры поддерживают SMT?
Intel Core i7/i9, Xeon (HT); AMD Ryzen 5/7/9, EPYC (SMT).
136
Когда стоит отключать SMT?
В задачах с высокой безопасностью (серверы, криптография) или при ограниченной тепловой мощности процессора.