Команда для загрузки данных до заданной границы памяти, указанной командой

Иллюстрации

Показать все

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

Реферат

Предпосылки создания изобретения

[001] Аспект данного изобретения относится, в общем, к обработке данных, и в частности к загрузке данных в регистры.

[002] Обработка данных включает в себя различные типы обработки, в том числе загрузку данных в регистры. Загрузка данных в регистр включает, но не ограничивается, загрузкой символьных данных, таких как строки символьных данных; целочисленных данных, или любых других типов данных. После этого, загруженные данные становятся пригодными для их использования и/или манипулирования ими.

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

РАСКРЫТИЕ ИЗОБРЕТЕНИЯ

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

[005] Также предложены соответствующие способ и компьютерная система.

[006] С помощью методик согласно данному изобретению реализуются и другие особенности и преимущества. Другие варианты воплощения и аспекты изобретения излагаются здесь подробно и считаются частью формулы изобретения.

КРАТКОЕ ОПИСАНИЕ И НЕСКОЛЬКО ПРЕДСТАВЛЕНИЙ ЧЕРТЕЖЕЙ

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

На ФИГ. 1 изображен один из примеров вычислительной среды, включающей и использующей один или более аспектов данного изобретения;

На ФИГ.2А изображен другой пример вычислительной среды, включающей и использующей один или более аспектов данного изобретения;

На ФИГ.2Б изображены дополнительные подробности памяти ФИГ.2а в соответствии с аспектом настоящего изобретения;

На ФИГ.3 изображен один из вариантов воплощения формата команды Vector Load To Block Boundary (загрузить вектор до границы блока) в соответствии с аспектом настоящего изобретения;

На ФИГ.4 изображен один из вариантов воплощения логики, связанной с командой Vector Load to Block Boundary в соответствии с аспектом данного изобретения;

На ФИГ.5 изображен один из примеров данных для загрузки в векторный регистр в соответствии с аспектом данного изобретения;

На ФИГ.6 изображен пример файла регистра в соответствии с аспектом данного изобретения;

На ФИГ.7 изображен один из вариантов воплощения компьютерного программного продукта, включающего один или более аспектов данного изобретения;

На ФИГ.8 изображен один из вариантов воплощения главной компьютерной системы, включающей и использующей один или более аспектов данного изобретения;

На ФИГ.9 изображен другой пример компьютерной системы, включающей и использующей один или более аспектов данного изобретения;

На ФИГ.10 изображен еще один пример компьютерной системы, содержащей компьютерную сеть, включающую и использующую один или более аспектов данного изобретения;

На ФИГ.11 изображен один из вариантов воплощения различных элементов компьютерной системы, включающей и использующей один или более аспектов данного изобретения;

На ФИГ.12А изображен один из вариантов воплощения исполнительного устройства компьютерной системы согласно ФИГ.11, включающего и использующего один или более аспектов данного изобретения;

На ФИГ.12Б изображен один из вариантов воплощения устройства ветвления компьютерной системы согласно ФИГ.11, включающего и использующего один или более аспектов данного изобретения;

На ФИГ.12В изображен один из вариантов воплощения устройства загрузки/сохранения компьютерной системы согласно ФИГ.11, включающего и использующего один или более аспектов данного изобретения; и

На ФИГ.13 изображен один из вариантов воплощения эмулируемой хост-компьютерной системы, включающей и использующей один или более аспектов данного изобретения.

ПОДРОБНОЕ ОПИСАНИЕ

[008] В соответствии с аспектом данного изобретения предоставляется возможность для облегчения загрузки данных в регистр. К примеру, данные включают символьные данные, целые данные и/или другие типы данных. Кроме того, регистр является векторным регистром или другим типом регистра.

