КОМАНДА И ЛОГИКА ДЛЯ ОБЕСПЕЧЕНИЯ ФУНКЦИОНАЛЬНЫХ ВОЗМОЖНОСТЕЙ ЦИКЛА ЗАЩИЩЕННОГО ХЕШИРОВАНИЯ С ШИФРОМ Российский патент 2017 года по МПК H04L9/06 G06F9/30 

Описание патента на изобретение RU2637463C2

Область техники, к которой относится изобретение

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

Уровень техники

Хеш-функции могут использоваться для многих целей: например, для индексации данных в хеш-таблицах, для создания идентифицирующих характеристик, для балансировочного распределения нагрузки, для поиска данных в базах данных, для обнаружения дублированных данных или для однозначной идентификации файлов, и в качестве контрольных сумм для обнаружения случайного нарушения целостности данных. Например, в приложении к балансировочному распределению нагрузки, в хеш-алгоритме может использоваться в качестве основы для выбора сервера IP-адрес (адрес по межсетевому протоколу) клиента, или MAC-адрес (адрес по Протоколу управления доступом к передающей среде) клиента, или значение HTTP-заголовка (заголовка по Протоколу передачи гипертекста) и так далее. В таких приложениях один и тот же клиент может обслуживаться одним и тем же сервером, даже тогда, когда список располагаемых серверов изменен в течение сеанса связи с клиентом. Такого рода свойство может также сделать этот алгоритм полезным для приложений, которые требуют хранения информации о состоянии стороны сервера, таких как "cookies" (небольшой фрагмент данных о предыстории обращений данного пользователя к данному веб-серверу, автоматически создаваемый сервером на машине пользователя).

Термин "согласующееся хеширование" относится к способу распределения запросов между изменяющейся совокупностью Web-серверов. Каждое гнездо представлено узлом в распределенной системе. Добавление (подсоединения) и удаление (отключения/отказы) узлов требует переключения элементов, при котором количество гнезд/узлов изменяется. Хеш-функция может не сохранять структуру. В идеальном варианте для каждых входных данных вероятность получения любых из возможных выходных данных должна быть равной. Любые неравномерности в частотном распределении входных данных трансформируются в равномерное распределение выходных данных.

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

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

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

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

Одна из наиболее известных криптографических хеш-функций представляет собой алгоритм MD5 (Алгоритм 5 "Сообщение - профиль"), разработанный Рональдом Райвестом (Ronald Rivest). Другие распространенные алгоритмы представляют собой SHA 1 (Алгоритм 1 защищенного хеширования), так же, как и его варианты SHA 2 и SHA 3, опубликованные Национальным институтом стандартов и технологии (институтом NIST (США)) в качестве Федерального стандарта США по обработке информации (FIPS-стандарта).

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

Два важных компромисса в хеш-функциях для одного класса хеширования для выполнения поиска представляют собой: (1) сложность против скорости вычисления - слишком простая, и хеш-функция легко взламывается, слишком сложная, и хеш-функция слишком долго вычисляется; и (2) распределение профиля и лавинообразные свойства - изменение единственного бита во входных данных должно вызывать изменение n битов в выводимом значении хеш-профиля, самым сильным является случай, при котором n составляет приблизительно половину размера выводимого значения хеш-профиля.

Некоторыми предложены процессоры (например, в патенте США, имеющем номер 8255703) или сопроцессоры (например, в патенте США, имеющем номер 7240203), способные исполнять весь алгоритм защищенного хеширования. Один недостаток такого подхода заключается в том, что он не вписывается с легкостью в стандартный конвейер исполнения в современном микропроцессоре, если не уделить специальное внимание таким вопросам, как специальная обработка прерываний или одновременное суперскалярное исполнение других команд. Другое несоответствие со стандартными конвейерами исполнения заключается в задержке, требующейся для исполнения всего алгоритма защищенного хеширования.

Современные процессоры часто включают в себя команды для обеспечения операций, которые являются интенсивными в вычислительном отношении, но предлагают высокий уровень параллелизма данных, что может использоваться при эффективной реализации с использованием разнообразных устройств хранения данных, таких как, например, векторные регистры в технологии (SIMD) с одним потоком команд и многими потоками данных. Центральный процессор (CPU) может в таком случае предоставлять параллельные аппаратные средства для поддержки обработки векторов. Вектор представляет собой структуру данных, которая содержит некоторое количество последовательных элементов данных. Векторный регистр размера М может содержать N векторных элементов размера О, где N=М/О. Например, векторный регистр размером в 64 байта может быть разделен на: (а) 64 векторных элемента, при этом каждый элемент содержит порцию данных, которая занимает 1 байт; (b) 32 векторных элемента, содержащих порции данных, которые занимают 2 байта (или одно "слово") каждый; (с) 16 векторных элементов, содержащих порции данных, которые занимают 4 байта (или одно "двойное слово") каждый; или (d) 8 векторных элементов, содержащих порции данных, которые занимают 8 байтов (или одно "учетверенное слово") каждый. Природа параллелизма в векторных регистрах SIMD могла бы хорошо подходить для обработки алгоритмов защищенного хеширования.

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

Краткое описание чертежей

Изобретение проиллюстрировано в порядке примера, а не ограничения, чертежами.

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

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

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

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

На Фиг. 3A проиллюстрированы типы упакованных данных в соответствии с одним вариантом воплощения изобретения.

На Фиг. 3B проиллюстрированы типы упакованных данных в соответствии с одним вариантом воплощения изобретения.

На Фиг. 3C проиллюстрированы типы упакованных данных в соответствии с одним вариантом воплощения изобретения.

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

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

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

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

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

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

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

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

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

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

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

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

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

