Обработка команд генерации дайджестов сообщений

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

 

Настоящее изобретение относится к архитектуре вычислительной системы и, в частности, к обработке новых команд, которые расширяют z-архитектуру фирмы IBM и могут эмулироваться другими архитектурами.

До появления настоящего изобретения, начиная с 60-х годов прошлого века, когда были созданы компьютеры, получившие известность под именем системы S/360, и до настоящего времени трудом многих талантливых инженеров компании IBM была создана особая архитектура, которая в силу своей естественной принадлежности к вычислительным системам получила название "мэйнфрейм" (от англ. "mainframe" - мощный универсальный компьютер), и принципы работы которой определяют архитектуру машины, описывая реализуемые в мэйнфрейме команды, которые были изобретены в компании IBM и которые с учетом их признанного за прошедшие годы значительного вклада в усовершенствование вычислительных машин, представленных мэйнфреймами, были включены в принципы работы систем компании IBM. Первое издание "Принципов работы z-архитектуры" вышло в свет в декабре 2000 г. в виде опубликованного стандартного справочного руководства SA22-7832-00.

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

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

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

на фиг.1 - команда "вычисление промежуточного дайджеста сообщения" (KIMD) в формате команд RRE,

на фиг.2 - команда "вычисление последнего дайджеста сообщения" (KLMD) в формате команд RRE,

на фиг.3 - таблица, в которой приведены коды функций для команды KIMD, показанной на фиг.1,

на фиг.4 - таблица, в которой приведены коды функций для команды KLMD, показанной на фиг.2,

на фиг.5 - присвоение командам KIMD и KLMD, показанным на фиг.1 и 2, значений в регистре общего назначения (GR),

на фиг.6 - символ при использовании блочного алгоритма генерации дайджеста SHA-1 (алгоритм безопасного хэширования),

на фиг.7 - формат блока параметров для KIMD-запроса,

на фиг.8 - формат блока параметров для KIMD-SHA-1,

на фиг.9 - операция KIMD-SHA-1,

на фиг.10 - формат блока параметров для KLMD-запроса,

на фиг.11 - формат блока параметров для KLMD-SHA-1,

на фиг.12 - операция KLMD-SHA-1 при полном блоке,

на фиг.13 - операция KLMD-SHA-1 при пустом блоке,

на фиг.14 - операция KLMD-SHA-1 при частично заполненном блоке в случае 1,

на фиг.15 - операция KLMD-SHA-1 при частично заполненном блоке в случае 2,

на фиг.16 - таблица, в которой показан приоритет выполнения команд KIMD и KLMD,

на фиг.17 - криптографический сопроцессор, и

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

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

Команда "вычисление промежуточного дайджеста сообщения" (KIMD)

На фиг.1 представлена команда "вычисление промежуточного дайджеста сообщения" (KIMD) в формате команд RRE.

Команда "вычисление последнего дайджеста сообщения" (KLMD)

На фиг.2 представлена команда "вычисление последнего дайджеста сообщения" (KLMD) в формате команд RRE.

Выполняется функция, указываемая кодом функции в регистре 0 общего назначения.

Разряды 16-23 команды и поле R1 игнорируются.

Разряды 57-63 регистра 0 общего назначения содержат код функции. На фиг.3 и 4 показаны коды функций, присвоенные командам "вычисление промежуточного дайджеста сообщения" и "вычисление последнего дайджеста сообщения", соответственно. Все другие коды функций свободны (не присвоены). Разряд 56 общего регистра должен быть нулевым, в противном случае определяется исключительная ситуация при нарушении заданных условий. Все остальные разряды регистра 0 общего назначения игнорируются. Регистр 1 общего назначения содержит логический адрес крайнего левого байта блока параметров, хранящегося в памяти. В режиме 24-разрядной адресации содержимым разрядов 40-63 регистра 1 общего назначения является адрес, а содержимое разрядов 0-39 игнорируется. В режиме 31-разрядной адресации содержимым разрядов 33-63 регистра 1 общего назначения является адрес, а содержимое разрядов 0-32 игнорируется. В режиме 64-разрядной адресации содержимым разрядов 0-63 регистра 1 общего назначения является адрес.