[009] Символьные данные включают, но не ограничиваются: алфавитные символы на любом языке; числовые цифры; знаки препинания; и/или другие символы. Символьные данные могут быть или не быть строками данных. С символьными данными связаны стандарты, примеры которых включают, но не ограничиваются: ASCII (American Standard Code for Information Interchange, американский стандартный код для информационного обмена); Unicode, включая, но не ограничиваясь, UTF (Unicode Transformation Format, формат трансформации Юникода) 8; UTF16 и т.п.

[0010] Векторный регистр (также называемый вектором) включает один или более элементов, а каждый элемент имеет длину, например, один, два или четыре байта. Далее, векторный операнд является, к примеру, операндом типа SIMD (Single Instruction, Multiple Data - одна команда, много данных), имеющим множество элементов. В других вариантах реализации элементы могут иметь другие размеры; а векторный операнд не обязательно типа SIMD, и/или может включать один элемент.

[0011] В одном примере предоставляется команда Vector Load to Block Boundary, которая загружает переменное количество байт данных из памяти в векторный регистр, в то же время гарантируя, что заданная граница памяти, из которой данные загружаются, не пересекается. Граница может быть задана командой явно (напр., значение переменной в тексте команды, фиксированное значение в тексте команды, вкодированное в код операции, граница на основе регистра, заданная в команде, и т.д.); или граница может динамически определяться машиной. Например, команда определяет, что данные следует загрузить на границе страницы или кэша, и машина определяет размер строки кэша или страницы (напр., поиском в, к примеру, буфере динамической трансляции адресов для определения размера страницы), и загружает до этого места.

[0012] В последующем примере эта команда используется также для выравнивания обращений к данным по выбранной границе.

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

[0014] В последующем варианте реализации загружаются другие типы регистров. То есть, регистр, который загружается, является не векторным регистром, а регистром другого типа. В данном контексте командой называется команда Load to Block Boundary (загрузить до границы блока), которая используется для загрузки данных в регистр.

[0015] Один из вариантов осуществления вычислительной среды, включающей и использующей один или более аспектов данного изобретения, описаны при помощи ФИГ.1. Вычислительная среда 100 включает, например, процессор 102 (например, центральное процессорное устройство), память 104 (например, главная память) и одно или более устройств ввода-вывода (I/O) и/или интерфейсов 106, соединенных между собой посредством, например, одной или более шин 108 и/или других соединений.

[0016] В одном примере, процессор 102 основан на z/Architecture, предложенной корпорацией International Business Machines, и является частью сервера, такого как сервер System z, который также предложен корпорацией International Business Machines и реализовывает z/Architecture. Один из вариантов воплощения z/Architecture описан в публикации IBM®, озаглавленной "z/Architecture Principles of Operation" ("z/Architecture. Принципы работы"), публикация IBM® номер SA22-7832-08, девятое издание, август 2010 г., которая включается сюда по ссылке во всей ее целостности. В одном примере, процессор реализовывает операционную систему, такую как z/OS, также предложенную корпорацией International Business Machines. IBM®, Z/ARCHITECTURE® и Z/OS® являются зарегистрированными торговыми марками корпорации International Business Machines, Армонк, Нью Йорк, США. Другие названия, используемые в данном описании, могут быть зарегистрированными торговыми марками, торговыми марками, или названиями продуктов корпорации International Business Machines или других компаний.

[0017] В дополнительном варианте воплощения, процессор 102 основан на Power Architecture, предложенной корпорацией International Business Machines. Один вариант воплощения Power Architecture описан в "Power ISA™ Version 2.06 Revision В," корпорации International Business Machines, 23 июля 2010 г., который включается сюда по ссылке во всей его целостности. POWER ARCHITECTURE® является зарегистрированной торговой маркой корпорации International Business Machines.