На Фиг. 11 проиллюстрирована структурная схема одного варианта воплощения системы разработки IP-ядра, которая обеспечивает функциональные возможности "среза" циклов защищенного хеширования в технологии SIMD (с одним потоком команд и многими потоками данных.

На Фиг. 12 проиллюстрирован один вариант воплощения системы эмуляции архитектуры, которая обеспечивает функциональные возможности "среза" циклов защищенного хеширования в технологии SIMD.

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

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

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

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

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

Детализированное описание

В нижеследующем описании раскрываются команды и логика обработки данных, обеспечивающие функциональные возможности цикла алгоритма защищенного хеширования с шифром. Некоторые варианты воплощения изобретения включают в себя процессор, содержащий: декодирующую стадию для декодирования команды для алгоритма защищенного хеширования с шифром, первую команду, указывающую данные источников, и один или более операндов-ключей. Исполняющие блоки процессора реагируют на декодированную команду, выполняя над данными источников одну или более циклических итераций алгоритма защищенного хеширования с шифром, используя эти один или более операндов-ключей, и сохраняют результат исполнения команды в регистре-адресате. В одном варианте воплощения команды указывают итерацию цикла алгоритма защищенного хеширования с шифром, использующую шифровальный алгоритм Файстела (Feistel), такой как DES (Стандарт шифрования данных) или TDES (Тройной DES). В альтернативных вариантах воплощения изобретения могут использоваться другие шифровальные алгоритмы, например, такие как Blowfish, SAFER (Защищенная и быстрая процедура шифрования) K - 64, CAST5 (разработанный Карлайлом Эдэмсом (Carlisle Adams) and и Стаффордом Тавэйрсом (Stafford Tavares)), FEAL (Алгоритм быстрого шифрования данных) и так далее. В одном варианте воплощения изобретения результат исполнения команды может быть использован при генерировании назначения ресурса из запроса для запросов на балансировку нагрузки по набору ресурсов обработки данных. В некоторых вариантах воплощения изобретения может указываться (например, в непосредственном операнде) диапазон номеров цикла для выполнения алгоритма защищенного хеширования с шифром. Например, в одном варианте воплощения шестнадцатеричный диапазон 0×0F в непосредственном байтовом операнде может указывать на то, что команда должна выполнить все шестнадцать (16) итераций алгоритма хеширования с шифром, тогда как шестнадцатеричный диапазон 0×FF в непосредственном байтовом операнде может указывать на то, что команда должна выполнить только одну итерацию цикла шестнадцать (16), или шестнадцатеричный диапазон 0×F8 в непосредственном байтовом операнде может указывать на то, что команда должна выполнить итерации: с цикла шестнадцать (16) по цикл девять (9), в режиме дешифрования алгоритма хеширования с шифром. Следует понимать, что одно неожиданное преимущество от использования шифра в качестве алгоритма хеширования, в противоположность однонаправленным алгоритмам хеширования, заключается в том, что он является обратимым, что может помочь с конструированием ключей для балансировки нагрузки, которые обеспечивают требуемые характеристики (например, стойкое и/или согласующееся хеширование), позволяя при этом введение новых ключей для воспрепятствования атаке (например, такой как атака с целью отказа в обслуживании). Другое неожиданное преимущество от выполнения в качестве алгоритма хеширования только указанного количества итераций шифра заключается в том, что для каждого цикла или диапазона циклических итераций могут быть использованы различные наборы ключей, что обеспечивает результаты шифрования, которые невозможны при использовании стандартной схемы с подключом.

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

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

Хотя нижеследующие варианты воплощения изобретения описаны в отношении процессора, другие варианты воплощения изобретения применимы к другим типам интегральных схем и логических устройств. Технологии и концепции, аналогичные вариантам воплощения изобретения, могут быть применены к другим типам схем или полупроводниковых устройств, которые могут выиграть от более высокой пропускной способности и повышенной производительности конвейера. Концепции вариантов воплощения изобретения применимы к любому процессору или машине, которая выполняет манипулирование данными. Однако изобретение не ограничено процессорами или машинами, которые выполняют операции над 512-разрядными, 256-разрядными, 128-разрядными, 64-разрядными, 32-разрядными или 16-разрядными данными и могут быть применены к любому процессору и машине, в которой выполняется манипуляция или управление данными. В дополнение к этому в нижеследующем описании приводятся примеры и на прилагаемых чертежах показаны разнообразные примеры для целей иллюстрации. Однако эти примеры не должны толковаться в ограничивающем смысле, поскольку они предназначены просто для того, чтобы дать примеры вариантов воплощения изобретения, а не дать исчерпывающий перечень всех возможных реализаций вариантов воплощения изобретения.

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

Команды, используемые для программирования логики на выполнение вариантов воплощения изобретения, могут храниться в памяти в системе, такой как DRAM (динамичное оперативное запоминающее устройство), кэш, флэш-память или другое запоминающее устройство. Кроме того, эти команды могут быть распространены по сети или посредством других читаемых компьютером носителей информации. Таким образом, машиночитаемый носитель информации может включать в себя любой механизм для хранения или передачи информации в форме, читаемой машиной (например, компьютером), но не ограничен: гибкими магнитными дисками, оптическими дисками, компакт-диском, постоянным запоминающим устройством (CD-ROM (постоянными запоминающими устройствами на компакт-дисках)), и магнитооптическими дисками, постоянным запоминающим устройством (ROM-устройствами), оперативным запоминающим устройством (RAM), стираемым программируемым постоянным запоминающим устройством (EPROM), электрически стираемым программируемым постоянным запоминающим устройством (EEPROM), магнитными или оптическими картами, флэш-памятью или материальным, машиночитаемым запоминающим устройством, используемым при передаче информации по сети "Интернет" через электрические, оптические, акустические или другие формы распространяемых сигналов (например, несущие, инфракрасные сигналы, цифровые сигналы и так далее). Соответственно читаемый компьютером носитель информации включает в себя любой тип материального машиночитаемого носителя информации, подходящего для хранения или передачи электронных команд или информации в форме, читаемой машиной (например, компьютером).

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

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

По мере того, как все больше компьютерных систем используется в Интернет-приложениях, текстовых и мультимедийных приложениях, со временем вводилась дополнительная поддержка процессора. В одном варианте воплощения изобретения набор команд может быть связан с одной или более архитектурами компьютера, включающими в себя типы данных, команды, архитектуру регистров, способы адресации, архитектуру памяти, обработку прерываний и особых ситуаций и внешний ввод данных и вывод данных (I/O).

В одном варианте воплощения изобретения архитектура набора команд (ISA-архитектура) может быть реализована посредством одной или более микроархитектур, которые включают в себя логику и схемы процессора, используемые для реализации одного или более набора команд. Соответственно процессоры с различной микроархитектурой могут совместно использовать, по меньшей мере, часть общего набора команд. Например, процессоры Intel® Pentium 4, процессоры Intel® Core™ и процессоры от компании Advanced Micro Devices, Inc., Саннивейл, штат Калифорния, США, реализуют почти идентичные версии набора команд x86 (с некоторыми расширениями, которые были добавлены с более новыми версиями), но имеют различающиеся внутренние конструкции. Аналогичным образом, процессоры, сконструированные другими компаниями-разработчиками процессоров, такими как ARM Holdings, Ltd., MIPS, или их лицензиатами или последователями могут совместно использовать, по меньшей мере, часть общего набора команд, но могут включать в себя различающиеся конструкции процессора. Например, одна и та же архитектура регистров ISA-архитектуры может быть реализована различными способами в различных микроархитектурах с использованием новых или хорошо известных технологий, включая в себя выделенные физические регистры, один или более динамически распределяемых физических регистров, использующих механизм переименования регистров (например, с использованием таблицы альтернативных имен регистров (RAT-таблицы), переупорядочивающего буфера (ROB-буфера) и регистрового файла изъятия. В одном варианте воплощения изобретения регистры могут включать в себя один или более регистров, архитектур регистров, регистровых файлов или других наборов регистров, которые могут быть или могут не быть адресуемыми для разработчика программного обеспечения.

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

Научные, финансовые, универсальные автовекторизируемые приложения, RMS-приложения (приложения с распознаванием, разработкой и синтезом) и визуальные и мультимедийные приложения (например, двумерная/трехмерная графика, обработка изображений, сжатие видеоданных/восстановление сжатых видеоданных, алгоритмы распознавания речи и манипуляции аудиоданными) могут требовать, чтобы одна и та же операция выполнялась над большим количеством порций данных. В одном варианте реализации изобретения аббревиатура SIMD (с одним потоком команд и многими потоками данных) относится к типу команды, которая заставляет процессор выполнять операцию над множественными элементами данных. Технология SIMD может быть использована в процессорах, которые могут логически разделять разряды в регистре на некоторое количество элементов данных фиксированного размера или переменного размера, каждый из которых представляет отдельное значение. Например, в одном варианте воплощения изобретения разряды в 64-разрядном регистре могут быть организованы как операнд-источник, содержащий четыре отдельных 16-разрядных элемента данных, каждый из которых представляет отдельное 16-разрядное значение. Этот тип данных может именоваться как 'упакованный' тип данных или 'векторный' тип данных, и операнды этого типа данных именуются как операнды упакованных данных или векторные операнды. В одном варианте воплощения изобретения порция упакованных данных или вектор может представлять собой последовательность элементов упакованных данных, хранящихся в одном регистре, и операнд упакованных данных или векторный операнд может представлять собой операнд-источник или операнд-адресат в SIMD-команде (или 'команде с упакованными данными' или 'векторной команде'). В одном варианте воплощения изобретения SIMD-команда определяет отдельную векторную операцию, которая должна быть выполнена над двумя векторными операндами-источниками для того, чтобы сгенерировать векторный операнд-адресат (также именуемый как результирующий векторный операнд), имеющий тот же самый или другой размер, с тем же самым или другим количеством элементов данных и в том же самом или другом порядке следования элементов данных.

Технология SIMD, такая как та, что используется процессорами Intel® Core™, имеющими набор команд, включающий в себя команды х86, MMX™ (Мультимедийного расширения), расширения SIMD для потоковой обработки (SSE - расширений), SSE 2, SSE 3, SSE 4.1 и SSE 4.2, процессорами ARM, такими как семейство процессоров ARM Cortex®, имеющих набор команд, включающий в себя векторные команды с плавающей запятой (VFP - команды) и/или команды технологии NEON, и процессорами MIPS, такими как семейство процессоров Loongson, разработанных Институтом вычислительной техники (ICT) Китайской Академии Наук, сделала возможным значительное повышение производительности приложения (Core™ и ММХ™ представляют собой зарегистрированные товарные знаки или товарные знаки корпорации Intel Corporation, Санта-Клара, штат Калифорния, США).

В одном варианте воплощения изобретения термины "регистры/данные адресата и источника" представляют собой общие термины, представляющие источник и адресат соответствующих данных или операции. В некоторых вариантах воплощения изобретения они могут быть реализованы посредством регистров, памяти или других запоминающих областей, имеющих другие названия или функции, чем те, которые изображены. Например, в одном варианте реализации изобретения "DEST1" может представлять собой регистр временного запоминания или другую запоминающую область, тогда как "SRC1" и "SRC2" могут представлять собой первый и второй запоминающие регистры-источники или другую область памяти и так далее. В других вариантах воплощения изобретения две или более области из числа запоминающих областей SRC и DEST могут соответствовать различным элементам хранения данных в пределах одной и той же запоминающей области (например, SIMD - регистра). В одном варианте воплощения изобретения один из регистров-источников может также действовать в качестве регистра-адресата, например, при записи результата операции, выполненной над первыми и вторыми данными источников, в обратном направлении, в один из двух регистров - источников, служащий в качестве регистра-адресата.

Фиг. 1A представляет собой структурную схему приводимой в качестве примера вычислительной системы, сформированной с процессором, который включает в себя исполняющие блоки для исполнения команды в соответствии с одним вариантом воплощения изобретения. Система (100) включает в себя компонент, такой как процессор (102), для использования исполняющих блоков, включающих в себя логику для выполнения алгоритмов для обработки данных, в соответствии с изобретением, такой как в описанном здесь варианте воплощения изобретения. Система (100) является представителем систем обработки данных, основанных на микропроцессорах Pentium® III, Pentium® 4, Xeon™, Itanium®, XScale® и/или StrongARM™, поставляемых корпорацией Intel Corporation, Санта Клара, штат Калифорния, США, хотя могут также использоваться и другие системы (включающие в себя персональные компьютеры, имеющие другие микропроцессоры, инженерные рабочие станции, телевизионные абонентские приставки и тому подобное). В одном варианте воплощения изобретения приводимая в качестве примера система (100) может исполнять версию операционной системы WINDOWS®, поставляемой корпорацией Microsoft Corporation, г. Редмонд, Вашингтон, США, хотя могут также использоваться и другие операционные системы (например, UNIX и Linux), встроенное программное обеспечение и/или графические пользовательские интерфейсы. Таким образом, варианты воплощения изобретения не ограничены никаким конкретным сочетанием схем аппаратного обеспечения и программного обеспечения.

Варианты воплощения изобретения не ограничены компьютерными системами. Альтернативные варианты воплощения изобретения могут быть использованы в других устройствах, таких как карманные устройства, и встроенных вариантах применения. Некоторые примеры карманных устройств включают в себя сотовые телефоны, устройства связи по Интернет-протоколу, цифровые фотокамеры, персональные цифровые секретари (PDA) и карманные персональные компьютеры. Встроенные варианты применения могут включать в себя микроконтроллер, процессор цифровой обработки сигналов (DSP-процессор), внутрикристальную систему, сетевые компьютеры (NetPC (сетевые персональные компьютеры)), телевизионные абонентские приставки, сетевые концентраторы, коммутаторы глобальной сети (WAN) или любую другую систему, которая может выполнять одну или более команд в соответствии с, по меньшей мере, одним вариантом воплощения изобретения.

Фиг. 1A представляет собой структурную схему компьютерной системы (100), сформированной с процессором (102), который включает в себя одно или более исполняющих блоков (108) для того, чтобы выполнять алгоритм для выполнения, по меньшей мере, одной команды в соответствии с одним вариантом воплощения изобретения. Один вариант воплощения изобретения может быть описан в контексте однопроцессорного настольного компьютера или системы сервера, но альтернативные варианты воплощения изобретения могут быть включены в состав многопроцессорной системы. Система (100) представляет собой пример архитектуры системы 'концентратор'. Компьютерная система (100) включает в себя процессор (102) для обработки сигналов данных. Процессор (102) может представлять собой микропроцессор компьютера со сложным набором команд (CISC - микропроцессор), микропроцессор для вычисления с сокращенным набором команд (RISC - микропроцессор), микропроцессор с командными словами сверхбольшой длины (VLIW - микропроцессор), процессор, реализующий комбинацию наборов команд или любое другое процессорное устройство, такое как, например, процессор цифровой обработки сигналов. Процессор (102) сопряжен с процессорной шиной (110), которая может передавать сигналы данных между процессором (102) и другими компонентами в системе (100). Элементы системы (100) выполняют свои традиционные функции, которые хорошо известны специалистам, знакомым с этой областью техники.

В одном варианте воплощения изобретения процессор (102) включает в себя внутреннюю кэш-память (104) уровня 1 (L1). В зависимости от архитектуры процессор (102) может иметь единственный внутренний кэш или множественные уровни внутреннего кэша. В качестве альтернативы в другом варианте воплощения изобретения кэш-память может находиться вне процессора (102). Другие варианты воплощения изобретения могут также включать в себя сочетание как внутренних, так и внешних кэшей в зависимости от конкретного варианта осуществления изобретения и потребностей. Регистровый файл (106) может сохранять различные типы данных в различных регистрах, включающих в себя целочисленные регистры, регистры с плавающей запятой, регистры состояния и регистр указателя команды.

В процессоре (102) также находится исполняющий блок (108), включающий в себя логику для выполнения целочисленных операций и операций с плавающей запятой. Процессор (102) также включает в себя постоянное запоминающее устройство для микрокода (ucode), которое хранит микрокод для некоторых макрокоманд. Для одного варианта воплощения изобретения исполняющий блок (108) включает в себя логику для обработки набора команд (109) для упакованных данных. Благодаря включению набора команд (109) для упакованных данных в набор команд универсального процессора (102), наряду со связанными с ним схемами для исполнения этих команд, операции, используемые многими мультимедийными приложениями, могут быть в универсальном процессоре (102) выполнены с использованием упакованных данных. Таким образом, многие мультимедийные приложения могут быть ускорены и исполнены более эффективно с использованием для выполнения операций над упакованными данными полной ширины процессорной шины данных. Это может устранить необходимость передавать более мелкие порции данных по процессорной шине данных для выполнения одной или более операций по одному элементу данных единовременно.

Альтернативные варианты воплощения исполняющего блока (108) могут также использоваться в микроконтроллерах, встроенных процессорах, графических устройствах, процессорах цифровой обработки сигналов и других типах логических схем. Система (100) включает в себя память (120). Память (120) может представлять собой динамическое оперативное запоминающее устройство (DRAM - устройство), статическое оперативное запоминающее устройство (SRAM - устройство), устройство с флэш-памятью или другое запоминающее устройство. Память (120) может хранить команды и/или данные, представленные сигналами данных, которые могут быть исполнены процессором (102).

С процессорной шиной (110) и памятью (120) сопряжена логическая интегральная схема (116) системы. Логическая интегральная схема (116) системы в проиллюстрированном варианте воплощения изобретения представляет собой концентратор-контроллер памяти (МСН). Процессор (102) может поддерживать связь с концентратором-контроллером (116) памяти через процессорную шину (110). Концентратор-контроллер (116) памяти обеспечивает тракт (118) связи с памятью, имеющий высокую пропускную способность, к памяти (120) для хранения команд и данных и для хранения графических команд, данных и текстур. Концентратор-контроллер (116) памяти должен направлять сигналы данных между процессором (102), памятью (120) и другими компонентами в системе (100) и служить мостом для сигналов данных между процессорной шиной (110), памятью (120) и входом/выходом (122) системы. В некоторых вариантах воплощения изобретения логическая интегральная схема (116) системы может предусматривать графический порт для сопряжения с графическим контроллером (112). Концентратор-контроллер (116) памяти сопряжен с памятью (120) посредством интерфейса (118) памяти. Графическая карта (112) сопрягается с концентратором-контроллером (116) памяти посредством межсоединения (114) Ускоренного графического порта (AGP - порта).

Для сопряжения концентратора-контроллера (116) памяти с концентратором-контроллером (130) ввода/вывода (ICH) система (100) использует специализированную интерфейсную шину (122) концентратора. Концентратор-контроллер (130) ввода/вывода обеспечивает прямые соединения с некоторыми устройствами ввода/вывода через локальную шину ввода/вывода. Эта локальная шина ввода/вывода представляет собой высокоскоростную шину ввода/вывода, предназначенную для соединения периферийного оборудования с памятью (120), набором микросхем и процессором (102). Некоторые примеры представляют собой аудиоконтроллер, программно-аппаратный концентратор (128) (BIOS (базовая система ввода-вывода) флэш-памяти), приемопередатчик (126) беспроводной связи, запоминающее устройство (124) для данных, унаследованный контроллер ввода/вывода, содержащий интерфейсы пользовательского ввода и клавиатуры, последовательный порт расширения, такой как Универсальная последовательная шина (USB), и сетевой контроллер (134). Запоминающее устройство (124) для данных может содержать накопитель на жестких магнитных дисках, накопитель на гибких магнитных дисках, устройство CD-ROM (постоянное запоминающее устройство на компакт-диске), устройство с флэш-памятью или другое запоминающее устройство большой емкости.

Для другого варианта воплощения системы команда в соответствии с одним вариантом воплощения изобретения может быть использована с внутрикристальной системой. Один вариант воплощения внутрикристальной системы содержит процессор и память. Память для одной такой системы представляет собой флэш-память. Флэш-память может быть расположена в том же самом кристалле, что и процессор и другие компоненты системы. В дополнение к этому во внутрикристальной системе также могут быть расположены другие логические блоки, такие как контроллер памяти или графический контроллер.

На Фиг. 1B проиллюстрирована система (140) обработки данных, которая реализует принципы одного варианта воплощения изобретения. Специалист в данной области техники легко поймет, что описанные здесь варианты воплощения изобретения могут быть использованы с альтернативными системами обработки данных, что не выходит за рамки объема вариантов воплощения изобретения.

Вычислительная система (140) содержит ядро (159) обработки данных, способное выполнять, по меньшей мере, одну команду в соответствии с одним вариантом воплощения изобретения. Для одного варианта воплощения изобретения, ядро (159) обработки данных представляет блок обработки данных любого типа архитектуры, включая тип архитектуры: CISC (архитектура компьютера со сложным набором команд), RISC (архитектура компьютера с сокращенным набором команд) или VLIW (архитектура с командными словами сверхбольшой длины, но не ограничиваясь ими. Ядро (159) обработки данных может также подходить для изготовления в одном или более технологических процессах и, будучи представленным на машиночитаемых носителях информации достаточно подробно, может подходить для облегчения упомянутого изготовления.

Ядро (159) обработки данных содержит исполняющий блок (142), набор регистрового файла (регистровых файлов) (145) и декодер (144). Ядро (159) обработки данных также включает в себя дополнительные электрические схемы (не показанные на чертеже), которые не являются необходимыми для понимания вариантов воплощения изобретения. Исполняющий блок (142) используется для исполнения команды, принятой ядром (159) обработки данных. В дополнение к выполнению обычных процессорных команд исполняющий блок (142) может выполнять команды в наборе команд (143) для упакованных данных для выполнения операций над форматами упакованных данных. Набор команд (143) для упакованных данных включает в себя команды для выполнения вариантов воплощения изобретения и другие команды для упакованных данных. Исполняющий блок (142) посредством внутренней шины сопряжен с регистровым файлом (145). Регистровый файл (145) представляет запоминающую область на ядре (159) обработки данных, предназначенную для хранения информации, включающей в себя данные. Как было упомянуто выше, следует понимать, что запоминающая область, используемая для хранения упакованных данных, не является критически необходимой. Исполняющий блок (142) сопряжен к декодером (144). Декодер (144) используется для декодирования команд, принимаемых ядром (159) обработки данных, в управляющие сигналы и/или точки входа микрокода. В ответ на эти управляющие сигналы и/или точки входа микрокода, исполняющий блок (142) выполняет соответствующие операции. В одном варианте воплощения изобретения декодер используется для того, чтобы интерпретировать код операции команды, который укажет то, какую операцию следует выполнять над соответствующими данными, указанными внутри команды.

Ядро (159) обработки данных сопряжено с шиной (141) для поддержания связи с разнообразными другими устройствами системы, которые могут включать в себя, например, блок (146) управления синхронным динамическим оперативным запоминающим устройством (SDRAM - устройством), блок (147) управления статическим оперативным запоминающим устройством (SRAM - устройством), интерфейс (148) пакетной флэш-памяти, блок (149) управления картой Международной ассоциации производителей карт памяти для персональных компьютеров (PCMCIA)/компактной флэш-памяти, блок (150) управления жидкокристаллическим дисплеем (LCD - дисплеем), контроллер (151) прямого доступа к памяти (DMA - доступа) и интерфейс (152) альтернативного устройства управления шиной, но не ограничиваются ими. В одном варианте воплощения изобретения система (140) обработки данных может также содержать мост (154) ввода/вывода для поддержания связи с разнообразными устройствами ввода-вывода через шину (153) ввода/вывода. Такие устройства ввода/вывода могут включать в себя, например, универсальный асинхронный приемопередатчик (UART) (155), универсальную последовательную шину (USB) (156), универсальный асинхронный приемопередатчик (UART) (157) беспроводной связи Bluetooth и интерфейс (158) расширения для ввода/вывода, но не ограничиваются ими.

Один вариант воплощения системы (140) обработки данных предусматривает мобильную, сетевую и/или беспроводную связь, и ядро (159) обработки данных способно выполнять SIMD - операции (операции с одним потоком команд и многими потоками данных), включающие в себя операцию сравнения текстовых строк. Ядро (159) обработки данных может быть запрограммировано на разнообразные алгоритмы обработки аудиоинформации, видеоинформации, алгоритмы формирования изображения и алгоритмы связи, включающие в себя дискретные преобразования, такие как преобразование Уолша-Адамара, быстрое преобразование Фурье (FFT - преобразование), дискретное косинусное преобразование (DCT - преобразование), и соответствующие им обратные преобразования; технологии сжатия данных/восстановления сжатых данных, такие как преобразование цветового пространства, оценка движения при кодировании видеоданных или компенсация движения при декодировании видеоданных; и функции модуляции/демодуляции (MODEM), такие как импульсно - кодовая модуляция (РСМ).

На Фиг. 1C проиллюстрированы другие альтернативные варианты воплощения системы обработки данных, способной к исполнению команд для обеспечения функциональных возможностей цикла защищенного хеширования с шифром. В соответствии с одним альтернативным вариантом воплощения изобретения система (160) обработки данных может включать в себя основной процессор (166), SIMD - сопроцессор (сопроцессор с одним потоком команд и многими потоками данных) (161), кэш-память (167) и систему (168) ввода/вывода. Система (168) ввода/вывода может, если требуется, быть сопряжена с интерфейсом (169) беспроводной связи. SIMD - сопроцессор (161) способен к выполнению операций, включая в себя команды в соответствии с одним вариантом воплощения изобретения. Ядро (170) обработки данных может подходить для изготовления в одном или более технологических процессах и, будучи представленным на машиночитаемых носителях информации достаточно подробно, может подходить для облегчения изготовления всей или части системы (160) обработки данных, включающей в себя ядро (170) обработки данных.

Для одного варианта воплощения изобретения, SIMD - сопроцессор (161) содержит исполняющий блок (162) и набор регистрового файла (регистровых файлов) (164). Один вариант воплощения основного процессора (166) содержит декодер (165) для распознавания команд набора (163) команд, включающего в себя команды в соответствии с одним вариантом воплощения изобретения, для исполнения исполняющим блоком (162). Для альтернативных вариантов воплощения изобретения SIMD - сопроцессор (161) также содержит, по меньшей мере, часть декодера (165 В) для того, чтобы декодировать команды набора (163) команд. Ядро (170) обработки данных также включает в себя дополнительные схемы (не показанные на чертеже), которые не являются необходимыми для понимания вариантов воплощения изобретения.

При работе основной процессор (166) исполняет поток команд обработки данных, управляющих операциями обработки данных общего типа, включающих в себя взаимодействия с кэш-памятью (167) и системой (168) ввода/вывода. В поток команд обработки данных встроены команды для SIMD - сопроцессора. Декодер (165) из основного процессора (166) распознает эти команды для SIMD - сопроцессора как относящиеся к типу, который должен исполняться приданным SIMD - сопроцессором (161). Соответственно основной процессор (166) выдает эти команды для SIMD - сопроцессора (или управляющие сигналы, представляющие команды для SIMD - сопроцессора) в шину (171) сопроцессора, из которой они принимаются каким-либо приданным SIMD - сопроцессором. В этом случае SIMD - сопроцессор (161) примет и исполнит любые принятые команды для SIMD - сопроцессора, предназначенные для него.

Для обработки посредством команд для SIMD - сопроцессора данные могут приниматься через интерфейс (169) беспроводной связи. В качестве одного примера речевая связь может приниматься в форме цифрового сигнала, который можно обрабатывать посредством команд для SIMD - сопроцессора таким образом, чтобы восстанавливать отсчеты цифровой аудиоинформации, представляющие речевую связь. В качестве другого примера сжатые аудиоинформация и/или видеоинформация могут быть приняты в форме цифрового потока битов, который можно обрабатывать посредством команд SIMD - сопроцессора таким образом, чтобы восстанавливать отсчеты цифровой аудиоинформации и/или кадры движущегося видеоизображения. Для одного варианта воплощения ядра (170) обработки данных основной процессор (166) и SIMD - сопроцессор (161) интегрированы в единое ядро (170) обработки данных, содержащее исполняющий блок (162), набор регистрового файла (регистровых файлов) (164) и декодер (165) для распознавания команд набора (163) команд, включающего в себя команды в соответствии с одним вариантом воплощения изобретения.

Фиг. 2 представляет собой структурную схему микроархитектуры для процессора (200), который включает в себя логические схемы для выполнения команд в соответствии с одним вариантом воплощения изобретения. В некоторых вариантах воплощения изобретения команда в соответствии с одним вариантом своего воплощения может быть реализована таким образом, чтобы оперировать над элементами данных, имеющими размеры: байта, слова, двойного слова, учетверенного слова и так далее, так же как типы данных, такие как целое число одинарной и двойной точности и типы данных с плавающей запятой. В одном варианте реализации изобретения передняя часть (201) без переупорядочения последовательности команд представляет собой часть процессора (200), которая осуществляет выборку команд, подлежащих исполнению, и подготавливает их для использования позже в процессорном конвейере. Передняя часть (201) может включать в себя несколько блоков. В одном варианте воплощения изобретения блок (226) опережающей выборки команд осуществляет выборку команд из памяти и подает их в декодер (228) команд, который, в свою очередь, декодирует или интерпретирует их. Например, в одном варианте воплощения изобретения декодер декодирует принятую команду на одну или более операций, именуемых как "микрокоманды" или "микрооперации" (также именуемых как "micro op" или "uop"), которые могут исполняться машиной. В других вариантах реализации изобретения декодер осуществляет синтаксический анализ команды, преобразуя ее в код операции и соответствующие поля данных и управления, которые используются микроархитектурой для выполнения операций в соответствии с одним вариантом воплощения изобретения. В одном варианте воплощения изобретения трассовый кэш (230) берет декодированные микрооперации и собирает их в упорядоченные последовательности программы или трассы в очереди (234) микроопераций на исполнение. Когда трассовый кэш (230) сталкивается со сложной командой, постоянное запоминающее устройство (232) для микрокода обеспечивает микрооперации, необходимые для выполнения операции.

Некоторые команды преобразуются в единственную микрооперацию, тогда как другим для выполнения полной операции требуются нескольких микроопераций. В одном варианте воплощения изобретения, если для выполнения команды необходимо больше чем четыре микрооперации, то декодер (228) для выполнения команды осуществляет доступ к постоянному запоминающему устройству (232) для микрокода. Для одного варианта воплощения изобретения команда может быть декодирована на небольшое количество микроопераций для обработки в декодере (228) команды. В другом варианте реализации изобретения, если для выполнения команды требуется ряд микроопераций, то команда может быть сохранена в постоянном запоминающем устройстве (232) для микрокода. Трассовый кэш (1330) обращается к программируемой логической матрице (PLA - матрице) точки входа для того, чтобы определить правильный указатель микрокоманды для того, чтобы считывать из постоянного запоминающего устройства (232) для микрокода последовательности микрокода для выполнения одной или более команд в соответствии с одним вариантом воплощения изобретения. После того, как постоянное запоминающее устройство (232) для микрокода заканчивает задание последовательности микроопераций для команды, передняя часть (201) этой машины возобновляет осуществление выборки микроопераций из трассового кэша (230).

Машина (203) исполнения с переупорядочением последовательности команд представляет собой то место, где команды подготавливаются к исполнению. Логика исполнения с переупорядочением последовательности команд имеет некоторое количество буферов для сглаживания и переупорядочения последовательности потока команд для оптимизации рабочих характеристик, когда команды движутся по конвейеру и планируются к исполнению. Логика распределителя распределяет буферные запоминающие устройства и ресурсы машины, в которых каждая микрооперация нуждается для своего исполнения. Логика переименования регистров переименовывает логические регистры в записи в регистровом файле. Распределитель также распределяет запись для каждой микрооперации в одной из двух очередей микроопераций: одной - для операций с памятью, и одной - для операций не с памятью, перед планировщиками команд: планировщиком памяти, быстрым планировщиком (202), медленным/универсальным планировщиком (204) микроопераций с плавающей запятой и простым планировщиком (206) микроопераций с плавающей запятой. Планировщики (202), (204), (206) микроопераций определяют то, когда микрооперация готова к исполнению, основываясь на готовности их зависимых источников входных регистровых операндов и доступности исполняющих ресурсов, в которых эти микрооперации нуждаются для выполнения своей работы. Быстрый планировщик (202) по одному варианту воплощения изобретения может осуществлять планирование каждую половину периода основных тактовых импульсов, тогда как другие планировщики могут осуществлять планирование только один раз за период тактовых импульсов основного процессора. Планировщики осуществляют арбитраж для портов отправки для планирования микроопераций к исполнению.

Регистровые файлы (208), (210) находятся между планировщиками (202), (204), (206) и исполняющими блоками (212), (214), (216), (218), (220), (222), (224) в исполняющей группе (211). Существует отдельный регистровый файл (208), (210) для соответственно целочисленных операций и операций с плавающей запятой. Каждый регистровый файл (208), (210) по одному варианту воплощения изобретения также включает в себя обходную сеть, которая может пропускать или направлять только что завершенные результаты, которые еще не были записаны в регистровый файл, к новым зависимым микрооперациям. Регистровый файл (208) для целочисленных операций и регистровый файл (210) для операций с плавающей запятой также способны осуществлять обмен данным друг с другом. Для одного варианта воплощения изобретения регистровый файл (208) для целочисленных операций разделен на два отдельных регистровых файла: один регистровый файл для 32 младших разрядов данных и второй регистровый файл для 32 старших разрядов данных. Регистровый файл (210) для операций с плавающей запятой, соответствующий одному варианту воплощения изобретения, имеет записи шириной в 128 разрядов, потому что команды с плавающей запятой обычно имеют операнды шириной от 64 до 128 разрядов.

Исполняющая группа (211) содержит исполняющие блоки (212), (214), (216), (218), (220), (222), (224), в которых фактически исполняются команды. Эта секция включает в себя регистровые файлы (208), (210), которые сохраняют значения целочисленных операндов данных и значения операндов данных с плавающей запятой, которые микрокомандам необходимо исполнить. Процессор (200) по одному варианту воплощения изобретения состоит из множества исполняющих блоков: блока (212) формирования адресов (AGU - блока), блока (214) формирования адресов, быстрого арифметико-логического блока (ALU) (216), быстрого арифметико-логическое блока (218), медленного арифметико-логического блока (220), арифметико-логического блока (222) для операций с плавающей запятой, блока (224) перемещения плавающей запятой. Для одного варианта воплощения изобретения блоки (222), (224) исполнения операций с плавающей запятой исполняют операции с плавающей запятой, операции ММХ (Мультимедийного расширения), SIMD (с Одним потоком команд и многими потоками данных) и SSE (Расширения SIMD для потоковой обработки) или другие операции. Арифметико-логический блок (222) для операций с плавающей запятой, соответствующий одному варианту воплощения изобретения, включает в себя делительный блок для операций с плавающей запятой, имеющий размер: 64 разряда на 64 разряда, для исполнения микроопераций деления, извлечения квадратного корня и нахождения остатка. Для вариантов воплощения изобретения команды, включающие в себя значение с плавающей запятой, могут обрабатываться посредством аппаратных средств вычислений с плавающей запятой. В одном варианте воплощения изобретения операции арифметико-логического блока направляются быстродействующим арифметико-логическим исполняющим блокам (216), (218). Быстрые арифметико-логические блоки (216), (218) по одному варианту воплощения изобретения могут исполнять быстрые операции с эффективным временем задержки, составляющим половину периода тактовых импульсов. Для одного варианта воплощения изобретения наиболее сложные целочисленные операции направляются медленному арифметико-логическому блоку (220), поскольку медленный арифметико-логический блок (220) включает в себя аппаратные средства исполнения целочисленных вычислений, предназначенные для типа операций с длительным временем задержки, такие как умножитель, сдвигатели, логика признаков и обработка ветвления. Блоками (212), (214) формирования адресов исполняются операции загрузки/сохранения в памяти. Для одного варианта воплощения изобретения арифметико-логические блоки (216), (218), (220) для целочисленных операций описаны в контексте выполнения целочисленных операций над 64-разрядными операндами данных. В альтернативных вариантах воплощения изобретения арифметико-логические блоки (216), (218), (220) могут быть реализованы таким образом, чтобы поддерживать разнообразные количества разрядов данных, включающие в себя 16, 32, 128, 256 и так далее. Аналогичным образом блоки (222), (224) для операций с плавающей запятой могут быть реализованы таким образом, чтобы поддерживать некоторый диапазон операндов, имеющих разрядность различной ширины. Для одного варианта воплощения изобретения блоки (222), (224) для операций с плавающей запятой могут, в сочетании с мультимедийными командами и SIMD - командами, оперировать с операндами упакованных данных, имеющими ширину в 128 разрядов.

В одном варианте воплощения изобретения планировщики (202), (204), (206) микроопераций отправляют зависимые операции прежде, чем закончится исполнение загрузки операции-предка. Поскольку теоретически микрооперации планируются и исполняются в процессоре (200), то процессор (200) также включает в себя логику для обработки неудачных обращений к памяти. Если происходит неудача при загрузке данных в кэше данных, то могут иметь место зависимые операции, находящиеся на конвейере, которые оставили планировщика с временно неправильными данными. Механизм повторной обработки отслеживает и повторно исполняет команды, которые используют неправильные данные. Повторно обрабатываться должны только зависимые операции, а независимым операциям позволено завершиться. Планировщики и механизм повторной обработки, соответствующие одному варианту воплощения процессора, также спроектированы таким образом, чтобы улавливать команды, которые обеспечивают функциональные возможности цикла защищенного хеширования с шифром.

Термин "регистры" может относиться к внутриплатным ячейкам памяти процессора, которые используются как часть команд для того, чтобы идентифицировать операнды. Другими словами, регистры могут быть такими, которые используются извне процессора (с перспективы программиста). Однако термин "регистры" по варианту воплощения изобретения не должен быть ограничен в своем значении некоторым конкретным типом электрических схем. Скорее, "регистр" по варианту воплощения изобретения способен хранить и предоставлять данные и выполнять описанные здесь функции. Описанные здесь регистры могут быть реализованы посредством электрических схем внутри процессора, использующих любое количество различных технологий, таких как выделенные физические регистры, динамически распределяемые физические регистры с использованием переименования регистров, сочетание выделенных и динамически распределяемых физических регистров и так далее. В одном варианте воплощения изобретения регистры для целочисленных данных хранят в себе тридцатидвухразрядные целочисленные данные. Регистровый файл по одному варианту воплощения изобретения также содержит восемь мультимедийных SIMD - регистров для упакованных данных. Для приводимого ниже обсуждения, "регистры" понимаются как представляющие собой регистры данных, спроектированные таким образом, чтобы хранить упакованные данные, такие как регистры ММХ™ (Мультимедийного расширения), имеющие ширину в 64 разряда (также в некоторых экземплярах именуемые как регистры 'mm' (мультимедийные)), в микропроцессорах, наделенных возможностями технологии ММХ™ от корпорации Intel Corporation, Санта - Клара, штат Калифорния, США. Эти ММХ - регистры, имеющиеся как в целочисленной форме, так и в форме с плавающей запятой, могут работать с элементами упакованных данных, которые сопровождают команды технологий SIMD и SSE (Расширения SIMD для потоковой передачи данных). Аналогичным образом, для хранения таких операндов упакованных данных могут также использоваться ХММ - регистры с шириной в 128 разрядов, относящиеся к технологии SSE 2, SSE 3, SSE 4 или выше (обычно именуемым как "SSEx"). В одном варианте воплощения изобретения при хранении упакованных данных и целочисленных данных регистрам не нужно проводить различие между этими двумя типами данных. В одном варианте воплощения изобретения целочисленные данные и данные с плавающая запятой либо содержатся в одном и том же регистровом файле или в различных регистровых файлах. Кроме того, в одном варианте воплощения изобретения данные с плавающей запятой и целочисленные данные могут храниться в различных регистрах или в одних и тех же регистрах.

В примерах, показанных на нижеследующих чертежах, описывается некоторое количество операндов данных. На Фиг. 3A проиллюстрированы различные представления типов упакованных данных в мультимедийных регистрах в соответствии с одним вариантом воплощения изобретения. На Фиг. 3A проиллюстрированы типы данных для упакованного байта (310), упакованного слова (320) и упакованного двойного слова (dword) (330) для операндов с шириной в 128 разрядов. Формат (310) упакованного байта из этого примера имеет длину в 128 разрядов и содержит шестнадцать упакованных байтовых элементов данных. Байт определен здесь как 8 разрядов данных. Информация для каждого байтового элемента данных хранится в разрядах: с разряда 7 по разряд 0 - для байта 0; с разряда 15 по разряд 8 - для байта 1; с разряда 23 по разряд 16 - для байта 2; и, наконец, с разряда 120 по разряд 127 - для байта 15. Таким образом, в регистре используются все имеющиеся разряды. Эта организация хранения информации повышает эффективность хранения в процессоре. Также, при осуществлении доступа к шестнадцати элементам данных одна операция может теперь выполняться над шестнадцатью элементами данных параллельно.

Обычно элемент данных представляет собой индивидуальный фрагмент данных, который хранится в одном регистре или ячейке памяти вместе с другими элементами данных той же самой длины. В последовательностях упакованных данных, относящихся к технологии SSEx, количество элементов данных, хранящихся в ХММ – регистре, составляет 128 разрядов, разделенных по длине на разряды индивидуального элемента данных. Аналогичным образом в последовательностях упакованных данных, относящихся к технологии ММХ (Мультимедийного расширения) и SSE (Расширения SIMD для потоковой обработки, количество элементов данных, хранящихся в ММХ - регистре, составляет 64 разряда, разделенные по длине на разряды индивидуального элемента данных. Хотя типы данных, проиллюстрированные на Фиг. 3A, имеют длину в 128 разрядов, варианты воплощения изобретения могут также оперировать операндами, имеющими ширину в 64 разряда, ширину в 256 разрядов, ширину в 512 разрядов или имеющими другие размеры. Формат (320) упакованного слова из этого примера имеет длину в 128 разрядов и содержит восемь упакованных элементов данных - слов. Каждое упакованное слово содержит шестнадцать разрядов информации. Формат (330) упакованных двойных слов, показанный на Фиг. 3A, имеет длину в 128 разрядов и содержит четыре упакованных элемента данных - двойных слова. Каждый упакованный элемент данных - двойное слово содержит тридцать два разряда информации. Упакованное учетверенное слово имеет длину в 128 разрядов и содержит два упакованных элемента данных - учетверенных слова.

На Фиг. 3B проиллюстрированы альтернативные форматы хранения данных в регистре. Каждые упакованные данные могут включать в себя больше чем один независимый элемент данных. Проиллюстрировано три формата упакованных данных: упакованные половинные данные (341), упакованные одинарные данные (342) и упакованные двойные данные (343). Один вариант воплощения упакованных половинных данных (341), упакованных одинарных данных (342) и упакованных двойных данных (343) содержит элементы данных с фиксированной запятой. Для альтернативного варианта воплощения изобретения один или более форматов из числа: упакованных половинных данных (341), упакованных одинарных данных (342) и упакованных двойных данных (343), могут содержать элементы данных с плавающей запятой. Один альтернативный вариант воплощения упакованных половинных данных (341) имеет длину в сто двадцать восемь разрядов и содержит восемь 16-разрядных элементов данных. Один вариант воплощения упакованных одинарных данных (342) имеет длину сто двадцать восемь разрядов и содержит четыре 32-разрядных элемента данных. Один вариант воплощения упакованных двойных данных (343) имеет длину в сто двадцать восемь разрядов и содержит два 64-разрядных элемента данных. Следует понимать, что такие форматы упакованных данных могут быть далее расширены на другие разрядности регистра, например на 96 разрядов, 160 разрядов, 192 разряда, 224 разряда, 256 разрядов, 512 разрядов или больше.

На Фиг. 3C проиллюстрированы разнообразные представления типов упакованных данных со знаком и без знака в мультимедийных регистрах в соответствии с одним вариантом воплощения изобретения. Представление упакованного байта (344) без знака иллюстрирует хранение упакованного байта без знака в SIMD - регистре. Информация для каждого байтового элемента данных хранится в разрядах: с разряда семь по разряд ноль - для байта ноль; с разряда пятнадцать по разряд восемь - для байта один; с разряда двадцать три по разряд шестнадцать - для байта два, и так далее; и, наконец, с разряда сто двадцать по разряд сто двадцать семь - для байта пятнадцать. Таким образом, в регистре используются все имеющиеся разряды. Эта организация хранения информации может повысить эффективность хранения в процессоре. Также, при осуществлении доступа к шестнадцати элементам данных одна операция может теперь выполняться над шестнадцатью элементами данных параллельно. Представление (345) упакованного байта со знаком иллюстрирует хранение упакованного байта со знаком. Отметим, что восьмой разряд каждого байтового элемента данных представляет собой указатель знака. Представление (346) упакованного слова без знака иллюстрирует то, как слова: со слова семь по слово ноль, хранятся в SIMD - регистре. Представление (347) упакованного слова со знаком аналогично внутрирегистровому представлению (346) упакованного слова без знака. Отметим, что шестнадцатый разряд каждого элемента данных - слова представляет собой указатель знака. Представление (348) упакованного двойного слова без знака показывает то, как хранятся элементы данных - двойные слова. Представление (349) упакованного двойного слова со знаком аналогично внутрирегистровому представлению (348) упакованного двойного слова без знака. Отметим, что необходимый знаковый разряд представляет собой тридцать второй разряд каждого элемента данных - двойного слова.

Фиг. 3D представляет собой изображение одного варианта воплощения формата (360) кодирования операции (кода операции), который имеет тридцать два разряда и режимы адресации операнда, хранимого в регистре/памяти, соответствующие типу формата кода операции, описанному в "Intel® 64 and IA-32 Intel Architecture Software Developer's Manual Combined Volumes 2A and 2B: Instruction Set Reference A - Z" ("Объединенные тома 2A и 2B Руководства разработчику программного обеспечения для архитектуры Intel® 64 и Intel IA - 32: Справочник по набору команд: с А по Z"), который доступен у корпорации Intel Corporation, Санта-Клара, штат Калифорния, США, во всемирной сети (www) по адресу: intel.com/products/proccssor/manuals/. В одном варианте воплощения изобретения команда может быть закодирована посредством одного или больше полей (361) и (362). Может быть идентифицировано до двух мест расположения операндов, приходящихся на одну команду, включая сюда до двух идентификаторов (364) и (365) операндов-источников. Для одного варианта воплощения изобретения идентификатор (366) операнда-адресата является тем же самым, что и идентификатор (364) операнда-источника, тогда как в других вариантах воплощения изобретения они различаются. Для альтернативного варианта воплощения изобретения идентификатор (366) операнда-адресата является тем же самым, что и идентификатор (365) операнда-источника, тогда как в других вариантах воплощения изобретения они различаются. В одном варианте воплощения изобретения, результаты исполнения команды записываются на место одного из операндов-источников, идентифицированных идентификаторами (364) и (365) операндов-источников, тогда как в других вариантах воплощения изобретения идентификатор (364) соответствует элементу регистра-источника, а идентификатор (365) соответствует элементу регистра-адресата. Для одного варианта воплощения изобретения идентификаторы (364) и (365) операндов могут быть использованы для идентификации 32-разрядных или 64-разрядных операнда-источника и операнда-адресата.

Фиг. 3E представляет собой изображение другого альтернативного формата (370) кодирования операции (кода операции), который имеет сорок или больше разрядов. Формат (370) кода операции соответствует формату (360) кода операции и содержит необязательный префиксный байт (378). Команда в соответствии с одним вариантом воплощения изобретения может быть закодирована посредством одного или более полей (378), (371) и (372). Посредством двух идентификаторов (374) и (375) операндов-источников и посредством префиксного байта может быть идентифицировано до двух мест расположения операндов, приходящихся на одну команду. Для одного варианта воплощения изобретения префиксный байт (378) может использоваться для идентификации 32-разрядных или 64-разрядных операндов источника и адресата. Для одного варианта воплощения изобретения идентификатор (376) операнда-адресата является тем же самым, что и идентификатор (374) операнда источника, тогда как в других вариантах воплощения изобретения они различаются. Для альтернативного варианта воплощения изобретения идентификатор (376) операнда-адресата является тем же самым, что и идентификатор (375) операнда-источника, тогда как в других вариантах воплощения изобретения они различаются. В одном варианте воплощения изобретения команда оперирует одним или более операндами из числа операндов, идентифицированных идентификаторами (374) и (375) операндов, и результаты исполнения команды записываются на место одного или более операндов, идентифицированных идентификаторами (374) и (375) операндов, тогда как в других вариантах воплощения изобретения операнды, идентифицированные идентификаторами (374) и (375) записываются в другой элемент данных в другом регистре. Форматы (360) и (370) кода операции позволяют адресацию: из регистра в регистр; из памяти в регистр; в регистр посредством памяти; в регистр посредством регистра, в регистр посредством непосредственного операнда, из регистра в память, указываемую частично посредством полей (363) и (373) MOD и необязательными байтами базы - индекса - шкалы и смещения.

Обратимся далее к Фиг. 3F, в некоторых альтернативных вариантах воплощения изобретения, 64-разрядные (или 128-разрядные или 256-разрядные или 512-разрядный или имеющие более высокую разрядность) арифметические операции с одним потоком команд и многими потоками данных (SIMD) могут быть выполнены посредством команды обработки данных сопроцессором (CDP - обработки) команда. Формат (380) кодирования операции (кода операции) изображает одну такую команду CDP - обработки, имеющую поля (382) и (389) кода операции CDP - обработки. Тип команды CDP - обработки для альтернативных вариантов воплощения изобретения операции могут быть закодированы посредством одного или более полей: 383, 384, 387 и 388. Может быть идентифицировано до трех мест расположения операндов, приходящихся на одну команду, включая сюда до двух идентификаторов (385) и (390) операндов-источников и один идентификатор (386) операнда-адресата. Один вариант воплощения сопроцессора может оперировать 8-, 16-, 32- и 64-разрядными значениями. Для одного варианта воплощения изобретения, команда выполняется над целочисленными элементами данных. В некоторых вариантах воплощения изобретения команда может исполняться в зависимости от условия, используя поле (381) условия. Для некоторых вариантов воплощения изобретения размеры данных источника могут быть закодированы посредством поля (383). В некоторых вариантах воплощения изобретения в отношении SIMD - полей может выполняться обнаружение нуля (Z), отрицательной величины (N), переноса (С) и переполнения (V). Для некоторых команд тип насыщения может быть закодирован посредством поля (384).

Обратимся далее к Фиг. 3G, которая представляет собой изображение другого альтернативного формата (397) кодирования операции (кода операции) для обеспечения функциональных возможностей цикла защищенного хеширования с шифром, соответствующих другому варианту воплощения изобретения, корреспондирующего типу формата кода операции описанному в "Intel® Advanced Vector Extensions Programming Reference" ("Справочник по программированию усовершенствованных векторных расширений для Intel®"), который доступен у корпорации Intel Corp., Санта-Клара, штат Калифорния, США, во всемирной сети (www) по адресу: intel.com/products/processor/manuals/.

Первоначальный набор команд х86 предусматривал 1-байтовый код операции, при этом различные форматы адресного слога и непосредственного операнда, содержатся в дополнительных байтах, присутствие которых известно из первого байта с "кодом операции". В дополнение к этому имелись некоторые байтовые значения, которые были зарезервированы в качестве модификаторов кода операции (называемые префиксами, поскольку они должны были размещаться перед командой). Когда первоначальная палитра, состоящая из 256 байтов кода операции (включающая в себя эти специальные префиксные значения) была исчерпана, один байт был назначен в качестве перехода к новому набору, состоящему из 256 кодов операции. Поскольку были добавлены векторные команды (например, SIMD), то возникла потребность в большем количестве кодов операции, и "двухбайтовая" карта кода операции также была недостаточна, даже при ее расширении с помощью префиксов. С этой целью в дополнительные карты были добавлены новые команды, которые используют 2 байта плюс необязательный префикс в качестве идентификатора.

В дополнение к этому для того, чтобы содействовать дополнительным регистрам в 64-разрядном режиме, может быть использован дополнительный префикс (называемый "REX") между префиксами и кодом операции (и любыми байтами перехода, необходимыми для определения кода операции). В одном варианте воплощения изобретения REX может иметь 4 разряда "полезных данных" для того, чтобы указывать использование дополнительных регистров в 64-разрядном режиме. В других вариантах воплощения изобретения это он может иметь меньше или больше чем 4 разряда. Общий формат, по меньшей мере, одного набора команд (который, в общем, корреспондирует формату (360) и/или формату (370)) проиллюстрирован в общем виде следующим выражением:

Формат (397) кода операции корреспондирует формату (370) кода операции и содержит байты (391) необязательного префикса VEX (начинающиеся в одном варианте воплощения с шестнадцатеричного С4) для замещения большинства других обычно используемых байтов префикса и кодов перехода в унаследованных командах. Например, нижеследующее иллюстрирует вариант воплощения изобретения, в котором используется два поля для кодирования команды, которые могут использоваться в случае, когда в первоначальной команде присутствует второй код перехода или когда в поле REX необходимо использовать дополнительные разряды (например, поля ХВ и W). В варианте воплощения изобретения, проиллюстрированном ниже, унаследованный переход представлен новым значением перехода, унаследованные префиксы полностью сжаты как часть байтов "полезных данных", унаследованные префиксы восстанавливаются и доступны для будущего расширения, второй код перехода сжат в поле "карты", при этом доступна будущая карта или пространство признаков, и добавлены новые признаки (например, увеличенная длина вектора и спецификатор дополнительного регистра-источника).

Команда, соответствующая одному варианту воплощения изобретения, может быть закодирована посредством одного или более полей (391) и (392). До четырех мест расположения операндов, приходящихся на одну команду, может быть идентифицировано посредством поля (391) в сочетании с идентификаторами (374) и (375) операндов-источников и в сочетании с необязательным идентификатором (393) базы - индекса - шкалы (SIB), необязательным идентификатором (394) смещения и необязательным непосредственным байтом (395). Для одного варианта воплощения изобретения байты (391) префикса VEX могут быть использованы для того, чтобы идентифицировать 32-разрядные или 64-разрядные операнды источника и адресата и/или 128-разрядные или 256-разрядные операнды, хранимые в SIMD - регистре или памяти. Для одного варианта воплощения изобретения функциональные возможности, предоставляемые форматом (397) кода операции, могут быть дублирующими по отношению к формату (370) кода операции, тогда как в других вариантах воплощения изобретения они являются различными. Форматы (370) и (397) кода операции позволяют адресацию: из регистра в регистр; из памяти в регистр; в регистр посредством памяти; в регистр посредством регистра, в регистр посредством непосредственного операнда, из регистра в память, указываемую частично посредством поля (373) MOD и посредством необязательного (SIB-) идентификатора (393), необязательного идентификатора (394) смещения и необязательного непосредственного байта (395).

Обратимся далее к Фиг. 3H, которая представляет собой изображение другого альтернативного формата (398) кодирования операции (кода операции), для обеспечения функциональных возможностей цикла защищенного хеширования с шифром, соответствующих другому варианту воплощения изобретения. Формат (398) кода операции корреспондирует форматам (370) и (397) кода операции и содержит байты (396) необязательного префикса EVEX (начинающиеся в одном варианте воплощения изобретения с шестнадцатеричного 62) для замещения большинства других обычно используемых байтов префикса и кодов перехода в унаследованных командах. Команда, соответствующая одному варианту воплощения изобретения может быть закодирована посредством одного или более полей (396) и (392). До четырех мест расположения операндов, приходящихся на одну команду, и маска могут быть идентифицированы посредством поля (396) в сочетании с идентификаторами (374) и (375) операндов - источников и в сочетании с необязательным идентификатором (393) базы - индекса - шкалы (SIB), необязательным идентификатором (394) смещения и необязательным непосредственным байтом (395). Для одного варианта воплощения изобретения байты (396) префикса EVEX могут быть использованы для того, чтобы идентифицировать 32-разрядные или 64-разрядные операнды источника и адресата и/или 128-разрядные, 256-разрядные или 512-разрядные операнды, хранимые в SIMD-регистре или памяти. Для одного варианта воплощения изобретения функциональные возможности, предоставляемые форматом (398) кода операции, могут быть дублирующими по отношению к форматам (370) или (397) кода операции, тогда как в других вариантах воплощения изобретения они являются различными. Формат (398) кода операции позволяет адресацию: из регистра в регистр; из памяти в регистр; в регистр посредством памяти; в регистр посредством регистра, в регистр посредством непосредственного операнда, из регистра в память, с масками, что указывается частично посредством поля (373) MOD и посредством необязательного (SIB-) идентификатора (393), необязательного идентификатора (394) смещения и необязательного непосредственного байта (395). Общий формат, по меньшей мере, одного набора команд (который в общем корреспондирует формату (360) и/или формату (370)) проиллюстрирован в общем виде следующим выражением:

Для одного варианта воплощения изобретения команда, закодированная в соответствии с форматом (398) EVEX, может иметь дополнительные разряды "полезных данных", которые могут быть использованы для того, чтобы снабдить функциональные возможности цикла защищенного хеширования с шифром дополнительными новыми признаками, такими как, например, регистр маски, конфигурируемый пользователем, или дополнительный операнд, или выбор из числа 128-разрядных, 256-разрядных или 512-разрядных векторных регистров, или большее количество регистров, из которых делается выбор, и так далее.

Например, в случае, при котором формат (397) VEX может использоваться для того, чтобы снабдить функциональные возможности цикла защищенного хеширования с шифром неявной маской, формат (398) EVEX может использоваться для того, чтобы снабдить функциональные возможности цикла защищенного хеширования с шифром явной конфигурируемой пользователем маской. В дополнение к этому в случае, при котором формат (397) VEX может использоваться для того, чтобы обеспечивать функциональные возможности цикла защищенного хеширования с шифром, используя 128-разрядные или 256-разрядные векторные регистры, формат (398) EVEX может использоваться для того, чтобы обеспечивать функциональные возможности цикла защищенного хеширования с шифром, используя 128-разрядные, 256-разрядные или 512-разрядные или большие (или меньшие) векторные регистры.

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

Следует понимать, что команды для использования алгоритма защищенного хеширования с шифром, как в приведенных выше примерах, могут использоваться для обеспечения функциональных возможностей цикла защищенного хеширования с шифром в приложениях, например, таких как те, что обеспечивают балансировочное распределение нагрузки и/или защиту от атак, имеющих целью отказ в обслуживании, и так далее, не требуя при этом чрезмерной сложности вычислений или неприемлемых времен задержки, но тем не менее предусматривая хорошо выбранные настройки для воспрепятствования атакам и вдобавок к этому не уменьшая требуемое качество обслуживания в этом процессе. В некоторых вариантах воплощения изобретения может указываться (например, в непосредственном операнде) диапазон номеров цикла для выполнения алгоритма защищенного хеширования с шифром. Например, в одном варианте воплощения шестнадцатеричный диапазон 0×0F в непосредственном байтовом операнде может указывать на то, что команда должна выполнить все шестнадцать (16) итераций алгоритма хеширования с шифром, тогда как шестнадцатеричный диапазон 0×FF в непосредственном байтовом операнде может указывать на то, что команда должна выполнить только одну итерацию цикла шестнадцать (16), или шестнадцатеричный диапазон 0×F8 в непосредственном байтовом операнде может указывать на то, что команда должна выполнить итерации: с цикла шестнадцать (16) по цикл девять (9), в режиме дешифрования алгоритма хеширования с шифром. Следует понимать, что одно неожиданное преимущество от использования шифра в качестве алгоритма хеширования в противоположность однонаправленным алгоритмам хеширования заключается в том, что он является обратимым, что может помочь с конструированием ключей для балансировки нагрузки, которые обеспечивают требуемые характеристики (например, стойкое и/или согласующееся хеширование), позволяя при этом введение новых ключей для воспрепятствования атаке (например, такой как атака с целью отказа в обслуживании). Другое неожиданное преимущество от выполнения в качестве алгоритма хеширования только указанного количества итераций шифра заключается в том, что для каждого цикла или диапазона циклических итераций могут быть использованы различные наборы ключей, что обеспечивает результаты шифрования, которые не возможны при использовании стандартной схемы с подключом.

Следует также понимать, что предоставление команд цикла защищенного хеширования с шифром, которые выполняют только указанное количество циклических итераций хеширования, может сделать возможным исполнение алгоритма хеширования в процессорном конвейере одновременно с другой обработкой данных, такой как предварительная обработка ключей и выбор одного или более операндов - ключей из частного набора предварительно заданных ключей для воспрепятствования атаке. То есть в случае, при котором единственная итерация цикла хеширования может иметь конвейерную задержку, составляющую три такта (например, 3 такта на один цикл), при передаче результатов в обход в обратном направлении через конвейер, две итерации могут иметь задержку, составляющую только четыре такта (например, 2 такта на один цикл), четыре итерации могут иметь задержку, составляющую только шесть тактов (например, 1,5 такта на один цикл), а пять итераций могут иметь задержку, составляющую только семь тактов (например, 1,4 такта на один цикл). Во время этих конвейерных задержек, составляющих четыре, шесть или семь тактов, параллельно или одновременно с защищенным хешированием с шифром может выполняться другая полезная обработка данных. Таким образом, предоставление команды для циклов алгоритма защищенного хеширования с шифром, которая имеет некоторое количество итераций (например, две, четыре или пять итераций), но меньше, чем общее количество циклических итераций алгоритма шифра, позволяет одновременно исполнять другие команды в суперскалярном конвейере исполнения и/или процессорном конвейере с переупорядочением последовательности команд, таким образом, значительно повышая пропускную способность обработки данных и усиливая деление частот для усовершенствований процесса изготовления, связанных с процессорами общего применения.

Фиг. 4A представляет собой блок-схему, на которой проиллюстрирован конвейер без переупорядочения последовательности команд и стадия переименования регистров, конвейер выдачи/исполнения команд с переупорядочением последовательности команд, соответствующие, по меньшей мере, одному варианту воплощения изобретения. Фиг. 4B представляет собой структурную схему, на которой проиллюстрировано ядро с архитектурой без переупорядочения последовательности команд и логика переименования регистров, логика выдачи/исполнения команд с переупорядочением последовательности команд, подлежащие включению в состав процессора, соответствующего, по меньшей мере, одному варианту воплощения изобретения. Прямоугольники, очерченные сплошной линией на Фиг. 4A, иллюстрируют конвейер без переупорядочения последовательности команд, в то время как прямоугольники, очерченные пунктирной линией, иллюстрируют переименование регистров, конвейер с выдачей/исполнением команд с переупорядочением последовательности команд. Аналогичным образом прямоугольники, очерченные сплошной линией на Фиг. 4B, иллюстрируют логику архитектуры без переупорядочения последовательности команд, в то время как прямоугольники, очерченные пунктирной линией, иллюстрируют логику переименования регистров и логику выдачи/исполнения команд с переупорядочением последовательности команд.

На Фиг. 4A процессорный конвейер (400) включает в себя: стадию (402) выборки, стадию (404) декодирования длины, стадию (406) декодирования, стадию (408) распределения, стадию (410) переименования, стадию (412) планирования (также известного как отправка или выдача), стадию (414) считывания из регистра/считывания из памяти, стадию (416) исполнения, стадию (418) записи в обратном направлении/записи в память, стадию (422) обработки исключительных ситуаций и стадию (424) фиксации.

На Фиг. 4B стрелки обозначают сопряжение между двумя или более блоками, и направление стрелки указывает направление потока данных между этими блоками. На Фиг. 4B показано ядро (490) процессора, включающее в себя блок (430) передней части, сопряженный с блоком (450) исполняющей машины, и оба этих блока сопряжены с запоминающим блоком (470).

Ядро (490) может представлять собой ядро для вычисления с сокращенным набором команд (RISC-ядро), ядро для вычисления со сложным набором команд (CISC-ядро), ядро с командными словами сверхбольшой длины (VLIW-ядро) или гибридный или альтернативный тип ядра. В качестве еще одного другого необязательного варианта ядро (490) может представлять собой специализированное ядро, такое как, например, сетевое ядро или ядро для связи, машину сжатия данных, графическое ядро или тому подобное.

Блок (430) передней части включает в себя блок (432) предсказания ветвей, сопряженное с блоком (434) кэша команд, которое сопряжено с буфером (436) быстрого преобразования адреса (TLB-буфером) команд, который сопряжен с блоком (438) выборки команд, которое сопряжено с декодирующим блоком (440). Декодирующий блок или декодер может декодировать команды и генерировать в качестве своих выходных данных одну или более микроопераций, точек входа в микрокод, микрокоманд, других команд или других управляющих сигналов, которые декодированы из первоначальных команд или которые иным образом отражают эти команды или выведены из них. Декодер может быть реализован с использованием всевозможных различных механизмов. Примеры подходящих механизмов включают в себя: таблицы поиска, варианты реализации посредством аппаратных средств, программируемые логические матрицы (PLA-матрицы), постоянные запоминающие устройства (ПЗУ-устройства) для микрокода и так далее, но не ограничены ими. Блок (434) кэша команд далее сопряжен с блоком (476) кэша уровня 2 (L2) в запоминающем блоке (470). Декодирующий блок (440) сопряжен с переименовывающим/распределяющим блоком (452) в блоке (450) исполняющей машины.

Блок (450) исполняющей машины включает в себя переименовывающий/распределяющий блок (452), сопряженный с блоком (454) изъятия и набором из одного или более блока (блоков) (456) планировщика. Блок (блоки) (456) планировщика представляет (представляют) любое количество различных планировщиков, включающих в себя станцию резерваций, центральное окно команды и так далее. Блок (блоки) (456) планировщика сопряжен (сопряжены) с блоком (блоками) (458) физического регистрового файла (физических регистровых файлов). Каждый из блоков (458) физического регистрового файла (физических регистровых файлов) представляет один или более физических регистровых файлов, различные файлы из которых хранят один или более различных типов данных, таких как скалярные целочисленные данные, скалярные данные с плавающей запятой, упакованные целочисленные данные, упакованные данные с плавающей запятой, векторные целочисленные данные, векторные данные с плавающей запятой и так далее, данные о состоянии (например, указатель команды, который представляет собой адрес следующей команды, подлежащей исполнению) и так далее. Блок (блоки) (458) физического регистрового файла (физических регистровых файлов) перекрывается (перекрываются) блоком (454) изъятия, что иллюстрирует различные способы, посредством которых может быть осуществлено переименование регистров и исполнение с переупорядочением последовательности команд (например, посредством использования переупорядочивающего буфера (переупорядочивающих буферов) и регистрового файла (регистровых файлов) изъятия, использования будущего файла (будущих файлов), буфера (буферов) предыстории и регистрового файла (регистровых файлов) изъятия; использования карт регистров и пула регистров; и так далее). Вообще говоря, архитектурные регистры видимы извне процессора или с перспективы программиста. Регистры не ограничены никаким известным конкретным типом схемы. Подходящими являются всевозможные различные типы регистров при том условии, что они способны хранить и предоставлять данные так, как это здесь описано. Примеры подходящих регистров включают в себя: выделенные физические регистры, динамически распределяемые физические регистры с использованием переименования регистров, сочетания выделенных и динамически распределяемых физических регистров и так далее, но не ограничены ими. Блок (454) изъятия и блок (блоки) (458) физического регистрового файла (физических регистровых файлов) сопряжены с исполняющим кластером (исполняющими кластерами) (460). Исполняющий кластер (исполняющие кластеры) (460) включает (включают) в себя набор из одного или боле исполняющих блоков (462) и набор из одного или более блоков (464) доступа к памяти. Исполняющие блоки (462) могут выполнять разнообразные операции (например, сдвиги, сложение, вычитание, умножение) и над разнообразными типами данных (например, скалярными данными с плавающей запятой, упакованными целочисленными данными, упакованными данными с плавающей запятой, векторными целочисленными данными, векторными данными с плавающей запятой). Притом что некоторые варианты воплощения изобретения могут включать в себя некоторое количество исполняющих блоков, выделенных для конкретных функций или наборов функций, другие варианты воплощения изобретения могут включать в себя только один исполняющий блок или множественные исполняющие блоки, все из которых выполняют все функции. Блок (блоки) (456) планировщика, блок (блоки) (1458) физического регистрового файла (физических регистровых файлов) и исполняющий кластер (исполняющие кластеры) (460) показаны как могущие иметься во множественном числе, потому что в некоторых вариантах воплощения изобретения создаются раздельные конвейеры для некоторых типов данных/операций (например, конвейер для скалярных целочисленных данных, конвейер для скалярных данных с плавающей запятой/упакованных целочисленных данных/упакованных данных с плавающей запятой/векторных целочисленных данных/векторных данных с плавающей запятой и/или конвейер доступа к памяти), каждый из которых (конвейеров) имеет свой собственный блок планировщика, блок физического регистрового файла (физических регистровых файлов) и/или исполняющий кластер, а в случае отдельного конвейера доступа к памяти реализованы некоторые варианты воплощения изобретения, в которых блок (блоки) (464) доступа к памяти имеется (имеются) только у исполняющего кластера этого конвейера. Следует также понимать, что там, где используются раздельные конвейеры, один или больше из этих конвейеров может представлять собой конвейер с выдачей/исполнением команд с переупорядочиванием последовательности команд, а остальные - без переупорядочения последовательности команд.

Набор блоков (464) доступа к памяти сопряжен с запоминающим блоком (470), который включает в себя блок (472) TLB (буфера быстрого преобразования адреса) данных, сопряженный с блоком (474) кэша данных, сопряженным с блоком (476) кэша уровня 2 (L 2). В одном приводимом в качестве примера варианте воплощения изобретения блоки (464) доступа к памяти могут включать в себя блок загрузки, блок сохранения адреса и блок сохранения данных, каждое из которых сопряжено с блоком (472) TLB для данных, находящимся в запоминающем блоке (470). Блок (476) кэша уровня 2 сопряжен с одним или более другими уровнями кэша и, в конечном счете, с основной памятью.

В порядке примера отметим, что эта приводимая в качестве примера архитектура ядра с переименованием регистров, выдачей/исполнением команд с переупорядочиванием последовательности команд может реализовывать конвейер (400) следующим образом: 1) блок (438) выборки команд выполняет стадии (402 и 404) выборки и декодирования длины; 2) декодирующий блок (440) выполняет стадию (406) декодирования; 3) переименовывающее/распределяющее блок (452) выполняет стадию (408) распределения и стадию (410) переименования; 4) блок (блоки) (456) планировщика выполняет (выполняют) стадию (412) планирования; 5) блок (блоки) (458) физического регистрового файла (физических регистровых файлов) и запоминающий блок (470) выполняют стадию (414) считывания из регистра/считывания из памяти; исполняющий кластер (460) выполняет стадию (416) исполнения; 6) запоминающий блок (470) и блок (блоки) (458) физического регистрового файла (физических регистровых файлов) выполняют стадию (418) записи в обратном направлении/записи в память; 7) в стадию (422) обработки исключительных ситуаций могут быть вовлечены различные блоки; и 8) блок (454) изъятия и блок (блоки) (458) физического регистрового файла (физических регистровых файлов) выполняют стадию (424) фиксации.