На фиг.3 показаны коды функций команды "вычисление промежуточного дайджеста сообщения".

На фиг.4 показаны коды функций команды "вычисление последнего дайджеста сообщения".

Все другие коды функций свободны (не присвоены).

Функция запроса является средством указания доступности других функций. Для функции запроса содержимое регистров R2 и R2+1 общего назначения игнорируется.

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

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

Местоположение крайнего левого байта второго операнда задается содержимым регистра R2 общего назначения. Число байтов в местоположении второго операнда задается в регистре R2+1 общего назначения.

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

В режиме 24-разрядной адресации содержимым разрядов 40-63 регистра R2 общего назначения является адрес второго операнда, а содержимое разрядов 0-39 игнорируется; разряды 40-63 обновленного адреса заменяют собой соответствующие разряды в регистре R2 общего назначения, переносы разряда 40 обновленного адреса игнорируются, а содержимое разрядов 32-39 регистра R2 общего назначения устанавливается на нуль. В режиме 31-разрядной адресации содержимым разрядов 33-63 регистра R_ общего назначения является адрес второго операнда, а содержимое разрядов 0-32 игнорируется; разряды 33-63 обновленного адреса заменяют собой соответствующие разряды в регистре R2 общего назначения, переносы разряда 33 обновленного адреса игнорируются, а содержимое разряда 32 регистра R2 общего назначения устанавливается на нуль. В режиме 64-разрядной адресации содержимым разрядов 0-63 регистра R2 общего назначения является адрес второго операнда; разряды 0-63 обновленных адресов заменяют собой содержимое регистра R_ общего назначения, а переносы разряда 0 игнорируются.

В режимах как 24-разрядной, так и 31-разрядной адресации содержимым разрядов 32-63 регистра R2+1 общего назначения является 32-разрядное целое двоичное число без знака, которое задает число байтов во втором операнде, а обновленное значение заменяет собой содержимое разрядов 32-63 регистра R2+1 общего назначения. В режиме 64-разрядной адресации содержимое разрядов 0-63 регистра R2+1 общего назначения образует 64-разрядное целое двоичное число без знака, которое задает число байтов во втором операнде, и обновленное значение заменяет собой содержимое регистра R2+1 общего назначения.

В режимах 24-разрядной и 31-разрядной адресации содержимое разрядов 0-31 регистров R2 и R2+1 общего назначения всегда остается неизменным.

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

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

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

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

Если операция закончилась ввиду нормального завершения, устанавливается код условия 0, а полученное значение в регистре R2+1 равно нулю. Если операция закончилась ввиду частичного завершения, устанавливается код условия 3, и полученное значение в регистре R2+1 не равно нулю.

Когда длина второго операнда изначально равна нулю, доступ ко второму операнду не осуществляется, регистры R2 и R2+1 общего назначения не меняются, и устанавливается код условия 0. Для команды "вычисление промежуточного дайджеста сообщения" доступ к блоку параметров не происходит. Вместе с тем, для команды "вычисление последнего дайджеста сообщения" осуществляют операцию дополнения пустого блока (L=0), а полученный результат сохраняют в блоке параметров.

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

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

Символы, используемые при описании функций

При дальнейшем описании функций "вычисление промежуточного дайджеста сообщения" и "вычисление последнего дайджеста сообщения" используются символы, приведенные на фиг.6. Более подробно алгоритм безопасного хэширования описан в публикации "Secure Hash Standard" федеральных стандартов США на обработку информации, выпуск 180-1, Национальный институт стандартов и техники (NIST), Вашингтон, 17 апреля 1995 г.

KIMD-запрос (код KIMD-функции 0)

Местоположения операндов и адреса, используемые данной командой, соответствуют показанным на фиг.5.

На фиг.7 показан формат блока параметров KIMD-запроса.

