Содержание
Сдвиговые регистры в цифровой логике
Необходимое условие: Триггеры
Триггеры могут использоваться для хранения одного бита двоичных данных (1 или 0). Однако для хранения нескольких битов данных нам нужно несколько триггеров. Необходимо подключить N триггеров для хранения n бит данных. Регистр — это устройство, которое используется для хранения такой информации. Это группа последовательно соединенных триггеров, используемых для хранения нескольких битов данных. Информация, хранящаяся в этих регистрах, может быть передана с помощью регистры сдвига .
Сдвиговый регистр — это группа триггеров, используемых для хранения нескольких битов данных. Биты, хранящиеся в таких регистрах, могут перемещаться внутри регистров и в/из регистров с помощью тактовых импульсов. n-битный сдвиговый регистр может быть сформирован путем соединения n триггеров, где каждый триггер хранит один бит данных. Регистры, которые будут сдвигать биты влево, называются «регистрами сдвига влево». Регистры, которые будут сдвигать биты вправо, называются «регистрами сдвига вправо». Регистры сдвига в основном бывают следующих типов.
Типы сдвиговых регистров
- Последовательный ввод Последовательный вывод сдвигового регистра
- Последовательный ввод параллельный вывод сдвигового регистра
- Параллельный ввод последовательный вывод сдвигового регистра
- Параллельный ввод параллельно вывод сдвигового регистра
- Двунаправленный сдвиговый регистр
- Универсальный сдвиговый регистр
- Счетчик регистра сдвига
Регистр сдвига с последовательным вводом и выводом с последовательного входа (SISO)
-In Serial-Out сдвиговый регистр. Поскольку есть только один выход, данные покидают регистр сдвига по одному биту за раз в последовательном шаблоне, отсюда и название регистра сдвига с последовательным вводом и выводом. Логическая схема, приведенная ниже, показывает сдвиговый регистр с последовательным входом и выходом. Схема состоит из четырех D-триггеров, соединенных последовательно. Все эти триггеры синхронны друг с другом, поскольку на каждый триггер подается один и тот же тактовый сигнал.
Сдвиговый регистр с последовательным вводом и выводом (SISO)
Вышеприведенная схема является примером сдвигового правого регистра, принимающего последовательные входные данные с левой стороны триггера. В основном SISO используется в качестве элемента задержки.
Сдвиговый регистр с последовательным вводом и параллельным выводом (SIPO)
Сдвиговый регистр, который обеспечивает последовательный ввод (один бит за другим через одну линию данных) и производит параллельный вывод, известен как последовательный ввод с параллельным выводом. регистр сдвига. Логическая схема, приведенная ниже, показывает регистр сдвига последовательно-параллельно-вход. Схема состоит из четырех D-триггеров, которые соединены между собой. Сигнал очистки (CLR) подключается в дополнение к тактовому сигналу ко всем 4 триггерам для их СБРОСА. Выход первого триггера подключается ко входу следующего триггера и так далее. Все эти триггеры синхронны друг с другом, поскольку на каждый триггер подается один и тот же тактовый сигнал.
Сдвиговый регистр с последовательным вводом и параллельным выводом (SIPO)
Вышеприведенная схема является примером сдвигового правого регистра, принимающего последовательные входные данные с левой стороны триггера и создающего параллельный вывод. Они используются в линиях связи, где требуется демультиплексирование линии данных на несколько параллельных линий, поскольку основное использование регистра SIPO заключается в преобразовании последовательных данных в параллельные данные.
Сдвиговый регистр с параллельным вводом и последовательным выводом (PISO)
Сдвиговый регистр, допускающий параллельный ввод (данные подаются отдельно на каждый триггер и одновременно) и производящий последовательный вывод, называется регистром с параллельным вводом. Сдвиговый регистр последовательного выхода. Логическая схема, приведенная ниже, показывает сдвиговый регистр с параллельным входом и последовательным выходом. Схема состоит из четырех D-триггеров, которые соединены между собой. Тактовый вход напрямую подключен ко всем триггерам, но входные данные подключаются индивидуально к каждому триггеру через мультиплексор на входе каждого триггера. Выход предыдущего триггера и параллельный ввод данных подключены к входу MUX, а выход MUX подключен к следующему триггеру. Все эти триггеры синхронны друг с другом, поскольку на каждый триггер подается один и тот же тактовый сигнал.
Сдвиговый регистр с параллельным вводом и последовательным выводом (PISO)
Сдвиговый регистр с параллельным вводом и последовательным выводом (PISO) используется для преобразования параллельных данных в последовательные данные.
Параллельно-вход Параллельно-выход Сдвиговый регистр (PIPO)
Сдвиговый регистр, который обеспечивает параллельный ввод (данные подаются отдельно на каждый триггер и одновременно), а также производит параллельный вывод, известен как параллельный ввод. сдвиговый регистр с параллельным выходом. Логическая схема, приведенная ниже, показывает сдвиговый регистр с параллельным входом и выходом. Схема состоит из четырех D-триггеров, которые соединены между собой. Сигнал очистки (CLR) и тактовые сигналы подключены ко всем 4 триггерам. В этом типе регистра нет взаимосвязей между отдельными триггерами, поскольку не требуется последовательного сдвига данных. Данные подаются в качестве входных данных отдельно для каждого триггера, и таким же образом выходные данные также собираются отдельно для каждого триггера.
Сдвиговый регистр с параллельным входом и параллельным выходом (PIPO)
Сдвиговый регистр с параллельным входом и параллельным выходом (PIPO) используется в качестве устройства временного хранения и, подобно сдвиговому регистру SISO, действует как элемент задержки.
Двунаправленный сдвиговый регистр
Если мы сдвинем двоичное число влево на одну позицию, это будет эквивалентно умножению числа на 2, а если мы сдвинем двоичное число вправо на одну позицию, это будет эквивалентно делению числа на 2. Для выполнения этих операций нам нужен регистр, который может сдвигать данные в любом направлении. Двунаправленные сдвиговые регистры — это регистры, способные сдвигать данные вправо или влево в зависимости от выбранного режима. Если выбран режим 1 (высокий), данные будут смещены вправо, а если выбран режим 0 (низкий), данные будут сдвинуты влево. Логическая схема, приведенная ниже, показывает двунаправленный регистр сдвига. Схема состоит из четырех D-триггеров, которые соединены между собой. Входные данные подключаются к двум концам схемы, и в зависимости от выбранного режима только один вентиль находится в активном состоянии.
Двунаправленный регистр сдвига
Универсальный регистр сдвига
Универсальный регистр сдвига — это тип регистра, который содержит сдвиг как вправо, так и влево. Он также имеет возможности параллельной загрузки. Как правило, эти типы регистров используются в качестве элементов памяти в компьютерах. Но проблема с этим типом регистра заключается в том, что он смещается только в одном направлении. Простыми словами, вы имеете в виду, что универсальный сдвиговый регистр представляет собой комбинацию двунаправленного сдвигового регистра и однонаправленный сдвиговый регистр .
Универсальный сдвиговый регистр
N-битный универсальный сдвиговый регистр состоит из триггеров и мультиплексоров. Оба имеют размер N. При этом все n мультиплексоров используют одни и те же линии выбора, и этот вход выбора выбирает подходящий вход для триггеров.
Счетчик регистров сдвига
Счетчики регистров сдвига — это регистры сдвига, в которых выходы соединяются обратно со входами для создания определенных последовательностей. Есть в основном два типа:
- Счетчик звонков
- Счетчик Джонсона
Счетчик звонков
Счетчик звонков в основном представляет собой счетчик сдвигового регистра, в котором выход первого триггера подключен к следующему триггеру и т. д., а выход последний триггер снова подается обратно на вход первого триггера, отсюда и название кольцевого счетчика. Шаблон данных в регистре сдвига будет циркулировать до тех пор, пока применяются тактовые импульсы. Логическая схема, приведенная ниже, показывает кольцевой счетчик.
Таблица истинности счетчика звонков
Схема состоит из четырех соединенных D-триггеров. Поскольку схема состоит из четырех триггеров, шаблон данных будет повторяться через каждые четыре тактовых импульса, как показано в таблице истинности. Счетчик звонков обычно используется, потому что он самодекодируется. Для определения состояния счетчика не требуется дополнительная схема декодирования.
Кольцевой счетчик
Счетчик Джонсона
Счетчик Джонсона в основном представляет собой счетчик сдвигового регистра, в котором выход первого триггера подключен к следующему триггеру. и так далее, и инвертированный выход последнего триггера снова подается обратно на вход первого триггера. Они также известны как счетчики с витыми кольцами. Логическая схема, приведенная ниже, показывает счетчик Джонсона. Схема состоит из четырех D-триггеров, которые соединены между собой.
Таблица истинности счетчика Джонсона
Счетчик Джонсона с n-ступенями дает последовательность счета из 2n различных состояний, поэтому он также известен как счетчик mod-2n. Поскольку схема состоит из четырех триггеров, шаблон данных будет повторяться каждые восемь тактовых импульсов, как показано в таблице истинности. Основное преимущество счетчика Джонсона состоит в том, что ему требуется всего n триггеров по сравнению с кольцевым счетчиком, чтобы передать заданные данные для генерации последовательности из 2n состояний.
Счетчик Джонсона
Применение сдвиговых регистров
- Сдвиговые регистры используются для временного хранения данных.
- Сдвиговые регистры также используются для передачи данных и обработки данных.
- Сдвиговые регистры последовательного ввода-вывода и параллельного ввода-вывода используются для создания временной задержки в цифровых схемах.
- Сдвиговый регистр с последовательным входом и параллельным выходом используется для преобразования последовательных данных в параллельные данные, поэтому они используются в линиях связи, где требуется демультиплексирование линии данных на несколько параллельных линий.
- Сдвиговый регистр Parallel in Serial out используется для преобразования параллельных данных в последовательные данные.
сборка — выполнение операций одной и той же инструкции отдельно в процессоре OoO
Да, каждая моп планируется независимо , при условии, что нужно только дождаться готовности ее входных данных. (И для свободного цикла на порту выполнения он был назначен, когда он был отправлен в неупорядоченную серверную часть.) Как именно планируются x86 uops? Границы инструкций не имеют отношения к планировщику RS.
Для многих команд, состоящих из нескольких операций, у операций есть зависимость данных от более ранних. Но иногда для более ранних мопов требуется, чтобы был готов только один из входов, поэтому существуют отдельные минимальные задержки для каждого входа и выхода. Что означает несколько значений или диапазонов в качестве задержки для одной инструкции?
напр. добавить eax, [rdi]
требуется только, чтобы EAX был готов после завершения загрузки uop. Таким образом, задержка критического пути через EAX составляет всего 1 цикл. Но если RDI не был готов или память, на которую указывает RDI, не была готова, то операция добавления ALU не может быть выполнена. Но все же это скорее точка декодирования в uops, в отличие от P5 Pentium, который должен был выполнять загрузку и складывать в своем упорядоченном конвейере 1 .
(Или, например, для сдвигов с переменным числом на процессорах Intel дополнительные uops предназначены только для FLAGS output ; целочисленная часть GP готова с задержкой в 1 цикл, но результат FLAGS готов позже. uop, который производит GP-integer результат, по сути, такой же, как и единственный uop BMI2 shlx
, который декодирует.)
Но у некоторых есть некоторый ILP (ну, на самом деле параллелизм на уровне uop). Например, xchg eax, ecx
декодируется в 3 операции копирования регистров на процессорах Intel, и мы можем измерить задержку отдельно для направлений EAX->ECX и ECX->EAX на 1 и 2 циклах (соответственно). Почему XCHG reg, reg представляет собой инструкцию из 3 микроопераций на современных архитектурах Intel?
Другой пример: phaddd
; он декодирует почти как два shufps
uops (тасовки с 2 входами) и один paddd
uop, который зависит от двух тасовок. Оба тасователя считывают оба входа для подачи тасования. Ice Lake имеет блоки тасования на 2 портах и фактически может запускать uops тасования параллельно, обеспечивая задержку в 2 цикла (uops.info), по сравнению с 3 циклами на более ранних версиях Intel из-за конфликта ресурсов для одного порта тасования. (Дополнительный порт тасования Ice Lake запускает только некоторые тасовки целых чисел, поэтому haddps
все так же плохо, как и всегда на Ice Lake)
Обратите внимание, что мы не можем доказать , что именно делает каждый моп, но, учитывая измеренные задержки и общее количество мопов на порт, для многих инструкций есть только один разумный дизайн, который объясняет поведение.