[0018] В еще одном дополнительном варианте воплощения процессор 102 основан на архитектуре Intel, предложенной корпорацией Intel. Один вариант воплощения Intel архитектуры описан в "Intel® 64 and IA-32 Architectures Developer's Manual: Vol.2B, Instructions Set Reference, A-L" ("Архитектуры Intel® 64 и IA-32. Руководство разработчика: т.2B, справочник по набору команд, A-L"), порядковый номер 253666-041 US, декабрь 2011 г., и "Intel® 64 and IA-32 Architectures Developer's Manual: Vol.2B, Instructions Set Reference, M-Z" ("Архитектуры Intel® 64 и IA-32. Руководство разработчика: т.2B, справочник по набору команд, M-Z"), порядковый номер 253667-041 US, декабрь 2011 г., каждое из которых включается сюда по ссылке во всей его целостности. Intel® является зарегистрированной торговой маркой корпорации Intel, Санта-Клара, Калифорния.

[0019] Другой вариант воплощения вычислительной среды, включающей и использующей один или более аспектов данного изобретения, описан при помощи ФИГ.2А. В данном примере, вычислительная среда 200 включает, например, собственное центральное процессорное устройство 202, память 204, и одно или более устройств ввода-вывода и/или интерфейсов 206, соединенных между собой посредством, например, одной или более шин 208 и/или других соединений. Например, вычислительная среда 200 может включать процессор PowerPC, сервер pSeries или сервер xSeries, предложенные корпорацией International Business Machines, Армонк, Нью Йорк; HP Superdome с процессорами Intel Itanium II, предложенными Hewlett Packard Co., Пало-Альто, Калифорния; и/или другие машины, основанные на архитектуре, предложенной корпорацией International Business Machines, Hewlett Packard, Intel, Oracle, или другими.

[0020] Собственное центральное процессорное устройство 202 содержит один или более собственных регистров 210, такие как один или более регистров общего назначения и/или один или более регистров специального назначения, использующихся при обработке внутри среды. Эти регистры содержат сведения, которые представляют состояние среды в любой отдельный момент времени.

[0021] Кроме того, собственное центральное процессорное устройство 202 выполняет команды и код, хранящиеся в памяти 204. В отдельном примере центральное процессорное устройство выполняет код эмулятора 212, хранящийся в памяти 204. Этот код задействует вычислительную среду, настроенную на одной архитектуре для эмуляции другой архитектуры. Например, код эмулятора 212 позволяет машинам, основанным на архитектурах, отличных от z/Architecture, таких так процессоры PowerPC, серверы pSeries, серверы xSeries, серверы HP Superdome или другие, эмулировать z/Architecture и выполнять программное обеспечение и команды, разработанные на основе z/Architecture.

[0022] Дальнейшие подробности касательно кода эмулятора 212 описаны при помощи ФИГ.2Б. Гостевые команды 250 включают программные команды (напр., машинные команды), которые были разработаны для выполнения в архитектуре иной, нежели таковая собственного ЦПУ 202. Например, гостевые команды 250 могли быть разработаны для выполнения на процессоре 102 z/Architecture, но вместо этого эмулируются на собственном ЦПУ 202, которое может быть, например, процессором Intel Itanium II. В одном из примеров код эмулятора 212 включает модуль считывания команд 252 для получения одной или более гостевых команд 250 из памяти 204 и опционального обеспечения локальной буферизации полученных команд. Он включает также программу трансляции команд 254 для определения типа гостевой команды, которая была получена, и для трансляции гостевой команды в одну или более соответствующих собственных команд 256. Эта трансляция включает, например, идентификацию функции для выполнения гостевой командой и выбор собственной команды (команд), выполняющих эту функцию.

[0023] Далее, эмулятор 212 включает программу управления эмуляцией 260, заставляющую собственные команды выполняться. Программа управления эмуляцией 260 может заставить собственное ЦПУ 202 выполнить программу собственных команд, которые эмулируют одну или более ранее полученных гостевых команд, и, по завершению этого выполнения, вернуть управление программе считывания команд для эмуляции получения следующей гостевой команды или группы гостевых команд. Выполнение собственных команд 256 может включать загрузку данных в регистр из памяти 204; запись данных обратно в память из регистра; или выполнение некоторого типа арифметической или логической операции, как определено программой трансляции.

