Проектирование конвейерного процессора для обработки результатов обоих ветвей - PullRequest
1 голос
/ 23 апреля 2020

Итак, я недавно изучал архитектуру процессора Pipeline, в основном в контексте Y86-64. Там я только что прочитал о предсказании ветвления и о том, как в случае непредсказуемой ветки регистры Fetch, Decode и Execute Pipeline должны быть сброшены, а новая правильная инструкция ветвления должна быть обработана.

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

Заметно, что проблема возникает, если одна или обе ветви в свою очередь приводят к инструкции, которая сама по себе также является командой ветвления, тогда 2 набора недостаточно. Но так как к тому моменту, когда первое условие ветвления достигнет стадии выполнения, мы будем знать, какую ветвь на самом деле выбрать, и поэтому мы можем устранить неправильную ветвь и все ее подветви. И поскольку для перехода первой команды перехода от этапа Fetch к этапу Execute потребуется 3 такта, я бы подумал, что в худшем случае нам потребуется только 2 ^ 3, то есть 8 наборов конвейерных регистров.

Помимо того, что это немного сложно реализовать с точки зрения аппаратного обеспечения, есть ли что-то не так с моим предположением, что этот подход будет работать? Или это уже делается в более сложных архитектурах, например X86-64?

Спасибо.

1 Ответ

2 голосов
/ 23 апреля 2020

Что касается RIS C в сравнении с архитектурами CIS C, последние пробовали методы, примерно такие, какие вы предлагаете в конце 1980-х / начале 1990-х годов, насколько я помню. Проверка Википедии на анализ предсказания ветви не имеет статьи, но перенаправляет на this в статье RSA (шифрование), в которой описывается метод, использующий предиктор ветви который помогает найти закрытый ключ шифрования. В нем также упоминается одновременная многопоточность как способ ускорения прогнозирования ветвлений.

Чтобы более прямо ответить на ваш вопрос, см. Раздел details в одновременная многопоточность . Как правило, это область постоянных исследований и разногласий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...