Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Выполнение этих требований позволит гарантировать полную изоляцию и неизменность программного кода криптопроцедур и используемой в них секретной информации.

Читайте также:
  1. Б) не устанавливает никаких требований
  2. Базовые методы противодействия дизассемблированию программного обеспечения
  3. Барьеры доступности программного обеспечения и основные способы их преодоления
  4. БЛОК МИКРОПРОГРАММНОГО УПРАВЛЕНИЯ (БМУ).
  5. БЛОКА МИКРОПРОГРАММНОГО УПРАВЛЕНИЯ (БМУ)
  6. В РФ распространение информации осуществляется свободно при соблюдении требований, установленных законодательством РФ.
  7. В-третьих, выполнение поисковых (разведочных) работ в строго определенные проектом сроки.

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

Имея узлы хранения подстановок на SSE регистрах и многовходовый коммутатор в блоках FPU можно организовать следующее преобразование в блоке подстановок:

 

 

В этой схеме входной регистр в каждой тетраде задает адрес для соответствующего коммутатора, который по шине данных передает из накопителей узлов замены информацию в выходной регистр.

Такую схему можно организовать тремя способами:

- Создать соответствующий дизайн чипа, но это для нас «фантастика».

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

- Написать программу на официальных командах AVX, вариант пускай и не очень эффективный, но зато осуществим «здесь и сейчас». Поэтому этим и займемся далее.

 

Работой коммутаторов управляет специальная трехадресная команда AVX VPSHUFB. Первый операнд которой является приемником информации из коммутаторов, второй операнд является источником, к которому подключены входы коммутаторов, а третий операнд является управляющим регистром для коммутаторов, каждый байт которого ассоциирован с соответствующим коммутатором и значение в нем задает номер направления с которого коммутатор считывает информацию. Вот описание этой команды из официальной документации фирмы Интел:

 

 

А вот схема работы этой команды, - изображена только половина SSE регистров, для второй половины все аналогично:

 

 

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

 

Программа с выборкой тетрад через коммутаторы FPU было написана, но я даже не стал ее помещать в приложение, – слишком убого. Иметь регистр размером 128 бит и использовать в нем только 32бита,- не профессионально.

Как говорится: «Наш финиш горизонт», поэтому выжимать, так выжимать,…. будем прессовать и складывать в пакеты…

Это не игра слов, а суровая FPUшная реальность, регистры SSE можно разбивать на равные части и выполнять над этими частями одинаковые преобразования одной командой. Для того чтобы процессор это понял, имеется магическая буковка «Р» - пакет, которая ставится перед мнемоникой команды и не менее магические буковки «Q», «D», «W», «B» которые ставятся в конце и объявляют на какие части разбиты в этой команде регистры SSE.

Нас интересует пакетный режим с разбивкой SSE регистра на четыре 32битных блока, соответственно все команды будут иметь сначала префикс «P» а в конце символ «D». Это дает возможность одной процессорной командой параллельно обрабатывать сразу четыре блока по 32 бита, т.е. в параллель рассчитывать четыре блока данных.

Программа реализующая этот метод имеется в приложении №3, там же все пояснения, если кто либо заинтересуется в подробностях.

 

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

Такая программка была написана и ее можно посмотреть в приложении №4, только смотреть осторожно, можно слететь с катушек, это что называется «код не для всех…..»

 

 


Дата добавления: 2015-07-08; просмотров: 193 | Нарушение авторских прав


Читайте в этой же книге: Традиционная реализация ГОСТ 28147-89 | Многопоточная реализация ГОСТ 28147-89 | Основной цикл шифрования на SSE в четыре потока. | Приложение №4. |
<== предыдущая страница | следующая страница ==>
Использование SSE регистров и AVX команд современных процессоров для реализации ГОСТ 28147-89| Цена вопроса

mybiblioteka.su - 2015-2024 год. (0.007 сек.)