[0024] Каждая программа, например, реализована в программном обеспечении, которое хранится в памяти и выполняется собственным центральным процессорным устройством 202. В других примерах одна или более программ или операций могут быть реализованы в микропрограммном, аппаратном, программном обеспечении или в некоторой их комбинации. Регистры эмулируемого процессора могут эмулироваться с помощью регистров 210 собственного ЦПУ или с помощью ячеек в памяти 204. В вариантах реализации гостевые команды 250, собственные команды 256 и код эмулятора 212 могут находиться в одной памяти или могут быть рассредоточены по различным запоминающим устройствам.

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

[0026] В одном примере гостевая команда 250, которая считывается, транслируется и выполняется, является командой, описываемой здесь. Команда одной архитектуры (напр., для z/Architecture) считывается из памяти, транслируется и представляется в виде последовательности собственных команд 256 другой архитектуры (напр., PowerPC, pSeries, xSeries, Intel и т.п.). Затем эти собственные команды выполняются.

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

[0028] Как описано здесь, векторные команды могут быть реализованы как часть различных архитектур, включая, но не ограничиваясь, z/Architecture, Power, Intel и т.д. Хотя здесь описывается реализация для z/Architecture, векторные команды и один или более аспектов данного изобретения могут основываться на многих других архитектурах. z/Architecture является только одним из примеров.

[0029] В одном варианте, в котором векторное средство реализовано как часть z/Architecture, для использования векторных регистров и команд, директива задействования вектора и директива регистра в заданном управляющем регистре (напр., управляющем регистре 0) установлены, например, в единицу. Если векторное средство установлено, и векторная команда выполняется без установленных директив задействования, обнаруживается исключение данных. Если векторное средство не установлено, и выполняется векторная команда, обнаруживается исключение операции.

[0030] Векторные данные появляются в памяти, например, в той же последовательности слева направо, что и данные других форматов. Биты формата данных, пронумерованные 0-7, составляют байт в самой левой (с наименьшим номером) байтовой ячейке памяти, биты 8-15 образуют байт в следующей последовательной ячейке и так далее. В другом примере векторные данные могут появляться в памяти в другой последовательности, такой как справа налево.

[0031] Многие из векторных команд, обеспеченных векторным средством, имеют поле заданных битов. Это поле называемое битом расширения регистра (register extension bit) или RXB, содержит самые старшие биты для каждого из заданных векторным регистров операндов. Биты для обозначений регистров, не заданных командой, должны быть зарезервированы и установлены в нуль.

[0032] В одном из примеров поле RXB включает четыре бита (например, биты 0-3), и биты определены следующим образом:

[0033] 0 - самый старший бит для обозначения первого векторного регистра в команде.

[0034] 1 - самый старший бит для обозначения второго векторного регистра в команде, если таковой имеется.

[0035] 2 - самый старший бит для обозначения третьего векторного регистра в команде, если таковой имеется.

[0036] 3 - самый старший бит для обозначения четвертого векторного регистра в команде, если таковой имеется.

[0037] Каждый бит устанавливается в нуль или единицу, например, ассемблером в зависимости от количества регистров. Например, для регистров 0-15 бит устанавливается в 0; для регистров 16-31 бит устанавливается в 1 и т.п.

[0038] В одном из вариантов реализации каждый бит RXB является битом расширения для отдельной ячейки в команде, которая включает один или более векторных регистров. Например, в одной или более векторных команд бит 0 поля RXB является битом расширения для ячейки 8-11, которая закреплена за, напр., V1; бит 1 поля RXB является битом расширения для ячейки 12-15, которая закреплена за, напр., V2; и так далее.

[0039] В другом варианте реализации поле RXB содержит дополнительные биты, и в качестве расширения для каждого вектора или ячейки используется более чем один бит.