В блоке параметров хранится 128-разрядное слово состояния. Разряды 0-127 данного поля соответствуют кодам функций соответственно 0-127 команды "вычисление промежуточного дайджеста сообщения". Если разряд равен единице, соответствующая функция установлена; в противном случае функция не установлена.

По завершении выполнения функции KIMD-запроса устанавливается код условия 0; код условия 3 к данной функции неприменим.

KIMD-SHA-1 (код KIMD-функции 1)

Местоположения операндов и адреса, используемые данной командой, соответствуют показанным на фиг.5.

На фиг.8 показан формат блока параметров, используемого для функции KIMD-SHA-1.

Для 64-байтных блоков сообщения в операнде 2 генерируют 20-байтный промежуточный дайджест (профиль) сообщения (или хэш-код), используя блочный алгоритм SHA-1 генерации дайджестов с 20-байтным значением цепочки в блоке параметров. Сгенерированный промежуточный дайджест сообщения, который также называют выходным значением цепочки (OCV - от англ. "Output Chaining Value"), сохраняют в поле значения цепочки блока параметров. Операция KIMD-SHA-1 показана на фиг.9.

KLMD-запрос (код KLMD-функции 0)

Местоположения операндов и адреса, используемые данной командой, соответствуют показанным на фиг.5.

На фиг.10 показан формат блока параметров, используемого для функции KLMD-запроса.

В блоке параметров хранится 128-разрядное слово состояния. Разряды 0-127 данного поля соответствуют кодам функций 0-127, соответственно, команды "вычисление последнего дайджеста сообщения". При наличии единичного разряда устанавливается соответствующая функция; в противном случае функция не устанавливается.

По завершении выполнения функции KLMD-запроса применяется код условия 0; код условия 3 неприменим к данной функции.

KLMD-SHA-1 (код KLMD-функции 1)

Местоположения операндов и адреса, используемые данной командой, соответствуют показанным на фиг.5.

На фиг.11 показан формат блока параметров, используемого для функции KLMD-SHA-1.

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

Если длина сообщения в операнде 2 больше или равна 64 байт, для каждого 64-байтного блока сообщений генерируют промежуточный дайджест сообщения, используя блочный алгоритм SHA-1 генерации дайджестов с 20-байтным значением цепочки в блоке параметров, а сгенерированный промежуточный дайджест сообщения, который также называют выходным значением цепочки (OCV), сохраняют в поле значения цепочки блока параметров. Эту операцию, которая показана на фиг.12, повторно осуществляют до тех пор, пока остающееся сообщение не станет меньше 64 байтов. Если длина сообщения или остающегося сообщения составляет ноль байтов, выполняют операцию, показанную на фиг.13.

Если длина сообщения или остающегося сообщения составляет от одного байта до 55 байтов включительно, выполняют операцию, показанную на фиг.14; если длина составляет от 56 до 63 байтов включительно, выполняют операцию, показанную на фиг.15. Дайджест сообщения, который также называют выходным значением цепочки (OCV), сохраняют в поле значения цепочки блока параметров.

Дополнительные обозначения, используемые в функциях KLMD

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

L длина в байтах операнда 2 в памяти

Р<n> n-число байтов-заполнителей; крайний левый байт имеет шестнадцатиричное значение 80, все остальные байты имеет шестнадцатиричное значение 00

Z<56> 56 нулевых байтов-заполнителей

Mb1 8-байтное значение, задающее длину в битах всего сообщения

q<64> состоящий из 56 нулевых байтов блок-заполнитель, за которым следует 8-байтное значение Mb1.

Особые условия для KIMD и KLMD

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

1. Разряд 56 регистра 0 общего назначения не равен нулю.

2. Разряды 57-63 регистра 0 общего назначения указывают код неприсвоенной или неустановленной функции.

3. Поле R2 обозначает регистр с нечетным номером или регистр 0 общего назначения.

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

Получаемый код условия:

0 нормальное завершение

1 --

2 --

3 частичное завершение