Ядро (490) может поддерживать один или более наборов команд (например, набор (х86) команд (с некоторыми расширениями, которые были добавлены в более новых версиях)); набор (MIPS) команд от MIPS Technologies, Саннивейл, штат Калифорния, США; набор (ARM) команд (с необязательными дополнительными расширениями, такими как NEON) от ARM Holdings, Саннивейл, штат Калифорния, США.

Следует понимать, что ядро может поддержать многопоточную обработку (исполнение двух или больше параллельных наборов операций или потоков обработки) и может делать это разнообразными способами, включающими в себя многопоточную обработку с квантованием времени, одновременную многопоточную обработку (при которой одно физическое ядро предоставляет логическое ядро для каждого из потоков обработки, одновременная многопоточная обработка которых осуществляется физическим ядром) или сочетание этих способов (например, выборка и декодирование с квантованием времени, а после этого одновременная многопоточная обработка, так, как это делается в технологии Intel® Hyperthreading technology (Технологии гиперпоточной обработки Intel®).

Следует понимать, что, хотя переименование регистров описано в контексте исполнения с переупорядочиванием последовательности команд, переименование регистров может быть использовано в архитектуре без переупорядочивания последовательности команд. Хотя проиллюстрированный вариант воплощения процессора также включает в себя раздельные блоки (434/474) кэша команд и данных и совместно используемый блок (476) кэша уровня 2, альтернативные варианты воплощения изобретения могут иметь единый внутренний кэш как для команд, так и для данных, такой как, например, внутренний кэш уровня 1 (L1) или множественные уровни внутреннего кэша. В некоторых вариантах воплощения изобретения система может включать в себя сочетание внутреннего кэша и внешнего кэша, который является внешним по отношению к ядру и/или процессору. В качестве альтернативы весь кэш может быть внешним по отношению к ядру и/или процессору.

Фиг. 5 представляет собой структурную схему одноядерного процессора и многоядерного процессора (500) с интегрированными контроллером памяти и графическими средствами в соответствии с вариантами воплощения изобретения. Прямоугольники, очерченные сплошной линией на Фиг. 5, иллюстрируют процессор (500) с единственным ядром (502 А), системный агент (510), набор из одного или более блоков шинного контроллера (516), в то время как необязательное добавление прямоугольников, очерченных пунктирной линией, иллюстрирует альтернативный процессор (500) с множественными ядрами (502 А - N), набор из одного или более блока (блоков) (514) интегрированного контроллера памяти в блоке (510) системного агента и интегрированных логических схем (508) графики.

Иерархия памяти включает в себя один или более уровней кэша в пределах ядер, набор или один или более совместно используемых блоков (506) кэша и внешнюю память (не показанную на чертеже), сопряженную с набором блоков (514) интегрированного контроллера памяти. Набор совместно используемых блоков (506) кэша может включать в себя один или более кэшей среднего уровня, таких как уровня 2 (L2), уровня 3 (L3), уровня 4 (L4) или других уровней кэша, кэш последнего уровеня (LLC-кэш) и/или их сочетание. Хотя в одном варианте воплощения изобретения межсоединение интегрированных логических схем (508) графики, набора совместно используемых блоков (506) кэша и блока (510) системного агента осуществляет блок (512) межсоединения, основанного на кольце, в альтернативных вариантах воплощения изобретения может использоваться любое количество хорошо известных технологий для межсоединения таких блоков.

В некоторых вариантах воплощения изобретения одно или более ядер (502 А - N) способны к многопоточной обработке данных. Системный агент (510) включает в себя те компоненты, которые координируют и управляют ядрами (502 А - N). Блок (510) системного агента может включать в себя, например, блок управления электропитанием (PCU-блок) и блок отображения. Блок управления электропитанием может представлять собой или включать в себя логику и компоненты, необходимые для регулирования состояния электропитания ядер (502 А - N) и интегрированных логических схем (508) графики. Блок отображения предназначен для приведения в действие одного или более подсоединенных внешним образом дисплеев.

Ядра (502 А - N) могут быть однородными или неоднородными в том, что касается их архитектуры и/или набора команд. Например, некоторые из ядер (502 А - N) могут быть без переупорядочивания последовательности команд, в то время как другие с переупорядочиванием последовательности команд. В качестве другого примера два или более из ядер (502 А - N) могут быть способны исполнять один и тот же набор команд, в то время как другие могут быть способны исполнять только подмножество этого набора команд или другой набор команд.

Процессор может представлять собой универсальный процессор, такой как процессор Core™ i3, i5, i7, 2 Duo и Quad, Xeon™, Itanium™ или XScale™ или StrongARM™, которые поставляются корпорации Intel Corporation, Санта-Клара, штат Калифорния (США). В качестве альтернативы процессор может быть от другой компании, такой как ARM Holdings, Ltd, MIPS и так далее. Процессор может представлять собой процессор специального назначения, такой как, например, сетевой процессор или процессор передачи данных, машина сжатия данных, графический процессор, сопроцессор, встроенный процессор или тому подобное. Процессор может быть реализован на одном или более кристаллах. Процессор (500) может быть частью одной или более подложек и/или может быть реализован на одной или более подложках с использованием любой из множества технологий обработки, таких как, например, BiCMOS (Биполярная комплементарная структура "металл - оксид - полупроводник"), CMOS (комплементарная структура "металл - оксид - полупроводник") или NMOS (n-канальная структура "металл - оксид - полупроводник").

Фиг. 6-8 представляют собой приводимые в качестве примера системы, подходящие для включения в их состав процессора (500), в то время как Фиг. 9 представляет собой приводимую в качестве примера внутрикристальную систему (SoC), которая может включать в себя одно или больше ядер (502). Также подходящими являются и другие конструкции и конфигурации систем, известные в данной области техники для переносных компьютеров, настольных компьютеров, карманных персональных компьютеров, персональных цифровых секретарей, инженерных рабочих станций, серверов, сетевых устройств, сетевых концентраторов, коммутаторов, встроенных процессоров, процессоров цифровой обработки сигналов (DSP процессоров), графических устройств, игровых видеоустройств, телевизионных абонентских приставок, микроконтроллеров, сотовых телефонов, портативных универсальных проигрывателей, ручных устройств и разнообразных других электронных устройств. В общем, обычно подходящим является огромное разнообразие систем или электронных устройств, в состав которых может быть введен процессор и/или другая исполняющая логики, которая раскрыта в данном описании.

Обратимся теперь к Фиг. 6, на которой показана структурная схема системы (600) в соответствии с одним вариантом воплощения изобретения. Система (600) может включать в себя один или более процессоров (610), (615), которые сопряжены с концентратором - контроллером (GMCH) (620) графики и памяти. Необязательная природа дополнительных процессоров (615) обозначена на Фиг. 6 пунктирными линиями.

Каждый процессор (610), (615) может представлять собой некоторую версию процессора (500). Однако следует отметить, что маловероятно, чтобы в процессорах (610), (615) существовали интегрированные логические схемы графики и интегрированные блоки управлением памятью. На Фиг. 6 проиллюстрировано, что GMCH (620) может быть сопряжен с памятью (640), которая может представлять собой, например, динамическое оперативное запоминающее устройство (DRAM). Динамическое оперативное запоминающее устройство может, по меньшей мере, для одного варианта воплощения изобретения быть связанным с энергонезависимым кэшем.

GMCH (620) может представлять собой набор микросхем или часть набора микросхем. GMCH (620) может поддерживать связь с процессором (процессорами) (610), (615) и управлять взаимодействием между процессором (процессорами) (610), (615) и памятью (640). GMCH (620) может также действовать в качестве ускоренного интерфейса шины между процессором (процессорами) (610), (615) и другими элементами системы (600). Для, по меньшей мере, одного варианта воплощения изобретения GMCH (620) поддерживает связь с процессором (процессорами) (610), (615) через многоотводную шину, такую как управляющая шина (FSB-шина) (695).

Кроме того, GMCH (620) сопряжен с устройством (645) отображения (таким как дисплей с плоским экраном). GMCH (620) может включать в себя интегрированный графический акселератор. GMCH (620), кроме того, сопряжен с концентратором -контроллером (ICH) (650) ввода/вывода (I/O), который может быть использован для того, чтобы сопрягать с системой (600) разнообразные периферийные устройства. В варианте воплощения изобретения, показанном на Фиг. 6, для примера показано внешнее графическое устройство (660), которое может представлять собой дискретное графическое устройство, сопряженное с ICH (650), наряду с другим периферийным устройством (670).

В качестве альтернативы в системе (600) могут также присутствовать дополнительные или другие процессоры. Например, дополнительный процессор (дополнительные процессоры) (615) может (могут) включать в себя дополнительный процессор (дополнительные процессоры), который (которые) является (являются) одинаковым(и) по отношению к процессору (610), дополнительный процессор (дополнительные процессоры), который (которые) является (являются) разнородным(и) или асимметричным(и) по отношению к процессору (610), ускорители (такие как, например, графические ускорители или блоки цифровой обработки сигналов (DSP-блоки)), вентильные матрицы с эксплуатационным программированием или любой другой процессор. Может иметь место многообразие различий между физическими ресурсами (610), (615) в том, что касается спектра показателей их качества, включающих в себя архитектурные, микроархитектурные, тепловые характеристики, характеристики энергопотребления и тому подобное. Эти различия могут практически проявлять себя как асимметрия и разнородность среди процессоров (610), (615). По меньшей мере, для одного варианта воплощения изобретения разнообразные процессоры (610), (615) могут находиться в одном и том же корпусе кристалла.

Обратимся теперь к Фиг. 7, на которой показана структурная схема второй системы (700) в соответствии с вариантом воплощения изобретения. Как показано на Фиг. 7, многопроцессорная система (700) представляет собой систему с двухточечными межсоединениями и включает в себя некоторый первый процессор (770) и некоторый второй процессор (780), сопряженные через двухточечное межсоединение (750). Каждый из процессоров (770) и (780) может представлять собой некоторую версию процессора (500), как одного или более процессоров (610), (615).

Хотя на чертеже система показана только с двумя процессорами (770), (780), следует понимать, что объем изобретения этим не ограничен. В других вариантах воплощения изобретения в данном процессоре могут присутствовать один или более дополнительных процессоров.

Процессоры (770) и (780) показаны включающими в себя соответственно блоки (772) и (782) интегрированных контроллеров памяти. Процессор (770) также включает в себя, как часть его блоков - шинных контроллеров, двухточечные (Р - Р) интерфейсы (776) и (778); аналогичным образом второй процессор (780) включает в себя двухточечные интерфейсы (786) и (788). Процессоры (770), (780) могут обмениваться информацией через двухточечный (Р - Р) интерфейс (750) с использованием схем (778), (788) двухточечного интерфейса. Как показано на Фиг. 7, интегрированные контроллеры (772 и 782) памяти (IMC - контроллеры) сопрягают процессоры с соответствующими запоминающими устройствами, а именно памятью (732) и памятью (734), которые могут являться частями основной памяти, локально закрепленными за соответствующими процессорами.

Процессоры (770), (780) могут каждый обмениваться информацией с набором (790) микросхем через индивидуальные двухточечные интерфейсы (752), (754), использующие схемы (776), (794), (786), (798) двухточечных интерфейсов. Набор (790) микросхем может также обмениваться информацией с высокопроизводительной графической схемой (738) через высокопроизводительный интерфейс (739) графики.

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

Набор (790) микросхем может быть сопряжен с некоторой первой шиной (716) через интерфейс (796). В одном варианте воплощения изобретения первая шина (716) может представлять собой шину Межсоединения периферийных компонентов (шину (PCI)), или шину, такую как шина PCI Express (Скоростного Межсоединения периферийных компонентов) или другую шину межсоединения ввода/вывода третьего поколения, хотя объем изобретения этим не ограничен.

Как показано на Фиг. 7, с первой шиной (716) могут быть сопряжены разнообразные устройства (714) ввода/вывода, наряду с мостом (718) между шинами, который сопрягает первую шину (716) со второй шиной (720). В одном варианте воплощения изобретения вторая шина (720) может представлять собой шину с малым количеством выводов (LPC - шину). Со второй шиной (720) могут быть сопряжены разнообразные устройства, включающие в себя, например, клавиатуру и/или "мышь" (722), устройства (727) связи и запоминающее устройство (728), такое как дисковод или другое запоминающее устройство большой емкости, которое в одном варианте воплощения изобретения может включать в себя команды/код и данные (730). Кроме того, со второй шиной (720) может быть сопряжено устройство (724) ввода/вывода звука. Отметим, что возможны и другие архитектуры. Например, вместо двухточечной архитектуры, показанной на Фиг. 7, в системе может быть реализована многоотводная шина или другая такая архитектура.

Обратимся теперь к Фиг. 8, на которой показана структурная схема третей системы (800) в соответствии с некоторым вариантом воплощения изобретения. Сходные элементы на Фиг. 7 и 8 имеют сходные ссылочные позиции, и некоторые аспекты Фиг. 7 были опущены на Фиг. 8 для того, чтобы избежать затруднения понимания других аспектов Фиг. 8.

На Фиг. 8 проиллюстрировано то, что процессоры (870), (880) могут включать в себя интегрированную логику управления ("CL-логику") памятью и вводом/выводом соответственно (872) и (882). Для, по меньшей мере, одного варианта воплощения изобретения управляющая логика (872), (882) может включать в себя блоки интегрированного контроллера памяти, такие как те, что были описаны выше в связи с Фиг. 5 и 7. В дополнение к этому управляющая логика (872), (882) может также включать в себя логику управления вводом/выводом. На Фиг. 8 проиллюстрировано то, что с управляющей логикой (872) и (882) сопряжены не только память (832), (834), но также и то, что с управляющей логикой (872), (882) также сопряжены устройства (814) ввода/вывода. Унаследованные устройства (815) ввода/вывода сопряжены с набором (890) микросхем.

Обратимся теперь к Фиг. 9, на которой показана структурная схема Внутрикристальной системы (SoC) (900), соответствующей некоторому варианту реализации изобретения. Элементы, аналогичные элементам на Фиг. 5, имеют сходные с ними ссылочные позиции. Кроме того, отметим, что прямоугольники, очерченные пунктирной линией, представляют собой необязательные признаки на более совершенных Внутрикристальных системах. На Фиг. 9 блок (блоки) (902) межсоединений сопряжен с прикладным процессором (910), который включает в себя набор из одного или более ядер (502 А - N) и блок (блоки) (506) совместно используемого кэша; блоком (510) системного агента; блоком (блоками) (516) шинного контроллера; блоком (блоками) (514) интегрированного контроллера памяти; набором из одного или более медиапроцессоров (920), которые могут включать в себя интегрированные логические схемы (508) графики, процессор (924) изображений для обеспечения функциональных возможностей фотокамеры для съемки неподвижных и/или видеоизображений, процессор (926) аудиоинформации для обеспечения аппаратного ускорения обработки аудиоинформации и видеопроцессор (928) для обеспечения ускорения кодирования/декодирования видеоинформации; блоком (930) статического оперативного запоминающего устройства (блоком SRAM); блоком (932) прямого доступа к памяти (блоком DMA); и блоком (940) отображения для сопряжения с одним или более внешними устройствами отображения.

На Фиг. 10 проиллюстрирован процессор, содержащий центральный процессор (CPU) и графический процессор (GPU), которые могут выполнять, по меньшей мере, одну команду, соответствующую одному варианту воплощения изобретения. В одном варианте воплощения изобретения команда на выполнение операций, соответствующих, по меньшей мере, одному варианту воплощения изобретения, могла бы выполняться центральным процессором. В другом варианте воплощения изобретения эта команда могла бы выполняться графическим процессором. В еще одном другом варианте воплощения изобретения эта команда могла бы выполняться посредством сочетания операций, выполняемых графическим процессором и центральным процессором. Например, в одном варианте воплощения изобретения команда, соответствующая одному варианту воплощения изобретения, может быть принята и декодирована для исполнения на графическом процессоре. Однако одна или более операций в пределах декодированной команды могут быть выполнены центральным процессором, а результат возвращен в графический процессор для окончательного изъятия команды. В противоположность этому в некоторых вариантах воплощения изобретения центральный процессор может действовать в качестве основного процессора, а графический процессор - в качестве сопроцессора.

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

На Фиг. 10, процессор (1000) включает в себя центральный процессор (1005), графический процессор (1010), процессор (1015) изображений, видеопроцессор (1020), контроллер (1025) USB (Универсальной последовательной шины), контроллер (1030) UART (Универсального асинхронного приемопередатчика), контроллер (1035) SPI/SDIO (Последовательного интерфейса периферийного оборудования/Ввода/вывода последовательно передаваемых данных), устройство (1040) отображения, контроллер (1045) интерфейса для мультимедиа высокой четкости, контроллер (1050) MIPI, контроллер (1055) флэш-памяти, контроллер (1060) двойной скорости передачи данных (DDR), машина (1065) обеспечения безопасности и интерфейс (1070) I2S/I2C (Integrated Interchip Sound/Inter-Integrated Circuit). В состав процессора, показанного на Фиг. 10, могут быть включены другая логика и схемы, в том числе большее количество центральных процессоров или графических процессоров, и другие контроллеры интерфейса периферийного оборудования.

Один или более аспектов, по меньшей мере, одного варианта воплощения изобретения могут быть реализованы посредством представительных данных, хранимых на машиночитаемом носителе информации, который представляет различную логику внутри процессора, который при считывании его машиной заставляет машину создавать логику для выполнения описанных здесь технологий. Такие представления, известные как "IP-ядра" могут храниться на материальном, машиночитаемом носителе информации ("ленте") и поставляются различным клиентам или на производственные установки для загрузки в производственные машины, которые фактически создают эту логику или процессор. Например, IP ядра, такие как семейство процессоров Cortex™, разработанных в ARM Holdings, Ltd., и IP-ядра Loongson, разработанные Институтом вычислительной техники (ICT) Китайской Академии Наук, могут быть лицензированы или проданы различным заказчикам или лицензиатам, таким как Texas Instruments®, Qualcomm®, Apple® или Samsung®, и реализованы в процессорах, производимых этими заказчиками или лицензиатами.

На Фиг. 11 показана структурная схема, иллюстрирующая разработку IP-ядер, соответствующих одному варианту воплощения изобретения. Запоминающее устройство (1130) включает в себя программное обеспечение (1120) имитационного моделирования и/или модель (1110) аппаратного или программного обеспечения. В одном варианте воплощения изобретения данные, представляющие конструкцию IP-ядра, могут быть предоставлены запоминающему устройству (1130) через память (1140) (например, жесткий диск), проводное соединение (например, сеть "Интернет") (1150) или беспроводное соединение (1160). Информация IP-ядра, сгенерированная посредством этого инструмента имитационного моделирования и модели, может затем быть передана на производственную установку, где оно может быть изготовлено третьим лицом таким образом, чтобы выполнять, по меньшей мере, одну команду в соответствии с, по меньшей мере, одним вариантом воплощения изобретения.

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

На Фиг. 12 проиллюстрировано то, как в соответствии с одним вариантом воплощения изобретения команда некоторого первого типа эмулируется процессором другого типа. На Фиг. 12 программа (1205) содержит некоторые команды, которые могут выполнять ту же самую или, по существу, ту же самую функцию, что и команда, соответствующая одному варианту воплощения изобретения. Однако команды программы (1205) могут относиться к типу и/или формату, который является отличающимся или несовместимым с процессором (1215), что означает, что команды этого типа в программе (1205) не могут быть исполнены процессором (1215) как собственные. Однако с помощью логики (1210) эмуляции команды программы (1205) преобразуются в команды, которые способны быть исполнены процессором (1215) как собственные. В одном варианте воплощения изобретения логика эмуляции воплощена в аппаратном обеспечении. В другом варианте воплощения изобретения логика эмуляции воплощена в материальном, машиночитаемом носителе информации, содержащем программное обеспечение для того, чтобы преобразовывать команды этого типа в программе (1205) к типу, способному исполняться процессором (1215) как собственный. В других вариантах воплощения изобретения логика эмуляции представляет собой сочетание неперепрограммируемого или программируемого программного обеспечения и программы, хранящейся на материальном, машиночитаемом носителе информации. В одном варианте воплощения изобретения процессор содержит логику эмуляции, тогда как в других вариантах воплощения изобретения логика эмуляции существует вне процессора и предоставляется некоторой третьей стороной. В одном варианте воплощения изобретения процессор способен загружать логику эмуляции, воплощенную в материальном, машиночитаемый носителе информации, содержащем программное обеспечение, исполняя микрокод или микропрограммы, содержащиеся в процессоре или связанные с ним.

Фиг. 13 представляет собой структурную схему, на которой сравнивается использование конвертора команд, реализованного программными средствами, для того, чтобы конвертировать двоичные команды в некотором исходном наборе команд в двоичные команды в некотором заданном наборе команд в соответствии с вариантами воплощения изобретения. В проиллюстрированном варианте воплощения изобретения конвертор команд представляет собой реализованный программными средствами конвертор команд, хотя в качестве альтернативы конвертор команд может быть реализован в виде программного обеспечения, микропрограммного обеспечения, аппаратного обеспечения или разнообразных их сочетаний. На Фиг. 13 показано, что программа на языке (1302) высокого уровня может быть скомпилирована с использованием компилятора (1304) набора команд х86 для того, чтобы сгенерировать двоичный код (1306) х86, который может быть исполнен как собственный, процессором (1316) с, по меньшей мере, одним ядром с набором команд х86. Этот процессор (1316) с, по меньшей мере, одним ядром с набором команд х86 представляет любой процессор, который может выполнять, по существу, те же самые функции, что и процессор Intel с, по меньшей мере, одним ядром с набором команд х86, совместимым образом исполняя или иным образом обрабатывая (1) существенную часть набора команд ядра набора команд Intel х86 или (2) версии объектного кода приложений или другого программного обеспечения, предназначенных для исполнения на процессоре Intel с, по меньшей мере, одним ядром с набором команд х86, для того, чтобы достигнуть, по существу, того же самого результата, что и процессор Intel с, по меньшей мере, одним ядром с набором команд х86. Компилятор (1304) набора команд х86 представляет компилятор, который способен функционировать таким образом, чтобы генерировать двоичный код (1306) набора команд х86 (например, объектный код), который при дополнительной обработке по редактированию связей или без этой обработки может быть исполнен на этом процессоре (1316) с, по меньшей мере, одним ядром с набором команд х86. Аналогичным образом на Фиг. 13 показано, что программа на языке (1302) высокого уровня может быть скомпилирована с использованием компилятора (1308) альтернативного набора команд для того, чтобы сгенерировать двоичный код (1310) альтернативного набора команд, который может быть исполнен как собственный, процессором (1314) без хотя бы одного ядра с набором команд х86 (например, процессором с ядрами, которые исполняют набор команд MIPS от MIPS Technologies, г. Саннивейл, штат Калифорния (США) и/или которые исполняют набор команд ARM от ARM Holdings, г. Саннивейл, штат Калифорния, (США)). Конвертор (1312) команд используется для того, чтобы конвертировать двоичный код (1306) набора команд х86 в код, который может быть исполнен как собственный, процессором (1314) без ядра с набором команд х86. Этот конвертированный код вряд ли будет таким же, как двоичный код (1310) альтернативного набора команд, потому что способный на это конвертор команд создать трудно; однако конвертированный код будет выполнять эту общую операцию и будет составлен из команд из этого альтернативного набора команд. Таким образом, конвертор (1312) команд представляет программное обеспечение, микропрограммное обеспечение, аппаратное обеспечение или их сочетание, которое посредством эмуляции, имитационного моделирования или любого другого процесса позволяет процессору или другому электронному устройству, которое не имеет процессора или ядра с набором команд х86, исполнять двоичный код (1306) набора команд х86.

На Фиг. 14 проиллюстрирована схема для одного варианта воплощения аппарата (1401) для исполнения команды для обеспечения функциональных возможностей цикла защищенного хеширования с шифром. Варианты воплощения аппарата (1401) могут представлять собой часть конвейера (400) (например, стадии (416) исполнения) или часть ядра (490) (например, исполняющий блок (исполняющие блоки) (462)) для исполнения команды для обеспечения функциональных возможностей цикла защищенного хеширования с шифром. Варианты воплощения аппарата (1401) могут быть сопряжены со стадией декодирования (например, декодирование (406)), или декодером (например, декодирующим блоком (440)) для декодирования команды для цикла или циклов алгоритма защищенного хеширования с шифром, имеющих некоторое количество итераций, меньшее, чем общее количество циклических итераций алгоритма хеширования (например, одну, две или четыре итерации, что может позволить одновременное исполнение других команд в суперскалярном конвейере исполнения), каковая команда указывает данные источника и один или более операндов-ключей (1430). Один или более исполняющих блоков (например, исполняющий аппарат (1401)) в ответ на декодированную первую команду выполняет в блоке (1421) обработки первоначальную перестановку (1415) над данными (1410) источника для того, чтобы генерировать подвергшиеся перестановке данные (1420) источника. Подвергшиеся перестановке данные (1420) источника содержат левую часть (1420 L) и правую часть (1420 R). Один или более исполняющих блоков выполняют над подвергшимися перестановке данными (1420) источника одну или более циклических итераций алгоритма защищенного хеширования с шифром, используя один или более операндов - ключей (1430), причем эти одна или более циклических итераций составляют меньше, чем общее количество циклических итераций алгоритма хеширования, например в одном варианте воплощения изобретения - меньше чем 16. Правый участок (1420 R) может быть обработан необязательным блоком F (1440) функций, который в некоторых вариантах воплощения изобретения представляет собой функцию цикла шифра Файстела (Feistel), такую как та, что используется в DES (Стандарте шифрования данных) и/или Тройном DES (TDES). Альтернативные варианты воплощения изобретения могут использовать другой алгоритм шифра, например, такой как Blowfish, SAFER K-64, CAST5, FEAL и так далее. Один вариант воплощения блока F (1440) функций содержит блок Е (1441) функций для выбора разрядов из правой (например, 32-разрядной) части (1420 R) для того, чтобы выдать расширенную (например, 48-разрядную) часть, которая объединяется с частью (например, 48-разрядной) ключа (1430) посредством логики (1443) исключающего ИЛИ. Блок F (1440) функций, кроме того, содержит функции (1445) выбора: с S[1] по S [8], для того, чтобы в одном варианте воплощения изобретения каждая из них брала входную часть (например, 6 разрядов) от логики (1443) исключающего ИЛИ и выводила часть (например, 4 разряда) в блок Р (1447) функции перестановки, который генерирует выходные данные (например, 32 разряда) блока F (1440) функций. Эти выходные данные блока F (1440) функций объединяются с левой частью (например, 32-разрядной) (1420 L) посредством логики (1449) исключающего ИЛИ для того, чтобы сгенерировать новую правую часть (например, 32-разрядную) (1450 R). Для одного варианта воплощения изобретения новая левая часть (например, 32-разрядная) (1450 L) создается простым копированием предыдущий правой части (например, 32-разрядной) (1420 R). В одном варианте воплощения изобретения новая левая часть (1450 L) и новая правая часть (1450 R) составляют предварительные выходные данные (1450). Следует понимать, что в случае, когда аппарат (1401) выполняет больше чем одну циклических итераций алгоритма защищенного хеширования с шифром, новая левая часть (1450 L) и новая правая часть (1450 R) могут передаваться в обход, посредством обходной ветви, соответственно, (1452 L) и (1452 R), формируя левую часть (1420 L) и правую часть (1420 R) следующей последовательной циклической итерации алгоритма защищенного хеширования с шифром. Когда последний из указанных одной или более циклических итераций алгоритма защищенного хеширования с шифром выполнен, над зашифрованными предварительными выходными данными (1450) выполняют в блоке (1461) обработки перестановку (1455), обратную первоначальной, генерируя результат первой команды как зашифрованные выходные данные (1460), которые сохраняются в регистре - адресате. В некоторых вариантах воплощения аппарата (1401) зашифрованные выходные данные (1460) могут сохраняться в 64-разрядном регистре - адресате общего назначения. В некоторых альтернативных вариантах воплощения аппарата (1401) зашифрованные выходные данные (1460) могут сохраняться в 64-разрядной части 64-разрядного, 128-разрядного, 256-разрядного или 512-разрядного векторного регистра-адресата для SIMD-архитектуры. Например, варианты воплощения аппарата (1401) могут быть сопряжены с векторными регистрами (например, блоком (блоками) (458) физических регистровых файлов), содержащими некоторое переменное множество из m полей данных переменного размера для хранения значений некоторого переменного множества из m элементов данных переменного размера.

На Фиг. 15 проиллюстрирована схема для альтернативного варианта воплощения аппарата (1501) для исполнения команды для обеспечения функциональных возможностей цикла защищенного хеширования с шифром. Варианты воплощения аппарата (1501) могут также представлять собой часть конвейера (400) (например, стадии (416) исполнения) или часть ядра (490) (например, исполняющий блок (исполняющие блоки) (462)) для исполнения команды для обеспечения функциональных возможностей цикла защищенного хеширования с шифром. Варианты воплощения аппарата (1501) могут быть сопряжены со стадией декодирования (например, декодирование (406)), или декодером (например, декодирующим блоком (440)) для декодирования команды для цикла или циклов алгоритма защищенного хеширования с шифром, имеющих некоторое количество итераций, меньшее чем общее количество циклических итераций алгоритма хеширования, (например, одну, две или четыре итерации, что может позволить одновременное исполнение других команд в суперскалярном конвейере исполнения), каковая команда указывает данные источника и один или более операндов-ключей (1430). Один или более исполняющих блоков (например, исполняющий аппарат (1501)) в ответ на декодированную первую команду выполняет в блоке (1521) обработки первоначальную перестановку (1515) над данными (1510) источника для того, чтобы генерировать подвергшиеся перестановке данные (1520) источника. Подвергшиеся перестановке данные (1520) источника содержат левую часть (1520 L) и правую часть (1520 R). Один или более исполняющих блоков выполняют над подвергшимися перестановке данными (1520) источника одну или более циклических итераций алгоритма защищенного хеширования с шифром, используя один или более операндов-ключей (1530), причем эти одна или более циклических итераций составляют меньше, чем общее количество циклических итераций алгоритма хеширования, например, в одном варианте воплощения изобретения - меньше чем 16. Правый участок (1520 R) может быть обработан необязательным блоком F (1540) функций, который в некоторых вариантах воплощения изобретения представляет собой функцию цикла шифра Файстела (Feistel), такую как та, что используется в DES (Стандарте шифрования данных) и/или TDES (Стандарте тройного шифрования данных). Один вариант воплощения блока F (1540) функций содержит блок Е (1541) функций для выбора разрядов из правой (например, 32-разрядной) части (1520 R) для того, чтобы выдать расширенную (например, 48-разрядную) часть, которая объединяется с частью (например, 48-разрядной) ключа (1530) посредством логики (1543) исключающего ИЛИ. Блок F (1540) функций, кроме того, содержит функции (1545) выбора: с S[1] по S [8], для того, чтобы в одном варианте воплощения изобретения каждая из них брала входную часть (например, 6 разрядов) от логики (1543) исключающего ИЛИ и выводила часть (например, 4 разряда) в блок Р (1547) функции перестановки, который генерирует выходные данные (например, 32 разряда) блока F (1540) функций. Эти выходные данные блока F (1540) функций объединяются с левой частью (например, 32-разрядной) (1520 L) посредством логики (1549) исключающего ИЛИ для того, чтобы сгенерировать правые входные данные для левого мультиплексора (1553 L) и для правого мультиплексора (1553 R). Левые входные данные для левого мультиплексора (1553 L) и для правого мультиплексора (1553 R) генерируются посредством простого копирования предыдущей правой части (например, 32-разрядной) (1520 R). Когда выполнена последняя итерация цикла (например, 16 в одном варианте воплощения изобретения) алгоритма защищенного хеширования с шифром, может быть установлен ("1") сигнал "Последняя" (1551), так, чтобы были выбраны правые входные данные для левого мультиплексора (1553 L) и левые входные данные для правого мультиплексора (1553 R) для того, чтобы сгенерировать соответственно новую левую часть (например, 32-разрядную) (1550 L) и новую правую часть (например, 32-разрядную) (1550 R). В ином случае, когда сигнал "Последняя" (1551) не установлен ("0"), выбираются левые входные данные для левого мультиплексора (1553 L) и правые входные данные для правого мультиплексора (1553 R) для того, чтобы сгенерировать соответственно новую левую часть (например, 32-разрядную) (1550 L) и новую правую часть (например, 32-разрядную) (1550 R). В одном варианте воплощения изобретения новая левая часть (1550 L) и новая правая часть (1550 R) составляют предварительные выходные данные (1550). Следует понимать, что в случае, когда аппарат (1501) выполняет больше, чем одну циклических итераций алгоритма защищенного хеширования с шифром, новая левая часть (1550 L) и новая правая часть (1550 R) могут передаваться в обход, посредством обходной ветви, соответственно, (1552 L) и (1552 R), формируя левую часть (1520 L) и правую часть (1520 R) следующей последовательной циклической итерации алгоритма защищенного хеширования с шифром.

Когда последний из указанных одной или более циклических итераций алгоритма защищенного хеширования с шифром выполнен, над зашифрованными предварительными выходными данными (1550) выполняют в блоке (1561) обработки перестановку (1555), обратную первоначальной, для того, чтобы сгенерировать результат первой команды как зашифрованные выходные данные (1560), которые сохраняются в регистре-адресате. В некоторых вариантах воплощения аппарата (1501) зашифрованные выходные данные (1560) могут сохраняться в 64-разрядном регистре-адресате общего назначения. В некоторых альтернативных вариантах воплощения аппарата (1501) зашифрованные выходные данные (1560) могут сохраняться в 64-разрядной части 64-разрядного, 128-разрядного, 256-разрядного или 512-разрядного векторного регистра - адресата для SIMD-архитектуры.

Следует понимать, что обеспечение исполнения команд для циклических итераций защищенного хеширования с шифром, которые выполняют только указанное количество циклических итераций хеширования, может сделать возможным исполнение алгоритма хеширования в процессорном конвейере одновременно с другой обработкой данных, такой как предварительная обработка ключей и выбор одного или более операндов-ключей из частного набора предварительно заданных ключей для воспрепятствования атаке и так далее. То есть в случае, при котором единственная итерация цикла хеширования может иметь конвейерную задержку, составляющую три такта (например, 3 такта на один цикл), при передаче результатов в обход в обратном направлении через конвейер две итерации могут иметь задержку, составляющую только четыре такта (например, 2 такта на один цикл), четыре итерации могут иметь задержку, составляющую только шесть тактов (например, 1,5 такта на один цикл), а пять итераций могут иметь задержку, составляющую только семь тактов (например, 1,4 такта на один цикл). Во время этих конвейерных задержек, составляющих четыре, шесть или семь тактов, параллельно или одновременно с защищенным хешированием с шифром может выполняться другая полезная обработка данных. Таким образом, предоставление команды для циклов алгоритма защищенного хеширования с шифром, которая имеет некоторое количество итераций (например, две, четыре или пять итераций), но меньшее чем общее количество циклических итераций алгоритма шифра, позволяет одновременно исполнять другие команды в суперскалярном конвейере исполнения и/или процессорном конвейере с переупорядочением последовательности команд, таким образом, значительно повышая пропускную способность обработки данных и усиливая деление частот для усовершенствований процесса изготовления, связанных с процессорами общего применения.

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

В блоке (1610) обработки, входящем в состав процесса (1601), декодируется команда для защищенного хеширования с шифром, при этом в некоторых вариантах воплощения этой команды могут указываться, по меньшей мере, данные источника и один или более операндов - ключей. В блоке (1620) обработки над данными источника выполняется первоначальная перестановка для того, чтобы сгенерировать подвергшиеся перестановке данные источника. В блоке (1630) обработки в ответ на эту команду над подвергшимися перестановке данными источника выполняют итерацию цикла алгоритма защищенного хеширования с шифром, используя эти один или более операндов-ключей. В некоторых вариантах воплощения защищенного хеширования с шифром в ответ на одну и ту же команду выполняются более чем только одна циклической итерации, но обычно для защищенного хеширования с шифром может требоваться меньше, чем полное количество циклических итераций (например, меньше чем 16). В блоке (1640) обработки определяется то, закончилось ли указанное количество циклических итераций для этой команды. Если нет, то обработка данных повторяется еще, начинаясь в блоке (1630) обработки. В ином случае в блоке (1650) обработки над зашифрованными данными выполняется перестановка, обратная первоначальной. После этого в блоке (1660) обработки результат исполнения команды сохраняется в адресате в соответствии с форматом, указанным командой, например, формат, указанный командой, может быть для последней циклической итерации или промежуточной циклической итерации, и адресат может быть указан командой как регистровый операнд-адресат или как операнд-адресат, хранимый в памяти. В одном варианте воплощения команды указывается итерация цикла алгоритма защищенного хеширования с шифром, использующая алгоритм шифра Файстела (Feistel), такой как DES (Стандарт шифрования данных) или TDES (Стандарт тройного шифрования данных). В альтернативных вариантах воплощения изобретения могут использоваться другие алгоритмы шифра, например, такие как Blowfish, SAFER K-64, CAST5, FEA и так далее.

Следует понимать, что команды для использования алгоритма защищенного хеширования с шифром могут быть использованы для обеспечения функциональных возможностей цикла защищенного хеширования с шифром в приложениях, например, таких как те, что обеспечивают балансировочное распределение нагрузки и/или защиту от атак, имеющих целью отказ в обслуживании, и так далее, не требуя при этом чрезмерной сложности вычислений или неприемлемых времен задержки, но тем не менее предусматривая хорошо выбранные настройки для воспрепятствования атакам и вдобавок к этому не уменьшая требуемое качество обслуживания в этом процессе. В некоторых вариантах воплощения изобретения может указываться (например, в непосредственном операнде) диапазон номеров цикла для выполнения алгоритма защищенного хеширования с шифром. Например, в одном варианте воплощения шестнадцатеричный диапазон 0×0F в непосредственном байтовом операнде может указывать на то, что команда должна выполнить все шестнадцать (16) итераций алгоритма хеширования с шифром, тогда как шестнадцатеричный диапазон 0×FF в непосредственном байтовом операнде может указывать на то, что команда должна выполнить только одну итерацию цикла шестнадцать (16), или шестнадцатеричный диапазон 0×F8 в непосредственном байтовом операнде может указывать на то, что команда должна выполнить итерации: с цикла шестнадцать (16) по цикл девять (9), в режиме дешифрования алгоритма хеширования с шифром. Следует понимать, что одно неожиданное преимущество от использования шифра в качестве алгоритма хеширования, в противоположность однонаправленным алгоритмам хеширования, заключается в том, что он является обратимым, что может помочь с конструированием ключей для балансировки нагрузки, которые обеспечивают требуемые характеристики (например, стойкое и/или согласующееся хеширование), позволяя при этом введение новых ключей для воспрепятствования атаке (например, такой как атака с целью отказа в обслуживании). Другое неожиданное преимущество от выполнения в качестве алгоритма хеширования только указанного количества итераций шифра заключается в том, что для каждого цикла или диапазона циклических итераций могут быть использованы различные наборы ключей, что обеспечивает результаты шифрования, которые не возможны при использовании стандартной схемы с подключом.

На Фиг. 17 проиллюстрирована блок-схема алгоритма для другого варианта воплощения процесса (1701) для обеспечения функциональных возможностей цикла защищенного хеширования с шифром. В блоке (1710) обработки, входящем в состав процесса (1701), декодируется команда для защищенного хеширования с шифром, при этом в некоторых вариантах воплощения этой команды могут указываться, по меньшей мере, данные источника и один или более операндов-ключей. В блоке (1720) обработки над данными источника выполняется первоначальная перестановка для того, чтобы сгенерировать подвергшиеся перестановке данные источника. В блоке (1730) обработки в ответ на эту команду над подвергшимися перестановке данными источника выполняют итерацию цикла алгоритма защищенного хеширования с шифром в соответствии с номером цикла, указанным командой, используя эти один или более операндов-ключей. В некоторых вариантах воплощения изобретения конкретный ключ или ключи, используемые в циклической итерации или во множественных итерациях, может зависеть от номера или номеров циклов, указанных командой. В некоторых вариантах воплощения защищенного хеширования с шифром в ответ на одну и ту же команду выполняются более чем только одна циклической итерации, но обычно для защищенного хеширования с шифром может требоваться меньше, чем полное количество циклических итераций (например, меньше чем 16). В блоке (1740) обработки определяется то, закончилось ли указанное количество циклических итераций для этой команды. Если нет, то обработка данных повторяется еще, начинаясь в блоке (1730) обработки. В ином случае в блоке (1750) обработки над зашифрованными данными выполняется перестановка, обратная первоначальной. После этого в блоке (1760) обработки результат исполнения команды сохраняется в адресате в соответствии с форматом, указанным командой, например, формат, указанный командой, может быть для последней циклической итерации или промежуточной циклической итерации, и адресат может быть указан командой как регистровый операнд-адресат или как операнд-адресат, хранимый в памяти.

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

Программный код может быть применен к вводу команд для выполнения описанных здесь функций и для генерирования выходной информации. Выходная информация может быть применена известным образом к одному или более устройствам вывода. Для целей этой заявки система обработки данных включает в себя любую систему, которая имеет процессор, такой как, например, процессор цифровой обработки сигналов (DSP-процессор), микроконтроллер, прикладная специализированная интегральная схема (ASIC) или микропроцессор.

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

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

Такие машиночитаемые носители информации могут включать в себя, но не в качестве ограничения, некратковременные материальные конфигурации изделий, изготовленных или образованных машиной или устройством, включающие в себя такие носители информации, как жесткие диски, любой другой тип диска, включающий в себя гибкие диски, оптические диски, постоянные запоминающие устройства на компакт-дисках (устройства CD-ROM), перезаписываемые компакт-диски (диски CD-RW) и магнитооптические диски, полупроводниковые устройства, такие как постоянные запоминающие устройства (ROM-устройства), оперативные запоминающие устройства (RAM-устройства), такие как динамические оперативные запоминающие устройства (DRAM-устройства), статические оперативные запоминающие устройства (SRAM-устройства), стираемые программируемые постоянные запоминающие устройства (EPROM-устройства), устройства флэш-памяти, электрически стираемые программируемые постоянные запоминающие устройства (EEPROM-устройства), магнитные или оптические карты, или любой другой тип носителей информации, подходящий для хранения электронных команд.

Соответственно варианты воплощения изобретения также включают в себя некратковременные материальные машиночитаемые носители информации, содержащие команды или содержащие данные проектирования, такие как данные на Языке описания аппаратного обеспечения (языке HDL), которые определяют описанные здесь структуры, схемы, аппараты, процессоры и/или признаки системы. Такие варианты воплощения изобретения могут также упоминаться как программные продукты.

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

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

Похожие патенты RU2637463C2

название год авторы номер документа
ПРОЦЕССОРЫ, СПОСОБЫ И СИСТЕМЫ ДЛЯ ОСУЩЕСТВЛЕНИЯ ДОСТУПА К НАБОРУ РЕГИСТРОВ ЛИБО КАК К МНОЖЕСТВУ МАЛЫХ РЕГИСТРОВ, ЛИБО КАК К ОБЪЕДИНЕННОМУ БОЛЬШОМУ РЕГИСТРУ 2014
  • Толл Брет Л.
  • Сингал Ронак
  • Гай Бафорд М.
  • Неик Мишали
RU2639695C2
ЦЕЛОЧИСЛЕННОЕ УМНОЖЕНИЕ ВЫСОКОГО ПОРЯДКА С ОКРУГЛЕНИЕМ И СДВИГОМ В АРХИТЕКТУРЕ С ОДНИМ ПОТОКОМ КОМАНД И МНОЖЕСТВОМ ПОТОКОВ ДАННЫХ 2003
  • Эйбел Джеймс К.
  • Уолтерз Дерин К.
  • Тайлер Джонатан Дж.
RU2263947C2
ПРОЦЕССОРЫ, СПОСОБЫ, СИСТЕМЫ И КОМАНДЫ С ПРЕДИКАЦИЕЙ ЭЛЕМЕНТОВ УПАКОВАННЫХ ДАННЫХ 2014
  • Гай Бафорд М.
  • Сингал Ронак
  • Неик Мишали
  • Толл Брет Л.
RU2612597C1
СПОСОБ, УСТРОЙСТВО И КОМАНДА ДЛЯ ВЫПОЛНЕНИЯ ЗНАКОВОЙ ОПЕРАЦИИ УМНОЖЕНИЯ 2003
  • Мейси Вилльям В. Мл.
  • Нгуйен Хьюи В.
RU2275677C2
КОМАНДЫ, ПРОЦЕССОРЫ, СПОСОБЫ И СИСТЕМЫ ДОСТУПА МНОЖЕСТВЕННЫХ РЕГИСТРОВ К ПАМЯТИ 2014
  • Хинтон Глен
  • Толл Брет
  • Сингал Ронак
RU2636675C2
СПОСОБ И УСТРОЙСТВО ТАСОВАНИЯ ДАННЫХ 2004
  • Мэйси Уилльям Мл.
  • Дибис Эрик
  • Руссель Патрис
  • Нгуйен Хой
RU2316808C2
УСТРОЙСТВО И СПОСОБ РЕВЕРСИРОВАНИЯ И ПЕРЕСТАНОВКИ БИТОВ В РЕГИСТРЕ МАСКИ 2014
  • Улд-Ахмед-Валл Эльмустафа
  • Вэлентайн Роберт
RU2636669C2
СПОСОБ И УСТРОЙСТВО ДЛЯ ПАРАЛЛЕЛЬНОГО ОБЪЕДИНЕНИЯ ДАННЫХ СО СДВИГОМ ВПРАВО 2002
  • Себот Джульен
  • Мейси Вильям, Мл.
  • Дебес Эрик
  • Нгуйен Хьюи
RU2273044C2
ИНСТРУКЦИЯ И ЛОГИКА ДЛЯ ИДЕНТИФИКАЦИИ ИНСТРУКЦИЙ ДЛЯ УДАЛЕНИЯ В МНОГОПОТОЧНОМ ПРОЦЕССОРЕ С ИЗМЕНЕНИЕМ ПОСЛЕДОВАТЕЛЬНОСТИ 2013
  • Козарев Николай
  • Шишлов Сергей И.
  • Иер Джайеш
  • Бутузов Александр
  • Бабаян Борис А.
  • Клучников Андрей
RU2644528C2
МОДУЛЬ СОПРОЦЕССОРА КЭША 2011
  • Джха Ашиш
RU2586589C2

Иллюстрации к изобретению RU 2 637 463 C2

Реферат патента 2017 года КОМАНДА И ЛОГИКА ДЛЯ ОБЕСПЕЧЕНИЯ ФУНКЦИОНАЛЬНЫХ ВОЗМОЖНОСТЕЙ ЦИКЛА ЗАЩИЩЕННОГО ХЕШИРОВАНИЯ С ШИФРОМ

Изобретение относится к командам и логике для обеспечения функциональных возможностей цикла защищенного хеширования с шифром. Технический результат – обеспечение функциональных возможностей цикла защищенного хеширования с шифром. Процессор для обеспечения функциональных возможностей цикла защищенного хеширования с шифром содержит каскад декодирования для декодирования первой команды для выполнения алгоритма защищенного хеширования с шифром с использованием алгоритма стандарта тройного шифрования данных (TDES), причем первая команда указывает данные источника и один или более операндов-ключей, и один или более аппаратных исполняющих блоков, выполненных с возможностью в ответ на декодированную первую команду выполнения над данными источника первоначальной перестановки для генерирования подвергшихся перестановке данных источника, выполнения над подвергшимися перестановке данными источника одной или более циклических итераций алгоритма защищенного хеширования с шифром с использованием указанного одного или более операндов-ключей для генерирования зашифрованных данных, причем указанная одна или более циклических итераций составляют меньше 16, как указано первой командой, выполнения над зашифрованными данными перестановки, обратной первоначальной, и сохранения результата исполнения первой команды в регистре-адресате, причем первая команда указывает регистр-адресат с операндом регистра-адресата с одной командой и множеством данных (SIMD). 4 н. и 23 з.п. ф-лы, 27 ил.

Формула изобретения RU 2 637 463 C2

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

каскад декодирования для декодирования первой команды для выполнения алгоритма защищенного хеширования с шифром с использованием алгоритма стандарта тройного шифрования данных (TDES), причем первая команда указывает данные источника и один или более операндов-ключей; и

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

выполнения над данными источника первоначальной перестановки для генерирования подвергшихся перестановке данных источника;

выполнения над подвергшимися перестановке данными источника одной или более циклических итераций алгоритма защищенного хеширования с шифром с использованием указанного одного или более операндов-ключей для генерирования зашифрованных данных, причем указанная одна или более циклических итераций составляют меньше 16, как указано первой командой;

выполнения над зашифрованными данными перестановки, обратной первоначальной; и

сохранения результата исполнения первой команды в регистре-адресате, причем первая команда указывает регистр-адресат с операндом регистра-адресата с одной командой и множеством данных (SIMD).

2. Процессор по п. 1, в котором первая команда предназначена для выполнения единственной циклической итерации алгоритма защищенного хеширования с шифром с использованием алгоритма шифра Фейстеля.

3. Процессор по п. 1, в котором указанный один или более операндов-ключей указывают один или более 48-разрядных ключей.

4. Процессор по п. 1, в котором указанный один или более операндов-ключей указывают один или более 56-разрядных ключей.

5. Процессор по п. 1, в котором указанный один или более операндов-ключей указывают два TDES-ключа режима 2.

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

7. Процессор по п. 1, в котором указанная одна или более циклических итераций использует один или более заданных ключей для воспрепятствования атаке.

8. Процессор по п. 1, в котором первая команда указывает регистр-адресат с 64-разрядным операндом-адресатом.

9. Процессор по п. 1, в котором первая команда указывает регистр-адресат в виде пары 32-разрядных регистров-адресатов.

10. Процессор по п. 1, в котором операнд регистра-адресата SIMD указывает регистр-источник и регистр-адресат.

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

декодируют первую команду для выполнения защищенного хеширования с шифром с использованием алгоритма стандарта тройного шифрования данных (TDES), причем первая команда указывает данные источника и один или более операндов-ключей;

выполняют над данными источника первоначальную перестановку для генерирования подвергшихся перестановке данных источника;

выполняют в ответ на первую команду над подвергшимися перестановке данными источника одну или более циклических итераций алгоритма защищенного хеширования с шифром с использованием указанного одного или более операндов-ключей для генерирования зашифрованных данных, причем указанная одна или более циклических итераций составляют меньше 16, как указано первой командой;

выполняют в ответ на первую команду над указанными зашифрованными данными перестановку, обратную первоначальной;

сохраняют результат исполнения первой команды в регистре-адресате в соответствии с форматом, указанным командой, причем первая команда указывает регистр-адресат с операндом регистра-адресата с одной командой и множеством данных (SIMD).

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

13. Способ по п. 11, дополнительно содержащий этап, на котором:

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

14. Способ по п. 13, дополнительно содержащий этап, на котором:

осуществляют случайный выбор из набора заданных ключей для воспрепятствования атаке.

15. Способ по п. 13, дополнительно содержащий этап, на котором:

осуществляют выбор из собственного набора заданных ключей для воспрепятствования атаке.

16. Способ по п. 11, в котором первая команда указывает регистр-адресат с 64-разрядным операндом-адресатом.

17. Способ по п. 11, в котором первая команда указывает регистр-адресат в виде пары 32-разрядных регистров-адресатов.

18. Способ по п. 11, в котором упомянутый регистр-адресат по технологии SIMD указывает регистр-источник и регистр-адресат.

19. Способ по п. 11, дополнительно содержащий этапы, на которых:

выполняют над результатом исполнения первой команды, сохраненным в регистре-адресате, первоначальную перестановку для генерирования подвергшегося перестановке результата исполнения первой команды;

выполняют в ответ на вторую команду над подвергшимся перестановке результатом исполнения первой команды вторую одну или более циклических итераций алгоритма TDES, выполняемого в режиме дешифрования с использованием второго одного или более операндов-ключей, для генерирования дешифрованных зашифрованных данных, при этом вторая одна или более циклических итераций составляют меньше 16, как указано второй командой; и

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

20. Способ по п. 11, дополнительно содержащий этапы, на которых:

выполняют над результатом исполнения первой команды, сохраненным в регистре-адресате, первоначальную перестановку;

выполняют в ответ на вторую команду над результатом исполнения первой команды, сохраненным в регистре-адресате, вторую одну или более циклических итераций алгоритма TDES, выполняемого в режиме шифрования с использованием второго одного или более операндов-ключей, для генерирования шифрованных зашифрованных данных, при этом вторая одна или более циклических итераций составляют меньше 16, как указано второй командой; и

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

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

декодируют первую команду для выполнения защищенного хеширования с шифром с использованием алгоритма стандарта тройного шифрования данных (TDES), причем первая команда указывает данные источника и один или более операндов-ключей;

выполняют в ответ на первую команду над данными источника первоначальную перестановку для генерирования подвергшихся перестановке данных источника;

выполняют в ответ на первую команду над подвергшимися перестановке данными источника одну или более циклических итераций алгоритма защищенного хеширования с шифром с использованием указанного одного или более операндов-ключей в соответствии с номером цикла, указанным первой командой, причем указанная одна или более циклических итераций составляют меньше 16, для генерирования зашифрованных данных;

выполняют над указанными зашифрованными данными перестановку, обратную первоначальной; и

сохраняют один или более результатов исполнения первой команды в регистре-адресате в соответствии с расписанием форматов, указанным первой командой, причем первая команда указывает регистр-адресат с операндом регистра-адресата с одной командой и множеством данных (SIMD).

22. Способ по п. 21, дополнительно содержащий этапы, на которых:

выполняют над последним результатом исполнения первой команды, сохраненным в регистре-адресате, первоначальную перестановку для генерирования подвергшегося перестановке последнего результата исполнения первой команды;

выполняют в ответ на вторую команду над подвергшимся перестановке последним результатом исполнения первой команды вторую одну или более циклических итераций алгоритма TDES, выполняемого в режиме дешифрования, с использованием второй одной или более операндов-ключей для генерирования дешифрованных зашифрованных данных, при этом вторая одна или более циклических итераций составляют меньше 16, как указано второй командой; и

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

23. Способ по п. 22, дополнительно содержащий этап, на котором:

осуществляют выбор указанного второго одного или более операндов-ключей из собственного набора заданных ключей для воспрепятствования атаке.

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

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

процессор, содержащий:

каскад декодирования для декодирования первой команды для выполнения алгоритма защищенного хеширования с шифром с использованием алгоритма стандарта тройного шифрования данных (TDES), причем первая команда указывает данные источника и один или более операндов-ключей из заданного набора ключей; и

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

выполнения над данными источника первоначальной перестановки для генерирования подвергшихся перестановке данных источника;

выполнения над подвергшимися перестановке данными источника одной или более циклических итераций алгоритма защищенного хеширования с шифром с использованием указанного одного или более операндов-ключей для генерирования зашифрованных данных, причем указанная одна или более циклических итераций составляют меньше 16, как указано первой командой; и

выполнения над указанными зашифрованными данными перестановку, обратную первоначальной; и

сохранения результата исполнения первой команды в регистре-адресате, подлежащем использованию при генерировании назначения ресурса на основании запроса из запросов балансировки нагрузки по указанному набору ресурсов обработки данных, причем первая команда указывает регистр-адресат с операндом регистра-адресата с одной командой и множеством данных (SIMD).

25. Система по п. 24, в которой первая команда предназначена для выполнения единственной циклической итерации алгоритма защищенного хеширования с шифром с использованием алгоритма шифра Фейстеля (Feistel).

26. Система по п. 24, в которой первая команда указывает регистр-адресат с 64-разрядным операндом-адресатом.

27. Система по п. 24, в которой первая команда неявным образом указывает регистр-адресат в виде пары 32-разрядных регистров-адресатов.

Документы, цитированные в отчете о поиске Патент 2017 года RU2637463C2

Приспособление для суммирования отрезков прямых линий 1923
  • Иванцов Г.П.
SU2010A1
Топчак-трактор для канатной вспашки 1923
  • Берман С.Л.
SU2002A1
US 7254231 B1, 07.08.2007
US 7545928 B1, 09.06.2009
Многоступенчатая активно-реактивная турбина 1924
  • Ф. Лезель
SU2013A1
US 8194858 B2, 05.06.2012
RU 2006101820 A, 10.08.2007.

RU 2 637 463 C2

Авторы

Гопал Виндох

Фегхали Важди К.

Даты

2017-12-04Публикация

2014-08-08Подача