Стадии трубопровода MIPS - PullRequest
       12

Стадии трубопровода MIPS

0 голосов
/ 15 сентября 2018

Я понимаю, что есть пять этапов -> IF, ID, EX, MEM, WB. и что тактовый цикл определяется самой длинной стадией. я не понимаю, что происходит, когда есть инструкция, в которой не используются все этапы, скажем, например, добавить инструкцию, которая не требует этапа MEM, и предположим, что тактовый цикл составляет 200ps, то есть это означает, что для инструкции, которая использует все этапы, требуется 1000ps для выполнения. потребуются ли те же 1000ps для выполнения команды, которая не использует stege MEM (что означает, что потеря 200ps потрачена впустую)? Спасибо!

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

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

Это фундаментальная часть конструкции трубопровода или сборочной линии.Вы определяете шаги, и все идет линейно через эти шаги, использует ли он этот шаг или нет.ТОЧКА должна иметь несколько инструкций / транспортных средств, обрабатываемых одновременно.Когда я выхожу из дальнего конца, каждую минуту, скажем так, это значит, что на создание машины уходит одна минута?Нет, мы проводим параллельный процесс, чтобы вы производили много автомобилей одновременно.Как и в случае с инструкциями, смысл состоит в том, чтобы распараллелить его, даже если каждый шаг не выполняет функцию.

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

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

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

0 голосов
/ 15 сентября 2018

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


Одна из идей сделать так, чтобы классический 5-ступенчатый станок MIPS пропускал MEM по требованию, состоит в добавлении канала данных из EX в WB и добавлении некоторой логики.
Если после команды R-типа следует послепри загрузке / сохранении возникнет конфликт:

IF ID EX MEM WB
   IF ID EX  WB <-- Conflict: two instructions in WB

ЦП может отправлять выходные данные EX как в MEM, так и в WB, плюс этап MEM будет маскировать канал данных из EX в WB, когда этот этап необходим, ибудет маскировать путь данных MEM-WB, когда он не нужен.
Таким образом, когда в MEM уже есть инструкция, следующая инструкция в EX будет идти в MEM (а не в WB) в следующем цикле:

IF ID EX MEM  <-- Here EX-WB is masked (since MEM is used) and MEM-WB is allowed
   IF ID EX   <-- Can go to both MEM and WB but EX-WB is masked off


IF ID EX MEM WB  <-- So this instruction's next stage is WB (as usual)
   IF ID EX  MEM <-- This goes to MEM instead, so the pipe keeps flowing

Если предыдущей инструкции не требовалось MEM, можно пропустить один этап:

IF ID EX  <-- Here EX-WB is allowed (assume no prev instructions) and MEM-WB is not since (MEM was not used)
   IF ID 

IF ID EX WB <-- Instruction skips MEM stage since EX-WB was allowed
   IF ID EX <-- Next instruction, again, EX-WB is allowed since MEM was not used

IF ID EX WB <-- Done
   IF ID EX  WB <-- Stage MEM skipped

ADDENDUM

Стоит отметить, что в случаеконфликта для соединения стека WB в самом первом примере, лучше остановить весь конвейер за 1 цикл, иначе конфликт никогда не разрешится, и все последующие инструкции пройдут этап MEM независимо отТип EIR.

Без остановки:

mem = Useless MEM stage but necessary to avoid a WB confict
MEM = Instruction uses the MEM stage

IF ID EX MEM WB
   IF ID EX  mem WB
      IF ID  EX  mem Wb

Если мы введем остановку одного цикла, мы разрешим конфликт:

Lowercase names means stalled cycles

IF ID EX MEM WB
   IF ID EX  ex  WB
      IF ID  id  EX WB
         IF  if  ID EX WB
                 IF ID EX WB
                    IF ID EX WB

Обратите внимание, как с точки зрения пропускной способности этоОптимизация на самом деле не приносит ничего полезного.
Конвейер стабилизируется на более короткой длине, но если вы сравните эту диаграмму с диаграммой, где MEM является обязательной, вы получите все этапы WB в тех же циклах!
Если A зависит отB тогда A нужно дождаться, пока B достигнет своей стадии WB (или EX, если в конвейере есть пересылка), и, поскольку позиции ступеней WB (или EX) одинаковы с этой оптимизацией или без нее, это не является прямымнаблюдаемый к программному обеспечению (то есть это не имеет никакой выгоды).

Однако более короткий конвейер потребляет меньше энергии, и после флеша быстрее заполнять, но для того, чтобы реально использовать возможность пропустить этап, нужен суперскалярный процессор (который имеет более одного исполнительного блока, так что EX и MEMможет перекрываться).

...