[0040] Одна команда, обеспеченная в соответствии с аспектом настоящего изобретения, которая включает поле RXB, представляет собой команду Vector Load To Block Boundary, пример которой показан на ФИГ.3. В одном примере, команда Vector Load То Block Boundary 300 содержит поля кода операции 302а (например, биты 0-7), 302b (например, биты 40-47), обозначающие операцию Vector Load To Block Boundary; поле векторного регистра 304 (например, биты 8-11), использующееся для задания векторного регистра (V1); индексное поле (X2) 306 (например, биты 12-15); базовое поле (B2) 308 (например, биты 16-19); поле смещения (D2) 310 (например, биты 20-31); поле маски (M3) 312 (например, биты 32-35); и поле RXB 316 (например, биты 36-39). Каждое из полей 304-314 в одном примере отделено и независимо от поля (полей) кода операции. Далее, в одном варианте реализации они отделены и независимы друг от друга; однако в других вариантах более чем одно поле могут комбинироваться. Дальнейшие сведения об использовании этих полей описываются ниже.

[0041] В одном из примеров выбранные биты (напр., первые два бита) кода операции, заданные полем кода операции 302а определяют длину и формат команды. В этом частном примере длина равна трем полусловам, а формат является векторной регистрово-индексной операцией сохранения с расширенным полем кода операции. Векторное (V) поле, вместе с соответствующим ему битом расширения, заданным RXB, определяет векторный регистр. В частности, для векторных регистров, регистр, содержащий операнд, определяется при помощи, например, четырехбитного поля регистрового поля с прибавлением бита расширения регистра (RXB) в качестве самого старшего бита. Например, если четырехбитное поле равно 0110, а бит расширения равен 0, то пятибитное поле 00110 обозначает регистр номер 6.

[0042] Нижний индекс, связанный с полем команды, обозначает операнд, к которому применяется поле. Например, нижний индекс 1, связанный с V1, обозначает первый операнд и так далее. Регистровый операнд равен одному регистру по длине, которая составляет, например, 128 бит.

[0043] В одном примере, в команде операции векторного регистроиндексного сохранения, содержимое регистров общего назначения, определенное полями X1 и B2, прибавляется к содержимому поля D2 для получения адреса второго операнда. Смещение D2 для команды Vector Load To Block Boundary рассматривается как 12-битное целое без знака, в одном примере.

[0044] Поле M3 в одном из вариантов осуществления определяет код, который используется для сообщения ЦПУ о границе блока, до которой следует загрузиться. Если определено зарезервированное значение, обнаруживается исключение определения. Примерные коды и соответствующие значения следующие:

[0045]

Код Граница
0 64 байта
1 128 байт
2 256 байт
3 512 байта
4 1 кбайт
5 2 кбайта
6 4 кбайта

[0046] При выполнении одной из реализации команды Vector Load To Block Boundary (VLBB), происходящем в одном из вариантов слева направо, первый операнд (заданный в регистре, определенном полем V1 плюс бит расширения) загружается, начиная с элемента байта с нулевым индексом, байтами из второго операнда. Второй операнд является ячейкой памяти, определенной адресом второго операнда (также называемым начальным адресом). Загрузка начинается с этой ячейки памяти и продолжается до конечного адреса, вычисленного командой (или процессором) как описано ниже. Если встречается граничное условие, обработка остатка первого операнда зависит от модели. Исключения доступа не обнаруживаются на байтах, которые не загружены. В одном из примеров байты, которые не загружены, непредсказуемы.

[0047] В выше приведенном примере команды, начальный адрес определяется значением индексного регистра (X2) + значение базового регистра (B2) + смещение (D2); однако в других реализациях он предоставляется значением регистра; адресом команды + отступ, заданный в тексте команды; значением регистра + смещение; или значением регистра + значение индексного регистра; это лишь некоторые примеры. Далее, в одном варианте команда не содержит поля RXB. Вместо этого, расширение не используется, или расширение предоставляется другим способом, таким как директива извне команды, или предоставляется как часть другого поля команды.