Программные исключительные ситуации:

по доступу (выборка, операнд 2 и длина сообщения в битах; выборка и сохранение, значение цепочки);

при выполнении операции (если не установлена вспомогательная программа засекречивания сообщений);

при нарушении заданных условий.

Примечания по программированию:

1. Разряд 56 регистра 0 общего назначения зарезервирован для будущего расширения и должен быть установлен на нуль.

2. Если задан код условия 3, адрес и длину второго операнда в регистрах R2 и R2+1 общего назначения, соответственно, и значение цепочки в блоке параметров обычно обновляют таким образом, что программа может легко вернуться к команде и продолжить выполнение операции.

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

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

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

5. Перед обработкой первой части сообщения программа должна задать начальные значения для поля значений цепочки. Для алгоритма SHA-1 начальные значения цепочки перечислены ниже:

Н0=х'6745 2301'

H1=x'EFCD AB89'

Н2=х'98ВА DCFE'

Н3=х'1032 5476'

H4=x'C3D2 E1F0'

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

7. При обработке последней части сообщения программа должна вычислить длину исходного сообщения в битах, поместить это 64-битное значение в поле длины сообщения в битах блока параметров и использовать команду "вычисление последнего дайджеста сообщения".

8. Для команды "вычисление последнего дайджеста сообщения" не требуется, чтобы второй операнд был кратен размеру блока. В первую очередь происходит обработка полных блоков, и перед обработкой всех блоков может быть задан код условия 3. Далее, после обработки всех полных блоков осуществляют операцию дополнения, в том числе остающейся части второго операнда. Для этого может потребоваться один или несколько циклов итерации блочного алгоритма SHA-1 генерации дайджестов.

9. Команда "вычисление последнего дайджеста сообщения" обеспечивает дополнения сообщений в соответствии с требованиями алгоритма SHA-1 для получения сообщений, длина которых кратна восьми битам. Если алгоритм SHA-1 нужно применить к последовательности битов, не кратной восьми битам, программа должна осуществить дополнения до нужного размера и использовать команду "вычисление промежуточного дайджеста сообщения".

Криптографический сопроцессор

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

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

Криптографический блок управления служит криптографическим сопроцессором, который непосредственно связан с трактом данных, общим для всех внутренних исполнительных устройств центрального процессора на универсальном микропроцессоре, обеспечивающих доступные аппаратные средства (E0...En) или из их сочетания в предпочтительном варианте с операционными конвейерами). При появлении в регистре 3 команд криптографической команды блок 2 управления вызывает из доступных аппаратных средств соответствующий алгоритм. Данные операнда через входной регистр 4, действующий по принципу обслуживания в порядке поступления (FIFO-регистр), поступают по той же внутренней шине микропроцессора. По завершении операции в регистре 6 состояния ставится флаг, а результаты становятся доступными для чтения с выходного FIFO-регистра 5.

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

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

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

На фиг.18 концептуально показана реализация предпочтительного варианта осуществления изобретения на примере мэйнфрейма с описанным выше микропроцессором, который, как доказано экспериментальным путем в компании IBM, может эффективно использоваться в массовой реализации формата команд предложенной архитектуры для компьютеров с функциональностью длинного смещения, который используют программисты, в наши дни обычно программисты, работающие на языке "Си". Такие форматы команд, которые хранятся в запоминающем устройстве, может реализовать "родной" для них сервер IBM z-архитектуры или же, как возможный вариант, вычислительные машины на базе других архитектур. Их могут эмулировать существующие и будущие серверы IBM класса мэйнфрейм и другие машины IBM (например, серверы серии р и серверы серии х). Их могут выполнять использующие оперативную систему Linux разнообразные компьютеры на базе аппаратных средств IBM, Intel, AMD, Sun Microsystems и других компаний. Помимо выполнения таким аппаратным обеспечением с z-архитектурой, Linux также может применяться в машинах, использующих эмуляцию на базе Hercules, UMX, FXI или Platform Solutions, в которых режим выполнения в целом представляет собой режим эмуляции. В режиме эмуляции осуществляют дешифрацию конкретной эмулируемой команды и формируют стандартную подпрограмму для реализации отдельной команды в виде стандартной подпрограммы или драйвера на языке С или создают драйвер для определенного аппаратного обеспечения иным способом, доступным для специалистов в данной области техники, ознакомившихся с описанием предпочтительного варианта осуществления. Различные способы осуществления на целевом компьютере эмуляции формата команд, архитектура которых разработана для исполнения на другом компьютере, а также серийно выпускаемые средства программного обеспечения, используемые в этих целях, описаны в ряде патентов, раскрывающих программные и аппаратные средства эмуляции, включая, без ограничения, патенты US 5551013, US 6009261, US 5574873, US 6308255, US 6463532 и US 5790825.

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

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

