mirror of
https://github.com/MPSU/APS.git
synced 2025-09-15 17:20:10 +00:00
fix lectures typos (#138)
* Update 06. RISC-V architecture.md * Update 02. Instruments.md * Update 03. Digital arithmetics.md * Update 04. Operations units.md * Update 05. Sequencial logic.md * Update 07. RISC-V programming.md * Update 08. Singlecycle processor.md * Update 09. Multicycle processor.md * Update 10. Pipeline processor.md * Update 11. Pipeline hazards.md * Update Lectures/02. Instruments.md * Update Lectures/04. Operations units.md --------- Co-authored-by: Andrei Solodovnikov <VoultBoy@yandex.ru>
This commit is contained in:
@@ -2,13 +2,19 @@
|
||||
|
||||

|
||||
|
||||
Для каких бы специализированных задач не разрабатывались процессоры, структурно любой их них состоит из 4 основных блоков: ***память,*** для хранения данных и команд, ***операционное устройство***, для выполнения различных операций над данными, ***блока интерфейсной логики***, для сопряжения ядра процессора с внешним миром, и ***устройства управления***, которое последовательно считывает инструкции из памяти, дешифрует их и в соответствии с этим управляет всеми блоками процессора.
|
||||
Для каких бы специализированных задач не разрабатывались процессоры, структурно любой их них состоит из 4 основных блоков:
|
||||
|
||||
- **память** — для хранения данных и команд;
|
||||
- **операционное устройство** — для выполнения различных операций над данными;
|
||||
- **блок интерфейсной логики** — для сопряжения ядра процессора с внешним миром;
|
||||
- **устройство управления** — последовательно считывает инструкции из памяти, дешифрует их и в соответствии с этим управляет всеми блоками процессора.
|
||||
|
||||
|
||||
И даже при большом выборе моделей на рынке, в новых инженерных и научных областях все больше и больше применяются специализированные решения на основе *программируемых логических интегральных схем* (ПЛИС, *англ*. FPGA) - микросхем с реконфигурируемой структурой. Разработка проектов на ПЛИС практически всегда ведется с использованием *языков описания аппаратуры*(hardware description language, HDL). Одним из наиболее популярных языков является Verilog HDL. Мы рассмотрели его основные языковые конструкции.
|
||||
|
||||

|
||||
|
||||
В заключении было рассказано про такое понятие, как ***критический путь***. Сигналу требуется время, чтобы пройти через логический вентиль. Комбинационная схема, как правило, стоит из нескольких рядов цифровых вентилей. Так вот, критический путь, это самый длинный путь прохождения сигнала через схему. Другими словами, цепь с самой большой задержкой распространения сигнала от входа до выходы. Критический путь характеризует скорость работы устройства – чем он больше, тем дольше будет реакция устройства на изменение входного сигнала.
|
||||
В заключении было рассказано про такое понятие, как ***критический путь***. Сигналу требуется время, чтобы пройти через логический вентиль. Комбинационная схема, как правило, состоит из нескольких рядов цифровых вентилей. Так вот, критический путь, это самый длинный путь прохождения сигнала через схему. Другими словами, цепь с самой большой задержкой распространения сигнала от входа до выхода. Критический путь характеризует скорость работы устройства – чем он больше, тем дольше будет реакция устройства на изменение входного сигнала.
|
||||
|
||||

|
||||
|
||||
|
@@ -1,10 +1,10 @@
|
||||
# Лекция 3. Цифровая арифметика. Арифметико-логическое устройство
|
||||
|
||||
На этой лекции мы вспомнили как складываются числа, на примере сложения в столбик. Для двоичных и десятичных чисел это делается одинаково. Разряды чисел складываются с учетом переносов от прошлых разрядов.
|
||||
На этой лекции мы вспомнили, как складываются числа, на примере сложения в столбик. Для двоичных и десятичных чисел это делается одинаково. Разряды чисел складываются с учетом переносов от прошлых разрядов.
|
||||
|
||||

|
||||
|
||||
Особенностью цифровой арифметики является то, что она модульная, то есть ограничена некоторым максимальным числом, больше которого не существует. В данном случае модульная арифметика ограничена разрядностью цифрового устройства. Например, 3-битный сумматор не может выдать число, больше 111, то есть 7 в десятичной системе счисления. Можно сказать, что в такой арифметике не числовая прямая, а числовой круг. Операции сложения и вычитания — это движение по этому кругу в одну или в другую сторону. Благодаря особенностям такой арифметики можно выполнять вычитание используя операцию сложения. Выражение (**A — B**) эквивалентно выражению (**A + ~B + 1**). При этом к числам можно относиться либо как к беззнаковым (только положительным), либо как к знаковым (в таком случае старший бит числа указывает на знак, 1 — минус).
|
||||
Особенностью цифровой арифметики является то, что она модульная, то есть ограничена некоторым максимальным числом, больше которого не существует. В данном случае модульная арифметика ограничена разрядностью цифрового устройства. Например, 3-битный сумматор не может выдать число, больше 111₂, то есть 7 в десятичной системе счисления. Можно сказать, что в такой арифметике не числовая прямая, а числовой круг. Операции сложения и вычитания — это движение по этому кругу в одну или в другую сторону. Благодаря особенностям такой арифметики можно выполнять вычитание используя операцию сложения. Выражение (**A — B**) эквивалентно выражению (**A + ~B + 1**). При этом к числам можно относиться либо как к беззнаковым (только положительным), либо как к знаковым (в таком случае старший бит числа указывает на знак, 1 — минус).
|
||||
|
||||

|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||

|
||||
|
||||
Операции сложения и вычитания выполняются на одном из основных модулей процессора — сумматоре. Он строится из нескольких простых *однобитных полных сумматоров*, складывающих три бита: по одному биту от каждого из операндов и входной бит переноса (от предыдущего разряда), и формировать в качестве результата два бита: бит суммы и бит переноса для следующего разряда.
|
||||
Операции сложения и вычитания выполняются на одном из основных модулей процессора — сумматоре. Он строится из нескольких простых *полных однобитных сумматоров*, складывающих три бита: по одному биту от каждого из операндов и входной бит переноса (от предыдущего разряда), и формирующих в качестве результата два бита: бит суммы и бит переноса для следующего разряда.
|
||||
|
||||

|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
В рассмотренном АЛУ поддерживается 7 операций (операция 011 бессмысленна). Плюс такого подхода — простота проектирования, простота изменения структуры.
|
||||
|
||||
Другой подход к построению АЛУ предполагает выведения оптимальных выражений, в которых конкретные значения управляющих сигналов преобразуют выражение так, чтобы оно выполняло требуемую операцию. В рассмотренном примере поддерживается 48 операций (но некоторые повторяются):
|
||||
Другой подход к построению АЛУ предполагает вывод оптимальных выражений, в которых конкретные значения управляющих сигналов преобразуют выражение так, чтобы оно выполняло требуемую операцию. В рассмотренном примере поддерживается 48 операций (но некоторые повторяются):
|
||||
|
||||
- 32 арифметических:
|
||||
- 16 операций когда M=1, P<sub>i-1</sub>=0;
|
||||
@@ -43,7 +43,7 @@
|
||||
|
||||
Например, чтобы выполнить операцию A ИЛИ B, надо подать управляющие сигналы S = 0001, M = 0, тогда в выражении R сократятся импликанты с S3, S2, S1 и M, потому что они равны нулю, и останется только R = a | b. Разработка, отладка и изменение конфигурации таких АЛУ сложнее, чем при первом подходе, однако можно получить гораздо больше (пусть и не часто используемых) операций, при меньшем критическом пути.
|
||||
|
||||
В конце лекции посмотрели на организацию блоков сравнения, логического и арифметического сдвигов.
|
||||
В конце лекции посмотрели на организацию блоков сравнения, логических и арифметических сдвигов.
|
||||
|
||||
## Основные материалы лекции
|
||||
|
||||
|
@@ -6,7 +6,7 @@
|
||||
|
||||

|
||||
|
||||
Быстрой альтернативой, но требующей гораздо больших аппаратных затрат, является параллельные операционные устройства, высчитывающие сразу весь результат.
|
||||
Быстрой альтернативой, но требующей гораздо больших аппаратных затрат, являются параллельные операционные устройства, высчитывающие сразу весь результат.
|
||||
|
||||
Например, параллельный умножитель *k*-разрядных чисел, потребует использования *k*-1 *k*-разрядных сумматора.
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||

|
||||
|
||||
Альтернативой неидеального стандарта IEEE754, является, возможно, чуть менее неидеальный, появившейся относительно недавно, стандарт posit, в котором используется дополнительное поле режима, имеющего переменную длину.
|
||||
Альтернативой неидеального стандарта IEEE754, является, возможно, чуть менее неидеальный, появившийся относительно недавно, стандарт posit, в котором используется дополнительное поле режима, имеющего переменную длину.
|
||||
|
||||

|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
# Лекция 5. Последовательностная логика
|
||||
|
||||
Основной темой лекции было запоминание информации. В основе простейшей ячейки памяти лежит бистабильное устройство, то есть такое, которое может стабильно находиться в одном из двух состояний сколь угодно долго. Таким устройством является два инвертора подключённые друг в друга — выход одного на вход другого. Чтобы иметь возможность менять сохраняемое значение, на входы инверсий можно поместить логическое ИЛИ. С помощью образовавшихся свободных входов можно менять значение, которое в нем хранится. Полученное устройство называется RS-триггер, потому что при подаче 1 на вход R (reset) сохраняется 0, а при подаче 1 на вход S (set) сохраняется 1.
|
||||
Основной темой лекции было запоминание информации. В основе простейшей ячейки памяти лежит бистабильное устройство, то есть такое, которое может стабильно находиться в одном из двух состояний сколь угодно долго. Таким устройством является два инвертора подключённые друг к другу — выход одного на вход другого. Чтобы иметь возможность менять сохраняемое значение, на входы инверсий можно поместить логическое ИЛИ. С помощью образовавшихся свободных входов можно менять значение, которое в нем хранится. Полученное устройство называется RS-триггер, потому что при подаче 1 на вход R (reset) сохраняется 0, а при подаче 1 на вход S (set) сохраняется 1.
|
||||
|
||||

|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||

|
||||
|
||||
В конце лекции затронули тему конечных автоматов — устройств, способных находиться в одном из конечном количестве состояний. Процессор является гигантским автоматом состояния. Лекция закончилась демонстрацией программируемого устройства с примитивной архитектурой и примером программы, написанной для него.
|
||||
В конце лекции затронули тему конечных автоматов — устройств, способных находиться в одном из конечного числа состояний. Процессор является гигантским автоматом состояния. Лекция закончилась демонстрацией программируемого устройства с примитивной архитектурой и примером программы, написанной для него.
|
||||
|
||||

|
||||
|
||||
|
@@ -2,9 +2,9 @@
|
||||
|
||||
***Система команд*** процессора — это все команды, выполнение которых аппаратно поддерживается процессором. ***Архитектура системы команд*** (Instruction Set Architecture, ISA) включает в себя систему команд и средства для их выполнения, такие как форматы данных, системы регистров, способы адресации, модели памяти. Лекция была посвящена обзору ISA RISC-V и её особенностей.
|
||||
|
||||
RISC (Reduced Insrtuction Set Computer) — архитектура с сокращённым набором команд. В таких архитектурах поддерживается относительно небольшой набор простых инструкций (обычно до 100), притом все они имеют одинаковый размер. RISC также является load/store архитектурой, это значит, что для того, чтобы выполнить какую-либо операцию над данными, их необходимо предварительно разместить в регистровом файле. Все операции происходят только с данными в регистровом файле, а для доступа к основной памяти используются специальные инструкции типа load и store.
|
||||
RISC (Reduced Instruction Set Computer) — архитектура с сокращённым набором команд. В таких архитектурах поддерживается относительно небольшой набор простых инструкций (обычно до 100), притом все они имеют одинаковый размер. RISC также является load/store архитектурой, это значит, что для того, чтобы выполнить какую-либо операцию над данными, их необходимо предварительно разместить в регистровом файле. Все операции происходят только с данными в регистровом файле, а для доступа к основной памяти используются специальные инструкции типа load и store.
|
||||
|
||||
RISC-V является RISC-архитектурой (мы рассматриваем исключительно её 32-битный вариант). Регистровый файл включает 32 регистра общего назначения, кроме регистра по адресу 0, там находится константное значение 0 (записать в него ничего не получится). Все регистры 32 -битные. АЛУ выполняет операции только над данными размещёнными в регистровом файле. Основная память имеет побайтовую адресацию, при этом считывать из памяти можно байты, полуслова (16 бит) и слова (32 бита).
|
||||
RISC-V является RISC-архитектурой (мы рассматриваем исключительно её 32-битный вариант). Регистровый файл включает 32 регистра общего назначения, кроме регистра по адресу 0, там находится константное значение 0 (записать в него ничего не получится). Все регистры 32-битные. АЛУ выполняет операции только над данными размещёнными в регистровом файле. Основная память имеет побайтовую адресацию, при этом считывать из памяти можно байты, полуслова (16 бит) и слова (32 бита).
|
||||
|
||||

|
||||
|
||||
@@ -50,7 +50,7 @@ RISC-V является RISC-архитектурой (мы рассматрив
|
||||
```assembly
|
||||
beq x14, x15, label # если x14 == x15, то PC = PC + label
|
||||
blt x20, x21, label # если x20 < x21, то PC = PC + label
|
||||
# label - это метка, представляющее собой обычное число
|
||||
# label - это метка, представляющая собой обычное число
|
||||
```
|
||||
|
||||
- 2 инструкции безусловного перехода с сохранением адреса возврата
|
||||
@@ -59,7 +59,7 @@ RISC-V является RISC-архитектурой (мы рассматрив
|
||||
jal x3, label # x3 = PC + 4; PC = PC + label
|
||||
```
|
||||
|
||||
И ещё несколько специфических инструкций. Полный список базовых целочисленных инструкций форматы их кодирования приводится ниже.
|
||||
И ещё несколько специфических инструкций. Полный список базовых целочисленных инструкций форматы их кодирования приводятся ниже.
|
||||
|
||||

|
||||
|
||||
|
@@ -45,7 +45,7 @@ endwhile:
|
||||
|
||||
Вызов подпрограммы означает передачу управления этой подпрограмме, то есть загрузки в PC (program counter, указатель на инструкцию) адреса первой инструкции вызываемой подпрограммы. Чтобы вернуться к месту вызова процедуры, когда выполнение подпрограммы закончится, при её вызове необходимо использовать специальную инструкцию jal (jump and link).
|
||||
|
||||
Соглашение о вызовах устанавливает правила использования регистров между процедурами. В соглашении о вызовах RISC-V даются символические имена регистров x0 — x31 для обозначения их роли. Вызываемая подпрограмма получает аргументы через регистры a0 — a7. В таблице ниже приводится указывается какие из регистров должны быть сохранены неизменными при возврате из подпрограммы, и, какие регистры следует сохранить перед вызовом подпрограммы, если их содержимое планируется использовать после.
|
||||
Соглашение о вызовах устанавливает правила использования регистров между процедурами. В соглашении о вызовах RISC-V даются символические имена регистров x0 — x31 для обозначения их роли. Вызываемая подпрограмма получает аргументы через регистры a0 — a7. В таблице ниже приводится какие из регистров должны быть сохранены неизменными при возврате из подпрограммы, и, какие регистры следует сохранить перед вызовом подпрограммы, если их содержимое планируется использовать после.
|
||||
|
||||

|
||||
|
||||
@@ -75,7 +75,7 @@ func: # вызываемая функция
|
||||
|
||||
- **Static**: Содержит глобальные переменные, которые существуют в течении всего времени жизни программы. Регистр gp (Global Pointer) указывает на начало этой области
|
||||
|
||||
- **Heap**: Содержит динамически-распределяемые данные и растёт в сторону старших адресов. В C программист управляет кучей в ручную, размещая новые данные с помощью malloc() и освобождая с помощью free(). В Python, Java, и большинстве современных языков, куча управляется автоматически
|
||||
- **Heap**: Содержит динамически-распределяемые данные и растёт в сторону старших адресов. В C программист управляет кучей вручную, размещая новые данные с помощью malloc() и освобождая с помощью free(). В Python, Java, и большинстве современных языков, куча управляется автоматически
|
||||
|
||||
- **Text**: область памяти содержащая программный код
|
||||
|
||||
@@ -95,7 +95,7 @@ func: # вызываемая функция
|
||||
## Дополнительные материалы к лекции для саморазвития
|
||||
|
||||
1. [Полезная информация](https://github.com/riscv/riscv-asm-manual/blob/master/riscv-asm.md) по программированию на языке ассемблера RISC-V, на английском языке
|
||||
2. [Здесь](http://skilldrick.github.io/easy6502/) можно познакомиться, разобраться и пописать ассемблерные программки под архитектуру 6502 — классический процессор, на котором работают Бендер, Терминатор и Денди. Давай-давай, не стесняйся, заходи. Прямо на странице есть встроенный симулятор и объясняют как написать простенькую игру — змейку. Если не в курсе, люди соревнуется, у кого она получится меньше по объёму кода. Да и вообще в интернете полно информации по этому процессору. Процитирую автора ресурса: 6502 is *fun*. Nobody ever called x86 *fun*. А [тут](https://museum.netstalking.ru/xaknotdie/02_nes_6502_asm.html) на русском про программирование 6502.
|
||||
2. [Здесь](http://skilldrick.github.io/easy6502/) можно познакомиться, разобраться и пописать ассемблерные программки под архитектуру 6502 — классический процессор, на котором работают Бендер, Терминатор и Денди. Давай-давай, не стесняйся, заходи. Прямо на странице есть встроенный симулятор и объясняют как написать простенькую игру — змейку. Если не в курсе, люди соревнуется, у кого она получится меньше по объёму кода. Да и вообще в интернете полно информации по этому процессору. Процитирую автора ресурса: 6502 is *fun*. Nobody ever called x86 *fun*. А [тут](https://museum.netstalking.ru/xaknotdie/02_nes_6502_asm.html) на русском про программирование 6502.
|
||||
|
||||
## Популярные материалы
|
||||
|
||||
|
@@ -12,7 +12,7 @@
|
||||
|
||||
Архитектура процессора определяет не только какими функциональными возможностями обладает процессор, но и каким именно образом кодируются инструкции в этой архитектуре.
|
||||
|
||||
В базовом наборе целочисленных инструкций RISC-V предусмотрено 6 форматов кодирования инструкций. Каким именно из этих форматов закодирована инструкция определяется полем opcode (код операции). Вспомогательными полями, определяющими команду являются funct3 и funct7. Поля rs1 и rs2 кодируют адреса операндов в регистровом файле. Поле rd кодирует адрес результата, сохраняемого в регистровый файл. Поле imm хранит в себе константу, непосредственный операнд. Соответствие opcode'ов операциям можно посмотреть в документации на RISC-V.
|
||||
В базовом наборе целочисленных инструкций RISC-V предусмотрено 6 форматов кодирования инструкций. Каким именно из этих форматов закодирована инструкция определяется полем opcode (код операции). Вспомогательными полями, определяющими команду, являются funct3 и funct7. Поля rs1 и rs2 кодируют адреса операндов в регистровом файле. Поле rd кодирует адрес результата, сохраняемого в регистровый файл. Поле imm хранит в себе константу, непосредственный операнд. Соответствие opcode'ов операциям можно посмотреть в документации на RISC-V.
|
||||
|
||||

|
||||
|
||||
|
@@ -1,11 +1,11 @@
|
||||
# Лекция 9. Многотактный процессор RISC-V
|
||||
|
||||
Основными минусами однотактного процессора является: неэффективность использования аппаратуры и долгий тактовый импульс, ориентированный на выполнение самой длинной (долгой) инструкции.
|
||||
Основными минусами однотактного процессора являются: неэффективность использования аппаратуры и долгий тактовый импульс, ориентированный на выполнение самой длинной (долгой) инструкции.
|
||||
|
||||
Многотактная микроархитектура предполагает использование буферных (неархитектурных, то есть недоступных программисту) регистров, с целью уменьшения критического пути и поднятия таковой
|
||||
частоты. При этом каждая инструкцию будет выполняться несколько более коротких тактов, используя разное количество тактов для реализации разных инструкций.
|
||||
|
||||
Благодаря выполнению инструкции за несколько тактов, в этой микроархитектуре получилось реализовать принстонскую архитектуру (она же фоннеймановская, то есть данные и программы хранятся в одной памяти) и уменьшить количество сумматоров, за счет выполнения всех вычислительных операций на одном АЛУ. Еще одним из основных отличий от однотактной реализации является устройство управления (Control Unit), которой, в отличии от основного дешифратора (Main Decoder) однотактного процессора, является последовательностным устройством, а не комбинационным. Это значит, что в устройстве управления есть элементы памяти, и он ведет себя как автомат состояний (конечный автомат). Control Unit, в зависимости от выполняемой инструкции формирует *последовательность* управляющих сигналов, обеспечивающих движение данных по тракту данных от секции к секции, такт за тактом, пока инструкция не будет выполнена.
|
||||
Благодаря выполнению инструкции за несколько тактов, в этой микроархитектуре получилось реализовать принстонскую архитектуру (она же фоннеймановская, то есть данные и программы хранятся в одной памяти) и уменьшить количество сумматоров, за счет выполнения всех вычислительных операций на одном АЛУ. Еще одним из основных отличий от однотактной реализации является устройство управления (Control Unit), которое, в отличии от основного дешифратора (Main Decoder) однотактного процессора, является последовательностным устройством, а не комбинационным. Это значит, что в устройстве управления есть элементы памяти, и он ведет себя как автомат состояний (конечный автомат). Control Unit, в зависимости от выполняемой инструкции формирует *последовательность* управляющих сигналов, обеспечивающих движение данных по тракту данных от секции к секции, такт за тактом, пока инструкция не будет выполнена.
|
||||
|
||||

|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
Такой подход позволяет значительно уменьшить управляющую память, за счет чего она получится быстрее. Однако, микроинструкции ветвления, при таком подходе, требуют дополнительного такта на обработку (когда признак равен 1 нет операционной части).
|
||||
|
||||
Когда управляющая память хранит значения всех сигналов процессора в естественной форме, это называется *горизонтальным микропрограммированием*. Это значит, что, если устройство управления должно формировать, например, 50 управляющих сигналов для всех блоков процессора, то каждая микроинструкция будет включать в себя операционную часть длинной в 50 бит, то есть отдельный бит для каждого управляющего сигнала.
|
||||
Когда управляющая память хранит значения всех сигналов процессора в естественной форме, это называется *горизонтальным микропрограммированием*. Это значит, что, если устройство управления должно формировать, например, 50 управляющих сигналов для всех блоков процессора, то каждая микроинструкция будет включать в себя операционную часть длиной в 50 бит, то есть отдельный бит для каждого управляющего сигнала.
|
||||
|
||||
Горизонтальное микропрограммирование не требует наличие дешифратора на выходе УМУ, однако, для хранения всех значений сигнала потребуется относительно большая память, что повлияет на скорость ее работы. Альтернативой является *вертикальное микропрограммирование*, в котором каждой длинной последовательности сигналов (например, 50 в нашем примере) ставится в соответствие более короткая последовательность (например, из 10 бит). В таком случае на выходе УМУ требуется расположить дешифратор, который будет преобразовывать короткий код в длинный.
|
||||
|
||||
|
@@ -22,7 +22,7 @@
|
||||
|
||||

|
||||
|
||||
Указанный конфликт решается переброской результата операции с более поздних ступеней назад, чтобы этим результатом можно было воспользоваться до того, как он окажется в регистровом файле. Данный подход не помогает при инструкциях обращения к памяти, так как считываемый операнд может потребоваться до того, как он будет считан из памяти. В таком случае приходится приостанавливать конвейер и очищать стадий, в которые были загружены недостоверные данные. Ситуация, в которой в конвейер помещают нули (очищают стадии) называется пузырьком.
|
||||
Указанный конфликт решается переброской результата операции с более поздних ступеней назад, чтобы этим результатом можно было воспользоваться до того, как он окажется в регистровом файле. Данный подход не помогает при инструкциях обращения к памяти, так как считываемый операнд может потребоваться до того, как он будет считан из памяти. В таком случае приходится приостанавливать конвейер и очищать стадии, в которые были загружены недостоверные данные. Ситуация, в которой в конвейер помещают нули (очищают стадии) называется пузырьком.
|
||||
|
||||
Разрешением конфликтов занимается блок устранения конфликтов (Hazard Unit), который в автоматическом режиме их обнаруживает и предпринимает необходимые действия по их устранению.
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
- WAW (write after write — запись после записи, при котором более ранняя инструкция размещает значение в памяти позже, чем более поздняя инструкция, тем самым нарушая порядок записи в память). Разрешается конфликт так же, как и в конфликтах типа WAR.
|
||||
- По управлению (вызванный неоднозначностью того, какая инструкция должна быть загружена после инструкции условного перехода, так как результат перехода будет известен только на стадии Execute, а загружать новую инструкцию надо уже, когда команда условного перехода будет на стадии Decode). Конфликт разрешается методом пузырька, либо предположением о том, произойдет переход или нет. В случае успешного предсказания потери производительности не происходит. В случае неверного предсказания, ступени конвейера, в которые были загружены неправильные команды должны очиститься.
|
||||
|
||||
В среднем, каждая 7 инструкция в программе является инструкцией условного перехода. Поэтому конфликты по управлению сильнее всего влияют на производительность конвейерного процессора.
|
||||
В среднем, каждая седьмая инструкция в программе является инструкцией условного перехода. Поэтому конфликты по управлению сильнее всего влияют на производительность конвейерного процессора.
|
||||
|
||||
Разработанный на лекции конвейерный процессор не устраняет конфликты по управлению, следовательно является недоработанным, функционирует неправильно и рассматривался только в качестве примера.
|
||||
|
||||
|
Reference in New Issue
Block a user