[0048] Дальнейшие подробности воплощения обработки команды Vector Load to Block Boundary описаны при помощи ФИГ.4. В одном примере процессор вычислительной среды следует данной логике.

[0049] В одном из вариантов воплощения вначале создается маска границы (BdyMask), которая используется для определения близости к заданной границе, ШАГ 400. Чтобы создать маску, в одном примере берется двоичное дополнительное отрицание от размера границы (BdySize) 402, создающее маску границы 404 (напр., BdyMask=0-BdySize). Размер границы предоставляется, в одном примере, командой (напр., полем М3); а в другом примере он определяется машиной согласно данной заявке.

[0050] После этого вычисляется начальный адрес, который обозначает ячейку в памяти, из которой должна начинаться загрузка, ШАГ 410. К примеру, начальный адрес 412 может быть предоставлен значением регистра; адресом команды плюс отступ, заданный в тексте команды; значением регистра плюс смещение; значением регистра плюс значение индексного регистра; или значением регистра плюс значение индексного регистра плюс смещение. В предоставленной здесь команде начальный адрес предоставляется полем Х2, полем В2 и полем D2. То есть, содержимое регистров, заданных полями Х2 и В2, прибавляется к смещению, указанному D2 для получения начального адреса. Вышеуказанные способы вычисления начального адреса являются лишь примерами; другие примеры также возможны.

[0051] Далее, вычисляется конечный адрес, указывающий, откуда остановить загрузку, ШАГ 420. Вводными для этого вычисления являются, например, размер границы 402, начальный адрес 412, размер вектора 414 (напр., в байтах; напр., 16) и маска границы 404. В одном из примеров конечный адрес 422 вычисляется следующим образом:

[0052] EndAddress = min(StartAddress + (BdySize - (StartAddress & ¬BdyMask)), StartAddress + vec_size).

[0053] Затем первый операнд (т.е., заданный векторный регистр) загружается, начиная с байта с индексом 0, из памяти, начинаясь с начального адреса и заканчиваясь на конечном адресе, ШАГ 430. Это дает возможность загрузить переменное число байт из памяти в вектор без пересечения заданной границы памяти. Например, если граница памяти на 64 байтах, а начальный адрес на 58 байтах, то байты 58-64 загружаются в векторный регистр.

[0054] Один из примеров данных для загрузки в векторный регистр, в соответствии с аспектом данного изобретения, изображен на ФИГ. 5. Как отмечено, никакие данные не загружаются после границы, обозначенной пунктирной вертикальной линией. Ячейки после границы недоступны, и не делается никаких исключений. В одном частном варианте вектор загружается слева направо. Однако, в другом варианте он может загружаться справа налево. В одном варианте направление векторов, слева направо или справа налево, определяется динамически (при выполнении программы). Например, команда обращается к регистру, директиве состояния или другому параметру, который указывает направление обработки слева направо либо справа налево, к примеру. В одном из вариантов эта директива направления не вкодирована как часть команды, а предоставляется команде динамически (при выполнении).

[0055] Ниже описан один из примеров команды загрузки. При загрузке данных, таких как строчные данные, часто неизвестно, закончится ли строка перед границей страницы. Способность загрузиться до этой границы обычно требует первой проверки на конец строки. Некоторые реализации могут также иметь ограничения на пересечение границ, и программное обеспечение может пытаться избегать этого. Таким образом, способность загружаться до нескольких границ полезна. Предоставляется команда, которая загружает переменное количество байт в векторный регистр, в то же время, гарантируя, что данные из-за заданной границы не загружаются.

[0056] В одном из вариантов воплощения есть 32 векторных регистра, а другие типы регистров могут быть отображены на квадрант векторных регистров. К примеру, как изображено на ФИГ. 6, если есть файл регистра 600, который содержит 32 векторных регистра 602, и каждый регистр имеет 128 бит в длину, то 16 регистров с плавающей точкой 604, которые имеют 64 бит в длину, могут быть наложены на векторные регистры. Таким образом, к примеру, когда регистр с плавающей точкой 2 изменяется, то векторный регистр 2 также изменяется. Другие отображения для других типов регистров также возможны.