На фиг.18 позицией 501 обозначена память (запоминающее устройство) компьютера, в котором хранятся команды и данные. В таком компьютере изначально хранятся описанные в настоящем изобретении команды с длинным смещением. Позицией 502 обозначен механизм выборки команд из памяти компьютера, который также может предусматривать помещение выбранных команд в местное буферное запоминающее устройство. Затем команды в исходном виде поступают в дешифратор 503 команд, который определяет тип выбранной команды. Позицией 504 обозначен механизм выполнения команд. Он может предусматривать загрузку данных в регистр из памяти 501, сохранение данных из регистра в памяти или выполнение какой-либо арифметической или логической операции. Тип такой выполняемой операции предварительно определен дешифратором команд. В данном случае выполняются описанные в настоящем изобретении команды с длинным смещением. Если команды с длинным смещением выполняются в "родной" вычислительной системе, процесс завершается, как это описано выше. Если же набор команд со структурой, содержащей команды с длинным смещением, эмулирует другой компьютер, описанный процесс будет реализован в хост-компьютере 505 программно. В этом случае упомянутые выше механизмы, как правило, будут реализованы в виде одной или нескольких стандартных системных подпрограмм в рамках эмулирующего программного обеспечения. В обоих случаях происходит вызов, дешифрация (декодирование) и выполнение команды.

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

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

В соответствии с компьютерной архитектурой, используемой в предпочтительном варианте изобретения, поле смещения состоит из двух частей, при этом наименьшая значимая часть состоит из 12 разрядов и обозначается DL, DL1 - для операнда 1 или DL2 - для операнда 2, а наибольшая значимая часть состоит из 8 разрядов и обозначается DH, DH1 - для операнда 1 или DH2 - для операнда 2.

Кроме того, в предпочтительной компьютерной архитектуре формат команды таков, что коду операции соответствуют разряды с 0 по 7 и с 40 по 47, целевому регистру, называемому R1, соответствуют разряды с 8 по 11, индексному регистру, называемому Х2, соответствуют разряды с 12 по 15, базовому регистру, называемому В2, соответствуют разряды с 16 по 19, первой части состоящего из двух частей смещения, которая называется DL2, соответствуют разряды с 20 по 31, а второй части, которая называется DH2, соответствуют разряды с 32 по 39.

Эта компьютерная архитектура имеет такой формат команды, что коду операции соответствуют разряды с 0 по 7 и с 40 по 47, целевому регистру, называемому R1, соответствуют разряды с 8 по 11, исходному регистру, называемому R3, соответствуют разряды с 12 по 15, базовому регистру, называемому В2, соответствуют разряды с 16 по 19, первой части состоящего из двух частей смещения, которая называется DL2, соответствуют разряды с 20 по 31, а второй части, которая называется DH2, соответствуют разряды с 32 по 39.

Кроме того, предложенные для архитектуры компьютера команды с длинным смещением имеют такой формат, что коду операции соответствуют разряды с 0 по 7 и с 40 по 47, целевому регистру, называемому R1, соответствуют разряды с 8 по 11, значению маски, называемому МЗ, соответствуют разряды с 12 по 15, базовому регистру, называемому В2, соответствуют разряды с 16 по 19, первой части состоящего из двух частей смещения, которая называется DL2, соответствуют разряды с 20 по 31, а второй части, которая называется DH2, соответствуют разряды с 32 по 39.

Как показано выше, предпочтительная архитектура компьютера с длинным смещением имеет такой формат команды, что коду операции соответствуют разряды с 0 по 7 и с 40 по 47, непосредственному значению, называемому 12, соответствуют разряды с 8 по 15, базовому регистру, называемому В2, соответствуют разряды с 16 по 19, первой части состоящего из двух частей смещения, которая называется DL1, соответствуют разряды с 20 по 31, а второй части, которая называется DH1, соответствуют разряды с 32 по 39.

Предложенная в изобретении архитектура компьютера с длинным смещением отличается эффективностью при работе с новыми создаваемыми командами, в которых применен только формат команды с новым 20-разрядным смещением без знака.

В особом варианте осуществления предложенной в изобретении архитектуры компьютера используются существующие команды, форматы которых имеют только 12-разрядное смещение без знака и которые в новых форматах определены как имеющие существующее 12-разрядное значение смещения без знака, если 8 старших разрядов в поле смещения DH являются нулевыми разрядами, или как имеющие 20-разрядное смещение со знаком, если 8 старших разрядов в поле смещения DH не являются нулевыми разрядами.

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

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

выбирают из памяти команду генерации дайджеста сообщения,

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

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

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

2. Способ по п.1, отличающийся тем, что выполнение операции вычисления дайджеста сообщения включает в себя следующие стадии:

х1) получают 20-байтное значение цепочки,

х2) получают 64-байтный блок операнда;

х3) используя 20-байтное значение цепочки, выполняют прямое хэширование 64-байтного блока операнда с получением нового 20-байтного значения цепочки,

х4) повторяют стадии х2-х3 в отношении следующих один за другим блоков операнда и

х5) полученное новое 20-байтное значение цепочки сохраняют.

3. Способ по п.2, отличающийся тем, что при хэшировании используют алгоритм SHA-1.

4. Способ по п.2, отличающийся тем, что в качестве значения цепочки сохраняют 20-байтное шестнадцатеричное значение '6745 2301', 'EFCD AB89', '98ВА DCFE', '1032 5476', 'C3D2 E1F0'.

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

6. Способ по п.5, отличающийся тем, что если команда генерации дайджеста сообщения является командой вычисления последнего дайджеста сообщения, то при наличии у операнда менее 64 байтов получают количество байт, меньшее 64, и дополняют его байтами со значением '00' для создания 64-байтного операнда.

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

получают адрес блока параметров в памяти,

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

из первого регистра общего назначения первоначально получают адрес операнда,

из второго регистра общего назначения первоначально получают длину операнда и

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

8. Способ по п.7, отличающийся тем, что первым заданным регистром общего назначения является регистр 0 общего назначения, а вторым заданным регистром общего назначения является регистр 1 общего назначения.

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

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

11. Способ по п.1, отличающийся тем, что команда генерации дайджеста сообщения имеет формат, присущий архитектуре команд процессора.

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

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

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



 

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

Изобретение относится к цифровым сигнальным процессорам с конфигурируемыми блоками умножения-накопления (БУН) и арифметико-логическими устройствами (АЛУ). .

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

Изобретение относится к области микропроцессоров и компьютерных систем. .

Изобретение относится к сетевым коммуникациям и, в частности, к встраиваемым в приложения средствам управления для осуществления обмена по сетям. .

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

Изобретение относится к области систем обработки данных, которые обеспечивают выполнение операций типа "один поток команд и множества потоков данных". .

Изобретение относится к системам обработки данных, имеющим регистровый банк и поддерживающим векторные операции. .

Изобретение относится к устройствам обработки данных. .

Изобретение относится к радиоэлектронике. .

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

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

Изобретение относится к процессорам с конвейерной архитектурой

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

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

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

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

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