[0057] В данном контексте, термины "память", "главная память", "запоминающее устройство" и "главное запоминающее устройство" используются как взаимозаменяемые, если не указано иное, явным образом или неявно по контексту.

[0058] Дополнительные детали, касающиеся векторного средства, включая примеры команд, представлены ниже как часть этого Подробного описания.

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

[0060] Может использоваться любое сочетание одной или нескольких машиночитаемых сред. Машиночитаемой средой может являться машиночитаемая запоминающая среда (носитель данных). Машиночитаемой запоминающей средой может являться, например, без ограничения электронная, магнитная, оптическая, электромагнитная, инфракрасная или полупроводниковая система, аппаратура или устройство или любое применимое сочетание перечисленного. Более конкретные примеры (не исчерпывающий список) машиночитаемой запоминающей среды включают: электрическое соединение, содержащее один или несколько проводов, портативный компьютерный диск, жесткий диск, оперативное запоминающее устройство (ОЗУ), постоянное запоминающее устройство (ПЗУ), стираемое программируемое постоянное запоминающее устройство (СППЗУ или флэш-память), оптическое волокно, портативное постоянное запоминающее устройство на компакт-диске (CD-ROM), оптическое запоминающее устройство, магнитное запоминающее устройство или любое применимое сочетание перечисленного. В контексте настоящего документа машиночитаемой запоминающей средой может являться любая материальная среда, в которой содержится или хранится программа для использования системой, аппаратурой или устройством выполнения команд или применительно к ним.

[0061] Как показано на ФИГ.7, в одном из примеров компьютерный программный продукт 700 содержит, например, одну или несколько не временных машиночитаемых запоминающих сред 702 для хранения в них машиночитаемого программного кода или логики 704 для обеспечения и реализации одного или нескольких аспектов настоящего изобретения.

[0062] Программный код, воплощенный в машиночитаемой среде, может передаваться с использованием соответствующей среды, включая без ограничения беспроводную, проводную среду, оптоволоконный кабель, ВЧ-среду и т.д. или любое применимое сочетание перечисленного.

[0063] Компьютерный программный код для выполнения операций, для одного или более аспектов настоящего изобретения, может быть записан на одном или нескольких языках программирования в любом сочетании, включая объектно-ориентированный язык программирования, такой как Java, Smalltalk, C++ и т.п., и традиционных процедурных языках программирования, таких как "C" и языки ассемблера или аналогичные языки программирования. Программный код может целиком выполняться в пользовательском компьютере, частично в пользовательском компьютере, в качестве автономного пакета программного обеспечения, частично в пользовательском компьютере и частично в удаленном компьютере или целиком в удаленном компьютере или сервере. В случае последнего сценария удаленный компьютер может быть соединен с пользовательским компьютером посредством сети любого типа, включая локальную вычислительную сеть (ЛВС) или глобальную вычислительную сеть (ГВС), или может быть установлено соединение с внешним компьютером (например, по сети Интернет с использованием поставщика услуг Интернет).

[0064] Один или более аспектов настоящего изобретения описаны со ссылкой на структурные схемы и/или блок-схемы способов, оборудования (систем) и компьютерных программных продуктов в соответствии с воплощениями настоящего изобретения. Подразумевается, что каждый блок на структурных схемах и/или блок-схемах и сочетания блоков на структурных схемах и/или блок-схемах могут быть реализованы посредством команд управления компьютерной программой. Эти команды управления компьютерной программой могут передаваться процессору универсального компьютера, специализированного компьютера или другой программируемого аппаратуры для обработки данных с целью формирования механизма, в котором команды, выполняемые посредством процессора компьютера или другого программируемого оборудования обработки данных, создают средство реализации функций/действий, обозначенных блоком или блоками на структурных схемах и/или блок-схемах.

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

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

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

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